@telus-uds/components-base 1.7.0 → 1.8.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 (183) hide show
  1. package/CHANGELOG.md +38 -2
  2. package/component-docs.json +264 -18
  3. package/lib/Button/ButtonGroup.js +118 -45
  4. package/lib/Checkbox/CheckboxGroup.js +3 -3
  5. package/lib/ExpandCollapse/Panel.js +2 -1
  6. package/lib/Fieldset/Fieldset.js +7 -0
  7. package/lib/InputLabel/InputLabel.js +8 -1
  8. package/lib/InputSupports/InputSupports.js +7 -0
  9. package/lib/Notification/Notification.js +1 -1
  10. package/lib/Radio/RadioGroup.js +12 -5
  11. package/lib/RadioCard/RadioCardGroup.js +7 -0
  12. package/lib/Search/Search.js +1 -1
  13. package/lib/Skeleton/Skeleton.js +48 -2
  14. package/lib/ToggleSwitch/ToggleSwitch.js +7 -0
  15. package/lib/ToggleSwitch/ToggleSwitchGroup.js +7 -0
  16. package/lib/Tooltip/Tooltip.js +1 -1
  17. package/lib/utils/animation/useVerticalExpandAnimation.js +26 -13
  18. package/lib/utils/props/inputSupportsProps.js +7 -0
  19. package/lib/utils/props/textInputProps.js +2 -1
  20. package/lib-module/Button/ButtonGroup.js +117 -45
  21. package/lib-module/Checkbox/CheckboxGroup.js +3 -3
  22. package/lib-module/ExpandCollapse/Panel.js +2 -1
  23. package/lib-module/Fieldset/Fieldset.js +7 -0
  24. package/lib-module/InputLabel/InputLabel.js +8 -1
  25. package/lib-module/InputSupports/InputSupports.js +7 -0
  26. package/lib-module/Notification/Notification.js +1 -1
  27. package/lib-module/Radio/RadioGroup.js +12 -5
  28. package/lib-module/RadioCard/RadioCardGroup.js +7 -0
  29. package/lib-module/Search/Search.js +1 -1
  30. package/lib-module/Skeleton/Skeleton.js +49 -3
  31. package/lib-module/ToggleSwitch/ToggleSwitch.js +7 -0
  32. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +7 -0
  33. package/lib-module/Tooltip/Tooltip.js +1 -1
  34. package/lib-module/utils/animation/useVerticalExpandAnimation.js +26 -14
  35. package/lib-module/utils/props/inputSupportsProps.js +7 -0
  36. package/lib-module/utils/props/textInputProps.js +2 -1
  37. package/package.json +11 -6
  38. package/src/Button/ButtonGroup.jsx +106 -41
  39. package/src/Checkbox/Checkbox.jsx +7 -4
  40. package/src/Checkbox/CheckboxGroup.jsx +3 -3
  41. package/src/ExpandCollapse/Panel.jsx +3 -1
  42. package/src/Fieldset/Fieldset.jsx +6 -0
  43. package/src/InputLabel/InputLabel.jsx +17 -2
  44. package/src/InputSupports/InputSupports.jsx +9 -1
  45. package/src/Notification/Notification.jsx +1 -1
  46. package/src/Radio/Radio.jsx +5 -1
  47. package/src/Radio/RadioGroup.jsx +11 -5
  48. package/src/RadioCard/RadioCard.jsx +5 -1
  49. package/src/RadioCard/RadioCardGroup.jsx +6 -0
  50. package/src/Search/Search.jsx +1 -1
  51. package/src/Skeleton/Skeleton.jsx +56 -3
  52. package/src/ToggleSwitch/ToggleSwitch.jsx +6 -0
  53. package/src/ToggleSwitch/ToggleSwitchGroup.jsx +6 -0
  54. package/src/Tooltip/Tooltip.jsx +1 -1
  55. package/src/utils/animation/useVerticalExpandAnimation.js +25 -12
  56. package/src/utils/props/inputSupportsProps.js +6 -1
  57. package/src/utils/props/textInputProps.js +2 -1
  58. package/src/utils/props/tokens.js +21 -19
  59. package/.storybook/main.js +0 -4
  60. package/.storybook/preview.js +0 -37
  61. package/.turbo/turbo-build.log +0 -8
  62. package/.turbo/turbo-lint.log +0 -13
  63. package/CHANGELOG.json +0 -235
  64. package/__fixtures__/Accessible.js +0 -35
  65. package/__fixtures__/Accessible.native.js +0 -35
  66. package/__fixtures__/Theme.jsx +0 -13
  67. package/__fixtures__/Viewport.jsx +0 -17
  68. package/__fixtures__/test-utils.js +0 -25
  69. package/__fixtures__/testTheme.js +0 -1830
  70. package/__tests__/A11yText/A11yText.test.jsx +0 -34
  71. package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +0 -68
  72. package/__tests__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +0 -287
  73. package/__tests__/Box/Box.test.jsx +0 -111
  74. package/__tests__/Button/Button.test.jsx +0 -86
  75. package/__tests__/Button/ButtonBase.test.jsx +0 -82
  76. package/__tests__/Button/ButtonGroup.test.jsx +0 -347
  77. package/__tests__/Button/ButtonLink.test.jsx +0 -61
  78. package/__tests__/Card/Card.test.jsx +0 -63
  79. package/__tests__/Checkbox/Checkbox.test.jsx +0 -94
  80. package/__tests__/Checkbox/CheckboxGroup.test.jsx +0 -246
  81. package/__tests__/Divider/Divider.test.jsx +0 -91
  82. package/__tests__/ExpandCollapse/ExpandCollapse.test.jsx +0 -109
  83. package/__tests__/Feedback/Feedback.test.jsx +0 -42
  84. package/__tests__/FlexGrid/Col.test.jsx +0 -256
  85. package/__tests__/FlexGrid/FlexGrid.test.jsx +0 -136
  86. package/__tests__/FlexGrid/Row.test.jsx +0 -273
  87. package/__tests__/HorizontalScroll/HorizontalScroll.test.jsx +0 -165
  88. package/__tests__/Icon/Icon.test.jsx +0 -61
  89. package/__tests__/IconButton/IconButton.test.jsx +0 -52
  90. package/__tests__/InputSupports/InputSupports.test.jsx +0 -50
  91. package/__tests__/Link/Link.test.jsx +0 -63
  92. package/__tests__/Link/TextButton.test.jsx +0 -35
  93. package/__tests__/List/List.test.jsx +0 -60
  94. package/__tests__/Modal/Modal.test.jsx +0 -47
  95. package/__tests__/Notification/Notification.test.jsx +0 -20
  96. package/__tests__/Pagination/Pagination.test.jsx +0 -160
  97. package/__tests__/Progress/Progress.test.jsx +0 -79
  98. package/__tests__/Radio/Radio.test.jsx +0 -87
  99. package/__tests__/Radio/RadioGroup.test.jsx +0 -220
  100. package/__tests__/RadioCard/RadioCard.test.jsx +0 -87
  101. package/__tests__/RadioCard/RadioCardGroup.test.jsx +0 -246
  102. package/__tests__/Search/Search.test.jsx +0 -73
  103. package/__tests__/Select/Select.test.jsx +0 -94
  104. package/__tests__/SideNav/SideNav.test.jsx +0 -110
  105. package/__tests__/Skeleton/Skeleton.test.jsx +0 -61
  106. package/__tests__/Spacer/Spacer.test.jsx +0 -63
  107. package/__tests__/StackView/StackView.test.jsx +0 -216
  108. package/__tests__/StackView/StackWrap.test.jsx +0 -47
  109. package/__tests__/StackView/getStackedContent.test.jsx +0 -295
  110. package/__tests__/StepTracker/StepTracker.test.jsx +0 -94
  111. package/__tests__/Tabs/Tabs.test.jsx +0 -40
  112. package/__tests__/Tags/Tags.test.jsx +0 -327
  113. package/__tests__/TextInput/TextArea.test.jsx +0 -35
  114. package/__tests__/TextInput/TextInputBase.test.jsx +0 -125
  115. package/__tests__/ThemeProvider/ThemeProvider.test.jsx +0 -77
  116. package/__tests__/ThemeProvider/useThemeTokens.test.jsx +0 -514
  117. package/__tests__/ThemeProvider/utils/theme-tokens.test.js +0 -41
  118. package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +0 -82
  119. package/__tests__/ToggleSwitch/ToggleSwitchGroup.test.jsx +0 -192
  120. package/__tests__/Tooltip/Tooltip.test.jsx +0 -65
  121. package/__tests__/Tooltip/getTooltipPosition.test.js +0 -79
  122. package/__tests__/Typography/typography.test.jsx +0 -90
  123. package/__tests__/utils/children.test.jsx +0 -128
  124. package/__tests__/utils/containUniqueFields.test.js +0 -25
  125. package/__tests__/utils/input.test.js +0 -375
  126. package/__tests__/utils/props.test.js +0 -36
  127. package/__tests__/utils/semantics.test.jsx +0 -34
  128. package/__tests__/utils/useCopy.test.js +0 -42
  129. package/__tests__/utils/useResponsiveProp.test.jsx +0 -202
  130. package/__tests__/utils/useSpacingScale.test.jsx +0 -273
  131. package/__tests__/utils/useUniqueId.test.js +0 -31
  132. package/babel.config.js +0 -35
  133. package/generate-component-docs.js +0 -72
  134. package/jest.config.js +0 -32
  135. package/stories/A11yText/A11yText.stories.jsx +0 -71
  136. package/stories/ActivityIndicator/ActivityIndicator.stories.jsx +0 -22
  137. package/stories/Box/Box.stories.jsx +0 -143
  138. package/stories/Button/Button.stories.jsx +0 -72
  139. package/stories/Button/ButtonGroup.stories.jsx +0 -81
  140. package/stories/Button/ButtonLink.stories.jsx +0 -30
  141. package/stories/Card/Card.stories.jsx +0 -62
  142. package/stories/Checkbox/Checkbox.stories.jsx +0 -94
  143. package/stories/Divider/Divider.stories.jsx +0 -68
  144. package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +0 -112
  145. package/stories/Feedback/Feedback.stories.jsx +0 -96
  146. package/stories/FlexGrid/01 FlexGrid.stories.jsx +0 -54
  147. package/stories/FlexGrid/02 Row.stories.jsx +0 -41
  148. package/stories/FlexGrid/03 Col.stories.jsx +0 -141
  149. package/stories/Icon/Icon.stories.jsx +0 -79
  150. package/stories/IconButton/IconButton.stories.jsx +0 -50
  151. package/stories/InputLabel/InputLabel.stories.jsx +0 -39
  152. package/stories/Link/ChevronLink.stories.jsx +0 -48
  153. package/stories/Link/Link.stories.jsx +0 -90
  154. package/stories/Link/TextButton.stories.jsx +0 -79
  155. package/stories/List/List.stories.jsx +0 -117
  156. package/stories/Modal/Modal.stories.jsx +0 -54
  157. package/stories/Notification/Notification.stories.jsx +0 -82
  158. package/stories/Pagination/Pagination.stories.jsx +0 -64
  159. package/stories/Progress/Progress.stories.jsx +0 -93
  160. package/stories/Radio/Radio.stories.jsx +0 -100
  161. package/stories/RadioCard/RadioCard.stories.jsx +0 -98
  162. package/stories/Search/Search.stories.jsx +0 -66
  163. package/stories/Select/Select.stories.jsx +0 -55
  164. package/stories/SideNav/SideNav.stories.jsx +0 -42
  165. package/stories/SideNav/SideNavItem.stories.jsx +0 -9
  166. package/stories/SideNav/SideNavItemsGroup.stories.jsx +0 -17
  167. package/stories/Skeleton/Skeleton.stories.jsx +0 -36
  168. package/stories/Spacer/Spacer.stories.jsx +0 -38
  169. package/stories/StackView/StackView.stories.jsx +0 -75
  170. package/stories/StackView/StackWrap.stories.jsx +0 -64
  171. package/stories/StepTracker/StepTracker.stories.jsx +0 -71
  172. package/stories/Tabs/Tabs.stories.jsx +0 -97
  173. package/stories/Tags/Tags.stories.jsx +0 -69
  174. package/stories/TextInput/TextArea.stories.jsx +0 -101
  175. package/stories/TextInput/TextInput.stories.jsx +0 -141
  176. package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +0 -64
  177. package/stories/ToggleSwitch/ToggleSwitchGroup.stories.jsx +0 -81
  178. package/stories/Tooltip/Tooltip.stories.jsx +0 -81
  179. package/stories/TooltipButton/TooltipButton.stories.jsx +0 -11
  180. package/stories/Typography/Typography.stories.jsx +0 -49
  181. package/stories/platform-supports.jsx +0 -32
  182. package/stories/platform-supports.native.jsx +0 -3
  183. package/stories/supports.jsx +0 -236
@@ -85,6 +85,7 @@ const selectLabelTokens = ({
85
85
  const ToggleSwitch = forwardRef(
86
86
  (
87
87
  {
88
+ copy = 'en',
88
89
  value,
89
90
  initialValue,
90
91
  onChange,
@@ -119,6 +120,7 @@ const ToggleSwitch = forwardRef(
119
120
  {Boolean(label) && (
120
121
  <View style={[selectLabelStyles(themeTokens), staticStyles.containText]}>
121
122
  <InputLabel
123
+ copy={copy}
122
124
  forId={inputId}
123
125
  label={label}
124
126
  tokens={selectLabelTokens(themeTokens)}
@@ -170,6 +172,10 @@ ToggleSwitch.displayName = 'ToggleSwitch'
170
172
 
171
173
  ToggleSwitch.propTypes = {
172
174
  ...selectedSystemPropTypes,
175
+ /**
176
+ * Whether the English or French copy will be used (e.g. for accessibility labels).
177
+ */
178
+ copy: PropTypes.oneOf(['en', 'fr']),
173
179
  tokens: getTokensPropType('ToggleSwitch'),
174
180
  variant: variantProp.propType,
175
181
  /**
@@ -28,6 +28,7 @@ const [selectItemProps, selectedItemPropTypes] = selectSystemProps([
28
28
  const ToggleSwitchGroup = forwardRef(
29
29
  (
30
30
  {
31
+ copy = 'en',
31
32
  variant,
32
33
  tokens,
33
34
  items = [],
@@ -105,6 +106,7 @@ const ToggleSwitchGroup = forwardRef(
105
106
 
106
107
  return (
107
108
  <ToggleSwitch
109
+ copy={copy}
108
110
  id={id}
109
111
  ref={itemRef}
110
112
  key={id}
@@ -143,6 +145,10 @@ ToggleSwitchGroup.displayName = 'ToggleSwitchGroup'
143
145
 
144
146
  ToggleSwitchGroup.propTypes = {
145
147
  ...selectedSystemPropTypes,
148
+ /**
149
+ * Whether the English or French copy will be used (e.g. for accessibility labels).
150
+ */
151
+ copy: PropTypes.oneOf(['en', 'fr']),
146
152
  tokens: getTokensPropType('ToggleSwitchGroup'),
147
153
  variant: variantProp.propType,
148
154
  /**
@@ -276,7 +276,7 @@ Tooltip.propTypes = {
276
276
  */
277
277
  content: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
278
278
  /**
279
- * Select english or french copy for the accessible label.
279
+ * Select English or French copy for the accessible label.
280
280
  */
281
281
  copy: PropTypes.oneOf(['en', 'fr']),
282
282
  /**
@@ -1,16 +1,30 @@
1
- import { useEffect, useRef } from 'react'
1
+ import { useEffect, useRef, useState } from 'react'
2
2
  import { Animated, Easing, Platform } from 'react-native'
3
3
 
4
4
  // TODO: systematise animations
5
5
  // https://github.com/telus/universal-design-system/issues/487
6
6
  function useVerticalExpandAnimation({ containerHeight, isExpanded, tokens }) {
7
+ const [isAnimating, setIsAnimating] = useState(false)
8
+
7
9
  const expandAnimatedValue = useRef(new Animated.Value(0)).current
10
+ const elementRef = useRef(null)
8
11
 
9
12
  const { expandDuration, collapseDuration } = tokens
10
13
 
14
+ // Treat as animating from when expanded state changes, until animation completes
15
+ useEffect(() => setIsAnimating(true), [isExpanded])
16
+
11
17
  useEffect(() => {
18
+ const onComplete = () => !isExpanded && setIsAnimating(false)
19
+
12
20
  if (Platform.OS === 'web') {
13
- return
21
+ if (!elementRef.current) return () => {}
22
+
23
+ // React Native Web does not pass `onTransitionEnd` through, must attach manually.
24
+ // https://github.com/necolas/react-native-web/pull/1713
25
+ const element = elementRef.current
26
+ element.addEventListener('transitionend', onComplete)
27
+ return () => element.removeEventListener('transitionend', onComplete)
14
28
  }
15
29
 
16
30
  const animationConfig = {
@@ -20,28 +34,27 @@ function useVerticalExpandAnimation({ containerHeight, isExpanded, tokens }) {
20
34
  useNativeDriver: false
21
35
  }
22
36
 
23
- Animated.timing(expandAnimatedValue, animationConfig).start()
37
+ const animation = Animated.timing(expandAnimatedValue, animationConfig)
38
+ animation.start(onComplete)
39
+ return () => animation.stop()
24
40
  }, [isExpanded, expandAnimatedValue, containerHeight, expandDuration, collapseDuration])
25
41
 
26
- let containerStyles
42
+ // Without `visibility: 'hidden', descendents are focusable on web even when collapsed
43
+ const containerStyles = !isExpanded && !isAnimating ? { visibility: 'hidden' } : {}
27
44
 
28
45
  // don't visually collapse the container until we have it measured
29
46
  if (containerHeight !== null) {
30
47
  if (Platform.OS === 'web') {
31
48
  const transitionDuration = isExpanded ? expandDuration : collapseDuration
49
+ containerStyles.transition = `height ${transitionDuration}ms ease-in-out`
32
50
 
33
- containerStyles = {
34
- transition: `height ${transitionDuration}ms ease-in-out`,
35
- height: isExpanded ? containerHeight : 0
36
- }
51
+ containerStyles.height = isExpanded ? containerHeight : 0
37
52
  } else {
38
- containerStyles = {
39
- height: expandAnimatedValue
40
- }
53
+ containerStyles.height = expandAnimatedValue
41
54
  }
42
55
  }
43
56
 
44
- return containerStyles
57
+ return [containerStyles, elementRef]
45
58
  }
46
59
 
47
60
  export default useVerticalExpandAnimation
@@ -2,6 +2,10 @@ import PropTypes from 'prop-types'
2
2
 
3
3
  export default {
4
4
  types: {
5
+ /**
6
+ * Whether the English or French copy will be used (e.g. for accessibility labels).
7
+ */
8
+ copy: PropTypes.oneOf(['en', 'fr']),
5
9
  /**
6
10
  * The input label.
7
11
  */
@@ -28,8 +32,9 @@ export default {
28
32
  */
29
33
  validation: PropTypes.oneOf(['error', 'success'])
30
34
  },
31
- select: ({ label, hint, hintPosition, feedback, tooltip, validation }) => ({
35
+ select: ({ copy, label, hint, hintPosition, feedback, tooltip, validation }) => ({
32
36
  supportsProps: {
37
+ copy,
33
38
  label,
34
39
  hint,
35
40
  hintPosition,
@@ -21,7 +21,8 @@ const textProps = {
21
21
  const inputValueProps = {
22
22
  value: PropTypes.string,
23
23
  initialValue: PropTypes.string,
24
- readOnly: PropTypes.bool
24
+ readOnly: PropTypes.bool,
25
+ inactive: PropTypes.bool
25
26
  }
26
27
 
27
28
  /**
@@ -86,33 +86,35 @@ export const selectTokens = (specifier, tokens, prefix) => {
86
86
  * tokens: getTokensPropType('Component1', 'Component2')
87
87
  * }
88
88
  */
89
- export const getTokensPropType = (...componentsNames) => (props, propName, componentName) => {
90
- PropTypes.checkPropTypes(
91
- {
92
- [propName]: PropTypes.oneOfType([PropTypes.object, PropTypes.func])
93
- },
94
- props,
95
- propName,
96
- componentName
97
- )
98
-
99
- if (typeof props[propName] !== 'function') {
89
+ export const getTokensPropType =
90
+ (...componentsNames) =>
91
+ (props, propName, componentName) => {
100
92
  PropTypes.checkPropTypes(
101
93
  {
102
- [propName]: PropTypes.exact(
103
- Object.fromEntries(
104
- componentsNames.flatMap((component) =>
105
- getTokenNames(component).map((key) => [key, tokenValueType])
106
- )
107
- )
108
- )
94
+ [propName]: PropTypes.oneOfType([PropTypes.object, PropTypes.func])
109
95
  },
110
96
  props,
111
97
  propName,
112
98
  componentName
113
99
  )
100
+
101
+ if (typeof props[propName] !== 'function') {
102
+ PropTypes.checkPropTypes(
103
+ {
104
+ [propName]: PropTypes.exact(
105
+ Object.fromEntries(
106
+ componentsNames.flatMap((component) =>
107
+ getTokenNames(component).map((key) => [key, tokenValueType])
108
+ )
109
+ )
110
+ )
111
+ },
112
+ props,
113
+ propName,
114
+ componentName
115
+ )
116
+ }
114
117
  }
115
- }
116
118
 
117
119
  /**
118
120
  * Get a proptypes validator for a set of tokens that is not based on a component in the theme schema.
@@ -1,4 +0,0 @@
1
- module.exports = {
2
- stories: ['../stories/**/*.stories.@(js|jsx)'],
3
- addons: ['@storybook/addon-essentials', '@storybook/addon-a11y']
4
- }
@@ -1,37 +0,0 @@
1
- /* eslint-disable import/no-extraneous-dependencies */
2
- import '@telus-uds/palette-allium/build/rn/fonts/fonts.css'
3
- import '@telus-uds/palette-koodo/build/rn/fonts/fonts.css'
4
- import '@telus-uds/palette-public-mobile/build/rn/fonts/fonts.css'
5
-
6
- import alliumTheme from '@telus-uds/theme-allium'
7
- import koodoTheme from '@telus-uds/theme-koodo'
8
- import pmTheme from '@telus-uds/theme-public-mobile'
9
- /* eslint-enable import/no-extraneous-dependencies */
10
-
11
- import testTheme from '../__fixtures__/testTheme'
12
-
13
- import { BaseProvider } from '../src'
14
-
15
- const themes = [alliumTheme, koodoTheme, pmTheme, testTheme]
16
- const themeLookup = themes.reduce((memo, t) => ({ ...memo, [t.metadata.name]: t }), {})
17
-
18
- const baseDecorator = (Story, { globals }) => (
19
- <BaseProvider key={globals.theme} defaultTheme={themeLookup[globals.theme]}>
20
- <Story />
21
- </BaseProvider>
22
- )
23
-
24
- export const decorators = [baseDecorator]
25
-
26
- // globals persist in browser session store - not fun if you have multiple branded storybooks on the same domain/port
27
- export const globalTypes = {
28
- theme: {
29
- name: 'Theme',
30
- description: 'UDS theme for components',
31
- defaultValue: alliumTheme.metadata.name,
32
- toolbar: {
33
- icon: 'beaker',
34
- items: Object.keys(themeLookup)
35
- }
36
- }
37
- }
@@ -1,8 +0,0 @@
1
- @telus-uds/components-base:build: cache hit, replaying output 1881992cce187510
2
- @telus-uds/components-base:build: $ yarn build:code && yarn build:docs
3
- @telus-uds/components-base:build: $ yarn build:main && yarn build:module
4
- @telus-uds/components-base:build: $ babel src -d lib
5
- @telus-uds/components-base:build: Successfully compiled 219 files with Babel (6264ms).
6
- @telus-uds/components-base:build: $ babel src -d lib-module --env-name module
7
- @telus-uds/components-base:build: Successfully compiled 219 files with Babel (4314ms).
8
- @telus-uds/components-base:build: $ babel-node --plugins=@nearform/babel-plugin-react-docgen generate-component-docs.js
@@ -1,13 +0,0 @@
1
- @telus-uds/components-base:lint: cache hit, replaying output b72941df2cdfe4ea
2
- @telus-uds/components-base:lint: $ yarn --cwd ../.. lint:path --color packages/components-base
3
- @telus-uds/components-base:lint: $ eslint --ignore-path .gitignore --ext .js,.jsx,.mjs,.cjs --color packages/components-base
4
- @telus-uds/components-base:lint: 
5
- @telus-uds/components-base:lint: /home/runner/work/universal-design-system/universal-design-system/packages/components-base/__tests__/FlexGrid/Col.test.jsx
6
- @telus-uds/components-base:lint:  51:71 warning Expect must have a corresponding matcher call jest/valid-expect
7
- @telus-uds/components-base:lint:  106:71 warning Expect must have a corresponding matcher call jest/valid-expect
8
- @telus-uds/components-base:lint:  155:63 warning Expect must have a corresponding matcher call jest/valid-expect
9
- @telus-uds/components-base:lint:  200:71 warning Expect must have a corresponding matcher call jest/valid-expect
10
- @telus-uds/components-base:lint:  248:71 warning Expect must have a corresponding matcher call jest/valid-expect
11
- @telus-uds/components-base:lint: 
12
- @telus-uds/components-base:lint: ✖ 5 problems (0 errors, 5 warnings)
13
- @telus-uds/components-base:lint: 
package/CHANGELOG.json DELETED
@@ -1,235 +0,0 @@
1
- {
2
- "name": "@telus-uds/components-base",
3
- "entries": [
4
- {
5
- "date": "Tue, 17 May 2022 15:04:41 GMT",
6
- "tag": "@telus-uds/components-base_v1.7.0",
7
- "version": "1.7.0",
8
- "comments": {
9
- "patch": [
10
- {
11
- "author": "alan.slater@nearform.com",
12
- "package": "@telus-uds/components-base",
13
- "commit": "70105ac8b165247e3cd29a78e3247f7a475b287a",
14
- "comment": "align List bullets like icons"
15
- },
16
- {
17
- "author": "alan.slater@nearform.com",
18
- "package": "@telus-uds/components-base",
19
- "commit": "70105ac8b165247e3cd29a78e3247f7a475b287a",
20
- "comment": "Add text props to Typography"
21
- },
22
- {
23
- "author": "alan.slater@nearform.com",
24
- "package": "@telus-uds/components-base",
25
- "commit": "70105ac8b165247e3cd29a78e3247f7a475b287a",
26
- "comment": "fix(components): support TextInput props"
27
- }
28
- ],
29
- "minor": [
30
- {
31
- "author": "alan.slater@nearform.com",
32
- "package": "@telus-uds/components-base",
33
- "commit": "70105ac8b165247e3cd29a78e3247f7a475b287a",
34
- "comment": "Allow Search component to be controlled"
35
- }
36
- ]
37
- }
38
- },
39
- {
40
- "date": "Fri, 06 May 2022 15:31:28 GMT",
41
- "tag": "@telus-uds/components-base_v1.6.1",
42
- "version": "1.6.1",
43
- "comments": {
44
- "patch": [
45
- {
46
- "author": "alan.slater@nearform.com",
47
- "package": "@telus-uds/components-base",
48
- "commit": "d0967886e4328b789fd5490f068c74fa24379b87",
49
- "comment": "don't throw if no href/onPress in link/button"
50
- },
51
- {
52
- "author": "ruslan.bredikhin@nearform.com",
53
- "package": "@telus-uds/components-base",
54
- "commit": "d0967886e4328b789fd5490f068c74fa24379b87",
55
- "comment": "fix: allow parsing tokens inherited from multiple components"
56
- }
57
- ]
58
- }
59
- },
60
- {
61
- "date": "Thu, 28 Apr 2022 15:40:29 GMT",
62
- "tag": "@telus-uds/components-base_v1.6.0",
63
- "version": "1.6.0",
64
- "comments": {
65
- "minor": [
66
- {
67
- "author": "shahzaibkhalidmalik@outlook.com",
68
- "package": "@telus-uds/components-base",
69
- "commit": "3db648cd2964f06f91e5d34140cb9f44ede740d5",
70
- "comment": "Add `pattern` prop for `TextInput` (web)"
71
- },
72
- {
73
- "author": "ruslan.bredikhin@nearform.com",
74
- "package": "@telus-uds/components-base",
75
- "commit": "3db648cd2964f06f91e5d34140cb9f44ede740d5",
76
- "comment": "feat: add unique ids validation to the group components"
77
- },
78
- {
79
- "author": "eugene@michasiw.com",
80
- "package": "@telus-uds/components-base",
81
- "commit": "3db648cd2964f06f91e5d34140cb9f44ede740d5",
82
- "comment": "use IconButton for modal close"
83
- },
84
- {
85
- "author": "alan.slater@nearform.com",
86
- "package": "@telus-uds/components-base",
87
- "commit": "3db648cd2964f06f91e5d34140cb9f44ede740d5",
88
- "comment": "Add flex prop to FlexGrid.Col"
89
- },
90
- {
91
- "author": "ruslan.bredikhin@nearform.com",
92
- "package": "@telus-uds/components-base",
93
- "commit": "3db648cd2964f06f91e5d34140cb9f44ede740d5",
94
- "comment": "feat: add handler props whitelisting to the input components"
95
- },
96
- {
97
- "author": "beachball",
98
- "package": "@telus-uds/components-base",
99
- "comment": "Bump @telus-uds/system-theme-tokens to v1.5.0",
100
- "commit": "3db648cd2964f06f91e5d34140cb9f44ede740d5"
101
- }
102
- ],
103
- "patch": [
104
- {
105
- "author": "alan.slater@nearform.com",
106
- "package": "@telus-uds/components-base",
107
- "commit": "3db648cd2964f06f91e5d34140cb9f44ede740d5",
108
- "comment": "V-align Checkbox/Radio with label first line"
109
- },
110
- {
111
- "author": "shahzaibkhalidmalik@outlook.com",
112
- "package": "@telus-uds/components-base",
113
- "commit": "3db648cd2964f06f91e5d34140cb9f44ede740d5",
114
- "comment": "Fix ExpandCollapse unable to response to window resize"
115
- },
116
- {
117
- "author": "ruslan.bredikhin@nearform.com",
118
- "package": "@telus-uds/components-base",
119
- "commit": "3db648cd2964f06f91e5d34140cb9f44ede740d5",
120
- "comment": "fix: move link underline to the inline pressable becoming the anchor tag on web"
121
- },
122
- {
123
- "author": "shahzaibkhalidmalik@outlook.com",
124
- "package": "@telus-uds/components-base",
125
- "commit": "3db648cd2964f06f91e5d34140cb9f44ede740d5",
126
- "comment": "Fix scenario where `reverse` props might not work when elements wrap"
127
- },
128
- {
129
- "author": "alan.slater@nearform.com",
130
- "package": "@telus-uds/components-base",
131
- "commit": "3db648cd2964f06f91e5d34140cb9f44ede740d5",
132
- "comment": "Fix input label text wrap"
133
- },
134
- {
135
- "author": "alan.slater@nearform.com",
136
- "package": "@telus-uds/components-base",
137
- "commit": "3db648cd2964f06f91e5d34140cb9f44ede740d5",
138
- "comment": "fix Select validation icons"
139
- }
140
- ],
141
- "none": [
142
- {
143
- "author": "simon.lawrence@nearform.com",
144
- "package": "@telus-uds/components-base",
145
- "commit": "3db648cd2964f06f91e5d34140cb9f44ede740d5",
146
- "comment": "update babel plugin used for docs generation to maintained fork"
147
- },
148
- {
149
- "author": "cody.zuschlag@nearform.com",
150
- "package": "@telus-uds/components-base",
151
- "commit": "3db648cd2964f06f91e5d34140cb9f44ede740d5",
152
- "comment": "improve linting"
153
- }
154
- ]
155
- }
156
- },
157
- {
158
- "date": "Thu, 07 Apr 2022 20:33:56 GMT",
159
- "tag": "@telus-uds/components-base_v1.5.0",
160
- "version": "1.5.0",
161
- "comments": {
162
- "minor": [
163
- {
164
- "author": "ruslan.bredikhin@nearform.com",
165
- "package": "@telus-uds/components-base",
166
- "commit": "63472330f9144ba99c34c7524dcc2d2f4f716e69",
167
- "comment": "extend HorizontalScrollButton via IconButton"
168
- },
169
- {
170
- "author": "beachball",
171
- "package": "@telus-uds/components-base",
172
- "comment": "Bump @telus-uds/system-theme-tokens to v1.4.0",
173
- "commit": "63472330f9144ba99c34c7524dcc2d2f4f716e69"
174
- }
175
- ]
176
- }
177
- },
178
- {
179
- "date": "Fri, 01 Apr 2022 14:15:21 GMT",
180
- "tag": "@telus-uds/components-base_v1.4.0",
181
- "version": "1.4.0",
182
- "comments": {
183
- "patch": [
184
- {
185
- "author": "simon.lawrence@nearform.com",
186
- "package": "@telus-uds/components-base",
187
- "commit": "05e43b4642997ec461094b5d8a439bfef1abaab8",
188
- "comment": "Refactor children wrapping in the notifications"
189
- }
190
- ],
191
- "minor": [
192
- {
193
- "author": "beachball",
194
- "package": "@telus-uds/components-base",
195
- "comment": "Bump @telus-uds/system-theme-tokens to v1.3.0",
196
- "commit": "05e43b4642997ec461094b5d8a439bfef1abaab8"
197
- }
198
- ]
199
- }
200
- },
201
- {
202
- "date": "Wed, 30 Mar 2022 09:49:18 GMT",
203
- "tag": "@telus-uds/components-base_v1.3.1",
204
- "version": "1.3.1",
205
- "comments": {
206
- "patch": [
207
- {
208
- "author": "cody.zuschlag@nearform.com",
209
- "package": "@telus-uds/components-base",
210
- "commit": "cdbb7a9be4572e4a3650b917a80bb6f0f57a471e",
211
- "comment": "post monorepo reorganization release"
212
- },
213
- {
214
- "author": "beachball",
215
- "package": "@telus-uds/components-base",
216
- "comment": "Bump @telus-uds/system-constants to v1.0.2",
217
- "commit": "cdbb7a9be4572e4a3650b917a80bb6f0f57a471e"
218
- },
219
- {
220
- "author": "beachball",
221
- "package": "@telus-uds/components-base",
222
- "comment": "Bump @telus-uds/system-theme-tokens to v1.2.2",
223
- "commit": "cdbb7a9be4572e4a3650b917a80bb6f0f57a471e"
224
- },
225
- {
226
- "author": "beachball",
227
- "package": "@telus-uds/components-base",
228
- "comment": "Bump @telus-uds/browserslist-config to v1.0.1",
229
- "commit": "cdbb7a9be4572e4a3650b917a80bb6f0f57a471e"
230
- }
231
- ]
232
- }
233
- }
234
- ]
235
- }
@@ -1,35 +0,0 @@
1
- // this is a copy of an autogenerated file
2
- /* eslint-disable spaced-comment */
3
- /* eslint-disable react/prop-types */
4
-
5
- import * as React from 'react'
6
-
7
- const Accessible = ({ title, titleId, size, color }) =>
8
- /*#__PURE__*/ React.createElement(
9
- 'svg',
10
- {
11
- viewBox: '0 0 24 24',
12
- height: size,
13
- width: size,
14
- fill: color,
15
- role: title ? 'img' : undefined,
16
- 'aria-hidden': !title,
17
- 'aria-labelledby': titleId
18
- },
19
- title
20
- ? /*#__PURE__*/ React.createElement(
21
- 'title',
22
- {
23
- id: titleId
24
- },
25
- title
26
- )
27
- : null,
28
- /*#__PURE__*/ React.createElement('path', {
29
- d:
30
- 'M4.231 12.257l.662.662a5.87 5.87 0 00-.982 3.235c0 1.585.618 3.078 1.74 4.2a5.903 5.903 0 004.2 1.739 5.839 5.839 0 002.991-.831l.242-.151.647.645c-1.167.81-2.517 1.244-3.88 1.244a6.83 6.83 0 01-4.845-2.003A6.805 6.805 0 013 16.154c0-1.315.378-2.568 1.067-3.65l.165-.247zm5.81-9.99c.178 0 .358.037.527.112l.175.093c.575.334 5.897 3.426 5.907 3.433.307.192.507.492.579.822.124.433.054.913-.22 1.3l-.1.125-2.68 2.738c.106.088.21.178.313.273l.166.162.014.016 5.136-.603.07-.002a1.3 1.3 0 011.3 1.265l-.004.14-.39 6.71a1.46 1.46 0 01-1.455 1.369l-.094-.003a1.456 1.456 0 01-1.362-1.41l.003-.141.337-4.465a.09.09 0 00-.09-.103l-1.71.3a6.86 6.86 0 01-.809 5.367l-.165.254-.66-.66a5.882 5.882 0 00.96-3.206 5.903 5.903 0 00-1.738-4.2 5.904 5.904 0 00-4.201-1.74c-1.06 0-2.073.291-2.966.813l-.24.148-.648-.648a6.827 6.827 0 012.94-1.156l.312-.035 2.507-2.778-1.5-.876L8.33 7.31a1.47 1.47 0 01-2.081.002c-.542-.542-.554-1.423-.078-2.008l.102-.112 2.902-2.596c.244-.217.552-.33.865-.33zm10.24 10.386c.096-.848-.406-.964-.75-.955l-.061.003-3.975.467c.223.338.41.701.576 1.073l.12.28 1.75-.308.077-.022.156-.004c.288 0 .562.125.754.34.15.174.236.392.246.618l-.003.136-.337 4.454a.541.541 0 00.136.389.536.536 0 00.287.171l.086.013c.289 0 .509-.18.567-.422l.015-.093.357-6.14zm-10.24-9.475a.387.387 0 00-.202.056l-.057.043L6.905 5.85c-.215.23-.222.607-.012.817a.558.558 0 00.725.057l.068-.058.027-.027 2.444-2.07 3.024 1.766-2.663 2.952a6.958 6.958 0 012.683.85l.31.183 2.727-2.784a.602.602 0 00.135-.46l-.02-.1-.013-.053a.385.385 0 00-.165-.241l-5.94-3.451a.38.38 0 00-.194-.053zM17.743 1c1.16 0 2.106.945 2.106 2.106a2.11 2.11 0 01-2.106 2.107 2.11 2.11 0 01-2.106-2.107c0-1.161.945-2.106 2.106-2.106zm0 .91a1.196 1.196 0 000 2.392 1.196 1.196 0 000-2.391z',
31
- fillRule: 'evenodd'
32
- })
33
- )
34
-
35
- export default Accessible
@@ -1,35 +0,0 @@
1
- // this is a copy of an autogenerated file
2
- /* eslint-disable spaced-comment */
3
- /* eslint-disable import/no-extraneous-dependencies */
4
- /* eslint-disable react/prop-types */
5
-
6
- import * as React from 'react'
7
- import Svg, { Path } from 'react-native-svg'
8
-
9
- const Accessible = ({ title, titleId, size, color }) =>
10
- /*#__PURE__*/ React.createElement(
11
- Svg,
12
- {
13
- viewBox: '0 0 24 24',
14
- height: size,
15
- width: size,
16
- fill: color,
17
- 'aria-labelledby': titleId
18
- },
19
- title
20
- ? /*#__PURE__*/ React.createElement(
21
- 'title',
22
- {
23
- id: titleId
24
- },
25
- title
26
- )
27
- : null,
28
- /*#__PURE__*/ React.createElement(Path, {
29
- d:
30
- 'M4.231 12.257l.662.662a5.87 5.87 0 00-.982 3.235c0 1.585.618 3.078 1.74 4.2a5.903 5.903 0 004.2 1.739 5.839 5.839 0 002.991-.831l.242-.151.647.645c-1.167.81-2.517 1.244-3.88 1.244a6.83 6.83 0 01-4.845-2.003A6.805 6.805 0 013 16.154c0-1.315.378-2.568 1.067-3.65l.165-.247zm5.81-9.99c.178 0 .358.037.527.112l.175.093c.575.334 5.897 3.426 5.907 3.433.307.192.507.492.579.822.124.433.054.913-.22 1.3l-.1.125-2.68 2.738c.106.088.21.178.313.273l.166.162.014.016 5.136-.603.07-.002a1.3 1.3 0 011.3 1.265l-.004.14-.39 6.71a1.46 1.46 0 01-1.455 1.369l-.094-.003a1.456 1.456 0 01-1.362-1.41l.003-.141.337-4.465a.09.09 0 00-.09-.103l-1.71.3a6.86 6.86 0 01-.809 5.367l-.165.254-.66-.66a5.882 5.882 0 00.96-3.206 5.903 5.903 0 00-1.738-4.2 5.904 5.904 0 00-4.201-1.74c-1.06 0-2.073.291-2.966.813l-.24.148-.648-.648a6.827 6.827 0 012.94-1.156l.312-.035 2.507-2.778-1.5-.876L8.33 7.31a1.47 1.47 0 01-2.081.002c-.542-.542-.554-1.423-.078-2.008l.102-.112 2.902-2.596c.244-.217.552-.33.865-.33zm10.24 10.386c.096-.848-.406-.964-.75-.955l-.061.003-3.975.467c.223.338.41.701.576 1.073l.12.28 1.75-.308.077-.022.156-.004c.288 0 .562.125.754.34.15.174.236.392.246.618l-.003.136-.337 4.454a.541.541 0 00.136.389.536.536 0 00.287.171l.086.013c.289 0 .509-.18.567-.422l.015-.093.357-6.14zm-10.24-9.475a.387.387 0 00-.202.056l-.057.043L6.905 5.85c-.215.23-.222.607-.012.817a.558.558 0 00.725.057l.068-.058.027-.027 2.444-2.07 3.024 1.766-2.663 2.952a6.958 6.958 0 012.683.85l.31.183 2.727-2.784a.602.602 0 00.135-.46l-.02-.1-.013-.053a.385.385 0 00-.165-.241l-5.94-3.451a.38.38 0 00-.194-.053zM17.743 1c1.16 0 2.106.945 2.106 2.106a2.11 2.11 0 01-2.106 2.107 2.11 2.11 0 01-2.106-2.107c0-1.161.945-2.106 2.106-2.106zm0 .91a1.196 1.196 0 000 2.392 1.196 1.196 0 000-2.391z',
31
- fillRule: 'evenodd'
32
- })
33
- )
34
-
35
- export default Accessible
@@ -1,13 +0,0 @@
1
- import React from 'react'
2
- import PropTypes from 'prop-types'
3
-
4
- import testTheme from './testTheme'
5
- import ThemeProvider from '../src/ThemeProvider'
6
-
7
- const Theme = ({ children }) => <ThemeProvider defaultTheme={testTheme}>{children}</ThemeProvider>
8
-
9
- Theme.propTypes = {
10
- children: PropTypes.node.isRequired
11
- }
12
-
13
- export default Theme
@@ -1,17 +0,0 @@
1
- import React from 'react'
2
- import PropTypes from 'prop-types'
3
- import { viewports } from '@telus-uds/system-constants'
4
-
5
- import { ViewportContext } from '../src/ViewportProvider'
6
-
7
- // Mock dimensions provider allowing tests to explicitly set their dimensions viewport size
8
- const Viewport = ({ viewport = viewports.xs, children }) => (
9
- <ViewportContext.Provider value={viewport}>{children}</ViewportContext.Provider>
10
- )
11
-
12
- Viewport.propTypes = {
13
- viewport: PropTypes.oneOf(viewports.keys),
14
- children: PropTypes.node.isRequired
15
- }
16
-
17
- export default Viewport
@@ -1,25 +0,0 @@
1
- // eslint-disable-next-line import/no-extraneous-dependencies
2
- import { act } from '@testing-library/react-native'
3
-
4
- // React Native Testing Library does not create or pass event objects on fireEvent,
5
- // but fireEvent takes additional properties that are passed to the event handlers,
6
- // where we can create and pass a mock event object to the handler.
7
- // WARNING: these are passed even if the real RN prop doesn't pass events (e.g onChangeText).
8
- // https://github.com/callstack/react-native-testing-library/issues/714
9
- export const getMockEvent = (nativeEvent, eventProps = {}) => ({ nativeEvent, ...eventProps })
10
-
11
- // React Native Testing Library does not support TextInput's onChange.
12
- // fireEvent.changeText incorrectly calls onChangeText handlers only.
13
- // https://github.com/callstack/react-native-testing-library/issues/428
14
- export const fireChange = (input, text) => {
15
- if (!input?.props?.onChange) {
16
- throw new Error(
17
- `Called fireChange on ${
18
- !input
19
- ? input
20
- : `${typeof input} without ${!input.props ? 'props' : 'onChange handler function'}`
21
- }`
22
- )
23
- }
24
- act(() => input.props.onChange(getMockEvent({ text })))
25
- }