@@ -103,14 +103,38 @@ function setAnswer (id, value) {
103103 const fields = id . split ( '.' )
104104 let obj = answers
105105 const l = fields . length
106- for ( let i = 0 ; i < l - 1 ; i ++ ) {
106+ for ( let i = 0 ; i < l - 2 ; i ++ ) {
107107 const key = fields [ i ]
108108 if ( ! obj [ key ] ) {
109109 obj [ key ] = { }
110110 }
111111 obj = obj [ key ]
112112 }
113113 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 )
114138}
115139
116140function generatePrompt ( data ) {
@@ -131,11 +155,15 @@ function generatePrompt (data) {
131155
132156function updatePrompts ( ) {
133157 for ( const prompt of prompts ) {
158+ const oldEnabled = prompt . enabled
134159 prompt . enabled = getEnabled ( prompt . raw . when )
135160
136161 prompt . choices = getChoices ( prompt )
137162
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 ) {
139167 let value = getDefaultValue ( prompt )
140168 prompt . value = getDisplayedValue ( prompt , value )
141169 setAnswer ( prompt . id , getValue ( prompt , value ) )
0 commit comments