From 17b0a8dd77c3b9ff91e7f2f939a82b5a7d45146e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Sun, 29 Sep 2024 19:48:20 +0200 Subject: [PATCH 1/3] move localizations --- src/packages/core/extension-registry/models/index.ts | 3 --- .../ui-culture-input/ui-culture-input.element.ts | 2 +- .../extensions/localization.extension.ts} | 10 ++++++++-- src/packages/core/localization/index.ts | 1 + src/packages/core/localization/manifests.ts | 2 +- .../registry/localization.registry.test.ts | 2 +- .../localization/registry/localization.registry.ts | 6 ++++-- 7 files changed, 16 insertions(+), 10 deletions(-) rename src/packages/core/{extension-registry/models/localization.model.ts => localization/extensions/localization.extension.ts} (89%) diff --git a/src/packages/core/extension-registry/models/index.ts b/src/packages/core/extension-registry/models/index.ts index 9730851cfc..ab40e6754e 100644 --- a/src/packages/core/extension-registry/models/index.ts +++ b/src/packages/core/extension-registry/models/index.ts @@ -25,7 +25,6 @@ import type { ManifestGlobalContext } from './global-context.model.js'; import type { ManifestHeaderApp, ManifestHeaderAppButtonKind } from './header-app.model.js'; import type { ManifestHealthCheck } from './health-check.model.js'; import type { ManifestIcons } from './icons.model.js'; -import type { ManifestLocalization } from './localization.model.js'; import type { ManifestMenu } from './menu.model.js'; import type { ManifestMenuItem, ManifestMenuItemLinkKind, ManifestMenuItemTreeKind } from './menu-item.model.js'; import type { ManifestPackageView } from './package-view.model.js'; @@ -69,7 +68,6 @@ export type * from './global-context.model.js'; export type * from './header-app.model.js'; export type * from './health-check.model.js'; export type * from './icons.model.js'; -export type * from './localization.model.js'; export type * from './menu-item.model.js'; export type * from './menu.model.js'; export type * from './mfa-login-provider.model.js'; @@ -133,7 +131,6 @@ export type ManifestTypes = | ManifestHealthCheck | ManifestIcons | ManifestItemStore - | ManifestLocalization | ManifestMenu | ManifestMenuItem | ManifestMenuItemTreeKind diff --git a/src/packages/core/localization/components/ui-culture-input/ui-culture-input.element.ts b/src/packages/core/localization/components/ui-culture-input/ui-culture-input.element.ts index 0b33a2fcf4..447fee6331 100644 --- a/src/packages/core/localization/components/ui-culture-input/ui-culture-input.element.ts +++ b/src/packages/core/localization/components/ui-culture-input/ui-culture-input.element.ts @@ -3,7 +3,7 @@ import { css, html, customElement, query, state, property } from '@umbraco-cms/b import type { UUISelectEvent } from '@umbraco-cms/backoffice/external/uui'; import { UUIFormControlMixin } from '@umbraco-cms/backoffice/external/uui'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; -import type { ManifestLocalization } from '@umbraco-cms/backoffice/extension-registry'; +import type { ManifestLocalization } from '@umbraco-cms/backoffice/localization'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; interface UmbCultureInputOption { diff --git a/src/packages/core/extension-registry/models/localization.model.ts b/src/packages/core/localization/extensions/localization.extension.ts similarity index 89% rename from src/packages/core/extension-registry/models/localization.model.ts rename to src/packages/core/localization/extensions/localization.extension.ts index 9f06f37020..31781c3414 100644 --- a/src/packages/core/extension-registry/models/localization.model.ts +++ b/src/packages/core/localization/extensions/localization.extension.ts @@ -15,7 +15,7 @@ export interface MetaLocalization { * The value is used to describe the language of the translations according to the extension system * and it will be set as the `lang` attribute on the `` element. * @see https://en.wikipedia.org/wiki/Language_localisation#Language_tags_and_codes - * @examples ["en-us", "en-gb", "da-dk"] + * @example ["en-us", "en-gb", "da-dk"] */ culture: string; @@ -25,7 +25,7 @@ export interface MetaLocalization { * The value is used to describe the direction of the translations according to the extension system * and it will be set as the `dir` attribute on the `` element. It defaults to `ltr`. * @see https://en.wikipedia.org/wiki/Right-to-left - * @examples ["ltr"] + * @example ["ltr"] * @default "ltr" */ direction?: 'ltr' | 'rtl'; @@ -42,3 +42,9 @@ export interface MetaLocalization { */ localizations?: UmbLocalizationDictionary; } + +declare global { + interface UmbExtensionManifestMap { + UmbLocalizationExtension: ManifestLocalization; + } +} diff --git a/src/packages/core/localization/index.ts b/src/packages/core/localization/index.ts index d6ca82fa14..92c9f7f488 100644 --- a/src/packages/core/localization/index.ts +++ b/src/packages/core/localization/index.ts @@ -4,4 +4,5 @@ import './localize-number.element.js'; import './localize-relative-time.element.js'; export * from './registry/localization.registry.js'; +export type * from './extensions/localization.extension.js'; export { UmbUiCultureInputElement } from './components/index.js'; diff --git a/src/packages/core/localization/manifests.ts b/src/packages/core/localization/manifests.ts index a575191100..dd283f2a9f 100644 --- a/src/packages/core/localization/manifests.ts +++ b/src/packages/core/localization/manifests.ts @@ -1,4 +1,4 @@ -import type { ManifestLocalization } from '../extension-registry/models/localization.model.js'; +import type { ManifestLocalization } from './extensions/localization.extension.js'; export const manifests: Array = [ { diff --git a/src/packages/core/localization/registry/localization.registry.test.ts b/src/packages/core/localization/registry/localization.registry.test.ts index 9f211317be..9507f3739d 100644 --- a/src/packages/core/localization/registry/localization.registry.test.ts +++ b/src/packages/core/localization/registry/localization.registry.test.ts @@ -1,6 +1,6 @@ import { UmbLocalizationRegistry } from './localization.registry.js'; import { aTimeout, expect } from '@open-wc/testing'; -import type { ManifestLocalization } from '@umbraco-cms/backoffice/extension-registry'; +import type { ManifestLocalization } from '@umbraco-cms/backoffice/localization'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; //#region Localizations diff --git a/src/packages/core/localization/registry/localization.registry.ts b/src/packages/core/localization/registry/localization.registry.ts index a155177661..4b248af785 100644 --- a/src/packages/core/localization/registry/localization.registry.ts +++ b/src/packages/core/localization/registry/localization.registry.ts @@ -5,7 +5,8 @@ import { UMB_DEFAULT_LOCALIZATION_CULTURE, } from '@umbraco-cms/backoffice/localization-api'; import { umbLocalizationManager } from '@umbraco-cms/backoffice/localization-api'; -import type { ManifestLocalization, UmbBackofficeExtensionRegistry } from '@umbraco-cms/backoffice/extension-registry'; +import type { UmbBackofficeExtensionRegistry } from '@umbraco-cms/backoffice/extension-registry'; +import type { ManifestLocalization } from '@umbraco-cms/backoffice/localization'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; import { UmbStringState } from '@umbraco-cms/backoffice/observable-api'; import { combineLatest } from '@umbraco-cms/backoffice/external/rxjs'; @@ -37,6 +38,7 @@ export class UmbLocalizationRegistry { /** * Get the current registered translations. + * @returns {Map} Returns the registered translations */ get localizations() { return umbLocalizationManager.localizations; @@ -111,7 +113,7 @@ export class UmbLocalizationRegistry { /** * Load a language from the extension registry. - * @param locale The locale to load. + * @param {string} locale The locale to load. */ loadLanguage(locale: string) { this.#currentLanguage.setValue(locale.toLowerCase()); From 729227ffe801cb15185191e3d76f1a070f5f42cd Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 30 Sep 2024 07:59:07 +0200 Subject: [PATCH 2/3] prevent circular dependencies --- .../components/ui-culture-input/ui-culture-input.element.ts | 2 +- src/packages/core/localization/localize.element.test.ts | 2 +- .../core/localization/registry/localization.registry.test.ts | 2 +- .../core/localization/registry/localization.registry.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/packages/core/localization/components/ui-culture-input/ui-culture-input.element.ts b/src/packages/core/localization/components/ui-culture-input/ui-culture-input.element.ts index 447fee6331..1ec3ce7cf4 100644 --- a/src/packages/core/localization/components/ui-culture-input/ui-culture-input.element.ts +++ b/src/packages/core/localization/components/ui-culture-input/ui-culture-input.element.ts @@ -3,8 +3,8 @@ import { css, html, customElement, query, state, property } from '@umbraco-cms/b import type { UUISelectEvent } from '@umbraco-cms/backoffice/external/uui'; import { UUIFormControlMixin } from '@umbraco-cms/backoffice/external/uui'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; -import type { ManifestLocalization } from '@umbraco-cms/backoffice/localization'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; +import type { ManifestLocalization } from '../../extensions/localization.extension'; interface UmbCultureInputOption { name: string; diff --git a/src/packages/core/localization/localize.element.test.ts b/src/packages/core/localization/localize.element.test.ts index 79cd162781..ae69b81fd1 100644 --- a/src/packages/core/localization/localize.element.test.ts +++ b/src/packages/core/localization/localize.element.test.ts @@ -1,8 +1,8 @@ import { UmbLocalizeElement } from './localize.element.js'; import { aTimeout, elementUpdated, expect, fixture, html } from '@open-wc/testing'; -import { umbLocalizationRegistry } from '@umbraco-cms/backoffice/localization'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; import { UmbLocalizationController } from '@umbraco-cms/backoffice/localization-api'; +import { umbLocalizationRegistry } from './registry/localization.registry.js'; const english = { type: 'localization', diff --git a/src/packages/core/localization/registry/localization.registry.test.ts b/src/packages/core/localization/registry/localization.registry.test.ts index 9507f3739d..03b59277d5 100644 --- a/src/packages/core/localization/registry/localization.registry.test.ts +++ b/src/packages/core/localization/registry/localization.registry.test.ts @@ -1,7 +1,7 @@ import { UmbLocalizationRegistry } from './localization.registry.js'; import { aTimeout, expect } from '@open-wc/testing'; -import type { ManifestLocalization } from '@umbraco-cms/backoffice/localization'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; +import type { ManifestLocalization } from '../extensions/localization.extension.js'; //#region Localizations const english: ManifestLocalization = { diff --git a/src/packages/core/localization/registry/localization.registry.ts b/src/packages/core/localization/registry/localization.registry.ts index 4b248af785..625440ada9 100644 --- a/src/packages/core/localization/registry/localization.registry.ts +++ b/src/packages/core/localization/registry/localization.registry.ts @@ -6,11 +6,11 @@ import { } from '@umbraco-cms/backoffice/localization-api'; import { umbLocalizationManager } from '@umbraco-cms/backoffice/localization-api'; import type { UmbBackofficeExtensionRegistry } from '@umbraco-cms/backoffice/extension-registry'; -import type { ManifestLocalization } from '@umbraco-cms/backoffice/localization'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; import { UmbStringState } from '@umbraco-cms/backoffice/observable-api'; import { combineLatest } from '@umbraco-cms/backoffice/external/rxjs'; import { hasDefaultExport, loadManifestPlainJs } from '@umbraco-cms/backoffice/extension-api'; +import type { ManifestLocalization } from '../extensions/localization.extension'; /** * From 4be7285a5de3484fb54bcf70d1c2e96e89d4ad25 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 30 Sep 2024 08:04:46 +0200 Subject: [PATCH 3/3] fix lint errors --- .../components/ui-culture-input/ui-culture-input.element.ts | 2 +- .../core/localization/registry/localization.registry.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/packages/core/localization/components/ui-culture-input/ui-culture-input.element.ts b/src/packages/core/localization/components/ui-culture-input/ui-culture-input.element.ts index 1ec3ce7cf4..23504ea2c7 100644 --- a/src/packages/core/localization/components/ui-culture-input/ui-culture-input.element.ts +++ b/src/packages/core/localization/components/ui-culture-input/ui-culture-input.element.ts @@ -1,10 +1,10 @@ +import type { ManifestLocalization } from '../../extensions/localization.extension.js'; import { UmbChangeEvent } from '@umbraco-cms/backoffice/event'; import { css, html, customElement, query, state, property } from '@umbraco-cms/backoffice/external/lit'; import type { UUISelectEvent } from '@umbraco-cms/backoffice/external/uui'; import { UUIFormControlMixin } from '@umbraco-cms/backoffice/external/uui'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry'; -import type { ManifestLocalization } from '../../extensions/localization.extension'; interface UmbCultureInputOption { name: string; diff --git a/src/packages/core/localization/registry/localization.registry.ts b/src/packages/core/localization/registry/localization.registry.ts index 625440ada9..24ebb1ad55 100644 --- a/src/packages/core/localization/registry/localization.registry.ts +++ b/src/packages/core/localization/registry/localization.registry.ts @@ -1,3 +1,4 @@ +import type { ManifestLocalization } from '../extensions/localization.extension.js'; import { type UmbLocalizationSetBase, type UmbLocalizationDictionary, @@ -10,7 +11,6 @@ import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registr import { UmbStringState } from '@umbraco-cms/backoffice/observable-api'; import { combineLatest } from '@umbraco-cms/backoffice/external/rxjs'; import { hasDefaultExport, loadManifestPlainJs } from '@umbraco-cms/backoffice/extension-api'; -import type { ManifestLocalization } from '../extensions/localization.extension'; /** *