%PDF- %PDF-
Direktori : /www/varak.net/wiki.varak.net/vendor/oojs/oojs-ui/php/mixins/ |
Current File : //www/varak.net/wiki.varak.net/vendor/oojs/oojs-ui/php/mixins/TitledElement.php |
<?php namespace OOUI; /** * Element with a title. * * Titles are rendered by the browser and are made visible when hovering the element. Titles are * not visible on touch devices. * * @abstract */ trait TitledElement { /** * Title text. * * @var string */ protected $title = null; /** * @var Element */ protected $titled; /** * @param array $config Configuration options * @param string $config['title'] Title. If not provided, the static property 'title' is used. */ public function initializeTitledElement( array $config = [] ) { // Properties $this->titled = $config['titled'] ?? $this; // Initialization $this->setTitle( $config['title'] ?? null ); $this->registerConfigCallback( function ( &$config ) { if ( $this->title !== null ) { $config['title'] = $this->title; } } ); } /** * Set title. * * @param string|null $title Title text or null for no title * @return $this */ public function setTitle( $title ) { $title = $title !== '' ? $title : null; if ( $this->title !== $title ) { $this->title = $title; $this->updateTitle(); } return $this; } /** * Update the title attribute, in case of changes to title or accessKey. * * @return $this */ protected function updateTitle() { $title = $this->getTitle(); if ( $title !== null ) { // Only if this is an AccessKeyedElement if ( method_exists( $this, 'formatTitleWithAccessKey' ) ) { $title = $this->formatTitleWithAccessKey( $title ); } $this->titled->setAttributes( [ 'title' => $title ] ); } else { $this->titled->removeAttributes( [ 'title' ] ); } return $this; } /** * Get title. * * @return string Title string */ public function getTitle() { return $this->title; } }