'use strict'; function ColorContextPadProvider(contextPad, popupMenu, canvas, translate) { this._contextPad = contextPad; this._popupMenu = popupMenu; this._canvas = canvas; this._translate = translate; contextPad.registerProvider(this); } ColorContextPadProvider.$inject = [ 'contextPad', 'popupMenu', 'canvas', 'translate' ]; module.exports = ColorContextPadProvider; ColorContextPadProvider.prototype.getContextPadEntries = function(element) { var self = this, translate = this._translate; var actions = { 'set-color': { group: 'edit', className: 'bpmn-icon-color', title: translate('Set Color'), action: { click: function(event, element) { // close any existing popup //self._popupMenu.close(); // create new color-picker popup //var colorPicker = self._popupMenu.create('colorpicker', element); // get start popup draw start position var opts = getStartPosition(self._canvas, self._contextPad, element); // or fallback to current cursor position opts.cursor = { x: event.x, y: event.y }; // open color picker submenu popup //colorPicker.open(opts, element); /* var position = assign(getReplaceMenuPosition(element), { cursor: { x: event.x, y: event.y } }); */ self._popupMenu.open(element, 'colorpicker', opts); } } } }; return actions; }; // helpers ////////////////////// function getStartPosition(canvas, contextPad, element) { var Y_OFFSET = 5; var diagramContainer = canvas.getContainer(), pad = contextPad.getPad(element).html; var diagramRect = diagramContainer.getBoundingClientRect(), padRect = pad.getBoundingClientRect(); var top = padRect.top - diagramRect.top; var left = padRect.left - diagramRect.left; var pos = { x: left, y: top + padRect.height + Y_OFFSET }; return pos; }