@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,168 +0,0 @@
1
- import React from 'react'
2
- import type { Story, Meta } from '@storybook/react'
3
-
4
- import { TODAY } from './Date.helper'
5
- import Calendar from './Calendar'
6
-
7
- import type { CalendarDate } from './Date.helper'
8
- import type { CalendarProps } from './Calendar.types'
9
-
10
- export default {
11
- title: 'Components/Calendar',
12
- component: Calendar,
13
- argTypes: {
14
- scale: {
15
- control: {
16
- type: 'select',
17
- options: ['single', 'range'],
18
- },
19
- },
20
- onDayClick: {
21
- table: {
22
- disable: true,
23
- },
24
- },
25
- onMonthClick: {
26
- table: {
27
- disable: true,
28
- },
29
- },
30
- onYearClick: {
31
- table: {
32
- disable: true,
33
- },
34
- },
35
- onSelect: {
36
- action: 'picked',
37
- table: {
38
- disable: true,
39
- },
40
- },
41
- },
42
- } as Meta
43
-
44
- const Template: Story<CalendarProps> = (args): JSX.Element => {
45
- return (
46
- <div className="flex flex-col">
47
- <Calendar {...args} />
48
- </div>
49
- )
50
- }
51
-
52
- export const Playground = Template.bind({})
53
-
54
- Playground.args = {
55
- mode: 'single',
56
- }
57
-
58
- export function Selection(): JSX.Element {
59
- return (
60
- <div className="flex space-x-2">
61
- <Calendar
62
- year={2022}
63
- month={0}
64
- mode="single"
65
- selected={[Date.UTC(2022, 0), Date.UTC(2022, 0)]}
66
- />
67
- <Calendar
68
- year={2022}
69
- month={0}
70
- mode="range"
71
- selected={[Date.UTC(2022, 0, 20), Date.UTC(2022, 1, 10)]}
72
- />
73
- </div>
74
- )
75
- }
76
-
77
- function isWeekend(date: CalendarDate) {
78
- return [0, 6].includes(date.getWeekday())
79
- }
80
-
81
- export function CalendarConstraints(args: CalendarProps): JSX.Element {
82
- return (
83
- <div className="flex flex-col">
84
- <Calendar {...args} />
85
- </div>
86
- )
87
- }
88
-
89
- CalendarConstraints.args = {
90
- constraints: [[null, TODAY.subtract('day', 1).toString()], isWeekend],
91
- }
92
-
93
- CalendarConstraints.parameters = {
94
- docs: {
95
- description: {
96
- story: `
97
- Calendar constraints are used to block dates from being selected and can be represented in different ways, according to your needs. If a given day matches at least one of the constraints,
98
- it will be disabled.
99
-
100
- When defining specific date constraints, you can use timestamp, ISO date format, or \`Date\`.
101
- **Make sure to use \`CalendarDate.helper.ts\` to provide normalized values so the component treats them properly**.
102
-
103
- For ranges, using the same formats descrive above, you have a few options:
104
-
105
- * Equal or after a date (inclusive): \`[<start date>, null]\`
106
- * Equal or before a date (inclusive): \`[null, <end date>]\`
107
- * Equal or between dates (inclusive): \`[<start date>, <end date>]\`
108
-
109
- Alternatively, you can specify a function constraint that receives a \`CalendarDate\` and returns a boolean.
110
-
111
- You can provide as many constraints as you want.
112
-
113
- #### Block a specific date
114
-
115
- \`\`\`jsx
116
- <Calendar {...props} constraints={1643371200000} />
117
-
118
- <Calendar {...props} constraints="2022-01-01T12:00:00.000Z" />
119
-
120
- <Calendar {...props} constraints={new Date("2022-01-01T12:00:00.000Z")} />
121
-
122
- <Calendar {...props} constraints={[1643371200000]} />
123
-
124
- <Calendar {...props} constraints={[new Date("2022-01-01T12:00:00.000Z")]} />
125
-
126
- function isWeekend(date: CalendarDate) {
127
- return [0, 6].includes(date.getWeekday())
128
- }
129
-
130
- <Calendar {...props} constraints={[isWeekend]} />
131
- \`\`\`
132
-
133
- #### Block a specific range of dates
134
-
135
- A range is specified with an array, or pair, with two values.
136
-
137
- Notice that, to specify a range you need to provide the prop \`constraints\` as an array.
138
- So \`constraints={[1641038400000, 1643371200000]}\` is restricing **exactly** the dates represented by the timestamps \`1641038400000\` and \`1643371200000\`, whereas
139
- \`constraints={[[1641038400000, 1643371200000]]}\` is restricing **all** the dates between the timestamps \`1641038400000\` and \`1643371200000\` (inclusive).
140
-
141
- \`\`\`jsx
142
- <Calendar {...props} constraints={[[1643371200000, 1643371200000]]} />
143
-
144
- <Calendar {...props} constraints={[["2022-01-01T12:00:00.000Z", null]]} />
145
-
146
- <Calendar {...props} constraints={[[null, new Date("2022-01-01T12:00:00.000Z")]]} />
147
-
148
- <Calendar {...props} constraints={[["2022-01-01T12:00:00.000Z", "2022-01-28T12:00:00.000Z"]]} />
149
-
150
- const TODAY = DateHelper();
151
-
152
- <Calendar {...props} constraints={[[null, TODAY.subtract('day', 1).toString()]]} />
153
- \`\`\`
154
-
155
- Always make sure your range of dates has start date before (or equal to) the end date, otherwise an \`InvalidDateConstraintError\` will be thrown.
156
-
157
- #### Block with multiple constraints
158
-
159
- You can combine the above in multiple constraints.
160
-
161
- \`\`\`jsx
162
- <Calendar {...props} constraints={["2021-12-31T12:00:00.000Z", ["2022-01-01T12:00:00.000Z", "2022-01-28T12:00:00.000Z"]]} />
163
- \`\`\`
164
-
165
- `,
166
- },
167
- },
168
- }
@@ -1,316 +0,0 @@
1
- /* eslint-disable testing-library/render-result-naming-convention */
2
- import React from 'react'
3
- import { composeStories } from '@storybook/react'
4
-
5
- import { getRenderableMonth } from './useCalendar'
6
- import { TODAY } from './Date.helper'
7
- import * as stories from './Calendar.stories'
8
- import DateFormatHelper from './DateFormat.helper'
9
- import DateHelper from './Date.helper'
10
- import generator from '../../tests/generator'
11
- import MonthHelper, { MONTH_BY_NAME } from './Month.helper'
12
- import renderer, { screen, fire } from '../../tests/renderer'
13
-
14
- import type { CalendarConstraint } from './Date.helper'
15
- import type { CalendarMonthAlias } from './Month.helper'
16
- import type { CalendarProps } from './Calendar.types'
17
-
18
- const { Playground } = composeStories(stories)
19
-
20
- const ALL_MONTHS = Object.keys(MONTH_BY_NAME).map((name) => MONTH_BY_NAME[name])
21
-
22
- export const formatter = DateFormatHelper('MM/DD/YYYY')
23
-
24
- const setup = (overrides: Partial<CalendarProps>) =>
25
- renderer(<Playground {...overrides} />).render()
26
-
27
- describe('Calendar', () => {
28
- it('render correctly with no month/year props', () => {
29
- const props = {}
30
-
31
- setup(props)
32
-
33
- expect(screen.getByLabelText('Navigate to previous month')).toBeInTheDocument()
34
- expect(screen.getByLabelText('Open month selection')).toBeInTheDocument()
35
- expect(screen.getByLabelText('Open year selection')).toBeInTheDocument()
36
- expect(screen.getByLabelText('Navigate to next month')).toBeInTheDocument()
37
-
38
- expect(screen.getByTestId('calendar-day-picker')).toBeInTheDocument()
39
-
40
- const currentMonthDetails = getRenderableMonth(TODAY.getYear(), TODAY.getMonth())
41
-
42
- expect(screen.getByLabelText('Open month selection')).toHaveTextContent(
43
- MonthHelper(currentMonthDetails.month as CalendarMonthAlias).format('long')
44
- )
45
-
46
- expect(screen.getByLabelText('Open year selection')).toHaveTextContent(
47
- String(currentMonthDetails.year)
48
- )
49
- })
50
-
51
- it('render correctly with month/year props', () => {
52
- const props = {
53
- month: 1, // february
54
- year: 2020,
55
- }
56
-
57
- setup(props)
58
-
59
- const currentMonthDetails = getRenderableMonth(props.year, props.month)
60
-
61
- expect(screen.getByLabelText('Open month selection')).toHaveTextContent(
62
- MonthHelper(currentMonthDetails.month as CalendarMonthAlias).format('long')
63
- )
64
-
65
- expect(screen.getByLabelText('Open year selection')).toHaveTextContent(
66
- String(currentMonthDetails.year)
67
- )
68
- })
69
-
70
- it('navigates to previous month', () => {
71
- const props = {
72
- month: 0, // january
73
- year: 2020,
74
- }
75
-
76
- setup(props)
77
-
78
- const currentMonthDetails = getRenderableMonth(props.year, props.month)
79
-
80
- expect(screen.getByLabelText('Open month selection')).toHaveTextContent(
81
- MonthHelper(currentMonthDetails.month as CalendarMonthAlias).format('long')
82
- )
83
-
84
- expect(screen.getByLabelText('Open year selection')).toHaveTextContent(
85
- String(currentMonthDetails.year)
86
- )
87
-
88
- fire.click(screen.getByLabelText('Navigate to previous month'))
89
-
90
- expect(screen.getByLabelText('Open month selection')).toHaveTextContent('December')
91
-
92
- expect(screen.getByLabelText('Open year selection')).toHaveTextContent('2019')
93
- })
94
-
95
- it('navigates to next month', () => {
96
- const props = {
97
- month: 11, // december
98
- year: 2019,
99
- }
100
-
101
- setup(props)
102
-
103
- const currentMonthDetails = getRenderableMonth(props.year, props.month)
104
-
105
- expect(screen.getByLabelText('Open month selection')).toHaveTextContent(
106
- MonthHelper(currentMonthDetails.month as CalendarMonthAlias).format('long')
107
- )
108
-
109
- expect(screen.getByLabelText('Open year selection')).toHaveTextContent(
110
- String(currentMonthDetails.year)
111
- )
112
-
113
- fire.click(screen.getByLabelText('Navigate to next month'))
114
-
115
- expect(screen.getByLabelText('Open month selection')).toHaveTextContent('January')
116
-
117
- expect(screen.getByLabelText('Open year selection')).toHaveTextContent('2020')
118
- })
119
-
120
- it('toggles month selection', () => {
121
- const props = {}
122
-
123
- setup(props)
124
-
125
- expect(screen.getByTestId('calendar-day-picker')).toBeInTheDocument()
126
- expect(screen.queryByTestId('calendar-month-picker')).not.toBeInTheDocument()
127
- expect(screen.queryByTestId('calendar-year-picker')).not.toBeInTheDocument()
128
-
129
- fire.click(screen.getByLabelText('Open month selection'))
130
-
131
- expect(screen.queryByTestId('calendar-day-picker')).not.toBeInTheDocument()
132
- expect(screen.getByTestId('calendar-month-picker')).toBeInTheDocument()
133
- expect(screen.queryByTestId('calendar-year-picker')).not.toBeInTheDocument()
134
- })
135
-
136
- it('selects month', () => {
137
- const props = {}
138
-
139
- setup(props)
140
-
141
- fire.click(screen.getByLabelText('Open month selection'))
142
-
143
- const selectedMonth = generator.pickone(ALL_MONTHS)
144
- fire.click(screen.getByLabelText(`Select month ${selectedMonth.name}`))
145
-
146
- expect(screen.getByLabelText('Open month selection')).toHaveTextContent(
147
- MonthHelper(selectedMonth.name as CalendarMonthAlias).format('long')
148
- )
149
-
150
- expect(screen.getByTestId('calendar-day-picker')).toBeInTheDocument()
151
- })
152
-
153
- it('toggles year selection', () => {
154
- const props = {}
155
-
156
- setup(props)
157
-
158
- expect(screen.getByTestId('calendar-day-picker')).toBeInTheDocument()
159
- expect(screen.queryByTestId('calendar-month-picker')).not.toBeInTheDocument()
160
- expect(screen.queryByTestId('calendar-year-picker')).not.toBeInTheDocument()
161
-
162
- fire.click(screen.getByLabelText('Open year selection'))
163
-
164
- expect(screen.queryByTestId('calendar-day-picker')).not.toBeInTheDocument()
165
- expect(screen.queryByTestId('calendar-month-picker')).not.toBeInTheDocument()
166
- expect(screen.getByTestId('calendar-year-picker')).toBeInTheDocument()
167
- })
168
-
169
- it('selects year', () => {
170
- const props = {}
171
-
172
- setup(props)
173
-
174
- fire.click(screen.getByLabelText('Open year selection'))
175
-
176
- const selectedYear = generator.natural({ min: 2012, max: 2031 })
177
- fire.click(screen.getByLabelText(`Select year ${selectedYear}`))
178
-
179
- expect(screen.getByLabelText('Open year selection')).toHaveTextContent(String(selectedYear))
180
-
181
- expect(screen.getByTestId('calendar-month-picker')).toBeInTheDocument()
182
- })
183
-
184
- it('renders selected day', () => {
185
- const month = generator.natural({ min: 0, max: 11 })
186
- const year = generator.natural({ min: 2012, max: 2031 })
187
-
188
- const date = DateHelper(Date.UTC(year, month, generator.natural({ min: 1, max: 28 })))
189
-
190
- const props = {
191
- month,
192
- year,
193
- selected: [date.getTime(), date.getTime()] as [number, number],
194
- }
195
-
196
- setup(props)
197
-
198
- expect(screen.getByRole('checkbox', { name: formatter.format(date) })).toBeChecked()
199
- })
200
-
201
- it('renders selected range of days', () => {
202
- const startMonth = generator.natural({ min: 0, max: 10 })
203
- const endMonth = startMonth + 1
204
- const year = generator.natural({ min: 2012, max: 2031 })
205
-
206
- const startDay = generator.natural({ min: 5, max: 10 })
207
- const endDay = startDay + generator.natural({ min: 5, max: 10 })
208
-
209
- const startDate = DateHelper(Date.UTC(year, startMonth, startDay))
210
- const endDate = DateHelper(Date.UTC(year, endMonth, endDay))
211
-
212
- const props: Partial<CalendarProps> = {
213
- mode: 'range',
214
- month: startMonth,
215
- year,
216
- selected: [startDate.getTime(), endDate.getTime()] as [number, number],
217
- }
218
-
219
- setup(props)
220
-
221
- let currDate = DateHelper(startDate.getTime())
222
-
223
- while (currDate.getTime() < endDate.getTime()) {
224
- expect(screen.getByRole('checkbox', { name: formatter.format(currDate) })).toBeChecked()
225
-
226
- currDate = currDate.add('day', 1)
227
- }
228
- })
229
-
230
- describe('Constraints', () => {
231
- it('disables a day', () => {
232
- const month = generator.natural({ min: 0, max: 11 })
233
- const year = generator.natural({ min: 2012, max: 2031 })
234
-
235
- const disabledDate = DateHelper(new Date(year, month, generator.natural({ min: 1, max: 28 })))
236
-
237
- const props = {
238
- year,
239
- month,
240
- constraints: disabledDate.toString(),
241
- }
242
-
243
- setup(props)
244
-
245
- expect(screen.getByRole('checkbox', { name: formatter.format(disabledDate) })).toBeDisabled()
246
- })
247
-
248
- it('disables before a day (inclusive)', () => {
249
- const month = generator.natural({ min: 0, max: 11 })
250
- const year = generator.natural({ min: 2012, max: 2031 })
251
-
252
- const rangeEndDate = DateHelper(new Date(year, month, generator.natural({ min: 2, max: 28 })))
253
-
254
- const props = {
255
- year,
256
- month,
257
- constraints: [[null, rangeEndDate.toString()] as CalendarConstraint],
258
- }
259
-
260
- setup(props)
261
-
262
- for (let day = 1; day <= rangeEndDate.getDate(); day++) {
263
- const date = DateHelper(new Date(year, month, day))
264
- expect(screen.getByRole('checkbox', { name: formatter.format(date) })).toBeDisabled()
265
- }
266
- })
267
-
268
- it('disables after a day (inclusive)', () => {
269
- const month = generator.natural({ min: 0, max: 11 })
270
- const year = generator.natural({ min: 2012, max: 2031 })
271
-
272
- const rangeStartDate = DateHelper(
273
- new Date(year, month, generator.natural({ min: 1, max: 27 }))
274
- )
275
-
276
- const props = {
277
- year,
278
- month,
279
- constraints: [[rangeStartDate.toString(), null] as CalendarConstraint],
280
- }
281
-
282
- setup(props)
283
-
284
- for (let day = rangeStartDate.getDate(); day <= 28; day++) {
285
- const date = DateHelper(new Date(year, month, day))
286
- expect(screen.getByRole('checkbox', { name: formatter.format(date) })).toBeDisabled()
287
- }
288
- })
289
-
290
- it('disables between a range (inclusive)', () => {
291
- const month = generator.natural({ min: 0, max: 11 })
292
- const year = generator.natural({ min: 2012, max: 2031 })
293
-
294
- const rangeStartDate = DateHelper(
295
- new Date(year, month, generator.natural({ min: 1, max: 14 }))
296
- )
297
-
298
- const rangeEndDate = DateHelper(
299
- new Date(year, month, generator.natural({ min: 15, max: 28 }))
300
- )
301
-
302
- const props = {
303
- year,
304
- month,
305
- constraints: [[rangeStartDate.toString(), rangeEndDate.toString()] as CalendarConstraint],
306
- }
307
-
308
- setup(props)
309
-
310
- for (let day = rangeStartDate.getDate(); day <= rangeEndDate.getDate(); day++) {
311
- const date = DateHelper(new Date(year, month, day))
312
- expect(screen.getByRole('checkbox', { name: formatter.format(date) })).toBeDisabled()
313
- }
314
- })
315
- })
316
- })
@@ -1,130 +0,0 @@
1
- import React from 'react'
2
- import styled from 'styled-components'
3
-
4
- import { BaseButton } from 'components/Button'
5
- import { getToken as token } from 'theming'
6
- import { Group, Stack } from 'components/Layout'
7
- import { Icon } from 'components/Icon'
8
- import conditional, { whenProps } from 'tools/conditional'
9
- import focusable from 'styles/focusable'
10
- import hoverable from 'styles/hoverable'
11
- import MonthHelper from './Month.helper'
12
- import PickerModeToggle from './PickerModeToggle'
13
- import typography from 'styles/typography'
14
- import useCalendar from './useCalendar'
15
- import usePickerMode from './usePickerMode'
16
-
17
- import type { CalendarMonthAlias } from './Month.helper'
18
- import type { CalendarProps, GenericCalendarProps } from './Calendar.types'
19
-
20
- const Container = styled(Stack)`
21
- ${typography('body')}
22
- min-width: calc((7 * 2.5rem) + (6 * ${token('space-2xs')}));
23
- `
24
-
25
- const BorderlessButton = styled(BaseButton)`
26
- ${typography('body-bold')}
27
- border-color: transparent;
28
- background-color: transparent;
29
-
30
- color: ${token('color-neutral')};
31
-
32
- inline-size: 40px;
33
-
34
- visibility: ${conditional({
35
- visible: whenProps({ 'aria-hidden': false }),
36
- hidden: whenProps({ 'aria-hidden': true }),
37
- })};
38
-
39
- ${hoverable`
40
- color: ${token('color-neutral-dark')};
41
- `}
42
-
43
- ${focusable`
44
- box-shadow: ${token('button-primary-outline')};
45
- `}
46
- `
47
-
48
- /**
49
- * Implementation based on
50
- * * https://medium.com/swlh/build-a-date-picker-in-15mins-using-javascript-react-from-scratch-f6932c77db09
51
- * * https://codepen.io/zellwk/pen/xNpKwp
52
- */
53
- export function GenericCalendar(props: GenericCalendarProps): JSX.Element {
54
- const { calendar, onDayClick, onMonthClick, onYearClick, ...others } = props
55
- const mode = usePickerMode()
56
-
57
- const { Picker } = mode
58
-
59
- return (
60
- <Container space="xs" {...others}>
61
- <Group>
62
- <BorderlessButton
63
- type="button"
64
- aria-label="Navigate to previous month"
65
- aria-hidden={!mode.is('day-picker')}
66
- onClick={() => {
67
- calendar.set({ month: calendar.months[0].month - 1 })
68
- }}
69
- >
70
- <Icon name="caret-left" size={16} />
71
- </BorderlessButton>
72
-
73
- {calendar.months.map((month) => {
74
- return (
75
- <Group key={month.month} space="xs" align="center" justify="center" style={{ flex: 1 }}>
76
- <PickerModeToggle
77
- aria-label="Open month selection"
78
- onClick={() => {
79
- mode.dispatch({ type: 'toggle-mode', payload: 'month-picker' })
80
- }}
81
- expanded={mode.is('month-picker')}
82
- disabled={calendar.mode == 'range'}
83
- >
84
- {MonthHelper(month.month as CalendarMonthAlias).format('long')}
85
- </PickerModeToggle>
86
-
87
- <PickerModeToggle
88
- aria-label="Open year selection"
89
- onClick={() => {
90
- mode.dispatch({ type: 'toggle-mode', payload: 'year-picker' })
91
- }}
92
- expanded={mode.is('year-picker')}
93
- disabled={calendar.mode == 'range'}
94
- >
95
- {month.year}
96
- </PickerModeToggle>
97
- </Group>
98
- )
99
- })}
100
- <BorderlessButton
101
- type="button"
102
- aria-label="Navigate to next month"
103
- aria-hidden={!mode.is('day-picker')}
104
- onClick={() => {
105
- calendar.set({ month: calendar.months[0].month + 1 })
106
- }}
107
- >
108
- <Icon name="caret-right" size={16} />
109
- </BorderlessButton>
110
- </Group>
111
-
112
- <Picker
113
- calendar={calendar}
114
- mode={mode}
115
- onDayClick={onDayClick}
116
- onMonthClick={onMonthClick}
117
- onYearClick={onYearClick}
118
- />
119
- </Container>
120
- )
121
- }
122
-
123
- function Calendar(props: CalendarProps): JSX.Element {
124
- const { year, month, selected, constraints, onSelect, mode, ...rest } = props
125
- const calendar = useCalendar({ year, month, selected, constraints, mode, onSelect })
126
-
127
- return <GenericCalendar calendar={calendar} {...rest} />
128
- }
129
-
130
- export default Calendar
@@ -1,68 +0,0 @@
1
- import type { HTMLAttributes } from 'react'
2
-
3
- import type { CalendarDate, CalendarConstraint } from './Date.helper'
4
-
5
- export type RenderableMonth = {
6
- month: number
7
- year: number
8
- days: CalendarDate[]
9
- }
10
-
11
- export type CalendarMode = 'single' | 'range'
12
- export interface useCalendarProps {
13
- year?: number
14
- month?: number
15
- mode?: CalendarMode
16
- selected?: null | [string | number | null, string | number | null] // doc: timestamp or iso string,as specifified by CalendarDate
17
- onSelect?: (selection: [string | null, string | null]) => void
18
- constraints?: CalendarConstraint | CalendarConstraint[]
19
- }
20
- export interface useCalendarReturn {
21
- mode: CalendarMode
22
- months: RenderableMonth[]
23
- selected: [number | null, number | null]
24
- constraints: CalendarConstraint[]
25
- clear: () => void
26
- set: (args: { month?: number | undefined; year?: number | undefined }) => void
27
- select: (range: useCalendarProps['selected']) => void
28
- }
29
-
30
- export type PickerMode = 'day-picker' | 'month-picker' | 'year-picker'
31
-
32
- export type PickerModeAction =
33
- | { type: 'set-mode'; payload: PickerMode }
34
- | { type: 'toggle-mode'; payload: PickerMode }
35
-
36
- export interface usePickerModeProps {
37
- mode: PickerMode
38
- }
39
-
40
- export interface CalendarPickerProps {
41
- calendar: useCalendarReturn
42
- mode: usePickerModeReturn
43
- onDayClick?: (timestamp: number) => void
44
- onMonthClick?: (month: number) => void
45
- onYearClick?: (year: number) => void
46
- }
47
-
48
- export interface usePickerModeReturn {
49
- get(): PickerMode
50
- is(other: PickerMode): boolean
51
- dispatch: React.Dispatch<PickerModeAction>
52
- Picker: (props: CalendarPickerProps) => JSX.Element
53
- }
54
-
55
- export interface CalendarProps
56
- extends useCalendarProps,
57
- Omit<HTMLAttributes<HTMLDivElement>, 'onSelect'> {
58
- onDayClick?: CalendarPickerProps['onDayClick']
59
- onMonthClick?: CalendarPickerProps['onMonthClick']
60
- onYearClick?: CalendarPickerProps['onYearClick']
61
- }
62
-
63
- export interface GenericCalendarProps extends HTMLAttributes<HTMLDivElement> {
64
- calendar: useCalendarReturn
65
- onDayClick?: CalendarPickerProps['onDayClick']
66
- onMonthClick?: CalendarPickerProps['onMonthClick']
67
- onYearClick?: CalendarPickerProps['onYearClick']
68
- }