N°2847 - Action buttons

This commit is contained in:
Eric
2020-09-25 16:02:18 +02:00
parent 6969e4db1b
commit bfd4ba16d9
22 changed files with 755 additions and 549 deletions

View File

@@ -94,6 +94,8 @@ class Button extends UIBlock
protected $sJsCode;
/** @var string $sOnClickJsCode */
protected $sOnClickJsCode;
/** @var array */
protected $aAdditionalCSSClasses;
/**
* Button constructor.
@@ -127,6 +129,7 @@ class Button extends UIBlock
$this->sJsCode = $sJsCode;
$this->sOnClickJsCode = $sOnClickJsCode;
$this->bIsDisabled = false;
$this->aAdditionalCSSClasses = [];
parent::__construct($sId);
}
@@ -160,7 +163,7 @@ class Button extends UIBlock
/**
* @param string $sType
*
*
* @return $this
*/
public function SetType(string $sType)
@@ -179,7 +182,7 @@ class Button extends UIBlock
/**
* @param string $sName
*
*
* @return $this
*/
public function SetName(string $sName)
@@ -198,7 +201,7 @@ class Button extends UIBlock
/**
* @param string $sValue
*
*
* @return $this
*/
public function SetValue(string $sValue)
@@ -217,7 +220,7 @@ class Button extends UIBlock
/**
* @param string $sTooltip
*
*
* @return $this
*/
public function SetTooltip(string $sTooltip)
@@ -236,7 +239,7 @@ class Button extends UIBlock
/**
* @param string $sIconClass
*
*
* @return $this
*/
public function SetIconClass(string $sIconClass)
@@ -255,7 +258,7 @@ class Button extends UIBlock
/**
* @param string $sActionType
*
*
* @return $this
*/
public function SetActionType(string $sActionType)
@@ -275,7 +278,7 @@ class Button extends UIBlock
/**
* @param string $sColor
*
*
* @return $this
*/
public function SetColor(string $sColor)
@@ -302,6 +305,7 @@ class Button extends UIBlock
$this->bIsDisabled = $bIsDisabled;
return $this;
}
/**
* @return string
*/
@@ -341,4 +345,24 @@ 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;
}
}

View File

@@ -285,4 +285,40 @@ class ButtonFactory
return $oButton;
}
/**
* Make a basis Button component for any purpose
*
* @param string $sLabel
* @param string $sName See Button::$sName
* @param string $sIconClass
* @param string $sURL
* @param string $sTarget
* @param string|null $sId
*
* @return \Combodo\iTop\Application\UI\Component\Button\Button
*/
public static function MakeAlternativeNeutralActionButton(string $sLabel, string $sName, string $sIconClass = '', string $sURL = '', string $sTarget = '', ?string $sId = null): Button
{
$oButton = new Button($sLabel, $sId);
$oButton->SetActionType(Button::ENUM_ACTION_TYPE_ALTERNATIVE)
->SetColor(Button::ENUM_COLOR_NEUTRAL)
->SetName($sName);
if (!empty($sIconClass)) {
$oButton->SetIconClass($sIconClass);
}
if (!empty($sURL)) {
if (empty($sTarget)) {
$sJS = "window.location='{$sURL}';";
} else {
$sJS = "window.open('{$sURL}', '{$sTarget}');";
}
$oButton->SetOnClickJsCode($sJS);
}
return $oButton;
}
}