@@ -2255,23 +2255,11 @@ def __init__(self, single_line=True, hint='', *args, **kwargs):
22552255 self .type = 'textarea'
22562256
22572257 self .single_line = single_line
2258+ self .attributes ['single_line' ] = 'false'
22582259 if single_line :
22592260 self .style ['resize' ] = 'none'
22602261 self .attributes ['rows' ] = '1'
2261- self .attributes [self .EVENT_ONINPUT ] = """
2262- var elem = document.getElementById('%(emitter_identifier)s');
2263- var enter_pressed = (elem.value.indexOf('\\ n') > -1);
2264- if(enter_pressed){
2265- elem.value = elem.value.split('\\ n').join('');
2266- var params={};params['new_value']=elem.value;
2267- remi.sendCallbackParam('%(emitter_identifier)s','%(event_name)s',params);
2268- }""" % {'emitter_identifier' : str (self .identifier ), 'event_name' : Widget .EVENT_ONCHANGE }
2269- #else:
2270- # self.attributes[self.EVENT_ONINPUT] = """
2271- # var elem = document.getElementById('%(emitter_identifier)s');
2272- # var params={};params['new_value']=elem.value;
2273- # remi.sendCallbackParam('%(emitter_identifier)s','%(event_name)s',params);
2274- # """ % {'emitter_identifier': str(self.identifier), 'event_name': Widget.EVENT_ONCHANGE}
2262+ self .attributes ['single_line' ] = 'true'
22752263
22762264 self .set_value ('' )
22772265
@@ -2303,7 +2291,29 @@ def get_value(self):
23032291 return self .get_text ()
23042292
23052293 @decorate_set_on_listener ("(self, emitter, new_value)" )
2306- @decorate_event
2294+ @decorate_event_js ("""
2295+ var is_single_line = (parseInt(document.getElementById('%(emitter_identifier)s').getAttribute('rows')) < 2);
2296+ var elem = document.getElementById('%(emitter_identifier)s');
2297+ var enter_pressed = (elem.value.indexOf('\\ n') > -1);
2298+ if(enter_pressed && is_single_line){
2299+ elem.value = elem.value.split('\\ n').join('');
2300+ }
2301+ var params={};
2302+ params['new_value']=elem.value;
2303+ params['enter_pressed']=enter_pressed;
2304+ remi.sendCallbackParam('%(emitter_identifier)s','%(event_name)s',params);
2305+ """ )
2306+ def oninput (self , new_value , enter_pressed ):
2307+ enter_pressed = enter_pressed in ('True' , 'true' )
2308+ if self .single_line and enter_pressed :
2309+ self .onchange (new_value )
2310+ return (new_value ,)
2311+
2312+ @decorate_set_on_listener ("(self, emitter, new_value)" )
2313+ @decorate_event_js ("""
2314+ var params={};
2315+ params['new_value']=document.getElementById('%(emitter_identifier)s').value;
2316+ remi.sendCallbackParam('%(emitter_identifier)s','%(event_name)s',params);""" )
23072317 def onchange (self , new_value ):
23082318 """Called when the user changes the TextInput content.
23092319 With single_line=True it fires in case of focus lost and Enter key pressed.
0 commit comments