File tree Expand file tree Collapse file tree 3 files changed +47
-2
lines changed Expand file tree Collapse file tree 3 files changed +47
-2
lines changed Original file line number Diff line number Diff line change 4
4
>
5
5
<input {{ $attributes } } >
6
6
</div >
7
+
8
+ @empty (! $datalist )
9
+ <datalist id =" datalist-{{ $name } }" >
10
+ @foreach ($datalist as $item )
11
+ <option value =" {{ $item } }" >
12
+ @endforeach
13
+ </datalist >
14
+ @endempty
7
15
@endcomponent
Original file line number Diff line number Diff line change @@ -53,7 +53,8 @@ class Input extends Field
53
53
* @var array
54
54
*/
55
55
protected $ attributes = [
56
- 'class ' => 'form-control ' ,
56
+ 'class ' => 'form-control ' ,
57
+ 'datalist ' => [],
57
58
];
58
59
59
60
/**
@@ -105,4 +106,22 @@ public function __construct()
105
106
}
106
107
});
107
108
}
109
+
110
+ /**
111
+ * @param array $datalist
112
+ *
113
+ * @return Input
114
+ */
115
+ public function datalist (array $ datalist = []): self
116
+ {
117
+ if (empty ($ datalist )) {
118
+ return $ this ;
119
+ }
120
+
121
+ $ this ->set ('datalist ' , $ datalist );
122
+
123
+ return $ this ->addBeforeRender (function () {
124
+ $ this ->set ('list ' , 'datalist- ' .$ this ->get ('name ' ));
125
+ });
126
+ }
108
127
}
Original file line number Diff line number Diff line change 6
6
7
7
use Orchid \Screen \Fields \Input ;
8
8
use Orchid \Tests \Unit \Screen \TestFieldsUnitCase ;
9
+ use Throwable ;
9
10
10
11
class InputTest extends TestFieldsUnitCase
11
12
{
12
13
/**
13
- * @throws \ Throwable
14
+ * @throws Throwable
14
15
*/
15
16
public function testShowHr (): void
16
17
{
@@ -82,4 +83,21 @@ public function testRemoveBooleanAttributes(): void
82
83
83
84
$ this ->assertStringNotContainsString ('required ' , $ input );
84
85
}
86
+
87
+ public function testDataListAttribute (): void
88
+ {
89
+ $ input = (string ) Input::make ('browser ' )->datalist ([
90
+ 'Opera ' , 'Edge ' , 'Firefox ' ,
91
+ 'Chrome ' , 'Safari ' ,
92
+ ]);
93
+
94
+ $ this ->assertStringContainsString ('Safari ' , $ input );
95
+ $ this ->assertStringContainsString ('list="datalist-browser" ' , $ input );
96
+ $ this ->assertStringContainsString ('<datalist id="datalist-browser" ' , $ input );
97
+
98
+ $ input = (string ) Input::make ('browser ' )->datalist ([]);
99
+
100
+ $ this ->assertStringNotContainsString ('list="datalist-browser" ' , $ input );
101
+ $ this ->assertStringNotContainsString ('<datalist id="datalist-browser" ' , $ input );
102
+ }
85
103
}
You can’t perform that action at this time.
0 commit comments