@lion/ui 0.1.0 → 0.1.2
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/components/calendar/src/LionCalendar.js +2 -3
- package/components/calendar/test/lion-calendar.test.js +5 -3
- package/components/form-core/src/validate/ValidateMixin.js +7 -3
- package/components/form-core/src/validate/validators/DateValidators.js +1 -1
- package/components/form-core/test/lion-field.test.js +4 -2
- package/components/form-core/test/validate/DateValidators.test.js +1 -1
- package/components/form-core/test-suites/FormatMixin.suite.js +1 -1
- package/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.js +6 -4
- package/components/form-integrations/test/form-group-methods.test.js +3 -3
- package/components/form-integrations/test/form-integrations.test.js +3 -3
- package/components/form-integrations/test/form-validation-integrations.test.js +11 -10
- package/components/form-integrations/test/helpers/umbrella-form.js +3 -3
- package/components/input-amount/src/LionInputAmount.js +2 -2
- package/components/input-amount/src/formatters.js +5 -1
- package/components/input-amount/src/parsers.js +1 -1
- package/components/input-amount/test/formatters.test.js +5 -3
- package/components/input-date/src/LionInputDate.js +1 -1
- package/components/input-date/test/lion-input-date.test.js +91 -43
- package/components/input-datepicker/src/LionInputDatepicker.js +1 -1
- package/components/input-email/src/LionInputEmail.js +1 -1
- package/components/input-iban/src/LionInputIban.js +1 -1
- package/components/input-iban/src/validators.js +14 -8
- package/components/input-range/src/LionInputRange.js +1 -1
- package/components/input-tel/src/LionInputTel.js +3 -3
- package/components/input-tel/test-suites/LionInputTel.suite.js +3 -2
- package/components/input-tel-dropdown/src/LionInputTelDropdown.js +7 -4
- package/components/localize/src/LocalizeManager.js +19 -3
- package/components/localize/src/LocalizeMixin.js +24 -9
- package/components/localize/src/date/formatDate.js +4 -3
- package/components/localize/src/date/parseDate.js +5 -3
- package/components/localize/src/getLocalizeManager.js +74 -0
- package/components/localize/src/number/formatNumber.js +5 -4
- package/components/localize/src/number/getCurrencyName.js +3 -2
- package/components/localize/src/number/parseNumber.js +3 -2
- package/components/localize/src/number/utils/emptyStringWhenNumberNan.js +3 -2
- package/components/localize/src/singleton.js +6 -9
- package/components/localize/src/utils/getLocale.js +3 -8
- package/components/localize/test/LocalizeManager.test.js +19 -2
- package/components/localize/test/LocalizeMixin.test.js +17 -15
- package/components/localize/test/date/formatDate.test.js +25 -24
- package/components/localize/test/date/getDateFormatBasedOnLocale.test.js +8 -3
- package/components/localize/test/date/parseDate.test.js +22 -7
- package/components/localize/test/getLocalizeManager.test.js +31 -0
- package/components/localize/test/localize.test.js +5 -4
- package/components/localize/test/number/formatNumber.test.js +31 -29
- package/components/localize/test/number/formatNumberToParts.test.js +5 -3
- package/components/localize/test/number/getCurrencyName.test.js +1 -1
- package/components/localize/test/number/parseNumber.test.js +37 -19
- package/components/localize/test/side-effect-free-entrypoint.test.js +38 -0
- package/components/localize/test-helpers/localizeTearDown.js +5 -4
- package/components/localize/types/LocalizeMixinTypes.ts +8 -1
- package/components/pagination/src/LionPagination.js +1 -1
- package/components/progress-indicator/src/LionProgressIndicator.js +3 -2
- package/components/select/src/LionSelect.js +15 -0
- package/components/select/test/lion-select.test.js +25 -0
- package/components/select-rich/src/LionSelectRich.js +6 -0
- package/components/select-rich/test/lion-select-rich.test.js +33 -0
- package/components/validate-messages/src/loadDefaultFeedbackMessages.js +2 -2
- package/components/validate-messages/test/loadDefaultFeedbackMessagesNoSideEffects.js +6 -4
- package/custom-elements.json +740 -15
- package/dist-types/components/calendar/src/LionCalendar.d.ts.map +1 -1
- package/dist-types/components/form-core/src/validate/ValidateMixin.d.ts.map +1 -1
- package/dist-types/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.d.ts.map +1 -1
- package/dist-types/components/input-amount/src/formatters.d.ts.map +1 -1
- package/dist-types/components/input-date/src/LionInputDate.d.ts +1 -1
- package/dist-types/components/input-iban/src/validators.d.ts.map +1 -1
- package/dist-types/components/input-tel/test-suites/LionInputTel.suite.d.ts.map +1 -1
- package/dist-types/components/input-tel-dropdown/src/LionInputTelDropdown.d.ts.map +1 -1
- package/dist-types/components/localize/src/LocalizeManager.d.ts +6 -2
- package/dist-types/components/localize/src/LocalizeManager.d.ts.map +1 -1
- package/dist-types/components/localize/src/LocalizeMixin.d.ts.map +1 -1
- package/dist-types/components/localize/src/date/formatDate.d.ts.map +1 -1
- package/dist-types/components/localize/src/date/parseDate.d.ts.map +1 -1
- package/dist-types/components/localize/src/getLocalizeManager.d.ts +60 -0
- package/dist-types/components/localize/src/getLocalizeManager.d.ts.map +1 -0
- package/dist-types/components/localize/src/number/formatNumber.d.ts.map +1 -1
- package/dist-types/components/localize/src/number/getCurrencyName.d.ts.map +1 -1
- package/dist-types/components/localize/src/number/parseNumber.d.ts.map +1 -1
- package/dist-types/components/localize/src/number/utils/emptyStringWhenNumberNan.d.ts.map +1 -1
- package/dist-types/components/localize/src/singleton.d.ts +5 -3
- package/dist-types/components/localize/src/singleton.d.ts.map +1 -1
- package/dist-types/components/localize/src/utils/getLocale.d.ts.map +1 -1
- package/dist-types/components/localize/test/getLocalizeManager.test.d.ts +2 -0
- package/dist-types/components/localize/test/getLocalizeManager.test.d.ts.map +1 -0
- package/dist-types/components/localize/test/side-effect-free-entrypoint.test.d.ts +2 -0
- package/dist-types/components/localize/test/side-effect-free-entrypoint.test.d.ts.map +1 -0
- package/dist-types/components/localize/test-helpers/localizeTearDown.d.ts.map +1 -1
- package/dist-types/components/localize/types/LocalizeMixinTypes.d.ts +2 -0
- package/dist-types/components/localize/types/LocalizeMixinTypes.d.ts.map +1 -1
- package/dist-types/components/progress-indicator/src/LionProgressIndicator.d.ts.map +1 -1
- package/dist-types/components/select/src/LionSelect.d.ts +1 -0
- package/dist-types/components/select/src/LionSelect.d.ts.map +1 -1
- package/dist-types/components/select-rich/src/LionSelectRich.d.ts.map +1 -1
- package/dist-types/exports/localize-no-side-effects.d.ts +18 -0
- package/dist-types/exports/types/core.d.ts +3 -0
- package/dist-types/exports/types/core.d.ts.map +1 -1
- package/dist-types/exports/types/form-core.d.ts +16 -0
- package/dist-types/exports/types/form-core.d.ts.map +1 -1
- package/dist-types/exports/types/localize.d.ts +1 -0
- package/dist-types/exports/types/localize.d.ts.map +1 -1
- package/dist-types/exports/types/overlays.d.ts +1 -0
- package/dist-types/exports/types/overlays.d.ts.map +1 -1
- package/dist-types/tsconfig.tsbuildinfo +1 -1
- package/docs/components/checkbox-group/overview.md +2 -2
- package/docs/components/collapsible/overview.md +1 -1
- package/docs/components/combobox/overview.md +1 -1
- package/docs/components/combobox/use-cases.md +1 -1
- package/docs/components/dialog/overview.md +1 -1
- package/docs/components/fieldset/overview.md +5 -5
- package/docs/components/form/overview.md +3 -3
- package/docs/components/form/use-cases.md +2 -2
- package/docs/components/icon/use-cases.md +1 -1
- package/docs/components/input/overview.md +1 -1
- package/docs/components/input-amount/overview.md +3 -3
- package/docs/components/input-date/overview.md +3 -3
- package/docs/components/input-datepicker/overview.md +5 -5
- package/docs/components/input-email/overview.md +2 -2
- package/docs/components/input-iban/overview.md +2 -2
- package/docs/components/input-range/overview.md +2 -2
- package/docs/components/input-stepper/overview.md +1 -1
- package/docs/components/input-tel/overview.md +1 -1
- package/docs/components/input-tel/use-cases.md +6 -6
- package/docs/components/input-tel-dropdown/overview.md +1 -1
- package/docs/components/radio-group/overview.md +3 -3
- package/docs/components/select-rich/use-cases.md +1 -1
- package/docs/components/tabs/examples.md +1 -1
- package/docs/fundamentals/index.md +4 -4
- package/docs/fundamentals/node-tools/providence-analytics/LocalConfiguration.md +1 -1
- package/docs/fundamentals/node-tools/providence-analytics/QueryResult.md +1 -1
- package/docs/fundamentals/node-tools/providence-analytics/analyzer.md +1 -1
- package/docs/fundamentals/node-tools/providence-analytics/dashboard.md +1 -1
- package/docs/fundamentals/node-tools/providence-analytics/overview.md +3 -3
- package/docs/fundamentals/node-tools/publish-docs/overview.md +3 -3
- package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +2 -2
- package/docs/fundamentals/systems/core/overview.md +1 -1
- package/docs/fundamentals/systems/form/formatting-and-parsing.md +4 -4
- package/docs/fundamentals/systems/form/model-value.md +1 -1
- package/docs/fundamentals/systems/form/overview.md +28 -28
- package/docs/fundamentals/systems/form/use-cases.md +3 -3
- package/docs/fundamentals/systems/form/validate.md +1 -1
- package/docs/fundamentals/systems/localize/overview.md +4 -4
- package/docs/fundamentals/systems/overlays/assets/umbrella-form.js +3 -3
- package/docs/fundamentals/systems/overlays/configuration.md +2 -2
- package/docs/fundamentals/systems/overlays/overview.md +5 -5
- package/docs/fundamentals/systems/overlays/use-cases.md +2 -2
- package/docs/fundamentals/tools/helpers/overview.md +1 -1
- package/docs/fundamentals/tools/singleton-manager/overview.md +4 -4
- package/docs/guides/how-to/create-a-custom-field.md +5 -5
- package/docs/guides/how-to/extend-a-native-input.md +2 -2
- package/docs/guides/index.md +8 -8
- package/docs/guides/principles/index.md +5 -5
- package/docs/guides/principles/styling.md +1 -1
- package/exports/localize-no-side-effects.js +19 -0
- package/exports/types/core.ts +3 -0
- package/exports/types/form-core.ts +16 -0
- package/exports/types/localize.ts +1 -0
- package/exports/types/overlays.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { expect } from '@open-wc/testing';
|
|
2
|
+
import sinon from 'sinon';
|
|
3
|
+
// @ts-ignore
|
|
4
|
+
import { singletonManager } from 'singleton-manager';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @typedef {import('../types/LocalizeMixinTypes.js').LocalizeMixin} LocalizeMixinHost
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
describe('Entrypoints localize', () => {
|
|
11
|
+
/** @type {import('sinon').SinonSpy} */
|
|
12
|
+
let singletonManagerSetSpy;
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
singletonManagerSetSpy = sinon.spy(singletonManager, 'set');
|
|
15
|
+
});
|
|
16
|
+
afterEach(() => {
|
|
17
|
+
singletonManagerSetSpy.restore();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('"@lion/ui/localize-no-side-effects.js" has no side effects (c.q. does not register itself on singletonManager)', async () => {
|
|
21
|
+
await import('@lion/ui/localize-no-side-effects.js');
|
|
22
|
+
|
|
23
|
+
expect(singletonManagerSetSpy).to.not.have.been.called;
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it('"@lion/ui/localize.js" has side effects (c.q. registers itself on singletonManager)', async () => {
|
|
27
|
+
await import('@lion/ui/localize.js');
|
|
28
|
+
|
|
29
|
+
expect(singletonManagerSetSpy).to.have.been.calledOnce;
|
|
30
|
+
|
|
31
|
+
const { getLocalizeManager } = await import('@lion/ui/localize-no-side-effects.js');
|
|
32
|
+
|
|
33
|
+
expect(singletonManagerSetSpy).to.have.been.calledWith(
|
|
34
|
+
'@lion/ui::localize::0.x',
|
|
35
|
+
getLocalizeManager(),
|
|
36
|
+
);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getLocalizeManager } from '@lion/ui/localize-no-side-effects.js';
|
|
2
2
|
|
|
3
3
|
export const localizeTearDown = () => {
|
|
4
|
+
const localizeManager = getLocalizeManager();
|
|
4
5
|
// makes sure that between tests the localization is reset to default state
|
|
5
6
|
// @ts-ignore
|
|
6
|
-
|
|
7
|
+
localizeManager._teardownHtmlLangAttributeObserver();
|
|
7
8
|
document.documentElement.lang = 'en-GB';
|
|
8
9
|
// @ts-ignore
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
localizeManager._setupHtmlLangAttributeObserver();
|
|
11
|
+
localizeManager.reset();
|
|
11
12
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Constructor } from '@open-wc/dedupe-mixin';
|
|
2
2
|
import { LitElement } from 'lit';
|
|
3
3
|
import { DirectiveResult } from 'lit/directive.js';
|
|
4
|
+
import { LocalizeManager } from '../src/LocalizeManager.js';
|
|
4
5
|
|
|
5
6
|
export interface FormatNumberPart {
|
|
6
7
|
type: string;
|
|
@@ -76,7 +77,13 @@ export declare class LocalizeMixinHost {
|
|
|
76
77
|
public onLocaleUpdated(): void;
|
|
77
78
|
public connectedCallback(): void;
|
|
78
79
|
public disconnectedCallback(): void;
|
|
79
|
-
public msgLit(
|
|
80
|
+
public msgLit(
|
|
81
|
+
keys: string | string[],
|
|
82
|
+
variables?: msgVariables,
|
|
83
|
+
options?: msgOptions,
|
|
84
|
+
): string | DirectiveResult;
|
|
85
|
+
|
|
86
|
+
protected _localizeManager: LocalizeManager;
|
|
80
87
|
|
|
81
88
|
private __boundLocalizeOnLocaleChanged(...args: Object[]): void;
|
|
82
89
|
private __boundLocalizeOnLocaleChanging(...args: Object[]): void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable import/no-extraneous-dependencies */
|
|
2
2
|
import { LitElement, html, css } from 'lit';
|
|
3
|
-
import { LocalizeMixin } from '@lion/ui/localize.js';
|
|
3
|
+
import { LocalizeMixin } from '@lion/ui/localize-no-side-effects.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @typedef {import('lit').TemplateResult} TemplateResult
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable import/no-extraneous-dependencies */
|
|
2
2
|
import { LitElement, nothing } from 'lit';
|
|
3
|
-
import {
|
|
3
|
+
import { getLocalizeManager, LocalizeMixin } from '@lion/ui/localize-no-side-effects.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @typedef {import('lit').TemplateResult} TemplateResult
|
|
@@ -195,10 +195,11 @@ export class LionProgressIndicator extends LocalizeMixin(LitElement) {
|
|
|
195
195
|
}
|
|
196
196
|
|
|
197
197
|
_setDefaultLabel() {
|
|
198
|
+
const localizeManager = getLocalizeManager();
|
|
198
199
|
if (this._ariaLabelledby) {
|
|
199
200
|
this.removeAttribute('aria-label');
|
|
200
201
|
} else if (!this._ariaLabel) {
|
|
201
|
-
this.setAttribute('aria-label',
|
|
202
|
+
this.setAttribute('aria-label', localizeManager.msg('lion-progress-indicator:loading'));
|
|
202
203
|
this.__hasDefaultLabelSet = true;
|
|
203
204
|
}
|
|
204
205
|
}
|
|
@@ -60,6 +60,20 @@ export class LionSelect extends LionFieldWithSelect {
|
|
|
60
60
|
connectedCallback() {
|
|
61
61
|
super.connectedCallback();
|
|
62
62
|
this._inputNode.addEventListener('change', this._proxyChangeEvent);
|
|
63
|
+
|
|
64
|
+
this.__selectObserver = new MutationObserver(() => {
|
|
65
|
+
this._syncValueUpwards();
|
|
66
|
+
// We need to force computation of other values in case model didn't change
|
|
67
|
+
// This can happen when options are loaded asynchronously so the modelValue doesn't change
|
|
68
|
+
// The MutationObserver detects this and makes sure the modelValue is updated
|
|
69
|
+
this._calculateValues({ source: 'model' });
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
this.__selectObserver.observe(this._inputNode, {
|
|
73
|
+
attributes: true,
|
|
74
|
+
childList: true,
|
|
75
|
+
subtree: true,
|
|
76
|
+
});
|
|
63
77
|
}
|
|
64
78
|
|
|
65
79
|
/** @param {import('lit').PropertyValues } changedProperties */
|
|
@@ -82,6 +96,7 @@ export class LionSelect extends LionFieldWithSelect {
|
|
|
82
96
|
disconnectedCallback() {
|
|
83
97
|
super.disconnectedCallback();
|
|
84
98
|
this._inputNode.removeEventListener('change', this._proxyChangeEvent);
|
|
99
|
+
this.__selectObserver?.disconnect();
|
|
85
100
|
}
|
|
86
101
|
|
|
87
102
|
/**
|
|
@@ -44,6 +44,31 @@ describe('lion-select', () => {
|
|
|
44
44
|
expect(lionSelect.formattedValue).to.equal('');
|
|
45
45
|
});
|
|
46
46
|
|
|
47
|
+
it('updates the formattedValue correctly when the value for the selected option is updated', async () => {
|
|
48
|
+
const lionSelect = /** @type {LionSelect} */ (
|
|
49
|
+
await fixture(html`
|
|
50
|
+
<lion-select label="Foo item" .modelValue="${'nr2'}">
|
|
51
|
+
<select slot="input">
|
|
52
|
+
<option value="nr1">Item 1</option>
|
|
53
|
+
<option value="nr2"></option>
|
|
54
|
+
<option value="nr3"></option>
|
|
55
|
+
</select>
|
|
56
|
+
</lion-select>
|
|
57
|
+
`)
|
|
58
|
+
);
|
|
59
|
+
expect(lionSelect.serializedValue).to.equal('nr2');
|
|
60
|
+
expect(lionSelect.formattedValue).to.equal('');
|
|
61
|
+
|
|
62
|
+
const select = /** @type {HTMLSlotElement} */ (
|
|
63
|
+
lionSelect.shadowRoot?.querySelector('slot[name=input]')
|
|
64
|
+
).assignedElements()[0];
|
|
65
|
+
const options = select.querySelectorAll('option');
|
|
66
|
+
options[1].textContent = 'Item 2';
|
|
67
|
+
|
|
68
|
+
await aTimeout;
|
|
69
|
+
expect(lionSelect.formattedValue).to.equal('Item 2');
|
|
70
|
+
});
|
|
71
|
+
|
|
47
72
|
it('is accessible', async () => {
|
|
48
73
|
const lionSelect = await fixture(html`
|
|
49
74
|
<lion-select .modelValue="${'nr2'}">
|
|
@@ -369,6 +369,11 @@ export class LionSelectRich extends SlotMixin(ScopedElementsMixin(OverlayMixin(L
|
|
|
369
369
|
if (this.hasNoDefaultSelected) {
|
|
370
370
|
this._noDefaultSelectedInheritsWidth();
|
|
371
371
|
}
|
|
372
|
+
|
|
373
|
+
// When `trapsKeyboardFocus:true` is configured in our overlay, we need to make sure
|
|
374
|
+
// that our element with [role=listbox] gets focus. The `containFocus` util will look
|
|
375
|
+
// for an element with [autofocus] (otherwise it sets focus to `contentNode` (the 'root' of the overlay))
|
|
376
|
+
this._listboxNode.setAttribute('autofocus', '');
|
|
372
377
|
}
|
|
373
378
|
|
|
374
379
|
/** @private */
|
|
@@ -382,6 +387,7 @@ export class LionSelectRich extends SlotMixin(ScopedElementsMixin(OverlayMixin(L
|
|
|
382
387
|
/** @private */
|
|
383
388
|
__overlayOnHide() {
|
|
384
389
|
this._invokerNode.focus();
|
|
390
|
+
this._listboxNode.removeAttribute('autofocus');
|
|
385
391
|
}
|
|
386
392
|
|
|
387
393
|
/**
|
|
@@ -424,6 +424,39 @@ describe('lion-select-rich', () => {
|
|
|
424
424
|
expect(el.singleOption).to.be.false;
|
|
425
425
|
expect(_invokerNode.singleOption).to.be.false;
|
|
426
426
|
});
|
|
427
|
+
|
|
428
|
+
it('adds/removes the autofocus attribute to/from _listboxNode', async () => {
|
|
429
|
+
const el = await fixture(html` <lion-select-rich></lion-select-rich> `);
|
|
430
|
+
const { _listboxNode } = getSelectRichMembers(el);
|
|
431
|
+
|
|
432
|
+
expect(_listboxNode.hasAttribute('autofocus')).to.be.false;
|
|
433
|
+
|
|
434
|
+
el.opened = true;
|
|
435
|
+
await el.updateComplete;
|
|
436
|
+
expect(_listboxNode.hasAttribute('autofocus')).to.be.true;
|
|
437
|
+
|
|
438
|
+
el.opened = false;
|
|
439
|
+
await el.updateComplete;
|
|
440
|
+
await el.updateComplete; // safari takes a little longer
|
|
441
|
+
expect(_listboxNode.hasAttribute('autofocus')).to.be.false;
|
|
442
|
+
});
|
|
443
|
+
|
|
444
|
+
it('adds focus to element with [role=listbox] when trapsKeyboardFocus is true', async () => {
|
|
445
|
+
const el = await fixture(
|
|
446
|
+
html` <lion-select-rich .config=${{ trapsKeyboardFocus: true }}></lion-select-rich> `,
|
|
447
|
+
);
|
|
448
|
+
const { _listboxNode } = getSelectRichMembers(el);
|
|
449
|
+
expect(document.activeElement).to.not.equal(_listboxNode);
|
|
450
|
+
|
|
451
|
+
el.opened = true;
|
|
452
|
+
await el.updateComplete;
|
|
453
|
+
expect(document.activeElement).to.equal(_listboxNode);
|
|
454
|
+
|
|
455
|
+
el.opened = false;
|
|
456
|
+
await el.updateComplete;
|
|
457
|
+
await el.updateComplete; // safari takes a little longer
|
|
458
|
+
expect(document.activeElement).to.not.equal(_listboxNode);
|
|
459
|
+
});
|
|
427
460
|
});
|
|
428
461
|
|
|
429
462
|
describe('interaction-mode', () => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable import/no-extraneous-dependencies */
|
|
2
|
-
import {
|
|
2
|
+
import { getLocalizeManager } from '@lion/ui/localize-no-side-effects.js';
|
|
3
3
|
import { loadDefaultFeedbackMessagesNoSideEffects } from './loadDefaultFeedbackMessagesNoSideEffects.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -7,5 +7,5 @@ import { loadDefaultFeedbackMessagesNoSideEffects } from './loadDefaultFeedbackM
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
export function loadDefaultFeedbackMessages() {
|
|
10
|
-
return loadDefaultFeedbackMessagesNoSideEffects({ localize });
|
|
10
|
+
return loadDefaultFeedbackMessagesNoSideEffects({ localize: getLocalizeManager() });
|
|
11
11
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint-disable no-unused-vars, no-param-reassign */
|
|
2
2
|
import { expect } from '@open-wc/testing';
|
|
3
|
-
import {
|
|
3
|
+
import { getLocalizeManager } from '@lion/ui/localize-no-side-effects.js';
|
|
4
4
|
import { Required } from '@lion/ui/form-core.js';
|
|
5
5
|
import { loadDefaultFeedbackMessagesNoSideEffects } from '@lion/ui/validate-messages-no-side-effects.js';
|
|
6
6
|
|
|
@@ -20,6 +20,8 @@ function getProtectedMembers(validatorEl) {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
describe('loadDefaultFeedbackMessagesNoSideEffects', () => {
|
|
23
|
+
const localizeManager = getLocalizeManager();
|
|
24
|
+
|
|
23
25
|
it('will set default feedback message for Required', async () => {
|
|
24
26
|
const el = new Required();
|
|
25
27
|
const { getMessage } = getProtectedMembers(el);
|
|
@@ -27,18 +29,18 @@ describe('loadDefaultFeedbackMessagesNoSideEffects', () => {
|
|
|
27
29
|
'Please configure an error message for "Required" by overriding "static async getMessage()"',
|
|
28
30
|
);
|
|
29
31
|
|
|
30
|
-
loadDefaultFeedbackMessagesNoSideEffects({ localize });
|
|
32
|
+
loadDefaultFeedbackMessagesNoSideEffects({ localize: localizeManager });
|
|
31
33
|
expect(await getMessage({ fieldName: 'password' })).to.equal('Please enter a(n) password.');
|
|
32
34
|
});
|
|
33
35
|
|
|
34
36
|
it('will await loading of translations when switching locale', async () => {
|
|
35
37
|
const el = new Required();
|
|
36
38
|
const { getMessage } = getProtectedMembers(el);
|
|
37
|
-
loadDefaultFeedbackMessagesNoSideEffects({ localize });
|
|
39
|
+
loadDefaultFeedbackMessagesNoSideEffects({ localize: localizeManager });
|
|
38
40
|
expect(await getMessage({ fieldName: 'password' })).to.equal('Please enter a(n) password.');
|
|
39
41
|
expect(await getMessage({ fieldName: 'user name' })).to.equal('Please enter a(n) user name.');
|
|
40
42
|
|
|
41
|
-
|
|
43
|
+
localizeManager.locale = 'de-DE';
|
|
42
44
|
expect(await getMessage({ fieldName: 'Password' })).to.equal(
|
|
43
45
|
'Password muss ausgefüllt werden.',
|
|
44
46
|
);
|