@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,70 +0,0 @@
1
- import { cloneDeep } from './clone-deep'
2
-
3
- describe('cloneDeep()', () => {
4
- it('should clone arrays', () => {
5
- const a = [{ a: 0 }, { b: 1 }]
6
- expect(cloneDeep(a)).toEqual(a)
7
-
8
- const b = [1, 2, 3]
9
- expect(b).toEqual(b)
10
-
11
- const c = [{ a: 0 }, { b: 1 }]
12
- const d = cloneDeep(c)
13
- expect(d).toEqual(c)
14
- expect(d[0]).toEqual(c[0])
15
-
16
- const e = [0, 'a', {}, [{}], [() => {}], () => {}]
17
- expect(cloneDeep(e)).toEqual(e)
18
- })
19
-
20
- it('should deeply clone an array', () => {
21
- const a = [[{ a: 'b' }], [{ a: 'b' }]]
22
- const b = cloneDeep(a)
23
- expect(b).not.toBe(a)
24
- expect(b[0]).not.toBe(a[0])
25
- expect(b[1]).not.toBe(a[1])
26
- expect(b).toEqual(a)
27
- })
28
-
29
- it('should deeply clone object', () => {
30
- const a = { a: 'b' }
31
- const b = cloneDeep(a)
32
- b.c = 'd'
33
- expect(b).not.toEqual(a)
34
- })
35
-
36
- it('should deeply clone arrays', () => {
37
- const a = { a: 'b' }
38
- const b = [a]
39
- const c = cloneDeep(b)
40
- a.c = 'd'
41
- expect(c).not.toEqual(b)
42
- })
43
-
44
- it('should return primitives', () => {
45
- expect(cloneDeep(0)).toEqual(0)
46
- expect(cloneDeep('foo')).toEqual('foo')
47
- })
48
-
49
- it('should clone a regex', () => {
50
- expect(cloneDeep(/foo/g)).toEqual(/foo/g)
51
- })
52
-
53
- it('should clone objects', () => {
54
- const a = { a: 1, b: 2, c: 3 }
55
- expect(cloneDeep(a)).toEqual(a)
56
- expect(cloneDeep(a)).not.toBe(a)
57
- })
58
-
59
- it('should deeply clone objects', () => {
60
- const a = { a: { a: 1, b: 2, c: 3 }, b: { a: 1, b: 2, c: 3 }, c: { a: 1, b: 2, c: 3 } }
61
- expect(cloneDeep(a)).toEqual(a)
62
- expect(cloneDeep(a)).not.toBe(a)
63
- expect(cloneDeep(a).a).toEqual(a.a)
64
- expect(cloneDeep(a).a).not.toBe(a.a)
65
- expect(cloneDeep(a).b).toEqual(a.b)
66
- expect(cloneDeep(a).b).not.toBe(a.b)
67
- expect(cloneDeep(a).c).toEqual(a.c)
68
- expect(cloneDeep(a).c).not.toBe(a.c)
69
- })
70
- })
@@ -1,169 +0,0 @@
1
- import { createLocalVue } from '@vue/test-utils'
2
- import { isVue3 } from '../../src/vue'
3
- import { ToastPlugin } from '../../src/components/toast'
4
- import { BVConfigPlugin } from '../../src/bv-config'
5
- import { setConfig, resetConfig } from './config-set'
6
- import {
7
- getBreakpoints,
8
- getBreakpointsDown,
9
- getBreakpointsUp,
10
- getComponentConfig,
11
- getConfig,
12
- getConfigValue
13
- } from './config'
14
-
15
- describe('utils/config', () => {
16
- afterEach(() => {
17
- resetConfig()
18
- })
19
-
20
- /**
21
- * We needed to adjust this test to have it reflect the @gitlab/ui defaults
22
- */
23
- it('getConfig() works and has @gitlab/ui defaults', async () => {
24
- expect(getConfig()).toEqual({
25
- BPopover: {
26
- delay: {
27
- hide: 150,
28
- show: 50
29
- }
30
- },
31
- BTooltip: {
32
- boundaryPadding: 5,
33
- customClass: 'gl-tooltip',
34
- delay: {
35
- hide: 0,
36
- show: 500
37
- }
38
- }
39
- })
40
- })
41
-
42
- it('setConfig() works', async () => {
43
- const config = {
44
- BButton: { variant: 'danger' }
45
- }
46
- const breakpointsConfig = {
47
- breakpoints: ['aa', 'bb', 'cc', 'dd', 'ee']
48
- }
49
- expect(getConfig()).toEqual({})
50
-
51
- // Try a component config
52
- setConfig(config)
53
- expect(getConfig()).toEqual(config)
54
- expect(getConfig()).not.toBe(config)
55
- expect(getComponentConfig('BButton')).toEqual(config.BButton)
56
- expect(getComponentConfig('BButton')).not.toBe(config.BButton)
57
- expect(getComponentConfig('BButton', 'variant')).toEqual('danger')
58
-
59
- // Try breakpoint config (should merge)
60
- setConfig(breakpointsConfig)
61
- expect(getBreakpoints()).toEqual(breakpointsConfig.breakpoints)
62
- expect(getBreakpoints()).not.toBe(breakpointsConfig.breakpoints)
63
- expect(getConfigValue('breakpoints')).toEqual(breakpointsConfig.breakpoints)
64
- // should leave previous config
65
- expect(getComponentConfig('BButton', 'variant')).toEqual('danger')
66
- // Should merge config
67
- expect(getConfig()).toEqual({ ...config, ...breakpointsConfig })
68
-
69
- // Reset the configuration
70
- resetConfig()
71
- expect(getConfig()).toEqual({})
72
- })
73
-
74
- if (!isVue3) {
75
- it('config via Vue.use(ComponentPlugin) works', async () => {
76
- const localVue = createLocalVue()
77
- const config = {
78
- BButton: { variant: 'foobar' }
79
- }
80
-
81
- expect(getConfig()).toEqual({})
82
-
83
- localVue.use(ToastPlugin, config)
84
- expect(getConfig()).toEqual(config)
85
-
86
- // Reset the configuration
87
- resetConfig()
88
- expect(getConfig()).toEqual({})
89
- })
90
-
91
- it('config via Vue.use(BVConfig) works', async () => {
92
- const localVue = createLocalVue()
93
- const config = {
94
- BButton: { variant: 'foobar' }
95
- }
96
-
97
- expect(getConfig()).toEqual({})
98
-
99
- localVue.use(BVConfigPlugin, config)
100
- expect(getConfig()).toEqual(config)
101
-
102
- // Reset the configuration
103
- resetConfig()
104
- expect(getConfig()).toEqual({})
105
- })
106
- }
107
-
108
- it('getConfigValue() works', async () => {
109
- const config = {
110
- formControls: { size: 'sm' }
111
- }
112
- setConfig(config)
113
-
114
- expect(getConfigValue('formControls')).toEqual(config.formControls)
115
- // Should return a deep clone
116
- expect(getConfigValue('formControls')).not.toBe(config.formControls)
117
- // Shape of returned value should be the same each call
118
- expect(getConfigValue('formControls')).toEqual(getConfigValue('formControls'))
119
- // Should return undefined for not found
120
- expect(getConfigValue('foo.bar[1].baz')).toBeUndefined()
121
- })
122
-
123
- it('getComponentConfig() works', async () => {
124
- const config = {
125
- BButton: { variant: 'info' }
126
- }
127
- setConfig(config)
128
-
129
- // Specific component config key
130
- expect(getComponentConfig('BButton', 'variant')).toEqual('info')
131
- // Component's full config
132
- expect(getComponentConfig('BButton')).toEqual(config.BButton)
133
- // Should return a deep clone for full config
134
- expect(getComponentConfig('BButton')).not.toBe(config.BButton)
135
- // Should return empty object for not found component
136
- expect(getComponentConfig('foobar')).toEqual({})
137
- // Should return undefined for not found component key
138
- expect(getComponentConfig('BButton', 'foobar')).toBeUndefined()
139
- })
140
-
141
- it('getBreakpoints() works', async () => {
142
- const breakpointsConfig = {
143
- breakpoints: ['aa', 'bb', 'cc', 'dd', 'ee']
144
- }
145
-
146
- expect(getBreakpoints()).toEqual(['xs', 'sm', 'md', 'lg', 'xl'])
147
- // Should return a deep clone
148
- expect(getBreakpoints()).not.toBe(getBreakpoints())
149
-
150
- // Set new breakpoints
151
- setConfig(breakpointsConfig)
152
- expect(getBreakpoints()).toEqual(breakpointsConfig.breakpoints)
153
- // Should return a deep clone
154
- expect(getBreakpoints()).not.toBe(getBreakpoints())
155
- expect(getBreakpoints()).not.toBe(breakpointsConfig.breakpoints)
156
- })
157
-
158
- it('getBreakpointsUp() works', async () => {
159
- expect(getBreakpointsUp()).toEqual(['', 'sm', 'md', 'lg', 'xl'])
160
- // Should return a deep clone
161
- expect(getBreakpointsUp()).not.toBe(getBreakpointsUp())
162
- })
163
-
164
- it('getBreakpointsDown() works', async () => {
165
- expect(getBreakpointsDown()).toEqual(['xs', 'sm', 'md', 'lg', ''])
166
- // Should return a deep clone
167
- expect(getBreakpointsDown()).not.toBe(getBreakpointsDown())
168
- })
169
- })
@@ -1,82 +0,0 @@
1
- import { cssEscape } from './css-escape'
2
-
3
- describe('utils/cssEscape', () => {
4
- it('works', () => {
5
- expect(cssEscape('\0')).toBe('\uFFFD')
6
- expect(cssEscape('a\0')).toBe('a\uFFFD')
7
- expect(cssEscape('\0b')).toBe('\uFFFDb')
8
- expect(cssEscape('a\0b')).toBe('a\uFFFDb')
9
-
10
- expect(cssEscape('\uFFFD')).toBe('\uFFFD')
11
- expect(cssEscape('a\uFFFD')).toBe('a\uFFFD')
12
- expect(cssEscape('\uFFFDb')).toBe('\uFFFDb')
13
- expect(cssEscape('a\uFFFDb')).toBe('a\uFFFDb')
14
-
15
- expect(cssEscape(undefined)).toBe('')
16
- expect(cssEscape(null)).toBe('')
17
- expect(cssEscape(true)).toBe('true')
18
- expect(cssEscape(false)).toBe('false')
19
- expect(cssEscape('')).toBe('')
20
-
21
- expect(cssEscape('\x01\x02\x1E\x1F')).toBe('\\1 \\2 \\1e \\1f ')
22
-
23
- expect(cssEscape('0a')).toBe('\\30 a')
24
- expect(cssEscape('1a')).toBe('\\31 a')
25
- expect(cssEscape('2a')).toBe('\\32 a')
26
- expect(cssEscape('3a')).toBe('\\33 a')
27
- expect(cssEscape('4a')).toBe('\\34 a')
28
- expect(cssEscape('5a')).toBe('\\35 a')
29
- expect(cssEscape('6a')).toBe('\\36 a')
30
- expect(cssEscape('7a')).toBe('\\37 a')
31
- expect(cssEscape('8a')).toBe('\\38 a')
32
- expect(cssEscape('9a')).toBe('\\39 a')
33
-
34
- expect(cssEscape('a0b')).toBe('a0b')
35
- expect(cssEscape('a1b')).toBe('a1b')
36
- expect(cssEscape('a2b')).toBe('a2b')
37
- expect(cssEscape('a3b')).toBe('a3b')
38
- expect(cssEscape('a4b')).toBe('a4b')
39
- expect(cssEscape('a5b')).toBe('a5b')
40
- expect(cssEscape('a6b')).toBe('a6b')
41
- expect(cssEscape('a7b')).toBe('a7b')
42
- expect(cssEscape('a8b')).toBe('a8b')
43
- expect(cssEscape('a9b')).toBe('a9b')
44
-
45
- expect(cssEscape('-0a')).toBe('-\\30 a')
46
- expect(cssEscape('-1a')).toBe('-\\31 a')
47
- expect(cssEscape('-2a')).toBe('-\\32 a')
48
- expect(cssEscape('-3a')).toBe('-\\33 a')
49
- expect(cssEscape('-4a')).toBe('-\\34 a')
50
- expect(cssEscape('-5a')).toBe('-\\35 a')
51
- expect(cssEscape('-6a')).toBe('-\\36 a')
52
- expect(cssEscape('-7a')).toBe('-\\37 a')
53
- expect(cssEscape('-8a')).toBe('-\\38 a')
54
- expect(cssEscape('-9a')).toBe('-\\39 a')
55
-
56
- expect(cssEscape('-')).toBe('\\-')
57
- expect(cssEscape('-a')).toBe('-a')
58
- expect(cssEscape('--')).toBe('--')
59
- expect(cssEscape('--a')).toBe('--a')
60
-
61
- expect(cssEscape('\x80\x2D\x5F\xA9')).toBe('\x80\x2D\x5F\xA9')
62
- expect(
63
- cssEscape(
64
- '\x7F\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F'
65
- )
66
- ).toBe(
67
- '\\7f \x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F'
68
- )
69
- expect(cssEscape('\xA0\xA1\xA2')).toBe('\xA0\xA1\xA2')
70
- expect(cssEscape('a0123456789b')).toBe('a0123456789b')
71
- expect(cssEscape('abcdefghijklmnopqrstuvwxyz')).toBe('abcdefghijklmnopqrstuvwxyz')
72
- expect(cssEscape('ABCDEFGHIJKLMNOPQRSTUVWXYZ')).toBe('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
73
-
74
- expect(cssEscape('\x20\x21\x78\x79')).toBe('\\ \\!xy')
75
-
76
- // Astral symbol (U+1D306 TETRAGRAM FOR CENTRE)
77
- expect(cssEscape('\uD834\uDF06')).toBe('\uD834\uDF06')
78
- // Lone surrogates
79
- expect(cssEscape('\uDF06')).toBe('\uDF06')
80
- expect(cssEscape('\uD834')).toBe('\uD834')
81
- })
82
- })
@@ -1,291 +0,0 @@
1
- import { mount } from '@vue/test-utils'
2
- import {
3
- closest,
4
- contains,
5
- getAttr,
6
- getStyle,
7
- hasAttr,
8
- hasClass,
9
- isDisabled,
10
- isElement,
11
- matches,
12
- select,
13
- selectAll
14
- } from './dom'
15
-
16
- const template = `
17
- <div id="a" class="foo">
18
- <div class="bar">
19
- <span class="barspan foobar" style="color: red;"></span>
20
- </div>
21
- <div class="baz">
22
- <button id="button1" aria-label="label">btn 1</button>
23
- <button id="button2">btn 1</button>
24
- <button id="button3" disabled>btn 1</button>
25
- </div>
26
- </div>
27
- `
28
- const App = { template }
29
-
30
- describe('utils/dom', () => {
31
- it('isElement() works', async () => {
32
- const wrapper = mount(App, {
33
- attachTo: document.body
34
- })
35
-
36
- expect(wrapper).toBeDefined()
37
- expect(wrapper.find('div.foo').exists()).toBe(true)
38
- expect(isElement(wrapper.element)).toBe(true)
39
- expect(isElement(null)).toBe(false)
40
- expect(isElement(App)).toBe(false)
41
-
42
- wrapper.destroy()
43
- })
44
-
45
- it('isDisabled() works', async () => {
46
- const wrapper = mount(App, {
47
- attachTo: document.body
48
- })
49
-
50
- expect(wrapper).toBeDefined()
51
-
52
- const $btns = wrapper.findAll('div.baz > button')
53
- expect($btns).toBeDefined()
54
- expect($btns.length).toBe(3)
55
- expect(isDisabled($btns.at(0).element)).toBe(false)
56
- expect(isDisabled($btns.at(1).element)).toBe(false)
57
- expect(isDisabled($btns.at(2).element)).toBe(true)
58
-
59
- wrapper.destroy()
60
- })
61
-
62
- it('hasClass() works', async () => {
63
- const wrapper = mount(App, {
64
- attachTo: document.body
65
- })
66
-
67
- expect(wrapper).toBeDefined()
68
-
69
- const $span = wrapper.find('span.barspan')
70
- expect($span).toBeDefined()
71
- expect($span.exists()).toBe(true)
72
- expect(hasClass($span.element, 'barspan')).toBe(true)
73
- expect(hasClass($span.element, 'foobar')).toBe(true)
74
- expect(hasClass($span.element, 'fizzle-rocks')).toBe(false)
75
- expect(hasClass(null, 'foobar')).toBe(false)
76
-
77
- wrapper.destroy()
78
- })
79
-
80
- it('contains() works', async () => {
81
- const wrapper = mount(App, {
82
- attachTo: document.body
83
- })
84
-
85
- expect(wrapper).toBeDefined()
86
-
87
- const $span = wrapper.find('span.barspan')
88
- expect($span).toBeDefined()
89
- expect($span.exists()).toBe(true)
90
- const $btn1 = wrapper.find('button#button1')
91
- expect($btn1).toBeDefined()
92
- expect($btn1.exists()).toBe(true)
93
-
94
- expect(contains(wrapper.element, $span.element)).toBe(true)
95
- expect(contains(wrapper.element, $btn1.element)).toBe(true)
96
- expect(contains($span.element, $btn1.element)).toBe(false)
97
- expect(contains(null, $btn1.element)).toBe(false)
98
-
99
- wrapper.destroy()
100
- })
101
-
102
- it('closest() works', async () => {
103
- const wrapper = mount(App, {
104
- attachTo: document.body
105
- })
106
-
107
- expect(wrapper).toBeDefined()
108
-
109
- const $btns = wrapper.findAll('div.baz > button')
110
- expect($btns).toBeDefined()
111
- expect($btns.length).toBe(3)
112
-
113
- expect(closest('div.foo', $btns.at(0).element)).toBeDefined()
114
- expect(closest('div.foo', $btns.at(0).element)).toBe(wrapper.element)
115
- expect(closest('div.foo', null)).toBe(null)
116
-
117
- const $baz = wrapper.find('div.baz')
118
- expect($baz).toBeDefined()
119
- expect($baz.exists()).toBe(true)
120
- expect(closest('div.baz', $btns.at(0).element)).toBeDefined()
121
- expect(closest('div.baz', $btns.at(0).element)).toBe($baz.element)
122
- expect(closest('div.not-here', $btns.at(0).element)).toBe(null)
123
- expect(closest('div.baz', $baz.element)).toBe(null)
124
- expect(closest('div.baz', $baz.element, true)).toBe($baz.element)
125
-
126
- wrapper.destroy()
127
- })
128
-
129
- it('matches() works', async () => {
130
- const wrapper = mount(App, {
131
- attachTo: document.body
132
- })
133
-
134
- expect(wrapper).toBeDefined()
135
-
136
- const $btns = wrapper.findAll('div.baz > button')
137
- expect($btns).toBeDefined()
138
- expect($btns.length).toBe(3)
139
-
140
- expect(matches($btns.at(0).element, 'button[disabled]')).toBe(false)
141
- expect(matches($btns.at(1).element, 'button[disabled]')).toBe(false)
142
- expect(matches($btns.at(2).element, 'button[disabled]')).toBe(true)
143
- expect(matches($btns.at(0).element, 'div.baz button')).toBe(true)
144
- expect(matches($btns.at(0).element, 'div.baz > button')).toBe(true)
145
- expect(matches($btns.at(0).element, '.foo > div.baz > button')).toBe(true)
146
- expect(matches($btns.at(0).element, 'div.foo button')).toBe(true)
147
- expect(matches($btns.at(0).element, 'div.foo > button')).toBe(false)
148
- expect(matches($btns.at(0).element, 'div.bar > button')).toBe(false)
149
- expect(matches($btns.at(0).element, 'button#button1')).toBe(true)
150
- expect(matches(null, 'div.foo')).toBe(false)
151
-
152
- wrapper.destroy()
153
- })
154
-
155
- it('hasAttr() works', async () => {
156
- const wrapper = mount(App, {
157
- attachTo: document.body
158
- })
159
-
160
- expect(wrapper).toBeDefined()
161
-
162
- const $btns = wrapper.findAll('div.baz > button')
163
- expect($btns).toBeDefined()
164
- expect($btns.length).toBe(3)
165
-
166
- expect(hasAttr($btns.at(0).element, 'disabled')).toBe(false)
167
- expect(hasAttr($btns.at(0).element, 'aria-label')).toBe(true)
168
- expect(hasAttr($btns.at(1).element, 'disabled')).toBe(false)
169
- expect(hasAttr($btns.at(2).element, 'disabled')).toBe(true)
170
- expect(hasAttr($btns.at(2).element, 'role')).toBe(false)
171
- expect(hasAttr(null, 'role')).toBe(null)
172
-
173
- wrapper.destroy()
174
- })
175
-
176
- it('getAttr() works', async () => {
177
- const wrapper = mount(App, {
178
- attachTo: document.body
179
- })
180
-
181
- expect(wrapper).toBeDefined()
182
-
183
- const $btns = wrapper.findAll('div.baz > button')
184
- expect($btns).toBeDefined()
185
- expect($btns.length).toBe(3)
186
-
187
- expect(getAttr($btns.at(0).element, 'aria-label')).toBe('label')
188
- expect(getAttr($btns.at(0).element, 'id')).toBe('button1')
189
- expect(getAttr($btns.at(1).element, 'aria-label')).toBe(null)
190
- expect(getAttr($btns.at(1).element, 'id')).toBe('button2')
191
- expect(getAttr($btns.at(2).element, 'aria-label')).toBe(null)
192
- expect(getAttr($btns.at(2).element, 'id')).toBe('button3')
193
- expect(getAttr(null, 'role')).toBe(null)
194
- expect(getAttr($btns.at(0).element, '')).toBe(null)
195
- expect(getAttr($btns.at(0).element, undefined)).toBe(null)
196
-
197
- wrapper.destroy()
198
- })
199
-
200
- it('getStyle() works', async () => {
201
- const wrapper = mount(App, {
202
- attachTo: document.body
203
- })
204
-
205
- expect(wrapper).toBeDefined()
206
-
207
- const $span = wrapper.find('span.barspan')
208
- expect($span).toBeDefined()
209
- expect($span.exists()).toBe(true)
210
- expect(getStyle($span.element, 'color')).toBe('red')
211
- expect(getStyle($span.element, 'width')).toBe(null)
212
- expect(getStyle(null, 'color')).toBe(null)
213
-
214
- wrapper.destroy()
215
- })
216
-
217
- it('select() works', async () => {
218
- const wrapper = mount(App, {
219
- attachTo: document.body
220
- })
221
-
222
- expect(wrapper).toBeDefined()
223
-
224
- const $btns = wrapper.findAll('div.baz > button')
225
- expect($btns).toBeDefined()
226
- expect($btns.length).toBe(3)
227
-
228
- // With root element specified
229
- expect(select('button', wrapper.element)).toBe($btns.at(0).element)
230
- expect(select('button#button3', wrapper.element)).toBe($btns.at(2).element)
231
- expect(select('span.not-here', wrapper.element)).toBe(null)
232
-
233
- // Note: It appears that `vue-test-utils` is not detaching previous
234
- // app instances and elements once the test is complete!
235
- expect(select('button')).not.toBe(null)
236
- expect(select('button')).toBe($btns.at(0).element)
237
- expect(select('button#button3')).not.toBe(null)
238
- expect(select('button#button3')).toBe($btns.at(2).element)
239
- expect(select('span.not-here')).toBe(null)
240
-
241
- wrapper.destroy()
242
- })
243
-
244
- it('selectAll() works', async () => {
245
- const wrapper = mount(App, {
246
- attachTo: document.body
247
- })
248
-
249
- expect(wrapper).toBeDefined()
250
-
251
- const $btns = wrapper.findAll('div.baz > button')
252
- expect($btns).toBeDefined()
253
- expect($btns.length).toBe(3)
254
-
255
- // With root element specified
256
- expect(Array.isArray(selectAll('button', wrapper.element))).toBe(true)
257
- expect(selectAll('button', wrapper.element).length).toBe(3)
258
- expect(selectAll('button', wrapper.element)[0]).toBe($btns.at(0).element)
259
- expect(selectAll('button', wrapper.element)[1]).toBe($btns.at(1).element)
260
- expect(selectAll('button', wrapper.element)[2]).toBe($btns.at(2).element)
261
-
262
- expect(Array.isArray(selectAll('button.fake', wrapper.element))).toBe(true)
263
- expect(selectAll('button.fake', wrapper.element).length).toBe(0)
264
-
265
- expect(selectAll('div.baz button', wrapper.element).length).toBe(3)
266
- expect(selectAll('div.baz button', wrapper.element)[0]).toBe($btns.at(0).element)
267
- expect(selectAll('div.baz button', wrapper.element)[1]).toBe($btns.at(1).element)
268
- expect(selectAll('div.baz button', wrapper.element)[2]).toBe($btns.at(2).element)
269
-
270
- // Without root element specified (assumes document as root)
271
- // Note: It appears that `vue-test-utils` is not detaching previous
272
- // app instances and elements once the test is complete!
273
- expect(Array.isArray(selectAll('button'))).toBe(true)
274
- expect(selectAll('button')).not.toEqual([])
275
- expect(selectAll('button').length).toBe(3)
276
- expect(selectAll('button')[0]).toBe($btns.at(0).element)
277
- expect(selectAll('button')[1]).toBe($btns.at(1).element)
278
- expect(selectAll('button')[2]).toBe($btns.at(2).element)
279
-
280
- expect(Array.isArray(selectAll('button.fake'))).toBe(true)
281
- expect(selectAll('button.fake').length).toBe(0)
282
-
283
- expect(selectAll('div.baz button')).not.toEqual([])
284
- expect(selectAll('div.baz button').length).toBe(3)
285
- expect(selectAll('div.baz button')[0]).toBe($btns.at(0).element)
286
- expect(selectAll('div.baz button')[1]).toBe($btns.at(1).element)
287
- expect(selectAll('div.baz button')[2]).toBe($btns.at(2).element)
288
-
289
- wrapper.destroy()
290
- })
291
- })
@@ -1,41 +0,0 @@
1
- import { HAS_PASSIVE_EVENT_SUPPORT } from '../constants/env'
2
- import { parseEventOptions } from './events'
3
-
4
- describe('utils/events', () => {
5
- it('event options parsing works', async () => {
6
- // JSDOM probably does not support passive mode
7
- if (HAS_PASSIVE_EVENT_SUPPORT) {
8
- // Converts boolean to object
9
- expect(parseEventOptions(true)).toEqual({ capture: true })
10
- expect(parseEventOptions(false)).toEqual({ capture: false })
11
- expect(parseEventOptions()).toEqual({ capture: false })
12
-
13
- // Parses object correctly (returns as-is)
14
- expect(parseEventOptions({ capture: false })).toEqual({ capture: false })
15
- expect(parseEventOptions({ capture: true })).toEqual({ capture: true })
16
- expect(parseEventOptions({})).toEqual({})
17
- expect(parseEventOptions({ capture: false, foobar: true })).toEqual({
18
- capture: false,
19
- foobar: true
20
- })
21
- expect(parseEventOptions({ capture: true, foobar: false })).toEqual({
22
- capture: true,
23
- foobar: false
24
- })
25
- } else {
26
- // Converts non object to boolean
27
- expect(parseEventOptions(true)).toEqual(true)
28
- expect(parseEventOptions(false)).toEqual(false)
29
- expect(parseEventOptions()).toEqual(false)
30
- expect(parseEventOptions(null)).toEqual(false)
31
- // Converts object to boolean
32
- expect(parseEventOptions({ capture: false })).toEqual(false)
33
- expect(parseEventOptions({ capture: true })).toEqual(true)
34
- expect(parseEventOptions({})).toEqual(false)
35
- expect(parseEventOptions({ capture: false, foobar: true })).toEqual(false)
36
- expect(parseEventOptions({ capture: true, foobar: true })).toEqual(true)
37
- expect(parseEventOptions({ foobar: true })).toEqual(false)
38
- expect(parseEventOptions({ foobar: false })).toEqual(false)
39
- }
40
- })
41
- })