@designsystem-se/af 39.1.0-beta.2 → 39.1.0-beta.3

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 (185) hide show
  1. package/components/digi-bar-chart.js +1 -1
  2. package/components/digi-button.js +1 -1
  3. package/components/digi-calendar-week-view.js +2 -2
  4. package/components/digi-chart-line.js +1 -1
  5. package/components/digi-code-block.js +1 -1
  6. package/components/digi-code-example.js +2 -2
  7. package/components/digi-context-menu.js +1 -1
  8. package/components/digi-dialog.js +1 -1
  9. package/components/digi-form-category-filter.js +1 -1
  10. package/components/digi-form-error-list.js +2 -2
  11. package/components/digi-form-file-upload.js +1 -1
  12. package/components/digi-form-filter.js +1 -1
  13. package/components/digi-form-input-search.js +2 -2
  14. package/components/digi-form-select-filter.js +1 -1
  15. package/components/digi-header-navigation.js +1 -1
  16. package/components/digi-header.js +2 -2
  17. package/components/digi-navigation-pagination.js +1 -1
  18. package/components/digi-navigation-sidebar-button.js +1 -1
  19. package/components/digi-navigation-sidebar.js +1 -1
  20. package/components/digi-notification-alert.js +1 -1
  21. package/components/digi-tag.js +1 -1
  22. package/components/digi-tools-feedback-banner.js +7 -2
  23. package/components/digi-tools-feedback.js +1 -1
  24. package/components/p-3IdGnhr5.js +172 -0
  25. package/components/{p-DDZ0nalw.js → p-B-hL6z4l.js} +1 -1
  26. package/components/{p-Dq9EWvk8.js → p-BOM-CTrq.js} +1 -1
  27. package/components/{p-C32dTT4K.js → p-BZkK1uIs.js} +1 -1
  28. package/dist/cjs/button-type.enum-2UH0KkO-.js +8 -0
  29. package/dist/cjs/{button-variation.enum-DkUalo9f.js → button-variation.enum-ngMqFLdW.js} +6 -0
  30. package/dist/cjs/{code-example-variation.enum-BCENTUV2.js → code-example-variation.enum-Cq-BioXW.js} +0 -6
  31. package/dist/cjs/digi-arbetsformedlingen.cjs.js +1 -1
  32. package/dist/cjs/{digi-calendar-week-view.cjs.entry.js → digi-button_5.cjs.entry.js} +260 -72
  33. package/dist/cjs/digi-calendar-datepicker.cjs.entry.js +10 -6
  34. package/dist/cjs/digi-code-block_3.cjs.entry.js +10 -6
  35. package/dist/cjs/digi-code-example.cjs.entry.js +4 -4
  36. package/dist/cjs/digi-dialog.cjs.entry.js +10 -6
  37. package/dist/cjs/digi-footer.cjs.entry.js +9 -5
  38. package/dist/cjs/digi-form-error-list.cjs.entry.js +9 -5
  39. package/dist/cjs/digi-form-file-upload.cjs.entry.js +11 -10
  40. package/dist/cjs/digi-form-input-search.cjs.entry.js +9 -7
  41. package/dist/cjs/digi-form-input.cjs.entry.js +205 -0
  42. package/dist/cjs/digi-form-label_3.cjs.entry.js +147 -0
  43. package/dist/cjs/digi-form-receipt.cjs.entry.js +9 -5
  44. package/dist/cjs/digi-form-select-filter.cjs.entry.js +649 -0
  45. package/dist/cjs/digi-header-navigation.cjs.entry.js +9 -5
  46. package/dist/cjs/digi-header.cjs.entry.js +9 -5
  47. package/dist/cjs/digi-icon-check.cjs.entry.js +28 -0
  48. package/dist/cjs/digi-icon-chevron-down.cjs.entry.js +28 -0
  49. package/dist/cjs/digi-icon-validation-error_2.cjs.entry.js +51 -0
  50. package/dist/cjs/digi-navigation-pagination.cjs.entry.js +9 -5
  51. package/dist/cjs/digi-notification-alert.cjs.entry.js +9 -5
  52. package/dist/cjs/digi-notification-error-page.cjs.entry.js +9 -5
  53. package/dist/cjs/digi-title-logo.cjs.entry.js +9 -5
  54. package/dist/cjs/digi-tools-feedback-banner.cjs.entry.js +7 -2
  55. package/dist/cjs/digi-tools-feedback.cjs.entry.js +11 -7
  56. package/dist/cjs/digi-util-keydown-handler.cjs.entry.js +81 -0
  57. package/dist/cjs/{form-validation-message-variation.enum-DgkifAnP.js → form-file-upload-variation.enum-xcEOoggr.js} +0 -7
  58. package/dist/cjs/form-input-search-variation.enum-VVfvlVeM.js +8 -0
  59. package/dist/cjs/{form-input-type.enum-B2CsNSBg.js → form-input-type.enum-DvF_MTHK.js} +0 -14
  60. package/dist/cjs/form-input-variation.enum-kpoXNUuI.js +29 -0
  61. package/dist/cjs/form-validation-message-variation.enum-BA5nmCiw.js +8 -0
  62. package/dist/cjs/index-tbq85ezH.js +26 -10
  63. package/dist/cjs/index.cjs.js +52 -48
  64. package/dist/cjs/loader.cjs.js +1 -1
  65. package/dist/cjs/{typography-variation.enum-4snUBTF7.js → typography-variation.enum-BDSt7CVI.js} +0 -28
  66. package/dist/collection/components/_button/button/button.css +23 -0
  67. package/dist/collection/components/_calendar/week-view/calendar-week-view.css +36 -47
  68. package/dist/collection/components/_form/form-file-upload/form-file-upload.css +11 -15
  69. package/dist/collection/components/_form/form-input-search/form-input-search.css +0 -4
  70. package/dist/collection/components/_tools/tools-feedback-banner/tools-feedback-banner.js +7 -2
  71. package/dist/collection/design-tokens/components/_button.variables.scss +6 -0
  72. package/dist/collection/design-tokens/components/_logo.variables.scss +17 -15
  73. package/dist/digi-arbetsformedlingen/design-tokens/components/_button.variables.scss +6 -0
  74. package/dist/digi-arbetsformedlingen/digi-arbetsformedlingen.esm.js +1 -1
  75. package/dist/digi-arbetsformedlingen/index.esm.js +1 -1
  76. package/dist/digi-arbetsformedlingen/p-0a993ca4.entry.js +1 -0
  77. package/dist/digi-arbetsformedlingen/p-0b0009eb.entry.js +1 -0
  78. package/dist/digi-arbetsformedlingen/p-21853656.entry.js +1 -0
  79. package/dist/digi-arbetsformedlingen/p-23d8d58c.entry.js +1 -0
  80. package/dist/digi-arbetsformedlingen/p-28f335d8.entry.js +1 -0
  81. package/dist/digi-arbetsformedlingen/p-2f65802b.entry.js +1 -0
  82. package/dist/digi-arbetsformedlingen/{p-77d355fe.entry.js → p-4336cdff.entry.js} +1 -1
  83. package/dist/digi-arbetsformedlingen/p-4c9a428d.entry.js +1 -0
  84. package/dist/digi-arbetsformedlingen/p-4ee14c12.entry.js +1 -0
  85. package/dist/digi-arbetsformedlingen/p-4smNltRI.js +1 -0
  86. package/dist/digi-arbetsformedlingen/p-5c7e6e61.entry.js +1 -0
  87. package/dist/digi-arbetsformedlingen/p-60928fb0.entry.js +1 -0
  88. package/dist/digi-arbetsformedlingen/p-68e721b1.entry.js +1 -0
  89. package/dist/digi-arbetsformedlingen/p-7da0451b.entry.js +1 -0
  90. package/dist/digi-arbetsformedlingen/p-87e306b0.entry.js +1 -0
  91. package/dist/digi-arbetsformedlingen/p-8848ce2b.entry.js +1 -0
  92. package/dist/digi-arbetsformedlingen/p-91a0e1ca.entry.js +1 -0
  93. package/dist/digi-arbetsformedlingen/p-9d3da044.entry.js +1 -0
  94. package/dist/digi-arbetsformedlingen/p-B8hpiXmh.js +1 -0
  95. package/dist/digi-arbetsformedlingen/p-BMQm4N5I.js +1 -0
  96. package/dist/digi-arbetsformedlingen/p-BSJH8Lpg.js +1 -0
  97. package/dist/digi-arbetsformedlingen/p-BfyJgcLA.js +1 -0
  98. package/dist/digi-arbetsformedlingen/p-BvWKyXb_.js +1 -0
  99. package/dist/digi-arbetsformedlingen/p-DGI7Jkg2.js +1 -0
  100. package/dist/digi-arbetsformedlingen/p-DShzaNrQ.js +1 -0
  101. package/dist/digi-arbetsformedlingen/p-DfWZa2Wv.js +1 -0
  102. package/dist/digi-arbetsformedlingen/p-a563f0f4.entry.js +1 -0
  103. package/dist/digi-arbetsformedlingen/p-ad7e2dc6.entry.js +1 -0
  104. package/dist/digi-arbetsformedlingen/p-beab4698.entry.js +1 -0
  105. package/dist/digi-arbetsformedlingen/p-c9c140af.entry.js +1 -0
  106. package/dist/digi-arbetsformedlingen/p-d62e264c.entry.js +1 -0
  107. package/dist/digi-arbetsformedlingen/p-ef47f143.entry.js +1 -0
  108. package/dist/digi-arbetsformedlingen/p-f9a2a80e.entry.js +1 -0
  109. package/dist/digi-arbetsformedlingen/p-feaeab97.entry.js +1 -0
  110. package/dist/digi-arbetsformedlingen/{p-DbBOgLZR.js → p-xwICssEK.js} +1 -1
  111. package/dist/esm/button-type.enum-DShzaNrQ.js +8 -0
  112. package/dist/esm/{button-variation.enum-y5Nm4oWF.js → button-variation.enum-BMQm4N5I.js} +7 -1
  113. package/dist/esm/{code-example-variation.enum-Ooszw6tl.js → code-example-variation.enum-DGI7Jkg2.js} +1 -7
  114. package/dist/esm/digi-arbetsformedlingen.js +1 -1
  115. package/dist/esm/{digi-calendar-week-view.entry.js → digi-button_5.entry.js} +190 -6
  116. package/dist/esm/digi-calendar-datepicker.entry.js +10 -6
  117. package/dist/esm/digi-code-block_3.entry.js +9 -5
  118. package/dist/esm/digi-code-example.entry.js +2 -2
  119. package/dist/esm/digi-dialog.entry.js +9 -5
  120. package/dist/esm/digi-footer.entry.js +9 -5
  121. package/dist/esm/digi-form-error-list.entry.js +9 -5
  122. package/dist/esm/digi-form-file-upload.entry.js +3 -2
  123. package/dist/esm/digi-form-input-search.entry.js +4 -2
  124. package/dist/esm/digi-form-input.entry.js +203 -0
  125. package/dist/esm/digi-form-label_3.entry.js +143 -0
  126. package/dist/esm/digi-form-receipt.entry.js +9 -5
  127. package/dist/esm/digi-form-select-filter.entry.js +647 -0
  128. package/dist/esm/digi-header-navigation.entry.js +9 -5
  129. package/dist/esm/digi-header.entry.js +9 -5
  130. package/dist/esm/digi-icon-check.entry.js +26 -0
  131. package/dist/esm/digi-icon-chevron-down.entry.js +26 -0
  132. package/dist/esm/digi-icon-validation-error_2.entry.js +48 -0
  133. package/dist/esm/digi-navigation-pagination.entry.js +9 -5
  134. package/dist/esm/digi-notification-alert.entry.js +9 -5
  135. package/dist/esm/digi-notification-error-page.entry.js +9 -5
  136. package/dist/esm/digi-title-logo.entry.js +9 -5
  137. package/dist/esm/digi-tools-feedback-banner.entry.js +7 -2
  138. package/dist/esm/digi-tools-feedback.entry.js +9 -5
  139. package/dist/esm/digi-util-keydown-handler.entry.js +79 -0
  140. package/dist/esm/{form-validation-message-variation.enum-9n7Okhf1.js → form-file-upload-variation.enum-BfyJgcLA.js} +1 -8
  141. package/dist/esm/form-input-search-variation.enum-BvWKyXb_.js +8 -0
  142. package/dist/esm/{form-input-type.enum-CN1mgrt1.js → form-input-type.enum-BSJH8Lpg.js} +1 -15
  143. package/dist/esm/form-input-variation.enum-DfWZa2Wv.js +29 -0
  144. package/dist/esm/form-validation-message-variation.enum-B8hpiXmh.js +8 -0
  145. package/dist/esm/{index-DnTiPaEs.js → index-B1Je6g2n.js} +1 -1
  146. package/dist/esm/index-Co_lVhh_.js +26 -10
  147. package/dist/esm/index.js +9 -5
  148. package/dist/esm/loader.js +1 -1
  149. package/dist/esm/{typography-variation.enum-BDBYHWrh.js → typography-variation.enum-4smNltRI.js} +1 -29
  150. package/dist/types/components/_tools/tools-feedback-banner/tools-feedback-banner.d.ts +1 -0
  151. package/hydrate/index.js +11 -6
  152. package/hydrate/index.mjs +11 -6
  153. package/package.json +1 -1
  154. package/components/p--RxphPe_.js +0 -172
  155. package/dist/cjs/digi-button_11.cjs.entry.js +0 -1274
  156. package/dist/cjs/digi-icon-chevron-left_2.cjs.entry.js +0 -51
  157. package/dist/cjs/digi-typography.cjs.entry.js +0 -22
  158. package/dist/digi-arbetsformedlingen/p-0dc8c1f1.entry.js +0 -1
  159. package/dist/digi-arbetsformedlingen/p-14d011c8.entry.js +0 -1
  160. package/dist/digi-arbetsformedlingen/p-31d3b121.entry.js +0 -1
  161. package/dist/digi-arbetsformedlingen/p-38d6c196.entry.js +0 -1
  162. package/dist/digi-arbetsformedlingen/p-44c16261.entry.js +0 -1
  163. package/dist/digi-arbetsformedlingen/p-45f30e15.entry.js +0 -1
  164. package/dist/digi-arbetsformedlingen/p-478dd735.entry.js +0 -1
  165. package/dist/digi-arbetsformedlingen/p-591509af.entry.js +0 -1
  166. package/dist/digi-arbetsformedlingen/p-8c4b642e.entry.js +0 -1
  167. package/dist/digi-arbetsformedlingen/p-8fb4e6a3.entry.js +0 -1
  168. package/dist/digi-arbetsformedlingen/p-93367afb.entry.js +0 -1
  169. package/dist/digi-arbetsformedlingen/p-9n7Okhf1.js +0 -1
  170. package/dist/digi-arbetsformedlingen/p-BDBYHWrh.js +0 -1
  171. package/dist/digi-arbetsformedlingen/p-CN1mgrt1.js +0 -1
  172. package/dist/digi-arbetsformedlingen/p-Ooszw6tl.js +0 -1
  173. package/dist/digi-arbetsformedlingen/p-aaeddc10.entry.js +0 -1
  174. package/dist/digi-arbetsformedlingen/p-ab84eed8.entry.js +0 -1
  175. package/dist/digi-arbetsformedlingen/p-bd635299.entry.js +0 -1
  176. package/dist/digi-arbetsformedlingen/p-c273763e.entry.js +0 -1
  177. package/dist/digi-arbetsformedlingen/p-c73ddbe2.entry.js +0 -1
  178. package/dist/digi-arbetsformedlingen/p-cd90ab0b.entry.js +0 -1
  179. package/dist/digi-arbetsformedlingen/p-cfe0bcf9.entry.js +0 -1
  180. package/dist/digi-arbetsformedlingen/p-d441cad3.entry.js +0 -1
  181. package/dist/digi-arbetsformedlingen/p-fd330ef0.entry.js +0 -1
  182. package/dist/digi-arbetsformedlingen/p-y5Nm4oWF.js +0 -1
  183. package/dist/esm/digi-button_11.entry.js +0 -1262
  184. package/dist/esm/digi-icon-chevron-left_2.entry.js +0 -48
  185. package/dist/esm/digi-typography.entry.js +0 -20
@@ -0,0 +1,647 @@
1
+ import { r as registerInstance, c as createEvent, h, F as Fragment, a as Host, d as getElement } from './index-Co_lVhh_.js';
2
+ import { r as randomIdGenerator } from './randomIdGenerator.util-BGaIliX6.js';
3
+ import { l as logger } from './logger.util-DdB9j8uV.js';
4
+ import { d as detectClickOutside } from './detectClickOutside.util-ROzp1Ej2.js';
5
+ import { d as detectFocusOutside } from './detectFocusOutside.util-aFLLVVle.js';
6
+ import { _ as _t } from './text-DsO1BTml.js';
7
+ import './badge-notification-shape.enum-CKoZU0-H.js';
8
+ import { l as FormSelectFilterValidation } from './typography-variation.enum-4smNltRI.js';
9
+ import './badge-status-variation.enum-C0A-p3cU.js';
10
+ import './button-variation.enum-BMQm4N5I.js';
11
+ import './button-type.enum-DShzaNrQ.js';
12
+ import './calendar-week-view-heading-level.enum-DH_-wpLB.js';
13
+ import './bar-chart-variation.enum-DPeoHh1J.js';
14
+ import './code-example-variation.enum-DGI7Jkg2.js';
15
+ import './code-variation.enum-qc6KRZue.js';
16
+ import './expandable-accordion-header-level.enum-DwNlf6Sh.js';
17
+ import './expandable-faq-item-variation.enum-C6B2KRZo.js';
18
+ import './expandable-faq-variation.enum-CES5gUEo.js';
19
+ import './footer-card-variation.enum-DzSu1-K0.js';
20
+ import './form-checkbox-variation.enum-6-MpaVf8.js';
21
+ import './form-file-upload-variation.enum-BfyJgcLA.js';
22
+ import './form-input-search-variation.enum-BvWKyXb_.js';
23
+ import { a as FormInputType } from './form-input-type.enum-BSJH8Lpg.js';
24
+ import { a as FormInputValidation, b as FormInputVariation } from './form-input-variation.enum-DfWZa2Wv.js';
25
+ import './form-radiogroup-validation.enum-DcnvI7UR.js';
26
+ import './form-select-variation.enum-DCS1KcvC.js';
27
+ import './form-textarea-variation.enum-DogB9kfH.js';
28
+ import './form-validation-message-variation.enum-B8hpiXmh.js';
29
+ import './info-card-multi-type.enum-CkIb3cUS.js';
30
+ import './info-card-variation.enum-_ycZeBN4.js';
31
+ import './layout-container-max-width.enum-CuhrrYGE.js';
32
+ import './layout-block-variation.enum-CWFirwyE.js';
33
+ import './layout-columns-variation.enum-DJCufAhy.js';
34
+ import './link-button-variation.enum-CPzcg9n3.js';
35
+ import './list-type.enum-CsNHGpkJ.js';
36
+ import './loader-skeleton-variation.enum-D_VIx0pC.js';
37
+ import './loader-spinner-size.enum-ArGkfrXt.js';
38
+ import './logo-color.enum-Chk3GCYK.js';
39
+ import './media-figure-alignment.enum-evtVuhQt.js';
40
+ import './navigation-sidebar-variation.enum-V-HTxO5a.js';
41
+ import './navigation-vertical-menu-variation.enum-DPkRL9Bv.js';
42
+ import './progress-circle-role.enum-w8pbG68a.js';
43
+ import './progress-indicator-variation.enum-DMrSPsPW.js';
44
+ import './progress-list-item-variation.enum-DXqRzyRP.js';
45
+ import './progress-list-variation.enum-DoZkBEe8.js';
46
+ import './progressbar-variation.enum-m9xS70Ez.js';
47
+ import './quote-image-inner-position.enum-CmH9mJ43.js';
48
+ import './table-variation.enum-DBcU_EnL.js';
49
+ import './tag-media-icon.enum-BvcVTm_t.js';
50
+ import './tag-size.enum-bQJ38En_.js';
51
+ import './tools-feedback-banner-type.enum-DrVSK7Ws.js';
52
+ import './tools-feedback-rating-variation.enum-CAmn5qzb.js';
53
+ import './tools-theme-provider.brand.enum-DpDyNuVC.js';
54
+ import './typography-heading-jumbo-variation.enum-DNjGvZvz.js';
55
+ import './typography-meta-variation.enum-CHxBAbI8.js';
56
+ import './typography-time-variation.enum-rhVqmQwC.js';
57
+ import './util-breakpoint-observer-breakpoints.enum-DPq588Q4.js';
58
+ import './detectClosest.util-DwBvm-Nc.js';
59
+
60
+ const formSelectFilterCss = () => `.sc-digi-form-select-filter-h{--digi--form-select-filter--footer--background:var(--digi--color--background--secondary);--digi--form-select-filter--scroll--max-height:10.625rem;--digi--form-select-filter--scroll--padding:var(--digi--padding--small);--digi--form-select-filter--reset-button--margin-right:var(--digi--padding--small);--digi--form-select-filter--legend__border-bottom:var(--digi--border-width--primary) solid var(--digi--color--divider--primary);--digi--form-select-filter--list--margin:0;--digi--form-select-filter--list--padding:var(--digi--gutter--small) 0 0 0;--digi--form-select-filter--item--margin:var(--digi--gutter--small) 0;--digi--form-select-filter--toggle-icon--transition:ease-in-out 0.2s all;--digi--form-select-filter--dropdown--border-radius:var(--digi--border-radius--input);--digi--form-select-filter--dropdown--background:var(--digi--color--background--interactive--default--input-elements);--digi--form-select-filter--dropdown--min-width:18.75rem;--digi--form-select-filter--dropdown--margin-top:var(--digi--gutter--small);--digi--form-select-filter--dropdown--z-index:999;--digi--form-select-filter--dropdown--header--background:var(--digi--color--background--secondary-accent);--digi--form-select-filter--dropdown--item--cursor:pointer;--digi--form-select-filter--dropdown--item--height:auto;--digi--form-select-filter--dropdown--item--min-height:1.5rem;--digi--form-select-filter--dropdown--item--color:var(--digi--color--text--primary);--digi--form-select-filter--dropdown--item--font-size:var(--digi--typography--body--font-size--desktop);--digi--form-select-filter--dropdown--item--font-family:var(--digi--global--typography--font-family--default);--digi--form-select-filter--dropdown--item--font-weight--default:var(--digi--typography--link--font-weight--desktop);--digi--form-select-filter--dropdown--item--font-weight--selected:var(--digi--typography--link-bold--font-weight--desktop);--digi--form-select-filter--dropdown--item--font-weight--hover:var(--digi--typography--link-bold--font-weight--desktop);--digi--form-select-filter--dropdown--item--letter-spacing:0px;--digi--form-select-filter--dropdown--item--line-height:1.5;--digi--form-select-filter--dropdown--item--margin-bottom:0px;--digi--form-select-filter--dropdown--item--border-width:var(--digi--border-width--primary);--digi--form-select-filter--dropdown--item--border-type:var(--digi--border-style--primary);--digi--form-select-filter--dropdown--item--border-color:var(--digi--color--divider--primary);--digi--form-select-filter--dropdown--item--padding-y:var(--digi--margin--small);--digi--form-select-filter--dropdown--item--padding-x:var(--digi--margin--largest);--digi--form-select-filter--dropdown--item--multiple--padding-y:var(--digi--margin--small);--digi--form-select-filter--dropdown--item--multiple--padding-x:var(--digi--padding--largest-2);--digi--form-select-filter--dropdown--item--background-color--default:var(--digi--color--background--interactive--default--input-elements);--digi--form-select-filter--dropdown--item--background-color--focus:var(--digi--color--background--interactive--hover--quarternary);--digi--form-select-filter--dropdown--item--background-color--hover:var(--digi--color--background--interactive--hover--quarternary);--digi--form-select-filter--dropdown--item--background-color--active:var(--digi--color--background--interactive--selected--tertiary);--digi--form-select-filter--dropdown--item--background-color--selected:var(--digi--color--background--interactive--selected--tertiary);--digi--form-select-filter--dropdown--item--checkbox--background-color:var(--digi--color--background--interactive--default--input-elements);--digi--form-select-filter--dropdown--item--checkbox--background-color--selected:var(--digi--color--marking--indication--primary);--digi--form-select-filter--dropdown--item--checkbox--border-color:var(--digi--color--border--interactive--default--on-input);--digi--form-select-filter--dropdown--item--checkbox--border-width:var(--digi--border-width--primary);--digi--form-select-filter--dropdown--item--checkbox--border-style:var(--digi--border-style--primary);--digi--form-select-filter--dropdown--item--checkbox--border-radius:var(--digi--border-radius--tertiary);--digi--form-select-filter--dropdown--item--checkbox--width:1.25rem;--digi--form-select-filter--dropdown--item--checkbox--height:1.25rem;--digi--form-select-filter--toggle-button-indicator--color--default:var(--digi--color--background--interactive--default--input-elements);--digi--form-select-filter--toggle-button-indicator--color--active:var(--digi--color--marking--indication--primary);--digi--form-select-filter--toggle-button-indicator--width:1rem;--digi--form-select-filter--toggle-button-indicator--height:1rem;--digi--form-select-filter--toggle-button-indicator--margin-right:var(--digi--margin--small);--digi--form-select-filter--toggle-button-indicator--margin-left:calc(var(--digi--margin--smaller) * -1);--digi--form-select-filter--toggle-button--text--margin-right:var(--digi--margin--smaller);--digi--form-select-filter--toggle-button-indicator--color:var(--digi--color--marking--indication--primary);--digi--form-select-filter--toggle-icon--width:0.875rem;--digi--form-select-filter--toggle-icon--height:0.875rem;--digi--form-select-filter--search-input--border-radius:var(--digi--border-radius--input);--digi--form-select-filter--search-input--border-width:var(--digi--border-width--input-regular);--digi--form-select-filter--search-input--border-style:var(--digi--border-style--primary);--digi--form-select-filter--search-input--border-color:var(--digi--form-select-filter--toggle-button--border-width--neutral);--digi--form-select-filter--search-input--height:var(--digi--input-height--medium);--digi--form-select-filter--search-input--width:100%;--digi--form-select-filter--legend--font-weight:var(--digi--typography--preamble--font-weight--desktop);--digi--form-select-filter--legend--font-family:var(--digi--global--typography--font-family--default);--digi--form-select-filter--legend--font-size:var(--digi--typography--preamble--font-size--desktop);--digi--form-select-filter--toggle-button--border-width--neutral:var(--digi--border-width--input-regular);--digi--form-select-filter--toggle-button--border-color--neutral:var(--digi--color--border--interactive--default--on-input);--digi--form-select-filter--toggle-button--background--neutral:var(--digi--color--background--interactive--default--input-elements);--digi--form-select-filter--toggle-button--border-width--success:var(--digi--border-width--input-validation);--digi--form-select-filter--toggle-button--border-color--success:var(--digi--color--border--interactive--validation--success);--digi--form-select-filter--toggle-button--background--success:var(--digi--color--background--interactive--validation--success);--digi--form-select-filter--toggle-button--border-width--warning:var(--digi--border-width--input-validation);--digi--form-select-filter--toggle-button--border-color--warning:var(--digi--color--border--interactive--validation--warning);--digi--form-select-filter--toggle-button--background--warning:var(--digi--color--background--interactive--validation--warning);--digi--form-select-filter--toggle-button--border-width--error:var(--digi--border-width--input-validation);--digi--form-select-filter--toggle-button--border-color--error:var(--digi--color--border--interactive--validation--error);--digi--form-select-filter--toggle-button--background--error:var(--digi--color--background--interactive--validation--error);box-sizing:content-box}.sc-digi-form-select-filter-h .digi--a11y--sr-only.sc-digi-form-select-filter{border:0;clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sc-digi-form-select-filter-h .digi-form-select-filter.sc-digi-form-select-filter{display:flex;flex-direction:column;gap:0.4em;position:relative;--INDICATOR--BACKGROUND:var(--digi--form-select-filter--toggle-button-indicator--color--default);--SCROLL--MAX-HEIGHT:var(--digi--form-select-filter--scroll--max-height)}.sc-digi-form-select-filter-h .digi-form-select-filter--neutral.sc-digi-form-select-filter{--BORDER-WIDTH:var( --digi--form-select-filter--toggle-button--border-width--neutral );--BORDER-COLOR:var( --digi--form-select-filter--toggle-button--border-color--neutral );--BACKGROUND:var( --digi--form-select-filter--toggle-button--background--neutral )}.sc-digi-form-select-filter-h .digi-form-select-filter--success.sc-digi-form-select-filter{--BORDER-WIDTH:var( --digi--form-select-filter--toggle-button--border-width--success );--BORDER-COLOR:var( --digi--form-select-filter--toggle-button--border-color--success );--BACKGROUND:var( --digi--form-select-filter--toggle-button--background--success )}.sc-digi-form-select-filter-h .digi-form-select-filter--warning.sc-digi-form-select-filter{--BORDER-WIDTH:var( --digi--form-select-filter--toggle-button--border-width--warning );--BORDER-COLOR:var( --digi--form-select-filter--toggle-button--border-color--warning );--BACKGROUND:var( --digi--form-select-filter--toggle-button--background--warning )}.sc-digi-form-select-filter-h .digi-form-select-filter--error.sc-digi-form-select-filter{--BORDER-WIDTH:var( --digi--form-select-filter--toggle-button--border-width--error );--BORDER-COLOR:var( --digi--form-select-filter--toggle-button--border-color--error );--BACKGROUND:var( --digi--form-select-filter--toggle-button--background--error )}.sc-digi-form-select-filter-h .digi-form-select-filter--open.sc-digi-form-select-filter .digi-form-select-filter__toggle-icon.sc-digi-form-select-filter{transform:rotate(-180deg)}.sc-digi-form-select-filter-h .digi-form-select-filter__toggle-button.sc-digi-form-select-filter{background:var(--BACKGROUND);border:var(--BORDER-WIDTH) solid var(--BORDER-COLOR);border-radius:var(--digi--border-radius--input);color:var(--digi--color--text--primary);cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-weight:400;font-size:var(--digi--typography--body--font-size--desktop);width:100%;padding:0 var(--digi--gutter--medium);min-height:var(--digi--input-height--medium);font-family:var(--digi--global--typography--font-family--default)}.sc-digi-form-select-filter-h .digi-form-select-filter__toggle-button.sc-digi-form-select-filter:focus-visible,.sc-digi-form-select-filter-h .digi-form-select-filter__toggle-button.sc-digi-form-select-filter:focus{outline:2px solid black;outline-offset:2px;box-shadow:0px 0px 0px 5px white}.sc-digi-form-select-filter-h .digi-form-select-filter__toggle-icon.sc-digi-form-select-filter{transition:var(--digi--form-select-filter--toggle-icon--transition)}.sc-digi-form-select-filter-h .digi-form-select-filter__toggle-icon.sc-digi-form-select-filter-s>[slot^=icon],.sc-digi-form-select-filter-h .digi-form-select-filter__toggle-icon .sc-digi-form-select-filter-s>[slot^=icon]{--digi--icon--width:var(--digi--form-select-filter--toggle-icon--width);--digi--icon--height:var(--digi--form-select-filter--toggle-icon--height)}.sc-digi-form-select-filter-h .digi-form-select-filter__legend.sc-digi-form-select-filter{font-weight:var(--digi--form-select-filter--legend--font-weight);font-family:var(--digi--form-select-filter--legend--font-family);font-size:var(--digi--form-select-filter--legend--font-size);border:0;padding:0;margin:0;border:0;clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.sc-digi-form-select-filter-h .digi-form-select-filter__scroll.sc-digi-form-select-filter{max-height:var(--SCROLL--MAX-HEIGHT);overflow-y:auto}.sc-digi-form-select-filter-h .digi-form-select-filter__header.sc-digi-form-select-filter{background-color:var(--digi--form-select-filter--dropdown--header--background);padding:12px 12px 22px}.sc-digi-form-select-filter-h .digi-form-select-filter__header.sc-digi-form-select-filter input.sc-digi-form-select-filter{border-radius:var(--digi--form-select-filter--search-input--border-radius);border-width:var(--digi--form-select-filter--search-input--border-width);border-style:var(--digi--form-select-filter--search-input--border-style);border-color:var(--digi--form-select-filter--search-input--border-color);height:var(--digi--form-select-filter--search-input--height);width:var(--digi--form-select-filter--search-input--width)}.sc-digi-form-select-filter-h .digi-form-select-filter__header.sc-digi-form-select-filter legend.sc-digi-form-select-filter{width:100%;border-bottom:var(--digi--form-select-filter--legend__border-bottom)}.sc-digi-form-select-filter-h .digi-form-select-filter__footer.sc-digi-form-select-filter{display:flex;align-items:center;justify-content:center;background:var(--digi--form-select-filter--footer--background);padding:var(--digi--form-select-filter--scroll--padding)}.sc-digi-form-select-filter-h .digi-form-select-filter__reset-button.sc-digi-form-select-filter{display:inline-block;margin-right:var(--digi--form-select-filter--reset-button--margin-right)}.sc-digi-form-select-filter-h .digi-form-select-filter__dropdown.sc-digi-form-select-filter{box-shadow:0 2px 6px 0 rgba(0, 0, 0, 0.7);min-width:var(--digi--form-select-filter--dropdown--min-width);width:100%;position:absolute;z-index:var(--digi--form-select-filter--dropdown--z-index);background:var(--digi--form-select-filter--dropdown--background);border-radius:var(--digi--form-select-filter--dropdown--border-radius);overflow:hidden;margin-top:var(--digi--form-select-filter--dropdown--margin-top)}.sc-digi-form-select-filter-h .digi-form-select-filter__dropdown.sc-digi-form-select-filter fieldset.sc-digi-form-select-filter{border:none;padding:0;margin:0}@media (min-width: 48rem){.sc-digi-form-select-filter-h .digi-form-select-filter__dropdown--right.sc-digi-form-select-filter{right:0}}.sc-digi-form-select-filter-h .digi-form-select-filter__dropdown--hidden.sc-digi-form-select-filter{display:none}.sc-digi-form-select-filter-h .digi-form-select-filter__label.sc-digi-form-select-filter{display:block}.sc-digi-form-select-filter-h .digi-form-select-filter__toggle-button-wrapper--activated.sc-digi-form-select-filter{display:flex;align-items:center}.sc-digi-form-select-filter-h .digi-form-select-filter__toggle-button-indicator.sc-digi-form-select-filter{display:none;--digi--icon--color:var(--digi--form-select-filter--toggle-button-indicator--color)}.sc-digi-form-select-filter-h .digi-form-select-filter__toggle-button-indicator--active.sc-digi-form-select-filter{display:flex;margin-right:var(--digi--form-select-filter--toggle-button-indicator--margin-right);width:var(--digi--form-select-filter--toggle-button-indicator--width);height:var(--digi--form-select-filter--toggle-button-indicator--height)}.sc-digi-form-select-filter-h .digi-form-select-filter__search-status.sc-digi-form-select-filter{font-family:var(--digi--global--typography--font-family--default);font-size:var(--digi--typography--label--font-size--desktop);color:var(--digi--color--text--primary)}.sc-digi-form-select-filter-h .digi-form-select-filter__list.sc-digi-form-select-filter{margin:var(--digi--form-select-filter--list--margin);padding:0;max-width:100%}.sc-digi-form-select-filter-h .digi-form-select-filter__item.sc-digi-form-select-filter{background-color:var(--digi--form-select-filter--dropdown--item--background-color--default);border-width:0;box-sizing:border-box;border-bottom-width:var(--digi--form-select-filter--dropdown--item--border-width);border-style:var(--digi--form-select-filter--dropdown--item--border-type);border-color:var(--digi--form-select-filter--dropdown--item--border-color);cursor:var(--digi--form-select-filter--dropdown--item--cursor);color:var(--digi--form-select-filter--dropdown--item--color);display:block;font-size:var(--digi--form-select-filter--dropdown--item--font-size);font-family:var(--digi--form-select-filter--dropdown--item--font-family);font-weight:var(--digi--form-select-filter--dropdown--item--font-weight--default);padding:var(--digi--form-select-filter--dropdown--item--padding-y) var(--digi--form-select-filter--dropdown--item--padding-x);position:relative;height:var(--digi--form-select-filter--dropdown--item--height);min-height:var(--digi--form-select-filter--dropdown--item--min-height);margin-bottom:var(--digi--form-select-filter--dropdown--item--margin-bottom);letter-spacing:var(--digi--form-select-filter--dropdown--item--letter-spacing);line-height:var(--digi--form-select-filter--dropdown--item--line-height)}.sc-digi-form-select-filter-h .digi-form-select-filter__item.sc-digi-form-select-filter:focus-visible{background-color:var(--digi--form-select-filter--dropdown--item--background-color--focus);outline:2px solid black;outline-offset:-3px;box-shadow:0px 0px 0px 5px inset white}.sc-digi-form-select-filter-h .digi-form-select-filter__item.sc-digi-form-select-filter:hover{background-color:var(--digi--form-select-filter--dropdown--item--background-color--hover);font-weight:var(--digi--form-select-filter--dropdown--item--font-weight--hover)}.sc-digi-form-select-filter-h .digi-form-select-filter__item.sc-digi-form-select-filter:active{background-color:var(--digi--form-select-filter--dropdown--item--background-color--active)}.sc-digi-form-select-filter-h .digi-form-select-filter__item[aria-checked=true].sc-digi-form-select-filter{font-weight:var(--digi--form-select-filter--dropdown--item--font-weight--selected);background-color:var(--digi--form-select-filter--dropdown--item--background-color--selected)}.sc-digi-form-select-filter-h .digi-form-select-filter__item[dir=rtl].sc-digi-form-select-filter{text-align:right}.sc-digi-form-select-filter-h .digi-form-select-filter__item[role=radio].sc-digi-form-select-filter .digi-form-select-filter__item__icon.sc-digi-form-select-filter{position:absolute;width:13px;height:25px;left:7px}.sc-digi-form-select-filter-h .digi-form-select-filter__item[role=radio][dir=rtl].sc-digi-form-select-filter::before{right:3px}.sc-digi-form-select-filter-h .digi-form-select-filter__item[role=radio][dir=rtl].sc-digi-form-select-filter .digi-form-select-filter__item__icon.sc-digi-form-select-filter{left:auto;right:7px}.sc-digi-form-select-filter-h .digi-form-select-filter__item[role=checkbox].sc-digi-form-select-filter{padding:var(--digi--form-select-filter--dropdown--item--multiple--padding-y) var(--digi--form-select-filter--dropdown--item--multiple--padding-x)}.sc-digi-form-select-filter-h .digi-form-select-filter__item[role=checkbox][aria-checked=true].sc-digi-form-select-filter:before{background:var(--digi--form-select-filter--dropdown--item--checkbox--background-color--selected);border-color:var(--digi--form-select-filter--dropdown--item--checkbox--background-color--selected)}.sc-digi-form-select-filter-h .digi-form-select-filter__item[role=checkbox].sc-digi-form-select-filter::before{content:"";position:absolute;background-color:var(--digi--form-select-filter--dropdown--item--checkbox--background-color);border-color:var(--digi--form-select-filter--dropdown--item--checkbox--border-color);border-width:var(--digi--form-select-filter--dropdown--item--checkbox--border-width);border-style:var(--digi--form-select-filter--dropdown--item--checkbox--border-style);height:var(--digi--form-select-filter--dropdown--item--checkbox--width);width:var(--digi--form-select-filter--dropdown--item--checkbox--height);border-radius:var(--digi--form-select-filter--dropdown--item--checkbox--border-radius);left:12px;transform:translateY(1px)}.sc-digi-form-select-filter-h .digi-form-select-filter__item[role=checkbox].sc-digi-form-select-filter .digi-form-select-filter__item__icon.sc-digi-form-select-filter{position:absolute;width:13px;left:16px;--digi--icon--color:white}.sc-digi-form-select-filter-h .digi-form-select-filter__item[role=checkbox][dir=rtl].sc-digi-form-select-filter::before{right:12px}.sc-digi-form-select-filter-h .digi-form-select-filter__item[role=checkbox][dir=rtl].sc-digi-form-select-filter .digi-form-select-filter__item__icon.sc-digi-form-select-filter{left:auto;right:16px}.sc-digi-form-select-filter-h .digi-form-select-filter__toggle-button-text.sc-digi-form-select-filter{margin-right:var(--digi--form-select-filter--toggle-button--text--margin-right)}.sc-digi-form-select-filter-h .hidden.sc-digi-form-select-filter{display:none}`;
61
+
62
+ const FormSelectFilter = class {
63
+ constructor(hostRef) {
64
+ registerInstance(this, hostRef);
65
+ this.afOnFocusout = createEvent(this, "afOnFocusout", 7);
66
+ this.afOnSubmitFilters = createEvent(this, "afOnSubmitFilters", 7);
67
+ this.afOnFilterClosed = createEvent(this, "afOnFilterClosed", 7);
68
+ this.afOnResetFilters = createEvent(this, "afOnResetFilters", 7);
69
+ this.afOnSelect = createEvent(this, "afOnSelect", 7);
70
+ this.afOnQueryChanged = createEvent(this, "afOnQueryChanged", 7);
71
+ this.isOpen = false;
72
+ this.focusListItemIndex = 0;
73
+ this.focusInList = false;
74
+ this._filteredResult = [];
75
+ this._selectedItems = [];
76
+ this._searchQuery = '';
77
+ /** True when `value` was set from outside (e.g. Angular CVA) — then value is selection master. */
78
+ this._valueIsMaster = false;
79
+ /** Guards internal `value` writes so they don't flip `_valueIsMaster`. */
80
+ this._updatingValueInternally = false;
81
+ /**
82
+ * Sätter väljarens validering
83
+ * @en Set select validation
84
+ */
85
+ this.afValidation = FormSelectFilterValidation.NEUTRAL;
86
+ /**
87
+ * Normalt betonas ett obligatoriskt fält visuellt och semantiskt.
88
+ * Detta vänder på det och betonar fältet om det inte krävs.
89
+ * Ställ in detta till sant om ditt formulär innehåller fler obligatoriska fält än inte.
90
+ * @en Normally a required field is visually and semantically emphasized.
91
+ * This flips that and emphasizes the field if it is not required.
92
+ * Set this to true if your form contains more required fields than not.
93
+ */
94
+ this.afAnnounceIfOptional = false;
95
+ /**
96
+ * Sorterar listan i alfabetisk ordning.
97
+ * @en Sort the list in alphabetical order.
98
+ */
99
+ this.sortAlphabetically = true;
100
+ /**
101
+ * @ignore
102
+ * Propertyn `value` finns inte dokumenterad på komponentens sida på dokumentationswebben, utan
103
+ * är endast till för att användas tillsammans med Angulars Control Value Accessors (CVA).
104
+ * Används CVA för att hantera komponentens värden så ska inte afListItems användas för att
105
+ * påverka vilka val som är gjorda eller ej.
106
+ * Exempel på båda sätten att hantera datat finns i Angular Playground.
107
+ */
108
+ this.value = [];
109
+ /**
110
+ * Sätts till true om det ska gå att välja flera val från listan.
111
+ * @en Set to true if you should be able to choose multiple items from the list.
112
+ */
113
+ this.afMultipleItems = false;
114
+ /**
115
+ * Prefixet för alla komponentens olika interna 'id'-attribut på dropdowns, filterlistor etc. Ex. 'my-cool-id' genererar 'my-cool-id-filter-list', 'my-cool-id-dropdown-menu' och så vidare. Ges inget värde så genereras ett slumpmässigt.
116
+ * @en Prefix for all id attributes inside the component. Example: 'my-cool-id' generates 'my-cool-id-filter-list', 'my-cool-id-dropdown-menu' and so on. Defaults to random string.
117
+ */
118
+ this.afId = randomIdGenerator('digi-form-select-filter');
119
+ /**
120
+ * Texten i rensaknappen
121
+ * @en Set the reset button text
122
+ */
123
+ this.afResetButtonText = _t.clear;
124
+ /**
125
+ * Döljer rensaknappen när värdet sätts till true
126
+ * @en Hides the reset button when set to true
127
+ */
128
+ this.afHideResetButton = false;
129
+ /**
130
+ * Text som visas när sökningen inte ger några resultat.
131
+ * @en Text that is shown the the search gives no result.
132
+ */
133
+ this.afEmptySearchMessage = 'Inga sökträffar för';
134
+ /**
135
+ * Om värdet är true får felmeddelandet attributet role="alert".
136
+ * Om felet visas tillsammans med flera andra fel (till exempel efter servervalidering) ska värdet sättas till false.
137
+ * @en If the value is true, the error message gets the attribute role="alert".
138
+ * If the error is shown together with multiple errors (for example after server-side validation), the value should be set to false.
139
+ */
140
+ this.afErrorMessageIsAlert = true;
141
+ }
142
+ onValueChanged(newValue) {
143
+ let parsedValue;
144
+ if (typeof newValue === 'string') {
145
+ parsedValue = newValue ? JSON.parse(newValue) : [];
146
+ }
147
+ else {
148
+ parsedValue = newValue || [];
149
+ }
150
+ if (!this._updatingValueInternally) {
151
+ this._valueIsMaster = true;
152
+ }
153
+ this.value = parsedValue;
154
+ this.syncValueAndSelectedListItems('valueChange');
155
+ }
156
+ handleListItems() {
157
+ if (this.afListItems) {
158
+ try {
159
+ if (this.afListItems.constructor === Array) {
160
+ this._afListItems = this.afListItems;
161
+ }
162
+ else if (typeof this.afListItems === 'string') {
163
+ this._afListItems = JSON.parse(this.afListItems);
164
+ }
165
+ else {
166
+ throw `Invalid type in "af-list-items" attribute`;
167
+ }
168
+ this.giveItemsValueIfNoneExist();
169
+ this.sortListAlphabetically();
170
+ this.syncValueAndSelectedListItems('afListItemsChange');
171
+ this.filterResults();
172
+ }
173
+ catch (e) {
174
+ logger.warn(`Invalid JSON in "af-list-items" attribute`, this.hostElement, e);
175
+ return;
176
+ }
177
+ }
178
+ }
179
+ get errorMessageIsAlert() {
180
+ return (this.afErrorMessageIsAlert !== false &&
181
+ this.afErrorMessageIsAlert !== 'false');
182
+ }
183
+ /**
184
+ * Funktion för att rensa valda värden från komponenten
185
+ * @en Function for clearing selected values from component
186
+ */
187
+ async afMReset() {
188
+ this.resetSelectItems();
189
+ }
190
+ /**
191
+ * Funktion för att stänga dropdownen
192
+ * @en Function for closing the dropdown
193
+ */
194
+ async afMCloseDropdown() {
195
+ this.setClosed();
196
+ }
197
+ clickHandler(e) {
198
+ const target = e.target;
199
+ const selector = `#${this.afId}-identifier`;
200
+ if (detectClickOutside(target, selector) && this.isOpen) {
201
+ this.emitFilterClosedEvent();
202
+ }
203
+ }
204
+ focusoutHandler(e) {
205
+ const target = e.target;
206
+ const selector = `#${this.afId}-identifier`;
207
+ const focusOutsideFilter = detectFocusOutside(target, selector);
208
+ if (focusOutsideFilter && this.isOpen) {
209
+ this.emitFilterClosedEvent();
210
+ }
211
+ else {
212
+ this.focusInList = !detectFocusOutside(target, `#${this.afId}-select-filter-list`);
213
+ }
214
+ }
215
+ /**
216
+ * Lyssnar på om fokus sätts på custom-elementet och propagerar ner det till toggle-knappen.
217
+ * @en Listens for when focus is set on the custom element and propagates it down to the toggle butto.
218
+ */
219
+ focusOnElement() {
220
+ this._toggleButton.focus();
221
+ }
222
+ componentWillLoad() {
223
+ this.bootstrapInitialValue();
224
+ this.handleListItems();
225
+ // Angular attaches the host first and binds `[afListItems]` / CVA `value` on
226
+ // the next frame (Stencil 4.36+). @Watch skips that first assignment, so if
227
+ // the list is not here yet, wait one frame. React/vanilla that already set
228
+ // the prop skip the delay.
229
+ if (!this.afListItems) {
230
+ return new Promise((resolve) => {
231
+ requestAnimationFrame(() => {
232
+ this.bootstrapInitialValue();
233
+ this.handleListItems();
234
+ resolve();
235
+ });
236
+ });
237
+ }
238
+ }
239
+ bootstrapInitialValue() {
240
+ if (typeof this.value === 'string') {
241
+ const parsed = this.value ? JSON.parse(this.value) : [];
242
+ this._updatingValueInternally = true;
243
+ this.value = parsed;
244
+ this._updatingValueInternally = false;
245
+ }
246
+ if (Array.isArray(this.value) && this.value.length > 0) {
247
+ this._valueIsMaster = true;
248
+ }
249
+ }
250
+ /**
251
+ * Keep `value` and `afListItems[].selected` in sync.
252
+ * - If `value` was set externally (`_valueIsMaster`), value wins on list updates.
253
+ * - Otherwise selection is seeded from `afListItems[].selected` (React/vanilla data-as-master).
254
+ * Does not emit `afOnSelect` — that is reserved for user interaction so Angular Control Value Accessors
255
+ * does not get feedback loops on prop sync.
256
+ */
257
+ syncValueAndSelectedListItems(whereDidTheChangeComeFrom) {
258
+ if (!this._afListItems) {
259
+ return;
260
+ }
261
+ if (whereDidTheChangeComeFrom === 'afListItemsChange') {
262
+ if (this._valueIsMaster) {
263
+ this.applyValueToListItems(this.value);
264
+ }
265
+ else {
266
+ this._selectedItems = this._afListItems.filter((item) => item.selected);
267
+ this.setValueInternally([...this._selectedItems]);
268
+ }
269
+ return;
270
+ }
271
+ this.applyValueToListItems(this.value);
272
+ }
273
+ applyValueToListItems(value) {
274
+ const selectedValues = new Set((value !== null && value !== void 0 ? value : []).map((item) => item.value));
275
+ this._afListItems.forEach((item) => {
276
+ item.selected = selectedValues.has(item.value);
277
+ });
278
+ this._selectedItems = this._afListItems.filter((item) => selectedValues.has(item.value));
279
+ }
280
+ setValueInternally(nextValue) {
281
+ this._updatingValueInternally = true;
282
+ this.value = nextValue;
283
+ this._updatingValueInternally = false;
284
+ }
285
+ setClosed(focusToggleButton = false) {
286
+ this.isOpen = false;
287
+ if (focusToggleButton) {
288
+ document.getElementById(`${this.afId}`).focus();
289
+ }
290
+ this.setScroll(0);
291
+ this._searchQuery = '';
292
+ this.afOnQueryChanged.emit('');
293
+ this.afOnSubmitFilters.emit(this._selectedItems);
294
+ this.filterResults();
295
+ }
296
+ setScroll(scrollY) {
297
+ document.querySelector(`#${this.afId}-dropdown-menu .digi-form-select-filter__scroll`).scrollTop = scrollY;
298
+ }
299
+ setOpen() {
300
+ this.isOpen = true;
301
+ this.focusListItemIndex = 0;
302
+ setTimeout(() => {
303
+ this.setFocusSearch();
304
+ }, 50);
305
+ }
306
+ giveItemsValueIfNoneExist() {
307
+ this._afListItems
308
+ .filter((item) => {
309
+ return item.value === undefined;
310
+ })
311
+ .forEach((item) => {
312
+ item.value = item.label;
313
+ });
314
+ }
315
+ sortListAlphabetically() {
316
+ if (!this.sortAlphabetically) {
317
+ return;
318
+ }
319
+ this._afListItems.sort((a, b) => {
320
+ if (a.label < b.label) {
321
+ return -1;
322
+ }
323
+ if (a.label > b.label) {
324
+ return 1;
325
+ }
326
+ return 0;
327
+ });
328
+ }
329
+ toggleDropdown() {
330
+ return this.isOpen ? this.setClosed() : this.setOpen();
331
+ }
332
+ inputItem(identifier, index) {
333
+ const item = this.hostElement
334
+ .querySelectorAll(`#${identifier} .digi-form-select-filter__item`)
335
+ .item(index);
336
+ return item;
337
+ }
338
+ emitFilterClosedEvent() {
339
+ this.setClosed(true);
340
+ this.afOnFilterClosed.emit();
341
+ }
342
+ setFocusItem() {
343
+ const element = this.inputItem(`${this.afId}-select-filter-list`, this.focusListItemIndex);
344
+ if (element) {
345
+ element.focus();
346
+ }
347
+ }
348
+ setFocusSearch() {
349
+ const element = this.hostElement.querySelector('input');
350
+ if (element) {
351
+ element.focus();
352
+ }
353
+ }
354
+ incrementFocusItem() {
355
+ const listLength = this.showNeutralValue
356
+ ? this._filteredResult.length
357
+ : this._filteredResult.length - 1;
358
+ if (this.focusListItemIndex < listLength) {
359
+ this.focusListItemIndex = this.focusListItemIndex + 1;
360
+ this.setFocusItem();
361
+ return;
362
+ }
363
+ else {
364
+ if (!this.afMultipleItems) {
365
+ this.focusListItemIndex = 0;
366
+ this.setFocusItem();
367
+ return;
368
+ }
369
+ }
370
+ this.tabHandler();
371
+ }
372
+ decrementFocusItem() {
373
+ if (this.focusListItemIndex === 0) {
374
+ this.setFocusSearch();
375
+ return;
376
+ }
377
+ if (this.focusListItemIndex > 0) {
378
+ this.focusListItemIndex = this.focusListItemIndex - 1;
379
+ }
380
+ this.setFocusItem();
381
+ }
382
+ downHandler(e) {
383
+ e.detail.preventDefault();
384
+ if (e.detail.code === 'ArrowDown' || e.detail.code === 'ArrowRight') {
385
+ this.incrementFocusItem();
386
+ }
387
+ }
388
+ upHandler(e) {
389
+ e.detail.preventDefault();
390
+ if (e.detail.code === 'ArrowUp' || e.detail.code === 'ArrowLeft') {
391
+ this.decrementFocusItem();
392
+ }
393
+ }
394
+ homeHandler(e) {
395
+ e.detail.preventDefault();
396
+ this.focusListItemIndex = 0;
397
+ this.setFocusItem();
398
+ }
399
+ endHandler(e) {
400
+ e.detail.preventDefault();
401
+ this.focusListItemIndex = this.showNeutralValue
402
+ ? this._filteredResult.length
403
+ : this._filteredResult.length - 1;
404
+ this.setFocusItem();
405
+ }
406
+ enterHandler(e) {
407
+ e.detail.preventDefault();
408
+ e.detail.target.click();
409
+ }
410
+ spaceHandler(e) {
411
+ e.detail.preventDefault();
412
+ e.detail.target.click();
413
+ }
414
+ escHandler() {
415
+ if (this.isOpen) {
416
+ this.setClosed(true);
417
+ }
418
+ }
419
+ tabHandler() {
420
+ if (this.isOpen && this.focusInList) {
421
+ if (this.afMultipleItems && this._submitButton) {
422
+ setTimeout(() => {
423
+ var _a;
424
+ if (this._submitButton) {
425
+ (_a = this._submitButton.querySelector('button')) === null || _a === void 0 ? void 0 : _a.focus();
426
+ }
427
+ }, 10);
428
+ }
429
+ else {
430
+ this.setClosed(true);
431
+ }
432
+ }
433
+ }
434
+ shiftHandler() {
435
+ if (this.isOpen && this.focusInList) {
436
+ if (this.afMultipleItems && this._toggleButton) {
437
+ this._toggleButton.querySelector('button').focus();
438
+ }
439
+ else {
440
+ this.setFocusSearch();
441
+ }
442
+ }
443
+ }
444
+ filterResults() {
445
+ if (this._searchQuery && this._searchQuery.length > 0) {
446
+ this._filteredResult = this._afListItems.filter((item) => {
447
+ return item.label
448
+ .toLowerCase()
449
+ .includes(this._searchQuery.toLowerCase());
450
+ });
451
+ }
452
+ else {
453
+ this._filteredResult = this._afListItems;
454
+ }
455
+ }
456
+ inputSearchKeyboardHandler(e) {
457
+ if (e.code === 'ArrowDown') {
458
+ e.preventDefault();
459
+ this.setFocusItem();
460
+ }
461
+ if (e.code === 'Enter' && this._searchQuery !== '') {
462
+ e.preventDefault();
463
+ this.setFocusItem();
464
+ }
465
+ }
466
+ inputSearchInputHandler(e) {
467
+ this._searchQuery = e.target.value;
468
+ this.afOnQueryChanged.emit(this._searchQuery);
469
+ this.filterResults();
470
+ }
471
+ resetSelectItems(close = false) {
472
+ this._selectedItems = [];
473
+ this.setValueInternally([]);
474
+ this.afOnSelect.emit([]);
475
+ this._searchQuery = '';
476
+ this.filterResults();
477
+ if (close) {
478
+ this.emitFilterClosedEvent();
479
+ }
480
+ this.afOnResetFilters.emit();
481
+ }
482
+ selectItemHandler(item) {
483
+ if (this.afMultipleItems) {
484
+ item.selected = !item.selected;
485
+ if (this._selectedItems.filter((x) => {
486
+ return x.value === item.value;
487
+ }).length > 0) {
488
+ //ITEM VALUE ALREADY EXISTS IN LIST, DELETE FROM LIST
489
+ this._selectedItems.splice(this._selectedItems.findIndex((e) => e.value === item.value), 1);
490
+ }
491
+ else {
492
+ this._selectedItems = [...this._selectedItems, item];
493
+ }
494
+ }
495
+ else {
496
+ this._selectedItems.forEach((item) => {
497
+ item.selected = false;
498
+ });
499
+ item.selected = true;
500
+ this._selectedItems = [item];
501
+ this.emitFilterClosedEvent();
502
+ }
503
+ this.setValueInternally([...this._selectedItems]);
504
+ this.afOnSelect.emit(this._selectedItems);
505
+ this.filterResults();
506
+ }
507
+ isSelected(textValue) {
508
+ if (textValue && this._selectedItems && this._selectedItems.length > 0) {
509
+ return (this._selectedItems.filter((item) => {
510
+ return item.value === textValue;
511
+ }).length > 0);
512
+ }
513
+ return false;
514
+ }
515
+ get cssModifiers() {
516
+ return {
517
+ 'digi-form-select-filter--open': this.isOpen,
518
+ 'digi-form-select-filter--neutral': this.afValidation === FormSelectFilterValidation.NEUTRAL,
519
+ 'digi-form-select-filter--success': this.afValidation === FormSelectFilterValidation.SUCCESS,
520
+ 'digi-form-select-filter--warning': this.afValidation === FormSelectFilterValidation.WARNING,
521
+ 'digi-form-select-filter--error': this.afValidation === FormSelectFilterValidation.ERROR
522
+ };
523
+ }
524
+ get cssModifiersToggleButtonIndicator() {
525
+ return {
526
+ 'digi-form-select-filter__toggle-button-indicator--active': this._selectedItems.length > 0
527
+ };
528
+ }
529
+ get cssModifiersToggleButtonWrapper() {
530
+ return {
531
+ 'digi-form-select-filter__toggle-button-wrapper--activated': this._selectedItems.length > 0
532
+ };
533
+ }
534
+ buttonText(isAriaLabel) {
535
+ const ariaLabelText = (text = '') => {
536
+ return isAriaLabel ? text : '';
537
+ };
538
+ if (this._selectedItems && this._selectedItems.length === 1) {
539
+ return (ariaLabelText(this.afFilterButtonTextLabel + ': ') +
540
+ this._selectedItems[0].label);
541
+ }
542
+ else if (this._selectedItems &&
543
+ this._selectedItems.length > 0 &&
544
+ this.afMultipleItems) {
545
+ if (this.afFilterButtonTextMultipleValues) {
546
+ return (ariaLabelText(this.afFilterButtonTextLabel + ': ') +
547
+ this.afFilterButtonTextMultipleValues.replace('{count}', this._selectedItems.length.toString()));
548
+ }
549
+ else {
550
+ return (ariaLabelText(this.afFilterButtonTextLabel + ': ') +
551
+ `${this._selectedItems.length} valda`);
552
+ }
553
+ }
554
+ else {
555
+ return (ariaLabelText(this.afFilterButtonTextLabel
556
+ ? this.afFilterButtonTextLabel + ': '
557
+ : '') + this.afFilterButtonText);
558
+ }
559
+ }
560
+ get renderButtonLabel() {
561
+ return this.buttonText(false);
562
+ }
563
+ get ariaLabel() {
564
+ return this.buttonText(true);
565
+ }
566
+ get showNeutralValue() {
567
+ return (!this.afMultipleItems &&
568
+ this.afFilterButtonText &&
569
+ this._searchQuery.length === 0);
570
+ }
571
+ showValidation() {
572
+ return !this.afDisableValidation &&
573
+ this.afValidation !== FormSelectFilterValidation.NEUTRAL &&
574
+ this.afValidationText
575
+ ? true
576
+ : false;
577
+ }
578
+ renderEmptyStateBox() {
579
+ let statusMessage = '';
580
+ if (this._filteredResult && this._filteredResult.length > 0) {
581
+ statusMessage = `${this._filteredResult.length} sökträff${this._filteredResult.length > 1 ? 'ar' : ''}`;
582
+ }
583
+ else if (this._filteredResult.length === 0) {
584
+ statusMessage = `${this.afEmptySearchMessage} ${this._searchQuery}`;
585
+ }
586
+ return (h(Fragment, null, h("div", { role: "status", id: `${this.afId}-searchstatus`, class: {
587
+ 'digi-form-select-filter__search-status': true,
588
+ 'digi--a11y--sr-only': this._filteredResult && this._filteredResult.length > 0
589
+ } }, h("span", null, " ", statusMessage, " "), h("div", { class: {
590
+ hidden: this._filteredResult && this._filteredResult.length > 0
591
+ } }, h("slot", { name: "empty-search-result" })))));
592
+ }
593
+ render() {
594
+ return (h(Host, { key: '2e7276930637366cbcb14168102afb82393708f5', tabindex: -1 }, h("div", { key: 'a5620907d2399c0561b6b3b604220c3bf82ded6b', class: Object.assign({ 'digi-form-select-filter': true }, this.cssModifiers), role: "application", id: `${this.afId}-identifier` }, h("digi-form-label", { key: '151c3656f03d8b8b7639daf0e26631722a1f6878', 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: '035ffc46a22218d42d892c89592993a7694b2be2', onAfOnEsc: () => this.escHandler() }, h("button", { key: 'b8fedc87ecf0b1cf26e2b123c97fcd7ff6287e0b', 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: '8bb88747afac881b3667ecb60c4adbe36c1325f8', class: Object.assign({ 'digi-form-filter__toggle-button-wrapper': true }, this.cssModifiersToggleButtonWrapper) }, h("digi-icon-check", { key: 'a809c5fa00dd4d2a50662aeed3d673cda0289d80', class: Object.assign({ 'digi-form-select-filter__toggle-button-indicator': true }, this.cssModifiersToggleButtonIndicator), slot: "icon" }), h("span", { key: 'a5e7f4b998d38a7d912a25b2d7fb0b852b920dc3', class: "digi-form-select-filter__toggle-button-text" }, this.renderButtonLabel)), h("digi-icon-chevron-down", { key: 'ef852d8060bacbdef9707dcb23ed3ae1f98cc33f', class: "digi-form-select-filter__toggle-icon" })), h("div", { key: '5c5e41376cf7264e837bed3905c971dd0adee156', id: `${this.afId}-dropdown-menu`, tabindex: this.isOpen ? '-1' : undefined, class: {
595
+ 'digi-form-select-filter__dropdown': true,
596
+ 'digi-form-select-filter__dropdown--right': this.afAlignRight,
597
+ 'digi-form-select-filter__dropdown--hidden': !this.isOpen
598
+ } }, h("fieldset", { key: 'daa4e02e97f5907fc89aeb7a337bd97ceba1c148' }, h("div", { key: '99cd8af83d9b1410610f4e49a6759fac20c6955f', class: "digi-form-select-filter__header" }, h("legend", { key: '0ed1e17842e0795194c4b74d9600f17c3d2e63b0', class: "digi-form-select-filter__legend" }, this.afFilterButtonTextLabel), h("digi-form-input", { key: 'c35f93cb680c6f6e902f281ff597108a9106b016', afLabel: this.afName, afId: `${this.afId}-search`, afVariation: FormInputVariation.MEDIUM, afType: FormInputType.SEARCH, afValidation: FormInputValidation.NEUTRAL, onAfOnFocus: () => {
599
+ this.focusListItemIndex = 0;
600
+ }, onAfOnKeyup: (e) => {
601
+ this.inputSearchKeyboardHandler(e.detail);
602
+ }, 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: '4e2c4a6e6039f8f3efe8cfc75bb302214704073e', class: "digi-form-select-filter__scroll" }, h("digi-util-keydown-handler", { key: '751ad128164783be9f7d32d5418d8b99a2be24e3', 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: '2879b7c081ea2097bd17a9c0f0967b78b9a5d665', class: "digi-form-select-filter__list", "aria-labelledby": `${this.afId}`, id: `${this.afId}-select-filter-list`, role: this.afMultipleItems ? '' : 'radiogroup', "aria-invalid": this.afMultipleItems
603
+ ? 'false'
604
+ : this.afValidation ===
605
+ FormSelectFilterValidation.ERROR
606
+ ? 'true'
607
+ : 'false', "aria-errormessage": `${this.afId}--validation-message`, "aria-required": this.afMultipleItems
608
+ ? false
609
+ : this.afRequired
610
+ ? 'true'
611
+ : 'false' }, this.showNeutralValue && (h("li", { key: '0d51a466af769e3b687805b4cb8027bcac8b5112', class: "digi-form-select-filter__item", role: "radio", "aria-required": this.afMultipleItems
612
+ ? 'false'
613
+ : this.afRequired
614
+ ? 'true'
615
+ : '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: '84264b690e6a8b4cd792f6543f00a7f5e559fe06', class: "digi-form-select-filter__item__icon", "aria-hidden": 'true' })), this.afFilterButtonText)), this._filteredResult &&
616
+ this._filteredResult.map((item, index) => {
617
+ 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
618
+ ? 'false'
619
+ : this.afRequired
620
+ ? 'true'
621
+ : 'false', "aria-invalid": this.afMultipleItems
622
+ ? this.afValidation ===
623
+ FormSelectFilterValidation.ERROR
624
+ ? 'true'
625
+ : 'false'
626
+ : 'false', "aria-errormessage": `${this.afId}--validation-message`, onClick: () => this.selectItemHandler(item), tabIndex: this.showNeutralValue
627
+ ? -1
628
+ : index === 0
629
+ ? 0
630
+ : -1 }, this.isSelected(item.value) && (h("digi-icon-check", { class: "digi-form-select-filter__item__icon", "aria-hidden": 'true' })), item.label));
631
+ }))))), this.afMultipleItems && (h("div", { key: '79def162604c33d3c6acffd7464f2d44f4cf6229', class: "digi-form-select-filter__footer" }, !this.afHideResetButton && (h("digi-button", { key: '3ee850fa06c38590c50dcfba11251bd6a4ed5626', "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: '0fe5d9f9d899d3ddeaf6447485bf5f655e6270ff', onAfOnUp: () => this.setFocusItem() }, h("digi-button", { key: '0c14fea74bd16712355a8fafdc17408674ae0489', ref: (el) => (this._submitButton = el), "af-variation": "primary", "af-aria-label": this.afSubmitButtonTextAriaLabel, onClick: () => {
632
+ this.setClosed(true);
633
+ }, class: "digi-form-select-filter__submit-button" }, this.afSubmitButtonText)))))), h("div", { key: 'eb9dd0d0150b043458211e89c1311d9c7103d46f', class: "digi-form-select__footer" }, h("div", { key: 'f7aca001f6b2580600c1e823e307a4352811bb66', "aria-atomic": "true", role: this.errorMessageIsAlert ? 'alert' : null, id: `${this.afId}--validation-message` }, this.showValidation() && (h("digi-form-validation-message", { key: '5802021f469405694a75378fc8830720a9275d41', "af-variation": this.afValidation }, this.afValidationText)))))));
634
+ }
635
+ get hostElement() { return getElement(this); }
636
+ static get watchers() { return {
637
+ "value": [{
638
+ "onValueChanged": 0
639
+ }],
640
+ "afListItems": [{
641
+ "handleListItems": 0
642
+ }]
643
+ }; }
644
+ };
645
+ FormSelectFilter.style = formSelectFilterCss();
646
+
647
+ export { FormSelectFilter as digi_form_select_filter };