@@ -4,6 +4,8 @@ use frender_events::{
44
55use frender_dom:: csr:: { self , web:: event_listener:: unpinned} ;
66
7+ use crate :: value:: { KindOfChecked , KindOfValue , KindOfValueAsNumber } ;
8+
79use super :: {
810 super :: value:: HandleFormControlValue , FormControlElement , HandleFormControlValueChange ,
911} ;
@@ -46,7 +48,7 @@ impl JsCastEventType for Change {
4648 }
4749}
4850
49- impl < Renderer : ?Sized + csr:: web:: Renderer > FormControlElement < str , Renderer >
51+ impl < Renderer : ?Sized + csr:: web:: Renderer > FormControlElement < KindOfValue , Renderer >
5052 for csr:: web:: Node <
5153 //
5254 web_sys:: HtmlTextAreaElement ,
@@ -64,116 +66,137 @@ impl<Renderer: ?Sized + csr::web::Renderer> FormControlElement<str, Renderer>
6466 . unwrap_throw ( )
6567 }
6668
69+ fn remove_default_value ( & mut self , renderer : & mut Renderer ) {
70+ self . set_default_value ( renderer, "" )
71+ }
72+
6773 fn remove_value ( & mut self , renderer : & mut Renderer ) {
6874 self . set_default_value ( renderer, "" ) ;
6975 self . set_value ( renderer, "" ) ;
7076 }
7177
72- type OnValueChangeEventListenerUnpinned < F : HandleFormControlValue < str > + ' static > =
73- unpinned:: EventListenerOfType < HandleFormControlValueChange < str , F > , Input > ;
78+ type OnValueChangeEventListenerUnpinned < F : HandleFormControlValue < KindOfValue > + ' static > =
79+ unpinned:: EventListenerOfType < HandleFormControlValueChange < KindOfValue , F > , Input > ;
7480
7581 type OnValueChangeElementUnpinned = Self ;
7682
7783 fn on_value_change_element_unpinned ( & mut self ) -> & mut Self :: OnValueChangeElementUnpinned {
7884 self
7985 }
8086
81- type OnValueChangeFUnpinned < F : HandleFormControlValue < str > + ' static > =
82- HandleFormControlValueChange < str , F > ;
87+ type OnValueChangeFUnpinned < F : HandleFormControlValue < KindOfValue > + ' static > =
88+ HandleFormControlValueChange < KindOfValue , F > ;
8389}
8490
85- impl < Renderer : ?Sized + csr:: web:: Renderer > FormControlElement < str , Renderer >
91+ impl < Renderer : ?Sized + csr:: web:: Renderer > FormControlElement < KindOfValue , Renderer >
8692 for csr:: web:: Node <
8793 //
8894 web_sys:: HtmlInputElement ,
8995 >
9096{
91- fn set_value ( & mut self , _: & mut Renderer , value : & str ) {
92- self . 0 . set_value ( value)
93- }
94-
9597 fn set_default_value ( & mut self , _: & mut Renderer , value : & str ) {
9698 self . 0 . set_default_value ( value)
9799 }
98100
101+ fn remove_default_value ( & mut self , renderer : & mut Renderer ) {
102+ <Self as FormControlElement < KindOfValue , Renderer > >:: set_default_value ( self , renderer, "" ) ;
103+ }
104+
105+ fn set_value ( & mut self , _: & mut Renderer , value : & str ) {
106+ self . 0 . set_value ( value)
107+ }
108+
99109 fn remove_value ( & mut self , renderer : & mut Renderer ) {
100- self . set_default_value ( renderer, "" ) ;
101- self . set_value ( renderer, "" ) ;
110+ < Self as FormControlElement < KindOfValue , Renderer > > :: set_default_value ( self , renderer, "" ) ;
111+ < Self as FormControlElement < KindOfValue , Renderer > > :: set_value ( self , renderer, "" ) ;
102112 }
103113
104- type OnValueChangeEventListenerUnpinned < F : HandleFormControlValue < str > + ' static > =
105- unpinned:: EventListenerOfType < HandleFormControlValueChange < str , F > , Input > ;
114+ type OnValueChangeEventListenerUnpinned < F : HandleFormControlValue < KindOfValue > + ' static > =
115+ unpinned:: EventListenerOfType < HandleFormControlValueChange < KindOfValue , F > , Input > ;
106116
107117 type OnValueChangeElementUnpinned = Self ;
108118
109119 fn on_value_change_element_unpinned ( & mut self ) -> & mut Self :: OnValueChangeElementUnpinned {
110120 self
111121 }
112122
113- type OnValueChangeFUnpinned < F : HandleFormControlValue < str > + ' static > =
114- HandleFormControlValueChange < str , F > ;
123+ type OnValueChangeFUnpinned < F : HandleFormControlValue < KindOfValue > + ' static > =
124+ HandleFormControlValueChange < KindOfValue , F > ;
115125}
116126
117- impl < Renderer : ?Sized + csr:: web:: Renderer > FormControlElement < bool , Renderer >
127+ impl < Renderer : ?Sized + csr:: web:: Renderer > FormControlElement < KindOfChecked , Renderer >
118128 for csr:: web:: Node <
119129 //
120130 web_sys:: HtmlInputElement ,
121131 >
122132{
123- fn set_value ( & mut self , _: & mut Renderer , & value: & bool ) {
124- self . 0 . set_checked ( value)
133+ fn set_default_value ( & mut self , _: & mut Renderer , value : bool ) {
134+ self . 0 . set_default_checked ( value)
125135 }
126136
127- fn set_default_value ( & mut self , _: & mut Renderer , & value: & bool ) {
128- self . 0 . set_default_checked ( value)
137+ fn remove_default_value ( & mut self , renderer : & mut Renderer ) {
138+ <Self as FormControlElement < KindOfChecked , Renderer > >:: set_default_value (
139+ self , renderer, false ,
140+ )
141+ }
142+
143+ fn set_value ( & mut self , _: & mut Renderer , value : bool ) {
144+ self . 0 . set_checked ( value)
129145 }
130146
131147 fn remove_value ( & mut self , renderer : & mut Renderer ) {
132- self . set_default_value ( renderer, & false ) ;
133- self . set_value ( renderer, & false ) ;
148+ <Self as FormControlElement < KindOfChecked , Renderer > >:: set_default_value (
149+ self , renderer, false ,
150+ ) ;
151+ <Self as FormControlElement < KindOfChecked , Renderer > >:: set_value ( self , renderer, false ) ;
134152 }
135153
136- type OnValueChangeEventListenerUnpinned < F : HandleFormControlValue < bool > + ' static > =
137- unpinned:: EventListenerOfType < HandleFormControlValueChange < bool , F > , Change > ;
154+ type OnValueChangeEventListenerUnpinned < F : HandleFormControlValue < KindOfChecked > + ' static > =
155+ unpinned:: EventListenerOfType < HandleFormControlValueChange < KindOfChecked , F > , Change > ;
138156
139157 type OnValueChangeElementUnpinned = Self ;
140158
141159 fn on_value_change_element_unpinned ( & mut self ) -> & mut Self :: OnValueChangeElementUnpinned {
142160 self
143161 }
144162
145- type OnValueChangeFUnpinned < F : HandleFormControlValue < bool > + ' static > =
146- HandleFormControlValueChange < bool , F > ;
163+ type OnValueChangeFUnpinned < F : HandleFormControlValue < KindOfChecked > + ' static > =
164+ HandleFormControlValueChange < KindOfChecked , F > ;
147165}
148166
149- impl < Renderer : ?Sized + csr:: web:: Renderer > FormControlElement < f64 , Renderer >
167+ impl < Renderer : ?Sized + csr:: web:: Renderer > FormControlElement < KindOfValueAsNumber , Renderer >
150168 for csr:: web:: Node <
151169 //
152170 web_sys:: HtmlInputElement ,
153171 >
154172{
155- fn set_value ( & mut self , _: & mut Renderer , & value: & f64 ) {
156- self . 0 . set_value_as_number ( value) // TODO: this might throw exception if input.type does not support number values
173+ fn set_default_value ( & mut self , _: & mut Renderer , value : f64 ) {
174+ crate :: input :: web :: set_default_value ( & self . 0 , value) ;
157175 }
158176
159- fn set_default_value ( & mut self , _: & mut Renderer , & value : & f64 ) {
160- super :: super :: input :: web :: set_default_value ( & self . 0 , value ) ;
177+ fn remove_default_value ( & mut self , _: & mut Renderer ) {
178+ self . 0 . set_default_value ( "" )
161179 }
162180
163- fn remove_value ( & mut self , renderer : & mut Renderer ) {
181+ fn set_value ( & mut self , _: & mut Renderer , value : f64 ) {
182+ self . 0 . set_value_as_number ( value) // TODO: this might throw exception if input.type does not support number values
183+ }
184+
185+ fn remove_value ( & mut self , _: & mut Renderer ) {
164186 self . 0 . set_default_value ( "" ) ;
165- self . set_value ( renderer , & f64:: NAN ) ;
187+ self . 0 . set_value_as_number ( f64:: NAN ) ;
166188 }
167189
168- type OnValueChangeEventListenerUnpinned < F : HandleFormControlValue < f64 > + ' static > =
169- unpinned:: EventListenerOfType < HandleFormControlValueChange < f64 , F > , Input > ;
190+ type OnValueChangeEventListenerUnpinned <
191+ F : HandleFormControlValue < KindOfValueAsNumber > + ' static ,
192+ > = unpinned:: EventListenerOfType < HandleFormControlValueChange < KindOfValueAsNumber , F > , Input > ;
170193
171194 type OnValueChangeElementUnpinned = Self ;
172195
173196 fn on_value_change_element_unpinned ( & mut self ) -> & mut Self :: OnValueChangeElementUnpinned {
174197 self
175198 }
176199
177- type OnValueChangeFUnpinned < F : HandleFormControlValue < f64 > + ' static > =
178- HandleFormControlValueChange < f64 , F > ;
200+ type OnValueChangeFUnpinned < F : HandleFormControlValue < KindOfValueAsNumber > + ' static > =
201+ HandleFormControlValueChange < KindOfValueAsNumber , F > ;
179202}
0 commit comments