UNPKG

@nova-ui/bits

Version:

SolarWinds Nova Framework

57 lines 6.51 kB
import { Directive, EventEmitter, HostListener, Input, Output, } from "@angular/core"; import { isTargetNotAnAnchor, makePredicate } from "./public-api"; import * as i0 from "@angular/core"; export class ClickFilterDirective { constructor() { this._cancelBubble = makePredicate(true); this._preventDefault = isTargetNotAnAnchor; this.passed$ = new EventEmitter(); this.canceled$ = new EventEmitter(); this.prevented$ = new EventEmitter(); } set cancelBubble(value) { this._cancelBubble = makePredicate(value ?? true); } set preventDefault(value) { this._preventDefault = makePredicate(value ?? isTargetNotAnAnchor); } handleEvent(event) { let passed = true; if (this._cancelBubble(event)) { event.stopPropagation(); event.stopImmediatePropagation(); this.canceled$.emit(event); passed = false; } if (this._preventDefault(event)) { event.preventDefault(); this.prevented$.emit(event); passed = false; } if (passed) { this.passed$.emit(event); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ClickFilterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ClickFilterDirective, selector: "[nuiClickFilter]", inputs: { cancelBubble: "cancelBubble", preventDefault: "preventDefault" }, outputs: { passed$: "passed$", canceled$: "canceled$", prevented$: "prevented$" }, host: { listeners: { "click": "handleEvent($event)" } }, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ClickFilterDirective, decorators: [{ type: Directive, args: [{ selector: "[nuiClickFilter]", }] }], propDecorators: { cancelBubble: [{ type: Input }], preventDefault: [{ type: Input }], passed$: [{ type: Output }], canceled$: [{ type: Output }], prevented$: [{ type: Output }], handleEvent: [{ type: HostListener, args: ["click", ["$event"]] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stZmlsdGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21tb24vZGlyZWN0aXZlcy9jbGljay1maWx0ZXIvY2xpY2stZmlsdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWdCLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFLaEYsTUFBTSxPQUFPLG9CQUFvQjtJQUhqQztRQUlZLGtCQUFhLEdBQWlCLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxvQkFBZSxHQUFpQixtQkFBbUIsQ0FBQztRQVUzQyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUNwQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUN0QyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztLQW9CM0Q7SUE5QkcsSUFBb0IsWUFBWSxDQUFDLEtBQW9DO1FBQ2pFLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsSUFBb0IsY0FBYyxDQUFDLEtBQW9DO1FBQ25FLElBQUksQ0FBQyxlQUFlLEdBQUcsYUFBYSxDQUFDLEtBQUssSUFBSSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFPTSxXQUFXLENBQUMsS0FBWTtRQUMzQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4QixLQUFLLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQixNQUFNLEdBQUcsS0FBSyxDQUFDO1NBQ2xCO1FBQ0QsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzdCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QixNQUFNLEdBQUcsS0FBSyxDQUFDO1NBQ2xCO1FBQ0QsSUFBSSxNQUFNLEVBQUU7WUFDUixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjtJQUNMLENBQUM7K0dBakNRLG9CQUFvQjttR0FBcEIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQUhoQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxrQkFBa0I7aUJBQy9COzhCQUt1QixZQUFZO3NCQUEvQixLQUFLO2dCQUljLGNBQWM7c0JBQWpDLEtBQUs7Z0JBSVcsT0FBTztzQkFBdkIsTUFBTTtnQkFDVSxTQUFTO3NCQUF6QixNQUFNO2dCQUNVLFVBQVU7c0JBQTFCLE1BQU07Z0JBR0EsV0FBVztzQkFEakIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERpcmVjdGl2ZSxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgSUV2ZW50RmlsdGVyLCBpc1RhcmdldE5vdEFuQW5jaG9yLCBtYWtlUHJlZGljYXRlIH0gZnJvbSBcIi4vcHVibGljLWFwaVwiO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogXCJbbnVpQ2xpY2tGaWx0ZXJdXCIsXG59KVxuZXhwb3J0IGNsYXNzIENsaWNrRmlsdGVyRGlyZWN0aXZlIHtcbiAgICBwcml2YXRlIF9jYW5jZWxCdWJibGU6IElFdmVudEZpbHRlciA9IG1ha2VQcmVkaWNhdGUodHJ1ZSk7XG4gICAgcHJpdmF0ZSBfcHJldmVudERlZmF1bHQ6IElFdmVudEZpbHRlciA9IGlzVGFyZ2V0Tm90QW5BbmNob3I7XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgc2V0IGNhbmNlbEJ1YmJsZSh2YWx1ZTogSUV2ZW50RmlsdGVyIHwgYm9vbGVhbiB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fY2FuY2VsQnViYmxlID0gbWFrZVByZWRpY2F0ZSh2YWx1ZSA/PyB0cnVlKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgc2V0IHByZXZlbnREZWZhdWx0KHZhbHVlOiBJRXZlbnRGaWx0ZXIgfCBib29sZWFuIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9wcmV2ZW50RGVmYXVsdCA9IG1ha2VQcmVkaWNhdGUodmFsdWUgPz8gaXNUYXJnZXROb3RBbkFuY2hvcik7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIHB1YmxpYyBwYXNzZWQkID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgcHVibGljIGNhbmNlbGVkJCA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBwcmV2ZW50ZWQkID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICAgIEBIb3N0TGlzdGVuZXIoXCJjbGlja1wiLCBbXCIkZXZlbnRcIl0pXG4gICAgcHVibGljIGhhbmRsZUV2ZW50KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBsZXQgcGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuX2NhbmNlbEJ1YmJsZShldmVudCkpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLmNhbmNlbGVkJC5lbWl0KGV2ZW50KTtcbiAgICAgICAgICAgIHBhc3NlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9wcmV2ZW50RGVmYXVsdChldmVudCkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLnByZXZlbnRlZCQuZW1pdChldmVudCk7XG4gICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFzc2VkKSB7XG4gICAgICAgICAgICB0aGlzLnBhc3NlZCQuZW1pdChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=