ng2-branchy
Version:
angular2 component for visualizing data that can be naturally represented as a tree
89 lines • 4.17 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
var core_1 = require('@angular/core');
var common_1 = require('@angular/common');
var node_menu_service_1 = require('./node-menu.service');
var menu_types_1 = require('./menu.types');
var event_utils_1 = require('../common/utils/event.utils');
var NodeMenuComponent = (function () {
function NodeMenuComponent(renderer, nodeMenuService) {
this.renderer = renderer;
this.nodeMenuService = nodeMenuService;
this.menuItemSelected = new core_1.EventEmitter();
this.availableMenuItems = [
{
name: 'New tag',
action: menu_types_1.NodeMenuItemAction.NewTag,
cssClass: 'new-tag'
},
{
name: 'New folder',
action: menu_types_1.NodeMenuItemAction.NewFolder,
cssClass: 'new-folder',
},
{
name: 'Rename',
action: menu_types_1.NodeMenuItemAction.Rename,
cssClass: 'rename'
},
{
name: 'Remove',
action: menu_types_1.NodeMenuItemAction.Remove,
cssClass: 'remove'
},
];
this.disposersForGlobalListeners = [];
}
NodeMenuComponent.prototype.onMenuItemSelected = function (e, selectedMenuItem) {
if (event_utils_1.isLeftButtonClicked(e)) {
this.menuItemSelected.emit({ nodeMenuItemAction: selectedMenuItem.action });
}
};
NodeMenuComponent.prototype.closeMenu = function (e) {
var mouseClicked = e instanceof MouseEvent;
var escapePressed = e instanceof KeyboardEvent && event_utils_1.isEscapePressed(e);
if (escapePressed || mouseClicked) {
var nodeMenuEvent = {
sender: e.target,
action: menu_types_1.NodeMenuAction.Close
};
this.nodeMenuService.nodeMenuEvents$.next(nodeMenuEvent);
}
};
NodeMenuComponent.prototype.ngOnInit = function () {
this.disposersForGlobalListeners.push(this.renderer.listenGlobal('document', 'keyup', this.closeMenu.bind(this)));
this.disposersForGlobalListeners.push(this.renderer.listenGlobal('document', 'click', this.closeMenu.bind(this)));
};
NodeMenuComponent.prototype.ngOnDestroy = function () {
this.disposersForGlobalListeners.forEach(function (dispose) { return dispose(); });
};
__decorate([
core_1.Output(),
__metadata('design:type', core_1.EventEmitter)
], NodeMenuComponent.prototype, "menuItemSelected", void 0);
NodeMenuComponent = __decorate([
core_1.Component({
selector: 'node-menu',
styles: [require('./node-menu.component.css')],
template: require('./node-menu.component.html'),
directives: [common_1.CORE_DIRECTIVES]
}),
__param(0, core_1.Inject(core_1.Renderer)),
__param(1, core_1.Inject(node_menu_service_1.NodeMenuService)),
__metadata('design:paramtypes', [core_1.Renderer, node_menu_service_1.NodeMenuService])
], NodeMenuComponent);
return NodeMenuComponent;
}());
exports.NodeMenuComponent = NodeMenuComponent;
//# sourceMappingURL=node-menu.component.js.map