diff --git a/.changeset/long-actors-clap.md b/.changeset/long-actors-clap.md new file mode 100644 index 000000000..e3784303d --- /dev/null +++ b/.changeset/long-actors-clap.md @@ -0,0 +1,16 @@ +--- +'@lion/ui': patch +--- + +BREAKING: remove setIcons, setOverlays, setLocalize. + +Recommended approach is to do below at the top of your app (before lion code runs): + +```js +import { singletonManager } from 'singleton-manager'; +import { LocalizeManager } from '@lion/ui/localize-no-side-effects.js'; + +class MyLocalizeManager extends LocalizeManager {} + +singletonManager.set('@lion/ui::localize::0.x', new MyLocalizeManager()); +``` diff --git a/packages/ui/components/icon/src/icons.js b/packages/ui/components/icon/src/icons.js index eddd32c72..6e89aedde 100644 --- a/packages/ui/components/icon/src/icons.js +++ b/packages/ui/components/icon/src/icons.js @@ -1,10 +1,4 @@ import { singletonManager } from 'singleton-manager'; import { IconManager } from './IconManager.js'; -// eslint-disable-next-line import/no-mutable-exports -export let icons = singletonManager.get('@lion/ui::icons::0.x') || new IconManager(); - -// @ts-ignore since we don't know which singleton icon manager version will be used, we cannot type it. -export function setIcons(newIcons) { - icons = newIcons; -} +export const icons = singletonManager.get('@lion/ui::icons::0.x') || new IconManager(); diff --git a/packages/ui/components/localize/src/singleton.js b/packages/ui/components/localize/src/singleton.js index 54b69a96c..5ee5854d2 100644 --- a/packages/ui/components/localize/src/singleton.js +++ b/packages/ui/components/localize/src/singleton.js @@ -3,19 +3,9 @@ import { LocalizeManager } from './LocalizeManager.js'; /** @type {LocalizeManager} */ // eslint-disable-next-line import/no-mutable-exports -export let localize = +export const localize = singletonManager.get('@lion/ui::localize::0.x') || new LocalizeManager({ autoLoadOnLocaleChange: true, fallbackLocale: 'en-GB', }); - -/** - * @param {LocalizeManager} newLocalize - */ -export function setLocalize(newLocalize) { - localize.teardown(); - localize = newLocalize; -} - -export { LocalizeManager }; diff --git a/packages/ui/components/localize/test/localize.test.js b/packages/ui/components/localize/test/localize.test.js index bf2b381bb..8a8292ce0 100644 --- a/packages/ui/components/localize/test/localize.test.js +++ b/packages/ui/components/localize/test/localize.test.js @@ -1,7 +1,6 @@ import { expect } from '@open-wc/testing'; -import sinon from 'sinon'; -import { localize, setLocalize, LocalizeManager } from '@lion/ui/localize.js'; +import { localize, LocalizeManager } from '@lion/ui/localize.js'; /** * @param {LocalizeManager} localizeManagerEl @@ -27,22 +26,6 @@ describe('localize', () => { expect(localize).to.be.an.instanceOf(LocalizeManager); }); - it('is overridable globally', () => { - const oldLocalize = localize; - const oldLocalizeTeardown = localize.teardown; - localize.teardown = sinon.spy(); - - const newLocalize = /** @type {LocalizeManager} */ ({ teardown: () => {} }); - setLocalize(newLocalize); - expect(localize).to.equal(newLocalize); - - // @ts-ignore since we're testing another reference to the same global instance - expect(oldLocalize.teardown.callCount).to.equal(1); - - setLocalize(oldLocalize); - localize.teardown = oldLocalizeTeardown; - }); - it('is configured to automatically load namespaces if locale is changed', () => { const { autoLoadOnLocaleChange } = getProtectedMembers(localize); expect(autoLoadOnLocaleChange).to.equal(true); diff --git a/packages/ui/components/overlays/src/singleton.js b/packages/ui/components/overlays/src/singleton.js index 5ee8c302d..3b6b4d054 100644 --- a/packages/ui/components/overlays/src/singleton.js +++ b/packages/ui/components/overlays/src/singleton.js @@ -1,12 +1,4 @@ import { singletonManager } from 'singleton-manager'; import { OverlaysManager } from './OverlaysManager.js'; -// eslint-disable-next-line import/no-mutable-exports -export let overlays = singletonManager.get('@lion/ui::overlays::0.x') || new OverlaysManager(); - -/** - * @param {OverlaysManager} newOverlays - */ -export function setOverlays(newOverlays) { - overlays = newOverlays; -} +export const overlays = singletonManager.get('@lion/ui::overlays::0.x') || new OverlaysManager(); diff --git a/packages/ui/exports/icon-no-side-effects.js b/packages/ui/exports/icon-no-side-effects.js new file mode 100644 index 000000000..541aaf4d2 --- /dev/null +++ b/packages/ui/exports/icon-no-side-effects.js @@ -0,0 +1 @@ +export { IconManager } from '../components/icon/src/IconManager.js'; diff --git a/packages/ui/exports/icon.js b/packages/ui/exports/icon.js index 16b99d29f..3d2adc764 100644 --- a/packages/ui/exports/icon.js +++ b/packages/ui/exports/icon.js @@ -1,3 +1,3 @@ export { LionIcon } from '../components/icon/src/LionIcon.js'; export { IconManager } from '../components/icon/src/IconManager.js'; -export { icons, setIcons } from '../components/icon/src/icons.js'; +export { icons } from '../components/icon/src/icons.js'; diff --git a/packages/ui/exports/localize-no-side-effects.js b/packages/ui/exports/localize-no-side-effects.js new file mode 100644 index 000000000..c98021fa5 --- /dev/null +++ b/packages/ui/exports/localize-no-side-effects.js @@ -0,0 +1 @@ +export { LocalizeManager } from '../components/localize/src/LocalizeManager.js'; diff --git a/packages/ui/exports/localize.js b/packages/ui/exports/localize.js index 48ec69b2d..c5994821f 100644 --- a/packages/ui/exports/localize.js +++ b/packages/ui/exports/localize.js @@ -18,4 +18,4 @@ export { normalizeCurrencyLabel } from '../components/localize/src/number/normal export { parseNumber } from '../components/localize/src/number/parseNumber.js'; export { getLocale } from '../components/localize/src/utils/getLocale.js'; -export { localize, setLocalize } from '../components/localize/src/singleton.js'; +export { localize } from '../components/localize/src/singleton.js'; diff --git a/packages/ui/exports/overlays-no-side-effects.js b/packages/ui/exports/overlays-no-side-effects.js new file mode 100644 index 000000000..af1b915d0 --- /dev/null +++ b/packages/ui/exports/overlays-no-side-effects.js @@ -0,0 +1 @@ +export { OverlaysManager } from '../components/overlays/src/OverlaysManager.js'; diff --git a/packages/ui/exports/overlays.js b/packages/ui/exports/overlays.js index 2dbc50c3e..ed03b0bd9 100644 --- a/packages/ui/exports/overlays.js +++ b/packages/ui/exports/overlays.js @@ -18,4 +18,4 @@ export { unsetSiblingsInert, } from '../components/overlays/src/utils/inert-siblings.js'; -export { overlays, setOverlays } from '../components/overlays/src/singleton.js'; +export { overlays } from '../components/overlays/src/singleton.js';