+ @endif
+
@foreach($this->availableColumns() as $section => $columns)
-
- @foreach($columns as $columnKey => $column)
-
-
-
-
- @endforeach
+
implode(',') !!}].some(label => label.toLowerCase().includes(search.toLowerCase()))">
+
{{ $section }}
+
+ @foreach($columns as $columnKey => $column)
+
+
+
+
+ @endforeach
+
@endforeach
diff --git a/src/Support/Concerns/WithReportBuilder.php b/src/Support/Concerns/WithReportBuilder.php
index 78d849d..788090f 100644
--- a/src/Support/Concerns/WithReportBuilder.php
+++ b/src/Support/Concerns/WithReportBuilder.php
@@ -30,6 +30,8 @@ trait WithReportBuilder
public bool $enableGroupBy = false;
+ public bool $enableColumnSearch = true;
+
private function findElementByKey(array $array, $targetValue): ?array
{
foreach ($array as $value) {
diff --git a/tests/ReportEditorColumnSearchTest.php b/tests/ReportEditorColumnSearchTest.php
new file mode 100644
index 0000000..25a189f
--- /dev/null
+++ b/tests/ReportEditorColumnSearchTest.php
@@ -0,0 +1,50 @@
+enableColumnSearch)->toBeTrue();
+});
+
+it('report editor view contains the column search markup', function () {
+ $viewContent = file_get_contents(
+ __DIR__.'/../resources/views/report-editor.blade.php'
+ );
+
+ expect($viewContent)
+ ->toContain('x-model="search"')
+ ->toContain('placeholder="Search columns..."')
+ ->toContain('enableColumnSearch')
+ ->toContain("search: ''");
+});
+
+it('report editor view wraps search input in enableColumnSearch conditional', function () {
+ $viewContent = file_get_contents(
+ __DIR__.'/../resources/views/report-editor.blade.php'
+ );
+
+ expect($viewContent)
+ ->toContain('@if($this->enableColumnSearch)')
+ ->toContain('.toLowerCase().includes(search.toLowerCase())');
+});
+
+it('report editor view adds x-show filtering to individual column checkboxes', function () {
+ $viewContent = file_get_contents(
+ __DIR__.'/../resources/views/report-editor.blade.php'
+ );
+
+ expect($viewContent)
+ ->toContain("x-show=\"'{{ e(\$column['label']) }}'.toLowerCase().includes(search.toLowerCase())\"");
+});
+
+it('report editor view adds x-show filtering to section wrappers', function () {
+ $viewContent = file_get_contents(
+ __DIR__.'/../resources/views/report-editor.blade.php'
+ );
+
+ expect($viewContent)
+ ->toContain('.some(label => label.toLowerCase().includes(search.toLowerCase()))');
+});