@variocube/app-ui 1.15.0 → 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 (319) 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/formats/CompactFormat.js +1 -1
  121. package/esm/formats/CompactFormat.js.map +1 -1
  122. package/esm/formats/CompactFormat.spec.js +1 -1
  123. package/esm/formats/CompactFormat.spec.js.map +1 -1
  124. package/esm/formats/CurrencyFormat.js +1 -1
  125. package/esm/formats/CurrencyFormat.js.map +1 -1
  126. package/esm/formats/CurrencyFormat.spec.js +1 -1
  127. package/esm/formats/CurrencyFormat.spec.js.map +1 -1
  128. package/esm/formats/DecimalFormat.js +1 -1
  129. package/esm/formats/DecimalFormat.js.map +1 -1
  130. package/esm/formats/DecimalFormat.spec.js +1 -1
  131. package/esm/formats/DecimalFormat.spec.js.map +1 -1
  132. package/esm/formats/DurationFormat.js +2 -2
  133. package/esm/formats/DurationFormat.js.map +1 -1
  134. package/esm/formats/DurationFormat.spec.js +2 -2
  135. package/esm/formats/DurationFormat.spec.js.map +1 -1
  136. package/esm/formats/TemporalFormat.spec.js +2 -2
  137. package/esm/formats/TemporalFormat.spec.js.map +1 -1
  138. package/esm/formats/TemporalRangeFormat.js +1 -1
  139. package/esm/formats/TemporalRangeFormat.js.map +1 -1
  140. package/esm/formats/TemporalRangeFormat.spec.js +2 -2
  141. package/esm/formats/TemporalRangeFormat.spec.js.map +1 -1
  142. package/esm/formats/useDateTimeFormat.js +5 -2
  143. package/esm/formats/useDateTimeFormat.js.map +1 -1
  144. package/esm/formats/useNumberFormat.js +1 -1
  145. package/esm/formats/useNumberFormat.js.map +1 -1
  146. package/esm/formats/useRelativeTimeFormat.js +4 -2
  147. package/esm/formats/useRelativeTimeFormat.js.map +1 -1
  148. package/esm/forms/SearchForm.js +1 -1
  149. package/esm/forms/SearchForm.js.map +1 -1
  150. package/esm/getNavigatorLanguages.js.map +1 -1
  151. package/esm/getSupportedFormatLocale.js.map +1 -1
  152. package/esm/help/HelpDrawer.js +12 -8
  153. package/esm/help/HelpDrawer.js.map +1 -1
  154. package/esm/help/index.d.ts +1 -1
  155. package/esm/help/index.js +1 -1
  156. package/esm/help/index.js.map +1 -1
  157. package/esm/icons.d.ts +13 -13
  158. package/esm/icons.js +13 -13
  159. package/esm/icons.js.map +1 -1
  160. package/esm/layout/ErrorBoundary.js +36 -36
  161. package/esm/layout/ErrorBoundary.js.map +1 -1
  162. package/esm/layout/NotFound.js +6 -6
  163. package/esm/layout/NotFound.js.map +1 -1
  164. package/esm/layout/NotFoundSvg.js.map +1 -1
  165. package/esm/layout/UserNav.js +18 -18
  166. package/esm/layout/UserNav.js.map +1 -1
  167. package/esm/layout/index.d.ts +2 -2
  168. package/esm/layout/index.js +2 -2
  169. package/esm/layout/index.js.map +1 -1
  170. package/esm/logo/Logo.js +2 -2
  171. package/esm/logo/Logo.js.map +1 -1
  172. package/esm/logo/VCAppLogo.js +1 -1
  173. package/esm/logo/VCAppLogo.js.map +1 -1
  174. package/esm/logo/index.d.ts +3 -3
  175. package/esm/logo/index.js +3 -3
  176. package/esm/logo/index.js.map +1 -1
  177. package/esm/splash/index.js +2 -2
  178. package/esm/splash/index.js.map +1 -1
  179. package/esm/storage/MemoryStorage.d.ts +6 -4
  180. package/esm/storage/MemoryStorage.js +13 -4
  181. package/esm/storage/MemoryStorage.js.map +1 -1
  182. package/esm/storage/index.d.ts +2 -1
  183. package/esm/storage/index.js +1 -1
  184. package/esm/storage/index.js.map +1 -1
  185. package/esm/storage/storage.d.ts +6 -4
  186. package/esm/storage/storage.js +35 -15
  187. package/esm/storage/storage.js.map +1 -1
  188. package/esm/storage/types.d.ts +6 -0
  189. package/esm/storage/types.js +2 -0
  190. package/esm/storage/types.js.map +1 -0
  191. package/esm/storage/useStorage.d.ts +10 -1
  192. package/esm/storage/useStorage.js +18 -6
  193. package/esm/storage/useStorage.js.map +1 -1
  194. package/esm/tabs/Tabs.d.ts +2 -2
  195. package/esm/tabs/Tabs.js +15 -15
  196. package/esm/tabs/Tabs.js.map +1 -1
  197. package/esm/tabs/index.js.map +1 -1
  198. package/esm/temporal/index.d.ts +1 -1
  199. package/esm/temporal/index.js +1 -1
  200. package/esm/temporal/index.js.map +1 -1
  201. package/esm/temporal/parse.js.map +1 -1
  202. package/esm/temporal/polyfill.d.ts +1 -1
  203. package/esm/temporal/polyfill.js +3 -3
  204. package/esm/temporal/polyfill.js.map +1 -1
  205. package/esm/utils/defined.js.map +1 -1
  206. package/esm/utils/index.d.ts +1 -1
  207. package/esm/utils/index.js +1 -1
  208. package/esm/utils/index.js.map +1 -1
  209. package/esm/utils/useFlag.js.map +1 -1
  210. package/esm/utils/useIsMounted.js.map +1 -1
  211. package/package.json +8 -9
  212. package/src/AppShell/AppShell.tsx +147 -140
  213. package/src/AppShell/index.tsx +1 -1
  214. package/src/Input/ActionsMenu.tsx +70 -73
  215. package/src/Input/EmailSenderField.tsx +59 -52
  216. package/src/Input/Selector.tsx +15 -15
  217. package/src/LanguageSwitcher/index.ts +1 -1
  218. package/src/Paging/Paging.ts +56 -57
  219. package/src/Paging/index.ts +2 -1
  220. package/src/VCThemeProvider/JetbrainsMonoFont.tsx +52 -42
  221. package/src/VCThemeProvider/RobotoFont.tsx +47 -39
  222. package/src/VCThemeProvider/ThemeModeSwitcher.tsx +17 -17
  223. package/src/VCThemeProvider/VCThemeProvider.tsx +149 -145
  224. package/src/audit/AuditChanges.tsx +18 -12
  225. package/src/audit/AuditTimeline.tsx +16 -17
  226. package/src/audit/AuditTimelineItem.tsx +58 -61
  227. package/src/audit/index.ts +2 -2
  228. package/src/audit/types.ts +27 -28
  229. package/src/breadcrumbs.tsx +11 -15
  230. package/src/code/CodeBlock.tsx +10 -10
  231. package/src/confirm/ConfirmButton.tsx +56 -56
  232. package/src/confirm/ConfirmDialog.tsx +54 -54
  233. package/src/confirm/ConfirmMenuItem.tsx +51 -53
  234. package/src/container/ContainerLayout.tsx +7 -8
  235. package/src/container/ContainerSettingsContext.tsx +49 -46
  236. package/src/container/ContainerWidthControl.tsx +11 -9
  237. package/src/container/index.ts +8 -3
  238. package/src/content-table/ContentTable.tsx +235 -197
  239. package/src/content-table/UndrawEmpty.tsx +281 -281
  240. package/src/content-table/index.ts +1 -1
  241. package/src/country/country-select.tsx +0 -1
  242. package/src/country/index.ts +3 -3
  243. package/src/country/locale-select.tsx +36 -36
  244. package/src/country/locales.ts +185 -187
  245. package/src/country/phone-prefix-select.tsx +4 -5
  246. package/src/cube/accessibility.tsx +2 -1
  247. package/src/data-table/DataTableColumnSettings.tsx +181 -181
  248. package/src/data-table/DataTableHeader.tsx +6 -6
  249. package/src/data-table/DataTableToolbar.tsx +6 -6
  250. package/src/data-table/index.tsx +4 -4
  251. package/src/data-table/useDataTableColumnStorage.ts +30 -19
  252. package/src/data-table/useDataTableStorage.spec.ts +108 -0
  253. package/src/data-table/useDataTableStorage.ts +91 -36
  254. package/src/date-pickers/PlainAdapterCommon.ts +118 -120
  255. package/src/date-pickers/PlainDateAdapter.spec.ts +44 -46
  256. package/src/date-pickers/PlainDateAdapter.ts +130 -132
  257. package/src/date-pickers/PlainDatePicker.spec.tsx +17 -18
  258. package/src/date-pickers/PlainDatePicker.tsx +33 -36
  259. package/src/date-pickers/PlainDateTimeAdapter.spec.ts +44 -46
  260. package/src/date-pickers/PlainDateTimeAdapter.ts +141 -134
  261. package/src/date-pickers/PlainDateTimePicker.spec.tsx +17 -18
  262. package/src/date-pickers/PlainDateTimePicker.tsx +35 -36
  263. package/src/date-pickers/PlainTimeAdapter.ts +219 -221
  264. package/src/date-pickers/PlainTimePicker.spec.tsx +17 -18
  265. package/src/date-pickers/PlainTimePicker.tsx +35 -34
  266. package/src/date-pickers/TemporalAdapter.ts +110 -111
  267. package/src/date-pickers/TimezoneSelect.tsx +375 -375
  268. package/src/date-pickers/getFormatString.ts +29 -29
  269. package/src/date-pickers/index.ts +6 -5
  270. package/src/date-pickers/parse.spec.ts +37 -40
  271. package/src/date-pickers/parse.ts +44 -47
  272. package/src/date-pickers/timeframe-picker.tsx +16 -17
  273. package/src/date-pickers/useLocale.ts +1 -1
  274. package/src/date-pickers/useRenderInput.tsx +24 -15
  275. package/src/formats/CompactFormat.spec.tsx +18 -20
  276. package/src/formats/CompactFormat.tsx +30 -30
  277. package/src/formats/CurrencyFormat.spec.tsx +18 -20
  278. package/src/formats/CurrencyFormat.tsx +52 -52
  279. package/src/formats/DecimalFormat.spec.tsx +18 -20
  280. package/src/formats/DecimalFormat.tsx +47 -47
  281. package/src/formats/DurationFormat.spec.tsx +48 -49
  282. package/src/formats/DurationFormat.tsx +51 -51
  283. package/src/formats/TemporalFormat.spec.tsx +93 -95
  284. package/src/formats/TemporalRangeFormat.spec.tsx +143 -144
  285. package/src/formats/TemporalRangeFormat.tsx +54 -54
  286. package/src/formats/types.ts +1 -3
  287. package/src/formats/useDateTimeFormat.ts +5 -2
  288. package/src/formats/useNumberFormat.ts +3 -3
  289. package/src/formats/useRelativeTimeFormat.ts +5 -3
  290. package/src/forms/SearchForm.tsx +37 -38
  291. package/src/getNavigatorLanguages.ts +4 -5
  292. package/src/getSupportedFormatLocale.ts +10 -10
  293. package/src/help/HelpDrawer.tsx +76 -55
  294. package/src/help/index.ts +3 -3
  295. package/src/icons.ts +21 -21
  296. package/src/layout/ErrorBoundary.tsx +226 -215
  297. package/src/layout/NotFound.tsx +36 -39
  298. package/src/layout/NotFoundSvg.tsx +193 -169
  299. package/src/layout/UserNav.tsx +98 -98
  300. package/src/layout/index.ts +3 -3
  301. package/src/logo/Logo.tsx +6 -7
  302. package/src/logo/VCAppLogo.tsx +22 -20
  303. package/src/logo/index.tsx +3 -3
  304. package/src/splash/index.tsx +25 -25
  305. package/src/storage/MemoryStorage.ts +22 -15
  306. package/src/storage/index.ts +2 -1
  307. package/src/storage/storage.spec.ts +184 -0
  308. package/src/storage/storage.ts +37 -15
  309. package/src/storage/types.ts +6 -0
  310. package/src/storage/useStorage.ts +21 -6
  311. package/src/tabs/Tabs.tsx +172 -170
  312. package/src/tabs/index.ts +1 -1
  313. package/src/temporal/index.ts +1 -1
  314. package/src/temporal/parse.ts +1 -2
  315. package/src/temporal/polyfill.ts +11 -11
  316. package/src/utils/defined.ts +2 -3
  317. package/src/utils/index.ts +1 -1
  318. package/src/utils/useFlag.ts +5 -5
  319. package/src/utils/useIsMounted.ts +9 -9
@@ -1,45 +1,45 @@
1
- import {useNumberFormat} from "./useNumberFormat";
2
1
  import {Fragment, useMemo} from "react";
3
2
  import * as React from "react";
3
+ import {useNumberFormat} from "./useNumberFormat";
4
4
 
5
5
  export type CurrencyDisplay = "symbol" | "name" | "narrowSymbol" | "code";
6
6
  export type CurrencySign = "accounting" | "standard";
7
7
 
8
8
  export interface CurrencyFormatProps {
9
- /**
10
- * The numeric amount of currency.
11
- */
12
- value: number | bigint | null | undefined;
9
+ /**
10
+ * The numeric amount of currency.
11
+ */
12
+ value: number | bigint | null | undefined;
13
13
 
14
- /**
15
- * The 3-letter currency identifier.
16
- */
17
- currency: string;
14
+ /**
15
+ * The 3-letter currency identifier.
16
+ */
17
+ currency: string;
18
18
 
19
- /**
20
- * How to display the currency. Default depends on the browser.
21
- */
22
- currencyDisplay?: CurrencyDisplay;
19
+ /**
20
+ * How to display the currency. Default depends on the browser.
21
+ */
22
+ currencyDisplay?: CurrencyDisplay;
23
23
 
24
- /**
25
- * The currency sign to use. Default depends on the browser.
26
- */
27
- currencySign?: CurrencySign;
24
+ /**
25
+ * The currency sign to use. Default depends on the browser.
26
+ */
27
+ currencySign?: CurrencySign;
28
28
 
29
- /**
30
- * Minimum fraction digits. Default depends on the browser.
31
- */
32
- minimumFractionDigits?: number;
29
+ /**
30
+ * Minimum fraction digits. Default depends on the browser.
31
+ */
32
+ minimumFractionDigits?: number;
33
33
 
34
- /**
35
- * Maximum fraction digits. Default depends on the browser.
36
- */
37
- maximumFractionDigits?: number;
34
+ /**
35
+ * Maximum fraction digits. Default depends on the browser.
36
+ */
37
+ maximumFractionDigits?: number;
38
38
 
39
- /**
40
- * Overrides the user's locale. Use for testing only.
41
- */
42
- locale?: string;
39
+ /**
40
+ * Overrides the user's locale. Use for testing only.
41
+ */
42
+ locale?: string;
43
43
  }
44
44
 
45
45
  /**
@@ -48,30 +48,30 @@ export interface CurrencyFormatProps {
48
48
  * @constructor
49
49
  */
50
50
  export function CurrencyFormat(props: CurrencyFormatProps) {
51
- const {
52
- value,
53
- currency,
54
- currencyDisplay,
55
- currencySign,
56
- minimumFractionDigits,
57
- maximumFractionDigits,
58
- locale,
59
- } = props;
51
+ const {
52
+ value,
53
+ currency,
54
+ currencyDisplay,
55
+ currencySign,
56
+ minimumFractionDigits,
57
+ maximumFractionDigits,
58
+ locale,
59
+ } = props;
60
60
 
61
- const options = useMemo(() => ({
62
- style: "currency",
63
- currency,
64
- currencyDisplay,
65
- currencySign,
66
- minimumFractionDigits,
67
- maximumFractionDigits,
68
- }), [currency, currencyDisplay, currencySign, minimumFractionDigits, maximumFractionDigits]);
61
+ const options = useMemo(() => ({
62
+ style: "currency",
63
+ currency,
64
+ currencyDisplay,
65
+ currencySign,
66
+ minimumFractionDigits,
67
+ maximumFractionDigits,
68
+ }), [currency, currencyDisplay, currencySign, minimumFractionDigits, maximumFractionDigits]);
69
69
 
70
- const numberFormat = useNumberFormat(options, locale);
70
+ const numberFormat = useNumberFormat(options, locale);
71
71
 
72
- const str = useMemo(() => {
73
- return (typeof value == "number" || typeof value == "bigint") ? numberFormat.format(value) : "";
74
- }, [numberFormat, value]);
72
+ const str = useMemo(() => {
73
+ return (typeof value == "number" || typeof value == "bigint") ? numberFormat.format(value) : "";
74
+ }, [numberFormat, value]);
75
75
 
76
- return <Fragment>{str}</Fragment>;
77
- }
76
+ return <Fragment>{str}</Fragment>;
77
+ }
@@ -1,25 +1,23 @@
1
- import {act, create, ReactTestRenderer} from "react-test-renderer";
2
1
  import * as React from "react";
2
+ import {act, create, ReactTestRenderer} from "react-test-renderer";
3
3
  import {DecimalFormat} from "./DecimalFormat";
4
4
 
5
5
  describe("DecimalFormat", () => {
6
+ test("render de-AT", () => {
7
+ let element: ReactTestRenderer;
8
+ act(() => {
9
+ element = create(<DecimalFormat value={1234.5} locale="de-AT" />);
10
+ });
11
+ const value = element!.root.children[0];
12
+ expect(value).toBe("1\u00a0234,5");
13
+ });
6
14
 
7
- test("render de-AT", () => {
8
- let element: ReactTestRenderer;
9
- act(() => {
10
- element = create(<DecimalFormat value={1234.5} locale="de-AT" />);
11
- })
12
- const value = element!.root.children[0];
13
- expect(value).toBe("1\u00a0234,5");
14
- });
15
-
16
- test("render en-US", () => {
17
- let element: ReactTestRenderer;
18
- act(() => {
19
- element = create(<DecimalFormat value={1234.5} locale="en-US" />);
20
- })
21
- const value = element!.root.children[0];
22
- expect(value).toBe("1,234.5");
23
- });
24
-
25
- });
15
+ test("render en-US", () => {
16
+ let element: ReactTestRenderer;
17
+ act(() => {
18
+ element = create(<DecimalFormat value={1234.5} locale="en-US" />);
19
+ });
20
+ const value = element!.root.children[0];
21
+ expect(value).toBe("1,234.5");
22
+ });
23
+ });
@@ -1,32 +1,32 @@
1
- import {useNumberFormat} from "./useNumberFormat";
2
1
  import {Fragment, useMemo} from "react";
3
2
  import * as React from "react";
3
+ import {useNumberFormat} from "./useNumberFormat";
4
4
 
5
5
  export interface DecimalFormatProps {
6
- /**
7
- * The numeric amount of currency.
8
- */
9
- value: number | bigint | null | undefined;
10
-
11
- /**
12
- * Minimum fraction digits. Default depends on the browser.
13
- */
14
- minimumFractionDigits?: number;
15
-
16
- /**
17
- * Maximum fraction digits. Default depends on the browser.
18
- */
19
- maximumFractionDigits?: number;
20
-
21
- /**
22
- * Fraction digits. Shorthand to set both `minimumFractionDigits` and `maximumFractionDigits`.
23
- */
24
- fractionDigits?: number;
25
-
26
- /**
27
- * Overrides the user's locale. Use for testing only.
28
- */
29
- locale?: string;
6
+ /**
7
+ * The numeric amount of currency.
8
+ */
9
+ value: number | bigint | null | undefined;
10
+
11
+ /**
12
+ * Minimum fraction digits. Default depends on the browser.
13
+ */
14
+ minimumFractionDigits?: number;
15
+
16
+ /**
17
+ * Maximum fraction digits. Default depends on the browser.
18
+ */
19
+ maximumFractionDigits?: number;
20
+
21
+ /**
22
+ * Fraction digits. Shorthand to set both `minimumFractionDigits` and `maximumFractionDigits`.
23
+ */
24
+ fractionDigits?: number;
25
+
26
+ /**
27
+ * Overrides the user's locale. Use for testing only.
28
+ */
29
+ locale?: string;
30
30
  }
31
31
 
32
32
  /**
@@ -35,25 +35,25 @@ export interface DecimalFormatProps {
35
35
  * @constructor
36
36
  */
37
37
  export function DecimalFormat(props: DecimalFormatProps) {
38
- const {
39
- value,
40
- fractionDigits,
41
- minimumFractionDigits = fractionDigits,
42
- maximumFractionDigits = fractionDigits,
43
- locale,
44
- } = props;
45
-
46
- const options = useMemo(() => ({
47
- style: "decimal",
48
- minimumFractionDigits,
49
- maximumFractionDigits,
50
- }), [minimumFractionDigits, maximumFractionDigits]);
51
-
52
- const numberFormat = useNumberFormat(options, locale);
53
-
54
- const str = useMemo(() => {
55
- return (typeof value == "number" || typeof value == "bigint") ? numberFormat.format(value) : "";
56
- }, [numberFormat, value]);
57
-
58
- return <Fragment>{str}</Fragment>;
59
- }
38
+ const {
39
+ value,
40
+ fractionDigits,
41
+ minimumFractionDigits = fractionDigits,
42
+ maximumFractionDigits = fractionDigits,
43
+ locale,
44
+ } = props;
45
+
46
+ const options = useMemo(() => ({
47
+ style: "decimal",
48
+ minimumFractionDigits,
49
+ maximumFractionDigits,
50
+ }), [minimumFractionDigits, maximumFractionDigits]);
51
+
52
+ const numberFormat = useNumberFormat(options, locale);
53
+
54
+ const str = useMemo(() => {
55
+ return (typeof value == "number" || typeof value == "bigint") ? numberFormat.format(value) : "";
56
+ }, [numberFormat, value]);
57
+
58
+ return <Fragment>{str}</Fragment>;
59
+ }
@@ -1,57 +1,56 @@
1
- import {act, create, ReactTestRenderer} from "react-test-renderer";
2
1
  import * as React from "react";
3
- import {DurationFormat} from "./DurationFormat";
2
+ import {act, create, ReactTestRenderer} from "react-test-renderer";
4
3
  import {Duration, Now} from "../temporal";
4
+ import {DurationFormat} from "./DurationFormat";
5
5
 
6
6
  describe("DurationFormat", () => {
7
+ test("render de-AT", () => {
8
+ let element: ReactTestRenderer;
9
+ act(() => {
10
+ element = create(<DurationFormat value={Duration.from({days: 5, hours: 2, seconds: 2})} locale="de-AT" />);
11
+ });
12
+ const value = element!.root.children[0];
13
+ expect(value).toBe("5d 02:00:02");
14
+ });
7
15
 
8
- test("render de-AT", () => {
9
- let element: ReactTestRenderer;
10
- act(() => {
11
- element = create(<DurationFormat value={Duration.from({days: 5, hours: 2, seconds: 2})} locale="de-AT" />);
12
- })
13
- const value = element!.root.children[0];
14
- expect(value).toBe("5d 02:00:02");
15
- });
16
-
17
- test("render en-US", () => {
18
- let element: ReactTestRenderer;
19
- act(() => {
20
- element = create(<DurationFormat value={Duration.from({days: 5, hours: 2, seconds: 2})} locale="en-US" />);
21
- })
22
- const value = element!.root.children[0];
23
- expect(value).toBe("5d 02:00:02");
24
- });
16
+ test("render en-US", () => {
17
+ let element: ReactTestRenderer;
18
+ act(() => {
19
+ element = create(<DurationFormat value={Duration.from({days: 5, hours: 2, seconds: 2})} locale="en-US" />);
20
+ });
21
+ const value = element!.root.children[0];
22
+ expect(value).toBe("5d 02:00:02");
23
+ });
25
24
 
26
- test("balance seconds de-AT", () => {
27
- let element: ReactTestRenderer;
28
- act(() => {
29
- const duration = Now.instant().until(Now.instant().add({seconds: 10000}))
30
- .round({largestUnit: "hours"});
31
- element = create(<DurationFormat value={duration} locale="de-AT" />);
32
- })
33
- const value = element!.root.children[0];
34
- expect(value).toBe("02:46:40");
35
- });
25
+ test("balance seconds de-AT", () => {
26
+ let element: ReactTestRenderer;
27
+ act(() => {
28
+ const duration = Now.instant().until(Now.instant().add({seconds: 10000}))
29
+ .round({largestUnit: "hours"});
30
+ element = create(<DurationFormat value={duration} locale="de-AT" />);
31
+ });
32
+ const value = element!.root.children[0];
33
+ expect(value).toBe("02:46:40");
34
+ });
36
35
 
37
- test("balance days de-AT", () => {
38
- let element: ReactTestRenderer;
39
- act(() => {
40
- const duration = Now.instant().until(Now.instant().add({hours: 5 * 24}))
41
- .round({largestUnit: "days"});
42
- element = create(<DurationFormat value={duration} locale="de-AT" />);
43
- })
44
- const value = element!.root.children[0];
45
- expect(value).toBe("5d");
46
- });
36
+ test("balance days de-AT", () => {
37
+ let element: ReactTestRenderer;
38
+ act(() => {
39
+ const duration = Now.instant().until(Now.instant().add({hours: 5 * 24}))
40
+ .round({largestUnit: "days"});
41
+ element = create(<DurationFormat value={duration} locale="de-AT" />);
42
+ });
43
+ const value = element!.root.children[0];
44
+ expect(value).toBe("5d");
45
+ });
47
46
 
48
- test("complex de-AT", () => {
49
- let element: ReactTestRenderer;
50
- act(() => {
51
- const duration = Duration.from({years: 3, months: 4, weeks: 1, days: 6});
52
- element = create(<DurationFormat value={duration} locale="de-AT" />);
53
- })
54
- const value = element!.root.children[0];
55
- expect(value).toBe("3y 4m 1w 6d");
56
- });
57
- });
47
+ test("complex de-AT", () => {
48
+ let element: ReactTestRenderer;
49
+ act(() => {
50
+ const duration = Duration.from({years: 3, months: 4, weeks: 1, days: 6});
51
+ element = create(<DurationFormat value={duration} locale="de-AT" />);
52
+ });
53
+ const value = element!.root.children[0];
54
+ expect(value).toBe("3y 4m 1w 6d");
55
+ });
56
+ });
@@ -1,72 +1,72 @@
1
- import {Duration} from "../temporal";
2
- import {getSupportedFormatLocale} from "../getSupportedFormatLocale";
3
1
  import * as React from "react";
4
2
  import {Fragment, useMemo} from "react";
3
+ import {getSupportedFormatLocale} from "../getSupportedFormatLocale";
4
+ import {Duration} from "../temporal";
5
5
  import {DateStyle, TimeStyle} from "./types";
6
6
 
7
7
  interface DurationFormatProps {
8
- /**
9
- * The duration value to format.
10
- */
11
- value?: Duration | null | undefined;
8
+ /**
9
+ * The duration value to format.
10
+ */
11
+ value?: Duration | null | undefined;
12
12
 
13
- /**
14
- * The style of the date format.
15
- */
16
- dateStyle?: DateStyle | undefined;
13
+ /**
14
+ * The style of the date format.
15
+ */
16
+ dateStyle?: DateStyle | undefined;
17
17
 
18
- /**
19
- * The style of the time format.
20
- */
21
- timeStyle?: TimeStyle | undefined;
18
+ /**
19
+ * The style of the time format.
20
+ */
21
+ timeStyle?: TimeStyle | undefined;
22
22
 
23
- /**
24
- * Overrides the user's locale. Use for testing only.
25
- */
26
- locale?: string;
23
+ /**
24
+ * Overrides the user's locale. Use for testing only.
25
+ */
26
+ locale?: string;
27
27
  }
28
28
 
29
29
  export function DurationFormat(props: DurationFormatProps) {
30
- const {
31
- value,
32
- dateStyle,
33
- timeStyle,
34
- locale: suppliedLocale
35
- } = props;
30
+ const {
31
+ value,
32
+ dateStyle,
33
+ timeStyle,
34
+ locale: suppliedLocale,
35
+ } = props;
36
36
 
37
- if (!value) {
38
- return null;
39
- }
37
+ if (!value) {
38
+ return null;
39
+ }
40
40
 
41
- const options = useMemo(() => ({
42
- dateStyle,
43
- timeStyle,
44
- }), [dateStyle, timeStyle]);
41
+ const options = useMemo(() => ({
42
+ dateStyle,
43
+ timeStyle,
44
+ }), [dateStyle, timeStyle]);
45
45
 
46
- const locale = useMemo(() => suppliedLocale ?? getSupportedFormatLocale("dateTime"), [suppliedLocale]);
46
+ const locale = useMemo(() => suppliedLocale ?? getSupportedFormatLocale("dateTime"), [suppliedLocale]);
47
47
 
48
- const strValue = useMemo(() => {
49
- // TODO: this can only be supported once a polyfill or browser support for DurationFormat is available
50
- // https://github.com/tc39/proposal-intl-duration-format/
51
- // In the meantime, we format the duration in a simple neural format.
52
- return formatDuration(value);
53
- }, [value, locale, options]);
48
+ const strValue = useMemo(() => {
49
+ // TODO: this can only be supported once a polyfill or browser support for DurationFormat is available
50
+ // https://github.com/tc39/proposal-intl-duration-format/
51
+ // In the meantime, we format the duration in a simple neural format.
52
+ return formatDuration(value);
53
+ }, [value, locale, options]);
54
54
 
55
- return <Fragment>{strValue}</Fragment>;
55
+ return <Fragment>{strValue}</Fragment>;
56
56
  }
57
57
 
58
58
  function formatDuration(value: Duration) {
59
- const parts = (["years", "months", "weeks", "days"] as const)
60
- .map(prop => [prop, value[prop]] as const)
61
- .filter(([_, value]) => Boolean(value))
62
- .map(([prop, value]) => value + prop.charAt(0));
59
+ const parts = (["years", "months", "weeks", "days"] as const)
60
+ .map(prop => [prop, value[prop]] as const)
61
+ .filter(([_, value]) => Boolean(value))
62
+ .map(([prop, value]) => value + prop.charAt(0));
63
63
 
64
- if (value.hours || value.minutes || value.seconds) {
65
- const time = [value.hours || 0, value.minutes || 0, value.seconds]
66
- .map(value => value.toString().padStart(2, "0"))
67
- .join(":");
68
- parts.push(time);
69
- }
64
+ if (value.hours || value.minutes || value.seconds) {
65
+ const time = [value.hours || 0, value.minutes || 0, value.seconds]
66
+ .map(value => value.toString().padStart(2, "0"))
67
+ .join(":");
68
+ parts.push(time);
69
+ }
70
70
 
71
- return parts.join(" ");
72
- }
71
+ return parts.join(" ");
72
+ }