{"version":3,"sources":["ax5select.js","ax5select-tmpl.js"],"names":["UI","ax5","ui","U","util","SELECT","addClass","className","ax5select","self","this","cfg","instanceId","getGuid","config","theme","animateTime","lang","noSelected","noOptions","loading","multipleLabel","columnKeys","optionValue","optionText","optionSelected","queue","activeSelectOptionGroup","activeSelectQueueIndex","openTimer","closeTimer","waitOptionsCallback","keyUpTimer","xvar","$window","jQuery","window","ctrlKeys","18","8","17","46","40","35","187","27","36","45","37","189","34","33","13","39","16","9","38","91","onStateChanged","item","that","call","state","onChange","alignSelectDisplay","i","length","w","$display","Math","max","$select","outerWidth","number","minWidth","css","min-width","reset","find","line-height","height","alignSelectOptionGroup","append","pos","positionMargin","dim","pickerDim","pickerDirection","document","body","$target","offset","width","outerHeight","winWidth","winHeight","direction","top","newTop","left","onBodyClick","e","target","clickEl","findParentNode","getAttribute","get","val","id","index","gindex","undefined","trigger","focus","multiple","close","onBodyKeyup","keyCode","info","eventKeys","ESC","which","RETURN","optionFocusIndex","$option","attr","getLabel","queIdx","labels","isArray","selected","forEach","n","push","options","optgroup","data","label","mustache","render","syncLabel","$displayLabel","html","focusWord","searchWord","l","indexedOptions","value","toLowerCase","@findex","optionsSort","sort","search","a","b","focusMove","findex","_focusIndex","_prevFocusIndex","focusOptionEl","optionGroupScrollContainer","optionSelectedIndex","optionItemLength","removeClass","focusOptionElHeight","optionGroupScrollContainerHeight","innerHeight","optionGroupScrollContainerScrollTop","scrollTop","focusOptionElTop","position","bindSelectTarget","focusWordCall","debounce","$displayInput","selectEvent","click","clear","open","stopEvent","keyUp","SPACE","keyDown","DOWN","UP","blur","selectChange","extend","syncSelectOptions","name","tabIndex","formSize","size","tmpl","unbind","bind","setSelected","O","po","elementOptions","newOptions","focusIndex","OIndex","OO","OOIndex","text","join","toArray","option","getQueIdx","boundID","isString","console","log","getError","init","selectConfig","JSON","parse","stringify","isObject","error","parseJson","onExpand","optionsMap","_O","_OIndex","tryCount","isNumber","focusTop","selectedOptionEl","clearTimeout","setTimeout","waitOptions","stop","animate","event","update","_item","setOptions","getSelected","o","clearSelected","nn","processor","toString","arr","values","key","optionIndex","internal","removeAttr","remove","onClose","enable","disable","main","arguments","setConfig","apply","select","select_instance","fn","methodName","each","defaultConfig","optionGroupTmpl","selectTmpl","optionsTmpl","tmplName"],"mappings":"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","file":"ax5select.min.js","sourcesContent":["// ax5.ui.select\n(function () {\n\n let UI = ax5.ui,\n U = ax5.util,\n SELECT;\n\n UI.addClass({\n className: \"select\"\n }, (function () {\n /**\n * @class ax5select\n * @classdesc\n * @author tom@axisj.com\n */\n let ax5select = function () {\n let self = this,\n cfg;\n\n this.instanceId = ax5.getGuid();\n this.config = {\n theme: 'default',\n animateTime: 100,\n lang: {\n noSelected: '',\n noOptions: 'no options',\n loading: 'now loading..',\n multipleLabel: '\"{{label}}\"외 {{length}}건'\n },\n columnKeys: {\n optionValue: 'value',\n optionText: 'text',\n optionSelected: 'selected'\n }\n };\n this.queue = [];\n this.activeSelectOptionGroup = null;\n this.activeSelectQueueIndex = -1;\n this.openTimer = null;\n this.closeTimer = null;\n this.waitOptionsCallback = null;\n this.keyUpTimer = null;\n this.xvar = {};\n\n cfg = this.config;\n\n let $window = jQuery(window),\n ctrlKeys = {\n \"18\": \"KEY_ALT\",\n \"8\": \"KEY_BACKSPACE\",\n \"17\": \"KEY_CONTROL\",\n \"46\": \"KEY_DELETE\",\n \"40\": \"KEY_DOWN\",\n \"35\": \"KEY_END\",\n \"187\": \"KEY_EQUAL\",\n \"27\": \"KEY_ESC\",\n \"36\": \"KEY_HOME\",\n \"45\": \"KEY_INSERT\",\n \"37\": \"KEY_LEFT\",\n \"189\": \"KEY_MINUS\",\n \"34\": \"KEY_PAGEDOWN\",\n \"33\": \"KEY_PAGEUP\",\n // \"190\": \"KEY_PERIOD\",\n \"13\": \"KEY_RETURN\",\n \"39\": \"KEY_RIGHT\",\n \"16\": \"KEY_SHIFT\",\n // \"32\": \"KEY_SPACE\",\n \"9\": \"KEY_TAB\",\n \"38\": \"KEY_UP\",\n \"91\": \"KEY_WINDOW\"\n //\"107\" : \"NUMPAD_ADD\",\n //\"194\" : \"NUMPAD_COMMA\",\n //\"110\" : \"NUMPAD_DECIMAL\",\n //\"111\" : \"NUMPAD_DIVIDE\",\n //\"12\" : \"NUMPAD_EQUAL\",\n //\"106\" : \"NUMPAD_MULTIPLY\",\n //\"109\" : \"NUMPAD_SUBTRACT\"\n },\n onStateChanged = function (item, that) {\n if (item && item.onStateChanged) {\n item.onStateChanged.call(that, that);\n }\n else if (this.onStateChanged) {\n this.onStateChanged.call(that, that);\n }\n\n if (that.state == \"changeValue\") {\n if (item && item.onChange) {\n item.onChange.call(that, that);\n }\n else if (this.onChange) {\n this.onChange.call(that, that);\n }\n }\n\n item = null;\n that = null;\n return true;\n },\n alignSelectDisplay = function () {\n let i = this.queue.length, w;\n while (i--) {\n if (this.queue[i].$display) {\n w = Math.max(this.queue[i].$select.outerWidth(), U.number(this.queue[i].minWidth));\n this.queue[i].$display.css({\n \"min-width\": w\n });\n if (this.queue[i].reset) {\n this.queue[i].$display.find(\".addon-icon-reset\").css({\n \"line-height\": this.queue[i].$display.height() + \"px\"\n });\n }\n }\n }\n\n i = null;\n w = null;\n return this;\n },\n alignSelectOptionGroup = function (append) {\n if (!this.activeSelectOptionGroup) return this;\n\n let item = this.queue[this.activeSelectQueueIndex],\n pos = {}, positionMargin = 0,\n dim = {}, pickerDim = {},\n pickerDirection;\n\n if (append) jQuery(document.body).append(this.activeSelectOptionGroup);\n\n pos = item.$target.offset();\n dim = {\n width: item.$target.outerWidth(),\n height: item.$target.outerHeight()\n };\n pickerDim = {\n winWidth: Math.max($window.width(), jQuery(document.body).width()),\n winHeight: Math.max($window.height(), jQuery(document.body).height()),\n width: this.activeSelectOptionGroup.outerWidth(),\n height: this.activeSelectOptionGroup.outerHeight()\n };\n\n // picker css(width, left, top) & direction 결정\n if (!item.direction || item.direction === \"\" || item.direction === \"auto\") {\n // set direction\n pickerDirection = \"top\";\n\n if (pos.top - pickerDim.height - positionMargin < 0) {\n pickerDirection = \"top\";\n } else if (pos.top + dim.height + pickerDim.height + positionMargin > pickerDim.winHeight) {\n pickerDirection = \"bottom\";\n }\n } else {\n pickerDirection = item.direction;\n }\n // todo : 표현할 공간이 없다면..\n if (append) {\n this.activeSelectOptionGroup\n .addClass(\"direction-\" + pickerDirection);\n }\n this.activeSelectOptionGroup\n .css((function () {\n if (pickerDirection == \"top\") {\n if (pos.top + dim.height + pickerDim.height + positionMargin > pickerDim.winHeight) {\n\n var newTop = pos.top + dim.height / 2 - pickerDim.height / 2;\n if (newTop + pickerDim.height + positionMargin > pickerDim.winHeight) {\n newTop = 0;\n }\n if (newTop < 0) {\n newTop = 0;\n }\n\n return {\n left: pos.left,\n top: newTop,\n width: dim.width\n }\n }\n return {\n left: pos.left,\n top: pos.top + dim.height + 1,\n width: dim.width\n }\n }\n else if (pickerDirection == \"bottom\") {\n return {\n left: pos.left,\n top: pos.top - pickerDim.height - 1,\n width: dim.width\n }\n }\n }).call(this));\n },\n onBodyClick = function (e, target) {\n if (!this.activeSelectOptionGroup) return this;\n\n let item = this.queue[this.activeSelectQueueIndex],\n clickEl = \"display\";\n\n target = U.findParentNode(e.target, function (target) {\n if (target.getAttribute(\"data-option-value\") || target.getAttribute(\"data-option-value\") == \"\") {\n clickEl = \"optionItem\";\n return true;\n }\n else if (item.$target.get(0) == target) {\n clickEl = \"display\";\n return true;\n }\n });\n\n if (!target) {\n this.close();\n return this;\n }\n else if (clickEl === \"optionItem\") {\n this.val(item.id, {\n index: {\n gindex: target.getAttribute(\"data-option-group-index\"),\n index: target.getAttribute(\"data-option-index\")\n }\n }, undefined, \"internal\");\n item.$select.trigger(\"change\");\n item.$display.focus();\n if (!item.multiple) this.close();\n }\n else {\n //open and display click\n //console.log(this.instanceId);\n }\n\n return this;\n },\n onBodyKeyup = function (e) {\n if (e.keyCode == ax5.info.eventKeys.ESC) {\n this.close();\n }\n else if (e.which == ax5.info.eventKeys.RETURN) {\n if (this.queue[this.activeSelectQueueIndex].optionFocusIndex > -1) { // 아이템에 포커스가 활성화 된 후, 마우스 이벤트 이면 무시\n let $option = this.activeSelectOptionGroup.find('[data-option-focus-index=\"' + this.queue[this.activeSelectQueueIndex].optionFocusIndex + '\"]');\n this.val(this.queue[this.activeSelectQueueIndex].id, {\n index: {\n gindex: $option.attr(\"data-option-group-index\"),\n index: $option.attr(\"data-option-index\")\n }\n }, undefined, \"internal\");\n this.queue[this.activeSelectQueueIndex].$select.trigger(\"change\");\n if (!this.queue[this.activeSelectQueueIndex].multiple) this.close();\n } else {\n this.close();\n }\n }\n },\n getLabel = function (queIdx) {\n let item = this.queue[queIdx],\n labels = [];\n\n if (U.isArray(item.selected) && item.selected.length > 0) {\n item.selected.forEach(function (n) {\n if (n.selected) labels.push(n[item.columnKeys.optionText]);\n });\n }\n else {\n if (!item.multiple && item.options && item.options[0]) {\n if (item.options[0].optgroup) {\n labels[0] = item.options[0].options[0][item.columnKeys.optionText];\n }\n else {\n labels[0] = item.options[0][item.columnKeys.optionText];\n }\n }\n else {\n labels[0] = item.lang.noSelected;\n }\n }\n\n return (function () {\n if (item.multiple && labels.length > 1) {\n let data = {\n label: labels[0],\n length: labels.length - 1\n };\n return ax5.mustache.render(item.lang.multipleLabel, data);\n }\n else {\n return labels[0];\n }\n })();\n },\n syncLabel = function (queIdx) {\n this.queue[queIdx].$displayLabel\n .html(getLabel.call(this, queIdx));\n },\n focusWord = function (queIdx, searchWord) {\n let options = [], i = -1, l = this.queue[queIdx].indexedOptions.length - 1, n;\n if (searchWord) {\n while (l - i++) {\n n = this.queue[queIdx].indexedOptions[i];\n if (('' + n.value).toLowerCase() == searchWord.toLowerCase()) {\n options = [{'@findex': n['@findex'], optionsSort: 0}];\n break;\n } else {\n let sort = ('' + n.value).toLowerCase().search(searchWord.toLowerCase());\n if (sort > -1) {\n options.push({'@findex': n['@findex'], optionsSort: sort});\n if (options.length > 2) break;\n }\n sort = null;\n }\n }\n options.sort(function (a, b) {\n return a.optionsSort - b.optionsSort;\n });\n }\n if (options && options.length > 0) {\n focusMove.call(this, queIdx, undefined, options[0]['@findex']);\n }\n\n try {\n return options;\n } finally {\n options = null;\n i = null;\n l = null;\n n = null;\n }\n },\n focusMove = function (queIdx, direction, findex) {\n let _focusIndex,\n _prevFocusIndex,\n focusOptionEl,\n optionGroupScrollContainer;\n\n if (this.activeSelectOptionGroup && this.queue[queIdx].options && this.queue[queIdx].options.length > 0) {\n\n if (typeof findex !== \"undefined\") {\n _focusIndex = findex\n }\n else {\n _prevFocusIndex = (this.queue[queIdx].optionFocusIndex == -1) ? this.queue[queIdx].optionSelectedIndex || -1 : this.queue[queIdx].optionFocusIndex;\n if (_prevFocusIndex == -1) {\n _focusIndex = (direction > 0) ? 0 : this.queue[queIdx].optionItemLength - 1;\n }\n else {\n _focusIndex = _prevFocusIndex + direction;\n if (_focusIndex < 0) _focusIndex = 0;\n else if (_focusIndex > this.queue[queIdx].optionItemLength - 1) _focusIndex = this.queue[queIdx].optionItemLength - 1;\n }\n }\n\n this.queue[queIdx].optionFocusIndex = _focusIndex;\n\n this.activeSelectOptionGroup\n .find('[data-option-focus-index]')\n .removeClass(\"hover\");\n\n focusOptionEl = this.activeSelectOptionGroup\n .find('[data-option-focus-index=\"' + _focusIndex + '\"]')\n .addClass(\"hover\");\n\n optionGroupScrollContainer = this.activeSelectOptionGroup.find('[data-els=\"content\"]');\n\n let focusOptionElHeight = focusOptionEl.outerHeight(),\n optionGroupScrollContainerHeight = optionGroupScrollContainer.innerHeight(),\n optionGroupScrollContainerScrollTop = optionGroupScrollContainer.scrollTop(),\n focusOptionElTop = focusOptionEl.position().top + optionGroupScrollContainer.scrollTop();\n\n if (optionGroupScrollContainerHeight + optionGroupScrollContainerScrollTop < focusOptionElTop + focusOptionElHeight) {\n optionGroupScrollContainer.scrollTop(focusOptionElTop + focusOptionElHeight - optionGroupScrollContainerHeight);\n }\n else if (optionGroupScrollContainerScrollTop > focusOptionElTop) {\n optionGroupScrollContainer.scrollTop(focusOptionElTop);\n }\n // optionGroup scroll check\n }\n },\n bindSelectTarget = (function () {\n let focusWordCall = U.debounce(function (searchWord, queIdx) {\n focusWord.call(self, queIdx, searchWord);\n self.queue[queIdx].$displayInput.val('');\n }, 300);\n\n let selectEvent = {\n 'click': function (queIdx, e) {\n var target = U.findParentNode(e.target, function (target) {\n if (target.getAttribute(\"data-selected-clear\")) {\n //clickEl = \"clear\";\n return true;\n }\n });\n\n if (target) {\n this.val(queIdx, {clear: true});\n }\n else {\n if (self.activeSelectQueueIndex == queIdx) {\n if (this.queue[queIdx].optionFocusIndex == -1) { // 아이템에 포커스가 활성화 된 후, 마우스 이벤트 이면 무시\n self.close();\n }\n }\n else {\n self.open(queIdx);\n U.stopEvent(e);\n }\n }\n },\n 'keyUp': function (queIdx, e) {\n if (e.which == ax5.info.eventKeys.SPACE) {\n selectEvent.click.call(this, queIdx, e);\n }\n else if (!ctrlKeys[e.which]) {\n // 사용자 입력이 뜸해지면 찾고 검색 값 제거...\n focusWordCall(this.queue[queIdx].$displayInput.val(), queIdx);\n }\n },\n 'keyDown': function (queIdx, e) {\n if (e.which == ax5.info.eventKeys.DOWN) {\n focusMove.call(this, queIdx, 1);\n U.stopEvent(e);\n }\n else if (e.which == ax5.info.eventKeys.UP) {\n focusMove.call(this, queIdx, -1);\n U.stopEvent(e);\n }\n },\n 'blur': function (queIdx, e) {\n\n },\n 'selectChange': function (queIdx, e) {\n this.val(queIdx, this.queue[queIdx].$select.val(), true);\n }\n };\n return function (queIdx) {\n let item = this.queue[queIdx],\n data = {};\n\n // find selected\n item.selected = [];\n if(!item.options) item.options = [];\n item.options.forEach(function (n) {\n if (n[cfg.columnKeys.optionSelected]) item.selected.push(jQuery.extend({}, n));\n });\n\n if (!item.$display) {\n /// 템플릿에 전달할 오브젝트 선언\n data.instanceId = this.instanceId;\n data.id = item.id;\n data.name = item.name;\n data.theme = item.theme;\n data.tabIndex = item.tabIndex;\n data.multiple = item.multiple;\n data.reset = item.reset;\n\n data.label = getLabel.call(this, queIdx);\n data.formSize = (function () {\n return (item.size) ? \"input-\" + item.size : \"\";\n })();\n\n item.$display = SELECT.tmpl.get.call(this, \"tmpl\", data);\n item.$displayLabel = item.$display.find('[data-ax5select-display=\"label\"]');\n\n if (item.$target.find(\"select\").get(0)) {\n item.$select = item.$target.find(\"select\");\n // select 속성만 변경\n item.$select\n .attr(\"tabindex\", \"-1\")\n .attr(\"class\", \"form-control \" + data.formSize);\n if (data.name) {\n item.$select.attr(\"name\", \"name\");\n }\n if (data.multiple) {\n item.$select.attr(\"multiple\", \"multiple\");\n }\n }\n else {\n item.$select = SELECT.tmpl.get.call(this, \"selectTmpl\", data);\n item.$target.append(item.$select);\n // select append\n }\n\n item.$target.append(item.$display);\n item.$displayInput = item.$display.find('[data-ax5select-display=\"input\"]'); // 사용자 입력값을 받기위한 숨음 입력필드\n item.options = syncSelectOptions.call(this, queIdx, item.options);\n\n alignSelectDisplay.call(this);\n\n item.$displayInput\n .unbind(\"blur.ax5select\")\n .bind(\"blur.ax5select\", selectEvent.blur.bind(this, queIdx))\n .unbind('keyup.ax5select')\n .bind('keyup.ax5select', selectEvent.keyUp.bind(this, queIdx))\n .unbind(\"keydown.ax5select\")\n .bind(\"keydown.ax5select\", selectEvent.keyDown.bind(this, queIdx));\n }\n else {\n item.$displayLabel\n .html(getLabel.call(this, queIdx));\n item.options = syncSelectOptions.call(this, queIdx, item.options);\n\n alignSelectDisplay.call(this);\n }\n\n item.$display\n .unbind('click.ax5select')\n .bind('click.ax5select', selectEvent.click.bind(this, queIdx))\n .unbind('keyup.ax5select')\n .bind('keyup.ax5select', selectEvent.keyUp.bind(this, queIdx));\n\n // select 태그에 대한 change 이벤트 감시\n item.$select\n .unbind('change.ax5select')\n .bind('change.ax5select', selectEvent.selectChange.bind(this, queIdx));\n\n data = null;\n item = null;\n queIdx = null;\n return this;\n };\n })(),\n syncSelectOptions = (function () {\n let setSelected = function (queIdx, O) {\n if (!O) {\n this.queue[queIdx].selected = [];\n }\n else {\n if (this.queue[queIdx].multiple) this.queue[queIdx].selected.push(jQuery.extend({}, O));\n else this.queue[queIdx].selected[0] = jQuery.extend({}, O);\n }\n };\n\n return function (queIdx, options) {\n let item = this.queue[queIdx],\n po, elementOptions, newOptions, focusIndex = 0;\n\n setSelected.call(this, queIdx, false); // item.selected 초기화\n\n if (options) {\n item.options = options;\n item.indexedOptions = [];\n\n // select options 태그 생성\n po = [];\n item.options.forEach(function (O, OIndex) {\n if (O.optgroup) {\n\n O['@gindex'] = OIndex;\n O.options.forEach(function (OO, OOIndex) {\n OO['@index'] = OOIndex;\n OO['@findex'] = focusIndex;\n po.push('');\n if (OO[item.columnKeys.optionSelected]) {\n setSelected.call(self, queIdx, OO);\n }\n\n item.indexedOptions.push({\n '@findex': focusIndex, value: OO[item.columnKeys.optionValue], text: OO[item.columnKeys.optionText]\n });\n focusIndex++;\n });\n }\n else {\n O['@index'] = OIndex;\n O['@findex'] = focusIndex;\n po.push('');\n if (O[item.columnKeys.optionSelected]) {\n setSelected.call(self, queIdx, O);\n }\n\n item.indexedOptions.push({\n '@findex': focusIndex, value: O[item.columnKeys.optionValue], text: O[item.columnKeys.optionText]\n });\n focusIndex++;\n }\n });\n item.optionItemLength = focusIndex;\n item.$select.html(po.join(''));\n }\n else {\n /// select > options 태그로 스크립트 options를 만들어주는 역할\n elementOptions = U.toArray(item.$select.get(0).options);\n // select option 스크립트 생성\n newOptions = [];\n elementOptions.forEach(function (O, OIndex) {\n var option = {};\n //if (O.value != \"\") {\n option[item.columnKeys.optionValue] = O.value;\n option[item.columnKeys.optionText] = O.text;\n option[item.columnKeys.optionSelected] = O.selected;\n option['@index'] = OIndex;\n option['@findex'] = OIndex;\n if (O.selected) setSelected.call(self, queIdx, option);\n newOptions.push(option);\n //}\n option = null;\n });\n item.options = newOptions;\n item.indexedOptions = newOptions;\n }\n\n if (!item.multiple && item.selected.length == 0 && item.options && item.options[0]) {\n if (item.options[0].optgroup) {\n item.options[0].options[0][item.columnKeys.optionSelected] = true;\n item.selected.push(jQuery.extend({}, item.options[0].options[0]));\n }\n else {\n item.options[0][item.columnKeys.optionSelected] = true;\n item.selected.push(jQuery.extend({}, item.options[0]));\n }\n }\n\n po = null;\n elementOptions = null;\n newOptions = null;\n return item.options;\n }\n })(),\n getQueIdx = function (boundID) {\n if (!U.isString(boundID)) {\n boundID = jQuery(boundID).data(\"data-ax5select-id\");\n }\n if (!U.isString(boundID)) {\n console.log(ax5.info.getError(\"ax5select\", \"402\", \"getQueIdx\"));\n return;\n }\n return U.search(this.queue, function () {\n return this.id == boundID;\n });\n };\n /// private end\n\n /**\n * Preferences of select UI\n * @method ax5select.setConfig\n * @param {Object} config - 클래스 속성값\n * @returns {ax5select}\n * @example\n * ```js\n * var options = [];\n * for (var i = 0; i < 20; i++) {\n * options.push({value: i, text: \"optionText\" + i});\n * }\n\n * var mySelect = new ax5.ui.select({\n * theme: \"danger\"\n * });\n\n * mySelect.bind({\n * theme: \"primary\",\n * target: $('[data-ax5select=\"select1\"]'),\n * options: options,\n * onChange: function () {\n * console.log(this);\n * },\n * onClose: function () {\n * console.log(this);\n * },\n * onStateChanged: function () {\n * console.log(this);\n * }\n * });\n * ```\n */\n this.init = function () {\n this.onStateChanged = cfg.onStateChanged;\n this.onChange = cfg.onChange;\n\n jQuery(window).bind(\"resize.ax5select-display-\" + this.instanceId, (function () {\n alignSelectDisplay.call(this);\n }).bind(this));\n };\n\n /**\n * bind select\n * @method ax5select.bind\n * @param {Object} item\n * @param {String} [item.id]\n * @param {String} [item.theme]\n * @param {Boolean} [item.multiple]\n * @param {Element} item.target\n * @param {Object[]} item.options\n * @returns {ax5select}\n * @example\n * ```js\n * var mySelect = new ax5.ui.select();\n * mySelect.bind({\n * columnKeys: {\n * optionValue: \"value\",\n * optionText: \"text\"\n * },\n * target: $('[data-ax5select=\"select1\"]'),\n * options: [\n * {value: \"\", text: \"\"}\n * ],\n * onChange: function(){\n *\n * },\n * onClose: function(){\n *\n * },\n * onStateChanged: function(){\n *\n * }\n * });\n * ```\n */\n this.bind = function (item) {\n let selectConfig = {},\n queIdx;\n\n item = jQuery.extend(true, selectConfig, cfg, item);\n\n if (!item.target) {\n console.log(ax5.info.getError(\"ax5select\", \"401\", \"bind\"));\n return this;\n }\n\n item.$target = jQuery(item.target);\n\n if (!item.id) item.id = item.$target.data(\"data-ax5select-id\");\n if (!item.id) {\n item.id = 'ax5select-' + ax5.getGuid();\n item.$target.data(\"data-ax5select-id\", item.id);\n }\n item.name = item.$target.attr(\"data-ax5select\");\n\n if (item.options) {\n item.options = JSON.parse(JSON.stringify(item.options));\n }\n\n // target attribute data\n (function (data) {\n if (U.isObject(data) && !data.error) {\n item = jQuery.extend(true, item, data);\n }\n })(U.parseJson(item.$target.attr(\"data-ax5select-config\"), true));\n\n queIdx = U.search(this.queue, function () {\n return this.id == item.id;\n });\n\n if (queIdx === -1) {\n this.queue.push(item);\n bindSelectTarget.call(this, this.queue.length - 1);\n }\n else {\n this.queue[queIdx].selected = [];\n this.queue[queIdx].options = item.options;\n this.queue[queIdx] = jQuery.extend(true, {}, this.queue[queIdx], item);\n bindSelectTarget.call(this, queIdx);\n }\n\n selectConfig = null;\n queIdx = null;\n return this;\n };\n\n /**\n * open the optionBox of select\n * @method ax5select.open\n * @param {(String|Number|Element)} boundID\n * @param {Number} [tryCount]\n * @returns {ax5select}\n */\n this.open = (function () {\n\n let onExpand = function (item) {\n item.onExpand.call({\n self: this,\n item: item\n }, (function (O) {\n if (this.waitOptionsCallback) {\n var data = {};\n var item = this.queue[this.activeSelectQueueIndex];\n\n /// 현재 selected 검증후 처리\n (function (item, O) {\n var optionsMap = {};\n O.options.forEach(function (_O, _OIndex) {\n _O[\"@index\"] = _OIndex;\n optionsMap[_O[item.columnKeys.optionValue]] = _O;\n });\n if (U.isArray(item.selected)) {\n item.selected.forEach(function (_O) {\n if (optionsMap[_O[item.columnKeys.optionValue]]) {\n O.options[optionsMap[_O[item.columnKeys.optionValue]][\"@index\"]][item.columnKeys.optionSelected] = true;\n }\n });\n }\n })(item, O);\n\n\n item.$displayLabel\n .html(getLabel.call(this, this.activeSelectQueueIndex));\n item.options = syncSelectOptions.call(this, this.activeSelectQueueIndex, O.options);\n\n alignSelectDisplay.call(this);\n\n /// 템플릿에 전달할 오브젝트 선언\n data.id = item.id;\n data.theme = item.theme;\n data.size = \"ax5select-option-group-\" + item.size;\n data.multiple = item.multiple;\n data.lang = item.lang;\n data.options = item.options;\n this.activeSelectOptionGroup.find('[data-els=\"content\"]').html(SELECT.tmpl.get.call(this, \"optionsTmpl\", data, item.columnKeys));\n }\n }).bind(this));\n };\n\n return function (boundID, tryCount) {\n this.waitOptionsCallback = null;\n\n /**\n * open select from the outside\n */\n let queIdx = (U.isNumber(boundID)) ? boundID : getQueIdx.call(this, boundID),\n item = this.queue[queIdx],\n data = {}, focusTop, selectedOptionEl;\n\n if (item.$display.attr(\"disabled\")) return this;\n\n if (this.openTimer) clearTimeout(this.openTimer);\n if (this.activeSelectOptionGroup) {\n if (this.activeSelectQueueIndex == queIdx) {\n return this;\n }\n\n if (tryCount > 2) return this;\n this.close();\n this.openTimer = setTimeout((function () {\n this.open(queIdx, (tryCount || 0) + 1);\n }).bind(this), cfg.animateTime);\n\n return this;\n }\n\n item.optionFocusIndex = -1; // optionGroup이 열리면 포커스 인덱스 초기화 -1로\n if (item.selected && item.selected.length > 0) {\n item.optionSelectedIndex = item.selected[0][\"@findex\"];\n }\n\n /// 템플릿에 전달할 오브젝트 선언\n data.id = item.id;\n data.theme = item.theme;\n data.size = \"ax5select-option-group-\" + item.size;\n data.multiple = item.multiple;\n\n data.lang = item.lang;\n item.$display.attr(\"data-select-option-group-opened\", \"true\");\n //console.log(data.lang);\n\n if (item.onExpand) {\n // onExpand 인 경우 UI 대기모드 추가\n data.waitOptions = true;\n }\n\n data.options = item.options;\n this.activeSelectOptionGroup = SELECT.tmpl.get.call(this, \"optionGroupTmpl\", data);\n this.activeSelectOptionGroup.find('[data-els=\"content\"]').html(SELECT.tmpl.get.call(this, \"optionsTmpl\", data, item.columnKeys));\n this.activeSelectQueueIndex = queIdx;\n\n alignSelectOptionGroup.call(this, \"append\"); // alignSelectOptionGroup 에서 body append\n jQuery(window).bind(\"resize.ax5select-\" + this.instanceId, (function () {\n alignSelectOptionGroup.call(this);\n }).bind(this));\n\n if (item.selected && item.selected.length > 0) {\n selectedOptionEl = this.activeSelectOptionGroup.find('[data-option-index=\"' + item.selected[0][\"@index\"] + '\"]');\n\n if (selectedOptionEl.get(0)) {\n focusTop = selectedOptionEl.position().top - this.activeSelectOptionGroup.height() / 3;\n this.activeSelectOptionGroup.find('[data-els=\"content\"]')\n .stop().animate({scrollTop: focusTop}, item.animateTime, 'swing', function () {\n });\n }\n }\n\n /// 사용자 입력으로 옵션을 검색하기 위한 시나리오\n // 옵션그룹이 활성화 되면 사용자 입력을 받기위한 input 값 초기화 및 포커스 다른 select가 닫히면서 display focus 이벤트와 충돌하는 문제가 있으므로\n // 1밀리세컨 지연후 포커스 처리. input에 포커스가 되므로 input value로 options를 검색 할 수 있게 됩니다.\n item.$displayInput.val('');\n\n setTimeout((function () {\n item.$displayInput.trigger(\"focus\");\n\n jQuery(window).bind(\"keyup.ax5select-\" + this.instanceId, (function (e) {\n e = e || window.event;\n onBodyKeyup.call(this, e);\n U.stopEvent(e);\n }).bind(this));\n\n jQuery(window).bind(\"click.ax5select-\" + this.instanceId, (function (e) {\n e = e || window.event;\n onBodyClick.call(this, e);\n U.stopEvent(e);\n }).bind(this));\n\n }).bind(this), 300);\n\n onStateChanged.call(this, item, {\n self: this,\n state: \"open\",\n item: item\n });\n\n // waitOption timer\n if (item.onExpand) {\n this.waitOptionsCallback = true;\n onExpand.call(this, item);\n }\n\n data = null;\n focusTop = null;\n selectedOptionEl = null;\n return this;\n }\n })();\n\n /**\n * @method ax5select.update\n * @param {(Object|String)} item\n * @returns {ax5select}\n */\n this.update = function (_item) {\n this.bind(_item);\n return this;\n };\n\n /**\n * @method ax5select.setOptions\n * @param boundID\n * @param options\n * @returns {ax5select}\n */\n this.setOptions = function (boundID, options) {\n let queIdx = getQueIdx.call(this, boundID);\n this.queue[queIdx].selected = [];\n this.queue[queIdx].options = options;\n bindSelectTarget.call(this, queIdx);\n return this;\n };\n\n /**\n * @method ax5select.val\n * @param {(String|Number|Element)} boundID\n * @param {(String|Object|Array)} [value]\n * @param {Boolean} [selected]\n * @returns {ax5select}\n */\n this.val = (function () {\n\n // todo : val 함수 리팩토링 필요\n let getSelected = function (_item, o, selected) {\n if (typeof selected === \"undefined\") {\n return (_item.multiple) ? !o : true;\n } else {\n return selected;\n }\n },\n clearSelected = function (queIdx) {\n this.queue[queIdx].options.forEach(function (n) {\n if (n.optgroup) {\n n.options.forEach(function (nn) {\n nn.selected = false;\n });\n }\n else {\n n.selected = false;\n }\n });\n },\n processor = {\n 'index': function (queIdx, value, selected) {\n // 클래스 내부에서 호출된 형태, 그런 이유로 옵션그룹에 대한 상태를 변경 하고 있다.\n let item = this.queue[queIdx];\n\n /*\n if (U.isArray(value.index)) {\n value.index.forEach(function (n) {\n item.options[n][item.columnKeys.optionSelected] = getSelected(item, item.options[n][item.columnKeys.optionSelected], selected);\n self.activeSelectOptionGroup\n .find('[data-option-index=\"' + n + '\"]')\n .attr(\"data-option-selected\", item.options[n][item.columnKeys.optionSelected].toString());\n });\n }\n else {\n }\n */\n if (U.isString(value.index.gindex)) {\n item.options[value.index.gindex].options[value.index.index][item.columnKeys.optionSelected] = getSelected(item, item.options[value.index.gindex].options[value.index.index][item.columnKeys.optionSelected], selected);\n self.activeSelectOptionGroup\n .find('[data-option-group-index=\"' + value.index.gindex + '\"][data-option-index=\"' + value.index.index + '\"]')\n .attr(\"data-option-selected\", item.options[value.index.gindex].options[value.index.index][item.columnKeys.optionSelected].toString());\n }\n else {\n item.options[value.index.index][item.columnKeys.optionSelected] = getSelected(item, item.options[value.index.index][item.columnKeys.optionSelected], selected);\n self.activeSelectOptionGroup\n .find('[data-option-index=\"' + value.index.index + '\"]')\n .attr(\"data-option-selected\", item.options[value.index.index][item.columnKeys.optionSelected].toString());\n\n }\n\n syncSelectOptions.call(this, queIdx, item.options);\n syncLabel.call(this, queIdx);\n alignSelectOptionGroup.call(this);\n },\n 'arr': function (queIdx, values, selected) {\n values.forEach(function (value) {\n if (U.isString(value) || U.isNumber(value)) {\n processor.value.call(self, queIdx, value, selected);\n }\n else {\n for (var key in processor) {\n if (value[key]) {\n processor[key].call(self, queIdx, value, selected);\n break;\n }\n }\n }\n });\n },\n 'value': function (queIdx, value, selected) {\n let item = this.queue[queIdx],\n optionIndex = U.search(item.options, function () {\n return this[item.columnKeys.optionValue] == value;\n });\n if (optionIndex > -1) {\n item.options[optionIndex][item.columnKeys.optionSelected] = getSelected(item, item.options[optionIndex][item.columnKeys.optionSelected], selected);\n }\n else {\n console.log(ax5.info.getError(\"ax5select\", \"501\", \"val\"));\n return;\n }\n\n syncSelectOptions.call(this, queIdx, item.options);\n syncLabel.call(this, queIdx);\n },\n 'text': function (queIdx, value, selected) {\n let item = this.queue[queIdx],\n optionIndex = U.search(item.options, function () {\n return this[item.columnKeys.optionText] == value;\n });\n if (optionIndex > -1) {\n item.options[optionIndex][item.columnKeys.optionSelected] = getSelected(item, item.options[optionIndex][item.columnKeys.optionSelected], selected);\n }\n else {\n console.log(ax5.info.getError(\"ax5select\", \"501\", \"val\"));\n return;\n }\n\n syncSelectOptions.call(this, queIdx, item.options);\n syncLabel.call(this, queIdx);\n },\n 'clear': function (queIdx) {\n clearSelected.call(this, queIdx);\n syncSelectOptions.call(this, queIdx, this.queue[queIdx].options);\n syncLabel.call(this, queIdx);\n\n if (this.activeSelectOptionGroup) {\n this.activeSelectOptionGroup\n .find('[data-option-index]')\n .attr(\"data-option-selected\", \"false\");\n }\n }\n };\n\n return function (boundID, value, selected, internal) {\n let queIdx = (U.isNumber(boundID)) ? boundID : getQueIdx.call(this, boundID);\n if (!this.queue[queIdx]) {\n return this;\n }\n if (typeof value !== \"undefined\" && !this.queue[queIdx].multiple) {\n clearSelected.call(this, queIdx);\n }\n\n if (typeof value == \"undefined\") {\n return this.queue[queIdx].selected;\n }\n else if (U.isArray(value)) {\n processor.arr.call(this, queIdx, value, selected);\n }\n else if (U.isString(value) || U.isNumber(value)) {\n processor.value.call(this, queIdx, value, selected);\n }\n else {\n if (value === null) {\n processor.clear.call(this, queIdx);\n }\n else {\n for (var key in processor) {\n if (value[key]) {\n processor[key].call(this, queIdx, value, selected);\n break;\n }\n }\n }\n }\n\n if (typeof value !== \"undefined\") {\n onStateChanged.call(this, this.queue[queIdx], {\n self: this,\n item: this.queue[queIdx],\n state: (internal) ? \"changeValue\" : \"setValue\",\n value: this.queue[queIdx].selected,\n internal: internal\n });\n }\n\n boundID = null;\n return this;\n };\n })();\n\n /**\n * @method ax5select.close\n * @returns {ax5select}\n */\n this.close = function (item) {\n if (this.closeTimer) clearTimeout(this.closeTimer);\n if (!this.activeSelectOptionGroup) return this;\n\n item = this.queue[this.activeSelectQueueIndex];\n item.optionFocusIndex = -1;\n\n item.$displayInput.val('').trigger(\"blur\");\n item.$display.removeAttr(\"data-select-option-group-opened\").trigger(\"focus\");\n\n this.activeSelectOptionGroup.addClass(\"destroy\");\n\n jQuery(window)\n .unbind(\"resize.ax5select-\" + this.instanceId)\n .unbind(\"click.ax5select-\" + this.instanceId)\n .unbind(\"keyup.ax5select-\" + this.instanceId);\n\n this.closeTimer = setTimeout((function () {\n if (this.activeSelectOptionGroup) this.activeSelectOptionGroup.remove();\n this.activeSelectOptionGroup = null;\n this.activeSelectQueueIndex = -1;\n\n var that = {\n self: this,\n item: item,\n value: item.selected,\n state: \"close\"\n };\n\n onStateChanged.call(this, item, that);\n\n // waitOption timer\n if (item.onClose) {\n item.onClose.call(that);\n }\n }).bind(this), cfg.animateTime);\n this.waitOptionsCallback = null;\n return this;\n };\n\n this.enable = function (boundID) {\n let queIdx = getQueIdx.call(this, boundID);\n this.queue[queIdx].$display.removeAttr(\"disabled\");\n this.queue[queIdx].$select.removeAttr(\"disabled\");\n\n onStateChanged.call(this, this.queue[queIdx], {\n self: this,\n state: \"enable\"\n });\n\n return this;\n };\n\n this.disable = function (boundID) {\n let queIdx = getQueIdx.call(this, boundID);\n this.queue[queIdx].$display.attr(\"disabled\", \"disabled\");\n this.queue[queIdx].$select.attr(\"disabled\", \"disabled\");\n\n onStateChanged.call(this, this.queue[queIdx], {\n self: this,\n state: \"disable\"\n });\n\n return this;\n };\n\n // 클래스 생성자\n this.main = (function () {\n if (arguments && U.isObject(arguments[0])) {\n this.setConfig(arguments[0]);\n }\n else {\n this.init();\n }\n }).apply(this, arguments);\n };\n return ax5select;\n })());\n SELECT = ax5.ui.select;\n})();\n\nax5.ui.select_instance = new ax5.ui.select();\njQuery.fn.ax5select = (function () {\n return function (config) {\n if (ax5.util.isString(arguments[0])) {\n let methodName = arguments[0];\n\n switch (methodName) {\n case \"open\":\n return ax5.ui.select_instance.open(this);\n break;\n case \"close\":\n return ax5.ui.select_instance.close(this);\n break;\n case \"setValue\":\n return ax5.ui.select_instance.val(this, arguments[1], arguments[2]);\n break;\n case \"getValue\":\n return ax5.ui.select_instance.val(this);\n break;\n case \"enable\":\n return ax5.ui.select_instance.enable(this);\n break;\n case \"disable\":\n return ax5.ui.select_instance.disable(this);\n break;\n case \"setOptions\":\n return ax5.ui.select_instance.setOptions(this, arguments[1]);\n break;\n default:\n return this;\n }\n }\n else {\n if (typeof config == \"undefined\") config = {};\n jQuery.each(this, function () {\n let defaultConfig = {\n target: this\n };\n config = jQuery.extend({}, config, defaultConfig);\n ax5.ui.select_instance.bind(config);\n });\n }\n return this;\n }\n\n})();\n\n\n// muliple 속성이 없는 select의 기본 선택 해제 방법.. 결정 필요..\n// onExpand 가 있으면..?","// ax5.ui.select.tmpl\n(function () {\n\n var SELECT = ax5.ui.select;\n\n var optionGroupTmpl = function (columnKeys) {\n return `\n