diff --git a/resources/views/components/accordion/item.blade.php b/resources/views/components/accordion/item.blade.php index 841c6f8..d934de2 100644 --- a/resources/views/components/accordion/item.blade.php +++ b/resources/views/components/accordion/item.blade.php @@ -3,6 +3,8 @@ 'isIsolated' => false, 'icon' => null, 'label' => '', + 'badge' => null, + 'badgeColor' => null, ])
@endif {{ $label }} + + @if (filled($badge)) + + {{ $badge }} + + @endif @svg('heroicon-m-chevron-down','w-4 h-4 duration-200 ease-out') diff --git a/resources/views/forms/accordions.blade.php b/resources/views/forms/accordions.blade.php index c9e5f4d..1aed13e 100644 --- a/resources/views/forms/accordions.blade.php +++ b/resources/views/forms/accordions.blade.php @@ -25,6 +25,8 @@ {{ $accordion }} diff --git a/resources/views/infolists/accordion.blade.php b/resources/views/infolists/accordion.blade.php new file mode 100644 index 0000000..d8b994f --- /dev/null +++ b/resources/views/infolists/accordion.blade.php @@ -0,0 +1,3 @@ +
+ {{ $getChildComponentContainer() }} +
diff --git a/resources/views/infolists/accordions.blade.php b/resources/views/infolists/accordions.blade.php new file mode 100644 index 0000000..1aed13e --- /dev/null +++ b/resources/views/infolists/accordions.blade.php @@ -0,0 +1,36 @@ +
merge([ + 'id' => $getId(), + 'wire:key' => "{$this->getId()}.{$getStatePath()}." . Accordions::class . '.container', + ], escape: false) + ->merge($getExtraAttributes(), escape: false) + ->merge($getExtraAlpineAttributes(), escape: false) + ->class([ + 'rounded-xl bg-white shadow-sm ring-1 ring-gray-950/5 dark:bg-gray-900 dark:ring-white/10', + ]) + }} +> + + @php + $isIsolated = $isIsolated(); + $getActiveAccordion = $getActiveAccordion(); + @endphp + + + @foreach ($getChildComponentContainer()->getComponents() as $accordion) + + {{ $accordion }} + + @endforeach + +
diff --git a/src/Forms/Accordion.php b/src/Forms/Accordion.php index b8940e2..e6103b2 100644 --- a/src/Forms/Accordion.php +++ b/src/Forms/Accordion.php @@ -5,12 +5,14 @@ use Closure; use Filament\Forms\Components\Component; use Filament\Forms\Components\Contracts\CanConcealComponents; +use Filament\Support\Concerns\HasBadge; use Filament\Support\Concerns\HasIcon; use Illuminate\Support\Str; class Accordion extends Component implements CanConcealComponents { use HasIcon; + use HasBadge; protected string $view = 'zeus-accordion::forms.accordion'; @@ -42,11 +44,4 @@ public static function make(string | Closure | null $label = null): static return $static; } - - public function badge(string | Closure | null $badge): static - { - $this->badge = $badge; - - return $this; - } } diff --git a/src/Infolists/Accordion.php b/src/Infolists/Accordion.php new file mode 100644 index 0000000..7bee43d --- /dev/null +++ b/src/Infolists/Accordion.php @@ -0,0 +1,41 @@ +label($label); + $this->id(Str::slug($label)); + } + + public function getId(): string + { + return $this->getContainer()->getParentComponent()->getId() . '-' . parent::getId() . '-accordion'; + } + + public function getColumnsConfig(): array + { + return $this->columns ?? $this->getContainer()->getColumnsConfig(); + } + + public static function make(string | Closure | null $label = null): static + { + $static = app(static::class, ['label' => $label]); + $static->configure(); + + return $static; + } +} diff --git a/src/Infolists/Accordions.php b/src/Infolists/Accordions.php new file mode 100644 index 0000000..6b4eb2c --- /dev/null +++ b/src/Infolists/Accordions.php @@ -0,0 +1,50 @@ +label($label); + } + + public static function make(?string $label = null): static + { + $static = app(static::class, ['label' => $label]); + $static->configure(); + + return $static; + } + + public function activeAccordion(int | Closure $activeAccordion): static + { + $this->activeAccordion = $activeAccordion; + + return $this; + } + + public function getActiveAccordion(): int + { + return $this->evaluate($this->activeAccordion); + } + + public function accordions(array | Closure $accordions): static + { + $this->childComponents($accordions); + + return $this; + } +}