@variocube/app-ui 1.14.5 → 1.16.0

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 (323) hide show
  1. package/esm/AppShell/AppShell.js +12 -12
  2. package/esm/AppShell/AppShell.js.map +1 -1
  3. package/esm/AppShell/index.js.map +1 -1
  4. package/esm/Input/ActionsMenu.js +1 -1
  5. package/esm/Input/ActionsMenu.js.map +1 -1
  6. package/esm/Input/EmailSenderField.js +3 -3
  7. package/esm/Input/EmailSenderField.js.map +1 -1
  8. package/esm/Input/Selector.js +2 -2
  9. package/esm/Input/Selector.js.map +1 -1
  10. package/esm/Paging/Paging.d.ts +1 -1
  11. package/esm/Paging/Paging.js +5 -5
  12. package/esm/Paging/Paging.js.map +1 -1
  13. package/esm/Paging/index.d.ts +2 -1
  14. package/esm/Paging/index.js.map +1 -1
  15. package/esm/VCThemeProvider/JetbrainsMonoFont.js +8 -8
  16. package/esm/VCThemeProvider/JetbrainsMonoFont.js.map +1 -1
  17. package/esm/VCThemeProvider/RobotoFont.js +8 -8
  18. package/esm/VCThemeProvider/RobotoFont.js.map +1 -1
  19. package/esm/VCThemeProvider/ThemeModeSwitcher.js +5 -5
  20. package/esm/VCThemeProvider/ThemeModeSwitcher.js.map +1 -1
  21. package/esm/VCThemeProvider/VCThemeProvider.d.ts +1 -1
  22. package/esm/VCThemeProvider/VCThemeProvider.js +21 -21
  23. package/esm/VCThemeProvider/VCThemeProvider.js.map +1 -1
  24. package/esm/audit/AuditChanges.js +9 -5
  25. package/esm/audit/AuditChanges.js.map +1 -1
  26. package/esm/audit/AuditTimeline.js +1 -1
  27. package/esm/audit/AuditTimeline.js.map +1 -1
  28. package/esm/audit/AuditTimelineItem.js +3 -3
  29. package/esm/audit/AuditTimelineItem.js.map +1 -1
  30. package/esm/audit/index.d.ts +1 -1
  31. package/esm/audit/index.js +1 -1
  32. package/esm/audit/index.js.map +1 -1
  33. package/esm/breadcrumbs.d.ts +2 -2
  34. package/esm/breadcrumbs.js +3 -3
  35. package/esm/breadcrumbs.js.map +1 -1
  36. package/esm/code/CodeBlock.d.ts +1 -1
  37. package/esm/code/CodeBlock.js +1 -1
  38. package/esm/code/CodeBlock.js.map +1 -1
  39. package/esm/confirm/ConfirmButton.js.map +1 -1
  40. package/esm/confirm/ConfirmDialog.js +1 -1
  41. package/esm/confirm/ConfirmDialog.js.map +1 -1
  42. package/esm/confirm/ConfirmMenuItem.js +1 -1
  43. package/esm/confirm/ConfirmMenuItem.js.map +1 -1
  44. package/esm/container/ContainerLayout.d.ts +1 -1
  45. package/esm/container/ContainerLayout.js +5 -5
  46. package/esm/container/ContainerLayout.js.map +1 -1
  47. package/esm/container/ContainerSettingsContext.d.ts +2 -2
  48. package/esm/container/ContainerSettingsContext.js +6 -6
  49. package/esm/container/ContainerSettingsContext.js.map +1 -1
  50. package/esm/container/ContainerWidthControl.js +2 -2
  51. package/esm/container/ContainerWidthControl.js.map +1 -1
  52. package/esm/container/index.d.ts +1 -1
  53. package/esm/container/index.js +1 -1
  54. package/esm/container/index.js.map +1 -1
  55. package/esm/content-table/ContentTable.d.ts +1 -1
  56. package/esm/content-table/ContentTable.js +26 -19
  57. package/esm/content-table/ContentTable.js.map +1 -1
  58. package/esm/content-table/UndrawEmpty.js.map +1 -1
  59. package/esm/content-table/index.js.map +1 -1
  60. package/esm/country/country-select.js.map +1 -1
  61. package/esm/country/index.d.ts +3 -3
  62. package/esm/country/index.js +3 -3
  63. package/esm/country/index.js.map +1 -1
  64. package/esm/country/locale-select.js +1 -1
  65. package/esm/country/locale-select.js.map +1 -1
  66. package/esm/country/locales.js +1 -1
  67. package/esm/country/locales.js.map +1 -1
  68. package/esm/country/phone-prefix-select.js +1 -1
  69. package/esm/country/phone-prefix-select.js.map +1 -1
  70. package/esm/cube/accessibility.js +2 -1
  71. package/esm/cube/accessibility.js.map +1 -1
  72. package/esm/data-table/DataTableColumnSettings.d.ts +1 -1
  73. package/esm/data-table/DataTableColumnSettings.js +2 -2
  74. package/esm/data-table/DataTableColumnSettings.js.map +1 -1
  75. package/esm/data-table/DataTableHeader.js +1 -1
  76. package/esm/data-table/DataTableHeader.js.map +1 -1
  77. package/esm/data-table/DataTableToolbar.js +1 -1
  78. package/esm/data-table/DataTableToolbar.js.map +1 -1
  79. package/esm/data-table/index.d.ts +4 -4
  80. package/esm/data-table/index.js +4 -4
  81. package/esm/data-table/index.js.map +1 -1
  82. package/esm/data-table/useDataTableColumnStorage.d.ts +9 -1
  83. package/esm/data-table/useDataTableColumnStorage.js +12 -5
  84. package/esm/data-table/useDataTableColumnStorage.js.map +1 -1
  85. package/esm/data-table/useDataTableStorage.d.ts +31 -6
  86. package/esm/data-table/useDataTableStorage.js +25 -5
  87. package/esm/data-table/useDataTableStorage.js.map +1 -1
  88. package/esm/date-pickers/PlainAdapterCommon.d.ts +1 -1
  89. package/esm/date-pickers/PlainAdapterCommon.js.map +1 -1
  90. package/esm/date-pickers/PlainDateAdapter.js.map +1 -1
  91. package/esm/date-pickers/PlainDatePicker.js +1 -1
  92. package/esm/date-pickers/PlainDatePicker.js.map +1 -1
  93. package/esm/date-pickers/PlainDatePicker.spec.js +2 -2
  94. package/esm/date-pickers/PlainDatePicker.spec.js.map +1 -1
  95. package/esm/date-pickers/PlainDateTimeAdapter.js.map +1 -1
  96. package/esm/date-pickers/PlainDateTimePicker.js +2 -2
  97. package/esm/date-pickers/PlainDateTimePicker.js.map +1 -1
  98. package/esm/date-pickers/PlainDateTimePicker.spec.js +2 -2
  99. package/esm/date-pickers/PlainDateTimePicker.spec.js.map +1 -1
  100. package/esm/date-pickers/PlainTimeAdapter.js.map +1 -1
  101. package/esm/date-pickers/PlainTimePicker.js +2 -2
  102. package/esm/date-pickers/PlainTimePicker.js.map +1 -1
  103. package/esm/date-pickers/PlainTimePicker.spec.js +2 -2
  104. package/esm/date-pickers/PlainTimePicker.spec.js.map +1 -1
  105. package/esm/date-pickers/TemporalAdapter.d.ts +1 -1
  106. package/esm/date-pickers/TemporalAdapter.js +1 -1
  107. package/esm/date-pickers/TemporalAdapter.js.map +1 -1
  108. package/esm/date-pickers/TimezoneSelect.js +348 -348
  109. package/esm/date-pickers/TimezoneSelect.js.map +1 -1
  110. package/esm/date-pickers/getFormatString.js.map +1 -1
  111. package/esm/date-pickers/index.d.ts +2 -1
  112. package/esm/date-pickers/index.js +1 -1
  113. package/esm/date-pickers/index.js.map +1 -1
  114. package/esm/date-pickers/parse.js.map +1 -1
  115. package/esm/date-pickers/timeframe-picker.js +7 -7
  116. package/esm/date-pickers/timeframe-picker.js.map +1 -1
  117. package/esm/date-pickers/useLocale.js.map +1 -1
  118. package/esm/date-pickers/useRenderInput.js +5 -3
  119. package/esm/date-pickers/useRenderInput.js.map +1 -1
  120. package/esm/fetch.d.ts +2 -3
  121. package/esm/fetch.js +4 -4
  122. package/esm/fetch.js.map +1 -1
  123. package/esm/formats/CompactFormat.js +1 -1
  124. package/esm/formats/CompactFormat.js.map +1 -1
  125. package/esm/formats/CompactFormat.spec.js +1 -1
  126. package/esm/formats/CompactFormat.spec.js.map +1 -1
  127. package/esm/formats/CurrencyFormat.js +1 -1
  128. package/esm/formats/CurrencyFormat.js.map +1 -1
  129. package/esm/formats/CurrencyFormat.spec.js +1 -1
  130. package/esm/formats/CurrencyFormat.spec.js.map +1 -1
  131. package/esm/formats/DecimalFormat.js +1 -1
  132. package/esm/formats/DecimalFormat.js.map +1 -1
  133. package/esm/formats/DecimalFormat.spec.js +1 -1
  134. package/esm/formats/DecimalFormat.spec.js.map +1 -1
  135. package/esm/formats/DurationFormat.js +2 -2
  136. package/esm/formats/DurationFormat.js.map +1 -1
  137. package/esm/formats/DurationFormat.spec.js +2 -2
  138. package/esm/formats/DurationFormat.spec.js.map +1 -1
  139. package/esm/formats/TemporalFormat.spec.js +2 -2
  140. package/esm/formats/TemporalFormat.spec.js.map +1 -1
  141. package/esm/formats/TemporalRangeFormat.js +1 -1
  142. package/esm/formats/TemporalRangeFormat.js.map +1 -1
  143. package/esm/formats/TemporalRangeFormat.spec.js +2 -2
  144. package/esm/formats/TemporalRangeFormat.spec.js.map +1 -1
  145. package/esm/formats/useDateTimeFormat.js +5 -2
  146. package/esm/formats/useDateTimeFormat.js.map +1 -1
  147. package/esm/formats/useNumberFormat.js +1 -1
  148. package/esm/formats/useNumberFormat.js.map +1 -1
  149. package/esm/formats/useRelativeTimeFormat.js +4 -2
  150. package/esm/formats/useRelativeTimeFormat.js.map +1 -1
  151. package/esm/forms/SearchForm.js +1 -1
  152. package/esm/forms/SearchForm.js.map +1 -1
  153. package/esm/getNavigatorLanguages.js.map +1 -1
  154. package/esm/getSupportedFormatLocale.js.map +1 -1
  155. package/esm/help/HelpDrawer.js +12 -8
  156. package/esm/help/HelpDrawer.js.map +1 -1
  157. package/esm/help/index.d.ts +1 -1
  158. package/esm/help/index.js +1 -1
  159. package/esm/help/index.js.map +1 -1
  160. package/esm/icons.d.ts +13 -13
  161. package/esm/icons.js +13 -13
  162. package/esm/icons.js.map +1 -1
  163. package/esm/layout/ErrorBoundary.js +36 -36
  164. package/esm/layout/ErrorBoundary.js.map +1 -1
  165. package/esm/layout/NotFound.js +6 -6
  166. package/esm/layout/NotFound.js.map +1 -1
  167. package/esm/layout/NotFoundSvg.js.map +1 -1
  168. package/esm/layout/UserNav.js +18 -18
  169. package/esm/layout/UserNav.js.map +1 -1
  170. package/esm/layout/index.d.ts +2 -2
  171. package/esm/layout/index.js +2 -2
  172. package/esm/layout/index.js.map +1 -1
  173. package/esm/logo/Logo.js +2 -2
  174. package/esm/logo/Logo.js.map +1 -1
  175. package/esm/logo/VCAppLogo.js +1 -1
  176. package/esm/logo/VCAppLogo.js.map +1 -1
  177. package/esm/logo/index.d.ts +3 -3
  178. package/esm/logo/index.js +3 -3
  179. package/esm/logo/index.js.map +1 -1
  180. package/esm/splash/index.js +2 -2
  181. package/esm/splash/index.js.map +1 -1
  182. package/esm/storage/MemoryStorage.d.ts +6 -4
  183. package/esm/storage/MemoryStorage.js +13 -4
  184. package/esm/storage/MemoryStorage.js.map +1 -1
  185. package/esm/storage/index.d.ts +2 -1
  186. package/esm/storage/index.js +1 -1
  187. package/esm/storage/index.js.map +1 -1
  188. package/esm/storage/storage.d.ts +6 -4
  189. package/esm/storage/storage.js +35 -15
  190. package/esm/storage/storage.js.map +1 -1
  191. package/esm/storage/types.d.ts +6 -0
  192. package/esm/storage/types.js +2 -0
  193. package/esm/storage/types.js.map +1 -0
  194. package/esm/storage/useStorage.d.ts +10 -1
  195. package/esm/storage/useStorage.js +18 -6
  196. package/esm/storage/useStorage.js.map +1 -1
  197. package/esm/tabs/Tabs.d.ts +2 -2
  198. package/esm/tabs/Tabs.js +15 -15
  199. package/esm/tabs/Tabs.js.map +1 -1
  200. package/esm/tabs/index.js.map +1 -1
  201. package/esm/temporal/index.d.ts +1 -1
  202. package/esm/temporal/index.js +1 -1
  203. package/esm/temporal/index.js.map +1 -1
  204. package/esm/temporal/parse.js.map +1 -1
  205. package/esm/temporal/polyfill.d.ts +1 -1
  206. package/esm/temporal/polyfill.js +3 -3
  207. package/esm/temporal/polyfill.js.map +1 -1
  208. package/esm/utils/defined.js.map +1 -1
  209. package/esm/utils/index.d.ts +1 -1
  210. package/esm/utils/index.js +1 -1
  211. package/esm/utils/index.js.map +1 -1
  212. package/esm/utils/useFlag.js.map +1 -1
  213. package/esm/utils/useIsMounted.js.map +1 -1
  214. package/package.json +8 -9
  215. package/src/AppShell/AppShell.tsx +147 -140
  216. package/src/AppShell/index.tsx +1 -1
  217. package/src/Input/ActionsMenu.tsx +70 -73
  218. package/src/Input/EmailSenderField.tsx +59 -52
  219. package/src/Input/Selector.tsx +15 -15
  220. package/src/LanguageSwitcher/index.ts +1 -1
  221. package/src/Paging/Paging.ts +56 -57
  222. package/src/Paging/index.ts +2 -1
  223. package/src/VCThemeProvider/JetbrainsMonoFont.tsx +52 -42
  224. package/src/VCThemeProvider/RobotoFont.tsx +47 -39
  225. package/src/VCThemeProvider/ThemeModeSwitcher.tsx +17 -17
  226. package/src/VCThemeProvider/VCThemeProvider.tsx +149 -145
  227. package/src/audit/AuditChanges.tsx +18 -12
  228. package/src/audit/AuditTimeline.tsx +16 -17
  229. package/src/audit/AuditTimelineItem.tsx +58 -61
  230. package/src/audit/index.ts +2 -2
  231. package/src/audit/types.ts +27 -28
  232. package/src/breadcrumbs.tsx +11 -15
  233. package/src/code/CodeBlock.tsx +10 -10
  234. package/src/confirm/ConfirmButton.tsx +56 -56
  235. package/src/confirm/ConfirmDialog.tsx +54 -54
  236. package/src/confirm/ConfirmMenuItem.tsx +51 -53
  237. package/src/container/ContainerLayout.tsx +7 -8
  238. package/src/container/ContainerSettingsContext.tsx +49 -46
  239. package/src/container/ContainerWidthControl.tsx +11 -9
  240. package/src/container/index.ts +8 -3
  241. package/src/content-table/ContentTable.tsx +235 -197
  242. package/src/content-table/UndrawEmpty.tsx +281 -281
  243. package/src/content-table/index.ts +1 -1
  244. package/src/country/country-select.tsx +0 -1
  245. package/src/country/index.ts +3 -3
  246. package/src/country/locale-select.tsx +36 -36
  247. package/src/country/locales.ts +185 -187
  248. package/src/country/phone-prefix-select.tsx +4 -5
  249. package/src/cube/accessibility.tsx +2 -1
  250. package/src/data-table/DataTableColumnSettings.tsx +181 -181
  251. package/src/data-table/DataTableHeader.tsx +6 -6
  252. package/src/data-table/DataTableToolbar.tsx +6 -6
  253. package/src/data-table/index.tsx +4 -4
  254. package/src/data-table/useDataTableColumnStorage.ts +30 -19
  255. package/src/data-table/useDataTableStorage.spec.ts +108 -0
  256. package/src/data-table/useDataTableStorage.ts +91 -36
  257. package/src/date-pickers/PlainAdapterCommon.ts +118 -120
  258. package/src/date-pickers/PlainDateAdapter.spec.ts +44 -46
  259. package/src/date-pickers/PlainDateAdapter.ts +130 -132
  260. package/src/date-pickers/PlainDatePicker.spec.tsx +17 -18
  261. package/src/date-pickers/PlainDatePicker.tsx +33 -36
  262. package/src/date-pickers/PlainDateTimeAdapter.spec.ts +44 -46
  263. package/src/date-pickers/PlainDateTimeAdapter.ts +141 -134
  264. package/src/date-pickers/PlainDateTimePicker.spec.tsx +17 -18
  265. package/src/date-pickers/PlainDateTimePicker.tsx +35 -36
  266. package/src/date-pickers/PlainTimeAdapter.ts +219 -221
  267. package/src/date-pickers/PlainTimePicker.spec.tsx +17 -18
  268. package/src/date-pickers/PlainTimePicker.tsx +35 -34
  269. package/src/date-pickers/TemporalAdapter.ts +110 -111
  270. package/src/date-pickers/TimezoneSelect.tsx +375 -375
  271. package/src/date-pickers/getFormatString.ts +29 -29
  272. package/src/date-pickers/index.ts +6 -5
  273. package/src/date-pickers/parse.spec.ts +37 -40
  274. package/src/date-pickers/parse.ts +44 -47
  275. package/src/date-pickers/timeframe-picker.tsx +16 -17
  276. package/src/date-pickers/useLocale.ts +1 -1
  277. package/src/date-pickers/useRenderInput.tsx +24 -15
  278. package/src/fetch.ts +4 -5
  279. package/src/formats/CompactFormat.spec.tsx +18 -20
  280. package/src/formats/CompactFormat.tsx +30 -30
  281. package/src/formats/CurrencyFormat.spec.tsx +18 -20
  282. package/src/formats/CurrencyFormat.tsx +52 -52
  283. package/src/formats/DecimalFormat.spec.tsx +18 -20
  284. package/src/formats/DecimalFormat.tsx +47 -47
  285. package/src/formats/DurationFormat.spec.tsx +48 -49
  286. package/src/formats/DurationFormat.tsx +51 -51
  287. package/src/formats/TemporalFormat.spec.tsx +93 -95
  288. package/src/formats/TemporalRangeFormat.spec.tsx +143 -144
  289. package/src/formats/TemporalRangeFormat.tsx +54 -54
  290. package/src/formats/types.ts +1 -3
  291. package/src/formats/useDateTimeFormat.ts +5 -2
  292. package/src/formats/useNumberFormat.ts +3 -3
  293. package/src/formats/useRelativeTimeFormat.ts +5 -3
  294. package/src/forms/SearchForm.tsx +37 -38
  295. package/src/getNavigatorLanguages.ts +4 -5
  296. package/src/getSupportedFormatLocale.ts +10 -10
  297. package/src/help/HelpDrawer.tsx +76 -55
  298. package/src/help/index.ts +3 -3
  299. package/src/icons.ts +21 -21
  300. package/src/layout/ErrorBoundary.tsx +226 -215
  301. package/src/layout/NotFound.tsx +36 -39
  302. package/src/layout/NotFoundSvg.tsx +193 -169
  303. package/src/layout/UserNav.tsx +98 -98
  304. package/src/layout/index.ts +3 -3
  305. package/src/logo/Logo.tsx +6 -7
  306. package/src/logo/VCAppLogo.tsx +22 -20
  307. package/src/logo/index.tsx +3 -3
  308. package/src/splash/index.tsx +25 -25
  309. package/src/storage/MemoryStorage.ts +22 -15
  310. package/src/storage/index.ts +2 -1
  311. package/src/storage/storage.spec.ts +184 -0
  312. package/src/storage/storage.ts +37 -15
  313. package/src/storage/types.ts +6 -0
  314. package/src/storage/useStorage.ts +21 -6
  315. package/src/tabs/Tabs.tsx +172 -170
  316. package/src/tabs/index.ts +1 -1
  317. package/src/temporal/index.ts +1 -1
  318. package/src/temporal/parse.ts +1 -2
  319. package/src/temporal/polyfill.ts +11 -11
  320. package/src/utils/defined.ts +2 -3
  321. package/src/utils/index.ts +1 -1
  322. package/src/utils/useFlag.ts +5 -5
  323. package/src/utils/useIsMounted.ts +9 -9
@@ -4,136 +4,134 @@ import {parsePlainDate} from "./parse";
4
4
  import {PlainAdapterCommon} from "./PlainAdapterCommon";
5
5
 
6
6
  export class PlainDateAdapter extends PlainAdapterCommon<PlainDate> implements MuiPickersAdapter<PlainDate> {
7
- lib = "PlainDateAdapter";
8
-
9
- date(value?: any): PlainDate | null {
10
- if (value === null) {
11
- return null;
12
- }
13
- if (value === undefined) {
14
- return Now.plainDateISO();
15
- }
16
-
17
- if (value instanceof PlainDate) {
18
- return value;
19
- }
20
-
21
- if (typeof value === "string") {
22
- try {
23
- return PlainDate.from(value, {overflow: "reject"});
24
- }
25
- catch (error) {
26
- return this.parse(value, this.formats.shortDate);
27
- }
28
- }
29
-
30
- console.error("Unexpected value", value);
31
- return null;
32
- }
33
-
34
- toJsDate(value: PlainDate): Date {
35
- return new Date(value.year, value.month-1, value.day);
36
- }
37
-
38
- parseISO(isString: string): PlainDate {
39
- return PlainDate.from(isString);
40
- }
41
-
42
- parse(value: string, format: string | DateTimeFormat): PlainDate | null {
43
- try {
44
- return parsePlainDate(value, format as any as DateTimeFormat);
45
- }
46
- catch (error) {
47
- console.warn("Could not parse", {value, format});
48
- }
49
- return null;
50
- }
51
-
52
- isValid(value: any): boolean {
53
- return this.date(value) != null;
54
- }
55
-
56
- isEqual(value: any, comparing: any): boolean {
57
- const first = this.date(value);
58
- const second = this.date(comparing);
59
- if (first === second) {
60
- return true;
61
- }
62
- if (!first || !second) {
63
- return false;
64
- }
65
- return first.equals(second);
66
- }
67
-
68
- isSameHour(value: PlainDate, comparing: PlainDate): boolean {
69
- return true;
70
- }
71
-
72
- addSeconds(value: PlainDate, count: number): PlainDate {
73
- return value.add({seconds: count});
74
- }
75
-
76
- addMinutes(value: PlainDate, count: number): PlainDate {
77
- return value.add({minutes: count});
78
- }
79
-
80
- addHours(value: PlainDate, count: number): PlainDate {
81
- return value.add({hours: count});
82
- }
83
-
84
- addDays(value: PlainDate, count: number): PlainDate {
85
- return value.add({days: count});
86
- }
87
-
88
- addWeeks(value: PlainDate, count: number): PlainDate {
89
- return value.add({weeks: count});
90
- }
91
-
92
- addMonths(value: PlainDate, count: number): PlainDate {
93
- return value.add({months: count});
94
- }
95
-
96
- startOfDay(value: PlainDate): PlainDate {
97
- return value;
98
- }
99
-
100
- endOfDay(value: PlainDate): PlainDate {
101
- return value;
102
- }
103
-
104
- getHours(value: PlainDate): number {
105
- return 0;
106
- }
107
-
108
- setHours(value: PlainDate, count: number): PlainDate {
109
- return value;
110
- }
111
-
112
- getMinutes(value: PlainDate): number {
113
- return 0;
114
- }
115
-
116
- setMinutes(value: PlainDate, count: number): PlainDate {
117
- return value;
118
- }
119
-
120
- getSeconds(value: PlainDate): number {
121
- return 0;
122
- }
123
-
124
- setSeconds(value: PlainDate, count: number): PlainDate {
125
- return value;
126
- }
127
-
128
- setMonth(value: PlainDate, count: number): PlainDate {
129
- return value.with({month: count});
130
- }
131
-
132
- setYear(value: PlainDate, count: number): PlainDate {
133
- return value.with({year: count});
134
- }
135
-
136
- mergeDateAndTime(date: PlainDate, time: PlainDate): PlainDate {
137
- return date;
138
- }
7
+ lib = "PlainDateAdapter";
8
+
9
+ date(value?: any): PlainDate | null {
10
+ if (value === null) {
11
+ return null;
12
+ }
13
+ if (value === undefined) {
14
+ return Now.plainDateISO();
15
+ }
16
+
17
+ if (value instanceof PlainDate) {
18
+ return value;
19
+ }
20
+
21
+ if (typeof value === "string") {
22
+ try {
23
+ return PlainDate.from(value, {overflow: "reject"});
24
+ } catch (error) {
25
+ return this.parse(value, this.formats.shortDate);
26
+ }
27
+ }
28
+
29
+ console.error("Unexpected value", value);
30
+ return null;
31
+ }
32
+
33
+ toJsDate(value: PlainDate): Date {
34
+ return new Date(value.year, value.month - 1, value.day);
35
+ }
36
+
37
+ parseISO(isString: string): PlainDate {
38
+ return PlainDate.from(isString);
39
+ }
40
+
41
+ parse(value: string, format: string | DateTimeFormat): PlainDate | null {
42
+ try {
43
+ return parsePlainDate(value, format as any as DateTimeFormat);
44
+ } catch (error) {
45
+ console.warn("Could not parse", {value, format});
46
+ }
47
+ return null;
48
+ }
49
+
50
+ isValid(value: any): boolean {
51
+ return this.date(value) != null;
52
+ }
53
+
54
+ isEqual(value: any, comparing: any): boolean {
55
+ const first = this.date(value);
56
+ const second = this.date(comparing);
57
+ if (first === second) {
58
+ return true;
59
+ }
60
+ if (!first || !second) {
61
+ return false;
62
+ }
63
+ return first.equals(second);
64
+ }
65
+
66
+ isSameHour(value: PlainDate, comparing: PlainDate): boolean {
67
+ return true;
68
+ }
69
+
70
+ addSeconds(value: PlainDate, count: number): PlainDate {
71
+ return value.add({seconds: count});
72
+ }
73
+
74
+ addMinutes(value: PlainDate, count: number): PlainDate {
75
+ return value.add({minutes: count});
76
+ }
77
+
78
+ addHours(value: PlainDate, count: number): PlainDate {
79
+ return value.add({hours: count});
80
+ }
81
+
82
+ addDays(value: PlainDate, count: number): PlainDate {
83
+ return value.add({days: count});
84
+ }
85
+
86
+ addWeeks(value: PlainDate, count: number): PlainDate {
87
+ return value.add({weeks: count});
88
+ }
89
+
90
+ addMonths(value: PlainDate, count: number): PlainDate {
91
+ return value.add({months: count});
92
+ }
93
+
94
+ startOfDay(value: PlainDate): PlainDate {
95
+ return value;
96
+ }
97
+
98
+ endOfDay(value: PlainDate): PlainDate {
99
+ return value;
100
+ }
101
+
102
+ getHours(value: PlainDate): number {
103
+ return 0;
104
+ }
105
+
106
+ setHours(value: PlainDate, count: number): PlainDate {
107
+ return value;
108
+ }
109
+
110
+ getMinutes(value: PlainDate): number {
111
+ return 0;
112
+ }
113
+
114
+ setMinutes(value: PlainDate, count: number): PlainDate {
115
+ return value;
116
+ }
117
+
118
+ getSeconds(value: PlainDate): number {
119
+ return 0;
120
+ }
121
+
122
+ setSeconds(value: PlainDate, count: number): PlainDate {
123
+ return value;
124
+ }
125
+
126
+ setMonth(value: PlainDate, count: number): PlainDate {
127
+ return value.with({month: count});
128
+ }
129
+
130
+ setYear(value: PlainDate, count: number): PlainDate {
131
+ return value.with({year: count});
132
+ }
133
+
134
+ mergeDateAndTime(date: PlainDate, time: PlainDate): PlainDate {
135
+ return date;
136
+ }
139
137
  }
@@ -1,22 +1,21 @@
1
+ import * as React from "react";
2
+ import {act, create, ReactTestRenderer} from "react-test-renderer";
1
3
  import {PlainDate} from "../temporal";
2
4
  import {PlainDatePicker} from "./PlainDatePicker";
3
- import {act, create, ReactTestRenderer} from "react-test-renderer";
4
- import * as React from "react";
5
5
 
6
6
  describe("PlainDatePicker", () => {
7
-
8
- test("render", () => {
9
- let element: ReactTestRenderer;
10
- act(() => {
11
- element = create(
12
- <PlainDatePicker
13
- locale="de"
14
- value={new PlainDate(2022, 5, 30)}
15
- onChange={() => {}}
16
- />);
17
- })
18
- const {value} = element!.root.findByType("input").props;
19
- expect(value).toBe("30.05.2022");
20
- });
21
-
22
- });
7
+ test("render", () => {
8
+ let element: ReactTestRenderer;
9
+ act(() => {
10
+ element = create(
11
+ <PlainDatePicker
12
+ locale="de"
13
+ value={new PlainDate(2022, 5, 30)}
14
+ onChange={() => {}}
15
+ />,
16
+ );
17
+ });
18
+ const {value} = element!.root.findByType("input").props;
19
+ expect(value).toBe("30.05.2022");
20
+ });
21
+ });
@@ -2,15 +2,15 @@ import {DatePicker, LocalizationProvider, PickersDay} from "@mui/x-date-pickers"
2
2
  import * as React from "react";
3
3
  import {PlainDate} from "../temporal";
4
4
  import {PlainDateAdapter} from "./PlainDateAdapter";
5
- import {useRenderInput, UseRenderInputProps} from "./useRenderInput";
6
5
  import {useLocale} from "./useLocale";
6
+ import {useRenderInput, UseRenderInputProps} from "./useRenderInput";
7
7
 
8
8
  interface PlainDatePickerProps {
9
- value: PlainDate | null;
10
- onChange: (value: PlainDate | null) => any;
11
- label?: string;
12
- disabled?: boolean;
13
- required?: boolean;
9
+ value: PlainDate | null;
10
+ onChange: (value: PlainDate | null) => any;
11
+ label?: string;
12
+ disabled?: boolean;
13
+ required?: boolean;
14
14
 
15
15
  disablePast?: boolean;
16
16
  minDate?: PlainDate;
@@ -19,41 +19,40 @@ interface PlainDatePickerProps {
19
19
 
20
20
  defaultCalendarMonth?: PlainDate;
21
21
 
22
- /**
23
- * Allows overriding the locale. Only use for testing.
24
- */
25
- locale?: string;
22
+ /**
23
+ * Allows overriding the locale. Only use for testing.
24
+ */
25
+ locale?: string;
26
26
  }
27
27
 
28
28
  export function PlainDatePicker(props: PlainDatePickerProps & UseRenderInputProps) {
29
-
30
- const {
31
- value,
32
- onChange,
33
- label,
34
- disabled,
29
+ const {
30
+ value,
31
+ onChange,
32
+ label,
33
+ disabled,
35
34
  disablePast,
36
35
  minDate,
37
36
  maxDate,
38
37
  renderDay,
39
38
  defaultCalendarMonth,
40
- locale: suppliedLocale,
41
- ...renderInputProps
42
- } = props;
39
+ locale: suppliedLocale,
40
+ ...renderInputProps
41
+ } = props;
43
42
 
44
- const locale = useLocale(suppliedLocale);
43
+ const locale = useLocale(suppliedLocale);
45
44
 
46
- const renderInput = useRenderInput(renderInputProps);
45
+ const renderInput = useRenderInput(renderInputProps);
47
46
 
48
- return (
49
- <LocalizationProvider dateAdapter={PlainDateAdapter} adapterLocale={locale}>
50
- <DatePicker
51
- label={label}
52
- value={value}
53
- disableMaskedInput
54
- onChange={onChange}
55
- disabled={disabled}
56
- renderInput={renderInput}
47
+ return (
48
+ <LocalizationProvider dateAdapter={PlainDateAdapter} adapterLocale={locale}>
49
+ <DatePicker
50
+ label={label}
51
+ value={value}
52
+ disableMaskedInput
53
+ onChange={onChange}
54
+ disabled={disabled}
55
+ renderInput={renderInput}
57
56
  disablePast={disablePast}
58
57
  defaultCalendarMonth={defaultCalendarMonth}
59
58
  minDate={minDate}
@@ -64,10 +63,8 @@ export function PlainDatePicker(props: PlainDatePickerProps & UseRenderInputProp
64
63
  {renderDay(day, selectedDays)}
65
64
  </PickersDay>
66
65
  )
67
- : undefined
68
- }
69
- />
70
- </LocalizationProvider>
71
- );
66
+ : undefined}
67
+ />
68
+ </LocalizationProvider>
69
+ );
72
70
  }
73
-
@@ -2,49 +2,47 @@ import {PlainDateTime} from "../temporal";
2
2
  import {PlainDateTimeAdapter} from "./PlainDateTimeAdapter";
3
3
 
4
4
  describe("PlainDateTimeAdapter", () => {
5
-
6
- const adapter = new PlainDateTimeAdapter({locale: "de"});
7
-
8
- test("isSameDay", () => {
9
- expect(adapter.isSameDay(new PlainDateTime(2022, 5, 30), new PlainDateTime(2022, 5, 30))).toBe(true);
10
- expect(adapter.isSameDay(new PlainDateTime(2022, 4, 30), new PlainDateTime(2022, 5, 30))).toBe(false);
11
- });
12
-
13
- test("isSameYear", () => {
14
- expect(adapter.isSameYear(new PlainDateTime(2022, 5, 30), new PlainDateTime(2022, 5, 30))).toBe(true);
15
- expect(adapter.isSameYear(new PlainDateTime(2022, 4, 30), new PlainDateTime(2022, 5, 30))).toBe(true);
16
- expect(adapter.isSameYear(new PlainDateTime(2020, 4, 30), new PlainDateTime(2022, 5, 30))).toBe(false);
17
- });
18
-
19
- test("startOfWeek", () => {
20
- const startOfWeek = adapter.startOfWeek(new PlainDateTime(2022, 5, 31));
21
- expect(startOfWeek.year).toBe(2022);
22
- expect(startOfWeek.month).toBe(5);
23
- expect(startOfWeek.day).toBe(30);
24
- });
25
-
26
- test("endOfWeek", () => {
27
- const startOfWeek = adapter.endOfWeek(new PlainDateTime(2022, 5, 31));
28
- expect(startOfWeek.year).toBe(2022);
29
- expect(startOfWeek.month).toBe(6);
30
- expect(startOfWeek.day).toBe(5);
31
- });
32
-
33
- test("getYearRange", () => {
34
- const range = adapter.getYearRange(PlainDateTime.from("2020-05-05"), PlainDateTime.from("2025-05-05"));
35
- expect(range).toHaveLength(5);
36
- });
37
-
38
- test("getWeekArray", () => {
39
- const weekArray = adapter.getWeekArray(new PlainDateTime(2022, 5, 30));
40
- expect(weekArray).toHaveLength(6);
41
- expect(weekArray[0][0].toString()).toBe("2022-04-25T00:00:00"); // monday of first week
42
- expect(weekArray[5][6].toString()).toBe("2022-06-05T00:00:00"); // sunday of last week
43
- });
44
-
45
- test("getYearRange", () => {
46
- const yearRange = adapter.getYearRange(new PlainDateTime(1995, 1, 1), new PlainDateTime(2020, 1, 1));
47
- expect(yearRange).toHaveLength(25);
48
- })
49
-
50
- });
5
+ const adapter = new PlainDateTimeAdapter({locale: "de"});
6
+
7
+ test("isSameDay", () => {
8
+ expect(adapter.isSameDay(new PlainDateTime(2022, 5, 30), new PlainDateTime(2022, 5, 30))).toBe(true);
9
+ expect(adapter.isSameDay(new PlainDateTime(2022, 4, 30), new PlainDateTime(2022, 5, 30))).toBe(false);
10
+ });
11
+
12
+ test("isSameYear", () => {
13
+ expect(adapter.isSameYear(new PlainDateTime(2022, 5, 30), new PlainDateTime(2022, 5, 30))).toBe(true);
14
+ expect(adapter.isSameYear(new PlainDateTime(2022, 4, 30), new PlainDateTime(2022, 5, 30))).toBe(true);
15
+ expect(adapter.isSameYear(new PlainDateTime(2020, 4, 30), new PlainDateTime(2022, 5, 30))).toBe(false);
16
+ });
17
+
18
+ test("startOfWeek", () => {
19
+ const startOfWeek = adapter.startOfWeek(new PlainDateTime(2022, 5, 31));
20
+ expect(startOfWeek.year).toBe(2022);
21
+ expect(startOfWeek.month).toBe(5);
22
+ expect(startOfWeek.day).toBe(30);
23
+ });
24
+
25
+ test("endOfWeek", () => {
26
+ const startOfWeek = adapter.endOfWeek(new PlainDateTime(2022, 5, 31));
27
+ expect(startOfWeek.year).toBe(2022);
28
+ expect(startOfWeek.month).toBe(6);
29
+ expect(startOfWeek.day).toBe(5);
30
+ });
31
+
32
+ test("getYearRange", () => {
33
+ const range = adapter.getYearRange(PlainDateTime.from("2020-05-05"), PlainDateTime.from("2025-05-05"));
34
+ expect(range).toHaveLength(5);
35
+ });
36
+
37
+ test("getWeekArray", () => {
38
+ const weekArray = adapter.getWeekArray(new PlainDateTime(2022, 5, 30));
39
+ expect(weekArray).toHaveLength(6);
40
+ expect(weekArray[0][0].toString()).toBe("2022-04-25T00:00:00"); // monday of first week
41
+ expect(weekArray[5][6].toString()).toBe("2022-06-05T00:00:00"); // sunday of last week
42
+ });
43
+
44
+ test("getYearRange", () => {
45
+ const yearRange = adapter.getYearRange(new PlainDateTime(1995, 1, 1), new PlainDateTime(2020, 1, 1));
46
+ expect(yearRange).toHaveLength(25);
47
+ });
48
+ });