UNPKG

nd-gui

Version:

UI components for NetDocuments

127 lines (122 loc) 5.11 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('nd-common')) : typeof define === 'function' && define.amd ? define('nd-gui/core', ['exports', '@angular/core', 'nd-common'], factory) : (factory((global['nd-gui'] = global['nd-gui'] || {}, global['nd-gui'].core = {}),global.ng.core,global.ndCommon)); }(this, (function (exports,core,ndCommon) { 'use strict'; var ClickOutsideDirective = /** @class */ (function () { function ClickOutsideDirective() { this.elementIsActive = false; this.containerElements = []; this.manuallyActiveElement = false; this.clickOutside = new core.EventEmitter(); this.manuallyActiveElementUsed = new core.EventEmitter(); } ClickOutsideDirective.prototype.onClick = function ($event) { if (this.manuallyActiveElement && !this.elementIsActive) { this.elementIsActive = true; this.manuallyActiveElementUsed.emit(); } if (this.elementIsActive) { this.handleEvent($event); } }; ClickOutsideDirective.prototype.elementIsClicked = function () { this.elementIsActive = true; }; ClickOutsideDirective.prototype.elementIsFocus = function () { this.elementIsActive = true; }; ClickOutsideDirective.prototype.elementIsChanged = function () { this.elementIsActive = true; }; ClickOutsideDirective.prototype.keyboardInput = function ($event) { if ($event.ctrlKey && $event.keyCode != ndCommon.CTRL && (($event.shiftKey && $event.keyCode != ndCommon.SHIFT) || ($event.altKey && $event.keyCode != ndCommon.ALT))) { this.elementIsActive = true; } if ($event.keyCode === ndCommon.TAB) { this.handleEvent($event); } }; ClickOutsideDirective.prototype.handleEvent = function (inputEvent) { if (!this.containerElements) return; var clickedElement = inputEvent.srcElement; if (clickedElement == null && inputEvent.target) { clickedElement = (inputEvent.target); } var clickedInside = this.checkIfClickedInside(clickedElement); if (!clickedInside) { this.elementIsActive = false; this.clickOutside.emit(inputEvent); } }; ClickOutsideDirective.prototype.isVisible = function (el) { return el.offsetHeight !== null; }; ClickOutsideDirective.prototype.checkIfClickedInside = function (clickedElement) { var _this = this; return this.containerElements.find(function (e) { if (!e) { return false; } var containerElement = null; if (e.contains && _this.isVisible(e)) { containerElement = e; } else if (e.el && _this.isVisible(e.el.nativeElement)) { containerElement = e.el.nativeElement; } else if (e._eref && _this.isVisible(e._eref.nativeElement)) { containerElement = e._eref.nativeElement; } else if (typeof e === "string") { containerElement = document.getElementById(e); } if (containerElement) { return containerElement.contains(clickedElement); } else { return false; } }); }; return ClickOutsideDirective; }()); ClickOutsideDirective.decorators = [ { type: core.Directive, args: [{ selector: '[clickOutside]' },] }, ]; ClickOutsideDirective.ctorParameters = function () { return []; }; ClickOutsideDirective.propDecorators = { containerElements: [{ type: core.Input }], manuallyActiveElement: [{ type: core.Input }], clickOutside: [{ type: core.Output }], manuallyActiveElementUsed: [{ type: core.Output }], onClick: [{ type: core.HostListener, args: ['document:contextmenu', ['$event'],] }, { type: core.HostListener, args: ['document:click', ['$event'],] }], elementIsClicked: [{ type: core.HostListener, args: ["click",] }], elementIsFocus: [{ type: core.HostListener, args: ["focus",] }], elementIsChanged: [{ type: core.HostListener, args: ["change",] }], keyboardInput: [{ type: core.HostListener, args: ['window:keydown', ['$event'],] }] }; var ndClickOutsideModule = /** @class */ (function () { function ndClickOutsideModule() { } return ndClickOutsideModule; }()); ndClickOutsideModule.decorators = [ { type: core.NgModule, args: [{ declarations: [ClickOutsideDirective], exports: [ClickOutsideDirective] },] }, ]; var HIGHLIGHTED = "highlighted"; var DISABLED = "disabled"; exports.ClickOutsideDirective = ClickOutsideDirective; exports.ndClickOutsideModule = ndClickOutsideModule; exports.HIGHLIGHTED = HIGHLIGHTED; exports.DISABLED = DISABLED; Object.defineProperty(exports, '__esModule', { value: true }); }))); //# sourceMappingURL=nd-gui-core.umd.js.map