@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,692 +0,0 @@
1
- import { mount } from '@vue/test-utils'
2
- import { BTable } from './table'
3
- import { wrapWithMethods } from '../../../tests/utils'
4
-
5
- const items1 = [{ a: 1, b: 2, c: 3 }, { a: 4, b: 5, c: 6 }]
6
- const fields1 = ['a', 'b', 'c']
7
-
8
- describe('table', () => {
9
- it('has expected default classes', async () => {
10
- const wrapper = mount(BTable, {
11
- propsData: {
12
- items: items1,
13
- fields: fields1
14
- }
15
- })
16
-
17
- expect(wrapper).toBeDefined()
18
- expect(wrapper.element.tagName).toBe('TABLE')
19
- expect(wrapper.classes()).toContain('table')
20
- expect(wrapper.classes()).toContain('b-table')
21
- expect(wrapper.classes().length).toBe(2)
22
-
23
- wrapper.destroy()
24
- })
25
-
26
- it('has class "table-striped" when striped=true', async () => {
27
- const wrapper = mount(BTable, {
28
- propsData: {
29
- items: items1,
30
- fields: fields1,
31
- striped: true
32
- }
33
- })
34
-
35
- expect(wrapper).toBeDefined()
36
- expect(wrapper.element.tagName).toBe('TABLE')
37
- expect(wrapper.classes()).toContain('table-striped')
38
- expect(wrapper.classes()).toContain('table')
39
- expect(wrapper.classes()).toContain('b-table')
40
- expect(wrapper.classes().length).toBe(3)
41
-
42
- wrapper.destroy()
43
- })
44
-
45
- it('has class "table-bordered" when bordered=true', async () => {
46
- const wrapper = mount(BTable, {
47
- propsData: {
48
- items: items1,
49
- fields: fields1,
50
- bordered: true
51
- }
52
- })
53
-
54
- expect(wrapper).toBeDefined()
55
- expect(wrapper.element.tagName).toBe('TABLE')
56
- expect(wrapper.classes()).toContain('table-bordered')
57
- expect(wrapper.classes()).toContain('table')
58
- expect(wrapper.classes()).toContain('b-table')
59
- expect(wrapper.classes().length).toBe(3)
60
-
61
- wrapper.destroy()
62
- })
63
-
64
- it('has class "table-borderless" when borderless=true', async () => {
65
- const wrapper = mount(BTable, {
66
- propsData: {
67
- items: items1,
68
- fields: fields1,
69
- borderless: true
70
- }
71
- })
72
-
73
- expect(wrapper).toBeDefined()
74
- expect(wrapper.element.tagName).toBe('TABLE')
75
- expect(wrapper.classes()).toContain('table-borderless')
76
- expect(wrapper.classes()).toContain('table')
77
- expect(wrapper.classes()).toContain('b-table')
78
- expect(wrapper.classes().length).toBe(3)
79
-
80
- wrapper.destroy()
81
- })
82
-
83
- it('has class "table-hover" when hover=true', async () => {
84
- const wrapper = mount(BTable, {
85
- propsData: {
86
- items: items1,
87
- fields: fields1,
88
- hover: true
89
- }
90
- })
91
-
92
- expect(wrapper).toBeDefined()
93
- expect(wrapper.element.tagName).toBe('TABLE')
94
- expect(wrapper.classes()).toContain('table-hover')
95
- expect(wrapper.classes()).toContain('table')
96
- expect(wrapper.classes()).toContain('b-table')
97
- expect(wrapper.classes().length).toBe(3)
98
-
99
- wrapper.destroy()
100
- })
101
-
102
- it('has class "table-sm" when small=true', async () => {
103
- const wrapper = mount(BTable, {
104
- propsData: {
105
- items: items1,
106
- fields: fields1,
107
- small: true
108
- }
109
- })
110
-
111
- expect(wrapper).toBeDefined()
112
- expect(wrapper.element.tagName).toBe('TABLE')
113
- expect(wrapper.classes()).toContain('table-sm')
114
- expect(wrapper.classes()).toContain('table')
115
- expect(wrapper.classes()).toContain('b-table')
116
- expect(wrapper.classes().length).toBe(3)
117
-
118
- wrapper.destroy()
119
- })
120
-
121
- it('has class "table-dark" when dark=true', async () => {
122
- const wrapper = mount(BTable, {
123
- propsData: {
124
- items: items1,
125
- fields: fields1,
126
- dark: true
127
- }
128
- })
129
-
130
- expect(wrapper).toBeDefined()
131
- expect(wrapper.element.tagName).toBe('TABLE')
132
- expect(wrapper.classes()).toContain('table-dark')
133
- expect(wrapper.classes()).toContain('table')
134
- expect(wrapper.classes()).toContain('b-table')
135
- expect(wrapper.classes().length).toBe(3)
136
-
137
- wrapper.destroy()
138
- })
139
-
140
- it('has class "gl-border" when outlined=true', async () => {
141
- const wrapper = mount(BTable, {
142
- propsData: {
143
- items: items1,
144
- fields: fields1,
145
- outlined: true
146
- }
147
- })
148
-
149
- expect(wrapper).toBeDefined()
150
- expect(wrapper.element.tagName).toBe('TABLE')
151
- expect(wrapper.classes()).toContain('gl-border')
152
- expect(wrapper.classes()).toContain('table')
153
- expect(wrapper.classes()).toContain('b-table')
154
- expect(wrapper.classes().length).toBe(3)
155
-
156
- wrapper.destroy()
157
- })
158
-
159
- it('has class "b-table-fixed" when fixed=true', async () => {
160
- const wrapper = mount(BTable, {
161
- propsData: {
162
- items: items1,
163
- fields: fields1,
164
- fixed: true
165
- }
166
- })
167
-
168
- expect(wrapper).toBeDefined()
169
- expect(wrapper.element.tagName).toBe('TABLE')
170
- expect(wrapper.classes()).toContain('b-table-fixed')
171
- expect(wrapper.classes()).toContain('table')
172
- expect(wrapper.classes()).toContain('b-table')
173
- expect(wrapper.classes().length).toBe(3)
174
-
175
- wrapper.destroy()
176
- })
177
-
178
- it('has class "b-table-no-border-collapse" when no-border-collapse=true', async () => {
179
- const wrapper = mount(BTable, {
180
- propsData: {
181
- items: items1,
182
- fields: fields1,
183
- noBorderCollapse: true
184
- }
185
- })
186
-
187
- expect(wrapper).toBeDefined()
188
- expect(wrapper.element.tagName).toBe('TABLE')
189
- expect(wrapper.classes()).toContain('b-table-no-border-collapse')
190
- expect(wrapper.classes()).toContain('table')
191
- expect(wrapper.classes()).toContain('b-table')
192
- expect(wrapper.classes().length).toBe(3)
193
-
194
- wrapper.destroy()
195
- })
196
-
197
- it('has class "b-table-stacked" when stacked=true', async () => {
198
- const wrapper = mount(BTable, {
199
- propsData: {
200
- items: items1,
201
- fields: fields1,
202
- stacked: true
203
- }
204
- })
205
-
206
- expect(wrapper).toBeDefined()
207
- expect(wrapper.element.tagName).toBe('TABLE')
208
- expect(wrapper.classes()).toContain('b-table-stacked')
209
- expect(wrapper.classes()).toContain('table')
210
- expect(wrapper.classes()).toContain('b-table')
211
- expect(wrapper.classes().length).toBe(3)
212
-
213
- wrapper.destroy()
214
- })
215
-
216
- it('has class "b-table-stacked-md" when stacked=md', async () => {
217
- const wrapper = mount(BTable, {
218
- propsData: {
219
- items: items1,
220
- fields: fields1,
221
- stacked: 'md'
222
- }
223
- })
224
-
225
- expect(wrapper).toBeDefined()
226
- expect(wrapper.element.tagName).toBe('TABLE')
227
- expect(wrapper.classes()).toContain('b-table-stacked-md')
228
- expect(wrapper.classes()).toContain('table')
229
- expect(wrapper.classes()).toContain('b-table')
230
- expect(wrapper.classes().length).toBe(3)
231
-
232
- wrapper.destroy()
233
- })
234
-
235
- it('has class "b-table-sticky-header" when sticky-header=true', async () => {
236
- const wrapper = mount(BTable, {
237
- propsData: {
238
- items: items1,
239
- fields: fields1,
240
- stickyHeader: true
241
- }
242
- })
243
-
244
- expect(wrapper).toBeDefined()
245
- expect(wrapper.element.tagName).toBe('DIV')
246
- expect(wrapper.classes()).toContain('b-table-sticky-header')
247
- expect(wrapper.classes().length).toBe(1)
248
- expect(wrapper.find('table').classes()).toContain('table')
249
- expect(wrapper.find('table').classes()).toContain('b-table')
250
- expect(wrapper.find('table').classes().length).toBe(2)
251
-
252
- wrapper.destroy()
253
- })
254
-
255
- it('has class "b-table-sticky-header" when sticky-header=100px', async () => {
256
- const wrapper = mount(BTable, {
257
- propsData: {
258
- items: items1,
259
- fields: fields1,
260
- stickyHeader: '100px'
261
- }
262
- })
263
-
264
- expect(wrapper).toBeDefined()
265
- expect(wrapper.element.tagName).toBe('DIV')
266
- expect(wrapper.classes()).toContain('b-table-sticky-header')
267
- expect(wrapper.classes().length).toBe(1)
268
- expect(wrapper.attributes('style')).toBeDefined()
269
- expect(wrapper.attributes('style')).toContain(`max-height: 100px;`)
270
- expect(wrapper.find('table').classes()).toContain('table')
271
- expect(wrapper.find('table').classes()).toContain('b-table')
272
- expect(wrapper.find('table').classes().length).toBe(2)
273
-
274
- wrapper.destroy()
275
- })
276
-
277
- it('has class "table-responsive" when responsive=true', async () => {
278
- const wrapper = mount(BTable, {
279
- propsData: {
280
- items: items1,
281
- fields: fields1,
282
- responsive: true
283
- }
284
- })
285
-
286
- expect(wrapper).toBeDefined()
287
- expect(wrapper.element.tagName).toBe('DIV')
288
- expect(wrapper.classes()).toContain('table-responsive')
289
- expect(wrapper.classes().length).toBe(1)
290
-
291
- const $table = wrapper.find('table')
292
- expect($table.exists()).toBe(true)
293
- expect($table.classes()).toContain('table')
294
- expect($table.classes()).toContain('b-table')
295
- expect($table.classes().length).toBe(2)
296
-
297
- wrapper.destroy()
298
- })
299
-
300
- it('has class "table-responsive-md" when responsive=md', async () => {
301
- const wrapper = mount(BTable, {
302
- propsData: {
303
- items: items1,
304
- fields: fields1,
305
- responsive: 'md'
306
- }
307
- })
308
-
309
- expect(wrapper).toBeDefined()
310
- expect(wrapper.element.tagName).toBe('DIV')
311
- expect(wrapper.classes()).toContain('table-responsive-md')
312
- expect(wrapper.classes().length).toBe(1)
313
-
314
- const $table = wrapper.find('table')
315
- expect($table.exists()).toBe(true)
316
- expect($table.classes()).toContain('table')
317
- expect($table.classes()).toContain('b-table')
318
- expect($table.classes().length).toBe(2)
319
-
320
- wrapper.destroy()
321
- })
322
-
323
- it('stacked and responsive work together', async () => {
324
- const wrapper = mount(BTable, {
325
- propsData: {
326
- items: items1,
327
- fields: fields1,
328
- stacked: true,
329
- responsive: true
330
- }
331
- })
332
-
333
- expect(wrapper).toBeDefined()
334
- expect(wrapper.element.tagName).toBe('DIV')
335
- expect(wrapper.classes()).toContain('table-responsive')
336
- expect(wrapper.classes().length).toBe(1)
337
-
338
- const $table = wrapper.find('table')
339
- expect($table.exists()).toBe(true)
340
- expect($table.classes()).toContain('table')
341
- expect($table.classes()).toContain('b-table')
342
- expect($table.classes()).toContain('b-table-stacked')
343
- expect($table.classes().length).toBe(3)
344
-
345
- wrapper.destroy()
346
- })
347
-
348
- it('stacked has data-label attribute on all tbody > tr td', async () => {
349
- const wrapper = mount(BTable, {
350
- propsData: {
351
- items: items1,
352
- fields: fields1,
353
- stacked: true
354
- }
355
- })
356
-
357
- expect(wrapper).toBeDefined()
358
- expect(wrapper.findAll('tbody > tr').length).toBe(2)
359
- const $trs = wrapper.findAll('tbody > tr').wrappers
360
-
361
- // Labels will have run through startCase
362
- expect(
363
- $trs[0]
364
- .findAll('td')
365
- .at(0)
366
- .attributes('data-label')
367
- ).toBe('A')
368
- expect(
369
- $trs[1]
370
- .findAll('td')
371
- .at(0)
372
- .attributes('data-label')
373
- ).toBe('A')
374
-
375
- expect(
376
- $trs[0]
377
- .findAll('td')
378
- .at(1)
379
- .attributes('data-label')
380
- ).toBe('B')
381
- expect(
382
- $trs[1]
383
- .findAll('td')
384
- .at(1)
385
- .attributes('data-label')
386
- ).toBe('B')
387
-
388
- expect(
389
- $trs[0]
390
- .findAll('td')
391
- .at(2)
392
- .attributes('data-label')
393
- ).toBe('C')
394
- expect(
395
- $trs[1]
396
- .findAll('td')
397
- .at(2)
398
- .attributes('data-label')
399
- ).toBe('C')
400
-
401
- wrapper.destroy()
402
- })
403
-
404
- it('item _rowVariant works', async () => {
405
- const wrapper = mount(BTable, {
406
- propsData: {
407
- items: [{ a: 1, _rowVariant: 'primary' }],
408
- fields: ['a'],
409
- dark: false
410
- }
411
- })
412
-
413
- expect(wrapper).toBeDefined()
414
- expect(wrapper.findAll('tbody > tr').length).toBe(1)
415
- expect(wrapper.find('tbody > tr').classes()).toContain('table-primary')
416
-
417
- await wrapper.setProps({
418
- dark: true
419
- })
420
-
421
- expect(wrapper.findAll('tbody > tr').length).toBe(1)
422
- expect(wrapper.find('tbody > tr').classes()).toContain('bg-primary')
423
-
424
- wrapper.destroy()
425
- })
426
-
427
- it('item _cellVariants works', async () => {
428
- const wrapper = mount(BTable, {
429
- propsData: {
430
- items: [{ a: 1, _cellVariants: { a: 'info' } }],
431
- fields: ['a'],
432
- dark: false
433
- }
434
- })
435
-
436
- expect(wrapper).toBeDefined()
437
- expect(wrapper.findAll('tbody > tr').length).toBe(1)
438
- expect(wrapper.findAll('tbody > tr > td').length).toBe(1)
439
- expect(wrapper.find('tbody > tr > td').classes()).toContain('table-info')
440
-
441
- await wrapper.setProps({
442
- dark: true
443
- })
444
-
445
- expect(wrapper.findAll('tbody > tr').length).toBe(1)
446
- expect(wrapper.findAll('tbody > tr > td').length).toBe(1)
447
- expect(wrapper.find('tbody > tr > td').classes()).toContain('bg-info')
448
-
449
- wrapper.destroy()
450
- })
451
-
452
- it('changing items array works', async () => {
453
- const items1 = [{ a: 1, b: 2 }, { a: 3, b: 4 }]
454
- const items2 = [{ a: 3, b: 4 }]
455
- const wrapper = mount(BTable, {
456
- propsData: {
457
- items: items1,
458
- fields: ['a', 'b']
459
- }
460
- })
461
- expect(wrapper).toBeDefined()
462
-
463
- expect(wrapper.findAll('tbody > tr').length).toBe(2)
464
- await wrapper.setProps({
465
- items: items2
466
- })
467
- expect(wrapper.findAll('tbody > tr').length).toBe(1)
468
-
469
- wrapper.destroy()
470
- })
471
-
472
- it('tbody-tr-class works', async () => {
473
- const wrapper = mount(BTable, {
474
- propsData: {
475
- items: [{ a: 1, b: 2 }, { a: 3, b: 4 }],
476
- fields: ['a', 'b'],
477
- tbodyTrClass: 'foobar'
478
- }
479
- })
480
-
481
- expect(wrapper).toBeDefined()
482
-
483
- // Prop as a string
484
- expect(wrapper.findAll('tbody > tr').length).toBe(2)
485
- let $trs = wrapper.findAll('tbody > tr')
486
- expect($trs.at(0).classes()).toContain('foobar')
487
- expect($trs.at(1).classes()).toContain('foobar')
488
-
489
- // As a function
490
- await wrapper.setProps({
491
- tbodyTrClass: item => {
492
- return item.a === 1 ? 'foo' : 'bar'
493
- }
494
- })
495
-
496
- expect(wrapper.findAll('tbody > tr').length).toBe(2)
497
- $trs = wrapper.findAll('tbody > tr')
498
- expect($trs.at(0).classes()).toContain('foo')
499
- expect($trs.at(0).classes()).not.toContain('bar')
500
- expect($trs.at(1).classes()).toContain('bar')
501
- expect($trs.at(1).classes()).not.toContain('foo')
502
-
503
- wrapper.destroy()
504
- })
505
-
506
- it('thead and tfoot variant and classes work', async () => {
507
- const wrapper = mount(BTable, {
508
- propsData: {
509
- items: [{ a: 1, b: 2 }],
510
- fields: ['a', 'b'],
511
- footClone: true
512
- }
513
- })
514
-
515
- expect(wrapper).toBeDefined()
516
- expect(wrapper.findAll('thead > tr').length).toBe(1)
517
- expect(wrapper.findAll('tfoot > tr').length).toBe(1)
518
-
519
- expect(wrapper.find('thead').classes().length).toBe(0)
520
- expect(wrapper.find('tfoot').classes().length).toBe(0)
521
-
522
- await wrapper.setProps({
523
- headVariant: 'light'
524
- })
525
-
526
- expect(wrapper.find('thead').classes()).toContain('thead-light')
527
- expect(wrapper.find('tfoot').classes()).toContain('thead-light')
528
-
529
- await wrapper.setProps({
530
- footVariant: 'dark'
531
- })
532
-
533
- expect(wrapper.find('thead').classes()).toContain('thead-light')
534
- expect(wrapper.find('tfoot').classes()).toContain('thead-dark')
535
-
536
- await wrapper.setProps({
537
- theadClass: 'foo',
538
- tfootClass: 'bar'
539
- })
540
-
541
- expect(wrapper.find('thead').classes()).toContain('thead-light')
542
- expect(wrapper.find('thead').classes()).toContain('foo')
543
- expect(wrapper.find('tfoot').classes()).toContain('thead-dark')
544
- expect(wrapper.find('tfoot').classes()).toContain('bar')
545
-
546
- await wrapper.setProps({
547
- theadTrClass: 'willy',
548
- tfootTrClass: 'wonka'
549
- })
550
-
551
- expect(wrapper.find('thead > tr').classes()).toContain('willy')
552
- expect(wrapper.find('tfoot > tr').classes()).toContain('wonka')
553
-
554
- wrapper.destroy()
555
- })
556
-
557
- it('item field isRowHeader works', async () => {
558
- const wrapper = mount(BTable, {
559
- propsData: {
560
- items: [{ a: 1, b: 2 }],
561
- fields: [{ key: 'a', isRowHeader: true }, 'b']
562
- }
563
- })
564
-
565
- expect(wrapper).toBeDefined()
566
- expect(wrapper.findAll('tbody > tr').length).toBe(1)
567
- expect(wrapper.findAll('tbody > tr > *').length).toBe(2)
568
-
569
- expect(wrapper.findAll('tbody > tr > *').at(0).element.tagName).toBe('TH')
570
- expect(
571
- wrapper
572
- .findAll('tbody > tr > *')
573
- .at(0)
574
- .attributes('role')
575
- ).toBe('rowheader')
576
- expect(
577
- wrapper
578
- .findAll('tbody > tr > *')
579
- .at(0)
580
- .attributes('scope')
581
- ).toBe('row')
582
-
583
- expect(wrapper.findAll('tbody > tr > *').at(1).element.tagName).toBe('TD')
584
- expect(
585
- wrapper
586
- .findAll('tbody > tr > *')
587
- .at(1)
588
- .attributes('role')
589
- ).toBe('cell')
590
- expect(
591
- wrapper
592
- .findAll('tbody > tr > *')
593
- .at(1)
594
- .attributes('scope')
595
- ).toBeUndefined()
596
-
597
- wrapper.destroy()
598
- })
599
-
600
- it('item field tdAttr and tdClass works', async () => {
601
- const wrapper = mount(
602
- wrapWithMethods(BTable, {
603
- parentTdAttrs() {
604
- return { 'data-parent': 'parent' }
605
- }
606
- }),
607
- {
608
- propsData: {
609
- items: [{ a: 1, b: 2, c: 3 }],
610
- fields: [
611
- { key: 'a', tdAttr: { 'data-foo': 'bar' } },
612
- { key: 'b', tdClass: () => 'baz' },
613
- { key: 'c', tdAttr: 'parentTdAttrs' }
614
- ]
615
- }
616
- }
617
- )
618
-
619
- expect(wrapper).toBeDefined()
620
- expect(wrapper.findAll('tbody > tr').length).toBe(1)
621
- expect(wrapper.findAll('tbody > tr > td').length).toBe(3)
622
-
623
- const $tds = wrapper.findAll('tbody > tr > td')
624
-
625
- expect($tds.at(0).attributes('data-foo')).toBe('bar')
626
- expect($tds.at(0).attributes('data-parent')).toBeUndefined()
627
- expect($tds.at(0).classes().length).toBe(0)
628
-
629
- expect($tds.at(1).classes()).toContain('baz')
630
- expect($tds.at(1).attributes('data-foo')).toBeUndefined()
631
- expect($tds.at(1).attributes('data-parent')).toBeUndefined()
632
-
633
- expect($tds.at(2).attributes('data-parent')).toBe('parent')
634
- expect($tds.at(2).attributes('data-foo')).toBeUndefined()
635
- expect($tds.at(2).classes().length).toBe(0)
636
-
637
- wrapper.destroy()
638
- })
639
-
640
- it('item field thAttr works', async () => {
641
- const wrapper = mount(
642
- wrapWithMethods(BTable, {
643
- parentThAttrs(value, key, item, type) {
644
- return { 'data-type': type }
645
- }
646
- }),
647
- {
648
- propsData: {
649
- items: [{ a: 1, b: 2, c: 3 }],
650
- fields: [
651
- { key: 'a', thAttr: { 'data-foo': 'bar' } },
652
- { key: 'b', thAttr: 'parentThAttrs', isRowHeader: true },
653
- {
654
- key: 'c',
655
- thAttr: (v, k, i, t) => {
656
- return { 'data-type': t }
657
- }
658
- }
659
- ]
660
- }
661
- }
662
- )
663
-
664
- expect(wrapper).toBeDefined()
665
- expect(wrapper.findAll('thead > tr').length).toBe(1)
666
- expect(wrapper.findAll('thead > tr > th').length).toBe(3)
667
- expect(wrapper.findAll('tbody > tr').length).toBe(1)
668
- expect(wrapper.findAll('tbody > tr > td').length).toBe(2)
669
- expect(wrapper.findAll('tbody > tr > th').length).toBe(1)
670
-
671
- const $headerThs = wrapper.findAll('thead > tr > th')
672
- expect($headerThs.at(0).attributes('data-foo')).toBe('bar')
673
- expect($headerThs.at(0).attributes('data-type')).toBeUndefined()
674
- expect($headerThs.at(0).classes().length).toBe(0)
675
-
676
- expect($headerThs.at(1).attributes('data-foo')).toBeUndefined()
677
- expect($headerThs.at(1).attributes('data-type')).toBe('head')
678
- expect($headerThs.at(1).classes().length).toBe(0)
679
-
680
- expect($headerThs.at(2).attributes('data-foo')).toBeUndefined()
681
- expect($headerThs.at(2).attributes('data-type')).toBe('head')
682
- expect($headerThs.at(2).classes().length).toBe(0)
683
-
684
- const $bodyThs = wrapper.findAll('tbody > tr > th')
685
-
686
- expect($bodyThs.at(0).attributes('data-foo')).toBeUndefined()
687
- expect($bodyThs.at(0).attributes('data-type')).toBe('row')
688
- expect($bodyThs.at(0).classes().length).toBe(0)
689
-
690
- wrapper.destroy()
691
- })
692
- })