{"version":3,"sources":["selectfield.js"],"names":["MaterialSelectfield","element","this","element_","setDefaults_","init","window","prototype","CssClasses_","LABEL","SELECT","SELECTED_BOX","SELECTED_BOX_VALUE","LIST_OPTION_BOX","IS_DIRTY","IS_FOCUSED","IS_DISABLED","IS_INVALID","IS_UPGRADED","IS_SELECTED","Keycodes_","ENTER","ESCAPE","SPACE","UP_ARROW","DOWN_ARROW","options_","optionsMap_","optionsArr_","closing_","keyDownTimerId_","observer_","onFocus_","event","show_","onBlur_","hide_","fireEventChange_","evt","Event","bubbles","cancelable","document","createEvent","initEvent","select_","dispatchEvent","onSelected_","target","nodeName","option","getAttribute","disabled","stopPropagation","selectedOptionValue_","textContent","selected","classList","add","selectedItem","listOptionBox_","querySelector","remove","onClick_","toggle","update_","itemSelected","length","i","item","value","querySelectorAll","checkDisabled","checkValidity","validity","valid","disable","enable","isDescendant_","parent","child","node","parentNode","contains","strSearch_","parentElement","scrollTop","offsetTop","boundKeyDownHandler_","onKeyDown_","bind","boundClickDocHandler_","e","selectedOption_","addEventListener","items","currentIndex","Array","slice","call","indexOf","keyCode","preventDefault","lastSelectedItem_","ev","initMouseEvent","MouseEvent","body","click","validKeyCode_","charCode","which","String","fromCharCode","clearTimeout","setTimeout","ind","searchByStrIndex_","key","srchStr","isPresent","RegExp","indx","arr","test","keycode","removeEventListener","label_","selectedOption","createElement","tabIndex","iconContainer","icon","appendChild","invalid","makeElements_","boundClickHandler","boundFocusHandler","boundBlurHandler","refreshOptions","mdlDowngrade_","clearElements_","style","opacity","zIndex","listOptionBox","ul","liHTML","itemText","toUpperCase","replace","liClass","push","innerHTML","MutationObserver","mutations","forEach","mutation","type","observe","attributes","childList","characterData","removeChild","removeAttribute","disconnect","mdlDowngrade","change_","change","componentHandler","register","constructor","classAsString","cssClass","widget"],"mappings":"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","file":"mdl-selectfield.min.js","sourcesContent":["(function () {\n 'use strict';\n\n var MaterialSelectfield = function MaterialSelectfield(element) {\n this.element_ = element;\n this.setDefaults_();\n // Initialize instance.\n this.init();\n };\n window['MaterialSelectfield'] = MaterialSelectfield;\n\n MaterialSelectfield.prototype.CssClasses_ = {\n LABEL: 'mdl-selectfield__label',\n SELECT: 'mdl-selectfield__select',\n SELECTED_BOX: 'mdl-selectfield__box',\n SELECTED_BOX_VALUE: 'mdl-selectfield__box-value',\n LIST_OPTION_BOX: 'mdl-selectfield__list-option-box',\n IS_DIRTY: 'is-dirty',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_INVALID: 'is-invalid',\n IS_UPGRADED: 'is-upgraded',\n IS_SELECTED: 'is-selected'\n };\n\n MaterialSelectfield.prototype.Keycodes_ = {\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32,\n UP_ARROW: 38,\n DOWN_ARROW: 40\n };\n\n MaterialSelectfield.prototype.setDefaults_ = function () {\n this.options_ = [];\n this.optionsMap_ = {};\n this.optionsArr_ = [];\n this.closing_ = true;\n this.keyDownTimerId_ = null;\n this.observer_ = null;\n };\n\n MaterialSelectfield.prototype.onFocus_ = function (event) {\n this.closing_ && this.show_(event);\n };\n\n MaterialSelectfield.prototype.onBlur_ = function (event) {\n !this.closing_ && this.hide_();\n };\n\n MaterialSelectfield.prototype.fireEventChange_ = function () {\n var evt;\n\n if (typeof window.Event === 'function') {\n evt = new Event('change', {\n bubbles: true\n ,cancelable: true\n });\n } else if (typeof document.createEvent === 'function') {\n evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', true, true);\n }\n evt && this.select_.dispatchEvent(evt);\n };\n\n MaterialSelectfield.prototype.onSelected_ = function (event) { \n if(event.target && event.target.nodeName === 'LI') {\n var option = this.options_[event.target.getAttribute('data-value')];\n\n if(option.disabled) {\n event.stopPropagation();\n return false;\n }\n\n this.selectedOptionValue_.textContent = option.textContent;\n option.selected = true;\n\n //fire event change\n this.fireEventChange_();\n\n if(option.textContent !== '') {\n this.element_.classList.add(this.CssClasses_.IS_DIRTY);\n var selectedItem = this.listOptionBox_.querySelector('.' + this.CssClasses_.IS_SELECTED);\n selectedItem && selectedItem.classList.remove(this.CssClasses_.IS_SELECTED);\n event.target.classList.add(this.CssClasses_.IS_SELECTED);\n }\n else {\n this.element_.classList.remove(this.CssClasses_.IS_DIRTY);\n var selectedItem = this.listOptionBox_.querySelector('.' + this.CssClasses_.IS_SELECTED);\n selectedItem && selectedItem.classList.remove(this.CssClasses_.IS_SELECTED);\n }\n }\n };\n\n MaterialSelectfield.prototype.onClick_ = function (event) {\n this.toggle(event);\n };\n\n MaterialSelectfield.prototype.update_ = function () {\n var itemSelected = false;\n\n if(this.options_ && this.options_.length > 0) {\n for (var i = 0; i < this.options_.length; i++) {\n var item = this.options_[i];\n if (item.selected && item.value !== \"\") {\n itemSelected = true;\n this.element_.classList.add(this.CssClasses_.IS_DIRTY);\n this.listOptionBox_.querySelector('.' + this.CssClasses_.IS_SELECTED).classList.remove(this.CssClasses_.IS_SELECTED);\n this.listOptionBox_.querySelectorAll('LI')[i].classList.add(this.CssClasses_.IS_SELECTED);\n }\n }\n }\n\n if(!itemSelected) {\n this.element_.classList.remove(this.CssClasses_.IS_DIRTY);\n }\n\n this.checkDisabled();\n this.checkValidity();\n };\n\n MaterialSelectfield.prototype.checkValidity = function() {\n if (this.select_.validity) {\n if (this.select_.validity.valid) {\n this.element_.classList.remove(this.CssClasses_.IS_INVALID);\n } else {\n this.element_.classList.add(this.CssClasses_.IS_INVALID);\n }\n }\n };\n MaterialSelectfield.prototype['checkValidity'] =\n MaterialSelectfield.prototype.checkValidity;\n\n MaterialSelectfield.prototype.checkDisabled = function() {\n if (this.select_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n };\n MaterialSelectfield.prototype['checkDisabled'] =\n MaterialSelectfield.prototype.checkDisabled;\n\n /**\n * Disable select field.\n *\n * @public\n */\n MaterialSelectfield.prototype.disable = function() {\n this.select_.disabled = true;\n this.update_();\n };\n MaterialSelectfield.prototype['disable'] = MaterialSelectfield.prototype.disable;\n\n /**\n * Enable select field.\n *\n * @public\n */\n MaterialSelectfield.prototype.enable = function() {\n this.select_.disabled = false;\n this.update_();\n };\n MaterialSelectfield.prototype['enable'] = MaterialSelectfield.prototype.enable;\n\n MaterialSelectfield.prototype.isDescendant_ = function (parent, child) {\n var node = child.parentNode;\n while (node !== null) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n\n MaterialSelectfield.prototype.toggle = function (event) {\n if(!this.element_.classList.contains(this.CssClasses_.IS_FOCUSED)) {\n this.show_(event)\n }\n else if(event.target && event.target.nodeName === 'LI' && this.isDescendant_(this.listOptionBox_, event.target)) {\n this.onSelected_(event)\n }\n else {\n this.hide_()\n }\n };\n\n MaterialSelectfield.prototype.show_ = function(event) {\n this.checkDisabled();\n if(this.element_.classList.contains(this.CssClasses_.IS_DISABLED)) return;\n\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n this.closing_ = false;\n this.strSearch_ = \"\";\n\n var selectedItem = this.listOptionBox_ && this.listOptionBox_.querySelector('.' + this.CssClasses_.IS_SELECTED);\n if(selectedItem) selectedItem.parentElement.parentElement.scrollTop = selectedItem.offsetTop;\n\n this.boundKeyDownHandler_ = this.onKeyDown_.bind(this);\n this.boundClickDocHandler_ = function(e) { \n if (e !== event && !this.closing_ && !(e.target.parentNode === this.element_ || e.target.parentNode === this.selectedOption_) ) {\n this.hide_();\n }\n }.bind(this);\n\n document.addEventListener('keydown', this.boundKeyDownHandler_);\n document.addEventListener('click', this.boundClickDocHandler_);\n };\n\n MaterialSelectfield.prototype.onKeyDown_ = function(evt) {\n var items = this.listOptionBox_.querySelectorAll('li:not([disabled])');\n\n if (items && items.length > 0 && !this.closing_) {\n var currentIndex = Array.prototype.slice.call(items).indexOf(this.listOptionBox_.querySelectorAll('.' + this.CssClasses_.IS_SELECTED)[0]);\n var selectedItem;\n\n if(evt.keyCode === this.Keycodes_.UP_ARROW || evt.keyCode === this.Keycodes_.DOWN_ARROW) {\n if(currentIndex !== -1) {\n items[currentIndex].classList.remove(this.CssClasses_.IS_SELECTED);\n }\n\n if (evt.keyCode === this.Keycodes_.UP_ARROW) {\n evt.preventDefault();\n if (currentIndex > 0) {\n selectedItem = items[currentIndex - 1];\n } else {\n selectedItem = items[items.length - 1];\n }\n } else {\n evt.preventDefault();\n if (items.length > currentIndex + 1) {\n selectedItem = items[currentIndex + 1];\n } else {\n selectedItem = items[0];\n }\n }\n\n if(selectedItem) {\n selectedItem.classList.add(this.CssClasses_.IS_SELECTED);\n this.listOptionBox_.scrollTop = selectedItem.offsetTop;\n this.lastSelectedItem_ = selectedItem;\n }\n }\n else if ((evt.keyCode === this.Keycodes_.SPACE || evt.keyCode === this.Keycodes_.ENTER) && this.lastSelectedItem_) {\n evt.preventDefault();\n // Send mousedown and mouseup to trigger ripple.\n var ev;\n\n if(document.createEvent) {\n ev = document.createEvent(\"MouseEvent\");\n ev.initMouseEvent(\"click\",true,true,window,0,0,0,0,0,false,false,false,false,0,null);\n }\n else {\n ev = new MouseEvent(\"mousedown\");\n }\n this.lastSelectedItem_.dispatchEvent(ev);\n if(!document.createEvent) {\n ev = new MouseEvent('mouseup');\n this.lastSelectedItem_.dispatchEvent(ev);\n }\n // Send click.\n //this.lastSelectedItem_.click();\n }\n else if (evt.keyCode === this.Keycodes_.ESCAPE) {\n evt.preventDefault();\n var ev;\n\n if(document.createEvent) {\n ev = document.createEvent(\"MouseEvent\");\n ev.initMouseEvent(\"click\",true,true,window,0,0,0,0,0,false,false,false,false,0,null);\n }\n else {\n ev = new MouseEvent(\"mousedown\");\n }\n document.body.dispatchEvent(ev);\n if(!document.createEvent) {\n ev = new MouseEvent('mouseup');\n document.body.dispatchEvent(ev);\n }\n document.body.click();\n }\n else if (this.validKeyCode_(evt.keyCode)) {\n var charCode = evt.which || evt.keyCode;\n\n this.strSearch_ += String.fromCharCode(charCode);\n\n if(this.keyDownTimerId_) clearTimeout(this.keyDownTimerId_);\n\n this.keyDownTimerId_ = setTimeout((function() {\n this.keyDownTimerId_ = null;\n this.strSearch_ = \"\";\n }).bind(this), 300);\n\n var ind = this.searchByStrIndex_(0);\n\n if (ind > -1) {\n if(currentIndex !== -1) {\n items[currentIndex].classList.remove(this.CssClasses_.IS_SELECTED);\n }\n selectedItem = items[ind];\n selectedItem.classList.add(this.CssClasses_.IS_SELECTED);\n this.listOptionBox_.scrollTop = selectedItem.offsetTop;\n this.lastSelectedItem_ = selectedItem;\n }\n }\n }\n };\n\n MaterialSelectfield.prototype.searchByStrIndex_ = function(key) {\n var srchStr = this.strSearch_;\n var isPresent = new RegExp('^' + srchStr +'.');\n var indx = -1;\n var arr = this.optionsArr_;\n\n for(var i = 0; i < arr.length; i++) {\n if(isPresent.test(arr[i])) {\n indx = i;\n break;\n }\n }\n\n return indx != -1 ? this.optionsMap_[this.optionsArr_[indx]] : -1;\n };\n\n MaterialSelectfield.prototype.validKeyCode_ = function(keycode) {\n return (keycode > 47 && keycode < 58) || // number keys\n keycode === 32 || keycode === 13 || // spacebar & return key(s) (if you want to allow carriage returns)\n (keycode > 64 && keycode < 91) || // letter keys\n (keycode > 95 && keycode < 112) || // numpad keys\n (keycode > 185 && keycode < 193) || // ;=,-./` (in order)\n (keycode > 218 && keycode < 223); // [\\]' (in order)\n };\n\n MaterialSelectfield.prototype.hide_ = function() {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n this.closing_ = true;\n this.strSearch_ = \"\";\n this.boundClickDocHandler_ && document.removeEventListener('click', this.boundClickDocHandler_);\n this.boundKeyDownHandler_ && document.removeEventListener('keydown', this.boundKeyDownHandler_);\n this.update_();\n };\n\n MaterialSelectfield.prototype.init = function () {\n if (this.element_) {\n this.element_.classList.remove(this.CssClasses_.IS_DIRTY);\n this.lastSelectedItem_ = null;\n this.label_ = this.element_.querySelector('.' + this.CssClasses_.LABEL);\n this.select_ = this.element_.querySelector('.' + this.CssClasses_.SELECT);\n var selectedOption = document.createElement('div');\n selectedOption.classList.add(this.CssClasses_.SELECTED_BOX);\n selectedOption.tabIndex = 1;\n this.selectedOption_ = selectedOption;\n var iconContainer = document.createElement('span');\n iconContainer.tabIndex = -1;\n iconContainer.classList.add('mdl-selectfield__arrow-down__container');\n var icon = document.createElement('span');\n icon.classList.add('mdl-selectfield__arrow-down');\n icon.tabIndex = -1;\n iconContainer.appendChild(icon);\n selectedOption.appendChild(iconContainer);\n var value = document.createElement('span');\n value.classList.add(this.CssClasses_.SELECTED_BOX_VALUE);\n value.tabIndex = -1;\n selectedOption.appendChild(value);\n this.selectedOptionValue_ = value;\n this.element_.appendChild(this.selectedOption_);\n\n var invalid = this.element_.classList.contains(this.CssClasses_.IS_INVALID);\n\n this.makeElements_();\n\n this.boundClickHandler = this.onClick_.bind(this);\n this.boundFocusHandler = this.onFocus_.bind(this);\n this.boundBlurHandler = this.onBlur_.bind(this);\n this.element_.addEventListener('click', this.boundClickHandler);\n this.select_.addEventListener('focus', this.boundFocusHandler);\n this.select_.addEventListener('blur', this.boundBlurHandler);\n if (invalid) {\n this.element_.classList.add(this.CssClasses_.IS_INVALID);\n }\n this.checkDisabled();\n }\n };\n\n MaterialSelectfield.prototype.refreshOptions = function () {\n this.mdlDowngrade_();\n this.setDefaults_();\n this.init();\n };\n\n MaterialSelectfield.prototype.clearElements_ = function () {\n\n };\n\n MaterialSelectfield.prototype.makeElements_ = function () {\n if (this.select_) {\n this.options_ = this.select_.querySelectorAll('option');\n this.select_.style.opacity = \"0\";\n this.select_.style.zIndex = \"-1\";\n\n if(this.options_.length === 0) {\n this.options_ = [document.createElement('option')]\n }\n\n if (this.options_.length) {\n var listOptionBox = document.createElement('div')\n ,ul = '';\n\n listOptionBox.innerHTML = ul;\n this.element_.appendChild(listOptionBox);\n this.listOptionBox_ = listOptionBox;\n\n if(window.MutationObserver) {\n this.observer_ = new MutationObserver(function (mutations) {\n mutations.forEach(function (mutation) {\n if (mutation.type === 'childList') {\n this.refreshOptions()\n }\n }.bind(this));\n }.bind(this));\n this.observer_.observe(this.select_, {attributes: true, childList: true, characterData: true})\n }\n }\n }\n };\n\n MaterialSelectfield.prototype.mdlDowngrade_ = function() {\n this.element_.removeEventListener('click', this.boundClickHandler);\n this.select_.removeEventListener('focus', this.boundFocusHandler);\n this.select_.removeEventListener('blur', this.boundBlurHandler);\n this.listOptionBox_ && this.element_.removeChild(this.listOptionBox_);\n this.selectedOption_ && this.element_.removeChild(this.selectedOption_);\n this.element_.removeAttribute('data-upgraded');\n this.select_.style.opacity = \"1\";\n this.select_.style.zIndex = \"inherit\";\n this.observer_ && this.observer_.disconnect();\n };\n\n /**\n * Public alias for the downgrade method.\n *\n * @public\n */\n MaterialSelectfield.prototype.mdlDowngrade =\n MaterialSelectfield.prototype.mdlDowngrade_;\n\n MaterialSelectfield.prototype['mdlDowngrade'] =\n MaterialSelectfield.prototype.mdlDowngrade;\n\n MaterialSelectfield.prototype.change_ = function (value) {\n var option = null;\n\n for (var i = 0; i < this.options_.length; i++) {\n if (this.options_[i].value === value) {\n option = this.options_[i];\n break;\n }\n }\n\n if (option === null) return;\n\n this.selectedOptionValue_.textContent = option.textContent;\n option.selected = true;\n\n this.update_();\n this.fireEventChange_();\n };\n\n /**\n * Update the selected option.\n *\n * @param {string} value The value of the option which is selected.\n * @public\n */\n MaterialSelectfield.prototype.change =\n MaterialSelectfield.prototype.change_;\n\n MaterialSelectfield.prototype['change'] =\n MaterialSelectfield.prototype.change;\n\n\n componentHandler.register({\n constructor: MaterialSelectfield,\n classAsString: 'MaterialSelectfield',\n cssClass: 'mdl-js-selectfield',\n widget: true\n });\n})();"]}