@lumx/react 3.21.1 → 3.21.2-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (528) hide show
  1. package/CONTRIBUTING.md +1 -5
  2. package/README.md +0 -2
  3. package/_internal/{index.js → ClSM3-wl.js} +24 -101
  4. package/_internal/ClSM3-wl.js.map +1 -0
  5. package/index.d.ts +42 -385
  6. package/index.js +4455 -5351
  7. package/index.js.map +1 -1
  8. package/package.json +14 -29
  9. package/utils/index.d.ts +10 -9
  10. package/utils/index.js +1 -1
  11. package/_internal/Falsy.d.ts +0 -7
  12. package/_internal/index.js.map +0 -1
  13. package/src/components/alert-dialog/AlertDialog.stories.tsx +0 -127
  14. package/src/components/alert-dialog/AlertDialog.test.tsx +0 -36
  15. package/src/components/alert-dialog/AlertDialog.tsx +0 -189
  16. package/src/components/alert-dialog/index.ts +0 -1
  17. package/src/components/autocomplete/Autocomplete.stories.tsx +0 -75
  18. package/src/components/autocomplete/Autocomplete.test.tsx +0 -101
  19. package/src/components/autocomplete/Autocomplete.tsx +0 -294
  20. package/src/components/autocomplete/AutocompleteMultiple.stories.tsx +0 -167
  21. package/src/components/autocomplete/AutocompleteMultiple.test.tsx +0 -63
  22. package/src/components/autocomplete/AutocompleteMultiple.tsx +0 -156
  23. package/src/components/autocomplete/__mockData__/index.ts +0 -39
  24. package/src/components/autocomplete/index.ts +0 -2
  25. package/src/components/avatar/Avatar.stories.tsx +0 -121
  26. package/src/components/avatar/Avatar.test.tsx +0 -34
  27. package/src/components/avatar/Avatar.tsx +0 -114
  28. package/src/components/avatar/index.ts +0 -1
  29. package/src/components/badge/Badge.stories.tsx +0 -70
  30. package/src/components/badge/Badge.test.tsx +0 -47
  31. package/src/components/badge/Badge.tsx +0 -58
  32. package/src/components/badge/BadgeWrapper.stories.tsx +0 -76
  33. package/src/components/badge/BadgeWrapper.test.tsx +0 -49
  34. package/src/components/badge/BadgeWrapper.tsx +0 -37
  35. package/src/components/badge/index.ts +0 -2
  36. package/src/components/button/Button.stories.tsx +0 -356
  37. package/src/components/button/Button.test.tsx +0 -127
  38. package/src/components/button/Button.tsx +0 -103
  39. package/src/components/button/ButtonGroup.stories.tsx +0 -54
  40. package/src/components/button/ButtonGroup.test.tsx +0 -43
  41. package/src/components/button/ButtonGroup.tsx +0 -52
  42. package/src/components/button/ButtonRoot.tsx +0 -163
  43. package/src/components/button/IconButton.stories.tsx +0 -52
  44. package/src/components/button/IconButton.test.tsx +0 -68
  45. package/src/components/button/IconButton.tsx +0 -93
  46. package/src/components/button/index.ts +0 -4
  47. package/src/components/checkbox/Checkbox.stories.tsx +0 -64
  48. package/src/components/checkbox/Checkbox.test.tsx +0 -156
  49. package/src/components/checkbox/Checkbox.tsx +0 -164
  50. package/src/components/checkbox/index.ts +0 -1
  51. package/src/components/chip/Chip.stories.tsx +0 -166
  52. package/src/components/chip/Chip.test.tsx +0 -245
  53. package/src/components/chip/Chip.tsx +0 -168
  54. package/src/components/chip/ChipGroup.stories.tsx +0 -49
  55. package/src/components/chip/ChipGroup.test.tsx +0 -39
  56. package/src/components/chip/ChipGroup.tsx +0 -60
  57. package/src/components/chip/index.ts +0 -2
  58. package/src/components/comment-block/CommentBlock.stories.tsx +0 -92
  59. package/src/components/comment-block/CommentBlock.test.tsx +0 -29
  60. package/src/components/comment-block/CommentBlock.tsx +0 -172
  61. package/src/components/comment-block/index.ts +0 -1
  62. package/src/components/date-picker/DatePicker.stories.tsx +0 -118
  63. package/src/components/date-picker/DatePicker.test.tsx +0 -36
  64. package/src/components/date-picker/DatePicker.tsx +0 -52
  65. package/src/components/date-picker/DatePickerControlled.test.tsx +0 -93
  66. package/src/components/date-picker/DatePickerControlled.tsx +0 -259
  67. package/src/components/date-picker/DatePickerField.stories.tsx +0 -100
  68. package/src/components/date-picker/DatePickerField.test.tsx +0 -72
  69. package/src/components/date-picker/DatePickerField.tsx +0 -135
  70. package/src/components/date-picker/constants.ts +0 -11
  71. package/src/components/date-picker/index.ts +0 -4
  72. package/src/components/date-picker/types.ts +0 -28
  73. package/src/components/dialog/Dialog.stories.tsx +0 -318
  74. package/src/components/dialog/Dialog.test.tsx +0 -99
  75. package/src/components/dialog/Dialog.tsx +0 -288
  76. package/src/components/dialog/index.ts +0 -1
  77. package/src/components/divider/Divider.test.tsx +0 -53
  78. package/src/components/divider/Divider.tsx +0 -52
  79. package/src/components/divider/index.ts +0 -1
  80. package/src/components/drag-handle/DragHandle.test.tsx +0 -38
  81. package/src/components/drag-handle/DragHandle.tsx +0 -53
  82. package/src/components/drag-handle/index.ts +0 -1
  83. package/src/components/dropdown/Dropdown.stories.tsx +0 -31
  84. package/src/components/dropdown/Dropdown.test.tsx +0 -66
  85. package/src/components/dropdown/Dropdown.tsx +0 -186
  86. package/src/components/dropdown/index.ts +0 -1
  87. package/src/components/expansion-panel/ExpansionPanel.stories.tsx +0 -91
  88. package/src/components/expansion-panel/ExpansionPanel.test.tsx +0 -187
  89. package/src/components/expansion-panel/ExpansionPanel.tsx +0 -195
  90. package/src/components/expansion-panel/index.ts +0 -1
  91. package/src/components/flag/Flag.stories.tsx +0 -48
  92. package/src/components/flag/Flag.test.tsx +0 -64
  93. package/src/components/flag/Flag.tsx +0 -54
  94. package/src/components/flag/index.ts +0 -1
  95. package/src/components/flex-box/FlexBox.stories.tsx +0 -158
  96. package/src/components/flex-box/FlexBox.test.tsx +0 -25
  97. package/src/components/flex-box/FlexBox.tsx +0 -100
  98. package/src/components/flex-box/index.ts +0 -1
  99. package/src/components/generic-block/GenericBlock.stories.jsx +0 -128
  100. package/src/components/generic-block/GenericBlock.test.tsx +0 -156
  101. package/src/components/generic-block/GenericBlock.tsx +0 -225
  102. package/src/components/generic-block/constants.ts +0 -9
  103. package/src/components/generic-block/index.ts +0 -2
  104. package/src/components/grid/Grid.tsx +0 -85
  105. package/src/components/grid/GridItem.tsx +0 -57
  106. package/src/components/grid/index.ts +0 -2
  107. package/src/components/grid-column/GridColumn.stories.tsx +0 -46
  108. package/src/components/grid-column/GridColumn.test.jsx +0 -58
  109. package/src/components/grid-column/GridColumn.tsx +0 -83
  110. package/src/components/grid-column/index.ts +0 -1
  111. package/src/components/heading/Heading.stories.tsx +0 -70
  112. package/src/components/heading/Heading.test.tsx +0 -84
  113. package/src/components/heading/Heading.tsx +0 -67
  114. package/src/components/heading/HeadingLevelProvider.tsx +0 -30
  115. package/src/components/heading/constants.ts +0 -16
  116. package/src/components/heading/context.tsx +0 -13
  117. package/src/components/heading/index.ts +0 -3
  118. package/src/components/heading/useHeadingLevel.tsx +0 -8
  119. package/src/components/icon/Icon.stories.tsx +0 -73
  120. package/src/components/icon/Icon.test.tsx +0 -127
  121. package/src/components/icon/Icon.tsx +0 -135
  122. package/src/components/icon/index.ts +0 -1
  123. package/src/components/image-block/ImageBlock.stories.tsx +0 -119
  124. package/src/components/image-block/ImageBlock.test.tsx +0 -59
  125. package/src/components/image-block/ImageBlock.tsx +0 -142
  126. package/src/components/image-block/ImageCaption.tsx +0 -115
  127. package/src/components/image-block/index.ts +0 -1
  128. package/src/components/image-lightbox/ImageLightbox.stories.tsx +0 -161
  129. package/src/components/image-lightbox/ImageLightbox.test.tsx +0 -256
  130. package/src/components/image-lightbox/ImageLightbox.tsx +0 -90
  131. package/src/components/image-lightbox/constants.ts +0 -11
  132. package/src/components/image-lightbox/index.ts +0 -2
  133. package/src/components/image-lightbox/internal/ImageSlide.tsx +0 -107
  134. package/src/components/image-lightbox/internal/ImageSlideshow.tsx +0 -164
  135. package/src/components/image-lightbox/internal/useAnimateScroll.ts +0 -55
  136. package/src/components/image-lightbox/internal/usePointerZoom.ts +0 -148
  137. package/src/components/image-lightbox/types.ts +0 -50
  138. package/src/components/image-lightbox/useImageLightbox.tsx +0 -141
  139. package/src/components/inline-list/InlineList.stories.tsx +0 -78
  140. package/src/components/inline-list/InlineList.test.tsx +0 -54
  141. package/src/components/inline-list/InlineList.tsx +0 -96
  142. package/src/components/inline-list/index.ts +0 -1
  143. package/src/components/input-helper/InputHelper.stories.tsx +0 -35
  144. package/src/components/input-helper/InputHelper.test.tsx +0 -57
  145. package/src/components/input-helper/InputHelper.tsx +0 -65
  146. package/src/components/input-helper/constants.ts +0 -11
  147. package/src/components/input-helper/index.ts +0 -1
  148. package/src/components/input-label/InputLabel.stories.tsx +0 -47
  149. package/src/components/input-label/InputLabel.test.tsx +0 -61
  150. package/src/components/input-label/InputLabel.tsx +0 -69
  151. package/src/components/input-label/index.ts +0 -1
  152. package/src/components/lightbox/Lightbox.stories.tsx +0 -101
  153. package/src/components/lightbox/Lightbox.test.tsx +0 -55
  154. package/src/components/lightbox/Lightbox.tsx +0 -180
  155. package/src/components/lightbox/index.ts +0 -1
  156. package/src/components/link/Link.stories.tsx +0 -196
  157. package/src/components/link/Link.test.tsx +0 -129
  158. package/src/components/link/Link.tsx +0 -108
  159. package/src/components/link/index.ts +0 -1
  160. package/src/components/link-preview/LinkPreview.stories.tsx +0 -61
  161. package/src/components/link-preview/LinkPreview.test.tsx +0 -107
  162. package/src/components/link-preview/LinkPreview.tsx +0 -160
  163. package/src/components/link-preview/index.ts +0 -1
  164. package/src/components/list/List.stories.tsx +0 -116
  165. package/src/components/list/List.test.tsx +0 -20
  166. package/src/components/list/List.tsx +0 -104
  167. package/src/components/list/ListDivider.stories.tsx +0 -12
  168. package/src/components/list/ListDivider.test.tsx +0 -24
  169. package/src/components/list/ListDivider.tsx +0 -37
  170. package/src/components/list/ListItem.stories.tsx +0 -66
  171. package/src/components/list/ListItem.test.tsx +0 -95
  172. package/src/components/list/ListItem.tsx +0 -157
  173. package/src/components/list/ListSubheader.stories.tsx +0 -11
  174. package/src/components/list/ListSubheader.test.tsx +0 -23
  175. package/src/components/list/ListSubheader.tsx +0 -44
  176. package/src/components/list/index.ts +0 -4
  177. package/src/components/list/useInteractiveList.tsx +0 -202
  178. package/src/components/message/Message.stories.tsx +0 -72
  179. package/src/components/message/Message.test.tsx +0 -77
  180. package/src/components/message/Message.tsx +0 -100
  181. package/src/components/message/index.ts +0 -1
  182. package/src/components/mosaic/Mosaic.stories.tsx +0 -89
  183. package/src/components/mosaic/Mosaic.test.tsx +0 -79
  184. package/src/components/mosaic/Mosaic.tsx +0 -98
  185. package/src/components/mosaic/index.ts +0 -1
  186. package/src/components/navigation/Navigation.stories.tsx +0 -236
  187. package/src/components/navigation/Navigation.test.tsx +0 -67
  188. package/src/components/navigation/Navigation.tsx +0 -81
  189. package/src/components/navigation/NavigationItem.test.tsx +0 -37
  190. package/src/components/navigation/NavigationItem.tsx +0 -82
  191. package/src/components/navigation/NavigationSection.test.tsx +0 -139
  192. package/src/components/navigation/NavigationSection.tsx +0 -108
  193. package/src/components/navigation/context.tsx +0 -7
  194. package/src/components/navigation/index.ts +0 -1
  195. package/src/components/notification/Notification.test.tsx +0 -96
  196. package/src/components/notification/Notification.tsx +0 -138
  197. package/src/components/notification/Notifications.stories.tsx +0 -92
  198. package/src/components/notification/constants.ts +0 -28
  199. package/src/components/notification/index.ts +0 -1
  200. package/src/components/popover/Popover.stories.tsx +0 -264
  201. package/src/components/popover/Popover.test.tsx +0 -64
  202. package/src/components/popover/Popover.tsx +0 -201
  203. package/src/components/popover/constants.ts +0 -62
  204. package/src/components/popover/index.ts +0 -3
  205. package/src/components/popover/usePopoverStyle.tsx +0 -184
  206. package/src/components/popover/useRestoreFocusOnClose.tsx +0 -47
  207. package/src/components/popover-dialog/PopoverDialog.stories.tsx +0 -64
  208. package/src/components/popover-dialog/PopoverDialog.test.tsx +0 -140
  209. package/src/components/popover-dialog/PopoverDialog.tsx +0 -76
  210. package/src/components/popover-dialog/index.tsx +0 -1
  211. package/src/components/post-block/PostBlock.test.tsx +0 -29
  212. package/src/components/post-block/PostBlock.tsx +0 -122
  213. package/src/components/post-block/index.ts +0 -1
  214. package/src/components/progress/Progress.tsx +0 -70
  215. package/src/components/progress/ProgressCircular.stories.tsx +0 -44
  216. package/src/components/progress/ProgressCircular.test.tsx +0 -48
  217. package/src/components/progress/ProgressCircular.tsx +0 -84
  218. package/src/components/progress/ProgressLinear.stories.tsx +0 -12
  219. package/src/components/progress/ProgressLinear.test.tsx +0 -32
  220. package/src/components/progress/ProgressLinear.tsx +0 -52
  221. package/src/components/progress/index.ts +0 -3
  222. package/src/components/progress-tracker/ProgressTracker.stories.tsx +0 -145
  223. package/src/components/progress-tracker/ProgressTracker.test.tsx +0 -44
  224. package/src/components/progress-tracker/ProgressTracker.tsx +0 -87
  225. package/src/components/progress-tracker/ProgressTrackerProvider.test.tsx +0 -67
  226. package/src/components/progress-tracker/ProgressTrackerProvider.tsx +0 -67
  227. package/src/components/progress-tracker/ProgressTrackerStep.test.tsx +0 -38
  228. package/src/components/progress-tracker/ProgressTrackerStep.tsx +0 -159
  229. package/src/components/progress-tracker/ProgressTrackerStepPanel.test.tsx +0 -36
  230. package/src/components/progress-tracker/ProgressTrackerStepPanel.tsx +0 -69
  231. package/src/components/progress-tracker/index.ts +0 -4
  232. package/src/components/radio-button/RadioButton.stories.tsx +0 -71
  233. package/src/components/radio-button/RadioButton.test.tsx +0 -145
  234. package/src/components/radio-button/RadioButton.tsx +0 -143
  235. package/src/components/radio-button/RadioGroup.stories.tsx +0 -39
  236. package/src/components/radio-button/RadioGroup.test.tsx +0 -31
  237. package/src/components/radio-button/RadioGroup.tsx +0 -44
  238. package/src/components/radio-button/index.ts +0 -2
  239. package/src/components/select/Select.stories.tsx +0 -385
  240. package/src/components/select/Select.test.tsx +0 -201
  241. package/src/components/select/Select.tsx +0 -199
  242. package/src/components/select/SelectMultiple.stories.tsx +0 -315
  243. package/src/components/select/SelectMultiple.test.tsx +0 -215
  244. package/src/components/select/SelectMultiple.tsx +0 -206
  245. package/src/components/select/WithSelectContext.tsx +0 -147
  246. package/src/components/select/constants.ts +0 -55
  247. package/src/components/select/index.ts +0 -2
  248. package/src/components/side-navigation/SideNavigation.stories.tsx +0 -191
  249. package/src/components/side-navigation/SideNavigation.test.tsx +0 -39
  250. package/src/components/side-navigation/SideNavigation.tsx +0 -52
  251. package/src/components/side-navigation/SideNavigationItem.stories.tsx +0 -133
  252. package/src/components/side-navigation/SideNavigationItem.test.tsx +0 -138
  253. package/src/components/side-navigation/SideNavigationItem.tsx +0 -165
  254. package/src/components/side-navigation/index.ts +0 -2
  255. package/src/components/skeleton/SkeletonCircle.stories.tsx +0 -41
  256. package/src/components/skeleton/SkeletonCircle.test.tsx +0 -29
  257. package/src/components/skeleton/SkeletonCircle.tsx +0 -54
  258. package/src/components/skeleton/SkeletonRectangle.stories.tsx +0 -82
  259. package/src/components/skeleton/SkeletonRectangle.test.tsx +0 -29
  260. package/src/components/skeleton/SkeletonRectangle.tsx +0 -90
  261. package/src/components/skeleton/SkeletonTypography.stories.tsx +0 -21
  262. package/src/components/skeleton/SkeletonTypography.test.tsx +0 -29
  263. package/src/components/skeleton/SkeletonTypography.tsx +0 -59
  264. package/src/components/skeleton/index.ts +0 -3
  265. package/src/components/slider/Slider.stories.tsx +0 -45
  266. package/src/components/slider/Slider.test.tsx +0 -31
  267. package/src/components/slider/Slider.tsx +0 -299
  268. package/src/components/slider/index.ts +0 -2
  269. package/src/components/slideshow/Slides.tsx +0 -130
  270. package/src/components/slideshow/Slideshow.stories.tsx +0 -180
  271. package/src/components/slideshow/Slideshow.test.tsx +0 -37
  272. package/src/components/slideshow/Slideshow.tsx +0 -173
  273. package/src/components/slideshow/SlideshowControls.stories.tsx +0 -102
  274. package/src/components/slideshow/SlideshowControls.tsx +0 -243
  275. package/src/components/slideshow/SlideshowItem.tsx +0 -46
  276. package/src/components/slideshow/SlideshowItemGroup.tsx +0 -60
  277. package/src/components/slideshow/constants.ts +0 -24
  278. package/src/components/slideshow/index.ts +0 -4
  279. package/src/components/slideshow/useKeyNavigate.ts +0 -28
  280. package/src/components/slideshow/usePaginationVisibleRange.ts +0 -37
  281. package/src/components/slideshow/useSlideFocusManagement.tsx +0 -92
  282. package/src/components/slideshow/useSwipeNavigate.ts +0 -18
  283. package/src/components/switch/Switch.stories.tsx +0 -49
  284. package/src/components/switch/Switch.test.tsx +0 -146
  285. package/src/components/switch/Switch.tsx +0 -145
  286. package/src/components/switch/index.ts +0 -1
  287. package/src/components/table/Table.test.tsx +0 -31
  288. package/src/components/table/Table.tsx +0 -61
  289. package/src/components/table/TableBody.test.tsx +0 -32
  290. package/src/components/table/TableBody.tsx +0 -44
  291. package/src/components/table/TableCell.test.tsx +0 -74
  292. package/src/components/table/TableCell.tsx +0 -132
  293. package/src/components/table/TableHeader.test.tsx +0 -32
  294. package/src/components/table/TableHeader.tsx +0 -50
  295. package/src/components/table/TableRow.test.tsx +0 -42
  296. package/src/components/table/TableRow.tsx +0 -73
  297. package/src/components/table/index.ts +0 -5
  298. package/src/components/tabs/Tab.test.tsx +0 -52
  299. package/src/components/tabs/Tab.tsx +0 -133
  300. package/src/components/tabs/TabList.test.tsx +0 -51
  301. package/src/components/tabs/TabList.tsx +0 -94
  302. package/src/components/tabs/TabPanel.test.tsx +0 -39
  303. package/src/components/tabs/TabPanel.tsx +0 -69
  304. package/src/components/tabs/TabProvider.test.tsx +0 -163
  305. package/src/components/tabs/TabProvider.tsx +0 -67
  306. package/src/components/tabs/Tabs.stories.tsx +0 -170
  307. package/src/components/tabs/index.ts +0 -4
  308. package/src/components/tabs/state.ts +0 -114
  309. package/src/components/tabs/test-utils.ts +0 -39
  310. package/src/components/text/Text.stories.tsx +0 -177
  311. package/src/components/text/Text.test.tsx +0 -94
  312. package/src/components/text/Text.tsx +0 -141
  313. package/src/components/text/index.ts +0 -1
  314. package/src/components/text-field/RawInputText.stories.tsx +0 -18
  315. package/src/components/text-field/RawInputText.test.tsx +0 -59
  316. package/src/components/text-field/RawInputText.tsx +0 -69
  317. package/src/components/text-field/RawInputTextarea.stories.tsx +0 -22
  318. package/src/components/text-field/RawInputTextarea.test.tsx +0 -64
  319. package/src/components/text-field/RawInputTextarea.tsx +0 -74
  320. package/src/components/text-field/TextField.stories.tsx +0 -180
  321. package/src/components/text-field/TextField.test.tsx +0 -307
  322. package/src/components/text-field/TextField.tsx +0 -323
  323. package/src/components/text-field/constants.ts +0 -16
  324. package/src/components/text-field/index.ts +0 -3
  325. package/src/components/text-field/useFitRowsToContent.ts +0 -42
  326. package/src/components/thumbnail/Thumbnail.stories.tsx +0 -448
  327. package/src/components/thumbnail/Thumbnail.test.tsx +0 -90
  328. package/src/components/thumbnail/Thumbnail.tsx +0 -248
  329. package/src/components/thumbnail/index.ts +0 -3
  330. package/src/components/thumbnail/types.ts +0 -48
  331. package/src/components/thumbnail/useFocusPointStyle.test.ts +0 -92
  332. package/src/components/thumbnail/useFocusPointStyle.tsx +0 -107
  333. package/src/components/thumbnail/useImageLoad.ts +0 -40
  334. package/src/components/toolbar/Toolbar.tsx +0 -68
  335. package/src/components/toolbar/index.ts +0 -1
  336. package/src/components/tooltip/Tooltip.stories.tsx +0 -117
  337. package/src/components/tooltip/Tooltip.test.tsx +0 -417
  338. package/src/components/tooltip/Tooltip.tsx +0 -165
  339. package/src/components/tooltip/constants.ts +0 -8
  340. package/src/components/tooltip/context.tsx +0 -17
  341. package/src/components/tooltip/index.ts +0 -1
  342. package/src/components/tooltip/useInjectTooltipRef.tsx +0 -55
  343. package/src/components/tooltip/useTooltipOpen.tsx +0 -143
  344. package/src/components/uploader/Uploader.stories.tsx +0 -109
  345. package/src/components/uploader/Uploader.test.tsx +0 -148
  346. package/src/components/uploader/Uploader.tsx +0 -177
  347. package/src/components/uploader/index.ts +0 -1
  348. package/src/components/user-block/UserBlock.stories.tsx +0 -135
  349. package/src/components/user-block/UserBlock.test.tsx +0 -108
  350. package/src/components/user-block/UserBlock.tsx +0 -193
  351. package/src/components/user-block/index.ts +0 -1
  352. package/src/constants.ts +0 -27
  353. package/src/hooks/useBooleanState.tsx +0 -13
  354. package/src/hooks/useCallbackOnEscape.ts +0 -34
  355. package/src/hooks/useChipGroupNavigation.tsx +0 -75
  356. package/src/hooks/useClickAway.tsx +0 -48
  357. package/src/hooks/useDisableBodyScroll.ts +0 -28
  358. package/src/hooks/useEventCallback.tsx +0 -17
  359. package/src/hooks/useFocus.tsx +0 -21
  360. package/src/hooks/useFocusTrap.ts +0 -93
  361. package/src/hooks/useFocusWithin.ts +0 -33
  362. package/src/hooks/useId.test.tsx +0 -23
  363. package/src/hooks/useId.ts +0 -15
  364. package/src/hooks/useImageSize.ts +0 -17
  365. package/src/hooks/useInfiniteScroll.tsx +0 -60
  366. package/src/hooks/useIntersectionObserver.tsx +0 -43
  367. package/src/hooks/useInterval.tsx +0 -31
  368. package/src/hooks/useKeyboardListNavigation.tsx +0 -204
  369. package/src/hooks/useListenFocus.tsx +0 -26
  370. package/src/hooks/useOverflowTooltipLabel.tsx +0 -32
  371. package/src/hooks/usePopper.ts +0 -12
  372. package/src/hooks/usePreviousValue.ts +0 -13
  373. package/src/hooks/useRovingTabIndex.tsx +0 -90
  374. package/src/hooks/useSizeOnWindowResize.ts +0 -30
  375. package/src/hooks/useSlideshowControls.ts +0 -246
  376. package/src/hooks/useStopPropagation.ts +0 -21
  377. package/src/hooks/useTransitionVisibility.ts +0 -48
  378. package/src/index.ts +0 -63
  379. package/src/stories/controls/color.ts +0 -7
  380. package/src/stories/controls/element.ts +0 -6
  381. package/src/stories/controls/focusPoint.ts +0 -1
  382. package/src/stories/controls/icons.ts +0 -126
  383. package/src/stories/controls/image.ts +0 -84
  384. package/src/stories/controls/selectArgType.ts +0 -8
  385. package/src/stories/controls/theme.ts +0 -3
  386. package/src/stories/controls/typography.ts +0 -5
  387. package/src/stories/controls/withUndefined.ts +0 -1
  388. package/src/stories/decorators/withChromaticForceScreenSize.tsx +0 -8
  389. package/src/stories/decorators/withCombinations.tsx +0 -132
  390. package/src/stories/decorators/withNestedProps.tsx +0 -23
  391. package/src/stories/decorators/withResizableBox.tsx +0 -21
  392. package/src/stories/decorators/withThemedBackground.tsx +0 -18
  393. package/src/stories/decorators/withValueOnChange.tsx +0 -18
  394. package/src/stories/decorators/withWrapper.tsx +0 -21
  395. package/src/stories/generated/Autocomplete/Demos.stories.tsx +0 -7
  396. package/src/stories/generated/Avatar/Demos.stories.tsx +0 -7
  397. package/src/stories/generated/Badge/Demos.stories.tsx +0 -9
  398. package/src/stories/generated/Button/Demos.stories.tsx +0 -11
  399. package/src/stories/generated/Checkbox/Demos.stories.tsx +0 -6
  400. package/src/stories/generated/Chip/Demos.stories.tsx +0 -11
  401. package/src/stories/generated/CommentBlock/Demos.stories.tsx +0 -8
  402. package/src/stories/generated/DatePicker/Demos.stories.tsx +0 -8
  403. package/src/stories/generated/Dialog/Demos.stories.tsx +0 -10
  404. package/src/stories/generated/Divider/Demos.stories.tsx +0 -6
  405. package/src/stories/generated/Dropdown/Demos.stories.tsx +0 -8
  406. package/src/stories/generated/ExpansionPanel/Demos.stories.tsx +0 -9
  407. package/src/stories/generated/Flag/Demos.stories.tsx +0 -6
  408. package/src/stories/generated/GenericBlock/Demos.stories.tsx +0 -8
  409. package/src/stories/generated/Heading/Demos.stories.tsx +0 -6
  410. package/src/stories/generated/Icon/Demos.stories.tsx +0 -8
  411. package/src/stories/generated/ImageBlock/Demos.stories.tsx +0 -9
  412. package/src/stories/generated/ImageLightbox/Demos.stories.tsx +0 -6
  413. package/src/stories/generated/Lightbox/Demos.stories.tsx +0 -6
  414. package/src/stories/generated/LinkPreview/Demos.stories.tsx +0 -7
  415. package/src/stories/generated/List/Demos.stories.tsx +0 -11
  416. package/src/stories/generated/Message/Demos.stories.tsx +0 -11
  417. package/src/stories/generated/Mosaic/Demos.stories.tsx +0 -10
  418. package/src/stories/generated/Notification/Demos.stories.tsx +0 -6
  419. package/src/stories/generated/Popover/Demos.stories.tsx +0 -11
  420. package/src/stories/generated/PopoverDialog/Demos.stories.tsx +0 -6
  421. package/src/stories/generated/PostBlock/Demos.stories.tsx +0 -6
  422. package/src/stories/generated/Progress/Demos.stories.tsx +0 -7
  423. package/src/stories/generated/ProgressTracker/Demos.stories.tsx +0 -9
  424. package/src/stories/generated/RadioButton/Demos.stories.tsx +0 -6
  425. package/src/stories/generated/Select/Demos.stories.tsx +0 -14
  426. package/src/stories/generated/SideNavigation/Demos.stories.tsx +0 -10
  427. package/src/stories/generated/Skeleton/Demos.stories.tsx +0 -9
  428. package/src/stories/generated/Slider/Demos.stories.tsx +0 -9
  429. package/src/stories/generated/Slideshow/Demos.stories.tsx +0 -8
  430. package/src/stories/generated/Switch/Demos.stories.tsx +0 -6
  431. package/src/stories/generated/Table/Demos.stories.tsx +0 -7
  432. package/src/stories/generated/Tabs/Demos.stories.tsx +0 -8
  433. package/src/stories/generated/TextField/Demos.stories.tsx +0 -20
  434. package/src/stories/generated/Thumbnail/Demos.stories.tsx +0 -12
  435. package/src/stories/generated/Toolbar/Demos.stories.tsx +0 -10
  436. package/src/stories/generated/Tooltip/Demos.stories.tsx +0 -8
  437. package/src/stories/generated/Uploader/Demos.stories.tsx +0 -8
  438. package/src/stories/generated/UserBlock/Demos.stories.tsx +0 -11
  439. package/src/stories/utils/CustomLink.tsx +0 -13
  440. package/src/stories/utils/concatPath.tsx +0 -17
  441. package/src/stories/utils/disableArgTypes.ts +0 -3
  442. package/src/stories/utils/initDemoShadowDOMPortal.ts +0 -10
  443. package/src/stories/utils/lorem.ts +0 -59
  444. package/src/stories/utils/theming.tsx +0 -166
  445. package/src/stories/utils/toFlattenProps.ts +0 -28
  446. package/src/stories/utils/withCategory.ts +0 -12
  447. package/src/testing/utils/ThemeSentinel.tsx +0 -11
  448. package/src/testing/utils/commonTestsSuiteRTL.tsx +0 -193
  449. package/src/testing/utils/index.ts +0 -1
  450. package/src/testing/utils/queries.ts +0 -19
  451. package/src/untypped-modules.d.ts +0 -9
  452. package/src/utils/ClickAwayProvider/ClickAwayProvider.stories.jsx +0 -70
  453. package/src/utils/ClickAwayProvider/ClickAwayProvider.tsx +0 -69
  454. package/src/utils/ClickAwayProvider/index.ts +0 -1
  455. package/src/utils/MaterialThemeSwitcher/MaterialThemeSwitcher.tsx +0 -54
  456. package/src/utils/MaterialThemeSwitcher/index.ts +0 -1
  457. package/src/utils/Portal/Portal.test.tsx +0 -32
  458. package/src/utils/Portal/Portal.tsx +0 -33
  459. package/src/utils/Portal/PortalProvider.stories.jsx +0 -23
  460. package/src/utils/Portal/PortalProvider.test.tsx +0 -73
  461. package/src/utils/Portal/PortalProvider.tsx +0 -24
  462. package/src/utils/Portal/index.tsx +0 -2
  463. package/src/utils/browser/DOM/findImage.tsx +0 -3
  464. package/src/utils/browser/DOM/startViewTransition.ts +0 -68
  465. package/src/utils/browser/focus/constants.ts +0 -7
  466. package/src/utils/browser/focus/getFirstAndLastFocusable.test.ts +0 -134
  467. package/src/utils/browser/focus/getFirstAndLastFocusable.ts +0 -21
  468. package/src/utils/browser/focus/getFocusableElements.test.ts +0 -151
  469. package/src/utils/browser/focus/getFocusableElements.ts +0 -7
  470. package/src/utils/browser/isFocusVisible.ts +0 -9
  471. package/src/utils/browser/isHoverNotSupported.test.js +0 -24
  472. package/src/utils/browser/isHoverNotSupported.ts +0 -2
  473. package/src/utils/browser/isReducedMotion.ts +0 -6
  474. package/src/utils/date/addMonthResetDay.test.ts +0 -13
  475. package/src/utils/date/addMonthResetDay.ts +0 -9
  476. package/src/utils/date/formatDayNumber.test.ts +0 -12
  477. package/src/utils/date/formatDayNumber.ts +0 -5
  478. package/src/utils/date/getFirstDayOfWeek.test.ts +0 -20
  479. package/src/utils/date/getFirstDayOfWeek.ts +0 -59
  480. package/src/utils/date/getMonthCalendar.test.ts +0 -127
  481. package/src/utils/date/getMonthCalendar.ts +0 -69
  482. package/src/utils/date/getWeekDays.test.ts +0 -48
  483. package/src/utils/date/getWeekDays.ts +0 -34
  484. package/src/utils/date/getYearDisplayName.test.ts +0 -20
  485. package/src/utils/date/getYearDisplayName.ts +0 -12
  486. package/src/utils/date/isDateValid.test.ts +0 -15
  487. package/src/utils/date/isDateValid.ts +0 -4
  488. package/src/utils/date/isSameDay.test.ts +0 -37
  489. package/src/utils/date/isSameDay.ts +0 -11
  490. package/src/utils/disabled/DisabledStateContext.tsx +0 -29
  491. package/src/utils/disabled/DisabledStateProvider.stories.tsx +0 -94
  492. package/src/utils/disabled/index.ts +0 -2
  493. package/src/utils/disabled/useDisableStateProps.test.tsx +0 -74
  494. package/src/utils/disabled/useDisableStateProps.tsx +0 -37
  495. package/src/utils/function/makeListenerTowerContext.ts +0 -32
  496. package/src/utils/index.ts +0 -7
  497. package/src/utils/locale/getCurrentLocale.ts +0 -4
  498. package/src/utils/locale/parseLocale.test.ts +0 -17
  499. package/src/utils/locale/parseLocale.ts +0 -23
  500. package/src/utils/locale/types.ts +0 -8
  501. package/src/utils/number/clamp.ts +0 -17
  502. package/src/utils/object/isEqual.test.ts +0 -25
  503. package/src/utils/object/isEqual.ts +0 -11
  504. package/src/utils/partitionMulti.test.ts +0 -27
  505. package/src/utils/partitionMulti.ts +0 -29
  506. package/src/utils/react/OnBeforeUnmount.tsx +0 -20
  507. package/src/utils/react/RawClickable.test.tsx +0 -153
  508. package/src/utils/react/RawClickable.tsx +0 -65
  509. package/src/utils/react/flattenChildren.ts +0 -32
  510. package/src/utils/react/forwardRef.ts +0 -11
  511. package/src/utils/react/forwardRefPolymorphic.ts +0 -9
  512. package/src/utils/react/mergeRefs.ts +0 -33
  513. package/src/utils/react/renderLink.tsx +0 -17
  514. package/src/utils/react/skipRender.tsx +0 -18
  515. package/src/utils/react/unref.ts +0 -7
  516. package/src/utils/react/wrapChildrenIconWithSpaces.test.tsx +0 -37
  517. package/src/utils/react/wrapChildrenIconWithSpaces.tsx +0 -22
  518. package/src/utils/theme/ThemeContext.ts +0 -16
  519. package/src/utils/theme/invertTheme.ts +0 -4
  520. package/src/utils/type/Comp.ts +0 -14
  521. package/src/utils/type/ComponentRef.ts +0 -16
  522. package/src/utils/type/HasAriaDisabled.ts +0 -6
  523. package/src/utils/type/HasPolymorphicAs.ts +0 -8
  524. package/src/utils/type/HasRequiredLinkHref.ts +0 -1
  525. package/src/utils/type/MaybeElementOrRef.ts +0 -6
  526. package/src/utils/type/index.ts +0 -9
  527. package/src/utils/type/isComponent.ts +0 -33
  528. package/src/utils/type/isComponentType.ts +0 -9
@@ -1,173 +0,0 @@
1
- import React from 'react';
2
-
3
- import { SlideshowControls, SlideshowControlsProps, Theme, Slides, SlidesProps } from '@lumx/react';
4
- import { DEFAULT_OPTIONS } from '@lumx/react/hooks/useSlideshowControls';
5
- import { GenericProps } from '@lumx/react/utils/type';
6
- import { useFocusWithin } from '@lumx/react/hooks/useFocusWithin';
7
- import { mergeRefs } from '@lumx/react/utils/react/mergeRefs';
8
- import { useTheme } from '@lumx/react/utils/theme/ThemeContext';
9
- import { forwardRef } from '@lumx/react/utils/react/forwardRef';
10
-
11
- import { buildSlideShowGroupId } from './SlideshowItemGroup';
12
-
13
- /**
14
- * Defines the props of the component.
15
- */
16
- export interface SlideshowProps
17
- extends GenericProps,
18
- Pick<SlidesProps, 'autoPlay' | 'slidesId' | 'id' | 'theme' | 'fillHeight' | 'groupBy' | 'slideGroupLabel'> {
19
- /** current slide active */
20
- activeIndex?: SlidesProps['activeIndex'];
21
- /** Interval between each slide when automatic rotation is enabled. */
22
- interval?: number;
23
- /** Props to pass to the slideshow controls (minus those already set by the Slideshow props). */
24
- slideshowControlsProps?: Pick<
25
- SlideshowControlsProps,
26
- 'nextButtonProps' | 'previousButtonProps' | 'paginationItemProps'
27
- > &
28
- Omit<
29
- SlideshowControlsProps,
30
- | 'activeIndex'
31
- | 'onPaginationClick'
32
- | 'onNextClick'
33
- | 'onPreviousClick'
34
- | 'slidesCount'
35
- | 'parentRef'
36
- | 'theme'
37
- >;
38
- /** Callback when slide changes */
39
- onChange?(index: number): void;
40
- /** Children */
41
- children?: React.ReactNode;
42
- }
43
-
44
- /**
45
- * Component default props.
46
- */
47
- const DEFAULT_PROPS: Partial<SlideshowProps> = DEFAULT_OPTIONS;
48
-
49
- /**
50
- * Slideshow component.
51
- *
52
- * @param props Component props.
53
- * @param ref Component ref.
54
- * @return React element.
55
- */
56
- export const Slideshow = forwardRef<SlideshowProps, HTMLDivElement>((props, ref) => {
57
- const defaultTheme = useTheme() || Theme.light;
58
- const {
59
- activeIndex,
60
- autoPlay = DEFAULT_PROPS.autoPlay,
61
- children,
62
- className,
63
- fillHeight,
64
- groupBy = DEFAULT_OPTIONS.groupBy,
65
- interval = DEFAULT_PROPS.interval,
66
- onChange,
67
- slideshowControlsProps,
68
- theme = defaultTheme,
69
- id,
70
- slidesId,
71
- slideGroupLabel,
72
- ...forwardedProps
73
- } = props;
74
- // Number of slideshow items.
75
- const itemsCount = React.Children.count(children);
76
-
77
- const {
78
- activeIndex: currentIndex,
79
- slideshowId,
80
- setSlideshow,
81
- isAutoPlaying,
82
- slideshowSlidesId,
83
- slidesCount,
84
- onNextClick,
85
- onPaginationClick,
86
- onPreviousClick,
87
- slideshow,
88
- stopAutoPlay,
89
- startAutoPlay,
90
- toggleAutoPlay,
91
- toggleForcePause,
92
- } = SlideshowControls.useSlideshowControls({
93
- activeIndex,
94
- defaultActiveIndex: DEFAULT_PROPS.activeIndex as number,
95
- autoPlay: Boolean(autoPlay),
96
- itemsCount,
97
- groupBy,
98
- id,
99
- interval,
100
- onChange,
101
- slidesId,
102
- });
103
-
104
- useFocusWithin({
105
- element: slideshow,
106
- onFocusIn: stopAutoPlay,
107
- onFocusOut: startAutoPlay,
108
- });
109
-
110
- const showControls = slideshowControlsProps && slidesCount > 1;
111
-
112
- return (
113
- <Slides
114
- activeIndex={currentIndex}
115
- id={slideshowId}
116
- className={className}
117
- theme={theme}
118
- fillHeight={fillHeight}
119
- groupBy={groupBy}
120
- isAutoPlaying={isAutoPlaying}
121
- autoPlay={autoPlay}
122
- slidesId={slideshowSlidesId}
123
- toggleAutoPlay={toggleAutoPlay}
124
- ref={mergeRefs(ref, setSlideshow)}
125
- hasControls={showControls}
126
- slideGroupLabel={slideGroupLabel}
127
- afterSlides={
128
- slideshowControlsProps && slidesCount > 1 ? (
129
- <div className={`${Slides.className}__controls`}>
130
- <SlideshowControls
131
- {...slideshowControlsProps}
132
- activeIndex={currentIndex}
133
- onPaginationClick={onPaginationClick}
134
- onNextClick={onNextClick}
135
- onPreviousClick={onPreviousClick}
136
- slidesCount={slidesCount}
137
- parentRef={slideshow}
138
- theme={theme}
139
- isAutoPlaying={isAutoPlaying}
140
- nextButtonProps={{
141
- 'aria-controls': slideshowSlidesId,
142
- ...slideshowControlsProps.nextButtonProps,
143
- }}
144
- previousButtonProps={{
145
- 'aria-controls': slideshowSlidesId,
146
- ...slideshowControlsProps.previousButtonProps,
147
- }}
148
- playButtonProps={
149
- autoPlay
150
- ? {
151
- 'aria-controls': slideshowSlidesId,
152
- onClick: toggleForcePause,
153
- ...slideshowControlsProps.playButtonProps,
154
- }
155
- : undefined
156
- }
157
- paginationItemProps={(index) => ({
158
- 'aria-controls': buildSlideShowGroupId(slideshowSlidesId, index),
159
- ...slideshowControlsProps.paginationItemProps?.(index),
160
- })}
161
- />
162
- </div>
163
- ) : undefined
164
- }
165
- {...forwardedProps}
166
- >
167
- {children}
168
- </Slides>
169
- );
170
- });
171
-
172
- Slideshow.displayName = 'Slideshow';
173
- Slideshow.defaultProps = DEFAULT_PROPS;
@@ -1,102 +0,0 @@
1
- import React from 'react';
2
-
3
- import { AspectRatio, ImageBlock, Slides, SlideshowControls, SlideshowItem } from '@lumx/react';
4
- import { useFocusWithin } from '@lumx/react/hooks/useFocusWithin';
5
- import { LANDSCAPE_IMAGES } from '@lumx/react/stories/controls/image';
6
-
7
- export default { title: 'LumX components/slideshow/Slideshow controls' };
8
-
9
- export const Simple = () => {
10
- const { activeIndex, slidesCount, onNextClick, onPreviousClick, onPaginationClick } =
11
- SlideshowControls.useSlideshowControls({
12
- itemsCount: 9,
13
- });
14
-
15
- return (
16
- <SlideshowControls
17
- activeIndex={activeIndex}
18
- slidesCount={slidesCount}
19
- onNextClick={onNextClick}
20
- onPreviousClick={onPreviousClick}
21
- onPaginationClick={onPaginationClick}
22
- nextButtonProps={{ label: 'Next' }}
23
- previousButtonProps={{ label: 'Previous' }}
24
- paginationItemLabel={(index) => `Slide ${index}`}
25
- />
26
- );
27
- };
28
-
29
- export const ControllingSlideshow = ({ images = Object.values(LANDSCAPE_IMAGES) }: any) => {
30
- const {
31
- activeIndex: currentIndex,
32
- slideshowId,
33
- setSlideshow,
34
- isAutoPlaying,
35
- slideshowSlidesId,
36
- slidesCount,
37
- onNextClick,
38
- onPaginationClick,
39
- onPreviousClick,
40
- slideshow,
41
- stopAutoPlay,
42
- startAutoPlay,
43
- toggleAutoPlay,
44
- toggleForcePause,
45
- } = SlideshowControls.useSlideshowControls({
46
- activeIndex: 0,
47
- defaultActiveIndex: 0,
48
- autoPlay: true,
49
- itemsCount: 6,
50
- groupBy: 1,
51
- });
52
-
53
- useFocusWithin({
54
- element: slideshow,
55
- onFocusIn: stopAutoPlay,
56
- onFocusOut: startAutoPlay,
57
- });
58
-
59
- return (
60
- <Slides
61
- activeIndex={currentIndex}
62
- id={slideshowId}
63
- ref={setSlideshow}
64
- isAutoPlaying={isAutoPlaying}
65
- slidesId={slideshowSlidesId}
66
- toggleAutoPlay={toggleAutoPlay}
67
- groupBy={1}
68
- style={{ width: '50%' }}
69
- afterSlides={
70
- <div className={`${Slides.className}__controls`}>
71
- <SlideshowControls
72
- activeIndex={currentIndex}
73
- onPaginationClick={onPaginationClick}
74
- onNextClick={onNextClick}
75
- onPreviousClick={onPreviousClick}
76
- slidesCount={slidesCount}
77
- parentRef={slideshow}
78
- isAutoPlaying={isAutoPlaying}
79
- nextButtonProps={{ label: 'Next', 'aria-controls': slideshowSlidesId }}
80
- previousButtonProps={{ label: 'Previous', 'aria-controls': slideshowSlidesId }}
81
- playButtonProps={{
82
- label: 'Play/Pause',
83
- 'aria-controls': slideshowSlidesId,
84
- onClick: toggleForcePause,
85
- }}
86
- paginationItemLabel={(index) => `Slide ${index}`}
87
- />
88
- </div>
89
- }
90
- >
91
- {images.map((image: string, index: number) => (
92
- <SlideshowItem key={`${image}-${index}`}>
93
- <ImageBlock
94
- thumbnailProps={{ aspectRatio: AspectRatio.horizontal, loading: 'eager' }}
95
- image={image}
96
- alt=""
97
- />
98
- </SlideshowItem>
99
- ))}
100
- </Slides>
101
- );
102
- };
@@ -1,243 +0,0 @@
1
- import React, { RefObject, useCallback, useMemo } from 'react';
2
-
3
- import classNames from 'classnames';
4
- import range from 'lodash/range';
5
-
6
- import { mdiChevronLeft, mdiChevronRight, mdiPlayCircleOutline, mdiPauseCircleOutline } from '@lumx/icons';
7
- import { Emphasis, IconButton, IconButtonProps, Theme } from '@lumx/react';
8
- import { GenericProps, HasTheme } from '@lumx/react/utils/type';
9
- import { getRootClassName, handleBasicClasses } from '@lumx/core/js/utils/className';
10
- import { WINDOW } from '@lumx/react/constants';
11
- import { useSlideshowControls, DEFAULT_OPTIONS } from '@lumx/react/hooks/useSlideshowControls';
12
- import { useRovingTabIndex } from '@lumx/react/hooks/useRovingTabIndex';
13
- import { forwardRef } from '@lumx/react/utils/react/forwardRef';
14
-
15
- import { useTheme } from '@lumx/react/utils/theme/ThemeContext';
16
- import { useSwipeNavigate } from './useSwipeNavigate';
17
- import { PAGINATION_ITEM_SIZE, PAGINATION_ITEMS_MAX } from './constants';
18
- import { usePaginationVisibleRange } from './usePaginationVisibleRange';
19
-
20
- /**
21
- * Defines the props of the component.
22
- */
23
- export interface SlideshowControlsProps extends GenericProps, HasTheme {
24
- /** Index of the current slide. */
25
- activeIndex?: number;
26
- /** Props to pass to the next button (minus those already set by the SlideshowControls props). */
27
- nextButtonProps: Pick<IconButtonProps, 'label'> &
28
- Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;
29
- /** Reference to the parent element on which we want to listen touch swipe. */
30
- parentRef?: RefObject<HTMLDivElement> | HTMLDivElement | null;
31
- /** Props to pass to the previous button (minus those already set by the SlideshowControls props). */
32
- previousButtonProps: Pick<IconButtonProps, 'label'> &
33
- Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;
34
- /** Props to pass to the pagination wrapper */
35
- paginationProps?: Omit<React.HTMLAttributes<HTMLDivElement>, 'className' | 'style' | 'role'>;
36
- /** Number of slides. */
37
- slidesCount: number;
38
- /** On next button click callback. */
39
- onNextClick?(loopback?: boolean): void;
40
- /** On pagination change callback. */
41
- onPaginationClick?(index: number): void;
42
- /** On previous button click callback. */
43
- onPreviousClick?(loopback?: boolean): void;
44
- /** whether the slideshow is currently playing */
45
- isAutoPlaying?: boolean;
46
- /**
47
- * function to be executed in order to retrieve the label for the pagination item
48
- * @deprecated Use paginationItemProps instead.
49
- * */
50
- paginationItemLabel?: (index: number) => string;
51
- /**
52
- * function to be executed in order to retrieve the props for a pagination item.
53
- */
54
- paginationItemProps?: (itemIndex: number) => React.HTMLAttributes<HTMLButtonElement> & { label?: string };
55
- /** Props to pass to the lay button (minus those already set by the SlideshowControls props). */
56
- playButtonProps?: Pick<IconButtonProps, 'label'> &
57
- Omit<IconButtonProps, 'label' | 'onClick' | 'icon' | 'emphasis' | 'color'>;
58
- }
59
-
60
- /**
61
- * Component display name.
62
- */
63
- const COMPONENT_NAME = 'SlideshowControls';
64
-
65
- /**
66
- * Component default class name and class prefix.
67
- */
68
- const CLASSNAME = getRootClassName(COMPONENT_NAME);
69
-
70
- /**
71
- * Component default props.
72
- */
73
- const DEFAULT_PROPS: Partial<SlideshowControlsProps> = {
74
- activeIndex: 0,
75
- };
76
-
77
- /**
78
- * SlideshowControls component.
79
- *
80
- * @param props Component props.
81
- * @param ref Component ref.
82
- * @return React element.
83
- */
84
- const InternalSlideshowControls = forwardRef<SlideshowControlsProps, HTMLDivElement>((props, ref) => {
85
- const defaultTheme = useTheme() || Theme.light;
86
- const {
87
- activeIndex = DEFAULT_PROPS.activeIndex,
88
- className,
89
- nextButtonProps,
90
- onNextClick,
91
- onPaginationClick,
92
- onPreviousClick,
93
- parentRef,
94
- previousButtonProps,
95
- paginationProps,
96
- slidesCount,
97
- theme = defaultTheme,
98
- isAutoPlaying = false,
99
- playButtonProps,
100
- paginationItemLabel,
101
- paginationItemProps,
102
- ...forwardedProps
103
- } = props;
104
-
105
- let parent;
106
- if (WINDOW) {
107
- // Checking window object to avoid errors in SSR.
108
- parent = parentRef instanceof HTMLElement ? parentRef : parentRef?.current;
109
- }
110
- const paginationRef = React.useRef(null);
111
- // Listen to touch swipe navigate left & right.
112
- useSwipeNavigate(
113
- parent,
114
- // Go next without loopback.
115
- useCallback(() => onNextClick?.(false), [onNextClick]),
116
- // Go previous without loopback.
117
- useCallback(() => onPreviousClick?.(false), [onPreviousClick]),
118
- );
119
-
120
- /**
121
- * Add roving tab index pattern to pagination items and activate slide on focus.
122
- */
123
- useRovingTabIndex({
124
- parentRef: paginationRef,
125
- elementSelector: 'button',
126
- keepTabIndex: true,
127
- onElementFocus: (element) => {
128
- element.click();
129
- },
130
- });
131
-
132
- // Pagination "bullet" range.
133
- const visibleRange = usePaginationVisibleRange(activeIndex as number, slidesCount);
134
-
135
- // Inline style of wrapper element.
136
- const wrapperStyle = { transform: `translateX(-${PAGINATION_ITEM_SIZE * visibleRange.min}px)` };
137
-
138
- return (
139
- <div
140
- ref={ref}
141
- {...forwardedProps}
142
- className={classNames(className, handleBasicClasses({ prefix: CLASSNAME, theme }), {
143
- [`${CLASSNAME}--has-infinite-pagination`]: slidesCount > PAGINATION_ITEMS_MAX,
144
- })}
145
- >
146
- <IconButton
147
- {...previousButtonProps}
148
- icon={mdiChevronLeft}
149
- className={`${CLASSNAME}__navigation`}
150
- color={theme === Theme.dark ? 'light' : 'dark'}
151
- emphasis={Emphasis.low}
152
- onClick={onPreviousClick}
153
- />
154
- <div ref={paginationRef} className={`${CLASSNAME}__pagination`}>
155
- <div
156
- className={`${CLASSNAME}__pagination-items`}
157
- style={wrapperStyle}
158
- role="tablist"
159
- {...paginationProps}
160
- >
161
- {useMemo(
162
- () =>
163
- range(slidesCount).map((index) => {
164
- const isOnEdge =
165
- index !== 0 &&
166
- index !== slidesCount - 1 &&
167
- (index === visibleRange.min || index === visibleRange.max);
168
- const isActive = activeIndex === index;
169
- const isOutRange = index < visibleRange.min || index > visibleRange.max;
170
- const {
171
- className: itemClassName = undefined,
172
- label = undefined,
173
- ...itemProps
174
- } = paginationItemProps ? paginationItemProps(index) : {};
175
-
176
- const ariaLabel =
177
- label || paginationItemLabel?.(index) || `${index + 1} / ${slidesCount}`;
178
-
179
- return (
180
- <button
181
- className={classNames(
182
- handleBasicClasses({
183
- prefix: `${CLASSNAME}__pagination-item`,
184
- isActive,
185
- isOnEdge,
186
- isOutRange,
187
- }),
188
- itemClassName,
189
- )}
190
- key={index}
191
- type="button"
192
- tabIndex={isActive ? undefined : -1}
193
- role="tab"
194
- aria-selected={isActive}
195
- onClick={() => onPaginationClick?.(index)}
196
- aria-label={ariaLabel}
197
- {...itemProps}
198
- />
199
- );
200
- }),
201
- [
202
- slidesCount,
203
- visibleRange.min,
204
- visibleRange.max,
205
- activeIndex,
206
- paginationItemProps,
207
- paginationItemLabel,
208
- onPaginationClick,
209
- ],
210
- )}
211
- </div>
212
- </div>
213
-
214
- {playButtonProps ? (
215
- <IconButton
216
- {...playButtonProps}
217
- icon={isAutoPlaying ? mdiPauseCircleOutline : mdiPlayCircleOutline}
218
- className={`${CLASSNAME}__play`}
219
- color={theme === Theme.dark ? 'light' : 'dark'}
220
- emphasis={Emphasis.low}
221
- />
222
- ) : null}
223
-
224
- <IconButton
225
- {...nextButtonProps}
226
- icon={mdiChevronRight}
227
- className={`${CLASSNAME}__navigation`}
228
- color={theme === Theme.dark ? 'light' : 'dark'}
229
- emphasis={Emphasis.low}
230
- onClick={onNextClick}
231
- />
232
- </div>
233
- );
234
- });
235
-
236
- InternalSlideshowControls.displayName = COMPONENT_NAME;
237
- InternalSlideshowControls.className = CLASSNAME;
238
- InternalSlideshowControls.defaultProps = DEFAULT_PROPS;
239
-
240
- export const SlideshowControls = Object.assign(InternalSlideshowControls, {
241
- useSlideshowControls,
242
- useSlideshowControlsDefaultOptions: DEFAULT_OPTIONS,
243
- });
@@ -1,46 +0,0 @@
1
- import React from 'react';
2
-
3
- import classNames from 'classnames';
4
-
5
- import { GenericProps } from '@lumx/react/utils/type';
6
- import { getRootClassName } from '@lumx/core/js/utils/className';
7
- import { forwardRef } from '@lumx/react/utils/react/forwardRef';
8
-
9
- /**
10
- * Defines the props of the component.
11
- */
12
- export interface SlideshowItemProps extends GenericProps {
13
- /** interval in which slides are automatically shown */
14
- interval?: number;
15
- /** Children */
16
- children?: React.ReactNode;
17
- }
18
-
19
- /**
20
- * Component display name.
21
- */
22
- const COMPONENT_NAME = 'SlideshowItem';
23
-
24
- /**
25
- * Component default class name and class prefix.
26
- */
27
- const CLASSNAME = getRootClassName(COMPONENT_NAME);
28
-
29
- /**
30
- * SlideshowItem component.
31
- *
32
- * @param props Component props.
33
- * @param ref Component ref.
34
- * @return React element.
35
- */
36
- export const SlideshowItem = forwardRef<SlideshowItemProps, HTMLDivElement>((props, ref) => {
37
- const { className, children, ...forwardedProps } = props;
38
- return (
39
- <div ref={ref} className={classNames(className, CLASSNAME)} {...forwardedProps}>
40
- {children}
41
- </div>
42
- );
43
- });
44
-
45
- SlideshowItem.displayName = COMPONENT_NAME;
46
- SlideshowItem.className = CLASSNAME;
@@ -1,60 +0,0 @@
1
- import React from 'react';
2
-
3
- import classNames from 'classnames';
4
- import { mergeRefs } from '@lumx/react/utils/react/mergeRefs';
5
- import { GenericProps } from '@lumx/react/utils/type';
6
- import { getRootClassName } from '@lumx/core/js/utils/className';
7
- import { forwardRef } from '@lumx/react/utils/react/forwardRef';
8
- import { useSlideFocusManagement } from './useSlideFocusManagement';
9
-
10
- /**
11
- * Defines the props of the component.
12
- */
13
- export interface SlideshowItemGroupProps extends GenericProps {
14
- role?: 'tabpanel' | 'group';
15
- label?: string;
16
- isDisplayed?: boolean;
17
- children?: React.ReactNode;
18
- }
19
-
20
- /**
21
- * Component display name.
22
- */
23
- const COMPONENT_NAME = 'SlideshowItemGroup';
24
-
25
- /**
26
- * Component default class name and class prefix.
27
- */
28
- export const CLASSNAME = getRootClassName(COMPONENT_NAME);
29
-
30
- export const buildSlideShowGroupId = (slidesId: string, index: number) => `${slidesId}-slide-${index}`;
31
-
32
- /**
33
- * SlideshowItemGroup component.
34
- *
35
- * @param props Component props.
36
- * @param ref Component ref.
37
- * @return React element.
38
- */
39
- export const SlideshowItemGroup = forwardRef<SlideshowItemGroupProps, HTMLDivElement>((props, ref) => {
40
- const { className, children, role = 'group', label, isDisplayed, ...forwardedProps } = props;
41
- const groupRef = React.useRef<HTMLDivElement>(null);
42
-
43
- useSlideFocusManagement({ isSlideDisplayed: isDisplayed, slideRef: groupRef });
44
-
45
- return (
46
- <div
47
- ref={mergeRefs(groupRef, ref)}
48
- role={role}
49
- className={classNames(className, CLASSNAME)}
50
- aria-roledescription="slide"
51
- aria-label={label}
52
- {...forwardedProps}
53
- >
54
- {children}
55
- </div>
56
- );
57
- });
58
-
59
- SlideshowItemGroup.displayName = COMPONENT_NAME;
60
- SlideshowItemGroup.className = CLASSNAME;
@@ -1,24 +0,0 @@
1
- /**
2
- * Autoplay default interval in ms.
3
- */
4
- export const AUTOPLAY_DEFAULT_INTERVAL = 5000;
5
-
6
- /**
7
- * Full width size in percent.
8
- */
9
- export const FULL_WIDTH_PERCENT = 100;
10
-
11
- /**
12
- * Edge from the active index.
13
- */
14
- export const EDGE_FROM_ACTIVE_INDEX = 2;
15
-
16
- /**
17
- * Max number of pagination items.
18
- */
19
- export const PAGINATION_ITEMS_MAX = 5;
20
-
21
- /**
22
- * Size of a pagination item. Used to translate wrapper.
23
- */
24
- export const PAGINATION_ITEM_SIZE = 12;
@@ -1,4 +0,0 @@
1
- export * from './Slideshow';
2
- export * from './SlideshowItem';
3
- export * from './SlideshowControls';
4
- export * from './Slides';
@@ -1,28 +0,0 @@
1
- import { useEffect } from 'react';
2
-
3
- /**
4
- * Listen keyboard to navigate left and right.
5
- */
6
- export function useKeyNavigate(element?: HTMLElement | null, onNext?: () => void, onPrevious?: () => void): void {
7
- useEffect(() => {
8
- if (!element) return undefined;
9
- const onKeyNavigate = (evt: KeyboardEvent) => {
10
- let callback;
11
- if (evt?.key === 'ArrowRight') {
12
- callback = onNext;
13
- } else if (evt?.key === 'ArrowLeft') {
14
- callback = onPrevious;
15
- }
16
- if (!callback) return;
17
-
18
- callback();
19
- evt.preventDefault();
20
- evt.stopPropagation();
21
- };
22
-
23
- element.addEventListener('keydown', onKeyNavigate);
24
- return () => {
25
- element.removeEventListener('keydown', onKeyNavigate);
26
- };
27
- }, [onPrevious, onNext, element]);
28
- }