|
- define([
- 'js/system/events',
- 'html!ui/templates/context/template',
- 'css!ui/templates/context/styles',
- 'html!ui/templates/context/templateItem'
- ], function (
- events,
- template,
- styles,
- templateItem
- ) {
- return {
- tpl: template,
- modal: true,
-
- postRender: function () {
- this.onEvent('onContextMenu', this.onContextMenu.bind(this));
- this.onEvent('onHideContextMenu', this.onMouseDown.bind(this));
- this.onEvent('mouseDown', this.onMouseDown.bind(this));
-
- $('.ui-container').on('mouseup', this.onMouseDown.bind(this));
- },
-
- onContextMenu: function (config, e) {
- let container = this.el.find('.list')
- .empty();
-
- config.forEach(function (c, i) {
- let text = c.text ? c.text : c;
-
- let html = templateItem
- .replace('$TEXT$', text);
-
- let row = $(html)
- .appendTo(container);
-
- if (c.callback)
- row.on('click', this.onClick.bind(this, i, c.callback));
- else
- row.addClass('no-hover');
- }, this);
-
- this.el
- .css({
- left: e.clientX,
- top: e.clientY
- })
- .show();
- },
-
- onClick: function (index, callback) {
- this.el.hide();
- callback();
- },
-
- onMouseDown: function (e) {
- if ((!this.el.is(':visible')) || (e.cancel) || (e.button == 2))
- return;
-
- this.el.hide();
- }
- };
- });
|