src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MenuButton.js
changeset 566 a1707c607eec
parent 565 318533413200
child 567 bca1726b1d85
--- a/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/MenuButton.js	Sun Jul 19 02:02:20 2020 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,260 +0,0 @@
-/**
- * MenuButton.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 button.
- *
- * @-x-less MenuButton.less
- * @class tinymce.ui.MenuButton
- * @extends tinymce.ui.Button
- */
-define("tinymce/ui/MenuButton", [
-	"tinymce/ui/Button",
-	"tinymce/ui/Factory",
-	"tinymce/ui/MenuBar"
-], function(Button, Factory, MenuBar) {
-	"use strict";
-
-	// TODO: Maybe add as some global function
-	function isChildOf(node, parent) {
-		while (node) {
-			if (parent === node) {
-				return true;
-			}
-
-			node = node.parentNode;
-		}
-
-		return false;
-	}
-
-	var MenuButton = Button.extend({
-		/**
-		 * Constructs a instance with the specified settings.
-		 *
-		 * @constructor
-		 * @param {Object} settings Name/value object with settings.
-		 */
-		init: function(settings) {
-			var self = this;
-
-			self._renderOpen = true;
-			self._super(settings);
-
-			self.addClass('menubtn');
-
-			if (settings.fixedWidth) {
-				self.addClass('fixed-width');
-			}
-
-			self.aria('haspopup', true);
-			self.hasPopup = true;
-		},
-
-		/**
-		 * Shows the menu for the button.
-		 *
-		 * @method showMenu
-		 */
-		showMenu: function() {
-			var self = this, settings = self.settings, menu;
-
-			if (self.menu && self.menu.visible()) {
-				return self.hideMenu();
-			}
-
-			if (!self.menu) {
-				menu = settings.menu || [];
-
-				// Is menu array then auto constuct menu control
-				if (menu.length) {
-					menu = {
-						type: 'menu',
-						items: menu
-					};
-				} else {
-					menu.type = menu.type || 'menu';
-				}
-
-				self.menu = Factory.create(menu).parent(self).renderTo();
-				self.fire('createmenu');
-				self.menu.reflow();
-				self.menu.on('cancel', function(e) {
-					if (e.control.parent() === self.menu) {
-						e.stopPropagation();
-						self.focus();
-						self.hideMenu();
-					}
-				});
-
-				// Move focus to button when a menu item is selected/clicked
-				self.menu.on('select', function() {
-					self.focus();
-				});
-
-				self.menu.on('show hide', function(e) {
-					if (e.control == self.menu) {
-						self.activeMenu(e.type == 'show');
-					}
-
-					self.aria('expanded', e.type == 'show');
-				}).fire('show');
-			}
-
-			self.menu.show();
-			self.menu.layoutRect({w: self.layoutRect().w});
-			self.menu.moveRel(self.getEl(), self.isRtl() ? ['br-tr', 'tr-br'] : ['bl-tl', 'tl-bl']);
-		},
-
-		/**
-		 * Hides the menu for the button.
-		 *
-		 * @method hideMenu
-		 */
-		hideMenu: function() {
-			var self = this;
-
-			if (self.menu) {
-				self.menu.items().each(function(item) {
-					if (item.hideMenu) {
-						item.hideMenu();
-					}
-				});
-
-				self.menu.hide();
-			}
-		},
-
-		/**
-		 * Sets the active menu state.
-		 *
-		 * @private
-		 */
-		activeMenu: function(state) {
-			this.toggleClass('active', state);
-		},
-
-		/**
-		 * Renders the control as a HTML string.
-		 *
-		 * @method renderHtml
-		 * @return {String} HTML representing the control.
-		 */
-		renderHtml: function() {
-			var self = this, id = self._id, prefix = self.classPrefix;
-			var icon = self.settings.icon, image;
-
-			image = self.settings.image;
-			if (image) {
-				icon = 'none';
-
-				// Support for [high dpi, low dpi] image sources
-				if (typeof image != "string") {
-					image = window.getSelection ? image[0] : image[1];
-				}
-
-				image = ' style="background-image: url(\'' + image + '\')"';
-			} else {
-				image = '';
-			}
-
-			icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
-
-			self.aria('role', self.parent() instanceof MenuBar ? 'menuitem' : 'button');
-
-			return (
-				'<div id="' + id + '" class="' + self.classes() + '" tabindex="-1" aria-labelledby="' + id + '">' +
-					'<button id="' + id + '-open" role="presentation" type="button" tabindex="-1">' +
-						(icon ? '<i class="' + icon + '"' + image + '></i>' : '') +
-						'<span>' + (self._text ? (icon ? '\u00a0' : '') + self.encode(self._text) : '') + '</span>' +
-						' <i class="' + prefix + 'caret"></i>' +
-					'</button>' +
-				'</div>'
-			);
-		},
-
-		/**
-		 * Gets invoked after the control has been rendered.
-		 *
-		 * @method postRender
-		 */
-		postRender: function() {
-			var self = this;
-
-			self.on('click', function(e) {
-				if (e.control === self && isChildOf(e.target, self.getEl())) {
-					self.showMenu();
-
-					if (e.aria) {
-						self.menu.items()[0].focus();
-					}
-				}
-			});
-
-			self.on('mouseenter', function(e) {
-				var overCtrl = e.control, parent = self.parent(), hasVisibleSiblingMenu;
-
-				if (overCtrl && parent && overCtrl instanceof MenuButton && overCtrl.parent() == parent) {
-					parent.items().filter('MenuButton').each(function(ctrl) {
-						if (ctrl.hideMenu && ctrl != overCtrl) {
-							if (ctrl.menu && ctrl.menu.visible()) {
-								hasVisibleSiblingMenu = true;
-							}
-
-							ctrl.hideMenu();
-						}
-					});
-
-					if (hasVisibleSiblingMenu) {
-						overCtrl.focus(); // Fix for: #5887
-						overCtrl.showMenu();
-					}
-				}
-			});
-
-			return self._super();
-		},
-
-		/**
-		 * Sets/gets the current button text.
-		 *
-		 * @method text
-		 * @param {String} [text] New button text.
-		 * @return {String|tinymce.ui.MenuButton} Current text or current MenuButton instance.
-		 */
-		text: function(text) {
-			var self = this, i, children;
-
-			if (self._rendered) {
-				children = self.getEl('open').getElementsByTagName('span');
-				for (i = 0; i < children.length; i++) {
-					children[i].innerHTML = (self.settings.icon && text ? '\u00a0' : '') + self.encode(text);
-				}
-			}
-
-			return this._super(text);
-		},
-
-		/**
-		 * Removes the control and it's menus.
-		 *
-		 * @method remove
-		 */
-		remove: function() {
-			this._super();
-
-			if (this.menu) {
-				this.menu.remove();
-			}
-		}
-	});
-
-	return MenuButton;
-});
\ No newline at end of file