ng-select2-component 17.2.8 → 17.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AUTHORS.md +1 -0
- package/CHANGELOG.md +15 -0
- package/README.md +40 -5
- package/fesm2022/ng-select2-component.mjs +145 -108
- package/fesm2022/ng-select2-component.mjs.map +1 -1
- package/lib/select2-utils.d.ts.map +1 -1
- package/lib/select2.component.d.ts +8 -0
- package/lib/select2.component.d.ts.map +1 -1
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-select2-component.mjs","sources":["../../../projects/ng-select2-component/src/lib/select2-const.ts","../../../projects/ng-select2-component/src/lib/select2-hint.component.ts","../../../projects/ng-select2-component/src/lib/select2-label.component.ts","../../../projects/ng-select2-component/src/lib/select2-utils.ts","../../../projects/ng-select2-component/src/lib/select2.component.ts","../../../projects/ng-select2-component/src/lib/select2.component.html","../../../projects/ng-select2-component/src/public_api.ts","../../../projects/ng-select2-component/src/ng-select2-component.ts"],"sourcesContent":["export const timeout = 200;\n\nexport const unicodePatterns: { l: string; s: RegExp }[] = [\n { l: 'a', s: /[ⓐaẚàáâầấẫẩãāăằắẵẳȧǡäǟảåǻǎȁȃạậặḁąⱥɐ]/gi },\n { l: 'aa', s: /ꜳ/gi },\n { l: 'ae', s: /[æǽǣ]/gi },\n { l: 'ao', s: /ꜵ/gi },\n { l: 'au', s: /ꜷ/gi },\n { l: 'av', s: /[ꜹꜻ]/gi },\n { l: 'ay', s: /ꜽ/gi },\n { l: 'b', s: /[ⓑbḃḅḇƀƃɓ]/gi },\n { l: 'c', s: /[ⓒcćĉċčçḉƈȼꜿↄ]/gi },\n { l: 'd', s: /[ⓓdḋďḍḑḓḏđƌɖɗꝺ]/gi },\n { l: 'dz', s: /[dzdž]/gi },\n { l: 'e', s: /[ⓔeèéêềếễểẽēḕḗĕėëẻěȅȇẹệȩḝęḙḛɇɛǝ]/gi },\n { l: 'f', s: /[ⓕfḟƒꝼ]/gi },\n { l: 'g', s: /[ⓖgǵĝḡğġǧģǥɠꞡᵹꝿ]/gi },\n { l: 'h', s: /[ⓗhĥḣḧȟḥḩḫẖħⱨⱶɥ]/gi },\n { l: 'hv', s: /ƕ/gi },\n { l: 'i', s: /[ⓘiìíîĩīĭİïḯỉǐȉȋịįḭɨı]/gi },\n { l: 'j', s: /[ⓙjĵǰɉ]/gi },\n { l: 'k', s: /[ⓚkḱǩḳķḵƙⱪꝁꝃꝅꞣ]/gi },\n { l: 'l', s: /[ⓛlŀĺľḷḹļḽḻſłƚɫⱡꝉꞁꝇꝆ]/gi },\n { l: 'lj', s: /lj/gi },\n { l: 'm', s: /[ⓜmḿṁṃɱɯ]/gi },\n { l: 'n', s: /[ⓝnǹńñṅňṇņṋṉƞɲʼnꞑꞥ]/gi },\n { l: 'nj', s: /nj/gi },\n { l: 'o', s: /[ⓞoòóôồốỗổõṍȭṏōṑṓŏȯȱöȫỏőǒȍȏơờớỡởợọộǫǭøǿɔƟꝋꝍɵ]/gi },\n { l: 'oi', s: /ƣ/gi },\n { l: 'oe', s: /œ/gi },\n { l: 'oo', s: /ꝏ/gi },\n { l: 'ou', s: /ȣ/gi },\n { l: 'p', s: /[ⓟpṕṗƥᵽꝑꝓꝕ]/gi },\n { l: 'q', s: /[ⓠqɋꝗꝙ]/gi },\n { l: 'r', s: /[ⓡrŕṙřȑȓṛṝŗṟɍɽꝛꞧꞃ]/gi },\n { l: 's', s: /[ⓢsßẞśṥŝṡšṧṣṩșşȿꞩꞅẛ]/gi },\n { l: 't', s: /[ⓣtṫẗťṭțţṱṯŧƭʈⱦꞇ]/gi },\n { l: 'tz', s: /ꜩ/gi },\n { l: 'u', s: /[ⓤuùúûũṹūṻŭüǜǘǖǚủůűǔȕȗưừứữửựụṳųṷṵʉ]/gi },\n { l: 'v', s: /[ⓥvṽṿʋꝟʌ]/gi },\n { l: 'vy', s: /ꝡ/gi },\n { l: 'w', s: /[ⓦwẁẃŵẇẅẘẉⱳ]/gi },\n { l: 'x', s: /[ⓧxẋẍ]/gi },\n { l: 'y', s: /[ⓨyỳýŷỹȳẏÿỷẙỵƴɏỿ]/gi },\n { l: 'z', s: /[ⓩzźẑżžẓẕƶȥɀⱬꝣ]/gi },\n];\n\nexport const defaultMinCountForSearch = 6;\n\nexport const protectRegexp = new RegExp('[\\\\-\\\\[\\\\]\\\\/\\\\{\\\\}\\\\(\\\\)\\\\*\\\\+\\\\?\\\\.\\\\\\\\\\\\^\\\\$\\\\|]', 'g');\n","import { Directive } from '@angular/core';\n\n@Directive({ selector: 'select2-hint, ng-select2-hint', standalone: true })\nexport class Select2Hint {}\n","import { Directive } from '@angular/core';\n\n@Directive({ selector: 'select2-label, ng-select2-label', standalone: true })\nexport class Select2Label {}\n","import { defaultMinCountForSearch, protectRegexp, unicodePatterns } from './select2-const';\nimport { Select2Data, Select2Group, Select2Option, Select2UpdateValue, Select2Value } from './select2-interfaces';\n\n\nexport class Select2Utils {\n static getOptionByValue(data: Select2Data, value: Select2Value ) {\n if (Array.isArray(data)) {\n for (const groupOrOption of data) {\n const options = (groupOrOption as Select2Group).options;\n if (options) {\n for (const option of options) {\n if (option.value === value) {\n return option;\n }\n }\n } else if ((groupOrOption as Select2Option).value === value) {\n return groupOrOption as Select2Option;\n }\n }\n }\n return null;\n }\n\n static getOptionsByValue(\n data: Select2Data,\n value: Select2UpdateValue | null | undefined,\n multiple: boolean | null | undefined,\n ) {\n if (multiple) {\n const values: Select2Value[] = Array.isArray(value) ? value : [];\n const result: Select2Option[] = [];\n for (const v of values) {\n const option = Select2Utils.getOptionByValue(data, v);\n if (option) {\n result.push(option);\n }\n }\n return result;\n }\n return Select2Utils.getOptionByValue(data, value as Select2Value);\n }\n\n static getFirstAvailableOption(data: Select2Data): Select2Option | null {\n if (Array.isArray(data)) {\n for (const groupOrOption of data) {\n const options = (groupOrOption as Select2Group).options;\n if (options) {\n for (const option of options) {\n if (!option.disabled) {\n return option;\n }\n }\n } else {\n const option = groupOrOption as Select2Option;\n if (!option.disabled) {\n return option;\n }\n }\n }\n }\n return null;\n }\n\n static optionIsNotInFilteredData(filteredData: Select2Data, option: Select2Option | null): boolean {\n if (Select2Utils.isNullOrUndefined(option)) {\n return true;\n }\n for (const groupOrOption of filteredData) {\n const options = (groupOrOption as Select2Group).options;\n if (options && options.includes(option)) {\n return false;\n } else if (groupOrOption === option) {\n return false;\n }\n }\n return true;\n }\n\n static getPreviousOption(filteredData: Select2Data, hoveringOption: Select2Option | null): Select2Option | null {\n let findIt = Select2Utils.isNullOrUndefined(hoveringOption);\n for (let i = filteredData.length - 1; i >= 0; i--) {\n const groupOrOption = filteredData[i];\n const options = (groupOrOption as Select2Group).options;\n if (options) {\n for (let j = options.length - 1; j >= 0; j--) {\n const option = options[j];\n if (findIt && !option.disabled && !option.hide) {\n return option;\n }\n if (!findIt) {\n findIt = option === hoveringOption;\n }\n }\n } else {\n const option = groupOrOption as Select2Option;\n if (findIt && !option.disabled && !option.hide) {\n return option;\n }\n if (!findIt) {\n findIt = option === hoveringOption;\n }\n }\n }\n return null;\n }\n\n static getNextOption(filteredData: Select2Data | null, hoveringOption: Select2Option | null): Select2Option | null {\n let findIt = Select2Utils.isNullOrUndefined(hoveringOption);\n if (filteredData) {\n for (const groupOrOption of filteredData) {\n const options = (groupOrOption as Select2Group).options;\n if (options) {\n for (const option of options) {\n if (findIt) {\n if (!option.disabled && !option.hide) {\n return option;\n }\n } else if (!findIt) {\n findIt = option === hoveringOption;\n }\n }\n } else {\n const option = groupOrOption as Select2Option;\n if (findIt) {\n if (!option.disabled && !option.hide) {\n return option;\n }\n } else if (!findIt) {\n findIt = option === hoveringOption;\n }\n }\n }\n }\n return null;\n }\n\n static getFirstOption(filteredData: Select2Data): Select2Option | null {\n const firstElement = filteredData[0];\n if (this.isOption(firstElement)) {\n return firstElement ?? null;\n } else {\n return firstElement.options[0] ?? null;\n }\n }\n\n static getLastOption(filteredData: Select2Data): Select2Option | null {\n const lastElement = filteredData.at(-1);\n if (!lastElement) {\n return null;\n }\n if (this.isOption(lastElement)) {\n return lastElement;\n } else {\n return lastElement.options.at(-1) ?? null;\n }\n }\n\n static isGroup(element: Select2Group | Select2Option): element is Select2Group {\n return !!(element as Select2Group).options;\n }\n\n static isOption(element: Select2Group | Select2Option): element is Select2Option {\n return !this.isGroup(element);\n }\n\n static getReduceData(data: Select2Data, maxResults = 0): { result: Select2Data; reduce: boolean } {\n if (maxResults > 0) {\n let counter = 0;\n const result: Select2Data = [];\n // debugger;\n\n for (const groupOrOption of data) {\n const options = (groupOrOption as Select2Group).options;\n if (options) {\n const group: Select2Group | Select2Option = {\n ...groupOrOption,\n options: [],\n };\n result.push(group);\n for (const item of options) {\n group.options.push(item);\n counter++;\n if (counter === maxResults) {\n return { result, reduce: true };\n }\n }\n } else {\n result.push(groupOrOption);\n counter++;\n }\n if (counter === maxResults) {\n return { result, reduce: true };\n }\n }\n return { result, reduce: false };\n } else {\n return { result: data, reduce: false };\n }\n }\n\n static getFilteredData(\n data: Select2Data,\n searchText: string | null,\n editPattern?: (str: string) => string,\n ): Select2Data {\n if (searchText) {\n const result: Select2Data = [];\n for (const groupOrOption of data) {\n const options = (groupOrOption as Select2Group).options;\n if (options) {\n if (options.some(group => Select2Utils.containSearchText(group.label, searchText, editPattern))) {\n const filteredOptions = options.filter(group =>\n Select2Utils.containSearchText(group.label, searchText, editPattern),\n );\n result.push({\n ...groupOrOption,\n options: filteredOptions,\n });\n }\n } else if (Select2Utils.containSearchText(groupOrOption.label, searchText, editPattern)) {\n result.push(groupOrOption);\n }\n }\n return result;\n } else {\n return data;\n }\n }\n\n static getFilteredSelectedData(\n data: Select2Data,\n selectedOptions: Select2Option | Select2Option[] | null,\n ): Select2Data {\n const result: Select2Data = [];\n for (const groupOrOption of data) {\n const options = (groupOrOption as Select2Group).options;\n if (options) {\n const filteredOptions = options.filter(\n group => Select2Utils.isSelected(selectedOptions, group, true) === 'false',\n );\n if (filteredOptions.length) {\n result.push({\n ...groupOrOption,\n options: filteredOptions,\n });\n }\n } else if (Select2Utils.isSelected(selectedOptions, groupOrOption as Select2Option, true) === 'false') {\n result.push(groupOrOption);\n }\n }\n return result;\n }\n\n static isSearchboxHidden(data: Select2Data, minCountForSearch?: number): boolean {\n if (minCountForSearch === undefined || minCountForSearch === null || isNaN(+minCountForSearch)) {\n minCountForSearch = defaultMinCountForSearch;\n }\n const optionCount = Select2Utils.getOptionsCount(data);\n return optionCount < +minCountForSearch;\n }\n\n static isSelected(\n options: Select2Option | Select2Option[] | null,\n option: Select2Option,\n multiple: boolean | null | undefined,\n ) {\n return multiple\n ? options && (options as Select2Option[]).some(op => op.value === option.value)\n ? 'true'\n : 'false'\n : options && option.value === (options as Select2Option).value\n ? 'true'\n : 'false';\n }\n\n static removeSelection(options: Select2Option | Select2Option[] | null, option: Select2Option) {\n for (let i = 0; i < (options as Select2Option[]).length; i++) {\n if ((options as Select2Option[])[i].value === option.value) {\n (options as Select2Option[]).splice(i, 1);\n return;\n }\n }\n }\n\n private static getOptionsCount(data: Select2Data) {\n let count = 0;\n if (Array.isArray(data)) {\n for (const groupOrOption of data) {\n const options = (groupOrOption as Select2Group).options;\n count += options ? options.length : 1;\n }\n }\n return count;\n }\n\n private static isNullOrUndefined(value: any): value is null | undefined {\n return value === null || value === undefined;\n }\n\n private static containSearchText(\n label: string,\n searchText: string | null,\n editPattern: ((str: string) => string) | undefined,\n ): boolean {\n return searchText\n ? Select2Utils.formatSansUnicode(label).match(\n new RegExp(Select2Utils.formatPattern(searchText, editPattern), 'i'),\n ) !== null\n : true;\n }\n\n private static protectPattern(str: string): string {\n return str.replace(protectRegexp, '\\\\$&');\n }\n\n private static formatSansUnicode(str: string): string {\n for (const unicodePattern of unicodePatterns) {\n str = str.replace(unicodePattern.s, unicodePattern.l);\n }\n return str;\n }\n\n private static formatPattern(str: string, editPattern: ((str: string) => string) | undefined): string {\n str = Select2Utils.formatSansUnicode(Select2Utils.protectPattern(str));\n\n if (editPattern && typeof editPattern === 'function') {\n str = editPattern(str);\n }\n return str;\n }\n}\n","import { CdkDrag, CdkDragDrop, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ConnectedOverlayPositionChange,\n ConnectionPositionPair,\n VerticalConnectionPos,\n} from '@angular/cdk/overlay';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n HostBinding,\n HostListener,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Self,\n SimpleChanges,\n TemplateRef,\n booleanAttribute,\n computed,\n input,\n numberAttribute,\n output,\n signal,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\n\nimport { InfiniteScrollDirective } from 'ngx-infinite-scroll';\nimport { Subject, Subscription } from 'rxjs';\n\nimport {\n Select2AutoCreateEvent,\n Select2Data,\n Select2Group,\n Select2Option,\n Select2RemoveEvent,\n Select2ScrollEvent,\n Select2SearchEvent,\n Select2SelectionOverride,\n Select2Template,\n Select2UpdateEvent,\n Select2UpdateValue,\n Select2Value,\n} from './select2-interfaces';\nimport { Select2Utils } from './select2-utils';\n\nlet nextUniqueId = 0;\n\ninterface KeyInfo {\n key: string;\n altKey: boolean;\n}\n\nconst OPEN_KEYS_NATIVE: (string | KeyInfo)[] = ['Enter', ' '];\nconst CLOSE_KEYS_NATIVE: (string | KeyInfo)[] = ['ArrowDown', 'ArrowUp', 'Home', 'End', 'PageUp', 'PageDown'];\nconst OPEN_KEYS: (string | KeyInfo)[] = ['ArrowDown', 'ArrowUp', 'Enter', ' ', 'Home', 'End', 'PageUp', 'PageDown'];\nconst ON_OPEN_KEYS: (string | KeyInfo)[] = ['Home', 'End', 'PageUp', 'PageDown'];\nconst CLOSE_KEYS: (string | KeyInfo)[] = ['Escape', 'Tab', { key: 'ArrowUp', altKey: true }];\n\n@Component({\n selector: 'select2, ng-select2',\n templateUrl: './select2.component.html',\n styleUrls: ['./select2.component.scss'],\n standalone: true,\n imports: [CdkOverlayOrigin, NgTemplateOutlet, CdkConnectedOverlay, InfiniteScrollDirective, CdkDropList, CdkDrag],\n host: {\n '[id]': 'id()',\n '[class.select2-selection-nowrap]': 'selectionNoWrap()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Select2 implements ControlValueAccessor, OnInit, DoCheck, AfterViewInit, OnDestroy, OnChanges {\n readonly _uid = `select2-${nextUniqueId++}`;\n // ----------------------- signal-input\n\n /** data of options & option groups */\n readonly data = input.required<Select2Data>();\n\n /** minimum characters to start filter search */\n readonly minCharForSearch = input(0, { transform: numberAttribute });\n\n /** text placeholder */\n readonly displaySearchStatus = input<'default' | 'hidden' | 'always' | undefined>(undefined);\n\n /** text placeholder */\n readonly placeholder = input<string | undefined>(undefined);\n\n /** in multiple: maximum selection element (0 = no limit) */\n readonly limitSelection = input(0, { transform: numberAttribute });\n\n /** dropdown position */\n readonly listPosition = input<'above' | 'below' | 'auto'>('below');\n\n /** overlay with CDK Angular position */\n readonly overlay = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** select one or more item */\n readonly multiple = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** drag'n drop list of items in multiple */\n readonly multipleDrag = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** use the material style */\n readonly styleMode = input<'material' | 'noStyle' | 'borderless' | 'default'>('default');\n\n /** message when no result */\n readonly noResultMessage = input<string>();\n\n /** maximum results limit (0 = no limit) */\n readonly maxResults = input(0, { transform: numberAttribute });\n\n /** message when maximum results */\n readonly maxResultsMessage = input('Too many results…');\n\n /** infinite scroll distance */\n readonly infiniteScrollDistance = input(1.5, { transform: numberAttribute });\n\n /** infinite scroll distance */\n readonly infiniteScrollThrottle = input(150, { transform: numberAttribute });\n\n /** infinite scroll activated */\n readonly infiniteScroll = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** auto create if not exist */\n readonly autoCreate = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** no template for label selection */\n readonly noLabelTemplate = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** use it for change the pattern of the filter search */\n readonly editPattern = input<((str: string) => string) | undefined>(undefined);\n\n /** template(s) for formatting */\n readonly templates = input<Select2Template>(undefined);\n\n /** template for formatting selected option */\n readonly templateSelection = input<TemplateRef<any> | undefined>(undefined);\n\n /** the max height of the results container when opening the select */\n readonly resultMaxHeight = input('200px');\n\n /** Active Search event */\n readonly customSearchEnabled = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** minimal data of show the search field */\n readonly minCountForSearch = input(undefined, { transform: numberAttribute });\n\n /** Unique id of the element. */\n readonly id = input<string>(this._uid);\n\n /** Unique id of label element. */\n readonly idLabel = computed(() => `${this.id()}-label`);\n\n /** Unique id of combo element. */\n readonly idCombo = computed(() => `${this.id()}-combo`);\n\n /** Unique id of options element. */\n readonly idOptions = computed(() => `${this.id()}-options`);\n\n /** Unique id of overlay element. */\n readonly idOverlay = computed(() => `${this.id()}-overlay`);\n\n /** Whether the element is required. */\n readonly required = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** Whether selected items should be hidden. */\n readonly disabled = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** Whether items are hidden when has. */\n readonly hideSelectedItems = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** Whether the element is readonly. */\n readonly readonly = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** The input element's value. */\n readonly value = input<Select2UpdateValue>();\n\n /** Tab index for the select2 element. */\n readonly tabIndex = input(0, { transform: numberAttribute });\n\n /** reset with no selected value */\n readonly resettable = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** selected value when × is clicked */\n readonly resetSelectedValue = input<any>(undefined);\n\n /** like native select keyboard navigation (only single mode) */\n readonly nativeKeyboard = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** grid: item by line\n * * 0 = no grid\n * * number = item by line (4)\n * * string = minimal size item (100px)\n */\n readonly grid = input('');\n\n /**\n * Replace selection by a text\n * * if string: `%size%` = total selected options\n * * if function: juste show the string\n */\n readonly selectionOverride = input<Select2SelectionOverride | undefined>(undefined);\n\n /** force selection on one line */\n readonly selectionNoWrap = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** Add an option to select or remove all (if all is selected) */\n readonly showSelectAll = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** Text for remove all options */\n readonly removeAllText = input('Remove all');\n\n /** Text for select all options */\n readonly selectAllText = input('Select all');\n\n // -- WAI related inputs ---\n\n /** title attribute applied to the input */\n readonly title = input<string>();\n\n /** aria-labelledby attribute applied to the input, to specify en external label */\n readonly ariaLabelledby = input<string>();\n\n /** aria-describedby attribute applied to the input */\n readonly ariaDescribedby = input<string>();\n\n /** aria-invalid attribute applied to the input, to force error state */\n readonly ariaInvalid = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** description of the reset button when using 'resettable'. Default value : 'Reset' */\n readonly ariaResetButtonDescription = input<string>('Reset');\n\n // ----------------------- output\n\n readonly update = output<Select2UpdateEvent<Select2UpdateValue>>();\n readonly autoCreateItem = output<Select2AutoCreateEvent<Select2UpdateValue>>();\n readonly open = output<Select2>();\n readonly close = output<Select2>();\n readonly focus = output<Select2>();\n readonly blur = output<Select2>();\n readonly search = output<Select2SearchEvent<Select2UpdateValue>>();\n readonly scroll = output<Select2ScrollEvent>();\n readonly removeOption = output<Select2RemoveEvent<Select2UpdateValue>>();\n\n // ----------------------- signal viewChild\n\n readonly cdkConnectedOverlay = viewChild.required(CdkConnectedOverlay);\n readonly selection = viewChild.required<ElementRef<HTMLElement>>('selection');\n readonly resultContainer = viewChild<ElementRef<HTMLElement>>('results');\n readonly results = viewChildren<ElementRef>('result');\n readonly searchInput = viewChild<ElementRef<HTMLElement>>('searchInput');\n readonly dropdown = viewChild<ElementRef<HTMLElement>>('dropdown');\n\n // ----------------------- HostBinding\n\n @HostBinding('class.material')\n get classMaterial(): boolean {\n return this.styleMode() === 'material';\n }\n\n @HostBinding('class.nostyle')\n get classNostyle(): boolean {\n return this.styleMode() === 'noStyle';\n }\n\n @HostBinding('class.borderless')\n get classBorderless(): boolean {\n return this.styleMode() === 'borderless';\n }\n\n @HostBinding('class.select2-above')\n get select2above(): boolean {\n return !this.overlay() ? this.listPosition() === 'above' : this._isAbobeOverlay();\n }\n\n // ----------------------- internal var\n\n selectedOption: Select2Option | Select2Option[] | null = null;\n isOpen = false;\n searchStyle: string | undefined;\n\n /** Whether the element is focused or not. */\n focused = false;\n\n filteredData = signal<Select2Data | undefined>(undefined);\n\n get select2Options(): Select2Option[] {\n return this.multiple() ? ((this.selectedOption as Select2Option[]) ?? []) : [];\n }\n\n get select2Option(): Select2Option | null {\n return this.multiple() ? null : (this.selectedOption as Select2Option);\n }\n\n get searchText() {\n return this.innerSearchText;\n }\n\n protected set searchText(text: string) {\n this.innerSearchText = text;\n }\n\n get disabledState() {\n return this._control?.disabled ?? this._disabled;\n }\n\n protected overlayWidth: number | string = '';\n protected overlayHeight: number | string = '';\n protected _triggerRect: DOMRect | undefined;\n protected _dropdownRect: DOMRect | undefined;\n\n protected get _positions(): any {\n switch (this.listPosition()) {\n case 'above':\n return [\n new ConnectionPositionPair(\n { originX: 'start', originY: 'top' },\n { overlayX: 'start', overlayY: 'bottom' },\n ),\n ];\n case 'auto':\n return [\n new ConnectionPositionPair(\n { originX: 'start', originY: 'bottom' },\n { overlayX: 'start', overlayY: 'top' },\n ),\n new ConnectionPositionPair(\n { originX: 'start', originY: 'top' },\n { overlayX: 'start', overlayY: 'bottom' },\n ),\n ];\n\n default:\n return [\n new ConnectionPositionPair(\n { originX: 'start', originY: 'bottom' },\n { overlayX: 'start', overlayY: 'top' },\n ),\n ];\n }\n }\n\n protected maxResultsExceeded: boolean | undefined;\n\n private hoveringOption = signal<Select2Option | null>(null);\n hoveringOptionId = computed(() => this.getElementId(this.hoveringOption()));\n\n private innerSearchText = '';\n protected isSearchboxHidden: boolean | undefined;\n\n private selectionElement: HTMLElement | undefined;\n\n private get resultsElement(): HTMLElement | undefined {\n return this.resultContainer()?.nativeElement;\n }\n\n private _stateChanges = new Subject<void>();\n\n /** Tab index for the element. */\n protected get _tabIndex(): number {\n return this.disabledState ? -1 : this.tabIndex();\n }\n\n private _data: Select2Data = [];\n\n private _disabled = false;\n\n protected _value: Select2UpdateValue | null = null;\n private _previousNativeValue: Select2UpdateValue | undefined;\n private _overlayPosition: VerticalConnectionPos | undefined;\n private toObservable = new Subscription();\n\n constructor(\n protected _viewportRuler: ViewportRuler,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() private _parentForm: NgForm,\n @Optional() private _parentFormGroup: FormGroupDirective,\n @Self() @Optional() public _control: NgControl,\n @Attribute('tabindex') tabIndex: string,\n ) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n this.toObservable.add(\n toObservable(this.multiple).subscribe(_multiple => {\n this.ngOnInit();\n }),\n );\n this.toObservable.add(\n toObservable(this.minCountForSearch).subscribe(minCountForSearch => {\n this.updateSearchBox();\n }),\n );\n this.toObservable.add(\n toObservable(this.disabled).subscribe(disabled => {\n this._disabled = disabled;\n }),\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n let updateFilterData;\n if (changes['data']) {\n this._data = changes['data'].currentValue;\n updateFilterData = true;\n }\n if (changes['value']) {\n const value = changes['value'].currentValue;\n if (this.testValueChange(this._value, value)) {\n if (this._value === undefined) {\n this._value = value;\n }\n this.writeValue(value);\n updateFilterData = true;\n }\n }\n // now call update filter data so that _data and the current selected values are set\n if (updateFilterData) {\n this.updateFilteredData();\n }\n }\n\n @HostListener('document:click', ['$event'])\n clickDetection(e: MouseEvent) {\n if (this.isOpen) {\n const target = e.target as HTMLElement;\n if (!this.ifParentContainsClass(target, 'selection')) {\n if (\n (!this.ifParentContainsClass(target, 'select2-dropdown') &&\n !this.multiple() &&\n !this.hideSelectedItems()) ||\n !(\n this.ifParentContainsClass(target, 'select2-results__option') ||\n this.ifParentContainsClass(target, 'select2-dropdown')\n )\n ) {\n this.toggleOpenAndClose();\n }\n\n if (!this.overlay() && !this.ifParentContainsId(target, this.id())) {\n this.clickExit();\n }\n } else if (!this.ifParentContainsId(target, this.id())) {\n this.toggleOpenAndClose();\n this.clickExit();\n }\n } else if (this.focused) {\n const target = e.target as HTMLElement;\n this._focus(this.clickOnSelect2Element(target));\n }\n }\n\n /** View -> model callback called when select has been touched */\n private _onTouched = () => {\n // do nothing\n };\n\n /** View -> model callback called when value changes */\n private _onChange: (value: any) => void = () => {\n // do nothing\n };\n\n ngOnInit() {\n this._viewportRuler.change(100).subscribe(() => {\n if (this.isOpen) {\n this.triggerRect();\n }\n });\n\n const option = Select2Utils.getOptionsByValue(\n this._data,\n this._control ? this._control.value : this.value(),\n this.multiple(),\n );\n if (option !== null) {\n this.selectedOption = option ?? null;\n }\n if (!Array.isArray(option)) {\n this.hoveringOption.set(Select2Utils.getOptionByValue(this._data, this.value));\n }\n this.updateSearchBox();\n }\n\n ngAfterViewInit() {\n this.cdkConnectedOverlay().positionChange.subscribe((posChange: ConnectedOverlayPositionChange) => {\n if (\n this.listPosition() === 'auto' &&\n posChange.connectionPair?.originY &&\n this._overlayPosition !== posChange.connectionPair.originY\n ) {\n this.triggerRect();\n this._overlayPosition = posChange.connectionPair.originY;\n this._changeDetectorRef.detectChanges();\n }\n });\n\n this.selectionElement = this.selection().nativeElement;\n this.triggerRect();\n }\n\n ngDoCheck() {\n this.updateSearchBox();\n this._dirtyCheckNativeValue();\n if (this._triggerRect) {\n if (this.overlayWidth !== this._triggerRect.width) {\n this.overlayWidth = this._triggerRect.width;\n this._changeDetectorRef.detectChanges();\n }\n if (\n this._dropdownRect &&\n this._dropdownRect.height > 0 &&\n this.overlayHeight !== this._dropdownRect.height\n ) {\n this.overlayHeight = this.listPosition() === 'auto' ? this._dropdownRect.height : 0;\n this.fixValue();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.toObservable.unsubscribe();\n }\n\n fixValue() {\n if (!Array.isArray(this.selectedOption) && this.multiple()) {\n const selectedOption = this.selectedOption;\n this.selectedOption = [];\n setTimeout(() => {\n this.select(selectedOption);\n this._changeDetectorRef.detectChanges();\n });\n } else if (Array.isArray(this.selectedOption) && !this.multiple()) {\n const selectedOption = this.selectedOption[0];\n this.selectedOption = null;\n setTimeout(() => {\n this.select(selectedOption);\n this._changeDetectorRef.detectChanges();\n });\n } else {\n this._changeDetectorRef.detectChanges();\n }\n }\n\n updateSearchBox() {\n if (this.autoCreate() && !this.multiple()) {\n this.isSearchboxHidden = false;\n } else {\n const hidden =\n this.displaySearchStatus() === 'hidden' ||\n (this.displaySearchStatus() !== 'always' &&\n !this.customSearchEnabled() &&\n Select2Utils.isSearchboxHidden(this._data, this.minCountForSearch()));\n\n if (this.isSearchboxHidden !== hidden) {\n this.isSearchboxHidden = hidden;\n }\n }\n }\n\n getOptionStyle(option: Select2Option) {\n return (\n 'select2-results__option ' +\n (option.hide ? 'select2-results__option--hide ' : '') +\n (option === this.hoveringOption() ? 'select2-results__option--highlighted ' : '') +\n (option.classes || '')\n );\n }\n\n mouseenter(option: Select2Option) {\n if (!option.disabled) {\n this.hoveringOption.set(option);\n }\n }\n\n click(option: Select2Option) {\n if (this.testSelection(option)) {\n this.select(option);\n }\n }\n\n reset(event?: MouseEvent) {\n const resetSelectedValue = this.resetSelectedValue();\n this.select(\n resetSelectedValue !== undefined\n ? (Select2Utils.getOptionByValue(this._data, resetSelectedValue) ?? null)\n : null,\n );\n\n if (event) {\n this.stopEvent(event);\n }\n this._focus(true);\n }\n\n prevChange(event: Event) {\n event.stopPropagation();\n }\n\n stopEvent(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n toggleOpenAndClose(focus = true, open?: boolean, event?: KeyboardEvent) {\n if (this.disabledState || this.readonly()) {\n return;\n }\n this._focus(focus);\n\n const onOpenAction = event && this._testKey(event, ON_OPEN_KEYS);\n const changeEmit = this.isOpen !== (open ?? !this.isOpen);\n this.isOpen = open ?? !this.isOpen;\n if (this.isOpen) {\n if (!this.isSearchboxHidden) {\n this.innerSearchText = '';\n this.updateFilteredData();\n this._focusSearchbox(focus);\n }\n\n if (this.isSearchboxHidden && !changeEmit && event) {\n this.keyDown(event);\n } else {\n if (this.selectedOption) {\n const option = Array.isArray(this.selectedOption) ? this.selectedOption[0] : this.selectedOption;\n this.updateScrollFromOption(option);\n } else if (this.resultsElement) {\n this.resultsElement.scrollTop = 0;\n }\n if (onOpenAction) {\n this.keyDown(event);\n }\n this._changeDetectorRef.detectChanges();\n\n this.triggerRect();\n this.cdkConnectedOverlay().overlayRef?.updatePosition();\n }\n if (changeEmit) {\n this.open.emit(this);\n }\n } else if (changeEmit) {\n this.close.emit(this);\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n hasTemplate(option: Select2Option | Select2Group, defaultValue: string, select: boolean = false) {\n const templates: any = this.templates();\n const templatesValue: any = this.templates();\n return (\n (select\n ? templates?.[(option as Select2Option).templateSelectionId ?? ''] instanceof TemplateRef ||\n templates?.[`${defaultValue}Selection`] instanceof TemplateRef ||\n templates?.[`templateSelection`] instanceof TemplateRef ||\n this.templateSelection() instanceof TemplateRef\n : false) ||\n templatesValue?.[option.templateId ?? ''] instanceof TemplateRef ||\n templatesValue?.[defaultValue] instanceof TemplateRef ||\n templatesValue?.['template'] instanceof TemplateRef ||\n templatesValue instanceof TemplateRef ||\n false\n );\n }\n\n getTemplate(option: Select2Option | Select2Group, defaultValue: string, select: boolean = false) {\n const templates: any = this.templates();\n const templatesValue: any = this.templates();\n return this.hasTemplate(option, defaultValue, select)\n ? (select\n ? templates?.[(option as Select2Option).templateSelectionId ?? ''] ||\n templates?.[`${defaultValue}Selection`] ||\n templates?.[`templateSelection`] ||\n this.templateSelection()\n : undefined) ||\n templatesValue?.[option.templateId ?? ''] ||\n templatesValue?.[defaultValue] ||\n templatesValue?.['template'] ||\n templatesValue\n : undefined;\n }\n\n triggerRect() {\n this._triggerRect = this.selectionElement?.getBoundingClientRect();\n const dropdown = this.dropdown();\n this._dropdownRect = dropdown?.nativeElement ? dropdown.nativeElement.getBoundingClientRect() : undefined;\n }\n\n isNumber(o: any): boolean {\n return !isNaN(o - 0) && o !== null && o !== '' && o !== false;\n }\n\n selectAll() {\n if (this.multiple()) {\n if (!this.selectAllTest()) {\n const options: Select2Option[] = [];\n this._data.forEach(e => {\n if (Select2Utils.isGroup(e)) {\n e.options.forEach(f => {\n if (!f.disabled && !f.hide) {\n options.push(f);\n }\n });\n } else if (!e.disabled && !e.hide) {\n options.push(e);\n }\n });\n this.selectedOption = options;\n this.writeValue(options.map(e => e.value));\n } else {\n this.selectedOption = [];\n this.writeValue([]);\n }\n\n this.isOpen = false;\n this.close.emit(this);\n }\n }\n\n selectAllTest() {\n if (this.multiple() && Array.isArray(this.selectedOption) && this.selectedOption.length) {\n let options = 0;\n this._data.forEach(e => {\n if (Select2Utils.isGroup(e)) {\n e.options.forEach(f => {\n if (!f.disabled && !f.hide) {\n options++;\n }\n });\n } else if (!e.disabled && !e.hide) {\n options++;\n }\n });\n return this.selectedOption.length === options;\n }\n return false;\n }\n\n private testSelection(option: Select2Option) {\n if (option.disabled) {\n return false;\n }\n\n const limitSelection = this.limitSelection();\n return !this.multiple() || !limitSelection || this.optionsSize() < limitSelection;\n }\n\n private testValueChange(value1: Select2UpdateValue | null, value2: Select2UpdateValue | undefined) {\n if (\n ((value1 === null || value1 === undefined) && (value2 === null || value2 === undefined)) ||\n value1 === value2\n ) {\n return false;\n }\n if (\n this.multiple() &&\n (value1 as Select2Value[])?.length &&\n (value2 as Select2Value[])?.length &&\n (value1 as Select2Value[]).length === (value2 as Select2Value[]).length\n ) {\n for (const e1 of value1 as Select2Value[]) {\n const test = (value2 as Select2Value[]).indexOf(e1) > -1;\n if (!test) {\n return true;\n }\n }\n return false;\n }\n return true;\n }\n\n private updateFilteredData() {\n let result = this._data;\n\n if (this.multiple() && this.hideSelectedItems()) {\n result = Select2Utils.getFilteredSelectedData(result, this.selectedOption);\n }\n if (!this.customSearchEnabled() && this.searchText && this.searchText.length >= +this.minCharForSearch()) {\n result = Select2Utils.getFilteredData(result, this.searchText, this.editPattern());\n }\n if (this.maxResults() > 0) {\n const data = Select2Utils.getReduceData(result, +this.maxResults());\n result = data.result;\n this.maxResultsExceeded = data.reduce;\n } else {\n this.maxResultsExceeded = false;\n }\n\n if (Select2Utils.optionIsNotInFilteredData(result, this.hoveringOption())) {\n this.hoveringOption.set(Select2Utils.getFirstAvailableOption(result));\n }\n\n this.filteredData.set(result);\n\n // replace selected options when data change\n\n if (this.multiple() && Array.isArray(this.selectedOption) && this.selectedOption.length) {\n const options: Select2Option[] = [];\n const value = this.selectedOption.map(e => e.value);\n this._data.forEach(e => {\n if (Select2Utils.isGroup(e)) {\n e.options.forEach(f => {\n if (value.includes(f.value)) {\n options.push(f);\n }\n });\n } else if (value.includes(e.value)) {\n options.push(e);\n }\n });\n // preserve selection order\n this.selectedOption = this.selectedOption.map(e => options.find(f => f.value === e.value)!);\n } else if (!Array.isArray(this.selectedOption) && this.selectedOption) {\n let option: Select2Option | null = null;\n this._data.forEach(e => {\n if (Select2Utils.isGroup(e)) {\n e.options.forEach(f => {\n if ((this.selectedOption as Select2Option).value === f.value) {\n option = f;\n }\n });\n } else if ((this.selectedOption as Select2Option).value === e.value) {\n option = e;\n }\n });\n this.selectedOption = option;\n }\n this._changeDetectorRef.detectChanges();\n }\n\n private clickExit() {\n this._focus(false);\n }\n\n private isInSelect(elt: Element): boolean {\n return this.ifParentContainsId(elt, this.id()) || this.ifParentContainsId(elt, this.idOverlay());\n }\n\n private ifParentContainsClass(element: Element, cssClass: string): boolean {\n return this.getParentElementByClass(element, cssClass) !== null;\n }\n\n private ifParentContainsId(element: Element, id: string): boolean {\n return this.getParentElementById(element, id) !== null;\n }\n\n private getParentElementByClass(element: Element, cssClass: string): Element | null {\n return this.containClasses(element, cssClass.trim().split(/\\s+/))\n ? element\n : element.parentElement\n ? this.getParentElementByClass(element.parentElement, cssClass)\n : null;\n }\n\n private getParentElementById(element: Element, id: string): Element | null {\n return element.id === id\n ? element\n : element.parentElement\n ? this.getParentElementById(element.parentElement, id)\n : null;\n }\n\n private containClasses(element: Element, cssClasses: string[]): boolean {\n if (!element.classList) {\n return false;\n }\n\n for (const cssClass of cssClasses) {\n if (!element.classList.contains(cssClass)) {\n return false;\n }\n }\n\n return true;\n }\n\n private containAlmostOneClasses(element: HTMLElement, cssClasses: string[]): boolean {\n if (!element.classList) {\n return false;\n }\n\n let containAlmostOne = false;\n for (const cssClass of cssClasses) {\n if (element.classList.contains(cssClass)) {\n containAlmostOne = true;\n }\n }\n\n return containAlmostOne;\n }\n\n private clickOnSelect2Element(element: HTMLElement): boolean {\n return this.containAlmostOneClasses(element, [\n 'select2-overlay-backdrop',\n 'select2-label-content',\n 'select2-selection__rendered',\n 'select2-results__option',\n ]);\n }\n\n focusin(options?: FocusOptions) {\n if (!this.disabledState) {\n this._focus(true, options);\n }\n }\n\n focusout(event: FocusEvent) {\n if (!event.relatedTarget || !this.isInSelect(event.relatedTarget as Element)) {\n this._focus(false);\n this._onTouched();\n }\n }\n\n select(option: Select2Option | null, emit: boolean = true, closeOnSelect: boolean = true) {\n let value: any;\n\n if (option !== null && option !== undefined) {\n if (this.multiple()) {\n this.selectedOption ??= [];\n const options = this.selectedOption as Select2Option[];\n const index = options.findIndex(op => op.value === option.value);\n if (index === -1) {\n options.push(option);\n } else {\n options.splice(index, 1);\n }\n\n value = (this.selectedOption as Select2Option[]).map(op => op.value);\n } else {\n this.selectedOption = option;\n if (closeOnSelect && this.isOpen) {\n this.isOpen = false;\n this.close.emit(this);\n this.selectionElement?.focus();\n }\n value = this.selectedOption.value;\n if (!option && this._value === null) {\n this._value = value;\n }\n }\n } else {\n // when remove value\n if (Array.isArray(this.selectedOption) ? this.selectedOption?.length : this.selectedOption) {\n value = '';\n }\n this.selectedOption = null;\n }\n\n if (this.multiple() && this.hideSelectedItems()) {\n this.updateFilteredData();\n }\n\n emit &&= value !== undefined && this.testDiffValue(this._value, value);\n\n if (this._control) {\n this._onChange(value);\n }\n\n if (emit) {\n this.writeValue(value);\n setTimeout(() => {\n this.updateEvent(value);\n });\n }\n }\n\n private testDiffValue(val1: Select2UpdateValue | null, val2: any) {\n return Array.isArray(val1) ? (val1 as [])?.length !== val2?.length : val1 !== val2;\n }\n\n keyDown(event: KeyboardEvent, create = false) {\n if (create && this._testKey(event, ['Enter'])) {\n this.createAndAdd(event);\n } else if (this._testKey(event, [{ key: 'ArrowDown', altKey: false }])) {\n this.moveDown();\n this.actionAfterKeyDownMoveAction(event);\n } else if (this._testKey(event, [{ key: 'ArrowUp', altKey: false }])) {\n this.moveUp();\n this.actionAfterKeyDownMoveAction(event);\n } else if (this._testKey(event, ['Home'])) {\n this.moveStart();\n this.actionAfterKeyDownMoveAction(event);\n } else if (this._testKey(event, ['End'])) {\n this.moveEnd();\n this.actionAfterKeyDownMoveAction(event);\n } else if (this._testKey(event, ['PageUp'])) {\n this.moveUp(10);\n this.actionAfterKeyDownMoveAction(event);\n } else if (this._testKey(event, ['PageDown'])) {\n this.moveDown(10);\n this.actionAfterKeyDownMoveAction(event);\n } else if (this._testKey(event, ['Enter']) || (this.isSearchboxHidden && this._testKey(event, [' ']))) {\n this.selectByEnter(true);\n event.preventDefault();\n } else if (this._testKey(event, CLOSE_KEYS) && this.isOpen) {\n this.toggleOpenAndClose();\n this._focus(true);\n }\n }\n\n private actionAfterKeyDownMoveAction(event: KeyboardEvent) {\n event.preventDefault();\n if (this.nativeKeyboard() && !this.multiple()) {\n this.selectByEnter(false);\n }\n }\n\n openKey(event: KeyboardEvent, create = false) {\n if (create && this._testKey(event, ['Enter'])) {\n this.createAndAdd(event);\n } else if (this._testKey(event, this.nativeKeyboard() && !this.multiple() ? OPEN_KEYS_NATIVE : OPEN_KEYS)) {\n this.toggleOpenAndClose(true, true, event);\n event.preventDefault();\n } else if (this.nativeKeyboard() && !this.multiple() && this._testKey(event, CLOSE_KEYS_NATIVE)) {\n this.updateScrollFromOption(this.select2Option);\n this.keyDown(event, create);\n } else if (this._testKey(event, CLOSE_KEYS)) {\n if (this.isOpen) {\n this.toggleOpenAndClose();\n this._onTouched();\n }\n }\n }\n\n searchUpdate(e: Event) {\n this.searchText = (e.target as HTMLInputElement).value;\n if (!this.customSearchEnabled()) {\n this.updateFilteredData();\n } else {\n this.search.emit({\n component: this,\n value: this._value,\n search: this.searchText,\n data: this._data,\n filteredData: (data: Select2Data) => {\n this.filteredData.set(data);\n this._changeDetectorRef.markForCheck();\n },\n });\n }\n }\n\n isSelected(option: Select2Option) {\n return Select2Utils.isSelected(this.selectedOption, option, this.multiple());\n }\n\n isDisabled(option: Select2Option) {\n return option.disabled ? 'true' : 'false';\n }\n\n removeSelection(e: MouseEvent | KeyboardEvent | Event, option: Select2Option) {\n if (this.readonly() || this.disabledState) {\n return;\n }\n\n Select2Utils.removeSelection(this.selectedOption, option);\n\n if (this.multiple() && this.hideSelectedItems()) {\n this.updateFilteredData();\n }\n\n const value = (this.selectedOption as Select2Option[]).map(op => op.value);\n\n if (this._control) {\n this._onChange(value);\n } else {\n this._value = value ?? null;\n }\n\n this.updateEvent(value);\n this.removeOption.emit({\n component: this,\n value: value,\n removedOption: option,\n });\n\n e.preventDefault();\n e.stopPropagation();\n\n if (this.isOpen) {\n this._focusSearchbox();\n } else {\n this._focus(true);\n }\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value\n */\n writeValue(value: any) {\n this.selectedOption = null;\n this._setSelectionByValue(this.multiple() ? (value ?? []) : value);\n if (this.testValueChange(this._value, value)) {\n this._value = value;\n }\n }\n\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn: (value: any) => void): void {\n this._onChange = fn;\n }\n\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n /**\n * Sets whether the component should be disabled.\n * Implemented as part of ControlValueAccessor.\n * @param isDisabled\n */\n setDisabledState(isDisabled: boolean) {\n this._disabled = isDisabled;\n }\n\n onScroll(way: 'up' | 'down') {\n this.scroll.emit({\n component: this,\n way,\n search: this.innerSearchText,\n data: this._data,\n });\n }\n\n drop(event: CdkDragDrop<string[], string[], any>) {\n if (Array.isArray(this.selectedOption)) {\n moveItemInArray(this.selectedOption, event.previousIndex, event.currentIndex);\n const value = this.selectedOption.map(e => e.value);\n this.writeValue(value);\n this._value = value;\n this.updateEvent(value);\n }\n }\n\n _isErrorState(): boolean {\n const isInvalid = this._control?.invalid;\n const isTouched = this._control?.touched;\n const isSubmitted = this._parentFormGroup?.submitted || this._parentForm?.submitted;\n return !!(isInvalid && (isTouched || isSubmitted));\n }\n\n _selectionOverrideLabel() {\n const selectionOverride = this.selectionOverride();\n if (typeof selectionOverride === 'function') {\n return selectionOverride({\n size: this.optionsSize(),\n options: Array.isArray(this.selectedOption)\n ? this.selectedOption\n : this.selectedOption\n ? [this.selectedOption]\n : null,\n });\n } else if (typeof selectionOverride === 'string') {\n return selectionOverride.replaceAll('%size%', `${this.optionsSize()}`);\n }\n return undefined;\n }\n\n getElementId(elt: Select2Group | Select2Option | null): string | null {\n if (!elt) {\n return elt;\n } else if (elt.id) {\n return elt.id;\n }\n\n const [i, j] = this._getElementPath(elt);\n const toSuffix = (index: number) => (index !== undefined ? `-${index}` : '');\n elt.id ??= `${this.id()}-option${toSuffix(i)}${toSuffix(j)}`;\n return elt.id;\n }\n\n _getElementPath(elt: Select2Group | Select2Option): number[] {\n for (let i = 0; i < this._data.length; i++) {\n const optionOrGroup = this._data[i];\n\n if (optionOrGroup === elt) {\n return [i];\n } else if (Select2Utils.isGroup(optionOrGroup)) {\n const j = optionOrGroup.options.findIndex(o => o === elt);\n if (j >= 0) {\n return [i, j];\n }\n }\n }\n\n return [];\n }\n\n _toGroup(group: Select2Option | Select2Group) {\n return group as Select2Group;\n }\n\n _toOption(option: Select2Option | Select2Group) {\n return option as Select2Option;\n }\n\n private updateEvent(value: Select2UpdateValue) {\n this.update.emit({\n component: this,\n value: value,\n options: Array.isArray(this.selectedOption)\n ? this.selectedOption\n : this.selectedOption\n ? [this.selectedOption]\n : null,\n });\n }\n\n private optionsSize() {\n return Array.isArray(this.selectedOption) ? this.selectedOption.length : this.selectedOption ? 1 : 0;\n }\n\n private addItem(value: string): Select2Option {\n let item = Select2Utils.getOptionByValue(this._data, value);\n if (!item) {\n item = {\n value,\n label: value,\n };\n this._data.push(item);\n }\n return item;\n }\n\n private createAndAdd(e: KeyboardEvent) {\n const value = (e.target as HTMLInputElement).value;\n if (value.trim()) {\n (e.target as HTMLInputElement).value = '';\n this.searchText = '';\n const item = this.addItem(value.trim());\n this.click(item);\n this.updateFilteredData();\n\n this.autoCreateItem.emit({\n value: item,\n component: this,\n options: Array.isArray(this.selectedOption)\n ? this.selectedOption\n : this.selectedOption\n ? [this.selectedOption]\n : null,\n });\n }\n this.stopEvent(e);\n }\n\n private moveUp(times = 1) {\n for (let i = 0; i < times; i++) {\n this.updateScrollFromOption(Select2Utils.getPreviousOption(this.filteredData()!, this.hoveringOption()));\n }\n }\n\n private moveDown(times = 1) {\n for (let i = 0; i < times; i++) {\n this.updateScrollFromOption(Select2Utils.getNextOption(this.filteredData()!, this.hoveringOption()));\n }\n }\n\n private moveStart() {\n this.updateScrollFromOption(Select2Utils.getFirstOption(this.filteredData()!));\n }\n\n private moveEnd() {\n this.updateScrollFromOption(Select2Utils.getLastOption(this.filteredData()!));\n }\n\n private updateScrollFromOption(option: Select2Option | null) {\n if (option) {\n this.hoveringOption.set(option);\n const domElement = this.results().find(r => r.nativeElement.innerText.trim() === option.label);\n if (domElement && this.resultsElement) {\n const resultClientRect = this.resultsElement.getBoundingClientRect();\n const eltClientRect = domElement.nativeElement.getBoundingClientRect();\n\n if (eltClientRect.bottom > resultClientRect.bottom) {\n // Needs element scroll to bottom\n this.resultsElement.scrollTop += eltClientRect.bottom - resultClientRect.bottom;\n } else if (resultClientRect.top > eltClientRect.top) {\n // Needs element scroll to top\n this.resultsElement.scrollTop += eltClientRect.top - resultClientRect.top;\n }\n }\n }\n }\n\n private selectByEnter(close: boolean = false) {\n const hoveringOption = this.hoveringOption();\n if (hoveringOption) {\n this.select(hoveringOption, true, close);\n }\n }\n\n private _testKey(event: KeyboardEvent, refs: (string | KeyInfo)[] = []): boolean {\n const { key, altKey } = event;\n return refs.some(ref => {\n if (typeof ref === 'string') {\n return ref === key;\n } else {\n return key === ref.key && altKey === ref.altKey;\n }\n });\n }\n\n /**\n * Sets the selected option based on a value. If no option can be\n * found with the designated value, the select trigger is cleared.\n */\n private _setSelectionByValue(value: any | any[]): void {\n if (this.selectedOption || (value !== undefined && value !== null)) {\n const isArray = Array.isArray(value);\n if (this.multiple() && value && !isArray) {\n throw new Error('Non array value.');\n } else if (this._data) {\n if (this.multiple()) {\n if (!Array.isArray(this.selectedOption)) {\n this.selectedOption = []; // if value is null, then empty option and return\n }\n if (isArray) {\n // value is not null. Preselect value\n (Select2Utils.getOptionsByValue(this._data, value, this.multiple()) as []).forEach(item =>\n this.select(item, false),\n );\n this._value ??= value;\n\n if (this.testDiffValue(this._value, value)) {\n this.updateEvent(value);\n }\n } else if (value === null) {\n // fix if value is null\n this._value = [];\n this.reset();\n this.select(null, false);\n\n if (this.testDiffValue(this._value, value)) {\n this._value = [];\n this.updateEvent(this._value);\n }\n }\n } else {\n this._value = value;\n this.select(Select2Utils.getOptionByValue(this._data, this._value), this.isOpen, false);\n }\n } else if (this._control) {\n this._control.viewToModelUpdate(value);\n }\n\n this._changeDetectorRef.markForCheck();\n }\n }\n\n /** Does some manual dirty checking on the native input `value` property. */\n private _dirtyCheckNativeValue() {\n const newValue = this.value();\n\n if (this._previousNativeValue !== newValue) {\n this._previousNativeValue = newValue;\n this._stateChanges.next();\n }\n }\n\n private _focusSearchbox(focus = true) {\n if (!this.isSearchboxHidden) {\n setTimeout(() => {\n const searchInput = this.searchInput();\n if (searchInput && searchInput.nativeElement && focus) {\n searchInput.nativeElement.focus();\n }\n });\n }\n }\n\n private _focus(state: boolean, options?: FocusOptions) {\n if (state) {\n const eltToFocus =\n !this.isSearchboxHidden && this.isOpen\n ? this.searchInput()!.nativeElement\n : this.selection().nativeElement;\n if (document.activeElement !== eltToFocus) {\n eltToFocus.focus(options);\n }\n } else if (\n document.activeElement === this.selection()?.nativeElement ||\n document.activeElement === this.searchInput()?.nativeElement\n ) {\n (document.activeElement as HTMLElement).blur();\n }\n\n this._updateFocusState(state);\n }\n\n private _isAbobeOverlay(): boolean {\n const listPosition = this.listPosition();\n return this.overlay() && this._overlayPosition && listPosition === 'auto'\n ? this._overlayPosition === 'top'\n : listPosition === 'above';\n }\n\n protected _updateFocusState(state: boolean) {\n if (!state && this.focused) {\n this.focused = state;\n this.blur.emit(this);\n } else if (state && !this.focused) {\n this.focused = state;\n this.focus.emit(this);\n }\n }\n}\n","<label class=\"select2-label\" (click)=\"toggleOpenAndClose()\" [id]=\"idLabel()\">\n <ng-content select=\"select2-label, ng-select2-label\"></ng-content>\n @if (required()) {\n <span class=\"select2-required\" aria-hidden=\"true\"></span>\n }\n</label>\n\n<div\n class=\"select2 select2-container select2-container--default\"\n [class.select2-container--focus]=\"focused\"\n [class.select2-container--below]=\"!select2above\"\n [class.select2-container--above]=\"select2above\"\n [class.select2-container--open]=\"isOpen\"\n [class.select2-container--disabled]=\"disabled()\"\n [class.select2-container--readonly]=\"readonly()\"\n>\n <div\n [id]=\"idCombo()\"\n role=\"combobox\"\n class=\"selection\"\n #selection\n #trigger=\"cdkOverlayOrigin\"\n [tabindex]=\"!this.isOpen ? _tabIndex : '-1'\"\n [attr.aria-labelledby]=\"ariaLabelledby() ?? idLabel()\"\n [attr.aria-expanded]=\"isOpen\"\n aria-haspopup=\"listbox\"\n [attr.aria-controls]=\"idOptions()\"\n [attr.aria-activedescendant]=\"isOpen ? hoveringOptionId() : null\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [attr.title]=\"title()\"\n [attr.aria-invalid]=\"_isErrorState() || ariaInvalid() ? 'true' : null\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n [attr.aria-readonly]=\"readonly() ? 'true' : null\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n (click)=\"toggleOpenAndClose()\"\n (focus)=\"focusin()\"\n (focusout)=\"focusout($event)\"\n (keydown)=\"openKey($event)\"\n cdkOverlayOrigin\n [class.select2-focused]=\"focused\"\n >\n <div\n class=\"select2-selection\"\n [class.select2-selection--multiple]=\"multiple()\"\n [class.select2-selection--single]=\"!multiple()\"\n >\n @if (selectionOverride()) {\n <span class=\"select2-selection__override\" [innerHTML]=\"_selectionOverrideLabel()\"></span>\n\n @if (\n resettable() &&\n !(disabled() || readonly()) &&\n resetSelectedValue() !== _value &&\n ((!multiple() && select2Option) || (multiple() && select2Options.length > 0))\n ) {\n <ng-container *ngTemplateOutlet=\"resetButton\"></ng-container>\n }\n } @else if (!multiple()) {\n <span\n class=\"select2-selection__rendered\"\n [title]=\"select2Option?.label || ''\"\n [attr.aria-live]=\"nativeKeyboard() && !isOpen ? 'polite' : null\"\n >\n @if (!select2Option) {\n <span> </span>\n }\n @if (select2Option) {\n @if (!hasTemplate(select2Option, 'option', true) || noLabelTemplate()) {\n <span [innerHTML]=\"select2Option.label\"></span>\n } @else {\n <ng-container\n *ngTemplateOutlet=\"getTemplate(select2Option, 'option', true); context: select2Option\"\n ></ng-container>\n }\n }\n <span\n [class.select2-selection__placeholder__option]=\"selectedOption\"\n class=\"select2-selection__placeholder\"\n >{{ placeholder() }}</span\n >\n </span>\n\n @if (resettable() && resetSelectedValue() !== _value && select2Option && !(disabled() || readonly())) {\n <ng-container *ngTemplateOutlet=\"resetButton\"></ng-container>\n }\n <span class=\"select2-selection__arrow\" role=\"presentation\"> </span>\n } @else {\n <ul\n class=\"select2-selection__rendered\"\n cdkDropList\n cdkDropListOrientation=\"mixed\"\n [cdkDropListDisabled]=\"!multipleDrag()\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @if (!autoCreate()) {\n <span\n [class.select2-selection__placeholder__option]=\"select2Options.length > 0\"\n class=\"select2-selection__placeholder\"\n >{{ placeholder() }}</span\n >\n }\n @for (op of selectedOption || []; track op.id) {\n <li\n class=\"select2-selection__choice\"\n [title]=\"op.label\"\n tabindex=\"0\"\n (focus)=\"_updateFocusState(true)\"\n (keydown.enter)=\"removeSelection($event, op)\"\n cdkDrag\n >\n @if (!(disabled() || readonly())) {\n <span\n (click)=\"removeSelection($event, op)\"\n class=\"select2-selection__choice__remove\"\n role=\"presentation\"\n aria-hidden=\"true\"\n >×</span\n >\n }\n @if (!hasTemplate(op, 'option', true) || noLabelTemplate()) {\n <span [innerHTML]=\"op.label\"></span>\n } @else {\n <ng-container *ngTemplateOutlet=\"getTemplate(op, 'option', true); context: op\"></ng-container>\n }\n </li>\n }\n @if (autoCreate()) {\n <li class=\"select2-selection__auto-create\" (focus)=\"stopEvent($event)\" (blur)=\"stopEvent($event)\">\n <input\n [id]=\"id() + '-create-field'\"\n (click)=\"toggleOpenAndClose(false, true); stopEvent($event)\"\n (keydown)=\"keyDown($event, true)\"\n (keyup)=\"searchUpdate($event)\"\n (change)=\"prevChange($event)\"\n class=\"select2-create__field\"\n type=\"search\"\n role=\"textbox\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n />\n </li>\n }\n </ul>\n @if (resettable() && $any(selectedOption)?.length > 0 && !(disabled() || readonly())) {\n <ng-container *ngTemplateOutlet=\"resetButton\"></ng-container>\n }\n }\n </div>\n </div>\n @if (!overlay()) {\n <ng-container *ngTemplateOutlet=\"containerTemplate\"></ng-container>\n }\n\n <div class=\"select2-subscript-wrapper\">\n <ng-content select=\"select2-hint, ng-select2-hint\"></ng-content>\n </div>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"select2-overlay-backdrop\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"this.isOpen && overlay()\"\n [cdkConnectedOverlayMinWidth]=\"overlayWidth\"\n [cdkConnectedOverlayHeight]=\"overlayHeight\"\n [cdkConnectedOverlayPositions]=\"_positions\"\n (backdropClick)=\"toggleOpenAndClose()\"\n>\n <ng-container *ngTemplateOutlet=\"containerTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #containerTemplate>\n <div\n [id]=\"idOverlay()\"\n class=\"select2-container select2-container--default select2-container-dropdown\"\n [class.select2-container--open]=\"isOpen\"\n [class.select2-overlay]=\"overlay()\"\n [class.select2-position-auto]=\"listPosition() === 'auto'\"\n [class.select2-style-borderless]=\"styleMode() === 'borderless'\"\n >\n <div\n #dropdown\n class=\"select2-dropdown\"\n [class.select2-dropdown--below]=\"!select2above\"\n [class.select2-dropdown--above]=\"select2above\"\n >\n <div class=\"select2-search select2-search--dropdown\" [class.select2-search--hide]=\"isSearchboxHidden\">\n <input\n #searchInput\n [id]=\"id() + '-search-field'\"\n [value]=\"searchText\"\n (keydown)=\"keyDown($event, autoCreate())\"\n (keyup)=\"searchUpdate($event)\"\n (change)=\"prevChange($event)\"\n class=\"select2-search__field\"\n type=\"search\"\n role=\"combobox\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n [attr.tabindex]=\"this.isOpen ? _tabIndex : '-1'\"\n [attr.aria-labelledby]=\"ariaLabelledby() ?? idLabel()\"\n aria-autocomplete=\"list\"\n [attr.aria-controls]=\"idOptions()\"\n aria-expanded=\"true\"\n [attr.aria-activedescendant]=\"hoveringOptionId()\"\n />\n </div>\n\n <div class=\"select2-results\">\n <ul\n [id]=\"idOptions()\"\n #results\n class=\"select2-results__options\"\n [class.select2-grid]=\"grid() && isNumber(grid())\"\n [class.select2-grid-auto]=\"grid() && !isNumber(grid())\"\n [style.max-height]=\"resultMaxHeight()\"\n [style.--grid-size]=\"grid() || null\"\n role=\"listbox\"\n tabindex=\"-1\"\n infiniteScroll\n [infiniteScrollDisabled]=\"!infiniteScroll() && !isOpen\"\n [infiniteScrollDistance]=\"infiniteScrollDistance()\"\n [infiniteScrollThrottle]=\"infiniteScrollThrottle()\"\n [infiniteScrollContainer]=\"results\"\n [attr.aria-labelledby]=\"ariaLabelledby() ?? idLabel()\"\n [attr.aria-multiselectable]=\"multiple()\"\n [attr.aria-activedescendant]=\"hoveringOptionId()\"\n (scrolled)=\"onScroll('down')\"\n (scrolledUp)=\"onScroll('up')\"\n (keydown)=\"keyDown($event)\"\n >\n @if (showSelectAll() && multiple()) {\n <li class=\"select2-results__option select2-selectall\" (click)=\"selectAll()\" tabindex=\"1\" aria-selected>\n <div class=\"select2-label-content\">\n {{ selectAllTest() ? removeAllText() : selectAllText() }}\n </div>\n </li>\n }\n\n @for (groupOrOption of filteredData(); track groupOrOption.id; let i = $index) {\n @let group = _toGroup(groupOrOption);\n @if (group.options !== undefined) {\n <li class=\"select2-results__option select2-results__group\">\n <span [id]=\"getElementId(groupOrOption)\">\n @if (!hasTemplate(group, 'group')) {\n <strong\n [attr.class]=\"'select2-results__group' + (group.classes ? ' ' + group.classes : '')\"\n [innerHTML]=\"group.label\"\n ></strong>\n } @else {\n <ng-container *ngTemplateOutlet=\"getTemplate(group, 'group'); context: group\"> </ng-container>\n }\n </span>\n <ul\n class=\"select2-results__options select2-results__options--nested\"\n role=\"group\"\n [attr.aria-labelledby]=\"getElementId(groupOrOption)\"\n >\n @for (option of group.options; track option.id; let j = $index) {\n <li\n #result\n [id]=\"getElementId(option)\"\n [class]=\"getOptionStyle(option)\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(option)\"\n [attr.aria-disabled]=\"isDisabled(option)\"\n (mouseenter)=\"mouseenter(option)\"\n (click)=\"click(option)\"\n >\n @if (!hasTemplate(option, 'option')) {\n <div class=\"select2-label-content\" [innerHTML]=\"option.label\"></div>\n } @else {\n <ng-container *ngTemplateOutlet=\"getTemplate(option, 'option'); context: option\">\n </ng-container>\n }\n </li>\n }\n </ul>\n </li>\n } @else {\n @let option = _toOption(groupOrOption);\n <li\n #result\n [id]=\"getElementId(groupOrOption)\"\n [class]=\"getOptionStyle(option)\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(option)\"\n [attr.aria-disabled]=\"isDisabled(option)\"\n (mouseenter)=\"mouseenter(option)\"\n (click)=\"click(option)\"\n >\n @if (!hasTemplate(option, 'option')) {\n <div [innerHTML]=\"option.label\" class=\"select2-label-content\"></div>\n } @else {\n <ng-container *ngTemplateOutlet=\"getTemplate(option, 'option'); context: option\"> </ng-container>\n }\n </li>\n\n <ng-template #li>\n <ng-container *ngTemplateOutlet=\"getTemplate(option, 'option'); context: option\"> </ng-container>\n </ng-template>\n }\n }\n @if (!filteredData()?.length && noResultMessage()) {\n <li class=\"select2-no-result select2-results__option\" [innerHTML]=\"noResultMessage()\"></li>\n }\n @if (maxResultsExceeded) {\n <li class=\"select2-too-much-result select2-results__option\" [innerHTML]=\"maxResultsMessage()\"></li>\n }\n </ul>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #resetButton>\n <button\n type=\"button\"\n (focus)=\"_updateFocusState(true)\"\n (click)=\"reset($event)\"\n (keydown)=\"$event.stopPropagation()\"\n class=\"select2-selection__reset\"\n [attr.aria-description]=\"ariaResetButtonDescription()\"\n [attr.aria-controls]=\"idCombo()\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n</ng-template>\n","/*\n * Public API Surface of ng-select2-component\n */\n\nexport * from './lib/select2-const';\nexport * from './lib/select2-hint.component';\nexport * from './lib/select2-interfaces';\nexport * from './lib/select2-label.component';\nexport * from './lib/select2-utils';\nexport * from './lib/select2.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-select2-component.mjs","sources":["../../../projects/ng-select2-component/src/lib/select2-const.ts","../../../projects/ng-select2-component/src/lib/select2-hint.component.ts","../../../projects/ng-select2-component/src/lib/select2-label.component.ts","../../../projects/ng-select2-component/src/lib/select2-utils.ts","../../../projects/ng-select2-component/src/lib/select2.component.ts","../../../projects/ng-select2-component/src/lib/select2.component.html","../../../projects/ng-select2-component/src/public_api.ts","../../../projects/ng-select2-component/src/ng-select2-component.ts"],"sourcesContent":["export const timeout = 200;\n\nexport const unicodePatterns: { l: string; s: RegExp }[] = [\n { l: 'a', s: /[ⓐaẚàáâầấẫẩãāăằắẵẳȧǡäǟảåǻǎȁȃạậặḁąⱥɐ]/gi },\n { l: 'aa', s: /ꜳ/gi },\n { l: 'ae', s: /[æǽǣ]/gi },\n { l: 'ao', s: /ꜵ/gi },\n { l: 'au', s: /ꜷ/gi },\n { l: 'av', s: /[ꜹꜻ]/gi },\n { l: 'ay', s: /ꜽ/gi },\n { l: 'b', s: /[ⓑbḃḅḇƀƃɓ]/gi },\n { l: 'c', s: /[ⓒcćĉċčçḉƈȼꜿↄ]/gi },\n { l: 'd', s: /[ⓓdḋďḍḑḓḏđƌɖɗꝺ]/gi },\n { l: 'dz', s: /[dzdž]/gi },\n { l: 'e', s: /[ⓔeèéêềếễểẽēḕḗĕėëẻěȅȇẹệȩḝęḙḛɇɛǝ]/gi },\n { l: 'f', s: /[ⓕfḟƒꝼ]/gi },\n { l: 'g', s: /[ⓖgǵĝḡğġǧģǥɠꞡᵹꝿ]/gi },\n { l: 'h', s: /[ⓗhĥḣḧȟḥḩḫẖħⱨⱶɥ]/gi },\n { l: 'hv', s: /ƕ/gi },\n { l: 'i', s: /[ⓘiìíîĩīĭİïḯỉǐȉȋịįḭɨı]/gi },\n { l: 'j', s: /[ⓙjĵǰɉ]/gi },\n { l: 'k', s: /[ⓚkḱǩḳķḵƙⱪꝁꝃꝅꞣ]/gi },\n { l: 'l', s: /[ⓛlŀĺľḷḹļḽḻſłƚɫⱡꝉꞁꝇꝆ]/gi },\n { l: 'lj', s: /lj/gi },\n { l: 'm', s: /[ⓜmḿṁṃɱɯ]/gi },\n { l: 'n', s: /[ⓝnǹńñṅňṇņṋṉƞɲʼnꞑꞥ]/gi },\n { l: 'nj', s: /nj/gi },\n { l: 'o', s: /[ⓞoòóôồốỗổõṍȭṏōṑṓŏȯȱöȫỏőǒȍȏơờớỡởợọộǫǭøǿɔƟꝋꝍɵ]/gi },\n { l: 'oi', s: /ƣ/gi },\n { l: 'oe', s: /œ/gi },\n { l: 'oo', s: /ꝏ/gi },\n { l: 'ou', s: /ȣ/gi },\n { l: 'p', s: /[ⓟpṕṗƥᵽꝑꝓꝕ]/gi },\n { l: 'q', s: /[ⓠqɋꝗꝙ]/gi },\n { l: 'r', s: /[ⓡrŕṙřȑȓṛṝŗṟɍɽꝛꞧꞃ]/gi },\n { l: 's', s: /[ⓢsßẞśṥŝṡšṧṣṩșşȿꞩꞅẛ]/gi },\n { l: 't', s: /[ⓣtṫẗťṭțţṱṯŧƭʈⱦꞇ]/gi },\n { l: 'tz', s: /ꜩ/gi },\n { l: 'u', s: /[ⓤuùúûũṹūṻŭüǜǘǖǚủůűǔȕȗưừứữửựụṳųṷṵʉ]/gi },\n { l: 'v', s: /[ⓥvṽṿʋꝟʌ]/gi },\n { l: 'vy', s: /ꝡ/gi },\n { l: 'w', s: /[ⓦwẁẃŵẇẅẘẉⱳ]/gi },\n { l: 'x', s: /[ⓧxẋẍ]/gi },\n { l: 'y', s: /[ⓨyỳýŷỹȳẏÿỷẙỵƴɏỿ]/gi },\n { l: 'z', s: /[ⓩzźẑżžẓẕƶȥɀⱬꝣ]/gi },\n];\n\nexport const defaultMinCountForSearch = 6;\n\nexport const protectRegexp = new RegExp('[\\\\-\\\\[\\\\]\\\\/\\\\{\\\\}\\\\(\\\\)\\\\*\\\\+\\\\?\\\\.\\\\\\\\\\\\^\\\\$\\\\|]', 'g');\n","import { Directive } from '@angular/core';\n\n@Directive({ selector: 'select2-hint, ng-select2-hint', standalone: true })\nexport class Select2Hint {}\n","import { Directive } from '@angular/core';\n\n@Directive({ selector: 'select2-label, ng-select2-label', standalone: true })\nexport class Select2Label {}\n","import { defaultMinCountForSearch, protectRegexp, unicodePatterns } from './select2-const';\nimport { Select2Data, Select2Group, Select2Option, Select2UpdateValue, Select2Value } from './select2-interfaces';\n\nexport class Select2Utils {\n static getOptionByValue(data: Select2Data, value: Select2Value) {\n for (const groupOrOption of data) {\n const options = (groupOrOption as Select2Group).options;\n if (options) {\n for (const option of options) {\n if (option.value === value) {\n return option;\n }\n }\n } else if ((groupOrOption as Select2Option).value === value) {\n return groupOrOption as Select2Option;\n }\n }\n return null;\n }\n\n static getOptionsByValue(\n data: Select2Data,\n value: Select2UpdateValue | null | undefined,\n multiple: boolean | null | undefined,\n ) {\n if (multiple) {\n const values: Select2Value[] = Array.isArray(value) ? value : [];\n const result: Select2Option[] = [];\n for (const v of values) {\n const option = Select2Utils.getOptionByValue(data, v);\n if (option) {\n result.push(option);\n }\n }\n return result;\n }\n return Select2Utils.getOptionByValue(data, value as Select2Value);\n }\n\n static getFirstAvailableOption(data: Select2Data): Select2Option | null {\n for (const groupOrOption of data) {\n const options = (groupOrOption as Select2Group).options;\n if (options) {\n for (const option of options) {\n if (!option.disabled) {\n return option;\n }\n }\n } else {\n const option = groupOrOption as Select2Option;\n if (!option.disabled) {\n return option;\n }\n }\n }\n return null;\n }\n\n static optionIsNotInFilteredData(filteredData: Select2Data, option: Select2Option | null): boolean {\n if (Select2Utils.isNullOrUndefined(option)) {\n return true;\n }\n for (const groupOrOption of filteredData) {\n const options = (groupOrOption as Select2Group).options;\n if (options && options.includes(option)) {\n return false;\n } else if (groupOrOption === option) {\n return false;\n }\n }\n return true;\n }\n\n static getPreviousOption(filteredData: Select2Data, hoveringOption: Select2Option | null): Select2Option | null {\n let findIt = Select2Utils.isNullOrUndefined(hoveringOption);\n for (let i = filteredData.length - 1; i >= 0; i--) {\n const groupOrOption = filteredData[i];\n const options = (groupOrOption as Select2Group).options;\n if (options) {\n for (let j = options.length - 1; j >= 0; j--) {\n const option = options[j];\n if (findIt && !option.disabled && !option.hide) {\n return option;\n }\n if (!findIt) {\n findIt = option === hoveringOption;\n }\n }\n } else {\n const option = groupOrOption as Select2Option;\n if (findIt && !option.disabled && !option.hide) {\n return option;\n }\n if (!findIt) {\n findIt = option === hoveringOption;\n }\n }\n }\n return null;\n }\n\n static getNextOption(filteredData: Select2Data | null, hoveringOption: Select2Option | null): Select2Option | null {\n let findIt = Select2Utils.isNullOrUndefined(hoveringOption);\n if (filteredData) {\n for (const groupOrOption of filteredData) {\n const options = (groupOrOption as Select2Group).options;\n if (options) {\n for (const option of options) {\n if (findIt) {\n if (!option.disabled && !option.hide) {\n return option;\n }\n } else {\n findIt = option === hoveringOption;\n }\n }\n } else {\n const option = groupOrOption as Select2Option;\n if (findIt) {\n if (!option.disabled && !option.hide) {\n return option;\n }\n } else {\n findIt = option === hoveringOption;\n }\n }\n }\n }\n return null;\n }\n\n static getFirstOption(filteredData: Select2Data): Select2Option | null {\n const firstElement = filteredData[0];\n if (this.isOption(firstElement)) {\n return firstElement;\n } else {\n return firstElement.options[0] ?? null;\n }\n }\n\n static getLastOption(filteredData: Select2Data): Select2Option | null {\n const lastElement = filteredData.at(-1);\n if (!lastElement) {\n return null;\n }\n if (this.isOption(lastElement)) {\n return lastElement;\n } else {\n return lastElement.options.at(-1) ?? null;\n }\n }\n\n static isGroup(element: Select2Group | Select2Option): element is Select2Group {\n return !!(element as Select2Group).options;\n }\n\n static isOption(element: Select2Group | Select2Option): element is Select2Option {\n return !this.isGroup(element);\n }\n\n static getReduceData(data: Select2Data, maxResults = 0): { result: Select2Data; reduce: boolean } {\n if (maxResults > 0) {\n let counter = 0;\n const result: Select2Data = [];\n // debugger;\n\n for (const groupOrOption of data) {\n const options = (groupOrOption as Select2Group).options;\n if (options) {\n const group: Select2Group | Select2Option = {\n ...groupOrOption,\n options: [],\n };\n result.push(group);\n for (const item of options) {\n group.options.push(item);\n counter++;\n if (counter === maxResults) {\n return { result, reduce: true };\n }\n }\n } else {\n result.push(groupOrOption);\n counter++;\n }\n if (counter === maxResults) {\n return { result, reduce: true };\n }\n }\n return { result, reduce: false };\n } else {\n return { result: data, reduce: false };\n }\n }\n\n static getFilteredData(\n data: Select2Data,\n searchText: string | null,\n editPattern?: (str: string) => string,\n ): Select2Data {\n if (searchText) {\n const result: Select2Data = [];\n for (const groupOrOption of data) {\n const options = (groupOrOption as Select2Group).options;\n if (options) {\n if (options.some(group => Select2Utils.containSearchText(group.label, searchText, editPattern))) {\n const filteredOptions = options.filter(group =>\n Select2Utils.containSearchText(group.label, searchText, editPattern),\n );\n result.push({\n ...groupOrOption,\n options: filteredOptions,\n });\n }\n } else if (Select2Utils.containSearchText(groupOrOption.label, searchText, editPattern)) {\n result.push(groupOrOption);\n }\n }\n return result;\n } else {\n return data;\n }\n }\n\n static getFilteredSelectedData(\n data: Select2Data,\n selectedOptions: Select2Option | Select2Option[] | null,\n ): Select2Data {\n const result: Select2Data = [];\n for (const groupOrOption of data) {\n const options = (groupOrOption as Select2Group).options;\n if (options) {\n const filteredOptions = options.filter(\n group => Select2Utils.isSelected(selectedOptions, group, true) === 'false',\n );\n if (filteredOptions.length) {\n result.push({\n ...groupOrOption,\n options: filteredOptions,\n });\n }\n } else if (Select2Utils.isSelected(selectedOptions, groupOrOption as Select2Option, true) === 'false') {\n result.push(groupOrOption);\n }\n }\n return result;\n }\n\n static isSearchboxHidden(data: Select2Data, minCountForSearch?: number): boolean {\n if (minCountForSearch === undefined || minCountForSearch === null || isNaN(+minCountForSearch)) {\n minCountForSearch = defaultMinCountForSearch;\n }\n const optionCount = Select2Utils.getOptionsCount(data);\n return optionCount < +minCountForSearch;\n }\n\n static isSelected(\n options: Select2Option | Select2Option[] | null,\n option: Select2Option,\n multiple: boolean | null | undefined,\n ) {\n return multiple\n ? options && (options as Select2Option[]).some(op => op.value === option.value)\n ? 'true'\n : 'false'\n : options && option.value === (options as Select2Option).value\n ? 'true'\n : 'false';\n }\n\n static removeSelection(options: Select2Option | Select2Option[] | null, option: Select2Option) {\n for (let i = 0; i < (options as Select2Option[]).length; i++) {\n if ((options as Select2Option[])[i].value === option.value) {\n (options as Select2Option[]).splice(i, 1);\n return;\n }\n }\n }\n\n private static getOptionsCount(data: Select2Data) {\n let count = 0;\n if (Array.isArray(data)) {\n for (const groupOrOption of data) {\n const options = (groupOrOption as Select2Group).options;\n count += options ? options.length : 1;\n }\n }\n return count;\n }\n\n private static isNullOrUndefined(value: any): value is null | undefined {\n return value === null || value === undefined;\n }\n\n private static containSearchText(\n label: string,\n searchText: string,\n editPattern: ((str: string) => string) | undefined,\n ): boolean {\n return (\n Select2Utils.formatSansUnicode(label).match(\n new RegExp(Select2Utils.formatPattern(searchText, editPattern), 'i'),\n ) !== null\n );\n }\n\n private static protectPattern(str: string): string {\n return str.replace(protectRegexp, '\\\\$&');\n }\n\n private static formatSansUnicode(str: string): string {\n for (const unicodePattern of unicodePatterns) {\n str = str.replace(unicodePattern.s, unicodePattern.l);\n }\n return str;\n }\n\n private static formatPattern(str: string, editPattern: ((str: string) => string) | undefined): string {\n str = Select2Utils.formatSansUnicode(Select2Utils.protectPattern(str));\n\n if (editPattern && typeof editPattern === 'function') {\n str = editPattern(str);\n }\n return str;\n }\n}\n","import { CdkDrag, CdkDragDrop, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ConnectedOverlayPositionChange,\n ConnectionPositionPair,\n VerticalConnectionPos,\n} from '@angular/cdk/overlay';\nimport { ViewportRuler } from '@angular/cdk/scrolling';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n ElementRef,\n HostBinding,\n HostListener,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Self,\n SimpleChanges,\n TemplateRef,\n booleanAttribute,\n computed,\n input,\n numberAttribute,\n output,\n signal,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\n\nimport { InfiniteScrollDirective } from 'ngx-infinite-scroll';\nimport { Subject, Subscription } from 'rxjs';\n\nimport {\n Select2AutoCreateEvent,\n Select2Data,\n Select2Group,\n Select2Option,\n Select2RemoveEvent,\n Select2ScrollEvent,\n Select2SearchEvent,\n Select2SelectionOverride,\n Select2Template,\n Select2UpdateEvent,\n Select2UpdateValue,\n Select2Value,\n} from './select2-interfaces';\nimport { Select2Utils } from './select2-utils';\n\nlet nextUniqueId = 0;\n\ninterface KeyInfo {\n key: string;\n altKey: boolean;\n}\n\nconst OPEN_KEYS_NATIVE: (string | KeyInfo)[] = ['Enter', ' '];\nconst CLOSE_KEYS_NATIVE: (string | KeyInfo)[] = ['ArrowDown', 'ArrowUp', 'Home', 'End', 'PageUp', 'PageDown'];\nconst OPEN_KEYS: (string | KeyInfo)[] = ['ArrowDown', 'ArrowUp', 'Enter', ' ', 'Home', 'End', 'PageUp', 'PageDown'];\nconst ON_OPEN_KEYS: (string | KeyInfo)[] = ['Home', 'End', 'PageUp', 'PageDown'];\nconst CLOSE_KEYS: (string | KeyInfo)[] = ['Escape', 'Tab', { key: 'ArrowUp', altKey: true }];\n\n@Component({\n selector: 'select2, ng-select2',\n templateUrl: './select2.component.html',\n styleUrls: ['./select2.component.scss'],\n standalone: true,\n imports: [CdkOverlayOrigin, NgTemplateOutlet, CdkConnectedOverlay, InfiniteScrollDirective, CdkDropList, CdkDrag],\n host: {\n '[id]': 'id()',\n '[class.select2-selection-nowrap]': 'selectionNoWrap()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Select2 implements ControlValueAccessor, OnInit, DoCheck, AfterViewInit, OnDestroy, OnChanges {\n readonly _uid = `select2-${nextUniqueId++}`;\n // ----------------------- signal-input\n\n /** data of options & option groups */\n readonly data = input.required<Select2Data>();\n\n /** minimum characters to start filter search */\n readonly minCharForSearch = input(0, { transform: numberAttribute });\n\n /** text placeholder */\n readonly displaySearchStatus = input<'default' | 'hidden' | 'always' | undefined>(undefined);\n\n /** text placeholder */\n readonly placeholder = input<string | undefined>(undefined);\n\n /** in multiple: maximum selection element (0 = no limit) */\n readonly limitSelection = input(0, { transform: numberAttribute });\n\n /** dropdown position */\n readonly listPosition = input<'above' | 'below' | 'auto'>('below');\n\n /** overlay with CDK Angular position */\n readonly overlay = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** select one or more item */\n readonly multiple = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** drag'n drop list of items in multiple */\n readonly multipleDrag = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** use the material style */\n readonly styleMode = input<'material' | 'noStyle' | 'borderless' | 'default'>('default');\n\n /** message when no result */\n readonly noResultMessage = input<string>();\n\n /** maximum results limit (0 = no limit) */\n readonly maxResults = input(0, { transform: numberAttribute });\n\n /** message when maximum results */\n readonly maxResultsMessage = input('Too many results…');\n\n /** infinite scroll distance */\n readonly infiniteScrollDistance = input(1.5, { transform: numberAttribute });\n\n /** infinite scroll distance */\n readonly infiniteScrollThrottle = input(150, { transform: numberAttribute });\n\n /** infinite scroll activated */\n readonly infiniteScroll = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** auto create if not exist */\n readonly autoCreate = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** no template for label selection */\n readonly noLabelTemplate = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** use it for change the pattern of the filter search */\n readonly editPattern = input<((str: string) => string) | undefined>(undefined);\n\n /** template(s) for formatting */\n readonly templates = input<Select2Template>(undefined);\n\n /** template for formatting selected option */\n readonly templateSelection = input<TemplateRef<any> | undefined>(undefined);\n\n /** the max height of the results container when opening the select */\n readonly resultMaxHeight = input('200px');\n\n /** Active Search event */\n readonly customSearchEnabled = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** minimal data of show the search field */\n readonly minCountForSearch = input(undefined, { transform: numberAttribute });\n\n /** Unique id of the element. */\n readonly id = input<string>(this._uid);\n\n /** Unique id of label element. */\n readonly idLabel = computed(() => `${this.id()}-label`);\n\n /** Unique id of combo element. */\n readonly idCombo = computed(() => `${this.id()}-combo`);\n\n /** Unique id of options element. */\n readonly idOptions = computed(() => `${this.id()}-options`);\n\n /** Unique id of overlay element. */\n readonly idOverlay = computed(() => `${this.id()}-overlay`);\n\n /** Whether the element is required. */\n readonly required = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** Whether selected items should be hidden. */\n readonly disabled = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** Whether items are hidden when has. */\n readonly hideSelectedItems = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** Whether the element is readonly. */\n readonly readonly = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** The input element's value. */\n readonly value = input<Select2UpdateValue>();\n\n /** Tab index for the select2 element. */\n readonly tabIndex = input(0, { transform: numberAttribute });\n\n /** reset with no selected value */\n readonly resettable = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** selected value when × is clicked */\n readonly resetSelectedValue = input<any>(undefined);\n\n /** like native select keyboard navigation (only single mode) */\n readonly nativeKeyboard = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** grid: item by line\n * * 0 = no grid\n * * number = item by line (4)\n * * string = minimal size item (100px)\n */\n readonly grid = input('');\n\n /**\n * Replace selection by a text\n * * if string: `%size%` = total selected options\n * * if function: juste show the string\n */\n readonly selectionOverride = input<Select2SelectionOverride | undefined>(undefined);\n\n /** force selection on one line */\n readonly selectionNoWrap = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** Add an option to select or remove all (if all is selected) */\n readonly showSelectAll = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** Text for remove all options */\n readonly removeAllText = input('Remove all');\n\n /** Text for select all options */\n readonly selectAllText = input('Select all');\n\n // -- WAI related inputs ---\n\n /** title attribute applied to the input */\n readonly title = input<string>();\n\n /** aria-labelledby attribute applied to the input, to specify en external label */\n readonly ariaLabelledby = input<string>();\n\n /** aria-describedby attribute applied to the input */\n readonly ariaDescribedby = input<string>();\n\n /** aria-invalid attribute applied to the input, to force error state */\n readonly ariaInvalid = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** description of the reset button when using 'resettable'. Default value : 'Reset' */\n readonly ariaResetButtonDescription = input<string>('Reset');\n\n // ----------------------- output\n\n readonly update = output<Select2UpdateEvent<Select2UpdateValue>>();\n readonly autoCreateItem = output<Select2AutoCreateEvent<Select2UpdateValue>>();\n readonly open = output<Select2>();\n readonly close = output<Select2>();\n readonly focus = output<Select2>();\n readonly blur = output<Select2>();\n readonly search = output<Select2SearchEvent<Select2UpdateValue>>();\n readonly scroll = output<Select2ScrollEvent>();\n readonly removeOption = output<Select2RemoveEvent<Select2UpdateValue>>();\n\n // ----------------------- signal viewChild\n\n readonly cdkConnectedOverlay = viewChild.required(CdkConnectedOverlay);\n readonly selection = viewChild.required<ElementRef<HTMLElement>>('selection');\n readonly resultContainer = viewChild<ElementRef<HTMLElement>>('results');\n readonly results = viewChildren<ElementRef>('result');\n readonly searchInput = viewChild<ElementRef<HTMLElement>>('searchInput');\n readonly dropdown = viewChild<ElementRef<HTMLElement>>('dropdown');\n\n // ----------------------- HostBinding\n\n @HostBinding('class.material')\n get classMaterial(): boolean {\n return this.styleMode() === 'material';\n }\n\n @HostBinding('class.nostyle')\n get classNostyle(): boolean {\n return this.styleMode() === 'noStyle';\n }\n\n @HostBinding('class.borderless')\n get classBorderless(): boolean {\n return this.styleMode() === 'borderless';\n }\n\n @HostBinding('class.select2-above')\n get select2above(): boolean {\n return !this.overlay() ? this.listPosition() === 'above' : this._isAbobeOverlay();\n }\n\n // ----------------------- internal var\n\n selectedOption: Select2Option | Select2Option[] | null = null;\n isOpen = false;\n searchStyle: string | undefined;\n\n /** Whether the element is focused or not. */\n focused = false;\n\n filteredData = signal<Select2Data | undefined>(undefined);\n\n get select2Options(): Select2Option[] {\n return this.multiple() ? ((this.selectedOption as Select2Option[]) ?? []) : [];\n }\n\n get select2Option(): Select2Option | null {\n return this.multiple() ? null : (this.selectedOption as Select2Option);\n }\n\n get searchText() {\n return this.innerSearchText;\n }\n\n protected set searchText(text: string) {\n this.innerSearchText = text;\n }\n\n get disabledState() {\n return this._control?.disabled ?? this._disabled;\n }\n\n protected overlayWidth: number | string = '';\n protected overlayHeight: number | string = '';\n protected _triggerRect: DOMRect | undefined;\n protected _dropdownRect: DOMRect | undefined;\n\n protected get _positions(): any {\n switch (this.listPosition()) {\n case 'above':\n return [\n new ConnectionPositionPair(\n { originX: 'start', originY: 'top' },\n { overlayX: 'start', overlayY: 'bottom' },\n ),\n ];\n case 'auto':\n return [\n new ConnectionPositionPair(\n { originX: 'start', originY: 'bottom' },\n { overlayX: 'start', overlayY: 'top' },\n ),\n new ConnectionPositionPair(\n { originX: 'start', originY: 'top' },\n { overlayX: 'start', overlayY: 'bottom' },\n ),\n ];\n\n default:\n return [\n new ConnectionPositionPair(\n { originX: 'start', originY: 'bottom' },\n { overlayX: 'start', overlayY: 'top' },\n ),\n ];\n }\n }\n\n protected maxResultsExceeded: boolean | undefined;\n\n private hoveringOption = signal<Select2Option | null>(null);\n hoveringOptionId = computed(() => this.getElementId(this.hoveringOption()));\n\n private innerSearchText = '';\n protected isSearchboxHidden: boolean | undefined;\n\n private selectionElement: HTMLElement | undefined;\n\n private get resultsElement(): HTMLElement | undefined {\n const container = this.resultContainer();\n return container ? container.nativeElement : undefined;\n }\n\n private _stateChanges = new Subject<void>();\n\n /** Tab index for the element. */\n protected get _tabIndex(): number {\n return this.disabledState ? -1 : this.tabIndex();\n }\n\n private _data: Select2Data = [];\n\n private _disabled = false;\n private _destroyed = false;\n\n protected _value: Select2UpdateValue | null = null;\n private _previousNativeValue: Select2UpdateValue | undefined;\n private _overlayPosition: VerticalConnectionPos | undefined;\n private toObservable = new Subscription();\n\n constructor(\n protected _viewportRuler: ViewportRuler,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() private _parentForm: NgForm,\n @Optional() private _parentFormGroup: FormGroupDirective,\n @Self() @Optional() public _control: NgControl,\n @Attribute('tabindex') tabIndex: string,\n ) {\n if (this._control) {\n this._control.valueAccessor = this;\n }\n this.toObservable.add(\n toObservable(this.multiple).subscribe(_multiple => {\n this.ngOnInit();\n }),\n );\n this.toObservable.add(\n toObservable(this.minCountForSearch).subscribe(minCountForSearch => {\n this.updateSearchBox();\n }),\n );\n this.toObservable.add(\n toObservable(this.disabled).subscribe(disabled => {\n this._disabled = disabled;\n }),\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n let updateFilterData;\n if (changes['data']) {\n this._data = changes['data'].currentValue;\n updateFilterData = true;\n }\n if (changes['value']) {\n const value = changes['value'].currentValue;\n if (this.testValueChange(this._value, value)) {\n if (this._value === null) {\n this._value = value;\n }\n this.writeValue(value);\n updateFilterData = true;\n }\n }\n // now call update filter data so that _data and the current selected values are set\n if (updateFilterData) {\n this.updateFilteredData();\n }\n }\n\n @HostListener('document:click', ['$event'])\n clickDetection(e: MouseEvent) {\n if (this.isOpen) {\n const target = e.target as HTMLElement;\n if (!this.ifParentContainsClass(target, 'selection')) {\n if (\n (!this.ifParentContainsClass(target, 'select2-dropdown') &&\n !this.multiple() &&\n !this.hideSelectedItems()) ||\n !(\n this.ifParentContainsClass(target, 'select2-results__option') ||\n this.ifParentContainsClass(target, 'select2-dropdown')\n )\n ) {\n this.toggleOpenAndClose();\n }\n\n if (!this.overlay() && !this.ifParentContainsId(target, this.id())) {\n this.clickExit();\n }\n } else if (!this.ifParentContainsId(target, this.id())) {\n this.toggleOpenAndClose();\n this.clickExit();\n }\n } else if (this.focused) {\n const target = e.target as HTMLElement;\n this._focus(this.clickOnSelect2Element(target));\n }\n }\n\n /** View -> model callback called when select has been touched */\n private _onTouched = () => {\n // do nothing\n };\n\n /** View -> model callback called when value changes */\n private _onChange: (value: any) => void = () => {\n // do nothing\n };\n\n ngOnInit() {\n this._viewportRuler.change(100).subscribe(() => {\n if (this.isOpen) {\n this.triggerRect();\n }\n });\n\n const controlValue = this._control ? this._control.value : this.value();\n const option = Select2Utils.getOptionsByValue(this._data, controlValue, this.multiple());\n if (option !== null) {\n this.selectedOption = option;\n }\n if (!Array.isArray(option)) {\n this.hoveringOption.set(Select2Utils.getOptionByValue(this._data, this.value));\n }\n this.updateSearchBox();\n }\n\n ngAfterViewInit() {\n this.cdkConnectedOverlay().positionChange.subscribe((posChange: ConnectedOverlayPositionChange) => {\n if (\n this.listPosition() === 'auto' &&\n posChange.connectionPair?.originY &&\n this._overlayPosition !== posChange.connectionPair.originY\n ) {\n this.triggerRect();\n this._overlayPosition = posChange.connectionPair.originY;\n this._changeDetectorRef.detectChanges();\n }\n });\n\n this.selectionElement = this.selection().nativeElement;\n this.triggerRect();\n }\n\n ngDoCheck() {\n this.updateSearchBox();\n this._dirtyCheckNativeValue();\n if (this._triggerRect) {\n if (this.overlayWidth !== this._triggerRect.width) {\n this.overlayWidth = this._triggerRect.width;\n this._changeDetectorRef.detectChanges();\n }\n if (\n this._dropdownRect &&\n this._dropdownRect.height > 0 &&\n this.overlayHeight !== this._dropdownRect.height\n ) {\n this.overlayHeight = this.listPosition() === 'auto' ? this._dropdownRect.height : 0;\n this.fixValue();\n }\n }\n }\n\n ngOnDestroy(): void {\n this._destroyed = true;\n this.toObservable.unsubscribe();\n }\n\n fixValue() {\n if (!Array.isArray(this.selectedOption) && this.multiple()) {\n const selectedOption = this.selectedOption;\n this.selectedOption = [];\n setTimeout(() => {\n if (!this._destroyed) {\n this.select(selectedOption);\n this._changeDetectorRef.detectChanges();\n }\n });\n } else if (Array.isArray(this.selectedOption) && !this.multiple()) {\n const selectedOption = this.selectedOption[0];\n this.selectedOption = null;\n setTimeout(() => {\n if (!this._destroyed) {\n this.select(selectedOption);\n this._changeDetectorRef.detectChanges();\n }\n });\n } else {\n this._changeDetectorRef.detectChanges();\n }\n }\n\n updateSearchBox() {\n if (this.autoCreate() && !this.multiple()) {\n this.isSearchboxHidden = false;\n } else {\n const hidden =\n this.displaySearchStatus() === 'hidden' ||\n (this.displaySearchStatus() !== 'always' &&\n !this.customSearchEnabled() &&\n Select2Utils.isSearchboxHidden(this._data, this.minCountForSearch()));\n\n if (this.isSearchboxHidden !== hidden) {\n this.isSearchboxHidden = hidden;\n }\n }\n }\n\n getOptionStyle(option: Select2Option) {\n return (\n 'select2-results__option ' +\n (option.hide ? 'select2-results__option--hide ' : '') +\n (option === this.hoveringOption() ? 'select2-results__option--highlighted ' : '') +\n (option.classes || '')\n );\n }\n\n mouseenter(option: Select2Option) {\n if (!option.disabled) {\n this.hoveringOption.set(option);\n }\n }\n\n click(option: Select2Option) {\n if (this.testSelection(option)) {\n this.select(option);\n }\n }\n\n reset(event?: MouseEvent) {\n const resetSelectedValue = this.resetSelectedValue();\n this.select(\n resetSelectedValue !== undefined\n ? (Select2Utils.getOptionByValue(this._data, resetSelectedValue) ?? null)\n : null,\n );\n\n if (event) {\n this.stopEvent(event);\n }\n this._focus(true);\n }\n\n prevChange(event: Event) {\n event.stopPropagation();\n }\n\n stopEvent(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n toggleOpenAndClose(focus = true, open?: boolean, event?: KeyboardEvent) {\n if (this.disabledState || this.readonly()) {\n return;\n }\n this._focus(focus);\n\n const onOpenAction = event && this._testKey(event, ON_OPEN_KEYS);\n const changeEmit = this.isOpen !== (open ?? !this.isOpen);\n this.isOpen = open ?? !this.isOpen;\n if (this.isOpen) {\n if (!this.isSearchboxHidden) {\n this.innerSearchText = '';\n this.updateFilteredData();\n this._focusSearchbox(focus);\n }\n\n if (this._shouldKeyDownOnOpen(changeEmit, event)) {\n this.keyDown(event!);\n } else {\n this._scrollToInitialOption();\n this._handleOnOpenAction(onOpenAction, event);\n this._changeDetectorRef.detectChanges();\n\n this.triggerRect();\n this.cdkConnectedOverlay().overlayRef?.updatePosition();\n }\n if (changeEmit) {\n this.open.emit(this);\n }\n } else if (changeEmit) {\n this.close.emit(this);\n }\n\n this._changeDetectorRef.markForCheck();\n }\n\n hasTemplate(option: Select2Option | Select2Group, defaultValue: string, select: boolean = false) {\n const templates: any = this.templates();\n const templatesValue: any = this.templates();\n return (\n (select\n ? templates?.[(option as Select2Option).templateSelectionId ?? ''] instanceof TemplateRef ||\n templates?.[`${defaultValue}Selection`] instanceof TemplateRef ||\n templates?.[`templateSelection`] instanceof TemplateRef ||\n this.templateSelection() instanceof TemplateRef\n : false) ||\n templatesValue?.[option.templateId ?? ''] instanceof TemplateRef ||\n templatesValue?.[defaultValue] instanceof TemplateRef ||\n templatesValue?.['template'] instanceof TemplateRef ||\n templatesValue instanceof TemplateRef ||\n false\n );\n }\n\n getTemplate(option: Select2Option | Select2Group, defaultValue: string, select: boolean = false) {\n const templates: any = this.templates();\n const templatesValue: any = this.templates();\n if (!this.hasTemplate(option, defaultValue, select)) {\n return undefined;\n }\n const selectionTemplate = select\n ? templates?.[(option as Select2Option).templateSelectionId ?? ''] ||\n templates?.[`${defaultValue}Selection`] ||\n templates?.[`templateSelection`] ||\n this.templateSelection()\n : undefined;\n return (\n selectionTemplate ||\n templatesValue?.[option.templateId ?? ''] ||\n templatesValue?.[defaultValue] ||\n templatesValue?.['template'] ||\n templatesValue\n );\n }\n\n triggerRect() {\n this._triggerRect = this.selectionElement?.getBoundingClientRect();\n const dropdown = this.dropdown();\n this._dropdownRect = dropdown?.nativeElement ? dropdown.nativeElement.getBoundingClientRect() : undefined;\n }\n\n isNumber(o: any): boolean {\n return !isNaN(o - 0) && o !== null && o !== '' && o !== false;\n }\n\n selectAll() {\n if (this.multiple()) {\n if (!this.selectAllTest()) {\n const options: Select2Option[] = [];\n this._data.forEach(e => {\n if (Select2Utils.isGroup(e)) {\n e.options.forEach(f => {\n if (!f.disabled && !f.hide) {\n options.push(f);\n }\n });\n } else if (!e.disabled && !e.hide) {\n options.push(e);\n }\n });\n this.selectedOption = options;\n this.writeValue(options.map(e => e.value));\n } else {\n this.selectedOption = [];\n this.writeValue([]);\n }\n\n this.isOpen = false;\n this.close.emit(this);\n }\n }\n\n selectAllTest() {\n if (this.multiple() && Array.isArray(this.selectedOption) && this.selectedOption.length) {\n let options = 0;\n this._data.forEach(e => {\n if (Select2Utils.isGroup(e)) {\n e.options.forEach(f => {\n if (!f.disabled && !f.hide) {\n options++;\n }\n });\n } else if (!e.disabled && !e.hide) {\n options++;\n }\n });\n return this.selectedOption.length === options;\n }\n return false;\n }\n\n private testSelection(option: Select2Option) {\n if (option.disabled) {\n return false;\n }\n\n const limitSelection = this.limitSelection();\n return !this.multiple() || !limitSelection || this.optionsSize() < limitSelection;\n }\n\n private testValueChange(value1: Select2UpdateValue | null, value2: Select2UpdateValue | undefined) {\n if (\n ((value1 === null || value1 === undefined) && (value2 === null || value2 === undefined)) ||\n value1 === value2\n ) {\n return false;\n }\n if (\n this.multiple() &&\n (value1 as Select2Value[])?.length &&\n (value2 as Select2Value[])?.length &&\n (value1 as Select2Value[]).length === (value2 as Select2Value[]).length\n ) {\n for (const e1 of value1 as Select2Value[]) {\n const test = (value2 as Select2Value[]).indexOf(e1) > -1;\n if (!test) {\n return true;\n }\n }\n return false;\n }\n return true;\n }\n\n private updateFilteredData() {\n let result = this._data;\n\n if (this.multiple() && this.hideSelectedItems()) {\n result = Select2Utils.getFilteredSelectedData(result, this.selectedOption);\n }\n if (!this.customSearchEnabled() && this.searchText && this.searchText.length >= +this.minCharForSearch()) {\n result = Select2Utils.getFilteredData(result, this.searchText, this.editPattern());\n }\n if (this.maxResults() > 0) {\n const data = Select2Utils.getReduceData(result, +this.maxResults());\n result = data.result;\n this.maxResultsExceeded = data.reduce;\n } else {\n this.maxResultsExceeded = false;\n }\n\n if (Select2Utils.optionIsNotInFilteredData(result, this.hoveringOption())) {\n this.hoveringOption.set(Select2Utils.getFirstAvailableOption(result));\n }\n\n this.filteredData.set(result);\n\n // replace selected options when data change\n\n if (this.multiple() && Array.isArray(this.selectedOption) && this.selectedOption.length) {\n const options: Select2Option[] = [];\n const value = this.selectedOption.map(e => e.value);\n this._data.forEach(e => {\n if (Select2Utils.isGroup(e)) {\n e.options.forEach(f => {\n if (value.includes(f.value)) {\n options.push(f);\n }\n });\n } else if (value.includes(e.value)) {\n options.push(e);\n }\n });\n // preserve selection order\n this.selectedOption = this.selectedOption.map(e => options.find(f => f.value === e.value)!);\n } else if (!Array.isArray(this.selectedOption) && this.selectedOption) {\n let option: Select2Option | null = null;\n this._data.forEach(e => {\n if (Select2Utils.isGroup(e)) {\n e.options.forEach(f => {\n if ((this.selectedOption as Select2Option).value === f.value) {\n option = f;\n }\n });\n } else if ((this.selectedOption as Select2Option).value === e.value) {\n option = e;\n }\n });\n this.selectedOption = option;\n }\n this._changeDetectorRef.detectChanges();\n }\n\n private clickExit() {\n this._focus(false);\n }\n\n private isInSelect(elt: Element): boolean {\n return this.ifParentContainsId(elt, this.id()) || this.ifParentContainsId(elt, this.idOverlay());\n }\n\n private ifParentContainsClass(element: Element, cssClass: string): boolean {\n return this.getParentElementByClass(element, cssClass) !== null;\n }\n\n private ifParentContainsId(element: Element, id: string): boolean {\n return this.getParentElementById(element, id) !== null;\n }\n\n private getParentElementByClass(element: Element, cssClass: string): Element | null {\n return this.containClasses(element, cssClass.trim().split(/\\s+/))\n ? element\n : element.parentElement\n ? this.getParentElementByClass(element.parentElement, cssClass)\n : null;\n }\n\n private getParentElementById(element: Element, id: string): Element | null {\n return element.id === id\n ? element\n : element.parentElement\n ? this.getParentElementById(element.parentElement, id)\n : null;\n }\n\n private containClasses(element: Element, cssClasses: string[]): boolean {\n if (!element.classList) {\n return false;\n }\n\n for (const cssClass of cssClasses) {\n if (!element.classList.contains(cssClass)) {\n return false;\n }\n }\n\n return true;\n }\n\n private containAlmostOneClasses(element: HTMLElement, cssClasses: string[]): boolean {\n let containAlmostOne = false;\n for (const cssClass of cssClasses) {\n if (element.classList.contains(cssClass)) {\n containAlmostOne = true;\n }\n }\n\n return containAlmostOne;\n }\n\n private clickOnSelect2Element(element: HTMLElement): boolean {\n return this.containAlmostOneClasses(element, [\n 'select2-overlay-backdrop',\n 'select2-label-content',\n 'select2-selection__rendered',\n 'select2-results__option',\n ]);\n }\n\n focusin(options?: FocusOptions) {\n if (!this.disabledState) {\n this._focus(true, options);\n }\n }\n\n focusout(event: FocusEvent) {\n if (!event.relatedTarget || !this.isInSelect(event.relatedTarget as Element)) {\n this._focus(false);\n this._onTouched();\n }\n }\n\n select(option: Select2Option | null, emit: boolean = true, closeOnSelect: boolean = true) {\n let value: any;\n\n if (option !== null && option !== undefined) {\n if (this.multiple()) {\n this.selectedOption ??= [];\n const options = this.selectedOption as Select2Option[];\n const index = options.findIndex(op => op.value === option.value);\n if (index === -1) {\n options.push(option);\n } else {\n options.splice(index, 1);\n }\n\n value = (this.selectedOption as Select2Option[]).map(op => op.value);\n } else {\n this.selectedOption = option;\n if (closeOnSelect && this.isOpen) {\n this.isOpen = false;\n this.close.emit(this);\n this.selectionElement?.focus();\n }\n value = this.selectedOption.value;\n }\n } else {\n // when remove value\n const hasSelection = Array.isArray(this.selectedOption)\n ? this.selectedOption.length > 0\n : !!this.selectedOption;\n if (hasSelection) {\n value = '';\n }\n this.selectedOption = null;\n }\n\n if (this.multiple() && this.hideSelectedItems()) {\n this.updateFilteredData();\n }\n\n emit &&= value !== undefined && this.testDiffValue(this._value, value);\n\n if (this._control) {\n this._onChange(value);\n }\n\n if (emit) {\n this.writeValue(value);\n setTimeout(() => {\n if (!this._destroyed) {\n this.updateEvent(value);\n }\n });\n }\n }\n\n private testDiffValue(val1: Select2UpdateValue | null, val2: any) {\n if (Array.isArray(val1)) {\n return val1.length !== val2.length;\n }\n return val1 !== val2;\n }\n\n keyDown(event: KeyboardEvent, create = false) {\n if (create && this._testKey(event, ['Enter'])) {\n this.createAndAdd(event);\n } else if (this._testKey(event, [{ key: 'ArrowDown', altKey: false }])) {\n this.moveDown();\n this.actionAfterKeyDownMoveAction(event);\n } else if (this._testKey(event, [{ key: 'ArrowUp', altKey: false }])) {\n this.moveUp();\n this.actionAfterKeyDownMoveAction(event);\n } else if (this._testKey(event, ['Home'])) {\n this.moveStart();\n this.actionAfterKeyDownMoveAction(event);\n } else if (this._testKey(event, ['End'])) {\n this.moveEnd();\n this.actionAfterKeyDownMoveAction(event);\n } else if (this._testKey(event, ['PageUp'])) {\n this.moveUp(10);\n this.actionAfterKeyDownMoveAction(event);\n } else if (this._testKey(event, ['PageDown'])) {\n this.moveDown(10);\n this.actionAfterKeyDownMoveAction(event);\n } else if (this._testKey(event, ['Enter']) || (this.isSearchboxHidden && this._testKey(event, [' ']))) {\n this.selectByEnter(true);\n event.preventDefault();\n } else if (this._testKey(event, CLOSE_KEYS) && this.isOpen) {\n this.toggleOpenAndClose();\n this._focus(true);\n }\n }\n\n private actionAfterKeyDownMoveAction(event: KeyboardEvent) {\n event.preventDefault();\n if (this.nativeKeyboard() && !this.multiple()) {\n this.selectByEnter(false);\n }\n }\n\n openKey(event: KeyboardEvent, create = false) {\n if (create && this._testKey(event, ['Enter'])) {\n this.createAndAdd(event);\n return;\n }\n if (this._testKey(event, this.nativeKeyboard() && !this.multiple() ? OPEN_KEYS_NATIVE : OPEN_KEYS)) {\n this.toggleOpenAndClose(true, true, event);\n event.preventDefault();\n return;\n }\n if (this.nativeKeyboard() && !this.multiple() && this._testKey(event, CLOSE_KEYS_NATIVE)) {\n this.updateScrollFromOption(this.select2Option);\n this.keyDown(event, create);\n return;\n }\n this._closeOnKey(event);\n }\n\n private _closeOnKey(event: KeyboardEvent) {\n if (this._testKey(event, CLOSE_KEYS) && this.isOpen) {\n this.toggleOpenAndClose();\n this._onTouched();\n }\n }\n\n private _shouldKeyDownOnOpen(changeEmit: boolean, event?: KeyboardEvent): boolean {\n return !!(this.isSearchboxHidden && !changeEmit && event);\n }\n\n private _handleOnOpenAction(onOpenAction: any, event?: KeyboardEvent) {\n if (onOpenAction) {\n this.keyDown(event!);\n }\n }\n\n private _scrollToInitialOption() {\n if (this.selectedOption) {\n const option = Array.isArray(this.selectedOption) ? this.selectedOption[0] : this.selectedOption;\n this.updateScrollFromOption(option);\n return;\n }\n if (this.resultsElement) {\n this.resultsElement.scrollTop = 0;\n }\n }\n\n searchUpdate(e: Event) {\n this.searchText = (e.target as HTMLInputElement).value;\n if (!this.customSearchEnabled()) {\n this.updateFilteredData();\n } else {\n this.search.emit({\n component: this,\n value: this._value,\n search: this.searchText,\n data: this._data,\n filteredData: (data: Select2Data) => {\n this.filteredData.set(data);\n this._changeDetectorRef.markForCheck();\n },\n });\n }\n }\n\n isSelected(option: Select2Option) {\n return Select2Utils.isSelected(this.selectedOption, option, this.multiple());\n }\n\n isDisabled(option: Select2Option) {\n return option.disabled ? 'true' : 'false';\n }\n\n removeSelection(e: MouseEvent | KeyboardEvent | Event, option: Select2Option) {\n if (this.readonly() || this.disabledState) {\n return;\n }\n\n Select2Utils.removeSelection(this.selectedOption, option);\n\n if (this.multiple() && this.hideSelectedItems()) {\n this.updateFilteredData();\n }\n\n const value = (this.selectedOption as Select2Option[]).map(op => op.value);\n\n if (this._control) {\n this._onChange(value);\n } else {\n this._value = value;\n }\n\n this.updateEvent(value);\n this.removeOption.emit({\n component: this,\n value: value,\n removedOption: option,\n });\n\n e.preventDefault();\n e.stopPropagation();\n\n if (this.isOpen) {\n this._focusSearchbox();\n } else {\n this._focus(true);\n }\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value\n */\n writeValue(value: any) {\n this.selectedOption = null;\n this._setSelectionByValue(this.multiple() ? (value ?? []) : value);\n if (this.testValueChange(this._value, value)) {\n this._value = value;\n }\n }\n\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn: (value: any) => void): void {\n this._onChange = fn;\n }\n\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n /**\n * Sets whether the component should be disabled.\n * Implemented as part of ControlValueAccessor.\n * @param isDisabled\n */\n setDisabledState(isDisabled: boolean) {\n this._disabled = isDisabled;\n }\n\n onScroll(way: 'up' | 'down') {\n this.scroll.emit({\n component: this,\n way,\n search: this.innerSearchText,\n data: this._data,\n });\n }\n\n drop(event: CdkDragDrop<string[], string[], any>) {\n if (Array.isArray(this.selectedOption)) {\n moveItemInArray(this.selectedOption, event.previousIndex, event.currentIndex);\n const value = this.selectedOption.map(e => e.value);\n this.writeValue(value);\n this._value = value;\n this.updateEvent(value);\n }\n }\n\n _isErrorState(): boolean {\n const isInvalid = this._control?.invalid;\n const isTouched = this._control?.touched;\n const isSubmitted = this._isFormSubmitted();\n return !!(isInvalid && (isTouched || isSubmitted));\n }\n\n private _isFormSubmitted(): boolean {\n if (this._parentFormGroup) {\n return this._parentFormGroup.submitted;\n }\n if (this._parentForm) {\n return this._parentForm.submitted;\n }\n return false;\n }\n\n _selectionOverrideLabel() {\n const selectionOverride = this.selectionOverride();\n if (typeof selectionOverride === 'function') {\n return selectionOverride({\n size: this.optionsSize(),\n options: Array.isArray(this.selectedOption)\n ? this.selectedOption\n : this.selectedOption\n ? [this.selectedOption]\n : null,\n });\n } else if (typeof selectionOverride === 'string') {\n return selectionOverride.replaceAll('%size%', `${this.optionsSize()}`);\n }\n return undefined;\n }\n\n getElementId(elt: Select2Group | Select2Option | null): string | null {\n if (!elt) {\n return elt;\n } else if (elt.id) {\n return elt.id;\n }\n\n const [i, j] = this._getElementPath(elt);\n elt.id = `${this.id()}-option${this._toSuffix(i)}${this._toSuffix(j)}`;\n return elt.id;\n }\n\n private _toSuffix(index: number | undefined): string {\n if (index !== undefined) {\n return `-${index}`;\n }\n return '';\n }\n\n _getElementPath(elt: Select2Group | Select2Option): number[] {\n for (let i = 0; i < this._data.length; i++) {\n const optionOrGroup = this._data[i];\n\n if (optionOrGroup === elt) {\n return [i];\n } else if (Select2Utils.isGroup(optionOrGroup)) {\n const j = optionOrGroup.options.findIndex(o => o === elt);\n if (j >= 0) {\n return [i, j];\n }\n }\n }\n\n return [];\n }\n\n _toGroup(group: Select2Option | Select2Group) {\n return group as Select2Group;\n }\n\n _toOption(option: Select2Option | Select2Group) {\n return option as Select2Option;\n }\n\n private updateEvent(value: Select2UpdateValue) {\n this.update.emit({\n component: this,\n value: value,\n options: Array.isArray(this.selectedOption)\n ? this.selectedOption\n : this.selectedOption\n ? [this.selectedOption]\n : null,\n });\n }\n\n private optionsSize() {\n return Array.isArray(this.selectedOption) ? this.selectedOption.length : this.selectedOption ? 1 : 0;\n }\n\n private addItem(value: string): Select2Option {\n let item = Select2Utils.getOptionByValue(this._data, value);\n if (!item) {\n item = {\n value,\n label: value,\n };\n this._data.push(item);\n }\n return item;\n }\n\n private createAndAdd(e: KeyboardEvent) {\n const value = (e.target as HTMLInputElement).value;\n if (value.trim()) {\n (e.target as HTMLInputElement).value = '';\n this.searchText = '';\n const item = this.addItem(value.trim());\n this.click(item);\n this.updateFilteredData();\n\n const options: Select2Option[] = Array.isArray(this.selectedOption)\n ? this.selectedOption\n : [this.selectedOption!];\n\n this.autoCreateItem.emit({\n value: item,\n component: this,\n options,\n });\n }\n this.stopEvent(e);\n }\n\n private moveUp(times = 1) {\n for (let i = 0; i < times; i++) {\n this.updateScrollFromOption(Select2Utils.getPreviousOption(this.filteredData()!, this.hoveringOption()));\n }\n }\n\n private moveDown(times = 1) {\n for (let i = 0; i < times; i++) {\n this.updateScrollFromOption(Select2Utils.getNextOption(this.filteredData()!, this.hoveringOption()));\n }\n }\n\n private moveStart() {\n this.updateScrollFromOption(Select2Utils.getFirstOption(this.filteredData()!));\n }\n\n private moveEnd() {\n this.updateScrollFromOption(Select2Utils.getLastOption(this.filteredData()!));\n }\n\n private updateScrollFromOption(option: Select2Option | null) {\n if (option) {\n this.hoveringOption.set(option);\n const domElement = this.results().find(r => r.nativeElement.innerText.trim() === option.label);\n if (domElement && this.resultsElement) {\n const resultClientRect = this.resultsElement.getBoundingClientRect();\n const eltClientRect = domElement.nativeElement.getBoundingClientRect();\n\n if (eltClientRect.bottom > resultClientRect.bottom) {\n // Needs element scroll to bottom\n this.resultsElement.scrollTop += eltClientRect.bottom - resultClientRect.bottom;\n } else if (resultClientRect.top > eltClientRect.top) {\n // Needs element scroll to top\n this.resultsElement.scrollTop += eltClientRect.top - resultClientRect.top;\n }\n }\n }\n }\n\n private selectByEnter(close: boolean = false) {\n const hoveringOption = this.hoveringOption();\n if (hoveringOption) {\n this.select(hoveringOption, true, close);\n }\n }\n\n private _testKey(event: KeyboardEvent, refs: (string | KeyInfo)[] = []): boolean {\n const { key, altKey } = event;\n return refs.some(ref => {\n if (typeof ref === 'string') {\n return ref === key;\n } else {\n return key === ref.key && altKey === ref.altKey;\n }\n });\n }\n\n /**\n * Sets the selected option based on a value. If no option can be\n * found with the designated value, the select trigger is cleared.\n */\n private _setSelectionByValue(value: any | any[]): void {\n if (this.selectedOption || (value !== undefined && value !== null)) {\n const isArray = Array.isArray(value);\n if (this.multiple() && value && !isArray) {\n throw new Error('Non array value.');\n } else if (this._data) {\n if (this.multiple()) {\n if (!Array.isArray(this.selectedOption)) {\n this.selectedOption = []; // if value is null, then empty option and return\n }\n if (isArray) {\n this._preselectArrayValue(value);\n } else if (value === null) {\n // fix if value is null\n this._value = [];\n this.reset();\n this.select(null, false);\n this.updateEvent(this._value);\n }\n } else {\n this._value = value;\n this.select(Select2Utils.getOptionByValue(this._data, this._value), this.isOpen, false);\n }\n } else if (this._control) {\n this._control.viewToModelUpdate(value);\n }\n\n this._changeDetectorRef.markForCheck();\n }\n }\n\n private _preselectArrayValue(value: any[]) {\n (Select2Utils.getOptionsByValue(this._data, value, this.multiple()) as []).forEach(item =>\n this.select(item, false),\n );\n this._value ??= value;\n\n if (this.testDiffValue(this._value, value)) {\n this.updateEvent(value);\n }\n }\n\n /** Does some manual dirty checking on the native input `value` property. */\n private _dirtyCheckNativeValue() {\n const newValue = this.value();\n\n if (this._previousNativeValue !== newValue) {\n this._previousNativeValue = newValue;\n this._stateChanges.next();\n }\n }\n\n private _focusSearchbox(focus = true) {\n if (!this.isSearchboxHidden) {\n setTimeout(() => {\n const searchInput = this.searchInput();\n if (searchInput && searchInput.nativeElement && focus) {\n searchInput.nativeElement.focus();\n }\n });\n }\n }\n\n private _focus(state: boolean, options?: FocusOptions) {\n if (state) {\n const eltToFocus =\n !this.isSearchboxHidden && this.isOpen\n ? this.searchInput()!.nativeElement\n : this.selection().nativeElement;\n if (document.activeElement !== eltToFocus) {\n eltToFocus.focus(options);\n }\n } else {\n const selectionRef = this.selection();\n const searchRef = this.searchInput();\n const selectionEl = selectionRef ? selectionRef.nativeElement : null;\n const searchEl = searchRef ? searchRef.nativeElement : null;\n if (document.activeElement === selectionEl || document.activeElement === searchEl) {\n (document.activeElement as HTMLElement).blur();\n }\n }\n\n this._updateFocusState(state);\n }\n\n private _isAbobeOverlay(): boolean {\n const listPosition = this.listPosition();\n return this.overlay() && this._overlayPosition && listPosition === 'auto'\n ? this._overlayPosition === 'top'\n : listPosition === 'above';\n }\n\n protected _updateFocusState(state: boolean) {\n if (!state && this.focused) {\n this.focused = state;\n this.blur.emit(this);\n } else if (state && !this.focused) {\n this.focused = state;\n this.focus.emit(this);\n }\n }\n}\n","<label class=\"select2-label\" (click)=\"toggleOpenAndClose()\" [id]=\"idLabel()\">\n <ng-content select=\"select2-label, ng-select2-label\"></ng-content>\n @if (required()) {\n <span class=\"select2-required\" aria-hidden=\"true\"></span>\n }\n</label>\n\n<div\n class=\"select2 select2-container select2-container--default\"\n [class.select2-container--focus]=\"focused\"\n [class.select2-container--below]=\"!select2above\"\n [class.select2-container--above]=\"select2above\"\n [class.select2-container--open]=\"isOpen\"\n [class.select2-container--disabled]=\"disabled()\"\n [class.select2-container--readonly]=\"readonly()\"\n>\n <div\n [id]=\"idCombo()\"\n role=\"combobox\"\n class=\"selection\"\n #selection\n #trigger=\"cdkOverlayOrigin\"\n [tabindex]=\"!this.isOpen ? _tabIndex : '-1'\"\n [attr.aria-labelledby]=\"ariaLabelledby() ?? idLabel()\"\n [attr.aria-expanded]=\"isOpen\"\n aria-haspopup=\"listbox\"\n [attr.aria-controls]=\"idOptions()\"\n [attr.aria-activedescendant]=\"isOpen ? hoveringOptionId() : null\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [attr.title]=\"title()\"\n [attr.aria-invalid]=\"_isErrorState() || ariaInvalid() ? 'true' : null\"\n [attr.aria-required]=\"required() ? 'true' : null\"\n [attr.aria-readonly]=\"readonly() ? 'true' : null\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n (click)=\"toggleOpenAndClose()\"\n (focus)=\"focusin()\"\n (focusout)=\"focusout($event)\"\n (keydown)=\"openKey($event)\"\n cdkOverlayOrigin\n [class.select2-focused]=\"focused\"\n >\n <div\n class=\"select2-selection\"\n [class.select2-selection--multiple]=\"multiple()\"\n [class.select2-selection--single]=\"!multiple()\"\n >\n @if (selectionOverride()) {\n <span class=\"select2-selection__override\" [innerHTML]=\"_selectionOverrideLabel()\"></span>\n\n @if (\n resettable() &&\n !(disabled() || readonly()) &&\n resetSelectedValue() !== _value &&\n ((!multiple() && select2Option) || (multiple() && select2Options.length > 0))\n ) {\n <ng-container *ngTemplateOutlet=\"resetButton\"></ng-container>\n }\n } @else if (!multiple()) {\n <span\n class=\"select2-selection__rendered\"\n [title]=\"select2Option?.label || ''\"\n [attr.aria-live]=\"nativeKeyboard() && !isOpen ? 'polite' : null\"\n >\n @if (!select2Option) {\n <span> </span>\n }\n @if (select2Option) {\n @if (!hasTemplate(select2Option, 'option', true) || noLabelTemplate()) {\n <span [innerHTML]=\"select2Option.label\"></span>\n } @else {\n <ng-container\n *ngTemplateOutlet=\"getTemplate(select2Option, 'option', true); context: select2Option\"\n ></ng-container>\n }\n }\n <span\n [class.select2-selection__placeholder__option]=\"selectedOption\"\n class=\"select2-selection__placeholder\"\n >{{ placeholder() }}</span\n >\n </span>\n\n @if (resettable() && resetSelectedValue() !== _value && select2Option && !(disabled() || readonly())) {\n <ng-container *ngTemplateOutlet=\"resetButton\"></ng-container>\n }\n <span class=\"select2-selection__arrow\" role=\"presentation\"> </span>\n } @else {\n <ul\n class=\"select2-selection__rendered\"\n cdkDropList\n cdkDropListOrientation=\"mixed\"\n [cdkDropListDisabled]=\"!multipleDrag()\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @if (!autoCreate()) {\n <span\n [class.select2-selection__placeholder__option]=\"select2Options.length > 0\"\n class=\"select2-selection__placeholder\"\n >{{ placeholder() }}</span\n >\n }\n @for (op of selectedOption || []; track op.id) {\n <li\n class=\"select2-selection__choice\"\n [title]=\"op.label\"\n tabindex=\"0\"\n (focus)=\"_updateFocusState(true)\"\n (keydown.enter)=\"removeSelection($event, op)\"\n cdkDrag\n >\n @if (!(disabled() || readonly())) {\n <span\n (click)=\"removeSelection($event, op)\"\n class=\"select2-selection__choice__remove\"\n role=\"presentation\"\n aria-hidden=\"true\"\n >×</span\n >\n }\n @if (!hasTemplate(op, 'option', true) || noLabelTemplate()) {\n <span [innerHTML]=\"op.label\"></span>\n } @else {\n <ng-container *ngTemplateOutlet=\"getTemplate(op, 'option', true); context: op\"></ng-container>\n }\n </li>\n }\n @if (autoCreate()) {\n <li class=\"select2-selection__auto-create\" (focus)=\"stopEvent($event)\" (blur)=\"stopEvent($event)\">\n <input\n [id]=\"id() + '-create-field'\"\n [placeholder]=\"$any(selectedOption)?.length > 0 ? '' : (placeholder() ?? '')\"\n (click)=\"toggleOpenAndClose(false, true); stopEvent($event)\"\n (keydown)=\"keyDown($event, true)\"\n (keyup)=\"searchUpdate($event)\"\n (change)=\"prevChange($event)\"\n class=\"select2-create__field\"\n type=\"search\"\n role=\"textbox\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n />\n </li>\n }\n </ul>\n @if (resettable() && $any(selectedOption)?.length > 0 && !(disabled() || readonly())) {\n <ng-container *ngTemplateOutlet=\"resetButton\"></ng-container>\n }\n }\n </div>\n </div>\n @if (!overlay()) {\n <ng-container *ngTemplateOutlet=\"containerTemplate\"></ng-container>\n }\n\n <div class=\"select2-subscript-wrapper\">\n <ng-content select=\"select2-hint, ng-select2-hint\"></ng-content>\n </div>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"select2-overlay-backdrop\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"this.isOpen && overlay()\"\n [cdkConnectedOverlayMinWidth]=\"overlayWidth\"\n [cdkConnectedOverlayHeight]=\"overlayHeight\"\n [cdkConnectedOverlayPositions]=\"_positions\"\n (backdropClick)=\"toggleOpenAndClose()\"\n>\n <ng-container *ngTemplateOutlet=\"containerTemplate\"></ng-container>\n</ng-template>\n\n<ng-template #containerTemplate>\n <div\n [id]=\"idOverlay()\"\n class=\"select2-container select2-container--default select2-container-dropdown\"\n [class.select2-container--open]=\"isOpen\"\n [class.select2-overlay]=\"overlay()\"\n [class.select2-position-auto]=\"listPosition() === 'auto'\"\n [class.select2-style-borderless]=\"styleMode() === 'borderless'\"\n >\n <div\n #dropdown\n class=\"select2-dropdown\"\n [class.select2-dropdown--below]=\"!select2above\"\n [class.select2-dropdown--above]=\"select2above\"\n >\n <div class=\"select2-search select2-search--dropdown\" [class.select2-search--hide]=\"isSearchboxHidden\">\n <input\n #searchInput\n [id]=\"id() + '-search-field'\"\n [value]=\"searchText\"\n (keydown)=\"keyDown($event, autoCreate())\"\n (keyup)=\"searchUpdate($event)\"\n (change)=\"prevChange($event)\"\n class=\"select2-search__field\"\n type=\"search\"\n role=\"combobox\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n [attr.tabindex]=\"this.isOpen ? _tabIndex : '-1'\"\n [attr.aria-labelledby]=\"ariaLabelledby() ?? idLabel()\"\n aria-autocomplete=\"list\"\n [attr.aria-controls]=\"idOptions()\"\n aria-expanded=\"true\"\n [attr.aria-activedescendant]=\"hoveringOptionId()\"\n />\n </div>\n\n <div class=\"select2-results\">\n <ul\n [id]=\"idOptions()\"\n #results\n class=\"select2-results__options\"\n [class.select2-grid]=\"grid() && isNumber(grid())\"\n [class.select2-grid-auto]=\"grid() && !isNumber(grid())\"\n [style.max-height]=\"resultMaxHeight()\"\n [style.--grid-size]=\"grid() || null\"\n role=\"listbox\"\n tabindex=\"-1\"\n infiniteScroll\n [infiniteScrollDisabled]=\"!infiniteScroll() && !isOpen\"\n [infiniteScrollDistance]=\"infiniteScrollDistance()\"\n [infiniteScrollThrottle]=\"infiniteScrollThrottle()\"\n [infiniteScrollContainer]=\"results\"\n [attr.aria-labelledby]=\"ariaLabelledby() ?? idLabel()\"\n [attr.aria-multiselectable]=\"multiple()\"\n [attr.aria-activedescendant]=\"hoveringOptionId()\"\n (scrolled)=\"onScroll('down')\"\n (scrolledUp)=\"onScroll('up')\"\n (keydown)=\"keyDown($event)\"\n >\n @if (showSelectAll() && multiple()) {\n <li class=\"select2-results__option select2-selectall\" (click)=\"selectAll()\" tabindex=\"1\" aria-selected>\n <div class=\"select2-label-content\">\n {{ selectAllTest() ? removeAllText() : selectAllText() }}\n </div>\n </li>\n }\n\n @for (groupOrOption of filteredData(); track groupOrOption.id; let i = $index) {\n @let group = _toGroup(groupOrOption);\n @if (group.options !== undefined) {\n <li class=\"select2-results__option select2-results__group\">\n <span [id]=\"getElementId(groupOrOption)\">\n @if (!hasTemplate(group, 'group')) {\n <strong\n [attr.class]=\"'select2-results__group' + (group.classes ? ' ' + group.classes : '')\"\n [innerHTML]=\"group.label\"\n ></strong>\n } @else {\n <ng-container *ngTemplateOutlet=\"getTemplate(group, 'group'); context: group\"> </ng-container>\n }\n </span>\n <ul\n class=\"select2-results__options select2-results__options--nested\"\n role=\"group\"\n [attr.aria-labelledby]=\"getElementId(groupOrOption)\"\n >\n @for (option of group.options; track option.id; let j = $index) {\n <li\n #result\n [id]=\"getElementId(option)\"\n [class]=\"getOptionStyle(option)\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(option)\"\n [attr.aria-disabled]=\"isDisabled(option)\"\n (mouseenter)=\"mouseenter(option)\"\n (click)=\"click(option)\"\n >\n @if (!hasTemplate(option, 'option')) {\n <div class=\"select2-label-content\" [innerHTML]=\"option.label\"></div>\n } @else {\n <ng-container *ngTemplateOutlet=\"getTemplate(option, 'option'); context: option\">\n </ng-container>\n }\n </li>\n }\n </ul>\n </li>\n } @else {\n @let option = _toOption(groupOrOption);\n <li\n #result\n [id]=\"getElementId(groupOrOption)\"\n [class]=\"getOptionStyle(option)\"\n role=\"option\"\n [attr.aria-selected]=\"isSelected(option)\"\n [attr.aria-disabled]=\"isDisabled(option)\"\n (mouseenter)=\"mouseenter(option)\"\n (click)=\"click(option)\"\n >\n @if (!hasTemplate(option, 'option')) {\n <div [innerHTML]=\"option.label\" class=\"select2-label-content\"></div>\n } @else {\n <ng-container *ngTemplateOutlet=\"getTemplate(option, 'option'); context: option\"> </ng-container>\n }\n </li>\n\n <ng-template #li>\n <ng-container *ngTemplateOutlet=\"getTemplate(option, 'option'); context: option\"> </ng-container>\n </ng-template>\n }\n }\n @if (!filteredData()?.length && noResultMessage()) {\n <li class=\"select2-no-result select2-results__option\" [innerHTML]=\"noResultMessage()\"></li>\n }\n @if (maxResultsExceeded) {\n <li class=\"select2-too-much-result select2-results__option\" [innerHTML]=\"maxResultsMessage()\"></li>\n }\n </ul>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ng-template #resetButton>\n <button\n type=\"button\"\n (focus)=\"_updateFocusState(true)\"\n (click)=\"reset($event)\"\n (keydown)=\"$event.stopPropagation()\"\n class=\"select2-selection__reset\"\n [attr.aria-description]=\"ariaResetButtonDescription()\"\n [attr.aria-controls]=\"idCombo()\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n</ng-template>\n","/*\n * Public API Surface of ng-select2-component\n */\n\nexport * from './lib/select2-const';\nexport * from './lib/select2-hint.component';\nexport * from './lib/select2-interfaces';\nexport * from './lib/select2-label.component';\nexport * from './lib/select2-utils';\nexport * from './lib/select2.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|