]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - vendor/oojs/oojs-ui/php/layouts/ActionFieldLayout.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / vendor / oojs / oojs-ui / php / layouts / ActionFieldLayout.php
diff --git a/vendor/oojs/oojs-ui/php/layouts/ActionFieldLayout.php b/vendor/oojs/oojs-ui/php/layouts/ActionFieldLayout.php
new file mode 100644 (file)
index 0000000..294a16f
--- /dev/null
@@ -0,0 +1,55 @@
+<?php
+
+namespace OOUI;
+
+/**
+ * Layout made of a field, button and optional label.
+ */
+class ActionFieldLayout extends FieldLayout {
+
+       /**
+        * Button widget to be laid out.
+        *
+        * @var Widget
+        */
+       protected $buttonWidget;
+
+       /**
+        * @param Widget $fieldWidget Field widget
+        * @param ButtonWidget $buttonWidget Field widget
+        * @param array $config Configuration options
+        */
+       public function __construct( $fieldWidget, $buttonWidget = false, array $config = [] ) {
+               // Allow passing positional parameters inside the config array
+               if ( is_array( $fieldWidget ) && isset( $fieldWidget['fieldWidget'] ) ) {
+                       $config = $fieldWidget;
+                       $fieldWidget = $config['fieldWidget'];
+                       $buttonWidget = $config['buttonWidget'];
+               }
+
+               // Parent constructor
+               parent::__construct( $fieldWidget, $config );
+
+               // Properties
+               $this->buttonWidget = $buttonWidget;
+               $this->button = new Tag( 'span' );
+               $this->input = $this->isFieldInline() ? new Tag( 'span' ) : new Tag( 'div' );
+
+               // Initialization
+               $this->addClasses( [ 'oo-ui-actionFieldLayout' ] );
+               $this->button
+                       ->addClasses( [ 'oo-ui-actionFieldLayout-button' ] )
+                       ->appendContent( $this->buttonWidget );
+               $this->input
+                       ->addClasses( [ 'oo-ui-actionFieldLayout-input' ] )
+                       ->appendContent( $this->fieldWidget );
+               $this->field
+                       ->clearContent()
+                       ->appendContent( $this->input, $this->button );
+       }
+
+       public function getConfig( &$config ) {
+               $config['buttonWidget'] = $this->buttonWidget;
+               return parent::getConfig( $config );
+       }
+}