mParams['size'] ) ? $this->mParams['size'] : 45;
}
function getSpellCheck() {
$val = isset( $this->mParams['spellcheck'] ) ? $this->mParams['spellcheck'] : null;
if ( is_bool( $val ) ) {
// "spellcheck" attribute literally requires "true" or "false" to work.
return $val === true ? 'true' : 'false';
}
return null;
}
function getInputHTML( $value ) {
$attribs = array(
'id' => $this->mID,
'name' => $this->mName,
'size' => $this->getSize(),
'value' => $value,
'dir' => $this->mDir,
'spellcheck' => $this->getSpellCheck(),
) + $this->getTooltipAndAccessKey();
if ( $this->mClass !== '' ) {
$attribs['class'] = $this->mClass;
}
# @todo Enforce pattern, step, required, readonly on the server side as
# well
$allowedParams = array(
'type',
'min',
'max',
'pattern',
'title',
'step',
'placeholder',
'list',
'maxlength',
'tabindex',
'disabled',
'required',
'autofocus',
'multiple',
'readonly'
);
$attribs += $this->getAttributes( $allowedParams );
# Extract 'type'
$type = $this->getType( $attribs );
return Html::input( $this->mName, $value, $type, $attribs );
}
protected function getType( &$attribs ) {
$type = isset( $attribs['type'] ) ? $attribs['type'] : 'text';
unset( $attribs['type'] );
# Implement tiny differences between some field variants
# here, rather than creating a new class for each one which
# is essentially just a clone of this one.
if ( isset( $this->mParams['type'] ) ) {
switch ( $this->mParams['type'] ) {
case 'int':
$type = 'number';
break;
case 'float':
$type = 'number';
$attribs['step'] = 'any';
break;
# Pass through
case 'email':
case 'password':
case 'file':
case 'url':
$type = $this->mParams['type'];
break;
}
}
return $type;
}
function getInputOOUI( $value ) {
$attribs = $this->getTooltipAndAccessKey();
if ( $this->mClass !== '' ) {
$attribs['classes'] = array( $this->mClass );
}
# @todo Enforce pattern, step, required, readonly on the server side as
# well
$allowedParams = array(
'autofocus',
'autosize',
'disabled',
'flags',
'indicator',
'maxlength',
'placeholder',
'readonly',
'required',
'tabindex',
'type',
);
$attribs += $this->getAttributes( $allowedParams, array(
'maxlength' => 'maxLength',
'readonly' => 'readOnly',
'tabindex' => 'tabIndex',
) );
$type = $this->getType( $attribs );
return $this->getInputWidget( array(
'id' => $this->mID,
'name' => $this->mName,
'value' => $value,
'type' => $type,
) + $attribs );
}
protected function getInputWidget( $params ) {
return new OOUI\TextInputWidget( $params );
}
}