Commit aa21cdf9c3ef6c2bfe529796687049bfbef5f1a9
1 parent
523e2c81
Process also shallow children and not only nested
Showing
1 changed file
with
20 additions
and
13 deletions
Show diff stats
src/components/select/select.vue
@@ -107,6 +107,19 @@ | @@ -107,6 +107,19 @@ | ||
107 | return options.concat(findOptionsInVNode(slotEntry)); | 107 | return options.concat(findOptionsInVNode(slotEntry)); |
108 | }, []); | 108 | }, []); |
109 | 109 | ||
110 | + const applyProp = (node, propName, value) => { | ||
111 | + return { | ||
112 | + ...node, | ||
113 | + componentOptions: { | ||
114 | + ...node.componentOptions, | ||
115 | + propsData: { | ||
116 | + ...node.componentOptions.propsData, | ||
117 | + [propName]: value, | ||
118 | + } | ||
119 | + } | ||
120 | + }; | ||
121 | + }; | ||
122 | + | ||
110 | export default { | 123 | export default { |
111 | name: 'iSelect', | 124 | name: 'iSelect', |
112 | mixins: [ Emitter, Locale ], | 125 | mixins: [ Emitter, Locale ], |
@@ -304,19 +317,13 @@ | @@ -304,19 +317,13 @@ | ||
304 | const autoCompleteOptions = extractOptions(slotOptions); | 317 | const autoCompleteOptions = extractOptions(slotOptions); |
305 | const selectedSlotOption = autoCompleteOptions[currentIndex]; | 318 | const selectedSlotOption = autoCompleteOptions[currentIndex]; |
306 | 319 | ||
307 | - return slotOptions.map(node => copyChildren(node, (child) => { | ||
308 | - if (child !== selectedSlotOption) return child; | ||
309 | - return { | ||
310 | - ...child, | ||
311 | - componentOptions: { | ||
312 | - ...child.componentOptions, | ||
313 | - propsData: { | ||
314 | - ...child.componentOptions.propsData, | ||
315 | - isFocused: true, | ||
316 | - } | ||
317 | - } | ||
318 | - }; | ||
319 | - })); | 320 | + return slotOptions.map(node => { |
321 | + if (node === selectedSlotOption) return applyProp(node, 'isFocused', true); | ||
322 | + return copyChildren(node, (child) => { | ||
323 | + if (child !== selectedSlotOption) return child; | ||
324 | + return applyProp(child, 'isFocused', true); | ||
325 | + }); | ||
326 | + }); | ||
320 | } | 327 | } |
321 | 328 | ||
322 | for (let option of slotOptions) { | 329 | for (let option of slotOptions) { |