File tree Expand file tree Collapse file tree 3 files changed +39
-2
lines changed Expand file tree Collapse file tree 3 files changed +39
-2
lines changed Original file line number Diff line number Diff line change @@ -121,6 +121,17 @@ export default class Form extends View {
121121 elem . checked = true ;
122122 }
123123 break ;
124+ case 'select' :
125+ if ( elem . multiple ) {
126+ elem . options . forEach ( ( opt ) => {
127+ // eslint-disable-next-line no-param-reassign
128+ opt . selected = this . constructor . $selected ( opt . value , value ) ;
129+ } ) ;
130+ } else {
131+ // eslint-disable-next-line no-param-reassign
132+ elem . value = `${ value } ` ;
133+ }
134+ break ;
124135 default :
125136 // eslint-disable-next-line no-param-reassign
126137 elem . value = `${ value } ` ;
@@ -129,6 +140,22 @@ export default class Form extends View {
129140 } ) ;
130141 }
131142
143+ static $selected ( value , src ) {
144+ if ( src ) {
145+ if ( typeof src === 'string' ) {
146+ return value === src ;
147+ }
148+ if ( Array . isArray ( src ) ) {
149+ for ( let i = 0 ; i < src . length ; i += 1 ) {
150+ if ( this . $selected ( value , src [ i ] ) ) {
151+ return true ;
152+ }
153+ }
154+ }
155+ }
156+ return false ;
157+ }
158+
132159 get values ( ) {
133160 const values = { } ;
134161 Array . from ( this . $form . elements ) . forEach ( ( elem ) => {
@@ -140,6 +167,16 @@ export default class Form extends View {
140167 values [ key ] = elem . value ;
141168 }
142169 break ;
170+ case 'select' :
171+ if ( elem . multiple ) {
172+ values [ key ] = [ ] ;
173+ elem . selectedOptions . forEach ( ( opt ) => {
174+ values [ key ] . push ( opt . value ) ;
175+ } ) ;
176+ } else {
177+ values [ key ] = elem . value ;
178+ }
179+ break ;
143180 default :
144181 values [ key ] = elem . value ;
145182 break ;
Original file line number Diff line number Diff line change @@ -147,7 +147,7 @@ export default class Provider extends Emitter {
147147 $fetch ( url , req ) {
148148 let status ;
149149 let changed = false ;
150- this . dispatchEvent ( EVENT_STARTED , this , this . $origin + url ) ;
150+ this . dispatchEvent ( EVENT_STARTED , this , this . $origin + ( url || '' ) ) ;
151151 fetch ( this . $origin + url , req )
152152 . then ( ( response ) => {
153153 status = response ;
Original file line number Diff line number Diff line change 11{
22 "name" : " @djthorpe/js-framework" ,
3- "version" : " 0.0.26 " ,
3+ "version" : " 0.0.27 " ,
44 "description" : " Javascript Framework" ,
55 "main" : " dist/js/index.js" ,
66 "scripts" : {
You can’t perform that action at this time.
0 commit comments