{"version":3,"sources":["../../js/src/Bs4AdapterCss.js","../../js/src/Bs4AdapterJs.js","../../js/src/MultiSelect.js","../../js/src/Bs4Adapter.js","../../js/src/BsMultiSelect.js","../../js/src/AddToJQueryPrototype.js"],"names":["Bs4AdapterCss","options","$","this","extend","selectedPanelFocusClass","selectedPanelDisabledClass","selectedItemContentDisabledClass","dropDownItemDisabledClass","DisableSelectedItemContent","$content","addClass","DisabledStyle","$checkBox","isDisbaled","removeClass","Enable","$selectedPanel","Disable","FocusIn","FocusOut","defSelectedPanelStyle","margin-bottom","height","defSelectedItemStyle","padding-left","line-height","defRemoveSelectedItemButtonStyle","font-size","Bs4AdapterJs","selectedPanelDefMinHeight","selectedPanelLgMinHeight","selectedPanelSmMinHeight","selectedPanelDisabledBackgroundColor","selectedPanelFocusBorderColor","selectedPanelFocusBoxShadow","selectedPanelFocusValidBoxShadow","selectedPanelFocusInvalidBoxShadow","filterInputColor","selectedItemContentDisabledOpacity","dropdDownLabelDisabledColor","OnInit","dom","selectedPanel","css","filterInput","CreateSelectedItemContent","$selectedItem","$button","siblings","UpdateSize","hasClass","background-color","defSelectedPanelStyleSys","display","flex-wrap","list-style-type","defFilterInputStyleSys","width","border","padding","outline","defDropDownMenuStyleSys","MultiSelect","selectElement","onDispose","adapter","window","Popper","TypeError","container","filterInputItem","dropDownMenu","popper","selectedPanelClick","documentMouseup","containerMousedown","documentMouseup2","disabled","filterInputItemOffsetLeft","skipFocusout","hoveredDropDownItem","hoveredDropDownIndex","hasDropDownVisible","$document","document","$selectElement","init","updateDropDownPosition","force","offsetLeft","update","hideDropDown","style","showDropDown","resetDropDownMenuHover","HoverOut","filterDropDownMenu","_this","text","value","trim","toLowerCase","visible","find","each","i","dropDownMenuItem","$dropDownMenuItem","show","itemText","data","option","selected","hidden","indexOf","hide","visibleNodeListArray","getVisibleNodeListArray","hoverInInternal","clearFilterInput","updatePosition","input","closeDropDown","appendDropDownItem","optionElement","_this2","isHidden","$dropDownItem","prop","appendTo","adjustDropDownItem","CreateDropDownItemContent","isDisabled","disabledStyle","disable","onSelected","toggleItem","focus","selectItem","doPublishEvents","adjustPair","isSelected","toggle","remove","select","removeItem","trigger","removeItemAndCloseDropDown","insertBefore","mouseover","HoverIn","mouseout","toArray","index","keydownArrow","down","length","newIndex","forceUpdatePosition","Update","UpdateIsValid","UpdateSizeImpl","UpdateDisabledImpl","Dispose","unbind","destroy","UpdateDisabled","$container","mousedown","mouseup","click","_this3","get","$filterInputItem","$filterInput","$dropDownMenu","event","target","contains","nodeName","val","IsClickToOpenDropdown","Init","insertAfter","placement","modifiers","preventOverflow","enabled","flip","selectOptions","el","stopPropagation","focusin","focusout","on","which","preventDefault","$penult","prev","dropDownItems","querySelectorAll","dropDownItem","it","textContent","disableButton","Bs4Adapter","hiddenSelect","classes","containerClass","dropDownMenuClass","dropDownItemClass","dropDownItemHoverClass","selectedPanelClass","selectedItemClass","removeSelectedItemButtonClass","filterInputItemClass","filterInputClass","bs4LabelDispose","HandleLabel","inputId","id","$formGroup","closest","$label","forId","attr","optionId","checkBoxId","name","$dropDownItemContent","dropDownItemContent","e","removeSelectedItem","controlDisabled","optionDisabled","parentElement","$hiddenSelect","pluginName","createPlugin","firstChar","charAt","firstCharLower","prototypableName","slice","noConflictPrototypable","fn","dataKey","prototypable","$e","instance","isMethodName","test","removeData","methodName","noConflict","AddToJQueryPrototype","element","optionsObject","useCss","facade"],"mappings":"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","sourcesContent":["class Bs4AdapterCss {\r\n\r\n constructor(options, $) {\r\n const defaults = {\r\n selectedPanelFocusClass : 'focus',\r\n selectedPanelDisabledClass: 'disabled',\r\n selectedItemContentDisabledClass: 'disabled',\r\n dropDownItemDisabledClass: 'disabled'\r\n };\r\n this.options = $.extend({}, defaults, options);\r\n }\r\n\r\n DisableSelectedItemContent($content){\r\n $content.addClass(this.options.selectedItemContentDisabledClass )\r\n }\r\n\r\n DisabledStyle($checkBox, isDisbaled){\r\n if (isDisbaled) //? $checkBox.addClass : $checkBox.removeClass\r\n $checkBox.addClass(this.options.dropDownItemDisabledClass);\r\n else\r\n $checkBox.removeClass(this.options.dropDownItemDisabledClass);\r\n }\r\n\r\n Enable($selectedPanel){\r\n $selectedPanel.removeClass(this.options.selectedPanelDisabledClass)\r\n }\r\n\r\n Disable($selectedPanel){\r\n $selectedPanel.addClass(this.options.selectedPanelDisabledClass)\r\n }\r\n\r\n FocusIn($selectedPanel){\r\n $selectedPanel.addClass(this.options.selectedPanelFocusClass);\r\n }\r\n\r\n FocusOut($selectedPanel){\r\n $selectedPanel.removeClass(this.options.selectedPanelFocusClass);\r\n }\r\n}\r\n\r\nexport default Bs4AdapterCss;\r\n","const defSelectedPanelStyle = {'margin-bottom': '0', 'height': 'auto'};\r\nconst defSelectedItemStyle = {'padding-left': '0px', 'line-height': '1.5em'};\r\nconst defRemoveSelectedItemButtonStyle = {'font-size':'1.5em', 'line-height': '.9em'};\r\n\r\nclass Bs4AdapterJs {\r\n constructor(options, $) {\r\n const defaults = {\r\n selectedPanelDefMinHeight: 'calc(2.25rem + 2px)',\r\n selectedPanelLgMinHeight: 'calc(2.875rem + 2px)',\r\n selectedPanelSmMinHeight: 'calc(1.8125rem + 2px)',\r\n selectedPanelDisabledBackgroundColor: '#e9ecef',\r\n selectedPanelFocusBorderColor: '#80bdff',\r\n selectedPanelFocusBoxShadow: '0 0 0 0.2rem rgba(0, 123, 255, 0.25)',\r\n selectedPanelFocusValidBoxShadow: '0 0 0 0.2rem rgba(40, 167, 69, 0.25)',\r\n selectedPanelFocusInvalidBoxShadow: '0 0 0 0.2rem rgba(220, 53, 69, 0.25)',\r\n filterInputColor: '#495057',\r\n selectedItemContentDisabledOpacity: '.65',\r\n dropdDownLabelDisabledColor: '#6c757d'\r\n };\r\n this.options = $.extend({}, defaults, options);\r\n }\r\n\r\n OnInit(dom){\r\n dom.selectedPanel.css(defSelectedPanelStyle);\r\n dom.filterInput.css(\"color\", this.options.filterInputColor);\r\n }\r\n\r\n \r\n CreateSelectedItemContent($selectedItem, $button){\r\n $selectedItem.css(defSelectedItemStyle);\r\n $button.css(defRemoveSelectedItemButtonStyle);\r\n }\r\n\r\n DisableSelectedItemContent($content){\r\n $content.css(\"opacity\", this.options.selectedItemContentDisabledOpacity )\r\n }\r\n\r\n DisabledStyle($checkBox, isDisbaled){\r\n $checkBox.siblings('label').css('color', isDisbaled?this.options.dropdDownLabelDisabledColor:'')\r\n }\r\n\r\n UpdateSize($selectedPanel){\r\n if ($selectedPanel.hasClass(\"form-control-lg\")){\r\n $selectedPanel.css(\"min-height\", this.options.selectedPanelLgMinHeight);\r\n } else if ($selectedPanel.hasClass(\"form-control-sm\")){\r\n $selectedPanel.css(\"min-height\", this.options.selectedPanelSmMinHeight);\r\n } else {\r\n $selectedPanel.css(\"min-height\", this.options.selectedPanelDefMinHeight);\r\n }\r\n }\r\n\r\n Enable($selectedPanel){\r\n $selectedPanel.css({\"background-color\": \"\"})\r\n }\r\n\r\n Disable($selectedPanel){\r\n $selectedPanel.css({\"background-color\": this.options.selectedPanelDisabledBackgroundColor})\r\n }\r\n\r\n FocusIn($selectedPanel){\r\n if ($selectedPanel.hasClass(\"is-valid\")){\r\n $selectedPanel.css(\"box-shadow\", this.options.selectedPanelFocusValidBoxShadow);\r\n } else if ($selectedPanel.hasClass(\"is-invalid\")){\r\n $selectedPanel.css(\"box-shadow\", this.options.selectedPanelFocusInvalidBoxShadow);\r\n } else {\r\n $selectedPanel\r\n .css(\"box-shadow\", this.options.selectedPanelFocusBoxShadow)\r\n .css(\"border-color\", this.options.selectedPanelFocusBorderColor);\r\n }\r\n }\r\n\r\n FocusOut($selectedPanel){\r\n $selectedPanel.css(\"box-shadow\", \"\" ).css(\"border-color\", \"\")\r\n }\r\n}\r\n\r\nexport default Bs4AdapterJs;\r\n","import Popper from 'popper.js'\r\n\r\nconst defSelectedPanelStyleSys = {'display':'flex', 'flex-wrap':'wrap', 'list-style-type':'none'}; // remove bullets since this is ul\r\nconst defFilterInputStyleSys = {'width':'2ch', 'border':'0', 'padding':'0', 'outline':'none', 'background-color':'transparent' };\r\nconst defDropDownMenuStyleSys = {'list-style-type':'none'}; // remove bullets since this is ul\r\n\r\n// jQuery used for:\r\n// $.extend, $.contains, $(\"
\"), $(function(){}) aka ready\r\n// $e.trigger, $e.unbind, $e.on; but namespaces are not used;\r\n// events: \"focusin\", \"focusout\", \"mouseover\", \"mouseout\", \"keydown\", \"keyup\", \"click\"\r\n// $e.show, $e.hide, $e.focus, $e.css\r\n// $e.appendTo, $e.remove, $e.find, $e.closest, $e.prev, $e.data, $e.val\r\n\r\nclass MultiSelect {\r\n constructor(selectElement, options, onDispose, adapter, window, $) {\r\n if (typeof Popper === 'undefined') {\r\n throw new TypeError('DashboardCode BsMultiSelect require Popper.js (https://popper.js.org)')\r\n }\r\n // readonly\r\n this.selectElement = selectElement;\r\n this.adapter = adapter;\r\n this.window = window;\r\n this.onDispose=onDispose;\r\n this.$ = $;\r\n \r\n this.options = $.extend({}, options);\r\n \r\n this.container = null;\r\n this.selectedPanel = null;\r\n this.filterInputItem = null;\r\n this.filterInput = null;\r\n this.dropDownMenu = null;\r\n this.popper = null;\r\n // removable handlers\r\n this.selectedPanelClick = null;\r\n this.documentMouseup = null;\r\n this.containerMousedown = null;\r\n this.documentMouseup2 = null;\r\n // state\r\n this.disabled=null;\r\n this.filterInputItemOffsetLeft = null; // used to detect changes in input field position (by comparision with current value)\r\n this.skipFocusout = false;\r\n this.hoveredDropDownItem = null;\r\n this.hoveredDropDownIndex = null;\r\n this.hasDropDownVisible = false;\r\n\r\n // jquery adapters\r\n this.$document= $(window.document);\r\n this.$selectElement = $(selectElement);\r\n this.init();\r\n }\r\n updateDropDownPosition(force) {\r\n let offsetLeft = this.filterInputItem.offsetLeft;\r\n if (force || this.filterInputItemOffsetLeft!=offsetLeft){\r\n this.popper.update();\r\n this.filterInputItemOffsetLeft=offsetLeft;\r\n }\r\n }\r\n hideDropDown() {\r\n this.dropDownMenu.style.display = 'none';\r\n }\r\n showDropDown() {\r\n this.dropDownMenu.style.display = 'block';\r\n }\r\n // Public methods\r\n resetDropDownMenuHover() {\r\n if (this.hoveredDropDownItem !== null) {\r\n this.adapter.HoverOut(this.$(this.hoveredDropDownItem));\r\n this.hoveredDropDownItem = null;\r\n this.hoveredDropDownIndex = null;\r\n }\r\n }\r\n\r\n filterDropDownMenu() {\r\n let text = this.filterInput.value.trim().toLowerCase();\r\n let visible = 0;\r\n this.$(this.dropDownMenu).find('LI').each((i, dropDownMenuItem) => {\r\n let $dropDownMenuItem = this.$(dropDownMenuItem);\r\n if (text == '') {\r\n $dropDownMenuItem.show();\r\n visible++;\r\n }\r\n else {\r\n let itemText = $dropDownMenuItem.data(\"option-text\");\r\n let option = $dropDownMenuItem.data(\"option\");\r\n if (!option.selected && !option.hidden && !option.disabled && itemText.indexOf(text)>=0) {\r\n $dropDownMenuItem.show();\r\n visible++;\r\n } else {\r\n $dropDownMenuItem.hide();\r\n }\r\n }\r\n });\r\n this.hasDropDownVisible = visible > 0;\r\n this.resetDropDownMenuHover();\r\n if (visible == 1) {\r\n let visibleNodeListArray = this.getVisibleNodeListArray();\r\n this.hoverInInternal(visibleNodeListArray, 0)\r\n }\r\n }\r\n\r\n clearFilterInput(updatePosition) {\r\n if (this.filterInput.value) {\r\n this.filterInput.value = '';\r\n this.input(updatePosition);\r\n }\r\n }\r\n\r\n closeDropDown() {\r\n this.resetDropDownMenuHover();\r\n this.clearFilterInput(true);\r\n this.hideDropDown();\r\n }\r\n \r\n appendDropDownItem(optionElement) {\r\n let isHidden = optionElement.hidden;\r\n let itemText = optionElement.text;\r\n let $dropDownItem = this.$(\"
  • \").prop(\"hidden\", isHidden)\r\n $dropDownItem.data(\"option-text\", itemText.toLowerCase()).appendTo(this.dropDownMenu);\r\n $dropDownItem.data(\"option\", optionElement);\r\n\r\n let adjustDropDownItem = this.adapter.CreateDropDownItemContent($dropDownItem, optionElement.value, itemText);\r\n let isDisabled = optionElement.disabled;\r\n let isSelected = optionElement.selected;\r\n\r\n if (isSelected && isDisabled)\r\n adjustDropDownItem.disabledStyle(true);\r\n else if (isDisabled)\r\n adjustDropDownItem.disable(isDisabled);\r\n \r\n adjustDropDownItem.onSelected(() => {\r\n let toggleItem = $dropDownItem.data(\"option-toggle\");\r\n toggleItem();\r\n this.filterInput.focus();\r\n });\r\n \r\n let selectItem = (doPublishEvents) => {\r\n if (optionElement.hidden)\r\n return;\r\n let $selectedItem = this.$(\"
  • \")\r\n \r\n let adjustPair =(isSelected, toggle, remove) => {\r\n optionElement.selected = isSelected;\r\n adjustDropDownItem.select(isSelected);\r\n $dropDownItem.data(\"option-toggle\", toggle); \r\n $selectedItem.data(\"option-remove\", remove)\r\n }\r\n\r\n let removeItem = () => {\r\n adjustDropDownItem.disabledStyle(false);\r\n adjustDropDownItem.disable(optionElement.disabled);\r\n adjustPair(false, () => {\r\n if (optionElement.disabled)\r\n return;\r\n selectItem(true);\r\n }, null, true)\r\n $selectedItem.remove();\r\n this.$selectElement.trigger('change');\r\n };\r\n let removeItemAndCloseDropDown = () => {\r\n removeItem();\r\n this.closeDropDown();\r\n };\r\n\r\n this.adapter.CreateSelectedItemContent(\r\n $selectedItem,\r\n itemText,\r\n removeItemAndCloseDropDown,\r\n this.disabled,\r\n optionElement.disabled\r\n );\r\n adjustPair(true, removeItem, removeItemAndCloseDropDown);\r\n $selectedItem.insertBefore(this.filterInputItem);\r\n if (doPublishEvents)\r\n this.$selectElement.trigger('change');\r\n }\r\n\r\n $dropDownItem\r\n .mouseover(() => this.adapter.HoverIn($dropDownItem))\r\n .mouseout(() => this.adapter.HoverOut($dropDownItem));\r\n \r\n if (optionElement.selected)\r\n selectItem(false);\r\n else\r\n $dropDownItem.data(\"option-toggle\", () => { \r\n if (optionElement.disabled)\r\n return;\r\n selectItem(true);\r\n })\r\n }\r\n getVisibleNodeListArray(){\r\n return this.$(this.dropDownMenu).find('LI:not([style*=\"display: none\"]):not(:hidden)').toArray();\r\n }\r\n hoverInInternal(visibleNodeListArray, index){\r\n this.hoveredDropDownIndex = index;\r\n this.hoveredDropDownItem = visibleNodeListArray[index];\r\n this.adapter.HoverIn(this.$(this.hoveredDropDownItem));\r\n }\r\n keydownArrow(down) {\r\n let visibleNodeListArray = this.getVisibleNodeListArray();\r\n if (visibleNodeListArray.length > 0) {\r\n if (this.hasDropDownVisible) {\r\n this.updateDropDownPosition(true);\r\n this.showDropDown();\r\n }\r\n let index;\r\n if (this.hoveredDropDownItem === null) {\r\n index = down ? 0 : visibleNodeListArray.length - 1;\r\n }\r\n else {\r\n this.adapter.HoverOut(this.$(this.hoveredDropDownItem));\r\n if (down) {\r\n let newIndex = this.hoveredDropDownIndex + 1;\r\n index = newIndex < visibleNodeListArray.length ? newIndex : 0;\r\n } else {\r\n let newIndex = this.hoveredDropDownIndex - 1;\r\n index = newIndex >= 0 ? newIndex : visibleNodeListArray.length - 1;\r\n }\r\n }\r\n this.hoverInInternal(visibleNodeListArray, index);\r\n }\r\n }\r\n input(forceUpdatePosition) {\r\n this.filterInput.style.width = this.filterInput.value.length*1.3 + 2 + \"ch\";\r\n this.filterDropDownMenu();\r\n\r\n if (this.hasDropDownVisible) {\r\n if (forceUpdatePosition) // ignore it if it is called from\r\n this.updateDropDownPosition(forceUpdatePosition); // we need it to support case when textbox changes its place because of line break (texbox grow with each key press)\r\n this.showDropDown();\r\n } else {\r\n this.hideDropDown();\r\n }\r\n }\r\n Update(){\r\n let $selectedPanel = this.$(this.selectedPanel);\r\n this.adapter.UpdateIsValid($selectedPanel);\r\n this.UpdateSizeImpl($selectedPanel);\r\n this.UpdateDisabledImpl(this.$(this.container), $selectedPanel);\r\n }\r\n Dispose(){\r\n if (this.onDispose)\r\n this.onDispose();\r\n \r\n // removable handlers\r\n this.$document.unbind(\"mouseup\", this.documentMouseup)\r\n .unbind(\"mouseup\", this.documentMouseup2);\r\n \r\n if (this.adapter !== null) {\r\n this.adapter.Dispose()\r\n }\r\n if (this.popper !== null) {\r\n this.popper.destroy()\r\n }\r\n \r\n if (this.container !== null) {\r\n this.$(this.container).remove();\r\n }\r\n // this.selectedPanel = null;\r\n // this.filterInputItem = null;\r\n // this.filterInput = null;\r\n // this.dropDownMenu = null;\r\n // this.selectElement = null;\r\n // this.options = null;\r\n }\r\n UpdateSize(){\r\n this.UpdateSizeImpl(this.$(this.selectedPanel));\r\n }\r\n UpdateDisabled(){\r\n this.UpdateDisabledImpl(this.$(this.container), this.$(this.selectedPanel));\r\n }\r\n UpdateSizeImpl($selectedPanel){\r\n if (this.adapter.UpdateSize)\r\n this.adapter.UpdateSize($selectedPanel);\r\n }\r\n UpdateDisabledImpl($container, $selectedPanel){\r\n let disabled = this.selectElement.disabled;\r\n if (this.disabled!==disabled){\r\n if (disabled) {\r\n this.filterInput.style.display = \"none\";\r\n this.adapter.Disable($selectedPanel);\r\n\r\n $container.unbind(\"mousedown\", this.containerMousedown);\r\n this.$document.unbind(\"mouseup\", this.documentMouseup);\r\n\r\n $selectedPanel.unbind(\"click\", this.selectedPanelClick);\r\n this.$document.unbind(\"mouseup\", this.documentMouseup2);\r\n \r\n } else {\r\n this.filterInput.style.display = \"inline-block\";\r\n this.adapter.Enable($selectedPanel);\r\n\r\n $container.mousedown(this.containerMousedown); // removable\r\n this.$document.mouseup(this.documentMouseup); // removable\r\n\r\n $selectedPanel.click(this.selectedPanelClick); // removable\r\n this.$document.mouseup(this.documentMouseup2); // removable\r\n }\r\n this.disabled=disabled;\r\n }\r\n }\r\n init() {\r\n let $selectElement = this.$(this.selectElement);\r\n $selectElement.hide();\r\n let $container = this.$(\"
    \");\r\n this.container = $container.get(0);\r\n let $selectedPanel = this.$(\"
      \");\r\n $selectedPanel.css(defSelectedPanelStyleSys);\r\n \r\n this.selectedPanel = $selectedPanel.get(0);\r\n \r\n $selectedPanel.appendTo(this.container);\r\n let $filterInputItem = this.$('
    • ');\r\n this.filterInputItem = $filterInputItem.get(0)\r\n $filterInputItem.appendTo(this.selectedPanel);\r\n let $filterInput = this.$('');\r\n $filterInput.css(defFilterInputStyleSys);\r\n $filterInput.appendTo(this.filterInputItem);\r\n this.filterInput = $filterInput.get(0);\r\n let $dropDownMenu = this.$(\"
        \")\r\n .css({\"display\":\"none\"})\r\n .appendTo($container);\r\n this.dropDownMenu = $dropDownMenu.get(0);\r\n \r\n // prevent heavy understandable styling error\r\n $dropDownMenu.css(defDropDownMenuStyleSys);\r\n // create handlers\r\n this.documentMouseup = () => {\r\n this.skipFocusout = false;\r\n }\r\n\r\n this.containerMousedown = () => {\r\n this.skipFocusout = true;\r\n };\r\n this.documentMouseup2 = event => {\r\n if (!(this.container === event.target || this.$.contains(this.container, event.target))) {\r\n this.closeDropDown();\r\n }\r\n }\r\n this.selectedPanelClick = event => {\r\n if (event.target.nodeName != \"INPUT\")\r\n this.$(this.filterInput).val('').focus();\r\n if (this.hasDropDownVisible && this.adapter.IsClickToOpenDropdown(event)){\r\n this.updateDropDownPosition(true);\r\n this.showDropDown();\r\n }\r\n };\r\n this.adapter.Init({\r\n container:$container, selectedPanel:$selectedPanel,\r\n filterInputItem:$filterInputItem, filterInput:$filterInput,\r\n dropDownMenu:$dropDownMenu });\r\n $container.insertAfter($selectElement);\r\n \r\n this.popper = new Popper(this.filterInput, this.dropDownMenu, {\r\n placement: 'bottom-start',\r\n modifiers: {\r\n preventOverflow: {enabled:false},\r\n hide: {enabled:false},\r\n flip: { enabled:false }\r\n }\r\n });\r\n this.adapter.UpdateIsValid($selectedPanel);\r\n this.UpdateSizeImpl($selectedPanel);\r\n this.UpdateDisabledImpl($container, $selectedPanel);\r\n // some browsers (IE11) can change select value (as part of \"autocomplete\") after page is loaded but before \"ready\" event\r\n // FYI: $(() => { ...}) is jquery ready event shortcut\r\n this.$(() => {\r\n let selectOptions = $selectElement.find('OPTION');\r\n selectOptions.each(\r\n (index, el) => {\r\n this.appendDropDownItem(el);\r\n }\r\n );\r\n this.hasDropDownVisible = selectOptions.length > 0;\r\n this.updateDropDownPosition(false);\r\n });\r\n $dropDownMenu.click( event => event.stopPropagation());\r\n $dropDownMenu.mouseover(() => this.resetDropDownMenuHover());\r\n\r\n $filterInput.focusin(() => this.adapter.FocusIn($selectedPanel))\r\n .focusout(() => {\r\n if (!this.skipFocusout)\r\n this.adapter.FocusOut($selectedPanel)\r\n });\r\n $filterInput.on(\"keydown\", (event) => {\r\n if ([38, 40, 13].indexOf(event.which)>=0 || (event.which == 9 && this.filterInput.value) ) {\r\n event.preventDefault();\r\n }\r\n\r\n if (event.which == 38) {\r\n this.keydownArrow(false);\r\n }\r\n else if (event.which == 40) {\r\n if (this.hoveredDropDownItem === null && this.hasDropDownVisible) {\r\n this.showDropDown();\r\n }\r\n this.keydownArrow(true);\r\n }\r\n else if (event.which == 9) {\r\n if (!this.filterInput.value) {\r\n this.closeDropDown();\r\n }\r\n }\r\n else if (event.which == 8) {\r\n // NOTE: this will process backspace only if there are no text in the input field\r\n // If user will find this inconvinient, we will need to calculate something like this\r\n // this.isBackspaceAtStartPoint = (this.filterInput.selectionStart == 0 && this.filterInput.selectionEnd == 0);\r\n if (!this.filterInput.value)\r\n {\r\n let $penult = this.$(this.selectedPanel).find(\"LI:last\").prev();\r\n if ($penult.length){\r\n let removeItem = $penult.data(\"option-remove\");\r\n removeItem();\r\n }\r\n this.updateDropDownPosition(false);\r\n }\r\n }\r\n\r\n if ([38, 40, 13, 9].indexOf(event.which)==-1)\r\n this.resetDropDownMenuHover();\r\n });\r\n $filterInput.on(\"keyup\", (event) => {\r\n if (event.which == 13 || event.which == 9 ) {\r\n if (this.hoveredDropDownItem) {\r\n let $hoveredDropDownItem = this.$(this.hoveredDropDownItem);\r\n let toggleItem = $hoveredDropDownItem.data(\"option-toggle\");\r\n toggleItem();\r\n this.closeDropDown();\r\n } else {\r\n let text = this.filterInput.value.trim().toLowerCase();\r\n let dropDownItems = this.dropDownMenu.querySelectorAll(\"LI\");\r\n let dropDownItem = null;\r\n for (let i = 0; i < dropDownItems.length; ++i) {\r\n let it = dropDownItems[i];\r\n if (it.textContent.trim().toLowerCase() == text)\r\n {\r\n dropDownItem=it;\r\n break;\r\n }\r\n }\r\n if (dropDownItem) {\r\n let $dropDownItem = this.$(dropDownItem);\r\n let option = $dropDownItem.data(\"option\");\r\n if (!option.selected){\r\n let toggle = $dropDownItem.data(\"option-toggle\");\r\n toggle();\r\n }\r\n this.clearFilterInput(true);\r\n }\r\n }\r\n }\r\n else if (event.which == 27) { // escape\r\n this.closeDropDown();\r\n }\r\n });\r\n $filterInput.on('input', () => {\r\n this.input(true);\r\n });\r\n }\r\n}\r\n\r\nexport default MultiSelect;\r\n","function disableButton($selectedPanel, isDisabled){\r\n $selectedPanel.find('BUTTON').prop(\"disabled\", isDisabled);\r\n}\r\n\r\nclass Bs4Adapter {\r\n\r\n constructor(hiddenSelect, adapter, classes, $){\r\n const defaults = {\r\n containerClass: 'dashboardcode-bsmultiselect',\r\n dropDownMenuClass: 'dropdown-menu',\r\n dropDownItemClass: 'px-2',\r\n dropDownItemHoverClass: 'text-primary bg-light',\r\n selectedPanelClass: 'form-control',\r\n selectedItemClass: 'badge',\r\n removeSelectedItemButtonClass: 'close',\r\n filterInputItemClass: '',\r\n filterInputClass: ''\r\n }\r\n\r\n this.classes = $.extend({}, defaults, classes);\r\n this.$ = $;\r\n this.hiddenSelect=hiddenSelect;\r\n this.adapter = adapter;\r\n this.bs4LabelDispose = null;\r\n }\r\n\r\n HandleLabel($selectedPanel){\r\n let inputId = this.hiddenSelect.id;\r\n let $formGroup = this.$(this.hiddenSelect).closest('.form-group');\r\n if ($formGroup.length == 1) {\r\n let $label = $formGroup.find(`label[for=\"${inputId}\"]`);\r\n let forId = $label.attr('for');\r\n if (forId == this.hiddenSelect.id) {\r\n let id = `${this.classes.containerClass}-generated-filter-id-${this.hiddenSelect.id}`;\r\n $selectedPanel.find('input').attr('id', id);\r\n $label.attr('for', id);\r\n return () => {\r\n $label.attr('for', forId);\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n // ------------------------------------------\r\n Init(dom){\r\n dom.container.addClass(this.classes.containerClass);\r\n dom.selectedPanel.addClass(this.classes.selectedPanelClass);\r\n dom.dropDownMenu.addClass(this.classes.dropDownMenuClass);\r\n dom.filterInputItem.addClass(this.classes.filterInputItemClass);\r\n dom.filterInput.addClass(this.classes.filterInputClass);\r\n if (this.adapter.OnInit)\r\n this.adapter.OnInit(dom)\r\n this.bs4LabelDispose = this.HandleLabel(dom.selectedPanel);\r\n }\r\n\r\n Dispose(){\r\n if (this.bs4LabelDispose)\r\n this.bs4LabelDispose();\r\n }\r\n\r\n // ------------------------\r\n CreateDropDownItemContent($dropDownItem, optionId, itemText){\r\n\r\n let checkBoxId = `${this.classes.containerClass}-${this.hiddenSelect.name.toLowerCase()}-generated-id-${optionId.toLowerCase()}`;\r\n\r\n let $dropDownItemContent= this.$(`
        \r\n \r\n \r\n
        `)\r\n $dropDownItemContent.appendTo($dropDownItem);\r\n let $checkBox = $dropDownItemContent.find(`INPUT[type=\"checkbox\"]`);\r\n $dropDownItem.addClass(this.classes.dropDownItemClass);\r\n\r\n let dropDownItem = $dropDownItem.get(0);\r\n let dropDownItemContent = $dropDownItemContent.get(0);\r\n \r\n let adapter = this.adapter;\r\n return { \r\n select(isSelected){ $checkBox.prop('checked', isSelected); }, \r\n disable(isDisabled){ $checkBox.prop('disabled', isDisabled); },\r\n disabledStyle(disabledStyle){ adapter.DisabledStyle($checkBox, disabledStyle); },\r\n onSelected(toggle) {\r\n $checkBox.on(\"change\", toggle)\r\n $dropDownItem.on(\"click\", (e) => {\r\n if (e.target == dropDownItem || e.target == dropDownItemContent)\r\n toggle();\r\n })\r\n }\r\n }\r\n }\r\n\r\n CreateSelectedItemContent($selectedItem, itemText, removeSelectedItem, controlDisabled, optionDisabled){\r\n let $content = this.$(`${itemText}`).appendTo($selectedItem);\r\n if (optionDisabled)\r\n this.adapter.DisableSelectedItemContent($content);\r\n let $button = this.$('')\r\n .css(\"white-space\", \"nowrap\")\r\n .on(\"click\", removeSelectedItem)\r\n .appendTo($selectedItem)\r\n .prop(\"disabled\", controlDisabled)\r\n $selectedItem.addClass(this.classes.selectedItemClass);\r\n $button.addClass(this.classes.removeSelectedItemButtonClass)\r\n if (this.adapter.CreateSelectedItemContent)\r\n this.adapter.CreateSelectedItemContent($selectedItem, $button)\r\n }\r\n\r\n // -----------------------\r\n IsClickToOpenDropdown(event){\r\n const target = event.target;\r\n const nodeName = target.nodeName;\r\n return !(nodeName == \"BUTTON\" || (nodeName == \"SPAN\" && target.parentElement.nodeName == \"BUTTON\"))\r\n }\r\n\r\n UpdateIsValid($selectedPanel){\r\n let $hiddenSelect = this.$(this.hiddenSelect);\r\n if ($hiddenSelect.hasClass(\"is-valid\")){\r\n $selectedPanel.addClass(\"is-valid\");\r\n }\r\n\r\n if ($hiddenSelect.hasClass(\"is-invalid\")){\r\n $selectedPanel.addClass(\"is-invalid\");\r\n }\r\n }\r\n\r\n UpdateSize($selectedPanel){\r\n if(this.adapter.UpdateSize)\r\n this.adapter.UpdateSize($selectedPanel)\r\n }\r\n\r\n HoverIn($dropDownItem){\r\n $dropDownItem.addClass(this.classes.dropDownItemHoverClass);\r\n }\r\n\r\n HoverOut($dropDownItem){\r\n $dropDownItem.removeClass(this.classes.dropDownItemHoverClass);\r\n }\r\n\r\n Enable($selectedPanel){\r\n this.adapter.Enable($selectedPanel)\r\n disableButton($selectedPanel, false)\r\n }\r\n\r\n Disable($selectedPanel){\r\n this.adapter.Disable($selectedPanel)\r\n disableButton($selectedPanel, true)\r\n }\r\n\r\n FocusIn($selectedPanel){\r\n this.adapter.FocusIn($selectedPanel)\r\n }\r\n\r\n FocusOut($selectedPanel){\r\n this.adapter.FocusOut($selectedPanel)\r\n }\r\n}\r\n\r\nexport default Bs4Adapter;\r\n","import $ from 'jquery'\r\nimport Bs4AdapterCss from './Bs4AdapterCss'\r\nimport Bs4AdapterJs from './Bs4AdapterJs'\r\nimport MultiSelect from './MultiSelect'\r\nimport AddToJQueryPrototype from './AddToJQueryPrototype'\r\nimport Bs4Adapter from './Bs4Adapter';\r\n\r\n(\r\n (window, $) => {\r\n AddToJQueryPrototype('BsMultiSelect',\r\n (element, optionsObject, onDispose) => {\r\n let adapter = optionsObject && optionsObject.useCss\r\n ? new Bs4AdapterCss(optionsObject, $)\r\n : new Bs4AdapterJs(optionsObject, $);\r\n let facade = new Bs4Adapter(element, adapter, optionsObject, $);\r\n return new MultiSelect(element, optionsObject, onDispose, facade, window, $);\r\n }, $);\r\n }\r\n)(window, $)\r\n","function AddToJQueryPrototype(pluginName, createPlugin, $){\r\n const firstChar = pluginName.charAt(0);\r\n const firstCharLower = firstChar.toLowerCase();\r\n if (firstCharLower == firstChar) {\r\n throw new TypeError(`Plugin name '${pluginName}' should be started from upper case char`)\r\n }\r\n const prototypableName = firstCharLower + pluginName.slice(1)\r\n const noConflictPrototypable = $.fn[prototypableName];\r\n const dataKey = `DashboardCode.${pluginName}`;\r\n\r\n function prototypable(options) {\r\n return this.each( function () {\r\n let $e = $(this);\r\n let instance = $e.data(dataKey)\r\n let isMethodName = typeof options === 'string';\r\n if (!instance) {\r\n if (isMethodName && /Dispose/.test(options)) {\r\n return;\r\n }\r\n const optionsObject = (typeof options === 'object')?options:null;\r\n\r\n instance = createPlugin(this, optionsObject,\r\n () => {\r\n $e.removeData(dataKey)\r\n });\r\n $e.data(dataKey, instance);\r\n }\r\n\r\n if (isMethodName) {\r\n let methodName = options;\r\n if (typeof instance[methodName] === 'undefined') {\r\n throw new TypeError(`No method named '${methodName}'`)\r\n }\r\n instance[methodName]()\r\n }\r\n })\r\n }\r\n\r\n $.fn[prototypableName] = prototypable;\r\n\r\n // pluginName with first capitalized letter - return plugin instance for 1st $selected item\r\n $.fn[pluginName] = function () {\r\n return $(this).data(dataKey);\r\n };\r\n\r\n $.fn[prototypableName].noConflict = function () {\r\n $.fn[prototypableName] = noConflictPrototypable\r\n return prototypable;\r\n }\r\n}\r\n\r\nexport default AddToJQueryPrototype\r\n"]}