diff --git a/sources/application/UI/Base/Component/Button/Button.php b/sources/application/UI/Base/Component/Button/Button.php index 29cfcfe16..b5b1f815a 100644 --- a/sources/application/UI/Base/Component/Button/Button.php +++ b/sources/application/UI/Base/Component/Button/Button.php @@ -94,8 +94,6 @@ class Button extends UIBlock protected $sJsCode; /** @var string $sOnClickJsCode */ protected $sOnClickJsCode; - /** @var array */ - protected $aAdditionalCSSClasses; /** * Button constructor. @@ -131,7 +129,6 @@ class Button extends UIBlock $this->sJsCode = $sJsCode; $this->sOnClickJsCode = $sOnClickJsCode; $this->bIsDisabled = false; - $this->aAdditionalCSSClasses = []; $this->aDataAttributes = ['role' => 'ibo-button']; } @@ -346,24 +343,4 @@ class Button extends UIBlock return $this; } - - /** - * @return string - */ - public function GetAdditionalCSSClass(): string - { - return implode(' ', $this->aAdditionalCSSClasses); - } - - public function AddCSSClasses(string $sCSSClasses): self - { - foreach (explode(' ', $sCSSClasses) as $sCSSClass) { - if (!empty($sCSSClass)) { - $this->aAdditionalCSSClasses[$sCSSClass] = $sCSSClass; - } - } - return $this; - } - - } \ No newline at end of file diff --git a/sources/application/UI/Base/Component/DataTable/StaticTable/FormTable/FormTable.php b/sources/application/UI/Base/Component/DataTable/StaticTable/FormTable/FormTable.php index 0509f29bd..a6a0c0863 100644 --- a/sources/application/UI/Base/Component/DataTable/StaticTable/FormTable/FormTable.php +++ b/sources/application/UI/Base/Component/DataTable/StaticTable/FormTable/FormTable.php @@ -29,9 +29,9 @@ class FormTable extends StaticTable /** @var iUIBlock[] */ private $aRows; - public function __construct(string $sRef, string $sContainerCSSClass = '') + public function __construct(string $sRef, string $sContainerCSSClasses = '') { - parent::__construct($sRef, $sContainerCSSClass); + parent::__construct($sRef, $sContainerCSSClasses); $this->SetRef($sRef); $this->aRows = []; } diff --git a/sources/application/UI/Base/Component/DataTable/StaticTable/StaticTable.php b/sources/application/UI/Base/Component/DataTable/StaticTable/StaticTable.php index fe1b2c4ec..9feb1d5f3 100644 --- a/sources/application/UI/Base/Component/DataTable/StaticTable/StaticTable.php +++ b/sources/application/UI/Base/Component/DataTable/StaticTable/StaticTable.php @@ -51,10 +51,10 @@ class StaticTable extends UIContentBlock * ] */ private $aData; - - public function __construct(string $sId = null, string $sContainerCSSClass = '') + + public function __construct(string $sId = null, string $sContainerCSSClasses = '') { - parent::__construct($sId, $sContainerCSSClass); + parent::__construct($sId, $sContainerCSSClasses); $this->aColumns = []; $this->aData = []; } diff --git a/sources/application/UI/Base/Component/FieldBadge/FieldBadge.php b/sources/application/UI/Base/Component/FieldBadge/FieldBadge.php index 72154a620..6813f50f5 100644 --- a/sources/application/UI/Base/Component/FieldBadge/FieldBadge.php +++ b/sources/application/UI/Base/Component/FieldBadge/FieldBadge.php @@ -19,8 +19,8 @@ class FieldBadge extends UIContentBlock // Overloaded constants public const BLOCK_CODE = 'ibo-field-badge'; - public function __construct(string $sId = null, string $sContainerClass = '') + public function __construct(string $sId = null, string $sContainerClasses = '') { - parent::__construct($sId, $sContainerClass); + parent::__construct($sId, $sContainerClasses); } } \ No newline at end of file diff --git a/sources/application/UI/Base/Component/PopoverMenu/PopoverMenuItem/PopoverMenuItem.php b/sources/application/UI/Base/Component/PopoverMenu/PopoverMenuItem/PopoverMenuItem.php index 56a316c96..765ac30cd 100644 --- a/sources/application/UI/Base/Component/PopoverMenu/PopoverMenuItem/PopoverMenuItem.php +++ b/sources/application/UI/Base/Component/PopoverMenu/PopoverMenuItem/PopoverMenuItem.php @@ -69,13 +69,13 @@ class PopoverMenuItem extends UIBlock } /** - * @see \ApplicationPopupMenuItem::SetCssClasses() - * * @param array $aCssClasses * * @return $this + * @uses oPopupMenuItem + * @uses \ApplicationPopupMenuItem::SetCssClasses() */ - public function SetCssClasses(array $aCssClasses) + public function SetMenuItemCssClasses(array $aCssClasses) { $this->oPopupMenuItem->SetCssClasses($aCssClasses); @@ -83,13 +83,13 @@ class PopoverMenuItem extends UIBlock } /** - * @see \ApplicationPopupMenuItem::AddCssClass() - * * @param string $sCssClass * * @return $this + * @uses oPopupMenuItem + * @uses \ApplicationPopupMenuItem::AddCssClass() */ - public function AddCssClass(string $sCssClass) + public function AddMenuItemCssClass(string $sCssClass) { $this->oPopupMenuItem->AddCssClass($sCssClass); @@ -97,10 +97,11 @@ class PopoverMenuItem extends UIBlock } /** - * @see \ApplicationPopupMenuItem::GetCssClasses() * @return array + * @uses oPopupMenuItem + * @uses \ApplicationPopupMenuItem::GetCssClasses() */ - public function GetCssClasses() + public function GetMenuItemCssClasses(): array { return $this->oPopupMenuItem->GetCssClasses(); } diff --git a/sources/application/UI/Base/Layout/UIContentBlock.php b/sources/application/UI/Base/Layout/UIContentBlock.php index 9238e0f05..84fc37623 100644 --- a/sources/application/UI/Base/Layout/UIContentBlock.php +++ b/sources/application/UI/Base/Layout/UIContentBlock.php @@ -28,8 +28,6 @@ class UIContentBlock extends UIBlock implements iUIContentBlock public const BLOCK_CODE = 'ibo-content-block'; public const DEFAULT_HTML_TEMPLATE_REL_PATH = 'base/layouts/content-block/layout'; - /** @var array */ - protected $aCSSClasses; /** @var array */ protected $aSubBlocks; /** @var array */ @@ -40,15 +38,15 @@ class UIContentBlock extends UIBlock implements iUIContentBlock * Generates a
only if $sContainerClass if not empty or block has data attributes * * @param string|null $sId - * @param string $sContainerClass + * @param string $sContainerClasses list of additional CSS classes, space as separator */ - public function __construct(string $sId = null, string $sContainerClass = '') + public function __construct(string $sId = null, string $sContainerClasses = '') { parent::__construct($sId); $this->aSubBlocks = []; $this->aDeferredBlocks = []; - $this->SetCSSClasses($sContainerClass); + $this->SetCSSClasses($sContainerClasses); } /** @@ -121,43 +119,6 @@ class UIContentBlock extends UIBlock implements iUIContentBlock return $this; } - /** - * @return string - */ - public function GetCSSClasses(): string - { - return implode(' ', $this->aCSSClasses); - } - - /** - * @param string $sCSSClasses - * - * @return UIContentBlock - */ - public function SetCSSClasses(string $sCSSClasses) - { - $this->aCSSClasses = []; - $this->AddCSSClasses($sCSSClasses); - - return $this; - } - - /** - * @param string $sCSSClasses - * - * @return $this - */ - public function AddCSSClasses(string $sCSSClasses) - { - foreach (explode(' ', $sCSSClasses) as $sCSSClass) { - if (!empty($sCSSClass)) { - $this->aCSSClasses[$sCSSClass] = $sCSSClass; - } - } - - return $this; - } - /** * @inheritDoc */ diff --git a/sources/application/UI/Base/UIBlock.php b/sources/application/UI/Base/UIBlock.php index fdc845460..b68f4c1f5 100644 --- a/sources/application/UI/Base/UIBlock.php +++ b/sources/application/UI/Base/UIBlock.php @@ -83,9 +83,11 @@ abstract class UIBlock implements iUIBlock /** @var array */ protected $aCssFilesRelPath; /** @var array Array => which will be output as HTML data-xxx attributes (eg. data-="") */ - protected $aDataAttributes; + protected $aDataAttributes = []; /** @var bool show or hide the current block */ protected $bIsHidden; + /** @var array */ + protected $aAdditionalCSSClasses = []; /** * UIBlock constructor. @@ -103,7 +105,6 @@ abstract class UIBlock implements iUIBlock $this->aJsTemplateRelPath[self::ENUM_JS_TYPE_ON_READY] = static::DEFAULT_JS_ON_READY_TEMPLATE_REL_PATH; $this->sCssTemplateRelPath = static::DEFAULT_CSS_TEMPLATE_REL_PATH; $this->sGlobalTemplateRelPath = static::DEFAULT_GLOBAL_TEMPLATE_REL_PATH; - $this->aDataAttributes = []; $this->bIsHidden = static::DEFAULT_IS_HIDDEN; } @@ -129,6 +130,7 @@ abstract class UIBlock implements iUIBlock if (!in_array($sType, [self::ENUM_JS_TYPE_LIVE, self::ENUM_JS_TYPE_ON_INIT, self::ENUM_JS_TYPE_ON_READY])) { throw new UIException($this, "Type of javascript $sType not supported"); } + return $this->aJsTemplateRelPath[$sType]; } @@ -243,6 +245,7 @@ abstract class UIBlock implements iUIBlock public function AddJsFileRelPath(string $sPath) { $this->aJsFilesRelPath[] = $sPath; + return $this; } @@ -252,6 +255,7 @@ abstract class UIBlock implements iUIBlock public function AddCssFileRelPath(string $sPath) { $this->aCssFilesRelPath[] = $sPath; + return $this; } @@ -299,6 +303,49 @@ abstract class UIBlock implements iUIBlock return $aFiles; } + /** + * @param string $sCSSClasses with space as separator, like ibo-is-hidden ibo-alert--body + * + * @return $this + * + * @use aAdditionalCSSClasses + */ + public function AddCSSClasses(string $sCSSClasses) + { + foreach (explode(' ', $sCSSClasses) as $sCSSClass) { + if (!empty($sCSSClass)) { + $this->aAdditionalCSSClasses[$sCSSClass] = $sCSSClass; + } + } + + return $this; + } + + /** + * Overrides additional classes with the specified value + * + * @param string $sCSSClasses with space as separator, like ibo-is-hidden ibo-alert--body + * + * @return $this + * + * @use aAdditionalCSSClasses + */ + public function SetCSSClasses(string $sCSSClasses) + { + $this->aAdditionalCSSClasses = []; + $this->AddCSSClasses($sCSSClasses); + + return $this; + } + + /** + * @return string + */ + public function GetAdditionalCSSClasses(): string + { + return implode(' ', $this->aAdditionalCSSClasses); + } + /** * Return an array of the URL of the block $sFilesType and its sub blocks. * URL is relative unless the $bAbsoluteUrl is set to true. @@ -343,6 +390,7 @@ abstract class UIBlock implements iUIBlock public function SetDataAttributes(array $aDataAttributes) { $this->aDataAttributes = $aDataAttributes; + return $this; } @@ -356,6 +404,7 @@ abstract class UIBlock implements iUIBlock public function AddDataAttribute(string $sName, string $sValue) { $this->aDataAttributes[$sName] = $sValue; + return $this; } @@ -375,6 +424,7 @@ abstract class UIBlock implements iUIBlock public function SetIsHidden(bool $bIsHidden) { $this->bIsHidden = $bIsHidden; + return $this; } } diff --git a/templates/base/components/alert/layout.html.twig b/templates/base/components/alert/layout.html.twig index 4784fe226..d67d3a224 100644 --- a/templates/base/components/alert/layout.html.twig +++ b/templates/base/components/alert/layout.html.twig @@ -1,5 +1,5 @@
+ class="ibo-alert ibo-is-{{ oUIBlock.GetColor() }}{% if oUIBlock.IsOpenedByDefault() %} ibo-is-opened{% endif %}{% if oUIBlock.IsHidden() %} ibo-is-hidden{% endif %} {{ oUIBlock.GetAdditionalCSSClasses() }}"> {% if oUIBlock.IsCollapsible() %}
diff --git a/templates/base/components/button/layout.html.twig b/templates/base/components/button/layout.html.twig index 153dcb56c..856c334f6 100644 --- a/templates/base/components/button/layout.html.twig +++ b/templates/base/components/button/layout.html.twig @@ -1,5 +1,5 @@