name = $name; $this->attributes = [ 'text' => $text, 'href' => $url, 'class' => $className ]; } /** * Create a Single Menu entry with text, icon and active click tracking * * @param string $name Entry identifier * @param string $text Entry label * @param string $url The URL entry points to * @param string $className Optional HTML classes * @return static */ public static function create( $name, $text, $url, $className = '' ) { $entry = new static( $name, $text, $url, $className ); $entry->trackClicks( $name ); $entry->setIcon( $name ); return $entry; } /** * @param string $eventName Should clicks be tracked. To override the tracking code * pass the tracking code as string */ public function trackClicks( $eventName ) { $this->attributes['data-event-name'] = 'menu.' . $eventName; } /** * Set the Menu entry icon * @param string $iconName Icon name * @param string $iconType Icon type */ public function setIcon( $iconName, $iconType = 'before' ) { $this->attributes['class'] .= ' ' . MinervaUI::iconClass( $iconName, $iconType, '' ); } /** * @inheritDoc */ public function getName() { return $this->name; } /** * @inheritDoc */ public function getCSSClasses(): array { return []; } /** * @inheritDoc */ public function getComponents(): array { return [ $this->attributes ]; } }