Extends
Constructor
new OO.ui.MenuLayout([config])
#
MenuLayouts combine a menu and a content panel. The menu is positioned
relative to the content (after, before, top, or bottom) and its size is customized with the
#menuSize config. The content area will fill all remaining space.
If menu size needs to be overridden, it can be accomplished using CSS similar to the snippet
below. MenuLayout's CSS will override the appropriate values with 'auto' or '0' to display the
menu correctly. If menuPosition is known beforehand, CSS rules corresponding to other positions
may be omitted.
.oo-ui-menuLayout-menu {
width: 200px;
height: 200px;
}
.oo-ui-menuLayout-content {
top: 200px;
left: 200px;
right: 200px;
bottom: 200px;
}
Example
let menuLayout;
const menuPanel = new OO.ui.PanelLayout( {
padded: true,
expanded: true,
scrollable: true
} ),
contentPanel = new OO.ui.PanelLayout( {
padded: true,
expanded: true,
scrollable: true
} ),
select = new OO.ui.SelectWidget( {
items: [
new OO.ui.OptionWidget( {
data: 'before',
label: 'Before'
} ),
new OO.ui.OptionWidget( {
data: 'after',
label: 'After'
} ),
new OO.ui.OptionWidget( {
data: 'top',
label: 'Top'
} ),
new OO.ui.OptionWidget( {
data: 'bottom',
label: 'Bottom'
} )
]
} ).on( 'select', function ( item ) {
menuLayout.setMenuPosition( item.getData() );
} );
menuLayout = new OO.ui.MenuLayout( {
position: 'top',
menuPanel: menuPanel,
contentPanel: contentPanel
} );
menuLayout.$menu.append(
menuPanel.$element.append( '<b>Menu panel</b>', select.$element )
);
menuLayout.$content.append(
contentPanel.$element.append(
'<b>Content panel</b>',
'<p>Note that the menu is positioned relative to the content panel: ' +
'top, bottom, after, before.</p>'
)
);
$( document.body ).append( menuLayout.$element );
Parameters:
| Name | Type | Attributes | Description | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
config |
Object |
optional |
Configuration options Properties:
|
- Source:
panel.
Properties
$content
#
Methods
clearContentPanel()
#
Clear the content panel.
- Source:
clearMenuPanel()
#
Clear the menu panel.
- Source:
getClosestScrollableElementContainer() → {HTMLElement}
#
Get closest scrollable container.
Returns:
Closest scrollable container
- Type
- HTMLElement
- Inherited from:
- Source:
getData() → {any}
#
Get element data.
Returns:
Element data
- Type
- any
- Inherited from:
- Source:
getElementDocument() → {HTMLDocument}
#
getElementGroup() → {OO.ui.mixin.GroupElement|null}
#
null}
#
Get group element is in.
Returns:
Group element, null if none
- Type
-
OO.ui.mixin.GroupElement
|
null
- Inherited from:
- Source:
getElementId() → {string}
#
Ensure that the element has an 'id' attribute, setting it to an unique value if it's missing, and return its value.
Returns:
- Type
- string
- Inherited from:
- Source:
Ensure that the element has an 'id' attribute, setting it to an unique value if it's missing, and return its value.
getElementWindow() → {Window}
#
getMenuPosition() → {string}
#
getTagName() → {string}
#
Get the HTML tag name.
Override this method to base the result on instance information.
Returns:
HTML tag name
- Type
- string
- Inherited from:
- Source:
isElementAttached() → {boolean}
#
Check if the element is attached to the DOM
Returns:
The element is attached to the DOM
- Type
- boolean
- Inherited from:
- Source:
isMenuVisible() → {boolean}
#
Check if menu is visible
Returns:
Menu is visible
- Type
- boolean
- Source:
isVisible() → {boolean}
#
Check if element is visible.
Returns:
element is visible
- Type
- boolean
- Inherited from:
- Source:
resetScroll() → {OO.ui.Layout}chainable
#
restorePreInfuseState(state)protected
#
Restore the pre-infusion dynamic state for this widget.
This method is called after #$element has been inserted into DOM. The parameter is the return value of #gatherPreInfuseState.
Parameters:
| Name | Type | Description |
|---|---|---|
state |
Object |
- Inherited from:
- Source:
scrollElementIntoView([config]) → {jQuery.Promise}
#
Scroll element into view.
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
config |
Object |
optional |
Configuration options |
Returns:
Promise which resolves when the scroll is complete
- Type
- jQuery.Promise
- Inherited from:
- Source:
setContentPanel(contentPanel)
#
Set the content panel.
Parameters:
| Name | Type | Description |
|---|---|---|
contentPanel |
OO.ui.PanelLayout | Content panel |
- Source:
setData(data) → {OO.ui.Element}chainable
#
Set element data.
Parameters:
| Name | Type | Description |
|---|---|---|
data |
any | Element data |
Returns:
The element, for chaining
- Type
- OO.ui.Element
- Inherited from:
- Source:
setElementGroup(group) → {OO.ui.Element}chainable
#
Set group element is in.
Parameters:
| Name | Type | Description |
|---|---|---|
group |
OO.ui.mixin.GroupElement
|
null
|
Group element, null if none |
Returns:
The element, for chaining
- Type
- OO.ui.Element
- Inherited from:
- Source:
setElementId(id) → {OO.ui.Element}chainable
#
Set the element has an 'id' attribute.
Parameters:
| Name | Type | Description |
|---|---|---|
id |
string |
Returns:
The element, for chaining
- Type
- OO.ui.Element
- Inherited from:
- Source:
setMenuPanel(menuPanel)
#
Set the menu panel.
Parameters:
| Name | Type | Description |
|---|---|---|
menuPanel |
OO.ui.PanelLayout | Menu panel |
- Source:
setMenuPosition(position) → {OO.ui.MenuLayout}chainable
#
Set menu position.
Parameters:
| Name | Type | Description |
|---|---|---|
position |
string | Position of menu, either |
Returns:
The layout, for chaining
- Type
- OO.ui.MenuLayout
- Source:
supports(methods) → {boolean}
#
Check if element supports one or more methods.
Parameters:
| Name | Type | Description |
|---|---|---|
methods |
string | Array.<string> | Method or list of methods to check |
Returns:
All methods are supported
- Type
- boolean
- Inherited from:
- Source:
toggle([show]) → {OO.ui.Element}chainable
#
Toggle visibility of an element.
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
show |
boolean |
optional |
Make element visible, omit to toggle visibility |
Returns:
The element, for chaining
- Type
- OO.ui.Element
Fires:
- Inherited from:
- Source:
toggleMenu([showMenu]) → {OO.ui.MenuLayout}chainable
#
Toggle menu.
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
showMenu |
boolean |
optional |
Show menu, omit to toggle |
Returns:
The layout, for chaining
- Type
- OO.ui.MenuLayout
- Source:
updateThemeClasses()
#
Update the theme-provided classes.
This is called in element mixins and widget classes any time state changes. Updating is debounced, minimizing overhead of changing multiple attributes and guaranteeing that theme updates do not occur within an element's constructor
- Inherited from:
- Source: