nd-gui
Version:
UI components for NetDocuments
127 lines (122 loc) • 5.11 kB
JavaScript
(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