From 621f695872e079a160bb4bc63d4ecd3a0663fd1a Mon Sep 17 00:00:00 2001 From: ashubawork Date: Tue, 21 Nov 2023 18:28:11 +0200 Subject: [PATCH] - fix date/time picker nad select2 js --- assets/js/admin/block-renderer.js | 2 +- assets/js/um-members.js | 380 +++++++++--------- .../build/index.asset.php | 2 +- .../um-member-directories/build/index.js | 2 +- .../blocks/um-member-directories/src/index.js | 2 + 5 files changed, 198 insertions(+), 190 deletions(-) diff --git a/assets/js/admin/block-renderer.js b/assets/js/admin/block-renderer.js index 2b258d3b..ca000b4b 100644 --- a/assets/js/admin/block-renderer.js +++ b/assets/js/admin/block-renderer.js @@ -2,7 +2,7 @@ jQuery(window).on( 'load', function($) { var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { jQuery(mutation.addedNodes).find('.um.um-directory').each(function() { - jQuery('.um-directory input, .um-directory select, .um-directory button').attr('disabled', 'disabled'); + // jQuery('.um-directory input, .um-directory select, .um-directory button').attr('disabled', 'disabled'); jQuery('.um-directory a').attr('href', ''); if ( typeof( jQuery.fn.select2 ) === 'function' ) { diff --git a/assets/js/um-members.js b/assets/js/um-members.js index be30f65d..41d719c8 100644 --- a/assets/js/um-members.js +++ b/assets/js/um-members.js @@ -694,6 +694,197 @@ function um_slider_filter_init( directory ) { }); } +function um_datepicker_filter_init( directory ) { + directory.find('.um-datepicker-filter').each( function() { + var elem = jQuery(this); + + var min = new Date( elem.data('date_min')*1000 ); + var max = new Date( elem.data('date_max')*1000 ); + + var $input = elem.pickadate({ + selectYears: true, + min: min, + max: max, + formatSubmit: 'yyyy/mm/dd', + hiddenName: true, + onOpen: function() { + elem.blur(); + }, + onClose: function() { + elem.blur(); + }, + onSet: function( context ) { + + if ( ! context.select ) { + return; + } + + var directory = elem.parents('.um-directory'); + + if ( um_is_directory_busy( directory ) ) { + return; + } + + um_members_show_preloader( directory ); + + var filter_name = elem.data( 'filter_name' ); + var range = elem.data( 'range' ); + + var current_value_from = um_get_data_for_directory( directory, 'filter_' + filter_name + '_from' ); + var current_value_to = um_get_data_for_directory( directory, 'filter_' + filter_name + '_to' ); + if ( typeof current_value_from === "undefined" ) { + current_value_from = min / 1000; + } + if ( typeof current_value_to === "undefined" ) { + current_value_to = max / 1000; + } + + var select_val = context.select / 1000; + var change_val = elem.val(); + + if ( range === 'from' ) { + current_value_from = select_val; + } else if ( range === 'to' ) { + current_value_to = select_val; + } + + um_set_url_from_data( directory, 'filter_' + filter_name + '_from', current_value_from ); + um_set_url_from_data( directory, 'filter_' + filter_name + '_to', current_value_to ); + + //set 1st page after filtration + directory.data( 'page', 1 ); + um_set_url_from_data( directory, 'page', '' ); + + um_ajax_get_members( directory ); + + um_change_tag( directory ); + + directory.data( 'searched', 1 ); + directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', false ); + directory.find( '.um-member-directory-view-type' ).removeClass( 'um-disabled' ); + } + }); + + var $picker = $input.pickadate('picker'); + var $fname = elem.data('filter_name'); + var $frange = elem.data('range'); + var $directory = elem.parents('.um-directory'); + + var query_value = um_get_data_for_directory( $directory, 'filter_' + $fname + '_' + $frange ); + if ( typeof query_value !== 'undefined' ) { + $picker.set( 'select', query_value*1000 ); + } + + }); +} + +function um_timepicker_filter_init( directory ) { + directory.find('.um-timepicker-filter').each( function() { + var elem = jQuery(this); + var elemID = elem.attr('id'); + var elem_filter_name = elem.data('filter_name'); + + //using arrays formatted as [HOUR,MINUTE] + var min = elem.attr('data-min'); + var max = elem.attr('data-max'); + + var picker_min = min.split(':'); + var picker_max = max.split(':'); + + var $input = elem.pickatime({ + format: elem.data('format'), + interval: parseInt( elem.data('intervals') ), + min: [picker_min[0],picker_min[1]], + max: [picker_max[0],picker_max[1]], + formatSubmit: 'HH:i', + hiddenName: true, + onOpen: function() { elem.blur(); }, + onClose: function() { elem.blur(); }, + onSet: function( context ) { + + if ( ! context.select ) { + return; + } + + var directory = elem.parents('.um-directory'); + + if ( um_is_directory_busy( directory ) ) { + return; + } + + um_members_show_preloader( directory ); + + var filter_name = elem.data( 'filter_name' ); + var range = elem.data( 'range' ); + + var current_value_from = um_get_data_for_directory( directory, 'filter_' + filter_name + '_from' ); + var current_value_to = um_get_data_for_directory( directory, 'filter_' + filter_name + '_to' ); + if ( typeof current_value_from === "undefined" ) { + current_value_from = min; + } + if ( typeof current_value_to === "undefined" ) { + current_value_to = max; + } + + if ( typeof context.select !== 'undefined' ) { + var select_val = um_time_convert( context.select, range ); + + //var select_val = context.select / 60; + + if ( range === 'from' ) { + current_value_from = select_val; + } else if ( range === 'to' ) { + current_value_to = select_val; + } + } else { + if ( range === 'from' ) { + current_value_from = min; + } else if ( range === 'to' ) { + current_value_to = max; + } + } + + var time = jQuery( '#' + elemID ).val(); + + if ( elem.data('range') === 'from' ) { + jQuery( '#' + elem_filter_name + '_to' ).pickatime('picker').set('min', time); + } else { + jQuery( '#' + elem_filter_name + '_from').pickatime('picker').set('max', time); + } + + um_set_url_from_data( directory, 'filter_' + filter_name + '_from', current_value_from ); + um_set_url_from_data( directory, 'filter_' + filter_name + '_to', current_value_to ); + + //set 1st page after filtration + directory.data( 'page', 1 ); + um_set_url_from_data( directory, 'page', '' ); + + um_ajax_get_members( directory ); + + um_change_tag( directory ); + + directory.data( 'searched', 1 ); + directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', false ); + directory.find( '.um-member-directory-view-type' ).removeClass( 'um-disabled' ); + + } + }); + + // first loading timepicker select + var $picker = $input.pickatime('picker'); + var $fname = elem.data('filter_name'); + var $frange = elem.data('range'); + var $directory = elem.parents('.um-directory'); + + var query_value = um_get_data_for_directory( $directory, 'filter_' + $fname + '_' + $frange ); + if ( typeof query_value !== 'undefined' ) { + var arr = query_value.split(':'); + $picker.set( 'select', arr[0]*60 + arr[1]*1 ); + } + + }); +} + jQuery(document.body).ready( function() { @@ -1438,196 +1629,11 @@ jQuery(document.body).ready( function() { //slider filter um_slider_filter_init( directory ); - //datepicker filter - directory.find('.um-datepicker-filter').each( function() { - var elem = jQuery(this); - - var min = new Date( elem.data('date_min')*1000 ); - var max = new Date( elem.data('date_max')*1000 ); - - var $input = elem.pickadate({ - selectYears: true, - min: min, - max: max, - formatSubmit: 'yyyy/mm/dd', - hiddenName: true, - onOpen: function() { - elem.blur(); - }, - onClose: function() { - elem.blur(); - }, - onSet: function( context ) { - - if ( ! context.select ) { - return; - } - - var directory = elem.parents('.um-directory'); - - if ( um_is_directory_busy( directory ) ) { - return; - } - - um_members_show_preloader( directory ); - - var filter_name = elem.data( 'filter_name' ); - var range = elem.data( 'range' ); - - var current_value_from = um_get_data_for_directory( directory, 'filter_' + filter_name + '_from' ); - var current_value_to = um_get_data_for_directory( directory, 'filter_' + filter_name + '_to' ); - if ( typeof current_value_from === "undefined" ) { - current_value_from = min / 1000; - } - if ( typeof current_value_to === "undefined" ) { - current_value_to = max / 1000; - } - - var select_val = context.select / 1000; - var change_val = elem.val(); - - if ( range === 'from' ) { - current_value_from = select_val; - } else if ( range === 'to' ) { - current_value_to = select_val; - } - - um_set_url_from_data( directory, 'filter_' + filter_name + '_from', current_value_from ); - um_set_url_from_data( directory, 'filter_' + filter_name + '_to', current_value_to ); - - //set 1st page after filtration - directory.data( 'page', 1 ); - um_set_url_from_data( directory, 'page', '' ); - - um_ajax_get_members( directory ); - - um_change_tag( directory ); - - directory.data( 'searched', 1 ); - directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', false ); - directory.find( '.um-member-directory-view-type' ).removeClass( 'um-disabled' ); - } - }); - - var $picker = $input.pickadate('picker'); - var $fname = elem.data('filter_name'); - var $frange = elem.data('range'); - var $directory = elem.parents('.um-directory'); - - var query_value = um_get_data_for_directory( $directory, 'filter_' + $fname + '_' + $frange ); - if ( typeof query_value !== 'undefined' ) { - $picker.set( 'select', query_value*1000 ); - } - - }); - + um_datepicker_filter_init( directory ); //timepicker filter - directory.find('.um-timepicker-filter').each( function() { - var elem = jQuery(this); - var elemID = elem.attr('id'); - var elem_filter_name = elem.data('filter_name'); - - //using arrays formatted as [HOUR,MINUTE] - var min = elem.attr('data-min'); - var max = elem.attr('data-max'); - - var picker_min = min.split(':'); - var picker_max = max.split(':'); - - var $input = elem.pickatime({ - format: elem.data('format'), - interval: parseInt( elem.data('intervals') ), - min: [picker_min[0],picker_min[1]], - max: [picker_max[0],picker_max[1]], - formatSubmit: 'HH:i', - hiddenName: true, - onOpen: function() { elem.blur(); }, - onClose: function() { elem.blur(); }, - onSet: function( context ) { - - if ( ! context.select ) { - return; - } - - var directory = elem.parents('.um-directory'); - - if ( um_is_directory_busy( directory ) ) { - return; - } - - um_members_show_preloader( directory ); - - var filter_name = elem.data( 'filter_name' ); - var range = elem.data( 'range' ); - - var current_value_from = um_get_data_for_directory( directory, 'filter_' + filter_name + '_from' ); - var current_value_to = um_get_data_for_directory( directory, 'filter_' + filter_name + '_to' ); - if ( typeof current_value_from === "undefined" ) { - current_value_from = min; - } - if ( typeof current_value_to === "undefined" ) { - current_value_to = max; - } - - if ( typeof context.select !== 'undefined' ) { - var select_val = um_time_convert( context.select, range ); - - //var select_val = context.select / 60; - - if ( range === 'from' ) { - current_value_from = select_val; - } else if ( range === 'to' ) { - current_value_to = select_val; - } - } else { - if ( range === 'from' ) { - current_value_from = min; - } else if ( range === 'to' ) { - current_value_to = max; - } - } - - var time = jQuery( '#' + elemID ).val(); - - if ( elem.data('range') === 'from' ) { - jQuery( '#' + elem_filter_name + '_to' ).pickatime('picker').set('min', time); - } else { - jQuery( '#' + elem_filter_name + '_from').pickatime('picker').set('max', time); - } - - um_set_url_from_data( directory, 'filter_' + filter_name + '_from', current_value_from ); - um_set_url_from_data( directory, 'filter_' + filter_name + '_to', current_value_to ); - - //set 1st page after filtration - directory.data( 'page', 1 ); - um_set_url_from_data( directory, 'page', '' ); - - um_ajax_get_members( directory ); - - um_change_tag( directory ); - - directory.data( 'searched', 1 ); - directory.find( '.um-member-directory-sorting-options' ).prop( 'disabled', false ); - directory.find( '.um-member-directory-view-type' ).removeClass( 'um-disabled' ); - - } - }); - - // first loading timepicker select - var $picker = $input.pickatime('picker'); - var $fname = elem.data('filter_name'); - var $frange = elem.data('range'); - var $directory = elem.parents('.um-directory'); - - var query_value = um_get_data_for_directory( $directory, 'filter_' + $fname + '_' + $frange ); - if ( typeof query_value !== 'undefined' ) { - var arr = query_value.split(':'); - $picker.set( 'select', arr[0]*60 + arr[1]*1 ); - } - - }); + um_timepicker_filter_init( directory ); wp.hooks.doAction( 'um_member_directory_on_init', directory, hash ); diff --git a/includes/blocks/um-member-directories/build/index.asset.php b/includes/blocks/um-member-directories/build/index.asset.php index cee9d9ef..4c516119 100644 --- a/includes/blocks/um-member-directories/build/index.asset.php +++ b/includes/blocks/um-member-directories/build/index.asset.php @@ -1 +1 @@ - array('wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-server-side-render'), 'version' => 'fdd5ad1f74de4e2e94db'); + array('wp-block-editor', 'wp-blocks', 'wp-components', 'wp-data', 'wp-element', 'wp-server-side-render'), 'version' => 'a7aefdd7c81b99d7d5e3'); diff --git a/includes/blocks/um-member-directories/build/index.js b/includes/blocks/um-member-directories/build/index.js index b3f3a882..4a028c8b 100644 --- a/includes/blocks/um-member-directories/build/index.js +++ b/includes/blocks/um-member-directories/build/index.js @@ -1 +1 @@ -!function(){"use strict";var e={n:function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,{a:r}),r},d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t=window.wp.element,r=window.wp.data,n=window.wp.components,i=window.wp.blockEditor,o=window.wp.serverSideRender,l=e.n(o);(0,window.wp.blocks.registerBlockType)("um-block/um-member-directories",{edit:function(e){let{member_id:o,setAttributes:u}=e.attributes;const c=(0,i.useBlockProps)(),a=(0,r.useSelect)((e=>e("core").getEntityRecords("postType","um_directory",{per_page:-1,_fields:["id","title"]})));if(!a)return(0,t.createElement)("p",null,(0,t.createElement)(n.Spinner,null),wp.i18n.__("Loading...","ultimate-member"));if(0===a.length)return"No posts found.";let d=[{id:"",title:""}].concat(a).map((e=>({label:e.title.rendered,value:e.id})));return(0,t.createElement)("div",{...c},(0,t.createElement)(l(),{block:"um-block/um-member-directories",attributes:e.attributes}),(0,t.createElement)(i.InspectorControls,null,(0,t.createElement)(n.PanelBody,{title:wp.i18n.__("Select Directories","ultimate-member")},(0,t.createElement)(n.SelectControl,{label:wp.i18n.__("Select Directories","ultimate-member"),className:"um_select_directory",value:o,options:d,style:{height:"35px",lineHeight:"20px",padding:"0 7px"},onChange:t=>{e.setAttributes({member_id:t})}}))))},save:function(e){return null}}),jQuery(window).on("load",(function(e){new MutationObserver((function(e){e.forEach((function(e){jQuery(e.addedNodes).find(".um.um-directory").each((function(){var e=jQuery(this);um_ajax_get_members(e),um_slider_filter_init(e)}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))}(); \ No newline at end of file +!function(){"use strict";var e={n:function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,{a:r}),r},d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t=window.wp.element,r=window.wp.data,n=window.wp.components,i=window.wp.blockEditor,o=window.wp.serverSideRender,l=e.n(o);(0,window.wp.blocks.registerBlockType)("um-block/um-member-directories",{edit:function(e){let{member_id:o,setAttributes:u}=e.attributes;const c=(0,i.useBlockProps)(),a=(0,r.useSelect)((e=>e("core").getEntityRecords("postType","um_directory",{per_page:-1,_fields:["id","title"]})));if(!a)return(0,t.createElement)("p",null,(0,t.createElement)(n.Spinner,null),wp.i18n.__("Loading...","ultimate-member"));if(0===a.length)return"No posts found.";let d=[{id:"",title:""}].concat(a).map((e=>({label:e.title.rendered,value:e.id})));return(0,t.createElement)("div",{...c},(0,t.createElement)(l(),{block:"um-block/um-member-directories",attributes:e.attributes}),(0,t.createElement)(i.InspectorControls,null,(0,t.createElement)(n.PanelBody,{title:wp.i18n.__("Select Directories","ultimate-member")},(0,t.createElement)(n.SelectControl,{label:wp.i18n.__("Select Directories","ultimate-member"),className:"um_select_directory",value:o,options:d,style:{height:"35px",lineHeight:"20px",padding:"0 7px"},onChange:t=>{e.setAttributes({member_id:t})}}))))},save:function(e){return null}}),jQuery(window).on("load",(function(e){new MutationObserver((function(e){e.forEach((function(e){jQuery(e.addedNodes).find(".um.um-directory").each((function(){var e=jQuery(this);um_ajax_get_members(e),um_slider_filter_init(e),um_datepicker_filter_init(e),um_timepicker_filter_init(e)}))}))})).observe(document,{attributes:!1,childList:!0,characterData:!1,subtree:!0})}))}(); \ No newline at end of file diff --git a/includes/blocks/um-member-directories/src/index.js b/includes/blocks/um-member-directories/src/index.js index 3bf822f7..18bbcc63 100644 --- a/includes/blocks/um-member-directories/src/index.js +++ b/includes/blocks/um-member-directories/src/index.js @@ -98,6 +98,8 @@ jQuery(window).on( 'load', function($) { var directory = jQuery(this); um_ajax_get_members( directory ); um_slider_filter_init( directory ); + um_datepicker_filter_init( directory ); + um_timepicker_filter_init( directory ); }); }); });