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
73 lines
1.5 KiB
PHP
73 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace MediaWiki\Widget;
|
|
|
|
use Exception;
|
|
use MediaWiki\Html\Html;
|
|
use Stringable;
|
|
|
|
/**
|
|
* PHP version of jquery.spinner.
|
|
*
|
|
* If used with jquery.spinner.styles, can be used to show a
|
|
* spinner before JavaScript has loaded.
|
|
*
|
|
* @copyright 2011-2020 MediaWiki Widgets Team and others; see AUTHORS.txt
|
|
* @license MIT
|
|
*/
|
|
class SpinnerWidget implements Stringable {
|
|
|
|
/** @var array */
|
|
private $attributes;
|
|
/** @var string */
|
|
private $content;
|
|
|
|
/**
|
|
* @param array $config Configuration options
|
|
*/
|
|
public function __construct( array $config = [] ) {
|
|
$size = $config['size'] ?? 'small';
|
|
$type = $config['type'] ?? 'inline';
|
|
|
|
$this->attributes = [];
|
|
|
|
if ( isset( $config['id'] ) ) {
|
|
$this->attributes['id'] = $config['id'];
|
|
}
|
|
|
|
// Initialization
|
|
$this->attributes['class'] = [
|
|
'mw-spinner',
|
|
$size === 'small' ? 'mw-spinner-small' : 'mw-spinner-large',
|
|
$type === 'inline' ? 'mw-spinner-inline' : 'mw-spinner-block',
|
|
];
|
|
|
|
$this->content =
|
|
'<div class="mw-spinner-container">' .
|
|
str_repeat( '<div></div>', 12 ) .
|
|
'</div>';
|
|
}
|
|
|
|
/**
|
|
* Render element into HTML.
|
|
* @return string HTML serialization
|
|
*/
|
|
public function toString() {
|
|
return Html::rawElement( 'div', $this->attributes, $this->content );
|
|
}
|
|
|
|
/**
|
|
* Magic method implementation.
|
|
*
|
|
* Copied from OOUI\Tag
|
|
*
|
|
* @return string
|
|
*/
|
|
public function __toString() {
|
|
try {
|
|
return $this->toString();
|
|
} catch ( Exception $ex ) {
|
|
trigger_error( (string)$ex, E_USER_ERROR );
|
|
}
|
|
}
|
|
}
|