summaryrefslogtreecommitdiff
path: root/vendor/oojs/oojs-ui/src/Dialog.js
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/oojs/oojs-ui/src/Dialog.js')
-rw-r--r--vendor/oojs/oojs-ui/src/Dialog.js323
1 files changed, 0 insertions, 323 deletions
diff --git a/vendor/oojs/oojs-ui/src/Dialog.js b/vendor/oojs/oojs-ui/src/Dialog.js
deleted file mode 100644
index 33226038..00000000
--- a/vendor/oojs/oojs-ui/src/Dialog.js
+++ /dev/null
@@ -1,323 +0,0 @@
-/**
- * The Dialog class serves as the base class for the other types of dialogs.
- * Unless extended to include controls, the rendered dialog box is a simple window
- * that users can close by hitting the ‘Esc’ key. Dialog windows are used with OO.ui.WindowManager,
- * which opens, closes, and controls the presentation of the window. See the
- * [OOjs UI documentation on MediaWiki] [1] for more information.
- *
- * @example
- * // A simple dialog window.
- * function MyDialog( config ) {
- * MyDialog.super.call( this, config );
- * }
- * OO.inheritClass( MyDialog, OO.ui.Dialog );
- * MyDialog.prototype.initialize = function () {
- * MyDialog.super.prototype.initialize.call( this );
- * this.content = new OO.ui.PanelLayout( { padded: true, expanded: false } );
- * this.content.$element.append( '<p>A simple dialog window. Press \'Esc\' to close.</p>' );
- * this.$body.append( this.content.$element );
- * };
- * MyDialog.prototype.getBodyHeight = function () {
- * return this.content.$element.outerHeight( true );
- * };
- * var myDialog = new MyDialog( {
- * size: 'medium'
- * } );
- * // Create and append a window manager, which opens and closes the window.
- * var windowManager = new OO.ui.WindowManager();
- * $( 'body' ).append( windowManager.$element );
- * windowManager.addWindows( [ myDialog ] );
- * // Open the window!
- * windowManager.openWindow( myDialog );
- *
- * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Windows/Dialogs
- *
- * @abstract
- * @class
- * @extends OO.ui.Window
- * @mixins OO.ui.PendingElement
- *
- * @constructor
- * @param {Object} [config] Configuration options
- */
-OO.ui.Dialog = function OoUiDialog( config ) {
- // Parent constructor
- OO.ui.Dialog.super.call( this, config );
-
- // Mixin constructors
- OO.ui.PendingElement.call( this );
-
- // Properties
- this.actions = new OO.ui.ActionSet();
- this.attachedActions = [];
- this.currentAction = null;
- this.onDocumentKeyDownHandler = this.onDocumentKeyDown.bind( this );
-
- // Events
- this.actions.connect( this, {
- click: 'onActionClick',
- resize: 'onActionResize',
- change: 'onActionsChange'
- } );
-
- // Initialization
- this.$element
- .addClass( 'oo-ui-dialog' )
- .attr( 'role', 'dialog' );
-};
-
-/* Setup */
-
-OO.inheritClass( OO.ui.Dialog, OO.ui.Window );
-OO.mixinClass( OO.ui.Dialog, OO.ui.PendingElement );
-
-/* Static Properties */
-
-/**
- * Symbolic name of dialog.
- *
- * The dialog class must have a symbolic name in order to be registered with OO.Factory.
- * Please see the [OOjs UI documentation on MediaWiki] [3] for more information.
- *
- * [3]: https://www.mediawiki.org/wiki/OOjs_UI/Windows/Window_managers
- *
- * @abstract
- * @static
- * @inheritable
- * @property {string}
- */
-OO.ui.Dialog.static.name = '';
-
-/**
- * The dialog title.
- *
- * The title can be specified as a plaintext string, a {@link OO.ui.LabelElement Label} node, or a function
- * that will produce a Label node or string. The title can also be specified with data passed to the
- * constructor (see #getSetupProcess). In this case, the static value will be overriden.
- *
- * @abstract
- * @static
- * @inheritable
- * @property {jQuery|string|Function}
- */
-OO.ui.Dialog.static.title = '';
-
-/**
- * An array of configured {@link OO.ui.ActionWidget action widgets}.
- *
- * Actions can also be specified with data passed to the constructor (see #getSetupProcess). In this case, the static
- * value will be overriden.
- *
- * [2]: https://www.mediawiki.org/wiki/OOjs_UI/Windows/Process_Dialogs#Action_sets
- *
- * @static
- * @inheritable
- * @property {Object[]}
- */
-OO.ui.Dialog.static.actions = [];
-
-/**
- * Close the dialog when the 'Esc' key is pressed.
- *
- * @static
- * @abstract
- * @inheritable
- * @property {boolean}
- */
-OO.ui.Dialog.static.escapable = true;
-
-/* Methods */
-
-/**
- * Handle frame document key down events.
- *
- * @private
- * @param {jQuery.Event} e Key down event
- */
-OO.ui.Dialog.prototype.onDocumentKeyDown = function ( e ) {
- if ( e.which === OO.ui.Keys.ESCAPE ) {
- this.close();
- e.preventDefault();
- e.stopPropagation();
- }
-};
-
-/**
- * Handle action resized events.
- *
- * @private
- * @param {OO.ui.ActionWidget} action Action that was resized
- */
-OO.ui.Dialog.prototype.onActionResize = function () {
- // Override in subclass
-};
-
-/**
- * Handle action click events.
- *
- * @private
- * @param {OO.ui.ActionWidget} action Action that was clicked
- */
-OO.ui.Dialog.prototype.onActionClick = function ( action ) {
- if ( !this.isPending() ) {
- this.executeAction( action.getAction() );
- }
-};
-
-/**
- * Handle actions change event.
- *
- * @private
- */
-OO.ui.Dialog.prototype.onActionsChange = function () {
- this.detachActions();
- if ( !this.isClosing() ) {
- this.attachActions();
- }
-};
-
-/**
- * Get the set of actions used by the dialog.
- *
- * @return {OO.ui.ActionSet}
- */
-OO.ui.Dialog.prototype.getActions = function () {
- return this.actions;
-};
-
-/**
- * Get a process for taking action.
- *
- * When you override this method, you can create a new OO.ui.Process and return it, or add additional
- * accept steps to the process the parent method provides using the {@link OO.ui.Process#first 'first'}
- * and {@link OO.ui.Process#next 'next'} methods of OO.ui.Process.
- *
- * @abstract
- * @param {string} [action] Symbolic name of action
- * @return {OO.ui.Process} Action process
- */
-OO.ui.Dialog.prototype.getActionProcess = function ( action ) {
- return new OO.ui.Process()
- .next( function () {
- if ( !action ) {
- // An empty action always closes the dialog without data, which should always be
- // safe and make no changes
- this.close();
- }
- }, this );
-};
-
-/**
- * @inheritdoc
- *
- * @param {Object} [data] Dialog opening data
- * @param {jQuery|string|Function|null} [data.title] Dialog title, omit to use
- * the {@link #static-title static title}
- * @param {Object[]} [data.actions] List of configuration options for each
- * {@link OO.ui.ActionWidget action widget}, omit to use {@link #static-actions static actions}.
- */
-OO.ui.Dialog.prototype.getSetupProcess = function ( data ) {
- data = data || {};
-
- // Parent method
- return OO.ui.Dialog.super.prototype.getSetupProcess.call( this, data )
- .next( function () {
- var config = this.constructor.static,
- actions = data.actions !== undefined ? data.actions : config.actions;
-
- this.title.setLabel(
- data.title !== undefined ? data.title : this.constructor.static.title
- );
- this.actions.add( this.getActionWidgets( actions ) );
-
- if ( this.constructor.static.escapable ) {
- this.$document.on( 'keydown', this.onDocumentKeyDownHandler );
- }
- }, this );
-};
-
-/**
- * @inheritdoc
- */
-OO.ui.Dialog.prototype.getTeardownProcess = function ( data ) {
- // Parent method
- return OO.ui.Dialog.super.prototype.getTeardownProcess.call( this, data )
- .first( function () {
- if ( this.constructor.static.escapable ) {
- this.$document.off( 'keydown', this.onDocumentKeyDownHandler );
- }
-
- this.actions.clear();
- this.currentAction = null;
- }, this );
-};
-
-/**
- * @inheritdoc
- */
-OO.ui.Dialog.prototype.initialize = function () {
- // Parent method
- OO.ui.Dialog.super.prototype.initialize.call( this );
-
- // Properties
- this.title = new OO.ui.LabelWidget();
-
- // Initialization
- this.$content.addClass( 'oo-ui-dialog-content' );
- this.setPendingElement( this.$head );
-};
-
-/**
- * Get action widgets from a list of configs
- *
- * @param {Object[]} actions Action widget configs
- * @return {OO.ui.ActionWidget[]} Action widgets
- */
-OO.ui.Dialog.prototype.getActionWidgets = function ( actions ) {
- var i, len, widgets = [];
- for ( i = 0, len = actions.length; i < len; i++ ) {
- widgets.push(
- new OO.ui.ActionWidget( actions[ i ] )
- );
- }
- return widgets;
-};
-
-/**
- * Attach action actions.
- *
- * @protected
- */
-OO.ui.Dialog.prototype.attachActions = function () {
- // Remember the list of potentially attached actions
- this.attachedActions = this.actions.get();
-};
-
-/**
- * Detach action actions.
- *
- * @protected
- * @chainable
- */
-OO.ui.Dialog.prototype.detachActions = function () {
- var i, len;
-
- // Detach all actions that may have been previously attached
- for ( i = 0, len = this.attachedActions.length; i < len; i++ ) {
- this.attachedActions[ i ].$element.detach();
- }
- this.attachedActions = [];
-};
-
-/**
- * Execute an action.
- *
- * @param {string} action Symbolic name of action to execute
- * @return {jQuery.Promise} Promise resolved when action completes, rejected if it fails
- */
-OO.ui.Dialog.prototype.executeAction = function ( action ) {
- this.pushPending();
- this.currentAction = action;
- return this.getActionProcess( action ).execute()
- .always( this.popPending.bind( this ) );
-};