mirror of
https://github.com/wassname/baukit.git
synced 2026-06-27 17:14:53 +08:00
Add textarea.
This commit is contained in:
@@ -648,6 +648,37 @@ class Numberbox(Widget):
|
||||
return show.emit_tag('input', self.std_attrs(),
|
||||
type='numeric', value=self.value, size=self.size)
|
||||
|
||||
class Textarea(Widget):
|
||||
def __init__(self, value='', style=None, **kwargs):
|
||||
super().__init__(style=defaulted(style, display='inline-block'), **kwargs)
|
||||
# databinding is defined using Property objects.
|
||||
self.value = Property(value)
|
||||
|
||||
def widget_js(self):
|
||||
# Both "model" and "element" objects are defined within the scope
|
||||
# where the js is run. "element" looks for the element with id
|
||||
# self.view_id(); if widget_html is overridden, this id should be used.
|
||||
return minify('''
|
||||
element.value = model.get('value');
|
||||
element.addEventListener('keydown', (e) => {
|
||||
if (e.code == 'Enter') {
|
||||
model.set('value', element.value);
|
||||
}
|
||||
});
|
||||
element.addEventListener('blur', (e) => {
|
||||
model.set('value', element.value);
|
||||
});
|
||||
model.on('value', (ev) => {
|
||||
element.value = model.get('value');
|
||||
});
|
||||
''')
|
||||
|
||||
def widget_html(self):
|
||||
out = []
|
||||
with show.enter_tag('textarea', self.std_attrs(), out=out):
|
||||
out.append(html.escape(self.value))
|
||||
return ''.join(out)
|
||||
|
||||
class Range(Widget):
|
||||
def __init__(self, value=50, min=0, max=100, step=1, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
|
||||
Reference in New Issue
Block a user