@vismaux/ngx-nordic-cool
Version:
Common Nordic-Cool components for Angular.
13 lines • 2.77 kB
JavaScript
import { fromEvent } from 'rxjs';
import { filter, takeUntil } from 'rxjs/operators';
export function registerOutsideClick(clickHandler, excludedElements, destroyed$, ngZone) {
function containsExcludedElement(element) {
return excludedElements.some((el) => el.contains(element));
}
ngZone.runOutsideAngular(() => {
fromEvent(document, 'mouseup')
.pipe(filter((event) => !containsExcludedElement(event.target)), takeUntil(destroyed$))
.subscribe((event) => ngZone.run(() => clickHandler(event)));
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0c2lkZS1jbGljay51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub3JkaWMtY29vbC9zcmMvbGliL3V0aWxzL291dHNpZGUtY2xpY2sudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsWUFBcUMsRUFDckMsZ0JBQStCLEVBQy9CLFVBQTJCLEVBQzNCLE1BQWM7SUFFZCxTQUFTLHVCQUF1QixDQUFDLE9BQWdCO1FBQy9DLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7UUFDNUIsU0FBUyxDQUFhLFFBQVEsRUFBRSxTQUFTLENBQUM7YUFDdkMsSUFBSSxDQUNILE1BQU0sQ0FDSixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsTUFBcUIsQ0FBQyxDQUNqRSxFQUNELFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FDdEI7YUFDQSxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3Rlck91dHNpZGVDbGljayhcbiAgY2xpY2tIYW5kbGVyOiAoZTogTW91c2VFdmVudCkgPT4gdm9pZCxcbiAgZXhjbHVkZWRFbGVtZW50czogSFRNTEVsZW1lbnRbXSxcbiAgZGVzdHJveWVkJDogT2JzZXJ2YWJsZTxhbnk+LFxuICBuZ1pvbmU6IE5nWm9uZVxuKTogdm9pZCB7XG4gIGZ1bmN0aW9uIGNvbnRhaW5zRXhjbHVkZWRFbGVtZW50KGVsZW1lbnQ6IEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZXhjbHVkZWRFbGVtZW50cy5zb21lKChlbCkgPT4gZWwuY29udGFpbnMoZWxlbWVudCkpO1xuICB9XG5cbiAgbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZXVwJylcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgKGV2ZW50KSA9PiAhY29udGFpbnNFeGNsdWRlZEVsZW1lbnQoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KVxuICAgICAgICApLFxuICAgICAgICB0YWtlVW50aWwoZGVzdHJveWVkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiBuZ1pvbmUucnVuKCgpID0+IGNsaWNrSGFuZGxlcihldmVudCkpKTtcbiAgfSk7XG59XG4iXX0=