{"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/ComponentPropertiesAspect.js","../../js/src/OptionsAspect.js","../../js/src/ChoicesEnumerableAspect.js","../../js/src/FilterManagerAspect.js","../../js/src/BuildChoiceAspect.js","../../js/src/FillChoicesAspect.js","../../js/src/UpdateDataAspect.js","../../js/src/CreateWrapAspect.js","../../js/src/NavigateAspect.js","../../js/src/Wraps.js","../../js/src/BuildPickAspect.js","../../js/src/InputAspect.js","../../js/src/ResetFilterListAspect.js","../../js/src/MultiSelectInlineLayout.js","../../js/src/AppearanceAspect.js","../../js/src/CountableChoicesListInsertAspect.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/SelectedOptionPlugin.js","../../js/src/plugins/DisabledOptionPlugin.js","../../js/src/plugins/PicksApiPlugin.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 let goOn = f(i.value); \r\n if (!(goOn===false))\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 DoublyLinkedList(getPrev, setPrev, getNext, setNext){\r\n var head = null, tail = null;\r\n var count = 0;\r\n return {\r\n add(e, next){\r\n if (!tail){\r\n head = tail = e;\r\n setPrev(e, null);\r\n setNext(e, null);\r\n }\r\n else {\r\n if (!next){\r\n setPrev(e, tail);\r\n setNext(e, null);\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(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 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 return {\r\n push(e){\r\n list.push(e);\r\n if (!tail){\r\n head = tail = e;\r\n setPrev(e, null);\r\n setNext(e, null);\r\n }\r\n else {\r\n setPrev(e, tail);\r\n setNext(e, null);\r\n setNext(tail, e);\r\n tail = e;\r\n }\r\n },\r\n add(e, key){\r\n list.splice(key, 0, e);\r\n if (!tail){\r\n head = tail = e;\r\n setPrev(e, null);\r\n setNext(e, null);\r\n }\r\n else {\r\n let next = list[key];\r\n if (!next) {\r\n setPrev(e, tail);\r\n setNext(e, null);\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 },\r\n get: (key) => list[key],\r\n 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 return e;\r\n }, \r\n forLoop(f){\r\n for(let i=0; i list[key],\r\n getNext: (key, predicate) => {\r\n let count = list.length;\r\n let start = key+1;\r\n if (key 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}\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, componentPropertiesAspect, optionPropertiesAspect){\r\n return { \r\n create(pickElement, wrap, 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 let disableToggle = toggleStyling(pickContentElement, css.pickContent_disabled);\r\n\r\n function updateData(){\r\n pickContentElement.textContent = optionPropertiesAspect.getText(wrap.option); \r\n }\r\n function updateDisabled(){\r\n disableToggle(wrap.isOptionDisabled)\r\n }\r\n function updateRemoveDisabled(){\r\n pickButtonElement.disabled = componentPropertiesAspect.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, wrap, 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(wrap.option);\r\n }\r\n function updateSelected(){ \r\n choiceSelectedToggle(wrap.isOptionSelected);\r\n choiceCheckBoxElement.checked = wrap.isOptionSelected;\r\n }\r\n function updateDisabled(){\r\n choiceDisabledToggle(wrap.isOptionDisabled)\r\n choiceCheckBoxDisabledToggle(wrap.isOptionDisabled)\r\n choiceLabelDisabledToggle(wrap.isOptionDisabled)\r\n \r\n // do not desable checkBox if option is selected! there should be possibility to unselect \"disabled\"\r\n choiceCheckBoxElement.disabled = wrap.isOptionDisabled && !wrap.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(wrap.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","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(css){\r\n let choicesDom = choicesDomFactory.create(css);\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}\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 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: (beforeElement) => picksElement.insertBefore(pickElement, beforeElement??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}\r\n","import {addStyling} from './ToolsStyling';\r\nimport {EventBinder} from './ToolsDom';\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 var eventBinder = EventBinder();\r\n return {\r\n filterInputElement,\r\n isEmpty: () => filterInputElement.value ? false:true,\r\n setEmpty(){\r\n filterInputElement.value ='';\r\n },\r\n getValue(){\r\n return filterInputElement.value;\r\n },\r\n setFocus(){\r\n filterInputElement.focus();\r\n },\r\n setWidth(text){\r\n filterInputElement.style.width = text.length*1.3 + 2 + \"ch\"\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 onInput(onFilterInputInput){\r\n eventBinder.bind(filterInputElement,'input', onFilterInputInput);\r\n },\r\n onFocusIn(onFocusIn){\r\n eventBinder.bind(filterInputElement,'focusin', onFocusIn);\r\n },\r\n onFocusOut(onFocusOut){\r\n eventBinder.bind(filterInputElement,'focusout', onFocusOut);\r\n },\r\n onKeyDown(onfilterInputKeyDown){\r\n eventBinder.bind(filterInputElement,'keydown', onfilterInputKeyDown); \r\n },\r\n onKeyUp(onFilterInputKeyUp){\r\n eventBinder.bind(filterInputElement,'keyup', onFilterInputKeyUp);\r\n },\r\n dispose(){\r\n eventBinder.unbind();\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) {\r\n return {\r\n create(css){\r\n var choicesElement = createElementAspect.createElement('UL'); \r\n choicesElement.style.display = 'none';\r\n addStyling(choicesElement, css.choices);\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: (beforeElement) => choicesElement.insertBefore(choiceElement, beforeElement),\r\n detach: () => choicesElement.removeChild(choiceElement)\r\n };\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 ComponentPropertiesAspect(getDisabled) {\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){\r\n if (!getText){\r\n getText = (option) => option.text;\r\n }\r\n return {\r\n getText\r\n }\r\n}\r\n","export function ChoicesEnumerableAspect(countableChoicesList, getNext){\r\n return {\r\n forEach(f){\r\n let wrap = countableChoicesList.getHead(); \r\n while(wrap){\r\n f(wrap);\r\n wrap = getNext(wrap);\r\n }\r\n }\r\n }\r\n}","export function NavigateManager(\r\n list, getPrev, getNext\r\n){\r\n return {\r\n navigate(down, wrap /* hoveredChoice */){ \r\n if (down) {\r\n return wrap?getNext(wrap): list.getHead();\r\n } else {\r\n return wrap?getPrev(wrap): list.getTail();\r\n }\r\n },\r\n getCount(){\r\n return list.getCount()\r\n },\r\n getHead(){\r\n return list.getHead()\r\n }\r\n }\r\n}\r\n\r\nexport function FilterPredicateAspect(){\r\n return {\r\n filterPredicate: (wrap, text) => \r\n wrap.choice.searchText.indexOf(text) >= 0 \r\n }\r\n}\r\n\r\nexport function FilterManagerAspect(\r\n emptyNavigateManager,\r\n filteredNavigateManager,\r\n filteredChoicesList, \r\n choicesEnumerableAspect,\r\n filterPredicateAspect\r\n ) {\r\n let showEmptyFilter=true;\r\n let filterText = \"\";\r\n return {\r\n getNavigateManager(){\r\n return (showEmptyFilter)?emptyNavigateManager:filteredNavigateManager;\r\n },\r\n processEmptyInput(){ // redefined in PlaceholderPulgin\r\n showEmptyFilter =true;\r\n filterText =\"\";\r\n choicesEnumerableAspect.forEach( (wrap)=>{\r\n wrap.choice.setVisible(true);\r\n });\r\n },\r\n getFilter(){\r\n return filterText;\r\n },\r\n setFilter(text){ \r\n showEmptyFilter =false;\r\n filterText = text;\r\n filteredChoicesList.reset();\r\n choicesEnumerableAspect.forEach( (wrap)=>{\r\n wrap.choice.filteredPrev = wrap.choice.filteredNext = null;\r\n var v = filterPredicateAspect.filterPredicate(wrap, text)\r\n if (v)\r\n filteredChoicesList.add(wrap);\r\n wrap.choice.setVisible(v);\r\n });\r\n }\r\n }\r\n}\r\n","export function BuildAndAttachChoiceAspect(\r\n buildChoiceAspect,\r\n ){\r\n return {\r\n buildAndAttachChoice(\r\n wrap,\r\n getNextElement \r\n ){\r\n buildChoiceAspect.buildChoice(wrap);\r\n wrap.choice.choiceElementAttach(getNextElement?.());\r\n }\r\n }\r\n}\r\n\r\nexport function BuildChoiceAspect(\r\n choicesDom,\r\n choiceDomFactory,\r\n choiceClickAspect\r\n ) {\r\n return {\r\n buildChoice(wrap) {\r\n var {choiceElement, setVisible, attach, detach} = choicesDom.createChoiceElement();\r\n wrap.choice.choiceElement = choiceElement;\r\n wrap.choice.choiceElementAttach = attach;\r\n wrap.choice.isChoiceElementAttached = true;\r\n let {choiceDomManager} = choiceDomFactory.create(choiceElement, wrap,() => choiceClickAspect.choiceClick(wrap));\r\n let choiceDomManagerHandlers = choiceDomManager.init();\r\n wrap.choice.choiceDomManagerHandlers = choiceDomManagerHandlers;\r\n \r\n wrap.choice.remove = () => {\r\n detach();\r\n };\r\n \r\n wrap.choice.isFilteredIn = true;\r\n \r\n wrap.choice.setHoverIn = (v) => {\r\n wrap.choice.isHoverIn =v ;\r\n choiceDomManagerHandlers.updateHoverIn();\r\n }\r\n \r\n wrap.choice.setVisible = (v) => {\r\n wrap.choice.isFilteredIn = v;\r\n setVisible(wrap.choice.isFilteredIn)\r\n }\r\n \r\n wrap.choice.dispose = () => {\r\n wrap.choice.choiceDomManagerHandlers = null;\r\n choiceDomManager.dispose();\r\n \r\n wrap.choice.choiceElement = null;\r\n wrap.choice.choiceElementAttach = null;\r\n wrap.choice.isChoiceElementAttached = false;\r\n wrap.choice.remove = null; \r\n \r\n // not real data manipulation but internal state\r\n wrap.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 wrap.choice.setHoverIn = null;\r\n \r\n wrap.choice.dispose = null;\r\n }\r\n\r\n wrap.dispose = () => {\r\n wrap.choice.dispose();\r\n wrap.dispose = null;\r\n }\r\n }\r\n }\r\n}","\r\nexport function FillChoicesAspect(\r\n document, createWrapAspect, createChoiceBaseAspect, optionsAspect, wraps, buildAndAttachChoiceAspect\r\n ) { \r\n return {\r\n fillChoices(){\r\n var fillChoicesImpl = () => {\r\n let options = optionsAspect.getOptions();\r\n for(let i = 0; iwrap.pick.dispose());\r\n picksList.reset();\r\n fillChoicesAspect.fillChoices();\r\n }\r\n }\r\n}\r\n","import {composeSync} from './ToolsJs';\r\n\r\nexport function IsChoiceSelectableAspect(){ // TODO rename to IsSelectableByUserAspect ?\r\n return {\r\n isSelectable: (wrap)=>true \r\n }\r\n}\r\n\r\n// todo: remove?\r\nexport function ChoiceClickAspect(optionToggleAspect, filterDom){\r\n return {\r\n\r\n choiceClick: (wrap) => {\r\n //let pickHandlers = createPickHandlersAspect.createPickHandlers(wrap);\r\n //addPickAspect.addPick(wrap, pickHandlers);\r\n optionToggleAspect.toggle(wrap); // TODO: return to it?\r\n filterDom.setFocus();\r\n }\r\n }\r\n}\r\n\r\nexport function OptionToggleAspect(createPickHandlersAspect, addPickAspect /*, setOptionSelectedAspect*/){\r\n return {\r\n toggle: (wrap) => {\r\n let pickHandlers = createPickHandlersAspect.createPickHandlers(wrap);\r\n addPickAspect.addPick(wrap, pickHandlers);\r\n //return setOptionSelectedAspect.setOptionSelected(wrap, !wrap.isOptionSelected)\r\n }\r\n }\r\n}\r\n\r\nexport function AddPickAspect(){\r\n return {\r\n addPick(wrap, pickTools){\r\n pickTools.addPick();\r\n }\r\n }\r\n}\r\n\r\nexport function RemovePickAspect(){\r\n return {\r\n removePick(wrap){\r\n wrap.pick.dispose();\r\n }\r\n }\r\n}\r\n\r\nexport function CreatePickHandlersAspect(picksList, removePickAspect, buildPickAspect){\r\n return{\r\n createPickHandlers(wrap){\r\n let setSelectedFalse = () => removePickAspect.removePick(wrap)\r\n \r\n let pickTools = { \r\n addPick: null, \r\n removePick: null, \r\n removeOnButton: setSelectedFalse \r\n }\r\n \r\n pickTools.addPick = () => { \r\n buildPickAspect.buildPick(wrap, (event)=>pickTools.removeOnButton(event));\r\n let pick = wrap.pick;\r\n pick.pickElementAttach();\r\n let removeFromList = picksList.add(wrap);\r\n pick.setSelectedFalse = setSelectedFalse; \r\n pick.dispose = composeSync(\r\n removeFromList,\r\n ()=>{\r\n pick.setSelectedFalse=null;\r\n }, pick.dispose);\r\n pickTools.removePick = () => pick.dispose();\r\n };\r\n return pickTools;\r\n }\r\n }\r\n}\r\n\r\nexport function CreateChoiceBaseAspect(optionPropertiesAspect){\r\n return {\r\n createChoiceBase(option){\r\n return {\r\n \r\n //updateDisabled:null, \r\n //updateHidden: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 isFilteredIn: 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 isChoiceElementAttached: false,\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 }\r\n }\r\n}\r\n\r\nexport function CreateWrapAspect(){\r\n return {\r\n createWrap(option){\r\n return {\r\n option: option\r\n }\r\n }\r\n }\r\n}","export function HoveredChoiceAspect(){\r\n let hoveredChoice=null;\r\n return {\r\n getHoveredChoice: () => hoveredChoice,\r\n setHoveredChoice: (wrap) => {hoveredChoice = wrap},\r\n resetHoveredChoice() {\r\n if (hoveredChoice) {\r\n hoveredChoice.choice.setHoverIn(false)\r\n hoveredChoice = null;\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport function NavigateAspect(hoveredChoiceAspect, navigate){\r\n return {\r\n hoverIn(wrap){\r\n hoveredChoiceAspect.resetHoveredChoice(); \r\n hoveredChoiceAspect.setHoveredChoice(wrap);\r\n wrap.choice.setHoverIn(true);\r\n },\r\n navigate: (down) => navigate(down, hoveredChoiceAspect.getHoveredChoice()), \r\n }\r\n}","export function Wraps(wrapsCollection, \r\n listFacade_reset, listFacade_remove, listFacade_add) \r\n{\r\n return {\r\n push: (wrap) => push(wrap, wrapsCollection, listFacade_add),\r\n insert: (key, wrap) => insert(key, wrap, wrapsCollection, listFacade_add),\r\n remove: (key) => {\r\n var wrap = wrapsCollection.remove(key);\r\n listFacade_remove(wrap);\r\n return wrap;\r\n },\r\n clear: () => {\r\n wrapsCollection.reset();\r\n listFacade_reset();\r\n }, \r\n dispose: () => wrapsCollection.forLoop(wrap => wrap.dispose()) \r\n }\r\n}\r\n\r\nfunction push(wrap, wrapsCollection, listFacade_add){\r\n wrapsCollection.push(wrap);\r\n listFacade_add(wrap);\r\n}\r\n\r\nfunction insert(key, wrap, wrapsCollection, listFacade_add){\r\n if (key>=wrapsCollection.getCount()) {\r\n push(wrap, wrapsCollection, listFacade_add);\r\n }\r\n else {\r\n wrapsCollection.add(wrap, key);\r\n listFacade_add(wrap, key);\r\n }\r\n}","export function BuildPickAspect(\r\n picksDom, \r\n pickDomFactory\r\n ){\r\n return {\r\n buildPick(wrap, removeOnButton){\r\n let { pickElement, attach, detach } = picksDom.createPickElement(); \r\n let {pickDomManager} = pickDomFactory.create(pickElement, wrap, removeOnButton); \r\n let pickDomManagerHandlers = pickDomManager.init();\r\n\r\n let pick = {\r\n pickDomManagerHandlers,\r\n pickElementAttach: attach,\r\n dispose: () => { \r\n detach(); \r\n pickDomManager.dispose(); \r\n pickDomManagerHandlers = null;\r\n pick.pickElementAttach=null;\r\n pick.dispose=null; \r\n wrap.pick = null;\r\n }\r\n }\r\n wrap.pick = pick;\r\n }\r\n }\r\n}","export function InputAspect(\r\n filterDom,\r\n filterManagerAspect\r\n ){\r\n\r\n return {\r\n // overrided in SelectedOptionPlugin\r\n processInput(){\r\n let filterInputValue = filterDom.getValue();\r\n let text = filterInputValue.trim();\r\n var isEmpty=false;\r\n if (text == '')\r\n isEmpty=true;\r\n else\r\n {\r\n filterManagerAspect.setFilter(text.toLowerCase());\r\n }\r\n // improve it \r\n return {filterInputValue, isEmpty};\r\n }\r\n }\r\n}\r\n","export function ResetFilterListAspect(filterDom, filterManagerAspect){\r\n return {\r\n forceResetFilter(){ // over in PlaceholderPlugin\r\n filterDom.setEmpty();\r\n filterManagerAspect.processEmptyInput(); // over in PlaceholderPlugin\r\n }\r\n }\r\n}\r\n\r\nexport function ResetFilterAspect(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 {composeSync} from './ToolsJs';\r\nimport {EventBinder, EventLoopFlag, containsAndSelf} from './ToolsDom'\r\n\r\nexport function MultiSelectInlineLayout (\r\n aspects\r\n ) \r\n{\r\n let {environment,filterDom,picksDom,choicesDom, \r\n popupAspect, hoveredChoiceAspect, navigateAspect,filterManagerAspect,\r\n focusInAspect, optionToggleAspect,\r\n createPickHandlersAspect,\r\n inputAspect, picksList, buildChoiceAspect, \r\n setDisabledComponentAspect, resetLayoutAspect,\r\n addPickAspect\r\n } = aspects;\r\n\r\n let picksElement = picksDom.picksElement;\r\n let choicesElement = choicesDom.choicesElement;\r\n\r\n var window = environment.window;\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 filterDom.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 resetLayoutAspect.resetLayout();\r\n focusInAspect.setFocusIn(false);\r\n }\r\n }\r\n\r\n function showChoices() {\r\n if ( !popupAspect.isChoicesVisible() )\r\n {\r\n popupAspect.updatePopupLocation();\r\n eventLoopFlag.set();\r\n popupAspect.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 hideChoices() {\r\n resetMouseCandidateChoice();\r\n hoveredChoiceAspect.resetHoveredChoice();\r\n if (popupAspect.isChoicesVisible())\r\n {\r\n popupAspect.setChoicesVisible(false);\r\n \r\n choicesElement.removeEventListener(\"mousedown\", skipoutMousedown);\r\n document.removeEventListener(\"mouseup\", documentMouseup);\r\n }\r\n }\r\n\r\n var preventDefaultClickEvent = null;\r\n\r\n var componentDisabledEventBinder = EventBinder();\r\n\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 clickToShowChoices(event){\r\n filterDom.setFocusIfNotTarget(event.target);\r\n if (preventDefaultClickEvent != event) {\r\n if (popupAspect.isChoicesVisible()){\r\n hideChoices()\r\n } else {\r\n if (filterManagerAspect.getNavigateManager().getCount()>0)\r\n showChoices();\r\n }\r\n }\r\n preventDefaultClickEvent=null;\r\n }\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 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 // resetFilterAspect.resetFilter(); \r\n // });\r\n // }\r\n \r\n function handleOnRemoveButton(setSelectedFalse){ return (event) => {\r\n processUncheck(setSelectedFalse, event);\r\n resetLayoutAspect.resetLayout(); \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 = (wrap) => {\r\n if (!wrap.choice.isHoverIn)\r\n navigateAspect.hoverIn(wrap);\r\n resetMouseCandidateChoice();\r\n };\r\n \r\n function adoptChoiceElement(wrap){\r\n let choiceElement = wrap.choice.choiceElement;\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(wrap));\r\n mouseCandidateEventBinder.bind(choiceElement, 'mousedown', ()=>mouseOverToHoveredAndReset(wrap));\r\n }\r\n else\r\n {\r\n if (!wrap.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 navigateAspect.hoverIn(wrap);\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 hoveredChoiceAspect.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 \r\n filterDom.onFocusIn(()=>focusInAspect.setFocusIn(true));\r\n filterDom.onFocusOut(() => { \r\n if (!getSkipFocusout()){ // skip initiated by mouse click (we manage it different way)\r\n resetLayoutAspect.resetLayout(); // if do not do this we will return to filtered list without text filter in input\r\n focusInAspect.setFocusIn(false);\r\n }\r\n resetSkipFocusout();\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\r\n function afterInput(){\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 = filterManagerAspect.getNavigateManager().getCount();\r\n\r\n if (visibleCount>0){\r\n let panelIsVisble = popupAspect.isChoicesVisible();\r\n if (!panelIsVisble){\r\n showChoices(); \r\n }\r\n if (visibleCount == 1) {\r\n navigateAspect.hoverIn(filterManagerAspect.getNavigateManager().getHead())\r\n } else {\r\n if (panelIsVisble)\r\n hoveredChoiceAspect.resetHoveredChoice();\r\n } \r\n }else{\r\n if (popupAspect.isChoicesVisible())\r\n hideChoices();\r\n }\r\n }\r\n\r\n filterDom.onInput(() => {\r\n let {filterInputValue, isEmpty} = inputAspect.processInput();\r\n if (isEmpty)\r\n filterManagerAspect.processEmptyInput();\r\n else\r\n filterDom.setWidth(filterInputValue); \r\n\r\n afterInput();\r\n });\r\n\r\n function keyDownArrow(down) {\r\n let wrap = navigateAspect.navigate(down); \r\n if (wrap)\r\n {\r\n navigateAspect.hoverIn(wrap); // !\r\n showChoices(); // !\r\n }\r\n }\r\n\r\n function hoveredToSelected(){\r\n let hoveredWrap = hoveredChoiceAspect.getHoveredChoice(); \r\n if (hoveredWrap){\r\n let wasToggled = optionToggleAspect.toggle(hoveredWrap); \r\n if (wasToggled) {\r\n resetLayoutAspect.resetLayout();\r\n }\r\n }\r\n }\r\n\r\n // TODO: bind it more declarative way? (compact code)\r\n var onKeyDown = (event) => {\r\n let keyCode = event.which;\r\n var empty = filterDom.isEmpty();\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 if ([ 38, 40 ].indexOf(keyCode) >= 0 )\r\n event.preventDefault(); \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 let wrap = picksList.getTail();\r\n if (wrap){ \r\n wrap.pick?.setSelectedFalse(); \r\n popupAspect.updatePopupLocation();\r\n }\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 hideChoices(); // 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 || popupAspect.isChoicesVisible())\r\n event.stopPropagation()\r\n }\r\n else if (keyCode == 38) {\r\n keyDownArrow(false); // up\r\n }\r\n else if (keyCode == 40) {\r\n keyDownArrow(true); // down\r\n }\r\n }\r\n var onKeyUp = (event) => {\r\n let keyCode = event.which;\r\n //var handler = keyUp[event.which/* key code */];\r\n //handler(); \r\n if (keyCode == 9) {\r\n if (popupAspect.isChoicesVisible()) {\r\n hoveredToSelected();\r\n } \r\n }\r\n else if (keyCode == 13 ) {\r\n if (popupAspect.isChoicesVisible()) {\r\n hoveredToSelected();\r\n } else {\r\n if (filterManagerAspect.getNavigateManager().getCount()>0){\r\n showChoices();\r\n }\r\n }\r\n }\r\n else if (keyCode == 27) { // escape\r\n // is it always empty (bs x can still it) \r\n resetLayoutAspect.resetLayout();\r\n }\r\n }\r\n\r\n filterDom.onKeyDown(onKeyDown); \r\n filterDom.onKeyUp(onKeyUp);\r\n\r\n let origSetDisabledComponent = setDisabledComponentAspect.setDisabledComponent; \r\n setDisabledComponentAspect.setDisabledComponent = (isComponentDisabled) => {\r\n origSetDisabledComponent(isComponentDisabled);\r\n if (isComponentDisabled)\r\n componentDisabledEventBinder.unbind();\r\n else\r\n componentDisabledEventBinder.bind(picksElement, \"click\", clickToShowChoices); \r\n }\r\n\r\n resetLayoutAspect.resetLayout = composeSync(\r\n hideChoices,\r\n resetLayoutAspect.resetLayout // resetFilter by default\r\n );\r\n\r\n let origCreatePickHandlers = createPickHandlersAspect.createPickHandlers;\r\n createPickHandlersAspect.createPickHandlers = (wrap) => {\r\n let pickHandlers = origCreatePickHandlers(wrap);\r\n pickHandlers.removeOnButton = handleOnRemoveButton(pickHandlers.removeOnButton);\r\n return pickHandlers;\r\n } \r\n\r\n let origBuildChoice = buildChoiceAspect.buildChoice;\r\n buildChoiceAspect.buildChoice = (wrap) => {\r\n origBuildChoice(wrap);\r\n let pickHandlers = createPickHandlersAspect.createPickHandlers(wrap);\r\n wrap.choice.remove = composeSync(wrap.choice.remove, ()=>{\r\n if (pickHandlers.removePick) {\r\n pickHandlers.removePick();\r\n pickHandlers.removePick=null;\r\n }\r\n })\r\n \r\n let unbindChoiceElement = adoptChoiceElement(wrap);\r\n wrap.choice.dispose = composeSync(unbindChoiceElement, wrap.choice.dispose)\r\n addPickAspect.addPick(wrap, pickHandlers);\r\n }\r\n\r\n return {\r\n dispose(){\r\n resetMouseCandidateChoice();\r\n picksElement.removeEventListener(\"mousedown\", skipoutAndResetMousedown);\r\n componentDisabledEventBinder.unbind();\r\n }\r\n }\r\n}\r\n","\r\nexport function SetDisabledComponentAspect(picksList, picksDom){\r\n return {\r\n setDisabledComponent(isComponentDisabled){\r\n picksList.forEach(wrap=>wrap.pick.pickDomManagerHandlers.updateRemoveDisabled())\r\n picksDom.disable(isComponentDisabled);\r\n }\r\n }\r\n}\r\n\r\nexport function UpdateDisabledComponentAspect(componentPropertiesAspect, setDisabledComponentAspect\r\n ){\r\n let isComponentDisabled;\r\n return {\r\n updateDisabledComponent(){\r\n let newIsComponentDisabled = componentPropertiesAspect.getDisabled();\r\n if (isComponentDisabled!==newIsComponentDisabled){\r\n isComponentDisabled=newIsComponentDisabled;\r\n setDisabledComponentAspect.setDisabledComponent(newIsComponentDisabled);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport function ResetLayoutAspect(resetLayout){\r\n return {\r\n resetLayout\r\n }\r\n}\r\n\r\nexport function AppearanceAspect(updateDisabledComponentAspect){\r\n return {\r\n updateAppearance(){\r\n updateDisabledComponentAspect.updateDisabledComponent();\r\n }\r\n }\r\n}\r\n\r\nexport function LoadAspect(fillChoicesAspect, appearanceAspect){\r\n return {\r\n load(){\r\n fillChoicesAspect.fillChoices();\r\n appearanceAspect.updateAppearance(); \r\n }\r\n }\r\n}","export function CountableChoicesListInsertAspect(countableChoicesList, wrapsCollection){\r\n return {\r\n countableChoicesListInsert(wrap, key){\r\n let choiceNext = wrapsCollection.getNext(key);\r\n countableChoicesList.add(wrap, choiceNext)\r\n }\r\n }\r\n}","import {PluginManager, plugStaticDom} from './PluginManager'\r\n\r\nimport {composeSync, List, extendIfUndefined} from './ToolsJs';\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 {ComponentPropertiesAspect, TriggerAspect, OnChangeAspect} from './ComponentPropertiesAspect';\r\nimport {OptionsAspect, OptionPropertiesAspect} from './OptionsAspect';\r\n\r\nimport {ChoicesEnumerableAspect } from './ChoicesEnumerableAspect'\r\nimport {FilterManagerAspect, NavigateManager, FilterPredicateAspect } from './FilterManagerAspect'\r\nimport {BuildAndAttachChoiceAspect, BuildChoiceAspect} from './BuildChoiceAspect'\r\nimport {FillChoicesAspect} from './FillChoicesAspect'\r\n\r\nimport {UpdateDataAspect } from './UpdateDataAspect'\r\n\r\nimport {CreateWrapAspect, CreateChoiceBaseAspect, OptionToggleAspect, CreatePickHandlersAspect, RemovePickAspect, AddPickAspect, ChoiceClickAspect, IsChoiceSelectableAspect, SetOptionSelectedAspect} from './CreateWrapAspect.js'\r\nimport {NavigateAspect, HoveredChoiceAspect} from './NavigateAspect'\r\nimport {Wraps} from './Wraps'\r\n\r\nimport {BuildPickAspect} from './BuildPickAspect'\r\nimport {InputAspect} from './InputAspect'\r\nimport {ResetFilterAspect, FocusInAspect, ResetFilterListAspect} from './ResetFilterListAspect'\r\n\r\nimport {MultiSelectInlineLayout} from './MultiSelectInlineLayout'\r\n\r\nimport {SetDisabledComponentAspect, UpdateDisabledComponentAspect, LoadAspect, AppearanceAspect, ResetLayoutAspect} from './AppearanceAspect'\r\nimport {DoublyLinkedList, ArrayFacade} from './ToolsJs'\r\nimport {CountableChoicesListInsertAspect} from './CountableChoicesListInsertAspect'\r\n\r\n/// environment - common for many; configuration for concreate\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,\r\n css, \r\n getDisabled,\r\n options, \r\n getText\r\n } = configuration;\r\n \r\n let disposeAspect = {};\r\n let triggerAspect = TriggerAspect(element, environment.trigger);\r\n let onChangeAspect = OnChangeAspect(triggerAspect, 'dashboardcode.multiselect:change');\r\n let componentPropertiesAspect = ComponentPropertiesAspect(getDisabled??(() => false));\r\n let optionsAspect = OptionsAspect(options); \r\n let optionPropertiesAspect = OptionPropertiesAspect(getText);\r\n let isChoiceSelectableAspect = IsChoiceSelectableAspect();\r\n let createWrapAspect = CreateWrapAspect();\r\n let createChoiceBaseAspect = CreateChoiceBaseAspect(optionPropertiesAspect);\r\n //let setOptionSelectedAspect = SetOptionSelectedAspect(optionPropertiesAspect);\r\n \r\n let addPickAspect = AddPickAspect();\r\n let removePickAspect = RemovePickAspect();\r\n let createElementAspect = CreateElementAspect(name => window.document.createElement(name));\r\n \r\n let choicesDomFactory = ChoicesDomFactory(createElementAspect);\r\n let staticDomFactory = StaticDomFactory(choicesDomFactory, createElementAspect);\r\n \r\n let wrapsCollection = ArrayFacade();\r\n \r\n let countableChoicesList = DoublyLinkedList(\r\n (wrap)=>wrap.choice.itemPrev, \r\n (warp, v)=>warp.choice.itemPrev=v, \r\n (wrap)=>wrap.choice.itemNext, \r\n (wrap, v)=>wrap.choice.itemNext=v\r\n );\r\n \r\n let countableChoicesListInsertAspect = CountableChoicesListInsertAspect(countableChoicesList, wrapsCollection);\r\n\r\n let choicesEnumerableAspect = ChoicesEnumerableAspect(countableChoicesList, wrap=>wrap.choice.itemNext)\r\n \r\n let filteredChoicesList = DoublyLinkedList(\r\n (wrap)=>wrap.choice.filteredPrev, \r\n (wrap, v)=>wrap.choice.filteredPrev=v, \r\n (wrap)=>wrap.choice.filteredNext, \r\n (wrap, v)=>wrap.choice.filteredNext=v\r\n );\r\n \r\n let emptyNavigateManager = NavigateManager(\r\n countableChoicesList,\r\n (wrap)=>wrap.choice.itemPrev,\r\n (wrap)=>wrap.choice.itemNext \r\n \r\n ); \r\n let filteredNavigateManager = NavigateManager(\r\n filteredChoicesList, \r\n (wrap)=>wrap.choice.filteredPrev,\r\n (wrap)=>wrap.choice.filteredNext ); \r\n\r\n let filterPredicateAspect = FilterPredicateAspect()\r\n let filterManagerAspect = FilterManagerAspect(\r\n emptyNavigateManager,\r\n filteredNavigateManager,\r\n \r\n filteredChoicesList, \r\n choicesEnumerableAspect,\r\n filterPredicateAspect\r\n );\r\n\r\n let hoveredChoiceAspect = HoveredChoiceAspect()\r\n let navigateAspect = NavigateAspect(hoveredChoiceAspect, \r\n (down, hoveredChoice)=>filterManagerAspect.getNavigateManager().navigate(down, hoveredChoice));\r\n let picksList = List();\r\n let wraps = Wraps(\r\n wrapsCollection,\r\n ()=>countableChoicesList.reset(), \r\n (w)=>countableChoicesList.remove(w),\r\n (w, key)=>countableChoicesListInsertAspect.countableChoicesListInsert(w, key));\r\n\r\n let aspects = {\r\n environment, configuration, triggerAspect, onChangeAspect, componentPropertiesAspect, disposeAspect,\r\n countableChoicesList, countableChoicesListInsertAspect,\r\n optionsAspect, optionPropertiesAspect, \r\n createWrapAspect, createChoiceBaseAspect, isChoiceSelectableAspect, \r\n createElementAspect,\r\n choicesDomFactory, staticDomFactory,\r\n filterPredicateAspect, wrapsCollection, choicesEnumerableAspect, \r\n filteredChoicesList, filterManagerAspect, hoveredChoiceAspect, navigateAspect, picksList, wraps,\r\n addPickAspect, removePickAspect\r\n }\r\n\r\n plugStaticDom(plugins, aspects); // apply cssPatch to css, apply selectElement support; \r\n\r\n let {choicesDom, createStaticDom} = staticDomFactory.create(css)\r\n\r\n let {staticDom, staticManager} = createStaticDom(element, containerClass)\r\n\r\n // after this we can use staticDom in construtctor, this simplifies parameters passing a lot \r\n\r\n let filterDom = FilterDom(staticDom.disposablePicksElement, createElementAspect, css);\r\n let popupAspect = PopupAspect(choicesDom.choicesElement, filterDom.filterInputElement, Popper);\r\n let resetFilterListAspect = ResetFilterListAspect(filterDom, filterManagerAspect)\r\n let resetFilterAspect = ResetFilterAspect(filterDom, resetFilterListAspect)\r\n let inputAspect = InputAspect( filterDom,filterManagerAspect); \r\n\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\r\n let pickDomFactory = PickDomFactory(css, componentPropertiesAspect, optionPropertiesAspect);\r\n let buildPickAspect = BuildPickAspect(picksDom, pickDomFactory);\r\n let createPickHandlersAspect = CreatePickHandlersAspect(picksList, removePickAspect, buildPickAspect);\r\n \r\n let choiceDomFactory = ChoiceDomFactory(css, optionPropertiesAspect);\r\n let optionToggleAspect = OptionToggleAspect(createPickHandlersAspect, addPickAspect);\r\n\r\n let choiceClickAspect = ChoiceClickAspect(optionToggleAspect, filterDom);\r\n let buildChoiceAspect = BuildChoiceAspect( choicesDom, choiceDomFactory, choiceClickAspect);\r\n let buildAndAttachChoiceAspect = BuildAndAttachChoiceAspect(buildChoiceAspect);\r\n let resetLayoutAspect = ResetLayoutAspect(() => resetFilterAspect.resetFilter());\r\n\r\n let setDisabledComponentAspect = SetDisabledComponentAspect(picksList, picksDom);\r\n let updateDisabledComponentAspect = UpdateDisabledComponentAspect(componentPropertiesAspect,setDisabledComponentAspect );\r\n let appearanceAspect = AppearanceAspect(updateDisabledComponentAspect);\r\n \r\n let fillChoicesAspect = FillChoicesAspect(\r\n window.document, createWrapAspect, createChoiceBaseAspect, optionsAspect, wraps, buildAndAttachChoiceAspect );\r\n let loadAspect = LoadAspect(fillChoicesAspect, appearanceAspect);\r\n let updateDataAspect = UpdateDataAspect(choicesDom, wraps, picksList, fillChoicesAspect, resetLayoutAspect);\r\n\r\n extendIfUndefined(aspects, {\r\n staticDom, picksDom, choicesDom,filterDom, resetLayoutAspect, pickDomFactory, choiceDomFactory,\r\n popupAspect, staticManager, buildChoiceAspect, optionToggleAspect, choiceClickAspect, \r\n buildAndAttachChoiceAspect , fillChoicesAspect, \r\n buildPickAspect, createPickHandlersAspect, inputAspect, resetFilterListAspect, resetFilterAspect, \r\n resetLayoutAspect, focusInAspect, \r\n updateDisabledComponentAspect, setDisabledComponentAspect, appearanceAspect, loadAspect,\r\n updateDataAspect} )\r\n \r\n let pluginManager = PluginManager(plugins, aspects);\r\n let multiSelectInlineLayout = MultiSelectInlineLayout(aspects);\r\n\r\n let api = {component: \"BsMultiSelect.api\"} // key used in memory leak analyzes\r\n \r\n pluginManager.buildApi(api);\r\n // after this we can pass aspects methods call without wrapping - there should be no more overridings. TODO freeze aspects?\r\n api.dispose = composeSync(\r\n resetLayoutAspect.resetLayout,\r\n disposeAspect.dispose,\r\n pluginManager.dispose, \r\n ()=>{picksList.forEach(wrap=>wrap.pick.dispose());},\r\n multiSelectInlineLayout.dispose, // TODO move to layout\r\n wraps.dispose,\r\n staticManager.dispose, popupAspect.dispose, picksDom.dispose, filterDom.dispose );\r\n \r\n api.updateAppearance = appearanceAspect.updateAppearance;\r\n api.updateData = updateDataAspect.updateData;\r\n api.update = () => {\r\n updateDataAspect.updateData();\r\n appearanceAspect.updateAppearance();\r\n }\r\n\r\n api.updateDisabled = updateDisabledComponentAspect.updateDisabledComponent;\r\n // TODO api.updateOption = (key) => {/* all updates: selected, disabled, hidden, text */}\r\n\r\n onInit?.(api, aspects);\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.plugDefaultConfig = (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, componentPropertiesAspect} = 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 componentPropertiesAspect.getSize=getSize;\r\n componentPropertiesAspect.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, createWrapAspect, isChoiceSelectableAspect,\r\n wrapsCollection, buildChoiceAspect, buildAndAttachChoiceAspect,\r\n countableChoicesListInsertAspect, countableChoicesList} = pluginData;\r\n\r\n countableChoicesListInsertAspect.countableChoicesListInsert = (wrap, key) => {\r\n if ( !wrap.isOptionHidden ){\r\n let choiceNext = wrapsCollection.getNext(key, c=>!c.isOptionHidden );\r\n countableChoicesList.add(wrap, choiceNext)\r\n }\r\n }\r\n\r\n let origBuildAndAttachChoice = buildAndAttachChoiceAspect.buildAndAttachChoice;\r\n buildAndAttachChoiceAspect.buildAndAttachChoice=(wrap, getNextElement)=>{\r\n if (wrap.isOptionHidden){ \r\n buildHiddenChoice(wrap);\r\n }\r\n else{ \r\n origBuildAndAttachChoice(wrap, getNextElement);\r\n }\r\n }\r\n\r\n var origIsSelectable = isChoiceSelectableAspect.isSelectable;\r\n isChoiceSelectableAspect.isSelectable = (wrap) => origIsSelectable(wrap) && !wrap.isOptionHidden;\r\n\r\n let {getIsOptionHidden, options} = 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) => {\r\n return option.hidden; \r\n } \r\n }\r\n \r\n var origСreateWrap = createWrapAspect.createWrap;\r\n createWrapAspect.createWrap = (option) => {\r\n let wrap = origСreateWrap(option);\r\n wrap.isOptionHidden = getIsOptionHidden(option);\r\n return wrap;\r\n };\r\n\r\n return {\r\n buildApi(api){ \r\n let getNextNonHidden = (key) => wrapsCollection.getNext(key, c => !c.isOptionHidden );\r\n\r\n api.updateOptionsHidden = () => \r\n wrapsCollection.forLoop( (wrap, key) => \r\n updateChoiceHidden(wrap, key, getNextNonHidden, countableChoicesList, getIsOptionHidden, buildChoiceAspect)\r\n );\r\n\r\n api.updateOptionHidden = (key) => \r\n updateChoiceHidden(wrapsCollection.get(key), key, getNextNonHidden, countableChoicesList, getIsOptionHidden, buildChoiceAspect);\r\n // TODO create updateHidden ? \r\n // it is too complex since we need to find the next non hidden, when this depends on key \r\n // there should be the backreference \"wrap -> index\" invited before\r\n // api.updateOptionHidden = (key) => wrapsCollection.get(key).updateHidden();\r\n }\r\n }\r\n}\r\n\r\nfunction buildHiddenChoice(wrap){\r\n wrap.updateSelected = () => void 0;\r\n \r\n wrap.choice.isChoiceElementAttached = false;\r\n wrap.choice.choiceElement = null;\r\n wrap.choice.choiceElementAttach = null;\r\n wrap.choice.setVisible = null; \r\n wrap.choice.setHoverIn = null;\r\n wrap.choice.remove = null; \r\n \r\n wrap.choice.dispose = () => { \r\n wrap.choice.dispose = null;\r\n };\r\n\r\n wrap.dispose = () => { \r\n wrap.choice.dispose();\r\n wrap.dispose = null;\r\n };\r\n\r\n}\r\n\r\nfunction updateChoiceHidden(wrap, key, getNextNonHidden, countableChoicesList, getIsOptionHidden, buildChoiceAspect){\r\n let newIsOptionHidden = getIsOptionHidden(wrap.option);\r\n if (newIsOptionHidden != wrap.isOptionHidden)\r\n {\r\n wrap.isOptionHidden= newIsOptionHidden;\r\n if (wrap.isOptionHidden) {\r\n\r\n countableChoicesList.remove(wrap);\r\n wrap.choice.remove(); \r\n buildHiddenChoice(wrap);\r\n } else {\r\n let nextChoice = getNextNonHidden(key);\r\n countableChoicesList.add(wrap, nextChoice);\r\n buildChoiceAspect.buildChoice(wrap);\r\n wrap.choice.choiceElementAttach(nextChoice?.choice.choiceElement);\r\n }\r\n }\r\n}\r\n","import {createCss, extendCss} from '../ToolsStyling';\r\nimport {isBoolean} from '../ToolsJs';\r\nimport {cssPatch} from '../BsCss'\r\n\r\nexport function CssPatchPlugin(){\r\n}\r\n\r\nCssPatchPlugin.plugDefaultConfig = (defaults) => {\r\n defaults.useCssPatch = true;\r\n defaults.cssPatch = cssPatch;\r\n}\r\n\r\nCssPatchPlugin.plugMergeSettings = (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.plugStaticDom = (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, picksList, picksDom, filterDom, staticDom, updateDataAspect,\r\n resetFilterListAspect, filterManagerAspect} = 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 = () => picksList.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 filterManagerAspect.processEmptyInput = composeSync(updateEmptyInputWidth, filterManagerAspect.processEmptyInput);\r\n resetFilterListAspect.forceResetFilter = composeSync(resetFilterListAspect.forceResetFilter, updatePlacehodlerVisibility);\r\n \r\n let origAdd = picksList.add;\r\n picksList.add = (wrap) => { \r\n let removeFromList= origAdd(wrap);\r\n if (picksList.getCount()==1) \r\n updatePlacehodlerVisibility()\r\n wrap.pick.dispose = composeSync(wrap.pick.dispose, ()=>\r\n { \r\n if (picksList.getCount()==0) \r\n updatePlacehodlerVisibility()\r\n })\r\n return removeFromList;\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, picksList} = 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 = () => picksList.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 {buildAndAttachChoiceAspect, wraps, wrapsCollection, createWrapAspect, createChoiceBaseAspect,\r\n optionsAspect, resetLayoutAspect} = pluginData;\r\n return {\r\n buildApi(api){\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 \r\n let wrap = createWrapAspect.createWrap(option);\r\n wrap.choice= createChoiceBaseAspect.createChoiceBase(option);\r\n wraps.insert(key, wrap);\r\n let nextChoice = ()=> wrapsCollection.getNext(key, c => c.choice.choiceElement);\r\n\r\n buildAndAttachChoiceAspect.buildAndAttachChoice(\r\n wrap,\r\n () => nextChoice()?.choice.choiceElement\r\n )\r\n }\r\n \r\n api.updateOptionRemoved = (key) => { // TODO: generalize index as key \r\n resetLayoutAspect.resetLayout(); // always hide 1st, then reset filter\r\n \r\n var wrap = wraps.remove(key);\r\n wrap.choice.remove?.();\r\n wrap.dispose?.();\r\n }\r\n }\r\n }\r\n}","export function FormRestoreOnBackwardPlugin(pluginData){\r\n let {staticDom, environment, loadAspect, configuration} = pluginData;\r\n let window = environment.window;\r\n return {\r\n buildApi(api){\r\n if (!api.updateOptionsSelected){\r\n if (options && configuration.setSelected)\r\n throw new Error(\"BsMultisilect: FormRestoreOnBackwardPlugin requires SelectedOptionPlugin defined first\");\r\n }\r\n else{\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 }\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.plugStaticDom = (aspects)=>{\r\n let {configuration, staticDomFactory, createElementAspect,\r\n componentPropertiesAspect, onChangeAspect, triggerAspect, optionsAspect, disposeAspect} = aspects;\r\n let {create: origCreate} = staticDomFactory;\r\n staticDomFactory.create = (css) => {\r\n let {choicesDom, createStaticDom: origCreateStaticDom} = origCreate(css);\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} = configuration;\r\n\r\n if(!getDisabled) {\r\n var fieldsetElement = closestByTagName(selectElement, 'FIELDSET');\r\n if (fieldsetElement) {\r\n componentPropertiesAspect.getDisabled = () => selectElement.disabled || fieldsetElement.disabled;\r\n } else {\r\n componentPropertiesAspect.getDisabled = () => selectElement.disabled;\r\n }\r\n }\r\n onChangeAspect.onChange = composeSync(() => triggerAspect.trigger('change'), onChangeAspect.onChange) \r\n optionsAspect.getOptions = () => selectElement.options;\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}","import {composeSync} from '../ToolsJs';\r\n\r\n// TODO: there should be two new \"independent aspects\" AddPickAspect and RemovePickAspect \r\n// plugin should overdrive them : call setWrapSelected and etc\r\n// therefore there should new component API methods\r\n// addOptionPick(key) -> call addPick(pick) which returns removePick() \r\n// SetOptionSelectedAspect, OptionToggleAspect should be moved there \r\n// OptionToggleAspect overrided in DisabledOptionPlugin\r\n\r\n// wrap.isOptionSelected , wrap.updateSelected\r\nexport function SelectedOptionPlugin(pluginData){\r\n let {configuration, wrapsCollection, \r\n createWrapAspect, buildChoiceAspect, removePickAspect,\r\n resetLayoutAspect, picksList, isChoiceSelectableAspect, optionToggleAspect,\r\n inputAspect, filterDom, filterManagerAspect, createPickHandlersAspect, addPickAspect, \r\n onChangeAspect, filterPredicateAspect\r\n } = pluginData;\r\n let {getSelected : getIsOptionSelected, setSelected : setIsOptionSelected, options} = configuration;\r\n \r\n if (options) {\r\n if (!setIsOptionSelected){\r\n setIsOptionSelected = (option, value) => {option.selected = value};\r\n }\r\n if (!getIsOptionSelected)\r\n getIsOptionSelected = (option) => option.selected; \r\n } else { // selectElement\r\n if (!getIsOptionSelected){\r\n getIsOptionSelected = (option) => option.selected;\r\n }\r\n if (!setIsOptionSelected){\r\n setIsOptionSelected = (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\r\n function trySetWrapSelected(wrap, booleanValue){\r\n let success = false;\r\n var confirmed = setIsOptionSelected(wrap.option, booleanValue);\r\n if (!(confirmed===false)) {\r\n wrap.isOptionSelected = booleanValue;\r\n wrap.updateSelected();\r\n success = true;\r\n }\r\n return success;\r\n }\r\n\r\n let origCreateWrap = createWrapAspect.createWrap;\r\n createWrapAspect.createWrap = (option)=>{\r\n let wrap = origCreateWrap(option);\r\n wrap.isOptionSelected = getIsOptionSelected(option);\r\n wrap.updateSelected = null; // can it be combined ?\r\n return wrap;\r\n }\r\n \r\n let origFilterPredicate = filterPredicateAspect.filterPredicate\r\n filterPredicateAspect.filterPredicate = (wrap, text) =>\r\n !wrap.isOptionSelected && origFilterPredicate(wrap, text)\r\n\r\n let origToggle = optionToggleAspect.toggle; // TODO: improve design, no replace\r\n optionToggleAspect.toggle= (wrap) => {\r\n return trySetWrapSelected(wrap, !wrap.isOptionSelected)\r\n }\r\n\r\n // let origChoiceClick = choiceClickAspect.choiceClick; // TODO: improve design, no replace\r\n // choiceClickAspect.choiceClick= (wrap) => {\r\n // optionToggleAspect.toggle(wrap);\r\n // filterDom.setFocus();\r\n // }\r\n\r\n let removePickOrig = removePickAspect.removePick; // TODO: improve design, no replace\r\n removePickAspect.removePick = (wrap) => { // TODO: try remove pick\r\n return trySetWrapSelected(wrap, false);\r\n }\r\n\r\n \r\n let origBuildChoice = buildChoiceAspect.buildChoice;\r\n buildChoiceAspect.buildChoice= (wrap) => {\r\n origBuildChoice(wrap);\r\n wrap.updateSelected = () => {\r\n wrap.choice.choiceDomManagerHandlers.updateSelected();\r\n onChangeAspect.onChange();\r\n }\r\n wrap.dispose = composeSync( ()=>{ wrap.updateSelected = null}, wrap.dispose)\r\n }\r\n \r\n // TODO override buildPick and create .setSelectedFalse\r\n let origProcessInput = inputAspect.processInput;\r\n\r\n inputAspect.processInput =()=>{\r\n let origResult = origProcessInput();\r\n if (!origResult.isEmpty)\r\n {\r\n if ( filterManagerAspect.getNavigateManager().getCount() == 1)\r\n {\r\n // todo: move exact match to filterManager\r\n let fullMatchWrap = filterManagerAspect.getNavigateManager().getHead();\r\n let text = filterManagerAspect.getFilter();\r\n if (fullMatchWrap.choice.searchText == text)\r\n {\r\n let success = trySetWrapSelected(fullMatchWrap, true);\r\n if (success) {\r\n filterDom.setEmpty();\r\n origResult.isEmpty = true;\r\n }\r\n }\r\n }\r\n }\r\n return origResult;\r\n }\r\n\r\n // TODO: test this instead of wrap.updateSelected\r\n // function updateSelected(wrap){\r\n // if (wrap.pick){\r\n // if (wrap.isOptionSelected)\r\n // pickHandlers.addPick();\r\n // else {\r\n // pickHandlers.removePick();\r\n // pickHandlers.removePick=null;\r\n // }\r\n // }\r\n // wrap.choice.choiceDomManagerHandlers.updateSelected();\r\n // onChangeAspect.onChange();\r\n // }\r\n\r\n let origCreatePickHandlers = createPickHandlersAspect.createPickHandlers;\r\n createPickHandlersAspect.createPickHandlers = (wrap)=>{\r\n let pickHandlers = origCreatePickHandlers(wrap);\r\n wrap.updateSelected = composeSync(\r\n ()=>{\r\n if (wrap.isOptionSelected)\r\n pickHandlers.addPick();\r\n else {\r\n pickHandlers.removePick();\r\n pickHandlers.removePick=null;\r\n }\r\n },\r\n wrap.updateSelected\r\n )\r\n return pickHandlers;\r\n }\r\n\r\n let origAddPick = addPickAspect.addPick;\r\n addPickAspect.addPick = (wrap, pickTools) => {\r\n if (wrap.isOptionSelected)\r\n origAddPick(wrap, pickTools);\r\n }\r\n\r\n return {\r\n buildApi(api){\r\n api.selectAll= ()=>{\r\n resetLayoutAspect.resetLayout(); // always hide 1st\r\n wrapsCollection.forLoop(\r\n wrap => {\r\n if (isChoiceSelectableAspect.isSelectable(wrap) && !wrap.isOptionSelected)\r\n trySetWrapSelected(wrap, true)\r\n }\r\n ); \r\n }\r\n \r\n api.deselectAll= ()=>{\r\n resetLayoutAspect.resetLayout(); // always hide 1st\r\n picksList.forEach(wrap=>wrap.pick.setSelectedFalse())\r\n }\r\n\r\n api.setOptionSelected = (key, value) => {\r\n let wrap = wrapsCollection.get(key);\r\n return trySetWrapSelected(wrap, value);\r\n }\r\n\r\n // used in FormRestoreOnBackwardPlugin\r\n api.updateOptionsSelected = () => wrapsCollection.forLoop( wrap => updateChoiceSelected(wrap, getIsOptionSelected))\r\n api.updateOptionSelected = (key) => updateChoiceSelected(wrapsCollection.get(key), getIsOptionSelected)\r\n\r\n }\r\n }\r\n}\r\n\r\nfunction updateChoiceSelected(wrap, getIsOptionSelected){\r\n let newIsSelected = getIsOptionSelected(wrap.option);\r\n if (newIsSelected != wrap.isOptionSelected)\r\n {\r\n wrap.isOptionSelected = newIsSelected;\r\n wrap.updateSelected?.(); // some hidden oesn't have element (and need to be updated)\r\n }\r\n}","import {composeSync} from '../ToolsJs';\r\n\r\nexport function DisabledOptionPlugin(pluginData){\r\n let {configuration, isChoiceSelectableAspect, createWrapAspect, buildChoiceAspect,\r\n filterPredicateAspect, wrapsCollection, optionToggleAspect, buildPickAspect } = pluginData;\r\n \r\n let {getIsOptionDisabled, options} = configuration;\r\n if (options) {\r\n if (!getIsOptionDisabled)\r\n getIsOptionDisabled = (option) => (option.disabled===undefined) ? false : option.disabled; \r\n } else { // selectElement\r\n if (!getIsOptionDisabled)\r\n getIsOptionDisabled = (option) => option.disabled; \r\n }\r\n\r\n // TODO check this instead of wrap.updateDisabled\r\n // function updateDisabled(wrap){\r\n // wrap?.choice?.choiceDomManagerHandlers?.updateDisabled?.();\r\n // wrap?.pick?.pickDomManagerHandlers?.updateDisabled?.();\r\n // }\r\n\r\n let origСreateWrap = createWrapAspect.createWrap;\r\n createWrapAspect.createWrap = (option) => {\r\n let wrap = origСreateWrap(option);\r\n wrap.isOptionDisabled = getIsOptionDisabled(option); // TODO: remove usage wrap.isOptionDisabled\r\n wrap.updateDisabled = null; \r\n return wrap;\r\n };\r\n\r\n let origToggle = optionToggleAspect.toggle;\r\n optionToggleAspect.toggle = (wrap) => {\r\n let success = false;\r\n if (wrap.isOptionSelected!==undefined){\r\n if (wrap.isOptionSelected || !wrap.isOptionDisabled) // TODO: declare dependency on SelectedOptionPlugin\r\n success = origToggle(wrap);\r\n }\r\n else{\r\n if (!wrap.isOptionDisabled) {\r\n success = origToggle(wrap);\r\n }\r\n }\r\n return success;\r\n };\r\n\r\n let origIsSelectable = isChoiceSelectableAspect.isSelectable\r\n isChoiceSelectableAspect.isSelectable = (wrap) => {\r\n return origIsSelectable(wrap) && !wrap.isOptionDisabled ;\r\n };\r\n\r\n let origFilterPredicate = filterPredicateAspect.filterPredicate;\r\n filterPredicateAspect.filterPredicate = (wrap, text) => {\r\n return !wrap.isOptionDisabled && origFilterPredicate(wrap, text) ;\r\n };\r\n\r\n let origBuildChoice = buildChoiceAspect.buildChoice;\r\n buildChoiceAspect.buildChoice = (wrap) => {\r\n origBuildChoice(wrap);\r\n wrap.updateDisabled = wrap.choice.choiceDomManagerHandlers.updateDisabled\r\n wrap.choice.dispose = composeSync(()=>{wrap.updateDisabled=null;}, wrap.choice.dispose);\r\n }\r\n\r\n \r\n let origBuildPick = buildPickAspect.buildPick;\r\n buildPickAspect.buildPick = (wrap, removeOnButton) => {\r\n origBuildPick(wrap, removeOnButton);\r\n let pick =wrap.pick;\r\n pick.updateDisabled = () => pick.pickDomManagerHandlers.updateDisabled();\r\n pick.dispose = composeSync(pick.dispose, ()=>{pick.updateDisabled=null});\r\n\r\n let choiceUpdateDisabledBackup = wrap.updateDisabled;\r\n wrap.updateDisabled = composeSync(choiceUpdateDisabledBackup, pick.updateDisabled); // add pickDisabled\r\n pick.dispose = composeSync(pick.dispose, \r\n ()=>{\r\n wrap.updateDisabled = choiceUpdateDisabledBackup; // remove pickDisabled\r\n wrap.updateDisabled(); // make \"true disabled\" without it checkbox only looks disabled\r\n }\r\n )\r\n }\r\n\r\n return {\r\n buildApi(api){\r\n api.updateOptionsDisabled = () => wrapsCollection.forLoop( wrap => updateChoiceDisabled(wrap, getIsOptionDisabled))\r\n api.updateOptionDisabled = (key) => updateChoiceDisabled(wrapsCollection.get(key), getIsOptionDisabled)\r\n }\r\n };\r\n}\r\n\r\nfunction updateChoiceDisabled(wrap, getIsOptionDisabled){\r\n let newIsDisabled = getIsOptionDisabled(wrap.option);\r\n if (newIsDisabled != wrap.isOptionDisabled)\r\n {\r\n wrap.isOptionDisabled= newIsDisabled;\r\n wrap.updateDisabled?.(); // some hidden oesn't have element (and need to be updated)\r\n }\r\n}","export function PicksApiPlugin(pluginData){\r\n let {picksList, createWrapAspect, createPickHandlersAspect, addPickAspect} = pluginData;\r\n return {\r\n buildApi(api){\r\n api.forEachPeak = (f) => \r\n picksList.forEach(wrap=>f(wrap.option));\r\n // TODO: getHeadPeak\r\n api.getTailPeak = () => picksList.getTail()?.option;\r\n api.countPeaks = () => picksList.getCount();\r\n api.isEmptyPeaks = () => picksList.isEmpty();\r\n \r\n api.addPick = (option) => {\r\n let wrap = createWrapAspect.createWrap(option);\r\n // TODO should be moved to specific plugins\r\n wrap.updateDisabled = ()=>{};\r\n wrap.updateHidden = ()=>{};\r\n let pickHandlers = createPickHandlersAspect.createPickHandlers(wrap);\r\n addPickAspect.addPick(wrap, pickHandlers);\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 {plugDefaultConfig, plugMergeSettings} 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\n\r\nimport {HiddenOptionPlugin} from './plugins/HiddenOptionPlugin'\r\n\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 {SelectedOptionPlugin} from './plugins/SelectedOptionPlugin'\r\nimport {DisabledOptionPlugin} from './plugins/DisabledOptionPlugin'\r\nimport {PicksApiPlugin} from './plugins/PicksApiPlugin'\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\r\n let defaultPlugins = [CssPatchPlugin, SelectElementPlugin, LabelPlugin, HiddenOptionPlugin, ValidationApiPlugin, \r\n BsAppearancePlugin, FormResetPlugin, RtlPlugin, PlaceholderPlugin , OptionsApiPlugin, \r\n JQueryMethodsPlugin, SelectedOptionPlugin, FormRestoreOnBackwardPlugin, DisabledOptionPlugin, PicksApiPlugin];\r\n\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\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 if (settings.plugins) {\r\n environment.plugins = settings.plugins;\r\n settings.plugins = null;\r\n }\r\n }\r\n\r\n if (!environment.plugins){\r\n environment.plugins = defaultPlugins;\r\n }\r\n\r\n configuration.css = createCss(defaults.css, settings?.css);\r\n plugMergeSettings(environment.plugins, configuration, defaults, settings); // merge settings.cssPatch and defaults.cssPatch\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); // onInit(api, aspects) - before load data\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 plugDefaultConfig(defaultPlugins, defaults);\r\n prototypable.defaults = defaults;\r\n\r\n prototypable.tools = {EventBinder, addStyling, toggleStyling, composeSync}\r\n \r\n prototypable.plugins = {CssPatchPlugin, SelectElementPlugin, LabelPlugin, HiddenOptionPlugin, ValidationApiPlugin, \r\n BsAppearancePlugin, FormResetPlugin, RtlPlugin, PlaceholderPlugin , OptionsApiPlugin, \r\n JQueryMethodsPlugin, SelectedOptionPlugin, FormRestoreOnBackwardPlugin, DisabledOptionPlugin, PicksApiPlugin}\r\n \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","plugDefaultConfig","constructors","defaults","plugMergeSettings","configuration","settings","plugStaticDom","isBoolean","value","isString","String","extendIfUndefined","destination","source","property","undefined","shallowClearClone","v","sources","forEach","s","hasOwnProperty","forEachRecursion","f","goOn","prev","List","tail","count","add","next","node","remove","getTail","getCount","isEmpty","reset","DoublyLinkedList","getPrev","setPrev","getNext","setNext","head","getHead","ArrayFacade","list","key","splice","predicate","start","c","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","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","split","Array","extend","actionObj","success","Object","Styling","a","o","freeze","createStyling","isReplace","params","extendInt","p","concat","createCss","stylings1","stylings2","param1","param2","extendCss","PickDomFactory","css","componentPropertiesAspect","optionPropertiesAspect","create","pickElement","wrap","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","choice","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","beforeElement","insertBefore","detach","disable","isComponentDisabled","toggleFocusStyling","getIsFocusIn","setIsFocusIn","newIsFocusIn","FilterDom","filterInputElement","filterInput","setEmpty","setFocus","focus","setWidth","text","width","setFocusIfNotTarget","target","onInput","onFilterInputInput","onFocusIn","onFocusOut","onKeyDown","onfilterInputKeyDown","onKeyUp","onFilterInputKeyUp","ChoicesDomFactory","display","choices","createChoiceElement","setVisible","isVisible","PopupAspect","Popper","popper","popperConfiguration","placement","modifiers","preventOverflow","enabled","hide","flip","isChoicesVisible","setChoicesVisible","visible","updatePopupLocation","update","destroy","TriggerAspect","trigger","OnChangeAspect","triggerAspect","onChange","ComponentPropertiesAspect","OptionsAspect","getOptions","OptionPropertiesAspect","ChoicesEnumerableAspect","countableChoicesList","NavigateManager","navigate","down","FilterPredicateAspect","filterPredicate","searchText","indexOf","FilterManagerAspect","emptyNavigateManager","filteredNavigateManager","filteredChoicesList","choicesEnumerableAspect","filterPredicateAspect","showEmptyFilter","filterText","getNavigateManager","processEmptyInput","getFilter","setFilter","filteredPrev","filteredNext","BuildAndAttachChoiceAspect","buildChoiceAspect","buildAndAttachChoice","getNextElement","buildChoice","choiceElementAttach","BuildChoiceAspect","choiceDomFactory","choiceClickAspect","isChoiceElementAttached","choiceClick","choiceDomManagerHandlers","isFilteredIn","setHoverIn","FillChoicesAspect","document","createWrapAspect","createChoiceBaseAspect","optionsAspect","wraps","buildAndAttachChoiceAspect","fillChoices","fillChoicesImpl","createWrap","createChoiceBase","readyState","domContentLoadedHandler","UpdateDataAspect","picksList","fillChoicesAspect","resetLayoutAspect","resetLayout","clear","IsChoiceSelectableAspect","isSelectable","ChoiceClickAspect","optionToggleAspect","filterDom","OptionToggleAspect","createPickHandlersAspect","addPickAspect","pickHandlers","createPickHandlers","addPick","AddPickAspect","pickTools","RemovePickAspect","removePick","CreatePickHandlersAspect","removePickAspect","buildPickAspect","setSelectedFalse","removeOnButton","buildPick","event","pickElementAttach","removeFromList","CreateChoiceBaseAspect","trim","itemPrev","itemNext","CreateWrapAspect","HoveredChoiceAspect","hoveredChoice","getHoveredChoice","setHoveredChoice","resetHoveredChoice","NavigateAspect","hoveredChoiceAspect","hoverIn","Wraps","wrapsCollection","listFacade_reset","listFacade_remove","listFacade_add","insert","BuildPickAspect","picksDom","pickDomFactory","pickDomManagerHandlers","InputAspect","filterManagerAspect","processInput","filterInputValue","ResetFilterListAspect","forceResetFilter","ResetFilterAspect","resetFilterListAspect","resetFilter","FocusInAspect","setFocusIn","MultiSelectInlineLayout","aspects","environment","popupAspect","navigateAspect","focusInAspect","inputAspect","setDisabledComponentAspect","eventLoopFlag","skipFocusout","getSkipFocusout","resetSkipFocusout","setSkipFocusout","skipoutMousedown","documentMouseup","showChoices","hideChoices","resetMouseCandidateChoice","preventDefaultClickEvent","componentDisabledEventBinder","skipoutAndResetMousedown","clickToShowChoices","processUncheck","uncheckOption","handleOnRemoveButton","mouseCandidateEventBinder","mouseOverToHoveredAndReset","adoptChoiceElement","onChoiceElementMouseover","onChoiceElementMouseleave","overAndLeaveEventBinder","afterInput","visibleCount","panelIsVisble","keyDownArrow","hoveredToSelected","hoveredWrap","wasToggled","keyCode","which","empty","preventDefault","stopPropagation","origSetDisabledComponent","setDisabledComponent","origCreatePickHandlers","origBuildChoice","unbindChoiceElement","SetDisabledComponentAspect","UpdateDisabledComponentAspect","updateDisabledComponent","newIsComponentDisabled","ResetLayoutAspect","AppearanceAspect","updateDisabledComponentAspect","updateAppearance","LoadAspect","appearanceAspect","load","CountableChoicesListInsertAspect","countableChoicesListInsert","choiceNext","BsMultiSelect","onInit","disposeAspect","onChangeAspect","isChoiceSelectableAspect","staticDomFactory","warp","countableChoicesListInsertAspect","w","resetFilterAspect","loadAspect","updateDataAspect","pluginManager","multiSelectInlineLayout","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","selected","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","isOptionHidden","origBuildAndAttachChoice","buildHiddenChoice","origIsSelectable","getIsOptionHidden","hidden","origСreateWrap","getNextNonHidden","updateOptionsHidden","updateChoiceHidden","updateOptionHidden","newIsOptionHidden","nextChoice","CssPatchPlugin","configurationPluginData","PlaceholderPlugin","placeholder","setEmptyInputWidth","emptyToggleStyling","showPlacehodler","setDisabled","updatePlacehodlerVisibility","updateEmptyInputWidth","origDisable","origAdd","JQueryMethodsPlugin","getContainer","getChoices","getFilterInput","getPicks","picksCount","jQueryMethodsPluginData","OptionsApiPlugin","updateOptionAdded","updateOptionRemoved","FormRestoreOnBackwardPlugin","updateOptionsSelected","setSelected","origLoad","SelectElementPlugin","origCreate","origCreateStaticDom","disposableContainerElement","backupDisplay","backupedRequired","fieldsetElement","nextSibling","SelectedOptionPlugin","getIsOptionSelected","getSelected","setIsOptionSelected","trySetWrapSelected","booleanValue","confirmed","origCreateWrap","origFilterPredicate","origToggle","removePickOrig","origProcessInput","origResult","fullMatchWrap","origAddPick","selectAll","deselectAll","setOptionSelected","updateChoiceSelected","updateOptionSelected","newIsSelected","DisabledOptionPlugin","getIsOptionDisabled","origBuildPick","choiceUpdateDisabledBackup","updateOptionsDisabled","updateChoiceDisabled","updateOptionDisabled","newIsDisabled","PicksApiPlugin","forEachPeak","getTailPeak","countPeaks","isEmptyPeaks","updateHidden","transformStyles","old","opt","transformClasses","adjustLegacySettings","selectedPanelFocusBorderColor","selectedPanelFocusBoxShadow","console","log","inputColor","useCss","getIsValid","getIsInValid","defaultPlugins","createBsMultiSelect","removeInstanceData","buildConfiguration","multiSelect","tools"],"mappings":"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"}