UNPKG

angular-select-dropdown

Version:

A highly customizable and flexible dropdown select component for Angular applications. Ideal for creating dynamic select menus with search, filtering.

1 lines 18.7 kB
{"version":3,"file":"angular-select-dropdown.mjs","sources":["../../../projects/angular-select-dropdown/src/lib/directives/click-outside.directive.ts","../../../projects/angular-select-dropdown/src/lib/components/angular-select-dropdown.component.ts","../../../projects/angular-select-dropdown/src/lib/components/angular-select-dropdown.component.html","../../../projects/angular-select-dropdown/src/lib/services/angular-select-dropdown.service.ts","../../../projects/angular-select-dropdown/src/lib/angular-select-dropdown.module.ts","../../../projects/angular-select-dropdown/src/public-api.ts","../../../projects/angular-select-dropdown/src/angular-select-dropdown.ts"],"sourcesContent":["import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\n\n@Directive({\n selector: '[clickOutside]'\n})\nexport class ClickOutsideDirective {\n @Input() excludeElements: string[] = [];\n\n @Output() clickOutside = new EventEmitter<void>();\n\n constructor(private elementRef: ElementRef) {}\n\n @HostListener('document:mousedown', ['$event'])\n onClick(event: Event): void {\n const target = event.target as HTMLElement;\n\n if (!this.elementRef.nativeElement.contains(target) && !this.isExcludedElement(target, this.excludeElements)) {\n this.clickOutside.emit();\n }\n }\n\n private isExcludedElement(target: HTMLElement, excludeElements: string[]): boolean {\n return excludeElements.some(selectorOrClass => {\n if (selectorOrClass.startsWith('.')) {\n const className = selectorOrClass.slice(1);\n return target.classList.contains(className) || this.isInsideExcludedElement(target, `.${className}`);\n } else {\n const excludedElements = this.elementRef.nativeElement.ownerDocument.querySelectorAll(selectorOrClass) as NodeListOf<HTMLElement>;\n return Array.from(excludedElements).some(el => el.contains(target) || el === target);\n }\n });\n }\n\n private isInsideExcludedElement(target: HTMLElement, selector: string): boolean {\n const excludedElements = Array.from(this.elementRef.nativeElement.ownerDocument.querySelectorAll(selector)) as HTMLElement[];\n return excludedElements.some(excludedElement => excludedElement.contains(target));\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { AngularSelectDropdown } from '../models';\n\ninterface SelectedItem {\n value: any;\n name: string;\n}\n\n@Component({\n selector: 'angular-select-dropdown',\n templateUrl: 'angular-select-dropdown.component.html',\n styleUrls: [ 'angular-select-dropdown.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AngularSelectDropdownComponent),\n multi: true\n }\n ]\n})\nexport class AngularSelectDropdownComponent<T> implements ControlValueAccessor, OnDestroy {\n /**\n * Handler function to extract the label for each item.\n * @param item The item from the list.\n * @returns The label (name or value) of the item.\n */\n @Input() labelHandler: (item: T) => any = (item) => (item as AngularSelectDropdown)['name'] || item;\n\n /**\n * Defines the key used to sort the dropdown items.\n * @param sortKeyName The key used to sort the items, default is 'value'.\n * @default 'value'\n */\n @Input() sortKeyName: string = 'value';\n\n /**\n * List of items to populate the dropdown.\n * This setter updates the internal store of items and triggers an update.\n * @param items The array of items to be displayed in the dropdown.\n */\n @Input() set items(items: T[]) {\n this._items = items;\n this.updateItems(items);\n }\n\n /**\n * Determines whether the dropdown allows clearing the selection.\n * @param isClearable If true, the dropdown will show a clear button.\n * @default false\n */\n @Input() isClearable: boolean = false;\n\n /**\n * Determines whether the dropdown is disabled.\n * @param disabled If true, the dropdown is disabled and cannot be interacted with.\n * @default false\n */\n @Input() disabled: boolean = false;\n\n /**\n * Determines whether the dropdown menu should close when the selected item is cleared.\n * @param closeMenuOnClear If true, the dropdown will close when the selection is cleared.\n * @default true\n */\n @Input() closeMenuOnClear: boolean = true;\n\n /**\n * Placeholder text displayed when no item is selected.\n * @param placeholder The placeholder text.\n * @default ''\n */\n @Input() placeholder: string = '';\n\n /**\n * Message displayed when no items match the search query.\n * @param notFoundMessage The message to display when no items are found.\n * @default 'Nothing found'\n */\n @Input() notFoundMessage: string = 'Nothing found';\n\n /**\n * Event emitted when an item is selected.\n * @param selectItem The selected item is emitted as an event.\n */\n @Output() selectItem: EventEmitter<T> = new EventEmitter();\n\n @HostBinding('class') hostClasses = 'angular-select-dropdown';\n\n private _items: T[] = [];\n\n get items(): T[] {\n return this._items;\n }\n\n data: (number | string) | (number | string)[] = '';\n isDropdownOpen: boolean = false;\n itemsStore: AngularSelectDropdown[] = [];\n selectedItem: SelectedItem = {\n value: null,\n name: ''\n };\n\n constructor(\n private cdRef: ChangeDetectorRef\n ) {}\n\n ngOnDestroy() {\n this.isDropdownOpen = false;\n }\n\n private onTouched = () => {};\n\n private onChange: (value: number | string | null) => void = () => {};\n\n registerOnChange(onChange: (value: number | string | null) => void) {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: () => void) {\n this.onTouched = onTouched;\n }\n\n writeValue(obj: number | string) {\n this.data = obj;\n this.updateItems(this.items);\n }\n\n private updateData(data: number | string | null) {\n this.onChange(data);\n this.onTouched();\n }\n\n private updateItems(items: T[]) {\n if (items && items.length) {\n this.itemsStore = items.map((item: any) => ({\n value: item[this.sortKeyName as keyof T] ?? this.labelHandler(item),\n name: this.labelHandler(item),\n disabled: !!item?.['disabled']\n })) as AngularSelectDropdown[];\n } else {\n this.itemsStore = [];\n }\n\n this.updateSelectedItem();\n this.cdRef.markForCheck();\n }\n\n private updateSelectedItem(item?: AngularSelectDropdown) {\n const selectedItem = this.itemsStore.find(item => item?.value == this.data);\n\n this.selectedItem = {\n value: item?.value ?? (selectedItem?.value ?? null),\n name: item?.name ?? (selectedItem?.name ?? '')\n };\n }\n\n trackByValue(index: number, item: AngularSelectDropdown) {\n return item.value;\n }\n\n closeDropdownMenu() {\n this.isDropdownOpen = false;\n }\n\n onClickRemove(event: MouseEvent) {\n event.stopImmediatePropagation();\n\n if (this.selectedItem.value && this.selectedItem.name) {\n this.updateSelectedItem();\n this.updateData(null);\n this.selectItem.emit();\n\n if (this.closeMenuOnClear) {\n this.closeDropdownMenu();\n }\n }\n }\n\n onSelectItem(item: AngularSelectDropdown) {\n this.updateData(item.value);\n this.updateSelectedItem(item);\n this.closeDropdownMenu();\n\n this.selectItem.emit(item.value);\n }\n\n onSelectClick() {\n this.isDropdownOpen = !this.isDropdownOpen;\n }\n}\n","<div\n class=\"angular-select-dropdown-wrapper\"\n [excludeElements]=\"['.angular-select-dropdown-menu']\"\n [class.angular-select-dropdown-wrapper_disabled]=\"disabled\"\n (clickOutside)=\"closeDropdownMenu()\"\n (click)=\"onSelectClick()\"\n>\n <div\n class=\"angular-select-dropdown__text\"\n [class.angular-select-dropdown__text_placeholder]=\"!selectedItem.name && placeholder\"\n [title]=\"selectedItem.name\"\n >\n {{selectedItem.name || placeholder}}\n </div>\n\n <div class=\"angular-select-dropdown-actions\">\n <div\n *ngIf=\"isClearable\"\n class=\"angular-select-dropdown-actions__close\"\n (click)=\"onClickRemove($event)\"\n ></div>\n <div\n class=\"angular-select-dropdown-actions__arrow\"\n [class.angular-select-dropdown-actions__arrow_rotate]=\"isDropdownOpen\"\n ></div>\n </div>\n</div>\n\n<div\n *ngIf=\"isDropdownOpen\"\n class=\"angular-select-dropdown-menu\"\n>\n <div class=\"angular-select-dropdown-menu__wrapper\">\n <div\n *ngIf=\"itemsStore.length; else itemsListEmpty\"\n class=\"angular-select-dropdown-menu__items\"\n >\n <div\n *ngFor=\"let item of itemsStore; let i = index; trackBy: trackByValue\"\n class=\"angular-select-dropdown-menu__item\"\n [class.angular-select-dropdown-menu__item_active]=\"item.value === selectedItem.value\"\n [title]=\"item.name\"\n (click)=\"onSelectItem(item)\"\n >\n {{item.name}}\n </div>\n </div>\n\n <ng-template #itemsListEmpty>\n <div\n class=\"angular-select-dropdown-menu__not-found\"\n >\n {{notFoundMessage}}\n </div>\n </ng-template>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AngularSelectDropdownService {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AngularSelectDropdownComponent } from './components';\nimport { ClickOutsideDirective } from './directives';\n\n@NgModule({\n declarations: [ AngularSelectDropdownComponent, ClickOutsideDirective ],\n imports: [CommonModule],\n exports: [ AngularSelectDropdownComponent ]\n})\nexport class AngularSelectDropdownModule {}\n","/*\n * Public API Surface of angular-select-dropdown\n */\n\nexport * from './lib/components';\nexport * from './lib/services';\nexport * from './lib/models';\nexport * from './lib/angular-select-dropdown.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ClickOutsideDirective"],"mappings":"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"}