Skip to content

Commit

Permalink
1377 the multiselect filter is displayed without a label and selectin…
Browse files Browse the repository at this point in the history
…g an item triggers an exception (#1380)

* Fix multiselect label

* Fix multiselect, datetime clear

* Clear

* Fix initialValues

* Remove debug
  • Loading branch information
luanfreitasdev committed Feb 3, 2024
1 parent f291b19 commit 059a82b
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,11 @@ class="pg-filter-container"
@if ($className->contains('FilterMultiSelect'))
<x-livewire-powergrid::inputs.select
:inline="false"
:tableName="$tableName"
:table-name="$tableName"
:filter="$filter"
:theme="data_get($theme, 'filterMultiSelect')"
:initialValues="data_get(data_get($filter, 'multi_select'), data_get($filter, 'field'), [])"
:title="$title"
:initial-values="data_get(data_get($filter, 'multi_select'), data_get($filter, 'field'), [])"
/>
@elseif ($className->contains(['FilterDateTimePicker', 'FilterDatePicker']))
@includeIf(data_get($theme, 'filterDatePicker.view'), [
Expand Down
9 changes: 3 additions & 6 deletions resources/views/components/inline-filters.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,11 @@ class="{{ data_get($theme, 'table.tdBodyClass') }}"
<div wire:key="filter-{{ data_get($column, 'field') }}-{{ $loop->index }}">
@if ($filterClass->contains('FilterMultiSelect'))
<x-livewire-powergrid::inputs.select
:tableName="$tableName"
:table-name="$tableName"
:title="data_get($column, 'title')"
:filter="(array) data_get($column, 'filters')"
:theme="data_get($theme, 'filterMultiSelect')"
:initialValues="data_get(
data_get($column, 'filters.multi_select'),
data_get($column, 'filters.field'),
[],
)"
:initial-values="data_get($filters, 'multi_select.'.data_get($column, 'dataField'))"
/>
@elseif ($filterClass->contains(['FilterSelect', 'FilterEnumSelect']))
@includeIf(data_get($theme, 'filterSelect.view'), [
Expand Down
8 changes: 5 additions & 3 deletions resources/views/components/inputs/select.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
'tableName' => null,
'multiple' => true,
'initialValues' => [],
'title' => ''
])

@php
Expand All @@ -22,7 +23,7 @@
$params = [
'tableName' => $tableName,
'label' => data_get($filter, 'title'),
'label' => $title,
'dataField' => data_get($filter, 'field'),
'optionValue' => data_get($filter, 'optionValue'),
'optionLabel' => data_get($filter, 'optionLabel'),
Expand Down Expand Up @@ -53,7 +54,7 @@ class="{{ data_get($theme, 'baseClass') }}"
>
@if (!$inline)
<label class="block text-sm font-medium text-gray-700 dark:text-gray-400">
{{ data_get($filter, 'title') }}
{{ $title }}
</label>
@endif
<select
Expand All @@ -65,7 +66,8 @@ class="{{ data_get($theme, 'selectClass') }}"
<option value="">{{ trans('livewire-powergrid::datatable.multi_select.all') }}</option>
@if (blank(data_get($params, 'asyncData', [])))
@foreach ($collection->toArray() as $item)
<option value="{{ data_get($item, data_get($filter, 'optionValue')) }}">
<option wire:key="multi-select-option-{{ $loop->index }}"
value="{{ data_get($item, data_get($filter, 'optionValue')) }}">
{{ data_get($item, data_get($filter, 'optionLabel')) }}
</option>
@endforeach
Expand Down
11 changes: 3 additions & 8 deletions src/Concerns/Filter.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ trait Filter
{
public array $filters = [];

public array $test = [];

public array $filtered = [];

public array $enabledFilters = [];
Expand Down Expand Up @@ -52,10 +50,10 @@ public function clearFilter(string $field = '', bool $emit = true): void
}

unset($currentArray[$lastIndex]);
} else {
unset($this->filters[$key][$field]);
}

unset($this->filters[$key][$field]);

$this->enabledFilters = array_filter(
$this->enabledFilters,
fn ($filter) => $filter['field'] !== ($column ?? $field)
Expand Down Expand Up @@ -147,10 +145,7 @@ public function multiSelectChanged(

data_set($this->filters, "multi_select.$field", $values);

$this->enabledFilters[] = [
'field' => $field,
'label' => $label,
];
$this->addEnabledFilters($field, $label);

if (count($values) === 0) {
$this->clearFilter($field, emit: false);
Expand Down

0 comments on commit 059a82b

Please sign in to comment.