@telus-uds/components-base 1.65.0 → 1.67.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.
Files changed (487) hide show
  1. package/CHANGELOG.md +22 -2
  2. package/lib/A11yInfoProvider/index.js +5 -20
  3. package/lib/A11yText/index.js +3 -17
  4. package/lib/ActivityIndicator/Spinner.js +2 -9
  5. package/lib/ActivityIndicator/Spinner.native.js +4 -27
  6. package/lib/ActivityIndicator/index.js +1 -13
  7. package/lib/ActivityIndicator/shared.js +0 -3
  8. package/lib/Autocomplete/Autocomplete.js +34 -85
  9. package/lib/Autocomplete/Loading.js +0 -10
  10. package/lib/Autocomplete/Suggestions.js +0 -11
  11. package/lib/Autocomplete/index.js +0 -3
  12. package/lib/BaseProvider/HydrationContext.js +4 -18
  13. package/lib/BaseProvider/index.js +0 -12
  14. package/lib/Box/Box.js +10 -35
  15. package/lib/Box/index.js +0 -3
  16. package/lib/Button/Button.js +4 -13
  17. package/lib/Button/ButtonBase.js +23 -55
  18. package/lib/Button/ButtonDropdown.js +7 -32
  19. package/lib/Button/ButtonGroup.js +15 -48
  20. package/lib/Button/ButtonLink.js +3 -17
  21. package/lib/Button/index.js +0 -5
  22. package/lib/Button/propTypes.js +0 -15
  23. package/lib/Card/Card.js +3 -14
  24. package/lib/Card/CardBase.js +5 -16
  25. package/lib/Card/PressableCardBase.js +7 -30
  26. package/lib/Card/index.js +0 -7
  27. package/lib/Carousel/Carousel.js +22 -115
  28. package/lib/Carousel/CarouselContext.js +0 -14
  29. package/lib/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +6 -18
  30. package/lib/Carousel/CarouselItem/CarouselItem.js +5 -20
  31. package/lib/Carousel/CarouselItem/index.js +0 -3
  32. package/lib/Carousel/CarouselStepTracker/CarouselStepTracker.js +0 -9
  33. package/lib/Carousel/CarouselStepTracker/index.js +0 -3
  34. package/lib/Carousel/CarouselTabs/CarouselTabs.js +5 -15
  35. package/lib/Carousel/CarouselTabs/CarouselTabsPanel.js +7 -16
  36. package/lib/Carousel/CarouselTabs/CarouselTabsPanelItem.js +2 -22
  37. package/lib/Carousel/CarouselTabs/index.js +0 -3
  38. package/lib/Carousel/CarouselThumbnail.js +1 -16
  39. package/lib/Carousel/CarouselThumbnailNavigation.js +0 -15
  40. package/lib/Carousel/index.js +0 -5
  41. package/lib/Checkbox/Checkbox.js +5 -44
  42. package/lib/Checkbox/CheckboxButton.js +7 -33
  43. package/lib/Checkbox/CheckboxGroup.js +5 -37
  44. package/lib/Checkbox/CheckboxInput.js +1 -11
  45. package/lib/Checkbox/CheckboxInput.native.js +0 -2
  46. package/lib/Checkbox/index.js +0 -4
  47. package/lib/CheckboxCard/CheckboxCard.js +4 -37
  48. package/lib/CheckboxCard/index.js +0 -3
  49. package/lib/CheckboxCardGroup/CheckboxCardGroup.js +215 -0
  50. package/lib/CheckboxCardGroup/index.js +10 -0
  51. package/lib/Divider/Divider.js +13 -24
  52. package/lib/Divider/index.js +0 -3
  53. package/lib/ExpandCollapse/Accordion.js +1 -9
  54. package/lib/ExpandCollapse/Control.js +10 -32
  55. package/lib/ExpandCollapse/ExpandCollapse.js +3 -19
  56. package/lib/ExpandCollapse/Panel.js +13 -38
  57. package/lib/ExpandCollapse/index.js +0 -5
  58. package/lib/Feedback/Feedback.js +13 -30
  59. package/lib/Feedback/index.js +0 -3
  60. package/lib/Fieldset/Fieldset.js +6 -37
  61. package/lib/Fieldset/FieldsetContainer.js +1 -10
  62. package/lib/Fieldset/FieldsetContainer.native.js +0 -8
  63. package/lib/Fieldset/Legend.js +1 -10
  64. package/lib/Fieldset/Legend.native.js +1 -13
  65. package/lib/Fieldset/index.js +0 -3
  66. package/lib/FlexGrid/Col/Col.js +10 -53
  67. package/lib/FlexGrid/Col/index.js +0 -3
  68. package/lib/FlexGrid/FlexGrid.js +3 -34
  69. package/lib/FlexGrid/Row/Row.js +0 -38
  70. package/lib/FlexGrid/Row/index.js +0 -3
  71. package/lib/FlexGrid/helpers/index.js +0 -4
  72. package/lib/FlexGrid/index.js +0 -3
  73. package/lib/FlexGrid/providers/GutterContext.js +0 -4
  74. package/lib/HorizontalScroll/HorizontalScroll.js +17 -45
  75. package/lib/HorizontalScroll/HorizontalScrollButton.js +1 -17
  76. package/lib/HorizontalScroll/ScrollViewEnd.js +5 -13
  77. package/lib/HorizontalScroll/ScrollViewEnd.native.js +1 -10
  78. package/lib/HorizontalScroll/index.js +0 -7
  79. package/lib/HorizontalScroll/itemPositions.js +8 -19
  80. package/lib/Icon/Icon.js +4 -17
  81. package/lib/Icon/IconText.js +5 -25
  82. package/lib/Icon/index.js +0 -6
  83. package/lib/IconButton/IconButton.js +5 -37
  84. package/lib/IconButton/index.js +0 -3
  85. package/lib/InputLabel/InputLabel.js +4 -28
  86. package/lib/InputLabel/LabelContent.js +2 -8
  87. package/lib/InputLabel/LabelContent.native.js +0 -8
  88. package/lib/InputLabel/index.js +0 -3
  89. package/lib/InputSupports/InputSupports.js +0 -21
  90. package/lib/InputSupports/index.js +0 -3
  91. package/lib/InputSupports/useInputSupports.js +2 -6
  92. package/lib/Link/ChevronLink.js +7 -18
  93. package/lib/Link/InlinePressable.js +0 -10
  94. package/lib/Link/InlinePressable.native.js +5 -18
  95. package/lib/Link/Link.js +0 -8
  96. package/lib/Link/LinkBase.js +17 -47
  97. package/lib/Link/TextButton.js +3 -16
  98. package/lib/Link/index.js +0 -5
  99. package/lib/List/List.js +5 -21
  100. package/lib/List/ListItem.js +1 -11
  101. package/lib/List/ListItemBase.js +5 -34
  102. package/lib/List/ListItemContent.js +1 -14
  103. package/lib/List/ListItemMark.js +3 -23
  104. package/lib/List/PressableListItemBase.js +2 -28
  105. package/lib/List/index.js +0 -4
  106. package/lib/Listbox/GroupControl.js +0 -14
  107. package/lib/Listbox/Listbox.js +15 -40
  108. package/lib/Listbox/ListboxContext.js +0 -7
  109. package/lib/Listbox/ListboxGroup.js +7 -19
  110. package/lib/Listbox/ListboxItem.js +3 -17
  111. package/lib/Listbox/ListboxOverlay.js +4 -20
  112. package/lib/Listbox/PressableItem.js +3 -18
  113. package/lib/Listbox/index.js +0 -3
  114. package/lib/Modal/Modal.js +94 -45
  115. package/lib/Modal/ModalContent.js +184 -0
  116. package/lib/Modal/index.js +0 -3
  117. package/lib/MultiSelectFilter/ModalOverlay.js +1 -20
  118. package/lib/MultiSelectFilter/MultiSelectFilter.js +20 -69
  119. package/lib/MultiSelectFilter/index.js +0 -3
  120. package/lib/Notification/Notification.js +11 -38
  121. package/lib/Notification/index.js +0 -3
  122. package/lib/Pagination/PageButton.js +2 -22
  123. package/lib/Pagination/Pagination.js +21 -42
  124. package/lib/Pagination/SideButton.js +0 -24
  125. package/lib/Pagination/index.js +0 -3
  126. package/lib/Pagination/usePagination.js +4 -9
  127. package/lib/Progress/Progress.js +3 -17
  128. package/lib/Progress/ProgressBar.js +3 -25
  129. package/lib/Progress/ProgressBarBackground.js +0 -12
  130. package/lib/Progress/index.js +0 -4
  131. package/lib/QuickLinks/QuickLinks.js +1 -18
  132. package/lib/QuickLinks/QuickLinksCard.js +1 -11
  133. package/lib/QuickLinks/QuickLinksItem.js +3 -17
  134. package/lib/QuickLinks/index.js +0 -4
  135. package/lib/QuickLinksFeature/QuickLinksFeature.js +3 -20
  136. package/lib/QuickLinksFeature/QuickLinksFeatureItem.js +7 -30
  137. package/lib/QuickLinksFeature/index.js +0 -4
  138. package/lib/Radio/Radio.js +5 -39
  139. package/lib/Radio/RadioButton.js +7 -26
  140. package/lib/Radio/RadioGroup.js +6 -39
  141. package/lib/Radio/RadioInput.js +1 -11
  142. package/lib/Radio/RadioInput.native.js +0 -2
  143. package/lib/Radio/index.js +0 -4
  144. package/lib/RadioCard/RadioCard.js +5 -38
  145. package/lib/RadioCard/RadioCardGroup.js +7 -38
  146. package/lib/RadioCard/index.js +0 -4
  147. package/lib/Responsive/Responsive.js +1 -14
  148. package/lib/Responsive/index.js +0 -3
  149. package/lib/Search/Search.js +22 -45
  150. package/lib/Search/index.js +0 -3
  151. package/lib/Select/Group.js +0 -8
  152. package/lib/Select/Group.native.js +0 -6
  153. package/lib/Select/Item.js +0 -7
  154. package/lib/Select/Item.native.js +0 -2
  155. package/lib/Select/Picker.js +0 -8
  156. package/lib/Select/Picker.native.js +6 -22
  157. package/lib/Select/Select.js +9 -52
  158. package/lib/Select/index.js +0 -5
  159. package/lib/SideNav/Item.js +5 -29
  160. package/lib/SideNav/ItemContent.js +1 -14
  161. package/lib/SideNav/ItemsGroup.js +9 -31
  162. package/lib/SideNav/SideNav.js +9 -33
  163. package/lib/SideNav/index.js +0 -2
  164. package/lib/Skeleton/Skeleton.js +10 -42
  165. package/lib/Skeleton/index.js +0 -3
  166. package/lib/Skeleton/skeletonWebAnimation.js +0 -2
  167. package/lib/Skeleton/useSkeletonNativeAnimation.js +1 -9
  168. package/lib/SkipLink/SkipLink.js +7 -27
  169. package/lib/SkipLink/index.js +0 -3
  170. package/lib/Spacer/Spacer.js +4 -20
  171. package/lib/Spacer/index.js +0 -3
  172. package/lib/StackView/StackView.js +3 -21
  173. package/lib/StackView/StackWrap.js +11 -21
  174. package/lib/StackView/StackWrap.native.js +0 -3
  175. package/lib/StackView/StackWrapBox.js +5 -21
  176. package/lib/StackView/StackWrapGap.js +1 -14
  177. package/lib/StackView/common.js +0 -6
  178. package/lib/StackView/getStackedContent.js +10 -21
  179. package/lib/StackView/index.js +0 -5
  180. package/lib/StepTracker/Step.js +3 -27
  181. package/lib/StepTracker/StepTracker.js +5 -32
  182. package/lib/StepTracker/index.js +0 -3
  183. package/lib/Tabs/Tabs.js +7 -30
  184. package/lib/Tabs/TabsItem.js +13 -38
  185. package/lib/Tabs/index.js +0 -3
  186. package/lib/Tags/Tags.js +9 -42
  187. package/lib/Tags/index.js +0 -3
  188. package/lib/TextInput/TextArea.js +11 -20
  189. package/lib/TextInput/TextInput.js +7 -16
  190. package/lib/TextInput/TextInputBase.js +106 -69
  191. package/lib/TextInput/index.js +0 -3
  192. package/lib/TextInput/propTypes.js +4 -7
  193. package/lib/ThemeProvider/ThemeProvider.js +10 -18
  194. package/lib/ThemeProvider/index.js +0 -9
  195. package/lib/ThemeProvider/useSetTheme.js +6 -9
  196. package/lib/ThemeProvider/useTheme.js +2 -7
  197. package/lib/ThemeProvider/useThemeTokens.js +1 -9
  198. package/lib/ThemeProvider/utils/index.js +0 -4
  199. package/lib/ThemeProvider/utils/styles.js +14 -35
  200. package/lib/ThemeProvider/utils/theme-tokens.js +15 -43
  201. package/lib/Timeline/Timeline.js +11 -27
  202. package/lib/Timeline/index.js +0 -3
  203. package/lib/ToggleSwitch/ToggleSwitch.js +12 -43
  204. package/lib/ToggleSwitch/ToggleSwitchGroup.js +4 -38
  205. package/lib/ToggleSwitch/index.js +0 -3
  206. package/lib/Tooltip/Backdrop.js +4 -11
  207. package/lib/Tooltip/Backdrop.native.js +1 -14
  208. package/lib/Tooltip/Tooltip.js +9 -37
  209. package/lib/Tooltip/Tooltip.native.js +14 -45
  210. package/lib/Tooltip/getTooltipPosition.js +26 -31
  211. package/lib/Tooltip/index.js +0 -5
  212. package/lib/Tooltip/shared.js +0 -10
  213. package/lib/TooltipButton/TooltipButton.js +5 -20
  214. package/lib/TooltipButton/index.js +0 -3
  215. package/lib/Typography/Typography.js +15 -38
  216. package/lib/Typography/index.js +0 -3
  217. package/lib/Validator/Validator.js +10 -58
  218. package/lib/Validator/index.js +0 -3
  219. package/lib/ViewportProvider/ViewportProvider.js +1 -13
  220. package/lib/ViewportProvider/index.js +0 -5
  221. package/lib/ViewportProvider/useViewport.js +0 -4
  222. package/lib/ViewportProvider/useViewportListener.js +3 -12
  223. package/lib/index.js +8 -71
  224. package/lib/utils/BaseView/BaseView.js +3 -17
  225. package/lib/utils/BaseView/BaseView.native.js +0 -3
  226. package/lib/utils/BaseView/index.js +0 -3
  227. package/lib/utils/a11y/index.js +0 -4
  228. package/lib/utils/a11y/semantics.js +14 -32
  229. package/lib/utils/a11y/textSize.js +1 -8
  230. package/lib/utils/animation/index.js +0 -2
  231. package/lib/utils/animation/useVerticalExpandAnimation.js +5 -18
  232. package/lib/utils/children.js +16 -28
  233. package/lib/utils/containUniqueFields.js +2 -5
  234. package/lib/utils/floating-ui/index.js +0 -1
  235. package/lib/utils/floating-ui/index.native.js +0 -1
  236. package/lib/utils/hasOwnProperty.js +0 -1
  237. package/lib/utils/htmlAttrs.js +2 -4
  238. package/lib/utils/index.js +0 -31
  239. package/lib/utils/info/index.js +0 -4
  240. package/lib/utils/info/platform/index.js +0 -4
  241. package/lib/utils/info/versions.js +0 -3
  242. package/lib/utils/input.js +12 -24
  243. package/lib/utils/pressability.js +7 -21
  244. package/lib/utils/props/a11yProps.js +19 -25
  245. package/lib/utils/props/clickProps.js +0 -4
  246. package/lib/utils/props/componentPropType.js +0 -14
  247. package/lib/utils/props/copyPropTypes.js +0 -4
  248. package/lib/utils/props/getPropSelector.js +11 -12
  249. package/lib/utils/props/handlerProps.js +2 -23
  250. package/lib/utils/props/hrefAttrsProp.js +0 -4
  251. package/lib/utils/props/index.js +0 -22
  252. package/lib/utils/props/inputSupportsProps.js +0 -9
  253. package/lib/utils/props/linkProps.js +2 -12
  254. package/lib/utils/props/paddingProp.js +0 -3
  255. package/lib/utils/props/pressProps.js +2 -8
  256. package/lib/utils/props/rectProp.js +0 -3
  257. package/lib/utils/props/responsiveProps.js +1 -5
  258. package/lib/utils/props/selectSystemProps.js +4 -6
  259. package/lib/utils/props/spacingProps.js +3 -10
  260. package/lib/utils/props/textInputProps.js +11 -31
  261. package/lib/utils/props/textProps.js +6 -11
  262. package/lib/utils/props/tokens.js +7 -26
  263. package/lib/utils/props/variantProp.js +0 -3
  264. package/lib/utils/props/viewProps.js +0 -5
  265. package/lib/utils/ssr.js +13 -33
  266. package/lib/utils/useCopy.js +3 -6
  267. package/lib/utils/useHash.js +5 -10
  268. package/lib/utils/useHash.native.js +0 -2
  269. package/lib/utils/useOverlaidPosition.js +6 -29
  270. package/lib/utils/useResponsiveProp.js +6 -13
  271. package/lib/utils/useSafeLayoutEffect.js +5 -10
  272. package/lib/utils/useScrollBlocking.js +3 -11
  273. package/lib/utils/useScrollBlocking.native.js +0 -2
  274. package/lib/utils/useSpacingScale.js +5 -8
  275. package/lib/utils/useUniqueId.js +0 -4
  276. package/lib/utils/withLinkRouter.js +13 -18
  277. package/lib-module/A11yInfoProvider/index.js +5 -9
  278. package/lib-module/A11yText/index.js +3 -4
  279. package/lib-module/ActivityIndicator/Spinner.js +2 -2
  280. package/lib-module/ActivityIndicator/Spinner.native.js +4 -6
  281. package/lib-module/ActivityIndicator/index.js +1 -5
  282. package/lib-module/ActivityIndicator/shared.js +2 -1
  283. package/lib-module/Autocomplete/Autocomplete.js +34 -59
  284. package/lib-module/Autocomplete/Loading.js +0 -2
  285. package/lib-module/BaseProvider/HydrationContext.js +4 -7
  286. package/lib-module/BaseProvider/index.js +0 -3
  287. package/lib-module/Box/Box.js +10 -24
  288. package/lib-module/Button/Button.js +4 -2
  289. package/lib-module/Button/ButtonBase.js +23 -35
  290. package/lib-module/Button/ButtonDropdown.js +7 -16
  291. package/lib-module/Button/ButtonGroup.js +15 -32
  292. package/lib-module/Button/ButtonLink.js +3 -2
  293. package/lib-module/Button/propTypes.js +0 -7
  294. package/lib-module/Card/Card.js +3 -2
  295. package/lib-module/Card/CardBase.js +5 -4
  296. package/lib-module/Card/PressableCardBase.js +7 -11
  297. package/lib-module/Carousel/Carousel.js +22 -60
  298. package/lib-module/Carousel/CarouselContext.js +0 -5
  299. package/lib-module/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +7 -5
  300. package/lib-module/Carousel/CarouselItem/CarouselItem.js +5 -11
  301. package/lib-module/Carousel/CarouselStepTracker/CarouselStepTracker.js +0 -2
  302. package/lib-module/Carousel/CarouselTabs/CarouselTabs.js +3 -4
  303. package/lib-module/Carousel/CarouselTabs/CarouselTabsPanel.js +7 -6
  304. package/lib-module/Carousel/CarouselTabs/CarouselTabsPanelItem.js +2 -10
  305. package/lib-module/Carousel/CarouselThumbnail.js +1 -7
  306. package/lib-module/Carousel/CarouselThumbnailNavigation.js +0 -2
  307. package/lib-module/Checkbox/Checkbox.js +5 -23
  308. package/lib-module/Checkbox/CheckboxButton.js +7 -17
  309. package/lib-module/Checkbox/CheckboxGroup.js +5 -23
  310. package/lib-module/Checkbox/CheckboxInput.js +1 -3
  311. package/lib-module/Checkbox/CheckboxInput.native.js +0 -1
  312. package/lib-module/CheckboxCard/CheckboxCard.js +4 -21
  313. package/lib-module/CheckboxCardGroup/CheckboxCardGroup.js +205 -0
  314. package/lib-module/CheckboxCardGroup/index.js +2 -0
  315. package/lib-module/Divider/Divider.js +13 -11
  316. package/lib-module/ExpandCollapse/Accordion.js +1 -1
  317. package/lib-module/ExpandCollapse/Control.js +10 -17
  318. package/lib-module/ExpandCollapse/ExpandCollapse.js +3 -9
  319. package/lib-module/ExpandCollapse/Panel.js +13 -23
  320. package/lib-module/Feedback/Feedback.js +13 -16
  321. package/lib-module/Fieldset/Fieldset.js +6 -25
  322. package/lib-module/Fieldset/FieldsetContainer.js +1 -1
  323. package/lib-module/Fieldset/FieldsetContainer.native.js +0 -1
  324. package/lib-module/Fieldset/Legend.js +1 -1
  325. package/lib-module/Fieldset/Legend.native.js +1 -1
  326. package/lib-module/FlexGrid/Col/Col.js +10 -37
  327. package/lib-module/FlexGrid/FlexGrid.js +3 -17
  328. package/lib-module/FlexGrid/Row/Row.js +0 -25
  329. package/lib-module/FlexGrid/helpers/index.js +0 -3
  330. package/lib-module/HorizontalScroll/HorizontalScroll.js +17 -27
  331. package/lib-module/HorizontalScroll/HorizontalScrollButton.js +1 -3
  332. package/lib-module/HorizontalScroll/ScrollViewEnd.js +5 -4
  333. package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +0 -1
  334. package/lib-module/HorizontalScroll/itemPositions.js +11 -10
  335. package/lib-module/Icon/Icon.js +4 -8
  336. package/lib-module/Icon/IconText.js +6 -17
  337. package/lib-module/IconButton/IconButton.js +7 -20
  338. package/lib-module/InputLabel/InputLabel.js +4 -13
  339. package/lib-module/InputLabel/LabelContent.js +2 -1
  340. package/lib-module/InputLabel/LabelContent.native.js +0 -1
  341. package/lib-module/InputSupports/InputSupports.js +0 -9
  342. package/lib-module/InputSupports/useInputSupports.js +2 -4
  343. package/lib-module/Link/ChevronLink.js +7 -7
  344. package/lib-module/Link/InlinePressable.js +0 -2
  345. package/lib-module/Link/InlinePressable.native.js +4 -12
  346. package/lib-module/Link/LinkBase.js +17 -25
  347. package/lib-module/Link/TextButton.js +3 -5
  348. package/lib-module/List/List.js +5 -9
  349. package/lib-module/List/ListItem.js +1 -1
  350. package/lib-module/List/ListItemBase.js +5 -17
  351. package/lib-module/List/ListItemContent.js +1 -4
  352. package/lib-module/List/ListItemMark.js +3 -16
  353. package/lib-module/List/PressableListItemBase.js +2 -6
  354. package/lib-module/Listbox/GroupControl.js +0 -2
  355. package/lib-module/Listbox/Listbox.js +15 -23
  356. package/lib-module/Listbox/ListboxContext.js +0 -2
  357. package/lib-module/Listbox/ListboxGroup.js +6 -4
  358. package/lib-module/Listbox/ListboxItem.js +2 -1
  359. package/lib-module/Listbox/ListboxOverlay.js +3 -4
  360. package/lib-module/Listbox/PressableItem.js +2 -7
  361. package/lib-module/Modal/Modal.js +94 -25
  362. package/lib-module/Modal/ModalContent.js +175 -0
  363. package/lib-module/MultiSelectFilter/ModalOverlay.js +1 -4
  364. package/lib-module/MultiSelectFilter/MultiSelectFilter.js +20 -42
  365. package/lib-module/Notification/Notification.js +11 -22
  366. package/lib-module/Pagination/PageButton.js +2 -6
  367. package/lib-module/Pagination/Pagination.js +21 -21
  368. package/lib-module/Pagination/SideButton.js +3 -8
  369. package/lib-module/Pagination/usePagination.js +4 -8
  370. package/lib-module/Progress/Progress.js +3 -7
  371. package/lib-module/Progress/ProgressBar.js +3 -11
  372. package/lib-module/Progress/ProgressBarBackground.js +0 -2
  373. package/lib-module/QuickLinks/QuickLinks.js +1 -6
  374. package/lib-module/QuickLinks/QuickLinksCard.js +1 -3
  375. package/lib-module/QuickLinks/QuickLinksItem.js +3 -2
  376. package/lib-module/QuickLinksFeature/QuickLinksFeature.js +5 -9
  377. package/lib-module/QuickLinksFeature/QuickLinksFeatureItem.js +9 -13
  378. package/lib-module/Radio/Radio.js +5 -22
  379. package/lib-module/Radio/RadioButton.js +8 -10
  380. package/lib-module/Radio/RadioGroup.js +6 -25
  381. package/lib-module/Radio/RadioInput.js +1 -3
  382. package/lib-module/Radio/RadioInput.native.js +0 -1
  383. package/lib-module/RadioCard/RadioCard.js +5 -21
  384. package/lib-module/RadioCard/RadioCardGroup.js +7 -25
  385. package/lib-module/Responsive/Responsive.js +1 -6
  386. package/lib-module/Search/Search.js +22 -31
  387. package/lib-module/Select/Group.js +0 -3
  388. package/lib-module/Select/Group.native.js +0 -3
  389. package/lib-module/Select/Item.js +0 -3
  390. package/lib-module/Select/Item.native.js +0 -1
  391. package/lib-module/Select/Picker.native.js +8 -10
  392. package/lib-module/Select/Select.js +10 -35
  393. package/lib-module/SideNav/Item.js +5 -16
  394. package/lib-module/SideNav/ItemContent.js +1 -2
  395. package/lib-module/SideNav/ItemsGroup.js +9 -19
  396. package/lib-module/SideNav/SideNav.js +9 -22
  397. package/lib-module/Skeleton/Skeleton.js +10 -25
  398. package/lib-module/Skeleton/skeletonWebAnimation.js +0 -1
  399. package/lib-module/Skeleton/useSkeletonNativeAnimation.js +1 -3
  400. package/lib-module/SkipLink/SkipLink.js +7 -9
  401. package/lib-module/Spacer/Spacer.js +4 -7
  402. package/lib-module/StackView/StackView.js +3 -7
  403. package/lib-module/StackView/StackWrap.js +13 -13
  404. package/lib-module/StackView/StackWrap.native.js +2 -1
  405. package/lib-module/StackView/StackWrapBox.js +5 -8
  406. package/lib-module/StackView/StackWrapGap.js +1 -1
  407. package/lib-module/StackView/getStackedContent.js +10 -10
  408. package/lib-module/StepTracker/Step.js +3 -14
  409. package/lib-module/StepTracker/StepTracker.js +5 -13
  410. package/lib-module/Tabs/Tabs.js +7 -16
  411. package/lib-module/Tabs/TabsItem.js +13 -16
  412. package/lib-module/Tags/Tags.js +9 -26
  413. package/lib-module/TextInput/TextArea.js +11 -8
  414. package/lib-module/TextInput/TextInput.js +7 -5
  415. package/lib-module/TextInput/TextInputBase.js +107 -51
  416. package/lib-module/TextInput/propTypes.js +7 -6
  417. package/lib-module/ThemeProvider/ThemeProvider.js +10 -9
  418. package/lib-module/ThemeProvider/useSetTheme.js +6 -7
  419. package/lib-module/ThemeProvider/useTheme.js +2 -5
  420. package/lib-module/ThemeProvider/useThemeTokens.js +1 -2
  421. package/lib-module/ThemeProvider/utils/styles.js +15 -27
  422. package/lib-module/ThemeProvider/utils/theme-tokens.js +15 -20
  423. package/lib-module/Timeline/Timeline.js +11 -17
  424. package/lib-module/ToggleSwitch/ToggleSwitch.js +13 -26
  425. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +4 -23
  426. package/lib-module/Tooltip/Backdrop.js +4 -7
  427. package/lib-module/Tooltip/Backdrop.native.js +1 -4
  428. package/lib-module/Tooltip/Tooltip.js +9 -18
  429. package/lib-module/Tooltip/Tooltip.native.js +14 -23
  430. package/lib-module/Tooltip/getTooltipPosition.js +26 -30
  431. package/lib-module/Tooltip/shared.js +0 -6
  432. package/lib-module/TooltipButton/TooltipButton.js +5 -8
  433. package/lib-module/Typography/Typography.js +14 -22
  434. package/lib-module/Validator/Validator.js +10 -42
  435. package/lib-module/ViewportProvider/ViewportProvider.js +1 -3
  436. package/lib-module/ViewportProvider/useViewportListener.js +6 -8
  437. package/lib-module/index.js +1 -0
  438. package/lib-module/utils/BaseView/BaseView.js +3 -4
  439. package/lib-module/utils/BaseView/BaseView.native.js +0 -1
  440. package/lib-module/utils/a11y/semantics.js +14 -27
  441. package/lib-module/utils/a11y/textSize.js +1 -2
  442. package/lib-module/utils/animation/useVerticalExpandAnimation.js +8 -11
  443. package/lib-module/utils/children.js +17 -19
  444. package/lib-module/utils/containUniqueFields.js +2 -4
  445. package/lib-module/utils/htmlAttrs.js +2 -1
  446. package/lib-module/utils/info/index.js +2 -1
  447. package/lib-module/utils/info/platform/index.js +4 -1
  448. package/lib-module/utils/info/versions.js +2 -1
  449. package/lib-module/utils/input.js +11 -19
  450. package/lib-module/utils/pressability.js +8 -7
  451. package/lib-module/utils/props/a11yProps.js +22 -20
  452. package/lib-module/utils/props/clickProps.js +0 -1
  453. package/lib-module/utils/props/componentPropType.js +0 -13
  454. package/lib-module/utils/props/getPropSelector.js +12 -8
  455. package/lib-module/utils/props/handlerProps.js +2 -19
  456. package/lib-module/utils/props/hrefAttrsProp.js +2 -2
  457. package/lib-module/utils/props/inputSupportsProps.js +0 -6
  458. package/lib-module/utils/props/linkProps.js +2 -3
  459. package/lib-module/utils/props/pressProps.js +2 -2
  460. package/lib-module/utils/props/responsiveProps.js +1 -3
  461. package/lib-module/utils/props/selectSystemProps.js +4 -5
  462. package/lib-module/utils/props/spacingProps.js +4 -3
  463. package/lib-module/utils/props/textInputProps.js +14 -27
  464. package/lib-module/utils/props/textProps.js +9 -7
  465. package/lib-module/utils/props/tokens.js +10 -13
  466. package/lib-module/utils/props/variantProp.js +1 -1
  467. package/lib-module/utils/props/viewProps.js +0 -1
  468. package/lib-module/utils/ssr.js +14 -18
  469. package/lib-module/utils/useCopy.js +3 -5
  470. package/lib-module/utils/useHash.js +5 -9
  471. package/lib-module/utils/useHash.native.js +0 -1
  472. package/lib-module/utils/useOverlaidPosition.js +6 -25
  473. package/lib-module/utils/useResponsiveProp.js +6 -7
  474. package/lib-module/utils/useSafeLayoutEffect.js +5 -7
  475. package/lib-module/utils/useScrollBlocking.js +3 -10
  476. package/lib-module/utils/useSpacingScale.js +4 -4
  477. package/lib-module/utils/useUniqueId.js +0 -2
  478. package/lib-module/utils/withLinkRouter.js +13 -10
  479. package/package.json +2 -2
  480. package/src/CheckboxCardGroup/CheckboxCardGroup.jsx +230 -0
  481. package/src/CheckboxCardGroup/index.js +3 -0
  482. package/src/Modal/Modal.jsx +98 -5
  483. package/src/Modal/ModalContent.jsx +171 -0
  484. package/src/TextInput/TextInputBase.jsx +67 -12
  485. package/src/TextInput/propTypes.js +4 -0
  486. package/src/index.js +1 -0
  487. package/src/utils/props/textInputProps.js +1 -0
@@ -7,7 +7,6 @@ const focusHandlerProps = {
7
7
  * onBlur handler
8
8
  */
9
9
  onBlur: PropTypes.func,
10
-
11
10
  /**
12
11
  * onFocus handler
13
12
  */
@@ -21,62 +20,50 @@ const textInputHandlerProps = {
21
20
  * onChange handler
22
21
  */
23
22
  onChange: PropTypes.func,
24
-
25
23
  /**
26
24
  * onChangeText handler
27
25
  */
28
26
  onChangeText: PropTypes.func,
29
-
30
27
  /**
31
28
  * onClear handler
32
29
  */
33
30
  onClear: PropTypes.func,
34
-
35
31
  /**
36
32
  * onSubmit handler
37
33
  */
38
34
  onSubmit: PropTypes.func,
39
-
40
35
  /**
41
36
  * onSubmitEditing handler
42
37
  */
43
38
  onSubmitEditing: PropTypes.func,
44
-
45
39
  /**
46
40
  * onContentSizeChange handler
47
41
  */
48
42
  onContentSizeChange: PropTypes.func,
49
-
50
43
  /**
51
44
  * onEndEditing handler
52
45
  */
53
46
  onEndEditing: PropTypes.func,
54
-
55
47
  /**
56
48
  * onScroll handler
57
49
  */
58
50
  onScroll: PropTypes.func,
59
-
60
51
  /**
61
52
  * onSelectionChange handler
62
53
  */
63
54
  onSelectionChange: PropTypes.func,
64
-
65
55
  /**
66
56
  * onKeyPress handler
67
57
  */
68
58
  onKeyPress: PropTypes.func,
69
-
70
59
  /**
71
60
  * onKeyUp handler (only supported on Web)
72
61
  */
73
62
  onKeyUp: PropTypes.func,
74
-
75
63
  /**
76
64
  * onKeyDown handler (only supported on Web)
77
65
  */
78
66
  onMouseOver: PropTypes.func,
79
-
80
67
  /**
81
68
  * onKeyDown handler (only supported on Web)
82
69
  */
@@ -84,7 +71,6 @@ const textInputHandlerProps = {
84
71
  }
85
72
  };
86
73
  const selectTextInputHandlers = getPropSelector(textInputHandlerProps.types);
87
-
88
74
  textInputHandlerProps.select = props => {
89
75
  // Support for onKeyPress/onKeyUp/onKeyDown is inconsistent between React Native and React Native Web
90
76
  const {
@@ -93,7 +79,6 @@ textInputHandlerProps.select = props => {
93
79
  onKeyDown,
94
80
  ...resolvedProps
95
81
  } = selectTextInputHandlers(props);
96
-
97
82
  if (onKeyPress || onKeyUp || onKeyDown) {
98
83
  if (Platform.OS !== 'web') {
99
84
  // React Native only supports onKeyPress. Call any key handlers supplied in expected order.
@@ -104,9 +89,9 @@ textInputHandlerProps.select = props => {
104
89
  };
105
90
  } else {
106
91
  // React Native Web supports onKeyUp the normal way.
107
- if (onKeyUp) resolvedProps.onKeyUp = onKeyUp; // React Native Web doesn't support the `onKeyDown` prop name, but maps a supplied onKeyPress handler
92
+ if (onKeyUp) resolvedProps.onKeyUp = onKeyUp;
93
+ // React Native Web doesn't support the `onKeyDown` prop name, but maps a supplied onKeyPress handler
108
94
  // to the onKeyDown event and calls it with a keydown event. Make React Native Web call either or both.
109
-
110
95
  if (onKeyPress || onKeyDown) {
111
96
  resolvedProps.onKeyPress = event => {
112
97
  if (typeof onKeyDown === 'function') onKeyDown(event);
@@ -115,8 +100,6 @@ textInputHandlerProps.select = props => {
115
100
  }
116
101
  }
117
102
  }
118
-
119
103
  return resolvedProps;
120
104
  };
121
-
122
105
  export { focusHandlerProps, textInputHandlerProps };
@@ -1,5 +1,6 @@
1
- import PropTypes from 'prop-types'; // Props related to HTML <a> anchor link attributes.
1
+ import PropTypes from 'prop-types';
2
2
 
3
+ // Props related to HTML <a> anchor link attributes.
3
4
  const targetValues = ['_self', '_blank', '_parent', '_top'];
4
5
  export default {
5
6
  types: {
@@ -9,7 +10,6 @@ export default {
9
10
  rel: PropTypes.string,
10
11
  target: PropTypes.oneOf(targetValues)
11
12
  },
12
-
13
13
  /**
14
14
  * Takes a props object, bundles any hrefAttrs props present into one object
15
15
  * and returns that keyed as `hrefAttrs` and non-hrefAttrs props keyed as `rest`
@@ -5,33 +5,27 @@ export default {
5
5
  * Whether the English or French copy will be used (e.g. for accessibility labels).
6
6
  */
7
7
  copy: PropTypes.oneOf(['en', 'fr']),
8
-
9
8
  /**
10
9
  * The input label.
11
10
  */
12
11
  label: PropTypes.string,
13
-
14
12
  /**
15
13
  * A short description of the expected input.
16
14
  */
17
15
  hint: PropTypes.string,
18
-
19
16
  /**
20
17
  * Position of the hint relative to label. Use `below` to display a larger hint below the label.
21
18
  */
22
19
  hintPosition: PropTypes.oneOf(['inline', 'below']),
23
-
24
20
  /**
25
21
  * A detailed description of validation error/success or additional instructions.
26
22
  * Visual variant is determined based on the `validation` prop.
27
23
  */
28
24
  feedback: PropTypes.string,
29
-
30
25
  /**
31
26
  * Content of an optional `Tooltip`. If set, a tooltip button will be shown next to the label.
32
27
  */
33
28
  tooltip: PropTypes.string,
34
-
35
29
  /**
36
30
  * Use to visually mark an input as valid or invalid.
37
31
  */
@@ -5,7 +5,8 @@ import { pressPropTypes } from './pressProps';
5
5
  import a11yProps from './a11yProps';
6
6
  import hrefAttrsProp from './hrefAttrsProp';
7
7
  import getPropSelector from './getPropSelector';
8
- const linkPropTypes = { ...pressPropTypes,
8
+ const linkPropTypes = {
9
+ ...pressPropTypes,
9
10
  href: PropTypes.string,
10
11
  hrefAttrs: PropTypes.shape(hrefAttrsProp.types),
11
12
  ...a11yProps.types
@@ -15,12 +16,10 @@ export default {
15
16
  * Proptypes for components that, on Web, can output <a href="..."> link elements
16
17
  */
17
18
  types: linkPropTypes,
18
-
19
19
  /**
20
20
  * Filters a props object, returning only the platform-relevant link props defined above
21
21
  */
22
22
  select: getPropSelector(linkPropTypes),
23
-
24
23
  /**
25
24
  * Turn hrefs into press handlers that open links on Native.
26
25
  *
@@ -18,7 +18,8 @@ const pressHandlerPropTypes = {
18
18
  }
19
19
  })
20
20
  };
21
- export const pressPropTypes = { ...pressHandlerPropTypes,
21
+ export const pressPropTypes = {
22
+ ...pressHandlerPropTypes,
22
23
  disabled: PropTypes.bool,
23
24
  ...Platform.select({
24
25
  web: {},
@@ -33,7 +34,6 @@ export default {
33
34
  * Proptypes for clickable or pressable components, including web-only props
34
35
  */
35
36
  types: pressPropTypes,
36
-
37
37
  /**
38
38
  * Filters a props object, returning only the platform-relevant press props defined above
39
39
  */
@@ -1,5 +1,4 @@
1
1
  import PropTypes from 'prop-types';
2
-
3
2
  const getByViewport = propType => ({
4
3
  xs: propType,
5
4
  sm: propType,
@@ -7,6 +6,7 @@ const getByViewport = propType => ({
7
6
  lg: propType,
8
7
  xl: propType
9
8
  });
9
+
10
10
  /**
11
11
  * Utilities for props that allow different values to be applied at different viewports.
12
12
  *
@@ -21,8 +21,6 @@ const getByViewport = propType => ({
21
21
  * @property {Function} getTypeOptionallyByViewport - returns a PropTypes validator that accepts
22
22
  * either the provided proptype on its own, or the output of getTypeByViewport
23
23
  */
24
-
25
-
26
24
  export default {
27
25
  getByViewport,
28
26
  getTypeByViewport: propType => PropTypes.shape(getByViewport(propType)),
@@ -5,18 +5,17 @@ export default function selectSystemProps(systemPropHelpers) {
5
5
  if (typeof (propHelper === null || propHelper === void 0 ? void 0 : propHelper.select) !== 'function') {
6
6
  throw new Error(`An invalid system prop helper has been passed to 'selectSystemProps': prop selector ('.select') is missing in ${propHelper}`);
7
7
  }
8
-
9
- return { ...acc,
8
+ return {
9
+ ...acc,
10
10
  ...propHelper.select(props)
11
11
  };
12
12
  }, {});
13
-
14
13
  const selectedPropTypes = systemPropHelpers.reduce((acc, propHelper) => {
15
14
  if (!(propHelper !== null && propHelper !== void 0 && propHelper.types)) {
16
15
  throw new Error(`An invalid system prop helper has been passed to 'selectSystemProps': types selector ('.types') is missing in ${propHelper}`);
17
16
  }
18
-
19
- return { ...acc,
17
+ return {
18
+ ...acc,
20
19
  ...propHelper.types
21
20
  };
22
21
  }, {});
@@ -1,6 +1,7 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import responsiveProps from './responsiveProps';
3
3
  import variantProp from './variantProp';
4
+
4
5
  /**
5
6
  * @typedef {0|1|2|3|4|5|6|7|8|9|10|11} SpacingIndex - value used to select a size on the spacing scale
6
7
  *
@@ -20,16 +21,17 @@ import variantProp from './variantProp';
20
21
  *
21
22
  * @typedef {SpacingIndex|SpacingObject} SpacingValue
22
23
  */
23
-
24
24
  const spacingScale = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
25
25
  const spacingIndexPropType = PropTypes.oneOf(spacingScale);
26
- const spacingObjectPropType = PropTypes.shape({ ...responsiveProps.getByViewport(spacingIndexPropType),
26
+ const spacingObjectPropType = PropTypes.shape({
27
+ ...responsiveProps.getByViewport(spacingIndexPropType),
27
28
  space: spacingIndexPropType,
28
29
  options: PropTypes.shape({
29
30
  variant: variantProp.propType,
30
31
  size: PropTypes.number
31
32
  })
32
33
  });
34
+
33
35
  /**
34
36
  * Components and utilities that assign fixed space between components use a theme-defined spacing scale.
35
37
  *
@@ -44,7 +46,6 @@ const spacingObjectPropType = PropTypes.shape({ ...responsiveProps.getByViewport
44
46
  * scale, or an object with an optional `options` key and one or more spacing indexes keyed either by
45
47
  * viewports or `space` to apply at all viewports.
46
48
  */
47
-
48
49
  export default {
49
50
  scale: spacingScale,
50
51
  types: {
@@ -1,82 +1,76 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import Platform from "react-native-web/dist/exports/Platform";
3
- import getPropSelector from './getPropSelector'; // This file contains common props for components that render a React Native TextInput
3
+ import getPropSelector from './getPropSelector';
4
+
5
+ // This file contains common props for components that render a React Native TextInput
4
6
  // It excludes interaction handler functions which are in `./handlerProps.js`
5
7
 
6
8
  /**
7
9
  * TextInput (web and native) supports some common React Native props
8
10
  * shared with React Native's Text component.
9
11
  */
10
-
11
12
  const textProps = {
12
13
  maxFontSizeMultiplier: PropTypes.number,
13
14
  nativeId: PropTypes.string,
14
15
  onLayout: PropTypes.func
15
16
  };
17
+
16
18
  /**
17
19
  * UDS text inputs accept props related to UDS's useInputValue hook
18
20
  */
19
-
20
21
  const inputValueProps = {
21
22
  value: PropTypes.string,
23
+ type: PropTypes.string,
22
24
  initialValue: PropTypes.string,
23
25
  readOnly: PropTypes.bool,
24
26
  inactive: PropTypes.bool
25
27
  };
28
+
26
29
  /**
27
30
  * This collection adds props that can be passed through to both React Native's
28
31
  * and React Native Web's implementations of the React Native TextInput component.
29
32
  */
30
-
31
- const crossPlatform = { ...textProps,
33
+ const crossPlatform = {
34
+ ...textProps,
32
35
  ...inputValueProps,
33
-
34
36
  /**
35
37
  * Web and Android; 'off' disables device autocomplete, other strings are platform-specific.
36
38
  * Valid values on Native: https://reactnative.dev/docs/textinput#autocomplete-android
37
39
  * Valid values on Web: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete
38
40
  */
39
41
  autoComplete: PropTypes.string,
40
-
41
42
  /**
42
43
  * On Native, default is `true`, passing `false` disables autoCorrect.
43
44
  * On web, only supported by Safari and expects "on" or "off" strings.
44
45
  */
45
46
  autoCorrect: PropTypes.oneOf([true, false, 'on', 'off']),
46
-
47
47
  /**
48
48
  * Focuses the element on mount. On Web, only the first form element with autoFocus is focussed.
49
49
  */
50
50
  autoFocus: PropTypes.bool,
51
-
52
51
  /**
53
52
  * Default is `true` for single line, `false` for multi-line
54
53
  */
55
54
  blurOnSubmit: PropTypes.bool,
56
-
57
55
  /**
58
56
  * iOS and Web only, no effect on Android
59
57
  */
60
58
  clearTextOnFocus: PropTypes.bool,
61
-
62
59
  /**
63
60
  * Default is `true`. On web, this works by mapping to input's `readonly` attribute
64
61
  */
65
62
  editable: PropTypes.bool,
66
-
67
63
  /**
68
64
  * See documentation for allowed values (varies between Web, Android and iOS) and important notes:
69
65
  * - Native: https://reactnative.dev/docs/textinput#keyboardtype
70
66
  * - Web: equivalent to `inputmode` but see https://necolas.github.io/react-native-web/docs/text-input/
71
67
  */
72
68
  keyboardType: PropTypes.string,
73
-
74
69
  /**
75
70
  * Uses native tools (no flicker) to cap the maximum number of characters.
76
71
  * On Web, works via `maxlength` attr.
77
72
  */
78
73
  maxLength: PropTypes.number,
79
-
80
74
  /**
81
75
  * If passed as true, the text input can be multiple lines.
82
76
  *
@@ -84,24 +78,20 @@ const crossPlatform = { ...textProps,
84
78
  * > Use with textAlignVertical set to top for the same behavior in both platforms.
85
79
  */
86
80
  multiline: PropTypes.bool,
87
-
88
81
  /**
89
82
  * Web and Android only, requires `multiline` to be `true`.
90
83
  */
91
84
  numberOfLines: PropTypes.number,
92
-
93
85
  /**
94
86
  * Text to display when no value set.
95
87
  * Accesibility guidelines recommend using labels to describe the input and using
96
88
  * placeholders rarely and sparingly to prompt a particular format.
97
89
  */
98
90
  placeholder: PropTypes.string,
99
-
100
91
  /**
101
92
  * Sets placeholder colour. On Web, uses `::placeholder { color: ... }` selector.
102
93
  */
103
94
  placeholderTextColor: PropTypes.string,
104
-
105
95
  /**
106
96
  * One of a subset of platform-specific options that controls labelling and presentation
107
97
  * in on-screen keyboards and accessibility tools. Uses `enterkeyhint` attr on Web.
@@ -109,34 +99,30 @@ const crossPlatform = { ...textProps,
109
99
  * 'done', 'go', 'next', 'search', and 'send' are available for Web, Android and iOS.
110
100
  */
111
101
  returnKeyType: PropTypes.string,
112
-
113
102
  /**
114
103
  * Obscures passwords and similar. Equivalent to type="password" on Web.
115
104
  * Does not work if multiline is true.
116
105
  */
117
106
  secureTextEntry: PropTypes.bool,
118
-
119
107
  /**
120
108
  * If true, all text will automatically be selected on focus.
121
109
  */
122
110
  selectTextOnFocus: PropTypes.bool,
123
-
124
111
  /**
125
112
  * Web and iOS. On iOS, default inherits from `autoCorrect`.
126
113
  * On Web, equivalent to `spellcheck` attr.
127
114
  */
128
115
  spellCheck: PropTypes.bool
129
116
  };
117
+
130
118
  /**
131
119
  * These web-only props all control HTML `input` attributes of the same name.
132
120
  * Refer to general HTML documentation for more details.
133
121
  */
134
-
135
122
  const webOnly = {
136
123
  disabled: PropTypes.bool,
137
124
  dir: PropTypes.oneOf(['auto', 'ltr', 'rtl']),
138
125
  lang: PropTypes.string,
139
-
140
126
  /**
141
127
  * Sets the HTML input `pattern` attr. Not supported by React Native Web, but is supported by UDS.
142
128
  * Must also pass in a ref and check validity by calling the HTML element's checkValidity method:
@@ -144,6 +130,7 @@ const webOnly = {
144
130
  */
145
131
  pattern: PropTypes.string
146
132
  };
133
+
147
134
  /**
148
135
  * These props are supported in React Native but not React Native Web.
149
136
  *
@@ -155,7 +142,6 @@ const webOnly = {
155
142
  * native component based on the values of multiple boolean flags, and may sometimes appear to pick an
156
143
  * option that is inappropriate for one flag based on the values of one or more other other flags.
157
144
  */
158
-
159
145
  const nativeOnly = {
160
146
  caretHidden: PropTypes.bool,
161
147
  clearButtonMode: PropTypes.string,
@@ -183,16 +169,17 @@ export default {
183
169
  * Subset of proptypes that can be passed down to a React Native or React Native Web
184
170
  * `TextInput` component. Allow regardless of platform, so cross-platform apps don't warn.
185
171
  */
186
- types: { ...crossPlatform,
172
+ types: {
173
+ ...crossPlatform,
187
174
  ...webOnly,
188
175
  ...nativeOnly
189
176
  },
190
-
191
177
  /**
192
178
  * Filters a props object. Return only platform-appropriate TextInput props, native inputs
193
179
  * may throw errors on receiving unknown props.
194
180
  */
195
- select: getPropSelector({ ...crossPlatform,
181
+ select: getPropSelector({
182
+ ...crossPlatform,
196
183
  ...Platform.select({
197
184
  web: webOnly,
198
185
  default: nativeOnly
@@ -1,6 +1,8 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import Platform from "react-native-web/dist/exports/Platform";
3
- import getPropSelector from './getPropSelector'; // These are the props accepted specifically on React Native (Web) `Text` elements.
3
+ import getPropSelector from './getPropSelector';
4
+
5
+ // These are the props accepted specifically on React Native (Web) `Text` elements.
4
6
  // They are generally concerned with the behaviour of multiline text.
5
7
 
6
8
  const crossPlatform = {
@@ -9,17 +11,16 @@ const crossPlatform = {
9
11
  * On native, ellipsis behaviour may be changed with `ellipsizeMode` prop.
10
12
  */
11
13
  numberOfLines: PropTypes.number,
12
-
13
14
  /**
14
15
  * Default is true on web and false on native
15
16
  */
16
17
  selectable: PropTypes.bool
17
18
  };
19
+
18
20
  /**
19
21
  * See React Native docs for latest details on these.
20
22
  * https://reactnative.dev/docs/text
21
23
  */
22
-
23
24
  const nativeOnly = {
24
25
  ellipsizeMode: PropTypes.string,
25
26
  maxFontSizeMultiplier: PropTypes.number,
@@ -28,10 +29,10 @@ const nativeOnly = {
28
29
  suppressHighlighting: PropTypes.bool,
29
30
  textBreakStrategy: PropTypes.string
30
31
  };
32
+
31
33
  /**
32
34
  * These set HTML attributes of the same name.
33
35
  */
34
-
35
36
  const webOnly = {
36
37
  dir: PropTypes.oneOf(['auto', 'ltr', 'rtl']),
37
38
  lang: PropTypes.string
@@ -41,16 +42,17 @@ export default {
41
42
  * Set of prop types specific to React Native and React Native Web `Text`,
42
43
  * which largely revolve around the behaviour of multiline non-pressable text.
43
44
  */
44
- types: { ...crossPlatform,
45
+ types: {
46
+ ...crossPlatform,
45
47
  ...webOnly,
46
48
  ...nativeOnly
47
49
  },
48
-
49
50
  /**
50
51
  * Filters a props object, returning only props specific to `Text` elements
51
52
  * on the current platform. Does not include props applicable to `Text` and `View`.
52
53
  */
53
- select: getPropSelector({ ...crossPlatform,
54
+ select: getPropSelector({
55
+ ...crossPlatform,
54
56
  ...Platform.select({
55
57
  web: webOnly,
56
58
  default: nativeOnly
@@ -1,19 +1,19 @@
1
1
  import PropTypes from 'prop-types';
2
- import { components as tokenKeys } from '@telus-uds/system-theme-tokens'; // Tokens can be primitive values (e.g. `'rgba(0,0,0,0'`, `12`), or objects of such values,
2
+ import { components as tokenKeys } from '@telus-uds/system-theme-tokens';
3
+
4
+ // Tokens can be primitive values (e.g. `'rgba(0,0,0,0'`, `12`), or objects of such values,
3
5
  // such as tokens that describe shadow (e.g. shadow: { inset: true, color: 'rgba(...)' ... }),
4
6
  // or components (e.g. Icon tokens)
5
-
6
7
  const tokenValue = PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool, PropTypes.elementType]);
7
8
  const tokenValueType = PropTypes.oneOfType([tokenValue, PropTypes.objectOf(tokenValue)]);
8
9
  export const getTokenNames = componentName => {
9
10
  const componentTokenSchema = tokenKeys[componentName];
10
-
11
11
  if (!componentTokenSchema) {
12
12
  throw new Error(`No "${componentName}" tokenKeys in @telus-uds/system-theme-tokens`);
13
13
  }
14
-
15
14
  return Object.keys(componentTokenSchema);
16
15
  };
16
+
17
17
  /**
18
18
  * Returns the subset of a set of tokens that may be accepted by the `tokens` prop of a named component
19
19
  * or by a provided array of tokens. A prefix may be provided, for example:
@@ -43,25 +43,25 @@ export const getTokenNames = componentName => {
43
43
  * @param {string} [prefix] - if provided, matches keys in the source object with this as the first camelCase item
44
44
  * @returns {object} - subset of theme tokens
45
45
  */
46
-
47
46
  export const selectTokens = (specifier, tokens, prefix) => {
48
47
  const tokenNames = typeof specifier === 'string' ? getTokenNames(specifier) : specifier;
49
48
  const filteredTokens = tokenNames.reduce((validTokens, key) => {
50
49
  const prefixedKey = prefix ? `${prefix}${key[0].toUpperCase()}${key.slice(1)}` : key;
51
50
  const token = tokens[prefixedKey];
52
- return token !== undefined ? { ...validTokens,
51
+ return token !== undefined ? {
52
+ ...validTokens,
53
53
  [key]: token
54
54
  } : validTokens;
55
55
  }, {});
56
56
  return filteredTokens;
57
57
  };
58
+
58
59
  /**
59
60
  * @typedef {string|number|boolean|{[key: string]:string|number|boolean}} TokenValue
60
61
  * @typedef {{[key: string]: TokenValue}} TokensSet
61
62
  * @typedef {(AppearanceSet) => TokensSet} TokensGetter
62
63
  * @typedef {TokensSet|TokensGetter} TokensProp
63
64
  */
64
-
65
65
  /**
66
66
  * 'tokens' is an optional object prop on all themable components. Its keys must match the
67
67
  * token keys in the component's theme schema.
@@ -83,17 +83,14 @@ export const selectTokens = (specifier, tokens, prefix) => {
83
83
  * tokens: getTokensPropType('Component1', 'Component2')
84
84
  * }
85
85
  */
86
-
87
86
  export const getTokensPropType = function () {
88
87
  for (var _len = arguments.length, componentsNames = new Array(_len), _key = 0; _key < _len; _key++) {
89
88
  componentsNames[_key] = arguments[_key];
90
89
  }
91
-
92
90
  return (props, propName, componentName) => {
93
91
  PropTypes.checkPropTypes({
94
92
  [propName]: PropTypes.oneOfType([PropTypes.object, PropTypes.func])
95
93
  }, props, propName, componentName);
96
-
97
94
  if (typeof props[propName] !== 'function') {
98
95
  PropTypes.checkPropTypes({
99
96
  [propName]: PropTypes.exact(Object.fromEntries(componentsNames.flatMap(component => getTokenNames(component).map(key => [key, tokenValueType]))))
@@ -101,6 +98,7 @@ export const getTokensPropType = function () {
101
98
  }
102
99
  };
103
100
  };
101
+
104
102
  /**
105
103
  * Get a proptypes validator for a set of tokens that is not based on a component in the theme schema.
106
104
  *
@@ -115,18 +113,17 @@ export const getTokensPropType = function () {
115
113
  * @param {boolean} [options.allowFunction] - if true, allows functions as well as tokens objects
116
114
  * @returns
117
115
  */
118
-
119
116
  export const getTokensSetPropType = function (componentTokenKeys) {
120
117
  let {
121
118
  partial = false,
122
119
  allowFunction = false
123
120
  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
124
- const tokensObjectValidator = PropTypes.exact(Object.fromEntries(componentTokenKeys.map(key => [key, partial ? tokenValueType : // Some theme tokens can validly resolve to `null`, but .isRequired treats null as undefined
121
+ const tokensObjectValidator = PropTypes.exact(Object.fromEntries(componentTokenKeys.map(key => [key, partial ? tokenValueType :
122
+ // Some theme tokens can validly resolve to `null`, but .isRequired treats null as undefined
125
123
  function (props, propName) {
126
124
  for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
127
125
  args[_key2 - 2] = arguments[_key2];
128
126
  }
129
-
130
127
  return props[propName] !== null && tokenValueType.isRequired(props, propName, ...args);
131
128
  }])));
132
129
  return allowFunction ? PropTypes.oneOfType([tokensObjectValidator, PropTypes.func]) : tokensObjectValidator;
@@ -1,9 +1,9 @@
1
1
  import PropTypes from 'prop-types';
2
+
2
3
  /**
3
4
  * @typedef {{[key: string]: string|number|boolean}} AppearanceSet
4
5
  * @typedef {AppearanceSet} VariantProp
5
6
  */
6
-
7
7
  export default {
8
8
  /**
9
9
  * 'variant' is an optional object prop on all themable components.
@@ -13,7 +13,6 @@ export default {
13
13
  * that renders a single View.
14
14
  */
15
15
  types: viewPropTypes,
16
-
17
16
  /**
18
17
  * Filters a props object, returning only cross-platform View props that are potentially
19
18
  * relevant to any basic layout component that renders one View.