/** * jQuery asSelect v0.2.3 * https://github.com/amazingSurge/jquery-asSelect * * Copyright (c) amazingSurge * Released under the LGPL-3.0 license */ !function(e,t){if("function"==typeof define&&define.amd)define(["jquery"],t);else if("undefined"!=typeof exports)t(require("jquery"));else{var s={exports:{}};t(e.jQuery),e.jqueryAsSelectEs=s.exports}}(this,function(e){"use strict";function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var s=function(e){return e&&e.__esModule?e:{default:e}}(e),i=function(){function e(e,t){for(var s=0;s1&&void 0!==arguments[1]?arguments[1]:{};t(this,e),this.element=i,this.$select=(0,s.default)(i);var r=[];s.default.each(this.$select.data(),function(e,t){var s=new RegExp("^"+n,"i");s.test(e)&&(r[e.toLowerCase().replace(s,"")]=t)}),this.options=s.default.extend(!0,{},a,o,r),this.namespace=this.options.namespace,this.classes={wrapper:this.namespace+"-wrapper",old:this.namespace+"-old",dropdown:this.namespace+"-dropdown",trigger:this.namespace+"-trigger",label:this.namespace+"-label",handler:this.namespace+"-handler",item:this.namespace+"-item",group:this.namespace+"-group",mask:this.namespace+"-mask",skin:this.namespace+"_"+this.options.skin,open:this.namespace+"_open",disabled:this.namespace+"_disabled",selected:this.namespace+"_selected",focus:this.namespace+"_focus",loading:this.namespace+"_loading",error:this.namespace+"_error"},this.opened=!1,this.eventBinded=!1,this.inFocus=!0,this.currentIndex=this.options.select,this.isScroll=!1,this.last=0,this.disabled=!1,this.initialized=!1,this._trigger("init"),this.init()}return i(e,[{key:"init",value:function(){this.$wrapper=this.$select.wrap('
').parent().parent(),this.$trigger=(0,s.default)('
'),this.$label=(0,s.default)('
'+this.options.render.label()+"
").prependTo(this.$trigger),this.$dropdown=(0,s.default)('
'),this.$ul=this.$dropdown.children("ul"),this.$options=this.$select.find("option"),this.options.skin&&this.$wrapper.addClass(this.classes.skin),this.$select.prop("disabled")&&this.disable(),this.unChooseText=this.$label.text(),this.$dropdown.css("maxHeight",this.options.maxHeight),this.data=this.parse(this.$select.children()),this.update(!0),this.$wrapper.append(this.$trigger).append(this.$dropdown),this.attachInitEvent(),this.options.preload&&this.onLoad(),o.push(this),this.initialized=!0,this._trigger("ready")}},{key:"_trigger",value:function(e){for(var t=arguments.length,s=Array(t>1?t-1:0),i=1;i'+i.options.render.option.call(i,e)+""};s.default.each(e,function(e,n){n.group?(t+='
  • ',t+='
    '+i.options.render.group.call(i,n)+"
    ",t+="
      ",s.default.isArray(n.options)&&s.default.each(n.options,function(e,s){t+=a(s)}),t+="
    ",t+="
  • "):t+=a(n)}),i.$ul.html(t)}},{key:"freshOptions",value:function(e){var t=this,i="",a=function(e){return'"};s.default.isArray(e)&&s.default.each(e,function(e,t){t.group?(i+='',s.default.isArray(t.options)&&s.default.each(t.options,function(e,t){i+=a(t)}),i+=""):i+=a(t)}),t.$select.html(i)}},{key:"parse",value:function(e){var t=this,i=[],a=function(){return s.default.extend({},(0,s.default)(this).data(),{value:this.value,text:this.text,slug:t.replaceDiacritics(this.text)})};return e.each(function(){if("optgroup"===this.tagName.toLowerCase()){var e=s.default.extend({},(0,s.default)(this).data(),{group:!0,label:this.label,options:[]});(0,s.default)(this).children().each(function(){e.options.push(a.call(this))}),i.push(e)}else i.push(a.call(this))}),this.$options.each(function(e,i){(0,s.default)(i).prop("selected")&&(t.currentIndex=e)}),i}},{key:"update",value:function(e){this.render(this.data),!0!==e&&this.freshOptions(this.data),this.$items=this.$dropdown.find("."+this.classes.item),this.$options=this.$select.find("option"),this.total=this.$items.length,this.last=0,this.initialized&&(this.currentIndex=0),this.$wrapper.removeClass(this.classes.error),this.$dropdown.height()>this.$ul.outerHeight()?this.isScroll=!0:this.isScroll=!1,this.currentIndex>=0?this._set(this.currentIndex):this.$label.text(this.unChooseText)}},{key:"select",value:function(e){"number"==typeof e&&e>=0&&(this.isScroll&&this.scrollToVisibility(e),this._set(e))}},{key:"_set",value:function(e){var t=this.$items[e],i=(0,s.default)(t);this.last=this.currentIndex,this.currentIndex=e,this.$label.text(i.text()),this.$options.length&&(0,s.default)(this.$options[e]).prop("selected",!0),this.$items.removeClass(this.classes.selected),i.addClass(this.classes.selected),this.last!==this.currentIndex&&this._trigger("change",this.getCurrentData(e).value)}},{key:"getCurrentData",value:function(e){var t=0,i=null;return s.default.each(this.data,function(a,n){n.group?s.default.isArray(n.options)&&s.default.each(n.options,function(s,a){e+1===++t&&(i=a)}):e+1===++t&&(i=n)}),i}},{key:"getCurrentIndex",value:function(e){var t=0,i=0;return s.default.each(this.data,function(a,n){n.group?s.default.isArray(n.options)&&s.default.each(n.options,function(s,a){a.value===e&&(i=t),t++}):(n.value===e&&(i=t),t++)}),i}},{key:"get",value:function(){return this.getCurrentData(this.currentIndex).value}},{key:"replaceDiacritics",value:function(e){var t="40-46 50-53 54-57 62-70 71-74 61 47 77".replace(/\d+/g,"\\3$&").split(" "),s=!0,i=!1,a=void 0;try{for(var n,o=t[Symbol.iterator]();!(s=(n=o.next()).done);s=!0){var r=n.value;Object.hasOwnProperty.call(t,r)&&(e=e.toLowerCase().replace(new RegExp("["+t[r]+"]","g"),"aeiouncy".charAt(r)))}}catch(e){i=!0,a=e}finally{try{!s&&o.return&&o.return()}finally{if(i)throw a}}return e}},{key:"position",value:function(){var e=this.$trigger.outerHeight(!0),t=this.$trigger.offset(),i=this.$dropdown.outerHeight(!0),a=void 0;a=i+t.top>(0,s.default)(window).height()+(0,s.default)(window).scrollTop()?-i-parseInt(this.options.offset[0],10):e+parseInt(this.options.offset[0],10),this.$dropdown.css({top:a})}},{key:"attachInitEvent",value:function(){var e=this;"hover"===this.options.trigger?(this.$trigger.on("mouseenter.asSelect",function(){e.open()}),this.$wrapper.on("mouseleave.asSelect",function(){return e.close(),!1})):this.$trigger.on("click.asSelect",function(){e.opened?e.close():e.open()}),this.$select.on("focus.asSelect",function(){e.$wrapper.addClass(e.classes.focus),e.inFocus=!0}).on("blur",function(){e.$wrapper.removeClass(e.classes.focus),e.inFocus=!1}),this.$dropdown.on("click.asSelect","."+this.classes.item,function(){var t=e.$items.index((0,s.default)(this));e.select(t),e.close()})}},{key:"dettachInitEvents",value:function(){this.$trigger.off(".asSelect"),this.$wrap.off(".asSelect"),this.$select.off(".asSelect"),this.$dropdown.off(".asSelect")}},{key:"keyboardEvent",value:function(){var e=this;(0,s.default)(document).on("keydown.asSelect",function(t){var s=t.which||t.keycode;if(/^(9|13|27)$/.test(s))return e.close(),!1;if(s<37||s>40)e.isScroll&&e.search(s);else if(/^(38|40)$/.test(s)){var i=38===s?"up":"down";return e.navigate(i),!1}})}},{key:"search",value:function(e){var t="",i=void 0;clearTimeout(this.timeout),t=new RegExp("^"+(t+=String.fromCharCode(e)),"i"),this.timeout=setTimeout(function(){t=""},16),s.default.each(this.$items,function(e,a){var n=s.default.trim((0,s.default)(a).text());if(t.test(n))return i=e,!1}),i>=0&&this.select(i)}},{key:"scrollToVisibility",value:function(e){var t=this.$items[e],i=void 0,a=(0,s.default)(t).outerHeight(),n=this.$dropdown.scrollTop(),o=n+this.$dropdown.height(),r=(0,s.default)(t).position().top;if(ro-a))return;i=r+a-this.$dropdown.height()}this.$dropdown.scrollTop(i)}},{key:"navigate",value:function(e){var t=this.total,s=this.currentIndex<0?0:this.currentIndex;s="up"===e?s<=0?t-1:s-1:s>=t-1?0:s+1,this.select(s)}},{key:"_generateMask",value:function(){var e=this;"hover"!==this.options.trigger&&(this.$mask=(0,s.default)('
    ').appendTo(this.$wrapper),this.$mask.on("click.asSelect",function(){return e.close(),!1}))}},{key:"_clearMask",value:function(){"hover"!==this.options.trigger&&(this.$mask.off("click.asSelect"),this.$mask.remove(),this.$mask=null)}},{key:"open",value:function(){this.opened||this.disabled||(this.$select.focus(),this.closeAll(),this.$wrapper.addClass(this.classes.open),this._generateMask(),this.keyboardEvent(),this.position(),this._trigger("open"),this.opened=!0)}},{key:"close",value:function(){this.$wrapper.removeClass(this.classes.open),this._clearMask(),(0,s.default)(document).off("keydown.select"),this._trigger("close"),this.opened=!1}},{key:"closeAll",value:function(){s.default.each(o,function(e,t){t.opened&&t.close()})}},{key:"addData",value:function(e){var t=this;s.default.isArray(e)&&(s.default.each(e,function(s,i){i.group||(e[s].slug=t.replaceDiacritics(i.text))}),this.data=this.data.concat(e),this.update())}},{key:"removeData",value:function(e){return e}},{key:"enable",value:function(){return this.disabled=!1,this.$trigger.removeClass(this.classes.disabled),this._trigger("enable"),this}},{key:"disable",value:function(){return this.disabled=!0,this.$trigger.addClass(this.classes.disabled),this._trigger("disable"),this}},{key:"destroy",value:function(){this.dettachInitEvents(),(0,s.default)(document).off(".asSelect"),this.$dropdown.remove(),this.$trigger.remove(),this.$select.unwrap().unwrap(),this._trigger("destroy")}}],[{key:"setDefaults",value:function(e){s.default.extend(!0,a,s.default.isPlainObject(e)&&e)}}]),e}(),l={version:"0.2.3"},u=s.default.fn.asSelect,c=function(e){for(var t=arguments.length,i=Array(t>1?t-1:0),a=1;a