item.blade.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. @php
  2. use Filament\Support\Enums\IconPosition;
  3. @endphp
  4. @props([
  5. 'active' => false,
  6. 'alpineActive' => null,
  7. 'badge' => null,
  8. 'badgeColor' => null,
  9. 'badgeTooltip' => null,
  10. 'badgeIcon' => null,
  11. 'badgeIconPosition' => IconPosition::Before,
  12. 'href' => null,
  13. 'icon' => null,
  14. 'iconColor' => 'gray',
  15. 'iconPosition' => IconPosition::Before,
  16. 'spaMode' => null,
  17. 'tag' => 'button',
  18. 'target' => null,
  19. 'type' => 'button',
  20. ])
  21. @php
  22. if (! $iconPosition instanceof IconPosition) {
  23. $iconPosition = filled($iconPosition) ? (IconPosition::tryFrom($iconPosition) ?? $iconPosition) : null;
  24. }
  25. $hasAlpineActiveClasses = filled($alpineActive);
  26. @endphp
  27. <{{ $tag }}
  28. @if ($tag === 'button')
  29. type="{{ $type }}"
  30. @elseif ($tag === 'a')
  31. {{ \Filament\Support\generate_href_html($href, $target === '_blank', $spaMode) }}
  32. @endif
  33. @if ($hasAlpineActiveClasses)
  34. x-bind:class="{
  35. 'fi-active': {{ $alpineActive }},
  36. }"
  37. @endif
  38. {{
  39. $attributes
  40. ->merge([
  41. 'aria-selected' => $active,
  42. 'role' => 'tab',
  43. ])
  44. ->class([
  45. 'fi-tabs-item',
  46. 'fi-active' => (! $hasAlpineActiveClasses) && $active,
  47. ])
  48. }}
  49. >
  50. @if ($icon && $iconPosition === IconPosition::Before)
  51. {{ \Filament\Support\generate_icon_html($icon) }}
  52. @endif
  53. <span class="fi-tabs-item-label">
  54. {{ $slot }}
  55. </span>
  56. @if ($icon && $iconPosition === IconPosition::After)
  57. {{ \Filament\Support\generate_icon_html($icon) }}
  58. @endif
  59. @if (filled($badge))
  60. @if ($badge instanceof \Illuminate\View\ComponentSlot)
  61. {{ $badge }}
  62. @else
  63. <x-filament::badge
  64. :color="$badgeColor"
  65. :icon="$badgeIcon"
  66. :icon-position="$badgeIconPosition"
  67. size="sm"
  68. :tooltip="$badgeTooltip"
  69. >
  70. {{ $badge }}
  71. </x-filament::badge>
  72. @endif
  73. @endif
  74. </{{ $tag }}>