Source of file IconHelper.php

Size: 4,060 Bytes - Last Modified: 2023-11-16T22:56:02+01:00

/home/websites/teicee/packagist/site/phpdoc/conf/../vendor/teicee/core-bundle/src/Util/IconHelper.php

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
<?php
namespace TIC\CoreBundle\Util;

/**
 * Méthodes statiques utilitaires pour la génération d'icones (Bootstrap-Icons ou Font-Awesome).
 */
class IconHelper
{

	/**
	 * This class should not be instantiated.
	 */
	private function __construct()
	{
	}

	/**
	 * Alias pour les classes de Bootstrap-Icons
	 *
	 * @param   string  $name
	 * @return  string
	 */
	public static function biName(string $name): string
	{
		if ($name === null || $name == '') return '';
		if (\substr($name, 0, 3) === 'bi-') return $name;
		switch ($name) {
			case 'list'   : return 'bi-list';
			case 'next'   : return 'bi-chevron-right';
			case 'prev'   :
			case 'back'   : return 'bi-chevron-left';
			case 'show'   :
			case 'view'   : return 'bi-eye';
			case 'create' :
			case 'new'    : return 'bi-plus-circle-fill';
			case 'update' :
			case 'edit'   : return 'bi-pencil-square';
			case 'close'  : return 'bi-x-circle-fill';
			case 'submit' : return 'bi-check-circle-fill';
			case 'enable' : return 'bi-check-circle';
			case 'disable': return 'bi-slash-circle';
			case 'reset'  :
			case 'undo'   : return 'bi-arrow-counterclockwise';
			case 'refresh':
			case 'redo'   : return 'bi-arrow-clockwise';
			case 'export' : return 'bi-cloud-download';
			case 'import' : return 'bi-cloud-upload';
			case 'login'  : return 'bi-box-arrow-in-right';
			case 'logged' : return 'bi-person-circle';
			case 'home'   : return 'bi-house-door-fill';
			case 'mail'   : return 'bi-envelope';
		}
		return 'bi-' . $name;
	}

	/**
	 * Alias pour les classes de Font-Awesome
	 *
	 * @param   string  $name
	 * @return  string
	 */
	public static function faName(string $name): string
	{
		if ($name === null || $name == '') return '';
		if (\substr($name, 0, 2) === 'fa')  return $name;
		switch ($name) {
			case 'list'   : return 'fas-list';
			case 'next'   : return 'fas-chevron-right';
			case 'prev'   :
			case 'back'   : return 'fas-chevron-left';
			case 'show'   :
			case 'view'   : return 'fas-eye';
			case 'create' :
			case 'new'    : return 'fas-plus-circle';
			case 'update' :
			case 'edit'   : return 'fas-edit';
			case 'close'  : return 'fas-circle-xmark';
			case 'submit' : return 'fas-check-circle';
			case 'enable' : return 'far-check-circle';
			case 'disable': return 'fas-ban';
			case 'reset'  :
			case 'undo'   : return 'far-rotate-left';
			case 'refresh':
			case 'redo'   : return 'far-rotate-right';
			case 'export' : return 'far-cloud-arrow-down';
			case 'import' : return 'far-cloud-arrow-up';
			case 'login'  : return 'fas-right-to-bracket';
			case 'logged' : return 'far-circle-user';
			case 'home'   : return 'far-house';
			case 'mail'   : return 'fas-envelope';
		}
		return 'fa-' . $name;
	}

	/**
	 * Génération d'un tag HTML pour afficher un icone Bootstrap-Icons (avec quelques alias utiles).
	 *
	 * @param   string  $name       Nom de l'icone (classe 'bi-###' ou juste '###' ou alias)
	 * @param   string  $class      Classe(s) à ajouer au tag HTML de l'icone
	 * @return  string              Balise HTML pour l'affichage de l'icone
	 */
	public static function biTag(string $name, string $class=''): string
	{
		$name = self::biName($name);
		if (\preg_match('/^(bi)-([a-z\-]*)$/', $name, $m)) return \sprintf(
			'<i class="tic-icon bi bi-%1$s %2$s" aria-hidden="true" aria-label="%1$s" role="img"></i>',
			$m[2], $class
		);
		return '';
	}

	/**
	 * Génération d'un tag HTML pour afficher un icone Font-Awesome (avec quelques alias utiles).
	 *
	 * @param   string  $name       Nom de l'icone (classe 'fa#-###' ou juste '###' ou alias)
	 * @param   string  $class      Classe(s) à ajouer au tag HTML de l'icone
	 * @return  string              Balise HTML pour l'affichage de l'icone
	 */
	public static function faTag(string $name, string $class=''): string
	{
		$name = self::faName($name);
		if (\preg_match('/^(fa[srlb]?)-(.*)$/', $name, $m)) return \sprintf(
			'<i class="tic-icon %1$s fa-%2$s %3$s" aria-hidden="true" aria-label="%2$s" role="img"></i>',
			$m[1], $m[2], $class
		);
		return '';
	}

}