X-Git-Url: http://git.roojs.org/?p=roojs1;a=blobdiff_plain;f=docs%2Fsrc%2FRoo_bootstrap_Menu.js.html;fp=docs%2Fsrc%2FRoo_bootstrap_Menu.js.html;h=0000000000000000000000000000000000000000;hp=bbcbc95d9e6e94c9a775627f77d4c4fac68c30f6;hb=e01802ac69da0ec0c9ccecc295beff82c1779f68;hpb=0fa7894b7489284160ff14afdca7b6911983357f diff --git a/docs/src/Roo_bootstrap_Menu.js.html b/docs/src/Roo_bootstrap_Menu.js.html deleted file mode 100644 index bbcbc95d9e..0000000000 --- a/docs/src/Roo_bootstrap_Menu.js.html +++ /dev/null @@ -1,480 +0,0 @@ -
/*
- * - LGPL
- *
- * menu
- *
- */
-
-/**
- * @class Roo.bootstrap.Menu
- * @extends Roo.bootstrap.Component
- * Bootstrap Menu class - container for MenuItems
- * @cfg {String} type (dropdown|treeview|submenu) type of menu
- * @cfg {bool} hidden if the menu should be hidden when rendered.
- * @cfg {bool} stopEvent (true|false) Stop event after trigger press (default true)
- * @cfg {bool} isLink (true|false) the menu has link disable auto expand and collaspe (default false)
- * @cfg {bool} hideTrigger (true|false) default false - hide the carret for trigger.
- * @cfg {String} align default tl-bl? == below - how the menu should be aligned.
-
- * @constructor
- * Create a new Menu
- * @param {Object} config The config object
- */
-
-
-Roo.bootstrap.Menu = function(config){
-
- if (config.type == 'treeview') {
- // normally menu's are drawn attached to the document to handle layering etc..
- // however treeview (used by the docs menu is drawn into the parent element)
- this.container_method = 'getChildContainer';
- }
-
- Roo.bootstrap.Menu.superclass.constructor.call(this, config);
- if (this.registerMenu && this.type != 'treeview') {
- Roo.bootstrap.MenuMgr.register(this);
- }
-
-
- this.addEvents({
- /**
- * @event beforeshow
- * Fires before this menu is displayed (return false to block)
- * @param {Roo.menu.Menu} this
- */
- beforeshow : true,
- /**
- * @event beforehide
- * Fires before this menu is hidden (return false to block)
- * @param {Roo.menu.Menu} this
- */
- beforehide : true,
- /**
- * @event show
- * Fires after this menu is displayed
- * @param {Roo.menu.Menu} this
- */
- show : true,
- /**
- * @event hide
- * Fires after this menu is hidden
- * @param {Roo.menu.Menu} this
- */
- hide : true,
- /**
- * @event click
- * Fires when this menu is clicked (or when the enter key is pressed while it is active)
- * @param {Roo.menu.Menu} this
- * @param {Roo.menu.Item} menuItem The menu item that was clicked
- * @param {Roo.EventObject} e
- */
- click : true,
- /**
- * @event mouseover
- * Fires when the mouse is hovering over this menu
- * @param {Roo.menu.Menu} this
- * @param {Roo.EventObject} e
- * @param {Roo.menu.Item} menuItem The menu item that was clicked
- */
- mouseover : true,
- /**
- * @event mouseout
- * Fires when the mouse exits this menu
- * @param {Roo.menu.Menu} this
- * @param {Roo.EventObject} e
- * @param {Roo.menu.Item} menuItem The menu item that was clicked
- */
- mouseout : true,
- /**
- * @event itemclick
- * Fires when a menu item contained in this menu is clicked
- * @param {Roo.menu.BaseItem} baseItem The BaseItem that was clicked
- * @param {Roo.EventObject} e
- */
- itemclick: true
- });
- this.menuitems = new Roo.util.MixedCollection(false, function(o) { return o.el.id; });
-};
-
-Roo.extend(Roo.bootstrap.Menu, Roo.bootstrap.Component, {
-
- /// html : false,
-
- triggerEl : false, // is this set by component builder? -- it should really be fetched from parent()???
- type: false,
- /**
- * @cfg {Boolean} registerMenu True (default) - means that clicking on screen etc. hides it.
- */
- registerMenu : true,
-
- menuItems :false, // stores the menu items..
-
- hidden:true,
-
- parentMenu : false,
-
- stopEvent : true,
-
- isLink : false,
-
- container_method : 'getDocumentBody', // so the menu is rendered on the body and zIndex works.
-
- hideTrigger : false,
-
- align : 'tl-bl?',
-
-
- getChildContainer : function() {
- return this.el;
- },
-
- getAutoCreate : function(){
-
- //if (['right'].indexOf(this.align)!==-1) {
- // cfg.cn[1].cls += ' pull-right'
- //}
-
- var cfg = {
- tag : 'ul',
- cls : 'dropdown-menu shadow' ,
- style : 'z-index:1000'
-
- };
-
- if (this.type === 'submenu') {
- cfg.cls = 'submenu active';
- }
- if (this.type === 'treeview') {
- cfg.cls = 'treeview-menu';
- }
-
- return cfg;
- },
- initEvents : function() {
-
- // Roo.log("ADD event");
- // Roo.log(this.triggerEl.dom);
- if (this.triggerEl) {
-
- this.triggerEl.on('click', this.onTriggerClick, this);
-
- this.triggerEl.on(Roo.isTouch ? 'touchstart' : 'mouseup', this.onTriggerPress, this);
-
- if (!this.hideTrigger) {
- if (this.triggerEl.hasClass('nav-item') && this.triggerEl.select('.nav-link',true).length) {
- // dropdown toggle on the 'a' in BS4?
- this.triggerEl.select('.nav-link',true).first().addClass('dropdown-toggle');
- } else {
- this.triggerEl.addClass('dropdown-toggle');
- }
- }
- }
-
- if (Roo.isTouch) {
- this.el.on('touchstart' , this.onTouch, this);
- }
- this.el.on('click' , this.onClick, this);
-
- this.el.on("mouseover", this.onMouseOver, this);
- this.el.on("mouseout", this.onMouseOut, this);
-
- },
-
- findTargetItem : function(e)
- {
- var t = e.getTarget(".dropdown-menu-item", this.el, true);
- if(!t){
- return false;
- }
- //Roo.log(t); Roo.log(t.id);
- if(t && t.id){
- //Roo.log(this.menuitems);
- return this.menuitems.get(t.id);
-
- //return this.items.get(t.menuItemId);
- }
-
- return false;
- },
-
- onTouch : function(e)
- {
- Roo.log("menu.onTouch");
- //e.stopEvent(); this make the user popdown broken
- this.onClick(e);
- },
-
- onClick : function(e)
- {
- Roo.log("menu.onClick");
-
- var t = this.findTargetItem(e);
- if(!t || t.isContainer){
- return;
- }
- Roo.log(e);
- /*
- if (Roo.isTouch && e.type == 'touchstart' && t.menu && !t.disabled) {
- if(t == this.activeItem && t.shouldDeactivate(e)){
- this.activeItem.deactivate();
- delete this.activeItem;
- return;
- }
- if(t.canActivate){
- this.setActiveItem(t, true);
- }
- return;
-
-
- }
- */
-
- Roo.log('pass click event');
-
- t.onClick(e);
-
- this.fireEvent("click", this, t, e);
-
- var _this = this;
-
- if(!t.href.length || t.href == '#'){
- (function() { _this.hide(); }).defer(100);
- }
-
- },
-
- onMouseOver : function(e){
- var t = this.findTargetItem(e);
- //Roo.log(t);
- //if(t){
- // if(t.canActivate && !t.disabled){
- // this.setActiveItem(t, true);
- // }
- //}
-
- this.fireEvent("mouseover", this, e, t);
- },
- isVisible : function(){
- return !this.hidden;
- },
- onMouseOut : function(e){
- var t = this.findTargetItem(e);
-
- //if(t ){
- // if(t == this.activeItem && t.shouldDeactivate(e)){
- // this.activeItem.deactivate();
- // delete this.activeItem;
- // }
- //}
- this.fireEvent("mouseout", this, e, t);
- },
-
-
- /**
- * Displays this menu relative to another element
- * @param {String/HTMLElement/Roo.Element} element The element to align to
- * @param {String} position (optional) The {@link Roo.Element#alignTo} anchor position to use in aligning to
- * the element (defaults to this.defaultAlign)
- * @param {Roo.menu.Menu} parentMenu (optional) This menu's parent menu, if applicable (defaults to undefined)
- */
- show : function(el, pos, parentMenu)
- {
- if (false === this.fireEvent("beforeshow", this)) {
- Roo.log("show canceled");
- return;
- }
- this.parentMenu = parentMenu;
- if(!this.el){
- this.render();
- }
- this.el.addClass('show'); // show otherwise we do not know how big we are..
-
- var xy = this.el.getAlignToXY(el, pos);
-
- // bl-tl << left align below
- // tl-bl << left align
-
- if(this.el.getWidth() + xy[0] >= Roo.lib.Dom.getViewWidth()){
- // if it goes to far to the right.. -> align left.
- xy = this.el.getAlignToXY(el, this.align.replace('/l/g', 'r'))
- }
- if(xy[0] < 0){
- // was left align - go right?
- xy = this.el.getAlignToXY(el, this.align.replace('/r/g', 'l'))
- }
-
- // goes down the bottom
- if(this.el.getHeight() + xy[1] >= Roo.lib.Dom.getViewHeight() ||
- xy[1] < 0 ){
- var a = this.align.replace('?', '').split('-');
- xy = this.el.getAlignToXY(el, a[1] + '-' + a[0] + '?')
-
- }
-
- this.showAt( xy , parentMenu, false);
- },
- /**
- * Displays this menu at a specific xy position
- * @param {Array} xyPosition Contains X & Y [x, y] values for the position at which to show the menu (coordinates are page-based)
- * @param {Roo.menu.Menu} parentMenu (optional) This menu's parent menu, if applicable (defaults to undefined)
- */
- showAt : function(xy, parentMenu, /* private: */_e){
- this.parentMenu = parentMenu;
- if(!this.el){
- this.render();
- }
- if(_e !== false){
- this.fireEvent("beforeshow", this);
- //xy = this.el.adjustForConstraints(xy);
- }
-
- //this.el.show();
- this.hideMenuItems();
- this.hidden = false;
- if (this.triggerEl) {
- this.triggerEl.addClass('open');
- }
-
- this.el.addClass('show');
-
-
-
- // reassign x when hitting right
-
- // reassign y when hitting bottom
-
- // but the list may align on trigger left or trigger top... should it be a properity?
-
- if(this.el.getStyle('top') != 'auto' && this.el.getStyle('top').slice(-1) != "%"){
- this.el.setXY(xy);
- }
-
- this.focus();
- this.fireEvent("show", this);
- },
-
- focus : function(){
- return;
- if(!this.hidden){
- this.doFocus.defer(50, this);
- }
- },
-
- doFocus : function(){
- if(!this.hidden){
- this.focusEl.focus();
- }
- },
-
- /**
- * Hides this menu and optionally all parent menus
- * @param {Boolean} deep (optional) True to hide all parent menus recursively, if any (defaults to false)
- */
- hide : function(deep)
- {
- if (false === this.fireEvent("beforehide", this)) {
- Roo.log("hide canceled");
- return;
- }
- this.hideMenuItems();
- if(this.el && this.isVisible()){
-
- if(this.activeItem){
- this.activeItem.deactivate();
- this.activeItem = null;
- }
- if (this.triggerEl) {
- this.triggerEl.removeClass('open');
- }
-
- this.el.removeClass('show');
- this.hidden = true;
- this.fireEvent("hide", this);
- }
- if(deep === true && this.parentMenu){
- this.parentMenu.hide(true);
- }
- },
-
- onTriggerClick : function(e)
- {
- Roo.log('trigger click');
-
- var target = e.getTarget();
-
- Roo.log(target.nodeName.toLowerCase());
-
- if(target.nodeName.toLowerCase() === 'i'){
- e.preventDefault();
- }
-
- },
-
- onTriggerPress : function(e)
- {
- Roo.log('trigger press');
- //Roo.log(e.getTarget());
- // Roo.log(this.triggerEl.dom);
-
- // trigger only occurs on normal menu's -- if it's a treeview or dropdown... do not hide/show..
- var pel = Roo.get(e.getTarget());
- if (pel.findParent('.dropdown-menu') || pel.findParent('.treeview-menu') ) {
- Roo.log('is treeview or dropdown?');
- return;
- }
-
- if(e.getTarget().nodeName.toLowerCase() !== 'i' && this.isLink){
- return;
- }
-
- if (this.isVisible()) {
- Roo.log('hide');
- this.hide();
- } else {
- Roo.log('show');
-
- this.show(this.triggerEl, this.align, false);
- }
-
- if(this.stopEvent || e.getTarget().nodeName.toLowerCase() === 'i'){
- e.stopEvent();
- }
-
- },
-
-
- hideMenuItems : function()
- {
- Roo.log("hide Menu Items");
- if (!this.el) {
- return;
- }
-
- this.el.select('.open',true).each(function(aa) {
-
- aa.removeClass('open');
-
- });
- },
- addxtypeChild : function (tree, cntr) {
- var comp= Roo.bootstrap.Menu.superclass.addxtypeChild.call(this, tree, cntr);
-
- this.menuitems.add(comp);
- return comp;
-
- },
- getEl : function()
- {
- Roo.log(this.el);
- return this.el;
- },
-
- clear : function()
- {
- this.getEl().dom.innerHTML = '';
- this.menuitems.clear();
- }
-});
-
-
-
\ No newline at end of file