Your IP : 3.129.25.143


Current Path : /var/www/admin_ftp_12/data/www/httpdocs/bitrix/js/ui/select/dist/
Upload File :
Current File : /var/www/admin_ftp_12/data/www/httpdocs/bitrix/js/ui/select/dist/select.bundle.js.map

{"version":3,"file":"select.bundle.js","sources":["../src/select.js"],"sourcesContent":["import {Type, Dom, Tag, Loc} from 'main.core';\nimport {EventEmitter} from 'main.core.events';\nimport {Menu, Popup, MenuItemOptions, PopupOptions} from 'main.popup';\nimport './select.css';\nimport 'ui.'\n\nexport type SelectOption = {\n\tlabel: string;\n\tvalue: string;\n}\n\nexport type SelectOptions = {\n\toptions: SelectOption[];\n\tvalue: string;\n\tplaceholder: string;\n\tisSearchable: boolean;\n\tcontainerClassname: string;\n\tpopupParams: PopupOptions;\n}\n\nconst ScrollDirection = Object.freeze({\n\tTOP: -1,\n\tBOTTOM: 1,\n\tNONE: 0,\n})\n\nexport class Select extends EventEmitter\n{\n\t#placeholder: string = '';\n\t#isSearchable: boolean = false;\n\t#isSearching: boolean = false;\n\t#searchValue: string = '';\n\t#selectedOption: SelectOption | null = null;\n\t#options: SelectOption[] = [];\n\t#container: HTMLElement | null = null;\n\t#containerClassname: string = '';\n\t#menu: Menu | null = null;\n\t#emptySearchPopup: Popup | null = null;\n\t#highlightedOptionIndex: number = 0;\n\t#popupParams: PopupOptions = {};\n\n\tconstructor(options: SelectOptions)\n\t{\n\t\tsuper();\n\t\tthis.setEventNamespace('BX.UI.Select');\n\t\tthis.#placeholder = Type.isString(options.placeholder) ? options.placeholder : '';\n\t\tthis.#isSearchable =  options.isSearchable === true || false;\n\t\tthis.#options = Array.isArray(options.options) ? options.options : [];\n\t\tthis.#popupParams = Type.isPlainObject(options.popupParams) ? options.popupParams : {};\n\t\tthis.#selectedOption = this.#findOptionByValue(options.value) || null;\n\t\tthis.#containerClassname = Type.isString(options?.containerClassname) ? options.containerClassname : '';\n\t\tthis.#highlightedOptionIndex = this.#getOptionIndex(this.#selectedOption?.value) || 0;\n\t\tthis.#renderContainer();\n\t}\n\n\trenderTo(targetContainer: HTMLElement): HTMLElement | null\n\t{\n\t\tif (Type.isDomNode(targetContainer))\n\t\t{\n\t\t\tDom.clean(targetContainer);\n\t\t\tthis.#renderContainer();\n\t\t\tDom.append(this.#container, targetContainer);\n\n\t\t\treturn targetContainer;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t#renderContainer(): HTMLElement\n\t{\n\t\tthis.#container = Tag.render`\n\t\t\t<div class=\"${this.#getContainerClassname()}\">\n\t\t\t\t<div class=\"ui-ctl-after ui-ctl-icon-angle\"></div>\n\t\t\t\t<input\n\t\t\t\t\tclass=\"ui-ctl-element\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tplaceholder=\"${this.#placeholder}\"\n\t\t\t\t\t${this.#isInputReadonly() ? 'readonly' : ''}\n\t\t\t\t\tvalue=\"${this.#selectedOption?.label || ''}\"\n\t\t\t\t\toninput=\"${(e) => { this.#handleInput(e)}}\"\n\t\t\t\t\tonfocus=\"${(e) => { this.#handleFocus(e) }}\"\n\t\t\t\t\tonblur=\"${(e) => {this.#handleBlur(e) }}\"\n\t\t\t\t\tonmouseup=\"${(e) => {this.#handleInputClick(e) }}\"\n\t\t\t\t\tonkeydown=\"${(e) => {this.#handleKeyDown(e) }}\"\n\t\t\t\t>\n\t\t\t</div>\n\t\t`;\n\n\t\treturn this.#container;\n\t}\n\n\t#isInputReadonly(): boolean\n\t{\n\t\treturn !this.#isSearchable || (!this.isMenuShown() && !this.#emptySearchPopup);\n\t}\n\n\t#handleInputClick(): void\n\t{\n\t\tif (this.getInput() === document.activeElement)\n\t\t{\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.showMenu();\n\t\t\t}, 100);\n\t\t}\n\t}\n\n\tshowMenu(): void\n\t{\n\t\tif (!this.#menu)\n\t\t{\n\t\t\tthis.#createMenu();\n\t\t}\n\n\t\tthis.#menu.show();\n\t\tthis.#updateMenu();\n\t}\n\n\t#createMenu(): Menu\n\t{\n\t\tconst {width} = Dom.getPosition(this.#container);\n\t\tconst events = this.#popupParams?.events ? this.#popupParams?.events : {};\n\t\tthis.#menu = new Menu({\n\t\t\twidth,\n\t\t\tbindElement: this.#container,\n\t\t\titems: this.#getMenuItems(),\n\t\t\tcloseByEsc: true,\n\t\t\tclassName: 'select-menu-popup',\n\t\t\t...this.#popupParams,\n\t\t\tevents: {\n\t\t\t\t...events,\n\t\t\t\tonAfterClose: () => {\n\t\t\t\t\tif (!this.#emptySearchPopup)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.#searchValue = '';\n\t\t\t\t\t\tthis.#setSelectedOption(this.#selectedOption);\n\t\t\t\t\t\tthis.#updateSelect();\n\t\t\t\t\t\tif (events.onAfterClose)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tevents.onAfterClose();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\n\t\treturn this.#menu;\n\t}\n\n\thideMenu(): void\n\t{\n\t\tif (this.#menu)\n\t\t{\n\t\t\tthis.#menu.close();\n\t\t}\n\t}\n\n\t#getMenuItems(): MenuItemOptions[]\n\t{\n\t\tif (this.#isSearching)\n\t\t{\n\t\t\treturn this.#getFilteredOptions()\n\t\t\t\t.map((option, index) => {\n\t\t\t\t\t\treturn this.#getMenuItemFromOption(option, index === this.#highlightedOptionIndex)\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn this.#options\n\t\t\t\t.map((option, index) => {\n\t\t\t\t\t\treturn this.#getMenuItemFromOption(option, index === this.#highlightedOptionIndex)\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t}\n\t}\n\n\t#handleInput(e): void\n\t{\n\t\te.preventDefault();\n\t\tthis.#highlightedOptionIndex = 0;\n\t\tthis.#isSearching = true;\n\t\tthis.#searchValue = e.target.value;\n\t\tthis.#updateMenu();\n\t}\n\n\t#handleKeyDown(e): void\n\t{\n\t\tconst {keyCode} = e;\n\t\tconst arrowUpKeyCode = 38;\n\t\tconst arrowDownKeyCode = 40;\n\t\tconst enterKeyCode = 13;\n\t\tconst spaceKeyCode = 32;\n\n\t\tswitch (keyCode)\n\t\t{\n\t\t\tcase enterKeyCode: this.#handleEnterKey(e); break;\n\t\t\tcase spaceKeyCode: this.#handleSpaceKey(e); break;\n\t\t\tcase arrowUpKeyCode: this.#handleArrowUpKey(e); break;\n\t\t\tcase arrowDownKeyCode: this.#handleArrowDownKey(e); break;\n\t\t}\n\t}\n\n\t#handleSpaceKey(e): void\n\t{\n\t\tif (!this.isMenuShown() && !this.#emptySearchPopup)\n\t\t{\n\t\t\te.preventDefault();\n\t\t\tthis.showMenu();\n\t\t\tthis.#updateSelect();\n\t\t}\n\t}\n\n\t#handleArrowUpKey(e): void\n\t{\n\t\te.preventDefault();\n\t\tif (!this.isMenuShown() || this.#highlightedOptionIndex === 0)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#highlightedOptionIndex--;\n\n\t\tthis.#scrollToHighlightedItem();\n\t\tthis.#highlightOption(this.#highlightedOptionIndex);\n\t}\n\n\t#handleArrowDownKey(e): void\n\t{\n\t\te.preventDefault();\n\t\tif (!this.isMenuShown() || this.#highlightedOptionIndex === this.#getMenuItems().length - 1)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#highlightedOptionIndex++;\n\t\tthis.#scrollToHighlightedItem();\n\t\tthis.#highlightOption(this.#highlightedOptionIndex);\n\t}\n\n\t#handleEnterKey(e): void\n\t{\n\t\te.preventDefault();\n\t\tconst options = this.#getFilteredOptions();\n\t\tthis.#selectedOption = options[this.#highlightedOptionIndex];\n\t\tthis.hideMenu();\n\t}\n\n\t#updateMenu(): void\n\t{\n\t\tif (!this.#menu)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#options.forEach(({value}) => {\n\t\t\tthis.#menu.removeMenuItem(value, {\n\t\t\t\tdestroyEmptyPopup: false,\n\t\t\t});\n\t\t});\n\n\t\tconst filteredOptions = this.#getFilteredOptions(this.#searchValue);\n\t\tif (filteredOptions.length)\n\t\t{\n\t\t\tif (!this.isMenuShown())\n\t\t\t{\n\t\t\t\tthis.showMenu();\n\t\t\t}\n\t\t\tthis.#hideEmptySearchPopup();\n\t\t\tfilteredOptions.forEach((option, index) => {\n\t\t\t\tthis.#menu.addMenuItem(this.#getMenuItemFromOption(option, index === this.#highlightedOptionIndex), null);\n\t\t\t});\n\n\t\t\tthis.#scrollToHighlightedItem();\n\t\t\tthis.#highlightOption(this.#highlightedOptionIndex);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.#showEmptySearchPopup();\n\t\t\tthis.hideMenu();\n\t\t}\n\t}\n\n\t#getMenuItemFromOption(option, isHoverOption: boolean = false): MenuItemOptions\n\t{\n\t\tconst isHover = isHoverOption === true;\n\t\tconst className = `ui-select__menu-item menu-popup-no-icon ${isHover ? 'menu-popup-item-open' : ''}`;\n\t\treturn ({\n\t\t\tid: option.value,\n\t\t\ttext: option.label,\n\t\t\tonclick: () => {\n\t\t\t\tthis.#selectedOption = option;\n\t\t\t},\n\t\t\tclassName,\n\t\t});\n\t}\n\n\t#getFilteredOptions(): SelectOption[]\n\t{\n\t\treturn this.#options.filter(this.#getOptionFilter(this.#searchValue));\n\t}\n\n\t#getOptionFilter(searchStr): (option: SelectOption) => boolean\n\t{\n\t\tconst lowerCaseSearchStr = Type.isString(searchStr) ? searchStr.toLowerCase() : '';\n\t\treturn (option) => {\n\t\t\tconst lowerCaseOptionLabel = option.label.toLowerCase();\n\t\t\treturn lowerCaseOptionLabel.indexOf(lowerCaseSearchStr) === 0;\n\t\t};\n\t}\n\n\t#showEmptySearchPopup(): void\n\t{\n\t\tif (!this.#emptySearchPopup || !this.#emptySearchPopup?.isShown())\n\t\t{\n\t\t\tconst {width} = Dom.getPosition(this.#container);\n\t\t\tconst events = this.#popupParams?.events ? this.#popupParams.events : {};\n\n\t\t\tthis.#emptySearchPopup = new Popup({\n\t\t\t\twidth,\n\t\t\t\tbindElement: this.#container,\n\t\t\t\tcontent: Loc.getMessage('UI_SELECT_NOTHING_FOUND'),\n\t\t\t\tcloseByEsc: true,\n\t\t\t\t...this.#popupParams,\n\t\t\t\tevents: {\n\t\t\t\t\t...events,\n\t\t\t\t\tonAfterClose: () => {\n\t\t\t\t\t\tthis.#emptySearchPopup = null;\n\t\t\t\t\t\tthis.#setSelectedOption(this.#selectedOption);\n\t\t\t\t\t\tif (!this.isMenuShown())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.#searchValue = '';\n\t\t\t\t\t\t\tthis.#updateSelect();\n\t\t\t\t\t\t\tif (events.onAfterClose)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tevents.onAfterClose();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.#emptySearchPopup.show();\n\t\t}\n\t}\n\n\t#hideEmptySearchPopup(): void\n\t{\n\t\tif (this.#emptySearchPopup)\n\t\t{\n\t\t\tthis.#emptySearchPopup.destroy();\n\t\t\tthis.#emptySearchPopup = null;\n\t\t}\n\t}\n\n\t#setSelectedOption(option: SelectOption): void\n\t{\n\t\tif (!option)\n\t\t{\n\t\t\tthis.#selectedOption = null;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.emit('update', option.value);\n\t\tthis.#searchValue = '';\n\t\tconst input = this.getInput();\n\t\tinput.value = option.label;\n\t\tthis.#highlightedOptionIndex = this.#getOptionIndex(option.value);\n\t\tthis.#selectedOption = option;\n\t}\n\n\tgetInput(): HTMLElement | null\n\t{\n\t\treturn this.#container.querySelector('input');\n\t}\n\n\tgetValue(): string\n\t{\n\t\treturn this.#selectedOption?.value || '';\n\t}\n\n\tsetValue(value: string): void\n\t{\n\t\tconst option = this.#findOptionByValue(value);\n\t\tthis.#setSelectedOption(option);\n\t}\n\n\t#findOptionByValue(value: string): SelectOption | null\n\t{\n\t\treturn this.#options.find((option) => {\n\t\t\treturn option.value === value;\n\t\t});\n\t}\n\n\t#highlightOption(optionIndex: number): void\n\t{\n\t\tif (!this.#menu)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst menuItems = this.#menu.itemsContainer.children;\n\n\t\tfor (let i = 0; i < menuItems.length; i++)\n\t\t{\n\t\t\tconst item = menuItems.item(i);\n\t\t\tDom.removeClass(item, 'menu-popup-item-open');\n\t\t\tif (i === optionIndex)\n\t\t\t{\n\t\t\t\tDom.addClass(item, 'menu-popup-item-open');\n\t\t\t}\n\t\t}\n\t}\n\n\t#scrollToHighlightedItem(): void\n\t{\n\t\tconst popupContent: HTMLElement = this.#menu.getPopupWindow().getContentContainer();\n\t\tconst menuItems: HTMLCollection = this.#menu.itemsContainer.children;\n\t\tconst highlightedItem = menuItems.item(this.#highlightedOptionIndex);\n\n\t\tconst {\n\t\t\theight: popupContentHeight,\n\t\t} = Dom.getPosition(popupContent);\n\n\t\tconst {\n\t\t\theight: highlightedItemHeight,\n\t\t} = Dom.getPosition(highlightedItem);\n\n\t\tconst direction = this.#getScrollDirectionToHighlightedItem(popupContent, highlightedItem);\n\n\t\tif (direction !== ScrollDirection.NONE)\n\t\t{\n\t\t\tpopupContent.scroll({\n\t\t\t\tleft: 0,\n\t\t\t\ttop: (highlightedItemHeight * (this.#highlightedOptionIndex) + direction * popupContentHeight),\n\t\t\t\tbehavior: \"smooth\",\n\t\t\t});\n\t\t}\n\t}\n\n\t#getScrollDirectionToHighlightedItem(popupContent: HTMLElement, highlightedItem: HTMLElement): number\n\t{\n\t\tconst {\n\t\t\tbottom: popupContentBottom,\n\t\t\ttop: popupContentTop\n\t\t} = Dom.getPosition(popupContent);\n\n\t\tconst {\n\t\t\tbottom: highlightedItemBottom,\n\t\t\ttop: highlightedItemTop\n\t\t} = Dom.getPosition(highlightedItem);\n\n\t\tif (popupContentTop > highlightedItemTop)\n\t\t{\n\t\t\treturn ScrollDirection.TOP;\n\t\t}\n\t\telse if (popupContentBottom < highlightedItemBottom)\n\t\t{\n\t\t\treturn ScrollDirection.BOTTOM;\n\t\t}\n\t\telse {\n\t\t\treturn ScrollDirection.NONE;\n\t\t}\n\t}\n\n\t#getOptionIndex(optionValue: string): number\n\t{\n\t\treturn this.#options.findIndex((option) => {\n\t\t\treturn option.value === optionValue;\n\t\t});\n\t}\n\n\tisMenuShown(): boolean\n\t{\n\t\treturn this.#menu && this.#menu.getPopupWindow().isShown();\n\t}\n\n\t#handleBlur(): void\n\t{\n\t\tthis.hideMenu();\n\t\tthis.#hideEmptySearchPopup();\n\t}\n\n\t#handleFocus(e): void\n\t{\n\t\tsetTimeout(() => {\n\t\t\tthis.showMenu();\n\t\t\tthis.#updateSelect();\n\t\t}, 100);\n\t\te.preventDefault();\n\t}\n\n\t#updateSelect(): void\n\t{\n\t\tthis.#updateInput();\n\t\tthis.#updateContainerClassname();\n\t}\n\n\t#updateInput(): void\n\t{\n\t\tconst input = this.getInput();\n\n\t\tif (this.#isInputReadonly())\n\t\t{\n\t\t\tinput.setAttribute('readonly', 'readonly');\n\t\t}\n\t\telse\n\t\t{\n\t\t\tinput.removeAttribute('readonly');\n\t\t}\n\t}\n\n\t#updateContainerClassname(): void\n\t{\n\t\tthis.#container.className = this.#getContainerClassname();\n\t}\n\n\t#getContainerClassname(): string\n\t{\n\t\tconst openMenuClassnameModifier = this.isMenuShown() || this.#emptySearchPopup ? '--open' : '';\n\t\treturn `ui-select ui-ctl ui-ctl-after-icon ui-ctl-dropdown ${this.#containerClassname} ${openMenuClassnameModifier}`;\n\t}\n}"],"names":["ScrollDirection","Object","freeze","TOP","BOTTOM","NONE","Select","EventEmitter","constructor","options","setEventNamespace","Type","isString","placeholder","isSearchable","Array","isArray","isPlainObject","popupParams","value","containerClassname","renderTo","targetContainer","isDomNode","Dom","clean","append","showMenu","show","hideMenu","close","getInput","querySelector","getValue","setValue","option","isMenuShown","getPopupWindow","isShown","Tag","render","label","e","document","activeElement","setTimeout","width","getPosition","events","Menu","bindElement","items","closeByEsc","className","onAfterClose","map","index","preventDefault","target","keyCode","arrowUpKeyCode","arrowDownKeyCode","enterKeyCode","spaceKeyCode","length","forEach","removeMenuItem","destroyEmptyPopup","filteredOptions","addMenuItem","isHoverOption","isHover","id","text","onclick","filter","searchStr","lowerCaseSearchStr","toLowerCase","lowerCaseOptionLabel","indexOf","Popup","content","Loc","getMessage","destroy","emit","input","find","optionIndex","menuItems","itemsContainer","children","i","item","removeClass","addClass","popupContent","getContentContainer","highlightedItem","height","popupContentHeight","highlightedItemHeight","direction","scroll","left","top","behavior","bottom","popupContentBottom","popupContentTop","highlightedItemBottom","highlightedItemTop","optionValue","findIndex","setAttribute","removeAttribute","openMenuClassnameModifier"],"mappings":"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"}