Skip to content

Commit

Permalink
feat (Svg): add additionnal classes option
Browse files Browse the repository at this point in the history
  • Loading branch information
firestar300 committed Jan 15, 2024
1 parent 4a2e0fa commit d520d91
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 9 deletions.
2 changes: 1 addition & 1 deletion config/loaders.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ module.exports = {
{
name: 'addClassesToSVGElement',
params: {
classNames: ['icon', 'icon-[name]'],
classNames: ['icon', '$name'],
},
},
],
Expand Down
10 changes: 6 additions & 4 deletions inc/Helpers/Svg.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,27 +7,29 @@
* @usage BEA\Theme\Framework\Helpers\Svg\get_the_icon( 'like' );
*
* @param string $icon_name
* @param array $additionnal_classes
*
* @return string
*/
function get_the_icon( string $icon_name ): string {
function get_the_icon( string $icon_name, array $additionnal_classes ): string {
/**
* @var Svg $svg
*/
$svg = \BEA\Theme\Framework\Framework::get_container()->get_service( 'svg' );
return false !== $svg ? $svg->get_the_icon( $icon_name ) : '';
return false !== $svg ? $svg->get_the_icon( $icon_name, $additionnal_classes ) : '';
}

/**
* @usage BEA\Theme\Framework\Helpers\Svg\the_icon( 'like' );
*
* @param string $icon_name
* @param array $additionnal_classes
*
*/
function the_icon( string $icon_name ): void {
function the_icon( string $icon_name, array $additionnal_classes ): void {
/**
* @var Svg $svg
*/
$svg = \BEA\Theme\Framework\Framework::get_container()->get_service( 'svg' );
false !== $svg ? $svg->the_icon( $icon_name ) : '';
false !== $svg ? $svg->the_icon( $icon_name, $additionnal_classes ) : '';
}
12 changes: 8 additions & 4 deletions inc/Services/Svg.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,11 @@ public function get_service_name(): string {

/**
* @param string $icon_name
* @param array $additionnal_classes
*
* @return string
*/
public function get_the_icon( string $icon_name ): string {
public function get_the_icon( string $icon_name, array $additionnal_classes = [] ): string {
if ( empty( $icon_name ) ) {
return '';
}
Expand All @@ -48,17 +49,20 @@ public function get_the_icon( string $icon_name ): string {
return '';
}

$classes = implode( ' ', array_map( 'sanitize_html_class', array_merge( [ 'icon-' . $icon_name ], $additionnal_classes ) ) );

$html = file_get_contents( \get_theme_file_path( $icon_path ) ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents

return preg_replace( '/icon-\[name\]/i', 'icon-' . $icon_name, $html );
return preg_replace( '/\$name/i', $classes, $html );
}

/**
* @param string $icon_name
* @param array $additionnal_classes
*
*/
public function the_icon( string $icon_name ): void {
echo $this->get_the_icon( $icon_name ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
public function the_icon( string $icon_name, array $additionnal_classes = [] ): void {
echo $this->get_the_icon( $icon_name, $additionnal_classes ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}

/**
Expand Down

0 comments on commit d520d91

Please # to comment.