UNPKG

@coreui/angular

Version:

CoreUI Components Library for Angular

119 lines 14.7 kB
import { ContentChildren, DestroyRef, Directive, ElementRef, forwardRef, HostBinding, HostListener, inject, Input } from '@angular/core'; import { FocusKeyManager } from '@angular/cdk/a11y'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { tap } from 'rxjs/operators'; import { ThemeDirective } from '../../shared/theme.directive'; import { DropdownService } from '../dropdown.service'; import { DropdownItemDirective } from '../dropdown-item/dropdown-item.directive'; import * as i0 from "@angular/core"; import * as i1 from "../../shared/theme.directive"; export class DropdownMenuDirective { constructor() { this.#destroyRef = inject(DestroyRef); this.elementRef = inject(ElementRef); this.#dropdownService = inject(DropdownService); /** * Toggle the visibility of dropdown menu component. * @type boolean */ this.visible = false; } #destroyRef; #dropdownService; #focusKeyManager; get hostClasses() { return { 'dropdown-menu': true, [`dropdown-menu-${this.alignment}`]: !!this.alignment, show: this.visible }; } get hostStyles() { // workaround for popper position calculate (see also: dropdown.component) return { visibility: this.visible ? null : '', display: this.visible ? null : '' }; } onKeyDown($event) { if (!this.visible) { return; } if (['Space', 'ArrowDown'].includes($event.code)) { $event.preventDefault(); } this.#focusKeyManager.onKeydown($event); } onKeyUp($event) { if (!this.visible) { return; } if (['Tab'].includes($event.key)) { if (this.#focusKeyManager.activeItem) { $event.shiftKey ? this.#focusKeyManager.setPreviousItemActive() : this.#focusKeyManager.setNextItemActive(); } else { this.#focusKeyManager.setFirstItemActive(); } } } ngAfterContentInit() { this.focusKeyManagerInit(); this.dropdownItemsContent.changes .pipe(tap((change) => { this.focusKeyManagerInit(); }), takeUntilDestroyed(this.#destroyRef)) .subscribe(); } ngOnInit() { this.#dropdownService.dropdownState$ .pipe(tap((state) => { if ('visible' in state) { this.visible = state.visible === 'toggle' ? !this.visible : state.visible; if (!this.visible) { this.#focusKeyManager?.setActiveItem(-1); } } }), takeUntilDestroyed(this.#destroyRef)) .subscribe(); } focusKeyManagerInit() { this.#focusKeyManager = new FocusKeyManager(this.dropdownItemsContent) .withHomeAndEnd() .withPageUpDown() .withWrap() .skipPredicate((dropdownItem) => dropdownItem.disabled === true); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DropdownMenuDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: DropdownMenuDirective, isStandalone: true, selector: "[cDropdownMenu]", inputs: { alignment: "alignment", visible: "visible" }, host: { listeners: { "keydown": "onKeyDown($event)", "keyup": "onKeyUp($event)" }, properties: { "class": "this.hostClasses", "style": "this.hostStyles" }, classAttribute: "dropdown-menu" }, queries: [{ propertyName: "dropdownItemsContent", predicate: i0.forwardRef(() => DropdownItemDirective), descendants: true }], exportAs: ["cDropdownMenu"], hostDirectives: [{ directive: i1.ThemeDirective, inputs: ["dark", "dark"] }], ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: DropdownMenuDirective, decorators: [{ type: Directive, args: [{ selector: '[cDropdownMenu]', exportAs: 'cDropdownMenu', standalone: true, hostDirectives: [{ directive: ThemeDirective, inputs: ['dark'] }], host: { class: 'dropdown-menu' } }] }], propDecorators: { alignment: [{ type: Input }], visible: [{ type: Input }], hostClasses: [{ type: HostBinding, args: ['class'] }], hostStyles: [{ type: HostBinding, args: ['style'] }], onKeyDown: [{ type: HostListener, args: ['keydown', ['$event']] }], onKeyUp: [{ type: HostListener, args: ['keyup', ['$event']] }], dropdownItemsContent: [{ type: ContentChildren, args: [forwardRef(() => DropdownItemDirective), { descendants: true }] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVudS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2Ryb3Bkb3duL2Ryb3Bkb3duLW1lbnUvZHJvcGRvd24tbWVudS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGVBQWUsRUFDZixVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7O0FBU2pGLE1BQU0sT0FBTyxxQkFBcUI7SUFQbEM7UUFRVyxnQkFBVyxHQUFlLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0QyxlQUFVLEdBQWUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELHFCQUFnQixHQUFvQixNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFTckU7OztXQUdHO1FBQ00sWUFBTyxHQUFZLEtBQUssQ0FBQztLQWlGbkM7SUFoR1UsV0FBVyxDQUFrQztJQUU3QyxnQkFBZ0IsQ0FBNEM7SUFDckUsZ0JBQWdCLENBQTBDO0lBYzFELElBQ0ksV0FBVztRQUNiLE9BQU87WUFDTCxlQUFlLEVBQUUsSUFBSTtZQUNyQixDQUFDLGlC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QUFFO2FBQ2hCLGNBQWMsRUFBRTthQUNoQixRQUFRLEVBQUU7YUFDVixhQUFhLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDckUsQ0FBQzsrR0FoR1UscUJBQXFCO21HQUFyQixxQkFBcUIsMlhBMERFLHFCQUFxQjs7NEZBMUQ1QyxxQkFBcUI7a0JBUGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixjQUFjLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDakUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRTtpQkFDakM7OEJBV1UsU0FBUztzQkFBakIsS0FBSztnQkFNRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0YsV0FBVztzQkFEZCxXQUFXO3VCQUFDLE9BQU87Z0JBU00sVUFBVTtzQkFBbkMsV0FBVzt1QkFBQyxPQUFPO2dCQVFpQixTQUFTO3NCQUE3QyxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFVQSxPQUFPO3NCQUF6QyxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFjakMsb0JBQW9CO3NCQURuQixlQUFlO3VCQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGVzdHJveVJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvY3VzS2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVGhlbWVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9zaGFyZWQvdGhlbWUuZGlyZWN0aXZlJztcbmltcG9ydCB7IERyb3Bkb3duU2VydmljZSB9IGZyb20gJy4uL2Ryb3Bkb3duLnNlcnZpY2UnO1xuaW1wb3J0IHsgRHJvcGRvd25JdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi4vZHJvcGRvd24taXRlbS9kcm9wZG93bi1pdGVtLmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjRHJvcGRvd25NZW51XScsXG4gIGV4cG9ydEFzOiAnY0Ryb3Bkb3duTWVudScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3REaXJlY3RpdmVzOiBbeyBkaXJlY3RpdmU6IFRoZW1lRGlyZWN0aXZlLCBpbnB1dHM6IFsnZGFyayddIH1dLFxuICBob3N0OiB7IGNsYXNzOiAnZHJvcGRvd24tbWVudScgfVxufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93bk1lbnVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQge1xuICByZWFkb25seSAjZGVzdHJveVJlZjogRGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHJlYWRvbmx5ICNkcm9wZG93blNlcnZpY2U6IERyb3Bkb3duU2VydmljZSA9IGluamVjdChEcm9wZG93blNlcnZpY2UpO1xuICAjZm9jdXNLZXlNYW5hZ2VyITogRm9jdXNLZXlNYW5hZ2VyPERyb3Bkb3duSXRlbURpcmVjdGl2ZT47XG5cbiAgLyoqXG4gICAqIFNldCBhbGlnbm1lbnQgb2YgZHJvcGRvd24gbWVudS5cbiAgICogQHR5cGUgeydzdGFydCcgfCAnZW5kJyB9XG4gICAqL1xuICBASW5wdXQoKSBhbGlnbm1lbnQ/OiAnc3RhcnQnIHwgJ2VuZCcgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiBkcm9wZG93biBtZW51IGNvbXBvbmVudC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KCkgdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgaG9zdENsYXNzZXMoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2Ryb3Bkb3duLW1lbnUnOiB0cnVlLFxuICAgICAgW2Bkcm9wZG93bi1tZW51LSR7dGhpcy5hbGlnbm1lbnR9YF06ICEhdGhpcy5hbGlnbm1lbnQsXG4gICAgICBzaG93OiB0aGlzLnZpc2libGVcbiAgICB9O1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZScpIGdldCBob3N0U3R5bGVzKCkge1xuICAgIC8vIHdvcmthcm91bmQgZm9yIHBvcHBlciBwb3NpdGlvbiBjYWxjdWxhdGUgKHNlZSBhbHNvOiBkcm9wZG93bi5jb21wb25lbnQpXG4gICAgcmV0dXJuIHtcbiAgICAgIHZpc2liaWxpdHk6IHRoaXMudmlzaWJsZSA/IG51bGwgOiAnJyxcbiAgICAgIGRpc3BsYXk6IHRoaXMudmlzaWJsZSA/IG51bGwgOiAnJ1xuICAgIH07XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSkgb25LZXlEb3duKCRldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy52aXNpYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChbJ1NwYWNlJywgJ0Fycm93RG93biddLmluY2x1ZGVzKCRldmVudC5jb2RlKSkge1xuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIHRoaXMuI2ZvY3VzS2V5TWFuYWdlci5vbktleWRvd24oJGV2ZW50KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSkgb25LZXlVcCgkZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudmlzaWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoWydUYWInXS5pbmNsdWRlcygkZXZlbnQua2V5KSkge1xuICAgICAgaWYgKHRoaXMuI2ZvY3VzS2V5TWFuYWdlci5hY3RpdmVJdGVtKSB7XG4gICAgICAgICRldmVudC5zaGlmdEtleSA/IHRoaXMuI2ZvY3VzS2V5TWFuYWdlci5zZXRQcmV2aW91c0l0ZW1BY3RpdmUoKSA6IHRoaXMuI2ZvY3VzS2V5TWFuYWdlci5zZXROZXh0SXRlbUFjdGl2ZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4jZm9jdXNLZXlNYW5hZ2VyLnNldEZpcnN0SXRlbUFjdGl2ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBEcm9wZG93bkl0ZW1EaXJlY3RpdmUpLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIGRyb3Bkb3duSXRlbXNDb250ZW50ITogUXVlcnlMaXN0PERyb3Bkb3duSXRlbURpcmVjdGl2ZT47XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9jdXNLZXlNYW5hZ2VySW5pdCgpO1xuXG4gICAgdGhpcy5kcm9wZG93bkl0ZW1zQ29udGVudC5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChjaGFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLmZvY3VzS2V5TWFuYWdlckluaXQoKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jZHJvcGRvd25TZXJ2aWNlLmRyb3Bkb3duU3RhdGUkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChzdGF0ZSkgPT4ge1xuICAgICAgICAgIGlmICgndmlzaWJsZScgaW4gc3RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IHN0YXRlLnZpc2libGUgPT09ICd0b2dnbGUnID8gIXRoaXMudmlzaWJsZSA6IHN0YXRlLnZpc2libGU7XG4gICAgICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkge1xuICAgICAgICAgICAgICB0aGlzLiNmb2N1c0tleU1hbmFnZXI/LnNldEFjdGl2ZUl0ZW0oLTEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLiNkZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c0tleU1hbmFnZXJJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI2ZvY3VzS2V5TWFuYWdlciA9IG5ldyBGb2N1c0tleU1hbmFnZXIodGhpcy5kcm9wZG93bkl0ZW1zQ29udGVudClcbiAgICAgIC53aXRoSG9tZUFuZEVuZCgpXG4gICAgICAud2l0aFBhZ2VVcERvd24oKVxuICAgICAgLndpdGhXcmFwKClcbiAgICAgIC5za2lwUHJlZGljYXRlKChkcm9wZG93bkl0ZW0pID0+IGRyb3Bkb3duSXRlbS5kaXNhYmxlZCA9PT0gdHJ1ZSk7XG4gIH1cbn1cbiJdfQ==