uikit-react-public 0.11.20 → 0.14.21

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 (295) hide show
  1. package/dist/components/Badge/Badge.d.ts +6 -0
  2. package/dist/components/Badge/Badge.stories.d.ts +15 -0
  3. package/dist/components/Badge/index.d.ts +2 -0
  4. package/dist/components/Button/Button.d.ts +2 -1
  5. package/dist/components/Calendar/Calendar.d.ts +3 -0
  6. package/dist/components/Calendar/Calendar.stories.d.ts +42 -0
  7. package/dist/components/Calendar/Calendar.types.d.ts +18 -0
  8. package/dist/components/Calendar/index.d.ts +2 -0
  9. package/dist/components/Calendar/subcomponents/AcademicWeeks.d.ts +7 -0
  10. package/dist/components/Calendar/subcomponents/ColumnHeading.d.ts +7 -0
  11. package/dist/components/Calendar/subcomponents/Controls.d.ts +6 -0
  12. package/dist/components/{Datepicker/subcomponents/Day → Calendar/subcomponents}/Day.d.ts +3 -3
  13. package/dist/components/{Datepicker → Calendar}/subcomponents/EventDot.d.ts +2 -2
  14. package/dist/components/Calendar/subcomponents/Grid.d.ts +11 -0
  15. package/dist/components/Calendar/subcomponents/index.d.ts +7 -0
  16. package/dist/components/{Datepicker → Calendar}/utils/getAcademicWeekNumbers/getAcademicWeekNumbers.d.ts +1 -1
  17. package/dist/components/Calendar/utils/index.d.ts +4 -0
  18. package/dist/components/Calendar/utils/normaliseMonth/normaliseMonth.d.ts +9 -0
  19. package/dist/components/Calendar/utils/parseDateFromString/parseDateFromString.d.ts +9 -0
  20. package/dist/components/Calendar/utils/parseDateFromString/parseDateFromString.test.d.ts +1 -0
  21. package/dist/components/CookieNotice/CookieNotice.d.ts +16 -0
  22. package/dist/components/CookieNotice/index.d.ts +2 -0
  23. package/dist/components/Datepicker/Datepicker.d.ts +3 -16
  24. package/dist/components/Datepicker/Datepicker.stories.d.ts +9 -3
  25. package/dist/components/Datepicker/Datepicker.types.d.ts +23 -7
  26. package/dist/components/Datepicker/index.d.ts +1 -2
  27. package/dist/components/Datepicker/subcomponents/CustomDatepicker.d.ts +17 -0
  28. package/dist/components/Datepicker/subcomponents/DatepickerInput.d.ts +10 -0
  29. package/dist/components/Datepicker/subcomponents/NativeDatepicker.d.ts +6 -0
  30. package/dist/components/Datepicker/subcomponents/Panel.d.ts +6 -0
  31. package/dist/components/Datepicker/subcomponents/VisibleField.d.ts +12 -0
  32. package/dist/components/Datepicker/subcomponents/index.d.ts +5 -7
  33. package/dist/components/Datepicker/utils/dateToLocaleISOString/dateToLocaleISOString.d.ts +17 -0
  34. package/dist/components/Datepicker/utils/dateToLocaleISOString/dateToLocaleISOString.test.d.ts +1 -0
  35. package/dist/components/Datepicker/utils/index.d.ts +2 -3
  36. package/dist/components/Datepicker/utils/parseInputValue/parseInputValue.d.ts +11 -0
  37. package/dist/components/Datepicker/utils/parseInputValue/parseInputValue.test.d.ts +1 -0
  38. package/dist/components/Dialog/BaseDialog.d.ts +7 -2
  39. package/dist/components/FileInput/FileInput.d.ts +8 -0
  40. package/dist/components/FileInput/FileInput.stories.d.ts +16 -0
  41. package/dist/components/FileInput/__tests__/FileInput.test.d.ts +1 -0
  42. package/dist/components/FileInput/index.d.ts +2 -0
  43. package/dist/components/Footer/Footer.d.ts +1 -1
  44. package/dist/components/Header/Header.d.ts +4 -1
  45. package/dist/components/Heading/Heading.d.ts +1 -1
  46. package/dist/components/Link/BaseLink.d.ts +10 -0
  47. package/dist/components/Link/Link.d.ts +5 -10
  48. package/dist/components/Link/Link.stories.d.ts +1 -1
  49. package/dist/components/Link/index.d.ts +1 -1
  50. package/dist/components/Menu/Menu.d.ts +2 -1
  51. package/dist/components/Menu/MenuContent.d.ts +2 -1
  52. package/dist/components/Menu/MenuItem.d.ts +2 -0
  53. package/dist/components/Menu/MenuSection.d.ts +1 -1
  54. package/dist/components/Search/Search.d.ts +16 -0
  55. package/dist/components/Search/Search.stories.d.ts +34 -0
  56. package/dist/components/Search/__tests__/Search.test.d.ts +1 -0
  57. package/dist/components/Search/index.d.ts +2 -0
  58. package/dist/components/Select/Select.d.ts +1 -1
  59. package/dist/components/Select/Select.stories.d.ts +3 -7
  60. package/dist/components/Select/Select.types.d.ts +19 -14
  61. package/dist/components/Select/subcomponents/CustomOption.d.ts +1 -1
  62. package/dist/components/Select/subcomponents/CustomSelect.d.ts +1 -2
  63. package/dist/components/Select/subcomponents/Panel.d.ts +1 -1
  64. package/dist/components/Select/subcomponents/VisibleField.d.ts +4 -4
  65. package/dist/components/StandaloneLink/StandaloneLink.d.ts +12 -0
  66. package/dist/components/StandaloneLink/StandaloneLink.stories.d.ts +13 -0
  67. package/dist/components/StandaloneLink/__tests__/StandaloneLink.test.d.ts +1 -0
  68. package/dist/components/StandaloneLink/index.d.ts +2 -0
  69. package/dist/components/Table/Table.d.ts +10 -8
  70. package/dist/components/Table/Table.stories.d.ts +21 -0
  71. package/dist/components/Table/Table.types.d.ts +11 -0
  72. package/dist/components/Table/__tests__/Table.test.d.ts +1 -0
  73. package/dist/components/Table/index.d.ts +2 -1
  74. package/dist/components/Table/subcomponents/Body.d.ts +4 -0
  75. package/dist/components/Table/subcomponents/Cell/Cell.d.ts +12 -0
  76. package/dist/components/Table/subcomponents/Cell/Cell.stories.d.ts +313 -0
  77. package/dist/components/Table/subcomponents/Cell/CellContent.d.ts +10 -0
  78. package/dist/components/Table/subcomponents/Cell/__tests__/Cell.test.d.ts +1 -0
  79. package/dist/components/Table/subcomponents/Head.d.ts +4 -0
  80. package/dist/components/Table/subcomponents/HeadCell/HeadCell.d.ts +13 -0
  81. package/dist/components/Table/subcomponents/HeadCell/HeadCell.stories.d.ts +312 -0
  82. package/dist/components/Table/subcomponents/HeadCell/HeadCellContent.d.ts +10 -0
  83. package/dist/components/Table/subcomponents/HeadCell/__tests__/HeadCell.test.d.ts +1 -0
  84. package/dist/components/Table/subcomponents/Row.d.ts +5 -0
  85. package/dist/components/Table/subcomponents/SortIcon.d.ts +7 -0
  86. package/dist/components/Table/subcomponents/index.d.ts +10 -0
  87. package/dist/components/Tabs/Tab.d.ts +1 -1
  88. package/dist/components/Tabs/TabContext.d.ts +1 -0
  89. package/dist/components/Tabs/Tabs.d.ts +3 -1
  90. package/dist/components/Tabs/Tabs.stories.d.ts +3 -0
  91. package/dist/components/Timepicker/Timepicker.d.ts +10 -0
  92. package/dist/components/Timepicker/Timepicker.stories.d.ts +7 -0
  93. package/dist/components/Timepicker/__tests__/Timepicker.test.d.ts +1 -0
  94. package/dist/components/Timepicker/index.d.ts +2 -0
  95. package/dist/components/Timepicker/utils/convertDateToTimeString.d.ts +2 -0
  96. package/dist/components/Timepicker/utils/convertDateToTimeString.test.d.ts +1 -0
  97. package/dist/components/Timepicker/utils/index.d.ts +1 -0
  98. package/dist/components/WeekPicker/WeekPicker.d.ts +3 -0
  99. package/dist/components/WeekPicker/index.d.ts +1 -0
  100. package/dist/components/WeekPicker/subcomponents/CustomDatepicker.d.ts +17 -0
  101. package/dist/components/WeekPicker/subcomponents/DatepickerInput.d.ts +13 -0
  102. package/dist/components/WeekPicker/subcomponents/VisibleField.d.ts +15 -0
  103. package/dist/components/WeekPicker/subcomponents/index.d.ts +3 -0
  104. package/dist/components/index.d.ts +13 -0
  105. package/dist/hooks/index.d.ts +2 -0
  106. package/dist/hooks/useFocusTrap.d.ts +9 -0
  107. package/dist/index.d.ts +1 -0
  108. package/dist/index.js +6006 -4599
  109. package/dist/theme/defaultTheme.d.ts +7 -0
  110. package/dist/theme/useTheme.d.ts +14 -0
  111. package/dist/utils/__tests__/capitalise.test.d.ts +1 -0
  112. package/dist/utils/capitalise.d.ts +2 -0
  113. package/lib/components/Alert/Alert.tsx +7 -1
  114. package/lib/components/Alert/__tests__/__snapshots__/Alert.test.tsx.snap +4 -0
  115. package/lib/components/Badge/Badge.stories.tsx +19 -0
  116. package/lib/components/Badge/Badge.tsx +48 -0
  117. package/lib/components/Badge/index.ts +2 -0
  118. package/lib/components/Breadcrumbs/__tests__/__snapshots__/Breadcrumbs.test.tsx.snap +4 -4
  119. package/lib/components/Button/Button.tsx +5 -2
  120. package/lib/components/Calendar/Calendar.stories.tsx +209 -0
  121. package/lib/components/Calendar/Calendar.tsx +121 -0
  122. package/lib/components/Calendar/Calendar.types.ts +21 -0
  123. package/lib/components/Calendar/__tests__/Calendar.test.tsx +71 -0
  124. package/lib/components/Calendar/__tests__/__snapshots__/Calendar.test.tsx.snap +1218 -0
  125. package/lib/components/Calendar/index.ts +6 -0
  126. package/lib/components/{Datepicker → Calendar}/subcomponents/AcademicWeek.tsx +1 -1
  127. package/lib/components/{Datepicker → Calendar}/subcomponents/AcademicWeeks.tsx +9 -7
  128. package/lib/components/Calendar/subcomponents/ColumnHeading.tsx +40 -0
  129. package/lib/components/{Datepicker/subcomponents/MonthSelector/MonthSelector.tsx → Calendar/subcomponents/Controls.tsx} +17 -17
  130. package/lib/components/{Datepicker/subcomponents/Day → Calendar/subcomponents}/Day.stories.tsx +8 -8
  131. package/lib/components/{Datepicker/subcomponents/Day → Calendar/subcomponents}/Day.tsx +28 -16
  132. package/lib/components/{Datepicker → Calendar}/subcomponents/EventDot.tsx +3 -3
  133. package/lib/components/Calendar/subcomponents/Grid.tsx +116 -0
  134. package/lib/components/Calendar/subcomponents/index.ts +7 -0
  135. package/lib/components/{Datepicker → Calendar}/utils/getAcademicWeekNumbers/getAcademicWeekNumbers.test.ts +1 -1
  136. package/lib/components/{Datepicker → Calendar}/utils/getAcademicWeekNumbers/getAcademicWeekNumbers.ts +1 -1
  137. package/lib/components/{Datepicker → Calendar}/utils/getDatesForCalendarGrid/getDatesForCalendarGrid.test.ts +29 -65
  138. package/lib/components/{Datepicker → Calendar}/utils/getDatesForCalendarGrid/getDatesForCalendarGrid.ts +11 -43
  139. package/lib/components/Calendar/utils/index.ts +4 -0
  140. package/lib/components/Calendar/utils/normaliseMonth/normaliseMonth.test.ts +40 -0
  141. package/lib/components/Calendar/utils/normaliseMonth/normaliseMonth.ts +16 -0
  142. package/lib/components/Calendar/utils/parseDateFromString/parseDateFromString.test.ts +15 -0
  143. package/lib/components/Calendar/utils/parseDateFromString/parseDateFromString.ts +19 -0
  144. package/lib/components/CookieNotice/CookieNotice.tsx +114 -0
  145. package/lib/components/CookieNotice/index.ts +2 -0
  146. package/lib/components/Datepicker/Datepicker.stories.tsx +128 -64
  147. package/lib/components/Datepicker/Datepicker.tsx +34 -114
  148. package/lib/components/Datepicker/Datepicker.types.ts +38 -9
  149. package/lib/components/Datepicker/__tests__/Datepicker.test.tsx +53 -112
  150. package/lib/components/Datepicker/__tests__/__snapshots__/Datepicker.test.tsx.snap +92 -747
  151. package/lib/components/Datepicker/index.ts +1 -2
  152. package/lib/components/Datepicker/subcomponents/CustomDatepicker.tsx +209 -0
  153. package/lib/components/Datepicker/subcomponents/DatepickerInput.tsx +74 -0
  154. package/lib/components/Datepicker/subcomponents/NativeDatepicker.tsx +70 -0
  155. package/lib/components/Datepicker/subcomponents/Panel.tsx +32 -0
  156. package/lib/components/Datepicker/subcomponents/VisibleField.tsx +104 -0
  157. package/lib/components/Datepicker/subcomponents/index.ts +5 -7
  158. package/lib/components/Datepicker/utils/dateToLocaleISOString/dateToLocaleISOString.test.ts +32 -0
  159. package/lib/components/Datepicker/utils/dateToLocaleISOString/dateToLocaleISOString.ts +23 -0
  160. package/lib/components/Datepicker/utils/index.ts +2 -3
  161. package/lib/components/Datepicker/utils/parseInputValue/parseInputValue.test.ts +110 -0
  162. package/lib/components/Datepicker/utils/parseInputValue/parseInputValue.ts +57 -0
  163. package/lib/components/Dialog/BaseDialog.tsx +44 -4
  164. package/lib/components/Field/__tests__/Field.test.tsx +148 -148
  165. package/lib/components/FileInput/FileInput.stories.tsx +70 -0
  166. package/lib/components/FileInput/FileInput.tsx +68 -0
  167. package/lib/components/FileInput/__tests__/FileInput.test.tsx +99 -0
  168. package/lib/components/FileInput/__tests__/__snapshots__/FileInput.test.tsx.snap +91 -0
  169. package/lib/components/FileInput/index.ts +2 -0
  170. package/lib/components/Footer/Footer.tsx +3 -3
  171. package/lib/components/Footer/__tests__/__snapshots__/Footer.test.tsx.snap +31 -31
  172. package/lib/components/Header/Header.tsx +19 -2
  173. package/lib/components/Header/__tests__/__snapshots__/Header.test.tsx.snap +4 -4
  174. package/lib/components/Heading/Documentation.mdx +1 -1
  175. package/lib/components/Heading/Heading.tsx +1 -1
  176. package/lib/components/Heading/__tests__/Heading.test.tsx +7 -19
  177. package/lib/components/Heading/__tests__/__snapshots__/Heading.test.tsx.snap +7 -7
  178. package/lib/components/Label/Label.tsx +0 -2
  179. package/lib/components/Label/__tests__/__snapshots__/Label.test.tsx.snap +7 -7
  180. package/lib/components/Link/BaseLink.tsx +84 -0
  181. package/lib/components/Link/Link.tsx +72 -32
  182. package/lib/components/Link/__tests__/__snapshots__/link.test.tsx.snap +3 -3
  183. package/lib/components/Link/__tests__/link.test.tsx +6 -13
  184. package/lib/components/Link/index.ts +1 -1
  185. package/lib/components/Menu/Menu.context.tsx +3 -1
  186. package/lib/components/Menu/Menu.tsx +5 -2
  187. package/lib/components/Menu/MenuContent.tsx +9 -6
  188. package/lib/components/Menu/MenuItem.tsx +20 -3
  189. package/lib/components/Menu/MenuSection.tsx +4 -3
  190. package/lib/components/Pagination/PaginationControls.tsx +1 -3
  191. package/lib/components/Search/Search.stories.tsx +41 -0
  192. package/lib/components/Search/Search.tsx +167 -0
  193. package/lib/components/Search/__tests__/Search.test.tsx +94 -0
  194. package/lib/components/Search/__tests__/__snapshots__/Search.test.tsx.snap +179 -0
  195. package/lib/components/Search/index.ts +2 -0
  196. package/lib/components/Select/Select.stories.tsx +8 -35
  197. package/lib/components/Select/Select.tsx +2 -2
  198. package/lib/components/Select/Select.types.ts +20 -15
  199. package/lib/components/Select/__tests__/__snapshots__/Select.test.tsx.snap +3 -3
  200. package/lib/components/Select/subcomponents/CustomOption.tsx +22 -9
  201. package/lib/components/Select/subcomponents/CustomSelect.tsx +31 -20
  202. package/lib/components/Select/subcomponents/Panel.tsx +4 -5
  203. package/lib/components/Select/subcomponents/VisibleField.tsx +26 -22
  204. package/lib/components/StandaloneLink/StandaloneLink.stories.tsx +32 -0
  205. package/lib/components/StandaloneLink/StandaloneLink.tsx +183 -0
  206. package/lib/components/StandaloneLink/__tests__/StandaloneLink.test.tsx +57 -0
  207. package/lib/components/StandaloneLink/__tests__/__snapshots__/StandaloneLink.test.tsx.snap +19 -0
  208. package/lib/components/StandaloneLink/index.ts +2 -0
  209. package/lib/components/Table/Table.stories.tsx +337 -0
  210. package/lib/components/Table/Table.tsx +42 -67
  211. package/lib/components/Table/Table.types.ts +14 -0
  212. package/lib/components/Table/__tests__/Table.test.tsx +121 -0
  213. package/lib/components/Table/__tests__/__snapshots__/Table.test.tsx.snap +210 -0
  214. package/lib/components/Table/index.ts +8 -1
  215. package/lib/components/Table/subcomponents/Body.tsx +18 -0
  216. package/lib/components/Table/subcomponents/Cell/Cell.stories.tsx +151 -0
  217. package/lib/components/Table/subcomponents/Cell/Cell.tsx +72 -0
  218. package/lib/components/Table/subcomponents/Cell/CellContent.tsx +91 -0
  219. package/lib/components/Table/subcomponents/Cell/__tests__/Cell.test.tsx +115 -0
  220. package/lib/components/Table/subcomponents/Cell/__tests__/__snapshots__/Cell.test.tsx.snap +107 -0
  221. package/lib/components/Table/subcomponents/Head.tsx +34 -0
  222. package/lib/components/Table/subcomponents/HeadCell/HeadCell.stories.tsx +85 -0
  223. package/lib/components/Table/subcomponents/HeadCell/HeadCell.tsx +99 -0
  224. package/lib/components/Table/subcomponents/HeadCell/HeadCellContent.tsx +61 -0
  225. package/lib/components/Table/subcomponents/HeadCell/__tests__/HeadCell.test.tsx +137 -0
  226. package/lib/components/Table/subcomponents/HeadCell/__tests__/__snapshots__/HeadCell.test.tsx.snap +110 -0
  227. package/lib/components/Table/subcomponents/Row.tsx +49 -0
  228. package/lib/components/Table/subcomponents/SortIcon.tsx +63 -0
  229. package/lib/components/Table/subcomponents/index.ts +14 -0
  230. package/lib/components/Tabs/Tab.tsx +3 -3
  231. package/lib/components/Tabs/TabContext.tsx +1 -0
  232. package/lib/components/Tabs/Tabs.stories.tsx +9 -3
  233. package/lib/components/Tabs/Tabs.tsx +10 -32
  234. package/lib/components/Tabs/__tests__/Tabs.test.tsx +10 -4
  235. package/lib/components/Tabs/__tests__/__snapshots__/Tabs.test.tsx.snap +32 -32
  236. package/lib/components/Timepicker/Timepicker.stories.tsx +43 -0
  237. package/lib/components/Timepicker/Timepicker.tsx +96 -0
  238. package/lib/components/Timepicker/__tests__/Timepicker.test.tsx +55 -0
  239. package/lib/components/Timepicker/__tests__/__snapshots__/Timepicker.test.tsx.snap +19 -0
  240. package/lib/components/Timepicker/index.tsx +2 -0
  241. package/lib/components/Timepicker/utils/convertDateToTimeString.test.ts +54 -0
  242. package/lib/components/Timepicker/utils/convertDateToTimeString.ts +10 -0
  243. package/lib/components/Timepicker/utils/index.ts +1 -0
  244. package/lib/components/WeekPicker/WeekPicker.tsx +26 -0
  245. package/lib/components/WeekPicker/index.ts +1 -0
  246. package/lib/components/WeekPicker/subcomponents/CustomDatepicker.tsx +298 -0
  247. package/lib/components/WeekPicker/subcomponents/DatepickerInput.tsx +111 -0
  248. package/lib/components/WeekPicker/subcomponents/VisibleField.tsx +126 -0
  249. package/lib/components/WeekPicker/subcomponents/index.ts +3 -0
  250. package/lib/components/index.ts +20 -0
  251. package/lib/hooks/index.ts +2 -0
  252. package/lib/hooks/useFocusTrap.ts +123 -0
  253. package/lib/index.ts +1 -0
  254. package/lib/theme/defaultTheme.ts +7 -0
  255. package/lib/utils/__tests__/capitalise.test.ts +40 -0
  256. package/lib/utils/capitalise.ts +4 -0
  257. package/package.json +2 -2
  258. package/dist/components/Datepicker/subcomponents/AcademicWeeks.d.ts +0 -7
  259. package/dist/components/Datepicker/subcomponents/CalendarGrid/CalendarGrid.d.ts +0 -8
  260. package/dist/components/Datepicker/subcomponents/CalendarGrid/index.d.ts +0 -1
  261. package/dist/components/Datepicker/subcomponents/CalendarMenu/CalendarMenu.d.ts +0 -12
  262. package/dist/components/Datepicker/subcomponents/CalendarMenu/index.d.ts +0 -1
  263. package/dist/components/Datepicker/subcomponents/ColumnHeadings/ColumnHeadings.d.ts +0 -2
  264. package/dist/components/Datepicker/subcomponents/ColumnHeadings/index.d.ts +0 -1
  265. package/dist/components/Datepicker/subcomponents/DateField/DateField.d.ts +0 -7
  266. package/dist/components/Datepicker/subcomponents/DateField/index.d.ts +0 -1
  267. package/dist/components/Datepicker/subcomponents/Day/index.d.ts +0 -1
  268. package/dist/components/Datepicker/subcomponents/MonthSelector/MonthSelector.d.ts +0 -6
  269. package/dist/components/Datepicker/subcomponents/MonthSelector/index.d.ts +0 -1
  270. package/dist/components/Datepicker/subcomponents/Native/Native.d.ts +0 -9
  271. package/dist/components/Datepicker/subcomponents/Native/index.d.ts +0 -1
  272. package/dist/components/Datepicker/utils/parseDateForDateField/parseDateForDateField.d.ts +0 -20
  273. package/lib/components/Datepicker/subcomponents/CalendarGrid/CalendarGrid.tsx +0 -54
  274. package/lib/components/Datepicker/subcomponents/CalendarGrid/index.ts +0 -1
  275. package/lib/components/Datepicker/subcomponents/CalendarMenu/CalendarMenu.tsx +0 -90
  276. package/lib/components/Datepicker/subcomponents/CalendarMenu/index.ts +0 -1
  277. package/lib/components/Datepicker/subcomponents/ColumnHeadings/ColumnHeadings.tsx +0 -35
  278. package/lib/components/Datepicker/subcomponents/ColumnHeadings/index.ts +0 -1
  279. package/lib/components/Datepicker/subcomponents/DateField/DateField.tsx +0 -155
  280. package/lib/components/Datepicker/subcomponents/DateField/__tests__/DateField.test.tsx +0 -191
  281. package/lib/components/Datepicker/subcomponents/DateField/index.ts +0 -1
  282. package/lib/components/Datepicker/subcomponents/Day/index.ts +0 -1
  283. package/lib/components/Datepicker/subcomponents/MonthSelector/index.ts +0 -1
  284. package/lib/components/Datepicker/subcomponents/Native/Native.tsx +0 -59
  285. package/lib/components/Datepicker/subcomponents/Native/index.ts +0 -1
  286. package/lib/components/Datepicker/utils/parseDateForDateField/parseDateForDateField.test.ts +0 -41
  287. package/lib/components/Datepicker/utils/parseDateForDateField/parseDateForDateField.ts +0 -48
  288. package/lib/components/Field/__tests__/__snapshots__/Field.test.tsx.snap +0 -300
  289. /package/dist/components/{Datepicker/subcomponents/DateField/__tests__/DateField.test.d.ts → Calendar/__tests__/Calendar.test.d.ts} +0 -0
  290. /package/dist/components/{Datepicker → Calendar}/subcomponents/AcademicWeek.d.ts +0 -0
  291. /package/dist/components/{Datepicker/subcomponents/Day → Calendar/subcomponents}/Day.stories.d.ts +0 -0
  292. /package/dist/components/{Datepicker → Calendar}/utils/getAcademicWeekNumbers/getAcademicWeekNumbers.test.d.ts +0 -0
  293. /package/dist/components/{Datepicker → Calendar}/utils/getDatesForCalendarGrid/getDatesForCalendarGrid.d.ts +0 -0
  294. /package/dist/components/{Datepicker → Calendar}/utils/getDatesForCalendarGrid/getDatesForCalendarGrid.test.d.ts +0 -0
  295. /package/dist/components/{Datepicker/utils/parseDateForDateField/parseDateForDateField.test.d.ts → Calendar/utils/normaliseMonth/normaliseMonth.test.d.ts} +0 -0
@@ -1,155 +0,0 @@
1
- import { css } from '@emotion/css';
2
- import { Icon } from '../../..';
3
- import { useTheme } from '../../../../theme';
4
- import { useState, useRef, useEffect } from 'react';
5
- import { parseDate } from '../../utils';
6
-
7
- interface DateFieldProps {
8
- date: Date | null | undefined;
9
- onChange: (date: Date | null | undefined) => void;
10
- testId?: string;
11
- }
12
-
13
- const DateField = ({
14
- date,
15
- onChange,
16
- testId,
17
- }: DateFieldProps) => {
18
- const [theme] = useTheme();
19
-
20
- // Derived props (tidier than using `date?.getDate()`, etc, everywhere.)
21
- const day =
22
- date?.getDate().toString().padStart(2, '0') ?? '';
23
- const month = date
24
- ? (date.getMonth() + 1).toString().padStart(2, '0')
25
- : '';
26
- const year = date?.getFullYear().toString() ?? '';
27
-
28
- const [displayDate, setDisplayDate] = useState('');
29
- const inputRef = useRef<HTMLInputElement>(null);
30
-
31
- useEffect(() => {
32
- // Format: DD/MM/YYYY
33
- setDisplayDate(date ? `${day}/${month}/${year}` : '');
34
- }, [date, day, month, year]);
35
-
36
- /**
37
- * Handles the change event for the date input field.
38
- *
39
- * This function ensures that only valid characters for a date are accepted
40
- * in the input field. The accepted characters include digits (0-9), slashes (/),
41
- * spaces, and hyphens (-). If the input contains any other characters, the function
42
- * will not update the display date.
43
- *
44
- * @param event - The change event triggered by the input field.
45
- */
46
- const handleInputChange = (
47
- event: React.ChangeEvent<HTMLInputElement>
48
- ) => {
49
- // Accepted characters: 0-9, /, space, hyphen
50
- const regex = new RegExp('^[0123456789\\/ \\-]*$');
51
- if (!regex.test(event.target.value)) return;
52
-
53
- setDisplayDate(event.target.value);
54
- };
55
-
56
- const resetDate = () => {
57
- setDisplayDate(date ? `${day}/${month}/${year}` : '');
58
- };
59
-
60
- const handleParseDate = () => {
61
- const parsedDate = parseDate(displayDate);
62
- if (parsedDate) onChange(parsedDate);
63
- else resetDate();
64
- };
65
-
66
- const handleInputKeyDown = (
67
- event: React.KeyboardEvent<HTMLDivElement>
68
- ) => {
69
- if (event.key === 'Enter') handleParseDate();
70
- else if (event.key === 'Escape') resetDate();
71
- };
72
-
73
- const handleKeyDownEventPropagation = (
74
- event: React.KeyboardEvent<HTMLDivElement>
75
- ) => {
76
- // Prevent event bubbling any further, so arrow keys presses don't affect `<CalendarGrid>`
77
- event.stopPropagation();
78
- };
79
-
80
- const containerStyle = css`
81
- display: flex;
82
- align-items: center;
83
- justify-content: space-between;
84
- width: 200px;
85
- height: 48px;
86
- padding: 0 16px;
87
- border: 1px solid ${theme.color.neutral.grey60};
88
- color: ${theme.color.neutral.black};
89
- background-color: ${theme.color.neutral.white};
90
- cursor: pointer;
91
-
92
- &:focus-visible {
93
- outline: none;
94
- box-shadow: ${theme.boxShadow.focus};
95
- }
96
- `;
97
-
98
- const inputStyle = css`
99
- width: 150px;
100
- font-family: ${theme.font.family.primary};
101
- font-size: 16px;
102
- text-align: left;
103
- border: none;
104
- padding: 6px;
105
- letter-spacing: 1px;
106
- color: ${theme.color.text.primary};
107
- caret-color: ${theme.color.text.primary};
108
-
109
- &::placeholder {
110
- color: ${theme.color.neutral.grey40};
111
- }
112
-
113
- &::selection {
114
- background-color: ${theme.color.neutral.grey60};
115
- color: ${theme.color.neutral.white};
116
- }
117
-
118
- &:focus {
119
- outline: none;
120
- background-color: ${theme.color.interaction.blue10};
121
- }
122
- `;
123
-
124
- return (
125
- <div
126
- className={containerStyle}
127
- role='group'
128
- aria-label='Date input'
129
- onBlur={handleParseDate}
130
- onClick={() => inputRef.current?.focus()}
131
- data-testid={testId + '-date-field'}
132
- >
133
- <div onKeyDown={handleKeyDownEventPropagation}>
134
- <input
135
- className={inputStyle}
136
- value={displayDate}
137
- placeholder='DD/MM/YYYY'
138
- onChange={handleInputChange}
139
- onKeyDown={handleInputKeyDown}
140
- type='text'
141
- inputMode='numeric'
142
- ref={inputRef}
143
- aria-label='Date'
144
- data-testid={testId + '-input'}
145
- />
146
- </div>
147
- <Icon.Calendar
148
- onClick={handleParseDate}
149
- data-testid={testId + '-calendar-icon'}
150
- />
151
- </div>
152
- );
153
- };
154
-
155
- export default DateField;
@@ -1,191 +0,0 @@
1
- import {
2
- describe,
3
- test,
4
- expect,
5
- vi,
6
- afterEach,
7
- } from 'vitest';
8
- import {
9
- render,
10
- screen,
11
- fireEvent,
12
- cleanup,
13
- } from '@testing-library/react';
14
- import { ThemeContextProvider } from '../../../../../theme';
15
- import DateField from '../DateField';
16
-
17
- const customRender = (ui: React.ReactElement) => {
18
- return render(ui, {
19
- wrapper: ({ children }) => (
20
- <ThemeContextProvider>
21
- {children}
22
- </ThemeContextProvider>
23
- ),
24
- });
25
- };
26
-
27
- describe('DateField', () => {
28
- // Run cleanup after each test
29
- afterEach(() => {
30
- cleanup();
31
- vi.resetAllMocks();
32
- });
33
-
34
- test('Renders without crashing', () => {
35
- const testId = 'abc';
36
- customRender(
37
- <DateField
38
- date={null}
39
- onChange={vi.fn()}
40
- testId={testId}
41
- />
42
- );
43
- const dateField = screen.getByTestId(
44
- testId + '-date-field'
45
- );
46
- expect(dateField).toBeInTheDocument();
47
- });
48
-
49
- test('Displays placeholder text when `date` prop is null', () => {
50
- const testId = 'abc';
51
- customRender(
52
- <DateField
53
- date={null}
54
- onChange={vi.fn()}
55
- testId={testId}
56
- />
57
- );
58
- const inputField = screen.getByTestId(
59
- testId + '-input'
60
- ) as HTMLInputElement;
61
- expect(inputField.placeholder).toBe('DD/MM/YYYY');
62
- });
63
-
64
- test('Displays the correct date values when a date is present', () => {
65
- const testId = 'abc';
66
- const date = new Date('2025-02-01');
67
- customRender(
68
- <DateField
69
- date={date}
70
- onChange={vi.fn()}
71
- testId={testId}
72
- />
73
- );
74
- const inputField = screen.getByTestId(
75
- testId + '-input'
76
- ) as HTMLInputElement;
77
- expect(inputField.value).toBe('01/02/2025');
78
- });
79
-
80
- test('Updates date value (from null)', () => {
81
- const testId = 'abc';
82
- const date = new Date('2025-02-01');
83
- const onChange = vi.fn();
84
- customRender(
85
- <DateField
86
- date={null}
87
- onChange={onChange}
88
- testId={testId}
89
- />
90
- );
91
- const inputField = screen.getByTestId(
92
- testId + '-input'
93
- ) as HTMLInputElement;
94
-
95
- fireEvent.change(inputField, {
96
- target: { value: '01/02/2025' },
97
- });
98
- fireEvent.keyDown(inputField, { key: 'Enter' });
99
- expect(onChange).toHaveBeenCalledWith(date);
100
- });
101
-
102
- test('Updates date value (from existing date)', () => {
103
- const testId = 'abc';
104
- const date = new Date('2025-01-01');
105
- const onChange = vi.fn();
106
- customRender(
107
- <DateField
108
- date={date}
109
- onChange={onChange}
110
- testId={testId}
111
- />
112
- );
113
- const inputField = screen.getByTestId(
114
- testId + '-input'
115
- ) as HTMLInputElement;
116
-
117
- fireEvent.change(inputField, {
118
- target: { value: '01/02/2025' },
119
- });
120
- fireEvent.keyDown(inputField, { key: 'Enter' });
121
- expect(onChange).toHaveBeenCalledWith(
122
- new Date('2025-02-01')
123
- );
124
- });
125
-
126
- test('Handles alternative date formats', () => {
127
- const testId = 'abc';
128
- const onChange = vi.fn();
129
- customRender(
130
- <DateField
131
- date={null}
132
- onChange={onChange}
133
- testId={testId}
134
- />
135
- );
136
- const inputField = screen.getByTestId(
137
- testId + '-input'
138
- ) as HTMLInputElement;
139
-
140
- // With 1 digit for day and month, and 2 digits for year
141
- fireEvent.change(inputField, {
142
- target: { value: '3/2/25' },
143
- });
144
- fireEvent.keyDown(inputField, { key: 'Enter' });
145
- expect(onChange).toHaveBeenCalledWith(
146
- new Date('2025-02-03')
147
- );
148
-
149
- // With hyphens
150
- fireEvent.change(inputField, {
151
- target: { value: '20-03-2026' },
152
- });
153
- fireEvent.keyDown(inputField, { key: 'Enter' });
154
- expect(onChange).toHaveBeenCalledWith(
155
- new Date('2026-03-20')
156
- );
157
-
158
- // With spaces
159
- fireEvent.change(inputField, {
160
- target: { value: '10 11 27' },
161
- });
162
- fireEvent.keyDown(inputField, { key: 'Enter' });
163
- expect(onChange).toHaveBeenCalledWith(
164
- new Date('2027-11-10')
165
- );
166
- });
167
-
168
- test('Resets date value on ESCAPE key press', () => {
169
- const testId = 'abc';
170
- const date = new Date('2025-01-01');
171
- const onChange = vi.fn();
172
- customRender(
173
- <DateField
174
- date={date}
175
- onChange={onChange}
176
- testId={testId}
177
- />
178
- );
179
- const inputField = screen.getByTestId(
180
- testId + '-input'
181
- ) as HTMLInputElement;
182
-
183
- fireEvent.change(inputField, {
184
- target: { value: '10/10/2026' },
185
- });
186
- fireEvent.keyDown(inputField, { key: 'Escape' });
187
- expect(inputField.value).toBe('01/01/2025');
188
- });
189
-
190
- // Any further tests can be added here
191
- });
@@ -1 +0,0 @@
1
- export { default } from './DateField';
@@ -1 +0,0 @@
1
- export { default } from './Day';
@@ -1 +0,0 @@
1
- export { default } from './MonthSelector';
@@ -1,59 +0,0 @@
1
- import { css } from '@emotion/css';
2
- import { theme } from '../../../../theme';
3
-
4
- interface NativeProps {
5
- date?: Date | null | undefined;
6
- minDate?: Date | null | undefined;
7
- maxDate?: Date | null | undefined;
8
- onDateChange?: (date: Date | null | undefined) => void;
9
- testId?: string;
10
- }
11
-
12
- const Native = ({
13
- date,
14
- minDate,
15
- maxDate,
16
- onDateChange,
17
- testId,
18
- ...props
19
- }: NativeProps) => {
20
- const inputStyle = css`
21
- width: 200px;
22
- height: 48px;
23
- padding: 0 16px;
24
- border: 1px solid #000;
25
- color: #1a1a1a;
26
- font-size: 16px;
27
- font-family: sans-serif;
28
- text-transform: uppercase;
29
- cursor: pointer;
30
-
31
- &:focus-visible {
32
- outline: none;
33
- box-shadow: ${theme.boxShadow.focus};
34
- }
35
- `;
36
-
37
- const handleChange = (
38
- event: React.ChangeEvent<HTMLInputElement>
39
- ) => onDateChange?.(event.target.valueAsDate);
40
-
41
- return (
42
- <input
43
- type='date'
44
- value={date ? date.toISOString().split('T')[0] : ''}
45
- min={
46
- minDate ? minDate.toISOString().split('T')[0] : ''
47
- }
48
- max={
49
- maxDate ? maxDate.toISOString().split('T')[0] : ''
50
- }
51
- onChange={handleChange}
52
- className={inputStyle}
53
- data-testid={testId}
54
- {...props}
55
- />
56
- );
57
- };
58
-
59
- export default Native;
@@ -1 +0,0 @@
1
- export { default } from './Native';
@@ -1,41 +0,0 @@
1
- import { describe, expect, test } from 'vitest';
2
- import parseDateForDateField from './parseDateForDateField';
3
-
4
- describe('parseDateForDateField', () => {
5
- test('Parses a valid slash-separated date string', () => {
6
- const dateString = '02/03/2025';
7
- const expectedDate = new Date('2025-03-02');
8
- expect(parseDateForDateField(dateString)).toEqual(
9
- expectedDate
10
- );
11
- });
12
-
13
- test('Parses a valid hyphen-separated date string', () => {
14
- const dateString = '01-02-2025';
15
- const expectedDate = new Date('2025-02-01');
16
- expect(parseDateForDateField(dateString)).toEqual(
17
- expectedDate
18
- );
19
- });
20
-
21
- test('Parses a valid space-separated date string', () => {
22
- const dateString = '10 11 2025';
23
- const expectedDate = new Date('2025-11-10');
24
- expect(parseDateForDateField(dateString)).toEqual(
25
- expectedDate
26
- );
27
- });
28
-
29
- test('Parses a valid date string with leading/trailing whitespace', () => {
30
- const dateString = ' 11-12-2025 ';
31
- const expectedDate = new Date('2025-12-11');
32
- expect(parseDateForDateField(dateString)).toEqual(
33
- expectedDate
34
- );
35
- });
36
-
37
- test('Invalid date string returns null', () => {
38
- const dateString = '1234567890';
39
- expect(parseDateForDateField(dateString)).toBeNull();
40
- });
41
- });
@@ -1,48 +0,0 @@
1
- /**
2
- * Parses a date string and returns a `Date` object.
3
- *
4
- * Can handle date strings entered by the user as "day/month/year", "day month year", or "day-month-year".
5
- * If the date is not in the expected format or contains invalid numbers, it returns `null`.
6
- *
7
- * Used solely by `<DateField>` component.
8
- *
9
- * - A one-digit or two-digit year is assumed to be in the 21st century (e.g., '21' becomes '2021').
10
- *
11
- * @param {string} dateString - The date string to be parsed.
12
- *
13
- * @future Any additional validation logic for dates entered by the user should be added here.
14
- * For example, supporting formats like "day / month / year" (separated with a space and a slash)
15
- * or "daymonthyear" (without spaces or separators).
16
- *
17
- * @returns {void}
18
- */
19
- const parseDate = (dateString: string) => {
20
- // Remove any leading or trailing whitespace and split the string into parts,
21
- // separated by a slash, space, or hyphen
22
- const dateParts = dateString.trim().split(/[-/ ]/);
23
- if (dateParts.length !== 3) {
24
- return null;
25
- }
26
-
27
- const parsedDay = parseInt(dateParts[0], 10); // (Second argument is just for base 10 -- decimal)
28
- const parsedMonth = parseInt(dateParts[1], 10);
29
- let parsedYear = parseInt(dateParts[2], 10);
30
- if (
31
- isNaN(parsedDay) ||
32
- isNaN(parsedMonth) ||
33
- isNaN(parsedYear)
34
- ) {
35
- return null;
36
- }
37
-
38
- // We can assume a one-digit or two-digit year is in the 21st century
39
- if (
40
- parsedYear.toString().length === 2 ||
41
- parsedYear.toString().length === 1
42
- )
43
- parsedYear += 2000;
44
-
45
- return new Date(parsedYear, parsedMonth - 1, parsedDay); // month is 0-indexed
46
- };
47
-
48
- export default parseDate;