@alauda-fe/common
Version:
Alauda frontend team common codes.
52 lines • 6.63 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { coerceAttrBoolean } from '@alauda/ui';
import { Directive, ElementRef, HostListener, Input, isDevMode, } from '@angular/core';
import { fromEvent, map, Observable, Subject, takeUntil, withLatestFrom, } from 'rxjs';
import { InterceptDeactivateService } from '../services/intercept-deactivate.service';
import { ObservableInput } from '../utils/decorators';
import * as i0 from "@angular/core";
import * as i1 from "../services/intercept-deactivate.service";
export class InterceptDeactivateDirective {
constructor(elRef, interceptDeactivate) {
this.elRef = elRef;
this.interceptDeactivate = interceptDeactivate;
this.enabled$ = this.enabled$$.pipe(map(coerceAttrBoolean));
this.destroy$$ = new Subject();
}
ngAfterViewInit() {
fromEvent(this.elRef.nativeElement, 'click')
.pipe(withLatestFrom(this.enabled$), takeUntil(this.destroy$$))
.subscribe(([, enabled]) => {
this.interceptDeactivate.back(!enabled);
});
}
ngOnDestroy() {
this.destroy$$.next();
this.destroy$$.complete();
}
onBeforeUnload() {
return isDevMode() || !this.enabled;
}
static { this.ɵfac = function InterceptDeactivateDirective_Factory(t) { return new (t || InterceptDeactivateDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.InterceptDeactivateService)); }; }
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: InterceptDeactivateDirective, selectors: [["", "aclInterceptDeactivate", ""]], hostBindings: function InterceptDeactivateDirective_HostBindings(rf, ctx) { if (rf & 1) {
i0.ɵɵlistener("beforeunload", function InterceptDeactivateDirective_beforeunload_HostBindingHandler() { return ctx.onBeforeUnload(); }, false, i0.ɵɵresolveWindow);
} }, inputs: { enabled: [0, "aclInterceptDeactivate", "enabled"] }, standalone: true }); }
}
__decorate([
ObservableInput(),
__metadata("design:type", Observable)
], InterceptDeactivateDirective.prototype, "enabled$$", void 0);
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InterceptDeactivateDirective, [{
type: Directive,
args: [{
selector: '[aclInterceptDeactivate]',
standalone: true,
}]
}], () => [{ type: i0.ElementRef }, { type: i1.InterceptDeactivateService }], { enabled: [{
type: Input,
args: ['aclInterceptDeactivate']
}], enabled$$: [], onBeforeUnload: [{
type: HostListener,
args: ['window:beforeunload']
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0LWRlYWN0aXZhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2NvcmUvZGlyZWN0aXZlcy9pbnRlcmNlcHQtZGVhY3RpdmF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUMvQyxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsU0FBUyxFQUNULEdBQUcsRUFDSCxVQUFVLEVBQ1YsT0FBTyxFQUNQLFNBQVMsRUFDVCxjQUFjLEdBQ2YsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQU10RCxNQUFNLE9BQU8sNEJBQTRCO0lBV3ZDLFlBQ21CLEtBQThCLEVBQzlCLG1CQUErQztRQUQvQyxVQUFLLEdBQUwsS0FBSyxDQUF5QjtRQUM5Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTRCO1FBTmxFLGFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBRXZELGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBSzdCLENBQUM7SUFFSixlQUFlO1FBQ2IsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQzthQUN6QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzlELFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFHRCxjQUFjO1FBQ1osT0FBTyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEMsQ0FBQzs2RkFoQ1UsNEJBQTRCO29FQUE1Qiw0QkFBNEI7WUFBNUIsK0dBQUEsb0JBQWdCLCtCQUFZOzs7QUFLdkM7SUFEQyxlQUFlLEVBQUU7OEJBQ04sVUFBVTsrREFBZTtpRkFMMUIsNEJBQTRCO2NBSnhDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsMEJBQTBCO2dCQUNwQyxVQUFVLEVBQUUsSUFBSTthQUNqQjtvRkFHQyxPQUFPO2tCQUROLEtBQUs7bUJBQUMsd0JBQXdCO1lBSS9CLFNBQVMsTUF5QlQsY0FBYztrQkFEYixZQUFZO21CQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZUF0dHJCb29sZWFuIH0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIGlzRGV2TW9kZSxcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGZyb21FdmVudCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICB0YWtlVW50aWwsXG4gIHdpdGhMYXRlc3RGcm9tLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSW50ZXJjZXB0RGVhY3RpdmF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pbnRlcmNlcHQtZGVhY3RpdmF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGVJbnB1dCB9IGZyb20gJy4uL3V0aWxzL2RlY29yYXRvcnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNsSW50ZXJjZXB0RGVhY3RpdmF0ZV0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBJbnRlcmNlcHREZWFjdGl2YXRlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCdhY2xJbnRlcmNlcHREZWFjdGl2YXRlJylcbiAgZW5hYmxlZDogYm9vbGVhbiB8ICcnO1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICBlbmFibGVkJCQhOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCAnJz47XG5cbiAgZW5hYmxlZCQgPSB0aGlzLmVuYWJsZWQkJC5waXBlKG1hcChjb2VyY2VBdHRyQm9vbGVhbikpO1xuXG4gIGRlc3Ryb3kkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnRlcmNlcHREZWFjdGl2YXRlOiBJbnRlcmNlcHREZWFjdGl2YXRlU2VydmljZSxcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBmcm9tRXZlbnQodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCAnY2xpY2snKVxuICAgICAgLnBpcGUod2l0aExhdGVzdEZyb20odGhpcy5lbmFibGVkJCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkJCkpXG4gICAgICAuc3Vic2NyaWJlKChbLCBlbmFibGVkXSkgPT4ge1xuICAgICAgICB0aGlzLmludGVyY2VwdERlYWN0aXZhdGUuYmFjayghZW5hYmxlZCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmJlZm9yZXVubG9hZCcpXG4gIG9uQmVmb3JlVW5sb2FkKCkge1xuICAgIHJldHVybiBpc0Rldk1vZGUoKSB8fCAhdGhpcy5lbmFibGVkO1xuICB9XG59XG4iXX0=