{"version":3,"file":"BsMultiSelect.js","sources":["../../js/src/AddToJQueryPrototype.js","../../js/src/PluginManager.js","../../js/src/ToolsJs.js","../../js/src/ToolsDom.js","../../js/src/ToolsStyling.js","../../js/src/PickDomFactory.js","../../js/src/ChoiceDomFactory.js","../../js/src/StaticDomFactory.js","../../js/src/PicksDom.js","../../js/src/FilterDom.js","../../js/src/ChoicesDomFactory.js","../../js/src/PopupAspect.js","../../js/src/ComponentAspect.js","../../js/src/OptionsAspect.js","../../js/src/FilterListAspect.js","../../js/src/ChoicesAspect.js","../../js/src/UpdateDataAspect.js","../../js/src/OptionToggleAspect.js","../../js/src/ChoiceAspect.js","../../js/src/Choices.js","../../js/src/ChoicesHover.js","../../js/src/Picks.js","../../js/src/PicksAspect.js","../../js/src/InputAspect.js","../../js/src/ResetFilterListAspect.js","../../js/src/MultiSelectInputAspect.js","../../js/src/FilterAspect.js","../../js/src/AppearanceAspect.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/plugins/FormRestoreOnBackwardPlugin.js","../../js/src/plugins/SelectElementPlugin.js","../../js/src/plugins/SelectAllApiPlugin.js","../../js/src/plugins/UpdateOptionsSelectedApiPlugin.js","../../js/src/plugins/DisabledOptionApiPlugin.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 let lMethodName = methodName.charAt(0).toLowerCase() + methodName.slice(1)\r\n if ( typeof instance[lMethodName] === 'undefined') {\r\n throw new Error(`No method named '${methodName}'`)\r\n } else {\r\n methodName = lMethodName;\r\n }\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 PluginManager(plugins, pluginData){\r\n let instances = [];\r\n if (plugins){\r\n for(let i = 0; i{\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 DoublyLinkedCollection(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 functions.forEach(\r\n (f) => {\r\n if (f)\r\n f();\r\n }\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 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\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}","export 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 {shallowClearClone, isString} from './ToolsJs';\r\n\r\nexport function addStyling(element, styling){\r\n var backupStyling = {classes:[], styles:{}}\r\n if (styling) {\r\n var {classes, styles} = styling;\r\n classes.forEach(e => 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 PickDomFactory(css, componentAspect, optionPropertiesAspect){\r\n return {\r\n create(pickElement, choice, remove){\r\n let eventBinder = EventBinder();\r\n pickElement.innerHTML = ''\r\n let pickContentElement = pickElement.querySelector('SPAN');\r\n let pickButtonElement = pickElement.querySelector('BUTTON');\r\n eventBinder.bind(pickButtonElement, \"click\", remove);\r\n // TODO: explicit conditional styling \r\n return {\r\n pickDom:{\r\n pickContentElement,\r\n pickButtonElement,\r\n },\r\n pickDomManager:{\r\n init(){\r\n addStyling(pickContentElement, css.pickContent);\r\n addStyling(pickButtonElement, css.pickButton);\r\n\r\n let disableToggle = toggleStyling(pickContentElement, css.pickContent_disabled);\r\n function updateData(){\r\n pickContentElement.textContent = optionPropertiesAspect.getText(choice.option); \r\n }\r\n function updateDisabled(){\r\n disableToggle(choice.isOptionDisabled)\r\n }\r\n function updateRemoveDisabled(){\r\n pickButtonElement.disabled = componentAspect.getDisabled();\r\n }\r\n updateData();\r\n updateDisabled()\r\n updateRemoveDisabled();\r\n\r\n return {\r\n updateData,\r\n updateDisabled,\r\n updateRemoveDisabled,\r\n }\r\n },\r\n dispose(){\r\n eventBinder.unbind();\r\n },\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import {EventBinder} from './ToolsDom';\r\nimport {addStyling, toggleStyling} from './ToolsStyling';\r\n\r\nexport function ChoiceDomFactory(css, optionPropertiesAspect){\r\n return {\r\n create(choiceElement, choice, 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 let eventBinder = EventBinder();\r\n eventBinder.bind(choiceElement, \"click\", toggle);\r\n // TODO: explicit conditional styling \r\n return {\r\n choiceDom:{\r\n choiceContentElement,\r\n choiceCheckBoxElement,\r\n choiceLabelElement\r\n },\r\n choiceDomManager:{\r\n init(){\r\n addStyling(choiceContentElement, css.choiceContent); \r\n addStyling(choiceCheckBoxElement, css.choiceCheckBox); \r\n addStyling(choiceLabelElement, css.choiceLabel); \r\n \r\n let choiceSelectedToggle = toggleStyling(choiceElement, css.choice_selected);\r\n let choiceDisabledToggle = toggleStyling(choiceElement, css.choice_disabled);\r\n let choiceHoverToggle = toggleStyling(choiceElement, css.choice_hover);\r\n \r\n let choiceCheckBoxDisabledToggle = toggleStyling(choiceCheckBoxElement, css.choiceCheckBox_disabled)\r\n let choiceLabelDisabledToggle = toggleStyling(choiceLabelElement, css.choiceLabel_disabled)\r\n \r\n function updateData() {\r\n choiceLabelElement.textContent = optionPropertiesAspect.getText(choice.option);\r\n }\r\n function updateSelected(){ \r\n choiceSelectedToggle(choice.isOptionSelected);\r\n choiceCheckBoxElement.checked = choice.isOptionSelected;\r\n }\r\n function updateDisabled(){\r\n choiceDisabledToggle(choice.isOptionDisabled)\r\n choiceCheckBoxDisabledToggle(choice.isOptionDisabled)\r\n choiceLabelDisabledToggle(choice.isOptionDisabled)\r\n \r\n // do not desable checkBox if option is selected! there should be possibility to unselect \"disabled\"\r\n choiceCheckBoxElement.disabled = choice.isOptionDisabled && !choice.isOptionSelected;\r\n }\r\n updateData();\r\n updateSelected();\r\n updateDisabled();\r\n\r\n return{\r\n updateData,\r\n updateSelected, \r\n updateDisabled,\r\n updateHoverIn(){\r\n choiceHoverToggle(choice.isHoverIn);\r\n },\r\n }\r\n },\r\n dispose(){\r\n eventBinder.unbind();\r\n }\r\n }\r\n \r\n }\r\n }\r\n }\r\n}\r\n\r\n","import {findDirectChildByTagName, closestByClassName} from './ToolsDom';\r\n\r\nexport function CreateElementAspect(createElement){\r\n return {\r\n createElement\r\n }\r\n}\r\n\r\nexport function StaticDomFactory(choicesDomFactory, createElementAspect){\r\n return {\r\n create(){\r\n let choicesDom = choicesDomFactory.create();\r\n return {\r\n choicesDom,\r\n createStaticDom(element, containerClass){\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 \r\n let containerElement, picksElement;\r\n let removableContainerClass= false;\r\n if (element.tagName == 'DIV') {\r\n containerElement = element;\r\n if (!containerElement.classList.contains(containerClass)){\r\n containerElement.classList.add(containerClass);\r\n removableContainerClass = true;\r\n }\r\n picksElement = findDirectChildByTagName(containerElement, 'UL');\r\n }\r\n else if (element.tagName == 'UL') {\r\n picksElement = element;\r\n containerElement = closestByClassName(element, containerClass);\r\n if (!containerElement){\r\n showError('BsMultiSelect: defined on UL but precedentant DIV for container not found; class='+containerClass);\r\n }\r\n } \r\n else if (element.tagName==\"INPUT\"){\r\n showError('BsMultiSelect: INPUT element is not supported');\r\n }\r\n let disposablePicksElement=false;\r\n if (!picksElement) {\r\n picksElement = createElementAspect.createElement('UL');\r\n disposablePicksElement = true; \r\n }\r\n \r\n return {\r\n choicesDom,\r\n staticDom: {\r\n initialElement:element,\r\n containerElement,\r\n picksElement,\r\n disposablePicksElement\r\n },\r\n staticManager: {\r\n appendToContainer(){ \r\n containerElement.appendChild(choicesDom.choicesElement); \r\n if (disposablePicksElement)\r\n containerElement.appendChild(picksElement)\r\n },\r\n dispose(){ \r\n containerElement.removeChild(choicesDom.choicesElement); \r\n if (removableContainerClass)\r\n containerElement.classList.remove(containerClass);\r\n if (disposablePicksElement)\r\n containerElement.removeChild(picksElement)\r\n }\r\n }\r\n };\r\n }\r\n }\r\n }\r\n }\r\n}","import {addStyling, toggleStyling} from './ToolsStyling';\r\n\r\nexport function PicksDom(picksElement, disposablePicksElement, createElementAspect, css){\r\n var pickFilterElement = createElementAspect.createElement('LI');\r\n \r\n addStyling(picksElement, css.picks);\r\n addStyling(pickFilterElement, css.pickFilter);\r\n\r\n\r\n let disableToggleStyling = toggleStyling(picksElement, css.picks_disabled);\r\n let focusToggleStyling = toggleStyling(picksElement, css.picks_focus);\r\n let isFocusIn = false;\r\n\r\n return {\r\n picksElement,\r\n pickFilterElement,\r\n\r\n createPickElement(){\r\n var pickElement = createElementAspect.createElement('LI');\r\n addStyling(pickElement, css.pick);\r\n return {\r\n pickElement, \r\n attach: () => picksElement.insertBefore(pickElement, pickFilterElement),\r\n detach: () => picksElement.removeChild(pickElement)\r\n };\r\n },\r\n disable(isComponentDisabled){\r\n disableToggleStyling(isComponentDisabled)\r\n },\r\n toggleFocusStyling(){\r\n focusToggleStyling(isFocusIn)\r\n },\r\n getIsFocusIn(){\r\n return isFocusIn;\r\n },\r\n setIsFocusIn(newIsFocusIn){\r\n isFocusIn = newIsFocusIn\r\n }, \r\n \r\n dispose(){\r\n if (!disposablePicksElement){\r\n disableToggleStyling(false)\r\n focusToggleStyling(false)\r\n \r\n if (pickFilterElement.parentNode)\r\n pickFilterElement.parentNode.removeChild(pickFilterElement)\r\n }\r\n }\r\n }\r\n}","import {addStyling} from './ToolsStyling';\r\n\r\nexport function FilterDom(disposablePicksElement, createElementAspect, css){\r\n var filterInputElement = createElementAspect.createElement('INPUT');\r\n addStyling(filterInputElement, css.filterInput);\r\n\r\n filterInputElement.setAttribute(\"type\",\"search\");\r\n filterInputElement.setAttribute(\"autocomplete\",\"off\");\r\n\r\n return {\r\n filterInputElement,\r\n isEmpty: () => filterInputElement.value ? false:true,\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 if (!disposablePicksElement){\r\n if (filterInputElement.parentNode)\r\n filterInputElement.parentNode.removeChild(filterInputElement)\r\n }\r\n }\r\n }\r\n}\r\n","import {addStyling} from './ToolsStyling';\r\n\r\nexport function ChoicesDomFactory(createElementAspect, css) { \r\n return {\r\n create(){\r\n var choicesElement = createElementAspect.createElement('UL');\r\n addStyling(choicesElement, css.choices);\r\n choicesElement.style.display = 'none';\r\n return {\r\n choicesElement,\r\n createChoiceElement() {\r\n var choiceElement = createElementAspect.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: () => choicesElement.removeChild(choiceElement)\r\n };\r\n }\r\n }\r\n }\r\n }\r\n}","export function PopupAspect(choicesElement, filterInputElement, Popper) { \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 return {\r\n init(){ \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 isChoicesVisible(){ return choicesElement.style.display != 'none'},\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 popper.destroy();\r\n }\r\n }\r\n}","export function TriggerAspect(element, trigger) {\r\n return {\r\n trigger: (eventName) => trigger(element, eventName)\r\n }\r\n}\r\n\r\nexport function OnChangeAspect(triggerAspect, name) {\r\n return {\r\n onChange(){\r\n triggerAspect.trigger(name)\r\n }\r\n }\r\n}\r\n\r\nexport function ComponentAspect(getDisabled) {\r\n if (!getDisabled)\r\n getDisabled = () => false;\r\n return {\r\n getDisabled\r\n }\r\n}\r\n\r\n","export function OptionsAspect(options){\r\n return {\r\n getOptions : () => options\r\n }\r\n}\r\n\r\nexport function OptionPropertiesAspect(getText, getSelected, setSelected, getDisabled){\r\n if (!getText){\r\n getText = (option) => option.text;\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 // TODO: move to sql\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 if (!getDisabled)\r\n getDisabled = option => (option.disabled===undefined) ? false : option.disabled;\r\n return {\r\n getText,\r\n getSelected,\r\n setSelected,\r\n getDisabled\r\n }\r\n}\r\n","import {ListFacade /*, sync, composeSync*/} from './ToolsJs'\r\n//import {addStyling} from './ToolsStyling';\r\n\r\nexport function ChoicesGetNextAspect(getHead, getNext){\r\n return {\r\n getHead, \r\n getNext\r\n }\r\n}\r\n\r\nexport function ChoicesEnumerableAspect(choicesGetNextAspect){\r\n return {\r\n forEach(f){\r\n let choice = choicesGetNextAspect.getHead(); // this.choices.getHead()\r\n while(choice){\r\n forEach( (choice)=>{\r\n f(choice);\r\n choice = choicesGetNextAspect.getNext(choice);\r\n });\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport function FilterListAspect(choicesGetNextAspect, choicesEnumerableAspect) {\r\n let 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 let composeFilterPredicate = (text) => \r\n (choice) => !choice.isOptionSelected && !choice.isOptionDisabled && choice.searchText.indexOf(text) >= 0 \r\n\r\n return {\r\n addFilterFacade(choice){ // redefined in HidenOptionPulgin\r\n filterListFacade.add(choice);\r\n },\r\n insertFilterFacade(choice){ // redefined in HidenOptionPulgin\r\n let choiceNonhiddenBefore = choicesGetNextAspect.getNext(choice);\r\n filterListFacade.add(choice, choiceNonhiddenBefore);\r\n },\r\n navigate(down, choice /* hoveredChoice */){ \r\n if (down) {\r\n return choice?choice.filteredNext: filterListFacade.getHead();\r\n } else {\r\n return choice?choice.filteredPrev: filterListFacade.getTail();\r\n }\r\n }, \r\n \r\n processEmptyInput(){ // redefined in PlaceholderPulgin\r\n filterListFacade.reset();\r\n choicesEnumerableAspect.forEach( (choice)=>{\r\n choice.filteredPrev = choice.filteredNext = null;\r\n filterListFacade.add(choice);\r\n choice.setVisible(true);\r\n });\r\n },\r\n setFilter(text){ \r\n let getFilterIn = composeFilterPredicate(text)\r\n filterListFacade.reset();\r\n choicesEnumerableAspect.forEach( (choice)=>{\r\n choice.filteredPrev = choice.filteredNext = null;\r\n var v = getFilterIn(choice);\r\n if (v)\r\n filterListFacade.add(choice);\r\n choice.setVisible(v);\r\n });\r\n },\r\n\r\n getCount(){\r\n return filterListFacade.getCount();\r\n },\r\n getHead(){\r\n return filterListFacade.getHead();\r\n },\r\n reset(){\r\n return filterListFacade.reset();\r\n },\r\n remove(c){\r\n filterListFacade.remove(c);\r\n },\r\n add(e, next){\r\n filterListFacade.add(e, next);\r\n },\r\n remove(e){\r\n filterListFacade.remove(e);\r\n }\r\n }\r\n}\r\n","export function ChoicesElementAspect(\r\n choicesDom,\r\n filterDom, \r\n choiceDomFactory,\r\n onChangeAspect, \r\n optionToggleAspect,\r\n picksAspect\r\n ) {\r\n return {\r\n buildChoiceElement(\r\n choice,\r\n adoptChoiceElement, // aspect.adoptChoiceElement\r\n handleOnRemoveButton // aspect.handleOnRemoveButton\r\n ){\r\n var {choiceElement, setVisible, attach, detach} = choicesDom.createChoiceElement();\r\n choice.choiceElement = choiceElement;\r\n choice.choiceElementAttach = attach;\r\n let {choiceDomManager} = choiceDomFactory.create(\r\n choiceElement, \r\n choice,\r\n () => {\r\n optionToggleAspect.toggle(choice);\r\n filterDom.setFocus();\r\n });\r\n let choiceHanlders = choiceDomManager.init();\r\n let pickTools = { updateSelectedTrue: null, updateSelectedFalse: null }\r\n let updateSelectedTrue = () => { \r\n var removePick = picksAspect.createPick(choice, handleOnRemoveButton);\r\n pickTools.updateSelectedFalse = removePick;\r\n };\r\n \r\n pickTools.updateSelectedTrue = updateSelectedTrue;\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 choiceHanlders.updateSelected();\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 onChangeAspect.onChange();\r\n }\r\n \r\n var unbindChoiceElement = adoptChoiceElement(choice, choiceElement);\r\n \r\n choice.isFilteredIn = true;\r\n \r\n choice.setHoverIn = (v) => {\r\n choice.isHoverIn =v ;\r\n choiceHanlders.updateHoverIn();\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 = choiceHanlders.updateDisabled;\r\n \r\n choice.dispose = () => {\r\n unbindChoiceElement();\r\n choiceDomManager.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 updateSelectedTrue();\r\n }\r\n }\r\n \r\n }\r\n}\r\n\r\nexport function ChoiceFactoryAspect(choicesElementAspect, choicesGetNextAspect){\r\n return {\r\n pushChoiceItem(\r\n choice,\r\n adoptChoiceElement, // multiSelectInputAspect.adoptChoiceElement\r\n handleOnRemoveButton // multiSelectInputAspect.handleOnRemoveButton\r\n ){\r\n choicesElementAspect.buildChoiceElement(\r\n choice,\r\n adoptChoiceElement,\r\n handleOnRemoveButton\r\n );\r\n choice.choiceElementAttach();\r\n },\r\n insertChoiceItem(\r\n choice,\r\n adoptChoiceElement, // aspect.adoptChoiceElement\r\n handleOnRemoveButton\r\n ){\r\n choicesElementAspect.buildChoiceElement(choice, adoptChoiceElement, handleOnRemoveButton);\r\n let nextChoice = choicesGetNextAspect.getNext(choice);\r\n choice.choiceElementAttach(nextChoice?.choiceElement);\r\n }\r\n }\r\n}\r\n\r\n\r\nexport function ChoicesAspect(document, choiceAspect, optionsAspect, choices, choiceFactoryAspect) { \r\n return {\r\n updateDataImpl(\r\n adoptChoiceElement, // aspect.adoptChoiceElement\r\n handleOnRemoveButton\r\n ){\r\n var fillChoices = () => {\r\n let options = optionsAspect.getOptions();\r\n for(let i = 0; i multiSelectInputAspect.adoptChoiceElement(c,e),\r\n (s) => multiSelectInputAspect.handleOnRemoveButton(s)\r\n );\r\n }\r\n }\r\n}","export function OptionToggleAspect(choiceAspect){\r\n return {\r\n toggle: (choice)=>toggle(choiceAspect.setOptionSelected, choice)\r\n }\r\n}\r\n\r\n\r\nfunction toggle(setOptionSelected, choice){\r\n var success = false;\r\n if (choice.isOptionSelected || !choice.isOptionDisabled)\r\n success = setOptionSelected(choice, !choice.isOptionSelected);\r\n return success;\r\n}","export function ChoiceAspect(optionPropertiesAspect){\r\n return {\r\n createChoice: (option)=>createChoice(optionPropertiesAspect, option),\r\n setOptionSelected: (choice, booleanValue) => setOptionSelected(optionPropertiesAspect, choice, booleanValue),\r\n isSelectable: (choice)=>isSelectable(choice) // TODO: should be moved to new aspect\r\n }\r\n}\r\n\r\nfunction setOptionSelected(optionPropertiesAspect, choice, booleanValue){\r\n let success = false;\r\n var confirmed = optionPropertiesAspect.setSelected(choice.option, booleanValue);\r\n if (!(confirmed===false)) {\r\n choice.isOptionSelected = booleanValue;\r\n choice.updateSelected();\r\n success = true;\r\n }\r\n return success;\r\n}\r\n\r\nfunction isSelectable(choice){\r\n return !choice.isOptionSelected && !choice.isOptionDisabled;\r\n}\r\n\r\nfunction createChoice(optionPropertiesAspect, option){\r\n let isOptionSelected = optionPropertiesAspect.getSelected(option);\r\n let isOptionDisabled = optionPropertiesAspect.getDisabled(option); \r\n return {\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: optionPropertiesAspect.getText(option).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}","export function Choices(collection, listFacade_reset, listFacade_remove, addFilterFacade, insertFilterFacade) \r\n{\r\n return {\r\n push: (choice) => push(choice, collection, addFilterFacade),\r\n insert: (key, choice) => insert(key, choice, collection, addFilterFacade, insertFilterFacade),\r\n get: (key) => collection.get(key),\r\n remove: (key) => {\r\n var choice = collection.remove(key);\r\n listFacade_remove(choice);\r\n return choice;\r\n },\r\n\r\n // ---- dialog AI\r\n getHead: () => collection.getHead(),\r\n forLoop: (f) => collection.forLoop(f),\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}\r\n\r\nfunction push(choice, collection, addFilterFacade){\r\n addFilterFacade(choice);\r\n collection.push(choice);\r\n}\r\n\r\nfunction insert(key, choice, collection, addFilterFacade, insertFilterFacade){\r\n if (key>=collection.getLength()) {\r\n push(choice, collection, addFilterFacade);\r\n }\r\n else {\r\n collection.add(choice, key);\r\n insertFilterFacade(choice);\r\n }\r\n}","export function ChoicesHover(navigate){\r\n let hoveredChoice=null;\r\n function resetHoveredChoice() {\r\n if (hoveredChoice) {\r\n hoveredChoice.setHoverIn(false)\r\n hoveredChoice = null;\r\n }\r\n }\r\n return {\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}","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.updateRemoveDisabled())\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 {composeSync} from './ToolsJs';\r\n\r\nexport function PicksAspect(picksDom, pickDomFactory, \r\n choiceAspect, picks){\r\n return {\r\n createPick(choice, handleOnRemoveButton /* multiSelectInputAspect.handleOnRemoveButton */){\r\n let { pickElement, attach, detach } = picksDom.createPickElement(); \r\n let setSelectedFalse = () => choiceAspect.setOptionSelected(choice, false)\r\n let remove = handleOnRemoveButton(setSelectedFalse);\r\n let {pickDomManager} = pickDomFactory.create(pickElement, choice, remove); \r\n let pickHandlers = pickDomManager.init();\r\n\r\n var pick = {\r\n updateRemoveDisabled: () => pickHandlers.updateRemoveDisabled(),\r\n updateData: () => pickHandlers.updateData(),\r\n updateDisabled: () => pickHandlers.updateDisabled(),\r\n remove: setSelectedFalse,\r\n dispose: () => { \r\n detach(); \r\n pickDomManager.dispose(); \r\n pick.updateRemoveDisabled=null; pick.updateData=null; pick.updateDisabled=null; pick.remove=null; \r\n pick.dispose=null; \r\n }, \r\n }\r\n \r\n attach();\r\n let choiceUpdateDisabledBackup = choice.updateDisabled;\r\n choice.updateDisabled = composeSync(choiceUpdateDisabledBackup, pick.updateDisabled);\r\n \r\n var removeFromList = 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 \r\n return removePick;\r\n }\r\n }\r\n}","export function InputAspect(\r\n filterListAspect, choiceAspect, filterDom, \r\n popupAspect, choicesHover){\r\n\r\n return {\r\n input(filterInputValue, resetLength, \r\n eventLoopFlag_set, //multiSelectInputAspect.eventLoopFlag.set(); \r\n aspect_showChoices, //multiSelectInputAspect.showChoices();\r\n aspect_hideChoices// multiSelectInputAspect.hideChoices();\r\n ){\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 filterListAspect.setFilter(text);\r\n if (filterListAspect.getCount() == 1)\r\n {\r\n let fullMatchChoice = filterListAspect.getHead();\r\n if (fullMatchChoice.searchText == text)\r\n {\r\n choiceAspect.setOptionSelected(fullMatchChoice, true);\r\n filterDom.setEmpty();\r\n isEmpty=true;\r\n }\r\n }\r\n }\r\n if (isEmpty){\r\n filterListAspect.processEmptyInput();\r\n }\r\n else\r\n resetLength(); \r\n \r\n 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 = filterListAspect.getCount();\r\n \r\n if (visibleCount>0){\r\n let panelIsVisble = popupAspect.isChoicesVisible();\r\n if (!panelIsVisble){\r\n aspect_showChoices(); //multiSelectInputAspect.showChoices();\r\n }\r\n if (visibleCount == 1) {\r\n choicesHover.hoverIn(filterListAspect.getHead())\r\n } else {\r\n if (panelIsVisble)\r\n choicesHover.resetHoveredChoice();\r\n } \r\n }else{\r\n if (popupAspect.isChoicesVisible())\r\n aspect_hideChoices();\r\n }\r\n }\r\n }\r\n}","export function ResetFilterListAspect(filterDom, filterListAspect){\r\n return {\r\n forceResetFilter(){ // over in PlaceholderPlugin\r\n filterDom.setEmpty();\r\n filterListAspect.processEmptyInput(); // over in PlaceholderPlugin\r\n }\r\n }\r\n}\r\n\r\nexport function ManageableResetFilterListAspect(filterDom, resetFilterListAspect){\r\n return {\r\n resetFilter(){ // call in OptionsApiPlugin\r\n if (!filterDom.isEmpty()) // call in Placeholder\r\n resetFilterListAspect.forceResetFilter(); // over in Placeholder\r\n }\r\n }\r\n}\r\n\r\nexport function FocusInAspect(picksDom){\r\n return {\r\n setFocusIn(focus){ // call in OptionsApiPlugin\r\n picksDom.setIsFocusIn(focus) // unique call, call BsAppearancePlugin\r\n picksDom.toggleFocusStyling() // over BsAppearancePlugin\r\n }\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 setFocus, \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 setFocus()\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());\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())\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\r\n\r\n // onRemove(event => {\r\n // processUncheck(setSelectedFalse, event);\r\n // hideChoices();\r\n // resetFilter(); \r\n // });\r\n // }\r\n \r\n function handleOnRemoveButton(setSelectedFalse){ return (event) => {\r\n processUncheck(setSelectedFalse, event);\r\n hideChoices();\r\n resetFilter(); \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}","import {EventBinder} from './ToolsDom';\r\nexport function FilterAspect(\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 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 dispose(){\r\n eventBinder.unbind();\r\n }\r\n }\r\n}","export function DisabledComponentAspect(componentAspect, picks, multiSelectInputAspect, picksDom){\r\n let isComponentDisabled;\r\n return {\r\n updateDisabledComponent(){\r\n let newIsComponentDisabled = componentAspect.getDisabled();\r\n if (isComponentDisabled!==newIsComponentDisabled){\r\n isComponentDisabled=newIsComponentDisabled;\r\n picks.disableRemoveAll(newIsComponentDisabled);\r\n multiSelectInputAspect.disable(newIsComponentDisabled);\r\n picksDom.disable(newIsComponentDisabled);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport function AppearanceAspect(disabledComponentAspect){\r\n return {\r\n updateAppearance(){\r\n disabledComponentAspect.updateDisabledComponent();\r\n }\r\n }\r\n}\r\n\r\nexport function LoadAspect(choicesAspect, multiSelectInputAspect, appearanceAspect){\r\n return {\r\n load(){\r\n choicesAspect.updateDataImpl(\r\n (c,e) => multiSelectInputAspect.adoptChoiceElement(c,e),\r\n (s) => multiSelectInputAspect.handleOnRemoveButton(s)\r\n );\r\n appearanceAspect.updateAppearance(); \r\n }\r\n }\r\n}","import {PluginManager, plugOnConfiguration, staticDomDefaults} from './PluginManager'\r\n\r\nimport {composeSync} from './ToolsJs';\r\n\r\nimport {PickDomFactory} from './PickDomFactory';\r\nimport {ChoiceDomFactory} from './ChoiceDomFactory';\r\n\r\nimport {StaticDomFactory, CreateElementAspect} from './StaticDomFactory';\r\n\r\nimport {PicksDom} from './PicksDom';\r\nimport {FilterDom} from './FilterDom';\r\n\r\nimport {ChoicesDomFactory} from './ChoicesDomFactory';\r\nimport {PopupAspect} from './PopupAspect';\r\n\r\nimport {ComponentAspect, TriggerAspect, OnChangeAspect} from './ComponentAspect';\r\nimport {OptionsAspect, OptionPropertiesAspect} from './OptionsAspect';\r\n\r\nimport {DoublyLinkedCollection} from './ToolsJs'\r\n\r\nimport {FilterListAspect, ChoicesGetNextAspect, ChoicesEnumerableAspect } from './FilterListAspect'\r\nimport {ChoicesElementAspect, ChoiceFactoryAspect, ChoicesAspect } from './ChoicesAspect'\r\nimport {UpdateDataAspect } from './UpdateDataAspect'\r\n\r\nimport {OptionToggleAspect} from './OptionToggleAspect'\r\nimport {ChoiceAspect} from './ChoiceAspect.js'\r\nimport {Choices} from './Choices'\r\nimport {ChoicesHover} from './ChoicesHover'\r\nimport {Picks} from './Picks'\r\nimport {PicksAspect} from './PicksAspect'\r\nimport {InputAspect} from './InputAspect'\r\nimport {ResetFilterListAspect} from './ResetFilterListAspect'\r\nimport {ManageableResetFilterListAspect} from './ResetFilterListAspect'\r\nimport {FocusInAspect} from './ResetFilterListAspect'\r\nimport {MultiSelectInputAspect} from './MultiSelectInputAspect'\r\nimport {FilterAspect} from './FilterAspect'\r\nimport {DisabledComponentAspect, LoadAspect, AppearanceAspect} from './AppearanceAspect'\r\n\r\nexport function BsMultiSelect(element, environment, configuration, onInit){\r\n var {Popper, window, plugins} = environment;\r\n \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 getDisabled,\r\n options, \r\n getText, getSelected, setSelected, getIsOptionDisabled,\r\n } = configuration;\r\n let disposeAspect = {};\r\n let triggerAspect = TriggerAspect(element, environment.trigger);\r\n let onChangeAspect = OnChangeAspect(triggerAspect, 'dashboardcode.multiselect:change');\r\n let componentAspect = ComponentAspect(getDisabled);\r\n let optionsAspect = OptionsAspect(options); \r\n let optionPropertiesAspect = OptionPropertiesAspect(getText, getSelected, setSelected, getIsOptionDisabled);\r\n let choiceAspect = ChoiceAspect(optionPropertiesAspect);\r\n let optionToggleAspect = OptionToggleAspect(choiceAspect);\r\n let createElementAspect = CreateElementAspect(name => window.document.createElement(name));\r\n \r\n let aspects = {\r\n environment, configuration, triggerAspect, onChangeAspect, componentAspect, disposeAspect,\r\n optionsAspect, optionPropertiesAspect, choiceAspect, optionToggleAspect, createElementAspect\r\n }\r\n plugOnConfiguration(plugins, aspects); // apply cssPatch \r\n \r\n let choicesDomFactory = ChoicesDomFactory(createElementAspect, css);\r\n let staticDomFactory = StaticDomFactory(choicesDomFactory, createElementAspect);\r\n aspects.choicesDomFactory=choicesDomFactory;\r\n aspects.staticDomFactory=staticDomFactory;\r\n \r\n staticDomDefaults(plugins, aspects);\r\n\r\n let {choicesDom, createStaticDom} = staticDomFactory.create()\r\n let {staticDom, staticManager} = createStaticDom(element, containerClass)\r\n\r\n let filterDom = FilterDom(staticDom.disposablePicksElement, createElementAspect, css);\r\n // TODO get picksDom from staticDomFactory\r\n let picksDom = PicksDom(staticDom.picksElement, staticDom.disposablePicksElement, createElementAspect, css);\r\n let focusInAspect = FocusInAspect(picksDom)\r\n let popupAspect = PopupAspect(choicesDom.choicesElement, filterDom.filterInputElement, Popper);\r\n\r\n let collection = DoublyLinkedCollection(\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 let choicesGetNextAspect = ChoicesGetNextAspect(\r\n ()=>collection.getHead(),\r\n (choice)=>choice.itemNext\r\n )\r\n\r\n let choicesEnumerableAspect = ChoicesEnumerableAspect(\r\n choicesGetNextAspect\r\n )\r\n\r\n let filterListAspect = FilterListAspect(choicesGetNextAspect, choicesEnumerableAspect); \r\n let resetFilterListAspect = ResetFilterListAspect(filterDom, filterListAspect)\r\n let manageableResetFilterListAspect = ManageableResetFilterListAspect(filterDom, resetFilterListAspect)\r\n // TODO move to fully index collection\r\n let choices = Choices(\r\n collection,\r\n ()=>filterListAspect.reset(), \r\n (c)=>filterListAspect.remove(c),\r\n (c)=>filterListAspect.addFilterFacade(c), \r\n (c)=>filterListAspect.insertFilterFacade(c));\r\n \r\n let choicesHover = ChoicesHover((down, hoveredChoice)=>filterListAspect.navigate(down, hoveredChoice));\r\n\r\n let inputAspect = InputAspect(filterListAspect, choiceAspect, filterDom, popupAspect, choicesHover);\r\n\r\n let picks = Picks();\r\n \r\n let pickDomFactory = PickDomFactory(css, componentAspect, optionPropertiesAspect);\r\n let picksAspect = PicksAspect(\r\n picksDom, \r\n pickDomFactory,\r\n choiceAspect, picks, manageableResetFilterListAspect\r\n );\r\n\r\n let choiceDomFactory = ChoiceDomFactory(css, optionPropertiesAspect);\r\n \r\n let choicesElementAspect = ChoicesElementAspect( choicesDom, filterDom, choiceDomFactory, onChangeAspect, optionToggleAspect, picksAspect)\r\n let choiceFactoryAspect = ChoiceFactoryAspect(choicesElementAspect, choicesGetNextAspect);\r\n let choicesAspect = ChoicesAspect(window.document, choiceAspect, optionsAspect, choices, choiceFactoryAspect);\r\n\r\n let multiSelectInputAspect = MultiSelectInputAspect(\r\n window,\r\n () => filterDom.setFocus(), \r\n picksDom.picksElement, \r\n choicesDom.choicesElement, \r\n () => popupAspect.isChoicesVisible(),\r\n (visible) => popupAspect.setChoicesVisible(visible),\r\n () => choicesHover.resetHoveredChoice(), \r\n (choice) => choicesHover.hoverIn(choice),\r\n () => manageableResetFilterListAspect.resetFilter(),\r\n () => filterListAspect.getCount()==0, \r\n \r\n /*onClick*/(event) => filterDom.setFocusIfNotTarget(event.target),\r\n /*resetFocus*/() => focusInAspect.setFocusIn(false),\r\n /*alignToFilterInputItemLocation*/() => popupAspect.updatePopupLocation()\r\n );\r\n\r\n let disabledComponentAspect = DisabledComponentAspect(componentAspect, picks, multiSelectInputAspect, picksDom);\r\n let appearanceAspect = AppearanceAspect(disabledComponentAspect);\r\n let loadAspect = LoadAspect(choicesAspect, multiSelectInputAspect, appearanceAspect);\r\n\r\n function hoveredToSelected(){\r\n let hoveredChoice = choicesHover.getHoveredChoice();\r\n if (hoveredChoice){\r\n var wasToggled = optionToggleAspect.toggle(hoveredChoice);\r\n if (wasToggled) {\r\n multiSelectInputAspect.hideChoices();\r\n manageableResetFilterListAspect.resetFilter();\r\n }\r\n }\r\n }\r\n\r\n function keyDownArrow(down) {\r\n let choice = choicesHover.navigate(down);\r\n if (choice)\r\n {\r\n choicesHover.hoverIn(choice);\r\n multiSelectInputAspect.showChoices();\r\n }\r\n }\r\n\r\n let filterAspect = FilterAspect(\r\n filterDom.filterInputElement,\r\n () => focusInAspect.setFocusIn(true), // focus in - show dropdown\r\n () => multiSelectInputAspect.onFocusOut(\r\n () => focusInAspect.setFocusIn(false)\r\n ), // focus out - hide dropdown\r\n \r\n () => keyDownArrow(false), // arrow up\r\n () => keyDownArrow(true), // arrow down\r\n /*onTabForEmpty*/() => multiSelectInputAspect.hideChoices(), // tab on empty\r\n () => {\r\n let p = picks.removePicksTail();\r\n if (p)\r\n popupAspect.updatePopupLocation();\r\n }, // backspace - \"remove last\"\r\n\r\n /*onTabToCompleate*/() => { \r\n if (popupAspect.isChoicesVisible()) {\r\n hoveredToSelected();\r\n } \r\n },\r\n /*onEnterToCompleate*/() => { \r\n if (popupAspect.isChoicesVisible()) {\r\n hoveredToSelected();\r\n } else {\r\n if (filterListAspect.getCount()>0){\r\n multiSelectInputAspect.showChoices();\r\n }\r\n }\r\n },\r\n \r\n /*onKeyUpEsc*/() => {\r\n multiSelectInputAspect.hideChoices(); // always hide 1st\r\n manageableResetFilterListAspect.resetFilter();\r\n }, // esc keyup \r\n\r\n // tab/enter \"compleate hovered\"\r\n /*stopEscKeyDownPropogation */() => popupAspect.isChoicesVisible(),\r\n\r\n /*onInput*/(filterInputValue, resetLength) =>\r\n { \r\n inputAspect.input(\r\n filterInputValue, \r\n resetLength,\r\n ()=>multiSelectInputAspect.eventLoopFlag.set(), \r\n ()=>multiSelectInputAspect.showChoices(),\r\n ()=>multiSelectInputAspect.hideChoices()\r\n ) \r\n }\r\n );\r\n\r\n let updateDataAspect = UpdateDataAspect(multiSelectInputAspect, manageableResetFilterListAspect,\r\n choicesDom, choices, picks, choicesAspect);\r\n\r\n aspects.pickDomFactory=pickDomFactory;\r\n aspects.choiceDomFactory=choiceDomFactory;\r\n aspects.staticDom=staticDom;\r\n aspects.picksDom=picksDom;\r\n aspects.choicesDom=choicesDom;\r\n aspects.popupAspect=popupAspect;\r\n aspects.staticManager=staticManager;\r\n\r\n aspects.choicesGetNextAspect=choicesGetNextAspect;\r\n aspects.choicesEnumerableAspect=choicesEnumerableAspect;\r\n aspects.filterListAspect=filterListAspect;\r\n aspects.choices=choices;\r\n aspects.choicesHover=choicesHover;\r\n aspects.picks=picks;\r\n aspects.choicesElementAspect=choicesElementAspect;\r\n aspects.choiceFactoryAspect=choiceFactoryAspect;\r\n aspects.choicesAspect=choicesAspect;\r\n\r\n aspects.picksAspect=picksAspect;\r\n aspects.filterDom=filterDom;\r\n aspects.inputAspect=inputAspect;\r\n aspects.resetFilterListAspect=resetFilterListAspect;\r\n aspects.manageableResetFilterListAspect=manageableResetFilterListAspect;\r\n\r\n aspects.multiSelectInputAspect=multiSelectInputAspect;\r\n aspects.focusInAspect=focusInAspect;\r\n aspects.filterAspect=filterAspect;\r\n aspects.disabledComponentAspect=disabledComponentAspect;\r\n aspects.appearanceAspect=appearanceAspect;\r\n\r\n aspects.loadAspect=loadAspect;\r\n aspects.updateDataAspect=updateDataAspect;\r\n\r\n let pluginManager = PluginManager(plugins, aspects);\r\n \r\n let api = {component: \"BsMultiSelect.api\"} \r\n \r\n pluginManager.buildApi(api);\r\n\r\n api.dispose = composeSync(\r\n disposeAspect.dispose,\r\n multiSelectInputAspect.hideChoices,\r\n pluginManager.dispose, \r\n picks.dispose,\r\n multiSelectInputAspect.dispose,\r\n choices.dispose,\r\n staticManager.dispose, popupAspect.dispose, picksDom.dispose, filterDom.dispose, filterAspect.dispose );\r\n \r\n api.updateData = updateDataAspect.updateData;\r\n api.update = () => {\r\n updateDataAspect.updateData();\r\n appearanceAspect.updateAppearance();\r\n }\r\n api.updateAppearance = appearanceAspect.updateAppearance\r\n api.updateDisabled = disabledComponentAspect.updateDisabledComponent;\r\n\r\n onInit?.(api, aspects);\r\n \r\n picksDom.pickFilterElement.appendChild(filterDom.filterInputElement);\r\n picksDom.picksElement.appendChild(picksDom.pickFilterElement); \r\n staticManager.appendToContainer();\r\n popupAspect.init();\r\n loadAspect.load();\r\n\r\n return api;\r\n}\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 PicksDom\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};","import {defCall} from '../ToolsJs';\r\n\r\nexport function LabelPlugin(pluginData){\r\n let {configuration, staticDom, filterDom} = pluginData;\r\n let {containerClass, label} = configuration\r\n let getLabelElementAspect = () => defCall(label); \r\n let labelPluginData = {getLabelElementAspect}; // overrided by BS Appearance Plugin\r\n pluginData.labelPluginData=labelPluginData;\r\n let createInputId = null;\r\n let {selectElement, containerElement} = staticDom;\r\n let {filterInputElement} = filterDom;\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 buildApi(){\r\n let labelElement = labelPluginData.getLabelElementAspect();\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 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, popupAspect, staticDom} = 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(staticDom.initialElement);\r\n \r\n var attributeBackup = AttributeBackup();\r\n if (forceRtlOnContainer){\r\n attributeBackup.set(staticDom.containerElement, \"dir\", \"rtl\");\r\n }\r\n else if (staticDom.selectElement){\r\n var dirAttributeValue = staticDom.selectElement.getAttribute(\"dir\");\r\n if (dirAttributeValue){\r\n attributeBackup.set(staticDom.containerElement, \"dir\", dirAttributeValue);\r\n }\r\n } \r\n if (isRtl)\r\n popupAspect.popperConfiguration.placement = 'bottom-end';\r\n return {\r\n dispose(){\r\n attributeBackup.restore;\r\n }\r\n }\r\n}\r\n","import {EventBinder, closestByTagName} from '../ToolsDom';\r\n\r\nexport function FormResetPlugin(pluginData){\r\n var {staticDom, environment} = pluginData;\r\n return {\r\n buildApi(api){\r\n var eventBuilder = EventBinder();\r\n if (staticDom.selectElement){\r\n var form = closestByTagName(staticDom.selectElement, 'FORM');\r\n if (form) {\r\n eventBuilder.bind(form, \r\n 'reset', \r\n () => environment.window.setTimeout( ()=>api.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, trigger){\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 var checkValidity = () => {\r\n if (!validity.valid)\r\n trigger('dashboardcode.multiselect:invalid')\r\n return validity.valid;\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 reportValidity(){\r\n visibleElement.reportValidity();\r\n return checkValidity();\r\n }\r\n }\r\n}","import {ValidityApi} from '../ValidityApi'\r\nimport {ObservableValue, ObservableLambda, defCall, isBoolean, 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, triggerAspect, onChangeAspect, optionsAspect, \r\n selectElementPluginData, staticDom, filterDom, updateDataAspect} = pluginData;\r\n // TODO: required could be a function\r\n let {getIsValueMissing, valueMissingMessage, required} = configuration;\r\n if (!isBoolean(required))\r\n required = selectElementPluginData?.required; \r\n else if (!isBoolean(required))\r\n required = false;\r\n valueMissingMessage = defCall(valueMissingMessage,\r\n ()=> getDataGuardedWithPrefix(staticDom.initialElement,\"bsmultiselect\",\"value-missing-message\"),\r\n defValueMissingMessage)\r\n\r\n if (!getIsValueMissing) {\r\n getIsValueMissing = () => {\r\n let count = 0;\r\n let optionsArray = optionsAspect.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 onChangeAspect.onChange = composeSync(isValueMissingObservable.call, onChangeAspect.onChange);\r\n updateDataAspect.updateData = composeSync(isValueMissingObservable.call, updateDataAspect.updateData);\r\n pluginData.validationApiPluginData = {validationApiObservable};\r\n\r\n var validationApi = ValidityApi(\r\n filterDom.filterInputElement, \r\n isValueMissingObservable, \r\n valueMissingMessage,\r\n (isValid)=>validationApiObservable.setValue(isValid),\r\n triggerAspect.trigger\r\n );\r\n\r\n return {\r\n buildApi(api){\r\n api.validationApi = validationApi;\r\n },\r\n dispose(){\r\n isValueMissingObservable.detachAll(); \r\n validationApiObservable.detachAll();\r\n }\r\n }\r\n}\r\n\r\nValidationApiPlugin.initiateDefaults = (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, validationApiPluginData, \r\n picksDom, staticDom, labelPluginData, appearanceAspect, componentAspect} = pluginData;\r\n let {getValidity, getSize, useCssPatch, css} = configuration;\r\n let selectElement = staticDom.selectElement;\r\n \r\n if (labelPluginData){\r\n let origGetLabelElementAspect = labelPluginData.getLabelElementAspect;\r\n labelPluginData.getLabelElementAspect = () => {\r\n var e = origGetLabelElementAspect();\r\n if (e)\r\n return e;\r\n else{\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 return value;\r\n }\r\n }\r\n }\r\n \r\n if (staticDom.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 componentAspect.getSize=getSize;\r\n componentAspect.getValidity=getValidity;\r\n\r\n var updateSize;\r\n if (!useCssPatch){\r\n updateSize= () => updateSizeForAdapter(picksDom.picksElement, getSize)\r\n }\r\n else{\r\n const {picks_lg, picks_sm, picks_def} = css;\r\n updateSize = () => updateSizeJsForAdapter(picksDom.picksElement, picks_lg, picks_sm, picks_def, getSize);\r\n }\r\n\r\n if (useCssPatch){\r\n var origToggleFocusStyling = picksDom.toggleFocusStyling;\r\n picksDom.toggleFocusStyling = () => {\r\n var validity = validationObservable.getValue();\r\n var isFocusIn = picksDom.getIsFocusIn();\r\n origToggleFocusStyling(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 picksDom.setIsFocusIn(isFocusIn);\r\n \r\n addStyling(picksDom.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 picksDom.setIsFocusIn(isFocusIn);\r\n \r\n addStyling(picksDom.picksElement, css.picks_focus_valid) \r\n } \r\n }\r\n }\r\n }\r\n\r\n var getWasValidated = () => {\r\n var wasValidatedElement = closestByClassName(staticDom.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 = validationApiPluginData?.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(staticDom.containerElement);\r\n updateValidity( \r\n picksDom.picksElement,\r\n validMessages, invalidMessages,\r\n value);\r\n picksDom.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 appearanceAspect.updateAppearance = composeSync(\r\n appearanceAspect.updateAppearance, \r\n updateSize, \r\n validationObservable.call, getManualValidationObservable.call);\r\n\r\n return {\r\n buildApi(api){\r\n api.updateSize = updateSize;\r\n api.updateValidity = ()=> getManualValidationObservable.call();\r\n api.updateWasValidated = ()=>wasUpdatedObservable.call();\r\n },\r\n dispose(){\r\n wasUpdatedObservable.detachAll();\r\n validationObservable.detachAll();\r\n getManualValidationObservable.detachAll();\r\n }\r\n }\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","export function HiddenOptionPlugin(pluginData){\r\n let {configuration, optionsAspect, options, choiceAspect, \r\n choices, choicesGetNextAspect, choicesEnumerableAspect, \r\n choiceFactoryAspect, choicesElementAspect,\r\n filterListAspect, multiSelectInputAspect} = pluginData;\r\n\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 choicesGetNextAspect.getNext = (c) => getNextNonHidden(c);\r\n\r\n choicesEnumerableAspect.forEach = (f) => {\r\n let choice = choicesGetNextAspect.getHead();\r\n while(choice){\r\n if (!choice.isOptionHidden)\r\n f(choice);\r\n choice = choicesGetNextAspect.getNext(choice);\r\n }\r\n } \r\n\r\n var origAddFilterFacade = filterListAspect.addFilterFacade;\r\n filterListAspect.addFilterFacade = (choice) => {\r\n if ( !choice.isOptionHidden ) {\r\n origAddFilterFacade(choice);\r\n }\r\n }\r\n \r\n var origInsertFilterFacade = filterListAspect.insertFilterFacade;\r\n filterListAspect.insertFilterFacade = (choice) => {\r\n if ( !choice.isOptionHidden ){\r\n origInsertFilterFacade(choice);\r\n }\r\n }\r\n\r\n let origInsertChoiceItem = choiceFactoryAspect.insertChoiceItem;\r\n let origPushChoiceItem = choiceFactoryAspect.pushChoiceItem;\r\n \r\n \r\n choiceFactoryAspect.insertChoiceItem=(choice, adoptChoiceElement, handleOnRemoveButton)=>{\r\n if (choice.isOptionHidden){ \r\n buildHiddenChoice(choice);\r\n }\r\n else{ \r\n origInsertChoiceItem(choice, adoptChoiceElement, handleOnRemoveButton);\r\n }\r\n }\r\n \r\n choiceFactoryAspect.pushChoiceItem=(choice, adoptChoiceElement, handleOnRemoveButton)=>{\r\n if (choice.isOptionHidden){ \r\n buildHiddenChoice(choice);\r\n }\r\n else{ \r\n origPushChoiceItem(choice, adoptChoiceElement, handleOnRemoveButton);\r\n }\r\n }\r\n\r\n var origIsSelectable = choiceAspect.isSelectable;\r\n choiceAspect.isSelectable = (choice) => origIsSelectable(choice) && !choice.isOptionHidden;\r\n \r\n var origСreateChoice = choiceAspect.createChoice;\r\n choiceAspect.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 return {\r\n buildApi(api){\r\n api.updateHidden = (c) => updateHidden(c, filterListAspect, choicesElementAspect, multiSelectInputAspect);\r\n api.updateOptionsHidden = () => updateOptionsHidden(optionsAspect, choices, getIsOptionHidden, filterListAspect, choicesElementAspect, multiSelectInputAspect);\r\n api.updateOptionHidden = (key) => updateOptionHidden(key, choices, getIsOptionHidden, filterListAspect, choicesElementAspect, multiSelectInputAspect);\r\n }\r\n }\r\n}\r\n\r\nfunction updateHidden(choice, filterListAspect, choicesElementAspect, multiSelectInputAspect) {\r\n if (choice.isOptionHidden) {\r\n filterListAspect.remove(choice);\r\n choice.remove(); \r\n buildHiddenChoice(choice);\r\n } else {\r\n let nextChoice = getNextNonHidden(choice);\r\n filterListAspect.add(choice, nextChoice);\r\n choicesElementAspect.buildChoiceElement(choice,\r\n (c,e)=>multiSelectInputAspect.adoptChoiceElement(c,e),\r\n (s)=>multiSelectInputAspect.handleOnRemoveButton(s)\r\n );\r\n choice.choiceElementAttach(nextChoice?.choiceElement);\r\n }\r\n}\r\n\r\nfunction 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\nfunction updateOptionHidden(key, choices, getIsOptionHidden, filterListAspect, choicesElementAspect, multiSelectInputAspect){\r\n let choice = choices.get(key);\r\n updateHiddenChoice(choice, getIsOptionHidden, filterListAspect, choicesElementAspect, multiSelectInputAspect)\r\n}\r\n\r\nfunction updateOptionsHidden(optionsAspect, choices, getIsOptionHidden, filterListAspect, choicesElementAspect, multiSelectInputAspect){\r\n let options = optionsAspect.getOptions();\r\n for(let i = 0; i{\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.plugOnConfiguration = (configurationPluginData) =>{\r\n let {configuration} = configurationPluginData;\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, staticManager, picks, picksDom, filterDom, staticDom, updateDataAspect,\r\n picksAspect, inputAspect, resetFilterListAspect, filterListAspect} = pluginData;\r\n let {placeholder, css} = configuration;\r\n let {picksElement} = picksDom;\r\n let filterInputElement = filterDom.filterInputElement;\r\n if (!placeholder){\r\n placeholder = getDataGuardedWithPrefix(staticDom.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 let isEmpty = () => picks.isEmpty() && filterDom.isEmpty()\r\n\r\n function updatePlacehodlerVisibility(){\r\n showPlacehodler(isEmpty());\r\n };\r\n function updateEmptyInputWidth(){\r\n setEmptyInputWidth(isEmpty())\r\n };\r\n \r\n let origDisable = picksDom.disable;\r\n picksDom.disable = (isComponentDisabled)=>{\r\n setDisabled(isComponentDisabled);\r\n origDisable(isComponentDisabled);\r\n };\r\n\r\n staticManager.appendToContainer = composeSync(staticManager.appendToContainer, updateEmptyInputWidth);\r\n\r\n filterListAspect.processEmptyInput = composeSync(updateEmptyInputWidth, filterListAspect.processEmptyInput);\r\n\r\n resetFilterListAspect.forceResetFilter = composeSync(resetFilterListAspect.forceResetFilter, updatePlacehodlerVisibility);\r\n \r\n let origInput = inputAspect.input;\r\n\r\n inputAspect.input = (filterInputValue, resetLength, eventLoopFlag_set, aspect_showChoices, aspect_hideChoices) =>{\r\n updatePlacehodlerVisibility();\r\n origInput(filterInputValue, resetLength, eventLoopFlag_set, aspect_showChoices, aspect_hideChoices);\r\n }\r\n\r\n let origCreatePick = picksAspect.createPick;\r\n picksAspect.createPick = (choice, handleOnRemoveButton)=>{ \r\n let removePick = origCreatePick(choice, handleOnRemoveButton);\r\n if (picks.getCount()==1) \r\n updatePlacehodlerVisibility()\r\n return ()=>\r\n { \r\n removePick();\r\n if (picks.getCount()==0) \r\n updatePlacehodlerVisibility()\r\n }\r\n };\r\n\r\n updateDataAspect.updateData = composeSync(updateDataAspect.updateData, updatePlacehodlerVisibility);\r\n \r\n}","import {EventBinder} from '../ToolsDom';\r\nimport {addStyling, toggleStyling} from '../ToolsStyling';\r\n\r\nexport function JQueryMethodsPlugin(pluginData){\r\n let {staticDom, choicesDom, filterDom, picks} = pluginData;\r\n return {\r\n buildApi(api){\r\n api.getContainer = () => staticDom.containerElement;\r\n api.getChoices = () => choicesDom.choicesElement;\r\n api.getFilterInput = () => filterDom.filterInputElement;\r\n api.getPicks = () => picksDom.picksElement;\r\n \r\n api.picksCount = () => picks.getCount();\r\n //api.staticContent = popupAspect; // depricated, alternative accept to popupAspect.setChoicesVisible\r\n\r\n pluginData.jQueryMethodsPluginData = {EventBinder, addStyling, toggleStyling}\r\n }\r\n }\r\n}","export function OptionsApiPlugin(pluginData){\r\n let {choiceFactoryAspect, manageableResetFilterListAspect, choices, choiceAspect, \r\n optionPropertiesAspect,\r\n optionsAspect, multiSelectInputAspect} = pluginData;\r\n return {\r\n buildApi(api){\r\n\r\n api.setOptionSelected = (key, value) => {\r\n let choice = choices.get(key);\r\n choiceAspect.setOptionSelected(choice, value);\r\n }\r\n \r\n api.updateOptionSelected = (key) => {\r\n let choice = choices.get(key); // TODO: generalize index as key\r\n let newIsSelected = optionPropertiesAspect.getSelected(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 api.updateOptionDisabled = (key)=>{\r\n let choice = choices.get(key); // TODO: generalize index as key \r\n let newIsDisabled = optionPropertiesAspect.getDisabled(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 api.updateOptionAdded = (key)=>{ // TODO: generalize index as key \r\n let options = optionsAspect.getOptions();\r\n let option = options[key];\r\n let choice = choiceAspect.createChoice(option);\r\n choices.insert(key, choice);\r\n choiceFactoryAspect.insertChoiceItem(\r\n choice,\r\n (c,e) => multiSelectInputAspect.adoptChoiceElement(c,e),\r\n (s) => multiSelectInputAspect.handleOnRemoveButton(s)\r\n )\r\n }\r\n \r\n api.updateOptionRemoved = (key)=>{ // TODO: generalize index as key \r\n multiSelectInputAspect.hideChoices(); // always hide 1st, then reset filter\r\n manageableResetFilterListAspect.resetFilter();\r\n \r\n var choice = choices.remove(key);\r\n choice.remove?.();\r\n choice.dispose?.();\r\n }\r\n }\r\n }\r\n}","export function FormRestoreOnBackwardPlugin(pluginData){\r\n let {staticDom, environment, loadAspect} = pluginData;\r\n let window = environment.window;\r\n return {\r\n buildApi(api){\r\n if (!api.updateOptionsSelected)\r\n throw new Error(\"BsMultisilect: FormRestoreOnBackwardPlugin requires UpdateOptionsSelectedApiPlugin defined first\");\r\n let origLoad = loadAspect.load;\r\n loadAspect.load = ()=>{\r\n origLoad();\r\n // support browser's \"step backward\" and form's values restore\r\n if (staticDom.selectElement && window.document.readyState !=\"complete\"){\r\n window.setTimeout(function(){api.updateOptionsSelected()});\r\n }\r\n }\r\n }\r\n }\r\n}","import {closestByTagName, findDirectChildByTagName, closestByClassName} from '../ToolsDom';\r\nimport {composeSync} from '../ToolsJs';\r\n\r\nexport function SelectElementPlugin(){\r\n}\r\n\r\nSelectElementPlugin.staticDomDefaults = (aspects)=>{\r\n let {configuration, staticDomFactory, createElementAspect, optionPropertiesAspect,\r\n componentAspect, onChangeAspect, triggerAspect, optionsAspect, disposeAspect} = aspects;\r\n let {create: origCreate} = staticDomFactory;\r\n staticDomFactory.create = () => {\r\n let {choicesDom, createStaticDom: origCreateStaticDom} = origCreate();\r\n let {choicesElement} = choicesDom;\r\n return { \r\n choicesDom,\r\n createStaticDom(element, containerClass){\r\n let selectElement = null;\r\n let containerElement = null;\r\n let picksElement = null;\r\n if (element.tagName == 'SELECT') {\r\n selectElement = element;\r\n if (containerClass){\r\n containerElement = closestByClassName(selectElement, containerClass)\r\n if (containerElement)\r\n picksElement = findDirectChildByTagName(containerElement, 'UL');\r\n }\r\n } else if (element.tagName == 'DIV') {\r\n selectElement = findDirectChildByTagName(element, 'SELECT');\r\n if (selectElement) {\r\n if (containerClass){\r\n containerElement = closestByClassName(element, containerClass);\r\n if (containerElement)\r\n picksElement = findDirectChildByTagName(containerElement, 'UL');\r\n }\r\n } else {\r\n return origCreateStaticDom(element, containerClass);\r\n } \r\n }\r\n\r\n let disposableContainerElement = false;\r\n if (!containerElement) {\r\n containerElement = createElementAspect.createElement('DIV');\r\n containerElement.classList.add(containerClass);\r\n disposableContainerElement= true;\r\n }\r\n \r\n let disposablePicksElement = false;\r\n if (!picksElement) {\r\n picksElement = createElementAspect.createElement('UL');\r\n disposablePicksElement = true; \r\n }\r\n \r\n if (selectElement){\r\n var backupDisplay = selectElement.style.display;\r\n selectElement.style.display = 'none';\r\n\r\n var backupedRequired = selectElement.required;\r\n aspects.selectElementPluginData = {required: backupedRequired};\r\n if(selectElement.required===true)\r\n selectElement.required = false;\r\n\r\n let {getDisabled, getIsOptionDisabled} = configuration;\r\n\r\n if(!getDisabled) {\r\n var fieldsetElement = closestByTagName(selectElement, 'FIELDSET');\r\n if (fieldsetElement) {\r\n componentAspect.getDisabled = () => selectElement.disabled || fieldsetElement.disabled;\r\n } else {\r\n componentAspect.getDisabled = () => selectElement.disabled;\r\n }\r\n }\r\n onChangeAspect.onChange = () => composeSync(() => onChangeAspect.trigger('change'), triggerAspect.onChange) \r\n optionsAspect.getOptions = () => selectElement.options;\r\n if (!getIsOptionDisabled)\r\n optionPropertiesAspect.getDisabled = option => option.disabled;\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 disposeAspect.dispose = composeSync(disposeAspect.dispose, () => {\r\n selectElement.required = backupedRequired;\r\n selectElement.style.display = backupDisplay;\r\n });\r\n }\r\n\r\n return {\r\n staticDom: {\r\n initialElement:element,\r\n containerElement,\r\n picksElement,\r\n disposablePicksElement,\r\n selectElement\r\n }, \r\n staticManager :{\r\n appendToContainer(){ \r\n if (disposableContainerElement){\r\n selectElement.parentNode.insertBefore(containerElement, selectElement.nextSibling) \r\n containerElement.appendChild(choicesElement)\r\n } else {\r\n selectElement.parentNode.insertBefore(choicesElement, selectElement.nextSibling)\r\n }\r\n if (disposablePicksElement)\r\n containerElement.appendChild(picksElement)\r\n },\r\n dispose(){ \r\n choicesElement.parentNode.removeChild(choicesElement);\r\n if (disposableContainerElement)\r\n selectElement.parentNode.removeChild(containerElement) \r\n if (disposablePicksElement)\r\n containerElement.removeChild(picksElement)\r\n }\r\n }};\r\n }\r\n }\r\n }\r\n}","export function SelectAllApiPlugin(pluginData){\r\n let {multiSelectInputAspect, choices, picks, choiceAspect, manageableResetFilterListAspect} = pluginData;\r\n return {\r\n buildApi(api){\r\n api.selectAll= ()=>{\r\n multiSelectInputAspect.hideChoices(); // always hide 1st\r\n choices.forLoop(\r\n choice => {\r\n if (choiceAspect.isSelectable(choice))\r\n choiceAspect.setOptionSelected(choice, true)\r\n }\r\n ); \r\n manageableResetFilterListAspect.resetFilter();\r\n }\r\n \r\n api.deselectAll= ()=>{\r\n multiSelectInputAspect.hideChoices(); // always hide 1st\r\n picks.removeAll();\r\n manageableResetFilterListAspect.resetFilter();\r\n }\r\n }\r\n }\r\n}","export function UpdateOptionsSelectedApiPlugin(pluginData){\r\n let {choices, optionPropertiesAspect} = pluginData;\r\n return {\r\n buildApi(api){\r\n // used in FormRestoreOnBackwardPlugin\r\n api.updateOptionsSelected = () => {\r\n choices.forLoop(\r\n choice => {\r\n let newIsSelected = optionPropertiesAspect.getSelected(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 }\r\n }\r\n}","export function DisabledOptionApiPlugin(pluginData){\r\n let {choices, optionPropertiesAspect} = pluginData;\r\n return {\r\n buildApi(api){\r\n api.updateOptionsDisabled = () => updateOptionsDisabled(choices, optionPropertiesAspect)\r\n }\r\n };\r\n}\r\n\r\nfunction updateOptionsDisabled(choices, optionPropertiesAspect){\r\n choices.forLoop(\r\n choice => {\r\n let newIsDisabled = optionPropertiesAspect.getDisabled(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}","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} 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\nimport {FormRestoreOnBackwardPlugin} from './plugins/FormRestoreOnBackwardPlugin';\r\nimport {SelectElementPlugin} from './plugins/SelectElementPlugin';\r\nimport {SelectAllApiPlugin} from './plugins/SelectAllApiPlugin';\r\nimport {UpdateOptionsSelectedApiPlugin} from './plugins/UpdateOptionsSelectedApiPlugin'\r\nimport {DisabledOptionApiPlugin} from './plugins/DisabledOptionApiPlugin'\r\n\r\nimport {adjustLegacySettings} from './BsMultiSelectDepricatedParameters'\r\n\r\nimport {createCss} from './ToolsStyling';\r\nimport {extendIfUndefined, composeSync} from './ToolsJs';\r\n\r\nimport {EventBinder} from './ToolsDom';\r\nimport {addStyling, toggleStyling} from './ToolsStyling';\r\n\r\n(\r\n (window, $, Popper) => {\r\n const defaults = {containerClass: \"dashboardcode-bsmultiselect\", css: css}\r\n let defaultPlugins = [CssPatchPlugin, SelectElementPlugin, LabelPlugin, HiddenOptionPlugin, ValidationApiPlugin, \r\n BsAppearancePlugin, FormResetPlugin, RtlPlugin, PlaceholderPlugin , OptionsApiPlugin, SelectAllApiPlugin,\r\n JQueryMethodsPlugin, UpdateOptionsSelectedApiPlugin, FormRestoreOnBackwardPlugin, DisabledOptionApiPlugin];\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 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 prototypable.tools = {EventBinder, addStyling, toggleStyling}\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","lMethodName","prototypableForInstance","length","get","output","push","noConflict","PluginManager","plugins","pluginData","instances","disposes","buildApi","api","dispose","initiateDefaults","constructors","defaults","mergeDefaults","configuration","settings","plugOnConfiguration","configurationPluginData","staticDomDefaults","isBoolean","value","isString","String","extendIfUndefined","destination","source","property","undefined","shallowClearClone","v","sources","forEach","s","hasOwnProperty","forEachRecursion","f","prev","List","tail","count","add","next","node","remove","getTail","getCount","isEmpty","reset","ListFacade","getPrev","setPrev","getNext","setNext","head","getHead","DoublyLinkedCollection","list","key","splice","getLength","forLoop","composeSync","functions","defCall","tmp","ObservableValue","getValue","setValue","newValue","attach","detachAll","ObservableLambda","func","call","findDirectChildByTagName","element","tagName","children","closestByTagName","closest","closestByClassName","className","classList","contains","closestByAttribute","attributeName","attribute","getAttribute","containsAndSelf","otherNode","getDataGuardedWithPrefix","prefix","name","tmp1","tmp2","predicate","Element","parentNode","siblingsAsArray","l","getIsRtl","isRtl","EventBinder","bind","eventName","handler","addEventListener","unbind","removeEventListener","AttributeBackup","set","currentAtribute","setAttribute","restore","removeAttribute","EventLoopFlag","window","flag","setTimeout","addStyling","styling","backupStyling","classes","styles","style","removeStyling","toggleStyling","isOn","extendClasses","out","param","actionStr","actionArr","isRemoveEmptyClasses","c","split","Array","extend","actionObj","success","Object","Styling","a","o","freeze","createStyling","isReplace","params","extendInt","p","concat","createCss","stylings1","stylings2","param1","param2","extendCss","PickDomFactory","css","componentAspect","optionPropertiesAspect","create","pickElement","choice","eventBinder","innerHTML","pickContentElement","querySelector","pickButtonElement","pickDom","pickDomManager","init","pickContent","pickButton","disableToggle","pickContent_disabled","updateData","textContent","getText","option","updateDisabled","isOptionDisabled","updateRemoveDisabled","disabled","getDisabled","ChoiceDomFactory","choiceElement","toggle","choiceContentElement","choiceCheckBoxElement","choiceLabelElement","choiceDom","choiceDomManager","choiceContent","choiceCheckBox","choiceLabel","choiceSelectedToggle","choice_selected","choiceDisabledToggle","choice_disabled","choiceHoverToggle","choice_hover","choiceCheckBoxDisabledToggle","choiceCheckBox_disabled","choiceLabelDisabledToggle","choiceLabel_disabled","updateSelected","isOptionSelected","checked","updateHoverIn","isHoverIn","CreateElementAspect","createElement","StaticDomFactory","choicesDomFactory","createElementAspect","choicesDom","createStaticDom","containerClass","showError","message","backgroundColor","color","containerElement","picksElement","removableContainerClass","disposablePicksElement","staticDom","initialElement","staticManager","appendToContainer","appendChild","choicesElement","removeChild","PicksDom","pickFilterElement","picks","pickFilter","disableToggleStyling","picks_disabled","focusToggleStyling","picks_focus","isFocusIn","createPickElement","pick","insertBefore","detach","disable","isComponentDisabled","toggleFocusStyling","getIsFocusIn","setIsFocusIn","newIsFocusIn","FilterDom","filterInputElement","filterInput","setEmpty","setFocus","focus","setFocusIfNotTarget","target","ChoicesDomFactory","choices","display","createChoiceElement","setVisible","isVisible","PopupAspect","Popper","popper","popperConfiguration","placement","modifiers","preventOverflow","enabled","hide","flip","isChoicesVisible","setChoicesVisible","visible","updatePopupLocation","update","destroy","TriggerAspect","trigger","OnChangeAspect","triggerAspect","onChange","ComponentAspect","OptionsAspect","getOptions","OptionPropertiesAspect","getSelected","setSelected","text","selected","ChoicesGetNextAspect","ChoicesEnumerableAspect","choicesGetNextAspect","FilterListAspect","choicesEnumerableAspect","filterListFacade","filteredPrev","filteredNext","composeFilterPredicate","searchText","indexOf","addFilterFacade","insertFilterFacade","choiceNonhiddenBefore","navigate","down","processEmptyInput","setFilter","getFilterIn","ChoicesElementAspect","filterDom","choiceDomFactory","onChangeAspect","optionToggleAspect","picksAspect","buildChoiceElement","adoptChoiceElement","handleOnRemoveButton","choiceElementAttach","choiceHanlders","pickTools","updateSelectedTrue","updateSelectedFalse","removePick","createPick","unbindChoiceElement","isFilteredIn","setHoverIn","ChoiceFactoryAspect","choicesElementAspect","pushChoiceItem","insertChoiceItem","nextChoice","ChoicesAspect","document","choiceAspect","optionsAspect","choiceFactoryAspect","updateDataImpl","fillChoices","createChoice","readyState","domContentLoadedHandler","UpdateDataAspect","multiSelectInputAspect","manageableResetFilterListAspect","choicesAspect","hideChoices","resetFilter","clear","OptionToggleAspect","setOptionSelected","ChoiceAspect","booleanValue","isSelectable","confirmed","trim","isFilterIn","itemPrev","itemNext","isOptionHidden","Choices","collection","listFacade_reset","listFacade_remove","insert","ChoicesHover","hoveredChoice","resetHoveredChoice","getHoveredChoice","hoverIn","Picks","addPick","removeFromList","removePicksTail","disableRemoveAll","removeAll","PicksAspect","picksDom","pickDomFactory","setSelectedFalse","pickHandlers","choiceUpdateDisabledBackup","InputAspect","filterListAspect","popupAspect","choicesHover","input","filterInputValue","resetLength","eventLoopFlag_set","aspect_showChoices","aspect_hideChoices","fullMatchChoice","visibleCount","panelIsVisble","ResetFilterListAspect","forceResetFilter","ManageableResetFilterListAspect","resetFilterListAspect","FocusInAspect","setFocusIn","MultiSelectInputAspect","isChoiceEmpty","onClick","resetFocus","alignToFilterInputItemLocation","eventLoopFlag","skipFocusout","getSkipFocusout","resetSkipFocusout","setSkipFocusout","skipoutMousedown","documentMouseup","event","preventDefaultClickEvent","componentDisabledEventBinder","skipoutAndResetMousedown","showChoices","clickToShowChoices","resetMouseCandidateChoice","processUncheck","uncheckOption","mouseCandidateEventBinder","mouseOverToHoveredAndReset","onChoiceElementMouseover","onChoiceElementMouseleave","overAndLeaveEventBinder","onFocusOut","action","FilterAspect","onFocusIn","onKeyDownArrowUp","onKeyDownArrowDown","onTabForEmpty","onBackspace","onTabToCompleate","onEnterToCompleate","onKeyUpEsc","stopEscKeyDownPropogation","onInput","onfilterInputKeyDown","keyCode","which","empty","preventDefault","stopPropagation","onFilterInputKeyUp","onFilterInputInput","width","DisabledComponentAspect","updateDisabledComponent","newIsComponentDisabled","AppearanceAspect","disabledComponentAspect","updateAppearance","LoadAspect","appearanceAspect","load","BsMultiSelect","environment","onInit","getIsOptionDisabled","disposeAspect","aspects","staticDomFactory","focusInAspect","inputAspect","loadAspect","hoveredToSelected","wasToggled","keyDownArrow","filterAspect","updateDataAspect","pluginManager","component","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","getLabelElementAspect","labelPluginData","createInputId","selectElement","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","selectElementPluginData","getIsValueMissing","required","optionsArray","validationApiObservable","validationApiPluginData","validationApi","isValid","BsAppearancePlugin","getValidity","getSize","useCssPatch","origGetLabelElementAspect","formGroup","composeGetValidity","composeGetSize","updateSize","updateSizeForAdapter","updateSizeJsForAdapter","origToggleFocusStyling","validationObservable","getWasValidated","wasValidatedElement","wasUpdatedObservable","getManualValidationObservable","getMessagesElements","validMessages","invalidMessages","updateValidity","updateWasValidated","map","size","updateSizeJs","picksLgStyling","picksSmStyling","picksDefStyling","siblings","filter","inputGroupElement","HiddenOptionPlugin","getIsOptionHidden","hidden","getNextNonHidden","origAddFilterFacade","origInsertFilterFacade","origInsertChoiceItem","origPushChoiceItem","buildHiddenChoice","origIsSelectable","origСreateChoice","updateHidden","updateOptionsHidden","updateOptionHidden","updateHiddenChoice","newIsOptionHidden","CssPatchPlugin","PlaceholderPlugin","placeholder","setEmptyInputWidth","emptyToggleStyling","showPlacehodler","setDisabled","updatePlacehodlerVisibility","updateEmptyInputWidth","origDisable","origInput","origCreatePick","JQueryMethodsPlugin","getContainer","getChoices","getFilterInput","getPicks","picksCount","jQueryMethodsPluginData","OptionsApiPlugin","updateOptionSelected","newIsSelected","updateOptionDisabled","newIsDisabled","updateOptionAdded","updateOptionRemoved","FormRestoreOnBackwardPlugin","updateOptionsSelected","origLoad","SelectElementPlugin","origCreate","origCreateStaticDom","disposableContainerElement","backupDisplay","backupedRequired","fieldsetElement","nextSibling","SelectAllApiPlugin","selectAll","deselectAll","UpdateOptionsSelectedApiPlugin","DisabledOptionApiPlugin","updateOptionsDisabled","transformStyles","old","opt","transformClasses","adjustLegacySettings","selectedPanelFocusBorderColor","selectedPanelFocusBoxShadow","console","log","inputColor","useCss","getIsValid","getIsInValid","defaultPlugins","createBsMultiSelect","removeInstanceData","buildConfiguration","multiSelect","tools"],"mappings":"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"}