merge($this->getActionWrapperAttributes)
+ ->merge($this->actionWrapperAttributes)
->class([
- 'flex flex-cols py-2 space-x-2' => $this->isTailwind && ($this->getActionWrapperAttributes['default-styling'] ?? true),
- '' => $this->isTailwind && ($this->getActionWrapperAttributes['default-colors'] ?? true),
- 'd-flex flex-cols py-2 space-x-2' => $this->isBootstrap && ($this->getActionWrapperAttributes['default-styling'] ?? true),
- '' => $this->isBootstrap && ($this->getActionWrapperAttributes['default-colors'] ?? true),
+ 'flex flex-cols py-2 space-x-2' => $isTailwind && ($actionWrapperAttributes['default-styling'] ?? true),
+ '' => $isTailwind && ($actionWrapperAttributes['default-colors'] ?? true),
+ 'd-flex flex-cols py-2 space-x-2' => $isBootstrap && ($this->actionWrapperAttributes['default-styling'] ?? true),
+ '' => $isBootstrap && ($actionWrapperAttributes['default-colors'] ?? true),
'justify-start' => $this->getActionsPosition === 'left',
'justify-center' => $this->getActionsPosition === 'center',
'justify-end' => $this->getActionsPosition === 'right',
diff --git a/resources/views/components/includes/loading.blade.php b/resources/views/components/includes/loading.blade.php
index c4c5c31e9..6d7eaf7a3 100644
--- a/resources/views/components/includes/loading.blade.php
+++ b/resources/views/components/includes/loading.blade.php
@@ -1,4 +1,4 @@
-@aware(['tableName'])
+@aware(['tableName','isTailwind','isBootstrap'])
@props(['colCount' => 1])
@php
@@ -10,16 +10,16 @@
merge($loaderRow)
->class([
- 'hidden w-full text-center place-items-center align-middle' => $this->isTailwind && ($loaderRow['default'] ?? true),
- 'd-none w-100 text-center align-items-center' => $this->isBootstrap && ($loaderRow['default'] ?? true),
+ 'hidden w-full text-center place-items-center align-middle' => $isTailwind && ($loaderRow['default'] ?? true),
+ 'd-none w-100 text-center align-items-center' => $isBootstrap && ($loaderRow['default'] ?? true),
])
->except(['default','default-styling','default-colors'])
}}>
merge($loaderCell)
->class([
- 'py-4' => $this->isTailwind && ($loaderCell['default'] ?? true),
- 'py-4' => $this->isBootstrap && ($loaderCell['default'] ?? true),
+ 'py-4' => $isTailwind && ($loaderCell['default'] ?? true),
+ 'py-4' => $isBootstrap && ($loaderCell['default'] ?? true),
])
->except(['default','default-styling','default-colors', 'colspan','wire:key'])
}}>
@@ -30,8 +30,8 @@
merge($loaderIcon)
->class([
- 'lds-hourglass' => $this->isTailwind && ($loaderIcon['default'] ?? true),
- 'lds-hourglass' => $this->isBootstrap && ($loaderIcon['default'] ?? true),
+ 'lds-hourglass' => $isTailwind && ($loaderIcon['default'] ?? true),
+ 'lds-hourglass' => $isBootstrap && ($loaderIcon['default'] ?? true),
])
->except(['default','default-styling','default-colors'])
}}>
diff --git a/resources/views/components/pagination.blade.php b/resources/views/components/pagination.blade.php
index feab347e2..633b31b24 100644
--- a/resources/views/components/pagination.blade.php
+++ b/resources/views/components/pagination.blade.php
@@ -1,3 +1,5 @@
+@aware(['isTailwind','isBootstrap','isBootstrap4', 'isBootstrap5', 'localisationPath'])
+@props(['currentRows'])
@includeWhen(
$this->hasConfigurableAreaFor('before-pagination'),
$this->getConfigurableAreaFor('before-pagination'),
@@ -6,97 +8,97 @@
getPaginationWrapperAttributesBag() }}>
@if ($this->paginationVisibilityIsEnabled())
- @if ($this->isTailwind)
+ @if ($isTailwind)
- @if ($this->paginationIsEnabled && $this->isPaginationMethod('standard') && $this->getRows->lastPage() > 1 && $this->showPaginationDetails)
+ @if ($this->paginationIsEnabled && $this->isPaginationMethod('standard') && $currentRows->lastPage() > 1 && $this->showPaginationDetails)
@elseif ($this->paginationIsEnabled && $this->isPaginationMethod('simple') && $this->showPaginationDetails)
@elseif ($this->paginationIsEnabled && $this->isPaginationMethod('cursor'))
@else
@if($this->showPaginationDetails)
@endif
@endif
@if ($this->paginationIsEnabled)
- {{ $this->getRows->links('livewire-tables::specific.tailwind.'.(!$this->isPaginationMethod('standard') ? 'simple-' : '').'pagination') }}
+ {{ $currentRows->links('livewire-tables::specific.tailwind.'.(!$this->isPaginationMethod('standard') ? 'simple-' : '').'pagination') }}
@endif
@else
- @if ($this->paginationIsEnabled && $this->isPaginationMethod('standard') && $this->getRows->lastPage() > 1)
+ @if ($this->paginationIsEnabled && $this->isPaginationMethod('standard') && $currentRows->lastPage() > 1)
- {{ $this->getRows->links('livewire-tables::specific.bootstrap-4.pagination') }}
+ {{ $currentRows->links('livewire-tables::specific.bootstrap-4.pagination') }}
$this->isBootstrap4,
- "text-md-end" => $this->isBootstrap5,
+ "text-md-right" => $isBootstrap4,
+ "text-md-end" => $isBootstrap5,
])>
@if($this->showPaginationDetails)
- {{ __($this->getLocalisationPath.'Showing') }}
- {{ $this->getRows->count() ? $this->getRows->firstItem() : 0 }}
- {{ __($this->getLocalisationPath.'to') }}
- {{ $this->getRows->count() ? $this->getRows->lastItem() : 0 }}
- {{ __($this->getLocalisationPath.'of') }}
+ {{ __($localisationPath.'Showing') }}
+ {{ $currentRows->count() ? $currentRows->firstItem() : 0 }}
+ {{ __($localisationPath.'to') }}
+ {{ $currentRows->count() ? $currentRows->lastItem() : 0 }}
+ {{ __($localisationPath.'of') }}
- {{ __($this->getLocalisationPath.'results') }}
+ {{ __($localisationPath.'results') }}
@endif
@elseif ($this->paginationIsEnabled && $this->isPaginationMethod('simple'))
- {{ $this->getRows->links('livewire-tables::specific.bootstrap-4.simple-pagination') }}
+ {{ $currentRows->links('livewire-tables::specific.bootstrap-4.simple-pagination') }}
$this->isBootstrap4,
- "text-md-end" => $this->isBootstrap5,
+ "text-md-right" => $isBootstrap4,
+ "text-md-end" => $isBootstrap5,
])>
@if($this->showPaginationDetails)
- {{ __($this->getLocalisationPath.'Showing') }}
- {{ $this->getRows->count() ? $this->getRows->firstItem() : 0 }}
- {{ __($this->getLocalisationPath.'to') }}
- {{ $this->getRows->count() ? $this->getRows->lastItem() : 0 }}
+ {{ __($localisationPath.'Showing') }}
+ {{ $currentRows->count() ? $currentRows->firstItem() : 0 }}
+ {{ __($localisationPath.'to') }}
+ {{ $currentRows->count() ? $currentRows->lastItem() : 0 }}
@endif
@elseif ($this->paginationIsEnabled && $this->isPaginationMethod('cursor'))
- {{ $this->getRows->links('livewire-tables::specific.bootstrap-4.simple-pagination') }}
+ {{ $currentRows->links('livewire-tables::specific.bootstrap-4.simple-pagination') }}
@else
@if($this->showPaginationDetails)
- {{ __($this->getLocalisationPath.'Showing') }}
- {{ $this->getRows->count() }}
- {{ __($this->getLocalisationPath.'results') }}
+ {{ __($localisationPath.'Showing') }}
+ {{ $currentRows->count() }}
+ {{ __($localisationPath.'results') }}
@endif
diff --git a/resources/views/components/table/td/bulk-actions.blade.php b/resources/views/components/table/td/bulk-actions.blade.php
index df5338f7f..80cb3e5ff 100644
--- a/resources/views/components/table/td/bulk-actions.blade.php
+++ b/resources/views/components/table/td/bulk-actions.blade.php
@@ -1,17 +1,16 @@
-@aware([ 'tableName','primaryKey'])
+@aware([ 'tableName','primaryKey', 'isTailwind', 'isBootstrap', 'isBootstrap4', 'isBootstrap5'])
@props(['row', 'rowIndex'])
@php
$customAttributes = $this->getBulkActionsTdAttributes();
$bulkActionsTdCheckboxAttributes = $this->getBulkActionsTdCheckboxAttributes();
- $theme = $this->getTheme();
@endphp
@if ($this->bulkActionsAreEnabled() && $this->hasBulkActions())
$theme === 'tailwind',
- 'form-check' => $theme === 'bootstrap-5',
+ 'inline-flex rounded-md shadow-sm' => $isTailwind,
+ 'form-check' => $isBootstrap5,
])>
merge($bulkActionsTdCheckboxAttributes)->class([
- 'rounded border-gray-300 text-indigo-600 shadow-sm transition duration-150 ease-in-out focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 dark:bg-gray-900 dark:text-white dark:border-gray-600 dark:hover:bg-gray-600 dark:focus:bg-gray-600' => ($theme === 'tailwind') && ($bulkActionsTdCheckboxAttributes['default'] ?? true),
- 'form-check-input' => ($theme === 'bootstrap-5') && ($bulkActionsTdCheckboxAttributes['default'] ?? true),
+ 'rounded border-gray-300 text-indigo-600 shadow-sm transition duration-150 ease-in-out focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 dark:bg-gray-900 dark:text-white dark:border-gray-600 dark:hover:bg-gray-600 dark:focus:bg-gray-600' => ($isTailwind) && ($bulkActionsTdCheckboxAttributes['default'] ?? true),
+ 'form-check-input' => ($isBootstrap5) && ($bulkActionsTdCheckboxAttributes['default'] ?? true),
])->except(['default','default-styling','default-colors'])
}}
/>
diff --git a/resources/views/components/table/td/reorder.blade.php b/resources/views/components/table/td/reorder.blade.php
index cda94f5f5..6b8c9b7a5 100644
--- a/resources/views/components/table/td/reorder.blade.php
+++ b/resources/views/components/table/td/reorder.blade.php
@@ -1,8 +1,6 @@
-@aware([ 'tableName'])
+@aware([ 'tableName', 'isTailwind', 'isBootstrap', 'isBootstrap4', 'isBootstrap5'])
@props(['rowID', 'rowIndex'])
-@php($theme = $this->getTheme())
-
$theme === 'tailwind',
- 'd-inline' => $theme === 'bootstrap-4' || $theme === 'bootstrap-5',
+ 'inline w-4 h-4' => $isTailwind,
+ 'd-inline' => ($isBootstrap4 || $isBootstrap5),
])
@style([
- 'width:1em; height:1em;' => $theme === 'bootstrap-4' || $theme === 'bootstrap-5',
+ 'width:1em; height:1em;' => ($isBootstrap4 || $isBootstrap5),
])
>
diff --git a/resources/views/components/table/th.blade.php b/resources/views/components/table/th.blade.php
index db8c0da4d..3562f4cf6 100644
--- a/resources/views/components/table/th.blade.php
+++ b/resources/views/components/table/th.blade.php
@@ -1,3 +1,4 @@
+@aware(['isTailwind','isBootstrap'])
@props(['column', 'index'])
@php
@@ -12,15 +13,15 @@
merge($customThAttributes)
->class([
- 'text-gray-500 dark:bg-gray-800 dark:text-gray-400' => $this->isTailwind && (($customThAttributes['default-colors'] ?? true) || ($customThAttributes['default'] ?? true)),
- 'px-6 py-3 text-left text-xs font-medium whitespace-nowrap uppercase tracking-wider' => $this->isTailwind && (($customThAttributes['default-styling'] ?? true) || ($customThAttributes['default'] ?? true)),
- 'hidden' => $this->isTailwind && $column->shouldCollapseAlways(),
- 'hidden md:table-cell' => $this->isTailwind && $column->shouldCollapseOnMobile(),
- 'hidden lg:table-cell' => $this->isTailwind && $column->shouldCollapseOnTablet(),
- '' => $this->isBootstrap && ($customThAttributes['default'] ?? true),
- 'd-none' => $this->isBootstrap && $column->shouldCollapseAlways(),
- 'd-none d-md-table-cell' => $this->isBootstrap && $column->shouldCollapseOnMobile(),
- 'd-none d-lg-table-cell' => $this->isBootstrap && $column->shouldCollapseOnTablet(),
+ 'text-gray-500 dark:bg-gray-800 dark:text-gray-400' => $isTailwind && (($customThAttributes['default-colors'] ?? true) || ($customThAttributes['default'] ?? true)),
+ 'px-6 py-3 text-left text-xs font-medium whitespace-nowrap uppercase tracking-wider' => $isTailwind && (($customThAttributes['default-styling'] ?? true) || ($customThAttributes['default'] ?? true)),
+ 'hidden' => $isTailwind && $column->shouldCollapseAlways(),
+ 'hidden md:table-cell' => $isTailwind && $column->shouldCollapseOnMobile(),
+ 'hidden lg:table-cell' => $isTailwind && $column->shouldCollapseOnTablet(),
+ '' => $isBootstrap && ($customThAttributes['default'] ?? true),
+ 'd-none' => $isBootstrap && $column->shouldCollapseAlways(),
+ 'd-none d-md-table-cell' => $isBootstrap && $column->shouldCollapseOnMobile(),
+ 'd-none d-lg-table-cell' => $isBootstrap && $column->shouldCollapseOnTablet(),
])
->except(['default', 'default-colors', 'default-styling'])
}}>
@@ -28,7 +29,7 @@
@unless ($this->sortingIsEnabled() && ($column->isSortable() || $column->getSortCallback()))
@else
- @if ($this->isTailwind)
+ @if ($isTailwind)
merge($customSortButtonAttributes)
@@ -41,7 +42,7 @@
- @elseif ($this->isBootstrap)
+ @elseif ($isBootstrap)
merge($customSortButtonAttributes)
->class([
diff --git a/resources/views/components/table/th/bulk-actions.blade.php b/resources/views/components/table/th/bulk-actions.blade.php
index e99199e2f..90f9ba442 100644
--- a/resources/views/components/table/th/bulk-actions.blade.php
+++ b/resources/views/components/table/th/bulk-actions.blade.php
@@ -1,3 +1,4 @@
+@aware(['isTailwind', 'isBootstrap'])
@php
$customAttributes = $this->hasBulkActionsThAttributes ? $this->getBulkActionsThAttributes : $this->getAllThAttributes($this->getBulkActionsColumn())['customAttributes'];
$bulkActionsThCheckboxAttributes = $this->getBulkActionsThCheckboxAttributes();
@@ -10,8 +11,8 @@
x-init="$watch('selectedItems', value => indeterminateCheckbox = (value.length > 0 && value.length < paginationTotalItemCount))"
x-cloak x-show="currentlyReorderingStatus !== true"
@class([
- 'inline-flex rounded-md shadow-sm' => $this->isTailwind,
- 'form-check' => $this->isBootstrap,
+ 'inline-flex rounded-md shadow-sm' => $isTailwind,
+ 'form-check' => $isBootstrap,
])
>
merge($bulkActionsThCheckboxAttributes)->class([
- 'border-gray-300 text-indigo-600 focus:border-indigo-300 focus:ring-indigo-200 dark:bg-gray-900 dark:text-white dark:border-gray-600 dark:hover:bg-gray-600 dark:focus:bg-gray-600' => $this->isTailwind && (($bulkActionsThCheckboxAttributes['default'] ?? true) || ($bulkActionsThCheckboxAttributes['default-colors'] ?? true)),
- 'rounded shadow-sm transition duration-150 ease-in-out focus:ring focus:ring-opacity-50 ' => $this->isTailwind && (($bulkActionsThCheckboxAttributes['default'] ?? true) || ($bulkActionsThCheckboxAttributes['default-styling'] ?? true)),
- 'form-check-input' => $this->isBootstrap && ($bulkActionsThCheckboxAttributes['default'] ?? true),
+ 'border-gray-300 text-indigo-600 focus:border-indigo-300 focus:ring-indigo-200 dark:bg-gray-900 dark:text-white dark:border-gray-600 dark:hover:bg-gray-600 dark:focus:bg-gray-600' => $isTailwind && (($bulkActionsThCheckboxAttributes['default'] ?? true) || ($bulkActionsThCheckboxAttributes['default-colors'] ?? true)),
+ 'rounded shadow-sm transition duration-150 ease-in-out focus:ring focus:ring-opacity-50 ' => $isTailwind && (($bulkActionsThCheckboxAttributes['default'] ?? true) || ($bulkActionsThCheckboxAttributes['default-styling'] ?? true)),
+ 'form-check-input' => $isBootstrap && ($bulkActionsThCheckboxAttributes['default'] ?? true),
])->except(['default','default-styling','default-colors'])
}}
/>
diff --git a/resources/views/components/table/th/collapsed-columns.blade.php b/resources/views/components/table/th/collapsed-columns.blade.php
index ad8a1860d..e05021bd2 100644
--- a/resources/views/components/table/th/collapsed-columns.blade.php
+++ b/resources/views/components/table/th/collapsed-columns.blade.php
@@ -1,15 +1,16 @@
+@aware(['isTailwind', 'isBootstrap'])
@if ($this->collapsingColumnsAreEnabled && $this->hasCollapsedColumns)
merge()
->class([
- 'table-cell dark:bg-gray-800 laravel-livewire-tables-reorderingMinimised' => $this->isTailwind,
- 'sm:hidden' => $this->isTailwind && !$this->shouldCollapseOnTablet && !$this->shouldCollapseAlways,
- 'md:hidden' => $this->isTailwind && !$this->shouldCollapseOnMobile && !$this->shouldCollapseOnTablet && !$this->shouldCollapseAlways,
- 'lg:hidden' => $this->isTailwind && !$this->shouldCollapseAlways,
- 'd-table-cell laravel-livewire-tables-reorderingMinimised' => $this->isBootstrap,
- 'd-sm-none' => $this->isBootstrap && !$this->shouldCollapseOnTablet && !$this->shouldCollapseAlways,
- 'd-md-none' => $this->isBootstrap && !$this->shouldCollapseOnMobile && !$this->shouldCollapseOnTablet && !$this->shouldCollapseAlways,
- 'd-lg-none' => $this->isBootstrap && !$this->shouldCollapseAlways,
+ 'table-cell dark:bg-gray-800 laravel-livewire-tables-reorderingMinimised' => $isTailwind,
+ 'sm:hidden' => $isTailwind && !$this->shouldCollapseOnTablet && !$this->shouldCollapseAlways,
+ 'md:hidden' => $isTailwind && !$this->shouldCollapseOnMobile && !$this->shouldCollapseOnTablet && !$this->shouldCollapseAlways,
+ 'lg:hidden' => $isTailwind && !$this->shouldCollapseAlways,
+ 'd-table-cell laravel-livewire-tables-reorderingMinimised' => $isBootstrap,
+ 'd-sm-none' => $isBootstrap && !$this->shouldCollapseOnTablet && !$this->shouldCollapseAlways,
+ 'd-md-none' => $isBootstrap && !$this->shouldCollapseOnMobile && !$this->shouldCollapseOnTablet && !$this->shouldCollapseAlways,
+ 'd-lg-none' => $isBootstrap && !$this->shouldCollapseAlways,
])
}}>
@endif
diff --git a/resources/views/components/table/th/plain.blade.php b/resources/views/components/table/th/plain.blade.php
index b15d56d0f..929bf1630 100644
--- a/resources/views/components/table/th/plain.blade.php
+++ b/resources/views/components/table/th/plain.blade.php
@@ -1,10 +1,11 @@
+@aware(['isTailwind', 'isBootstrap'])
@props(['displayMinimisedOnReorder' => false, 'hideUntilReorder' => false, 'customAttributes' => ['default' => true]])
merge($customAttributes)->class([
- 'table-cell px-3 py-2 md:px-6 md:py-3 text-center md:text-left laravel-livewire-tables-reorderingMinimised' => $this->isTailwind && (($customAttributes['default-styling'] ?? true) || ($customAttributes['default'] ?? true)),
- 'bg-gray-50 dark:bg-gray-800' => $this->isTailwind && (($customAttributes['default-colors'] ?? true) || ($customAttributes['default'] ?? true)),
- 'laravel-livewire-tables-reorderingMinimised' => $this->isBootstrap && (($customAttributes['default-colors'] ?? true) || ($customAttributes['default'] ?? true)),
+ 'table-cell px-3 py-2 md:px-6 md:py-3 text-center md:text-left laravel-livewire-tables-reorderingMinimised' => $isTailwind && (($customAttributes['default-styling'] ?? true) || ($customAttributes['default'] ?? true)),
+ 'bg-gray-50 dark:bg-gray-800' => $isTailwind && (($customAttributes['default-colors'] ?? true) || ($customAttributes['default'] ?? true)),
+ 'laravel-livewire-tables-reorderingMinimised' => $isBootstrap && (($customAttributes['default-colors'] ?? true) || ($customAttributes['default'] ?? true)),
])->except(['default','default-styling','default-colors'])
}}>
{{ $slot }}
diff --git a/resources/views/components/table/th/sort-icons.blade.php b/resources/views/components/table/th/sort-icons.blade.php
index f08cd3473..26b077bbb 100644
--- a/resources/views/components/table/th/sort-icons.blade.php
+++ b/resources/views/components/table/th/sort-icons.blade.php
@@ -1,11 +1,12 @@
+@aware(['isTailwind', 'isBootstrap'])
@props(['direction' => 'none', 'customIconAttributes'])
$this->isTailwind,
- 'relative d-flex align-items-center' => $this->isBootstrap
+ 'relative flex items-center' => $isTailwind,
+ 'relative d-flex align-items-center' => $isBootstrap
])
>
- @if($this->isTailwind)
+ @if($isTailwind)
@switch($direction)
@case('asc')
merge($customIconAttributes)
diff --git a/resources/views/components/table/tr/bulk-actions.blade.php b/resources/views/components/table/tr/bulk-actions.blade.php
index e63d18df2..64a788d99 100644
--- a/resources/views/components/table/tr/bulk-actions.blade.php
+++ b/resources/views/components/table/tr/bulk-actions.blade.php
@@ -1,4 +1,4 @@
-@aware([ 'tableName'])
+@aware([ 'tableName', 'isTailwind', 'isBootstrap', 'localisationPath'])
@if ($this->bulkActionsAreEnabled() && $this->hasBulkActions())
@php
@@ -11,16 +11,16 @@
x-cloak x-show="selectedItems.length > 0 && !currentlyReorderingStatus"
wire:key="{{ $tableName }}-bulk-select-message"
@class([
- 'bg-indigo-50 dark:bg-gray-900 dark:text-white' => $this->isTailwind,
+ 'bg-indigo-50 dark:bg-gray-900 dark:text-white' => $isTailwind,
])
>
- {{ __($this->getLocalisationPath.'You are currently selecting all') }}
+ {{ __($localisationPath.'You are currently selecting all') }}
@if(!$simplePagination) @endif
- {{ __($this->getLocalisationPath.'rows') }}.
+ {{ __($localisationPath.'rows') }}.
getBulkActionsRowButtonAttributesBag->class([
- 'ml-1 underline text-sm leading-5 font-medium focus:outline-none focus:underline transition duration-150 ease-in-out' => $this->isTailwind && ($this->getBulkActionsRowButtonAttributes['default-styling'] ?? true),
- 'text-blue-600 text-gray-700 focus:text-gray-800 dark:text-white dark:hover:text-gray-400' => $this->isTailwind && ($this->getBulkActionsRowButtonAttributes['default-colors'] ?? true),
- 'btn btn-primary btn-sm' => $this->isBootstrap && ($this->getBulkActionsRowButtonAttributes['default-styling'] ?? true)
+ 'ml-1 underline text-sm leading-5 font-medium focus:outline-none focus:underline transition duration-150 ease-in-out' => $isTailwind && ($this->getBulkActionsRowButtonAttributes['default-styling'] ?? true),
+ 'text-blue-600 text-gray-700 focus:text-gray-800 dark:text-white dark:hover:text-gray-400' => $isTailwind && ($this->getBulkActionsRowButtonAttributes['default-colors'] ?? true),
+ 'btn btn-primary btn-sm' => $isBootstrap && ($this->getBulkActionsRowButtonAttributes['default-styling'] ?? true)
])
}}
>
- {{ __($this->getLocalisationPath.'Deselect All') }}
+ {{ __($localisationPath.'Deselect All') }}
@@ -43,9 +43,9 @@
- {{ __($this->getLocalisationPath.'You have selected') }}
+ {{ __($localisationPath.'You have selected') }}
- {{ __($this->getLocalisationPath.'rows, do you want to select all') }}
+ {{ __($localisationPath.'rows, do you want to select all') }}
@if(!$simplePagination) @endif
@@ -55,13 +55,13 @@
type="button"
{{
$this->getBulkActionsRowButtonAttributesBag->class([
- 'ml-1 underline text-sm leading-5 font-medium focus:outline-none focus:underline transition duration-150 ease-in-out' => $this->isTailwind && ($this->getBulkActionsRowButtonAttributes['default-styling'] ?? true),
- 'text-blue-600 text-gray-700 focus:text-gray-800 dark:text-white dark:hover:text-gray-400' => $this->isTailwind && ($this->getBulkActionsRowButtonAttributes['default-colors'] ?? true),
- 'btn btn-primary btn-sm' => $this->isBootstrap && ($this->getBulkActionsRowButtonAttributes['default-styling'] ?? true)
+ 'ml-1 underline text-sm leading-5 font-medium focus:outline-none focus:underline transition duration-150 ease-in-out' => $isTailwind && ($this->getBulkActionsRowButtonAttributes['default-styling'] ?? true),
+ 'text-blue-600 text-gray-700 focus:text-gray-800 dark:text-white dark:hover:text-gray-400' => $isTailwind && ($this->getBulkActionsRowButtonAttributes['default-colors'] ?? true),
+ 'btn btn-primary btn-sm' => $isBootstrap && ($this->getBulkActionsRowButtonAttributes['default-styling'] ?? true)
])
}}
- >{{ __($this->getLocalisationPath.'Select All On Page') }}
+ >{{ __($localisationPath.'Select All On Page') }}
getBulkActionsRowButtonAttributesBag->class([
- 'ml-1 underline text-sm leading-5 font-medium focus:outline-none focus:underline transition duration-150 ease-in-out' => $this->isTailwind && ($this->getBulkActionsRowButtonAttributes['default-styling'] ?? true),
- 'text-blue-600 text-gray-700 focus:text-gray-800 dark:text-white dark:hover:text-gray-400' => $this->isTailwind && ($this->getBulkActionsRowButtonAttributes['default-colors'] ?? true),
- 'btn btn-primary btn-sm' => $this->isBootstrap && ($this->getBulkActionsRowButtonAttributes['default-styling'] ?? true)
+ 'ml-1 underline text-sm leading-5 font-medium focus:outline-none focus:underline transition duration-150 ease-in-out' => $isTailwind && ($this->getBulkActionsRowButtonAttributes['default-styling'] ?? true),
+ 'text-blue-600 text-gray-700 focus:text-gray-800 dark:text-white dark:hover:text-gray-400' => $isTailwind && ($this->getBulkActionsRowButtonAttributes['default-colors'] ?? true),
+ 'btn btn-primary btn-sm' => $isBootstrap && ($this->getBulkActionsRowButtonAttributes['default-styling'] ?? true)
])
}}
>
- {{ __($this->getLocalisationPath.'Select All') }}
+ {{ __($localisationPath.'Select All') }}
getBulkActionsRowButtonAttributesBag->class([
- 'ml-1 underline text-sm leading-5 font-medium focus:outline-none focus:underline transition duration-150 ease-in-out' => $this->isTailwind && ($this->getBulkActionsRowButtonAttributes['default-styling'] ?? true),
- 'text-blue-600 text-gray-700 focus:text-gray-800 dark:text-white dark:hover:text-gray-400' => $this->isTailwind && ($this->getBulkActionsRowButtonAttributes['default-colors'] ?? true),
- 'btn btn-primary btn-sm' => $this->isBootstrap && ($this->getBulkActionsRowButtonAttributes['default-styling'] ?? true)
+ 'ml-1 underline text-sm leading-5 font-medium focus:outline-none focus:underline transition duration-150 ease-in-out' => $isTailwind && ($this->getBulkActionsRowButtonAttributes['default-styling'] ?? true),
+ 'text-blue-600 text-gray-700 focus:text-gray-800 dark:text-white dark:hover:text-gray-400' => $isTailwind && ($this->getBulkActionsRowButtonAttributes['default-colors'] ?? true),
+ 'btn btn-primary btn-sm' => $isBootstrap && ($this->getBulkActionsRowButtonAttributes['default-styling'] ?? true)
])
}}
>
- {{ __($this->getLocalisationPath.'Deselect All') }}
+ {{ __($localisationPath.'Deselect All') }}
diff --git a/resources/views/components/tools.blade.php b/resources/views/components/tools.blade.php
index ae652df20..e2d2ef574 100644
--- a/resources/views/components/tools.blade.php
+++ b/resources/views/components/tools.blade.php
@@ -1,11 +1,10 @@
@aware(['isTailwind','isBootstrap'])
-@php($toolsAttributes = $this->getToolsAttributesBag())
merge()
+ $attributes->merge($this->getToolsAttributes)
->class([
- 'flex-col' => $isTailwind && ($toolsAttributes['default-styling'] ?? true),
- 'd-flex flex-column' => $isBootstrap && ($toolsAttributes['default-styling'] ?? true)
+ 'flex-col' => $isTailwind && ($this->getToolsAttributes['default-styling'] ?? true),
+ 'd-flex flex-column' => $isBootstrap && ($this->getToolsAttributes['default-styling'] ?? true)
])
->except(['default','default-styling','default-colors'])
}}
diff --git a/resources/views/components/tools/filter-label.blade.php b/resources/views/components/tools/filter-label.blade.php
index c7c69fb75..2274d74d4 100644
--- a/resources/views/components/tools/filter-label.blade.php
+++ b/resources/views/components/tools/filter-label.blade.php
@@ -9,18 +9,16 @@
@if($filter->hasCustomFilterLabel() && !$filter->hasCustomPosition())
@include($filter->getCustomFilterLabel(),['filter' => $filter, 'filterLayout' => $filterLayout, 'tableName' => $tableName, 'isTailwind' => $isTailwind, 'isBootstrap' => $isBootstrap, 'isBootstrap4' => $isBootstrap4, 'isBootstrap5' => $isBootstrap5, 'customLabelAttributes' => $customLabelAttributes])
@elseif(!$filter->hasCustomPosition())
-
merge($customLabelAttributes)->merge($filterLabelAttributes)
->class([
- 'block text-sm font-medium leading-5 text-gray-700 dark:text-white' => $isTailwind && ($filterLabelAttributes['default'] ?? true),
- 'd-block' => $isBootstrap && $filterLayout === 'slide-down' && ($filterLabelAttributes['default'] ?? true),
- 'mb-2' => $isBootstrap && $filterLayout === 'popover' && ($filterLabelAttributes['default'] ?? true),
+ 'block text-sm font-medium leading-5' => $isTailwind && ($filterLabelAttributes['default-styling'] ?? ($filterLabelAttributes['default'] ?? true)),
+ 'text-gray-700 dark:text-white' => $isTailwind && ($filterLabelAttributes['default-colors'] ?? ($filterLabelAttributes['default'] ?? true)),
+ 'd-block' => $isBootstrap && $filterLayout === 'slide-down' && ($filterLabelAttributes['default-styling'] ?? ($filterLabelAttributes['default'] ?? true)),
+ 'mb-2' => $isBootstrap && $filterLayout === 'popover' && ($filterLabelAttributes['default-styling'] ?? ($filterLabelAttributes['default'] ?? true)),
])
->except(['default', 'default-colors', 'default-styling'])
}}
-
>
{{ $filter->getName() }}
diff --git a/resources/views/components/tools/filter-pills.blade.php b/resources/views/components/tools/filter-pills.blade.php
index 613c5b906..7e2f1edd6 100644
--- a/resources/views/components/tools/filter-pills.blade.php
+++ b/resources/views/components/tools/filter-pills.blade.php
@@ -1,30 +1,30 @@
-@aware([ 'tableName','isTailwind','isBootstrap','isBootstrap4','isBootstrap5'])
+@aware([ 'tableName','isTailwind','isBootstrap','isBootstrap4','isBootstrap5', 'localisationPath'])
-
-
$isTailwind,
- 'mb-3' => $isBootstrap,
- ]) x-cloak x-show="!currentlyReorderingStatus">
-
$isTailwind,
- '' => $isBootstrap,
- ])>
- {{ __($this->getLocalisationPath.'Applied Filters') }}:
-
+
merge([
- @tableloop($this->getAppliedFiltersWithValues() as $filterSelectName => $value)
- @php($filter = $this->getFilterByKey($filterSelectName))
- @continue(is_null($filter) || $filter->isHiddenFromPills())
- @php( $filterPillValue = $filter->getFilterPillValue($value))
- @continue((is_array($filterPillValue) && empty($filterPillValue)))
- @php( $filterPillTitle = $filter->getFilterPillTitle())
- @php( $separator = method_exists($filter, 'getPillsSeparator') ? $filter->getPillsSeparator() : ', ')
- @if ($filter->hasCustomPillBlade())
- @include($filter->getCustomPillBlade(), ['filter' => $filter])
- @else
-
- @endif
- @endtableloop
-
-
-
+ 'wire:loading.class' => $this->displayFilterPillsWhileLoading ? '' : 'invisible',
+ 'x-cloak',
+])
+->class([
+ 'mb-4 px-4 md:p-0' => $isTailwind,
+ 'mb-3' => $isBootstrap,
+])
+
+}}>
+
$isTailwind,
+ '' => $isBootstrap,
+ ])>
+ {{ __($localisationPath.'Applied Filters') }}:
+
+ @tableloop($this->getPillDataForFilter() as $filterKey => $filterPillData)
+
+ @if ($filterPillData->hasCustomPillBlade)
+ @include($filterPillData->getCustomPillBlade(), ['filter' => $this->getFilterByKey($filterKey), 'filterPillData' => $filterPillData])
+ @else
+
+ @endif
+ @endtableloop
+
+
+
\ No newline at end of file
diff --git a/resources/views/components/tools/filter-pills/buttons/reset-all.blade.php b/resources/views/components/tools/filter-pills/buttons/reset-all.blade.php
index 7acdc1904..d718ac2d7 100644
--- a/resources/views/components/tools/filter-pills/buttons/reset-all.blade.php
+++ b/resources/views/components/tools/filter-pills/buttons/reset-all.blade.php
@@ -1,36 +1,36 @@
-@aware(['isTailwind','isBootstrap','isBootstrap4','isBootstrap5'])
+@aware(['isTailwind','isBootstrap','isBootstrap4','isBootstrap5', 'localisationPath'])
@if ($isTailwind)
merge($this->getFilterPillsResetAllButtonAttributes())
+ $attributes->merge($this->getFilterPillsResetAllButtonAttributes)
->class([
- 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium' => $this->getFilterPillsResetAllButtonAttributes()['default-styling'],
- 'bg-gray-100 text-gray-800 dark:bg-gray-200 dark:text-gray-900' => $this->getFilterPillsResetAllButtonAttributes()['default-colors'],
+ 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium' => ($this->getFilterPillsResetAllButtonAttributes['default-styling'] ?? true),
+ 'bg-gray-100 text-gray-800 dark:bg-gray-200 dark:text-gray-900' => ($this->getFilterPillsResetAllButtonAttributes['default-colors'] ?? true),
])
->except(['default-styling', 'default-colors'])
}}
>
- {{ __($this->getLocalisationPath.'Clear') }}
+ {{ __($localisationPath.'Clear') }}
@else
merge($this->getFilterPillsResetAllButtonAttributes())
+ $attributes->merge($this->getFilterPillsResetAllButtonAttributes)
->class([
- 'badge badge-pill badge-light' => $isBootstrap4 && $this->getFilterPillsResetAllButtonAttributes()['default-styling'],
- 'badge rounded-pill bg-light text-dark text-decoration-none' => $isBootstrap5 && $this->getFilterPillsResetAllButtonAttributes()['default-styling'],
+ 'badge badge-pill badge-light' => $isBootstrap4 && ($this->getFilterPillsResetAllButtonAttributes['default-styling'] ?? true),
+ 'badge rounded-pill bg-light text-dark text-decoration-none' => $isBootstrap5 && ($this->getFilterPillsResetAllButtonAttribute['default-styling'] ?? true),
])
->except(['default-styling', 'default-colors'])
}}
>
- {{ __($this->getLocalisationPath.'Clear') }}
+ {{ __($localisationPath.'Clear') }}
@endif
diff --git a/resources/views/components/tools/filter-pills/buttons/reset-filter.blade.php b/resources/views/components/tools/filter-pills/buttons/reset-filter.blade.php
index 1a02d413e..68b9a3691 100644
--- a/resources/views/components/tools/filter-pills/buttons/reset-filter.blade.php
+++ b/resources/views/components/tools/filter-pills/buttons/reset-filter.blade.php
@@ -1,37 +1,41 @@
-@aware(['tableName','isTailwind','isBootstrap','isBootstrap4','isBootstrap5'])
-@props(['filterKey'])
+@aware(['tableName','isTailwind','isBootstrap','isBootstrap4','isBootstrap5', 'localisationPath'])
+@props(['filterKey', 'filterPillData'])
+
+@php
+
+ $filterButtonAttributes = $filterPillData->getCalculatedCustomResetButtonAttributes($filterKey,$this->getFilterPillsResetFilterButtonAttributes);
+
+@endphp
@if ($isTailwind)
-
merge($this->getFilterPillsResetFilterButtonAttributes())
+ $attributes->merge($filterButtonAttributes)
->class([
- 'flex-shrink-0 ml-0.5 h-4 w-4 rounded-full inline-flex items-center justify-center focus:outline-none' => $this->getFilterPillsResetFilterButtonAttributes()['default-styling'],
- 'text-indigo-400 hover:bg-indigo-200 hover:text-indigo-500 focus:bg-indigo-500 focus:text-white' => $this->getFilterPillsResetFilterButtonAttributes()['default-colors'],
+ 'flex-shrink-0 ml-0.5 h-4 w-4 rounded-full inline-flex items-center justify-center focus:outline-none' => $filterButtonAttributes['default-styling'],
+ 'text-indigo-400 hover:bg-indigo-200 hover:text-indigo-500 focus:bg-indigo-500 focus:text-white' => $filterButtonAttributes['default-colors'],
])
- ->except(['default-styling', 'default-colors'])
+ ->except(['default', 'default-colors', 'default-styling', 'default-text'])
}}
>
- {{ __($this->getLocalisationPath.'Remove filter option') }}
+ {{ __($localisationPath.'Remove filter option') }}
@else
merge($this->getFilterPillsResetFilterButtonAttributes())
+ $attributes->merge($filterButtonAttributes)
->class([
- 'text-white ml-2' => $isBootstrap && $this->getFilterPillsResetFilterButtonAttributes()['default-styling']
+ 'text-white ml-2' => $isBootstrap && $filterButtonAttributes['default-styling']
])
- ->except(['default-styling', 'default-colors'])
+ ->except(['default', 'default-colors', 'default-styling', 'default-text'])
}}
>
$isBootstrap4,
'visually-hidden' => $isBootstrap5,
- ])>{{ __($this->getLocalisationPath.'Remove filter option') }}
+ ])>{{ __($localisationPath.'Remove filter option') }}
diff --git a/resources/views/components/tools/filter-pills/item.blade.php b/resources/views/components/tools/filter-pills/item.blade.php
deleted file mode 100644
index 740c86512..000000000
--- a/resources/views/components/tools/filter-pills/item.blade.php
+++ /dev/null
@@ -1,28 +0,0 @@
-@aware(['tableName','isTailwind','isBootstrap','isBootstrap4','isBootstrap5'])
-@props(['filterPillTitle', 'filterPillValue', 'filterSelectName', 'separator'])
-
merge($this->getFilterPillsItemAttributes)
- ->class([
- 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium leading-4 capitalize' => $isTailwind && $this->getFilterPillsItemAttributes['default-styling'],
- 'bg-indigo-100 text-indigo-800 dark:bg-indigo-200 dark:text-indigo-900' => $isTailwind && $this->getFilterPillsItemAttributes['default-colors'],
- 'badge badge-pill badge-info d-inline-flex align-items-center' => $isBootstrap4 && $this->getFilterPillsItemAttributes['default-styling'],
- 'badge rounded-pill bg-info d-inline-flex align-items-center' => $isBootstrap5 && $this->getFilterPillsItemAttributes['default-styling'],
- ])
- ->except(['default-styling', 'default-colors'])
- }}
->
- {{ $filterPillTitle }}:
-
- @if(is_array($filterPillValue))
- @foreach($filterPillValue as $filterPillArrayValue)
- {{ $filterPillArrayValue }}{!! !$loop->last ? $separator : '' !!}
- @endforeach
- @else
- {{ $filterPillValue }}
- @endif
-
-
-
-
diff --git a/resources/views/components/tools/filter-pills/pills-item.blade.php b/resources/views/components/tools/filter-pills/pills-item.blade.php
new file mode 100644
index 000000000..e82b6b3ed
--- /dev/null
+++ b/resources/views/components/tools/filter-pills/pills-item.blade.php
@@ -0,0 +1,28 @@
+@aware(['tableName','isTailwind','isBootstrap4','isBootstrap5'])
+@props([
+ 'filterKey',
+ 'filterPillData',
+ 'shouldWatch' => ($filterPillData->shouldWatchForEvents() ?? 0),
+ 'filterPillsItemAttributes' => $filterPillData->getFilterPillsItemAttributes(),
+ ])
+
+
merge($filterPillsItemAttributes)
+ ->class([
+ 'inline-flex items-center px-2.5 py-0.5 rounded-full leading-4' => $isTailwind && ($filterPillsItemAttributes['default-styling'] ?? true),
+ 'text-xs font-medium capitalize' => $isTailwind && ($filterPillsItemAttributes['default-text'] ?? ($filterPillsItemAttributes['default-styling'] ?? true)),
+ 'bg-indigo-100 text-indigo-800 dark:bg-indigo-200 dark:text-indigo-900' => $isTailwind && ($filterPillsItemAttributes['default-colors'] ?? true),
+ 'badge badge-pill badge-info d-inline-flex align-items-center' => $isBootstrap4 && ($filterPillsItemAttributes['default-styling'] ?? true),
+ 'badge rounded-pill bg-info d-inline-flex align-items-center' => $isBootstrap5 && ($filterPillsItemAttributes['default-styling'] ?? true),
+ ])
+ ->except(['default', 'default-styling', 'default-colors'])
+ }}
+>
+
+
+ getFilterPillDisplayData() }}>
+
+
+
+
diff --git a/resources/views/components/tools/sorting-pills.blade.php b/resources/views/components/tools/sorting-pills.blade.php
index 3815bf6c9..25a2bc973 100644
--- a/resources/views/components/tools/sorting-pills.blade.php
+++ b/resources/views/components/tools/sorting-pills.blade.php
@@ -1,17 +1,17 @@
-@aware([ 'tableName','isTailwind','isBootstrap','isBootstrap4','isBootstrap5'])
+@aware([ 'tableName','isTailwind','isBootstrap','isBootstrap4','isBootstrap5', 'localisationPath'])
-@if ($this->isTailwind)
+@if ($isTailwind)
@if ($this->sortingPillsAreEnabled() && $this->hasSorts())
- {{ __($this->getLocalisationPath.'Applied Sorting') }}:
+ {{ __($localisationPath.'Applied Sorting') }}:
@foreach($this->getSorts() as $columnSelectName => $direction)
@php($column = $this->getColumnBySelectName($columnSelectName) ?? $this->getColumnBySlug($columnSelectName))
@continue(is_null($column))
@continue($column->isHidden())
- @continue($this->columnSelectIsEnabled() && ! $this->columnSelectIsEnabledForColumn($column))
+ @continue($this->columnSelectIsEnabled && ! $this->columnSelectIsEnabledForColumn($column))
except(['default-styling', 'default-colors'])
}}
>
- {{ __($this->getLocalisationPath.'Remove sort option') }}
+ {{ __($localisationPath.'Remove sort option') }}
@@ -58,24 +58,24 @@ class="focus:outline-none active:outline-none"
->except(['default-styling', 'default-colors'])
}}
>
- {{ __($this->getLocalisationPath.'Clear') }}
+ {{ __($localisationPath.'Clear') }}
@endif
-@elseif ($this->isBootstrap4)
+@elseif ($isBootstrap4)
@if ($this->sortingPillsAreEnabled() && $this->hasSorts())
- {{ __($this->getLocalisationPath.'Applied Sorting') }}:
+ {{ __($localisationPath.'Applied Sorting') }}:
@foreach($this->getSorts() as $columnSelectName => $direction)
@php($column = $this->getColumnBySelectName($columnSelectName) ?? $this->getColumnBySlug($columnSelectName))
@continue(is_null($column))
@continue($column->isHidden())
- @continue($this->columnSelectIsEnabled() && ! $this->columnSelectIsEnabledForColumn($column))
+ @continue($this->columnSelectIsEnabled && ! $this->columnSelectIsEnabledForColumn($column))
except(['default-styling', 'default-colors'])
}}
>
- {{ __($this->getLocalisationPath.'Remove sort option') }}
+ {{ __($localisationPath.'Remove sort option') }}
@@ -117,23 +117,23 @@ class="focus:outline-none active:outline-none"
->except(['default-styling', 'default-colors'])
}}
>
- {{ __($this->getLocalisationPath.'Clear') }}
+ {{ __($localisationPath.'Clear') }}
@endif
-@elseif ($this->isBootstrap5)
+@elseif ($isBootstrap5)
@if ($this->sortingPillsAreEnabled() && $this->hasSorts())
- {{ __($this->getLocalisationPath.'Applied Sorting') }}:
+ {{ __($localisationPath.'Applied Sorting') }}:
@foreach($this->getSorts() as $columnSelectName => $direction)
@php($column = $this->getColumnBySelectName($columnSelectName) ?? $this->getColumnBySlug($columnSelectName))
@continue(is_null($column))
@continue($column->isHidden())
- @continue($this->columnSelectIsEnabled() && ! $this->columnSelectIsEnabledForColumn($column))
+ @continue($this->columnSelectIsEnabled && ! $this->columnSelectIsEnabledForColumn($column))
except(['default-styling', 'default-colors'])
}}
>
- {{ __($this->getLocalisationPath.'Remove sort option') }}
+ {{ __($localisationPath.'Remove sort option') }}
@@ -175,7 +175,7 @@ class="focus:outline-none active:outline-none"
->except(['default-styling', 'default-colors'])
}}
>
- {{ __($this->getLocalisationPath.'Clear') }}
+ {{ __($localisationPath.'Clear') }}
@endif
diff --git a/resources/views/components/tools/toolbar.blade.php b/resources/views/components/tools/toolbar.blade.php
index 75814c1f7..6f4a482fd 100644
--- a/resources/views/components/tools/toolbar.blade.php
+++ b/resources/views/components/tools/toolbar.blade.php
@@ -1,6 +1,6 @@
@aware([ 'tableName','isTailwind','isBootstrap'])
@props([])
-@php($toolBarAttributes = $this->getToolBarAttributesBag())
+@php($toolBarAttributes = $this->getToolBarAttributesBag)
$this->isBootstrap,
- 'w-full mb-4 md:mb-0 md:w-2/4 md:flex space-y-4 md:space-y-0 md:space-x-2' => $this->isTailwind,
+ 'd-md-flex' => $isBootstrap,
+ 'w-full mb-4 md:mb-0 md:w-2/4 md:flex space-y-4 md:space-y-0 md:space-x-2' => $isTailwind,
])
>
@if ($this->hasConfigurableAreaFor('toolbar-left-start'))
$this->isBootstrap,
- 'flex rounded-md shadow-sm' => $this->isTailwind,
+ 'mb-3 mb-md-0 input-group' => $isBootstrap,
+ 'flex rounded-md shadow-sm' => $isTailwind,
])>
@include($this->getConfigurableAreaFor('toolbar-left-start'), $this->getParametersForConfigurableArea('toolbar-left-start'))
@endif
- @if ($this->reorderIsEnabled())
+ @if ($this->showReorderButton())
@endif
- @if ($this->searchIsEnabled && $this->searchVisibilityIsEnabled)
+ @if ($this->showSearchField())
@endif
- @if ($this->filtersAreEnabled() && $this->filtersVisibilityIsEnabled() && $this->hasVisibleFilters())
+ @if ($this->showFiltersButton())
@endif
- @if($this->hasActions && $this->showActionsInToolbar && $this->getActionsPosition === 'left')
+ @if($this->showActionsInToolbarLeft())
@endif
@if ($this->hasConfigurableAreaFor('toolbar-left-end'))
$this->isBootstrap,
- 'flex rounded-md shadow-sm' => $this->isTailwind,
+ 'mb-3 mb-md-0 input-group' => $isBootstrap,
+ 'flex rounded-md shadow-sm' => $isTailwind,
])>
@include($this->getConfigurableAreaFor('toolbar-left-end'), $this->getParametersForConfigurableArea('toolbar-left-end'))
@@ -54,13 +54,13 @@
$this->isBootstrap,
- 'md:flex md:items-center space-y-4 md:space-y-0 md:space-x-2' => $this->isTailwind,
+ 'd-md-flex' => $isBootstrap,
+ 'md:flex md:items-center space-y-4 md:space-y-0 md:space-x-2' => $isTailwind,
])
>
@includeWhen($this->hasConfigurableAreaFor('toolbar-right-start'), $this->getConfigurableAreaFor('toolbar-right-start'), $this->getParametersForConfigurableArea('toolbar-right-start'))
- @if($this->hasActions && $this->showActionsInToolbar && $this->getActionsPosition === 'right')
+ @if($this->showActionsInToolbarRight())
@endif
@@ -68,22 +68,15 @@
@endif
- @if ($this->columnSelectIsEnabled())
+ @if ($this->columnSelectIsEnabled)
@endif
- @if ($this->paginationIsEnabled() && $this->perPageVisibilityIsEnabled())
+ @if ($this->showPaginationDropdown())
@endif
@includeWhen($this->hasConfigurableAreaFor('toolbar-right-end'), $this->getConfigurableAreaFor('toolbar-right-end'), $this->getParametersForConfigurableArea('toolbar-right-end'))
-@if (
- $this->filtersAreEnabled() &&
- $this->filtersVisibilityIsEnabled() &&
- $this->hasVisibleFilters() &&
- $this->isFilterLayoutSlideDown()
-)
-
-@endif
+
diff --git a/resources/views/components/tools/toolbar/items/bulk-actions.blade.php b/resources/views/components/tools/toolbar/items/bulk-actions.blade.php
index 344ea0309..12ea6bb18 100644
--- a/resources/views/components/tools/toolbar/items/bulk-actions.blade.php
+++ b/resources/views/components/tools/toolbar/items/bulk-actions.blade.php
@@ -1,24 +1,24 @@
-@aware([ 'tableName','isTailwind','isBootstrap','isBootstrap4','isBootstrap5'])
+@aware([ 'tableName','isTailwind','isBootstrap','isBootstrap4','isBootstrap5', 'localisationPath'])
$this->isBootstrap,
- 'w-full md:w-auto mb-4 md:mb-0' => $this->isTailwind,
+ 'mb-3 mb-md-0' => $isBootstrap,
+ 'w-full md:w-auto mb-4 md:mb-0' => $isTailwind,
])
>
$this->isBootstrap,
- 'relative inline-block text-left z-10 w-full md:w-auto' => $this->isTailwind,
+ 'dropdown d-block d-md-inline' => $isBootstrap,
+ 'relative inline-block text-left z-10 w-full md:w-auto' => $isTailwind,
])
>
merge($this->getBulkActionsButtonAttributes)
->class([
- 'btn dropdown-toggle d-block d-md-inline' => $this->isBootstrap && ($this->getBulkActionsButtonAttributes['default-styling'] ?? true),
- 'border-gray-300 bg-white text-gray-700 hover:bg-gray-50 focus:border-indigo-300 focus:ring-indigo-200 dark:bg-gray-700 dark:text-white dark:border-gray-600 dark:hover:bg-gray-600' => $this->isTailwind && ($this->getBulkActionsButtonAttributes['default-colors'] ?? true),
- 'inline-flex justify-center w-full rounded-md border shadow-sm px-4 py-2 text-sm font-medium focus:ring focus:ring-opacity-50' => $this->isTailwind && ($this->getBulkActionsButtonAttributes['default-styling'] ?? true),
+ 'btn dropdown-toggle d-block d-md-inline' => $isBootstrap && ($this->getBulkActionsButtonAttributes['default-styling'] ?? true),
+ 'border-gray-300 bg-white text-gray-700 hover:bg-gray-50 focus:border-indigo-300 focus:ring-indigo-200 dark:bg-gray-700 dark:text-white dark:border-gray-600 dark:hover:bg-gray-600' => $isTailwind && ($this->getBulkActionsButtonAttributes['default-colors'] ?? true),
+ 'inline-flex justify-center w-full rounded-md border shadow-sm px-4 py-2 text-sm font-medium focus:ring focus:ring-opacity-50' => $isTailwind && ($this->getBulkActionsButtonAttributes['default-styling'] ?? true),
])
->except(['default','default-styling','default-colors'])
@@ -27,21 +27,21 @@
id="{{ $tableName }}-bulkActionsDropdown"
- @if($this->isTailwind)
+ @if($isTailwind)
x-on:click="open = !open"
@else
data-toggle="dropdown" data-bs-toggle="dropdown"
@endif
aria-haspopup="true" aria-expanded="false">
- {{ __($this->getLocalisationPath.'Bulk Actions') }}
+ {{ __($localisationPath.'Bulk Actions') }}
- @if($this->isTailwind)
+ @if($isTailwind)
@endif
- @if($this->isTailwind)
+ @if($isTailwind)
merge($this->getBulkActionsMenuItemAttributes)
->class([
- 'text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:bg-gray-100 focus:text-gray-900 dark:text-white dark:hover:bg-gray-600' => $this->isTailwind && ($this->getBulkActionsMenuItemAttributes['default-colors'] ?? true),
- 'block w-full px-4 py-2 text-sm leading-5 focus:outline-none flex items-center space-x-2' => $this->isTailwind && ($this->getBulkActionsMenuItemAttributes['default-styling'] ?? true),
+ 'text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:bg-gray-100 focus:text-gray-900 dark:text-white dark:hover:bg-gray-600' => $isTailwind && ($this->getBulkActionsMenuItemAttributes['default-colors'] ?? true),
+ 'block w-full px-4 py-2 text-sm leading-5 focus:outline-none flex items-center space-x-2' => $isTailwind && ($this->getBulkActionsMenuItemAttributes['default-styling'] ?? true),
])
->except(['default','default-styling','default-colors'])
}}
@@ -94,8 +94,8 @@ class="origin-top-right absolute right-0 mt-2 w-full md:w-48 rounded-md shadow-l
{{
$attributes->merge($this->getBulkActionsMenuAttributes)
->class([
- 'dropdown-menu dropdown-menu-right w-100' => $this->isBootstrap4 && ($this->getBulkActionsMenuAttributes['default-styling'] ?? true),
- 'dropdown-menu dropdown-menu-end w-100' => $this->isBootstrap5 && ($this->getBulkActionsMenuAttributes['default-styling'] ?? true),
+ 'dropdown-menu dropdown-menu-right w-100' => $isBootstrap4 && ($this->getBulkActionsMenuAttributes['default-styling'] ?? true),
+ 'dropdown-menu dropdown-menu-end w-100' => $isBootstrap5 && ($this->getBulkActionsMenuAttributes['default-styling'] ?? true),
])
->except(['default','default-styling','default-colors'])
}}
@@ -112,7 +112,7 @@ class="origin-top-right absolute right-0 mt-2 w-full md:w-48 rounded-md shadow-l
{{
$attributes->merge($this->getBulkActionsMenuItemAttributes)
->class([
- 'dropdown-item' => $this->isBootstrap && ($this->getBulkActionsMenuItemAttributes['default-styling'] ?? true),
+ 'dropdown-item' => $isBootstrap && ($this->getBulkActionsMenuItemAttributes['default-styling'] ?? true),
])
->except(['default','default-styling','default-colors'])
}}
diff --git a/resources/views/components/tools/toolbar/items/column-select.blade.php b/resources/views/components/tools/toolbar/items/column-select.blade.php
index 60de81110..388b9171c 100644
--- a/resources/views/components/tools/toolbar/items/column-select.blade.php
+++ b/resources/views/components/tools/toolbar/items/column-select.blade.php
@@ -1,4 +1,4 @@
-@aware([ 'tableName','isTailwind','isBootstrap','isBootstrap4','isBootstrap5'])
+@aware([ 'tableName','isTailwind','isBootstrap','isBootstrap4','isBootstrap5', 'localisationPath'])
@if ($isTailwind)
- {{ __($this->getLocalisationPath.'Columns') }}
+ {{ __($localisationPath.'Columns') }}
@@ -65,7 +65,7 @@ class="inline-flex items-center px-2 py-1 disabled:opacity-50 disabled:cursor-wa
@checked($this->getSelectableSelectedColumns()->count() === $this->getSelectableColumns()->count())
@if($this->getSelectableSelectedColumns()->count() === $this->getSelectableColumns()->count()) wire:click="deselectAllColumns" @else wire:click="selectAllColumns" @endif
>
- {{ __($this->getLocalisationPath.'All Columns') }}
+ {{ __($localisationPath.'All Columns') }}
@@ -129,7 +129,7 @@ class="inline-flex items-center px-2 py-1 disabled:opacity-50 disabled:cursor-wa
type="button" id="{{ $tableName }}-columnSelect" aria-haspopup="true"
x-bind:aria-expanded="open"
>
- {{ __($this->getLocalisationPath.'Columns') }}
+ {{ __($localisationPath.'Columns') }}
-
{{ __($this->getLocalisationPath.'All Columns') }}
+
{{ __($localisationPath.'All Columns') }}
@@ -170,7 +170,7 @@ class="inline-flex items-center px-2 py-1 disabled:opacity-50 disabled:cursor-wa
/>
- {{ __($this->getLocalisationPath.'All Columns') }}
+ {{ __($localisationPath.'All Columns') }}
@endif
diff --git a/resources/views/components/tools/toolbar/items/filter-button.blade.php b/resources/views/components/tools/toolbar/items/filter-button.blade.php
index 452c0d2e9..9340e7691 100644
--- a/resources/views/components/tools/toolbar/items/filter-button.blade.php
+++ b/resources/views/components/tools/toolbar/items/filter-button.blade.php
@@ -1,11 +1,11 @@
-@aware([ 'tableName','isTailwind','isBootstrap','isBootstrap4','isBootstrap5'])
+@aware([ 'tableName','isTailwind','isBootstrap','isBootstrap4','isBootstrap5', 'localisationPath'])
@props([])
$this->isBootstrap4,
- 'ms-0 ms-md-2 mb-3 mb-md-0' => $this->isBootstrap5 && $this->searchIsEnabled(),
- 'mb-3 mb-md-0' => $this->isBootstrap5 && !$this->searchIsEnabled(),
+ 'ml-0 ml-md-2 mb-3 mb-md-0' => $isBootstrap4,
+ 'ms-0 ms-md-2 mb-3 mb-md-0' => $isBootstrap5 && $this->searchIsEnabled(),
+ 'mb-3 mb-md-0' => $isBootstrap5 && !$this->searchIsEnabled(),
])
>
$this->isBootstrap,
- 'relative block md:inline-block text-left' => $this->isTailwind,
+ 'btn-group d-block d-md-inline' => $isBootstrap,
+ 'relative block md:inline-block text-left' => $isTailwind,
])
>
$this->isBootstrap,
- 'inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 dark:bg-gray-700 dark:text-white dark:border-gray-600 dark:hover:bg-gray-600' => $this->isTailwind,
+ 'btn dropdown-toggle d-block w-100 d-md-inline' => $isBootstrap,
+ 'inline-flex justify-center w-full rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 dark:bg-gray-700 dark:text-white dark:border-gray-600 dark:hover:bg-gray-600' => $isTailwind,
])
@if ($this->isFilterLayoutPopover()) x-on:click="filterPopoverOpen = !filterPopoverOpen"
aria-haspopup="true"
@@ -33,22 +33,22 @@
@endif
@if ($this->isFilterLayoutSlideDown()) x-on:click="filtersOpen = !filtersOpen" @endif
>
- {{ __($this->getLocalisationPath.'Filters') }}
+ {{ __($localisationPath.'Filters') }}
@if ($count = $this->getFilterBadgeCount())
$this->isBootstrap,
- 'ml-1 inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium leading-4 bg-indigo-100 text-indigo-800 capitalize dark:bg-indigo-200 dark:text-indigo-900' => $this->isTailwind,
+ 'badge badge-info' => $isBootstrap,
+ 'ml-1 inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium leading-4 bg-indigo-100 text-indigo-800 capitalize dark:bg-indigo-200 dark:text-indigo-900' => $isTailwind,
])>
{{ $count }}
@endif
- @if($this->isTailwind)
+ @if($isTailwind)
@else
$this->isBootstrap,
+ 'caret' => $isBootstrap,
])>
@endif
diff --git a/resources/views/components/tools/toolbar/items/filter-popover/clear-button.blade.php b/resources/views/components/tools/toolbar/items/filter-popover/clear-button.blade.php
index 6436cd79f..4c2170878 100644
--- a/resources/views/components/tools/toolbar/items/filter-popover/clear-button.blade.php
+++ b/resources/views/components/tools/toolbar/items/filter-popover/clear-button.blade.php
@@ -1,7 +1,8 @@
+@aware(['isTailwind','isBootstrap4','isBootstrap5', 'localisationPath'])
$this->isTailwind,
- 'dropdown-item btn text-center' => $this->isBootstrap4,
- 'dropdown-item text-center' => $this->isBootstrap5,
+ 'w-full inline-flex items-center justify-center px-3 py-2 border border-gray-300 shadow-sm text-sm leading-4 font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 dark:bg-gray-800 dark:border-gray-600 dark:text-white dark:hover:border-gray-500 dark:hover:bg-gray-600' => $isTailwind,
+ 'dropdown-item btn text-center' => $isBootstrap4,
+ 'dropdown-item text-center' => $isBootstrap5,
])>
- {{ __($this->getLocalisationPath.'Clear') }}
+ {{ __($localisationPath.'Clear') }}
\ No newline at end of file
diff --git a/resources/views/components/tools/toolbar/items/filter-slidedown.blade.php b/resources/views/components/tools/toolbar/items/filter-slidedown.blade.php
index 123e587ec..b82f68afc 100644
--- a/resources/views/components/tools/toolbar/items/filter-slidedown.blade.php
+++ b/resources/views/components/tools/toolbar/items/filter-slidedown.blade.php
@@ -1,9 +1,9 @@
-@aware([ 'tableName'])
+@aware([ 'tableName', 'isTailwind', 'isBootstrap'])
@props([])
merge($this->getFilterSlidedownWrapperAttributes)
- ->merge($this->isTailwind ? [
+ ->merge($isTailwind ? [
'x-transition:enter' => 'transition ease-out duration-100',
'x-transition:enter-start' => 'transform opacity-0',
'x-transition:enter-end' => 'transform opacity-100',
@@ -12,7 +12,7 @@
'x-transition:leave-end' => 'transform opacity-0',
] : [])
->class([
- 'container' => $this->isBootstrap && ($this->getFilterSlidedownWrapperAttributes['default'] ?? true),
+ 'container' => $isBootstrap && ($this->getFilterSlidedownWrapperAttributes['default'] ?? true),
])
->except(['default','default-colors','default-styling'])
}}
@@ -26,8 +26,8 @@
'row' => $filterRowIndex,
])
->class([
- 'row col-12' => $this->isBootstrap && ($defaultAttributes['default-styling'] ?? true),
- 'grid grid-cols-12 gap-6 px-4 py-2 mb-2' => $this->isTailwind && ($defaultAttributes['default-styling'] ?? true),
+ 'row col-12' => $isBootstrap && ($defaultAttributes['default-styling'] ?? true),
+ 'grid grid-cols-12 gap-6 px-4 py-2 mb-2' => $isTailwind && ($defaultAttributes['default-styling'] ?? true),
])
->except(['default','default-colors','default-styling'])
}}
@@ -36,33 +36,33 @@
- $this->isBootstrap,
+ $isBootstrap,
'col-12 col-sm-9 col-md-6 col-lg-3' =>
- $this->isBootstrap &&
+ $isBootstrap &&
!$filter->hasFilterSlidedownColspan(),
'col-12 col-sm-6 col-md-6 col-lg-3' =>
- $this->isBootstrap &&
+ $isBootstrap &&
$filter->hasFilterSlidedownColspan() &&
$filter->getFilterSlidedownColspan() === 2,
'col-12 col-sm-3 col-md-3 col-lg-3' =>
- $this->isBootstrap &&
+ $isBootstrap &&
$filter->hasFilterSlidedownColspan() &&
$filter->getFilterSlidedownColspan() === 3,
'col-12 col-sm-1 col-md-1 col-lg-1' =>
- $this->isBootstrap &&
+ $isBootstrap &&
$filter->hasFilterSlidedownColspan() &&
$filter->getFilterSlidedownColspan() === 4,
'space-y-1 col-span-12' =>
- $this->isTailwind,
+ $isTailwind,
'sm:col-span-6 md:col-span-4 lg:col-span-2' =>
- $this->isTailwind &&
+ $isTailwind &&
!$filter->hasFilterSlidedownColspan(),
'sm:col-span-12 md:col-span-8 lg:col-span-4' =>
- $this->isTailwind &&
+ $isTailwind &&
$filter->hasFilterSlidedownColspan() &&
$filter->getFilterSlidedownColspan() === 2,
'sm:col-span-9 md:col-span-4 lg:col-span-3' =>
- $this->isTailwind &&
+ $isTailwind &&
$filter->hasFilterSlidedownColspan() &&
$filter->getFilterSlidedownColspan() === 3,
])
diff --git a/resources/views/components/tools/toolbar/items/pagination-dropdown.blade.php b/resources/views/components/tools/toolbar/items/pagination-dropdown.blade.php
index 009dcf671..b913158da 100644
--- a/resources/views/components/tools/toolbar/items/pagination-dropdown.blade.php
+++ b/resources/views/components/tools/toolbar/items/pagination-dropdown.blade.php
@@ -1,17 +1,17 @@
-@aware([ 'tableName','isTailwind','isBootstrap','isBootstrap4','isBootstrap5'])
+@aware([ 'tableName','isTailwind','isBootstrap','isBootstrap4','isBootstrap5', 'localisationPath'])
$this->isBootstrap4,
- 'ms-0 ms-md-2' => $this->isBootstrap5,
+ 'ml-0 ml-md-2' => $isBootstrap4,
+ 'ms-0 ms-md-2' => $isBootstrap5,
])
>
merge($this->getPerPageFieldAttributes())
->class([
- 'form-control' => $this->isBootstrap4 && $this->getPerPageFieldAttributes()['default-styling'],
- 'form-select' => $this->isBootstrap5 && $this->getPerPageFieldAttributes()['default-styling'],
- 'block w-full rounded-md shadow-sm transition duration-150 ease-in-out sm:text-sm sm:leading-5 focus:ring focus:ring-opacity-50' => $this->isTailwind && $this->getPerPageFieldAttributes()['default-styling'],
- 'border-gray-300 focus:border-indigo-300 focus:ring-indigo-200 dark:bg-gray-700 dark:text-white dark:border-gray-600' => $this->isTailwind && $this->getPerPageFieldAttributes()['default-colors'],
+ 'form-control' => $isBootstrap4 && $this->getPerPageFieldAttributes()['default-styling'],
+ 'form-select' => $isBootstrap5 && $this->getPerPageFieldAttributes()['default-styling'],
+ 'block w-full rounded-md shadow-sm transition duration-150 ease-in-out sm:text-sm sm:leading-5 focus:ring focus:ring-opacity-50' => $isTailwind && $this->getPerPageFieldAttributes()['default-styling'],
+ 'border-gray-300 focus:border-indigo-300 focus:ring-indigo-200 dark:bg-gray-700 dark:text-white dark:border-gray-600' => $isTailwind && $this->getPerPageFieldAttributes()['default-colors'],
])
->except(['default','default-styling','default-colors'])
}}
@@ -21,7 +21,7 @@
value="{{ $item }}"
wire:key="{{ $tableName }}-per-page-{{ $item }}"
>
- {{ $item === -1 ? __($this->getLocalisationPath.'All') : $item }}
+ {{ $item === -1 ? __($localisationPath.'All') : $item }}
@endforeach
diff --git a/resources/views/components/tools/toolbar/items/reorder-buttons.blade.php b/resources/views/components/tools/toolbar/items/reorder-buttons.blade.php
index d98695006..3f524167b 100644
--- a/resources/views/components/tools/toolbar/items/reorder-buttons.blade.php
+++ b/resources/views/components/tools/toolbar/items/reorder-buttons.blade.php
@@ -1,24 +1,24 @@
-@aware([ 'tableName','isTailwind','isBootstrap','isBootstrap4','isBootstrap5'])
+@aware(['tableName','isTailwind','isBootstrap','isBootstrap4','isBootstrap5','localisationPath'])
$this->isBootstrap4,
- 'me-0 me-md-2 mb-3 mb-md-0' => $this->isBootstrap5
+ 'mr-0 mr-md-2 mb-3 mb-md-0' => $isBootstrap4,
+ 'me-0 me-md-2 mb-3 mb-md-0' => $isBootstrap5
])
>
$this->isBootstrap,
- 'inline-flex justify-center items-center w-full md:w-auto px-4 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:text-gray-500 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 active:bg-gray-50 active:text-gray-800 transition ease-in-out duration-150 dark:bg-gray-700 dark:text-white dark:border-gray-600 dark:hover:bg-gray-600' => $this->isTailwind
+ 'btn btn-default d-block d-md-inline' => $isBootstrap,
+ 'inline-flex justify-center items-center w-full md:w-auto px-4 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:text-gray-500 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 active:bg-gray-50 active:text-gray-800 transition ease-in-out duration-150 dark:bg-gray-700 dark:text-white dark:border-gray-600 dark:hover:bg-gray-600' => $isTailwind
])
>
- {{ __($this->getLocalisationPath.'cancel') }}
+ {{ __($localisationPath.'cancel') }}
- {{ __($this->getLocalisationPath.'Reorder') }}
+ {{ __($localisationPath.'Reorder') }}
@@ -28,12 +28,12 @@
type="button"
x-on:click="updateOrderedItems"
@class([
- 'btn btn-default d-block d-md-inline' => $this->isBootstrap && $this->currentlyReorderingStatus,
- 'inline-flex justify-center items-center w-full md:w-auto px-4 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:text-gray-500 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 active:bg-gray-50 active:text-gray-800 transition ease-in-out duration-150 dark:bg-gray-700 dark:text-white dark:border-gray-600 dark:hover:bg-gray-600' => $this->isTailwind
+ 'btn btn-default d-block d-md-inline' => $isBootstrap && $this->currentlyReorderingStatus,
+ 'inline-flex justify-center items-center w-full md:w-auto px-4 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:text-gray-500 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50 active:bg-gray-50 active:text-gray-800 transition ease-in-out duration-150 dark:bg-gray-700 dark:text-white dark:border-gray-600 dark:hover:bg-gray-600' => $isTailwind
])
>
- {{ __($this->getLocalisationPath.'save') }}
+ {{ __($localisationPath.'save') }}
diff --git a/resources/views/datatable.blade.php b/resources/views/datatable.blade.php
index 2fb08a7b9..35e0f21d9 100644
--- a/resources/views/datatable.blade.php
+++ b/resources/views/datatable.blade.php
@@ -5,6 +5,7 @@
@php($isBootstrap = $this->isBootstrap)
@php($isBootstrap4 = $this->isBootstrap4)
@php($isBootstrap5 = $this->isBootstrap5)
+@php($localisationPath = $this->getLocalisationPath)
@@ -16,7 +17,7 @@
$this->getParametersForConfigurableArea('before-wrapper')
)
-
+
@if($this->hasActions && !$this->showActionsInToolbar)
@endif
@@ -28,7 +29,7 @@
)
@if($this->shouldShowTools)
-
+
@if ($this->showSortPillsSection)
@endif
@@ -45,7 +46,14 @@
@if($this->shouldShowToolBar)
@endif
-
+ @if (
+ $this->filtersAreEnabled() &&
+ $this->filtersVisibilityIsEnabled() &&
+ $this->hasVisibleFilters() &&
+ $this->isFilterLayoutSlideDown()
+ )
+
+ @endif
@includeWhen(
$this->hasConfigurableAreaFor('after-toolbar'),
$this->getConfigurableAreaFor('after-toolbar'),
@@ -74,9 +82,9 @@
@endif
- @foreach($this->selectedVisibleColumns as $index => $column)
+ @tableloop($this->selectedVisibleColumns as $index => $column)
- @endforeach
+ @endtableloop
@if($this->secondaryHeaderIsEnabled() && $this->hasColumnsWithSecondaryHeader())
@@ -89,36 +97,43 @@
@if($this->showBulkActionsSections)
@endif
-
- @forelse ($this->getRows as $rowIndex => $row)
-
- @if($this->getCurrentlyReorderingStatus)
-
- @endif
- @if($this->showBulkActionsSections)
-
- @endif
- @if ($this->showCollapsingColumnSections)
-
+ @if(count($currentRows = $this->getRows) > 0)
+ @php($getCurrentlyReorderingStatus = $this->getCurrentlyReorderingStatus)
+ @php($showBulkActionsSections = $this->showBulkActionsSections)
+ @php($showCollapsingColumnSections = $this->showCollapsingColumnSections)
+ @php($selectedVisibleColumns = $this->selectedVisibleColumns)
+
+ @tableloop ($currentRows as $rowIndex => $row)
+
+ @if($getCurrentlyReorderingStatus)
+
+ @endif
+ @if($showBulkActionsSections)
+
+ @endif
+ @if ($showCollapsingColumnSections)
+
+ @endif
+
+ @tableloop($selectedVisibleColumns as $colIndex => $column)
+
+ @if($column->isHtml())
+ {!! $column->setIndexes($rowIndex, $colIndex)->renderContents($row) !!}
+ @else
+ {{ $column->setIndexes($rowIndex, $colIndex)->renderContents($row) }}
+ @endif
+
+ @endtableloop
+
+
+ @if ($showCollapsingColumnSections)
+
@endif
-
- @foreach($this->selectedVisibleColumns as $colIndex => $column)
-
- @if($column->isHtml())
- {!! $column->setIndexes($rowIndex, $colIndex)->renderContents($row) !!}
- @else
- {{ $column->setIndexes($rowIndex, $colIndex)->renderContents($row) }}
- @endif
-
- @endforeach
-
-
- @if ($this->showCollapsingColumnSections)
-
- @endif
- @empty
+ @endtableloop
+ @else
- @endforelse
+ @endif
+
@if ($this->footerIsEnabled() && $this->hasColumnsWithFooter())
@@ -131,7 +146,7 @@
@endif
-
+
@includeIf($customView)
diff --git a/resources/views/includes/offline.blade.php b/resources/views/includes/offline.blade.php
index bd4c58b38..aea11f8ec 100644
--- a/resources/views/includes/offline.blade.php
+++ b/resources/views/includes/offline.blade.php
@@ -1,6 +1,6 @@
-@aware(['isTailwind','isBootstrap'])
+@aware(['isTailwind','isBootstrap', 'localisationPath'])
@if ($this->offlineIndicatorIsEnabled())
- @if ($this->isTailwind)
+ @if ($isTailwind)
@@ -9,17 +9,17 @@
- {{ __($this->getLocalisationPath.'You are not connected to the internet') }}.
+ {{ __($localisationPath.'You are not connected to the internet') }}.
- @elseif ($this->isBootstrap)
+ @elseif ($isBootstrap)
- {{ __($this->getLocalisationPath.'You are not connected to the internet') }}.
+ {{ __($localisationPath.'You are not connected to the internet') }}.
diff --git a/src/DataTransferObjects/Filters/FilterPillData.php b/src/DataTransferObjects/Filters/FilterPillData.php
new file mode 100644
index 000000000..1aa32c6fa
--- /dev/null
+++ b/src/DataTransferObjects/Filters/FilterPillData.php
@@ -0,0 +1,179 @@
+filterPillTitle;
+ }
+
+ public function getSelectName(): string
+ {
+ return $this->filterSelectName;
+ }
+
+ public function getPillValue(): array|string|null
+ {
+ return $this->filterPillValue;
+ }
+
+ public function isPillValueAnArray(): bool
+ {
+ return ! is_null($this->filterPillValue) && is_array($this->filterPillValue);
+ }
+
+ public function getSeparatedPillValue(): array|string|null
+ {
+ if ($this->isPillValueAnArray()) {
+ return implode($this->getSeparator(), $this->getPillValue());
+ } else {
+ return $this->getPillValue();
+ }
+ }
+
+ public function getValueFromPillData(): array|string|null
+ {
+ if ($this->isPillValueAnArray()) {
+ return implode($this->getSeparator(), $this->getPillValue());
+ } else {
+ return $this->getPillValue();
+ }
+ }
+
+ public function getHasCustomPillBlade(): bool
+ {
+ return $this->hasCustomPillBlade ?? false;
+ }
+
+ public function getCustomPillBlade(): ?string
+ {
+ return $this->customPillBlade;
+ }
+
+ public function getIsAnExternalLivewireFilter(): int
+ {
+ return intval($this->isAnExternalLivewireFilter ?? false);
+ }
+
+ public function getSeparator(): string
+ {
+ return $this->separator ?? ', ';
+ }
+
+ public function getSeparatedValues(): string
+ {
+ return $this->separatedValues ?? $this->getSeparatedPillValue();
+ }
+
+ public function getFilterPillsItemAttributes(): array
+ {
+ return array_merge(['default' => true, 'default-colors' => true, 'default-styling' => true, 'default-text' => true], $this->filterPillsItemAttributes);
+ }
+
+ public function shouldUsePillsAsHtml(): int
+ {
+ return intval($this->renderPillsAsHtml ?? false);
+ }
+
+ public function shouldWatchForEvents(): int
+ {
+ return intval($this->watchForEvents ?? false);
+ }
+
+ public function getFilterPillDisplayData(): ComponentAttributeBag
+ {
+ if ($this->getIsAnExternalLivewireFilter()) {
+ return $this->getExternalFilterPillDisplayData();
+ }
+
+ return $this->getInternalFilterPillDisplayData();
+ }
+
+ public function getInternalFilterPillDisplayData(): ComponentAttributeBag
+ {
+ return new ComponentAttributeBag([
+ 'x-data' => "{ internalDisplayString: ''}",
+ 'x-init' => "internalDisplayString = updatePillValues('".$this->getSeparatedValues()."');",
+ $this->shouldUsePillsAsHtml() ? 'x-html' : 'x-text' => 'internalDisplayString',
+ ]);
+ }
+
+ public function getExternalFilterPillDisplayData(): ComponentAttributeBag
+ {
+ return new ComponentAttributeBag([
+ $this->shouldUsePillsAsHtml() ? 'x-html' : 'x-text' => 'displayString',
+ ]);
+ }
+
+ public function getPillSetupData(string $filterKey = '', bool $shouldWatch = false): array
+ {
+ $array = array_merge(['filterKey' => $filterKey, 'watchForEvents' => $shouldWatch], $this->toArray());
+
+ return $array;
+ }
+
+ public function getCustomResetButtonAttributes(): array
+ {
+ return $this->customResetButtonAttributes ?? [];
+ }
+
+ public function getCalculatedCustomResetButtonAttributes(string $filterKey, array $filterPillsResetFilterButtonAttributes): array
+ {
+ return array_merge(
+ [
+ 'x-on:click.prevent' => "resetSpecificFilter('".$filterKey."')",
+ 'type' => 'button',
+ 'default' => true,
+ 'default-colors' => true,
+ 'default-styling' => true,
+ 'default-text' => true,
+ ],
+ $filterPillsResetFilterButtonAttributes,
+ $this->getCustomResetButtonAttributes()
+ );
+ }
+
+ public function toArray(): array
+ {
+ return [
+ 'filterPillTitle' => $this->getTitle(),
+ 'filterSelectName' => $this->getSelectName(),
+ 'filterPillValue' => $this->getPillValue(),
+ 'isAnExternalLivewireFilter' => $this->getIsAnExternalLivewireFilter(),
+ 'hasCustomPillBlade' => $this->getHasCustomPillBlade(),
+ 'customPillBlade' => $this->getCustomPillBlade(),
+ 'separator' => $this->getSeparator(),
+ 'filterPillsItemAttributes' => $this->getFilterPillsItemAttributes(),
+ 'separatedValues' => $this->getSeparatedValues(),
+ 'renderPillsAsHtml' => $this->shouldUsePillsAsHtml(),
+ 'watchForEvents' => $this->shouldWatchForEvents(),
+ ];
+ }
+}
diff --git a/src/DataTransferObjects/Filters/StandardFilterPillData.php b/src/DataTransferObjects/Filters/StandardFilterPillData.php
new file mode 100644
index 000000000..60a8ff5f9
--- /dev/null
+++ b/src/DataTransferObjects/Filters/StandardFilterPillData.php
@@ -0,0 +1,43 @@
+filterPillTitle;
+ }
+
+ public function getSelectName(): string
+ {
+ return $this->filterSelectName;
+ }
+
+ public function getPillValue(): string
+ {
+ return $this->filterPillValue;
+ }
+
+ public function shouldUsePillsAsHtml(): bool
+ {
+ return $this->renderPillsAsHtml ?? false;
+ }
+
+ public function toArray(): array
+ {
+ return [
+ 'filterPillTitle' => $this->getTitle(),
+ 'filterSelectName' => $this->getSelectName(),
+ 'filterPillValue' => $this->getPillValue(),
+ 'renderPillsAsHtml' => $this->shouldUsePillsAsHtml(),
+ ];
+ }
+}
diff --git a/src/External/Filters/LivewireArrayExternalFilter.php b/src/External/Filters/LivewireArrayExternalFilter.php
new file mode 100644
index 000000000..738aad857
--- /dev/null
+++ b/src/External/Filters/LivewireArrayExternalFilter.php
@@ -0,0 +1,35 @@
+skipUpdate) {
+ if (! $this->needsUpdating) {
+ $this->needsUpdating = true;
+ }
+ }
+ }
+}
diff --git a/src/External/Filters/Traits/HandlesCoreMethodsForExternalFilter.php b/src/External/Filters/Traits/HandlesCoreMethodsForExternalFilter.php
new file mode 100644
index 000000000..1ba5222a7
--- /dev/null
+++ b/src/External/Filters/Traits/HandlesCoreMethodsForExternalFilter.php
@@ -0,0 +1,13 @@
+setupFilter();
+ }
+
+ protected function setupFilter(): void {}
+}
diff --git a/src/External/Filters/Traits/HandlesCorePropertiesForExternalFilter.php b/src/External/Filters/Traits/HandlesCorePropertiesForExternalFilter.php
new file mode 100644
index 000000000..ef0363fd5
--- /dev/null
+++ b/src/External/Filters/Traits/HandlesCorePropertiesForExternalFilter.php
@@ -0,0 +1,48 @@
+filterKey = $filterKey;
+
+ return $this;
+ }
+
+ public function getFilterKey(): string
+ {
+ return $this->filterKey;
+ }
+
+ protected function setTableName(string $tableName): self
+ {
+ $this->tableName = $tableName;
+
+ return $this;
+ }
+
+ public function getTableName(): string
+ {
+ return $this->tableName;
+ }
+
+ protected function setTableComponent(string $tableComponent): self
+ {
+ $this->tableComponent = $tableComponent;
+
+ return $this;
+ }
+
+ public function getTableComponent(): string
+ {
+ return $this->tableComponent;
+ }
+}
diff --git a/src/External/Filters/Traits/HandlesTableEventsForExternalFilter.php b/src/External/Filters/Traits/HandlesTableEventsForExternalFilter.php
new file mode 100644
index 000000000..8231523f9
--- /dev/null
+++ b/src/External/Filters/Traits/HandlesTableEventsForExternalFilter.php
@@ -0,0 +1,25 @@
+tableName && $filterKey == $this->filterKey && $this->optionsSelected != $value) {
+ $this->optionsSelected = $value;
+ }
+ }
+
+ #[Renderless]
+ public function renderingHandlesTableEventsForExternalFilter(\Illuminate\View\View $view, array $data = []): void
+ {
+ if ($this->needsUpdating) {
+ $this->needsUpdating = false;
+ $this->dispatch('livewireArrayFilterUpdateValuesNew', tableName: $this->tableName, filterKey: $this->filterKey, values: $this->optionsSelected)->to($this->tableComponent);
+ }
+ }
+}
diff --git a/src/External/Filters/Traits/HandlesUpdateStatusForExternalFilter.php b/src/External/Filters/Traits/HandlesUpdateStatusForExternalFilter.php
new file mode 100644
index 000000000..8fa78f7ff
--- /dev/null
+++ b/src/External/Filters/Traits/HandlesUpdateStatusForExternalFilter.php
@@ -0,0 +1,12 @@
+searchStatus;
}
+ #[Computed]
+ public function showSearchField(): bool
+ {
+ return $this->searchIsEnabled() && $this->searchVisibilityIsEnabled();
+ }
+
#[Computed]
public function searchIsEnabled(): bool
{
diff --git a/src/Traits/Filters/Configuration/FilterConfiguration.php b/src/Traits/Filters/Configuration/FilterConfiguration.php
index c0b408870..76277059b 100644
--- a/src/Traits/Filters/Configuration/FilterConfiguration.php
+++ b/src/Traits/Filters/Configuration/FilterConfiguration.php
@@ -6,7 +6,7 @@
use Livewire\Attributes\On;
use Rappasoft\LaravelLivewireTables\Events\FilterApplied;
use Rappasoft\LaravelLivewireTables\Views\Filter;
-use Rappasoft\LaravelLivewireTables\Views\Filters\{MultiSelectDropdownFilter, MultiSelectFilter};
+use Rappasoft\LaravelLivewireTables\Views\Filters\{BooleanFilter,MultiSelectDropdownFilter, MultiSelectFilter};
trait FilterConfiguration
{
@@ -52,16 +52,6 @@ public function resetFilter($filter): void
}
- #[On('livewireArrayFilterUpdateValues')]
- public function updateLivewireArrayFilterValues(string $filterKey, string $tableName, array $values): void
- {
- if ($this->tableName == $tableName) {
- $filter = $this->getFilterByKey($filterKey);
- $filter->options($values);
- }
-
- }
-
public function selectAllFilterOptions(string $filterKey): void
{
$filter = $this->getFilterByKey($filterKey);
@@ -87,8 +77,7 @@ public function applyFilters(): Builder
if ($filter->getKey() === $key && $filter->hasFilterCallback()) {
// Let the filter class validate the value
$value = $filter->validate($value);
-
- if ($value === false) {
+ if (! ($filter instanceof BooleanFilter) && ($value === false)) {
continue;
}
diff --git a/src/Traits/Filters/HandlesLivewireComponentFilters.php b/src/Traits/Filters/HandlesLivewireComponentFilters.php
new file mode 100644
index 000000000..057b323b9
--- /dev/null
+++ b/src/Traits/Filters/HandlesLivewireComponentFilters.php
@@ -0,0 +1,44 @@
+hasExternalFilters;
+ }
+
+ #[On('livewireArrayFilterUpdateValues')]
+ public function updateLivewireArrayFilterValues(string $filterKey, string $tableName, array $values): void
+ {
+ if ($this->getTableName() == $tableName) {
+ $filter = $this->getFilterByKey($filterKey);
+ $filter->options($values);
+ }
+ }
+
+ #[On('livewireArrayFilterUpdateValuesNew')]
+ public function updateLivewireArrayFilterValuesNew(string $filterKey, string $tableName, array $values): void
+ {
+ $setup = ['original' => null, 'new' => null];
+
+ if ($this->getTableName() == $tableName) {
+
+ $setup['original'] = $this->getFilters();
+ $filterArray = $this->filterCollection->toArray();
+ foreach ($filterArray as $index => $filter) {
+ if ($filter->getKey() == $filterKey) {
+ $options = collect($values)->pluck('value', 'id')->toArray();
+ $filter->options($options);
+ $filterArray[$index] = $filter;
+ }
+ }
+ $this->filterCollection = collect($filterArray);
+ }
+ }
+}
diff --git a/src/Traits/Filters/HandlesPillsData.php b/src/Traits/Filters/HandlesPillsData.php
new file mode 100644
index 000000000..84dd1e642
--- /dev/null
+++ b/src/Traits/Filters/HandlesPillsData.php
@@ -0,0 +1,55 @@
+getAppliedFiltersWithValuesForPills() as $filterSelectName => $value) {
+ if (! is_null($filter = $this->getFilterByKey($filterSelectName))) {
+ if ($filter->isEmpty($value)) {
+ continue;
+ }
+ $customPillBlade = null;
+ $isAnExternalLivewireFilter = (method_exists($filter, 'isAnExternalLivewireFilter') && $filter->isAnExternalLivewireFilter());
+ $separator = method_exists($filter, 'getPillsSeparator') ? $filter->getPillsSeparator() : ', ';
+ $separatedValues = null;
+
+ // dd($value);
+
+ if ($hasCustomPillBlade = $filter->hasCustomPillBlade()) {
+ $customPillBlade = $filter->getCustomPillBlade();
+ }
+
+ if (is_array($value) && ! empty($value)) {
+ $separatedValues = implode($separator, $filter->getFilterPillValue($value));
+ }
+
+ $filters[$filter->getKey()] = FilterPillData::make(
+ customPillBlade: $customPillBlade,
+ filterPillsItemAttributes: array_merge($this->getFilterPillsItemAttributes(), ($filter->hasPillAttributes() ? $filter->getPillAttributes() : [])),
+
+ filterPillTitle: $filter->getFilterPillTitle(),
+ filterPillValue: $filter->getFilterPillValue($value),
+
+ filterSelectName: $filterSelectName,
+
+ hasCustomPillBlade: $hasCustomPillBlade,
+ isAnExternalLivewireFilter: $isAnExternalLivewireFilter,
+ separatedValues: $separatedValues,
+ separator: method_exists($filter, 'getPillsSeparator') ? $filter->getPillsSeparator() : ', ',
+ renderPillsAsHtml: $filter->getPillsAreHtml() ?? false,
+ customResetButtonAttributes: $filter->getPillResetButtonAttributes(),
+
+ );
+ }
+ }
+
+ return $filters;
+ }
+}
diff --git a/src/Traits/Filters/HasFilterCore.php b/src/Traits/Filters/HasFilterCore.php
new file mode 100644
index 000000000..6b667f6b1
--- /dev/null
+++ b/src/Traits/Filters/HasFilterCore.php
@@ -0,0 +1,45 @@
+restoreFilterValues();
+
+ foreach ($this->getFilters() as $filter) {
+ if (method_exists($filter, 'isAnExternalLivewireFilter')) {
+ $this->tableHasExternalFilters = true;
+ }
+ if (! isset($this->appliedFilters[$filter->getKey()])) {
+ if ($filter->hasFilterDefaultValue()) {
+ $this->setFilter($filter->getKey(), $filter->getFilterDefaultValue());
+ } else {
+ $this->resetFilter($filter);
+ }
+ } else {
+ $this->setFilter($filter->getKey(), $this->appliedFilters[$filter->getKey()]);
+ }
+ }
+ }
+
+ public function bootedHasFilterCore(): void
+ {
+ $this->setBuilder($this->builder());
+
+ foreach ($this->filterComponents as $filterKey => $value) {
+ $this->appliedFilters[$filterKey] = $value;
+ }
+ }
+}
diff --git a/src/Traits/Filters/HasFilterPills.php b/src/Traits/Filters/HasFilterPills.php
index ad94d9ba3..2267c64b3 100644
--- a/src/Traits/Filters/HasFilterPills.php
+++ b/src/Traits/Filters/HasFilterPills.php
@@ -15,4 +15,12 @@ trait HasFilterPills
#[Locked]
public bool $filterPillsStatus = true;
+
+ public array $externalFilterPillsValues = [];
+
+ public array $internalFilterPillsVals = ['name' => null];
+
+ public array $externalFilterPillsLength = [];
+
+ public array $internalFilterPillsLength = [];
}
diff --git a/src/Traits/Filters/Helpers/FilterHelpers.php b/src/Traits/Filters/Helpers/FilterHelpers.php
index 0c538653e..b6843a7ba 100644
--- a/src/Traits/Filters/Helpers/FilterHelpers.php
+++ b/src/Traits/Filters/Helpers/FilterHelpers.php
@@ -111,4 +111,14 @@ public function getAppliedFiltersWithValuesCount(): int
{
return count($this->getAppliedFiltersWithValues());
}
+
+ public function getAppliedFiltersCollection(): Collection
+ {
+ $validFilterKeys = $this->getFilters()
+ ->map(fn (Filter $filter) => $filter->getKey())
+ ->toArray();
+
+ return collect($this->filterComponents ?? [])
+ ->filter(fn ($value, $key) => in_array($key, $validFilterKeys, true));
+ }
}
diff --git a/src/Traits/Filters/Helpers/FilterPillsHelpers.php b/src/Traits/Filters/Helpers/FilterPillsHelpers.php
index f12cad696..5f881b81b 100644
--- a/src/Traits/Filters/Helpers/FilterPillsHelpers.php
+++ b/src/Traits/Filters/Helpers/FilterPillsHelpers.php
@@ -4,13 +4,14 @@
use Livewire\Attributes\Computed;
use Rappasoft\LaravelLivewireTables\Views\Filter;
+use Rappasoft\LaravelLivewireTables\Views\Filters\BooleanFilter;
trait FilterPillsHelpers
{
#[Computed]
public function showFilterPillsSection(): bool
{
- return $this->filtersAreEnabled() && $this->filterPillsAreEnabled() && $this->hasAppliedVisibleFiltersForPills();
+ return $this->filtersAreEnabled() && $this->filterPillsAreEnabled() && ($this->getAppliedFiltersWithValuesForPillsCount() > 0);
}
public function getFilterPillsStatus(): bool
@@ -35,4 +36,36 @@ public function hasAppliedVisibleFiltersForPills(): bool
->reject(fn (Filter $filter) => $filter->isHiddenFromPills())
->count() > 0;
}
+
+ /**
+ * @return array
+ */
+ public function getAppliedFiltersWithValuesForPills(): array
+ {
+ return $this->appliedFilters = array_filter($this->getAppliedFilters(), function ($item, $key) {
+ $filter = $this->getFilterByKey($key);
+ if ($filter->isHiddenFromPills() || is_null($item)) {
+ return false;
+ }
+
+ $validatedValue = $filter->validate($item);
+ if ($filter instanceof BooleanFilter) {
+ return ! ($filter->isEmpty($validatedValue));
+ } elseif ($validatedValue === null || $validatedValue === 'null') {
+ return false;
+ } elseif (is_array($validatedValue)) {
+ if (array_key_exists(0, $validatedValue) && (is_null($validatedValue[0]) || $validatedValue[0] == 'null')) {
+ return false;
+ }
+ }
+
+ return is_array($validatedValue) ? count($validatedValue) : $validatedValue !== null;
+ }, ARRAY_FILTER_USE_BOTH);
+ }
+
+ public function getAppliedFiltersWithValuesForPillsCount(): int
+ {
+ return count($this->getAppliedFiltersWithValuesForPills());
+
+ }
}
diff --git a/src/Traits/Filters/Helpers/FilterVisibilityHelpers.php b/src/Traits/Filters/Helpers/FilterVisibilityHelpers.php
index e66efc516..6efd5391d 100644
--- a/src/Traits/Filters/Helpers/FilterVisibilityHelpers.php
+++ b/src/Traits/Filters/Helpers/FilterVisibilityHelpers.php
@@ -3,6 +3,7 @@
namespace Rappasoft\LaravelLivewireTables\Traits\Filters\Helpers;
use Illuminate\Support\Collection;
+use Livewire\Attributes\Computed;
use Rappasoft\LaravelLivewireTables\Views\Filter;
trait FilterVisibilityHelpers
@@ -29,6 +30,12 @@ public function hasVisibleFilters(): bool
->count() > 0;
}
+ #[Computed]
+ public function showFiltersButton(): bool
+ {
+ return $this->filtersAreEnabled() && $this->filtersVisibilityIsEnabled() && $this->hasVisibleFilters();
+ }
+
/**
* Get whether filter has a configured slide down row.
*/
diff --git a/src/Traits/Filters/Styling/Configuration/FilterPillsStylingConfiguration.php b/src/Traits/Filters/Styling/Configuration/FilterPillsStylingConfiguration.php
index 107428920..358705c75 100644
--- a/src/Traits/Filters/Styling/Configuration/FilterPillsStylingConfiguration.php
+++ b/src/Traits/Filters/Styling/Configuration/FilterPillsStylingConfiguration.php
@@ -4,18 +4,41 @@
trait FilterPillsStylingConfiguration
{
- protected function setFilterPillsItemAttributes(array $attributes = []): self
+ protected function setShowFilterPillsWhileLoading(bool $status): self
{
- return $this->mergeCustomAttributes(propertyName: 'filterPillsItemAttributes', customAttributes: $attributes);
+ $this->showFilterPillsWhileLoading = $status;
+
+ return $this;
+ }
+
+ protected function showFilterPillsWhileLoadingEnabled(): self
+ {
+ return $this->setShowFilterPillsWhileLoading(true);
}
- protected function setFilterPillsResetFilterButtonAttributes(array $attributes = []): self
+ protected function showFilterPillsWhileLoadingDisabled(): self
{
- return $this->mergeCustomAttributes(propertyName: 'filterPillsResetFilterButtonAttributes', customAttributes: $attributes);
+ return $this->setShowFilterPillsWhileLoading(false);
}
- protected function setFilterPillsResetAllButtonAttributes(array $attributes = []): self
+ public function setFilterPillsItemAttributes(array $attributes = []): self
{
- return $this->mergeCustomAttributes(propertyName: 'filterPillsResetAllButtonAttributes', customAttributes: $attributes);
+ $this->filterPillsItemAttributes = [...$this->filterPillsItemAttributes, ...$attributes];
+
+ return $this;
+ }
+
+ public function setFilterPillsResetFilterButtonAttributes(array $attributes = []): self
+ {
+ $this->filterPillsResetFilterButtonAttributes = [...$this->filterPillsResetFilterButtonAttributes, ...$attributes];
+
+ return $this;
+ }
+
+ public function setFilterPillsResetAllButtonAttributes(array $attributes = []): self
+ {
+ $this->filterPillsResetAllButtonAttributes = [...$this->filterPillsResetAllButtonAttributes, ...$attributes];
+
+ return $this;
}
}
diff --git a/src/Traits/Filters/Styling/HasFilterPillsStyling.php b/src/Traits/Filters/Styling/HasFilterPillsStyling.php
index 78c0b829a..8012d14d7 100644
--- a/src/Traits/Filters/Styling/HasFilterPillsStyling.php
+++ b/src/Traits/Filters/Styling/HasFilterPillsStyling.php
@@ -15,4 +15,6 @@ trait HasFilterPillsStyling
protected array $filterPillsResetFilterButtonAttributes = ['class' => '', 'default-colors' => true, 'default-styling' => true];
protected array $filterPillsResetAllButtonAttributes = ['class' => '', 'default-colors' => true, 'default-styling' => true];
+
+ protected bool $showFilterPillsWhileLoading = true;
}
diff --git a/src/Traits/Filters/Styling/Helpers/FilterPillsStylingHelpers.php b/src/Traits/Filters/Styling/Helpers/FilterPillsStylingHelpers.php
index c3bd0d9d5..cfa10c377 100644
--- a/src/Traits/Filters/Styling/Helpers/FilterPillsStylingHelpers.php
+++ b/src/Traits/Filters/Styling/Helpers/FilterPillsStylingHelpers.php
@@ -6,6 +6,12 @@
trait FilterPillsStylingHelpers
{
+ #[Computed]
+ public function displayFilterPillsWhileLoading(): bool
+ {
+ return $this->showFilterPillsWhileLoading;
+ }
+
#[Computed]
public function getFilterPillsItemAttributes(): array
{
diff --git a/src/Traits/Helpers/ActionsHelpers.php b/src/Traits/Helpers/ActionsHelpers.php
index 47b3880c1..87217a3e7 100644
--- a/src/Traits/Helpers/ActionsHelpers.php
+++ b/src/Traits/Helpers/ActionsHelpers.php
@@ -8,6 +8,18 @@
trait ActionsHelpers
{
+ #[Computed]
+ public function showActionsInToolbarLeft(): bool
+ {
+ return $this->hasActions() && $this->showActionsInToolbar() && $this->getActionsPosition() === 'left';
+ }
+
+ #[Computed]
+ public function showActionsInToolbarRight(): bool
+ {
+ return $this->hasActions() && $this->showActionsInToolbar() && $this->getActionsPosition() === 'right';
+ }
+
#[Computed]
public function showActionsInToolbar(): bool
{
diff --git a/src/Traits/Helpers/ColumnSelectHelpers.php b/src/Traits/Helpers/ColumnSelectHelpers.php
index 3a856f4e8..7071fc6d2 100644
--- a/src/Traits/Helpers/ColumnSelectHelpers.php
+++ b/src/Traits/Helpers/ColumnSelectHelpers.php
@@ -14,6 +14,7 @@ public function getColumnSelectStatus(): bool
return $this->columnSelectStatus;
}
+ #[Computed]
public function columnSelectIsEnabled(): bool
{
return $this->getColumnSelectStatus() === true;
diff --git a/src/Traits/Helpers/PaginationHelpers.php b/src/Traits/Helpers/PaginationHelpers.php
index 801ee7a49..bb1d19cb2 100644
--- a/src/Traits/Helpers/PaginationHelpers.php
+++ b/src/Traits/Helpers/PaginationHelpers.php
@@ -27,6 +27,12 @@ public function getPaginationTheme(): string
return $this->paginationTheme;
}
+ #[Computed]
+ public function showPaginationDropdown(): bool
+ {
+ return $this->paginationIsEnabled() && $this->perPageVisibilityIsEnabled();
+ }
+
#[Computed]
public function paginationIsEnabled(): bool
{
diff --git a/src/Traits/Helpers/ReorderingHelpers.php b/src/Traits/Helpers/ReorderingHelpers.php
index df431d21c..608bbb595 100644
--- a/src/Traits/Helpers/ReorderingHelpers.php
+++ b/src/Traits/Helpers/ReorderingHelpers.php
@@ -17,6 +17,13 @@ public function getReorderStatus(): bool
return $this->reorderStatus;
}
+ #[Computed]
+ public function showReorderButton(): bool
+ {
+ return $this->getReorderStatus() === true;
+ }
+
+ #[Computed]
public function reorderIsEnabled(): bool
{
return $this->getReorderStatus() === true;
diff --git a/src/Traits/Styling/Configuration/FilterPillsStylingConfiguration.php b/src/Traits/Styling/Configuration/FilterPillsStylingConfiguration.php
deleted file mode 100644
index 049b82d1d..000000000
--- a/src/Traits/Styling/Configuration/FilterPillsStylingConfiguration.php
+++ /dev/null
@@ -1,27 +0,0 @@
-filterPillsItemAttributes = [...$this->filterPillsItemAttributes, ...$attributes];
-
- return $this;
- }
-
- public function setFilterPillsResetFilterButtonAttributes(array $attributes = []): self
- {
- $this->filterPillsResetFilterButtonAttributes = [...$this->filterPillsResetFilterButtonAttributes, ...$attributes];
-
- return $this;
- }
-
- public function setFilterPillsResetAllButtonAttributes(array $attributes = []): self
- {
- $this->filterPillsResetAllButtonAttributes = [...$this->filterPillsResetAllButtonAttributes, ...$attributes];
-
- return $this;
- }
-}
diff --git a/src/Traits/Styling/Helpers/FilterPillsStylingHelpers.php b/src/Traits/Styling/Helpers/FilterPillsStylingHelpers.php
deleted file mode 100644
index 2de5e1f6a..000000000
--- a/src/Traits/Styling/Helpers/FilterPillsStylingHelpers.php
+++ /dev/null
@@ -1,26 +0,0 @@
-filterPillsItemAttributes;
- }
-
- #[Computed]
- public function getFilterPillsResetFilterButtonAttributes(): array
- {
- return $this->filterPillsResetFilterButtonAttributes;
- }
-
- #[Computed]
- public function getFilterPillsResetAllButtonAttributes(): array
- {
- return $this->filterPillsResetAllButtonAttributes;
- }
-}
diff --git a/src/Traits/Styling/Helpers/ToolsStylingHelpers.php b/src/Traits/Styling/Helpers/ToolsStylingHelpers.php
index 95aa8684f..f211e9014 100644
--- a/src/Traits/Styling/Helpers/ToolsStylingHelpers.php
+++ b/src/Traits/Styling/Helpers/ToolsStylingHelpers.php
@@ -7,7 +7,8 @@
trait ToolsStylingHelpers
{
- protected function getToolsAttributes(): array
+ #[Computed]
+ public function getToolsAttributes(): array
{
return $this->getCustomAttributes(propertyName: 'toolsAttributes', default: false, classicMode: false);
}
diff --git a/src/Traits/WithFilters.php b/src/Traits/WithFilters.php
index 08f66a8a8..ea8108784 100644
--- a/src/Traits/WithFilters.php
+++ b/src/Traits/WithFilters.php
@@ -4,17 +4,19 @@
use Illuminate\Support\Collection;
use Livewire\Attributes\Locked;
-use Rappasoft\LaravelLivewireTables\Traits\Filters\{HasFilterGenericData, HasFilterMenu, HasFilterPills, HasFilterQueryString, HasFiltersCore, HasFiltersStatus, HasFiltersVisibility};
+use Rappasoft\LaravelLivewireTables\Traits\Filters\{HandlesLivewireComponentFilters, HandlesPillsData, HasFilterGenericData, HasFilterMenu, HasFilterPills, HasFilterQueryString, HasFiltersCore, HasFiltersStatus, HasFiltersVisibility};
trait WithFilters
{
use HasFiltersStatus,
HasFilterGenericData,
HasFilterMenu,
+ HandlesPillsData,
HasFilterPills,
HasFilterQueryString,
HasFiltersVisibility,
- HasFiltersCore;
+ HasFiltersCore,
+ HandlesLivewireComponentFilters;
// Set in JS
public array $filterComponents = [];
diff --git a/src/Views/Filters/LivewireComponentArrayFilter.php b/src/Views/Filters/LivewireComponentArrayFilter.php
index bc5ed5f92..6570baa07 100644
--- a/src/Views/Filters/LivewireComponentArrayFilter.php
+++ b/src/Views/Filters/LivewireComponentArrayFilter.php
@@ -18,13 +18,16 @@ class LivewireComponentArrayFilter extends Filter
public function validate(array $value): array|bool
{
+ if (! $this->isEmpty($value)) {
+ return $value;
+ }
- return $value;
+ return [];
}
public function isEmpty(array $value = []): bool
{
- return empty($value) || (count($value) == 1 && (is_null($value[0]) || $value[0] == ''));
+ return empty($value) || (count($value) == 1 && (is_null($value[0]) || $value[0] == '' || $value[0] == 'null'));
}
/**
diff --git a/src/Views/Filters/Traits/FilterConfiguration.php b/src/Views/Filters/Traits/FilterConfiguration.php
index 2bf3f11b5..95c9eb1ca 100644
--- a/src/Views/Filters/Traits/FilterConfiguration.php
+++ b/src/Views/Filters/Traits/FilterConfiguration.php
@@ -4,56 +4,6 @@
trait FilterConfiguration
{
- public function setFilterPillTitle(string $title): self
- {
- $this->filterPillTitle = $title;
-
- return $this;
- }
-
- /**
- * @param array $values
- */
- public function setFilterPillValues(array $values): self
- {
- $this->filterPillValues = $values;
-
- return $this;
- }
-
- public function notResetByClearButton(): self
- {
- $this->resetByClearButton = false;
-
- return $this;
- }
-
- public function setCustomFilterLabel(string $filterCustomLabel): self
- {
- $this->filterCustomLabel = $filterCustomLabel;
-
- return $this;
- }
-
- public function setFilterPillBlade(string $blade): self
- {
- $this->filterCustomPillBlade = $blade;
-
- return $this;
- }
-
- /**
- * Sets a Default Value via the Filter Component
- *
- * @param mixed $value
- */
- public function setFilterDefaultValue($value): self
- {
- $this->filterDefaultValue = $value;
-
- return $this;
- }
-
public function setGenericDisplayData(array $genericDisplayData = []): self
{
$this->genericDisplayData = [
diff --git a/src/Views/Filters/Traits/FilterHelpers.php b/src/Views/Filters/Traits/FilterHelpers.php
index 10af4f5d2..c5807d703 100644
--- a/src/Views/Filters/Traits/FilterHelpers.php
+++ b/src/Views/Filters/Traits/FilterHelpers.php
@@ -32,14 +32,6 @@ public function getKeys(): array
return [];
}
- /**
- * Get the filter options.
- */
- public function getDefaultValue(): mixed
- {
- return null;
- }
-
public function filter(callable $callback): Filter
{
$this->filterCallback = $callback;
@@ -57,82 +49,6 @@ public function getFilterCallback(): callable
return $this->filterCallback;
}
- public function getCustomFilterPillTitle(): ?string
- {
- return $this->filterPillTitle;
- }
-
- public function getFilterPillTitle(): string
- {
- return $this->getCustomFilterPillTitle() ?? $this->getName();
- }
-
- /**
- * @param mixed $value
- */
- public function getFilterPillValue($value): array|string|bool|null
- {
- return $value;
- }
-
- /**
- * @return array
- */
- public function getCustomFilterPillValues(): array
- {
- return $this->filterPillValues;
- }
-
- public function getCustomFilterPillValue(string $value): ?string
- {
- return $this->getCustomFilterPillValues()[$value] ?? null;
- }
-
- public function isResetByClearButton(): bool
- {
- return $this->resetByClearButton === true;
- }
-
- /**
- * Returns whether the filter has a custom label blade
- */
- public function hasCustomFilterLabel(): bool
- {
- return ! is_null($this->filterCustomLabel);
- }
-
- /**
- * Returns the path to the custom filter label blade
- */
- public function getCustomFilterLabel(): string
- {
- return $this->filterCustomLabel ?? '';
- }
-
- /**
- * Determine if filter has a Custom Pill Blade
- */
- public function hasCustomPillBlade(): bool
- {
- return $this->filterCustomPillBlade != null;
- }
-
- /**
- * Get the path to the Custom Pill Blade
- */
- public function getCustomPillBlade(): ?string
- {
- return $this->filterCustomPillBlade;
- }
-
- /**
- * Determines if the Filter has a Default Value via the Component
- */
- public function hasFilterDefaultValue(): bool
- {
- return ! is_null($this->filterDefaultValue);
- }
-
public function generateWireKey(string $tableName, string $filterType, string $extraData = ''): string
{
return $tableName.'-filter-'.$filterType.'-'.$this->getKey().($extraData != '' ? '-'.$extraData : '').($this->hasCustomPosition() ? '-'.$this->getCustomPosition() : '');
diff --git a/src/Views/Filters/Traits/HandlesClearButton.php b/src/Views/Filters/Traits/HandlesClearButton.php
new file mode 100644
index 000000000..8e9a27573
--- /dev/null
+++ b/src/Views/Filters/Traits/HandlesClearButton.php
@@ -0,0 +1,20 @@
+resetByClearButton === true;
+ }
+
+ public function notResetByClearButton(): self
+ {
+ $this->resetByClearButton = false;
+
+ return $this;
+ }
+}
diff --git a/src/Views/Filters/Traits/HandlesDates.php b/src/Views/Filters/Traits/HandlesDates.php
index c0870f013..2c2aa33b8 100644
--- a/src/Views/Filters/Traits/HandlesDates.php
+++ b/src/Views/Filters/Traits/HandlesDates.php
@@ -3,10 +3,11 @@
namespace Rappasoft\LaravelLivewireTables\Views\Filters\Traits;
use Carbon\Carbon;
+use Rappasoft\LaravelLivewireTables\Views\Filters\Traits\Pills\HandlesPillsLocale;
trait HandlesDates
{
- use HasPillsLocale;
+ use HandlesPillsLocale;
protected string $inputDateFormat;
diff --git a/src/Views/Filters/Traits/HandlesDefaultValue.php b/src/Views/Filters/Traits/HandlesDefaultValue.php
new file mode 100644
index 000000000..b2d731062
--- /dev/null
+++ b/src/Views/Filters/Traits/HandlesDefaultValue.php
@@ -0,0 +1,36 @@
+filterDefaultValue = $value;
+
+ return $this;
+ }
+
+ /**
+ * Get the filter options.
+ */
+ public function getDefaultValue(): mixed
+ {
+ return null;
+ }
+
+ /**
+ * Determines if the Filter has a Default Value via the Component
+ */
+ public function hasFilterDefaultValue(): bool
+ {
+ return ! is_null($this->filterDefaultValue);
+ }
+}
diff --git a/src/Views/Filters/Traits/HasFilterLabel.php b/src/Views/Filters/Traits/HasFilterLabel.php
new file mode 100644
index 000000000..ad672e798
--- /dev/null
+++ b/src/Views/Filters/Traits/HasFilterLabel.php
@@ -0,0 +1,35 @@
+filterCustomLabel = $filterCustomLabel;
+
+ return $this;
+ }
+
+ /**
+ * Returns whether the filter has a custom label blade
+ */
+ public function hasCustomFilterLabel(): bool
+ {
+ return ! is_null($this->filterCustomLabel);
+ }
+
+ /**
+ * Returns the path to the custom filter label blade
+ */
+ public function getCustomFilterLabel(): string
+ {
+ return $this->filterCustomLabel ?? '';
+ }
+}
diff --git a/src/Views/Filters/Traits/HasFilterPills.php b/src/Views/Filters/Traits/HasFilterPills.php
new file mode 100644
index 000000000..4d5e151af
--- /dev/null
+++ b/src/Views/Filters/Traits/HasFilterPills.php
@@ -0,0 +1,66 @@
+filterPillTitle = $title;
+
+ return $this;
+ }
+
+ /**
+ * @param array $values
+ */
+ public function setFilterPillValues(array $values): self
+ {
+ $this->filterPillValues = $values;
+
+ return $this;
+ }
+
+ public function getCustomFilterPillTitle(): ?string
+ {
+ return $this->filterPillTitle;
+ }
+
+ public function getFilterPillTitle(): string
+ {
+ return $this->getCustomFilterPillTitle() ?? $this->getName();
+ }
+
+ /**
+ * @param mixed $value
+ */
+ public function getFilterPillValue($value): array|string|bool|null
+ {
+ return $value;
+ }
+
+ /**
+ * @return array
+ */
+ public function getCustomFilterPillValues(): array
+ {
+ return $this->filterPillValues;
+ }
+
+ public function getCustomFilterPillValue(string $value): ?string
+ {
+ return $this->getCustomFilterPillValues()[$value] ?? null;
+ }
+}
diff --git a/src/Views/Filters/Traits/IsExternalArrayFilter.php b/src/Views/Filters/Traits/IsExternalArrayFilter.php
index 1c09a2b62..412ac5552 100644
--- a/src/Views/Filters/Traits/IsExternalArrayFilter.php
+++ b/src/Views/Filters/Traits/IsExternalArrayFilter.php
@@ -59,7 +59,7 @@ protected function sendUpdateDispatch(array $returnValues): void
}
#[Renderless]
- public function renderingIsExternalArrayFilter(): void
+ public function renderingIsExternalArrayFilter(\Illuminate\View\View $view, array $data = []): void
{
$returnValues = [];
diff --git a/src/Views/Filters/Traits/IsFilter.php b/src/Views/Filters/Traits/IsFilter.php
index 61cd61a4d..a59ee33ab 100644
--- a/src/Views/Filters/Traits/IsFilter.php
+++ b/src/Views/Filters/Traits/IsFilter.php
@@ -3,12 +3,15 @@
namespace Rappasoft\LaravelLivewireTables\Views\Filters\Traits;
use Rappasoft\LaravelLivewireTables\Traits\Core\HasLocalisations;
-use Rappasoft\LaravelLivewireTables\Views\Filters\Traits\Styling\{HandlesFilterInputAttributes, HandlesFilterLabelAttributes};
+use Rappasoft\LaravelLivewireTables\Views\Filters\Traits\Styling\{HandlesFilterInputAttributes};
use Rappasoft\LaravelLivewireTables\Views\Traits\Core\{HasConfig, HasLabelAttributes, HasView};
trait IsFilter
{
- use HasLocalisations,
+ use HandlesDefaultValue,
+ HasLocalisations,
+ HasFilterPills,
+ HasFilterLabel,
FilterConfiguration,
FilterHelpers,
HasConfig,
@@ -17,25 +20,13 @@ trait IsFilter
HasVisibility,
HasView,
HandlesFilterInputAttributes,
- HandlesFilterLabelAttributes;
+ HandlesClearButton;
protected string $name;
protected string $key;
- protected bool $resetByClearButton = true;
-
protected mixed $filterCallback = null;
- protected ?string $filterPillTitle = null;
-
- protected array $filterPillValues = [];
-
- protected ?string $filterCustomLabel = null;
-
- protected ?string $filterCustomPillBlade = null;
-
- protected mixed $filterDefaultValue = null;
-
public array $genericDisplayData = [];
}
diff --git a/src/Views/Filters/Traits/IsLivewireComponentFilter.php b/src/Views/Filters/Traits/IsLivewireComponentFilter.php
index 9d05a0b95..32dfd3919 100644
--- a/src/Views/Filters/Traits/IsLivewireComponentFilter.php
+++ b/src/Views/Filters/Traits/IsLivewireComponentFilter.php
@@ -8,6 +8,11 @@ trait IsLivewireComponentFilter
{
public string $livewireComponent = '';
+ public function isAnExternalLivewireFilter(): bool
+ {
+ return true;
+ }
+
public function setLivewireComponent(string $livewireComponent): self
{
diff --git a/src/Views/Filters/Traits/Pills/HandlesPillsAsHtml.php b/src/Views/Filters/Traits/Pills/HandlesPillsAsHtml.php
new file mode 100644
index 000000000..5bc37449c
--- /dev/null
+++ b/src/Views/Filters/Traits/Pills/HandlesPillsAsHtml.php
@@ -0,0 +1,30 @@
+pillsAsHtml ?? false;
+ }
+
+ public function setPillsAsHtml(bool $status = true): self
+ {
+ $this->pillsAsHtml = $status;
+
+ return $this;
+ }
+
+ public function setPillsAsHtmlEnabled(): self
+ {
+ return $this->setPillsAsHtml(true);
+ }
+
+ public function setPillsAsHtmlDisabled(): self
+ {
+ return $this->setPillsAsHtml(false);
+ }
+}
diff --git a/src/Views/Filters/Traits/Pills/HandlesPillsCustomBlade.php b/src/Views/Filters/Traits/Pills/HandlesPillsCustomBlade.php
new file mode 100644
index 000000000..f8550a7c7
--- /dev/null
+++ b/src/Views/Filters/Traits/Pills/HandlesPillsCustomBlade.php
@@ -0,0 +1,31 @@
+filterCustomPillBlade = $blade;
+
+ return $this;
+ }
+
+ /**
+ * Determine if filter has a Custom Pill Blade
+ */
+ public function hasCustomPillBlade(): bool
+ {
+ return $this->filterCustomPillBlade != null;
+ }
+
+ /**
+ * Get the path to the Custom Pill Blade
+ */
+ public function getCustomPillBlade(): ?string
+ {
+ return $this->filterCustomPillBlade;
+ }
+}
diff --git a/src/Views/Filters/Traits/HasPillsLocale.php b/src/Views/Filters/Traits/Pills/HandlesPillsLocale.php
similarity index 83%
rename from src/Views/Filters/Traits/HasPillsLocale.php
rename to src/Views/Filters/Traits/Pills/HandlesPillsLocale.php
index 52b196c22..77d84552b 100644
--- a/src/Views/Filters/Traits/HasPillsLocale.php
+++ b/src/Views/Filters/Traits/Pills/HandlesPillsLocale.php
@@ -1,8 +1,8 @@
+ */
+ protected array $pillAttributes = [];
+
+ /**
+ * [Description for $pillResetButtonAttributes]
+ *
+ * @var array
+ */
+ protected array $pillResetButtonAttributes = [];
+
+ public function getPillAttributesBag(): ComponentAttributeBag
+ {
+ return new ComponentAttributeBag($this->getPillAttributes());
+ }
+
+ public function hasPillAttributes(): bool
+ {
+ return ! empty($this->pillAttributes);
+ }
+
+ /**
+ * [Description for getPillAttributes]
+ *
+ * @return array
+ */
+ public function getPillAttributes(): array
+ {
+ $attributes = array_merge(['default-colors' => true, 'default-styling' => true], $this->pillAttributes);
+ ksort($attributes);
+
+ return $attributes;
+ }
+
+ public function setPillAttributes(array $pillAttributes): self
+ {
+ $this->pillAttributes = array_merge([
+ 'default-colors' => true,
+ 'default-styling' => true,
+ ], $pillAttributes);
+
+ return $this;
+ }
+
+ public function setPillResetButtonAttributes(array $attributes = []): self
+ {
+ $this->pillResetButtonAttributes = [...$this->getPillResetButtonAttributes(), ...$attributes];
+
+ return $this;
+ }
+
+ public function getPillResetButtonAttributes(): array
+ {
+ return $this->pillResetButtonAttributes ?? [];
+ }
+
+ /**
+ * [Description for getFilterPillResetButtonAttributesMerged]
+ *
+ * @param array $resetFilterButtonAttributes
+ * @return array
+ */
+ public function getFilterPillResetButtonAttributesMerged(array $resetFilterButtonAttributes): array
+ {
+ return array_merge(
+ [
+ 'x-on:click.prevent' => "resetSpecificFilter('".$this->getKey()."')",
+ 'type' => 'button',
+ ],
+ $resetFilterButtonAttributes,
+ $this->getPillResetButtonAttributes()
+ );
+ }
+}
diff --git a/tests/Unit/DataTransferObjects/FilterPillDataTest.php b/tests/Unit/DataTransferObjects/FilterPillDataTest.php
new file mode 100644
index 000000000..70727c012
--- /dev/null
+++ b/tests/Unit/DataTransferObjects/FilterPillDataTest.php
@@ -0,0 +1,183 @@
+ true, 'default-colors' => true, 'default-styling' => true, 'default-text' => true];
+ $defaultData = [
+ 'filterPillTitle' => $filterPillTitle,
+ 'filterSelectName' => $filterSelectName,
+ 'filterPillValue' => $filterPillValue,
+ 'isAnExternalLivewireFilter' => $isAnExternalLivewireFilter,
+ 'hasCustomPillBlade' => $hasCustomPillBlade,
+ 'customPillBlade' => $customPillBlade,
+ 'separator' => $separator,
+ 'filterPillsItemAttributes' => $filterPillsItemAttributes,
+ 'renderPillsAsHtml' => $renderPillsAsHtml,
+ 'watchForEvents' => $watchForEvents,
+ 'separatedValues' => 'filterPillValue',
+ ];
+
+ $dto = FilterPillData::make($filterPillTitle, $filterSelectName, $filterPillValue, $separator, $isAnExternalLivewireFilter, $hasCustomPillBlade, $customPillBlade, $filterPillsItemAttributes);
+ $dtoArray = $dto->toArray();
+
+ ksort($defaultData);
+ ksort($dtoArray);
+
+ $this->assertSame($defaultData, $dtoArray);
+ }
+
+ public function test_can_get_filter_title()
+ {
+ $filterPillTitle = 'filterPillTitle';
+ $filterSelectName = 'filterSelectName';
+ $filterPillValue = 'filterPillValue';
+ $separator = ' , ';
+ $isAnExternalLivewireFilter = false;
+ $hasCustomPillBlade = true;
+ $customPillBlade = 'test-blade';
+ $filterPillsItemAttributes = ['default' => true, 'default-colors' => true, 'default-styling' => true];
+ $dto = FilterPillData::make($filterPillTitle, $filterSelectName, $filterPillValue, $separator, $isAnExternalLivewireFilter, $hasCustomPillBlade, $customPillBlade, $filterPillsItemAttributes);
+ $this->assertSame($dto->getTitle(), $filterPillTitle);
+ }
+
+ public function test_can_get_filter_select_name()
+ {
+ $filterPillTitle = 'filterPillTitle';
+ $filterSelectName = 'filterSelectName';
+ $filterPillValue = 'filterPillValue';
+ $separator = ' , ';
+ $isAnExternalLivewireFilter = false;
+ $hasCustomPillBlade = true;
+ $customPillBlade = 'test-blade';
+ $filterPillsItemAttributes = ['default' => true, 'default-colors' => true, 'default-styling' => true];
+ $dto = FilterPillData::make($filterPillTitle, $filterSelectName, $filterPillValue, $separator, $isAnExternalLivewireFilter, $hasCustomPillBlade, $customPillBlade, $filterPillsItemAttributes);
+ $this->assertSame($dto->getSelectName(), $filterSelectName);
+ }
+
+ public function test_can_get_filter_value()
+ {
+ $filterPillTitle = 'filterPillTitle';
+ $filterSelectName = 'filterSelectName';
+ $filterPillValue = 'filterPillValue';
+ $separator = ' , ';
+ $isAnExternalLivewireFilter = false;
+ $hasCustomPillBlade = true;
+ $customPillBlade = 'test-blade';
+ $filterPillsItemAttributes = ['default' => true, 'default-colors' => true, 'default-styling' => true];
+ $dto = FilterPillData::make($filterPillTitle, $filterSelectName, $filterPillValue, $separator, $isAnExternalLivewireFilter, $hasCustomPillBlade, $customPillBlade, $filterPillsItemAttributes);
+ $this->assertSame($dto->getPillValue(), $filterPillValue);
+ }
+
+ public function test_can_get_filter_value_is_an_array()
+ {
+ $filterPillTitle = 'filterPillTitle';
+ $filterSelectName = 'filterSelectName';
+ $filterPillValue = 'filterPillValue';
+ $separator = ' , ';
+ $isAnExternalLivewireFilter = false;
+ $hasCustomPillBlade = true;
+ $customPillBlade = 'test-blade';
+ $filterPillsItemAttributes = ['default' => true, 'default-colors' => true, 'default-styling' => true];
+ $dto = FilterPillData::make($filterPillTitle, $filterSelectName, $filterPillValue, $separator, $isAnExternalLivewireFilter, $hasCustomPillBlade, $customPillBlade, $filterPillsItemAttributes);
+ $this->assertFalse($dto->isPillValueAnArray());
+ $filterPillValue = ['test123', 'test345'];
+ $dto = FilterPillData::make($filterPillTitle, $filterSelectName, $filterPillValue, $separator, $isAnExternalLivewireFilter, $hasCustomPillBlade, $customPillBlade, $filterPillsItemAttributes);
+ $this->assertTrue($dto->isPillValueAnArray());
+ }
+
+ public function test_can_get_separated_pill_value()
+ {
+ $filterPillTitle = 'filterPillTitle';
+ $filterSelectName = 'filterSelectName';
+ $filterPillValue = ['test123', 'test345'];
+ $separator = ' , ';
+ $isAnExternalLivewireFilter = false;
+ $hasCustomPillBlade = true;
+ $customPillBlade = 'test-blade';
+ $filterPillsItemAttributes = ['default' => true, 'default-colors' => true, 'default-styling' => true];
+ $dto = FilterPillData::make($filterPillTitle, $filterSelectName, $filterPillValue, $separator, $isAnExternalLivewireFilter, $hasCustomPillBlade, $customPillBlade, $filterPillsItemAttributes);
+ $this->assertTrue($dto->isPillValueAnArray());
+ $this->assertSame($dto->getSeparatedPillValue(), 'test123 , test345');
+
+ }
+
+ public function test_can_check_if_has_custom_pill_blade()
+ {
+ $filterPillTitle = 'filterPillTitle';
+ $filterSelectName = 'filterSelectName';
+ $filterPillValue = 'filterPillValue';
+ $separator = ' , ';
+ $isAnExternalLivewireFilter = false;
+ $hasCustomPillBlade = true;
+ $customPillBlade = 'test-blade';
+ $filterPillsItemAttributes = ['default' => true, 'default-colors' => true, 'default-styling' => true];
+ $dto = FilterPillData::make($filterPillTitle, $filterSelectName, $filterPillValue, $separator, $isAnExternalLivewireFilter, $hasCustomPillBlade, $customPillBlade, $filterPillsItemAttributes);
+ $this->assertTrue($dto->getHasCustomPillBlade());
+ $this->assertTrue($dto->hasCustomPillBlade);
+ }
+
+ public function test_can_get_custom_pill_blade()
+ {
+ $filterPillTitle = 'filterPillTitle';
+ $filterSelectName = 'filterSelectName';
+ $filterPillValue = 'filterPillValue';
+ $separator = ' , ';
+ $isAnExternalLivewireFilter = false;
+ $hasCustomPillBlade = true;
+ $customPillBlade = 'test-blade';
+ $filterPillsItemAttributes = ['default' => true, 'default-colors' => true, 'default-styling' => true];
+ $dto = FilterPillData::make($filterPillTitle, $filterSelectName, $filterPillValue, $separator, $isAnExternalLivewireFilter, $hasCustomPillBlade, $customPillBlade, $filterPillsItemAttributes);
+ $this->assertSame($dto->getCustomPillBlade(), $customPillBlade);
+ }
+
+ public function test_can_get_filter_pill_display_data_html()
+ {
+ $filterPillTitle = 'filterPillTitle';
+ $filterSelectName = 'filterSelectName';
+ $filterPillValue = 'filterPillValue';
+ $separator = ' , ';
+ $isAnExternalLivewireFilter = true;
+ $hasCustomPillBlade = true;
+ $customPillBlade = 'test-blade';
+ $filterPillsItemAttributes = ['default' => true, 'default-colors' => true, 'default-styling' => true];
+ $dto = FilterPillData::make($filterPillTitle, $filterSelectName, $filterPillValue, $separator, $isAnExternalLivewireFilter, $hasCustomPillBlade, $customPillBlade, $filterPillsItemAttributes, '', true, false, []);
+ $displayData = $dto->getExternalFilterPillDisplayData();
+ $bag = new ComponentAttributeBag(['x-html' => 'displayString']);
+
+ $this->assertSame($displayData->getAttributes(), $bag->getAttributes());
+ }
+
+ public function test_can_get_filter_pill_display_data_non_html()
+ {
+ $filterPillTitle = 'filterPillTitle';
+ $filterSelectName = 'filterSelectName';
+ $filterPillValue = 'filterPillValue';
+ $separator = ' , ';
+ $isAnExternalLivewireFilter = false;
+ $hasCustomPillBlade = true;
+ $customPillBlade = 'test-blade';
+ $filterPillsItemAttributes = ['default' => true, 'default-colors' => true, 'default-styling' => true];
+ $dto = FilterPillData::make($filterPillTitle, $filterSelectName, $filterPillValue, $separator, $isAnExternalLivewireFilter, $hasCustomPillBlade, $customPillBlade, $filterPillsItemAttributes);
+ $displayData = $dto->getExternalFilterPillDisplayData();
+ $bag = new ComponentAttributeBag(['x-text' => 'displayString']);
+
+ $this->assertSame($displayData->getAttributes(), $bag->getAttributes());
+ }
+}
diff --git a/tests/Unit/Views/Filters/FilterTestCase.php b/tests/Unit/Views/Filters/FilterTestCase.php
index 244557393..5375e4890 100644
--- a/tests/Unit/Views/Filters/FilterTestCase.php
+++ b/tests/Unit/Views/Filters/FilterTestCase.php
@@ -2,6 +2,7 @@
namespace Rappasoft\LaravelLivewireTables\Tests\Unit\Views\Filters;
+use Illuminate\View\ComponentAttributeBag;
use PHPUnit\Framework\Attributes\Group;
use Rappasoft\LaravelLivewireTables\Tests\TestCase;
@@ -154,6 +155,94 @@ public function test_can_set_custom_input_attributes(): void
}
$this->assertSame($standardAttributes, $currentAttributeBag);
+ }
+
+ public function test_can_get_custom_pill_attributes(): void
+ {
+ $filter = self::$filterInstance;
+
+ $attributes = array_merge(['default-colors' => true, 'default-styling' => true], []);
+ ksort($attributes);
+
+ $this->assertSame($attributes, $filter->getPillAttributes());
+
+ }
+
+ public function test_can_set_custom_pill_attributes(): void
+ {
+ $filter = self::$filterInstance;
+
+ $attributes = array_merge(['default-colors' => true, 'default-styling' => true], []);
+ ksort($attributes);
+
+ $this->assertSame($attributes, $filter->getPillAttributes());
+ $attributes = array_merge(['class' => 'bg-red-500', 'default-colors' => true, 'default-styling' => true], []);
+ ksort($attributes);
+
+ $filter->setPillAttributes(['class' => 'bg-red-500']);
+
+ $this->assertSame($attributes, $filter->getPillAttributes());
+
+ }
+
+ public function test_can_set_custom_pill_attributes_bag(): void
+ {
+ $attributes = array_merge(['class' => 'bg-red-500', 'default-colors' => true, 'default-styling' => true], []);
+ ksort($attributes);
+ $filter = self::$filterInstance;
+ $filter->setPillAttributes(['class' => 'bg-red-500']);
+ $bag = new ComponentAttributeBag($attributes);
+
+ $this->assertSame($bag->getAttributes(), $filter->getPillAttributesBag()->getAttributes());
+
+ }
+
+ public function test_can_get_default_reset_attributes(): void
+ {
+ $filter = self::$filterInstance;
+
+ $this->assertSame($filter->getPillResetButtonAttributes(), []);
+ }
+
+ public function test_can_get_default_reset_attributes_merged(): void
+ {
+ $filter = self::$filterInstance;
+
+ $this->assertSame($filter->getFilterPillResetButtonAttributesMerged([]), [
+ 'x-on:click.prevent' => "resetSpecificFilter('".$filter->getKey()."')",
+ 'type' => 'button',
+ ]);
+ }
+
+ public function test_can_set_custom_reset_attributes(): void
+ {
+ $filter = self::$filterInstance;
+ $filter->setPillResetButtonAttributes(['class' => 'bg-red-500']);
+ $this->assertSame($filter->getPillResetButtonAttributes(), ['class' => 'bg-red-500']);
+ }
+
+ public function test_can_get_reset_attributes_merged(): void
+ {
+ $filter = self::$filterInstance;
+
+ $this->assertSame($filter->getFilterPillResetButtonAttributesMerged(['class' => 'bg-red-500']), [
+ 'x-on:click.prevent' => "resetSpecificFilter('".$filter->getKey()."')",
+ 'type' => 'button',
+ 'class' => 'bg-red-500',
+ ]);
+ }
+
+ public function test_can_set_reset_attributes_merged(): void
+ {
+ $filter = self::$filterInstance;
+
+ $filter->setPillResetButtonAttributes(['class' => 'bg-blue-500']);
+
+ $this->assertSame($filter->getFilterPillResetButtonAttributesMerged($filter->getPillResetButtonAttributes()), [
+ 'x-on:click.prevent' => "resetSpecificFilter('".$filter->getKey()."')",
+ 'type' => 'button',
+ 'class' => 'bg-blue-500',
+ ]);
}
}