forked from eatvio/eatvio-infra
41 lines
1.3 KiB
PHP
41 lines
1.3 KiB
PHP
<?php
|
||
|
||
namespace App\Livewire\Plan;
|
||
|
||
use App\Models\Plan;
|
||
use Livewire\Component;
|
||
|
||
class Accordion extends Component
|
||
{
|
||
public Plan $plan;
|
||
public $accordionState = ['options1' => false, 'options2' => false, 'options3' => false];
|
||
public $options1;
|
||
public $options2;
|
||
public $options3;
|
||
|
||
public function mount(Plan $plan): void
|
||
{
|
||
$this->plan = $plan;
|
||
$this->options1 = $plan->packet1_options;
|
||
$this->options2 = $plan->packet2_options;
|
||
$this->options3 = $plan->packet3_options;
|
||
|
||
}
|
||
|
||
public function render()
|
||
{
|
||
return view('livewire.plan.accordion');
|
||
}
|
||
|
||
public function toggleAccordionState($optionName)
|
||
{
|
||
$this->accordionState[$optionName] = !$this->accordionState[$optionName];
|
||
|
||
|
||
// 1. Если у нас 1 true все остальные делать false(чтобы закрывать остальные вкладки у которых не true)
|
||
// a. у нас есть ключ у которого будет true
|
||
// b. проходим по всем ключам accordionState и все кроме true делаем false
|
||
array_map(fn($key) => $key === $optionName ?: $this->accordionState[$key] = false, array_keys($this->accordionState));
|
||
}
|
||
}
|