@lumx/react 2.2.9-alpha-exported-hooks2 → 2.2.10

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 (268) hide show
  1. package/esm/_internal/{alertdialog.1.js → AlertDialog.js} +8 -8
  2. package/esm/_internal/AlertDialog.js.map +1 -0
  3. package/esm/_internal/{autocompletemultiple.2.js → AutocompleteMultiple.js} +9 -9
  4. package/esm/_internal/AutocompleteMultiple.js.map +1 -0
  5. package/esm/_internal/{avatar.3.js → Avatar2.js} +4 -4
  6. package/esm/_internal/Avatar2.js.map +1 -0
  7. package/esm/_internal/{badge.4.js → Badge2.js} +3 -3
  8. package/esm/_internal/Badge2.js.map +1 -0
  9. package/esm/_internal/{button.5.js → Button2.js} +5 -5
  10. package/esm/_internal/Button2.js.map +1 -0
  11. package/esm/_internal/{buttongroup.7.js → ButtonGroup.js} +3 -3
  12. package/esm/_internal/ButtonGroup.js.map +1 -0
  13. package/esm/_internal/{buttonroot.57.js → ButtonRoot.js} +4 -4
  14. package/esm/_internal/ButtonRoot.js.map +1 -0
  15. package/esm/_internal/{checkbox.8.js → Checkbox2.js} +7 -7
  16. package/esm/_internal/Checkbox2.js.map +1 -0
  17. package/esm/_internal/{chip.9.js → Chip2.js} +3 -3
  18. package/esm/_internal/Chip2.js.map +1 -0
  19. package/esm/_internal/{chipgroup.10.js → ChipGroup.js} +3 -3
  20. package/esm/_internal/ChipGroup.js.map +1 -0
  21. package/esm/_internal/{clickawayprovider.60.js → ClickAwayProvider.js} +4 -4
  22. package/esm/_internal/ClickAwayProvider.js.map +1 -0
  23. package/esm/_internal/{commentblock.11.js → CommentBlock.js} +4 -4
  24. package/esm/_internal/CommentBlock.js.map +1 -0
  25. package/esm/_internal/{datepickerfield.12.js → DatePickerField.js} +9 -9
  26. package/esm/_internal/DatePickerField.js.map +1 -0
  27. package/esm/_internal/{dialog.13.js → Dialog2.js} +12 -12
  28. package/esm/_internal/Dialog2.js.map +1 -0
  29. package/esm/_internal/{divider.14.js → Divider2.js} +3 -3
  30. package/esm/_internal/Divider2.js.map +1 -0
  31. package/esm/_internal/{draghandle.15.js → DragHandle.js} +4 -4
  32. package/esm/_internal/DragHandle.js.map +1 -0
  33. package/esm/_internal/{dropdown.16.js → Dropdown2.js} +6 -6
  34. package/esm/_internal/Dropdown2.js.map +1 -0
  35. package/esm/_internal/{expansionpanel.17.js → ExpansionPanel.js} +8 -8
  36. package/esm/_internal/ExpansionPanel.js.map +1 -0
  37. package/esm/_internal/{flag.18.js → Flag2.js} +4 -4
  38. package/esm/_internal/Flag2.js.map +1 -0
  39. package/esm/_internal/{flexbox.19.js → FlexBox.js} +3 -3
  40. package/esm/_internal/FlexBox.js.map +1 -0
  41. package/esm/_internal/{griditem.20.js → GridItem.js} +3 -3
  42. package/esm/_internal/GridItem.js.map +1 -0
  43. package/esm/_internal/{icon.21.js → Icon2.js} +6 -4
  44. package/esm/_internal/Icon2.js.map +1 -0
  45. package/esm/_internal/{iconbutton.6.js → IconButton.js} +6 -6
  46. package/esm/_internal/IconButton.js.map +1 -0
  47. package/esm/_internal/{imageblock.22.js → ImageBlock.js} +4 -4
  48. package/esm/_internal/ImageBlock.js.map +1 -0
  49. package/esm/_internal/{inputhelper.23.js → InputHelper.js} +3 -3
  50. package/esm/_internal/InputHelper.js.map +1 -0
  51. package/esm/_internal/{inputlabel.24.js → InputLabel.js} +3 -3
  52. package/esm/_internal/InputLabel.js.map +1 -0
  53. package/esm/_internal/{lightbox.25.js → Lightbox2.js} +11 -11
  54. package/esm/_internal/Lightbox2.js.map +1 -0
  55. package/esm/_internal/{link.26.js → Link2.js} +5 -5
  56. package/esm/_internal/Link2.js.map +1 -0
  57. package/esm/_internal/{linkpreview.27.js → LinkPreview.js} +5 -5
  58. package/esm/_internal/LinkPreview.js.map +1 -0
  59. package/esm/_internal/{list.28.js → List2.js} +6 -6
  60. package/esm/_internal/List2.js.map +1 -0
  61. package/esm/_internal/{listsubheader.29.js → ListSubheader.js} +3 -3
  62. package/esm/_internal/ListSubheader.js.map +1 -0
  63. package/esm/_internal/{message.30.js → Message2.js} +4 -4
  64. package/esm/_internal/Message2.js.map +1 -0
  65. package/esm/_internal/{mosaic.31.js → Mosaic2.js} +4 -4
  66. package/esm/_internal/Mosaic2.js.map +1 -0
  67. package/esm/_internal/{notification.32.js → Notification2.js} +7 -7
  68. package/esm/_internal/Notification2.js.map +1 -0
  69. package/esm/_internal/{popover.33.js → Popover2.js} +6 -6
  70. package/esm/_internal/Popover2.js.map +1 -0
  71. package/esm/_internal/{postblock.34.js → PostBlock.js} +5 -5
  72. package/esm/_internal/PostBlock.js.map +1 -0
  73. package/esm/_internal/{progress.35.js → Progress2.js} +3 -3
  74. package/esm/_internal/Progress2.js.map +1 -0
  75. package/esm/_internal/{progresstrackersteppanel.36.js → ProgressTrackerStepPanel.js} +8 -8
  76. package/esm/_internal/ProgressTrackerStepPanel.js.map +1 -0
  77. package/esm/_internal/{radiogroup.37.js → RadioGroup.js} +6 -6
  78. package/esm/_internal/RadioGroup.js.map +1 -0
  79. package/esm/_internal/{selectmultiple.38.js → SelectMultiple.js} +12 -12
  80. package/esm/_internal/SelectMultiple.js.map +1 -0
  81. package/esm/_internal/{sidenavigationitem.39.js → SideNavigationItem.js} +7 -7
  82. package/esm/_internal/SideNavigationItem.js.map +1 -0
  83. package/esm/_internal/{skeletontypography.40.js → SkeletonTypography.js} +3 -3
  84. package/esm/_internal/SkeletonTypography.js.map +1 -0
  85. package/esm/_internal/{slider.41.js → Slider2.js} +6 -6
  86. package/esm/_internal/Slider2.js.map +1 -0
  87. package/esm/_internal/{slideshowcontrols.42.js → Slides.js} +239 -121
  88. package/esm/_internal/Slides.js.map +1 -0
  89. package/esm/_internal/{switch.43.js → Switch2.js} +6 -6
  90. package/esm/_internal/Switch2.js.map +1 -0
  91. package/esm/_internal/{tabpanel.45.js → TabPanel.js} +6 -6
  92. package/esm/_internal/TabPanel.js.map +1 -0
  93. package/esm/_internal/{tablerow.44.js → TableRow.js} +4 -4
  94. package/esm/_internal/TableRow.js.map +1 -0
  95. package/esm/_internal/{textfield.46.js → TextField.js} +9 -9
  96. package/esm/_internal/TextField.js.map +1 -0
  97. package/esm/_internal/{thumbnail.47.js → Thumbnail2.js} +6 -6
  98. package/esm/_internal/Thumbnail2.js.map +1 -0
  99. package/esm/_internal/{toolbar.49.js → Toolbar2.js} +3 -3
  100. package/esm/_internal/Toolbar2.js.map +1 -0
  101. package/esm/_internal/{tooltip.50.js → Tooltip2.js} +7 -7
  102. package/esm/_internal/Tooltip2.js.map +1 -0
  103. package/esm/_internal/{uploader.51.js → Uploader2.js} +4 -4
  104. package/esm/_internal/Uploader2.js.map +1 -0
  105. package/esm/_internal/{userblock.52.js → UserBlock.js} +5 -5
  106. package/esm/_internal/UserBlock.js.map +1 -0
  107. package/esm/_internal/{_rolluppluginbabelhelpers.53.js → _rollupPluginBabelHelpers.js} +1 -1
  108. package/esm/_internal/_rollupPluginBabelHelpers.js.map +1 -0
  109. package/esm/_internal/alert-dialog.js +19 -19
  110. package/esm/_internal/autocomplete.js +20 -20
  111. package/esm/_internal/avatar.js +6 -6
  112. package/esm/_internal/badge.js +3 -3
  113. package/esm/_internal/button.js +14 -14
  114. package/esm/_internal/checkbox.js +7 -7
  115. package/esm/_internal/chip.js +4 -4
  116. package/esm/_internal/comment-block.js +7 -7
  117. package/esm/_internal/components.js +1 -1
  118. package/esm/_internal/{constants.59.js → constants.js} +1 -1
  119. package/esm/_internal/constants.js.map +1 -0
  120. package/esm/_internal/date-picker.js +18 -18
  121. package/esm/_internal/dialog.js +12 -12
  122. package/esm/_internal/divider.js +3 -3
  123. package/esm/_internal/drag-handle.js +4 -4
  124. package/esm/_internal/dropdown.js +10 -10
  125. package/esm/_internal/expansion-panel.js +16 -16
  126. package/esm/_internal/flag.js +4 -4
  127. package/esm/_internal/flex-box.js +3 -3
  128. package/esm/_internal/{getrootclassname.54.js → getRootClassName.js} +4 -3
  129. package/esm/_internal/getRootClassName.js.map +1 -0
  130. package/esm/_internal/grid.js +3 -3
  131. package/esm/_internal/icon.js +3 -3
  132. package/esm/_internal/image-block.js +6 -6
  133. package/esm/_internal/input-helper.js +3 -3
  134. package/esm/_internal/input-label.js +3 -3
  135. package/esm/_internal/lightbox.js +16 -16
  136. package/esm/_internal/link-preview.js +8 -8
  137. package/esm/_internal/link.js +5 -5
  138. package/esm/_internal/list.js +7 -7
  139. package/esm/_internal/{mergerefs.56.js → mergeRefs.js} +1 -1
  140. package/esm/_internal/mergeRefs.js.map +1 -0
  141. package/esm/_internal/message.js +4 -4
  142. package/esm/_internal/mosaic.js +6 -6
  143. package/esm/_internal/notification.js +9 -9
  144. package/esm/_internal/{partitionmulti.62.js → partitionMulti.js} +1 -1
  145. package/esm/_internal/partitionMulti.js.map +1 -0
  146. package/esm/_internal/popover.js +6 -6
  147. package/esm/_internal/post-block.js +7 -7
  148. package/esm/_internal/progress-tracker.js +9 -9
  149. package/esm/_internal/progress.js +3 -3
  150. package/esm/_internal/radio-button.js +6 -6
  151. package/esm/_internal/{renderlink.65.js → renderLink.js} +2 -2
  152. package/esm/_internal/renderLink.js.map +1 -0
  153. package/esm/_internal/select.js +19 -19
  154. package/esm/_internal/side-navigation.js +14 -14
  155. package/esm/_internal/skeleton.js +3 -3
  156. package/esm/_internal/slider.js +6 -6
  157. package/esm/_internal/slideshow.js +14 -14
  158. package/esm/_internal/switch.js +6 -6
  159. package/esm/_internal/table.js +4 -4
  160. package/esm/_internal/tabs.js +7 -7
  161. package/esm/_internal/text-field.js +15 -15
  162. package/esm/_internal/thumbnail.js +6 -6
  163. package/esm/_internal/toolbar.js +3 -3
  164. package/esm/_internal/tooltip.js +8 -8
  165. package/esm/_internal/{type.64.js → type.js} +1 -1
  166. package/esm/_internal/type.js.map +1 -0
  167. package/esm/_internal/{types.48.js → types.js} +3 -2
  168. package/esm/_internal/types.js.map +1 -0
  169. package/esm/_internal/uploader.js +4 -4
  170. package/esm/_internal/{usedelayedvisibility.63.js → useDelayedVisibility.js} +2 -2
  171. package/esm/_internal/useDelayedVisibility.js.map +1 -0
  172. package/esm/_internal/{usedisablebodyscroll.61.js → useDisableBodyScroll.js} +1 -1
  173. package/esm/_internal/useDisableBodyScroll.js.map +1 -0
  174. package/esm/_internal/{usefocustrap.58.js → useFocusTrap.js} +2 -2
  175. package/esm/_internal/useFocusTrap.js.map +1 -0
  176. package/esm/_internal/{userovingtabindex.66.js → useRovingTabIndex.js} +3 -3
  177. package/esm/_internal/useRovingTabIndex.js.map +1 -0
  178. package/esm/_internal/user-block.js +9 -9
  179. package/esm/index.js +89 -0
  180. package/{index.js.map → esm/index.js.map} +1 -1
  181. package/esm/{_internal/index.55.js → index2.js} +1 -1
  182. package/esm/index2.js.map +1 -0
  183. package/package.json +10 -11
  184. package/src/components/slideshow/Slides.tsx +115 -0
  185. package/src/components/slideshow/Slideshow.stories.tsx +35 -0
  186. package/src/components/slideshow/Slideshow.test.tsx +1 -1
  187. package/src/components/slideshow/Slideshow.tsx +68 -90
  188. package/src/components/slideshow/SlideshowControls.stories.tsx +76 -40
  189. package/src/components/slideshow/SlideshowControls.tsx +36 -4
  190. package/src/components/slideshow/SlideshowItem.tsx +19 -3
  191. package/src/components/slideshow/__snapshots__/Slideshow.test.tsx.snap +125 -232
  192. package/src/components/slideshow/index.ts +1 -0
  193. package/src/components/thumbnail/index.ts +1 -0
  194. package/src/hooks/useFocusWithin.ts +2 -2
  195. package/src/hooks/useSlideshowControls.ts +29 -12
  196. package/src/stories/generated/Thumbnail/Demos.stories.tsx +3 -1
  197. package/types.d.ts +2672 -0
  198. package/esm/_internal/_rolluppluginbabelhelpers.53.js.map +0 -1
  199. package/esm/_internal/alertdialog.1.js.map +0 -1
  200. package/esm/_internal/autocompletemultiple.2.js.map +0 -1
  201. package/esm/_internal/avatar.3.js.map +0 -1
  202. package/esm/_internal/badge.4.js.map +0 -1
  203. package/esm/_internal/button.5.js.map +0 -1
  204. package/esm/_internal/buttongroup.7.js.map +0 -1
  205. package/esm/_internal/buttonroot.57.js.map +0 -1
  206. package/esm/_internal/checkbox.8.js.map +0 -1
  207. package/esm/_internal/chip.9.js.map +0 -1
  208. package/esm/_internal/chipgroup.10.js.map +0 -1
  209. package/esm/_internal/clickawayprovider.60.js.map +0 -1
  210. package/esm/_internal/commentblock.11.js.map +0 -1
  211. package/esm/_internal/constants.59.js.map +0 -1
  212. package/esm/_internal/datepickerfield.12.js.map +0 -1
  213. package/esm/_internal/dialog.13.js.map +0 -1
  214. package/esm/_internal/divider.14.js.map +0 -1
  215. package/esm/_internal/draghandle.15.js.map +0 -1
  216. package/esm/_internal/dropdown.16.js.map +0 -1
  217. package/esm/_internal/expansionpanel.17.js.map +0 -1
  218. package/esm/_internal/flag.18.js.map +0 -1
  219. package/esm/_internal/flexbox.19.js.map +0 -1
  220. package/esm/_internal/getrootclassname.54.js.map +0 -1
  221. package/esm/_internal/griditem.20.js.map +0 -1
  222. package/esm/_internal/icon.21.js.map +0 -1
  223. package/esm/_internal/iconbutton.6.js.map +0 -1
  224. package/esm/_internal/imageblock.22.js.map +0 -1
  225. package/esm/_internal/index.55.js.map +0 -1
  226. package/esm/_internal/inputhelper.23.js.map +0 -1
  227. package/esm/_internal/inputlabel.24.js.map +0 -1
  228. package/esm/_internal/lightbox.25.js.map +0 -1
  229. package/esm/_internal/link.26.js.map +0 -1
  230. package/esm/_internal/linkpreview.27.js.map +0 -1
  231. package/esm/_internal/list.28.js.map +0 -1
  232. package/esm/_internal/listsubheader.29.js.map +0 -1
  233. package/esm/_internal/mergerefs.56.js.map +0 -1
  234. package/esm/_internal/message.30.js.map +0 -1
  235. package/esm/_internal/mosaic.31.js.map +0 -1
  236. package/esm/_internal/notification.32.js.map +0 -1
  237. package/esm/_internal/partitionmulti.62.js.map +0 -1
  238. package/esm/_internal/popover.33.js.map +0 -1
  239. package/esm/_internal/postblock.34.js.map +0 -1
  240. package/esm/_internal/progress.35.js.map +0 -1
  241. package/esm/_internal/progresstrackersteppanel.36.js.map +0 -1
  242. package/esm/_internal/radiogroup.37.js.map +0 -1
  243. package/esm/_internal/renderlink.65.js.map +0 -1
  244. package/esm/_internal/selectmultiple.38.js.map +0 -1
  245. package/esm/_internal/sidenavigationitem.39.js.map +0 -1
  246. package/esm/_internal/skeletontypography.40.js.map +0 -1
  247. package/esm/_internal/slider.41.js.map +0 -1
  248. package/esm/_internal/slideshowcontrols.42.js.map +0 -1
  249. package/esm/_internal/switch.43.js.map +0 -1
  250. package/esm/_internal/tablerow.44.js.map +0 -1
  251. package/esm/_internal/tabpanel.45.js.map +0 -1
  252. package/esm/_internal/textfield.46.js.map +0 -1
  253. package/esm/_internal/thumbnail.47.js.map +0 -1
  254. package/esm/_internal/toolbar.49.js.map +0 -1
  255. package/esm/_internal/tooltip.50.js.map +0 -1
  256. package/esm/_internal/type.64.js.map +0 -1
  257. package/esm/_internal/types.48.js.map +0 -1
  258. package/esm/_internal/uploader.51.js.map +0 -1
  259. package/esm/_internal/usedelayedvisibility.63.js.map +0 -1
  260. package/esm/_internal/usedisablebodyscroll.61.js.map +0 -1
  261. package/esm/_internal/usefocustrap.58.js.map +0 -1
  262. package/esm/_internal/userblock.52.js.map +0 -1
  263. package/esm/_internal/userovingtabindex.66.js.map +0 -1
  264. package/hooks/useFocusWithin.d.ts +0 -16
  265. package/hooks/useFocusWithin.js +0 -28
  266. package/hooks/useFocusWithin.js.map +0 -1
  267. package/index.d.ts +0 -2723
  268. package/index.js +0 -90
@@ -2,262 +2,155 @@
2
2
 
3
3
  exports[`<Slideshow> Snapshots and structure should render story 'Simple' 1`] = `
4
4
  Array [
5
- <section
6
- aria-live="polite"
7
- aria-roledescription="carousel"
8
- className="lumx-slideshow lumx-slideshow--theme-light lumx-slideshow--group-by-1"
5
+ <Slideshow
6
+ activeIndex={0}
7
+ afterSlides={
8
+ <div
9
+ className="lumx-slideshow__controls"
10
+ >
11
+ <SlideshowControls
12
+ activeIndex={0}
13
+ isAutoPlaying={false}
14
+ nextButtonProps={
15
+ Object {
16
+ "aria-controls": "slideshow-slides2",
17
+ "label": "Next",
18
+ }
19
+ }
20
+ onNextClick={[Function]}
21
+ onPaginationClick={[Function]}
22
+ onPreviousClick={[Function]}
23
+ parentRef={null}
24
+ previousButtonProps={
25
+ Object {
26
+ "aria-controls": "slideshow-slides2",
27
+ "label": "Previous",
28
+ }
29
+ }
30
+ slidesCount={6}
31
+ theme="light"
32
+ />
33
+ </div>
34
+ }
35
+ autoPlay={false}
36
+ endIndexVisible={1}
37
+ groupBy={1}
9
38
  id="slideshow1"
39
+ interval={1000}
40
+ isAutoPlaying={false}
41
+ setIsAutoPlaying={[Function]}
42
+ slidesId="slideshow-slides2"
43
+ startIndexVisible={0}
10
44
  style={
11
45
  Object {
12
46
  "width": "50%",
13
47
  }
14
48
  }
49
+ theme="light"
15
50
  >
16
- <div
17
- className="lumx-slideshow__slides"
18
- id="slideshow-slides2"
19
- onMouseEnter={[Function]}
20
- onMouseLeave={[Function]}
51
+ <SlideshowItem
52
+ key="/demo-assets/landscape1.jpg-0"
21
53
  >
22
- <div
23
- className="lumx-slideshow__wrapper"
24
- style={
54
+ <ImageBlock
55
+ align="left"
56
+ alt="Image 1"
57
+ captionPosition="below"
58
+ image="/demo-assets/landscape1.jpg"
59
+ theme="light"
60
+ thumbnailProps={
25
61
  Object {
26
- "transform": "translateX(-0%)",
62
+ "aspectRatio": "horizontal",
63
+ "loading": "eager",
27
64
  }
28
65
  }
29
- >
30
- <SlideshowItem
31
- aria-hidden={false}
32
- key=".$/demo-assets/landscape1.jpg-0"
33
- style={Object {}}
34
- >
35
- <ImageBlock
36
- align="left"
37
- alt="Image 1"
38
- captionPosition="below"
39
- image="/demo-assets/landscape1.jpg"
40
- theme="light"
41
- thumbnailProps={
42
- Object {
43
- "aspectRatio": "horizontal",
44
- "loading": "eager",
45
- }
46
- }
47
- />
48
- </SlideshowItem>
49
- <SlideshowItem
50
- aria-hidden={false}
51
- key=".$/demo-assets/landscape1-s200.jpg-1"
52
- style={Object {}}
53
- >
54
- <ImageBlock
55
- align="left"
56
- alt="Image 2"
57
- captionPosition="below"
58
- image="/demo-assets/landscape1-s200.jpg"
59
- theme="light"
60
- thumbnailProps={
61
- Object {
62
- "aspectRatio": "horizontal",
63
- "loading": "eager",
64
- }
65
- }
66
- />
67
- </SlideshowItem>
68
- <SlideshowItem
69
- aria-hidden={true}
70
- key=".$/demo-assets/landscape2.jpg-2"
71
- style={
72
- Object {
73
- "visibility": "hidden",
74
- }
75
- }
76
- >
77
- <ImageBlock
78
- align="left"
79
- alt="Image 3"
80
- captionPosition="below"
81
- image="/demo-assets/landscape2.jpg"
82
- theme="light"
83
- thumbnailProps={
84
- Object {
85
- "aspectRatio": "horizontal",
86
- "loading": "eager",
87
- }
88
- }
89
- />
90
- </SlideshowItem>
91
- <SlideshowItem
92
- aria-hidden={true}
93
- key=".$/demo-assets/landscape3.jpg-3"
94
- style={
95
- Object {
96
- "visibility": "hidden",
97
- }
98
- }
99
- >
100
- <ImageBlock
101
- align="left"
102
- alt="Image 4"
103
- captionPosition="below"
104
- image="/demo-assets/landscape3.jpg"
105
- theme="light"
106
- thumbnailProps={
107
- Object {
108
- "aspectRatio": "horizontal",
109
- "loading": "eager",
110
- }
111
- }
112
- />
113
- </SlideshowItem>
114
- <SlideshowItem
115
- aria-hidden={true}
116
- key=".$/demo-assets/portrait1.jpg-4"
117
- style={
118
- Object {
119
- "visibility": "hidden",
120
- }
121
- }
122
- >
123
- <ImageBlock
124
- align="left"
125
- alt="Image 5"
126
- captionPosition="below"
127
- image="/demo-assets/portrait1.jpg"
128
- theme="light"
129
- thumbnailProps={
130
- Object {
131
- "aspectRatio": "horizontal",
132
- "loading": "eager",
133
- }
134
- }
135
- />
136
- </SlideshowItem>
137
- <SlideshowItem
138
- aria-hidden={true}
139
- key=".$/demo-assets/portrait1-s200.jpg-5"
140
- style={
141
- Object {
142
- "visibility": "hidden",
143
- }
66
+ />
67
+ </SlideshowItem>
68
+ <SlideshowItem
69
+ key="/demo-assets/landscape1-s200.jpg-1"
70
+ >
71
+ <ImageBlock
72
+ align="left"
73
+ alt="Image 2"
74
+ captionPosition="below"
75
+ image="/demo-assets/landscape1-s200.jpg"
76
+ theme="light"
77
+ thumbnailProps={
78
+ Object {
79
+ "aspectRatio": "horizontal",
80
+ "loading": "eager",
144
81
  }
145
- >
146
- <ImageBlock
147
- align="left"
148
- alt="Image 6"
149
- captionPosition="below"
150
- image="/demo-assets/portrait1-s200.jpg"
151
- theme="light"
152
- thumbnailProps={
153
- Object {
154
- "aspectRatio": "horizontal",
155
- "loading": "eager",
156
- }
157
- }
158
- />
159
- </SlideshowItem>
160
- </div>
161
- </div>
162
- <div
163
- className="lumx-slideshow__controls"
82
+ }
83
+ />
84
+ </SlideshowItem>
85
+ <SlideshowItem
86
+ key="/demo-assets/landscape2.jpg-2"
164
87
  >
165
- <SlideshowControls
166
- activeIndex={0}
167
- nextButtonProps={
88
+ <ImageBlock
89
+ align="left"
90
+ alt="Image 3"
91
+ captionPosition="below"
92
+ image="/demo-assets/landscape2.jpg"
93
+ theme="light"
94
+ thumbnailProps={
168
95
  Object {
169
- "aria-controls": "slideshow-slides2",
170
- "label": "Next",
96
+ "aspectRatio": "horizontal",
97
+ "loading": "eager",
171
98
  }
172
99
  }
173
- onNextClick={[Function]}
174
- onPaginationClick={[Function]}
175
- onPreviousClick={[Function]}
176
- previousButtonProps={
100
+ />
101
+ </SlideshowItem>
102
+ <SlideshowItem
103
+ key="/demo-assets/landscape3.jpg-3"
104
+ >
105
+ <ImageBlock
106
+ align="left"
107
+ alt="Image 4"
108
+ captionPosition="below"
109
+ image="/demo-assets/landscape3.jpg"
110
+ theme="light"
111
+ thumbnailProps={
177
112
  Object {
178
- "aria-controls": "slideshow-slides2",
179
- "label": "Previous",
113
+ "aspectRatio": "horizontal",
114
+ "loading": "eager",
180
115
  }
181
116
  }
182
- slidesCount={6}
117
+ />
118
+ </SlideshowItem>
119
+ <SlideshowItem
120
+ key="/demo-assets/portrait1.jpg-4"
121
+ >
122
+ <ImageBlock
123
+ align="left"
124
+ alt="Image 5"
125
+ captionPosition="below"
126
+ image="/demo-assets/portrait1.jpg"
183
127
  theme="light"
128
+ thumbnailProps={
129
+ Object {
130
+ "aspectRatio": "horizontal",
131
+ "loading": "eager",
132
+ }
133
+ }
184
134
  />
185
- </div>
186
- </section>,
187
- <div
188
- className="lumx-slideshow-controls lumx-slideshow-controls--theme-light lumx-slideshow-controls--has-infinite-pagination"
189
- >
190
- <IconButton
191
- aria-controls="slideshow-slides4"
192
- className="lumx-slideshow-controls__navigation"
193
- color="dark"
194
- emphasis="low"
195
- icon="M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z"
196
- label="Previous"
197
- onClick={[Function]}
198
- size="m"
199
- theme="light"
200
- />
201
- <div
202
- className="lumx-slideshow-controls__pagination"
135
+ </SlideshowItem>
136
+ <SlideshowItem
137
+ key="/demo-assets/portrait1-s200.jpg-5"
203
138
  >
204
- <div
205
- className="lumx-slideshow-controls__pagination-items"
206
- style={
139
+ <ImageBlock
140
+ align="left"
141
+ alt="Image 6"
142
+ captionPosition="below"
143
+ image="/demo-assets/portrait1-s200.jpg"
144
+ theme="light"
145
+ thumbnailProps={
207
146
  Object {
208
- "transform": "translateX(-0px)",
147
+ "aspectRatio": "horizontal",
148
+ "loading": "eager",
209
149
  }
210
150
  }
211
- >
212
- <button
213
- className="lumx-slideshow-controls__pagination-item lumx-slideshow-controls__pagination-item--is-active"
214
- key="0"
215
- onClick={[Function]}
216
- type="button"
217
- />
218
- <button
219
- className="lumx-slideshow-controls__pagination-item"
220
- key="1"
221
- onClick={[Function]}
222
- type="button"
223
- />
224
- <button
225
- className="lumx-slideshow-controls__pagination-item"
226
- key="2"
227
- onClick={[Function]}
228
- type="button"
229
- />
230
- <button
231
- className="lumx-slideshow-controls__pagination-item"
232
- key="3"
233
- onClick={[Function]}
234
- type="button"
235
- />
236
- <button
237
- className="lumx-slideshow-controls__pagination-item lumx-slideshow-controls__pagination-item--is-on-edge"
238
- key="4"
239
- onClick={[Function]}
240
- type="button"
241
- />
242
- <button
243
- className="lumx-slideshow-controls__pagination-item lumx-slideshow-controls__pagination-item--is-out-range"
244
- key="5"
245
- onClick={[Function]}
246
- type="button"
247
- />
248
- </div>
249
- </div>
250
- <IconButton
251
- aria-controls="slideshow-slides4"
252
- className="lumx-slideshow-controls__navigation"
253
- color="dark"
254
- emphasis="low"
255
- icon="M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z"
256
- label="Next"
257
- onClick={[Function]}
258
- size="m"
259
- theme="light"
260
- />
261
- </div>,
151
+ />
152
+ </SlideshowItem>
153
+ </Slideshow>,
154
+ null,
262
155
  ]
263
156
  `;
@@ -1,3 +1,4 @@
1
1
  export * from './Slideshow';
2
2
  export * from './SlideshowItem';
3
3
  export * from './SlideshowControls';
4
+ export * from './Slides';
@@ -1,2 +1,3 @@
1
1
  export * from './Thumbnail';
2
2
  export * from './types';
3
+ export { useFocusPointStyle } from '@lumx/react/components/thumbnail/useFocusPointStyle';
@@ -2,7 +2,7 @@ import { useEffect } from 'react';
2
2
 
3
3
  export interface UseFocusWithinOptions {
4
4
  /** element to add the focus within to */
5
- element: HTMLElement | undefined;
5
+ element: HTMLElement | null;
6
6
  /** callback to be executed on focus in */
7
7
  onFocusIn: (ev: FocusEvent) => void;
8
8
  /** callback to be executed on focus out */
@@ -26,7 +26,7 @@ export const useFocusWithin = ({ element, onFocusIn, onFocusOut }: UseFocusWithi
26
26
  if (element) {
27
27
  element.removeEventListener('focusin', onFocusIn);
28
28
 
29
- element.addEventListener('focusout', onFocusOut);
29
+ element.removeEventListener('focusout', onFocusOut);
30
30
  }
31
31
  };
32
32
  }, [onFocusIn, element, onFocusOut]);
@@ -4,8 +4,6 @@ import { useInterval } from '@lumx/react/hooks/useInterval';
4
4
  import uniqueId from 'lodash/uniqueId';
5
5
  import { AUTOPLAY_DEFAULT_INTERVAL } from '@lumx/react/components/slideshow/constants';
6
6
 
7
- import { useFocusWithin } from './useFocusWithin';
8
-
9
7
  export interface UseSlideshowControlsOptions {
10
8
  /** default active index to be displayed */
11
9
  defaultActiveIndex?: number;
@@ -37,9 +35,9 @@ export interface UseSlideshowControls {
37
35
  /** total slides to be displayed */
38
36
  slidesCount: number;
39
37
  /** callback to set */
40
- setSlideshow: (element: HTMLDivElement | undefined) => void;
38
+ setSlideshow: (element: HTMLDivElement | null) => void;
41
39
  /** reference to the slideshow element */
42
- slideshow: HTMLDivElement | undefined;
40
+ slideshow: HTMLDivElement | null;
43
41
  /** id to be used for the slideshow */
44
42
  slideshowId: string;
45
43
  /** id to be used for the wrapper that contains the slides */
@@ -52,12 +50,20 @@ export interface UseSlideshowControls {
52
50
  onPaginationClick: (index: number) => void;
53
51
  /** whether the slideshow is autoplaying or not */
54
52
  isAutoPlaying: boolean;
53
+ /** whether the slideshow was force paused or not */
54
+ isForcePaused: boolean;
55
+ /** callback to enable/disable the force pause feature */
56
+ setIsForcePaused: (isForcePaused: boolean) => void;
55
57
  /** callback to change whether the slideshow is autoplaying or not */
56
58
  setIsAutoPlaying: (isAutoPlaying: boolean) => void;
57
59
  /** current active slide index */
58
60
  activeIndex: number;
59
61
  /** set the current index as the active one */
60
62
  setActiveIndex: (index: number) => void;
63
+ /** callback that stops the auto play */
64
+ stopAutoPlay: () => void;
65
+ /** callback that starts the auto play */
66
+ startAutoPlay: () => void;
61
67
  }
62
68
 
63
69
  export const DEFAULT_OPTIONS: Partial<UseSlideshowControlsOptions> = {
@@ -79,7 +85,7 @@ export const useSlideshowControls = ({
79
85
  }: UseSlideshowControlsOptions): UseSlideshowControls => {
80
86
  const [currentIndex, setCurrentIndex] = useState(activeIndex as number);
81
87
  // Use state instead of a ref to make the slideshow controls update directly when the element is set.
82
- const [element, setElement] = useState<HTMLDivElement>();
88
+ const [element, setElement] = useState<HTMLDivElement | null>(null);
83
89
 
84
90
  // Number of slides when using groupBy prop.
85
91
  const slidesCount = Math.ceil(itemsCount / Math.min(groupBy as number, itemsCount));
@@ -122,8 +128,11 @@ export const useSlideshowControls = ({
122
128
 
123
129
  // Auto play
124
130
  const [isAutoPlaying, setIsAutoPlaying] = useState(Boolean(autoPlay));
131
+ const [isForcePaused, setIsForcePaused] = useState(false);
132
+
133
+ const isSlideshowAutoPlaying = isForcePaused ? false : isAutoPlaying;
125
134
  // Start
126
- useInterval(goToNextSlide, isAutoPlaying && slidesCount > 1 ? (interval as number) : null);
135
+ useInterval(goToNextSlide, isSlideshowAutoPlaying && slidesCount > 1 ? (interval as number) : null);
127
136
 
128
137
  // Reset current index if it become invalid.
129
138
  useEffect(() => {
@@ -184,11 +193,15 @@ export const useSlideshowControls = ({
184
193
  setIsAutoPlaying(false);
185
194
  };
186
195
 
187
- useFocusWithin({
188
- element,
189
- onFocusIn: stopAutoPlay,
190
- onFocusOut: startAutoPlay,
191
- });
196
+ const forcePause = (isPaused: boolean) => {
197
+ setIsForcePaused(isPaused);
198
+
199
+ if (isPaused) {
200
+ stopAutoPlay();
201
+ } else {
202
+ startAutoPlay();
203
+ }
204
+ };
192
205
 
193
206
  // Start index and end index of visible slides.
194
207
  const startIndexVisible = currentIndex * (groupBy as number);
@@ -204,10 +217,14 @@ export const useSlideshowControls = ({
204
217
  onPreviousClick,
205
218
  onNextClick,
206
219
  onPaginationClick,
207
- isAutoPlaying,
220
+ isAutoPlaying: isSlideshowAutoPlaying,
208
221
  setIsAutoPlaying,
209
222
  activeIndex: currentIndex,
210
223
  slidesCount,
211
224
  setActiveIndex: setCurrentIndex,
225
+ startAutoPlay,
226
+ stopAutoPlay,
227
+ isForcePaused,
228
+ setIsForcePaused: forcePause,
212
229
  };
213
230
  };
@@ -4,7 +4,9 @@
4
4
  export default { title: 'LumX components/thumbnail/Thumbnail Demos' };
5
5
 
6
6
  export { App as Combined } from './combined';
7
- export { App as LoadingError } from './loading-error';
7
+ export { App as ErrorFallback } from './error-fallback';
8
+ export { App as Error } from './error';
9
+ export { App as Loading } from './loading';
8
10
  export { App as Ratios } from './ratios';
9
11
  export { App as Sizes } from './sizes';
10
12
  export { App as Variants } from './variants';