@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,540 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { isFunction } from '@loadsmart/utils-function'
3
- import { isNil } from '@loadsmart/utils-object'
4
- import { useCallback, useEffect, useMemo, useRef, useState } from 'react'
5
-
6
- import isEmpty from 'utils/toolset/isEmpty'
7
- import { useDropdown } from 'components/Dropdown'
8
- import { useDidMount } from 'hooks/useDidMount'
9
- import { useFocusTrap } from 'hooks/useFocusTrap'
10
- import type { SelectableKeyType } from 'hooks/useSelectable'
11
- import to from 'utils/toolset/awaitTo'
12
- import { isThenable } from 'utils/toolset/isThenable'
13
- import toArray from 'utils/toolset/toArray'
14
- import { GenericAdapter } from './Select.constants'
15
- import { useSelectable } from './Select.context'
16
- import {
17
- escapeRegExp,
18
- getAdapter,
19
- getDisplayValue,
20
- getValue,
21
- toSelection,
22
- } from './useSelect.helpers'
23
-
24
- import type { ChangeEvent, FocusEvent } from 'react'
25
- import type {
26
- Adapters,
27
- GenericOption,
28
- Option,
29
- SelectDatasource,
30
- SelectDatasourceFunction,
31
- SelectProps,
32
- SelectStatus,
33
- SelectValue,
34
- useSelectReturn,
35
- } from './Select.types'
36
-
37
- async function getData(datasources: SelectDatasource<any>[], query: string) {
38
- const regex = new RegExp(escapeRegExp(query), 'i')
39
-
40
- const promises = []
41
- const types: string[] = []
42
-
43
- for (const ds of datasources) {
44
- promises.push(Promise.resolve(ds.fetch({ query, regex })))
45
- types.push(ds.type)
46
- }
47
-
48
- // We use Promise.allSettled here because Promise.all rejects as soon as one promise fails
49
- // But we want to continue with the next datasource when one fails.
50
- const results = await Promise.allSettled(promises)
51
-
52
- let items: Option[] = []
53
-
54
- results.forEach((result, index) => {
55
- if (result.status === 'rejected') {
56
- return
57
- }
58
-
59
- const type = types[index]
60
-
61
- items = items.concat(
62
- (result.value || []).map((item) => {
63
- return {
64
- ...item,
65
- _type: type,
66
- } as Option
67
- })
68
- )
69
- })
70
-
71
- return items
72
- }
73
-
74
- function getDatasources(props: SelectProps) {
75
- function getDatasourceFromOptions(
76
- options?: GenericOption[] | null
77
- ): SelectDatasourceFunction<any>[] {
78
- if (!options) {
79
- return []
80
- }
81
-
82
- return [
83
- function useGenericDatasource() {
84
- return {
85
- type: 'generic',
86
- adapter: GenericAdapter,
87
- fetch: function fetch({ regex }) {
88
- return options.filter(({ label }) => regex.test(label))
89
- },
90
- }
91
- },
92
- ]
93
- }
94
-
95
- let datasources: SelectDatasourceFunction<any>[] = []
96
-
97
- datasources = datasources.concat(props.datasources || [])
98
- datasources = datasources.concat(getDatasourceFromOptions(props.options))
99
-
100
- return datasources.map((ds) => ds())
101
- }
102
-
103
- function extractAdapters(datasources: SelectDatasource<any>[]) {
104
- return toArray(datasources).reduce((map, ds) => {
105
- return {
106
- ...map,
107
- [ds.type]: ds.adapter,
108
- }
109
- }, {})
110
- }
111
-
112
- function TriggerOnFocusHandler(e: FocusEvent<HTMLInputElement>) {
113
- e.target.select()
114
- }
115
-
116
- function mapOptions(items: Option[], adapters: Adapters) {
117
- const options = new Map<SelectableKeyType, Option>()
118
-
119
- items.forEach((item) => {
120
- const adapter = getAdapter(adapters, item._type)
121
- options.set(adapter.getKey(item), item)
122
- })
123
-
124
- return options
125
- }
126
-
127
- function useOptions<T = any>(props: { datasources: SelectDatasource<T>[]; adapters: Adapters }) {
128
- const { datasources, adapters } = props
129
- const [options, setOptions] = useState(new Map<SelectableKeyType, Option>())
130
- const [status, setStatus] = useState<SelectStatus>('idle')
131
-
132
- const timeoutRef = useRef<NodeJS.Timeout>()
133
-
134
- function cancelPendingFetch() {
135
- if (timeoutRef.current != null) {
136
- clearTimeout(timeoutRef.current)
137
- }
138
- }
139
-
140
- const fetchAfterTimeout = useCallback(
141
- function fetchAfterTimeout(query: string) {
142
- cancelPendingFetch()
143
- /**
144
- * The `pending-query` status represents that the 'fetching' has been started
145
- * but it has been debounced and the internal fetch has not yet been called.
146
- * This is important because at this point the status is not idle
147
- * as the fetching has already started.
148
- */
149
- setStatus('pending-query')
150
-
151
- async function fetch() {
152
- setOptions(new Map<SelectableKeyType, Option>())
153
- setStatus('querying')
154
-
155
- const items = await getData(datasources, query)
156
-
157
- setOptions(mapOptions(items, adapters))
158
- setStatus('queried')
159
- }
160
-
161
- timeoutRef.current = setTimeout(() => void fetch(), 750)
162
- },
163
- [adapters, datasources]
164
- )
165
-
166
- const clear = useCallback(function clear() {
167
- setStatus('idle')
168
- setOptions(new Map<SelectableKeyType, Option>())
169
- }, [])
170
-
171
- const get = useCallback(
172
- function get() {
173
- return Array.from(options.values())
174
- },
175
- [options]
176
- )
177
-
178
- const reset = useCallback(
179
- function reset() {
180
- clear()
181
- fetchAfterTimeout('')
182
- },
183
- [clear, fetchAfterTimeout]
184
- )
185
-
186
- const getOptionByKey = useCallback(
187
- function getOptionByKey(key: SelectableKeyType) {
188
- return options.get(key)
189
- },
190
- [options]
191
- )
192
-
193
- useEffect(() => {
194
- return () => {
195
- cancelPendingFetch()
196
- }
197
- }, [])
198
-
199
- return {
200
- get,
201
- fetch: fetchAfterTimeout,
202
- clear,
203
- status,
204
- getOptionByKey,
205
- reset,
206
- }
207
- }
208
-
209
- // TODO: keep adapter resolution in a single place
210
- // TODO: prevent state changes after unmount (`useMounted` hook from Alice Frontend)
211
- /**
212
- * Based on https://www.w3.org/TR/wai-aria-practices-1.1/examples/combobox/aria1.1pattern/listbox-combo.html
213
- * @param props
214
- * @returns
215
- */
216
- function useSelect(props: SelectProps): useSelectReturn {
217
- const didMount = useDidMount()
218
- const {
219
- multiple,
220
- onQueryChange,
221
- onChange,
222
- onCreate,
223
- getInputProps,
224
- id,
225
- name,
226
- disabled = false,
227
- onBlur,
228
- isValidNewOption = (query: string) => Boolean(query),
229
- createOptionPosition = 'last',
230
- } = props
231
-
232
- // eslint-disable-next-line react-hooks/exhaustive-deps
233
- const datasources = useMemo<SelectDatasource<any>[]>(
234
- () => getDatasources(props),
235
- [props.datasources, props.options]
236
- )
237
- const adapters = useMemo<Adapters>(() => extractAdapters(datasources), [datasources])
238
-
239
- const selectable = useSelectable({
240
- selected: toSelection(props.value),
241
- multiple,
242
- adapters,
243
- onChange: useCallback(
244
- function handleSelectionChange(selected: SelectValue) {
245
- onChange?.({ target: { id, name, value: getValue(selected, multiple) } })
246
- },
247
- [id, multiple, name, onChange]
248
- ),
249
- })
250
-
251
- const triggerRef = useRef<HTMLInputElement>()
252
- const focusTrap = useFocusTrap({
253
- keys: ['ARROW_UP', 'ARROW_DOWN'],
254
- onDeactivate() {
255
- triggerRef.current?.focus()
256
- },
257
- })
258
-
259
- const [queryTyped, setQueryTyped] = useState(false)
260
- const [query, setQuery] = useState<string>(
261
- getDisplayValue(adapters, selectable.selected, multiple)
262
- )
263
- const options = useOptions({ datasources, adapters })
264
-
265
- const expandDisabled = useMemo(
266
- () =>
267
- !query.length &&
268
- isEmpty(options.get()) &&
269
- isEmpty(selectable.selected) &&
270
- isFunction(isValidNewOption)
271
- ? !isValidNewOption(query)
272
- : !isValidNewOption,
273
- [query, options, selectable.selected, isValidNewOption]
274
- )
275
-
276
- const dropdown = useDropdown({ ...props, expandDisabled })
277
-
278
- useEffect(() => {
279
- if (queryTyped) {
280
- options.fetch(query)
281
- dropdown.expand()
282
- }
283
- }, [query, queryTyped])
284
-
285
- const getSelectableOption = useCallback(
286
- function getSelectableOption(option: Option) {
287
- const adapter = getAdapter(adapters, option._type)
288
-
289
- const value = adapter.getKey(option)
290
- const label = adapter.getLabel(option)
291
- const checked = selectable.selected.has(value)
292
-
293
- return { label, value, checked }
294
- },
295
- [adapters, selectable.selected]
296
- )
297
-
298
- const getOption = useCallback(
299
- function getOption(value: SelectableKeyType) {
300
- let option = options.getOptionByKey(value)
301
-
302
- if (!option) {
303
- option = selectable.selected.get(value)
304
- }
305
-
306
- return option
307
- },
308
- [options, selectable.selected]
309
- )
310
-
311
- const toggleOption = useCallback(
312
- function toggleOption(option: Option) {
313
- selectable.toggle(option)
314
- },
315
- [selectable]
316
- )
317
-
318
- const getDropdownProps = useCallback(
319
- function getDropdownProps() {
320
- return {
321
- toggle: dropdown.toggle,
322
- expanded: dropdown.expanded,
323
- onBlur(event?: MouseEvent | TouchEvent | KeyboardEvent) {
324
- setQueryTyped(false)
325
-
326
- if (!multiple) {
327
- setQuery(getDisplayValue(adapters, selectable.selected, multiple))
328
- } else {
329
- setQuery('')
330
- }
331
- options.reset()
332
- onBlur?.(event)
333
- },
334
- expandDisabled,
335
- }
336
- },
337
- [
338
- adapters,
339
- dropdown.expanded,
340
- dropdown.toggle,
341
- multiple,
342
- options,
343
- selectable.selected,
344
- onBlur,
345
- expandDisabled,
346
- ]
347
- )
348
-
349
- const getTriggerProps = useCallback(
350
- function getTriggerProps() {
351
- return {
352
- ...getInputProps?.(),
353
- id,
354
- ref(node: HTMLInputElement | null) {
355
- if (node != null) {
356
- triggerRef.current = node
357
- }
358
- },
359
- value: query,
360
- onChange(e: ChangeEvent<HTMLInputElement>) {
361
- const sanitizedValue = e.target.value.replace(/\s+/, '')
362
-
363
- setQueryTyped(sanitizedValue !== '')
364
- onQueryChange?.(e)
365
- setQuery(e.target.value)
366
- },
367
- onFocus: TriggerOnFocusHandler,
368
- }
369
- },
370
- [id, query, onQueryChange, dropdown, options, selectable.selected]
371
- )
372
-
373
- const getClearProps = useCallback(
374
- function getClearProps() {
375
- return {
376
- onClick() {
377
- setQueryTyped(false)
378
- setQuery('')
379
- selectable.clear()
380
- options.reset()
381
- triggerRef.current?.focus()
382
- },
383
- }
384
- },
385
- [options, selectable]
386
- )
387
-
388
- const getMenuProps = useCallback(
389
- function getMenuProps() {
390
- return {
391
- ref: focusTrap.containerRef,
392
- role: 'listbox',
393
- }
394
- },
395
- [focusTrap.containerRef]
396
- )
397
-
398
- const getOptionProps = useCallback(
399
- function getOptionProps({ option }: { option: Option }) {
400
- const { value, checked, label } = getSelectableOption(option)
401
-
402
- return {
403
- role: 'option',
404
- 'aria-selected': checked,
405
- id: String(value),
406
- onClick() {
407
- setQueryTyped(false)
408
-
409
- if (!multiple) {
410
- setQueryTyped(false)
411
- }
412
- toggleOption(option)
413
-
414
- return multiple
415
- },
416
- tabIndex: -1,
417
- }
418
- },
419
- [getSelectableOption, toggleOption, multiple]
420
- )
421
-
422
- const getCreatebleProps = useCallback(
423
- function getCreatebleProps() {
424
- return {
425
- onClick: function onClick() {
426
- async function asyncOnClick() {
427
- if (!isFunction(onCreate)) return
428
-
429
- const onCreateReturn = onCreate(query)
430
-
431
- let option
432
- if (onCreateReturn) {
433
- if (isThenable(onCreateReturn)) {
434
- option = await onCreateReturn
435
- } else {
436
- option = onCreateReturn
437
- }
438
- }
439
-
440
- options.fetch(query)
441
-
442
- if (option) {
443
- toggleOption(option)
444
- }
445
- }
446
-
447
- void asyncOnClick()
448
-
449
- return multiple
450
- },
451
- tabIndex: -1,
452
- }
453
- },
454
- [multiple, onCreate, query, options, toggleOption]
455
- )
456
-
457
- const isCreatable = useCallback(
458
- function isCreatable() {
459
- const findByLabel = (item: Option) =>
460
- getSelectableOption(item).label.toLocaleLowerCase() === query.toLocaleLowerCase()
461
-
462
- function isQueryEqualAnOption() {
463
- return !isNil(
464
- [...options.get(), ...Array.from(selectable.selected.values())].find(findByLabel)
465
- )
466
- }
467
-
468
- function getIsValidNewOption() {
469
- if (isFunction(isValidNewOption)) {
470
- return isValidNewOption(query) && !isQueryEqualAnOption()
471
- }
472
-
473
- return isValidNewOption
474
- }
475
-
476
- return isFunction(onCreate) && options.status === 'queried' && getIsValidNewOption()
477
- },
478
- [getSelectableOption, isValidNewOption, onCreate, options, query, selectable.selected]
479
- )
480
-
481
- useEffect(
482
- function onInit() {
483
- options.fetch('')
484
- },
485
- // we just want to load any initial options that a datasource may have available
486
- // eslint-disable-next-line react-hooks/exhaustive-deps
487
- [datasources]
488
- )
489
-
490
- useEffect(
491
- function onDropdownToggle() {
492
- if (!props.autoFocus && !didMount) {
493
- return
494
- }
495
- if (dropdown.expanded) {
496
- focusTrap.activate()
497
- } else {
498
- focusTrap.deactivate()
499
- }
500
- },
501
- /**
502
- * We are interested in activating/deactivating our
503
- * focus trap when the dropdown changes its expanded state.
504
- */
505
- // eslint-disable-next-line react-hooks/exhaustive-deps
506
- [dropdown.expanded]
507
- )
508
-
509
- useEffect(
510
- function updateOnSelectedChange() {
511
- if (!multiple) {
512
- setQuery(getDisplayValue(adapters, selectable.selected, multiple))
513
- }
514
- },
515
- [adapters, multiple, selectable.selected]
516
- )
517
-
518
- return {
519
- status: options.status,
520
- options: options.get(),
521
- value: getValue(selectable.selected, multiple),
522
- query,
523
- disabled,
524
-
525
- selectable,
526
-
527
- getMenuProps,
528
- getSelectableOption,
529
- getOption,
530
- getOptionProps,
531
- getTriggerProps,
532
- getClearProps,
533
- getDropdownProps,
534
- getCreatebleProps,
535
- isCreatable,
536
- createOptionPosition,
537
- }
538
- }
539
-
540
- export default useSelect
@@ -1,26 +0,0 @@
1
- import { useCallback, useContext } from 'react'
2
-
3
- import { SelectContext } from './Select.context'
4
- import type { Option, useSelectExternalReturn } from './Select.types'
5
-
6
- export function useSelectExternal(): useSelectExternalReturn {
7
- const select =
8
- useContext(SelectContext) ||
9
- (() => {
10
- throw new Error('useSelect should be wrapped in a SelectContext')
11
- })()
12
-
13
- const isChecked = useCallback(
14
- function isChecked(option: Option) {
15
- const { checked } = select.getSelectableOption(option)
16
- return checked
17
- },
18
- [select]
19
- )
20
-
21
- return {
22
- query: select.query,
23
- getOption: select.getOption,
24
- isChecked,
25
- }
26
- }
@@ -1,19 +0,0 @@
1
- import React from 'react'
2
-
3
- import { Logo } from './'
4
- import renderer, { screen } from '../../../tests/renderer'
5
- import generator from '../../../tests/generator'
6
- import type { LogoProps } from './Logo'
7
-
8
- const setup = ({ ...overrides }: LogoProps) => renderer(<Logo {...overrides} />).render()
9
-
10
- describe('<Logo />', () => {
11
- it('renders correctly', () => {
12
- const sentence = generator.sentence()
13
- const url = generator.url()
14
- setup({ url, children: <span>{sentence}</span> })
15
-
16
- expect(screen.getByText(sentence)).toBeInTheDocument()
17
- expect(screen.getByRole('link')).toHaveProperty('href', url)
18
- })
19
- })
@@ -1,26 +0,0 @@
1
- import React from 'react'
2
- import type { PropsWithChildren } from 'react'
3
- import styled from 'styled-components'
4
-
5
- import { getToken as token } from 'theming'
6
- import { BaseLink } from 'components/Link'
7
-
8
- export type LogoProps = PropsWithChildren<{
9
- url: string
10
- className?: string
11
- }>
12
-
13
- const Container = styled.div`
14
- padding-right: ${token('space-l')};
15
- padding-left: ${token('space-l')};
16
- `
17
-
18
- function Logo({ className, url, children }: LogoProps): JSX.Element {
19
- return (
20
- <Container className={className}>
21
- <BaseLink href={url}>{children}</BaseLink>
22
- </Container>
23
- )
24
- }
25
-
26
- export default styled(Logo)<LogoProps>({})
@@ -1 +0,0 @@
1
- export { default as Logo } from './Logo'
@@ -1,65 +0,0 @@
1
- import React from 'react'
2
-
3
- import { Menu } from './'
4
- import type { MenuProps } from './Menu'
5
- import renderer, { screen } from '../../../tests/renderer'
6
- import generator from '../../../tests/generator'
7
- import userEvent from '@testing-library/user-event'
8
-
9
- function setup(props: MenuProps) {
10
- renderer(<Menu {...props} />).render()
11
- }
12
-
13
- describe('<Menu />', () => {
14
- it('should handle label and items', () => {
15
- const label = generator.word()
16
- const itemLabel = generator.word()
17
- const itemUrl = generator.url()
18
-
19
- setup({
20
- label: label,
21
- children: <Menu.Item label={itemLabel} url={itemUrl} />,
22
- })
23
-
24
- expect(screen.getByRole('menubar')).toBeInTheDocument()
25
- expect(screen.getByRole('menubar')).toHaveTextContent(label)
26
- expect(screen.getByRole('menuitem')).toHaveTextContent(itemLabel)
27
- expect(screen.getByRole('menuitem')).toHaveProperty('href', itemUrl)
28
- })
29
-
30
- it('should accept labels with leading and trailing as elements', () => {
31
- const leading = <span>leading</span>
32
- const trailing = <span>trailing</span>
33
-
34
- setup({
35
- label: 'label',
36
- children: <Menu.Item leading={leading} trailing={trailing} label="" url="#" />,
37
- })
38
-
39
- expect(screen.getByRole('menuitem')).toHaveTextContent('leading')
40
- expect(screen.getByRole('menuitem')).toHaveTextContent('trailing')
41
- })
42
-
43
- it('correctly expands and collapses subItems', () => {
44
- const itemLabel = generator.word()
45
- const subLabel = generator.word()
46
-
47
- setup({
48
- children: (
49
- <Menu.Item label={itemLabel}>
50
- <Menu.SubItem label={subLabel} url="#" />
51
- </Menu.Item>
52
- ),
53
- })
54
-
55
- expect(screen.getByText(subLabel)).not.toBeVisible()
56
-
57
- userEvent.click(screen.getByText(itemLabel))
58
-
59
- expect(screen.getByText(subLabel)).toBeVisible()
60
-
61
- userEvent.click(screen.getByText(itemLabel))
62
-
63
- expect(screen.getByText(subLabel)).not.toBeVisible()
64
- })
65
- })