@designsystem-se/af 38.2.0 → 38.2.1-beta.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-form-select-filter.js +84 -47
- package/dist/cjs/digi-arbetsformedlingen.cjs.js +1 -1
- package/dist/cjs/digi-button_11.cjs.entry.js +1194 -0
- package/dist/cjs/digi-calendar-datepicker.cjs.entry.js +7 -7
- package/dist/cjs/digi-code-block_3.cjs.entry.js +6 -6
- package/dist/cjs/digi-dialog.cjs.entry.js +6 -6
- package/dist/cjs/digi-footer-card.cjs.entry.js +29 -0
- package/dist/cjs/digi-footer.cjs.entry.js +74 -0
- package/dist/cjs/digi-form-error-list.cjs.entry.js +6 -6
- package/dist/cjs/digi-form-file-upload.cjs.entry.js +9 -10
- package/dist/cjs/digi-form-input-search.cjs.entry.js +6 -7
- package/dist/cjs/digi-form-receipt.cjs.entry.js +6 -6
- package/dist/cjs/digi-header-avatar.cjs.entry.js +114 -0
- package/dist/cjs/digi-header-navigation-item.cjs.entry.js +27 -0
- package/dist/cjs/digi-header-navigation.cjs.entry.js +228 -0
- package/dist/cjs/digi-header-notification.cjs.entry.js +23 -0
- package/dist/cjs/digi-header.cjs.entry.js +115 -0
- package/dist/cjs/digi-icon-accessibility-universal.cjs.entry.js +30 -0
- package/dist/cjs/digi-icon-bars.cjs.entry.js +30 -0
- package/dist/cjs/digi-icon-bell-filled.cjs.entry.js +30 -0
- package/dist/cjs/digi-icon-envelope.cjs.entry.js +30 -0
- package/dist/cjs/{digi-link-external.cjs.entry.js → digi-icon-external-link-alt_2.cjs.entry.js} +24 -0
- package/dist/cjs/digi-icon-globe.cjs.entry.js +30 -0
- package/dist/cjs/digi-icon-sign.cjs.entry.js +30 -0
- package/dist/cjs/digi-icon-x.cjs.entry.js +30 -0
- package/dist/cjs/digi-layout-block_2.cjs.entry.js +92 -0
- package/dist/cjs/digi-link.cjs.entry.js +75 -0
- package/dist/cjs/digi-logo.cjs.entry.js +49 -0
- package/dist/cjs/digi-media-image_2.cjs.entry.js +167 -0
- package/dist/cjs/digi-navigation-pagination.cjs.entry.js +6 -6
- package/dist/cjs/digi-navigation-sidebar-button.cjs.entry.js +30 -0
- package/dist/cjs/digi-notification-alert.cjs.entry.js +6 -6
- package/dist/cjs/digi-notification-error-page.cjs.entry.js +6 -6
- package/dist/cjs/digi-title-logo.cjs.entry.js +133 -0
- package/dist/cjs/digi-tools-feedback.cjs.entry.js +6 -6
- package/dist/cjs/digi-typography.cjs.entry.js +26 -0
- package/dist/cjs/digi-util-breakpoint-observer.cjs.entry.js +48 -0
- package/dist/cjs/footer-card-variation.enum-99555edc.js +8 -0
- package/dist/cjs/{form-input-type.enum-9c8ee12a.js → form-input-type.enum-1fb2180a.js} +14 -0
- package/dist/cjs/{form-file-upload-variation.enum-634cfae8.js → form-validation-message-variation.enum-c5ec3e2d.js} +7 -0
- package/dist/cjs/index-7a477838.js +84 -20
- package/dist/cjs/index.cjs.js +73 -73
- package/dist/cjs/layout-container-max-width.enum-7e637f44.js +21 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/logo-color.enum-76f6c506.js +7 -0
- package/dist/cjs/{typography-variation.enum-c0ef9190.js → typography-variation.enum-9aab5027.js} +28 -33
- package/dist/collection/components/_form/form-select-filter/form-select-filter.js +85 -48
- package/dist/digi-arbetsformedlingen/design-tokens/components/_logo.variables.scss +2 -0
- package/dist/digi-arbetsformedlingen/digi-arbetsformedlingen.esm.js +1 -1
- package/dist/digi-arbetsformedlingen/index.esm.js +1 -1
- package/dist/digi-arbetsformedlingen/{p-8833044b.entry.js → p-02731621.entry.js} +1 -1
- package/dist/digi-arbetsformedlingen/p-0ef5ec06.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-10261517.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/{p-97f66789.entry.js → p-25371300.entry.js} +1 -1
- package/dist/digi-arbetsformedlingen/p-2c685e4f.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-300aa9ef.js +1 -0
- package/dist/digi-arbetsformedlingen/p-3887bb40.js +1 -0
- package/dist/digi-arbetsformedlingen/p-3efa2f0b.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-47ab0b39.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-4e9f2f05.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/{p-ddd659bf.entry.js → p-655cda00.entry.js} +1 -1
- package/dist/digi-arbetsformedlingen/p-6abd8d58.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-7e77bbe7.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-7e85c9e3.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-8713df13.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-8d9f4f10.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-8ef41ad9.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/{p-18880083.entry.js → p-986a1582.entry.js} +1 -1
- package/dist/digi-arbetsformedlingen/p-9dd41cc4.js +1 -0
- package/dist/digi-arbetsformedlingen/p-a0c77dff.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-a2008b0a.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/{p-e5bd5a7e.entry.js → p-b3283953.entry.js} +1 -1
- package/dist/digi-arbetsformedlingen/p-beba49c2.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-bf80a488.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/{p-a186888d.entry.js → p-c3e0f6dd.entry.js} +1 -1
- package/dist/digi-arbetsformedlingen/p-c553b73b.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-c604694f.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/{p-7f155bd5.entry.js → p-c604a480.entry.js} +1 -1
- package/dist/digi-arbetsformedlingen/p-c64b4626.js +1 -0
- package/dist/digi-arbetsformedlingen/p-c7a512ee.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-c7d079d0.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-c9dfda73.js +1 -0
- package/dist/digi-arbetsformedlingen/p-d6d7b1d8.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-db246e29.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/{p-39468f49.entry.js → p-de22ce43.entry.js} +1 -1
- package/dist/digi-arbetsformedlingen/p-ecc2e481.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-ee88e3f1.js +1 -0
- package/dist/digi-arbetsformedlingen/p-f2e16531.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-f5bcd77b.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-f87c0b45.entry.js +1 -0
- package/dist/digi-arbetsformedlingen/p-fa77fcf7.entry.js +1 -0
- package/dist/esm/digi-arbetsformedlingen.js +1 -1
- package/dist/esm/digi-button_11.entry.js +1180 -0
- package/dist/esm/digi-calendar-datepicker.entry.js +6 -6
- package/dist/esm/digi-code-block_3.entry.js +6 -6
- package/dist/esm/digi-dialog.entry.js +6 -6
- package/dist/esm/digi-footer-card.entry.js +25 -0
- package/dist/esm/digi-footer.entry.js +70 -0
- package/dist/esm/digi-form-error-list.entry.js +6 -6
- package/dist/esm/digi-form-file-upload.entry.js +1 -2
- package/dist/esm/digi-form-input-search.entry.js +1 -2
- package/dist/esm/digi-form-receipt.entry.js +6 -6
- package/dist/esm/digi-header-avatar.entry.js +110 -0
- package/dist/esm/digi-header-navigation-item.entry.js +23 -0
- package/dist/esm/digi-header-navigation.entry.js +224 -0
- package/dist/esm/digi-header-notification.entry.js +19 -0
- package/dist/esm/digi-header.entry.js +111 -0
- package/dist/esm/digi-icon-accessibility-universal.entry.js +26 -0
- package/dist/esm/digi-icon-bars.entry.js +26 -0
- package/dist/esm/digi-icon-bell-filled.entry.js +26 -0
- package/dist/esm/digi-icon-envelope.entry.js +26 -0
- package/dist/esm/{digi-link-external.entry.js → digi-icon-external-link-alt_2.entry.js} +25 -2
- package/dist/esm/digi-icon-globe.entry.js +26 -0
- package/dist/esm/digi-icon-sign.entry.js +26 -0
- package/dist/esm/digi-icon-x.entry.js +26 -0
- package/dist/esm/digi-layout-block_2.entry.js +87 -0
- package/dist/esm/digi-link.entry.js +71 -0
- package/dist/esm/digi-logo.entry.js +45 -0
- package/dist/esm/digi-media-image_2.entry.js +162 -0
- package/dist/esm/digi-navigation-pagination.entry.js +6 -6
- package/dist/esm/digi-navigation-sidebar-button.entry.js +26 -0
- package/dist/esm/digi-notification-alert.entry.js +6 -6
- package/dist/esm/digi-notification-error-page.entry.js +6 -6
- package/dist/esm/digi-title-logo.entry.js +129 -0
- package/dist/esm/digi-tools-feedback.entry.js +6 -6
- package/dist/esm/digi-typography.entry.js +22 -0
- package/dist/esm/digi-util-breakpoint-observer.entry.js +44 -0
- package/dist/esm/footer-card-variation.enum-cc732148.js +8 -0
- package/dist/esm/{form-input-type.enum-3da3db27.js → form-input-type.enum-a6bba983.js} +15 -1
- package/dist/esm/{form-file-upload-variation.enum-9c49ec5e.js → form-validation-message-variation.enum-f7835fc5.js} +8 -1
- package/dist/esm/index-148a7577.js +84 -20
- package/dist/esm/index.js +6 -6
- package/dist/esm/layout-container-max-width.enum-c40018ac.js +21 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/logo-color.enum-8593dca6.js +7 -0
- package/dist/esm/{typography-variation.enum-c85d7857.js → typography-variation.enum-fdda731c.js} +29 -34
- package/dist/types/components/_form/form-select-filter/form-select-filter.d.ts +22 -3
- package/dist/types/components.d.ts +2 -2
- package/hydrate/index.js +84 -47
- package/hydrate/index.mjs +84 -47
- package/package.json +1 -1
- package/dist/cjs/digi-button_27.cjs.entry.js +0 -1380
- package/dist/cjs/digi-form-input.cjs.entry.js +0 -194
- package/dist/cjs/digi-form-label_3.cjs.entry.js +0 -129
- package/dist/cjs/digi-form-select-filter.cjs.entry.js +0 -564
- package/dist/cjs/digi-icon-check.cjs.entry.js +0 -30
- package/dist/cjs/digi-icon-chevron-down.cjs.entry.js +0 -30
- package/dist/cjs/digi-icon-validation-error_2.cjs.entry.js +0 -53
- package/dist/cjs/form-input-search-variation.enum-e0e025b1.js +0 -15
- package/dist/cjs/form-input-variation.enum-c750520c.js +0 -29
- package/dist/cjs/form-validation-message-variation.enum-855ae0be.js +0 -8
- package/dist/digi-arbetsformedlingen/p-111fb07d.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-1f956af8.js +0 -1
- package/dist/digi-arbetsformedlingen/p-2788683e.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-2d2f6950.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-30dc159d.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-42ae53aa.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-4841b4e1.js +0 -1
- package/dist/digi-arbetsformedlingen/p-59073668.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-7933b555.js +0 -1
- package/dist/digi-arbetsformedlingen/p-82611050.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-82a74908.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-88b4d03a.js +0 -1
- package/dist/digi-arbetsformedlingen/p-905ccb30.js +0 -1
- package/dist/digi-arbetsformedlingen/p-9c053cf8.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-9dae073c.entry.js +0 -1
- package/dist/digi-arbetsformedlingen/p-d595e8a3.js +0 -1
- package/dist/digi-arbetsformedlingen/p-eda570be.entry.js +0 -1
- package/dist/esm/digi-button_27.entry.js +0 -1350
- package/dist/esm/digi-form-input.entry.js +0 -190
- package/dist/esm/digi-form-label_3.entry.js +0 -123
- package/dist/esm/digi-form-select-filter.entry.js +0 -560
- package/dist/esm/digi-icon-check.entry.js +0 -26
- package/dist/esm/digi-icon-chevron-down.entry.js +0 -26
- package/dist/esm/digi-icon-validation-error_2.entry.js +0 -48
- package/dist/esm/form-input-search-variation.enum-6d8dc10a.js +0 -15
- package/dist/esm/form-input-variation.enum-64d9450f.js +0 -29
- package/dist/esm/form-validation-message-variation.enum-bcef8a9d.js +0 -8
package/dist/cjs/{typography-variation.enum-c0ef9190.js → typography-variation.enum-9aab5027.js}
RENAMED
|
@@ -51,13 +51,6 @@ exports.DialogVariation = void 0;
|
|
|
51
51
|
DialogVariation["SECONDARY"] = "secondary";
|
|
52
52
|
})(exports.DialogVariation || (exports.DialogVariation = {}));
|
|
53
53
|
|
|
54
|
-
exports.FooterCardVariation = void 0;
|
|
55
|
-
(function (FooterCardVariation) {
|
|
56
|
-
FooterCardVariation["NONE"] = "none";
|
|
57
|
-
FooterCardVariation["ICON"] = "icon";
|
|
58
|
-
FooterCardVariation["BORDER"] = "border";
|
|
59
|
-
})(exports.FooterCardVariation || (exports.FooterCardVariation = {}));
|
|
60
|
-
|
|
61
54
|
exports.FooterVariation = void 0;
|
|
62
55
|
(function (FooterVariation) {
|
|
63
56
|
FooterVariation["LARGE"] = "large";
|
|
@@ -74,6 +67,34 @@ exports.FormErrorListHeadingLevel = void 0;
|
|
|
74
67
|
FormErrorListHeadingLevel["H6"] = "h6";
|
|
75
68
|
})(exports.FormErrorListHeadingLevel || (exports.FormErrorListHeadingLevel = {}));
|
|
76
69
|
|
|
70
|
+
exports.FormInputMode = void 0;
|
|
71
|
+
(function (FormInputMode) {
|
|
72
|
+
FormInputMode["DEFAULT"] = "";
|
|
73
|
+
FormInputMode["NONE"] = "none";
|
|
74
|
+
FormInputMode["TEXT"] = "text";
|
|
75
|
+
FormInputMode["DECIMAL"] = "decimal";
|
|
76
|
+
FormInputMode["NUMERIC"] = "numeric";
|
|
77
|
+
FormInputMode["TEL"] = "tel";
|
|
78
|
+
FormInputMode["SEARCH"] = "search";
|
|
79
|
+
FormInputMode["EMAIL"] = "email";
|
|
80
|
+
FormInputMode["URL"] = "url";
|
|
81
|
+
})(exports.FormInputMode || (exports.FormInputMode = {}));
|
|
82
|
+
|
|
83
|
+
exports.FormInputValidation = void 0;
|
|
84
|
+
(function (FormInputValidation) {
|
|
85
|
+
FormInputValidation["SUCCESS"] = "success";
|
|
86
|
+
FormInputValidation["ERROR"] = "error";
|
|
87
|
+
FormInputValidation["WARNING"] = "warning";
|
|
88
|
+
FormInputValidation["NEUTRAL"] = "neutral";
|
|
89
|
+
})(exports.FormInputValidation || (exports.FormInputValidation = {}));
|
|
90
|
+
|
|
91
|
+
exports.FormInputVariation = void 0;
|
|
92
|
+
(function (FormInputVariation) {
|
|
93
|
+
FormInputVariation["SMALL"] = "small";
|
|
94
|
+
FormInputVariation["MEDIUM"] = "medium";
|
|
95
|
+
FormInputVariation["LARGE"] = "large";
|
|
96
|
+
})(exports.FormInputVariation || (exports.FormInputVariation = {}));
|
|
97
|
+
|
|
77
98
|
exports.FormFieldsetValidation = void 0;
|
|
78
99
|
(function (FormFieldsetValidation) {
|
|
79
100
|
FormFieldsetValidation["SUCCESS"] = "success";
|
|
@@ -179,32 +200,6 @@ exports.InfoCardHeadingLevel = void 0;
|
|
|
179
200
|
InfoCardHeadingLevel["H6"] = "h6";
|
|
180
201
|
})(exports.InfoCardHeadingLevel || (exports.InfoCardHeadingLevel = {}));
|
|
181
202
|
|
|
182
|
-
exports.LayoutBlockContainer = void 0;
|
|
183
|
-
(function (LayoutBlockContainer) {
|
|
184
|
-
LayoutBlockContainer["STATIC"] = "static";
|
|
185
|
-
LayoutBlockContainer["FLUID"] = "fluid";
|
|
186
|
-
LayoutBlockContainer["NONE"] = "none";
|
|
187
|
-
})(exports.LayoutBlockContainer || (exports.LayoutBlockContainer = {}));
|
|
188
|
-
|
|
189
|
-
exports.LayoutContainerVariation = void 0;
|
|
190
|
-
(function (LayoutContainerVariation) {
|
|
191
|
-
LayoutContainerVariation["STATIC"] = "static";
|
|
192
|
-
LayoutContainerVariation["FLUID"] = "fluid";
|
|
193
|
-
LayoutContainerVariation["NONE"] = "none";
|
|
194
|
-
})(exports.LayoutContainerVariation || (exports.LayoutContainerVariation = {}));
|
|
195
|
-
|
|
196
|
-
exports.LayoutContainerMaxWidth = void 0;
|
|
197
|
-
(function (LayoutContainerMaxWidth) {
|
|
198
|
-
LayoutContainerMaxWidth["WIDTH_1200"] = "1200";
|
|
199
|
-
LayoutContainerMaxWidth["WIDTH_1400"] = "1400";
|
|
200
|
-
})(exports.LayoutContainerMaxWidth || (exports.LayoutContainerMaxWidth = {}));
|
|
201
|
-
|
|
202
|
-
exports.LogoColor = void 0;
|
|
203
|
-
(function (LogoColor) {
|
|
204
|
-
LogoColor["PRIMARY"] = "primary";
|
|
205
|
-
LogoColor["SECONDARY"] = "secondary";
|
|
206
|
-
})(exports.LogoColor || (exports.LogoColor = {}));
|
|
207
|
-
|
|
208
203
|
exports.NotificationAlertHeadingLevel = void 0;
|
|
209
204
|
(function (NotificationAlertHeadingLevel) {
|
|
210
205
|
NotificationAlertHeadingLevel["H1"] = "h1";
|
|
@@ -16,6 +16,10 @@ import { FormSelectFilterValidation } from "./form-select-validation.enum";
|
|
|
16
16
|
export class FormSelectFilter {
|
|
17
17
|
constructor() {
|
|
18
18
|
this._searchQuery = '';
|
|
19
|
+
/** True when `value` was set from outside (e.g. Angular CVA) — then value is selection master. */
|
|
20
|
+
this._valueIsMaster = false;
|
|
21
|
+
/** Guards internal `value` writes so they don't flip `_valueIsMaster`. */
|
|
22
|
+
this._updatingValueInternally = false;
|
|
19
23
|
this.isOpen = false;
|
|
20
24
|
this.focusListItemIndex = 0;
|
|
21
25
|
this.focusInList = false;
|
|
@@ -49,17 +53,19 @@ export class FormSelectFilter {
|
|
|
49
53
|
this.afFilterButtonAriaDescribedby = undefined;
|
|
50
54
|
this.afErrorMessageIsAlert = true;
|
|
51
55
|
}
|
|
52
|
-
onValueChanged(
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
56
|
+
onValueChanged(newValue) {
|
|
57
|
+
let parsedValue;
|
|
58
|
+
if (typeof newValue === 'string') {
|
|
59
|
+
parsedValue = newValue ? JSON.parse(newValue) : [];
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
parsedValue = newValue || [];
|
|
63
|
+
}
|
|
64
|
+
if (!this._updatingValueInternally) {
|
|
65
|
+
this._valueIsMaster = true;
|
|
62
66
|
}
|
|
67
|
+
this.value = parsedValue;
|
|
68
|
+
this.syncValueAndSelectedListItems('valueChange');
|
|
63
69
|
}
|
|
64
70
|
handleListItems() {
|
|
65
71
|
if (this.afListItems) {
|
|
@@ -75,15 +81,7 @@ export class FormSelectFilter {
|
|
|
75
81
|
}
|
|
76
82
|
this.giveItemsValueIfNoneExist();
|
|
77
83
|
this.sortListAlphabetically();
|
|
78
|
-
|
|
79
|
-
if (selectedListItems && selectedListItems.length > 0) {
|
|
80
|
-
this._selectedItems = [...selectedListItems];
|
|
81
|
-
this.afOnSelect.emit(this._selectedItems);
|
|
82
|
-
this.value = this._selectedItems;
|
|
83
|
-
}
|
|
84
|
-
else if (this.value && this.value.length > 0) {
|
|
85
|
-
this._selectedItems = [...this.value];
|
|
86
|
-
}
|
|
84
|
+
this.syncValueAndSelectedListItems('afListItemsChange');
|
|
87
85
|
this.filterResults();
|
|
88
86
|
}
|
|
89
87
|
catch (e) {
|
|
@@ -135,14 +133,58 @@ export class FormSelectFilter {
|
|
|
135
133
|
focusOnElement() {
|
|
136
134
|
this._toggleButton.focus();
|
|
137
135
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
136
|
+
componentWillLoad() {
|
|
137
|
+
/* Stencil @Watch does not run for the initial prop value.
|
|
138
|
+
* Given that Angular Control Value Accessors writeValue often sets `value` before willLoad —
|
|
139
|
+
* we need to force a value check here with bootstrapInitialValue .*/
|
|
140
|
+
this.bootstrapInitialValue();
|
|
141
|
+
this.handleListItems();
|
|
142
|
+
}
|
|
143
|
+
bootstrapInitialValue() {
|
|
144
|
+
if (typeof this.value === 'string') {
|
|
145
|
+
const parsed = this.value ? JSON.parse(this.value) : [];
|
|
146
|
+
this._updatingValueInternally = true;
|
|
147
|
+
this.value = parsed;
|
|
148
|
+
this._updatingValueInternally = false;
|
|
149
|
+
}
|
|
150
|
+
if (Array.isArray(this.value) && this.value.length > 0) {
|
|
151
|
+
this._valueIsMaster = true;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Keep `value` and `afListItems[].selected` in sync.
|
|
156
|
+
* - If `value` was set externally (`_valueIsMaster`), value wins on list updates.
|
|
157
|
+
* - Otherwise selection is seeded from `afListItems[].selected` (React/vanilla data-as-master).
|
|
158
|
+
* Does not emit `afOnSelect` — that is reserved for user interaction so Angular Control Value Accessors
|
|
159
|
+
* does not get feedback loops on prop sync.
|
|
160
|
+
*/
|
|
161
|
+
syncValueAndSelectedListItems(whereDidTheChangeComeFrom) {
|
|
162
|
+
if (!this._afListItems) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
if (whereDidTheChangeComeFrom === 'afListItemsChange') {
|
|
166
|
+
if (this._valueIsMaster) {
|
|
167
|
+
this.applyValueToListItems(this.value);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
this._selectedItems = this._afListItems.filter((item) => item.selected);
|
|
171
|
+
this.setValueInternally([...this._selectedItems]);
|
|
172
|
+
}
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
this.applyValueToListItems(this.value);
|
|
176
|
+
}
|
|
177
|
+
applyValueToListItems(value) {
|
|
178
|
+
const selectedValues = new Set((value !== null && value !== void 0 ? value : []).map((item) => item.value));
|
|
179
|
+
this._afListItems.forEach((item) => {
|
|
180
|
+
item.selected = selectedValues.has(item.value);
|
|
181
|
+
});
|
|
182
|
+
this._selectedItems = this._afListItems.filter((item) => selectedValues.has(item.value));
|
|
183
|
+
}
|
|
184
|
+
setValueInternally(nextValue) {
|
|
185
|
+
this._updatingValueInternally = true;
|
|
186
|
+
this.value = nextValue;
|
|
187
|
+
this._updatingValueInternally = false;
|
|
146
188
|
}
|
|
147
189
|
setClosed(focusToggleButton = false) {
|
|
148
190
|
this.isOpen = false;
|
|
@@ -201,9 +243,6 @@ export class FormSelectFilter {
|
|
|
201
243
|
this.setClosed(true);
|
|
202
244
|
this.afOnFilterClosed.emit();
|
|
203
245
|
}
|
|
204
|
-
componentWillLoad() {
|
|
205
|
-
this.handleListItems();
|
|
206
|
-
}
|
|
207
246
|
setFocusItem() {
|
|
208
247
|
const element = this.inputItem(`${this.afId}-select-filter-list`, this.focusListItemIndex);
|
|
209
248
|
if (element) {
|
|
@@ -308,16 +347,14 @@ export class FormSelectFilter {
|
|
|
308
347
|
}
|
|
309
348
|
filterResults() {
|
|
310
349
|
if (this._searchQuery && this._searchQuery.length > 0) {
|
|
311
|
-
this._filteredResult =
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
})
|
|
317
|
-
];
|
|
350
|
+
this._filteredResult = this._afListItems.filter((item) => {
|
|
351
|
+
return item.label
|
|
352
|
+
.toLowerCase()
|
|
353
|
+
.includes(this._searchQuery.toLowerCase());
|
|
354
|
+
});
|
|
318
355
|
}
|
|
319
356
|
else {
|
|
320
|
-
this._filteredResult =
|
|
357
|
+
this._filteredResult = this._afListItems;
|
|
321
358
|
}
|
|
322
359
|
}
|
|
323
360
|
inputSearchKeyboardHandler(e) {
|
|
@@ -337,7 +374,7 @@ export class FormSelectFilter {
|
|
|
337
374
|
}
|
|
338
375
|
resetSelectItems(close = false) {
|
|
339
376
|
this._selectedItems = [];
|
|
340
|
-
this.
|
|
377
|
+
this.setValueInternally([]);
|
|
341
378
|
this.afOnSelect.emit([]);
|
|
342
379
|
this._searchQuery = '';
|
|
343
380
|
this.filterResults();
|
|
@@ -367,7 +404,7 @@ export class FormSelectFilter {
|
|
|
367
404
|
this._selectedItems = [item];
|
|
368
405
|
this.emitFilterClosedEvent();
|
|
369
406
|
}
|
|
370
|
-
this.
|
|
407
|
+
this.setValueInternally([...this._selectedItems]);
|
|
371
408
|
this.afOnSelect.emit(this._selectedItems);
|
|
372
409
|
this.filterResults();
|
|
373
410
|
}
|
|
@@ -458,16 +495,16 @@ export class FormSelectFilter {
|
|
|
458
495
|
} }, h("slot", { name: "empty-search-result" })))));
|
|
459
496
|
}
|
|
460
497
|
render() {
|
|
461
|
-
return (h(Host, { key: '
|
|
498
|
+
return (h(Host, { key: '1a07fd41c8f9ccc1fbd0ca768fd3f87fc719dec4', tabindex: -1 }, h("div", { key: '6492705706e717048243892a3f8b269fa26dc6b9', class: Object.assign({ 'digi-form-select-filter': true }, this.cssModifiers), role: "application", id: `${this.afId}-identifier` }, h("digi-form-label", { key: '99d0e29f7dad712882c0a3c5fd3f468af7dd5c55', afLabel: this.afFilterButtonTextLabel, afFor: `${this.afId}`, afId: `${this.afId}-label`, class: "digi-form-select-filter__label", afDescription: this.afDescription, afRequired: this.afRequired, afAnnounceIfOptional: this.afAnnounceIfOptional, afRequiredText: this.afRequiredText, afAnnounceIfOptionalText: this.afAnnounceIfOptionalText }), h("digi-util-keydown-handler", { key: 'a53d9d63b71557554da9442511af10870e345263', onAfOnEsc: () => this.escHandler() }, h("button", { key: '260c22654935d7422d5fc30a47fbd0c37ec00f0c', type: "button", id: `${this.afId}`, class: "digi-form-select-filter__toggle-button", onClick: () => this.toggleDropdown(), ref: (el) => (this._toggleButton = el), "aria-haspopup": "true", "aria-label": this.ariaLabel, "aria-describedby": `${this.afFilterButtonAriaDescribedby} ${this.afId}--validation-message`, "aria-controls": `${this.afId}-dropdown-menu`, "aria-expanded": this.isOpen }, h("div", { key: 'b92a13d75d3e320a39ca99128354178c01c1ff0d', class: Object.assign({ 'digi-form-filter__toggle-button-wrapper': true }, this.cssModifiersToggleButtonWrapper) }, h("digi-icon-check", { key: '37ab06f299d37c36516a7b809472bb300d244c18', class: Object.assign({ 'digi-form-select-filter__toggle-button-indicator': true }, this.cssModifiersToggleButtonIndicator), slot: "icon" }), h("span", { key: 'ca373143f83ab3da2e6579b3a0e1e145a10d2235', class: "digi-form-select-filter__toggle-button-text" }, this.renderButtonLabel)), h("digi-icon-chevron-down", { key: '1a62747454653ceafa650e329301a8975179d75d', class: "digi-form-select-filter__toggle-icon" })), h("div", { key: 'b0cafd4ce8ad8017f60e8fab88417512a6698f20', id: `${this.afId}-dropdown-menu`, tabindex: this.isOpen ? '-1' : undefined, class: {
|
|
462
499
|
'digi-form-select-filter__dropdown': true,
|
|
463
500
|
'digi-form-select-filter__dropdown--right': this.afAlignRight,
|
|
464
501
|
'digi-form-select-filter__dropdown--hidden': !this.isOpen
|
|
465
|
-
} }, h("fieldset", { key: '
|
|
502
|
+
} }, h("fieldset", { key: 'f98295e8e804f93428489daf5844df9854ed6053' }, h("div", { key: 'c614d142260b6eaa0b6ea643b34f135551aaf1ec', class: "digi-form-select-filter__header" }, h("legend", { key: 'f1c94bf0ea6e3745d8965fbe5bfdf0a298d7b4f0', class: "digi-form-select-filter__legend" }, this.afFilterButtonTextLabel), h("digi-form-input", { key: '6def27fd94b52e666c3e8dac4385ddf874f85bd1', afLabel: this.afName, afId: `${this.afId}-search`, afVariation: FormInputVariation.MEDIUM, afType: FormInputType.SEARCH, afValidation: FormInputValidation.NEUTRAL, onAfOnFocus: () => {
|
|
466
503
|
this.focusListItemIndex = 0;
|
|
467
504
|
99;
|
|
468
505
|
}, onAfOnKeyup: (e) => {
|
|
469
506
|
this.inputSearchKeyboardHandler(e.detail);
|
|
470
|
-
}, onAfOnInput: (e) => this.inputSearchInputHandler(e.detail), afValue: this._searchQuery, class: "digi-form-select-filter__search-input", afAriaControls: `${this.afId}-select-filter-list`, afAutocomplete: "off", afAriaAutocomplete: "none" }), this.renderEmptyStateBox()), h("div", { key: '
|
|
507
|
+
}, onAfOnInput: (e) => this.inputSearchInputHandler(e.detail), afValue: this._searchQuery, class: "digi-form-select-filter__search-input", afAriaControls: `${this.afId}-select-filter-list`, afAutocomplete: "off", afAriaAutocomplete: "none" }), this.renderEmptyStateBox()), h("div", { key: 'bcfc446573bb4b8f88aabdde1a8b6da1a6ac51f7', class: "digi-form-select-filter__scroll" }, h("digi-util-keydown-handler", { key: '656253e1dba64d2906ae9b195063300fe5cbd900', onAfOnDown: (e) => this.downHandler(e), onAfOnRight: (e) => this.downHandler(e), onAfOnUp: (e) => this.upHandler(e), onAfOnLeft: (e) => this.upHandler(e), onAfOnHome: (e) => this.homeHandler(e), onAfOnEnd: (e) => this.endHandler(e), onAfOnEnter: (e) => this.enterHandler(e), onAfOnSpace: (e) => this.spaceHandler(e), onAfOnTab: () => this.tabHandler(), onAfOnShiftTab: () => this.shiftHandler() }, h("ul", { key: '4a42a8ee02e3921710aa00826b31558ed1f9a485', class: "digi-form-select-filter__list", "aria-labelledby": `${this.afId}`, id: `${this.afId}-select-filter-list`, role: this.afMultipleItems ? '' : 'radiogroup', "aria-invalid": this.afMultipleItems
|
|
471
508
|
? 'false'
|
|
472
509
|
: this.afValidation ===
|
|
473
510
|
FormSelectFilterValidation.ERROR
|
|
@@ -476,11 +513,11 @@ export class FormSelectFilter {
|
|
|
476
513
|
? false
|
|
477
514
|
: this.afRequired
|
|
478
515
|
? 'true'
|
|
479
|
-
: 'false' }, this.showNeutralValue && (h("li", { key: '
|
|
516
|
+
: 'false' }, this.showNeutralValue && (h("li", { key: '40d30a579a332fec15b5c3f38865eacce0a8c2ee', class: "digi-form-select-filter__item", role: "radio", "aria-required": this.afMultipleItems
|
|
480
517
|
? 'false'
|
|
481
518
|
: this.afRequired
|
|
482
519
|
? 'true'
|
|
483
|
-
: 'false', "aria-checked": this._selectedItems.length === 0 ? 'true' : 'false', onClick: () => this.resetSelectItems(true), tabIndex: 0, "aria-label": this.afFilterButtonText }, this._selectedItems.length === 0 && (h("digi-icon-check", { key: '
|
|
520
|
+
: 'false', "aria-checked": this._selectedItems.length === 0 ? 'true' : 'false', onClick: () => this.resetSelectItems(true), tabIndex: 0, "aria-label": this.afFilterButtonText }, this._selectedItems.length === 0 && (h("digi-icon-check", { key: '43f446e70c707681dd1de50e11af511e8c4d060e', class: "digi-form-select-filter__item__icon", "aria-hidden": 'true' })), this.afFilterButtonText)), this._filteredResult &&
|
|
484
521
|
this._filteredResult.map((item, index) => {
|
|
485
522
|
return (h("li", { class: "digi-form-select-filter__item", key: index, dir: item.dir, lang: item.lang, "aria-checked": this.isSelected(item.value) ? 'true' : 'false', role: this.afMultipleItems ? 'checkbox' : 'radio', "aria-required": this.afMultipleItems
|
|
486
523
|
? 'false'
|
|
@@ -496,9 +533,9 @@ export class FormSelectFilter {
|
|
|
496
533
|
: index === 0
|
|
497
534
|
? 0
|
|
498
535
|
: -1 }, this.isSelected(item.value) && (h("digi-icon-check", { class: "digi-form-select-filter__item__icon", "aria-hidden": 'true' })), item.label));
|
|
499
|
-
}))))), this.afMultipleItems && (h("div", { key: '
|
|
536
|
+
}))))), this.afMultipleItems && (h("div", { key: 'f94a71fb292baf936c9358e33316f1ee93ce37f3', class: "digi-form-select-filter__footer" }, !this.afHideResetButton && (h("digi-button", { key: '305beb8e5f817d46d5f7b5364e4125c101cbaed5', "af-variation": "secondary", "af-aria-label": this.afResetButtonTextAriaLabel, onClick: () => this.resetSelectItems(), class: "digi-form-select-filter__reset-button" }, this.afResetButtonText)), h("digi-util-keydown-handler", { key: '3bf7f1f1bcd2a4e07fd900ba4b6377decc617cd7', onAfOnUp: () => this.setFocusItem() }, h("digi-button", { key: 'eaa1389239c8b5e93ecac2ed2f6ed09fcda81863', ref: (el) => (this._submitButton = el), "af-variation": "primary", "af-aria-label": this.afSubmitButtonTextAriaLabel, onClick: () => {
|
|
500
537
|
this.setClosed(true);
|
|
501
|
-
}, class: "digi-form-select-filter__submit-button" }, this.afSubmitButtonText)))))), h("div", { key: '
|
|
538
|
+
}, class: "digi-form-select-filter__submit-button" }, this.afSubmitButtonText)))))), h("div", { key: '213a685ba0d080e873721d526c1517e62f1779be', class: "digi-form-select__footer" }, h("div", { key: '81b470b19af8e472e50a789a6116448b8204359e', "aria-atomic": "true", role: this.errorMessageIsAlert ? 'alert' : null, id: `${this.afId}--validation-message` }, this.showValidation() && (h("digi-form-validation-message", { key: '457f29208d032eb29e7bb94c9db9fb9634866524', "af-variation": this.afValidation }, this.afValidationText)))))));
|
|
502
539
|
}
|
|
503
540
|
static get is() { return "digi-form-select-filter"; }
|
|
504
541
|
static get encapsulation() { return "scoped"; }
|
|
@@ -740,7 +777,7 @@ export class FormSelectFilter {
|
|
|
740
777
|
"docs": {
|
|
741
778
|
"tags": [{
|
|
742
779
|
"name": "ignore",
|
|
743
|
-
"text":
|
|
780
|
+
"text": "Propertyn `value` finns inte dokumenterad p\u00E5 komponentens sida p\u00E5 dokumentationswebben, utan\n\u00E4r endast till f\u00F6r att anv\u00E4ndas tillsammans med Angulars Control Value Accessors (CVA).\nAnv\u00E4nds CVA f\u00F6r att hantera komponentens v\u00E4rden s\u00E5 ska inte afListItems anv\u00E4ndas f\u00F6r att\np\u00E5verka vilka val som \u00E4r gjorda eller ej.\nExempel p\u00E5 b\u00E5da s\u00E4tten att hantera datat finns i Angular Playground."
|
|
744
781
|
}],
|
|
745
782
|
"text": ""
|
|
746
783
|
},
|
|
@@ -15,4 +15,6 @@
|
|
|
15
15
|
--digi--logo--secondary--symbol: var(--digi--color--logotype--secondary--symbol);
|
|
16
16
|
--digi--logo--primary--text: var(--digi--color--logotype--primary--text);
|
|
17
17
|
--digi--logo--secondary--text: var(--digi--color--logotype--secondary--text);
|
|
18
|
+
}g: 1.375rem;
|
|
19
|
+
--digi--title-logo-gap: 9px;
|
|
18
20
|
}
|