@gitlab/ui 114.0.1 → 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 +9 -28
  2. package/CHANGELOG.md +0 -13132
  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,58 +0,0 @@
1
- import { mount } from '@vue/test-utils'
2
- import { BDropdownDivider } from './dropdown-divider'
3
-
4
- describe('dropdown > dropdown-divider', () => {
5
- it('works', async () => {
6
- const wrapper = mount(BDropdownDivider)
7
-
8
- expect(wrapper.element.tagName).toBe('LI')
9
-
10
- const divider = wrapper.find('hr')
11
- expect(divider.element.tagName).toBe('HR')
12
- expect(divider.classes()).toContain('dropdown-divider')
13
- expect(divider.classes().length).toBe(1)
14
- expect(divider.attributes('role')).toBeDefined()
15
- expect(divider.attributes('role')).toEqual('separator')
16
- expect(divider.text()).toEqual('')
17
-
18
- wrapper.destroy()
19
- })
20
-
21
- it('renders custom root element when prop tag set', async () => {
22
- const wrapper = mount(BDropdownDivider, {
23
- context: {
24
- props: { tag: 'span' }
25
- }
26
- })
27
-
28
- expect(wrapper.element.tagName).toBe('LI')
29
-
30
- const divider = wrapper.find('span')
31
- expect(divider.element.tagName).toBe('SPAN')
32
- expect(divider.classes()).toContain('dropdown-divider')
33
- expect(divider.classes().length).toBe(1)
34
- expect(divider.attributes('role')).toBeDefined()
35
- expect(divider.attributes('role')).toEqual('separator')
36
- expect(divider.text()).toEqual('')
37
-
38
- wrapper.destroy()
39
- })
40
-
41
- it('does not render default slot content', async () => {
42
- const wrapper = mount(BDropdownDivider, {
43
- slots: { default: 'foobar' }
44
- })
45
-
46
- expect(wrapper.element.tagName).toBe('LI')
47
-
48
- const divider = wrapper.find('hr')
49
- expect(divider.element.tagName).toBe('HR')
50
- expect(divider.classes()).toContain('dropdown-divider')
51
- expect(divider.classes().length).toBe(1)
52
- expect(divider.attributes('role')).toBeDefined()
53
- expect(divider.attributes('role')).toEqual('separator')
54
- expect(divider.text()).toEqual('')
55
-
56
- wrapper.destroy()
57
- })
58
- })
@@ -1,110 +0,0 @@
1
- import { mount } from '@vue/test-utils'
2
- import { BDropdownForm } from './dropdown-form'
3
-
4
- describe('dropdown-form', () => {
5
- it('renders with tag "form"', async () => {
6
- const wrapper = mount(BDropdownForm)
7
-
8
- expect(wrapper.element.tagName).toBe('LI')
9
-
10
- const form = wrapper.find('form')
11
- expect(form.element.tagName).toBe('FORM')
12
-
13
- wrapper.destroy()
14
- })
15
-
16
- it('default has expected classes', async () => {
17
- const wrapper = mount(BDropdownForm)
18
-
19
- expect(wrapper.element.tagName).toBe('LI')
20
-
21
- const form = wrapper.find('form')
22
- expect(form.classes()).toContain('b-dropdown-form')
23
- expect(form.classes()).not.toContain('was-validated')
24
- expect(form.classes()).not.toContain('disabled')
25
-
26
- wrapper.destroy()
27
- })
28
-
29
- it('should have custom form classes on form', async () => {
30
- const wrapper = mount(BDropdownForm, {
31
- propsData: {
32
- formClass: ['form-class-custom', 'form-class-custom-2']
33
- }
34
- })
35
-
36
- const form = wrapper.find('form')
37
- expect(form.classes()).toEqual(['b-dropdown-form', 'form-class-custom', 'form-class-custom-2'])
38
-
39
- wrapper.destroy()
40
- })
41
-
42
- it('has tabindex on form', async () => {
43
- const wrapper = mount(BDropdownForm)
44
-
45
- expect(wrapper.element.tagName).toBe('LI')
46
-
47
- const form = wrapper.find('form')
48
- expect(form.element.tagName).toBe('FORM')
49
- expect(form.attributes('tabindex')).toBeDefined()
50
- expect(form.attributes('tabindex')).toEqual('-1')
51
-
52
- wrapper.destroy()
53
- })
54
-
55
- it('does not have tabindex on form when disabled', async () => {
56
- const wrapper = mount(BDropdownForm, {
57
- propsData: {
58
- disabled: true
59
- }
60
- })
61
-
62
- expect(wrapper.element.tagName).toBe('LI')
63
-
64
- const form = wrapper.find('form')
65
- expect(form.element.tagName).toBe('FORM')
66
- expect(form.attributes('tabindex')).toBeUndefined()
67
- expect(form.attributes('disabled')).toBeDefined()
68
- expect(form.classes()).toContain('disabled')
69
-
70
- wrapper.destroy()
71
- })
72
-
73
- it('has class "was-validated" when validated=true', async () => {
74
- const wrapper = mount(BDropdownForm, {
75
- propsData: { validated: true }
76
- })
77
-
78
- expect(wrapper.element.tagName).toBe('LI')
79
-
80
- const form = wrapper.find('form')
81
- expect(form.classes()).toContain('was-validated')
82
- expect(form.classes()).toContain('b-dropdown-form')
83
-
84
- wrapper.destroy()
85
- })
86
-
87
- it('does not have attribute novalidate by default', async () => {
88
- const wrapper = mount(BDropdownForm)
89
-
90
- expect(wrapper.element.tagName).toBe('LI')
91
-
92
- const form = wrapper.find('form')
93
- expect(form.attributes('novalidate')).toBeUndefined()
94
-
95
- wrapper.destroy()
96
- })
97
-
98
- it('has attribute novalidate when novalidate=true', async () => {
99
- const wrapper = mount(BDropdownForm, {
100
- propsData: { novalidate: true }
101
- })
102
-
103
- expect(wrapper.element.tagName).toBe('LI')
104
-
105
- const form = wrapper.find('form')
106
- expect(form.attributes('novalidate')).toBeDefined()
107
-
108
- wrapper.destroy()
109
- })
110
- })
@@ -1,94 +0,0 @@
1
- import { mount } from '@vue/test-utils'
2
- import { BDropdownGroup } from './dropdown-group'
3
-
4
- describe('dropdown > dropdown-header', () => {
5
- it('works', async () => {
6
- const wrapper = mount(BDropdownGroup)
7
-
8
- expect(wrapper.element.tagName).toBe('LI')
9
- expect(wrapper.classes().length).toBe(0)
10
-
11
- const header = wrapper.find('header')
12
- expect(header.exists()).toBe(false)
13
-
14
- const ul = wrapper.find('ul')
15
- expect(ul).toBeDefined()
16
- expect(ul.element.tagName).toBe('UL')
17
- expect(ul.classes()).toContain('list-unstyled')
18
- expect(ul.classes().length).toBe(1)
19
- expect(ul.attributes('id')).toBeUndefined()
20
-
21
- expect(wrapper.text()).toEqual('')
22
-
23
- wrapper.destroy()
24
- })
25
-
26
- it('renders header element when prop header set', async () => {
27
- const wrapper = mount(BDropdownGroup, {
28
- context: {
29
- props: { header: 'foobar' }
30
- }
31
- })
32
-
33
- expect(wrapper.element.tagName).toBe('LI')
34
-
35
- const header = wrapper.find('header')
36
- expect(header.element.tagName).toBe('HEADER')
37
- expect(header.classes()).toContain('dropdown-header')
38
- expect(header.classes().length).toBe(1)
39
- expect(header.attributes('id')).toBeUndefined()
40
- expect(header.text()).toEqual('foobar')
41
-
42
- wrapper.destroy()
43
- })
44
-
45
- it('renders custom header element when prop header-tag set', async () => {
46
- const wrapper = mount(BDropdownGroup, {
47
- context: {
48
- props: {
49
- header: 'foobar',
50
- headerTag: 'h6'
51
- }
52
- }
53
- })
54
-
55
- expect(wrapper.element.tagName).toBe('LI')
56
-
57
- const header = wrapper.find('.dropdown-header')
58
- expect(header.element.tagName).toBe('H6')
59
- expect(header.classes().length).toBe(1)
60
- expect(header.text()).toEqual('foobar')
61
-
62
- wrapper.destroy()
63
- })
64
-
65
- it('user supplied id when prop id set', async () => {
66
- const wrapper = mount(BDropdownGroup, {
67
- context: {
68
- props: { id: 'foo' }
69
- }
70
- })
71
-
72
- expect(wrapper.element.tagName).toBe('LI')
73
-
74
- const ul = wrapper.find('ul')
75
- expect(ul.attributes('id')).toBeDefined()
76
- expect(ul.attributes('id')).toEqual('foo')
77
-
78
- wrapper.destroy()
79
- })
80
-
81
- it('renders default slot content', async () => {
82
- const wrapper = mount(BDropdownGroup, {
83
- slots: { default: '<li>foobar</li>' }
84
- })
85
-
86
- expect(wrapper.element.tagName).toBe('LI')
87
-
88
- const ul = wrapper.find('ul')
89
- expect(ul.element.tagName).toBe('UL')
90
- expect(ul.text()).toEqual('foobar')
91
-
92
- wrapper.destroy()
93
- })
94
- })
@@ -1,73 +0,0 @@
1
- import { mount } from '@vue/test-utils'
2
- import { BDropdownHeader } from './dropdown-header'
3
-
4
- describe('dropdown > dropdown-header', () => {
5
- it('works', async () => {
6
- const wrapper = mount(BDropdownHeader)
7
-
8
- expect(wrapper.element.tagName).toBe('LI')
9
-
10
- const header = wrapper.find('header')
11
- expect(header.element.tagName).toBe('HEADER')
12
- expect(header.classes()).toContain('dropdown-header')
13
- expect(header.classes().length).toBe(1)
14
- expect(header.attributes('id')).toBeUndefined()
15
- expect(header.text()).toEqual('')
16
-
17
- wrapper.destroy()
18
- })
19
-
20
- it('renders custom header element when prop tag set', async () => {
21
- const wrapper = mount(BDropdownHeader, {
22
- context: {
23
- props: { tag: 'h2' }
24
- }
25
- })
26
-
27
- expect(wrapper.element.tagName).toBe('LI')
28
-
29
- const header = wrapper.find('h2')
30
- expect(header.element.tagName).toBe('H2')
31
- expect(header.classes()).toContain('dropdown-header')
32
- expect(header.classes().length).toBe(1)
33
- expect(header.attributes('id')).toBeUndefined()
34
- expect(header.text()).toEqual('')
35
-
36
- wrapper.destroy()
37
- })
38
-
39
- it('user supplied id when prop id set', async () => {
40
- const wrapper = mount(BDropdownHeader, {
41
- context: {
42
- props: { id: 'foo' }
43
- }
44
- })
45
-
46
- expect(wrapper.element.tagName).toBe('LI')
47
-
48
- const header = wrapper.find('header')
49
- expect(header.element.tagName).toBe('HEADER')
50
- expect(header.classes()).toContain('dropdown-header')
51
- expect(header.classes().length).toBe(1)
52
- expect(header.attributes('id')).toBeDefined()
53
- expect(header.attributes('id')).toEqual('foo')
54
-
55
- wrapper.destroy()
56
- })
57
-
58
- it('renders default slot content', async () => {
59
- const wrapper = mount(BDropdownHeader, {
60
- slots: { default: 'foobar' }
61
- })
62
-
63
- expect(wrapper.element.tagName).toBe('LI')
64
-
65
- const header = wrapper.find('header')
66
- expect(header.element.tagName).toBe('HEADER')
67
- expect(header.classes()).toContain('dropdown-header')
68
- expect(header.classes().length).toBe(1)
69
- expect(header.text()).toEqual('foobar')
70
-
71
- wrapper.destroy()
72
- })
73
- })
@@ -1,117 +0,0 @@
1
- import { mount } from '@vue/test-utils'
2
- import { BDropdownItemButton } from './dropdown-item-button'
3
-
4
- describe('dropdown-item-button', () => {
5
- it('renders with tag "button" and type="button" by default', async () => {
6
- const wrapper = mount(BDropdownItemButton)
7
- expect(wrapper.element.tagName).toBe('LI')
8
-
9
- const button = wrapper.find('button')
10
- expect(button.element.tagName).toBe('BUTTON')
11
- expect(button.attributes('type')).toBe('button')
12
-
13
- wrapper.destroy()
14
- })
15
-
16
- it('has class "dropdown-item"', async () => {
17
- const wrapper = mount(BDropdownItemButton)
18
- expect(wrapper.element.tagName).toBe('LI')
19
-
20
- const button = wrapper.find('button')
21
- expect(button.classes()).toContain('dropdown-item')
22
- expect(button.classes()).not.toContain('active')
23
-
24
- wrapper.destroy()
25
- })
26
-
27
- it('has class "active" when active=true', async () => {
28
- const wrapper = mount(BDropdownItemButton, {
29
- propsData: { active: true }
30
- })
31
- expect(wrapper.element.tagName).toBe('LI')
32
-
33
- const button = wrapper.find('button')
34
- expect(button.classes()).toContain('active')
35
- expect(button.classes()).toContain('dropdown-item')
36
-
37
- wrapper.destroy()
38
- })
39
-
40
- it('has attribute "disabled" when disabled=true', async () => {
41
- const wrapper = mount(BDropdownItemButton, {
42
- propsData: { disabled: true }
43
- })
44
- expect(wrapper.element.tagName).toBe('LI')
45
-
46
- const button = wrapper.find('button')
47
- expect(button.attributes('disabled')).toBeDefined()
48
-
49
- wrapper.destroy()
50
- })
51
-
52
- it('calls dropdown hide(true) method when clicked', async () => {
53
- let called = false
54
- let refocus = null
55
- const wrapper = mount(BDropdownItemButton, {
56
- provide: {
57
- getBvDropdown: () => ({
58
- hide(arg) {
59
- called = true
60
- refocus = arg
61
- }
62
- })
63
- }
64
- })
65
- expect(wrapper.element.tagName).toBe('LI')
66
-
67
- const button = wrapper.find('button')
68
- expect(button).toBeDefined()
69
- await button.trigger('click')
70
- expect(called).toBe(true)
71
- expect(refocus).toBe(true)
72
-
73
- wrapper.destroy()
74
- })
75
-
76
- it('does not call dropdown hide(true) method when clicked and disabled', async () => {
77
- let called = false
78
- let refocus = null
79
- const wrapper = mount(BDropdownItemButton, {
80
- propsData: {
81
- disabled: true
82
- },
83
- provide: {
84
- getBvDropdown: () => ({
85
- hide(arg) {
86
- called = true
87
- refocus = arg
88
- }
89
- })
90
- }
91
- })
92
- expect(wrapper.element.tagName).toBe('LI')
93
-
94
- const button = wrapper.find('button')
95
- expect(button).toBeDefined()
96
- await button.trigger('click')
97
- expect(called).toBe(false)
98
- expect(refocus).toBe(null)
99
-
100
- wrapper.destroy()
101
- })
102
-
103
- it('has buttonClass when prop is passed a value', () => {
104
- const wrapper = mount(BDropdownItemButton, {
105
- propsData: {
106
- buttonClass: 'button-class'
107
- }
108
- })
109
- expect(wrapper.element.tagName).toBe('LI')
110
-
111
- const button = wrapper.find('button')
112
- expect(button.classes()).toContain('button-class')
113
- expect(button.classes()).toContain('dropdown-item')
114
-
115
- wrapper.destroy()
116
- })
117
- })
@@ -1,147 +0,0 @@
1
- import VueRouter from 'vue-router'
2
- import { mount } from '@vue/test-utils'
3
- import { waitRAF } from '../../../tests/utils'
4
- import { Vue } from '../../vue'
5
- import { BDropdownItem } from './dropdown-item'
6
-
7
- Vue.use(VueRouter)
8
-
9
- describe('dropdown-item', () => {
10
- it('renders with tag "a" and href="#" by default', async () => {
11
- const wrapper = mount(BDropdownItem)
12
- expect(wrapper.element.tagName).toBe('LI')
13
-
14
- const item = wrapper.find('a')
15
- expect(item.element.tagName).toBe('A')
16
- expect(item.attributes('href')).toBe('#')
17
-
18
- wrapper.destroy()
19
- })
20
-
21
- it('has class "dropdown-item"', async () => {
22
- const wrapper = mount(BDropdownItem)
23
- expect(wrapper.element.tagName).toBe('LI')
24
-
25
- const item = wrapper.find('a')
26
- expect(item.classes()).toContain('dropdown-item')
27
- expect(item.attributes('href')).toBe('#')
28
-
29
- wrapper.destroy()
30
- })
31
-
32
- it('calls dropdown hide(true) method when clicked', async () => {
33
- let called = false
34
- let refocus = null
35
- const wrapper = mount(BDropdownItem, {
36
- provide: {
37
- getBvDropdown: () => ({
38
- hide(arg) {
39
- called = true
40
- refocus = arg
41
- }
42
- })
43
- }
44
- })
45
- expect(wrapper.element.tagName).toBe('LI')
46
-
47
- const item = wrapper.find('a')
48
- expect(item).toBeDefined()
49
- await item.trigger('click')
50
- await waitRAF()
51
- expect(called).toBe(true)
52
- expect(refocus).toBe(true)
53
-
54
- wrapper.destroy()
55
- })
56
-
57
- it('does not call dropdown hide(true) method when clicked and disabled', async () => {
58
- let called = false
59
- let refocus = null
60
- const wrapper = mount(BDropdownItem, {
61
- propsData: { disabled: true },
62
- provide: {
63
- getBvDropdown: () => ({
64
- hide(arg) {
65
- called = true
66
- refocus = arg
67
- }
68
- })
69
- }
70
- })
71
- expect(wrapper.element.tagName).toBe('LI')
72
-
73
- const item = wrapper.find('a')
74
- expect(item).toBeDefined()
75
- await item.trigger('click')
76
- await waitRAF()
77
- expect(called).toBe(false)
78
- expect(refocus).toBe(null)
79
-
80
- wrapper.destroy()
81
- })
82
-
83
- it('has linkClass when prop is passed a value', () => {
84
- const wrapper = mount(BDropdownItem, {
85
- propsData: {
86
- linkClass: 'link-class'
87
- }
88
- })
89
- expect(wrapper.element.tagName).toBe('LI')
90
-
91
- const item = wrapper.find('a')
92
- expect(item.classes()).toContain('link-class')
93
- expect(item.classes()).toContain('dropdown-item')
94
-
95
- wrapper.destroy()
96
- })
97
-
98
- describe('router-link support', () => {
99
- it('works', async () => {
100
- const router = new VueRouter({
101
- mode: 'abstract',
102
- routes: [
103
- { path: '/', component: { name: 'R', template: '<div class="r">ROOT</div>' } },
104
- { path: '/a', component: { name: 'A', template: '<div class="a">A</div>' } },
105
- { path: '/b', component: { name: 'B', template: '<div class="a">B</div>' } }
106
- ]
107
- })
108
-
109
- const App = {
110
- router,
111
- render(h) {
112
- return h('ul', [
113
- // <router-link>
114
- h(BDropdownItem, { props: { to: '/a' } }, ['to-a']),
115
- // Regular link
116
- h(BDropdownItem, { props: { href: '/a' } }, ['href-a']),
117
- // <router-link>
118
- h(BDropdownItem, { props: { to: { path: '/b' } } }, ['to-path-b']),
119
- h('router-view')
120
- ])
121
- }
122
- }
123
-
124
- const wrapper = mount(App, {
125
- attachTo: document.body
126
- })
127
-
128
- expect(wrapper.vm).toBeDefined()
129
- expect(wrapper.element.tagName).toBe('UL')
130
-
131
- expect(wrapper.findAll('li').length).toBe(3)
132
- expect(wrapper.findAll('a').length).toBe(3)
133
-
134
- const $links = wrapper.findAllComponents('a')
135
-
136
- $links.wrappers.forEach($link => {
137
- expect($link.vm).toBeDefined()
138
- expect($links.at(0).vm.$options.name).toBe('BLink')
139
- })
140
- expect(
141
- $links.wrappers.map($link => $link.findComponent({ name: 'RouterLink' }).exists())
142
- ).toStrictEqual([true, false, true])
143
-
144
- wrapper.destroy()
145
- })
146
- })
147
- })
@@ -1,59 +0,0 @@
1
- import { mount } from '@vue/test-utils'
2
- import { BDropdownText } from './dropdown-text'
3
-
4
- describe('dropdown-text', () => {
5
- it('renders with tag "p" by default', async () => {
6
- const wrapper = mount(BDropdownText)
7
-
8
- expect(wrapper.element.tagName).toBe('LI')
9
-
10
- const text = wrapper.find('p')
11
- expect(text.element.tagName).toBe('P')
12
-
13
- wrapper.destroy()
14
- })
15
-
16
- it('has custom class "b-dropdown-text"', async () => {
17
- const wrapper = mount(BDropdownText)
18
-
19
- expect(wrapper.element.tagName).toBe('LI')
20
-
21
- const text = wrapper.find('p')
22
- expect(text.classes()).toContain('b-dropdown-text')
23
-
24
- wrapper.destroy()
25
- })
26
-
27
- it('renders with tag "div" when tag=div', async () => {
28
- const wrapper = mount(BDropdownText, {
29
- context: {
30
- props: { tag: 'div' }
31
- }
32
- })
33
-
34
- expect(wrapper.element.tagName).toBe('LI')
35
-
36
- const text = wrapper.find('div')
37
- expect(text.element.tagName).toBe('DIV')
38
- expect(text.classes()).toContain('b-dropdown-text')
39
-
40
- wrapper.destroy()
41
- })
42
-
43
- it('adds classes from `text-class` prop to child', async () => {
44
- const wrapper = mount(BDropdownText, {
45
- context: {
46
- props: { textClass: 'some-custom-class' }
47
- }
48
- })
49
-
50
- expect(wrapper.element.tagName).toBe('LI')
51
-
52
- const text = wrapper.find('p')
53
- expect(text.element.tagName).toBe('P')
54
- expect(text.classes()).toContain('b-dropdown-text')
55
- expect(text.classes()).toContain('some-custom-class')
56
-
57
- wrapper.destroy()
58
- })
59
- })