Skip to content

Commit 3e60802

Browse files
committed
Implement filtering for array grids
1 parent 05bcd7a commit 3e60802

1 file changed

Lines changed: 27 additions & 0 deletions

File tree

ProviderHandler/ArrayHandler.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,33 @@ public function getItems(object $provider, GridState $gridState): array
7373
});
7474
}
7575

76+
foreach($gridState->getFilters() as $filter) {
77+
$items = match($filter->getConditionType()) {
78+
'like' => array_filter($items, function (DataObject $item) use ($filter) {
79+
return str_contains((string)$item->getData($filter->getField()), (string)$filter->getValue());
80+
}),
81+
'equals' => array_filter($items, function (DataObject $item) use ($filter) {
82+
return (string)$item->getData($filter->getField()) === (string)$filter->getValue();
83+
}),
84+
'from_to' => array_filter($items, function (DataObject $item) use ($filter) {
85+
$fieldValue = $item->getData($filter->getField());
86+
87+
$from = $filter->getValue()['from'] ?? '';
88+
if ($from !== '' && $fieldValue < $from) {
89+
return false;
90+
}
91+
92+
$to = $filter->getValue()['to'] ?? '';
93+
if ($to !== '' && $fieldValue > $to) {
94+
return false;
95+
}
96+
97+
return true;
98+
}),
99+
default => $items
100+
};
101+
}
102+
76103
$sortField = $gridState->getSortBy();
77104
$sortDirection = $gridState->getSortDirection();
78105
if (!empty($sortField)) {

0 commit comments

Comments
 (0)