mirror of
https://gerrit.wikimedia.org/r/mediawiki/skins/Vector.git
synced 2024-11-25 08:05:51 +00:00
0e5ef398b2
Now that there is a Link.mustache, I think other components like Button, Link should use the Icon template, and not include icon in the name, as its possible to have a link or button that doesnt use an icon as well. Change-Id: I6d8a17dd956f09bb3df7a2503f55d255599874f8
67 lines
1.6 KiB
PHP
67 lines
1.6 KiB
PHP
<?php
|
|
namespace MediaWiki\Skins\Vector\Components;
|
|
|
|
use Html;
|
|
use Linker;
|
|
use MessageLocalizer;
|
|
|
|
/**
|
|
* VectorComponentLink component
|
|
*/
|
|
class VectorComponentLink implements VectorComponent {
|
|
/** @var MessageLocalizer */
|
|
private $localizer;
|
|
/** @var string */
|
|
private $icon;
|
|
/** @var string */
|
|
private $href;
|
|
/** @var string */
|
|
private $text;
|
|
/** @var string */
|
|
private $accessKeyHint;
|
|
|
|
/**
|
|
* @param string $href
|
|
* @param string $text
|
|
* @param null|string $icon
|
|
* @param null|MessageLocalizer $localizer for generation of tooltip and access keys
|
|
* @param null|string $accessKeyHint will be used to derive HTML attributes such as title, accesskey
|
|
* and aria-label ("$accessKeyHint-label")
|
|
*/
|
|
public function __construct( string $href, string $text, $icon = null, $localizer = null, $accessKeyHint = null ) {
|
|
$this->href = $href;
|
|
$this->text = $text;
|
|
$this->icon = $icon;
|
|
$this->localizer = $localizer;
|
|
$this->accessKeyHint = $accessKeyHint;
|
|
}
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
public function getTemplateData(): array {
|
|
$localizer = $this->localizer;
|
|
$accessKeyHint = $this->accessKeyHint;
|
|
$additionalAttributes = [];
|
|
if ( $localizer ) {
|
|
$msg = $localizer->msg( $accessKeyHint . '-label' );
|
|
if ( $msg->exists() ) {
|
|
$additionalAttributes[ 'aria-label' ] = $msg->text();
|
|
}
|
|
}
|
|
return [
|
|
'icon' => $this->icon,
|
|
'text' => $this->text,
|
|
'href' => $this->href,
|
|
'html-attributes' => $localizer && $accessKeyHint ? Html::expandAttributes(
|
|
Linker::tooltipAndAccesskeyAttribs(
|
|
$accessKeyHint,
|
|
[],
|
|
[],
|
|
$localizer
|
|
) + $additionalAttributes
|
|
) : '',
|
|
];
|
|
}
|
|
}
|