@madgex/design-system 14.0.2 → 14.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/icons.json +1 -1
- package/dist/css/index.css +1 -1
- package/dist/js/index.js +1 -1
- package/package.json +1 -1
- package/src/components/inputs/character-count/README.md +30 -0
- package/src/components/inputs/{textarea → character-count}/character-count.js +1 -1
- package/src/components/inputs/character-count/character-count.test.js +199 -0
- package/src/components/inputs/input/README.md +8 -0
- package/src/components/inputs/input/_template.njk +23 -3
- package/src/components/inputs/input/input.config.js +20 -0
- package/src/components/inputs/input/input.njk +2 -0
- package/src/components/inputs/select/select.config.js +1 -0
- package/src/components/inputs/select/select.scss +22 -0
- package/src/components/inputs/textarea/_template.njk +1 -1
- package/src/js/index.js +1 -1
- package/src/scss/components/__index.scss +1 -0
package/dist/js/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{M as Lt}from"./dropdown-nav-DGGzV21D.js";import{M as Ct}from"./timeout-dialog-plrFUmdZ.js";import{M as Ot}from"./image-cropper-BUN9gxO4.js";window.addEventListener("hashchange",()=>{const t=window.location.hash.trim();Array.from(document.querySelectorAll(`a[href='${t}']`)).forEach(r=>{r.click()})},!1);const ut={baseline:{$value:"4px"},breakpoint:{md:{$value:"600px"},lg:{$value:"1008px"}}},ft={size:ut},Tt="js-tabs-item",Je="mds-tabs",qt="mds-tabs__list",Pt="mds-tabs__list-item",Ke="mds-tabs__panel",me="mds-tabs__tab",ve="mds-tabs__tab--selected",Ue="mds-tabs__panel--hidden",be={left:37,right:39,up:38,down:40},$t=".js-desktop-tabbed",Dt=".js-full-tabbed",_t=parseInt(ft.size.breakpoint.lg.$value,10),x={init:()=>{x.setTabs(Dt),window.innerWidth>_t&&x.setTabs($t)},setTabs:t=>{const e=Array.from(document.querySelectorAll(`${t} .${me}`)),r=Array.from(document.querySelectorAll(`${t} .${qt}`)),n=Array.from(document.querySelectorAll(`${t} .${Pt}`)),s=Array.from(document.querySelectorAll(`${t} .${Ke}`));r.forEach(i=>{i.setAttribute("role","tablist")}),n.forEach(i=>{i.setAttribute("role","presentation")}),e.forEach(i=>{i.setAttribute("role","tab"),i.setAttribute("aria-controls",i.attributes.href.value.substring(1)),i.classList.contains(ve)?i.setAttribute("tabindex","0"):i.setAttribute("tabindex","-1")}),s.forEach(i=>{i.setAttribute("role","tabpanel"),i.setAttribute("aria-labelledby",`label-${i.attributes.id.value}`)});const o=document.querySelectorAll(`${t} .${Tt}`);Array.from(o).forEach(i=>{const c=window.location.hash.trim(),l=i.attributes.href.value,d=i.closest(`.${Je}`),p=x.getAllPanels(d),f=x.getAllTabs(d),h=x.getTargetPanel(i,d);i.addEventListener("click",m=>{m.preventDefault(),x.updateTabs(f,p,i,h,l)}),l===c&&x.updateTabs(f,p,i,h,l)}),r.forEach(i=>{const c=i.closest(`.${Je}`),l=x.getAllPanels(c),d=x.getAllTabs(c);i.addEventListener("keydown",p=>{switch(p.keyCode){case be.left:case be.up:p.preventDefault(),x.moveTab(i,c,d,l,!1);break;case be.right:case be.down:p.preventDefault(),x.moveTab(i,c,d,l,!0);break}})})},getSelectedTab:t=>t.querySelector(`.${ve}`),getPrevTab:t=>t.parentElement.previousSibling?t.parentElement.previousSibling.querySelector(`.${me}`):!1,getNextTab:t=>t.parentElement.nextSibling?t.parentElement.nextSibling.querySelector(`.${me}`):!1,getTargetPanel:(t,e)=>{const r=t.attributes.href.value;return e.querySelector(r)},getAllPanels:t=>Array.from(t.querySelectorAll(`.${Ke}`)),getAllTabs:t=>Array.from(t.querySelectorAll(`.${me}`)),moveTab:(t,e,r,n,s)=>{const o=x.getSelectedTab(t),a=s?x.getNextTab(o):x.getPrevTab(o);if(a){const i=a.attributes.href.value,c=x.getTargetPanel(a,e);x.updateTabs(r,n,a,c,i,!1)}},updateTabs:(t,e,r,n,s)=>{x.clearAllTabs(t),x.setActiveTab(r),x.clearAllPanels(e),x.setActivePanel(n,s)},clearAllTabs:t=>{t.forEach(e=>{e.classList.remove(ve),e.setAttribute("aria-selected","false"),e.setAttribute("tabindex","-1")})},clearAllPanels:t=>{t.forEach(e=>{e.classList.add(Ue)})},setActiveTab:t=>{t.classList.add(ve),t.setAttribute("aria-selected","true"),t.setAttribute("tabindex","0"),t.focus()},setActivePanel:(t,e)=>{t.classList.remove(Ue),window.history.replaceState({},"",e)}},It="mds-accordion--breakpoint",Bt="mds-accordion__label",pt={init:()=>{const t=document.querySelectorAll(`.${It}`),e=window.innerWidth;t.forEach(n=>{pt.checkBreakpoint(n,e)||(n.open=!0,n.querySelector("summary").style.display="none")}),document.querySelectorAll(`.${Bt}`).forEach(n=>{n.addEventListener("click",({target:s})=>{const o=s.closest("details"),a=o.querySelector("summary");o.open=!1,a.focus()})})},checkBreakpoint:(t,e)=>{let r=0;if(t.dataset.bp){const n=t.dataset.bp.replace(/\D/g,""),s=t.dataset.bp.replace(/[0-9]/g,"");let o,a;switch(s){case"px":r=n;break;case"em":o=window.getComputedStyle(document.querySelector("body"))["font-size"],a=n*parseFloat(o),r=a;break;case"rem":o=window.getComputedStyle(document.querySelector("body"))["font-size"],a=n*parseFloat(o),r=a;break;default:return!0}return!(e>r)}return!0}},Mt={init:()=>{const t=document.querySelectorAll(".mds-subnavigation"),e=[];let r;t.forEach(s=>{const o=s.querySelector(".mds-subnavigation__link-list"),a=Array.from(o.children),i=a[0],c=s.querySelector(".mds-subnavigation__mobile-title"),l=s.querySelector(".mds-subnavigation__drawer"),d=s.querySelector(".mds-subnavigation__drawer-label"),p=s.querySelector(".mds-subnavigation__drawer-label-text"),f=s.querySelector(".mds-subnavigation__drawer-content"),h=l.dataset.label,m=l.dataset.labelPlural;d.addEventListener("click",()=>{d.getAttribute("aria-expanded")==="true"?d.setAttribute("aria-expanded","false"):d.setAttribute("aria-expanded","true")}),l.addEventListener("focusout",v=>{l.contains(v.relatedTarget)||d.setAttribute("aria-expanded","false")});const g=()=>o.clientHeight>i.offsetHeight;e.push(()=>{d.setAttribute("aria-expanded","false"),window.getComputedStyle(c).getPropertyValue("display")==="none"?(a.forEach(b=>{o.append(b)}),l.style.display="none",g()&&(l.style.display="list-item",a.slice().reverse().forEach(b=>{if(g()&&b!==l){f.prepend(b);const y=Array.from(f.children).length,E=y>1?m:h;p.innerText=E.replace("{count}",y)}else o.prepend(b)}),f.style.width=`${o.offsetWidth-l.offsetLeft}px`)):(a.forEach(b=>{b!==l&&b!==c&&f.append(b)}),f.style.width="initial",l.style.display="block")})});const n=()=>{e.forEach(s=>{s()})};n(),window.onresize=()=>{clearTimeout(r),r=setTimeout(n,100)}}},Rt="mds-checkbox-accordion__button",Nt="mds-checkbox-accordion__button--open",jt={init:()=>{document.querySelectorAll(`.${Rt}`).forEach(e=>{e.classList.contains(Nt)?e.setAttribute("aria-expanded","true"):e.setAttribute("aria-expanded","false"),e.addEventListener("click",()=>{e.getAttribute("aria-expanded")==="true"?e.setAttribute("aria-expanded","false"):e.setAttribute("aria-expanded","true")})})}};var T="top",P="bottom",$="right",q="left",_e="auto",le=[T,P,$,q],Z="start",Ie="end",Wt="clippingParents",ht="viewport",re="popper",Ft="reference",Ge=le.reduce(function(t,e){return t.concat([e+"-"+Z,e+"-"+Ie])},[]),mt=[].concat(le,[_e]).reduce(function(t,e){return t.concat([e,e+"-"+Z,e+"-"+Ie])},[]),Ht="beforeRead",Vt="read",zt="afterRead",Xt="beforeMain",Yt="main",Jt="afterMain",Kt="beforeWrite",Ut="write",Gt="afterWrite",Qt=[Ht,Vt,zt,Xt,Yt,Jt,Kt,Ut,Gt];function R(t){return t?(t.nodeName||"").toLowerCase():null}function _(t){if(t==null)return window;if(t.toString()!=="[object Window]"){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function ie(t){var e=_(t).Element;return t instanceof e||t instanceof Element}function D(t){var e=_(t).HTMLElement;return t instanceof e||t instanceof HTMLElement}function vt(t){if(typeof ShadowRoot>"u")return!1;var e=_(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Zt(t){var e=t.state;Object.keys(e.elements).forEach(function(r){var n=e.styles[r]||{},s=e.attributes[r]||{},o=e.elements[r];!D(o)||!R(o)||(Object.assign(o.style,n),Object.keys(s).forEach(function(a){var i=s[a];i===!1?o.removeAttribute(a):o.setAttribute(a,i===!0?"":i)}))})}function er(t){var e=t.state,r={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,r.popper),e.styles=r,e.elements.arrow&&Object.assign(e.elements.arrow.style,r.arrow),function(){Object.keys(e.elements).forEach(function(n){var s=e.elements[n],o=e.attributes[n]||{},a=Object.keys(e.styles.hasOwnProperty(n)?e.styles[n]:r[n]),i=a.reduce(function(c,l){return c[l]="",c},{});!D(s)||!R(s)||(Object.assign(s.style,i),Object.keys(o).forEach(function(c){s.removeAttribute(c)}))})}}const tr={name:"applyStyles",enabled:!0,phase:"write",fn:Zt,effect:er,requires:["computeStyles"]};function M(t){return t.split("-")[0]}function ee(t){var e=t.getBoundingClientRect();return{width:e.width,height:e.height,top:e.top,right:e.right,bottom:e.bottom,left:e.left,x:e.left,y:e.top}}function Be(t){var e=ee(t),r=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-r)<=1&&(r=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:r,height:n}}function bt(t,e){var r=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(r&&vt(r)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function W(t){return _(t).getComputedStyle(t)}function rr(t){return["table","td","th"].indexOf(R(t))>=0}function V(t){return((ie(t)?t.ownerDocument:t.document)||window.document).documentElement}function Se(t){return R(t)==="html"?t:t.assignedSlot||t.parentNode||(vt(t)?t.host:null)||V(t)}function Qe(t){return!D(t)||W(t).position==="fixed"?null:t.offsetParent}function nr(t){var e=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,r=navigator.userAgent.indexOf("Trident")!==-1;if(r&&D(t)){var n=W(t);if(n.position==="fixed")return null}for(var s=Se(t);D(s)&&["html","body"].indexOf(R(s))<0;){var o=W(s);if(o.transform!=="none"||o.perspective!=="none"||o.contain==="paint"||["transform","perspective"].indexOf(o.willChange)!==-1||e&&o.willChange==="filter"||e&&o.filter&&o.filter!=="none")return s;s=s.parentNode}return null}function de(t){for(var e=_(t),r=Qe(t);r&&rr(r)&&W(r).position==="static";)r=Qe(r);return r&&(R(r)==="html"||R(r)==="body"&&W(r).position==="static")?e:r||nr(t)||e}function Me(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}var H=Math.max,oe=Math.min,ge=Math.round;function Ae(t,e,r){return H(t,oe(e,r))}function gt(){return{top:0,right:0,bottom:0,left:0}}function yt(t){return Object.assign({},gt(),t)}function wt(t,e){return e.reduce(function(r,n){return r[n]=t,r},{})}var sr=function(e,r){return e=typeof e=="function"?e(Object.assign({},r.rects,{placement:r.placement})):e,yt(typeof e!="number"?e:wt(e,le))};function ir(t){var e,r=t.state,n=t.name,s=t.options,o=r.elements.arrow,a=r.modifiersData.popperOffsets,i=M(r.placement),c=Me(i),l=[q,$].indexOf(i)>=0,d=l?"height":"width";if(!(!o||!a)){var p=sr(s.padding,r),f=Be(o),h=c==="y"?T:q,m=c==="y"?P:$,g=r.rects.reference[d]+r.rects.reference[c]-a[c]-r.rects.popper[d],v=a[c]-r.rects.reference[c],b=de(o),y=b?c==="y"?b.clientHeight||0:b.clientWidth||0:0,E=g/2-v/2,u=p[h],k=y-f[d]-p[m],w=y/2-f[d]/2+E,S=Ae(u,w,k),A=c;r.modifiersData[n]=(e={},e[A]=S,e.centerOffset=S-w,e)}}function or(t){var e=t.state,r=t.options,n=r.element,s=n===void 0?"[data-popper-arrow]":n;s!=null&&(typeof s=="string"&&(s=e.elements.popper.querySelector(s),!s)||bt(e.elements.popper,s)&&(e.elements.arrow=s))}const ar={name:"arrow",enabled:!0,phase:"main",fn:ir,effect:or,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};var cr={top:"auto",right:"auto",bottom:"auto",left:"auto"};function lr(t){var e=t.x,r=t.y,n=window,s=n.devicePixelRatio||1;return{x:ge(ge(e*s)/s)||0,y:ge(ge(r*s)/s)||0}}function Ze(t){var e,r=t.popper,n=t.popperRect,s=t.placement,o=t.offsets,a=t.position,i=t.gpuAcceleration,c=t.adaptive,l=t.roundOffsets,d=l===!0?lr(o):typeof l=="function"?l(o):o,p=d.x,f=p===void 0?0:p,h=d.y,m=h===void 0?0:h,g=o.hasOwnProperty("x"),v=o.hasOwnProperty("y"),b=q,y=T,E=window;if(c){var u=de(r),k="clientHeight",w="clientWidth";u===_(r)&&(u=V(r),W(u).position!=="static"&&(k="scrollHeight",w="scrollWidth")),u=u,s===T&&(y=P,m-=u[k]-n.height,m*=i?1:-1),s===q&&(b=$,f-=u[w]-n.width,f*=i?1:-1)}var S=Object.assign({position:a},c&&cr);if(i){var A;return Object.assign({},S,(A={},A[y]=v?"0":"",A[b]=g?"0":"",A.transform=(E.devicePixelRatio||1)<2?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",A))}return Object.assign({},S,(e={},e[y]=v?m+"px":"",e[b]=g?f+"px":"",e.transform="",e))}function dr(t){var e=t.state,r=t.options,n=r.gpuAcceleration,s=n===void 0?!0:n,o=r.adaptive,a=o===void 0?!0:o,i=r.roundOffsets,c=i===void 0?!0:i,l={placement:M(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,Ze(Object.assign({},l,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:a,roundOffsets:c})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,Ze(Object.assign({},l,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:c})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}const ur={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:dr,data:{}};var ye={passive:!0};function fr(t){var e=t.state,r=t.instance,n=t.options,s=n.scroll,o=s===void 0?!0:s,a=n.resize,i=a===void 0?!0:a,c=_(e.elements.popper),l=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&l.forEach(function(d){d.addEventListener("scroll",r.update,ye)}),i&&c.addEventListener("resize",r.update,ye),function(){o&&l.forEach(function(d){d.removeEventListener("scroll",r.update,ye)}),i&&c.removeEventListener("resize",r.update,ye)}}const pr={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:fr,data:{}};var hr={left:"right",right:"left",bottom:"top",top:"bottom"};function xe(t){return t.replace(/left|right|bottom|top/g,function(e){return hr[e]})}var mr={start:"end",end:"start"};function et(t){return t.replace(/start|end/g,function(e){return mr[e]})}function Re(t){var e=_(t),r=e.pageXOffset,n=e.pageYOffset;return{scrollLeft:r,scrollTop:n}}function Ne(t){return ee(V(t)).left+Re(t).scrollLeft}function vr(t){var e=_(t),r=V(t),n=e.visualViewport,s=r.clientWidth,o=r.clientHeight,a=0,i=0;return n&&(s=n.width,o=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(a=n.offsetLeft,i=n.offsetTop)),{width:s,height:o,x:a+Ne(t),y:i}}function br(t){var e,r=V(t),n=Re(t),s=(e=t.ownerDocument)==null?void 0:e.body,o=H(r.scrollWidth,r.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),a=H(r.scrollHeight,r.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),i=-n.scrollLeft+Ne(t),c=-n.scrollTop;return W(s||r).direction==="rtl"&&(i+=H(r.clientWidth,s?s.clientWidth:0)-o),{width:o,height:a,x:i,y:c}}function je(t){var e=W(t),r=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(r+s+n)}function Et(t){return["html","body","#document"].indexOf(R(t))>=0?t.ownerDocument.body:D(t)&&je(t)?t:Et(Se(t))}function se(t,e){var r;e===void 0&&(e=[]);var n=Et(t),s=n===((r=t.ownerDocument)==null?void 0:r.body),o=_(n),a=s?[o].concat(o.visualViewport||[],je(n)?n:[]):n,i=e.concat(a);return s?i:i.concat(se(Se(a)))}function Pe(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function gr(t){var e=ee(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}function tt(t,e){return e===ht?Pe(vr(t)):D(e)?gr(e):Pe(br(V(t)))}function yr(t){var e=se(Se(t)),r=["absolute","fixed"].indexOf(W(t).position)>=0,n=r&&D(t)?de(t):t;return ie(n)?e.filter(function(s){return ie(s)&&bt(s,n)&&R(s)!=="body"}):[]}function wr(t,e,r){var n=e==="clippingParents"?yr(t):[].concat(e),s=[].concat(n,[r]),o=s[0],a=s.reduce(function(i,c){var l=tt(t,c);return i.top=H(l.top,i.top),i.right=oe(l.right,i.right),i.bottom=oe(l.bottom,i.bottom),i.left=H(l.left,i.left),i},tt(t,o));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function ae(t){return t.split("-")[1]}function At(t){var e=t.reference,r=t.element,n=t.placement,s=n?M(n):null,o=n?ae(n):null,a=e.x+e.width/2-r.width/2,i=e.y+e.height/2-r.height/2,c;switch(s){case T:c={x:a,y:e.y-r.height};break;case P:c={x:a,y:e.y+e.height};break;case $:c={x:e.x+e.width,y:i};break;case q:c={x:e.x-r.width,y:i};break;default:c={x:e.x,y:e.y}}var l=s?Me(s):null;if(l!=null){var d=l==="y"?"height":"width";switch(o){case Z:c[l]=c[l]-(e[d]/2-r[d]/2);break;case Ie:c[l]=c[l]+(e[d]/2-r[d]/2);break}}return c}function ce(t,e){e===void 0&&(e={});var r=e,n=r.placement,s=n===void 0?t.placement:n,o=r.boundary,a=o===void 0?Wt:o,i=r.rootBoundary,c=i===void 0?ht:i,l=r.elementContext,d=l===void 0?re:l,p=r.altBoundary,f=p===void 0?!1:p,h=r.padding,m=h===void 0?0:h,g=yt(typeof m!="number"?m:wt(m,le)),v=d===re?Ft:re,b=t.elements.reference,y=t.rects.popper,E=t.elements[f?v:d],u=wr(ie(E)?E:E.contextElement||V(t.elements.popper),a,c),k=ee(b),w=At({reference:k,element:y,placement:s}),S=Pe(Object.assign({},y,w)),A=d===re?S:k,L={top:u.top-A.top+g.top,bottom:A.bottom-u.bottom+g.bottom,left:u.left-A.left+g.left,right:A.right-u.right+g.right},O=t.modifiersData.offset;if(d===re&&O){var I=O[s];Object.keys(L).forEach(function(N){var C=[$,P].indexOf(N)>=0?1:-1,z=[T,P].indexOf(N)>=0?"y":"x";L[N]+=I[z]*C})}return L}function Er(t,e){e===void 0&&(e={});var r=e,n=r.placement,s=r.boundary,o=r.rootBoundary,a=r.padding,i=r.flipVariations,c=r.allowedAutoPlacements,l=c===void 0?mt:c,d=ae(n),p=d?i?Ge:Ge.filter(function(m){return ae(m)===d}):le,f=p.filter(function(m){return l.indexOf(m)>=0});f.length===0&&(f=p);var h=f.reduce(function(m,g){return m[g]=ce(t,{placement:g,boundary:s,rootBoundary:o,padding:a})[M(g)],m},{});return Object.keys(h).sort(function(m,g){return h[m]-h[g]})}function Ar(t){if(M(t)===_e)return[];var e=xe(t);return[et(t),e,et(e)]}function xr(t){var e=t.state,r=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=r.mainAxis,o=s===void 0?!0:s,a=r.altAxis,i=a===void 0?!0:a,c=r.fallbackPlacements,l=r.padding,d=r.boundary,p=r.rootBoundary,f=r.altBoundary,h=r.flipVariations,m=h===void 0?!0:h,g=r.allowedAutoPlacements,v=e.options.placement,b=M(v),y=b===v,E=c||(y||!m?[xe(v)]:Ar(v)),u=[v].concat(E).reduce(function(Y,B){return Y.concat(M(B)===_e?Er(e,{placement:B,boundary:d,rootBoundary:p,padding:l,flipVariations:m,allowedAutoPlacements:g}):B)},[]),k=e.rects.reference,w=e.rects.popper,S=new Map,A=!0,L=u[0],O=0;O<u.length;O++){var I=u[O],N=M(I),C=ae(I)===Z,z=[T,P].indexOf(N)>=0,te=z?"width":"height",J=ce(e,{placement:I,boundary:d,rootBoundary:p,altBoundary:f,padding:l}),X=z?C?$:q:C?P:T;k[te]>w[te]&&(X=xe(X));var ke=xe(X),K=[];if(o&&K.push(J[N]<=0),i&&K.push(J[X]<=0,J[ke]<=0),K.every(function(Y){return Y})){L=I,A=!1;break}S.set(I,K)}if(A)for(var ue=m?3:1,Le=function(B){var pe=u.find(function(Ce){var G=S.get(Ce);if(G)return G.slice(0,B).every(function(Oe){return Oe})});if(pe)return L=pe,"break"},U=ue;U>0;U--){var fe=Le(U);if(fe==="break")break}e.placement!==L&&(e.modifiersData[n]._skip=!0,e.placement=L,e.reset=!0)}}const Sr={name:"flip",enabled:!0,phase:"main",fn:xr,requiresIfExists:["offset"],data:{_skip:!1}};function rt(t,e,r){return r===void 0&&(r={x:0,y:0}),{top:t.top-e.height-r.y,right:t.right-e.width+r.x,bottom:t.bottom-e.height+r.y,left:t.left-e.width-r.x}}function nt(t){return[T,$,P,q].some(function(e){return t[e]>=0})}function kr(t){var e=t.state,r=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,a=ce(e,{elementContext:"reference"}),i=ce(e,{altBoundary:!0}),c=rt(a,n),l=rt(i,s,o),d=nt(c),p=nt(l);e.modifiersData[r]={referenceClippingOffsets:c,popperEscapeOffsets:l,isReferenceHidden:d,hasPopperEscaped:p},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":d,"data-popper-escaped":p})}const Lr={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:kr};function Cr(t,e,r){var n=M(t),s=[q,T].indexOf(n)>=0?-1:1,o=typeof r=="function"?r(Object.assign({},e,{placement:t})):r,a=o[0],i=o[1];return a=a||0,i=(i||0)*s,[q,$].indexOf(n)>=0?{x:i,y:a}:{x:a,y:i}}function Or(t){var e=t.state,r=t.options,n=t.name,s=r.offset,o=s===void 0?[0,0]:s,a=mt.reduce(function(d,p){return d[p]=Cr(p,e.rects,o),d},{}),i=a[e.placement],c=i.x,l=i.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=c,e.modifiersData.popperOffsets.y+=l),e.modifiersData[n]=a}const Tr={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Or};function qr(t){var e=t.state,r=t.name;e.modifiersData[r]=At({reference:e.rects.reference,element:e.rects.popper,placement:e.placement})}const Pr={name:"popperOffsets",enabled:!0,phase:"read",fn:qr,data:{}};function $r(t){return t==="x"?"y":"x"}function Dr(t){var e=t.state,r=t.options,n=t.name,s=r.mainAxis,o=s===void 0?!0:s,a=r.altAxis,i=a===void 0?!1:a,c=r.boundary,l=r.rootBoundary,d=r.altBoundary,p=r.padding,f=r.tether,h=f===void 0?!0:f,m=r.tetherOffset,g=m===void 0?0:m,v=ce(e,{boundary:c,rootBoundary:l,padding:p,altBoundary:d}),b=M(e.placement),y=ae(e.placement),E=!y,u=Me(b),k=$r(u),w=e.modifiersData.popperOffsets,S=e.rects.reference,A=e.rects.popper,L=typeof g=="function"?g(Object.assign({},e.rects,{placement:e.placement})):g,O={x:0,y:0};if(w){if(o||i){var I=u==="y"?T:q,N=u==="y"?P:$,C=u==="y"?"height":"width",z=w[u],te=w[u]+v[I],J=w[u]-v[N],X=h?-A[C]/2:0,ke=y===Z?S[C]:A[C],K=y===Z?-A[C]:-S[C],ue=e.elements.arrow,Le=h&&ue?Be(ue):{width:0,height:0},U=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:gt(),fe=U[I],Y=U[N],B=Ae(0,S[C],Le[C]),pe=E?S[C]/2-X-B-fe-L:ke-B-fe-L,Ce=E?-S[C]/2+X+B+Y+L:K+B+Y+L,G=e.elements.arrow&&de(e.elements.arrow),Oe=G?u==="y"?G.clientTop||0:G.clientLeft||0:0,We=e.modifiersData.offset?e.modifiersData.offset[e.placement][u]:0,Fe=w[u]+pe-We-Oe,He=w[u]+Ce-We;if(o){var Ve=Ae(h?oe(te,Fe):te,z,h?H(J,He):J);w[u]=Ve,O[u]=Ve-z}if(i){var St=u==="x"?T:q,kt=u==="x"?P:$,he=w[k],ze=he+v[St],Xe=he-v[kt],Ye=Ae(h?oe(ze,Fe):ze,he,h?H(Xe,He):Xe);w[k]=Ye,O[k]=Ye-he}}e.modifiersData[n]=O}}const _r={name:"preventOverflow",enabled:!0,phase:"main",fn:Dr,requiresIfExists:["offset"]};function Ir(t){return{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function Br(t){return t===_(t)||!D(t)?Re(t):Ir(t)}function Mr(t,e,r){r===void 0&&(r=!1);var n=V(e),s=ee(t),o=D(e),a={scrollLeft:0,scrollTop:0},i={x:0,y:0};return(o||!o&&!r)&&((R(e)!=="body"||je(n))&&(a=Br(e)),D(e)?(i=ee(e),i.x+=e.clientLeft,i.y+=e.clientTop):n&&(i.x=Ne(n))),{x:s.left+a.scrollLeft-i.x,y:s.top+a.scrollTop-i.y,width:s.width,height:s.height}}function Rr(t){var e=new Map,r=new Set,n=[];t.forEach(function(o){e.set(o.name,o)});function s(o){r.add(o.name);var a=[].concat(o.requires||[],o.requiresIfExists||[]);a.forEach(function(i){if(!r.has(i)){var c=e.get(i);c&&s(c)}}),n.push(o)}return t.forEach(function(o){r.has(o.name)||s(o)}),n}function Nr(t){var e=Rr(t);return Qt.reduce(function(r,n){return r.concat(e.filter(function(s){return s.phase===n}))},[])}function jr(t){var e;return function(){return e||(e=new Promise(function(r){Promise.resolve().then(function(){e=void 0,r(t())})})),e}}function Wr(t){var e=t.reduce(function(r,n){var s=r[n.name];return r[n.name]=s?Object.assign({},s,n,{options:Object.assign({},s.options,n.options),data:Object.assign({},s.data,n.data)}):n,r},{});return Object.keys(e).map(function(r){return e[r]})}var st={placement:"bottom",modifiers:[],strategy:"absolute"};function it(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return!e.some(function(n){return!(n&&typeof n.getBoundingClientRect=="function")})}function Fr(t){t===void 0&&(t={});var e=t,r=e.defaultModifiers,n=r===void 0?[]:r,s=e.defaultOptions,o=s===void 0?st:s;return function(i,c,l){l===void 0&&(l=o);var d={placement:"bottom",orderedModifiers:[],options:Object.assign({},st,o),modifiersData:{},elements:{reference:i,popper:c},attributes:{},styles:{}},p=[],f=!1,h={state:d,setOptions:function(b){g(),d.options=Object.assign({},o,d.options,b),d.scrollParents={reference:ie(i)?se(i):i.contextElement?se(i.contextElement):[],popper:se(c)};var y=Nr(Wr([].concat(n,d.options.modifiers)));return d.orderedModifiers=y.filter(function(E){return E.enabled}),m(),h.update()},forceUpdate:function(){if(!f){var b=d.elements,y=b.reference,E=b.popper;if(it(y,E)){d.rects={reference:Mr(y,de(E),d.options.strategy==="fixed"),popper:Be(E)},d.reset=!1,d.placement=d.options.placement,d.orderedModifiers.forEach(function(O){return d.modifiersData[O.name]=Object.assign({},O.data)});for(var u=0;u<d.orderedModifiers.length;u++){if(d.reset===!0){d.reset=!1,u=-1;continue}var k=d.orderedModifiers[u],w=k.fn,S=k.options,A=S===void 0?{}:S,L=k.name;typeof w=="function"&&(d=w({state:d,options:A,name:L,instance:h})||d)}}}},update:jr(function(){return new Promise(function(v){h.forceUpdate(),v(d)})}),destroy:function(){g(),f=!0}};if(!it(i,c))return h;h.setOptions(l).then(function(v){!f&&l.onFirstUpdate&&l.onFirstUpdate(v)});function m(){d.orderedModifiers.forEach(function(v){var b=v.name,y=v.options,E=y===void 0?{}:y,u=v.effect;if(typeof u=="function"){var k=u({state:d,name:b,instance:h,options:E}),w=function(){};p.push(k||w)}})}function g(){p.forEach(function(v){return v()}),p=[]}return h}}var Hr=[pr,Pr,ur,tr,Tr,Sr,_r,ar,Lr],Vr=Fr({defaultModifiers:Hr});const zr=parseInt(ut.baseline.$value,10),Xr="js-mds-popover-trigger",we="mds-popover--active",ne={init:()=>{Array.from(document.querySelectorAll(`.${Xr}`)).forEach(e=>{const n=`${e.getAttribute("id")}-content`,s=document.getElementById(n),o=s.dataset?s.dataset.placement:null,a=Vr(e,s,{placement:o||"top-end",strategy:"fixed",modifiers:[{name:"offset",options:{offset:[0,zr*3]}},{name:"arrow",options:{padding:5}}]});e.setAttribute("aria-expanded","false"),s.setAttribute("aria-hidden","true"),e.addEventListener("click",i=>{i.preventDefault(),a.update(),s.classList.toggle(we),ne.setAriaAttr(e,s,we)}),document.addEventListener("mousedown",i=>{ne.hide(e,s,a,we,i)}),document.addEventListener("keydown",i=>{ne.hide(e,s,a,we,i)})})},hide:(t,e,r,n,s)=>{!t.contains(s.target)&&!r.state.elements.popper.contains(s.target)&&e.classList.contains(n)&&(e.classList.remove(n),ne.setAriaAttr(t,e,n))},setAriaAttr:(t,e,r)=>{e.classList.contains(r)?(t.setAttribute("aria-expanded","true"),e.removeAttribute("aria-hidden")):(t.setAttribute("aria-expanded","false"),e.setAttribute("aria-hidden","true"))}},Yr=parseInt(ft.size.breakpoint.md.$value,10),ot="data-modal-id",at="mds-modal--active",Jr="js-mds-modal-close";let Ee;const Q={init:()=>{window.innerWidth>Yr&&Array.from(document.querySelectorAll(`[${ot}]`)).forEach(r=>{const n=r.getAttribute(ot),s=document.getElementById(n),o=Array.from(s.querySelectorAll(`.${Jr}`)),a=s.getAttribute("data-site-container"),i=document.getElementById(a);let l=s.querySelectorAll('a[href], area[href], input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex="0"], [contenteditable]');l=Array.prototype.slice.call(l);const d=l[0],p=l[l.length-1];r.addEventListener("click",f=>{f.preventDefault(),Q.open(s,d,i)}),s.addEventListener("click",f=>{f.target===s&&Q.close(s,Ee,i)}),s.addEventListener("keydown",f=>{Q.trapFocus(f,d,p),(f.key==="Escape"||f.key==="Esc")&&Q.close(s,Ee,i)}),o.forEach(f=>{f.addEventListener("click",()=>{Q.close(s,Ee,i)})})})},open:(t,e,r)=>{Ee=document.activeElement,t.classList.add(at),e.focus(),r?.setAttribute("aria-hidden","true")},close:(t,e,r)=>{r?.removeAttribute("aria-hidden"),t.classList.remove(at),e.focus()},trapFocus:(t,e,r)=>{t.key==="Tab"&&(t.shiftKey?document.activeElement===e&&(t.preventDefault(),r.focus()):document.activeElement===r&&(t.preventDefault(),e.focus()))}};class j extends HTMLElement{static selectedFileClass="mds-file-upload--selected-file";static selectedFileIsImageClass="mds-file-upload--selected-file-is-image";static dragOverClass="mds-file-upload--dragover";constructor(){super()}connectedCallback(){this.classList.add("mds-form-element--file-supported"),this.#e.addEventListener("change",this.#l),this.#r.addEventListener("click",this.#p),this.#e.addEventListener("dragover",this.#s),this.#e.addEventListener("dragenter",this.#s),this.#e.addEventListener("dragleave",this.#d),this.#e.addEventListener("dragend",this.#d),this.#e.addEventListener("drop",this.#d),this.#i?.addEventListener("commit",this.#h),this.#i?.addEventListener("reset",this.#v),this.#b(!0)}disconnectedCallback(){this.#e?.removeEventListener("change",this.#l),this.#r?.removeEventListener("click",this.#p),this.#e?.removeEventListener("dragover",this.#s),this.#e?.removeEventListener("dragenter",this.#s),this.#e?.removeEventListener("dragleave",this.#d),this.#e?.removeEventListener("dragend",this.#d),this.#e?.removeEventListener("drop",this.#d),this.#i?.removeEventListener("commit",this.#h),this.#i?.removeEventListener("reset",this.#v)}get rootNode(){return this}get#a(){return this.getRootNode({composed:!0})}get#n(){return this.#e?.files?.[0]}get#c(){return this.#n?.type?.startsWith("image/")}get#o(){const e=this.rootNode.getAttribute("no-auto-open-image-cropper");return e!==null&&e!=="false"}get#t(){return this.rootNode.querySelector(".mds-file-upload__file-name")}get#e(){return this.rootNode.querySelector("input[type=file]")}get#r(){return this.rootNode.querySelector(".mds-file-upload__remove-button")}get#u(){return this.rootNode.querySelector(".mds-file-upload__preview-image")}get#m(){return this.rootNode.querySelector(".mds-file-upload__open-modal")}get#f(){return this.rootNode.querySelector(".mds-modal")}get#i(){return this.rootNode.querySelector("mds-image-cropper")}#l=e=>{const{dontOpenModal:r=!1}=e?.detail||{};this.#b(),this.#n&&this.#r.focus(),!r&&this.#c&&!this.#o&&this.#y()};#p=e=>{e.preventDefault(),this.removeFile(),this.#e.focus()};#s=e=>{e.stopPropagation(),this.classList.add(j.dragOverClass)};#d=e=>{e.stopPropagation(),this.classList.remove(j.dragOverClass)};#h=e=>{const r=e.detail;if(r){const n=new File([r],this.#n?.name||"cropped-image",{type:r.type}),s=new DataTransfer;s.items.add(n),this.#e.files=s.files,this.#e.dispatchEvent(new CustomEvent("change",{detail:{dontOpenModal:!0},bubbles:!0})),this.#g()}};#v=()=>{this.#g()};#b(e=!1){if(this.#n)if(this.#t.textContent=this.#n.name,this.classList.add(j.selectedFileClass),this.#c){this.classList.add(j.selectedFileIsImageClass);const r=new FileReader;r.onload=n=>{this.#u.src=n.target.result,this.#i?.setAttribute("src",n.target.result)},r.readAsDataURL(this.#n)}else this.classList.remove(j.selectedFileIsImageClass);else e||(this.#t.textContent="",this.classList.remove(j.selectedFileClass),this.classList.remove(j.selectedFileIsImageClass))}#y(){this.#m?.dispatchEvent(new Event("click"))}#g(){this.#f?.querySelector(".js-mds-modal-close").dispatchEvent(new Event("click"))}removeFile(){this.#e.value="",this.#e.dispatchEvent(new Event("change",{bubbles:!0}))}}const Kr=".mds-form-element--character-count",Ur=".mds-form-message--character-count",Gr=".js-character-count-number",Qr=".mds-form-control",$e={init:()=>{Array.from(document.querySelectorAll(Kr)).forEach(e=>{const r=e.querySelector(Qr),n=r.getAttribute("maxlength"),s=e.querySelector(Ur),o=e.querySelector(Gr);r.removeAttribute("maxlength"),$e.updateCounter(r,n,o,s),r.addEventListener("keyup",a=>{a.stopPropagation(),$e.updateCounter(r,n,o,s)})})},updateCounter:(t,e,r,n)=>{const s=t.value.match(/(\r\n|\n|\r)/g),o=t.value.length+(s?s.length:0),a=e-o;r.textContent=a,a<0?n.classList.add("mds-form-message--error"):n.classList.remove("mds-form-message--error")}},Zr="js-mds-button-double-submit",xt={init:()=>{Array.from(document.querySelectorAll(`.${Zr}`)).forEach(e=>{e.addEventListener("click",()=>{xt.toggleDisable(e)})})},toggleDisable:t=>{setTimeout(()=>{t.setAttribute("disabled","")},1),setTimeout(()=>{t.removeAttribute("disabled")},1e3)}},en={setFluidVideos:()=>{Array.from(document.querySelectorAll(".mds-prose iframe, .mds-prose embed, .mds-prose object")).forEach(e=>{const r=document.createElement("div");r.classList.add("mds-fluid-video"),r.innerHTML=e.outerHTML,e.replaceWith(r)})}};class tn extends HTMLElement{connectedCallback(){const r=this.querySelector(".mds-card-link__link");let n;this.onmousedown=()=>{n=+new Date},this.onmouseup=()=>{+new Date-n<200&&r.click(),n=void 0}}disconnectedCallback(){this.onmousedown=this.onmouseup=null}}class rn extends HTMLElement{static observedAttributes=["form","field-name","show-when"];showHide=()=>{const{field:e}=this,r=this.getAttribute("show-when");(e.type==="checkbox"?e.checked.toString():e.value.toString())===r?this.hidden=!1:this.hidden=!0};setup=()=>{this.cleanup();const e=this.getAttribute("form"),r=this.getAttribute("field-name");if(this.formElement=e?document.querySelector(e):this.closest("form"),!this.formElement)throw new Error(`<mds-conditional-section> for ${r} could not find the associated form`);if(this.field=this.formElement.elements[r],!this.field)throw new Error(`<mds-conditional-section> for ${r} could not find the associated field`);this.showHide(),this.formElement.addEventListener("input",this.showHide)};connectedCallback(){this.setup()}cleanup=()=>{this.formElement?.removeEventListener("input",this.showHide)};disconnectedCallback(){this.cleanup()}attributeChangedCallback(e,r,n){const{showHide:s,setup:o}=this;this.isConnected&&r!==n&&(e==="show-when"?s():(e==="field-name"||e==="form")&&o())}}const F=".mds-form-check",Te=".mds-form-check__input",nn=".mds-form-check__label",ct=".mds-form-check__nested-container",lt=".mds-category-picker__pill",qe=".mds-category-picker__clear-pill",dt={optionsSelectedSingular:"1 option selected",optionsSelectedPlural:"{count} options selected",optionsFoundSingular:"1 option found",optionsFoundPlural:"{count} options found"};class sn extends HTMLElement{#a;#n;#c;#o;#t;#e;#r;#u;#m;#f;#i=new WeakMap;#l=!1;connectedCallback(){const e=this.querySelector(".mds-category-picker__templates");if(this.#n=this.querySelector(".mds-category-picker__pillbox"),this.#t=this.querySelector(".mds-category-picker__search"),this.#e=this.querySelector(".mds-category-picker__input-wrapper"),this.#r=this.querySelector(".mds-category-picker__dropdown"),this.#u=this.querySelector(".mds-category-picker__live-region"),this.#m=this.querySelector(".mds-category-picker__no-results"),!e||!this.#n||!this.#t||!this.#r)return;try{this.#f={...dt,...JSON.parse(this.getAttribute("i18n")||"{}")}}catch{this.#f=dt}if(this.#c=e.querySelector(lt),this.#o=e.querySelector(qe),!this.#c||!this.#o)return;e.remove(),this.#a=new AbortController;const r={signal:this.#a.signal};this.#n.addEventListener("click",this.#b,r),this.#r.addEventListener("change",this.#y,r),this.#t.addEventListener("blur",this.#d,r),this.#t.addEventListener("input",this.#g,r),this.#t.addEventListener("keydown",this.#k,r),this.#e.addEventListener("click",()=>this.#t.focus(),r),this.#t.addEventListener("focus",()=>this.#p(),r),this.#r.addEventListener("mousedown",n=>{n.target!==this.#t&&n.preventDefault()},r),this.#r.addEventListener("focusout",n=>{(!n.relatedTarget||!this.contains(n.relatedTarget))&&this.#s()},r),this.#r.addEventListener("keydown",n=>{n.key==="Escape"&&(this.#s(),this.#t.focus())},r),document.addEventListener("click",n=>{n.composedPath().includes(this)||this.#s()},r),this.#h()}disconnectedCallback(){this.#a?.abort()}#p(){this.#l||(this.#l=!0,this.classList.add("mds-category-picker--open"),this.#t.setAttribute("aria-expanded","true"))}#s(){this.#l&&(this.#l=!1,this.classList.remove("mds-category-picker--open"),this.#t.setAttribute("aria-expanded","false"),this.#t.value="",this.#w())}#d=e=>{const r=e.relatedTarget;r&&(this.#r.contains(r)||this.#e.contains(r))||this.#s()};#h=()=>{this.#n.replaceChildren(),this.#i=new WeakMap;const e="mds-form-check--has-selection";for(const r of this.#r.querySelectorAll(F))r.classList.remove(e);for(const r of this.#r.querySelectorAll(`${Te}:checked`)){this.#v(r);let n=r.closest(F)?.parentElement;for(;n&&n!==this.#r;)n.matches(F)&&n.classList.add(e),n=n.parentElement}};#v(e){const r=e.dataset.path;if(!r)return;const n=this.#c.cloneNode(!0),s=this.#o.cloneNode(!0);s.setAttribute("aria-label",`${s.getAttribute("aria-label")} ${r}`);const o=document.createElement("span");o.className="mds-category-picker__pill-text",o.textContent=r,n.appendChild(o),n.appendChild(s),this.#n.appendChild(n),this.#i.set(s,e)}#b=({target:e})=>{const r=this.#i.get(e.closest(qe));r&&(r.checked=!1,r.dispatchEvent(new Event("change",{bubbles:!0})))};#y=()=>{this.#h(),this.#t.value="",this.#w();const e=this.#r.querySelectorAll(`${Te}:checked`).length;this.#x(this.#A("optionsSelectedSingular","optionsSelectedPlural",e))};#g=()=>{const e=this.#t.value.trim();e.length>=2?this.#S(e):this.#w()};#S(e){const r=e.toLowerCase(),n=this.#r.querySelectorAll(F),s=new Set,o=new Set;for(const i of n){const c=i.querySelector(nn)?.textContent.trim().toLowerCase()||"";if(c){if(i.querySelector(ct)){c.includes(r)&&(s.add(i),o.add(i));continue}if(i.hidden=!c.includes(r),!i.hidden){let l=i.parentElement;for(;l&&l!==this.#r;)l.matches(F)&&s.add(l),l=l.parentElement}}}for(const i of n){const c=i.querySelector(ct);if(c)if(s.has(i)){if(i.hidden=!1,i.querySelector(".mds-checkbox-accordion__button")?.setAttribute("aria-expanded","true"),o.has(i))for(const l of c.querySelectorAll(F))l.hidden=!1}else i.hidden=!0}let a=0;for(const i of n)i.hidden||a++;this.#E(a===0),this.#x(this.#A("optionsFoundSingular","optionsFoundPlural",a))}#w(){for(const e of this.#r.querySelectorAll(F))e.hidden=!1;this.#E(!1)}#E(e){this.#m?.classList.toggle("mds-category-picker__no-results--visible",e)}#k=e=>{switch(e.key){case"Escape":this.#s(),this.#t.blur();break;case"ArrowDown":{e.preventDefault(),this.#l||this.#p();for(const r of this.#r.querySelectorAll(F)){if(r.hidden)continue;const n=r.querySelector(Te);if(n){n.focus();break}}break}case"Backspace":if(this.#t.value===""){const r=this.#n.querySelectorAll(lt),n=r[r.length-1];if(!n)break;const s=this.#i.get(n.querySelector(qe));s&&(s.checked=!1,s.dispatchEvent(new Event("change",{bubbles:!0})))}break;case"Tab":this.#s();break}};#A(e,r,n){return n===1?this.#f[e]:this.#f[r].replace("{count}",String(n))}#x(e){this.#u&&(this.#u.textContent="",requestAnimationFrame(()=>{this.#u.textContent=e}))}}class on extends HTMLElement{#a;constructor(){super()}#n(e){const r=[0,.25,.5,.75,1];if(e==null||e.trim()==="")return r;const n=Number(e);if(!Number.isNaN(n))return n;const s=o=>Array.isArray(o)&&o.length>0&&o.every(a=>typeof a=="number"&&!Number.isNaN(a));try{const o=JSON.parse(e);if(s(o))return o}catch{}return console.warn(`${this.constructor.name}: Invalid observer-threshold "${e}". Falling back to default thresholds.`),r}#c(){const e=new Map,r=n=>{if(n.forEach(i=>{i.intersectionRatio===0?e.delete(i.target.id):e.set(i.target.id,i.intersectionRatio)}),e.size===0){this.#o.forEach(i=>i.removeAttribute("aria-current"));return}const s=e.entries().reduce((i,c)=>c[1]>i[1]?c:i),o=s[0],a=s[1];this.#o.forEach(i=>i.removeAttribute("aria-current")),o&&a>0&&this.querySelector(`[href="#${CSS.escape(o)}"]`)?.setAttribute("aria-current",this.#e)};this.#a=new IntersectionObserver(r,this.#r),this.#t.forEach(n=>this.#a.observe(n))}connectedCallback(){this.#t.length>0&&this.#c()}disconnectedCallback(){this.#a?.disconnect()}get#o(){return Array.from(this.querySelectorAll("a"))}get#t(){const e=[];return this.#o.forEach(r=>{if(new URL(r.href).host!==window.location.host||!r.hash)return;const n=document.querySelector(`#${CSS.escape(r.hash.substring(1))}`);if(!n){console.warn(`${this.constructor.name}: Element with id "${r.hash}" doesn't exist on this page.`);return}e.push(n)}),e}get#e(){return this.getAttribute("aria-current-value")||"step"}get#r(){const e=this.getAttribute("observer-root"),r=this.getAttribute("observer-threshold");return{root:document.querySelector(e),threshold:this.#n(r)}}}window.customElements.get("mds-dropdown-nav")||window.customElements.define("mds-dropdown-nav",Lt);window.customElements.get("mds-timeout-dialog")||window.customElements.define("mds-timeout-dialog",Ct);window.customElements.get("mds-card-link")||window.customElements.define("mds-card-link",tn);window.customElements.get("mds-conditional-section")||window.customElements.define("mds-conditional-section",rn);window.customElements.get("mds-image-cropper")||window.customElements.define("mds-image-cropper",Ot);window.customElements.get("mds-file-upload")||window.customElements.define("mds-file-upload",j);window.customElements.get("mds-category-picker")||window.customElements.define("mds-category-picker",sn);window.customElements.get("mds-scroll-spy")||window.customElements.define("mds-scroll-spy",on);const De=()=>{x.init(),pt.init(),Mt.init(),jt.init(),Q.init(),$e.init(),ne.init(),xt.init(),en.setFluidVideos()};window.mdgxInitAll=De;document.readyState==="loading"?document.addEventListener("DOMContentLoaded",De):De();
|
|
1
|
+
import{M as Lt}from"./dropdown-nav-DGGzV21D.js";import{M as Ct}from"./timeout-dialog-plrFUmdZ.js";import{M as Ot}from"./image-cropper-BUN9gxO4.js";window.addEventListener("hashchange",()=>{const t=window.location.hash.trim();Array.from(document.querySelectorAll(`a[href='${t}']`)).forEach(r=>{r.click()})},!1);const ut={baseline:{$value:"4px"},breakpoint:{md:{$value:"600px"},lg:{$value:"1008px"}}},ft={size:ut},Tt="js-tabs-item",Je="mds-tabs",qt="mds-tabs__list",Pt="mds-tabs__list-item",Ke="mds-tabs__panel",me="mds-tabs__tab",ve="mds-tabs__tab--selected",Ue="mds-tabs__panel--hidden",be={left:37,right:39,up:38,down:40},$t=".js-desktop-tabbed",Dt=".js-full-tabbed",_t=parseInt(ft.size.breakpoint.lg.$value,10),x={init:()=>{x.setTabs(Dt),window.innerWidth>_t&&x.setTabs($t)},setTabs:t=>{const e=Array.from(document.querySelectorAll(`${t} .${me}`)),r=Array.from(document.querySelectorAll(`${t} .${qt}`)),n=Array.from(document.querySelectorAll(`${t} .${Pt}`)),s=Array.from(document.querySelectorAll(`${t} .${Ke}`));r.forEach(i=>{i.setAttribute("role","tablist")}),n.forEach(i=>{i.setAttribute("role","presentation")}),e.forEach(i=>{i.setAttribute("role","tab"),i.setAttribute("aria-controls",i.attributes.href.value.substring(1)),i.classList.contains(ve)?i.setAttribute("tabindex","0"):i.setAttribute("tabindex","-1")}),s.forEach(i=>{i.setAttribute("role","tabpanel"),i.setAttribute("aria-labelledby",`label-${i.attributes.id.value}`)});const o=document.querySelectorAll(`${t} .${Tt}`);Array.from(o).forEach(i=>{const c=window.location.hash.trim(),l=i.attributes.href.value,d=i.closest(`.${Je}`),p=x.getAllPanels(d),f=x.getAllTabs(d),h=x.getTargetPanel(i,d);i.addEventListener("click",m=>{m.preventDefault(),x.updateTabs(f,p,i,h,l)}),l===c&&x.updateTabs(f,p,i,h,l)}),r.forEach(i=>{const c=i.closest(`.${Je}`),l=x.getAllPanels(c),d=x.getAllTabs(c);i.addEventListener("keydown",p=>{switch(p.keyCode){case be.left:case be.up:p.preventDefault(),x.moveTab(i,c,d,l,!1);break;case be.right:case be.down:p.preventDefault(),x.moveTab(i,c,d,l,!0);break}})})},getSelectedTab:t=>t.querySelector(`.${ve}`),getPrevTab:t=>t.parentElement.previousSibling?t.parentElement.previousSibling.querySelector(`.${me}`):!1,getNextTab:t=>t.parentElement.nextSibling?t.parentElement.nextSibling.querySelector(`.${me}`):!1,getTargetPanel:(t,e)=>{const r=t.attributes.href.value;return e.querySelector(r)},getAllPanels:t=>Array.from(t.querySelectorAll(`.${Ke}`)),getAllTabs:t=>Array.from(t.querySelectorAll(`.${me}`)),moveTab:(t,e,r,n,s)=>{const o=x.getSelectedTab(t),a=s?x.getNextTab(o):x.getPrevTab(o);if(a){const i=a.attributes.href.value,c=x.getTargetPanel(a,e);x.updateTabs(r,n,a,c,i,!1)}},updateTabs:(t,e,r,n,s)=>{x.clearAllTabs(t),x.setActiveTab(r),x.clearAllPanels(e),x.setActivePanel(n,s)},clearAllTabs:t=>{t.forEach(e=>{e.classList.remove(ve),e.setAttribute("aria-selected","false"),e.setAttribute("tabindex","-1")})},clearAllPanels:t=>{t.forEach(e=>{e.classList.add(Ue)})},setActiveTab:t=>{t.classList.add(ve),t.setAttribute("aria-selected","true"),t.setAttribute("tabindex","0"),t.focus()},setActivePanel:(t,e)=>{t.classList.remove(Ue),window.history.replaceState({},"",e)}},It="mds-accordion--breakpoint",Bt="mds-accordion__label",pt={init:()=>{const t=document.querySelectorAll(`.${It}`),e=window.innerWidth;t.forEach(n=>{pt.checkBreakpoint(n,e)||(n.open=!0,n.querySelector("summary").style.display="none")}),document.querySelectorAll(`.${Bt}`).forEach(n=>{n.addEventListener("click",({target:s})=>{const o=s.closest("details"),a=o.querySelector("summary");o.open=!1,a.focus()})})},checkBreakpoint:(t,e)=>{let r=0;if(t.dataset.bp){const n=t.dataset.bp.replace(/\D/g,""),s=t.dataset.bp.replace(/[0-9]/g,"");let o,a;switch(s){case"px":r=n;break;case"em":o=window.getComputedStyle(document.querySelector("body"))["font-size"],a=n*parseFloat(o),r=a;break;case"rem":o=window.getComputedStyle(document.querySelector("body"))["font-size"],a=n*parseFloat(o),r=a;break;default:return!0}return!(e>r)}return!0}},Mt={init:()=>{const t=document.querySelectorAll(".mds-subnavigation"),e=[];let r;t.forEach(s=>{const o=s.querySelector(".mds-subnavigation__link-list"),a=Array.from(o.children),i=a[0],c=s.querySelector(".mds-subnavigation__mobile-title"),l=s.querySelector(".mds-subnavigation__drawer"),d=s.querySelector(".mds-subnavigation__drawer-label"),p=s.querySelector(".mds-subnavigation__drawer-label-text"),f=s.querySelector(".mds-subnavigation__drawer-content"),h=l.dataset.label,m=l.dataset.labelPlural;d.addEventListener("click",()=>{d.getAttribute("aria-expanded")==="true"?d.setAttribute("aria-expanded","false"):d.setAttribute("aria-expanded","true")}),l.addEventListener("focusout",v=>{l.contains(v.relatedTarget)||d.setAttribute("aria-expanded","false")});const g=()=>o.clientHeight>i.offsetHeight;e.push(()=>{d.setAttribute("aria-expanded","false"),window.getComputedStyle(c).getPropertyValue("display")==="none"?(a.forEach(b=>{o.append(b)}),l.style.display="none",g()&&(l.style.display="list-item",a.slice().reverse().forEach(b=>{if(g()&&b!==l){f.prepend(b);const y=Array.from(f.children).length,E=y>1?m:h;p.innerText=E.replace("{count}",y)}else o.prepend(b)}),f.style.width=`${o.offsetWidth-l.offsetLeft}px`)):(a.forEach(b=>{b!==l&&b!==c&&f.append(b)}),f.style.width="initial",l.style.display="block")})});const n=()=>{e.forEach(s=>{s()})};n(),window.onresize=()=>{clearTimeout(r),r=setTimeout(n,100)}}},Rt="mds-checkbox-accordion__button",Nt="mds-checkbox-accordion__button--open",jt={init:()=>{document.querySelectorAll(`.${Rt}`).forEach(e=>{e.classList.contains(Nt)?e.setAttribute("aria-expanded","true"):e.setAttribute("aria-expanded","false"),e.addEventListener("click",()=>{e.getAttribute("aria-expanded")==="true"?e.setAttribute("aria-expanded","false"):e.setAttribute("aria-expanded","true")})})}};var T="top",P="bottom",$="right",q="left",_e="auto",le=[T,P,$,q],Z="start",Ie="end",Wt="clippingParents",ht="viewport",re="popper",Ft="reference",Ge=le.reduce(function(t,e){return t.concat([e+"-"+Z,e+"-"+Ie])},[]),mt=[].concat(le,[_e]).reduce(function(t,e){return t.concat([e,e+"-"+Z,e+"-"+Ie])},[]),Ht="beforeRead",Vt="read",zt="afterRead",Xt="beforeMain",Yt="main",Jt="afterMain",Kt="beforeWrite",Ut="write",Gt="afterWrite",Qt=[Ht,Vt,zt,Xt,Yt,Jt,Kt,Ut,Gt];function R(t){return t?(t.nodeName||"").toLowerCase():null}function _(t){if(t==null)return window;if(t.toString()!=="[object Window]"){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function ie(t){var e=_(t).Element;return t instanceof e||t instanceof Element}function D(t){var e=_(t).HTMLElement;return t instanceof e||t instanceof HTMLElement}function vt(t){if(typeof ShadowRoot>"u")return!1;var e=_(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Zt(t){var e=t.state;Object.keys(e.elements).forEach(function(r){var n=e.styles[r]||{},s=e.attributes[r]||{},o=e.elements[r];!D(o)||!R(o)||(Object.assign(o.style,n),Object.keys(s).forEach(function(a){var i=s[a];i===!1?o.removeAttribute(a):o.setAttribute(a,i===!0?"":i)}))})}function er(t){var e=t.state,r={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,r.popper),e.styles=r,e.elements.arrow&&Object.assign(e.elements.arrow.style,r.arrow),function(){Object.keys(e.elements).forEach(function(n){var s=e.elements[n],o=e.attributes[n]||{},a=Object.keys(e.styles.hasOwnProperty(n)?e.styles[n]:r[n]),i=a.reduce(function(c,l){return c[l]="",c},{});!D(s)||!R(s)||(Object.assign(s.style,i),Object.keys(o).forEach(function(c){s.removeAttribute(c)}))})}}const tr={name:"applyStyles",enabled:!0,phase:"write",fn:Zt,effect:er,requires:["computeStyles"]};function M(t){return t.split("-")[0]}function ee(t){var e=t.getBoundingClientRect();return{width:e.width,height:e.height,top:e.top,right:e.right,bottom:e.bottom,left:e.left,x:e.left,y:e.top}}function Be(t){var e=ee(t),r=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-r)<=1&&(r=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:r,height:n}}function bt(t,e){var r=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(r&&vt(r)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function W(t){return _(t).getComputedStyle(t)}function rr(t){return["table","td","th"].indexOf(R(t))>=0}function V(t){return((ie(t)?t.ownerDocument:t.document)||window.document).documentElement}function Se(t){return R(t)==="html"?t:t.assignedSlot||t.parentNode||(vt(t)?t.host:null)||V(t)}function Qe(t){return!D(t)||W(t).position==="fixed"?null:t.offsetParent}function nr(t){var e=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,r=navigator.userAgent.indexOf("Trident")!==-1;if(r&&D(t)){var n=W(t);if(n.position==="fixed")return null}for(var s=Se(t);D(s)&&["html","body"].indexOf(R(s))<0;){var o=W(s);if(o.transform!=="none"||o.perspective!=="none"||o.contain==="paint"||["transform","perspective"].indexOf(o.willChange)!==-1||e&&o.willChange==="filter"||e&&o.filter&&o.filter!=="none")return s;s=s.parentNode}return null}function de(t){for(var e=_(t),r=Qe(t);r&&rr(r)&&W(r).position==="static";)r=Qe(r);return r&&(R(r)==="html"||R(r)==="body"&&W(r).position==="static")?e:r||nr(t)||e}function Me(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}var H=Math.max,oe=Math.min,ge=Math.round;function Ae(t,e,r){return H(t,oe(e,r))}function gt(){return{top:0,right:0,bottom:0,left:0}}function yt(t){return Object.assign({},gt(),t)}function wt(t,e){return e.reduce(function(r,n){return r[n]=t,r},{})}var sr=function(e,r){return e=typeof e=="function"?e(Object.assign({},r.rects,{placement:r.placement})):e,yt(typeof e!="number"?e:wt(e,le))};function ir(t){var e,r=t.state,n=t.name,s=t.options,o=r.elements.arrow,a=r.modifiersData.popperOffsets,i=M(r.placement),c=Me(i),l=[q,$].indexOf(i)>=0,d=l?"height":"width";if(!(!o||!a)){var p=sr(s.padding,r),f=Be(o),h=c==="y"?T:q,m=c==="y"?P:$,g=r.rects.reference[d]+r.rects.reference[c]-a[c]-r.rects.popper[d],v=a[c]-r.rects.reference[c],b=de(o),y=b?c==="y"?b.clientHeight||0:b.clientWidth||0:0,E=g/2-v/2,u=p[h],k=y-f[d]-p[m],w=y/2-f[d]/2+E,S=Ae(u,w,k),A=c;r.modifiersData[n]=(e={},e[A]=S,e.centerOffset=S-w,e)}}function or(t){var e=t.state,r=t.options,n=r.element,s=n===void 0?"[data-popper-arrow]":n;s!=null&&(typeof s=="string"&&(s=e.elements.popper.querySelector(s),!s)||bt(e.elements.popper,s)&&(e.elements.arrow=s))}const ar={name:"arrow",enabled:!0,phase:"main",fn:ir,effect:or,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};var cr={top:"auto",right:"auto",bottom:"auto",left:"auto"};function lr(t){var e=t.x,r=t.y,n=window,s=n.devicePixelRatio||1;return{x:ge(ge(e*s)/s)||0,y:ge(ge(r*s)/s)||0}}function Ze(t){var e,r=t.popper,n=t.popperRect,s=t.placement,o=t.offsets,a=t.position,i=t.gpuAcceleration,c=t.adaptive,l=t.roundOffsets,d=l===!0?lr(o):typeof l=="function"?l(o):o,p=d.x,f=p===void 0?0:p,h=d.y,m=h===void 0?0:h,g=o.hasOwnProperty("x"),v=o.hasOwnProperty("y"),b=q,y=T,E=window;if(c){var u=de(r),k="clientHeight",w="clientWidth";u===_(r)&&(u=V(r),W(u).position!=="static"&&(k="scrollHeight",w="scrollWidth")),u=u,s===T&&(y=P,m-=u[k]-n.height,m*=i?1:-1),s===q&&(b=$,f-=u[w]-n.width,f*=i?1:-1)}var S=Object.assign({position:a},c&&cr);if(i){var A;return Object.assign({},S,(A={},A[y]=v?"0":"",A[b]=g?"0":"",A.transform=(E.devicePixelRatio||1)<2?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",A))}return Object.assign({},S,(e={},e[y]=v?m+"px":"",e[b]=g?f+"px":"",e.transform="",e))}function dr(t){var e=t.state,r=t.options,n=r.gpuAcceleration,s=n===void 0?!0:n,o=r.adaptive,a=o===void 0?!0:o,i=r.roundOffsets,c=i===void 0?!0:i,l={placement:M(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,Ze(Object.assign({},l,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:a,roundOffsets:c})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,Ze(Object.assign({},l,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:c})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}const ur={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:dr,data:{}};var ye={passive:!0};function fr(t){var e=t.state,r=t.instance,n=t.options,s=n.scroll,o=s===void 0?!0:s,a=n.resize,i=a===void 0?!0:a,c=_(e.elements.popper),l=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&l.forEach(function(d){d.addEventListener("scroll",r.update,ye)}),i&&c.addEventListener("resize",r.update,ye),function(){o&&l.forEach(function(d){d.removeEventListener("scroll",r.update,ye)}),i&&c.removeEventListener("resize",r.update,ye)}}const pr={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:fr,data:{}};var hr={left:"right",right:"left",bottom:"top",top:"bottom"};function xe(t){return t.replace(/left|right|bottom|top/g,function(e){return hr[e]})}var mr={start:"end",end:"start"};function et(t){return t.replace(/start|end/g,function(e){return mr[e]})}function Re(t){var e=_(t),r=e.pageXOffset,n=e.pageYOffset;return{scrollLeft:r,scrollTop:n}}function Ne(t){return ee(V(t)).left+Re(t).scrollLeft}function vr(t){var e=_(t),r=V(t),n=e.visualViewport,s=r.clientWidth,o=r.clientHeight,a=0,i=0;return n&&(s=n.width,o=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(a=n.offsetLeft,i=n.offsetTop)),{width:s,height:o,x:a+Ne(t),y:i}}function br(t){var e,r=V(t),n=Re(t),s=(e=t.ownerDocument)==null?void 0:e.body,o=H(r.scrollWidth,r.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),a=H(r.scrollHeight,r.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),i=-n.scrollLeft+Ne(t),c=-n.scrollTop;return W(s||r).direction==="rtl"&&(i+=H(r.clientWidth,s?s.clientWidth:0)-o),{width:o,height:a,x:i,y:c}}function je(t){var e=W(t),r=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(r+s+n)}function Et(t){return["html","body","#document"].indexOf(R(t))>=0?t.ownerDocument.body:D(t)&&je(t)?t:Et(Se(t))}function se(t,e){var r;e===void 0&&(e=[]);var n=Et(t),s=n===((r=t.ownerDocument)==null?void 0:r.body),o=_(n),a=s?[o].concat(o.visualViewport||[],je(n)?n:[]):n,i=e.concat(a);return s?i:i.concat(se(Se(a)))}function Pe(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function gr(t){var e=ee(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}function tt(t,e){return e===ht?Pe(vr(t)):D(e)?gr(e):Pe(br(V(t)))}function yr(t){var e=se(Se(t)),r=["absolute","fixed"].indexOf(W(t).position)>=0,n=r&&D(t)?de(t):t;return ie(n)?e.filter(function(s){return ie(s)&&bt(s,n)&&R(s)!=="body"}):[]}function wr(t,e,r){var n=e==="clippingParents"?yr(t):[].concat(e),s=[].concat(n,[r]),o=s[0],a=s.reduce(function(i,c){var l=tt(t,c);return i.top=H(l.top,i.top),i.right=oe(l.right,i.right),i.bottom=oe(l.bottom,i.bottom),i.left=H(l.left,i.left),i},tt(t,o));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function ae(t){return t.split("-")[1]}function At(t){var e=t.reference,r=t.element,n=t.placement,s=n?M(n):null,o=n?ae(n):null,a=e.x+e.width/2-r.width/2,i=e.y+e.height/2-r.height/2,c;switch(s){case T:c={x:a,y:e.y-r.height};break;case P:c={x:a,y:e.y+e.height};break;case $:c={x:e.x+e.width,y:i};break;case q:c={x:e.x-r.width,y:i};break;default:c={x:e.x,y:e.y}}var l=s?Me(s):null;if(l!=null){var d=l==="y"?"height":"width";switch(o){case Z:c[l]=c[l]-(e[d]/2-r[d]/2);break;case Ie:c[l]=c[l]+(e[d]/2-r[d]/2);break}}return c}function ce(t,e){e===void 0&&(e={});var r=e,n=r.placement,s=n===void 0?t.placement:n,o=r.boundary,a=o===void 0?Wt:o,i=r.rootBoundary,c=i===void 0?ht:i,l=r.elementContext,d=l===void 0?re:l,p=r.altBoundary,f=p===void 0?!1:p,h=r.padding,m=h===void 0?0:h,g=yt(typeof m!="number"?m:wt(m,le)),v=d===re?Ft:re,b=t.elements.reference,y=t.rects.popper,E=t.elements[f?v:d],u=wr(ie(E)?E:E.contextElement||V(t.elements.popper),a,c),k=ee(b),w=At({reference:k,element:y,placement:s}),S=Pe(Object.assign({},y,w)),A=d===re?S:k,L={top:u.top-A.top+g.top,bottom:A.bottom-u.bottom+g.bottom,left:u.left-A.left+g.left,right:A.right-u.right+g.right},O=t.modifiersData.offset;if(d===re&&O){var I=O[s];Object.keys(L).forEach(function(N){var C=[$,P].indexOf(N)>=0?1:-1,z=[T,P].indexOf(N)>=0?"y":"x";L[N]+=I[z]*C})}return L}function Er(t,e){e===void 0&&(e={});var r=e,n=r.placement,s=r.boundary,o=r.rootBoundary,a=r.padding,i=r.flipVariations,c=r.allowedAutoPlacements,l=c===void 0?mt:c,d=ae(n),p=d?i?Ge:Ge.filter(function(m){return ae(m)===d}):le,f=p.filter(function(m){return l.indexOf(m)>=0});f.length===0&&(f=p);var h=f.reduce(function(m,g){return m[g]=ce(t,{placement:g,boundary:s,rootBoundary:o,padding:a})[M(g)],m},{});return Object.keys(h).sort(function(m,g){return h[m]-h[g]})}function Ar(t){if(M(t)===_e)return[];var e=xe(t);return[et(t),e,et(e)]}function xr(t){var e=t.state,r=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=r.mainAxis,o=s===void 0?!0:s,a=r.altAxis,i=a===void 0?!0:a,c=r.fallbackPlacements,l=r.padding,d=r.boundary,p=r.rootBoundary,f=r.altBoundary,h=r.flipVariations,m=h===void 0?!0:h,g=r.allowedAutoPlacements,v=e.options.placement,b=M(v),y=b===v,E=c||(y||!m?[xe(v)]:Ar(v)),u=[v].concat(E).reduce(function(Y,B){return Y.concat(M(B)===_e?Er(e,{placement:B,boundary:d,rootBoundary:p,padding:l,flipVariations:m,allowedAutoPlacements:g}):B)},[]),k=e.rects.reference,w=e.rects.popper,S=new Map,A=!0,L=u[0],O=0;O<u.length;O++){var I=u[O],N=M(I),C=ae(I)===Z,z=[T,P].indexOf(N)>=0,te=z?"width":"height",J=ce(e,{placement:I,boundary:d,rootBoundary:p,altBoundary:f,padding:l}),X=z?C?$:q:C?P:T;k[te]>w[te]&&(X=xe(X));var ke=xe(X),K=[];if(o&&K.push(J[N]<=0),i&&K.push(J[X]<=0,J[ke]<=0),K.every(function(Y){return Y})){L=I,A=!1;break}S.set(I,K)}if(A)for(var ue=m?3:1,Le=function(B){var pe=u.find(function(Ce){var G=S.get(Ce);if(G)return G.slice(0,B).every(function(Oe){return Oe})});if(pe)return L=pe,"break"},U=ue;U>0;U--){var fe=Le(U);if(fe==="break")break}e.placement!==L&&(e.modifiersData[n]._skip=!0,e.placement=L,e.reset=!0)}}const Sr={name:"flip",enabled:!0,phase:"main",fn:xr,requiresIfExists:["offset"],data:{_skip:!1}};function rt(t,e,r){return r===void 0&&(r={x:0,y:0}),{top:t.top-e.height-r.y,right:t.right-e.width+r.x,bottom:t.bottom-e.height+r.y,left:t.left-e.width-r.x}}function nt(t){return[T,$,P,q].some(function(e){return t[e]>=0})}function kr(t){var e=t.state,r=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,a=ce(e,{elementContext:"reference"}),i=ce(e,{altBoundary:!0}),c=rt(a,n),l=rt(i,s,o),d=nt(c),p=nt(l);e.modifiersData[r]={referenceClippingOffsets:c,popperEscapeOffsets:l,isReferenceHidden:d,hasPopperEscaped:p},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":d,"data-popper-escaped":p})}const Lr={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:kr};function Cr(t,e,r){var n=M(t),s=[q,T].indexOf(n)>=0?-1:1,o=typeof r=="function"?r(Object.assign({},e,{placement:t})):r,a=o[0],i=o[1];return a=a||0,i=(i||0)*s,[q,$].indexOf(n)>=0?{x:i,y:a}:{x:a,y:i}}function Or(t){var e=t.state,r=t.options,n=t.name,s=r.offset,o=s===void 0?[0,0]:s,a=mt.reduce(function(d,p){return d[p]=Cr(p,e.rects,o),d},{}),i=a[e.placement],c=i.x,l=i.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=c,e.modifiersData.popperOffsets.y+=l),e.modifiersData[n]=a}const Tr={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Or};function qr(t){var e=t.state,r=t.name;e.modifiersData[r]=At({reference:e.rects.reference,element:e.rects.popper,placement:e.placement})}const Pr={name:"popperOffsets",enabled:!0,phase:"read",fn:qr,data:{}};function $r(t){return t==="x"?"y":"x"}function Dr(t){var e=t.state,r=t.options,n=t.name,s=r.mainAxis,o=s===void 0?!0:s,a=r.altAxis,i=a===void 0?!1:a,c=r.boundary,l=r.rootBoundary,d=r.altBoundary,p=r.padding,f=r.tether,h=f===void 0?!0:f,m=r.tetherOffset,g=m===void 0?0:m,v=ce(e,{boundary:c,rootBoundary:l,padding:p,altBoundary:d}),b=M(e.placement),y=ae(e.placement),E=!y,u=Me(b),k=$r(u),w=e.modifiersData.popperOffsets,S=e.rects.reference,A=e.rects.popper,L=typeof g=="function"?g(Object.assign({},e.rects,{placement:e.placement})):g,O={x:0,y:0};if(w){if(o||i){var I=u==="y"?T:q,N=u==="y"?P:$,C=u==="y"?"height":"width",z=w[u],te=w[u]+v[I],J=w[u]-v[N],X=h?-A[C]/2:0,ke=y===Z?S[C]:A[C],K=y===Z?-A[C]:-S[C],ue=e.elements.arrow,Le=h&&ue?Be(ue):{width:0,height:0},U=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:gt(),fe=U[I],Y=U[N],B=Ae(0,S[C],Le[C]),pe=E?S[C]/2-X-B-fe-L:ke-B-fe-L,Ce=E?-S[C]/2+X+B+Y+L:K+B+Y+L,G=e.elements.arrow&&de(e.elements.arrow),Oe=G?u==="y"?G.clientTop||0:G.clientLeft||0:0,We=e.modifiersData.offset?e.modifiersData.offset[e.placement][u]:0,Fe=w[u]+pe-We-Oe,He=w[u]+Ce-We;if(o){var Ve=Ae(h?oe(te,Fe):te,z,h?H(J,He):J);w[u]=Ve,O[u]=Ve-z}if(i){var St=u==="x"?T:q,kt=u==="x"?P:$,he=w[k],ze=he+v[St],Xe=he-v[kt],Ye=Ae(h?oe(ze,Fe):ze,he,h?H(Xe,He):Xe);w[k]=Ye,O[k]=Ye-he}}e.modifiersData[n]=O}}const _r={name:"preventOverflow",enabled:!0,phase:"main",fn:Dr,requiresIfExists:["offset"]};function Ir(t){return{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function Br(t){return t===_(t)||!D(t)?Re(t):Ir(t)}function Mr(t,e,r){r===void 0&&(r=!1);var n=V(e),s=ee(t),o=D(e),a={scrollLeft:0,scrollTop:0},i={x:0,y:0};return(o||!o&&!r)&&((R(e)!=="body"||je(n))&&(a=Br(e)),D(e)?(i=ee(e),i.x+=e.clientLeft,i.y+=e.clientTop):n&&(i.x=Ne(n))),{x:s.left+a.scrollLeft-i.x,y:s.top+a.scrollTop-i.y,width:s.width,height:s.height}}function Rr(t){var e=new Map,r=new Set,n=[];t.forEach(function(o){e.set(o.name,o)});function s(o){r.add(o.name);var a=[].concat(o.requires||[],o.requiresIfExists||[]);a.forEach(function(i){if(!r.has(i)){var c=e.get(i);c&&s(c)}}),n.push(o)}return t.forEach(function(o){r.has(o.name)||s(o)}),n}function Nr(t){var e=Rr(t);return Qt.reduce(function(r,n){return r.concat(e.filter(function(s){return s.phase===n}))},[])}function jr(t){var e;return function(){return e||(e=new Promise(function(r){Promise.resolve().then(function(){e=void 0,r(t())})})),e}}function Wr(t){var e=t.reduce(function(r,n){var s=r[n.name];return r[n.name]=s?Object.assign({},s,n,{options:Object.assign({},s.options,n.options),data:Object.assign({},s.data,n.data)}):n,r},{});return Object.keys(e).map(function(r){return e[r]})}var st={placement:"bottom",modifiers:[],strategy:"absolute"};function it(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return!e.some(function(n){return!(n&&typeof n.getBoundingClientRect=="function")})}function Fr(t){t===void 0&&(t={});var e=t,r=e.defaultModifiers,n=r===void 0?[]:r,s=e.defaultOptions,o=s===void 0?st:s;return function(i,c,l){l===void 0&&(l=o);var d={placement:"bottom",orderedModifiers:[],options:Object.assign({},st,o),modifiersData:{},elements:{reference:i,popper:c},attributes:{},styles:{}},p=[],f=!1,h={state:d,setOptions:function(b){g(),d.options=Object.assign({},o,d.options,b),d.scrollParents={reference:ie(i)?se(i):i.contextElement?se(i.contextElement):[],popper:se(c)};var y=Nr(Wr([].concat(n,d.options.modifiers)));return d.orderedModifiers=y.filter(function(E){return E.enabled}),m(),h.update()},forceUpdate:function(){if(!f){var b=d.elements,y=b.reference,E=b.popper;if(it(y,E)){d.rects={reference:Mr(y,de(E),d.options.strategy==="fixed"),popper:Be(E)},d.reset=!1,d.placement=d.options.placement,d.orderedModifiers.forEach(function(O){return d.modifiersData[O.name]=Object.assign({},O.data)});for(var u=0;u<d.orderedModifiers.length;u++){if(d.reset===!0){d.reset=!1,u=-1;continue}var k=d.orderedModifiers[u],w=k.fn,S=k.options,A=S===void 0?{}:S,L=k.name;typeof w=="function"&&(d=w({state:d,options:A,name:L,instance:h})||d)}}}},update:jr(function(){return new Promise(function(v){h.forceUpdate(),v(d)})}),destroy:function(){g(),f=!0}};if(!it(i,c))return h;h.setOptions(l).then(function(v){!f&&l.onFirstUpdate&&l.onFirstUpdate(v)});function m(){d.orderedModifiers.forEach(function(v){var b=v.name,y=v.options,E=y===void 0?{}:y,u=v.effect;if(typeof u=="function"){var k=u({state:d,name:b,instance:h,options:E}),w=function(){};p.push(k||w)}})}function g(){p.forEach(function(v){return v()}),p=[]}return h}}var Hr=[pr,Pr,ur,tr,Tr,Sr,_r,ar,Lr],Vr=Fr({defaultModifiers:Hr});const zr=parseInt(ut.baseline.$value,10),Xr="js-mds-popover-trigger",we="mds-popover--active",ne={init:()=>{Array.from(document.querySelectorAll(`.${Xr}`)).forEach(e=>{const n=`${e.getAttribute("id")}-content`,s=document.getElementById(n),o=s.dataset?s.dataset.placement:null,a=Vr(e,s,{placement:o||"top-end",strategy:"fixed",modifiers:[{name:"offset",options:{offset:[0,zr*3]}},{name:"arrow",options:{padding:5}}]});e.setAttribute("aria-expanded","false"),s.setAttribute("aria-hidden","true"),e.addEventListener("click",i=>{i.preventDefault(),a.update(),s.classList.toggle(we),ne.setAriaAttr(e,s,we)}),document.addEventListener("mousedown",i=>{ne.hide(e,s,a,we,i)}),document.addEventListener("keydown",i=>{ne.hide(e,s,a,we,i)})})},hide:(t,e,r,n,s)=>{!t.contains(s.target)&&!r.state.elements.popper.contains(s.target)&&e.classList.contains(n)&&(e.classList.remove(n),ne.setAriaAttr(t,e,n))},setAriaAttr:(t,e,r)=>{e.classList.contains(r)?(t.setAttribute("aria-expanded","true"),e.removeAttribute("aria-hidden")):(t.setAttribute("aria-expanded","false"),e.setAttribute("aria-hidden","true"))}},Yr=parseInt(ft.size.breakpoint.md.$value,10),ot="data-modal-id",at="mds-modal--active",Jr="js-mds-modal-close";let Ee;const Q={init:()=>{window.innerWidth>Yr&&Array.from(document.querySelectorAll(`[${ot}]`)).forEach(r=>{const n=r.getAttribute(ot),s=document.getElementById(n),o=Array.from(s.querySelectorAll(`.${Jr}`)),a=s.getAttribute("data-site-container"),i=document.getElementById(a);let l=s.querySelectorAll('a[href], area[href], input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex="0"], [contenteditable]');l=Array.prototype.slice.call(l);const d=l[0],p=l[l.length-1];r.addEventListener("click",f=>{f.preventDefault(),Q.open(s,d,i)}),s.addEventListener("click",f=>{f.target===s&&Q.close(s,Ee,i)}),s.addEventListener("keydown",f=>{Q.trapFocus(f,d,p),(f.key==="Escape"||f.key==="Esc")&&Q.close(s,Ee,i)}),o.forEach(f=>{f.addEventListener("click",()=>{Q.close(s,Ee,i)})})})},open:(t,e,r)=>{Ee=document.activeElement,t.classList.add(at),e.focus(),r?.setAttribute("aria-hidden","true")},close:(t,e,r)=>{r?.removeAttribute("aria-hidden"),t.classList.remove(at),e.focus()},trapFocus:(t,e,r)=>{t.key==="Tab"&&(t.shiftKey?document.activeElement===e&&(t.preventDefault(),r.focus()):document.activeElement===r&&(t.preventDefault(),e.focus()))}};class j extends HTMLElement{static selectedFileClass="mds-file-upload--selected-file";static selectedFileIsImageClass="mds-file-upload--selected-file-is-image";static dragOverClass="mds-file-upload--dragover";constructor(){super()}connectedCallback(){this.classList.add("mds-form-element--file-supported"),this.#e.addEventListener("change",this.#l),this.#r.addEventListener("click",this.#p),this.#e.addEventListener("dragover",this.#s),this.#e.addEventListener("dragenter",this.#s),this.#e.addEventListener("dragleave",this.#d),this.#e.addEventListener("dragend",this.#d),this.#e.addEventListener("drop",this.#d),this.#i?.addEventListener("commit",this.#h),this.#i?.addEventListener("reset",this.#v),this.#b(!0)}disconnectedCallback(){this.#e?.removeEventListener("change",this.#l),this.#r?.removeEventListener("click",this.#p),this.#e?.removeEventListener("dragover",this.#s),this.#e?.removeEventListener("dragenter",this.#s),this.#e?.removeEventListener("dragleave",this.#d),this.#e?.removeEventListener("dragend",this.#d),this.#e?.removeEventListener("drop",this.#d),this.#i?.removeEventListener("commit",this.#h),this.#i?.removeEventListener("reset",this.#v)}get rootNode(){return this}get#a(){return this.getRootNode({composed:!0})}get#n(){return this.#e?.files?.[0]}get#c(){return this.#n?.type?.startsWith("image/")}get#o(){const e=this.rootNode.getAttribute("no-auto-open-image-cropper");return e!==null&&e!=="false"}get#t(){return this.rootNode.querySelector(".mds-file-upload__file-name")}get#e(){return this.rootNode.querySelector("input[type=file]")}get#r(){return this.rootNode.querySelector(".mds-file-upload__remove-button")}get#u(){return this.rootNode.querySelector(".mds-file-upload__preview-image")}get#m(){return this.rootNode.querySelector(".mds-file-upload__open-modal")}get#f(){return this.rootNode.querySelector(".mds-modal")}get#i(){return this.rootNode.querySelector("mds-image-cropper")}#l=e=>{const{dontOpenModal:r=!1}=e?.detail||{};this.#b(),this.#n&&this.#r.focus(),!r&&this.#c&&!this.#o&&this.#y()};#p=e=>{e.preventDefault(),this.removeFile(),this.#e.focus()};#s=e=>{e.stopPropagation(),this.classList.add(j.dragOverClass)};#d=e=>{e.stopPropagation(),this.classList.remove(j.dragOverClass)};#h=e=>{const r=e.detail;if(r){const n=new File([r],this.#n?.name||"cropped-image",{type:r.type}),s=new DataTransfer;s.items.add(n),this.#e.files=s.files,this.#e.dispatchEvent(new CustomEvent("change",{detail:{dontOpenModal:!0},bubbles:!0})),this.#g()}};#v=()=>{this.#g()};#b(e=!1){if(this.#n)if(this.#t.textContent=this.#n.name,this.classList.add(j.selectedFileClass),this.#c){this.classList.add(j.selectedFileIsImageClass);const r=new FileReader;r.onload=n=>{this.#u.src=n.target.result,this.#i?.setAttribute("src",n.target.result)},r.readAsDataURL(this.#n)}else this.classList.remove(j.selectedFileIsImageClass);else e||(this.#t.textContent="",this.classList.remove(j.selectedFileClass),this.classList.remove(j.selectedFileIsImageClass))}#y(){this.#m?.dispatchEvent(new Event("click"))}#g(){this.#f?.querySelector(".js-mds-modal-close").dispatchEvent(new Event("click"))}removeFile(){this.#e.value="",this.#e.dispatchEvent(new Event("change",{bubbles:!0}))}}const Kr=".mds-form-element--character-count",Ur=".mds-form-message--character-count",Gr=".js-character-count-number",Qr=".mds-form-control",$e={init:()=>{Array.from(document.querySelectorAll(Kr)).forEach(e=>{const r=e.querySelector(Qr),n=r.getAttribute("maxlength"),s=e.querySelector(Ur),o=e.querySelector(Gr);r.removeAttribute("maxlength"),$e.updateCounter(r,n,o,s),r.addEventListener("input",a=>{a.stopPropagation(),$e.updateCounter(r,n,o,s)})})},updateCounter:(t,e,r,n)=>{const s=t.value.match(/(\r\n|\n|\r)/g),o=t.value.length+(s?s.length:0),a=e-o;r.textContent=a,a<0?n.classList.add("mds-form-message--error"):n.classList.remove("mds-form-message--error")}},Zr="js-mds-button-double-submit",xt={init:()=>{Array.from(document.querySelectorAll(`.${Zr}`)).forEach(e=>{e.addEventListener("click",()=>{xt.toggleDisable(e)})})},toggleDisable:t=>{setTimeout(()=>{t.setAttribute("disabled","")},1),setTimeout(()=>{t.removeAttribute("disabled")},1e3)}},en={setFluidVideos:()=>{Array.from(document.querySelectorAll(".mds-prose iframe, .mds-prose embed, .mds-prose object")).forEach(e=>{const r=document.createElement("div");r.classList.add("mds-fluid-video"),r.innerHTML=e.outerHTML,e.replaceWith(r)})}};class tn extends HTMLElement{connectedCallback(){const r=this.querySelector(".mds-card-link__link");let n;this.onmousedown=()=>{n=+new Date},this.onmouseup=()=>{+new Date-n<200&&r.click(),n=void 0}}disconnectedCallback(){this.onmousedown=this.onmouseup=null}}class rn extends HTMLElement{static observedAttributes=["form","field-name","show-when"];showHide=()=>{const{field:e}=this,r=this.getAttribute("show-when");(e.type==="checkbox"?e.checked.toString():e.value.toString())===r?this.hidden=!1:this.hidden=!0};setup=()=>{this.cleanup();const e=this.getAttribute("form"),r=this.getAttribute("field-name");if(this.formElement=e?document.querySelector(e):this.closest("form"),!this.formElement)throw new Error(`<mds-conditional-section> for ${r} could not find the associated form`);if(this.field=this.formElement.elements[r],!this.field)throw new Error(`<mds-conditional-section> for ${r} could not find the associated field`);this.showHide(),this.formElement.addEventListener("input",this.showHide)};connectedCallback(){this.setup()}cleanup=()=>{this.formElement?.removeEventListener("input",this.showHide)};disconnectedCallback(){this.cleanup()}attributeChangedCallback(e,r,n){const{showHide:s,setup:o}=this;this.isConnected&&r!==n&&(e==="show-when"?s():(e==="field-name"||e==="form")&&o())}}const F=".mds-form-check",Te=".mds-form-check__input",nn=".mds-form-check__label",ct=".mds-form-check__nested-container",lt=".mds-category-picker__pill",qe=".mds-category-picker__clear-pill",dt={optionsSelectedSingular:"1 option selected",optionsSelectedPlural:"{count} options selected",optionsFoundSingular:"1 option found",optionsFoundPlural:"{count} options found"};class sn extends HTMLElement{#a;#n;#c;#o;#t;#e;#r;#u;#m;#f;#i=new WeakMap;#l=!1;connectedCallback(){const e=this.querySelector(".mds-category-picker__templates");if(this.#n=this.querySelector(".mds-category-picker__pillbox"),this.#t=this.querySelector(".mds-category-picker__search"),this.#e=this.querySelector(".mds-category-picker__input-wrapper"),this.#r=this.querySelector(".mds-category-picker__dropdown"),this.#u=this.querySelector(".mds-category-picker__live-region"),this.#m=this.querySelector(".mds-category-picker__no-results"),!e||!this.#n||!this.#t||!this.#r)return;try{this.#f={...dt,...JSON.parse(this.getAttribute("i18n")||"{}")}}catch{this.#f=dt}if(this.#c=e.querySelector(lt),this.#o=e.querySelector(qe),!this.#c||!this.#o)return;e.remove(),this.#a=new AbortController;const r={signal:this.#a.signal};this.#n.addEventListener("click",this.#b,r),this.#r.addEventListener("change",this.#y,r),this.#t.addEventListener("blur",this.#d,r),this.#t.addEventListener("input",this.#g,r),this.#t.addEventListener("keydown",this.#k,r),this.#e.addEventListener("click",()=>this.#t.focus(),r),this.#t.addEventListener("focus",()=>this.#p(),r),this.#r.addEventListener("mousedown",n=>{n.target!==this.#t&&n.preventDefault()},r),this.#r.addEventListener("focusout",n=>{(!n.relatedTarget||!this.contains(n.relatedTarget))&&this.#s()},r),this.#r.addEventListener("keydown",n=>{n.key==="Escape"&&(this.#s(),this.#t.focus())},r),document.addEventListener("click",n=>{n.composedPath().includes(this)||this.#s()},r),this.#h()}disconnectedCallback(){this.#a?.abort()}#p(){this.#l||(this.#l=!0,this.classList.add("mds-category-picker--open"),this.#t.setAttribute("aria-expanded","true"))}#s(){this.#l&&(this.#l=!1,this.classList.remove("mds-category-picker--open"),this.#t.setAttribute("aria-expanded","false"),this.#t.value="",this.#w())}#d=e=>{const r=e.relatedTarget;r&&(this.#r.contains(r)||this.#e.contains(r))||this.#s()};#h=()=>{this.#n.replaceChildren(),this.#i=new WeakMap;const e="mds-form-check--has-selection";for(const r of this.#r.querySelectorAll(F))r.classList.remove(e);for(const r of this.#r.querySelectorAll(`${Te}:checked`)){this.#v(r);let n=r.closest(F)?.parentElement;for(;n&&n!==this.#r;)n.matches(F)&&n.classList.add(e),n=n.parentElement}};#v(e){const r=e.dataset.path;if(!r)return;const n=this.#c.cloneNode(!0),s=this.#o.cloneNode(!0);s.setAttribute("aria-label",`${s.getAttribute("aria-label")} ${r}`);const o=document.createElement("span");o.className="mds-category-picker__pill-text",o.textContent=r,n.appendChild(o),n.appendChild(s),this.#n.appendChild(n),this.#i.set(s,e)}#b=({target:e})=>{const r=this.#i.get(e.closest(qe));r&&(r.checked=!1,r.dispatchEvent(new Event("change",{bubbles:!0})))};#y=()=>{this.#h(),this.#t.value="",this.#w();const e=this.#r.querySelectorAll(`${Te}:checked`).length;this.#x(this.#A("optionsSelectedSingular","optionsSelectedPlural",e))};#g=()=>{const e=this.#t.value.trim();e.length>=2?this.#S(e):this.#w()};#S(e){const r=e.toLowerCase(),n=this.#r.querySelectorAll(F),s=new Set,o=new Set;for(const i of n){const c=i.querySelector(nn)?.textContent.trim().toLowerCase()||"";if(c){if(i.querySelector(ct)){c.includes(r)&&(s.add(i),o.add(i));continue}if(i.hidden=!c.includes(r),!i.hidden){let l=i.parentElement;for(;l&&l!==this.#r;)l.matches(F)&&s.add(l),l=l.parentElement}}}for(const i of n){const c=i.querySelector(ct);if(c)if(s.has(i)){if(i.hidden=!1,i.querySelector(".mds-checkbox-accordion__button")?.setAttribute("aria-expanded","true"),o.has(i))for(const l of c.querySelectorAll(F))l.hidden=!1}else i.hidden=!0}let a=0;for(const i of n)i.hidden||a++;this.#E(a===0),this.#x(this.#A("optionsFoundSingular","optionsFoundPlural",a))}#w(){for(const e of this.#r.querySelectorAll(F))e.hidden=!1;this.#E(!1)}#E(e){this.#m?.classList.toggle("mds-category-picker__no-results--visible",e)}#k=e=>{switch(e.key){case"Escape":this.#s(),this.#t.blur();break;case"ArrowDown":{e.preventDefault(),this.#l||this.#p();for(const r of this.#r.querySelectorAll(F)){if(r.hidden)continue;const n=r.querySelector(Te);if(n){n.focus();break}}break}case"Backspace":if(this.#t.value===""){const r=this.#n.querySelectorAll(lt),n=r[r.length-1];if(!n)break;const s=this.#i.get(n.querySelector(qe));s&&(s.checked=!1,s.dispatchEvent(new Event("change",{bubbles:!0})))}break;case"Tab":this.#s();break}};#A(e,r,n){return n===1?this.#f[e]:this.#f[r].replace("{count}",String(n))}#x(e){this.#u&&(this.#u.textContent="",requestAnimationFrame(()=>{this.#u.textContent=e}))}}class on extends HTMLElement{#a;constructor(){super()}#n(e){const r=[0,.25,.5,.75,1];if(e==null||e.trim()==="")return r;const n=Number(e);if(!Number.isNaN(n))return n;const s=o=>Array.isArray(o)&&o.length>0&&o.every(a=>typeof a=="number"&&!Number.isNaN(a));try{const o=JSON.parse(e);if(s(o))return o}catch{}return console.warn(`${this.constructor.name}: Invalid observer-threshold "${e}". Falling back to default thresholds.`),r}#c(){const e=new Map,r=n=>{if(n.forEach(i=>{i.intersectionRatio===0?e.delete(i.target.id):e.set(i.target.id,i.intersectionRatio)}),e.size===0){this.#o.forEach(i=>i.removeAttribute("aria-current"));return}const s=e.entries().reduce((i,c)=>c[1]>i[1]?c:i),o=s[0],a=s[1];this.#o.forEach(i=>i.removeAttribute("aria-current")),o&&a>0&&this.querySelector(`[href="#${CSS.escape(o)}"]`)?.setAttribute("aria-current",this.#e)};this.#a=new IntersectionObserver(r,this.#r),this.#t.forEach(n=>this.#a.observe(n))}connectedCallback(){this.#t.length>0&&this.#c()}disconnectedCallback(){this.#a?.disconnect()}get#o(){return Array.from(this.querySelectorAll("a"))}get#t(){const e=[];return this.#o.forEach(r=>{if(new URL(r.href).host!==window.location.host||!r.hash)return;const n=document.querySelector(`#${CSS.escape(r.hash.substring(1))}`);if(!n){console.warn(`${this.constructor.name}: Element with id "${r.hash}" doesn't exist on this page.`);return}e.push(n)}),e}get#e(){return this.getAttribute("aria-current-value")||"step"}get#r(){const e=this.getAttribute("observer-root"),r=this.getAttribute("observer-threshold");return{root:document.querySelector(e),threshold:this.#n(r)}}}window.customElements.get("mds-dropdown-nav")||window.customElements.define("mds-dropdown-nav",Lt);window.customElements.get("mds-timeout-dialog")||window.customElements.define("mds-timeout-dialog",Ct);window.customElements.get("mds-card-link")||window.customElements.define("mds-card-link",tn);window.customElements.get("mds-conditional-section")||window.customElements.define("mds-conditional-section",rn);window.customElements.get("mds-image-cropper")||window.customElements.define("mds-image-cropper",Ot);window.customElements.get("mds-file-upload")||window.customElements.define("mds-file-upload",j);window.customElements.get("mds-category-picker")||window.customElements.define("mds-category-picker",sn);window.customElements.get("mds-scroll-spy")||window.customElements.define("mds-scroll-spy",on);const De=()=>{x.init(),pt.init(),Mt.init(),jt.init(),Q.init(),$e.init(),ne.init(),xt.init(),en.setFluidVideos()};window.mdgxInitAll=De;document.readyState==="loading"?document.addEventListener("DOMContentLoaded",De):De();
|
package/package.json
CHANGED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Character Count
|
|
2
|
+
|
|
3
|
+
JavaScript functionality for displaying a live character counter on input and textarea elements.
|
|
4
|
+
|
|
5
|
+
## How it works
|
|
6
|
+
|
|
7
|
+
This module automatically initializes character counting on any form element with the class `.mds-form-element--character-count`.
|
|
8
|
+
|
|
9
|
+
When a `maxlength` attribute is present:
|
|
10
|
+
- The counter displays remaining characters
|
|
11
|
+
- Counts newlines as 2 characters (to account for `\r\n` encoding)
|
|
12
|
+
- Allows users to type beyond the limit (shows negative values)
|
|
13
|
+
- Adds `.mds-form-message--error` class when over the limit
|
|
14
|
+
|
|
15
|
+
## Required HTML structure
|
|
16
|
+
|
|
17
|
+
The element must contain:
|
|
18
|
+
- `.mds-form-control` - the input or textarea element with `maxlength` attribute
|
|
19
|
+
- `.mds-form-message--character-count` - container for the counter message
|
|
20
|
+
- `.js-character-count-number` - span that displays the remaining count
|
|
21
|
+
|
|
22
|
+
## Examples
|
|
23
|
+
|
|
24
|
+
### With Input
|
|
25
|
+
See the "Input with character count" variant in `components/inputs/input/input.config.js`
|
|
26
|
+
|
|
27
|
+
### With Textarea
|
|
28
|
+
See the default textarea example in `components/inputs/textarea/textarea.config.js`
|
|
29
|
+
|
|
30
|
+
Both components have character count support built into their templates.
|
|
@@ -16,7 +16,7 @@ const characterCount = {
|
|
|
16
16
|
|
|
17
17
|
formControl.removeAttribute('maxlength');
|
|
18
18
|
characterCount.updateCounter(formControl, maxLength, characterCountNumber, message);
|
|
19
|
-
formControl.addEventListener('
|
|
19
|
+
formControl.addEventListener('input', (e) => {
|
|
20
20
|
e.stopPropagation();
|
|
21
21
|
characterCount.updateCounter(formControl, maxLength, characterCountNumber, message);
|
|
22
22
|
});
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/* eslint-disable n/no-unpublished-import */
|
|
2
|
+
import { describe, it, beforeEach, expect } from 'vitest';
|
|
3
|
+
import { JSDOM } from 'jsdom';
|
|
4
|
+
import characterCount from './character-count.js';
|
|
5
|
+
|
|
6
|
+
describe('characterCount', () => {
|
|
7
|
+
let dom;
|
|
8
|
+
let document;
|
|
9
|
+
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
// Create a fresh DOM for each test
|
|
12
|
+
dom = new JSDOM(`
|
|
13
|
+
<!DOCTYPE html>
|
|
14
|
+
<html>
|
|
15
|
+
<body>
|
|
16
|
+
<div class="mds-form-element--character-count">
|
|
17
|
+
<textarea class="mds-form-control" maxlength="100"></textarea>
|
|
18
|
+
<div class="mds-form-message--character-count">
|
|
19
|
+
<span class="js-character-count-number">100</span> characters remaining
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
</body>
|
|
23
|
+
</html>
|
|
24
|
+
`);
|
|
25
|
+
document = dom.window.document;
|
|
26
|
+
global.document = document;
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
describe('init', () => {
|
|
30
|
+
it('should remove maxlength attribute from form control', () => {
|
|
31
|
+
const formControl = document.querySelector('.mds-form-control');
|
|
32
|
+
expect(formControl.hasAttribute('maxlength')).toBe(true);
|
|
33
|
+
|
|
34
|
+
characterCount.init();
|
|
35
|
+
|
|
36
|
+
expect(formControl.hasAttribute('maxlength')).toBe(false);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it('should initialize counter with correct remaining count', () => {
|
|
40
|
+
const formControl = document.querySelector('.mds-form-control');
|
|
41
|
+
const characterCountNumber = document.querySelector('.js-character-count-number');
|
|
42
|
+
|
|
43
|
+
formControl.value = 'Hello';
|
|
44
|
+
characterCount.init();
|
|
45
|
+
|
|
46
|
+
expect(characterCountNumber.textContent).toBe('95');
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it('should add input event listener to form control', () => {
|
|
50
|
+
const formControl = document.querySelector('.mds-form-control');
|
|
51
|
+
const characterCountNumber = document.querySelector('.js-character-count-number');
|
|
52
|
+
|
|
53
|
+
characterCount.init();
|
|
54
|
+
|
|
55
|
+
formControl.value = 'Test input';
|
|
56
|
+
formControl.dispatchEvent(new dom.window.Event('input', { bubbles: true }));
|
|
57
|
+
|
|
58
|
+
expect(characterCountNumber.textContent).toBe('90');
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it('should handle multiple character count elements', () => {
|
|
62
|
+
document.body.innerHTML = `
|
|
63
|
+
<div class="mds-form-element--character-count">
|
|
64
|
+
<textarea class="mds-form-control" maxlength="50"></textarea>
|
|
65
|
+
<div class="mds-form-message--character-count">
|
|
66
|
+
<span class="js-character-count-number">50</span>
|
|
67
|
+
</div>
|
|
68
|
+
</div>
|
|
69
|
+
<div class="mds-form-element--character-count">
|
|
70
|
+
<textarea class="mds-form-control" maxlength="100"></textarea>
|
|
71
|
+
<div class="mds-form-message--character-count">
|
|
72
|
+
<span class="js-character-count-number">100</span>
|
|
73
|
+
</div>
|
|
74
|
+
</div>
|
|
75
|
+
`;
|
|
76
|
+
|
|
77
|
+
characterCount.init();
|
|
78
|
+
|
|
79
|
+
const formControls = document.querySelectorAll('.mds-form-control');
|
|
80
|
+
expect(formControls[0].hasAttribute('maxlength')).toBe(false);
|
|
81
|
+
expect(formControls[1].hasAttribute('maxlength')).toBe(false);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
describe('updateCounter', () => {
|
|
86
|
+
let formControl;
|
|
87
|
+
let message;
|
|
88
|
+
let characterCountNumber;
|
|
89
|
+
const maxLength = 100;
|
|
90
|
+
|
|
91
|
+
beforeEach(() => {
|
|
92
|
+
formControl = document.querySelector('.mds-form-control');
|
|
93
|
+
message = document.querySelector('.mds-form-message--character-count');
|
|
94
|
+
characterCountNumber = document.querySelector('.js-character-count-number');
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
it('should update counter with remaining characters', () => {
|
|
98
|
+
formControl.value = 'Hello World';
|
|
99
|
+
|
|
100
|
+
characterCount.updateCounter(formControl, maxLength, characterCountNumber, message);
|
|
101
|
+
|
|
102
|
+
expect(characterCountNumber.textContent).toBe('89');
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
it('should count newlines as 2 characters', () => {
|
|
106
|
+
formControl.value = 'Line 1\nLine 2\nLine 3';
|
|
107
|
+
|
|
108
|
+
characterCount.updateCounter(formControl, maxLength, characterCountNumber, message);
|
|
109
|
+
|
|
110
|
+
// "Line 1\nLine 2\nLine 3" = 20 chars + 2 newlines (adds 2) = 22 total
|
|
111
|
+
expect(characterCountNumber.textContent).toBe('78');
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
it('should count carriage return + newline as 2 characters', () => {
|
|
115
|
+
formControl.value = 'Line 1\r\nLine 2';
|
|
116
|
+
|
|
117
|
+
characterCount.updateCounter(formControl, maxLength, characterCountNumber, message);
|
|
118
|
+
|
|
119
|
+
// "Line 1\r\nLine 2" = 13 chars + 1 newline (adds 1), total = 14
|
|
120
|
+
// Note '\r\n' is treated as a single character match
|
|
121
|
+
expect(characterCountNumber.textContent).toBe('86');
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
it('should add error class when exceeding max length', () => {
|
|
125
|
+
formControl.value = 'a'.repeat(101);
|
|
126
|
+
|
|
127
|
+
characterCount.updateCounter(formControl, maxLength, characterCountNumber, message);
|
|
128
|
+
|
|
129
|
+
expect(message.classList.contains('mds-form-message--error')).toBe(true);
|
|
130
|
+
expect(characterCountNumber.textContent).toBe('-1');
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
it('should remove error class when within limit', () => {
|
|
134
|
+
message.classList.add('mds-form-message--error');
|
|
135
|
+
formControl.value = 'Short text';
|
|
136
|
+
|
|
137
|
+
characterCount.updateCounter(formControl, maxLength, characterCountNumber, message);
|
|
138
|
+
|
|
139
|
+
expect(message.classList.contains('mds-form-message--error')).toBe(false);
|
|
140
|
+
expect(characterCountNumber.textContent).toBe('90');
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
it('should handle empty input', () => {
|
|
144
|
+
formControl.value = '';
|
|
145
|
+
|
|
146
|
+
characterCount.updateCounter(formControl, maxLength, characterCountNumber, message);
|
|
147
|
+
|
|
148
|
+
expect(characterCountNumber.textContent).toBe('100');
|
|
149
|
+
expect(message.classList.contains('mds-form-message--error')).toBe(false);
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
it('should handle input exactly at max length', () => {
|
|
153
|
+
formControl.value = 'a'.repeat(100);
|
|
154
|
+
|
|
155
|
+
characterCount.updateCounter(formControl, maxLength, characterCountNumber, message);
|
|
156
|
+
|
|
157
|
+
expect(characterCountNumber.textContent).toBe('0');
|
|
158
|
+
expect(message.classList.contains('mds-form-message--error')).toBe(false);
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
it('should display negative count when over limit', () => {
|
|
162
|
+
formControl.value = 'a'.repeat(105);
|
|
163
|
+
|
|
164
|
+
characterCount.updateCounter(formControl, maxLength, characterCountNumber, message);
|
|
165
|
+
|
|
166
|
+
expect(characterCountNumber.textContent).toBe('-5');
|
|
167
|
+
expect(message.classList.contains('mds-form-message--error')).toBe(true);
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
it('should handle mixed line endings', () => {
|
|
171
|
+
formControl.value = 'Line 1\nLine 2\r\nLine 3\rLine 4';
|
|
172
|
+
|
|
173
|
+
characterCount.updateCounter(formControl, maxLength, characterCountNumber, message);
|
|
174
|
+
|
|
175
|
+
// "Line 1\nLine 2\r\nLine 3\rLine 4" = 27 chars + 3 line ending matches (adds 3) = 30 total
|
|
176
|
+
// Note '\r\n' is treated as a single character match
|
|
177
|
+
expect(characterCountNumber.textContent).toBe('70');
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
describe('event handling', () => {
|
|
182
|
+
it('should stop propagation of input events', () => {
|
|
183
|
+
const formControl = document.querySelector('.mds-form-control');
|
|
184
|
+
let propagated = false;
|
|
185
|
+
|
|
186
|
+
document.body.addEventListener('input', () => {
|
|
187
|
+
propagated = true;
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
characterCount.init();
|
|
191
|
+
|
|
192
|
+
formControl.value = 'Test';
|
|
193
|
+
const event = new dom.window.Event('input', { bubbles: true });
|
|
194
|
+
formControl.dispatchEvent(event);
|
|
195
|
+
|
|
196
|
+
expect(propagated).toBe(false);
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
});
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
- `inputClasses`: add extra classes to the inner input element - **optional**
|
|
17
17
|
- `placeholder`: add a placeholder to the input **optional**
|
|
18
18
|
**(please see accessibility notes below regarding the use of this parameter)**
|
|
19
|
+
- `maxlength`: specify the maximum length (in characters) allowed in the input. Adding this attribute will automatically add a "character counter" below the input (see notes below) - **optional**
|
|
19
20
|
- `i18n`: Text to translate/customise (object) **optional**
|
|
20
21
|
- `autocompleteValue`: Used by the browser to populate form fields, eg given-name **optional**
|
|
21
22
|
|
|
@@ -23,6 +24,7 @@
|
|
|
23
24
|
i18n: {
|
|
24
25
|
requiredIcon: 'required', // visually hidden text for the required icon (label)
|
|
25
26
|
errorIcon: default is 'Error', // visually hidden text for the error icon
|
|
27
|
+
characterCountText: '<span class="js-character-count-number">[maxlength]</span> characters remaining' (use with the maxlength parameter)
|
|
26
28
|
}
|
|
27
29
|
```
|
|
28
30
|
|
|
@@ -36,6 +38,12 @@ The placeholder can also be a problem given its lower contrast so don't rely on
|
|
|
36
38
|
|
|
37
39
|
Useful article: https://www.nngroup.com/articles/form-design-placeholders/
|
|
38
40
|
|
|
41
|
+
## Character counter
|
|
42
|
+
Adding the `maxlength` attribute will add a "character counter" automatically if javascript is enabled. Please note that the attribute will be removed with javascript to allow for a negative count. This is to ensure that the text entered by the user is not cut off without warning. The negative count's message will look like an error to prompt the user to edit the text entered. The maximum length of the text should obviously be checked server side.
|
|
43
|
+
|
|
44
|
+
`aria-live="polite"` and `aria-atomic="true"` has been added to the counter container so the updates can be read to the user after he has finished entering the text.
|
|
45
|
+
We are also using `aria-describedby` to get the number of characters left when a user enters the input.
|
|
46
|
+
|
|
39
47
|
## Note
|
|
40
48
|
|
|
41
49
|
We have not placed any specific ruleing to stop `Select`/`Radio`/`Checkbox` being selected but have made no effort to style them
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{% from "../label/_macro.njk" import MdsInputLabel %}
|
|
2
2
|
{% from "../_message/_macro.njk" import MdsInputMessages %}
|
|
3
|
+
{% from "../../icons/_macro.njk" import MdsIcon %}
|
|
3
4
|
{% from "../../../sub-components/attributes/macro.njk" import MdsAttributes %}
|
|
4
5
|
|
|
5
6
|
{% if params.name %}
|
|
@@ -8,6 +9,10 @@
|
|
|
8
9
|
{% set name = params.id %}
|
|
9
10
|
{% endif %}
|
|
10
11
|
|
|
12
|
+
{% if params.maxlength %}
|
|
13
|
+
{% set characterCountId = [params.id, '-character-count-text'] | join %}
|
|
14
|
+
{% endif %}
|
|
15
|
+
|
|
11
16
|
{% if params.helpText %}
|
|
12
17
|
{% set helpTextId = [params.id, '-help-text'] | join %}
|
|
13
18
|
{% endif %}
|
|
@@ -16,11 +21,11 @@
|
|
|
16
21
|
{% set validationErrorId = [params.id, '-validation-error'] | join %}
|
|
17
22
|
{% endif %}
|
|
18
23
|
|
|
19
|
-
{% if helpTextId or validationErrorId %}
|
|
20
|
-
{% set ariaDescribedBy = [validationErrorId, helpTextId] | join(' ') | trim %}
|
|
24
|
+
{% if characterCountId or helpTextId or validationErrorId %}
|
|
25
|
+
{% set ariaDescribedBy = [validationErrorId, helpTextId, characterCountId] | join(' ') | trim %}
|
|
21
26
|
{% endif %}
|
|
22
27
|
|
|
23
|
-
<div class="mds-form-element mds-form-element--input{% if params.state %} mds-form-element--{{params.state}}{% endif %}{% if params.classes %} {{params.classes}}{% endif %}" id="{{ params.id }}-container" data-test="input{% if params.id %}-{{params.id}}{% endif %}">
|
|
28
|
+
<div class="mds-form-element mds-form-element--input{% if params.state %} mds-form-element--{{params.state}}{% endif %}{% if params.classes %} {{params.classes}}{% endif %}{% if params.maxlength %} mds-form-element--character-count{% endif %}" id="{{ params.id }}-container" data-test="input{% if params.id %}-{{params.id}}{% endif %}">
|
|
24
29
|
{{ MdsInputLabel({
|
|
25
30
|
labelText: params.labelText,
|
|
26
31
|
hideLabel: params.hideLabel,
|
|
@@ -50,6 +55,9 @@
|
|
|
50
55
|
{% if params.value %}
|
|
51
56
|
value="{{params.value}}"
|
|
52
57
|
{% endif %}
|
|
58
|
+
{% if params.maxlength %}
|
|
59
|
+
maxlength="{{ params.maxlength }}"
|
|
60
|
+
{% endif %}
|
|
53
61
|
{% if params.validationError %}
|
|
54
62
|
aria-invalid="true"
|
|
55
63
|
{% endif %}
|
|
@@ -61,4 +69,16 @@
|
|
|
61
69
|
{% endif %}
|
|
62
70
|
{{- MdsAttributes(params.attributes) -}}
|
|
63
71
|
/>
|
|
72
|
+
{% if params.maxlength %}
|
|
73
|
+
<div class="mds-form-message mds-form-message--character-count" id="{{ params.id }}-character-count-text" aria-live="polite" aria-atomic="true">
|
|
74
|
+
{{- MdsIcon({
|
|
75
|
+
iconName: 'cross',
|
|
76
|
+
classes: 'mds-icon--sm',
|
|
77
|
+
hasContainer: true,
|
|
78
|
+
containerClasses: 'mds-icon-container--circle mds-icon-container--error mds-icon-container--before'
|
|
79
|
+
})
|
|
80
|
+
-}}
|
|
81
|
+
<span>{{ params.i18n.characterCountText | default('<span class="js-character-count-number">'+ (params.maxlength - (params.value | length | default(0))) +'</span> characters remaining') | safe }}</span>
|
|
82
|
+
</div>
|
|
83
|
+
{% endif %}
|
|
64
84
|
</div>
|
|
@@ -109,5 +109,25 @@ module.exports = {
|
|
|
109
109
|
autocompleteValue: 'given-name',
|
|
110
110
|
},
|
|
111
111
|
},
|
|
112
|
+
{
|
|
113
|
+
name: 'Input with character count',
|
|
114
|
+
context: {
|
|
115
|
+
labelText: 'Input with character count',
|
|
116
|
+
type: 'text',
|
|
117
|
+
id: 'input-with-character-count',
|
|
118
|
+
maxlength: 50,
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
name: 'Input with character count and error',
|
|
123
|
+
context: {
|
|
124
|
+
labelText: 'Input with character count and error',
|
|
125
|
+
type: 'text',
|
|
126
|
+
id: 'input-with-character-count-error',
|
|
127
|
+
maxlength: 50,
|
|
128
|
+
state: 'error',
|
|
129
|
+
validationError: 'This field has too many characters',
|
|
130
|
+
},
|
|
131
|
+
},
|
|
112
132
|
],
|
|
113
133
|
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
.mds-form-element--select {
|
|
2
|
+
select.mds-form-control {
|
|
3
|
+
appearance: none;
|
|
4
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%23707070' d='M8 11.4L2.6 6 4 4.6l4 4 4-4L13.4 6z'/%3E%3C/svg%3E");
|
|
5
|
+
background-repeat: no-repeat;
|
|
6
|
+
background-position: right ($constant-size-baseline * 3) center;
|
|
7
|
+
background-size: 16px;
|
|
8
|
+
padding-right: $constant-size-baseline * 10;
|
|
9
|
+
cursor: pointer;
|
|
10
|
+
|
|
11
|
+
&:disabled {
|
|
12
|
+
cursor: not-allowed;
|
|
13
|
+
background-color: $constant-color-neutral-lightest;
|
|
14
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%23DDDDDD' d='M8 11.4L2.6 6 4 4.6l4 4 4-4L13.4 6z'/%3E%3C/svg%3E");
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Ensure white background for non-error, non-disabled states
|
|
19
|
+
&:not(.mds-form-element--error) select.mds-form-control:not(:disabled) {
|
|
20
|
+
background-color: #fff;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
containerClasses: 'mds-icon-container--circle mds-icon-container--error mds-icon-container--before'
|
|
74
74
|
})
|
|
75
75
|
-}}
|
|
76
|
-
<span>{{ params.i18n.characterCountText | default('<span class="js-character-count-number">'+ params.maxlength +'</span> characters remaining') | safe }}</span>
|
|
76
|
+
<span>{{ params.i18n.characterCountText | default('<span class="js-character-count-number">'+ (params.maxlength - (params.value | length | default(0))) +'</span> characters remaining') | safe }}</span>
|
|
77
77
|
</div>
|
|
78
78
|
{% endif %}
|
|
79
79
|
</div>
|
package/src/js/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import checkboxList from '../components/inputs/checkbox-list/checkbox-list';
|
|
|
6
6
|
import popovers from '../components/popover/popover';
|
|
7
7
|
import modals from '../components/modal/modal';
|
|
8
8
|
import { MdsFileUpload } from '../components/inputs/file-upload/file-upload';
|
|
9
|
-
import characterCount from '../components/inputs/
|
|
9
|
+
import characterCount from '../components/inputs/character-count/character-count';
|
|
10
10
|
import button from '../components/button/button';
|
|
11
11
|
import prose from '../helpers/prose/prose';
|
|
12
12
|
import { MdsDropdownNav } from '../components/dropdown-nav/dropdown-nav';
|