@@ -103,14 +103,38 @@ function setAnswer (id, value) {
103
103
const fields = id . split ( '.' )
104
104
let obj = answers
105
105
const l = fields . length
106
- for ( let i = 0 ; i < l - 1 ; i ++ ) {
106
+ for ( let i = 0 ; i < l - 2 ; i ++ ) {
107
107
const key = fields [ i ]
108
108
if ( ! obj [ key ] ) {
109
109
obj [ key ] = { }
110
110
}
111
111
obj = obj [ key ]
112
112
}
113
113
obj [ fields [ l - 1 ] ] = value
114
+ console . log ( 'answers' , answers )
115
+ }
116
+
117
+ function removeAnswer ( id ) {
118
+ const fields = id . split ( '.' )
119
+ let obj = answers
120
+ const l = fields . length
121
+ const objs = [ ]
122
+ for ( let i = 0 ; i < l - 2 ; i ++ ) {
123
+ const key = fields [ i ]
124
+ if ( ! obj [ key ] ) {
125
+ return
126
+ }
127
+ objs . splice ( 0 , 0 , { obj, key, value : obj [ key ] } )
128
+ obj = obj [ key ]
129
+ }
130
+ delete obj [ fields [ l - 1 ] ]
131
+ // Clear empty objects
132
+ for ( const { obj, key, value } of objs ) {
133
+ if ( ! Object . keys ( value ) . length ) {
134
+ delete obj [ key ]
135
+ }
136
+ }
137
+ console . log ( 'answers' , answers )
114
138
}
115
139
116
140
function generatePrompt ( data ) {
@@ -131,11 +155,15 @@ function generatePrompt (data) {
131
155
132
156
function updatePrompts ( ) {
133
157
for ( const prompt of prompts ) {
158
+ const oldEnabled = prompt . enabled
134
159
prompt . enabled = getEnabled ( prompt . raw . when )
135
160
136
161
prompt . choices = getChoices ( prompt )
137
162
138
- if ( ! prompt . valueChanged ) {
163
+ if ( oldEnabled !== prompt . enabled && ! prompt . enabled ) {
164
+ removeAnswer ( prompt . id )
165
+ prompt . valueChanged = false
166
+ } else if ( prompt . enabled && ! prompt . valueChanged ) {
139
167
let value = getDefaultValue ( prompt )
140
168
prompt . value = getDisplayedValue ( prompt , value )
141
169
setAnswer ( prompt . id , getValue ( prompt , value ) )
0 commit comments