@gitlab/ui 114.1.0 → 114.1.1

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 (136) hide show
  1. package/package.json +7 -26
  2. package/CHANGELOG.md +0 -13139
  3. package/src/vendor/bootstrap/LICENSE +0 -11
  4. package/src/vendor/bootstrap-vue/LICENSE +0 -11
  5. package/src/vendor/bootstrap-vue/package.json +0 -144
  6. package/src/vendor/bootstrap-vue/src/components/button/MODIFICATIONS.md +0 -16
  7. package/src/vendor/bootstrap-vue/src/components/button/README.md +0 -240
  8. package/src/vendor/bootstrap-vue/src/components/button/button-close.spec.js +0 -210
  9. package/src/vendor/bootstrap-vue/src/components/button/button.spec.js +0 -349
  10. package/src/vendor/bootstrap-vue/src/components/button/package.json +0 -105
  11. package/src/vendor/bootstrap-vue/src/components/dropdown/README.md +0 -730
  12. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.spec.js +0 -58
  13. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.spec.js +0 -110
  14. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.spec.js +0 -94
  15. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.spec.js +0 -73
  16. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.spec.js +0 -117
  17. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.spec.js +0 -147
  18. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.spec.js +0 -59
  19. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown.spec.js +0 -1121
  20. package/src/vendor/bootstrap-vue/src/components/dropdown/package.json +0 -368
  21. package/src/vendor/bootstrap-vue/src/components/form/README.md +0 -365
  22. package/src/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.spec.js +0 -170
  23. package/src/vendor/bootstrap-vue/src/components/form/form-text.spec.js +0 -93
  24. package/src/vendor/bootstrap-vue/src/components/form/form-valid-feedback.spec.js +0 -157
  25. package/src/vendor/bootstrap-vue/src/components/form/form.spec.js +0 -97
  26. package/src/vendor/bootstrap-vue/src/components/form/package.json +0 -112
  27. package/src/vendor/bootstrap-vue/src/components/form-checkbox/README.md +0 -691
  28. package/src/vendor/bootstrap-vue/src/components/form-checkbox/form-checkbox-group.spec.js +0 -525
  29. package/src/vendor/bootstrap-vue/src/components/form-checkbox/form-checkbox.spec.js +0 -922
  30. package/src/vendor/bootstrap-vue/src/components/form-checkbox/package.json +0 -172
  31. package/src/vendor/bootstrap-vue/src/components/form-group/README.md +0 -339
  32. package/src/vendor/bootstrap-vue/src/components/form-group/form-group.spec.js +0 -477
  33. package/src/vendor/bootstrap-vue/src/components/form-group/package.json +0 -183
  34. package/src/vendor/bootstrap-vue/src/components/form-radio/README.md +0 -437
  35. package/src/vendor/bootstrap-vue/src/components/form-radio/form-radio-group.spec.js +0 -357
  36. package/src/vendor/bootstrap-vue/src/components/form-radio/form-radio.spec.js +0 -587
  37. package/src/vendor/bootstrap-vue/src/components/form-radio/package.json +0 -162
  38. package/src/vendor/bootstrap-vue/src/components/form-select/README.md +0 -504
  39. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.spec.js +0 -138
  40. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option.spec.js +0 -75
  41. package/src/vendor/bootstrap-vue/src/components/form-select/form-select.spec.js +0 -723
  42. package/src/vendor/bootstrap-vue/src/components/form-select/package.json +0 -132
  43. package/src/vendor/bootstrap-vue/src/components/form-textarea/README.md +0 -453
  44. package/src/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.spec.js +0 -1000
  45. package/src/vendor/bootstrap-vue/src/components/form-textarea/package.json +0 -122
  46. package/src/vendor/bootstrap-vue/src/components/layout/README.md +0 -791
  47. package/src/vendor/bootstrap-vue/src/components/layout/col.spec.js +0 -192
  48. package/src/vendor/bootstrap-vue/src/components/layout/form-row.spec.js +0 -45
  49. package/src/vendor/bootstrap-vue/src/components/layout/package.json +0 -99
  50. package/src/vendor/bootstrap-vue/src/components/link/README.md +0 -76
  51. package/src/vendor/bootstrap-vue/src/components/link/link.spec.js +0 -434
  52. package/src/vendor/bootstrap-vue/src/components/link/package.json +0 -57
  53. package/src/vendor/bootstrap-vue/src/components/modal/MODIFICATIONS.md +0 -30
  54. package/src/vendor/bootstrap-vue/src/components/modal/README.md +0 -1067
  55. package/src/vendor/bootstrap-vue/src/components/modal/helpers/bv-modal-event.class.spec.js +0 -82
  56. package/src/vendor/bootstrap-vue/src/components/modal/modal.spec.js +0 -1418
  57. package/src/vendor/bootstrap-vue/src/components/modal/package.json +0 -544
  58. package/src/vendor/bootstrap-vue/src/components/nav/README.md +0 -362
  59. package/src/vendor/bootstrap-vue/src/components/nav/nav-item.spec.js +0 -127
  60. package/src/vendor/bootstrap-vue/src/components/nav/nav.spec.js +0 -177
  61. package/src/vendor/bootstrap-vue/src/components/nav/package.json +0 -73
  62. package/src/vendor/bootstrap-vue/src/components/popover/README.md +0 -919
  63. package/src/vendor/bootstrap-vue/src/components/popover/package.json +0 -261
  64. package/src/vendor/bootstrap-vue/src/components/popover/popover.spec.js +0 -198
  65. package/src/vendor/bootstrap-vue/src/components/table/README.md +0 -3157
  66. package/src/vendor/bootstrap-vue/src/components/table/helpers/default-sort-compare.spec.js +0 -112
  67. package/src/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.spec.js +0 -93
  68. package/src/vendor/bootstrap-vue/src/components/table/package.json +0 -1763
  69. package/src/vendor/bootstrap-vue/src/components/table/table-busy.spec.js +0 -150
  70. package/src/vendor/bootstrap-vue/src/components/table/table-caption.spec.js +0 -176
  71. package/src/vendor/bootstrap-vue/src/components/table/table-colgroup.spec.js +0 -81
  72. package/src/vendor/bootstrap-vue/src/components/table/table-filtering.spec.js +0 -409
  73. package/src/vendor/bootstrap-vue/src/components/table/table-item-formatter.spec.js +0 -56
  74. package/src/vendor/bootstrap-vue/src/components/table/table-lite.spec.js +0 -682
  75. package/src/vendor/bootstrap-vue/src/components/table/table-pagination.spec.js +0 -133
  76. package/src/vendor/bootstrap-vue/src/components/table/table-primarykey.spec.js +0 -83
  77. package/src/vendor/bootstrap-vue/src/components/table/table-provider.spec.js +0 -411
  78. package/src/vendor/bootstrap-vue/src/components/table/table-row-details.spec.js +0 -459
  79. package/src/vendor/bootstrap-vue/src/components/table/table-selectable.spec.js +0 -1182
  80. package/src/vendor/bootstrap-vue/src/components/table/table-simple.spec.js +0 -206
  81. package/src/vendor/bootstrap-vue/src/components/table/table-sorting.spec.js +0 -858
  82. package/src/vendor/bootstrap-vue/src/components/table/table-sticky-column.spec.js +0 -377
  83. package/src/vendor/bootstrap-vue/src/components/table/table-tbody-bottom-row.spec.js +0 -94
  84. package/src/vendor/bootstrap-vue/src/components/table/table-tbody-row-events.spec.js +0 -529
  85. package/src/vendor/bootstrap-vue/src/components/table/table-tbody-top-row.spec.js +0 -88
  86. package/src/vendor/bootstrap-vue/src/components/table/table-tbody-transition.spec.js +0 -83
  87. package/src/vendor/bootstrap-vue/src/components/table/table-tfoot-custom.spec.js +0 -91
  88. package/src/vendor/bootstrap-vue/src/components/table/table-tfoot-events.spec.js +0 -137
  89. package/src/vendor/bootstrap-vue/src/components/table/table-thead-events.spec.js +0 -155
  90. package/src/vendor/bootstrap-vue/src/components/table/table-thead-top.spec.js +0 -96
  91. package/src/vendor/bootstrap-vue/src/components/table/table.spec.js +0 -692
  92. package/src/vendor/bootstrap-vue/src/components/tabs/README.md +0 -433
  93. package/src/vendor/bootstrap-vue/src/components/tabs/package.json +0 -205
  94. package/src/vendor/bootstrap-vue/src/components/tabs/tab.spec.js +0 -330
  95. package/src/vendor/bootstrap-vue/src/components/tabs/tabs.spec.js +0 -778
  96. package/src/vendor/bootstrap-vue/src/components/toast/README.md +0 -655
  97. package/src/vendor/bootstrap-vue/src/components/toast/helpers/bv-toast.spec.js +0 -117
  98. package/src/vendor/bootstrap-vue/src/components/toast/package.json +0 -184
  99. package/src/vendor/bootstrap-vue/src/components/toast/toast.spec.js +0 -294
  100. package/src/vendor/bootstrap-vue/src/components/toast/toaster.spec.js +0 -77
  101. package/src/vendor/bootstrap-vue/src/components/tooltip/README.md +0 -559
  102. package/src/vendor/bootstrap-vue/src/components/tooltip/package.json +0 -258
  103. package/src/vendor/bootstrap-vue/src/components/tooltip/tooltip.spec.js +0 -1240
  104. package/src/vendor/bootstrap-vue/src/components/transition/package.json +0 -5
  105. package/src/vendor/bootstrap-vue/src/components/transporter/package.json +0 -5
  106. package/src/vendor/bootstrap-vue/src/components/transporter/transporter.spec.js +0 -85
  107. package/src/vendor/bootstrap-vue/src/directives/modal/modal.spec.js +0 -191
  108. package/src/vendor/bootstrap-vue/src/directives/tooltip/README.md +0 -521
  109. package/src/vendor/bootstrap-vue/src/directives/tooltip/package.json +0 -131
  110. package/src/vendor/bootstrap-vue/src/directives/tooltip/tooltip.spec.js +0 -190
  111. package/src/vendor/bootstrap-vue/src/directives/visible/README.md +0 -244
  112. package/src/vendor/bootstrap-vue/src/directives/visible/package.json +0 -24
  113. package/src/vendor/bootstrap-vue/src/mixins/attrs.spec.js +0 -194
  114. package/src/vendor/bootstrap-vue/src/mixins/click-out.spec.js +0 -52
  115. package/src/vendor/bootstrap-vue/src/mixins/focus-in.spec.js +0 -53
  116. package/src/vendor/bootstrap-vue/src/mixins/listen-on-document.spec.js +0 -117
  117. package/src/vendor/bootstrap-vue/src/mixins/listen-on-root.spec.js +0 -77
  118. package/src/vendor/bootstrap-vue/src/mixins/listen-on-window.spec.js +0 -115
  119. package/src/vendor/bootstrap-vue/src/mixins/listeners.spec.js +0 -245
  120. package/src/vendor/bootstrap-vue/src/utils/bv-event.class.spec.js +0 -66
  121. package/src/vendor/bootstrap-vue/src/utils/clone-deep.spec.js +0 -70
  122. package/src/vendor/bootstrap-vue/src/utils/config.spec.js +0 -169
  123. package/src/vendor/bootstrap-vue/src/utils/css-escape.spec.js +0 -82
  124. package/src/vendor/bootstrap-vue/src/utils/dom.spec.js +0 -291
  125. package/src/vendor/bootstrap-vue/src/utils/events.spec.js +0 -41
  126. package/src/vendor/bootstrap-vue/src/utils/get.spec.js +0 -109
  127. package/src/vendor/bootstrap-vue/src/utils/inspect.spec.js +0 -251
  128. package/src/vendor/bootstrap-vue/src/utils/loose-equal.spec.js +0 -203
  129. package/src/vendor/bootstrap-vue/src/utils/normalize-slot.spec.js +0 -63
  130. package/src/vendor/bootstrap-vue/src/utils/number.spec.js +0 -72
  131. package/src/vendor/bootstrap-vue/src/utils/object.spec.js +0 -61
  132. package/src/vendor/bootstrap-vue/src/utils/props.spec.js +0 -112
  133. package/src/vendor/bootstrap-vue/src/utils/router.spec.js +0 -248
  134. package/src/vendor/bootstrap-vue/src/utils/string.spec.js +0 -65
  135. package/src/vendor/bootstrap-vue/src/utils/stringify-object-values.spec.js +0 -47
  136. package/src/vendor/bootstrap-vue/src/utils/warn.spec.js +0 -54
@@ -1,409 +0,0 @@
1
- import { mount } from '@vue/test-utils'
2
- import { waitNT } from '../../../tests/utils'
3
- import { stringifyRecordValues } from './helpers/stringify-record-values'
4
- import { BTable } from './table'
5
-
6
- const testItems = [{ a: 3, b: 'b', c: 'x' }, { a: 1, b: 'c', c: 'y' }, { a: 2, b: 'a', c: 'z' }]
7
- const testFields = ['a', 'b', 'c']
8
-
9
- describe('table > filtering', () => {
10
- it('should not be filtered by default', async () => {
11
- const wrapper = mount(BTable, {
12
- propsData: {
13
- fields: testFields,
14
- items: testItems
15
- }
16
- })
17
- expect(wrapper).toBeDefined()
18
- expect(wrapper.findAll('tbody > tr').exists()).toBe(true)
19
- expect(wrapper.findAll('tbody > tr').length).toBe(3)
20
- await waitNT(wrapper.vm)
21
- expect(wrapper.emitted('input')).toBeDefined()
22
- expect(wrapper.emitted('input').length).toBe(1)
23
- expect(wrapper.emitted('input')[0][0]).toEqual(testItems)
24
- const $rows = wrapper.findAll('tbody > tr').wrappers
25
- expect($rows.length).toBe(3)
26
- // Map the rows to the first column text value
27
- const columnA = $rows.map(row => {
28
- return row
29
- .findAll('td')
30
- .at(0)
31
- .text()
32
- })
33
- expect(columnA[0]).toBe('3')
34
- expect(columnA[1]).toBe('1')
35
- expect(columnA[2]).toBe('2')
36
-
37
- wrapper.destroy()
38
- })
39
-
40
- it('should be filtered when filter is a string', async () => {
41
- const wrapper = mount(BTable, {
42
- propsData: {
43
- fields: testFields,
44
- items: testItems,
45
- filter: 'z'
46
- }
47
- })
48
- expect(wrapper).toBeDefined()
49
- await waitNT(wrapper.vm)
50
-
51
- expect(wrapper.findAll('tbody > tr').exists()).toBe(true)
52
- expect(wrapper.findAll('tbody > tr').length).toBe(1)
53
-
54
- const $rows = wrapper.findAll('tbody > tr')
55
- expect($rows.length).toBe(1)
56
-
57
- const $tds = $rows.at(0).findAll('td')
58
-
59
- expect($tds.at(0).text()).toBe('2')
60
- expect($tds.at(1).text()).toBe('a')
61
- expect($tds.at(2).text()).toBe('z')
62
-
63
- wrapper.destroy()
64
- })
65
-
66
- it('should emit filtered event when filter string is changed', async () => {
67
- const wrapper = mount(BTable, {
68
- propsData: {
69
- fields: testFields,
70
- items: testItems,
71
- filter: ''
72
- }
73
- })
74
- expect(wrapper).toBeDefined()
75
- await waitNT(wrapper.vm)
76
-
77
- expect(wrapper.findAll('tbody > tr').exists()).toBe(true)
78
- expect(wrapper.findAll('tbody > tr').length).toBe(3)
79
- expect(wrapper.emitted('filtered')).toBeUndefined()
80
-
81
- await wrapper.setProps({
82
- filter: 'z'
83
- })
84
- await waitNT(wrapper.vm)
85
-
86
- expect(wrapper.findAll('tbody > tr').exists()).toBe(true)
87
- expect(wrapper.findAll('tbody > tr').length).toBe(1)
88
-
89
- expect(wrapper.emitted('filtered')).toBeDefined()
90
- expect(wrapper.emitted('filtered').length).toBe(1)
91
- // Copy of items matching filter
92
- expect(wrapper.emitted('filtered')[0][0]).toEqual([testItems[2]])
93
- // Number of rows matching filter
94
- expect(wrapper.emitted('filtered')[0][1]).toEqual(1)
95
-
96
- await wrapper.setProps({
97
- filter: ''
98
- })
99
- await waitNT(wrapper.vm)
100
-
101
- expect(wrapper.findAll('tbody > tr').exists()).toBe(true)
102
- expect(wrapper.findAll('tbody > tr').length).toBe(3)
103
-
104
- expect(wrapper.emitted('filtered').length).toBe(2)
105
- // Copy of items matching filter
106
- expect(wrapper.emitted('filtered')[1][0]).toEqual(testItems)
107
- // Number of rows matching filter
108
- expect(wrapper.emitted('filtered')[1][1]).toEqual(3)
109
-
110
- await wrapper.setProps({
111
- filter: '3'
112
- })
113
- await waitNT(wrapper.vm)
114
-
115
- expect(wrapper.findAll('tbody > tr').exists()).toBe(true)
116
- expect(wrapper.findAll('tbody > tr').length).toBe(1)
117
-
118
- expect(wrapper.emitted('filtered').length).toBe(3)
119
- // Copy of items matching filter
120
- expect(wrapper.emitted('filtered')[2][0]).toEqual([testItems[0]])
121
- // Number of rows matching filter
122
- expect(wrapper.emitted('filtered')[2][1]).toEqual(1)
123
-
124
- await wrapper.setProps({
125
- // Setting to null will also clear the filter
126
- filter: null
127
- })
128
- await waitNT(wrapper.vm)
129
-
130
- expect(wrapper.findAll('tbody > tr').exists()).toBe(true)
131
- expect(wrapper.findAll('tbody > tr').length).toBe(3)
132
-
133
- expect(wrapper.emitted('filtered').length).toBe(4)
134
- // Copy of items matching filter
135
- expect(wrapper.emitted('filtered')[3][0]).toEqual(testItems)
136
- // Number of rows matching filter
137
- expect(wrapper.emitted('filtered')[3][1]).toEqual(3)
138
-
139
- wrapper.destroy()
140
- })
141
-
142
- it('should work with filter function', async () => {
143
- const filterFn = (item, regexp) => {
144
- // We are passing a regexp for this test
145
- return regexp.test(stringifyRecordValues(item))
146
- }
147
- const wrapper = mount(BTable, {
148
- propsData: {
149
- fields: testFields,
150
- items: testItems,
151
- filter: '',
152
- filterFunction: filterFn
153
- }
154
- })
155
- expect(wrapper).toBeDefined()
156
- await waitNT(wrapper.vm)
157
-
158
- expect(wrapper.findAll('tbody > tr').exists()).toBe(true)
159
- expect(wrapper.findAll('tbody > tr').length).toBe(3)
160
- expect(wrapper.emitted('filtered')).toBeUndefined()
161
-
162
- await wrapper.setProps({
163
- filter: /z/
164
- })
165
- await waitNT(wrapper.vm)
166
-
167
- expect(wrapper.findAll('tbody > tr').exists()).toBe(true)
168
- expect(wrapper.findAll('tbody > tr').length).toBe(1)
169
-
170
- expect(wrapper.emitted('filtered')).toBeDefined()
171
- expect(wrapper.emitted('filtered').length).toBe(1)
172
- // Copy of items matching filter
173
- expect(wrapper.emitted('filtered')[0][0]).toEqual([testItems[2]])
174
- // Number of rows matching filter
175
- expect(wrapper.emitted('filtered')[0][1]).toEqual(1)
176
-
177
- await wrapper.setProps({
178
- filter: []
179
- })
180
- await waitNT(wrapper.vm)
181
-
182
- expect(wrapper.findAll('tbody > tr').exists()).toBe(true)
183
- expect(wrapper.findAll('tbody > tr').length).toBe(3)
184
-
185
- expect(wrapper.emitted('filtered').length).toBe(2)
186
- // Copy of items matching filter
187
- expect(wrapper.emitted('filtered')[1][0]).toEqual(testItems)
188
- // Number of rows matching filter
189
- expect(wrapper.emitted('filtered')[1][1]).toEqual(3)
190
-
191
- wrapper.destroy()
192
- })
193
-
194
- it('should be filtered with no rows when no matches', async () => {
195
- const wrapper = mount(BTable, {
196
- propsData: {
197
- fields: testFields,
198
- items: testItems,
199
- filter: 'ZZZZZZZZ'
200
- }
201
- })
202
- expect(wrapper).toBeDefined()
203
- await waitNT(wrapper.vm)
204
-
205
- expect(wrapper.findAll('tbody > tr').length).toBe(0)
206
-
207
- wrapper.destroy()
208
- })
209
-
210
- it('`filter-ignored-fields` prop works', async () => {
211
- const wrapper = mount(BTable, {
212
- propsData: {
213
- fields: testFields,
214
- items: testItems,
215
- filter: '',
216
- filterIgnoredFields: []
217
- }
218
- })
219
-
220
- expect(wrapper).toBeDefined()
221
- await waitNT(wrapper.vm)
222
-
223
- expect(wrapper.findAll('tbody > tr').length).toBe(3)
224
-
225
- // Search for a value in "a" column
226
- await wrapper.setProps({ filter: '3' })
227
- await waitNT(wrapper.vm)
228
- expect(wrapper.findAll('tbody > tr').length).toBe(1)
229
-
230
- // Ignore "a" column from filtering
231
- await wrapper.setProps({ filterIgnoredFields: ['a'] })
232
- await waitNT(wrapper.vm)
233
- expect(wrapper.findAll('tbody > tr').length).toBe(0)
234
-
235
- wrapper.destroy()
236
- })
237
-
238
- it('`filter-included-fields` prop works', async () => {
239
- const wrapper = mount(BTable, {
240
- propsData: {
241
- fields: testFields,
242
- // Add a extra item with a duplicated value in another field
243
- items: [...testItems, { a: 4, b: 'y', c: 'a' }],
244
- filter: '',
245
- filterIncludedFields: []
246
- }
247
- })
248
-
249
- expect(wrapper).toBeDefined()
250
- await waitNT(wrapper.vm)
251
-
252
- expect(wrapper.findAll('tbody > tr').length).toBe(4)
253
-
254
- // Search for "a"
255
- await wrapper.setProps({ filter: 'a' })
256
- await waitNT(wrapper.vm)
257
- expect(wrapper.findAll('tbody > tr').length).toBe(2)
258
-
259
- // Only include "a" and "b" fields
260
- await wrapper.setProps({ filterIncludedFields: ['a', 'b'] })
261
- await waitNT(wrapper.vm)
262
- expect(wrapper.findAll('tbody > tr').length).toBe(1)
263
-
264
- wrapper.destroy()
265
- })
266
-
267
- it('should filter for formatted values for keys which are not present in row', async () => {
268
- const wrapper = mount(BTable, {
269
- propsData: {
270
- items: [{ a: 'A', b: 'B' }],
271
- fields: [
272
- { key: 'a' },
273
- {
274
- key: 'b',
275
- formatter: () => 'Foo',
276
- filterByFormatted: true
277
- },
278
- {
279
- key: 'c',
280
- formatter: () => 'Bar',
281
- filterByFormatted: true
282
- }
283
- ],
284
- filter: 'Bar'
285
- }
286
- })
287
- expect(wrapper).toBeDefined()
288
- await waitNT(wrapper.vm)
289
-
290
- expect(wrapper.findAll('tbody > tr').length).toBe(1)
291
-
292
- wrapper.destroy()
293
- })
294
-
295
- it('should show empty filtered message when no matches and show-empty=true', async () => {
296
- const wrapper = mount(BTable, {
297
- propsData: {
298
- fields: testFields,
299
- items: testItems,
300
- filter: '',
301
- showEmpty: true
302
- }
303
- })
304
- expect(wrapper).toBeDefined()
305
- await waitNT(wrapper.vm)
306
- expect(wrapper.findAll('tbody > tr').length).toBe(testItems.length)
307
-
308
- await wrapper.setProps({
309
- filter: 'ZZZZZZ'
310
- })
311
- await waitNT(wrapper.vm)
312
-
313
- expect(wrapper.findAll('tbody > tr').length).toBe(1)
314
- expect(wrapper.find('tbody > tr').text()).toBe(wrapper.vm.emptyFilteredText)
315
- expect(wrapper.find('tbody > tr').classes()).toContain('b-table-empty-row')
316
- expect(wrapper.find('tbody > tr').attributes('role')).toBe('row')
317
- expect(wrapper.find('tbody > tr > td').attributes('role')).toBe('cell')
318
- expect(wrapper.find('tbody > tr > td > div').attributes('role')).toBe('alert')
319
- expect(wrapper.find('tbody > tr > td > div').attributes('aria-live')).toBe('polite')
320
-
321
- wrapper.destroy()
322
- })
323
-
324
- describe('debouncing (deprecated)', () => {
325
- // Wrapped in a describe to limit console.warn override
326
- // to prevent deprecated prop warnings
327
- const originalWarn = console.warn
328
- afterEach(() => (console.warn = originalWarn))
329
- beforeEach(() => (console.warn = () => {}))
330
-
331
- it('filter debouncing works', async () => {
332
- jest.useFakeTimers()
333
- let lastFilterTimer = null
334
- const wrapper = mount(BTable, {
335
- propsData: {
336
- fields: testFields,
337
- items: testItems,
338
- filterDebounce: 100 // 100ms
339
- }
340
- })
341
- expect(wrapper).toBeDefined()
342
- expect(wrapper.findAll('tbody > tr').exists()).toBe(true)
343
- expect(wrapper.findAll('tbody > tr').length).toBe(3)
344
- expect(wrapper.vm.$_filterTimer).toBe(null)
345
- await waitNT(wrapper.vm)
346
- expect(wrapper.emitted('input')).toBeDefined()
347
- expect(wrapper.emitted('input').length).toBe(1)
348
- expect(wrapper.emitted('input')[0][0]).toEqual(testItems)
349
- expect(wrapper.vm.$_filterTimer).toBe(null)
350
- lastFilterTimer = wrapper.vm.$_filterTimer
351
-
352
- // Set filter to a single character
353
- await wrapper.setProps({
354
- filter: '1'
355
- })
356
- await waitNT(wrapper.vm)
357
- expect(wrapper.emitted('input').length).toBe(1)
358
- expect(wrapper.vm.$_filterTimer).not.toBe(null)
359
- expect(wrapper.vm.$_filterTimer).not.toEqual(lastFilterTimer)
360
- lastFilterTimer = wrapper.vm.$_filterTimer
361
- expect(wrapper.vm.localFilter).not.toEqual('1')
362
-
363
- // Change filter
364
- await wrapper.setProps({
365
- filter: 'z'
366
- })
367
- await waitNT(wrapper.vm)
368
- expect(wrapper.emitted('input').length).toBe(1)
369
- expect(wrapper.vm.$_filterTimer).not.toBe(null)
370
- expect(wrapper.vm.$_filterTimer).not.toEqual(lastFilterTimer)
371
- lastFilterTimer = wrapper.vm.$_filterTimer
372
- expect(wrapper.vm.localFilter).not.toEqual('z')
373
-
374
- jest.advanceTimersByTime(101)
375
- await waitNT(wrapper.vm)
376
- expect(wrapper.emitted('input').length).toBe(2)
377
- expect(wrapper.emitted('input')[1][0]).toEqual([testItems[2]])
378
- expect(wrapper.vm.$_filterTimer).toEqual(lastFilterTimer)
379
- lastFilterTimer = wrapper.vm.$_filterTimer
380
- expect(wrapper.vm.localFilter).toEqual('z')
381
-
382
- // Change filter
383
- await wrapper.setProps({
384
- filter: '1'
385
- })
386
- await waitNT(wrapper.vm)
387
- expect(wrapper.vm.$_filterTimer).not.toBe(null)
388
- expect(wrapper.emitted('input').length).toBe(2)
389
- expect(wrapper.vm.$_filterTimer).not.toEqual(lastFilterTimer)
390
- lastFilterTimer = wrapper.vm.$_filterTimer
391
- expect(wrapper.vm.localFilter).not.toEqual('1')
392
- expect(wrapper.vm.localFilter).toEqual('z')
393
-
394
- // Change filter-debounce to no debouncing
395
- await wrapper.setProps({
396
- filterDebounce: 0
397
- })
398
- await waitNT(wrapper.vm)
399
- // Should clear the pending timer
400
- expect(wrapper.vm.$_filterTimer).toBe(null)
401
- // Should immediately filter the items
402
- expect(wrapper.emitted('input').length).toBe(3)
403
- expect(wrapper.emitted('input')[2][0]).toEqual([testItems[1]])
404
- expect(wrapper.vm.localFilter).toEqual('1')
405
-
406
- wrapper.destroy()
407
- })
408
- })
409
- })
@@ -1,56 +0,0 @@
1
- import { wrapWithMethods } from '../../../tests/utils'
2
- import { mount } from '@vue/test-utils'
3
- import { BTable } from './table'
4
-
5
- describe('table > field-formatter', () => {
6
- it('item field formatter as function works', async () => {
7
- const wrapper = mount(BTable, {
8
- propsData: {
9
- items: [{ a: 1, b: 2 }],
10
- fields: [
11
- {
12
- key: 'a',
13
- formatter(value, key, item) {
14
- return item.a + item.b
15
- }
16
- },
17
- 'b'
18
- ]
19
- }
20
- })
21
-
22
- expect(wrapper).toBeDefined()
23
- expect(wrapper.findAll('tbody > tr').length).toBe(1)
24
- expect(wrapper.findAll('tbody > tr > td').length).toBe(2)
25
- const $tds = wrapper.findAll('tbody > tr > td')
26
- expect($tds.at(0).text()).toBe('3')
27
- expect($tds.at(1).text()).toBe('2')
28
-
29
- wrapper.destroy()
30
- })
31
-
32
- it('item field formatter as string works', async () => {
33
- const wrapper = mount(
34
- wrapWithMethods(BTable, {
35
- formatter(value, key, item) {
36
- return item.a + item.b
37
- }
38
- }),
39
- {
40
- propsData: {
41
- items: [{ a: 1, b: 2 }],
42
- fields: [{ key: 'a', formatter: 'formatter' }, 'b']
43
- }
44
- }
45
- )
46
-
47
- expect(wrapper).toBeDefined()
48
- expect(wrapper.findAll('tbody > tr').length).toBe(1)
49
- expect(wrapper.findAll('tbody > tr > td').length).toBe(2)
50
- const $tds = wrapper.findAll('tbody > tr > td')
51
- expect($tds.at(0).text()).toBe('3')
52
- expect($tds.at(1).text()).toBe('2')
53
-
54
- wrapper.destroy()
55
- })
56
- })