0 follower

Final Class Yiisoft\Bootstrap5\ProgressStack

InheritanceYiisoft\Bootstrap5\ProgressStack » Yiisoft\Widget\Widget

The progress stack component allows you to stack multiple progress bars on top of each other.

For example,

echo ProgressStack::widget()
   ->bars(
       Progress::widget()
           ->ariaLabel('Segment one')
           ->id('segment-one')
           ->percent(15),
       Progress::widget()
           ->ariaLabel('Segment two')
           ->backGroundColor(BackgroundColor::SUCCESS)
           ->id('segment-two')
           ->percent(30),
       Progress::widget()
           ->ariaLabel('Segment three')
           ->backGroundColor(BackgroundColor::INFO)
           ->id('segment-three')
           ->percent(20),
   )
   ->render();

See also https://getbootstrap.com/docs/5.3/components/progress/#multiple-bars.

Public Methods

Hide inherited methods

Method Description Defined By
addAttributes() Adds a set of attributes. Yiisoft\Bootstrap5\ProgressStack
addClass() Adds one or more CSS classes to the existing classes. Yiisoft\Bootstrap5\ProgressStack
addCssStyle() Adds a CSS style. Yiisoft\Bootstrap5\ProgressStack
attribute() Sets attribute value. Yiisoft\Bootstrap5\ProgressStack
attributes() Sets the HTML attributes. Yiisoft\Bootstrap5\ProgressStack
bars() Sets the progress bars to be displayed. Yiisoft\Bootstrap5\ProgressStack
class() Replaces all existing CSS classes with the specified one(s). Yiisoft\Bootstrap5\ProgressStack
id() Sets the ID. Yiisoft\Bootstrap5\ProgressStack
render() Run the widget. Yiisoft\Bootstrap5\ProgressStack

Constants

Hide inherited constants

Constant Value Description Defined By
NAME 'progress-stack' Yiisoft\Bootstrap5\ProgressStack
PROGRESS_STACKED 'progress-stacked' Yiisoft\Bootstrap5\ProgressStack

Method Details

Hide inherited methods

addAttributes() public method

Adds a set of attributes.

public self addAttributes ( array $attributes )
$attributes array

Attribute values indexed by attribute names. for example, ['id' => 'my-id'].

return self

A new instance with the specified attributes added.

Example usage: `php $progressStack->addAttributes(['data-id' => '123']); `

                public function addAttributes(array $attributes): self
{
    $new = clone $this;
    $new->attributes = [...$this->attributes, ...$attributes];
    return $new;
}

            
addClass() public method

Adds one or more CSS classes to the existing classes.

public self addClass ( \BackedEnum|string|null $class )
$class \BackedEnum|string|null

One or more CSS class names to add. Pass null to skip adding a class.

return self

A new instance with the specified CSS classes added to existing ones.

                public function addClass(BackedEnum|string|null ...$class): self
{
    $new = clone $this;
    $new->cssClasses = [...$this->cssClasses, ...$class];
    return $new;
}

            
addCssStyle() public method

Adds a CSS style.

public self addCssStyle ( array|string $style, boolean $overwrite true )
$style array|string

The CSS style. If the value is an array, a space will separate the values. For example, ['color' => 'red', 'font-weight' => 'bold'] will be rendered as color: red; font-weight: bold;. If it is a string, it will be added as is, for example, color: red.

$overwrite boolean

Whether to overwrite existing styles with the same name. If false, the new value will be appended to the existing one.

return self

A new instance with the specified CSS style value added.

Example usage: `php $progressStack->addCssStyle('color: red');

// or $progressStack->addCssStyle(['color' => 'red', 'font-weight' => 'bold']); `

                public function addCssStyle(array|string $style, bool $overwrite = true): self
{
    $new = clone $this;
    Html::addCssStyle($new->attributes, $style, $overwrite);
    return $new;
}

            
attribute() public method

Sets attribute value.

public self attribute ( string $name, mixed $value )
$name string

The attribute name.

$value mixed

The attribute value.

return self

A new instance with the specified attribute set.

Example usage: `php $progressStack->attribute('data-id', '123'); `

                public function attribute(string $name, mixed $value): self
{
    $new = clone $this;
    $new->attributes[$name] = $value;
    return $new;
}

            
attributes() public method

Sets the HTML attributes.

public self attributes ( array $attributes )
$attributes array

Attribute values indexed by attribute names.

return self

A new instance with the specified attributes.

                public function attributes(array $attributes): self
{
    $new = clone $this;
    $new->attributes = $attributes;
    return $new;
}

            
bars() public method

Sets the progress bars to be displayed.

public self bars ( Yiisoft\Bootstrap5\Progress $bars )
$bars Yiisoft\Bootstrap5\Progress

One or more Progress instances to include in the stack.

return self

A new instance with the specified bars.

Example usage: `php $progressStack->bars(

Progress::widget()->percent(15)->backgroundColor(BackgroundColor::SUCCESS),
Progress::widget()->percent(30)->backgroundColor(BackgroundColor::INFO)

); `

                public function bars(Progress ...$bars): self
{
    $new = clone $this;
    $new->bars = $bars;
    return $new;
}

            
class() public method

Replaces all existing CSS classes with the specified one(s).

public self class ( \BackedEnum|string|null $class )
$class \BackedEnum|string|null

One or more CSS class names to set. Pass null to skip setting a class.

return self

A new instance with the specified CSS classes set.

Example usage: `php $progressStack->class('custom-class', null, 'another-class', BackGroundColor::PRIMARY); `

                public function class(BackedEnum|string|null ...$class): self
{
    $new = clone $this;
    $new->cssClasses = $class;
    return $new;
}

            
id() public method

Sets the ID.

public self id ( boolean|string $id )
$id boolean|string

The ID of the component. If true, an ID will be generated automatically.

return self

A new instance with the specified ID.

Example usage: `php $progressStack->id('my-id'); `

                public function id(bool|string $id): self
{
    $new = clone $this;
    $new->id = $id;
    return $new;
}

            
render() public method

Run the widget.

public string render ( )
return string

The HTML representation of the element.

                public function render(): string
{
    if ($this->bars === []) {
        return '';
    }
    $attributes = $this->attributes;
    $content = '';
    $classes = $attributes['class'] ?? null;
    unset($attributes['class']);
    foreach ($this->bars as $bar) {
        $content .= $bar->stacked()->render() . "\n";
    }
    return Div::tag()
        ->attributes($attributes)
        ->addClass(
            self::PROGRESS_STACKED,
            ...$this->cssClasses,
        )
        ->addClass($classes)
        ->content(
            "\n",
            $content,
        )
        ->encode(false)
        ->id($this->getId())
        ->render();
}