* Defaults to false, which getOOUI will interpret as "use the HTML version"
*
* @param string $value
- * @return OOUI\Widget|false
+ * @return OOUI\\Widget|false
*/
function getInputOOUI( $value ) {
return false;
$fieldType = get_class( $this );
$helpText = $this->getHelpText();
- $field = new OOUI\FieldLayout( $inputField, array(
+ $config = array(
'classes' => array( "mw-htmlform-field-$fieldType", $this->mClass, $errorClass ),
'align' => $this->getLabelAlignOOUI(),
'label' => $this->getLabel(),
'help' => $helpText !== null ? new OOUI\HtmlSnippet( $helpText ) : null,
'infusable' => $infusable,
- ) );
+ );
+ $field = $this->getFieldLayoutOOUI( $inputField, $config );
return $field . $errors;
}
return 'top';
}
+ /**
+ * Get a FieldLayout (or subclass thereof) to wrap this field in when using OOUI output.
+ * @return OOUI\FieldLayout|OOUI\ActionFieldLayout
+ */
+ protected function getFieldLayoutOOUI( $inputField, $config ) {
+ if ( isset( $this->mClassWithButton ) ) {
+ $buttonWidget = $this->mClassWithButton->getInputOOUI( '' );
+ return new OOUI\ActionFieldLayout( $inputField, $buttonWidget, $config );
+ }
+ return new OOUI\FieldLayout( $inputField, $config );
+ }
+
/**
* Get the complete raw fields for the input, including help text,
* labels, and whatever.