@loadsmart/loadsmart-ui 7.6.0 → 8.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. package/README.md +13 -1
  2. package/dist/DragDropFile.context-oKnUu6d3.js +33 -0
  3. package/dist/{DragDropFile.context-D-EBrXnw.js.map → DragDropFile.context-oKnUu6d3.js.map} +1 -1
  4. package/dist/components/Banner/Banner.d.ts +2 -2
  5. package/dist/components/Button/Button.d.ts +1 -1
  6. package/dist/components/Calendar/Pickers/PickerButton.d.ts +4 -2
  7. package/dist/components/Card/Card.d.ts +4 -4
  8. package/dist/components/Card/CardTitle.d.ts +2 -2
  9. package/dist/components/DatePicker/DatePicker.d.ts +1 -1
  10. package/dist/components/DatePicker/useDatePicker.d.ts +8 -9
  11. package/dist/components/DatePicker/useDateRangePicker.d.ts +13 -14
  12. package/dist/components/Dialog/Dialog.d.ts +3 -5
  13. package/dist/components/DragDropFile/styles.d.ts +7 -7
  14. package/dist/components/Dropdown/Dropdown.d.ts +3 -3
  15. package/dist/components/Dropdown/DropdownMenu.d.ts +3 -3
  16. package/dist/components/Layout/Stack.d.ts +2 -2
  17. package/dist/components/Loaders/LoadingBar.d.ts +2 -2
  18. package/dist/components/Loaders/index.d.ts +3 -3
  19. package/dist/components/Modal/Modal.d.ts +1 -3
  20. package/dist/components/SideNavigation/Logo/Logo.d.ts +7 -2
  21. package/dist/components/SideNavigation/Menu/Menu.d.ts +7 -2
  22. package/dist/components/SideNavigation/Menu/MenuLink.d.ts +6 -1
  23. package/dist/components/SideNavigation/SideNavigation.d.ts +14 -4
  24. package/dist/components/Steps/StepsStep.d.ts +2 -2
  25. package/dist/components/Table/Table.d.ts +2 -1
  26. package/dist/components/TablePagination/TablePagination.styles.d.ts +5 -4
  27. package/dist/components/TablePagination/TablePaginationActions.d.ts +2 -5
  28. package/dist/components/Text/Text.d.ts +1 -1
  29. package/dist/components/TextField/TextField.d.ts +6 -2
  30. package/dist/components/ToggleGroup/Toggle.d.ts +2 -1
  31. package/dist/components/ToggleGroup/ToggleGroup.d.ts +2 -1
  32. package/dist/components/TopNavigation/Logo/Logo.d.ts +7 -2
  33. package/dist/components/TopNavigation/Menu/Menu.d.ts +2 -2
  34. package/dist/components/TopNavigation/Menu/MenuItemDropdown.d.ts +4 -4
  35. package/dist/components/TopNavigation/OpenSideNavButton/OpenSideNavButton.d.ts +2 -1
  36. package/dist/components/TopNavigation/TopNavigation.d.ts +8 -3
  37. package/dist/components/VisuallyHidden/VisuallyHidden.d.ts +1 -1
  38. package/dist/components/VisuallyHidden/VisuallyHidden.stories.d.ts +2 -1
  39. package/dist/index.js +9100 -253
  40. package/dist/index.js.map +1 -1
  41. package/dist/miranda-compatibility.theme-kYNEZ7mW.js +2528 -0
  42. package/dist/{miranda-compatibility.theme-ChPV-BBw.js.map → miranda-compatibility.theme-kYNEZ7mW.js.map} +1 -1
  43. package/dist/prop-K2Z3EsyG.js +81 -0
  44. package/dist/{prop-BwhJNJHO.js.map → prop-K2Z3EsyG.js.map} +1 -1
  45. package/dist/testing/index.js +282 -1
  46. package/dist/testing/index.js.map +1 -1
  47. package/dist/tests/renderer.d.ts +1 -1
  48. package/dist/theming/index.js +22 -1
  49. package/dist/theming/index.js.map +1 -1
  50. package/dist/toArray-Dxb1kUxx.js +14 -0
  51. package/dist/{toArray-BW3gx_gH.js.map → toArray-Dxb1kUxx.js.map} +1 -1
  52. package/dist/tools/index.js +6 -1
  53. package/dist/tools/index.js.map +1 -1
  54. package/dist/utils/toolset/flatten.d.ts +1 -1
  55. package/dist/utils/toolset/get.d.ts +1 -1
  56. package/dist/utils/toolset/isEmpty.d.ts +1 -1
  57. package/dist/utils/toolset/omit.d.ts +1 -1
  58. package/dist/utils/toolset/range.d.ts +1 -1
  59. package/package.json +46 -79
  60. package/dist/DragDropFile.context-D-EBrXnw.js +0 -2
  61. package/dist/DragDropFile.context-jVTIKfj5.mjs +0 -29
  62. package/dist/DragDropFile.context-jVTIKfj5.mjs.map +0 -1
  63. package/dist/index.mjs +0 -8046
  64. package/dist/index.mjs.map +0 -1
  65. package/dist/miranda-compatibility.theme-ChPV-BBw.js +0 -2
  66. package/dist/miranda-compatibility.theme-DQDHkWzC.mjs +0 -2469
  67. package/dist/miranda-compatibility.theme-DQDHkWzC.mjs.map +0 -1
  68. package/dist/prop-5m3D4883.mjs +0 -54
  69. package/dist/prop-5m3D4883.mjs.map +0 -1
  70. package/dist/prop-BwhJNJHO.js +0 -2
  71. package/dist/testing/index.mjs +0 -228
  72. package/dist/testing/index.mjs.map +0 -1
  73. package/dist/theming/index.mjs +0 -20
  74. package/dist/theming/index.mjs.map +0 -1
  75. package/dist/toArray-BW3gx_gH.js +0 -2
  76. package/dist/toArray-DqgeO2ua.mjs +0 -8
  77. package/dist/toArray-DqgeO2ua.mjs.map +0 -1
  78. package/dist/tools/index.mjs +0 -7
  79. package/dist/tools/index.mjs.map +0 -1
  80. package/src/@types/@loadsmart/utilsFunction.d.ts +0 -5
  81. package/src/@types/@loadsmart/utilsObject.d.ts +0 -5
  82. package/src/@types/svg.d.ts +0 -4
  83. package/src/addons/Theme/register.js +0 -590
  84. package/src/common/BackButton/BackButton.tsx +0 -18
  85. package/src/common/BackButton/index.ts +0 -2
  86. package/src/common/CloseButton/CloseButton.tsx +0 -55
  87. package/src/common/CloseButton/index.ts +0 -2
  88. package/src/common/SelectionWrapper.tsx +0 -130
  89. package/src/components/Accordion/Accordion.context.tsx +0 -36
  90. package/src/components/Accordion/Accordion.stories.tsx +0 -186
  91. package/src/components/Accordion/Accordion.test.tsx +0 -209
  92. package/src/components/Accordion/Accordion.tsx +0 -233
  93. package/src/components/Accordion/index.ts +0 -2
  94. package/src/components/Banner/Banner.stories.tsx +0 -213
  95. package/src/components/Banner/Banner.test.tsx +0 -118
  96. package/src/components/Banner/Banner.tsx +0 -418
  97. package/src/components/Banner/index.tsx +0 -2
  98. package/src/components/Breadcrumbs/Breadbrumbs.test.tsx +0 -125
  99. package/src/components/Breadcrumbs/Breadcrumb.tsx +0 -92
  100. package/src/components/Breadcrumbs/Breadcrumbs.stories.tsx +0 -21
  101. package/src/components/Breadcrumbs/Breadcrumbs.tsx +0 -54
  102. package/src/components/Breadcrumbs/index.ts +0 -4
  103. package/src/components/Button/Button.stories.tsx +0 -174
  104. package/src/components/Button/Button.test.tsx +0 -57
  105. package/src/components/Button/Button.tsx +0 -576
  106. package/src/components/Button/index.tsx +0 -2
  107. package/src/components/Calendar/Calendar.helpers.ts +0 -15
  108. package/src/components/Calendar/Calendar.stories.tsx +0 -168
  109. package/src/components/Calendar/Calendar.test.tsx +0 -316
  110. package/src/components/Calendar/Calendar.tsx +0 -130
  111. package/src/components/Calendar/Calendar.types.ts +0 -68
  112. package/src/components/Calendar/Date.helper.test.ts +0 -847
  113. package/src/components/Calendar/Date.helper.ts +0 -461
  114. package/src/components/Calendar/DateFormat.helper.test.ts +0 -171
  115. package/src/components/Calendar/DateFormat.helper.ts +0 -195
  116. package/src/components/Calendar/Month.helper.test.ts +0 -187
  117. package/src/components/Calendar/Month.helper.ts +0 -172
  118. package/src/components/Calendar/PickerModeToggle.tsx +0 -61
  119. package/src/components/Calendar/Pickers/DayPicker.test.tsx +0 -85
  120. package/src/components/Calendar/Pickers/DayPicker.tsx +0 -127
  121. package/src/components/Calendar/Pickers/MonthPicker.test.tsx +0 -77
  122. package/src/components/Calendar/Pickers/MonthPicker.tsx +0 -51
  123. package/src/components/Calendar/Pickers/PickerButton.tsx +0 -119
  124. package/src/components/Calendar/Pickers/YearPicker.test.tsx +0 -75
  125. package/src/components/Calendar/Pickers/YearPicker.tsx +0 -52
  126. package/src/components/Calendar/index.ts +0 -10
  127. package/src/components/Calendar/useCalendar.ts +0 -190
  128. package/src/components/Calendar/usePickerMode.ts +0 -48
  129. package/src/components/Card/Card.stories.tsx +0 -117
  130. package/src/components/Card/Card.test.tsx +0 -139
  131. package/src/components/Card/Card.tsx +0 -106
  132. package/src/components/Card/CardTitle.tsx +0 -43
  133. package/src/components/Card/index.ts +0 -2
  134. package/src/components/Checkbox/Checkbox.stories.tsx +0 -79
  135. package/src/components/Checkbox/Checkbox.test.tsx +0 -66
  136. package/src/components/Checkbox/Checkbox.tsx +0 -170
  137. package/src/components/Checkbox/index.ts +0 -2
  138. package/src/components/DatePicker/DatePicker.stories.tsx +0 -113
  139. package/src/components/DatePicker/DatePicker.test.tsx +0 -174
  140. package/src/components/DatePicker/DatePicker.tsx +0 -140
  141. package/src/components/DatePicker/DatePicker.types.ts +0 -30
  142. package/src/components/DatePicker/DateRangePicker.stories.tsx +0 -128
  143. package/src/components/DatePicker/DateRangePicker.test.tsx +0 -267
  144. package/src/components/DatePicker/DateRangePicker.tsx +0 -110
  145. package/src/components/DatePicker/index.ts +0 -3
  146. package/src/components/DatePicker/useDatePicker.ts +0 -201
  147. package/src/components/DatePicker/useDateRangePicker.ts +0 -224
  148. package/src/components/Dialog/Dialog.stories.tsx +0 -227
  149. package/src/components/Dialog/Dialog.test.tsx +0 -74
  150. package/src/components/Dialog/Dialog.tsx +0 -139
  151. package/src/components/Dialog/index.tsx +0 -4
  152. package/src/components/Dialog/useDialog.tsx +0 -59
  153. package/src/components/DragDropFile/DragDropFile.context.tsx +0 -39
  154. package/src/components/DragDropFile/DragDropFile.stories.tsx +0 -183
  155. package/src/components/DragDropFile/DragDropFile.tsx +0 -11
  156. package/src/components/DragDropFile/components/DropZone.test.tsx +0 -108
  157. package/src/components/DragDropFile/components/DropZone.tsx +0 -145
  158. package/src/components/DragDropFile/components/FileItem.tsx +0 -117
  159. package/src/components/DragDropFile/components/FileList.test.tsx +0 -119
  160. package/src/components/DragDropFile/components/FileList.tsx +0 -47
  161. package/src/components/DragDropFile/components/Wrapper.tsx +0 -22
  162. package/src/components/DragDropFile/index.ts +0 -9
  163. package/src/components/DragDropFile/mocks.ts +0 -23
  164. package/src/components/DragDropFile/styles.tsx +0 -81
  165. package/src/components/DragDropFile/types.ts +0 -85
  166. package/src/components/Drawer/Drawer.stories.tsx +0 -83
  167. package/src/components/Drawer/Drawer.test.tsx +0 -90
  168. package/src/components/Drawer/Drawer.tsx +0 -225
  169. package/src/components/Drawer/index.ts +0 -4
  170. package/src/components/Dropdown/Dropdown.context.ts +0 -13
  171. package/src/components/Dropdown/Dropdown.fixtures.ts +0 -15
  172. package/src/components/Dropdown/Dropdown.stories.tsx +0 -259
  173. package/src/components/Dropdown/Dropdown.test.tsx +0 -173
  174. package/src/components/Dropdown/Dropdown.tsx +0 -141
  175. package/src/components/Dropdown/Dropdown.types.ts +0 -59
  176. package/src/components/Dropdown/DropdownMenu.tsx +0 -263
  177. package/src/components/Dropdown/DropdownTrigger.tsx +0 -368
  178. package/src/components/Dropdown/index.ts +0 -15
  179. package/src/components/Dropdown/useDropdown.test.ts +0 -96
  180. package/src/components/Dropdown/useDropdown.ts +0 -65
  181. package/src/components/EmptyState/EmptyState.mocks.tsx +0 -60
  182. package/src/components/EmptyState/EmptyState.stories.tsx +0 -239
  183. package/src/components/EmptyState/EmptyState.test.tsx +0 -101
  184. package/src/components/EmptyState/EmptyState.tsx +0 -22
  185. package/src/components/EmptyState/EmptyState.types.ts +0 -59
  186. package/src/components/EmptyState/EmptyStateWithIcon.tsx +0 -42
  187. package/src/components/EmptyState/EmptyStateWithIllustration.tsx +0 -72
  188. package/src/components/EmptyState/Illustration.tsx +0 -29
  189. package/src/components/EmptyState/index.ts +0 -4
  190. package/src/components/ErrorMessage/ErrorMessage.stories.tsx +0 -26
  191. package/src/components/ErrorMessage/ErrorMessage.test.tsx +0 -24
  192. package/src/components/ErrorMessage/ErrorMessage.tsx +0 -19
  193. package/src/components/ErrorMessage/index.ts +0 -2
  194. package/src/components/HighlightMatch/HighlightMatch.stories.tsx +0 -24
  195. package/src/components/HighlightMatch/HighlightMatch.test.tsx +0 -37
  196. package/src/components/HighlightMatch/HighlightMatch.tsx +0 -29
  197. package/src/components/HighlightMatch/index.ts +0 -2
  198. package/src/components/Icon/Icon.tsx +0 -55
  199. package/src/components/Icon/assets/back.svg +0 -4
  200. package/src/components/Icon/assets/burger-menu.svg +0 -3
  201. package/src/components/Icon/assets/calendar.svg +0 -5
  202. package/src/components/Icon/assets/caret-down.svg +0 -4
  203. package/src/components/Icon/assets/caret-left.svg +0 -4
  204. package/src/components/Icon/assets/caret-right-last.svg +0 -4
  205. package/src/components/Icon/assets/caret-right.svg +0 -4
  206. package/src/components/Icon/assets/check.svg +0 -4
  207. package/src/components/Icon/assets/chevron-down.svg +0 -3
  208. package/src/components/Icon/assets/circle.svg +0 -3
  209. package/src/components/Icon/assets/close.svg +0 -4
  210. package/src/components/Icon/assets/dots-horizontal.svg +0 -1
  211. package/src/components/Icon/assets/information.svg +0 -4
  212. package/src/components/Icon/assets/minus.svg +0 -4
  213. package/src/components/Icon/assets/plus.svg +0 -4
  214. package/src/components/Icon/assets/refresh.svg +0 -3
  215. package/src/components/Icon/assets/sort-asc.svg +0 -7
  216. package/src/components/Icon/assets/sort-desc.svg +0 -7
  217. package/src/components/Icon/assets/sort.svg +0 -7
  218. package/src/components/Icon/assets/upload.svg +0 -3
  219. package/src/components/Icon/assets/warning.svg +0 -4
  220. package/src/components/Icon/index.ts +0 -2
  221. package/src/components/IconFactory/IconFactory.fixtures.tsx +0 -31
  222. package/src/components/IconFactory/IconFactory.stories.tsx +0 -120
  223. package/src/components/IconFactory/IconFactory.test.tsx +0 -36
  224. package/src/components/IconFactory/IconFactory.tsx +0 -75
  225. package/src/components/IconFactory/index.ts +0 -2
  226. package/src/components/Label/Label.stories.tsx +0 -47
  227. package/src/components/Label/Label.test.tsx +0 -80
  228. package/src/components/Label/Label.tsx +0 -120
  229. package/src/components/Label/index.ts +0 -2
  230. package/src/components/Layout/Box.tsx +0 -98
  231. package/src/components/Layout/Grid.tsx +0 -42
  232. package/src/components/Layout/Group.tsx +0 -55
  233. package/src/components/Layout/Layout.stories.tsx +0 -412
  234. package/src/components/Layout/Layout.tsx +0 -19
  235. package/src/components/Layout/Layout.types.ts +0 -9
  236. package/src/components/Layout/Layout.utils.ts +0 -20
  237. package/src/components/Layout/Sidebar.tsx +0 -75
  238. package/src/components/Layout/Stack.tsx +0 -63
  239. package/src/components/Layout/Switcher.tsx +0 -48
  240. package/src/components/Layout/index.tsx +0 -8
  241. package/src/components/Link/Link.stories.tsx +0 -22
  242. package/src/components/Link/Link.test.tsx +0 -79
  243. package/src/components/Link/Link.tsx +0 -114
  244. package/src/components/Link/index.ts +0 -3
  245. package/src/components/Link/useSafeLink.ts +0 -49
  246. package/src/components/Loaders/LoadingBar.stories.tsx +0 -36
  247. package/src/components/Loaders/LoadingBar.test.tsx +0 -35
  248. package/src/components/Loaders/LoadingBar.tsx +0 -65
  249. package/src/components/Loaders/LoadingDots.stories.tsx +0 -69
  250. package/src/components/Loaders/LoadingDots.test.tsx +0 -22
  251. package/src/components/Loaders/LoadingDots.tsx +0 -68
  252. package/src/components/Loaders/Spinner.stories.tsx +0 -24
  253. package/src/components/Loaders/Spinner.test.tsx +0 -35
  254. package/src/components/Loaders/Spinner.tsx +0 -68
  255. package/src/components/Loaders/index.tsx +0 -3
  256. package/src/components/Modal/Modal.stories.tsx +0 -121
  257. package/src/components/Modal/Modal.test.tsx +0 -46
  258. package/src/components/Modal/Modal.tsx +0 -163
  259. package/src/components/Modal/index.tsx +0 -2
  260. package/src/components/Pagination/Pagination.constants.ts +0 -7
  261. package/src/components/Pagination/Pagination.helper.ts +0 -88
  262. package/src/components/Pagination/Pagination.stories.tsx +0 -29
  263. package/src/components/Pagination/Pagination.test.tsx +0 -102
  264. package/src/components/Pagination/Pagination.tsx +0 -34
  265. package/src/components/Pagination/Pagination.types.ts +0 -55
  266. package/src/components/Pagination/PaginationItem.tsx +0 -74
  267. package/src/components/Pagination/index.ts +0 -2
  268. package/src/components/Pagination/usePagination.test.ts +0 -188
  269. package/src/components/Pagination/usePagination.ts +0 -87
  270. package/src/components/Popover/Popover.stories.tsx +0 -50
  271. package/src/components/Popover/Popover.test.tsx +0 -22
  272. package/src/components/Popover/Popover.tsx +0 -110
  273. package/src/components/Popover/Popover.types.ts +0 -39
  274. package/src/components/Popover/index.ts +0 -11
  275. package/src/components/ProgressBar/ProgressBar.stories.tsx +0 -47
  276. package/src/components/ProgressBar/ProgressBar.test.tsx +0 -40
  277. package/src/components/ProgressBar/ProgressBar.tsx +0 -89
  278. package/src/components/ProgressBar/index.tsx +0 -2
  279. package/src/components/Radio/Radio.stories.tsx +0 -75
  280. package/src/components/Radio/Radio.test.tsx +0 -66
  281. package/src/components/Radio/Radio.tsx +0 -153
  282. package/src/components/Radio/index.ts +0 -2
  283. package/src/components/Section/Section.test.tsx +0 -35
  284. package/src/components/Section/Section.tsx +0 -66
  285. package/src/components/Section/Sections.stories.tsx +0 -56
  286. package/src/components/Section/index.ts +0 -2
  287. package/src/components/Select/Select.constants.ts +0 -12
  288. package/src/components/Select/Select.context.ts +0 -11
  289. package/src/components/Select/Select.fixtures.ts +0 -167
  290. package/src/components/Select/Select.stories.tsx +0 -780
  291. package/src/components/Select/Select.test.tsx +0 -1109
  292. package/src/components/Select/Select.tsx +0 -271
  293. package/src/components/Select/Select.types.ts +0 -148
  294. package/src/components/Select/SelectCreatableOption.tsx +0 -20
  295. package/src/components/Select/SelectEmpty.test.tsx +0 -15
  296. package/src/components/Select/SelectEmpty.tsx +0 -29
  297. package/src/components/Select/SelectOption.test.tsx +0 -78
  298. package/src/components/Select/SelectOption.tsx +0 -79
  299. package/src/components/Select/SelectTrigger.tsx +0 -83
  300. package/src/components/Select/components.tsx +0 -14
  301. package/src/components/Select/index.ts +0 -12
  302. package/src/components/Select/useSelect.helpers.test.ts +0 -184
  303. package/src/components/Select/useSelect.helpers.ts +0 -63
  304. package/src/components/Select/useSelect.test.ts +0 -207
  305. package/src/components/Select/useSelect.ts +0 -540
  306. package/src/components/Select/useSelectExternal.ts +0 -26
  307. package/src/components/SideNavigation/Logo/Logo.test.tsx +0 -19
  308. package/src/components/SideNavigation/Logo/Logo.tsx +0 -26
  309. package/src/components/SideNavigation/Logo/index.ts +0 -1
  310. package/src/components/SideNavigation/Menu/Menu.test.tsx +0 -65
  311. package/src/components/SideNavigation/Menu/Menu.tsx +0 -53
  312. package/src/components/SideNavigation/Menu/MenuBaseItem.tsx +0 -64
  313. package/src/components/SideNavigation/Menu/MenuExpandable.tsx +0 -107
  314. package/src/components/SideNavigation/Menu/MenuLink.tsx +0 -37
  315. package/src/components/SideNavigation/Menu/index.ts +0 -1
  316. package/src/components/SideNavigation/Separator/Separator.test.tsx +0 -14
  317. package/src/components/SideNavigation/Separator/Separator.tsx +0 -20
  318. package/src/components/SideNavigation/Separator/index.ts +0 -1
  319. package/src/components/SideNavigation/SideNavigation.stories.tsx +0 -69
  320. package/src/components/SideNavigation/SideNavigation.test.tsx +0 -21
  321. package/src/components/SideNavigation/SideNavigation.tsx +0 -47
  322. package/src/components/SideNavigation/index.ts +0 -5
  323. package/src/components/SideNavigation/useSideNavigation.ts +0 -36
  324. package/src/components/Steps/ProgressSteps/ProgressStep.tsx +0 -163
  325. package/src/components/Steps/ProgressSteps/ProgressSteps.tsx +0 -37
  326. package/src/components/Steps/ProgressSteps/index.ts +0 -1
  327. package/src/components/Steps/Steps.fixtures.ts +0 -11
  328. package/src/components/Steps/Steps.helpers.ts +0 -11
  329. package/src/components/Steps/Steps.stories.tsx +0 -65
  330. package/src/components/Steps/Steps.test.tsx +0 -78
  331. package/src/components/Steps/Steps.tsx +0 -53
  332. package/src/components/Steps/Steps.types.ts +0 -5
  333. package/src/components/Steps/StepsContext.ts +0 -5
  334. package/src/components/Steps/StepsStep.tsx +0 -58
  335. package/src/components/Steps/index.ts +0 -6
  336. package/src/components/Steps/useStep.test.tsx +0 -217
  337. package/src/components/Steps/useSteps.ts +0 -131
  338. package/src/components/Switch/Switch.stories.tsx +0 -65
  339. package/src/components/Switch/Switch.test.tsx +0 -60
  340. package/src/components/Switch/Switch.tsx +0 -209
  341. package/src/components/Switch/index.ts +0 -2
  342. package/src/components/Table/Selection.tsx +0 -202
  343. package/src/components/Table/Table.fixtures.ts +0 -101
  344. package/src/components/Table/Table.stories.tsx +0 -568
  345. package/src/components/Table/Table.test.tsx +0 -310
  346. package/src/components/Table/Table.tsx +0 -523
  347. package/src/components/Table/Table.types.ts +0 -93
  348. package/src/components/Table/TableSortHandle.tsx +0 -31
  349. package/src/components/Table/index.tsx +0 -2
  350. package/src/components/Table/useSortBy.test.ts +0 -96
  351. package/src/components/Table/useSortBy.ts +0 -92
  352. package/src/components/Table/useSortBy.types.ts +0 -21
  353. package/src/components/TablePagination/RowsPerPage.tsx +0 -81
  354. package/src/components/TablePagination/TablePagination.stories.tsx +0 -42
  355. package/src/components/TablePagination/TablePagination.styles.ts +0 -13
  356. package/src/components/TablePagination/TablePagination.test.tsx +0 -111
  357. package/src/components/TablePagination/TablePagination.tsx +0 -49
  358. package/src/components/TablePagination/TablePagination.types.ts +0 -69
  359. package/src/components/TablePagination/TablePaginationActions.tsx +0 -144
  360. package/src/components/TablePagination/index.ts +0 -2
  361. package/src/components/Tabs/Tabs.stories.tsx +0 -78
  362. package/src/components/Tabs/Tabs.test.tsx +0 -103
  363. package/src/components/Tabs/Tabs.tsx +0 -287
  364. package/src/components/Tabs/Tabs.types.ts +0 -7
  365. package/src/components/Tabs/TabsContext.ts +0 -10
  366. package/src/components/Tabs/index.ts +0 -2
  367. package/src/components/Tag/Tag.stories.tsx +0 -112
  368. package/src/components/Tag/Tag.test.tsx +0 -19
  369. package/src/components/Tag/Tag.tsx +0 -393
  370. package/src/components/Tag/index.ts +0 -2
  371. package/src/components/Text/Text.stories.tsx +0 -59
  372. package/src/components/Text/Text.test.tsx +0 -48
  373. package/src/components/Text/Text.tsx +0 -14
  374. package/src/components/Text/index.ts +0 -2
  375. package/src/components/TextField/TextField.stories.tsx +0 -90
  376. package/src/components/TextField/TextField.test.tsx +0 -36
  377. package/src/components/TextField/TextField.tsx +0 -244
  378. package/src/components/TextField/index.ts +0 -6
  379. package/src/components/TextField/useTextField.tsx +0 -26
  380. package/src/components/Textarea/Textarea.stories.tsx +0 -101
  381. package/src/components/Textarea/Textarea.test.tsx +0 -14
  382. package/src/components/Textarea/Textarea.tsx +0 -230
  383. package/src/components/Textarea/index.ts +0 -2
  384. package/src/components/Toast/Toast.stories.tsx +0 -50
  385. package/src/components/Toast/Toast.test.tsx +0 -24
  386. package/src/components/Toast/Toast.tsx +0 -141
  387. package/src/components/Toast/icons/close.svg +0 -3
  388. package/src/components/Toast/icons/danger.svg +0 -4
  389. package/src/components/Toast/icons/neutral.svg +0 -4
  390. package/src/components/Toast/icons/success.svg +0 -3
  391. package/src/components/Toast/icons/warning.svg +0 -4
  392. package/src/components/Toast/index.tsx +0 -2
  393. package/src/components/ToggleGroup/Toggle.test.tsx +0 -76
  394. package/src/components/ToggleGroup/Toggle.tsx +0 -158
  395. package/src/components/ToggleGroup/ToggleGroup.constants.ts +0 -16
  396. package/src/components/ToggleGroup/ToggleGroup.stories.tsx +0 -145
  397. package/src/components/ToggleGroup/ToggleGroup.test.tsx +0 -237
  398. package/src/components/ToggleGroup/ToggleGroup.tsx +0 -165
  399. package/src/components/ToggleGroup/ToggleGroup.types.ts +0 -35
  400. package/src/components/ToggleGroup/ToggleGroupContext.ts +0 -13
  401. package/src/components/ToggleGroup/index.ts +0 -3
  402. package/src/components/Tooltip/Tooltip.stories.tsx +0 -82
  403. package/src/components/Tooltip/Tooltip.test.tsx +0 -49
  404. package/src/components/Tooltip/Tooltip.tsx +0 -185
  405. package/src/components/Tooltip/index.ts +0 -2
  406. package/src/components/TopNavigation/Logo/Logo.test.tsx +0 -21
  407. package/src/components/TopNavigation/Logo/Logo.tsx +0 -20
  408. package/src/components/TopNavigation/Logo/index.ts +0 -1
  409. package/src/components/TopNavigation/Menu/Menu.test.tsx +0 -125
  410. package/src/components/TopNavigation/Menu/Menu.tsx +0 -62
  411. package/src/components/TopNavigation/Menu/MenuItemDropdown.tsx +0 -118
  412. package/src/components/TopNavigation/Menu/MenuItemIcon.tsx +0 -50
  413. package/src/components/TopNavigation/Menu/index.ts +0 -1
  414. package/src/components/TopNavigation/OpenSideNavButton/OpenSideNavButton.tsx +0 -28
  415. package/src/components/TopNavigation/OpenSideNavButton/index.ts +0 -1
  416. package/src/components/TopNavigation/TopNavigation.stories.tsx +0 -42
  417. package/src/components/TopNavigation/TopNavigation.tsx +0 -47
  418. package/src/components/TopNavigation/index.ts +0 -2
  419. package/src/components/VisuallyHidden/VisuallyHidden.mdx +0 -26
  420. package/src/components/VisuallyHidden/VisuallyHidden.stories.tsx +0 -32
  421. package/src/components/VisuallyHidden/VisuallyHidden.test.tsx +0 -18
  422. package/src/components/VisuallyHidden/VisuallyHidden.tsx +0 -6
  423. package/src/components/VisuallyHidden/index.ts +0 -1
  424. package/src/docs/tools/DatePickerEvent.stories.mdx +0 -108
  425. package/src/docs/tools/DragDropFileEvent.stories.mdx +0 -75
  426. package/src/docs/tools/conditional.stories.mdx +0 -251
  427. package/src/docs/tools/selectEvent.stories.mdx +0 -121
  428. package/src/hooks/useClickOutside/index.ts +0 -1
  429. package/src/hooks/useClickOutside/useClickOutside.test.tsx +0 -116
  430. package/src/hooks/useClickOutside/useClickOutside.ts +0 -65
  431. package/src/hooks/useDidMount/index.ts +0 -1
  432. package/src/hooks/useDidMount/useDidMount.test.tsx +0 -38
  433. package/src/hooks/useDidMount/useDidMount.ts +0 -20
  434. package/src/hooks/useFingerprint/index.ts +0 -1
  435. package/src/hooks/useFingerprint/useFingerprint.test.ts +0 -76
  436. package/src/hooks/useFingerprint/useFingerprint.ts +0 -94
  437. package/src/hooks/useFocusTrap/index.ts +0 -2
  438. package/src/hooks/useFocusTrap/useFocusTrap.stories.tsx +0 -87
  439. package/src/hooks/useFocusTrap/useFocusTrap.test.tsx +0 -129
  440. package/src/hooks/useFocusTrap/useFocusTrap.ts +0 -187
  441. package/src/hooks/useFocusWithin/index.ts +0 -2
  442. package/src/hooks/useFocusWithin/useFocusWithin.test.tsx +0 -71
  443. package/src/hooks/useFocusWithin/useFocusWithin.ts +0 -62
  444. package/src/hooks/useHeightExpansionToggler/index.ts +0 -2
  445. package/src/hooks/useHeightExpansionToggler/useHeightExpansionToggler.test.tsx +0 -85
  446. package/src/hooks/useHeightExpansionToggler/useHeightExpansionToggler.ts +0 -54
  447. package/src/hooks/useID/index.ts +0 -1
  448. package/src/hooks/useID/useID.ts +0 -18
  449. package/src/hooks/useSelectable/SelectableStrategy.test.ts +0 -424
  450. package/src/hooks/useSelectable/SelectableStrategy.ts +0 -143
  451. package/src/hooks/useSelectable/index.ts +0 -8
  452. package/src/hooks/useSelectable/useSelectable.test.ts +0 -221
  453. package/src/hooks/useSelectable/useSelectable.ts +0 -156
  454. package/src/hooks/useSelectable/useSelectable.types.ts +0 -45
  455. package/src/hooks/useWindowResize/index.ts +0 -1
  456. package/src/hooks/useWindowResize/useWindowResize.ts +0 -27
  457. package/src/index.ts +0 -188
  458. package/src/stories/assets/code-brackets.svg +0 -1
  459. package/src/stories/assets/colors.svg +0 -1
  460. package/src/stories/assets/comments.svg +0 -1
  461. package/src/stories/assets/direction.svg +0 -1
  462. package/src/stories/assets/flow.svg +0 -1
  463. package/src/stories/assets/plugin.svg +0 -1
  464. package/src/stories/assets/repo.svg +0 -1
  465. package/src/stories/assets/stackalt.svg +0 -1
  466. package/src/stories/introduction.stories.mdx +0 -57
  467. package/src/stories/startPage.stories.mdx +0 -95
  468. package/src/styles/activatable.tsx +0 -30
  469. package/src/styles/disableable.tsx +0 -45
  470. package/src/styles/ellipsizable.tsx +0 -14
  471. package/src/styles/focusable.tsx +0 -32
  472. package/src/styles/font.test.ts +0 -31
  473. package/src/styles/font.tsx +0 -40
  474. package/src/styles/hidden.tsx +0 -29
  475. package/src/styles/hoverable.tsx +0 -30
  476. package/src/styles/transition.tsx +0 -25
  477. package/src/styles/typography.test.ts +0 -93
  478. package/src/styles/typography.ts +0 -190
  479. package/src/testing/DatePickerEvent/DatePickerEvent.ts +0 -117
  480. package/src/testing/DatePickerEvent/DateRangePickerEvent.ts +0 -83
  481. package/src/testing/DatePickerEvent/index.ts +0 -2
  482. package/src/testing/DragDropFileEvent/DragDropFileEvent.ts +0 -56
  483. package/src/testing/DragDropFileEvent/index.ts +0 -1
  484. package/src/testing/SelectEvent/SelectEvent.test.tsx +0 -192
  485. package/src/testing/SelectEvent/SelectEvent.ts +0 -264
  486. package/src/testing/SelectEvent/index.ts +0 -1
  487. package/src/testing/getInterpolatedStyles/getInterpolatedStyles.ts +0 -25
  488. package/src/testing/getInterpolatedStyles/index.ts +0 -1
  489. package/src/testing/index.ts +0 -6
  490. package/src/testing/renderWithDragDropFileProvider/index.ts +0 -1
  491. package/src/testing/renderWithDragDropFileProvider/renderWithDragDropFileProvider.tsx +0 -28
  492. package/src/tests/generator.ts +0 -127
  493. package/src/tests/renderer.tsx +0 -39
  494. package/src/theming/index.ts +0 -42
  495. package/src/theming/themes/alice.theme.ts +0 -1022
  496. package/src/theming/themes/index.ts +0 -3
  497. package/src/theming/themes/loadsmart.theme.ts +0 -1019
  498. package/src/theming/themes/miranda-compatibility.theme.ts +0 -972
  499. package/src/theming/theming.helpers.ts +0 -95
  500. package/src/tools/conditional.test.ts +0 -166
  501. package/src/tools/conditional.ts +0 -127
  502. package/src/tools/index.ts +0 -2
  503. package/src/tools/prop.test.ts +0 -52
  504. package/src/tools/prop.ts +0 -36
  505. package/src/utils/toolset/awaitTo.ts +0 -24
  506. package/src/utils/toolset/flatten.ts +0 -3
  507. package/src/utils/toolset/formatBytes.test.ts +0 -45
  508. package/src/utils/toolset/formatBytes.ts +0 -18
  509. package/src/utils/toolset/get.ts +0 -2
  510. package/src/utils/toolset/getID.test.ts +0 -57
  511. package/src/utils/toolset/getID.ts +0 -93
  512. package/src/utils/toolset/getOrdinalSuffix.test.ts +0 -27
  513. package/src/utils/toolset/getOrdinalSuffix.ts +0 -15
  514. package/src/utils/toolset/highlightMatch.test.tsx +0 -32
  515. package/src/utils/toolset/highlightMatch.tsx +0 -32
  516. package/src/utils/toolset/interleave.test.ts +0 -40
  517. package/src/utils/toolset/interleave.ts +0 -23
  518. package/src/utils/toolset/isEmpty.ts +0 -2
  519. package/src/utils/toolset/isThenable.test.ts +0 -40
  520. package/src/utils/toolset/isThenable.ts +0 -14
  521. package/src/utils/toolset/keyboard.ts +0 -50
  522. package/src/utils/toolset/omit.ts +0 -2
  523. package/src/utils/toolset/pluralize.ts +0 -16
  524. package/src/utils/toolset/range.ts +0 -2
  525. package/src/utils/toolset/rem.ts +0 -7
  526. package/src/utils/toolset/styledCompounds.ts +0 -22
  527. package/src/utils/toolset/toArray.ts +0 -16
  528. package/src/utils/types/ColorScheme.ts +0 -3
  529. package/src/utils/types/EventLike.ts +0 -11
  530. package/src/utils/types/InterpolatedStyle.ts +0 -3
  531. package/src/utils/types/Status.ts +0 -8
@@ -1,143 +0,0 @@
1
- import get from 'utils/toolset/get'
2
-
3
- import type {
4
- Selectable,
5
- SelectableAdapter,
6
- SelectableKeyType,
7
- SelectableState,
8
- SelectableStrategy,
9
- } from './useSelectable.types'
10
-
11
- export type SelectableStrategyContext<T extends Selectable> = {
12
- getAdapter: (type?: string) => SelectableAdapter<T>
13
- }
14
-
15
- const GenericAdapter: SelectableAdapter<unknown> = {
16
- getKey(o): string {
17
- return get(o, 'value')!
18
- },
19
- }
20
-
21
- function createSelectionStrategy<T extends Selectable>(props: {
22
- multiple?: boolean
23
- adapters: Record<string, SelectableAdapter<T>>
24
- }): SelectableStrategy<T> {
25
- const { adapters, multiple } = props
26
-
27
- const context: SelectableStrategyContext<T> = {
28
- getAdapter(type?: string) {
29
- if (type == null) {
30
- return GenericAdapter
31
- }
32
-
33
- return adapters[type] || GenericAdapter
34
- },
35
- }
36
-
37
- if (multiple) {
38
- return MultipleSelectionStrategy(context)
39
- }
40
-
41
- return SingleSelectionStrategy(context)
42
- }
43
-
44
- export function SingleSelectionStrategy<T extends Selectable>(
45
- context: SelectableStrategyContext<T>
46
- ): SelectableStrategy<T> {
47
- return {
48
- type() {
49
- return 'single'
50
- },
51
- init(items: T[]) {
52
- return this.select(items, new Map())
53
- },
54
- select(items: T[]) {
55
- const newSelection = new Map<SelectableKeyType, T>()
56
-
57
- for (let i = 0; i < items.slice(0, 1).length; i++) {
58
- const adapter = context.getAdapter(items[i]._type)
59
- newSelection.set(adapter.getKey(items[i]), items[i])
60
- }
61
-
62
- return newSelection
63
- },
64
- unselect(keys: SelectableKeyType[], selection: SelectableState<T>) {
65
- const newSelection = new Map<SelectableKeyType, T>(selection)
66
-
67
- for (let i = 0; i < keys.length; i++) {
68
- newSelection.delete(keys[i])
69
- }
70
-
71
- return newSelection
72
- },
73
- toggle(items: T[], selection: SelectableState<T>) {
74
- const newSelection = new Map<SelectableKeyType, T>()
75
-
76
- for (let i = 0; i < items.slice(0, 1).length; i++) {
77
- const adapter = context.getAdapter(items[i]._type)
78
-
79
- if (!selection.has(adapter.getKey(items[i]))) {
80
- newSelection.set(adapter.getKey(items[i]), items[i])
81
- }
82
- }
83
-
84
- return newSelection
85
- },
86
- clear() {
87
- return new Map<SelectableKeyType, T>()
88
- },
89
- }
90
- }
91
-
92
- export function MultipleSelectionStrategy<T extends Selectable>(
93
- context: SelectableStrategyContext<T>
94
- ): SelectableStrategy<T> {
95
- return {
96
- type() {
97
- return 'multiple'
98
- },
99
- init(items: T[]) {
100
- return this.select(items, new Map<SelectableKeyType, T>())
101
- },
102
- select(items: T[], selection: SelectableState<T>) {
103
- const newSelection = new Map<SelectableKeyType, T>(selection)
104
-
105
- for (let i = 0; i < items.length; i++) {
106
- const adapter = context.getAdapter(items[i]._type)
107
- newSelection.set(adapter.getKey(items[i]), items[i])
108
- }
109
-
110
- return newSelection
111
- },
112
- unselect(keys: SelectableKeyType[], selection: SelectableState<T>) {
113
- const newSelection = new Map<SelectableKeyType, T>(selection)
114
-
115
- for (let i = 0; i < keys.length; i++) {
116
- newSelection.delete(keys[i])
117
- }
118
-
119
- return newSelection
120
- },
121
- toggle(items: T[], selection: SelectableState<T>) {
122
- const newSelection = new Map<SelectableKeyType, T>(selection)
123
-
124
- for (let i = 0; i < items.length; i++) {
125
- const adapter = context.getAdapter(items[i]._type)
126
- const key = adapter.getKey(items[i])
127
-
128
- if (!selection.has(key)) {
129
- newSelection.set(key, items[i])
130
- } else {
131
- newSelection.delete(key)
132
- }
133
- }
134
-
135
- return newSelection
136
- },
137
- clear() {
138
- return new Map<SelectableKeyType, T>()
139
- },
140
- }
141
- }
142
-
143
- export default createSelectionStrategy
@@ -1,8 +0,0 @@
1
- export { createSelectable } from './useSelectable'
2
- export type {
3
- Selectable,
4
- SelectableAdapter,
5
- SelectableKeyType,
6
- SelectableType,
7
- SelectableState,
8
- } from './useSelectable.types'
@@ -1,221 +0,0 @@
1
- import { renderHook, act } from '@testing-library/react-hooks'
2
-
3
- import { createSelectable } from './useSelectable'
4
- import generator from '../../tests/generator'
5
-
6
- import type { Selectable, SelectableAdapter, SelectableKeyType } from './useSelectable.types'
7
-
8
- interface TestSelectable extends Selectable {
9
- id: string
10
- name: string
11
- }
12
-
13
- const adapter = {
14
- getKey(o: TestSelectable): string {
15
- return o.id
16
- },
17
- }
18
-
19
- const adapters: Record<string, SelectableAdapter<TestSelectable>> = {
20
- test: adapter,
21
- }
22
-
23
- describe('createSelectable', () => {
24
- const { SelectableContext, useSelectable } = createSelectable<TestSelectable>()
25
-
26
- it('returns a context and a useSelectable hook', () => {
27
- expect(SelectableContext.Provider).not.toBeNull()
28
- expect(SelectableContext.Consumer).not.toBeNull()
29
-
30
- expect(useSelectable).not.toBeNull()
31
- expect(typeof useSelectable).toBe('function')
32
- })
33
-
34
- describe('useSelectable', () => {
35
- it('returns select, unselect, toggle, clear functions', () => {
36
- const props = {
37
- selected: [],
38
- adapters,
39
- }
40
-
41
- const { result } = renderHook(() => useSelectable(props))
42
-
43
- expect(typeof result.current.select).toBe('function')
44
- expect(typeof result.current.unselect).toBe('function')
45
- expect(typeof result.current.toggle).toBe('function')
46
- expect(typeof result.current.clear).toBe('function')
47
- })
48
-
49
- it('returns empty selected, when empty selected is initially provided', () => {
50
- const props = {
51
- selected: [],
52
- adapters,
53
- }
54
- const { result } = renderHook(() => useSelectable(props))
55
- const expectedSelected = new Map<SelectableKeyType, TestSelectable>()
56
-
57
- expect(result.current.selected).toEqual(expectedSelected)
58
- })
59
-
60
- it('returns selected correctly when selected is initially provided', () => {
61
- const item = {
62
- _type: 'test',
63
- id: generator.id(),
64
- name: generator.name(),
65
- }
66
-
67
- const props = {
68
- selected: [item],
69
- adapters,
70
- }
71
- const { result } = renderHook(() => useSelectable(props))
72
-
73
- const expectedSelected = new Map<SelectableKeyType, TestSelectable>().set(
74
- adapter.getKey(item),
75
- item
76
- )
77
-
78
- expect(result.current.selected).toEqual(expectedSelected)
79
- })
80
-
81
- it('update selected correctly when the provided selected changes', () => {
82
- const item = {
83
- _type: 'test',
84
- id: generator.id(),
85
- name: generator.name(),
86
- }
87
-
88
- const { result, rerender } = renderHook((props) => useSelectable(props), {
89
- initialProps: {
90
- selected: [item],
91
- adapters,
92
- },
93
- })
94
-
95
- const initialExpectedSelected = new Map<SelectableKeyType, TestSelectable>().set(
96
- adapter.getKey(item),
97
- item
98
- )
99
-
100
- expect(result.current.selected).toEqual(initialExpectedSelected)
101
-
102
- const otherItem = {
103
- _type: 'test',
104
- id: 'sure-it-is-another-id',
105
- name: generator.name(),
106
- }
107
-
108
- rerender({
109
- selected: [otherItem],
110
- adapters,
111
- })
112
-
113
- const expectedSelected = new Map<SelectableKeyType, TestSelectable>().set(
114
- adapter.getKey(otherItem),
115
- otherItem
116
- )
117
-
118
- expect(result.current.selected).toEqual(expectedSelected)
119
- })
120
-
121
- it('calls onChange prop when select is called', () => {
122
- const item = {
123
- _type: 'test',
124
- id: generator.id(),
125
- name: generator.name(),
126
- }
127
-
128
- const props = {
129
- selected: [],
130
- adapters,
131
- onChange: jest.fn(),
132
- }
133
-
134
- const { result } = renderHook(() => useSelectable(props))
135
-
136
- const expectedSelected = new Map<SelectableKeyType, TestSelectable>().set(
137
- adapter.getKey(item),
138
- item
139
- )
140
-
141
- act(() => {
142
- result.current.select(item)
143
- })
144
-
145
- expect(props.onChange).toHaveBeenCalledWith(expectedSelected)
146
- })
147
-
148
- it('calls onChange prop when unselect is called', () => {
149
- const item = {
150
- _type: 'test',
151
- id: generator.id(),
152
- name: generator.name(),
153
- }
154
-
155
- const props = {
156
- selected: [item],
157
- adapters,
158
- onChange: jest.fn(),
159
- }
160
-
161
- const { result } = renderHook(() => useSelectable(props))
162
-
163
- act(() => {
164
- result.current.unselect(item.id)
165
- })
166
-
167
- const expectedSelected = new Map<SelectableKeyType, TestSelectable>()
168
- expect(props.onChange).toHaveBeenCalledWith(expectedSelected)
169
- })
170
-
171
- it('calls onChange prop when toggle is called', () => {
172
- const item = {
173
- _type: 'test',
174
- id: generator.id(),
175
- name: generator.name(),
176
- }
177
-
178
- const props = {
179
- selected: [],
180
- adapters,
181
- onChange: jest.fn(),
182
- }
183
-
184
- const { result } = renderHook(() => useSelectable(props))
185
-
186
- const expectedSelected = new Map<SelectableKeyType, TestSelectable>().set(
187
- adapter.getKey(item),
188
- item
189
- )
190
-
191
- act(() => {
192
- result.current.toggle(item)
193
- })
194
-
195
- expect(props.onChange).toHaveBeenCalledWith(expectedSelected)
196
- })
197
-
198
- it('calls onChange prop when clear is called', () => {
199
- const item = {
200
- _type: 'test',
201
- id: generator.id(),
202
- name: generator.name(),
203
- }
204
-
205
- const props = {
206
- selected: [item],
207
- adapters,
208
- onChange: jest.fn(),
209
- }
210
-
211
- const { rerender, result } = renderHook(() => useSelectable(props))
212
-
213
- act(() => {
214
- result.current.clear()
215
- })
216
-
217
- const expectedSelected = new Map<SelectableKeyType, TestSelectable>()
218
- expect(props.onChange).toHaveBeenCalledWith(expectedSelected)
219
- })
220
- })
221
- })
@@ -1,156 +0,0 @@
1
- import { createContext, useEffect, useMemo, useReducer, useRef } from 'react'
2
- import { identity } from '@loadsmart/utils-function'
3
-
4
- import { useDidMount } from 'hooks/useDidMount'
5
- import createSelectionStrategy from './SelectableStrategy'
6
- import toArray from 'utils/toolset/toArray'
7
- import useFingerprint from 'hooks/useFingerprint'
8
-
9
- import type { Context } from 'react'
10
- import type {
11
- Selectable,
12
- SelectableAction,
13
- SelectableKeyType,
14
- SelectableState,
15
- SelectableStrategy,
16
- useSelectableProps,
17
- useSelectableReturn,
18
- } from './useSelectable.types'
19
-
20
- const DEFAULT_ADAPTERS = {}
21
-
22
- /**
23
- * Create a generic manager for collection selection.
24
- * @returns
25
- */
26
- function createUseSelectable<T extends Selectable>() {
27
- return function useSelectable(props: useSelectableProps<T>): useSelectableReturn<T> {
28
- const { adapters, multiple, onChange } = props
29
-
30
- const didMount = useDidMount()
31
-
32
- const strategy = useMemo<SelectableStrategy<T>>(() => {
33
- return createSelectionStrategy<T>({
34
- adapters: adapters || DEFAULT_ADAPTERS,
35
- multiple: Boolean(multiple),
36
- })
37
- }, [adapters, multiple])
38
-
39
- function reducer(state: SelectableState<T>, action: SelectableAction<T>) {
40
- switch (action.type) {
41
- case 'select':
42
- return strategy.select(action.payload, state)
43
- case 'unselect':
44
- return strategy.unselect(action.payload, state)
45
- case 'toggle':
46
- return strategy.toggle(action.payload, state)
47
- case 'clear':
48
- return strategy.clear(state)
49
- case 'reset':
50
- return action.payload
51
- }
52
- }
53
-
54
- function initializer() {
55
- return strategy.init(toArray(props.selected))
56
- }
57
-
58
- const [selected, dispatch] = useReducer(reducer, new Map<SelectableKeyType, T>(), initializer)
59
- const { resetFingerprint, hasSameFingerprint } = useFingerprint<string>(
60
- identity,
61
- [...selected.keys()].map(String)
62
- )
63
- const propagateChangeRef = useRef(false)
64
-
65
- function type() {
66
- return strategy.type()
67
- }
68
-
69
- function select(items: T | T[]) {
70
- propagateChangeRef.current = true
71
-
72
- dispatch({
73
- type: 'select',
74
- payload: toArray(items),
75
- })
76
- }
77
-
78
- function unselect(keys: SelectableKeyType | SelectableKeyType[]) {
79
- propagateChangeRef.current = true
80
-
81
- dispatch({
82
- type: 'unselect',
83
- payload: toArray(keys),
84
- })
85
- }
86
-
87
- function toggle(items: T | T[]) {
88
- propagateChangeRef.current = true
89
-
90
- dispatch({
91
- type: 'toggle',
92
- payload: toArray(items),
93
- })
94
- }
95
-
96
- function clear() {
97
- propagateChangeRef.current = true
98
-
99
- dispatch({
100
- type: 'clear',
101
- })
102
- }
103
-
104
- useEffect(
105
- function handleChange() {
106
- if (didMount && propagateChangeRef.current) {
107
- onChange?.(selected)
108
- }
109
-
110
- propagateChangeRef.current = false
111
- },
112
- /**
113
- * We don't want to update when didMount or the onChange callback changes, because we're only interested
114
- * in changes to the selected state.
115
- */
116
- // eslint-disable-next-line react-hooks/exhaustive-deps
117
- [selected]
118
- )
119
-
120
- useEffect(
121
- function updateOnSelectedPropChange() {
122
- const newSelected = initializer()
123
- const keys = [...newSelected.keys()].map(String)
124
-
125
- if (hasSameFingerprint(keys)) {
126
- return
127
- }
128
-
129
- propagateChangeRef.current = false
130
-
131
- resetFingerprint(keys)
132
- dispatch({
133
- type: 'reset',
134
- payload: newSelected,
135
- })
136
- },
137
- /**
138
- * initializer is not relevant for our changes, that's why its ommitted.
139
- */
140
- // eslint-disable-next-line react-hooks/exhaustive-deps
141
- [props.selected, hasSameFingerprint, resetFingerprint]
142
- )
143
-
144
- return { type, selected, select, unselect, toggle, clear }
145
- }
146
- }
147
-
148
- export function createSelectable<T extends Selectable>(): {
149
- SelectableContext: Context<useSelectableReturn<T>>
150
- useSelectable: (props: useSelectableProps<T>) => useSelectableReturn<T>
151
- } {
152
- const SelectableContext = createContext<useSelectableReturn<T>>({} as useSelectableReturn<T>)
153
- const useSelectable = createUseSelectable<T>()
154
-
155
- return { SelectableContext, useSelectable }
156
- }
@@ -1,45 +0,0 @@
1
- export type SelectableKeyType = string | number | boolean
2
-
3
- export interface Selectable {
4
- _type?: string
5
- }
6
-
7
- export interface SelectableAdapter<T> {
8
- getKey: (o: T) => SelectableKeyType
9
- }
10
-
11
- export type SelectableState<T extends Selectable> = Map<SelectableKeyType, T>
12
-
13
- export type SelectableType = 'single' | 'multiple'
14
-
15
- export type SelectableStrategy<T extends Selectable> = {
16
- type: () => SelectableType
17
- init: (items: T[]) => SelectableState<T>
18
- select: (items: T[], selection: SelectableState<T>) => SelectableState<T>
19
- unselect: (keys: SelectableKeyType[], selection: SelectableState<T>) => SelectableState<T>
20
- toggle: (items: T[], selection: SelectableState<T>) => SelectableState<T>
21
- clear: (selection: SelectableState<T>) => SelectableState<T>
22
- }
23
-
24
- export type SelectableAction<T extends Selectable> =
25
- | { type: 'select'; payload: T[] }
26
- | { type: 'unselect'; payload: SelectableKeyType[] }
27
- | { type: 'toggle'; payload: T[] }
28
- | { type: 'clear' }
29
- | { type: 'reset'; payload: SelectableState<T> }
30
-
31
- export interface useSelectableReturn<T extends Selectable> {
32
- type: () => SelectableType
33
- selected: SelectableState<T>
34
- select: (items: T | T[]) => void
35
- unselect: (keys: SelectableKeyType | SelectableKeyType[]) => void
36
- toggle: (items: T | T[]) => void
37
- clear: () => void
38
- }
39
-
40
- export interface useSelectableProps<T extends Selectable> {
41
- selected: T | T[]
42
- multiple?: boolean
43
- onChange?: (selected: SelectableState<T>) => void
44
- adapters?: Record<string, SelectableAdapter<T>>
45
- }
@@ -1 +0,0 @@
1
- export { default } from './useWindowResize'
@@ -1,27 +0,0 @@
1
- import { useState, useEffect } from 'react'
2
-
3
- function useWindowSize() {
4
- const [windowSize, setWindowSize] = useState<{
5
- width: number
6
- height: number
7
- }>({
8
- width: window.innerWidth,
9
- height: window.innerHeight,
10
- })
11
-
12
- useEffect(() => {
13
- function handleResize() {
14
- setWindowSize({
15
- width: window.innerWidth,
16
- height: window.innerHeight,
17
- })
18
- }
19
-
20
- window.addEventListener('resize', handleResize)
21
-
22
- return () => window.removeEventListener('resize', handleResize)
23
- }, [])
24
- return windowSize
25
- }
26
-
27
- export default useWindowSize