@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,434 +0,0 @@
1
- import VueRouter from 'vue-router'
2
- import { createLocalVue, mount } from '@vue/test-utils'
3
- import { BLink } from './link'
4
- import { Vue } from '../../vue'
5
-
6
- Vue.use(VueRouter)
7
-
8
- describe('b-link', () => {
9
- it('has expected default structure', async () => {
10
- const wrapper = mount(BLink)
11
-
12
- expect(wrapper.element.tagName).toBe('A')
13
- expect(wrapper.attributes('href')).toEqual('#')
14
- expect(wrapper.attributes('target')).toEqual('_self')
15
- expect(wrapper.attributes('rel')).toBeUndefined()
16
- expect(wrapper.attributes('aria-disabled')).toBeUndefined()
17
- expect(wrapper.classes().length).toBe(0)
18
- expect(wrapper.text()).toEqual('')
19
-
20
- wrapper.destroy()
21
- })
22
-
23
- it('renders content from default slot', async () => {
24
- const wrapper = mount(BLink, {
25
- slots: {
26
- default: 'foobar'
27
- }
28
- })
29
-
30
- expect(wrapper.element.tagName).toBe('A')
31
- expect(wrapper.attributes('href')).toEqual('#')
32
- expect(wrapper.attributes('target')).toEqual('_self')
33
- expect(wrapper.attributes('rel')).toBeUndefined()
34
- expect(wrapper.attributes('aria-disabled')).toBeUndefined()
35
- expect(wrapper.classes().length).toBe(0)
36
- expect(wrapper.text()).toEqual('foobar')
37
-
38
- wrapper.destroy()
39
- })
40
-
41
- it('sets attribute href to user supplied value', async () => {
42
- const wrapper = mount(BLink, {
43
- propsData: {
44
- href: '/foobar'
45
- }
46
- })
47
-
48
- expect(wrapper.element.tagName).toBe('A')
49
- expect(wrapper.attributes('href')).toEqual('/foobar')
50
- expect(wrapper.attributes('target')).toEqual('_self')
51
- expect(wrapper.attributes('rel')).toBeUndefined()
52
- expect(wrapper.attributes('aria-disabled')).toBeUndefined()
53
- expect(wrapper.classes().length).toBe(0)
54
- expect(wrapper.text()).toEqual('')
55
-
56
- wrapper.destroy()
57
- })
58
-
59
- it('sets attribute href when user supplied href is hash target', async () => {
60
- const wrapper = mount(BLink, {
61
- propsData: {
62
- href: '#foobar'
63
- }
64
- })
65
-
66
- expect(wrapper.element.tagName).toBe('A')
67
- expect(wrapper.attributes('href')).toEqual('#foobar')
68
- expect(wrapper.attributes('target')).toEqual('_self')
69
- expect(wrapper.attributes('rel')).toBeUndefined()
70
- expect(wrapper.attributes('aria-disabled')).toBeUndefined()
71
- expect(wrapper.classes().length).toBe(0)
72
- expect(wrapper.text()).toEqual('')
73
-
74
- wrapper.destroy()
75
- })
76
-
77
- it('should set href to string `to` prop', async () => {
78
- const wrapper = mount(BLink, {
79
- propsData: {
80
- to: '/foobar'
81
- }
82
- })
83
-
84
- expect(wrapper.element.tagName).toBe('A')
85
- expect(wrapper.attributes('href')).toEqual('/foobar')
86
- expect(wrapper.attributes('target')).toEqual('_self')
87
- expect(wrapper.attributes('rel')).toBeUndefined()
88
- expect(wrapper.attributes('aria-disabled')).toBeUndefined()
89
- expect(wrapper.classes().length).toBe(0)
90
- expect(wrapper.text()).toEqual('')
91
-
92
- wrapper.destroy()
93
- })
94
-
95
- it('should set href to path from `to` prop', async () => {
96
- const wrapper = mount(BLink, {
97
- propsData: {
98
- to: { path: '/foobar' }
99
- }
100
- })
101
-
102
- expect(wrapper.element.tagName).toBe('A')
103
- expect(wrapper.attributes('href')).toEqual('/foobar')
104
- expect(wrapper.attributes('target')).toEqual('_self')
105
- expect(wrapper.attributes('rel')).toBeUndefined()
106
- expect(wrapper.attributes('aria-disabled')).toBeUndefined()
107
- expect(wrapper.classes().length).toBe(0)
108
- expect(wrapper.text()).toEqual('')
109
-
110
- wrapper.destroy()
111
- })
112
-
113
- it('should default rel to `noopener` when target==="_blank"', async () => {
114
- const wrapper = mount(BLink, {
115
- propsData: {
116
- href: '/foobar',
117
- target: '_blank'
118
- }
119
- })
120
-
121
- expect(wrapper.element.tagName).toBe('A')
122
- expect(wrapper.attributes('href')).toEqual('/foobar')
123
- expect(wrapper.attributes('target')).toEqual('_blank')
124
- expect(wrapper.attributes('rel')).toEqual('noopener')
125
- expect(wrapper.classes().length).toBe(0)
126
-
127
- wrapper.destroy()
128
- })
129
-
130
- it('should render the given rel to when target==="_blank"', async () => {
131
- const wrapper = mount(BLink, {
132
- propsData: {
133
- href: '/foobar',
134
- target: '_blank',
135
- rel: 'alternate'
136
- }
137
- })
138
-
139
- expect(wrapper.element.tagName).toBe('A')
140
- expect(wrapper.attributes('href')).toEqual('/foobar')
141
- expect(wrapper.attributes('target')).toEqual('_blank')
142
- expect(wrapper.attributes('rel')).toEqual('alternate')
143
- expect(wrapper.classes().length).toBe(0)
144
-
145
- wrapper.destroy()
146
- })
147
-
148
- it('should add "active" class when prop active=true', async () => {
149
- const wrapper = mount(BLink, {
150
- propsData: {
151
- active: true
152
- }
153
- })
154
-
155
- expect(wrapper.element.tagName).toBe('A')
156
- expect(wrapper.classes()).toContain('active')
157
- expect(wrapper.classes().length).toBe(1)
158
-
159
- wrapper.destroy()
160
- })
161
-
162
- it('should add aria-disabled="true" when disabled', async () => {
163
- const wrapper = mount(BLink, {
164
- propsData: {
165
- disabled: true
166
- }
167
- })
168
- expect(wrapper.attributes('aria-disabled')).toBeDefined()
169
- expect(wrapper.attributes('aria-disabled')).toEqual('true')
170
-
171
- wrapper.destroy()
172
- })
173
-
174
- it("should add '.disabled' class when prop disabled=true", async () => {
175
- const wrapper = mount(BLink, {
176
- propsData: {
177
- disabled: true
178
- }
179
- })
180
- expect(wrapper.classes()).toContain('disabled')
181
-
182
- wrapper.destroy()
183
- })
184
-
185
- it('focus and blur methods work', async () => {
186
- const wrapper = mount(BLink, {
187
- attachTo: document.body,
188
- propsData: {
189
- href: '#foobar'
190
- }
191
- })
192
-
193
- expect(wrapper.element.tagName).toBe('A')
194
-
195
- expect(document.activeElement).not.toBe(wrapper.element)
196
- wrapper.vm.focus()
197
- expect(document.activeElement).toBe(wrapper.element)
198
- wrapper.vm.blur()
199
- expect(document.activeElement).not.toBe(wrapper.element)
200
-
201
- wrapper.destroy()
202
- })
203
-
204
- describe('click handling', () => {
205
- it('should invoke click handler bound by Vue when clicked on', async () => {
206
- let called = 0
207
- let event = null
208
- const wrapper = mount(BLink, {
209
- listeners: {
210
- click: e => {
211
- event = e
212
- called++
213
- }
214
- }
215
- })
216
- expect(wrapper.element.tagName).toBe('A')
217
- expect(called).toBe(0)
218
- expect(event).toEqual(null)
219
- await wrapper.find('a').trigger('click')
220
- expect(called).toBe(1)
221
- expect(event).toBeInstanceOf(MouseEvent)
222
-
223
- wrapper.destroy()
224
- })
225
-
226
- it('should invoke multiple click handlers bound by Vue when clicked on', async () => {
227
- const spy1 = jest.fn()
228
- const spy2 = jest.fn()
229
- const wrapper = mount(BLink, {
230
- listeners: {
231
- click: [spy1, spy2]
232
- }
233
- })
234
- expect(wrapper.element.tagName).toBe('A')
235
- expect(spy1).not.toHaveBeenCalled()
236
- expect(spy2).not.toHaveBeenCalled()
237
- await wrapper.find('a').trigger('click')
238
- expect(spy1).toHaveBeenCalled()
239
- expect(spy2).toHaveBeenCalled()
240
-
241
- wrapper.destroy()
242
- })
243
-
244
- it('should NOT invoke click handler bound by Vue when disabled and clicked', async () => {
245
- let called = 0
246
- let event = null
247
- const wrapper = mount(BLink, {
248
- propsData: {
249
- disabled: true
250
- },
251
- listeners: {
252
- click: e => {
253
- event = e
254
- called++
255
- }
256
- }
257
- })
258
- expect(wrapper.element.tagName).toBe('A')
259
- expect(called).toBe(0)
260
- expect(event).toEqual(null)
261
- await wrapper.find('a').trigger('click')
262
- expect(called).toBe(0)
263
- expect(event).toEqual(null)
264
-
265
- wrapper.destroy()
266
- })
267
-
268
- it('should NOT invoke click handler bound via "addEventListener" when disabled and clicked', async () => {
269
- const wrapper = mount(BLink, {
270
- propsData: {
271
- disabled: true
272
- }
273
- })
274
- const spy = jest.fn()
275
- expect(wrapper.element.tagName).toBe('A')
276
- wrapper.find('a').element.addEventListener('click', spy)
277
- await wrapper.find('a').trigger('click')
278
- expect(spy).not.toHaveBeenCalled()
279
-
280
- wrapper.destroy()
281
- })
282
-
283
- it('should emit "bv::link::clicked" on $root when clicked on', async () => {
284
- const spy = jest.fn()
285
- const App = {
286
- render(h) {
287
- return h('div', [h(BLink, { props: { href: '/foo' } }, 'link')])
288
- }
289
- }
290
-
291
- const wrapper = mount(App)
292
- expect(wrapper.vm).toBeDefined()
293
- wrapper.vm.$root.$on('bv::link::clicked', spy)
294
-
295
- await wrapper.find('a').trigger('click')
296
- expect(spy).toHaveBeenCalled()
297
-
298
- wrapper.destroy()
299
- })
300
-
301
- it('should not emit "bv::link::clicked" on $root when clicked on when disabled', async () => {
302
- const spy = jest.fn()
303
- const App = {
304
- render(h) {
305
- return h('div', [h(BLink, { props: { href: '/foo', disabled: true } }, 'link')])
306
- }
307
- }
308
-
309
- const wrapper = mount(App)
310
- expect(wrapper.vm).toBeDefined()
311
- wrapper.vm.$root.$on('bv::link::clicked', spy)
312
-
313
- await wrapper.find('a').trigger('click')
314
- expect(spy).not.toHaveBeenCalled()
315
-
316
- wrapper.destroy()
317
- })
318
-
319
- it('should emit "clicked::link" on $root when clicked on', async () => {
320
- const spy = jest.fn()
321
- const App = {
322
- render(h) {
323
- return h('div', [h(BLink, { props: { href: '/foo' } }, 'link')])
324
- }
325
- }
326
-
327
- const wrapper = mount(App)
328
- expect(wrapper.vm).toBeDefined()
329
- wrapper.vm.$root.$on('clicked::link', spy)
330
-
331
- await wrapper.find('a').trigger('click')
332
- expect(spy).toHaveBeenCalled()
333
-
334
- wrapper.destroy()
335
- })
336
-
337
- it('should not emit "clicked::link" on $root when clicked on when disabled', async () => {
338
- const spy = jest.fn()
339
- const App = {
340
- render(h) {
341
- return h('div', [h(BLink, { props: { href: '/foo', disabled: true } }, 'link')])
342
- }
343
- }
344
-
345
- const wrapper = mount(App)
346
- expect(wrapper.vm).toBeDefined()
347
- wrapper.vm.$root.$on('clicked::link', spy)
348
-
349
- await wrapper.find('a').trigger('click')
350
- expect(spy).not.toHaveBeenCalled()
351
-
352
- wrapper.destroy()
353
- })
354
- })
355
-
356
- describe('router-link support', () => {
357
- it('works', async () => {
358
- const localVue = createLocalVue()
359
-
360
- const router = new VueRouter({
361
- mode: 'abstract',
362
- routes: [
363
- { path: '/', component: { name: 'R', template: '<div class="r">ROOT</div>' } },
364
- { path: '/a', component: { name: 'A', template: '<div class="a">A</div>' } },
365
- { path: '/b', component: { name: 'B', template: '<div class="a">B</div>' } }
366
- ]
367
- })
368
-
369
- // Fake Gridsome `<g-link>` component
370
- const GLink = {
371
- name: 'GLink',
372
- props: {
373
- to: {
374
- type: [String, Object],
375
- default: ''
376
- }
377
- },
378
- render(h) {
379
- // We just us a simple A tag to render the
380
- // fake `<g-link>` and assume `to` is a string
381
- return h('a', { attrs: { href: this.to } }, [this.$slots.default])
382
- }
383
- }
384
-
385
- localVue.component('GLink', GLink)
386
-
387
- const App = {
388
- router,
389
- components: { BLink },
390
- render(h) {
391
- return h('main', [
392
- // router-link
393
- h('b-link', { props: { to: '/a' } }, ['to-a']),
394
- // regular link
395
- h('b-link', { props: { href: '/a' } }, ['href-a']),
396
- // router-link
397
- h('b-link', { props: { to: { path: '/b' } } }, ['to-path-b']),
398
- // g-link
399
- h('b-link', { props: { routerComponentName: 'g-link', to: '/a' } }, ['g-link-a']),
400
- h('router-view')
401
- ])
402
- }
403
- }
404
-
405
- const wrapper = mount(App, {
406
- localVue,
407
- attachTo: document.body
408
- })
409
-
410
- expect(wrapper.vm).toBeDefined()
411
- expect(wrapper.element.tagName).toBe('MAIN')
412
-
413
- expect(wrapper.findAll('a').length).toBe(4)
414
-
415
- const $links = wrapper.findAllComponents('a')
416
- $links.wrappers.forEach($link => {
417
- expect($link.vm).toBeDefined()
418
- expect($links.at(0).vm.$options.name).toBe('BLink')
419
- })
420
- expect(
421
- $links.wrappers.map($link => $link.findComponent({ name: 'RouterLink' }).exists())
422
- ).toStrictEqual([true, false, true, false])
423
-
424
- expect(
425
- $links
426
- .at(3)
427
- .findComponent(GLink)
428
- .exists()
429
- ).toBe(true)
430
-
431
- wrapper.destroy()
432
- })
433
- })
434
- })
@@ -1,57 +0,0 @@
1
- {
2
- "name": "@bootstrap-vue/link",
3
- "version": "1.0.0",
4
- "meta": {
5
- "title": "Link",
6
- "description": "Use BootstrapVue's custom <b-link> component for generating a standard <a> link or <router-link>. <b-link> supports the disabled state and click event propagation.",
7
- "components": [
8
- {
9
- "component": "BLink",
10
- "props": [
11
- {
12
- "prop": "href",
13
- "description": "Denotes the target URL of the link for standard a links"
14
- },
15
- {
16
- "prop": "rel",
17
- "description": "Sets the 'rel' attribute on the rendered link"
18
- },
19
- {
20
- "prop": "target",
21
- "description": "Sets the 'target' attribute on the rendered link"
22
- }
23
- ],
24
- "events": [
25
- {
26
- "event": "bv::link::clicked",
27
- "description": "Emitted on `$root` when link was clicked",
28
- "args": [
29
- {
30
- "name": "event",
31
- "type": "MouseEvent",
32
- "description": "Native click event"
33
- }
34
- ]
35
- },
36
- {
37
- "event": "click",
38
- "description": "Emitted when link was clicked",
39
- "args": [
40
- {
41
- "name": "event",
42
- "type": "MouseEvent",
43
- "description": "Native click event"
44
- }
45
- ]
46
- }
47
- ],
48
- "slots": [
49
- {
50
- "name": "default",
51
- "description": "Content to place in the link"
52
- }
53
- ]
54
- }
55
- ]
56
- }
57
- }
@@ -1,30 +0,0 @@
1
- # Modifications to Vendored Code
2
-
3
- **Library**: BootstrapVue
4
- **Version**: 2.23.1 **Link:** https://bootstrap-vue.org **Source:**
5
- https://github.com/bootstrap-vue/bootstrap-vue **Copyright:** (c) 2016-2024 BootstrapVue
6
- **License:** (c)
7
- [2016-2024 BootstrapVue](https://github.com/bootstrap-vue/bootstrap-vue/blob/master/LICENSE)
8
-
9
- This file documents modifications made to the original BootstrapVue component files.
10
-
11
- ## Removed unnecessary properties
12
-
13
- The following properties have been removed as they are no longer supported in our implementation:
14
-
15
- - `headerBgVariant`
16
- - `headerBorderVariant`
17
- - `headerTextVariant`
18
- - `headerCloseVariant`
19
- - `bodyBgVariant`
20
- - `bodyTextVariant`
21
- - `footerBgVariant`
22
- - `footerBorderVariant`
23
- - `footerTextVariant`
24
-
25
- These properties were removed to streamline the component for our use case, as they are no longer
26
- necessary in our project. The following files have been modified from the original:
27
-
28
- - `modal.js`: Removed unnecessary properties.
29
- - `package.json`: Removed unnecessary properties.
30
- - `README.md`: Removed unnecessary properties.