@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.
Files changed (158) hide show
  1. package/components/calendar/src/LionCalendar.js +2 -3
  2. package/components/calendar/test/lion-calendar.test.js +5 -3
  3. package/components/form-core/src/validate/ValidateMixin.js +7 -3
  4. package/components/form-core/src/validate/validators/DateValidators.js +1 -1
  5. package/components/form-core/test/lion-field.test.js +4 -2
  6. package/components/form-core/test/validate/DateValidators.test.js +1 -1
  7. package/components/form-core/test-suites/FormatMixin.suite.js +1 -1
  8. package/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.js +6 -4
  9. package/components/form-integrations/test/form-group-methods.test.js +3 -3
  10. package/components/form-integrations/test/form-integrations.test.js +3 -3
  11. package/components/form-integrations/test/form-validation-integrations.test.js +11 -10
  12. package/components/form-integrations/test/helpers/umbrella-form.js +3 -3
  13. package/components/input-amount/src/LionInputAmount.js +2 -2
  14. package/components/input-amount/src/formatters.js +5 -1
  15. package/components/input-amount/src/parsers.js +1 -1
  16. package/components/input-amount/test/formatters.test.js +5 -3
  17. package/components/input-date/src/LionInputDate.js +1 -1
  18. package/components/input-date/test/lion-input-date.test.js +91 -43
  19. package/components/input-datepicker/src/LionInputDatepicker.js +1 -1
  20. package/components/input-email/src/LionInputEmail.js +1 -1
  21. package/components/input-iban/src/LionInputIban.js +1 -1
  22. package/components/input-iban/src/validators.js +14 -8
  23. package/components/input-range/src/LionInputRange.js +1 -1
  24. package/components/input-tel/src/LionInputTel.js +3 -3
  25. package/components/input-tel/test-suites/LionInputTel.suite.js +3 -2
  26. package/components/input-tel-dropdown/src/LionInputTelDropdown.js +7 -4
  27. package/components/localize/src/LocalizeManager.js +19 -3
  28. package/components/localize/src/LocalizeMixin.js +24 -9
  29. package/components/localize/src/date/formatDate.js +4 -3
  30. package/components/localize/src/date/parseDate.js +5 -3
  31. package/components/localize/src/getLocalizeManager.js +74 -0
  32. package/components/localize/src/number/formatNumber.js +5 -4
  33. package/components/localize/src/number/getCurrencyName.js +3 -2
  34. package/components/localize/src/number/parseNumber.js +3 -2
  35. package/components/localize/src/number/utils/emptyStringWhenNumberNan.js +3 -2
  36. package/components/localize/src/singleton.js +6 -9
  37. package/components/localize/src/utils/getLocale.js +3 -8
  38. package/components/localize/test/LocalizeManager.test.js +19 -2
  39. package/components/localize/test/LocalizeMixin.test.js +17 -15
  40. package/components/localize/test/date/formatDate.test.js +25 -24
  41. package/components/localize/test/date/getDateFormatBasedOnLocale.test.js +8 -3
  42. package/components/localize/test/date/parseDate.test.js +22 -7
  43. package/components/localize/test/getLocalizeManager.test.js +31 -0
  44. package/components/localize/test/localize.test.js +5 -4
  45. package/components/localize/test/number/formatNumber.test.js +31 -29
  46. package/components/localize/test/number/formatNumberToParts.test.js +5 -3
  47. package/components/localize/test/number/getCurrencyName.test.js +1 -1
  48. package/components/localize/test/number/parseNumber.test.js +37 -19
  49. package/components/localize/test/side-effect-free-entrypoint.test.js +38 -0
  50. package/components/localize/test-helpers/localizeTearDown.js +5 -4
  51. package/components/localize/types/LocalizeMixinTypes.ts +8 -1
  52. package/components/pagination/src/LionPagination.js +1 -1
  53. package/components/progress-indicator/src/LionProgressIndicator.js +3 -2
  54. package/components/select/src/LionSelect.js +15 -0
  55. package/components/select/test/lion-select.test.js +25 -0
  56. package/components/select-rich/src/LionSelectRich.js +6 -0
  57. package/components/select-rich/test/lion-select-rich.test.js +33 -0
  58. package/components/validate-messages/src/loadDefaultFeedbackMessages.js +2 -2
  59. package/components/validate-messages/test/loadDefaultFeedbackMessagesNoSideEffects.js +6 -4
  60. package/custom-elements.json +740 -15
  61. package/dist-types/components/calendar/src/LionCalendar.d.ts.map +1 -1
  62. package/dist-types/components/form-core/src/validate/ValidateMixin.d.ts.map +1 -1
  63. package/dist-types/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.d.ts.map +1 -1
  64. package/dist-types/components/input-amount/src/formatters.d.ts.map +1 -1
  65. package/dist-types/components/input-date/src/LionInputDate.d.ts +1 -1
  66. package/dist-types/components/input-iban/src/validators.d.ts.map +1 -1
  67. package/dist-types/components/input-tel/test-suites/LionInputTel.suite.d.ts.map +1 -1
  68. package/dist-types/components/input-tel-dropdown/src/LionInputTelDropdown.d.ts.map +1 -1
  69. package/dist-types/components/localize/src/LocalizeManager.d.ts +6 -2
  70. package/dist-types/components/localize/src/LocalizeManager.d.ts.map +1 -1
  71. package/dist-types/components/localize/src/LocalizeMixin.d.ts.map +1 -1
  72. package/dist-types/components/localize/src/date/formatDate.d.ts.map +1 -1
  73. package/dist-types/components/localize/src/date/parseDate.d.ts.map +1 -1
  74. package/dist-types/components/localize/src/getLocalizeManager.d.ts +60 -0
  75. package/dist-types/components/localize/src/getLocalizeManager.d.ts.map +1 -0
  76. package/dist-types/components/localize/src/number/formatNumber.d.ts.map +1 -1
  77. package/dist-types/components/localize/src/number/getCurrencyName.d.ts.map +1 -1
  78. package/dist-types/components/localize/src/number/parseNumber.d.ts.map +1 -1
  79. package/dist-types/components/localize/src/number/utils/emptyStringWhenNumberNan.d.ts.map +1 -1
  80. package/dist-types/components/localize/src/singleton.d.ts +5 -3
  81. package/dist-types/components/localize/src/singleton.d.ts.map +1 -1
  82. package/dist-types/components/localize/src/utils/getLocale.d.ts.map +1 -1
  83. package/dist-types/components/localize/test/getLocalizeManager.test.d.ts +2 -0
  84. package/dist-types/components/localize/test/getLocalizeManager.test.d.ts.map +1 -0
  85. package/dist-types/components/localize/test/side-effect-free-entrypoint.test.d.ts +2 -0
  86. package/dist-types/components/localize/test/side-effect-free-entrypoint.test.d.ts.map +1 -0
  87. package/dist-types/components/localize/test-helpers/localizeTearDown.d.ts.map +1 -1
  88. package/dist-types/components/localize/types/LocalizeMixinTypes.d.ts +2 -0
  89. package/dist-types/components/localize/types/LocalizeMixinTypes.d.ts.map +1 -1
  90. package/dist-types/components/progress-indicator/src/LionProgressIndicator.d.ts.map +1 -1
  91. package/dist-types/components/select/src/LionSelect.d.ts +1 -0
  92. package/dist-types/components/select/src/LionSelect.d.ts.map +1 -1
  93. package/dist-types/components/select-rich/src/LionSelectRich.d.ts.map +1 -1
  94. package/dist-types/exports/localize-no-side-effects.d.ts +18 -0
  95. package/dist-types/exports/types/core.d.ts +3 -0
  96. package/dist-types/exports/types/core.d.ts.map +1 -1
  97. package/dist-types/exports/types/form-core.d.ts +16 -0
  98. package/dist-types/exports/types/form-core.d.ts.map +1 -1
  99. package/dist-types/exports/types/localize.d.ts +1 -0
  100. package/dist-types/exports/types/localize.d.ts.map +1 -1
  101. package/dist-types/exports/types/overlays.d.ts +1 -0
  102. package/dist-types/exports/types/overlays.d.ts.map +1 -1
  103. package/dist-types/tsconfig.tsbuildinfo +1 -1
  104. package/docs/components/checkbox-group/overview.md +2 -2
  105. package/docs/components/collapsible/overview.md +1 -1
  106. package/docs/components/combobox/overview.md +1 -1
  107. package/docs/components/combobox/use-cases.md +1 -1
  108. package/docs/components/dialog/overview.md +1 -1
  109. package/docs/components/fieldset/overview.md +5 -5
  110. package/docs/components/form/overview.md +3 -3
  111. package/docs/components/form/use-cases.md +2 -2
  112. package/docs/components/icon/use-cases.md +1 -1
  113. package/docs/components/input/overview.md +1 -1
  114. package/docs/components/input-amount/overview.md +3 -3
  115. package/docs/components/input-date/overview.md +3 -3
  116. package/docs/components/input-datepicker/overview.md +5 -5
  117. package/docs/components/input-email/overview.md +2 -2
  118. package/docs/components/input-iban/overview.md +2 -2
  119. package/docs/components/input-range/overview.md +2 -2
  120. package/docs/components/input-stepper/overview.md +1 -1
  121. package/docs/components/input-tel/overview.md +1 -1
  122. package/docs/components/input-tel/use-cases.md +6 -6
  123. package/docs/components/input-tel-dropdown/overview.md +1 -1
  124. package/docs/components/radio-group/overview.md +3 -3
  125. package/docs/components/select-rich/use-cases.md +1 -1
  126. package/docs/components/tabs/examples.md +1 -1
  127. package/docs/fundamentals/index.md +4 -4
  128. package/docs/fundamentals/node-tools/providence-analytics/LocalConfiguration.md +1 -1
  129. package/docs/fundamentals/node-tools/providence-analytics/QueryResult.md +1 -1
  130. package/docs/fundamentals/node-tools/providence-analytics/analyzer.md +1 -1
  131. package/docs/fundamentals/node-tools/providence-analytics/dashboard.md +1 -1
  132. package/docs/fundamentals/node-tools/providence-analytics/overview.md +3 -3
  133. package/docs/fundamentals/node-tools/publish-docs/overview.md +3 -3
  134. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +2 -2
  135. package/docs/fundamentals/systems/core/overview.md +1 -1
  136. package/docs/fundamentals/systems/form/formatting-and-parsing.md +4 -4
  137. package/docs/fundamentals/systems/form/model-value.md +1 -1
  138. package/docs/fundamentals/systems/form/overview.md +28 -28
  139. package/docs/fundamentals/systems/form/use-cases.md +3 -3
  140. package/docs/fundamentals/systems/form/validate.md +1 -1
  141. package/docs/fundamentals/systems/localize/overview.md +4 -4
  142. package/docs/fundamentals/systems/overlays/assets/umbrella-form.js +3 -3
  143. package/docs/fundamentals/systems/overlays/configuration.md +2 -2
  144. package/docs/fundamentals/systems/overlays/overview.md +5 -5
  145. package/docs/fundamentals/systems/overlays/use-cases.md +2 -2
  146. package/docs/fundamentals/tools/helpers/overview.md +1 -1
  147. package/docs/fundamentals/tools/singleton-manager/overview.md +4 -4
  148. package/docs/guides/how-to/create-a-custom-field.md +5 -5
  149. package/docs/guides/how-to/extend-a-native-input.md +2 -2
  150. package/docs/guides/index.md +8 -8
  151. package/docs/guides/principles/index.md +5 -5
  152. package/docs/guides/principles/styling.md +1 -1
  153. package/exports/localize-no-side-effects.js +19 -0
  154. package/exports/types/core.ts +3 -0
  155. package/exports/types/form-core.ts +16 -0
  156. package/exports/types/localize.ts +1 -0
  157. package/exports/types/overlays.ts +1 -0
  158. 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 { localize } from '@lion/ui/localize.js';
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
- localize._teardownHtmlLangAttributeObserver();
7
+ localizeManager._teardownHtmlLangAttributeObserver();
7
8
  document.documentElement.lang = 'en-GB';
8
9
  // @ts-ignore
9
- localize._setupHtmlLangAttributeObserver();
10
- localize.reset();
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(keys: string | string[], variables?: msgVariables, options?: msgOptions): string | DirectiveResult;
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 { localize, LocalizeMixin } from '@lion/ui/localize.js';
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', localize.msg('lion-progress-indicator:loading'));
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 { localize } from '@lion/ui/localize.js';
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 { localize } from '@lion/ui/localize.js';
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
- localize.locale = 'de-DE';
43
+ localizeManager.locale = 'de-DE';
42
44
  expect(await getMessage({ fieldName: 'Password' })).to.equal(
43
45
  'Password muss ausgefüllt werden.',
44
46
  );