null, 'name' => '', 'empty' => false, 'escape' => true, 'options' => [], 'disabled' => null, 'val' => null, 'input' => [], 'keys' => false, 'templateVars' => [], ]; $options = $this->_renderContent($data); if (!$data['keys']) { $options = str_replace( 'value', 'data-value', $options ); } $name = $data['name']; $id = $data['id'] ?: Text::slug($name); $default = isset($data['val']) ? $data['val'] : null; $inputData = $data['input'] + [ 'id' => $id, 'name' => $name, 'autocomplete' => 'off', ]; unset($data['name'], $data['options'], $data['empty'], $data['val'], $data['escape'], $data['keys'], $data['input'], $data['id']); if (isset($data['disabled']) && is_array($data['disabled'])) { unset($data['disabled']); } $inputData['value'] = $default; $inputAttrs = $this->_templates->formatAttributes($inputData); $datalistAttrs = $this->_templates->formatAttributes($data); return $this->_templates->format( 'datalist', [ 'name' => $name, 'inputAttrs' => $inputAttrs, 'datalistAttrs' => $datalistAttrs, 'content' => implode('', $options), 'id' => $id, ] ); } }