@helpwave/hightide 0.1.7 → 0.1.9
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.
- package/dist/components/branding/HelpwaveBadge.js +30 -8
- package/dist/components/branding/HelpwaveBadge.js.map +1 -1
- package/dist/components/branding/HelpwaveBadge.mjs +30 -8
- package/dist/components/branding/HelpwaveBadge.mjs.map +1 -1
- package/dist/components/date/DatePicker.d.mts +3 -4
- package/dist/components/date/DatePicker.d.ts +3 -4
- package/dist/components/date/DatePicker.js +135 -33
- package/dist/components/date/DatePicker.js.map +1 -1
- package/dist/components/date/DatePicker.mjs +135 -33
- package/dist/components/date/DatePicker.mjs.map +1 -1
- package/dist/components/date/DayPicker.d.mts +1 -1
- package/dist/components/date/DayPicker.d.ts +1 -1
- package/dist/components/date/DayPicker.js +23 -11
- package/dist/components/date/DayPicker.js.map +1 -1
- package/dist/components/date/DayPicker.mjs +23 -11
- package/dist/components/date/DayPicker.mjs.map +1 -1
- package/dist/components/date/TimeDisplay.d.mts +5 -19
- package/dist/components/date/TimeDisplay.d.ts +5 -19
- package/dist/components/date/TimeDisplay.js +121 -37
- package/dist/components/date/TimeDisplay.js.map +1 -1
- package/dist/components/date/TimeDisplay.mjs +121 -37
- package/dist/components/date/TimeDisplay.mjs.map +1 -1
- package/dist/components/date/YearMonthPicker.js +106 -22
- package/dist/components/date/YearMonthPicker.js.map +1 -1
- package/dist/components/date/YearMonthPicker.mjs +106 -22
- package/dist/components/date/YearMonthPicker.mjs.map +1 -1
- package/dist/components/dialogs/ConfirmDialog.d.mts +2 -5
- package/dist/components/dialogs/ConfirmDialog.d.ts +2 -5
- package/dist/components/dialogs/ConfirmDialog.js +157 -25
- package/dist/components/dialogs/ConfirmDialog.js.map +1 -1
- package/dist/components/dialogs/ConfirmDialog.mjs +157 -25
- package/dist/components/dialogs/ConfirmDialog.mjs.map +1 -1
- package/dist/components/icons-and-geometry/Avatar.js +2 -2
- package/dist/components/icons-and-geometry/Avatar.js.map +1 -1
- package/dist/components/icons-and-geometry/Avatar.mjs +2 -2
- package/dist/components/icons-and-geometry/Avatar.mjs.map +1 -1
- package/dist/components/layout-and-navigation/Carousel.d.mts +1 -1
- package/dist/components/layout-and-navigation/Carousel.d.ts +1 -1
- package/dist/components/layout-and-navigation/Carousel.js +86 -28
- package/dist/components/layout-and-navigation/Carousel.js.map +1 -1
- package/dist/components/layout-and-navigation/Carousel.mjs +86 -28
- package/dist/components/layout-and-navigation/Carousel.mjs.map +1 -1
- package/dist/components/layout-and-navigation/Expandable.d.mts +3 -0
- package/dist/components/layout-and-navigation/Expandable.d.ts +3 -0
- package/dist/components/layout-and-navigation/Expandable.js +4 -3
- package/dist/components/layout-and-navigation/Expandable.js.map +1 -1
- package/dist/components/layout-and-navigation/Expandable.mjs +4 -3
- package/dist/components/layout-and-navigation/Expandable.mjs.map +1 -1
- package/dist/components/layout-and-navigation/FAQSection.js +4 -3
- package/dist/components/layout-and-navigation/FAQSection.js.map +1 -1
- package/dist/components/layout-and-navigation/FAQSection.mjs +4 -3
- package/dist/components/layout-and-navigation/FAQSection.mjs.map +1 -1
- package/dist/components/layout-and-navigation/Overlay.d.mts +2 -3
- package/dist/components/layout-and-navigation/Overlay.d.ts +2 -3
- package/dist/components/layout-and-navigation/Overlay.js +152 -12
- package/dist/components/layout-and-navigation/Overlay.js.map +1 -1
- package/dist/components/layout-and-navigation/Overlay.mjs +152 -12
- package/dist/components/layout-and-navigation/Overlay.mjs.map +1 -1
- package/dist/components/layout-and-navigation/Pagination.d.mts +2 -3
- package/dist/components/layout-and-navigation/Pagination.d.ts +2 -3
- package/dist/components/layout-and-navigation/Pagination.js +145 -13
- package/dist/components/layout-and-navigation/Pagination.js.map +1 -1
- package/dist/components/layout-and-navigation/Pagination.mjs +145 -13
- package/dist/components/layout-and-navigation/Pagination.mjs.map +1 -1
- package/dist/components/layout-and-navigation/SearchableList.d.mts +10 -8
- package/dist/components/layout-and-navigation/SearchableList.d.ts +10 -8
- package/dist/components/layout-and-navigation/SearchableList.js +261 -30
- package/dist/components/layout-and-navigation/SearchableList.js.map +1 -1
- package/dist/components/layout-and-navigation/SearchableList.mjs +261 -30
- package/dist/components/layout-and-navigation/SearchableList.mjs.map +1 -1
- package/dist/components/layout-and-navigation/StepperBar.d.mts +2 -5
- package/dist/components/layout-and-navigation/StepperBar.d.ts +2 -5
- package/dist/components/layout-and-navigation/StepperBar.js +149 -19
- package/dist/components/layout-and-navigation/StepperBar.js.map +1 -1
- package/dist/components/layout-and-navigation/StepperBar.mjs +149 -19
- package/dist/components/layout-and-navigation/StepperBar.mjs.map +1 -1
- package/dist/components/layout-and-navigation/Table.js +146 -14
- package/dist/components/layout-and-navigation/Table.js.map +1 -1
- package/dist/components/layout-and-navigation/Table.mjs +146 -14
- package/dist/components/layout-and-navigation/Table.mjs.map +1 -1
- package/dist/components/layout-and-navigation/TextImage.d.mts +3 -4
- package/dist/components/layout-and-navigation/TextImage.d.ts +3 -4
- package/dist/components/layout-and-navigation/TextImage.js +153 -19
- package/dist/components/layout-and-navigation/TextImage.js.map +1 -1
- package/dist/components/layout-and-navigation/TextImage.mjs +153 -19
- package/dist/components/layout-and-navigation/TextImage.mjs.map +1 -1
- package/dist/components/layout-and-navigation/Tile.d.mts +10 -15
- package/dist/components/layout-and-navigation/Tile.d.ts +10 -15
- package/dist/components/layout-and-navigation/Tile.js +30 -8
- package/dist/components/layout-and-navigation/Tile.js.map +1 -1
- package/dist/components/layout-and-navigation/Tile.mjs +30 -8
- package/dist/components/layout-and-navigation/Tile.mjs.map +1 -1
- package/dist/components/loading-states/ErrorComponent.js +48 -8
- package/dist/components/loading-states/ErrorComponent.js.map +1 -1
- package/dist/components/loading-states/ErrorComponent.mjs +48 -8
- package/dist/components/loading-states/ErrorComponent.mjs.map +1 -1
- package/dist/components/loading-states/LoadingAndErrorComponent.d.mts +1 -0
- package/dist/components/loading-states/LoadingAndErrorComponent.d.ts +1 -0
- package/dist/components/loading-states/LoadingAndErrorComponent.js +147 -15
- package/dist/components/loading-states/LoadingAndErrorComponent.js.map +1 -1
- package/dist/components/loading-states/LoadingAndErrorComponent.mjs +147 -15
- package/dist/components/loading-states/LoadingAndErrorComponent.mjs.map +1 -1
- package/dist/components/loading-states/LoadingAnimation.d.mts +2 -3
- package/dist/components/loading-states/LoadingAnimation.d.ts +2 -3
- package/dist/components/loading-states/LoadingAnimation.js +145 -13
- package/dist/components/loading-states/LoadingAnimation.js.map +1 -1
- package/dist/components/loading-states/LoadingAnimation.mjs +145 -13
- package/dist/components/loading-states/LoadingAnimation.mjs.map +1 -1
- package/dist/components/loading-states/ProgressIndicator.js +2 -2
- package/dist/components/loading-states/ProgressIndicator.js.map +1 -1
- package/dist/components/loading-states/ProgressIndicator.mjs +2 -2
- package/dist/components/loading-states/ProgressIndicator.mjs.map +1 -1
- package/dist/components/modals/ConfirmModal.d.mts +2 -5
- package/dist/components/modals/ConfirmModal.d.ts +2 -5
- package/dist/components/modals/ConfirmModal.js +158 -28
- package/dist/components/modals/ConfirmModal.js.map +1 -1
- package/dist/components/modals/ConfirmModal.mjs +158 -28
- package/dist/components/modals/ConfirmModal.mjs.map +1 -1
- package/dist/components/modals/DiscardChangesModal.d.mts +2 -7
- package/dist/components/modals/DiscardChangesModal.d.ts +2 -7
- package/dist/components/modals/DiscardChangesModal.js +162 -48
- package/dist/components/modals/DiscardChangesModal.js.map +1 -1
- package/dist/components/modals/DiscardChangesModal.mjs +162 -48
- package/dist/components/modals/DiscardChangesModal.mjs.map +1 -1
- package/dist/components/modals/InputModal.d.mts +1 -0
- package/dist/components/modals/InputModal.d.ts +1 -0
- package/dist/components/modals/InputModal.js +158 -28
- package/dist/components/modals/InputModal.js.map +1 -1
- package/dist/components/modals/InputModal.mjs +158 -28
- package/dist/components/modals/InputModal.mjs.map +1 -1
- package/dist/components/modals/LanguageModal.d.mts +3 -2
- package/dist/components/modals/LanguageModal.d.ts +3 -2
- package/dist/components/modals/LanguageModal.js +538 -166
- package/dist/components/modals/LanguageModal.js.map +1 -1
- package/dist/components/modals/LanguageModal.mjs +537 -165
- package/dist/components/modals/LanguageModal.mjs.map +1 -1
- package/dist/components/modals/ThemeModal.d.mts +5 -5
- package/dist/components/modals/ThemeModal.d.ts +5 -5
- package/dist/components/modals/ThemeModal.js +547 -176
- package/dist/components/modals/ThemeModal.js.map +1 -1
- package/dist/components/modals/ThemeModal.mjs +544 -173
- package/dist/components/modals/ThemeModal.mjs.map +1 -1
- package/dist/components/properties/CheckboxProperty.d.mts +3 -5
- package/dist/components/properties/CheckboxProperty.d.ts +3 -5
- package/dist/components/properties/CheckboxProperty.js +148 -26
- package/dist/components/properties/CheckboxProperty.js.map +1 -1
- package/dist/components/properties/CheckboxProperty.mjs +148 -26
- package/dist/components/properties/CheckboxProperty.mjs.map +1 -1
- package/dist/components/properties/DateProperty.d.mts +1 -0
- package/dist/components/properties/DateProperty.d.ts +1 -0
- package/dist/components/properties/DateProperty.js +146 -14
- package/dist/components/properties/DateProperty.js.map +1 -1
- package/dist/components/properties/DateProperty.mjs +146 -14
- package/dist/components/properties/DateProperty.mjs.map +1 -1
- package/dist/components/properties/MultiSelectProperty.d.mts +5 -5
- package/dist/components/properties/MultiSelectProperty.d.ts +5 -5
- package/dist/components/properties/MultiSelectProperty.js +626 -456
- package/dist/components/properties/MultiSelectProperty.js.map +1 -1
- package/dist/components/properties/MultiSelectProperty.mjs +622 -452
- package/dist/components/properties/MultiSelectProperty.mjs.map +1 -1
- package/dist/components/properties/NumberProperty.d.mts +1 -0
- package/dist/components/properties/NumberProperty.d.ts +1 -0
- package/dist/components/properties/NumberProperty.js +148 -16
- package/dist/components/properties/NumberProperty.js.map +1 -1
- package/dist/components/properties/NumberProperty.mjs +148 -16
- package/dist/components/properties/NumberProperty.mjs.map +1 -1
- package/dist/components/properties/PropertyBase.d.mts +2 -3
- package/dist/components/properties/PropertyBase.d.ts +2 -3
- package/dist/components/properties/PropertyBase.js +146 -14
- package/dist/components/properties/PropertyBase.js.map +1 -1
- package/dist/components/properties/PropertyBase.mjs +146 -14
- package/dist/components/properties/PropertyBase.mjs.map +1 -1
- package/dist/components/properties/SelectProperty.d.mts +5 -6
- package/dist/components/properties/SelectProperty.d.ts +5 -6
- package/dist/components/properties/SelectProperty.js +542 -279
- package/dist/components/properties/SelectProperty.js.map +1 -1
- package/dist/components/properties/SelectProperty.mjs +542 -279
- package/dist/components/properties/SelectProperty.mjs.map +1 -1
- package/dist/components/properties/TextProperty.d.mts +2 -1
- package/dist/components/properties/TextProperty.d.ts +2 -1
- package/dist/components/properties/TextProperty.js +150 -18
- package/dist/components/properties/TextProperty.js.map +1 -1
- package/dist/components/properties/TextProperty.mjs +150 -18
- package/dist/components/properties/TextProperty.mjs.map +1 -1
- package/dist/components/user-action/DateAndTimePicker.d.mts +4 -20
- package/dist/components/user-action/DateAndTimePicker.d.ts +4 -20
- package/dist/components/user-action/DateAndTimePicker.js +233 -71
- package/dist/components/user-action/DateAndTimePicker.js.map +1 -1
- package/dist/components/user-action/DateAndTimePicker.mjs +233 -71
- package/dist/components/user-action/DateAndTimePicker.mjs.map +1 -1
- package/dist/components/user-action/Menu.d.mts +14 -8
- package/dist/components/user-action/Menu.d.ts +14 -8
- package/dist/components/user-action/Menu.js +32 -11
- package/dist/components/user-action/Menu.js.map +1 -1
- package/dist/components/user-action/Menu.mjs +32 -11
- package/dist/components/user-action/Menu.mjs.map +1 -1
- package/dist/components/user-action/MultiSelect.d.mts +13 -23
- package/dist/components/user-action/MultiSelect.d.ts +13 -23
- package/dist/components/user-action/MultiSelect.js +632 -325
- package/dist/components/user-action/MultiSelect.js.map +1 -1
- package/dist/components/user-action/MultiSelect.mjs +629 -323
- package/dist/components/user-action/MultiSelect.mjs.map +1 -1
- package/dist/components/user-action/Select.d.mts +5 -18
- package/dist/components/user-action/Select.d.ts +5 -18
- package/dist/components/user-action/Select.js +447 -113
- package/dist/components/user-action/Select.js.map +1 -1
- package/dist/components/user-action/Select.mjs +442 -107
- package/dist/components/user-action/Select.mjs.map +1 -1
- package/dist/components/user-action/Tooltip.js +2 -2
- package/dist/components/user-action/Tooltip.js.map +1 -1
- package/dist/components/user-action/Tooltip.mjs +2 -2
- package/dist/components/user-action/Tooltip.mjs.map +1 -1
- package/dist/css/globals.css +224 -207
- package/dist/css/uncompiled/globals.css +138 -74
- package/dist/hooks/useSearch.d.mts +17 -0
- package/dist/hooks/useSearch.d.ts +17 -0
- package/dist/hooks/useSearch.js +66 -0
- package/dist/hooks/useSearch.js.map +1 -0
- package/dist/hooks/useSearch.mjs +42 -0
- package/dist/hooks/useSearch.mjs.map +1 -0
- package/dist/index.d.mts +10 -6
- package/dist/index.d.ts +10 -6
- package/dist/index.js +882 -758
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +836 -717
- package/dist/index.mjs.map +1 -1
- package/dist/localization/defaults/form.d.mts +54 -0
- package/dist/localization/defaults/form.d.ts +54 -0
- package/dist/localization/defaults/form.js +127 -0
- package/dist/localization/defaults/form.js.map +1 -0
- package/dist/localization/defaults/form.mjs +103 -0
- package/dist/localization/defaults/form.mjs.map +1 -0
- package/dist/localization/defaults/time.d.mts +39 -0
- package/dist/localization/defaults/time.d.ts +39 -0
- package/dist/localization/defaults/time.js +101 -0
- package/dist/localization/defaults/time.js.map +1 -0
- package/dist/localization/defaults/time.mjs +76 -0
- package/dist/localization/defaults/time.mjs.map +1 -0
- package/dist/localization/useTranslation.d.mts +30 -6
- package/dist/localization/useTranslation.d.ts +30 -6
- package/dist/localization/useTranslation.js +46 -6
- package/dist/localization/useTranslation.js.map +1 -1
- package/dist/localization/useTranslation.mjs +46 -6
- package/dist/localization/useTranslation.mjs.map +1 -1
- package/dist/theming/useTheme.d.mts +4 -2
- package/dist/theming/useTheme.d.ts +4 -2
- package/dist/theming/useTheme.js +10 -2
- package/dist/theming/useTheme.js.map +1 -1
- package/dist/theming/useTheme.mjs +10 -2
- package/dist/theming/useTheme.mjs.map +1 -1
- package/dist/util/PropsWithFunctionChildren.d.mts +14 -0
- package/dist/util/PropsWithFunctionChildren.d.ts +14 -0
- package/dist/util/PropsWithFunctionChildren.js +38 -0
- package/dist/util/PropsWithFunctionChildren.js.map +1 -0
- package/dist/util/PropsWithFunctionChildren.mjs +14 -0
- package/dist/util/PropsWithFunctionChildren.mjs.map +1 -0
- package/dist/util/simpleSearch.d.mts +2 -2
- package/dist/util/simpleSearch.d.ts +2 -2
- package/dist/util/simpleSearch.js +4 -1
- package/dist/util/simpleSearch.js.map +1 -1
- package/dist/util/simpleSearch.mjs +4 -1
- package/dist/util/simpleSearch.mjs.map +1 -1
- package/package.json +1 -2
|
@@ -26,28 +26,62 @@ var LanguageContext = createContext({
|
|
|
26
26
|
var useLanguage = () => useContext(LanguageContext);
|
|
27
27
|
|
|
28
28
|
// src/localization/useTranslation.ts
|
|
29
|
-
var useTranslation = (
|
|
30
|
-
const { language: languageProp, translation: overwrite } =
|
|
29
|
+
var useTranslation = (translations, overwriteTranslation = {}) => {
|
|
30
|
+
const { language: languageProp, translation: overwrite } = overwriteTranslation;
|
|
31
31
|
const { language: inferredLanguage } = useLanguage();
|
|
32
32
|
const usedLanguage = languageProp ?? inferredLanguage;
|
|
33
|
-
|
|
34
|
-
if (overwrite
|
|
35
|
-
|
|
33
|
+
const usedTranslations = [...translations];
|
|
34
|
+
if (overwrite) {
|
|
35
|
+
usedTranslations.push(overwrite);
|
|
36
36
|
}
|
|
37
|
-
return
|
|
37
|
+
return (key, options) => {
|
|
38
|
+
const { count, replacements } = { ...{ count: 0, replacements: {} }, ...options };
|
|
39
|
+
try {
|
|
40
|
+
for (let i = translations.length - 1; i >= 0; i--) {
|
|
41
|
+
const translation = translations[i];
|
|
42
|
+
const localizedTranslation = translation[usedLanguage];
|
|
43
|
+
if (!localizedTranslation) {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const value = localizedTranslation[key];
|
|
47
|
+
if (!value) {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
let forProcessing;
|
|
51
|
+
if (typeof value !== "string") {
|
|
52
|
+
if (count <= 0 && value?.zero) {
|
|
53
|
+
forProcessing = value.zero;
|
|
54
|
+
} else if (count === 1 && value?.one) {
|
|
55
|
+
forProcessing = value.one;
|
|
56
|
+
} else if (count === 2 && value?.two) {
|
|
57
|
+
forProcessing = value.two;
|
|
58
|
+
} else if (count <= 10 && value?.few) {
|
|
59
|
+
forProcessing = value.few;
|
|
60
|
+
} else if (count > 10 && value?.many) {
|
|
61
|
+
forProcessing = value.many;
|
|
62
|
+
} else {
|
|
63
|
+
forProcessing = value.other;
|
|
64
|
+
}
|
|
65
|
+
} else {
|
|
66
|
+
forProcessing = value;
|
|
67
|
+
}
|
|
68
|
+
forProcessing = forProcessing.replace(/\{\{(\w+)}}/g, (_, placeholder) => {
|
|
69
|
+
return replacements[placeholder] ?? `{{${placeholder}}}`;
|
|
70
|
+
});
|
|
71
|
+
return forProcessing;
|
|
72
|
+
}
|
|
73
|
+
} catch (e) {
|
|
74
|
+
console.error(e);
|
|
75
|
+
}
|
|
76
|
+
return `{{${usedLanguage}:${key}}}`;
|
|
77
|
+
};
|
|
38
78
|
};
|
|
39
79
|
|
|
40
|
-
// src/
|
|
41
|
-
|
|
42
|
-
var defaultTimeDisplayTranslations = {
|
|
80
|
+
// src/localization/defaults/time.ts
|
|
81
|
+
var monthTranslation = {
|
|
43
82
|
en: {
|
|
44
|
-
today: "today",
|
|
45
|
-
yesterday: "yesterday",
|
|
46
|
-
tomorrow: "tomorrow",
|
|
47
|
-
inDays: (days) => `in ${days} days`,
|
|
48
|
-
agoDays: (days) => `${days} days ago`,
|
|
49
83
|
january: "January",
|
|
50
|
-
february: "
|
|
84
|
+
february: "Febuary",
|
|
51
85
|
march: "March",
|
|
52
86
|
april: "April",
|
|
53
87
|
may: "May",
|
|
@@ -60,13 +94,8 @@ var defaultTimeDisplayTranslations = {
|
|
|
60
94
|
december: "December"
|
|
61
95
|
},
|
|
62
96
|
de: {
|
|
63
|
-
today: "heute",
|
|
64
|
-
yesterday: "gestern",
|
|
65
|
-
tomorrow: "morgen",
|
|
66
|
-
inDays: (days) => `in ${days} Tagen`,
|
|
67
|
-
agoDays: (days) => `vor ${days} Tagen`,
|
|
68
97
|
january: "Januar",
|
|
69
|
-
february: "
|
|
98
|
+
february: "Febuar",
|
|
70
99
|
march: "M\xE4rz",
|
|
71
100
|
april: "April",
|
|
72
101
|
may: "Mai",
|
|
@@ -79,36 +108,91 @@ var defaultTimeDisplayTranslations = {
|
|
|
79
108
|
december: "December"
|
|
80
109
|
}
|
|
81
110
|
};
|
|
111
|
+
var timeTranslation = {
|
|
112
|
+
en: {
|
|
113
|
+
...monthTranslation.en,
|
|
114
|
+
century: { one: "Century", other: "Centuries" },
|
|
115
|
+
decade: { one: "Decade", other: "Decades" },
|
|
116
|
+
year: { one: "Year", other: "Years" },
|
|
117
|
+
month: { one: "Month", other: "Months" },
|
|
118
|
+
day: { one: "Day", other: "Days" },
|
|
119
|
+
hour: { one: "Hour", other: "Hours" },
|
|
120
|
+
minute: { one: "Minute", other: "Minutes" },
|
|
121
|
+
second: { one: "Second", other: "Seconds" },
|
|
122
|
+
millisecond: { one: "Millisecond", other: "Milliseconds" },
|
|
123
|
+
microsecond: { one: "Microsecond", other: "Microseconds" },
|
|
124
|
+
nanosecond: { one: "Nanosecond", other: "Nanoseconds" },
|
|
125
|
+
yesterday: "Yesterday",
|
|
126
|
+
today: "Today",
|
|
127
|
+
tomorrow: "Tomorrow",
|
|
128
|
+
in: "in",
|
|
129
|
+
ago: "ago"
|
|
130
|
+
},
|
|
131
|
+
de: {
|
|
132
|
+
...monthTranslation.de,
|
|
133
|
+
century: { one: "Jahrhundert", other: "Jahrhunderte" },
|
|
134
|
+
decade: { one: "Jahrzehnt", other: "Jahrzehnte" },
|
|
135
|
+
year: { one: "Jahr", other: "Jahre" },
|
|
136
|
+
month: { one: "Monat", other: "Monate" },
|
|
137
|
+
day: { one: "Tag", other: "Tage" },
|
|
138
|
+
hour: { one: "Stunde", other: "Stunden" },
|
|
139
|
+
minute: { one: "Minute", other: "Minuten" },
|
|
140
|
+
second: { one: "Sekunde", other: "Sekunden" },
|
|
141
|
+
millisecond: { one: "Millisekunde", other: "Millisekunden" },
|
|
142
|
+
microsecond: { one: "Mikrosekunde", other: "Mikrosekunden" },
|
|
143
|
+
nanosecond: { one: "Nanosekunde", other: "Nanosekunden" },
|
|
144
|
+
yesterday: "Gestern",
|
|
145
|
+
today: "Heute",
|
|
146
|
+
tomorrow: "Morgen",
|
|
147
|
+
in: "in",
|
|
148
|
+
ago: "vor"
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
// src/components/date/TimeDisplay.tsx
|
|
153
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
154
|
+
var defaultTimeDisplayTranslations = {
|
|
155
|
+
en: {
|
|
156
|
+
...timeTranslation.en,
|
|
157
|
+
inDays: `in {{days}} days`,
|
|
158
|
+
agoDays: `{{days}} days ago`
|
|
159
|
+
},
|
|
160
|
+
de: {
|
|
161
|
+
...timeTranslation.de,
|
|
162
|
+
inDays: `in {{days}} Tagen`,
|
|
163
|
+
agoDays: `vor {{days}} Tagen`
|
|
164
|
+
}
|
|
165
|
+
};
|
|
82
166
|
var TimeDisplay = ({
|
|
83
167
|
overwriteTranslation,
|
|
84
168
|
date,
|
|
85
169
|
mode = "daysFromToday"
|
|
86
170
|
}) => {
|
|
87
|
-
const translation = useTranslation(defaultTimeDisplayTranslations, overwriteTranslation);
|
|
171
|
+
const translation = useTranslation([defaultTimeDisplayTranslations], overwriteTranslation);
|
|
88
172
|
const difference = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0).valueOf() - new Date(date).setHours(0, 0, 0, 0).valueOf();
|
|
89
173
|
const isBefore = difference > 0;
|
|
90
174
|
const differenceInDays = Math.floor(Math.abs(difference) / (1e3 * 3600 * 24));
|
|
91
175
|
let displayString;
|
|
92
176
|
if (differenceInDays === 0) {
|
|
93
|
-
displayString = translation
|
|
177
|
+
displayString = translation("today");
|
|
94
178
|
} else if (differenceInDays === 1) {
|
|
95
|
-
displayString = isBefore ? translation
|
|
179
|
+
displayString = isBefore ? translation("yesterday") : translation("tomorrow");
|
|
96
180
|
} else {
|
|
97
|
-
displayString = isBefore ? translation.
|
|
181
|
+
displayString = isBefore ? translation("agoDays", { replacements: { days: differenceInDays.toString() } }) : translation("inDays", { replacements: { days: differenceInDays.toString() } });
|
|
98
182
|
}
|
|
99
183
|
const monthToTranslation = {
|
|
100
|
-
0: translation
|
|
101
|
-
1: translation
|
|
102
|
-
2: translation
|
|
103
|
-
3: translation
|
|
104
|
-
4: translation
|
|
105
|
-
5: translation
|
|
106
|
-
6: translation
|
|
107
|
-
7: translation
|
|
108
|
-
8: translation
|
|
109
|
-
9: translation
|
|
110
|
-
10: translation
|
|
111
|
-
11: translation
|
|
184
|
+
0: translation("january"),
|
|
185
|
+
1: translation("february"),
|
|
186
|
+
2: translation("march"),
|
|
187
|
+
3: translation("april"),
|
|
188
|
+
4: translation("may"),
|
|
189
|
+
5: translation("june"),
|
|
190
|
+
6: translation("july"),
|
|
191
|
+
7: translation("august"),
|
|
192
|
+
8: translation("september"),
|
|
193
|
+
9: translation("october"),
|
|
194
|
+
10: translation("november"),
|
|
195
|
+
11: translation("december")
|
|
112
196
|
};
|
|
113
197
|
let fullString;
|
|
114
198
|
if (mode === "daysFromToday") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/localization/LanguageProvider.tsx","../../../src/hooks/useLocalStorage.ts","../../../src/localization/util.ts","../../../src/localization/useTranslation.ts","../../../src/components/date/TimeDisplay.tsx"],"sourcesContent":["import type { Dispatch, PropsWithChildren, SetStateAction } from 'react'\nimport { createContext, useContext, useEffect, useState } from 'react'\nimport { useLocalStorage } from '../hooks/useLocalStorage'\nimport type { Language } from './util'\nimport { LanguageUtil } from './util'\n\nexport type LanguageContextValue = {\n language: Language,\n setLanguage: Dispatch<SetStateAction<Language>>,\n}\n\nexport const LanguageContext = createContext<LanguageContextValue>({\n language: LanguageUtil.DEFAULT_LANGUAGE,\n setLanguage: (v) => v\n})\n\nexport const useLanguage = () => useContext(LanguageContext)\n\nexport const useLocale = (overWriteLanguage?: Language) => {\n const { language } = useLanguage()\n const mapping: Record<Language, string> = {\n en: 'en-US',\n de: 'de-DE'\n }\n return mapping[overWriteLanguage ?? language]\n}\n\ntype LanguageProviderProps = {\n initialLanguage?: Language,\n}\n\nexport const LanguageProvider = ({ initialLanguage, children }: PropsWithChildren<LanguageProviderProps>) => {\n const [language, setLanguage] = useState<Language>(initialLanguage ?? LanguageUtil.DEFAULT_LANGUAGE)\n const [storedLanguage, setStoredLanguage] = useLocalStorage<Language>('language', initialLanguage ?? LanguageUtil.DEFAULT_LANGUAGE)\n\n useEffect(() => {\n if (language !== initialLanguage && initialLanguage) {\n console.warn('LanguageProvider initial state changed: Prefer using languageProvider\\'s setLanguage instead')\n setLanguage(initialLanguage)\n }\n }, [initialLanguage]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n // TODO set locale of html tag here as well\n setStoredLanguage(language)\n }, [language, setStoredLanguage])\n\n useEffect(() => {\n if (storedLanguage !== null) {\n setLanguage(storedLanguage)\n return\n }\n\n const LanguageToTestAgainst = Object.values(LanguageUtil.languages)\n\n const matchingBrowserLanguage = window.navigator.languages\n .map(language => LanguageToTestAgainst.find((test) => language === test || language.split('-')[0] === test))\n .filter(entry => entry !== undefined)\n\n if (matchingBrowserLanguage.length === 0) return\n\n const firstMatch = matchingBrowserLanguage[0] as Language\n setLanguage(firstMatch)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <LanguageContext.Provider value={{\n language,\n setLanguage\n }}>\n {children}\n </LanguageContext.Provider>\n )\n}","import type { Dispatch, SetStateAction } from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport { LocalStorageService } from '../util/storage'\n\ntype SetValue<T> = Dispatch<SetStateAction<T>>\nexport const useLocalStorage = <T>(key: string, initValue: T): [T, SetValue<T>] => {\n const get = useCallback((): T => {\n if (typeof window === 'undefined') {\n return initValue\n }\n const storageService = new LocalStorageService()\n const value = storageService.get<T>(key)\n return value || initValue\n }, [initValue, key])\n\n const [storedValue, setStoredValue] = useState<T>(get)\n\n const setValue: SetValue<T> = useCallback(value => {\n const newValue = value instanceof Function ? value(storedValue) : value\n const storageService = new LocalStorageService()\n storageService.set(key, value)\n\n setStoredValue(newValue)\n }, [storedValue, setStoredValue, key])\n\n useEffect(() => {\n setStoredValue(get())\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return [storedValue, setValue]\n}","/**\n * The supported languages\n */\nconst languages = ['en', 'de'] as const\n\n/**\n * The supported languages\n */\nexport type Language = typeof languages[number]\n\n/**\n * The supported languages' names in their respective language\n */\nconst languagesLocalNames: Record<Language, string> = {\n en: 'English',\n de: 'Deutsch',\n}\n\n/**\n * The default language\n */\nconst DEFAULT_LANGUAGE: Language = 'en'\n\n/**\n * A constant definition for holding data regarding languages\n */\nexport const LanguageUtil = {\n languages,\n DEFAULT_LANGUAGE,\n languagesLocalNames,\n}","import { useLanguage } from './LanguageProvider'\nimport type { Language } from './util'\n\nexport type Translation<T> = Record<Language, T>\n\ntype OverwriteTranslationType<Translation extends Record<string, unknown>> = {\n language?: Language,\n translation?: Partial<Record<Language, Partial<Translation>>>,\n}\n\n/**\n * Adds the `language` prop to the component props.\n *\n * @param Translation the type of the translation object\n *\n * @param Props the type of the component props, defaults to `Record<string, never>`,\n * if you don't expect any other props other than `language` and get an\n * error when using your component (because it uses `forwardRef` etc.)\n * you can try out `Record<string, unknown>`, this might resolve your\n * problem as `SomeType & never` is still `never` but `SomeType & unknown`\n * is `SomeType` which means that adding back props (like `ref` etc.)\n * works properly\n */\nexport type PropsForTranslation<\n Translation extends Record<string, unknown>,\n Props = Record<string, never>\n> = Props & {\n overwriteTranslation?: OverwriteTranslationType<Translation>,\n};\n\nexport const useTranslation = <Translation extends Record<string, unknown>>(\n defaults: Record<Language, Translation>,\n translationOverwrite: OverwriteTranslationType<Translation> = {}\n): Translation => {\n const { language: languageProp, translation: overwrite } = translationOverwrite\n const { language: inferredLanguage } = useLanguage()\n const usedLanguage = languageProp ?? inferredLanguage\n let defaultValues: Translation = defaults[usedLanguage]\n if (overwrite && overwrite[usedLanguage]) {\n defaultValues = { ...defaultValues, ...overwrite[usedLanguage] }\n }\n return defaultValues\n}\n","import type { Language } from '../../localization/util'\nimport type { PropsForTranslation } from '../../localization/useTranslation'\nimport { useTranslation } from '../../localization/useTranslation'\n\ntype TimeDisplayTranslation = {\n today: string,\n yesterday: string,\n tomorrow: string,\n inDays: (days: number) => string,\n agoDays: (days: number) => string,\n january: string,\n february: string,\n march: string,\n april: string,\n may: string,\n june: string,\n july: string,\n august: string,\n september: string,\n october: string,\n november: string,\n december: string,\n}\n\nconst defaultTimeDisplayTranslations: Record<Language, TimeDisplayTranslation> = {\n en: {\n today: 'today',\n yesterday: 'yesterday',\n tomorrow: 'tomorrow',\n inDays: (days: number) => `in ${days} days`,\n agoDays: (days: number) => `${days} days ago`,\n january: 'January',\n february: 'February',\n march: 'March',\n april: 'April',\n may: 'May',\n june: 'June',\n july: 'July',\n august: 'August',\n september: 'September',\n october: 'October',\n november: 'November',\n december: 'December'\n },\n de: {\n today: 'heute',\n yesterday: 'gestern',\n tomorrow: 'morgen',\n inDays: (days: number) => `in ${days} Tagen`,\n agoDays: (days: number) => `vor ${days} Tagen`,\n january: 'Januar',\n february: 'Februar',\n march: 'März',\n april: 'April',\n may: 'Mai',\n june: 'Juni',\n july: 'Juli',\n august: 'August',\n september: 'September',\n october: 'October',\n november: 'November',\n december: 'December'\n }\n}\n\ntype TimeDisplayMode = 'daysFromToday' | 'date'\n\ntype TimeDisplayProps = {\n date: Date,\n mode?: TimeDisplayMode,\n}\n\n/**\n * A Component for displaying time and dates in a unified fashion\n */\nexport const TimeDisplay = ({\n overwriteTranslation,\n date,\n mode = 'daysFromToday'\n }: PropsForTranslation<TimeDisplayTranslation, TimeDisplayProps>) => {\n const translation = useTranslation(defaultTimeDisplayTranslations, overwriteTranslation)\n const difference = new Date().setHours(0, 0, 0, 0).valueOf() - new Date(date).setHours(0, 0, 0, 0).valueOf()\n const isBefore = difference > 0\n const differenceInDays = Math.floor(Math.abs(difference) / (1000 * 3600 * 24))\n\n let displayString\n if (differenceInDays === 0) {\n displayString = translation.today\n } else if (differenceInDays === 1) {\n displayString = isBefore ? translation.yesterday : translation.tomorrow\n } else {\n displayString = isBefore ? translation.agoDays(differenceInDays) : translation.inDays(differenceInDays)\n }\n const monthToTranslation: { [key: number]: string } = {\n 0: translation.january,\n 1: translation.february,\n 2: translation.march,\n 3: translation.april,\n 4: translation.may,\n 5: translation.june,\n 6: translation.july,\n 7: translation.august,\n 8: translation.september,\n 9: translation.october,\n 10: translation.november,\n 11: translation.december\n } as const\n\n let fullString\n if (mode === 'daysFromToday') {\n fullString = `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')} - ${displayString}`\n } else {\n fullString = `${date.getDate()}. ${monthToTranslation[date.getMonth()]} ${date.getFullYear()}`\n }\n\n return (\n <span>\n {fullString}\n </span>\n )\n}\n"],"mappings":"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","names":["useEffect","useState","jsx"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/localization/LanguageProvider.tsx","../../../src/hooks/useLocalStorage.ts","../../../src/localization/util.ts","../../../src/localization/useTranslation.ts","../../../src/localization/defaults/time.ts","../../../src/components/date/TimeDisplay.tsx"],"sourcesContent":["import type { Dispatch, PropsWithChildren, SetStateAction } from 'react'\nimport { createContext, useContext, useEffect, useState } from 'react'\nimport { useLocalStorage } from '../hooks/useLocalStorage'\nimport type { Language } from './util'\nimport { LanguageUtil } from './util'\n\nexport type LanguageContextValue = {\n language: Language,\n setLanguage: Dispatch<SetStateAction<Language>>,\n}\n\nexport const LanguageContext = createContext<LanguageContextValue>({\n language: LanguageUtil.DEFAULT_LANGUAGE,\n setLanguage: (v) => v\n})\n\nexport const useLanguage = () => useContext(LanguageContext)\n\nexport const useLocale = (overWriteLanguage?: Language) => {\n const { language } = useLanguage()\n const mapping: Record<Language, string> = {\n en: 'en-US',\n de: 'de-DE'\n }\n return mapping[overWriteLanguage ?? language]\n}\n\ntype LanguageProviderProps = {\n initialLanguage?: Language,\n}\n\nexport const LanguageProvider = ({ initialLanguage, children }: PropsWithChildren<LanguageProviderProps>) => {\n const [language, setLanguage] = useState<Language>(initialLanguage ?? LanguageUtil.DEFAULT_LANGUAGE)\n const [storedLanguage, setStoredLanguage] = useLocalStorage<Language>('language', initialLanguage ?? LanguageUtil.DEFAULT_LANGUAGE)\n\n useEffect(() => {\n if (language !== initialLanguage && initialLanguage) {\n console.warn('LanguageProvider initial state changed: Prefer using languageProvider\\'s setLanguage instead')\n setLanguage(initialLanguage)\n }\n }, [initialLanguage]) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n // TODO set locale of html tag here as well\n setStoredLanguage(language)\n }, [language, setStoredLanguage])\n\n useEffect(() => {\n if (storedLanguage !== null) {\n setLanguage(storedLanguage)\n return\n }\n\n const LanguageToTestAgainst = Object.values(LanguageUtil.languages)\n\n const matchingBrowserLanguage = window.navigator.languages\n .map(language => LanguageToTestAgainst.find((test) => language === test || language.split('-')[0] === test))\n .filter(entry => entry !== undefined)\n\n if (matchingBrowserLanguage.length === 0) return\n\n const firstMatch = matchingBrowserLanguage[0] as Language\n setLanguage(firstMatch)\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <LanguageContext.Provider value={{\n language,\n setLanguage\n }}>\n {children}\n </LanguageContext.Provider>\n )\n}","import type { Dispatch, SetStateAction } from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport { LocalStorageService } from '../util/storage'\n\ntype SetValue<T> = Dispatch<SetStateAction<T>>\nexport const useLocalStorage = <T>(key: string, initValue: T): [T, SetValue<T>] => {\n const get = useCallback((): T => {\n if (typeof window === 'undefined') {\n return initValue\n }\n const storageService = new LocalStorageService()\n const value = storageService.get<T>(key)\n return value || initValue\n }, [initValue, key])\n\n const [storedValue, setStoredValue] = useState<T>(get)\n\n const setValue: SetValue<T> = useCallback(value => {\n const newValue = value instanceof Function ? value(storedValue) : value\n const storageService = new LocalStorageService()\n storageService.set(key, value)\n\n setStoredValue(newValue)\n }, [storedValue, setStoredValue, key])\n\n useEffect(() => {\n setStoredValue(get())\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n return [storedValue, setValue]\n}","/**\n * The supported languages\n */\nconst languages = ['en', 'de'] as const\n\n/**\n * The supported languages\n */\nexport type Language = typeof languages[number]\n\n/**\n * The supported languages' names in their respective language\n */\nconst languagesLocalNames: Record<Language, string> = {\n en: 'English',\n de: 'Deutsch',\n}\n\n/**\n * The default language\n */\nconst DEFAULT_LANGUAGE: Language = 'en'\n\n/**\n * A constant definition for holding data regarding languages\n */\nexport const LanguageUtil = {\n languages,\n DEFAULT_LANGUAGE,\n languagesLocalNames,\n}","import { useLanguage } from './LanguageProvider'\nimport type { Language } from './util'\n\n/**\n * A type describing the pluralization of a word\n */\nexport type TranslationPlural = {\n zero?: string,\n one?: string,\n two?: string,\n few?: string,\n many?: string,\n other: string,\n}\n\n/**\n * The type describing all values of a translation\n */\nexport type TranslationType = Record<string, string | TranslationPlural>\n\n/**\n * The type of translations\n */\nexport type Translation<T extends TranslationType> = Record<Language, T>\n\ntype OverwriteTranslationType<T extends TranslationType> = {\n language?: Language,\n translation?: Translation<Partial<T>>,\n}\n\n/**\n * Adds the `language` prop to the component props.\n *\n * @param Translation the type of the translation object\n *\n * @param Props the type of the component props, defaults to `Record<string, never>`,\n * if you don't expect any other props other than `language` and get an\n * error when using your component (because it uses `forwardRef` etc.)\n * you can try out `Record<string, unknown>`, this might resolve your\n * problem as `SomeType & never` is still `never` but `SomeType & unknown`\n * is `SomeType` which means that adding back props (like `ref` etc.)\n * works properly\n */\nexport type PropsForTranslation<\n Translation extends TranslationType,\n Props = Record<string, never>\n> = Props & {\n overwriteTranslation?: OverwriteTranslationType<Translation>,\n};\n\ntype StringKeys<T> = Extract<keyof T, string>;\n\ntype TranslationFunctionOptions = {\n replacements?: Record<string, string>,\n count?: number,\n}\ntype TranslationFunction<T extends TranslationType> = (key: StringKeys<T>, options?: TranslationFunctionOptions) => string\n\n\nexport const useTranslation = <T extends TranslationType>(\n translations: Translation<Partial<TranslationType>>[],\n overwriteTranslation: OverwriteTranslationType<T> = {}\n): TranslationFunction<T> => {\n const { language: languageProp, translation: overwrite } = overwriteTranslation\n const { language: inferredLanguage } = useLanguage()\n const usedLanguage = languageProp ?? inferredLanguage\n const usedTranslations = [...translations]\n if (overwrite) {\n usedTranslations.push(overwrite)\n }\n\n return (key: StringKeys<T>, options?: TranslationFunctionOptions): string => {\n const { count, replacements } = { ...{ count: 0, replacements: {} }, ...options }\n\n try {\n for (let i = translations.length - 1; i >= 0; i--) {\n const translation = translations[i]\n const localizedTranslation = translation[usedLanguage]\n if (!localizedTranslation) {\n continue\n }\n const value = localizedTranslation[key]\n if(!value) {\n continue\n }\n\n let forProcessing: string\n if (typeof value !== 'string') {\n if (count <= 0 && value?.zero) {\n forProcessing = value.zero\n } else if (count === 1 && value?.one) {\n forProcessing = value.one\n } else if (count === 2 && value?.two) {\n forProcessing = value.two\n } else if (count <= 10 && value?.few) {\n forProcessing = value.few\n } else if (count > 10 && value?.many) {\n forProcessing = value.many\n } else {\n forProcessing = value.other\n }\n } else {\n forProcessing = value\n }\n forProcessing = forProcessing.replace(/\\{\\{(\\w+)}}/g, (_, placeholder) => {\n return replacements[placeholder] ?? `{{${placeholder}}}` // fallback if key is missing\n })\n return forProcessing\n }\n } catch (e) {\n console.error(e)\n }\n return `{{${usedLanguage}:${key}}}`\n }\n}","import type { TranslationPlural, Translation } from '../useTranslation'\n\nexport type MonthTranslationType = {\n january: string,\n february: string,\n march: string,\n april: string,\n may: string,\n june: string,\n july: string,\n august: string,\n september: string,\n october: string,\n november: string,\n december: string,\n}\n\nexport const monthTranslation: Translation<MonthTranslationType> = {\n en: {\n january: 'January',\n february: 'Febuary',\n march: 'March',\n april: 'April',\n may: 'May',\n june: 'June',\n july: 'July',\n august: 'August',\n september: 'September',\n october: 'October',\n november: 'November',\n december: 'December',\n },\n de: {\n january: 'Januar',\n february: 'Febuar',\n march: 'März',\n april: 'April',\n may: 'Mai',\n june: 'Juni',\n july: 'Juli',\n august: 'August',\n september: 'September',\n october: 'October',\n november: 'November',\n december: 'December',\n }\n}\n\nexport type TimeTranslationType = {\n century: TranslationPlural,\n decade: TranslationPlural,\n year: TranslationPlural,\n month: TranslationPlural,\n day: TranslationPlural,\n hour: TranslationPlural,\n minute: TranslationPlural,\n second: TranslationPlural,\n millisecond: TranslationPlural,\n microsecond: TranslationPlural,\n nanosecond: TranslationPlural,\n yesterday: string,\n today: string,\n tomorrow: string,\n in: string,\n ago: string,\n} & MonthTranslationType\n\nexport const timeTranslation: Translation<TimeTranslationType> = {\n en: {\n ...monthTranslation.en,\n century: { one: 'Century', other: 'Centuries' },\n decade: { one: 'Decade', other: 'Decades' },\n year: { one: 'Year', other: 'Years' },\n month: { one: 'Month', other: 'Months' },\n day: { one: 'Day', other: 'Days' },\n hour: { one: 'Hour', other: 'Hours' },\n minute: { one: 'Minute', other: 'Minutes' },\n second: { one: 'Second', other: 'Seconds' },\n millisecond: { one: 'Millisecond', other: 'Milliseconds' },\n microsecond: { one: 'Microsecond', other: 'Microseconds' },\n nanosecond: { one: 'Nanosecond', other: 'Nanoseconds' },\n yesterday: 'Yesterday',\n today: 'Today',\n tomorrow: 'Tomorrow',\n in: 'in',\n ago: 'ago',\n },\n de: {\n ...monthTranslation.de,\n century: { one: 'Jahrhundert', other: 'Jahrhunderte' },\n decade: { one: 'Jahrzehnt', other: 'Jahrzehnte' },\n year: { one: 'Jahr', other: 'Jahre' },\n month: { one: 'Monat', other: 'Monate' },\n day: { one: 'Tag', other: 'Tage' },\n hour: { one: 'Stunde', other: 'Stunden' },\n minute: { one: 'Minute', other: 'Minuten' },\n second: { one: 'Sekunde', other: 'Sekunden' },\n millisecond: { one: 'Millisekunde', other: 'Millisekunden' },\n microsecond: { one: 'Mikrosekunde', other: 'Mikrosekunden' },\n nanosecond: { one: 'Nanosekunde', other: 'Nanosekunden' },\n yesterday: 'Gestern',\n today: 'Heute',\n tomorrow: 'Morgen',\n in: 'in',\n ago: 'vor',\n }\n}","import type { PropsForTranslation, Translation } from '../../localization/useTranslation'\nimport { useTranslation } from '../../localization/useTranslation'\nimport type { TimeTranslationType } from '../../localization/defaults/time'\nimport { timeTranslation } from '../../localization/defaults/time'\n\ntype TimeDisplayTranslationType = TimeTranslationType & {\n inDays: string,\n agoDays: string,\n}\n\nconst defaultTimeDisplayTranslations: Translation<TimeDisplayTranslationType> = {\n en: {\n ...timeTranslation.en,\n inDays: `in {{days}} days`,\n agoDays: `{{days}} days ago`,\n },\n de: {\n ...timeTranslation.de,\n inDays: `in {{days}} Tagen`,\n agoDays: `vor {{days}} Tagen`,\n }\n}\n\ntype TimeDisplayMode = 'daysFromToday' | 'date'\n\ntype TimeDisplayProps = {\n date: Date,\n mode?: TimeDisplayMode,\n}\n\n/**\n * A Component for displaying time and dates in a unified fashion\n */\nexport const TimeDisplay = ({\n overwriteTranslation,\n date,\n mode = 'daysFromToday'\n }: PropsForTranslation<TimeDisplayTranslationType, TimeDisplayProps>) => {\n const translation = useTranslation([defaultTimeDisplayTranslations], overwriteTranslation)\n const difference = new Date().setHours(0, 0, 0, 0).valueOf() - new Date(date).setHours(0, 0, 0, 0).valueOf()\n const isBefore = difference > 0\n const differenceInDays = Math.floor(Math.abs(difference) / (1000 * 3600 * 24))\n\n let displayString\n if (differenceInDays === 0) {\n displayString = translation('today')\n } else if (differenceInDays === 1) {\n displayString = isBefore ? translation('yesterday') : translation('tomorrow')\n } else {\n displayString = isBefore ? translation('agoDays', { replacements: { days: differenceInDays.toString() } }) : translation('inDays', { replacements: { days: differenceInDays.toString() } })\n }\n const monthToTranslation: { [key: number]: string } = {\n 0: translation('january'),\n 1: translation('february'),\n 2: translation('march'),\n 3: translation('april'),\n 4: translation('may'),\n 5: translation('june'),\n 6: translation('july'),\n 7: translation('august'),\n 8: translation('september'),\n 9: translation('october'),\n 10: translation('november'),\n 11: translation('december')\n } as const\n\n let fullString\n if (mode === 'daysFromToday') {\n fullString = `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')} - ${displayString}`\n } else {\n fullString = `${date.getDate()}. ${monthToTranslation[date.getMonth()]} ${date.getFullYear()}`\n }\n\n return (\n <span>\n {fullString}\n </span>\n )\n}\n"],"mappings":";AACA,SAAS,eAAe,YAAY,aAAAA,YAAW,YAAAC,iBAAgB;;;ACA/D,SAAS,aAAa,WAAW,gBAAgB;;;ACEjD,IAAM,YAAY,CAAC,MAAM,IAAI;AAU7B,IAAM,sBAAgD;AAAA,EACpD,IAAI;AAAA,EACJ,IAAI;AACN;AAKA,IAAM,mBAA6B;AAK5B,IAAM,eAAe;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AACF;;;AFoCI;AAvDG,IAAM,kBAAkB,cAAoC;AAAA,EACjE,UAAU,aAAa;AAAA,EACvB,aAAa,CAAC,MAAM;AACtB,CAAC;AAEM,IAAM,cAAc,MAAM,WAAW,eAAe;;;AG2CpD,IAAM,iBAAiB,CAC5B,cACA,uBAAoD,CAAC,MAC1B;AAC3B,QAAM,EAAE,UAAU,cAAc,aAAa,UAAU,IAAI;AAC3D,QAAM,EAAE,UAAU,iBAAiB,IAAI,YAAY;AACnD,QAAM,eAAe,gBAAgB;AACrC,QAAM,mBAAmB,CAAC,GAAG,YAAY;AACzC,MAAI,WAAW;AACb,qBAAiB,KAAK,SAAS;AAAA,EACjC;AAEA,SAAO,CAAC,KAAoB,YAAiD;AAC3E,UAAM,EAAE,OAAO,aAAa,IAAI,EAAE,GAAG,EAAE,OAAO,GAAG,cAAc,CAAC,EAAE,GAAG,GAAG,QAAQ;AAEhF,QAAI;AACF,eAAS,IAAI,aAAa,SAAS,GAAG,KAAK,GAAG,KAAK;AACjD,cAAM,cAAc,aAAa,CAAC;AAClC,cAAM,uBAAuB,YAAY,YAAY;AACrD,YAAI,CAAC,sBAAsB;AACzB;AAAA,QACF;AACA,cAAM,QAAQ,qBAAqB,GAAG;AACtC,YAAG,CAAC,OAAO;AACT;AAAA,QACF;AAEA,YAAI;AACJ,YAAI,OAAO,UAAU,UAAU;AAC7B,cAAI,SAAS,KAAK,OAAO,MAAM;AAC7B,4BAAgB,MAAM;AAAA,UACxB,WAAW,UAAU,KAAK,OAAO,KAAK;AACpC,4BAAgB,MAAM;AAAA,UACxB,WAAW,UAAU,KAAK,OAAO,KAAK;AACpC,4BAAgB,MAAM;AAAA,UACxB,WAAW,SAAS,MAAM,OAAO,KAAK;AACpC,4BAAgB,MAAM;AAAA,UACxB,WAAW,QAAQ,MAAM,OAAO,MAAM;AACpC,4BAAgB,MAAM;AAAA,UACxB,OAAO;AACL,4BAAgB,MAAM;AAAA,UACxB;AAAA,QACF,OAAO;AACL,0BAAgB;AAAA,QAClB;AACA,wBAAgB,cAAc,QAAQ,gBAAgB,CAAC,GAAG,gBAAgB;AACxE,iBAAO,aAAa,WAAW,KAAK,KAAK,WAAW;AAAA,QACtD,CAAC;AACD,eAAO;AAAA,MACT;AAAA,IACF,SAAS,GAAG;AACV,cAAQ,MAAM,CAAC;AAAA,IACjB;AACA,WAAO,KAAK,YAAY,IAAI,GAAG;AAAA,EACjC;AACF;;;ACjGO,IAAM,mBAAsD;AAAA,EACjE,IAAI;AAAA,IACF,SAAS;AAAA,IACT,UAAU;AAAA,IACV,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,EACZ;AAAA,EACA,IAAI;AAAA,IACF,SAAS;AAAA,IACT,UAAU;AAAA,IACV,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,SAAS;AAAA,IACT,UAAU;AAAA,IACV,UAAU;AAAA,EACZ;AACF;AAqBO,IAAM,kBAAoD;AAAA,EAC/D,IAAI;AAAA,IACF,GAAG,iBAAiB;AAAA,IACpB,SAAS,EAAE,KAAK,WAAW,OAAO,YAAY;AAAA,IAC9C,QAAQ,EAAE,KAAK,UAAU,OAAO,UAAU;AAAA,IAC1C,MAAM,EAAE,KAAK,QAAQ,OAAO,QAAQ;AAAA,IACpC,OAAO,EAAE,KAAK,SAAS,OAAO,SAAS;AAAA,IACvC,KAAK,EAAE,KAAK,OAAO,OAAO,OAAO;AAAA,IACjC,MAAM,EAAE,KAAK,QAAQ,OAAO,QAAQ;AAAA,IACpC,QAAQ,EAAE,KAAK,UAAU,OAAO,UAAU;AAAA,IAC1C,QAAQ,EAAE,KAAK,UAAU,OAAO,UAAU;AAAA,IAC1C,aAAa,EAAE,KAAK,eAAe,OAAO,eAAe;AAAA,IACzD,aAAa,EAAE,KAAK,eAAe,OAAO,eAAe;AAAA,IACzD,YAAY,EAAE,KAAK,cAAc,OAAO,cAAc;AAAA,IACtD,WAAW;AAAA,IACX,OAAO;AAAA,IACP,UAAU;AAAA,IACV,IAAI;AAAA,IACJ,KAAK;AAAA,EACP;AAAA,EACA,IAAI;AAAA,IACF,GAAG,iBAAiB;AAAA,IACpB,SAAS,EAAE,KAAK,eAAe,OAAO,eAAe;AAAA,IACrD,QAAQ,EAAE,KAAK,aAAa,OAAO,aAAa;AAAA,IAChD,MAAM,EAAE,KAAK,QAAQ,OAAO,QAAQ;AAAA,IACpC,OAAO,EAAE,KAAK,SAAS,OAAO,SAAS;AAAA,IACvC,KAAK,EAAE,KAAK,OAAO,OAAO,OAAO;AAAA,IACjC,MAAM,EAAE,KAAK,UAAU,OAAO,UAAU;AAAA,IACxC,QAAQ,EAAE,KAAK,UAAU,OAAO,UAAU;AAAA,IAC1C,QAAQ,EAAE,KAAK,WAAW,OAAO,WAAW;AAAA,IAC5C,aAAa,EAAE,KAAK,gBAAgB,OAAO,gBAAgB;AAAA,IAC3D,aAAa,EAAE,KAAK,gBAAgB,OAAO,gBAAgB;AAAA,IAC3D,YAAY,EAAE,KAAK,eAAe,OAAO,eAAe;AAAA,IACxD,WAAW;AAAA,IACX,OAAO;AAAA,IACP,UAAU;AAAA,IACV,IAAI;AAAA,IACJ,KAAK;AAAA,EACP;AACF;;;AChCI,gBAAAC,YAAA;AAhEJ,IAAM,iCAA0E;AAAA,EAC9E,IAAI;AAAA,IACF,GAAG,gBAAgB;AAAA,IACnB,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EACA,IAAI;AAAA,IACF,GAAG,gBAAgB;AAAA,IACnB,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AACF;AAYO,IAAM,cAAc,CAAC;AAAA,EACE;AAAA,EACA;AAAA,EACA,OAAO;AACT,MAAyE;AACnG,QAAM,cAAc,eAAe,CAAC,8BAA8B,GAAG,oBAAoB;AACzF,QAAM,cAAa,oBAAI,KAAK,GAAE,SAAS,GAAG,GAAG,GAAG,CAAC,EAAE,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,SAAS,GAAG,GAAG,GAAG,CAAC,EAAE,QAAQ;AAC3G,QAAM,WAAW,aAAa;AAC9B,QAAM,mBAAmB,KAAK,MAAM,KAAK,IAAI,UAAU,KAAK,MAAO,OAAO,GAAG;AAE7E,MAAI;AACJ,MAAI,qBAAqB,GAAG;AAC1B,oBAAgB,YAAY,OAAO;AAAA,EACrC,WAAW,qBAAqB,GAAG;AACjC,oBAAgB,WAAW,YAAY,WAAW,IAAI,YAAY,UAAU;AAAA,EAC9E,OAAO;AACL,oBAAgB,WAAW,YAAY,WAAW,EAAE,cAAc,EAAE,MAAM,iBAAiB,SAAS,EAAE,EAAE,CAAC,IAAI,YAAY,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,SAAS,EAAE,EAAE,CAAC;AAAA,EAC5L;AACA,QAAM,qBAAgD;AAAA,IACpD,GAAG,YAAY,SAAS;AAAA,IACxB,GAAG,YAAY,UAAU;AAAA,IACzB,GAAG,YAAY,OAAO;AAAA,IACtB,GAAG,YAAY,OAAO;AAAA,IACtB,GAAG,YAAY,KAAK;AAAA,IACpB,GAAG,YAAY,MAAM;AAAA,IACrB,GAAG,YAAY,MAAM;AAAA,IACrB,GAAG,YAAY,QAAQ;AAAA,IACvB,GAAG,YAAY,WAAW;AAAA,IAC1B,GAAG,YAAY,SAAS;AAAA,IACxB,IAAI,YAAY,UAAU;AAAA,IAC1B,IAAI,YAAY,UAAU;AAAA,EAC5B;AAEA,MAAI;AACJ,MAAI,SAAS,iBAAiB;AAC5B,iBAAa,GAAG,KAAK,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,SAAS,EAAE,SAAS,GAAG,GAAG,CAAC,MAAM,aAAa;AAAA,EACjI,OAAO;AACL,iBAAa,GAAG,KAAK,QAAQ,CAAC,KAAK,mBAAmB,KAAK,SAAS,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC;AAAA,EAC9F;AAEA,SACE,gBAAAA,KAAC,UACE,sBACH;AAEJ;","names":["useEffect","useState","jsx"]}
|
|
@@ -62,7 +62,7 @@ var range = (start, end, allowEmptyRange = false) => {
|
|
|
62
62
|
};
|
|
63
63
|
|
|
64
64
|
// src/components/date/YearMonthPicker.tsx
|
|
65
|
-
var
|
|
65
|
+
var import_clsx3 = __toESM(require("clsx"));
|
|
66
66
|
|
|
67
67
|
// src/components/layout-and-navigation/Expandable.tsx
|
|
68
68
|
var import_react = require("react");
|
|
@@ -78,8 +78,9 @@ var Expandable = (0, import_react.forwardRef)(function Expandable2({
|
|
|
78
78
|
onChange = noop,
|
|
79
79
|
clickOnlyOnHeader = true,
|
|
80
80
|
disabled = false,
|
|
81
|
-
className
|
|
82
|
-
headerClassName
|
|
81
|
+
className,
|
|
82
|
+
headerClassName,
|
|
83
|
+
contentClassName
|
|
83
84
|
}, ref) {
|
|
84
85
|
icon ??= DefaultIcon;
|
|
85
86
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
@@ -108,7 +109,7 @@ var Expandable = (0, import_react.forwardRef)(function Expandable2({
|
|
|
108
109
|
]
|
|
109
110
|
}
|
|
110
111
|
),
|
|
111
|
-
isExpanded && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "col px-4 pb-2", children })
|
|
112
|
+
isExpanded && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: (0, import_clsx.default)("col px-4 pb-2", contentClassName), children })
|
|
112
113
|
]
|
|
113
114
|
}
|
|
114
115
|
);
|
|
@@ -229,8 +230,95 @@ var useLocale = (overWriteLanguage) => {
|
|
|
229
230
|
return mapping[overWriteLanguage ?? language];
|
|
230
231
|
};
|
|
231
232
|
|
|
232
|
-
// src/components/
|
|
233
|
+
// src/components/user-action/Button.tsx
|
|
234
|
+
var import_clsx2 = __toESM(require("clsx"));
|
|
233
235
|
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
236
|
+
var paddingMapping = {
|
|
237
|
+
small: "btn-sm",
|
|
238
|
+
medium: "btn-md",
|
|
239
|
+
large: "btn-lg"
|
|
240
|
+
};
|
|
241
|
+
var iconPaddingMapping = {
|
|
242
|
+
small: "icon-btn-sm",
|
|
243
|
+
medium: "icon-btn-md",
|
|
244
|
+
large: "icon-btn-lg"
|
|
245
|
+
};
|
|
246
|
+
var ButtonUtil = {
|
|
247
|
+
paddingMapping,
|
|
248
|
+
iconPaddingMapping
|
|
249
|
+
};
|
|
250
|
+
var SolidButton = ({
|
|
251
|
+
children,
|
|
252
|
+
disabled = false,
|
|
253
|
+
color = "primary",
|
|
254
|
+
size = "medium",
|
|
255
|
+
startIcon,
|
|
256
|
+
endIcon,
|
|
257
|
+
onClick,
|
|
258
|
+
className,
|
|
259
|
+
...restProps
|
|
260
|
+
}) => {
|
|
261
|
+
const colorClasses = {
|
|
262
|
+
primary: "bg-button-solid-primary-background text-button-solid-primary-text",
|
|
263
|
+
secondary: "bg-button-solid-secondary-background text-button-solid-secondary-text",
|
|
264
|
+
tertiary: "bg-button-solid-tertiary-background text-button-solid-tertiary-text",
|
|
265
|
+
positive: "bg-button-solid-positive-background text-button-solid-positive-text",
|
|
266
|
+
warning: "bg-button-solid-warning-background text-button-solid-warning-text",
|
|
267
|
+
negative: "bg-button-solid-negative-background text-button-solid-negative-text",
|
|
268
|
+
neutral: "bg-button-solid-neutral-background text-button-solid-neutral-text"
|
|
269
|
+
}[color];
|
|
270
|
+
const iconColorClasses = {
|
|
271
|
+
primary: "text-button-solid-primary-icon",
|
|
272
|
+
secondary: "text-button-solid-secondary-icon",
|
|
273
|
+
tertiary: "text-button-solid-tertiary-icon",
|
|
274
|
+
positive: "text-button-solid-positive-icon",
|
|
275
|
+
warning: "text-button-solid-warning-icon",
|
|
276
|
+
negative: "text-button-solid-negative-icon",
|
|
277
|
+
neutral: "text-button-solid-neutral-icon"
|
|
278
|
+
}[color];
|
|
279
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
280
|
+
"button",
|
|
281
|
+
{
|
|
282
|
+
onClick: disabled ? void 0 : onClick,
|
|
283
|
+
disabled: disabled || onClick === void 0,
|
|
284
|
+
className: (0, import_clsx2.default)(
|
|
285
|
+
{
|
|
286
|
+
"text-disabled-text bg-disabled-background cursor-not-allowed": disabled,
|
|
287
|
+
[(0, import_clsx2.default)(colorClasses, "hover:brightness-90")]: !disabled
|
|
288
|
+
},
|
|
289
|
+
ButtonUtil.paddingMapping[size],
|
|
290
|
+
className
|
|
291
|
+
),
|
|
292
|
+
...restProps,
|
|
293
|
+
children: [
|
|
294
|
+
startIcon && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
295
|
+
"span",
|
|
296
|
+
{
|
|
297
|
+
className: (0, import_clsx2.default)({
|
|
298
|
+
[iconColorClasses]: !disabled,
|
|
299
|
+
[`text-disabled-icon`]: disabled
|
|
300
|
+
}),
|
|
301
|
+
children: startIcon
|
|
302
|
+
}
|
|
303
|
+
),
|
|
304
|
+
children,
|
|
305
|
+
endIcon && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
306
|
+
"span",
|
|
307
|
+
{
|
|
308
|
+
className: (0, import_clsx2.default)({
|
|
309
|
+
[iconColorClasses]: !disabled,
|
|
310
|
+
[`text-disabled-icon`]: disabled
|
|
311
|
+
}),
|
|
312
|
+
children: endIcon
|
|
313
|
+
}
|
|
314
|
+
)
|
|
315
|
+
]
|
|
316
|
+
}
|
|
317
|
+
);
|
|
318
|
+
};
|
|
319
|
+
|
|
320
|
+
// src/components/date/YearMonthPicker.tsx
|
|
321
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
234
322
|
var YearMonthPicker = ({
|
|
235
323
|
displayedYearMonth = /* @__PURE__ */ new Date(),
|
|
236
324
|
start = subtractDuration(/* @__PURE__ */ new Date(), { years: 50 }),
|
|
@@ -258,15 +346,16 @@ var YearMonthPicker = ({
|
|
|
258
346
|
return null;
|
|
259
347
|
}
|
|
260
348
|
const years = range(start.getFullYear(), end.getFullYear());
|
|
261
|
-
return /* @__PURE__ */ (0,
|
|
349
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: (0, import_clsx3.default)("col select-none", className), children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_custom_scrollbars_2.Scrollbars, { autoHeight: true, autoHeightMax: maxHeight, style: { height: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "col gap-y-1 mr-3", children: years.map((year) => {
|
|
262
350
|
const selectedYear = displayedYearMonth.getFullYear() === year;
|
|
263
|
-
return /* @__PURE__ */ (0,
|
|
351
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
264
352
|
ExpandableUncontrolled,
|
|
265
353
|
{
|
|
266
354
|
ref: (displayedYearMonth.getFullYear() ?? (/* @__PURE__ */ new Date()).getFullYear()) === year ? ref : void 0,
|
|
267
|
-
label: /* @__PURE__ */ (0,
|
|
355
|
+
label: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: (0, import_clsx3.default)({ "text-primary font-bold": selectedYear }), children: year }),
|
|
268
356
|
isExpanded: showValueOpen && selectedYear,
|
|
269
|
-
|
|
357
|
+
contentClassName: "gap-y-1",
|
|
358
|
+
children: equalSizeGroups([...monthsList], 3).map((monthList, index) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "row gap-x-1", children: monthList.map((month) => {
|
|
270
359
|
const monthIndex = monthsList.indexOf(month);
|
|
271
360
|
const newDate = new Date(year, monthIndex);
|
|
272
361
|
const selectedMonth = selectedYear && monthIndex === displayedYearMonth.getMonth();
|
|
@@ -275,18 +364,13 @@ var YearMonthPicker = ({
|
|
|
275
364
|
const isAfterStart = start === void 0 || start <= addDuration(subtractDuration(lastOfMonth, { days: 1 }), { months: 1 });
|
|
276
365
|
const isBeforeEnd = end === void 0 || firstOfMonth <= end;
|
|
277
366
|
const isValid = isAfterStart && isBeforeEnd;
|
|
278
|
-
return /* @__PURE__ */ (0,
|
|
279
|
-
|
|
367
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
368
|
+
SolidButton,
|
|
280
369
|
{
|
|
281
370
|
disabled: !isValid,
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
"bg-gray-50 text-black": !selectedMonth && isValid,
|
|
286
|
-
"bg-primary text-on-primary": selectedMonth && isValid,
|
|
287
|
-
"bg-disabled-background text-disabled-text": !isValid
|
|
288
|
-
}
|
|
289
|
-
),
|
|
371
|
+
color: selectedMonth && isValid ? "primary" : "neutral",
|
|
372
|
+
className: "flex-1",
|
|
373
|
+
size: "small",
|
|
290
374
|
onClick: () => {
|
|
291
375
|
onChange(newDate);
|
|
292
376
|
},
|
|
@@ -301,13 +385,13 @@ var YearMonthPicker = ({
|
|
|
301
385
|
}) }) }) });
|
|
302
386
|
};
|
|
303
387
|
var YearMonthPickerUncontrolled = ({
|
|
304
|
-
displayedYearMonth
|
|
388
|
+
displayedYearMonth,
|
|
305
389
|
onChange = noop,
|
|
306
390
|
...props
|
|
307
391
|
}) => {
|
|
308
|
-
const [yearMonth, setYearMonth] = (0, import_react4.useState)(displayedYearMonth);
|
|
392
|
+
const [yearMonth, setYearMonth] = (0, import_react4.useState)(displayedYearMonth ?? /* @__PURE__ */ new Date());
|
|
309
393
|
(0, import_react4.useEffect)(() => setYearMonth(displayedYearMonth), [displayedYearMonth]);
|
|
310
|
-
return /* @__PURE__ */ (0,
|
|
394
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
311
395
|
YearMonthPicker,
|
|
312
396
|
{
|
|
313
397
|
displayedYearMonth: yearMonth,
|