UNPKG

sb-element

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.0.1. It is a component library constructed around the SCSS library [Sb-Theming](https://github.com/SeverinBuchser/SbTheming) and supports [Angular Schematics]

32 lines 4.87 kB
import { Directive, HostListener, Input } from '@angular/core'; import { SbClickTriggerDirective } from './click-trigger.directive'; import * as i0 from "@angular/core"; export class SbClickOutsideTriggerDirective extends SbClickTriggerDirective { handleDocumentClick(event) { let popperBBox = this.triggerable.getPopperRef().nativeElement.getBoundingClientRect(); if (!this.isMouseoverBoundingRect(event, popperBBox) && this.triggerable.isPopped()) { this.trigger(); } } isMouseoverBoundingRect(event, boundingRect) { let mouseX = event.clientX; let mouseY = event.clientY; let xInBounds = mouseX >= boundingRect.left && mouseX <= boundingRect.right; let yInBounds = mouseY >= boundingRect.top && mouseY <= boundingRect.bottom; return xInBounds && yInBounds; } } SbClickOutsideTriggerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: SbClickOutsideTriggerDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); SbClickOutsideTriggerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.0", type: SbClickOutsideTriggerDirective, selector: "[sbElClickOutsideTrigger]", inputs: { triggerable: "triggerable" }, host: { listeners: { "document: click": "handleDocumentClick($event)" } }, usesInheritance: true, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: SbClickOutsideTriggerDirective, decorators: [{ type: Directive, args: [{ selector: '[sbElClickOutsideTrigger]' }] }], propDecorators: { triggerable: [{ type: Input }], handleDocumentClick: [{ type: HostListener, args: ['document: click', ['$event']] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stb3V0c2lkZS10cmlnZ2VyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NiLWVsZW1lbnQvc3JjL2xpYi9jb3JlL3RyaWdnZXIvY2xpY2stb3V0c2lkZS10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBS3BFLE1BQU0sT0FBTyw4QkFBK0IsU0FBUSx1QkFBdUI7SUFNekUsbUJBQW1CLENBQUMsS0FBbUI7UUFDckMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQTtRQUN0RixJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ25GLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNoQjtJQUNILENBQUM7SUFFTyx1QkFBdUIsQ0FDN0IsS0FBbUIsRUFBRSxZQUFxQjtRQUUxQyxJQUFJLE1BQU0sR0FBVyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ25DLElBQUksTUFBTSxHQUFXLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFFbkMsSUFBSSxTQUFTLEdBQUcsTUFBTSxJQUFJLFlBQVksQ0FBQyxJQUFJLElBQUksTUFBTSxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDNUUsSUFBSSxTQUFTLEdBQUcsTUFBTSxJQUFJLFlBQVksQ0FBQyxHQUFHLElBQUksTUFBTSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFFNUUsT0FBTyxTQUFTLElBQUksU0FBUyxDQUFDO0lBQ2hDLENBQUM7OzJIQXZCVSw4QkFBOEI7K0dBQTlCLDhCQUE4QjsyRkFBOUIsOEJBQThCO2tCQUgxQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwyQkFBMkI7aUJBQ3RDOzhCQUlRLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSU4sbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQb3BwYWJsZSB9IGZyb20gJy4vcG9wcGFibGUnO1xuaW1wb3J0IHsgU2JDbGlja1RyaWdnZXJEaXJlY3RpdmUgfSBmcm9tICcuL2NsaWNrLXRyaWdnZXIuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NiRWxDbGlja091dHNpZGVUcmlnZ2VyXSdcbn0pXG5leHBvcnQgY2xhc3MgU2JDbGlja091dHNpZGVUcmlnZ2VyRGlyZWN0aXZlIGV4dGVuZHMgU2JDbGlja1RyaWdnZXJEaXJlY3RpdmUge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0cmlnZ2VyYWJsZSE6IFBvcHBhYmxlXG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6IGNsaWNrJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlRG9jdW1lbnRDbGljayhldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCB7XG4gICAgbGV0IHBvcHBlckJCb3ggPSB0aGlzLnRyaWdnZXJhYmxlLmdldFBvcHBlclJlZigpLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBpZiAoIXRoaXMuaXNNb3VzZW92ZXJCb3VuZGluZ1JlY3QoZXZlbnQsIHBvcHBlckJCb3gpICYmIHRoaXMudHJpZ2dlcmFibGUuaXNQb3BwZWQoKSkge1xuICAgICAgdGhpcy50cmlnZ2VyKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc01vdXNlb3ZlckJvdW5kaW5nUmVjdChcbiAgICBldmVudDogUG9pbnRlckV2ZW50LCBib3VuZGluZ1JlY3Q6IERPTVJlY3RcbiAgKTogYm9vbGVhbiB7XG4gICAgbGV0IG1vdXNlWDogbnVtYmVyID0gZXZlbnQuY2xpZW50WDtcbiAgICBsZXQgbW91c2VZOiBudW1iZXIgPSBldmVudC5jbGllbnRZO1xuXG4gICAgbGV0IHhJbkJvdW5kcyA9IG1vdXNlWCA+PSBib3VuZGluZ1JlY3QubGVmdCAmJiBtb3VzZVggPD0gYm91bmRpbmdSZWN0LnJpZ2h0O1xuICAgIGxldCB5SW5Cb3VuZHMgPSBtb3VzZVkgPj0gYm91bmRpbmdSZWN0LnRvcCAmJiBtb3VzZVkgPD0gYm91bmRpbmdSZWN0LmJvdHRvbTtcblxuICAgIHJldHVybiB4SW5Cb3VuZHMgJiYgeUluQm91bmRzO1xuICB9XG5cbn1cbiJdfQ==