From 34872197a33641bd1bd109e7e6836c52ef460831 Mon Sep 17 00:00:00 2001 From: bald-cat Date: Wed, 22 Jan 2025 14:26:23 +0200 Subject: [PATCH 1/4] Added activeAccordion method to Accordion.php --- resources/views/layouts/accordion.blade.php | 14 +++++++------- src/Screen/Layouts/Accordion.php | 14 ++++++++++++++ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/resources/views/layouts/accordion.blade.php b/resources/views/layouts/accordion.blade.php index 51c8b5ec3..23e94efcb 100644 --- a/resources/views/layouts/accordion.blade.php +++ b/resources/views/layouts/accordion.blade.php @@ -1,10 +1,10 @@
@foreach($manyForms as $name => $forms) -
- @foreach($forms as $form) - {!! $form !!} - @endforeach + @foreach($forms as $form) + {!! $form !!} + @endforeach
@endforeach
diff --git a/src/Screen/Layouts/Accordion.php b/src/Screen/Layouts/Accordion.php index 2263924c1..759a76c5c 100644 --- a/src/Screen/Layouts/Accordion.php +++ b/src/Screen/Layouts/Accordion.php @@ -55,4 +55,18 @@ public function stayOpen(bool $stayOpen = true): self return $this; } + + /** + * Specifies the accordion that should be opened by default. + * + * @param string $activeAccordion + * + * @return $this + */ + public function activeAccordion(string $activeAccordion): self + { + $this->variables['activeAccordion'] = $activeAccordion; + + return $this; + } } From 6bb278d1f0106ffa58ce2ed7bc18acfc829b73fb Mon Sep 17 00:00:00 2001 From: bald-cat Date: Thu, 23 Jan 2025 10:05:39 +0200 Subject: [PATCH 2/4] Change activeAccordion method to Accordion.php --- resources/views/layouts/accordion.blade.php | 6 +++--- src/Screen/Layouts/Accordion.php | 21 +++++++++++++++++---- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/resources/views/layouts/accordion.blade.php b/resources/views/layouts/accordion.blade.php index 23e94efcb..a8791bc75 100644 --- a/resources/views/layouts/accordion.blade.php +++ b/resources/views/layouts/accordion.blade.php @@ -1,10 +1,10 @@
@foreach($manyForms as $name => $forms) -
false, + 'open' => [], ]; /** @@ -32,6 +39,7 @@ abstract class Accordion extends Layout public function __construct(array $layouts = []) { $this->layouts = $layouts; + $this->variables['open'] = [array_key_first($this->layouts)]; } /** @@ -57,16 +65,21 @@ public function stayOpen(bool $stayOpen = true): self } /** - * Specifies the accordion that should be opened by default. + * Set active accordion(s). * - * @param string $activeAccordion + * @param string|array $activeAccordion * * @return $this */ - public function activeAccordion(string $activeAccordion): self + public function activeAccordion(string|array $activeAccordion): self { - $this->variables['activeAccordion'] = $activeAccordion; + $this->variables['open'] = $this->openSet + ? array_merge($this->variables['open'], Arr::wrap($activeAccordion)) + : $activeAccordion; + + $this->openSet = true; return $this; } + } From e5c2c36cfb7589ff55050f8fa4d02a948e9c932f Mon Sep 17 00:00:00 2001 From: bald-cat Date: Thu, 23 Jan 2025 13:31:49 +0200 Subject: [PATCH 3/4] Fixed method --- src/Screen/Layouts/Accordion.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Screen/Layouts/Accordion.php b/src/Screen/Layouts/Accordion.php index 07b992824..78787fe6d 100644 --- a/src/Screen/Layouts/Accordion.php +++ b/src/Screen/Layouts/Accordion.php @@ -71,10 +71,12 @@ public function stayOpen(bool $stayOpen = true): self * * @return $this */ - public function activeAccordion(string|array $activeAccordion): self + public function open(string|array $activeAccordion): self { + $activeAccordion = Arr::wrap($activeAccordion); + $this->variables['open'] = $this->openSet - ? array_merge($this->variables['open'], Arr::wrap($activeAccordion)) + ? array_merge($this->variables['open'], $activeAccordion) : $activeAccordion; $this->openSet = true; From 153b971c3a9b63afb7d6d1cf1829851326a2dee2 Mon Sep 17 00:00:00 2001 From: bald-cat Date: Fri, 24 Jan 2025 14:08:14 +0200 Subject: [PATCH 4/4] change open() method --- src/Screen/Layouts/Accordion.php | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/Screen/Layouts/Accordion.php b/src/Screen/Layouts/Accordion.php index 78787fe6d..952bf4b1f 100644 --- a/src/Screen/Layouts/Accordion.php +++ b/src/Screen/Layouts/Accordion.php @@ -18,11 +18,6 @@ abstract class Accordion extends Layout */ protected $template = 'platform::layouts.accordion'; - /** - * @var bool - */ - private $openSet = false; - /** * @var array */ @@ -73,13 +68,7 @@ public function stayOpen(bool $stayOpen = true): self */ public function open(string|array $activeAccordion): self { - $activeAccordion = Arr::wrap($activeAccordion); - - $this->variables['open'] = $this->openSet - ? array_merge($this->variables['open'], $activeAccordion) - : $activeAccordion; - - $this->openSet = true; + $this->variables['open'] = Arr::wrap($activeAccordion); return $this; }