@dso-toolkit/core 69.0.0 → 69.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/dso-accordion-section.cjs.entry.js +2 -2
- package/dist/cjs/dso-accordion-section.cjs.entry.js.map +1 -1
- package/dist/cjs/dso-alert_6.cjs.entry.js +14 -1
- package/dist/cjs/dso-alert_6.cjs.entry.js.map +1 -1
- package/dist/cjs/dso-annotation-locatie_2.cjs.entry.js +1 -1
- package/dist/cjs/dso-annotation-locatie_2.cjs.entry.js.map +1 -1
- package/dist/cjs/dso-autosuggest.cjs.entry.js +149 -20
- package/dist/cjs/dso-autosuggest.cjs.entry.js.map +1 -1
- package/dist/cjs/dso-label_3.cjs.entry.js +37 -9
- package/dist/cjs/dso-label_3.cjs.entry.js.map +1 -1
- package/dist/cjs/dso-pagination.cjs.entry.js +39 -26
- package/dist/cjs/dso-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/dso-scrollable.cjs.entry.js +5 -2
- package/dist/cjs/dso-scrollable.cjs.entry.js.map +1 -1
- package/dist/cjs/dso-survey-rating.cjs.entry.js +1 -1
- package/dist/cjs/dso-survey-rating.cjs.entry.js.map +1 -1
- package/dist/cjs/dso-toolkit.cjs.js +1 -1
- package/dist/cjs/dso-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/dso-tooltip.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/accordion/components/accordion-section.js +4 -4
- package/dist/collection/components/accordion/components/accordion-section.js.map +1 -1
- package/dist/collection/components/autosuggest/autosuggest.css +23 -11
- package/dist/collection/components/autosuggest/autosuggest.interfaces.js.map +1 -1
- package/dist/collection/components/autosuggest/autosuggest.js +158 -23
- package/dist/collection/components/autosuggest/autosuggest.js.map +1 -1
- package/dist/collection/components/document-component/document-component.css +2 -2
- package/dist/collection/components/ozon-content/nodes/abbr.node.js +11 -0
- package/dist/collection/components/ozon-content/nodes/abbr.node.js.map +1 -0
- package/dist/collection/components/ozon-content/ozon-content-mapper.js +2 -0
- package/dist/collection/components/ozon-content/ozon-content-mapper.js.map +1 -1
- package/dist/collection/components/ozon-content/ozon-content.css +4 -0
- package/dist/collection/components/pagination/pagination.js +39 -26
- package/dist/collection/components/pagination/pagination.js.map +1 -1
- package/dist/collection/components/renvooi/renvooi-render-text.js +17 -0
- package/dist/collection/components/renvooi/renvooi-render-text.js.map +1 -0
- package/dist/collection/components/renvooi/renvooi-render.js +16 -0
- package/dist/collection/components/renvooi/renvooi-render.js.map +1 -0
- package/dist/collection/components/renvooi/renvooi.css +10 -0
- package/dist/collection/components/renvooi/renvooi.interfaces.js.map +1 -1
- package/dist/collection/components/renvooi/renvooi.js +54 -14
- package/dist/collection/components/renvooi/renvooi.js.map +1 -1
- package/dist/collection/components/scrollable/scrollable.js +5 -2
- package/dist/collection/components/scrollable/scrollable.js.map +1 -1
- package/dist/collection/components/survey-rating/survey-rating.css +3 -1
- package/dist/collection/components/tooltip/tooltip.css +3 -5
- package/dist/components/document-component.js +1 -1
- package/dist/components/document-component.js.map +1 -1
- package/dist/components/dso-accordion-section.js +2 -2
- package/dist/components/dso-accordion-section.js.map +1 -1
- package/dist/components/dso-autosuggest.js +150 -20
- package/dist/components/dso-autosuggest.js.map +1 -1
- package/dist/components/dso-pagination.js +39 -26
- package/dist/components/dso-pagination.js.map +1 -1
- package/dist/components/dso-survey-rating.js +1 -1
- package/dist/components/dso-survey-rating.js.map +1 -1
- package/dist/components/ozon-content.js +14 -1
- package/dist/components/ozon-content.js.map +1 -1
- package/dist/components/renvooi.js +39 -10
- package/dist/components/renvooi.js.map +1 -1
- package/dist/components/scrollable.js +5 -2
- package/dist/components/scrollable.js.map +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/components/tooltip.js.map +1 -1
- package/dist/dso-toolkit/dso-toolkit.esm.js +1 -1
- package/dist/dso-toolkit/dso-toolkit.esm.js.map +1 -1
- package/dist/dso-toolkit/{p-1746cde9.entry.js → p-0c7615c1.entry.js} +2 -2
- package/dist/dso-toolkit/p-0c7615c1.entry.js.map +1 -0
- package/dist/dso-toolkit/p-1c72e7eb.entry.js +2 -0
- package/dist/dso-toolkit/p-1c72e7eb.entry.js.map +1 -0
- package/dist/dso-toolkit/p-3efc1929.entry.js +2 -0
- package/dist/dso-toolkit/p-3efc1929.entry.js.map +1 -0
- package/dist/dso-toolkit/{p-631af6b1.entry.js → p-732b261f.entry.js} +2 -2
- package/dist/dso-toolkit/p-732b261f.entry.js.map +1 -0
- package/dist/dso-toolkit/{p-d51d44f7.entry.js → p-743f5beb.entry.js} +2 -2
- package/dist/dso-toolkit/p-743f5beb.entry.js.map +1 -0
- package/dist/dso-toolkit/p-7949fc70.entry.js +2 -0
- package/dist/dso-toolkit/p-7949fc70.entry.js.map +1 -0
- package/dist/dso-toolkit/p-a811a886.entry.js +2 -0
- package/dist/dso-toolkit/p-a811a886.entry.js.map +1 -0
- package/dist/dso-toolkit/p-e26460b5.entry.js +2 -0
- package/dist/dso-toolkit/p-e26460b5.entry.js.map +1 -0
- package/dist/dso-toolkit/p-eeca54c6.entry.js +2 -0
- package/dist/dso-toolkit/p-eeca54c6.entry.js.map +1 -0
- package/dist/esm/dso-accordion-section.entry.js +2 -2
- package/dist/esm/dso-accordion-section.entry.js.map +1 -1
- package/dist/esm/dso-alert_6.entry.js +14 -1
- package/dist/esm/dso-alert_6.entry.js.map +1 -1
- package/dist/esm/dso-annotation-locatie_2.entry.js +1 -1
- package/dist/esm/dso-annotation-locatie_2.entry.js.map +1 -1
- package/dist/esm/dso-autosuggest.entry.js +149 -20
- package/dist/esm/dso-autosuggest.entry.js.map +1 -1
- package/dist/esm/dso-label_3.entry.js +37 -9
- package/dist/esm/dso-label_3.entry.js.map +1 -1
- package/dist/esm/dso-pagination.entry.js +39 -26
- package/dist/esm/dso-pagination.entry.js.map +1 -1
- package/dist/esm/dso-scrollable.entry.js +5 -2
- package/dist/esm/dso-scrollable.entry.js.map +1 -1
- package/dist/esm/dso-survey-rating.entry.js +1 -1
- package/dist/esm/dso-survey-rating.entry.js.map +1 -1
- package/dist/esm/dso-toolkit.js +1 -1
- package/dist/esm/dso-tooltip.entry.js +1 -1
- package/dist/esm/dso-tooltip.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/accordion/components/accordion-section.d.ts +1 -1
- package/dist/types/components/autosuggest/autosuggest.d.ts +18 -7
- package/dist/types/components/autosuggest/autosuggest.interfaces.d.ts +10 -0
- package/dist/types/components/ozon-content/nodes/abbr.node.d.ts +6 -0
- package/dist/types/components/pagination/pagination.d.ts +2 -0
- package/dist/types/components/renvooi/renvooi-render-text.d.ts +9 -0
- package/dist/types/components/renvooi/renvooi-render.d.ts +9 -0
- package/dist/types/components/renvooi/renvooi.d.ts +11 -2
- package/dist/types/components/renvooi/renvooi.interfaces.d.ts +12 -0
- package/dist/types/components.d.ts +37 -10
- package/package.json +3 -3
- package/dist/dso-toolkit/p-135bf595.entry.js +0 -2
- package/dist/dso-toolkit/p-135bf595.entry.js.map +0 -1
- package/dist/dso-toolkit/p-1746cde9.entry.js.map +0 -1
- package/dist/dso-toolkit/p-32f26545.entry.js +0 -2
- package/dist/dso-toolkit/p-32f26545.entry.js.map +0 -1
- package/dist/dso-toolkit/p-4549dc10.entry.js +0 -2
- package/dist/dso-toolkit/p-4549dc10.entry.js.map +0 -1
- package/dist/dso-toolkit/p-631af6b1.entry.js.map +0 -1
- package/dist/dso-toolkit/p-beaa587d.entry.js +0 -2
- package/dist/dso-toolkit/p-beaa587d.entry.js.map +0 -1
- package/dist/dso-toolkit/p-d51d44f7.entry.js.map +0 -1
- package/dist/dso-toolkit/p-da7f089a.entry.js +0 -2
- package/dist/dso-toolkit/p-da7f089a.entry.js.map +0 -1
- package/dist/dso-toolkit/p-fd989862.entry.js +0 -2
- package/dist/dso-toolkit/p-fd989862.entry.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as e,c as o,h as s,F as i,a as l}from"./p-abc59cdf.js";import{c as t}from"./p-8a1a6e56.js";import{d as r}from"./p-16e112f1.js";import{v as d}from"./p-82796232.js";const a=":host{display:inline-block;max-inline-size:100%}*,*::after,*::before{box-sizing:border-box}.sr-only{position:absolute;inline-size:1px;block-size:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.dso-label{border-radius:4px;display:inline-block;line-height:1.5;max-inline-size:100%;padding-block:4px;padding-inline:8px}.dso-label:focus-within,.dso-label.dso-hover{text-decoration:line-through}.dso-label button{background:none;border:0;border-radius:0 4px 4px 0;color:inherit;float:inline-end;font-size:1rem;margin-block-end:-4px;margin-inline-start:8px;margin-inline-end:-4px;margin-block-start:0;padding:0}.dso-label button:hover{cursor:pointer}.dso-label button>dso-icon,.dso-label button>svg.di{display:block}.dso-label{background-color:#f2f2f2;border-color:#f2f2f2;color:#191919}.dso-label.dso-label-info{background-color:#6ca4d9;border-color:#6ca4d9;color:#191919}.dso-label.dso-label-primary{background-color:#275937;border-color:#275937;color:#fff}.dso-label.dso-label-success{background-color:#39870c;border-color:#39870c;color:#fff}.dso-label.dso-label-warning{background-color:#dcd400;border-color:#dcd400;color:#191919}.dso-label.dso-label-danger{background-color:#ce3f51;border-color:#ce3f51;color:#fff}.dso-label.dso-label-error{background-color:#ce3f51;border-color:#ce3f51;color:#fff}.dso-label.dso-label-bright{background-color:#fff;border-color:#fff;color:#191919}.dso-label.dso-label-bright{outline:1px solid #ccc;outline-offset:-1px}.dso-label.dso-label-attention{background-color:#8b4a6a;border-color:#8b4a6a;color:#fff}.dso-label.dso-compact{padding-block:0;padding-inline:8px}.dso-label.dso-hover .dso-label-content{text-decoration:line-through}.dso-truncate.dso-label-content{display:inline-block;max-inline-size:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap}:host([removable]) .dso-truncate.dso-label-content{max-inline-size:calc(100% - 28px)}";const c=a;const n=new ResizeObserver(r((e=>{e.forEach((({target:e})=>{if(b(e)){e._truncateLabel()}}))}),150));function b(e){return e.tagName==="DSO-LABEL"}function f(e){return e.scrollWidth>e.clientWidth}const g=class{constructor(s){e(this,s);this.dsoRemoveClick=o(this,"dsoRemoveClick",7);this.isTruncated=false;this.labelText=""}watchRemovable(e){if(e){this.startMutationObserver()}else{this.stopMutationObserver()}}watchTruncate(e){if(e){this.startTruncate()}else{this.stopTruncate()}}keyDownListener(e){if(e.key==="Escape"){this.textHover=false;this.textFocus=false}}async _truncateLabel(){setTimeout((()=>{this.isTruncated=!!this.labelContent&&f(this.labelContent)}))}syncLabelText(){var e,o;this.labelText=(o=(e=this.host.textContent)===null||e===void 0?void 0:e.trim())!==null&&o!==void 0?o:""}componentDidLoad(){if(this.truncate){this.startTruncate()}if(this.removable){this.startMutationObserver()}}disconnectedCallback(){this.stopTruncate();this.stopMutationObserver(true)}startMutationObserver(){this.mutationObserver=new MutationObserver((()=>this.syncLabelText()));this.mutationObserver.observe(this.host,{characterData:true,childList:true,subtree:true,attributes:true});this.syncLabelText()}stopMutationObserver(e=false){var o;if(e||!(this.truncate&&this.removable)){(o=this.mutationObserver)===null||o===void 0?void 0:o.disconnect();delete this.mutationObserver}}startTruncate(){n.observe(this.host);this.startMutationObserver();this._truncateLabel()}stopTruncate(){n.unobserve(this.host);this.stopMutationObserver();this.isTruncated=false}render(){return s(i,{key:"3bf1a2b10d7cdb37d200dc8435872757f730f7f3"},s("span",{key:"2963be77a7e44f85c07ae9885dd7aaeb4b6a04ae","aria-describedby":"toggle-anchor",class:t("dso-label",{[`dso-label-${this.status}`]:this.status,"dso-compact":this.compact&&!this.removable,"dso-hover":this.removeHover||this.removeFocus})},s("slot",{key:"55b447e4ea124705739d3e65c53b3dcc87b6d8c4",name:"symbol"}),s("span",{key:"48fd3d404c04bcc3c4e69e1ac3e918997959a65c",class:t("dso-label-content",{"dso-truncate":!!this.truncate}),ref:e=>this.labelContent=e,tabindex:this.truncate&&this.isTruncated?0:undefined,onMouseEnter:()=>this.textHover=true,onMouseLeave:()=>this.textHover=false,onFocus:()=>this.textFocus=true,onBlur:()=>this.textFocus=false},s("slot",{key:"ba3e40904693080e4558c9d0d982b8146092ecb2"})),this.removable&&s("button",{key:"6aa571c0e12e356951d1970e8f9afa4189c36fd0",type:"button",onClick:e=>this.dsoRemoveClick.emit(e),onMouseEnter:()=>this.removeHover=true,onMouseLeave:()=>this.removeHover=false,onFocus:()=>this.removeFocus=true,onBlur:()=>this.removeFocus=false},s("span",{key:"4c06e38f4bad11a7208d924f715b0d7b4e3b5382",class:"sr-only"},"Verwijder: ",this.labelText),s("dso-icon",{key:"b549e2c517416cd705778addcc5594a6b2bd8b18",icon:"times"}))),this.isTruncated&&s("dso-tooltip",{key:"6782bb54d4a720f90433ded22edc81badfc6acfb",stateless:true,id:"toggle-anchor",active:this.textHover||this.textFocus,position:"top",strategy:"absolute"},this.labelText))}get host(){return l(this)}static get watchers(){return{removable:["watchRemovable"],truncate:["watchTruncate"]}}};g.style=c;const h='ins{text-decoration:none}ins{--link-color:currentColor;--link-hover-color:currentColor;--link-visited-color:currentColor;background-color:#e4f1d4;border-color:#e4f1d4;color:#191919}ins a:is(.download,.download:hover,.download:focus-visible){background-image:var(--_dso-di-background-image, url("./di.svg#download-zwart"))}ins a:is(.extern,.extern:hover,.extern:focus-visible){background-image:var(--_dso-di-background-image, url("./di.svg#external-link-zwart"))}ins a:is([href^="tel:"],[href^="tel:"]:hover,[href^="tel:"]:focus-visible){background-image:var(--_dso-di-background-image, url("./di.svg#call-zwart"))}ins a:is([href^="mailto:"],[href^="mailto:"]:hover,[href^="mailto:"]:focus-visible){background-image:var(--_dso-di-background-image, url("./di.svg#email-zwart"))}ins{box-shadow:0 1px 3px 1px rgba(0, 0, 0, 0.25)}del{--link-color:currentColor;--link-hover-color:currentColor;--link-visited-color:currentColor;background-color:#f5d8dc;border-color:#f5d8dc;color:#191919}del a:is(.download,.download:hover,.download:focus-visible){background-image:var(--_dso-di-background-image, url("./di.svg#download-zwart"))}del a:is(.extern,.extern:hover,.extern:focus-visible){background-image:var(--_dso-di-background-image, url("./di.svg#external-link-zwart"))}del a:is([href^="tel:"],[href^="tel:"]:hover,[href^="tel:"]:focus-visible){background-image:var(--_dso-di-background-image, url("./di.svg#call-zwart"))}del a:is([href^="mailto:"],[href^="mailto:"]:hover,[href^="mailto:"]:focus-visible){background-image:var(--_dso-di-background-image, url("./di.svg#email-zwart"))}del{text-decoration:line-through}@media screen and (min--moz-device-pixel-ratio: 0){del{font-family:sans-serif}}:host{display:inline}*,*::after,*::before{box-sizing:border-box}.text{text-decoration:var(--_dso-renvooi-text-decoration)}';const u=h;const v=({value:e})=>{if(typeof e==="string"||!e){return s("span",{class:"text"},e)}if("toegevoegd"in e){return s("ins",null,e.toegevoegd)}if("verwijderd"in e){return s("del",null,e.verwijderd)}return s(i,null,s("del",null,e.was),s("ins",null,e.wordt))};const k=class{constructor(o){e(this,o)}get values(){if(!this.value){return[]}return Array.isArray(this.value)?this.value:[this.value]}render(){return s(i,null,this.values.map((e=>s(v,{value:e}))))}};k.style=u;const p=".sc-dso-slide-toggle-h{display:inline-block;padding-block-start:2px}button.dso-slider.sc-dso-slide-toggle{border:0;padding:0}button.dso-slider.sc-dso-slide-toggle:focus-visible{outline:2px solid #323232;outline-offset:1px}button.dso-slider.sc-dso-slide-toggle svg.sc-dso-slide-toggle rect.sc-dso-slide-toggle{fill:#999;transition:fill 0.25s}button.dso-slider.sc-dso-slide-toggle svg.sc-dso-slide-toggle circle.sc-dso-slide-toggle{transition:transform 260ms cubic-bezier(0.4, 0, 0.2, 1);transform:translateX(10px);fill:#fff}button.dso-slider[aria-checked=true].sc-dso-slide-toggle svg.sc-dso-slide-toggle rect.sc-dso-slide-toggle{fill:#275937}button.dso-slider[aria-checked=true].sc-dso-slide-toggle svg.sc-dso-slide-toggle circle.sc-dso-slide-toggle{transform:translateX(30px);fill:#fff}button.dso-slider[disabled].sc-dso-slide-toggle svg.sc-dso-slide-toggle rect.sc-dso-slide-toggle{fill:#ccc}button.dso-slider[disabled].sc-dso-slide-toggle svg.sc-dso-slide-toggle circle.sc-dso-slide-toggle{fill:#e5e5e5}button.dso-slider[disabled][aria-checked=true].sc-dso-slide-toggle svg.sc-dso-slide-toggle rect.sc-dso-slide-toggle{fill:#a8bcaf}button.dso-slider[disabled][aria-checked=true].sc-dso-slide-toggle svg.sc-dso-slide-toggle circle.sc-dso-slide-toggle{fill:#e5e5e5}.dso-slider.sc-dso-slide-toggle{border-radius:24px;display:inline-flex}.dso-slider.sc-dso-slide-toggle:hover{cursor:pointer}";const m=p;const x=class{constructor(s){e(this,s);this.dsoActiveChange=o(this,"dsoActiveChange",5);this.checked=false;this.disabled=false;this.identifier=d()}handleSwitch(e){this.dsoActiveChange.emit({originalEvent:e,checked:!this.checked})}componentWillLoad(){this.hasVisibleLabel=this.host.querySelector("*")!==null}render(){return s(i,null,s("button",Object.assign({key:"5aee4d9968329a8df970a172e481d00aa89f6cfc",id:this.identifier,role:"switch",class:"dso-slider","aria-checked":""+this.checked,disabled:this.disabled,onClick:e=>this.handleSwitch(e)},this.accessibleLabel?{"aria-label":this.accessibleLabel}:{},this.labelledbyId?{"aria-labelledby":this.labelledbyId}:{}),s("svg",{key:"470f2fef216e0b5fc3d450af8285c007a376d1f6",xmlns:"http://www.w3.org/2000/svg",width:"40",height:"20",viewBox:"0 0 40 20"},s("g",{key:"d013d54c54240c42ab7a2fe35cfaf8ff82fbe36d",fill:"none","fill-rule":"evenodd"},s("rect",{key:"abb51b7d6bf57c19945644d93d7f7651c728ec74",width:"40",height:"20",fill:"currentColor",rx:"10"}),s("circle",{key:"b4b6842b0a7acb77de82d79b9932dfaa3e0ae7c4",cy:"10",r:"8",fill:"currentColor"})))),this.hasVisibleLabel&&s("label",{key:"718c01776b005c142c58c3f5a96f956c8cecab5a",htmlFor:this.identifier},s("slot",{key:"398f532a0442e039704f9fcd130eafb33a19b55f"})))}get host(){return l(this)}};x.style=m;export{g as dso_label,k as dso_renvooi,x as dso_slide_toggle};
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
import{r as e,c as o,h as s,F as t,a as i}from"./p-abc59cdf.js";import{c as l}from"./p-8a1a6e56.js";import{d as r}from"./p-16e112f1.js";import{v as d}from"./p-82796232.js";const a=":host{display:inline-block;max-inline-size:100%}*,*::after,*::before{box-sizing:border-box}.sr-only{position:absolute;inline-size:1px;block-size:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.dso-label{border-radius:4px;display:inline-block;line-height:1.5;max-inline-size:100%;padding-block:4px;padding-inline:8px}.dso-label:focus-within,.dso-label.dso-hover{text-decoration:line-through}.dso-label button{background:none;border:0;border-radius:0 4px 4px 0;color:inherit;float:inline-end;font-size:1rem;margin-block-end:-4px;margin-inline-start:8px;margin-inline-end:-4px;margin-block-start:0;padding:0}.dso-label button:hover{cursor:pointer}.dso-label button>dso-icon,.dso-label button>svg.di{display:block}.dso-label{background-color:#f2f2f2;border-color:#f2f2f2;color:#191919}.dso-label.dso-label-info{background-color:#6ca4d9;border-color:#6ca4d9;color:#191919}.dso-label.dso-label-primary{background-color:#275937;border-color:#275937;color:#fff}.dso-label.dso-label-success{background-color:#39870c;border-color:#39870c;color:#fff}.dso-label.dso-label-warning{background-color:#dcd400;border-color:#dcd400;color:#191919}.dso-label.dso-label-danger{background-color:#ce3f51;border-color:#ce3f51;color:#fff}.dso-label.dso-label-error{background-color:#ce3f51;border-color:#ce3f51;color:#fff}.dso-label.dso-label-bright{background-color:#fff;border-color:#fff;color:#191919}.dso-label.dso-label-bright{outline:1px solid #ccc;outline-offset:-1px}.dso-label.dso-label-attention{background-color:#8b4a6a;border-color:#8b4a6a;color:#fff}.dso-label.dso-compact{padding-block:0;padding-inline:8px}.dso-label.dso-hover .dso-label-content{text-decoration:line-through}.dso-truncate.dso-label-content{display:inline-block;max-inline-size:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap}:host([removable]) .dso-truncate.dso-label-content{max-inline-size:calc(100% - 28px)}";const n=a;const c=new ResizeObserver(r((e=>{e.forEach((({target:e})=>{if(b(e)){e._truncateLabel()}}))}),150));function b(e){return e.tagName==="DSO-LABEL"}function h(e){return e.scrollWidth>e.clientWidth}const g=class{constructor(s){e(this,s);this.dsoRemoveClick=o(this,"dsoRemoveClick",7);this.isTruncated=false;this.labelText=""}watchRemovable(e){if(e){this.startMutationObserver()}else{this.stopMutationObserver()}}watchTruncate(e){if(e){this.startTruncate()}else{this.stopTruncate()}}keyDownListener(e){if(e.key==="Escape"){this.textHover=false;this.textFocus=false}}async _truncateLabel(){setTimeout((()=>{this.isTruncated=!!this.labelContent&&h(this.labelContent)}))}syncLabelText(){var e,o;this.labelText=(o=(e=this.host.textContent)===null||e===void 0?void 0:e.trim())!==null&&o!==void 0?o:""}componentDidLoad(){if(this.truncate){this.startTruncate()}if(this.removable){this.startMutationObserver()}}disconnectedCallback(){this.stopTruncate();this.stopMutationObserver(true)}startMutationObserver(){this.mutationObserver=new MutationObserver((()=>this.syncLabelText()));this.mutationObserver.observe(this.host,{characterData:true,childList:true,subtree:true,attributes:true});this.syncLabelText()}stopMutationObserver(e=false){var o;if(e||!(this.truncate&&this.removable)){(o=this.mutationObserver)===null||o===void 0?void 0:o.disconnect();delete this.mutationObserver}}startTruncate(){c.observe(this.host);this.startMutationObserver();this._truncateLabel()}stopTruncate(){c.unobserve(this.host);this.stopMutationObserver();this.isTruncated=false}render(){return s(t,{key:"3bf1a2b10d7cdb37d200dc8435872757f730f7f3"},s("span",{key:"2963be77a7e44f85c07ae9885dd7aaeb4b6a04ae","aria-describedby":"toggle-anchor",class:l("dso-label",{[`dso-label-${this.status}`]:this.status,"dso-compact":this.compact&&!this.removable,"dso-hover":this.removeHover||this.removeFocus})},s("slot",{key:"55b447e4ea124705739d3e65c53b3dcc87b6d8c4",name:"symbol"}),s("span",{key:"48fd3d404c04bcc3c4e69e1ac3e918997959a65c",class:l("dso-label-content",{"dso-truncate":!!this.truncate}),ref:e=>this.labelContent=e,tabindex:this.truncate&&this.isTruncated?0:undefined,onMouseEnter:()=>this.textHover=true,onMouseLeave:()=>this.textHover=false,onFocus:()=>this.textFocus=true,onBlur:()=>this.textFocus=false},s("slot",{key:"ba3e40904693080e4558c9d0d982b8146092ecb2"})),this.removable&&s("button",{key:"6aa571c0e12e356951d1970e8f9afa4189c36fd0",type:"button",onClick:e=>this.dsoRemoveClick.emit(e),onMouseEnter:()=>this.removeHover=true,onMouseLeave:()=>this.removeHover=false,onFocus:()=>this.removeFocus=true,onBlur:()=>this.removeFocus=false},s("span",{key:"4c06e38f4bad11a7208d924f715b0d7b4e3b5382",class:"sr-only"},"Verwijder: ",this.labelText),s("dso-icon",{key:"b549e2c517416cd705778addcc5594a6b2bd8b18",icon:"times"}))),this.isTruncated&&s("dso-tooltip",{key:"6782bb54d4a720f90433ded22edc81badfc6acfb",stateless:true,id:"toggle-anchor",active:this.textHover||this.textFocus,position:"top",strategy:"absolute"},this.labelText))}get host(){return i(this)}static get watchers(){return{removable:["watchRemovable"],truncate:["watchTruncate"]}}};g.style=n;const f=({text:e,mark:o,onMarkItemHighlight:i})=>{if(!o){return s(t,null,e)}const l=o(e);if(!l){return s(t,null,e)}return s(t,null,l.map((e=>{if(typeof e==="string"){return s(t,null,e)}return s("mark",{class:e.highlight?"dso-highlight":undefined,ref:o=>e.highlight&&o&&i(e.text,o)},e.text)})))};const u=({value:e,mark:o,onMarkItemHighlight:i})=>{if(typeof e==="string"||!e){return s("span",{class:"text"},s(f,{text:e,mark:o,onMarkItemHighlight:i}))}if("toegevoegd"in e){return s("ins",null,s(f,{text:e.toegevoegd,mark:o,onMarkItemHighlight:i}))}if("verwijderd"in e){return s("del",null,s(f,{text:e.verwijderd,mark:o,onMarkItemHighlight:i}))}return s(t,null,s("del",null,s(f,{text:e.was,mark:o,onMarkItemHighlight:i})),s("ins",null,s(f,{text:e.wordt,mark:o,onMarkItemHighlight:i})))};const k='ins{text-decoration:none}ins{--link-color:currentColor;--link-hover-color:currentColor;--link-visited-color:currentColor;background-color:#e4f1d4;border-color:#e4f1d4;color:#191919}ins a:is(.download,.download:hover,.download:focus-visible){background-image:var(--_dso-di-background-image, url("./di.svg#download-zwart"))}ins a:is(.extern,.extern:hover,.extern:focus-visible){background-image:var(--_dso-di-background-image, url("./di.svg#external-link-zwart"))}ins a:is([href^="tel:"],[href^="tel:"]:hover,[href^="tel:"]:focus-visible){background-image:var(--_dso-di-background-image, url("./di.svg#call-zwart"))}ins a:is([href^="mailto:"],[href^="mailto:"]:hover,[href^="mailto:"]:focus-visible){background-image:var(--_dso-di-background-image, url("./di.svg#email-zwart"))}ins{box-shadow:0 1px 3px 1px rgba(0, 0, 0, 0.25)}del{--link-color:currentColor;--link-hover-color:currentColor;--link-visited-color:currentColor;background-color:#f5d8dc;border-color:#f5d8dc;color:#191919}del a:is(.download,.download:hover,.download:focus-visible){background-image:var(--_dso-di-background-image, url("./di.svg#download-zwart"))}del a:is(.extern,.extern:hover,.extern:focus-visible){background-image:var(--_dso-di-background-image, url("./di.svg#external-link-zwart"))}del a:is([href^="tel:"],[href^="tel:"]:hover,[href^="tel:"]:focus-visible){background-image:var(--_dso-di-background-image, url("./di.svg#call-zwart"))}del a:is([href^="mailto:"],[href^="mailto:"]:hover,[href^="mailto:"]:focus-visible){background-image:var(--_dso-di-background-image, url("./di.svg#email-zwart"))}del{text-decoration:line-through}@media screen and (min--moz-device-pixel-ratio: 0){del{font-family:sans-serif}}mark{background-color:var(--_dt-mark-bg-color, #f8f5ce);color:var(--_dt-mark-color, #000);padding-block:var(--_dt-mark-padding-block, 0.2rem);font-weight:var(--_dt-mark-font-weight, normal)}mark.dso-highlight{background-color:#dbd136}:host{display:inline}*,*::after,*::before{box-sizing:border-box}.text{text-decoration:var(--_dso-renvooi-text-decoration)}';const v=k;const m=class{constructor(s){e(this,s);this.dsoRenvooiMarkItemHighlight=o(this,"dsoRenvooiMarkItemHighlight",3);this.handleMarkItemHighlight=(e,o)=>{this.dsoRenvooiMarkItemHighlight.emit({text:e,elementRef:o})}}get values(){if(!this.value){return[]}return Array.isArray(this.value)?this.value:[this.value]}render(){return s(t,null,this.values.map((e=>s(u,{value:e,mark:this.mark&&(o=>{var s;return(s=this.mark)===null||s===void 0?void 0:s.call(this,o,e,this.values)}),onMarkItemHighlight:this.handleMarkItemHighlight}))))}};m.style=v;const p=".sc-dso-slide-toggle-h{display:inline-block;padding-block-start:2px}button.dso-slider.sc-dso-slide-toggle{border:0;padding:0}button.dso-slider.sc-dso-slide-toggle:focus-visible{outline:2px solid #323232;outline-offset:1px}button.dso-slider.sc-dso-slide-toggle svg.sc-dso-slide-toggle rect.sc-dso-slide-toggle{fill:#999;transition:fill 0.25s}button.dso-slider.sc-dso-slide-toggle svg.sc-dso-slide-toggle circle.sc-dso-slide-toggle{transition:transform 260ms cubic-bezier(0.4, 0, 0.2, 1);transform:translateX(10px);fill:#fff}button.dso-slider[aria-checked=true].sc-dso-slide-toggle svg.sc-dso-slide-toggle rect.sc-dso-slide-toggle{fill:#275937}button.dso-slider[aria-checked=true].sc-dso-slide-toggle svg.sc-dso-slide-toggle circle.sc-dso-slide-toggle{transform:translateX(30px);fill:#fff}button.dso-slider[disabled].sc-dso-slide-toggle svg.sc-dso-slide-toggle rect.sc-dso-slide-toggle{fill:#ccc}button.dso-slider[disabled].sc-dso-slide-toggle svg.sc-dso-slide-toggle circle.sc-dso-slide-toggle{fill:#e5e5e5}button.dso-slider[disabled][aria-checked=true].sc-dso-slide-toggle svg.sc-dso-slide-toggle rect.sc-dso-slide-toggle{fill:#a8bcaf}button.dso-slider[disabled][aria-checked=true].sc-dso-slide-toggle svg.sc-dso-slide-toggle circle.sc-dso-slide-toggle{fill:#e5e5e5}.dso-slider.sc-dso-slide-toggle{border-radius:24px;display:inline-flex}.dso-slider.sc-dso-slide-toggle:hover{cursor:pointer}";const x=p;const w=class{constructor(s){e(this,s);this.dsoActiveChange=o(this,"dsoActiveChange",5);this.checked=false;this.disabled=false;this.identifier=d()}handleSwitch(e){this.dsoActiveChange.emit({originalEvent:e,checked:!this.checked})}componentWillLoad(){this.hasVisibleLabel=this.host.querySelector("*")!==null}render(){return s(t,null,s("button",Object.assign({key:"5aee4d9968329a8df970a172e481d00aa89f6cfc",id:this.identifier,role:"switch",class:"dso-slider","aria-checked":""+this.checked,disabled:this.disabled,onClick:e=>this.handleSwitch(e)},this.accessibleLabel?{"aria-label":this.accessibleLabel}:{},this.labelledbyId?{"aria-labelledby":this.labelledbyId}:{}),s("svg",{key:"470f2fef216e0b5fc3d450af8285c007a376d1f6",xmlns:"http://www.w3.org/2000/svg",width:"40",height:"20",viewBox:"0 0 40 20"},s("g",{key:"d013d54c54240c42ab7a2fe35cfaf8ff82fbe36d",fill:"none","fill-rule":"evenodd"},s("rect",{key:"abb51b7d6bf57c19945644d93d7f7651c728ec74",width:"40",height:"20",fill:"currentColor",rx:"10"}),s("circle",{key:"b4b6842b0a7acb77de82d79b9932dfaa3e0ae7c4",cy:"10",r:"8",fill:"currentColor"})))),this.hasVisibleLabel&&s("label",{key:"718c01776b005c142c58c3f5a96f956c8cecab5a",htmlFor:this.identifier},s("slot",{key:"398f532a0442e039704f9fcd130eafb33a19b55f"})))}get host(){return i(this)}};w.style=x;export{g as dso_label,m as dso_renvooi,w as dso_slide_toggle};
|
|
2
|
+
//# sourceMappingURL=p-743f5beb.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["labelCss","DsoLabelStyle0","resizeObserver","ResizeObserver","debounce","entries","forEach","target","isDsoLabelComponent","_truncateLabel","element","tagName","hasEllipses","el","scrollWidth","clientWidth","Label","constructor","hostRef","this","isTruncated","labelText","watchRemovable","removable","startMutationObserver","stopMutationObserver","watchTruncate","truncate","startTruncate","stopTruncate","keyDownListener","event","key","textHover","textFocus","setTimeout","labelContent","syncLabelText","_b","_a","host","textContent","trim","componentDidLoad","disconnectedCallback","mutationObserver","MutationObserver","observe","characterData","childList","subtree","attributes","force","disconnect","unobserve","render","h","Fragment","class","clsx","status","compact","removeHover","removeFocus","name","ref","tabindex","undefined","onMouseEnter","onMouseLeave","onFocus","onBlur","type","onClick","e","dsoRemoveClick","emit","icon","stateless","id","active","position","strategy","RenvooiRenderText","text","mark","onMarkItemHighlight","result","map","renvooiText","highlight","RenvooiRender","value","toegevoegd","verwijderd","was","wordt","renvooiCss","DsoRenvooiStyle0","Renvooi","handleMarkItemHighlight","elementRef","dsoRenvooiMarkItemHighlight","values","Array","isArray","v","call","slideToggleCss","DsoSlideToggleStyle0","SlideToggle","checked","disabled","identifier","v4","handleSwitch","dsoActiveChange","originalEvent","componentWillLoad","hasVisibleLabel","querySelector","Object","assign","role","accessibleLabel","labelledbyId","xmlns","width","height","viewBox","fill","rx","cy","r","htmlFor"],"sources":["src/components/label/label.scss?tag=dso-label&encapsulation=shadow","src/components/label/label.tsx","src/components/renvooi/renvooi-render-text.tsx","src/components/renvooi/renvooi-render.tsx","src/components/renvooi/renvooi.scss?tag=dso-renvooi&encapsulation=shadow","src/components/renvooi/renvooi.tsx","src/components/slide-toggle/slide-toggle.scss?tag=dso-slide-toggle&encapsulation=scoped","src/components/slide-toggle/slide-toggle.tsx"],"sourcesContent":["@use \"~dso-toolkit/src/utilities\";\r\n@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/components/label\";\r\n\r\n:host {\r\n display: inline-block;\r\n max-inline-size: 100%;\r\n}\r\n\r\n@include utilities.box-sizing();\r\n\r\n// Todo: Replace .sr-only selector with web component specific selector, no need for .sr-only if we can generate the SCSS\r\n.sr-only {\r\n @include utilities.sr-only();\r\n}\r\n\r\n.dso-label {\r\n @include label.root();\r\n\r\n &.dso-hover {\r\n .dso-label-content {\r\n text-decoration: line-through;\r\n }\r\n }\r\n}\r\n\r\n.dso-truncate.dso-label-content {\r\n display: inline-block;\r\n max-inline-size: 100%;\r\n overflow: hidden;\r\n text-overflow: ellipsis; // stylelint-disable-line declaration-property-value-disallowed-list -- full text can be viewed via tooltip.\r\n vertical-align: bottom;\r\n white-space: nowrap; // stylelint-disable-line declaration-property-value-disallowed-list -- full text can be viewed via tooltip.\r\n}\r\n\r\n:host([removable]) {\r\n .dso-truncate.dso-label-content {\r\n max-inline-size: calc(100% - (units.$u3 + 4px));\r\n }\r\n}\r\n","import {\r\n h,\r\n Component,\r\n ComponentInterface,\r\n Element,\r\n Event,\r\n EventEmitter,\r\n Fragment,\r\n Method,\r\n Prop,\r\n State,\r\n Watch,\r\n Listen,\r\n} from \"@stencil/core\";\r\nimport clsx from \"clsx\";\r\nimport debounce from \"debounce\";\r\nimport { LabelStatus } from \"./label.interfaces\";\r\n\r\nconst resizeObserver = new ResizeObserver(\r\n debounce((entries: ResizeObserverEntry[]) => {\r\n entries.forEach(({ target }) => {\r\n if (isDsoLabelComponent(target)) {\r\n target._truncateLabel();\r\n }\r\n });\r\n }, 150),\r\n);\r\n\r\nfunction isDsoLabelComponent(element: Element): element is HTMLDsoLabelElement {\r\n return element.tagName === \"DSO-LABEL\";\r\n}\r\n\r\nfunction hasEllipses(el: HTMLElement): boolean {\r\n return el.scrollWidth > el.clientWidth;\r\n}\r\n\r\n@Component({\r\n tag: \"dso-label\",\r\n styleUrl: \"label.scss\",\r\n shadow: true,\r\n})\r\nexport class Label implements ComponentInterface {\r\n private labelContent: HTMLSpanElement | undefined;\r\n\r\n private mutationObserver?: MutationObserver;\r\n\r\n @Element()\r\n private host!: HTMLDsoLabelElement;\r\n\r\n /**\r\n * For compact Label\r\n */\r\n @Prop()\r\n compact?: boolean;\r\n\r\n /**\r\n * Shows a button that can be used to remove the Label.\r\n */\r\n @Prop({ reflect: true })\r\n removable?: boolean;\r\n\r\n /**\r\n * The status of this Label.\r\n */\r\n @Prop()\r\n status?: LabelStatus;\r\n\r\n /**\r\n * Emitted when the user activates the remove button.\r\n */\r\n @Event()\r\n dsoRemoveClick!: EventEmitter<MouseEvent>;\r\n\r\n @State()\r\n removeHover?: boolean;\r\n\r\n @State()\r\n removeFocus?: boolean;\r\n\r\n /**\r\n * Whether the Label is allowed to truncate the contents if it does not fit the container element.\r\n */\r\n @Prop()\r\n truncate?: boolean;\r\n\r\n @State()\r\n textHover?: boolean;\r\n\r\n @State()\r\n textFocus?: boolean;\r\n\r\n @State()\r\n isTruncated = false;\r\n\r\n @State()\r\n labelText = \"\";\r\n\r\n @Watch(\"removable\")\r\n watchRemovable(removable: boolean) {\r\n if (removable) {\r\n this.startMutationObserver();\r\n } else {\r\n this.stopMutationObserver();\r\n }\r\n }\r\n\r\n @Watch(\"truncate\")\r\n watchTruncate(truncate: boolean) {\r\n if (truncate) {\r\n this.startTruncate();\r\n } else {\r\n this.stopTruncate();\r\n }\r\n }\r\n\r\n @Listen(\"keydown\", { target: \"document\" })\r\n keyDownListener(event: KeyboardEvent) {\r\n if (event.key === \"Escape\") {\r\n this.textHover = false;\r\n this.textFocus = false;\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n @Method()\r\n async _truncateLabel() {\r\n setTimeout(() => {\r\n this.isTruncated = !!this.labelContent && hasEllipses(this.labelContent);\r\n });\r\n }\r\n\r\n private syncLabelText() {\r\n this.labelText = this.host.textContent?.trim() ?? \"\";\r\n }\r\n\r\n componentDidLoad() {\r\n if (this.truncate) {\r\n this.startTruncate();\r\n }\r\n\r\n if (this.removable) {\r\n this.startMutationObserver();\r\n }\r\n }\r\n\r\n disconnectedCallback() {\r\n this.stopTruncate();\r\n\r\n this.stopMutationObserver(true);\r\n }\r\n\r\n /** The mutationObserver fetches the text placed inside the label, this is then used for the remove button and tooltip. */\r\n private startMutationObserver(): void {\r\n this.mutationObserver = new MutationObserver(() => this.syncLabelText());\r\n\r\n this.mutationObserver.observe(this.host, {\r\n characterData: true,\r\n childList: true,\r\n subtree: true,\r\n attributes: true,\r\n });\r\n\r\n this.syncLabelText();\r\n }\r\n\r\n private stopMutationObserver(force = false): void {\r\n if (force || !(this.truncate && this.removable)) {\r\n this.mutationObserver?.disconnect();\r\n\r\n delete this.mutationObserver;\r\n }\r\n }\r\n\r\n private startTruncate(): void {\r\n resizeObserver.observe(this.host);\r\n this.startMutationObserver();\r\n this._truncateLabel();\r\n }\r\n\r\n private stopTruncate(): void {\r\n resizeObserver.unobserve(this.host);\r\n this.stopMutationObserver();\r\n this.isTruncated = false;\r\n }\r\n\r\n render() {\r\n return (\r\n <Fragment>\r\n <span\r\n aria-describedby=\"toggle-anchor\"\r\n class={clsx(\"dso-label\", {\r\n [`dso-label-${this.status}`]: this.status,\r\n \"dso-compact\": this.compact && !this.removable,\r\n \"dso-hover\": this.removeHover || this.removeFocus,\r\n })}\r\n >\r\n <slot name=\"symbol\"></slot>\r\n <span\r\n class={clsx(\"dso-label-content\", {\r\n \"dso-truncate\": !!this.truncate,\r\n })}\r\n ref={(element) => (this.labelContent = element)}\r\n tabindex={this.truncate && this.isTruncated ? 0 : undefined}\r\n onMouseEnter={() => (this.textHover = true)}\r\n onMouseLeave={() => (this.textHover = false)}\r\n onFocus={() => (this.textFocus = true)}\r\n onBlur={() => (this.textFocus = false)}\r\n >\r\n <slot></slot>\r\n </span>\r\n {this.removable && (\r\n <button\r\n type=\"button\"\r\n onClick={(e) => this.dsoRemoveClick.emit(e)}\r\n onMouseEnter={() => (this.removeHover = true)}\r\n onMouseLeave={() => (this.removeHover = false)}\r\n onFocus={() => (this.removeFocus = true)}\r\n onBlur={() => (this.removeFocus = false)}\r\n >\r\n <span class=\"sr-only\">Verwijder: {this.labelText}</span>\r\n <dso-icon icon=\"times\"></dso-icon>\r\n </button>\r\n )}\r\n </span>\r\n {this.isTruncated && (\r\n <dso-tooltip\r\n stateless\r\n id=\"toggle-anchor\"\r\n active={this.textHover || this.textFocus}\r\n position=\"top\"\r\n strategy=\"absolute\"\r\n >\r\n {this.labelText}\r\n </dso-tooltip>\r\n )}\r\n </Fragment>\r\n );\r\n }\r\n}\r\n","import { Fragment, FunctionalComponent, h } from \"@stencil/core\";\r\nimport { RenvooiRenderMarkFunction } from \"./renvooi.interfaces\";\r\n\r\ninterface RenvooiRenderTextProps {\r\n text: string;\r\n mark: RenvooiRenderMarkFunction | undefined;\r\n onMarkItemHighlight: (text: string, ref: HTMLElement) => void | undefined;\r\n}\r\n\r\nexport const RenvooiRenderText: FunctionalComponent<RenvooiRenderTextProps> = ({ text, mark, onMarkItemHighlight }) => {\r\n if (!mark) {\r\n return <>{text}</>;\r\n }\r\n\r\n const result = mark(text);\r\n\r\n if (!result) {\r\n return <>{text}</>;\r\n }\r\n\r\n return (\r\n <>\r\n {result.map((renvooiText) => {\r\n if (typeof renvooiText === \"string\") {\r\n return <>{renvooiText}</>;\r\n }\r\n\r\n return (\r\n <mark\r\n class={renvooiText.highlight ? \"dso-highlight\" : undefined}\r\n ref={(ref) => renvooiText.highlight && ref && onMarkItemHighlight(renvooiText.text, ref)}\r\n >\r\n {renvooiText.text}\r\n </mark>\r\n );\r\n })}\r\n </>\r\n );\r\n};\r\n","import { Fragment, FunctionalComponent, h } from \"@stencil/core\";\r\nimport { RenvooiRenderMarkFunction, RenvooiValue } from \"./renvooi.interfaces\";\r\nimport { RenvooiRenderText } from \"./renvooi-render-text\";\r\n\r\ninterface RenvooiRenderProps {\r\n value: RenvooiValue;\r\n mark: RenvooiRenderMarkFunction | undefined;\r\n onMarkItemHighlight: (text: string, elementRef: HTMLElement) => void | undefined;\r\n}\r\n\r\nexport const RenvooiRender: FunctionalComponent<RenvooiRenderProps> = ({ value, mark, onMarkItemHighlight }) => {\r\n if (typeof value === \"string\" || !value) {\r\n // This element is used for --_dso-renvooi-text-decoration\r\n return (\r\n <span class=\"text\">\r\n <RenvooiRenderText text={value} mark={mark} onMarkItemHighlight={onMarkItemHighlight} />\r\n </span>\r\n );\r\n }\r\n\r\n if (\"toegevoegd\" in value) {\r\n return (\r\n <ins>\r\n <RenvooiRenderText text={value.toegevoegd} mark={mark} onMarkItemHighlight={onMarkItemHighlight} />\r\n </ins>\r\n );\r\n }\r\n\r\n if (\"verwijderd\" in value) {\r\n return (\r\n <del>\r\n <RenvooiRenderText text={value.verwijderd} mark={mark} onMarkItemHighlight={onMarkItemHighlight} />\r\n </del>\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n <del>\r\n <RenvooiRenderText text={value.was} mark={mark} onMarkItemHighlight={onMarkItemHighlight} />\r\n </del>\r\n <ins>\r\n <RenvooiRenderText text={value.wordt} mark={mark} onMarkItemHighlight={onMarkItemHighlight} />\r\n </ins>\r\n </>\r\n );\r\n};\r\n","@use \"~dso-toolkit/src/utilities\";\r\n\r\n@use \"~dso-toolkit/src/components/insert/insert\";\r\n@use \"~dso-toolkit/src/components/delete/delete\";\r\n@use \"~dso-toolkit/src/components/mark/mark\";\r\n\r\n:host {\r\n display: inline;\r\n}\r\n\r\n@include utilities.box-sizing();\r\n\r\n.text {\r\n text-decoration: var(--_dso-renvooi-text-decoration);\r\n}\r\n","import { Component, ComponentInterface, Fragment, Prop, h, Event, EventEmitter } from \"@stencil/core\";\r\n\r\nimport { RenvooiMarkFunction, RenvooiMarkItemHighlightEvent, RenvooiValue } from \"./renvooi.interfaces\";\r\nimport { RenvooiRender } from \"./renvooi-render\";\r\n\r\n/**\r\n * Met dit component kan een `RenvooiValue` worden gepresenteerd.\r\n */\r\n@Component({\r\n tag: \"dso-renvooi\",\r\n styleUrl: \"renvooi.scss\",\r\n shadow: true,\r\n})\r\nexport class Renvooi implements ComponentInterface {\r\n /**\r\n * The renvooi value to render.\r\n */\r\n @Prop()\r\n value?: RenvooiValue | RenvooiValue[];\r\n\r\n /**\r\n * To mark text.\r\n */\r\n @Prop()\r\n mark?: RenvooiMarkFunction;\r\n\r\n /**\r\n * Emitted when a marked item is highlighted.\r\n */\r\n @Event({ bubbles: false })\r\n dsoRenvooiMarkItemHighlight!: EventEmitter<RenvooiMarkItemHighlightEvent>;\r\n\r\n get values(): RenvooiValue[] {\r\n if (!this.value) {\r\n return [];\r\n }\r\n\r\n return Array.isArray(this.value) ? this.value : [this.value];\r\n }\r\n\r\n private handleMarkItemHighlight = (text: string, elementRef: HTMLElement) => {\r\n this.dsoRenvooiMarkItemHighlight.emit({ text, elementRef });\r\n };\r\n\r\n render() {\r\n return (\r\n <>\r\n {this.values.map((v) => (\r\n <RenvooiRender\r\n value={v}\r\n mark={this.mark && ((text) => this.mark?.(text, v, this.values))}\r\n onMarkItemHighlight={this.handleMarkItemHighlight}\r\n />\r\n ))}\r\n </>\r\n );\r\n }\r\n}\r\n","@use \"~dso-toolkit/src/utilities\";\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/variables/typography\";\r\n\r\n$slide-toggle-height: 20px;\r\n\r\n:host {\r\n display: inline-block;\r\n padding-block-start: (typography.$line-height-base * typography.$font-size-base - $slide-toggle-height) * 0.5;\r\n}\r\n\r\nbutton.dso-slider {\r\n border: 0;\r\n padding: 0;\r\n\r\n &:focus-visible {\r\n outline: 2px solid colors.$grijs-80;\r\n outline-offset: 1px;\r\n }\r\n\r\n svg {\r\n rect {\r\n fill: colors.$grijs-40;\r\n transition: fill 0.25s;\r\n }\r\n\r\n circle {\r\n @include utilities.transition(transform);\r\n\r\n transform: translateX(10px);\r\n fill: colors.$wit;\r\n }\r\n }\r\n\r\n &[aria-checked=\"true\"] svg {\r\n rect {\r\n fill: colors.$bosgroen;\r\n }\r\n\r\n circle {\r\n transform: translateX(30px);\r\n fill: colors.$wit;\r\n }\r\n }\r\n\r\n &[disabled] svg {\r\n rect {\r\n fill: colors.$grijs-20;\r\n }\r\n\r\n circle {\r\n fill: colors.$grijs-10;\r\n }\r\n }\r\n\r\n &[disabled][aria-checked=\"true\"] svg {\r\n rect {\r\n fill: colors.$bosgroen-40;\r\n }\r\n\r\n circle {\r\n fill: colors.$grijs-10;\r\n }\r\n }\r\n}\r\n\r\n.dso-slider {\r\n border-radius: units.$u3;\r\n display: inline-flex;\r\n\r\n &:hover {\r\n cursor: pointer;\r\n }\r\n}\r\n","import { h, Component, ComponentInterface, Event, Prop, EventEmitter, Element, State, Fragment } from \"@stencil/core\";\r\nimport { v4 } from \"uuid\";\r\nimport { SlideToggleActiveEvent } from \"./slide-toggle.interfaces\";\r\n\r\n@Component({\r\n tag: \"dso-slide-toggle\",\r\n styleUrl: \"slide-toggle.scss\",\r\n scoped: true,\r\n shadow: false,\r\n})\r\nexport class SlideToggle implements ComponentInterface {\r\n @Element()\r\n private host!: HTMLDsoSlideToggleElement;\r\n\r\n /**\r\n * Set to true if Slide Toggle is checked.\r\n */\r\n @Prop()\r\n checked = false;\r\n\r\n /**\r\n * Disables the Slide Toggle, preventing it from checking/unchecking and therefor not emitting any events.\r\n */\r\n @Prop()\r\n disabled = false;\r\n\r\n /**\r\n * When provided the `<button>` will be labelled with `aria-label`. For a visible label provide a `<span>` inside the component.\r\n */\r\n @Prop()\r\n accessibleLabel?: string;\r\n\r\n /**\r\n * Provide the `id` of the element that labels this element. this property sets the `aria-labelledby` on the switch button.\r\n */\r\n @Prop()\r\n labelledbyId?: string;\r\n\r\n @State()\r\n hasVisibleLabel?: boolean;\r\n\r\n /**\r\n * Provide an `id` for the `<button>`. Useful for placing your to place your own `<label for=\"id\">`.\r\n */\r\n @Prop()\r\n identifier = v4();\r\n\r\n /**\r\n * Emitted when user checks or unchecks the Slide Toggle.\r\n */\r\n @Event({ composed: false })\r\n dsoActiveChange!: EventEmitter<SlideToggleActiveEvent>;\r\n\r\n private handleSwitch(e: Event): void {\r\n this.dsoActiveChange.emit({\r\n originalEvent: e,\r\n checked: !this.checked,\r\n });\r\n }\r\n\r\n componentWillLoad(): void {\r\n this.hasVisibleLabel = this.host.querySelector(\"*\") !== null;\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n <button\r\n id={this.identifier}\r\n role=\"switch\"\r\n class=\"dso-slider\"\r\n aria-checked={\"\" + this.checked}\r\n disabled={this.disabled}\r\n onClick={(e) => this.handleSwitch(e)}\r\n {...(this.accessibleLabel ? { \"aria-label\": this.accessibleLabel } : {})}\r\n {...(this.labelledbyId ? { \"aria-labelledby\": this.labelledbyId } : {})}\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"20\" viewBox=\"0 0 40 20\">\r\n <g fill=\"none\" fill-rule=\"evenodd\">\r\n <rect width=\"40\" height=\"20\" fill=\"currentColor\" rx=\"10\" />\r\n <circle cy=\"10\" r=\"8\" fill=\"currentColor\" />\r\n </g>\r\n </svg>\r\n </button>\r\n {this.hasVisibleLabel && (\r\n <label htmlFor={this.identifier}>\r\n <slot />\r\n </label>\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as s,c as t,h as i,F as e,a as o}from"./p-abc59cdf.js";import{d as h}from"./p-16e112f1.js";import{i as n}from"./p-078b7eca.js";import{v as a}from"./p-82796232.js";function r(s){if(typeof s!=="string"){throw new TypeError("Expected a string")}return s.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const u={en:{"dso-autosuggest":{notFound:"{{inputValue}} was not found."}},nl:{"dso-autosuggest":{notFound:"{{inputValue}} is niet gevonden."}}};const l=".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}";const d=l;const c=10;const g=8;const f=1;const p=({id:s,mouseEnter:t,mouseLeave:e,click:o,selected:h,suggestion:n,ref:a,markedSuggestion:r})=>i("div",{class:"option",role:"option",id:s,onMouseEnter:t,onMouseLeave:e,onClick:o,"aria-selected":h,"aria-label":n.value,ref:a},i("div",{class:"suggestion-row"},i("span",{class:"value"},r.value),r.type?i("span",{class:"type"},r.type):undefined),r.extras&&r.extras.map((s=>i("div",{class:"suggestion-row"},s.map((s=>i("span",{class:"extra"},s)))))));function v(s){return!!s&&s.length>0&&s.every((s=>s!==undefined&&"groupLabel"in s&&s.groupLabel!==undefined&&"suggestions"in s&&s.suggestions.length>0))}function b(s){return!!s&&s.length>0&&s.every((s=>s!==undefined&&"value"in s&&s.value!==undefined))}const x=class{constructor(i){s(this,i);this.dsoSelect=t(this,"dsoSelect",7);this.dsoChange=t(this,"dsoChange",7);this.dsoSearch=t(this,"dsoSearch",7);this.suggestions=null;this.loading=false;this.loadingLabel="Een moment geduld.";this.suggestOnFocus=false;this.showSuggestions=false;this.notFound=false;this.showLoading=false;this.listItemBlockSize=0;this.listboxContainerMaxBlockSize=0;this.listboxItems=[];this.listboxId=a();this.inputId=a();this.labelId=a();this.resizeObserver=new ResizeObserver(h((()=>this.setListboxContainerMaxBlockSize()),150));this.debouncedEmitValue=h((s=>{this.dsoChange.emit(s);this.debouncedShowLoading()}),200);this.debouncedShowLoading=h((()=>{if(this.inputValue){this.showLoading=true}}),this.loadingDelayed);this.inputValue="";this.onInput=s=>{if(!(s.target instanceof HTMLInputElement)){return}this.showLoading=!this.loadingDelayed;this.inputValue=s.target.value;this.debouncedEmitValue(s.target.value.match(/(\S+)/g)?s.target.value:"")};this.onFocusIn=()=>{if(this.suggestOnFocus){this.openSuggestions()}};this.text=n((()=>this.host),u);this.onWindowResize=h((()=>this.setListboxContainerMaxBlockSize()),150);this.onScrollend=()=>this.setListboxContainerMaxBlockSize();this.onKeyDown=s=>{if(s.defaultPrevented||this.loading){return}switch(s.key){case"ArrowDown":if(!this.showSuggestions){this.openSuggestions("first")}else{this.selectNextSuggestion()}break;case"ArrowUp":if(!this.showSuggestions){this.openSuggestions("last")}else{this.selectPreviousSuggestion()}break;case"Tab":this.closeSuggestions();return;case"Escape":this.closeSuggestions();break;case"Enter":this.pickSelectedValue();break;default:return}s.preventDefault()}}suggestionsWatcher(){this.resetSelectedSuggestion();if((!this.showSuggestions||!this.notFound)&&this.inputValue){this.openSuggestions()}else if((this.showSuggestions||this.notFound)&&!this.inputValue){this.closeSuggestions()}}onDocumentClick(s){if((this.showSuggestions||this.notFound)&&this.listbox&&s.target instanceof Node&&!this.listbox.contains(s.target)&&this.input!==s.target){this.closeSuggestions()}}componentDidRender(){this.setListboxContainerMaxBlockSize()}connectedCallback(){setTimeout((()=>{const s=this.host.querySelector('input[type="text"]');if(!(s instanceof HTMLInputElement)){return}this.input=s;if(s.id){this.inputId=s.id}else{s.id=this.inputId}if(!this.input.labels||this.input.labels.length<1){return}const t=this.input.labels[0];if(t===null||t===void 0?void 0:t.id){this.labelId=t.id}else if(t){t.id=this.labelId}this.input.setAttribute("role","combobox");this.input.setAttribute("aria-haspopup","listbox");this.input.setAttribute("aria-expanded","false");this.input.setAttribute("autocomplete","off");this.input.setAttribute("aria-autocomplete","list");this.input.setAttribute("aria-activedescendant","");this.input.addEventListener("input",this.onInput);this.input.addEventListener("keydown",this.onKeyDown);this.input.addEventListener("focusin",this.onFocusIn);window.addEventListener("resize",this.onWindowResize);document.addEventListener("scrollend",this.onScrollend);this.resizeObserver.observe(this.host);this.setListboxContainerMaxBlockSize()}))}disconnectedCallback(){var s,t,i;(s=this.input)===null||s===void 0?void 0:s.removeEventListener("input",this.onInput);(t=this.input)===null||t===void 0?void 0:t.removeEventListener("keydown",this.onKeyDown);(i=this.input)===null||i===void 0?void 0:i.removeEventListener("focusin",this.onFocusIn);window.removeEventListener("resize",this.onWindowResize);document.removeEventListener("scrollend",this.onScrollend);this.resizeObserver.disconnect()}setListboxContainerMaxBlockSize(){if(!this.listboxContainer||!this.showSuggestions){return}if(this.listboxItems[0]&&this.showSuggestions){this.listItemBlockSize=this.listboxItems[0].getBoundingClientRect().height}const s=window.innerHeight-this.host.getBoundingClientRect().bottom;const t=this.listItemBlockSize*c+2*g+2*f;if(s>this.listItemBlockSize){if(s<t){this.listboxContainerMaxBlockSize=s-2*g}else{this.listboxContainerMaxBlockSize=t}}}showInputValueNotFound(s){var t,i;return this.processAutosuggestMarkItems(this.markTerms((i=(t=this.input)===null||t===void 0?void 0:t.value.split(" ").filter((s=>s)))!==null&&i!==void 0?i:[],s))}handleMark(s,t,i,e){var o,h;if(this.mark&&i){return this.processAutosuggestMarkItems(this.mark(s,t,i,e))}return this.processAutosuggestMarkItems(this.markTerms((h=(o=this.input)===null||o===void 0?void 0:o.value.split(" ").filter((s=>s)))!==null&&h!==void 0?h:[],t))}markTerms(s,t){if(!t||!s||s.length===0||s[0]===undefined){return[""]}const i=new RegExp(`(${r(s[0])})`,"gi");return t.split(i).reduce(((t,e)=>{if(!e){t.push(e)}else if(i.test(e)){t.push({mark:e})}else if(s.length===1){t.push(e)}else{t.push(...this.markTerms(s.slice(1),e))}return t}),[])}processAutosuggestMarkItems(s){if(s.length===0){return[""]}return s.map((s=>{if(typeof s==="object"){return i("mark",null,s.mark)}return s}))}selectSuggestion(s,t){this.selectedSuggestion=s;this.selectedSuggestionGroup=t;this.setAriaActiveDescendant()}selectFirstSuggestion(){if(!this.suggestions){return}if(v(this.suggestions)&&this.selectedSuggestionGroup){this.selectedSuggestion=this.selectedSuggestionGroup.suggestions[0]}else{if(b(this.suggestions)){this.selectedSuggestion=this.suggestions[0]}}this.setAriaActiveDescendant(true)}selectLastSuggestion(){if(!this.suggestions){return}if(v(this.suggestions)&&this.selectedSuggestionGroup){this.selectedSuggestion=this.selectedSuggestionGroup.suggestions[this.selectedSuggestionGroup.suggestions.length-1]}else{if(b(this.suggestions)){this.selectedSuggestion=this.suggestions[this.suggestions.length-1]}}this.setAriaActiveDescendant(true)}selectNextSuggestion(){var s;if(!this.suggestions){return}if(v(this.suggestions)){this.selectNextGroupedSuggestion()}else{const t=this.selectedSuggestion?this.suggestions.indexOf(this.selectedSuggestion):-1;this.selectedSuggestion=(s=this.suggestions[t+1])!==null&&s!==void 0?s:this.suggestions[0]}this.setAriaActiveDescendant(true)}selectNextGroupedSuggestion(){var s;if(!this.suggestions){return}if(this.selectedSuggestionGroup){const t=this.selectedSuggestion?this.selectedSuggestionGroup.suggestions.indexOf(this.selectedSuggestion):-1;if(t===this.selectedSuggestionGroup.suggestions.length-1){const t=this.suggestionGroups.indexOf(this.selectedSuggestionGroup);this.selectedSuggestionGroup=(s=this.suggestionGroups[t+1])!==null&&s!==void 0?s:this.suggestionGroups[0];this.selectedSuggestion=this.selectedSuggestionGroup.suggestions[0]}else{this.selectedSuggestion=this.selectedSuggestionGroup.suggestions[t+1]}}else{this.selectedSuggestionGroup=this.suggestionGroups[0];this.selectedSuggestion=this.selectedSuggestionGroup.suggestions[0]}}selectPreviousSuggestion(){var s;if(!this.suggestions){return}if(v(this.suggestions)){this.selectPreviousGroupedSuggestion()}else{const t=this.selectedSuggestion?this.suggestions.indexOf(this.selectedSuggestion):0;this.selectedSuggestion=(s=this.suggestions[t-1])!==null&&s!==void 0?s:this.suggestions[this.suggestions.length-1]}this.setAriaActiveDescendant(true)}selectPreviousGroupedSuggestion(){var s;if(!this.suggestions){return}if(this.selectedSuggestionGroup){const t=this.selectedSuggestion?this.selectedSuggestionGroup.suggestions.indexOf(this.selectedSuggestion):-1;if(t===0){const t=this.suggestionGroups.indexOf(this.selectedSuggestionGroup);this.selectedSuggestionGroup=(s=this.suggestionGroups[t-1])!==null&&s!==void 0?s:this.suggestionGroups[this.suggestions.length-1];this.selectedSuggestion=this.selectedSuggestionGroup.suggestions[this.selectedSuggestionGroup.suggestions.length-1]}else{this.selectedSuggestion=this.selectedSuggestionGroup.suggestions[t-1]}}else{this.selectedSuggestionGroup=this.suggestionGroups[this.suggestions.length-1];this.selectedSuggestion=this.selectedSuggestionGroup.suggestions[this.selectedSuggestionGroup.suggestions.length-1]}}get suggestionGroups(){return v(this.suggestions)?this.suggestions:[]}setAriaActiveDescendant(s=false){var t,i;if(this.selectedSuggestion){const e=this.selectedSuggestionGroup?this.listboxGroupedItemId(this.selectedSuggestionGroup,this.selectedSuggestion):this.listboxItemId(this.selectedSuggestion);(t=this.input)===null||t===void 0?void 0:t.setAttribute("aria-activedescendant",e);if(s){(i=document.getElementById(e))===null||i===void 0?void 0:i.scrollIntoView({block:"nearest"})}}}resetSelectedSuggestion(){var s;this.showLoading=!this.loadingDelayed;this.notFound=false;this.selectedSuggestion=undefined;this.selectedSuggestionGroup=undefined;(s=this.input)===null||s===void 0?void 0:s.setAttribute("aria-activedescendant","")}openSuggestions(s){var t,i,e,o;this.showSuggestions=(t=this.suggestions&&this.suggestions.length>0)!==null&&t!==void 0?t:false;this.notFound=(e=this.suggestions&&((i=this.suggestions)===null||i===void 0?void 0:i.length)===0)!==null&&e!==void 0?e:false;(o=this.input)===null||o===void 0?void 0:o.setAttribute("aria-expanded",(this.showSuggestions||this.notFound).toString());if(this.showSuggestions&&s==="first"){this.selectFirstSuggestion()}else if(this.showSuggestions&&s==="last"){this.selectLastSuggestion()}}closeSuggestions(){var s;this.showSuggestions=false;this.notFound=false;(s=this.input)===null||s===void 0?void 0:s.setAttribute("aria-expanded","false");this.selectFirstSuggestion()}pickSelectedValue(){var s;if(this.selectedSuggestion&&this.showSuggestions){this.dsoSelect.emit(this.selectedSuggestion)}else{this.dsoSearch.emit((s=this.input)===null||s===void 0?void 0:s.value)}this.closeSuggestions()}listboxItemId(s){if(!this.suggestions){return""}return`${this.inputId}-${b(this.suggestions)&&this.suggestions.indexOf(s)+1}`}listboxGroupedItemId(s,t){if(!this.suggestions){return""}return`${this.inputId}-${this.suggestionGroups.indexOf(s)+1}-${s.suggestions.indexOf(t)+1}`}getMarkedChunkedExtras(s,t){const i=s.reduce(((s,t,i)=>{var e;const o=Math.floor(i/2);if(!s[o]){s[o]=[]}(e=s[o])===null||e===void 0?void 0:e.push(t);return s}),[]);return i.map(((s,i)=>s.map(((s,e)=>this.handleMark(t,s,"extra",i*2+e)))))}getMarkedSuggestions(s){return{value:this.handleMark(s,s.value,"value"),type:s.type?this.handleMark(s,s.type,"type"):undefined,extras:s.extras?this.getMarkedChunkedExtras(s.extras,s):undefined}}render(){this.listboxItems=[];const s=this.showSuggestions||this.notFound;const t=v(this.suggestions);const o=b(this.suggestions);if(s&&this.input){this.input.setAttribute("aria-controls",this.listboxId)}else if(this.input){this.input.removeAttribute("aria-controls")}return i(e,null,i("slot",{key:"557d829f9238c3fa9f6082beba78381472115ccd"}),this.loading&&this.showLoading?i("div",{class:"autosuggest-progress-box"},i("dso-progress-indicator",{label:this.loadingLabel})):s&&i("dso-scrollable",{class:"listbox-container",ref:s=>this.listboxContainer=s,style:{"--max-block-size":`${this.listboxContainerMaxBlockSize}px`}},i("div",{class:"listbox",role:"listbox","aria-live":"polite",id:this.listboxId,"aria-labelledby":this.labelId,ref:s=>this.listbox=s,tabindex:"0"},o&&this.showSuggestions&&this.suggestions&&this.suggestions.map((s=>i(p,{id:this.listboxItemId(s),mouseEnter:()=>this.selectSuggestion(s),mouseLeave:()=>this.resetSelectedSuggestion(),click:()=>this.pickSelectedValue(),selected:(s===this.selectedSuggestion).toString(),suggestion:s,ref:s=>s&&this.listboxItems.push(s),markedSuggestion:this.getMarkedSuggestions(s)})))||t&&this.showSuggestions&&this.suggestions&&this.suggestions.map((s=>{const t=a();return i("div",{role:"group",class:"group","aria-labelledby":t},i("div",{class:"group-label",role:"presentation",id:t},s.groupLabel),s.suggestions.map((t=>i(p,{id:this.listboxGroupedItemId(s,t),mouseEnter:()=>this.selectSuggestion(t,s),mouseLeave:()=>this.resetSelectedSuggestion(),click:()=>this.pickSelectedValue(),selected:(t===this.selectedSuggestion).toString(),suggestion:t,ref:s=>s&&this.listboxItems.push(s),markedSuggestion:this.getMarkedSuggestions(t)}))))}))||this.notFound&&i("div",{class:"option"},i("span",{class:"value"},this.notFoundLabel||this.showInputValueNotFound(this.text("notFound",{inputValue:this.inputValue})))))))}get host(){return o(this)}static get watchers(){return{suggestions:["suggestionsWatcher"]}}};x.style=d;export{x as dso_autosuggest};
|
|
2
|
+
//# sourceMappingURL=p-7949fc70.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["escapeStringRegexp","string","TypeError","replace","translations","en","notFound","nl","autosuggestCss","DsoAutosuggestStyle0","maxSuggestionsViewable","listboxPaddingBlock","listboxBorderWidth","Option","id","mouseEnter","mouseLeave","click","selected","suggestion","ref","markedSuggestion","h","class","role","onMouseEnter","onMouseLeave","onClick","value","type","undefined","extras","map","markedChunk","extra","isGrouped","suggestions","length","every","groupLabel","isFlat","Autosuggest","constructor","hostRef","this","loading","loadingLabel","suggestOnFocus","showSuggestions","showLoading","listItemBlockSize","listboxContainerMaxBlockSize","listboxItems","listboxId","v4","inputId","labelId","resizeObserver","ResizeObserver","debounce","setListboxContainerMaxBlockSize","debouncedEmitValue","dsoChange","emit","debouncedShowLoading","inputValue","loadingDelayed","onInput","event","target","HTMLInputElement","match","onFocusIn","openSuggestions","text","i18n","host","onWindowResize","onScrollend","onKeyDown","defaultPrevented","key","selectNextSuggestion","selectPreviousSuggestion","closeSuggestions","pickSelectedValue","preventDefault","suggestionsWatcher","resetSelectedSuggestion","onDocumentClick","listbox","Node","contains","input","componentDidRender","connectedCallback","setTimeout","querySelector","labels","label","setAttribute","addEventListener","window","document","observe","disconnectedCallback","_a","removeEventListener","_b","_c","disconnect","listboxContainer","getBoundingClientRect","height","availableBlockSize","innerHeight","bottom","listboxMaxBlockSize","showInputValueNotFound","processAutosuggestMarkItems","markTerms","split","filter","t","handleMark","extraIndex","mark","terms","suggestionValue","termRegex","RegExp","reduce","total","valuePart","push","test","slice","items","item","selectSuggestion","group","selectedSuggestion","selectedSuggestionGroup","setAriaActiveDescendant","selectFirstSuggestion","selectLastSuggestion","selectNextGroupedSuggestion","index","indexOf","indexInGroup","groupIndex","suggestionGroups","selectPreviousGroupedSuggestion","scroll","listboxGroupedItemId","listboxItemId","getElementById","scrollIntoView","block","_d","toString","dsoSelect","dsoSearch","suggestionGroup","getMarkedChunkedExtras","chunkedExtras","resultArray","chunkIndex","Math","floor","chunk","c","i","getMarkedSuggestions","render","showListbox","grouped","flat","removeAttribute","Fragment","element","style","tabindex","groupLabelId","notFoundLabel"],"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"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as t,h as i,H as e,a as o}from"./p-abc59cdf.js";import{d as n,h as r,c as a,b as s}from"./p-202d2cdf.js";import{c as l}from"./p-8a1a6e56.js";import{d}from"./p-16e112f1.js";var p={name:"maxSize",enabled:true,phase:"main",requiresIfExists:["offset","preventOverflow","flip"],fn:function t(i){var e=i.state,o=i.name,r=i.options;var a=n(e,r);var s=e.modifiersData.preventOverflow||{x:0,y:0},l=s.x,d=s.y;var p=e.rects.popper,h=p.width,c=p.height;var f=e.placement.split("-"),b=f[0];var m=b==="left"?"left":"right";var u=b==="top"?"top":"bottom";e.modifiersData[o]={width:h-a[m]-l,height:c-a[u]-d}}};const h=":host(.hidden){visibility:hidden}*,*::after,*::before{box-sizing:border-box}.tooltip{font-family:Asap, sans-serif;font-style:normal;font-weight:400;line-height:1.5;line-break:auto;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:break-word;word-spacing:normal;word-wrap:normal;white-space:normal;--link-color:#39870c;display:block;filter:drop-shadow(0 2px 8px rgba(0, 0, 0, 0.4));font-size:14px;opacity:0;position:absolute;transition:opacity 0.15s linear;z-index:410}.tooltip.in{opacity:1}.tooltip.in .tooltip-inner{max-block-size:200vh;overflow:auto;visibility:visible;padding-block:8px;padding-inline:16px}.tooltip:not(.in) .tooltip-inner{max-block-size:0;overflow:hidden;visibility:hidden;transition:all 0s linear 0.15s}.tooltip .tooltip-inner{background-color:#fff;border-radius:4px;color:#191919;display:inline-block;font-size:1rem;max-inline-size:640px;position:relative}.tooltip .tooltip-inner.dso-small{max-inline-size:320px}.tooltip .tooltip-arrow{border-color:transparent;border-style:solid;block-size:0;inline-size:0}.tooltip[data-popper-placement=top]{margin-block-start:-3px;padding-inline:0}.tooltip[data-popper-placement=top] .tooltip-arrow{inset-block-end:0;border-block-start-color:#fff;border-width:6px;border-block-end-width:0;margin-inline-start:var(--tooltip-margin-inline-start, -3px)}.tooltip[data-popper-placement=right]{margin-inline-start:3px;padding-inline-start:6px}.tooltip[data-popper-placement=right] .tooltip-arrow{inset-inline-start:0;border-inline-end-color:#fff;border-width:6px;border-inline-start-width:0;margin-block-start:var(--tooltip-margin-block-start, -3px)}.tooltip[data-popper-placement=bottom]{margin-block-start:3px;padding-block-start:6px;padding-inline:0}.tooltip[data-popper-placement=bottom] .tooltip-arrow{inset-block-start:0;border-block-end-color:#fff;border-width:6px;border-block-start-width:0;margin-inline-start:var(--tooltip-margin-inline-start, -3px)}.tooltip[data-popper-placement=left]{margin-inline-start:-3px;margin-inline-end:var(--tooltip-margin-inline-end, unset);padding-block:0;padding-inline-end:6px}.tooltip[data-popper-placement=left] .tooltip-arrow{inset-inline-end:0;border-inline-start-color:#fff;border-width:6px;border-inline-end-width:0;margin-block-start:var(--tooltip-margin-block-start, -3px)}";const c=h;var f=undefined&&undefined.__classPrivateFieldGet||function(t,i,e,o){if(e==="a"&&!o)throw new TypeError("Private accessor was defined without a getter");if(typeof i==="function"?t!==i||!o:!i.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e==="m"?o:e==="a"?o.call(t):o?o.value:i.get(t)};var b=undefined&&undefined.__classPrivateFieldSet||function(t,i,e,o,n){if(o==="m")throw new TypeError("Private method is not writable");if(o==="a"&&!n)throw new TypeError("Private accessor was defined without a setter");if(typeof i==="function"?t!==i||!n:!i.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return o==="a"?n.call(t,e):n?n.value=e:i.set(t,e),e};var m;const u=150;const v={name:"applyMaxSize",enabled:true,phase:s,requires:["maxSize"],fn({state:t}){let{width:i}=t.modifiersData.maxSize;if(i<160){i=160}t.styles.popper=Object.assign(Object.assign({},t.styles.popper),{maxWidth:`${i}px`})}};const w=class{constructor(i){t(this,i);this.descriptive=false;this.position="top";this.strategy="auto";this.noArrow=false;this.active=false;this.callbacks={activate:()=>this.active=true,deactivate:()=>{setTimeout((()=>{if(this.element.isConnected){this.active=false}}),2)}};this.onMouseLeave=()=>{var t;if(!this.element.matches(":hover")&&!((t=this.target)===null||t===void 0?void 0:t.matches(":hover"))){this.callbacks.deactivate()}};this.hidden=true;this.keyDownListener=t=>{if(t.key==="Escape"){this.deactivate()}};this.deactivatePopper=d((()=>{var t;this.hidden=true;(t=this.popper)===null||t===void 0?void 0:t.destroy();this.popper=undefined}),u);m.set(this,void 0)}async activate(){this.active=true}async deactivate(){this.active=false}watchPosition(){if(!this.popper){return}this.popper.setOptions({placement:this.position})}watchStrategy(){this.setStrategy()}setStrategy(){if(!this.popper){return}if(this.strategy==="absolute"||this.strategy==="fixed"){this.popper.setOptions({strategy:this.strategy});return}let t=this.element;while(t&&t.parentNode!==document){t=t.parentNode instanceof ShadowRoot?t.parentNode.host:t.parentElement;if(t!==null&&r(t)){this.popper.setOptions({strategy:"fixed"});return}}this.popper.setOptions({strategy:"absolute"})}watchActive(){if(this.active){this.activatePopper();if(!this.stateless){setTimeout((()=>{var t;(t=this.popper)===null||t===void 0?void 0:t.setOptions({modifiers:[{name:"eventListeners",enabled:true}]});document.addEventListener("keydown",this.keyDownListener)}))}}else{document.removeEventListener("keydown",this.keyDownListener);this.deactivatePopper()}}listenClick(t){t.stopPropagation()}componentDidLoad(){var t;const i=(t=this.element.shadowRoot)===null||t===void 0?void 0:t.querySelector(".tooltip");if(!(i instanceof HTMLElement)){throw new Error("tooltip element is not instanceof HTMLElement")}if(!this.stateless&&this.target){this.target.addEventListener("mouseenter",this.callbacks.activate);[this.element,this.target].forEach((t=>t.addEventListener("mouseleave",this.onMouseLeave)));this.target.addEventListener("focus",this.callbacks.activate);this.target.addEventListener("blur",this.callbacks.deactivate)}}disconnectedCallback(){var t;(t=this.popper)===null||t===void 0?void 0:t.destroy();if(!this.stateless&&this.target){this.target.removeEventListener("mouseenter",this.callbacks.activate);[this.element,this.target].forEach((t=>t.removeEventListener("mouseleave",this.onMouseLeave)));this.target.removeEventListener("focus",this.callbacks.activate);this.target.removeEventListener("blur",this.callbacks.deactivate)}this.target=undefined}componentDidRender(){var t;if(this.active){(t=this.popper)===null||t===void 0?void 0:t.update()}}render(){return i(e,{key:"937cf3e393747c90908dd40d9f1cd4004972ee14",class:{hidden:this.hidden},role:"tooltip",onClick:this.listenClick},i("div",{key:"ec8d45dfe98721323a129f885c17458c2fce1755",class:l("tooltip",{in:this.active})},!this.noArrow&&i("div",{key:"f41fcdefbcbfbfa6898ae0ac380f40bac2d20fef","data-popper-arrow":true,class:"tooltip-arrow"}),i("div",{key:"9dc5919c76eb4bae36267cb884a8e07ea9b795b8","aria-hidden":!this.descriptive||undefined,class:l("tooltip-inner",{"dso-small":this.small})},i("slot",{key:"3c999ec1a312662dbd287486eb54114638499db9"}))))}activatePopper(){var t;this.hidden=false;if(this.popper){return}const i=(t=this.element.shadowRoot)===null||t===void 0?void 0:t.querySelector(".tooltip");if(this.target&&i instanceof HTMLElement){this.popper=a(this.target,i,{placement:this.position,modifiers:[p,v,{name:"eventListeners",enabled:false}]});this.setStrategy()}}get target(){var t;return(t=f(this,m,"f"))!==null&&t!==void 0?t:this.initializeTarget()}set target(t){b(this,m,t,"f")}initializeTarget(){const t=this.element.id;if(!t){console.warn("Unable to find reference tooltip has no [id] attribute.");return}const i=this.element.getRootNode();if(!(i instanceof Document||i instanceof ShadowRoot)){console.warn(`rootNode is not instance of Document or ShadowRoot`);return}const e=i.querySelector(`[aria-describedBy="${t}`);if(!e){console.warn(`Unable to find reference with aria-describedby ${t}`);return}b(this,m,e,"f");return e}get element(){return o(this)}static get watchers(){return{position:["watchPosition"],strategy:["watchStrategy"],active:["watchActive"]}}};m=new WeakMap;w.style=c;export{w as dso_tooltip};
|
|
2
|
+
//# sourceMappingURL=p-a811a886.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["maxSize","name","enabled","phase","requiresIfExists","fn","_ref","state","options","overflow","detectOverflow","_ref2","modifiersData","preventOverflow","x","y","_state$rects$popper","rects","popper","width","height","_state$placement$spli","placement","split","basePlacement","widthProp","heightProp","tooltipCss","DsoTooltipStyle0","transitionDuration","applyMaxSize","beforeWrite","requires","styles","Object","assign","maxWidth","Tooltip","constructor","hostRef","this","descriptive","position","strategy","noArrow","active","callbacks","activate","deactivate","setTimeout","element","isConnected","onMouseLeave","matches","_a","target","hidden","keyDownListener","event","key","deactivatePopper","debounce","destroy","undefined","_Tooltip_target","set","watchPosition","setOptions","watchStrategy","setStrategy","parentNode","document","ShadowRoot","host","parentElement","hasOverflow","watchActive","activatePopper","stateless","modifiers","addEventListener","removeEventListener","listenClick","e","stopPropagation","componentDidLoad","tooltip","shadowRoot","querySelector","HTMLElement","Error","forEach","disconnectedCallback","componentDidRender","update","render","h","Host","class","role","onClick","clsx","in","small","createPopper","__classPrivateFieldGet","initializeTarget","__classPrivateFieldSet","id","console","warn","rootNode","getRootNode","Document","reference"],"sources":["../../node_modules/popper-max-size-modifier/dist/popper-max-size-modifier.esm.js","src/components/tooltip/tooltip.scss?tag=dso-tooltip&encapsulation=shadow","src/components/tooltip/tooltip.tsx"],"sourcesContent":["import { detectOverflow } from '@popperjs/core';\n\nvar maxSize = {\n name: 'maxSize',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['offset', 'preventOverflow', 'flip'],\n fn: function fn(_ref) {\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var overflow = detectOverflow(state, options);\n\n var _ref2 = state.modifiersData.preventOverflow || {\n x: 0,\n y: 0\n },\n x = _ref2.x,\n y = _ref2.y;\n\n var _state$rects$popper = state.rects.popper,\n width = _state$rects$popper.width,\n height = _state$rects$popper.height;\n\n var _state$placement$spli = state.placement.split('-'),\n basePlacement = _state$placement$spli[0];\n\n var widthProp = basePlacement === 'left' ? 'left' : 'right';\n var heightProp = basePlacement === 'top' ? 'top' : 'bottom';\n state.modifiersData[name] = {\n width: width - overflow[widthProp] - x,\n height: height - overflow[heightProp] - y\n };\n }\n};\n\nexport default maxSize;\n","@use \"~dso-toolkit/src/utilities\";\r\n@use \"~dso-toolkit/src/variables/colors\";\r\n@use \"~dso-toolkit/src/variables/typography\";\r\n@use \"~dso-toolkit/src/variables/units\";\r\n@use \"~dso-toolkit/src/variables/zindex\";\r\n\r\n@use \"tooltip.variables\" as tooltip-variables;\r\n\r\n:host(.hidden) {\r\n visibility: hidden;\r\n}\r\n\r\n@include utilities.box-sizing();\r\n\r\n.tooltip {\r\n font-family: typography.$font-family-base;\r\n // We deliberately do NOT reset font-size.\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: typography.$line-height-base;\r\n line-break: auto;\r\n text-align: start;\r\n text-decoration: none;\r\n text-shadow: none;\r\n text-transform: none;\r\n letter-spacing: normal;\r\n word-break: break-word;\r\n word-spacing: normal;\r\n word-wrap: normal;\r\n white-space: normal;\r\n\r\n --link-color: #{colors.$grasgroen};\r\n display: block;\r\n filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.4));\r\n font-size: typography.$font-size-small;\r\n opacity: 0;\r\n position: absolute;\r\n transition: opacity tooltip-variables.$transition-duration linear;\r\n z-index: zindex.$tooltip;\r\n\r\n &.in {\r\n opacity: tooltip-variables.$opacity;\r\n\r\n .tooltip-inner {\r\n max-block-size: 200vh; // an extreme max-block-size, just to be sure it always fits\r\n overflow: auto;\r\n visibility: visible;\r\n padding-block: tooltip-variables.$padding-block; // set padding-block here to hide the div when the .in class is not active\r\n padding-inline: tooltip-variables.$padding-inline; // set padding-inline here to hide the div when the .in class is not active\r\n }\r\n }\r\n\r\n &:not(.in) {\r\n .tooltip-inner {\r\n max-block-size: 0; // hide the element\r\n overflow: hidden;\r\n visibility: hidden;\r\n transition: all 0s linear tooltip-variables.$transition-duration; // delay all the properties with a 0s linear animation till the parent opacity animation time has passed\r\n }\r\n }\r\n\r\n .tooltip-inner {\r\n background-color: colors.$wit;\r\n border-radius: tooltip-variables.$border-radius;\r\n color: colors.$grijs-90;\r\n display: inline-block;\r\n font-size: typography.$root-font-size-base;\r\n max-inline-size: tooltip-variables.$max-inline-size;\r\n position: relative;\r\n\r\n &.dso-small {\r\n max-inline-size: tooltip-variables.$max-inline-size-small;\r\n }\r\n }\r\n\r\n .tooltip-arrow {\r\n border-color: transparent;\r\n border-style: solid;\r\n block-size: 0;\r\n inline-size: 0;\r\n }\r\n\r\n &[data-popper-placement=\"top\"] {\r\n margin-block-start: -3px;\r\n padding-inline: 0;\r\n\r\n .tooltip-arrow {\r\n inset-block-end: 0;\r\n border-block-start-color: tooltip-variables.$arrow-color;\r\n border-width: tooltip-variables.$arrow-inline-size;\r\n border-block-end-width: 0;\r\n margin-inline-start: var(--tooltip-margin-inline-start, tooltip-variables.$arrow-margin * -1);\r\n }\r\n }\r\n\r\n &[data-popper-placement=\"right\"] {\r\n margin-inline-start: 3px;\r\n padding-inline-start: tooltip-variables.$arrow-inline-size;\r\n\r\n .tooltip-arrow {\r\n inset-inline-start: 0;\r\n border-inline-end-color: tooltip-variables.$arrow-color;\r\n border-width: tooltip-variables.$arrow-inline-size;\r\n border-inline-start-width: 0;\r\n margin-block-start: var(--tooltip-margin-block-start, tooltip-variables.$arrow-margin * -1);\r\n }\r\n }\r\n\r\n &[data-popper-placement=\"bottom\"] {\r\n margin-block-start: 3px;\r\n padding-block-start: tooltip-variables.$arrow-inline-size;\r\n padding-inline: 0;\r\n\r\n .tooltip-arrow {\r\n inset-block-start: 0;\r\n border-block-end-color: tooltip-variables.$arrow-color;\r\n border-width: tooltip-variables.$arrow-inline-size;\r\n border-block-start-width: 0;\r\n margin-inline-start: var(--tooltip-margin-inline-start, tooltip-variables.$arrow-margin * -1);\r\n }\r\n }\r\n\r\n &[data-popper-placement=\"left\"] {\r\n margin-inline-start: -3px;\r\n margin-inline-end: var(--tooltip-margin-inline-end, unset);\r\n padding-block: 0;\r\n padding-inline-end: tooltip-variables.$arrow-inline-size;\r\n\r\n .tooltip-arrow {\r\n inset-inline-end: 0;\r\n border-inline-start-color: tooltip-variables.$arrow-color;\r\n border-width: tooltip-variables.$arrow-inline-size;\r\n border-inline-end-width: 0;\r\n margin-block-start: var(--tooltip-margin-block-start, tooltip-variables.$arrow-margin * -1);\r\n }\r\n }\r\n}\r\n","import { beforeWrite, createPopper, Instance as PopperInstance, Placement, State as PopperState } from \"@popperjs/core\";\r\nimport maxSize from \"popper-max-size-modifier\";\r\nimport { h, Component, Element, Host, Method, Prop, State, Watch, ComponentInterface } from \"@stencil/core\";\r\nimport clsx from \"clsx\";\r\nimport { hasOverflow } from \"../../utils/has-overflow\";\r\nimport debounce from \"debounce\";\r\n\r\n// Keep const in sync with $tooltip-transition-duration in dso-toolkit/src/components/tooltip/tooltip.scss tooltip_root() mixin\r\nconst transitionDuration = 150;\r\n\r\nconst applyMaxSize = {\r\n name: \"applyMaxSize\",\r\n enabled: true,\r\n phase: beforeWrite,\r\n requires: [\"maxSize\"],\r\n fn({ state }: { state: PopperState }) {\r\n let { width } = state.modifiersData.maxSize;\r\n if (width < 160) {\r\n width = 160;\r\n }\r\n\r\n state.styles.popper = {\r\n ...state.styles.popper,\r\n maxWidth: `${width}px`,\r\n };\r\n },\r\n};\r\n\r\n@Component({\r\n tag: \"dso-tooltip\",\r\n styleUrl: \"tooltip.scss\",\r\n shadow: true,\r\n})\r\nexport class Tooltip implements ComponentInterface {\r\n /**\r\n * Defines if the tooltip is descriptive. A descriptive tooltip contains a meaningful message. Tooltips that are not descriptive are hidden from screenreaders using `aria-hidden`.\r\n */\r\n @Prop({\r\n reflect: true,\r\n })\r\n descriptive = false;\r\n\r\n /**\r\n * Set position of tooltip relative to target\r\n */\r\n @Prop()\r\n position: Placement = \"top\";\r\n\r\n /**\r\n * Set position strategy of tooltip\r\n */\r\n @Prop()\r\n strategy: \"auto\" | \"absolute\" | \"fixed\" = \"auto\";\r\n\r\n /**\r\n * Set attribute `no-arrow` to hide the arrow\r\n */\r\n @Prop()\r\n noArrow = false;\r\n\r\n /**\r\n * Deactivates mouseover behaviour\r\n */\r\n @Prop()\r\n stateless?: boolean;\r\n\r\n /**\r\n * Defines if the tooltip has a smaller max-width\r\n */\r\n @Prop()\r\n small?: boolean;\r\n\r\n /**\r\n * Whether or not to show the tooltip. To control the tooltip add the `active` attribute or use the `activate()` and `deactivate()` instance methods.\r\n */\r\n @Prop({ reflect: true, mutable: true })\r\n active = false;\r\n\r\n /**\r\n * Activate the tooltip (Sets the `active` attribute)\r\n */\r\n @Method()\r\n async activate(): Promise<void> {\r\n this.active = true;\r\n }\r\n\r\n /**\r\n * Deactivate the tooltip (Removes the `active` attribute)\r\n */\r\n @Method()\r\n async deactivate(): Promise<void> {\r\n this.active = false;\r\n }\r\n\r\n @Watch(\"position\")\r\n watchPosition() {\r\n if (!this.popper) {\r\n return;\r\n }\r\n\r\n this.popper.setOptions({\r\n placement: this.position,\r\n });\r\n }\r\n\r\n @Watch(\"strategy\")\r\n watchStrategy() {\r\n this.setStrategy();\r\n }\r\n\r\n private setStrategy() {\r\n if (!this.popper) {\r\n return;\r\n }\r\n\r\n if (this.strategy === \"absolute\" || this.strategy === \"fixed\") {\r\n this.popper.setOptions({\r\n strategy: this.strategy,\r\n });\r\n\r\n return;\r\n }\r\n\r\n let element: Element | null = this.element;\r\n while (element && element.parentNode !== document) {\r\n element = element.parentNode instanceof ShadowRoot ? element.parentNode.host : element.parentElement;\r\n if (element !== null && hasOverflow(element)) {\r\n this.popper.setOptions({\r\n strategy: \"fixed\",\r\n });\r\n\r\n return;\r\n }\r\n }\r\n\r\n this.popper.setOptions({\r\n strategy: \"absolute\",\r\n });\r\n }\r\n\r\n @Watch(\"active\")\r\n watchActive() {\r\n if (this.active) {\r\n this.activatePopper();\r\n\r\n if (!this.stateless) {\r\n setTimeout(() => {\r\n this.popper?.setOptions({\r\n modifiers: [{ name: \"eventListeners\", enabled: true }],\r\n });\r\n document.addEventListener(\"keydown\", this.keyDownListener);\r\n });\r\n }\r\n } else {\r\n document.removeEventListener(\"keydown\", this.keyDownListener);\r\n this.deactivatePopper();\r\n }\r\n }\r\n\r\n @Element()\r\n private element!: HTMLDsoTooltipElement;\r\n\r\n private popper: PopperInstance | undefined;\r\n\r\n private callbacks: TooltipCallbacks = {\r\n activate: () => (this.active = true),\r\n deactivate: () => {\r\n // Zie https://github.com/dso-toolkit/dso-toolkit/issues/2997#issuecomment-2654330094 voor de aanleiding\r\n // van setTimeout() met 2ms.\r\n setTimeout(() => {\r\n if (this.element.isConnected) {\r\n this.active = false;\r\n }\r\n }, 2);\r\n },\r\n };\r\n\r\n private onMouseLeave = () => {\r\n if (!this.element.matches(\":hover\") && !this.target?.matches(\":hover\")) {\r\n this.callbacks.deactivate();\r\n }\r\n };\r\n\r\n @State()\r\n private hidden = true;\r\n\r\n private listenClick(e: MouseEvent) {\r\n e.stopPropagation();\r\n }\r\n\r\n componentDidLoad(): void {\r\n const tooltip = this.element.shadowRoot?.querySelector(\".tooltip\");\r\n if (!(tooltip instanceof HTMLElement)) {\r\n throw new Error(\"tooltip element is not instanceof HTMLElement\");\r\n }\r\n\r\n if (!this.stateless && this.target) {\r\n this.target.addEventListener(\"mouseenter\", this.callbacks.activate);\r\n [this.element, this.target].forEach((element) => element.addEventListener(\"mouseleave\", this.onMouseLeave));\r\n this.target.addEventListener(\"focus\", this.callbacks.activate);\r\n this.target.addEventListener(\"blur\", this.callbacks.deactivate);\r\n }\r\n }\r\n\r\n disconnectedCallback(): void {\r\n this.popper?.destroy();\r\n\r\n if (!this.stateless && this.target) {\r\n this.target.removeEventListener(\"mouseenter\", this.callbacks.activate);\r\n [this.element, this.target].forEach((element) => element.removeEventListener(\"mouseleave\", this.onMouseLeave));\r\n this.target.removeEventListener(\"focus\", this.callbacks.activate);\r\n this.target.removeEventListener(\"blur\", this.callbacks.deactivate);\r\n }\r\n\r\n this.target = undefined;\r\n }\r\n\r\n componentDidRender() {\r\n if (this.active) {\r\n this.popper?.update();\r\n }\r\n }\r\n\r\n private keyDownListener = (event: KeyboardEvent) => {\r\n if (event.key === \"Escape\") {\r\n this.deactivate();\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n <Host class={{ hidden: this.hidden }} role=\"tooltip\" onClick={this.listenClick}>\r\n <div class={clsx(\"tooltip\", { in: this.active })}>\r\n {!this.noArrow && <div data-popper-arrow class=\"tooltip-arrow\"></div>}\r\n <div aria-hidden={!this.descriptive || undefined} class={clsx(\"tooltip-inner\", { \"dso-small\": this.small })}>\r\n <slot></slot>\r\n </div>\r\n </div>\r\n </Host>\r\n );\r\n }\r\n\r\n private deactivatePopper = debounce(() => {\r\n this.hidden = true;\r\n this.popper?.destroy();\r\n this.popper = undefined;\r\n }, transitionDuration);\r\n\r\n private activatePopper(): void {\r\n this.hidden = false;\r\n\r\n if (this.popper) {\r\n return;\r\n }\r\n\r\n const tooltip = this.element.shadowRoot?.querySelector(\".tooltip\");\r\n\r\n if (this.target && tooltip instanceof HTMLElement) {\r\n this.popper = createPopper(this.target, tooltip, {\r\n placement: this.position,\r\n modifiers: [maxSize, applyMaxSize, { name: \"eventListeners\", enabled: false }],\r\n });\r\n\r\n this.setStrategy();\r\n }\r\n }\r\n\r\n private get target(): HTMLElement | undefined {\r\n return this.#target ?? this.initializeTarget();\r\n }\r\n\r\n private set target(element: HTMLElement | undefined) {\r\n this.#target = element;\r\n }\r\n\r\n #target?: HTMLElement;\r\n\r\n private initializeTarget(): HTMLElement | undefined {\r\n const id = this.element.id;\r\n\r\n if (!id) {\r\n console.warn(\"Unable to find reference tooltip has no [id] attribute.\");\r\n\r\n return;\r\n }\r\n\r\n const rootNode = this.element.getRootNode();\r\n if (!(rootNode instanceof Document || rootNode instanceof ShadowRoot)) {\r\n console.warn(`rootNode is not instance of Document or ShadowRoot`);\r\n\r\n return;\r\n }\r\n\r\n const reference = rootNode.querySelector<HTMLElement>(`[aria-describedBy=\"${id}`);\r\n if (!reference) {\r\n console.warn(`Unable to find reference with aria-describedby ${id}`);\r\n\r\n return;\r\n }\r\n\r\n this.#target = reference;\r\n return reference;\r\n }\r\n}\r\n\r\ninterface TooltipCallbacks {\r\n activate: () => void;\r\n deactivate: () => void;\r\n}\r\n"],"mappings":"qLAEA,IAAIA,EAAU,CACZC,KAAM,UACNC,QAAS,KACTC,MAAO,OACPC,iBAAkB,CAAC,SAAU,kBAAmB,QAChDC,GAAI,SAASA,EAAGC,GACd,IAAIC,EAAQD,EAAKC,MACbN,EAAOK,EAAKL,KACZO,EAAUF,EAAKE,QACnB,IAAIC,EAAWC,EAAeH,EAAOC,GAErC,IAAIG,EAAQJ,EAAMK,cAAcC,iBAAmB,CACjDC,EAAG,EACHC,EAAG,GAEDD,EAAIH,EAAMG,EACVC,EAAIJ,EAAMI,EAEd,IAAIC,EAAsBT,EAAMU,MAAMC,OAClCC,EAAQH,EAAoBG,MAC5BC,EAASJ,EAAoBI,OAEjC,IAAIC,EAAwBd,EAAMe,UAAUC,MAAM,KAC9CC,EAAgBH,EAAsB,GAE1C,IAAII,EAAYD,IAAkB,OAAS,OAAS,QACpD,IAAIE,EAAaF,IAAkB,MAAQ,MAAQ,SACnDjB,EAAMK,cAAcX,GAAQ,CAC1BkB,MAAOA,EAAQV,EAASgB,GAAaX,EACrCM,OAAQA,EAASX,EAASiB,GAAcX,EAE9C,GCjCA,MAAMY,EAAa,gyEACnB,MAAAC,EAAeD,E,gwBCOf,MAAME,EAAqB,IAE3B,MAAMC,EAAe,CACnB7B,KAAM,eACNC,QAAS,KACTC,MAAO4B,EACPC,SAAU,CAAC,WACX,EAAA3B,EAAGE,MAAEA,IACH,IAAIY,MAAEA,GAAUZ,EAAMK,cAAcZ,QACpC,GAAImB,EAAQ,IAAK,CACfA,EAAQ,G,CAGVZ,EAAM0B,OAAOf,OAAMgB,OAAAC,OAAAD,OAAAC,OAAA,GACd5B,EAAM0B,OAAOf,QAAM,CACtBkB,SAAU,GAAGjB,O,SAUNkB,EAAO,MALpB,WAAAC,CAAAC,G,UAYEC,KAAAC,YAAc,MAMdD,KAAAE,SAAsB,MAMtBF,KAAAG,SAA0C,OAM1CH,KAAAI,QAAU,MAkBVJ,KAAAK,OAAS,MAwFDL,KAAAM,UAA8B,CACpCC,SAAU,IAAOP,KAAKK,OAAS,KAC/BG,WAAY,KAGVC,YAAW,KACT,GAAIT,KAAKU,QAAQC,YAAa,CAC5BX,KAAKK,OAAS,K,IAEf,EAAE,GAIDL,KAAAY,aAAe,K,MACrB,IAAKZ,KAAKU,QAAQG,QAAQ,cAAcC,EAAAd,KAAKe,UAAM,MAAAD,SAAA,SAAAA,EAAED,QAAQ,WAAW,CACtEb,KAAKM,UAAUE,Y,GAKXR,KAAAgB,OAAS,KAuCThB,KAAAiB,gBAAmBC,IACzB,GAAIA,EAAMC,MAAQ,SAAU,CAC1BnB,KAAKQ,Y,GAiBDR,KAAAoB,iBAAmBC,GAAS,K,MAClCrB,KAAKgB,OAAS,MACdF,EAAAd,KAAKtB,UAAM,MAAAoC,SAAA,SAAAA,EAAEQ,UACbtB,KAAKtB,OAAS6C,SAAS,GACtBlC,GA6BHmC,EAAAC,IAAAzB,UAAA,E,CAjMA,cAAMO,GACJP,KAAKK,OAAS,I,CAOhB,gBAAMG,GACJR,KAAKK,OAAS,K,CAIhB,aAAAqB,GACE,IAAK1B,KAAKtB,OAAQ,CAChB,M,CAGFsB,KAAKtB,OAAOiD,WAAW,CACrB7C,UAAWkB,KAAKE,U,CAKpB,aAAA0B,GACE5B,KAAK6B,a,CAGC,WAAAA,GACN,IAAK7B,KAAKtB,OAAQ,CAChB,M,CAGF,GAAIsB,KAAKG,WAAa,YAAcH,KAAKG,WAAa,QAAS,CAC7DH,KAAKtB,OAAOiD,WAAW,CACrBxB,SAAUH,KAAKG,WAGjB,M,CAGF,IAAIO,EAA0BV,KAAKU,QACnC,MAAOA,GAAWA,EAAQoB,aAAeC,SAAU,CACjDrB,EAAUA,EAAQoB,sBAAsBE,WAAatB,EAAQoB,WAAWG,KAAOvB,EAAQwB,cACvF,GAAIxB,IAAY,MAAQyB,EAAYzB,GAAU,CAC5CV,KAAKtB,OAAOiD,WAAW,CACrBxB,SAAU,UAGZ,M,EAIJH,KAAKtB,OAAOiD,WAAW,CACrBxB,SAAU,Y,CAKd,WAAAiC,GACE,GAAIpC,KAAKK,OAAQ,CACfL,KAAKqC,iBAEL,IAAKrC,KAAKsC,UAAW,CACnB7B,YAAW,K,OACTK,EAAAd,KAAKtB,UAAM,MAAAoC,SAAA,SAAAA,EAAEa,WAAW,CACtBY,UAAW,CAAC,CAAE9E,KAAM,iBAAkBC,QAAS,SAEjDqE,SAASS,iBAAiB,UAAWxC,KAAKiB,gBAAgB,G,MAGzD,CACLc,SAASU,oBAAoB,UAAWzC,KAAKiB,iBAC7CjB,KAAKoB,kB,EA+BD,WAAAsB,CAAYC,GAClBA,EAAEC,iB,CAGJ,gBAAAC,G,MACE,MAAMC,GAAUhC,EAAAd,KAAKU,QAAQqC,cAAU,MAAAjC,SAAA,SAAAA,EAAEkC,cAAc,YACvD,KAAMF,aAAmBG,aAAc,CACrC,MAAM,IAAIC,MAAM,gD,CAGlB,IAAKlD,KAAKsC,WAAatC,KAAKe,OAAQ,CAClCf,KAAKe,OAAOyB,iBAAiB,aAAcxC,KAAKM,UAAUC,UAC1D,CAACP,KAAKU,QAASV,KAAKe,QAAQoC,SAASzC,GAAYA,EAAQ8B,iBAAiB,aAAcxC,KAAKY,gBAC7FZ,KAAKe,OAAOyB,iBAAiB,QAASxC,KAAKM,UAAUC,UACrDP,KAAKe,OAAOyB,iBAAiB,OAAQxC,KAAKM,UAAUE,W,EAIxD,oBAAA4C,G,OACEtC,EAAAd,KAAKtB,UAAM,MAAAoC,SAAA,SAAAA,EAAEQ,UAEb,IAAKtB,KAAKsC,WAAatC,KAAKe,OAAQ,CAClCf,KAAKe,OAAO0B,oBAAoB,aAAczC,KAAKM,UAAUC,UAC7D,CAACP,KAAKU,QAASV,KAAKe,QAAQoC,SAASzC,GAAYA,EAAQ+B,oBAAoB,aAAczC,KAAKY,gBAChGZ,KAAKe,OAAO0B,oBAAoB,QAASzC,KAAKM,UAAUC,UACxDP,KAAKe,OAAO0B,oBAAoB,OAAQzC,KAAKM,UAAUE,W,CAGzDR,KAAKe,OAASQ,S,CAGhB,kBAAA8B,G,MACE,GAAIrD,KAAKK,OAAQ,EACfS,EAAAd,KAAKtB,UAAM,MAAAoC,SAAA,SAAAA,EAAEwC,Q,EAUjB,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAtC,IAAA,2CAACuC,MAAO,CAAE1C,OAAQhB,KAAKgB,QAAU2C,KAAK,UAAUC,QAAS5D,KAAK0C,aACjEc,EAAA,OAAArC,IAAA,2CAAKuC,MAAOG,EAAK,UAAW,CAAEC,GAAI9D,KAAKK,WACnCL,KAAKI,SAAWoD,EAAA,OAAArC,IAAA,oEAAuBuC,MAAM,kBAC/CF,EAAA,OAAArC,IAAA,0DAAmBnB,KAAKC,aAAesB,UAAWmC,MAAOG,EAAK,gBAAiB,CAAE,YAAa7D,KAAK+D,SACjGP,EAAA,QAAArC,IAAA,+C,CAaF,cAAAkB,G,MACNrC,KAAKgB,OAAS,MAEd,GAAIhB,KAAKtB,OAAQ,CACf,M,CAGF,MAAMoE,GAAUhC,EAAAd,KAAKU,QAAQqC,cAAU,MAAAjC,SAAA,SAAAA,EAAEkC,cAAc,YAEvD,GAAIhD,KAAKe,QAAU+B,aAAmBG,YAAa,CACjDjD,KAAKtB,OAASsF,EAAahE,KAAKe,OAAQ+B,EAAS,CAC/ChE,UAAWkB,KAAKE,SAChBqC,UAAW,CAAC/E,EAAS8B,EAAc,CAAE7B,KAAM,iBAAkBC,QAAS,UAGxEsC,KAAK6B,a,EAIT,UAAYd,G,MACV,OAAOD,EAAAmD,EAAAjE,KAAIwB,EAAA,QAAQ,MAAAV,SAAA,EAAAA,EAAId,KAAKkE,kB,CAG9B,UAAYnD,CAAOL,GACjByD,EAAAnE,KAAIwB,EAAWd,EAAO,I,CAKhB,gBAAAwD,GACN,MAAME,EAAKpE,KAAKU,QAAQ0D,GAExB,IAAKA,EAAI,CACPC,QAAQC,KAAK,2DAEb,M,CAGF,MAAMC,EAAWvE,KAAKU,QAAQ8D,cAC9B,KAAMD,aAAoBE,UAAYF,aAAoBvC,YAAa,CACrEqC,QAAQC,KAAK,sDAEb,M,CAGF,MAAMI,EAAYH,EAASvB,cAA2B,sBAAsBoB,KAC5E,IAAKM,EAAW,CACdL,QAAQC,KAAK,kDAAkDF,KAE/D,M,CAGFD,EAAAnE,KAAIwB,EAAWkD,EAAS,KACxB,OAAOA,C","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as o,c as t,h as e,a as s}from"./p-abc59cdf.js";import{c as i}from"./p-8a1a6e56.js";import{d as r}from"./p-16e112f1.js";const n=':host{display:block;block-size:100%;overflow-y:hidden}*,*::after,*::before{box-sizing:border-box}.dso-shadow-container{block-size:100%;max-block-size:inherit;min-block-size:inherit;position:relative}.dso-shadow-container .dso-scroll-container{block-size:100%;max-block-size:inherit;min-block-size:inherit;overflow-y:auto}.dso-shadow-container .dso-scroll-container::before,.dso-shadow-container .dso-scroll-container::after{background-repeat:no-repeat;background-size:100% 24px;content:"";display:block;block-size:24px;inset-inline-start:0;opacity:0;overflow:visible;position:absolute;transition:opacity 150ms ease-in-out;inline-size:100%;pointer-events:none;z-index:1}.dso-shadow-container .dso-scroll-container::before{background-image:linear-gradient(to top, rgba(183, 183, 183, 0), rgba(183, 183, 183, 0.7));inset-block-start:0}.dso-shadow-container .dso-scroll-container::after{background-image:linear-gradient(to bottom, rgba(183, 183, 183, 0), rgba(183, 183, 183, 0.7));inset-block-end:0}.dso-shadow-container .dso-scroll-container.dso-scroll-bottom::before{opacity:1}.dso-shadow-container .dso-scroll-container.dso-scroll-top::after{opacity:1}.dso-shadow-container .dso-scroll-container.dso-scroll-middle::before,.dso-shadow-container .dso-scroll-container.dso-scroll-middle::after{opacity:1}';const a=n;const c=new ResizeObserver(r((o=>o.forEach((o=>{var t;return(t=l(o))===null||t===void 0?void 0:t._setScrollState()}))),50));function l({target:o}){if(o.parentNode instanceof ShadowRoot&&d(o.parentNode.host)){return o.parentNode.host}if(o.parentElement&&d(o.parentElement)){return o.parentElement}return undefined}function d(o){return o.tagName==="DSO-SCROLLABLE"}const h=class{constructor(e){o(this,e);this.dsoScrollEnd=t(this,"dsoScrollEnd",7);this.mutationObserver=new MutationObserver((o=>o.forEach((({target:o})=>{var t;const e=(t=o.parentElement)===null||t===void 0?void 0:t.closest("dso-scrollable");if(e!==this.host){return}this._setScrollState()}))));this.scrollPosition="noScroll"}async _setScrollState(){if(!this.host.isConnected){return}const o=this.getScrollPosition();if(this.scrollPosition!==o){this.scrollPosition=o;if(this.scrollPosition==="top"||this.scrollPosition==="bottom"){this.dsoScrollEnd.emit({scrollEnd:this.scrollPosition})}}}get slottedElements(){return Array.from(this.host.children)}getScrollPosition(){if(!this.scrollContainerDiv){return"noScroll"}const{scrollHeight:o,clientHeight:t,scrollTop:e}=this.scrollContainerDiv;if(o<=t){return"noScroll"}if(e===0){return"top"}if(o-e-t<1){return"bottom"}if(e>0){return"middle"}return"noScroll"}componentDidLoad(){this.mutationObserver.observe(this.host,{characterData:true,attributes:false,childList:false,subtree:true});if(this.shadowContainerDiv instanceof HTMLDivElement){c.observe(this.shadowContainerDiv)}this.slottedElements.forEach((o=>c.observe(o)))}disconnectedCallback(){if(this.shadowContainerDiv instanceof HTMLDivElement){c.unobserve(this.shadowContainerDiv)}this.mutationObserver.disconnect();this.slottedElements.forEach((o=>c.unobserve(o)))}render(){return e("div",{key:"70329cb775aa7b06be2e6fcb1e28670f735c2467",ref:o=>this.shadowContainerDiv=o,class:"dso-shadow-container"},e("div",{key:"ff50504d84fad62027ea67742b64ddae2be63f47",ref:o=>this.scrollContainerDiv=o,class:i("dso-scroll-container",{[`dso-scroll-${this.scrollPosition}`]:this.scrollPosition!=="noScroll"}),onScroll:()=>this._setScrollState()},e("slot",{key:"ab03fe8a94df6fd40037376a054c474d75197944"})))}get host(){return s(this)}};h.style=a;export{h as dso_scrollable};
|
|
2
|
+
//# sourceMappingURL=p-e26460b5.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["scrollableCss","DsoScrollableStyle0","resizeObserver","ResizeObserver","debounce","entries","forEach","entry","_a","getScrollableComponentFromResizeObserverEntry","_setScrollState","target","parentNode","ShadowRoot","isDsoScrollableComponent","host","parentElement","undefined","element","tagName","Scrollable","constructor","hostRef","this","mutationObserver","MutationObserver","closest","scrollPosition","isConnected","getScrollPosition","dsoScrollEnd","emit","scrollEnd","slottedElements","Array","from","children","scrollContainerDiv","scrollHeight","clientHeight","scrollTop","componentDidLoad","observe","characterData","attributes","childList","subtree","shadowContainerDiv","HTMLDivElement","disconnectedCallback","unobserve","disconnect","render","h","key","ref","el","class","clsx","onScroll"],"sources":["src/components/scrollable/scrollable.scss?tag=dso-scrollable&encapsulation=shadow","src/components/scrollable/scrollable.tsx"],"sourcesContent":["@use \"~dso-toolkit/src/utilities\";\r\n@use \"~dso-toolkit/src/variables/units\";\r\n\r\n:host {\r\n display: block;\r\n block-size: 100%;\r\n overflow-y: hidden;\r\n}\r\n\r\n@include utilities.box-sizing();\r\n\r\n.dso-shadow-container {\r\n block-size: 100%;\r\n max-block-size: inherit;\r\n min-block-size: inherit;\r\n position: relative;\r\n\r\n .dso-scroll-container {\r\n block-size: 100%;\r\n max-block-size: inherit;\r\n min-block-size: inherit;\r\n overflow-y: auto;\r\n\r\n &::before,\r\n &::after {\r\n background-repeat: no-repeat;\r\n background-size: 100% units.$u3;\r\n content: \"\";\r\n display: block;\r\n block-size: units.$u3;\r\n inset-inline-start: 0;\r\n opacity: 0;\r\n overflow: visible;\r\n position: absolute;\r\n transition: opacity 150ms ease-in-out;\r\n inline-size: 100%;\r\n pointer-events: none;\r\n z-index: 1;\r\n }\r\n\r\n &::before {\r\n background-image: linear-gradient(to top, rgba(183, 183, 183, 0), rgba(183, 183, 183, 0.7));\r\n inset-block-start: 0;\r\n }\r\n\r\n &::after {\r\n background-image: linear-gradient(to bottom, rgba(183, 183, 183, 0), rgba(183, 183, 183, 0.7));\r\n inset-block-end: 0;\r\n }\r\n\r\n &.dso-scroll-bottom {\r\n &::before {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n &.dso-scroll-top {\r\n &::after {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n &.dso-scroll-middle {\r\n &::before,\r\n &::after {\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n}\r\n","import { Component, Element, Event, EventEmitter, h, Method, State } from \"@stencil/core\";\r\nimport clsx from \"clsx\";\r\nimport debounce from \"debounce\";\r\n\r\nimport { DsoScrollEndEvent, ScrollPosition } from \"./scrollable.interfaces\";\r\n\r\nconst resizeObserver = new ResizeObserver(\r\n debounce(\r\n (entries: ResizeObserverEntry[]) =>\r\n entries.forEach((entry) => getScrollableComponentFromResizeObserverEntry(entry)?._setScrollState()),\r\n 50,\r\n ),\r\n);\r\n\r\nfunction getScrollableComponentFromResizeObserverEntry({\r\n target,\r\n}: ResizeObserverEntry): HTMLDsoScrollableElement | undefined {\r\n if (target.parentNode instanceof ShadowRoot && isDsoScrollableComponent(target.parentNode.host)) {\r\n return target.parentNode.host;\r\n }\r\n\r\n if (target.parentElement && isDsoScrollableComponent(target.parentElement)) {\r\n return target.parentElement;\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nfunction isDsoScrollableComponent(element: Element): element is HTMLDsoScrollableElement {\r\n return element.tagName === \"DSO-SCROLLABLE\";\r\n}\r\n\r\n@Component({\r\n tag: \"dso-scrollable\",\r\n styleUrl: \"scrollable.scss\",\r\n shadow: true,\r\n})\r\nexport class Scrollable {\r\n // One MutationObserver per instance because of https://github.com/whatwg/dom/issues/126\r\n private mutationObserver = new MutationObserver((entries) =>\r\n entries.forEach(({ target }) => {\r\n const element = target.parentElement?.closest(\"dso-scrollable\");\r\n if (element !== this.host) {\r\n return;\r\n }\r\n\r\n this._setScrollState();\r\n }),\r\n );\r\n\r\n private scrollContainerDiv?: HTMLDivElement;\r\n\r\n private shadowContainerDiv?: HTMLDivElement;\r\n\r\n @Element()\r\n host!: HTMLDsoScrollableElement;\r\n\r\n /**\r\n * Event emitted when the scrollbar has reached top or bottom.\r\n */\r\n @Event()\r\n dsoScrollEnd!: EventEmitter<DsoScrollEndEvent>;\r\n\r\n @State()\r\n scrollPosition: ScrollPosition = \"noScroll\";\r\n\r\n /**\r\n * @internal\r\n */\r\n @Method()\r\n async _setScrollState() {\r\n if (!this.host.isConnected) {\r\n return;\r\n }\r\n\r\n const scrollPosition = this.getScrollPosition();\r\n if (this.scrollPosition !== scrollPosition) {\r\n this.scrollPosition = scrollPosition;\r\n\r\n if (this.scrollPosition === \"top\" || this.scrollPosition === \"bottom\") {\r\n this.dsoScrollEnd.emit({ scrollEnd: this.scrollPosition });\r\n }\r\n }\r\n }\r\n\r\n private get slottedElements() {\r\n return Array.from(this.host.children);\r\n }\r\n\r\n private getScrollPosition(): ScrollPosition {\r\n if (!this.scrollContainerDiv) {\r\n return \"noScroll\";\r\n }\r\n\r\n const { scrollHeight, clientHeight, scrollTop } = this.scrollContainerDiv;\r\n\r\n if (scrollHeight <= clientHeight) {\r\n return \"noScroll\";\r\n }\r\n\r\n if (scrollTop === 0) {\r\n return \"top\";\r\n }\r\n\r\n if (scrollHeight - scrollTop - clientHeight < 1) {\r\n return \"bottom\";\r\n }\r\n\r\n if (scrollTop > 0) {\r\n return \"middle\";\r\n }\r\n\r\n return \"noScroll\";\r\n }\r\n\r\n componentDidLoad(): void {\r\n this.mutationObserver.observe(this.host, {\r\n characterData: true,\r\n attributes: false,\r\n childList: false,\r\n subtree: true,\r\n });\r\n\r\n if (this.shadowContainerDiv instanceof HTMLDivElement) {\r\n resizeObserver.observe(this.shadowContainerDiv);\r\n }\r\n\r\n this.slottedElements.forEach((element) => resizeObserver.observe(element));\r\n }\r\n\r\n disconnectedCallback(): void {\r\n if (this.shadowContainerDiv instanceof HTMLDivElement) {\r\n resizeObserver.unobserve(this.shadowContainerDiv);\r\n }\r\n\r\n this.mutationObserver.disconnect();\r\n\r\n this.slottedElements.forEach((element) => resizeObserver.unobserve(element));\r\n }\r\n\r\n render() {\r\n return (\r\n <div ref={(el) => (this.shadowContainerDiv = el)} class=\"dso-shadow-container\">\r\n <div\r\n ref={(el) => (this.scrollContainerDiv = el)}\r\n class={clsx(\"dso-scroll-container\", {\r\n [`dso-scroll-${this.scrollPosition}`]: this.scrollPosition !== \"noScroll\",\r\n })}\r\n onScroll={() => this._setScrollState()}\r\n >\r\n <slot></slot>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n"],"mappings":"iIAAA,MAAMA,EAAgB,uxCACtB,MAAAC,EAAeD,ECKf,MAAME,EAAiB,IAAIC,eACzBC,GACGC,GACCA,EAAQC,SAASC,IAAK,IAAAC,EAAK,OAAAA,EAAAC,EAA8CF,MAAM,MAAAC,SAAA,SAAAA,EAAEE,iBAAiB,KACpG,KAIJ,SAASD,GAA8CE,OACrDA,IAEA,GAAIA,EAAOC,sBAAsBC,YAAcC,EAAyBH,EAAOC,WAAWG,MAAO,CAC/F,OAAOJ,EAAOC,WAAWG,I,CAG3B,GAAIJ,EAAOK,eAAiBF,EAAyBH,EAAOK,eAAgB,CAC1E,OAAOL,EAAOK,a,CAGhB,OAAOC,SACT,CAEA,SAASH,EAAyBI,GAChC,OAAOA,EAAQC,UAAY,gBAC7B,C,MAOaC,EAAU,MALvB,WAAAC,CAAAC,G,qDAOUC,KAAAC,iBAAmB,IAAIC,kBAAkBpB,GAC/CA,EAAQC,SAAQ,EAAGK,a,MACjB,MAAMO,GAAUV,EAAAG,EAAOK,iBAAa,MAAAR,SAAA,SAAAA,EAAEkB,QAAQ,kBAC9C,GAAIR,IAAYK,KAAKR,KAAM,CACzB,M,CAGFQ,KAAKb,iBAAiB,MAkB1Ba,KAAAI,eAAiC,U,CAMjC,qBAAMjB,GACJ,IAAKa,KAAKR,KAAKa,YAAa,CAC1B,M,CAGF,MAAMD,EAAiBJ,KAAKM,oBAC5B,GAAIN,KAAKI,iBAAmBA,EAAgB,CAC1CJ,KAAKI,eAAiBA,EAEtB,GAAIJ,KAAKI,iBAAmB,OAASJ,KAAKI,iBAAmB,SAAU,CACrEJ,KAAKO,aAAaC,KAAK,CAAEC,UAAWT,KAAKI,gB,GAK/C,mBAAYM,GACV,OAAOC,MAAMC,KAAKZ,KAAKR,KAAKqB,S,CAGtB,iBAAAP,GACN,IAAKN,KAAKc,mBAAoB,CAC5B,MAAO,U,CAGT,MAAMC,aAAEA,EAAYC,aAAEA,EAAYC,UAAEA,GAAcjB,KAAKc,mBAEvD,GAAIC,GAAgBC,EAAc,CAChC,MAAO,U,CAGT,GAAIC,IAAc,EAAG,CACnB,MAAO,K,CAGT,GAAIF,EAAeE,EAAYD,EAAe,EAAG,CAC/C,MAAO,Q,CAGT,GAAIC,EAAY,EAAG,CACjB,MAAO,Q,CAGT,MAAO,U,CAGT,gBAAAC,GACElB,KAAKC,iBAAiBkB,QAAQnB,KAAKR,KAAM,CACvC4B,cAAe,KACfC,WAAY,MACZC,UAAW,MACXC,QAAS,OAGX,GAAIvB,KAAKwB,8BAA8BC,eAAgB,CACrD9C,EAAewC,QAAQnB,KAAKwB,mB,CAG9BxB,KAAKU,gBAAgB3B,SAASY,GAAYhB,EAAewC,QAAQxB,I,CAGnE,oBAAA+B,GACE,GAAI1B,KAAKwB,8BAA8BC,eAAgB,CACrD9C,EAAegD,UAAU3B,KAAKwB,mB,CAGhCxB,KAAKC,iBAAiB2B,aAEtB5B,KAAKU,gBAAgB3B,SAASY,GAAYhB,EAAegD,UAAUhC,I,CAGrE,MAAAkC,GACE,OACEC,EAAA,OAAAC,IAAA,2CAAKC,IAAMC,GAAQjC,KAAKwB,mBAAqBS,EAAKC,MAAM,wBACtDJ,EAAA,OAAAC,IAAA,2CACEC,IAAMC,GAAQjC,KAAKc,mBAAqBmB,EACxCC,MAAOC,EAAK,uBAAwB,CAClC,CAAC,cAAcnC,KAAKI,kBAAmBJ,KAAKI,iBAAmB,aAEjEgC,SAAU,IAAMpC,KAAKb,mBAErB2C,EAAA,QAAAC,IAAA,8C","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as i,c as n,h as t,F as e,a}from"./p-abc59cdf.js";import{i as s}from"./p-2d694112.js";const o=':host{display:block}*,*::after,*::before{box-sizing:border-box}.pagination ul{padding-inline-start:initial;text-align:center}.pagination ul>li{display:inline-block;font-weight:bold;line-height:calc(2rem - 4px);text-align:center;vertical-align:middle}.pagination ul>li>a,.pagination ul>li>span{align-items:center;color:#39870c;display:flex;block-size:2rem;justify-content:center;position:relative;min-inline-size:2rem;padding:2px;padding-block:2px;padding-inline:2px}.pagination ul>li>a:active,.pagination ul>li>span:active{background-color:#ebf3e6}.pagination ul>li>span{border:2px solid transparent;border-radius:1rem}.pagination ul>li a{line-height:2rem;text-decoration:none}.pagination ul>li a:hover,.pagination ul>li a:focus{text-decoration:none}.pagination ul>li a:hover::after,.pagination ul>li a:focus::after{border-block-end-color:#39870c}.pagination ul>li a::after{border-block-end:3px solid transparent;inset-block-end:0;content:"";display:inline-block;inset-inline-start:0;position:absolute;inline-size:100%}.pagination ul>li.active span{background-color:#39870c;color:#fff}.pagination ul>li+li{margin-inline-start:8px}.dso-page-hidden{visibility:hidden}.sr-only.sr-only{position:absolute;inline-size:1px;block-size:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}';const l=o;const r=class{constructor(t){i(this,t);this.dsoSelectPage=n(this,"dsoSelectPage",7);this.sizePositionsMap={small:7,medium:9,large:11};this.formatHref=i=>"#"+i}sizeChangeHandler(i){this.availablePositions=this.getAvailablePositions(this.sizePositionsMap[i.detail])}clickHandler(i,n){this.dsoSelectPage.emit({originalEvent:i,page:n,isModifiedEvent:s(i)})}componentDidLoad(){var i;(i=this.responsiveElement)===null||i===void 0?void 0:i.getSize().then((i=>this.availablePositions=this.getAvailablePositions(this.sizePositionsMap[i])))}render(){var i;if(!this.totalPages&&!this.currentPage){return null}if(this.availablePositions===undefined){return t("dso-responsive-element",{ref:i=>this.responsiveElement=i})}const n=this.availablePositions;const a=(i=this.currentPage)!==null&&i!==void 0?i:0;const s=this.getPages(a,this.availablePositions,this.totalPages);return t("dso-responsive-element",{ref:i=>this.responsiveElement=i},t("nav",{class:"pagination","aria-label":"Paginering"},t("ul",null,t("li",{class:a<=1||!a?"dso-page-hidden":undefined},t("a",{href:this.formatHref(a-1),"aria-label":"Vorige",onClick:i=>a&&this.clickHandler(i,a-1)},t("dso-icon",{icon:"chevron-left"}))),s.map((i=>t(e,null,this.showEllipsisBeforeLast(s,i,n)&&t("li",null,t("span",null,"...")),t("li",{key:i,class:a===i?"active":undefined},a===i?t("span",{"aria-current":"page"},i):t("a",{href:this.formatHref(i),onClick:n=>this.clickHandler(n,i)},i),i===this.totalPages?t("span",{class:"sr-only"}," (laatste pagina)"):null),this.showEllipsisAfterFirst(s,i,n)&&t("li",null,t("span",null,"...")),this.showEllipsisLastWithoutTotal(s,i,this.totalPages)&&t("li",null,t("span",null,"..."))))),t("li",{class:this.totalPages&&a>=this.totalPages||!a?"dso-page-hidden":undefined},t("a",{href:this.formatHref(a+1),"aria-label":"Volgende",onClick:i=>a&&this.clickHandler(i,a+1)},t("dso-icon",{icon:"chevron-right"}))))))}getAvailablePositions(i){if(i%2===0){return i-1}if(i<=3){return 3}return i}getPages(i,n,t){if(t){if(t+2<=n){return Array.from({length:t},((i,n)=>n+1))}if(n===3){return[i]}if(n===5){return[1,i,t]}return[1,...this.getPageRange(i,n,t),t]}return this.getPageRangeWithoutTotalPages(i,n)}getPageRange(i,n,t){const e=[];const a=Math.floor(n/2);if(i<=a){for(let i=2;i<=n-4;i++){e.push(i)}}if(i>=a&&i<=t-a){if(a===1){if(i>t-2){e.push(t-2)}e.push(i);if(i<3){e.push(3)}}if(a>1){const n=a-3;for(let s=Math.min(i-n,t-a);s<=Math.max(i+n,a);s++){if(s>2&&s<t-1){e.push(s)}}}}if(i>t-a){for(let i=t-(n-5);i<=t-1;i++){e.push(i)}}return e.filter(((i,n,t)=>t.indexOf(i)===n))}showEllipsisAfterFirst(i,n,t){const e=i[i.length-1];if(!e){throw new Error("No totalPages")}const a=i.indexOf(n)===0;const s=e>t-(this.totalPages?2:6);const o=!i.includes(2);const l=t>=7;return a&&s&&o&&l}showEllipsisBeforeLast(i,n,t){const e=i[i.length-1];if(!e){throw new Error("No totalPages")}const a=i.indexOf(n)===i.length-1;const s=e>t-(this.totalPages?2:6);const o=!i.includes(e-1);const l=t>=7;return a&&s&&o&&l}showEllipsisLastWithoutTotal(i,n,t){return t?false:i.at(-1)===n}getPageRangeWithoutTotalPages(i,n){const t=n>=9?2:0;const e=Math.max(1,i-t);const a=Array.from({length:i-e+2},((i,n)=>e+n));if(e>=2)a.unshift(1);return a}get host(){return a(this)}};r.style=l;export{r as dso_pagination};
|
|
2
|
+
//# sourceMappingURL=p-eeca54c6.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["paginationCss","DsoPaginationStyle0","Pagination","constructor","hostRef","this","sizePositionsMap","small","medium","large","formatHref","page","sizeChangeHandler","event","availablePositions","getAvailablePositions","detail","clickHandler","e","dsoSelectPage","emit","originalEvent","isModifiedEvent","componentDidLoad","_a","responsiveElement","getSize","then","size","render","totalPages","currentPage","undefined","h","ref","element","pages","getPages","class","href","onClick","icon","map","Fragment","showEllipsisBeforeLast","key","showEllipsisAfterFirst","showEllipsisLastWithoutTotal","sizePositions","Array","from","length","_value","i","getPageRange","getPageRangeWithoutTotalPages","range","positionRange","Math","floor","push","pagesBeforeOrAfter","min","max","filter","v","a","indexOf","Error","isFirstPage","hasManyPages","isPageTwoMissing","includes","hasEnoughPositions","isLastPage","isSecondLastPageMissing","at","start","result","_","unshift"],"sources":["src/components/pagination/pagination.scss?tag=dso-pagination&encapsulation=shadow","src/components/pagination/pagination.tsx"],"sourcesContent":["@use \"~dso-toolkit/src/utilities\";\r\n@use \"~dso-toolkit/src/components/pagination\";\r\n\r\n:host {\r\n display: block;\r\n}\r\n\r\n@include utilities.box-sizing();\r\n\r\n.pagination {\r\n @include pagination.root();\r\n}\r\n\r\n.dso-page-hidden {\r\n visibility: hidden;\r\n}\r\n\r\n.sr-only.sr-only {\r\n // class daisy-chained to prevent overwrites by other more specific styling set on this element.\r\n @include utilities.sr-only();\r\n}\r\n","import {\r\n h,\r\n Component,\r\n ComponentInterface,\r\n Element,\r\n Event,\r\n EventEmitter,\r\n Fragment,\r\n Listen,\r\n Prop,\r\n State,\r\n} from \"@stencil/core\";\r\nimport { isModifiedEvent } from \"../../utils/is-modified-event\";\r\n\r\nimport { ResponsiveElementSize } from \"../responsive-element/responsive-element.interfaces\";\r\nimport { PaginationSelectPageEvent } from \"./pagination.interfaces\";\r\n\r\n@Component({\r\n tag: \"dso-pagination\",\r\n styleUrl: \"pagination.scss\",\r\n shadow: true,\r\n})\r\nexport class Pagination implements ComponentInterface {\r\n private sizePositionsMap: Record<ResponsiveElementSize, number> = {\r\n small: 7,\r\n medium: 9,\r\n large: 11,\r\n };\r\n\r\n private responsiveElement?: HTMLDsoResponsiveElementElement;\r\n\r\n @Element()\r\n host!: HTMLDsoPaginationElement;\r\n\r\n @State()\r\n availablePositions?: number;\r\n /**\r\n * Total pages\r\n */\r\n @Prop()\r\n totalPages?: number;\r\n\r\n /**\r\n * Current page\r\n */\r\n @Prop()\r\n currentPage?: number;\r\n\r\n /**\r\n * This function is called to format the href\r\n */\r\n @Prop()\r\n formatHref: (page: number) => string = (page) => \"#\" + page;\r\n\r\n /**\r\n * Emitted on page select\r\n */\r\n @Event()\r\n dsoSelectPage!: EventEmitter<PaginationSelectPageEvent>;\r\n\r\n /**\r\n * Listens to the dsoSizeChange event on Responsive Element\r\n */\r\n @Listen(\"dsoSizeChange\")\r\n sizeChangeHandler(event: CustomEvent<ResponsiveElementSize>) {\r\n this.availablePositions = this.getAvailablePositions(this.sizePositionsMap[event.detail]);\r\n }\r\n\r\n private clickHandler(e: MouseEvent, page: number) {\r\n this.dsoSelectPage.emit({\r\n originalEvent: e,\r\n page,\r\n isModifiedEvent: isModifiedEvent(e),\r\n });\r\n }\r\n\r\n componentDidLoad(): void {\r\n this.responsiveElement\r\n ?.getSize()\r\n .then(\r\n (size: ResponsiveElementSize) =>\r\n (this.availablePositions = this.getAvailablePositions(this.sizePositionsMap[size])),\r\n );\r\n }\r\n\r\n render() {\r\n if (!this.totalPages && !this.currentPage) {\r\n return null;\r\n }\r\n\r\n if (this.availablePositions === undefined) {\r\n return <dso-responsive-element ref={(element) => (this.responsiveElement = element)}></dso-responsive-element>;\r\n }\r\n\r\n const availablePositions = this.availablePositions;\r\n\r\n const currentPage = this.currentPage ?? 0;\r\n\r\n const pages: number[] = this.getPages(currentPage, this.availablePositions, this.totalPages);\r\n\r\n return (\r\n <dso-responsive-element ref={(element) => (this.responsiveElement = element)}>\r\n <nav class=\"pagination\" aria-label=\"Paginering\">\r\n <ul>\r\n <li class={currentPage <= 1 || !currentPage ? \"dso-page-hidden\" : undefined}>\r\n <a\r\n href={this.formatHref(currentPage - 1)}\r\n aria-label=\"Vorige\"\r\n onClick={(e) => currentPage && this.clickHandler(e, currentPage - 1)}\r\n >\r\n <dso-icon icon=\"chevron-left\"></dso-icon>\r\n </a>\r\n </li>\r\n {pages.map((page) => (\r\n <Fragment>\r\n {this.showEllipsisBeforeLast(pages, page, availablePositions) && (\r\n <li>\r\n <span>...</span>\r\n </li>\r\n )}\r\n\r\n <li key={page} class={currentPage === page ? \"active\" : undefined}>\r\n {currentPage === page ? (\r\n <span aria-current=\"page\">{page}</span>\r\n ) : (\r\n <a href={this.formatHref(page)} onClick={(e) => this.clickHandler(e, page)}>\r\n {page}\r\n </a>\r\n )}\r\n {page === this.totalPages ? <span class=\"sr-only\"> (laatste pagina)</span> : null}\r\n </li>\r\n\r\n {this.showEllipsisAfterFirst(pages, page, availablePositions) && (\r\n <li>\r\n <span>...</span>\r\n </li>\r\n )}\r\n\r\n {this.showEllipsisLastWithoutTotal(pages, page, this.totalPages) && (\r\n <li>\r\n <span>...</span>\r\n </li>\r\n )}\r\n </Fragment>\r\n ))}\r\n <li\r\n class={\r\n (this.totalPages && currentPage >= this.totalPages) || !currentPage ? \"dso-page-hidden\" : undefined\r\n }\r\n >\r\n <a\r\n href={this.formatHref(currentPage + 1)}\r\n aria-label=\"Volgende\"\r\n onClick={(e) => currentPage && this.clickHandler(e, currentPage + 1)}\r\n >\r\n <dso-icon icon=\"chevron-right\"></dso-icon>\r\n </a>\r\n </li>\r\n </ul>\r\n </nav>\r\n </dso-responsive-element>\r\n );\r\n }\r\n\r\n private getAvailablePositions(sizePositions: number) {\r\n if (sizePositions % 2 === 0) {\r\n // Even aantal posities zorgt voor een scheve pagination\r\n return sizePositions - 1;\r\n }\r\n if (sizePositions <= 3) {\r\n // Voor het kunnen tonen van de vorige knop, volgende knop en 1 pagina zijn minimaal 3 posities nodig.\r\n return 3;\r\n }\r\n\r\n return sizePositions;\r\n }\r\n\r\n private getPages(currentPage: number, availablePositions: number, totalPages?: number): number[] {\r\n if (totalPages) {\r\n if (totalPages + 2 <= availablePositions) {\r\n // + 2 voor de vorige en volgende knop\r\n return Array.from({ length: totalPages }, (_value, i) => i + 1);\r\n }\r\n\r\n if (availablePositions === 3) {\r\n return [currentPage];\r\n }\r\n\r\n if (availablePositions === 5) {\r\n return [1, currentPage, totalPages];\r\n }\r\n\r\n return [1, ...this.getPageRange(currentPage, availablePositions, totalPages), totalPages];\r\n }\r\n return this.getPageRangeWithoutTotalPages(currentPage, availablePositions);\r\n }\r\n\r\n private getPageRange(currentPage: number, availablePositions: number, totalPages: number): number[] {\r\n const range: number[] = [];\r\n\r\n const positionRange = Math.floor(availablePositions / 2);\r\n\r\n if (currentPage <= positionRange) {\r\n for (let i = 2; i <= availablePositions - 4; i++) {\r\n range.push(i);\r\n }\r\n }\r\n\r\n if (currentPage >= positionRange && currentPage <= totalPages - positionRange) {\r\n if (positionRange === 1) {\r\n if (currentPage > totalPages - 2) {\r\n range.push(totalPages - 2);\r\n }\r\n\r\n range.push(currentPage);\r\n\r\n if (currentPage < 3) {\r\n range.push(3);\r\n }\r\n }\r\n\r\n if (positionRange > 1) {\r\n const pagesBeforeOrAfter = positionRange - 3;\r\n\r\n for (\r\n let i = Math.min(currentPage - pagesBeforeOrAfter, totalPages - positionRange);\r\n i <= Math.max(currentPage + pagesBeforeOrAfter, positionRange);\r\n i++\r\n ) {\r\n if (i > 2 && i < totalPages - 1) {\r\n range.push(i);\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (currentPage > totalPages - positionRange) {\r\n for (let i = totalPages - (availablePositions - 5); i <= totalPages - 1; i++) {\r\n range.push(i);\r\n }\r\n }\r\n\r\n return range.filter((v, i, a) => a.indexOf(v) === i);\r\n }\r\n\r\n private showEllipsisAfterFirst(pages: number[], page: number, availablePositions: number): boolean {\r\n const totalPages = pages[pages.length - 1];\r\n\r\n if (!totalPages) {\r\n throw new Error(\"No totalPages\");\r\n }\r\n\r\n const isFirstPage = pages.indexOf(page) === 0;\r\n const hasManyPages = totalPages > availablePositions - (this.totalPages ? 2 : 6);\r\n const isPageTwoMissing = !pages.includes(2);\r\n const hasEnoughPositions = availablePositions >= 7;\r\n\r\n return isFirstPage && hasManyPages && isPageTwoMissing && hasEnoughPositions;\r\n }\r\n\r\n private showEllipsisBeforeLast(pages: number[], page: number, availablePositions: number): boolean {\r\n const totalPages = pages[pages.length - 1];\r\n\r\n if (!totalPages) {\r\n throw new Error(\"No totalPages\");\r\n }\r\n\r\n const isLastPage = pages.indexOf(page) === pages.length - 1;\r\n const hasManyPages = totalPages > availablePositions - (this.totalPages ? 2 : 6);\r\n const isSecondLastPageMissing = !pages.includes(totalPages - 1);\r\n const hasEnoughPositions = availablePositions >= 7;\r\n\r\n return isLastPage && hasManyPages && isSecondLastPageMissing && hasEnoughPositions;\r\n }\r\n\r\n private showEllipsisLastWithoutTotal(pages: number[], page: number, totalPages?: number) {\r\n return totalPages ? false : pages.at(-1) === page;\r\n }\r\n\r\n private getPageRangeWithoutTotalPages(currentPage: number, availablePositions: number): number[] {\r\n const positionRange = availablePositions >= 9 ? 2 : 0;\r\n const start = Math.max(1, currentPage - positionRange);\r\n\r\n // Creates an array of numbers from `start` to `currentPage + 1`\r\n const result = Array.from({ length: currentPage - start + 2 }, (_, i) => start + i);\r\n\r\n // Adds 1 to the start of the result array if `start` is >= 2\r\n if (start >= 2) result.unshift(1);\r\n\r\n return result;\r\n }\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -186,14 +186,14 @@ const AccordionSection = class {
|
|
|
186
186
|
const { variant, reverseAlign } = (_a = this.accordionState) !== null && _a !== void 0 ? _a : {};
|
|
187
187
|
const hasAddons = !!this.statusDescription || !!this.status || !!this.icon || !!this.attachmentCount;
|
|
188
188
|
const showSlideToggle = this.activatable && variant === "compact-black" && !reverseAlign;
|
|
189
|
-
return (h(Host, { key: '
|
|
189
|
+
return (h(Host, { key: '4b8933f4a7224bc4c4faeeb7952b85e0f8abc6b1', class: {
|
|
190
190
|
"dso-accordion-section": true,
|
|
191
191
|
["dso-accordion-" + variant]: true,
|
|
192
192
|
"dso-nested-accordion": this.hasNestedAccordion || this.containsNestedAccordion,
|
|
193
193
|
"dso-accordion-reverse-align": reverseAlign !== null && reverseAlign !== void 0 ? reverseAlign : false,
|
|
194
194
|
["dso-accordion-wijzigactie-" + this.wijzigactie]: !!this.wijzigactie,
|
|
195
195
|
"dso-accordion-section-activate": showSlideToggle,
|
|
196
|
-
}, hidden: !variant, onMouseenter: () => (this.hover = true), onMouseleave: () => (this.hover = false) }, h(Handle, { key: '
|
|
196
|
+
}, hidden: !variant, onMouseenter: () => (this.hover = true), onMouseleave: () => (this.hover = false) }, h(Handle, { key: '790f4fbb2a06e78be36e714becc606771ea6422e', heading: this.heading, ref: (element) => (this.sectionHeading = element) }, h(HandleElement, { key: '9aa838b5a1f7129161f58e7a67aec6b2923ae319', handleUrl: this.handleUrl, onClick: this.handleClick, open: this.open, showSlideToggle: showSlideToggle, active: this.active, onActiveChange: this.handleActiveChange, handleElementRef: (e) => (this.handleElementRef = e) }, reverseAlign ? (h(Fragment, null, this.icon && (h("div", { class: "dso-section-handle-addons" }, h(HandleIcon, { icon: this.icon }))), h("dso-renvooi", { value: this.handleTitle }), this.label && (h("dso-label", { status: this.labelStatus, compact: true }, this.label)), h("div", { class: "dso-section-handle-addons" }, this.statusDescription && h("span", { class: "dso-status" }, this.statusDescription), h("dso-icon", { class: "dso-section-handle-chevron", icon: "chevron-down" })))) : (h(Fragment, null, h("dso-icon", { class: "dso-section-handle-chevron", icon: "chevron-right" }), this.status && h("span", { class: "sr-only" }, stateMap[this.status]), h("span", null, h("dso-renvooi", { value: this.handleTitle }), this.isNeutral && (h("dso-icon", { class: "info-icon", icon: this.open || this.hover ? "info-active" : "info" }))), this.label && (h("dso-label", { status: this.labelStatus, compact: true }, this.label)), hasAddons && (h("div", { class: "dso-section-handle-addons" }, this.statusDescription && h("span", { class: "dso-status" }, this.statusDescription), h(HandleIcon, { state: this.status, icon: this.icon, attachmentCount: this.attachmentCount }))))))), h("dso-expandable", { key: '816c9ecfcfcea8ecc3c35606fd64111da5b61366', class: "dso-section-body", open: this.open, enableAnimation: true, minimumHeight: this.isNeutral ? 0 : 4, onDsoExpandableAnimationStart: this.handleExpandableAnimationStart, onDsoExpandableAnimationEnd: this.handleExpandableAnimationEnd }, h("div", { key: '54c23da5a0d25bc29fce23ba44fe7277b2b387d7', class: "dso-section-body-content", ref: (element) => (this.sectionBody = element) }, h("slot", { key: 'd9f1d30c186c5f3e0613e1fded58f5ba0f6e70ca' })))));
|
|
197
197
|
}
|
|
198
198
|
get host() { return getElement(this); }
|
|
199
199
|
};
|