Skip to content

Commit

Permalink
Added activeAccordion method to Accordion.php (#2939)
Browse files Browse the repository at this point in the history
* Added activeAccordion method to Accordion.php

* Change activeAccordion method to Accordion.php

* Fixed method

* change open() method
  • Loading branch information
bald-cat authored Jan 24, 2025
1 parent d7e24a9 commit aa91eb4
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 7 deletions.
14 changes: 7 additions & 7 deletions resources/views/layouts/accordion.blade.php
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
<div id="accordion-{{$templateSlug}}" class="accordion mb-3">
@foreach($manyForms as $name => $forms)
<div class="accordion-heading @if ($loop->index) collapsed @endif"
<div class="accordion-heading @if (!in_array($name, $open)) collapsed @endif"
id="heading-{{\Illuminate\Support\Str::slug($name)}}"
data-bs-toggle="collapse"
data-bs-target="#collapse-{{\Illuminate\Support\Str::slug($name)}}"
aria-expanded="true"
aria-expanded="{{ in_array($name, $open) ? 'true' : 'false' }}"
aria-controls="collapse-{{\Illuminate\Support\Str::slug($name)}}">
<h6 class="btn btn-link btn-group-justified pt-2 pb-2 mb-0 pe-0 ps-0 d-flex align-items-center">
<x-orchid-icon path="bs.chevron-right" class="small me-2"/> {!! $name !!}
</h6>
</div>

<div id="collapse-{{\Illuminate\Support\Str::slug($name)}}"
class="mt-2 collapse @if (!$loop->index) show @endif"
class="mt-2 collapse @if (in_array($name, $open)) show @endif"
aria-labelledby="heading-{{\Illuminate\Support\Str::slug($name)}}"
@if (!$stayOpen)
data-bs-parent="#accordion-{{$templateSlug}}"
@endif
@endif
>
@foreach($forms as $form)
{!! $form !!}
@endforeach
@foreach($forms as $form)
{!! $form !!}
@endforeach
</div>
@endforeach
</div>
18 changes: 18 additions & 0 deletions src/Screen/Layouts/Accordion.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace Orchid\Screen\Layouts;

use Illuminate\Support\Arr;
use Orchid\Screen\Layout;
use Orchid\Screen\Repository;

Expand All @@ -22,6 +23,7 @@ abstract class Accordion extends Layout
*/
protected $variables = [
'stayOpen' => false,
'open' => [],
];

/**
Expand All @@ -32,6 +34,7 @@ abstract class Accordion extends Layout
public function __construct(array $layouts = [])
{
$this->layouts = $layouts;
$this->variables['open'] = [array_key_first($this->layouts)];
}

/**
Expand All @@ -55,4 +58,19 @@ public function stayOpen(bool $stayOpen = true): self

return $this;
}

/**
* Set active accordion(s).
*
* @param string|array $activeAccordion
*
* @return $this
*/
public function open(string|array $activeAccordion): self
{
$this->variables['open'] = Arr::wrap($activeAccordion);

return $this;
}

}

0 comments on commit aa91eb4

Please sign in to comment.