@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
JavaScript
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=