@loadsmart/loadsmart-ui 7.6.0 → 7.7.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 (490) hide show
  1. package/README.md +15 -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/index.js +9104 -253
  5. package/dist/index.js.map +1 -1
  6. package/dist/miranda-compatibility.theme-C_FEacSw.js +2528 -0
  7. package/dist/{miranda-compatibility.theme-ChPV-BBw.js.map → miranda-compatibility.theme-C_FEacSw.js.map} +1 -1
  8. package/dist/prop-B8LY6G2g.js +81 -0
  9. package/dist/{prop-BwhJNJHO.js.map → prop-B8LY6G2g.js.map} +1 -1
  10. package/dist/testing/index.js +282 -1
  11. package/dist/testing/index.js.map +1 -1
  12. package/dist/theming/index.js +22 -1
  13. package/dist/theming/index.js.map +1 -1
  14. package/dist/toArray-Dxb1kUxx.js +14 -0
  15. package/dist/{toArray-BW3gx_gH.js.map → toArray-Dxb1kUxx.js.map} +1 -1
  16. package/dist/tools/index.js +6 -1
  17. package/dist/tools/index.js.map +1 -1
  18. package/package.json +24 -54
  19. package/dist/DragDropFile.context-D-EBrXnw.js +0 -2
  20. package/dist/DragDropFile.context-jVTIKfj5.mjs +0 -29
  21. package/dist/DragDropFile.context-jVTIKfj5.mjs.map +0 -1
  22. package/dist/index.mjs +0 -8046
  23. package/dist/index.mjs.map +0 -1
  24. package/dist/miranda-compatibility.theme-ChPV-BBw.js +0 -2
  25. package/dist/miranda-compatibility.theme-DQDHkWzC.mjs +0 -2469
  26. package/dist/miranda-compatibility.theme-DQDHkWzC.mjs.map +0 -1
  27. package/dist/prop-5m3D4883.mjs +0 -54
  28. package/dist/prop-5m3D4883.mjs.map +0 -1
  29. package/dist/prop-BwhJNJHO.js +0 -2
  30. package/dist/testing/index.mjs +0 -228
  31. package/dist/testing/index.mjs.map +0 -1
  32. package/dist/theming/index.mjs +0 -20
  33. package/dist/theming/index.mjs.map +0 -1
  34. package/dist/toArray-BW3gx_gH.js +0 -2
  35. package/dist/toArray-DqgeO2ua.mjs +0 -8
  36. package/dist/toArray-DqgeO2ua.mjs.map +0 -1
  37. package/dist/tools/index.mjs +0 -7
  38. package/dist/tools/index.mjs.map +0 -1
  39. package/src/@types/@loadsmart/utilsFunction.d.ts +0 -5
  40. package/src/@types/@loadsmart/utilsObject.d.ts +0 -5
  41. package/src/@types/svg.d.ts +0 -4
  42. package/src/addons/Theme/register.js +0 -590
  43. package/src/common/BackButton/BackButton.tsx +0 -18
  44. package/src/common/BackButton/index.ts +0 -2
  45. package/src/common/CloseButton/CloseButton.tsx +0 -55
  46. package/src/common/CloseButton/index.ts +0 -2
  47. package/src/common/SelectionWrapper.tsx +0 -130
  48. package/src/components/Accordion/Accordion.context.tsx +0 -36
  49. package/src/components/Accordion/Accordion.stories.tsx +0 -186
  50. package/src/components/Accordion/Accordion.test.tsx +0 -209
  51. package/src/components/Accordion/Accordion.tsx +0 -233
  52. package/src/components/Accordion/index.ts +0 -2
  53. package/src/components/Banner/Banner.stories.tsx +0 -213
  54. package/src/components/Banner/Banner.test.tsx +0 -118
  55. package/src/components/Banner/Banner.tsx +0 -418
  56. package/src/components/Banner/index.tsx +0 -2
  57. package/src/components/Breadcrumbs/Breadbrumbs.test.tsx +0 -125
  58. package/src/components/Breadcrumbs/Breadcrumb.tsx +0 -92
  59. package/src/components/Breadcrumbs/Breadcrumbs.stories.tsx +0 -21
  60. package/src/components/Breadcrumbs/Breadcrumbs.tsx +0 -54
  61. package/src/components/Breadcrumbs/index.ts +0 -4
  62. package/src/components/Button/Button.stories.tsx +0 -174
  63. package/src/components/Button/Button.test.tsx +0 -57
  64. package/src/components/Button/Button.tsx +0 -576
  65. package/src/components/Button/index.tsx +0 -2
  66. package/src/components/Calendar/Calendar.helpers.ts +0 -15
  67. package/src/components/Calendar/Calendar.stories.tsx +0 -168
  68. package/src/components/Calendar/Calendar.test.tsx +0 -316
  69. package/src/components/Calendar/Calendar.tsx +0 -130
  70. package/src/components/Calendar/Calendar.types.ts +0 -68
  71. package/src/components/Calendar/Date.helper.test.ts +0 -847
  72. package/src/components/Calendar/Date.helper.ts +0 -461
  73. package/src/components/Calendar/DateFormat.helper.test.ts +0 -171
  74. package/src/components/Calendar/DateFormat.helper.ts +0 -195
  75. package/src/components/Calendar/Month.helper.test.ts +0 -187
  76. package/src/components/Calendar/Month.helper.ts +0 -172
  77. package/src/components/Calendar/PickerModeToggle.tsx +0 -61
  78. package/src/components/Calendar/Pickers/DayPicker.test.tsx +0 -85
  79. package/src/components/Calendar/Pickers/DayPicker.tsx +0 -127
  80. package/src/components/Calendar/Pickers/MonthPicker.test.tsx +0 -77
  81. package/src/components/Calendar/Pickers/MonthPicker.tsx +0 -51
  82. package/src/components/Calendar/Pickers/PickerButton.tsx +0 -119
  83. package/src/components/Calendar/Pickers/YearPicker.test.tsx +0 -75
  84. package/src/components/Calendar/Pickers/YearPicker.tsx +0 -52
  85. package/src/components/Calendar/index.ts +0 -10
  86. package/src/components/Calendar/useCalendar.ts +0 -190
  87. package/src/components/Calendar/usePickerMode.ts +0 -48
  88. package/src/components/Card/Card.stories.tsx +0 -117
  89. package/src/components/Card/Card.test.tsx +0 -139
  90. package/src/components/Card/Card.tsx +0 -106
  91. package/src/components/Card/CardTitle.tsx +0 -43
  92. package/src/components/Card/index.ts +0 -2
  93. package/src/components/Checkbox/Checkbox.stories.tsx +0 -79
  94. package/src/components/Checkbox/Checkbox.test.tsx +0 -66
  95. package/src/components/Checkbox/Checkbox.tsx +0 -170
  96. package/src/components/Checkbox/index.ts +0 -2
  97. package/src/components/DatePicker/DatePicker.stories.tsx +0 -113
  98. package/src/components/DatePicker/DatePicker.test.tsx +0 -174
  99. package/src/components/DatePicker/DatePicker.tsx +0 -140
  100. package/src/components/DatePicker/DatePicker.types.ts +0 -30
  101. package/src/components/DatePicker/DateRangePicker.stories.tsx +0 -128
  102. package/src/components/DatePicker/DateRangePicker.test.tsx +0 -267
  103. package/src/components/DatePicker/DateRangePicker.tsx +0 -110
  104. package/src/components/DatePicker/index.ts +0 -3
  105. package/src/components/DatePicker/useDatePicker.ts +0 -201
  106. package/src/components/DatePicker/useDateRangePicker.ts +0 -224
  107. package/src/components/Dialog/Dialog.stories.tsx +0 -227
  108. package/src/components/Dialog/Dialog.test.tsx +0 -74
  109. package/src/components/Dialog/Dialog.tsx +0 -139
  110. package/src/components/Dialog/index.tsx +0 -4
  111. package/src/components/Dialog/useDialog.tsx +0 -59
  112. package/src/components/DragDropFile/DragDropFile.context.tsx +0 -39
  113. package/src/components/DragDropFile/DragDropFile.stories.tsx +0 -183
  114. package/src/components/DragDropFile/DragDropFile.tsx +0 -11
  115. package/src/components/DragDropFile/components/DropZone.test.tsx +0 -108
  116. package/src/components/DragDropFile/components/DropZone.tsx +0 -145
  117. package/src/components/DragDropFile/components/FileItem.tsx +0 -117
  118. package/src/components/DragDropFile/components/FileList.test.tsx +0 -119
  119. package/src/components/DragDropFile/components/FileList.tsx +0 -47
  120. package/src/components/DragDropFile/components/Wrapper.tsx +0 -22
  121. package/src/components/DragDropFile/index.ts +0 -9
  122. package/src/components/DragDropFile/mocks.ts +0 -23
  123. package/src/components/DragDropFile/styles.tsx +0 -81
  124. package/src/components/DragDropFile/types.ts +0 -85
  125. package/src/components/Drawer/Drawer.stories.tsx +0 -83
  126. package/src/components/Drawer/Drawer.test.tsx +0 -90
  127. package/src/components/Drawer/Drawer.tsx +0 -225
  128. package/src/components/Drawer/index.ts +0 -4
  129. package/src/components/Dropdown/Dropdown.context.ts +0 -13
  130. package/src/components/Dropdown/Dropdown.fixtures.ts +0 -15
  131. package/src/components/Dropdown/Dropdown.stories.tsx +0 -259
  132. package/src/components/Dropdown/Dropdown.test.tsx +0 -173
  133. package/src/components/Dropdown/Dropdown.tsx +0 -141
  134. package/src/components/Dropdown/Dropdown.types.ts +0 -59
  135. package/src/components/Dropdown/DropdownMenu.tsx +0 -263
  136. package/src/components/Dropdown/DropdownTrigger.tsx +0 -368
  137. package/src/components/Dropdown/index.ts +0 -15
  138. package/src/components/Dropdown/useDropdown.test.ts +0 -96
  139. package/src/components/Dropdown/useDropdown.ts +0 -65
  140. package/src/components/EmptyState/EmptyState.mocks.tsx +0 -60
  141. package/src/components/EmptyState/EmptyState.stories.tsx +0 -239
  142. package/src/components/EmptyState/EmptyState.test.tsx +0 -101
  143. package/src/components/EmptyState/EmptyState.tsx +0 -22
  144. package/src/components/EmptyState/EmptyState.types.ts +0 -59
  145. package/src/components/EmptyState/EmptyStateWithIcon.tsx +0 -42
  146. package/src/components/EmptyState/EmptyStateWithIllustration.tsx +0 -72
  147. package/src/components/EmptyState/Illustration.tsx +0 -29
  148. package/src/components/EmptyState/index.ts +0 -4
  149. package/src/components/ErrorMessage/ErrorMessage.stories.tsx +0 -26
  150. package/src/components/ErrorMessage/ErrorMessage.test.tsx +0 -24
  151. package/src/components/ErrorMessage/ErrorMessage.tsx +0 -19
  152. package/src/components/ErrorMessage/index.ts +0 -2
  153. package/src/components/HighlightMatch/HighlightMatch.stories.tsx +0 -24
  154. package/src/components/HighlightMatch/HighlightMatch.test.tsx +0 -37
  155. package/src/components/HighlightMatch/HighlightMatch.tsx +0 -29
  156. package/src/components/HighlightMatch/index.ts +0 -2
  157. package/src/components/Icon/Icon.tsx +0 -55
  158. package/src/components/Icon/assets/back.svg +0 -4
  159. package/src/components/Icon/assets/burger-menu.svg +0 -3
  160. package/src/components/Icon/assets/calendar.svg +0 -5
  161. package/src/components/Icon/assets/caret-down.svg +0 -4
  162. package/src/components/Icon/assets/caret-left.svg +0 -4
  163. package/src/components/Icon/assets/caret-right-last.svg +0 -4
  164. package/src/components/Icon/assets/caret-right.svg +0 -4
  165. package/src/components/Icon/assets/check.svg +0 -4
  166. package/src/components/Icon/assets/chevron-down.svg +0 -3
  167. package/src/components/Icon/assets/circle.svg +0 -3
  168. package/src/components/Icon/assets/close.svg +0 -4
  169. package/src/components/Icon/assets/dots-horizontal.svg +0 -1
  170. package/src/components/Icon/assets/information.svg +0 -4
  171. package/src/components/Icon/assets/minus.svg +0 -4
  172. package/src/components/Icon/assets/plus.svg +0 -4
  173. package/src/components/Icon/assets/refresh.svg +0 -3
  174. package/src/components/Icon/assets/sort-asc.svg +0 -7
  175. package/src/components/Icon/assets/sort-desc.svg +0 -7
  176. package/src/components/Icon/assets/sort.svg +0 -7
  177. package/src/components/Icon/assets/upload.svg +0 -3
  178. package/src/components/Icon/assets/warning.svg +0 -4
  179. package/src/components/Icon/index.ts +0 -2
  180. package/src/components/IconFactory/IconFactory.fixtures.tsx +0 -31
  181. package/src/components/IconFactory/IconFactory.stories.tsx +0 -120
  182. package/src/components/IconFactory/IconFactory.test.tsx +0 -36
  183. package/src/components/IconFactory/IconFactory.tsx +0 -75
  184. package/src/components/IconFactory/index.ts +0 -2
  185. package/src/components/Label/Label.stories.tsx +0 -47
  186. package/src/components/Label/Label.test.tsx +0 -80
  187. package/src/components/Label/Label.tsx +0 -120
  188. package/src/components/Label/index.ts +0 -2
  189. package/src/components/Layout/Box.tsx +0 -98
  190. package/src/components/Layout/Grid.tsx +0 -42
  191. package/src/components/Layout/Group.tsx +0 -55
  192. package/src/components/Layout/Layout.stories.tsx +0 -412
  193. package/src/components/Layout/Layout.tsx +0 -19
  194. package/src/components/Layout/Layout.types.ts +0 -9
  195. package/src/components/Layout/Layout.utils.ts +0 -20
  196. package/src/components/Layout/Sidebar.tsx +0 -75
  197. package/src/components/Layout/Stack.tsx +0 -63
  198. package/src/components/Layout/Switcher.tsx +0 -48
  199. package/src/components/Layout/index.tsx +0 -8
  200. package/src/components/Link/Link.stories.tsx +0 -22
  201. package/src/components/Link/Link.test.tsx +0 -79
  202. package/src/components/Link/Link.tsx +0 -114
  203. package/src/components/Link/index.ts +0 -3
  204. package/src/components/Link/useSafeLink.ts +0 -49
  205. package/src/components/Loaders/LoadingBar.stories.tsx +0 -36
  206. package/src/components/Loaders/LoadingBar.test.tsx +0 -35
  207. package/src/components/Loaders/LoadingBar.tsx +0 -65
  208. package/src/components/Loaders/LoadingDots.stories.tsx +0 -69
  209. package/src/components/Loaders/LoadingDots.test.tsx +0 -22
  210. package/src/components/Loaders/LoadingDots.tsx +0 -68
  211. package/src/components/Loaders/Spinner.stories.tsx +0 -24
  212. package/src/components/Loaders/Spinner.test.tsx +0 -35
  213. package/src/components/Loaders/Spinner.tsx +0 -68
  214. package/src/components/Loaders/index.tsx +0 -3
  215. package/src/components/Modal/Modal.stories.tsx +0 -121
  216. package/src/components/Modal/Modal.test.tsx +0 -46
  217. package/src/components/Modal/Modal.tsx +0 -163
  218. package/src/components/Modal/index.tsx +0 -2
  219. package/src/components/Pagination/Pagination.constants.ts +0 -7
  220. package/src/components/Pagination/Pagination.helper.ts +0 -88
  221. package/src/components/Pagination/Pagination.stories.tsx +0 -29
  222. package/src/components/Pagination/Pagination.test.tsx +0 -102
  223. package/src/components/Pagination/Pagination.tsx +0 -34
  224. package/src/components/Pagination/Pagination.types.ts +0 -55
  225. package/src/components/Pagination/PaginationItem.tsx +0 -74
  226. package/src/components/Pagination/index.ts +0 -2
  227. package/src/components/Pagination/usePagination.test.ts +0 -188
  228. package/src/components/Pagination/usePagination.ts +0 -87
  229. package/src/components/Popover/Popover.stories.tsx +0 -50
  230. package/src/components/Popover/Popover.test.tsx +0 -22
  231. package/src/components/Popover/Popover.tsx +0 -110
  232. package/src/components/Popover/Popover.types.ts +0 -39
  233. package/src/components/Popover/index.ts +0 -11
  234. package/src/components/ProgressBar/ProgressBar.stories.tsx +0 -47
  235. package/src/components/ProgressBar/ProgressBar.test.tsx +0 -40
  236. package/src/components/ProgressBar/ProgressBar.tsx +0 -89
  237. package/src/components/ProgressBar/index.tsx +0 -2
  238. package/src/components/Radio/Radio.stories.tsx +0 -75
  239. package/src/components/Radio/Radio.test.tsx +0 -66
  240. package/src/components/Radio/Radio.tsx +0 -153
  241. package/src/components/Radio/index.ts +0 -2
  242. package/src/components/Section/Section.test.tsx +0 -35
  243. package/src/components/Section/Section.tsx +0 -66
  244. package/src/components/Section/Sections.stories.tsx +0 -56
  245. package/src/components/Section/index.ts +0 -2
  246. package/src/components/Select/Select.constants.ts +0 -12
  247. package/src/components/Select/Select.context.ts +0 -11
  248. package/src/components/Select/Select.fixtures.ts +0 -167
  249. package/src/components/Select/Select.stories.tsx +0 -780
  250. package/src/components/Select/Select.test.tsx +0 -1109
  251. package/src/components/Select/Select.tsx +0 -271
  252. package/src/components/Select/Select.types.ts +0 -148
  253. package/src/components/Select/SelectCreatableOption.tsx +0 -20
  254. package/src/components/Select/SelectEmpty.test.tsx +0 -15
  255. package/src/components/Select/SelectEmpty.tsx +0 -29
  256. package/src/components/Select/SelectOption.test.tsx +0 -78
  257. package/src/components/Select/SelectOption.tsx +0 -79
  258. package/src/components/Select/SelectTrigger.tsx +0 -83
  259. package/src/components/Select/components.tsx +0 -14
  260. package/src/components/Select/index.ts +0 -12
  261. package/src/components/Select/useSelect.helpers.test.ts +0 -184
  262. package/src/components/Select/useSelect.helpers.ts +0 -63
  263. package/src/components/Select/useSelect.test.ts +0 -207
  264. package/src/components/Select/useSelect.ts +0 -540
  265. package/src/components/Select/useSelectExternal.ts +0 -26
  266. package/src/components/SideNavigation/Logo/Logo.test.tsx +0 -19
  267. package/src/components/SideNavigation/Logo/Logo.tsx +0 -26
  268. package/src/components/SideNavigation/Logo/index.ts +0 -1
  269. package/src/components/SideNavigation/Menu/Menu.test.tsx +0 -65
  270. package/src/components/SideNavigation/Menu/Menu.tsx +0 -53
  271. package/src/components/SideNavigation/Menu/MenuBaseItem.tsx +0 -64
  272. package/src/components/SideNavigation/Menu/MenuExpandable.tsx +0 -107
  273. package/src/components/SideNavigation/Menu/MenuLink.tsx +0 -37
  274. package/src/components/SideNavigation/Menu/index.ts +0 -1
  275. package/src/components/SideNavigation/Separator/Separator.test.tsx +0 -14
  276. package/src/components/SideNavigation/Separator/Separator.tsx +0 -20
  277. package/src/components/SideNavigation/Separator/index.ts +0 -1
  278. package/src/components/SideNavigation/SideNavigation.stories.tsx +0 -69
  279. package/src/components/SideNavigation/SideNavigation.test.tsx +0 -21
  280. package/src/components/SideNavigation/SideNavigation.tsx +0 -47
  281. package/src/components/SideNavigation/index.ts +0 -5
  282. package/src/components/SideNavigation/useSideNavigation.ts +0 -36
  283. package/src/components/Steps/ProgressSteps/ProgressStep.tsx +0 -163
  284. package/src/components/Steps/ProgressSteps/ProgressSteps.tsx +0 -37
  285. package/src/components/Steps/ProgressSteps/index.ts +0 -1
  286. package/src/components/Steps/Steps.fixtures.ts +0 -11
  287. package/src/components/Steps/Steps.helpers.ts +0 -11
  288. package/src/components/Steps/Steps.stories.tsx +0 -65
  289. package/src/components/Steps/Steps.test.tsx +0 -78
  290. package/src/components/Steps/Steps.tsx +0 -53
  291. package/src/components/Steps/Steps.types.ts +0 -5
  292. package/src/components/Steps/StepsContext.ts +0 -5
  293. package/src/components/Steps/StepsStep.tsx +0 -58
  294. package/src/components/Steps/index.ts +0 -6
  295. package/src/components/Steps/useStep.test.tsx +0 -217
  296. package/src/components/Steps/useSteps.ts +0 -131
  297. package/src/components/Switch/Switch.stories.tsx +0 -65
  298. package/src/components/Switch/Switch.test.tsx +0 -60
  299. package/src/components/Switch/Switch.tsx +0 -209
  300. package/src/components/Switch/index.ts +0 -2
  301. package/src/components/Table/Selection.tsx +0 -202
  302. package/src/components/Table/Table.fixtures.ts +0 -101
  303. package/src/components/Table/Table.stories.tsx +0 -568
  304. package/src/components/Table/Table.test.tsx +0 -310
  305. package/src/components/Table/Table.tsx +0 -523
  306. package/src/components/Table/Table.types.ts +0 -93
  307. package/src/components/Table/TableSortHandle.tsx +0 -31
  308. package/src/components/Table/index.tsx +0 -2
  309. package/src/components/Table/useSortBy.test.ts +0 -96
  310. package/src/components/Table/useSortBy.ts +0 -92
  311. package/src/components/Table/useSortBy.types.ts +0 -21
  312. package/src/components/TablePagination/RowsPerPage.tsx +0 -81
  313. package/src/components/TablePagination/TablePagination.stories.tsx +0 -42
  314. package/src/components/TablePagination/TablePagination.styles.ts +0 -13
  315. package/src/components/TablePagination/TablePagination.test.tsx +0 -111
  316. package/src/components/TablePagination/TablePagination.tsx +0 -49
  317. package/src/components/TablePagination/TablePagination.types.ts +0 -69
  318. package/src/components/TablePagination/TablePaginationActions.tsx +0 -144
  319. package/src/components/TablePagination/index.ts +0 -2
  320. package/src/components/Tabs/Tabs.stories.tsx +0 -78
  321. package/src/components/Tabs/Tabs.test.tsx +0 -103
  322. package/src/components/Tabs/Tabs.tsx +0 -287
  323. package/src/components/Tabs/Tabs.types.ts +0 -7
  324. package/src/components/Tabs/TabsContext.ts +0 -10
  325. package/src/components/Tabs/index.ts +0 -2
  326. package/src/components/Tag/Tag.stories.tsx +0 -112
  327. package/src/components/Tag/Tag.test.tsx +0 -19
  328. package/src/components/Tag/Tag.tsx +0 -393
  329. package/src/components/Tag/index.ts +0 -2
  330. package/src/components/Text/Text.stories.tsx +0 -59
  331. package/src/components/Text/Text.test.tsx +0 -48
  332. package/src/components/Text/Text.tsx +0 -14
  333. package/src/components/Text/index.ts +0 -2
  334. package/src/components/TextField/TextField.stories.tsx +0 -90
  335. package/src/components/TextField/TextField.test.tsx +0 -36
  336. package/src/components/TextField/TextField.tsx +0 -244
  337. package/src/components/TextField/index.ts +0 -6
  338. package/src/components/TextField/useTextField.tsx +0 -26
  339. package/src/components/Textarea/Textarea.stories.tsx +0 -101
  340. package/src/components/Textarea/Textarea.test.tsx +0 -14
  341. package/src/components/Textarea/Textarea.tsx +0 -230
  342. package/src/components/Textarea/index.ts +0 -2
  343. package/src/components/Toast/Toast.stories.tsx +0 -50
  344. package/src/components/Toast/Toast.test.tsx +0 -24
  345. package/src/components/Toast/Toast.tsx +0 -141
  346. package/src/components/Toast/icons/close.svg +0 -3
  347. package/src/components/Toast/icons/danger.svg +0 -4
  348. package/src/components/Toast/icons/neutral.svg +0 -4
  349. package/src/components/Toast/icons/success.svg +0 -3
  350. package/src/components/Toast/icons/warning.svg +0 -4
  351. package/src/components/Toast/index.tsx +0 -2
  352. package/src/components/ToggleGroup/Toggle.test.tsx +0 -76
  353. package/src/components/ToggleGroup/Toggle.tsx +0 -158
  354. package/src/components/ToggleGroup/ToggleGroup.constants.ts +0 -16
  355. package/src/components/ToggleGroup/ToggleGroup.stories.tsx +0 -145
  356. package/src/components/ToggleGroup/ToggleGroup.test.tsx +0 -237
  357. package/src/components/ToggleGroup/ToggleGroup.tsx +0 -165
  358. package/src/components/ToggleGroup/ToggleGroup.types.ts +0 -35
  359. package/src/components/ToggleGroup/ToggleGroupContext.ts +0 -13
  360. package/src/components/ToggleGroup/index.ts +0 -3
  361. package/src/components/Tooltip/Tooltip.stories.tsx +0 -82
  362. package/src/components/Tooltip/Tooltip.test.tsx +0 -49
  363. package/src/components/Tooltip/Tooltip.tsx +0 -185
  364. package/src/components/Tooltip/index.ts +0 -2
  365. package/src/components/TopNavigation/Logo/Logo.test.tsx +0 -21
  366. package/src/components/TopNavigation/Logo/Logo.tsx +0 -20
  367. package/src/components/TopNavigation/Logo/index.ts +0 -1
  368. package/src/components/TopNavigation/Menu/Menu.test.tsx +0 -125
  369. package/src/components/TopNavigation/Menu/Menu.tsx +0 -62
  370. package/src/components/TopNavigation/Menu/MenuItemDropdown.tsx +0 -118
  371. package/src/components/TopNavigation/Menu/MenuItemIcon.tsx +0 -50
  372. package/src/components/TopNavigation/Menu/index.ts +0 -1
  373. package/src/components/TopNavigation/OpenSideNavButton/OpenSideNavButton.tsx +0 -28
  374. package/src/components/TopNavigation/OpenSideNavButton/index.ts +0 -1
  375. package/src/components/TopNavigation/TopNavigation.stories.tsx +0 -42
  376. package/src/components/TopNavigation/TopNavigation.tsx +0 -47
  377. package/src/components/TopNavigation/index.ts +0 -2
  378. package/src/components/VisuallyHidden/VisuallyHidden.mdx +0 -26
  379. package/src/components/VisuallyHidden/VisuallyHidden.stories.tsx +0 -32
  380. package/src/components/VisuallyHidden/VisuallyHidden.test.tsx +0 -18
  381. package/src/components/VisuallyHidden/VisuallyHidden.tsx +0 -6
  382. package/src/components/VisuallyHidden/index.ts +0 -1
  383. package/src/docs/tools/DatePickerEvent.stories.mdx +0 -108
  384. package/src/docs/tools/DragDropFileEvent.stories.mdx +0 -75
  385. package/src/docs/tools/conditional.stories.mdx +0 -251
  386. package/src/docs/tools/selectEvent.stories.mdx +0 -121
  387. package/src/hooks/useClickOutside/index.ts +0 -1
  388. package/src/hooks/useClickOutside/useClickOutside.test.tsx +0 -116
  389. package/src/hooks/useClickOutside/useClickOutside.ts +0 -65
  390. package/src/hooks/useDidMount/index.ts +0 -1
  391. package/src/hooks/useDidMount/useDidMount.test.tsx +0 -38
  392. package/src/hooks/useDidMount/useDidMount.ts +0 -20
  393. package/src/hooks/useFingerprint/index.ts +0 -1
  394. package/src/hooks/useFingerprint/useFingerprint.test.ts +0 -76
  395. package/src/hooks/useFingerprint/useFingerprint.ts +0 -94
  396. package/src/hooks/useFocusTrap/index.ts +0 -2
  397. package/src/hooks/useFocusTrap/useFocusTrap.stories.tsx +0 -87
  398. package/src/hooks/useFocusTrap/useFocusTrap.test.tsx +0 -129
  399. package/src/hooks/useFocusTrap/useFocusTrap.ts +0 -187
  400. package/src/hooks/useFocusWithin/index.ts +0 -2
  401. package/src/hooks/useFocusWithin/useFocusWithin.test.tsx +0 -71
  402. package/src/hooks/useFocusWithin/useFocusWithin.ts +0 -62
  403. package/src/hooks/useHeightExpansionToggler/index.ts +0 -2
  404. package/src/hooks/useHeightExpansionToggler/useHeightExpansionToggler.test.tsx +0 -85
  405. package/src/hooks/useHeightExpansionToggler/useHeightExpansionToggler.ts +0 -54
  406. package/src/hooks/useID/index.ts +0 -1
  407. package/src/hooks/useID/useID.ts +0 -18
  408. package/src/hooks/useSelectable/SelectableStrategy.test.ts +0 -424
  409. package/src/hooks/useSelectable/SelectableStrategy.ts +0 -143
  410. package/src/hooks/useSelectable/index.ts +0 -8
  411. package/src/hooks/useSelectable/useSelectable.test.ts +0 -221
  412. package/src/hooks/useSelectable/useSelectable.ts +0 -156
  413. package/src/hooks/useSelectable/useSelectable.types.ts +0 -45
  414. package/src/hooks/useWindowResize/index.ts +0 -1
  415. package/src/hooks/useWindowResize/useWindowResize.ts +0 -27
  416. package/src/index.ts +0 -188
  417. package/src/stories/assets/code-brackets.svg +0 -1
  418. package/src/stories/assets/colors.svg +0 -1
  419. package/src/stories/assets/comments.svg +0 -1
  420. package/src/stories/assets/direction.svg +0 -1
  421. package/src/stories/assets/flow.svg +0 -1
  422. package/src/stories/assets/plugin.svg +0 -1
  423. package/src/stories/assets/repo.svg +0 -1
  424. package/src/stories/assets/stackalt.svg +0 -1
  425. package/src/stories/introduction.stories.mdx +0 -57
  426. package/src/stories/startPage.stories.mdx +0 -95
  427. package/src/styles/activatable.tsx +0 -30
  428. package/src/styles/disableable.tsx +0 -45
  429. package/src/styles/ellipsizable.tsx +0 -14
  430. package/src/styles/focusable.tsx +0 -32
  431. package/src/styles/font.test.ts +0 -31
  432. package/src/styles/font.tsx +0 -40
  433. package/src/styles/hidden.tsx +0 -29
  434. package/src/styles/hoverable.tsx +0 -30
  435. package/src/styles/transition.tsx +0 -25
  436. package/src/styles/typography.test.ts +0 -93
  437. package/src/styles/typography.ts +0 -190
  438. package/src/testing/DatePickerEvent/DatePickerEvent.ts +0 -117
  439. package/src/testing/DatePickerEvent/DateRangePickerEvent.ts +0 -83
  440. package/src/testing/DatePickerEvent/index.ts +0 -2
  441. package/src/testing/DragDropFileEvent/DragDropFileEvent.ts +0 -56
  442. package/src/testing/DragDropFileEvent/index.ts +0 -1
  443. package/src/testing/SelectEvent/SelectEvent.test.tsx +0 -192
  444. package/src/testing/SelectEvent/SelectEvent.ts +0 -264
  445. package/src/testing/SelectEvent/index.ts +0 -1
  446. package/src/testing/getInterpolatedStyles/getInterpolatedStyles.ts +0 -25
  447. package/src/testing/getInterpolatedStyles/index.ts +0 -1
  448. package/src/testing/index.ts +0 -6
  449. package/src/testing/renderWithDragDropFileProvider/index.ts +0 -1
  450. package/src/testing/renderWithDragDropFileProvider/renderWithDragDropFileProvider.tsx +0 -28
  451. package/src/tests/generator.ts +0 -127
  452. package/src/tests/renderer.tsx +0 -39
  453. package/src/theming/index.ts +0 -42
  454. package/src/theming/themes/alice.theme.ts +0 -1022
  455. package/src/theming/themes/index.ts +0 -3
  456. package/src/theming/themes/loadsmart.theme.ts +0 -1019
  457. package/src/theming/themes/miranda-compatibility.theme.ts +0 -972
  458. package/src/theming/theming.helpers.ts +0 -95
  459. package/src/tools/conditional.test.ts +0 -166
  460. package/src/tools/conditional.ts +0 -127
  461. package/src/tools/index.ts +0 -2
  462. package/src/tools/prop.test.ts +0 -52
  463. package/src/tools/prop.ts +0 -36
  464. package/src/utils/toolset/awaitTo.ts +0 -24
  465. package/src/utils/toolset/flatten.ts +0 -3
  466. package/src/utils/toolset/formatBytes.test.ts +0 -45
  467. package/src/utils/toolset/formatBytes.ts +0 -18
  468. package/src/utils/toolset/get.ts +0 -2
  469. package/src/utils/toolset/getID.test.ts +0 -57
  470. package/src/utils/toolset/getID.ts +0 -93
  471. package/src/utils/toolset/getOrdinalSuffix.test.ts +0 -27
  472. package/src/utils/toolset/getOrdinalSuffix.ts +0 -15
  473. package/src/utils/toolset/highlightMatch.test.tsx +0 -32
  474. package/src/utils/toolset/highlightMatch.tsx +0 -32
  475. package/src/utils/toolset/interleave.test.ts +0 -40
  476. package/src/utils/toolset/interleave.ts +0 -23
  477. package/src/utils/toolset/isEmpty.ts +0 -2
  478. package/src/utils/toolset/isThenable.test.ts +0 -40
  479. package/src/utils/toolset/isThenable.ts +0 -14
  480. package/src/utils/toolset/keyboard.ts +0 -50
  481. package/src/utils/toolset/omit.ts +0 -2
  482. package/src/utils/toolset/pluralize.ts +0 -16
  483. package/src/utils/toolset/range.ts +0 -2
  484. package/src/utils/toolset/rem.ts +0 -7
  485. package/src/utils/toolset/styledCompounds.ts +0 -22
  486. package/src/utils/toolset/toArray.ts +0 -16
  487. package/src/utils/types/ColorScheme.ts +0 -3
  488. package/src/utils/types/EventLike.ts +0 -11
  489. package/src/utils/types/InterpolatedStyle.ts +0 -3
  490. 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
- }