@gitlab/ui 114.1.0 → 114.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/base/breadcrumb/breadcrumb.js +4 -16
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/package.json +7 -26
- package/src/components/base/breadcrumb/breadcrumb.scss +18 -2
- package/src/components/base/breadcrumb/breadcrumb.vue +4 -17
- package/CHANGELOG.md +0 -13139
- package/src/vendor/bootstrap/LICENSE +0 -11
- package/src/vendor/bootstrap-vue/LICENSE +0 -11
- package/src/vendor/bootstrap-vue/package.json +0 -144
- package/src/vendor/bootstrap-vue/src/components/button/MODIFICATIONS.md +0 -16
- package/src/vendor/bootstrap-vue/src/components/button/README.md +0 -240
- package/src/vendor/bootstrap-vue/src/components/button/button-close.spec.js +0 -210
- package/src/vendor/bootstrap-vue/src/components/button/button.spec.js +0 -349
- package/src/vendor/bootstrap-vue/src/components/button/package.json +0 -105
- package/src/vendor/bootstrap-vue/src/components/dropdown/README.md +0 -730
- package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.spec.js +0 -58
- package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.spec.js +0 -110
- package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.spec.js +0 -94
- package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.spec.js +0 -73
- package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.spec.js +0 -117
- package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.spec.js +0 -147
- package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.spec.js +0 -59
- package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown.spec.js +0 -1121
- package/src/vendor/bootstrap-vue/src/components/dropdown/package.json +0 -368
- package/src/vendor/bootstrap-vue/src/components/form/README.md +0 -365
- package/src/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.spec.js +0 -170
- package/src/vendor/bootstrap-vue/src/components/form/form-text.spec.js +0 -93
- package/src/vendor/bootstrap-vue/src/components/form/form-valid-feedback.spec.js +0 -157
- package/src/vendor/bootstrap-vue/src/components/form/form.spec.js +0 -97
- package/src/vendor/bootstrap-vue/src/components/form/package.json +0 -112
- package/src/vendor/bootstrap-vue/src/components/form-checkbox/README.md +0 -691
- package/src/vendor/bootstrap-vue/src/components/form-checkbox/form-checkbox-group.spec.js +0 -525
- package/src/vendor/bootstrap-vue/src/components/form-checkbox/form-checkbox.spec.js +0 -922
- package/src/vendor/bootstrap-vue/src/components/form-checkbox/package.json +0 -172
- package/src/vendor/bootstrap-vue/src/components/form-group/README.md +0 -339
- package/src/vendor/bootstrap-vue/src/components/form-group/form-group.spec.js +0 -477
- package/src/vendor/bootstrap-vue/src/components/form-group/package.json +0 -183
- package/src/vendor/bootstrap-vue/src/components/form-radio/README.md +0 -437
- package/src/vendor/bootstrap-vue/src/components/form-radio/form-radio-group.spec.js +0 -357
- package/src/vendor/bootstrap-vue/src/components/form-radio/form-radio.spec.js +0 -587
- package/src/vendor/bootstrap-vue/src/components/form-radio/package.json +0 -162
- package/src/vendor/bootstrap-vue/src/components/form-select/README.md +0 -504
- package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.spec.js +0 -138
- package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option.spec.js +0 -75
- package/src/vendor/bootstrap-vue/src/components/form-select/form-select.spec.js +0 -723
- package/src/vendor/bootstrap-vue/src/components/form-select/package.json +0 -132
- package/src/vendor/bootstrap-vue/src/components/form-textarea/README.md +0 -453
- package/src/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.spec.js +0 -1000
- package/src/vendor/bootstrap-vue/src/components/form-textarea/package.json +0 -122
- package/src/vendor/bootstrap-vue/src/components/layout/README.md +0 -791
- package/src/vendor/bootstrap-vue/src/components/layout/col.spec.js +0 -192
- package/src/vendor/bootstrap-vue/src/components/layout/form-row.spec.js +0 -45
- package/src/vendor/bootstrap-vue/src/components/layout/package.json +0 -99
- package/src/vendor/bootstrap-vue/src/components/link/README.md +0 -76
- package/src/vendor/bootstrap-vue/src/components/link/link.spec.js +0 -434
- package/src/vendor/bootstrap-vue/src/components/link/package.json +0 -57
- package/src/vendor/bootstrap-vue/src/components/modal/MODIFICATIONS.md +0 -30
- package/src/vendor/bootstrap-vue/src/components/modal/README.md +0 -1067
- package/src/vendor/bootstrap-vue/src/components/modal/helpers/bv-modal-event.class.spec.js +0 -82
- package/src/vendor/bootstrap-vue/src/components/modal/modal.spec.js +0 -1418
- package/src/vendor/bootstrap-vue/src/components/modal/package.json +0 -544
- package/src/vendor/bootstrap-vue/src/components/nav/README.md +0 -362
- package/src/vendor/bootstrap-vue/src/components/nav/nav-item.spec.js +0 -127
- package/src/vendor/bootstrap-vue/src/components/nav/nav.spec.js +0 -177
- package/src/vendor/bootstrap-vue/src/components/nav/package.json +0 -73
- package/src/vendor/bootstrap-vue/src/components/popover/README.md +0 -919
- package/src/vendor/bootstrap-vue/src/components/popover/package.json +0 -261
- package/src/vendor/bootstrap-vue/src/components/popover/popover.spec.js +0 -198
- package/src/vendor/bootstrap-vue/src/components/table/README.md +0 -3157
- package/src/vendor/bootstrap-vue/src/components/table/helpers/default-sort-compare.spec.js +0 -112
- package/src/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.spec.js +0 -93
- package/src/vendor/bootstrap-vue/src/components/table/package.json +0 -1763
- package/src/vendor/bootstrap-vue/src/components/table/table-busy.spec.js +0 -150
- package/src/vendor/bootstrap-vue/src/components/table/table-caption.spec.js +0 -176
- package/src/vendor/bootstrap-vue/src/components/table/table-colgroup.spec.js +0 -81
- package/src/vendor/bootstrap-vue/src/components/table/table-filtering.spec.js +0 -409
- package/src/vendor/bootstrap-vue/src/components/table/table-item-formatter.spec.js +0 -56
- package/src/vendor/bootstrap-vue/src/components/table/table-lite.spec.js +0 -682
- package/src/vendor/bootstrap-vue/src/components/table/table-pagination.spec.js +0 -133
- package/src/vendor/bootstrap-vue/src/components/table/table-primarykey.spec.js +0 -83
- package/src/vendor/bootstrap-vue/src/components/table/table-provider.spec.js +0 -411
- package/src/vendor/bootstrap-vue/src/components/table/table-row-details.spec.js +0 -459
- package/src/vendor/bootstrap-vue/src/components/table/table-selectable.spec.js +0 -1182
- package/src/vendor/bootstrap-vue/src/components/table/table-simple.spec.js +0 -206
- package/src/vendor/bootstrap-vue/src/components/table/table-sorting.spec.js +0 -858
- package/src/vendor/bootstrap-vue/src/components/table/table-sticky-column.spec.js +0 -377
- package/src/vendor/bootstrap-vue/src/components/table/table-tbody-bottom-row.spec.js +0 -94
- package/src/vendor/bootstrap-vue/src/components/table/table-tbody-row-events.spec.js +0 -529
- package/src/vendor/bootstrap-vue/src/components/table/table-tbody-top-row.spec.js +0 -88
- package/src/vendor/bootstrap-vue/src/components/table/table-tbody-transition.spec.js +0 -83
- package/src/vendor/bootstrap-vue/src/components/table/table-tfoot-custom.spec.js +0 -91
- package/src/vendor/bootstrap-vue/src/components/table/table-tfoot-events.spec.js +0 -137
- package/src/vendor/bootstrap-vue/src/components/table/table-thead-events.spec.js +0 -155
- package/src/vendor/bootstrap-vue/src/components/table/table-thead-top.spec.js +0 -96
- package/src/vendor/bootstrap-vue/src/components/table/table.spec.js +0 -692
- package/src/vendor/bootstrap-vue/src/components/tabs/README.md +0 -433
- package/src/vendor/bootstrap-vue/src/components/tabs/package.json +0 -205
- package/src/vendor/bootstrap-vue/src/components/tabs/tab.spec.js +0 -330
- package/src/vendor/bootstrap-vue/src/components/tabs/tabs.spec.js +0 -778
- package/src/vendor/bootstrap-vue/src/components/toast/README.md +0 -655
- package/src/vendor/bootstrap-vue/src/components/toast/helpers/bv-toast.spec.js +0 -117
- package/src/vendor/bootstrap-vue/src/components/toast/package.json +0 -184
- package/src/vendor/bootstrap-vue/src/components/toast/toast.spec.js +0 -294
- package/src/vendor/bootstrap-vue/src/components/toast/toaster.spec.js +0 -77
- package/src/vendor/bootstrap-vue/src/components/tooltip/README.md +0 -559
- package/src/vendor/bootstrap-vue/src/components/tooltip/package.json +0 -258
- package/src/vendor/bootstrap-vue/src/components/tooltip/tooltip.spec.js +0 -1240
- package/src/vendor/bootstrap-vue/src/components/transition/package.json +0 -5
- package/src/vendor/bootstrap-vue/src/components/transporter/package.json +0 -5
- package/src/vendor/bootstrap-vue/src/components/transporter/transporter.spec.js +0 -85
- package/src/vendor/bootstrap-vue/src/directives/modal/modal.spec.js +0 -191
- package/src/vendor/bootstrap-vue/src/directives/tooltip/README.md +0 -521
- package/src/vendor/bootstrap-vue/src/directives/tooltip/package.json +0 -131
- package/src/vendor/bootstrap-vue/src/directives/tooltip/tooltip.spec.js +0 -190
- package/src/vendor/bootstrap-vue/src/directives/visible/README.md +0 -244
- package/src/vendor/bootstrap-vue/src/directives/visible/package.json +0 -24
- package/src/vendor/bootstrap-vue/src/mixins/attrs.spec.js +0 -194
- package/src/vendor/bootstrap-vue/src/mixins/click-out.spec.js +0 -52
- package/src/vendor/bootstrap-vue/src/mixins/focus-in.spec.js +0 -53
- package/src/vendor/bootstrap-vue/src/mixins/listen-on-document.spec.js +0 -117
- package/src/vendor/bootstrap-vue/src/mixins/listen-on-root.spec.js +0 -77
- package/src/vendor/bootstrap-vue/src/mixins/listen-on-window.spec.js +0 -115
- package/src/vendor/bootstrap-vue/src/mixins/listeners.spec.js +0 -245
- package/src/vendor/bootstrap-vue/src/utils/bv-event.class.spec.js +0 -66
- package/src/vendor/bootstrap-vue/src/utils/clone-deep.spec.js +0 -70
- package/src/vendor/bootstrap-vue/src/utils/config.spec.js +0 -169
- package/src/vendor/bootstrap-vue/src/utils/css-escape.spec.js +0 -82
- package/src/vendor/bootstrap-vue/src/utils/dom.spec.js +0 -291
- package/src/vendor/bootstrap-vue/src/utils/events.spec.js +0 -41
- package/src/vendor/bootstrap-vue/src/utils/get.spec.js +0 -109
- package/src/vendor/bootstrap-vue/src/utils/inspect.spec.js +0 -251
- package/src/vendor/bootstrap-vue/src/utils/loose-equal.spec.js +0 -203
- package/src/vendor/bootstrap-vue/src/utils/normalize-slot.spec.js +0 -63
- package/src/vendor/bootstrap-vue/src/utils/number.spec.js +0 -72
- package/src/vendor/bootstrap-vue/src/utils/object.spec.js +0 -61
- package/src/vendor/bootstrap-vue/src/utils/props.spec.js +0 -112
- package/src/vendor/bootstrap-vue/src/utils/router.spec.js +0 -248
- package/src/vendor/bootstrap-vue/src/utils/string.spec.js +0 -65
- package/src/vendor/bootstrap-vue/src/utils/stringify-object-values.spec.js +0 -47
- package/src/vendor/bootstrap-vue/src/utils/warn.spec.js +0 -54
|
@@ -1,529 +0,0 @@
|
|
|
1
|
-
import { mount } from '@vue/test-utils'
|
|
2
|
-
import { isVue3 } from '../../vue'
|
|
3
|
-
import { waitNT } from '../../../tests/utils'
|
|
4
|
-
import { BTable } from './table'
|
|
5
|
-
|
|
6
|
-
const testItems = [{ a: 1, b: 2, c: 3 }, { a: 5, b: 5, c: 6 }, { a: 7, b: 8, c: 9 }]
|
|
7
|
-
const testFields = ['a', 'b', 'c']
|
|
8
|
-
|
|
9
|
-
describe('table > tbody row events', () => {
|
|
10
|
-
it('should emit row-clicked event when a row is clicked', async () => {
|
|
11
|
-
const wrapper = mount(BTable, {
|
|
12
|
-
propsData: {
|
|
13
|
-
fields: testFields,
|
|
14
|
-
items: testItems
|
|
15
|
-
},
|
|
16
|
-
listeners: {
|
|
17
|
-
// Row-clicked will only occur if there is a registered listener
|
|
18
|
-
'row-clicked': () => {}
|
|
19
|
-
}
|
|
20
|
-
})
|
|
21
|
-
expect(wrapper).toBeDefined()
|
|
22
|
-
const $rows = wrapper.findAll('tbody > tr')
|
|
23
|
-
expect($rows.length).toBe(3)
|
|
24
|
-
expect(wrapper.emitted('row-clicked')).toBeUndefined()
|
|
25
|
-
await $rows.at(1).trigger('click')
|
|
26
|
-
expect(wrapper.emitted('row-clicked')).toBeDefined()
|
|
27
|
-
expect(wrapper.emitted('row-clicked').length).toBe(1)
|
|
28
|
-
expect(wrapper.emitted('row-clicked')[0][0]).toEqual(testItems[1]) // Row item
|
|
29
|
-
expect(wrapper.emitted('row-clicked')[0][1]).toEqual(1) // Row index
|
|
30
|
-
expect(wrapper.emitted('row-clicked')[0][2]).toBeInstanceOf(MouseEvent) // Event
|
|
31
|
-
|
|
32
|
-
wrapper.destroy()
|
|
33
|
-
})
|
|
34
|
-
|
|
35
|
-
it('should not emit row-clicked event when prop busy is set', async () => {
|
|
36
|
-
const wrapper = mount(BTable, {
|
|
37
|
-
propsData: {
|
|
38
|
-
fields: testFields,
|
|
39
|
-
items: testItems,
|
|
40
|
-
busy: true
|
|
41
|
-
},
|
|
42
|
-
listeners: {
|
|
43
|
-
// Row-clicked will only occur if there is a registered listener
|
|
44
|
-
'row-clicked': () => {}
|
|
45
|
-
}
|
|
46
|
-
})
|
|
47
|
-
expect(wrapper).toBeDefined()
|
|
48
|
-
expect(wrapper.element.tagName).toBe('TABLE')
|
|
49
|
-
const $rows = wrapper.findAll('tbody > tr')
|
|
50
|
-
expect($rows.length).toBe(3)
|
|
51
|
-
expect(wrapper.emitted('row-clicked')).toBeUndefined()
|
|
52
|
-
await $rows.at(1).trigger('click')
|
|
53
|
-
expect(wrapper.emitted('row-clicked')).toBeUndefined()
|
|
54
|
-
|
|
55
|
-
wrapper.destroy()
|
|
56
|
-
})
|
|
57
|
-
|
|
58
|
-
it('should not emit row-clicked event when vm.localBusy is true', async () => {
|
|
59
|
-
const wrapper = mount(BTable, {
|
|
60
|
-
propsData: {
|
|
61
|
-
fields: testFields,
|
|
62
|
-
items: testItems
|
|
63
|
-
},
|
|
64
|
-
listeners: {
|
|
65
|
-
// Row-clicked will only occur if there is a registered listener
|
|
66
|
-
'row-clicked': () => {}
|
|
67
|
-
}
|
|
68
|
-
})
|
|
69
|
-
expect(wrapper).toBeDefined()
|
|
70
|
-
const $rows = wrapper.findAll('tbody > tr')
|
|
71
|
-
expect($rows.length).toBe(3)
|
|
72
|
-
expect(wrapper.emitted('row-clicked')).toBeUndefined()
|
|
73
|
-
await wrapper.setData({
|
|
74
|
-
localBusy: true
|
|
75
|
-
})
|
|
76
|
-
await $rows.at(1).trigger('click')
|
|
77
|
-
expect(wrapper.emitted('row-clicked')).toBeUndefined()
|
|
78
|
-
|
|
79
|
-
wrapper.destroy()
|
|
80
|
-
})
|
|
81
|
-
|
|
82
|
-
it('should emit row-dblclicked event when a row is dblclicked', async () => {
|
|
83
|
-
const wrapper = mount(BTable, {
|
|
84
|
-
propsData: {
|
|
85
|
-
fields: testFields,
|
|
86
|
-
items: testItems
|
|
87
|
-
},
|
|
88
|
-
listeners: {
|
|
89
|
-
// Row-dblclicked will only occur if there is a registered listener
|
|
90
|
-
'row-dblclicked': () => {}
|
|
91
|
-
}
|
|
92
|
-
})
|
|
93
|
-
expect(wrapper).toBeDefined()
|
|
94
|
-
const $rows = wrapper.findAll('tbody > tr')
|
|
95
|
-
expect($rows.length).toBe(3)
|
|
96
|
-
expect(wrapper.emitted('row-dblclicked')).toBeUndefined()
|
|
97
|
-
await $rows.at(1).trigger('dblclick')
|
|
98
|
-
expect(wrapper.emitted('row-dblclicked')).toBeDefined()
|
|
99
|
-
expect(wrapper.emitted('row-dblclicked').length).toBe(1)
|
|
100
|
-
expect(wrapper.emitted('row-dblclicked')[0][0]).toEqual(testItems[1]) // Row item
|
|
101
|
-
expect(wrapper.emitted('row-dblclicked')[0][1]).toEqual(1) // Row index
|
|
102
|
-
expect(wrapper.emitted('row-dblclicked')[0][2]).toBeInstanceOf(MouseEvent) // Event
|
|
103
|
-
|
|
104
|
-
wrapper.destroy()
|
|
105
|
-
})
|
|
106
|
-
|
|
107
|
-
it('should not emit row-dblclicked event when a row is dblclicked and table busy', async () => {
|
|
108
|
-
const wrapper = mount(BTable, {
|
|
109
|
-
propsData: {
|
|
110
|
-
fields: testFields,
|
|
111
|
-
items: testItems,
|
|
112
|
-
busy: true
|
|
113
|
-
},
|
|
114
|
-
listeners: {
|
|
115
|
-
// Row-dblclicked will only occur if there is a registered listener
|
|
116
|
-
'row-dblclicked': () => {}
|
|
117
|
-
}
|
|
118
|
-
})
|
|
119
|
-
expect(wrapper).toBeDefined()
|
|
120
|
-
const $rows = wrapper.findAll('tbody > tr')
|
|
121
|
-
expect($rows.length).toBe(3)
|
|
122
|
-
expect(wrapper.emitted('row-dblclicked')).toBeUndefined()
|
|
123
|
-
await $rows.at(1).trigger('dblclick')
|
|
124
|
-
expect(wrapper.emitted('row-dblclicked')).toBeUndefined()
|
|
125
|
-
|
|
126
|
-
wrapper.destroy()
|
|
127
|
-
})
|
|
128
|
-
|
|
129
|
-
it('should emit row-middle-clicked event when a row is middle clicked', async () => {
|
|
130
|
-
const wrapper = mount(BTable, {
|
|
131
|
-
propsData: {
|
|
132
|
-
fields: testFields,
|
|
133
|
-
items: testItems
|
|
134
|
-
},
|
|
135
|
-
listeners: {
|
|
136
|
-
// Row-middle-clicked will only occur if there is a registered listener
|
|
137
|
-
'row-middle-clicked': () => {}
|
|
138
|
-
}
|
|
139
|
-
})
|
|
140
|
-
expect(wrapper).toBeDefined()
|
|
141
|
-
const $rows = wrapper.findAll('tbody > tr')
|
|
142
|
-
expect($rows.length).toBe(3)
|
|
143
|
-
expect(wrapper.emitted('row-middle-clicked')).toBeUndefined()
|
|
144
|
-
await $rows.at(1).trigger('auxclick', { which: 2 })
|
|
145
|
-
expect(wrapper.emitted('row-middle-clicked')).toBeDefined()
|
|
146
|
-
expect(wrapper.emitted('row-middle-clicked').length).toBe(1)
|
|
147
|
-
expect(wrapper.emitted('row-middle-clicked')[0][0]).toEqual(testItems[1]) // Row item
|
|
148
|
-
expect(wrapper.emitted('row-middle-clicked')[0][1]).toEqual(1) // Row index
|
|
149
|
-
expect(wrapper.emitted('row-middle-clicked')[0][2]).toBeInstanceOf(Event) // Event
|
|
150
|
-
|
|
151
|
-
wrapper.destroy()
|
|
152
|
-
})
|
|
153
|
-
|
|
154
|
-
it('should not emit row-middle-clicked event when a row is middle clicked and table busy', async () => {
|
|
155
|
-
const wrapper = mount(BTable, {
|
|
156
|
-
propsData: {
|
|
157
|
-
fields: testFields,
|
|
158
|
-
items: testItems,
|
|
159
|
-
busy: true
|
|
160
|
-
},
|
|
161
|
-
listeners: {
|
|
162
|
-
// Row-middle-clicked will only occur if there is a registered listener
|
|
163
|
-
'row-middle-clicked': () => {}
|
|
164
|
-
}
|
|
165
|
-
})
|
|
166
|
-
expect(wrapper).toBeDefined()
|
|
167
|
-
const $rows = wrapper.findAll('tbody > tr')
|
|
168
|
-
expect($rows.length).toBe(3)
|
|
169
|
-
expect(wrapper.emitted('row-middle-clicked')).toBeUndefined()
|
|
170
|
-
await $rows.at(1).trigger('auxclick', { which: 2 })
|
|
171
|
-
expect(wrapper.emitted('row-middle-clicked')).toBeUndefined()
|
|
172
|
-
|
|
173
|
-
wrapper.destroy()
|
|
174
|
-
})
|
|
175
|
-
|
|
176
|
-
it('should emit row-contextmenu event when a row is right clicked', async () => {
|
|
177
|
-
const wrapper = mount(BTable, {
|
|
178
|
-
propsData: {
|
|
179
|
-
fields: testFields,
|
|
180
|
-
items: testItems
|
|
181
|
-
},
|
|
182
|
-
listeners: {
|
|
183
|
-
// Row-contextmenu will only occur if there is a registered listener
|
|
184
|
-
'row-contextmenu': () => {}
|
|
185
|
-
}
|
|
186
|
-
})
|
|
187
|
-
expect(wrapper).toBeDefined()
|
|
188
|
-
const $rows = wrapper.findAll('tbody > tr')
|
|
189
|
-
expect($rows.length).toBe(3)
|
|
190
|
-
expect(wrapper.emitted('row-contextmenu')).toBeUndefined()
|
|
191
|
-
await $rows.at(1).trigger('contextmenu')
|
|
192
|
-
expect(wrapper.emitted('row-contextmenu')).toBeDefined()
|
|
193
|
-
expect(wrapper.emitted('row-contextmenu').length).toBe(1)
|
|
194
|
-
expect(wrapper.emitted('row-contextmenu')[0][0]).toEqual(testItems[1]) // Row item
|
|
195
|
-
expect(wrapper.emitted('row-contextmenu')[0][1]).toEqual(1) // Row index
|
|
196
|
-
expect(wrapper.emitted('row-contextmenu')[0][2]).toBeInstanceOf(Event) // Event
|
|
197
|
-
|
|
198
|
-
wrapper.destroy()
|
|
199
|
-
})
|
|
200
|
-
|
|
201
|
-
it('should not emit row-contextmenu event when a row is right clicked and table busy', async () => {
|
|
202
|
-
const wrapper = mount(BTable, {
|
|
203
|
-
propsData: {
|
|
204
|
-
fields: testFields,
|
|
205
|
-
items: testItems,
|
|
206
|
-
busy: true
|
|
207
|
-
},
|
|
208
|
-
listeners: {
|
|
209
|
-
// Row-contextmenu will only occur if there is a registered listener
|
|
210
|
-
'row-contextmenu': () => {}
|
|
211
|
-
}
|
|
212
|
-
})
|
|
213
|
-
expect(wrapper).toBeDefined()
|
|
214
|
-
const $rows = wrapper.findAll('tbody > tr')
|
|
215
|
-
expect($rows.length).toBe(3)
|
|
216
|
-
expect(wrapper.emitted('row-contextmenu')).toBeUndefined()
|
|
217
|
-
await $rows.at(1).trigger('contextmenu')
|
|
218
|
-
expect(wrapper.emitted('row-contextmenu')).toBeUndefined()
|
|
219
|
-
|
|
220
|
-
wrapper.destroy()
|
|
221
|
-
})
|
|
222
|
-
|
|
223
|
-
it('should emit row-hovered event when a row is hovered', async () => {
|
|
224
|
-
const wrapper = mount(BTable, {
|
|
225
|
-
propsData: {
|
|
226
|
-
fields: testFields,
|
|
227
|
-
items: testItems
|
|
228
|
-
},
|
|
229
|
-
listeners: {
|
|
230
|
-
// Row-hovered will only occur if there is a registered listener
|
|
231
|
-
'row-hovered': () => {}
|
|
232
|
-
}
|
|
233
|
-
})
|
|
234
|
-
expect(wrapper).toBeDefined()
|
|
235
|
-
const $rows = wrapper.findAll('tbody > tr')
|
|
236
|
-
expect($rows.length).toBe(3)
|
|
237
|
-
expect(wrapper.emitted('row-hovered')).toBeUndefined()
|
|
238
|
-
await $rows.at(1).trigger('mouseenter')
|
|
239
|
-
expect(wrapper.emitted('row-hovered')).toBeDefined()
|
|
240
|
-
expect(wrapper.emitted('row-hovered').length).toBe(1)
|
|
241
|
-
expect(wrapper.emitted('row-hovered')[0][0]).toEqual(testItems[1]) // Row item
|
|
242
|
-
expect(wrapper.emitted('row-hovered')[0][1]).toEqual(1) // Row index
|
|
243
|
-
expect(wrapper.emitted('row-hovered')[0][2]).toBeInstanceOf(MouseEvent) // Event
|
|
244
|
-
|
|
245
|
-
wrapper.destroy()
|
|
246
|
-
})
|
|
247
|
-
|
|
248
|
-
it('should not emit row-hovered event when a row is hovered and no listener', async () => {
|
|
249
|
-
if (isVue3) {
|
|
250
|
-
// We can't track if we have an event listener in vue3 so we skip this test for vue 3
|
|
251
|
-
return
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
const wrapper = mount(BTable, {
|
|
255
|
-
propsData: {
|
|
256
|
-
fields: testFields,
|
|
257
|
-
items: testItems
|
|
258
|
-
}
|
|
259
|
-
})
|
|
260
|
-
expect(wrapper).toBeDefined()
|
|
261
|
-
const $rows = wrapper.findAll('tbody > tr')
|
|
262
|
-
expect($rows.length).toBe(3)
|
|
263
|
-
expect(wrapper.emitted('row-hovered')).toBeUndefined()
|
|
264
|
-
await $rows.at(1).trigger('mouseenter')
|
|
265
|
-
expect(wrapper.emitted('row-hovered')).toBeUndefined()
|
|
266
|
-
|
|
267
|
-
wrapper.destroy()
|
|
268
|
-
})
|
|
269
|
-
|
|
270
|
-
it('should not emit row-hovered event when a row is hovered and table busy', async () => {
|
|
271
|
-
const wrapper = mount(BTable, {
|
|
272
|
-
propsData: {
|
|
273
|
-
fields: testFields,
|
|
274
|
-
items: testItems,
|
|
275
|
-
busy: true
|
|
276
|
-
},
|
|
277
|
-
listeners: {
|
|
278
|
-
// Row-hovered will only occur if there is a registered listener
|
|
279
|
-
'row-hovered': () => {}
|
|
280
|
-
}
|
|
281
|
-
})
|
|
282
|
-
expect(wrapper).toBeDefined()
|
|
283
|
-
const $rows = wrapper.findAll('tbody > tr')
|
|
284
|
-
expect($rows.length).toBe(3)
|
|
285
|
-
expect(wrapper.emitted('row-hovered')).toBeUndefined()
|
|
286
|
-
await $rows.at(1).trigger('mouseenter')
|
|
287
|
-
expect(wrapper.emitted('row-hovered')).toBeUndefined()
|
|
288
|
-
|
|
289
|
-
wrapper.destroy()
|
|
290
|
-
})
|
|
291
|
-
|
|
292
|
-
it('should emit row-unhovered event when a row is unhovered', async () => {
|
|
293
|
-
const wrapper = mount(BTable, {
|
|
294
|
-
propsData: {
|
|
295
|
-
fields: testFields,
|
|
296
|
-
items: testItems
|
|
297
|
-
},
|
|
298
|
-
listeners: {
|
|
299
|
-
// Row-unhovered will only occur if there is a registered listener
|
|
300
|
-
'row-unhovered': () => {}
|
|
301
|
-
}
|
|
302
|
-
})
|
|
303
|
-
expect(wrapper).toBeDefined()
|
|
304
|
-
const $rows = wrapper.findAll('tbody > tr')
|
|
305
|
-
expect($rows.length).toBe(3)
|
|
306
|
-
expect(wrapper.emitted('row-unhovered')).toBeUndefined()
|
|
307
|
-
await $rows.at(1).trigger('mouseleave')
|
|
308
|
-
expect(wrapper.emitted('row-unhovered')).toBeDefined()
|
|
309
|
-
expect(wrapper.emitted('row-unhovered').length).toBe(1)
|
|
310
|
-
expect(wrapper.emitted('row-unhovered')[0][0]).toEqual(testItems[1]) // Row item
|
|
311
|
-
expect(wrapper.emitted('row-unhovered')[0][1]).toEqual(1) // Row index
|
|
312
|
-
expect(wrapper.emitted('row-unhovered')[0][2]).toBeInstanceOf(MouseEvent) // Event
|
|
313
|
-
|
|
314
|
-
wrapper.destroy()
|
|
315
|
-
})
|
|
316
|
-
|
|
317
|
-
it('should not emit row-unhovered event when a row is hovered and no listener', async () => {
|
|
318
|
-
if (isVue3) {
|
|
319
|
-
// We can't track if we have an event listener in vue3 so we skip this test for vue 3
|
|
320
|
-
return
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
const wrapper = mount(BTable, {
|
|
324
|
-
propsData: {
|
|
325
|
-
fields: testFields,
|
|
326
|
-
items: testItems
|
|
327
|
-
}
|
|
328
|
-
})
|
|
329
|
-
expect(wrapper).toBeDefined()
|
|
330
|
-
const $rows = wrapper.findAll('tbody > tr')
|
|
331
|
-
expect($rows.length).toBe(3)
|
|
332
|
-
expect(wrapper.emitted('row-unhovered')).toBeUndefined()
|
|
333
|
-
await $rows.at(1).trigger('mouseleave')
|
|
334
|
-
expect(wrapper.emitted('row-unhovered')).toBeUndefined()
|
|
335
|
-
|
|
336
|
-
wrapper.destroy()
|
|
337
|
-
})
|
|
338
|
-
|
|
339
|
-
it('should not emit row-unhovered event when a row is unhovered and table busy', async () => {
|
|
340
|
-
const wrapper = mount(BTable, {
|
|
341
|
-
propsData: {
|
|
342
|
-
fields: testFields,
|
|
343
|
-
items: testItems,
|
|
344
|
-
busy: true
|
|
345
|
-
},
|
|
346
|
-
listeners: {
|
|
347
|
-
// Row-unhovered will only occur if there is a registered listener
|
|
348
|
-
'row-unhovered': () => {}
|
|
349
|
-
}
|
|
350
|
-
})
|
|
351
|
-
expect(wrapper).toBeDefined()
|
|
352
|
-
const $rows = wrapper.findAll('tbody > tr')
|
|
353
|
-
expect($rows.length).toBe(3)
|
|
354
|
-
expect(wrapper.emitted('row-unhovered')).toBeUndefined()
|
|
355
|
-
await $rows.at(1).trigger('mouseleave')
|
|
356
|
-
expect(wrapper.emitted('row-unhovered')).toBeUndefined()
|
|
357
|
-
|
|
358
|
-
wrapper.destroy()
|
|
359
|
-
})
|
|
360
|
-
|
|
361
|
-
it('should emit row-clicked event when a row is focusable and enter pressed', async () => {
|
|
362
|
-
const wrapper = mount(BTable, {
|
|
363
|
-
propsData: {
|
|
364
|
-
fields: testFields,
|
|
365
|
-
items: testItems
|
|
366
|
-
},
|
|
367
|
-
listeners: {
|
|
368
|
-
// Rows will only have tabindex=0 when a row-clicked listener present
|
|
369
|
-
'row-clicked': () => {}
|
|
370
|
-
},
|
|
371
|
-
attachTo: document.body
|
|
372
|
-
})
|
|
373
|
-
expect(wrapper).toBeDefined()
|
|
374
|
-
const $rows = wrapper.findAll('tbody > tr')
|
|
375
|
-
expect($rows.length).toBe(3)
|
|
376
|
-
expect(wrapper.emitted('row-clicked')).toBeUndefined()
|
|
377
|
-
$rows.at(1).element.focus() // Event only works when the TR is focused
|
|
378
|
-
await waitNT(wrapper.vm)
|
|
379
|
-
await $rows.at(1).trigger('keydown.enter')
|
|
380
|
-
await waitNT(wrapper.vm)
|
|
381
|
-
expect(wrapper.emitted('row-clicked')).toBeDefined()
|
|
382
|
-
expect(wrapper.emitted('row-clicked').length).toBe(1)
|
|
383
|
-
expect(wrapper.emitted('row-clicked')[0][0]).toEqual(testItems[1]) // Row item
|
|
384
|
-
expect(wrapper.emitted('row-clicked')[0][1]).toEqual(1) // Row index
|
|
385
|
-
// Note: the KeyboardEvent is passed to the row-clicked handler
|
|
386
|
-
expect(wrapper.emitted('row-clicked')[0][2]).toBeInstanceOf(KeyboardEvent) // Event
|
|
387
|
-
|
|
388
|
-
wrapper.destroy()
|
|
389
|
-
})
|
|
390
|
-
|
|
391
|
-
it('should not emit row-clicked event when a row is focusable, enter pressed, and table busy', async () => {
|
|
392
|
-
const wrapper = mount(BTable, {
|
|
393
|
-
propsData: {
|
|
394
|
-
fields: testFields,
|
|
395
|
-
items: testItems,
|
|
396
|
-
busy: true
|
|
397
|
-
},
|
|
398
|
-
listeners: {
|
|
399
|
-
// Row-clicked will only occur if there is a registered listener
|
|
400
|
-
'row-clicked': () => {}
|
|
401
|
-
}
|
|
402
|
-
})
|
|
403
|
-
expect(wrapper).toBeDefined()
|
|
404
|
-
const $rows = wrapper.findAll('tbody > tr')
|
|
405
|
-
expect($rows.length).toBe(3)
|
|
406
|
-
expect(wrapper.emitted('row-clicked')).toBeUndefined()
|
|
407
|
-
$rows.at(1).element.focus() // Event only works when the TR is focused
|
|
408
|
-
await $rows.at(1).trigger('keydown.enter')
|
|
409
|
-
expect(wrapper.emitted('row-clicked')).toBeUndefined()
|
|
410
|
-
|
|
411
|
-
wrapper.destroy()
|
|
412
|
-
})
|
|
413
|
-
|
|
414
|
-
it('should not emit row-clicked event when clicking on a button or other interactive element', async () => {
|
|
415
|
-
const wrapper = mount(BTable, {
|
|
416
|
-
attachTo: document.body,
|
|
417
|
-
propsData: {
|
|
418
|
-
// Add extra virtual columns
|
|
419
|
-
fields: [].concat(testFields, ['d', 'e', 'f']),
|
|
420
|
-
// We just use a single row for testing
|
|
421
|
-
items: [testItems[0]]
|
|
422
|
-
},
|
|
423
|
-
slots: {
|
|
424
|
-
// In Vue 2.6x, slots get translated into scopedSlots
|
|
425
|
-
'cell(a)': '<button id="a">button</button>',
|
|
426
|
-
'cell(b)': '<input id="b">',
|
|
427
|
-
'cell(c)': '<a href="#" id="c">link</a>',
|
|
428
|
-
'cell(d)':
|
|
429
|
-
'<div class="dropdown-menu"><div id="d" class="dropdown-item">dropdown</div></div>',
|
|
430
|
-
'cell(e)': '<label for="e">label</label><input id="e">',
|
|
431
|
-
'cell(f)': '<label class="f-label"><input id="e"></label>'
|
|
432
|
-
},
|
|
433
|
-
listeners: {
|
|
434
|
-
// Row-clicked will only occur if there is a registered listener
|
|
435
|
-
'row-clicked': () => {}
|
|
436
|
-
}
|
|
437
|
-
})
|
|
438
|
-
expect(wrapper).toBeDefined()
|
|
439
|
-
expect(wrapper.element.tagName).toBe('TABLE')
|
|
440
|
-
const $rows = wrapper.findAll('tbody > tr')
|
|
441
|
-
expect($rows.length).toBe(1)
|
|
442
|
-
expect(wrapper.emitted('row-clicked')).toBeUndefined()
|
|
443
|
-
|
|
444
|
-
const $btn = wrapper.find('button[id="a"]')
|
|
445
|
-
expect($btn.exists()).toBe(true)
|
|
446
|
-
await $btn.trigger('click')
|
|
447
|
-
expect(wrapper.emitted('row-clicked')).toBeUndefined()
|
|
448
|
-
|
|
449
|
-
const $input = wrapper.find('input[id="b"]')
|
|
450
|
-
expect($input.exists()).toBe(true)
|
|
451
|
-
await $input.trigger('click')
|
|
452
|
-
expect(wrapper.emitted('row-clicked')).toBeUndefined()
|
|
453
|
-
|
|
454
|
-
const $link = wrapper.find('a[id="c"]')
|
|
455
|
-
expect($link.exists()).toBe(true)
|
|
456
|
-
await $link.trigger('click')
|
|
457
|
-
expect(wrapper.emitted('row-clicked')).toBeUndefined()
|
|
458
|
-
|
|
459
|
-
const $dd = wrapper.find('div[id="d"]')
|
|
460
|
-
expect($dd.exists()).toBe(true)
|
|
461
|
-
await $dd.trigger('click')
|
|
462
|
-
expect(wrapper.emitted('row-clicked')).toBeUndefined()
|
|
463
|
-
|
|
464
|
-
const $label = wrapper.find('label[for="e"]')
|
|
465
|
-
expect($label.exists()).toBe(true)
|
|
466
|
-
await $label.trigger('click')
|
|
467
|
-
expect(wrapper.emitted('row-clicked')).toBeUndefined()
|
|
468
|
-
|
|
469
|
-
const $labelf = wrapper.find('label.f-label')
|
|
470
|
-
expect($labelf.exists()).toBe(true)
|
|
471
|
-
await $labelf.trigger('click')
|
|
472
|
-
expect(wrapper.emitted('row-clicked')).toBeUndefined()
|
|
473
|
-
|
|
474
|
-
wrapper.destroy()
|
|
475
|
-
})
|
|
476
|
-
|
|
477
|
-
it('keyboard events moves focus to appropriate rows', async () => {
|
|
478
|
-
const wrapper = mount(BTable, {
|
|
479
|
-
propsData: {
|
|
480
|
-
fields: testFields,
|
|
481
|
-
items: testItems
|
|
482
|
-
},
|
|
483
|
-
listeners: {
|
|
484
|
-
// Tabindex will only be set if there is a row-clicked listener
|
|
485
|
-
'row-clicked': () => {}
|
|
486
|
-
},
|
|
487
|
-
attachTo: document.body
|
|
488
|
-
})
|
|
489
|
-
expect(wrapper).toBeDefined()
|
|
490
|
-
await waitNT(wrapper.vm)
|
|
491
|
-
const $rows = wrapper.findAll('tbody > tr')
|
|
492
|
-
expect($rows.length).toBe(3)
|
|
493
|
-
expect($rows.wrappers.every(w => w.attributes('tabindex') === '0')).toBe(true)
|
|
494
|
-
|
|
495
|
-
expect(document.activeElement).not.toBe($rows.at(0).element)
|
|
496
|
-
expect(document.activeElement).not.toBe($rows.at(1).element)
|
|
497
|
-
expect(document.activeElement).not.toBe($rows.at(2).element)
|
|
498
|
-
|
|
499
|
-
$rows.at(0).element.focus()
|
|
500
|
-
expect(document.activeElement).toBe($rows.at(0).element)
|
|
501
|
-
|
|
502
|
-
await $rows.at(0).trigger('keydown.end')
|
|
503
|
-
expect(document.activeElement).toBe($rows.at(2).element)
|
|
504
|
-
|
|
505
|
-
await $rows.at(2).trigger('keydown.home')
|
|
506
|
-
expect(document.activeElement).toBe($rows.at(0).element)
|
|
507
|
-
|
|
508
|
-
await $rows.at(0).trigger('keydown.down')
|
|
509
|
-
expect(document.activeElement).toBe($rows.at(1).element)
|
|
510
|
-
|
|
511
|
-
await $rows.at(1).trigger('keydown.up')
|
|
512
|
-
expect(document.activeElement).toBe($rows.at(0).element)
|
|
513
|
-
|
|
514
|
-
await $rows.at(0).trigger('keydown.down', { shiftKey: true })
|
|
515
|
-
expect(document.activeElement).toBe($rows.at(2).element)
|
|
516
|
-
|
|
517
|
-
await $rows.at(2).trigger('keydown.up', { shiftKey: true })
|
|
518
|
-
expect(document.activeElement).toBe($rows.at(0).element)
|
|
519
|
-
|
|
520
|
-
// Should only move focus if TR was target
|
|
521
|
-
await $rows
|
|
522
|
-
.at(0)
|
|
523
|
-
.find('td')
|
|
524
|
-
.trigger('keydown.down')
|
|
525
|
-
expect(document.activeElement).toBe($rows.at(0).element)
|
|
526
|
-
|
|
527
|
-
wrapper.destroy()
|
|
528
|
-
})
|
|
529
|
-
})
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { mount } from '@vue/test-utils'
|
|
2
|
-
import { normalizeFields } from './helpers/normalize-fields'
|
|
3
|
-
import { BTable } from './table'
|
|
4
|
-
|
|
5
|
-
const testItems = [{ a: 1, b: 2, c: 3 }, { a: 5, b: 5, c: 6 }, { a: 7, b: 8, c: 9 }]
|
|
6
|
-
const testFields = ['a', 'b', 'c']
|
|
7
|
-
|
|
8
|
-
describe('table > tbody top-row slot', () => {
|
|
9
|
-
it('should not have top row by default', async () => {
|
|
10
|
-
const wrapper = mount(BTable, {
|
|
11
|
-
propsData: {
|
|
12
|
-
fields: testFields,
|
|
13
|
-
items: testItems
|
|
14
|
-
}
|
|
15
|
-
})
|
|
16
|
-
expect(wrapper).toBeDefined()
|
|
17
|
-
expect(wrapper.element.tagName).toBe('TABLE')
|
|
18
|
-
expect(wrapper.find('tbody').exists()).toBe(true)
|
|
19
|
-
expect(wrapper.findAll('tbody > tr').exists()).toBe(true)
|
|
20
|
-
expect(wrapper.findAll('tbody > tr').length).toBe(testItems.length)
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
it('should render named slot `top-row`', async () => {
|
|
24
|
-
const wrapper = mount(BTable, {
|
|
25
|
-
propsData: {
|
|
26
|
-
fields: testFields,
|
|
27
|
-
items: testItems
|
|
28
|
-
},
|
|
29
|
-
slots: {
|
|
30
|
-
'top-row': `<td span="${testFields.length}">foobar</td>`
|
|
31
|
-
}
|
|
32
|
-
})
|
|
33
|
-
expect(wrapper).toBeDefined()
|
|
34
|
-
expect(wrapper.element.tagName).toBe('TABLE')
|
|
35
|
-
expect(wrapper.find('tbody').exists()).toBe(true)
|
|
36
|
-
expect(wrapper.findAll('tbody > tr').exists()).toBe(true)
|
|
37
|
-
expect(wrapper.findAll('tbody > tr').length).toBe(testItems.length + 1)
|
|
38
|
-
expect(
|
|
39
|
-
wrapper
|
|
40
|
-
.findAll('tbody > tr')
|
|
41
|
-
.at(0)
|
|
42
|
-
.text()
|
|
43
|
-
).toBe('foobar')
|
|
44
|
-
expect(
|
|
45
|
-
wrapper
|
|
46
|
-
.findAll('tbody > tr')
|
|
47
|
-
.at(0)
|
|
48
|
-
.classes()
|
|
49
|
-
).toContain('b-table-top-row')
|
|
50
|
-
})
|
|
51
|
-
|
|
52
|
-
it('should render scoped slot `top-row`', async () => {
|
|
53
|
-
let fields = []
|
|
54
|
-
let columns
|
|
55
|
-
const wrapper = mount(BTable, {
|
|
56
|
-
propsData: {
|
|
57
|
-
fields: testFields,
|
|
58
|
-
items: testItems
|
|
59
|
-
},
|
|
60
|
-
scopedSlots: {
|
|
61
|
-
'top-row': function(scope) {
|
|
62
|
-
fields = scope.fields
|
|
63
|
-
columns = scope.columns
|
|
64
|
-
return this.$createElement('td', { attrs: { span: columns } }, 'foobar')
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
})
|
|
68
|
-
expect(wrapper).toBeDefined()
|
|
69
|
-
expect(wrapper.element.tagName).toBe('TABLE')
|
|
70
|
-
expect(wrapper.find('tbody').exists()).toBe(true)
|
|
71
|
-
expect(columns).toBe(3)
|
|
72
|
-
expect(fields).toEqual(normalizeFields(testFields))
|
|
73
|
-
expect(wrapper.findAll('tbody > tr').exists()).toBe(true)
|
|
74
|
-
expect(wrapper.findAll('tbody > tr').length).toBe(testItems.length + 1)
|
|
75
|
-
expect(
|
|
76
|
-
wrapper
|
|
77
|
-
.findAll('tbody > tr')
|
|
78
|
-
.at(0)
|
|
79
|
-
.text()
|
|
80
|
-
).toBe('foobar')
|
|
81
|
-
expect(
|
|
82
|
-
wrapper
|
|
83
|
-
.findAll('tbody > tr')
|
|
84
|
-
.at(0)
|
|
85
|
-
.classes()
|
|
86
|
-
).toContain('b-table-top-row')
|
|
87
|
-
})
|
|
88
|
-
})
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { config as vtuConfig, mount } from '@vue/test-utils'
|
|
2
|
-
import { TransitionGroupStub } from '../../../tests/components'
|
|
3
|
-
import { isVue3 } from '../../vue'
|
|
4
|
-
import { BTable } from './table'
|
|
5
|
-
|
|
6
|
-
// Stub `<transition-group>` component
|
|
7
|
-
if (!isVue3) {
|
|
8
|
-
vtuConfig.stubs['transition-group'] = TransitionGroupStub
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const testItems = [{ a: 1, b: 2, c: 3 }, { a: 5, b: 5, c: 6 }, { a: 7, b: 8, c: 9 }]
|
|
12
|
-
const testFields = ['a', 'b', 'c']
|
|
13
|
-
|
|
14
|
-
describe('table > tbody transition', () => {
|
|
15
|
-
if (isVue3) {
|
|
16
|
-
// @vue/test-utils does not support stubbing transition, so impossible to test ATM
|
|
17
|
-
|
|
18
|
-
// adding dummy test to keep jest happy
|
|
19
|
-
it('skipped due to vue3', () => {})
|
|
20
|
-
return
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
it('tbody should not be a transition-group component by default', async () => {
|
|
24
|
-
const wrapper = mount(BTable, {
|
|
25
|
-
attachTo: document.body,
|
|
26
|
-
propsData: {
|
|
27
|
-
fields: testFields,
|
|
28
|
-
items: testItems
|
|
29
|
-
}
|
|
30
|
-
})
|
|
31
|
-
expect(wrapper).toBeDefined()
|
|
32
|
-
expect(wrapper.element.tagName).toBe('TABLE')
|
|
33
|
-
expect(wrapper.find('tbody').exists()).toBe(true)
|
|
34
|
-
expect(wrapper.find('tbody').element.tagName).toBe('TBODY')
|
|
35
|
-
// `<transition-group>` stub doesn't render itself with the specified tag
|
|
36
|
-
expect(wrapper.findComponent(TransitionGroupStub).exists()).toBe(false)
|
|
37
|
-
|
|
38
|
-
wrapper.destroy()
|
|
39
|
-
})
|
|
40
|
-
|
|
41
|
-
it('tbody should be a transition-group component when tbody-transition-props set', async () => {
|
|
42
|
-
const wrapper = mount(BTable, {
|
|
43
|
-
attachTo: document.body,
|
|
44
|
-
propsData: {
|
|
45
|
-
fields: testFields,
|
|
46
|
-
items: testItems,
|
|
47
|
-
tbodyTransitionProps: {
|
|
48
|
-
name: 'fade'
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
})
|
|
52
|
-
expect(wrapper).toBeDefined()
|
|
53
|
-
expect(wrapper.element.tagName).toBe('TABLE')
|
|
54
|
-
// `<transition-group>` stub doesn't render itself with the specified tag
|
|
55
|
-
expect(wrapper.findComponent(TransitionGroupStub).exists()).toBe(true)
|
|
56
|
-
expect(wrapper.find('tbody').exists()).toBe(false)
|
|
57
|
-
|
|
58
|
-
wrapper.destroy()
|
|
59
|
-
})
|
|
60
|
-
|
|
61
|
-
it('tbody should be a transition-group component when tbody-transition-handlers set', async () => {
|
|
62
|
-
const wrapper = mount(BTable, {
|
|
63
|
-
attachTo: document.body,
|
|
64
|
-
propsData: {
|
|
65
|
-
fields: testFields,
|
|
66
|
-
items: testItems,
|
|
67
|
-
tbodyTransitionHandlers: {
|
|
68
|
-
onBeforeEnter: () => {},
|
|
69
|
-
onAfterEnter: () => {},
|
|
70
|
-
onBeforeLeave: () => {},
|
|
71
|
-
onAfterLeave: () => {}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
})
|
|
75
|
-
expect(wrapper).toBeDefined()
|
|
76
|
-
expect(wrapper.element.tagName).toBe('TABLE')
|
|
77
|
-
// `<transition-group>` stub doesn't render itself with the specified tag
|
|
78
|
-
expect(wrapper.findComponent(TransitionGroupStub).exists()).toBe(true)
|
|
79
|
-
expect(wrapper.find('tbody').exists()).toBe(false)
|
|
80
|
-
|
|
81
|
-
wrapper.destroy()
|
|
82
|
-
})
|
|
83
|
-
})
|