{"version":3,"file":"BsMultiSelect.js","sources":["../../js/src/AddToJQueryPrototype.js","../../js/src/ToolsDom.js","../../js/src/FilterPanel.js","../../js/src/ToolsJs.js","../../js/src/Choices.js","../../js/src/Picks.js","../../js/src/MultiSelectInputAspect.js","../../js/src/Choice.js","../../js/src/FilterFacade.js","../../js/src/MultiSelect.js","../../js/src/PluginManager.js","../../js/src/ToolsStyling.js","../../js/src/PickContentGenerator.js","../../js/src/ChoiceContentGenerator.js","../../js/src/StaticContentGenerator.js","../../js/src/BsMultiSelect.js","../../js/src/BsCss.js","../../js/src/plugins/LabelPlugin.js","../../js/src/plugins/RtlPlugin.js","../../js/src/plugins/FormResetPlugin.js","../../js/src/ValidityApi.js","../../js/src/plugins/ValidationApiPlugin.js","../../js/src/plugins/BsAppearancePlugin.js","../../js/src/plugins/HiddenOptionPlugin.js","../../js/src/plugins/CssPatchPlugin.js","../../js/src/plugins/PlaceholderPlugin.js","../../js/src/plugins/JQueryMethodsPlugin.js","../../js/src/plugins/OptionsApiPlugin.js","../../js/src/BsMultiSelectDepricatedParameters.js","../../js/src/BsMultiSelect.jquery.js"],"sourcesContent":["export 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 Error(`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 noConflictPrototypableForInstance = $.fn[pluginName];\r\n const dataKey = `DashboardCode.${pluginName}`;\r\n\r\n function createInstance(options, e, $e){\r\n const optionsRef = (typeof options === 'object') || options instanceof Function ? options:null;\r\n let instance = createPlugin(e, optionsRef,\r\n () => {\r\n $e.removeData(dataKey)\r\n });\r\n $e.data(dataKey, instance);\r\n return instance;\r\n }\r\n\r\n function prototypable(options){\r\n return this.each( function (i, e) {\r\n let $e = $(e);\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 instance = createInstance(options, e, $e);\r\n }\r\n if (isMethodName) {\r\n let methodName = options;\r\n if (typeof instance[methodName] === 'undefined') {\r\n throw new Error(`No method named '${methodName}'`)\r\n }\r\n instance[methodName]()\r\n }\r\n })\r\n }\r\n\r\n function prototypableForInstance(options){\r\n let instance = this.data(dataKey);\r\n if (instance)\r\n return instance;\r\n else if (this.length === 1){\r\n return createInstance(options, this.get(0), this);\r\n } else if (this.length > 1) {\r\n let output=[];\r\n this.each(function(i, e){\r\n output.push(createInstance(options, e, $(e)));\r\n })\r\n return output;\r\n }\r\n }\r\n \r\n $.fn[prototypableName] = prototypable;\r\n $.fn[prototypableName].noConflict = function () {\r\n $.fn[prototypableName] = noConflictPrototypable\r\n return prototypable;\r\n }\r\n\r\n $.fn[pluginName] = prototypableForInstance;\r\n $.fn[pluginName].noConflict = function () {\r\n $.fn[pluginName] = noConflictPrototypableForInstance\r\n return prototypableForInstance;\r\n }\r\n\r\n return prototypable;\r\n}","export function removeElement(e) {e.parentNode.removeChild(e)}\r\n\r\nexport function findDirectChildByTagName(element, tagName){\r\n let value = null;\r\n for (let i = 0; i e.tagName === tagName) // TODO support xhtml? e.tagName.toUpperCase() ?\r\n}\r\n\r\nexport function closestByClassName(element, className){\r\n return closest(element, e => e.classList.contains(className))\r\n}\r\n\r\nexport function closestByAttribute(element, attributeName, attribute){\r\n return closest(element, e => e.getAttribute(attributeName)===attribute )\r\n}\r\n\r\nexport function containsAndSelf(node, otherNode ){\r\n return node === otherNode || node.contains(otherNode); \r\n}\r\n\r\nexport function getDataGuardedWithPrefix(element, prefix, name){\r\n var tmp1 = element.getAttribute('data-' + prefix + '-' + name);\r\n if (tmp1) {\r\n return tmp1;\r\n } else {\r\n var tmp2 = element.getAttribute('data-' + name);\r\n if (tmp2)\r\n return tmp2;\r\n }\r\n return null;\r\n}\r\n\r\nfunction closest(element, predicate){\r\n if (!element || !(element instanceof Element)) return null; // should be element, not document (TODO: check iframe)\r\n \r\n if (predicate(element)) return element;\r\n return closest(element.parentNode, predicate);\r\n}\r\n\r\nexport function siblingsAsArray(element){\r\n var value = []\r\n if (element.parentNode){\r\n var children = element.parentNode.children;\r\n var l = element.parentNode.children.length;\r\n if (children.length>1){\r\n for (var i=0; i < l; ++i){\r\n var e = children[i];\r\n if (e!=element)\r\n value.push(e);\r\n \r\n }\r\n }\r\n }\r\n return value;\r\n}\r\n\r\nexport function getIsRtl(element){\r\n var isRtl = false;\r\n var e = closestByAttribute(element,\"dir\",\"rtl\");\r\n if (e)\r\n isRtl = true;\r\n return isRtl;\r\n}\r\n\r\nexport function EventBinder(){\r\n var list = [];\r\n return {\r\n bind(element, eventName, handler) {\r\n element.addEventListener(eventName, handler)\r\n list.push( {element, eventName, handler} )\r\n },\r\n unbind() {\r\n list.forEach( e=> {\r\n let {element, eventName, handler}=e;\r\n element.removeEventListener(eventName, handler)\r\n })\r\n }\r\n }\r\n}\r\n\r\nexport function AttributeBackup(){\r\n var list = [];\r\n return {\r\n set(element, attributeName, attribute){\r\n var currentAtribute = element.getAttribute(attributeName); \r\n list.push( {element, currentAtribute, attribute} )\r\n element.setAttribute(attributeName, attribute)\r\n },\r\n restore(){\r\n list.forEach(e=>{\r\n let {element, attributeName, attribute} = e;\r\n if (attributeName)\r\n element.setAttribute(attributeName, attribute)\r\n else\r\n element.removeAttribute(attributeName)\r\n })\r\n }\r\n }\r\n}\r\n\r\nexport function EventLoopFlag(window) {\r\n var flag = false;\r\n return {\r\n get(){\r\n return flag;\r\n },\r\n set(){\r\n flag = true;\r\n window.setTimeout( \r\n () => { \r\n flag = false;\r\n }, 0)\r\n }\r\n }\r\n}","import {EventBinder} from './ToolsDom';\r\nexport function FilterPanel(\r\n filterInputElement,\r\n\r\n onFocusIn, // show dropdown\r\n onFocusOut, // hide dropdown\r\n onKeyDownArrowUp, \r\n onKeyDownArrowDown,\r\n onTabForEmpty, // tab on empty\r\n onBackspace, // backspace alike\r\n \r\n onTabToCompleate, // \"compleate alike\"\r\n onEnterToCompleate,\r\n onKeyUpEsc, // \"esc\" alike\r\n\r\n stopEscKeyDownPropogation, \r\n \r\n onInput//, // filter\r\n){\r\n filterInputElement.setAttribute(\"type\",\"search\");\r\n filterInputElement.setAttribute(\"autocomplete\",\"off\");\r\n\r\n var isEmpty = () => filterInputElement.value ? false:true;\r\n\r\n var onfilterInputKeyDown = (event) => {\r\n let keyCode = event.which;\r\n var empty = isEmpty();\r\n\r\n if ([ 13,\r\n 27 // '27-esc' there is \"just in case\", I can imagine that there are user agents that do UNDO\r\n ].indexOf(keyCode)>=0 \r\n || (keyCode == 9 && !empty) // otherwice there are no keyup (true at least for '9-tab'),\r\n ) {\r\n event.preventDefault(); \r\n \r\n // '13-enter' - prevention against form's default button \r\n // but doesn't help with bootsrap modal ESC or ENTER (close behaviour);\r\n }\r\n\r\n if ([ 38, 40 ].indexOf(keyCode) >= 0 )\r\n event.preventDefault(); \r\n\r\n if (keyCode == 8 /*backspace*/) {\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 // let isBackspaceAtStartPoint = (this.filterInput.selectionStart == 0 && this.filterInput.selectionEnd == 0);\r\n if (empty) {\r\n onBackspace();\r\n }\r\n }\r\n // ---------------------------------------------------------------------------------\r\n // NOTE: no preventDefault called in case of empty for 9-tab\r\n else if (keyCode == 9 /*tab*/) { // NOTE: no keydown for this (without preventDefaul after TAB keyup event will be targeted another element) \r\n if (empty) { \r\n onTabForEmpty(); // hideChoices inside (and no filter reset since it is empty) \r\n }\r\n }\r\n else if (keyCode == 27 /*esc*/ ) { // NOTE: forbid the ESC to close the modal (in case the nonempty or dropdown is open)\r\n \r\n if (!empty || stopEscKeyDownPropogation())\r\n event.stopPropagation()\r\n }\r\n else if (keyCode == 38) {\r\n onKeyDownArrowUp();\r\n }\r\n else if (keyCode == 40) {\r\n onKeyDownArrowDown();\r\n }\r\n }\r\n \r\n var onFilterInputKeyUp = (event) => {\r\n let keyCode = event.which;\r\n //var handler = keyUp[event.which/* key code */];\r\n //handler();\r\n\r\n if (keyCode == 9) {\r\n onTabToCompleate();\r\n }\r\n else if (keyCode == 13 ) {\r\n onEnterToCompleate();\r\n }\r\n else if (keyCode == 27) { // escape\r\n onKeyUpEsc(); // is it always empty (bs x can still it) \r\n }\r\n }\r\n \r\n // it can be initated by 3PP functionality\r\n // sample (1) BS functionality - input x button click - clears input\r\n // sample (2) BS functionality - esc keydown - clears input\r\n // and there could be difference in processing: (2) should hide the menu, then reset , when (1) should just reset without hiding.\r\n var onFilterInputInput = () => {\r\n var filterInputValue = filterInputElement.value;\r\n onInput(\r\n filterInputValue, \r\n ()=> {filterInputElement.style.width = filterInputValue.length*1.3 + 2 + \"ch\"} // TODO: better width calculation\r\n );\r\n }\r\n \r\n var eventBinder = EventBinder();\r\n eventBinder.bind(filterInputElement,'focusin', onFocusIn);\r\n eventBinder.bind(filterInputElement,'focusout', onFocusOut);\r\n eventBinder.bind(filterInputElement,'input', onFilterInputInput);\r\n eventBinder.bind(filterInputElement,'keydown', onfilterInputKeyDown); \r\n eventBinder.bind(filterInputElement,'keyup', onFilterInputKeyUp);\r\n\r\n return {\r\n isEmpty,\r\n setEmpty(){\r\n filterInputElement.value ='';\r\n },\r\n setFocus(){\r\n filterInputElement.focus();\r\n },\r\n // TODO: check why I need this comparision? \r\n setFocusIfNotTarget(target){\r\n if (target != filterInputElement)\r\n filterInputElement.focus();\r\n },\r\n dispose(){\r\n eventBinder.unbind();\r\n }\r\n }\r\n}","export function isObject(value){\r\n return typeof value === 'object' && value !== null\r\n}\r\n\r\nexport function isBoolean(value){\r\n return value === true || value === false;\r\n}\r\n\r\nexport function isString(value){\r\n return value instanceof String || typeof(value) === 'string';\r\n}\r\n\r\nexport function extendIfUndefined(destination, source) {\r\n for (let property in source)\r\n if (destination[property] === undefined)\r\n destination[property] = source[property];\r\n}\r\n\r\nexport function extendOverriding(destination, source) {\r\n for (let property in source)\r\n destination[property] = source[property];\r\n}\r\n\r\nexport function shallowClearClone(source, ...sources) { // override previous, no null and undefined\r\n var destination = {};\r\n for (let property in source){ // TODO: Object.assign (need polyfill for IE11)\r\n let v = source[property];\r\n if (!(v === null || v===undefined))\r\n destination[property] = v;\r\n }\r\n if(sources)\r\n sources.forEach(\r\n s=>{\r\n for(let property in s){\r\n let v = s[property];\r\n if (!(v === null || v===undefined))\r\n destination[property] = v;\r\n else\r\n if (destination.hasOwnProperty(property)){\r\n delete destination[property];\r\n }\r\n }\r\n }\r\n )\r\n return destination;\r\n}\r\n\r\nfunction forEachRecursion(f, i){\r\n if (!i)\r\n return;\r\n f(i.value); \r\n forEachRecursion(f, i.prev);\r\n}\r\n\r\nexport function List(){\r\n var tail = null;\r\n var count = 0;\r\n return {\r\n add(e){\r\n if (tail){\r\n tail.next = {value:e, prev:tail, next:null};\r\n tail = tail.next;\r\n } else \r\n tail = {value:e, prev:null, next:null}\r\n count++;\r\n let node = tail;\r\n function remove(){\r\n if (node.prev){\r\n (node.prev).next = node.next;\r\n }\r\n if (node.next){\r\n (node.next).prev = node.prev;\r\n }\r\n if (tail == node){\r\n tail = node.prev;\r\n }\r\n count--;\r\n }\r\n return remove;\r\n },\r\n forEach(f){\r\n forEachRecursion(f, tail);\r\n },\r\n getTail(){ return (tail)?tail.value:null },\r\n getCount(){ return count },\r\n isEmpty(){ return count==0 },\r\n reset(){ tail=null; \r\n count = 0 }\r\n }\r\n}\r\n\r\nexport function ListFacade(getPrev, setPrev, getNext, setNext){\r\n var head = null, tail = null;\r\n var count = 0;\r\n var remove = (e) => {\r\n let next = getNext(e);\r\n let prev = getPrev(e);\r\n if (prev) {\r\n setNext(prev, next)\r\n }\r\n if (next) {\r\n setPrev(next, prev)\r\n }\r\n if (tail == e) {\r\n tail = prev;\r\n }\r\n if (head == e) {\r\n head = next; \r\n }\r\n count--;\r\n }\r\n return {\r\n add(e, next){\r\n if (!tail){\r\n head = tail = e;\r\n }\r\n else {\r\n if (!next){\r\n setPrev(e, tail);\r\n setNext(tail, e);\r\n tail = e;\r\n } \r\n else{\r\n if (next===head)\r\n head=e;\r\n let prev = getPrev(next);\r\n setNext(e, next);\r\n setPrev(next, e);\r\n if (prev){\r\n setPrev(e, prev);\r\n setNext(prev, e);\r\n } else {\r\n setPrev(e, null);\r\n }\r\n } \r\n }\r\n count++;\r\n },\r\n remove, \r\n forEach(f){\r\n forEachRecursion(f, tail);\r\n },\r\n getHead(){ return head },\r\n getTail(){ return tail },\r\n getCount(){ return count },\r\n isEmpty(){ return count==0 },\r\n reset(){ \r\n tail=head=null; \r\n count = 0; }\r\n }\r\n}\r\n\r\nexport function CollectionFacade(getPrev, setPrev, getNext, setNext){\r\n var list = [];\r\n var head = null, tail = null;\r\n var count = 0;\r\n var remove = (key) => {\r\n var e = list[key];\r\n list.splice(key, 1);\r\n let next = getNext(e);\r\n let prev = getPrev(e);\r\n if (prev) {\r\n setNext(prev, next)\r\n }\r\n if (next) {\r\n setPrev(next, prev)\r\n }\r\n if (tail == e) {\r\n tail = prev;\r\n }\r\n if (head == e) {\r\n head = next; \r\n }\r\n count--;\r\n return e;\r\n }\r\n return {\r\n getLength(){\r\n return list.length;\r\n },\r\n push(e){\r\n list.push(e);\r\n if (!tail){\r\n head = tail = e;\r\n }\r\n else {\r\n setPrev(e, tail);\r\n setNext(tail, e);\r\n tail = e;\r\n }\r\n count++;\r\n },\r\n add(e, key){\r\n if (!tail){\r\n head = tail = e;\r\n }\r\n else {\r\n let next = list[key];\r\n if (!next) {\r\n setPrev(e, tail);\r\n setNext(tail, e);\r\n tail = e;\r\n } \r\n else {\r\n list.splice(key, 0, e);\r\n\r\n if (next===head)\r\n head=e;\r\n let prev = getPrev(next);\r\n setNext(e, next);\r\n setPrev(next, e);\r\n if (prev){\r\n setPrev(e, prev);\r\n setNext(prev, e);\r\n } else {\r\n setPrev(e, null);\r\n }\r\n } \r\n }\r\n count++;\r\n },\r\n get: (key) => list[key],\r\n remove, \r\n forLoop(f){\r\n for(let i=0; i sync(...functions)\r\n}\r\n\r\nexport function sync(...functions){\r\n functions.forEach(\r\n (f) => {\r\n if (f)\r\n f();\r\n }\r\n )\r\n}\r\n\r\nexport function def(...functions){\r\n for (let f of functions) \r\n if (f) {\r\n return f;\r\n }\r\n}\r\n\r\nexport function defCall(...functions){\r\n for (let f of functions) \r\n if (f) {\r\n if (f instanceof Function){\r\n let tmp = f();\r\n if (tmp)\r\n return tmp;\r\n }\r\n else\r\n return f \r\n }\r\n}\r\n\r\nexport function Observable(){\r\n var list = [];\r\n return {\r\n trigger(){\r\n f();\r\n },\r\n attach(f){\r\n list.push(f)\r\n },\r\n detachAll(){\r\n list.length = 0;\r\n }\r\n }\r\n}\r\n\r\nexport function ObservableValue(value){\r\n var list = List();\r\n return {\r\n getValue(){\r\n return value;\r\n },\r\n setValue(newValue){\r\n value = newValue;\r\n list.forEach(f=>f(newValue));\r\n },\r\n attach(f){\r\n return list.add(f)\r\n },\r\n detachAll(){\r\n list.reset();\r\n }\r\n }\r\n}\r\n\r\n// export function isFunction(obj){\r\n// return typeof obj === 'function'\r\n// }\r\n\r\nexport function ObservableLambda(func){\r\n var list = List();\r\n var value = func();\r\n return {\r\n getValue(){\r\n return value;\r\n },\r\n call(){\r\n value = func();\r\n list.forEach(f=>f(value));\r\n },\r\n attach(f){\r\n return list.add(f)\r\n },\r\n detachAll(){\r\n list.reset();\r\n }\r\n }\r\n}","import {CollectionFacade} from './ToolsJs'\r\n\r\nexport function Choices(listFacade, navigate, addFilterFacade, insertFilterFacade) \r\n{\r\n let hoveredChoice=null;\r\n\r\n let collection = CollectionFacade(\r\n (choice)=>choice.itemPrev, \r\n (choice, v)=>choice.itemPrev=v, \r\n (choice)=>choice.itemNext, \r\n (choice, v)=>choice.itemNext=v, \r\n );\r\n\r\n function resetHoveredChoice() {\r\n if (hoveredChoice) {\r\n hoveredChoice.setHoverIn(false)\r\n hoveredChoice = null;\r\n }\r\n }\r\n\r\n var push = (choice) => {\r\n addFilterFacade(choice);\r\n collection.push(choice);\r\n }\r\n\r\n var item = {\r\n push,\r\n get: (key) => collection.get(key),\r\n getHead: () => collection.getHead(),\r\n insert: (key, choice) => {\r\n if (key>=collection.getLength()) {\r\n push(choice);\r\n }\r\n else {\r\n collection.add(choice, key);\r\n insertFilterFacade(choice);\r\n }\r\n },\r\n remove: (key) => {\r\n var choice = collection.remove(key);\r\n listFacade.remove(choice);\r\n return choice;\r\n },\r\n forLoop: (f)=>collection.forLoop(f),\r\n getHoveredChoice: () => hoveredChoice,\r\n hoverIn(choice){\r\n resetHoveredChoice(); \r\n hoveredChoice = choice;\r\n hoveredChoice.setHoverIn(true)\r\n },\r\n resetHoveredChoice,\r\n navigate: (down) => navigate(down, hoveredChoice),\r\n \r\n clear:()=>{\r\n collection.reset();\r\n listFacade.reset();\r\n },\r\n dispose: () => collection.forLoop(choice => choice.dispose?.())\r\n }\r\n return item;\r\n}","import {List} from './ToolsJs'\r\n\r\nexport function Picks() \r\n{\r\n var list = List();\r\n return {\r\n addPick(pick) {\r\n var removeFromList = list.add(pick);\r\n return removeFromList;\r\n },\r\n removePicksTail(){ \r\n var pick = list.getTail();\r\n if (pick) \r\n pick.remove(); // always remove in this case\r\n return pick;\r\n },\r\n isEmpty: list.isEmpty, // function\r\n getCount: list.getCount,\r\n disableRemoveAll(){\r\n list.forEach(i=>i.disableRemove())\r\n },\r\n removeAll(){\r\n list.forEach(i=>i.remove())\r\n },\r\n clear() {\r\n list.forEach(i=>i.dispose());\r\n list.reset();\r\n },\r\n dispose(){\r\n list.forEach(i=>i.dispose());\r\n \r\n }\r\n }\r\n}","import {EventBinder, EventLoopFlag, containsAndSelf} from './ToolsDom'\r\n\r\nexport function MultiSelectInputAspect (\r\n window,\r\n filterInputElement, \r\n picksElement,\r\n choicesElement, \r\n isChoicesVisible,\r\n setChoicesVisible,\r\n resetHoveredChoice, \r\n hoverIn,\r\n resetFilter,\r\n isChoiceEmpty,\r\n onClick,\r\n resetFocus,\r\n alignToFilterInputItemLocation\r\n ) \r\n{\r\n var document = window.document;\r\n var eventLoopFlag = EventLoopFlag(window); \r\n var skipFocusout = false;\r\n \r\n function getSkipFocusout() {\r\n return skipFocusout;\r\n };\r\n function resetSkipFocusout() {\r\n skipFocusout = false;\r\n };\r\n function setSkipFocusout() {\r\n skipFocusout = true;\r\n };\r\n\r\n // we want to escape the closing of the menu (because of focus out from) on a user's click inside the container\r\n var skipoutMousedown = function() {\r\n setSkipFocusout();\r\n }\r\n\r\n var documentMouseup = function(event) {\r\n // if we would left without focus then \"close the drop\" do not remove focus border\r\n if (choicesElement == event.target) \r\n filterInputElement.focus()\r\n\r\n // if click outside container - close dropdown\r\n else if ( !containsAndSelf(choicesElement, event.target) && !containsAndSelf(picksElement, event.target)) {\r\n hideChoices();\r\n resetFilter();\r\n resetFocus();\r\n }\r\n }\r\n\r\n var preventDefaultClickEvent = null;\r\n\r\n var componentDisabledEventBinder = EventBinder();\r\n\r\n // TODO: remove setTimeout: set on start of mouse event reset on end\r\n function skipoutAndResetMousedown(){\r\n skipoutMousedown();\r\n window.setTimeout(()=>{resetSkipFocusout()}, 0);\r\n }\r\n picksElement.addEventListener(\"mousedown\", skipoutAndResetMousedown);\r\n\r\n function showChoices() {\r\n if ( !isChoicesVisible() )\r\n {\r\n alignToFilterInputItemLocation();\r\n eventLoopFlag.set();\r\n setChoicesVisible(true);\r\n \r\n // add listeners that manages close dropdown on click outside container\r\n choicesElement.addEventListener(\"mousedown\", skipoutMousedown);\r\n document.addEventListener(\"mouseup\", documentMouseup);\r\n }\r\n }\r\n\r\n function clickToShowChoices(event){\r\n onClick(event);\r\n if (preventDefaultClickEvent != event) {\r\n if (isChoicesVisible()){\r\n hideChoices()\r\n } else {\r\n if (!isChoiceEmpty())\r\n showChoices();\r\n }\r\n }\r\n preventDefaultClickEvent=null;\r\n }\r\n\r\n function hideChoices() {\r\n resetMouseCandidateChoice();\r\n resetHoveredChoice();\r\n if (isChoicesVisible())\r\n {\r\n setChoicesVisible(false);\r\n \r\n choicesElement.removeEventListener(\"mousedown\", skipoutMousedown);\r\n document.removeEventListener(\"mouseup\", documentMouseup);\r\n }\r\n }\r\n\r\n function processUncheck(uncheckOption, event){\r\n // we can't remove item on \"click\" in the same loop iteration - it is unfrendly for 3PP event handlers (they will get detached element)\r\n // never remove elements in the same event iteration\r\n\r\n window.setTimeout(()=>uncheckOption(),0)\r\n preventDefaultClickEvent = event; // setPreventDefaultMultiSelectEvent\r\n }\r\n\r\n function handleOnRemoveButton(onRemove, setSelectedFalse){\r\n // processRemoveButtonClick removes the item\r\n // what is a problem with calling 'remove' directly (not using setTimeout('remove', 0)):\r\n // consider situation \"MultiSelect\" on DROPDOWN (that should be closed on the click outside dropdown)\r\n // therefore we aslo have document's click's handler where we decide to close or leave the DROPDOWN open.\r\n // because of the event's bubling process 'remove' runs first. \r\n // that means the event's target element on which we click (the x button) will be removed from the DOM together with badge \r\n // before we could analize is it belong to our dropdown or not.\r\n // important 1: we can't just the stop propogation using stopPropogate because click outside dropdown on the similar \r\n // component that use stopPropogation will not close dropdown (error, dropdown should be closed)\r\n // important 2: we can't change the dropdown's event handler to leave dropdown open if event's target is null because of\r\n // the situation described above: click outside dropdown on the same component.\r\n // Alternatively it could be possible to use stopPropogate but together create custom click event setting new target \r\n // that belomgs to DOM (e.g. panel)\r\n let processRemoveButtonClick = (event) => {\r\n processUncheck(setSelectedFalse, event);\r\n hideChoices();\r\n resetFilter(); \r\n };\r\n onRemove(event => {\r\n processRemoveButtonClick(event);\r\n });\r\n }\r\n \r\n let mouseCandidateEventBinder = EventBinder();\r\n var resetMouseCandidateChoice = () => {\r\n mouseCandidateEventBinder.unbind();\r\n };\r\n\r\n var mouseOverToHoveredAndReset = (choice) => {\r\n if (!choice.isHoverIn)\r\n hoverIn(choice);\r\n resetMouseCandidateChoice();\r\n };\r\n\r\n function adoptChoiceElement(choice, choiceElement){\r\n\r\n // in chrome it happens on \"become visible\" so we need to skip it, \r\n // for IE11 and edge it doesn't happens, but for IE11 and Edge it doesn't happens on small \r\n // mouse moves inside the item. \r\n // https://stackoverflow.com/questions/59022563/browser-events-mouseover-doesnt-happen-when-you-make-element-visible-and-mous\r\n \r\n var onChoiceElementMouseover = () => \r\n {\r\n if (eventLoopFlag.get())\r\n {\r\n resetMouseCandidateChoice();\r\n mouseCandidateEventBinder.bind(choiceElement, 'mousemove', ()=>mouseOverToHoveredAndReset(choice));\r\n mouseCandidateEventBinder.bind(choiceElement, 'mousedown', ()=>mouseOverToHoveredAndReset(choice));\r\n }\r\n else\r\n {\r\n if (!choice.isHoverIn)\r\n {\r\n // NOTE: mouseleave is not enough to guarantee remove hover styles in situations\r\n // when style was setuped without mouse (keyboard arrows)\r\n // therefore force reset manually (done inside hoverIn)\r\n hoverIn(choice);\r\n } \r\n }\r\n }\r\n \r\n // note 1: mouseleave preferred to mouseout - which fires on each descendant\r\n // note 2: since I want add aditional info panels to the dropdown put mouseleave on dropdwon would not work\r\n var onChoiceElementMouseleave = () => {\r\n if (!eventLoopFlag.get()) {\r\n resetHoveredChoice();\r\n }\r\n }\r\n var overAndLeaveEventBinder = EventBinder();\r\n overAndLeaveEventBinder.bind(choiceElement, 'mouseover', onChoiceElementMouseover);\r\n overAndLeaveEventBinder.bind(choiceElement, 'mouseleave', onChoiceElementMouseleave);\r\n\r\n return overAndLeaveEventBinder.unbind;\r\n }\r\n\r\n return {\r\n adoptChoiceElement,\r\n dispose(){\r\n resetMouseCandidateChoice();\r\n picksElement.removeEventListener(\"mousedown\", skipoutAndResetMousedown);\r\n componentDisabledEventBinder.unbind();\r\n },\r\n onFocusOut(action){\r\n if (!getSkipFocusout()){ // skip initiated by mouse click (we manage it different way)\r\n resetFilter(); // if do not do this we will return to filtered list without text filter in input\r\n action();\r\n }\r\n resetSkipFocusout();\r\n },\r\n disable(isComponentDisabled){\r\n if (isComponentDisabled)\r\n componentDisabledEventBinder.unbind();\r\n else\r\n componentDisabledEventBinder.bind(picksElement, \"click\", clickToShowChoices); \r\n },\r\n eventLoopFlag,\r\n hideChoices,\r\n showChoices,\r\n handleOnRemoveButton\r\n }\r\n}","export function Choice(option, isOptionSelected, isOptionDisabled){\r\n let choice = {\r\n option: option,\r\n \r\n isOptionSelected: isOptionSelected,\r\n isOptionDisabled: isOptionDisabled,\r\n \r\n updateDisabled: null,\r\n updateSelected: null,\r\n\r\n // navigation and filter support\r\n filteredPrev: null, \r\n filteredNext: null, \r\n searchText: option.text.toLowerCase().trim(), // TODO make an index abstraction\r\n\r\n // internal state handlers, so they do not have \"update semantics\"\r\n isHoverIn: false,\r\n isFilterIn: false,\r\n\r\n setVisible: null,\r\n setHoverIn: null,\r\n\r\n // TODO: is it a really sense to have them there?\r\n choiceElement: null,\r\n choiceElementAttach: null,\r\n\r\n itemPrev: null,\r\n itemNext: null,\r\n \r\n remove: null,\r\n\r\n dispose: null,\r\n\r\n isOptionHidden: null\r\n }\r\n return choice;\r\n}\r\n\r\nexport function dispose(choice) {\r\n choice.choiceElement = null;\r\n choice.choiceElementAttach = null;\r\n \r\n choice.updateSelected = null;\r\n choice.updateDisabled = null;\r\n\r\n // not real data manipulation but internal state\r\n choice.setVisible = null; // TODO: refactor it there should be 3 types of not visibility: for hidden, for filtered out, for optgroup, for message item\r\n choice.setHoverIn = null;\r\n \r\n choice.dispose = null;\r\n}","export function FilterFacade(\r\n listFacade,\r\n forEach,\r\n composeFilterPredicate \r\n ) \r\n{\r\n return {\r\n setFilter: (text)=> { \r\n let getFilterIn = composeFilterPredicate(text)\r\n listFacade.reset();\r\n forEach( (choice)=>{\r\n choice.filteredPrev = choice.filteredNext = null;\r\n var v = getFilterIn(choice);\r\n if (v)\r\n listFacade.add(choice);\r\n choice.setVisible(v);\r\n });\r\n },\r\n resetFilter: () => {\r\n listFacade.reset();\r\n forEach( (choice)=>{\r\n choice.filteredPrev = choice.filteredNext = null;\r\n listFacade.add(choice);\r\n choice.setVisible(true);\r\n });\r\n },\r\n navigate: (down, choice) => {\r\n if (down) {\r\n return choice?choice.filteredNext: listFacade.getHead();\r\n } else {\r\n return choice?choice.filteredPrev: listFacade.getTail();\r\n }\r\n }\r\n }\r\n}","import {FilterPanel} from './FilterPanel'\r\nimport {Choices} from './Choices'\r\nimport {Picks} from './Picks'\r\nimport {MultiSelectInputAspect} from './MultiSelectInputAspect'\r\nimport {Choice} from './Choice'\r\nimport {ListFacade, sync, composeSync} from './ToolsJs'\r\nimport {FilterFacade} from './FilterFacade'\r\n\r\nexport class MultiSelect {\r\n constructor(\r\n getOptions,\r\n getIsComponentDisabled,\r\n setSelected, \r\n getIsOptionSelected,\r\n getIsOptionDisabled,\r\n staticContent, \r\n pickContentGenerator, \r\n choiceContentGenerator, \r\n onChange,\r\n window) {\r\n // readonly\r\n this.getOptions=getOptions;\r\n this.getIsOptionSelected = getIsOptionSelected;\r\n this.getIsOptionDisabled = getIsOptionDisabled;\r\n this.staticContent = staticContent;\r\n this.pickContentGenerator = pickContentGenerator;\r\n this.choiceContentGenerator = choiceContentGenerator;\r\n this.setSelected=setSelected; \r\n this.window = window;\r\n\r\n this.visibleCount=10;\r\n\r\n this.choices = null;\r\n this.picks = null;\r\n this.stylingComposite = null;\r\n this.onChange=onChange;\r\n\r\n this.getIsComponentDisabled = getIsComponentDisabled;\r\n }\r\n\r\n setOptionSelected(choice, value){\r\n let success = false;\r\n var confirmed = this.setSelected(choice.option, value);\r\n if (!(confirmed===false)) {\r\n choice.isOptionSelected = value;\r\n choice.updateSelected();\r\n success = true;\r\n }\r\n return success;\r\n }\r\n\r\n toggleOptionSelected(choice){\r\n var success = false;\r\n if (choice.isOptionSelected || !choice.isOptionDisabled)\r\n success = this.setOptionSelected(choice, !choice.isOptionSelected);\r\n return success;\r\n }\r\n \r\n resetFilter(){\r\n if (!this.filterPanel.isEmpty()) \r\n this.forceResetFilter();\r\n }\r\n\r\n forceResetFilter(){\r\n this.filterPanel.setEmpty();\r\n this.processEmptyInput();\r\n }\r\n\r\n processEmptyInput(){\r\n this.filterFacade.resetFilter();\r\n }\r\n\r\n isSelectable(choice){\r\n return !choice.isOptionSelected && !choice.isOptionDisabled;\r\n }\r\n \r\n empty(){\r\n // close drop down , remove filter\r\n this.aspect.hideChoices(); // always hide 1st\r\n this.resetFilter();\r\n\r\n this.staticContent.choicesElement.innerHTML = \"\"; // TODO: there should better \"optimization\"\r\n \r\n this.choices.clear();\r\n this.picks.clear();\r\n }\r\n \r\n update(){\r\n this.updateAppearance();\r\n this.updateData();\r\n }\r\n updateData(){\r\n this.empty();\r\n this.updateDataImpl();\r\n }\r\n updateAppearance(){\r\n this.updateDisabled(); \r\n }\r\n updateDisabled(){\r\n let isComponentDisabled = this.getIsComponentDisabled();\r\n if (this.isComponentDisabled!==isComponentDisabled){\r\n this.isComponentDisabled=isComponentDisabled;\r\n this.picks.disableRemoveAll(isComponentDisabled);\r\n this.aspect.disable(isComponentDisabled);\r\n this.staticContent.disable(isComponentDisabled);\r\n }\r\n }\r\n updateOptionsDisabled(){\r\n this.choices.forLoop(\r\n choice => {\r\n let newIsDisabled = multiSelect.getIsOptionDisabled(choice.option);\r\n if (newIsDisabled != choice.isOptionDisabled)\r\n {\r\n choice.isOptionDisabled= newIsDisabled;\r\n choice.updateDisabled();\r\n }\r\n }\r\n );\r\n }\r\n updateOptionsSelected(){\r\n this.choices.forLoop(\r\n choice => {\r\n let newIsSelected = this.getIsOptionSelected(choice.option);\r\n if (newIsSelected != choice.isOptionSelected)\r\n {\r\n choice.isOptionSelected = newIsSelected;\r\n choice.updateSelected();\r\n }\r\n }\r\n );\r\n }\r\n selectAll(){\r\n this.aspect.hideChoices(); // always hide 1st\r\n this.choices.forLoop(\r\n choice => {\r\n if (this.isSelectable(choice))\r\n this.setOptionSelected(choice, true)\r\n }\r\n ); \r\n this.resetFilter();\r\n }\r\n deselectAll(){\r\n this.aspect.hideChoices(); // always hide 1st\r\n this.picks.removeAll();\r\n this.resetFilter();\r\n }\r\n\r\n createPick(choice){\r\n let { pickElement, attach, detach } = this.staticContent.createPickElement(); // TODO move removeElement to staticContent\r\n let pickContent = this.pickContentGenerator(pickElement);\r\n \r\n var pick = {\r\n disableRemove: () => pickContent.disableRemove(this.getIsComponentDisabled()),\r\n setData: () => pickContent.setData(choice.option),\r\n disable: () => pickContent.disable( this.getIsOptionDisabled(choice.option) ),\r\n remove: null,\r\n dispose: () => { \r\n detach(); \r\n pickContent.dispose(); \r\n pick.disableRemove=null; pick.setData=null; pick.disable=null; pick.remove=null; \r\n pick.dispose=null; \r\n }, \r\n }\r\n pick.setData();\r\n pick.disableRemove();\r\n \r\n attach();\r\n let choiceUpdateDisabledBackup = choice.updateDisabled;\r\n choice.updateDisabled = composeSync(choiceUpdateDisabledBackup, pick.disable);\r\n\r\n var removeFromList = this.picks.addPick(pick);\r\n let removePick = () => {\r\n removeFromList();\r\n pick.dispose();\r\n\r\n choice.updateDisabled = choiceUpdateDisabledBackup; \r\n choice.updateDisabled(); // make \"true disabled\" without it checkbox looks disabled\r\n }\r\n let setSelectedFalse = () => this.setOptionSelected(choice, false)\r\n pick.remove = setSelectedFalse;\r\n \r\n this.aspect.handleOnRemoveButton(pickContent.onRemove, setSelectedFalse);\r\n return removePick;\r\n }\r\n\r\n createChoiceElement(choice){\r\n var {choiceElement, setVisible, attach, detach} = this.staticContent.createChoiceElement();\r\n choice.choiceElement = choiceElement;\r\n choice.choiceElementAttach = attach;\r\n \r\n let choiceContent = this.choiceContentGenerator(choiceElement, () => {\r\n this.toggleOptionSelected(choice);\r\n this.filterPanel.setFocus();\r\n });\r\n \r\n let updateSelectedChoiceContent = () => \r\n choiceContent.select(choice.isOptionSelected)\r\n \r\n let pickTools = { updateSelectedTrue: null, updateSelectedFalse: null }\r\n let createPick = () => { \r\n var removePick = this.createPick(choice);\r\n pickTools.updateSelectedFalse = removePick;\r\n };\r\n \r\n pickTools.updateSelectedTrue = createPick;\r\n \r\n choice.remove = () => {\r\n detach();\r\n if (pickTools.updateSelectedFalse) {\r\n pickTools.updateSelectedFalse();\r\n pickTools.updateSelectedFalse=null;\r\n }\r\n };\r\n \r\n choice.updateSelected = () => {\r\n updateSelectedChoiceContent();\r\n if (choice.isOptionSelected)\r\n pickTools.updateSelectedTrue();\r\n else {\r\n pickTools.updateSelectedFalse();\r\n pickTools.updateSelectedFalse=null;\r\n }\r\n this.onChange();\r\n }\r\n \r\n var unbindChoiceElement = this.aspect.adoptChoiceElement(choice, choiceElement);\r\n \r\n choice.isFilteredIn = true;\r\n \r\n choiceContent.setData(choice.option);\r\n \r\n choice.setHoverIn = (v) => {\r\n choice.isHoverIn =v ;\r\n choiceContent.hoverIn(choice.isHoverIn);\r\n }\r\n \r\n choice.setVisible = (v) => {\r\n choice.isFilteredIn = v;\r\n setVisible(choice.isFilteredIn)\r\n }\r\n \r\n choice.updateDisabled = () => {\r\n choiceContent.disable(choice.isOptionDisabled, choice.isOptionSelected); \r\n }\r\n \r\n choice.dispose = () => {\r\n unbindChoiceElement();\r\n choiceContent.dispose();\r\n\r\n choice.choiceElement = null;\r\n choice.choiceElementAttach = null;\r\n choice.remove = null; \r\n \r\n choice.updateSelected = null;\r\n choice.updateDisabled = null;\r\n \r\n // not real data manipulation but internal state\r\n choice.setVisible = null; // TODO: refactor it there should be 3 types of not visibility: for hidden, for filtered out, for optgroup, for message item\r\n choice.setHoverIn = null;\r\n \r\n choice.dispose = null;\r\n }\r\n \r\n if (choice.isOptionSelected) {\r\n updateSelectedChoiceContent();\r\n createPick();\r\n }\r\n choice.updateDisabled(); \r\n }\r\n\r\n createChoice(option){\r\n let isOptionSelected = this.getIsOptionSelected(option);\r\n let isOptionDisabled = this.getIsOptionDisabled(option); \r\n \r\n return Choice(option, isOptionSelected, isOptionDisabled);\r\n }\r\n\r\n insertChoiceItem(choice){\r\n this.createChoiceElement(choice);\r\n let nextChoice = this.getNext(choice);\r\n choice.choiceElementAttach(nextChoice?.choiceElement);\r\n }\r\n\r\n pushChoiceItem(choice){\r\n this.createChoiceElement(choice);\r\n choice.choiceElementAttach();\r\n }\r\n\r\n input(filterInputValue, resetLength){\r\n let text = filterInputValue.trim().toLowerCase();\r\n var isEmpty=false;\r\n if (text == '')\r\n isEmpty=true;\r\n else\r\n {\r\n // check if exact match, otherwise new search\r\n this.filterFacade.setFilter(text);\r\n if (this.filterListFacade.getCount() == 1)\r\n {\r\n let fullMatchChoice = this.filterListFacade.getHead();\r\n if (fullMatchChoice.searchText == text)\r\n {\r\n this.setOptionSelected(fullMatchChoice, true);\r\n this.filterPanel.setEmpty();\r\n isEmpty=true;\r\n }\r\n }\r\n }\r\n if (isEmpty){\r\n this.processEmptyInput();\r\n }\r\n else\r\n resetLength(); \r\n \r\n this.aspect.eventLoopFlag.set(); // means disable some mouse handlers; otherwise we will get \"Hover On MouseEnter\" when filter's changes should remove hover\r\n\r\n let visibleCount = this.filterListFacade.getCount();\r\n\r\n if (visibleCount>0){\r\n let panelIsVisble = this.staticContent.isChoicesVisible();\r\n if (!panelIsVisble){\r\n this.aspect.showChoices();\r\n }\r\n if (visibleCount == 1) {\r\n this.choices.hoverIn(this.filterListFacade.getHead())\r\n } else {\r\n if (panelIsVisble)\r\n this.choices.resetHoveredChoice();\r\n } \r\n }else{\r\n if (this.staticContent.isChoicesVisible())\r\n this.aspect.hideChoices();\r\n }\r\n }\r\n\r\n hoveredToSelected(){\r\n let hoveredChoice = this.choices.getHoveredChoice();\r\n if (hoveredChoice){\r\n var wasToggled = this.toggleOptionSelected(hoveredChoice);\r\n if (wasToggled) {\r\n this.aspect.hideChoices();\r\n this.resetFilter();\r\n }\r\n }\r\n }\r\n\r\n keyDownArrow(down) {\r\n let iChoice = this.choices.navigate(down);\r\n if (iChoice)\r\n {\r\n this.choices.hoverIn(iChoice);\r\n this.aspect.showChoices();\r\n }\r\n }\r\n\r\n setFocusIn(focus){\r\n this.staticContent.setIsFocusIn(focus)\r\n this.staticContent.toggleFocusStyling();\r\n }\r\n\r\n forEach(f){\r\n let choice = this.choices.getHead();\r\n while(choice){\r\n forEach( (choice)=>{\r\n f(choice);\r\n choice = this.getNext(choice);\r\n });\r\n }\r\n }\r\n\r\n getNext(choice){\r\n let next = choice.itemNext;\r\n return next;\r\n }\r\n\r\n navigate(down, hoveredChoice){\r\n return this.filterFacade.navigate(down, hoveredChoice);\r\n }\r\n\r\n addFilterFacade(choice){\r\n this.filterListFacade.add(choice);\r\n }\r\n\r\n insertFilterFacade(choice){\r\n let choiceNonhiddenBefore = this.getNext(choice);\r\n this.filterListFacade.add(choice, choiceNonhiddenBefore);\r\n }\r\n\r\n isEmpty(){\r\n return this.picks.isEmpty() && this.filterPanel.isEmpty();\r\n }\r\n\r\n init() {\r\n this.filterPanel = FilterPanel(\r\n this.staticContent.filterInputElement,\r\n () => this.setFocusIn(true), // focus in - show dropdown\r\n () => this.aspect.onFocusOut(\r\n ()=>this.setFocusIn(false)\r\n ), // focus out - hide dropdown\r\n () => this.keyDownArrow(false), // arrow up\r\n () => this.keyDownArrow(true), // arrow down\r\n /*onTabForEmpty*/() => this.aspect.hideChoices(), // tab on empty\r\n () => {\r\n let p = this.picks.removePicksTail();\r\n if (p)\r\n this.staticContent.updatePopupLocation();\r\n }, // backspace - \"remove last\"\r\n\r\n /*onTabToCompleate*/() => { \r\n if (this.staticContent.isChoicesVisible()) {\r\n this.hoveredToSelected();\r\n } \r\n },\r\n /*onEnterToCompleate*/() => { \r\n if (this.staticContent.isChoicesVisible()) {\r\n this.hoveredToSelected();\r\n } else {\r\n if (this.filterListFacade.getCount()>0){\r\n this.aspect.showChoices();\r\n }\r\n }\r\n },\r\n \r\n /*onKeyUpEsc*/() => {\r\n this.aspect.hideChoices(); // always hide 1st\r\n this.resetFilter();\r\n }, // esc keyup \r\n\r\n // tab/enter \"compleate hovered\"\r\n /*stopEscKeyDownPropogation */() => this.staticContent.isChoicesVisible(),\r\n\r\n /*onInput*/(filterInputValue, resetLength) =>\r\n { \r\n this.input(filterInputValue, resetLength) \r\n }\r\n );\r\n \r\n // attach filterInputElement\r\n this.staticContent.pickFilterElement.appendChild(this.staticContent.filterInputElement);\r\n\r\n this.staticContent.picksElement.appendChild(\r\n this.staticContent.pickFilterElement); // located filter in selectionsPanel \r\n\r\n this.picks = Picks();\r\n \r\n let composeFilterPredicate = (text) => \r\n (choice) => !choice.isOptionSelected && !choice.isOptionDisabled && choice.searchText.indexOf(text) >= 0 \r\n\r\n this.filterListFacade = ListFacade(\r\n (choice)=>choice.filteredPrev, \r\n (choice, v)=>choice.filteredPrev=v, \r\n (choice)=>choice.filteredNext, \r\n (choice, v)=>choice.filteredNext=v\r\n );\r\n\r\n this.filterFacade = FilterFacade(\r\n this.filterListFacade,\r\n (f) => this.forEach(f),\r\n composeFilterPredicate\r\n );\r\n \r\n this.choices = Choices(this.filterListFacade, \r\n (down, hoveredChoice)=>this.navigate(down, hoveredChoice),\r\n (c)=>this.addFilterFacade(c), \r\n (c)=>this.insertFilterFacade(c));\r\n\r\n\r\n this.staticContent.appendToContainer();\r\n\r\n this.aspect = MultiSelectInputAspect(\r\n this.window,\r\n this.staticContent.filterInputElement, \r\n this.staticContent.picksElement, \r\n this.staticContent.choicesElement, \r\n ()=>this.staticContent.isChoicesVisible(),\r\n (visible)=>this.staticContent.setChoicesVisible(visible),\r\n () => this.choices.resetHoveredChoice(), \r\n (choice) => this.choices.hoverIn(choice),\r\n () => this.resetFilter(),\r\n () => this.filterListFacade.getCount()==0, \r\n /*onClick*/(event) => this.filterPanel.setFocusIfNotTarget(event.target),\r\n /*resetFocus*/() => this.setFocusIn(false),\r\n /*alignToFilterInputItemLocation*/() => this.staticContent.updatePopupLocation()\r\n );\r\n this.staticContent.attachContainer();\r\n }\r\n\r\n load(){\r\n this.updateDataImpl();\r\n this.updateAppearance(); // TODO: now appearance should be done after updateDataImpl, because items should be \"already in place\", correct it\r\n }\r\n\r\n updateDataImpl(){\r\n var fillChoices = () => {\r\n let options = this.getOptions();\r\n for(let i = 0; i element.classList.add(e)) // todo use add(classes)\r\n backupStyling.classes = classes.slice();\r\n for (let property in styles){\r\n backupStyling.styles[property] = element.style[property];\r\n element.style[property] = styles[property]; // todo use Object.assign (need polyfill for IE11)\r\n }\r\n }\r\n return backupStyling;\r\n}\r\n\r\nfunction removeStyling(element, styling){\r\n if (styling) {\r\n var {classes, styles} = styling;\r\n classes.forEach(e=>element.classList.remove(e)) // todo use remove(classes)\r\n for (let property in styles)\r\n element.style[property] = styles[property]; // todo use Object.assign (need polyfill for IE11)\r\n }\r\n}\r\n\r\nexport function toggleStyling(element, styling){\r\n var backupStyling = {classes:[], styles:{}};\r\n var isOn=false;\r\n return (value)=>{\r\n if (value) {\r\n if (isOn===false){\r\n backupStyling = addStyling(element, styling)\r\n isOn=true;\r\n }\r\n } else {\r\n if (isOn===true){\r\n removeStyling(element,backupStyling);\r\n isOn=false;\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction extendClasses(out, param, actionStr, actionArr, isRemoveEmptyClasses){\r\n if (isString(param)){\r\n if (param === \"\"){\r\n if (isRemoveEmptyClasses){\r\n out.classes = [];\r\n }\r\n } else {\r\n let c = param.split(' ');\r\n out.classes = actionStr(c);\r\n }\r\n return true;\r\n } else if (param instanceof Array){\r\n if (param.length==0){\r\n if (isRemoveEmptyClasses){\r\n out.classes = [];\r\n }\r\n }\r\n else{\r\n out.classes = actionArr(param);\r\n }\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nfunction extend(value, param, actionStr, actionArr, actionObj, isRemoveEmptyClasses){\r\n var success = extendClasses(value, param, actionStr, actionArr, isRemoveEmptyClasses);\r\n if (success === false){\r\n if (param instanceof Object){\r\n var {classes, styles} = param;\r\n extendClasses(value, classes, actionStr, actionArr, isRemoveEmptyClasses);\r\n \r\n if (styles) {\r\n value.styles = actionObj(styles);\r\n } else if (!classes) {\r\n value.styles = actionObj(param)\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport function Styling(param){\r\n var value = {classes:[], styles:{}};\r\n if (param){\r\n extend(value, param, a=>a, a=>a.slice(), o=>shallowClearClone(o), true);\r\n }\r\n return Object.freeze(value);\r\n}\r\n\r\nfunction createStyling(isReplace, param, ...params){\r\n var value = {classes:[], styles:{}};\r\n if (param){\r\n extend(value, param, a=>a, a=>a.slice(), o=>shallowClearClone(o),true);\r\n if (params){\r\n var {classes, styles} = value;\r\n var extendInt = isReplace? (p)=>extend(value, p, s=>s, a=>a.slice(), o=> shallowClearClone(styles, o),true):\r\n (p)=>extend(value, p, a=>classes.concat(a), a=>classes.concat(a), o=>shallowClearClone(styles, o),false)\r\n params.forEach(p=> extendInt(p));\r\n }\r\n }\r\n return Styling(value);\r\n}\r\n\r\nexport function createCss(stylings1, stylings2){\r\n var destination = {};\r\n for (let property in stylings1) {\r\n let param1 = stylings1[property];\r\n\r\n let param2 = stylings2?stylings2[property]:undefined;\r\n if (param2===undefined)\r\n destination[property] = Styling(param1)\r\n else{\r\n destination[property] = createStyling(true, param1, param2); \r\n }\r\n }\r\n if (stylings2)\r\n for (let property in stylings2) {\r\n if (!stylings1[property])\r\n destination[property] = Styling(stylings2[property])\r\n }\r\n return destination;\r\n}\r\n\r\nexport function extendCss(stylings1, stylings2){\r\n for (let property in stylings2) {\r\n let param2 = stylings2[property];\r\n let param1 = stylings1[property];\r\n if (param1 === undefined)\r\n stylings1[property] = Styling(param2)\r\n else{\r\n stylings1[property] = createStyling(false, param1, param2); \r\n }\r\n }\r\n}","import {EventBinder} from './ToolsDom';\r\nimport {addStyling, toggleStyling} from './ToolsStyling';\r\n\r\nexport function pickContentGenerator(pickElement, common, css){\r\n pickElement.innerHTML = ''\r\n let pickContentElement = pickElement.querySelector('SPAN');\r\n let pickButtonElement = pickElement.querySelector('BUTTON');\r\n addStyling(pickContentElement, css.pickContent);\r\n addStyling(pickButtonElement, css.pickButton);\r\n let eventBinder = EventBinder();\r\n var disableToggleStyling = toggleStyling(pickContentElement, css.pickContent_disabled);\r\n return {\r\n setData(option){\r\n pickContentElement.textContent = option.text; \r\n },\r\n disable: (isDisabled)=>disableToggleStyling(isDisabled),\r\n disableRemove(isRemoveDisabled){\r\n pickButtonElement.disabled = isRemoveDisabled;\r\n },\r\n onRemove(removePick){\r\n eventBinder.bind(pickButtonElement, \"click\", event => removePick(event));\r\n },\r\n dispose(){\r\n eventBinder.unbind();\r\n }\r\n };\r\n}","import {EventBinder, containsAndSelf} from './ToolsDom';\r\nimport {addStyling, toggleStyling} from './ToolsStyling';\r\n\r\nexport function choiceContentGenerator(choiceElement, common, css, toggle){\r\n choiceElement.innerHTML = '
';\r\n let choiceContentElement = choiceElement.querySelector('DIV');\r\n let choiceCheckBoxElement = choiceContentElement.querySelector('INPUT');\r\n let choiceLabelElement = choiceContentElement.querySelector('LABEL');\r\n \r\n addStyling(choiceContentElement, css.choiceContent); \r\n addStyling(choiceCheckBoxElement, css.choiceCheckBox); \r\n addStyling(choiceLabelElement, css.choiceLabel); \r\n\r\n let selectToggleStyling = toggleStyling(choiceElement, css.choice_selected);\r\n let disable1ToggleStyling = toggleStyling(choiceElement, css.choice_disabled);\r\n let hoverInToggleStyling = toggleStyling(choiceElement, css.choice_hover);\r\n\r\n let disable2ToggleStyling = toggleStyling(choiceCheckBoxElement, css.choiceCheckBox_disabled)\r\n let disable3ToggleStyling = toggleStyling(choiceLabelElement, css.choiceLabel_disabled)\r\n let eventBinder = EventBinder();\r\n\r\n eventBinder.bind(choiceCheckBoxElement, \"change\", toggle);\r\n eventBinder.bind(choiceElement, \"click\", \r\n event => {\r\n if (containsAndSelf(choiceElement, event.target)) \r\n toggle();\r\n }\r\n );\r\n\r\n return {\r\n setData(option) {choiceLabelElement.textContent = option.text;},\r\n select(isOptionSelected){ \r\n selectToggleStyling(isOptionSelected);\r\n choiceCheckBoxElement.checked = isOptionSelected;\r\n }, \r\n disable(isOptionDisabled, isOptionSelected){\r\n disable1ToggleStyling(isOptionDisabled)\r\n disable2ToggleStyling(isOptionDisabled)\r\n disable3ToggleStyling(isOptionDisabled)\r\n\r\n // do not desable checkBox if option is selected! there should be possibility to unselect \"disabled\"\r\n choiceCheckBoxElement.disabled = isOptionDisabled && !isOptionSelected;\r\n },\r\n hoverIn(isHoverIn){\r\n hoverInToggleStyling(isHoverIn);\r\n },\r\n dispose(){\r\n eventBinder.unbind();\r\n }\r\n }\r\n}","import {findDirectChildByTagName, closestByClassName, removeElement} from './ToolsDom';\r\nimport {addStyling, toggleStyling} from './ToolsStyling';\r\n\r\nexport function staticContentGenerator(element, createElement, containerClass, css, Popper) { \r\n var selectElement = null;\r\n var containerElement = null;\r\n var picksElement = null;\r\n var ownPicksElement = false;\r\n\r\n function showError(message){\r\n element.style.backgroundColor = 'red';\r\n element.style.color = 'white';\r\n throw new Error(message);\r\n }\r\n if (element.tagName=='SELECT'){\r\n selectElement = element;\r\n if (containerClass){\r\n containerElement = closestByClassName(selectElement, containerClass)\r\n }\r\n }\r\n else if (element.tagName==\"DIV\" || element.tagName==\"UL\" )\r\n {\r\n if (element.tagName==\"DIV\"){ \r\n containerElement = element;\r\n selectElement = findDirectChildByTagName(element, 'SELECT');\r\n } else /*UL*/ {\r\n picksElement = element;\r\n containerElement = closestByClassName(element, containerClass);\r\n if (!containerElement){\r\n // TODO: create error message submethod\r\n showError('BsMultiSelect: definde on UL but container parent not found');\r\n }\r\n }\r\n } \r\n else \r\n {\r\n showError('BsMultiSelect: Only DIV and SELECT supported');\r\n }\r\n\r\n if (containerElement)\r\n picksElement = findDirectChildByTagName(containerElement, 'UL');\r\n\r\n if (!picksElement){\r\n picksElement = createElement('UL');\r\n ownPicksElement = true;\r\n }\r\n\r\n var ownContainerElement = false; \r\n if (!containerElement){\r\n containerElement = createElement('DIV');\r\n ownContainerElement= true;\r\n }\r\n containerElement.classList.add(containerClass);\r\n\r\n \r\n var backupDisplay = null;\r\n if (selectElement){ \r\n backupDisplay = selectElement.style.display;\r\n selectElement.style.display = 'none';\r\n }\r\n \r\n var required = false;\r\n if (selectElement){\r\n var backupedRequired = selectElement.required;\r\n if(selectElement.required===true){\r\n required = true;\r\n selectElement.required = false;\r\n }\r\n }\r\n\r\n var choicesElement = createElement('UL');\r\n choicesElement.style.display = 'none';\r\n \r\n var pickFilterElement = createElement('LI');\r\n var filterInputElement = createElement('INPUT');\r\n \r\n addStyling(picksElement, css.picks);\r\n addStyling(choicesElement, css.choices);\r\n addStyling(pickFilterElement, css.pickFilter);\r\n addStyling(filterInputElement, css.filterInput);\r\n\r\n let isFocusIn = false;\r\n let disableToggleStyling = toggleStyling(picksElement, css.picks_disabled);\r\n let focusToggleStyling = toggleStyling(picksElement, css.picks_focus);\r\n\r\n let popper = null;\r\n let popperConfiguration = {\r\n placement: 'bottom-start',\r\n modifiers: {\r\n preventOverflow: {enabled:true},\r\n hide: {enabled:false},\r\n flip: {enabled:false}\r\n }\r\n };\r\n\r\n return {\r\n initialElement:element,\r\n selectElement, \r\n containerElement,\r\n\r\n pickFilterElement,\r\n filterInputElement,\r\n picksElement,\r\n createPickElement(){\r\n var pickElement = createElement('LI');\r\n addStyling(pickElement, css.pick);\r\n return {\r\n pickElement, \r\n attach: () => picksElement.insertBefore(pickElement, pickFilterElement),\r\n detach: () => removeElement(pickElement)\r\n };\r\n },\r\n choicesElement,\r\n createChoiceElement(){\r\n var choiceElement = createElement('LI');\r\n addStyling(choiceElement, css.choice);\r\n return {\r\n choiceElement, \r\n setVisible: (isVisible) => choiceElement.style.display = isVisible ? 'block': 'none',\r\n attach: (element) => choicesElement.insertBefore(choiceElement, element),\r\n detach: () => removeElement(choiceElement)\r\n };\r\n },\r\n required,\r\n attachContainer(){\r\n if (ownContainerElement && selectElement) // otherwise it is attached\r\n selectElement.parentNode.insertBefore(containerElement, selectElement.nextSibling);\r\n //if (!!Popper.prototype && !!Popper.prototype.constructor.name) {\r\n popper=new Popper(filterInputElement, choicesElement, popperConfiguration);\r\n /*}else{\r\n popper=Popper.createPopper(\r\n filterInputElement,\r\n choicesElement,\r\n // https://github.com/popperjs/popper.js/blob/next/docs/src/pages/docs/modifiers/prevent-overflow.mdx#mainaxis\r\n // {\r\n // placement: isRtl?'bottom-end':'bottom-start',\r\n // modifiers: { preventOverflow: {enabled:false}, hide: {enabled:false}, flip: {enabled:false} }\r\n // }\r\n );\r\n }*/\r\n },\r\n appendToContainer(){\r\n if (ownContainerElement || !selectElement) \r\n {\r\n if (ownPicksElement)\r\n containerElement.appendChild(picksElement);\r\n containerElement.appendChild(choicesElement);\r\n }\r\n else\r\n {\r\n if (selectElement)\r\n {\r\n // TODO picksElement element should be moved to attach\r\n selectElement.parentNode.insertBefore(choicesElement, selectElement.nextSibling);\r\n if (ownPicksElement)\r\n selectElement.parentNode.insertBefore(picksElement, choicesElement);\r\n }\r\n }\r\n },\r\n disable(isComponentDisabled){\r\n disableToggleStyling(isComponentDisabled)\r\n },\r\n getIsFocusIn(){\r\n return isFocusIn;\r\n },\r\n setIsFocusIn(newIsFocusIn){\r\n isFocusIn = newIsFocusIn;\r\n },\r\n toggleFocusStyling(){\r\n focusToggleStyling(isFocusIn)\r\n },\r\n isChoicesVisible(){\r\n return choicesElement.style.display != 'none';\r\n },\r\n setChoicesVisible(visible){\r\n choicesElement.style.display = visible?'block':'none';\r\n },\r\n popperConfiguration,\r\n updatePopupLocation(){\r\n popper.update(); \r\n },\r\n dispose(){\r\n if (ownContainerElement)\r\n containerElement.parentNode.removeChild(containerElement);\r\n \r\n if (ownPicksElement){\r\n picksElement.parentNode.removeChild(picksElement);\r\n }else{\r\n // remove styles, TODO: find something better?\r\n disableToggleStyling(false);\r\n focusToggleStyling(false); \r\n }\r\n choicesElement.parentNode.removeChild(choicesElement);\r\n if (pickFilterElement.parentNode)\r\n pickFilterElement.parentNode.removeChild(pickFilterElement);\r\n if (filterInputElement.parentNode)\r\n filterInputElement.parentNode.removeChild(filterInputElement);\r\n if (selectElement){\r\n selectElement.required = backupedRequired;\r\n selectElement.style.display = backupDisplay;\r\n }\r\n popper.destroy();\r\n }\r\n }\r\n}","import {MultiSelect} from './MultiSelect'\r\nimport {PluginManager} from './PluginManager'\r\n\r\nimport {closestByTagName} from './ToolsDom';\r\n\r\nimport {composeSync, def} from './ToolsJs';\r\n\r\nimport {pickContentGenerator as defPickContentGenerator} from './PickContentGenerator';\r\nimport {choiceContentGenerator as defChoiceContentGenerator} from './ChoiceContentGenerator';\r\nimport {staticContentGenerator as defStaticContentGenerator} from './StaticContentGenerator';\r\n\r\nexport function BsMultiSelect(element, environment, configuration, onInit){\r\n var {Popper, window, plugins} = environment;\r\n var trigger = (eventName)=> environment.trigger(element, eventName);\r\n if (typeof Popper === 'undefined') {\r\n throw new Error(\"BsMultiSelect: Popper.js (https://popper.js.org) is required\")\r\n }\r\n\r\n let { containerClass, css, \r\n options, getDisabled, \r\n getSelected, setSelected, \r\n getIsOptionDisabled,\r\n common } = configuration;\r\n \r\n let staticContentGenerator = def(configuration.staticContentGenerator, defStaticContentGenerator);\r\n \r\n let pickContentGenerator = def(configuration.pickContentGenerator, defPickContentGenerator);\r\n let choiceContentGenerator = def(configuration.choiceContentGenerator, defChoiceContentGenerator);\r\n\r\n let staticContent = staticContentGenerator(element, name=>window.document.createElement(name), containerClass, css, Popper);\r\n\r\n if (!common) \r\n common = {}\r\n \r\n let pluginData = {window, configuration, staticContent, common} // TODO replace common with staticContent (but staticContent should be splitted)\r\n let pluginManager = PluginManager(plugins, pluginData);\r\n\r\n let onChange;\r\n let getOptions;\r\n \r\n if (options){\r\n if (!getDisabled)\r\n getDisabled = () => false;\r\n getOptions = () => options;\r\n onChange = () => {\r\n trigger('dashboardcode.multiselect:change')\r\n }\r\n \r\n if (!getIsOptionDisabled)\r\n getIsOptionDisabled = option => (option.disabled===undefined) ? false : option.disabled;\r\n } \r\n else \r\n {\r\n let selectElement = staticContent.selectElement;\r\n if(!getDisabled){\r\n var fieldsetElement = closestByTagName(selectElement, 'FIELDSET');\r\n if (fieldsetElement) {\r\n getDisabled = () => selectElement.disabled || fieldsetElement.disabled;\r\n } else {\r\n getDisabled = () => selectElement.disabled;\r\n }\r\n } \r\n\r\n getOptions = () => selectElement.options; \r\n onChange = () => {\r\n trigger('change')\r\n trigger('dashboardcode.multiselect:change')\r\n }\r\n\r\n if (!getIsOptionDisabled)\r\n getIsOptionDisabled = option => option.disabled;\r\n }\r\n\r\n if (!getSelected){\r\n getSelected = (option) => option.selected;\r\n }\r\n if (!setSelected){\r\n setSelected = (option, value) => {option.selected = value};\r\n // NOTE: adding this (setAttribute) break Chrome's html form reset functionality:\r\n // if (value) option.setAttribute('selected','');\r\n // else option.removeAttribute('selected');\r\n }\r\n\r\n common.getDisabled = getDisabled;\r\n\r\n var multiSelect = new MultiSelect(\r\n getOptions,\r\n getDisabled,\r\n setSelected,\r\n getSelected,\r\n getIsOptionDisabled,\r\n staticContent,\r\n (pickElement) => pickContentGenerator(pickElement, common, css),\r\n (choiceElement, toggle) => choiceContentGenerator(choiceElement, common, css, toggle),\r\n onChange,\r\n window);\r\n\r\n pluginManager.afterConstructor(multiSelect);\r\n\r\n multiSelect.dispose = composeSync(pluginManager.dispose, multiSelect.dispose.bind(multiSelect));\r\n \r\n onInit?.(multiSelect);\r\n \r\n multiSelect.init();\r\n multiSelect.load();\r\n\r\n // support browser's \"step backward\" and form's values restore\r\n if (staticContent.selectElement && window.document.readyState !=\"complete\"){\r\n window.setTimeout(function(){multiSelect.updateOptionsSelected()});\r\n }\r\n\r\n return multiSelect;\r\n}","export const css = {\r\n choices: 'dropdown-menu', // bs4, in bsmultiselect.scss as ul.dropdown-menu\r\n choice_hover: 'hover', // not bs4, in scss as 'ul.dropdown-menu li.hover'\r\n choice_selected: '', \r\n choice_disabled: '', \r\n\r\n picks: 'form-control', // bs4, in scss 'ul.form-control'\r\n picks_focus: 'focus', // not bs4, in scss 'ul.form-control.focus'\r\n picks_disabled: 'disabled', // not bs4, in scss 'ul.form-control.disabled'\r\n pick_disabled: '', \r\n \r\n pickFilter: '', \r\n filterInput: '',\r\n\r\n // used in pickContentGenerator\r\n pick: 'badge', // bs4\r\n pickContent: '',\r\n pickContent_disabled: 'disabled', // not bs4, in scss 'ul.form-control li span.disabled'\r\n pickButton: 'close', // bs4\r\n\r\n // used in choiceContentGenerator\r\n // choice: 'dropdown-item', // it seems like hover should be managed manually since there should be keyboard support\r\n choiceCheckBox_disabled: 'disabled', // not bs4, in scss as 'ul.form-control li .custom-control-input.disabled ~ .custom-control-label'\r\n choiceContent: 'custom-control custom-checkbox d-flex', // bs4 d-flex required for rtl to align items\r\n choiceCheckBox: 'custom-control-input', // bs4\r\n choiceLabel: 'custom-control-label justify-content-start',\r\n choiceLabel_disabled: '' \r\n}\r\n\r\nexport const cssPatch = {\r\n choices: {listStyleType:'none'},\r\n picks: {listStyleType:'none', display:'flex', flexWrap:'wrap', height: 'auto', marginBottom: '0'},\r\n choice: 'px-md-2 px-1', \r\n choice_hover: 'text-primary bg-light', \r\n filterInput: {border:'0px', height: 'auto', boxShadow:'none', \r\n padding:'0', margin:'0', \r\n outline:'none', backgroundColor:'transparent',\r\n backgroundImage: 'none' // otherwise BS .was-validated set its image\r\n },\r\n filterInput_empty: 'form-control', // need for placeholder, TODO test form-control-plaintext\r\n\r\n // used in staticContentGenerator\r\n picks_disabled: {backgroundColor: '#e9ecef'},\r\n\r\n picks_focus: {borderColor: '#80bdff', boxShadow: '0 0 0 0.2rem rgba(0, 123, 255, 0.25)'},\r\n picks_focus_valid: {borderColor: '', boxShadow: '0 0 0 0.2rem rgba(40, 167, 69, 0.25)'},\r\n picks_focus_invalid: {borderColor: '', boxShadow: '0 0 0 0.2rem rgba(220, 53, 69, 0.25)'},\r\n \r\n // used in BsAppearancePlugin\r\n picks_def: {minHeight: 'calc(2.25rem + 2px)'},\r\n picks_lg: {minHeight: 'calc(2.875rem + 2px)'},\r\n picks_sm: {minHeight: 'calc(1.8125rem + 2px)'},\r\n \r\n // used in pickContentGenerator\r\n pick: {paddingLeft: '0px', lineHeight: '1.5em'},\r\n pickButton: {fontSize:'1.5em', lineHeight: '.9em', float : \"none\"},\r\n pickContent_disabled: {opacity: '.65'}, \r\n \r\n // used in choiceContentGenerator\r\n choiceContent: {justifyContent: 'flex-start'}, // BS problem: without this on inline form menu items justified center\r\n choiceLabel: {color: 'inherit'}, // otherwise BS .was-validated set its color\r\n choiceCheckBox: {color: 'inherit'},\r\n choiceLabel_disabled: {opacity: '.65'} // more flexible than {color: '#6c757d'}; note: avoid opacity on pickElement's border; TODO write to BS4 \r\n};","\r\nimport {defCall} from '../ToolsJs';\r\n\r\nexport function LabelPlugin(pluginData){\r\n let {configuration, staticContent} = pluginData;\r\n let {label} = configuration;\r\n staticContent.getLabelElement = () => defCall(label); // overrided by BS Appearance Plugin\r\n\r\n let createInputId = null;\r\n let {selectElement, containerClass, containerElement} = staticContent;\r\n if(selectElement)\r\n createInputId = () => `${containerClass}-generated-input-${((selectElement.id)?selectElement.id:selectElement.name).toLowerCase()}-id`;\r\n else\r\n createInputId = () => `${containerClass}-generated-filter-${containerElement.id}`;\r\n\r\n return {\r\n afterConstructor(){\r\n let labelElement = staticContent.getLabelElement();\r\n let backupedForAttribute = null; // state saved between init and dispose\r\n if (labelElement) {\r\n backupedForAttribute = labelElement.getAttribute('for');\r\n var newId = createInputId();\r\n staticContent.filterInputElement.setAttribute('id', newId);\r\n labelElement.setAttribute('for',newId);\r\n }\r\n if (backupedForAttribute)\r\n return ()=> labelElement.setAttribute('for',backupedForAttribute);\r\n }\r\n }\r\n}","import {getIsRtl, AttributeBackup} from '../ToolsDom';\r\nimport {isBoolean} from '../ToolsJs';\r\n\r\nexport function RtlPlugin(pluginData){\r\n let {configuration, staticContent} = pluginData;\r\n let {isRtl} = configuration;\r\n let forceRtlOnContainer = false; \r\n if (isBoolean(isRtl))\r\n forceRtlOnContainer = true;\r\n else\r\n isRtl = getIsRtl(staticContent.initialElement);\r\n \r\n var attributeBackup = AttributeBackup();\r\n if (forceRtlOnContainer){\r\n attributeBackup.set(staticContent.containerElement, \"dir\", \"rtl\");\r\n }\r\n else if (staticContent.selectElement){\r\n var dirAttributeValue = staticContent.selectElement.getAttribute(\"dir\");\r\n if (dirAttributeValue){\r\n attributeBackup.set(staticContent.containerElement, \"dir\", dirAttributeValue);\r\n }\r\n } \r\n if (isRtl)\r\n staticContent.popperConfiguration.placement = 'bottom-end';\r\n return {\r\n dispose(){\r\n attributeBackup.restore;\r\n }\r\n }\r\n}","\r\nimport {EventBinder, closestByTagName} from '../ToolsDom';\r\n\r\nexport function FormResetPlugin(pluginData){\r\n var {staticContent, window} = pluginData;\r\n return {\r\n afterConstructor(multiSelect){\r\n var eventBuilder = EventBinder();\r\n if (staticContent.selectElement){\r\n var form = closestByTagName(staticContent.selectElement, 'FORM');\r\n if (form) {\r\n eventBuilder.bind(form, \r\n 'reset', \r\n () => window.setTimeout( ()=>multiSelect.updateData() ) );\r\n }\r\n }\r\n return eventBuilder.unbind;\r\n }\r\n }\r\n}","function createValidity(valueMissing, customError){\r\n return Object.freeze({\r\n valueMissing,\r\n customError,\r\n valid: !(valueMissing || customError),\r\n });\r\n}\r\n\r\nexport function ValidityApi(visibleElement, isValueMissingObservable, valueMissingMessage, onValid){\r\n var customValidationMessage = \"\";\r\n var validationMessage = \"\";\r\n var validity = null;\r\n var willValidate = true;\r\n \r\n function setMessage(valueMissing, customError){\r\n validity = createValidity(valueMissing, customError);\r\n validationMessage = customError?customValidationMessage:(valueMissing?valueMissingMessage:\"\")\r\n visibleElement.setCustomValidity(validationMessage);\r\n onValid(validity.valid);\r\n }\r\n\r\n setMessage(isValueMissingObservable.getValue(), false);\r\n\r\n isValueMissingObservable.attach(\r\n (value) => {\r\n setMessage(value, validity.customError);\r\n }\r\n );\r\n \r\n return {\r\n validationMessage,\r\n willValidate,\r\n validity,\r\n setCustomValidity(message){\r\n customValidationMessage = message;\r\n setMessage(validity.valueMissing, customValidationMessage?true:false);\r\n },\r\n checkValidity(){\r\n if (!validity.valid)\r\n trigger('dashboardcode.multiselect:invalid')\r\n return validity.valid;\r\n },\r\n reportValidity(){\r\n staticContent.filterInputElement.reportValidity();\r\n return checkValidity();\r\n }\r\n }\r\n}","import {ValidityApi} from '../ValidityApi'\r\nimport {ObservableValue, ObservableLambda, def, defCall, composeSync } from '../ToolsJs';\r\nimport {getDataGuardedWithPrefix} from '../ToolsDom';\r\n\r\nconst defValueMissingMessage = 'Please select an item in the list'\r\n\r\nexport function ValidationApiPlugin(pluginData){\r\n var {configuration, staticContent, staticContent} = pluginData;\r\n let {getIsValueMissing, valueMissingMessage, required} = configuration;\r\n required = def(required, staticContent.required);\r\n valueMissingMessage = defCall(valueMissingMessage,\r\n ()=> getDataGuardedWithPrefix(staticContent.initialElement,\"bsmultiselect\",\"value-missing-message\"),\r\n defValueMissingMessage)\r\n\r\n return {\r\n afterConstructor(multiSelect){\r\n if (!getIsValueMissing) {\r\n getIsValueMissing = () => {\r\n let count = 0;\r\n let optionsArray = multiSelect.getOptions();\r\n for (var i=0; i < optionsArray.length; i++) {\r\n if (optionsArray[i].selected) \r\n count++;\r\n }\r\n return count===0;\r\n }\r\n }\r\n \r\n var isValueMissingObservable = ObservableLambda(()=>required && getIsValueMissing());\r\n var validationApiObservable = ObservableValue(!isValueMissingObservable.getValue());\r\n\r\n staticContent.validationApiObservable = validationApiObservable;\r\n\r\n let origOnChange = multiSelect.onChange;\r\n multiSelect.onChange = () => { \r\n isValueMissingObservable.call();\r\n origOnChange(); \r\n };\r\n \r\n var validationApi = ValidityApi(\r\n staticContent.filterInputElement, \r\n isValueMissingObservable, \r\n valueMissingMessage,\r\n (isValid)=>validationApiObservable.setValue(isValid));\r\n multiSelect.validationApi = validationApi;\r\n\r\n return ()=> composeSync(isValueMissingObservable.detachAll, validationApiObservable.detachAll)\r\n }\r\n }\r\n}\r\n\r\nValidationApiPlugin.setDefaults = (defaults)=>{\r\n defaults.valueMissingMessage = '';\r\n}","import {closestByClassName, siblingsAsArray} from '../ToolsDom';\r\nimport {addStyling} from '../ToolsStyling'\r\nimport {ObservableLambda, composeSync} from '../ToolsJs';\r\n\r\nexport function BsAppearancePlugin(pluginData){\r\n let {configuration, common, staticContent} = pluginData;\r\n let {getValidity, getSize, useCssPatch, css} = configuration;\r\n let selectElement = staticContent.selectElement;\r\n \r\n if (staticContent.getLabelElement){\r\n let origGetLabelElement = staticContent.getLabelElement;\r\n staticContent.getLabelElement = () => {\r\n var e = origGetLabelElement();\r\n if (e)\r\n return e;\r\n else\r\n return getLabelElement(selectElement);\r\n }\r\n }\r\n \r\n if (staticContent.selectElement) {\r\n if(!getValidity)\r\n getValidity = composeGetValidity(selectElement);\r\n if(!getSize) \r\n getSize = composeGetSize(selectElement);\r\n } else {\r\n if (!getValidity)\r\n getValidity = () => null\r\n if (!getSize)\r\n getSize = () => null;\r\n }\r\n\r\n common.getSize=getSize;\r\n common.getValidity=getValidity;\r\n return {\r\n afterConstructor(multiSelect){\r\n \r\n var updateSize;\r\n if (!useCssPatch){\r\n updateSize= () => updateSizeForAdapter(staticContent.picksElement, getSize)\r\n }\r\n else{\r\n const {picks_lg, picks_sm, picks_def} = css;\r\n updateSize = () => updateSizeJsForAdapter(staticContent.picksElement, picks_lg, picks_sm, picks_def, getSize);\r\n }\r\n multiSelect.UpdateSize = updateSize;\r\n \r\n if (useCssPatch){\r\n var defToggleFocusStyling = staticContent.toggleFocusStyling;\r\n staticContent.toggleFocusStyling = () => {\r\n var validity = validationObservable.getValue();\r\n var isFocusIn = staticContent.getIsFocusIn();\r\n defToggleFocusStyling(isFocusIn)\r\n if (isFocusIn){\r\n if (validity===false) { \r\n // but not toggle events (I know it will be done in future)\r\n staticContent.setIsFocusIn(isFocusIn);\r\n \r\n addStyling(staticContent.picksElement, css.picks_focus_invalid)\r\n } else if (validity===true) {\r\n // but not toggle events (I know it will be done in future)\r\n staticContent.setIsFocusIn(isFocusIn);\r\n \r\n addStyling(staticContent.picksElement, css.picks_focus_valid) \r\n } \r\n }\r\n }\r\n }\r\n \r\n var getWasValidated = () => {\r\n var wasValidatedElement = closestByClassName(staticContent.initialElement, 'was-validated');\r\n return wasValidatedElement?true:false;\r\n }\r\n var wasUpdatedObservable = ObservableLambda(()=>getWasValidated());\r\n var getManualValidationObservable = ObservableLambda(()=>getValidity());\r\n let validationApiObservable = staticContent.validationApiObservable;\r\n \r\n var validationObservable = ObservableLambda(\r\n () => wasUpdatedObservable.getValue()?validationApiObservable.getValue():getManualValidationObservable.getValue()\r\n )\r\n \r\n validationObservable.attach(\r\n (value)=>{\r\n var {validMessages, invalidMessages} = getMessagesElements(staticContent.containerElement);\r\n updateValidity( \r\n staticContent.picksElement,\r\n validMessages, invalidMessages,\r\n value);\r\n staticContent.toggleFocusStyling();\r\n }\r\n )\r\n wasUpdatedObservable.attach(\r\n ()=>validationObservable.call()\r\n )\r\n validationApiObservable.attach(\r\n ()=>validationObservable.call()\r\n )\r\n getManualValidationObservable.attach(\r\n ()=>validationObservable.call()\r\n )\r\n \r\n multiSelect.UpdateValidity = ()=> getManualValidationObservable.call();\r\n multiSelect.UpdateWasValidated = ()=>wasUpdatedObservable.call();\r\n \r\n multiSelect.updateAppearance = composeSync(\r\n multiSelect.updateAppearance.bind(multiSelect), \r\n updateSize, \r\n validationObservable.call, getManualValidationObservable.call);\r\n \r\n return /* dispose */() => {\r\n wasUpdatedObservable.detachAll();\r\n validationObservable.detachAll();\r\n getManualValidationObservable.detachAll();\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction getLabelElement(selectElement){\r\n let value = null;\r\n let formGroup = closestByClassName(selectElement,'form-group');\r\n if (formGroup) {\r\n value = formGroup.querySelector(`label[for=\"${selectElement.id}\"]`);\r\n }\r\n return value;\r\n}\r\n\r\nfunction updateValidity(picksElement, validMessages, invalidMessages, validity){\r\n if (validity===false){\r\n picksElement.classList.add('is-invalid');\r\n picksElement.classList.remove('is-valid');\r\n invalidMessages.map(e=>e.style.display='block'); \r\n validMessages.map(e=>e.style.display='none'); \r\n }\r\n else if (validity===true){\r\n picksElement.classList.remove('is-invalid');\r\n picksElement.classList.add('is-valid');\r\n invalidMessages.map(e=>e.style.display='none'); \r\n validMessages.map(e=>e.style.display='block'); \r\n }else {\r\n picksElement.classList.remove('is-invalid');\r\n picksElement.classList.remove('is-valid');\r\n invalidMessages.map(e=>e.style.display=''); \r\n validMessages.map(e=>e.style.display=''); \r\n }\r\n}\r\n\r\nfunction updateSize(picksElement, size){\r\n if (size==\"lg\"){\r\n picksElement.classList.add('form-control-lg');\r\n picksElement.classList.remove('form-control-sm');\r\n }\r\n else if (size==\"sm\"){\r\n picksElement.classList.remove('form-control-lg');\r\n picksElement.classList.add('form-control-sm');\r\n }\r\n else{\r\n picksElement.classList.remove('form-control-lg');\r\n picksElement.classList.remove('form-control-sm');\r\n }\r\n}\r\n\r\nfunction updateSizeJs(picksElement, picksLgStyling, picksSmStyling, picksDefStyling, size){\r\n updateSize(picksElement, size);\r\n if (size==\"lg\"){\r\n addStyling(picksElement, picksLgStyling);\r\n } else if (size==\"sm\"){\r\n addStyling(picksElement, picksSmStyling);\r\n } else {\r\n addStyling(picksElement, picksDefStyling);\r\n }\r\n}\r\n\r\nfunction updateSizeForAdapter(picksElement, getSize){\r\n updateSize(picksElement, getSize())\r\n}\r\n\r\nfunction updateSizeJsForAdapter(picksElement, picksLgStyling, picksSmStyling, picksDefStyling, getSize){\r\n updateSizeJs(picksElement, picksLgStyling, picksSmStyling, picksDefStyling, getSize())\r\n}\r\n\r\nfunction getMessagesElements(containerElement){\r\n var siblings = siblingsAsArray(containerElement);\r\n var invalidMessages = siblings.filter(e=>e.classList.contains('invalid-feedback') || \r\n e.classList.contains('invalid-tooltip'));\r\n var validMessages = siblings.filter(e=>e.classList.contains('valid-feedback') || \r\n e.classList.contains('valid-tooltip'));\r\n return {validMessages, invalidMessages} \r\n} \r\n\r\nfunction composeGetValidity(selectElement){\r\n var getValidity = () => \r\n selectElement.classList.contains('is-invalid')?false:\r\n (selectElement.classList.contains('is-valid')?true:null);\r\n return getValidity;\r\n}\r\n\r\nfunction composeGetSize(selectElement){\r\n let inputGroupElement = closestByClassName(selectElement, 'input-group');\r\n let getSize = null;\r\n if (inputGroupElement){\r\n getSize = function(){\r\n var value = null;\r\n if (inputGroupElement.classList.contains('input-group-lg'))\r\n value = 'lg';\r\n else if (inputGroupElement.classList.contains('input-group-sm'))\r\n value = 'sm';\r\n return value;\r\n }\r\n }\r\n else{ \r\n getSize = function(){\r\n var value = null;\r\n if (selectElement.classList.contains('custom-select-lg') || selectElement.classList.contains('form-control-lg'))\r\n value = 'lg';\r\n else if (selectElement.classList.contains('custom-select-sm') || selectElement.classList.contains('form-control-sm'))\r\n value = 'sm'; \r\n return value;\r\n }\r\n }\r\n return getSize;\r\n}\r\n\r\n","function updateHiddenChoice(choice, updateHidden , getIsOptionHidden){\r\n let newIsOptionHidden = getIsOptionHidden(choice.option);\r\n if (newIsOptionHidden != choice.isOptionHidden)\r\n {\r\n choice.isOptionHidden= newIsOptionHidden;\r\n updateHidden(choice)\r\n }\r\n}\r\n\r\nfunction getNextNonHidden(choice) { // TODO get next visible\r\n let next = choice.itemNext;\r\n if (!next) {\r\n return null;\r\n } else if (next.choiceElement) {\r\n return next;\r\n }\r\n return getNextNonHidden(next)\r\n}\r\n\r\nexport function HiddenOptionPlugin(pluginData){\r\n let {configuration, options} = pluginData;\r\n let {getIsOptionHidden} = configuration;\r\n if (options){\r\n if (!getIsOptionHidden)\r\n getIsOptionHidden = (option)=>(option.hidden===undefined)?false:option.hidden; \r\n } else{\r\n if (!getIsOptionHidden)\r\n getIsOptionHidden = (option)=>option.hidden; \r\n }\r\n\r\n return {\r\n afterConstructor(multiSelect){\r\n multiSelect.getNext = (c)=>getNextNonHidden(c);\r\n \r\n var origIsSelectable = multiSelect.isSelectable.bind(multiSelect);\r\n multiSelect.isSelectable = (choice) => origIsSelectable(choice) && !choice.isOptionHidden;\r\n \r\n function buildHiddenChoice(choice){\r\n choice.updateSelected = () => void 0;\r\n choice.updateDisabled = () => void 0;\r\n \r\n choice.choiceElement = null;\r\n choice.choiceElementAttach = null;\r\n choice.setVisible = null; \r\n choice.setHoverIn = null;\r\n choice.remove = null; \r\n \r\n choice.dispose = () => { \r\n choice.dispose = null;\r\n };\r\n }\r\n \r\n function updateHidden(choice) {\r\n if (choice.isOptionHidden) {\r\n multiSelect.filterListFacade.remove(choice);\r\n choice.remove(); \r\n buildHiddenChoice(choice);\r\n } else {\r\n let nextChoice = getNextNonHidden(choice);\r\n multiSelect.filterListFacade.add(choice, nextChoice);\r\n multiSelect.createChoiceElement(choice);\r\n choice.choiceElementAttach(nextChoice?.choiceElement);\r\n }\r\n }\r\n \r\n multiSelect.updateHidden = (c) => updateHidden(c);\r\n \r\n function UpdateOptionHidden(key){\r\n let choice = multiSelect.choices.get(key);\r\n updateHiddenChoice(choice, (c)=>multiSelect.updateHidden(c), getIsOptionHidden)\r\n }\r\n \r\n function UpdateOptionsHidden(){\r\n let options = multiSelect.getOptions();\r\n for(let i = 0; i UpdateOptionsHidden();\r\n multiSelect.UpdateOptionHidden = (key) => UpdateOptionHidden(key);\r\n \r\n var origСreateChoice = multiSelect.createChoice.bind(multiSelect);\r\n \r\n multiSelect.createChoice = (option) => {\r\n let choice = origСreateChoice(option);\r\n choice.isOptionHidden = getIsOptionHidden(option);\r\n return choice;\r\n };\r\n \r\n var origInsertChoiceItem = multiSelect.insertChoiceItem.bind(multiSelect);\r\n var origPushChoiceItem = multiSelect.pushChoiceItem.bind(multiSelect);\r\n \r\n multiSelect.insertChoiceItem=(choice)=>{\r\n if (choice.isOptionHidden){ \r\n buildHiddenChoice(choice);\r\n }\r\n else{ \r\n origInsertChoiceItem(choice);\r\n }\r\n }\r\n \r\n multiSelect.pushChoiceItem=(choice)=>{\r\n if (choice.isOptionHidden){ \r\n buildHiddenChoice(choice);\r\n }\r\n else{ \r\n origPushChoiceItem(choice);\r\n }\r\n }\r\n \r\n multiSelect.forEach = (f) => {\r\n let choice = multiSelect.choices.getHead();\r\n while(choice){\r\n if (!choice.isOptionHidden)\r\n f(choice);\r\n choice = multiSelect.getNext(choice);\r\n }\r\n }\r\n \r\n var origAddFilterFacade = multiSelect.addFilterFacade.bind(multiSelect);\r\n multiSelect.addFilterFacade = (choice) => {\r\n if ( !choice.isOptionHidden ) {\r\n origAddFilterFacade(choice);\r\n }\r\n }\r\n \r\n var origInsertFilterFacade = multiSelect.insertFilterFacade.bind(multiSelect);\r\n multiSelect.addFilterFacade = (choice) => {\r\n if ( !choice.isOptionHidden ){\r\n origInsertFilterFacade(choice);\r\n }\r\n }\r\n }\r\n }\r\n}","import {createCss, extendCss} from '../ToolsStyling';\r\nimport {isBoolean} from '../ToolsJs';\r\nimport {cssPatch} from '../BsCss'\r\n\r\nexport function CssPatchPlugin(){\r\n}\r\n\r\nCssPatchPlugin.setDefaults = (defaults)=>{\r\n defaults.useCssPatch = true;\r\n defaults.cssPatch = cssPatch;\r\n}\r\n\r\nCssPatchPlugin.mergeDefaults = (configuration, defaults, settings)=>{\r\n let cssPatch = settings?.cssPatch;\r\n if (isBoolean(cssPatch))\r\n throw new Error(\"BsMultiSelect: 'cssPatch' was used instead of 'useCssPatch'\") // often type of error\r\n configuration.cssPatch = createCss(defaults.cssPatch, cssPatch); // replace classes, merge styles\r\n}\r\n\r\nCssPatchPlugin.onConfiguration = (configuration) =>{\r\n if (configuration.useCssPatch)\r\n extendCss(configuration.css, configuration.cssPatch); \r\n}","import {composeSync} from '../ToolsJs';\r\nimport {getDataGuardedWithPrefix} from '../ToolsDom';\r\nimport {toggleStyling} from '../ToolsStyling';\r\n\r\nexport function PlaceholderPlugin(pluginData){\r\n let {configuration, staticContent} = pluginData;\r\n let {placeholder, css} = configuration;\r\n let {initialElement, picksElement, filterInputElement} = staticContent;\r\n\r\n if (!placeholder){\r\n placeholder = getDataGuardedWithPrefix(initialElement,\"bsmultiselect\",\"placeholder\");\r\n }\r\n\r\n function setEmptyInputWidth(isVisible){\r\n if(isVisible)\r\n filterInputElement.style.width ='100%';\r\n else\r\n filterInputElement.style.width ='2ch';\r\n }\r\n var emptyToggleStyling = toggleStyling(filterInputElement, css.filterInput_empty);\r\n function showPlacehodler(isVisible){\r\n if (isVisible)\r\n {\r\n filterInputElement.placeholder = placeholder?placeholder:'';\r\n picksElement.style.display = 'block';\r\n }\r\n else\r\n {\r\n filterInputElement.placeholder = '';\r\n picksElement.style.display = 'flex';\r\n }\r\n emptyToggleStyling(isVisible);\r\n setEmptyInputWidth(isVisible);\r\n }\r\n showPlacehodler(true);\r\n \r\n function setDisabled(isComponentDisabled){ \r\n filterInputElement.disabled = isComponentDisabled;\r\n };\r\n\r\n return {\r\n afterConstructor(multiSelect){\r\n function updatePlacehodlerVisibility(){\r\n showPlacehodler(multiSelect.isEmpty());\r\n };\r\n function updateEmptyInputWidth(){\r\n setEmptyInputWidth(multiSelect.isEmpty())\r\n };\r\n \r\n let origDisable = staticContent.disable;\r\n staticContent.disable = (isComponentDisabled)=>{\r\n setDisabled(isComponentDisabled);\r\n origDisable(isComponentDisabled);\r\n };\r\n\r\n let origAppendToContainer = staticContent.appendToContainer;\r\n staticContent.appendToContainer = composeSync(updateEmptyInputWidth, origAppendToContainer);\r\n\r\n let origProcessEmptyInput = multiSelect.processEmptyInput.bind(multiSelect);\r\n multiSelect.processEmptyInput = composeSync(updateEmptyInputWidth, origProcessEmptyInput);\r\n\r\n let origEmpty = multiSelect.empty.bind(multiSelect);\r\n multiSelect.empty = composeSync(origEmpty, updatePlacehodlerVisibility);\r\n\r\n let origForceResetFilter = multiSelect.forceResetFilter.bind(multiSelect);\r\n multiSelect.forceResetFilter = composeSync(origForceResetFilter, updatePlacehodlerVisibility);\r\n \r\n let origInput = multiSelect.input.bind(multiSelect);\r\n multiSelect.input = (filterInputValue, resetLength) =>{\r\n updatePlacehodlerVisibility();\r\n origInput(filterInputValue, resetLength);\r\n }\r\n\r\n let origCreatePick = multiSelect.createPick.bind(multiSelect);\r\n multiSelect.createPick = (choice)=>{\r\n let removePick = origCreatePick(choice);\r\n if (multiSelect.picks.getCount()==1) \r\n updatePlacehodlerVisibility()\r\n return ()=>\r\n { \r\n removePick();\r\n if (multiSelect.picks.getCount()==0) \r\n updatePlacehodlerVisibility()\r\n }\r\n };\r\n }\r\n }\r\n}","export function JQueryMethodsPlugin(pluginData){\r\n var {staticContent} = pluginData;\r\n return {\r\n afterConstructor(multiSelect){\r\n \r\n multiSelect.GetContainer = ()=> staticContent.containerElement;\r\n \r\n multiSelect.GetChoices= ()=> staticContent.choicesElement;\r\n multiSelect.GetFilterInput= ()=> staticContent.filterInputElement;\r\n multiSelect.PicksCount= ()=> multiSelect.picks.getCount();\r\n multiSelect.Dispose= ()=> multiSelect.dispose();\r\n multiSelect.DeselectAll= ()=> multiSelect.deselectAll();\r\n multiSelect.SelectAll= ()=> multiSelect.selectAll();\r\n multiSelect.UpdateOptionsSelected= ()=> multiSelect.updateOptionsSelected();\r\n multiSelect.UpdateOptionsDisabled= ()=> multiSelect.updateOptionsDisabled();\r\n multiSelect.UpdateDisabled= ()=> multiSelect.updateDisabled();\r\n multiSelect.UpdateAppearance= ()=> multiSelect.updateAppearance();\r\n multiSelect.UpdateData= ()=> multiSelect.updateData();\r\n multiSelect.Update= ()=> multiSelect.update();\r\n }\r\n }\r\n}","export function OptionsApiPlugin(){\r\n return {\r\n afterConstructor(multiSelect){\r\n\r\n multiSelect.SetOptionSelected = (key, value) => {\r\n let choice = this.choices.get(key);\r\n this.setOptionSelected(choice, value);\r\n }\r\n \r\n multiSelect.UpdateOptionSelected = (key) => {\r\n let choice = multiSelect.choices.get(key); // TODO: generalize index as key\r\n let newIsSelected = multiSelect.getIsOptionSelected(choice.option);\r\n if (newIsSelected != choice.isOptionSelected)\r\n {\r\n choice.isOptionSelected = newIsSelected;\r\n choice.updateSelected();\r\n }\r\n }\r\n \r\n multiSelect.UpdateOptionDisabled = (key)=>{\r\n let choice = multiSelect.choices.get(key); // TODO: generalize index as key \r\n let newIsDisabled = multiSelect.getIsOptionDisabled(choice.option);\r\n if (newIsDisabled != choice.isOptionDisabled)\r\n {\r\n choice.isOptionDisabled= newIsDisabled;\r\n choice.updateDisabled();\r\n }\r\n }\r\n \r\n multiSelect.UpdateOptionAdded = (key)=>{ // TODO: generalize index as key \r\n let options = multiSelect.getOptions();\r\n let option = options[key];\r\n let choice = multiSelect.createChoice(option);\r\n multiSelect.choices.insert(key, choice);\r\n multiSelect.insertChoiceItem(choice)\r\n }\r\n \r\n multiSelect.UpdateOptionRemoved = (key)=>{ // TODO: generalize index as key \r\n multiSelect.aspect.hideChoices(); // always hide 1st, then reset filter\r\n multiSelect.filterFacade.resetFilter();\r\n \r\n var choice = multiSelect.choices.remove(key);\r\n choice.remove?.();\r\n choice.dispose?.();\r\n }\r\n }\r\n }\r\n}","const transformStyles = [\r\n {old:'selectedPanelDisabledBackgroundColor', opt:'picks_disabled', style:\"backgroundColor\"},\r\n {old:'selectedPanelFocusValidBoxShadow', opt:'picks_focus_valid', style:\"boxShadow\"},\r\n {old:'selectedPanelFocusInvalidBoxShadow', opt:'picks_focus_invalid', style:\"boxShadow\"},\r\n {old:'selectedPanelDefMinHeight', opt:'picks_def', style:\"minHeight\"},\r\n {old:'selectedPanelLgMinHeight', opt:'picks_lg', style:\"minHeight\"},\r\n {old:'selectedPanelSmMinHeight', opt:'picks_sm', style:\"minHeight\"},\r\n {old:'selectedItemContentDisabledOpacity', opt:'choiceLabel_disabled', style:\"opacity\"}\r\n]\r\n\r\nconst transformClasses = [\r\n {old:'dropDownMenuClass', opt:'choices'},\r\n {old:'dropDownItemClass', opt:'choice'},\r\n {old:'dropDownItemHoverClass', opt:'choice_hover'},\r\n {old:'selectedPanelClass', opt:'picks'},\r\n {old:'selectedItemClass', opt:'pick'},\r\n {old:'removeSelectedItemButtonClass', opt:'pickButton'},\r\n {old:'filterInputItemClass', opt:'pickFilter'},\r\n {old:'filterInputClass', opt:'filterInput'},\r\n {old:'selectedPanelFocusClass', opt:'picks_focus'},\r\n {old:'selectedPanelDisabledClass', opt:'picks_disabled'},\r\n {old:'selectedItemContentDisabledClass', opt:'pick_disabled'}\r\n]\r\n\r\nexport function adjustLegacySettings(settings){\r\n if (!settings.css)\r\n settings.css={}\r\n var css =settings.css;\r\n\r\n if (!settings.cssPatch)\r\n settings.cssPatch={}\r\n var cssPatch =settings.cssPatch;\r\n\r\n if (settings.selectedPanelFocusBorderColor || settings.selectedPanelFocusBoxShadow){\r\n console.log(\"DashboarCode.BsMultiSelect: selectedPanelFocusBorderColor and selectedPanelFocusBoxShadow are depricated, use - cssPatch:{picks_focus:{borderColor:'myValue', boxShadow:'myValue'}}\");\r\n if(!cssPatch.picks_focus){\r\n cssPatch.picks_focus = {boxShadow: settings.selectedPanelFocusBoxShadow, borderColor: settings.selectedPanelFocusBorderColor}\r\n }\r\n delete settings.selectedPanelFocusBorderColor;\r\n delete settings.selectedPanelFocusBoxShadow;\r\n }\r\n\r\n transformStyles.forEach(\r\n (i)=>{\r\n if (settings[i.old]){\r\n console.log(`DashboarCode.BsMultiSelect: ${i.old} is depricated, use - cssPatch:{${i.opt}:{${i.style}:'myValue'}}`);\r\n if(!settings[i.opt]){\r\n let opt = {}\r\n opt[i.style] = settings[i.old]\r\n settings.cssPatch[i.opt]=opt;\r\n }\r\n delete settings[i.old];\r\n }\r\n }\r\n )\r\n \r\n transformClasses.forEach( (i) => {\r\n if (settings[i.old]){\r\n console.log(`DashboarCode.BsMultiSelect: ${i.old} is depricated, use - css:{${i.opt}:'myValue'}`);\r\n if(!css[i.opt]){\r\n css[i.opt]= settings[i.old]\r\n }\r\n delete settings[i.old];\r\n }\r\n })\r\n \r\n if (settings.inputColor){\r\n console.log(\"DashboarCode.BsMultiSelect: inputColor is depricated, remove parameter\");\r\n delete settings.inputColor;\r\n }\r\n\r\n if (settings.useCss){\r\n console.log(\"DashboarCode.BsMultiSelect: useCss(=true) is depricated, use - 'useCssPatch: false'\");\r\n if(!css.pick_disabled){\r\n settings.useCssPatch = !settings.useCss\r\n }\r\n delete settings.useCss;\r\n } \r\n\r\n if (settings.getIsValid || settings.getIsInValid){\r\n throw \"DashboarCode.BsMultiSelect: parameters getIsValid and getIsInValid are depricated and removed, use - getValidity that should return (true|false|null) \"\r\n } \r\n}","import $ from 'jquery'\r\nimport Popper from 'popper.js'\r\n\r\nimport {addToJQueryPrototype} from './AddToJQueryPrototype'\r\nimport {BsMultiSelect} from './BsMultiSelect';\r\nimport {initiateDefaults, mergeDefaults, onConfiguration} from './PluginManager';\r\n\r\nimport {css} from './BsCss'\r\n\r\nimport {LabelPlugin} from './plugins/LabelPlugin';\r\nimport {RtlPlugin} from './plugins/RtlPlugin';\r\nimport {FormResetPlugin} from './plugins/FormResetPlugin';\r\nimport {ValidationApiPlugin} from './plugins/ValidationApiPlugin';\r\nimport {BsAppearancePlugin} from './plugins/BsAppearancePlugin';\r\nimport {HiddenOptionPlugin} from './plugins/HiddenOptionPlugin';\r\nimport {CssPatchPlugin} from './plugins/CssPatchPlugin';\r\nimport {PlaceholderPlugin} from './plugins/PlaceholderPlugin';\r\nimport {JQueryMethodsPlugin} from './plugins/JQueryMethodsPlugin';\r\nimport {OptionsApiPlugin} from './plugins/OptionsApiPlugin';\r\n\r\nimport {adjustLegacySettings} from './BsMultiSelectDepricatedParameters'\r\n\r\nimport {createCss} from './ToolsStyling';\r\nimport {extendIfUndefined, composeSync} from './ToolsJs';\r\n\r\n(\r\n (window, $, Popper) => {\r\n const defaults = {containerClass : \"dashboardcode-bsmultiselect\", css: css}\r\n let defaultPlugins = [CssPatchPlugin, LabelPlugin, HiddenOptionPlugin, ValidationApiPlugin, \r\n BsAppearancePlugin, FormResetPlugin, RtlPlugin, PlaceholderPlugin , OptionsApiPlugin, JQueryMethodsPlugin];\r\n let createBsMultiSelect = (element, settings, removeInstanceData) => { \r\n let trigger = (e, eventName) => $(e).trigger(eventName);\r\n let environment = {trigger, window, Popper}\r\n environment.plugins = defaultPlugins;\r\n\r\n let configuration = {};\r\n let buildConfiguration;\r\n if (settings instanceof Function){\r\n buildConfiguration = settings;\r\n settings = null;\r\n } else {\r\n buildConfiguration = settings?.buildConfiguration;\r\n }\r\n\r\n if (settings)\r\n adjustLegacySettings(settings);\r\n \r\n configuration.css = createCss(defaults.css, settings?.css);\r\n mergeDefaults(defaultPlugins, configuration, defaults, settings);\r\n\r\n extendIfUndefined(configuration, settings); \r\n extendIfUndefined(configuration, defaults); \r\n \r\n let onInit = buildConfiguration?.(element, configuration);\r\n\r\n onConfiguration(defaultPlugins, configuration);\r\n\r\n let multiSelect = BsMultiSelect(element, environment, configuration, onInit);\r\n multiSelect.dispose = composeSync(multiSelect.dispose, removeInstanceData);\r\n return multiSelect;\r\n }\r\n let prototypable = addToJQueryPrototype('BsMultiSelect', createBsMultiSelect, $);\r\n\r\n initiateDefaults(defaultPlugins, defaults);\r\n prototypable.defaults = defaults;\r\n }\r\n)(window, $, Popper)\r\n\r\n"],"names":["addToJQueryPrototype","pluginName","createPlugin","$","firstChar","charAt","firstCharLower","toLowerCase","Error","prototypableName","slice","noConflictPrototypable","fn","noConflictPrototypableForInstance","dataKey","createInstance","options","e","$e","optionsRef","Function","instance","removeData","data","prototypable","each","i","isMethodName","test","methodName","prototypableForInstance","length","get","output","push","noConflict","removeElement","parentNode","removeChild","findDirectChildByTagName","element","tagName","value","children","tmp","closestByTagName","closest","closestByClassName","className","classList","contains","closestByAttribute","attributeName","attribute","getAttribute","containsAndSelf","node","otherNode","getDataGuardedWithPrefix","prefix","name","tmp1","tmp2","predicate","Element","siblingsAsArray","l","getIsRtl","isRtl","EventBinder","list","bind","eventName","handler","addEventListener","unbind","forEach","removeEventListener","AttributeBackup","set","currentAtribute","setAttribute","restore","removeAttribute","EventLoopFlag","window","flag","setTimeout","FilterPanel","filterInputElement","onFocusIn","onFocusOut","onKeyDownArrowUp","onKeyDownArrowDown","onTabForEmpty","onBackspace","onTabToCompleate","onEnterToCompleate","onKeyUpEsc","stopEscKeyDownPropogation","onInput","isEmpty","onfilterInputKeyDown","event","keyCode","which","empty","indexOf","preventDefault","stopPropagation","onFilterInputKeyUp","onFilterInputInput","filterInputValue","style","width","eventBinder","setEmpty","setFocus","focus","setFocusIfNotTarget","target","dispose","isBoolean","isString","String","extendIfUndefined","destination","source","property","undefined","shallowClearClone","v","sources","s","hasOwnProperty","forEachRecursion","f","prev","List","tail","count","add","next","remove","getTail","getCount","reset","ListFacade","getPrev","setPrev","getNext","setNext","head","getHead","CollectionFacade","key","splice","getLength","forLoop","composeSync","functions","sync","def","defCall","ObservableValue","getValue","setValue","newValue","attach","detachAll","ObservableLambda","func","call","Choices","listFacade","navigate","addFilterFacade","insertFilterFacade","hoveredChoice","collection","choice","itemPrev","itemNext","resetHoveredChoice","setHoverIn","item","insert","getHoveredChoice","hoverIn","down","clear","Picks","addPick","pick","removeFromList","removePicksTail","disableRemoveAll","disableRemove","removeAll","MultiSelectInputAspect","picksElement","choicesElement","isChoicesVisible","setChoicesVisible","resetFilter","isChoiceEmpty","onClick","resetFocus","alignToFilterInputItemLocation","document","eventLoopFlag","skipFocusout","getSkipFocusout","resetSkipFocusout","setSkipFocusout","skipoutMousedown","documentMouseup","hideChoices","preventDefaultClickEvent","componentDisabledEventBinder","skipoutAndResetMousedown","showChoices","clickToShowChoices","resetMouseCandidateChoice","processUncheck","uncheckOption","handleOnRemoveButton","onRemove","setSelectedFalse","processRemoveButtonClick","mouseCandidateEventBinder","mouseOverToHoveredAndReset","isHoverIn","adoptChoiceElement","choiceElement","onChoiceElementMouseover","onChoiceElementMouseleave","overAndLeaveEventBinder","action","disable","isComponentDisabled","Choice","option","isOptionSelected","isOptionDisabled","updateDisabled","updateSelected","filteredPrev","filteredNext","searchText","text","trim","isFilterIn","setVisible","choiceElementAttach","isOptionHidden","FilterFacade","composeFilterPredicate","setFilter","getFilterIn","MultiSelect","getOptions","getIsComponentDisabled","setSelected","getIsOptionSelected","getIsOptionDisabled","staticContent","pickContentGenerator","choiceContentGenerator","onChange","visibleCount","choices","picks","stylingComposite","setOptionSelected","success","confirmed","toggleOptionSelected","filterPanel","forceResetFilter","processEmptyInput","filterFacade","isSelectable","aspect","innerHTML","update","updateAppearance","updateData","updateDataImpl","updateOptionsDisabled","newIsDisabled","multiSelect","updateOptionsSelected","newIsSelected","selectAll","deselectAll","createPick","createPickElement","pickElement","detach","pickContent","setData","choiceUpdateDisabledBackup","removePick","createChoiceElement","choiceContent","updateSelectedChoiceContent","select","pickTools","updateSelectedTrue","updateSelectedFalse","unbindChoiceElement","isFilteredIn","createChoice","insertChoiceItem","nextChoice","pushChoiceItem","input","resetLength","filterListFacade","fullMatchChoice","panelIsVisble","hoveredToSelected","wasToggled","keyDownArrow","iChoice","setFocusIn","setIsFocusIn","toggleFocusStyling","choiceNonhiddenBefore","init","p","updatePopupLocation","pickFilterElement","appendChild","c","appendToContainer","visible","attachContainer","load","fillChoices","readyState","domContentLoadedHandler","PluginManager","plugins","pluginData","instances","disposes","afterConstructor","initiateDefaults","constructors","defaults","setDefaults","mergeDefaults","configuration","settings","onConfiguration","addStyling","styling","backupStyling","classes","styles","removeStyling","toggleStyling","isOn","extendClasses","out","param","actionStr","actionArr","isRemoveEmptyClasses","split","Array","extend","actionObj","Object","Styling","a","o","freeze","createStyling","isReplace","params","extendInt","concat","createCss","stylings1","stylings2","param1","param2","extendCss","common","css","pickContentElement","querySelector","pickButtonElement","pickButton","disableToggleStyling","pickContent_disabled","textContent","isDisabled","isRemoveDisabled","disabled","toggle","choiceContentElement","choiceCheckBoxElement","choiceLabelElement","choiceCheckBox","choiceLabel","selectToggleStyling","choice_selected","disable1ToggleStyling","choice_disabled","hoverInToggleStyling","choice_hover","disable2ToggleStyling","choiceCheckBox_disabled","disable3ToggleStyling","choiceLabel_disabled","checked","staticContentGenerator","createElement","containerClass","Popper","selectElement","containerElement","ownPicksElement","showError","message","backgroundColor","color","ownContainerElement","backupDisplay","display","required","backupedRequired","pickFilter","filterInput","isFocusIn","picks_disabled","focusToggleStyling","picks_focus","popper","popperConfiguration","placement","modifiers","preventOverflow","enabled","hide","flip","initialElement","insertBefore","isVisible","nextSibling","getIsFocusIn","newIsFocusIn","destroy","BsMultiSelect","environment","onInit","trigger","getDisabled","getSelected","defStaticContentGenerator","defPickContentGenerator","defChoiceContentGenerator","pluginManager","fieldsetElement","selected","pick_disabled","cssPatch","listStyleType","flexWrap","height","marginBottom","border","boxShadow","padding","margin","outline","backgroundImage","filterInput_empty","borderColor","picks_focus_valid","picks_focus_invalid","picks_def","minHeight","picks_lg","picks_sm","paddingLeft","lineHeight","fontSize","float","opacity","justifyContent","LabelPlugin","label","getLabelElement","createInputId","id","labelElement","backupedForAttribute","newId","RtlPlugin","forceRtlOnContainer","attributeBackup","dirAttributeValue","FormResetPlugin","eventBuilder","form","createValidity","valueMissing","customError","valid","ValidityApi","visibleElement","isValueMissingObservable","valueMissingMessage","onValid","customValidationMessage","validationMessage","validity","willValidate","setMessage","setCustomValidity","checkValidity","reportValidity","defValueMissingMessage","ValidationApiPlugin","getIsValueMissing","optionsArray","validationApiObservable","origOnChange","validationApi","isValid","BsAppearancePlugin","getValidity","getSize","useCssPatch","origGetLabelElement","composeGetValidity","composeGetSize","updateSize","updateSizeForAdapter","updateSizeJsForAdapter","UpdateSize","defToggleFocusStyling","validationObservable","getWasValidated","wasValidatedElement","wasUpdatedObservable","getManualValidationObservable","getMessagesElements","validMessages","invalidMessages","updateValidity","UpdateValidity","UpdateWasValidated","formGroup","map","size","updateSizeJs","picksLgStyling","picksSmStyling","picksDefStyling","siblings","filter","inputGroupElement","updateHiddenChoice","updateHidden","getIsOptionHidden","newIsOptionHidden","getNextNonHidden","HiddenOptionPlugin","hidden","origIsSelectable","buildHiddenChoice","UpdateOptionHidden","UpdateOptionsHidden","origСreateChoice","origInsertChoiceItem","origPushChoiceItem","origAddFilterFacade","origInsertFilterFacade","CssPatchPlugin","PlaceholderPlugin","placeholder","setEmptyInputWidth","emptyToggleStyling","showPlacehodler","setDisabled","updatePlacehodlerVisibility","updateEmptyInputWidth","origDisable","origAppendToContainer","origProcessEmptyInput","origEmpty","origForceResetFilter","origInput","origCreatePick","JQueryMethodsPlugin","GetContainer","GetChoices","GetFilterInput","PicksCount","Dispose","DeselectAll","SelectAll","UpdateOptionsSelected","UpdateOptionsDisabled","UpdateDisabled","UpdateAppearance","UpdateData","Update","OptionsApiPlugin","SetOptionSelected","UpdateOptionSelected","UpdateOptionDisabled","UpdateOptionAdded","UpdateOptionRemoved","transformStyles","old","opt","transformClasses","adjustLegacySettings","selectedPanelFocusBorderColor","selectedPanelFocusBoxShadow","console","log","inputColor","useCss","getIsValid","getIsInValid","defaultPlugins","createBsMultiSelect","removeInstanceData","buildConfiguration"],"mappings":"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"}