1
1
import NotValidFieldException from './Exceptions/NotValidFieldException.js' ;
2
- import Field from './Fields/Field.js' ;
3
- import TextField from './Fields/TextField.js' ;
4
- import CheckboxField from './Fields/CheckboxField.js' ;
5
- import DropdownField from './Fields/DropdownField.js' ;
6
2
import ShippingMethod from './ShippingMethod.js' ;
7
3
import PaymentMethod from './PaymentMethod.js' ;
4
+ import FieldFactory from './Fields/FieldFactory.js' ;
8
5
9
6
export default class Checkout {
10
7
constructor ( ) {
@@ -31,39 +28,11 @@ export default class Checkout {
31
28
_getFields ( ) {
32
29
let fields = [ ] ;
33
30
34
- const fieldNodes = document . querySelectorAll ( 'input, select' ) ;
31
+ const fieldNodes = document . querySelectorAll ( 'input[id], select[id]' ) ;
32
+ const fieldFactory = new FieldFactory ( ) ;
35
33
fieldNodes . forEach ( el => {
36
- if ( typeof el . id !== 'string' || el . id . length == 0 ) {
37
- return ;
38
- }
39
-
40
- switch ( el . type ) {
41
- case 'text' :
42
- fields [ el . id ] = new TextField ( el . id ) ;
43
- break ;
44
- case 'email' :
45
- fields [ el . id ] = new TextField ( el . id ) ;
46
- break ;
47
- case 'tel' :
48
- fields [ el . id ] = new TextField ( el . id ) ;
49
- break ;
50
- case 'checkbox' :
51
- fields [ el . id ] = new CheckboxField ( el . id ) ;
52
- break ;
53
- case 'select-one' :
54
- fields [ el . id ] = new DropdownField ( el . id ) ;
55
- break ;
56
- case 'hidden' :
57
- break ;
58
- default :
59
- try {
60
- fields [ el . id ] = new Field ( el . id ) ;
61
- } catch ( e ) {
62
- if ( e instanceof NotValidFieldException ) return ;
63
- else throw e ;
64
- }
65
- break ;
66
- }
34
+ let field = fieldFactory . createFieldByElement ( el ) ;
35
+ if ( field != null ) fields [ el . id ] = field ;
67
36
} ) ;
68
37
69
38
return fields ;
0 commit comments