UNPKG

ng-devui

Version:

DevUI components based on Angular

97 lines 9.94 kB
import { Directive, ElementRef, Host, HostBinding, HostListener, Input } from '@angular/core'; import { DropDownDirective } from './dropdown.directive'; import * as i0 from "@angular/core"; import * as i1 from "./dropdown.directive"; export class DropDownToggleDirective { get tabIndex() { return this.disabled ? null : 0; } get attrDisabled() { return this.disabled ? 'disabled' : null; } get disabled() { return this.dropdown && this.dropdown.disabled; } constructor(dropdown, el) { this.dropdown = dropdown; this.el = el; this.addClass = true; this.toggleOnFocus = false; this.autoFocus = false; this.isMouseEvent = false; } ngOnInit() { this.dropdown.dropDownToggle = this; } ngAfterViewInit() { if (this.autoFocus) { setTimeout(() => { this.el.nativeElement.focus(); }, 0); } } toggleDropdown(event) { if (!this.disabled && this.dropdown.trigger !== 'manually') { this.dropdown.toggle(); } return false; } // mousedown mouseup解决focus与click冲突问题 setMouseEventTrue(event) { this.isMouseEvent = true; } setMouseEventFalse(event) { this.isMouseEvent = false; } toggleOnFocusFn(event) { if (this.toggleOnFocus && !this.disabled && !this.dropdown.isOpen && !this.isMouseEvent) { this.dropdown.toggle(); } } toggle(event) { if (this.disabled || this.dropdown.trigger === 'manually' || event.defaultPrevented) { return; } this.dropdown.toggle(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropDownToggleDirective, deps: [{ token: i1.DropDownDirective, host: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DropDownToggleDirective, selector: "[dDropDownToggle]", inputs: { toggleOnFocus: "toggleOnFocus", autoFocus: "autoFocus" }, host: { listeners: { "click": "toggleDropdown($event)", "mousedown": "setMouseEventTrue($event)", "mouseup": "setMouseEventFalse($event)", "focus": "toggleOnFocusFn($event)", "keydown.enter": "toggle($event)" }, properties: { "attr.tabIndex": "this.tabIndex", "attr.disabled": "this.attrDisabled", "class.devui-dropdown-toggle": "this.addClass" } }, exportAs: ["d-dropdown-toggle"], ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropDownToggleDirective, decorators: [{ type: Directive, args: [{ selector: '[dDropDownToggle]', exportAs: 'd-dropdown-toggle', }] }], ctorParameters: () => [{ type: i1.DropDownDirective, decorators: [{ type: Host }] }, { type: i0.ElementRef }], propDecorators: { tabIndex: [{ type: HostBinding, args: ['attr.tabIndex'] }], attrDisabled: [{ type: HostBinding, args: ['attr.disabled'] }], addClass: [{ type: HostBinding, args: ['class.devui-dropdown-toggle'] }], toggleOnFocus: [{ type: Input }], autoFocus: [{ type: Input }], toggleDropdown: [{ type: HostListener, args: ['click', ['$event']] }], setMouseEventTrue: [{ type: HostListener, args: ['mousedown', ['$event']] }], setMouseEventFalse: [{ type: HostListener, args: ['mouseup', ['$event']] }], toggleOnFocusFn: [{ type: HostListener, args: ['focus', ['$event']] }], toggle: [{ type: HostListener, args: ['keydown.enter', ['$event']] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tdG9nZ2xlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2RldnVpL2Ryb3Bkb3duL2Ryb3Bkb3duLXRvZ2dsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNySCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBTXpELE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsSUFBa0MsUUFBUTtRQUN4QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxJQUNJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzNDLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7SUFDakQsQ0FBQztJQU1ELFlBQTRCLFFBQTJCLEVBQVUsRUFBYztRQUFuRCxhQUFRLEdBQVIsUUFBUSxDQUFtQjtRQUFVLE9BQUUsR0FBRixFQUFFLENBQVk7UUFMbkMsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNuRCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQzNCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBRThELENBQUM7SUFFcEYsUUFBUTtRQUNOLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztJQUN0QyxDQUFDO0lBQ0QsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ1IsQ0FBQztJQUNILENBQUM7SUFHRCxjQUFjLENBQUMsS0FBaUI7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN6QixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QscUNBQXFDO0lBRXJDLGlCQUFpQixDQUFDLEtBQUs7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQUs7UUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFpQjtRQUMvQixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLO1FBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sS0FBSyxVQUFVLElBQUksS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFBQSxPQUFPO1FBQUMsQ0FBQztRQUMvRixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3pCLENBQUM7K0dBdkRVLHVCQUF1QjttR0FBdkIsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQUpuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFFBQVEsRUFBRSxtQkFBbUI7aUJBQzlCOzswQkFpQmMsSUFBSTtrRUFmaUIsUUFBUTtzQkFBekMsV0FBVzt1QkFBQyxlQUFlO2dCQUl4QixZQUFZO3NCQURmLFdBQVc7dUJBQUMsZUFBZTtnQkFPZ0IsUUFBUTtzQkFBbkQsV0FBVzt1QkFBQyw2QkFBNkI7Z0JBQ2pDLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFpQk4sY0FBYztzQkFEYixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFTakMsaUJBQWlCO3NCQURoQixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFLckMsa0JBQWtCO3NCQURqQixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFLbkMsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFPMUIsTUFBTTtzQkFEWixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdCwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHJvcERvd25EaXJlY3RpdmUgfSBmcm9tICcuL2Ryb3Bkb3duLmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tkRHJvcERvd25Ub2dnbGVdJyxcbiAgZXhwb3J0QXM6ICdkLWRyb3Bkb3duLXRvZ2dsZScsXG59KVxuZXhwb3J0IGNsYXNzIERyb3BEb3duVG9nZ2xlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYkluZGV4JykgZ2V0IHRhYkluZGV4KCkge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVkID8gbnVsbCA6IDA7XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRpc2FibGVkJylcbiAgZ2V0IGF0dHJEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiBudWxsO1xuICB9XG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5kcm9wZG93biAmJiB0aGlzLmRyb3Bkb3duLmRpc2FibGVkO1xuICB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGV2dWktZHJvcGRvd24tdG9nZ2xlJykgYWRkQ2xhc3MgPSB0cnVlO1xuICBASW5wdXQoKSB0b2dnbGVPbkZvY3VzID0gZmFsc2U7XG4gIEBJbnB1dCgpIGF1dG9Gb2N1cyA9IGZhbHNlO1xuICBpc01vdXNlRXZlbnQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihASG9zdCgpIHByaXZhdGUgZHJvcGRvd246IERyb3BEb3duRGlyZWN0aXZlLCBwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmRyb3Bkb3duLmRyb3BEb3duVG9nZ2xlID0gdGhpcztcbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b0ZvY3VzKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIHRvZ2dsZURyb3Bkb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkICYmIHRoaXMuZHJvcGRvd24udHJpZ2dlciAhPT0gJ21hbnVhbGx5Jykge1xuICAgICAgdGhpcy5kcm9wZG93bi50b2dnbGUoKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIG1vdXNlZG93biBtb3VzZXVw6Kej5YazZm9jdXPkuI5jbGlja+WGsueqgemXrumimFxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBzZXRNb3VzZUV2ZW50VHJ1ZShldmVudCkge1xuICAgIHRoaXMuaXNNb3VzZUV2ZW50ID0gdHJ1ZTtcbiAgfVxuICBASG9zdExpc3RlbmVyKCdtb3VzZXVwJywgWyckZXZlbnQnXSlcbiAgc2V0TW91c2VFdmVudEZhbHNlKGV2ZW50KSB7XG4gICAgdGhpcy5pc01vdXNlRXZlbnQgPSBmYWxzZTtcbiAgfVxuICBASG9zdExpc3RlbmVyKCdmb2N1cycsIFsnJGV2ZW50J10pXG4gIHRvZ2dsZU9uRm9jdXNGbihldmVudDogRm9jdXNFdmVudCkge1xuICAgIGlmICh0aGlzLnRvZ2dsZU9uRm9jdXMgJiYgIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuZHJvcGRvd24uaXNPcGVuICYmICF0aGlzLmlzTW91c2VFdmVudCkge1xuICAgICAgdGhpcy5kcm9wZG93bi50b2dnbGUoKTtcbiAgICB9XG4gIH1cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5lbnRlcicsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyB0b2dnbGUoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmRyb3Bkb3duLnRyaWdnZXIgPT09ICdtYW51YWxseScgfHwgZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge3JldHVybjsgfVxuICAgIHRoaXMuZHJvcGRvd24udG9nZ2xlKCk7XG4gIH1cbn1cbiJdfQ==