@kamranbaylarov/one-select 1.2.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # 🎯 OneSelect - jQuery Multi-Select Dropdown Component
2
2
 
3
- **Version:** 1.2.0 | **Author:** Kamran Baylarov
3
+ **Version:** 1.2.1 | **Author:** Kamran Baylarov
4
4
 
5
5
  A powerful, flexible, and feature-rich multi-select dropdown component for jQuery.
6
6
 
@@ -38,6 +38,7 @@ OneSelect is a powerful **jQuery-based** plugin that provides multi-select funct
38
38
  - 📱 **Responsive** - Works on all devices
39
39
  - 🌐 **Data Attributes** - Configure via HTML attributes
40
40
  - 🔄 **Real-time Sync** - `data-ones-value` attribute updates automatically
41
+ - 🔗 **Label-Checkbox Binding** - Native HTML label-for-id connection for proper accessibility
41
42
  - 🎪 **Multiple Instances** - Independent selects on same page
42
43
  - 🌪 **Click Outside** - Close dropdown when clicking outside (default: true)
43
44
  - 📍 **Smart Positioning** - Dropdown positioned with `position: fixed` using viewport coordinates
@@ -813,7 +814,10 @@ Main CSS classes with `cms-` prefix:
813
814
  </div>
814
815
  <div class="cms-options-container">
815
816
  <div class="cms-option select-all">...</div>
816
- <div class="cms-option">...</div>
817
+ <div class="cms-option">
818
+ <input type="checkbox" id="cms-checkbox-ones-abc123-value-xy7z9q2" value="Apple">
819
+ <label for="cms-checkbox-ones-abc123-value-xy7z9q2">Apple</label>
820
+ </div>
817
821
  </div>
818
822
  <div class="cms-buttons">
819
823
  <button class="cms-btn cms-btn-ok">OK</button>
@@ -824,6 +828,34 @@ Main CSS classes with `cms-` prefix:
824
828
 
825
829
  **Note:** The dropdown is positioned using `position: fixed` with viewport coordinates (`getBoundingClientRect()`). This ensures it stays correctly positioned even when parent elements scroll.
826
830
 
831
+ ### Accessibility & Label-Checkbox Binding
832
+
833
+ **Native HTML Label-Checkbox Connection:**
834
+
835
+ Each checkbox is automatically assigned a unique ID, and the label is linked to it using the native HTML `for` attribute:
836
+
837
+ ```html
838
+ <div class="cms-option">
839
+ <input type="checkbox" id="cms-checkbox-ones-abc123-value-xy7z9q2" value="Apple">
840
+ <label for="cms-checkbox-ones-abc123-value-xy7z9q2">Apple</label>
841
+ </div>
842
+ ```
843
+
844
+ **Benefits:**
845
+ - ✅ **Proper Accessibility**: Screen readers correctly announce checkbox-label pairs
846
+ - ✅ **Native Browser Behavior**: Clicking the label toggles the checkbox automatically
847
+ - ✅ **No ID Conflicts**: Each checkbox gets a unique ID using instance ID + value + random suffix
848
+ - ✅ **Change Events**: Native `change` event fires when label is clicked
849
+ - ✅ **Multiple Instances**: Different OneSelect instances don't conflict with each other
850
+
851
+ **ID Format:**
852
+ ```
853
+ cms-checkbox-{instanceId}-{sanitizedValue}-{random}
854
+ ```
855
+
856
+ Example: `cms-checkbox-ones-abc123-apple-xy7z9q2`
857
+
858
+
827
859
  ### Custom CSS Example
828
860
 
829
861
  ```css
package/js/one-select.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * OneSelect - jQuery Multi-Select Dropdown Plugin
3
- * Version: 1.2.0
3
+ * Version: 1.2.1
4
4
  * https://github.com/your-repo/one-select
5
5
  *
6
6
  * Copyright 2026
@@ -447,6 +447,15 @@
447
447
  this.updateSelectAllState();
448
448
  },
449
449
 
450
+ /**
451
+ * Generate unique checkbox ID
452
+ * @param {String} value - Option value
453
+ * @returns {String} Unique ID
454
+ */
455
+ generateCheckboxId: function (value) {
456
+ return 'cms-checkbox-' + this.instanceId + '-' + String(value).replace(/[^a-zA-Z0-9]/g, '-') + '-' + Math.random().toString(36).substr(2, 9);
457
+ },
458
+
450
459
  createOption: function (value, label, checked) {
451
460
  var optionClass = 'cms-option';
452
461
  if (!this.settings.showCheckbox) {
@@ -457,10 +466,13 @@
457
466
  optionClass += ' selected';
458
467
  }
459
468
 
469
+ // Generate unique checkbox ID
470
+ var checkboxId = this.generateCheckboxId(value);
471
+
460
472
  var option = $('<div class="' + optionClass + '" data-value="' + this.htmlEncode(value) + '"></div>');
461
- var checkbox = $('<input type="checkbox" value="' + this.htmlEncode(value) + '"' +
473
+ var checkbox = $('<input type="checkbox" id="' + this.htmlEncode(checkboxId) + '" value="' + this.htmlEncode(value) + '"' +
462
474
  (checked ? ' checked' : '') + '>');
463
- var labelEl = $('<label>' + label + '</label>');
475
+ var labelEl = $('<label for="' + this.htmlEncode(checkboxId) + '">' + label + '</label>');
464
476
 
465
477
  option.append(checkbox);
466
478
  option.append(labelEl);
@@ -1 +1 @@
1
- (n=>{"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.exports=function(t,e){return void 0===e&&(e="undefined"!=typeof window?require("jquery"):require("jquery")(t)),n(e),e}:n(window.jQuery||window.$)})(function(r){var n={},a="oneSelect";function o(n,s){var i;return function(){var t=this,e=arguments;clearTimeout(i),i=setTimeout(function(){n.apply(t,e)},s)}}function l(t,e){this.element=t,this.$element=r(t),this.instanceId="ones-"+Math.random().toString(36).substr(2,9),t=this.readDataAttributes(),this.settings=r.extend({},l.defaults,e,t),this.init()}l.defaults={placeholder:"Select options...",selectAllText:"Select All",okText:"OK",cancelText:"Cancel",data:[],value:null,showCheckbox:!0,showBadges:!1,showBadgesExternal:null,showSearch:!1,searchPlaceholder:"Search...",searchUrl:null,searchDebounceDelay:300,closeOnScroll:!1,closeOnOutside:!0,submitForm:!1,submitOnOutside:!1,formId:null,name:null,multiple:!0,ajax:null,autoLoad:!0,beforeLoad:null,afterLoad:null,onLoadError:null,onChange:null,onSelect:null,onOk:null,onCancel:null,infinityScroll:!1,onInfinityScroll:null,loading:!1},l.prototype={readDataAttributes:function(){var t=this,i={},e=(r.each({"ones-placeholder":"placeholder","ones-select-all-text":"selectAllText","ones-ok-text":"okText","ones-cancel-text":"cancelText","ones-data":"data","ones-value":"value","ones-name":"name","ones-multiple":"multiple","ones-show-checkbox":"showCheckbox","ones-show-badges":"showBadges","ones-show-badges-external":"showBadgesExternal","ones-show-search":"showSearch","ones-search-placeholder":"searchPlaceholder","ones-search-url":"searchUrl","ones-search-debounce-delay":"searchDebounceDelay","ones-close-on-scroll":"closeOnScroll","ones-close-on-outside":"closeOnOutside","ones-submit-form":"submitForm","ones-submit-on-outside":"submitOnOutside","ones-form-id":"formId","ones-auto-load":"autoLoad","ones-infinity-scroll":"infinityScroll"},function(e,n){var s=t.$element.data(e);if(void 0!==s)if("data"===n||"value"===n)if("string"==typeof s)try{i[n]=JSON.parse(s)}catch(t){console.warn("OneSelect: Invalid JSON for "+e,s),i[n]=s}else i[n]=s;else i[n]="multiple"===n||"showCheckbox"===n||"showBadges"===n||"showSearch"===n||"closeOnScroll"===n||"closeOnOutside"===n||"submitForm"===n||"submitOnOutside"===n||"autoLoad"===n||"infinityScroll"===n?"string"==typeof s?"true"===s||"1"===s:!!s:"searchDebounceDelay"===n?"string"==typeof s?parseInt(s,10)||300:s||300:s}),this.$element.data("ones-ajax"));return e&&("string"==typeof e?i.ajax={url:e,method:"GET"}:"object"==typeof e&&(i.ajax=e)),i},init:function(){var e;null!=(n[this.instanceId]=this).settings.value?(Array.isArray(this.settings.value)||(this.settings.value=[this.settings.value]),e={},this.settings.value=this.settings.value.filter(function(t){return null!=t&&(t=String(t).trim(),!e[t])&&(e[t]=!0)})):this.settings.value=[],this.updateDataValueAttribute(),this.currentPage=1,this.hasNextPage=!1,this.wrapper=this.createWrapper(),this.trigger=this.createTrigger(),this.dropdown=this.createDropdown(),this.searchInput=this.createSearchInput(),this.optionsContainer=this.createOptionsContainer(),this.preloader=this.createPreloader(),this.buttons=this.createButtons(),this.build(),this.attachEvents(),this.settings.ajax&&this.settings.autoLoad&&this.loadData()},build:function(){this.settings.showSearch&&this.dropdown.append(this.searchInput),this.dropdown.append(this.optionsContainer),this.dropdown.append(this.preloader),this.dropdown.append(this.buttons),this.wrapper.append(this.trigger),this.$element.append(this.wrapper),r("body").append(this.dropdown),this.renderOptions(),this.updateTriggerText(),this.updateHiddenInputs()},updateHiddenInputs:function(){var n,s,t,e;this.settings.name&&(t=null,(n=(t=this.settings.formId?r("#"+this.settings.formId):this.$element.closest("form")).length?t:this.wrapper).find('input.cms-hidden-input[data-cms-input="'+this.settings.name+'"]').remove(),s=this.settings.name,this.settings.multiple&&-1===s.indexOf("[")&&(s+="[]"),t=this.getSelectedValues(),Array.isArray(t)&&(t=t.filter(function(t){return null!=t&&""!==String(t).trim()})),this.settings.multiple?0===t.length?(e=r('<input type="hidden" class="cms-hidden-input">').attr("name",this.settings.name).attr("value","").attr("data-cms-input",this.settings.name),n.append(e)):r.each(t,function(t,e){e=r('<input type="hidden" class="cms-hidden-input">').attr("name",s).attr("value",e).attr("data-cms-input",this.settings.name).attr("data-cms-value",e);n.append(e)}.bind(this)):(t=0<t.length?t[0]:"",e=r('<input type="hidden" class="cms-hidden-input">').attr("name",s).attr("value",t).attr("data-cms-input",this.settings.name),n.append(e)))},createWrapper:function(){return r('<div class="cms-wrapper"></div>')},createTrigger:function(){return r('<div class="cms-trigger"><span class="cms-selected-text cms-placeholder">'+this.settings.placeholder+"</span></div>")},createDropdown:function(){return r('<div class="cms-dropdown"></div>')},createSearchInput:function(){return r('<div class="cms-search-wrapper"><input type="text" class="cms-search-input" placeholder="'+this.settings.searchPlaceholder+'" /></div>')},createOptionsContainer:function(){return r('<div class="cms-options-container"></div>')},createPreloader:function(){return r('<div class="cms-infinity-preloader"><div class="cms-spinner"></div></div>')},createButtons:function(){var t=r('<div class="cms-buttons"></div>');return this.okBtn=r('<button class="cms-btn cms-btn-ok">'+this.settings.okText+"</button>"),this.cancelBtn=r('<button class="cms-btn cms-btn-cancel">'+this.settings.cancelText+"</button>"),t.append(this.okBtn),t.append(this.cancelBtn),t},renderOptions:function(){this.optionsContainer.empty();var t=this.createOption("select-all",this.settings.selectAllText,!1),s=(this.optionsContainer.append(t),this);r.each(this.settings.data,function(t,e){var n=s.isValueSelected(t),t=s.createOption(t,e,n);s.optionsContainer.append(t)}),this.updateSelectAllState()},htmlEncode:function(t){return String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")},isValueSelected:function(t){var e;return!!this.settings.value&&(Array.isArray(this.settings.value)?(e=String(t).trim(),this.settings.value.some(function(t){return String(t).trim()===e})):String(this.settings.value).trim()===String(t).trim())},updateDataValueAttribute:function(){this.settings.value&&0!==this.settings.value.length?this.$element.attr("data-ones-value",JSON.stringify(this.settings.value)):this.$element.removeAttr("data-ones-value")},appendOptions:function(t){var s=this;r.each(t,function(t,e){var n;0<s.optionsContainer.find('.cms-option[data-value="'+s.htmlEncode(t)+'"]').length||(n=s.isValueSelected(t),t=s.createOption(t,e,n),s.optionsContainer.append(t))}),this.updateSelectAllState()},createOption:function(t,e,n){var s="cms-option",s=(this.settings.showCheckbox||(s+=" cms-hide-checkbox"),n&&"select-all"!==t&&(s+=" selected"),r('<div class="'+s+'" data-value="'+this.htmlEncode(t)+'"></div>')),t=r('<input type="checkbox" value="'+this.htmlEncode(t)+'"'+(n?" checked":"")+">"),n=r("<label>"+e+"</label>");return s.append(t),s.append(n),s},filterOptions:function(e){var t=this.optionsContainer.find('.cms-option:not([data-value="select-all"])');""===e?t.show():t.each(function(){var t=r(this);-1!==t.find("label").text().toLowerCase().indexOf(e)?t.show():t.hide()})},performAjaxSearch:function(t){var s=this;this.optionsContainer.addClass("cms-loading"),r.ajax({url:this.settings.searchUrl,method:"GET",data:{q:t},dataType:"json",success:function(t){var e=t;"object"==typeof t&&t.data?e=t.data:"object"==typeof t&&t.results&&(e=t.results),s.updateSearchResults(e||[]),s.optionsContainer.removeClass("cms-loading")},error:function(t,e,n){console.error("OneSelect: Search error",n),s.optionsContainer.removeClass("cms-loading"),s.settings.onLoadError&&s.settings.onLoadError.call(s,t,e,n)}})},updateSearchResults:function(t){this.optionsContainer.find('.cms-option:not([data-value="select-all"])').remove();var s=this;r.each(t,function(t,e){var n=s.isValueSelected(t),t=s.createOption(t,e,n);s.optionsContainer.append(t)}),this.updateSelectAllState()},attachEvents:function(){var e,i=this;function a(t){return t===document?"document":t===document.documentElement?"html":t===document.body?"body":t.tagName+"-"+(t.id||t.className||Math.random().toString(36).substr(2,9))}this.trigger.on("click",function(t){t.stopPropagation(),i.toggle()}),this.settings.showSearch&&(this.settings.searchUrl?(e=o(function(t){i.performAjaxSearch(t)},this.settings.searchDebounceDelay),this.searchInput.find(".cms-search-input").on("keyup",function(){var t=r(this).val();0<t.length?e(t):i.filterOptions("")})):this.searchInput.find(".cms-search-input").on("keyup",function(){var t=r(this).val().toLowerCase();i.filterOptions(t)})),r(window).on("resize.cms",function(){i.wrapper.hasClass("open")&&i.updateDropdownPosition()}),this.settings.closeOnScroll?r(window).on("scroll.cms",function(){i.wrapper.hasClass("open")&&i.close()}):r(window).on("scroll.cms",function(){i.wrapper.hasClass("open")&&i.updateDropdownPosition()}),r(document).on("wheel.onescroll",function(t){i.wrapper.hasClass("open")&&t.originalEvent&&0<Math.abs(t.originalEvent.deltaX)&&i.close()}),i._detectHorizontalScroll=function(){if(i.wrapper.hasClass("open"))if(window.scrollX!==i._lastWindowScrollX&&(i._lastWindowScrollX=window.scrollX,0<i._lastWindowScrollX))i.close();else for(var t=document.querySelectorAll("*"),e=0;e<t.length;e++){var n=t[e],s=a(n);if(void 0!==i._elementScrollPositions[s])if(n.scrollLeft!==i._elementScrollPositions[s])return void i.close()}},i._elementScrollPositions={},i._lastWindowScrollX=window.scrollX;var n,s=i.open.bind(i),t=(i.open=function(){i._elementScrollPositions={},i._lastWindowScrollX=window.scrollX;for(var t=document.querySelectorAll("*"),e=0;e<t.length;e++){var n=t[e];(n.scrollWidth>n.clientWidth||n.scrollHeight>n.clientHeight)&&(i._elementScrollPositions[a(n)]=n.scrollLeft)}i._horizontalScrollInterval&&clearInterval(i._horizontalScrollInterval),i._horizontalScrollInterval=setInterval(function(){i._detectHorizontalScroll()},50),s()},i.close.bind(i));i.close=function(){i._horizontalScrollInterval&&(clearInterval(i._horizontalScrollInterval),i._horizontalScrollInterval=null),i._elementScrollPositions={},t()},r(window).on("click.ones",function(t){!i.settings.closeOnOutside||!i.wrapper.hasClass("open")||0<(t=r(t.target)).closest(".cms-wrapper").length||0<t.closest(".cms-dropdown").length||(i.settings.submitOnOutside&&(i.updateTriggerText(),i.settings.onOk&&i.settings.onOk.call(i,i.getSelectedValues(),i.getSelectedLabels()),i.submitForm()),i.close())}),this.optionsContainer.on("click",".cms-option",function(t){var e=r(t.target);e.is('input[type="checkbox"]')||0<e.closest("label").length||0<e.closest("button").length||(t.preventDefault(),t.stopPropagation(),(e=r(this).find('input[type="checkbox"]')).prop("checked",!e.prop("checked")).trigger("change"))}),this.optionsContainer.on("change",'input[type="checkbox"]',function(t){t.stopPropagation();var t=r(this),e=t.closest(".cms-option");"select-all"===e.data("value")?i.handleSelectAll(t.prop("checked")):i.handleOptionChange(e)}),this.okBtn.on("click",function(t){t.stopPropagation(),i.handleOk()}),this.cancelBtn.on("click",function(t){t.stopPropagation(),i.handleCancel()}),this.settings.infinityScroll&&this.settings.ajax&&this.settings.ajax.url&&(n=o(function(){!i.hasNextPage||i.settings.loading||i.loadNextPage()},200),this.optionsContainer.on("scroll",function(){var t=r(this);t.scrollTop()+t.innerHeight()>=t[0].scrollHeight-50&&n()})),this.settings.infinityScroll&&this.settings.onInfinityScroll&&!this.settings.ajax&&console.warn("OneSelect: infinityScroll requires ajax configuration. onInfinityScroll callback is deprecated.")},handleOptionChange:function(t){var e=t.data("value");t.find('input[type="checkbox"]').prop("checked")?this.select(e):this.unselect(e),this.settings.onChange&&this.settings.onChange.call(this,this.getSelectedValues(),this.getSelectedLabels()),this.settings.onSelect&&this.settings.onSelect.call(this,this.getSelectedValues())},handleSelectAll:function(n){var s=this;n||Array.isArray(this.settings.value)&&(this.settings.value=[]),this.optionsContainer.find('.cms-option:not([data-value="select-all"])').each(function(){var t,e=r(this);e.find('input[type="checkbox"]').prop("checked",n),n?(e.addClass("selected"),t=e.find('input[type="checkbox"]').val(),Array.isArray(s.settings.value)&&!s.isValueSelected(t)&&s.settings.value.push(t)):e.removeClass("selected")}),this.updateSelectAllState(),this.updateTriggerText(),this.updateHiddenInputs(),this.updateDataValueAttribute()},updateSelectAllState:function(){var t=this.optionsContainer.find('.cms-option:not([data-value="select-all"]) input[type="checkbox"]'),e=t.filter(":checked"),t=t.length,e=e.length,n=this.optionsContainer.find('.cms-option[data-value="select-all"] input[type="checkbox"]');n.prop("indeterminate",!1),n.prop("checked",!1),0!==e&&(e===t&&0<t?n.prop("checked",!0):n.prop("indeterminate",!0))},getSelectedValues:function(){return Array.isArray(this.settings.value)?this.settings.value:[]},getSelectedLabels:function(){var t=[];return this.optionsContainer.find('.cms-option:not([data-value="select-all"]) input[type="checkbox"]:checked').siblings("label").each(function(){t.push(r(this).text())}),t},updateTriggerText:function(){var a,t=this.getSelectedLabels(),e=this.getSelectedValues(),n=this.settings.value?this.settings.value.length:0,o=this.trigger.find(".cms-selected-text");0===t.length?o.empty().text(this.settings.placeholder).addClass("cms-placeholder"):this.settings.showBadges?(o.empty().removeClass("cms-placeholder"),a=this,r.each(e,function(t,e){var n=r('<span class="cms-badge"></span>'),s=e,i=a.optionsContainer.find('.cms-option[data-value="'+a.htmlEncode(e)+'"]'),i=(i.length&&(s=i.find("label").text()),r("<span></span>").text(s)),s=r('<button type="button" class="cms-badge-remove">&times;</button>');s.on("click",function(t){t.stopPropagation(),a.unselect(e)}),n.append(i),n.append(s),o.append(n)})):(o.empty().removeClass("cms-placeholder"),o.text(n+" items selected")),this.updateExternalBadges(e,t)},updateExternalBadges:function(t,i){var a,o;this.settings.showBadgesExternal&&(0===(a=r("#"+this.settings.showBadgesExternal)).length?console.warn("OneSelect: External container not found - #"+this.settings.showBadgesExternal):(a.empty(),0!==t.length&&(o=this,r.each(t,function(t,e){var n=r('<span class="cms-badge"></span>'),t=r("<span></span>").text(i[t]),s=r('<button type="button" class="cms-badge-remove">&times;</button>');s.on("click",function(t){t.preventDefault(),t.stopPropagation(),o.unselect(e)}),n.append(t),n.append(s),a.append(n)}))))},toggle:function(){this.wrapper.hasClass("open")?this.close():this.open()},open:function(){r(".cms-wrapper.open").not(this.wrapper).removeClass("open"),r(".cms-dropdown.open").not(this.dropdown).removeClass("open"),this.updateDropdownPosition(),this.wrapper.addClass("open"),this.dropdown.addClass("open")},updateDropdownPosition:function(){var t=this.wrapper[0].getBoundingClientRect(),e=(this.wrapper.outerHeight(),this.wrapper.outerWidth());this.dropdown.css({position:"fixed",top:t.bottom+"px",left:t.left+"px",width:e+"px"})},close:function(){this.wrapper.removeClass("open"),this.dropdown.removeClass("open")},handleOk:function(){this.updateTriggerText();var t=this.getSelectedValues(),e=this.getSelectedLabels();this.settings.onOk&&this.settings.onOk.call(this,t,e),this.settings.submitForm&&this.submitForm(),this.updateDataValueAttribute(),this.close()},submitForm:function(){var t=null;if(this.settings.formId){if(0===(t=r("#"+this.settings.formId)).length)return void console.warn('OneSelect: Form with ID "'+this.settings.formId+'" not found')}else if(0===(t=this.$element.closest("form")).length)return void console.warn("OneSelect: No parent form found");t[0].submit()},handleCancel:function(){this.settings.value=[],this.optionsContainer.find('input[type="checkbox"]').prop("checked",!1),this.optionsContainer.find(".cms-option").removeClass("selected"),this.updateSelectAllState(),this.updateTriggerText(),this.updateHiddenInputs(),this.updateDataValueAttribute(),this.settings.onCancel&&this.settings.onCancel.call(this),this.settings.submitForm&&this.submitForm(),this.close()},setValue:function(t){this.settings.value=t||[],this.renderOptions(),this.updateTriggerText(),this.updateHiddenInputs(),this.updateDataValueAttribute()},getValue:function(){return this.getSelectedValues()},updateData:function(t){this.settings.data=t||[],this.settings.value=[],this.renderOptions(),this.updateTriggerText(),this.updateHiddenInputs(),this.updateDataValueAttribute()},loadData:function(t,n,s,i){var e,a,o=this,l=t||this.settings.ajax;l&&l.url?(this.settings.beforeLoad&&this.settings.beforeLoad.call(this),i||this.trigger.find(".cms-selected-text").text("Loading..."),t=r.extend(!0,{url:l.url,method:l.method||"GET",data:l.data||{},dataType:l.dataType||"json",success:function(t){var e=t;"object"==typeof t&&t.data?e=t.data:"object"==typeof t&&t.results&&(e=t.results),t&&void 0!==t.hasNextPage?o.hasNextPage=t.hasNextPage:o.hasNextPage=!1,t&&void 0!==t.currentPage&&(o.currentPage=t.currentPage),i?(o.settings.data=r.extend({},o.settings.data,e||{}),o.appendOptions(e||{})):(o.settings.data=e||[],o.renderOptions()),o.updateTriggerText(),o.settings.afterLoad&&o.settings.afterLoad.call(o,e,t),n&&n.call(o,e,t)},error:function(t,e,n){i||o.trigger.find(".cms-selected-text").text("Error loading data"),o.settings.onLoadError&&o.settings.onLoadError.call(o,t,e,n),s&&s.call(o,t,e,n)}},l),l.success&&(e=t.success,t.success=function(t){l.success(t),e(t)}),l.error&&(a=t.error,t.error=function(t,e,n){l.error(t,e,n),a(t,e,n)}),r.ajax(t)):console.error("OneSelect: Ajax configuration or url is missing")},loadNextPage:function(){var n=this,t=(this.settings.loading=!0,this.preloader.show(),r.extend(!0,{},this.settings.ajax));t.data=t.data||{},t.data.page=this.currentPage+1,this.loadData(t,function(t,e){n.settings.loading=!1,n.preloader.hide(),e.currentPage||n.currentPage++},function(){n.settings.loading=!1,n.preloader.hide()},!0)},reload:function(){this.settings.ajax?this.loadData():console.warn("OneSelect: No ajax configuration found")},select:function(t){var e=this.optionsContainer.find('.cms-option:not([data-value="select-all"]) input[type="checkbox"][value="'+this.htmlEncode(t)+'"]');e.length&&(e.prop("checked",!0),e.closest(".cms-option").addClass("selected")),Array.isArray(this.settings.value)&&!this.isValueSelected(t)&&this.settings.value.push(t),this.updateSelectAllState(),this.updateTriggerText(),this.updateHiddenInputs(),this.updateDataValueAttribute()},unselect:function(t){var e,n=this.optionsContainer.find('.cms-option:not([data-value="select-all"]) input[type="checkbox"][value="'+this.htmlEncode(t)+'"]');n.length&&(n.prop("checked",!1),n.closest(".cms-option").removeClass("selected")),Array.isArray(this.settings.value)&&(e=String(t).trim(),this.settings.value=this.settings.value.filter(function(t){return String(t).trim()!==e})),this.updateSelectAllState(),this.updateTriggerText(),this.updateHiddenInputs(),this.updateDataValueAttribute()},selectAll:function(){this.handleSelectAll(!0)},unselectAll:function(){this.handleSelectAll(!1)},toggleSelection:function(t){var e,n,s=this.optionsContainer.find('.cms-option:not([data-value="select-all"]) input[type="checkbox"][value="'+this.htmlEncode(t)+'"]');s.length&&(e=s.prop("checked"),s.prop("checked",!e),s=s.closest(".cms-option"),e?(s.removeClass("selected"),Array.isArray(this.settings.value)&&(n=String(t).trim(),this.settings.value=this.settings.value.filter(function(t){return String(t).trim()!==n}))):(s.addClass("selected"),Array.isArray(this.settings.value)&&!this.isValueSelected(t)&&this.settings.value.push(t)),this.updateSelectAllState(),this.updateTriggerText(),this.updateHiddenInputs())},getInstanceId:function(){return this.instanceId},destroy:function(){delete n[this.instanceId],r(window).off(".cms"),r(window).off(".ones"),r(document).off(".onescroll"),this.trigger.off(),this.okBtn.off(),this.cancelBtn.off(),this.optionsContainer.off(),this._horizontalScrollInterval&&(clearInterval(this._horizontalScrollInterval),this._horizontalScrollInterval=null),r('input.cms-hidden-input[data-cms-input="'+this.settings.name+'"]').remove(),this.wrapper.remove(),this.dropdown.remove(),this.$element.removeData(a)}},l.getInstance=function(t){return n[t]||null},l.getAllInstances=function(){return n},r.fn[a]=function(n){var s=arguments,i=this;return this.each(function(){var t=r(this),e=t.data(a);if(!e){if("object"!=typeof n&&n)return;e=new l(this,n),t.data(a,e)}"string"==typeof n&&("value"===n?i=void 0!==s[1]?(e.setValue(s[1]),t):e.getValue():"getValues"===n?i=e.getSelectedValues():"getLabels"===n?i=e.getSelectedLabels():"getInstanceId"===n?i=e.getInstanceId():"updateData"===n?e.updateData(s[1]):"loadData"===n?e.loadData(s[1],s[2],s[3]):"reload"===n?e.reload():"select"===n?e.select(s[1]):"unselect"===n?e.unselect(s[1]):"selectAll"===n?e.selectAll():"unselectAll"===n?e.unselectAll():"toggleSelection"===n?e.toggleSelection(s[1]):"open"===n?e.open():"close"===n?e.close():"destroy"===n&&e.destroy())}),i},r.fn[a].Constructor=l,r.fn[a].getInstance=l.getInstance,r.fn[a].getAllInstances=l.getAllInstances});
1
+ (n=>{"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.exports=function(t,e){return void 0===e&&(e="undefined"!=typeof window?require("jquery"):require("jquery")(t)),n(e),e}:n(window.jQuery||window.$)})(function(r){var n={},a="oneSelect";function o(n,s){var i;return function(){var t=this,e=arguments;clearTimeout(i),i=setTimeout(function(){n.apply(t,e)},s)}}function l(t,e){this.element=t,this.$element=r(t),this.instanceId="ones-"+Math.random().toString(36).substr(2,9),t=this.readDataAttributes(),this.settings=r.extend({},l.defaults,e,t),this.init()}l.defaults={placeholder:"Select options...",selectAllText:"Select All",okText:"OK",cancelText:"Cancel",data:[],value:null,showCheckbox:!0,showBadges:!1,showBadgesExternal:null,showSearch:!1,searchPlaceholder:"Search...",searchUrl:null,searchDebounceDelay:300,closeOnScroll:!1,closeOnOutside:!0,submitForm:!1,submitOnOutside:!1,formId:null,name:null,multiple:!0,ajax:null,autoLoad:!0,beforeLoad:null,afterLoad:null,onLoadError:null,onChange:null,onSelect:null,onOk:null,onCancel:null,infinityScroll:!1,onInfinityScroll:null,loading:!1},l.prototype={readDataAttributes:function(){var t=this,i={},e=(r.each({"ones-placeholder":"placeholder","ones-select-all-text":"selectAllText","ones-ok-text":"okText","ones-cancel-text":"cancelText","ones-data":"data","ones-value":"value","ones-name":"name","ones-multiple":"multiple","ones-show-checkbox":"showCheckbox","ones-show-badges":"showBadges","ones-show-badges-external":"showBadgesExternal","ones-show-search":"showSearch","ones-search-placeholder":"searchPlaceholder","ones-search-url":"searchUrl","ones-search-debounce-delay":"searchDebounceDelay","ones-close-on-scroll":"closeOnScroll","ones-close-on-outside":"closeOnOutside","ones-submit-form":"submitForm","ones-submit-on-outside":"submitOnOutside","ones-form-id":"formId","ones-auto-load":"autoLoad","ones-infinity-scroll":"infinityScroll"},function(e,n){var s=t.$element.data(e);if(void 0!==s)if("data"===n||"value"===n)if("string"==typeof s)try{i[n]=JSON.parse(s)}catch(t){console.warn("OneSelect: Invalid JSON for "+e,s),i[n]=s}else i[n]=s;else i[n]="multiple"===n||"showCheckbox"===n||"showBadges"===n||"showSearch"===n||"closeOnScroll"===n||"closeOnOutside"===n||"submitForm"===n||"submitOnOutside"===n||"autoLoad"===n||"infinityScroll"===n?"string"==typeof s?"true"===s||"1"===s:!!s:"searchDebounceDelay"===n?"string"==typeof s?parseInt(s,10)||300:s||300:s}),this.$element.data("ones-ajax"));return e&&("string"==typeof e?i.ajax={url:e,method:"GET"}:"object"==typeof e&&(i.ajax=e)),i},init:function(){var e;null!=(n[this.instanceId]=this).settings.value?(Array.isArray(this.settings.value)||(this.settings.value=[this.settings.value]),e={},this.settings.value=this.settings.value.filter(function(t){return null!=t&&(t=String(t).trim(),!e[t])&&(e[t]=!0)})):this.settings.value=[],this.updateDataValueAttribute(),this.currentPage=1,this.hasNextPage=!1,this.wrapper=this.createWrapper(),this.trigger=this.createTrigger(),this.dropdown=this.createDropdown(),this.searchInput=this.createSearchInput(),this.optionsContainer=this.createOptionsContainer(),this.preloader=this.createPreloader(),this.buttons=this.createButtons(),this.build(),this.attachEvents(),this.settings.ajax&&this.settings.autoLoad&&this.loadData()},build:function(){this.settings.showSearch&&this.dropdown.append(this.searchInput),this.dropdown.append(this.optionsContainer),this.dropdown.append(this.preloader),this.dropdown.append(this.buttons),this.wrapper.append(this.trigger),this.$element.append(this.wrapper),r("body").append(this.dropdown),this.renderOptions(),this.updateTriggerText(),this.updateHiddenInputs()},updateHiddenInputs:function(){var n,s,t,e;this.settings.name&&(t=null,(n=(t=this.settings.formId?r("#"+this.settings.formId):this.$element.closest("form")).length?t:this.wrapper).find('input.cms-hidden-input[data-cms-input="'+this.settings.name+'"]').remove(),s=this.settings.name,this.settings.multiple&&-1===s.indexOf("[")&&(s+="[]"),t=this.getSelectedValues(),Array.isArray(t)&&(t=t.filter(function(t){return null!=t&&""!==String(t).trim()})),this.settings.multiple?0===t.length?(e=r('<input type="hidden" class="cms-hidden-input">').attr("name",this.settings.name).attr("value","").attr("data-cms-input",this.settings.name),n.append(e)):r.each(t,function(t,e){e=r('<input type="hidden" class="cms-hidden-input">').attr("name",s).attr("value",e).attr("data-cms-input",this.settings.name).attr("data-cms-value",e);n.append(e)}.bind(this)):(t=0<t.length?t[0]:"",e=r('<input type="hidden" class="cms-hidden-input">').attr("name",s).attr("value",t).attr("data-cms-input",this.settings.name),n.append(e)))},createWrapper:function(){return r('<div class="cms-wrapper"></div>')},createTrigger:function(){return r('<div class="cms-trigger"><span class="cms-selected-text cms-placeholder">'+this.settings.placeholder+"</span></div>")},createDropdown:function(){return r('<div class="cms-dropdown"></div>')},createSearchInput:function(){return r('<div class="cms-search-wrapper"><input type="text" class="cms-search-input" placeholder="'+this.settings.searchPlaceholder+'" /></div>')},createOptionsContainer:function(){return r('<div class="cms-options-container"></div>')},createPreloader:function(){return r('<div class="cms-infinity-preloader"><div class="cms-spinner"></div></div>')},createButtons:function(){var t=r('<div class="cms-buttons"></div>');return this.okBtn=r('<button class="cms-btn cms-btn-ok">'+this.settings.okText+"</button>"),this.cancelBtn=r('<button class="cms-btn cms-btn-cancel">'+this.settings.cancelText+"</button>"),t.append(this.okBtn),t.append(this.cancelBtn),t},renderOptions:function(){this.optionsContainer.empty();var t=this.createOption("select-all",this.settings.selectAllText,!1),s=(this.optionsContainer.append(t),this);r.each(this.settings.data,function(t,e){var n=s.isValueSelected(t),t=s.createOption(t,e,n);s.optionsContainer.append(t)}),this.updateSelectAllState()},htmlEncode:function(t){return String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")},isValueSelected:function(t){var e;return!!this.settings.value&&(Array.isArray(this.settings.value)?(e=String(t).trim(),this.settings.value.some(function(t){return String(t).trim()===e})):String(this.settings.value).trim()===String(t).trim())},updateDataValueAttribute:function(){this.settings.value&&0!==this.settings.value.length?this.$element.attr("data-ones-value",JSON.stringify(this.settings.value)):this.$element.removeAttr("data-ones-value")},appendOptions:function(t){var s=this;r.each(t,function(t,e){var n;0<s.optionsContainer.find('.cms-option[data-value="'+s.htmlEncode(t)+'"]').length||(n=s.isValueSelected(t),t=s.createOption(t,e,n),s.optionsContainer.append(t))}),this.updateSelectAllState()},generateCheckboxId:function(t){return"cms-checkbox-"+this.instanceId+"-"+String(t).replace(/[^a-zA-Z0-9]/g,"-")+"-"+Math.random().toString(36).substr(2,9)},createOption:function(t,e,n){var s="cms-option",i=(this.settings.showCheckbox||(s+=" cms-hide-checkbox"),n&&"select-all"!==t&&(s+=" selected"),this.generateCheckboxId(t)),s=r('<div class="'+s+'" data-value="'+this.htmlEncode(t)+'"></div>'),t=r('<input type="checkbox" id="'+this.htmlEncode(i)+'" value="'+this.htmlEncode(t)+'"'+(n?" checked":"")+">"),n=r('<label for="'+this.htmlEncode(i)+'">'+e+"</label>");return s.append(t),s.append(n),s},filterOptions:function(e){var t=this.optionsContainer.find('.cms-option:not([data-value="select-all"])');""===e?t.show():t.each(function(){var t=r(this);-1!==t.find("label").text().toLowerCase().indexOf(e)?t.show():t.hide()})},performAjaxSearch:function(t){var s=this;this.optionsContainer.addClass("cms-loading"),r.ajax({url:this.settings.searchUrl,method:"GET",data:{q:t},dataType:"json",success:function(t){var e=t;"object"==typeof t&&t.data?e=t.data:"object"==typeof t&&t.results&&(e=t.results),s.updateSearchResults(e||[]),s.optionsContainer.removeClass("cms-loading")},error:function(t,e,n){console.error("OneSelect: Search error",n),s.optionsContainer.removeClass("cms-loading"),s.settings.onLoadError&&s.settings.onLoadError.call(s,t,e,n)}})},updateSearchResults:function(t){this.optionsContainer.find('.cms-option:not([data-value="select-all"])').remove();var s=this;r.each(t,function(t,e){var n=s.isValueSelected(t),t=s.createOption(t,e,n);s.optionsContainer.append(t)}),this.updateSelectAllState()},attachEvents:function(){var e,i=this;function a(t){return t===document?"document":t===document.documentElement?"html":t===document.body?"body":t.tagName+"-"+(t.id||t.className||Math.random().toString(36).substr(2,9))}this.trigger.on("click",function(t){t.stopPropagation(),i.toggle()}),this.settings.showSearch&&(this.settings.searchUrl?(e=o(function(t){i.performAjaxSearch(t)},this.settings.searchDebounceDelay),this.searchInput.find(".cms-search-input").on("keyup",function(){var t=r(this).val();0<t.length?e(t):i.filterOptions("")})):this.searchInput.find(".cms-search-input").on("keyup",function(){var t=r(this).val().toLowerCase();i.filterOptions(t)})),r(window).on("resize.cms",function(){i.wrapper.hasClass("open")&&i.updateDropdownPosition()}),this.settings.closeOnScroll?r(window).on("scroll.cms",function(){i.wrapper.hasClass("open")&&i.close()}):r(window).on("scroll.cms",function(){i.wrapper.hasClass("open")&&i.updateDropdownPosition()}),r(document).on("wheel.onescroll",function(t){i.wrapper.hasClass("open")&&t.originalEvent&&0<Math.abs(t.originalEvent.deltaX)&&i.close()}),i._detectHorizontalScroll=function(){if(i.wrapper.hasClass("open"))if(window.scrollX!==i._lastWindowScrollX&&(i._lastWindowScrollX=window.scrollX,0<i._lastWindowScrollX))i.close();else for(var t=document.querySelectorAll("*"),e=0;e<t.length;e++){var n=t[e],s=a(n);if(void 0!==i._elementScrollPositions[s])if(n.scrollLeft!==i._elementScrollPositions[s])return void i.close()}},i._elementScrollPositions={},i._lastWindowScrollX=window.scrollX;var n,s=i.open.bind(i),t=(i.open=function(){i._elementScrollPositions={},i._lastWindowScrollX=window.scrollX;for(var t=document.querySelectorAll("*"),e=0;e<t.length;e++){var n=t[e];(n.scrollWidth>n.clientWidth||n.scrollHeight>n.clientHeight)&&(i._elementScrollPositions[a(n)]=n.scrollLeft)}i._horizontalScrollInterval&&clearInterval(i._horizontalScrollInterval),i._horizontalScrollInterval=setInterval(function(){i._detectHorizontalScroll()},50),s()},i.close.bind(i));i.close=function(){i._horizontalScrollInterval&&(clearInterval(i._horizontalScrollInterval),i._horizontalScrollInterval=null),i._elementScrollPositions={},t()},r(window).on("click.ones",function(t){!i.settings.closeOnOutside||!i.wrapper.hasClass("open")||0<(t=r(t.target)).closest(".cms-wrapper").length||0<t.closest(".cms-dropdown").length||(i.settings.submitOnOutside&&(i.updateTriggerText(),i.settings.onOk&&i.settings.onOk.call(i,i.getSelectedValues(),i.getSelectedLabels()),i.submitForm()),i.close())}),this.optionsContainer.on("click",".cms-option",function(t){var e=r(t.target);e.is('input[type="checkbox"]')||0<e.closest("label").length||0<e.closest("button").length||(t.preventDefault(),t.stopPropagation(),(e=r(this).find('input[type="checkbox"]')).prop("checked",!e.prop("checked")).trigger("change"))}),this.optionsContainer.on("change",'input[type="checkbox"]',function(t){t.stopPropagation();var t=r(this),e=t.closest(".cms-option");"select-all"===e.data("value")?i.handleSelectAll(t.prop("checked")):i.handleOptionChange(e)}),this.okBtn.on("click",function(t){t.stopPropagation(),i.handleOk()}),this.cancelBtn.on("click",function(t){t.stopPropagation(),i.handleCancel()}),this.settings.infinityScroll&&this.settings.ajax&&this.settings.ajax.url&&(n=o(function(){!i.hasNextPage||i.settings.loading||i.loadNextPage()},200),this.optionsContainer.on("scroll",function(){var t=r(this);t.scrollTop()+t.innerHeight()>=t[0].scrollHeight-50&&n()})),this.settings.infinityScroll&&this.settings.onInfinityScroll&&!this.settings.ajax&&console.warn("OneSelect: infinityScroll requires ajax configuration. onInfinityScroll callback is deprecated.")},handleOptionChange:function(t){var e=t.data("value");t.find('input[type="checkbox"]').prop("checked")?this.select(e):this.unselect(e),this.settings.onChange&&this.settings.onChange.call(this,this.getSelectedValues(),this.getSelectedLabels()),this.settings.onSelect&&this.settings.onSelect.call(this,this.getSelectedValues())},handleSelectAll:function(n){var s=this;n||Array.isArray(this.settings.value)&&(this.settings.value=[]),this.optionsContainer.find('.cms-option:not([data-value="select-all"])').each(function(){var t,e=r(this);e.find('input[type="checkbox"]').prop("checked",n),n?(e.addClass("selected"),t=e.find('input[type="checkbox"]').val(),Array.isArray(s.settings.value)&&!s.isValueSelected(t)&&s.settings.value.push(t)):e.removeClass("selected")}),this.updateSelectAllState(),this.updateTriggerText(),this.updateHiddenInputs(),this.updateDataValueAttribute()},updateSelectAllState:function(){var t=this.optionsContainer.find('.cms-option:not([data-value="select-all"]) input[type="checkbox"]'),e=t.filter(":checked"),t=t.length,e=e.length,n=this.optionsContainer.find('.cms-option[data-value="select-all"] input[type="checkbox"]');n.prop("indeterminate",!1),n.prop("checked",!1),0!==e&&(e===t&&0<t?n.prop("checked",!0):n.prop("indeterminate",!0))},getSelectedValues:function(){return Array.isArray(this.settings.value)?this.settings.value:[]},getSelectedLabels:function(){var t=[];return this.optionsContainer.find('.cms-option:not([data-value="select-all"]) input[type="checkbox"]:checked').siblings("label").each(function(){t.push(r(this).text())}),t},updateTriggerText:function(){var a,t=this.getSelectedLabels(),e=this.getSelectedValues(),n=this.settings.value?this.settings.value.length:0,o=this.trigger.find(".cms-selected-text");0===t.length?o.empty().text(this.settings.placeholder).addClass("cms-placeholder"):this.settings.showBadges?(o.empty().removeClass("cms-placeholder"),a=this,r.each(e,function(t,e){var n=r('<span class="cms-badge"></span>'),s=e,i=a.optionsContainer.find('.cms-option[data-value="'+a.htmlEncode(e)+'"]'),i=(i.length&&(s=i.find("label").text()),r("<span></span>").text(s)),s=r('<button type="button" class="cms-badge-remove">&times;</button>');s.on("click",function(t){t.stopPropagation(),a.unselect(e)}),n.append(i),n.append(s),o.append(n)})):(o.empty().removeClass("cms-placeholder"),o.text(n+" items selected")),this.updateExternalBadges(e,t)},updateExternalBadges:function(t,i){var a,o;this.settings.showBadgesExternal&&(0===(a=r("#"+this.settings.showBadgesExternal)).length?console.warn("OneSelect: External container not found - #"+this.settings.showBadgesExternal):(a.empty(),0!==t.length&&(o=this,r.each(t,function(t,e){var n=r('<span class="cms-badge"></span>'),t=r("<span></span>").text(i[t]),s=r('<button type="button" class="cms-badge-remove">&times;</button>');s.on("click",function(t){t.preventDefault(),t.stopPropagation(),o.unselect(e)}),n.append(t),n.append(s),a.append(n)}))))},toggle:function(){this.wrapper.hasClass("open")?this.close():this.open()},open:function(){r(".cms-wrapper.open").not(this.wrapper).removeClass("open"),r(".cms-dropdown.open").not(this.dropdown).removeClass("open"),this.updateDropdownPosition(),this.wrapper.addClass("open"),this.dropdown.addClass("open")},updateDropdownPosition:function(){var t=this.wrapper[0].getBoundingClientRect(),e=(this.wrapper.outerHeight(),this.wrapper.outerWidth());this.dropdown.css({position:"fixed",top:t.bottom+"px",left:t.left+"px",width:e+"px"})},close:function(){this.wrapper.removeClass("open"),this.dropdown.removeClass("open")},handleOk:function(){this.updateTriggerText();var t=this.getSelectedValues(),e=this.getSelectedLabels();this.settings.onOk&&this.settings.onOk.call(this,t,e),this.settings.submitForm&&this.submitForm(),this.updateDataValueAttribute(),this.close()},submitForm:function(){var t=null;if(this.settings.formId){if(0===(t=r("#"+this.settings.formId)).length)return void console.warn('OneSelect: Form with ID "'+this.settings.formId+'" not found')}else if(0===(t=this.$element.closest("form")).length)return void console.warn("OneSelect: No parent form found");t[0].submit()},handleCancel:function(){this.settings.value=[],this.optionsContainer.find('input[type="checkbox"]').prop("checked",!1),this.optionsContainer.find(".cms-option").removeClass("selected"),this.updateSelectAllState(),this.updateTriggerText(),this.updateHiddenInputs(),this.updateDataValueAttribute(),this.settings.onCancel&&this.settings.onCancel.call(this),this.settings.submitForm&&this.submitForm(),this.close()},setValue:function(t){this.settings.value=t||[],this.renderOptions(),this.updateTriggerText(),this.updateHiddenInputs(),this.updateDataValueAttribute()},getValue:function(){return this.getSelectedValues()},updateData:function(t){this.settings.data=t||[],this.settings.value=[],this.renderOptions(),this.updateTriggerText(),this.updateHiddenInputs(),this.updateDataValueAttribute()},loadData:function(t,n,s,i){var e,a,o=this,l=t||this.settings.ajax;l&&l.url?(this.settings.beforeLoad&&this.settings.beforeLoad.call(this),i||this.trigger.find(".cms-selected-text").text("Loading..."),t=r.extend(!0,{url:l.url,method:l.method||"GET",data:l.data||{},dataType:l.dataType||"json",success:function(t){var e=t;"object"==typeof t&&t.data?e=t.data:"object"==typeof t&&t.results&&(e=t.results),t&&void 0!==t.hasNextPage?o.hasNextPage=t.hasNextPage:o.hasNextPage=!1,t&&void 0!==t.currentPage&&(o.currentPage=t.currentPage),i?(o.settings.data=r.extend({},o.settings.data,e||{}),o.appendOptions(e||{})):(o.settings.data=e||[],o.renderOptions()),o.updateTriggerText(),o.settings.afterLoad&&o.settings.afterLoad.call(o,e,t),n&&n.call(o,e,t)},error:function(t,e,n){i||o.trigger.find(".cms-selected-text").text("Error loading data"),o.settings.onLoadError&&o.settings.onLoadError.call(o,t,e,n),s&&s.call(o,t,e,n)}},l),l.success&&(e=t.success,t.success=function(t){l.success(t),e(t)}),l.error&&(a=t.error,t.error=function(t,e,n){l.error(t,e,n),a(t,e,n)}),r.ajax(t)):console.error("OneSelect: Ajax configuration or url is missing")},loadNextPage:function(){var n=this,t=(this.settings.loading=!0,this.preloader.show(),r.extend(!0,{},this.settings.ajax));t.data=t.data||{},t.data.page=this.currentPage+1,this.loadData(t,function(t,e){n.settings.loading=!1,n.preloader.hide(),e.currentPage||n.currentPage++},function(){n.settings.loading=!1,n.preloader.hide()},!0)},reload:function(){this.settings.ajax?this.loadData():console.warn("OneSelect: No ajax configuration found")},select:function(t){var e=this.optionsContainer.find('.cms-option:not([data-value="select-all"]) input[type="checkbox"][value="'+this.htmlEncode(t)+'"]');e.length&&(e.prop("checked",!0),e.closest(".cms-option").addClass("selected")),Array.isArray(this.settings.value)&&!this.isValueSelected(t)&&this.settings.value.push(t),this.updateSelectAllState(),this.updateTriggerText(),this.updateHiddenInputs(),this.updateDataValueAttribute()},unselect:function(t){var e,n=this.optionsContainer.find('.cms-option:not([data-value="select-all"]) input[type="checkbox"][value="'+this.htmlEncode(t)+'"]');n.length&&(n.prop("checked",!1),n.closest(".cms-option").removeClass("selected")),Array.isArray(this.settings.value)&&(e=String(t).trim(),this.settings.value=this.settings.value.filter(function(t){return String(t).trim()!==e})),this.updateSelectAllState(),this.updateTriggerText(),this.updateHiddenInputs(),this.updateDataValueAttribute()},selectAll:function(){this.handleSelectAll(!0)},unselectAll:function(){this.handleSelectAll(!1)},toggleSelection:function(t){var e,n,s=this.optionsContainer.find('.cms-option:not([data-value="select-all"]) input[type="checkbox"][value="'+this.htmlEncode(t)+'"]');s.length&&(e=s.prop("checked"),s.prop("checked",!e),s=s.closest(".cms-option"),e?(s.removeClass("selected"),Array.isArray(this.settings.value)&&(n=String(t).trim(),this.settings.value=this.settings.value.filter(function(t){return String(t).trim()!==n}))):(s.addClass("selected"),Array.isArray(this.settings.value)&&!this.isValueSelected(t)&&this.settings.value.push(t)),this.updateSelectAllState(),this.updateTriggerText(),this.updateHiddenInputs())},getInstanceId:function(){return this.instanceId},destroy:function(){delete n[this.instanceId],r(window).off(".cms"),r(window).off(".ones"),r(document).off(".onescroll"),this.trigger.off(),this.okBtn.off(),this.cancelBtn.off(),this.optionsContainer.off(),this._horizontalScrollInterval&&(clearInterval(this._horizontalScrollInterval),this._horizontalScrollInterval=null),r('input.cms-hidden-input[data-cms-input="'+this.settings.name+'"]').remove(),this.wrapper.remove(),this.dropdown.remove(),this.$element.removeData(a)}},l.getInstance=function(t){return n[t]||null},l.getAllInstances=function(){return n},r.fn[a]=function(n){var s=arguments,i=this;return this.each(function(){var t=r(this),e=t.data(a);if(!e){if("object"!=typeof n&&n)return;e=new l(this,n),t.data(a,e)}"string"==typeof n&&("value"===n?i=void 0!==s[1]?(e.setValue(s[1]),t):e.getValue():"getValues"===n?i=e.getSelectedValues():"getLabels"===n?i=e.getSelectedLabels():"getInstanceId"===n?i=e.getInstanceId():"updateData"===n?e.updateData(s[1]):"loadData"===n?e.loadData(s[1],s[2],s[3]):"reload"===n?e.reload():"select"===n?e.select(s[1]):"unselect"===n?e.unselect(s[1]):"selectAll"===n?e.selectAll():"unselectAll"===n?e.unselectAll():"toggleSelection"===n?e.toggleSelection(s[1]):"open"===n?e.open():"close"===n?e.close():"destroy"===n&&e.destroy())}),i},r.fn[a].Constructor=l,r.fn[a].getInstance=l.getInstance,r.fn[a].getAllInstances=l.getAllInstances});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kamranbaylarov/one-select",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "A powerful, flexible, and feature-rich multi-select dropdown component for jQuery",
5
5
  "main": "js/one-select.js",
6
6
  "scripts": {