@lion/ui 0.4.1 → 0.5.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.
Files changed (158) hide show
  1. package/components/calendar/src/LionCalendar.js +5 -3
  2. package/components/calendar/test-helpers/DayObject.js +2 -2
  3. package/components/combobox/src/LionCombobox.js +82 -29
  4. package/components/combobox/test/lion-combobox-integrations.test.js +5 -0
  5. package/components/combobox/test/lion-combobox.test.js +318 -23
  6. package/components/combobox/test-helpers/combobox-helpers.js +19 -22
  7. package/components/drawer/src/LionDrawer.js +1 -0
  8. package/components/form-core/src/FocusMixin.js +2 -0
  9. package/components/form-core/src/FormControlMixin.js +1 -1
  10. package/components/form-core/src/choice-group/ChoiceGroupMixin.js +1 -0
  11. package/components/form-core/src/choice-group/CustomChoiceGroupMixin.js +173 -0
  12. package/components/form-core/src/utils/getAriaElementsInRightDomOrder.js +7 -14
  13. package/components/form-core/src/validate/validators/Required.js +2 -2
  14. package/components/form-core/test/choice-group/CustomChoiceGroupMixin.integrations.test.js +55 -0
  15. package/components/form-core/test/choice-group/CustomChoiceGroupMixin.test.js +16 -0
  16. package/components/form-core/test/utils/getAriaElementsInRightDomOrder.test.js +0 -25
  17. package/components/form-core/test/validate/StringValidators.test.js +1 -1
  18. package/components/form-core/test-helpers/ExampleValidators.js +1 -3
  19. package/components/form-core/test-suites/FormRegistrationMixins.suite.js +2 -0
  20. package/components/form-core/test-suites/NativeTextFieldMixin.suite.js +4 -4
  21. package/components/form-core/test-suites/ValidateMixin.suite.js +27 -0
  22. package/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.js +11 -2
  23. package/components/form-core/test-suites/choice-group/ChoiceGroupMixin.suite.js +1 -0
  24. package/components/form-core/test-suites/choice-group/CustomChoiceGroupMixin.suite.js +265 -0
  25. package/components/form-core/types/choice-group/ChoiceGroupMixinTypes.ts +1 -1
  26. package/components/form-core/types/choice-group/CustomChoiceGroupMixinTypes.ts +30 -0
  27. package/components/form-core/types/choice-group/index.ts +1 -0
  28. package/components/helpers/src/SbActionLogger.js +1 -0
  29. package/components/icon/src/LionIcon.js +1 -9
  30. package/components/icon/test/lion-icon.test.js +2 -0
  31. package/components/input-amount/src/LionInputAmount.js +5 -2
  32. package/components/input-amount/test/lion-input-amount.test.js +21 -0
  33. package/components/input-range/test/lion-input-range.test.js +12 -6
  34. package/components/listbox/src/LionOptions.js +5 -5
  35. package/components/listbox/src/ListboxMixin.js +1 -16
  36. package/components/listbox/test/lion-options.test.js +1 -1
  37. package/components/listbox/test-suites/ListboxMixin.suite.js +1 -1
  38. package/components/localize/src/date/getMonthNames.js +3 -0
  39. package/components/localize/src/date/utils/forceDotsForNlnl.js +11 -0
  40. package/components/localize/src/number/utils/normalize-format-number-to-parts/forceAddGroupSeparators.js +3 -1
  41. package/components/localize/src/number/utils/normalize-format-number-to-parts/forceSymbols.js +2 -0
  42. package/components/localize/src/number/utils/normalize-format-number-to-parts/normalizeIntl.js +1 -0
  43. package/components/localize/test/date/getMonthNames.test.js +1 -0
  44. package/components/localize/test-helpers/fake-imports.js +1 -0
  45. package/components/overlays/src/utils/adopt-styles.js +1 -1
  46. package/components/radio-group/src/LionRadioGroup.js +1 -1
  47. package/components/radio-group/test/lion-radio-group.test.js +29 -0
  48. package/components/select/test/lion-select.test.js +1 -1
  49. package/components/switch/src/LionSwitchButton.js +1 -5
  50. package/components/tabs/src/LionTabs.js +7 -7
  51. package/components/textarea/src/LionTextarea.js +1 -1
  52. package/custom-elements.json +103314 -61972
  53. package/dist-types/components/calendar/src/LionCalendar.d.ts.map +1 -1
  54. package/dist-types/components/combobox/src/LionCombobox.d.ts +13 -8
  55. package/dist-types/components/combobox/src/LionCombobox.d.ts.map +1 -1
  56. package/dist-types/components/combobox/test-helpers/combobox-helpers.d.ts.map +1 -1
  57. package/dist-types/components/drawer/src/LionDrawer.d.ts.map +1 -1
  58. package/dist-types/components/form-core/src/FocusMixin.d.ts.map +1 -1
  59. package/dist-types/components/form-core/src/choice-group/ChoiceGroupMixin.d.ts.map +1 -1
  60. package/dist-types/components/form-core/src/choice-group/CustomChoiceGroupMixin.d.ts +4 -0
  61. package/dist-types/components/form-core/src/choice-group/CustomChoiceGroupMixin.d.ts.map +1 -0
  62. package/dist-types/components/form-core/src/utils/getAriaElementsInRightDomOrder.d.ts +5 -5
  63. package/dist-types/components/form-core/src/utils/getAriaElementsInRightDomOrder.d.ts.map +1 -1
  64. package/dist-types/components/form-core/test/choice-group/CustomChoiceGroupMixin.integrations.test.d.ts +2 -0
  65. package/dist-types/components/form-core/test/choice-group/CustomChoiceGroupMixin.integrations.test.d.ts.map +1 -0
  66. package/dist-types/components/form-core/test/choice-group/CustomChoiceGroupMixin.test.d.ts +6 -0
  67. package/dist-types/components/form-core/test/choice-group/CustomChoiceGroupMixin.test.d.ts.map +1 -0
  68. package/dist-types/components/form-core/test-helpers/ExampleValidators.d.ts +0 -1
  69. package/dist-types/components/form-core/test-helpers/ExampleValidators.d.ts.map +1 -1
  70. package/dist-types/components/form-core/test-suites/FormRegistrationMixins.suite.d.ts.map +1 -1
  71. package/dist-types/components/form-core/test-suites/ValidateMixin.suite.d.ts.map +1 -1
  72. package/dist-types/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.d.ts.map +1 -1
  73. package/dist-types/components/form-core/test-suites/choice-group/ChoiceGroupMixin.suite.d.ts.map +1 -1
  74. package/dist-types/components/form-core/test-suites/choice-group/CustomChoiceGroupMixin.suite.d.ts +14 -0
  75. package/dist-types/components/form-core/test-suites/choice-group/CustomChoiceGroupMixin.suite.d.ts.map +1 -0
  76. package/dist-types/components/form-core/types/choice-group/ChoiceGroupMixinTypes.d.ts +1 -1
  77. package/dist-types/components/form-core/types/choice-group/ChoiceGroupMixinTypes.d.ts.map +1 -1
  78. package/dist-types/components/form-core/types/choice-group/CustomChoiceGroupMixinTypes.d.ts +18 -0
  79. package/dist-types/components/form-core/types/choice-group/CustomChoiceGroupMixinTypes.d.ts.map +1 -0
  80. package/dist-types/components/form-core/types/choice-group/index.d.ts +1 -0
  81. package/dist-types/components/form-core/types/choice-group/index.d.ts.map +1 -1
  82. package/dist-types/components/helpers/src/SbActionLogger.d.ts.map +1 -1
  83. package/dist-types/components/icon/src/LionIcon.d.ts +0 -9
  84. package/dist-types/components/icon/src/LionIcon.d.ts.map +1 -1
  85. package/dist-types/components/input-amount/src/LionInputAmount.d.ts +2 -2
  86. package/dist-types/components/input-amount/src/LionInputAmount.d.ts.map +1 -1
  87. package/dist-types/components/listbox/src/LionOptions.d.ts +0 -5
  88. package/dist-types/components/listbox/src/LionOptions.d.ts.map +1 -1
  89. package/dist-types/components/listbox/src/ListboxMixin.d.ts.map +1 -1
  90. package/dist-types/components/localize/src/date/getMonthNames.d.ts.map +1 -1
  91. package/dist-types/components/localize/src/date/utils/forceDotsForNlnl.d.ts +5 -0
  92. package/dist-types/components/localize/src/date/utils/forceDotsForNlnl.d.ts.map +1 -0
  93. package/dist-types/components/localize/src/number/utils/normalize-format-number-to-parts/forceAddGroupSeparators.d.ts.map +1 -1
  94. package/dist-types/components/localize/src/number/utils/normalize-format-number-to-parts/forceSymbols.d.ts.map +1 -1
  95. package/dist-types/components/localize/src/number/utils/normalize-format-number-to-parts/normalizeIntl.d.ts.map +1 -1
  96. package/dist-types/components/localize/test-helpers/fake-imports.d.ts.map +1 -1
  97. package/dist-types/components/switch/src/LionSwitchButton.d.ts +0 -5
  98. package/dist-types/components/switch/src/LionSwitchButton.d.ts.map +1 -1
  99. package/dist-types/components/tabs/src/LionTabs.d.ts.map +1 -1
  100. package/dist-types/exports/types/form-core.d.ts +1 -1
  101. package/dist-types/exports/types/form-core.d.ts.map +1 -1
  102. package/dist-types/tsconfig.tsbuildinfo +1 -1
  103. package/docs/components/checkbox-group/overview.md +2 -2
  104. package/docs/components/collapsible/assets/CustomCollapsible.js +4 -0
  105. package/docs/components/collapsible/overview.md +1 -1
  106. package/docs/components/combobox/overview.md +1 -1
  107. package/docs/components/combobox/src/demo-selection-display.js +8 -35
  108. package/docs/components/combobox/use-cases.md +24 -1
  109. package/docs/components/dialog/overview.md +1 -1
  110. package/docs/components/fieldset/overview.md +5 -5
  111. package/docs/components/form/overview.md +3 -3
  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-file/overview.md +1 -1
  119. package/docs/components/input-iban/overview.md +2 -2
  120. package/docs/components/input-range/overview.md +2 -2
  121. package/docs/components/input-stepper/overview.md +1 -1
  122. package/docs/components/input-tel/overview.md +1 -1
  123. package/docs/components/input-tel/use-cases.md +6 -6
  124. package/docs/components/input-tel-dropdown/overview.md +1 -1
  125. package/docs/components/radio-group/overview.md +3 -3
  126. package/docs/components/select-rich/use-cases.md +1 -1
  127. package/docs/components/steps/overview.md +2 -4
  128. package/docs/components/tabs/examples.md +1 -1
  129. package/docs/fundamentals/index.md +4 -4
  130. package/docs/fundamentals/node-tools/providence-analytics/LocalConfiguration.md +1 -1
  131. package/docs/fundamentals/node-tools/providence-analytics/QueryResult.md +1 -1
  132. package/docs/fundamentals/node-tools/providence-analytics/analyzer.md +1 -1
  133. package/docs/fundamentals/node-tools/providence-analytics/dashboard.md +1 -1
  134. package/docs/fundamentals/node-tools/providence-analytics/overview.md +3 -3
  135. package/docs/fundamentals/node-tools/publish-docs/overview.md +3 -3
  136. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +2 -2
  137. package/docs/fundamentals/rationales/accessibility.md +3 -3
  138. package/docs/fundamentals/systems/core/SlotMixin.md +1 -1
  139. package/docs/fundamentals/systems/core/overview.md +1 -1
  140. package/docs/fundamentals/systems/form/formatting-and-parsing.md +4 -4
  141. package/docs/fundamentals/systems/form/model-value.md +1 -1
  142. package/docs/fundamentals/systems/form/overview.md +28 -28
  143. package/docs/fundamentals/systems/form/validate.md +18 -2
  144. package/docs/fundamentals/systems/localize/overview.md +4 -4
  145. package/docs/fundamentals/systems/overlays/configuration.md +3 -2
  146. package/docs/fundamentals/systems/overlays/overview.md +5 -5
  147. package/docs/fundamentals/systems/overlays/use-cases.md +2 -2
  148. package/docs/fundamentals/tools/helpers/overview.md +1 -1
  149. package/docs/fundamentals/tools/singleton-manager/example-complex/overlayCompatibility.js +1 -2
  150. package/docs/fundamentals/tools/singleton-manager/overview.md +4 -4
  151. package/docs/guides/how-to/create-a-custom-field.md +5 -5
  152. package/docs/guides/how-to/create-a-form.md +4 -4
  153. package/docs/guides/how-to/extend-a-native-input.md +2 -2
  154. package/docs/guides/index.md +8 -8
  155. package/docs/guides/principles/index.md +5 -5
  156. package/docs/guides/principles/styling.md +1 -1
  157. package/exports/types/form-core.ts +5 -1
  158. package/package.json +1 -1
@@ -49,6 +49,35 @@ describe('<lion-radio-group>', () => {
49
49
  await el.updateComplete;
50
50
  expect(el.modelValue).to.deep.equal('female');
51
51
  });
52
+
53
+ it('restores default values if changes were made to a group containing options with formatters', async () => {
54
+ const formatter = /** @type {(modelValue: { value: string}) => string} */ modelValue =>
55
+ modelValue.value.charAt(0);
56
+ const el = await fixture(html`
57
+ <lion-radio-group name="gender" label="Gender">
58
+ <lion-radio label="Male" .formatter=${formatter} .choiceValue=${'male'}></lion-radio>
59
+ <lion-radio
60
+ label="Female"
61
+ .formatter=${formatter}
62
+ .modelValue=${{ value: 'female', checked: true }}
63
+ ></lion-radio>
64
+ <lion-radio label="Other" .formatter=${formatter} .choiceValue=${'other'}></lion-radio>
65
+ </lion-radio-group>
66
+ `);
67
+ el.formElements[0].checked = true;
68
+ expect(el.modelValue).to.deep.equal('male');
69
+
70
+ el.resetGroup();
71
+ expect(el.modelValue).to.deep.equal('female');
72
+
73
+ el.formElements[2].checked = true;
74
+ expect(el.modelValue).to.deep.equal('other');
75
+
76
+ el.resetGroup();
77
+ await el.formElements[1].updateComplete;
78
+ await el.updateComplete;
79
+ expect(el.modelValue).to.deep.equal('female');
80
+ });
52
81
  });
53
82
 
54
83
  it('should have role = radiogroup', async () => {
@@ -60,7 +60,7 @@ describe('lion-select', () => {
60
60
  expect(lionSelect.formattedValue).to.equal('');
61
61
 
62
62
  const select = /** @type {HTMLSlotElement} */ (
63
- lionSelect.shadowRoot?.querySelector('slot[name=input]')
63
+ /** @type {ShadowRoot} */ (lionSelect.shadowRoot).querySelector('slot[name=input]')
64
64
  ).assignedElements()[0];
65
65
  const options = select.querySelectorAll('option');
66
66
  options[1].textContent = 'Item 2';
@@ -4,10 +4,6 @@ import { DisabledWithTabIndexMixin } from '@lion/ui/core.js';
4
4
  export class LionSwitchButton extends DisabledWithTabIndexMixin(LitElement) {
5
5
  static get properties() {
6
6
  return {
7
- role: {
8
- type: String,
9
- reflect: true,
10
- },
11
7
  checked: {
12
8
  type: Boolean,
13
9
  reflect: true,
@@ -76,7 +72,6 @@ export class LionSwitchButton extends DisabledWithTabIndexMixin(LitElement) {
76
72
  // inputNode = this, which always requires a value prop
77
73
  this.value = '';
78
74
 
79
- this.role = 'switch';
80
75
  this.checked = false;
81
76
  this.__initialized = false;
82
77
  /** @protected */
@@ -89,6 +84,7 @@ export class LionSwitchButton extends DisabledWithTabIndexMixin(LitElement) {
89
84
 
90
85
  connectedCallback() {
91
86
  super.connectedCallback();
87
+ this.setAttribute('role', 'switch');
92
88
  this.setAttribute('aria-checked', `${this.checked}`);
93
89
  this.addEventListener('click', this._toggleChecked);
94
90
  this.addEventListener('keydown', this.__handleKeydown);
@@ -345,6 +345,13 @@ export class LionTabs extends LitElement {
345
345
  }
346
346
  }
347
347
 
348
+ /**
349
+ * @return {number}
350
+ */
351
+ get selectedIndex() {
352
+ return this.__selectedIndex || 0;
353
+ }
354
+
348
355
  /**
349
356
  * @param {number} value The new index
350
357
  */
@@ -371,13 +378,6 @@ export class LionTabs extends LitElement {
371
378
  this.requestUpdate('selectedIndex', stale);
372
379
  }
373
380
 
374
- /**
375
- * @return {number}
376
- */
377
- get selectedIndex() {
378
- return this.__selectedIndex || 0;
379
- }
380
-
381
381
  /** @protected */
382
382
  get _pairCount() {
383
383
  return (this.__store && this.__store.length) || 0;
@@ -198,7 +198,7 @@ export class LionTextarea extends NativeTextFieldMixin(LionFieldWithTextArea) {
198
198
  let count = 3; // max tasks to wait for
199
199
  // @ts-ignore this property is added by webcomponentsjs polyfill for old browsers
200
200
  while (count !== 0 && !this.__shady_native_contains(this._inputNode)) {
201
- // eslint-disable-next-line no-await-in-loop
201
+ // eslint-disable-next-line no-await-in-loop, no-promise-executor-return
202
202
  await new Promise(resolve => setTimeout(resolve));
203
203
  count -= 1;
204
204
  }