Add doc-typehints to class properties found by the PropertyDocumentation sniff to improve the documentation. Once the sniff is enabled it avoids that new code is missing type declarations. This is focused on documentation and does not change code. Change-Id: I1f306a3925d6768209a06e70082598b2f70cd319
78 lines
2 KiB
PHP
78 lines
2 KiB
PHP
<?php
|
|
|
|
namespace MediaWiki\Widget;
|
|
|
|
use InvalidArgumentException;
|
|
use OOUI\InputWidget;
|
|
use OOUI\Tag;
|
|
|
|
/**
|
|
* Date-time input widget.
|
|
*
|
|
* @copyright 2016 MediaWiki Widgets Team and others; see AUTHORS.txt
|
|
* @license MIT
|
|
*/
|
|
class DateTimeInputWidget extends InputWidget {
|
|
|
|
/** @var string|null */
|
|
protected $type = null;
|
|
/** @var string|null */
|
|
protected $min = null;
|
|
/** @var string|null */
|
|
protected $max = null;
|
|
/** @var bool|null */
|
|
protected $clearable = null;
|
|
|
|
/**
|
|
* @param array $config Configuration options
|
|
* - string $config['type'] 'date', 'time', or 'datetime'
|
|
* - string $config['min'] Minimum date, time, or datetime
|
|
* - string $config['max'] Maximum date, time, or datetime
|
|
* - bool $config['clearable'] Whether to provide for blanking the value.
|
|
*/
|
|
public function __construct( array $config = [] ) {
|
|
// We need $this->type set before calling the parent constructor
|
|
if ( !isset( $config['type'] ) ) {
|
|
throw new InvalidArgumentException( '$config[\'type\'] must be specified' );
|
|
}
|
|
$this->type = $config['type'];
|
|
|
|
parent::__construct( $config );
|
|
|
|
// Properties, which are ignored in PHP and just shipped back to JS
|
|
if ( isset( $config['min'] ) ) {
|
|
$this->min = $config['min'];
|
|
}
|
|
if ( isset( $config['max'] ) ) {
|
|
$this->max = $config['max'];
|
|
}
|
|
if ( isset( $config['clearable'] ) ) {
|
|
$this->clearable = $config['clearable'];
|
|
}
|
|
|
|
// Initialization
|
|
$this->addClasses( [ 'mw-widgets-datetime-dateTimeInputWidget' ] );
|
|
}
|
|
|
|
protected function getJavaScriptClassName() {
|
|
return 'mw.widgets.datetime.DateTimeInputWidget';
|
|
}
|
|
|
|
public function getConfig( &$config ) {
|
|
$config['type'] = $this->type;
|
|
if ( $this->min !== null ) {
|
|
$config['min'] = $this->min;
|
|
}
|
|
if ( $this->max !== null ) {
|
|
$config['max'] = $this->max;
|
|
}
|
|
if ( $this->clearable !== null ) {
|
|
$config['clearable'] = $this->clearable;
|
|
}
|
|
return parent::getConfig( $config );
|
|
}
|
|
|
|
protected function getInputElement( $config ) {
|
|
return ( new Tag( 'input' ) )->setAttributes( [ 'type' => $this->type ] );
|
|
}
|
|
}
|