Skip to content

Commit 5172f68

Browse files
committed
fix(VSelect): show falsy items in the list
see #4431, #4649, 43a18b6
1 parent 53ad130 commit 5172f68

File tree

3 files changed

+67
-2
lines changed

3 files changed

+67
-2
lines changed

src/components/VSelect/VSelectList.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ export default {
204204
return Boolean(getPropertyFromItem(item, this.itemDisabled, false))
205205
},
206206
getText (item) {
207-
return (getPropertyFromItem(item, this.itemText, item) || '').toString()
207+
return String(getPropertyFromItem(item, this.itemText, item))
208208
},
209209
getValue (item) {
210210
return getPropertyFromItem(item, this.itemValue, this.getText(item))
@@ -218,7 +218,8 @@ export default {
218218
this.hasItem(item)
219219
) continue
220220

221-
if (item.header) children.push(this.genHeader(item))
221+
if (item == null) children.push(this.genTile(item))
222+
else if (item.header) children.push(this.genHeader(item))
222223
else if (item.divider) children.push(this.genDivider(item))
223224
else children.push(this.genTile(item))
224225
}

test/unit/components/VSelect/VSelectList.spec.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,4 +118,15 @@ test('VSelect', ({ mount, compileToFunctions }) => {
118118

119119
expect(wrapper.find('.v-list__tile').length).toBe(1)
120120
})
121+
122+
// https://github.com/vuetifyjs/vuetify/issues/4431
123+
it('should display falsy items', () => {
124+
const wrapper = mount(VSelectList, {
125+
propsData: {
126+
items: [0, null, false, undefined, '']
127+
}
128+
})
129+
130+
expect(wrapper.html()).toMatchSnapshot()
131+
})
121132
})

test/unit/components/VSelect/__snapshots__/VSelectList.spec.js.snap

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,58 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3+
exports[`VSelect should display falsy items 1`] = `
4+
5+
<div class="v-select-list v-card">
6+
<div class="v-list">
7+
<div>
8+
<a class="v-list__tile v-list__tile--link">
9+
<div class="v-list__tile__content">
10+
<div class="v-list__tile__title">
11+
0
12+
</div>
13+
</div>
14+
</a>
15+
</div>
16+
<div>
17+
<a class="v-list__tile v-list__tile--link">
18+
<div class="v-list__tile__content">
19+
<div class="v-list__tile__title">
20+
null
21+
</div>
22+
</div>
23+
</a>
24+
</div>
25+
<div>
26+
<a class="v-list__tile v-list__tile--link">
27+
<div class="v-list__tile__content">
28+
<div class="v-list__tile__title">
29+
false
30+
</div>
31+
</div>
32+
</a>
33+
</div>
34+
<div>
35+
<a class="v-list__tile v-list__tile--link">
36+
<div class="v-list__tile__content">
37+
<div class="v-list__tile__title">
38+
undefined
39+
</div>
40+
</div>
41+
</a>
42+
</div>
43+
<div>
44+
<a class="v-list__tile v-list__tile--link">
45+
<div class="v-list__tile__content">
46+
<div class="v-list__tile__title">
47+
</div>
48+
</div>
49+
</a>
50+
</div>
51+
</div>
52+
</div>
53+
54+
`;
55+
356
exports[`VSelect should display no-data-text when item slot is provided 1`] = `
457
558
<div class="v-select-list v-card">

0 commit comments

Comments
 (0)