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

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