@designsystem-se/af 38.0.1-beta.2 → 38.2.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.
- package/components/digi-calendar-datepicker.js +10 -6
- package/components/digi-form-checkbox.js +1 -1
- package/components/digi-form-error-list.js +33 -1
- package/components/digi-form-file-upload.js +23 -9
- package/components/digi-form-filter.js +1 -1
- package/components/{p-13c09880.js → p-f84f590e.js} +2 -2
- package/custom-elements.json +9 -1
- package/dist/cjs/digi-arbetsformedlingen.cjs.js +1 -1
- package/dist/cjs/digi-calendar-datepicker.cjs.entry.js +8 -6
- package/dist/cjs/digi-form-checkbox.cjs.entry.js +2 -2
- package/dist/cjs/digi-form-error-list.cjs.entry.js +33 -1
- package/dist/cjs/digi-form-file-upload.cjs.entry.js +21 -8
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/_calendar/calendar-datepicker/calendar-datepicker.js +53 -6
- package/dist/collection/components/_form/form-checkbox/form-checkbox.js +8 -5
- package/dist/collection/components/_form/form-error-list/form-error-list.js +20 -1
- package/dist/collection/components/_form/form-file-upload/form-file-upload.js +41 -8
- package/dist/digi-arbetsformedlingen/digi-arbetsformedlingen.esm.js +1 -1
- package/dist/digi-arbetsformedlingen/{p-37c0ea9e.entry.js → p-2295239c.entry.js} +1 -1
- package/dist/digi-arbetsformedlingen/p-2788683e.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-42ae53aa.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-7f155bd5.entry.js +1 -0
- package/dist/esm/digi-arbetsformedlingen.js +1 -1
- package/dist/esm/digi-calendar-datepicker.entry.js +8 -6
- package/dist/esm/digi-form-checkbox.entry.js +2 -2
- package/dist/esm/digi-form-error-list.entry.js +33 -1
- package/dist/esm/digi-form-file-upload.entry.js +21 -8
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/_calendar/calendar-datepicker/calendar-datepicker.d.ts +10 -0
- package/dist/types/components/_form/form-checkbox/form-checkbox.d.ts +5 -2
- package/dist/types/components/_form/form-error-list/form-error-list.d.ts +3 -0
- package/dist/types/components/_form/form-file-upload/form-file-upload.d.ts +5 -0
- package/dist/types/components.d.ts +29 -4
- package/hydrate/index.js +68 -18
- package/hydrate/index.mjs +68 -18
- package/package.json +1 -1
- package/dist/digi-arbetsformedlingen/p-ba3c4861.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-ef689144.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-f0a405ca.entry.js +0 -1
|
@@ -2213,6 +2213,8 @@ const CalendarDatepicker = class {
|
|
|
2213
2213
|
this.afCloseOnSelect = false;
|
|
2214
2214
|
this.afOpenCalendarTo = undefined;
|
|
2215
2215
|
this.afErrorMessageIsAlert = true;
|
|
2216
|
+
this.afAnnounceIfOptional = false;
|
|
2217
|
+
this.afAnnounceIfOptionalText = undefined;
|
|
2216
2218
|
}
|
|
2217
2219
|
afDisableValidationChangeHandler(newVal) {
|
|
2218
2220
|
if (!newVal) {
|
|
@@ -2544,9 +2546,9 @@ const CalendarDatepicker = class {
|
|
|
2544
2546
|
return this.afSelectedDates;
|
|
2545
2547
|
}
|
|
2546
2548
|
render() {
|
|
2547
|
-
return (h(Host, { key: '
|
|
2549
|
+
return (h(Host, { key: 'a22b366eece8bdf2a6d66ba7b4561093391ad16d', tabindex: -1 }, h("div", { key: '5ec3557df78bb012f2e10f1852252e78e2470ee3', class: Object.assign({ 'digi-calendar-datepicker': true }, this.cssModifiers), id: `${this.afId}-datepicker` }, h("div", { key: '1215a13021718ac98ad2a4a7a5bae3c456385124', class: "digi-calendar-datepicker__input-field" }, h("digi-form-input", { key: '8794d312452fe11f0f9052bbdd238e5570ec55f0', ref: (el) => (this._input = el), class: 'digi-calendar-datepicker__input-component', afLabel: this.afLabel, afLabelDescription: this.afLabelDescription, afName: this.afName, afValue: this.inputValue, afValidation: this.hasBuiltInValidationError()
|
|
2548
2550
|
? FormInputValidation.ERROR
|
|
2549
|
-
: this.afValidation, afValidationText: this.getErrorText(), afId: this.afId, afAriaDescribedby: `${this.afId}--validation-message`, afRequired: this.afRequired, afRequiredText: this.afRequiredText, onAfOnChange: (evt) => {
|
|
2551
|
+
: this.afValidation, afValidationText: this.getErrorText(), afId: this.afId, afAriaDescribedby: `${this.afId}--validation-message`, afRequired: this.afRequired, afRequiredText: this.afRequiredText, afAnnounceIfOptional: this.afAnnounceIfOptional, afAnnounceIfOptionalText: this.afAnnounceIfOptionalText, onAfOnChange: (evt) => {
|
|
2550
2552
|
evt.stopImmediatePropagation();
|
|
2551
2553
|
this.parseInput(evt);
|
|
2552
2554
|
}, onAfOnBlur: (evt) => {
|
|
@@ -2561,11 +2563,11 @@ const CalendarDatepicker = class {
|
|
|
2561
2563
|
e.preventDefault();
|
|
2562
2564
|
const focusableDateButton = this.hostElement.querySelector('.digi-calendar__date[tabindex="0"]');
|
|
2563
2565
|
focusableDateButton === null || focusableDateButton === void 0 ? void 0 : focusableDateButton.focus();
|
|
2564
|
-
} }, h("button", { key: '
|
|
2566
|
+
} }, h("button", { key: 'c953ddf0c99cfd3b892941da7da4a887b342fd78', id: this.afId + '-button', class: "digi-calendar-datepicker__input-button", slot: "button", "aria-label": this.showCalendar
|
|
2565
2567
|
? this.afCloseCalendarAriaLabel
|
|
2566
|
-
: this.afOpenCalendarAriaLabel, "aria-controls": "calendar-popup", "aria-expanded": this.showCalendar ? 'true' : 'false', onClick: () => this.toggleCalendar(), type: "button" }, h("digi-icon-calendar-alt", { key: '
|
|
2568
|
+
: this.afOpenCalendarAriaLabel, "aria-controls": "calendar-popup", "aria-expanded": this.showCalendar ? 'true' : 'false', onClick: () => this.toggleCalendar(), type: "button" }, h("digi-icon-calendar-alt", { key: '46c7387d404b77911b97f31c10e7147bd436c7e3', class: "digi-calendar-datepicker__button-icon", slot: "icon" })))), h("div", { key: '91894a4219afa79d913f558f5d1cc6b410b535ce', class: "digi-calendar-datepicker__calendar", id: "calendar-popup" }, h("p", { key: '989fc17ea7a95aa014a26e09f7db7f59fe53a36b', role: "alert", class: "digi-calendar-datepicker__sr-instructions" }, this.showCalendar
|
|
2567
2569
|
? `${_t.calendar.screenReaderInstructions}${this.screenReaderUpdateTrigger ? '\u200B' : ''}`
|
|
2568
|
-
: ''), h("digi-calendar", { key: '
|
|
2570
|
+
: ''), h("digi-calendar", { key: '6e62fb845769eca0a9b8cb21e4a09a5620804d42', afActive: this.showCalendar, afShowWeekNumber: this.afShowWeekNumber, afMultipleDates: this.afMultipleDates, afYearSelect: this.afYearSelect, afSelectedDates: this.getSelectedDates, afMinDate: this.afMinDate, afMaxDate: this.afMaxDate, "aria-hidden": !this.showCalendar, afOpenCalendarTo: this.afOpenCalendarTo, onAfOnDateSelectedChange: (evt) => {
|
|
2569
2571
|
evt.stopImmediatePropagation();
|
|
2570
2572
|
this.parseCalendar(evt);
|
|
2571
2573
|
}, onKeyDown: (e) => {
|
|
@@ -2576,7 +2578,7 @@ const CalendarDatepicker = class {
|
|
|
2576
2578
|
return;
|
|
2577
2579
|
e.preventDefault();
|
|
2578
2580
|
this.focusOnCalendarInput();
|
|
2579
|
-
} })), this.afCloseOnSelect && !this.afMultipleDates && (h("div", { key: '
|
|
2581
|
+
} })), this.afCloseOnSelect && !this.afMultipleDates && (h("div", { key: 'd9f3eb470b29a0ab96134f1e4666743efacd7448', class: "digi-calendar-datepicker__selected-date-alert", role: this.errorMessageIsAlert ? 'alert' : null }, this.afSelectedDates.length > 0
|
|
2580
2582
|
? `${_t.calendar.datepicker.selectedDate}: ${this.datesToInputString(this.afSelectedDates)}`
|
|
2581
2583
|
: '')))));
|
|
2582
2584
|
}
|
|
@@ -114,7 +114,7 @@ const FormCheckbox = class {
|
|
|
114
114
|
this.afOnInput.emit(e);
|
|
115
115
|
}
|
|
116
116
|
render() {
|
|
117
|
-
return (h(Host, { key: '
|
|
117
|
+
return (h(Host, { key: 'e8ca1dfe96537dd438a4b6c206adfc7c9fd64d9c', tabindex: -1 }, h("div", { key: '850911b7ffdcea222b12c2c883cf93b63f703b4f', class: Object.assign({ 'digi-form-checkbox': true }, this.cssModifiers) }, h("input", { key: '923a49d0402e6b3034d3e8e6d43033692695c830', class: "digi-form-checkbox__input", ref: (el) => {
|
|
118
118
|
var _a;
|
|
119
119
|
this._input = el;
|
|
120
120
|
(_a = this === null || this === void 0 ? void 0 : this.afInputRef) === null || _a === void 0 ? void 0 : _a.call(this, el);
|
|
@@ -122,7 +122,7 @@ const FormCheckbox = class {
|
|
|
122
122
|
? null
|
|
123
123
|
: `${this.afAriaDescribedby ? `${this.afAriaDescribedby} ` : ''}${this.afDescription ? `${this.afId}-description` : ''}`, "aria-labelledby": this.afAriaLabelledby, "aria-label": this.afAriaLabel, "aria-invalid": this.afValidation === FormCheckboxValidation.ERROR
|
|
124
124
|
? 'true'
|
|
125
|
-
: 'false', required: this.afRequired, id: this.afId, name: this.afName, type: "checkbox", checked: this.afChecked, value: this.afValue, indeterminate: this.afIndeterminate, autofocus: this.afAutofocus ? this.afAutofocus : null }), h("label", { key: '
|
|
125
|
+
: 'false', required: this.afRequired, id: this.afId, name: this.afName, type: "checkbox", checked: this.afChecked, value: this.afValue, indeterminate: this.afIndeterminate, autofocus: this.afAutofocus ? this.afAutofocus : null }), h("label", { key: 'dccbd4e83dbc757483a18ac22d1539ef83dfb534', htmlFor: this.afId, class: "digi-form-checkbox__label" }, h("span", { key: '1cbc88be9d74dab3e04472bc9462712377447d4a', class: "digi-form-checkbox__box" }), this.afLabel), !!this.afDescription && (h("p", { key: 'bdab264d9d13520858c581d2664c0d53171a1415', id: `${this.afId}-description`, class: "digi-form-checkbox__description" }, this.afDescription)))));
|
|
126
126
|
}
|
|
127
127
|
get hostElement() { return getElement(this); }
|
|
128
128
|
static get watchers() { return {
|
|
@@ -48,6 +48,20 @@ import './typography-meta-variation.enum-1f7c2878.js';
|
|
|
48
48
|
import './typography-time-variation.enum-34c830ef.js';
|
|
49
49
|
import './util-breakpoint-observer-breakpoints.enum-6d004731.js';
|
|
50
50
|
|
|
51
|
+
/**
|
|
52
|
+
* Small utility for adding Stencil component scope to dynamically inserted elements
|
|
53
|
+
* (e.g. svg for title logotypes)
|
|
54
|
+
*/
|
|
55
|
+
function applyStencilScope(host, root) {
|
|
56
|
+
const scopeClasses = [...host.classList].filter(c => c.startsWith('sc-'));
|
|
57
|
+
if (!scopeClasses.length)
|
|
58
|
+
return;
|
|
59
|
+
root.classList.add(...scopeClasses);
|
|
60
|
+
root.querySelectorAll('*').forEach(el => {
|
|
61
|
+
el.classList.add(...scopeClasses);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
51
65
|
const formErrorListCss = ".sc-digi-form-error-list-h{--digi--form-error-list--list--padding:var(--digi--gutter--smaller) 0 0 0;--digi--form-error-list--list--margin:0;--digi--form-error-list--item--padding:var(--digi--padding--smaller) 0 0 0;--digi--form-error-list--item--margin:0}.sc-digi-form-error-list-h .digi-form-error-list.sc-digi-form-error-list ul.sc-digi-form-error-list{list-style:none;padding:var(--digi--form-error-list--list--padding);margin:var(--digi--form-error-list--list--margin)}.sc-digi-form-error-list-h .digi-form-error-list.sc-digi-form-error-list ul.sc-digi-form-error-list>li.sc-digi-form-error-list{list-style:none;padding:var(--digi--form-error-list--item--padding);margin:var(--digi--form-error-list--item--margin)}";
|
|
52
66
|
const DigiFormErrorListStyle0 = formErrorListCss;
|
|
53
67
|
|
|
@@ -70,6 +84,24 @@ const FormErrorList = class {
|
|
|
70
84
|
async afMSetHeadingFocus() {
|
|
71
85
|
this.setHeadingFocus();
|
|
72
86
|
}
|
|
87
|
+
connectedCallback() {
|
|
88
|
+
this.observer = new MutationObserver((mutations) => {
|
|
89
|
+
const hasChildChanges = mutations.some(mutation => mutation.type === 'childList');
|
|
90
|
+
if (hasChildChanges) {
|
|
91
|
+
const hostElement = this.hostElement.querySelector('.digi-form-error-list');
|
|
92
|
+
applyStencilScope(hostElement, hostElement);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
this.observer.observe(this.hostElement, {
|
|
96
|
+
childList: true,
|
|
97
|
+
subtree: true
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
disconnectedCallback() {
|
|
101
|
+
if (this.observer) {
|
|
102
|
+
this.observer.disconnect();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
73
105
|
componentDidLoad() {
|
|
74
106
|
this.setHeadingFocus();
|
|
75
107
|
this.afOnReady.emit();
|
|
@@ -96,7 +128,7 @@ const FormErrorList = class {
|
|
|
96
128
|
this.afOnClickLink.emit({ id });
|
|
97
129
|
}
|
|
98
130
|
render() {
|
|
99
|
-
return (h("div", { key: '
|
|
131
|
+
return (h("div", { key: '9471a904e95c6304644d884e15aac90d3b0fbad1', class: "digi-form-error-list", id: this.afId }, h("digi-notification-alert", { key: '13a8bf3037570f929f470cc2a531156d552ca53a', ref: (el) => (this._notificationAlert = el), "af-heading": this.afHeading, "af-heading-level": this.afHeadingLevel, "af-variation": NotificationAlertVariation.DANGER }, this.afDescription && (h("digi-typography", { key: '8e8ef106286f426b0cbcfd904407582e79e8ce24', "af-variation": TypographyVariation.SMALL }, h("p", { key: '51175a8da94efe46a262ce365994aa3c23983f2e', class: "digi-form-error-list__description" }, this.afDescription))), h("slot", { key: 'b9f5287d0e2c0326100a094a48fa5e7ab314b92f' }))));
|
|
100
132
|
}
|
|
101
133
|
get hostElement() { return getElement(this); }
|
|
102
134
|
};
|
|
@@ -113,6 +113,7 @@ const FormFileUpload = class {
|
|
|
113
113
|
* @en Import array with files without triggering upload event. A file object needs to contain an id, status and the file itself.
|
|
114
114
|
*/
|
|
115
115
|
async afMImportFiles(files) {
|
|
116
|
+
this.resetErrors();
|
|
116
117
|
if (files && files.length > 0) {
|
|
117
118
|
for (const importedFile of files) {
|
|
118
119
|
this.validateFile(importedFile);
|
|
@@ -127,6 +128,14 @@ const FormFileUpload = class {
|
|
|
127
128
|
async afMGetFormControlElement() {
|
|
128
129
|
return this._input;
|
|
129
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* Rensar komponentens fillista och eventuella felmeddelanden.
|
|
133
|
+
* @en Clears the component's file list and any error messages.
|
|
134
|
+
*/
|
|
135
|
+
async afMClearFiles() {
|
|
136
|
+
this.files = [];
|
|
137
|
+
this.resetErrors();
|
|
138
|
+
}
|
|
130
139
|
/**
|
|
131
140
|
* Lyssnar på om fokus sätts på custom-elementet och propagerar ner det till själva input-elementet.
|
|
132
141
|
* @en Listens for when focus is set on the custom element and propagates it down to the actual input element.
|
|
@@ -174,7 +183,11 @@ const FormFileUpload = class {
|
|
|
174
183
|
let exist = false;
|
|
175
184
|
if (this.files.length > 0) {
|
|
176
185
|
this.files.forEach((file) => {
|
|
177
|
-
if (file
|
|
186
|
+
if (file['id'] === fileToCheck['id']) {
|
|
187
|
+
exist = true;
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
else if (file.name === fileToCheck.name) {
|
|
178
191
|
exist = true;
|
|
179
192
|
}
|
|
180
193
|
});
|
|
@@ -558,22 +571,22 @@ const FormFileUpload = class {
|
|
|
558
571
|
} }, this.renderFiles())));
|
|
559
572
|
}
|
|
560
573
|
render() {
|
|
561
|
-
return (h(Fragment, { key: '
|
|
574
|
+
return (h(Fragment, { key: 'bec280d44d534a720927ab737b34335600c3fe80' }, h("digi-util-breakpoint-observer", { key: '93983b718eda1869ff95f7a0abe8c6704395a1e0', onAfOnChange: (e) => this.breakpointHandler(e) }), h("div", { key: '23f30473aa0dd681c6c4ea20138d3f13391bb070', class: Object.assign({ 'digi-form-file-upload': true }, this.cssModifiers) }, h("digi-form-label", { key: 'c42a873187b3bf30ddfdb71561d6902a8b2f98fe', afFor: this.afId, afLabel: this.afLabel, afDescription: this.afLabelDescription, afRequired: this.afRequired, afAnnounceIfOptional: this.afAnnounceIfOptional, afRequiredText: this.afRequiredText, afAnnounceIfOptionalText: this.afAnnounceIfOptionalText }), h("div", { key: 'db1082e11bafb320c13a790d639d37ca821617ac', class: {
|
|
562
575
|
'digi-form-file-upload__upload-area': true,
|
|
563
576
|
'digi-form-file-upload__upload-area--hover': this.fileHover
|
|
564
577
|
}, onDrop: (e) => this.handleDrop(e), onDragOver: (e) => this.handleAllowDrop(e), onDragEnter: (e) => this.handleOnDragEnterLeave(e), onDragLeave: (e) => this.handleOnDragEnterLeave(e), onClick: (e) => this.handleInputClick(e) }, this.fileHover &&
|
|
565
|
-
this.afVariation != FormFileUploadVariation.SMALL && (h("div", { key: '
|
|
578
|
+
this.afVariation != FormFileUploadVariation.SMALL && (h("div", { key: 'f58d5f61b5568263e9b60b255f47e6ef418c78e5', class: "digi-form-file-upload__upload-area-overlay" })), h("div", { key: 'c58c52f7e2c8aa8d17fe510ef90435d488844237', class: "digi-form-file-upload__text-area" }, h("button", { key: '1bb7fa84e0778702d0e77008f7d468d560ac8e17', type: "button", id: this.afId + '-button', ref: (el) => {
|
|
566
579
|
this._uploadButton = el;
|
|
567
580
|
}, onClick: (e) => this.handleInputClick(e), class: "digi-form-file-upload__button hidden_mobile", style: {
|
|
568
581
|
margin: '0'
|
|
569
|
-
} }, h("digi-icon-paperclip", { key: '
|
|
582
|
+
} }, h("digi-icon-paperclip", { key: 'a84b67ad055682b1c1b013ec948af0935c35ed0c', "aria-hidden": "true", class: "digi-form-file-upload__button-icon paper-clip", slot: "icon" }), this.afUploadBtnText
|
|
570
583
|
? this.afUploadBtnText
|
|
571
|
-
: _t.form.file_choose), h("input", { key: '
|
|
584
|
+
: _t.form.file_choose), h("input", { key: 'd0babe3bcbc5d03f2436c0f4a7ee23a93ecb0474', ref: (el) => {
|
|
572
585
|
this._input = el;
|
|
573
|
-
}, onChange: (e) => this.onButtonUploadFileHandler(e), class: "digi-form-file-upload__input", multiple: true, type: "file", id: this.afId, accept: this.afFileTypes, name: this.afName ? this.afName : null, required: this.afRequired ? this.afRequired : null, onDrop: (e) => this.handleDrop(e), onDragOver: (e) => this.handleAllowDrop(e), "aria-errormessage": "digi-form-file-upload__error", "aria-describedBy": "digi-form-file-upload__error" }), h("span", { key: '
|
|
574
|
-
_t.form.file_dropzone))), h("p", { key: '
|
|
586
|
+
}, onChange: (e) => this.onButtonUploadFileHandler(e), class: "digi-form-file-upload__input", multiple: true, type: "file", id: this.afId, accept: this.afFileTypes, name: this.afName ? this.afName : null, required: this.afRequired ? this.afRequired : null, onDrop: (e) => this.handleDrop(e), onDragOver: (e) => this.handleAllowDrop(e), "aria-errormessage": "digi-form-file-upload__error", "aria-describedBy": "digi-form-file-upload__error" }), h("span", { key: '20a4158d0462ee2f871bddb57b9e168d356573ed' }, this.afVariation !== FormFileUploadVariation.SMALL &&
|
|
587
|
+
_t.form.file_dropzone))), h("p", { key: 'ade6d22fde218536ce42daff285a1605ac16bdb1', class: "visually-hidden", role: this.errorMessageIsAlert ? 'alert' : null, "aria-atomic": "true", ref: (el) => {
|
|
575
588
|
this._srTextContainer = el;
|
|
576
|
-
} }), (this.files.length > 0 || this.error) && (h("div", { key: '
|
|
589
|
+
} }), (this.files.length > 0 || this.error) && (h("div", { key: '06044ba8e2a5d7e76374af1dfa479c891554ab45', class: "digi-form-file-upload__files" }, this.renderErrorMessage(), this.renderFileContainer())))));
|
|
577
590
|
}
|
|
578
591
|
get hostElement() { return getElement(this); }
|
|
579
592
|
static get watchers() { return {
|