53 lines
919 B
JavaScript
53 lines
919 B
JavaScript
|
|
module.exports = new Class
|
|
({
|
|
Extends: Htk.Field
|
|
,Tag: 'htk-search-entry'
|
|
|
|
,render: function ()
|
|
{
|
|
var div = this.createRoot ('div');
|
|
div.className = 'htk-search-entry';
|
|
|
|
var icon = new Htk.Icon ({
|
|
icon: 'search',
|
|
alt: _('Search')
|
|
});
|
|
div.appendChild (icon.node);
|
|
|
|
var input = this.createElement ('input');
|
|
input.className = 'entry';
|
|
input.type = 'text';
|
|
input.placeholder = _('Search');
|
|
input.addEventListener ('change', this._onChange.bind (this));
|
|
div.appendChild (input);
|
|
|
|
this._input = input;
|
|
}
|
|
|
|
,_onChange: function (event)
|
|
{
|
|
var newValue;
|
|
|
|
if (this._input.value === '')
|
|
newValue = undefined;
|
|
else
|
|
newValue = this._input.value;
|
|
|
|
this.valueChanged (newValue);
|
|
}
|
|
|
|
,putValue: function (value)
|
|
{
|
|
if (!value)
|
|
this._input.value = '';
|
|
else
|
|
this._input.value = value;
|
|
}
|
|
|
|
,setEditable: function (editable)
|
|
{
|
|
this.node.readOnly = !editable;
|
|
}
|
|
});
|