@onewelcome/react-lib-components 0.3.0 → 1.0.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 (299) hide show
  1. package/LICENSE +202 -21
  2. package/dist/Breadcrumbs/Breadcrumbs.d.ts +2 -2
  3. package/dist/Button/BaseButton.d.ts +1 -1
  4. package/dist/Button/Button.d.ts +1 -1
  5. package/dist/Button/IconButton.d.ts +1 -1
  6. package/dist/ContextMenu/ContextMenu.d.ts +1 -1
  7. package/dist/ContextMenu/ContextMenuItem.d.ts +1 -1
  8. package/dist/DataGrid/DataGridActions/DataGridActions.d.ts +1 -1
  9. package/dist/DataGrid/DataGridActions/DataGridColumnsToggle.d.ts +1 -1
  10. package/dist/DataGrid/DataGridBody/DataGridCell.d.ts +1 -1
  11. package/dist/DataGrid/DataGridBody/DataGridRow.d.ts +1 -1
  12. package/dist/DataGrid/DataGridHeader/DataGridHeader.d.ts +1 -1
  13. package/dist/DataGrid/DataGridHeader/DataGridHeaderCell.d.ts +1 -1
  14. package/dist/Form/Checkbox/Checkbox.d.ts +1 -1
  15. package/dist/Form/Fieldset/Fieldset.d.ts +1 -1
  16. package/dist/Form/FormControl/FormControl.d.ts +1 -1
  17. package/dist/Form/FormGroup/FormGroup.d.ts +1 -1
  18. package/dist/Form/FormHelperText/FormHelperText.d.ts +1 -1
  19. package/dist/Form/FormSelectorWrapper/FormSelectorWrapper.d.ts +1 -1
  20. package/dist/Form/Input/Input.d.ts +2 -3
  21. package/dist/Form/Label/Label.d.ts +1 -1
  22. package/dist/Form/Radio/Radio.d.ts +1 -1
  23. package/dist/Form/Select/Option.d.ts +1 -1
  24. package/dist/Form/Select/Select.d.ts +1 -2
  25. package/dist/Form/Select/Select.interfaces.d.ts +22 -0
  26. package/dist/Form/Select/SelectService.d.ts +12 -0
  27. package/dist/Form/Textarea/Textarea.d.ts +1 -1
  28. package/dist/Form/Toggle/Toggle.d.ts +1 -1
  29. package/dist/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.d.ts +1 -1
  30. package/dist/Form/Wrapper/InputWrapper/InputWrapper.d.ts +1 -1
  31. package/dist/Form/Wrapper/RadioWrapper/RadioWrapper.d.ts +1 -1
  32. package/dist/Form/Wrapper/SelectWrapper/SelectWrapper.d.ts +1 -2
  33. package/dist/Form/Wrapper/TextareaWrapper/TextareaWrapper.d.ts +1 -1
  34. package/dist/Form/Wrapper/Wrapper/Wrapper.d.ts +1 -1
  35. package/dist/Icon/Icon.d.ts +1 -1
  36. package/dist/Link/Link.d.ts +3 -4
  37. package/dist/Notifications/BaseModal/BaseModal.d.ts +1 -1
  38. package/dist/Notifications/BaseModal/BaseModalActions/BaseModalActions.d.ts +2 -2
  39. package/dist/Notifications/BaseModal/BaseModalContent/BaseModalContent.d.ts +1 -1
  40. package/dist/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.d.ts +2 -2
  41. package/dist/Notifications/Dialog/Dialog.d.ts +1 -1
  42. package/dist/Notifications/Dialog/DialogActions/DialogActions.d.ts +1 -1
  43. package/dist/Notifications/Dialog/DialogTitle/DialogTitle.d.ts +1 -1
  44. package/dist/Notifications/DiscardChangesModal/DiscardChangesDialog/DiscardChangesDialog.d.ts +1 -1
  45. package/dist/Notifications/SlideInModal/SlideInModal.d.ts +1 -1
  46. package/dist/Notifications/Snackbar/SnackbarProvider/SnackbarProvider.d.ts +11 -0
  47. package/dist/Notifications/Snackbar/SnackbarProvider/SnackbarStateProvider.d.ts +3 -0
  48. package/dist/Notifications/Snackbar/useSnackbar.d.ts +5 -1
  49. package/dist/Pagination/Pagination.d.ts +1 -1
  50. package/dist/Popover/Popover.d.ts +1 -1
  51. package/dist/Skeleton/Skeleton.d.ts +1 -1
  52. package/dist/StatusIndicator/StatusIndicator.d.ts +1 -1
  53. package/dist/Tabs/TabButton.d.ts +1 -1
  54. package/dist/Tabs/TabPanel.d.ts +1 -1
  55. package/dist/TextEllipsis/TextEllipsis.d.ts +1 -1
  56. package/dist/Tiles/Tile.d.ts +1 -1
  57. package/dist/Tiles/Tiles.d.ts +1 -1
  58. package/dist/Tooltip/Tooltip.d.ts +1 -1
  59. package/dist/Wizard/BaseWizardSteps/BaseWizardSteps.d.ts +1 -2
  60. package/dist/Wizard/Wizard.d.ts +0 -1
  61. package/dist/Wizard/WizardSteps/WizardSteps.d.ts +1 -1
  62. package/dist/Wizard/wizardStateReducer.d.ts +1 -3
  63. package/dist/_BaseStyling_/BaseStyling.d.ts +10 -4
  64. package/dist/react-lib-components.cjs.development.js +1158 -1559
  65. package/dist/react-lib-components.cjs.development.js.map +1 -1
  66. package/dist/react-lib-components.cjs.production.min.js +1 -1
  67. package/dist/react-lib-components.cjs.production.min.js.map +1 -1
  68. package/dist/react-lib-components.esm.js +1158 -1559
  69. package/dist/react-lib-components.esm.js.map +1 -1
  70. package/package.json +31 -24
  71. package/src/Breadcrumbs/Breadcrumbs.module.scss +16 -0
  72. package/src/Breadcrumbs/Breadcrumbs.test.tsx +17 -1
  73. package/src/Breadcrumbs/Breadcrumbs.tsx +18 -2
  74. package/src/Button/BaseButton.module.scss +16 -0
  75. package/src/Button/BaseButton.test.tsx +16 -0
  76. package/src/Button/BaseButton.tsx +16 -0
  77. package/src/Button/Button.module.scss +16 -0
  78. package/src/Button/Button.test.tsx +16 -0
  79. package/src/Button/Button.tsx +16 -0
  80. package/src/Button/IconButton.module.scss +16 -0
  81. package/src/Button/IconButton.test.tsx +16 -0
  82. package/src/Button/IconButton.tsx +16 -0
  83. package/src/ContextMenu/ContextMenu.module.scss +16 -0
  84. package/src/ContextMenu/ContextMenu.test.tsx +16 -0
  85. package/src/ContextMenu/ContextMenu.tsx +16 -0
  86. package/src/ContextMenu/ContextMenuItem.module.scss +16 -0
  87. package/src/ContextMenu/ContextMenuItem.tsx +16 -0
  88. package/src/DataGrid/DataGrid.module.scss +16 -0
  89. package/src/DataGrid/DataGrid.test.tsx +16 -0
  90. package/src/DataGrid/DataGrid.tsx +16 -0
  91. package/src/DataGrid/DataGridActions/DataGridActions.module.scss +16 -0
  92. package/src/DataGrid/DataGridActions/DataGridActions.test.tsx +16 -0
  93. package/src/DataGrid/DataGridActions/DataGridActions.tsx +16 -0
  94. package/src/DataGrid/DataGridActions/DataGridColumnsToggle.module.scss +16 -0
  95. package/src/DataGrid/DataGridActions/DataGridColumnsToggle.test.tsx +16 -0
  96. package/src/DataGrid/DataGridActions/DataGridColumnsToggle.tsx +16 -0
  97. package/src/DataGrid/DataGridBody/DataGridBody.module.scss +16 -0
  98. package/src/DataGrid/DataGridBody/DataGridBody.test.tsx +16 -0
  99. package/src/DataGrid/DataGridBody/DataGridBody.tsx +16 -0
  100. package/src/DataGrid/DataGridBody/DataGridCell.module.scss +16 -0
  101. package/src/DataGrid/DataGridBody/DataGridCell.test.tsx +16 -0
  102. package/src/DataGrid/DataGridBody/DataGridCell.tsx +16 -0
  103. package/src/DataGrid/DataGridBody/DataGridRow.module.scss +16 -0
  104. package/src/DataGrid/DataGridBody/DataGridRow.test.tsx +16 -0
  105. package/src/DataGrid/DataGridBody/DataGridRow.tsx +16 -0
  106. package/src/DataGrid/DataGridHeader/DataGridHeader.module.scss +17 -1
  107. package/src/DataGrid/DataGridHeader/DataGridHeader.test.tsx +16 -0
  108. package/src/DataGrid/DataGridHeader/DataGridHeader.tsx +16 -0
  109. package/src/DataGrid/DataGridHeader/DataGridHeaderCell.module.scss +16 -0
  110. package/src/DataGrid/DataGridHeader/DataGridHeaderCell.test.tsx +16 -0
  111. package/src/DataGrid/DataGridHeader/DataGridHeaderCell.tsx +16 -0
  112. package/src/DataGrid/datagrid.interfaces.ts +16 -0
  113. package/src/Form/Checkbox/Checkbox.module.scss +20 -6
  114. package/src/Form/Checkbox/Checkbox.test.tsx +16 -0
  115. package/src/Form/Checkbox/Checkbox.tsx +16 -0
  116. package/src/Form/Fieldset/Fieldset.module.scss +16 -0
  117. package/src/Form/Fieldset/Fieldset.test.tsx +16 -0
  118. package/src/Form/Fieldset/Fieldset.tsx +21 -3
  119. package/src/Form/Form.module.scss +16 -0
  120. package/src/Form/Form.test.tsx +16 -0
  121. package/src/Form/Form.tsx +16 -0
  122. package/src/Form/FormControl/FormControl.module.scss +16 -0
  123. package/src/Form/FormControl/FormControl.test.tsx +16 -0
  124. package/src/Form/FormControl/FormControl.tsx +16 -0
  125. package/src/Form/FormGroup/FormGroup.module.scss +16 -0
  126. package/src/Form/FormGroup/FormGroup.test.tsx +16 -0
  127. package/src/Form/FormGroup/FormGroup.tsx +17 -1
  128. package/src/Form/FormHelperText/FormHelperText.module.scss +16 -0
  129. package/src/Form/FormHelperText/FormHelperText.test.tsx +16 -0
  130. package/src/Form/FormHelperText/FormHelperText.tsx +16 -0
  131. package/src/Form/FormSelectorWrapper/FormSelectorWrapper.module.scss +16 -0
  132. package/src/Form/FormSelectorWrapper/FormSelectorWrapper.test.tsx +16 -0
  133. package/src/Form/FormSelectorWrapper/FormSelectorWrapper.tsx +16 -0
  134. package/src/Form/Input/Input.module.scss +64 -5
  135. package/src/Form/Input/Input.test.tsx +16 -0
  136. package/src/Form/Input/Input.tsx +19 -57
  137. package/src/Form/Label/Label.module.scss +16 -0
  138. package/src/Form/Label/Label.test.tsx +16 -0
  139. package/src/Form/Label/Label.tsx +16 -0
  140. package/src/Form/Radio/Radio.module.scss +20 -6
  141. package/src/Form/Radio/Radio.test.tsx +16 -0
  142. package/src/Form/Radio/Radio.tsx +16 -0
  143. package/src/Form/Select/Option.test.tsx +16 -0
  144. package/src/Form/Select/Option.tsx +16 -0
  145. package/src/Form/Select/Select.interfaces.ts +39 -0
  146. package/src/Form/Select/Select.module.scss +28 -13
  147. package/src/Form/Select/Select.test.tsx +16 -57
  148. package/src/Form/Select/Select.tsx +36 -190
  149. package/src/Form/Select/SelectService.ts +204 -0
  150. package/src/Form/Textarea/Textarea.module.scss +16 -0
  151. package/src/Form/Textarea/Textarea.test.tsx +16 -0
  152. package/src/Form/Textarea/Textarea.tsx +16 -0
  153. package/src/Form/Toggle/Toggle.module.scss +17 -1
  154. package/src/Form/Toggle/Toggle.test.tsx +16 -0
  155. package/src/Form/Toggle/Toggle.tsx +16 -0
  156. package/src/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.module.scss +16 -0
  157. package/src/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.test.tsx +16 -0
  158. package/src/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.tsx +16 -0
  159. package/src/Form/Wrapper/InputWrapper/InputWrapper.module.scss +27 -3
  160. package/src/Form/Wrapper/InputWrapper/InputWrapper.test.tsx +16 -0
  161. package/src/Form/Wrapper/InputWrapper/InputWrapper.tsx +16 -0
  162. package/src/Form/Wrapper/RadioWrapper/RadioWrapper.module.scss +16 -0
  163. package/src/Form/Wrapper/RadioWrapper/RadioWrapper.test.tsx +16 -0
  164. package/src/Form/Wrapper/RadioWrapper/RadioWrapper.tsx +16 -0
  165. package/src/Form/Wrapper/SelectWrapper/SelectWrapper.module.scss +16 -0
  166. package/src/Form/Wrapper/SelectWrapper/SelectWrapper.test.tsx +17 -19
  167. package/src/Form/Wrapper/SelectWrapper/SelectWrapper.tsx +17 -15
  168. package/src/Form/Wrapper/TextareaWrapper/TextareaWrapper.module.scss +41 -33
  169. package/src/Form/Wrapper/TextareaWrapper/TextareaWrapper.test.tsx +16 -0
  170. package/src/Form/Wrapper/TextareaWrapper/TextareaWrapper.tsx +23 -7
  171. package/src/Form/Wrapper/Wrapper/Wrapper.module.scss +37 -21
  172. package/src/Form/Wrapper/Wrapper/Wrapper.test.tsx +16 -0
  173. package/src/Form/Wrapper/Wrapper/Wrapper.tsx +16 -0
  174. package/src/Form/form.interfaces.ts +16 -0
  175. package/src/Icon/Icon.module.scss +16 -0
  176. package/src/Icon/Icon.test.tsx +16 -0
  177. package/src/Icon/Icon.tsx +16 -0
  178. package/src/Link/Link.module.scss +21 -5
  179. package/src/Link/Link.test.tsx +16 -0
  180. package/src/Link/Link.tsx +18 -8
  181. package/src/Notifications/BaseModal/BaseModal.module.scss +16 -0
  182. package/src/Notifications/BaseModal/BaseModal.test.tsx +16 -0
  183. package/src/Notifications/BaseModal/BaseModal.tsx +16 -0
  184. package/src/Notifications/BaseModal/BaseModalActions/BaseModalActions.module.scss +16 -0
  185. package/src/Notifications/BaseModal/BaseModalActions/BaseModalActions.test.tsx +16 -0
  186. package/src/Notifications/BaseModal/BaseModalActions/BaseModalActions.tsx +20 -4
  187. package/src/Notifications/BaseModal/BaseModalContent/BaseModalContent.module.scss +16 -0
  188. package/src/Notifications/BaseModal/BaseModalContent/BaseModalContent.test.tsx +16 -0
  189. package/src/Notifications/BaseModal/BaseModalContent/BaseModalContent.tsx +16 -0
  190. package/src/Notifications/BaseModal/BaseModalContext.ts +16 -0
  191. package/src/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.module.scss +16 -0
  192. package/src/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.test.tsx +16 -0
  193. package/src/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.tsx +17 -1
  194. package/src/Notifications/Dialog/Dialog.module.scss +16 -0
  195. package/src/Notifications/Dialog/Dialog.test.tsx +18 -2
  196. package/src/Notifications/Dialog/Dialog.tsx +16 -0
  197. package/src/Notifications/Dialog/DialogActions/DialogActions.module.scss +16 -0
  198. package/src/Notifications/Dialog/DialogActions/DialogActions.test.tsx +16 -0
  199. package/src/Notifications/Dialog/DialogActions/DialogActions.tsx +17 -1
  200. package/src/Notifications/Dialog/DialogTitle/DialogTitle.module.scss +16 -0
  201. package/src/Notifications/Dialog/DialogTitle/DialogTitle.test.tsx +16 -0
  202. package/src/Notifications/Dialog/DialogTitle/DialogTitle.tsx +16 -0
  203. package/src/Notifications/DiscardChangesModal/DiscardChangesDialog/DiscardChangesDialog.test.tsx +16 -0
  204. package/src/Notifications/DiscardChangesModal/DiscardChangesDialog/DiscardChangesDialog.tsx +16 -0
  205. package/src/Notifications/DiscardChangesModal/DiscardChangesModal.test.tsx +16 -0
  206. package/src/Notifications/DiscardChangesModal/DiscardChangesModal.tsx +16 -0
  207. package/src/Notifications/Modal/Modal.tsx +16 -0
  208. package/src/Notifications/Modal/ModalActions/ModalActions.tsx +16 -0
  209. package/src/Notifications/Modal/ModalContent/ModalContent.tsx +16 -0
  210. package/src/Notifications/Modal/ModalHeader/ModalHeader.tsx +16 -0
  211. package/src/Notifications/SlideInModal/SlideInModal.module.scss +16 -0
  212. package/src/Notifications/SlideInModal/SlideInModal.test.tsx +16 -0
  213. package/src/Notifications/SlideInModal/SlideInModal.tsx +16 -0
  214. package/src/Notifications/Snackbar/SnackbarContainer/SnackbarContainer.module.scss +19 -0
  215. package/src/Notifications/Snackbar/SnackbarContainer/SnackbarContainer.test.tsx +16 -0
  216. package/src/Notifications/Snackbar/SnackbarContainer/SnackbarContainer.tsx +57 -2
  217. package/src/Notifications/Snackbar/SnackbarItem/SnackbarItem.module.scss +18 -0
  218. package/src/Notifications/Snackbar/SnackbarItem/SnackbarItem.test.tsx +16 -0
  219. package/src/Notifications/Snackbar/SnackbarItem/SnackbarItem.tsx +34 -1
  220. package/src/Notifications/Snackbar/SnackbarProvider/SnackbarProvider.test.tsx +18 -2
  221. package/src/Notifications/Snackbar/SnackbarProvider/SnackbarProvider.tsx +38 -2
  222. package/src/Notifications/Snackbar/SnackbarProvider/SnackbarStateProvider.tsx +22 -1
  223. package/src/Notifications/Snackbar/interfaces.ts +16 -0
  224. package/src/Notifications/Snackbar/useSnackbar.ts +25 -1
  225. package/src/Pagination/Pagination.module.scss +17 -1
  226. package/src/Pagination/Pagination.test.tsx +17 -1
  227. package/src/Pagination/Pagination.tsx +16 -0
  228. package/src/Popover/Popover.module.scss +17 -1
  229. package/src/Popover/Popover.test.tsx +16 -0
  230. package/src/Popover/Popover.tsx +22 -0
  231. package/src/Skeleton/Skeleton.module.scss +16 -0
  232. package/src/Skeleton/Skeleton.test.tsx +17 -1
  233. package/src/Skeleton/Skeleton.tsx +16 -0
  234. package/src/StatusIndicator/StatusIndicator.module.scss +16 -0
  235. package/src/StatusIndicator/StatusIndicator.test.tsx +16 -0
  236. package/src/StatusIndicator/StatusIndicator.tsx +16 -0
  237. package/src/Tabs/Tab.test.tsx +16 -0
  238. package/src/Tabs/Tab.tsx +16 -0
  239. package/src/Tabs/TabButton.module.scss +20 -0
  240. package/src/Tabs/TabButton.test.tsx +16 -0
  241. package/src/Tabs/TabButton.tsx +16 -0
  242. package/src/Tabs/TabPanel.module.scss +20 -0
  243. package/src/Tabs/TabPanel.test.tsx +16 -0
  244. package/src/Tabs/TabPanel.tsx +16 -0
  245. package/src/Tabs/Tabs.module.scss +18 -2
  246. package/src/Tabs/Tabs.test.tsx +16 -0
  247. package/src/Tabs/Tabs.tsx +17 -1
  248. package/src/TextEllipsis/TextEllipsis.module.scss +16 -0
  249. package/src/TextEllipsis/TextEllipsis.test.tsx +16 -0
  250. package/src/TextEllipsis/TextEllipsis.tsx +16 -0
  251. package/src/Tiles/Tile.module.scss +18 -2
  252. package/src/Tiles/Tile.test.tsx +16 -0
  253. package/src/Tiles/Tile.tsx +16 -0
  254. package/src/Tiles/Tiles.module.scss +16 -0
  255. package/src/Tiles/Tiles.test.tsx +16 -0
  256. package/src/Tiles/Tiles.tsx +16 -0
  257. package/src/Tooltip/Tooltip.module.scss +17 -1
  258. package/src/Tooltip/Tooltip.test.tsx +26 -0
  259. package/src/Tooltip/Tooltip.tsx +18 -1
  260. package/src/Typography/Typography.module.scss +16 -0
  261. package/src/Typography/Typography.test.tsx +16 -0
  262. package/src/Typography/Typography.tsx +16 -0
  263. package/src/Wizard/BaseWizardSteps/BaseWizardSteps.module.scss +19 -7
  264. package/src/Wizard/BaseWizardSteps/BaseWizardSteps.test.tsx +16 -1
  265. package/src/Wizard/BaseWizardSteps/BaseWizardSteps.tsx +18 -19
  266. package/src/Wizard/Wizard.test.tsx +16 -1
  267. package/src/Wizard/Wizard.tsx +23 -8
  268. package/src/Wizard/WizardActions/WizardActions.test.tsx +16 -1
  269. package/src/Wizard/WizardActions/WizardActions.tsx +16 -0
  270. package/src/Wizard/WizardStateProvider.tsx +16 -0
  271. package/src/Wizard/WizardSteps/WizardSteps.test.tsx +16 -1
  272. package/src/Wizard/WizardSteps/WizardSteps.tsx +17 -2
  273. package/src/Wizard/wizardStateReducer.ts +18 -8
  274. package/src/_BaseStyling_/BaseStyling.test.tsx +16 -0
  275. package/src/_BaseStyling_/BaseStyling.tsx +41 -16
  276. package/src/hooks/useAnimation.test.tsx +16 -0
  277. package/src/hooks/useAnimation.ts +16 -0
  278. package/src/hooks/useBodyClick.test.tsx +16 -0
  279. package/src/hooks/useBodyClick.ts +16 -0
  280. package/src/hooks/useFormSelector.test.ts +16 -0
  281. package/src/hooks/useFormSelector.ts +16 -0
  282. package/src/hooks/usePosition.test.tsx +16 -0
  283. package/src/hooks/usePosition.ts +16 -0
  284. package/src/hooks/useRepeater.test.tsx +16 -0
  285. package/src/hooks/useRepeater.ts +16 -0
  286. package/src/hooks/useScroll.test.tsx +16 -0
  287. package/src/hooks/useScroll.ts +16 -0
  288. package/src/hooks/useSpacing.test.ts +16 -0
  289. package/src/hooks/useSpacing.ts +16 -0
  290. package/src/hooks/useWrapper.test.ts +16 -0
  291. package/src/hooks/useWrapper.ts +16 -0
  292. package/src/index.ts +16 -0
  293. package/src/interfaces.ts +16 -0
  294. package/src/mixins.module.scss +22 -7
  295. package/src/readyclasses.module.scss +16 -0
  296. package/src/types.d.ts +16 -0
  297. package/src/util/helper.test.tsx +16 -0
  298. package/src/util/helper.tsx +16 -0
  299. package/src/Link/types.d.ts +0 -9
@@ -1,3 +1,19 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  import React, { ComponentPropsWithRef, useState } from "react";
2
18
  import { BaseModal } from "../BaseModal/BaseModal";
3
19
  import { BaseModalContent } from "../BaseModal/BaseModalContent/BaseModalContent";
@@ -1,3 +1,19 @@
1
+ /*!
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  .actions {
2
18
  margin: 1.5rem 1.25rem 1.25rem;
3
19
 
@@ -1,3 +1,19 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  import React, { useEffect, useRef } from "react";
2
18
  import { DialogActions, Props } from "./DialogActions";
3
19
  import { render } from "@testing-library/react";
@@ -1,3 +1,19 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  import React, { ComponentPropsWithRef } from "react";
2
18
  import {
3
19
  BaseModalActions,
@@ -9,7 +25,7 @@ export interface Props extends ComponentPropsWithRef<any>, BaseModalActionsProps
9
25
  align: "left" | "right";
10
26
  }
11
27
 
12
- export const DialogActions = React.forwardRef<HTMLElement, Props>(
28
+ export const DialogActions = React.forwardRef<HTMLDivElement, Props>(
13
29
  ({ children, align, ...rest }: Props, ref) => {
14
30
  return (
15
31
  <BaseModalActions
@@ -1,3 +1,19 @@
1
+ /*!
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  .header {
2
18
  margin: 1.5rem 1.25rem 1.25rem;
3
19
  }
@@ -1,3 +1,19 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  import React, { useEffect, useRef } from "react";
2
18
  import { DialogTitle, Props } from "./DialogTitle";
3
19
  import { render, getByText } from "@testing-library/react";
@@ -1,3 +1,19 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  import React, { ComponentPropsWithRef } from "react";
2
18
  import { Typography } from "../../../Typography/Typography";
3
19
  import classes from "./DialogTitle.module.scss";
@@ -1,3 +1,19 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  import React, { useEffect, useRef } from "react";
2
18
  import { DiscardChangesDialog, Props } from "./DiscardChangesDialog";
3
19
  import { render } from "@testing-library/react";
@@ -1,3 +1,19 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  import React, { ComponentPropsWithRef } from "react";
2
18
  import { Dialog } from "../../Dialog/Dialog";
3
19
  import { Typography } from "../../../Typography/Typography";
@@ -1,3 +1,19 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  import React, { useEffect, useRef } from "react";
2
18
  import { DiscardChangesModal, Props } from "./DiscardChangesModal";
3
19
  import { findByTestId, getAllByRole, render, waitFor } from "@testing-library/react";
@@ -1,3 +1,19 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  import React, { Fragment, useState } from "react";
2
18
  import { Modal, Props as ModalProps } from "../Modal/Modal";
3
19
  import { ModalHeader, Props as ModalHeaderProps } from "../Modal/ModalHeader/ModalHeader";
@@ -1 +1,17 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  export { BaseModal as Modal, Props } from "../BaseModal/BaseModal";
@@ -1,3 +1,19 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  export {
2
18
  BaseModalActions as ModalActions,
3
19
  Props
@@ -1,3 +1,19 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  export {
2
18
  BaseModalContent as ModalContent,
3
19
  Props
@@ -1,3 +1,19 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  export {
2
18
  BaseModalHeader as ModalHeader,
3
19
  Props
@@ -1,3 +1,19 @@
1
+ /*!
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  .slide-in-modal {
2
18
  justify-content: flex-end;
3
19
 
@@ -1,3 +1,19 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  import React, { useEffect, useRef } from "react";
2
18
  import { SlideInModal } from "./SlideInModal";
3
19
  import { Props } from "../Modal/Modal";
@@ -1,3 +1,19 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  import React, { TransitionEventHandler, useState, useRef } from "react";
2
18
  import { Props as ModalProps, Modal } from "../Modal/Modal";
3
19
  import classes from "./SlideInModal.module.scss";
@@ -1,7 +1,26 @@
1
+ /*!
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  .snackbars {
2
18
  position: fixed;
3
19
  z-index: 20;
4
20
  width: 100%;
21
+ transition: height 0.2s ease-in-out;
22
+ display: flex;
23
+ flex-direction: column;
5
24
 
6
25
  &.bottom {
7
26
  bottom: 3.5rem;
@@ -1,3 +1,19 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  import React from "react";
2
18
  import { SnackbarContainer, Props } from "./SnackbarContainer";
3
19
  import { render } from "@testing-library/react";
@@ -1,5 +1,22 @@
1
- import React from "react";
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import React, { useContext, useEffect, useState } from "react";
2
18
  import classes from "./SnackbarContainer.module.scss";
19
+ import { SnackbarContext } from "../SnackbarProvider/SnackbarStateProvider";
3
20
 
4
21
  export interface Placement {
5
22
  vertical: "top" | "bottom";
@@ -13,11 +30,49 @@ export interface Props {
13
30
  className?: string;
14
31
  }
15
32
 
33
+ const useSnackbarContainerHeightAnimation = () => {
34
+ const { snackbars } = useContext(SnackbarContext);
35
+ const [height, setHeight] = useState(0);
36
+ const [justifyContent, setJustifyContent] = useState<"flex-start" | "flex-end">("flex-start");
37
+ const spaceBetweenSnackbars = 8;
38
+ const exceedsMaximumVisibleSnackbars = snackbars.length >= 3;
39
+
40
+ useEffect(() => {
41
+ const allHeights = snackbars.map(snackbar => snackbar.height);
42
+
43
+ let totalHeight = allHeights.reduce((prev, curr) => prev + curr, 0);
44
+
45
+ totalHeight += (Math.min(snackbars.length, 3) - 1) * spaceBetweenSnackbars;
46
+
47
+ /**
48
+ * Once we reach the maximum amount of snackbars, they will start to disappear. We have to wait with reversing the justify-content until the last snackbar
49
+ * has completed their animationIn. This is around 500ms. Then we want to reverse it, because otherwise whenever a snackbar disappears they shift up
50
+ * and then down again, which looks really bad.
51
+ * */
52
+ if (exceedsMaximumVisibleSnackbars)
53
+ setTimeout(() => {
54
+ setJustifyContent("flex-end");
55
+ }, 500);
56
+
57
+ if (height > totalHeight && justifyContent !== "flex-end") {
58
+ setJustifyContent("flex-end");
59
+ } else if (height < totalHeight && justifyContent !== "flex-start") {
60
+ setJustifyContent("flex-start");
61
+ }
62
+
63
+ setHeight(totalHeight);
64
+ }, [snackbars]);
65
+
66
+ return { height, justifyContent };
67
+ };
68
+
16
69
  export const SnackbarContainer = ({ placement, children, zIndex, className, ...rest }: Props) => {
70
+ const { height, justifyContent } = useSnackbarContainerHeightAnimation();
71
+
17
72
  return (
18
73
  <div
19
74
  {...rest}
20
- style={{ zIndex }}
75
+ style={{ zIndex, height, justifyContent }}
21
76
  className={`${classes["snackbars"]} ${classes[placement.horizontal]} ${
22
77
  classes[placement.vertical]
23
78
  } ${className ?? ""}`}
@@ -1,3 +1,19 @@
1
+ /*!
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  @import "../../../readyclasses.module.scss";
2
18
 
3
19
  .snackbar {
@@ -6,6 +22,8 @@
6
22
  display: flex;
7
23
  width: 100%;
8
24
  box-sizing: border-box;
25
+ transition: height 0.2s ease-in-out;
26
+ flex-grow: 0;
9
27
 
10
28
  &.info {
11
29
  background-color: var(--snackbar-info-background-color);
@@ -1,3 +1,19 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  import React from "react";
2
18
  import { render, getByRole, waitFor } from "@testing-library/react";
3
19
  import { SnackbarItem, Props } from "./SnackbarItem";
@@ -1,4 +1,20 @@
1
- import React, { useEffect, useRef } from "react";
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import React, { useContext, useEffect, useRef } from "react";
2
18
  import { IconButton } from "../../../Button/IconButton";
3
19
  import { Icon, Icons } from "../../../Icon/Icon";
4
20
  import { Variant, Actions } from "../interfaces";
@@ -6,6 +22,7 @@ import classes from "./SnackbarItem.module.scss";
6
22
  import readyclasses from "../../../readyclasses.module.scss";
7
23
  import { useAnimation } from "../../../hooks/useAnimation";
8
24
  import { Typography } from "../../../Typography/Typography";
25
+ import { SnackbarContext } from "../SnackbarProvider/SnackbarStateProvider";
9
26
 
10
27
  const textColor = "var(--snackbar-text-color)";
11
28
 
@@ -20,6 +37,19 @@ export interface Props {
20
37
  actions?: Actions;
21
38
  }
22
39
 
40
+ const useRegisterSnackbarHeight = (
41
+ singleSnackbarRef: React.RefObject<HTMLDivElement>,
42
+ snackbarId: string
43
+ ) => {
44
+ const ctx = useContext(SnackbarContext);
45
+
46
+ useEffect(() => {
47
+ if (singleSnackbarRef.current) {
48
+ ctx.setSnackbarHeight(snackbarId, singleSnackbarRef.current.getBoundingClientRect().height);
49
+ }
50
+ }, [singleSnackbarRef.current]);
51
+ };
52
+
23
53
  export const SnackbarItem = ({
24
54
  id,
25
55
  title,
@@ -34,6 +64,8 @@ export const SnackbarItem = ({
34
64
  const onAnimationEnd = () => onClose(id);
35
65
  const { ref, animationStarted, startAnimation } = useAnimation<HTMLDivElement>(onAnimationEnd);
36
66
 
67
+ useRegisterSnackbarHeight(ref, id);
68
+
37
69
  useEffect(() => {
38
70
  timerHandler.current = setTimeout(() => startAnimation(), duration);
39
71
  return () => {
@@ -72,6 +104,7 @@ export const SnackbarItem = ({
72
104
  return (
73
105
  <div
74
106
  ref={ref}
107
+ aria-live="polite"
75
108
  className={`${classes["snackbar"]} ${classes[variant]} ${
76
109
  animationStarted ? readyclasses["slide-out"] : readyclasses["slide-in"]
77
110
  }`}
@@ -1,3 +1,19 @@
1
+ /*
2
+ * Copyright 2022 OneWelcome B.V.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
1
17
  import React, { useEffect, useState } from "react";
2
18
  import {
3
19
  render,
@@ -164,8 +180,8 @@ describe("handlers", () => {
164
180
  const parentErrorSnackbar = errorSnackbar.closest(".snackbar")!;
165
181
  const parentSuccessSnackbar = successSnackbar.closest(".snackbar")!;
166
182
 
167
- await fireEvent.animationEnd(parentErrorSnackbar);
168
- await fireEvent.animationEnd(parentSuccessSnackbar);
183
+ fireEvent.animationEnd(parentErrorSnackbar);
184
+ fireEvent.animationEnd(parentSuccessSnackbar);
169
185
 
170
186
  await waitFor(() => expect(onCloseHandler).toHaveBeenCalledTimes(2));
171
187
  });