I was curious and looked into your plugin yesterday evening.
'datalist' => '<input type="text" id="{{id}}" name="{{name}}" list="datalist-{{id}}" autocomplete="off"{{inputAttrs}}><datalist id="datalist-{{id}}"{{datalistAttrs}}>{{content}}</datalist>',
$default = isset($data['val']) ? $data['val'] : null;
unset(...);
$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' => $data['id'],
]
);
Also, no constructor overwrite needed, or interface implement (parent does that).