button = $target; // Initialization $this->addClasses( [ 'oo-ui-buttonElement' ] ); $this->button->addClasses( [ 'oo-ui-buttonElement-button' ] ); $this->toggleFramed( isset( $config['framed'] ) ? $config['framed'] : true ); // Add `role="button"` on `` elements, where it's needed if ( strtolower( $this->button->getTag() ) === 'a' ) { $this->button->setAttributes( [ 'role' => 'button', ] ); } $this->registerConfigCallback( function ( &$config ) { if ( $this->framed !== true ) { $config['framed'] = $this->framed; } } ); } /** * Toggle frame. * * @param bool $framed Make button framed, omit to toggle * @return $this */ public function toggleFramed( $framed = null ) { $this->framed = $framed !== null ? !!$framed : !$this->framed; $this->toggleClasses( [ 'oo-ui-buttonElement-framed' ], $this->framed ); $this->toggleClasses( [ 'oo-ui-buttonElement-frameless' ], !$this->framed ); return $this; } /** * Check if button has a frame. * * @return bool Button is framed */ public function isFramed() { return $this->framed; } }