@apexara/ng-components 1.0.6-test.1 → 1.0.6-test.2
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/fesm2022/apexara-ng-components-checkbox.mjs +19 -15
- package/fesm2022/apexara-ng-components-checkbox.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-datepicker.mjs +65 -70
- package/fesm2022/apexara-ng-components-datepicker.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-drawer.mjs +9 -11
- package/fesm2022/apexara-ng-components-drawer.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-image.mjs +3 -5
- package/fesm2022/apexara-ng-components-image.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-input.mjs +19 -19
- package/fesm2022/apexara-ng-components-input.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-listbox.mjs +41 -33
- package/fesm2022/apexara-ng-components-listbox.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-select.mjs +96 -79
- package/fesm2022/apexara-ng-components-select.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-table.mjs +120 -99
- package/fesm2022/apexara-ng-components-table.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-textarea.mjs +20 -17
- package/fesm2022/apexara-ng-components-textarea.mjs.map +1 -1
- package/package.json +1 -1
- package/types/apexara-ng-components-checkbox.d.ts +6 -8
- package/types/apexara-ng-components-datepicker.d.ts +4 -6
- package/types/apexara-ng-components-drawer.d.ts +3 -4
- package/types/apexara-ng-components-image.d.ts +2 -3
- package/types/apexara-ng-components-input.d.ts +6 -8
- package/types/apexara-ng-components-listbox.d.ts +7 -8
- package/types/apexara-ng-components-select.d.ts +12 -10
- package/types/apexara-ng-components-table.d.ts +19 -18
- package/types/apexara-ng-components-textarea.d.ts +6 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apexara-ng-components-select.mjs","sources":["../../../../projects/apexara/ng-components/select/src/select.component.ts","../../../../projects/apexara/ng-components/select/src/select.component.html","../../../../projects/apexara/ng-components/select/apexara-ng-components-select.ts"],"sourcesContent":["import { \n Component, OnInit, ViewChild, Input,\n Output, inject, PLATFORM_ID, ElementRef,\n ChangeDetectorRef, HostListener, EventEmitter, IterableDiffers,\n OnDestroy, AfterViewInit, SimpleChanges, IterableDiffer} from '@angular/core';\nimport { NgClass, isPlatformServer } from '@angular/common';\nimport { FormGroup, FormsModule, ReactiveFormsModule, AbstractControl } from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\n\nimport { Subscription, debounceTime, fromEvent, tap } from 'rxjs';\n\nimport { ApexChipComponent } from '@apexara/ng-components/chip';\nimport { ApexImageComponent } from '@apexara/ng-components/image';\nimport { ApexCheckboxComponent } from '@apexara/ng-components/checkbox';\n\nimport { OSService, MobileOS } from '@apexara/ng-components/services';\n\nimport { ApexTooltipDirective, TooltipPosition } from '@apexara/ng-components/tooltip';\n\nexport interface ApexSelectOptions {\n label: string;\n tooltip?: string;\n data: ApexSelectData[];\n multiple?: boolean;\n counterAsValue?: boolean;\n placeholder?: string;\n helperText?: string;\n helperRoute?: string;\n prefixImg?: string;\n suffixImg?: string;\n formGroup?: FormGroup;\n searchable?: boolean;\n formControlName?: string;\n errors?: ControlErrors;\n maxDropdownHeightPx?: number; // optional hard max height in px\n}\n\nexport interface ApexSelectData {\n label: string;\n value: any;\n description?: string;\n isHover?: boolean;\n icon?: string;\n}\n\nexport interface ControlErrors {\n [x: string]: string;\n}\n\n@Component({\n selector: 'apex-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.css'],\n imports: [\n NgClass,\n RouterLink,\n FormsModule,\n ScrollingModule,\n ApexChipComponent,\n ApexImageComponent,\n ApexTooltipDirective,\n ReactiveFormsModule,\n ApexCheckboxComponent,\n ]\n})\n\nexport class ApexSelectComponent implements OnInit, AfterViewInit, OnDestroy {\n\n @ViewChild('input') input: ElementRef<HTMLInputElement> | null = null;\n\n @ViewChild('label') label: ElementRef<HTMLLabelElement> | null = null;\n @ViewChild('dropdown') dropdown: CdkVirtualScrollViewport | null = null;\n @ViewChild('inputWrapper') inputWrapper: ElementRef<HTMLInputElement> | null = null;\n\n @Input() options!: ApexSelectOptions;\n\n\n @Output() selectChange = new EventEmitter<ApexSelectData>();\n @Output() helperTextChange = new EventEmitter<void>();\n\n constructor(\n private osService: OSService,\n private elementRef: ElementRef,\n private iterableDiffers: IterableDiffers,\n private changeDetectorRef: ChangeDetectorRef) {\n\n this.changeDetectorRef.detach();\n\n this.dataDiffer = this.iterableDiffers.find([]).create<ApexSelectData>();\n\n this.handleEvents();\n }\n\n public firstDropdown = 0;\n public isDropdown = false;\n public control!: AbstractControl;\n\n public tooltipPosition = TooltipPosition;\n\n private platformId = inject(PLATFORM_ID);\n\n private isDropdownReversed = false;\n\n private shouldPreventEvents = false;\n\n private documentKeyupValue = '';\n private documentKeyupValueResetTime = 1000;\n private documentKeyUpSubscription: Subscription | null = null;\n\n private dataDiffer!: IterableDiffer<ApexSelectData>;\n\n private controlSubscription: Subscription | null = null;\n\n public filteredData: ApexSelectData[] = [];\n\n private lastSearch = '';\n\n private keyListener = (event: KeyboardEvent) => this.blockArrowScroll(event);\n private wheelListener = (event: WheelEvent | TouchEvent) => this.blockScroll(event);\n\n private scrollBlockersAttached = false;\n\n // Virtual scroll config for options list\n public optionItemSizePx = 48; // must match .dropdown .option height in CSS\n public maxVisibleOptions = 8;\n public dropdownHeightPx = this.optionItemSizePx;\n\n public ngOnInit(): void {\n this.control = this.getControl()!;\n\n this.changeDetectorRef.detectChanges();\n\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n this.documentKeyUpSubscription = fromEvent<KeyboardEvent>(this.elementRef.nativeElement, 'keydown')\n .pipe(\n tap(event => { this.keyup(event) }),\n debounceTime(this.documentKeyupValueResetTime),\n )\n .subscribe(() => { this.documentKeyupValue = '' });\n }\n\n public ngDoCheck(): void {\n const data = this.options?.data || [];\n const diff = this.dataDiffer.diff(data);\n\n if (!diff) {\n return;\n }\n\n this.filteredData = [...data];\n this.changeDetectorRef.detectChanges();\n }\n\n public ngAfterViewInit(): void {\n this.filteredData = [...this.options.data];\n\n setTimeout(() => {\n if (this.options.formGroup && this.options.formControlName) { \n this.setVisibleValue(this.options.formGroup.controls[this.options.formControlName].value);\n }\n })\n\n if (this.options.searchable) {\n this.controlSubscription = this.control.valueChanges.subscribe((value) => {\n this.setVisibleValue(value);\n\n setTimeout(() => {\n this.changeDetectorRef.detectChanges();\n })\n })\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (!changes['options'] || changes['options'].firstChange) {\n return;\n }\n\n this.updateDropdownHeight();\n this.changeDetectorRef.detectChanges();\n }\n\n public ngOnDestroy(): void {\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n this.detachGlobalScrollBlockers();\n window.removeEventListener('keydown', this.keyListener);\n\n if (this.documentKeyUpSubscription) {\n this.documentKeyUpSubscription.unsubscribe();\n }\n\n if (this.controlSubscription) {\n this.controlSubscription.unsubscribe();\n }\n }\n\n public onHelperText(): void {\n this.helperTextChange.emit();\n }\n\n public setValue(value: any): void {\n this.changeDetectorRef.detectChanges();\n\n if (!this.options.multiple) {\n value = this.removeProperty(value, 'isHover');\n }\n\n this.control.setValue(value);\n this.input!.nativeElement.value = value.label ? value.label : '';\n\n this.selectChange.emit(value);\n\n if (value.value == null) {\n return;\n }\n\n setTimeout(() => {\n this.removeDropdown();\n\n if (!this.options.multiple) {\n this.lastSearch = '';\n }\n })\n }\n\n public setMultipleValue(data: any, event?: Event): void {\n if (event) {\n event.preventDefault();\n }\n\n const newValue = this.control.value;\n let indexOfValue = -1;\n\n for (let i = 0; i < newValue.length; i++) {\n if (newValue[i].value === data.value) {\n indexOfValue = i;\n }\n\n if (JSON.stringify(newValue[i].value) === JSON.stringify(data.value)) {\n indexOfValue = i;\n }\n }\n\n if (indexOfValue === -1) {\n newValue.push({ label: data.label, value: data.value });\n } else {\n newValue.splice(indexOfValue, 1);\n }\n\n this.lastSearch = '';\n this.input!.nativeElement.value = '';\n this.filteredData = this.options.data;\n\n this.control.setValue(newValue);\n this.selectChange.emit(newValue);\n }\n\n public setVisibleValue(newValue: any | any[]): void {\n if (newValue === null) {\n this.input!.nativeElement.value = '';\n\n return;\n }\n\n if (this.options.counterAsValue) {\n if (this.options.searchable) {\n return;\n }\n\n if (this.showMultipleCount() > 0) {\n this.input!.nativeElement.value = this.showMultipleCount() + ' selected';\n }\n\n return;\n }\n\n let visibleValue = '';\n\n for (let data of this.filteredData) { \n // when newValue is object and not array\n if (data.value === newValue.value) {\n visibleValue = data.label;\n\n break;\n }\n\n if (this.options.multiple && !this.options.searchable) {\n // when newValue is array\n for (let item of newValue) {\n if (data.value === item.value) {\n visibleValue += item.label + ', ';\n\n break;\n }\n }\n }\n\n if (newValue.value) {\n // Edge case for when we use { label, value } pattern as value\n if (newValue.value.value && this.getControl()?.value.value.value === newValue.value.value) {\n visibleValue = data.label;\n\n break;\n }\n }\n }\n\n this.input!.nativeElement.value = visibleValue;\n\n this.changeDetectorRef.detectChanges();\n }\n\n private updateDropdownHeight(): void {\n if (!this.isDropdown) {\n return;\n }\n\n setTimeout(() => {\n const count = this.filteredData.length;\n const maxRows = this.maxVisibleOptions;\n\n let next = this.optionItemSizePx;\n\n if (count > 0 && count <= maxRows && this.dropdown) {\n const options = this.dropdown.elementRef.nativeElement.querySelectorAll('.option');\n \n let total = 0;\n\n options.forEach((option: any) => {\n const height = option.getBoundingClientRect().height;\n total += isFinite(height) ? height : 0;\n });\n\n next = total;\n } else {\n const rows = Math.min(count, maxRows);\n \n next = Math.max(rows * this.optionItemSizePx, this.optionItemSizePx);\n }\n\n const maxHeight = this.options.maxDropdownHeightPx;\n \n if (maxHeight) {\n next = Math.min(next, Math.max(this.optionItemSizePx, maxHeight));\n }\n\n this.dropdownHeightPx = next;\n this.changeDetectorRef.detectChanges();\n\n setTimeout(() => {\n this.dropdown?.checkViewportSize();\n }, 100)\n\n });\n }\n\n public showMultipleCount(): number {\n if (!this.control.value.length) {\n return 0;\n }\n\n return this.control.value.length;\n }\n\n public isValueSelected(value: ApexSelectData): boolean {\n if (value.value == null || this.control.value == null) {\n return false;\n }\n\n return value.value === this.control.value.value;\n }\n\n public isMultipleSelected(value: ApexSelectData): boolean {\n for (let i = 0; i < this.control.value.length; i++) {\n if (value.value === this.control.value[i]) {\n return true;\n }\n\n if (this.control.value[i].value === value.value) {\n return true;\n }\n\n if (JSON.stringify(this.control.value[i].value) === JSON.stringify(value.value)) {\n return true;\n }\n }\n\n return false;\n }\n\n public activateDropdown(): void {\n if (this.checkIfControlDisabled()) {\n return;\n }\n\n this.isDropdown = true;\n this.input!.nativeElement.focus();\n\n if (this.firstDropdown === 0) {\n this.firstDropdown += 1;\n\n setTimeout(() => this.generateDropdownPosition(true));\n\n // Reattaching is needed to properly update the hovered options by KeyboardEvents\n this.changeDetectorRef.reattach();\n }\n\n this.attachGlobalScrollBlockers();\n this.onSearch(this.lastSearch, false);\n }\n\n @HostListener('document:click', ['$event'])\n public deactivateControl(event: MouseEvent | KeyboardEvent): void {\n if (event instanceof KeyboardEvent) {\n this.removeDropdown();\n\n return;\n }\n\n if (!this.dropdown || !this.inputWrapper) {\n return;\n }\n \n const dropdownRect = this.dropdown.elementRef.nativeElement.getBoundingClientRect();\n const inputWrapperRect = this.inputWrapper.nativeElement.getBoundingClientRect();\n\n const isClickInsideDropdown = this.isWithinBounds(event, dropdownRect);\n const isClickInsideInputWrapper = this.isWithinBounds(event, inputWrapperRect);\n\n if (isClickInsideDropdown || isClickInsideInputWrapper) {\n return;\n }\n \n this.removeDropdown();\n }\n\n public onFocusIn(): void {\n this.shouldPreventEvents = true;\n\n this.activateDropdown();\n\n setTimeout(() => {\n this.shouldPreventEvents = false;\n }, 200);\n }\n\n public onFocusOut(): void {\n this.shouldPreventEvents = true;\n\n setTimeout(() => {\n this.shouldPreventEvents = false;\n }, 200);\n\n this.removeDropdown();\n }\n\n public toggleDropdown(): void {\n if (this.shouldPreventEvents) {\n return;\n }\n\n if (this.isDropdown) {\n this.removeDropdown();\n } else {\n this.activateDropdown();\n }\n }\n\n private generateDropdownPosition(checkRevserse: boolean = false): void {\n if (!this.dropdown) {\n // method will keep executing until dropdown is rendered\n setTimeout(() => this.generateDropdownPosition(true));\n\n return;\n }\n\n const dropdownEl = this.dropdown.elementRef.nativeElement;\n const elementRefRect = this.elementRef.nativeElement.getBoundingClientRect();\n\n if (this.osService.mobileOS === MobileOS.iOS) {\n elementRefRect.y += window.visualViewport!.offsetTop;\n elementRefRect.x += window.visualViewport!.offsetLeft;\n }\n\n dropdownEl.style.left = elementRefRect.x + 'px';\n dropdownEl.style.width = elementRefRect.width + 'px';\n dropdownEl.style.top = elementRefRect.y + elementRefRect.height + 'px';\n\n if (checkRevserse) {\n if (window.innerHeight < dropdownEl.getBoundingClientRect().bottom) {\n dropdownEl.style.top = 'unset';\n dropdownEl.style.bottom = window.innerHeight - elementRefRect.y + 10 + 'px';\n \n this.isDropdownReversed = true;\n }\n }\n\n if (this.isDropdownReversed) {\n dropdownEl.style.top = 'unset';\n dropdownEl.style.bottom = window.innerHeight - elementRefRect.y + 10 + 'px';\n }\n\n setTimeout(() => {\n this.updateDropdownHeight();\n }, 100);\n\n this.changeDetectorRef.detectChanges();\n }\n\n public removeDropdown(): void {\n this.isDropdown = false;\n this.isDropdownReversed = false;\n this.firstDropdown = 0;\n this.changeDetectorRef.detectChanges();\n\n this.input!.nativeElement.blur();\n\n this.detachGlobalScrollBlockers();\n this.changeDetectorRef.detach();\n }\n\n public handleKeydown(event: any): void {\n if (event.code === 'Backspace') {\n this.onSearch('', true);\n }\n }\n\n public preventFocusChange(event: MouseEvent): void {\n if (this.input?.nativeElement === document.activeElement) {\n event.preventDefault();\n\n return;\n }\n }\n\n public onSearch(value: string, shouldResetHover?: boolean): void {\n this.lastSearch = value;\n\n if (!value) {\n // Reset to original data if input is empty\n this.filteredData = [...this.options.data];\n\n this.updateDropdownHeight();\n\n return;\n }\n \n const searchTerm = value.toLowerCase();\n\n this.filteredData = this.options.data.filter(item =>\n item.label.toLowerCase().includes(searchTerm)\n );\n\n if (this.filteredData.length && shouldResetHover) {\n for (let i = 0; i < this.filteredData.length; i++) {\n this.filteredData[i].isHover = false;\n }\n\n this.filteredData[0].isHover = true;\n }\n\n this.updateDropdownHeight();\n }\n\n public getPlaceholder(): string {\n const options = this.options!;\n const formGroup = options.formGroup;\n const formControlName = options.formControlName;\n\n let placeholder = '';\n\n if (options.placeholder) {\n placeholder = options.placeholder;\n }\n\n if (formGroup && formControlName && options.errors && this.checkIfControlInvalid()) {\n for (const error in options.errors) {\n if (formGroup.controls[formControlName].hasError(error)) {\n placeholder = options.errors[error];\n }\n }\n }\n\n if ((this.control.value instanceof Array && this.control.value.length) || (this.control.value && !(this.control.value instanceof Array))) {\n return '';\n }\n\n return placeholder;\n }\n\n public checkIfControlInvalid(): boolean {\n return this.control.touched && this.control.invalid;\n }\n\n public checkIfControlDisabled(): boolean {\n return this.control.disabled;\n }\n\n private getControl(): AbstractControl | null {\n if (this.options && this.options.formGroup && this.options.formControlName) {\n return this.options.formGroup.controls[this.options.formControlName];\n }\n\n return null;\n }\n\n private isWithinBounds(event: MouseEvent, rect: DOMRect): boolean {\n return (\n event.clientX >= rect.left &&\n event.clientX <= rect.right &&\n event.clientY >= rect.top &&\n event.clientY <= rect.bottom\n );\n }\n\n private handleEvents(): void {\n if (isPlatformServer(this.platformId)) {\n return;\n }\n \n window.addEventListener('keydown', this.keyListener);\n }\n\n private keyup(event: KeyboardEvent): void {\n if (document.activeElement !== this.input?.nativeElement) {\n this.deactivateControl(event);\n\n return;\n }\n\n if (document.activeElement === this.input?.nativeElement) {\n if (document.activeElement !== this.input?.nativeElement) {\n return; \n }\n\n switch (event.code) {\n case 'Enter':\n this.documentEnterKeyup(event);\n\n return;\n case 'Space':\n if (!this.options.searchable) {\n this.documentEnterKeyup(event);\n }\n\n return;\n case 'Backspace':\n if (!this.options.multiple && this.options.searchable && this.control.value.value != null) {\n this.onSearch('', false);\n\n this.setValue('');\n }\n\n return;\n case 'Escape':\n this.deactivateControl(event);\n\n return;\n case 'ArrowDown':\n this.documentArrowsKeyup(true);\n \n return;\n case 'ArrowUp':\n this.documentArrowsKeyup(false);\n\n return;\n }\n\n this.documentKeyup(event);\n }\n }\n\n private documentEnterKeyup(event: KeyboardEvent): void {\n for (let i = 0; i < this.filteredData.length; i++) {\n if (this.filteredData[i].isHover) {\n switch(this.options.multiple) {\n case true:\n this.setMultipleValue(this.filteredData[i], event);\n\n this.updateDropdownHeight();\n this.changeDetectorRef.detectChanges();\n\n return;\n default:\n this.setValue(this.filteredData[i]);\n\n this.removeDropdown();\n }\n }\n }\n }\n\n private documentArrowsKeyup(isDownArrow: boolean): void {\n if (!this.dropdown || !this.filteredData.length) {\n return;\n }\n\n const dataLength = this.filteredData.length;\n const controlValue = this.control.getRawValue();\n const isControlValue = controlValue && controlValue !== '';\n\n let hoverIndex: number | null = null;\n let valueIndex: number | null = null;\n\n for (let i = 0; i < dataLength; i++) {\n if (this.filteredData[i].isHover) { \n hoverIndex = i;\n }\n\n if (isControlValue && this.filteredData[i].value === controlValue) { \n valueIndex = i;\n }\n\n this.filteredData[i].isHover = false;\n }\n\n const currentIndex = hoverIndex ? hoverIndex : valueIndex ? valueIndex : 0;\n let newIndex = isDownArrow ? currentIndex + 1 : currentIndex - 1;\n\n newIndex = newIndex < 0 ? 0 : newIndex;\n newIndex = newIndex >= dataLength ? dataLength - 1 : newIndex;\n\n this.filteredData[newIndex].isHover = true;\n\n this.dropdown?.scrollToIndex(newIndex, 'auto');\n }\n\n private documentKeyup(event: KeyboardEvent): void {\n if (!this.isDropdown || this.options.searchable) {\n return;\n }\n\n for (let i = 0; i < this.filteredData.length; i++) {\n this.filteredData[i].isHover = false;\n }\n\n this.documentKeyupValue = this.documentKeyupValue + event.key.toLowerCase();\n\n let newIndex: number | null = null;\n\n for (let i = 0; i < this.filteredData.length; i++) {\n const subLabel = this.filteredData[i].label.substring(0, this.documentKeyupValue.length).toLowerCase();\n\n if (subLabel === this.documentKeyupValue) {\n newIndex = i;\n\n break;\n }\n\n this.filteredData[i].isHover = false;\n }\n\n if (newIndex !== null) {\n this.filteredData[newIndex].isHover = true;\n\n this.dropdown?.scrollToIndex(newIndex, 'auto');\n }\n }\n\n private removeProperty(obj: ApexSelectData, propertyName: keyof ApexSelectData): Partial<ApexSelectData> {\n let { [propertyName]: removedProperty, ...data } = obj;\n return data;\n }\n\n private blockArrowScroll(event: any) {\n if (!this.dropdown) {\n return;\n }\n\n if (event.key ==='ArrowDown' || event.key ==='ArrowUp') {\n event.preventDefault();\n }\n }\n\n private blockScroll(event: WheelEvent | TouchEvent): void {\n if (!this.dropdown) {\n return;\n }\n \n const dropdownEl = this.dropdown.elementRef.nativeElement;\n const isInsideDropdown = this.isDescendant(dropdownEl, event.target as HTMLElement);\n\n if (isInsideDropdown) {\n const canScroll = dropdownEl.scrollHeight > dropdownEl.clientHeight;\n\n if (!canScroll) {\n event.preventDefault();\n }\n\n return;\n }\n\n event.preventDefault();\n }\n \n private isDescendant(parent: HTMLElement, child: HTMLElement | null): boolean {\n while (child !== null) {\n if (child === parent) {\n return true;\n }\n child = child.parentElement;\n }\n\n return false;\n }\n\n private attachGlobalScrollBlockers(): void {\n if (this.scrollBlockersAttached) {\n return;\n }\n\n window.addEventListener('wheel', this.wheelListener, { passive: false });\n window.addEventListener('touchmove', this.wheelListener, { passive: false });\n\n this.scrollBlockersAttached = true;\n }\n\n private detachGlobalScrollBlockers(): void {\n if (!this.scrollBlockersAttached) {\n return;\n }\n\n window.removeEventListener('wheel', this.wheelListener as EventListener);\n window.removeEventListener('touchmove', this.wheelListener as EventListener);\n\n this.scrollBlockersAttached = false;\n }\n\n}\n","@if (options) {\n @if (options.formGroup && options.formControlName) {\n <div class=\"container\" (mousedown)=\"preventFocusChange($event)\">\n @if (options.label !== '') {\n <div class=\"header\">\n <div class=\"label-wrapper\">\n <label>{{ options.label }}</label>\n \n @if (options.tooltip) {\n <svg class=\"tooltip-icon\" [apexTooltip]=\"options.tooltip\" [tooltipPosition]=\"tooltipPosition.Above\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7.5 7.5H8V11h.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.25 5.25a.25.25 0 1 1-.5 0 .25.25 0 0 1 .5 0z\" fill=\"#fff\"/>\n </g>\n </svg>\n }\n </div>\n \n @if (options.helperText) {\n <div class=\"header-helper\" (click)=\"onHelperText()\" [routerLink]=\"options.helperRoute\">{{ options.helperText }}</div>\n }\n </div>\n }\n\n <div #inputWrapper class=\"input-field-wrapper\" (click)=\"toggleDropdown()\" [formGroup]=\"options.formGroup\" [ngClass]=\"{ 'invalid': checkIfControlInvalid(), 'disabled': checkIfControlDisabled() }\">\n @if (options.prefixImg) {\n <apex-img class=\"prefix\" [src]=\"'assets/img/' + this.options.prefixImg\" [alt]=\"'Select prefix icon'\"></apex-img>\n }\n\n @if (options.searchable && options.multiple && this.showMultipleCount() > 0) {\n @if (options.counterAsValue) {\n <span class=\"multiple-count\">\n {{ this.showMultipleCount() }} selected\n </span>\n } @else {\n <div class=\"chips\">\n @for (data of options.data; track $index) {\n @if (isMultipleSelected(data)) {\n <apex-chip [closeIcon]=\"true\" (closeChange)=\"setMultipleValue(data)\">{{ data.label }}</apex-chip>\n }\n }\n </div>\n }\n }\n\n @if (options.searchable) {\n <!-- used for formControl data binding and reactivness -->\n <input #hiddenInput\n class=\"hidden\"\n [formControlName]=\"options.formControlName\">\n\n <!-- used for searching and data displaying -->\n <input #input\n [placeholder]=\"getPlaceholder()\"\n [readOnly]=\"!options.searchable\"\n [ngClass]=\"{ 'no-icon': !options.prefixImg }\"\n [disabled]=\"checkIfControlDisabled()\"\n (keydown)=\"handleKeydown($event)\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut()\"\n (input)=\"onSearch(input.value, true)\"\n autocorrect=\"off\"\n spellcheck=\"false\">\n } @else {\n <input #input\n readonly\n [disabled]=\"checkIfControlDisabled()\"\n [placeholder]=\"getPlaceholder()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut()\"\n [formControlName]=\"options.formControlName\"\n [ngClass]=\"{ 'no-icon': !options.prefixImg }\"\n (ngModelChange)=\"setVisibleValue($event)\"/>\n }\n \n <div class=\"arrow-wrapper\">\n <div class=\"arrow\" [class]=\"{ checked: this.isDropdown }\"></div>\n </div>\n </div>\n\n @if (isDropdown) {\n <cdk-virtual-scroll-viewport [itemSize]=\"optionItemSizePx\" [style.height.px]=\"dropdownHeightPx\" class=\"dropdown\" #dropdown>\n <div class=\"option\"\n *cdkVirtualFor=\"let data of filteredData;\"\n [ngClass]=\"{ selected: !options.multiple ? isValueSelected(data) : false, preselected: data.isHover, checkbox: options.multiple }\"\n (click)=\"options.multiple ? setMultipleValue(data, $event) : setValue(data)\">\n @if (options.multiple) {\n @if (data.icon) {\n <div class=\"option-icon\">\n <apex-img [src]=\"'assets/img/' + data.icon\" [alt]=\"'Option icon.'\"></apex-img>\n </div>\n }\n <apex-checkbox [checked]=\"isMultipleSelected(data)\">\n <div class=\"multiple-checkbox-container\">\n <span>{{ data.label }}</span>\n @if (data.description) { <span>{{ data.description }}</span> }\n </div>\n </apex-checkbox>\n } @else {\n @if (data.icon) {\n <div class=\"option-icon\">\n <apex-img [src]=\"'assets/img/' + data.icon\" [alt]=\"'Option icon.'\"></apex-img>\n </div>\n }\n {{ data.label }}\n }\n </div>\n @if (filteredData.length === 0) {\n <div class=\"option disabled\">No options to select from.</div>\n }\n </cdk-virtual-scroll-viewport>\n }\n </div>\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"apexara-ng-components-select.mjs","sources":["../../../../projects/apexara/ng-components/select/src/select.component.ts","../../../../projects/apexara/ng-components/select/src/select.component.html","../../../../projects/apexara/ng-components/select/apexara-ng-components-select.ts"],"sourcesContent":["import {\n Component, OnInit, ViewChild, Input,\n Output, inject, PLATFORM_ID, ElementRef,\n HostListener, EventEmitter, IterableDiffers,\n OnDestroy, AfterViewInit, SimpleChanges, IterableDiffer, signal} from '@angular/core';\nimport { NgClass, isPlatformServer } from '@angular/common';\nimport { FormGroup, FormsModule, ReactiveFormsModule, AbstractControl, TouchedChangeEvent } from '@angular/forms';\nimport { RouterLink } from '@angular/router';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\n\nimport { Subscription, debounceTime, filter, fromEvent, tap } from 'rxjs';\n\nimport { ApexChipComponent } from '@apexara/ng-components/chip';\nimport { ApexImageComponent } from '@apexara/ng-components/image';\nimport { ApexCheckboxComponent } from '@apexara/ng-components/checkbox';\n\nimport { OSService, MobileOS } from '@apexara/ng-components/services';\n\nimport { ApexTooltipDirective, TooltipPosition } from '@apexara/ng-components/tooltip';\n\nexport interface ApexSelectOptions {\n label: string;\n tooltip?: string;\n data: ApexSelectData[];\n multiple?: boolean;\n counterAsValue?: boolean;\n placeholder?: string;\n helperText?: string;\n helperRoute?: string;\n prefixImg?: string;\n suffixImg?: string;\n formGroup?: FormGroup;\n searchable?: boolean;\n formControlName?: string;\n errors?: ControlErrors;\n maxDropdownHeightPx?: number; // optional hard max height in px\n}\n\nexport interface ApexSelectData {\n label: string;\n value: any;\n description?: string;\n isHover?: boolean;\n icon?: string;\n}\n\nexport interface ControlErrors {\n [x: string]: string;\n}\n\n@Component({\n selector: 'apex-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.css'],\n imports: [\n NgClass,\n RouterLink,\n FormsModule,\n ScrollingModule,\n ApexChipComponent,\n ApexImageComponent,\n ApexTooltipDirective,\n ReactiveFormsModule,\n ApexCheckboxComponent,\n ]\n})\n\nexport class ApexSelectComponent implements OnInit, AfterViewInit, OnDestroy {\n\n @ViewChild('input') input: ElementRef<HTMLInputElement> | null = null;\n\n @ViewChild('label') label: ElementRef<HTMLLabelElement> | null = null;\n @ViewChild('dropdown') dropdown: CdkVirtualScrollViewport | null = null;\n @ViewChild('inputWrapper') inputWrapper: ElementRef<HTMLInputElement> | null = null;\n\n @Input() options!: ApexSelectOptions;\n\n\n @Output() selectChange = new EventEmitter<ApexSelectData>();\n @Output() helperTextChange = new EventEmitter<void>();\n\n constructor(\n private osService: OSService,\n private elementRef: ElementRef,\n private iterableDiffers: IterableDiffers) {\n\n this.dataDiffer = this.iterableDiffers.find([]).create<ApexSelectData>();\n\n this.handleEvents();\n }\n\n public firstDropdown = signal(0);\n public isDropdown = signal(false);\n public control!: AbstractControl;\n\n public tooltipPosition = TooltipPosition;\n\n private platformId = inject(PLATFORM_ID);\n\n private isDropdownReversed = false;\n\n private shouldPreventEvents = false;\n\n private documentKeyupValue = '';\n private documentKeyupValueResetTime = 1000;\n private documentKeyUpSubscription: Subscription | null = null;\n\n private dataDiffer!: IterableDiffer<ApexSelectData>;\n\n private controlSubscription: Subscription | null = null;\n\n public filteredData = signal<ApexSelectData[]>([]);\n\n private lastSearch = '';\n\n private keyListener = (event: KeyboardEvent) => this.blockArrowScroll(event);\n private wheelListener = (event: WheelEvent | TouchEvent) => this.blockScroll(event);\n\n private scrollBlockersAttached = false;\n\n // Virtual scroll config for options list\n public optionItemSizePx = 48; // must match .dropdown .option height in CSS\n public maxVisibleOptions = 8;\n public dropdownHeightPx = signal(this.optionItemSizePx);\n\n public controlInvalid = signal(false);\n public controlValue = signal<any>(null);\n public controlDisabled = signal(false);\n\n public ngOnInit(): void {\n this.control = this.getControl()!;\n\n if (this.control) {\n this.controlValue.set(this.control.value);\n this.controlDisabled.set(this.control.disabled);\n\n const touchedSub = this.control.events\n .pipe(filter(event => event instanceof TouchedChangeEvent))\n .subscribe(() => {\n this.controlInvalid.set(this.control.touched && this.control.invalid);\n });\n\n const statusSub = this.control.statusChanges.subscribe(() => {\n this.controlInvalid.set(this.control.touched && this.control.invalid);\n this.controlDisabled.set(this.control.disabled);\n });\n\n const valueSub = this.control.valueChanges.subscribe((value) => {\n this.controlValue.set(value);\n });\n\n this.controlSubscription = touchedSub;\n this.controlSubscription.add(statusSub);\n this.controlSubscription.add(valueSub);\n }\n\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n this.documentKeyUpSubscription = fromEvent<KeyboardEvent>(this.elementRef.nativeElement, 'keydown')\n .pipe(\n tap(event => { this.keyup(event) }),\n debounceTime(this.documentKeyupValueResetTime),\n )\n .subscribe(() => { this.documentKeyupValue = '' });\n }\n\n public ngDoCheck(): void {\n const data = this.options?.data || [];\n const diff = this.dataDiffer.diff(data);\n\n if (!diff) {\n return;\n }\n\n this.filteredData.set([...data]);\n }\n\n public ngAfterViewInit(): void {\n this.filteredData.set([...this.options.data]);\n\n setTimeout(() => {\n if (this.options.formGroup && this.options.formControlName) {\n this.setVisibleValue(this.options.formGroup.controls[this.options.formControlName].value);\n }\n })\n\n if (this.options.searchable) {\n this.controlSubscription!.add(this.control.valueChanges.subscribe((value) => {\n this.setVisibleValue(value);\n }));\n }\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (!changes['options'] || changes['options'].firstChange) {\n return;\n }\n\n this.updateDropdownHeight();\n }\n\n public ngOnDestroy(): void {\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n this.detachGlobalScrollBlockers();\n window.removeEventListener('keydown', this.keyListener);\n\n if (this.documentKeyUpSubscription) {\n this.documentKeyUpSubscription.unsubscribe();\n }\n\n if (this.controlSubscription) {\n this.controlSubscription.unsubscribe();\n }\n }\n\n public onHelperText(): void {\n this.helperTextChange.emit();\n }\n\n public setValue(value: any): void {\n if (!this.options.multiple) {\n value = this.removeProperty(value, 'isHover');\n }\n\n this.control.setValue(value);\n this.input!.nativeElement.value = value.label ? value.label : '';\n\n this.selectChange.emit(value);\n\n if (value.value == null) {\n return;\n }\n\n setTimeout(() => {\n this.removeDropdown();\n\n if (!this.options.multiple) {\n this.lastSearch = '';\n }\n })\n }\n\n public setMultipleValue(data: any, event?: Event): void {\n if (event) {\n event.preventDefault();\n }\n\n const newValue = this.control.value;\n let indexOfValue = -1;\n\n for (let i = 0; i < newValue.length; i++) {\n if (newValue[i].value === data.value) {\n indexOfValue = i;\n }\n\n if (JSON.stringify(newValue[i].value) === JSON.stringify(data.value)) {\n indexOfValue = i;\n }\n }\n\n if (indexOfValue === -1) {\n newValue.push({ label: data.label, value: data.value });\n } else {\n newValue.splice(indexOfValue, 1);\n }\n\n this.lastSearch = '';\n this.input!.nativeElement.value = '';\n this.filteredData.set([...this.options.data]);\n\n this.control.setValue(newValue);\n this.selectChange.emit(newValue);\n }\n\n public setVisibleValue(newValue: any | any[]): void {\n if (newValue === null) {\n this.input!.nativeElement.value = '';\n\n return;\n }\n\n if (this.options.counterAsValue) {\n if (this.options.searchable) {\n return;\n }\n\n if (this.showMultipleCount() > 0) {\n this.input!.nativeElement.value = this.showMultipleCount() + ' selected';\n }\n\n return;\n }\n\n let visibleValue = '';\n\n for (let data of this.filteredData()) {\n // when newValue is object and not array\n if (data.value === newValue.value) {\n visibleValue = data.label;\n\n break;\n }\n\n if (this.options.multiple && !this.options.searchable) {\n // when newValue is array\n for (let item of newValue) {\n if (data.value === item.value) {\n visibleValue += item.label + ', ';\n\n break;\n }\n }\n }\n\n if (newValue.value) {\n // Edge case for when we use { label, value } pattern as value\n if (newValue.value.value && this.getControl()?.value.value.value === newValue.value.value) {\n visibleValue = data.label;\n\n break;\n }\n }\n }\n\n this.input!.nativeElement.value = visibleValue;\n }\n\n private updateDropdownHeight(): void {\n if (!this.isDropdown()) {\n return;\n }\n\n setTimeout(() => {\n const count = this.filteredData().length;\n const maxRows = this.maxVisibleOptions;\n\n let next = this.optionItemSizePx;\n\n if (count > 0 && count <= maxRows && this.dropdown) {\n const options = this.dropdown.elementRef.nativeElement.querySelectorAll('.option');\n\n let total = 0;\n\n options.forEach((option: any) => {\n const height = option.getBoundingClientRect().height;\n total += isFinite(height) ? height : 0;\n });\n\n next = total;\n } else {\n const rows = Math.min(count, maxRows);\n\n next = Math.max(rows * this.optionItemSizePx, this.optionItemSizePx);\n }\n\n const maxHeight = this.options.maxDropdownHeightPx;\n\n if (maxHeight) {\n next = Math.min(next, Math.max(this.optionItemSizePx, maxHeight));\n }\n\n this.dropdownHeightPx.set(next);\n\n setTimeout(() => {\n this.dropdown?.checkViewportSize();\n }, 100)\n\n });\n }\n\n public showMultipleCount(): number {\n const value = this.controlValue();\n if (!value || !value.length) {\n return 0;\n }\n\n return value.length;\n }\n\n public isValueSelected(value: ApexSelectData): boolean {\n const controlVal = this.controlValue();\n if (value.value == null || controlVal == null) {\n return false;\n }\n\n return value.value === controlVal.value;\n }\n\n public isMultipleSelected(value: ApexSelectData): boolean {\n const controlVal = this.controlValue();\n if (!controlVal || !controlVal.length) {\n return false;\n }\n\n for (let i = 0; i < controlVal.length; i++) {\n if (value.value === controlVal[i]) {\n return true;\n }\n\n if (controlVal[i].value === value.value) {\n return true;\n }\n\n if (JSON.stringify(controlVal[i].value) === JSON.stringify(value.value)) {\n return true;\n }\n }\n\n return false;\n }\n\n public activateDropdown(): void {\n if (this.checkIfControlDisabled()) {\n return;\n }\n\n this.isDropdown.set(true);\n this.input!.nativeElement.focus();\n\n if (this.firstDropdown() === 0) {\n this.firstDropdown.update(v => v + 1);\n\n setTimeout(() => this.generateDropdownPosition(true));\n }\n\n this.attachGlobalScrollBlockers();\n this.onSearch(this.lastSearch, false);\n }\n\n @HostListener('document:click', ['$event'])\n public deactivateControl(event: MouseEvent | KeyboardEvent): void {\n if (event instanceof KeyboardEvent) {\n this.removeDropdown();\n\n return;\n }\n\n if (!this.dropdown || !this.inputWrapper) {\n return;\n }\n\n const dropdownRect = this.dropdown.elementRef.nativeElement.getBoundingClientRect();\n const inputWrapperRect = this.inputWrapper.nativeElement.getBoundingClientRect();\n\n const isClickInsideDropdown = this.isWithinBounds(event, dropdownRect);\n const isClickInsideInputWrapper = this.isWithinBounds(event, inputWrapperRect);\n\n if (isClickInsideDropdown || isClickInsideInputWrapper) {\n return;\n }\n\n this.removeDropdown();\n }\n\n public onFocusIn(): void {\n this.shouldPreventEvents = true;\n\n this.activateDropdown();\n\n setTimeout(() => {\n this.shouldPreventEvents = false;\n }, 200);\n }\n\n public onFocusOut(): void {\n this.shouldPreventEvents = true;\n\n setTimeout(() => {\n this.shouldPreventEvents = false;\n }, 200);\n\n this.removeDropdown();\n }\n\n public toggleDropdown(): void {\n if (this.shouldPreventEvents) {\n return;\n }\n\n if (this.isDropdown()) {\n this.removeDropdown();\n } else {\n this.activateDropdown();\n }\n }\n\n private generateDropdownPosition(checkRevserse: boolean = false): void {\n if (!this.dropdown) {\n // method will keep executing until dropdown is rendered\n setTimeout(() => this.generateDropdownPosition(true));\n\n return;\n }\n\n const dropdownEl = this.dropdown.elementRef.nativeElement;\n const elementRefRect = this.elementRef.nativeElement.getBoundingClientRect();\n\n if (this.osService.mobileOS === MobileOS.iOS) {\n elementRefRect.y += window.visualViewport!.offsetTop;\n elementRefRect.x += window.visualViewport!.offsetLeft;\n }\n\n dropdownEl.style.left = elementRefRect.x + 'px';\n dropdownEl.style.width = elementRefRect.width + 'px';\n dropdownEl.style.top = elementRefRect.y + elementRefRect.height + 'px';\n\n if (checkRevserse) {\n if (window.innerHeight < dropdownEl.getBoundingClientRect().bottom) {\n dropdownEl.style.top = 'unset';\n dropdownEl.style.bottom = window.innerHeight - elementRefRect.y + 10 + 'px';\n\n this.isDropdownReversed = true;\n }\n }\n\n if (this.isDropdownReversed) {\n dropdownEl.style.top = 'unset';\n dropdownEl.style.bottom = window.innerHeight - elementRefRect.y + 10 + 'px';\n }\n\n setTimeout(() => {\n this.updateDropdownHeight();\n }, 100);\n }\n\n public removeDropdown(): void {\n this.isDropdown.set(false);\n this.isDropdownReversed = false;\n this.firstDropdown.set(0);\n\n this.input!.nativeElement.blur();\n\n this.detachGlobalScrollBlockers();\n }\n\n public handleKeydown(event: any): void {\n if (event.code === 'Backspace') {\n this.onSearch('', true);\n }\n }\n\n public preventFocusChange(event: MouseEvent): void {\n if (this.input?.nativeElement === document.activeElement) {\n event.preventDefault();\n\n return;\n }\n }\n\n public onSearch(value: string, shouldResetHover?: boolean): void {\n this.lastSearch = value;\n\n if (!value) {\n // Reset to original data if input is empty\n this.filteredData.set([...this.options.data]);\n\n this.updateDropdownHeight();\n\n return;\n }\n\n const searchTerm = value.toLowerCase();\n\n const filtered = this.options.data.filter(item =>\n item.label.toLowerCase().includes(searchTerm)\n );\n\n if (filtered.length && shouldResetHover) {\n for (let i = 0; i < filtered.length; i++) {\n filtered[i].isHover = false;\n }\n\n filtered[0].isHover = true;\n }\n\n this.filteredData.set(filtered);\n\n this.updateDropdownHeight();\n }\n\n public getPlaceholder(): string {\n const options = this.options!;\n const formGroup = options.formGroup;\n const formControlName = options.formControlName;\n const controlVal = this.controlValue();\n\n let placeholder = '';\n\n if (options.placeholder) {\n placeholder = options.placeholder;\n }\n\n if (formGroup && formControlName && options.errors && this.checkIfControlInvalid()) {\n for (const error in options.errors) {\n if (formGroup.controls[formControlName].hasError(error)) {\n placeholder = options.errors[error];\n }\n }\n }\n\n if ((controlVal instanceof Array && controlVal.length) || (controlVal && !(controlVal instanceof Array))) {\n return '';\n }\n\n return placeholder;\n }\n\n public checkIfControlInvalid(): boolean {\n return this.controlInvalid();\n }\n\n public checkIfControlDisabled(): boolean {\n return this.controlDisabled();\n }\n\n private getControl(): AbstractControl | null {\n if (this.options && this.options.formGroup && this.options.formControlName) {\n return this.options.formGroup.controls[this.options.formControlName];\n }\n\n return null;\n }\n\n private isWithinBounds(event: MouseEvent, rect: DOMRect): boolean {\n return (\n event.clientX >= rect.left &&\n event.clientX <= rect.right &&\n event.clientY >= rect.top &&\n event.clientY <= rect.bottom\n );\n }\n\n private handleEvents(): void {\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n window.addEventListener('keydown', this.keyListener);\n }\n\n private keyup(event: KeyboardEvent): void {\n if (document.activeElement !== this.input?.nativeElement) {\n this.deactivateControl(event);\n\n return;\n }\n\n if (document.activeElement === this.input?.nativeElement) {\n if (document.activeElement !== this.input?.nativeElement) {\n return;\n }\n\n switch (event.code) {\n case 'Enter':\n this.documentEnterKeyup(event);\n\n return;\n case 'Space':\n if (!this.options.searchable) {\n this.documentEnterKeyup(event);\n }\n\n return;\n case 'Backspace':\n if (!this.options.multiple && this.options.searchable && this.control.value.value != null) {\n this.onSearch('', false);\n\n this.setValue('');\n }\n\n return;\n case 'Escape':\n this.deactivateControl(event);\n\n return;\n case 'ArrowDown':\n this.documentArrowsKeyup(true);\n\n return;\n case 'ArrowUp':\n this.documentArrowsKeyup(false);\n\n return;\n }\n\n this.documentKeyup(event);\n }\n }\n\n private documentEnterKeyup(event: KeyboardEvent): void {\n const data = this.filteredData();\n for (let i = 0; i < data.length; i++) {\n if (data[i].isHover) {\n switch(this.options.multiple) {\n case true:\n this.setMultipleValue(data[i], event);\n\n this.updateDropdownHeight();\n\n return;\n default:\n this.setValue(data[i]);\n\n this.removeDropdown();\n }\n }\n }\n }\n\n private documentArrowsKeyup(isDownArrow: boolean): void {\n if (!this.dropdown || !this.filteredData().length) {\n return;\n }\n\n const data = this.filteredData();\n const dataLength = data.length;\n const controlValue = this.control.getRawValue();\n const isControlValue = controlValue && controlValue !== '';\n\n let hoverIndex: number | null = null;\n let valueIndex: number | null = null;\n\n for (let i = 0; i < dataLength; i++) {\n if (data[i].isHover) {\n hoverIndex = i;\n }\n\n if (isControlValue && data[i].value === controlValue) {\n valueIndex = i;\n }\n\n data[i].isHover = false;\n }\n\n const currentIndex = hoverIndex ? hoverIndex : valueIndex ? valueIndex : 0;\n let newIndex = isDownArrow ? currentIndex + 1 : currentIndex - 1;\n\n newIndex = newIndex < 0 ? 0 : newIndex;\n newIndex = newIndex >= dataLength ? dataLength - 1 : newIndex;\n\n data[newIndex].isHover = true;\n\n this.filteredData.set([...data]);\n\n this.dropdown?.scrollToIndex(newIndex, 'auto');\n }\n\n private documentKeyup(event: KeyboardEvent): void {\n if (!this.isDropdown() || this.options.searchable) {\n return;\n }\n\n const data = this.filteredData();\n\n for (let i = 0; i < data.length; i++) {\n data[i].isHover = false;\n }\n\n this.documentKeyupValue = this.documentKeyupValue + event.key.toLowerCase();\n\n let newIndex: number | null = null;\n\n for (let i = 0; i < data.length; i++) {\n const subLabel = data[i].label.substring(0, this.documentKeyupValue.length).toLowerCase();\n\n if (subLabel === this.documentKeyupValue) {\n newIndex = i;\n\n break;\n }\n\n data[i].isHover = false;\n }\n\n if (newIndex !== null) {\n data[newIndex].isHover = true;\n\n this.dropdown?.scrollToIndex(newIndex, 'auto');\n }\n\n this.filteredData.set([...data]);\n }\n\n private removeProperty(obj: ApexSelectData, propertyName: keyof ApexSelectData): Partial<ApexSelectData> {\n let { [propertyName]: removedProperty, ...data } = obj;\n return data;\n }\n\n private blockArrowScroll(event: any) {\n if (!this.dropdown) {\n return;\n }\n\n if (event.key ==='ArrowDown' || event.key ==='ArrowUp') {\n event.preventDefault();\n }\n }\n\n private blockScroll(event: WheelEvent | TouchEvent): void {\n if (!this.dropdown) {\n return;\n }\n\n const dropdownEl = this.dropdown.elementRef.nativeElement;\n const isInsideDropdown = this.isDescendant(dropdownEl, event.target as HTMLElement);\n\n if (isInsideDropdown) {\n const canScroll = dropdownEl.scrollHeight > dropdownEl.clientHeight;\n\n if (!canScroll) {\n event.preventDefault();\n }\n\n return;\n }\n\n event.preventDefault();\n }\n\n private isDescendant(parent: HTMLElement, child: HTMLElement | null): boolean {\n while (child !== null) {\n if (child === parent) {\n return true;\n }\n child = child.parentElement;\n }\n\n return false;\n }\n\n private attachGlobalScrollBlockers(): void {\n if (this.scrollBlockersAttached) {\n return;\n }\n\n window.addEventListener('wheel', this.wheelListener, { passive: false });\n window.addEventListener('touchmove', this.wheelListener, { passive: false });\n\n this.scrollBlockersAttached = true;\n }\n\n private detachGlobalScrollBlockers(): void {\n if (!this.scrollBlockersAttached) {\n return;\n }\n\n window.removeEventListener('wheel', this.wheelListener as EventListener);\n window.removeEventListener('touchmove', this.wheelListener as EventListener);\n\n this.scrollBlockersAttached = false;\n }\n\n}\n","@if (options) {\n @if (options.formGroup && options.formControlName) {\n <div class=\"container\" (mousedown)=\"preventFocusChange($event)\">\n @if (options.label !== '') {\n <div class=\"header\">\n <div class=\"label-wrapper\">\n <label>{{ options.label }}</label>\n \n @if (options.tooltip) {\n <svg class=\"tooltip-icon\" [apexTooltip]=\"options.tooltip\" [tooltipPosition]=\"tooltipPosition.Above\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7.5 7.5H8V11h.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.25 5.25a.25.25 0 1 1-.5 0 .25.25 0 0 1 .5 0z\" fill=\"#fff\"/>\n </g>\n </svg>\n }\n </div>\n \n @if (options.helperText) {\n <div class=\"header-helper\" (click)=\"onHelperText()\" [routerLink]=\"options.helperRoute\">{{ options.helperText }}</div>\n }\n </div>\n }\n\n <div #inputWrapper class=\"input-field-wrapper\" (click)=\"toggleDropdown()\" [formGroup]=\"options.formGroup\" [ngClass]=\"{ 'invalid': checkIfControlInvalid(), 'disabled': checkIfControlDisabled() }\">\n @if (options.prefixImg) {\n <apex-img class=\"prefix\" [src]=\"'assets/img/' + this.options.prefixImg\" [alt]=\"'Select prefix icon'\"></apex-img>\n }\n\n @if (options.searchable && options.multiple && this.showMultipleCount() > 0) {\n @if (options.counterAsValue) {\n <span class=\"multiple-count\">\n {{ this.showMultipleCount() }} selected\n </span>\n } @else {\n <div class=\"chips\">\n @for (data of options.data; track $index) {\n @if (isMultipleSelected(data)) {\n <apex-chip [closeIcon]=\"true\" (closeChange)=\"setMultipleValue(data)\">{{ data.label }}</apex-chip>\n }\n }\n </div>\n }\n }\n\n @if (options.searchable) {\n <!-- used for formControl data binding and reactivness -->\n <input #hiddenInput\n class=\"hidden\"\n [formControlName]=\"options.formControlName\">\n\n <!-- used for searching and data displaying -->\n <input #input\n [placeholder]=\"getPlaceholder()\"\n [readOnly]=\"!options.searchable\"\n [ngClass]=\"{ 'no-icon': !options.prefixImg }\"\n [disabled]=\"checkIfControlDisabled()\"\n (keydown)=\"handleKeydown($event)\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut()\"\n (input)=\"onSearch(input.value, true)\"\n autocorrect=\"off\"\n spellcheck=\"false\">\n } @else {\n <input #input\n readonly\n [disabled]=\"checkIfControlDisabled()\"\n [placeholder]=\"getPlaceholder()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut()\"\n [formControlName]=\"options.formControlName\"\n [ngClass]=\"{ 'no-icon': !options.prefixImg }\"\n (ngModelChange)=\"setVisibleValue($event)\"/>\n }\n \n <div class=\"arrow-wrapper\">\n <div class=\"arrow\" [class]=\"{ checked: this.isDropdown() }\"></div>\n </div>\n </div>\n\n @if (isDropdown()) {\n <cdk-virtual-scroll-viewport [itemSize]=\"optionItemSizePx\" [style.height.px]=\"dropdownHeightPx()\" class=\"dropdown\" #dropdown>\n <div class=\"option\"\n *cdkVirtualFor=\"let data of filteredData();\"\n [ngClass]=\"{ selected: !options.multiple ? isValueSelected(data) : false, preselected: data.isHover, checkbox: options.multiple }\"\n (click)=\"options.multiple ? setMultipleValue(data, $event) : setValue(data)\">\n @if (options.multiple) {\n @if (data.icon) {\n <div class=\"option-icon\">\n <apex-img [src]=\"'assets/img/' + data.icon\" [alt]=\"'Option icon.'\"></apex-img>\n </div>\n }\n <apex-checkbox [checked]=\"isMultipleSelected(data)\">\n <div class=\"multiple-checkbox-container\">\n <span>{{ data.label }}</span>\n @if (data.description) { <span>{{ data.description }}</span> }\n </div>\n </apex-checkbox>\n } @else {\n @if (data.icon) {\n <div class=\"option-icon\">\n <apex-img [src]=\"'assets/img/' + data.icon\" [alt]=\"'Option icon.'\"></apex-img>\n </div>\n }\n {{ data.label }}\n }\n </div>\n @if (filteredData().length === 0) {\n <div class=\"option disabled\">No options to select from.</div>\n }\n </cdk-virtual-scroll-viewport>\n }\n </div>\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|