init
This commit is contained in:
139
public/tinymce/classes/ui/Menu.js
Normal file
139
public/tinymce/classes/ui/Menu.js
Normal file
@ -0,0 +1,139 @@
|
||||
/**
|
||||
* Menu.js
|
||||
*
|
||||
* Copyright, Moxiecode Systems AB
|
||||
* Released under LGPL License.
|
||||
*
|
||||
* License: http://www.tinymce.com/license
|
||||
* Contributing: http://www.tinymce.com/contributing
|
||||
*/
|
||||
|
||||
/**
|
||||
* Creates a new menu.
|
||||
*
|
||||
* @-x-less Menu.less
|
||||
* @class tinymce.ui.Menu
|
||||
* @extends tinymce.ui.FloatPanel
|
||||
*/
|
||||
define("tinymce/ui/Menu", [
|
||||
"tinymce/ui/FloatPanel",
|
||||
"tinymce/ui/KeyboardNavigation",
|
||||
"tinymce/ui/MenuItem",
|
||||
"tinymce/util/Tools"
|
||||
], function(FloatPanel, KeyboardNavigation, MenuItem, Tools) {
|
||||
"use strict";
|
||||
|
||||
var Menu = FloatPanel.extend({
|
||||
Defaults: {
|
||||
defaultType: 'menuitem',
|
||||
border: 1,
|
||||
layout: 'stack',
|
||||
role: 'menu'
|
||||
},
|
||||
|
||||
/**
|
||||
* Constructs a instance with the specified settings.
|
||||
*
|
||||
* @constructor
|
||||
* @param {Object} settings Name/value object with settings.
|
||||
*/
|
||||
init: function(settings) {
|
||||
var self = this;
|
||||
|
||||
settings.autohide = true;
|
||||
settings.constrainToViewport = true;
|
||||
|
||||
if (settings.itemDefaults) {
|
||||
var items = settings.items, i = items.length;
|
||||
|
||||
while (i--) {
|
||||
items[i] = Tools.extend({}, settings.itemDefaults, items[i]);
|
||||
}
|
||||
}
|
||||
|
||||
self._super(settings);
|
||||
self.addClass('menu');
|
||||
|
||||
self.keyNav = new KeyboardNavigation({
|
||||
root: self,
|
||||
enableUpDown: true,
|
||||
enableLeftRight: true,
|
||||
|
||||
leftAction: function() {
|
||||
if (self.parent() instanceof MenuItem) {
|
||||
self.keyNav.cancel();
|
||||
}
|
||||
},
|
||||
|
||||
onCancel: function() {
|
||||
self.fire('cancel', {}, false);
|
||||
self.hide();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Repaints the control after a layout operation.
|
||||
*
|
||||
* @method repaint
|
||||
*/
|
||||
repaint: function() {
|
||||
this.toggleClass('menu-align', true);
|
||||
|
||||
this._super();
|
||||
|
||||
this.getEl().style.height = '';
|
||||
this.getEl('body').style.height = '';
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
* Hides/closes the menu.
|
||||
*
|
||||
* @method cancel
|
||||
*/
|
||||
cancel: function() {
|
||||
var self = this;
|
||||
|
||||
self.hideAll();
|
||||
self.fire('cancel');
|
||||
self.fire('select');
|
||||
},
|
||||
|
||||
/**
|
||||
* Hide menu and all sub menus.
|
||||
*
|
||||
* @method hideAll
|
||||
*/
|
||||
hideAll: function() {
|
||||
var self = this;
|
||||
|
||||
this.find('menuitem').exec('hideMenu');
|
||||
|
||||
return self._super();
|
||||
},
|
||||
|
||||
/**
|
||||
* Invoked before the menu is rendered.
|
||||
*
|
||||
* @method preRender
|
||||
*/
|
||||
preRender: function() {
|
||||
var self = this;
|
||||
|
||||
self.items().each(function(ctrl) {
|
||||
var settings = ctrl.settings;
|
||||
|
||||
if (settings.icon || settings.selectable) {
|
||||
self._hasIcons = true;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
return self._super();
|
||||
}
|
||||
});
|
||||
|
||||
return Menu;
|
||||
});
|
Reference in New Issue
Block a user