@lion/ui 0.3.2 → 0.3.4
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 +121 -65
- package/components/calendar/src/calendarStyle.js +25 -1
- package/components/calendar/src/utils/createDay.js +2 -0
- package/components/calendar/src/utils/dayTemplate.js +19 -32
- package/components/calendar/src/utils/getDayMonthYear.js +28 -0
- package/components/calendar/test/lion-calendar.test.js +118 -108
- package/components/calendar/test/utils/dayTemplate.test.js +8 -4
- package/components/calendar/test/utils/snapshots/monthTemplate_en-GB_Sunday_2018-12.js +210 -126
- package/components/calendar/test-helpers/DayObject.js +2 -2
- package/components/calendar/types/day.ts +1 -0
- package/components/input-datepicker/src/LionInputDatepicker.js +34 -2
- package/components/input-file/src/LionInputFile.js +9 -9
- package/components/input-file/test/lion-input-file.test.js +4 -0
- package/components/input-file/types/{input-file.d.ts → input-file.ts} +4 -4
- package/custom-elements.json +392 -32
- package/dist-types/components/calendar/src/LionCalendar.d.ts +22 -15
- package/dist-types/components/calendar/src/LionCalendar.d.ts.map +1 -1
- package/dist-types/components/calendar/src/calendarStyle.d.ts.map +1 -1
- package/dist-types/components/calendar/src/utils/createDay.d.ts +2 -1
- package/dist-types/components/calendar/src/utils/createDay.d.ts.map +1 -1
- package/dist-types/components/calendar/src/utils/dayTemplate.d.ts.map +1 -1
- package/dist-types/components/calendar/src/utils/getDayMonthYear.d.ts +13 -0
- package/dist-types/components/calendar/src/utils/getDayMonthYear.d.ts.map +1 -0
- package/dist-types/components/calendar/types/day.d.ts +1 -0
- package/dist-types/components/calendar/types/day.d.ts.map +1 -1
- package/dist-types/components/input-datepicker/src/LionInputDatepicker.d.ts +6 -0
- package/dist-types/components/input-datepicker/src/LionInputDatepicker.d.ts.map +1 -1
- package/dist-types/components/input-file/src/LionInputFile.d.ts +6 -0
- package/dist-types/components/input-file/src/LionInputFile.d.ts.map +1 -1
- package/dist-types/components/input-file/types/input-file.d.ts +28 -0
- package/dist-types/components/input-file/types/input-file.d.ts.map +1 -0
- package/dist-types/exports/types/form-core.d.ts +1 -2
- package/dist-types/exports/types/form-core.d.ts.map +1 -1
- package/dist-types/exports/types/input-file.d.ts +2 -0
- package/dist-types/exports/types/input-file.d.ts.map +1 -0
- package/dist-types/tsconfig.tsbuildinfo +1 -1
- package/docs/components/calendar/use-cases.md +39 -0
- 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 +3 -3
- package/docs/components/input-datepicker/overview.md +5 -5
- package/docs/components/input-datepicker/use-cases.md +2 -0
- 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/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/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/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 +1 -1
- 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/exports/types/form-core.ts +1 -2
- package/exports/types/input-file.ts +1 -0
- package/package.json +1 -1
|
@@ -34,7 +34,7 @@ export class DayObject {
|
|
|
34
34
|
*/
|
|
35
35
|
|
|
36
36
|
get isDisabled() {
|
|
37
|
-
return this.buttonEl.
|
|
37
|
+
return this.buttonEl.getAttribute('aria-disabled') === 'true';
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
get isSelected() {
|
|
@@ -54,7 +54,7 @@ export class DayObject {
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
get monthday() {
|
|
57
|
-
return Number(this.buttonEl.textContent);
|
|
57
|
+
return Number(this.buttonEl.children[0].textContent);
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
/**
|
|
@@ -96,10 +96,28 @@ export class LionInputDatepicker extends ScopedElementsMixin(
|
|
|
96
96
|
|
|
97
97
|
__calendarDisableDates: {
|
|
98
98
|
attribute: false,
|
|
99
|
+
type: Array,
|
|
99
100
|
},
|
|
100
101
|
};
|
|
101
102
|
}
|
|
102
103
|
|
|
104
|
+
_inputFormatter = new Intl.DateTimeFormat('en-US', {
|
|
105
|
+
year: 'numeric',
|
|
106
|
+
month: '2-digit',
|
|
107
|
+
day: '2-digit',
|
|
108
|
+
}).formatToParts;
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* @param {Date} date
|
|
112
|
+
*/
|
|
113
|
+
// eslint-disable-next-line class-methods-use-this
|
|
114
|
+
_formatDate(date) {
|
|
115
|
+
const day = String(date.getDate()).padStart(2, '0');
|
|
116
|
+
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
117
|
+
const year = String(date.getFullYear());
|
|
118
|
+
return `${day}/${month}/${year}`;
|
|
119
|
+
}
|
|
120
|
+
|
|
103
121
|
get slots() {
|
|
104
122
|
return {
|
|
105
123
|
...super.slots,
|
|
@@ -346,6 +364,7 @@ export class LionInputDatepicker extends ScopedElementsMixin(
|
|
|
346
364
|
}
|
|
347
365
|
|
|
348
366
|
/**
|
|
367
|
+
* Triggered when a user selects a date from the calendar overlay
|
|
349
368
|
* @param {{ target: { selectedDate: Date }}} opts
|
|
350
369
|
*/
|
|
351
370
|
_onCalendarUserSelectedChanged({ target: { selectedDate } }) {
|
|
@@ -355,8 +374,21 @@ export class LionInputDatepicker extends ScopedElementsMixin(
|
|
|
355
374
|
if (this._syncOnUserSelect) {
|
|
356
375
|
// Synchronize new selectedDate value to input
|
|
357
376
|
this._isHandlingUserInput = true;
|
|
358
|
-
|
|
359
|
-
|
|
377
|
+
|
|
378
|
+
if (
|
|
379
|
+
Array.isArray(this.__calendarDisableDates) &&
|
|
380
|
+
this.__calendarDisableDates.includes(selectedDate)
|
|
381
|
+
) {
|
|
382
|
+
// If the selected date is disabled, reset the values
|
|
383
|
+
this.value = '';
|
|
384
|
+
this.formattedValue = '';
|
|
385
|
+
this.modelValue = undefined;
|
|
386
|
+
} else {
|
|
387
|
+
this.formattedValue = this._formatDate(selectedDate);
|
|
388
|
+
this.value = this.formattedValue;
|
|
389
|
+
this.modelValue = selectedDate;
|
|
390
|
+
}
|
|
391
|
+
|
|
360
392
|
this._isHandlingUserInput = false;
|
|
361
393
|
this._isHandlingCalendarUserInput = false;
|
|
362
394
|
}
|
|
@@ -47,6 +47,7 @@ export class LionInputFile extends ScopedElementsMixin(LocalizeMixin(LionField))
|
|
|
47
47
|
maxFileSize: { type: Number, attribute: 'max-file-size' },
|
|
48
48
|
enableDropZone: { type: Boolean, attribute: 'enable-drop-zone' },
|
|
49
49
|
uploadOnSelect: { type: Boolean, attribute: 'upload-on-select' },
|
|
50
|
+
isDragging: { type: Boolean, attribute: 'is-dragging', reflect: true },
|
|
50
51
|
uploadResponse: { type: Array, state: false },
|
|
51
52
|
_selectedFilesMetaData: { type: Array, state: true },
|
|
52
53
|
};
|
|
@@ -300,11 +301,7 @@ export class LionInputFile extends ScopedElementsMixin(LocalizeMixin(LionField))
|
|
|
300
301
|
(/** @type {Event} */ ev) => {
|
|
301
302
|
ev.preventDefault();
|
|
302
303
|
ev.stopPropagation();
|
|
303
|
-
|
|
304
|
-
this.setAttribute('is-dragging', '');
|
|
305
|
-
} else {
|
|
306
|
-
this.removeAttribute('is-dragging');
|
|
307
|
-
}
|
|
304
|
+
this.isDragging = eventName !== 'dragleave';
|
|
308
305
|
},
|
|
309
306
|
false,
|
|
310
307
|
);
|
|
@@ -316,7 +313,7 @@ export class LionInputFile extends ScopedElementsMixin(LocalizeMixin(LionField))
|
|
|
316
313
|
if (ev.target === this._inputNode) {
|
|
317
314
|
ev.preventDefault();
|
|
318
315
|
}
|
|
319
|
-
this.
|
|
316
|
+
this.isDragging = false;
|
|
320
317
|
},
|
|
321
318
|
false,
|
|
322
319
|
);
|
|
@@ -427,8 +424,11 @@ export class LionInputFile extends ScopedElementsMixin(LocalizeMixin(LionField))
|
|
|
427
424
|
// eslint-disable-next-line no-param-reassign
|
|
428
425
|
file.validationFeedback = [
|
|
429
426
|
{
|
|
430
|
-
type:
|
|
431
|
-
|
|
427
|
+
type:
|
|
428
|
+
typeof response.errorMessage === 'string' && response.errorMessage?.length > 0
|
|
429
|
+
? 'error'
|
|
430
|
+
: 'success',
|
|
431
|
+
message: response.errorMessage ?? '',
|
|
432
432
|
},
|
|
433
433
|
];
|
|
434
434
|
}
|
|
@@ -466,7 +466,7 @@ export class LionInputFile extends ScopedElementsMixin(LocalizeMixin(LionField))
|
|
|
466
466
|
*/
|
|
467
467
|
_processDroppedFiles(ev) {
|
|
468
468
|
ev.preventDefault();
|
|
469
|
-
this.
|
|
469
|
+
this.isDragging = false;
|
|
470
470
|
|
|
471
471
|
const isDraggingMultipleWhileNotSupported =
|
|
472
472
|
ev.dataTransfer && ev.dataTransfer.items.length > 1 && !this.multiple;
|
|
@@ -927,12 +927,14 @@ describe('lion-input-file', () => {
|
|
|
927
927
|
it('should set "is-dragging" on dragenter', async () => {
|
|
928
928
|
const dropzone = el.shadowRoot?.querySelector('.input-file__drop-zone');
|
|
929
929
|
dropzone?.dispatchEvent(new Event('dragenter', { bubbles: true }));
|
|
930
|
+
await el.updateComplete;
|
|
930
931
|
expect(el.hasAttribute('is-dragging')).to.equal(true);
|
|
931
932
|
});
|
|
932
933
|
|
|
933
934
|
it('should set "is-dragging" on dragover', async () => {
|
|
934
935
|
const dropzone = el.shadowRoot?.querySelector('.input-file__drop-zone');
|
|
935
936
|
dropzone?.dispatchEvent(new Event('dragover', { bubbles: true }));
|
|
937
|
+
await el.updateComplete;
|
|
936
938
|
expect(el.hasAttribute('is-dragging')).to.equal(true);
|
|
937
939
|
});
|
|
938
940
|
|
|
@@ -942,6 +944,7 @@ describe('lion-input-file', () => {
|
|
|
942
944
|
await el.updateComplete;
|
|
943
945
|
|
|
944
946
|
dropzone?.dispatchEvent(new Event('dragleave', { bubbles: true }));
|
|
947
|
+
await el.updateComplete;
|
|
945
948
|
expect(el.hasAttribute('is-dragging')).to.equal(false);
|
|
946
949
|
});
|
|
947
950
|
|
|
@@ -951,6 +954,7 @@ describe('lion-input-file', () => {
|
|
|
951
954
|
await el.updateComplete;
|
|
952
955
|
|
|
953
956
|
window.dispatchEvent(new Event('drop', { bubbles: true }));
|
|
957
|
+
await el.updateComplete;
|
|
954
958
|
expect(el.hasAttribute('is-dragging')).to.equal(false);
|
|
955
959
|
});
|
|
956
960
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FeedbackMessage } from "../../form-core/types/validate/ValidateMixinTypes.js";
|
|
2
2
|
|
|
3
|
-
type FileBasics = {
|
|
3
|
+
export type FileBasics = {
|
|
4
4
|
name: string;
|
|
5
5
|
/** size in bytes */
|
|
6
6
|
size: number;
|
|
@@ -10,7 +10,7 @@ type FileBasics = {
|
|
|
10
10
|
|
|
11
11
|
export type InputFile = {
|
|
12
12
|
downloadUrl?: string;
|
|
13
|
-
errorMessage?: FeedbackMessage
|
|
13
|
+
errorMessage?: FeedbackMessage["message"];
|
|
14
14
|
failedProp?: Array<string|number>;
|
|
15
15
|
response?: UploadResponse;
|
|
16
16
|
systemFile: Partial<SystemFile>;
|
|
@@ -19,7 +19,7 @@ export type InputFile = {
|
|
|
19
19
|
|
|
20
20
|
export type SystemFile = {
|
|
21
21
|
downloadUrl?: string;
|
|
22
|
-
errorMessage?: FeedbackMessage
|
|
22
|
+
errorMessage?: FeedbackMessage["message"];
|
|
23
23
|
failedProp?: Array<string|number>;
|
|
24
24
|
response?: UploadResponse;
|
|
25
25
|
} & FileBasics & Partial<File>;
|
|
@@ -27,6 +27,6 @@ export type SystemFile = {
|
|
|
27
27
|
|
|
28
28
|
export type UploadResponse = {
|
|
29
29
|
downloadUrl?: string;
|
|
30
|
-
errorMessage?: FeedbackMessage
|
|
30
|
+
errorMessage?: FeedbackMessage["message"];
|
|
31
31
|
id?: string;
|
|
32
32
|
} & Partial<FileBasics>;
|