|
109 | 109 | :invalid="invalid"
|
110 | 110 | :model-value="[model]"
|
111 | 111 | :disabled="readonly"
|
112 |
| - @update:model-value=" |
113 |
| - models[i].value = models[i].value.toSpliced(index, 1, $event[0]) |
114 |
| - " |
| 112 | + @update:model-value="updateArrModel(i, index, $event[0])" |
115 | 113 | />
|
116 | 114 | </div>
|
117 | 115 | <FormInputNValues
|
|
120 | 118 | :values="[2]"
|
121 | 119 | >
|
122 | 120 | <InputText
|
123 |
| - v-model="models[i].value[0]" |
| 121 | + :model-value="models[i].value[0]" |
124 | 122 | v-bind="inputProps"
|
125 | 123 | :invalid="isInvalidByValidation"
|
126 | 124 | :theme="theme"
|
127 | 125 | :disabled="readonly"
|
128 | 126 | :placeholder="getInputPlaceholder()"
|
129 | 127 | type="password"
|
130 | 128 | class="--width-180:md --flx"
|
| 129 | + @update:model-value="updateArrModel(i, 0, $event)" |
131 | 130 | />
|
132 | 131 | <InputText
|
133 |
| - v-model="models[i].value[1]" |
| 132 | + :model-value="models[i].value[1]" |
134 | 133 | v-bind="inputProps"
|
135 | 134 | :invalid="isInvalidByValidation"
|
136 | 135 | :theme="theme"
|
137 | 136 | :disabled="readonly"
|
138 | 137 | :placeholder="getInputPlaceholder(1)"
|
139 | 138 | type="password"
|
140 | 139 | class="--width-180:md --flx"
|
| 140 | + @update:model-value="updateArrModel(i, 1, $event)" |
141 | 141 | />
|
142 | 142 | </FormInputNValues>
|
143 | 143 | <FormInputNValues
|
|
168 | 168 | :values="[2]"
|
169 | 169 | >
|
170 | 170 | <SelectSimple
|
171 |
| - v-model="models[i].value[0]" |
| 171 | + :model-value="models[i].value[0]" |
172 | 172 | :theme="theme"
|
173 | 173 | :disabled="readonly"
|
174 | 174 | :options="indicativesArr"
|
175 | 175 | class="--width-180:md --flx"
|
| 176 | + @update:model-value="updateArrModel(i, 0, $event)" |
176 | 177 | />
|
177 | 178 | <InputText
|
178 |
| - v-model="models[i].value[1]" |
| 179 | + :model-value="models[i].value[1]" |
179 | 180 | v-bind="inputProps"
|
180 | 181 | :invalid="isInvalidByValidation"
|
181 | 182 | :theme="theme"
|
182 | 183 | :disabled="readonly"
|
183 | 184 | :placeholder="getInputPlaceholder()"
|
184 | 185 | type="tel"
|
185 | 186 | class="--width-180:md --flx"
|
| 187 | + @update:model-value="updateArrModel(i, 1, $event)" |
186 | 188 | />
|
187 | 189 | </FormInputNValues>
|
188 | 190 | <FormInputCountriesAPI
|
|
191 | 193 | :states="states"
|
192 | 194 | :theme="theme"
|
193 | 195 | :model="models[i].value"
|
194 |
| - :values="[1, 3]" |
195 | 196 | >
|
196 | 197 | <SelectFilter
|
197 | 198 | v-if="!defaultCountry || models[i].value.length === 1"
|
198 |
| - v-model="models[i].value[0]" |
| 199 | + :model-value="models[i].value[0]" |
199 | 200 | :options="countriesArr"
|
200 | 201 | name="country"
|
201 | 202 | :value="defaultCountry"
|
|
204 | 205 | :disabled="readonly"
|
205 | 206 | :placeholder="getInputPlaceholder()"
|
206 | 207 | class="--width-180:md --flx"
|
| 208 | + @update:model-value="updateArrModel(i, 0, $event)" |
207 | 209 | />
|
208 | 210 | <div
|
209 | 211 | v-if="models[i].value.length === 3"
|
210 | 212 | class="flx --flxColumn --flxRow-wrap:md --flx-start-stretch --gap-5 --flx"
|
211 | 213 | >
|
212 | 214 | <SelectFilter
|
213 |
| - v-model="models[i].value[1]" |
| 215 | + :model-value="models[i].value[1]" |
214 | 216 | :options="statesArr || statesReq?.content?.map(stateToOption)"
|
215 | 217 | name="state"
|
216 | 218 | icon="mountain-sun"
|
217 | 219 | :theme="theme"
|
218 | 220 | :disabled="readonly || !(models[i].value[0] || defaultCountry)"
|
219 | 221 | :placeholder="getInputPlaceholder(1)"
|
220 | 222 | class="--width-180:md --flx"
|
| 223 | + @update:model-value="updateArrModel(i, 1, $event)" |
221 | 224 | />
|
222 | 225 | <SelectFilter
|
223 |
| - v-model="models[i].value[2]" |
| 226 | + :model-value="models[i].value[2]" |
224 | 227 | :options="citiesReq.content.map(cityToOption)"
|
225 | 228 | name="city"
|
226 | 229 | icon="city"
|
227 | 230 | :theme="theme"
|
228 | 231 | :disabled="readonly || !models[i].value[1]"
|
229 | 232 | :placeholder="getInputPlaceholder(2)"
|
230 | 233 | class="--width-180:md --flx"
|
| 234 | + @update:model-value="updateArrModel(i, 2, $event)" |
231 | 235 | />
|
232 | 236 | </div>
|
233 | 237 | </FormInputCountriesAPI>
|
|
432 | 436 | );
|
433 | 437 | });
|
434 | 438 |
|
| 439 | + function updateArrModel(modelIndex: number, valuePosition: number, newValue: any) { |
| 440 | + const model: any[] = models.value[modelIndex].value; |
| 441 | +
|
| 442 | + models.value[modelIndex].value = model.toSpliced(valuePosition, 1, newValue); |
| 443 | + } |
| 444 | +
|
435 | 445 | function choose(value: string | number) {
|
436 | 446 | if (props.input.multiple) {
|
437 | 447 | if (props.modelValue.includes(value)) {
|
|
0 commit comments