--- /dev/null
+Demo.MenuDialog = function DemoMenuDialog( config ) {
+ Demo.MenuDialog.parent.call( this, config );
+};
+OO.inheritClass( Demo.MenuDialog, OO.ui.ProcessDialog );
+Demo.MenuDialog.static.title = 'Menu dialog';
+Demo.MenuDialog.static.actions = [
+ { action: 'save', label: 'Done', flags: [ 'primary', 'progressive' ] },
+ { action: 'cancel', label: 'Cancel', flags: [ 'safe', 'back' ] }
+];
+Demo.MenuDialog.prototype.getBodyHeight = function () {
+ return 350;
+};
+Demo.MenuDialog.prototype.initialize = function () {
+ var menuLayout, positionField, showField, menuPanel, contentPanel;
+ Demo.MenuDialog.parent.prototype.initialize.apply( this, arguments );
+
+ menuLayout = new OO.ui.MenuLayout();
+ positionField = new OO.ui.FieldLayout(
+ new OO.ui.ButtonSelectWidget( {
+ items: [
+ new OO.ui.ButtonOptionWidget( {
+ data: 'before',
+ label: 'Before'
+ } ),
+ new OO.ui.ButtonOptionWidget( {
+ data: 'after',
+ label: 'After'
+ } ),
+ new OO.ui.ButtonOptionWidget( {
+ data: 'top',
+ label: 'Top'
+ } ),
+ new OO.ui.ButtonOptionWidget( {
+ data: 'bottom',
+ label: 'Bottom'
+ } )
+ ]
+ } ).on( 'select', function ( item ) {
+ menuLayout.setMenuPosition( item.getData() );
+ } ),
+ {
+ label: 'Menu position',
+ align: 'top'
+ }
+ );
+ showField = new OO.ui.FieldLayout(
+ new OO.ui.ToggleSwitchWidget( { value: true } ).on( 'change', function ( value ) {
+ menuLayout.toggleMenu( value );
+ } ),
+ {
+ label: 'Show menu',
+ align: 'top'
+ }
+ );
+ menuPanel = new OO.ui.PanelLayout( { padded: true, expanded: true, scrollable: true } );
+ contentPanel = new OO.ui.PanelLayout( { padded: true, expanded: true, scrollable: true } );
+
+ menuLayout.$menu.append(
+ menuPanel.$element.append( 'Menu panel' )
+ );
+ menuLayout.$content.append(
+ contentPanel.$element.append(
+ positionField.$element,
+ showField.$element
+ )
+ );
+
+ this.$body.append( menuLayout.$element );
+};
+Demo.MenuDialog.prototype.getActionProcess = function ( action ) {
+ if ( action ) {
+ return new OO.ui.Process( function () {
+ this.close( { action: action } );
+ }, this );
+ }
+ return Demo.MenuDialog.parent.prototype.getActionProcess.call( this, action );
+};