@dso-toolkit/core 68.5.0 → 69.1.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.
Files changed (171) hide show
  1. package/dist/cjs/annotation-list-renvooi-values-9836dd5d.js +13 -0
  2. package/dist/cjs/annotation-list-renvooi-values-9836dd5d.js.map +1 -0
  3. package/dist/cjs/dso-alert_6.cjs.entry.js +15 -2
  4. package/dist/cjs/dso-alert_6.cjs.entry.js.map +1 -1
  5. package/dist/cjs/dso-annotation-activiteit.cjs.entry.js +2 -1
  6. package/dist/cjs/dso-annotation-activiteit.cjs.entry.js.map +1 -1
  7. package/dist/cjs/dso-annotation-omgevingsnormwaarde.cjs.entry.js +2 -1
  8. package/dist/cjs/dso-annotation-omgevingsnormwaarde.cjs.entry.js.map +1 -1
  9. package/dist/cjs/dso-autosuggest.cjs.entry.js +149 -20
  10. package/dist/cjs/dso-autosuggest.cjs.entry.js.map +1 -1
  11. package/dist/cjs/dso-info_2.cjs.entry.js +1 -1
  12. package/dist/cjs/dso-label_3.cjs.entry.js +9 -6
  13. package/dist/cjs/dso-label_3.cjs.entry.js.map +1 -1
  14. package/dist/cjs/dso-pagination.cjs.entry.js +39 -26
  15. package/dist/cjs/dso-pagination.cjs.entry.js.map +1 -1
  16. package/dist/cjs/dso-responsive-element.cjs.entry.js +1 -1
  17. package/dist/cjs/dso-scrollable.cjs.entry.js +5 -2
  18. package/dist/cjs/dso-scrollable.cjs.entry.js.map +1 -1
  19. package/dist/cjs/dso-skiplink.cjs.entry.js +1 -1
  20. package/dist/cjs/dso-survey-rating.cjs.entry.js +2 -2
  21. package/dist/cjs/dso-tabs.cjs.entry.js +1 -1
  22. package/dist/cjs/dso-toggletip.cjs.entry.js +1 -1
  23. package/dist/cjs/dso-toolkit.cjs.js +1 -1
  24. package/dist/cjs/dso-tooltip.cjs.entry.js +1 -1
  25. package/dist/cjs/dso-tree-view.cjs.entry.js +1 -1
  26. package/dist/cjs/dso-viewer-grid.cjs.entry.js +2 -2
  27. package/dist/cjs/loader.cjs.js +1 -1
  28. package/dist/collection/components/annotation/annotation-activiteit/annotation-activiteit.js +2 -1
  29. package/dist/collection/components/annotation/annotation-activiteit/annotation-activiteit.js.map +1 -1
  30. package/dist/collection/components/annotation/annotation-list-renvooi-values.js +5 -0
  31. package/dist/collection/components/annotation/annotation-list-renvooi-values.js.map +1 -0
  32. package/dist/collection/components/annotation/annotation-omgevingsnormwaarde/annotation-omgevingsnormwaarde.js +2 -1
  33. package/dist/collection/components/annotation/annotation-omgevingsnormwaarde/annotation-omgevingsnormwaarde.js.map +1 -1
  34. package/dist/collection/components/autosuggest/autosuggest.css +23 -11
  35. package/dist/collection/components/autosuggest/autosuggest.interfaces.js.map +1 -1
  36. package/dist/collection/components/autosuggest/autosuggest.js +158 -23
  37. package/dist/collection/components/autosuggest/autosuggest.js.map +1 -1
  38. package/dist/collection/components/ozon-content/nodes/abbr.node.js +11 -0
  39. package/dist/collection/components/ozon-content/nodes/abbr.node.js.map +1 -0
  40. package/dist/collection/components/ozon-content/ozon-content-mapper.js +2 -0
  41. package/dist/collection/components/ozon-content/ozon-content-mapper.js.map +1 -1
  42. package/dist/collection/components/ozon-content/ozon-content.css +4 -0
  43. package/dist/collection/components/pagination/pagination.js +39 -26
  44. package/dist/collection/components/pagination/pagination.js.map +1 -1
  45. package/dist/collection/components/renvooi/renvooi.js +8 -5
  46. package/dist/collection/components/renvooi/renvooi.js.map +1 -1
  47. package/dist/collection/components/responsive-element/responsive-element.js +1 -1
  48. package/dist/collection/components/scrollable/scrollable.js +5 -2
  49. package/dist/collection/components/scrollable/scrollable.js.map +1 -1
  50. package/dist/collection/components/selectable/selectable.js +1 -1
  51. package/dist/collection/components/skiplink/skiplink.js +1 -1
  52. package/dist/collection/components/slide-toggle/slide-toggle.js +1 -1
  53. package/dist/collection/components/survey-rating/survey-rating.js +2 -2
  54. package/dist/collection/components/table/table.js +1 -1
  55. package/dist/collection/components/tabs/tabs.js +1 -1
  56. package/dist/collection/components/toggletip/toggletip.js +1 -1
  57. package/dist/collection/components/tooltip/tooltip.js +1 -1
  58. package/dist/collection/components/tree-view/tree-view.js +1 -1
  59. package/dist/collection/components/viewer-grid/viewer-grid.js +2 -2
  60. package/dist/components/annotation-list-renvooi-values.js +11 -0
  61. package/dist/components/annotation-list-renvooi-values.js.map +1 -0
  62. package/dist/components/dso-annotation-activiteit.js +2 -1
  63. package/dist/components/dso-annotation-activiteit.js.map +1 -1
  64. package/dist/components/dso-annotation-omgevingsnormwaarde.js +2 -1
  65. package/dist/components/dso-annotation-omgevingsnormwaarde.js.map +1 -1
  66. package/dist/components/dso-autosuggest.js +150 -20
  67. package/dist/components/dso-autosuggest.js.map +1 -1
  68. package/dist/components/dso-pagination.js +39 -26
  69. package/dist/components/dso-pagination.js.map +1 -1
  70. package/dist/components/dso-skiplink.js +1 -1
  71. package/dist/components/dso-survey-rating.js +2 -2
  72. package/dist/components/dso-tabs.js +1 -1
  73. package/dist/components/dso-tree-view.js +1 -1
  74. package/dist/components/dso-viewer-grid.js +2 -2
  75. package/dist/components/ozon-content.js +14 -1
  76. package/dist/components/ozon-content.js.map +1 -1
  77. package/dist/components/renvooi.js +8 -5
  78. package/dist/components/renvooi.js.map +1 -1
  79. package/dist/components/responsive-element.js +1 -1
  80. package/dist/components/scrollable.js +5 -2
  81. package/dist/components/scrollable.js.map +1 -1
  82. package/dist/components/selectable.js +1 -1
  83. package/dist/components/slide-toggle.js +1 -1
  84. package/dist/components/table.js +1 -1
  85. package/dist/components/toggletip.js +1 -1
  86. package/dist/components/tooltip.js +1 -1
  87. package/dist/dso-toolkit/dso-toolkit.esm.js +1 -1
  88. package/dist/dso-toolkit/dso-toolkit.esm.js.map +1 -1
  89. package/dist/dso-toolkit/p-03e5e9e1.entry.js +2 -0
  90. package/dist/dso-toolkit/p-276777d7.entry.js +2 -0
  91. package/dist/dso-toolkit/p-276777d7.entry.js.map +1 -0
  92. package/dist/dso-toolkit/{p-d3131297.entry.js → p-327cbc96.entry.js} +2 -2
  93. package/dist/dso-toolkit/{p-898ad366.entry.js → p-32f26545.entry.js} +2 -2
  94. package/dist/dso-toolkit/p-3efc1929.entry.js +2 -0
  95. package/dist/dso-toolkit/p-3efc1929.entry.js.map +1 -0
  96. package/dist/dso-toolkit/{p-0dcef2bb.entry.js → p-4549dc10.entry.js} +2 -2
  97. package/dist/dso-toolkit/{p-11e367b3.entry.js → p-4b536d17.entry.js} +2 -2
  98. package/dist/dso-toolkit/p-7949fc70.entry.js +2 -0
  99. package/dist/dso-toolkit/p-7949fc70.entry.js.map +1 -0
  100. package/dist/dso-toolkit/p-b73839a2.js +2 -0
  101. package/dist/dso-toolkit/p-b73839a2.js.map +1 -0
  102. package/dist/dso-toolkit/{p-3033a7f3.entry.js → p-cc3366a5.entry.js} +2 -2
  103. package/dist/dso-toolkit/p-d343ecd3.entry.js +2 -0
  104. package/dist/dso-toolkit/p-d343ecd3.entry.js.map +1 -0
  105. package/dist/dso-toolkit/{p-323455dc.entry.js → p-d51d44f7.entry.js} +2 -2
  106. package/dist/dso-toolkit/p-d51d44f7.entry.js.map +1 -0
  107. package/dist/dso-toolkit/{p-e9d15fae.entry.js → p-e26460b5.entry.js} +2 -2
  108. package/dist/dso-toolkit/p-e26460b5.entry.js.map +1 -0
  109. package/dist/dso-toolkit/p-e2d3d553.entry.js +2 -0
  110. package/dist/dso-toolkit/{p-880d04c4.entry.js → p-e8064fba.entry.js} +2 -2
  111. package/dist/dso-toolkit/p-eeca54c6.entry.js +2 -0
  112. package/dist/dso-toolkit/p-eeca54c6.entry.js.map +1 -0
  113. package/dist/dso-toolkit/{p-5cdbbba6.entry.js → p-fed0928b.entry.js} +2 -2
  114. package/dist/esm/annotation-list-renvooi-values-ed9c0ff3.js +11 -0
  115. package/dist/esm/annotation-list-renvooi-values-ed9c0ff3.js.map +1 -0
  116. package/dist/esm/dso-alert_6.entry.js +15 -2
  117. package/dist/esm/dso-alert_6.entry.js.map +1 -1
  118. package/dist/esm/dso-annotation-activiteit.entry.js +2 -1
  119. package/dist/esm/dso-annotation-activiteit.entry.js.map +1 -1
  120. package/dist/esm/dso-annotation-omgevingsnormwaarde.entry.js +2 -1
  121. package/dist/esm/dso-annotation-omgevingsnormwaarde.entry.js.map +1 -1
  122. package/dist/esm/dso-autosuggest.entry.js +149 -20
  123. package/dist/esm/dso-autosuggest.entry.js.map +1 -1
  124. package/dist/esm/dso-info_2.entry.js +1 -1
  125. package/dist/esm/dso-label_3.entry.js +9 -6
  126. package/dist/esm/dso-label_3.entry.js.map +1 -1
  127. package/dist/esm/dso-pagination.entry.js +39 -26
  128. package/dist/esm/dso-pagination.entry.js.map +1 -1
  129. package/dist/esm/dso-responsive-element.entry.js +1 -1
  130. package/dist/esm/dso-scrollable.entry.js +5 -2
  131. package/dist/esm/dso-scrollable.entry.js.map +1 -1
  132. package/dist/esm/dso-skiplink.entry.js +1 -1
  133. package/dist/esm/dso-survey-rating.entry.js +2 -2
  134. package/dist/esm/dso-tabs.entry.js +1 -1
  135. package/dist/esm/dso-toggletip.entry.js +1 -1
  136. package/dist/esm/dso-toolkit.js +1 -1
  137. package/dist/esm/dso-tooltip.entry.js +1 -1
  138. package/dist/esm/dso-tree-view.entry.js +1 -1
  139. package/dist/esm/dso-viewer-grid.entry.js +2 -2
  140. package/dist/esm/loader.js +1 -1
  141. package/dist/types/components/annotation/annotation-list-renvooi-values.d.ts +7 -0
  142. package/dist/types/components/autosuggest/autosuggest.d.ts +18 -7
  143. package/dist/types/components/autosuggest/autosuggest.interfaces.d.ts +10 -0
  144. package/dist/types/components/ozon-content/nodes/abbr.node.d.ts +6 -0
  145. package/dist/types/components/pagination/pagination.d.ts +2 -0
  146. package/dist/types/components/renvooi/renvooi.d.ts +1 -0
  147. package/dist/types/components.d.ts +6 -6
  148. package/package.json +3 -3
  149. package/dist/dso-toolkit/p-135bf595.entry.js +0 -2
  150. package/dist/dso-toolkit/p-135bf595.entry.js.map +0 -1
  151. package/dist/dso-toolkit/p-2aaad2dd.entry.js +0 -2
  152. package/dist/dso-toolkit/p-323455dc.entry.js.map +0 -1
  153. package/dist/dso-toolkit/p-4b70b133.entry.js +0 -2
  154. package/dist/dso-toolkit/p-4b70b133.entry.js.map +0 -1
  155. package/dist/dso-toolkit/p-9331c2fc.entry.js +0 -2
  156. package/dist/dso-toolkit/p-d8c11809.entry.js +0 -2
  157. package/dist/dso-toolkit/p-d8c11809.entry.js.map +0 -1
  158. package/dist/dso-toolkit/p-da7f089a.entry.js +0 -2
  159. package/dist/dso-toolkit/p-da7f089a.entry.js.map +0 -1
  160. package/dist/dso-toolkit/p-e4f473e2.entry.js +0 -2
  161. package/dist/dso-toolkit/p-e4f473e2.entry.js.map +0 -1
  162. package/dist/dso-toolkit/p-e9d15fae.entry.js.map +0 -1
  163. /package/dist/dso-toolkit/{p-2aaad2dd.entry.js.map → p-03e5e9e1.entry.js.map} +0 -0
  164. /package/dist/dso-toolkit/{p-d3131297.entry.js.map → p-327cbc96.entry.js.map} +0 -0
  165. /package/dist/dso-toolkit/{p-898ad366.entry.js.map → p-32f26545.entry.js.map} +0 -0
  166. /package/dist/dso-toolkit/{p-0dcef2bb.entry.js.map → p-4549dc10.entry.js.map} +0 -0
  167. /package/dist/dso-toolkit/{p-11e367b3.entry.js.map → p-4b536d17.entry.js.map} +0 -0
  168. /package/dist/dso-toolkit/{p-3033a7f3.entry.js.map → p-cc3366a5.entry.js.map} +0 -0
  169. /package/dist/dso-toolkit/{p-9331c2fc.entry.js.map → p-e2d3d553.entry.js.map} +0 -0
  170. /package/dist/dso-toolkit/{p-880d04c4.entry.js.map → p-e8064fba.entry.js.map} +0 -0
  171. /package/dist/dso-toolkit/{p-5cdbbba6.entry.js.map → p-fed0928b.entry.js.map} +0 -0
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-57504611.js');
6
6
  const annotationBody = require('./annotation-body-f6a7ba3d.js');
7
7
  const annotationSymbolSlot = require('./annotation-symbol-slot-f6c46cfe.js');
8
+ const annotationListRenvooiValues = require('./annotation-list-renvooi-values-9836dd5d.js');
8
9
 
9
10
  const annotationCss = "a{background-color:transparent;color:var(--link-color);text-decoration:underline}a:hover,a:focus-visible{color:var(--link-hover-color);text-decoration:underline}a:active{text-decoration:none}a :is(dso-icon,svg.di)+span,a span+:is(dso-icon,svg.di){margin-inline-start:8px}a:visited{color:var(--link-visited-color)}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary)).download{background-repeat:no-repeat;background-size:1.25em 1.25em;padding-inline-end:var(--_dso-anchor-icon-padding-inline-end, 1.5em);background-position:bottom 0 right 0}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary)).download{background-image:var(--_dso-di-background-image, url(\"./di.svg#download\"))}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary)).download:hover,a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary)).download:focus-visible{background-image:var(--_dso-di-background-image, url(\"./di.svg#download-scampi\"))}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary)).extern{background-repeat:no-repeat;background-size:1.25em 1.25em;padding-inline-end:var(--_dso-anchor-icon-padding-inline-end, 1.5em);background-position:bottom 0 right 0}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary)).extern{background-image:var(--_dso-di-background-image, url(\"./di.svg#external-link\"))}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary)).extern:hover,a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary)).extern:focus-visible{background-image:var(--_dso-di-background-image, url(\"./di.svg#external-link-scampi\"))}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary))[href^=\"tel:\"]{background-repeat:no-repeat;background-size:1.25em 1.25em;padding-inline-start:var(--_dso-anchor-icon-padding-inline-start, 1.5em);background-position:bottom 0 left 0}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary))[href^=\"tel:\"]{background-image:var(--_dso-di-background-image, url(\"./di.svg#call-grasgroen\"))}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary))[href^=\"tel:\"]:hover,a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary))[href^=\"tel:\"]:focus-visible{background-image:var(--_dso-di-background-image, url(\"./di.svg#call-scampi\"))}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary))[href^=\"mailto:\"]{background-repeat:no-repeat;background-size:1.25em 1.25em;padding-inline-start:var(--_dso-anchor-icon-padding-inline-start, 1.5em);background-position:bottom 0 left 0}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary))[href^=\"mailto:\"]{background-image:var(--_dso-di-background-image, url(\"./di.svg#email-grasgroen\"))}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary))[href^=\"mailto:\"]:hover,a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary))[href^=\"mailto:\"]:focus-visible{background-image:var(--_dso-di-background-image, url(\"./di.svg#email-scampi\"))}:host{display:block;padding:2px}:host([wijzigactie=voegtoe]){--link-color:currentColor;--link-hover-color:currentColor;--link-visited-color:currentColor;background-color:#e4f1d4;border-color:#e4f1d4;color:#191919}:host([wijzigactie=voegtoe]) a:is(.download,.download:hover,.download:focus-visible){background-image:var(--_dso-di-background-image, url(\"./di.svg#download-zwart\"))}:host([wijzigactie=voegtoe]) a:is(.extern,.extern:hover,.extern:focus-visible){background-image:var(--_dso-di-background-image, url(\"./di.svg#external-link-zwart\"))}:host([wijzigactie=voegtoe]) a:is([href^=\"tel:\"],[href^=\"tel:\"]:hover,[href^=\"tel:\"]:focus-visible){background-image:var(--_dso-di-background-image, url(\"./di.svg#call-zwart\"))}:host([wijzigactie=voegtoe]) a:is([href^=\"mailto:\"],[href^=\"mailto:\"]:hover,[href^=\"mailto:\"]:focus-visible){background-image:var(--_dso-di-background-image, url(\"./di.svg#email-zwart\"))}:host([wijzigactie=voegtoe]){box-shadow:0 1px 3px 1px rgba(0, 0, 0, 0.25)}:host([wijzigactie=verwijder]){--link-color:currentColor;--link-hover-color:currentColor;--link-visited-color:currentColor;background-color:#f5d8dc;border-color:#f5d8dc;color:#191919}:host([wijzigactie=verwijder]) a:is(.download,.download:hover,.download:focus-visible){background-image:var(--_dso-di-background-image, url(\"./di.svg#download-zwart\"))}:host([wijzigactie=verwijder]) a:is(.extern,.extern:hover,.extern:focus-visible){background-image:var(--_dso-di-background-image, url(\"./di.svg#external-link-zwart\"))}:host([wijzigactie=verwijder]) a:is([href^=\"tel:\"],[href^=\"tel:\"]:hover,[href^=\"tel:\"]:focus-visible){background-image:var(--_dso-di-background-image, url(\"./di.svg#call-zwart\"))}:host([wijzigactie=verwijder]) a:is([href^=\"mailto:\"],[href^=\"mailto:\"]:hover,[href^=\"mailto:\"]:focus-visible){background-image:var(--_dso-di-background-image, url(\"./di.svg#email-zwart\"))}:host([wijzigactie=verwijder]){text-decoration:line-through}@media screen and (min--moz-device-pixel-ratio: 0){:host([wijzigactie=verwijder]){font-family:sans-serif}}*,*::after,*::before{box-sizing:border-box}.annotation-body{display:flex;gap:8px}.annotation-info{flex-grow:1}.annotation-symbol,.annotation-control{flex-shrink:0}.annotation-title{font-weight:500;word-break:break-word}.annotation-title,.annotation-data{margin-block:0}.annotation-title .content:has(+dso-label),.annotation-data .content:has(+dso-label){margin-inline-end:4px}.annotation-data{font-size:0.875rem}";
10
11
  const DsoAnnotationActiviteitStyle0 = annotationCss;
@@ -23,7 +24,7 @@ const AnnotationActiviteit = class {
23
24
  }
24
25
  render() {
25
26
  const hasSymbool = this.watcher.hasSymbool();
26
- return (index.h(annotationBody.AnnotationBody, { key: 'afe2613ad46948be1043902330c9b18530aeecfc', symbol: hasSymbool ? index.h(annotationSymbolSlot.AnnotationSymbolSlot, null) : undefined, active: this.active, dsoActiveChange: this.dsoActiveChange, title: index.h("dso-renvooi", { value: this.naam }), data: index.h(index.Fragment, null, index.h("span", { class: "content" }, this.regelKwalificatie && (index.h(index.Fragment, null, index.h("dso-renvooi", { value: this.regelKwalificatie }), " ")), this.regelKwalificatieVoorzetsel && `${this.regelKwalificatieVoorzetsel}: `, index.h("dso-renvooi", { value: this.locatieNoemers })), this.gewijzigdeLocatie && index.h(annotationSymbolSlot.AnnotationGewijzigdeLocatie, null)) }));
27
+ return (index.h(annotationBody.AnnotationBody, { key: '004c59bc3cf2700fecabc0df774b820de13d9e06', symbol: hasSymbool ? index.h(annotationSymbolSlot.AnnotationSymbolSlot, null) : undefined, active: this.active, dsoActiveChange: this.dsoActiveChange, title: index.h("dso-renvooi", { value: this.naam }), data: index.h(index.Fragment, null, index.h("span", { class: "content" }, this.regelKwalificatie && (index.h(index.Fragment, null, index.h("dso-renvooi", { value: this.regelKwalificatie }), " ")), this.regelKwalificatieVoorzetsel && `${this.regelKwalificatieVoorzetsel}: `, index.h(annotationListRenvooiValues.AnnotationListRenvooiValues, { values: this.locatieNoemers })), this.gewijzigdeLocatie && index.h(annotationSymbolSlot.AnnotationGewijzigdeLocatie, null)) }));
27
28
  }
28
29
  get host() { return index.getElement(this); }
29
30
  };
@@ -1 +1 @@
1
- {"file":"dso-annotation-activiteit.entry.cjs.js","mappings":";;;;;;;;AAAA,MAAM,aAAa,GAAG,usKAAusK,CAAC;AAC9tK,sCAAe,aAAa;;MCef,oBAAoB;IALjC;;;QAyDU,YAAO,GAAGA,4BAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAoCtC;IAlCC,iBAAiB;QACf,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KACtB;IAED,oBAAoB;QAClB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;KACxB;IAED,MAAM;QACJ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAE7C,QACEC,QAACC,6BAAc,qDACb,MAAM,EAAE,UAAU,GAAGD,QAACE,yCAAoB,OAAG,GAAG,SAAS,EACzD,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,KAAK,EAAEF,yBAAa,KAAK,EAAE,IAAI,CAAC,IAAI,GAAI,EACxC,IAAI,EACFA,8BACEA,kBAAM,KAAK,EAAC,SAAS,IAClB,IAAI,CAAC,iBAAiB,KACrBA,8BACEA,yBAAa,KAAK,EAAE,IAAI,CAAC,iBAAiB,GAAI,EAAC,GAAG,CACjD,CACJ,EACA,IAAI,CAAC,2BAA2B,IAAI,GAAG,IAAI,CAAC,2BAA2B,IAAI,EAC5EA,yBAAa,KAAK,EAAE,IAAI,CAAC,cAAc,GAAI,CACtC,EACN,IAAI,CAAC,iBAAiB,IAAIA,QAACG,gDAA2B,OAAG,CACzD,GAEL,EACF;KACH;;;;;;;","names":["watcher","h","AnnotationBody","AnnotationSymbolSlot","AnnotationGewijzigdeLocatie"],"sources":["src/components/annotation/annotation.scss?tag=dso-annotation-activiteit&encapsulation=shadow","src/components/annotation/annotation-activiteit/annotation-activiteit.tsx"],"sourcesContent":["@use \"~dso-toolkit/src/utilities\";\r\n@use \"~dso-toolkit/src/variables/units\";\r\n\r\n@use \"~dso-toolkit/src/components/insert\";\r\n@use \"~dso-toolkit/src/components/delete\";\r\n\r\n@use \"~dso-toolkit/src/components/anchor/anchor\";\r\n\r\n:host {\r\n display: block;\r\n padding: 2px;\r\n}\r\n\r\n:host([wijzigactie=\"voegtoe\"]) {\r\n @include insert.root();\r\n}\r\n\r\n:host([wijzigactie=\"verwijder\"]) {\r\n @include delete.root();\r\n}\r\n\r\n@include utilities.box-sizing();\r\n\r\n.annotation-body {\r\n display: flex;\r\n gap: units.$u1;\r\n}\r\n\r\n.annotation-info {\r\n flex-grow: 1;\r\n}\r\n\r\n.annotation-symbol,\r\n.annotation-control {\r\n flex-shrink: 0;\r\n}\r\n\r\n.annotation-title {\r\n font-weight: 500;\r\n word-break: break-word;\r\n}\r\n\r\n.annotation-title,\r\n.annotation-data {\r\n margin-block: 0;\r\n\r\n .content:has(+ dso-label) {\r\n margin-inline-end: units.$u1 * 0.5;\r\n }\r\n}\r\n\r\n.annotation-data {\r\n font-size: 0.875rem;\r\n}\r\n","import { Component, ComponentInterface, Prop, Event, h, Fragment, EventEmitter, Element } from \"@stencil/core\";\r\nimport { AnnotationActiveChangeEvent, AnnotationWijzigactie } from \"../annotation.interfaces\";\r\nimport { AnnotationBody } from \"../annotation-body\";\r\nimport { AnnotationGewijzigdeLocatie } from \"../annotation-gewijzigde-locatie\";\r\nimport { watcher } from \"../annotation-watcher\";\r\nimport { AnnotationSymbolSlot } from \"../annotation-symbol-slot\";\r\nimport { RenvooiValue } from \"../../renvooi/renvooi.interfaces\";\r\n\r\n/**\r\n * @slot symbool - Een optionele afbeelding die de annotatie symboliseert.\r\n */\r\n@Component({\r\n tag: \"dso-annotation-activiteit\",\r\n styleUrl: \"../annotation.scss\",\r\n shadow: true,\r\n})\r\nexport class AnnotationActiviteit implements ComponentInterface {\r\n /**\r\n * Een optionele wijzigactie die aangeeft of de annotatie toegevoegd of verwijderd is.\r\n */\r\n @Prop({ reflect: true })\r\n wijzigactie?: AnnotationWijzigactie;\r\n\r\n /**\r\n * Een optionele boolean die aangeeft of de annotatie actief is.\r\n */\r\n @Prop({ reflect: true })\r\n active?: boolean;\r\n\r\n /**\r\n * Een optionele boolean die aangeeft of de locatie van de annotatie gewijzigd is.\r\n */\r\n @Prop({ reflect: true })\r\n gewijzigdeLocatie?: boolean;\r\n\r\n /**\r\n * Een optionele event listener voor wijzigingen aan de status van de annotatie.\r\n */\r\n @Event()\r\n dsoActiveChange!: EventEmitter<AnnotationActiveChangeEvent>;\r\n\r\n /**\r\n * De naam van de activiteit.\r\n */\r\n @Prop()\r\n naam?: RenvooiValue | string;\r\n\r\n /**\r\n * De activiteit regel kwalificatie.\r\n */\r\n @Prop()\r\n regelKwalificatie?: RenvooiValue | string;\r\n\r\n /**\r\n * De noemer van de locatie.\r\n */\r\n @Prop()\r\n locatieNoemers?: Array<RenvooiValue | string>;\r\n\r\n /**\r\n * Voorzetsel van de regelKwalificatie. Exclusief dubbele punt.\r\n */\r\n @Prop()\r\n regelKwalificatieVoorzetsel?: string;\r\n\r\n @Element()\r\n private host!: HTMLDsoAnnotationActiviteitElement;\r\n\r\n private watcher = watcher(this.host);\r\n\r\n connectedCallback(): void {\r\n this.watcher.watch();\r\n }\r\n\r\n disconnectedCallback(): void {\r\n this.watcher.unwatch();\r\n }\r\n\r\n render() {\r\n const hasSymbool = this.watcher.hasSymbool();\r\n\r\n return (\r\n <AnnotationBody\r\n symbol={hasSymbool ? <AnnotationSymbolSlot /> : undefined}\r\n active={this.active}\r\n dsoActiveChange={this.dsoActiveChange}\r\n title={<dso-renvooi value={this.naam} />}\r\n data={\r\n <>\r\n <span class=\"content\">\r\n {this.regelKwalificatie && (\r\n <>\r\n <dso-renvooi value={this.regelKwalificatie} />{\" \"}\r\n </>\r\n )}\r\n {this.regelKwalificatieVoorzetsel && `${this.regelKwalificatieVoorzetsel}: `}\r\n <dso-renvooi value={this.locatieNoemers} />\r\n </span>\r\n {this.gewijzigdeLocatie && <AnnotationGewijzigdeLocatie />}\r\n </>\r\n }\r\n />\r\n );\r\n }\r\n}\r\n"],"version":3}
1
+ {"file":"dso-annotation-activiteit.entry.cjs.js","mappings":";;;;;;;;;AAAA,MAAM,aAAa,GAAG,usKAAusK,CAAC;AAC9tK,sCAAe,aAAa;;MCgBf,oBAAoB;IALjC;;;QAyDU,YAAO,GAAGA,4BAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAoCtC;IAlCC,iBAAiB;QACf,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KACtB;IAED,oBAAoB;QAClB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;KACxB;IAED,MAAM;QACJ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAE7C,QACEC,QAACC,6BAAc,qDACb,MAAM,EAAE,UAAU,GAAGD,QAACE,yCAAoB,OAAG,GAAG,SAAS,EACzD,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,KAAK,EAAEF,yBAAa,KAAK,EAAE,IAAI,CAAC,IAAI,GAAI,EACxC,IAAI,EACFA,8BACEA,kBAAM,KAAK,EAAC,SAAS,IAClB,IAAI,CAAC,iBAAiB,KACrBA,8BACEA,yBAAa,KAAK,EAAE,IAAI,CAAC,iBAAiB,GAAI,EAAC,GAAG,CACjD,CACJ,EACA,IAAI,CAAC,2BAA2B,IAAI,GAAG,IAAI,CAAC,2BAA2B,IAAI,EAC5EA,QAACG,uDAA2B,IAAC,MAAM,EAAE,IAAI,CAAC,cAAc,GAAI,CACvD,EACN,IAAI,CAAC,iBAAiB,IAAIH,QAACI,gDAA2B,OAAG,CACzD,GAEL,EACF;KACH;;;;;;;","names":["watcher","h","AnnotationBody","AnnotationSymbolSlot","AnnotationListRenvooiValues","AnnotationGewijzigdeLocatie"],"sources":["src/components/annotation/annotation.scss?tag=dso-annotation-activiteit&encapsulation=shadow","src/components/annotation/annotation-activiteit/annotation-activiteit.tsx"],"sourcesContent":["@use \"~dso-toolkit/src/utilities\";\r\n@use \"~dso-toolkit/src/variables/units\";\r\n\r\n@use \"~dso-toolkit/src/components/insert\";\r\n@use \"~dso-toolkit/src/components/delete\";\r\n\r\n@use \"~dso-toolkit/src/components/anchor/anchor\";\r\n\r\n:host {\r\n display: block;\r\n padding: 2px;\r\n}\r\n\r\n:host([wijzigactie=\"voegtoe\"]) {\r\n @include insert.root();\r\n}\r\n\r\n:host([wijzigactie=\"verwijder\"]) {\r\n @include delete.root();\r\n}\r\n\r\n@include utilities.box-sizing();\r\n\r\n.annotation-body {\r\n display: flex;\r\n gap: units.$u1;\r\n}\r\n\r\n.annotation-info {\r\n flex-grow: 1;\r\n}\r\n\r\n.annotation-symbol,\r\n.annotation-control {\r\n flex-shrink: 0;\r\n}\r\n\r\n.annotation-title {\r\n font-weight: 500;\r\n word-break: break-word;\r\n}\r\n\r\n.annotation-title,\r\n.annotation-data {\r\n margin-block: 0;\r\n\r\n .content:has(+ dso-label) {\r\n margin-inline-end: units.$u1 * 0.5;\r\n }\r\n}\r\n\r\n.annotation-data {\r\n font-size: 0.875rem;\r\n}\r\n","import { Component, ComponentInterface, Prop, Event, h, Fragment, EventEmitter, Element } from \"@stencil/core\";\r\nimport { AnnotationActiveChangeEvent, AnnotationWijzigactie } from \"../annotation.interfaces\";\r\nimport { AnnotationBody } from \"../annotation-body\";\r\nimport { AnnotationGewijzigdeLocatie } from \"../annotation-gewijzigde-locatie\";\r\nimport { watcher } from \"../annotation-watcher\";\r\nimport { AnnotationSymbolSlot } from \"../annotation-symbol-slot\";\r\nimport { RenvooiValue } from \"../../renvooi/renvooi.interfaces\";\r\nimport { AnnotationListRenvooiValues } from \"../annotation-list-renvooi-values\";\r\n\r\n/**\r\n * @slot symbool - Een optionele afbeelding die de annotatie symboliseert.\r\n */\r\n@Component({\r\n tag: \"dso-annotation-activiteit\",\r\n styleUrl: \"../annotation.scss\",\r\n shadow: true,\r\n})\r\nexport class AnnotationActiviteit implements ComponentInterface {\r\n /**\r\n * Een optionele wijzigactie die aangeeft of de annotatie toegevoegd of verwijderd is.\r\n */\r\n @Prop({ reflect: true })\r\n wijzigactie?: AnnotationWijzigactie;\r\n\r\n /**\r\n * Een optionele boolean die aangeeft of de annotatie actief is.\r\n */\r\n @Prop({ reflect: true })\r\n active?: boolean;\r\n\r\n /**\r\n * Een optionele boolean die aangeeft of de locatie van de annotatie gewijzigd is.\r\n */\r\n @Prop({ reflect: true })\r\n gewijzigdeLocatie?: boolean;\r\n\r\n /**\r\n * Een optionele event listener voor wijzigingen aan de status van de annotatie.\r\n */\r\n @Event()\r\n dsoActiveChange!: EventEmitter<AnnotationActiveChangeEvent>;\r\n\r\n /**\r\n * De naam van de activiteit.\r\n */\r\n @Prop()\r\n naam?: RenvooiValue | string;\r\n\r\n /**\r\n * De activiteit regel kwalificatie.\r\n */\r\n @Prop()\r\n regelKwalificatie?: RenvooiValue | string;\r\n\r\n /**\r\n * De noemer van de locatie.\r\n */\r\n @Prop()\r\n locatieNoemers?: Array<RenvooiValue | string>;\r\n\r\n /**\r\n * Voorzetsel van de regelKwalificatie. Exclusief dubbele punt.\r\n */\r\n @Prop()\r\n regelKwalificatieVoorzetsel?: string;\r\n\r\n @Element()\r\n private host!: HTMLDsoAnnotationActiviteitElement;\r\n\r\n private watcher = watcher(this.host);\r\n\r\n connectedCallback(): void {\r\n this.watcher.watch();\r\n }\r\n\r\n disconnectedCallback(): void {\r\n this.watcher.unwatch();\r\n }\r\n\r\n render() {\r\n const hasSymbool = this.watcher.hasSymbool();\r\n\r\n return (\r\n <AnnotationBody\r\n symbol={hasSymbool ? <AnnotationSymbolSlot /> : undefined}\r\n active={this.active}\r\n dsoActiveChange={this.dsoActiveChange}\r\n title={<dso-renvooi value={this.naam} />}\r\n data={\r\n <>\r\n <span class=\"content\">\r\n {this.regelKwalificatie && (\r\n <>\r\n <dso-renvooi value={this.regelKwalificatie} />{\" \"}\r\n </>\r\n )}\r\n {this.regelKwalificatieVoorzetsel && `${this.regelKwalificatieVoorzetsel}: `}\r\n <AnnotationListRenvooiValues values={this.locatieNoemers} />\r\n </span>\r\n {this.gewijzigdeLocatie && <AnnotationGewijzigdeLocatie />}\r\n </>\r\n }\r\n />\r\n );\r\n }\r\n}\r\n"],"version":3}
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-57504611.js');
6
6
  const annotationBody = require('./annotation-body-f6a7ba3d.js');
7
7
  const annotationSymbolSlot = require('./annotation-symbol-slot-f6c46cfe.js');
8
+ const annotationListRenvooiValues = require('./annotation-list-renvooi-values-9836dd5d.js');
8
9
 
9
10
  const annotationCss = "a{background-color:transparent;color:var(--link-color);text-decoration:underline}a:hover,a:focus-visible{color:var(--link-hover-color);text-decoration:underline}a:active{text-decoration:none}a :is(dso-icon,svg.di)+span,a span+:is(dso-icon,svg.di){margin-inline-start:8px}a:visited{color:var(--link-visited-color)}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary)).download{background-repeat:no-repeat;background-size:1.25em 1.25em;padding-inline-end:var(--_dso-anchor-icon-padding-inline-end, 1.5em);background-position:bottom 0 right 0}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary)).download{background-image:var(--_dso-di-background-image, url(\"./di.svg#download\"))}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary)).download:hover,a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary)).download:focus-visible{background-image:var(--_dso-di-background-image, url(\"./di.svg#download-scampi\"))}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary)).extern{background-repeat:no-repeat;background-size:1.25em 1.25em;padding-inline-end:var(--_dso-anchor-icon-padding-inline-end, 1.5em);background-position:bottom 0 right 0}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary)).extern{background-image:var(--_dso-di-background-image, url(\"./di.svg#external-link\"))}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary)).extern:hover,a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary)).extern:focus-visible{background-image:var(--_dso-di-background-image, url(\"./di.svg#external-link-scampi\"))}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary))[href^=\"tel:\"]{background-repeat:no-repeat;background-size:1.25em 1.25em;padding-inline-start:var(--_dso-anchor-icon-padding-inline-start, 1.5em);background-position:bottom 0 left 0}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary))[href^=\"tel:\"]{background-image:var(--_dso-di-background-image, url(\"./di.svg#call-grasgroen\"))}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary))[href^=\"tel:\"]:hover,a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary))[href^=\"tel:\"]:focus-visible{background-image:var(--_dso-di-background-image, url(\"./di.svg#call-scampi\"))}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary))[href^=\"mailto:\"]{background-repeat:no-repeat;background-size:1.25em 1.25em;padding-inline-start:var(--_dso-anchor-icon-padding-inline-start, 1.5em);background-position:bottom 0 left 0}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary))[href^=\"mailto:\"]{background-image:var(--_dso-di-background-image, url(\"./di.svg#email-grasgroen\"))}a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary))[href^=\"mailto:\"]:hover,a:where(:not(.dso-primary,.dso-secondary,.dso-tertiary))[href^=\"mailto:\"]:focus-visible{background-image:var(--_dso-di-background-image, url(\"./di.svg#email-scampi\"))}:host{display:block;padding:2px}:host([wijzigactie=voegtoe]){--link-color:currentColor;--link-hover-color:currentColor;--link-visited-color:currentColor;background-color:#e4f1d4;border-color:#e4f1d4;color:#191919}:host([wijzigactie=voegtoe]) a:is(.download,.download:hover,.download:focus-visible){background-image:var(--_dso-di-background-image, url(\"./di.svg#download-zwart\"))}:host([wijzigactie=voegtoe]) a:is(.extern,.extern:hover,.extern:focus-visible){background-image:var(--_dso-di-background-image, url(\"./di.svg#external-link-zwart\"))}:host([wijzigactie=voegtoe]) a:is([href^=\"tel:\"],[href^=\"tel:\"]:hover,[href^=\"tel:\"]:focus-visible){background-image:var(--_dso-di-background-image, url(\"./di.svg#call-zwart\"))}:host([wijzigactie=voegtoe]) a:is([href^=\"mailto:\"],[href^=\"mailto:\"]:hover,[href^=\"mailto:\"]:focus-visible){background-image:var(--_dso-di-background-image, url(\"./di.svg#email-zwart\"))}:host([wijzigactie=voegtoe]){box-shadow:0 1px 3px 1px rgba(0, 0, 0, 0.25)}:host([wijzigactie=verwijder]){--link-color:currentColor;--link-hover-color:currentColor;--link-visited-color:currentColor;background-color:#f5d8dc;border-color:#f5d8dc;color:#191919}:host([wijzigactie=verwijder]) a:is(.download,.download:hover,.download:focus-visible){background-image:var(--_dso-di-background-image, url(\"./di.svg#download-zwart\"))}:host([wijzigactie=verwijder]) a:is(.extern,.extern:hover,.extern:focus-visible){background-image:var(--_dso-di-background-image, url(\"./di.svg#external-link-zwart\"))}:host([wijzigactie=verwijder]) a:is([href^=\"tel:\"],[href^=\"tel:\"]:hover,[href^=\"tel:\"]:focus-visible){background-image:var(--_dso-di-background-image, url(\"./di.svg#call-zwart\"))}:host([wijzigactie=verwijder]) a:is([href^=\"mailto:\"],[href^=\"mailto:\"]:hover,[href^=\"mailto:\"]:focus-visible){background-image:var(--_dso-di-background-image, url(\"./di.svg#email-zwart\"))}:host([wijzigactie=verwijder]){text-decoration:line-through}@media screen and (min--moz-device-pixel-ratio: 0){:host([wijzigactie=verwijder]){font-family:sans-serif}}*,*::after,*::before{box-sizing:border-box}.annotation-body{display:flex;gap:8px}.annotation-info{flex-grow:1}.annotation-symbol,.annotation-control{flex-shrink:0}.annotation-title{font-weight:500;word-break:break-word}.annotation-title,.annotation-data{margin-block:0}.annotation-title .content:has(+dso-label),.annotation-data .content:has(+dso-label){margin-inline-end:4px}.annotation-data{font-size:0.875rem}";
10
11
  const DsoAnnotationOmgevingsnormwaardeStyle0 = annotationCss;
@@ -23,7 +24,7 @@ const AnnotationOmgevingsnormwaarde = class {
23
24
  }
24
25
  render() {
25
26
  const hasSymbool = this.watcher.hasSymbool();
26
- return (index.h(annotationBody.AnnotationBody, { key: '5e2947e6f85b9c02cdf87099f59a304224e96b81', symbol: hasSymbool ? index.h(annotationSymbolSlot.AnnotationSymbolSlot, null) : undefined, active: this.active || false, dsoActiveChange: this.dsoActiveChange, title: index.h(index.Fragment, null, index.h("dso-renvooi", { value: this.naam }), this.eenheid && (index.h(index.Fragment, null, " ", "(in ", index.h("dso-renvooi", { value: this.eenheid }), ")"))), data: index.h(index.Fragment, null, index.h("span", { class: "content" }, this.toelichting && index.h(index.Fragment, null, this.toelichting), this.waardes && this.waardes.length > 0 && (index.h(index.Fragment, null, ": ", index.h("dso-renvooi", { value: this.waardes })))), this.gewijzigdeLocatie && index.h(annotationSymbolSlot.AnnotationGewijzigdeLocatie, null)) }));
27
+ return (index.h(annotationBody.AnnotationBody, { key: '7b118d1c32131742b38869b59683942e1d6f78e9', symbol: hasSymbool ? index.h(annotationSymbolSlot.AnnotationSymbolSlot, null) : undefined, active: this.active || false, dsoActiveChange: this.dsoActiveChange, title: index.h(index.Fragment, null, index.h("dso-renvooi", { value: this.naam }), this.eenheid && (index.h(index.Fragment, null, " ", "(in ", index.h("dso-renvooi", { value: this.eenheid }), ")"))), data: index.h(index.Fragment, null, index.h("span", { class: "content" }, this.toelichting && index.h(index.Fragment, null, this.toelichting), this.waardes && this.waardes.length > 0 && (index.h(index.Fragment, null, ": ", index.h(annotationListRenvooiValues.AnnotationListRenvooiValues, { values: this.waardes })))), this.gewijzigdeLocatie && index.h(annotationSymbolSlot.AnnotationGewijzigdeLocatie, null)) }));
27
28
  }
28
29
  get host() { return index.getElement(this); }
29
30
  };
@@ -1 +1 @@
1
- {"file":"dso-annotation-omgevingsnormwaarde.entry.cjs.js","mappings":";;;;;;;;AAAA,MAAM,aAAa,GAAG,usKAAusK,CAAC;AAC9tK,+CAAe,aAAa;;MCkBf,6BAA6B;IAL1C;;;QAyDU,YAAO,GAAGA,4BAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KA6CtC;IA3CC,iBAAiB;QACf,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KACtB;IAED,oBAAoB;QAClB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;KACxB;IAED,MAAM;QACJ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAE7C,QACEC,QAACC,6BAAc,qDACb,MAAM,EAAE,UAAU,GAAGD,QAACE,yCAAoB,OAAG,GAAG,SAAS,EACzD,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK,EAC5B,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,KAAK,EACHF,8BACEA,yBAAa,KAAK,EAAE,IAAI,CAAC,IAAI,GAAI,EAChC,IAAI,CAAC,OAAO,KACXA,8BACG,GAAG,UACAA,yBAAa,KAAK,EAAE,IAAI,CAAC,OAAO,GAAI,MACvC,CACJ,CACA,EAEL,IAAI,EACFA,8BACEA,kBAAM,KAAK,EAAC,SAAS,IAClB,IAAI,CAAC,WAAW,IAAIA,8BAAG,IAAI,CAAC,WAAW,CAAI,EAC3C,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,KACtCA,oCACIA,yBAAa,KAAK,EAAE,IAAI,CAAC,OAAO,GAAI,CACrC,CACJ,CACI,EACN,IAAI,CAAC,iBAAiB,IAAIA,QAACG,gDAA2B,OAAG,CACzD,GAEL,EACF;KACH;;;;;;;","names":["watcher","h","AnnotationBody","AnnotationSymbolSlot","AnnotationGewijzigdeLocatie"],"sources":["src/components/annotation/annotation.scss?tag=dso-annotation-omgevingsnormwaarde&encapsulation=shadow","src/components/annotation/annotation-omgevingsnormwaarde/annotation-omgevingsnormwaarde.tsx"],"sourcesContent":["@use \"~dso-toolkit/src/utilities\";\r\n@use \"~dso-toolkit/src/variables/units\";\r\n\r\n@use \"~dso-toolkit/src/components/insert\";\r\n@use \"~dso-toolkit/src/components/delete\";\r\n\r\n@use \"~dso-toolkit/src/components/anchor/anchor\";\r\n\r\n:host {\r\n display: block;\r\n padding: 2px;\r\n}\r\n\r\n:host([wijzigactie=\"voegtoe\"]) {\r\n @include insert.root();\r\n}\r\n\r\n:host([wijzigactie=\"verwijder\"]) {\r\n @include delete.root();\r\n}\r\n\r\n@include utilities.box-sizing();\r\n\r\n.annotation-body {\r\n display: flex;\r\n gap: units.$u1;\r\n}\r\n\r\n.annotation-info {\r\n flex-grow: 1;\r\n}\r\n\r\n.annotation-symbol,\r\n.annotation-control {\r\n flex-shrink: 0;\r\n}\r\n\r\n.annotation-title {\r\n font-weight: 500;\r\n word-break: break-word;\r\n}\r\n\r\n.annotation-title,\r\n.annotation-data {\r\n margin-block: 0;\r\n\r\n .content:has(+ dso-label) {\r\n margin-inline-end: units.$u1 * 0.5;\r\n }\r\n}\r\n\r\n.annotation-data {\r\n font-size: 0.875rem;\r\n}\r\n","import { Component, ComponentInterface, Prop, Event, h, EventEmitter, Fragment, Element } from \"@stencil/core\";\r\n\r\nimport { AnnotationActiveChangeEvent, AnnotationWijzigactie } from \"../annotation.interfaces\";\r\nimport { AnnotationBody } from \"../annotation-body\";\r\nimport { AnnotationGewijzigdeLocatie } from \"../annotation-gewijzigde-locatie\";\r\nimport { watcher } from \"../annotation-watcher\";\r\nimport { AnnotationSymbolSlot } from \"../annotation-symbol-slot\";\r\nimport { RenvooiValue } from \"../../renvooi/renvooi.interfaces\";\r\n\r\n/**\r\n * Dit component wordt voor een Omgevingsnorm en Omgevingswaarde gebruikt.\r\n *\r\n * @slot symbool - Een optionele afbeelding die de annotatie symboliseert.\r\n */\r\n@Component({\r\n tag: \"dso-annotation-omgevingsnormwaarde\",\r\n styleUrl: \"../annotation.scss\",\r\n shadow: true,\r\n})\r\nexport class AnnotationOmgevingsnormwaarde implements ComponentInterface {\r\n /**\r\n * Een optionele wijzigactie die aangeeft of de annotatie toegevoegd of verwijderd is.\r\n */\r\n @Prop({ reflect: true })\r\n wijzigactie?: AnnotationWijzigactie;\r\n\r\n /**\r\n * Een optionele boolean die aangeeft of de annotatie actief is.\r\n */\r\n @Prop({ reflect: true })\r\n active?: boolean;\r\n\r\n /**\r\n * Een optionele boolean die aangeeft of de locatie van de annotatie gewijzigd is.\r\n */\r\n @Prop({ reflect: true })\r\n gewijzigdeLocatie?: boolean;\r\n\r\n /**\r\n * Een optionele event listener voor wijzigingen aan de status van de annotatie.\r\n */\r\n @Event()\r\n dsoActiveChange!: EventEmitter<AnnotationActiveChangeEvent>;\r\n\r\n /**\r\n * De naam van de omgevingsnorm of omgevingswaarde.\r\n */\r\n @Prop()\r\n naam?: RenvooiValue | string;\r\n\r\n /**\r\n * De toelichting van de waardes.\r\n */\r\n @Prop()\r\n toelichting?: string;\r\n\r\n /**\r\n * De waardes van de omgevingsnorm of omgevingswaarde.\r\n */\r\n @Prop()\r\n waardes?: Array<RenvooiValue | string>;\r\n\r\n /**\r\n * De eenheid van de omgevingsnorm of omgevingswaarde.\r\n */\r\n @Prop()\r\n eenheid?: RenvooiValue | string;\r\n\r\n @Element()\r\n private host!: HTMLDsoAnnotationOmgevingsnormwaardeElement;\r\n\r\n private watcher = watcher(this.host);\r\n\r\n connectedCallback(): void {\r\n this.watcher.watch();\r\n }\r\n\r\n disconnectedCallback(): void {\r\n this.watcher.unwatch();\r\n }\r\n\r\n render() {\r\n const hasSymbool = this.watcher.hasSymbool();\r\n\r\n return (\r\n <AnnotationBody\r\n symbol={hasSymbool ? <AnnotationSymbolSlot /> : undefined}\r\n active={this.active || false}\r\n dsoActiveChange={this.dsoActiveChange}\r\n title={\r\n <>\r\n <dso-renvooi value={this.naam} />\r\n {this.eenheid && (\r\n <>\r\n {\" \"}\r\n (in <dso-renvooi value={this.eenheid} />)\r\n </>\r\n )}\r\n </>\r\n }\r\n data={\r\n <>\r\n <span class=\"content\">\r\n {this.toelichting && <>{this.toelichting}</>}\r\n {this.waardes && this.waardes.length > 0 && (\r\n <>\r\n : <dso-renvooi value={this.waardes} />\r\n </>\r\n )}\r\n </span>\r\n {this.gewijzigdeLocatie && <AnnotationGewijzigdeLocatie />}\r\n </>\r\n }\r\n />\r\n );\r\n }\r\n}\r\n"],"version":3}
1
+ {"file":"dso-annotation-omgevingsnormwaarde.entry.cjs.js","mappings":";;;;;;;;;AAAA,MAAM,aAAa,GAAG,usKAAusK,CAAC;AAC9tK,+CAAe,aAAa;;MCmBf,6BAA6B;IAL1C;;;QAyDU,YAAO,GAAGA,4BAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KA6CtC;IA3CC,iBAAiB;QACf,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KACtB;IAED,oBAAoB;QAClB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;KACxB;IAED,MAAM;QACJ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAE7C,QACEC,QAACC,6BAAc,qDACb,MAAM,EAAE,UAAU,GAAGD,QAACE,yCAAoB,OAAG,GAAG,SAAS,EACzD,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK,EAC5B,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,KAAK,EACHF,8BACEA,yBAAa,KAAK,EAAE,IAAI,CAAC,IAAI,GAAI,EAChC,IAAI,CAAC,OAAO,KACXA,8BACG,GAAG,UACAA,yBAAa,KAAK,EAAE,IAAI,CAAC,OAAO,GAAI,MACvC,CACJ,CACA,EAEL,IAAI,EACFA,8BACEA,kBAAM,KAAK,EAAC,SAAS,IAClB,IAAI,CAAC,WAAW,IAAIA,8BAAG,IAAI,CAAC,WAAW,CAAI,EAC3C,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,KACtCA,oCACIA,QAACG,uDAA2B,IAAC,MAAM,EAAE,IAAI,CAAC,OAAO,GAAI,CACtD,CACJ,CACI,EACN,IAAI,CAAC,iBAAiB,IAAIH,QAACI,gDAA2B,OAAG,CACzD,GAEL,EACF;KACH;;;;;;;","names":["watcher","h","AnnotationBody","AnnotationSymbolSlot","AnnotationListRenvooiValues","AnnotationGewijzigdeLocatie"],"sources":["src/components/annotation/annotation.scss?tag=dso-annotation-omgevingsnormwaarde&encapsulation=shadow","src/components/annotation/annotation-omgevingsnormwaarde/annotation-omgevingsnormwaarde.tsx"],"sourcesContent":["@use \"~dso-toolkit/src/utilities\";\r\n@use \"~dso-toolkit/src/variables/units\";\r\n\r\n@use \"~dso-toolkit/src/components/insert\";\r\n@use \"~dso-toolkit/src/components/delete\";\r\n\r\n@use \"~dso-toolkit/src/components/anchor/anchor\";\r\n\r\n:host {\r\n display: block;\r\n padding: 2px;\r\n}\r\n\r\n:host([wijzigactie=\"voegtoe\"]) {\r\n @include insert.root();\r\n}\r\n\r\n:host([wijzigactie=\"verwijder\"]) {\r\n @include delete.root();\r\n}\r\n\r\n@include utilities.box-sizing();\r\n\r\n.annotation-body {\r\n display: flex;\r\n gap: units.$u1;\r\n}\r\n\r\n.annotation-info {\r\n flex-grow: 1;\r\n}\r\n\r\n.annotation-symbol,\r\n.annotation-control {\r\n flex-shrink: 0;\r\n}\r\n\r\n.annotation-title {\r\n font-weight: 500;\r\n word-break: break-word;\r\n}\r\n\r\n.annotation-title,\r\n.annotation-data {\r\n margin-block: 0;\r\n\r\n .content:has(+ dso-label) {\r\n margin-inline-end: units.$u1 * 0.5;\r\n }\r\n}\r\n\r\n.annotation-data {\r\n font-size: 0.875rem;\r\n}\r\n","import { Component, ComponentInterface, Prop, Event, h, EventEmitter, Fragment, Element } from \"@stencil/core\";\r\n\r\nimport { AnnotationActiveChangeEvent, AnnotationWijzigactie } from \"../annotation.interfaces\";\r\nimport { AnnotationBody } from \"../annotation-body\";\r\nimport { AnnotationGewijzigdeLocatie } from \"../annotation-gewijzigde-locatie\";\r\nimport { watcher } from \"../annotation-watcher\";\r\nimport { AnnotationSymbolSlot } from \"../annotation-symbol-slot\";\r\nimport { RenvooiValue } from \"../../renvooi/renvooi.interfaces\";\r\nimport { AnnotationListRenvooiValues } from \"../annotation-list-renvooi-values\";\r\n\r\n/**\r\n * Dit component wordt voor een Omgevingsnorm en Omgevingswaarde gebruikt.\r\n *\r\n * @slot symbool - Een optionele afbeelding die de annotatie symboliseert.\r\n */\r\n@Component({\r\n tag: \"dso-annotation-omgevingsnormwaarde\",\r\n styleUrl: \"../annotation.scss\",\r\n shadow: true,\r\n})\r\nexport class AnnotationOmgevingsnormwaarde implements ComponentInterface {\r\n /**\r\n * Een optionele wijzigactie die aangeeft of de annotatie toegevoegd of verwijderd is.\r\n */\r\n @Prop({ reflect: true })\r\n wijzigactie?: AnnotationWijzigactie;\r\n\r\n /**\r\n * Een optionele boolean die aangeeft of de annotatie actief is.\r\n */\r\n @Prop({ reflect: true })\r\n active?: boolean;\r\n\r\n /**\r\n * Een optionele boolean die aangeeft of de locatie van de annotatie gewijzigd is.\r\n */\r\n @Prop({ reflect: true })\r\n gewijzigdeLocatie?: boolean;\r\n\r\n /**\r\n * Een optionele event listener voor wijzigingen aan de status van de annotatie.\r\n */\r\n @Event()\r\n dsoActiveChange!: EventEmitter<AnnotationActiveChangeEvent>;\r\n\r\n /**\r\n * De naam van de omgevingsnorm of omgevingswaarde.\r\n */\r\n @Prop()\r\n naam?: RenvooiValue | string;\r\n\r\n /**\r\n * De toelichting van de waardes.\r\n */\r\n @Prop()\r\n toelichting?: string;\r\n\r\n /**\r\n * De waardes van de omgevingsnorm of omgevingswaarde.\r\n */\r\n @Prop()\r\n waardes?: Array<RenvooiValue | string>;\r\n\r\n /**\r\n * De eenheid van de omgevingsnorm of omgevingswaarde.\r\n */\r\n @Prop()\r\n eenheid?: RenvooiValue | string;\r\n\r\n @Element()\r\n private host!: HTMLDsoAnnotationOmgevingsnormwaardeElement;\r\n\r\n private watcher = watcher(this.host);\r\n\r\n connectedCallback(): void {\r\n this.watcher.watch();\r\n }\r\n\r\n disconnectedCallback(): void {\r\n this.watcher.unwatch();\r\n }\r\n\r\n render() {\r\n const hasSymbool = this.watcher.hasSymbool();\r\n\r\n return (\r\n <AnnotationBody\r\n symbol={hasSymbool ? <AnnotationSymbolSlot /> : undefined}\r\n active={this.active || false}\r\n dsoActiveChange={this.dsoActiveChange}\r\n title={\r\n <>\r\n <dso-renvooi value={this.naam} />\r\n {this.eenheid && (\r\n <>\r\n {\" \"}\r\n (in <dso-renvooi value={this.eenheid} />)\r\n </>\r\n )}\r\n </>\r\n }\r\n data={\r\n <>\r\n <span class=\"content\">\r\n {this.toelichting && <>{this.toelichting}</>}\r\n {this.waardes && this.waardes.length > 0 && (\r\n <>\r\n : <AnnotationListRenvooiValues values={this.waardes} />\r\n </>\r\n )}\r\n </span>\r\n {this.gewijzigdeLocatie && <AnnotationGewijzigdeLocatie />}\r\n </>\r\n }\r\n />\r\n );\r\n }\r\n}\r\n"],"version":3}
@@ -32,12 +32,28 @@ const translations = {
32
32
  },
33
33
  };
34
34
 
35
- const autosuggestCss = ".sc-dso-autosuggest-h{display:block;position:relative}.listbox-container.sc-dso-autosuggest{inset-inline:0;inset-block-start:100%;block-size:auto;max-block-size:var(--max-block-size);min-block-size:50px;overflow-y:auto;position:absolute;z-index:200}ul.sc-dso-autosuggest,.autosuggest-progress-box.sc-dso-autosuggest{background-clip:padding-box;background-color:#fff;border:1px solid rgba(0, 0, 0, 0.15);border-radius:4px;box-shadow:0 6px 12px rgba(0, 0, 0, 0.175);list-style-type:none;margin-block:0}.autosuggest-progress-box.sc-dso-autosuggest{padding-block:12px;padding-inline:8px}ul.sc-dso-autosuggest{padding-block:8px;padding-inline:0}ul.sc-dso-autosuggest li.sc-dso-autosuggest{padding-block:4px;padding-inline:16px}ul.sc-dso-autosuggest li.sc-dso-autosuggest .suggestion-row.sc-dso-autosuggest{display:flex;justify-content:space-between}li[aria-selected=true].sc-dso-autosuggest{cursor:pointer;background-color:#39870c}li[aria-selected=true].sc-dso-autosuggest,li[aria-selected=true].sc-dso-autosuggest .type.sc-dso-autosuggest,li[aria-selected=true].sc-dso-autosuggest .extra.sc-dso-autosuggest{color:#fff}mark.sc-dso-autosuggest{font-weight:700;background-color:inherit;color:inherit;padding:0}.type.sc-dso-autosuggest,.extra.sc-dso-autosuggest{color:#666}.type.sc-dso-autosuggest{text-align:end}.extra.sc-dso-autosuggest{font-size:14px;line-height:21px}.extra.sc-dso-autosuggest:not(:first-child){text-align:end}";
35
+ const autosuggestCss = ".sc-dso-autosuggest-h{display:block;position:relative}.listbox-container.sc-dso-autosuggest{inset-inline:0;inset-block-start:100%;block-size:auto;max-block-size:var(--max-block-size);min-block-size:50px;overflow-y:auto;position:absolute;z-index:200}.listbox.sc-dso-autosuggest,.autosuggest-progress-box.sc-dso-autosuggest{background-clip:padding-box;background-color:#fff;border:1px solid rgba(0, 0, 0, 0.15);border-radius:4px;box-shadow:0 6px 12px rgba(0, 0, 0, 0.175);list-style-type:none;margin-block:0}.autosuggest-progress-box.sc-dso-autosuggest{padding-block:12px;padding-inline:8px}.listbox.sc-dso-autosuggest{padding-block:8px;padding-inline:0}.listbox.sc-dso-autosuggest .group.sc-dso-autosuggest:not(:first-child) .group-label.sc-dso-autosuggest{border-block-start:1px solid #b2b2b2}.listbox.sc-dso-autosuggest .group-label.sc-dso-autosuggest{color:#275937;font-weight:700;padding-block:4px;margin-inline:16px}.listbox.sc-dso-autosuggest .option.sc-dso-autosuggest{padding-block:4px;padding-inline:16px}.listbox.sc-dso-autosuggest .option.sc-dso-autosuggest .suggestion-row.sc-dso-autosuggest{display:flex;justify-content:space-between}.listbox.sc-dso-autosuggest .option.sc-dso-autosuggest:active{background-color:#275937}.listbox.sc-dso-autosuggest .option.sc-dso-autosuggest:active,.listbox.sc-dso-autosuggest .option.sc-dso-autosuggest:active .type.sc-dso-autosuggest,.listbox.sc-dso-autosuggest .option.sc-dso-autosuggest:active .extra.sc-dso-autosuggest{color:#fff}.option[aria-selected=true].sc-dso-autosuggest{cursor:pointer;background-color:#d7e7ce}mark.sc-dso-autosuggest{font-weight:700;background-color:inherit;color:inherit;padding:0}.type.sc-dso-autosuggest,.extra.sc-dso-autosuggest{color:#666}.type.sc-dso-autosuggest{text-align:end}.extra.sc-dso-autosuggest{font-size:14px;line-height:21px}.extra.sc-dso-autosuggest:not(:first-child){text-align:end}";
36
36
  const DsoAutosuggestStyle0 = autosuggestCss;
37
37
 
38
38
  const maxSuggestionsViewable = 10;
39
39
  const listboxPaddingBlock = 8;
40
40
  const listboxBorderWidth = 1;
41
+ const Option = ({ id, mouseEnter, mouseLeave, click, selected, suggestion, ref, markedSuggestion }) => (index.h("div", { class: "option", role: "option", id: id, onMouseEnter: mouseEnter, onMouseLeave: mouseLeave, onClick: click, "aria-selected": selected, "aria-label": suggestion.value, ref: ref }, index.h("div", { class: "suggestion-row" }, index.h("span", { class: "value" }, markedSuggestion.value), markedSuggestion.type ? index.h("span", { class: "type" }, markedSuggestion.type) : undefined), markedSuggestion.extras &&
42
+ markedSuggestion.extras.map((markedChunk) => (index.h("div", { class: "suggestion-row" }, markedChunk.map((extra) => (index.h("span", { class: "extra" }, extra))))))));
43
+ function isGrouped(suggestions) {
44
+ return (!!suggestions &&
45
+ suggestions.length > 0 &&
46
+ suggestions.every((suggestion) => suggestion !== undefined &&
47
+ "groupLabel" in suggestion &&
48
+ suggestion.groupLabel !== undefined &&
49
+ "suggestions" in suggestion &&
50
+ suggestion.suggestions.length > 0));
51
+ }
52
+ function isFlat(suggestions) {
53
+ return (!!suggestions &&
54
+ suggestions.length > 0 &&
55
+ suggestions.every((suggestion) => suggestion !== undefined && "value" in suggestion && suggestion.value !== undefined));
56
+ }
41
57
  const Autosuggest = class {
42
58
  constructor(hostRef) {
43
59
  index.registerInstance(this, hostRef);
@@ -45,11 +61,16 @@ const Autosuggest = class {
45
61
  this.dsoChange = index.createEvent(this, "dsoChange", 7);
46
62
  this.dsoSearch = index.createEvent(this, "dsoSearch", 7);
47
63
  /**
48
- * The suggestions for the value of the slotted input element. Optionally a
49
- * Suggestion can have a `type` and `item`.
64
+ * The suggestions for the value of the slotted input element.
65
+ *
66
+ * This can be an array of type Suggestion or an Array of type SuggestionGroup.
50
67
  *
51
- * The `type` is used to style the suggestion. `item` can be use to reference
52
- * the original object that was used to create the suggestion.
68
+ * A suggestionGroup must have a `groupLabel` and `suggestions`.
69
+ *
70
+ * A suggestion must have a `value` and can have a `type`, an `item` or `extras`.
71
+ *
72
+ * The `type` is used to style the suggestion. `item` can be use to reference the original object that was used to
73
+ * create the suggestion. `extras` is an array of additional strings to further specify the suggestion.
53
74
  *
54
75
  * The value should be null when no suggestions have been fetched.
55
76
  */
@@ -270,22 +291,38 @@ const Autosuggest = class {
270
291
  return item;
271
292
  });
272
293
  }
273
- selectSuggestion(suggestion) {
294
+ selectSuggestion(suggestion, group) {
274
295
  this.selectedSuggestion = suggestion;
296
+ this.selectedSuggestionGroup = group;
275
297
  this.setAriaActiveDescendant();
276
298
  }
277
299
  selectFirstSuggestion() {
278
300
  if (!this.suggestions) {
279
301
  return;
280
302
  }
281
- this.selectedSuggestion = this.suggestions[0];
303
+ if (isGrouped(this.suggestions) && this.selectedSuggestionGroup) {
304
+ this.selectedSuggestion = this.selectedSuggestionGroup.suggestions[0];
305
+ }
306
+ else {
307
+ if (isFlat(this.suggestions)) {
308
+ this.selectedSuggestion = this.suggestions[0];
309
+ }
310
+ }
282
311
  this.setAriaActiveDescendant(true);
283
312
  }
284
313
  selectLastSuggestion() {
285
314
  if (!this.suggestions) {
286
315
  return;
287
316
  }
288
- this.selectedSuggestion = this.suggestions[this.suggestions.length - 1];
317
+ if (isGrouped(this.suggestions) && this.selectedSuggestionGroup) {
318
+ this.selectedSuggestion =
319
+ this.selectedSuggestionGroup.suggestions[this.selectedSuggestionGroup.suggestions.length - 1];
320
+ }
321
+ else {
322
+ if (isFlat(this.suggestions)) {
323
+ this.selectedSuggestion = this.suggestions[this.suggestions.length - 1];
324
+ }
325
+ }
289
326
  this.setAriaActiveDescendant(true);
290
327
  }
291
328
  selectNextSuggestion() {
@@ -293,23 +330,91 @@ const Autosuggest = class {
293
330
  if (!this.suggestions) {
294
331
  return;
295
332
  }
296
- const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : -1;
297
- this.selectedSuggestion = (_a = this.suggestions[index + 1]) !== null && _a !== void 0 ? _a : this.suggestions[0];
333
+ if (isGrouped(this.suggestions)) {
334
+ this.selectNextGroupedSuggestion();
335
+ }
336
+ else {
337
+ const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : -1;
338
+ this.selectedSuggestion = (_a = this.suggestions[index + 1]) !== null && _a !== void 0 ? _a : this.suggestions[0];
339
+ }
298
340
  this.setAriaActiveDescendant(true);
299
341
  }
342
+ selectNextGroupedSuggestion() {
343
+ var _a;
344
+ if (!this.suggestions) {
345
+ return;
346
+ }
347
+ if (this.selectedSuggestionGroup) {
348
+ const indexInGroup = this.selectedSuggestion
349
+ ? this.selectedSuggestionGroup.suggestions.indexOf(this.selectedSuggestion)
350
+ : -1;
351
+ if (indexInGroup === this.selectedSuggestionGroup.suggestions.length - 1) {
352
+ // Move to first suggestion in next or first group
353
+ const groupIndex = this.suggestionGroups.indexOf(this.selectedSuggestionGroup);
354
+ this.selectedSuggestionGroup = (_a = this.suggestionGroups[groupIndex + 1]) !== null && _a !== void 0 ? _a : this.suggestionGroups[0];
355
+ this.selectedSuggestion = this.selectedSuggestionGroup.suggestions[0];
356
+ }
357
+ else {
358
+ // Within this group
359
+ this.selectedSuggestion = this.selectedSuggestionGroup.suggestions[indexInGroup + 1];
360
+ }
361
+ }
362
+ else {
363
+ this.selectedSuggestionGroup = this.suggestionGroups[0];
364
+ this.selectedSuggestion = this.selectedSuggestionGroup.suggestions[0];
365
+ }
366
+ }
300
367
  selectPreviousSuggestion() {
301
368
  var _a;
302
369
  if (!this.suggestions) {
303
370
  return;
304
371
  }
305
- const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : 0;
306
- this.selectedSuggestion = (_a = this.suggestions[index - 1]) !== null && _a !== void 0 ? _a : this.suggestions[this.suggestions.length - 1];
372
+ if (isGrouped(this.suggestions)) {
373
+ this.selectPreviousGroupedSuggestion();
374
+ }
375
+ else {
376
+ const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : 0;
377
+ this.selectedSuggestion = (_a = this.suggestions[index - 1]) !== null && _a !== void 0 ? _a : this.suggestions[this.suggestions.length - 1];
378
+ }
307
379
  this.setAriaActiveDescendant(true);
308
380
  }
381
+ selectPreviousGroupedSuggestion() {
382
+ var _a;
383
+ if (!this.suggestions) {
384
+ return;
385
+ }
386
+ if (this.selectedSuggestionGroup) {
387
+ const indexInGroup = this.selectedSuggestion
388
+ ? this.selectedSuggestionGroup.suggestions.indexOf(this.selectedSuggestion)
389
+ : -1;
390
+ if (indexInGroup === 0) {
391
+ // Move to last suggestion in previous or last group
392
+ const groupIndex = this.suggestionGroups.indexOf(this.selectedSuggestionGroup);
393
+ this.selectedSuggestionGroup =
394
+ (_a = this.suggestionGroups[groupIndex - 1]) !== null && _a !== void 0 ? _a : this.suggestionGroups[this.suggestions.length - 1];
395
+ this.selectedSuggestion =
396
+ this.selectedSuggestionGroup.suggestions[this.selectedSuggestionGroup.suggestions.length - 1];
397
+ }
398
+ else {
399
+ // Within this group
400
+ this.selectedSuggestion = this.selectedSuggestionGroup.suggestions[indexInGroup - 1];
401
+ }
402
+ }
403
+ else {
404
+ this.selectedSuggestionGroup = this.suggestionGroups[this.suggestions.length - 1];
405
+ this.selectedSuggestion =
406
+ this.selectedSuggestionGroup.suggestions[this.selectedSuggestionGroup.suggestions.length - 1];
407
+ }
408
+ }
409
+ get suggestionGroups() {
410
+ return isGrouped(this.suggestions) ? this.suggestions : [];
411
+ }
309
412
  setAriaActiveDescendant(scroll = false) {
310
413
  var _a, _b;
311
414
  if (this.selectedSuggestion) {
312
- const id = this.listboxItemId(this.selectedSuggestion);
415
+ const id = this.selectedSuggestionGroup
416
+ ? this.listboxGroupedItemId(this.selectedSuggestionGroup, this.selectedSuggestion)
417
+ : this.listboxItemId(this.selectedSuggestion);
313
418
  (_a = this.input) === null || _a === void 0 ? void 0 : _a.setAttribute("aria-activedescendant", id);
314
419
  if (scroll) {
315
420
  (_b = document.getElementById(id)) === null || _b === void 0 ? void 0 : _b.scrollIntoView({ block: "nearest" });
@@ -321,6 +426,7 @@ const Autosuggest = class {
321
426
  this.showLoading = !this.loadingDelayed;
322
427
  this.notFound = false;
323
428
  this.selectedSuggestion = undefined;
429
+ this.selectedSuggestionGroup = undefined;
324
430
  (_a = this.input) === null || _a === void 0 ? void 0 : _a.setAttribute("aria-activedescendant", "");
325
431
  }
326
432
  openSuggestions(selectSuggestion) {
@@ -356,10 +462,16 @@ const Autosuggest = class {
356
462
  if (!this.suggestions) {
357
463
  return "";
358
464
  }
359
- return `${this.inputId}-${this.suggestions.indexOf(suggestion) + 1}`;
465
+ return `${this.inputId}-${isFlat(this.suggestions) && this.suggestions.indexOf(suggestion) + 1}`;
360
466
  }
361
- getChunkedExtras(extras) {
362
- return extras.reduce((resultArray, extra, index) => {
467
+ listboxGroupedItemId(suggestionGroup, suggestion) {
468
+ if (!this.suggestions) {
469
+ return "";
470
+ }
471
+ return `${this.inputId}-${this.suggestionGroups.indexOf(suggestionGroup) + 1}-${suggestionGroup.suggestions.indexOf(suggestion) + 1}`;
472
+ }
473
+ getMarkedChunkedExtras(extras, suggestion) {
474
+ const chunkedExtras = extras.reduce((resultArray, extra, index) => {
363
475
  var _a;
364
476
  const chunkIndex = Math.floor(index / 2);
365
477
  if (!resultArray[chunkIndex]) {
@@ -368,21 +480,38 @@ const Autosuggest = class {
368
480
  (_a = resultArray[chunkIndex]) === null || _a === void 0 ? void 0 : _a.push(extra);
369
481
  return resultArray;
370
482
  }, []);
483
+ return chunkedExtras.map((chunk, index) => chunk.map((c, i) => this.handleMark(suggestion, c, "extra", index * 2 + i)));
484
+ }
485
+ getMarkedSuggestions(suggestion) {
486
+ return {
487
+ value: this.handleMark(suggestion, suggestion.value, "value"),
488
+ type: suggestion.type ? this.handleMark(suggestion, suggestion.type, "type") : undefined,
489
+ extras: suggestion.extras ? this.getMarkedChunkedExtras(suggestion.extras, suggestion) : undefined,
490
+ };
371
491
  }
372
492
  render() {
373
493
  this.listboxItems = [];
374
494
  const showListbox = this.showSuggestions || this.notFound;
495
+ const grouped = isGrouped(this.suggestions);
496
+ const flat = isFlat(this.suggestions);
375
497
  if (showListbox && this.input) {
376
498
  this.input.setAttribute("aria-controls", this.listboxId);
377
499
  }
378
500
  else if (this.input) {
379
501
  this.input.removeAttribute("aria-controls");
380
502
  }
381
- return (index.h(index.Fragment, null, index.h("slot", { key: '2ed8694b6cfa86863f0e22b6a7cfa1a1144e673f' }), this.loading && this.showLoading ? (index.h("div", { class: "autosuggest-progress-box" }, index.h("dso-progress-indicator", { label: this.loadingLabel }))) : (showListbox && (index.h("dso-scrollable", { class: "listbox-container", ref: (element) => (this.listboxContainer = element), style: { "--max-block-size": `${this.listboxContainerMaxBlockSize}px` } }, index.h("ul", { role: "listbox", "aria-live": "polite", id: this.listboxId, "aria-labelledby": this.labelId, ref: (element) => (this.listbox = element), tabindex: "0" }, (this.showSuggestions &&
503
+ return (index.h(index.Fragment, null, index.h("slot", { key: '557d829f9238c3fa9f6082beba78381472115ccd' }), this.loading && this.showLoading ? (index.h("div", { class: "autosuggest-progress-box" }, index.h("dso-progress-indicator", { label: this.loadingLabel }))) : (showListbox && (index.h("dso-scrollable", { class: "listbox-container", ref: (element) => (this.listboxContainer = element), style: { "--max-block-size": `${this.listboxContainerMaxBlockSize}px` } }, index.h("div", { class: "listbox", role: "listbox", "aria-live": "polite", id: this.listboxId, "aria-labelledby": this.labelId, ref: (element) => (this.listbox = element), tabindex: "0" }, (flat &&
504
+ this.showSuggestions &&
382
505
  this.suggestions &&
383
- this.suggestions.map((suggestion) => (index.h("li", { role: "option", id: this.listboxItemId(suggestion), key: suggestion.value, onMouseEnter: () => this.selectSuggestion(suggestion), onMouseLeave: () => this.resetSelectedSuggestion(), onClick: () => this.pickSelectedValue(), "aria-selected": (suggestion === this.selectedSuggestion).toString(), "aria-label": suggestion.value, ref: (li) => li && this.listboxItems.push(li) }, index.h("div", { class: "suggestion-row" }, index.h("span", { class: "value" }, this.handleMark(suggestion, suggestion.value, "value")), suggestion.type ? (index.h("span", { class: "type" }, this.handleMark(suggestion, suggestion.type, "type"))) : undefined), suggestion.extras &&
384
- this.getChunkedExtras(suggestion.extras).map((chunk, index$1) => (index.h("div", { class: "suggestion-row" }, chunk.map((c, i) => (index.h("span", { class: "extra" }, this.handleMark(suggestion, c, "extra", index$1 * 2 + i))))))))))) ||
385
- (this.notFound && (index.h("li", null, index.h("span", { class: "value" }, this.notFoundLabel ||
506
+ this.suggestions.map((suggestion) => (index.h(Option, { id: this.listboxItemId(suggestion), mouseEnter: () => this.selectSuggestion(suggestion), mouseLeave: () => this.resetSelectedSuggestion(), click: () => this.pickSelectedValue(), selected: (suggestion === this.selectedSuggestion).toString(), suggestion: suggestion, ref: (element) => element && this.listboxItems.push(element), markedSuggestion: this.getMarkedSuggestions(suggestion) })))) ||
507
+ (grouped &&
508
+ this.showSuggestions &&
509
+ this.suggestions &&
510
+ this.suggestions.map((suggestionGroup) => {
511
+ const groupLabelId = v4.v4();
512
+ return (index.h("div", { role: "group", class: "group", "aria-labelledby": groupLabelId }, index.h("div", { class: "group-label", role: "presentation", id: groupLabelId }, suggestionGroup.groupLabel), suggestionGroup.suggestions.map((suggestion) => (index.h(Option, { id: this.listboxGroupedItemId(suggestionGroup, suggestion), mouseEnter: () => this.selectSuggestion(suggestion, suggestionGroup), mouseLeave: () => this.resetSelectedSuggestion(), click: () => this.pickSelectedValue(), selected: (suggestion === this.selectedSuggestion).toString(), suggestion: suggestion, ref: (element) => element && this.listboxItems.push(element), markedSuggestion: this.getMarkedSuggestions(suggestion) })))));
513
+ })) ||
514
+ (this.notFound && (index.h("div", { class: "option" }, index.h("span", { class: "value" }, this.notFoundLabel ||
386
515
  this.showInputValueNotFound(this.text("notFound", { inputValue: this.inputValue }))))))))))));
387
516
  }
388
517
  get host() { return index.getElement(this); }
@@ -1 +1 @@
1
- {"file":"dso-autosuggest.entry.cjs.js","mappings":"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","names":["v4","debounce","i18n","h","index"],"sources":["../../node_modules/escape-string-regexp/index.js","src/components/autosuggest/autosuggest.i18n.ts","src/components/autosuggest/autosuggest.scss?tag=dso-autosuggest&encapsulation=scoped","src/components/autosuggest/autosuggest.tsx"],"sourcesContent":["export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","import { Resource } from \"../../utils/i18n\";\r\n\r\nexport const translations: Resource = {\r\n en: {\r\n \"dso-autosuggest\": {\r\n notFound: \"{{inputValue}} was not found.\",\r\n },\r\n },\r\n nl: {\r\n \"dso-autosuggest\": {\r\n notFound: \"{{inputValue}} is niet gevonden.\",\r\n },\r\n },\r\n};\r\n","@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n@use \"~dso-toolkit/src/variables/scaffolding\";\r\n@use \"~dso-toolkit/src/variables/typography\";\r\n@use \"~dso-toolkit/src/variables/zindex\";\r\n\r\n@use \"autosuggest.variables\" as core-autosuggest-variables;\r\n\r\n:host {\r\n display: block;\r\n position: relative;\r\n}\r\n\r\n.listbox-container {\r\n inset-inline: 0;\r\n inset-block-start: 100%;\r\n block-size: auto;\r\n max-block-size: var(--max-block-size);\r\n min-block-size: core-autosuggest-variables.$listbox-min-block-size;\r\n overflow-y: auto;\r\n position: absolute;\r\n z-index: zindex.$autosuggest;\r\n}\r\n\r\nul,\r\n.autosuggest-progress-box {\r\n background-clip: padding-box;\r\n background-color: core-autosuggest-variables.$background-color;\r\n border: core-autosuggest-variables.$listbox-border-width solid core-autosuggest-variables.$border-color;\r\n border-radius: scaffolding.$border-radius-base;\r\n box-shadow: core-autosuggest-variables.$box-shadow;\r\n list-style-type: none;\r\n margin-block: 0;\r\n}\r\n\r\n.autosuggest-progress-box {\r\n padding-block: units.$u1 * 1.5;\r\n padding-inline: units.$u1;\r\n}\r\n\r\nul {\r\n padding-block: core-autosuggest-variables.$listbox-padding-block;\r\n padding-inline: 0;\r\n\r\n li {\r\n padding-block: core-autosuggest-variables.$list-item-padding-block;\r\n padding-inline: units.$u2;\r\n\r\n .suggestion-row {\r\n display: flex;\r\n justify-content: space-between;\r\n }\r\n }\r\n}\r\n\r\nli[aria-selected=\"true\"] {\r\n cursor: pointer;\r\n background-color: colors.$grasgroen;\r\n\r\n &,\r\n .type,\r\n .extra {\r\n color: colors.$wit;\r\n }\r\n}\r\n\r\nmark {\r\n font-weight: 700;\r\n background-color: inherit;\r\n color: inherit;\r\n padding: 0;\r\n}\r\n\r\n.type,\r\n.extra {\r\n color: colors.$grijs-60;\r\n}\r\n\r\n.type {\r\n text-align: end;\r\n}\r\n\r\n.extra {\r\n font-size: typography.$root-font-size-small;\r\n line-height: typography.$root-font-size-small * typography.$line-height-base;\r\n\r\n &:not(:first-child) {\r\n text-align: end;\r\n }\r\n}\r\n","import { Component, Element, Event, EventEmitter, Fragment, h, Listen, Prop, State, VNode, Watch } from \"@stencil/core\";\r\n\r\nimport debounce from \"debounce\";\r\nimport escapeStringRegexp from \"escape-string-regexp\";\r\n\r\nimport { v4 } from \"uuid\";\r\n\r\nimport { i18n } from \"../../utils/i18n\";\r\n\r\nimport { AutosuggestMarkFunction, AutosuggestMarkItem, Suggestion } from \"./autosuggest.interfaces\";\r\nimport { translations } from \"./autosuggest.i18n\";\r\n\r\nconst maxSuggestionsViewable = 10;\r\nconst listboxPaddingBlock = 8;\r\nconst listboxBorderWidth = 1;\r\n\r\n@Component({\r\n tag: \"dso-autosuggest\",\r\n styleUrl: \"autosuggest.scss\",\r\n scoped: true,\r\n})\r\nexport class Autosuggest {\r\n /**\r\n * The suggestions for the value of the slotted input element. Optionally a\r\n * Suggestion can have a `type` and `item`.\r\n *\r\n * The `type` is used to style the suggestion. `item` can be use to reference\r\n * the original object that was used to create the suggestion.\r\n *\r\n * The value should be null when no suggestions have been fetched.\r\n */\r\n @Prop()\r\n readonly suggestions: Suggestion[] | null = null;\r\n\r\n /**\r\n * Shows progress indicator when fetching results.\r\n */\r\n @Prop()\r\n loading = false;\r\n\r\n /**\r\n * To override progress indicator's default loading label.\r\n */\r\n @Prop()\r\n loadingLabel?: string = \"Een moment geduld.\";\r\n\r\n /**\r\n * To delay progress indicator showing (in ms).\r\n */\r\n @Prop()\r\n loadingDelayed?: number;\r\n\r\n /**\r\n * To show text when no results are found.\r\n */\r\n @Prop()\r\n notFoundLabel?: string;\r\n\r\n /**\r\n * Whether the previous suggestions will be presented when the input gets focus again.\r\n */\r\n @Prop()\r\n suggestOnFocus = false;\r\n\r\n /**\r\n * A function provided by the consumer of the autosuggest component, that returns an array of `AutosuggestMarkItem`s\r\n */\r\n @Prop()\r\n mark?: AutosuggestMarkFunction;\r\n\r\n /**\r\n * Emitted when a suggestion is selected.\r\n * The `detail` property of the `CustomEvent` will contain the selected suggestion.\r\n */\r\n @Event()\r\n dsoSelect!: EventEmitter<Suggestion>;\r\n\r\n /**\r\n * This is emitted debounced for every change for the slotted input type=text element.\r\n */\r\n @Event()\r\n dsoChange!: EventEmitter<string>;\r\n\r\n /**\r\n * Emitted when enter is pressed.\r\n * The `detail` property of the `CustomEvent` will contain the input text.\r\n */\r\n @Event()\r\n dsoSearch!: EventEmitter<string>;\r\n\r\n @Element()\r\n host!: HTMLDsoAutosuggestElement;\r\n\r\n @State()\r\n showSuggestions = false;\r\n\r\n @State()\r\n selectedSuggestion: Suggestion | undefined;\r\n\r\n @State()\r\n notFound = false;\r\n\r\n @State()\r\n showLoading = false;\r\n\r\n @State()\r\n listItemBlockSize = 0;\r\n\r\n @State()\r\n listboxContainerMaxBlockSize = 0;\r\n\r\n @Watch(\"suggestions\")\r\n suggestionsWatcher() {\r\n this.resetSelectedSuggestion();\r\n\r\n if ((!this.showSuggestions || !this.notFound) && this.inputValue) {\r\n this.openSuggestions();\r\n } else if ((this.showSuggestions || this.notFound) && !this.inputValue) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n private input?: HTMLInputElement;\r\n\r\n private listboxContainer: HTMLDsoScrollableElement | undefined;\r\n\r\n private listbox: HTMLUListElement | undefined;\r\n\r\n private listboxItems: HTMLLIElement[] = [];\r\n\r\n private listboxId: string = v4();\r\n\r\n private inputId: string = v4();\r\n\r\n private labelId: string = v4();\r\n\r\n private resizeObserver = new ResizeObserver(debounce(() => this.setListboxContainerMaxBlockSize(), 150));\r\n\r\n private debouncedEmitValue = debounce((value: string) => {\r\n this.dsoChange.emit(value);\r\n this.debouncedShowLoading();\r\n }, 200);\r\n\r\n private debouncedShowLoading = debounce(() => {\r\n if (this.inputValue) {\r\n this.showLoading = true;\r\n }\r\n }, this.loadingDelayed);\r\n\r\n private inputValue = \"\";\r\n\r\n private onInput = (event: Event) => {\r\n if (!(event.target instanceof HTMLInputElement)) {\r\n return;\r\n // throw new Error(\"event.target is not instanceof HTMLInputElement\"); #2293\r\n }\r\n\r\n this.showLoading = !this.loadingDelayed;\r\n this.inputValue = event.target.value;\r\n this.debouncedEmitValue(event.target.value.match(/(\\S+)/g) ? event.target.value : \"\");\r\n };\r\n\r\n private onFocusIn = () => {\r\n if (this.suggestOnFocus) {\r\n this.openSuggestions();\r\n }\r\n };\r\n\r\n @Listen(\"click\", { target: \"document\" })\r\n onDocumentClick(event: MouseEvent) {\r\n if (\r\n (this.showSuggestions || this.notFound) &&\r\n this.listbox &&\r\n event.target instanceof Node &&\r\n !this.listbox.contains(event.target) &&\r\n this.input !== event.target\r\n ) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n private text = i18n(() => this.host, translations);\r\n\r\n componentDidRender() {\r\n this.setListboxContainerMaxBlockSize();\r\n }\r\n\r\n connectedCallback() {\r\n setTimeout(() => {\r\n const input = this.host.querySelector('input[type=\"text\"]');\r\n if (!(input instanceof HTMLInputElement)) {\r\n return;\r\n // throw new ReferenceError(\"Mandatory text input not found\"); #2293\r\n }\r\n\r\n this.input = input;\r\n if (input.id) {\r\n this.inputId = input.id;\r\n } else {\r\n input.id = this.inputId;\r\n }\r\n\r\n if (!this.input.labels || this.input.labels.length < 1) {\r\n return;\r\n // throw new ReferenceError(\"Mandatory label for text input not found\"); #2293\r\n }\r\n\r\n const label = this.input.labels[0];\r\n if (label?.id) {\r\n this.labelId = label.id;\r\n } else if (label) {\r\n label.id = this.labelId;\r\n }\r\n\r\n this.input.setAttribute(\"role\", \"combobox\");\r\n this.input.setAttribute(\"aria-haspopup\", \"listbox\");\r\n this.input.setAttribute(\"aria-expanded\", \"false\");\r\n this.input.setAttribute(\"autocomplete\", \"off\");\r\n this.input.setAttribute(\"aria-autocomplete\", \"list\");\r\n this.input.setAttribute(\"aria-activedescendant\", \"\");\r\n this.input.addEventListener(\"input\", this.onInput);\r\n this.input.addEventListener(\"keydown\", this.onKeyDown);\r\n this.input.addEventListener(\"focusin\", this.onFocusIn);\r\n\r\n window.addEventListener(\"resize\", this.onWindowResize);\r\n\r\n document.addEventListener(\"scrollend\", this.onScrollend);\r\n\r\n this.resizeObserver.observe(this.host);\r\n\r\n this.setListboxContainerMaxBlockSize();\r\n });\r\n }\r\n\r\n disconnectedCallback() {\r\n this.input?.removeEventListener(\"input\", this.onInput);\r\n this.input?.removeEventListener(\"keydown\", this.onKeyDown);\r\n this.input?.removeEventListener(\"focusin\", this.onFocusIn);\r\n\r\n window.removeEventListener(\"resize\", this.onWindowResize);\r\n\r\n document.removeEventListener(\"scrollend\", this.onScrollend);\r\n\r\n this.resizeObserver.disconnect();\r\n }\r\n\r\n private onWindowResize = debounce(() => this.setListboxContainerMaxBlockSize(), 150);\r\n\r\n private onScrollend = () => this.setListboxContainerMaxBlockSize();\r\n\r\n private setListboxContainerMaxBlockSize(): void {\r\n if (!this.listboxContainer || !this.showSuggestions) {\r\n return;\r\n }\r\n\r\n if (this.listboxItems[0] && this.showSuggestions) {\r\n this.listItemBlockSize = this.listboxItems[0].getBoundingClientRect().height;\r\n }\r\n\r\n const availableBlockSize = window.innerHeight - this.host.getBoundingClientRect().bottom;\r\n const listboxMaxBlockSize =\r\n this.listItemBlockSize * maxSuggestionsViewable + 2 * listboxPaddingBlock + 2 * listboxBorderWidth;\r\n\r\n if (availableBlockSize > this.listItemBlockSize) {\r\n if (availableBlockSize < listboxMaxBlockSize) {\r\n this.listboxContainerMaxBlockSize = availableBlockSize - 2 * listboxPaddingBlock;\r\n } else {\r\n this.listboxContainerMaxBlockSize = listboxMaxBlockSize;\r\n }\r\n }\r\n }\r\n\r\n private showInputValueNotFound(text?: string) {\r\n return this.processAutosuggestMarkItems(this.markTerms(this.input?.value.split(\" \").filter((t) => t) ?? [], text));\r\n }\r\n\r\n private handleMark(\r\n suggestion: Suggestion,\r\n text: string,\r\n type?: \"value\" | \"type\" | \"extra\",\r\n extraIndex?: number,\r\n ): (VNode | string)[] {\r\n if (this.mark && type) {\r\n return this.processAutosuggestMarkItems(this.mark(suggestion, text, type, extraIndex));\r\n }\r\n return this.processAutosuggestMarkItems(this.markTerms(this.input?.value.split(\" \").filter((t) => t) ?? [], text));\r\n }\r\n\r\n private markTerms(terms: string[], suggestionValue?: string): AutosuggestMarkItem[] {\r\n if (!suggestionValue || !terms || terms.length === 0 || terms[0] === undefined) {\r\n return [\"\"];\r\n }\r\n\r\n const termRegex = new RegExp(`(${escapeStringRegexp(terms[0])})`, \"gi\");\r\n\r\n return suggestionValue.split(termRegex).reduce((total: AutosuggestMarkItem[], valuePart: string) => {\r\n if (!valuePart) {\r\n total.push(valuePart);\r\n } else if (termRegex.test(valuePart)) {\r\n total.push({ mark: valuePart });\r\n } else if (terms.length === 1) {\r\n total.push(valuePart);\r\n } else {\r\n total.push(...this.markTerms(terms.slice(1), valuePart));\r\n }\r\n\r\n return total;\r\n }, []);\r\n }\r\n\r\n private processAutosuggestMarkItems(items: AutosuggestMarkItem[]): (VNode | string)[] {\r\n if (items.length === 0) {\r\n return [\"\"];\r\n }\r\n\r\n return items.map((item) => {\r\n if (typeof item === \"object\") {\r\n return <mark>{item.mark}</mark>;\r\n }\r\n return item;\r\n });\r\n }\r\n\r\n private selectSuggestion(suggestion: Suggestion) {\r\n this.selectedSuggestion = suggestion;\r\n\r\n this.setAriaActiveDescendant();\r\n }\r\n\r\n private selectFirstSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[0];\r\n\r\n this.setAriaActiveDescendant(true);\r\n }\r\n\r\n private selectLastSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n this.selectedSuggestion = this.suggestions[this.suggestions.length - 1];\r\n\r\n this.setAriaActiveDescendant(true);\r\n }\r\n\r\n private selectNextSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : -1;\r\n\r\n this.selectedSuggestion = this.suggestions[index + 1] ?? this.suggestions[0];\r\n\r\n this.setAriaActiveDescendant(true);\r\n }\r\n\r\n private selectPreviousSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : 0;\r\n\r\n this.selectedSuggestion = this.suggestions[index - 1] ?? this.suggestions[this.suggestions.length - 1];\r\n\r\n this.setAriaActiveDescendant(true);\r\n }\r\n\r\n private setAriaActiveDescendant(scroll = false): void {\r\n if (this.selectedSuggestion) {\r\n const id = this.listboxItemId(this.selectedSuggestion);\r\n this.input?.setAttribute(\"aria-activedescendant\", id);\r\n if (scroll) {\r\n document.getElementById(id)?.scrollIntoView({ block: \"nearest\" });\r\n }\r\n }\r\n }\r\n\r\n private resetSelectedSuggestion() {\r\n this.showLoading = !this.loadingDelayed;\r\n this.notFound = false;\r\n this.selectedSuggestion = undefined;\r\n this.input?.setAttribute(\"aria-activedescendant\", \"\");\r\n }\r\n\r\n private openSuggestions(selectSuggestion?: \"first\" | \"last\") {\r\n this.showSuggestions = (this.suggestions && this.suggestions.length > 0) ?? false;\r\n this.notFound = (this.suggestions && this.suggestions?.length === 0) ?? false;\r\n this.input?.setAttribute(\"aria-expanded\", (this.showSuggestions || this.notFound).toString());\r\n\r\n if (this.showSuggestions && selectSuggestion === \"first\") {\r\n this.selectFirstSuggestion();\r\n } else if (this.showSuggestions && selectSuggestion === \"last\") {\r\n this.selectLastSuggestion();\r\n }\r\n }\r\n\r\n private closeSuggestions() {\r\n this.showSuggestions = false;\r\n this.notFound = false;\r\n this.input?.setAttribute(\"aria-expanded\", \"false\");\r\n this.selectFirstSuggestion();\r\n }\r\n\r\n private pickSelectedValue() {\r\n if (this.selectedSuggestion && this.showSuggestions) {\r\n this.dsoSelect.emit(this.selectedSuggestion);\r\n } else {\r\n this.dsoSearch.emit(this.input?.value);\r\n }\r\n\r\n this.closeSuggestions();\r\n }\r\n\r\n private onKeyDown = (event: KeyboardEvent) => {\r\n if (event.defaultPrevented || this.loading) {\r\n return;\r\n }\r\n\r\n switch (event.key) {\r\n case \"ArrowDown\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"first\");\r\n } else {\r\n this.selectNextSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"ArrowUp\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"last\");\r\n } else {\r\n this.selectPreviousSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"Tab\":\r\n this.closeSuggestions();\r\n return;\r\n\r\n case \"Escape\":\r\n this.closeSuggestions();\r\n break;\r\n\r\n case \"Enter\":\r\n this.pickSelectedValue();\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n };\r\n\r\n private listboxItemId(suggestion: Suggestion): string {\r\n if (!this.suggestions) {\r\n return \"\";\r\n }\r\n return `${this.inputId}-${this.suggestions.indexOf(suggestion) + 1}`;\r\n }\r\n\r\n private getChunkedExtras(extras: string[]): string[][] {\r\n return extras.reduce((resultArray: string[][], extra, index) => {\r\n const chunkIndex = Math.floor(index / 2);\r\n\r\n if (!resultArray[chunkIndex]) {\r\n resultArray[chunkIndex] = [];\r\n }\r\n resultArray[chunkIndex]?.push(extra);\r\n return resultArray;\r\n }, []);\r\n }\r\n\r\n render() {\r\n this.listboxItems = [];\r\n\r\n const showListbox = this.showSuggestions || this.notFound;\r\n\r\n if (showListbox && this.input) {\r\n this.input.setAttribute(\"aria-controls\", this.listboxId);\r\n } else if (this.input) {\r\n this.input.removeAttribute(\"aria-controls\");\r\n }\r\n\r\n return (\r\n <>\r\n <slot />\r\n {this.loading && this.showLoading ? (\r\n <div class=\"autosuggest-progress-box\">\r\n <dso-progress-indicator label={this.loadingLabel}></dso-progress-indicator>\r\n </div>\r\n ) : (\r\n showListbox && (\r\n <dso-scrollable\r\n class=\"listbox-container\"\r\n ref={(element) => (this.listboxContainer = element)}\r\n style={{ \"--max-block-size\": `${this.listboxContainerMaxBlockSize}px` }}\r\n >\r\n <ul\r\n role=\"listbox\"\r\n aria-live=\"polite\"\r\n id={this.listboxId}\r\n aria-labelledby={this.labelId}\r\n ref={(element) => (this.listbox = element)}\r\n tabindex=\"0\"\r\n >\r\n {(this.showSuggestions &&\r\n this.suggestions &&\r\n this.suggestions.map((suggestion) => (\r\n <li\r\n role=\"option\"\r\n id={this.listboxItemId(suggestion)}\r\n key={suggestion.value}\r\n onMouseEnter={() => this.selectSuggestion(suggestion)}\r\n onMouseLeave={() => this.resetSelectedSuggestion()}\r\n onClick={() => this.pickSelectedValue()}\r\n aria-selected={(suggestion === this.selectedSuggestion).toString()}\r\n aria-label={suggestion.value}\r\n ref={(li) => li && this.listboxItems.push(li)}\r\n >\r\n <div class=\"suggestion-row\">\r\n <span class=\"value\">{this.handleMark(suggestion, suggestion.value, \"value\")}</span>\r\n {suggestion.type ? (\r\n <span class=\"type\">{this.handleMark(suggestion, suggestion.type, \"type\")}</span>\r\n ) : undefined}\r\n </div>\r\n {suggestion.extras &&\r\n this.getChunkedExtras(suggestion.extras).map((chunk, index) => (\r\n <div class=\"suggestion-row\">\r\n {chunk.map((c, i) => (\r\n <span class=\"extra\">{this.handleMark(suggestion, c, \"extra\", index * 2 + i)}</span>\r\n ))}\r\n </div>\r\n ))}\r\n </li>\r\n ))) ||\r\n (this.notFound && (\r\n <li>\r\n <span class=\"value\">\r\n {this.notFoundLabel ||\r\n this.showInputValueNotFound(this.text(\"notFound\", { inputValue: this.inputValue }))}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n </dso-scrollable>\r\n )\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n"],"version":3}
1
+ {"file":"dso-autosuggest.entry.cjs.js","mappings":"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","names":["h","v4","debounce","i18n"],"sources":["../../node_modules/escape-string-regexp/index.js","src/components/autosuggest/autosuggest.i18n.ts","src/components/autosuggest/autosuggest.scss?tag=dso-autosuggest&encapsulation=scoped","src/components/autosuggest/autosuggest.tsx"],"sourcesContent":["export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n","import { Resource } from \"../../utils/i18n\";\r\n\r\nexport const translations: Resource = {\r\n en: {\r\n \"dso-autosuggest\": {\r\n notFound: \"{{inputValue}} was not found.\",\r\n },\r\n },\r\n nl: {\r\n \"dso-autosuggest\": {\r\n notFound: \"{{inputValue}} is niet gevonden.\",\r\n },\r\n },\r\n};\r\n","@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n@use \"~dso-toolkit/src/variables/scaffolding\";\r\n@use \"~dso-toolkit/src/variables/typography\";\r\n@use \"~dso-toolkit/src/variables/zindex\";\r\n\r\n@use \"autosuggest.variables\" as core-autosuggest-variables;\r\n\r\n:host {\r\n display: block;\r\n position: relative;\r\n}\r\n\r\n.listbox-container {\r\n inset-inline: 0;\r\n inset-block-start: 100%;\r\n block-size: auto;\r\n max-block-size: var(--max-block-size);\r\n min-block-size: core-autosuggest-variables.$listbox-min-block-size;\r\n overflow-y: auto;\r\n position: absolute;\r\n z-index: zindex.$autosuggest;\r\n}\r\n\r\n.listbox,\r\n.autosuggest-progress-box {\r\n background-clip: padding-box;\r\n background-color: core-autosuggest-variables.$background-color;\r\n border: core-autosuggest-variables.$listbox-border-width solid core-autosuggest-variables.$border-color;\r\n border-radius: scaffolding.$border-radius-base;\r\n box-shadow: core-autosuggest-variables.$box-shadow;\r\n list-style-type: none;\r\n margin-block: 0;\r\n}\r\n\r\n.autosuggest-progress-box {\r\n padding-block: units.$u1 * 1.5;\r\n padding-inline: units.$u1;\r\n}\r\n\r\n.listbox {\r\n padding-block: core-autosuggest-variables.$listbox-padding-block;\r\n padding-inline: 0;\r\n\r\n .group:not(:first-child) {\r\n .group-label {\r\n border-block-start: 1px solid colors.$grijs-30;\r\n }\r\n }\r\n\r\n .group-label {\r\n color: colors.$bosgroen;\r\n font-weight: 700;\r\n padding-block: core-autosuggest-variables.$list-item-padding-block;\r\n margin-inline: units.$u2;\r\n }\r\n\r\n .option {\r\n padding-block: core-autosuggest-variables.$list-item-padding-block;\r\n padding-inline: units.$u2;\r\n\r\n .suggestion-row {\r\n display: flex;\r\n justify-content: space-between;\r\n }\r\n\r\n &:active {\r\n background-color: colors.$bosgroen;\r\n\r\n &,\r\n .type,\r\n .extra {\r\n color: colors.$wit;\r\n }\r\n }\r\n }\r\n}\r\n\r\n.option[aria-selected=\"true\"] {\r\n cursor: pointer;\r\n background-color: colors.$grasgroen-20;\r\n}\r\n\r\nmark {\r\n font-weight: 700;\r\n background-color: inherit;\r\n color: inherit;\r\n padding: 0;\r\n}\r\n\r\n.type,\r\n.extra {\r\n color: colors.$grijs-60;\r\n}\r\n\r\n.type {\r\n text-align: end;\r\n}\r\n\r\n.extra {\r\n font-size: typography.$root-font-size-small;\r\n line-height: typography.$root-font-size-small * typography.$line-height-base;\r\n\r\n &:not(:first-child) {\r\n text-align: end;\r\n }\r\n}\r\n","import {\r\n Component,\r\n Element,\r\n Event,\r\n EventEmitter,\r\n Fragment,\r\n FunctionalComponent,\r\n h,\r\n Listen,\r\n Prop,\r\n State,\r\n VNode,\r\n Watch,\r\n} from \"@stencil/core\";\r\n\r\nimport debounce from \"debounce\";\r\nimport escapeStringRegexp from \"escape-string-regexp\";\r\n\r\nimport { v4 } from \"uuid\";\r\n\r\nimport { i18n } from \"../../utils/i18n\";\r\n\r\nimport { AutosuggestMarkFunction, AutosuggestMarkItem, Suggestion, SuggestionGroup } from \"./autosuggest.interfaces\";\r\nimport { translations } from \"./autosuggest.i18n\";\r\n\r\ninterface MarkedSuggestion {\r\n value: (VNode | string)[];\r\n type?: (VNode | string)[];\r\n extras?: (VNode | string)[][][];\r\n}\r\n\r\nconst maxSuggestionsViewable = 10;\r\nconst listboxPaddingBlock = 8;\r\nconst listboxBorderWidth = 1;\r\n\r\nconst Option: FunctionalComponent<{\r\n id: string;\r\n mouseEnter: () => void;\r\n mouseLeave: () => void;\r\n click: () => void;\r\n selected: string;\r\n suggestion: Suggestion;\r\n markedSuggestion: MarkedSuggestion;\r\n ref: (element: HTMLDivElement | undefined) => void;\r\n}> = ({ id, mouseEnter, mouseLeave, click, selected, suggestion, ref, markedSuggestion }) => (\r\n <div\r\n class=\"option\"\r\n role=\"option\"\r\n id={id}\r\n onMouseEnter={mouseEnter}\r\n onMouseLeave={mouseLeave}\r\n onClick={click}\r\n aria-selected={selected}\r\n aria-label={suggestion.value}\r\n ref={ref}\r\n >\r\n <div class=\"suggestion-row\">\r\n <span class=\"value\">{markedSuggestion.value}</span>\r\n {markedSuggestion.type ? <span class=\"type\">{markedSuggestion.type}</span> : undefined}\r\n </div>\r\n {markedSuggestion.extras &&\r\n markedSuggestion.extras.map((markedChunk) => (\r\n <div class=\"suggestion-row\">\r\n {markedChunk.map((extra) => (\r\n <span class=\"extra\">{extra}</span>\r\n ))}\r\n </div>\r\n ))}\r\n </div>\r\n);\r\n\r\nfunction isGrouped(suggestions: Suggestion[] | SuggestionGroup[] | null): suggestions is SuggestionGroup[] {\r\n return (\r\n !!suggestions &&\r\n suggestions.length > 0 &&\r\n suggestions.every(\r\n (suggestion) =>\r\n suggestion !== undefined &&\r\n \"groupLabel\" in suggestion &&\r\n suggestion.groupLabel !== undefined &&\r\n \"suggestions\" in suggestion &&\r\n suggestion.suggestions.length > 0,\r\n )\r\n );\r\n}\r\n\r\nfunction isFlat(suggestions: Suggestion[] | SuggestionGroup[] | null): suggestions is Suggestion[] {\r\n return (\r\n !!suggestions &&\r\n suggestions.length > 0 &&\r\n suggestions.every(\r\n (suggestion) => suggestion !== undefined && \"value\" in suggestion && suggestion.value !== undefined,\r\n )\r\n );\r\n}\r\n\r\n@Component({\r\n tag: \"dso-autosuggest\",\r\n styleUrl: \"autosuggest.scss\",\r\n scoped: true,\r\n})\r\nexport class Autosuggest {\r\n /**\r\n * The suggestions for the value of the slotted input element.\r\n *\r\n * This can be an array of type Suggestion or an Array of type SuggestionGroup.\r\n *\r\n * A suggestionGroup must have a `groupLabel` and `suggestions`.\r\n *\r\n * A suggestion must have a `value` and can have a `type`, an `item` or `extras`.\r\n *\r\n * The `type` is used to style the suggestion. `item` can be use to reference the original object that was used to\r\n * create the suggestion. `extras` is an array of additional strings to further specify the suggestion.\r\n *\r\n * The value should be null when no suggestions have been fetched.\r\n */\r\n @Prop()\r\n readonly suggestions: Suggestion[] | SuggestionGroup[] | null = null;\r\n\r\n /**\r\n * Shows progress indicator when fetching results.\r\n */\r\n @Prop()\r\n loading = false;\r\n\r\n /**\r\n * To override progress indicator's default loading label.\r\n */\r\n @Prop()\r\n loadingLabel?: string = \"Een moment geduld.\";\r\n\r\n /**\r\n * To delay progress indicator showing (in ms).\r\n */\r\n @Prop()\r\n loadingDelayed?: number;\r\n\r\n /**\r\n * To show text when no results are found.\r\n */\r\n @Prop()\r\n notFoundLabel?: string;\r\n\r\n /**\r\n * Whether the previous suggestions will be presented when the input gets focus again.\r\n */\r\n @Prop()\r\n suggestOnFocus = false;\r\n\r\n /**\r\n * A function provided by the consumer of the autosuggest component, that returns an array of `AutosuggestMarkItem`s\r\n */\r\n @Prop()\r\n mark?: AutosuggestMarkFunction;\r\n\r\n /**\r\n * Emitted when a suggestion is selected.\r\n * The `detail` property of the `CustomEvent` will contain the selected suggestion.\r\n */\r\n @Event()\r\n dsoSelect!: EventEmitter<Suggestion>;\r\n\r\n /**\r\n * This is emitted debounced for every change for the slotted input type=text element.\r\n */\r\n @Event()\r\n dsoChange!: EventEmitter<string>;\r\n\r\n /**\r\n * Emitted when enter is pressed.\r\n * The `detail` property of the `CustomEvent` will contain the input text.\r\n */\r\n @Event()\r\n dsoSearch!: EventEmitter<string>;\r\n\r\n @Element()\r\n host!: HTMLDsoAutosuggestElement;\r\n\r\n @State()\r\n showSuggestions = false;\r\n\r\n @State()\r\n selectedSuggestion: Suggestion | undefined;\r\n\r\n @State()\r\n selectedSuggestionGroup: SuggestionGroup | undefined;\r\n\r\n @State()\r\n notFound = false;\r\n\r\n @State()\r\n showLoading = false;\r\n\r\n @State()\r\n listItemBlockSize = 0;\r\n\r\n @State()\r\n listboxContainerMaxBlockSize = 0;\r\n\r\n @Watch(\"suggestions\")\r\n suggestionsWatcher() {\r\n this.resetSelectedSuggestion();\r\n\r\n if ((!this.showSuggestions || !this.notFound) && this.inputValue) {\r\n this.openSuggestions();\r\n } else if ((this.showSuggestions || this.notFound) && !this.inputValue) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n private input?: HTMLInputElement;\r\n\r\n private listboxContainer: HTMLDsoScrollableElement | undefined;\r\n\r\n private listbox: HTMLDivElement | undefined;\r\n\r\n private listboxItems: HTMLDivElement[] = [];\r\n\r\n private listboxId: string = v4();\r\n\r\n private inputId: string = v4();\r\n\r\n private labelId: string = v4();\r\n\r\n private resizeObserver = new ResizeObserver(debounce(() => this.setListboxContainerMaxBlockSize(), 150));\r\n\r\n private debouncedEmitValue = debounce((value: string) => {\r\n this.dsoChange.emit(value);\r\n this.debouncedShowLoading();\r\n }, 200);\r\n\r\n private debouncedShowLoading = debounce(() => {\r\n if (this.inputValue) {\r\n this.showLoading = true;\r\n }\r\n }, this.loadingDelayed);\r\n\r\n private inputValue = \"\";\r\n\r\n private onInput = (event: Event) => {\r\n if (!(event.target instanceof HTMLInputElement)) {\r\n return;\r\n // throw new Error(\"event.target is not instanceof HTMLInputElement\"); #2293\r\n }\r\n\r\n this.showLoading = !this.loadingDelayed;\r\n this.inputValue = event.target.value;\r\n this.debouncedEmitValue(event.target.value.match(/(\\S+)/g) ? event.target.value : \"\");\r\n };\r\n\r\n private onFocusIn = () => {\r\n if (this.suggestOnFocus) {\r\n this.openSuggestions();\r\n }\r\n };\r\n\r\n @Listen(\"click\", { target: \"document\" })\r\n onDocumentClick(event: MouseEvent) {\r\n if (\r\n (this.showSuggestions || this.notFound) &&\r\n this.listbox &&\r\n event.target instanceof Node &&\r\n !this.listbox.contains(event.target) &&\r\n this.input !== event.target\r\n ) {\r\n this.closeSuggestions();\r\n }\r\n }\r\n\r\n private text = i18n(() => this.host, translations);\r\n\r\n componentDidRender() {\r\n this.setListboxContainerMaxBlockSize();\r\n }\r\n\r\n connectedCallback() {\r\n setTimeout(() => {\r\n const input = this.host.querySelector('input[type=\"text\"]');\r\n if (!(input instanceof HTMLInputElement)) {\r\n return;\r\n // throw new ReferenceError(\"Mandatory text input not found\"); #2293\r\n }\r\n\r\n this.input = input;\r\n if (input.id) {\r\n this.inputId = input.id;\r\n } else {\r\n input.id = this.inputId;\r\n }\r\n\r\n if (!this.input.labels || this.input.labels.length < 1) {\r\n return;\r\n // throw new ReferenceError(\"Mandatory label for text input not found\"); #2293\r\n }\r\n\r\n const label = this.input.labels[0];\r\n if (label?.id) {\r\n this.labelId = label.id;\r\n } else if (label) {\r\n label.id = this.labelId;\r\n }\r\n\r\n this.input.setAttribute(\"role\", \"combobox\");\r\n this.input.setAttribute(\"aria-haspopup\", \"listbox\");\r\n this.input.setAttribute(\"aria-expanded\", \"false\");\r\n this.input.setAttribute(\"autocomplete\", \"off\");\r\n this.input.setAttribute(\"aria-autocomplete\", \"list\");\r\n this.input.setAttribute(\"aria-activedescendant\", \"\");\r\n this.input.addEventListener(\"input\", this.onInput);\r\n this.input.addEventListener(\"keydown\", this.onKeyDown);\r\n this.input.addEventListener(\"focusin\", this.onFocusIn);\r\n\r\n window.addEventListener(\"resize\", this.onWindowResize);\r\n\r\n document.addEventListener(\"scrollend\", this.onScrollend);\r\n\r\n this.resizeObserver.observe(this.host);\r\n\r\n this.setListboxContainerMaxBlockSize();\r\n });\r\n }\r\n\r\n disconnectedCallback() {\r\n this.input?.removeEventListener(\"input\", this.onInput);\r\n this.input?.removeEventListener(\"keydown\", this.onKeyDown);\r\n this.input?.removeEventListener(\"focusin\", this.onFocusIn);\r\n\r\n window.removeEventListener(\"resize\", this.onWindowResize);\r\n\r\n document.removeEventListener(\"scrollend\", this.onScrollend);\r\n\r\n this.resizeObserver.disconnect();\r\n }\r\n\r\n private onWindowResize = debounce(() => this.setListboxContainerMaxBlockSize(), 150);\r\n\r\n private onScrollend = () => this.setListboxContainerMaxBlockSize();\r\n\r\n private setListboxContainerMaxBlockSize(): void {\r\n if (!this.listboxContainer || !this.showSuggestions) {\r\n return;\r\n }\r\n\r\n if (this.listboxItems[0] && this.showSuggestions) {\r\n this.listItemBlockSize = this.listboxItems[0].getBoundingClientRect().height;\r\n }\r\n\r\n const availableBlockSize = window.innerHeight - this.host.getBoundingClientRect().bottom;\r\n const listboxMaxBlockSize =\r\n this.listItemBlockSize * maxSuggestionsViewable + 2 * listboxPaddingBlock + 2 * listboxBorderWidth;\r\n\r\n if (availableBlockSize > this.listItemBlockSize) {\r\n if (availableBlockSize < listboxMaxBlockSize) {\r\n this.listboxContainerMaxBlockSize = availableBlockSize - 2 * listboxPaddingBlock;\r\n } else {\r\n this.listboxContainerMaxBlockSize = listboxMaxBlockSize;\r\n }\r\n }\r\n }\r\n\r\n private showInputValueNotFound(text?: string) {\r\n return this.processAutosuggestMarkItems(this.markTerms(this.input?.value.split(\" \").filter((t) => t) ?? [], text));\r\n }\r\n\r\n private handleMark(\r\n suggestion: Suggestion,\r\n text: string,\r\n type?: \"value\" | \"type\" | \"extra\",\r\n extraIndex?: number,\r\n ): (VNode | string)[] {\r\n if (this.mark && type) {\r\n return this.processAutosuggestMarkItems(this.mark(suggestion, text, type, extraIndex));\r\n }\r\n return this.processAutosuggestMarkItems(this.markTerms(this.input?.value.split(\" \").filter((t) => t) ?? [], text));\r\n }\r\n\r\n private markTerms(terms: string[], suggestionValue?: string): AutosuggestMarkItem[] {\r\n if (!suggestionValue || !terms || terms.length === 0 || terms[0] === undefined) {\r\n return [\"\"];\r\n }\r\n\r\n const termRegex = new RegExp(`(${escapeStringRegexp(terms[0])})`, \"gi\");\r\n\r\n return suggestionValue.split(termRegex).reduce((total: AutosuggestMarkItem[], valuePart: string) => {\r\n if (!valuePart) {\r\n total.push(valuePart);\r\n } else if (termRegex.test(valuePart)) {\r\n total.push({ mark: valuePart });\r\n } else if (terms.length === 1) {\r\n total.push(valuePart);\r\n } else {\r\n total.push(...this.markTerms(terms.slice(1), valuePart));\r\n }\r\n\r\n return total;\r\n }, []);\r\n }\r\n\r\n private processAutosuggestMarkItems(items: AutosuggestMarkItem[]): (VNode | string)[] {\r\n if (items.length === 0) {\r\n return [\"\"];\r\n }\r\n\r\n return items.map((item) => {\r\n if (typeof item === \"object\") {\r\n return <mark>{item.mark}</mark>;\r\n }\r\n return item;\r\n });\r\n }\r\n\r\n private selectSuggestion(suggestion: Suggestion, group?: SuggestionGroup) {\r\n this.selectedSuggestion = suggestion;\r\n this.selectedSuggestionGroup = group;\r\n\r\n this.setAriaActiveDescendant();\r\n }\r\n\r\n private selectFirstSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n if (isGrouped(this.suggestions) && this.selectedSuggestionGroup) {\r\n this.selectedSuggestion = this.selectedSuggestionGroup.suggestions[0];\r\n } else {\r\n if (isFlat(this.suggestions)) {\r\n this.selectedSuggestion = this.suggestions[0];\r\n }\r\n }\r\n\r\n this.setAriaActiveDescendant(true);\r\n }\r\n\r\n private selectLastSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n if (isGrouped(this.suggestions) && this.selectedSuggestionGroup) {\r\n this.selectedSuggestion =\r\n this.selectedSuggestionGroup.suggestions[this.selectedSuggestionGroup.suggestions.length - 1];\r\n } else {\r\n if (isFlat(this.suggestions)) {\r\n this.selectedSuggestion = this.suggestions[this.suggestions.length - 1];\r\n }\r\n }\r\n this.setAriaActiveDescendant(true);\r\n }\r\n\r\n private selectNextSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n if (isGrouped(this.suggestions)) {\r\n this.selectNextGroupedSuggestion();\r\n } else {\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : -1;\r\n\r\n this.selectedSuggestion = this.suggestions[index + 1] ?? this.suggestions[0];\r\n }\r\n\r\n this.setAriaActiveDescendant(true);\r\n }\r\n\r\n private selectNextGroupedSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n if (this.selectedSuggestionGroup) {\r\n const indexInGroup = this.selectedSuggestion\r\n ? this.selectedSuggestionGroup.suggestions.indexOf(this.selectedSuggestion)\r\n : -1;\r\n\r\n if (indexInGroup === this.selectedSuggestionGroup.suggestions.length - 1) {\r\n // Move to first suggestion in next or first group\r\n const groupIndex = this.suggestionGroups.indexOf(this.selectedSuggestionGroup);\r\n this.selectedSuggestionGroup = this.suggestionGroups[groupIndex + 1] ?? this.suggestionGroups[0];\r\n this.selectedSuggestion = this.selectedSuggestionGroup!.suggestions[0];\r\n } else {\r\n // Within this group\r\n this.selectedSuggestion = this.selectedSuggestionGroup.suggestions[indexInGroup + 1];\r\n }\r\n } else {\r\n this.selectedSuggestionGroup = this.suggestionGroups[0];\r\n this.selectedSuggestion = this.selectedSuggestionGroup!.suggestions[0];\r\n }\r\n }\r\n\r\n private selectPreviousSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n if (isGrouped(this.suggestions)) {\r\n this.selectPreviousGroupedSuggestion();\r\n } else {\r\n const index = this.selectedSuggestion ? this.suggestions.indexOf(this.selectedSuggestion) : 0;\r\n\r\n this.selectedSuggestion = this.suggestions[index - 1] ?? this.suggestions[this.suggestions.length - 1];\r\n }\r\n\r\n this.setAriaActiveDescendant(true);\r\n }\r\n\r\n private selectPreviousGroupedSuggestion() {\r\n if (!this.suggestions) {\r\n return;\r\n }\r\n\r\n if (this.selectedSuggestionGroup) {\r\n const indexInGroup = this.selectedSuggestion\r\n ? this.selectedSuggestionGroup.suggestions.indexOf(this.selectedSuggestion)\r\n : -1;\r\n\r\n if (indexInGroup === 0) {\r\n // Move to last suggestion in previous or last group\r\n const groupIndex = this.suggestionGroups.indexOf(this.selectedSuggestionGroup);\r\n\r\n this.selectedSuggestionGroup =\r\n this.suggestionGroups[groupIndex - 1] ?? this.suggestionGroups[this.suggestions.length - 1];\r\n this.selectedSuggestion =\r\n this.selectedSuggestionGroup!.suggestions[this.selectedSuggestionGroup!.suggestions.length - 1];\r\n } else {\r\n // Within this group\r\n this.selectedSuggestion = this.selectedSuggestionGroup.suggestions[indexInGroup - 1];\r\n }\r\n } else {\r\n this.selectedSuggestionGroup = this.suggestionGroups[this.suggestions.length - 1];\r\n this.selectedSuggestion =\r\n this.selectedSuggestionGroup!.suggestions[this.selectedSuggestionGroup!.suggestions.length - 1];\r\n }\r\n }\r\n\r\n private get suggestionGroups(): SuggestionGroup[] {\r\n return isGrouped(this.suggestions) ? this.suggestions : [];\r\n }\r\n\r\n private setAriaActiveDescendant(scroll = false): void {\r\n if (this.selectedSuggestion) {\r\n const id = this.selectedSuggestionGroup\r\n ? this.listboxGroupedItemId(this.selectedSuggestionGroup, this.selectedSuggestion)\r\n : this.listboxItemId(this.selectedSuggestion);\r\n this.input?.setAttribute(\"aria-activedescendant\", id);\r\n if (scroll) {\r\n document.getElementById(id)?.scrollIntoView({ block: \"nearest\" });\r\n }\r\n }\r\n }\r\n\r\n private resetSelectedSuggestion() {\r\n this.showLoading = !this.loadingDelayed;\r\n this.notFound = false;\r\n this.selectedSuggestion = undefined;\r\n this.selectedSuggestionGroup = undefined;\r\n this.input?.setAttribute(\"aria-activedescendant\", \"\");\r\n }\r\n\r\n private openSuggestions(selectSuggestion?: \"first\" | \"last\") {\r\n this.showSuggestions = (this.suggestions && this.suggestions.length > 0) ?? false;\r\n this.notFound = (this.suggestions && this.suggestions?.length === 0) ?? false;\r\n this.input?.setAttribute(\"aria-expanded\", (this.showSuggestions || this.notFound).toString());\r\n\r\n if (this.showSuggestions && selectSuggestion === \"first\") {\r\n this.selectFirstSuggestion();\r\n } else if (this.showSuggestions && selectSuggestion === \"last\") {\r\n this.selectLastSuggestion();\r\n }\r\n }\r\n\r\n private closeSuggestions() {\r\n this.showSuggestions = false;\r\n this.notFound = false;\r\n this.input?.setAttribute(\"aria-expanded\", \"false\");\r\n this.selectFirstSuggestion();\r\n }\r\n\r\n private pickSelectedValue() {\r\n if (this.selectedSuggestion && this.showSuggestions) {\r\n this.dsoSelect.emit(this.selectedSuggestion);\r\n } else {\r\n this.dsoSearch.emit(this.input?.value);\r\n }\r\n\r\n this.closeSuggestions();\r\n }\r\n\r\n private onKeyDown = (event: KeyboardEvent) => {\r\n if (event.defaultPrevented || this.loading) {\r\n return;\r\n }\r\n\r\n switch (event.key) {\r\n case \"ArrowDown\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"first\");\r\n } else {\r\n this.selectNextSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"ArrowUp\":\r\n if (!this.showSuggestions) {\r\n this.openSuggestions(\"last\");\r\n } else {\r\n this.selectPreviousSuggestion();\r\n }\r\n\r\n break;\r\n\r\n case \"Tab\":\r\n this.closeSuggestions();\r\n return;\r\n\r\n case \"Escape\":\r\n this.closeSuggestions();\r\n break;\r\n\r\n case \"Enter\":\r\n this.pickSelectedValue();\r\n break;\r\n\r\n default:\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n };\r\n\r\n private listboxItemId(suggestion: Suggestion): string {\r\n if (!this.suggestions) {\r\n return \"\";\r\n }\r\n return `${this.inputId}-${isFlat(this.suggestions) && this.suggestions.indexOf(suggestion) + 1}`;\r\n }\r\n\r\n private listboxGroupedItemId(suggestionGroup: SuggestionGroup, suggestion: Suggestion): string {\r\n if (!this.suggestions) {\r\n return \"\";\r\n }\r\n\r\n return `${this.inputId}-${this.suggestionGroups.indexOf(suggestionGroup) + 1}-${suggestionGroup.suggestions.indexOf(suggestion) + 1}`;\r\n }\r\n\r\n private getMarkedChunkedExtras(extras: string[], suggestion: Suggestion): (string | VNode)[][][] {\r\n const chunkedExtras = extras.reduce((resultArray: string[][], extra, index) => {\r\n const chunkIndex = Math.floor(index / 2);\r\n\r\n if (!resultArray[chunkIndex]) {\r\n resultArray[chunkIndex] = [];\r\n }\r\n resultArray[chunkIndex]?.push(extra);\r\n return resultArray;\r\n }, []);\r\n\r\n return chunkedExtras.map((chunk, index) =>\r\n chunk.map((c, i) => this.handleMark(suggestion, c, \"extra\", index * 2 + i)),\r\n );\r\n }\r\n\r\n private getMarkedSuggestions(suggestion: Suggestion): MarkedSuggestion {\r\n return {\r\n value: this.handleMark(suggestion, suggestion.value, \"value\"),\r\n type: suggestion.type ? this.handleMark(suggestion, suggestion.type, \"type\") : undefined,\r\n extras: suggestion.extras ? this.getMarkedChunkedExtras(suggestion.extras, suggestion) : undefined,\r\n };\r\n }\r\n\r\n render() {\r\n this.listboxItems = [];\r\n\r\n const showListbox = this.showSuggestions || this.notFound;\r\n\r\n const grouped = isGrouped(this.suggestions);\r\n const flat = isFlat(this.suggestions);\r\n\r\n if (showListbox && this.input) {\r\n this.input.setAttribute(\"aria-controls\", this.listboxId);\r\n } else if (this.input) {\r\n this.input.removeAttribute(\"aria-controls\");\r\n }\r\n\r\n return (\r\n <>\r\n <slot />\r\n {this.loading && this.showLoading ? (\r\n <div class=\"autosuggest-progress-box\">\r\n <dso-progress-indicator label={this.loadingLabel}></dso-progress-indicator>\r\n </div>\r\n ) : (\r\n showListbox && (\r\n <dso-scrollable\r\n class=\"listbox-container\"\r\n ref={(element) => (this.listboxContainer = element)}\r\n style={{ \"--max-block-size\": `${this.listboxContainerMaxBlockSize}px` }}\r\n >\r\n <div\r\n class=\"listbox\"\r\n role=\"listbox\"\r\n aria-live=\"polite\"\r\n id={this.listboxId}\r\n aria-labelledby={this.labelId}\r\n ref={(element) => (this.listbox = element)}\r\n tabindex=\"0\"\r\n >\r\n {(flat &&\r\n this.showSuggestions &&\r\n this.suggestions &&\r\n this.suggestions.map((suggestion) => (\r\n <Option\r\n id={this.listboxItemId(suggestion)}\r\n mouseEnter={() => this.selectSuggestion(suggestion)}\r\n mouseLeave={() => this.resetSelectedSuggestion()}\r\n click={() => this.pickSelectedValue()}\r\n selected={(suggestion === this.selectedSuggestion).toString()}\r\n suggestion={suggestion}\r\n ref={(element) => element && this.listboxItems.push(element)}\r\n markedSuggestion={this.getMarkedSuggestions(suggestion)}\r\n />\r\n ))) ||\r\n (grouped &&\r\n this.showSuggestions &&\r\n this.suggestions &&\r\n this.suggestions.map((suggestionGroup) => {\r\n const groupLabelId = v4();\r\n return (\r\n <div role=\"group\" class=\"group\" aria-labelledby={groupLabelId}>\r\n <div class=\"group-label\" role=\"presentation\" id={groupLabelId}>\r\n {suggestionGroup.groupLabel}\r\n </div>\r\n {suggestionGroup.suggestions.map((suggestion) => (\r\n <Option\r\n id={this.listboxGroupedItemId(suggestionGroup, suggestion)}\r\n mouseEnter={() => this.selectSuggestion(suggestion, suggestionGroup)}\r\n mouseLeave={() => this.resetSelectedSuggestion()}\r\n click={() => this.pickSelectedValue()}\r\n selected={(suggestion === this.selectedSuggestion).toString()}\r\n suggestion={suggestion}\r\n ref={(element) => element && this.listboxItems.push(element)}\r\n markedSuggestion={this.getMarkedSuggestions(suggestion)}\r\n />\r\n ))}\r\n </div>\r\n );\r\n })) ||\r\n (this.notFound && (\r\n <div class=\"option\">\r\n <span class=\"value\">\r\n {this.notFoundLabel ||\r\n this.showInputValueNotFound(this.text(\"notFound\", { inputValue: this.inputValue }))}\r\n </span>\r\n </div>\r\n ))}\r\n </div>\r\n </dso-scrollable>\r\n )\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n"],"version":3}