Skip to content

Commit 1860e5d

Browse files
committed
WIP on from_to filter
1 parent cde5bb7 commit 1860e5d

3 files changed

Lines changed: 23 additions & 8 deletions

File tree

Component/Grid/GridViewModel.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Loki\AdminComponents\Component\Grid;
44

55
use Loki\AdminComponents\Grid\Column\Column;
6+
use Loki\AdminComponents\Grid\Filter\Filter;
67
use Loki\AdminComponents\Grid\Filter\FilterFactory;
78
use Loki\AdminComponents\Grid\Filter\StaticFilterInterface;
89
use Loki\AdminComponents\Grid\State\FilterState;
@@ -356,8 +357,19 @@ public function getGridFilterStates(): array
356357
private function getGridFilterStateValues(): array
357358
{
358359
$values = [];
359-
foreach ($this->getGridFilterStates() as $gridFilterState) {
360-
$values[$gridFilterState->getField()] = $gridFilterState->getValue();
360+
foreach ($this->getGridFilters() as $gridFilter) {
361+
$gridFilterState = $this->getState()->getFilterState($gridFilter->getCode());
362+
$value = $gridFilterState instanceof FilterState ? $gridFilterState->getValue() : null;
363+
364+
// @todo: This needs to be moved elsewhere, perhaps default value of Filter class?
365+
if ($gridFilter->getConditionType() === 'from_to' && $value === null) {
366+
$value = [
367+
'from' => null,
368+
'to' => null
369+
];
370+
}
371+
372+
$values[$gridFilter->getCode()] = $value;
361373
}
362374

363375
return $values;

Grid/State/FilterState.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class FilterState implements \JsonSerializable
77
{
88
public function __construct(
99
private string $field,
10-
private string $value,
10+
private string|array|null $value,
1111
private string $conditionType,
1212
) {
1313
}
@@ -17,7 +17,7 @@ public function getField(): string
1717
return $this->field;
1818
}
1919

20-
public function getValue(): string
20+
public function getValue(): string|array|null
2121
{
2222
return $this->value;
2323
}

view/adminhtml/templates/form/field_type/from_to.phtml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,22 @@ $fieldType = $field->getFieldType();
2020
?>
2121
<div class="">
2222
<div class="admin__form-field">
23-
<label class="admin__form-field-label">
23+
<label
24+
for="<?= $escaper->escapeHtml($field->getScope()) ?>.<?= $escaper->escapeHtml($field->getCode()) ?>"
25+
class="admin__form-field-label">
2426
<span>from</span>
2527
</label>
2628

2729
<div class="admin__form-field-control">
2830
<input
31+
id="<?= $escaper->escapeHtml($field->getScope()) ?>.<?= $escaper->escapeHtml($field->getCode()) ?>"
2932
class="admin__control-text"
3033
type="text"
3134
data-name="<?= $escaper->escapeHtml($field->getCode()) ?>"
3235
maxlength="<?= $escaper->escapeHtml(
3336
$fieldType->getMaximumLength()
3437
) ?>"
35-
:value="<?= $escaper->escapeHtml($field->getScope()) ?>.<?= $escaper->escapeHtml($field->getCode()) ?>"
38+
:value="<?= $escaper->escapeHtml($field->getScope()) ?>.<?= $escaper->escapeHtml($field->getCode()) ?>.from"
3639
@change="<?= $escaper->escapeHtml($field->getAlpineSetter()) ?>"
3740
placeholder="<?= $escaper->escapeHtml(
3841
$field->getBlock()->getPlaceholder()
@@ -54,8 +57,8 @@ $fieldType = $field->getFieldType();
5457
maxlength="<?= $escaper->escapeHtml(
5558
$fieldType->getMaximumLength()
5659
) ?>"
57-
:value="<?= $escaper->escapeHtml($field->getScope()) ?>.<?= $escaper->escapeHtml($field->getCode()) ?>"
58-
@change="setValue"
60+
:value="<?= $escaper->escapeHtml($field->getScope()) ?>.<?= $escaper->escapeHtml($field->getCode()) ?>.to"
61+
@change="<?= $escaper->escapeHtml($field->getAlpineSetter()) ?>"
5962
placeholder="<?= $escaper->escapeHtml(
6063
$field->getBlock()->getPlaceholder()
6164
) ?>"

0 commit comments

Comments
 (0)