@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,173 +0,0 @@
1
- import React from 'react'
2
- import { composeStories } from '@storybook/react'
3
-
4
- import { ACTIONS, PROFILE_ACTIONS, SUBSCRIPTION_ACTIONS } from './Dropdown.fixtures'
5
- import * as stories from './Dropdown.stories'
6
- import generator from '../../tests/generator'
7
- import renderer, { screen, user, waitFor } from '../../tests/renderer'
8
-
9
- const { Playground, WithSections, Extended } = composeStories(stories)
10
-
11
- describe('Dropdown', () => {
12
- describe('Generic', () => {
13
- const setup = (overrides?: Partial<stories.DropdownStoryProps>) =>
14
- renderer(<Playground {...overrides} />).render()
15
-
16
- it('starts collapsed', () => {
17
- setup()
18
-
19
- screen.getByText('Actions')
20
-
21
- for (let i = 0; i < ACTIONS.length; i++) {
22
- expect(screen.queryByText(ACTIONS[i].label)).not.toBeInTheDocument()
23
- }
24
- })
25
-
26
- it('renders all options when expanded', async () => {
27
- setup()
28
-
29
- user.click(screen.getByText('Actions'))
30
-
31
- expect(await screen.findByText(ACTIONS[0].label)).toBeInTheDocument()
32
-
33
- for (let i = 1; i < ACTIONS.length; i++) {
34
- expect(screen.getByText(ACTIONS[i].label)).toBeInTheDocument()
35
- }
36
- })
37
-
38
- it('performs option click and collapses', async () => {
39
- setup()
40
-
41
- user.click(screen.getByText('Actions'))
42
-
43
- await screen.findByTestId('dropdown-menu')
44
-
45
- const items = screen.getAllByTestId('dropdown-menu-item')
46
- expect(items.length).toBe(ACTIONS.length)
47
-
48
- const indexToClick = generator.natural({ min: 0, max: items.length - 1 })
49
- const itemToClick = items[indexToClick]
50
-
51
- user.click(itemToClick)
52
- expect(screen.getByTestId('output')).toHaveTextContent(ACTIONS[indexToClick].label)
53
-
54
- await waitFor(() => expect(screen.queryByTestId('dropdown-menu')).not.toBeInTheDocument())
55
- })
56
-
57
- it('does not toggles when disabled', async () => {
58
- setup({ disabled: true })
59
-
60
- user.click(screen.getByText('Actions'), undefined, {
61
- skipPointerEventsCheck: true,
62
- })
63
-
64
- await waitFor(() => expect(screen.queryByTestId('dropdown-menu')).not.toBeInTheDocument())
65
- })
66
- })
67
-
68
- describe('With Sections', () => {
69
- const setup = (overrides?: stories.DropdownStoryProps) =>
70
- renderer(<WithSections {...overrides} />).render()
71
-
72
- it('starts collapsed', () => {
73
- setup()
74
-
75
- screen.getByText('Sections')
76
-
77
- for (let i = 0; i < ACTIONS.length; i++) {
78
- expect(screen.queryByText(ACTIONS[i].label)).not.toBeInTheDocument()
79
- }
80
- })
81
-
82
- it('renders all sections and their options when expanded', async () => {
83
- setup()
84
-
85
- user.click(screen.getByText('Sections'))
86
-
87
- await screen.findByTestId('dropdown-menu')
88
-
89
- screen.getByText('My profile')
90
-
91
- for (let i = 0; i < PROFILE_ACTIONS.length; i++) {
92
- expect(screen.getByText(PROFILE_ACTIONS[i].label)).toBeInTheDocument()
93
- }
94
-
95
- screen.getByText('Subscription')
96
-
97
- for (let i = 0; i < SUBSCRIPTION_ACTIONS.length; i++) {
98
- expect(screen.getByText(SUBSCRIPTION_ACTIONS[i].label)).toBeInTheDocument()
99
- }
100
- })
101
-
102
- it('performs option click and collapses', async () => {
103
- const SECTION_ACTIONS = [...PROFILE_ACTIONS, ...SUBSCRIPTION_ACTIONS]
104
-
105
- setup()
106
-
107
- user.click(screen.getByText('Sections'))
108
-
109
- await screen.findByTestId('dropdown-menu')
110
-
111
- const items = screen.getAllByTestId('dropdown-menu-item')
112
- expect(items.length).toBe(SECTION_ACTIONS.length)
113
-
114
- const indexToClick = generator.natural({ min: 0, max: items.length - 1 })
115
- const itemToClick = items[indexToClick]
116
-
117
- user.click(itemToClick)
118
- expect(screen.getByTestId('output')).toHaveTextContent(SECTION_ACTIONS[indexToClick].label)
119
-
120
- await waitFor(() => expect(screen.queryByTestId('dropdown-menu')).not.toBeInTheDocument())
121
- })
122
- })
123
-
124
- describe('With Header and Footer', () => {
125
- const setup = (overrides?: stories.DropdownStoryProps) =>
126
- renderer(<Extended {...overrides} />).render()
127
-
128
- it('starts collapsed', () => {
129
- setup()
130
-
131
- screen.getByText('With Header & Footer')
132
-
133
- for (let i = 0; i < ACTIONS.length; i++) {
134
- expect(screen.queryByText(ACTIONS[i].label)).not.toBeInTheDocument()
135
- }
136
- })
137
-
138
- it('renders header, footer, and options when expanded', async () => {
139
- setup()
140
-
141
- user.click(screen.getByText('With Header & Footer'))
142
-
143
- await screen.findByTestId('dropdown-menu')
144
-
145
- screen.getByText('Header')
146
-
147
- for (let i = 0; i < ACTIONS.length; i++) {
148
- expect(screen.getByText(ACTIONS[i].label)).toBeInTheDocument()
149
- }
150
-
151
- screen.getByText('A cool footer')
152
- })
153
-
154
- it('performs option click and collapses', async () => {
155
- setup()
156
-
157
- user.click(screen.getByText('With Header & Footer'))
158
-
159
- await screen.findByTestId('dropdown-menu')
160
-
161
- const items = screen.getAllByTestId('dropdown-menu-item')
162
- expect(items.length).toBe(ACTIONS.length)
163
-
164
- const indexToClick = generator.natural({ min: 0, max: items.length - 1 })
165
- const itemToClick = items[indexToClick]
166
-
167
- user.click(itemToClick)
168
- expect(screen.getByTestId('output')).toHaveTextContent(ACTIONS[indexToClick].label)
169
-
170
- await waitFor(() => expect(screen.queryByTestId('dropdown-menu')).not.toBeInTheDocument())
171
- })
172
- })
173
- })
@@ -1,141 +0,0 @@
1
- import React, { useMemo, useRef } from 'react'
2
- import styled from 'styled-components'
3
-
4
- import {
5
- DropdownMenu,
6
- DropdownMenuItem,
7
- DropdownMenuSection,
8
- DropdownSeparator,
9
- } from './DropdownMenu'
10
- import { useClickOutside } from 'hooks/useClickOutside'
11
- import DropdownContext from './Dropdown.context'
12
- import DropdownTrigger from './DropdownTrigger'
13
- import hidden from 'styles/hidden'
14
- import useDropdown from './useDropdown'
15
- import { Popover } from 'components/Popover'
16
-
17
- import type { DropdownProps, GenericDropdownProps, DropdownMenuProps } from './Dropdown.types'
18
- import type { PopoverAlign } from 'components/Popover'
19
-
20
- const DropdownWrapper = styled.div`
21
- position: relative;
22
- `
23
-
24
- const HiddenCloseButton = styled.button.attrs({
25
- type: 'button',
26
- tabIndex: -1,
27
- })`
28
- ${hidden(true)}
29
- `
30
-
31
- function useDeprecatedAlignFromMenu({
32
- children,
33
- align,
34
- }: React.PropsWithChildren<{ align?: PopoverAlign }>): PopoverAlign {
35
- let result: PopoverAlign | undefined
36
-
37
- if (align) {
38
- return align
39
- }
40
-
41
- React.Children.forEach(children, (child) => {
42
- if (React.isValidElement<DropdownMenuProps>(child) && child.type === DropdownMenu) {
43
- result = child.props.align
44
- }
45
- })
46
-
47
- return (result || align) as PopoverAlign
48
- }
49
-
50
- // TODO: add focus trap here to allow navigating options with keyboard
51
-
52
- /**
53
- * Generic dropdown component that allows composing its pieces as desired.
54
- *
55
- * Based on:
56
- * - https://www.w3.org/TR/2017/REC-wai-aria-1.1-20171214/#menu
57
- * - https://www.w3.org/WAI/tutorials/menus/application-menus/
58
- *
59
- * @param props
60
- * @returns
61
- */
62
- export function GenericDropdown(props: GenericDropdownProps): JSX.Element {
63
- const {
64
- children,
65
- expanded,
66
- toggle,
67
- disabled = false,
68
- expandDisabled = false,
69
- onBlur,
70
- position,
71
- ...others
72
- } = props
73
- const contextValue = useMemo(
74
- () => ({ expanded, toggle, disabled, expandDisabled }),
75
- [expanded, toggle, disabled, expandDisabled]
76
- )
77
- const ref = useRef(null)
78
-
79
- const align = useDeprecatedAlignFromMenu(props)
80
-
81
- useClickOutside(
82
- ref,
83
- function handleClickOutside(event?: MouseEvent | TouchEvent | KeyboardEvent) {
84
- onBlur?.(event)
85
-
86
- if (!expanded) {
87
- return
88
- }
89
-
90
- toggle()
91
- }
92
- )
93
-
94
- return (
95
- <DropdownWrapper {...others} role="menubar" ref={ref}>
96
- <DropdownContext.Provider value={contextValue}>
97
- <HiddenCloseButton disabled={disabled} onClick={toggle}>
98
- Close
99
- </HiddenCloseButton>
100
- <Popover strategy="fixed" position={position} align={align}>
101
- {children}
102
- </Popover>
103
- </DropdownContext.Provider>
104
- </DropdownWrapper>
105
- )
106
- }
107
-
108
- /**
109
- * @example
110
- <Dropdown>
111
- <Dropdown.Trigger>Download</Dropdown.Trigger>
112
- <Dropdown.Menu
113
- header={<p className="px-2">Header</p>}
114
- footer={<p className="px-2">A cool footer</p>}
115
- >
116
- {[{label: 'Hello', value: 'hi'}, { label: 'World', value: 'planet' }].map(({ label, value }) => (
117
- <Dropdown.Item
118
- key={value}
119
- onClick={() => {
120
- setMessage(label)
121
- }}
122
- >
123
- {label}
124
- </Dropdown.Item>
125
- ))}
126
- </Dropdown.Menu>
127
- </Dropdown>
128
- */
129
- function Dropdown(props: DropdownProps): JSX.Element {
130
- const dropdownProps = useDropdown(props)
131
-
132
- return <GenericDropdown {...props} {...dropdownProps} />
133
- }
134
-
135
- Dropdown.Trigger = DropdownTrigger
136
- Dropdown.Menu = DropdownMenu
137
- Dropdown.Section = DropdownMenuSection
138
- Dropdown.Item = DropdownMenuItem
139
- Dropdown.Separator = DropdownSeparator
140
-
141
- export default Dropdown
@@ -1,59 +0,0 @@
1
- import type { PopoverPlacement } from 'components/Popover'
2
- import type { ButtonProps } from 'components/Button'
3
- import type { ButtonHTMLAttributes, HTMLAttributes, ReactNode } from 'react'
4
-
5
- export interface useDropdownProps {
6
- expanded: boolean
7
- toggle: () => void
8
- }
9
-
10
- export interface useDropdownReturn {
11
- expanded: boolean
12
- toggle: () => void
13
- expand: () => void
14
- collapse: () => void
15
- }
16
-
17
- export interface DropdownProps
18
- extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'onBlur'>,
19
- PopoverPlacement {
20
- disabled?: boolean
21
- /**
22
- * Use this prop to not allow the dropdown to be expanded.
23
- * While the `disabled` prop applies to the whole dropdown trigger element, this one only disables the TriggerHandle.
24
- */
25
- expandDisabled?: boolean
26
- onBlur?: (event?: MouseEvent | TouchEvent | KeyboardEvent) => void
27
- }
28
-
29
- export interface GenericDropdownProps extends DropdownProps, useDropdownProps {}
30
-
31
- export type DropdownTriggerProps = ButtonProps & {
32
- outlined?: boolean
33
- }
34
-
35
- export interface DropdownMenuProps extends HTMLAttributes<HTMLDivElement> {
36
- header?: ReactNode
37
- footer?: ReactNode
38
- /**
39
- * @deprecated Use the `align` prop on <Dropdown> wrapper instead.
40
- */
41
- align?: 'start' | 'end'
42
- }
43
-
44
- export interface DropdownMenuItemProps extends ButtonHTMLAttributes<HTMLButtonElement> {
45
- leading?: ReactNode
46
- trailing?: ReactNode
47
- onClick?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => boolean | undefined | void
48
- }
49
-
50
- export interface DropdownMenuSectionProps extends HTMLAttributes<HTMLDivElement> {
51
- header: ReactNode
52
- }
53
-
54
- export interface DropdownContextReturn {
55
- disabled: boolean
56
- expandDisabled: boolean
57
- expanded: boolean
58
- toggle: () => void
59
- }
@@ -1,263 +0,0 @@
1
- import React, { forwardRef, useContext } from 'react'
2
- import styled from 'styled-components'
3
-
4
- import { getToken as token } from 'theming'
5
- import { Popover } from 'components/Popover'
6
- import disableable from 'styles/disableable'
7
- import DropdownContext from './Dropdown.context'
8
- import focusable from 'styles/focusable'
9
- import font from 'styles/font'
10
- import hoverable from 'styles/hoverable'
11
- import transition from 'styles/transition'
12
- import useID from 'hooks/useID'
13
-
14
- import type {
15
- DropdownMenuItemProps,
16
- DropdownMenuProps,
17
- DropdownMenuSectionProps,
18
- } from './Dropdown.types'
19
-
20
- /**
21
- * TODO: add aria-labelledby that should refer to the dropdown label to the role="menu" container.
22
- * TODO: navigate through items using arrow keys.
23
- * TODO: add animation for a smooth open/close effect.
24
- */
25
-
26
- const StyledPopover = styled(Popover.Floating)`
27
- z-index: ${token('z-index-droplist')};
28
-
29
- min-width: 10em;
30
-
31
- background: ${token('dropdown-background')};
32
- border: 1px solid ${token('dropdown-border-color')};
33
- border-radius: ${token('dropdown-border-radius')};
34
- box-shadow: ${token('dropdown-shadow')};
35
- width: max-content;
36
- `
37
-
38
- const StyledSpan = styled.span`
39
- display: inline-flex;
40
- flex-flow: row nowrap;
41
- align-items: center;
42
- justify-content: center;
43
-
44
- font-size: 1em;
45
- `
46
-
47
- const Leading = styled(StyledSpan)`
48
- /* placeholder */
49
- `
50
-
51
- const Trailing = styled(StyledSpan)`
52
- /* placeholder */
53
- `
54
-
55
- const Children = styled.span`
56
- display: inline-flex;
57
- flex-flow: row nowrap;
58
- align-items: center;
59
- justify-content: flex-start;
60
- padding: ${token('space-s')} 0;
61
-
62
- white-space: nowrap;
63
- `
64
-
65
- const DropdownItemWrapper = styled.button`
66
- ${transition()}
67
-
68
- display: inline-flex;
69
- justify-content: flex-start;
70
- align-items: center;
71
-
72
- ${font({
73
- height: 'font-height-3',
74
- weight: 'font-weight-medium',
75
- })}
76
- font-size: ${token('font-size-4')};
77
-
78
- min-height: 36px;
79
- flex: 1 0;
80
-
81
- border: none;
82
- border-radius: ${token('border-radius-s')};
83
- background: ${token('color-neutral-white')};
84
-
85
- color: ${token('color-neutral-darker')};
86
-
87
- padding: 0 ${token('space-s')};
88
-
89
- margin: 0 ${token('space-s')};
90
-
91
- cursor: pointer;
92
-
93
- ${hoverable`
94
- background: ${token('color-neutral-lighter')};
95
- `}
96
-
97
- ${focusable`
98
- background: ${token('color-neutral-lighter')};
99
- `}
100
-
101
- ${disableable()}
102
-
103
- ${Children} {
104
- flex: 1 0 auto;
105
-
106
- text-align: left;
107
- }
108
-
109
- ${Leading}, ${Trailing} {
110
- flex: 0 1 auto;
111
- }
112
-
113
- ${Leading} + ${Children} {
114
- margin: 0 0 0 ${token('space-s')};
115
- }
116
-
117
- ${Children} + ${Trailing} {
118
- margin: 0 0 0 ${token('space-s')};
119
- }
120
- `
121
-
122
- const DropdownSectionHeader = styled.strong`
123
- display: flex;
124
- justify-content: flex-start;
125
- align-items: center;
126
-
127
- ${font({
128
- height: 'font-height-3',
129
- weight: 'font-weight-bold',
130
- })}
131
-
132
- font-size: ${token('font-size-4')};
133
-
134
- margin: 0 ${token('space-s')};
135
- `
136
-
137
- const DropdownSectionWrapper = styled.div`
138
- display: flex;
139
- flex-direction: column;
140
- `
141
-
142
- const GenericDropdownMenuWrapper = styled.div`
143
- display: flex;
144
- flex-direction: column;
145
- padding: ${token('space-s')} 0;
146
-
147
- ${font({
148
- height: 'font-height-3',
149
- weight: 'font-weight-medium',
150
- })}
151
-
152
- font-size: ${token('font-size-4')};
153
- `
154
-
155
- const DropdownMenuWrapper = styled(GenericDropdownMenuWrapper)`
156
- max-height: 240px;
157
- overflow-y: auto;
158
- max-width: 100%;
159
- width: 100%;
160
-
161
- ${DropdownItemWrapper} + ${DropdownItemWrapper},
162
- ${DropdownSectionHeader} + ${DropdownItemWrapper} {
163
- margin-top: ${token('space-2xs')};
164
- }
165
-
166
- ${DropdownSectionWrapper} + ${DropdownSectionWrapper} {
167
- margin: ${token('space-m')} 0 0 0;
168
- }
169
-
170
- ${GenericDropdownMenuWrapper} + &,
171
- & + ${GenericDropdownMenuWrapper},
172
- ${GenericDropdownMenuWrapper} + ${GenericDropdownMenuWrapper} {
173
- border-top: 2px solid ${token('color-neutral-lighter')};
174
- }
175
- `
176
-
177
- export const DropdownSeparator = styled.hr.attrs({
178
- 'aria-hidden': true,
179
- })`
180
- display: block;
181
- height: 2px;
182
-
183
- margin: ${token('space-s')} 0;
184
-
185
- border: 0;
186
- border-bottom: 2px solid ${token('card-separator-background')};
187
- `
188
-
189
- export const DropdownMenu = forwardRef<HTMLDivElement, DropdownMenuProps>(function DropdownMenu(
190
- props: DropdownMenuProps,
191
- ref
192
- ): JSX.Element | null {
193
- const context = useContext(DropdownContext)
194
-
195
- if (!context) {
196
- throw new Error('DropdownMenu must be inside a DropdownContext')
197
- }
198
-
199
- const { children, header, footer, ...others } = props
200
- const { expanded } = context
201
-
202
- if (!expanded) {
203
- return null
204
- }
205
-
206
- return (
207
- <StyledPopover role="presentation">
208
- {header && <GenericDropdownMenuWrapper>{header}</GenericDropdownMenuWrapper>}
209
- {children && (
210
- <DropdownMenuWrapper ref={ref} role="menu" data-testid="dropdown-menu" {...others}>
211
- {children}
212
- </DropdownMenuWrapper>
213
- )}
214
- {footer && <GenericDropdownMenuWrapper>{footer}</GenericDropdownMenuWrapper>}
215
- </StyledPopover>
216
- )
217
- })
218
-
219
- export function DropdownMenuItem(props: DropdownMenuItemProps): JSX.Element {
220
- const context = useContext(DropdownContext)
221
- const { leading, children, trailing, onClick, ...others } = props
222
- const id = useID(others.id)
223
-
224
- if (!context) {
225
- throw new Error('DropdownMenuItem must be inside a DropdownContext')
226
- }
227
-
228
- const { toggle } = context
229
-
230
- return (
231
- <DropdownItemWrapper
232
- role="menuitem"
233
- type="button"
234
- data-testid="dropdown-menu-item"
235
- {...others}
236
- aria-labelledby={id}
237
- onClick={(e) => {
238
- e.persist()
239
-
240
- const shouldKeepOpen = onClick?.(e)
241
-
242
- if (!shouldKeepOpen) {
243
- toggle()
244
- }
245
- }}
246
- >
247
- {leading && <Leading>{leading}</Leading>}
248
- <Children id={id}>{children}</Children>
249
- {trailing && <Trailing>{trailing}</Trailing>}
250
- </DropdownItemWrapper>
251
- )
252
- }
253
-
254
- export function DropdownMenuSection(props: DropdownMenuSectionProps): JSX.Element {
255
- const { children, header, ...others } = props
256
-
257
- return (
258
- <DropdownSectionWrapper data-testid="dropdown-menu-section" {...others} role="presentation">
259
- <DropdownSectionHeader>{header}</DropdownSectionHeader>
260
- {children}
261
- </DropdownSectionWrapper>
262
- )
263
- }