mediawiki-skins-Citizen/includes/Components/CitizenComponentMenu.php
alistair3149 03da361b97
feat(components): rewrite template data partials into CitizenComponent components (#846)
- Refactor existing template data-related partials into CitizenComponent components
- Re-implement user menu header as UserInfo
- Add description text for anon and temp user in UserMenu
---------

Co-authored-by: github-actions <github-actions@users.noreply.github.com>
2024-05-15 01:24:43 -04:00

53 lines
954 B
PHP

<?php
declare( strict_types=1 );
namespace MediaWiki\Skins\Citizen\Components;
use Countable;
/**
* CitizenComponentMenu component
*/
class CitizenComponentMenu implements CitizenComponent, Countable {
/** @var array */
private $data;
/**
* @param array $data
*/
public function __construct( array $data ) {
$this->data = $data;
}
/**
* Counts how many items the menu has.
*
* @return int
*/
public function count(): int {
$items = $this->data['array-list-items'] ?? null;
if ( $items ) {
return count( $items );
}
$htmlItems = $this->data['html-items'] ?? '';
return substr_count( $htmlItems, '<li' );
}
/**
* @inheritDoc
*/
public function getTemplateData(): array {
return $this->data + [
'class' => '',
'label' => '',
'html-tooltip' => '',
'label-class' => '',
'html-before-portal' => '',
'html-items' => '',
'html-after-portal' => '',
'array-list-items' => null,
];
}
}