@vismaux/ngx-nordic-cool
Version:
Common Nordic-Cool components for Angular.
55 lines • 7.95 kB
JavaScript
import { hasModifierKey } from '@angular/cdk/keycodes';
import { isObservable, Observable, Subject } from 'rxjs';
import { filter, takeUntil } from 'rxjs/operators';
export class NcModalOptions {
}
export class NcModalRef {
constructor(overlayRef, options) {
this.overlayRef = overlayRef;
/** @ignore */
this.closeSubject = new Subject();
this.closed$ = this.closeSubject.asObservable();
overlayRef
.keydownEvents()
.pipe(filter((event) => options.closeOnEscape &&
event.key === 'Escape' &&
!hasModifierKey(event)))
.subscribe((event) => {
event.preventDefault();
this.softClose();
});
if (options.closeOnOutsideClick) {
overlayRef.backdropClick().subscribe(() => this.softClose());
}
}
close(result) {
if (!this.overlayRef.hasAttached()) {
return;
}
this.overlayRef.dispose();
this.closeSubject.next(result);
this.closeSubject.complete();
}
afterClosed({ closeOnUnsubscribe } = { closeOnUnsubscribe: true }) {
return new Observable((observer) => {
this.closeSubject.subscribe(observer);
return () => closeOnUnsubscribe && this.close();
});
}
/** @ignore */
softClose() {
if (typeof this.componentInstance.onSoftClose !== 'function') {
this.close();
}
const shouldClose = this.componentInstance.onSoftClose();
if (typeof shouldClose === 'boolean' && shouldClose) {
this.close();
}
if (isObservable(shouldClose)) {
shouldClose
.pipe(takeUntil(this.closed$))
.subscribe((result) => result && this.close());
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vcmRpYy1jb29sL3NyYy9saWIvbW9kYWwvbW9kYWwtcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVFuRCxNQUFNLE9BQU8sY0FBYztDQVMxQjtBQU9ELE1BQU0sT0FBTyxVQUFVO0lBV3JCLFlBQW9CLFVBQXNCLEVBQUUsT0FBdUI7UUFBL0MsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVAxQyxjQUFjO1FBQ04saUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBSyxDQUFDO1FBRS9CLFlBQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBS2xELFVBQVU7YUFDUCxhQUFhLEVBQUU7YUFDZixJQUFJLENBQ0gsTUFBTSxDQUNKLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDUixPQUFPLENBQUMsYUFBYTtZQUNyQixLQUFLLENBQUMsR0FBRyxLQUFLLFFBQVE7WUFDdEIsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQ3pCLENBQ0Y7YUFDQSxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxPQUFPLENBQUMsbUJBQW1CLEVBQUU7WUFDL0IsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztTQUM5RDtJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsTUFBVTtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ2xDLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVyxDQUNULEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRTtRQUVyRCxPQUFPLElBQUksVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdEMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNOLFNBQVM7UUFDZixJQUFJLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsS0FBSyxVQUFVLEVBQUU7WUFDNUQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2Q7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekQsSUFBSSxPQUFPLFdBQVcsS0FBSyxTQUFTLElBQUksV0FBVyxFQUFFO1lBQ25ELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNkO1FBQ0QsSUFBSSxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDN0IsV0FBVztpQkFDUixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDN0IsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDbEQ7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoYXNNb2RpZmllcktleSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgaXNPYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTmNNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwuY29tcG9uZW50JztcblxuZXhwb3J0IHR5cGUgTmNNb2RhbFNpemUgPSAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnIHwgJ2Z1bGwnO1xuZXhwb3J0IHR5cGUgTmNEaWFsb2dUeXBlID0gJ2luZm8nIHwgJ2Vycm9yJyB8ICd3YXJuaW5nJyB8ICdoZWxwJyB8ICdzdWNjZXNzJztcbmV4cG9ydCB0eXBlIE5jRGlhbG9nUm9sZSA9ICdkaWFsb2cnIHwgJ2FsZXJ0ZGlhbG9nJztcblxuZXhwb3J0IGNsYXNzIE5jTW9kYWxPcHRpb25zIHtcbiAgc2l6ZT86IE5jTW9kYWxTaXplO1xuICB0eXBlPzogTmNEaWFsb2dUeXBlO1xuICByb2xlPzogTmNEaWFsb2dSb2xlO1xuICBsYWJlbGxlZEJ5Pzogc3RyaW5nO1xuICBkZXNjcmliZWRCeT86IHN0cmluZztcbiAgY2xvc2VPbkVzY2FwZT86IGJvb2xlYW47XG4gIGNsb3NlT25PdXRzaWRlQ2xpY2s/OiBib29sZWFuO1xuICBjbG9zZU9uTmF2aWdhdGlvbj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIEV4dHJhY3RJbnB1dDxDIGV4dGVuZHMgTmNNb2RhbENvbXBvbmVudDxhbnk+PiA9XG4gIEMgZXh0ZW5kcyBOY01vZGFsQ29tcG9uZW50PGluZmVyIEksIGFueT4gPyBJIDogbmV2ZXI7XG5leHBvcnQgdHlwZSBFeHRyYWN0T3V0cHV0PEMgZXh0ZW5kcyBOY01vZGFsQ29tcG9uZW50PGFueT4+ID1cbiAgQyBleHRlbmRzIE5jTW9kYWxDb21wb25lbnQ8YW55LCBpbmZlciBPPiA/IE8gOiBuZXZlcjtcblxuZXhwb3J0IGNsYXNzIE5jTW9kYWxSZWY8XG4gIEMgZXh0ZW5kcyBOY01vZGFsQ29tcG9uZW50PGFueSwgYW55PixcbiAgTyA9IEV4dHJhY3RPdXRwdXQ8Qz5cbj4ge1xuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIGNsb3NlU3ViamVjdCA9IG5ldyBTdWJqZWN0PE8+KCk7XG5cbiAgcmVhZG9ubHkgY2xvc2VkJCA9IHRoaXMuY2xvc2VTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbXBvbmVudEluc3RhbmNlOiBDO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZiwgb3B0aW9uczogTmNNb2RhbE9wdGlvbnMpIHtcbiAgICBvdmVybGF5UmVmXG4gICAgICAua2V5ZG93bkV2ZW50cygpXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKFxuICAgICAgICAgIChldmVudCkgPT5cbiAgICAgICAgICAgIG9wdGlvbnMuY2xvc2VPbkVzY2FwZSAmJlxuICAgICAgICAgICAgZXZlbnQua2V5ID09PSAnRXNjYXBlJyAmJlxuICAgICAgICAgICAgIWhhc01vZGlmaWVyS2V5KGV2ZW50KVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnNvZnRDbG9zZSgpO1xuICAgICAgfSk7XG5cbiAgICBpZiAob3B0aW9ucy5jbG9zZU9uT3V0c2lkZUNsaWNrKSB7XG4gICAgICBvdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zb2Z0Q2xvc2UoKSk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2UocmVzdWx0PzogTyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgIHRoaXMuY2xvc2VTdWJqZWN0Lm5leHQocmVzdWx0KTtcbiAgICB0aGlzLmNsb3NlU3ViamVjdC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgYWZ0ZXJDbG9zZWQoXG4gICAgeyBjbG9zZU9uVW5zdWJzY3JpYmUgfSA9IHsgY2xvc2VPblVuc3Vic2NyaWJlOiB0cnVlIH1cbiAgKTogT2JzZXJ2YWJsZTxPPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuICAgICAgdGhpcy5jbG9zZVN1YmplY3Quc3Vic2NyaWJlKG9ic2VydmVyKTtcbiAgICAgIHJldHVybiAoKSA9PiBjbG9zZU9uVW5zdWJzY3JpYmUgJiYgdGhpcy5jbG9zZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBzb2Z0Q2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmNvbXBvbmVudEluc3RhbmNlLm9uU29mdENsb3NlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2hvdWxkQ2xvc2UgPSB0aGlzLmNvbXBvbmVudEluc3RhbmNlLm9uU29mdENsb3NlKCk7XG4gICAgaWYgKHR5cGVvZiBzaG91bGRDbG9zZSA9PT0gJ2Jvb2xlYW4nICYmIHNob3VsZENsb3NlKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICAgIGlmIChpc09ic2VydmFibGUoc2hvdWxkQ2xvc2UpKSB7XG4gICAgICBzaG91bGRDbG9zZVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5jbG9zZWQkKSlcbiAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiByZXN1bHQgJiYgdGhpcy5jbG9zZSgpKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==