wiki.techinc.nl/includes/widget/SpinnerWidget.php
Umherirrender aed646001c htmlform: Add missing documentation to class properties
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
2024-09-14 11:49:05 +00:00

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 );
}
}
}