4 * Allows custom data specific to HTMLFormField to be set for OOUI forms. A matching JS widget
5 * (defined in htmlform.Element.js) picks up the extra config when constructed using OO.ui.infuse().
7 * Currently only supports passing 'hide-if' data.
9 trait HTMLFormElement
{
11 protected $hideIf = null;
12 protected $modules = null;
14 public function initializeHTMLFormElement( array $config = [] ) {
16 $this->hideIf
= $config['hideIf'] ??
null;
17 $this->modules
= $config['modules'] ??
[];
20 if ( $this->hideIf
) {
21 $this->addClasses( [ 'mw-htmlform-hide-if' ] );
23 if ( $this->modules
) {
24 // JS code must be able to read this before infusing (before OOUI is even loaded),
25 // so we put this in a separate attribute (not with the rest of the config).
26 // And it's not needed anymore after infusing, so we don't put it in JS config at all.
27 $this->setAttributes( [ 'data-mw-modules' => implode( ',', $this->modules
) ] );
29 $this->registerConfigCallback( function ( &$config ) {
30 if ( $this->hideIf
!== null ) {
31 $config['hideIf'] = $this->hideIf
;