From 17cac1da9e0d035e94474f9d73c6c40041497ef4 Mon Sep 17 00:00:00 2001 From: Elisio Leonardo Date: Wed, 14 May 2025 09:00:35 +0200 Subject: [PATCH 1/3] Implementing outside filters with bootstrap --- .../frameworks/bootstrap5/filter.blade.php | 85 +++++++++++++++++++ .../frameworks/bootstrap5/header.blade.php | 4 + .../bootstrap5/header/filters.blade.php | 14 +++ .../bootstrap5/table-base.blade.php | 18 ++++ 4 files changed, 121 insertions(+) create mode 100644 resources/views/components/frameworks/bootstrap5/filter.blade.php create mode 100644 resources/views/components/frameworks/bootstrap5/header/filters.blade.php diff --git a/resources/views/components/frameworks/bootstrap5/filter.blade.php b/resources/views/components/frameworks/bootstrap5/filter.blade.php new file mode 100644 index 00000000..26ba8621 --- /dev/null +++ b/resources/views/components/frameworks/bootstrap5/filter.blade.php @@ -0,0 +1,85 @@ +@props([ + 'columns' => null, + 'theme' => null, + 'tableName' => null, + 'filtersFromColumns' => null, + 'showFilters' => false, +]) +
+
+ @php + $customConfig = []; + @endphp +
+ @foreach ($filtersFromColumns as $column) + @php + $filter = data_get($column, 'filters'); + $title = data_get($column, 'title'); + $baseClass = data_get($filter, 'baseClass'); + $className = str(data_get($filter, 'className')); + @endphp + +
+
+
+ {{ $title }} +
+
+ @if ($className->contains('FilterMultiSelect')) + + @elseif ($className->contains(['FilterDateTimePicker', 'FilterDatePicker'])) + @includeIf(theme_style($theme, 'filterDatePicker.view'), [ + 'filter' => $filter, + 'tableName' => $tableName, + 'classAttr' => 'w-full', + 'type' => $className->contains('FilterDateTimePicker') ? 'datetime' : 'date', + ]) + @elseif ($className->contains(['FilterSelect', 'FilterEnumSelect'])) + @includeIf(theme_style($theme, 'filterSelect.view'), [ + 'filter' => $filter, + ]) + @elseif ($className->contains('FilterNumber')) + @includeIf(theme_style($theme, 'filterNumber.view'), [ + 'filter' => $filter, + ]) + @elseif ($className->contains('FilterInputText')) + @includeIf(theme_style($theme, 'filterInputText.view'), [ + 'filter' => $filter, + ]) + @elseif ($className->contains('FilterBoolean')) + @includeIf(theme_style($theme, 'filterBoolean.view'), [ + 'filter' => $filter, + ]) + @elseif ($className->contains('FilterDynamic')) + + @endif +
+
+
+ @endforeach +
+
+
diff --git a/resources/views/components/frameworks/bootstrap5/header.blade.php b/resources/views/components/frameworks/bootstrap5/header.blade.php index 7ca71448..c61755f3 100644 --- a/resources/views/components/frameworks/bootstrap5/header.blade.php +++ b/resources/views/components/frameworks/bootstrap5/header.blade.php @@ -14,6 +14,10 @@ @include(data_get($theme, 'root') . '.header.toggle-columns') @includeIf(data_get($theme, 'root') . '.header.soft-deletes') + @if (config('livewire-powergrid.filter') === 'outside') + @include(data_get($theme, 'root') . '.header.filters') + @endif + @includeWhen(boolval(data_get($setUp, 'header.wireLoading')), data_get($theme, 'root') . '.header.loading') diff --git a/resources/views/components/frameworks/bootstrap5/header/filters.blade.php b/resources/views/components/frameworks/bootstrap5/header/filters.blade.php new file mode 100644 index 00000000..763ff68d --- /dev/null +++ b/resources/views/components/frameworks/bootstrap5/header/filters.blade.php @@ -0,0 +1,14 @@ +
+ +
diff --git a/resources/views/components/frameworks/bootstrap5/table-base.blade.php b/resources/views/components/frameworks/bootstrap5/table-base.blade.php index b3274692..f2c26395 100644 --- a/resources/views/components/frameworks/bootstrap5/table-base.blade.php +++ b/resources/views/components/frameworks/bootstrap5/table-base.blade.php @@ -9,6 +9,24 @@ 'enabledFilters' => $enabledFilters, ]) + + @if (config('livewire-powergrid.filter') === 'outside') + @php + $filtersFromColumns = $columns + ->filter(fn($column) => filled(data_get($column, 'filters'))); + @endphp + + @if ($filtersFromColumns->count() > 0) + + @endif + @endif +
From bc9d06ed1a7fe2a8ccaf271fd019f544e665d72a Mon Sep 17 00:00:00 2001 From: Elisio Leonardo Date: Wed, 14 May 2025 14:16:58 +0200 Subject: [PATCH 2/3] Implementing outside filters with bootstrap --- .../frameworks/bootstrap5/filter.blade.php | 87 +++++++++---------- .../bootstrap5/filters/boolean.blade.php | 7 +- .../bootstrap5/filters/date-picker.blade.php | 39 +++++---- .../bootstrap5/filters/input-text.blade.php | 19 ++-- .../bootstrap5/filters/number.blade.php | 43 ++++----- .../bootstrap5/filters/select.blade.php | 59 +++++++------ .../bootstrap5/header/filters.blade.php | 4 +- 7 files changed, 133 insertions(+), 125 deletions(-) diff --git a/resources/views/components/frameworks/bootstrap5/filter.blade.php b/resources/views/components/frameworks/bootstrap5/filter.blade.php index 26ba8621..e41a4402 100644 --- a/resources/views/components/frameworks/bootstrap5/filter.blade.php +++ b/resources/views/components/frameworks/bootstrap5/filter.blade.php @@ -23,7 +23,7 @@ class="pg-filter-container" @php $customConfig = []; @endphp -
+
@foreach ($filtersFromColumns as $column) @php $filter = data_get($column, 'filters'); @@ -32,52 +32,45 @@ class="pg-filter-container" $className = str(data_get($filter, 'className')); @endphp -
-
-
- {{ $title }} -
-
- @if ($className->contains('FilterMultiSelect')) - - @elseif ($className->contains(['FilterDateTimePicker', 'FilterDatePicker'])) - @includeIf(theme_style($theme, 'filterDatePicker.view'), [ - 'filter' => $filter, - 'tableName' => $tableName, - 'classAttr' => 'w-full', - 'type' => $className->contains('FilterDateTimePicker') ? 'datetime' : 'date', - ]) - @elseif ($className->contains(['FilterSelect', 'FilterEnumSelect'])) - @includeIf(theme_style($theme, 'filterSelect.view'), [ - 'filter' => $filter, - ]) - @elseif ($className->contains('FilterNumber')) - @includeIf(theme_style($theme, 'filterNumber.view'), [ - 'filter' => $filter, - ]) - @elseif ($className->contains('FilterInputText')) - @includeIf(theme_style($theme, 'filterInputText.view'), [ - 'filter' => $filter, - ]) - @elseif ($className->contains('FilterBoolean')) - @includeIf(theme_style($theme, 'filterBoolean.view'), [ - 'filter' => $filter, - ]) - @elseif ($className->contains('FilterDynamic')) - - @endif -
-
+
+ @if ($className->contains('FilterMultiSelect')) + + @elseif ($className->contains(['FilterDateTimePicker', 'FilterDatePicker'])) + @includeIf(theme_style($theme, 'filterDatePicker.view'), [ + 'filter' => $filter, + 'tableName' => $tableName, + 'classAttr' => 'w-100', + 'type' => $className->contains('FilterDateTimePicker') ? 'datetime' : 'date', + ]) + @elseif ($className->contains(['FilterSelect', 'FilterEnumSelect'])) + @includeIf(theme_style($theme, 'filterSelect.view'), [ + 'filter' => $filter, + ]) + @elseif ($className->contains('FilterNumber')) + @includeIf(theme_style($theme, 'filterNumber.view'), [ + 'filter' => $filter, + ]) + @elseif ($className->contains('FilterInputText')) + @includeIf(theme_style($theme, 'filterInputText.view'), [ + 'filter' => $filter, + ]) + @elseif ($className->contains('FilterBoolean')) + @includeIf(theme_style($theme, 'filterBoolean.view'), [ + 'filter' => $filter, + ]) + @elseif ($className->contains('FilterDynamic')) + + @endif
@endforeach
diff --git a/resources/views/components/frameworks/bootstrap5/filters/boolean.blade.php b/resources/views/components/frameworks/bootstrap5/filters/boolean.blade.php index ec55a1cf..c6f86464 100644 --- a/resources/views/components/frameworks/bootstrap5/filters/boolean.blade.php +++ b/resources/views/components/frameworks/bootstrap5/filters/boolean.blade.php @@ -26,9 +26,10 @@ :attributes="new \Illuminate\View\ComponentAttributeBag($params)" /> @else -
+
+ @if (!$inline) + + @endif - +
+ @if (!$inline) + + @endif +
+
+
+ +
+
+
diff --git a/resources/views/components/frameworks/bootstrap5/filters/input-text.blade.php b/resources/views/components/frameworks/bootstrap5/filters/input-text.blade.php index 48c08904..e70ee3fb 100644 --- a/resources/views/components/frameworks/bootstrap5/filters/input-text.blade.php +++ b/resources/views/components/frameworks/bootstrap5/filters/input-text.blade.php @@ -47,13 +47,14 @@ :attributes="new \Illuminate\View\ComponentAttributeBag($params)" /> @else -
- @if ($showSelectOptions) -
+
+ @if (!$inline) + + @endif +
+ @if ($showSelectOptions) -
- @endif -
+ @endif
diff --git a/resources/views/components/frameworks/bootstrap5/filters/number.blade.php b/resources/views/components/frameworks/bootstrap5/filters/number.blade.php index e1882513..706d962c 100644 --- a/resources/views/components/frameworks/bootstrap5/filters/number.blade.php +++ b/resources/views/components/frameworks/bootstrap5/filters/number.blade.php @@ -29,26 +29,29 @@ :attributes="new \Illuminate\View\ComponentAttributeBag($params)" /> @else -
-
- -
-
- +
+ @if (!$inline) + + @endif +
+
+ +
+
+ +
@endif diff --git a/resources/views/components/frameworks/bootstrap5/filters/select.blade.php b/resources/views/components/frameworks/bootstrap5/filters/select.blade.php index 039e61f3..5e5473fe 100644 --- a/resources/views/components/frameworks/bootstrap5/filters/select.blade.php +++ b/resources/views/components/frameworks/bootstrap5/filters/select.blade.php @@ -26,34 +26,39 @@ :attributes="new \Illuminate\View\ComponentAttributeBag($params)" /> @else -
- - @if(!data_get($params, 'params.disableOptionAll', false)) - - @endif - - @php - $computedDatasource = data_get($filter, 'computedDatasource'); - $dataSource = filled($computedDatasource) - ? $this->{$computedDatasource} - : data_get($filter, 'dataSource'); - @endphp - - @foreach ($dataSource as $key => $item) - - @endforeach - + @if(!data_get($params, 'params.disableOptionAll', false)) + + @endif + + @php + $computedDatasource = data_get($filter, 'computedDatasource'); + $dataSource = filled($computedDatasource) + ? $this->{$computedDatasource} + : data_get($filter, 'dataSource'); + @endphp + + @foreach ($dataSource as $key => $item) + + @endforeach + +
@endif diff --git a/resources/views/components/frameworks/bootstrap5/header/filters.blade.php b/resources/views/components/frameworks/bootstrap5/header/filters.blade.php index 763ff68d..92a966e7 100644 --- a/resources/views/components/frameworks/bootstrap5/header/filters.blade.php +++ b/resources/views/components/frameworks/bootstrap5/header/filters.blade.php @@ -6,9 +6,9 @@ class="d-flex me-2 mt-2 mt-sm-0 gap-2"
From 5f5ad21c7fa5972132aae62f3633577c5b54cc77 Mon Sep 17 00:00:00 2001 From: luanfreitasdev Date: Sun, 18 May 2025 17:07:53 -0300 Subject: [PATCH 3/3] fix: correct wire:key syntax in filters.blade.php --- .../components/frameworks/bootstrap5/header/filters.blade.php | 2 +- .../components/frameworks/daisyui/header/filters.blade.php | 2 +- .../components/frameworks/tailwind/header/filters.blade.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/views/components/frameworks/bootstrap5/header/filters.blade.php b/resources/views/components/frameworks/bootstrap5/header/filters.blade.php index 92a966e7..98e90fca 100644 --- a/resources/views/components/frameworks/bootstrap5/header/filters.blade.php +++ b/resources/views/components/frameworks/bootstrap5/header/filters.blade.php @@ -1,5 +1,5 @@
diff --git a/resources/views/components/frameworks/daisyui/header/filters.blade.php b/resources/views/components/frameworks/daisyui/header/filters.blade.php index a8d2ed2f..e487c3fb 100644 --- a/resources/views/components/frameworks/daisyui/header/filters.blade.php +++ b/resources/views/components/frameworks/daisyui/header/filters.blade.php @@ -1,5 +1,5 @@
diff --git a/resources/views/components/frameworks/tailwind/header/filters.blade.php b/resources/views/components/frameworks/tailwind/header/filters.blade.php index 1a8efe14..d7667880 100644 --- a/resources/views/components/frameworks/tailwind/header/filters.blade.php +++ b/resources/views/components/frameworks/tailwind/header/filters.blade.php @@ -1,5 +1,5 @@