indicator = isset( $config['indicatorElement'] ) ? $config['indicatorElement'] : new Tag( 'span' ); // Initialization $this->indicator->addClasses( [ 'oo-ui-indicatorElement-indicator' ] ); $this->setIndicator( isset( $config['indicator'] ) ? $config['indicator'] : null ); $this->registerConfigCallback( function ( &$config ) { if ( $this->indicatorName !== null ) { $config['indicator'] = $this->indicatorName; } } ); } /** * Set indicator name. * * @param string|null $indicator Symbolic name of indicator to use or null for no indicator * @return $this */ public function setIndicator( $indicator = null ) { if ( $this->indicatorName !== null ) { $this->indicator->removeClasses( [ 'oo-ui-indicator-' . $this->indicatorName ] ); } if ( $indicator !== null ) { $this->indicator->addClasses( [ 'oo-ui-indicator-' . $indicator ] ); } $this->indicatorName = $indicator; $this->toggleClasses( [ 'oo-ui-indicatorElement' ], (bool)$this->indicatorName ); return $this; } /** * Get indicator name. * * @return string Symbolic name of indicator */ public function getIndicator() { return $this->indicatorName; } /** * Do not use outside of Theme::updateElementClasses * * @protected * @return Tag */ public function getIndicatorElement() { return $this->indicator; } }