@@ -11,11 +11,11 @@ export default exports;
11
11
* @param {String } id
12
12
* @param {Object } options
13
13
*/
14
- export function addType ( id , options ) {
15
- exports . formlyFields [ 'formly_' + id ] = options ;
14
+ export function addType ( id , options ) {
15
+ exports . formlyFields [ 'formly_' + id ] = options ;
16
16
}
17
17
18
- export function getTypes ( ) {
18
+ export function getTypes ( ) {
19
19
return exports . formlyFields ;
20
20
}
21
21
@@ -27,11 +27,11 @@ export function getTypes(){
27
27
* @param {String } key
28
28
* @param {Mixed } val
29
29
*/
30
- export function set ( target , key , val ) {
31
- if ( hasNestedProperty ( target , key ) ) {
30
+ export function set ( target , key , val ) {
31
+ if ( hasNestedProperty ( target , key ) ) {
32
32
const parts = key . split ( '.' ) ;
33
33
const finalKey = parts . pop ( ) ;
34
- const newTarget = parts . reduce ( ( acc , cur ) => acc [ cur ] , target ) ;
34
+ const newTarget = parts . reduce ( ( acc , cur ) => acc [ cur ] , target ) ;
35
35
this . $set ( newTarget , finalKey , val ) ;
36
36
} else {
37
37
this . $set ( target , key , val ) ;
@@ -40,48 +40,39 @@ export function set(target, key, val){
40
40
41
41
/**
42
42
* returns an object value by string
43
- * https://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key
44
43
* @param {Object } target
45
44
* @param {String } key
46
45
*/
47
- export function get ( target , key ) {
48
- key = key . replace ( / \[ ( \w + ) \] / g, '.$1' ) ; // convert indexes to properties
49
- key = key . replace ( / ^ \. / , '' ) ; // strip a leading dot
50
- var a = key . split ( '.' ) ;
51
- for ( var i = 0 , n = a . length ; i < n ; ++ i ) {
52
- var k = a [ i ] ;
53
- if ( k in target ) {
54
- target = target [ k ] ;
55
- } else {
56
- return ;
57
- }
58
- }
59
- return target ;
46
+ export function get ( target , key ) {
47
+ const hasNested = hasNestedProperty ( target , key , true ) ;
48
+ return hasNested === null ? target [ key ] : hasNested ;
60
49
}
61
50
62
51
/**
63
52
* Checks to see whether an object has a deeply nested path
64
53
* @param {Object } target
65
54
* @param {String } propertyPath
66
- * @returns {Boolean }
55
+ * @param {Boolean } returnVal
56
+ * @returns {Boolean || Any } will return either true/false for existance or the actual value
67
57
*/
68
- function hasNestedProperty ( obj , propertyPath ) {
69
- if ( ! propertyPath )
70
- return false ;
58
+ function hasNestedProperty ( obj , propertyPath , returnVal = false ) {
59
+ if ( ! propertyPath ) return false ;
71
60
61
+ // strip the leading dot
62
+ propertyPath = propertyPath . replace ( / ^ \. / , '' ) ;
72
63
const properties = propertyPath . split ( '.' ) ;
73
64
74
65
for ( var i = 0 ; i < properties . length ; i ++ ) {
75
66
var prop = properties [ i ] ;
76
67
77
- if ( ! obj || ! obj . hasOwnProperty ( prop ) ) {
78
- return false ;
68
+ if ( ! obj || ! obj . hasOwnProperty ( prop ) ) {
69
+ return returnVal ? null : false ;
79
70
} else {
80
71
obj = obj [ prop ] ;
81
72
}
82
73
}
83
74
84
- return true ;
75
+ return returnVal ? obj : true ;
85
76
}
86
77
87
78
/**
@@ -91,8 +82,8 @@ function hasNestedProperty(obj, propertyPath){
91
82
* @param {String } err
92
83
* @param {Bool } isError
93
84
*/
94
- export function setError ( form , key , err , isError , message = false ) {
95
- if ( ! form . $errors [ key ] ) form . $errors [ key ] = { } ;
85
+ export function setError ( form , key , err , isError , message = false ) {
86
+ if ( ! form . $errors [ key ] ) form . $errors [ key ] = { } ;
96
87
form . $errors [ key ] [ err ] = isError ? message || isError : false ;
97
88
}
98
89
@@ -101,8 +92,8 @@ export function setError(form, key, err, isError, message = false){
101
92
* @param {string } key
102
93
* @param {string } message
103
94
*/
104
- export function addValidationMessage ( key , message ) {
105
- exports . validationMessages [ key ] = message ;
95
+ export function addValidationMessage ( key , message ) {
96
+ exports . validationMessages [ key ] = message ;
106
97
}
107
98
108
99
/**
@@ -112,13 +103,12 @@ export function addValidationMessage(key, message){
112
103
* @param {string } label
113
104
* @param {string } value
114
105
*/
115
- export function parseValidationString ( key , message , label , value ) {
116
-
106
+ export function parseValidationString ( key , message , label , value ) {
117
107
// if a key has been passed and there's no validation message and no message has been passed then return
118
- if ( key && ! ( key in exports . validationMessages ) && ! message ) return false ;
119
-
108
+ if ( key && ! ( key in exports . validationMessages ) && ! message ) return false ;
109
+
120
110
// first check if a validation message with this key exists
121
- if ( key in exports . validationMessages ) {
111
+ if ( key in exports . validationMessages ) {
122
112
message = exports . validationMessages [ key ] ;
123
113
}
124
114
0 commit comments