name = $name; $this->isJSOnly = $isJSOnly; $this->components = []; } /** * @return string */ public function getName() { return $this->name; } /** * Return the CSS classes applied to the Menu element * * @return array */ public function getCSSClasses(): array { $classes = []; if ( $this->isJSOnly ) { $classes[] = 'jsonly'; } return $classes; } /** * @return array */ public function getComponents(): array { return $this->components; } /** * Add a link to the entry. * * An entry can have zero or more links. * * @param string $label * @param string $url * @param string $className Any additional CSS classes that should added to the output, * separated by spaces * @param array $attrs Additional data that can be associated with the component * @param null|string $icon the icon identifier * * @return MenuEntry */ public function addComponent( $label, $url, $className = '', $attrs = [], $icon = null ) { $this->components[] = [ 'text' => $label, 'href' => $url, 'class' => $className, 'icon' => $icon, ] + $attrs; return $this; } }