{"version":3,"file":"BsMultiSelect.js","sources":["../../js/src/Bs4AdapterCss.js","../../js/src/Bs4AdapterJs.js","../../js/src/MultiSelect.js","../../js/src/AddToJQueryPrototype.js","../../js/src/Bs4Adapter.js","../../js/src/BsMultiSelect.js"],"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 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","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"],"names":["Bs4AdapterCss","options","$","defaults","selectedPanelFocusClass","selectedPanelDisabledClass","selectedItemContentDisabledClass","dropDownItemDisabledClass","extend","DisableSelectedItemContent","$content","addClass","DisabledStyle","$checkBox","isDisbaled","removeClass","Enable","$selectedPanel","Disable","FocusIn","FocusOut","defSelectedPanelStyle","defSelectedItemStyle","defRemoveSelectedItemButtonStyle","Bs4AdapterJs","selectedPanelDefMinHeight","selectedPanelLgMinHeight","selectedPanelSmMinHeight","selectedPanelDisabledBackgroundColor","selectedPanelFocusBorderColor","selectedPanelFocusBoxShadow","selectedPanelFocusValidBoxShadow","selectedPanelFocusInvalidBoxShadow","filterInputColor","selectedItemContentDisabledOpacity","dropdDownLabelDisabledColor","OnInit","dom","selectedPanel","css","filterInput","CreateSelectedItemContent","$selectedItem","$button","siblings","UpdateSize","hasClass","defSelectedPanelStyleSys","defFilterInputStyleSys","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","display","showDropDown","resetDropDownMenuHover","HoverOut","filterDropDownMenu","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","isHidden","$dropDownItem","prop","appendTo","adjustDropDownItem","CreateDropDownItemContent","isDisabled","isSelected","disabledStyle","disable","onSelected","toggleItem","focus","selectItem","doPublishEvents","adjustPair","toggle","remove","select","removeItem","trigger","removeItemAndCloseDropDown","insertBefore","mouseover","HoverIn","mouseout","toArray","index","keydownArrow","down","length","newIndex","forceUpdatePosition","width","Update","UpdateIsValid","UpdateSizeImpl","UpdateDisabledImpl","Dispose","unbind","destroy","UpdateDisabled","$container","mousedown","mouseup","click","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","$hoveredDropDownItem","dropDownItems","querySelectorAll","dropDownItem","it","textContent","AddToJQueryPrototype","pluginName","createPlugin","firstChar","charAt","firstCharLower","prototypableName","slice","noConflictPrototypable","fn","dataKey","prototypable","$e","instance","isMethodName","test","optionsObject","removeData","methodName","noConflict","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","element","useCss","facade"],"mappings":"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"}