@odx/foundation 1.0.0-alpha.9 → 1.0.0-beta.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.
- package/README.md +27 -23
- package/dist/cdk/drag-drop/is-draggable.d.ts +1 -1
- package/dist/cdk/main.d.ts +2 -2
- package/dist/cdk/popover/{popover-host.mixin.d.ts → popover-host.d.ts} +4 -3
- package/dist/cdk/popover/popover.d.ts +12 -0
- package/dist/cdk.js +23 -12
- package/dist/components/accordion/accordion-header.d.ts +18 -0
- package/dist/components/accordion/accordion-panel.d.ts +12 -0
- package/dist/components/accordion/accordion.d.ts +17 -0
- package/dist/components/accordion/index.d.ts +3 -3
- package/dist/components/action-group/action-group.d.ts +24 -0
- package/dist/components/action-group/index.d.ts +2 -0
- package/dist/components/anchor-navigation/anchor-navigation.d.ts +21 -0
- package/dist/components/anchor-navigation/anchor-observer.d.ts +11 -0
- package/dist/components/anchor-navigation/index.d.ts +3 -0
- package/dist/components/area-header/{area-header.component.d.ts → area-header.d.ts} +4 -4
- package/dist/components/area-header/index.d.ts +1 -1
- package/dist/components/avatar/{avatar.component.d.ts → avatar.d.ts} +4 -4
- package/dist/components/avatar/index.d.ts +1 -1
- package/dist/components/avatar-group/avatar-group.d.ts +14 -0
- package/dist/components/avatar-group/index.d.ts +1 -1
- package/dist/components/badge/{badge.component.d.ts → badge.d.ts} +6 -4
- package/dist/components/badge/badge.models.d.ts +4 -0
- package/dist/components/badge/index.d.ts +1 -1
- package/dist/components/breadcrumbs/breadcrumbs-item.d.ts +17 -0
- package/dist/components/breadcrumbs/{breadcrumbs.component.d.ts → breadcrumbs.d.ts} +4 -4
- package/dist/components/breadcrumbs/index.d.ts +2 -2
- package/dist/components/button/base-button.d.ts +6 -4
- package/dist/components/button/{button.component.d.ts → button.d.ts} +8 -5
- package/dist/components/button/index.d.ts +1 -1
- package/dist/components/button-group/button-group.d.ts +21 -0
- package/dist/components/button-group/index.d.ts +1 -1
- package/dist/components/card/card.d.ts +13 -0
- package/dist/components/card/index.d.ts +1 -1
- package/dist/components/checkbox/{checkbox.component.d.ts → checkbox.d.ts} +4 -4
- package/dist/components/checkbox/index.d.ts +1 -1
- package/dist/components/checkbox-group/{checkbox-group.component.d.ts → checkbox-group.d.ts} +4 -4
- package/dist/components/checkbox-group/checkbox-group.models.d.ts +1 -0
- package/dist/components/checkbox-group/index.d.ts +1 -1
- package/dist/components/chip/{chip.component.d.ts → chip.d.ts} +5 -5
- package/dist/components/chip/index.d.ts +1 -1
- package/dist/components/circular-progress-bar/{circular-progress-bar.component.d.ts → circular-progress-bar.d.ts} +4 -4
- package/dist/components/circular-progress-bar/index.d.ts +1 -1
- package/dist/components/content-box/content-box.d.ts +11 -0
- package/dist/components/content-box/index.d.ts +1 -1
- package/dist/components/dropdown/dropdown.d.ts +24 -0
- package/dist/components/dropdown/index.d.ts +1 -1
- package/dist/components/form-field/{form-field.element.d.ts → form-field.d.ts} +4 -4
- package/dist/components/form-field/index.d.ts +1 -1
- package/dist/components/format/base-format.d.ts +13 -0
- package/dist/components/format/format-bytes.d.ts +13 -0
- package/dist/components/format/{format-date.component.d.ts → format-date.d.ts} +4 -4
- package/dist/components/format/{format-number.component.d.ts → format-number.d.ts} +4 -4
- package/dist/components/format/index.d.ts +5 -4
- package/dist/components/format/{relative-time.component.d.ts → relative-time.d.ts} +4 -4
- package/dist/components/header/header-actions.d.ts +10 -0
- package/dist/components/header/{header.component.d.ts → header.d.ts} +4 -4
- package/dist/components/header/index.d.ts +2 -2
- package/dist/components/headline/{headline.component.d.ts → headline.d.ts} +4 -4
- package/dist/components/headline/index.d.ts +1 -1
- package/dist/components/highlight/highlight.d.ts +14 -0
- package/dist/components/highlight/index.d.ts +2 -0
- package/dist/components/icon-button/{icon-button.component.d.ts → icon-button.d.ts} +6 -5
- package/dist/components/icon-button/index.d.ts +1 -1
- package/dist/components/image/image.d.ts +34 -0
- package/dist/components/image/index.d.ts +2 -0
- package/dist/components/inline-message/index.d.ts +1 -1
- package/dist/components/inline-message/inline-message.d.ts +18 -0
- package/dist/components/inline-message/inline-message.models.d.ts +8 -5
- package/dist/components/input/index.d.ts +1 -1
- package/dist/components/input/input.d.ts +21 -0
- package/dist/components/line-clamp/index.d.ts +1 -1
- package/dist/components/line-clamp/line-clamp.d.ts +12 -0
- package/dist/components/link/base-link.d.ts +2 -2
- package/dist/components/link/index.d.ts +1 -1
- package/dist/components/link/{link.component.d.ts → link.d.ts} +3 -3
- package/dist/components/list/index.d.ts +2 -2
- package/dist/components/list/list-item.d.ts +23 -0
- package/dist/components/list/list.d.ts +11 -0
- package/dist/components/loading-overlay/index.d.ts +1 -1
- package/dist/components/loading-overlay/{loading-overlay.component.d.ts → loading-overlay.d.ts} +5 -5
- package/dist/components/loading-spinner/index.d.ts +1 -1
- package/dist/components/loading-spinner/loading-spinner.d.ts +13 -0
- package/dist/components/logo/index.d.ts +1 -1
- package/dist/components/logo/logo.d.ts +13 -0
- package/dist/components/main-menu/index.d.ts +5 -5
- package/dist/components/main-menu/main-menu-button.d.ts +12 -0
- package/dist/components/main-menu/main-menu-link.d.ts +9 -0
- package/dist/components/main-menu/main-menu-subtitle.d.ts +12 -0
- package/dist/components/main-menu/main-menu-title.d.ts +12 -0
- package/dist/components/main-menu/{main-menu.component.d.ts → main-menu.d.ts} +4 -4
- package/dist/components/main.d.ts +12 -4
- package/dist/components/menu/index.d.ts +2 -2
- package/dist/components/menu/menu-label.d.ts +9 -0
- package/dist/components/menu/{menu.component.d.ts → menu.d.ts} +8 -8
- package/dist/components/menu-item/index.d.ts +1 -1
- package/dist/components/menu-item/menu-item.d.ts +15 -0
- package/dist/components/modal/index.d.ts +3 -0
- package/dist/components/modal/modal.d.ts +35 -0
- package/dist/components/modal/modal.models.d.ts +5 -0
- package/dist/components/navigation-item/index.d.ts +1 -1
- package/dist/components/navigation-item/navigation-item.d.ts +14 -0
- package/dist/components/option/index.d.ts +1 -1
- package/dist/components/option/option.d.ts +12 -0
- package/dist/components/page/index.d.ts +1 -1
- package/dist/components/page/{page.component.d.ts → page.d.ts} +4 -4
- package/dist/components/page-layout/index.d.ts +1 -1
- package/dist/components/page-layout/page-layout.d.ts +11 -0
- package/dist/components/pagination/index.d.ts +2 -0
- package/dist/components/pagination/pagination.d.ts +32 -0
- package/dist/components/progress-bar/index.d.ts +1 -1
- package/dist/components/progress-bar/{progress-bar.component.d.ts → progress-bar.d.ts} +4 -4
- package/dist/components/radio-button/index.d.ts +1 -1
- package/dist/components/radio-button/radio-button.d.ts +13 -0
- package/dist/components/radio-group/index.d.ts +1 -1
- package/dist/components/radio-group/radio-group.d.ts +11 -0
- package/dist/components/radio-group/radio-group.models.d.ts +1 -0
- package/dist/components/rail-navigation/index.d.ts +1 -1
- package/dist/components/rail-navigation/rail-navigation.d.ts +19 -0
- package/dist/components/search-bar/index.d.ts +1 -1
- package/dist/components/search-bar/{search-bar.component.d.ts → search-bar.d.ts} +6 -5
- package/dist/components/select/index.d.ts +1 -1
- package/dist/components/select/select.d.ts +18 -0
- package/dist/components/separator/index.d.ts +2 -1
- package/dist/components/separator/{separator.component.d.ts → separator.d.ts} +4 -4
- package/dist/components/skeleton/index.d.ts +2 -1
- package/dist/components/skeleton/skeleton.d.ts +16 -0
- package/dist/components/skeleton/skeleton.models.d.ts +13 -0
- package/dist/components/slider/index.d.ts +3 -3
- package/dist/components/slider/{slider-handle.component.d.ts → slider-handle.d.ts} +5 -5
- package/dist/components/slider/{slider-marks.component.d.ts → slider-marks.d.ts} +4 -4
- package/dist/components/slider/{slider.component.d.ts → slider.d.ts} +6 -6
- package/dist/components/spacer/index.d.ts +1 -1
- package/dist/components/spacer/spacer.d.ts +13 -0
- package/dist/components/spinbox/index.d.ts +1 -1
- package/dist/components/spinbox/spinbox.d.ts +20 -0
- package/dist/components/stack/index.d.ts +1 -1
- package/dist/components/stack/{stack.component.d.ts → stack.d.ts} +4 -4
- package/dist/components/switch/index.d.ts +1 -1
- package/dist/components/switch/switch.d.ts +12 -0
- package/dist/components/table/index.d.ts +8 -7
- package/dist/components/table/table-body.d.ts +12 -0
- package/dist/components/table/table-cell.d.ts +12 -0
- package/dist/components/table/{table-checkbox-cell.element.d.ts → table-checkbox-cell.d.ts} +4 -4
- package/dist/components/table/table-header-cell.d.ts +13 -0
- package/dist/components/table/table-header.d.ts +14 -0
- package/dist/components/table/{table-row.element.d.ts → table-row.d.ts} +4 -4
- package/dist/components/table/table.d.ts +20 -0
- package/dist/components/table/{table.context.d.ts → table.models.d.ts} +1 -1
- package/dist/components/text/index.d.ts +1 -1
- package/dist/components/text/{text.component.d.ts → text.d.ts} +4 -4
- package/dist/components/title/index.d.ts +1 -1
- package/dist/components/title/{title.component.d.ts → title.d.ts} +4 -4
- package/dist/components/toast/index.d.ts +1 -1
- package/dist/components/toast/{toast.element.d.ts → toast.d.ts} +4 -4
- package/dist/components/toggle-button/index.d.ts +1 -1
- package/dist/components/toggle-button/{toggle-button.component.d.ts → toggle-button.d.ts} +4 -4
- package/dist/components/toggle-content/index.d.ts +2 -0
- package/dist/components/toggle-content/toggle-content.d.ts +13 -0
- package/dist/components/tooltip/index.d.ts +1 -1
- package/dist/components/tooltip/{tooltip.element.d.ts → tooltip.d.ts} +5 -6
- package/dist/components/translate/index.d.ts +2 -0
- package/dist/components/translate/translate.d.ts +16 -0
- package/dist/components/visually-hidden/index.d.ts +1 -1
- package/dist/components/visually-hidden/visually-hidden.d.ts +11 -0
- package/dist/components.js +2583 -1674
- package/dist/i18n/lib/config.d.ts +6 -6
- package/dist/i18n/lib/is-localized.mixin.d.ts +5 -3
- package/dist/i18n/lib/localization.d.ts +4 -4
- package/dist/i18n/lib/models.d.ts +1 -1
- package/dist/i18n/lib/translate.d.ts +6 -4
- package/dist/i18n.js +47 -42
- package/dist/lib/custom-element.d.ts +5 -5
- package/dist/lib/decorators/request-update-on-aria-change.d.ts +1 -31
- package/dist/lib/main.d.ts +7 -5
- package/dist/lib/mixins/can-be-disabled.d.ts +1 -1
- package/dist/lib/mixins/can-be-expanded.d.ts +12 -0
- package/dist/lib/mixins/can-be-selected.d.ts +9 -0
- package/dist/lib/{models/aria-mixin-strict.d.ts → utils/a11y.d.ts} +3 -1
- package/dist/lib/utils/dom.d.ts +3 -0
- package/dist/lib/utils/search-text-content.d.ts +7 -0
- package/dist/lib/utils/shared-intersection-observer.d.ts +1 -1
- package/dist/loader/main.d.ts +2 -0
- package/dist/loader.js +13 -0
- package/dist/main.js +219 -537
- package/dist/styles.css +1 -1
- package/dist/{vendor.js → vendor-C_WVAD3D.js} +21 -1
- package/dist/vite.config.d.ts +3 -0
- package/package.json +18 -13
- package/dist/assets/draeger-pangea-text-medium.woff2 +0 -0
- package/dist/assets/draeger-pangea-text-regular.woff2 +0 -0
- package/dist/assets/draeger-pangea-text-semibold.woff2 +0 -0
- package/dist/assets/fonts.css +0 -20
- package/dist/cdk/popover/popover.component.d.ts +0 -12
- package/dist/components/accordion/accordion-header.component.d.ts +0 -18
- package/dist/components/accordion/accordion-panel.component.d.ts +0 -11
- package/dist/components/accordion/accordion.component.d.ts +0 -18
- package/dist/components/avatar-group/avatar-group.component.d.ts +0 -14
- package/dist/components/breadcrumbs/breadcrumbs-item.component.d.ts +0 -17
- package/dist/components/button-group/button-group.component.d.ts +0 -18
- package/dist/components/card/card.component.d.ts +0 -13
- package/dist/components/content-box/content-box.component.d.ts +0 -11
- package/dist/components/dropdown/dropdown.component.d.ts +0 -23
- package/dist/components/format/format-bytes.component.d.ts +0 -13
- package/dist/components/format/format.component.d.ts +0 -13
- package/dist/components/header/header-actions.component.d.ts +0 -10
- package/dist/components/inline-message/inline-message.component.d.ts +0 -14
- package/dist/components/input/input.component.d.ts +0 -20
- package/dist/components/line-clamp/line-clamp.component.d.ts +0 -12
- package/dist/components/list/list-item.component.d.ts +0 -11
- package/dist/components/list/list.component.d.ts +0 -11
- package/dist/components/loading-spinner/loading-spinner.component.d.ts +0 -13
- package/dist/components/logo/logo.component.d.ts +0 -13
- package/dist/components/main-menu/main-menu-button.component.d.ts +0 -12
- package/dist/components/main-menu/main-menu-link.component.d.ts +0 -9
- package/dist/components/main-menu/main-menu-subtitle.component.d.ts +0 -12
- package/dist/components/main-menu/main-menu-title.component.d.ts +0 -12
- package/dist/components/menu/menu-label.component.d.ts +0 -9
- package/dist/components/menu-item/menu-item.component.d.ts +0 -14
- package/dist/components/navigation-item/navigation-item.component.d.ts +0 -16
- package/dist/components/option/option.component.d.ts +0 -12
- package/dist/components/page-layout/page-layout.component.d.ts +0 -11
- package/dist/components/radio-button/radio-button.component.d.ts +0 -13
- package/dist/components/radio-group/radio-group.component.d.ts +0 -11
- package/dist/components/rail-navigation/rail-navigation.component.d.ts +0 -19
- package/dist/components/select/select.component.d.ts +0 -18
- package/dist/components/skeleton/skeleton.component.d.ts +0 -12
- package/dist/components/spacer/spacer.component.d.ts +0 -13
- package/dist/components/spinbox/spinbox.component.d.ts +0 -20
- package/dist/components/switch/switch.component.d.ts +0 -12
- package/dist/components/table/table-body.element.d.ts +0 -12
- package/dist/components/table/table-cell.element.d.ts +0 -12
- package/dist/components/table/table-header-cell.element.d.ts +0 -13
- package/dist/components/table/table-header.element.d.ts +0 -14
- package/dist/components/table/table.element.d.ts +0 -20
- package/dist/components/visually-hidden/visually-hidden.component.d.ts +0 -11
- package/dist/lib/directives/aria-boolean-attr.d.ts +0 -3
- package/dist/lib/external/roving-tabindex.d.ts +0 -87
- package/dist/lib/mixins/with-aria-controls.d.ts +0 -11
- package/dist/lib/utils/string.d.ts +0 -2
- package/public/assets/draeger-pangea-text-medium.woff2 +0 -0
- package/public/assets/draeger-pangea-text-regular.woff2 +0 -0
- package/public/assets/draeger-pangea-text-semibold.woff2 +0 -0
- package/public/assets/fonts.css +0 -20
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LocaleInput, SingleUnitIdentifier } from './models.js';
|
|
2
2
|
export interface DateTimeFormatOptions extends Omit<Intl.DateTimeFormatOptions, 'dateStyle'> {
|
|
3
|
-
locale?:
|
|
3
|
+
locale?: LocaleInput;
|
|
4
4
|
dateStyle?: 'iso8601' | Intl.DateTimeFormatOptions['dateStyle'];
|
|
5
5
|
}
|
|
6
6
|
export interface NumberFormatOptions extends Intl.NumberFormatOptions {
|
|
7
|
-
locale?:
|
|
7
|
+
locale?: LocaleInput;
|
|
8
8
|
unit?: SingleUnitIdentifier;
|
|
9
9
|
}
|
|
10
10
|
export interface ListFormatOptions extends Intl.ListFormatOptions {
|
|
11
|
-
locale?:
|
|
11
|
+
locale?: LocaleInput;
|
|
12
12
|
}
|
|
13
13
|
export interface RelativeTimeFormatOptions extends Intl.RelativeTimeFormatOptions {
|
|
14
|
-
locale?:
|
|
14
|
+
locale?: LocaleInput;
|
|
15
15
|
minUnit?: Intl.RelativeTimeFormatUnit;
|
|
16
16
|
}
|
|
17
17
|
export interface FormatOptions {
|
|
@@ -21,7 +21,7 @@ export interface FormatOptions {
|
|
|
21
21
|
relativeTimeFormatOptions?: RelativeTimeFormatOptions;
|
|
22
22
|
}
|
|
23
23
|
export interface LocalizationOptions {
|
|
24
|
-
defaultLocale: () =>
|
|
24
|
+
defaultLocale: () => LocaleInput;
|
|
25
25
|
}
|
|
26
26
|
export type I18nOptions = LocalizationOptions & FormatOptions;
|
|
27
27
|
export declare function setI18nOptions(options?: Partial<I18nOptions> | null): void;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Constructor, CustomElement } from '
|
|
1
|
+
import { ReadonlySignal } from '@lit-labs/preact-signals';
|
|
2
|
+
import { Constructor, CustomElement } from '../../lib/main.js';
|
|
3
3
|
import { formatDate, formatList, formatNumber, formatRelativeTime } from './format.js';
|
|
4
4
|
import { getLocale } from './localization.js';
|
|
5
|
+
import { translate } from './translate.js';
|
|
5
6
|
export interface IsLocalized {
|
|
6
|
-
readonly locale:
|
|
7
|
+
readonly locale: ReadonlySignal<ReturnType<typeof getLocale>>;
|
|
8
|
+
t: (...args: Parameters<typeof translate>) => string;
|
|
7
9
|
formatDate: typeof formatDate;
|
|
8
10
|
formatNumber: typeof formatNumber;
|
|
9
11
|
formatList: typeof formatList;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare function
|
|
3
|
-
export declare function setLocale(
|
|
4
|
-
export declare function
|
|
1
|
+
import { LocaleInput } from './models.js';
|
|
2
|
+
export declare function getLocale(localeInput?: LocaleInput | null): Intl.Locale;
|
|
3
|
+
export declare function setLocale(localeInput?: LocaleInput | null): void;
|
|
4
|
+
export declare function syncDocumentLanguage(root?: HTMLElement): () => void;
|
|
5
5
|
//# sourceMappingURL=localization.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type
|
|
1
|
+
export type LocaleInput = Intl.UnicodeBCP47LocaleIdentifier | Intl.Locale;
|
|
2
2
|
/**
|
|
3
3
|
* Single units sanctioned for use in ECMAScript.
|
|
4
4
|
* See: https://tc39.es/ecma402/#table-sanctioned-single-unit-identifiers
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { ReadonlySignal } from '@lit-labs/preact-signals';
|
|
2
|
+
import { LocaleInput } from './models.js';
|
|
3
|
+
export type TranslateContext = Record<string, string | number | boolean> | string | number | boolean | null;
|
|
3
4
|
type Translation = {
|
|
4
5
|
[key: string]: Translation | string;
|
|
5
6
|
};
|
|
6
|
-
export declare function
|
|
7
|
-
export declare function
|
|
7
|
+
export declare function interpolate(value: string, context: Record<string, string | number>): string;
|
|
8
|
+
export declare function setTranslation(locale: LocaleInput, translation: Translation): void;
|
|
9
|
+
export declare function translate(key: string, contextInput?: TranslateContext, locale?: LocaleInput | null): ReadonlySignal<string>;
|
|
8
10
|
export {};
|
|
9
11
|
//# sourceMappingURL=translate.d.ts.map
|
package/dist/i18n.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { signal,
|
|
2
|
-
import { createOptions, parseDate,
|
|
1
|
+
import { signal, effect, computed, SignalWatcher } from '@lit-labs/preact-signals';
|
|
2
|
+
import { createOptions, parseDate, dedupeMixin } from '@odx/foundation';
|
|
3
3
|
import { property } from 'lit/decorators.js';
|
|
4
|
-
import { k as flattenObject } from './vendor.js';
|
|
4
|
+
import { k as flattenObject, l as isNotNil } from './vendor-C_WVAD3D.js';
|
|
5
5
|
|
|
6
6
|
const I18nOptions = createOptions({
|
|
7
7
|
defaultLocale: () => navigator.language,
|
|
@@ -9,10 +9,10 @@ const I18nOptions = createOptions({
|
|
|
9
9
|
});
|
|
10
10
|
const i18nOptions = signal(null);
|
|
11
11
|
function setI18nOptions(options) {
|
|
12
|
-
i18nOptions.
|
|
12
|
+
i18nOptions.value = getI18nOptions(options);
|
|
13
13
|
}
|
|
14
14
|
function getI18nOptions(options) {
|
|
15
|
-
return I18nOptions(options ?? i18nOptions.
|
|
15
|
+
return I18nOptions(options ?? i18nOptions.value ?? {});
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
function formatDate(input, options) {
|
|
@@ -66,27 +66,42 @@ function formatRelativeTime(input, options) {
|
|
|
66
66
|
return new Intl.RelativeTimeFormat(options?.locale, relativeTimeFormatOptions).format(Math.round(relativeTime / timeUnit.value), timeUnit.unit);
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
const activeLocale = signal(null
|
|
70
|
-
function
|
|
71
|
-
|
|
72
|
-
const observer = createMutationObserver(updateLocale);
|
|
73
|
-
observer.observe(root, { attributes: true, attributeFilter: ["lang"] });
|
|
74
|
-
updateLocale();
|
|
69
|
+
const activeLocale = signal(null);
|
|
70
|
+
function getLocale(localeInput) {
|
|
71
|
+
return new Intl.Locale(localeInput || activeLocale.value || getI18nOptions().defaultLocale());
|
|
75
72
|
}
|
|
76
|
-
function setLocale(
|
|
77
|
-
|
|
78
|
-
document.documentElement.lang = getI18nOptions().defaultLocale().toString();
|
|
79
|
-
} else {
|
|
80
|
-
document.documentElement.lang = getLocale(locale).toString();
|
|
81
|
-
}
|
|
73
|
+
function setLocale(localeInput) {
|
|
74
|
+
activeLocale.value = localeInput ? getLocale(localeInput) : null;
|
|
82
75
|
}
|
|
83
|
-
function
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
76
|
+
function syncDocumentLanguage(root = document.documentElement) {
|
|
77
|
+
return effect(() => {
|
|
78
|
+
root.lang = getLocale().toString();
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const fallbackLocale = "en";
|
|
83
|
+
const translations = signal({});
|
|
84
|
+
function interpolate(value, context) {
|
|
85
|
+
return value.replaceAll(/\{\{\s*([^}\s]+)\s*}}/g, (match, variableName) => {
|
|
86
|
+
return isNotNil(context[variableName]) ? interpolate(context[variableName].toString(), context) : match;
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
function setTranslation(locale, translation) {
|
|
90
|
+
const { language } = getLocale(locale);
|
|
91
|
+
translations.value = { ...translations.value, [language]: { ...translations.value[language], ...flattenObject(translation, { delimiter: "." }) } };
|
|
92
|
+
}
|
|
93
|
+
function translate(key, contextInput, locale) {
|
|
94
|
+
return computed(() => {
|
|
95
|
+
const translationRecord = getTranslationRecord(locale);
|
|
96
|
+
if (!translationRecord) return key;
|
|
97
|
+
const value = translationRecord?.[key] ?? getTranslationRecord(fallbackLocale)?.[key] ?? "";
|
|
98
|
+
const context = typeof contextInput === "object" || contextInput === void 0 ? flattenObject(contextInput ?? {}) : { $implicit: contextInput.toString() };
|
|
99
|
+
return interpolate(value, { ...getTranslationRecord(fallbackLocale), ...translationRecord, ...context });
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
function getTranslationRecord(localeInput) {
|
|
103
|
+
const locale = getLocale(localeInput);
|
|
104
|
+
return translations.value[locale.toString()] ?? translations.value[locale.language] ?? null;
|
|
90
105
|
}
|
|
91
106
|
|
|
92
107
|
var __defProp = Object.defineProperty;
|
|
@@ -106,16 +121,19 @@ const IsLocalized = dedupeMixin((superClass) => {
|
|
|
106
121
|
this.locale = computed(() => getLocale(this.lang));
|
|
107
122
|
}
|
|
108
123
|
formatDate(...[input, options]) {
|
|
109
|
-
return formatDate(input, { ...options, locale: options?.locale ?? this.locale.
|
|
124
|
+
return formatDate(input, { ...options, locale: options?.locale ?? this.locale.value });
|
|
110
125
|
}
|
|
111
126
|
formatNumber(...[input, options]) {
|
|
112
|
-
return formatNumber(input, { ...options, locale: options?.locale ?? this.locale.
|
|
127
|
+
return formatNumber(input, { ...options, locale: options?.locale ?? this.locale.value });
|
|
113
128
|
}
|
|
114
129
|
formatList(...[input, options]) {
|
|
115
|
-
return formatList(input, { ...options, locale: options?.locale ?? this.locale.
|
|
130
|
+
return formatList(input, { ...options, locale: options?.locale ?? this.locale.value });
|
|
116
131
|
}
|
|
117
132
|
formatRelativeTime(...[input, options]) {
|
|
118
|
-
return formatRelativeTime(input, { ...options, locale: options?.locale ?? this.locale.
|
|
133
|
+
return formatRelativeTime(input, { ...options, locale: options?.locale ?? this.locale.value });
|
|
134
|
+
}
|
|
135
|
+
t(...[key, context, locale]) {
|
|
136
|
+
return translate(key, context, locale ?? this.locale.value).value;
|
|
119
137
|
}
|
|
120
138
|
}
|
|
121
139
|
__decorateClass([
|
|
@@ -124,17 +142,4 @@ const IsLocalized = dedupeMixin((superClass) => {
|
|
|
124
142
|
return IsLocalizedElement;
|
|
125
143
|
});
|
|
126
144
|
|
|
127
|
-
|
|
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 };
|
|
145
|
+
export { IsLocalized, formatDate, formatList, formatNumber, formatRelativeTime, getI18nOptions, getLocale, interpolate, setI18nOptions, setLocale, setTranslation, syncDocumentLanguage, translate };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export declare function customElement(selector?: keyof HTMLElementTagNameMap, styles?: Array<
|
|
1
|
+
import { CSSResultGroup, HTMLTemplateResult, LitElement, TemplateResult } from 'lit';
|
|
2
|
+
export declare function isCustomElementClass(candidate: unknown): candidate is typeof CustomElement;
|
|
3
|
+
export declare function customElement(selector?: keyof HTMLElementTagNameMap, styles?: Array<string | CSSResultGroup>): (target: typeof CustomElement) => void;
|
|
4
4
|
export declare class CustomElement extends LitElement {
|
|
5
5
|
static selector: string;
|
|
6
|
+
static define: () => void;
|
|
6
7
|
protected render(): HTMLTemplateResult | TemplateResult | string;
|
|
7
|
-
emit(event:
|
|
8
|
+
emit(event: string, eventInit?: CustomEventInit): boolean;
|
|
8
9
|
}
|
|
9
|
-
export {};
|
|
10
10
|
//# sourceMappingURL=custom-element.d.ts.map
|
|
@@ -1,34 +1,4 @@
|
|
|
1
1
|
import { ReactiveElement } from 'lit';
|
|
2
|
-
import { ARIAProperty } from '../
|
|
3
|
-
/**
|
|
4
|
-
* Sets up a `ReactiveElement` constructor to enable updates when delegating
|
|
5
|
-
* aria attributes. Elements may bind `this.aria*` properties to `aria-*`
|
|
6
|
-
* attributes in their render functions.
|
|
7
|
-
*
|
|
8
|
-
* This function will:
|
|
9
|
-
* - Call `requestUpdate()` when an aria attribute changes.
|
|
10
|
-
* - Add `role="presentation"` to the host.
|
|
11
|
-
*
|
|
12
|
-
* NOTE: The following features are not currently supported:
|
|
13
|
-
* - Delegating IDREF attributes (ex: `aria-labelledby`, `aria-controls`)
|
|
14
|
-
* - Delegating the `role` attribute
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* class ButtonElement extends LitElement {
|
|
18
|
-
* static {
|
|
19
|
-
* requestUpdateOnAriaChange(XButton);
|
|
20
|
-
* }
|
|
21
|
-
*
|
|
22
|
-
* protected override render() {
|
|
23
|
-
* return html`
|
|
24
|
-
* <button aria-label=${this.ariaLabel || nothing}>
|
|
25
|
-
* <slot></slot>
|
|
26
|
-
* </button>
|
|
27
|
-
* `;
|
|
28
|
-
* }
|
|
29
|
-
* }
|
|
30
|
-
*
|
|
31
|
-
* @param ctor The `ReactiveElement` constructor to patch.
|
|
32
|
-
*/
|
|
2
|
+
import { ARIAProperty } from '../utils/a11y.js';
|
|
33
3
|
export declare function requestUpdateOnAriaChange(ariaProperties: ARIAProperty[]): (ctor: typeof ReactiveElement) => void;
|
|
34
4
|
//# sourceMappingURL=request-update-on-aria-change.d.ts.map
|
package/dist/lib/main.d.ts
CHANGED
|
@@ -1,32 +1,34 @@
|
|
|
1
|
+
import { ExtractAssetName } from '@odx/assets-utils';
|
|
1
2
|
export * from './controllers/focus-trap.controller.js';
|
|
2
3
|
export * from './decorators/request-update-on-aria-change.js';
|
|
3
|
-
export * from './directives/aria-boolean-attr.js';
|
|
4
4
|
export * from './directives/optional-attr.js';
|
|
5
5
|
export * from './directives/optional-slot.js';
|
|
6
6
|
export * from './directives/slot-fallback.js';
|
|
7
|
-
export * from './external/roving-tabindex.js';
|
|
8
7
|
export * from './facade/checkbox-form-control.js';
|
|
9
8
|
export * from './facade/checkbox-group-form-control.js';
|
|
10
9
|
export * from './facade/option-control.js';
|
|
11
10
|
export * from './facade/radio-group-form-control.js';
|
|
12
11
|
export * from './facade/select-form-control.js';
|
|
13
12
|
export * from './mixins/can-be-disabled.js';
|
|
13
|
+
export * from './mixins/can-be-expanded.js';
|
|
14
14
|
export * from './mixins/can-be-readonly.js';
|
|
15
15
|
export * from './mixins/can-be-required.js';
|
|
16
|
+
export * from './mixins/can-be-selected.js';
|
|
16
17
|
export * from './mixins/can-be-validated.js';
|
|
17
18
|
export * from './mixins/dedupe-mixin.js';
|
|
18
19
|
export * from './mixins/form-control.js';
|
|
19
20
|
export * from './mixins/number-control.js';
|
|
20
|
-
export * from './mixins/with-aria-controls.js';
|
|
21
21
|
export * from './mixins/with-loading-state.js';
|
|
22
|
-
export * from './
|
|
22
|
+
export * from './utils/a11y.js';
|
|
23
23
|
export * from './utils/date.js';
|
|
24
24
|
export * from './utils/dom.js';
|
|
25
25
|
export * from './utils/get-unique-id.js';
|
|
26
26
|
export * from './utils/keyboard-events.js';
|
|
27
27
|
export * from './utils/object.js';
|
|
28
|
+
export * from './utils/search-text-content.js';
|
|
28
29
|
export * from './utils/shared-intersection-observer.js';
|
|
29
30
|
export * from './utils/shared-resize-observer.js';
|
|
30
|
-
export * from './utils/string.js';
|
|
31
31
|
export * from './custom-element.js';
|
|
32
|
+
export { effect } from '@lit-labs/preact-signals';
|
|
33
|
+
export type AvailableIcons = keyof _OdxIcon | ExtractAssetName<keyof _OdxIcon>;
|
|
32
34
|
//# sourceMappingURL=main.d.ts.map
|
|
@@ -3,7 +3,7 @@ import { Constructor } from './dedupe-mixin.js';
|
|
|
3
3
|
export interface CanBeDisabled {
|
|
4
4
|
disabled: boolean;
|
|
5
5
|
_contextDisabled: boolean;
|
|
6
|
-
|
|
6
|
+
isContextDisabled(): boolean;
|
|
7
7
|
}
|
|
8
8
|
export declare const CanBeDisabled: <T extends Constructor<CustomElement>>(superClass: T) => Constructor<CanBeDisabled> & T;
|
|
9
9
|
//# sourceMappingURL=can-be-disabled.d.ts.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CustomElement } from '../custom-element.js';
|
|
2
|
+
import { CanBeDisabled } from './can-be-disabled.js';
|
|
3
|
+
import { Constructor } from './dedupe-mixin.js';
|
|
4
|
+
export interface CanBeExpanded extends CanBeDisabled {
|
|
5
|
+
expanded: boolean;
|
|
6
|
+
collapse(emitEvent?: boolean): void;
|
|
7
|
+
expand(emitEvent?: boolean): void;
|
|
8
|
+
toggle(force?: boolean, emitEvent?: boolean): void;
|
|
9
|
+
}
|
|
10
|
+
export type WithAriaControlsElement = CanBeExpanded & CanBeDisabled & HTMLElement;
|
|
11
|
+
export declare const CanBeExpanded: <T extends Constructor<CustomElement>>(superClass: T) => Constructor<CanBeExpanded> & T;
|
|
12
|
+
//# sourceMappingURL=can-be-expanded.d.ts.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CustomElement } from '../custom-element.js';
|
|
2
|
+
import { ARIAMixinStrict } from '../utils/a11y.js';
|
|
3
|
+
import { Constructor } from './dedupe-mixin.js';
|
|
4
|
+
export interface CanBeSelected {
|
|
5
|
+
selected: boolean;
|
|
6
|
+
ariaSelectedValue: ARIAMixinStrict['ariaCurrent'];
|
|
7
|
+
}
|
|
8
|
+
export declare const CanBeSelected: <T extends Constructor<CustomElement>>(superClass: T) => Constructor<CanBeSelected> & T;
|
|
9
|
+
//# sourceMappingURL=can-be-selected.d.ts.map
|
|
@@ -59,4 +59,6 @@ export interface ARIAMixinStrict extends ARIAMixin {
|
|
|
59
59
|
ariaValueText: string | null;
|
|
60
60
|
role: ARIARole | null;
|
|
61
61
|
}
|
|
62
|
-
|
|
62
|
+
export declare function toAriaBooleanAttribute(value: boolean, removeOnFalse?: boolean): 'true' | 'false';
|
|
63
|
+
export declare function fromAriaBooleanAttribute(value?: string | null): boolean;
|
|
64
|
+
//# sourceMappingURL=a11y.d.ts.map
|
package/dist/lib/utils/dom.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export type CSSDimensionUnit = 'px' | 'em' | 'rem' | 'vh' | 'vw' | 'vmin' | 'vmax' | '%' | 'fr' | 'auto' | 'inherit' | 'initial' | 'unset';
|
|
2
|
+
export type CSSDimensionValue = `${number}${CSSDimensionUnit}`;
|
|
1
3
|
/**
|
|
2
4
|
* Creates a new MutationObserver instance.
|
|
3
5
|
*
|
|
@@ -11,4 +13,5 @@ export declare function findClosestDocument(node: Node): ShadowRoot | Document |
|
|
|
11
13
|
export declare function toPx(value?: string | number | null): string | null;
|
|
12
14
|
export declare function getAssignedElements<T extends HTMLElement = HTMLElement>(host: HTMLElement, ...slots: string[]): T[];
|
|
13
15
|
export declare function waitForAnimations(element?: Element | null, subtree?: boolean): Promise<Animation[]>;
|
|
16
|
+
export declare function forwardEvent(target: HTMLElement, eventInit?: EventInit): EventListener;
|
|
14
17
|
//# sourceMappingURL=dom.d.ts.map
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @param {IntersectionObserverCallback} callback - The callback to execute when an observed element's size changes.
|
|
5
5
|
* @returns {IntersectionObserver} A IntersectionObserver instance or a dummy object with no-op methods if unsupported.
|
|
6
6
|
*/
|
|
7
|
-
export declare function createIntersectionObserver(callback: IntersectionObserverCallback): IntersectionObserver;
|
|
7
|
+
export declare function createIntersectionObserver(callback: IntersectionObserverCallback, options?: IntersectionObserverInit): IntersectionObserver;
|
|
8
8
|
export interface SharedIntersectionObserverOptions {
|
|
9
9
|
fpsLimit: number;
|
|
10
10
|
}
|
package/dist/loader.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { isCustomElementClass } from '@odx/foundation';
|
|
2
|
+
import * as cdkComponents from '@odx/foundation/cdk';
|
|
3
|
+
import * as components from '@odx/foundation/components';
|
|
4
|
+
|
|
5
|
+
async function defineCustomElements() {
|
|
6
|
+
for (const entry of Object.values({ ...components, ...cdkComponents })) {
|
|
7
|
+
if (!isCustomElementClass(entry)) continue;
|
|
8
|
+
entry.define();
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
defineCustomElements();
|
|
12
|
+
|
|
13
|
+
export { defineCustomElements };
|