@telus-uds/components-base 1.26.0 → 1.28.0
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.
- package/CHANGELOG.md +28 -2
- package/component-docs.json +2 -1
- package/lib/Carousel/dictionary.js +6 -6
- package/lib-module/Carousel/dictionary.js +6 -6
- package/package.json +2 -2
- package/src/Carousel/dictionary.js +6 -6
- package/.eslintrc.js +0 -9
- package/__tests17__/A11yText/A11yText.test.jsx +0 -34
- package/__tests17__/ActivityIndicator/ActivityIndicator.test.jsx +0 -68
- package/__tests17__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +0 -299
- package/__tests17__/Box/Box.test.jsx +0 -111
- package/__tests17__/Button/Button.test.jsx +0 -86
- package/__tests17__/Button/ButtonBase.test.jsx +0 -82
- package/__tests17__/Button/ButtonGroup.test.jsx +0 -347
- package/__tests17__/Button/ButtonLink.test.jsx +0 -61
- package/__tests17__/Card/Card.test.jsx +0 -63
- package/__tests17__/Carousel/Carousel.test.jsx +0 -128
- package/__tests17__/Carousel/CarouselTabs.test.jsx +0 -142
- package/__tests17__/Checkbox/Checkbox.test.jsx +0 -94
- package/__tests17__/Checkbox/CheckboxGroup.test.jsx +0 -246
- package/__tests17__/Divider/Divider.test.jsx +0 -91
- package/__tests17__/ExpandCollapse/ExpandCollapse.test.jsx +0 -109
- package/__tests17__/Feedback/Feedback.test.jsx +0 -42
- package/__tests17__/FlexGrid/Col.test.jsx +0 -261
- package/__tests17__/FlexGrid/FlexGrid.test.jsx +0 -136
- package/__tests17__/FlexGrid/Row.test.jsx +0 -273
- package/__tests17__/HorizontalScroll/HorizontalScroll.test.jsx +0 -165
- package/__tests17__/Icon/Icon.test.jsx +0 -61
- package/__tests17__/IconButton/IconButton.test.jsx +0 -52
- package/__tests17__/InputLabel/InputLabel.test.jsx +0 -28
- package/__tests17__/InputLabel/__snapshots__/InputLabel.test.jsx.snap +0 -3
- package/__tests17__/InputSupports/InputSupports.test.jsx +0 -60
- package/__tests17__/Link/Link.test.jsx +0 -63
- package/__tests17__/Link/TextButton.test.jsx +0 -35
- package/__tests17__/List/List.test.jsx +0 -82
- package/__tests17__/Modal/Modal.test.jsx +0 -47
- package/__tests17__/Notification/Notification.test.jsx +0 -20
- package/__tests17__/Pagination/Pagination.test.jsx +0 -160
- package/__tests17__/Progress/Progress.test.jsx +0 -79
- package/__tests17__/Radio/Radio.test.jsx +0 -87
- package/__tests17__/Radio/RadioGroup.test.jsx +0 -220
- package/__tests17__/RadioCard/RadioCard.test.jsx +0 -87
- package/__tests17__/RadioCard/RadioCardGroup.test.jsx +0 -246
- package/__tests17__/Search/Search.test.jsx +0 -87
- package/__tests17__/Select/Select.test.jsx +0 -94
- package/__tests17__/SideNav/SideNav.test.jsx +0 -110
- package/__tests17__/Skeleton/Skeleton.test.jsx +0 -61
- package/__tests17__/SkipLink/SkipLink.test.jsx +0 -61
- package/__tests17__/Spacer/Spacer.test.jsx +0 -63
- package/__tests17__/StackView/StackView.test.jsx +0 -211
- package/__tests17__/StackView/StackWrap.test.jsx +0 -47
- package/__tests17__/StackView/getStackedContent.test.jsx +0 -295
- package/__tests17__/StepTracker/StepTracker.test.jsx +0 -108
- package/__tests17__/Tabs/Tabs.test.jsx +0 -49
- package/__tests17__/Tags/Tags.test.jsx +0 -327
- package/__tests17__/TextInput/TextArea.test.jsx +0 -35
- package/__tests17__/TextInput/TextInputBase.test.jsx +0 -125
- package/__tests17__/ThemeProvider/ThemeProvider.test.jsx +0 -82
- package/__tests17__/ThemeProvider/useThemeTokens.test.jsx +0 -514
- package/__tests17__/ThemeProvider/utils/theme-tokens.test.js +0 -41
- package/__tests17__/ToggleSwitch/ToggleSwitch.test.jsx +0 -82
- package/__tests17__/ToggleSwitch/ToggleSwitchGroup.test.jsx +0 -192
- package/__tests17__/Tooltip/Tooltip.test.jsx +0 -65
- package/__tests17__/Tooltip/getTooltipPosition.test.js +0 -79
- package/__tests17__/Typography/typography.test.jsx +0 -90
- package/__tests17__/utils/children.test.jsx +0 -128
- package/__tests17__/utils/containUniqueFields.test.js +0 -25
- package/__tests17__/utils/input.test.js +0 -375
- package/__tests17__/utils/props.test.js +0 -36
- package/__tests17__/utils/semantics.test.jsx +0 -34
- package/__tests17__/utils/useCopy.test.js +0 -42
- package/__tests17__/utils/useResponsiveProp.test.jsx +0 -202
- package/__tests17__/utils/useSpacingScale.test.jsx +0 -273
- package/__tests17__/utils/useUniqueId.test.js +0 -31
|
@@ -1,273 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import { renderHook } from '@testing-library/react-hooks'
|
|
3
|
-
import { useSpacingScale } from '../../src/utils'
|
|
4
|
-
import Theme from '../../__fixtures__/Theme'
|
|
5
|
-
import Viewport from '../../__fixtures__/Viewport'
|
|
6
|
-
|
|
7
|
-
describe('useSpacingScale', () => {
|
|
8
|
-
// values from testTheme.js
|
|
9
|
-
const expectedDefaultScale = [0, 4, 8, 16, 24, 32, 36]
|
|
10
|
-
const expectedCompactScale = [0, 2, 4, 6, 8, 10, 12]
|
|
11
|
-
const expectedResponsiveScale = {
|
|
12
|
-
xs: [0, 1, 2, 3, 4, 5, 6],
|
|
13
|
-
sm: [0, 3, 4, 5, 6, 7, 8],
|
|
14
|
-
md: [0, 3, 4, 5, 6, 7, 8],
|
|
15
|
-
lg: [0, 7, 8, 9, 10, 11, 12],
|
|
16
|
-
xl: [0, 7, 8, 9, 10, 11, 12]
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const wrapper = ({ children, viewport }) => (
|
|
20
|
-
<Viewport viewport={viewport}>
|
|
21
|
-
<Theme>{children}</Theme>
|
|
22
|
-
</Viewport>
|
|
23
|
-
)
|
|
24
|
-
|
|
25
|
-
it.each(expectedDefaultScale.map((item, index) => [item, index]))(
|
|
26
|
-
'returns the expected size index %# from the theme spacing scale',
|
|
27
|
-
(expectedSize, index) => {
|
|
28
|
-
const { result } = renderHook(() => useSpacingScale(index), {
|
|
29
|
-
wrapper
|
|
30
|
-
})
|
|
31
|
-
expect(result.current).toBe(expectedSize)
|
|
32
|
-
}
|
|
33
|
-
)
|
|
34
|
-
it.each(expectedCompactScale.map((item, index) => [item, index]))(
|
|
35
|
-
'returns the expected size index %# from the theme spacing scale in a variant',
|
|
36
|
-
(expectedSize, index) => {
|
|
37
|
-
const { result } = renderHook(
|
|
38
|
-
() => useSpacingScale({ space: index, options: { variant: { compact: true } } }),
|
|
39
|
-
{
|
|
40
|
-
wrapper
|
|
41
|
-
}
|
|
42
|
-
)
|
|
43
|
-
expect(result.current).toBe(expectedSize)
|
|
44
|
-
}
|
|
45
|
-
)
|
|
46
|
-
it.each(Object.entries(expectedResponsiveScale))(
|
|
47
|
-
'returns appropriate sizes from a responsive theme variant at %p viewport',
|
|
48
|
-
(viewport, expectedValues) => {
|
|
49
|
-
const { result, rerender } = renderHook(({ spacingValue }) => useSpacingScale(spacingValue), {
|
|
50
|
-
wrapper
|
|
51
|
-
})
|
|
52
|
-
expectedValues.forEach((expectedSize, index) => {
|
|
53
|
-
rerender({
|
|
54
|
-
viewport,
|
|
55
|
-
spacingValue: { space: index, options: { variant: { responsive: true } } }
|
|
56
|
-
})
|
|
57
|
-
expect(result.current).toBe(expectedSize)
|
|
58
|
-
})
|
|
59
|
-
}
|
|
60
|
-
)
|
|
61
|
-
|
|
62
|
-
it('returns the 0 index when passed a nullish spacing value', () => {
|
|
63
|
-
const { result, rerender } = renderHook((spacingValue) => useSpacingScale(spacingValue), {
|
|
64
|
-
wrapper
|
|
65
|
-
})
|
|
66
|
-
// implicit undefined
|
|
67
|
-
expect(result.current).toBe(expectedDefaultScale[0])
|
|
68
|
-
// explicit undefined
|
|
69
|
-
rerender(undefined)
|
|
70
|
-
expect(result.current).toBe(expectedDefaultScale[0])
|
|
71
|
-
rerender(null)
|
|
72
|
-
expect(result.current).toBe(expectedDefaultScale[0])
|
|
73
|
-
|
|
74
|
-
// confim this test isn't a false positive misuing rerender etc
|
|
75
|
-
rerender(1)
|
|
76
|
-
expect(result.current).toBe(expectedDefaultScale[1])
|
|
77
|
-
})
|
|
78
|
-
it('returns the 0 index when passed a nullish spacing value in a variant', () => {
|
|
79
|
-
const { result, rerender } = renderHook((spacingValue) => useSpacingScale(spacingValue), {
|
|
80
|
-
wrapper,
|
|
81
|
-
initialProps: { options: { variant: { compact: true } } }
|
|
82
|
-
})
|
|
83
|
-
// implicit undefined
|
|
84
|
-
expect(result.current).toBe(expectedCompactScale[0])
|
|
85
|
-
// explicit undefined
|
|
86
|
-
rerender({ space: undefined, options: { variant: { compact: true } } })
|
|
87
|
-
expect(result.current).toBe(expectedCompactScale[0])
|
|
88
|
-
rerender({ space: null, options: { variant: { compact: true } } })
|
|
89
|
-
expect(result.current).toBe(expectedCompactScale[0])
|
|
90
|
-
|
|
91
|
-
// confim this test isn't a false positive misuing rerender etc
|
|
92
|
-
rerender({ space: 1, options: { variant: { compact: true } } })
|
|
93
|
-
expect(result.current).toBe(expectedCompactScale[1])
|
|
94
|
-
})
|
|
95
|
-
|
|
96
|
-
it('returns the highest index when passed an out-of-bounds spacing index', () => {
|
|
97
|
-
const { result } = renderHook(() => useSpacingScale(99), {
|
|
98
|
-
wrapper
|
|
99
|
-
})
|
|
100
|
-
expect(result.current).toBe(expectedDefaultScale[expectedDefaultScale.length - 1])
|
|
101
|
-
})
|
|
102
|
-
it('returns the highest index when passed an out-of-bounds spacing index in a variant', () => {
|
|
103
|
-
const { result } = renderHook(
|
|
104
|
-
() => useSpacingScale({ space: 99, options: { variant: { compact: true } } }),
|
|
105
|
-
{
|
|
106
|
-
wrapper
|
|
107
|
-
}
|
|
108
|
-
)
|
|
109
|
-
expect(result.current).toBe(expectedCompactScale[expectedDefaultScale.length - 1])
|
|
110
|
-
})
|
|
111
|
-
|
|
112
|
-
it('returns viewport indexes that explicitly match current viewport', () => {
|
|
113
|
-
const spacingValue = { xs: 1, sm: 2, md: 3, lg: 4, xl: 5 }
|
|
114
|
-
const { rerender, result } = renderHook((args) => useSpacingScale(args.spacingValue), {
|
|
115
|
-
wrapper,
|
|
116
|
-
initialProps: { viewport: 'xs', spacingValue }
|
|
117
|
-
})
|
|
118
|
-
expect(result.current).toBe(expectedDefaultScale[1])
|
|
119
|
-
rerender({ viewport: 'sm', spacingValue })
|
|
120
|
-
expect(result.current).toBe(expectedDefaultScale[2])
|
|
121
|
-
rerender({ viewport: 'md', spacingValue })
|
|
122
|
-
expect(result.current).toBe(expectedDefaultScale[3])
|
|
123
|
-
rerender({ viewport: 'lg', spacingValue })
|
|
124
|
-
expect(result.current).toBe(expectedDefaultScale[4])
|
|
125
|
-
rerender({ viewport: 'xl', spacingValue })
|
|
126
|
-
expect(result.current).toBe(expectedDefaultScale[5])
|
|
127
|
-
})
|
|
128
|
-
it('returns viewport indexes that explicitly match current viewport in a variant', () => {
|
|
129
|
-
const spacingValue = {
|
|
130
|
-
xs: 1,
|
|
131
|
-
sm: 2,
|
|
132
|
-
md: 3,
|
|
133
|
-
lg: 4,
|
|
134
|
-
xl: 5,
|
|
135
|
-
options: { variant: { compact: true } }
|
|
136
|
-
}
|
|
137
|
-
const { rerender, result } = renderHook((args) => useSpacingScale(args.spacingValue), {
|
|
138
|
-
wrapper,
|
|
139
|
-
initialProps: { viewport: 'xs', spacingValue }
|
|
140
|
-
})
|
|
141
|
-
expect(result.current).toBe(expectedCompactScale[1])
|
|
142
|
-
rerender({ viewport: 'sm', spacingValue })
|
|
143
|
-
expect(result.current).toBe(expectedCompactScale[2])
|
|
144
|
-
rerender({ viewport: 'md', spacingValue })
|
|
145
|
-
expect(result.current).toBe(expectedCompactScale[3])
|
|
146
|
-
rerender({ viewport: 'lg', spacingValue })
|
|
147
|
-
expect(result.current).toBe(expectedCompactScale[4])
|
|
148
|
-
rerender({ viewport: 'xl', spacingValue })
|
|
149
|
-
expect(result.current).toBe(expectedCompactScale[5])
|
|
150
|
-
})
|
|
151
|
-
|
|
152
|
-
it('returns viewport indexes that implicitly match current viewport', () => {
|
|
153
|
-
const spacingValue = { xs: 1, md: 3 }
|
|
154
|
-
const { rerender, result } = renderHook((args) => useSpacingScale(args.spacingValue), {
|
|
155
|
-
wrapper,
|
|
156
|
-
initialProps: { viewport: 'xs', spacingValue }
|
|
157
|
-
})
|
|
158
|
-
expect(result.current).toBe(expectedDefaultScale[1])
|
|
159
|
-
rerender({ viewport: 'sm', spacingValue })
|
|
160
|
-
expect(result.current).toBe(expectedDefaultScale[1])
|
|
161
|
-
rerender({ viewport: 'md', spacingValue })
|
|
162
|
-
expect(result.current).toBe(expectedDefaultScale[3])
|
|
163
|
-
rerender({ viewport: 'lg', spacingValue })
|
|
164
|
-
expect(result.current).toBe(expectedDefaultScale[3])
|
|
165
|
-
rerender({ viewport: 'xl', spacingValue })
|
|
166
|
-
expect(result.current).toBe(expectedDefaultScale[3])
|
|
167
|
-
})
|
|
168
|
-
it('returns viewport indexes that implicitly match current viewport in a variant', () => {
|
|
169
|
-
const spacingValue = { xs: 1, md: 3, options: { variant: { compact: true } } }
|
|
170
|
-
const { rerender, result } = renderHook((args) => useSpacingScale(args.spacingValue), {
|
|
171
|
-
wrapper,
|
|
172
|
-
initialProps: { viewport: 'xs', spacingValue }
|
|
173
|
-
})
|
|
174
|
-
expect(result.current).toBe(expectedCompactScale[1])
|
|
175
|
-
rerender({ viewport: 'sm', spacingValue })
|
|
176
|
-
expect(result.current).toBe(expectedCompactScale[1])
|
|
177
|
-
rerender({ viewport: 'md', spacingValue })
|
|
178
|
-
expect(result.current).toBe(expectedCompactScale[3])
|
|
179
|
-
rerender({ viewport: 'lg', spacingValue })
|
|
180
|
-
expect(result.current).toBe(expectedCompactScale[3])
|
|
181
|
-
rerender({ viewport: 'xl', spacingValue })
|
|
182
|
-
expect(result.current).toBe(expectedCompactScale[3])
|
|
183
|
-
})
|
|
184
|
-
|
|
185
|
-
it('chooses smallest provided viewport index if viewport is unavailable', () => {
|
|
186
|
-
const spacingValue = { xs: 1, sm: 2, md: 3, lg: 4, xl: 5 }
|
|
187
|
-
const { result } = renderHook((args) => useSpacingScale(args.spacingValue), {
|
|
188
|
-
wrapper,
|
|
189
|
-
initialProps: { viewport: null, spacingValue }
|
|
190
|
-
})
|
|
191
|
-
expect(result.current).toBe(expectedDefaultScale[1])
|
|
192
|
-
})
|
|
193
|
-
it('chooses 0 index if current viewport matches no provided index', () => {
|
|
194
|
-
const spacingValue = { lg: 4 }
|
|
195
|
-
const { result, rerender } = renderHook((args) => useSpacingScale(args.spacingValue), {
|
|
196
|
-
wrapper,
|
|
197
|
-
initialProps: { viewport: 'xs', spacingValue }
|
|
198
|
-
})
|
|
199
|
-
expect(result.current).toBe(expectedDefaultScale[0])
|
|
200
|
-
rerender({ viewport: 'sm', spacingValue })
|
|
201
|
-
expect(result.current).toBe(expectedDefaultScale[0])
|
|
202
|
-
rerender({ viewport: 'md', spacingValue })
|
|
203
|
-
expect(result.current).toBe(expectedDefaultScale[0])
|
|
204
|
-
rerender({ viewport: 'lg', spacingValue })
|
|
205
|
-
expect(result.current).toBe(expectedDefaultScale[4])
|
|
206
|
-
rerender({ viewport: 'xl', spacingValue })
|
|
207
|
-
expect(result.current).toBe(expectedDefaultScale[4])
|
|
208
|
-
})
|
|
209
|
-
|
|
210
|
-
it('subtracts a provided value from a spacing scale value', () => {
|
|
211
|
-
const spacingValue = { viewport: 'xs', space: 2, options: { subtract: 3 } }
|
|
212
|
-
const { result } = renderHook(() => useSpacingScale(spacingValue), {
|
|
213
|
-
wrapper
|
|
214
|
-
})
|
|
215
|
-
expect(result.current).toBe(expectedDefaultScale[2] - 3)
|
|
216
|
-
})
|
|
217
|
-
it('subtracts a provided value from a spacing scale value in a variant', () => {
|
|
218
|
-
const spacingValue = {
|
|
219
|
-
space: 4,
|
|
220
|
-
options: { subtract: 3, variant: { compact: true } }
|
|
221
|
-
}
|
|
222
|
-
const { result } = renderHook(() => useSpacingScale(spacingValue), {
|
|
223
|
-
wrapper
|
|
224
|
-
})
|
|
225
|
-
expect(result.current).toBe(expectedCompactScale[4] - 3)
|
|
226
|
-
})
|
|
227
|
-
it('returns 0 if a subtraction would result in a negative number', () => {
|
|
228
|
-
const spacingValue = { space: 2, options: { subtract: 999 } }
|
|
229
|
-
const { result } = renderHook((args) => useSpacingScale(args.spacingValue), {
|
|
230
|
-
wrapper,
|
|
231
|
-
initialProps: { spacingValue }
|
|
232
|
-
})
|
|
233
|
-
expect(result.current).toBe(0)
|
|
234
|
-
})
|
|
235
|
-
|
|
236
|
-
it('gives an exact amount if `size` option is passed', () => {
|
|
237
|
-
const size = 123456
|
|
238
|
-
const spacingValue = { xs: 1, sm: 2, md: 3, lg: 4, xl: 5, options: { size } }
|
|
239
|
-
const compactSpacingValue = { ...spacingValue, options: { size, variant: { compact: true } } }
|
|
240
|
-
const { result, rerender } = renderHook((args) => useSpacingScale(args.spacingValue), {
|
|
241
|
-
wrapper,
|
|
242
|
-
initialProps: { viewport: 'xs', spacingValue }
|
|
243
|
-
})
|
|
244
|
-
expect(result.current).toBe(size)
|
|
245
|
-
rerender({ viewport: 'sm', spacingValue })
|
|
246
|
-
expect(result.current).toBe(size)
|
|
247
|
-
rerender({ viewport: 'md', spacingValue })
|
|
248
|
-
expect(result.current).toBe(size)
|
|
249
|
-
rerender({ viewport: 'lg', spacingValue })
|
|
250
|
-
expect(result.current).toBe(size)
|
|
251
|
-
rerender({ viewport: 'xl', spacingValue })
|
|
252
|
-
expect(result.current).toBe(size)
|
|
253
|
-
rerender({ viewport: 'xs', spacingValue: compactSpacingValue })
|
|
254
|
-
expect(result.current).toBe(size)
|
|
255
|
-
rerender({ viewport: 'sm', spacingValue: compactSpacingValue })
|
|
256
|
-
expect(result.current).toBe(size)
|
|
257
|
-
rerender({ viewport: 'md', spacingValue: compactSpacingValue })
|
|
258
|
-
expect(result.current).toBe(size)
|
|
259
|
-
rerender({ viewport: 'lg', spacingValue: compactSpacingValue })
|
|
260
|
-
expect(result.current).toBe(size)
|
|
261
|
-
rerender({ viewport: 'xl', spacingValue: compactSpacingValue })
|
|
262
|
-
expect(result.current).toBe(size)
|
|
263
|
-
})
|
|
264
|
-
it('subtracts from size if `subtract` and `size` options are provided', () => {
|
|
265
|
-
const size = 123456
|
|
266
|
-
const subtract = 12345
|
|
267
|
-
const spacingValue = { options: { size, subtract } }
|
|
268
|
-
const { result } = renderHook(() => useSpacingScale(spacingValue), {
|
|
269
|
-
wrapper
|
|
270
|
-
})
|
|
271
|
-
expect(result.current).toBe(size - subtract)
|
|
272
|
-
})
|
|
273
|
-
})
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { renderHook } from '@testing-library/react-hooks'
|
|
2
|
-
import useUniqueId from '../../lib/utils/useUniqueId'
|
|
3
|
-
|
|
4
|
-
describe('useUniqueId hook', () => {
|
|
5
|
-
it('returns the same id for each re-render, but a different id for a new instance', () => {
|
|
6
|
-
const { result, rerender } = renderHook(() => useUniqueId('prefix'))
|
|
7
|
-
|
|
8
|
-
expect(result.current).toBe('prefix-1')
|
|
9
|
-
|
|
10
|
-
rerender()
|
|
11
|
-
|
|
12
|
-
expect(result.current).toBe('prefix-1')
|
|
13
|
-
|
|
14
|
-
// has to be done within the same test case, as we can't ensure order in which tests are being run in parallel
|
|
15
|
-
const { result: result2, rerender: rerender2 } = renderHook(() => useUniqueId('prefix'))
|
|
16
|
-
|
|
17
|
-
expect(result.current).toBe('prefix-1')
|
|
18
|
-
expect(result2.current).toBe('prefix-2')
|
|
19
|
-
|
|
20
|
-
// ensure that instances' rerendering doesn't affect one another
|
|
21
|
-
rerender2()
|
|
22
|
-
|
|
23
|
-
expect(result.current).toBe('prefix-1')
|
|
24
|
-
expect(result2.current).toBe('prefix-2')
|
|
25
|
-
|
|
26
|
-
rerender()
|
|
27
|
-
|
|
28
|
-
expect(result.current).toBe('prefix-1')
|
|
29
|
-
expect(result2.current).toBe('prefix-2')
|
|
30
|
-
})
|
|
31
|
-
})
|