@odx/foundation 1.0.0-alpha.6 → 1.0.0-alpha.7
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/README.md +7 -7
- package/dist/cdk.js +345 -0
- package/dist/components/accordion/accordion-header.component.d.ts +1 -1
- package/dist/components/button/base-button.d.ts +1 -1
- package/dist/components/button/button.component.d.ts +1 -1
- package/dist/components/button-group/button-group.component.d.ts +1 -1
- package/dist/components/card/card.component.d.ts +1 -1
- package/dist/components/chip/chip.component.d.ts +1 -1
- package/dist/components/dropdown/dropdown.component.d.ts +2 -2
- package/dist/components/format/format-date.component.d.ts +1 -1
- package/dist/components/format/format-number.component.d.ts +1 -1
- package/dist/components/format/format.component.d.ts +2 -2
- package/dist/components/format/relative-time.component.d.ts +1 -1
- package/dist/components/input/input.component.d.ts +1 -1
- package/dist/components/link/base-link.d.ts +1 -1
- package/dist/components/loading-overlay/loading-overlay.component.d.ts +1 -1
- package/dist/components/menu/menu.component.d.ts +2 -2
- package/dist/components/slider/slider-handle.component.d.ts +2 -2
- package/dist/components/slider/slider.component.d.ts +1 -1
- package/dist/components/spinbox/spinbox.component.d.ts +1 -1
- package/dist/components/tooltip/tooltip.element.d.ts +2 -2
- package/dist/components.js +4284 -0
- package/dist/i18n/lib/translate.d.ts +5 -1
- package/dist/i18n.js +140 -0
- package/dist/main.js +1448 -0
- package/dist/vendor.js +3660 -0
- package/package.json +13 -22
- package/dist/cdk/drag-drop/drag.controller.js +0 -90
- package/dist/cdk/drag-drop/is-draggable.js +0 -42
- package/dist/cdk/main.js +0 -5
- package/dist/cdk/popover/popover-host.mixin.css.js +0 -3
- package/dist/cdk/popover/popover-host.mixin.js +0 -115
- package/dist/cdk/popover/popover.component.css.js +0 -3
- package/dist/cdk/popover/popover.component.js +0 -38
- package/dist/cdk/popover/popover.models.js +0 -32
- package/dist/cdk/popover/popover.utils.js +0 -48
- package/dist/components/accordion/accordion-header.component.css.js +0 -3
- package/dist/components/accordion/accordion-header.component.js +0 -69
- package/dist/components/accordion/accordion-panel.component.css.js +0 -3
- package/dist/components/accordion/accordion-panel.component.js +0 -29
- package/dist/components/accordion/accordion.component.css.js +0 -3
- package/dist/components/accordion/accordion.component.js +0 -83
- package/dist/components/area-header/area-header.component.css.js +0 -3
- package/dist/components/area-header/area-header.component.js +0 -37
- package/dist/components/area-header/area-header.models.js +0 -11
- package/dist/components/avatar/avatar.component.css.js +0 -3
- package/dist/components/avatar/avatar.component.js +0 -31
- package/dist/components/avatar/avatar.models.js +0 -12
- package/dist/components/avatar-group/avatar-group.component.css.js +0 -3
- package/dist/components/avatar-group/avatar-group.component.js +0 -31
- package/dist/components/badge/badge.component.css.js +0 -3
- package/dist/components/badge/badge.component.js +0 -32
- package/dist/components/badge/badge.models.js +0 -10
- package/dist/components/breadcrumbs/breadcrumbs-item.component.css.js +0 -3
- package/dist/components/breadcrumbs/breadcrumbs-item.component.js +0 -56
- package/dist/components/breadcrumbs/breadcrumbs.component.css.js +0 -3
- package/dist/components/breadcrumbs/breadcrumbs.component.js +0 -88
- package/dist/components/button/base-button.css.js +0 -3
- package/dist/components/button/base-button.js +0 -72
- package/dist/components/button/button.component.css.js +0 -3
- package/dist/components/button/button.component.js +0 -66
- package/dist/components/button/button.models.js +0 -16
- package/dist/components/button-group/button-group.component.css.js +0 -3
- package/dist/components/button-group/button-group.component.js +0 -47
- package/dist/components/card/card.component.css.js +0 -3
- package/dist/components/card/card.component.js +0 -30
- package/dist/components/checkbox/checkbox.component.css.js +0 -3
- package/dist/components/checkbox/checkbox.component.js +0 -57
- package/dist/components/checkbox-group/checkbox-group.component.css.js +0 -3
- package/dist/components/checkbox-group/checkbox-group.component.js +0 -54
- package/dist/components/checkbox-group/checkbox-group.models.js +0 -5
- package/dist/components/chip/chip.component.css.js +0 -3
- package/dist/components/chip/chip.component.js +0 -94
- package/dist/components/chip/chip.models.js +0 -10
- package/dist/components/circular-progress-bar/circular-progress-bar.component.css.js +0 -3
- package/dist/components/circular-progress-bar/circular-progress-bar.component.js +0 -123
- package/dist/components/circular-progress-bar/circular-progress-bar.models.js +0 -7
- package/dist/components/content-box/content-box.component.css.js +0 -3
- package/dist/components/content-box/content-box.component.js +0 -26
- package/dist/components/dropdown/dropdown.component.css.js +0 -3
- package/dist/components/dropdown/dropdown.component.js +0 -121
- package/dist/components/dropdown/dropdown.models.js +0 -8
- package/dist/components/form-field/form-field.element.css.js +0 -3
- package/dist/components/form-field/form-field.element.js +0 -62
- package/dist/components/format/format-bytes.component.js +0 -46
- package/dist/components/format/format-date.component.js +0 -36
- package/dist/components/format/format-number.component.js +0 -59
- package/dist/components/format/format.component.js +0 -34
- package/dist/components/format/relative-time.component.js +0 -80
- package/dist/components/header/header-actions.component.css.js +0 -3
- package/dist/components/header/header-actions.component.js +0 -22
- package/dist/components/header/header.component.css.js +0 -3
- package/dist/components/header/header.component.js +0 -58
- package/dist/components/headline/headline.component.css.js +0 -3
- package/dist/components/headline/headline.component.js +0 -31
- package/dist/components/headline/headline.models.js +0 -8
- package/dist/components/icon-button/icon-button.component.js +0 -34
- package/dist/components/inline-message/inline-message.component.css.js +0 -3
- package/dist/components/inline-message/inline-message.component.js +0 -39
- package/dist/components/inline-message/inline-message.models.js +0 -9
- package/dist/components/input/input.component.css.js +0 -3
- package/dist/components/input/input.component.js +0 -72
- package/dist/components/input/input.models.js +0 -7
- package/dist/components/line-clamp/line-clamp.component.css.js +0 -3
- package/dist/components/line-clamp/line-clamp.component.js +0 -37
- package/dist/components/link/base-link.js +0 -70
- package/dist/components/link/link.component.css.js +0 -3
- package/dist/components/link/link.component.js +0 -33
- package/dist/components/list/list-item.component.css.js +0 -3
- package/dist/components/list/list-item.component.js +0 -33
- package/dist/components/list/list.component.css.js +0 -3
- package/dist/components/list/list.component.js +0 -25
- package/dist/components/loading-overlay/loading-overlay.component.css.js +0 -3
- package/dist/components/loading-overlay/loading-overlay.component.js +0 -78
- package/dist/components/loading-spinner/loading-spinner.component.css.js +0 -3
- package/dist/components/loading-spinner/loading-spinner.component.js +0 -58
- package/dist/components/logo/logo.component.css.js +0 -3
- package/dist/components/logo/logo.component.js +0 -38
- package/dist/components/logo/logo.models.js +0 -9
- package/dist/components/main-menu/main-menu-button.component.js +0 -38
- package/dist/components/main-menu/main-menu-link.component.css.js +0 -3
- package/dist/components/main-menu/main-menu-link.component.js +0 -20
- package/dist/components/main-menu/main-menu-subtitle.component.js +0 -29
- package/dist/components/main-menu/main-menu-title.component.js +0 -29
- package/dist/components/main-menu/main-menu.component.css.js +0 -3
- package/dist/components/main-menu/main-menu.component.js +0 -82
- package/dist/components/main.js +0 -102
- package/dist/components/menu/menu-label.component.css.js +0 -3
- package/dist/components/menu/menu-label.component.js +0 -18
- package/dist/components/menu/menu.component.css.js +0 -3
- package/dist/components/menu/menu.component.js +0 -111
- package/dist/components/menu-item/menu-item.component.css.js +0 -3
- package/dist/components/menu-item/menu-item.component.js +0 -45
- package/dist/components/navigation-item/navigation-item.component.css.js +0 -3
- package/dist/components/navigation-item/navigation-item.component.js +0 -43
- package/dist/components/navigation-item/navigation-item.models.js +0 -6
- package/dist/components/option/option.component.css.js +0 -3
- package/dist/components/option/option.component.js +0 -37
- package/dist/components/page/page.component.css.js +0 -3
- package/dist/components/page/page.component.js +0 -53
- package/dist/components/page/page.models.js +0 -9
- package/dist/components/page-layout/page-layout.component.css.js +0 -3
- package/dist/components/page-layout/page-layout.component.js +0 -28
- package/dist/components/progress-bar/progress-bar.component.css.js +0 -3
- package/dist/components/progress-bar/progress-bar.component.js +0 -89
- package/dist/components/progress-bar/progress-bar.models.js +0 -7
- package/dist/components/radio-button/radio-button.component.css.js +0 -3
- package/dist/components/radio-button/radio-button.component.js +0 -39
- package/dist/components/radio-group/radio-group.component.css.js +0 -3
- package/dist/components/radio-group/radio-group.component.js +0 -24
- package/dist/components/radio-group/radio-group.models.js +0 -5
- package/dist/components/rail-navigation/rail-navigation.component.css.js +0 -3
- package/dist/components/rail-navigation/rail-navigation.component.js +0 -65
- package/dist/components/search-bar/search-bar.component.css.js +0 -3
- package/dist/components/search-bar/search-bar.component.js +0 -100
- package/dist/components/search-bar/search-bar.events.js +0 -7
- package/dist/components/search-bar/search-bar.models.js +0 -6
- package/dist/components/select/select.component.css.js +0 -3
- package/dist/components/select/select.component.js +0 -101
- package/dist/components/separator/separator.component.css.js +0 -3
- package/dist/components/separator/separator.component.js +0 -49
- package/dist/components/skeleton/skeleton.component.css.js +0 -3
- package/dist/components/skeleton/skeleton.component.js +0 -32
- package/dist/components/slider/slider-handle.component.css.js +0 -3
- package/dist/components/slider/slider-handle.component.js +0 -168
- package/dist/components/slider/slider-marks.component.css.js +0 -3
- package/dist/components/slider/slider-marks.component.js +0 -61
- package/dist/components/slider/slider.component.css.js +0 -3
- package/dist/components/slider/slider.component.js +0 -119
- package/dist/components/slider/slider.models.js +0 -17
- package/dist/components/spacer/spacer.component.css.js +0 -3
- package/dist/components/spacer/spacer.component.js +0 -39
- package/dist/components/spinbox/spinbox.component.css.js +0 -3
- package/dist/components/spinbox/spinbox.component.js +0 -94
- package/dist/components/stack/stack.component.css.js +0 -3
- package/dist/components/stack/stack.component.js +0 -45
- package/dist/components/stack/stack.models.js +0 -23
- package/dist/components/switch/switch.component.css.js +0 -3
- package/dist/components/switch/switch.component.js +0 -36
- package/dist/components/table/table-body.element.css.js +0 -3
- package/dist/components/table/table-body.element.js +0 -26
- package/dist/components/table/table-cell.element.css.js +0 -3
- package/dist/components/table/table-cell.element.js +0 -26
- package/dist/components/table/table-checkbox-cell.element.css.js +0 -3
- package/dist/components/table/table-checkbox-cell.element.js +0 -66
- package/dist/components/table/table-header-cell.element.css.js +0 -3
- package/dist/components/table/table-header-cell.element.js +0 -40
- package/dist/components/table/table-header.element.css.js +0 -3
- package/dist/components/table/table-header.element.js +0 -52
- package/dist/components/table/table-row.element.css.js +0 -3
- package/dist/components/table/table-row.element.js +0 -111
- package/dist/components/table/table.element.css.js +0 -3
- package/dist/components/table/table.element.js +0 -97
- package/dist/components/text/text.component.css.js +0 -3
- package/dist/components/text/text.component.js +0 -34
- package/dist/components/text/text.models.js +0 -13
- package/dist/components/title/title.component.css.js +0 -3
- package/dist/components/title/title.component.js +0 -31
- package/dist/components/title/title.models.js +0 -10
- package/dist/components/toast/toast.element.css.js +0 -3
- package/dist/components/toast/toast.element.js +0 -31
- package/dist/components/toast/toast.models.js +0 -5
- package/dist/components/toggle-button/toggle-button.component.css.js +0 -3
- package/dist/components/toggle-button/toggle-button.component.js +0 -52
- package/dist/components/tooltip/tooltip.element.css.js +0 -3
- package/dist/components/tooltip/tooltip.element.js +0 -120
- package/dist/components/tooltip/tooltip.models.js +0 -10
- package/dist/components/visually-hidden/visually-hidden.component.css.js +0 -3
- package/dist/components/visually-hidden/visually-hidden.component.js +0 -22
- package/dist/i18n/lib/config.js +0 -16
- package/dist/i18n/lib/format.js +0 -55
- package/dist/i18n/lib/is-localized.mixin.js +0 -41
- package/dist/i18n/lib/localization.js +0 -28
- package/dist/i18n/lib/translate.js +0 -18
- package/dist/i18n/main.js +0 -5
- package/dist/lib/controllers/focus-trap.controller.js +0 -55
- package/dist/lib/custom-element.css.js +0 -3
- package/dist/lib/custom-element.js +0 -27
- package/dist/lib/decorators/request-update-on-aria-change.js +0 -15
- package/dist/lib/directives/aria-boolean-attr.js +0 -9
- package/dist/lib/directives/optional-attr.js +0 -8
- package/dist/lib/directives/optional-slot.js +0 -14
- package/dist/lib/directives/slot-fallback.js +0 -16
- package/dist/lib/external/roving-tabindex.js +0 -386
- package/dist/lib/facade/checkbox-form-control.js +0 -78
- package/dist/lib/facade/checkbox-group-form-control.js +0 -109
- package/dist/lib/facade/option-control.js +0 -49
- package/dist/lib/facade/radio-group-form-control.js +0 -87
- package/dist/lib/facade/select-form-control.js +0 -108
- package/dist/lib/main.js +0 -30
- package/dist/lib/mixins/can-be-disabled.js +0 -60
- package/dist/lib/mixins/can-be-readonly.js +0 -33
- package/dist/lib/mixins/can-be-required.js +0 -33
- package/dist/lib/mixins/can-be-validated.js +0 -32
- package/dist/lib/mixins/dedupe-mixin.js +0 -23
- package/dist/lib/mixins/form-control.js +0 -61
- package/dist/lib/mixins/number-control.js +0 -63
- package/dist/lib/mixins/with-aria-controls.js +0 -43
- package/dist/lib/mixins/with-loading-state.js +0 -33
- package/dist/lib/utils/date.js +0 -10
- package/dist/lib/utils/dom.js +0 -48
- package/dist/lib/utils/get-unique-id.js +0 -15
- package/dist/lib/utils/keyboard-events.js +0 -42
- package/dist/lib/utils/object.js +0 -7
- package/dist/lib/utils/shared-intersection-observer.js +0 -37
- package/dist/lib/utils/shared-resize-observer.js +0 -38
- package/dist/lib/utils/string.js +0 -7
- /package/dist/{lib/main.css → styles.css} +0 -0
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { Signal } from '@lit-labs/signals';
|
|
2
2
|
import { Locale } from './models.js';
|
|
3
|
-
|
|
3
|
+
type Translation = {
|
|
4
|
+
[key: string]: Translation | string;
|
|
5
|
+
};
|
|
6
|
+
export declare function setTranslation(locale: Locale, translation: Translation): void;
|
|
4
7
|
export declare function translate(key: string, context?: Record<string, string | number> | null, locale?: Locale | null): Signal.Computed<string>;
|
|
8
|
+
export {};
|
|
5
9
|
//# sourceMappingURL=translate.d.ts.map
|
package/dist/i18n.js
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { signal, SignalWatcher, computed } from '@lit-labs/signals';
|
|
2
|
+
import { createOptions, parseDate, createMutationObserver, dedupeMixin, interpolate } from '@odx/foundation';
|
|
3
|
+
import { property } from 'lit/decorators.js';
|
|
4
|
+
import { k as flattenObject } from './vendor.js';
|
|
5
|
+
|
|
6
|
+
const I18nOptions = createOptions({
|
|
7
|
+
defaultLocale: () => navigator.language,
|
|
8
|
+
relativeTimeFormatOptions: { minUnit: "minute" }
|
|
9
|
+
});
|
|
10
|
+
const i18nOptions = signal(null);
|
|
11
|
+
function setI18nOptions(options) {
|
|
12
|
+
i18nOptions.set(getI18nOptions(options));
|
|
13
|
+
}
|
|
14
|
+
function getI18nOptions(options) {
|
|
15
|
+
return I18nOptions(options ?? i18nOptions.get() ?? {});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function formatDate(input, options) {
|
|
19
|
+
const value = parseDate(input);
|
|
20
|
+
if (!value) return "";
|
|
21
|
+
const { dateTimeFormatOptions } = getI18nOptions({ dateTimeFormatOptions: options });
|
|
22
|
+
if (dateTimeFormatOptions?.dateStyle === "iso8601") {
|
|
23
|
+
return new Intl.DateTimeFormat("sv-SE", { dateStyle: "short" }).format(value);
|
|
24
|
+
}
|
|
25
|
+
return new Intl.DateTimeFormat(options?.locale, dateTimeFormatOptions).format(value);
|
|
26
|
+
}
|
|
27
|
+
function formatNumber(input, options) {
|
|
28
|
+
const value = Number(input);
|
|
29
|
+
if (Number.isNaN(value)) return "";
|
|
30
|
+
const { numberFormatOptions } = getI18nOptions({ numberFormatOptions: options });
|
|
31
|
+
if (numberFormatOptions?.currency) {
|
|
32
|
+
numberFormatOptions.style = "currency";
|
|
33
|
+
}
|
|
34
|
+
return new Intl.NumberFormat(numberFormatOptions?.locale, numberFormatOptions).format(value);
|
|
35
|
+
}
|
|
36
|
+
function formatList(input, options) {
|
|
37
|
+
if (input.length === 0) return "";
|
|
38
|
+
const { listFormatOptions } = getI18nOptions({ listFormatOptions: options });
|
|
39
|
+
return new Intl.ListFormat(options?.locale, listFormatOptions).format(input);
|
|
40
|
+
}
|
|
41
|
+
const TIME_UNITS = [
|
|
42
|
+
{ max: 59e3, value: 1e3, unit: "second" },
|
|
43
|
+
// max 59 seconds
|
|
44
|
+
{ max: 276e4, value: 6e4, unit: "minute" },
|
|
45
|
+
// max 46 minutes
|
|
46
|
+
{ max: 72e6, value: 36e5, unit: "hour" },
|
|
47
|
+
// max 20 hours
|
|
48
|
+
{ max: 5184e5, value: 864e5, unit: "day" },
|
|
49
|
+
// max 6 days
|
|
50
|
+
{ max: 24192e5, value: 6048e5, unit: "week" },
|
|
51
|
+
// max 28 days
|
|
52
|
+
{ max: 28512e6, value: 2592e6, unit: "month" },
|
|
53
|
+
// max 11 months
|
|
54
|
+
{ max: Number.POSITIVE_INFINITY, value: 31536e6, unit: "year" }
|
|
55
|
+
];
|
|
56
|
+
function findTimeUnit(value, minUnit) {
|
|
57
|
+
const minTimeUnit = TIME_UNITS.find(({ unit }) => unit === minUnit) ?? TIME_UNITS[0];
|
|
58
|
+
return TIME_UNITS.find((config) => value < config.max && config.value >= minTimeUnit.value);
|
|
59
|
+
}
|
|
60
|
+
function formatRelativeTime(input, options) {
|
|
61
|
+
const value = parseDate(input);
|
|
62
|
+
if (!value) return "";
|
|
63
|
+
const { relativeTimeFormatOptions } = getI18nOptions({ relativeTimeFormatOptions: options });
|
|
64
|
+
const relativeTime = value.getTime() - (/* @__PURE__ */ new Date()).getTime();
|
|
65
|
+
const timeUnit = findTimeUnit(Math.abs(relativeTime), relativeTimeFormatOptions?.minUnit);
|
|
66
|
+
return new Intl.RelativeTimeFormat(options?.locale, relativeTimeFormatOptions).format(Math.round(relativeTime / timeUnit.value), timeUnit.unit);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const activeLocale = signal(null, { equals: (t, t2) => t?.toString() === t2?.toString() });
|
|
70
|
+
function watchLocaleChanges(root = document.documentElement) {
|
|
71
|
+
const updateLocale = () => activeLocale.set(getLocale(root.lang));
|
|
72
|
+
const observer = createMutationObserver(updateLocale);
|
|
73
|
+
observer.observe(root, { attributes: true, attributeFilter: ["lang"] });
|
|
74
|
+
updateLocale();
|
|
75
|
+
}
|
|
76
|
+
function setLocale(locale) {
|
|
77
|
+
if (locale === null) {
|
|
78
|
+
document.documentElement.lang = getI18nOptions().defaultLocale().toString();
|
|
79
|
+
} else {
|
|
80
|
+
document.documentElement.lang = getLocale(locale).toString();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function getLocale(locale) {
|
|
84
|
+
const fallbackLocale = activeLocale.get() || getI18nOptions().defaultLocale();
|
|
85
|
+
try {
|
|
86
|
+
return new Intl.Locale(locale || fallbackLocale);
|
|
87
|
+
} catch {
|
|
88
|
+
return new Intl.Locale(fallbackLocale);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
var __defProp = Object.defineProperty;
|
|
93
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
94
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
95
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
96
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
97
|
+
if (decorator = decorators[i])
|
|
98
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
99
|
+
if (kind && result) __defProp(target, key, result);
|
|
100
|
+
return result;
|
|
101
|
+
};
|
|
102
|
+
const IsLocalized = dedupeMixin((superClass) => {
|
|
103
|
+
class IsLocalizedElement extends SignalWatcher(superClass) {
|
|
104
|
+
constructor() {
|
|
105
|
+
super(...arguments);
|
|
106
|
+
this.locale = computed(() => getLocale(this.lang));
|
|
107
|
+
}
|
|
108
|
+
formatDate(...[input, options]) {
|
|
109
|
+
return formatDate(input, { ...options, locale: options?.locale ?? this.locale.get() });
|
|
110
|
+
}
|
|
111
|
+
formatNumber(...[input, options]) {
|
|
112
|
+
return formatNumber(input, { ...options, locale: options?.locale ?? this.locale.get() });
|
|
113
|
+
}
|
|
114
|
+
formatList(...[input, options]) {
|
|
115
|
+
return formatList(input, { ...options, locale: options?.locale ?? this.locale.get() });
|
|
116
|
+
}
|
|
117
|
+
formatRelativeTime(...[input, options]) {
|
|
118
|
+
return formatRelativeTime(input, { ...options, locale: options?.locale ?? this.locale.get() });
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
__decorateClass([
|
|
122
|
+
property()
|
|
123
|
+
], IsLocalizedElement.prototype, "lang", 2);
|
|
124
|
+
return IsLocalizedElement;
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
const translations = signal({});
|
|
128
|
+
function setTranslation(locale, translation) {
|
|
129
|
+
const { language } = getLocale(locale);
|
|
130
|
+
translations.set({ ...translations.get(), [language]: { ...translations.get()[language], ...flattenObject(translation, { delimiter: "." }) } });
|
|
131
|
+
}
|
|
132
|
+
function translate(key, context, locale) {
|
|
133
|
+
return computed(() => {
|
|
134
|
+
const translation = translations.get()[getLocale(locale).language];
|
|
135
|
+
if (typeof translation?.[key] !== "string") return key;
|
|
136
|
+
return interpolate(translation[key], { ...translation, ...context });
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export { IsLocalized, formatDate, formatList, formatNumber, formatRelativeTime, getI18nOptions, getLocale, setI18nOptions, setLocale, setTranslation, translate, watchLocaleChanges };
|