UNPKG

@ngx-dummy/select-simple

Version:

A simple select component to use in Angular / Ionic projects .. (WIP) and sample app using it

1 lines 55.6 kB
{"version":3,"file":"ngx-dummy-select-simple.mjs","sources":["../../../../packages/select-simple/src/lib/select-item.component.ts","../../../../packages/select-simple/src/lib/settings/helpers.ts","../../../../packages/select-simple/src/lib/theming/icons-base.ts","../../../../packages/select-simple/src/lib/select.component.ts","../../../../packages/select-simple/src/lib/select.component.html","../../../../packages/select-simple/src/lib/select-simple.module.ts","../../../../packages/select-simple/src/ngx-dummy-select-simple.ts"],"sourcesContent":["/* eslint-disable @angular-eslint/no-host-metadata-property */\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges, TemplateRef } from '@angular/core';\nimport { IOption, IOptionClickEvent } from './settings/models';\n\n@Component({\n\tselector: 'ngxd-select-item',\n\tstyles: [\n\t\t`\n\t\t\t:host {\n\t\t\t\tdisplay: block;\n\t\t\t\tpadding: 0.1rem;\n\t\t\t\t.item-disabled {\n\t\t\t\t\tcursor: not-allowed !important;\n\t\t\t\t\tpointer-events: none;\n\t\t\t\t\tcolor: var(--ngxd-disabled);\n\t\t\t\t\tuser-select: none;\n\t\t\t\t}\n\n\t\t\t\t.item-highlight:not(.item-disabled) {\n\t\t\t\t\tuser-select: none;\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t\tpointer-events: all;\n\t\t\t\t}\n\t\t\t}\n\t\t`,\n\t],\n\ttemplate: `\n\t\t<ng-container *ngIf=\"template; else simpleItemTmpl\">\n\t\t\t<ng-container *ngTemplateOutlet=\"template; context: { $implicit: option }\"></ng-container>\n\t\t</ng-container>\n\t\t<ng-template #simpleItemTmpl>{{ caption }}</ng-template>\n\t`,\n\thost: {\n\t\t'[attr.role]': '\"option\"',\n\t\t'[attr.disabled]': 'disabled',\n\t\t'[ngStyle]': '{ \"height\": \"height\", \"visibility\": \"visibility\", \"background-color\": \"itemBg\", \"color\": \"color\" }',\n\t\t'[class.select-item]': 'true',\n\t\t'[class.item-highlight]': 'selected',\n\t\t'[class.item-disabled]': 'disabled',\n\t\t'[ngClass]': 'option?.styleClass',\n\t\t'(click)': 'onOptionClick($event)',\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectItemComponent implements OnChanges {\n\t@Input() option: IOption = undefined;\n\t@Input() selected = false;\n\t@Input() disabled = false;\n\t@Input() visible = true;\n\t@Input() itemBg = 'transparent';\n\t@Input() color = '#ddd';\n\t@Input() itemSize: number | undefined = 25;\n\t@Input() label: string | null = null;\n\t@Input() template?: TemplateRef<HTMLElement>;\n\t@Output() optionClick: EventEmitter<IOptionClickEvent> = new EventEmitter();\n\n\theight = '100%';\n\tvisibility = 'hidden';\n\tcaption = 'Empty';\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tObject.entries(changes).forEach(([changeKey, changeVal]) => {\n\t\t\tif (changeVal.currentValue === changeVal.previousValue) return;\n\n\t\t\tif (changeKey === 'itemSize') {\n\t\t\t\tthis.height = (typeof this.itemSize === 'number' ? `${this.itemSize}px` : this.itemSize) ?? '100%';\n\t\t\t}\n\t\t\tif (changeKey === 'visible') {\n\t\t\t\tthis.visibility = this.visible ? 'visible' : 'hidden';\n\t\t\t}\n\t\t\tif (changeKey === 'option' || changeKey === 'label') {\n\t\t\t\tthis.caption = this.label?.trim().length ? this.label : 'Empty';\n\t\t\t}\n\t\t});\n\t}\n\n\tonOptionClick($event: MouseEvent) {\n\t\tthis.optionClick.emit({\n\t\t\tbaseEvent: $event,\n\t\t\toption: this.option ?? (this.label || 'Nothing selected'),\n\t\t});\n\t}\n}\n","/*!\n * @ngx-dummy/select-Simple library\n * Simple select created for angular / ionic projects.\n * https://github.com/ngx-dummy/select-simple\n *\n * Copyright Vladimir Ovsyukov <ovsyukov@yandex.com>\n * Published under MIT License\n */\nimport { SecurityContext } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { IOption, ISelectItem } from './models';\n\nexport const imgBase64ToBlob = (Base64Image: string, imageType = 'image/png') => {\n\tconst parts = Base64Image.split(';base64,');\n\tconst decodedData = window.atob(parts[1]);\n\tconst uInt8Array = new Uint8Array(decodedData.length);\n\tfor (let i = 0; i < decodedData.length; ++i) {\n\t\tuInt8Array[i] = decodedData.charCodeAt(i);\n\t}\n\treturn new Blob([uInt8Array], { type: imageType });\n};\n\nexport const svgToBase64src = (rawSvg: string) => 'data:image/svg+xml;base64,' + btoa(rawSvg);\nexport const prepRes = (item: string, sanitizer: DomSanitizer) => sanitizer.bypassSecurityTrustResourceUrl(item);\nexport const sanitizeHTML = (item: string, sanitizer: DomSanitizer) => sanitizer.sanitize(SecurityContext.HTML, item);\nexport const getSvgSafeRes = (file: string, sanitizer: DomSanitizer) => prepRes(svgToBase64src(file), sanitizer);\nexport const getPngSafeRes = (file: string, sanitizer: DomSanitizer) => prepRes(URL.createObjectURL(imgBase64ToBlob(file)), sanitizer);\nexport const blobToSafeRes = (blob: Blob, sanitizer: DomSanitizer) => prepRes(URL.createObjectURL(blob), sanitizer);\n\n/**\n *\n * @param data - option value (could be simple string or complex object to resolve)\n * @param field - the key (or complex lookup object key) of data object to resolve value by\n * @returns resolved single option value (Input for SelectItem)\n */\nexport const resolveFieldData = (data: IOption, field?: string): string | null => {\n\tif (isEmpty(data)) return null;\n\tif (isString(data)) return data;\n\tif (isSelectItem(data)) {\n\t\tif (data['label']) return data['label'];\n\t\tif (data['value']) data = data['value'];\n\t}\n\n\tif (field) {\n\t\tif (isString(field) && field.indexOf('.') === -1) {\n\t\t\treturn data[field];\n\t\t} else if (isString(field)) {\n\t\t\tconst fields: string[] = field.split('.');\n\t\t\tlet value = data;\n\t\t\tfor (let i = 0, len = fields.length; i < len; ++i) {\n\t\t\t\tif (value == null) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tvalue = value[fields[i]];\n\t\t\t}\n\t\t\treturn resolveFieldData(value);\n\t\t}\n\t} else {\n\t\treturn resolveFieldData(Object.values(data)[0] as Record<string, string>);\n\t}\n\treturn null;\n};\n\nexport const isValue = <T>(obj: T): obj is T => obj !== undefined && obj !== null;\nexport const isEmpty = <T>(obj: T): obj is T => !isValue(obj);\nexport const isString = (obj: IOption): obj is string => typeof obj === 'string';\nexport const isObject = <T extends object | string>(obj: T): obj is T => typeof obj !== 'string' && !Array.isArray(obj) && typeof obj === 'object';\nexport const isSelectItem = (obj: ISelectItem | string): obj is ISelectItem => (isObject(obj) && !!(<ISelectItem>obj).value) || !!(<ISelectItem>obj).label;\nexport const areEqual = (obj1: IOption | null, obj2: IOption | null, field?: string): boolean => {\n\tif (isEmpty(obj1) || isEmpty(obj2)) return false;\n\tif (isString(obj1) && isString(obj2)) return obj1 === obj2;\n\n\tif (field) return resolveFieldData(obj1, field) === resolveFieldData(obj2, field);\n\n\treturn JSON.stringify(obj1) === JSON.stringify(obj2);\n};\n\nexport enum OptionKeyboardEventHandleKeys {\n\tArrowDown = 'ArrowDown',\n\tDown = 'Down',\n\tArrowUp = 'ArrowUp',\n\tEnter = 'Enter',\n\tEscape = 'Escape',\n\tEsc = 'Esc',\n\tUp = 'Up',\n\tTab = 'Tab',\n\tSpace = ' ',\n}\n","/*!\n * @ngx-dummy/select-Simple library\n * Simple select created for angular / ionic projects.\n * https://github.com/ngx-dummy/select-simple\n *\n * Copyright Vladimir Ovsyukov <ovsyukov@yandex.com>\n * Published under MIT License\n */\n\nexport const arrow_down =\n\t'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"#454\" width=\"48px\" height=\"48px\"><path d=\"M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z\"/><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/></svg>';\n","import {\n\tAfterContentInit,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tContentChildren,\n\tElementRef,\n\tEventEmitter,\n\tforwardRef,\n\tInput,\n\tNgZone,\n\tOnChanges,\n\tOutput,\n\tProvider,\n\tQueryList,\n\tRenderer2,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewChild,\n\tViewEncapsulation,\n\tViewRef,\n} from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { BehaviorSubject, fromEvent, Observable, of } from 'rxjs';\nimport { debounceTime, shareReplay, switchMap, takeUntil } from 'rxjs/operators';\nimport { SelectItemComponent } from './select-item.component';\nimport { areEqual, getSvgSafeRes, isString, OptionKeyboardEventHandleKeys, resolveFieldData } from './settings/helpers';\nimport { BasicStylesSet, IOption, IOptionClickEvent, ISelectItem, ITemplates } from './settings/models';\nimport { arrow_down } from './theming/icons-base';\n\nexport const SELECT_VALUE_ACCESSOR_PROVIDER: Provider = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => SelectComponent),\n\tmulti: true,\n};\nexport const NG_VALIDATORS_PROVIDER: Provider = {\n\tprovide: NG_VALIDATORS,\n\tuseExisting: forwardRef(() => SelectComponent),\n\tmulti: true,\n};\n\n@Component({\n\tselector: 'ngxd-select',\n\ttemplateUrl: 'select.component.html',\n\tproviders: [SELECT_VALUE_ACCESSOR_PROVIDER, NG_VALIDATORS_PROVIDER],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\tstyleUrls: ['select.component.scss'],\n\thost: {\n\t\t'[class]': 'styleClass',\n\t\t'[style]': 'headerStyle',\n\t\t'[class.wrapper-focus]': 'focused || overlayVisible',\n\t\t'[class.select]': 'true',\n\t\t'[class.disabled]': 'disabled',\n\t\t'[class.focus]': 'focused || overlayVisible',\n\t\t'[class.select-open]': 'overlayVisible',\n\t\t'[attr.tabIndex]': 'tabindex',\n\t\t'[attr.autofocus]': 'autofocus',\n\t\t'[attr.name]': 'name',\n\t\t'(blur)': 'onHostBlur($event)',\n\t\t'(focus)': 'onHostFocus($event)',\n\t\t'(keydown)': 'onKeydown($event)',\n\t\t'(click)': 'onMouseclick($event)',\n\t},\n})\nexport class SelectComponent implements AfterContentInit, OnChanges, ControlValueAccessor {\n\t@ViewChild('defaultSelectIconTmpl', { read: TemplateRef, static: true }) defaultOpenerTemplate: TemplateRef<HTMLElement> | undefined;\n\t@ViewChild('itemsListDefaultTmpl', { read: TemplateRef, static: true }) itemsListDefaultTmpl: TemplateRef<HTMLElement> | undefined;\n\t@ContentChildren(SelectItemComponent, { descendants: true }) projectedItems: QueryList<SelectItemComponent> | undefined;\n\t@Input() templates: ITemplates | undefined;\n\t@Input() name: string | null = null;\n\n\t/** set additional custom classList to the Select component's panel */\n\t@Input() panelStyleClass = 'panel';\n\t/** set additional custom classList to the Select component */\n\t@Input() styleClass = '';\n\t@Input() readonly = false;\n\t@Input() required = false;\n\t/** whether to display reset button in the end of the options */\n\t@Input() resetBtn = false;\n\t/** whether to display search field */\n\t@Input() searchField = false;\n\t/** whether to set auto focus to component */\n\t@Input() autofocus = false;\n\t/** default component caption (panel caption) */\n\t@Input() placeholder?: string = undefined;\n\t/** string key of the Options input (in case of complex object) of kind: 'key' / 'key.subkey'... if set, would resolve the options' captions */\n\t@Input() optionLabelKey?: string | undefined = undefined;\n\t@Input() selectIconClass = '';\n\t@Input() tabindex = 0;\n\t@Input() itemSize: number | undefined;\n\t@Output() onChange: EventEmitter<any> = new EventEmitter();\n\t@Output() onClick: EventEmitter<any> = new EventEmitter();\n\t@Output() onShow: EventEmitter<boolean> = new EventEmitter();\n\t@Output() onHide: EventEmitter<boolean> = new EventEmitter();\n\t@Output() onFocus: EventEmitter<any> = new EventEmitter();\n\t@Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n\topenerBtnTemplate: TemplateRef<HTMLElement> | undefined;\n\titemslistTemplate: TemplateRef<HTMLElement> | undefined;\n\ttrigger_icon = getSvgSafeRes(arrow_down, this.sanitizer);\n\n\tprivate _overlayVisible$$ = new BehaviorSubject(false);\n\tprivate _optionsToDisplay$$ = new BehaviorSubject(<IOption[]>[]);\n\n\tprivate _headerStyle = {};\n\tprivate _options: IOption[] = [];\n\tprivate _disabled = false;\n\tprivate _panelStyle: BasicStylesSet = {\n\t\tbackgroundColor: 'rgba(1, 1, 1, 0.45)',\n\t\tcolor: '#fff',\n\t\tborder: '1px solid var(--ngxd-primary-color)',\n\t\tborderRadius: '0.2rem',\n\t\tboxShadow: '2px 5px 10px rgba(55, 55, 55, 0.8)',\n\t};\n\n\toverlayVisible$: Observable<boolean> = this._overlayVisible$$.asObservable().pipe(\n\t\tshareReplay({\n\t\t\trefCount: true,\n\t\t\tbufferSize: 1,\n\t\t})\n\t);\n\n\toptionsToDisplay$: Observable<IOption[]> = this._optionsToDisplay$$.asObservable().pipe(\n\t\tshareReplay({\n\t\t\trefCount: true,\n\t\t\tbufferSize: 1,\n\t\t})\n\t);\n\n\titemTemplate: TemplateRef<HTMLElement> | undefined;\n\tselectedItemTemplate: TemplateRef<HTMLElement> | null = null;\n\tselectedOption: IOption | null = null;\n\tselectedItemIndex = 0;\n\thover = false;\n\toptionsChanged = false;\n\tfocused = false;\n\tpanel: HTMLDivElement | undefined;\n\tprevValue: any;\n\tvalue: any;\n\tonModelChange: (...args: unknown[]) => unknown = () => void 0;\n\tonModelTouched: () => void = () => void 0;\n\n\tonHostFocus() {\n\t\tconsole.log('Focus, prev value :: ', this.prevValue);\n\t}\n\tonHostBlur() {\n\t\tthis.prevValue = this.selectedOption || null;\n\t\tconsole.log('BLUR, prev val :: ', this.prevValue);\n\t}\n\n\t/**\n\t * @property\n\t * @param {BasicStylesSet} headStyleObj - styles to override the defaults of Select component panel\n\t */\n\t@Input() set headerStyle(headStyleObj: BasicStylesSet) {\n\t\tif (!!headStyleObj && !!Object.keys(headStyleObj).length) {\n\t\t\tthis._headerStyle = {\n\t\t\t\t...this._headerStyle,\n\t\t\t\t...headStyleObj,\n\t\t\t};\n\t\t}\n\t}\n\tget headerStyle() {\n\t\treturn this._headerStyle;\n\t}\n\n\t@Input() set panelStyle(stylesObj: BasicStylesSet) {\n\t\tif (!!stylesObj && !!Object.keys(stylesObj).length) {\n\t\t\tthis._panelStyle = {\n\t\t\t\t...this._panelStyle,\n\t\t\t\t...stylesObj,\n\t\t\t};\n\t\t}\n\t}\n\tget panelStyle() {\n\t\treturn this._panelStyle;\n\t}\n\n\t// get options(): IOption[] {\n\t// \treturn this._options;\n\t// }\n\t@Input() set options(val: IOption[]) {\n\t\tthis._options = val;\n\t\t// this.optionsToDisplay = this._options;\n\t\tthis._optionsToDisplay$$.next(val);\n\t\tthis.updateSelectedOption();\n\t}\n\n\t@Input() get disabled(): boolean {\n\t\treturn this._disabled;\n\t}\n\tset disabled(_disabled: boolean) {\n\t\tif (_disabled) {\n\t\t\tthis.focused = false;\n\t\t\tif (this._overlayVisible$$.value) this.hide();\n\t\t}\n\n\t\tthis._disabled = _disabled;\n\t\tif (!(this.cd as ViewRef).destroyed) {\n\t\t\tthis.cd.detectChanges();\n\t\t}\n\t}\n\n\tconstructor(\n\t\t// @Self() @Optional() ngControl: NgControl,\n\t\tpublic el: ElementRef<Element>,\n\t\tpublic renderer: Renderer2,\n\t\tpublic cd: ChangeDetectorRef,\n\t\tprivate sanitizer: DomSanitizer,\n\t\tpublic zone: NgZone\n\t) {\n\t\t// if (ngControl) {\n\t\t// ngControl.valueAccessor = this;\n\t\t// }\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tObject.entries(changes).forEach(([changeKey, change]) => {\n\t\t\tif (changeKey === 'templates') {\n\t\t\t\tif (change.currentValue === change.previousValue) return;\n\t\t\t\t// if (!change.isFirstChange()) return;\n\n\t\t\t\tthis.openerBtnTemplate = change.currentValue['openerBtnTemplate'] || this.defaultOpenerTemplate;\n\t\t\t\tthis.itemsListDefaultTmpl = change.currentValue['itemslistTemplate'] || this.itemsListDefaultTmpl;\n\t\t\t\tthis.cd.markForCheck();\n\t\t\t}\n\t\t});\n\t}\n\n\tngAfterContentInit() {\n\t\tthis.openerBtnTemplate = this.templates?.openerBtnTemplate ? this.templates.openerBtnTemplate : this.defaultOpenerTemplate;\n\t\tthis.itemsListDefaultTmpl = this.templates?.itemslistTemplate ? this.templates.itemslistTemplate : this.itemsListDefaultTmpl;\n\t\tif (this.templates?.selectedItemTemplate) {\n\t\t\tthis.selectedItemTemplate = this.templates.selectedItemTemplate;\n\t\t}\n\n\t\tthis.projectedItems?.forEach((itemCmp) => {\n\t\t\titemCmp.optionClick.subscribe((e) => this.onItemClick(e));\n\t\t});\n\n\t\tfromEvent<MouseEvent>(document, 'click')\n\t\t\t.pipe(\n\t\t\t\tswitchMap((ev: MouseEvent) => {\n\t\t\t\t\tconst iconContainer = (<HTMLElement>ev.target)?.classList?.contains('select-trigger-icon');\n\n\t\t\t\t\tif (this.isOutsideClicked(ev) && !iconContainer) {\n\t\t\t\t\t\tthis.cd.markForCheck();\n\t\t\t\t\t\tthis.hide();\n\t\t\t\t\t}\n\t\t\t\t\treturn of(ev);\n\t\t\t\t})\n\t\t\t)\n\t\t\t.subscribe();\n\t\t// this.updateSelectedOption();\n\t}\n\n\tonInputFocus($event: Event) {\n\t\tthis.focused = true;\n\t\tthis.onFocus.emit($event);\n\t}\n\n\tonInputBlur($event: Event) {\n\t\tthis.focused = false;\n\t\tthis.onBlur.emit($event);\n\t}\n\n\tget label() {\n\t\treturn this.selectedOption\n\t\t\t? this.getOptionLabel(this.selectedOption)\n\t\t\t: this.placeholder?.length\n\t\t\t? this.placeholder\n\t\t\t: this.options?.length\n\t\t\t? this.getOptionLabel(this.options[0])\n\t\t\t: null;\n\t}\n\n\tgetOptionLabel(option: IOption) {\n\t\treturn resolveFieldData(option, this.optionLabelKey);\n\t}\n\n\tgetOptionValue(option: IOption | null): string | null {\n\t\tif (!option) return null;\n\t\treturn resolveFieldData(option);\n\t}\n\n\tisOptionDisabled(option: IOption): boolean {\n\t\treturn isString(option) ? false : !!option?.disabled || false;\n\t}\n\n\tonItemClick({ option, baseEvent }: IOptionClickEvent) {\n\t\tif (this.readonly) {\n\t\t\tconsole.log('DropDown is READONLY');\n\t\t\treturn;\n\t\t}\n\n\t\tif (!option) return;\n\n\t\tif (!this.isOptionDisabled(option)) {\n\t\t\tthis.selectItem(baseEvent, option);\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tthis.hide();\n\t\t}, 150);\n\t}\n\n\tselectItem($event: Event, option: IOption | null, update = true) {\n\t\t// if (this.selectedOption != option) {\n\t\tthis.selectedOption = option;\n\n\t\tif (update) {\n\t\t\tthis.value = this.getOptionValue(option);\n\t\t\tthis.onModelChange(this.value);\n\t\t\tthis.onChange.emit({\n\t\t\t\toriginalEvent: $event,\n\t\t\t\tvalue: this.value,\n\t\t\t});\n\t\t}\n\t\t// }\n\t}\n\n\twriteValue(value: any) {\n\t\tthis.value = value;\n\t\tthis.updateSelectedOption();\n\t\tthis.cd.markForCheck();\n\t}\n\n\tvalidate({ value }: AbstractControl) {\n\t\tif (this.required && !value) return { invalid: true };\n\t\tconst isNotValid = this.required && !value && !!Validators.required(value);\n\t\treturn (\n\t\t\tisNotValid && {\n\t\t\t\tinvalid: true,\n\t\t\t}\n\t\t);\n\t}\n\n\tupdateSelectedOption() {\n\t\t// this.selectedOption = this.findOption(val, this.optionsToDisplay);\n\t\tif (!this.placeholder && !this.selectedOption && this._optionsToDisplay$$.value?.length) {\n\t\t\tthis.selectedOption = this._optionsToDisplay$$.value[0];\n\t\t}\n\t}\n\n\tregisterOnChange(fn: (...args: unknown[]) => unknown) {\n\t\tthis.onModelChange = fn;\n\t}\n\n\tregisterOnTouched(fn: (...args: unknown[]) => unknown) {\n\t\tthis.onModelTouched = fn;\n\t}\n\n\tsetDisabledState(val: boolean) {\n\t\tthis.disabled = val;\n\t\tthis.cd.markForCheck();\n\t}\n\n\tonMouseclick($event: Event) {\n\t\tif (this.disabled) {\n\t\t\treturn;\n\t\t}\n\t\tif (!this.readonly) {\n\t\t\tthis.onClick.emit($event);\n\t\t}\n\n\t\tif (this._overlayVisible$$.value) this.hide();\n\t\telse this.show();\n\n\t\tthis.cd.detectChanges();\n\t}\n\n\treset() {\n\t\tthis.selectItem(new MouseEvent('click'), null);\n\t}\n\n\tisOutsideClicked(event: Event): boolean {\n\t\treturn !(this.el.nativeElement.isSameNode(event.target as Node) || this.el.nativeElement.contains(event.target as Node));\n\t}\n\n\tshow() {\n\t\tthis._overlayVisible$$.next(true);\n\t\tthis.onShow.emit(true);\n\t\tif (!this.searchField || !this._optionsToDisplay$$.value?.length) return;\n\n\t\tsetTimeout(() => {\n\t\t\tconst searchFieldInputEl = this.el.nativeElement?.querySelector('.search-term__container .search-term') as HTMLInputElement;\n\t\t\tif (!searchFieldInputEl) return;\n\n\t\t\tsearchFieldInputEl?.focus();\n\n\t\t\tfromEvent<InputEvent>(searchFieldInputEl, 'input')\n\t\t\t\t.pipe(\n\t\t\t\t\ttakeUntil(this.onHide),\n\t\t\t\t\tdebounceTime(200),\n\t\t\t\t\tswitchMap(($event) => of((<HTMLInputElement>$event.target).value))\n\t\t\t\t)\n\t\t\t\t.subscribe((searchTerm) =>\n\t\t\t\t\tthis._optionsToDisplay$$.next(\n\t\t\t\t\t\tsearchTerm.length\n\t\t\t\t\t\t\t? this._options?.filter((opt) => {\n\t\t\t\t\t\t\t\t\tconst optionValue = this.getOptionValue(opt);\n\t\t\t\t\t\t\t\t\tconst found = !!optionValue?.toLowerCase().includes(searchTerm.toLowerCase());\n\t\t\t\t\t\t\t\t\treturn found;\n\t\t\t\t\t\t\t })\n\t\t\t\t\t\t\t: this._options\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t});\n\t}\n\n\thide() {\n\t\tthis.onHide.emit(false);\n\t\tthis._overlayVisible$$.next(false);\n\t\tthis._optionsToDisplay$$.next(this._options);\n\t}\n\n\tonKeydown($event: KeyboardEvent) {\n\t\tif (this.isOutsideClicked($event)) {\n\t\t\tconsole.log('Clicked outside of the component ...');\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.readonly || !this._optionsToDisplay$$.value?.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ($event.key) {\n\t\t\tcase OptionKeyboardEventHandleKeys.ArrowDown:\n\t\t\tcase OptionKeyboardEventHandleKeys.Down: {\n\t\t\t\tif (!this._overlayVisible$$.value && $event.altKey) {\n\t\t\t\t\tthis.show();\n\t\t\t\t} else {\n\t\t\t\t\tthis.selectedItemIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this._optionsToDisplay$$.value) : -1;\n\t\t\t\t\tconst nextEnabledOption = this.findNextEnabledOption(this.selectedItemIndex);\n\t\t\t\t\tif (nextEnabledOption) {\n\t\t\t\t\t\tthis.selectItem($event, nextEnabledOption, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$event.preventDefault();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase OptionKeyboardEventHandleKeys.ArrowUp:\n\t\t\tcase OptionKeyboardEventHandleKeys.Up: {\n\t\t\t\tthis.selectedItemIndex = this.selectedOption ? this.findOptionIndex(this.getOptionValue(this.selectedOption), this._optionsToDisplay$$.value) : -1;\n\t\t\t\tconst prevEnabledOption = this.findPrevEnabledOption(this.selectedItemIndex);\n\t\t\t\tif (prevEnabledOption) {\n\t\t\t\t\tthis.selectItem($event, prevEnabledOption, false);\n\t\t\t\t}\n\t\t\t\t$event.preventDefault();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase OptionKeyboardEventHandleKeys.Space: {\n\t\t\t\tif (!this._overlayVisible$$.value) {\n\t\t\t\t\tthis.show();\n\t\t\t\t} else {\n\t\t\t\t\tthis.hide();\n\t\t\t\t}\n\t\t\t\t$event.preventDefault();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase OptionKeyboardEventHandleKeys.Enter: {\n\t\t\t\tthis.hide();\n\t\t\t\tthis.prevValue = this.selectedOption;\n\t\t\t\tthis.selectItem($event, this.selectedOption, true);\n\t\t\t\t$event.preventDefault();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase OptionKeyboardEventHandleKeys.Escape:\n\t\t\tcase OptionKeyboardEventHandleKeys.Esc: {\n\t\t\t\tthis.selectItem($event, this.prevValue);\n\t\t\t\tthis.hide();\n\t\t\t\t$event.preventDefault();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase OptionKeyboardEventHandleKeys.Tab: {\n\t\t\t\tthis.hide();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tfindOptionIndex(val: string | null, opts: IOption[]): number {\n\t\tif (!val?.trim().length) return -1;\n\t\tif (!opts?.length) return -1;\n\n\t\tlet index = -1;\n\t\tfor (let i = 0; i < opts.length; i++) {\n\t\t\tif (areEqual(val, this.getOptionValue(opts[i]))) {\n\t\t\t\tindex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn index;\n\t}\n\n\tfindPrevEnabledOption(index: number) {\n\t\tlet prevEnabledOption;\n\n\t\tif (this._optionsToDisplay$$.value?.length) {\n\t\t\tfor (let i = index - 1; 0 <= i; i--) {\n\t\t\t\tconst option = this._optionsToDisplay$$.value[i];\n\t\t\t\tif ((<ISelectItem>option)?.disabled) {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tprevEnabledOption = option;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!prevEnabledOption) {\n\t\t\t\tfor (let i = this._optionsToDisplay$$.value?.length - 1; i >= index; i--) {\n\t\t\t\t\tconst option = this._optionsToDisplay$$.value?.[i];\n\t\t\t\t\tif (this.isOptionDisabled(option)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprevEnabledOption = option;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn prevEnabledOption;\n\t}\n\n\tfindNextEnabledOption(index: number) {\n\t\tlet nextEnabledOption;\n\n\t\tif (this._optionsToDisplay$$.value?.length) {\n\t\t\tfor (let i = index + 1; i < this._optionsToDisplay$$.value?.length; i++) {\n\t\t\t\tconst option = this._optionsToDisplay$$.value?.[i];\n\t\t\t\tif (this.isOptionDisabled(option)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tnextEnabledOption = option;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!nextEnabledOption) {\n\t\t\t\tfor (let i = 0; i < index; i++) {\n\t\t\t\t\tconst option = this._optionsToDisplay$$.value?.[i];\n\t\t\t\t\tif (this.isOptionDisabled(option)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnextEnabledOption = option;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn nextEnabledOption;\n\t}\n}\n","<span *ngIf=\"!!label; else NoLabelTmpl\">\n\t<ng-container *ngIf=\"!selectedItemTemplate; else selectedItemSelectedTmpl\">{{\n\t\tlabel\n\t}}</ng-container>\n</span>\n\n<div\n\tclass=\"select-trigger\"\n\trole=\"button\"\n\t[attr.aria-expanded]=\"overlayVisible$ | async\"\n>\n\t<ng-container *ngIf=\"openerBtnTemplate\">\n\t\t<ng-container\n\t\t\t*ngTemplateOutlet=\"\n\t\t\t\topenerBtnTemplate;\n\t\t\t\tcontext: { $implicit: overlayVisible$ | async }\n\t\t\t\"\n\t\t></ng-container>\n\t</ng-container>\n</div>\n\n<div\n\t*ngIf=\"overlayVisible$ | async\"\n\tclass=\"select-panel\"\n\t[ngStyle]=\"panelStyle\"\n\t[class]=\"panelStyleClass\"\n>\n\t<ng-container *ngIf=\"searchField\">\n\t\t<ng-container *ngTemplateOutlet=\"searchTermTmpl\"></ng-container>\n\t</ng-container>\n\n\t<ng-container\n\t\t*ngIf=\"\n\t\t\t!!(optionsToDisplay$ | async)?.length;\n\t\t\tthen itemsListDefaultTmpl;\n\t\t\telse noInputOptionsTmpl\n\t\t\"\n\t>\n\t</ng-container>\n\n\t<button\n\t\t*ngIf=\"resetBtn\"\n\t\tclass=\"reset\"\n\t\t(click)=\"reset()\"\n\t>\n\t\t<span>Reset</span>\n\t</button>\n</div>\n\n<ng-template #NoLabelTmpl>\n\t<span\n\t\t[ngClass]=\"{\n\t\t\t'select-label': true,\n\t\t\t'select-label-empty': !!!placeholder?.length\n\t\t}\"\n\t>\n\t\t{{ placeholder || 'empty' }}\n\t</span>\n</ng-template>\n\n<ng-template #selectedItemSelectedTmpl>\n\t<ng-container\n\t\t*ngTemplateOutlet=\"\n\t\t\tselectedItemTemplate;\n\t\t\tcontext: { $implicit: label, selectedOption: selectedOption }\n\t\t\"\n\t>\n\t</ng-container>\n</ng-template>\n\n<ng-template\n\t#defaultSelectIconTmpl\n\tlet-overlayVisible\n>\n\t<span\n\t\tclass=\"select-trigger-icon\"\n\t\t[ngClass]=\"selectIconClass\"\n\t\t[ngClass]=\"{ open: overlayVisible, close: !overlayVisible }\"\n\t>\n\t\t<img\n\t\t\tclass=\"select-trigger__default-img\"\n\t\t\t[src]=\"trigger_icon\"\n\t\t/>\n\t</span>\n</ng-template>\n\n<ng-template #itemsListDefaultTmpl>\n\t<div class=\"select-items-wrapper\">\n\t\t<div class=\"select-items\">\n\t\t\t<ng-container *ngIf=\"optionsToDisplay$ | async as optionsToDisplay\">\n\t\t\t\t<ng-template\n\t\t\t\t\tngFor\n\t\t\t\t\tlet-option\n\t\t\t\t\tlet-i=\"index\"\n\t\t\t\t\t[ngForOf]=\"optionsToDisplay\"\n\t\t\t\t>\n\t\t\t\t\t<ngxd-select-item\n\t\t\t\t\t\t[id]=\"i\"\n\t\t\t\t\t\t[selected]=\"selectedOption === option\"\n\t\t\t\t\t\t[label]=\"getOptionLabel(option)\"\n\t\t\t\t\t\t[disabled]=\"isOptionDisabled(option)\"\n\t\t\t\t\t\t(optionClick)=\"onItemClick($event)\"\n\t\t\t\t\t\t[template]=\"itemTemplate\"\n\t\t\t\t\t\t[itemSize]=\"itemSize\"\n\t\t\t\t\t></ngxd-select-item>\n\t\t\t\t</ng-template>\n\t\t\t</ng-container>\n\t\t</div>\n\t</div>\n</ng-template>\n\n<ng-template #noInputOptionsTmpl>\n\t<div class=\"select-items-wrapper\">\n\t\t<div class=\"select-items\">\n\t\t\t<ng-content select=\".simple-items\"></ng-content>\n\t\t</div>\n\t</div>\n</ng-template>\n\n<ng-template #searchTermTmpl>\n\t<div class=\"search-term__container\">\n\t\t<div class=\"search-term__sub-container\">\n\t\t\t<input\n\t\t\t\ttype=\"text\"\n\t\t\t\tclass=\"search-term\"\n\t\t\t\tplaceholder=\"search for an item ...\"\n\t\t\t\t(click)=\"$event.preventDefault(); $event.stopPropagation()\"\n\t\t\t/>\n\t\t\t<svg\n\t\t\t\tclass=\"search-term__icon\"\n\t\t\t\twidth=\"20\"\n\t\t\t\theight=\"20\"\n\t\t\t\tviewBox=\"0 0 20 20\"\n\t\t\t\tfill=\"none\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t>\n\t\t\t\t<path\n\t\t\t\t\td=\"M18.8167 18.0154L12.15 11.8615\"\n\t\t\t\t\tstroke=\"#adc9cebf\"\n\t\t\t\t\tstroke-width=\"3\"\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\td=\"M8.33335 13.8461C12.0153 13.8461 15 11.091 15 7.6923C15 4.29362 12.0153 1.53845 8.33335 1.53845C4.65146 1.53845 1.66669 4.29362 1.66669 7.6923C1.66669 11.091 4.65146 13.8461 8.33335 13.8461Z\"\n\t\t\t\t\tstroke=\"#adc9cebf\"\n\t\t\t\t\tstroke-width=\"3\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t</div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { SelectItemComponent } from './select-item.component';\nimport { SelectComponent } from './select.component';\n\n@NgModule({\n\timports: [CommonModule, FormsModule],\n\tdeclarations: [SelectComponent, SelectItemComponent],\n\texports: [SelectComponent, SelectItemComponent],\n})\nexport class SelectSimpleModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.SelectItemComponent"],"mappings":"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