{"version":3,"file":"BsMultiSelect.js","sources":["../../js/src/AddToJQueryPrototype.js","../../js/src/ToolsDom.js","../../js/src/FilterPanel.js","../../js/src/ChoicesPanel.js","../../js/src/ToolsJs.js","../../js/src/PicksList.js","../../js/src/MultiSelectInputAspect.js","../../js/src/ToolsStyling.js","../../js/src/PlaceholderAspect.js","../../js/src/Choice.js","../../js/src/MultiSelect.js","../../js/src/LabelAdapter.js","../../js/src/BsAppearance.js","../../js/src/ValidityApi.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/BsMultiSelect.jquery.js"],"sourcesContent":["export function addToJQueryPrototype(pluginName, createPlugin, defaults, $){\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 $.fn[prototypableName].defaults = defaults;\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 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\n// export function ShowBinder(element){\r\n// return {\r\n// show(){\r\n \r\n// },\r\n// hide(){\r\n// //\r\n// }\r\n// }\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 onTabToCompleate, // \"compleate alike\"\r\n onEnterToCompleate,\r\n stopEscKeyDownPropogation, \r\n onKeyUpEsc, // \"esc\" alike\r\n onInput//, // filter\r\n){\r\n filterInputElement.setAttribute(\"type\",\"search\");\r\n filterInputElement.setAttribute(\"autocomplete\",\"off\");\r\n\r\n var isEmpty = ()=>{\r\n return filterInputElement.value ? false:true;\r\n }\r\n var onfilterInputKeyDown = (event) => {\r\n let keyCode = event.which;\r\n var empty = isEmpty();\r\n if ([38, 40, 13 ,27].indexOf(keyCode)>=0 \r\n || (keyCode == 9 && !empty) ) {\r\n event.preventDefault(); \r\n // NOTE: prevention there enables handling on keyup otherwice there are no keyup (true at least for '9-tab'),\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 // '27-esc' there is \"just in case\"\r\n }\r\n if (keyCode == 27 ) {\r\n if (!empty || stopEscKeyDownPropogation())\r\n event.stopPropagation()\r\n //onKeyDownEsc(empty, event); // support BS do not close modal - event.stopPropagation inside\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 else if (keyCode == 9 /*tab*/) { // no keydown for this\r\n if (empty) {\r\n onTabForEmpty(); // filter is empty, nothing to reset\r\n }\r\n }\r\n else 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 // this.isBackspaceAtStartPoint = (this.filterInput.selectionStart == 0 && this.filterInput.selectionEnd == 0);\r\n if (empty) {\r\n onBackspace();\r\n }\r\n }\r\n }\r\n \r\n var onFilterInputKeyUp = (event) => {\r\n let keyCode = event.which;\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 isEventTarget(event){\r\n return event.target == filterInputElement;\r\n },\r\n dispose(){\r\n eventBinder.unbind();\r\n }\r\n }\r\n}","export function ChoicesPanel() \r\n{\r\n let hoveredChoice=null;\r\n\r\n function resetHoveredChoice() {\r\n if (hoveredChoice) {\r\n hoveredChoice.isHoverIn = false;\r\n hoveredChoice.updateHoverIn()\r\n hoveredChoice = null;\r\n }\r\n }\r\n\r\n var item = {\r\n getHoveredChoice: ()=>hoveredChoice,\r\n hoverIn(choice){\r\n resetHoveredChoice(); \r\n hoveredChoice = choice;\r\n hoveredChoice.isHoverIn = true;\r\n hoveredChoice.updateHoverIn()\r\n },\r\n resetHoveredChoice,\r\n }\r\n return item;\r\n}\r\n\r\n","export 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};\r\n tail = tail.next;\r\n } else \r\n tail = {value:e}\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 pushUnique(array, item){\r\n if(array.indexOf(item) == -1) {\r\n array.push(item);\r\n return true;\r\n }\r\n return false;\r\n} \r\n\r\nexport function composeSync(...functions){\r\n return () => 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 return f()\r\n else\r\n return f \r\n }\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 {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 i = list.getTail();\r\n if (i) \r\n i.remove(); // always remove in this case\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} from './ToolsDom'\r\n\r\nexport function MultiSelectInputAspect (\r\n window,\r\n appendToContainer, \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 isRtl,\r\n Popper\r\n ) \r\n{\r\n appendToContainer();\r\n var document = window.document;\r\n var eventLoopFlag = EventLoopFlag(window); // showChoices\r\n var skipFocusout = false;\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 skipFocusout = true;\r\n }\r\n\r\n var documentMouseup = function(event) {\r\n // if click outside container - close dropdown\r\n if ( !(choicesElement === event.target \r\n || picksElement === event.target \r\n || choicesElement.contains(event.target)\r\n || picksElement.contains(event.target)\r\n )\r\n ) {\r\n hideChoices();\r\n resetFilter();\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 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 /*}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 = null; // used to detect changes in input field position (by comparision with current value)\r\n var preventDefaultClickEvent = null;\r\n\r\n function alignAndShowChoices(event){\r\n if (preventDefaultClickEvent != event) {\r\n if (!isChoiceEmpty())\r\n {\r\n alignToFilterInputItemLocation(true);\r\n showChoices();\r\n }\r\n }\r\n preventDefaultClickEvent=null;\r\n }\r\n \r\n function alignToFilterInputItemLocation(force) {\r\n let offsetLeft = filterInputElement.offsetLeft;\r\n if (force || filterInputItemOffsetLeft != offsetLeft){ // position changed\r\n popper.update();\r\n filterInputItemOffsetLeft = offsetLeft;\r\n }\r\n }\r\n var componentDisabledEventBinder = EventBinder();\r\n\r\n function showChoices() {\r\n if ( !isChoicesVisible() )\r\n {\r\n eventLoopFlag.set();\r\n setChoicesVisible(true);\r\n \r\n // add listeners that manages close dropdown on input's focusout and click outside container\r\n //container.removeEventListener(\"mousedown\", containerMousedown);\r\n\r\n picksElement.addEventListener(\"mousedown\", skipoutMousedown);\r\n choicesElement.addEventListener(\"mousedown\", skipoutMousedown);\r\n document.addEventListener(\"mouseup\", documentMouseup);\r\n }\r\n }\r\n\r\n function hideChoices() {\r\n resetMouseCandidateChoice();\r\n if (isChoicesVisible())\r\n {\r\n setChoicesVisible(false);\r\n \r\n picksElement.removeEventListener(\"mousedown\", skipoutMousedown);\r\n choicesElement.removeEventListener(\"mousedown\", skipoutMousedown);\r\n document.removeEventListener(\"mouseup\", documentMouseup);\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 popper.destroy();\r\n componentDisabledEventBinder.unbind();\r\n },\r\n alignToFilterInputItemLocation,\r\n \r\n getSkipFocusout : function() {\r\n return skipFocusout;\r\n },\r\n resetSkipFocusout : function() {\r\n skipFocusout=false;\r\n },\r\n disable(isComponentDisabled){\r\n if (isComponentDisabled)\r\n componentDisabledEventBinder.unbind();\r\n else\r\n componentDisabledEventBinder.bind(picksElement,\"click\", event => {\r\n onClick(event);\r\n alignAndShowChoices(event);\r\n }); // OPEN dropdown\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, isOptionHidden){\r\n let choice = {\r\n option: option,\r\n isOptionHidden: isOptionHidden,\r\n\r\n isOptionSelected: isOptionSelected,\r\n isOptionDisabled: isOptionDisabled,\r\n \r\n isHoverIn: false,\r\n\r\n isVisible: false,\r\n visibleIndex: null, \r\n searchText: option.text.toLowerCase().trim(),\r\n\r\n updateDisabled: null,\r\n updateSelected: null,\r\n\r\n // internal state handlers\r\n updateVisible: null,\r\n updateHoverIn: null,\r\n \r\n dispose: null\r\n }\r\n return choice;\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){\r\n let newIsSelected = choice.option.selected;\r\n if (newIsSelected != choice.isOptionSelected)\r\n {\r\n choice.isOptionSelected= newIsSelected;\r\n if (!choice.isOptionHidden)\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 if (!choice.isOptionHidden)\r\n choice.updateDisabled();\r\n }\r\n}\r\n\r\nexport function updateHiddenChoice(choice, getIsOptionHidden){\r\n let newIsOptionHidden = getIsOptionHidden(choice.option);\r\n if (newIsOptionHidden != choice.isOptionHidden)\r\n {\r\n choice.isOptionHidden= newIsOptionHidden;\r\n if (!choice.isOptionHidden)\r\n choice.updateHidden();\r\n }\r\n}\r\n\r\nexport function isVisibleChoice(choice){\r\n return choice.isFilteredIn /*&& !choice.isOptionHidden*/\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 {removeElement} from './ToolsDom'\r\nimport {Choice, isVisibleChoice, updateDisabledChoice, updateSelectedChoice, updateHiddenChoice, setOptionSelected} from './Choice'\r\n\r\nimport {sync, composeSync} from './ToolsJs'\r\n\r\nfunction filterMultiSelectData(choice, isFilteredIn, visibleIndex) {\r\n choice.isFilteredIn = isFilteredIn;\r\n choice.visibleIndex = visibleIndex;\r\n choice.updateVisible();\r\n} \r\n\r\nfunction resetChoices(choicesList) {\r\n for(let i=0; i removeElement(pickElement);\r\n let pickContent = this.pickContentGenerator(pickElement);\r\n \r\n var pick = {\r\n disableRemove: () => pickContent.disableRemove(this.getIsComponentDisabled()),\r\n setData: () => pickContent.setData(choice.option),\r\n disable: () => pickContent.disable( this.getIsOptionDisabled(choice.option) ),\r\n remove: null,\r\n //visible: () => setVisible( !choice.isOptionHidden ),\r\n dispose: () => { \r\n detach(); \r\n pickContent.dispose(); \r\n pick.disableRemove=null; pick.setData=null; pick.disable=null; pick.remove=null; // setVisible=null;\r\n pick.dispose=null; \r\n }, \r\n }\r\n pick.setData();\r\n pick.disableRemove();\r\n //pick.visible();\r\n \r\n attach();\r\n let choiceUpdateDisabledBackup = choice.updateDisabled;\r\n choice.updateDisabled = composeSync(choiceUpdateDisabledBackup, pick.disable);\r\n\r\n //let choiceUpdateVisibleBackup = choice.updateVisible;\r\n //choice.updateVisible = composeSync(choiceUpdateDisabledBackup, pick.visible);\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.updateVisible = choiceUpdateVisibleBackup; \r\n //choice.updateVisible();\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 createChoice(option, i, afterElement){\r\n let isOptionHidden = this.getIsOptionHidden(option);\r\n let isOptionSelected = option.selected;\r\n let isOptionDisabled = this.getIsOptionDisabled(option); \r\n \r\n var choice = Choice(option, isOptionSelected, isOptionDisabled, isOptionHidden);\r\n\r\n if (!isOptionHidden) { \r\n var {choiceElement, setVisible, attach} = this.staticContent.createChoiceElement();\r\n \r\n // choice.delete = () => {\r\n // removeElement(choiceElement);\r\n // }\r\n //choice.choiceElement=choiceElement;\r\n\r\n choice.insertAfter = (option, i) => {\r\n var nextChoice = createChoice(option, i, choiceElement)\r\n return nextChoice;\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.updateSelected = () => {\r\n updateSelectedChoiceContent();\r\n if (choice.isOptionSelected)\r\n pickTools.updateSelectedTrue();\r\n else \r\n pickTools.updateSelectedFalse();\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 choice.visibleIndex = i;\r\n\r\n attach(afterElement);\r\n\r\n choiceContent.setData(choice.option);\r\n \r\n choice.updateHoverIn = () => {\r\n choiceContent.hoverIn(choice.isHoverIn);\r\n }\r\n\r\n choice.updateVisible = () => setVisible(isVisibleChoice(choice))\r\n\r\n // updateHidden\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 choice.insertAfter = null;\r\n choice.updateSelected = null;\r\n choice.updateDisabled = null;\r\n\r\n // not real data manipulation but internal state\r\n choice.updateVisible = 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.updateHoverIn = null;\r\n\r\n choice.dispose = null;\r\n }\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 return choice;\r\n }\r\n\r\n updateDataImpl(){\r\n var fillChoices = () => {\r\n let options = this.getOptions();\r\n for(let i = 0; i 0) {\r\n this.aspect.alignToFilterInputItemLocation(true); // we need it to support case when textbox changes its place because of line break (texbox grow with each key press)\r\n this.aspect.showChoices();\r\n } else {\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.choicesPanel.resetHoveredChoice();\r\n this.aspect.hideChoices();\r\n this.resetFilter();\r\n }\r\n }\r\n }\r\n\r\n keyDownArrow(down) {\r\n let visibleChoices = this.getVisibleChoicesList();\r\n let length = visibleChoices.length;\r\n let iChoice = null;\r\n let hoveredChoice = this.choicesPanel.getHoveredChoice();\r\n if (length > 0) {\r\n if (down) {\r\n let i = hoveredChoice===null?0:hoveredChoice.visibleIndex+1;\r\n while(i=0) {\r\n iChoice = visibleChoices[i];\r\n if (isVisibleChoice(iChoice)) {\r\n break;\r\n }\r\n i--;\r\n }\r\n }\r\n }\r\n \r\n if (iChoice)\r\n {\r\n this.choicesPanel.hoverIn(iChoice);\r\n this.aspect.alignToFilterInputItemLocation(true);\r\n this.aspect.showChoices();\r\n }\r\n }\r\n\r\n init() {\r\n \r\n this.filterPanel = FilterPanel(\r\n this.staticContent.filterInputElement,\r\n () => {\r\n this.staticContent.setIsFocusIn(true)\r\n this.staticContent.toggleFocusStyling();\r\n }, // focus in - show dropdown\r\n () => {\r\n if (!this.aspect.getSkipFocusout()) // skip initiated by mouse click (we manage it different way)\r\n {\r\n this.resetFilter(); // if do not do this we will return to filtered list without text filter in input\r\n this.staticContent.setIsFocusIn(false);\r\n this.staticContent.toggleFocusStyling();\r\n }\r\n this.aspect.resetSkipFocusout();\r\n }, // focus out - hide dropdown\r\n () => this.keyDownArrow(false), // arrow up\r\n () => this.keyDownArrow(true), // arrow down\r\n () => this.aspect.hideChoices(), // tab on empty\r\n () => {\r\n this.picksList.removePicksTail();\r\n this.aspect.alignToFilterInputItemLocation(false);\r\n }, // backspace - \"remove last\"\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.getVisibleChoicesList().length > 0){\r\n this.aspect.alignToFilterInputItemLocation(true);\r\n this.aspect.showChoices();\r\n }\r\n }\r\n },\r\n // tab/enter \"compleate hovered\"\r\n /*stopEscKeyDownPropogation */() => this.staticContent.isChoicesVisible(),\r\n /*onKeyUpEsc*/() => {\r\n this.aspect.hideChoices(); // always hide 1st\r\n this.choicesPanel.resetHoveredChoice();\r\n this.resetFilter();\r\n }, // esc keyup \r\n /*onInput*/(filterInputValue, resetLength) =>\r\n { \r\n this.placeholderAspect.updatePlacehodlerVisibility();\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 this.labelAdapter.init(this.staticContent.filterInputElement); \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 this.choicesPanel = ChoicesPanel(\r\n () => this.aspect.eventLoopFlag\r\n );\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\r\n this.placeholderAspect.updateEmptyInputWidth();\r\n \r\n this.aspect = MultiSelectInputAspect(\r\n this.window,\r\n ()=>this.staticContent.appendToContainer(), \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.getVisibleChoicesList().length==0, \r\n /*onClick*/(event) => {\r\n if (!this.filterPanel.isEventTarget(event))\r\n this.filterPanel.setFocus();\r\n },\r\n this.isRtl,\r\n this.popper\r\n );\r\n \r\n this.staticContent.attachContainer();\r\n\r\n \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 LabelAdapter(labelElement, createInputId){\r\n var backupedForAttribute = null; // state saved between init and dispose\r\n return {\r\n init(filterInputElement) {\r\n if (labelElement) {\r\n backupedForAttribute = labelElement.getAttribute('for');\r\n var newId = createInputId();\r\n filterInputElement.setAttribute('id', newId);\r\n labelElement.setAttribute('for',newId);\r\n }\r\n },\r\n dispose(){\r\n if(backupedForAttribute)\r\n labelElement.setAttribute('for',backupedForAttribute);\r\n }\r\n }\r\n}","import {closestByTagName, closestByClassName, siblingsAsArray} from './ToolsDom';\r\nimport {addStyling} from './ToolsStyling'\r\nimport {ObservableLambda, composeSync} from './ToolsJs';\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\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\nexport function bsAppearance(\r\n multiSelect, \r\n staticContent, \r\n getValidity, \r\n getSize, \r\n validityApiObservable,\r\n useCssPatch, \r\n css){\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 // if (isFocusIn)\r\n // {\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 // } else {\r\n // defToggleFocusStyling(isFocusIn)\r\n // }\r\n // }\r\n // else{\r\n // defToggleFocusStyling(isFocusIn)\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 \r\n var validationObservable = ObservableLambda(\r\n () => wasUpdatedObservable.getValue()?validityApiObservable.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 validityApiObservable.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 \r\n multiSelect.Dispose = composeSync(wasUpdatedObservable.detachAll, validationObservable.detachAll, getManualValidationObservable.detachAll,\r\n multiSelect.Dispose.bind(multiSelect));\r\n}\r\nexport function 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\nexport function composeGetDisabled(selectElement){\r\n var fieldsetElement = closestByTagName(selectElement, 'FIELDSET');\r\n var getDisabled = null;\r\n if (fieldsetElement) {\r\n getDisabled = () => selectElement.disabled || fieldsetElement.disabled;\r\n } else {\r\n getDisabled = () => selectElement.disabled;\r\n }\r\n return getDisabled;\r\n}\r\n\r\nexport function 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\nexport function 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","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}","const transformStyles = [\r\n {old:'selectedPanelDisabledBackgroundColor', opt:'picks_disabled', style:\"backgroundColor\"},\r\n {old:'selectedPanelFocusValidBoxShadow', opt:'picks_focus_valid', style:\"boxShadow\"},\r\n {old:'selectedPanelFocusInvalidBoxShadow', opt:'picks_focus_invalid', style:\"boxShadow\"},\r\n {old:'selectedPanelDefMinHeight', opt:'picks_def', style:\"minHeight\"},\r\n {old:'selectedPanelLgMinHeight', opt:'picks_lg', style:\"minHeight\"},\r\n {old:'selectedPanelSmMinHeight', opt:'picks_sm', style:\"minHeight\"},\r\n {old:'selectedItemContentDisabledOpacity', opt:'choiceLabel_disabled', style:\"opacity\"}\r\n]\r\n\r\nconst transformClasses = [\r\n {old:'dropDownMenuClass', opt:'choices'},\r\n {old:'dropDownItemClass', opt:'choice'},\r\n {old:'dropDownItemHoverClass', opt:'choice_hover'},\r\n {old:'selectedPanelClass', opt:'picks'},\r\n {old:'selectedItemClass', opt:'pick'},\r\n {old:'removeSelectedItemButtonClass', opt:'pickButton'},\r\n {old:'filterInputItemClass', opt:'pickFilter'},\r\n {old:'filterInputClass', opt:'filterInput'},\r\n {old:'selectedPanelFocusClass', opt:'picks_focus'},\r\n {old:'selectedPanelDisabledClass', opt:'picks_disabled'},\r\n {old:'selectedItemContentDisabledClass', opt:'pick_disabled'}\r\n]\r\n\r\nexport function adjustLegacyConfiguration(configuration){\r\n if (!configuration.css)\r\n configuration.css={}\r\n var css =configuration.css;\r\n\r\n if (!configuration.cssPatch)\r\n configuration.cssPatch={}\r\n var cssPatch =configuration.cssPatch;\r\n\r\n if (configuration.selectedPanelFocusBorderColor || configuration.selectedPanelFocusBoxShadow){\r\n console.log(\"DashboarCode.BsMultiSelect: selectedPanelFocusBorderColor and selectedPanelFocusBoxShadow are depricated, use - cssPatch:{picks_focus:{borderColor:'myValue', boxShadow:'myValue'}}\");\r\n if(!cssPatch.picks_focus){\r\n cssPatch.picks_focus = {boxShadow: configuration.selectedPanelFocusBoxShadow, borderColor: configuration.selectedPanelFocusBorderColor}\r\n }\r\n delete configuration.selectedPanelFocusBorderColor;\r\n delete configuration.selectedPanelFocusBoxShadow;\r\n }\r\n\r\n transformStyles.forEach(\r\n (i)=>{\r\n if (configuration[i.old]){\r\n console.log(`DashboarCode.BsMultiSelect: ${i.old} is depricated, use - cssPatch:{${i.opt}:{${i.style}:'myValue'}}`);\r\n if(!configuration[i.opt]){\r\n let opt = {}\r\n opt[i.style] = configuration[i.old]\r\n configuration.cssPatch[i.opt]=opt;\r\n }\r\n delete configuration[i.old];\r\n }\r\n }\r\n )\r\n \r\n transformClasses.forEach( (i) => {\r\n if (configuration[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]= configuration[i.old]\r\n }\r\n delete configuration[i.old];\r\n }\r\n })\r\n \r\n if (configuration.inputColor){\r\n console.log(\"DashboarCode.BsMultiSelect: inputColor is depricated, remove parameter\");\r\n delete configuration.inputColor;\r\n }\r\n\r\n if (configuration.useCss){\r\n console.log(\"DashboarCode.BsMultiSelect: useCss(=true) is depricated, use - 'useCssPatch: false'\");\r\n if(!css.pick_disabled){\r\n configuration.useCssPatch = !configuration.useCss\r\n }\r\n delete configuration.useCss;\r\n } \r\n\r\n if (configuration.getIsValid || configuration.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} 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 (choiceElement === event.target || choiceElement.contains(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, AttributeBackup} from './ToolsDom';\r\nimport {addStyling, toggleStyling} from './ToolsStyling';\r\n\r\nexport function staticContentGenerator(element, createElement, containerClass, forceRtlOnContainer, css) { \r\n var selectElement = null;\r\n var containerElement = null;\r\n var picksElement = null;\r\n var ownPicksElement = false;\r\n if (element.tagName=='SELECT'){\r\n selectElement = element;\r\n if (containerClass){\r\n //if (selectElement.nextSibling && selectElement.nextSibling.classList.contains(containerClass) )\r\n // containerElement = selectElement.nextSibling;\r\n //else \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 element.style.backgroundColor = 'red';\r\n element.style.color = 'white';\r\n throw new Error('BsMultiSelect: definde on UL but container parent not found');\r\n }\r\n }\r\n } \r\n else \r\n {\r\n element.style.backgroundColor = 'red';\r\n element.style.color = 'white';\r\n throw new Error('BsMultiSelect: Only DIV and SELECT supported');\r\n }\r\n\r\n\r\n if (containerElement)\r\n picksElement = findDirectChildByTagName(containerElement, 'UL');\r\n if (!picksElement){\r\n picksElement = createElement('UL');\r\n ownPicksElement = true;\r\n }\r\n \r\n var createPickElement = () => {\r\n var pickElement = createElement('LI');\r\n addStyling(pickElement, css.pick);\r\n return {\r\n pickElement, \r\n //setVisible: (isVisible) => pickElement.style.display = isVisible ? 'block': 'none' //,\r\n attach: () => \r\n picksElement.insertBefore(pickElement, pickFilterElement)\r\n };\r\n }\r\n\r\n var 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) => \r\n { \r\n if (element)\r\n element.parentNode.insertBefore(choiceElement, element.nextSibling);\r\n else\r\n choicesElement.appendChild(choiceElement);\r\n }\r\n };\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 var attributeBackup = AttributeBackup();\r\n if (forceRtlOnContainer){\r\n attributeBackup.set(containerElement, \"dir\", \"rtl\");\r\n }\r\n else if (selectElement){\r\n var dirAttributeValue = selectElement.getAttribute(\"dir\");\r\n if (dirAttributeValue){\r\n attributeBackup.set(containerElement, \"dir\", dirAttributeValue);\r\n }\r\n } \r\n\r\n var choicesElement = createElement('UL');\r\n choicesElement.style.display = 'none';\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 pickFilterElement = createElement('LI');\r\n var filterInputElement = createElement('INPUT');\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 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 var createInputId = null;\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 let isFocusIn = false;\r\n let disableToggleStyling = toggleStyling(picksElement, css.picks_disabled);\r\n let focusToggleStyling = toggleStyling(picksElement, css.picks_focus);\r\n return {\r\n initialElement:element,\r\n selectElement, \r\n containerElement,\r\n picksElement,\r\n createPickElement,\r\n choicesElement,\r\n createChoiceElement,\r\n pickFilterElement,\r\n filterInputElement,\r\n createInputId,\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 else\r\n attributeBackup.restore();\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 BsPickContentStylingCorrector\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 BsChoiceContentStylingCorrector\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: 'initial'}, // 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 {LabelAdapter} from './LabelAdapter';\r\n\r\nimport {bsAppearance, getLabelElement, composeGetValidity, composeGetDisabled, composeGetSize} from './BsAppearance';\r\nimport {ValidityApi} from './ValidityApi'\r\n\r\nimport {getDataGuardedWithPrefix, EventBinder, closestByTagName, getIsRtl} from './ToolsDom';\r\n\r\nimport {createCss, extendCss} from './ToolsStyling';\r\nimport {extendOverriding, extendIfUndefined, composeSync, ObservableValue, ObservableLambda, def, defCall, isBoolean} from './ToolsJs';\r\n\r\nimport {adjustLegacyConfiguration as 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, cssPatch} from './BsCss'\r\n\r\nconst defValueMissingMessage = 'Please select an item in the list'\r\n\r\nexport const defaults = {\r\n useCssPatch : true,\r\n containerClass : \"dashboardcode-bsmultiselect\",\r\n css: css,\r\n cssPatch: cssPatch,\r\n label: null,\r\n placeholder: '',\r\n staticContentGenerator : null, \r\n pickContentGenerator: null, \r\n choiceContentGenerator : null, \r\n buildConfiguration: null,\r\n isRtl: null,\r\n setSelected: null,\r\n required: null, /* null means look on select[required] or false if jso-source */\r\n common: null,\r\n options: null,\r\n getIsOptionDisabled: null,\r\n getIsOptionHidden: null,\r\n\r\n getDisabled: null,\r\n getSize: null,\r\n getValidity: null,\r\n \r\n valueMissingMessage: '',\r\n getIsValueMissing: null\r\n};\r\n\r\nfunction extendConfigurtion(configuration, defaults){\r\n let cfgCss = configuration.css;\r\n let cfgCssPatch = configuration.cssPatch;\r\n configuration.css = null;\r\n configuration.cssPatch = null;\r\n extendIfUndefined(configuration, defaults); \r\n var defCss = createCss(defaults.css, cfgCss); // replace classes, merge styles\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.css = defCss;\r\n configuration.cssPatch = defCssPatch;\r\n}\r\n\r\nexport function BsMultiSelect(element, environment, settings){\r\n var {Popper, window} = environment;\r\n var trigger = (eventName)=> environment.trigger(element, eventName);\r\n if (typeof Popper === 'undefined') {\r\n throw new Error(\"BsMultiSelect: Popper.js (https://popper.js.org) is required\")\r\n }\r\n\r\n let configuration = {};\r\n let init = null;\r\n if (settings instanceof Function){\r\n extendConfigurtion(configuration, defaults);\r\n init = settings(element, configuration);\r\n }\r\n else\r\n { \r\n if (settings){\r\n adjustLegacySettings(settings); \r\n extendOverriding(configuration, settings); // settings used per jQuery intialization, configuration per element\r\n }\r\n extendConfigurtion(configuration, defaults);\r\n }\r\n \r\n if (configuration.buildConfiguration)\r\n init = configuration.buildConfiguration(element, configuration);\r\n \r\n let {\r\n css, cssPatch, useCssPatch,\r\n containerClass, label, isRtl, required,\r\n getIsValueMissing, setSelected, placeholder, \r\n common,\r\n options, getDisabled, getValidity, getSize,\r\n getIsOptionDisabled, getIsOptionHidden\r\n } = configuration;\r\n\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 let valueMissingMessage = defCall(configuration.valueMissingMessage,\r\n ()=> getDataGuardedWithPrefix(element,\"bsmultiselect\",\"value-missing-message\"),\r\n defValueMissingMessage)\r\n\r\n let forceRtlOnContainer = false; \r\n if (isBoolean(isRtl))\r\n forceRtlOnContainer = true;\r\n else\r\n isRtl = getIsRtl(element);\r\n\r\n let staticContent = staticContentGenerator(\r\n element, name=>window.document.createElement(name), containerClass, forceRtlOnContainer, css\r\n );\r\n \r\n required = def(required, staticContent.required);\r\n\r\n let lazyDefinedEvent;\r\n\r\n let onChange;\r\n let getOptions;\r\n \r\n if (options){\r\n if (!getValidity)\r\n getValidity = () => null\r\n if (!getDisabled)\r\n getDisabled = () => false;\r\n if (!getSize)\r\n getSize = () => null;\r\n getOptions = () => options,\r\n onChange = () => {\r\n lazyDefinedEvent()\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 if (!getIsOptionHidden)\r\n getIsOptionHidden = (option)=>(option.hidden===undefined)?false:option.hidden; \r\n } \r\n else \r\n {\r\n let selectElement = staticContent.selectElement;\r\n if(!getValidity)\r\n getValidity = composeGetValidity(selectElement);\r\n \r\n if(!getDisabled) \r\n getDisabled = composeGetDisabled(selectElement);\r\n\r\n if(!getSize) \r\n getSize = composeGetSize(selectElement);\r\n\r\n getOptions = ()=>selectElement.options, //.getElementsByTagName('OPTION'), \r\n onChange = () => {\r\n lazyDefinedEvent()\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 if (!getIsOptionHidden)\r\n getIsOptionHidden = (option)=>option.hidden; \r\n }\r\n\r\n\r\n if (!getIsValueMissing){\r\n getIsValueMissing = () => {\r\n let count = 0;\r\n let optionsArray = 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 var isValueMissingObservable = ObservableLambda(()=>required && getIsValueMissing());\r\n var validationApiObservable = ObservableValue(!isValueMissingObservable.getValue())\r\n lazyDefinedEvent = () => isValueMissingObservable.call();\r\n\r\n let labelElement = defCall(label);\r\n if (!labelElement) \r\n labelElement=getLabelElement(staticContent.selectElement); \r\n let labelAdapter = LabelAdapter(labelElement, staticContent.createInputId);\r\n\r\n if (!placeholder)\r\n {\r\n placeholder = getDataGuardedWithPrefix(element,\"bsmultiselect\",\"placeholder\");\r\n }\r\n\r\n\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 var validationApi = ValidityApi(\r\n staticContent.filterInputElement, \r\n isValueMissingObservable, \r\n valueMissingMessage,\r\n (isValid)=>validationApiObservable.setValue(isValid));\r\n\r\n \r\n if (!common){\r\n common = {\r\n getDisabled,\r\n getValidity,\r\n getSize,\r\n }\r\n }\r\n\r\n var multiSelect = new MultiSelect(\r\n getOptions,\r\n common,\r\n getDisabled,\r\n setSelected,\r\n getIsOptionDisabled,\r\n getIsOptionHidden,\r\n staticContent,\r\n (pickElement) => pickContentGenerator(pickElement, common, css),\r\n (choiceElement, toggle) => choiceContentGenerator(choiceElement, common, css, toggle),\r\n labelAdapter,\r\n placeholder,\r\n isRtl,\r\n onChange,\r\n css,\r\n Popper,\r\n window);\r\n\r\n var resetDispose=null;\r\n if (staticContent.selectElement){\r\n var form = closestByTagName(staticContent.selectElement, 'FORM');\r\n if (form) {\r\n var eventBuilder = EventBinder();\r\n eventBuilder.bind(form, \r\n 'reset', \r\n () => window.setTimeout( ()=>multiSelect.UpdateData() ) );\r\n resetDispose = ()=>eventBuilder.unbind();\r\n }\r\n }\r\n \r\n multiSelect.Dispose = composeSync(multiSelect.Dispose.bind(multiSelect), isValueMissingObservable.detachAll, validationApiObservable.detachAll, resetDispose);\r\n multiSelect.validationApi = validationApi;\r\n \r\n bsAppearance(\r\n multiSelect, staticContent, getValidity, getSize,\r\n validationApiObservable,\r\n useCssPatch, css);\r\n \r\n if (init && init instanceof Function)\r\n init(multiSelect);\r\n \r\n multiSelect.init();\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}","import $ from 'jquery'\r\nimport Popper from 'popper.js'\r\n\r\nimport {addToJQueryPrototype} from './AddToJQueryPrototype'\r\nimport {BsMultiSelect, defaults} from './BsMultiSelect';\r\nimport {composeSync} from './ToolsJs';\r\n\r\n(\r\n (window, $, Popper) => {\r\n let createPlugin = (element, settings, removeInstanceData) => { \r\n let trigger = (e, eventName) => $(e).trigger(eventName);\r\n let environment = {trigger, window, Popper}\r\n let multiSelect = BsMultiSelect(element, environment, settings);\r\n multiSelect.Dispose = composeSync(multiSelect.Dispose, removeInstanceData);\r\n return multiSelect;\r\n }\r\n addToJQueryPrototype('BsMultiSelect', createPlugin, defaults, $);\r\n }\r\n)(window, $, Popper)\r\n"],"names":["addToJQueryPrototype","pluginName","createPlugin","defaults","$","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","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","stopEscKeyDownPropogation","onKeyUpEsc","onInput","isEmpty","onfilterInputKeyDown","event","keyCode","which","empty","indexOf","preventDefault","stopPropagation","onFilterInputKeyUp","onFilterInputInput","filterInputValue","style","width","eventBinder","setEmpty","setFocus","focus","isEventTarget","target","dispose","ChoicesPanel","hoveredChoice","resetHoveredChoice","isHoverIn","updateHoverIn","item","getHoveredChoice","hoverIn","choice","isBoolean","isString","String","extendIfUndefined","destination","source","property","undefined","extendOverriding","shallowClearClone","v","sources","s","hasOwnProperty","forEachRecursion","f","prev","List","tail","count","add","next","node","remove","getTail","getCount","reset","composeSync","functions","sync","def","defCall","ObservableValue","getValue","setValue","newValue","attach","detachAll","ObservableLambda","func","call","PicksList","addPick","pick","removeFromList","removePicksTail","disableRemoveAll","disableRemove","removeAll","clear","MultiSelectInputAspect","appendToContainer","picksElement","choicesElement","isChoicesVisible","setChoicesVisible","resetFilter","isChoiceEmpty","onClick","Popper","document","eventLoopFlag","skipFocusout","skipoutMousedown","documentMouseup","hideChoices","popper","placement","modifiers","preventOverflow","enabled","hide","flip","filterInputItemOffsetLeft","preventDefaultClickEvent","alignAndShowChoices","alignToFilterInputItemLocation","showChoices","force","offsetLeft","update","componentDisabledEventBinder","resetMouseCandidateChoice","processUncheck","uncheckOption","handleOnRemoveButton","onRemove","setSelectedFalse","processRemoveButtonClick","mouseCandidateEventBinder","mouseOverToHoveredAndReset","adoptChoiceElement","choiceElement","onChoiceElementMouseover","onChoiceElementMouseleave","overAndLeaveEventBinder","destroy","getSkipFocusout","resetSkipFocusout","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","isOptionHidden","visibleIndex","searchText","text","trim","updateDisabled","updateSelected","updateVisible","setOptionSelected","setSelected","confirmed","updateSelectedChoice","newIsSelected","selected","updateDisabledChoice","getIsOptionDisabled","newIsDisabled","updateHiddenChoice","getIsOptionHidden","newIsOptionHidden","updateHidden","isVisibleChoice","isFilteredIn","filterMultiSelectData","resetChoices","choicesList","collectFilterChoices","j","MultiSelect","getOptions","common","getIsComponentDisabled","staticContent","pickContentGenerator","choiceContentGenerator","labelAdapter","onChange","visibleCount","choicesPanel","stylingComposite","resetChoicesList","toggleOptionSelected","filteredChoicesList","getVisibleChoicesList","filterPanel","placeholderAspect","processEmptyInput","GetContainer","containerElement","GetChoices","GetFilterInput","Update","UpdateAppearance","UpdateData","DeselectAll","aspect","picksList","PicksCount","SelectAll","innerHTML","updateDataImpl","UpdateOptionsDisabled","UpdateOptionDisabled","key","UpdateOptionsSelected","UpdateOptionSelected","SetOptionSelected","UpdateOptionsHidden","UpdateOptionHidden","createPick","createPickElement","pickElement","detach","pickContent","setData","choiceUpdateDisabledBackup","removePick","createChoice","afterElement","createChoiceElement","setVisible","insertAfter","nextChoice","choiceContent","updateSelectedChoiceContent","select","pickTools","updateSelectedTrue","updateSelectedFalse","unbindChoiceElement","fillChoices","readyState","domContentLoadedHandler","Dispose","UpdateDisabled","input","resetLength","fullMatchChoice","hoveredToSelected","wasToggled","keyDownArrow","down","visibleChoices","iChoice","init","setIsFocusIn","toggleFocusStyling","pickFilterElement","appendChild","visible","attachContainer","LabelAdapter","labelElement","createInputId","backupedForAttribute","newId","updateValidity","validMessages","invalidMessages","validity","map","updateSize","size","updateSizeJs","picksLgStyling","picksSmStyling","picksDefStyling","updateSizeForAdapter","getSize","updateSizeJsForAdapter","getMessagesElements","siblings","filter","bsAppearance","multiSelect","getValidity","validityApiObservable","useCssPatch","picks_lg","picks_sm","picks_def","UpdateSize","defToggleFocusStyling","validationObservable","isFocusIn","getIsFocusIn","picks_focus_invalid","picks_focus_valid","getWasValidated","wasValidatedElement","initialElement","wasUpdatedObservable","getManualValidationObservable","UpdateValidity","UpdateWasValidated","composeGetValidity","selectElement","composeGetDisabled","fieldsetElement","getDisabled","composeGetSize","inputGroupElement","getLabelElement","formGroup","querySelector","id","createValidity","valueMissing","customError","valid","ValidityApi","visibleElement","isValueMissingObservable","valueMissingMessage","onValid","customValidationMessage","validationMessage","willValidate","setMessage","setCustomValidity","message","checkValidity","trigger","reportValidity","transformStyles","old","opt","transformClasses","adjustLegacyConfiguration","configuration","cssPatch","selectedPanelFocusBorderColor","selectedPanelFocusBoxShadow","console","log","picks_focus","boxShadow","borderColor","inputColor","useCss","pick_disabled","getIsValid","getIsInValid","pickContentElement","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","forceRtlOnContainer","ownPicksElement","backgroundColor","color","insertBefore","nextSibling","ownContainerElement","attributeBackup","dirAttributeValue","backupDisplay","required","backupedRequired","picks","choices","pickFilter","filterInput","picks_disabled","focusToggleStyling","newIsFocusIn","listStyleType","flexWrap","height","marginBottom","border","padding","margin","outline","backgroundImage","minHeight","paddingLeft","lineHeight","fontSize","float","opacity","justifyContent","defValueMissingMessage","label","buildConfiguration","getIsValueMissing","extendConfigurtion","cfgCss","cfgCssPatch","defCss","Boolean","defCssPatch","BsMultiSelect","environment","settings","adjustLegacySettings","defStaticContentGenerator","defPickContentGenerator","defChoiceContentGenerator","lazyDefinedEvent","hidden","optionsArray","validationApiObservable","validationApi","isValid","resetDispose","form","eventBuilder","removeInstanceData"],"mappings":"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"}