@nova-ui/bits
Version:
SolarWinds Nova Framework
57 lines • 6.51 kB
JavaScript
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=