@lion/ui 0.7.0 → 0.7.1

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 (134) hide show
  1. package/components/helpers/src/SbActionLogger.js +1 -0
  2. package/components/input-date/src/LionInputDate.js +1 -1
  3. package/components/localize/src/date/getDateFormatBasedOnLocale.js +4 -3
  4. package/components/localize/src/date/parseDate.js +7 -2
  5. package/components/localize/src/date/utils/sanitizedDateTimeFormat.js +3 -2
  6. package/components/localize/test/date/getDateFormatBasedOnLocale.test.js +6 -2
  7. package/components/localize/test/date/parseDate.test.js +8 -1
  8. package/components/select-rich/src/LionSelectRich.js +7 -0
  9. package/components/select-rich/test/lion-select-rich-interaction.test.js +11 -1
  10. package/custom-elements.json +493 -468
  11. package/dist-types/components/core/src/types.d.ts +1 -1
  12. package/dist-types/components/core/src/types.d.ts.map +1 -1
  13. package/dist-types/components/core/types/DisabledMixinTypes.d.ts +1 -1
  14. package/dist-types/components/core/types/DisabledMixinTypes.d.ts.map +1 -1
  15. package/dist-types/components/core/types/DisabledWithTabIndexMixinTypes.d.ts +1 -1
  16. package/dist-types/components/core/types/DisabledWithTabIndexMixinTypes.d.ts.map +1 -1
  17. package/dist-types/components/core/types/SlotMixinTypes.d.ts +4 -4
  18. package/dist-types/components/core/types/SlotMixinTypes.d.ts.map +1 -1
  19. package/dist-types/components/form-core/src/registration/FormControlsCollection.d.ts.map +1 -1
  20. package/dist-types/components/form-core/types/FocusMixinTypes.d.ts +1 -1
  21. package/dist-types/components/form-core/types/FocusMixinTypes.d.ts.map +1 -1
  22. package/dist-types/components/form-core/types/FormControlMixinTypes.d.ts +2 -2
  23. package/dist-types/components/form-core/types/FormControlMixinTypes.d.ts.map +1 -1
  24. package/dist-types/components/form-core/types/FormatMixinTypes.d.ts +2 -2
  25. package/dist-types/components/form-core/types/FormatMixinTypes.d.ts.map +1 -1
  26. package/dist-types/components/form-core/types/InteractionStateMixinTypes.d.ts +2 -2
  27. package/dist-types/components/form-core/types/InteractionStateMixinTypes.d.ts.map +1 -1
  28. package/dist-types/components/form-core/types/NativeTextFieldMixinTypes.d.ts +1 -1
  29. package/dist-types/components/form-core/types/NativeTextFieldMixinTypes.d.ts.map +1 -1
  30. package/dist-types/components/form-core/types/choice-group/ChoiceGroupMixinTypes.d.ts +1 -1
  31. package/dist-types/components/form-core/types/choice-group/ChoiceGroupMixinTypes.d.ts.map +1 -1
  32. package/dist-types/components/form-core/types/choice-group/ChoiceInputMixinTypes.d.ts +1 -1
  33. package/dist-types/components/form-core/types/choice-group/ChoiceInputMixinTypes.d.ts.map +1 -1
  34. package/dist-types/components/form-core/types/choice-group/CustomChoiceGroupMixinTypes.d.ts +1 -1
  35. package/dist-types/components/form-core/types/choice-group/CustomChoiceGroupMixinTypes.d.ts.map +1 -1
  36. package/dist-types/components/form-core/types/form-group/FormGroupMixinTypes.d.ts +1 -1
  37. package/dist-types/components/form-core/types/form-group/FormGroupMixinTypes.d.ts.map +1 -1
  38. package/dist-types/components/form-core/types/registration/FormRegisteringMixinTypes.d.ts +1 -1
  39. package/dist-types/components/form-core/types/registration/FormRegisteringMixinTypes.d.ts.map +1 -1
  40. package/dist-types/components/form-core/types/registration/FormRegistrarMixinTypes.d.ts +1 -1
  41. package/dist-types/components/form-core/types/registration/FormRegistrarMixinTypes.d.ts.map +1 -1
  42. package/dist-types/components/form-core/types/registration/FormRegistrarPortalMixinTypes.d.ts +1 -1
  43. package/dist-types/components/form-core/types/registration/FormRegistrarPortalMixinTypes.d.ts.map +1 -1
  44. package/dist-types/components/form-core/types/utils/SyncUpdatableMixinTypes.d.ts +2 -2
  45. package/dist-types/components/form-core/types/utils/SyncUpdatableMixinTypes.d.ts.map +1 -1
  46. package/dist-types/components/form-core/types/validate/ValidateMixinTypes.d.ts +5 -5
  47. package/dist-types/components/form-core/types/validate/ValidateMixinTypes.d.ts.map +1 -1
  48. package/dist-types/components/form-core/types/validate/validate.d.ts +5 -5
  49. package/dist-types/components/form-core/types/validate/validate.d.ts.map +1 -1
  50. package/dist-types/components/helpers/src/SbActionLogger.d.ts.map +1 -1
  51. package/dist-types/components/input-date/src/LionInputDate.d.ts.map +1 -1
  52. package/dist-types/components/input-file/types/input-file.d.ts +4 -4
  53. package/dist-types/components/input-file/types/input-file.d.ts.map +1 -1
  54. package/dist-types/components/input-stepper/src/LionInputStepper.d.ts +0 -1
  55. package/dist-types/components/input-stepper/src/LionInputStepper.d.ts.map +1 -1
  56. package/dist-types/components/input-tel/types/index.d.ts +1 -1
  57. package/dist-types/components/input-tel/types/index.d.ts.map +1 -1
  58. package/dist-types/components/input-tel-dropdown/types/index.d.ts +5 -5
  59. package/dist-types/components/input-tel-dropdown/types/index.d.ts.map +1 -1
  60. package/dist-types/components/listbox/types/ListboxMixinTypes.d.ts +1 -1
  61. package/dist-types/components/listbox/types/ListboxMixinTypes.d.ts.map +1 -1
  62. package/dist-types/components/localize/src/date/getDateFormatBasedOnLocale.d.ts +2 -1
  63. package/dist-types/components/localize/src/date/getDateFormatBasedOnLocale.d.ts.map +1 -1
  64. package/dist-types/components/localize/src/date/parseDate.d.ts +3 -1
  65. package/dist-types/components/localize/src/date/parseDate.d.ts.map +1 -1
  66. package/dist-types/components/localize/src/date/utils/sanitizedDateTimeFormat.d.ts +2 -1
  67. package/dist-types/components/localize/src/date/utils/sanitizedDateTimeFormat.d.ts.map +1 -1
  68. package/dist-types/components/localize/types/LocalizeMixinTypes.d.ts +4 -4
  69. package/dist-types/components/localize/types/LocalizeMixinTypes.d.ts.map +1 -1
  70. package/dist-types/components/overlays/src/utils/adopt-styles.d.ts +6 -8
  71. package/dist-types/components/overlays/src/utils/adopt-styles.d.ts.map +1 -1
  72. package/dist-types/components/overlays/types/ArrowMixinTypes.d.ts +1 -1
  73. package/dist-types/components/overlays/types/ArrowMixinTypes.d.ts.map +1 -1
  74. package/dist-types/components/overlays/types/OverlayConfig.d.ts +1 -1
  75. package/dist-types/components/overlays/types/OverlayConfig.d.ts.map +1 -1
  76. package/dist-types/components/overlays/types/OverlayMixinTypes.d.ts +1 -1
  77. package/dist-types/components/overlays/types/OverlayMixinTypes.d.ts.map +1 -1
  78. package/dist-types/components/select-rich/src/LionSelectRich.d.ts +1 -0
  79. package/dist-types/components/select-rich/src/LionSelectRich.d.ts.map +1 -1
  80. package/dist-types/tsconfig.tsbuildinfo +1 -1
  81. package/docs/components/checkbox-group/overview.md +2 -2
  82. package/docs/components/collapsible/overview.md +1 -1
  83. package/docs/components/combobox/overview.md +1 -1
  84. package/docs/components/combobox/use-cases.md +1 -1
  85. package/docs/components/dialog/overview.md +1 -1
  86. package/docs/components/fieldset/overview.md +5 -5
  87. package/docs/components/form/overview.md +3 -3
  88. package/docs/components/icon/use-cases.md +1 -1
  89. package/docs/components/input/overview.md +1 -1
  90. package/docs/components/input-amount/overview.md +3 -3
  91. package/docs/components/input-date/overview.md +5 -5
  92. package/docs/components/input-datepicker/overview.md +5 -5
  93. package/docs/components/input-email/overview.md +2 -2
  94. package/docs/components/input-file/overview.md +1 -1
  95. package/docs/components/input-iban/overview.md +2 -2
  96. package/docs/components/input-range/overview.md +2 -2
  97. package/docs/components/input-stepper/overview.md +1 -1
  98. package/docs/components/input-tel/overview.md +1 -1
  99. package/docs/components/input-tel/use-cases.md +6 -6
  100. package/docs/components/input-tel-dropdown/overview.md +1 -1
  101. package/docs/components/listbox/use-cases.md +1 -1
  102. package/docs/components/radio-group/overview.md +3 -3
  103. package/docs/components/select/use-cases.md +1 -1
  104. package/docs/components/select-rich/use-cases.md +1 -1
  105. package/docs/components/tabs/examples.md +1 -1
  106. package/docs/fundamentals/index.md +4 -4
  107. package/docs/fundamentals/node-tools/providence-analytics/LocalConfiguration.md +1 -1
  108. package/docs/fundamentals/node-tools/providence-analytics/QueryResult.md +1 -1
  109. package/docs/fundamentals/node-tools/providence-analytics/analyzer.md +1 -1
  110. package/docs/fundamentals/node-tools/providence-analytics/dashboard.md +1 -1
  111. package/docs/fundamentals/node-tools/providence-analytics/overview.md +3 -3
  112. package/docs/fundamentals/node-tools/publish-docs/overview.md +3 -3
  113. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +2 -2
  114. package/docs/fundamentals/rationales/accessibility.md +1 -1
  115. package/docs/fundamentals/systems/core/SlotMixin.md +1 -1
  116. package/docs/fundamentals/systems/core/overview.md +1 -1
  117. package/docs/fundamentals/systems/form/assets/h-output.js +1 -0
  118. package/docs/fundamentals/systems/form/formatting-and-parsing.md +4 -4
  119. package/docs/fundamentals/systems/form/model-value.md +1 -1
  120. package/docs/fundamentals/systems/form/overview.md +28 -28
  121. package/docs/fundamentals/systems/form/validate.md +2 -2
  122. package/docs/fundamentals/systems/localize/overview.md +4 -4
  123. package/docs/fundamentals/systems/overlays/configuration.md +2 -2
  124. package/docs/fundamentals/systems/overlays/overview.md +5 -5
  125. package/docs/fundamentals/systems/overlays/use-cases.md +2 -2
  126. package/docs/fundamentals/tools/helpers/overview.md +1 -1
  127. package/docs/fundamentals/tools/singleton-manager/overview.md +4 -4
  128. package/docs/guides/how-to/create-a-custom-field.md +5 -5
  129. package/docs/guides/how-to/create-a-form.md +4 -4
  130. package/docs/guides/how-to/extend-a-native-input.md +2 -2
  131. package/docs/guides/index.md +8 -8
  132. package/docs/guides/principles/index.md +5 -5
  133. package/docs/guides/principles/styling.md +1 -1
  134. package/package.json +1 -1
@@ -126,6 +126,7 @@ export class SbActionLogger extends LitElement {
126
126
 
127
127
  constructor() {
128
128
  super();
129
+ // eslint-disable-next-line wc/no-constructor-attributes
129
130
  this.title = 'Action Logger';
130
131
  this.simple = false;
131
132
  this.__logCounter = 0;
@@ -21,7 +21,7 @@ export class LionInputDate extends LocalizeMixin(LionInput) {
21
21
  /**
22
22
  * @param {string} value
23
23
  */
24
- this.parser = value => (value === '' ? undefined : parseDate(value));
24
+ this.parser = value => (value === '' ? undefined : parseDate(value, this.formatOptions));
25
25
  this.formatter = formatDate;
26
26
  this.defaultValidators.push(new IsDate());
27
27
  // Just explicitly make clear we shouldn't use type 'date'
@@ -3,9 +3,10 @@ import { splitDate } from './utils/splitDate.js';
3
3
 
4
4
  /**
5
5
  * To compute the localized date format
6
+ * @param {string} [locale]
6
7
  * @returns {string}
7
8
  */
8
- export function getDateFormatBasedOnLocale() {
9
+ export function getDateFormatBasedOnLocale(locale) {
9
10
  /**
10
11
  *
11
12
  * @param {ArrayLike.<string>} dateParts
@@ -35,9 +36,9 @@ export function getDateFormatBasedOnLocale() {
35
36
  date.setDate(20);
36
37
  date.setMonth(11);
37
38
  date.setFullYear(2012);
38
-
39
+ const options = locale ? { locale } : {};
39
40
  // Strange characters added by IE11 need to be taken into account here
40
- const formattedDate = sanitizedDateTimeFormat(date);
41
+ const formattedDate = sanitizedDateTimeFormat(date, options);
41
42
 
42
43
  // For Dutch locale, dateParts would match: [ 1:'20', 2:'-', 3:'12', 4:'-', 5:'2012' ]
43
44
  const dateParts = splitDate(formattedDate);
@@ -2,6 +2,10 @@ import { getDateFormatBasedOnLocale } from './getDateFormatBasedOnLocale.js';
2
2
  import { getLocalizeManager } from '../getLocalizeManager.js';
3
3
  import { addLeadingZero } from './utils/addLeadingZero.js';
4
4
 
5
+ /**
6
+ * @typedef {import('../../types/LocalizeMixinTypes.js').FormatDateOptions} FormatDateOptions
7
+ */
8
+
5
9
  /**
6
10
  * @param {function} fn
7
11
  */
@@ -26,15 +30,16 @@ const memoizedGetDateFormatBasedOnLocale = memoize(getDateFormatBasedOnLocale);
26
30
  * To parse a date into the right format
27
31
  *
28
32
  * @param {string} dateString
33
+ * @param {FormatDateOptions} [options] Intl options are available
29
34
  * @returns {Date | undefined}
30
35
  */
31
- export function parseDate(dateString) {
36
+ export function parseDate(dateString, options) {
32
37
  const localizeManager = getLocalizeManager();
33
38
 
34
39
  const stringToParse = addLeadingZero(dateString);
35
40
  let parsedString;
36
41
 
37
- switch (memoizedGetDateFormatBasedOnLocale(localizeManager.locale)) {
42
+ switch (memoizedGetDateFormatBasedOnLocale(options?.locale || localizeManager.locale)) {
38
43
  case 'day-month-year':
39
44
  parsedString = `${stringToParse.slice(6, 10)}/${stringToParse.slice(
40
45
  3,
@@ -5,9 +5,10 @@ import { clean } from './clean.js';
5
5
  * To sanitize a date from IE11 handling
6
6
  *
7
7
  * @param {Date} date
8
+ * @param {import('../../../types/LocalizeMixinTypes.js').FormatDateOptions} [options] Intl options are available
8
9
  * @returns {string}
9
10
  */
10
- export function sanitizedDateTimeFormat(date) {
11
- const fDate = formatDate(date);
11
+ export function sanitizedDateTimeFormat(date, options) {
12
+ const fDate = formatDate(date, options);
12
13
  return clean(fDate);
13
14
  }
@@ -7,15 +7,19 @@ import { localizeTearDown } from '@lion/ui/localize-test-helpers.js';
7
7
 
8
8
  describe('getDateFormatBasedOnLocale()', () => {
9
9
  const localizeManager = getLocalizeManager();
10
-
11
10
  beforeEach(() => {
12
11
  localizeTearDown();
13
12
  });
14
13
 
15
- it('returns the positions of day, month and year', async () => {
14
+ it('returns the positions of day, month and year with locale set globally', async () => {
16
15
  localizeManager.locale = 'en-GB';
17
16
  expect(getDateFormatBasedOnLocale()).to.equal('day-month-year');
18
17
  localizeManager.locale = 'en-US';
19
18
  expect(getDateFormatBasedOnLocale()).to.equal('month-day-year');
20
19
  });
20
+
21
+ it('returns the positions of day, month and year with given locale', async () => {
22
+ expect(getDateFormatBasedOnLocale('en-GB')).to.equal('day-month-year');
23
+ expect(getDateFormatBasedOnLocale('en-US')).to.equal('month-day-year');
24
+ });
21
25
  });
@@ -51,13 +51,20 @@ describe('parseDate()', () => {
51
51
  expect(equalsDate(parseDate('14.12.1976 r.'), new Date('1976/12/14'))).to.equal(true);
52
52
  });
53
53
 
54
- it('handles different locales', () => {
54
+ it('handles different locales globally set', () => {
55
55
  localizeManager.locale = 'en-GB';
56
56
  expect(equalsDate(parseDate('31-12-1976'), new Date('1976/12/31'))).to.equal(true);
57
57
  localizeManager.locale = 'en-US';
58
58
  expect(equalsDate(parseDate('12-31-1976'), new Date('1976/12/31'))).to.equal(true);
59
59
  });
60
60
 
61
+ it('handles different locales as option', () => {
62
+ const optionEnGb = { locale: 'en-GB' };
63
+ expect(equalsDate(parseDate('31-12-1976', optionEnGb), new Date('1976/12/31'))).to.equal(true);
64
+ const optionEnUs = { locale: 'en-US' };
65
+ expect(equalsDate(parseDate('12-31-1976', optionEnUs), new Date('1976/12/31'))).to.equal(true);
66
+ });
67
+
61
68
  it('handles timezones of the browser and parsed date correctly', () => {
62
69
  const referenceDate = new Date('2020/01/30');
63
70
  localizeManager.locale = 'nl-NL';
@@ -485,6 +485,13 @@ export class LionSelectRich extends SlotMixin(ScopedElementsMixin(OverlayMixin(L
485
485
  return;
486
486
  }
487
487
 
488
+ this._isHandlingUserInput = true;
489
+ setTimeout(() => {
490
+ // Since we can't control when subclasses are done handling keyboard input, we
491
+ // schedule a timeout to reset _isHandlingUserInput
492
+ this._isHandlingUserInput = false;
493
+ });
494
+
488
495
  const { key } = ev;
489
496
  switch (key) {
490
497
  case 'ArrowUp':
@@ -106,9 +106,15 @@ describe('lion-select-rich interactions', () => {
106
106
  });
107
107
  }
108
108
 
109
+ let isTriggeredByUser;
109
110
  const el = /** @type {LionSelectRich} */ (
110
111
  await fixture(html`
111
- <lion-select-rich interaction-mode="windows/linux">
112
+ <lion-select-rich
113
+ interaction-mode="windows/linux"
114
+ @model-value-changed="${(/** @type {CustomEvent} */ event) => {
115
+ isTriggeredByUser = event.detail.isTriggeredByUser;
116
+ }}"
117
+ >
112
118
  <lion-options slot="input">
113
119
  <lion-option .choiceValue=${10}>Item 1</lion-option>
114
120
  <lion-option .choiceValue=${20}>Item 2</lion-option>
@@ -125,10 +131,14 @@ describe('lion-select-rich interactions', () => {
125
131
  el.dispatchEvent(new KeyboardEvent('keyup', { key: 'ArrowDown' }));
126
132
  expect(el.checkedIndex).to.equal(1);
127
133
  expectOnlyGivenOneOptionToBeChecked(options, 1);
134
+ expect(isTriggeredByUser).to.be.true;
135
+
136
+ isTriggeredByUser = false;
128
137
 
129
138
  el.dispatchEvent(new KeyboardEvent('keyup', { key: 'ArrowUp' }));
130
139
  expect(el.checkedIndex).to.equal(0);
131
140
  expectOnlyGivenOneOptionToBeChecked(options, 0);
141
+ expect(isTriggeredByUser).to.be.true;
132
142
  });
133
143
 
134
144
  it('checkes a value with [character] keys while listbox unopened', async () => {