@telus-uds/components-base 1.83.0 → 1.85.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 (474) hide show
  1. package/CHANGELOG.md +36 -2
  2. package/lib/A11yInfoProvider/index.js +8 -10
  3. package/lib/A11yText/index.js +2 -4
  4. package/lib/ActivityIndicator/Spinner.js +3 -4
  5. package/lib/ActivityIndicator/Spinner.native.js +2 -4
  6. package/lib/Autocomplete/Autocomplete.js +13 -17
  7. package/lib/Autocomplete/Loading.js +4 -2
  8. package/lib/Autocomplete/Suggestions.js +2 -4
  9. package/lib/Badge/Badge.js +2 -4
  10. package/lib/BaseProvider/HydrationContext.js +5 -7
  11. package/lib/Box/Box.js +5 -7
  12. package/lib/Button/Button.js +3 -3
  13. package/lib/Button/ButtonBase.js +2 -7
  14. package/lib/Button/ButtonDropdown.js +3 -3
  15. package/lib/Button/ButtonGroup.js +11 -4
  16. package/lib/Button/ButtonLink.js +3 -3
  17. package/lib/Card/Card.js +159 -16
  18. package/lib/Card/CardBase.js +2 -4
  19. package/lib/Card/PressableCardBase.js +3 -5
  20. package/lib/CardGroup/CardGroup.js +220 -0
  21. package/lib/CardGroup/dictionary.js +15 -0
  22. package/lib/CardGroup/index.js +10 -0
  23. package/lib/Carousel/Carousel.js +308 -129
  24. package/lib/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +2 -4
  25. package/lib/Carousel/CarouselItem/CarouselItem.js +3 -2
  26. package/lib/Carousel/CarouselStepTracker/CarouselStepTracker.js +4 -2
  27. package/lib/Carousel/CarouselTabs/CarouselTabs.js +2 -4
  28. package/lib/Carousel/CarouselTabs/CarouselTabsPanel.js +6 -8
  29. package/lib/Carousel/CarouselTabs/CarouselTabsPanelItem.js +3 -5
  30. package/lib/Carousel/CarouselThumbnail.js +4 -2
  31. package/lib/Carousel/CarouselThumbnailNavigation.js +2 -4
  32. package/lib/Checkbox/Checkbox.js +2 -4
  33. package/lib/Checkbox/CheckboxButton.js +3 -5
  34. package/lib/Checkbox/CheckboxGroup.js +2 -4
  35. package/lib/Checkbox/CheckboxInput.js +4 -14
  36. package/lib/CheckboxCard/CheckboxCard.js +3 -3
  37. package/lib/CheckboxCardGroup/CheckboxCardGroup.js +3 -3
  38. package/lib/ColourToggle/ColourBubble.js +5 -6
  39. package/lib/ColourToggle/ColourToggle.js +3 -5
  40. package/lib/Divider/Divider.js +2 -4
  41. package/lib/ExpandCollapse/Accordion.js +2 -4
  42. package/lib/ExpandCollapse/Control.js +2 -4
  43. package/lib/ExpandCollapse/ExpandCollapse.js +20 -13
  44. package/lib/ExpandCollapse/Panel.js +15 -5
  45. package/lib/ExpandCollapse/dictionary.js +17 -0
  46. package/lib/Feedback/Feedback.js +2 -4
  47. package/lib/Fieldset/Fieldset.js +2 -4
  48. package/lib/Fieldset/FieldsetContainer.js +2 -4
  49. package/lib/Fieldset/FieldsetContainer.native.js +2 -4
  50. package/lib/Fieldset/Legend.js +2 -4
  51. package/lib/Fieldset/Legend.native.js +2 -4
  52. package/lib/FlexGrid/Col/Col.js +3 -5
  53. package/lib/FlexGrid/FlexGrid.js +2 -4
  54. package/lib/FlexGrid/Row/Row.js +2 -4
  55. package/lib/Footnote/Footnote.js +9 -9
  56. package/lib/Footnote/FootnoteLink.js +5 -3
  57. package/lib/HorizontalScroll/HorizontalScroll.js +8 -10
  58. package/lib/HorizontalScroll/HorizontalScrollButton.js +2 -4
  59. package/lib/HorizontalScroll/ScrollViewEnd.js +5 -10
  60. package/lib/HorizontalScroll/ScrollViewEnd.native.js +2 -4
  61. package/lib/Icon/Icon.js +2 -4
  62. package/lib/Icon/IconText.js +6 -6
  63. package/lib/IconButton/IconButton.js +2 -4
  64. package/lib/InputLabel/InputLabel.js +2 -4
  65. package/lib/InputLabel/LabelContent.js +2 -4
  66. package/lib/InputLabel/LabelContent.native.js +2 -4
  67. package/lib/InputSupports/InputSupports.js +4 -5
  68. package/lib/Link/ChevronLink.js +2 -4
  69. package/lib/Link/InlinePressable.js +8 -7
  70. package/lib/Link/InlinePressable.native.js +10 -8
  71. package/lib/Link/Link.js +2 -4
  72. package/lib/Link/LinkBase.js +2 -4
  73. package/lib/Link/TextButton.js +2 -4
  74. package/lib/List/List.js +13 -11
  75. package/lib/List/ListItem.js +2 -4
  76. package/lib/List/ListItemBase.js +6 -10
  77. package/lib/List/ListItemContent.js +4 -2
  78. package/lib/List/ListItemMark.js +4 -2
  79. package/lib/List/PressableListItemBase.js +2 -4
  80. package/lib/Listbox/GroupControl.js +4 -2
  81. package/lib/Listbox/Listbox.js +6 -6
  82. package/lib/Listbox/ListboxContext.js +3 -4
  83. package/lib/Listbox/ListboxGroup.js +2 -4
  84. package/lib/Listbox/ListboxItem.js +2 -6
  85. package/lib/Listbox/ListboxOverlay.js +2 -6
  86. package/lib/Listbox/PressableItem.js +2 -6
  87. package/lib/Modal/Modal.js +5 -7
  88. package/lib/Modal/ModalContent.js +7 -7
  89. package/lib/Modal/WebModal.js +19 -10
  90. package/lib/MultiSelectFilter/ModalOverlay.js +2 -4
  91. package/lib/MultiSelectFilter/MultiSelectFilter.js +10 -10
  92. package/lib/Notification/Notification.js +5 -7
  93. package/lib/OrderedList/Item.js +4 -10
  94. package/lib/OrderedList/ItemBase.js +2 -4
  95. package/lib/OrderedList/OrderedList.js +5 -13
  96. package/lib/OrderedList/OrderedListBase.js +2 -4
  97. package/lib/Pagination/PageButton.js +1 -1
  98. package/lib/Pagination/Pagination.js +1 -1
  99. package/lib/Pagination/SideButton.js +2 -4
  100. package/lib/PriceLockup/PriceLockup.js +5 -5
  101. package/lib/ProductCard/ProductCard.js +3 -2
  102. package/lib/ProductCardGroup/ProductCardGroup.js +5 -6
  103. package/lib/Progress/Progress.js +2 -4
  104. package/lib/Progress/ProgressBar.js +2 -4
  105. package/lib/Progress/ProgressBarBackground.js +2 -4
  106. package/lib/QuickLinks/QuickLinks.js +2 -4
  107. package/lib/QuickLinks/QuickLinksCard.js +4 -2
  108. package/lib/QuickLinks/QuickLinksItem.js +2 -4
  109. package/lib/QuickLinksFeature/QuickLinksFeature.js +9 -7
  110. package/lib/QuickLinksFeature/QuickLinksFeatureItem.js +10 -12
  111. package/lib/Radio/Radio.js +3 -3
  112. package/lib/Radio/RadioButton.js +61 -15
  113. package/lib/Radio/RadioGroup.js +2 -4
  114. package/lib/Radio/RadioInput.js +6 -18
  115. package/lib/RadioCard/RadioCard.js +3 -3
  116. package/lib/RadioCard/RadioCardGroup.js +3 -3
  117. package/lib/Responsive/Responsive.js +3 -2
  118. package/lib/Responsive/ResponsiveWithMediaQueryStyleSheet.js +3 -2
  119. package/lib/Search/Search.js +2 -4
  120. package/lib/Select/Group.js +4 -2
  121. package/lib/Select/Item.js +4 -2
  122. package/lib/Select/Picker.js +2 -4
  123. package/lib/Select/Picker.native.js +3 -5
  124. package/lib/Select/Select.js +4 -6
  125. package/lib/SideNav/Item.js +2 -4
  126. package/lib/SideNav/ItemContent.js +4 -2
  127. package/lib/SideNav/ItemsGroup.js +2 -4
  128. package/lib/SideNav/SideNav.js +2 -2
  129. package/lib/Skeleton/Skeleton.js +2 -4
  130. package/lib/SkipLink/SkipLink.js +2 -4
  131. package/lib/Spacer/Spacer.js +2 -4
  132. package/lib/StackView/StackView.js +2 -4
  133. package/lib/StackView/StackWrap.js +3 -5
  134. package/lib/StackView/StackWrapBox.js +2 -4
  135. package/lib/StackView/StackWrapGap.js +2 -4
  136. package/lib/StackView/getStackedContent.js +3 -3
  137. package/lib/StepTracker/Step.js +4 -2
  138. package/lib/StepTracker/StepTracker.js +2 -4
  139. package/lib/Tabs/Tabs.js +4 -4
  140. package/lib/Tabs/TabsItem.js +3 -5
  141. package/lib/Tags/Tags.js +2 -4
  142. package/lib/TextInput/TextArea.js +3 -5
  143. package/lib/TextInput/TextInput.js +2 -4
  144. package/lib/TextInput/TextInputBase.js +7 -9
  145. package/lib/ThemeProvider/ThemeProvider.js +5 -7
  146. package/lib/Timeline/Timeline.js +2 -4
  147. package/lib/ToggleSwitch/ToggleSwitch.js +2 -4
  148. package/lib/ToggleSwitch/ToggleSwitchGroup.js +2 -4
  149. package/lib/Tooltip/Tooltip.js +6 -8
  150. package/lib/Tooltip/Tooltip.native.js +12 -14
  151. package/lib/TooltipButton/TooltipButton.js +4 -2
  152. package/lib/Typography/Typography.js +2 -4
  153. package/lib/Validator/Validator.js +11 -13
  154. package/lib/ViewportProvider/ViewportProvider.js +2 -4
  155. package/lib/index.js +8 -0
  156. package/lib/utils/BaseView/BaseView.js +2 -4
  157. package/lib/utils/children.js +4 -6
  158. package/lib/utils/withLinkRouter.js +3 -5
  159. package/lib-module/A11yInfoProvider/index.js +8 -8
  160. package/lib-module/A11yText/index.js +2 -2
  161. package/lib-module/ActivityIndicator/Spinner.js +2 -2
  162. package/lib-module/ActivityIndicator/Spinner.native.js +2 -2
  163. package/lib-module/Autocomplete/Autocomplete.js +13 -14
  164. package/lib-module/Autocomplete/Loading.js +4 -2
  165. package/lib-module/Autocomplete/Suggestions.js +2 -2
  166. package/lib-module/Badge/Badge.js +2 -2
  167. package/lib-module/BaseProvider/HydrationContext.js +5 -5
  168. package/lib-module/Box/Box.js +5 -5
  169. package/lib-module/Button/Button.js +2 -2
  170. package/lib-module/Button/ButtonBase.js +2 -5
  171. package/lib-module/Button/ButtonDropdown.js +2 -2
  172. package/lib-module/Button/ButtonGroup.js +11 -2
  173. package/lib-module/Button/ButtonLink.js +2 -2
  174. package/lib-module/Card/Card.js +159 -14
  175. package/lib-module/Card/CardBase.js +2 -2
  176. package/lib-module/Card/PressableCardBase.js +4 -4
  177. package/lib-module/CardGroup/CardGroup.js +210 -0
  178. package/lib-module/CardGroup/dictionary.js +8 -0
  179. package/lib-module/CardGroup/index.js +2 -0
  180. package/lib-module/Carousel/Carousel.js +308 -129
  181. package/lib-module/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +2 -2
  182. package/lib-module/Carousel/CarouselItem/CarouselItem.js +3 -2
  183. package/lib-module/Carousel/CarouselStepTracker/CarouselStepTracker.js +4 -2
  184. package/lib-module/Carousel/CarouselTabs/CarouselTabs.js +2 -2
  185. package/lib-module/Carousel/CarouselTabs/CarouselTabsPanel.js +6 -6
  186. package/lib-module/Carousel/CarouselTabs/CarouselTabsPanelItem.js +3 -3
  187. package/lib-module/Carousel/CarouselThumbnail.js +4 -2
  188. package/lib-module/Carousel/CarouselThumbnailNavigation.js +2 -2
  189. package/lib-module/Checkbox/Checkbox.js +2 -2
  190. package/lib-module/Checkbox/CheckboxButton.js +3 -3
  191. package/lib-module/Checkbox/CheckboxGroup.js +2 -2
  192. package/lib-module/Checkbox/CheckboxInput.js +4 -12
  193. package/lib-module/CheckboxCard/CheckboxCard.js +2 -2
  194. package/lib-module/CheckboxCardGroup/CheckboxCardGroup.js +2 -2
  195. package/lib-module/ColourToggle/ColourBubble.js +5 -4
  196. package/lib-module/ColourToggle/ColourToggle.js +3 -3
  197. package/lib-module/Divider/Divider.js +2 -2
  198. package/lib-module/ExpandCollapse/Accordion.js +2 -2
  199. package/lib-module/ExpandCollapse/Control.js +2 -2
  200. package/lib-module/ExpandCollapse/ExpandCollapse.js +20 -11
  201. package/lib-module/ExpandCollapse/Panel.js +16 -4
  202. package/lib-module/ExpandCollapse/dictionary.js +10 -0
  203. package/lib-module/Feedback/Feedback.js +2 -2
  204. package/lib-module/Fieldset/Fieldset.js +2 -2
  205. package/lib-module/Fieldset/FieldsetContainer.js +2 -2
  206. package/lib-module/Fieldset/FieldsetContainer.native.js +2 -2
  207. package/lib-module/Fieldset/Legend.js +2 -2
  208. package/lib-module/Fieldset/Legend.native.js +2 -2
  209. package/lib-module/FlexGrid/Col/Col.js +3 -3
  210. package/lib-module/FlexGrid/FlexGrid.js +2 -2
  211. package/lib-module/FlexGrid/Row/Row.js +2 -2
  212. package/lib-module/Footnote/Footnote.js +9 -7
  213. package/lib-module/Footnote/FootnoteLink.js +5 -4
  214. package/lib-module/HorizontalScroll/HorizontalScroll.js +8 -8
  215. package/lib-module/HorizontalScroll/HorizontalScrollButton.js +2 -2
  216. package/lib-module/HorizontalScroll/ScrollViewEnd.js +5 -8
  217. package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +2 -2
  218. package/lib-module/Icon/Icon.js +2 -2
  219. package/lib-module/Icon/IconText.js +5 -5
  220. package/lib-module/IconButton/IconButton.js +2 -2
  221. package/lib-module/InputLabel/InputLabel.js +2 -2
  222. package/lib-module/InputLabel/LabelContent.js +2 -2
  223. package/lib-module/InputLabel/LabelContent.native.js +2 -2
  224. package/lib-module/InputSupports/InputSupports.js +4 -3
  225. package/lib-module/Link/ChevronLink.js +2 -2
  226. package/lib-module/Link/InlinePressable.js +10 -4
  227. package/lib-module/Link/InlinePressable.native.js +12 -6
  228. package/lib-module/Link/Link.js +2 -2
  229. package/lib-module/Link/LinkBase.js +2 -2
  230. package/lib-module/Link/TextButton.js +2 -2
  231. package/lib-module/List/List.js +13 -9
  232. package/lib-module/List/ListItem.js +2 -2
  233. package/lib-module/List/ListItemBase.js +6 -8
  234. package/lib-module/List/ListItemContent.js +4 -2
  235. package/lib-module/List/ListItemMark.js +4 -2
  236. package/lib-module/List/PressableListItemBase.js +2 -2
  237. package/lib-module/Listbox/GroupControl.js +4 -2
  238. package/lib-module/Listbox/Listbox.js +7 -7
  239. package/lib-module/Listbox/ListboxContext.js +2 -2
  240. package/lib-module/Listbox/ListboxGroup.js +2 -2
  241. package/lib-module/Listbox/ListboxItem.js +2 -3
  242. package/lib-module/Listbox/ListboxOverlay.js +2 -3
  243. package/lib-module/Listbox/PressableItem.js +2 -3
  244. package/lib-module/Modal/Modal.js +5 -5
  245. package/lib-module/Modal/ModalContent.js +7 -5
  246. package/lib-module/Modal/WebModal.js +19 -10
  247. package/lib-module/MultiSelectFilter/ModalOverlay.js +2 -2
  248. package/lib-module/MultiSelectFilter/MultiSelectFilter.js +10 -8
  249. package/lib-module/Notification/Notification.js +5 -5
  250. package/lib-module/OrderedList/Item.js +4 -8
  251. package/lib-module/OrderedList/ItemBase.js +2 -2
  252. package/lib-module/OrderedList/OrderedList.js +6 -12
  253. package/lib-module/OrderedList/OrderedListBase.js +2 -2
  254. package/lib-module/Pagination/PageButton.js +2 -2
  255. package/lib-module/Pagination/Pagination.js +2 -2
  256. package/lib-module/Pagination/SideButton.js +2 -2
  257. package/lib-module/PriceLockup/PriceLockup.js +5 -5
  258. package/lib-module/ProductCard/ProductCard.js +3 -2
  259. package/lib-module/ProductCardGroup/ProductCardGroup.js +5 -4
  260. package/lib-module/Progress/Progress.js +2 -2
  261. package/lib-module/Progress/ProgressBar.js +2 -2
  262. package/lib-module/Progress/ProgressBarBackground.js +2 -2
  263. package/lib-module/QuickLinks/QuickLinks.js +2 -2
  264. package/lib-module/QuickLinks/QuickLinksCard.js +4 -2
  265. package/lib-module/QuickLinks/QuickLinksItem.js +2 -2
  266. package/lib-module/QuickLinksFeature/QuickLinksFeature.js +9 -5
  267. package/lib-module/QuickLinksFeature/QuickLinksFeatureItem.js +10 -10
  268. package/lib-module/Radio/Radio.js +2 -2
  269. package/lib-module/Radio/RadioButton.js +62 -14
  270. package/lib-module/Radio/RadioGroup.js +2 -2
  271. package/lib-module/Radio/RadioInput.js +6 -16
  272. package/lib-module/RadioCard/RadioCard.js +2 -2
  273. package/lib-module/RadioCard/RadioCardGroup.js +2 -2
  274. package/lib-module/Responsive/Responsive.js +3 -2
  275. package/lib-module/Responsive/ResponsiveWithMediaQueryStyleSheet.js +3 -2
  276. package/lib-module/Search/Search.js +2 -2
  277. package/lib-module/Select/Group.js +4 -2
  278. package/lib-module/Select/Item.js +4 -2
  279. package/lib-module/Select/Picker.js +2 -2
  280. package/lib-module/Select/Picker.native.js +3 -3
  281. package/lib-module/Select/Select.js +4 -4
  282. package/lib-module/SideNav/Item.js +2 -2
  283. package/lib-module/SideNav/ItemContent.js +4 -2
  284. package/lib-module/SideNav/ItemsGroup.js +2 -2
  285. package/lib-module/SideNav/SideNav.js +3 -3
  286. package/lib-module/Skeleton/Skeleton.js +2 -2
  287. package/lib-module/SkipLink/SkipLink.js +2 -2
  288. package/lib-module/Spacer/Spacer.js +2 -2
  289. package/lib-module/StackView/StackView.js +2 -2
  290. package/lib-module/StackView/StackWrap.js +3 -3
  291. package/lib-module/StackView/StackWrapBox.js +2 -2
  292. package/lib-module/StackView/StackWrapGap.js +2 -2
  293. package/lib-module/StackView/getStackedContent.js +4 -4
  294. package/lib-module/StepTracker/Step.js +4 -2
  295. package/lib-module/StepTracker/StepTracker.js +2 -2
  296. package/lib-module/Tabs/Tabs.js +3 -3
  297. package/lib-module/Tabs/TabsItem.js +3 -3
  298. package/lib-module/Tags/Tags.js +2 -2
  299. package/lib-module/TextInput/TextArea.js +3 -3
  300. package/lib-module/TextInput/TextInput.js +2 -2
  301. package/lib-module/TextInput/TextInputBase.js +7 -7
  302. package/lib-module/ThemeProvider/ThemeProvider.js +5 -5
  303. package/lib-module/Timeline/Timeline.js +2 -2
  304. package/lib-module/ToggleSwitch/ToggleSwitch.js +2 -2
  305. package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +2 -2
  306. package/lib-module/Tooltip/Tooltip.js +6 -6
  307. package/lib-module/Tooltip/Tooltip.native.js +12 -12
  308. package/lib-module/TooltipButton/TooltipButton.js +4 -2
  309. package/lib-module/Typography/Typography.js +2 -2
  310. package/lib-module/Validator/Validator.js +11 -11
  311. package/lib-module/ViewportProvider/ViewportProvider.js +2 -2
  312. package/lib-module/index.js +1 -0
  313. package/lib-module/utils/BaseView/BaseView.js +2 -2
  314. package/lib-module/utils/children.js +4 -4
  315. package/lib-module/utils/withLinkRouter.js +3 -3
  316. package/package.json +2 -2
  317. package/src/A11yInfoProvider/index.jsx +8 -8
  318. package/src/A11yText/index.jsx +2 -2
  319. package/src/ActivityIndicator/Spinner.jsx +2 -2
  320. package/src/ActivityIndicator/Spinner.native.jsx +2 -2
  321. package/src/Autocomplete/Autocomplete.jsx +15 -14
  322. package/src/Autocomplete/Loading.jsx +6 -3
  323. package/src/Autocomplete/Suggestions.jsx +2 -2
  324. package/src/Badge/Badge.jsx +2 -2
  325. package/src/BaseProvider/HydrationContext.jsx +5 -5
  326. package/src/Box/Box.jsx +5 -5
  327. package/src/Button/Button.jsx +11 -9
  328. package/src/Button/ButtonBase.jsx +2 -3
  329. package/src/Button/ButtonDropdown.jsx +2 -2
  330. package/src/Button/ButtonGroup.jsx +11 -2
  331. package/src/Button/ButtonLink.jsx +2 -2
  332. package/src/Card/Card.jsx +151 -11
  333. package/src/Card/CardBase.jsx +2 -2
  334. package/src/Card/PressableCardBase.jsx +18 -4
  335. package/src/CardGroup/CardGroup.jsx +249 -0
  336. package/src/CardGroup/dictionary.js +8 -0
  337. package/src/CardGroup/index.js +3 -0
  338. package/src/Carousel/Carousel.jsx +338 -117
  339. package/src/Carousel/CarouselFirstFocus/CarouselFirstFocus.jsx +2 -2
  340. package/src/Carousel/CarouselItem/CarouselItem.jsx +19 -17
  341. package/src/Carousel/CarouselStepTracker/CarouselStepTracker.jsx +5 -3
  342. package/src/Carousel/CarouselTabs/CarouselTabs.jsx +2 -2
  343. package/src/Carousel/CarouselTabs/CarouselTabsPanel.jsx +6 -6
  344. package/src/Carousel/CarouselTabs/CarouselTabsPanelItem.jsx +3 -3
  345. package/src/Carousel/CarouselThumbnail.jsx +6 -2
  346. package/src/Carousel/CarouselThumbnailNavigation.jsx +2 -2
  347. package/src/Checkbox/Checkbox.jsx +2 -2
  348. package/src/Checkbox/CheckboxButton.jsx +5 -7
  349. package/src/Checkbox/CheckboxGroup.jsx +2 -2
  350. package/src/Checkbox/CheckboxInput.jsx +15 -12
  351. package/src/CheckboxCard/CheckboxCard.jsx +2 -2
  352. package/src/CheckboxCardGroup/CheckboxCardGroup.jsx +2 -2
  353. package/src/ColourToggle/ColourBubble.jsx +5 -4
  354. package/src/ColourToggle/ColourToggle.jsx +3 -3
  355. package/src/Divider/Divider.jsx +2 -2
  356. package/src/ExpandCollapse/Accordion.jsx +4 -2
  357. package/src/ExpandCollapse/Control.jsx +2 -2
  358. package/src/ExpandCollapse/ExpandCollapse.jsx +15 -7
  359. package/src/ExpandCollapse/Panel.jsx +30 -8
  360. package/src/ExpandCollapse/dictionary.js +10 -0
  361. package/src/Feedback/Feedback.jsx +2 -2
  362. package/src/Fieldset/Fieldset.jsx +2 -2
  363. package/src/Fieldset/FieldsetContainer.jsx +2 -2
  364. package/src/Fieldset/FieldsetContainer.native.jsx +2 -2
  365. package/src/Fieldset/Legend.jsx +2 -2
  366. package/src/Fieldset/Legend.native.jsx +2 -2
  367. package/src/FlexGrid/Col/Col.jsx +3 -3
  368. package/src/FlexGrid/FlexGrid.jsx +2 -2
  369. package/src/FlexGrid/Row/Row.jsx +2 -2
  370. package/src/Footnote/Footnote.jsx +111 -98
  371. package/src/Footnote/FootnoteLink.jsx +35 -31
  372. package/src/HorizontalScroll/HorizontalScroll.jsx +8 -8
  373. package/src/HorizontalScroll/HorizontalScrollButton.jsx +2 -2
  374. package/src/HorizontalScroll/ScrollViewEnd.jsx +4 -8
  375. package/src/HorizontalScroll/ScrollViewEnd.native.jsx +2 -2
  376. package/src/Icon/Icon.jsx +2 -2
  377. package/src/Icon/IconText.jsx +7 -5
  378. package/src/IconButton/IconButton.jsx +2 -2
  379. package/src/InputLabel/InputLabel.jsx +2 -2
  380. package/src/InputLabel/LabelContent.jsx +2 -2
  381. package/src/InputLabel/LabelContent.native.jsx +2 -2
  382. package/src/InputSupports/InputSupports.jsx +4 -3
  383. package/src/Link/ChevronLink.jsx +2 -2
  384. package/src/Link/InlinePressable.jsx +22 -15
  385. package/src/Link/InlinePressable.native.jsx +12 -6
  386. package/src/Link/Link.jsx +2 -2
  387. package/src/Link/LinkBase.jsx +2 -2
  388. package/src/Link/TextButton.jsx +2 -2
  389. package/src/List/List.jsx +15 -7
  390. package/src/List/ListItem.jsx +2 -2
  391. package/src/List/ListItemBase.jsx +6 -12
  392. package/src/List/ListItemContent.jsx +5 -2
  393. package/src/List/ListItemMark.jsx +5 -3
  394. package/src/List/PressableListItemBase.jsx +2 -2
  395. package/src/Listbox/GroupControl.jsx +5 -2
  396. package/src/Listbox/Listbox.jsx +7 -7
  397. package/src/Listbox/ListboxContext.js +2 -2
  398. package/src/Listbox/ListboxGroup.jsx +2 -2
  399. package/src/Listbox/ListboxItem.jsx +2 -3
  400. package/src/Listbox/ListboxOverlay.jsx +2 -3
  401. package/src/Listbox/PressableItem.jsx +2 -3
  402. package/src/Modal/Modal.jsx +5 -5
  403. package/src/Modal/ModalContent.jsx +132 -125
  404. package/src/Modal/WebModal.jsx +17 -8
  405. package/src/MultiSelectFilter/ModalOverlay.jsx +2 -2
  406. package/src/MultiSelectFilter/MultiSelectFilter.jsx +263 -252
  407. package/src/Notification/Notification.jsx +5 -5
  408. package/src/OrderedList/Item.jsx +4 -6
  409. package/src/OrderedList/ItemBase.jsx +2 -2
  410. package/src/OrderedList/OrderedList.jsx +4 -7
  411. package/src/OrderedList/OrderedListBase.jsx +2 -2
  412. package/src/Pagination/PageButton.jsx +2 -2
  413. package/src/Pagination/Pagination.jsx +2 -2
  414. package/src/Pagination/SideButton.jsx +2 -2
  415. package/src/PriceLockup/PriceLockup.jsx +93 -88
  416. package/src/ProductCard/ProductCard.jsx +90 -84
  417. package/src/ProductCardGroup/ProductCardGroup.jsx +5 -5
  418. package/src/Progress/Progress.jsx +2 -2
  419. package/src/Progress/ProgressBar.jsx +2 -2
  420. package/src/Progress/ProgressBarBackground.jsx +4 -2
  421. package/src/QuickLinks/QuickLinks.jsx +2 -2
  422. package/src/QuickLinks/QuickLinksCard.jsx +9 -3
  423. package/src/QuickLinks/QuickLinksItem.jsx +2 -2
  424. package/src/QuickLinksFeature/QuickLinksFeature.jsx +31 -27
  425. package/src/QuickLinksFeature/QuickLinksFeatureItem.jsx +3 -3
  426. package/src/Radio/Radio.jsx +2 -2
  427. package/src/Radio/RadioButton.jsx +58 -6
  428. package/src/Radio/RadioGroup.jsx +2 -2
  429. package/src/Radio/RadioInput.jsx +15 -14
  430. package/src/RadioCard/RadioCard.jsx +2 -2
  431. package/src/RadioCard/RadioCardGroup.jsx +2 -2
  432. package/src/Responsive/Responsive.jsx +8 -3
  433. package/src/Responsive/ResponsiveWithMediaQueryStyleSheet.jsx +23 -16
  434. package/src/Search/Search.jsx +2 -2
  435. package/src/Select/Group.jsx +9 -3
  436. package/src/Select/Item.jsx +7 -1
  437. package/src/Select/Picker.jsx +2 -2
  438. package/src/Select/Picker.native.jsx +3 -3
  439. package/src/Select/Select.jsx +4 -4
  440. package/src/SideNav/Item.jsx +2 -2
  441. package/src/SideNav/ItemContent.jsx +7 -3
  442. package/src/SideNav/ItemsGroup.jsx +2 -2
  443. package/src/SideNav/SideNav.jsx +3 -3
  444. package/src/Skeleton/Skeleton.jsx +2 -2
  445. package/src/SkipLink/SkipLink.jsx +2 -2
  446. package/src/Spacer/Spacer.jsx +2 -2
  447. package/src/StackView/StackView.jsx +2 -2
  448. package/src/StackView/StackWrap.jsx +3 -3
  449. package/src/StackView/StackWrapBox.jsx +2 -2
  450. package/src/StackView/StackWrapGap.jsx +2 -2
  451. package/src/StackView/getStackedContent.jsx +4 -4
  452. package/src/StepTracker/Step.jsx +75 -67
  453. package/src/StepTracker/StepTracker.jsx +2 -2
  454. package/src/Tabs/Tabs.jsx +3 -3
  455. package/src/Tabs/TabsItem.jsx +3 -3
  456. package/src/Tags/Tags.jsx +2 -2
  457. package/src/TextInput/TextArea.jsx +3 -3
  458. package/src/TextInput/TextInput.jsx +2 -2
  459. package/src/TextInput/TextInputBase.jsx +7 -7
  460. package/src/ThemeProvider/ThemeProvider.jsx +5 -5
  461. package/src/Timeline/Timeline.jsx +2 -2
  462. package/src/ToggleSwitch/ToggleSwitch.jsx +2 -2
  463. package/src/ToggleSwitch/ToggleSwitchGroup.jsx +2 -2
  464. package/src/Tooltip/Tooltip.jsx +6 -6
  465. package/src/Tooltip/Tooltip.native.jsx +12 -12
  466. package/src/TooltipButton/TooltipButton.jsx +5 -2
  467. package/src/Typography/Typography.jsx +2 -2
  468. package/src/Validator/Validator.jsx +11 -11
  469. package/src/ViewportProvider/ViewportProvider.jsx +2 -2
  470. package/src/index.js +1 -0
  471. package/src/utils/BaseView/BaseView.jsx +2 -2
  472. package/src/utils/children.jsx +4 -4
  473. package/src/utils/withLinkRouter.jsx +3 -3
  474. package/types/ExpandCollapse.d.ts +1 -1
@@ -28,6 +28,11 @@ var _CarouselTabsPanelItem = _interopRequireDefault(require("./CarouselTabs/Caro
28
28
  var _dictionary = _interopRequireDefault(require("./dictionary"));
29
29
  var _jsxRuntime = require("react/jsx-runtime");
30
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
+ const TRANSITION_MODES = {
32
+ MANUAL: 'manual',
33
+ AUTOMATIC: 'automatic',
34
+ SWIPE: 'swipe'
35
+ };
31
36
  const staticStyles = _StyleSheet.default.create({
32
37
  root: {
33
38
  backgroundColor: 'transparent',
@@ -36,6 +41,12 @@ const staticStyles = _StyleSheet.default.create({
36
41
  position: 'relative',
37
42
  top: 0,
38
43
  left: 0
44
+ },
45
+ animationControlButton: {
46
+ position: 'absolute',
47
+ zIndex: 1,
48
+ right: _Platform.default.OS === 'web' ? undefined : 40,
49
+ top: 40
39
50
  }
40
51
  });
41
52
  const selectContainerStyles = width => ({
@@ -48,12 +59,29 @@ const selectSwipeAreaStyles = (count, width) => ({
48
59
  justifyContent: 'space-between',
49
60
  flexDirection: 'row'
50
61
  });
62
+ const getDynamicPositionProperty = areStylesAppliedOnPreviousButton => areStylesAppliedOnPreviousButton ? 'left' : 'right';
63
+ const selectControlButtonPositionStyles = _ref => {
64
+ let {
65
+ positionVariant,
66
+ buttonWidth,
67
+ positionProperty = getDynamicPositionProperty(),
68
+ spaceBetweenSlideAndButton
69
+ } = _ref;
70
+ const styles = {};
71
+ if (positionVariant === 'edge') {
72
+ styles[positionProperty] = -1 * (buttonWidth / 2);
73
+ } else if (positionVariant === 'inside') {
74
+ styles[positionProperty] = 0;
75
+ } else if (positionVariant === 'outside') {
76
+ styles[positionProperty] = -1 * (spaceBetweenSlideAndButton + buttonWidth);
77
+ }
78
+ return styles;
79
+ };
51
80
  const selectPreviousNextNavigationButtonStyles = (previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, areStylesAppliedOnPreviousButton) => {
52
81
  const styles = {
53
82
  zIndex: 1,
54
83
  position: 'absolute'
55
84
  };
56
- const dynamicPositionProperty = areStylesAppliedOnPreviousButton ? 'left' : 'right';
57
85
  if (isFirstSlide) {
58
86
  styles.visibility = areStylesAppliedOnPreviousButton ? 'hidden' : 'visible';
59
87
  } else if (isLastSlide) {
@@ -61,19 +89,20 @@ const selectPreviousNextNavigationButtonStyles = (previousNextNavigationButtonWi
61
89
  } else {
62
90
  styles.visibility = 'visible';
63
91
  }
64
- if (previousNextNavigationPosition === 'edge') {
65
- styles[dynamicPositionProperty] = -1 * (previousNextNavigationButtonWidth / 2);
66
- } else if (previousNextNavigationPosition === 'inside') {
67
- styles[dynamicPositionProperty] = 0;
68
- } else if (previousNextNavigationPosition === 'outside') {
69
- styles[dynamicPositionProperty] = -1 * (spaceBetweenSlideAndPreviousNextNavigation + previousNextNavigationButtonWidth);
70
- }
71
- return styles;
92
+ return {
93
+ ...styles,
94
+ ...selectControlButtonPositionStyles({
95
+ positionVariant: previousNextNavigationPosition,
96
+ buttonWidth: previousNextNavigationButtonWidth,
97
+ positionProperty: getDynamicPositionProperty(areStylesAppliedOnPreviousButton),
98
+ spaceBetweenSlideAndButton: spaceBetweenSlideAndPreviousNextNavigation
99
+ })
100
+ };
72
101
  };
73
- const selectIconStyles = _ref => {
102
+ const selectIconStyles = _ref2 => {
74
103
  let {
75
104
  iconBackgroundColor
76
- } = _ref;
105
+ } = _ref2;
77
106
  return {
78
107
  backgroundColor: iconBackgroundColor
79
108
  };
@@ -134,7 +163,7 @@ const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_u
134
163
  - `spaceBetweenSlideAndPreviousNextNavigation` - Horizontal space between slide and previous/next navigational buttons
135
164
  - `spaceBetweenSlideAndPanelNavigation` - Vertical space between slide area and panel navigation area
136
165
  */
137
- const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
166
+ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
138
167
  let {
139
168
  tokens,
140
169
  variant,
@@ -164,8 +193,21 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
164
193
  accessibilityLabel,
165
194
  accessibilityLiveRegion = 'polite',
166
195
  copy,
196
+ slideDuration = 0,
197
+ transitionDuration = 0,
198
+ autoPlay = false,
167
199
  ...rest
168
- } = _ref2;
200
+ } = _ref3;
201
+ let childrenArray = (0, _utils.unpackFragment)(children);
202
+ const autoPlayFeatureEnabled = autoPlay && slideDuration > 0 && transitionDuration > 0 && childrenArray.length > 1;
203
+ // if `Carousel` only has one `Carousel.Item`, convert this to a single-item array
204
+ if (!Array.isArray(childrenArray)) {
205
+ childrenArray = [childrenArray];
206
+ }
207
+ const getCopy = (0, _utils.useCopy)({
208
+ dictionary: _dictionary.default,
209
+ copy
210
+ });
169
211
  const viewport = (0, _ViewportProvider.useViewport)();
170
212
  const themeTokens = (0, _ThemeProvider.useThemeTokens)('Carousel', tokens, variant, {
171
213
  viewport
@@ -173,84 +215,53 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
173
215
  const {
174
216
  previousIcon,
175
217
  nextIcon,
218
+ playIcon,
219
+ pauseIcon,
176
220
  showPreviousNextNavigation,
177
221
  showPanelNavigation,
178
222
  showPanelTabs,
179
223
  spaceBetweenSlideAndPreviousNextNavigation
180
224
  } = themeTokens;
181
225
  const [activeIndex, setActiveIndex] = _react.default.useState(0);
182
- const [isAnimating, setIsAnimating] = _react.default.useState(false);
183
- const handleAnimationStart = _react.default.useCallback(function () {
184
- if (typeof onAnimationStart === 'function') onAnimationStart(...arguments);
185
- setIsAnimating(true);
186
- }, [onAnimationStart]);
187
- const handleAnimationEnd = _react.default.useCallback(function () {
188
- if (typeof onAnimationEnd === 'function') onAnimationEnd(...arguments);
189
- setIsAnimating(false);
190
- }, [onAnimationEnd]);
191
- const getCopy = (0, _utils.useCopy)({
192
- dictionary: _dictionary.default,
193
- copy
194
- });
195
- let childrenArray = (0, _utils.unpackFragment)(children);
196
- // if `Carousel` only has one `Carousel.Item`, convert this to a single-item array
197
- if (!Array.isArray(childrenArray)) {
198
- childrenArray = [childrenArray];
199
- }
200
- const systemProps = selectProps({
201
- ...rest,
202
- accessibilityRole,
203
- accessibilityLabel,
204
- accessibilityValue: {
205
- min: 1,
206
- max: childrenArray.length,
207
- now: activeIndex + 1
208
- }
209
- });
226
+ const activeIndexRef = _react.default.useRef(activeIndex);
210
227
  const {
211
228
  reduceMotionEnabled
212
229
  } = (0, _A11yInfoProvider.useA11yInfo)();
230
+ const reduceMotionRef = _react.default.useRef(reduceMotionEnabled);
213
231
  const [containerLayout, setContainerLayout] = _react.default.useState({
214
232
  x: 0,
215
233
  y: 0,
216
234
  width: 0
217
235
  });
236
+ const containerLayoutRef = _react.default.useRef(containerLayout);
218
237
  const [previousNextNavigationButtonWidth, setPreviousNextNavigationButtonWidth] = _react.default.useState(0);
219
238
  const firstFocusRef = _react.default.useRef(null);
220
239
  const pan = _react.default.useRef(new _Animated.default.ValueXY()).current;
221
240
  const animatedX = _react.default.useRef(0);
222
241
  const animatedY = _react.default.useRef(0);
242
+ const [isAnimating, setIsAnimating] = _react.default.useState(false);
243
+ /**
244
+ * While having the same starting point, `isAutoPlayEnabled` and `isCarouselPlaying` are different states
245
+ *
246
+ * `isAutoPlayEnabled` is a state to determine if the autoplay feature is enabled or disabled
247
+ * `isCarouselPlaying` is a state to determine if the carousel is currently playing or paused
248
+ */
249
+ const [isAutoPlayEnabled, setIsAutoPlayEnabled] = _react.default.useState(autoPlayFeatureEnabled);
250
+ const [isCarouselPlaying, setisCarouselPlaying] = _react.default.useState(autoPlayFeatureEnabled);
251
+ const isSwiping = _react.default.useRef(false);
252
+ const autoPlayRef = _react.default.useRef(null);
223
253
  const isFirstSlide = !activeIndex;
224
- const isLastSlide = activeIndex + 1 >= children.length;
225
- const onContainerLayout = _ref3 => {
226
- let {
227
- nativeEvent: {
228
- layout: {
229
- x,
230
- y,
231
- width
232
- }
233
- }
234
- } = _ref3;
235
- return setContainerLayout(prevState => ({
236
- ...prevState,
237
- x,
238
- y,
239
- width
240
- }));
241
- };
242
- const onPreviousNextNavigationButtonLayout = _ref4 => {
243
- let {
244
- nativeEvent: {
245
- layout: {
246
- width
247
- }
248
- }
249
- } = _ref4;
250
- return setPreviousNextNavigationButtonWidth(width);
251
- };
254
+ const isLastSlide = activeIndex + 1 >= childrenArray.length;
255
+ const handleAnimationStart = _react.default.useCallback(function () {
256
+ if (typeof onAnimationStart === 'function') onAnimationStart(...arguments);
257
+ setIsAnimating(true);
258
+ }, [onAnimationStart]);
259
+ const handleAnimationEnd = _react.default.useCallback(function () {
260
+ if (typeof onAnimationEnd === 'function') onAnimationEnd(...arguments);
261
+ setIsAnimating(false);
262
+ }, [onAnimationEnd]);
252
263
  const updateOffset = _react.default.useCallback(() => {
253
- animatedX.current = containerLayout.width * activeIndex * -1;
264
+ animatedX.current = containerLayoutRef.current.width * activeIndexRef.current * -1;
254
265
  animatedY.current = 0;
255
266
  pan.setOffset({
256
267
  x: animatedX.current,
@@ -260,7 +271,7 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
260
271
  x: 0,
261
272
  y: 0
262
273
  });
263
- }, [activeIndex, containerLayout.width, pan, animatedX]);
274
+ }, [pan, animatedX]);
264
275
  const animate = _react.default.useCallback((toValue, toIndex) => {
265
276
  const handleAnimationEndToIndex = function () {
266
277
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
@@ -268,12 +279,19 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
268
279
  }
269
280
  return handleAnimationEnd(toIndex, ...args);
270
281
  };
271
- if (reduceMotionEnabled) {
282
+ if (reduceMotionRef.current || isSwiping.current) {
272
283
  _Animated.default.timing(pan, {
273
284
  toValue,
274
285
  duration: 1,
275
286
  useNativeDriver: false
276
287
  }).start(handleAnimationEndToIndex);
288
+ } else if (isAutoPlayEnabled) {
289
+ _Animated.default.timing(pan, {
290
+ ...springConfig,
291
+ toValue,
292
+ useNativeDriver: false,
293
+ duration: transitionDuration * 1000
294
+ }).start(handleAnimationEndToIndex);
277
295
  } else {
278
296
  _Animated.default.spring(pan, {
279
297
  ...springConfig,
@@ -281,44 +299,162 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
281
299
  useNativeDriver: false
282
300
  }).start(handleAnimationEndToIndex);
283
301
  }
284
- }, [pan, springConfig, reduceMotionEnabled, handleAnimationEnd]);
302
+ }, [pan, springConfig, handleAnimationEnd, transitionDuration, isAutoPlayEnabled]);
303
+ const stopAutoplay = _react.default.useCallback(() => {
304
+ if (autoPlayRef !== null && autoPlayRef !== void 0 && autoPlayRef.current) {
305
+ clearTimeout(autoPlayRef === null || autoPlayRef === void 0 ? void 0 : autoPlayRef.current);
306
+ }
307
+ }, []);
308
+ const triggerRefocus = _react.default.useCallback(() => {
309
+ if (refocus && _Platform.default.OS === 'web') {
310
+ var _firstFocusRef$curren;
311
+ (_firstFocusRef$curren = firstFocusRef.current) === null || _firstFocusRef$curren === void 0 ? void 0 : _firstFocusRef$curren.focus({
312
+ preventScroll: true,
313
+ focusVisible: false
314
+ });
315
+ }
316
+ }, [refocus, firstFocusRef]);
285
317
  const updateIndex = _react.default.useCallback(function () {
286
318
  let delta = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
319
+ let transitionMode = arguments.length > 1 ? arguments[1] : undefined;
287
320
  const toValue = {
288
321
  x: 0,
289
322
  y: 0
290
323
  };
291
324
  let skipChanges = !delta;
292
325
  let calcDelta = delta;
293
- if (activeIndex <= 0 && delta < 0) {
294
- skipChanges = true;
295
- calcDelta = children.length + delta;
296
- } else if (activeIndex + 1 >= children.length && delta > 0) {
297
- skipChanges = true;
298
- calcDelta = -1 * activeIndex + delta - 1;
326
+ if (activeIndexRef.current <= 0 && delta < 0) {
327
+ skipChanges = transitionMode !== TRANSITION_MODES.AUTOMATIC;
328
+ calcDelta = childrenArray.length + delta;
329
+ } else if (activeIndexRef.current + 1 >= childrenArray.length && delta > 0) {
330
+ skipChanges = transitionMode !== TRANSITION_MODES.AUTOMATIC;
331
+ calcDelta = -1 * activeIndexRef.current + delta - 1;
299
332
  }
300
- const index = activeIndex + calcDelta;
333
+ const index = activeIndexRef.current + calcDelta;
301
334
  if (skipChanges) {
302
335
  animate(toValue, index);
303
336
  return calcDelta;
304
337
  }
338
+ stopAutoplay();
305
339
  setActiveIndex(index);
306
- toValue.x = containerLayout.width * -1 * calcDelta;
340
+ toValue.x = containerLayoutRef.current.width * -1 * calcDelta;
307
341
  animate(toValue, index);
342
+ if (isCarouselPlaying) {
343
+ stopAutoplay();
344
+ if (index === 0 && activeIndexRef.current + 1 === childrenArray.length && transitionMode === TRANSITION_MODES.AUTOMATIC) {
345
+ setisCarouselPlaying(false);
346
+ } else if (isAutoPlayEnabled) {
347
+ autoPlayRef.current = setTimeout(() => {
348
+ updateOffset();
349
+ handleAnimationStart(activeIndexRef.current);
350
+ updateIndex(slideDuration < 0 ? -1 : 1, TRANSITION_MODES.AUTOMATIC);
351
+ triggerRefocus();
352
+ }, Math.abs(slideDuration) * 1000);
353
+ }
354
+ }
308
355
  if (onIndexChanged) onIndexChanged(calcDelta, index);
309
356
  return calcDelta;
310
- }, [containerLayout.width, activeIndex, animate, children.length, onIndexChanged]);
311
- const fixOffsetAndGo = _react.default.useCallback(delta => {
312
- var _firstFocusRef$curren;
357
+ }, [handleAnimationStart, triggerRefocus, slideDuration, updateOffset, animate, childrenArray.length, onIndexChanged, isCarouselPlaying, stopAutoplay, isAutoPlayEnabled]);
358
+ const startAutoplay = _react.default.useCallback(() => {
359
+ stopAutoplay();
360
+ if (isAutoPlayEnabled) {
361
+ autoPlayRef.current = setTimeout(() => {
362
+ updateOffset();
363
+ handleAnimationStart(activeIndexRef.current);
364
+ updateIndex(slideDuration < 0 ? -1 : 1, TRANSITION_MODES.AUTOMATIC);
365
+ triggerRefocus();
366
+ }, Math.abs(slideDuration) * 1000);
367
+ }
368
+ }, [handleAnimationStart, triggerRefocus, updateIndex, updateOffset, slideDuration, stopAutoplay, isAutoPlayEnabled]);
369
+ const fixOffsetAndGo = _react.default.useCallback((delta, transitionMode) => {
313
370
  updateOffset();
314
- handleAnimationStart(activeIndex);
315
- updateIndex(delta);
316
- if (refocus) (_firstFocusRef$curren = firstFocusRef.current) === null || _firstFocusRef$curren === void 0 ? void 0 : _firstFocusRef$curren.focus();
317
- }, [updateIndex, updateOffset, activeIndex, handleAnimationStart, refocus]);
371
+ handleAnimationStart(activeIndexRef.current);
372
+ updateIndex(delta, transitionMode);
373
+ triggerRefocus();
374
+ }, [updateIndex, updateOffset, handleAnimationStart, triggerRefocus]);
318
375
  const goToNeighboring = _react.default.useCallback(function () {
319
376
  let toPrev = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
320
- fixOffsetAndGo(toPrev ? -1 : 1);
377
+ let transitionMode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : TRANSITION_MODES.MANUAL;
378
+ fixOffsetAndGo(toPrev ? -1 : 1, transitionMode);
321
379
  }, [fixOffsetAndGo]);
380
+ _react.default.useEffect(() => {
381
+ activeIndexRef.current = activeIndex;
382
+ }, [activeIndex]);
383
+ _react.default.useEffect(() => {
384
+ reduceMotionRef.current = reduceMotionEnabled;
385
+ }, [reduceMotionEnabled]);
386
+ _react.default.useEffect(() => {
387
+ containerLayoutRef.current = containerLayout;
388
+ }, [containerLayout]);
389
+ _react.default.useEffect(() => {
390
+ pan.x.addListener(_ref4 => {
391
+ let {
392
+ value
393
+ } = _ref4;
394
+ animatedX.current = value;
395
+ });
396
+ pan.y.addListener(_ref5 => {
397
+ let {
398
+ value
399
+ } = _ref5;
400
+ animatedY.current = value;
401
+ });
402
+ if (isCarouselPlaying) {
403
+ startAutoplay();
404
+ }
405
+ return () => {
406
+ stopAutoplay();
407
+ pan.x.removeAllListeners();
408
+ pan.y.removeAllListeners();
409
+ };
410
+ }, [pan.x, pan.y, startAutoplay, stopAutoplay, isCarouselPlaying]);
411
+ _react.default.useEffect(() => {
412
+ const subscription = _Dimensions.default.addEventListener('change', () => {
413
+ updateOffset();
414
+ });
415
+ return () => {
416
+ if (subscription.remove) {
417
+ subscription.remove();
418
+ } else {
419
+ _Dimensions.default.removeEventListener('change', updateOffset);
420
+ }
421
+ };
422
+ }, [updateOffset]);
423
+ _react.default.useEffect(() => {
424
+ setIsAutoPlayEnabled(autoPlay && slideDuration > 0 && transitionDuration > 0 && childrenArray.length > 1);
425
+ }, [autoPlay, slideDuration, transitionDuration, childrenArray.length]);
426
+ _react.default.useEffect(() => {
427
+ return () => {
428
+ stopAutoplay();
429
+ };
430
+ }, [stopAutoplay]);
431
+ const onContainerLayout = _ref6 => {
432
+ let {
433
+ nativeEvent: {
434
+ layout: {
435
+ x,
436
+ y,
437
+ width
438
+ }
439
+ }
440
+ } = _ref6;
441
+ return setContainerLayout(prevState => ({
442
+ ...prevState,
443
+ x,
444
+ y,
445
+ width
446
+ }));
447
+ };
448
+ const onPreviousNextNavigationButtonLayout = _ref7 => {
449
+ let {
450
+ nativeEvent: {
451
+ layout: {
452
+ width
453
+ }
454
+ }
455
+ } = _ref7;
456
+ return setPreviousNextNavigationButtonWidth(width);
457
+ };
322
458
  const isSwipeAllowed = _react.default.useCallback(() => {
323
459
  if (childrenArray.length === 1) {
324
460
  return false;
@@ -335,52 +471,39 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
335
471
  if (!isSwipeAllowed()) {
336
472
  return false;
337
473
  }
338
- handleAnimationStart(activeIndex);
339
- return Math.abs(gestureState.dx) > minDistanceToCapture;
474
+ handleAnimationStart(activeIndexRef.current);
475
+ const allow = Math.abs(gestureState.dx) > minDistanceToCapture;
476
+ if (allow) {
477
+ isSwiping.current = true;
478
+ stopAutoplay();
479
+ }
480
+ return allow;
481
+ },
482
+ onPanResponderGrant: () => {
483
+ updateOffset();
340
484
  },
341
- onPanResponderGrant: () => updateOffset(),
342
485
  onPanResponderMove: _Animated.default.event([null, {
343
486
  dx: pan.x
344
487
  }], {
345
488
  useNativeDriver: false
346
489
  }),
347
490
  onPanResponderRelease: (_, gesture) => {
491
+ if (isCarouselPlaying) {
492
+ startAutoplay();
493
+ }
348
494
  const correction = gesture.moveX - gesture.x0;
349
- if (Math.abs(correction) < containerLayout.width * minDistanceForAction) {
495
+ if (Math.abs(correction) < containerLayoutRef.current.width * minDistanceForAction) {
350
496
  animate({
351
497
  x: 0,
352
498
  y: 0
353
499
  }, 0);
354
500
  } else {
355
501
  const delta = correction > 0 ? -1 : 1;
356
- updateIndex(delta);
502
+ updateIndex(delta, TRANSITION_MODES.SWIPE);
357
503
  }
504
+ isSwiping.current = false;
358
505
  }
359
- }), [containerLayout.width, updateIndex, updateOffset, animate, isSwipeAllowed, activeIndex, minDistanceForAction, handleAnimationStart, minDistanceToCapture, pan.x]);
360
- _react.default.useEffect(() => {
361
- pan.x.addListener(_ref5 => {
362
- let {
363
- value
364
- } = _ref5;
365
- animatedX.current = value;
366
- });
367
- pan.y.addListener(_ref6 => {
368
- let {
369
- value
370
- } = _ref6;
371
- animatedY.current = value;
372
- });
373
- return () => {
374
- pan.x.removeAllListeners();
375
- pan.y.removeAllListeners();
376
- };
377
- }, [pan.x, pan.y]);
378
- _react.default.useEffect(() => {
379
- const subscription = _Dimensions.default.addEventListener('change', () => {
380
- updateOffset();
381
- });
382
- return () => subscription === null || subscription === void 0 ? void 0 : subscription.remove();
383
- });
506
+ }), [updateIndex, updateOffset, animate, isSwipeAllowed, minDistanceForAction, handleAnimationStart, minDistanceToCapture, pan.x, startAutoplay, stopAutoplay, isCarouselPlaying]);
384
507
  const goToNext = _react.default.useCallback(() => {
385
508
  goToNeighboring();
386
509
  }, [goToNeighboring]);
@@ -389,11 +512,11 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
389
512
  }, [goToNeighboring]);
390
513
  const goTo = _react.default.useCallback(function () {
391
514
  let index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
392
- const delta = index - activeIndex;
515
+ const delta = index - activeIndexRef.current;
393
516
  if (delta) {
394
- fixOffsetAndGo(delta);
517
+ fixOffsetAndGo(delta, TRANSITION_MODES.MANUAL);
395
518
  }
396
- }, [fixOffsetAndGo, activeIndex]);
519
+ }, [fixOffsetAndGo]);
397
520
 
398
521
  // @TODO: - these are Allium-theme variants and won't have any effect in themes that don't implement them.
399
522
  // Normally we avoid setting variants of subcomponents, however this could be re-considered.
@@ -426,6 +549,17 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
426
549
  }
427
550
  }
428
551
  };
552
+ const systemProps = selectProps({
553
+ ...rest,
554
+ accessibilityRole,
555
+ accessibilityLabel,
556
+ accessibilityValue: {
557
+ min: 1,
558
+ max: childrenArray.length,
559
+ now: activeIndex + 1
560
+ }
561
+ });
562
+
429
563
  // If container isn't used for focus, give it a label of title if none is passed in,
430
564
  // otherwise read the current position on focus
431
565
  const containerAccessibilityLabel = systemProps.accessibilityLabel ?? isFirstFocusContainer ? `${title ? `${title} ` : ''}${getCopyWithPlaceholders('stepTrackerLabel')}` : title;
@@ -437,6 +571,14 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
437
571
  focusable: true
438
572
  })
439
573
  };
574
+ const onAnimationControlButtonPress = _react.default.useCallback(() => {
575
+ if (isCarouselPlaying) {
576
+ stopAutoplay();
577
+ } else {
578
+ startAutoplay();
579
+ }
580
+ setisCarouselPlaying(prevState => !prevState);
581
+ }, [isCarouselPlaying, stopAutoplay, startAutoplay]);
440
582
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_CarouselContext.CarouselProvider, {
441
583
  activeIndex: activeIndex,
442
584
  goTo: goTo,
@@ -448,12 +590,30 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
448
590
  refocus: refocus,
449
591
  width: containerLayout.width,
450
592
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
451
- style: staticStyles.root,
593
+ style: [staticStyles.root, {
594
+ ..._Platform.default.select({
595
+ web: {
596
+ outline: 'none'
597
+ }
598
+ })
599
+ }],
452
600
  onLayout: onContainerLayout,
453
601
  ref: ref,
454
602
  ...systemProps,
455
603
  ...containerProps,
456
- children: [showPreviousNextNavigation && childrenArray.length > 1 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
604
+ children: [isAutoPlayEnabled ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
605
+ style: [staticStyles.animationControlButton, selectControlButtonPositionStyles({
606
+ positionVariant: previousNextNavigationPosition,
607
+ buttonWidth: previousNextNavigationButtonWidth,
608
+ positionProperty: getDynamicPositionProperty(),
609
+ spaceBetweenSlideAndButton: spaceBetweenSlideAndPreviousNextNavigation
610
+ })],
611
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
612
+ icon: isCarouselPlaying ? pauseIcon : playIcon,
613
+ variant: previousNextIconButtonVariants,
614
+ onPress: onAnimationControlButtonPress
615
+ })
616
+ }) : null, showPreviousNextNavigation && childrenArray.length > 1 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
457
617
  style: selectPreviousNextNavigationButtonStyles(previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, true),
458
618
  testID: "previous-button-container",
459
619
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
@@ -477,7 +637,7 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
477
637
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
478
638
  style: selectContainerStyles(containerLayout.width),
479
639
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Animated.default.View, {
480
- style: _StyleSheet.default.flatten([selectSwipeAreaStyles(children.length, containerLayout.width), {
640
+ style: _StyleSheet.default.flatten([selectSwipeAreaStyles(childrenArray.length, containerLayout.width), {
481
641
  transform: [{
482
642
  translateX: pan.x
483
643
  }, {
@@ -579,7 +739,7 @@ Carousel.propTypes = {
579
739
  * <Carousel.Item>First Slide</Carousel.Item>
580
740
  * </Carousel>
581
741
  * ```
582
- * Caution: Always consider wrapping your callback for `onIndexChanged` in `useCallback` in order to avoid bugs and performance issues
742
+ * Caution: Always consider wrapping your callback for `onIndexChanged` in `React.useCallback` in order to avoid bugs and performance issues
583
743
  */
584
744
  onIndexChanged: _propTypes.default.func,
585
745
  /**
@@ -630,7 +790,7 @@ Carousel.propTypes = {
630
790
  * <Carousel.Item>First Slide</Carousel.Item>
631
791
  * </Carousel>
632
792
  * ```
633
- * Caution: Always consider wrapping your callback for `onAnimationStart` in `useCallback` in order to avoid bugs and performance issues
793
+ * Caution: Always consider wrapping your callback for `onAnimationStart` in `React.useCallback` in order to avoid bugs and performance issues
634
794
  */
635
795
  onAnimationStart: _propTypes.default.func,
636
796
  /**
@@ -647,7 +807,7 @@ Carousel.propTypes = {
647
807
  * <Carousel.Item>First Slide</Carousel.Item>
648
808
  * </Carousel>
649
809
  * ```
650
- * Caution: Always consider wrapping your callback for `onAnimationEnd` in `useCallback` in order to avoid bugs and performance issues
810
+ * Caution: Always consider wrapping your callback for `onAnimationEnd` in `React.useCallback` in order to avoid bugs and performance issues
651
811
  */
652
812
  onAnimationEnd: _propTypes.default.func,
653
813
  /**
@@ -676,7 +836,26 @@ Carousel.propTypes = {
676
836
  * Note that if the immediate Carousel children do not all render as `'li'` elements,
677
837
  * this should be changed (e.g. pass tag="div") because only 'li' is a valid child of 'ul'.
678
838
  */
679
- tag: _propTypes.default.oneOf(_utils.layoutTags)
839
+ tag: _propTypes.default.oneOf(_utils.layoutTags),
840
+ /**
841
+ * If set to `true`, the Carousel will automatically transition between slides
842
+ * and show the play/pause button
843
+ * - Default value is `false`
844
+ * - `slideDuration` and `transitionDuration` are required to be set for this to work
845
+ */
846
+ autoPlay: _propTypes.default.bool,
847
+ /**
848
+ * Duration of the time in seconds spent on each slide
849
+ * - Default value is `0`
850
+ * - `autoPlay` and `transitionDuration` are required to be set for this to work
851
+ */
852
+ slideDuration: _propTypes.default.number,
853
+ /**
854
+ * Duration of the time in seconds between each slide transition
855
+ * - Default value is `0`
856
+ * - `autoPlay` and `slideDuration` are required to be set for this to work
857
+ */
858
+ transitionDuration: _propTypes.default.number
680
859
  };
681
860
  Carousel.Item = _CarouselItem.default;
682
861
  Carousel.displayName = 'Carousel';
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
7
+ var _react = _interopRequireDefault(require("react"));
8
8
  var _Pressable = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Pressable"));
9
9
  var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
10
10
  var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
@@ -12,14 +12,12 @@ var _propTypes = require("prop-types");
12
12
  var _CarouselContext = require("../CarouselContext");
13
13
  var _jsxRuntime = require("react/jsx-runtime");
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
15
  /**
18
16
  * Focus target so that when a new slide is shown, the user can tab into
19
17
  * its content using the keyboard.
20
18
  *
21
19
  * @TODO rework this after integrating with SkipLink when available.
22
- */const CarouselFirstFocus = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
20
+ */const CarouselFirstFocus = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
23
21
  let {
24
22
  title
25
23
  } = _ref;