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