Current Path : /var/www/axolotl/data/www/yar.axolotls.ru/bitrix/js/calendar/controls/src/ |
Current File : /var/www/axolotl/data/www/yar.axolotls.ru/bitrix/js/calendar/controls/src/addbutton.js |
import {Dom, Event, Loc, Type} from 'main.core'; export class AddButton extends Event.EventEmitter { showTasks = false; DOM = {}; constructor(params = {}) { super(); this.setEventNamespace('BX.Calendar.Controls.AddButton'); this.zIndex = params.zIndex || 3200; this.popupId = params.id || 'add-button-' + Math.round(Math.random() * 10000); this.showTasks = params.showTasks; this.addEntryHandler = Type.isFunction(params.addEntry) ? params.addEntry : null; this.addTaskHandler = Type.isFunction(params.addTask) ? params.addTask : null; this.create(); } create() { this.menuItems = [ { text: Loc.getMessage('EC_ADD_EVENT'), onclick: this.addEntry.bind(this) } ]; if (this.addTaskHandler) { this.menuItems.push({ text: Loc.getMessage('EC_ADD_TASK'), onclick: this.addTask.bind(this) }); } if (this.menuItems.length > 1) { this.DOM.wrap = Dom.create("span", { props: {className: "ui-btn-split ui-btn-primary"}, children: [ Dom.create("button", { props: {className: "ui-btn-main", type: "button"}, html: Loc.getMessage('EC_ADD'), events: {click: this.addEntry.bind(this)} }) ] }); this.DOM.addButtonExtra = Dom.create("span", { props: {className: "ui-btn-extra"}, events: {click: this.showPopup.bind(this)} }); this.DOM.wrap.appendChild(this.DOM.addButtonExtra) } else { this.DOM.wrap = Dom.create("button", { props: {className: "ui-btn ui-btn-primary", type: "button"}, html: Loc.getMessage('EC_ADD'), events: {click: this.addEntry.bind(this)} }); } } getWrap() { return this.DOM.wrap; } showPopup() { if (this.menuPopup && this.menuPopup.popupWindow && this.menuPopup.popupWindow.isShown()) { return this.menuPopup.close(); } this.menuPopup = BX.PopupMenu.create( this.popupId, this.DOM.addButtonExtra, this.menuItems, { closeByEsc : true, autoHide : true, zIndex: this.zIndex, offsetTop: 0, offsetLeft: 15, angle: true } ); this.menuPopup.show(); BX.addCustomEvent(this.menuPopup.popupWindow, 'onPopupClose', function() { BX.PopupMenu.destroy(this.popupId); this.menuPopup = null; this.addBtnMenu = null; }.bind(this)); } addEntry() { if (this.addEntryHandler) { this.addEntryHandler(); } if (this.menuPopup && this.menuPopup.popupWindow && this.menuPopup.popupWindow.isShown()) { this.menuPopup.close(); } } addTask() { if (this.addTaskHandler) { this.addTaskHandler(); } if (this.menuPopup && this.menuPopup.popupWindow && this.menuPopup.popupWindow.isShown()) { this.menuPopup.close(); } } }