@telus-uds/components-base 1.8.1 → 1.8.4

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 (288) hide show
  1. package/CHANGELOG.md +35 -2
  2. package/component-docs.json +711 -669
  3. package/lib/A11yInfoProvider/index.js +4 -3
  4. package/lib/A11yText/index.js +6 -5
  5. package/lib/ActivityIndicator/Spinner.js +14 -13
  6. package/lib/ActivityIndicator/Spinner.native.js +10 -8
  7. package/lib/ActivityIndicator/index.js +6 -5
  8. package/lib/ActivityIndicator/shared.js +1 -1
  9. package/lib/BaseProvider/index.js +13 -10
  10. package/lib/Box/Box.js +20 -19
  11. package/lib/Button/Button.js +7 -6
  12. package/lib/Button/ButtonBase.js +97 -79
  13. package/lib/Button/ButtonGroup.js +34 -32
  14. package/lib/Button/ButtonLink.js +9 -7
  15. package/lib/Button/index.js +4 -4
  16. package/lib/Button/propTypes.js +1 -1
  17. package/lib/Card/Card.js +8 -7
  18. package/lib/Card/CardBase.js +35 -31
  19. package/lib/Card/PressableCardBase.js +14 -12
  20. package/lib/Checkbox/Checkbox.js +97 -83
  21. package/lib/Checkbox/CheckboxGroup.js +29 -27
  22. package/lib/Checkbox/CheckboxInput.js +12 -10
  23. package/lib/Divider/Divider.js +10 -9
  24. package/lib/ExpandCollapse/Control.js +42 -36
  25. package/lib/ExpandCollapse/ExpandCollapse.js +11 -10
  26. package/lib/ExpandCollapse/Panel.js +29 -40
  27. package/lib/Feedback/Feedback.js +48 -35
  28. package/lib/Fieldset/Fieldset.js +16 -15
  29. package/lib/Fieldset/FieldsetContainer.js +16 -13
  30. package/lib/Fieldset/FieldsetContainer.native.js +11 -8
  31. package/lib/Fieldset/Legend.js +10 -7
  32. package/lib/Fieldset/Legend.native.js +10 -7
  33. package/lib/FlexGrid/Col/Col.js +18 -17
  34. package/lib/FlexGrid/FlexGrid.js +15 -14
  35. package/lib/FlexGrid/Row/Row.js +13 -12
  36. package/lib/HorizontalScroll/HorizontalScroll.js +25 -20
  37. package/lib/HorizontalScroll/HorizontalScrollButton.js +18 -14
  38. package/lib/HorizontalScroll/ScrollViewEnd.js +6 -5
  39. package/lib/HorizontalScroll/ScrollViewEnd.native.js +12 -9
  40. package/lib/HorizontalScroll/itemPositions.js +19 -13
  41. package/lib/Icon/Icon.js +11 -10
  42. package/lib/Icon/IconText.js +8 -7
  43. package/lib/Icon/index.js +5 -5
  44. package/lib/IconButton/IconButton.js +50 -42
  45. package/lib/InputLabel/InputLabel.js +37 -30
  46. package/lib/InputLabel/LabelContent.js +12 -9
  47. package/lib/InputLabel/LabelContent.native.js +9 -6
  48. package/lib/InputSupports/InputSupports.js +11 -10
  49. package/lib/InputSupports/useInputSupports.js +7 -6
  50. package/lib/Link/ChevronLink.js +9 -8
  51. package/lib/Link/InlinePressable.js +13 -10
  52. package/lib/Link/InlinePressable.native.js +20 -16
  53. package/lib/Link/Link.js +10 -9
  54. package/lib/Link/LinkBase.js +96 -78
  55. package/lib/Link/TextButton.js +9 -8
  56. package/lib/List/List.js +20 -13
  57. package/lib/List/ListItem.js +103 -79
  58. package/lib/Modal/Modal.js +74 -60
  59. package/lib/Notification/Notification.js +46 -33
  60. package/lib/Pagination/PageButton.js +13 -12
  61. package/lib/Pagination/Pagination.js +43 -30
  62. package/lib/Pagination/SideButton.js +21 -18
  63. package/lib/Pagination/usePagination.js +7 -6
  64. package/lib/Progress/Progress.js +23 -19
  65. package/lib/Progress/ProgressBar.js +25 -21
  66. package/lib/Progress/ProgressBarBackground.js +7 -6
  67. package/lib/Radio/Radio.js +80 -69
  68. package/lib/Radio/RadioButton.js +63 -53
  69. package/lib/Radio/RadioGroup.js +30 -28
  70. package/lib/Radio/RadioInput.js +12 -10
  71. package/lib/RadioCard/RadioCard.js +16 -15
  72. package/lib/RadioCard/RadioCardGroup.js +30 -28
  73. package/lib/Search/Search.js +52 -32
  74. package/lib/Select/Group.js +5 -4
  75. package/lib/Select/Group.native.js +4 -3
  76. package/lib/Select/Item.js +10 -7
  77. package/lib/Select/Item.native.js +1 -9
  78. package/lib/Select/Picker.js +16 -15
  79. package/lib/Select/Picker.native.js +49 -38
  80. package/lib/Select/Select.js +134 -113
  81. package/lib/SideNav/Item.js +39 -33
  82. package/lib/SideNav/ItemContent.js +15 -12
  83. package/lib/SideNav/ItemsGroup.js +13 -11
  84. package/lib/SideNav/SideNav.js +21 -18
  85. package/lib/Skeleton/Skeleton.js +60 -44
  86. package/lib/Skeleton/skeleton.constant.js +1 -1
  87. package/lib/Skeleton/skeletonWebAnimation.js +1 -1
  88. package/lib/Spacer/Spacer.js +6 -5
  89. package/lib/StackView/StackView.js +12 -11
  90. package/lib/StackView/StackWrap.js +5 -3
  91. package/lib/StackView/StackWrapBox.js +12 -11
  92. package/lib/StackView/StackWrapGap.js +11 -10
  93. package/lib/StackView/common.js +14 -11
  94. package/lib/StackView/getStackedContent.js +10 -9
  95. package/lib/StackView/index.js +1 -1
  96. package/lib/StepTracker/Step.js +122 -103
  97. package/lib/StepTracker/StepTracker.js +48 -38
  98. package/lib/Tabs/Tabs.js +57 -27
  99. package/lib/Tabs/TabsItem.js +78 -68
  100. package/lib/Tags/Tags.js +68 -62
  101. package/lib/TextInput/TextArea.js +26 -20
  102. package/lib/TextInput/TextInput.js +20 -15
  103. package/lib/TextInput/TextInputBase.js +74 -62
  104. package/lib/TextInput/index.js +4 -4
  105. package/lib/ThemeProvider/ThemeProvider.js +6 -5
  106. package/lib/ThemeProvider/index.js +5 -5
  107. package/lib/ThemeProvider/useSetTheme.js +6 -3
  108. package/lib/ThemeProvider/useThemeTokens.js +7 -2
  109. package/lib/ThemeProvider/utils/styles.js +50 -43
  110. package/lib/ThemeProvider/utils/theme-tokens.js +33 -21
  111. package/lib/ToggleSwitch/ToggleSwitch.js +90 -74
  112. package/lib/ToggleSwitch/ToggleSwitchGroup.js +37 -35
  113. package/lib/Tooltip/Backdrop.js +6 -13
  114. package/lib/Tooltip/Backdrop.native.js +5 -4
  115. package/lib/Tooltip/Tooltip.js +81 -65
  116. package/lib/Tooltip/getTooltipPosition.js +29 -18
  117. package/lib/TooltipButton/TooltipButton.js +28 -21
  118. package/lib/Typography/Typography.js +37 -33
  119. package/lib/ViewportProvider/ViewportProvider.js +4 -3
  120. package/lib/ViewportProvider/useViewportListener.js +6 -3
  121. package/lib/index.js +54 -54
  122. package/lib/utils/a11y/semantics.js +5 -2
  123. package/lib/utils/a11y/textSize.js +8 -6
  124. package/lib/utils/animation/useVerticalExpandAnimation.js +46 -19
  125. package/lib/utils/children.js +4 -3
  126. package/lib/utils/index.js +10 -10
  127. package/lib/utils/input.js +28 -29
  128. package/lib/utils/pressability.js +36 -22
  129. package/lib/utils/props/clickProps.js +2 -1
  130. package/lib/utils/props/componentPropType.js +3 -3
  131. package/lib/utils/props/getPropSelector.js +6 -3
  132. package/lib/utils/props/handlerProps.js +25 -19
  133. package/lib/utils/props/hrefAttrsProp.js +14 -11
  134. package/lib/utils/props/index.js +12 -12
  135. package/lib/utils/props/inputSupportsProps.js +15 -12
  136. package/lib/utils/props/linkProps.js +7 -6
  137. package/lib/utils/props/pressProps.js +1 -1
  138. package/lib/utils/props/selectSystemProps.js +2 -2
  139. package/lib/utils/props/tokens.js +29 -15
  140. package/lib/utils/ssr.js +6 -2
  141. package/lib/utils/useCopy.js +6 -4
  142. package/lib/utils/useHash.js +2 -1
  143. package/lib/utils/useResponsiveProp.js +1 -1
  144. package/lib/utils/useSpacingScale.js +3 -1
  145. package/lib/utils/useUniqueId.js +3 -2
  146. package/lib/utils/withLinkRouter.js +6 -5
  147. package/lib-module/A11yInfoProvider/index.js +4 -3
  148. package/lib-module/A11yText/index.js +6 -5
  149. package/lib-module/ActivityIndicator/Spinner.js +14 -13
  150. package/lib-module/ActivityIndicator/Spinner.native.js +9 -8
  151. package/lib-module/ActivityIndicator/index.js +6 -5
  152. package/lib-module/BaseProvider/index.js +13 -10
  153. package/lib-module/Box/Box.js +20 -19
  154. package/lib-module/Button/Button.js +7 -6
  155. package/lib-module/Button/ButtonBase.js +96 -79
  156. package/lib-module/Button/ButtonGroup.js +34 -32
  157. package/lib-module/Button/ButtonLink.js +8 -7
  158. package/lib-module/Card/Card.js +8 -7
  159. package/lib-module/Card/CardBase.js +35 -31
  160. package/lib-module/Card/PressableCardBase.js +12 -11
  161. package/lib-module/Checkbox/Checkbox.js +97 -83
  162. package/lib-module/Checkbox/CheckboxGroup.js +29 -27
  163. package/lib-module/Checkbox/CheckboxInput.js +12 -10
  164. package/lib-module/Divider/Divider.js +10 -9
  165. package/lib-module/ExpandCollapse/Control.js +42 -36
  166. package/lib-module/ExpandCollapse/ExpandCollapse.js +11 -10
  167. package/lib-module/ExpandCollapse/Panel.js +29 -37
  168. package/lib-module/Feedback/Feedback.js +46 -33
  169. package/lib-module/Fieldset/Fieldset.js +16 -15
  170. package/lib-module/Fieldset/FieldsetContainer.js +16 -13
  171. package/lib-module/Fieldset/FieldsetContainer.native.js +11 -8
  172. package/lib-module/Fieldset/Legend.js +10 -7
  173. package/lib-module/Fieldset/Legend.native.js +10 -7
  174. package/lib-module/FlexGrid/Col/Col.js +18 -17
  175. package/lib-module/FlexGrid/FlexGrid.js +15 -14
  176. package/lib-module/FlexGrid/Row/Row.js +13 -12
  177. package/lib-module/HorizontalScroll/HorizontalScroll.js +24 -19
  178. package/lib-module/HorizontalScroll/HorizontalScrollButton.js +18 -14
  179. package/lib-module/HorizontalScroll/ScrollViewEnd.js +6 -5
  180. package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +12 -9
  181. package/lib-module/HorizontalScroll/itemPositions.js +18 -12
  182. package/lib-module/Icon/Icon.js +10 -9
  183. package/lib-module/Icon/IconText.js +9 -7
  184. package/lib-module/IconButton/IconButton.js +48 -41
  185. package/lib-module/InputLabel/InputLabel.js +37 -30
  186. package/lib-module/InputLabel/LabelContent.js +12 -9
  187. package/lib-module/InputLabel/LabelContent.native.js +9 -6
  188. package/lib-module/InputSupports/InputSupports.js +11 -10
  189. package/lib-module/InputSupports/useInputSupports.js +7 -6
  190. package/lib-module/Link/ChevronLink.js +9 -8
  191. package/lib-module/Link/InlinePressable.js +13 -10
  192. package/lib-module/Link/InlinePressable.native.js +20 -16
  193. package/lib-module/Link/Link.js +10 -9
  194. package/lib-module/Link/LinkBase.js +94 -77
  195. package/lib-module/Link/TextButton.js +9 -8
  196. package/lib-module/List/List.js +20 -13
  197. package/lib-module/List/ListItem.js +103 -78
  198. package/lib-module/Modal/Modal.js +74 -60
  199. package/lib-module/Notification/Notification.js +46 -33
  200. package/lib-module/Pagination/PageButton.js +13 -12
  201. package/lib-module/Pagination/Pagination.js +43 -30
  202. package/lib-module/Pagination/SideButton.js +21 -18
  203. package/lib-module/Pagination/usePagination.js +7 -6
  204. package/lib-module/Progress/Progress.js +23 -19
  205. package/lib-module/Progress/ProgressBar.js +25 -21
  206. package/lib-module/Progress/ProgressBarBackground.js +7 -6
  207. package/lib-module/Radio/Radio.js +80 -69
  208. package/lib-module/Radio/RadioButton.js +62 -52
  209. package/lib-module/Radio/RadioGroup.js +30 -28
  210. package/lib-module/Radio/RadioInput.js +12 -10
  211. package/lib-module/RadioCard/RadioCard.js +16 -15
  212. package/lib-module/RadioCard/RadioCardGroup.js +30 -28
  213. package/lib-module/Search/Search.js +52 -32
  214. package/lib-module/Select/Group.js +5 -4
  215. package/lib-module/Select/Group.native.js +4 -3
  216. package/lib-module/Select/Item.js +10 -7
  217. package/lib-module/Select/Item.native.js +1 -7
  218. package/lib-module/Select/Picker.js +16 -15
  219. package/lib-module/Select/Picker.native.js +46 -36
  220. package/lib-module/Select/Select.js +134 -113
  221. package/lib-module/SideNav/Item.js +39 -33
  222. package/lib-module/SideNav/ItemContent.js +14 -11
  223. package/lib-module/SideNav/ItemsGroup.js +13 -11
  224. package/lib-module/SideNav/SideNav.js +21 -18
  225. package/lib-module/Skeleton/Skeleton.js +60 -44
  226. package/lib-module/Skeleton/skeletonWebAnimation.js +1 -1
  227. package/lib-module/Spacer/Spacer.js +6 -5
  228. package/lib-module/StackView/StackView.js +12 -11
  229. package/lib-module/StackView/StackWrap.js +5 -3
  230. package/lib-module/StackView/StackWrapBox.js +12 -11
  231. package/lib-module/StackView/StackWrapGap.js +11 -10
  232. package/lib-module/StackView/common.js +14 -11
  233. package/lib-module/StackView/getStackedContent.js +10 -9
  234. package/lib-module/StepTracker/Step.js +122 -103
  235. package/lib-module/StepTracker/StepTracker.js +48 -38
  236. package/lib-module/Tabs/Tabs.js +57 -27
  237. package/lib-module/Tabs/TabsItem.js +77 -68
  238. package/lib-module/Tags/Tags.js +68 -62
  239. package/lib-module/TextInput/TextArea.js +26 -20
  240. package/lib-module/TextInput/TextInput.js +19 -15
  241. package/lib-module/TextInput/TextInputBase.js +74 -62
  242. package/lib-module/ThemeProvider/ThemeProvider.js +5 -4
  243. package/lib-module/ThemeProvider/useSetTheme.js +6 -3
  244. package/lib-module/ThemeProvider/useThemeTokens.js +7 -2
  245. package/lib-module/ThemeProvider/utils/styles.js +48 -41
  246. package/lib-module/ThemeProvider/utils/theme-tokens.js +32 -20
  247. package/lib-module/ToggleSwitch/ToggleSwitch.js +90 -74
  248. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +37 -35
  249. package/lib-module/Tooltip/Backdrop.js +6 -13
  250. package/lib-module/Tooltip/Backdrop.native.js +5 -4
  251. package/lib-module/Tooltip/Tooltip.js +81 -65
  252. package/lib-module/Tooltip/getTooltipPosition.js +29 -18
  253. package/lib-module/TooltipButton/TooltipButton.js +28 -21
  254. package/lib-module/Typography/Typography.js +35 -31
  255. package/lib-module/ViewportProvider/ViewportProvider.js +4 -3
  256. package/lib-module/ViewportProvider/useViewportListener.js +6 -3
  257. package/lib-module/utils/a11y/semantics.js +4 -1
  258. package/lib-module/utils/a11y/textSize.js +7 -5
  259. package/lib-module/utils/animation/useVerticalExpandAnimation.js +47 -20
  260. package/lib-module/utils/children.js +4 -3
  261. package/lib-module/utils/input.js +28 -29
  262. package/lib-module/utils/pressability.js +35 -21
  263. package/lib-module/utils/props/clickProps.js +2 -1
  264. package/lib-module/utils/props/componentPropType.js +3 -3
  265. package/lib-module/utils/props/getPropSelector.js +6 -3
  266. package/lib-module/utils/props/handlerProps.js +24 -18
  267. package/lib-module/utils/props/hrefAttrsProp.js +14 -11
  268. package/lib-module/utils/props/inputSupportsProps.js +15 -12
  269. package/lib-module/utils/props/linkProps.js +7 -6
  270. package/lib-module/utils/props/selectSystemProps.js +2 -2
  271. package/lib-module/utils/props/tokens.js +27 -14
  272. package/lib-module/utils/ssr.js +5 -2
  273. package/lib-module/utils/useCopy.js +6 -4
  274. package/lib-module/utils/useHash.js +2 -1
  275. package/lib-module/utils/useSpacingScale.js +3 -1
  276. package/lib-module/utils/useUniqueId.js +3 -2
  277. package/lib-module/utils/withLinkRouter.js +6 -5
  278. package/package.json +13 -11
  279. package/src/ExpandCollapse/Panel.jsx +2 -19
  280. package/src/List/List.jsx +34 -19
  281. package/src/List/ListItem.jsx +12 -2
  282. package/src/Modal/Modal.jsx +2 -1
  283. package/src/Pagination/Pagination.jsx +3 -0
  284. package/src/Search/Search.jsx +11 -0
  285. package/src/Select/Item.native.jsx +0 -7
  286. package/src/Tabs/Tabs.jsx +24 -2
  287. package/src/Tabs/TabsItem.jsx +6 -5
  288. package/src/utils/animation/useVerticalExpandAnimation.js +47 -13
@@ -39,37 +39,46 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
39
39
 
40
40
  const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.viewProps]);
41
41
 
42
- const selectContainerStyles = ({
43
- containerPaddingBottom,
44
- containerPaddingLeft,
45
- containerPaddingRight,
46
- containerPaddingTop
47
- }) => ({
48
- paddingBottom: containerPaddingBottom,
49
- paddingLeft: containerPaddingLeft,
50
- paddingRight: containerPaddingRight,
51
- paddingTop: containerPaddingTop
52
- });
42
+ const selectContainerStyles = _ref => {
43
+ let {
44
+ containerPaddingBottom,
45
+ containerPaddingLeft,
46
+ containerPaddingRight,
47
+ containerPaddingTop
48
+ } = _ref;
49
+ return {
50
+ paddingBottom: containerPaddingBottom,
51
+ paddingLeft: containerPaddingLeft,
52
+ paddingRight: containerPaddingRight,
53
+ paddingTop: containerPaddingTop
54
+ };
55
+ };
53
56
 
54
- const selectStepTrackerLabelContainerStyles = ({
55
- labelMarginTop
56
- }) => ({
57
- marginTop: labelMarginTop
58
- });
57
+ const selectStepTrackerLabelContainerStyles = _ref2 => {
58
+ let {
59
+ labelMarginTop
60
+ } = _ref2;
61
+ return {
62
+ marginTop: labelMarginTop
63
+ };
64
+ };
59
65
 
60
- const selectStepTrackerLabelStyles = ({
61
- labelColor,
62
- labelFontSize,
63
- labelFontWeight,
64
- labelFontName,
65
- labelLineHeight
66
- }) => (0, _ThemeProvider.applyTextStyles)({
67
- color: labelColor,
68
- fontSize: labelFontSize,
69
- lineHeight: labelLineHeight,
70
- fontWeight: labelFontWeight,
71
- fontName: labelFontName
72
- });
66
+ const selectStepTrackerLabelStyles = _ref3 => {
67
+ let {
68
+ labelColor,
69
+ labelFontSize,
70
+ labelFontWeight,
71
+ labelFontName,
72
+ labelLineHeight
73
+ } = _ref3;
74
+ return (0, _ThemeProvider.applyTextStyles)({
75
+ color: labelColor,
76
+ fontSize: labelFontSize,
77
+ lineHeight: labelLineHeight,
78
+ fontWeight: labelFontWeight,
79
+ fontName: labelFontName
80
+ });
81
+ };
73
82
  /**
74
83
  * StepTracker component shows the current position in a sequence of steps.
75
84
  *
@@ -104,15 +113,16 @@ const selectStepTrackerLabelStyles = ({
104
113
  */
105
114
 
106
115
 
107
- const StepTracker = /*#__PURE__*/(0, _react.forwardRef)(({
108
- current = 0,
109
- copy = 'en',
110
- dictionary = _dictionary.default,
111
- steps = [],
112
- tokens,
113
- variant,
114
- ...rest
115
- }, ref) => {
116
+ const StepTracker = /*#__PURE__*/(0, _react.forwardRef)((_ref4, ref) => {
117
+ let {
118
+ current = 0,
119
+ copy = 'en',
120
+ dictionary = _dictionary.default,
121
+ steps = [],
122
+ tokens,
123
+ variant,
124
+ ...rest
125
+ } = _ref4;
116
126
  const viewport = (0, _ViewportProvider.useViewport)();
117
127
  const {
118
128
  showStepTrackerLabel,
package/lib/Tabs/Tabs.js CHANGED
@@ -34,24 +34,45 @@ const {
34
34
  selectHorizontalScrollTokens,
35
35
  useItemPositions
36
36
  } = _HorizontalScroll.horizontalScrollUtils;
37
+
38
+ const getDefaultTabItemAccessibilityRole = parentRole => {
39
+ switch (parentRole) {
40
+ case 'tablist':
41
+ return 'tab';
42
+
43
+ case 'navigation':
44
+ return 'link';
45
+
46
+ default:
47
+ return undefined;
48
+ }
49
+ };
37
50
  /**
38
51
  * Tabs renders a horizontally-scrolling menu of selectable buttons which may link
39
52
  * to a page or control what content is displayed on this page.
53
+ *
54
+ * If you are using Tabs to navigate to a new page (web-only) you should pass
55
+ * `navigation`as the `accessibilityRole` to te Tabs component, this will cause
56
+ * TabItems to default to a role of link and obtain aria-current behaviour.
40
57
  */
41
58
 
42
- const Tabs = /*#__PURE__*/(0, _react.forwardRef)(({
43
- tokens,
44
- itemTokens,
45
- scrollButtonTokens,
46
- variant,
47
- value,
48
- initialValue,
49
- onChange,
50
- items = [],
51
- LinkRouter,
52
- linkRouterProps,
53
- ...rest
54
- }, ref) => {
59
+
60
+ const Tabs = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
61
+ var _restProps$accessibil;
62
+
63
+ let {
64
+ tokens,
65
+ itemTokens,
66
+ scrollButtonTokens,
67
+ variant,
68
+ value,
69
+ initialValue,
70
+ onChange,
71
+ items = [],
72
+ LinkRouter,
73
+ linkRouterProps,
74
+ ...rest
75
+ } = _ref;
55
76
  const {
56
77
  space,
57
78
  ...themeTokens
@@ -66,32 +87,40 @@ const Tabs = /*#__PURE__*/(0, _react.forwardRef)(({
66
87
  });
67
88
  const [itemPositions, isPositioningReady] = useItemPositions();
68
89
  (0, _utils.useHash)((0, _react.useCallback)((hash, event) => {
69
- const hashItem = hash && items.find(({
70
- href
71
- }) => hash === href);
90
+ const hashItem = hash && items.find(_ref2 => {
91
+ let {
92
+ href
93
+ } = _ref2;
94
+ return hash === href;
95
+ });
72
96
  const hashId = hashItem && (hashItem.id || hashItem.label);
73
97
  if (hashId) setTimeout(setValue(hashId, event), 500);
74
98
  }, [items, setValue]), isPositioningReady);
99
+ const restProps = selectProps(rest);
100
+ const parentAccessibilityRole = (_restProps$accessibil = restProps.accessibilityRole) !== null && _restProps$accessibil !== void 0 ? _restProps$accessibil : 'tablist';
101
+ const defaultTabItemAccessibiltyRole = getDefaultTabItemAccessibilityRole(parentAccessibilityRole);
75
102
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_HorizontalScroll.default, {
76
103
  ref: ref,
77
104
  ScrollButton: _HorizontalScroll.HorizontalScrollButton,
78
105
  itemPositions: itemPositions,
79
106
  tokens: selectHorizontalScrollTokens(themeTokens),
80
107
  scrollButtonTokens: scrollButtonTokens,
81
- accessibilityRole: "tablist",
82
- ...selectProps(rest),
108
+ accessibilityRole: parentAccessibilityRole,
109
+ ...restProps,
83
110
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_StackView.default, {
84
111
  space: space,
85
112
  direction: "row",
86
- children: items.map(({
87
- href,
88
- label,
89
- id,
90
- ref: itemRef,
91
- LinkRouter: ItemLinkRouter = LinkRouter,
92
- linkRouterProps: itemLinkRouterProps
93
- }, index) => {
94
- const itemId = id ?? label;
113
+ children: items.map((_ref3, index) => {
114
+ let {
115
+ href,
116
+ label,
117
+ id,
118
+ accessibilityRole = defaultTabItemAccessibiltyRole,
119
+ ref: itemRef,
120
+ LinkRouter: ItemLinkRouter = LinkRouter,
121
+ linkRouterProps: itemLinkRouterProps
122
+ } = _ref3;
123
+ const itemId = id !== null && id !== void 0 ? id : label;
95
124
  const isSelected = Boolean(currentValue && currentValue === itemId);
96
125
 
97
126
  const handlePress = event => setValue(itemId, event);
@@ -105,6 +134,7 @@ const Tabs = /*#__PURE__*/(0, _react.forwardRef)(({
105
134
  selected: isSelected,
106
135
  itemPositions: itemPositions,
107
136
  index: index,
137
+ accessibilityRole: accessibilityRole,
108
138
  LinkRouter: ItemLinkRouter,
109
139
  linkRouterProps: { ...linkRouterProps,
110
140
  ...itemLinkRouterProps
@@ -41,56 +41,65 @@ const {
41
41
  getItemPositionLayoutHandler
42
42
  } = _HorizontalScroll.horizontalScrollUtils;
43
43
 
44
- const selectHighlightBarStyles = ({
45
- highlightColor,
46
- highlightBarBorderRadius = 0,
47
- highlightBarBorderWidth = 0,
48
- highlightBarHeight = 0
49
- }) => ({
50
- backgroundColor: highlightColor,
51
- borderColor: highlightColor,
52
- height: highlightBarHeight + highlightBarBorderWidth * 2,
53
- borderRadius: highlightBarBorderRadius,
54
- borderWidth: highlightBarBorderWidth,
55
- bottom: -1 * (highlightBarHeight + highlightBarBorderWidth),
56
- left: -1 * highlightBarBorderWidth,
57
- right: -1 * highlightBarBorderWidth,
58
- zIndex: 1 + highlightBarBorderWidth
59
- });
44
+ const selectHighlightBarStyles = _ref => {
45
+ let {
46
+ highlightColor,
47
+ highlightBarBorderRadius = 0,
48
+ highlightBarBorderWidth = 0,
49
+ highlightBarHeight = 0
50
+ } = _ref;
51
+ return {
52
+ backgroundColor: highlightColor,
53
+ borderColor: highlightColor,
54
+ height: highlightBarHeight + highlightBarBorderWidth * 2,
55
+ borderRadius: highlightBarBorderRadius,
56
+ borderWidth: highlightBarBorderWidth,
57
+ bottom: -1 * (highlightBarHeight + highlightBarBorderWidth),
58
+ left: -1 * highlightBarBorderWidth,
59
+ right: -1 * highlightBarBorderWidth,
60
+ zIndex: 1 + highlightBarBorderWidth
61
+ };
62
+ };
60
63
 
61
- const selectHighlightTriangleStyles = ({
62
- highlightColor,
63
- highlightTriangleSize
64
- }) => ({
65
- container: {
66
- bottom: 0 - highlightTriangleSize * 2
67
- },
68
- triangle: {
69
- height: 0,
70
- width: 0,
71
- borderWidth: highlightTriangleSize,
72
- borderTopColor: highlightColor,
73
- borderBottomColor: 'transparent',
74
- borderLeftColor: 'transparent',
75
- borderRightColor: 'transparent'
76
- }
77
- });
64
+ const selectHighlightTriangleStyles = _ref2 => {
65
+ let {
66
+ highlightColor,
67
+ highlightTriangleSize
68
+ } = _ref2;
69
+ return {
70
+ container: {
71
+ bottom: 0 - highlightTriangleSize * 2
72
+ },
73
+ triangle: {
74
+ height: 0,
75
+ width: 0,
76
+ borderWidth: highlightTriangleSize,
77
+ borderTopColor: highlightColor,
78
+ borderBottomColor: 'transparent',
79
+ borderLeftColor: 'transparent',
80
+ borderRightColor: 'transparent'
81
+ }
82
+ };
83
+ };
78
84
 
79
- const selectContainerStyles = ({
80
- backgroundColor,
81
- borderColor,
82
- borderWidth = 0,
83
- borderRadius,
84
- paddingHorizontal = 0,
85
- paddingVertical = 0
86
- }) => ({
87
- backgroundColor,
88
- borderColor,
89
- borderWidth,
90
- borderRadius,
91
- paddingHorizontal: paddingHorizontal - borderWidth,
92
- paddingVertical: paddingVertical - borderWidth
93
- });
85
+ const selectContainerStyles = _ref3 => {
86
+ let {
87
+ backgroundColor,
88
+ borderColor,
89
+ borderWidth = 0,
90
+ borderRadius,
91
+ paddingHorizontal = 0,
92
+ paddingVertical = 0
93
+ } = _ref3;
94
+ return {
95
+ backgroundColor,
96
+ borderColor,
97
+ borderWidth,
98
+ borderRadius,
99
+ paddingHorizontal: paddingHorizontal - borderWidth,
100
+ paddingVertical: paddingVertical - borderWidth
101
+ };
102
+ };
94
103
  /**
95
104
  * Item within a Tabs component representing one tab of content. May be rendered as a link
96
105
  * or as a "menuitem" button depending on whether 'href' is passed.
@@ -99,23 +108,23 @@ const selectContainerStyles = ({
99
108
  */
100
109
 
101
110
 
102
- const TabsItem = /*#__PURE__*/(0, _react.forwardRef)(({
103
- href,
104
- variant,
105
- tokens,
106
- selected,
107
- itemPositions,
108
- index,
109
- children,
110
- accessibilityRole = href ? 'link' : 'tab',
111
- accessibilityState = _Platform.default.OS === 'web' && accessibilityRole === 'link' ? // Web links can't be aria-selected but can be aria-current
112
- {
113
- current: selected ? 'page' : false
114
- } : {
115
- selected
116
- },
117
- ...rawRest
118
- }, ref) => {
111
+ const TabsItem = /*#__PURE__*/(0, _react.forwardRef)((_ref4, ref) => {
112
+ let {
113
+ href,
114
+ variant,
115
+ tokens,
116
+ selected,
117
+ itemPositions,
118
+ index,
119
+ children,
120
+ accessibilityRole,
121
+ accessibilityCurrent = _Platform.default.OS === 'web' && accessibilityRole === 'link' && selected ? 'page' : undefined,
122
+ accessibilityState = accessibilityRole === 'tab' ? {
123
+ selected
124
+ } : undefined,
125
+ ...rawRest
126
+ } = _ref4;
127
+
119
128
  // Convert onClick etc to onPress etc if used in an integration
120
129
  const {
121
130
  onPress,
@@ -145,12 +154,13 @@ const TabsItem = /*#__PURE__*/(0, _react.forwardRef)(({
145
154
  href
146
155
  });
147
156
 
148
- const handlePress = onPress || openHref ? (...args) => {
149
- if (onPress) onPress(...args);
150
- if (openHref) openHref(...args);
157
+ const handlePress = onPress || openHref ? function () {
158
+ if (onPress) onPress(...arguments);
159
+ if (openHref) openHref(...arguments);
151
160
  } : undefined;
152
161
  const selectedProps = selectProps({
153
162
  accessibilityRole,
163
+ accessibilityCurrent,
154
164
  accessibilityState,
155
165
  ...rest
156
166
  });
package/lib/Tags/Tags.js CHANGED
@@ -42,58 +42,62 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
42
42
  const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.viewProps]);
43
43
  const [selectItemProps, selectedItemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.focusHandlerProps, _utils.pressProps, _utils.viewProps]);
44
44
 
45
- const selectIconTextTokens = ({
46
- icon,
47
- iconPosition,
48
- iconSpace,
49
- iconSize,
50
- iconColor,
51
- iconBackground,
52
- iconBorderRadius,
53
- iconAlignSelf,
54
- iconPadding,
55
- iconTranslateX,
56
- iconTranslateY
57
- }) => ({
58
- icon,
59
- iconPosition,
60
- iconSpace,
61
- iconWrapperStyle: {
62
- backgroundColor: iconBackground,
63
- borderRadius: iconBorderRadius,
64
- alignSelf: iconAlignSelf,
65
- padding: iconPadding,
66
- ..._Platform.default.select({
67
- // TODO: https://github.com/telus/universal-design-system/issues/487
68
- web: {
69
- transition: 'color 200ms, background 200ms'
70
- }
71
- })
72
- },
73
- iconTokens: {
74
- size: iconSize,
75
- color: iconColor,
76
- translateX: iconTranslateX,
77
- translateY: iconTranslateY
78
- }
79
- });
45
+ const selectIconTextTokens = _ref => {
46
+ let {
47
+ icon,
48
+ iconPosition,
49
+ iconSpace,
50
+ iconSize,
51
+ iconColor,
52
+ iconBackground,
53
+ iconBorderRadius,
54
+ iconAlignSelf,
55
+ iconPadding,
56
+ iconTranslateX,
57
+ iconTranslateY
58
+ } = _ref;
59
+ return {
60
+ icon,
61
+ iconPosition,
62
+ iconSpace,
63
+ iconWrapperStyle: {
64
+ backgroundColor: iconBackground,
65
+ borderRadius: iconBorderRadius,
66
+ alignSelf: iconAlignSelf,
67
+ padding: iconPadding,
68
+ ..._Platform.default.select({
69
+ // TODO: https://github.com/telus/universal-design-system/issues/487
70
+ web: {
71
+ transition: 'color 200ms, background 200ms'
72
+ }
73
+ })
74
+ },
75
+ iconTokens: {
76
+ size: iconSize,
77
+ color: iconColor,
78
+ translateX: iconTranslateX,
79
+ translateY: iconTranslateY
80
+ }
81
+ };
82
+ };
80
83
 
81
- const Tags = /*#__PURE__*/(0, _react.forwardRef)(({
82
- variant,
83
- tokens,
84
- items = [],
85
- values,
86
- initialValues,
87
- maxValues,
88
- onChange,
89
- readOnly = false,
90
- inactive = false,
91
- accessibilityRole = _Platform.default.select({
92
- web: 'group',
93
- default: 'none'
94
- }),
95
- ...rest
96
- }, ref) => {
84
+ const Tags = /*#__PURE__*/(0, _react.forwardRef)((_ref2, ref) => {
85
+ let {
86
+ variant,
87
+ tokens,
88
+ items = [],
89
+ values,
90
+ initialValues,
91
+ maxValues,
92
+ onChange,
93
+ readOnly = false,
94
+ inactive = false,
95
+ accessibilityRole = _Platform.default.select({
96
+ web: 'group',
97
+ default: 'none'
98
+ }),
99
+ ...rest
100
+ } = _ref2;
97
101
  const viewport = (0, _ViewportProvider.useViewport)();
98
102
  const themeTokens = (0, _ThemeProvider.useThemeTokens)('Tags', tokens, variant, {
99
103
  viewport
@@ -125,7 +129,7 @@ const Tags = /*#__PURE__*/(0, _react.forwardRef)(({
125
129
  const uniqueFields = ['id', 'label'];
126
130
 
127
131
  if (!(0, _utils.containUniqueFields)(items, uniqueFields)) {
128
- throw new Error(`Tags items must have unique ${uniqueFields.join(', ')}`);
132
+ throw new Error("Tags items must have unique ".concat(uniqueFields.join(', ')));
129
133
  }
130
134
 
131
135
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_StackView.StackWrap, {
@@ -134,12 +138,13 @@ const Tags = /*#__PURE__*/(0, _react.forwardRef)(({
134
138
  space: space,
135
139
  direction: direction,
136
140
  tokens: stackTokens,
137
- children: items.map(({
138
- label,
139
- id = label,
140
- ref: itemRef,
141
- ...itemRest
142
- }, index) => {
141
+ children: items.map((_ref3, index) => {
142
+ let {
143
+ label,
144
+ id = label,
145
+ ref: itemRef,
146
+ ...itemRest
147
+ } = _ref3;
143
148
  const isSelected = currentValues.includes(id); // Pass an object of relevant component state as first argument for any passed-in press handlers
144
149
 
145
150
  const pressHandlers = (0, _pressability.getPressHandlersWithArgs)(rest, [{
@@ -169,10 +174,11 @@ const Tags = /*#__PURE__*/(0, _react.forwardRef)(({
169
174
  selected: isSelected,
170
175
  inactive: inactive,
171
176
  ...itemProps,
172
- children: ({
173
- textStyles,
174
- ...buttonState
175
- }) => {
177
+ children: _ref4 => {
178
+ let {
179
+ textStyles,
180
+ ...buttonState
181
+ } = _ref4;
176
182
  // TODO: once Icon/IconButton designs are stable, see if this sort of styling around
177
183
  // an icon should go in Icon itself, or possibly via an IconText token set. Related issues:
178
184
  // - Icon: https://github.com/telus/universal-design-system/issues/327
@@ -53,21 +53,24 @@ const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_u
53
53
  * It is a more usable and accessible option than the HTML `placeholder` attribute.
54
54
  */
55
55
 
56
- const TextArea = /*#__PURE__*/(0, _react.forwardRef)(({
57
- tokens,
58
- variant = {},
59
- ...rest
60
- }, ref) => {
56
+ const TextArea = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
57
+ let {
58
+ tokens,
59
+ variant = {},
60
+ ...rest
61
+ } = _ref;
61
62
  const themeTokens = (0, _ThemeProvider.useThemeTokens)('TextArea', tokens, variant);
62
63
  const [inputHeight, setInputHeight] = (0, _react.useState)(); // adjust the text area's height as new lines are added to the content
63
64
 
64
- const onHeightChange = ({
65
- nativeEvent: {
66
- contentSize: {
67
- height
65
+ const onHeightChange = _ref2 => {
66
+ let {
67
+ nativeEvent: {
68
+ contentSize: {
69
+ height
70
+ }
68
71
  }
69
- }
70
- }) => {
72
+ } = _ref2;
73
+
71
74
  // on native this is happens out of the box
72
75
  if (_Platform.default.OS === 'web') {
73
76
  setInputHeight(height);
@@ -88,15 +91,18 @@ const TextArea = /*#__PURE__*/(0, _react.forwardRef)(({
88
91
  tokens: themeTokens
89
92
  };
90
93
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_InputSupports.default, { ...supportsProps,
91
- children: ({
92
- inputId,
93
- ...props
94
- }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextInputBase.default, {
95
- ref: ref,
96
- ...inputProps,
97
- nativeID: inputId,
98
- ...props
99
- })
94
+ children: _ref3 => {
95
+ let {
96
+ inputId,
97
+ ...props
98
+ } = _ref3;
99
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextInputBase.default, {
100
+ ref: ref,
101
+ ...inputProps,
102
+ nativeID: inputId,
103
+ ...props
104
+ });
105
+ }
100
106
  });
101
107
  });
102
108
  TextArea.displayName = 'TextArea';
@@ -45,12 +45,14 @@ const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_u
45
45
  * their implementation on the web.
46
46
  */
47
47
 
48
- const TextInput = /*#__PURE__*/(0, _react.forwardRef)(({
49
- tokens,
50
- variant = {},
51
- pattern,
52
- ...rest
53
- }, ref) => {
48
+ const TextInput = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
49
+ let {
50
+ tokens,
51
+ variant = {},
52
+ pattern,
53
+ ...rest
54
+ } = _ref;
55
+
54
56
  _react.default.useEffect(() => {
55
57
  if (_Platform.default.OS === 'web' && pattern && ref.current) {
56
58
  // eslint-disable-next-line no-param-reassign
@@ -69,15 +71,18 @@ const TextInput = /*#__PURE__*/(0, _react.forwardRef)(({
69
71
  }
70
72
  };
71
73
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_InputSupports.default, { ...supportsProps,
72
- children: ({
73
- inputId,
74
- ...props
75
- }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextInputBase.default, {
76
- ref: ref,
77
- ...inputProps,
78
- nativeID: inputId,
79
- ...props
80
- })
74
+ children: _ref2 => {
75
+ let {
76
+ inputId,
77
+ ...props
78
+ } = _ref2;
79
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextInputBase.default, {
80
+ ref: ref,
81
+ ...inputProps,
82
+ nativeID: inputId,
83
+ ...props
84
+ });
85
+ }
81
86
  });
82
87
  });
83
88
  TextInput.displayName = 'TextInput';