@onewelcome/react-lib-components 5.2.0 → 6.1.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 (255) hide show
  1. package/dist/cjs/Button/BaseButton.cjs.js.map +1 -1
  2. package/dist/cjs/Button/BaseButton.module.cjs.js +1 -1
  3. package/dist/cjs/Button/Button.module.cjs.js +1 -1
  4. package/dist/cjs/Button/IconButton.module.cjs.js +1 -1
  5. package/dist/cjs/ContextMenu/ContextMenu.cjs.js +1 -1
  6. package/dist/cjs/ContextMenu/ContextMenu.cjs.js.map +1 -1
  7. package/dist/cjs/ContextMenu/ContextMenuItem.module.cjs.js +1 -1
  8. package/dist/cjs/ContextMenu/ContextMenuService.cjs.js +1 -1
  9. package/dist/cjs/ContextMenu/ContextMenuService.cjs.js.map +1 -1
  10. package/dist/cjs/DataGrid/DataGridActions/DataGridColumnsToggle.module.cjs.js +1 -1
  11. package/dist/cjs/Form/Input/Input.module.cjs.js +1 -1
  12. package/dist/cjs/Form/Select/Option.cjs.js +1 -1
  13. package/dist/cjs/Form/Select/Option.cjs.js.map +1 -1
  14. package/dist/cjs/Form/Select/Select.cjs.js +1 -1
  15. package/dist/cjs/Form/Select/Select.cjs.js.map +1 -1
  16. package/dist/cjs/Form/Select/Select.module.cjs.js +1 -1
  17. package/dist/cjs/Form/Select/SelectService.cjs.js +1 -1
  18. package/dist/cjs/Form/Select/SelectService.cjs.js.map +1 -1
  19. package/dist/cjs/Form/Textarea/Textarea.module.cjs.js +1 -1
  20. package/dist/cjs/Icon/Icon.cjs.js +1 -1
  21. package/dist/cjs/Icon/Icon.cjs.js.map +1 -1
  22. package/dist/cjs/Icon/Icon.module.cjs.js +1 -1
  23. package/dist/cjs/Link/Link.cjs.js.map +1 -1
  24. package/dist/cjs/Link/Link.module.cjs.js +1 -1
  25. package/dist/cjs/Notifications/BaseModal/BaseModal.module.cjs.js +1 -1
  26. package/dist/cjs/Notifications/SlideInModal/SlideInModal.module.cjs.js +1 -1
  27. package/dist/cjs/Notifications/Snackbar/SnackbarItem/SnackbarItem.cjs.js +1 -1
  28. package/dist/cjs/Notifications/Snackbar/SnackbarItem/SnackbarItem.cjs.js.map +1 -1
  29. package/dist/cjs/Notifications/Snackbar/SnackbarItem/SnackbarItem.module.cjs.js +1 -1
  30. package/dist/cjs/Notifications/Snackbar/SnackbarProvider/SnackbarProvider.cjs.js +1 -1
  31. package/dist/cjs/Notifications/Snackbar/SnackbarProvider/SnackbarProvider.cjs.js.map +1 -1
  32. package/dist/cjs/Notifications/Snackbar/SnackbarProvider/SnackbarStateProvider.cjs.js.map +1 -1
  33. package/dist/cjs/Notifications/Snackbar/interfaces.cjs.js +2 -0
  34. package/dist/cjs/Notifications/Snackbar/interfaces.cjs.js.map +1 -0
  35. package/dist/cjs/Popover/Popover.cjs.js +1 -1
  36. package/dist/cjs/Popover/Popover.cjs.js.map +1 -1
  37. package/dist/cjs/Popover/Popover.module.cjs.js +1 -1
  38. package/dist/cjs/Stepper/Step.cjs.js +1 -1
  39. package/dist/cjs/Stepper/Step.cjs.js.map +1 -1
  40. package/dist/cjs/Stepper/Step.module.cjs.js +1 -1
  41. package/dist/cjs/Stepper/Stepper.cjs.js +1 -1
  42. package/dist/cjs/Stepper/Stepper.cjs.js.map +1 -1
  43. package/dist/cjs/Tabs/TabButton.module.cjs.js +1 -1
  44. package/dist/cjs/TextEllipsis/TextEllipsis.module.cjs.js +1 -1
  45. package/dist/cjs/Tiles/Tile.module.cjs.js +1 -1
  46. package/dist/cjs/Tooltip/Tooltip.module.cjs.js +1 -1
  47. package/dist/cjs/Wizard/BaseWizardSteps/BaseWizardSteps.module.cjs.js +1 -1
  48. package/dist/cjs/_BaseStyling_/BaseStyling.cjs.js +1 -1
  49. package/dist/cjs/_BaseStyling_/BaseStyling.cjs.js.map +1 -1
  50. package/dist/cjs/src/.scope.d.ts +2 -0
  51. package/dist/cjs/src/components/Button/BaseButton.d.ts +1 -1
  52. package/dist/cjs/src/components/ContextMenu/ContextMenu.d.ts +1 -1
  53. package/dist/cjs/src/components/ContextMenu/ContextMenuService.d.ts +4 -1
  54. package/dist/cjs/src/components/Form/Select/Option.d.ts +1 -0
  55. package/dist/cjs/src/components/Form/Select/Select.d.ts +20 -0
  56. package/dist/cjs/src/components/Form/Select/Select.interfaces.d.ts +3 -1
  57. package/dist/cjs/src/components/Form/Select/Select.test.d.ts +63 -1
  58. package/dist/cjs/src/components/Form/Select/SelectKeyboardNavigation.test.d.ts +1 -0
  59. package/dist/cjs/src/components/Form/Select/SelectService.d.ts +3 -2
  60. package/dist/cjs/src/components/Icon/Icon.d.ts +4 -1
  61. package/dist/cjs/src/components/Link/Link.d.ts +1 -1
  62. package/dist/cjs/src/components/Notifications/Snackbar/SnackbarProvider/SnackbarStateProvider.d.ts +5 -5
  63. package/dist/cjs/src/components/Notifications/Snackbar/interfaces.d.ts +6 -0
  64. package/dist/cjs/src/components/Notifications/Snackbar/useSnackbar.d.ts +4 -4
  65. package/dist/cjs/src/components/Notifications/Snackbar/useSnackbar.test.d.ts +1 -0
  66. package/dist/cjs/src/components/Stepper/Stepper.d.ts +0 -1
  67. package/dist/cjs/src/components/_BaseStyling_/BaseStyling.d.ts +11 -10
  68. package/dist/cjs/src/hooks/usePosition.cjs.js.map +1 -1
  69. package/dist/cjs/src/hooks/usePosition.d.ts +1 -1
  70. package/dist/esm/Button/BaseButton.esm.js.map +1 -1
  71. package/dist/esm/Button/BaseButton.module.esm.js +1 -1
  72. package/dist/esm/Button/Button.module.esm.js +1 -1
  73. package/dist/esm/Button/IconButton.module.esm.js +1 -1
  74. package/dist/esm/ContextMenu/ContextMenu.esm.js +1 -1
  75. package/dist/esm/ContextMenu/ContextMenu.esm.js.map +1 -1
  76. package/dist/esm/ContextMenu/ContextMenuItem.module.esm.js +1 -1
  77. package/dist/esm/ContextMenu/ContextMenuService.esm.js +1 -1
  78. package/dist/esm/ContextMenu/ContextMenuService.esm.js.map +1 -1
  79. package/dist/esm/DataGrid/DataGridActions/DataGridColumnsToggle.module.esm.js +1 -1
  80. package/dist/esm/Form/Input/Input.module.esm.js +1 -1
  81. package/dist/esm/Form/Select/Option.esm.js +1 -1
  82. package/dist/esm/Form/Select/Option.esm.js.map +1 -1
  83. package/dist/esm/Form/Select/Select.esm.js +1 -1
  84. package/dist/esm/Form/Select/Select.esm.js.map +1 -1
  85. package/dist/esm/Form/Select/Select.module.esm.js +1 -1
  86. package/dist/esm/Form/Select/SelectService.esm.js +1 -1
  87. package/dist/esm/Form/Select/SelectService.esm.js.map +1 -1
  88. package/dist/esm/Form/Textarea/Textarea.module.esm.js +1 -1
  89. package/dist/esm/Icon/Icon.esm.js +1 -1
  90. package/dist/esm/Icon/Icon.esm.js.map +1 -1
  91. package/dist/esm/Icon/Icon.module.esm.js +1 -1
  92. package/dist/esm/Link/Link.esm.js.map +1 -1
  93. package/dist/esm/Link/Link.module.esm.js +1 -1
  94. package/dist/esm/Notifications/BaseModal/BaseModal.module.esm.js +1 -1
  95. package/dist/esm/Notifications/SlideInModal/SlideInModal.module.esm.js +1 -1
  96. package/dist/esm/Notifications/Snackbar/SnackbarItem/SnackbarItem.esm.js +1 -1
  97. package/dist/esm/Notifications/Snackbar/SnackbarItem/SnackbarItem.esm.js.map +1 -1
  98. package/dist/esm/Notifications/Snackbar/SnackbarItem/SnackbarItem.module.esm.js +1 -1
  99. package/dist/esm/Notifications/Snackbar/SnackbarProvider/SnackbarProvider.esm.js +1 -1
  100. package/dist/esm/Notifications/Snackbar/SnackbarProvider/SnackbarProvider.esm.js.map +1 -1
  101. package/dist/esm/Notifications/Snackbar/SnackbarProvider/SnackbarStateProvider.esm.js.map +1 -1
  102. package/dist/esm/Notifications/Snackbar/interfaces.esm.js +2 -0
  103. package/dist/esm/Notifications/Snackbar/interfaces.esm.js.map +1 -0
  104. package/dist/esm/Popover/Popover.esm.js +1 -1
  105. package/dist/esm/Popover/Popover.esm.js.map +1 -1
  106. package/dist/esm/Popover/Popover.module.esm.js +1 -1
  107. package/dist/esm/Stepper/Step.esm.js +1 -1
  108. package/dist/esm/Stepper/Step.esm.js.map +1 -1
  109. package/dist/esm/Stepper/Step.module.esm.js +1 -1
  110. package/dist/esm/Stepper/Stepper.esm.js +1 -1
  111. package/dist/esm/Stepper/Stepper.esm.js.map +1 -1
  112. package/dist/esm/Tabs/TabButton.module.esm.js +1 -1
  113. package/dist/esm/TextEllipsis/TextEllipsis.module.esm.js +1 -1
  114. package/dist/esm/Tiles/Tile.module.esm.js +1 -1
  115. package/dist/esm/Tooltip/Tooltip.module.esm.js +1 -1
  116. package/dist/esm/Wizard/BaseWizardSteps/BaseWizardSteps.module.esm.js +1 -1
  117. package/dist/esm/_BaseStyling_/BaseStyling.esm.js +1 -1
  118. package/dist/esm/_BaseStyling_/BaseStyling.esm.js.map +1 -1
  119. package/dist/esm/src/.scope.d.ts +2 -0
  120. package/dist/esm/src/components/Button/BaseButton.d.ts +1 -1
  121. package/dist/esm/src/components/ContextMenu/ContextMenu.d.ts +1 -1
  122. package/dist/esm/src/components/ContextMenu/ContextMenuService.d.ts +4 -1
  123. package/dist/esm/src/components/Form/Select/Option.d.ts +1 -0
  124. package/dist/esm/src/components/Form/Select/Select.d.ts +20 -0
  125. package/dist/esm/src/components/Form/Select/Select.interfaces.d.ts +3 -1
  126. package/dist/esm/src/components/Form/Select/Select.test.d.ts +63 -1
  127. package/dist/esm/src/components/Form/Select/SelectKeyboardNavigation.test.d.ts +1 -0
  128. package/dist/esm/src/components/Form/Select/SelectService.d.ts +3 -2
  129. package/dist/esm/src/components/Icon/Icon.d.ts +4 -1
  130. package/dist/esm/src/components/Link/Link.d.ts +1 -1
  131. package/dist/esm/src/components/Notifications/Snackbar/SnackbarProvider/SnackbarStateProvider.d.ts +5 -5
  132. package/dist/esm/src/components/Notifications/Snackbar/interfaces.d.ts +6 -0
  133. package/dist/esm/src/components/Notifications/Snackbar/useSnackbar.d.ts +4 -4
  134. package/dist/esm/src/components/Notifications/Snackbar/useSnackbar.test.d.ts +1 -0
  135. package/dist/esm/src/components/Stepper/Stepper.d.ts +0 -1
  136. package/dist/esm/src/components/_BaseStyling_/BaseStyling.d.ts +11 -10
  137. package/dist/esm/src/hooks/usePosition.d.ts +1 -1
  138. package/dist/esm/src/hooks/usePosition.esm.js.map +1 -1
  139. package/package.json +48 -45
  140. package/src/{hooks/useWrapper.test.ts → .scope.ts} +1 -12
  141. package/src/components/Button/BaseButton.tsx +1 -1
  142. package/src/components/Button/Button.module.scss +2 -10
  143. package/src/components/ContextMenu/ContextMenu.tsx +13 -23
  144. package/src/components/ContextMenu/ContextMenuService.ts +47 -1
  145. package/src/components/Form/Select/Option.tsx +3 -1
  146. package/src/components/Form/Select/Select.interfaces.ts +3 -1
  147. package/src/components/Form/Select/Select.module.scss +55 -34
  148. package/src/components/Form/Select/Select.tsx +74 -23
  149. package/src/components/Form/Select/SelectService.ts +26 -10
  150. package/src/components/Icon/Icon.module.scss +12 -0
  151. package/src/components/Icon/Icon.tsx +4 -1
  152. package/src/components/Link/Link.module.scss +28 -4
  153. package/src/components/Link/Link.tsx +1 -1
  154. package/src/components/Notifications/Snackbar/SnackbarItem/SnackbarItem.module.scss +14 -21
  155. package/src/components/Notifications/Snackbar/SnackbarItem/SnackbarItem.tsx +17 -13
  156. package/src/components/Notifications/Snackbar/SnackbarProvider/SnackbarProvider.tsx +43 -17
  157. package/src/components/Notifications/Snackbar/SnackbarProvider/SnackbarStateProvider.tsx +5 -13
  158. package/src/components/Notifications/Snackbar/interfaces.ts +15 -0
  159. package/src/components/Popover/Popover.tsx +19 -2
  160. package/src/components/Stepper/Step.tsx +2 -1
  161. package/src/components/Stepper/Stepper.tsx +0 -2
  162. package/src/components/Tooltip/Tooltip.module.scss +1 -0
  163. package/src/components/_BaseStyling_/BaseStyling.tsx +24 -22
  164. package/src/font/icomoon.eot +0 -0
  165. package/src/font/icomoon.svg +5 -2
  166. package/src/font/icomoon.ttf +0 -0
  167. package/src/font/icomoon.woff +0 -0
  168. package/src/font/selection.json +1 -1
  169. package/src/hooks/usePosition.ts +1 -1
  170. package/src/interfaces.ts +2 -2
  171. package/src/mixins.module.scss +60 -61
  172. package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +0 -64
  173. package/src/components/Button/BaseButton.test.tsx +0 -133
  174. package/src/components/Button/Button.test.tsx +0 -138
  175. package/src/components/Button/IconButton.test.tsx +0 -122
  176. package/src/components/ContextMenu/ContextMenu.test.tsx +0 -358
  177. package/src/components/DataGrid/DataGrid.test.tsx +0 -437
  178. package/src/components/DataGrid/DataGridActions/DataGridActions.test.tsx +0 -204
  179. package/src/components/DataGrid/DataGridActions/DataGridColumnsToggle.test.tsx +0 -99
  180. package/src/components/DataGrid/DataGridBody/DataGridBody.test.tsx +0 -140
  181. package/src/components/DataGrid/DataGridBody/DataGridCell.test.tsx +0 -90
  182. package/src/components/DataGrid/DataGridBody/DataGridRow.test.tsx +0 -117
  183. package/src/components/DataGrid/DataGridHeader/DataGridHeader.test.tsx +0 -276
  184. package/src/components/DataGrid/DataGridHeader/DataGridHeaderCell.test.tsx +0 -144
  185. package/src/components/Form/Checkbox/Checkbox.test.tsx +0 -308
  186. package/src/components/Form/Fieldset/Fieldset.test.tsx +0 -127
  187. package/src/components/Form/FileUpload/FileItem/FileItem.test.tsx +0 -103
  188. package/src/components/Form/FileUpload/FileUpload.test.tsx +0 -374
  189. package/src/components/Form/Form.test.tsx +0 -63
  190. package/src/components/Form/FormControl/FormControl.test.tsx +0 -98
  191. package/src/components/Form/FormGroup/FormGroup.test.tsx +0 -127
  192. package/src/components/Form/FormHelperText/FormHelperText.test.tsx +0 -84
  193. package/src/components/Form/FormSelectorWrapper/FormSelectorWrapper.test.tsx +0 -94
  194. package/src/components/Form/Input/Input.test.tsx +0 -267
  195. package/src/components/Form/Label/Label.test.tsx +0 -68
  196. package/src/components/Form/Radio/Radio.test.tsx +0 -130
  197. package/src/components/Form/Select/Option.test.tsx +0 -57
  198. package/src/components/Form/Select/Select.test.tsx +0 -564
  199. package/src/components/Form/Textarea/Textarea.test.tsx +0 -124
  200. package/src/components/Form/Toggle/Toggle.test.tsx +0 -200
  201. package/src/components/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.test.tsx +0 -141
  202. package/src/components/Form/Wrapper/InputWrapper/InputWrapper.test.tsx +0 -211
  203. package/src/components/Form/Wrapper/RadioWrapper/RadioWrapper.test.tsx +0 -117
  204. package/src/components/Form/Wrapper/SelectWrapper/SelectWrapper.test.tsx +0 -186
  205. package/src/components/Form/Wrapper/TextareaWrapper/TextareaWrapper.test.tsx +0 -173
  206. package/src/components/Form/Wrapper/Wrapper/Wrapper.test.tsx +0 -59
  207. package/src/components/Icon/Icon.test.tsx +0 -83
  208. package/src/components/Link/Link.test.tsx +0 -197
  209. package/src/components/Notifications/Banner/Banner.test.tsx +0 -84
  210. package/src/components/Notifications/BaseModal/BaseModal.test.tsx +0 -194
  211. package/src/components/Notifications/BaseModal/BaseModalActions/BaseModalActions.test.tsx +0 -74
  212. package/src/components/Notifications/BaseModal/BaseModalContent/BaseModalContent.test.tsx +0 -71
  213. package/src/components/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.test.tsx +0 -74
  214. package/src/components/Notifications/Dialog/Dialog.test.tsx +0 -118
  215. package/src/components/Notifications/Dialog/DialogActions/DialogActions.test.tsx +0 -61
  216. package/src/components/Notifications/Dialog/DialogTitle/DialogTitle.test.tsx +0 -87
  217. package/src/components/Notifications/DiscardChangesModal/DiscardChangesDialog/DiscardChangesDialog.test.tsx +0 -111
  218. package/src/components/Notifications/DiscardChangesModal/DiscardChangesModal.test.tsx +0 -175
  219. package/src/components/Notifications/Modal/Modal.test.tsx +0 -18
  220. package/src/components/Notifications/NotificationProvider/NotificationContext.test.tsx +0 -449
  221. package/src/components/Notifications/SlideInModal/SlideInModal.test.tsx +0 -90
  222. package/src/components/Notifications/Snackbar/SnackbarContainer/SnackbarContainer.test.tsx +0 -53
  223. package/src/components/Notifications/Snackbar/SnackbarItem/SnackbarItem.test.tsx +0 -63
  224. package/src/components/Notifications/Snackbar/SnackbarProvider/SnackbarProvider.test.tsx +0 -215
  225. package/src/components/Pagination/Pagination.test.tsx +0 -183
  226. package/src/components/Popover/Popover.test.tsx +0 -103
  227. package/src/components/ProgressBar/ProgressBar.test.tsx +0 -91
  228. package/src/components/Skeleton/Skeleton.test.tsx +0 -112
  229. package/src/components/StatusIndicator/StatusIndicator.test.tsx +0 -143
  230. package/src/components/Stepper/Stepper.test.tsx +0 -83
  231. package/src/components/Tabs/Tab.test.tsx +0 -49
  232. package/src/components/Tabs/TabButton.test.tsx +0 -65
  233. package/src/components/Tabs/Tabs.test.tsx +0 -291
  234. package/src/components/Tag/Tag.test.tsx +0 -89
  235. package/src/components/TextEllipsis/TextEllipsis.test.tsx +0 -96
  236. package/src/components/Tiles/Tile.test.tsx +0 -183
  237. package/src/components/Tiles/Tiles.test.tsx +0 -162
  238. package/src/components/Tooltip/Tooltip.test.tsx +0 -390
  239. package/src/components/Typography/Typography.test.tsx +0 -177
  240. package/src/components/Wizard/BaseWizardSteps/BaseWizardSteps.test.tsx +0 -90
  241. package/src/components/Wizard/Wizard.test.tsx +0 -218
  242. package/src/components/Wizard/WizardActions/WizardActions.test.tsx +0 -187
  243. package/src/components/Wizard/WizardSteps/WizardSteps.test.tsx +0 -125
  244. package/src/components/_BaseStyling_/BaseStyling.test.tsx +0 -55
  245. package/src/hooks/useAnimation.test.tsx +0 -65
  246. package/src/hooks/useBodyClick.test.tsx +0 -55
  247. package/src/hooks/useDebouncedCallback.test.ts +0 -150
  248. package/src/hooks/useDetermineStatusIcon.test.ts +0 -28
  249. package/src/hooks/useFormSelector.test.ts +0 -56
  250. package/src/hooks/usePosition.test.tsx +0 -510
  251. package/src/hooks/useRepeater.test.tsx +0 -156
  252. package/src/hooks/useScroll.test.tsx +0 -36
  253. package/src/hooks/useSpacing.test.ts +0 -86
  254. package/src/hooks/useUploadFile.test.ts +0 -211
  255. package/src/util/helper.test.tsx +0 -403
@@ -1 +1,63 @@
1
- export {};
1
+ import React from "react";
2
+ import { Props } from "./Select";
3
+ export declare const defaultParams: Props;
4
+ export declare const createSelect: (params?: ((defaultParams: Props) => Props) | undefined) => {
5
+ select: HTMLElement;
6
+ button: HTMLElement;
7
+ list: Element | null;
8
+ dropdownWrapper: Element | null;
9
+ container: HTMLElement;
10
+ baseElement: HTMLElement;
11
+ debug: (baseElement?: Element | DocumentFragment | (Element | DocumentFragment)[] | undefined, maxLength?: number | undefined, options?: import("pretty-format").PrettyFormatOptions | undefined) => void;
12
+ rerender: (ui: React.ReactElement<any, string | React.JSXElementConstructor<any>>) => void;
13
+ unmount: () => void;
14
+ asFragment: () => DocumentFragment;
15
+ getByLabelText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").SelectorMatcherOptions | undefined) => HTMLElement;
16
+ getAllByLabelText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").SelectorMatcherOptions | undefined) => HTMLElement[];
17
+ queryByLabelText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").SelectorMatcherOptions | undefined) => HTMLElement | null;
18
+ queryAllByLabelText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").SelectorMatcherOptions | undefined) => HTMLElement[];
19
+ findByLabelText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").SelectorMatcherOptions | undefined, waitForElementOptions?: import("@testing-library/react").waitForOptions | undefined) => Promise<HTMLElement>;
20
+ findAllByLabelText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").SelectorMatcherOptions | undefined, waitForElementOptions?: import("@testing-library/react").waitForOptions | undefined) => Promise<HTMLElement[]>;
21
+ getByPlaceholderText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement;
22
+ getAllByPlaceholderText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement[];
23
+ queryByPlaceholderText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement | null;
24
+ queryAllByPlaceholderText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement[];
25
+ findByPlaceholderText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/react").waitForOptions | undefined) => Promise<HTMLElement>;
26
+ findAllByPlaceholderText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/react").waitForOptions | undefined) => Promise<HTMLElement[]>;
27
+ getByText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").SelectorMatcherOptions | undefined) => HTMLElement;
28
+ getAllByText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").SelectorMatcherOptions | undefined) => HTMLElement[];
29
+ queryByText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").SelectorMatcherOptions | undefined) => HTMLElement | null;
30
+ queryAllByText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").SelectorMatcherOptions | undefined) => HTMLElement[];
31
+ findByText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").SelectorMatcherOptions | undefined, waitForElementOptions?: import("@testing-library/react").waitForOptions | undefined) => Promise<HTMLElement>;
32
+ findAllByText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").SelectorMatcherOptions | undefined, waitForElementOptions?: import("@testing-library/react").waitForOptions | undefined) => Promise<HTMLElement[]>;
33
+ getByAltText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement;
34
+ getAllByAltText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement[];
35
+ queryByAltText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement | null;
36
+ queryAllByAltText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement[];
37
+ findByAltText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/react").waitForOptions | undefined) => Promise<HTMLElement>;
38
+ findAllByAltText: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/react").waitForOptions | undefined) => Promise<HTMLElement[]>;
39
+ getByTitle: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement;
40
+ getAllByTitle: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement[];
41
+ queryByTitle: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement | null;
42
+ queryAllByTitle: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement[];
43
+ findByTitle: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/react").waitForOptions | undefined) => Promise<HTMLElement>;
44
+ findAllByTitle: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/react").waitForOptions | undefined) => Promise<HTMLElement[]>;
45
+ getByDisplayValue: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement;
46
+ getAllByDisplayValue: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement[];
47
+ queryByDisplayValue: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement | null;
48
+ queryAllByDisplayValue: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement[];
49
+ findByDisplayValue: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/react").waitForOptions | undefined) => Promise<HTMLElement>;
50
+ findAllByDisplayValue: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/react").waitForOptions | undefined) => Promise<HTMLElement[]>;
51
+ getByRole: (role: import("@testing-library/react").ByRoleMatcher, options?: import("@testing-library/react").ByRoleOptions | undefined) => HTMLElement;
52
+ getAllByRole: (role: import("@testing-library/react").ByRoleMatcher, options?: import("@testing-library/react").ByRoleOptions | undefined) => HTMLElement[];
53
+ queryByRole: (role: import("@testing-library/react").ByRoleMatcher, options?: import("@testing-library/react").ByRoleOptions | undefined) => HTMLElement | null;
54
+ queryAllByRole: (role: import("@testing-library/react").ByRoleMatcher, options?: import("@testing-library/react").ByRoleOptions | undefined) => HTMLElement[];
55
+ findByRole: (role: import("@testing-library/react").ByRoleMatcher, options?: import("@testing-library/react").ByRoleOptions | undefined, waitForElementOptions?: import("@testing-library/react").waitForOptions | undefined) => Promise<HTMLElement>;
56
+ findAllByRole: (role: import("@testing-library/react").ByRoleMatcher, options?: import("@testing-library/react").ByRoleOptions | undefined, waitForElementOptions?: import("@testing-library/react").waitForOptions | undefined) => Promise<HTMLElement[]>;
57
+ getByTestId: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement;
58
+ getAllByTestId: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement[];
59
+ queryByTestId: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement | null;
60
+ queryAllByTestId: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined) => HTMLElement[];
61
+ findByTestId: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/react").waitForOptions | undefined) => Promise<HTMLElement>;
62
+ findAllByTestId: (id: import("@testing-library/react").Matcher, options?: import("@testing-library/react").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/react").waitForOptions | undefined) => Promise<HTMLElement[]>;
63
+ };
@@ -1,9 +1,10 @@
1
1
  import React from "react";
2
2
  import { Position, UseArrowNavigationParams, UseSelectPositionListParams } from "./Select.interfaces";
3
- export declare const useArrowNavigation: ({ expanded, setExpanded, isSearching, setIsSearching, setFocusedSelectItem, onOptionChangeHandler, childrenCount, setShouldClick, searchInputRef, renderSearchCondition }: UseArrowNavigationParams) => {
3
+ /** @scope . */
4
+ export declare const useArrowNavigation: ({ expanded, setExpanded, isSearching, setIsSearching, setFocusedSelectItem, onOptionChangeHandler, childrenCount, setShouldClick, searchInputRef, addBtnRef, renderThreshold }: UseArrowNavigationParams) => {
4
5
  onArrowNavigation: (event: React.KeyboardEvent) => void;
5
6
  };
6
- export declare const useSelectPositionList: ({ expanded, optionListReference, containerReference }: UseSelectPositionListParams) => {
7
+ export declare const useSelectPositionList: ({ expanded, optionListReference, addBtnRef, containerReference }: UseSelectPositionListParams) => {
7
8
  optionsListMaxHeight: string;
8
9
  opacity: number;
9
10
  setOpacity: React.Dispatch<React.SetStateAction<number>>;
@@ -69,7 +69,10 @@ export declare enum Icons {
69
69
  Warning = "warning",
70
70
  FileOutline = "file-outline",
71
71
  FileUpload = "file-upload-outline",
72
- FileDownload = "file-download-outline"
72
+ FileDownload = "file-download-outline",
73
+ UploadOutline = "upload-outline",
74
+ ReplyOutline = "reply-outline",
75
+ SaveOutline = "save-outline"
73
76
  }
74
77
  type Tag = "span" | "div" | "i";
75
78
  export interface Props extends ComponentPropsWithRef<"div"> {
@@ -3,7 +3,7 @@ import { IconProps, Icon } from "../../index";
3
3
  export type AnchorType = "external" | "internal" | "download";
4
4
  export interface Props extends ComponentPropsWithRef<"a"> {
5
5
  prefixIcon?: ReactElement<IconProps, typeof Icon>;
6
- color?: "primary" | "secondary" | "tertiary";
6
+ color?: "primary" | "success" | "danger" | "warning";
7
7
  display?: "link" | "button";
8
8
  buttonVariant?: "outline" | "text" | "fill";
9
9
  type?: AnchorType;
@@ -1,11 +1,11 @@
1
1
  import React from "react";
2
- import { SnackbarOptionsProps } from "../interfaces";
2
+ import { DeprecatedEnqueueSnackbarType } from "../interfaces";
3
3
  import { Item } from "./SnackbarProvider";
4
4
  interface SnackbarContextProps {
5
- enqueueSnackbar: (title?: string, content?: string, options?: SnackbarOptionsProps) => void;
6
- enqueueSuccessSnackbar: (title?: string, content?: string, options?: SnackbarOptionsProps) => void;
7
- enqueueWarningSnackbar: (title?: string, content?: string, options?: SnackbarOptionsProps) => void;
8
- enqueueErrorSnackbar: (title?: string, content?: string, options?: SnackbarOptionsProps) => void;
5
+ enqueueSnackbar: DeprecatedEnqueueSnackbarType;
6
+ enqueueSuccessSnackbar: DeprecatedEnqueueSnackbarType;
7
+ enqueueWarningSnackbar: DeprecatedEnqueueSnackbarType;
8
+ enqueueErrorSnackbar: DeprecatedEnqueueSnackbarType;
9
9
  setSnackbarHeight: (id: string, height: number) => void;
10
10
  snackbars: Item[];
11
11
  }
@@ -10,3 +10,9 @@ export interface SnackbarOptionsProps {
10
10
  duration?: number;
11
11
  onClose?: () => void;
12
12
  }
13
+ export interface EnqueueSnackbarProps extends SnackbarOptionsProps {
14
+ title?: string;
15
+ content?: string;
16
+ }
17
+ export type DeprecatedEnqueueSnackbarType = (propsOrTitle: EnqueueSnackbarProps | string | undefined, content?: string, options?: SnackbarOptionsProps) => void;
18
+ export declare function isNewEnqueueSnackbarInterface(args: unknown): args is EnqueueSnackbarProps;
@@ -1,6 +1,6 @@
1
1
  export declare const useSnackbar: () => {
2
- enqueueWarningSnackbar: (title?: string | undefined, content?: string | undefined, options?: import("./interfaces").SnackbarOptionsProps | undefined) => void;
3
- enqueueErrorSnackbar: (title?: string | undefined, content?: string | undefined, options?: import("./interfaces").SnackbarOptionsProps | undefined) => void;
4
- enqueueSuccessSnackbar: (title?: string | undefined, content?: string | undefined, options?: import("./interfaces").SnackbarOptionsProps | undefined) => void;
5
- enqueueSnackbar: (title?: string | undefined, content?: string | undefined, options?: import("./interfaces").SnackbarOptionsProps | undefined) => void;
2
+ enqueueWarningSnackbar: import("./interfaces").DeprecatedEnqueueSnackbarType;
3
+ enqueueErrorSnackbar: import("./interfaces").DeprecatedEnqueueSnackbarType;
4
+ enqueueSuccessSnackbar: import("./interfaces").DeprecatedEnqueueSnackbarType;
5
+ enqueueSnackbar: import("./interfaces").DeprecatedEnqueueSnackbarType;
6
6
  };
@@ -5,5 +5,4 @@ export interface Props extends ComponentPropsWithRef<"div"> {
5
5
  direction: "horizontal" | "vertical";
6
6
  textPosition?: "bottom" | "right";
7
7
  }
8
- export declare const gapBetweenStepsInRem = 0.5;
9
8
  export declare const Stepper: ({ steps, direction, textPosition, className, ...rest }: Props) => React.JSX.Element;
@@ -6,8 +6,9 @@ import React, { HTMLAttributes, ReactElement } from "react";
6
6
  interface CSSProperties {
7
7
  colorFocus?: string;
8
8
  colorPrimary?: string;
9
- colorSecondary?: string;
10
- colorTertiary?: string;
9
+ colorSuccess?: string;
10
+ colorWarning?: string;
11
+ colorDanger?: string;
11
12
  colorPrimary100?: string;
12
13
  colorPrimary300?: string;
13
14
  colorPrimary500?: string;
@@ -58,18 +59,18 @@ interface CSSProperties {
58
59
  buttonPrimaryHoverColor?: string;
59
60
  buttonPrimaryFocusedColor?: string;
60
61
  buttonOutlineHoverTextColor?: string;
61
- buttonSecondaryDefaultColor?: string;
62
- buttonSecondaryHoverColor?: string;
63
- buttonSecondaryFocusedColor?: string;
64
- buttonSecondaryPressedColor?: string;
65
- buttonWarningDefaultColor?: string;
66
- buttonWarningHoverColor?: string;
67
- buttonWarningFocusedColor?: string;
68
- buttonWarningPressedColor?: string;
62
+ buttonSuccessDefaultColor?: string;
63
+ buttonSuccessHoverColor?: string;
64
+ buttonSuccessFocusedColor?: string;
65
+ buttonSuccessPressedColor?: string;
69
66
  buttonDangerDefaultColor?: string;
70
67
  buttonDangerHoverColor?: string;
71
68
  buttonDangerFocusedColor?: string;
72
69
  buttonDangerPressedColor?: string;
70
+ buttonWarningDefaultColor?: string;
71
+ buttonWarningHoverColor?: string;
72
+ buttonWarningFocusedColor?: string;
73
+ buttonWarningPressedColor?: string;
73
74
  buttonDefaultColor?: string;
74
75
  buttonDefaultHoverColor?: string;
75
76
  buttonDefaultFocusedColor?: string;
@@ -38,7 +38,7 @@ export interface Position {
38
38
  bottom: PositionType;
39
39
  left: PositionType;
40
40
  }
41
- type PositionType = number | "initial";
41
+ export type PositionType = number | "initial";
42
42
  export declare const usePosition: (providedConfigObject?: ConfigObject) => {
43
43
  top: PositionType;
44
44
  bottom: PositionType;
@@ -1 +1 @@
1
- {"version":3,"file":"usePosition.esm.js","sources":["../../../../../../src/hooks/usePosition.ts"],"sourcesContent":["/*\n * Copyright 2022 OneWelcome B.V.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useState } from \"react\";\nimport { useDebouncedCallback } from \"./useDebouncedCallback\";\n\nexport interface ConfigObject {\n relativeElement: RefElement;\n elementToBePositioned: RefElement;\n transformOrigin?: Placement;\n placement?: Placement;\n offset?: Offset;\n debounceAmount?: number;\n}\n\nexport enum horizontal {\n LEFT = \"left\",\n CENTER = \"center\",\n CENTER_H = \"centerh\",\n RIGHT = \"right\"\n}\n\nexport enum vertical {\n TOP = \"top\",\n CENTER = \"center\",\n CENTER_V = \"centerv\",\n BOTTOM = \"bottom\"\n}\n\nexport type HorizontalPlacement = `${horizontal}`;\nexport type VerticalPlacement = `${vertical}`;\n\ntype Axis = \"vertical\" | \"horizontal\";\ntype RefElement = React.RefObject<HTMLOrSVGElement> | undefined;\n\ninterface DomRectObject {\n top: number;\n right: number;\n bottom: number;\n left: number;\n center: number;\n centerh: number;\n centerv: number;\n width: number;\n height: number;\n x: number;\n y: number;\n}\n\nexport interface Placement {\n horizontal: HorizontalPlacement;\n vertical: VerticalPlacement;\n}\n\nexport interface Offset {\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\nexport interface Position {\n top: PositionType;\n right: PositionType;\n bottom: PositionType;\n left: PositionType;\n}\n\ninterface Dimensions {\n height: number;\n width: number;\n}\n\ntype PositionType = number | \"initial\";\n\nconst defaultConfigObject: ConfigObject = {\n relativeElement: undefined,\n elementToBePositioned: undefined,\n transformOrigin: {\n horizontal: \"left\",\n vertical: \"top\"\n },\n placement: {\n horizontal: \"left\",\n vertical: \"top\"\n },\n offset: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n debounceAmount: 20\n};\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion, @typescript-eslint/no-non-null-asserted-optional-chain*/\nexport const usePosition = (providedConfigObject: ConfigObject = defaultConfigObject) => {\n const configObject = { ...defaultConfigObject, ...providedConfigObject };\n const [initialCalculationDone, setInitialCalculationDone] = useState(false);\n\n if (configObject.transformOrigin === undefined) {\n configObject.transformOrigin = defaultConfigObject.transformOrigin;\n }\n\n if (configObject.placement === undefined) {\n configObject.placement = defaultConfigObject.placement;\n }\n\n if (configObject.offset === undefined) {\n configObject.offset = defaultConfigObject.offset;\n }\n\n const [position, setPosition] = useState<Position>({\n left: 0,\n top: 0,\n right: \"initial\",\n bottom: \"initial\"\n });\n\n const _fixPossibleViewportOverflow = (\n value: number,\n transformOrigin: Placement,\n requestedReturnValue: Axis,\n elDimensions: Dimensions\n ) => {\n let returnValue = value;\n\n if (\n (transformOrigin[requestedReturnValue] === \"left\" && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === \"top\" && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === \"center\" && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === \"bottom\" && returnValue < 0)\n ) {\n returnValue = 0;\n }\n\n if (\n (transformOrigin[requestedReturnValue] === \"left\" &&\n returnValue > window.innerWidth - elDimensions.width) ||\n (transformOrigin[requestedReturnValue] === \"center\" &&\n requestedReturnValue === \"horizontal\" &&\n returnValue > window.innerWidth - elDimensions.width)\n ) {\n returnValue = window.innerWidth - elDimensions.width;\n }\n\n if (\n (transformOrigin[requestedReturnValue] === \"top\" &&\n returnValue > window.innerHeight - elDimensions.height) ||\n (transformOrigin[requestedReturnValue] === \"center\" &&\n requestedReturnValue === \"vertical\" &&\n returnValue > window.innerHeight - elDimensions.height)\n ) {\n returnValue = window.innerHeight - elDimensions.height;\n }\n\n if (\n transformOrigin[requestedReturnValue] === \"right\" &&\n returnValue > window.innerWidth - elDimensions.width\n ) {\n returnValue = window.innerWidth - elDimensions.width;\n }\n\n if (\n transformOrigin[requestedReturnValue] === \"bottom\" &&\n returnValue > window.innerHeight - elDimensions.height\n ) {\n returnValue = window.innerHeight - elDimensions.height;\n }\n\n return returnValue;\n };\n\n const _applyOffsetToPlacementValue = (\n value: number,\n requestedReturnValue: Axis,\n transformOrigin: Placement\n ) => {\n let returnValue = value;\n if (\n (requestedReturnValue === \"horizontal\" && configObject.offset?.left !== 0) ||\n (requestedReturnValue === \"horizontal\" && configObject.offset?.right !== 0)\n ) {\n if (\n transformOrigin[requestedReturnValue] === \"left\" ||\n transformOrigin[requestedReturnValue] === \"center\"\n ) {\n returnValue += configObject.offset?.left!;\n returnValue -= configObject.offset?.right!;\n }\n\n if (transformOrigin[requestedReturnValue] === \"right\") {\n returnValue -= configObject.offset?.left!;\n returnValue += configObject.offset?.right!;\n }\n }\n\n if (\n (requestedReturnValue === \"vertical\" && configObject.offset?.top !== 0) ||\n (requestedReturnValue === \"vertical\" && configObject.offset?.bottom !== 0)\n ) {\n if (\n transformOrigin[requestedReturnValue] === \"top\" ||\n transformOrigin[requestedReturnValue] === \"center\"\n ) {\n returnValue += configObject.offset?.top!;\n returnValue -= configObject.offset?.bottom!;\n }\n\n if (transformOrigin[requestedReturnValue] === \"bottom\") {\n returnValue -= configObject.offset?.top!;\n returnValue += configObject.offset?.bottom!;\n }\n }\n\n return returnValue;\n };\n\n const _calculateInitialPlacementValue = (\n transformOrigin: Placement,\n requestedReturnValue: Axis,\n relEl: DomRectObject,\n placementOriginDefinition: HorizontalPlacement | VerticalPlacement,\n elDimensions: Dimensions\n ) => {\n let value = 0;\n\n if (\n transformOrigin[requestedReturnValue] === \"left\" ||\n transformOrigin[requestedReturnValue] === \"top\"\n ) {\n value = relEl[placementOriginDefinition];\n } else if (transformOrigin[requestedReturnValue] === \"center\") {\n value =\n relEl[placementOriginDefinition] -\n elDimensions[requestedReturnValue === \"horizontal\" ? \"width\" : \"height\"] / 2;\n } else if (\n transformOrigin[requestedReturnValue] === \"right\" ||\n transformOrigin[requestedReturnValue] === \"bottom\"\n ) {\n value =\n window[requestedReturnValue === \"horizontal\" ? \"innerWidth\" : \"innerHeight\"] -\n relEl[placementOriginDefinition];\n }\n\n return value;\n };\n\n /**\n *\n * @param requestedReturnValue whether the requested return value is for the horizontal or vertical axis\n * @returns either the horizontally centered placement definition (centerh) or the vertically centered one (centerv)\n */\n const _determineCenteredPlacementOrigin = (requestedReturnValue: Axis) => {\n if (requestedReturnValue === \"horizontal\") {\n return \"centerh\";\n } else if (requestedReturnValue === \"vertical\") {\n return \"centerv\";\n }\n throw new Error(\n `the requested return value isn't \"vertical\" or \"horizontal\" ${requestedReturnValue} was given.`\n );\n };\n\n const _calculatePlacementValue = (\n transformOrigin: Placement,\n placement: HorizontalPlacement | VerticalPlacement,\n requestedReturnValue: Axis,\n relEl: DomRectObject,\n elDimensions: Dimensions\n ): number => {\n const placementOriginDefinition =\n placement === \"center\" ? _determineCenteredPlacementOrigin(requestedReturnValue) : placement;\n\n const value = _calculateInitialPlacementValue(\n transformOrigin,\n requestedReturnValue,\n relEl,\n placementOriginDefinition,\n elDimensions\n );\n\n const valueWithOffset = _applyOffsetToPlacementValue(\n value,\n requestedReturnValue,\n transformOrigin\n );\n\n const valueCorrectionForViewportOverflow = _fixPossibleViewportOverflow(\n valueWithOffset,\n transformOrigin,\n requestedReturnValue,\n elDimensions\n );\n\n return valueCorrectionForViewportOverflow;\n };\n\n const _calculatePlacement = (relEl: DomRectObject, elDimensions: Dimensions, axis: Axis) => {\n const placementValue = _calculatePlacementValue(\n configObject.transformOrigin!,\n configObject.placement![axis]!,\n axis,\n relEl,\n elDimensions\n );\n\n let direction = \"left\";\n let oppositeDirection = \"right\";\n\n if (axis === \"horizontal\" && configObject.transformOrigin?.horizontal === \"right\") {\n direction = \"right\";\n oppositeDirection = \"left\";\n } else if (axis === \"horizontal\") {\n direction = \"left\";\n oppositeDirection = \"right\";\n }\n\n if (axis === \"vertical\" && configObject.transformOrigin?.vertical === \"bottom\") {\n direction = \"bottom\";\n oppositeDirection = \"top\";\n } else if (axis === \"vertical\") {\n direction = \"top\";\n oppositeDirection = \"bottom\";\n }\n\n setPosition(prevState => ({\n ...prevState,\n [direction]: placementValue,\n [oppositeDirection]: \"initial\"\n }));\n };\n\n const calculatePosition = useDebouncedCallback(() => {\n if (!configObject.relativeElement?.current || !configObject.elementToBePositioned?.current)\n return;\n const relativeElRect = (configObject.relativeElement!\n .current as HTMLElement)!.getBoundingClientRect();\n const elementToBePositionedDimensions: Dimensions = {\n height: (configObject.elementToBePositioned!.current as HTMLElement).offsetHeight,\n width: (configObject.elementToBePositioned!.current as HTMLElement).offsetWidth\n };\n\n /** We want to add a center (horizontal and vertical) property to the DOMRect object. Since it's a special object we can't modify so we clone it and add it. */\n const clonedRelEl = {\n top: relativeElRect.top,\n right: relativeElRect.right,\n bottom: relativeElRect.bottom,\n center: 0,\n centerv: relativeElRect.top + relativeElRect.height / 2,\n centerh: relativeElRect.left + relativeElRect.width / 2,\n left: relativeElRect.left,\n width: relativeElRect.width,\n height: relativeElRect.height,\n x: relativeElRect.x,\n y: relativeElRect.y\n };\n\n _calculatePlacement(clonedRelEl, elementToBePositionedDimensions, \"horizontal\");\n _calculatePlacement(clonedRelEl, elementToBePositionedDimensions, \"vertical\");\n\n if (!initialCalculationDone) {\n setInitialCalculationDone(true);\n }\n }, configObject.debounceAmount ?? 20);\n\n return {\n top: position.top,\n bottom: position.bottom,\n left: position.left,\n right: position.right,\n calculatePosition,\n initialCalculationDone\n };\n};\n"],"names":["horizontal","vertical","defaultConfigObject","relativeElement","undefined","elementToBePositioned","transformOrigin","placement","offset","top","right","bottom","left","debounceAmount","usePosition","providedConfigObject","configObject","initialCalculationDone","setInitialCalculationDone","useState","position","setPosition","_fixPossibleViewportOverflow","value","requestedReturnValue","elDimensions","returnValue","window","innerWidth","width","innerHeight","height","_applyOffsetToPlacementValue","_a","_b","_c","_d","_e","_f","_g","_h","_j","_k","_l","_m","_calculateInitialPlacementValue","relEl","placementOriginDefinition","_determineCenteredPlacementOrigin","Error","_calculatePlacementValue","valueWithOffset","valueCorrectionForViewportOverflow","_calculatePlacement","axis","placementValue","direction","oppositeDirection","prevState","calculatePosition","useDebouncedCallback","current","relativeElRect","getBoundingClientRect","elementToBePositionedDimensions","offsetHeight","offsetWidth","clonedRelEl","center","centerv","centerh","x","y"],"mappings":"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"}
1
+ {"version":3,"file":"usePosition.esm.js","sources":["../../../../../../src/hooks/usePosition.ts"],"sourcesContent":["/*\n * Copyright 2022 OneWelcome B.V.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useState } from \"react\";\nimport { useDebouncedCallback } from \"./useDebouncedCallback\";\n\nexport interface ConfigObject {\n relativeElement: RefElement;\n elementToBePositioned: RefElement;\n transformOrigin?: Placement;\n placement?: Placement;\n offset?: Offset;\n debounceAmount?: number;\n}\n\nexport enum horizontal {\n LEFT = \"left\",\n CENTER = \"center\",\n CENTER_H = \"centerh\",\n RIGHT = \"right\"\n}\n\nexport enum vertical {\n TOP = \"top\",\n CENTER = \"center\",\n CENTER_V = \"centerv\",\n BOTTOM = \"bottom\"\n}\n\nexport type HorizontalPlacement = `${horizontal}`;\nexport type VerticalPlacement = `${vertical}`;\n\ntype Axis = \"vertical\" | \"horizontal\";\ntype RefElement = React.RefObject<HTMLOrSVGElement> | undefined;\n\ninterface DomRectObject {\n top: number;\n right: number;\n bottom: number;\n left: number;\n center: number;\n centerh: number;\n centerv: number;\n width: number;\n height: number;\n x: number;\n y: number;\n}\n\nexport interface Placement {\n horizontal: HorizontalPlacement;\n vertical: VerticalPlacement;\n}\n\nexport interface Offset {\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\nexport interface Position {\n top: PositionType;\n right: PositionType;\n bottom: PositionType;\n left: PositionType;\n}\n\ninterface Dimensions {\n height: number;\n width: number;\n}\n\nexport type PositionType = number | \"initial\";\n\nconst defaultConfigObject: ConfigObject = {\n relativeElement: undefined,\n elementToBePositioned: undefined,\n transformOrigin: {\n horizontal: \"left\",\n vertical: \"top\"\n },\n placement: {\n horizontal: \"left\",\n vertical: \"top\"\n },\n offset: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n },\n debounceAmount: 20\n};\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion, @typescript-eslint/no-non-null-asserted-optional-chain*/\nexport const usePosition = (providedConfigObject: ConfigObject = defaultConfigObject) => {\n const configObject = { ...defaultConfigObject, ...providedConfigObject };\n const [initialCalculationDone, setInitialCalculationDone] = useState(false);\n\n if (configObject.transformOrigin === undefined) {\n configObject.transformOrigin = defaultConfigObject.transformOrigin;\n }\n\n if (configObject.placement === undefined) {\n configObject.placement = defaultConfigObject.placement;\n }\n\n if (configObject.offset === undefined) {\n configObject.offset = defaultConfigObject.offset;\n }\n\n const [position, setPosition] = useState<Position>({\n left: 0,\n top: 0,\n right: \"initial\",\n bottom: \"initial\"\n });\n\n const _fixPossibleViewportOverflow = (\n value: number,\n transformOrigin: Placement,\n requestedReturnValue: Axis,\n elDimensions: Dimensions\n ) => {\n let returnValue = value;\n\n if (\n (transformOrigin[requestedReturnValue] === \"left\" && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === \"top\" && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === \"center\" && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === \"bottom\" && returnValue < 0)\n ) {\n returnValue = 0;\n }\n\n if (\n (transformOrigin[requestedReturnValue] === \"left\" &&\n returnValue > window.innerWidth - elDimensions.width) ||\n (transformOrigin[requestedReturnValue] === \"center\" &&\n requestedReturnValue === \"horizontal\" &&\n returnValue > window.innerWidth - elDimensions.width)\n ) {\n returnValue = window.innerWidth - elDimensions.width;\n }\n\n if (\n (transformOrigin[requestedReturnValue] === \"top\" &&\n returnValue > window.innerHeight - elDimensions.height) ||\n (transformOrigin[requestedReturnValue] === \"center\" &&\n requestedReturnValue === \"vertical\" &&\n returnValue > window.innerHeight - elDimensions.height)\n ) {\n returnValue = window.innerHeight - elDimensions.height;\n }\n\n if (\n transformOrigin[requestedReturnValue] === \"right\" &&\n returnValue > window.innerWidth - elDimensions.width\n ) {\n returnValue = window.innerWidth - elDimensions.width;\n }\n\n if (\n transformOrigin[requestedReturnValue] === \"bottom\" &&\n returnValue > window.innerHeight - elDimensions.height\n ) {\n returnValue = window.innerHeight - elDimensions.height;\n }\n\n return returnValue;\n };\n\n const _applyOffsetToPlacementValue = (\n value: number,\n requestedReturnValue: Axis,\n transformOrigin: Placement\n ) => {\n let returnValue = value;\n if (\n (requestedReturnValue === \"horizontal\" && configObject.offset?.left !== 0) ||\n (requestedReturnValue === \"horizontal\" && configObject.offset?.right !== 0)\n ) {\n if (\n transformOrigin[requestedReturnValue] === \"left\" ||\n transformOrigin[requestedReturnValue] === \"center\"\n ) {\n returnValue += configObject.offset?.left!;\n returnValue -= configObject.offset?.right!;\n }\n\n if (transformOrigin[requestedReturnValue] === \"right\") {\n returnValue -= configObject.offset?.left!;\n returnValue += configObject.offset?.right!;\n }\n }\n\n if (\n (requestedReturnValue === \"vertical\" && configObject.offset?.top !== 0) ||\n (requestedReturnValue === \"vertical\" && configObject.offset?.bottom !== 0)\n ) {\n if (\n transformOrigin[requestedReturnValue] === \"top\" ||\n transformOrigin[requestedReturnValue] === \"center\"\n ) {\n returnValue += configObject.offset?.top!;\n returnValue -= configObject.offset?.bottom!;\n }\n\n if (transformOrigin[requestedReturnValue] === \"bottom\") {\n returnValue -= configObject.offset?.top!;\n returnValue += configObject.offset?.bottom!;\n }\n }\n\n return returnValue;\n };\n\n const _calculateInitialPlacementValue = (\n transformOrigin: Placement,\n requestedReturnValue: Axis,\n relEl: DomRectObject,\n placementOriginDefinition: HorizontalPlacement | VerticalPlacement,\n elDimensions: Dimensions\n ) => {\n let value = 0;\n\n if (\n transformOrigin[requestedReturnValue] === \"left\" ||\n transformOrigin[requestedReturnValue] === \"top\"\n ) {\n value = relEl[placementOriginDefinition];\n } else if (transformOrigin[requestedReturnValue] === \"center\") {\n value =\n relEl[placementOriginDefinition] -\n elDimensions[requestedReturnValue === \"horizontal\" ? \"width\" : \"height\"] / 2;\n } else if (\n transformOrigin[requestedReturnValue] === \"right\" ||\n transformOrigin[requestedReturnValue] === \"bottom\"\n ) {\n value =\n window[requestedReturnValue === \"horizontal\" ? \"innerWidth\" : \"innerHeight\"] -\n relEl[placementOriginDefinition];\n }\n\n return value;\n };\n\n /**\n *\n * @param requestedReturnValue whether the requested return value is for the horizontal or vertical axis\n * @returns either the horizontally centered placement definition (centerh) or the vertically centered one (centerv)\n */\n const _determineCenteredPlacementOrigin = (requestedReturnValue: Axis) => {\n if (requestedReturnValue === \"horizontal\") {\n return \"centerh\";\n } else if (requestedReturnValue === \"vertical\") {\n return \"centerv\";\n }\n throw new Error(\n `the requested return value isn't \"vertical\" or \"horizontal\" ${requestedReturnValue} was given.`\n );\n };\n\n const _calculatePlacementValue = (\n transformOrigin: Placement,\n placement: HorizontalPlacement | VerticalPlacement,\n requestedReturnValue: Axis,\n relEl: DomRectObject,\n elDimensions: Dimensions\n ): number => {\n const placementOriginDefinition =\n placement === \"center\" ? _determineCenteredPlacementOrigin(requestedReturnValue) : placement;\n\n const value = _calculateInitialPlacementValue(\n transformOrigin,\n requestedReturnValue,\n relEl,\n placementOriginDefinition,\n elDimensions\n );\n\n const valueWithOffset = _applyOffsetToPlacementValue(\n value,\n requestedReturnValue,\n transformOrigin\n );\n\n const valueCorrectionForViewportOverflow = _fixPossibleViewportOverflow(\n valueWithOffset,\n transformOrigin,\n requestedReturnValue,\n elDimensions\n );\n\n return valueCorrectionForViewportOverflow;\n };\n\n const _calculatePlacement = (relEl: DomRectObject, elDimensions: Dimensions, axis: Axis) => {\n const placementValue = _calculatePlacementValue(\n configObject.transformOrigin!,\n configObject.placement![axis]!,\n axis,\n relEl,\n elDimensions\n );\n\n let direction = \"left\";\n let oppositeDirection = \"right\";\n\n if (axis === \"horizontal\" && configObject.transformOrigin?.horizontal === \"right\") {\n direction = \"right\";\n oppositeDirection = \"left\";\n } else if (axis === \"horizontal\") {\n direction = \"left\";\n oppositeDirection = \"right\";\n }\n\n if (axis === \"vertical\" && configObject.transformOrigin?.vertical === \"bottom\") {\n direction = \"bottom\";\n oppositeDirection = \"top\";\n } else if (axis === \"vertical\") {\n direction = \"top\";\n oppositeDirection = \"bottom\";\n }\n\n setPosition(prevState => ({\n ...prevState,\n [direction]: placementValue,\n [oppositeDirection]: \"initial\"\n }));\n };\n\n const calculatePosition = useDebouncedCallback(() => {\n if (!configObject.relativeElement?.current || !configObject.elementToBePositioned?.current)\n return;\n const relativeElRect = (configObject.relativeElement!\n .current as HTMLElement)!.getBoundingClientRect();\n const elementToBePositionedDimensions: Dimensions = {\n height: (configObject.elementToBePositioned!.current as HTMLElement).offsetHeight,\n width: (configObject.elementToBePositioned!.current as HTMLElement).offsetWidth\n };\n\n /** We want to add a center (horizontal and vertical) property to the DOMRect object. Since it's a special object we can't modify so we clone it and add it. */\n const clonedRelEl = {\n top: relativeElRect.top,\n right: relativeElRect.right,\n bottom: relativeElRect.bottom,\n center: 0,\n centerv: relativeElRect.top + relativeElRect.height / 2,\n centerh: relativeElRect.left + relativeElRect.width / 2,\n left: relativeElRect.left,\n width: relativeElRect.width,\n height: relativeElRect.height,\n x: relativeElRect.x,\n y: relativeElRect.y\n };\n\n _calculatePlacement(clonedRelEl, elementToBePositionedDimensions, \"horizontal\");\n _calculatePlacement(clonedRelEl, elementToBePositionedDimensions, \"vertical\");\n\n if (!initialCalculationDone) {\n setInitialCalculationDone(true);\n }\n }, configObject.debounceAmount ?? 20);\n\n return {\n top: position.top,\n bottom: position.bottom,\n left: position.left,\n right: position.right,\n calculatePosition,\n initialCalculationDone\n };\n};\n"],"names":["horizontal","vertical","defaultConfigObject","relativeElement","undefined","elementToBePositioned","transformOrigin","placement","offset","top","right","bottom","left","debounceAmount","usePosition","providedConfigObject","configObject","initialCalculationDone","setInitialCalculationDone","useState","position","setPosition","_fixPossibleViewportOverflow","value","requestedReturnValue","elDimensions","returnValue","window","innerWidth","width","innerHeight","height","_applyOffsetToPlacementValue","_a","_b","_c","_d","_e","_f","_g","_h","_j","_k","_l","_m","_calculateInitialPlacementValue","relEl","placementOriginDefinition","_determineCenteredPlacementOrigin","Error","_calculatePlacementValue","valueWithOffset","valueCorrectionForViewportOverflow","_calculatePlacement","axis","placementValue","direction","oppositeDirection","prevState","calculatePosition","useDebouncedCallback","current","relativeElRect","getBoundingClientRect","elementToBePositionedDimensions","offsetHeight","offsetWidth","clonedRelEl","center","centerv","centerh","x","y"],"mappings":"0GA4BYA,GAAZ,SAAYA,GACVA,EAAA,QAAA,OACAA,EAAA,UAAA,SACAA,EAAA,YAAA,UACAA,EAAA,SAAA,OACD,EALD,CAAYA,IAAAA,EAKX,CAAA,QAEWC,GAAZ,SAAYA,GACVA,EAAA,OAAA,MACAA,EAAA,UAAA,SACAA,EAAA,YAAA,UACAA,EAAA,UAAA,QACD,EALD,CAAYA,IAAAA,EAKX,CAAA,IAgDD,MAAMC,EAAoC,CACxCC,qBAAiBC,EACjBC,2BAAuBD,EACvBE,gBAAiB,CACfN,WAAY,OACZC,SAAU,OAEZM,UAAW,CACTP,WAAY,OACZC,SAAU,OAEZO,OAAQ,CACNC,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,KAAM,GAERC,eAAgB,UAILC,EAAc,CAACC,EAAqCb,WAC/D,MAAMc,EAAe,IAAKd,KAAwBa,GAClD,MAAOE,EAAwBC,GAA6BC,EAAS,OAErE,GAAIH,EAAaV,uBAAoBF,EACnCY,EAAaV,gBAAkBJ,EAAoBI,gBAGrD,GAAIU,EAAaT,iBAAcH,EAC7BY,EAAaT,UAAYL,EAAoBK,UAG/C,GAAIS,EAAaR,cAAWJ,EAC1BY,EAAaR,OAASN,EAAoBM,OAG5C,MAAOY,EAAUC,GAAeF,EAAmB,CACjDP,KAAM,EACNH,IAAK,EACLC,MAAO,UACPC,OAAQ,YAGV,MAAMW,EAA+B,CACnCC,EACAjB,EACAkB,EACAC,KAEA,IAAIC,EAAcH,EAElB,GACGjB,EAAgBkB,KAA0B,QAAUE,EAAc,GAClEpB,EAAgBkB,KAA0B,OAASE,EAAc,GACjEpB,EAAgBkB,KAA0B,UAAYE,EAAc,GACpEpB,EAAgBkB,KAA0B,UAAYE,EAAc,EAErEA,EAAc,EAGhB,GACGpB,EAAgBkB,KAA0B,QACzCE,EAAcC,OAAOC,WAAaH,EAAaI,OAChDvB,EAAgBkB,KAA0B,UACzCA,IAAyB,cACzBE,EAAcC,OAAOC,WAAaH,EAAaI,MAEjDH,EAAcC,OAAOC,WAAaH,EAAaI,MAGjD,GACGvB,EAAgBkB,KAA0B,OACzCE,EAAcC,OAAOG,YAAcL,EAAaM,QACjDzB,EAAgBkB,KAA0B,UACzCA,IAAyB,YACzBE,EAAcC,OAAOG,YAAcL,EAAaM,OAElDL,EAAcC,OAAOG,YAAcL,EAAaM,OAGlD,GACEzB,EAAgBkB,KAA0B,SAC1CE,EAAcC,OAAOC,WAAaH,EAAaI,MAE/CH,EAAcC,OAAOC,WAAaH,EAAaI,MAGjD,GACEvB,EAAgBkB,KAA0B,UAC1CE,EAAcC,OAAOG,YAAcL,EAAaM,OAEhDL,EAAcC,OAAOG,YAAcL,EAAaM,OAGlD,OAAOL,CAAW,EAGpB,MAAMM,EAA+B,CACnCT,EACAC,EACAlB,iCAEA,IAAIoB,EAAcH,EAClB,GACGC,IAAyB,gBAAgBS,EAAAjB,EAAaR,UAAM,MAAAyB,SAAA,OAAA,EAAAA,EAAErB,QAAS,GACvEY,IAAyB,gBAAgBU,EAAAlB,EAAaR,oCAAQE,SAAU,EACzE,CACA,GACEJ,EAAgBkB,KAA0B,QAC1ClB,EAAgBkB,KAA0B,SAC1C,CACAE,IAAeS,EAAAnB,EAAaR,UAAM,MAAA2B,SAAA,OAAA,EAAAA,EAAEvB,KACpCc,IAAeU,EAAApB,EAAaR,UAAM,MAAA4B,SAAA,OAAA,EAAAA,EAAE1B,KACrC,CAED,GAAIJ,EAAgBkB,KAA0B,QAAS,CACrDE,IAAeW,EAAArB,EAAaR,UAAM,MAAA6B,SAAA,OAAA,EAAAA,EAAEzB,KACpCc,IAAeY,EAAAtB,EAAaR,UAAM,MAAA8B,SAAA,OAAA,EAAAA,EAAE5B,KACrC,CACF,CAED,GACGc,IAAyB,cAAce,EAAAvB,EAAaR,UAAM,MAAA+B,SAAA,OAAA,EAAAA,EAAE9B,OAAQ,GACpEe,IAAyB,cAAcgB,EAAAxB,EAAaR,oCAAQG,UAAW,EACxE,CACA,GACEL,EAAgBkB,KAA0B,OAC1ClB,EAAgBkB,KAA0B,SAC1C,CACAE,IAAee,EAAAzB,EAAaR,UAAM,MAAAiC,SAAA,OAAA,EAAAA,EAAEhC,IACpCiB,IAAegB,EAAA1B,EAAaR,UAAM,MAAAkC,SAAA,OAAA,EAAAA,EAAE/B,MACrC,CAED,GAAIL,EAAgBkB,KAA0B,SAAU,CACtDE,IAAeiB,EAAA3B,EAAaR,UAAM,MAAAmC,SAAA,OAAA,EAAAA,EAAElC,IACpCiB,IAAekB,EAAA5B,EAAaR,UAAM,MAAAoC,SAAA,OAAA,EAAAA,EAAEjC,MACrC,CACF,CAED,OAAOe,CAAW,EAGpB,MAAMmB,EAAkC,CACtCvC,EACAkB,EACAsB,EACAC,EACAtB,KAEA,IAAIF,EAAQ,EAEZ,GACEjB,EAAgBkB,KAA0B,QAC1ClB,EAAgBkB,KAA0B,MAE1CD,EAAQuB,EAAMC,QACT,GAAIzC,EAAgBkB,KAA0B,SACnDD,EACEuB,EAAMC,GACNtB,EAAaD,IAAyB,aAAe,QAAU,UAAY,OACxE,GACLlB,EAAgBkB,KAA0B,SAC1ClB,EAAgBkB,KAA0B,SAE1CD,EACEI,OAAOH,IAAyB,aAAe,aAAe,eAC9DsB,EAAMC,GAGV,OAAOxB,CAAK,EAQd,MAAMyB,EAAqCxB,IACzC,GAAIA,IAAyB,aAC3B,MAAO,eACF,GAAIA,IAAyB,WAClC,MAAO,UAET,MAAM,IAAIyB,MACR,+DAA+DzB,eAChE,EAGH,MAAM0B,EAA2B,CAC/B5C,EACAC,EACAiB,EACAsB,EACArB,KAEA,MAAMsB,EACJxC,IAAc,SAAWyC,EAAkCxB,GAAwBjB,EAErF,MAAMgB,EAAQsB,EACZvC,EACAkB,EACAsB,EACAC,EACAtB,GAGF,MAAM0B,EAAkBnB,EACtBT,EACAC,EACAlB,GAGF,MAAM8C,EAAqC9B,EACzC6B,EACA7C,EACAkB,EACAC,GAGF,OAAO2B,CAAkC,EAG3C,MAAMC,EAAsB,CAACP,EAAsBrB,EAA0B6B,aAC3E,MAAMC,EAAiBL,EACrBlC,EAAaV,gBACbU,EAAaT,UAAW+C,GACxBA,EACAR,EACArB,GAGF,IAAI+B,EAAY,OAChB,IAAIC,EAAoB,QAExB,GAAIH,IAAS,gBAAgBrB,EAAAjB,EAAaV,mBAAiB,MAAA2B,SAAA,OAAA,EAAAA,EAAAjC,cAAe,QAAS,CACjFwD,EAAY,QACZC,EAAoB,MACrB,MAAM,GAAIH,IAAS,aAAc,CAChCE,EAAY,OACZC,EAAoB,OACrB,CAED,GAAIH,IAAS,cAAcpB,EAAAlB,EAAaV,mBAAiB,MAAA4B,SAAA,OAAA,EAAAA,EAAAjC,YAAa,SAAU,CAC9EuD,EAAY,SACZC,EAAoB,KACrB,MAAM,GAAIH,IAAS,WAAY,CAC9BE,EAAY,MACZC,EAAoB,QACrB,CAEDpC,GAAYqC,IAAc,IACrBA,EACHF,CAACA,GAAYD,EACbE,CAACA,GAAoB,aACpB,EAGL,MAAME,EAAoBC,GAAqB,aAC7C,MAAK3B,EAAAjB,EAAab,6CAAiB0D,aAAY3B,EAAAlB,EAAaX,yBAAqB,MAAA6B,SAAA,OAAA,EAAAA,EAAE2B,SACjF,OACF,MAAMC,EAAkB9C,EAAab,gBAClC0D,QAAyBE,wBAC5B,MAAMC,EAA8C,CAClDjC,OAASf,EAAaX,sBAAuBwD,QAAwBI,aACrEpC,MAAQb,EAAaX,sBAAuBwD,QAAwBK,aAItE,MAAMC,EAAc,CAClB1D,IAAKqD,EAAerD,IACpBC,MAAOoD,EAAepD,MACtBC,OAAQmD,EAAenD,OACvByD,OAAQ,EACRC,QAASP,EAAerD,IAAMqD,EAAe/B,OAAS,EACtDuC,QAASR,EAAelD,KAAOkD,EAAejC,MAAQ,EACtDjB,KAAMkD,EAAelD,KACrBiB,MAAOiC,EAAejC,MACtBE,OAAQ+B,EAAe/B,OACvBwC,EAAGT,EAAeS,EAClBC,EAAGV,EAAeU,GAGpBnB,EAAoBc,EAAaH,EAAiC,cAClEX,EAAoBc,EAAaH,EAAiC,YAElE,IAAK/C,EACHC,EAA0B,KAC3B,MACAF,EAAaH,kBAAkB,MAAAoB,SAAA,EAAAA,EAAA,IAElC,MAAO,CACLxB,IAAKW,EAASX,IACdE,OAAQS,EAAST,OACjBC,KAAMQ,EAASR,KACfF,MAAOU,EAASV,MAChBiD,oBACA1C,yBACD"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "homepage": "http://onewelcome.github.io/react-lib-components",
3
3
  "name": "@onewelcome/react-lib-components",
4
- "version": "5.2.0",
4
+ "version": "6.1.0",
5
5
  "license": "Apache-2.0",
6
6
  "author": "OneWelcome B.V.",
7
7
  "main": "dist/cjs/src/index.cjs.js",
@@ -9,7 +9,9 @@
9
9
  "typings": "dist/cjs/src/index.d.ts",
10
10
  "files": [
11
11
  "dist",
12
- "src"
12
+ "src",
13
+ "!*/**/*.test.tsx",
14
+ "!*/**/*.test.ts"
13
15
  ],
14
16
  "sideEffects": [
15
17
  "*.css",
@@ -50,8 +52,8 @@
50
52
  "node": ">=16"
51
53
  },
52
54
  "devDependencies": {
53
- "@babel/core": "^7.23.3",
54
- "@babel/preset-env": "^7.23.3",
55
+ "@babel/core": "^7.23.9",
56
+ "@babel/preset-env": "^7.23.9",
55
57
  "@babel/preset-react": "^7.23.3",
56
58
  "@babel/preset-typescript": "^7.23.3",
57
59
  "@mdx-js/react": "^3.0.0",
@@ -59,74 +61,75 @@
59
61
  "@onewelcome/storybook-addon-basestyling": "^1.0.0",
60
62
  "@rollup/plugin-commonjs": "^25.0.7",
61
63
  "@rollup/plugin-node-resolve": "^15.2.3",
62
- "@rollup/plugin-typescript": "^11.1.5",
63
- "@storybook/addon-a11y": "^7.5.3",
64
- "@storybook/addon-actions": "^7.5.3",
65
- "@storybook/addon-docs": "^7.5.3",
66
- "@storybook/addon-essentials": "^7.5.3",
67
- "@storybook/addon-interactions": "^7.5.3",
68
- "@storybook/addon-links": "^7.5.3",
69
- "@storybook/blocks": "^7.5.3",
70
- "@storybook/components": "^7.5.3",
64
+ "@rollup/plugin-typescript": "^11.1.6",
65
+ "@storybook/addon-a11y": "^7.6.10",
66
+ "@storybook/addon-actions": "^7.6.10",
67
+ "@storybook/addon-docs": "^7.6.10",
68
+ "@storybook/addon-essentials": "^7.6.10",
69
+ "@storybook/addon-interactions": "^7.6.10",
70
+ "@storybook/addon-links": "^7.6.10",
71
+ "@storybook/blocks": "^7.6.10",
72
+ "@storybook/components": "^7.6.10",
71
73
  "@storybook/jest": "^0.2.3",
72
- "@storybook/manager-api": "^7.5.3",
73
- "@storybook/react": "^7.5.3",
74
- "@storybook/react-webpack5": "^7.5.3",
74
+ "@storybook/manager-api": "^7.6.10",
75
+ "@storybook/react": "^7.6.10",
76
+ "@storybook/react-webpack5": "^7.6.10",
75
77
  "@storybook/testing-library": "^0.2.2",
76
- "@storybook/theming": "^7.5.3",
77
- "@testing-library/dom": "^9.3.3",
78
- "@testing-library/jest-dom": "^6.1.4",
79
- "@testing-library/react": "^14.0.0",
80
- "@testing-library/user-event": "^14.5.1",
81
- "@types/jest": "^29.5.8",
78
+ "@storybook/theming": "^7.6.10",
79
+ "@testing-library/dom": "^9.3.4",
80
+ "@testing-library/jest-dom": "^6.3.0",
81
+ "@testing-library/react": "^14.1.2",
82
+ "@testing-library/user-event": "^14.5.2",
83
+ "@types/jest": "^29.5.11",
82
84
  "@types/mdx": "^2.0.10",
83
- "@types/react": "^18.2.37",
84
- "@types/react-dom": "^18.2.15",
85
+ "@types/react": "^18.2.48",
86
+ "@types/react-dom": "^18.2.18",
85
87
  "@types/react-router": "^5.1.20",
86
88
  "@types/react-router-dom": "^5.3.3",
87
- "@typescript-eslint/eslint-plugin": "^6.9.0",
88
- "@typescript-eslint/parser": "^6.9.0",
89
+ "@typescript-eslint/eslint-plugin": "^6.19.1",
90
+ "@typescript-eslint/parser": "^6.19.1",
89
91
  "babel-loader": "^9.1.3",
90
- "chromatic": "^7.5.4",
91
- "css-loader": "^6.8.1",
92
- "eslint": "^8.52.0",
93
- "eslint-config-prettier": "^9.0.0",
92
+ "chromatic": "^10.6.0",
93
+ "css-loader": "^6.9.1",
94
+ "eslint": "^8.56.0",
95
+ "eslint-config-prettier": "^9.1.0",
94
96
  "eslint-plugin-cypress": "^2.15.1",
95
- "eslint-plugin-jest": "^27.6.0",
97
+ "eslint-plugin-export-scope": "^2.0.3",
98
+ "eslint-plugin-jest": "^27.6.3",
96
99
  "eslint-plugin-license-header": "^0.6.0",
97
- "eslint-plugin-prettier": "^5.0.1",
100
+ "eslint-plugin-prettier": "^5.1.3",
98
101
  "eslint-plugin-react": "^7.33.2",
99
102
  "eslint-plugin-react-hooks": "^4.6.0",
100
103
  "eslint-plugin-storybook": "^0.6.15",
101
- "husky": "^8.0.3",
104
+ "husky": "^9.0.6",
102
105
  "identity-obj-proxy": "^3.0.0",
103
106
  "jest": "^29.7.0",
104
107
  "jest-environment-jsdom": "^29.7.0",
105
108
  "jest-junit": "^16.0.0",
106
109
  "jest-sonar-reporter": "^2.0.0",
107
- "lint-staged": "^15.0.2",
108
- "mini-css-extract-plugin": "^2.7.6",
110
+ "lint-staged": "^15.2.0",
111
+ "mini-css-extract-plugin": "^2.7.7",
109
112
  "npm-run-all": "^4.1.5",
110
- "postcss": "^8.4.31",
113
+ "postcss": "^8.4.33",
111
114
  "postcss-modules": "^6.0.0",
112
115
  "postcss-url": "^10.1.3",
113
- "prettier": "^3.0.3",
116
+ "prettier": "^3.2.4",
114
117
  "react": "^18.2.0",
115
118
  "react-dom": "^18.2.0",
116
119
  "react-is": "^18.2.0",
117
- "react-router-dom": "^6.19.0",
120
+ "react-router-dom": "^6.21.3",
118
121
  "remark-gfm": "^4.0.0",
119
122
  "rollup": "^2.79.1",
120
123
  "rollup-plugin-postcss": "^4.0.2",
121
124
  "rollup-plugin-terser": "^7.0.2",
122
- "sass": "^1.69.5",
123
- "sass-loader": "^13.3.2",
124
- "size-limit": "^10.0.1",
125
- "storybook": "^7.5.3",
125
+ "sass": "^1.70.0",
126
+ "sass-loader": "^14.0.0",
127
+ "size-limit": "^11.0.2",
128
+ "storybook": "^7.6.10",
126
129
  "storybook-addon-pseudo-states": "^2.1.2",
127
- "style-loader": "^3.3.3",
128
- "ts-jest": "^29.1.1",
130
+ "style-loader": "^3.3.4",
131
+ "ts-jest": "^29.1.2",
129
132
  "tslib": "^2.6.2",
130
- "typescript": "^5.3.2"
133
+ "typescript": "^5.3.3"
131
134
  }
132
135
  }
@@ -14,15 +14,4 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { renderHook } from "@testing-library/react";
18
- import { useWrapper } from "./useWrapper";
19
-
20
- describe("it should give the correct results based on no value, no placeholder and default text input", () => {
21
- it("should execute correctly", () => {
22
- const { result } = renderHook(() => useWrapper());
23
-
24
- expect(result.current.helperId).toHaveLength(20);
25
- expect(result.current.errorId).toHaveLength(20);
26
- expect(result.current.labelId).toHaveLength(20);
27
- });
28
- });
17
+ export default "*";
@@ -22,7 +22,7 @@ export interface Props extends ComponentPropsWithRef<"button"> {
22
22
  type?: "submit" | "button" | "reset";
23
23
  disabled?: boolean;
24
24
  loading?: boolean;
25
- color?: "primary" | "secondary" | "warning" | "danger" | "default";
25
+ color?: "primary" | "danger" | "default" | "success" | "warning";
26
26
  }
27
27
 
28
28
  const BaseButtonComponent: ForwardRefRenderFunction<HTMLButtonElement, Props> = (
@@ -49,17 +49,9 @@
49
49
 
50
50
  width: 1.5rem;
51
51
  margin-right: 0.25rem;
52
- }
53
- }
54
-
55
- @media only screen and (min-width: 30em) {
56
- .has-icon {
57
- &.start-icon {
58
- padding-left: 1rem;
59
- }
60
52
 
61
- &.end-icon {
62
- padding-right: 1rem;
53
+ span {
54
+ font-size: 1rem;
63
55
  }
64
56
  }
65
57
  }
@@ -35,7 +35,8 @@ import { useBodyClick } from "../../hooks/useBodyClick";
35
35
  import { Props as ContextMenuItemProps } from "./ContextMenuItem";
36
36
  import { createPortal } from "react-dom";
37
37
  import { useGetDomRoot } from "../../hooks/useGetDomRoot";
38
- import { useArrowNavigation, useDefaultOffset } from "./ContextMenuService";
38
+ import { useArrowNavigation, useDefaultOffset, useFocusAnchorElement } from "./ContextMenuService";
39
+ import { generateID } from "../../util/helper";
39
40
 
40
41
  export interface Props extends Omit<ComponentPropsWithRef<"div">, "onChange"> {
41
42
  trigger: ReactElement<ButtonProps> | ReactElement<IconButtonProps>;
@@ -45,7 +46,7 @@ export interface Props extends Omit<ComponentPropsWithRef<"div">, "onChange"> {
45
46
  transformOrigin?: Placement;
46
47
  offset?: Offset;
47
48
  debounceAmount?: number;
48
- id: string;
49
+ id?: string;
49
50
  show?: boolean;
50
51
  domRoot?: HTMLElement;
51
52
  onShow?: () => void;
@@ -60,7 +61,7 @@ const ContextMenuComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
60
61
  trigger,
61
62
  children,
62
63
  decorativeElement,
63
- id,
64
+ id = `ID-${generateID()}`,
64
65
  show = false,
65
66
  onShow,
66
67
  onClose,
@@ -79,7 +80,6 @@ const ContextMenuComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
79
80
  const anchorEl = useRef<HTMLButtonElement>(null);
80
81
  const wrappingDivRef = (ref as RefObject<HTMLDivElement>) || createRef<HTMLDivElement>();
81
82
  const [showContextMenu, setShowContextMenu] = useState(show);
82
- const [hasBeenClosed, setHasBeenClosed] = useState(false);
83
83
  const [selectedContextMenuItem, setSelectedContextMenuItem] = useState(-1);
84
84
  const [focusedContextMenuItem, setFocusedContextMenuItem] = useState(-1);
85
85
  const [shouldClick, setShouldClick] =
@@ -90,10 +90,6 @@ const ContextMenuComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
90
90
 
91
91
  const { root } = useGetDomRoot(domRoot, wrappingDivRef);
92
92
 
93
- if (!id) {
94
- throw new Error("You need to provide an ID to the context menu");
95
- }
96
-
97
93
  const syncSelectedContextMenuItem = setSelectedContextMenuItem;
98
94
 
99
95
  useEffect(() => {
@@ -128,21 +124,15 @@ const ContextMenuComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
128
124
  showContextMenu
129
125
  );
130
126
 
131
- useEffect(() => {
132
- if (showContextMenu === true) {
133
- onShow?.();
134
- } else {
135
- onClose?.();
136
- !hasBeenClosed && setHasBeenClosed(true);
137
- setFocusedContextMenuItem(-1);
138
- // If the user clicks on the trigger button, we want to focus it again after the context menu has been closed,
139
- // but only if the option doesn't open another window (such as a modal),
140
- // otherwise pressing enter wouldn't fire the primary action of the modal.
141
- if (document.activeElement?.closest(`.${wrappingDivRef.current?.className}`)) {
142
- hasBeenClosed && anchorEl.current && anchorEl.current.focus();
143
- }
144
- }
145
- }, [showContextMenu]);
127
+ useFocusAnchorElement(
128
+ anchorEl,
129
+ id,
130
+ showContextMenu,
131
+ setShowContextMenu,
132
+ setFocusedContextMenuItem,
133
+ onShow,
134
+ onClose
135
+ );
146
136
 
147
137
  const renderTrigger = () =>
148
138
  React.cloneElement(trigger, {