UNPKG

@universal-material/angular

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 16.1.0.

54 lines 6.64 kB
import { Directive, HostBinding, HostListener, Input } from '@angular/core'; import { Subject } from 'rxjs'; import * as i0 from "@angular/core"; const autoDirection = 'auto'; export class DropdownMenuDirective { constructor(_elementRef) { this._elementRef = _elementRef; this.click = new Subject(); this._innerDirection = null; this.show = false; this.direction = null; this._click = (e) => { e.stopPropagation(); this.click.next(); }; } ngOnChanges(changes) { if (!changes['direction']) { return; } const directionChange = changes['direction']; if (directionChange.currentValue && directionChange.currentValue.indexOf(autoDirection) !== 0) { this.setDirectionClass(directionChange.currentValue); return; } this.setDirectionClass(''); } setDirectionClass(direction) { if (this._innerDirection && this._innerDirection.indexOf(autoDirection) !== 0) { this._elementRef.nativeElement.classList.remove(this._innerDirection); } this._innerDirection = direction; if (direction) { this._elementRef.nativeElement.classList.add(direction); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownMenuDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: DropdownMenuDirective, selector: "[uDropdownMenu]", inputs: { direction: "direction" }, host: { listeners: { "click": "_click($event)" }, properties: { "class.show": "this.show" } }, usesOnChanges: true, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DropdownMenuDirective, decorators: [{ type: Directive, args: [{ selector: '[uDropdownMenu]' }] }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { show: [{ type: HostBinding, args: ['class.show'] }], direction: [{ type: Input }], _click: [{ type: HostListener, args: ['click', ['$event']] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVudS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZHJvcGRvd24vZHJvcGRvd24tbWVudS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFJL0IsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDO0FBSzdCLE1BQU0sT0FBTyxxQkFBcUI7SUFjaEMsWUFBcUIsV0FBb0M7UUFBcEMsZ0JBQVcsR0FBWCxXQUFXLENBQXlCO1FBWnpELFVBQUssR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRXBCLG9CQUFlLEdBQXFCLElBQUksQ0FBQztRQUV0QixTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQy9CLGNBQVMsR0FBcUIsSUFBSSxDQUFDO1FBRVQsV0FBTSxHQUFHLENBQUMsQ0FBUSxFQUFFLEVBQUU7WUFDdkQsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFBO0lBSUQsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3pCLE9BQU87U0FDUjtRQUVELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU3QyxJQUFJLGVBQWUsQ0FBQyxZQUFZLElBQUksZUFBZSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzdGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDckQsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxTQUFpQjtRQUVqQyxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzdFLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ3ZFO1FBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxTQUFzQixDQUFDO1FBRTlDLElBQUksU0FBUyxFQUFFO1lBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN6RDtJQUNILENBQUM7K0dBNUNVLHFCQUFxQjttR0FBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUhqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7aUJBQzVCO2lHQU80QixJQUFJO3NCQUE5QixXQUFXO3VCQUFDLFlBQVk7Z0JBQ2hCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRTZCLE1BQU07c0JBQXhDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJy4uL3V0aWwvZGlyZWN0aW9uJztcclxuXHJcbmNvbnN0IGF1dG9EaXJlY3Rpb24gPSAnYXV0byc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1t1RHJvcGRvd25NZW51XSdcclxufSlcclxuZXhwb3J0IGNsYXNzIERyb3Bkb3duTWVudURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblxyXG4gIGNsaWNrID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfaW5uZXJEaXJlY3Rpb246IERpcmVjdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNob3cnKSBzaG93ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGlyZWN0aW9uOiBEaXJlY3Rpb24gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKSBfY2xpY2sgPSAoZTogRXZlbnQpID0+IHtcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmNsaWNrLm5leHQoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICghY2hhbmdlc1snZGlyZWN0aW9uJ10pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGRpcmVjdGlvbkNoYW5nZSA9IGNoYW5nZXNbJ2RpcmVjdGlvbiddO1xyXG5cclxuICAgIGlmIChkaXJlY3Rpb25DaGFuZ2UuY3VycmVudFZhbHVlICYmIGRpcmVjdGlvbkNoYW5nZS5jdXJyZW50VmFsdWUuaW5kZXhPZihhdXRvRGlyZWN0aW9uKSAhPT0gMCkge1xyXG4gICAgICB0aGlzLnNldERpcmVjdGlvbkNsYXNzKGRpcmVjdGlvbkNoYW5nZS5jdXJyZW50VmFsdWUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXREaXJlY3Rpb25DbGFzcygnJyk7XHJcbiAgfVxyXG5cclxuICBzZXREaXJlY3Rpb25DbGFzcyhkaXJlY3Rpb246IHN0cmluZykge1xyXG5cclxuICAgIGlmICh0aGlzLl9pbm5lckRpcmVjdGlvbiAmJiB0aGlzLl9pbm5lckRpcmVjdGlvbi5pbmRleE9mKGF1dG9EaXJlY3Rpb24pICE9PSAwKSB7XHJcbiAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX2lubmVyRGlyZWN0aW9uKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9pbm5lckRpcmVjdGlvbiA9IGRpcmVjdGlvbiBhcyBEaXJlY3Rpb247XHJcblxyXG4gICAgaWYgKGRpcmVjdGlvbikge1xyXG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChkaXJlY3Rpb24pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=