@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.
Files changed (141) hide show
  1. package/dist/components/base/breadcrumb/breadcrumb.js +4 -16
  2. package/dist/index.css +1 -1
  3. package/dist/index.css.map +1 -1
  4. package/package.json +7 -26
  5. package/src/components/base/breadcrumb/breadcrumb.scss +18 -2
  6. package/src/components/base/breadcrumb/breadcrumb.vue +4 -17
  7. package/CHANGELOG.md +0 -13139
  8. package/src/vendor/bootstrap/LICENSE +0 -11
  9. package/src/vendor/bootstrap-vue/LICENSE +0 -11
  10. package/src/vendor/bootstrap-vue/package.json +0 -144
  11. package/src/vendor/bootstrap-vue/src/components/button/MODIFICATIONS.md +0 -16
  12. package/src/vendor/bootstrap-vue/src/components/button/README.md +0 -240
  13. package/src/vendor/bootstrap-vue/src/components/button/button-close.spec.js +0 -210
  14. package/src/vendor/bootstrap-vue/src/components/button/button.spec.js +0 -349
  15. package/src/vendor/bootstrap-vue/src/components/button/package.json +0 -105
  16. package/src/vendor/bootstrap-vue/src/components/dropdown/README.md +0 -730
  17. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.spec.js +0 -58
  18. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.spec.js +0 -110
  19. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.spec.js +0 -94
  20. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.spec.js +0 -73
  21. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.spec.js +0 -117
  22. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.spec.js +0 -147
  23. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.spec.js +0 -59
  24. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown.spec.js +0 -1121
  25. package/src/vendor/bootstrap-vue/src/components/dropdown/package.json +0 -368
  26. package/src/vendor/bootstrap-vue/src/components/form/README.md +0 -365
  27. package/src/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.spec.js +0 -170
  28. package/src/vendor/bootstrap-vue/src/components/form/form-text.spec.js +0 -93
  29. package/src/vendor/bootstrap-vue/src/components/form/form-valid-feedback.spec.js +0 -157
  30. package/src/vendor/bootstrap-vue/src/components/form/form.spec.js +0 -97
  31. package/src/vendor/bootstrap-vue/src/components/form/package.json +0 -112
  32. package/src/vendor/bootstrap-vue/src/components/form-checkbox/README.md +0 -691
  33. package/src/vendor/bootstrap-vue/src/components/form-checkbox/form-checkbox-group.spec.js +0 -525
  34. package/src/vendor/bootstrap-vue/src/components/form-checkbox/form-checkbox.spec.js +0 -922
  35. package/src/vendor/bootstrap-vue/src/components/form-checkbox/package.json +0 -172
  36. package/src/vendor/bootstrap-vue/src/components/form-group/README.md +0 -339
  37. package/src/vendor/bootstrap-vue/src/components/form-group/form-group.spec.js +0 -477
  38. package/src/vendor/bootstrap-vue/src/components/form-group/package.json +0 -183
  39. package/src/vendor/bootstrap-vue/src/components/form-radio/README.md +0 -437
  40. package/src/vendor/bootstrap-vue/src/components/form-radio/form-radio-group.spec.js +0 -357
  41. package/src/vendor/bootstrap-vue/src/components/form-radio/form-radio.spec.js +0 -587
  42. package/src/vendor/bootstrap-vue/src/components/form-radio/package.json +0 -162
  43. package/src/vendor/bootstrap-vue/src/components/form-select/README.md +0 -504
  44. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.spec.js +0 -138
  45. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option.spec.js +0 -75
  46. package/src/vendor/bootstrap-vue/src/components/form-select/form-select.spec.js +0 -723
  47. package/src/vendor/bootstrap-vue/src/components/form-select/package.json +0 -132
  48. package/src/vendor/bootstrap-vue/src/components/form-textarea/README.md +0 -453
  49. package/src/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.spec.js +0 -1000
  50. package/src/vendor/bootstrap-vue/src/components/form-textarea/package.json +0 -122
  51. package/src/vendor/bootstrap-vue/src/components/layout/README.md +0 -791
  52. package/src/vendor/bootstrap-vue/src/components/layout/col.spec.js +0 -192
  53. package/src/vendor/bootstrap-vue/src/components/layout/form-row.spec.js +0 -45
  54. package/src/vendor/bootstrap-vue/src/components/layout/package.json +0 -99
  55. package/src/vendor/bootstrap-vue/src/components/link/README.md +0 -76
  56. package/src/vendor/bootstrap-vue/src/components/link/link.spec.js +0 -434
  57. package/src/vendor/bootstrap-vue/src/components/link/package.json +0 -57
  58. package/src/vendor/bootstrap-vue/src/components/modal/MODIFICATIONS.md +0 -30
  59. package/src/vendor/bootstrap-vue/src/components/modal/README.md +0 -1067
  60. package/src/vendor/bootstrap-vue/src/components/modal/helpers/bv-modal-event.class.spec.js +0 -82
  61. package/src/vendor/bootstrap-vue/src/components/modal/modal.spec.js +0 -1418
  62. package/src/vendor/bootstrap-vue/src/components/modal/package.json +0 -544
  63. package/src/vendor/bootstrap-vue/src/components/nav/README.md +0 -362
  64. package/src/vendor/bootstrap-vue/src/components/nav/nav-item.spec.js +0 -127
  65. package/src/vendor/bootstrap-vue/src/components/nav/nav.spec.js +0 -177
  66. package/src/vendor/bootstrap-vue/src/components/nav/package.json +0 -73
  67. package/src/vendor/bootstrap-vue/src/components/popover/README.md +0 -919
  68. package/src/vendor/bootstrap-vue/src/components/popover/package.json +0 -261
  69. package/src/vendor/bootstrap-vue/src/components/popover/popover.spec.js +0 -198
  70. package/src/vendor/bootstrap-vue/src/components/table/README.md +0 -3157
  71. package/src/vendor/bootstrap-vue/src/components/table/helpers/default-sort-compare.spec.js +0 -112
  72. package/src/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.spec.js +0 -93
  73. package/src/vendor/bootstrap-vue/src/components/table/package.json +0 -1763
  74. package/src/vendor/bootstrap-vue/src/components/table/table-busy.spec.js +0 -150
  75. package/src/vendor/bootstrap-vue/src/components/table/table-caption.spec.js +0 -176
  76. package/src/vendor/bootstrap-vue/src/components/table/table-colgroup.spec.js +0 -81
  77. package/src/vendor/bootstrap-vue/src/components/table/table-filtering.spec.js +0 -409
  78. package/src/vendor/bootstrap-vue/src/components/table/table-item-formatter.spec.js +0 -56
  79. package/src/vendor/bootstrap-vue/src/components/table/table-lite.spec.js +0 -682
  80. package/src/vendor/bootstrap-vue/src/components/table/table-pagination.spec.js +0 -133
  81. package/src/vendor/bootstrap-vue/src/components/table/table-primarykey.spec.js +0 -83
  82. package/src/vendor/bootstrap-vue/src/components/table/table-provider.spec.js +0 -411
  83. package/src/vendor/bootstrap-vue/src/components/table/table-row-details.spec.js +0 -459
  84. package/src/vendor/bootstrap-vue/src/components/table/table-selectable.spec.js +0 -1182
  85. package/src/vendor/bootstrap-vue/src/components/table/table-simple.spec.js +0 -206
  86. package/src/vendor/bootstrap-vue/src/components/table/table-sorting.spec.js +0 -858
  87. package/src/vendor/bootstrap-vue/src/components/table/table-sticky-column.spec.js +0 -377
  88. package/src/vendor/bootstrap-vue/src/components/table/table-tbody-bottom-row.spec.js +0 -94
  89. package/src/vendor/bootstrap-vue/src/components/table/table-tbody-row-events.spec.js +0 -529
  90. package/src/vendor/bootstrap-vue/src/components/table/table-tbody-top-row.spec.js +0 -88
  91. package/src/vendor/bootstrap-vue/src/components/table/table-tbody-transition.spec.js +0 -83
  92. package/src/vendor/bootstrap-vue/src/components/table/table-tfoot-custom.spec.js +0 -91
  93. package/src/vendor/bootstrap-vue/src/components/table/table-tfoot-events.spec.js +0 -137
  94. package/src/vendor/bootstrap-vue/src/components/table/table-thead-events.spec.js +0 -155
  95. package/src/vendor/bootstrap-vue/src/components/table/table-thead-top.spec.js +0 -96
  96. package/src/vendor/bootstrap-vue/src/components/table/table.spec.js +0 -692
  97. package/src/vendor/bootstrap-vue/src/components/tabs/README.md +0 -433
  98. package/src/vendor/bootstrap-vue/src/components/tabs/package.json +0 -205
  99. package/src/vendor/bootstrap-vue/src/components/tabs/tab.spec.js +0 -330
  100. package/src/vendor/bootstrap-vue/src/components/tabs/tabs.spec.js +0 -778
  101. package/src/vendor/bootstrap-vue/src/components/toast/README.md +0 -655
  102. package/src/vendor/bootstrap-vue/src/components/toast/helpers/bv-toast.spec.js +0 -117
  103. package/src/vendor/bootstrap-vue/src/components/toast/package.json +0 -184
  104. package/src/vendor/bootstrap-vue/src/components/toast/toast.spec.js +0 -294
  105. package/src/vendor/bootstrap-vue/src/components/toast/toaster.spec.js +0 -77
  106. package/src/vendor/bootstrap-vue/src/components/tooltip/README.md +0 -559
  107. package/src/vendor/bootstrap-vue/src/components/tooltip/package.json +0 -258
  108. package/src/vendor/bootstrap-vue/src/components/tooltip/tooltip.spec.js +0 -1240
  109. package/src/vendor/bootstrap-vue/src/components/transition/package.json +0 -5
  110. package/src/vendor/bootstrap-vue/src/components/transporter/package.json +0 -5
  111. package/src/vendor/bootstrap-vue/src/components/transporter/transporter.spec.js +0 -85
  112. package/src/vendor/bootstrap-vue/src/directives/modal/modal.spec.js +0 -191
  113. package/src/vendor/bootstrap-vue/src/directives/tooltip/README.md +0 -521
  114. package/src/vendor/bootstrap-vue/src/directives/tooltip/package.json +0 -131
  115. package/src/vendor/bootstrap-vue/src/directives/tooltip/tooltip.spec.js +0 -190
  116. package/src/vendor/bootstrap-vue/src/directives/visible/README.md +0 -244
  117. package/src/vendor/bootstrap-vue/src/directives/visible/package.json +0 -24
  118. package/src/vendor/bootstrap-vue/src/mixins/attrs.spec.js +0 -194
  119. package/src/vendor/bootstrap-vue/src/mixins/click-out.spec.js +0 -52
  120. package/src/vendor/bootstrap-vue/src/mixins/focus-in.spec.js +0 -53
  121. package/src/vendor/bootstrap-vue/src/mixins/listen-on-document.spec.js +0 -117
  122. package/src/vendor/bootstrap-vue/src/mixins/listen-on-root.spec.js +0 -77
  123. package/src/vendor/bootstrap-vue/src/mixins/listen-on-window.spec.js +0 -115
  124. package/src/vendor/bootstrap-vue/src/mixins/listeners.spec.js +0 -245
  125. package/src/vendor/bootstrap-vue/src/utils/bv-event.class.spec.js +0 -66
  126. package/src/vendor/bootstrap-vue/src/utils/clone-deep.spec.js +0 -70
  127. package/src/vendor/bootstrap-vue/src/utils/config.spec.js +0 -169
  128. package/src/vendor/bootstrap-vue/src/utils/css-escape.spec.js +0 -82
  129. package/src/vendor/bootstrap-vue/src/utils/dom.spec.js +0 -291
  130. package/src/vendor/bootstrap-vue/src/utils/events.spec.js +0 -41
  131. package/src/vendor/bootstrap-vue/src/utils/get.spec.js +0 -109
  132. package/src/vendor/bootstrap-vue/src/utils/inspect.spec.js +0 -251
  133. package/src/vendor/bootstrap-vue/src/utils/loose-equal.spec.js +0 -203
  134. package/src/vendor/bootstrap-vue/src/utils/normalize-slot.spec.js +0 -63
  135. package/src/vendor/bootstrap-vue/src/utils/number.spec.js +0 -72
  136. package/src/vendor/bootstrap-vue/src/utils/object.spec.js +0 -61
  137. package/src/vendor/bootstrap-vue/src/utils/props.spec.js +0 -112
  138. package/src/vendor/bootstrap-vue/src/utils/router.spec.js +0 -248
  139. package/src/vendor/bootstrap-vue/src/utils/string.spec.js +0 -65
  140. package/src/vendor/bootstrap-vue/src/utils/stringify-object-values.spec.js +0 -47
  141. package/src/vendor/bootstrap-vue/src/utils/warn.spec.js +0 -54
@@ -1,459 +0,0 @@
1
- import { mount } from '@vue/test-utils'
2
- import { waitNT } from '../../../tests/utils'
3
- import { BTable } from './table'
4
-
5
- describe('table > row details', () => {
6
- it('does not show details if slot row-details not defined', async () => {
7
- const testItems = [
8
- { a: 1, b: 2, c: 3, _showDetails: true },
9
- { a: 5, b: 5, c: 6 },
10
- { a: 7, b: 8, c: 9, _showDetails: false }
11
- ]
12
- const testFields = ['a', 'b', 'c']
13
- const wrapper = mount(BTable, {
14
- propsData: {
15
- fields: testFields,
16
- items: testItems
17
- }
18
- })
19
-
20
- expect(wrapper).toBeDefined()
21
- expect(wrapper.find('tbody').exists()).toBe(true)
22
- const $trs = wrapper.findAll('tbody > tr')
23
- expect($trs.length).toBe(3)
24
- expect(
25
- $trs
26
- .at(0)
27
- .find('tr.b-table-details')
28
- .exists()
29
- ).toBe(false)
30
- expect(
31
- $trs
32
- .at(1)
33
- .find('tr.b-table-details')
34
- .exists()
35
- ).toBe(false)
36
- expect(
37
- $trs
38
- .at(2)
39
- .find('tr.b-table-details')
40
- .exists()
41
- ).toBe(false)
42
-
43
- wrapper.destroy()
44
- })
45
-
46
- it('expected rows have details showing', async () => {
47
- const testItems = [
48
- { a: 1, b: 2, c: 3, _showDetails: true },
49
- { a: 5, b: 5, c: 6 },
50
- { a: 7, b: 8, c: 9, _showDetails: false }
51
- ]
52
- const testFields = ['a', 'b', 'c']
53
- const wrapper = mount(BTable, {
54
- propsData: {
55
- fields: testFields,
56
- items: testItems
57
- },
58
- slots: {
59
- // Named slots get turned into scopedSlots in Vue 2.6.x
60
- 'row-details': '<div>foobar</div>'
61
- }
62
- })
63
-
64
- expect(wrapper).toBeDefined()
65
- expect(wrapper.find('tbody').exists()).toBe(true)
66
- const $trs = wrapper.findAll('tbody > tr')
67
- expect($trs.length).toBe(4)
68
- expect(
69
- $trs
70
- .at(0)
71
- .find('tr.b-table-details')
72
- .exists()
73
- ).toBe(false)
74
- expect(
75
- $trs
76
- .at(1)
77
- .find('tr.b-table-details')
78
- .exists()
79
- ).toBe(true)
80
- expect(
81
- $trs
82
- .at(2)
83
- .find('tr.b-table-details')
84
- .exists()
85
- ).toBe(false)
86
- expect(
87
- $trs
88
- .at(3)
89
- .find('tr.b-table-details')
90
- .exists()
91
- ).toBe(false)
92
- expect($trs.at(1).text()).toBe('foobar')
93
-
94
- wrapper.destroy()
95
- })
96
-
97
- it('prop `details-td-class` works', async () => {
98
- const testItems = [
99
- { a: 1, b: 2, c: 3, _showDetails: true },
100
- { a: 5, b: 5, c: 6 },
101
- { a: 7, b: 8, c: 9, _showDetails: false }
102
- ]
103
- const testFields = ['a', 'b', 'c']
104
- const wrapper = mount(BTable, {
105
- propsData: {
106
- fields: testFields,
107
- items: testItems,
108
- detailsTdClass: 'foobar-class'
109
- },
110
- slots: {
111
- // Named slots get turned into scopedSlots in Vue 2.6.x
112
- 'row-details': '<div>foobar</div>'
113
- }
114
- })
115
-
116
- expect(wrapper).toBeDefined()
117
- expect(wrapper.find('tbody').exists()).toBe(true)
118
- const $trs = wrapper.findAll('tbody > tr')
119
- expect($trs.length).toBe(4)
120
- expect(
121
- $trs
122
- .at(0)
123
- .find('tr.b-table-details')
124
- .exists()
125
- ).toBe(false)
126
- expect($trs.at(0).findAll('td').length).toBe(3)
127
- expect(
128
- $trs
129
- .at(1)
130
- .find('tr.b-table-details')
131
- .exists()
132
- ).toBe(true)
133
- expect($trs.at(1).findAll('td').length).toBe(1)
134
- expect($trs.at(1).text()).toBe('foobar')
135
- const $detailsTd = $trs.at(1).find('td')
136
- expect($detailsTd.classes().length).toBe(1)
137
- expect($detailsTd.classes()).toContain('foobar-class')
138
- expect(
139
- $trs
140
- .at(2)
141
- .find('tr.b-table-details')
142
- .exists()
143
- ).toBe(false)
144
- expect($trs.at(2).findAll('td').length).toBe(3)
145
- expect(
146
- $trs
147
- .at(3)
148
- .find('tr.b-table-details')
149
- .exists()
150
- ).toBe(false)
151
- expect($trs.at(3).findAll('td').length).toBe(3)
152
-
153
- wrapper.destroy()
154
- })
155
-
156
- it('should show details slot when _showDetails changed', async () => {
157
- const testItems = [
158
- { a: 1, b: 2, c: 3, _showDetails: true },
159
- { a: 5, b: 5, c: 6 },
160
- { a: 7, b: 8, c: 9, _showDetails: false }
161
- ]
162
- const testFields = ['a', 'b', 'c']
163
- const wrapper = mount(BTable, {
164
- propsData: {
165
- fields: testFields,
166
- items: testItems
167
- },
168
- slots: {
169
- // Named slots get turned into scopedSlots in Vue 2.6.x
170
- 'row-details': '<div>foobar</div>'
171
- }
172
- })
173
-
174
- expect(wrapper).toBeDefined()
175
- expect(wrapper.find('tbody').exists()).toBe(true)
176
- expect(wrapper.findAll('tbody > tr').length).toBe(4)
177
-
178
- wrapper.vm.localItems[2]._showDetails = true
179
- await waitNT(wrapper.vm)
180
- const $trs = wrapper.findAll('tbody > tr')
181
- expect($trs.length).toBe(5)
182
- expect(
183
- $trs
184
- .at(0)
185
- .find('tr.b-table-details')
186
- .exists()
187
- ).toBe(false)
188
- expect(
189
- $trs
190
- .at(1)
191
- .find('tr.b-table-details')
192
- .exists()
193
- ).toBe(true)
194
- expect($trs.at(1).text()).toBe('foobar')
195
- expect(
196
- $trs
197
- .at(2)
198
- .find('tr.b-table-details')
199
- .exists()
200
- ).toBe(false)
201
- expect(
202
- $trs
203
- .at(3)
204
- .find('tr.b-table-details')
205
- .exists()
206
- ).toBe(false)
207
- expect(
208
- $trs
209
- .at(4)
210
- .find('tr.b-table-details')
211
- .exists()
212
- ).toBe(true)
213
- expect($trs.at(4).text()).toBe('foobar')
214
-
215
- wrapper.destroy()
216
- })
217
-
218
- it('should hide details slot when _showDetails changed', async () => {
219
- const testItems = [
220
- { a: 1, b: 2, c: 3, _showDetails: true },
221
- { a: 5, b: 5, c: 6 },
222
- { a: 7, b: 8, c: 9, _showDetails: false }
223
- ]
224
- const testFields = ['a', 'b', 'c']
225
- const wrapper = mount(BTable, {
226
- propsData: {
227
- fields: testFields,
228
- items: testItems
229
- },
230
- slots: {
231
- // named slots get turned into scopedSlots in Vue 2.6.x
232
- 'row-details': '<div>foobar</div>'
233
- }
234
- })
235
- let $trs
236
- expect(wrapper).toBeDefined()
237
- expect(wrapper.find('tbody').exists()).toBe(true)
238
- expect(wrapper.findAll('tbody > tr').length).toBe(4)
239
- $trs = wrapper.findAll('tbody > tr')
240
- expect($trs.length).toBe(4)
241
- expect(
242
- $trs
243
- .at(0)
244
- .find('tr.b-table-details')
245
- .exists()
246
- ).toBe(false)
247
- expect(
248
- $trs
249
- .at(1)
250
- .find('tr.b-table-details')
251
- .exists()
252
- ).toBe(true)
253
- expect($trs.at(1).text()).toBe('foobar')
254
- expect(
255
- $trs
256
- .at(2)
257
- .find('tr.b-table-details')
258
- .exists()
259
- ).toBe(false)
260
- expect(
261
- $trs
262
- .at(3)
263
- .find('tr.b-table-details')
264
- .exists()
265
- ).toBe(false)
266
-
267
- wrapper.vm.localItems[0]._showDetails = false
268
- await waitNT(wrapper.vm)
269
- $trs = wrapper.findAll('tbody > tr')
270
- expect($trs.length).toBe(3)
271
- expect(
272
- $trs
273
- .at(0)
274
- .find('tr.b-table-details')
275
- .exists()
276
- ).toBe(false)
277
- expect(
278
- $trs
279
- .at(1)
280
- .find('tr.b-table-details')
281
- .exists()
282
- ).toBe(false)
283
- expect(
284
- $trs
285
- .at(2)
286
- .find('tr.b-table-details')
287
- .exists()
288
- ).toBe(false)
289
-
290
- wrapper.destroy()
291
- })
292
-
293
- it('should have extra spacer tr when details showing and striped=true', async () => {
294
- const testItems = [
295
- { a: 1, b: 2, c: 3, _showDetails: true },
296
- { a: 5, b: 5, c: 6 },
297
- { a: 7, b: 8, c: 9, _showDetails: false }
298
- ]
299
- const testFields = ['a', 'b', 'c']
300
- const wrapper = mount(BTable, {
301
- propsData: {
302
- fields: testFields,
303
- items: testItems,
304
- striped: true
305
- },
306
- slots: {
307
- // Named slots get turned into scopedSlots in Vue 2.6.x
308
- 'row-details': '<div>foobar</div>'
309
- }
310
- })
311
-
312
- expect(wrapper).toBeDefined()
313
- expect(wrapper.find('tbody').exists()).toBe(true)
314
- const $trs = wrapper.findAll('tbody > tr')
315
- expect($trs.length).toBe(5)
316
- expect(
317
- $trs
318
- .at(0)
319
- .find('tr.b-table-details')
320
- .exists()
321
- ).toBe(false)
322
- expect(
323
- $trs
324
- .at(0)
325
- .find('tr.d-none')
326
- .exists()
327
- ).toBe(false)
328
- expect(
329
- $trs
330
- .at(1)
331
- .find('tr.b-table-details')
332
- .exists()
333
- ).toBe(false)
334
- expect($trs.at(1).element.matches('tr.d-none')).toBe(true)
335
- expect(
336
- $trs
337
- .at(2)
338
- .find('tr.b-table-details')
339
- .exists()
340
- ).toBe(true)
341
- expect(
342
- $trs
343
- .at(2)
344
- .find('tr.d-none')
345
- .exists()
346
- ).toBe(false)
347
- expect($trs.at(2).text()).toBe('foobar')
348
- expect(
349
- $trs
350
- .at(3)
351
- .find('tr.b-table-details')
352
- .exists()
353
- ).toBe(false)
354
- expect(
355
- $trs
356
- .at(3)
357
- .find('tr.d-none')
358
- .exists()
359
- ).toBe(false)
360
- expect(
361
- $trs
362
- .at(4)
363
- .find('tr.b-table-details')
364
- .exists()
365
- ).toBe(false)
366
- expect(
367
- $trs
368
- .at(4)
369
- .find('tr.d-none')
370
- .exists()
371
- ).toBe(false)
372
-
373
- wrapper.destroy()
374
- })
375
-
376
- it('should show details slot when slot method toggleDetails() called', async () => {
377
- const testItems = [{ a: 1, b: 2, c: 3, _showDetails: true }]
378
- const testFields = ['a', 'b', 'c']
379
- let scopeDetails = null
380
- let scopeField = null
381
- const wrapper = mount(BTable, {
382
- propsData: {
383
- fields: testFields,
384
- items: testItems
385
- },
386
- scopedSlots: {
387
- 'row-details': function(scope) {
388
- scopeDetails = scope
389
- return 'foobar'
390
- },
391
- 'cell(a)': function(scope) {
392
- scopeField = scope
393
- return 'AAA'
394
- }
395
- }
396
- })
397
- let $trs
398
- expect(wrapper).toBeDefined()
399
- expect(wrapper.find('tbody').exists()).toBe(true)
400
- expect(wrapper.findAll('tbody > tr').length).toBe(2)
401
-
402
- $trs = wrapper.findAll('tbody > tr')
403
- expect($trs.length).toBe(2)
404
- expect(
405
- $trs
406
- .at(0)
407
- .find('tr.b-table-details')
408
- .exists()
409
- ).toBe(false)
410
- expect(
411
- $trs
412
- .at(1)
413
- .find('tr.b-table-details')
414
- .exists()
415
- ).toBe(true)
416
- expect($trs.at(1).text()).toBe('foobar')
417
-
418
- // Toggle details via details slot
419
- expect(scopeDetails).not.toBe(null)
420
- scopeDetails.toggleDetails()
421
- await waitNT(wrapper.vm)
422
-
423
- expect(wrapper.findAll('tbody > tr').length).toBe(1)
424
-
425
- $trs = wrapper.findAll('tbody > tr')
426
- expect($trs.length).toBe(1)
427
- expect(
428
- $trs
429
- .at(0)
430
- .find('tr.b-table-details')
431
- .exists()
432
- ).toBe(false)
433
-
434
- // Toggle details via field slot
435
- expect(scopeField).not.toBe(null)
436
- scopeField.toggleDetails()
437
- await waitNT(wrapper.vm)
438
-
439
- expect(wrapper.findAll('tbody > tr').length).toBe(2)
440
-
441
- $trs = wrapper.findAll('tbody > tr')
442
- expect($trs.length).toBe(2)
443
- expect(
444
- $trs
445
- .at(0)
446
- .find('tr.b-table-details')
447
- .exists()
448
- ).toBe(false)
449
- expect(
450
- $trs
451
- .at(1)
452
- .find('tr.b-table-details')
453
- .exists()
454
- ).toBe(true)
455
- expect($trs.at(1).text()).toBe('foobar')
456
-
457
- wrapper.destroy()
458
- })
459
- })