@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.
- package/components/helpers/src/SbActionLogger.js +1 -0
- package/components/input-date/src/LionInputDate.js +1 -1
- package/components/localize/src/date/getDateFormatBasedOnLocale.js +4 -3
- package/components/localize/src/date/parseDate.js +7 -2
- package/components/localize/src/date/utils/sanitizedDateTimeFormat.js +3 -2
- package/components/localize/test/date/getDateFormatBasedOnLocale.test.js +6 -2
- package/components/localize/test/date/parseDate.test.js +8 -1
- package/components/select-rich/src/LionSelectRich.js +7 -0
- package/components/select-rich/test/lion-select-rich-interaction.test.js +11 -1
- package/custom-elements.json +493 -468
- package/dist-types/components/core/src/types.d.ts +1 -1
- package/dist-types/components/core/src/types.d.ts.map +1 -1
- package/dist-types/components/core/types/DisabledMixinTypes.d.ts +1 -1
- package/dist-types/components/core/types/DisabledMixinTypes.d.ts.map +1 -1
- package/dist-types/components/core/types/DisabledWithTabIndexMixinTypes.d.ts +1 -1
- package/dist-types/components/core/types/DisabledWithTabIndexMixinTypes.d.ts.map +1 -1
- package/dist-types/components/core/types/SlotMixinTypes.d.ts +4 -4
- package/dist-types/components/core/types/SlotMixinTypes.d.ts.map +1 -1
- package/dist-types/components/form-core/src/registration/FormControlsCollection.d.ts.map +1 -1
- package/dist-types/components/form-core/types/FocusMixinTypes.d.ts +1 -1
- package/dist-types/components/form-core/types/FocusMixinTypes.d.ts.map +1 -1
- package/dist-types/components/form-core/types/FormControlMixinTypes.d.ts +2 -2
- package/dist-types/components/form-core/types/FormControlMixinTypes.d.ts.map +1 -1
- package/dist-types/components/form-core/types/FormatMixinTypes.d.ts +2 -2
- package/dist-types/components/form-core/types/FormatMixinTypes.d.ts.map +1 -1
- package/dist-types/components/form-core/types/InteractionStateMixinTypes.d.ts +2 -2
- package/dist-types/components/form-core/types/InteractionStateMixinTypes.d.ts.map +1 -1
- package/dist-types/components/form-core/types/NativeTextFieldMixinTypes.d.ts +1 -1
- package/dist-types/components/form-core/types/NativeTextFieldMixinTypes.d.ts.map +1 -1
- package/dist-types/components/form-core/types/choice-group/ChoiceGroupMixinTypes.d.ts +1 -1
- package/dist-types/components/form-core/types/choice-group/ChoiceGroupMixinTypes.d.ts.map +1 -1
- package/dist-types/components/form-core/types/choice-group/ChoiceInputMixinTypes.d.ts +1 -1
- package/dist-types/components/form-core/types/choice-group/ChoiceInputMixinTypes.d.ts.map +1 -1
- package/dist-types/components/form-core/types/choice-group/CustomChoiceGroupMixinTypes.d.ts +1 -1
- package/dist-types/components/form-core/types/choice-group/CustomChoiceGroupMixinTypes.d.ts.map +1 -1
- package/dist-types/components/form-core/types/form-group/FormGroupMixinTypes.d.ts +1 -1
- package/dist-types/components/form-core/types/form-group/FormGroupMixinTypes.d.ts.map +1 -1
- package/dist-types/components/form-core/types/registration/FormRegisteringMixinTypes.d.ts +1 -1
- package/dist-types/components/form-core/types/registration/FormRegisteringMixinTypes.d.ts.map +1 -1
- package/dist-types/components/form-core/types/registration/FormRegistrarMixinTypes.d.ts +1 -1
- package/dist-types/components/form-core/types/registration/FormRegistrarMixinTypes.d.ts.map +1 -1
- package/dist-types/components/form-core/types/registration/FormRegistrarPortalMixinTypes.d.ts +1 -1
- package/dist-types/components/form-core/types/registration/FormRegistrarPortalMixinTypes.d.ts.map +1 -1
- package/dist-types/components/form-core/types/utils/SyncUpdatableMixinTypes.d.ts +2 -2
- package/dist-types/components/form-core/types/utils/SyncUpdatableMixinTypes.d.ts.map +1 -1
- package/dist-types/components/form-core/types/validate/ValidateMixinTypes.d.ts +5 -5
- package/dist-types/components/form-core/types/validate/ValidateMixinTypes.d.ts.map +1 -1
- package/dist-types/components/form-core/types/validate/validate.d.ts +5 -5
- package/dist-types/components/form-core/types/validate/validate.d.ts.map +1 -1
- package/dist-types/components/helpers/src/SbActionLogger.d.ts.map +1 -1
- package/dist-types/components/input-date/src/LionInputDate.d.ts.map +1 -1
- package/dist-types/components/input-file/types/input-file.d.ts +4 -4
- package/dist-types/components/input-file/types/input-file.d.ts.map +1 -1
- package/dist-types/components/input-stepper/src/LionInputStepper.d.ts +0 -1
- package/dist-types/components/input-stepper/src/LionInputStepper.d.ts.map +1 -1
- package/dist-types/components/input-tel/types/index.d.ts +1 -1
- package/dist-types/components/input-tel/types/index.d.ts.map +1 -1
- package/dist-types/components/input-tel-dropdown/types/index.d.ts +5 -5
- package/dist-types/components/input-tel-dropdown/types/index.d.ts.map +1 -1
- package/dist-types/components/listbox/types/ListboxMixinTypes.d.ts +1 -1
- package/dist-types/components/listbox/types/ListboxMixinTypes.d.ts.map +1 -1
- package/dist-types/components/localize/src/date/getDateFormatBasedOnLocale.d.ts +2 -1
- package/dist-types/components/localize/src/date/getDateFormatBasedOnLocale.d.ts.map +1 -1
- package/dist-types/components/localize/src/date/parseDate.d.ts +3 -1
- package/dist-types/components/localize/src/date/parseDate.d.ts.map +1 -1
- package/dist-types/components/localize/src/date/utils/sanitizedDateTimeFormat.d.ts +2 -1
- package/dist-types/components/localize/src/date/utils/sanitizedDateTimeFormat.d.ts.map +1 -1
- package/dist-types/components/localize/types/LocalizeMixinTypes.d.ts +4 -4
- package/dist-types/components/localize/types/LocalizeMixinTypes.d.ts.map +1 -1
- package/dist-types/components/overlays/src/utils/adopt-styles.d.ts +6 -8
- package/dist-types/components/overlays/src/utils/adopt-styles.d.ts.map +1 -1
- package/dist-types/components/overlays/types/ArrowMixinTypes.d.ts +1 -1
- package/dist-types/components/overlays/types/ArrowMixinTypes.d.ts.map +1 -1
- package/dist-types/components/overlays/types/OverlayConfig.d.ts +1 -1
- package/dist-types/components/overlays/types/OverlayConfig.d.ts.map +1 -1
- package/dist-types/components/overlays/types/OverlayMixinTypes.d.ts +1 -1
- package/dist-types/components/overlays/types/OverlayMixinTypes.d.ts.map +1 -1
- package/dist-types/components/select-rich/src/LionSelectRich.d.ts +1 -0
- package/dist-types/components/select-rich/src/LionSelectRich.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/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 +5 -5
- package/docs/components/input-datepicker/overview.md +5 -5
- package/docs/components/input-email/overview.md +2 -2
- package/docs/components/input-file/overview.md +1 -1
- 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/listbox/use-cases.md +1 -1
- package/docs/components/radio-group/overview.md +3 -3
- package/docs/components/select/use-cases.md +1 -1
- 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/rationales/accessibility.md +1 -1
- package/docs/fundamentals/systems/core/SlotMixin.md +1 -1
- package/docs/fundamentals/systems/core/overview.md +1 -1
- package/docs/fundamentals/systems/form/assets/h-output.js +1 -0
- 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/validate.md +2 -2
- package/docs/fundamentals/systems/localize/overview.md +4 -4
- 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/create-a-form.md +4 -4
- 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/package.json +1 -1
|
@@ -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
|
|
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 () => {
|