@aarhus-university/au-designsystem-delphinus 1.4.2 → 1.4.4
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/CHANGELOG.md +16 -2
- package/esbuild.mjs +1 -1
- package/package.json +1 -1
- package/public/js/app.js +2 -2
- package/public/js/app.js.map +7 -7
- package/public/js/demo.js +14 -14
- package/public/js/demo.js.map +7 -7
- package/public/projects/bachelor-applications/js/app.js +2 -2
- package/public/projects/bachelor-applications/js/app.js.map +7 -7
- package/public/projects/bachelor-applications/style.css +1 -1
- package/public/projects/brightspace/style.css +1 -1
- package/public/projects/config-tools/style.css +5 -1
- package/public/projects/course-catalogue/js/app.js +2 -2
- package/public/projects/course-catalogue/js/app.js.map +7 -7
- package/public/projects/course-catalogue/style.css +1 -1
- package/public/projects/medarbejdere/js/app.js +2 -2
- package/public/projects/medarbejdere/js/app.js.map +7 -7
- package/public/projects/medarbejdere/style.css +1 -1
- package/public/projects/mitstudie/js/app.js +2 -2
- package/public/projects/mitstudie/js/app.js.map +7 -7
- package/public/projects/mitstudie/style.css +1 -1
- package/public/projects/omnibus/js/app.js +14 -2
- package/public/projects/omnibus/js/app.js.map +7 -7
- package/public/projects/omnibus/style.css +1 -1
- package/public/projects/typo3/js/app.js +2 -2
- package/public/projects/typo3/js/app.js.map +7 -7
- package/public/projects/typo3/style.css +1 -1
- package/public/style.css +1 -1
- package/routes/index.js +2 -2
- package/source/js/omnibus/app.ts +145 -0
- package/source/js/production/app.ts +0 -13
- package/source/markup/layout-row.pug +55 -0
- package/source/markup/partials/mixins-demo/_form-fields-demo.pug +1 -1
- package/source/projects/index.pug +0 -2
- package/source/projects/omnibus/index.html +22 -8
- package/source/projects/omnibus/nyhedsbrev.html +4 -3
- package/source/projects/omnibus/style/_about-us.scss +1 -1
- package/source/projects/omnibus/style/_cludo-overwrite.scss +147 -0
- package/source/projects/omnibus/style/_newsletter.scss +1 -1
- package/source/projects/omnibus/style/_omnibus.scss +233 -25
- package/source/projects/omnibus/style.scss +31 -5
- package/source/projects/typo3/style/_news-event.scss +6 -6
- package/source/style/layout/_row.scss +93 -0
- package/source/style/module/_horizontal-scroll.scss +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
|
-
## 1.4.
|
|
1
|
+
## 1.4.4 (April 10, 2024)
|
|
2
|
+
### Core Delphinus Updates
|
|
3
|
+
Added the following [layouts](https://delphinus.au.dk/layout-row).
|
|
4
|
+
* 2 columns
|
|
5
|
+
* 3 columms
|
|
6
|
+
* 4 columms
|
|
7
|
+
* 2-1 layout
|
|
8
|
+
* 1-2 layout
|
|
9
|
+
|
|
10
|
+
## 1.4.3 (March 26, 2024)
|
|
11
|
+
### Core Delphinus Updates
|
|
12
|
+
* Added 1-2-1 [layout](https://delphinus.au.dk/layout-row), that divides 3 row item with a 25%, 50% and 25% distribution.
|
|
13
|
+
### Delphinus Projects Updates
|
|
14
|
+
#### Omnibus
|
|
15
|
+
* Removed preview for Omnibus-V2 as launch approaches and final touches are being made.
|
|
2
16
|
|
|
17
|
+
## 1.4.2 (March 12, 2024)
|
|
3
18
|
### Core Delphinus Updates
|
|
4
19
|
* Fixed a bug where adjecent ordered lists would reset the counter even though the start attribute were set.
|
|
5
20
|
|
|
@@ -15,7 +30,6 @@
|
|
|
15
30
|
* Box modifier added for boxes without padding
|
|
16
31
|
|
|
17
32
|
## 1.3.7 (January 23, 2024)
|
|
18
|
-
|
|
19
33
|
### Core Delphinus Updates
|
|
20
34
|
* Fixed stepper component so finish icon can be active and final
|
|
21
35
|
* Fixed stepper text alignment issues
|
package/esbuild.mjs
CHANGED
|
@@ -11,7 +11,7 @@ await esbuild.build({
|
|
|
11
11
|
'projects/mitstudie/js/app': './source/js/production/app.ts',
|
|
12
12
|
'projects/bachelor-applications/js/app': './source/js/production/app.ts',
|
|
13
13
|
'projects/course-catalogue/js/app': './source/js/production/app.ts',
|
|
14
|
-
'projects/omnibus/js/app': './source/js/
|
|
14
|
+
'projects/omnibus/js/app': './source/js/omnibus/app.ts',
|
|
15
15
|
},
|
|
16
16
|
bundle: true,
|
|
17
17
|
minify: true,
|
package/package.json
CHANGED
package/public/js/app.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(()=>{var se=e=>{document.readyState!=="loading"?e():document.addEventListener("DOMContentLoaded",e)},B=se;var T=e=>{navigator.clipboard.writeText(e).then(()=>console.log(`${e} written to clipboard`))},y=(e,t)=>{let o=!1;return e.composedPath().forEach(r=>{r.classList&&r.classList.contains(t)&&(o=!0)}),o},U=()=>{let e=document.querySelector("body");if(e){let t=window.getComputedStyle(e).getPropertyValue("--color-background"),o=document.querySelector('meta[name="theme-color"]');if(o)o.content=t;else{let l=document.createElement("meta");l.name="theme-color",l.content=t,document.getElementsByTagName("head")[0].appendChild(l)}}},V=()=>parseInt(window.getComputedStyle(document.documentElement).fontSize.replace("px",""),10),x=e=>e*16,E=e=>{let t=Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),o=x(parseInt(getComputedStyle(document.documentElement).getPropertyValue(e).replace("rem",""),10));return t<o};var le=e=>e.offsetWidth!==e.scrollWidth;var w=e=>{e.classList.contains("horizontal-scroll--no-overflow")&&e.classList.remove("horizontal-scroll--no-overflow");let t=e.querySelector(".horizontal-scroll--check-overflow .tabbed-content__section:not([hidden]) .horizontal-scroll__scrollable-content");t===null&&!t&&(t=e.querySelector(".horizontal-scroll--check-overflow .horizontal-scroll__scrollable-content")),t&&(le(t)?t?.setAttribute("tabindex","0"):(e.classList.add("horizontal-scroll--no-overflow"),t?.removeAttribute("tabindex")))};var D=e=>{let t=e.parentElement;return t?t.classList.contains("nav")?t:D(t):e},$=(e,t=null)=>{let o="nav--toggled";e.forEach(l=>{let r=l.querySelector(".nav__toggle");l!==t&&(l.classList.contains(o)&&(r.focus(),r.setAttribute("aria-expanded","false")),l.classList.remove(o))})},K=e=>{let t=r=>{let n=D(r),s=n.querySelectorAll(".nav__item"),i=n.querySelector(".nav__items"),f=i?.querySelector(".nav__item:last-of-type");i?.classList.add("nav__items--fadeout");let u=i?.querySelector(".nav__item--is-overflown");u&&u.focus();let a=()=>{n.classList.toggle("nav--toggled"),i?.classList.remove("nav__items--fadeout"),f?.removeEventListener("transitionend",a)};return f?.addEventListener("transitionend",a),n},o=[];return document.querySelectorAll(".nav__toggle").forEach(r=>{let n=()=>{let s=t(r),i=r.getAttribute("aria-expanded");r.setAttribute("aria-expanded",i==="false"?"true":"false"),$(e,s)};o.push({element:r,clickEvent:n}),r.addEventListener("click",n)}),o},C=(e,t)=>{let o="nav--toggled",l="nav__items";t.classList.remove(o);let r=t.querySelector(`.${l}`);if(r){let s=r.querySelectorAll(".nav__item"),i="nav__item--is-overflown",f="nav--has-overflow",u="nav__item--active",a=!1;for(let c=s.length-1;c>=0;c-=1){let m=s[c];m.offsetTop>0?(m.classList.add(i),t.classList.add(f),a=!0):m.classList.contains(u)||m.classList.remove(i)}if(!a){t.classList.remove(f);let c=t.querySelector(`.${u}`);c&&c.classList.remove(i)}}let n=s=>{!s.target.classList.contains("nav__toggle")&&!y(s,l)&&$(e)};return document.querySelector("body")?.addEventListener("click",n),{element:document.querySelector("body"),clickEvent:n}};var R=(e,t,o,l,r)=>{if(l&&o){T(l.innerText),t.classList.add("copy-to-clipboard--confirm"),t===o&&t.classList.add("copy-to-clipboard--done");let n=document.createElement("span");n.classList.add("copy-to-clipboard__this__confirm-message"),n.innerText=e,l.appendChild(n),o.removeEventListener("click",r),setTimeout(()=>{t.classList.remove("copy-to-clipboard--confirm"),n.remove(),o.addEventListener("click",r)},1200)}},j=(e,t="Kopieret!")=>{let o=e.querySelector(".copy-to-clipboard__this");if(e.type==="button"){let l=()=>{R(t,e,e,o,l)};e.addEventListener("click",l)}else{let l=e.querySelector(".copy-to-clipboard__execute"),r=()=>{R(t,e,l,o,r)};l?.addEventListener("click",r)}};var re=()=>{let e=document.querySelectorAll(".copy-to-clipboard"),t=document.querySelectorAll(".copy-to-clipboard__color");e.forEach(o=>{o.addEventListener("click",()=>{let l=o.parentElement?.querySelector(".copy-to-clipboard__color");if(l){let r=getComputedStyle(l).getPropertyValue("background-color"),n=ie(r);console.log(n),T(n.replace(/"/g,""))}})})};function ie(e){var t=e.match(/\d+/g),o="#"+t.map(function(l){var r=parseInt(l).toString(16);return r.length===1?"0"+r:r}).join("");return o}var X=re;var Y=e=>{let t=e.querySelector("thead"),o=e.querySelector("tbody"),l=e.querySelector("tfoot");if(t){let r=[];t.querySelectorAll("th").forEach(i=>{i.classList.contains("table__cell--self-explanatory")?r.push(""):r.push(i.innerHTML)});let s=[];o&&s.push(o),l&&s.push(l),s.forEach(i=>{i.querySelectorAll("tr").forEach(u=>{u.querySelectorAll("td, th").forEach((c,m)=>{r[m]&&c.setAttribute("data-label",r[m])})})})}};var ae=e=>e.contains("tabbed-content--hide-tabs-on-medium-width")?parseInt(getComputedStyle(document.documentElement).getPropertyValue("--bp-medium").replace("rem",""),10):e.contains("tabbed-content--hide-tabs-on-wide-width")?parseInt(getComputedStyle(document.documentElement).getPropertyValue("--bp-wide").replace("rem",""),10):-1,ce=e=>{let o=Math.max(document.documentElement.clientWidth||0,window.innerWidth||0)/V(),l=ae(e);return l>-1?o<l:!0},de=e=>{let o=e.querySelector(".nav__items")?.querySelectorAll("a"),l=[];e.querySelectorAll("section").forEach(n=>{n.parentNode===e&&l.push(n)}),o?.forEach(n=>{n.removeAttribute("aria-selected"),n.classList.remove("nav__item--active")}),l.forEach(n=>{n.hidden=!1,n.removeAttribute("role")})};var q=(e,t,o,l,r,n=!0,s=i=>console.log(i))=>{n&&l.focus(),l.removeAttribute("tabindex"),l.setAttribute("aria-selected","true"),l.classList.contains("switch__segment")?l.classList.add("switch__segment--active"):l.classList.add("nav__item--active"),o&&(o.removeAttribute("aria-selected"),o.setAttribute("tabindex","-1"),o.classList.contains("switch__segment")?o.classList.remove("switch__segment--active"):o.classList.remove("nav__item--active"));let i=Array.prototype.indexOf.call(e,l);if(Array.from(document.querySelectorAll(`[data-for="${t[i].id}"]`)).forEach(u=>{u.classList.add("tabbed-content-peripheral--active"),u.hidden=!1}),t[i].hidden=!1,o){let u=Array.prototype.indexOf.call(e,o);Array.from(document.querySelectorAll(`[data-for="${t[u].id}"]`)).forEach(c=>{c.classList.remove("tabbed-content-peripheral--active"),c.hidden=!0}),t[u].hidden=!0}l.dispatchEvent(new CustomEvent("switch-tab",{bubbles:!0,detail:{tab:i}})),s(i)},ue=(e,t,o=0,l=!0,r=n=>console.log(n))=>{let n=t.querySelector(".switch,.nav__items"),s=n.querySelectorAll("a"),i=[];t.querySelectorAll("section").forEach(a=>{a.parentNode===t&&i.push(a)});let u=t.querySelector("button.tabbed-content__expand-all");if(u){let a=()=>{n.hidden=!0,i.forEach(c=>{c.hidden=!1})};u.removeEventListener("click",a),u.addEventListener("click",a)}n.setAttribute("role","tablist"),s.forEach((a,c)=>{a.setAttribute("role","tab"),a.setAttribute("id",`tab${e}_${c+1}`),a.setAttribute("tabindex","-1"),a.parentElement?.setAttribute("role","presentation");let m=p=>{p.preventDefault();let _=n.querySelector("[aria-selected]");p.currentTarget!==_&&q(s,i,_,p.currentTarget,t.classList,!0,L=>{r(L)})};a.removeEventListener("click",m),a.addEventListener("click",m);let v=p=>{let _=Array.prototype.indexOf.call(s,p.currentTarget),L=null;p.key==="ArrowLeft"&&(L=_-1),p.key==="ArrowRight"&&(L=_+1),p.key==="ArrowDown"&&(L="down"),L!==null&&(p.preventDefault(),L==="down"?i[c].focus():s[L]&&q(s,i,p.currentTarget,s[L],t.classList,!0,g=>{r(g)}))};a.removeEventListener("keydown",v),a.addEventListener("keydown",v)}),i.forEach((a,c)=>{a.setAttribute("tabindex","-1"),a.setAttribute("aria-labelledby",s[c].id),a.hidden=!0,a.setAttribute("role","tabpanel")}),o>-1&&q(s,i,null,s[o],t.classList,l)},k=e=>{e.forEach((t,o)=>{let{rendered:l,domElement:r}=t;if(ce(r.classList)){if(!l){let n=r.getAttribute("data-focus-onload"),s=r.getAttribute("data-initial-tab"),i=s?parseInt(s,10):0;ue(o,r,i,n!=="false"),t.rendered=!0}}else l&&(de(r),t.rendered=!1)})};var I=(e,t,o,l)=>{let r=[],n=(a,c,m)=>{m&&c.focus();let v=()=>{e.setAttribute("hidden","hidden"),a.removeAttribute("hidden"),a.setAttribute("aria-expanded","false"),a.focus()};return c.addEventListener("click",v),v},s=e?.parentElement?.querySelector(".content-toggle__toggle"),i=e.querySelectorAll(".content-toggle__close"),f=()=>{E("--bp-medium")&&e.classList.contains("content-toggle__content--always-show-on-medium")||E("--bp-wide")&&e.classList.contains("content-toggle__content--always-show-on-wide")||E("--bp-max-width")&&e.classList.contains("content-toggle__content--always-show-on-max-width")?(s.removeAttribute("hidden"),e.setAttribute("hidden","hidden")):e.classList.contains("content-toggle__content--always-show-on-medium")||e.classList.contains("content-toggle__content--always-show-on-wide")||e.classList.contains("content-toggle__content--always-show-on-max-width")};if(window.addEventListener("resize",()=>{f()}),(()=>{document.addEventListener("click",a=>{let c=a.target,m=!c.classList.contains("content-toggle__content"),v=!c.classList.contains("content-toggle__toggle"),p=!c.classList.contains("profile-header__info__contact__toggle__button");m&&v&&p&&(!E("--bp-medium")&&e.classList.contains("content-toggle__content--is-popover--on-medium")||!E("--bp-wide")&&e.classList.contains("content-toggle__content--is-popover--on-wide")||!E("--bp-max-width")&&e.classList.contains("content-toggle__content--is-popover--on-max-width")||e.classList.contains("content-toggle__content--is-popover"))&&(s.removeAttribute("hidden"),e.setAttribute("hidden","hidden"),s.setAttribute("aria-expanded","false"),s.focus())})})(),f(),s){let a=()=>{let c=s.getAttribute("aria-expanded");typeof o=="function"&&c==="false"&&o(e,s),s.setAttribute("aria-expanded",c==="false"?"true":"false"),c==="true"?e.setAttribute("hidden","hidden"):e.removeAttribute("hidden"),typeof t=="function"&&t(e,s),s.hasAttribute("aria-haspopup")&&(s.setAttribute("hidden","hidden"),i.forEach(m=>{n(s,m,!0)})),typeof l=="function"&&l(e,s)};s.addEventListener("click",a),r.push({element:s,clickEvent:a}),i.forEach(c=>{let m=n(s,c,!1);r.push({element:c,clickEvent:m})})}return r};var F=()=>{let e=document.querySelector("body");(E("--bp-medium")||E("--bp-low-height"))&&e?.classList.add("body--no-scroll")},Q=()=>{document.querySelector("body")?.classList.remove("body--no-scroll")},N=e=>{e.querySelectorAll(".content-toggle__toggle").forEach(o=>{let l=o.parentElement?.querySelector(".content-toggle__content");o.setAttribute("aria-expanded","false"),l?.setAttribute("hidden","hidden")})};var M=e=>{let t=e.parentElement;return t?t.classList.contains("toolbar")?t:M(t):e},G=e=>{if(!E("--bp-medium")&&!E("--bp-low-height")){let t=x(parseInt(getComputedStyle(document.documentElement).getPropertyValue("--toolbar-popout-allowed-edge-distance").replace("rem,",""),10)),o=parseInt(getComputedStyle(e).width.replace("px",""),10),l=e.getBoundingClientRect().x,r=document.body.offsetWidth-t-o-l;r<0&&e.style.setProperty("--toolbar-popout-edge-overflow",`${r}px`)}};var J=e=>{e&&e.forEach(t=>{let o=t?.parentElement?.parentElement?.parentElement?.parentElement;if(o){let l=o.querySelectorAll(".horizontal-scroll__scrollable-content"),r=o.querySelectorAll(".switch__segment");l.forEach(n=>{n&&(t.addEventListener("click",()=>{let s=.8*n.clientWidth;n.scrollLeft+=s}),n.addEventListener("scroll",()=>{n.scrollLeft+n.clientWidth>=n.scrollWidth*.98?W(t):n.scrollLeft+n.clientWidth<n.scrollWidth&&P(t)}),r&&r.forEach(s=>{s.addEventListener("click",()=>{P(t),n.scrollLeft=0})}))})}})},Z=e=>{e&&e.forEach(t=>{let o=t?.parentElement?.parentElement?.parentElement?.parentElement;if(o){let l=o.querySelectorAll(".horizontal-scroll__scrollable-content"),r=o.querySelectorAll(".switch__segment");l.forEach(n=>{n&&(t.addEventListener("click",()=>{let s=.8*n.clientWidth;n.scrollLeft-=s}),n.addEventListener("scroll",()=>{n.scrollLeft<=0?W(t):n.scrollLeft>0&&P(t)})),r&&r.forEach(s=>{s.addEventListener("click",()=>{W(t)})})})}})};function P(e){e.classList.remove("visually-disabled"),e.setAttribute("aria-disabled","false")}function W(e){e.classList.add("visually-disabled"),e.setAttribute("aria-disabled","true")}function O(e){e&&e.addEventListener("input",function(t){let o=e?.parentNode;o&&o.dataset&&(o.dataset.value=this.value)})}function b(e,t,o,l,r){let n=t?.value,s=n?.length;if(t&&n&&(t.textContent=n,s=n?.length,s&&l&&r&&o)){let f=parseInt(o,10)-s,u=Math.abs(f);r.textContent&&(r.textContent=r.textContent.replace(/\d+/,String(u))),l.textContent&&(l.textContent=l.textContent.replace(/\d+/,String(u))),f<0&&(e.classList.add("form__field__character-count--overflow"),e.setAttribute("aria-invalid","true")),f>=0&&(e.classList.remove("form__field__character-count--overflow"),e.setAttribute("aria-invalid","false"))}}function ee(e){if(e){let t=e.querySelector("textarea"),o=e.querySelector("input"),l=e.getAttribute("data-recommended-length"),r=e.getAttribute("data-allowed-length"),n=e.querySelector(".form__field__character-count__info__count-down"),s=e.querySelector(".form__field__character-count__info__overflow-count");b(e,t,l,n,s),b(e,t,r,n,s),b(e,o,l,n,s),b(e,o,r,n,s),t?.addEventListener("input",function(){b(e,t,l,n,s),b(e,t,r,n,s)}),o?.addEventListener("input",function(){b(e,o,l,n,s),b(e,o,r,n,s)})}}function te(e){let t=!0;e.addEventListener("click",function(o){t?(e.classList.add("dropdown-icon--active"),e.classList.remove("dropdown-icon--inactive"),t=!1):(e.classList.add("dropdown-icon--inactive"),e.classList.remove("dropdown-icon--active"),t=!0);let l=r=>{e.contains(r.target)||(e.classList.add("dropdown-icon--inactive"),e.classList.remove("dropdown-icon--active"),document.removeEventListener("click",l),t=!0)};document.addEventListener("click",l)})}function oe(e){e&&e.textContent&&e.textContent.length<=4&&(e.style.textAlign="center")}var A=0;B(()=>{let e=document.querySelectorAll(".tabbed-content"),t=[];e.forEach(d=>t.push({domElement:d,rendered:!1})),k(t),U();let o=document.querySelectorAll(".nav:not(.nav--vertical)");o.forEach(d=>C(o,d)),K(o),document.querySelectorAll(".table--wrap-medium-width, .table--wrap-default-width").forEach(d=>Y(d));let r=document.querySelectorAll(".button"),n=document.querySelectorAll(".progress-bar__progress.progress-bar__progress--confirm.progress-bar__progress--transistion-from-start");r.forEach(d=>{d.addEventListener("click",()=>{n.forEach(h=>{h.classList.toggle("progress-bar__progress--transistion-from-start")})})}),document.querySelectorAll(".form__field__character-count").forEach(d=>{ee(d)});let i=document.getElementById("autoexpand");O(i),window.onload=function(){O(i)},document.querySelectorAll(".form__field select, .form__field__combo-box__field").forEach(d=>{te(d)}),document.querySelectorAll(".stepper__item__label").forEach(d=>{oe(d)}),document.querySelectorAll(".copy-to-clipboard").forEach(d=>j(d,document.querySelector("html")?.getAttribute("lang")==="en"?"Hexcode copied!":"Hexkode kopieret!")),X(),document.querySelectorAll(".content-toggle__content:not(.toolbar .content-toggle__content)").forEach(d=>{I(d)});let m=document.querySelectorAll(".button.button--small.button--icon.button--icon--hide-label.icon-next"),v=document.querySelectorAll(".button.button--small.button--icon.button--icon--hide-label.icon-previous");J(m),Z(v),document.querySelectorAll(".horizontal-scroll").forEach(d=>{w(d),window.addEventListener("resize",()=>{w(d)})}),document.querySelectorAll(".switch__segment").forEach(d=>{d.addEventListener("click",()=>{document.querySelectorAll(".horizontal-scroll").forEach(H=>{w(H)})})}),document.querySelectorAll(".toolbar .content-toggle__content").forEach(d=>{I(d,h=>{G(h),F()},h=>N(M(h)),(h,H)=>{let ne=H.getAttribute("aria-expanded"),S=M(h);ne==="true"?S?.classList.add("toolbar--has-popout"):S?.classList.remove("toolbar--has-popout"),h.addEventListener("click",z=>{z.target.classList.contains("toolbar__popout")&&!y(z,"toolbar__filter__content")&&(N(S),Q())})})}),window.addEventListener("load",()=>{A=window.innerWidth}),window.addEventListener("resize",()=>{A>0&&window.innerWidth!==A&&(A=window.innerWidth,o.forEach(d=>C(o,d)),k(t))});let g=document.querySelector(".omnibus-header__mobile-scroll");window.addEventListener("scroll",function(){g&&(window.scrollY>70?(g.classList.add("omnibus-header__mobile-scroll--show"),g.classList.remove("omnibus-header__mobile-scroll--hide")):(g.classList.remove("omnibus-header__mobile-scroll--show"),g.classList.add("omnibus-header__mobile-scroll--hide")))})});})();
|
|
2
|
-
//# sourceMappingURL=app.js.map
|
|
1
|
+
(()=>{var ne=e=>{document.readyState!=="loading"?e():document.addEventListener("DOMContentLoaded",e)},z=ne;var y=e=>{navigator.clipboard.writeText(e).then(()=>console.log(`${e} written to clipboard`))},_=(e,t)=>{let o=!1;return e.composedPath().forEach(r=>{r.classList&&r.classList.contains(t)&&(o=!0)}),o},B=()=>{let e=document.querySelector("body");if(e){let t=window.getComputedStyle(e).getPropertyValue("--color-background"),o=document.querySelector('meta[name="theme-color"]');if(o)o.content=t;else{let l=document.createElement("meta");l.name="theme-color",l.content=t,document.getElementsByTagName("head")[0].appendChild(l)}}},U=()=>parseInt(window.getComputedStyle(document.documentElement).fontSize.replace("px",""),10),S=e=>e*16,E=e=>{let t=Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),o=S(parseInt(getComputedStyle(document.documentElement).getPropertyValue(e).replace("rem",""),10));return t<o};var se=e=>e.offsetWidth!==e.scrollWidth;var T=e=>{e.classList.contains("horizontal-scroll--no-overflow")&&e.classList.remove("horizontal-scroll--no-overflow");let t=e.querySelector(".horizontal-scroll--check-overflow .tabbed-content__section:not([hidden]) .horizontal-scroll__scrollable-content");t===null&&!t&&(t=e.querySelector(".horizontal-scroll--check-overflow .horizontal-scroll__scrollable-content")),t&&(se(t)?t?.setAttribute("tabindex","0"):(e.classList.add("horizontal-scroll--no-overflow"),t?.removeAttribute("tabindex")))};var R=e=>{let t=e.parentElement;return t?t.classList.contains("nav")?t:R(t):e},D=(e,t=null)=>{let o="nav--toggled";e.forEach(l=>{let r=l.querySelector(".nav__toggle");l!==t&&(l.classList.contains(o)&&(r.focus(),r.setAttribute("aria-expanded","false")),l.classList.remove(o))})},$=e=>{let t=r=>{let n=R(r),s=n.querySelectorAll(".nav__item"),i=n.querySelector(".nav__items"),f=i?.querySelector(".nav__item:last-of-type");i?.classList.add("nav__items--fadeout");let u=i?.querySelector(".nav__item--is-overflown");u&&u.focus();let a=()=>{n.classList.toggle("nav--toggled"),i?.classList.remove("nav__items--fadeout"),f?.removeEventListener("transitionend",a)};return f?.addEventListener("transitionend",a),n},o=[];return document.querySelectorAll(".nav__toggle").forEach(r=>{let n=()=>{let s=t(r),i=r.getAttribute("aria-expanded");r.setAttribute("aria-expanded",i==="false"?"true":"false"),D(e,s)};o.push({element:r,clickEvent:n}),r.addEventListener("click",n)}),o},x=(e,t)=>{let o="nav--toggled",l="nav__items";t.classList.remove(o);let r=t.querySelector(`.${l}`);if(r){let s=r.querySelectorAll(".nav__item"),i="nav__item--is-overflown",f="nav--has-overflow",u="nav__item--active",a=!1;for(let c=s.length-1;c>=0;c-=1){let m=s[c];m.offsetTop>0?(m.classList.add(i),t.classList.add(f),a=!0):m.classList.contains(u)||m.classList.remove(i)}if(!a){t.classList.remove(f);let c=t.querySelector(`.${u}`);c&&c.classList.remove(i)}}let n=s=>{!s.target.classList.contains("nav__toggle")&&!_(s,l)&&D(e)};return document.querySelector("body")?.addEventListener("click",n),{element:document.querySelector("body"),clickEvent:n}};var V=(e,t,o,l,r)=>{if(l&&o){y(l.innerText),t.classList.add("copy-to-clipboard--confirm"),t===o&&t.classList.add("copy-to-clipboard--done");let n=document.createElement("span");n.classList.add("copy-to-clipboard__this__confirm-message"),n.innerText=e,l.appendChild(n),o.removeEventListener("click",r),setTimeout(()=>{t.classList.remove("copy-to-clipboard--confirm"),n.remove(),o.addEventListener("click",r)},1200)}},K=(e,t="Kopieret!")=>{let o=e.querySelector(".copy-to-clipboard__this");if(e.type==="button"){let l=()=>{V(t,e,e,o,l)};e.addEventListener("click",l)}else{let l=e.querySelector(".copy-to-clipboard__execute"),r=()=>{V(t,e,l,o,r)};l?.addEventListener("click",r)}};var le=()=>{let e=document.querySelectorAll(".copy-to-clipboard"),t=document.querySelectorAll(".copy-to-clipboard__color");e.forEach(o=>{o.addEventListener("click",()=>{let l=o.parentElement?.querySelector(".copy-to-clipboard__color");if(l){let r=getComputedStyle(l).getPropertyValue("background-color"),n=re(r);console.log(n),y(n.replace(/"/g,""))}})})};function re(e){var t=e.match(/\d+/g),o="#"+t.map(function(l){var r=parseInt(l).toString(16);return r.length===1?"0"+r:r}).join("");return o}var j=le;var X=e=>{let t=e.querySelector("thead"),o=e.querySelector("tbody"),l=e.querySelector("tfoot");if(t){let r=[];t.querySelectorAll("th").forEach(i=>{i.classList.contains("table__cell--self-explanatory")?r.push(""):r.push(i.innerHTML)});let s=[];o&&s.push(o),l&&s.push(l),s.forEach(i=>{i.querySelectorAll("tr").forEach(u=>{u.querySelectorAll("td, th").forEach((c,m)=>{r[m]&&c.setAttribute("data-label",r[m])})})})}};var ie=e=>e.contains("tabbed-content--hide-tabs-on-medium-width")?parseInt(getComputedStyle(document.documentElement).getPropertyValue("--bp-medium").replace("rem",""),10):e.contains("tabbed-content--hide-tabs-on-wide-width")?parseInt(getComputedStyle(document.documentElement).getPropertyValue("--bp-wide").replace("rem",""),10):-1,ae=e=>{let o=Math.max(document.documentElement.clientWidth||0,window.innerWidth||0)/U(),l=ie(e);return l>-1?o<l:!0},ce=e=>{let o=e.querySelector(".nav__items")?.querySelectorAll("a"),l=[];e.querySelectorAll("section").forEach(n=>{n.parentNode===e&&l.push(n)}),o?.forEach(n=>{n.removeAttribute("aria-selected"),n.classList.remove("nav__item--active")}),l.forEach(n=>{n.hidden=!1,n.removeAttribute("role")})};var C=(e,t,o,l,r,n=!0,s=i=>console.log(i))=>{n&&l.focus(),l.removeAttribute("tabindex"),l.setAttribute("aria-selected","true"),l.classList.contains("switch__segment")?l.classList.add("switch__segment--active"):l.classList.add("nav__item--active"),o&&(o.removeAttribute("aria-selected"),o.setAttribute("tabindex","-1"),o.classList.contains("switch__segment")?o.classList.remove("switch__segment--active"):o.classList.remove("nav__item--active"));let i=Array.prototype.indexOf.call(e,l);if(Array.from(document.querySelectorAll(`[data-for="${t[i].id}"]`)).forEach(u=>{u.classList.add("tabbed-content-peripheral--active"),u.hidden=!1}),t[i].hidden=!1,o){let u=Array.prototype.indexOf.call(e,o);Array.from(document.querySelectorAll(`[data-for="${t[u].id}"]`)).forEach(c=>{c.classList.remove("tabbed-content-peripheral--active"),c.hidden=!0}),t[u].hidden=!0}l.dispatchEvent(new CustomEvent("switch-tab",{bubbles:!0,detail:{tab:i}})),s(i)},de=(e,t,o=0,l=!0,r=n=>console.log(n))=>{let n=t.querySelector(".switch,.nav__items"),s=n.querySelectorAll("a"),i=[];t.querySelectorAll("section").forEach(a=>{a.parentNode===t&&i.push(a)});let u=t.querySelector("button.tabbed-content__expand-all");if(u){let a=()=>{n.hidden=!0,i.forEach(c=>{c.hidden=!1})};u.removeEventListener("click",a),u.addEventListener("click",a)}n.setAttribute("role","tablist"),s.forEach((a,c)=>{a.setAttribute("role","tab"),a.setAttribute("id",`tab${e}_${c+1}`),a.setAttribute("tabindex","-1"),a.parentElement?.setAttribute("role","presentation");let m=p=>{p.preventDefault();let b=n.querySelector("[aria-selected]");p.currentTarget!==b&&C(s,i,b,p.currentTarget,t.classList,!0,L=>{r(L)})};a.removeEventListener("click",m),a.addEventListener("click",m);let v=p=>{let b=Array.prototype.indexOf.call(s,p.currentTarget),L=null;p.key==="ArrowLeft"&&(L=b-1),p.key==="ArrowRight"&&(L=b+1),p.key==="ArrowDown"&&(L="down"),L!==null&&(p.preventDefault(),L==="down"?i[c].focus():s[L]&&C(s,i,p.currentTarget,s[L],t.classList,!0,d=>{r(d)}))};a.removeEventListener("keydown",v),a.addEventListener("keydown",v)}),i.forEach((a,c)=>{a.setAttribute("tabindex","-1"),a.setAttribute("aria-labelledby",s[c].id),a.hidden=!0,a.setAttribute("role","tabpanel")}),o>-1&&C(s,i,null,s[o],t.classList,l)},q=e=>{e.forEach((t,o)=>{let{rendered:l,domElement:r}=t;if(ae(r.classList)){if(!l){let n=r.getAttribute("data-focus-onload"),s=r.getAttribute("data-initial-tab"),i=s?parseInt(s,10):0;de(o,r,i,n!=="false"),t.rendered=!0}}else l&&(ce(r),t.rendered=!1)})};var k=(e,t,o,l)=>{let r=[],n=(a,c,m)=>{m&&c.focus();let v=()=>{e.setAttribute("hidden","hidden"),a.removeAttribute("hidden"),a.setAttribute("aria-expanded","false"),a.focus()};return c.addEventListener("click",v),v},s=e?.parentElement?.querySelector(".content-toggle__toggle"),i=e.querySelectorAll(".content-toggle__close"),f=()=>{E("--bp-medium")&&e.classList.contains("content-toggle__content--always-show-on-medium")||E("--bp-wide")&&e.classList.contains("content-toggle__content--always-show-on-wide")||E("--bp-max-width")&&e.classList.contains("content-toggle__content--always-show-on-max-width")?(s.removeAttribute("hidden"),e.setAttribute("hidden","hidden")):e.classList.contains("content-toggle__content--always-show-on-medium")||e.classList.contains("content-toggle__content--always-show-on-wide")||e.classList.contains("content-toggle__content--always-show-on-max-width")};if(window.addEventListener("resize",()=>{f()}),(()=>{document.addEventListener("click",a=>{let c=a.target,m=!c.classList.contains("content-toggle__content"),v=!c.classList.contains("content-toggle__toggle"),p=!c.classList.contains("profile-header__info__contact__toggle__button");m&&v&&p&&(!E("--bp-medium")&&e.classList.contains("content-toggle__content--is-popover--on-medium")||!E("--bp-wide")&&e.classList.contains("content-toggle__content--is-popover--on-wide")||!E("--bp-max-width")&&e.classList.contains("content-toggle__content--is-popover--on-max-width")||e.classList.contains("content-toggle__content--is-popover"))&&(s.removeAttribute("hidden"),e.setAttribute("hidden","hidden"),s.setAttribute("aria-expanded","false"),s.focus())})})(),f(),s){let a=()=>{let c=s.getAttribute("aria-expanded");typeof o=="function"&&c==="false"&&o(e,s),s.setAttribute("aria-expanded",c==="false"?"true":"false"),c==="true"?e.setAttribute("hidden","hidden"):e.removeAttribute("hidden"),typeof t=="function"&&t(e,s),s.hasAttribute("aria-haspopup")&&(s.setAttribute("hidden","hidden"),i.forEach(m=>{n(s,m,!0)})),typeof l=="function"&&l(e,s)};s.addEventListener("click",a),r.push({element:s,clickEvent:a}),i.forEach(c=>{let m=n(s,c,!1);r.push({element:c,clickEvent:m})})}return r};var F=()=>{let e=document.querySelector("body");(E("--bp-medium")||E("--bp-low-height"))&&e?.classList.add("body--no-scroll")},Q=()=>{document.querySelector("body")?.classList.remove("body--no-scroll")},I=e=>{e.querySelectorAll(".content-toggle__toggle").forEach(o=>{let l=o.parentElement?.querySelector(".content-toggle__content");o.setAttribute("aria-expanded","false"),l?.setAttribute("hidden","hidden")})};var w=e=>{let t=e.parentElement;return t?t.classList.contains("toolbar")?t:w(t):e},Y=e=>{if(!E("--bp-medium")&&!E("--bp-low-height")){let t=S(parseInt(getComputedStyle(document.documentElement).getPropertyValue("--toolbar-popout-allowed-edge-distance").replace("rem,",""),10)),o=parseInt(getComputedStyle(e).width.replace("px",""),10),l=e.getBoundingClientRect().x,r=document.body.offsetWidth-t-o-l;r<0&&e.style.setProperty("--toolbar-popout-edge-overflow",`${r}px`)}};var G=e=>{e&&e.forEach(t=>{let o=t?.parentElement?.parentElement?.parentElement?.parentElement;if(o){let l=o.querySelectorAll(".horizontal-scroll__scrollable-content"),r=o.querySelectorAll(".switch__segment");l.forEach(n=>{n&&(t.addEventListener("click",()=>{let s=.8*n.clientWidth;n.scrollLeft+=s}),n.addEventListener("scroll",()=>{n.scrollLeft+n.clientWidth>=n.scrollWidth*.98?P(t):n.scrollLeft+n.clientWidth<n.scrollWidth&&N(t)}),r&&r.forEach(s=>{s.addEventListener("click",()=>{N(t),n.scrollLeft=0})}))})}})},J=e=>{e&&e.forEach(t=>{let o=t?.parentElement?.parentElement?.parentElement?.parentElement;if(o){let l=o.querySelectorAll(".horizontal-scroll__scrollable-content"),r=o.querySelectorAll(".switch__segment");l.forEach(n=>{n&&(t.addEventListener("click",()=>{let s=.8*n.clientWidth;n.scrollLeft-=s}),n.addEventListener("scroll",()=>{n.scrollLeft<=0?P(t):n.scrollLeft>0&&N(t)})),r&&r.forEach(s=>{s.addEventListener("click",()=>{P(t)})})})}})};function N(e){e.classList.remove("visually-disabled"),e.setAttribute("aria-disabled","false")}function P(e){e.classList.add("visually-disabled"),e.setAttribute("aria-disabled","true")}function W(e){e&&e.addEventListener("input",function(t){let o=e?.parentNode;o&&o.dataset&&(o.dataset.value=this.value)})}function g(e,t,o,l,r){let n=t?.value,s=n?.length;if(t&&n&&(t.textContent=n,s=n?.length,s&&l&&r&&o)){let f=parseInt(o,10)-s,u=Math.abs(f);r.textContent&&(r.textContent=r.textContent.replace(/\d+/,String(u))),l.textContent&&(l.textContent=l.textContent.replace(/\d+/,String(u))),f<0&&(e.classList.add("form__field__character-count--overflow"),e.setAttribute("aria-invalid","true")),f>=0&&(e.classList.remove("form__field__character-count--overflow"),e.setAttribute("aria-invalid","false"))}}function Z(e){if(e){let t=e.querySelector("textarea"),o=e.querySelector("input"),l=e.getAttribute("data-recommended-length"),r=e.getAttribute("data-allowed-length"),n=e.querySelector(".form__field__character-count__info__count-down"),s=e.querySelector(".form__field__character-count__info__overflow-count");g(e,t,l,n,s),g(e,t,r,n,s),g(e,o,l,n,s),g(e,o,r,n,s),t?.addEventListener("input",function(){g(e,t,l,n,s),g(e,t,r,n,s)}),o?.addEventListener("input",function(){g(e,o,l,n,s),g(e,o,r,n,s)})}}function ee(e){let t=!0;e.addEventListener("click",function(o){t?(e.classList.add("dropdown-icon--active"),e.classList.remove("dropdown-icon--inactive"),t=!1):(e.classList.add("dropdown-icon--inactive"),e.classList.remove("dropdown-icon--active"),t=!0);let l=r=>{e.contains(r.target)||(e.classList.add("dropdown-icon--inactive"),e.classList.remove("dropdown-icon--active"),document.removeEventListener("click",l),t=!0)};document.addEventListener("click",l)})}function te(e){e&&e.textContent&&e.textContent.length<=4&&(e.style.textAlign="center")}var M=0;z(()=>{let e=document.querySelectorAll(".tabbed-content"),t=[];e.forEach(d=>t.push({domElement:d,rendered:!1})),q(t),B();let o=document.querySelectorAll(".nav:not(.nav--vertical)");o.forEach(d=>x(o,d)),$(o),document.querySelectorAll(".table--wrap-medium-width, .table--wrap-default-width").forEach(d=>X(d));let r=document.querySelectorAll(".button"),n=document.querySelectorAll(".progress-bar__progress.progress-bar__progress--confirm.progress-bar__progress--transistion-from-start");r.forEach(d=>{d.addEventListener("click",()=>{n.forEach(h=>{h.classList.toggle("progress-bar__progress--transistion-from-start")})})}),document.querySelectorAll(".form__field__character-count").forEach(d=>{Z(d)});let i=document.getElementById("autoexpand");W(i),window.onload=function(){W(i)},document.querySelectorAll(".form__field select, .form__field__combo-box__field").forEach(d=>{ee(d)}),document.querySelectorAll(".stepper__item__label").forEach(d=>{te(d)}),document.querySelectorAll(".copy-to-clipboard").forEach(d=>K(d,document.querySelector("html")?.getAttribute("lang")==="en"?"Hexcode copied!":"Hexkode kopieret!")),j(),document.querySelectorAll(".content-toggle__content:not(.toolbar .content-toggle__content)").forEach(d=>{k(d)});let m=document.querySelectorAll(".button.button--small.button--icon.button--icon--hide-label.icon-next"),v=document.querySelectorAll(".button.button--small.button--icon.button--icon--hide-label.icon-previous");G(m),J(v),document.querySelectorAll(".horizontal-scroll").forEach(d=>{T(d),window.addEventListener("resize",()=>{T(d)})}),document.querySelectorAll(".switch__segment").forEach(d=>{d.addEventListener("click",()=>{document.querySelectorAll(".horizontal-scroll").forEach(A=>{T(A)})})}),document.querySelectorAll(".toolbar .content-toggle__content").forEach(d=>{k(d,h=>{Y(h),F()},h=>I(w(h)),(h,A)=>{let oe=A.getAttribute("aria-expanded"),H=w(h);oe==="true"?H?.classList.add("toolbar--has-popout"):H?.classList.remove("toolbar--has-popout"),h.addEventListener("click",O=>{O.target.classList.contains("toolbar__popout")&&!_(O,"toolbar__filter__content")&&(I(H),Q())})})}),window.addEventListener("load",()=>{M=window.innerWidth}),window.addEventListener("resize",()=>{M>0&&window.innerWidth!==M&&(M=window.innerWidth,o.forEach(d=>x(o,d)),q(t))})});})();
|
|
2
|
+
//# sourceMappingURL=app.js.map
|
package/public/js/app.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../source/js/components/ready.ts", "../../source/js/components/helpers.ts", "../../source/js/components/nav.ts", "../../source/js/components/copy-hex-code.ts", "../../source/js/components/table.ts", "../../source/js/components/tabs.ts", "../../source/js/components/content-toggle.ts", "../../source/js/components/toolbar.ts", "../../source/js/components/horizontal-scroll-btn.ts", "../../source/js/components/text-area.ts", "../../source/js/components/char-counter.ts", "../../source/js/components/form.ts", "../../source/js/components/stepper.ts", "../../source/js/production/app.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-env browser */\r\nconst ready = (fn: () => void): void => {\r\n if (document.readyState !== 'loading') {\r\n fn();\r\n } else {\r\n document.addEventListener('DOMContentLoaded', fn);\r\n }\r\n};\r\n\r\nexport default ready;\r\n", "/* eslint-disable wrap-iife */\r\n/* eslint-disable import/prefer-default-export */\r\n/* eslint-env browser */\r\nconst copyToClipboard = (str: string): void => {\r\n // eslint-disable-next-line no-console\r\n navigator.clipboard.writeText(str).then(() => console.log(`${str} written to clipboard`));\r\n};\r\n\r\nconst isElementWithClassNameInEventPath = (event: MouseEvent, className: string): boolean => {\r\n let found = false;\r\n const path = event.composedPath();\r\n path.forEach((p: EventTarget): void => {\r\n if ((p as HTMLElement).classList) {\r\n if ((p as HTMLElement).classList.contains(className)) {\r\n found = true;\r\n }\r\n }\r\n });\r\n return found;\r\n};\r\n\r\nconst setMetaThemeColor = (): void => {\r\n const body = document.querySelector('body');\r\n if (body) {\r\n const bgColor = window.getComputedStyle(body).getPropertyValue('--color-background');\r\n const existingMeta = document.querySelector('meta[name=\"theme-color\"]') as HTMLMetaElement;\r\n if (existingMeta) {\r\n existingMeta.content = bgColor;\r\n } else {\r\n const meta = document.createElement('meta');\r\n meta.name = 'theme-color';\r\n meta.content = bgColor;\r\n document.getElementsByTagName('head')[0].appendChild(meta);\r\n }\r\n }\r\n};\r\n\r\nconst getBaseFontSize = (): number => parseInt(window.getComputedStyle(document.documentElement).fontSize.replace('px', ''), 10);\r\n\r\n// eslint-disable-next-line max-len\r\nconst convertRemToPixels = (rem: number): number => rem * 16;\r\n\r\nconst isViewportBelow = (mediaQuery: string): boolean => {\r\n const viewportWidth = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\r\n const mediaQueryValue = convertRemToPixels(parseInt(getComputedStyle(document.documentElement).getPropertyValue(mediaQuery).replace('rem', ''), 10));\r\n return viewportWidth < mediaQueryValue;\r\n};\r\n\r\nconst setScrollbarWidthVariable = (): void => {\r\n const scrollbarWidth = window.innerWidth - document.body.clientWidth;\r\n document.documentElement.style.setProperty('--vertical-scrollbar-width', `${scrollbarWidth}px`);\r\n};\r\n\r\nconst overflowsY = (element: HTMLElement): boolean => element.offsetHeight !== element.scrollHeight;\r\nconst overflowsX = (element: HTMLElement): boolean => element.offsetWidth !== element.scrollWidth;\r\n// eslint-disable-next-line max-len\r\nconst elementOverflows = (element: HTMLElement): boolean => overflowsY(element) || overflowsX(element);\r\n\r\nconst setHorizontalScroll = (element: HTMLElement): void => {\r\n // Checks if the element already contains no-overflow\r\n if (element.classList.contains('horizontal-scroll--no-overflow')) {\r\n element.classList.remove('horizontal-scroll--no-overflow');\r\n }\r\n\r\n // Defines of content of horizontal scroll \r\n let content = element.querySelector('.horizontal-scroll--check-overflow .tabbed-content__section:not([hidden]) .horizontal-scroll__scrollable-content');\r\n if (content === null && !content) {\r\n content = element.querySelector('.horizontal-scroll--check-overflow .horizontal-scroll__scrollable-content');\r\n }\r\n\r\n // Checks if no-overflow should be added or not depending on content width\r\n if (content) {\r\n if (!overflowsX(content as HTMLElement)) {\r\n element.classList.add('horizontal-scroll--no-overflow');\r\n content?.removeAttribute('tabindex');\r\n } else {\r\n content?.setAttribute('tabindex', '0');\r\n }\r\n }\r\n};\r\n\r\nconst focusableSelector = 'a[href]:not([tabindex=\"-1\"]), area[href]:not([tabindex=\"-1\"]), input:not([disabled]):not([tabindex=\"-1\"]), select:not([disabled]):not([tabindex=\"-1\"]), textarea:not([disabled]):not([tabindex=\"-1\"]), button:not([disabled]):not([tabindex=\"-1\"]), iframe:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"]), [contentEditable=true]:not([tabindex=\"-1\"])';\r\n\r\nexport {\r\n copyToClipboard,\r\n isElementWithClassNameInEventPath,\r\n getBaseFontSize,\r\n setMetaThemeColor,\r\n isViewportBelow,\r\n convertRemToPixels,\r\n setScrollbarWidthVariable,\r\n overflowsX,\r\n overflowsY,\r\n elementOverflows,\r\n setHorizontalScroll,\r\n focusableSelector,\r\n};\r\n", "/* eslint-env browser */\r\nimport { copyToClipboard, isElementWithClassNameInEventPath } from './helpers';\r\n\r\nconst findNav = (element: HTMLElement): HTMLElement => {\r\n const parent = element.parentElement;\r\n if (parent) {\r\n if (parent.classList.contains('nav')) {\r\n return parent;\r\n }\r\n return findNav(parent);\r\n }\r\n return element;\r\n};\r\n\r\n// eslint-disable-next-line max-len\r\nconst closeResponsiveNav = (navElements: NodeListOf<Element>, keepOpen: HTMLElement | null = null): void => {\r\n const navToggledClass = 'nav--toggled';\r\n navElements.forEach((n) => {\r\n const button = n.querySelector('.nav__toggle') as HTMLElement;\r\n if (n !== keepOpen) {\r\n if (n.classList.contains(navToggledClass)) {\r\n button.focus();\r\n button.setAttribute('aria-expanded', 'false');\r\n }\r\n n.classList.remove(navToggledClass);\r\n }\r\n });\r\n};\r\n\r\nconst setResponsiveToggle = (navElements: NodeListOf<Element>): CleanUpPair[] => {\r\n const toggleMenu = (button: HTMLElement) => {\r\n const parent = findNav(button);\r\n const hideItems: NodeListOf<HTMLElement> = parent.querySelectorAll('.nav__item');\r\n\r\n // // Only shows overflown elements when the menu is extended \r\n // hideItems.forEach(item => {\r\n // const currentDisplay = window.getComputedStyle(item).display;\r\n // if (!item.classList.contains('nav__item--is-overflown')) {\r\n // item.style.display = currentDisplay === 'none' ? 'inline-flex' : 'none';\r\n // }\r\n // });\r\n\r\n // // All elements get display: inline-flex when there is clicked outside of the button \r\n // const handleDocumentClick = (event: MouseEvent) => {\r\n // if (!parent.contains(event.target as Node)) {\r\n // hideItems.forEach(item => {\r\n // item.style.display = 'inline-flex';\r\n // });\r\n // }\r\n // };\r\n // document.body.addEventListener('click', handleDocumentClick);\r\n\r\n const navItems = parent.querySelector('.nav__items');\r\n const lastNavItem = navItems?.querySelector('.nav__item:last-of-type');\r\n navItems?.classList.add('nav__items--fadeout');\r\n const firstElement = navItems?.querySelector('.nav__item--is-overflown') as HTMLElement;\r\n if (firstElement) {\r\n firstElement.focus();\r\n }\r\n const transitionListener = () => {\r\n parent.classList.toggle('nav--toggled');\r\n navItems?.classList.remove('nav__items--fadeout');\r\n lastNavItem?.removeEventListener('transitionend', transitionListener);\r\n };\r\n lastNavItem?.addEventListener('transitionend', transitionListener);\r\n return parent;\r\n };\r\n\r\n const cleanUp: CleanUpPair[] = [];\r\n\r\n const toggle = document.querySelectorAll('.nav__toggle');\r\n toggle.forEach((button) => {\r\n const clickEvent = () => {\r\n const nav = toggleMenu(button as HTMLElement);\r\n const ariaExpanded = button.getAttribute('aria-expanded');\r\n button.setAttribute('aria-expanded', ariaExpanded === 'false' ? 'true' : 'false');\r\n closeResponsiveNav(navElements, nav);\r\n };\r\n\r\n cleanUp.push({\r\n element: button,\r\n clickEvent,\r\n });\r\n\r\n button.addEventListener('click', clickEvent);\r\n });\r\n\r\n return cleanUp;\r\n};\r\n\r\nconst setResponsiveNav = (\r\n navElements: NodeListOf<Element>,\r\n navElement: Element,\r\n): SetResponsiveNavCleanUp => {\r\n const navToggledClass = 'nav--toggled';\r\n const navItemsClass = 'nav__items';\r\n // gitlab #117\r\n navElement.classList.remove(navToggledClass);\r\n const navItemsParent = navElement.querySelector(`.${navItemsClass}`);\r\n\r\n if (navItemsParent) {\r\n const navItems = navItemsParent.querySelectorAll('.nav__item');\r\n const isOverflownClass = 'nav__item--is-overflown';\r\n const hasOverflowClass = 'nav--has-overflow';\r\n const isActiveClass = 'nav__item--active';\r\n let hasOverflown = false;\r\n\r\n for (let i = navItems.length - 1; i >= 0; i -= 1) {\r\n const nav = navItems[i] as HTMLElement;\r\n const top = nav.offsetTop;\r\n\r\n if (top > 0) {\r\n nav.classList.add(isOverflownClass);\r\n navElement.classList.add(hasOverflowClass);\r\n hasOverflown = true;\r\n } else if (!nav.classList.contains(isActiveClass)) {\r\n nav.classList.remove(isOverflownClass);\r\n }\r\n }\r\n\r\n if (!hasOverflown) {\r\n navElement.classList.remove(hasOverflowClass);\r\n const isActive = navElement.querySelector(`.${isActiveClass}`);\r\n if (isActive) {\r\n isActive.classList.remove(isOverflownClass);\r\n }\r\n }\r\n }\r\n\r\n // gitlab #115\r\n const bodyClickEvent = (e: Event) => {\r\n if (!(e.target as HTMLElement).classList.contains('nav__toggle')\r\n && !isElementWithClassNameInEventPath(e as MouseEvent, navItemsClass)) {\r\n closeResponsiveNav(navElements);\r\n }\r\n };\r\n\r\n document.querySelector('body')?.addEventListener('click', bodyClickEvent);\r\n\r\n return {\r\n element: document.querySelector('body'),\r\n clickEvent: bodyClickEvent,\r\n };\r\n};\r\n\r\nconst closeSubNav = (buttons: NodeListOf<Element>, keepOpen: Element | null = null) => {\r\n const subNavClass = 'sub-nav--toggled';\r\n buttons.forEach((button) => {\r\n if (button !== keepOpen) {\r\n if (button?.parentElement?.classList.contains(subNavClass)) {\r\n (button as HTMLElement).focus();\r\n button.setAttribute('aria-expanded', 'false');\r\n }\r\n button?.parentElement?.classList.remove(subNavClass);\r\n }\r\n });\r\n};\r\n\r\nconst setSubNavToggle = (buttons: NodeListOf<Element>, button: Element): SetSubNavToggleCleanUp => {\r\n const subNavClass = 'sub-nav--toggled';\r\n const buttonClickEvent = () => {\r\n button?.parentElement?.classList.toggle(subNavClass);\r\n if (button?.parentElement?.classList.contains(subNavClass)) {\r\n button.setAttribute('aria-expanded', 'true');\r\n } else {\r\n button.setAttribute('aria-expanded', 'false');\r\n }\r\n closeSubNav(buttons, button);\r\n };\r\n\r\n button.addEventListener('click', buttonClickEvent);\r\n\r\n // gitlab #115\r\n const bodyClickEvent = (e: Event) => {\r\n if (!isElementWithClassNameInEventPath(e as MouseEvent, 'sub-nav')) {\r\n closeSubNav(buttons);\r\n }\r\n };\r\n\r\n document.querySelector('body')?.addEventListener('click', bodyClickEvent);\r\n return {\r\n buttonClickEvent,\r\n element: document.querySelector('body'),\r\n bodyClickEvent,\r\n };\r\n};\r\n\r\nconst setClickMessage = ((\r\n text: string,\r\n copyElement: Element,\r\n clickElement: Element | null,\r\n ctcThis: HTMLElement | null,\r\n listener: () => void,\r\n): void => {\r\n if (ctcThis && clickElement) {\r\n // Vi kopierer teksten til clipboard\r\n copyToClipboard(ctcThis.innerText);\r\n copyElement.classList.add('copy-to-clipboard--confirm');\r\n if (copyElement === clickElement) {\r\n copyElement.classList.add('copy-to-clipboard--done');\r\n }\r\n // Laver en span, der viser, at teksten er kopieret\r\n const ctcThisMessage = document.createElement('span');\r\n ctcThisMessage.classList.add('copy-to-clipboard__this__confirm-message');\r\n ctcThisMessage.innerText = text;\r\n ctcThis.appendChild(ctcThisMessage);\r\n\r\n // Efter 1,2 sekunder fjerner vi beskeden igen\r\n clickElement.removeEventListener('click', listener);\r\n setTimeout(() => {\r\n copyElement.classList.remove('copy-to-clipboard--confirm');\r\n ctcThisMessage.remove();\r\n clickElement.addEventListener('click', listener);\r\n }, 1200);\r\n }\r\n});\r\n\r\nconst setCopyToClipboard = (element: HTMLElement, text = 'Kopieret!'): void => {\r\n const ctcThis = <HTMLElement>element.querySelector('.copy-to-clipboard__this');\r\n // Hvis det er en knap, s\u00E5 s\u00E6tter vi click event p\u00E5 knappen\r\n if ((element as HTMLButtonElement).type === 'button') {\r\n const listener = (): void => {\r\n setClickMessage(text, element, element, ctcThis, listener);\r\n };\r\n element.addEventListener('click', listener);\r\n // Hvis det ikke er en knap, finder vi knappen \"inde i\" elementet\r\n } else {\r\n const btn = element.querySelector('.copy-to-clipboard__execute');\r\n const listener = (): void => {\r\n setClickMessage(text, element, btn, ctcThis, listener);\r\n };\r\n btn?.addEventListener('click', listener);\r\n }\r\n};\r\n\r\nconst setSearchToggle = (navSearch: Element, button: Element): void => {\r\n const toggleClass = 'nav__search--toggled';\r\n button.addEventListener('click', () => {\r\n if (navSearch.classList.contains(toggleClass)) {\r\n button.setAttribute('aria-expanded', 'false');\r\n navSearch.classList.remove(toggleClass);\r\n } else {\r\n button.setAttribute('aria-expanded', 'true');\r\n navSearch.classList.add(toggleClass);\r\n }\r\n });\r\n};\r\n\r\n\r\n\r\nexport {\r\n findNav,\r\n setResponsiveToggle,\r\n setResponsiveNav,\r\n setSubNavToggle,\r\n setCopyToClipboard,\r\n setSearchToggle,\r\n};\r\n", "/* eslint-env browser */\r\nimport { copyToClipboard } from './helpers';\r\n\r\nconst copyHexCode = (): void => {\r\n const ctc = document.querySelectorAll('.copy-to-clipboard');\r\n const colorElements = document.querySelectorAll('.copy-to-clipboard__color');\r\n ctc.forEach((button) => {\r\n button.addEventListener('click', () => {\r\n let color = button.parentElement?.querySelector('.copy-to-clipboard__color');\r\n if(color) {\r\n let computedStyle = getComputedStyle(color).getPropertyValue('background-color');\r\n let hexColor = rgbToHex(computedStyle);\r\n console.log(hexColor);\r\n copyToClipboard(hexColor.replace(/\"/g, ''));\r\n }\r\n });\r\n });\r\n};\r\n\r\nfunction rgbToHex(rgb) {\r\n // Extract the individual RGB components\r\n var rgbArray = rgb.match(/\\d+/g);\r\n\r\n // Convert each component to hex and concatenate\r\n var hex = \"#\" + rgbArray.map(function (value) {\r\n var hexValue = parseInt(value).toString(16);\r\n return hexValue.length === 1 ? \"0\" + hexValue : hexValue;\r\n }).join('');\r\n\r\n return hex;\r\n}\r\n\r\nexport default copyHexCode;\r\n", "/* eslint-disable import/prefer-default-export */\r\nconst setResponsiveTable = (table: Element): void => {\r\n const head = table.querySelector('thead');\r\n const body = table.querySelector('tbody');\r\n const foot = table.querySelector('tfoot');\r\n\r\n if (head) {\r\n const headers: string[] = [];\r\n const ths = head.querySelectorAll('th');\r\n ths.forEach((h) => {\r\n if (!h.classList.contains('table__cell--self-explanatory')) {\r\n headers.push(h.innerHTML); // Because innerText inherits stuff like text-transform\r\n } else {\r\n headers.push(''); // If header is self explanatory we do not add it\r\n }\r\n });\r\n\r\n const rowContainers: HTMLTableSectionElement[] = [];\r\n // Table elements that possibly contains <tr>'s\r\n if (body) {\r\n rowContainers.push(body);\r\n }\r\n if (foot) {\r\n rowContainers.push(foot);\r\n }\r\n\r\n rowContainers.forEach((rc) => {\r\n const rows = rc.querySelectorAll('tr');\r\n rows.forEach((tr) => {\r\n const cells = tr.querySelectorAll('td, th');\r\n cells.forEach((cell, i) => {\r\n if (headers[i]) {\r\n // if header is self explanatory we skip (value of array index is '' which is falsy)\r\n cell.setAttribute('data-label', headers[i]);\r\n }\r\n });\r\n });\r\n });\r\n }\r\n};\r\n\r\nexport {\r\n setResponsiveTable,\r\n};\r\n", "/* eslint-disable @typescript-eslint/no-empty-function */\r\n/* eslint-env browser */\r\n/* eslint-disable import/prefer-default-export */\r\n/* eslint-disable no-param-reassign */\r\nimport { getBaseFontSize } from './helpers';\r\n\r\nconst getMediaWidthBasedOnModifier = (classList: DOMTokenList): number => {\r\n if (classList.contains('tabbed-content--hide-tabs-on-medium-width')) {\r\n return parseInt(getComputedStyle(document.documentElement).getPropertyValue('--bp-medium').replace('rem', ''), 10);\r\n }\r\n if (classList.contains('tabbed-content--hide-tabs-on-wide-width')) {\r\n return parseInt(getComputedStyle(document.documentElement).getPropertyValue('--bp-wide').replace('rem', ''), 10);\r\n }\r\n\r\n return -1;\r\n};\r\n\r\nconst isBelowViewportLimit = (classList: DOMTokenList): boolean => {\r\n const viewportWidth = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\r\n const widthInRem = viewportWidth / getBaseFontSize();\r\n const mediaWidth = getMediaWidthBasedOnModifier(classList);\r\n if (mediaWidth > -1) {\r\n return widthInRem < mediaWidth;\r\n }\r\n return true;\r\n};\r\n\r\nconst destroyTabs = (tabbed: Element): void => {\r\n const tablist = tabbed.querySelector('.nav__items');\r\n const tabs = tablist?.querySelectorAll('a');\r\n const panels: HTMLElement[] = [];\r\n const sections = tabbed.querySelectorAll('section');\r\n sections.forEach((section) => {\r\n if (section.parentNode === tabbed) {\r\n panels.push(section);\r\n }\r\n });\r\n tabs?.forEach((tab) => {\r\n tab.removeAttribute('aria-selected');\r\n tab.classList.remove('nav__item--active');\r\n });\r\n\r\n panels.forEach((panel) => {\r\n panel.hidden = false;\r\n panel.removeAttribute('role');\r\n });\r\n};\r\n\r\nconst destroySwitches = (tabbed: Element): void => {\r\n const switchlist = tabbed.querySelector('.switch');\r\n const switches = switchlist?.querySelectorAll('a');\r\n const panels: HTMLElement[] = [];\r\n const sections = tabbed.querySelectorAll('section');\r\n sections.forEach((section) => {\r\n if (section.parentNode === tabbed) {\r\n panels.push(section);\r\n }\r\n });\r\n switches?.forEach((tab) => {\r\n tab.removeAttribute('aria-selected');\r\n tab.classList.remove('switch__segment--active');\r\n });\r\n\r\n panels.forEach((panel) => {\r\n panel.hidden = false;\r\n panel.removeAttribute('role');\r\n });\r\n};\r\n\r\nconst switchTab = (\r\n tabs: NodeListOf<HTMLAnchorElement>,\r\n panels: HTMLElement[],\r\n oldTab: Element | null,\r\n newTab: HTMLElement,\r\n _: DOMTokenList,\r\n focus = true,\r\n // eslint-disable-next-line no-console\r\n callback = (index: number): void => console.log(index),\r\n): void => {\r\n if (focus) {\r\n newTab.focus();\r\n }\r\n // Make the active tab focusable by the user (Tab key)\r\n newTab.removeAttribute('tabindex');\r\n // Set the selected state\r\n newTab.setAttribute('aria-selected', 'true');\r\n\r\n // Check if switch // should this be more pretty?\r\n if (newTab.classList.contains('switch__segment')) {\r\n newTab.classList.add('switch__segment--active');\r\n } else {\r\n newTab.classList.add('nav__item--active');\r\n }\r\n\r\n if (oldTab) {\r\n oldTab.removeAttribute('aria-selected');\r\n oldTab.setAttribute('tabindex', '-1');\r\n\r\n if (oldTab.classList.contains('switch__segment')) {\r\n oldTab.classList.remove('switch__segment--active');\r\n } else {\r\n oldTab.classList.remove('nav__item--active');\r\n }\r\n }\r\n\r\n const index = Array.prototype.indexOf.call(tabs, newTab);\r\n\r\n // More links\r\n /* let moreLinks;\r\n var moreLink: HTMLElement;\r\n moreLinks = document.querySelectorAll(`[data-for=\"${panels[index].id}\"]`);\r\n moreLinks.forEach((moreLink) => {\r\n moreLink.classList.add('tabbed-content-peripheral--active');\r\n moreLink.hidden = false;\r\n }); */\r\n const moreLinks: HTMLElement[] = Array.from(document.querySelectorAll(`[data-for=\"${panels[index].id}\"]`));\r\n moreLinks.forEach((link) => {\r\n link.classList.add('tabbed-content-peripheral--active');\r\n link.hidden = false;\r\n });\r\n\r\n // Get the indices of the new and old tabs to find the correct\r\n // tab panels to show and hide\r\n panels[index].hidden = false;\r\n if (oldTab) {\r\n const oldIndex = Array.prototype.indexOf.call(tabs, oldTab);\r\n\r\n const oldMoreLinks: HTMLElement[] = Array.from(document.querySelectorAll(`[data-for=\"${panels[oldIndex].id}\"]`));\r\n oldMoreLinks.forEach((link) => {\r\n link.classList.remove('tabbed-content-peripheral--active');\r\n link.hidden = true;\r\n });\r\n\r\n /* moreLinks.forEach((moreLink) => {\r\n moreLink.classList.remove('tabbed-content-peripheral--active');\r\n moreLink.hidden = true;\r\n }); */\r\n\r\n panels[oldIndex].hidden = true;\r\n }\r\n\r\n // Dispatches custom event on every tab change\r\n newTab.dispatchEvent(new CustomEvent('switch-tab', {\r\n bubbles: true,\r\n detail: { tab: index },\r\n }));\r\n callback(index);\r\n};\r\n\r\nconst setTabbedContent = (\r\n key: number,\r\n tabbed: Element,\r\n initial = 0,\r\n focus = true,\r\n // eslint-disable-next-line no-console\r\n callback = (index: number) => console.log(index),\r\n): void => {\r\n const tablist = tabbed.querySelector('.switch,.nav__items') as HTMLElement;\r\n const tabs = tablist.querySelectorAll('a');\r\n const panels: HTMLElement[] = [];\r\n const sections = tabbed.querySelectorAll('section');\r\n sections.forEach((section) => {\r\n if (section.parentNode === tabbed) {\r\n panels.push(section);\r\n }\r\n });\r\n\r\n const expandAll = tabbed.querySelector('button.tabbed-content__expand-all');\r\n if (expandAll) {\r\n const expandAllEvent = () => {\r\n tablist.hidden = true;\r\n panels.forEach((panel: HTMLElement) => {\r\n panel.hidden = false;\r\n });\r\n };\r\n\r\n expandAll.removeEventListener('click', expandAllEvent);\r\n expandAll.addEventListener('click', expandAllEvent);\r\n }\r\n\r\n // Add the tablist role to the first <ul> in the .tabbed container\r\n tablist.setAttribute('role', 'tablist');\r\n\r\n // Add semantics are remove user focusability for each tab\r\n tabs.forEach((tab, i) => {\r\n tab.setAttribute('role', 'tab');\r\n tab.setAttribute('id', `tab${key}_${(i + 1)}`);\r\n tab.setAttribute('tabindex', '-1');\r\n tab.parentElement?.setAttribute('role', 'presentation');\r\n\r\n // Handle clicking of tabs for mouse users\r\n const tabClickEvent = (e: MouseEvent) => {\r\n e.preventDefault();\r\n const currentTab = tablist.querySelector('[aria-selected]');\r\n if (e.currentTarget !== currentTab) {\r\n // eslint-disable-next-line max-len\r\n switchTab(tabs, panels, currentTab, e.currentTarget as HTMLElement, tabbed.classList, true, (tabIndex) => {\r\n callback(tabIndex);\r\n });\r\n }\r\n };\r\n\r\n tab.removeEventListener('click', tabClickEvent);\r\n tab.addEventListener('click', tabClickEvent);\r\n\r\n // Handle keydown events for keyboard users\r\n const tabKeyEvent = (e: KeyboardEvent) => {\r\n // Get the index of the current tab in the tabs node list\r\n const index = Array.prototype.indexOf.call(tabs, e.currentTarget);\r\n // Work out which key the user is pressing and\r\n // Calculate the new tab's index where appropriate\r\n let dir: number | string | null = null;\r\n if (e.key === 'ArrowLeft') {\r\n dir = index - 1;\r\n }\r\n if (e.key === 'ArrowRight') {\r\n dir = index + 1;\r\n }\r\n if (e.key === 'ArrowDown') {\r\n dir = 'down';\r\n }\r\n if (dir !== null) {\r\n e.preventDefault();\r\n // If the down key is pressed, move focus to the open panel,\r\n // otherwise switch to the adjacent tab\r\n if (dir === 'down') {\r\n panels[i].focus();\r\n } else if (tabs[dir]) {\r\n // eslint-disable-next-line max-len\r\n switchTab(tabs, panels, e.currentTarget as Element, tabs[dir], tabbed.classList, true, (tabIndex) => {\r\n callback(tabIndex);\r\n });\r\n }\r\n }\r\n };\r\n tab.removeEventListener('keydown', tabKeyEvent);\r\n tab.addEventListener('keydown', tabKeyEvent);\r\n });\r\n\r\n // Add tab panel semantics and hide them all\r\n panels.forEach((panel: HTMLElement, i: number) => {\r\n panel.setAttribute('tabindex', '-1');\r\n panel.setAttribute('aria-labelledby', tabs[i].id);\r\n // eslint-disable-next-line no-param-reassign\r\n panel.hidden = true;\r\n panel.setAttribute('role', 'tabpanel');\r\n });\r\n\r\n // Initially activate the first tab and reveal the first tab panel\r\n if (initial > -1) {\r\n switchTab(tabs, panels, null, tabs[initial], tabbed.classList, focus);\r\n }\r\n};\r\n\r\nconst setTabs = (tabbedObjects: ITabbedObject[]): void => {\r\n tabbedObjects.forEach((tabObject: ITabbedObject, key: number): void => {\r\n const { rendered, domElement } = tabObject;\r\n if (isBelowViewportLimit(domElement.classList)) {\r\n if (!rendered) {\r\n const focus = domElement.getAttribute('data-focus-onload');\r\n const dataInitial = domElement.getAttribute('data-initial-tab');\r\n const initial = dataInitial ? parseInt(dataInitial, 10) : 0;\r\n setTabbedContent(key, domElement, initial, focus !== 'false');\r\n tabObject.rendered = true;\r\n }\r\n } else if (rendered) {\r\n destroyTabs(domElement);\r\n tabObject.rendered = false;\r\n }\r\n });\r\n};\r\n\r\nexport {\r\n setTabbedContent,\r\n isBelowViewportLimit,\r\n destroyTabs,\r\n destroySwitches,\r\n setTabs,\r\n};\r\n", "/* eslint-disable max-len */\r\n/* eslint-env browser */\r\n/* eslint-disable import/prefer-default-export */\r\n\r\nimport { isViewportBelow} from './helpers';\r\n\r\nconst setContentToggle = (\r\n content: Element,\r\n onClick?: ((content: HTMLElement, button: HTMLButtonElement) => void) | undefined,\r\n beforeCallback?: ((content: HTMLElement, button: HTMLButtonElement) => void) | undefined,\r\n afterCallback?: ((content: HTMLElement, button: HTMLButtonElement) => void) | undefined,\r\n): CleanUpPair[] => {\r\n const cleanUp: CleanUpPair[] = [];\r\n const setContentClose = (button: HTMLElement, contentClose: HTMLElement, focus: boolean): () => void => {\r\n if (focus) {\r\n contentClose.focus();\r\n }\r\n const click = () => {\r\n content.setAttribute('hidden', 'hidden');\r\n button.removeAttribute('hidden');\r\n button.setAttribute('aria-expanded', 'false');\r\n button.focus();\r\n };\r\n contentClose.addEventListener('click', click);\r\n return click;\r\n };\r\n\r\n const button = content?.parentElement?.querySelector('.content-toggle__toggle') as HTMLElement;\r\n const contentClose = content.querySelectorAll('.content-toggle__close');\r\n \r\n const setBPModiferClass = () => {\r\n if (isViewportBelow('--bp-medium') && content.classList.contains('content-toggle__content--always-show-on-medium')) {\r\n button.removeAttribute(\"hidden\");\r\n content.setAttribute(\"hidden\", \"hidden\");\r\n } \r\n else if (isViewportBelow('--bp-wide') && content.classList.contains('content-toggle__content--always-show-on-wide')) {\r\n button.removeAttribute(\"hidden\");\r\n content.setAttribute(\"hidden\", \"hidden\");\r\n } \r\n else if (isViewportBelow('--bp-max-width') && content.classList.contains('content-toggle__content--always-show-on-max-width')) {\r\n button.removeAttribute(\"hidden\");\r\n content.setAttribute(\"hidden\", \"hidden\");\r\n \r\n } \r\n else (\r\n content.classList.contains('content-toggle__content--always-show-on-medium') ||\r\n content.classList.contains('content-toggle__content--always-show-on-wide') ||\r\n content.classList.contains('content-toggle__content--always-show-on-max-width')\r\n )\r\n }\r\n window.addEventListener('resize', () => {\r\n setBPModiferClass();\r\n });\r\n\r\n const setBPModifierPopupClass = () => {\r\n document.addEventListener('click', (event) => {\r\n const eventTarget = event.target as HTMLElement;\r\n const doesNotContainContent = !eventTarget.classList.contains('content-toggle__content')\r\n const doesNotContainButton = !eventTarget.classList.contains('content-toggle__toggle')\r\n const doesNotContainSpan = !eventTarget.classList.contains('profile-header__info__contact__toggle__button')\r\n if (doesNotContainContent && doesNotContainButton && doesNotContainSpan) {\r\n if (!isViewportBelow('--bp-medium') && content.classList.contains('content-toggle__content--is-popover--on-medium')) {\r\n button.removeAttribute(\"hidden\");\r\n content.setAttribute(\"hidden\", \"hidden\");\r\n button.setAttribute(\"aria-expanded\", \"false\");\r\n button.focus();\r\n } else if (!isViewportBelow('--bp-wide') && content.classList.contains('content-toggle__content--is-popover--on-wide')) {\r\n button.removeAttribute(\"hidden\");\r\n content.setAttribute(\"hidden\", \"hidden\");\r\n button.setAttribute(\"aria-expanded\", \"false\");\r\n button.focus();\r\n } else if (!isViewportBelow('--bp-max-width') && content.classList.contains('content-toggle__content--is-popover--on-max-width')) {\r\n button.removeAttribute(\"hidden\");\r\n content.setAttribute(\"hidden\", \"hidden\");\r\n button.setAttribute(\"aria-expanded\", \"false\");\r\n button.focus(); \r\n }\r\n else if (content.classList.contains('content-toggle__content--is-popover')) {\r\n button.removeAttribute(\"hidden\");\r\n content.setAttribute(\"hidden\", \"hidden\");\r\n button.setAttribute(\"aria-expanded\", \"false\");\r\n button.focus();\r\n }\r\n }\r\n });\r\n }\r\n\r\n setBPModifierPopupClass(); \r\n setBPModiferClass();\r\n\r\n if (button) {\r\n const clickEvent = () => {\r\n const ariaExpanded = button.getAttribute('aria-expanded');\r\n // Til toolbar: hvis man klikker p\u00E5 en knap, der ikke er foldet ud\r\n // S\u00E5 lukker vi alle \u00E5bne content-toggles\r\n if (typeof beforeCallback === 'function' && ariaExpanded === 'false') {\r\n beforeCallback(content as HTMLElement, button as HTMLButtonElement);\r\n }\r\n // Og s\u00E5 g\u00E5r vi i gang med folde-ud-logikken\r\n button.setAttribute('aria-expanded', ariaExpanded === 'false' ? 'true' : 'false');\r\n if (ariaExpanded === 'true') {\r\n content.setAttribute('hidden', 'hidden');\r\n } else {\r\n content.removeAttribute('hidden');\r\n }\r\n\r\n if (typeof onClick === 'function') {\r\n onClick(content as HTMLElement, button as HTMLButtonElement);\r\n }\r\n\r\n if (button.hasAttribute('aria-haspopup')) {\r\n button.setAttribute('hidden', 'hidden');\r\n contentClose.forEach((cc) => {\r\n setContentClose(button, cc as HTMLElement, true);\r\n });\r\n }\r\n\r\n // Det der sker efter folde-logikken\r\n if (typeof afterCallback === 'function') {\r\n afterCallback(content as HTMLElement, button as HTMLButtonElement);\r\n }\r\n };\r\n\r\n button.addEventListener('click', clickEvent);\r\n // Altid tilf\u00F8j denne f\u00F8rst!\r\n cleanUp.push({\r\n element: button,\r\n clickEvent,\r\n });\r\n\r\n contentClose.forEach((cc) => {\r\n const btnClick = setContentClose(button, cc as HTMLElement, false);\r\n cleanUp.push({\r\n element: cc,\r\n clickEvent: btnClick,\r\n });\r\n });\r\n }\r\n return cleanUp;\r\n};\r\n\r\nexport {\r\n setContentToggle, \r\n};\r\n", "/* eslint-disable max-len */\r\nimport { convertRemToPixels, isElementWithClassNameInEventPath, isViewportBelow } from './helpers';\r\n\r\nconst lockBodyScroll = (): void => {\r\n const body = document.querySelector('body');\r\n if (isViewportBelow('--bp-medium') || isViewportBelow('--bp-low-height')) {\r\n body?.classList.add('body--no-scroll');\r\n }\r\n};\r\n\r\nconst unlockBodyScroll = (): void => {\r\n const body = document.querySelector('body');\r\n body?.classList.remove('body--no-scroll');\r\n};\r\n\r\n/* eslint-env browser */\r\nconst closeAllContentTogglesInToolbar = (toolbar: HTMLElement): void => {\r\n const contentToggles = toolbar.querySelectorAll('.content-toggle__toggle');\r\n contentToggles.forEach((toggle) => {\r\n const content = toggle.parentElement?.querySelector('.content-toggle__content');\r\n toggle.setAttribute('aria-expanded', 'false');\r\n content?.setAttribute('hidden', 'hidden');\r\n });\r\n};\r\n\r\nconst setOverflow = (toolbarElement: Element): void => {\r\n if (!toolbarElement.classList.contains('toolbar--no-collapse')) {\r\n toolbarElement.classList.remove('toolbar--toggled');\r\n }\r\n toolbarElement.classList.remove('toolbar--fully-overflown');\r\n toolbarElement.classList.remove('toolbar--has-popout');\r\n const toolbarItemsParent = toolbarElement.querySelector('.toolbar__items');\r\n const toolbarItems = toolbarItemsParent?.children as HTMLCollection;\r\n const isOverflownClass = 'toolbar__item--is-overflown';\r\n const hasOverflowClass = 'toolbar--has-overflow';\r\n let hasOverflown = false;\r\n\r\n let overflownCount = 0;\r\n const addOverflowClass = (item: HTMLElement, index: number) => {\r\n if (item) {\r\n const top = item.offsetTop;\r\n if (top > 25) {\r\n item.classList.add(isOverflownClass);\r\n toolbarElement.classList.add(hasOverflowClass);\r\n hasOverflown = true;\r\n overflownCount += 1;\r\n } else {\r\n item.classList.remove(isOverflownClass);\r\n }\r\n\r\n if (!hasOverflown) {\r\n toolbarElement.classList.remove(hasOverflowClass);\r\n } else if (index - 1 >= 0) {\r\n addOverflowClass(toolbarItems[index - 1] as HTMLElement, index - 1);\r\n }\r\n }\r\n };\r\n\r\n addOverflowClass(toolbarItems[toolbarItems.length - 1] as HTMLElement, toolbarItems.length - 1);\r\n\r\n if (overflownCount > 0 && overflownCount === toolbarItems.length) {\r\n toolbarElement.classList.add('toolbar--fully-overflown');\r\n }\r\n};\r\n\r\nconst setToolbarToggle = (toolbar: HTMLElement): ExtendedCleanUpPair[] => {\r\n const cleanUp: ExtendedCleanUpPair[] = [];\r\n const buttons = toolbar.querySelectorAll('.toolbar__toggle');\r\n buttons.forEach((button) => {\r\n const clickEvent = () => {\r\n button?.parentElement?.classList.toggle('toolbar--toggled');\r\n const ariaExpanded = button.getAttribute('aria-expanded');\r\n if (ariaExpanded !== 'true') {\r\n const focusable = 'a.toolbar__item--is-overflown, button.toolbar__item--is-overflown, input.toolbar__item--is-overflown, select.toolbar__item--is-overflown, .toolbar__item--is-overflown a, .toolbar__item--is-overflown button, .toolbar__item--is-overflown input, .toolbar__item--is-overflown select';\r\n const firstWithOverflow = button?.parentElement?.querySelector(focusable) as HTMLElement;\r\n if (firstWithOverflow) {\r\n setTimeout(() => {\r\n firstWithOverflow.focus();\r\n }, 0);\r\n }\r\n }\r\n button.setAttribute('aria-expanded', ariaExpanded === 'false' ? 'true' : 'false');\r\n };\r\n\r\n cleanUp.push({\r\n element: button,\r\n clickEvent,\r\n });\r\n button.addEventListener('click', clickEvent);\r\n });\r\n return cleanUp;\r\n};\r\n\r\nconst setToolbar = (\r\n toolbar: HTMLElement,\r\n onCloseContentToggle: (toolbarElement: HTMLElement) => void,\r\n setOverflowOnly = true,\r\n): ExtendedCleanUpPair[] => {\r\n let cleanUp: ExtendedCleanUpPair[] = [];\r\n\r\n setOverflow(toolbar);\r\n onCloseContentToggle(toolbar);\r\n cleanUp = cleanUp.concat(setToolbarToggle(toolbar));\r\n\r\n if (!setOverflowOnly) {\r\n const bodyClickEvent = (event: Event) => {\r\n if (!(event.target as HTMLElement).classList.contains('content-toggle__toggle')\r\n && !isElementWithClassNameInEventPath(event as MouseEvent, 'content-toggle__content')) {\r\n onCloseContentToggle(toolbar);\r\n }\r\n };\r\n\r\n const escKeyEvent = (event: Event) => {\r\n if ((event as KeyboardEvent).key === 'Escape') {\r\n if (event.target && (event.target as HTMLElement).getAttribute('type') !== 'search') {\r\n onCloseContentToggle(toolbar);\r\n }\r\n }\r\n };\r\n\r\n const body = document.querySelector('body');\r\n\r\n cleanUp.push({\r\n element: body as Element,\r\n clickEvent: bodyClickEvent,\r\n });\r\n\r\n cleanUp.push({\r\n element: window,\r\n keyUpEvent: escKeyEvent,\r\n });\r\n\r\n body?.addEventListener('click', bodyClickEvent);\r\n window.addEventListener('keyup', escKeyEvent);\r\n }\r\n\r\n return cleanUp;\r\n};\r\n\r\nconst findToolbar = (element: HTMLElement): HTMLElement => {\r\n const parent = element.parentElement;\r\n if (parent) {\r\n if (parent.classList.contains('toolbar')) {\r\n return parent;\r\n }\r\n return findToolbar(parent);\r\n }\r\n return element;\r\n};\r\n\r\nconst contentToggleEdgeHandling = (element: HTMLElement): void => {\r\n if (!isViewportBelow('--bp-medium') && !isViewportBelow('--bp-low-height')) {\r\n const allowedDistance = convertRemToPixels(parseInt(getComputedStyle(document.documentElement).getPropertyValue('--toolbar-popout-allowed-edge-distance').replace('rem,', ''), 10));\r\n const popoutX = parseInt(getComputedStyle(element).width.replace('px', ''), 10);\r\n const popoutWidth = element.getBoundingClientRect().x;\r\n\r\n const distance = document.body.offsetWidth - allowedDistance - popoutX - popoutWidth;\r\n\r\n if (distance < 0) {\r\n element.style.setProperty('--toolbar-popout-edge-overflow', `${distance}px`);\r\n }\r\n }\r\n};\r\n\r\nexport {\r\n setToolbar,\r\n setOverflow,\r\n findToolbar,\r\n closeAllContentTogglesInToolbar,\r\n contentToggleEdgeHandling,\r\n lockBodyScroll,\r\n unlockBodyScroll,\r\n};\r\n", "// Scroller 80% p\u00E5 horisontal scroll til h\u00F8jre og s\u00E6tter knappen disabled n\u00E5r man rammer bunden\r\nconst horizontalScrollButtonNext = (nextButtons: NodeListOf<Element>): void => {\r\n if (nextButtons) {\r\n nextButtons.forEach((nextButton) => {\r\n const topElem = nextButton?.parentElement?.parentElement?.parentElement?.parentElement;\r\n if (topElem) {\r\n const scrollElements = topElem.querySelectorAll('.horizontal-scroll__scrollable-content');\r\n const switch__segments = topElem.querySelectorAll('.switch__segment');\r\n scrollElements.forEach((scrollElement) => { \r\n if (scrollElement) {\r\n nextButton.addEventListener('click', () => {\r\n // Scroller 80% af den synlige bredde p\u00E5 horizontal scroll til h\u00F8jre\r\n const scrollAmount = 0.8 * scrollElement.clientWidth;\r\n scrollElement.scrollLeft += scrollAmount;\r\n });\r\n // G\u00F8r knappen aktiv hvis scroll har ramt bunden\r\n scrollElement.addEventListener('scroll', () => {\r\n if ((scrollElement.scrollLeft + scrollElement.clientWidth) >= (scrollElement.scrollWidth * 0.98)) {\r\n disableButton(nextButton);\r\n } else if (scrollElement.scrollLeft + scrollElement.clientWidth < scrollElement.scrollWidth) {\r\n activateButton(nextButton);\r\n }\r\n });\r\n // Reset af knap ved flere tabs af horizontal scroll\r\n if (switch__segments) {\r\n switch__segments.forEach(switch__segment => {\r\n switch__segment.addEventListener('click', () => {\r\n activateButton(nextButton);\r\n scrollElement.scrollLeft = 0;\r\n })\r\n });\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n };\r\n \r\n // Scroller 80% p\u00E5 horisontal scroll til venstre og s\u00E6tter knappen disabled n\u00E5r man rammer toppen\r\n const horizontalScrollButtonPrevious = (previousButtons: NodeListOf<Element>): void => {\r\n if (previousButtons) {\r\n previousButtons.forEach((previousButton) => {\r\n const topElem = previousButton?.parentElement?.parentElement?.parentElement?.parentElement;\r\n if (topElem) {\r\n const scrollElements = topElem.querySelectorAll('.horizontal-scroll__scrollable-content');\r\n const switch__segments = topElem.querySelectorAll('.switch__segment');\r\n scrollElements.forEach((scrollElement) => { \r\n if (scrollElement) {\r\n previousButton.addEventListener('click', () => {\r\n // Scroller 80% af den synlige bredde p\u00E5 horizontal scroll til venstre\r\n const scrollAmount = 0.8 * scrollElement.clientWidth;\r\n scrollElement.scrollLeft -= scrollAmount;\r\n });\r\n // G\u00F8r knappen aktiv hvis scroll har ramt toppen\r\n scrollElement.addEventListener('scroll', () => {\r\n if (scrollElement.scrollLeft <= 0) {\r\n disableButton(previousButton);\r\n } else if (scrollElement.scrollLeft > 0) {\r\n activateButton(previousButton);\r\n }\r\n });\r\n }\r\n // Reset af knap ved flere tabs af horizontal scroll\r\n if (switch__segments) {\r\n switch__segments.forEach(switch__segment => {\r\n switch__segment.addEventListener('click', () => {\r\n disableButton(previousButton);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n };\r\n\r\n function activateButton(button) {\r\n button.classList.remove('visually-disabled');\r\n button.setAttribute('aria-disabled', 'false');\r\n }\r\n \r\n function disableButton(button) {\r\n button.classList.add('visually-disabled');\r\n button.setAttribute('aria-disabled', 'true');\r\n }\r\n\r\n export {\r\n horizontalScrollButtonNext,\r\n horizontalScrollButtonPrevious,\r\n };", "function setupAutoExpand(textarea: HTMLTextAreaElement | null): void {\r\n if (textarea) {\r\n textarea.addEventListener(\"input\", function (this: HTMLTextAreaElement, event: Event) {\r\n const parentNode = textarea?.parentNode as HTMLElement | null;\r\n \r\n if (parentNode && parentNode.dataset) {\r\n parentNode.dataset.value = this.value;\r\n }\r\n });\r\n }\r\n }\r\n\r\n export {\r\n setupAutoExpand\r\n };", "function setupCharacterCount(\r\n element: HTMLElement,\r\n type: HTMLTextAreaElement | HTMLInputElement | null,\r\n length: string | null,\r\n countdown: HTMLElement | null,\r\n countMessageOverflow: HTMLElement | null\r\n ): void {\r\n let text = type?.value;\r\n let charCount = text?.length;\r\n if (type && text) {\r\n type.textContent = text;\r\n charCount = text?.length;\r\n if (charCount && countdown && countMessageOverflow) {\r\n if (length) {\r\n const lengthNumber = parseInt(length, 10);\r\n let remainingChars = lengthNumber - charCount;\r\n let absoluteValue = Math.abs(remainingChars);\r\n // Update span 2 with remaining number of chars\r\n if(countMessageOverflow.textContent) {\r\n countMessageOverflow.textContent = countMessageOverflow.textContent.replace(/\\d+/, String(absoluteValue));\r\n }\r\n // Update span 3 with remaining number of chars\r\n if(countdown.textContent) {\r\n countdown.textContent = countdown.textContent.replace(/\\d+/, String(absoluteValue));\r\n }\r\n // Adds overflow class if remaining chars < 0 \r\n if (remainingChars < 0) {\r\n element.classList.add('form__field__character-count--overflow');\r\n element.setAttribute(\"aria-invalid\", \"true\");\r\n }\r\n // Remove overflow class if remaining chars >= 0 \r\n if (remainingChars >= 0) {\r\n element.classList.remove('form__field__character-count--overflow');\r\n element.setAttribute(\"aria-invalid\", \"false\");\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function charCounter(element: HTMLElement | null): void { \r\n if (element) {\r\n const textArea = element.querySelector(\"textarea\");\r\n const input = element.querySelector(\"input\");\r\n const recommendedLength = element.getAttribute('data-recommended-length');\r\n const allowedLength = element.getAttribute('data-allowed-length');\r\n let countdown = element.querySelector('.form__field__character-count__info__count-down');\r\n let countMessageOverflow = element.querySelector('.form__field__character-count__info__overflow-count');\r\n\r\n // Textarea intial page load\r\n setupCharacterCount(element as HTMLElement, textArea as HTMLTextAreaElement, recommendedLength as string, countdown as HTMLElement, countMessageOverflow as HTMLElement);\r\n setupCharacterCount(element as HTMLElement, textArea as HTMLTextAreaElement, allowedLength as string, countdown as HTMLElement, countMessageOverflow as HTMLElement);\r\n\r\n // Input intial page load\r\n setupCharacterCount(element as HTMLElement, input as HTMLInputElement, recommendedLength as string, countdown as HTMLElement, countMessageOverflow as HTMLElement);\r\n setupCharacterCount(element as HTMLElement, input as HTMLInputElement, allowedLength as string, countdown as HTMLElement, countMessageOverflow as HTMLElement);\r\n\r\n // Update textarea on input\r\n textArea?.addEventListener('input', function() { \r\n setupCharacterCount(element as HTMLElement, textArea as HTMLTextAreaElement, recommendedLength as string, countdown as HTMLElement, countMessageOverflow as HTMLElement);\r\n setupCharacterCount(element as HTMLElement, textArea as HTMLTextAreaElement, allowedLength as string, countdown as HTMLElement, countMessageOverflow as HTMLElement);\r\n })\r\n\r\n // Update input field on input\r\n input?.addEventListener('input', function() { \r\n setupCharacterCount(element as HTMLElement, input as HTMLInputElement, recommendedLength as string, countdown as HTMLElement, countMessageOverflow as HTMLElement);\r\n setupCharacterCount(element as HTMLElement, input as HTMLInputElement, allowedLength as string, countdown as HTMLElement, countMessageOverflow as HTMLElement);\r\n })\r\n }\r\n }\r\n\r\n export {\r\n charCounter,\r\n setupCharacterCount\r\n };", "/* eslint-disable import/prefer-default-export */\r\nconst setInlineSelectLabel = (formField: Element): void => {\r\n const select = formField.querySelector('select');\r\n const label = formField.querySelector(`label[for=\"${select?.getAttribute('id')}\"]`);\r\n if (label) {\r\n const labelWidth = getComputedStyle(label).width;\r\n select?.style.setProperty('--label-width', labelWidth);\r\n }\r\n};\r\n\r\nfunction dropdownIconToggle(element: HTMLElement): void { \r\n let dropdownInactive = true;\r\n element.addEventListener('click', function (event) {\r\n if (dropdownInactive) {\r\n element.classList.add('dropdown-icon--active');\r\n element.classList.remove('dropdown-icon--inactive');\r\n dropdownInactive = false;\r\n } else {\r\n element.classList.add('dropdown-icon--inactive');\r\n element.classList.remove('dropdown-icon--active');\r\n dropdownInactive = true;\r\n }\r\n \r\n const handleOutsideClick = (event) => {\r\n if (!element.contains(event.target)) {\r\n element.classList.add('dropdown-icon--inactive');\r\n element.classList.remove('dropdown-icon--active');\r\n document.removeEventListener('click', handleOutsideClick);\r\n dropdownInactive = true;\r\n }\r\n };\r\n \r\n document.addEventListener('click', handleOutsideClick);\r\n });\r\n }\r\n\r\n\r\n\r\nexport {\r\n setInlineSelectLabel,\r\n dropdownIconToggle\r\n};\r\n", "// Centers stepper labels if they are 4 chars or less\r\nfunction stepperLabelsCenter(element: HTMLElement): void { \r\n if (element && element.textContent) {\r\n if (element.textContent.length <= 4) {\r\n element.style.textAlign = 'center';\r\n }\r\n }\r\n}\r\n\r\nexport {\r\n stepperLabelsCenter\r\n };\r\n ", "/* eslint-disable no-param-reassign */\r\n/* eslint-env browser */\r\nimport ready from '../components/ready';\r\nimport {\r\n setResponsiveNav,\r\n setResponsiveToggle, setCopyToClipboard,\r\n} from '../components/nav';\r\nimport copyHexCode from '../components/copy-hex-code';\r\nimport { isElementWithClassNameInEventPath, setMetaThemeColor, setHorizontalScroll } from '../components/helpers';\r\nimport { setResponsiveTable } from '../components/table';\r\nimport { setTabs } from '../components/tabs';\r\nimport { setContentToggle } from '../components/content-toggle';\r\nimport {\r\n closeAllContentTogglesInToolbar,\r\n contentToggleEdgeHandling,\r\n findToolbar,\r\n lockBodyScroll,\r\n unlockBodyScroll,\r\n} from '../components/toolbar';\r\nimport { horizontalScrollButtonNext, horizontalScrollButtonPrevious } from '../components/horizontal-scroll-btn';\r\nimport { setupAutoExpand } from '../components/text-area';\r\nimport { charCounter } from '../components/char-counter';\r\nimport { dropdownIconToggle } from '../components/form';\r\nimport { stepperLabelsCenter } from '../components/stepper';\r\n\r\nlet windowInnerWidth = 0;\r\n\r\nready(() => {\r\n const tabbedContent = document.querySelectorAll('.tabbed-content');\r\n const tabbedObjects: ITabbedObject[] = [];\r\n tabbedContent.forEach((tab) => tabbedObjects.push({\r\n domElement: tab,\r\n rendered: false,\r\n }));\r\n setTabs(tabbedObjects);\r\n setMetaThemeColor();\r\n\r\n const navElements = document.querySelectorAll('.nav:not(.nav--vertical)');\r\n navElements.forEach((n) => setResponsiveNav(navElements, n));\r\n setResponsiveToggle(navElements);\r\n\r\n const tables = document.querySelectorAll('.table--wrap-medium-width, .table--wrap-default-width');\r\n tables.forEach((table) => setResponsiveTable(table));\r\n\r\n // Progress bar animation\r\n const animationButtons = document.querySelectorAll('.button');\r\n const animatedProgressBars = document.querySelectorAll('.progress-bar__progress.progress-bar__progress--confirm.progress-bar__progress--transistion-from-start');\r\n animationButtons.forEach((button) => {\r\n button.addEventListener('click', () => {\r\n animatedProgressBars.forEach((progressBar) => {\r\n progressBar.classList.toggle('progress-bar__progress--transistion-from-start');\r\n });\r\n });\r\n });\r\n\r\n // Character counter for form input\r\n const elements = document.querySelectorAll('.form__field__character-count');\r\n elements.forEach((element) => {\r\n charCounter(element as HTMLElement);\r\n });\r\n\r\n // Textarea input\r\n const textarea = document.getElementById(\"autoexpand\") as HTMLTextAreaElement | null;\r\n setupAutoExpand(textarea);\r\n window.onload = function () {\r\n setupAutoExpand(textarea);\r\n };\r\n\r\n // Dropdown box icon toggle\r\n const dropDownElements: NodeListOf<HTMLElement> = document.querySelectorAll('.form__field select, .form__field__combo-box__field');\r\n dropDownElements.forEach((element) => {\r\n dropdownIconToggle(element);\r\n });\r\n\r\n // Centers stepper labels when they are 4 chars or less\r\n const stepperLabels : NodeListOf<HTMLElement> = document.querySelectorAll('.stepper__item__label');\r\n stepperLabels.forEach((element) => {\r\n stepperLabelsCenter(element);\r\n });\r\n\r\n\r\n // Find alle copy-to-clipboard elementer\r\n const ctc = document.querySelectorAll('.copy-to-clipboard');\r\n ctc.forEach((element) => setCopyToClipboard(element as HTMLElement, document.querySelector('html')?.getAttribute('lang') === 'en' ? 'Hexcode copied!' : 'Hexkode kopieret!'));\r\n copyHexCode();\r\n\r\n //const toggles = document.querySelectorAll('.box .content-toggle__content, .profile-header .content-toggle__content, .design-documentation .content-toggle__content');\r\n const toggles = document.querySelectorAll('.content-toggle__content:not(.toolbar .content-toggle__content)');\r\n toggles.forEach((toggle) => {\r\n setContentToggle(toggle);\r\n });\r\n \r\n // Hortizontal scroll buttons\r\n const scrollButtonsNext = document.querySelectorAll('.button.button--small.button--icon.button--icon--hide-label.icon-next');\r\n const scrollButtonsPrevious = document.querySelectorAll('.button.button--small.button--icon.button--icon--hide-label.icon-previous');\r\n horizontalScrollButtonNext(scrollButtonsNext);\r\n horizontalScrollButtonPrevious(scrollButtonsPrevious);\r\n\r\n const horizontalScroll = document.querySelectorAll('.horizontal-scroll');\r\n horizontalScroll.forEach((hs) => {\r\n setHorizontalScroll(hs as HTMLElement);\r\n window.addEventListener('resize', () => {\r\n setHorizontalScroll(hs as HTMLElement);\r\n });\r\n });\r\n\r\n const switchSegments = document.querySelectorAll('.switch__segment');\r\n switchSegments.forEach((switchSegment) => {\r\n switchSegment.addEventListener('click', () => {\r\n const horizontalScrollTabbed = document.querySelectorAll('.horizontal-scroll');\r\n horizontalScrollTabbed.forEach((hsTabbed) => {\r\n setHorizontalScroll(hsTabbed as HTMLElement);\r\n });\r\n });\r\n });\r\n \r\n // Kursuskatalog\r\n const togglesInToolbars = document.querySelectorAll('.toolbar .content-toggle__content');\r\n togglesInToolbars.forEach((toggle) => {\r\n setContentToggle(\r\n toggle,\r\n (popout: HTMLElement) => {\r\n contentToggleEdgeHandling(popout);\r\n lockBodyScroll();\r\n },\r\n (content: HTMLElement) => closeAllContentTogglesInToolbar(findToolbar(content)),\r\n (content: HTMLElement, button: HTMLButtonElement) => {\r\n const ariaExpanded = button.getAttribute('aria-expanded');\r\n const toolbar = findToolbar(content);\r\n if (ariaExpanded === 'true') {\r\n toolbar?.classList.add('toolbar--has-popout');\r\n } else {\r\n toolbar?.classList.remove('toolbar--has-popout');\r\n }\r\n\r\n content.addEventListener('click', (event: MouseEvent) => {\r\n if ((event.target as HTMLElement).classList.contains('toolbar__popout')\r\n && !isElementWithClassNameInEventPath(event as MouseEvent, 'toolbar__filter__content')) {\r\n closeAllContentTogglesInToolbar(toolbar);\r\n unlockBodyScroll();\r\n }\r\n });\r\n },\r\n );\r\n });\r\n\r\n window.addEventListener('load', () => {\r\n windowInnerWidth = window.innerWidth;\r\n });\r\n\r\n window.addEventListener('resize', () => {\r\n if (windowInnerWidth > 0 && window.innerWidth !== windowInnerWidth) {\r\n windowInnerWidth = window.innerWidth;\r\n navElements.forEach((n) => setResponsiveNav(navElements, n));\r\n setTabs(tabbedObjects);\r\n }\r\n });\r\n\r\n const topBar = document.querySelector('.omnibus-header__mobile-scroll'); \r\n window.addEventListener('scroll', function() {\r\n if (topBar) {\r\n if (window.scrollY > 70) {\r\n topBar.classList.add('omnibus-header__mobile-scroll--show'); \r\n topBar.classList.remove('omnibus-header__mobile-scroll--hide');\r\n } else {\r\n topBar.classList.remove('omnibus-header__mobile-scroll--show'); \r\n topBar.classList.add('omnibus-header__mobile-scroll--hide'); \r\n }\r\n }\r\n});\r\n});\r\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["ready", "fn", "ready_default", "copyToClipboard", "str", "isElementWithClassNameInEventPath", "event", "className", "found", "p", "setMetaThemeColor", "body", "bgColor", "existingMeta", "meta", "getBaseFontSize", "convertRemToPixels", "rem", "isViewportBelow", "mediaQuery", "viewportWidth", "mediaQueryValue", "overflowsX", "element", "setHorizontalScroll", "element", "content", "overflowsX", "findNav", "element", "parent", "closeResponsiveNav", "navElements", "keepOpen", "navToggledClass", "n", "button", "setResponsiveToggle", "toggleMenu", "hideItems", "navItems", "lastNavItem", "firstElement", "transitionListener", "cleanUp", "clickEvent", "nav", "ariaExpanded", "setResponsiveNav", "navElement", "navItemsClass", "navItemsParent", "isOverflownClass", "hasOverflowClass", "isActiveClass", "hasOverflown", "i", "isActive", "bodyClickEvent", "e", "isElementWithClassNameInEventPath", "setClickMessage", "text", "copyElement", "clickElement", "ctcThis", "listener", "copyToClipboard", "ctcThisMessage", "setCopyToClipboard", "element", "btn", "copyHexCode", "ctc", "colorElements", "button", "color", "computedStyle", "hexColor", "rgbToHex", "copyToClipboard", "rgb", "rgbArray", "hex", "value", "hexValue", "copy_hex_code_default", "setResponsiveTable", "table", "head", "body", "foot", "headers", "h", "rowContainers", "rc", "tr", "cell", "i", "getMediaWidthBasedOnModifier", "classList", "isBelowViewportLimit", "widthInRem", "getBaseFontSize", "mediaWidth", "destroyTabs", "tabbed", "tabs", "panels", "section", "tab", "panel", "switchTab", "tabs", "panels", "oldTab", "newTab", "_", "focus", "callback", "index", "link", "oldIndex", "setTabbedContent", "key", "tabbed", "initial", "tablist", "section", "expandAll", "expandAllEvent", "panel", "tab", "i", "tabClickEvent", "e", "currentTab", "tabIndex", "tabKeyEvent", "dir", "setTabs", "tabbedObjects", "tabObject", "rendered", "domElement", "isBelowViewportLimit", "dataInitial", "destroyTabs", "setContentToggle", "content", "onClick", "beforeCallback", "afterCallback", "cleanUp", "setContentClose", "button", "contentClose", "focus", "click", "setBPModiferClass", "isViewportBelow", "event", "eventTarget", "doesNotContainContent", "doesNotContainButton", "doesNotContainSpan", "clickEvent", "ariaExpanded", "cc", "btnClick", "lockBodyScroll", "body", "isViewportBelow", "unlockBodyScroll", "closeAllContentTogglesInToolbar", "toolbar", "toggle", "content", "findToolbar", "element", "parent", "contentToggleEdgeHandling", "isViewportBelow", "allowedDistance", "convertRemToPixels", "popoutX", "popoutWidth", "distance", "horizontalScrollButtonNext", "nextButtons", "nextButton", "topElem", "scrollElements", "switch__segments", "scrollElement", "scrollAmount", "disableButton", "activateButton", "switch__segment", "horizontalScrollButtonPrevious", "previousButtons", "previousButton", "button", "setupAutoExpand", "textarea", "event", "parentNode", "setupCharacterCount", "element", "type", "length", "countdown", "countMessageOverflow", "text", "charCount", "remainingChars", "absoluteValue", "charCounter", "textArea", "input", "recommendedLength", "allowedLength", "dropdownIconToggle", "element", "dropdownInactive", "event", "handleOutsideClick", "stepperLabelsCenter", "element", "windowInnerWidth", "ready_default", "tabbedContent", "tabbedObjects", "tab", "setTabs", "setMetaThemeColor", "navElements", "n", "setResponsiveNav", "setResponsiveToggle", "table", "setResponsiveTable", "animationButtons", "animatedProgressBars", "button", "progressBar", "element", "charCounter", "textarea", "setupAutoExpand", "dropdownIconToggle", "stepperLabelsCenter", "setCopyToClipboard", "copy_hex_code_default", "toggle", "setContentToggle", "scrollButtonsNext", "scrollButtonsPrevious", "horizontalScrollButtonNext", "horizontalScrollButtonPrevious", "hs", "setHorizontalScroll", "switchSegment", "hsTabbed", "popout", "contentToggleEdgeHandling", "lockBodyScroll", "content", "closeAllContentTogglesInToolbar", "findToolbar", "ariaExpanded", "toolbar", "event", "isElementWithClassNameInEventPath", "unlockBodyScroll"
|
|
7
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../source/js/components/ready.ts", "../../source/js/components/helpers.ts", "../../source/js/components/nav.ts", "../../source/js/components/copy-hex-code.ts", "../../source/js/components/table.ts", "../../source/js/components/tabs.ts", "../../source/js/components/content-toggle.ts", "../../source/js/components/toolbar.ts", "../../source/js/components/horizontal-scroll-btn.ts", "../../source/js/components/text-area.ts", "../../source/js/components/char-counter.ts", "../../source/js/components/form.ts", "../../source/js/components/stepper.ts", "../../source/js/production/app.ts"],
|
|
4
|
+
"sourcesContent": ["/* eslint-env browser */\r\nconst ready = (fn: () => void): void => {\r\n if (document.readyState !== 'loading') {\r\n fn();\r\n } else {\r\n document.addEventListener('DOMContentLoaded', fn);\r\n }\r\n};\r\n\r\nexport default ready;\r\n", "/* eslint-disable wrap-iife */\r\n/* eslint-disable import/prefer-default-export */\r\n/* eslint-env browser */\r\nconst copyToClipboard = (str: string): void => {\r\n // eslint-disable-next-line no-console\r\n navigator.clipboard.writeText(str).then(() => console.log(`${str} written to clipboard`));\r\n};\r\n\r\nconst isElementWithClassNameInEventPath = (event: MouseEvent, className: string): boolean => {\r\n let found = false;\r\n const path = event.composedPath();\r\n path.forEach((p: EventTarget): void => {\r\n if ((p as HTMLElement).classList) {\r\n if ((p as HTMLElement).classList.contains(className)) {\r\n found = true;\r\n }\r\n }\r\n });\r\n return found;\r\n};\r\n\r\nconst setMetaThemeColor = (): void => {\r\n const body = document.querySelector('body');\r\n if (body) {\r\n const bgColor = window.getComputedStyle(body).getPropertyValue('--color-background');\r\n const existingMeta = document.querySelector('meta[name=\"theme-color\"]') as HTMLMetaElement;\r\n if (existingMeta) {\r\n existingMeta.content = bgColor;\r\n } else {\r\n const meta = document.createElement('meta');\r\n meta.name = 'theme-color';\r\n meta.content = bgColor;\r\n document.getElementsByTagName('head')[0].appendChild(meta);\r\n }\r\n }\r\n};\r\n\r\nconst getBaseFontSize = (): number => parseInt(window.getComputedStyle(document.documentElement).fontSize.replace('px', ''), 10);\r\n\r\n// eslint-disable-next-line max-len\r\nconst convertRemToPixels = (rem: number): number => rem * 16;\r\n\r\nconst isViewportBelow = (mediaQuery: string): boolean => {\r\n const viewportWidth = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\r\n const mediaQueryValue = convertRemToPixels(parseInt(getComputedStyle(document.documentElement).getPropertyValue(mediaQuery).replace('rem', ''), 10));\r\n return viewportWidth < mediaQueryValue;\r\n};\r\n\r\nconst setScrollbarWidthVariable = (): void => {\r\n const scrollbarWidth = window.innerWidth - document.body.clientWidth;\r\n document.documentElement.style.setProperty('--vertical-scrollbar-width', `${scrollbarWidth}px`);\r\n};\r\n\r\nconst overflowsY = (element: HTMLElement): boolean => element.offsetHeight !== element.scrollHeight;\r\nconst overflowsX = (element: HTMLElement): boolean => element.offsetWidth !== element.scrollWidth;\r\n// eslint-disable-next-line max-len\r\nconst elementOverflows = (element: HTMLElement): boolean => overflowsY(element) || overflowsX(element);\r\n\r\nconst setHorizontalScroll = (element: HTMLElement): void => {\r\n // Checks if the element already contains no-overflow\r\n if (element.classList.contains('horizontal-scroll--no-overflow')) {\r\n element.classList.remove('horizontal-scroll--no-overflow');\r\n }\r\n\r\n // Defines of content of horizontal scroll \r\n let content = element.querySelector('.horizontal-scroll--check-overflow .tabbed-content__section:not([hidden]) .horizontal-scroll__scrollable-content');\r\n if (content === null && !content) {\r\n content = element.querySelector('.horizontal-scroll--check-overflow .horizontal-scroll__scrollable-content');\r\n }\r\n\r\n // Checks if no-overflow should be added or not depending on content width\r\n if (content) {\r\n if (!overflowsX(content as HTMLElement)) {\r\n element.classList.add('horizontal-scroll--no-overflow');\r\n content?.removeAttribute('tabindex');\r\n } else {\r\n content?.setAttribute('tabindex', '0');\r\n }\r\n }\r\n};\r\n\r\nconst focusableSelector = 'a[href]:not([tabindex=\"-1\"]), area[href]:not([tabindex=\"-1\"]), input:not([disabled]):not([tabindex=\"-1\"]), select:not([disabled]):not([tabindex=\"-1\"]), textarea:not([disabled]):not([tabindex=\"-1\"]), button:not([disabled]):not([tabindex=\"-1\"]), iframe:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"]), [contentEditable=true]:not([tabindex=\"-1\"])';\r\n\r\nexport {\r\n copyToClipboard,\r\n isElementWithClassNameInEventPath,\r\n getBaseFontSize,\r\n setMetaThemeColor,\r\n isViewportBelow,\r\n convertRemToPixels,\r\n setScrollbarWidthVariable,\r\n overflowsX,\r\n overflowsY,\r\n elementOverflows,\r\n setHorizontalScroll,\r\n focusableSelector,\r\n};\r\n", "/* eslint-env browser */\r\nimport { copyToClipboard, isElementWithClassNameInEventPath } from './helpers';\r\n\r\nconst findNav = (element: HTMLElement): HTMLElement => {\r\n const parent = element.parentElement;\r\n if (parent) {\r\n if (parent.classList.contains('nav')) {\r\n return parent;\r\n }\r\n return findNav(parent);\r\n }\r\n return element;\r\n};\r\n\r\n// eslint-disable-next-line max-len\r\nconst closeResponsiveNav = (navElements: NodeListOf<Element>, keepOpen: HTMLElement | null = null): void => {\r\n const navToggledClass = 'nav--toggled';\r\n navElements.forEach((n) => {\r\n const button = n.querySelector('.nav__toggle') as HTMLElement;\r\n if (n !== keepOpen) {\r\n if (n.classList.contains(navToggledClass)) {\r\n button.focus();\r\n button.setAttribute('aria-expanded', 'false');\r\n }\r\n n.classList.remove(navToggledClass);\r\n }\r\n });\r\n};\r\n\r\nconst setResponsiveToggle = (navElements: NodeListOf<Element>): CleanUpPair[] => {\r\n const toggleMenu = (button: HTMLElement) => {\r\n const parent = findNav(button);\r\n const hideItems: NodeListOf<HTMLElement> = parent.querySelectorAll('.nav__item');\r\n\r\n // // Only shows overflown elements when the menu is extended \r\n // hideItems.forEach(item => {\r\n // const currentDisplay = window.getComputedStyle(item).display;\r\n // if (!item.classList.contains('nav__item--is-overflown')) {\r\n // item.style.display = currentDisplay === 'none' ? 'inline-flex' : 'none';\r\n // }\r\n // });\r\n\r\n // // All elements get display: inline-flex when there is clicked outside of the button \r\n // const handleDocumentClick = (event: MouseEvent) => {\r\n // if (!parent.contains(event.target as Node)) {\r\n // hideItems.forEach(item => {\r\n // item.style.display = 'inline-flex';\r\n // });\r\n // }\r\n // };\r\n // document.body.addEventListener('click', handleDocumentClick);\r\n\r\n const navItems = parent.querySelector('.nav__items');\r\n const lastNavItem = navItems?.querySelector('.nav__item:last-of-type');\r\n navItems?.classList.add('nav__items--fadeout');\r\n const firstElement = navItems?.querySelector('.nav__item--is-overflown') as HTMLElement;\r\n if (firstElement) {\r\n firstElement.focus();\r\n }\r\n const transitionListener = () => {\r\n parent.classList.toggle('nav--toggled');\r\n navItems?.classList.remove('nav__items--fadeout');\r\n lastNavItem?.removeEventListener('transitionend', transitionListener);\r\n };\r\n lastNavItem?.addEventListener('transitionend', transitionListener);\r\n return parent;\r\n };\r\n\r\n const cleanUp: CleanUpPair[] = [];\r\n\r\n const toggle = document.querySelectorAll('.nav__toggle');\r\n toggle.forEach((button) => {\r\n const clickEvent = () => {\r\n const nav = toggleMenu(button as HTMLElement);\r\n const ariaExpanded = button.getAttribute('aria-expanded');\r\n button.setAttribute('aria-expanded', ariaExpanded === 'false' ? 'true' : 'false');\r\n closeResponsiveNav(navElements, nav);\r\n };\r\n\r\n cleanUp.push({\r\n element: button,\r\n clickEvent,\r\n });\r\n\r\n button.addEventListener('click', clickEvent);\r\n });\r\n\r\n return cleanUp;\r\n};\r\n\r\nconst setResponsiveNav = (\r\n navElements: NodeListOf<Element>,\r\n navElement: Element,\r\n): SetResponsiveNavCleanUp => {\r\n const navToggledClass = 'nav--toggled';\r\n const navItemsClass = 'nav__items';\r\n // gitlab #117\r\n navElement.classList.remove(navToggledClass);\r\n const navItemsParent = navElement.querySelector(`.${navItemsClass}`);\r\n\r\n if (navItemsParent) {\r\n const navItems = navItemsParent.querySelectorAll('.nav__item');\r\n const isOverflownClass = 'nav__item--is-overflown';\r\n const hasOverflowClass = 'nav--has-overflow';\r\n const isActiveClass = 'nav__item--active';\r\n let hasOverflown = false;\r\n\r\n for (let i = navItems.length - 1; i >= 0; i -= 1) {\r\n const nav = navItems[i] as HTMLElement;\r\n const top = nav.offsetTop;\r\n\r\n if (top > 0) {\r\n nav.classList.add(isOverflownClass);\r\n navElement.classList.add(hasOverflowClass);\r\n hasOverflown = true;\r\n } else if (!nav.classList.contains(isActiveClass)) {\r\n nav.classList.remove(isOverflownClass);\r\n }\r\n }\r\n\r\n if (!hasOverflown) {\r\n navElement.classList.remove(hasOverflowClass);\r\n const isActive = navElement.querySelector(`.${isActiveClass}`);\r\n if (isActive) {\r\n isActive.classList.remove(isOverflownClass);\r\n }\r\n }\r\n }\r\n\r\n // gitlab #115\r\n const bodyClickEvent = (e: Event) => {\r\n if (!(e.target as HTMLElement).classList.contains('nav__toggle')\r\n && !isElementWithClassNameInEventPath(e as MouseEvent, navItemsClass)) {\r\n closeResponsiveNav(navElements);\r\n }\r\n };\r\n\r\n document.querySelector('body')?.addEventListener('click', bodyClickEvent);\r\n\r\n return {\r\n element: document.querySelector('body'),\r\n clickEvent: bodyClickEvent,\r\n };\r\n};\r\n\r\nconst closeSubNav = (buttons: NodeListOf<Element>, keepOpen: Element | null = null) => {\r\n const subNavClass = 'sub-nav--toggled';\r\n buttons.forEach((button) => {\r\n if (button !== keepOpen) {\r\n if (button?.parentElement?.classList.contains(subNavClass)) {\r\n (button as HTMLElement).focus();\r\n button.setAttribute('aria-expanded', 'false');\r\n }\r\n button?.parentElement?.classList.remove(subNavClass);\r\n }\r\n });\r\n};\r\n\r\nconst setSubNavToggle = (buttons: NodeListOf<Element>, button: Element): SetSubNavToggleCleanUp => {\r\n const subNavClass = 'sub-nav--toggled';\r\n const buttonClickEvent = () => {\r\n button?.parentElement?.classList.toggle(subNavClass);\r\n if (button?.parentElement?.classList.contains(subNavClass)) {\r\n button.setAttribute('aria-expanded', 'true');\r\n } else {\r\n button.setAttribute('aria-expanded', 'false');\r\n }\r\n closeSubNav(buttons, button);\r\n };\r\n\r\n button.addEventListener('click', buttonClickEvent);\r\n\r\n // gitlab #115\r\n const bodyClickEvent = (e: Event) => {\r\n if (!isElementWithClassNameInEventPath(e as MouseEvent, 'sub-nav')) {\r\n closeSubNav(buttons);\r\n }\r\n };\r\n\r\n document.querySelector('body')?.addEventListener('click', bodyClickEvent);\r\n return {\r\n buttonClickEvent,\r\n element: document.querySelector('body'),\r\n bodyClickEvent,\r\n };\r\n};\r\n\r\nconst setClickMessage = ((\r\n text: string,\r\n copyElement: Element,\r\n clickElement: Element | null,\r\n ctcThis: HTMLElement | null,\r\n listener: () => void,\r\n): void => {\r\n if (ctcThis && clickElement) {\r\n // Vi kopierer teksten til clipboard\r\n copyToClipboard(ctcThis.innerText);\r\n copyElement.classList.add('copy-to-clipboard--confirm');\r\n if (copyElement === clickElement) {\r\n copyElement.classList.add('copy-to-clipboard--done');\r\n }\r\n // Laver en span, der viser, at teksten er kopieret\r\n const ctcThisMessage = document.createElement('span');\r\n ctcThisMessage.classList.add('copy-to-clipboard__this__confirm-message');\r\n ctcThisMessage.innerText = text;\r\n ctcThis.appendChild(ctcThisMessage);\r\n\r\n // Efter 1,2 sekunder fjerner vi beskeden igen\r\n clickElement.removeEventListener('click', listener);\r\n setTimeout(() => {\r\n copyElement.classList.remove('copy-to-clipboard--confirm');\r\n ctcThisMessage.remove();\r\n clickElement.addEventListener('click', listener);\r\n }, 1200);\r\n }\r\n});\r\n\r\nconst setCopyToClipboard = (element: HTMLElement, text = 'Kopieret!'): void => {\r\n const ctcThis = <HTMLElement>element.querySelector('.copy-to-clipboard__this');\r\n // Hvis det er en knap, s\u00E5 s\u00E6tter vi click event p\u00E5 knappen\r\n if ((element as HTMLButtonElement).type === 'button') {\r\n const listener = (): void => {\r\n setClickMessage(text, element, element, ctcThis, listener);\r\n };\r\n element.addEventListener('click', listener);\r\n // Hvis det ikke er en knap, finder vi knappen \"inde i\" elementet\r\n } else {\r\n const btn = element.querySelector('.copy-to-clipboard__execute');\r\n const listener = (): void => {\r\n setClickMessage(text, element, btn, ctcThis, listener);\r\n };\r\n btn?.addEventListener('click', listener);\r\n }\r\n};\r\n\r\nconst setSearchToggle = (navSearch: Element, button: Element): void => {\r\n const toggleClass = 'nav__search--toggled';\r\n button.addEventListener('click', () => {\r\n if (navSearch.classList.contains(toggleClass)) {\r\n button.setAttribute('aria-expanded', 'false');\r\n navSearch.classList.remove(toggleClass);\r\n } else {\r\n button.setAttribute('aria-expanded', 'true');\r\n navSearch.classList.add(toggleClass);\r\n }\r\n });\r\n};\r\n\r\n\r\n\r\nexport {\r\n findNav,\r\n setResponsiveToggle,\r\n setResponsiveNav,\r\n setSubNavToggle,\r\n setCopyToClipboard,\r\n setSearchToggle,\r\n};\r\n", "/* eslint-env browser */\r\nimport { copyToClipboard } from './helpers';\r\n\r\nconst copyHexCode = (): void => {\r\n const ctc = document.querySelectorAll('.copy-to-clipboard');\r\n const colorElements = document.querySelectorAll('.copy-to-clipboard__color');\r\n ctc.forEach((button) => {\r\n button.addEventListener('click', () => {\r\n let color = button.parentElement?.querySelector('.copy-to-clipboard__color');\r\n if(color) {\r\n let computedStyle = getComputedStyle(color).getPropertyValue('background-color');\r\n let hexColor = rgbToHex(computedStyle);\r\n console.log(hexColor);\r\n copyToClipboard(hexColor.replace(/\"/g, ''));\r\n }\r\n });\r\n });\r\n};\r\n\r\nfunction rgbToHex(rgb) {\r\n // Extract the individual RGB components\r\n var rgbArray = rgb.match(/\\d+/g);\r\n\r\n // Convert each component to hex and concatenate\r\n var hex = \"#\" + rgbArray.map(function (value) {\r\n var hexValue = parseInt(value).toString(16);\r\n return hexValue.length === 1 ? \"0\" + hexValue : hexValue;\r\n }).join('');\r\n\r\n return hex;\r\n}\r\n\r\nexport default copyHexCode;\r\n", "/* eslint-disable import/prefer-default-export */\r\nconst setResponsiveTable = (table: Element): void => {\r\n const head = table.querySelector('thead');\r\n const body = table.querySelector('tbody');\r\n const foot = table.querySelector('tfoot');\r\n\r\n if (head) {\r\n const headers: string[] = [];\r\n const ths = head.querySelectorAll('th');\r\n ths.forEach((h) => {\r\n if (!h.classList.contains('table__cell--self-explanatory')) {\r\n headers.push(h.innerHTML); // Because innerText inherits stuff like text-transform\r\n } else {\r\n headers.push(''); // If header is self explanatory we do not add it\r\n }\r\n });\r\n\r\n const rowContainers: HTMLTableSectionElement[] = [];\r\n // Table elements that possibly contains <tr>'s\r\n if (body) {\r\n rowContainers.push(body);\r\n }\r\n if (foot) {\r\n rowContainers.push(foot);\r\n }\r\n\r\n rowContainers.forEach((rc) => {\r\n const rows = rc.querySelectorAll('tr');\r\n rows.forEach((tr) => {\r\n const cells = tr.querySelectorAll('td, th');\r\n cells.forEach((cell, i) => {\r\n if (headers[i]) {\r\n // if header is self explanatory we skip (value of array index is '' which is falsy)\r\n cell.setAttribute('data-label', headers[i]);\r\n }\r\n });\r\n });\r\n });\r\n }\r\n};\r\n\r\nexport {\r\n setResponsiveTable,\r\n};\r\n", "/* eslint-disable @typescript-eslint/no-empty-function */\r\n/* eslint-env browser */\r\n/* eslint-disable import/prefer-default-export */\r\n/* eslint-disable no-param-reassign */\r\nimport { getBaseFontSize } from './helpers';\r\n\r\nconst getMediaWidthBasedOnModifier = (classList: DOMTokenList): number => {\r\n if (classList.contains('tabbed-content--hide-tabs-on-medium-width')) {\r\n return parseInt(getComputedStyle(document.documentElement).getPropertyValue('--bp-medium').replace('rem', ''), 10);\r\n }\r\n if (classList.contains('tabbed-content--hide-tabs-on-wide-width')) {\r\n return parseInt(getComputedStyle(document.documentElement).getPropertyValue('--bp-wide').replace('rem', ''), 10);\r\n }\r\n\r\n return -1;\r\n};\r\n\r\nconst isBelowViewportLimit = (classList: DOMTokenList): boolean => {\r\n const viewportWidth = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);\r\n const widthInRem = viewportWidth / getBaseFontSize();\r\n const mediaWidth = getMediaWidthBasedOnModifier(classList);\r\n if (mediaWidth > -1) {\r\n return widthInRem < mediaWidth;\r\n }\r\n return true;\r\n};\r\n\r\nconst destroyTabs = (tabbed: Element): void => {\r\n const tablist = tabbed.querySelector('.nav__items');\r\n const tabs = tablist?.querySelectorAll('a');\r\n const panels: HTMLElement[] = [];\r\n const sections = tabbed.querySelectorAll('section');\r\n sections.forEach((section) => {\r\n if (section.parentNode === tabbed) {\r\n panels.push(section);\r\n }\r\n });\r\n tabs?.forEach((tab) => {\r\n tab.removeAttribute('aria-selected');\r\n tab.classList.remove('nav__item--active');\r\n });\r\n\r\n panels.forEach((panel) => {\r\n panel.hidden = false;\r\n panel.removeAttribute('role');\r\n });\r\n};\r\n\r\nconst destroySwitches = (tabbed: Element): void => {\r\n const switchlist = tabbed.querySelector('.switch');\r\n const switches = switchlist?.querySelectorAll('a');\r\n const panels: HTMLElement[] = [];\r\n const sections = tabbed.querySelectorAll('section');\r\n sections.forEach((section) => {\r\n if (section.parentNode === tabbed) {\r\n panels.push(section);\r\n }\r\n });\r\n switches?.forEach((tab) => {\r\n tab.removeAttribute('aria-selected');\r\n tab.classList.remove('switch__segment--active');\r\n });\r\n\r\n panels.forEach((panel) => {\r\n panel.hidden = false;\r\n panel.removeAttribute('role');\r\n });\r\n};\r\n\r\nconst switchTab = (\r\n tabs: NodeListOf<HTMLAnchorElement>,\r\n panels: HTMLElement[],\r\n oldTab: Element | null,\r\n newTab: HTMLElement,\r\n _: DOMTokenList,\r\n focus = true,\r\n // eslint-disable-next-line no-console\r\n callback = (index: number): void => console.log(index),\r\n): void => {\r\n if (focus) {\r\n newTab.focus();\r\n }\r\n // Make the active tab focusable by the user (Tab key)\r\n newTab.removeAttribute('tabindex');\r\n // Set the selected state\r\n newTab.setAttribute('aria-selected', 'true');\r\n\r\n // Check if switch // should this be more pretty?\r\n if (newTab.classList.contains('switch__segment')) {\r\n newTab.classList.add('switch__segment--active');\r\n } else {\r\n newTab.classList.add('nav__item--active');\r\n }\r\n\r\n if (oldTab) {\r\n oldTab.removeAttribute('aria-selected');\r\n oldTab.setAttribute('tabindex', '-1');\r\n\r\n if (oldTab.classList.contains('switch__segment')) {\r\n oldTab.classList.remove('switch__segment--active');\r\n } else {\r\n oldTab.classList.remove('nav__item--active');\r\n }\r\n }\r\n\r\n const index = Array.prototype.indexOf.call(tabs, newTab);\r\n\r\n // More links\r\n /* let moreLinks;\r\n var moreLink: HTMLElement;\r\n moreLinks = document.querySelectorAll(`[data-for=\"${panels[index].id}\"]`);\r\n moreLinks.forEach((moreLink) => {\r\n moreLink.classList.add('tabbed-content-peripheral--active');\r\n moreLink.hidden = false;\r\n }); */\r\n const moreLinks: HTMLElement[] = Array.from(document.querySelectorAll(`[data-for=\"${panels[index].id}\"]`));\r\n moreLinks.forEach((link) => {\r\n link.classList.add('tabbed-content-peripheral--active');\r\n link.hidden = false;\r\n });\r\n\r\n // Get the indices of the new and old tabs to find the correct\r\n // tab panels to show and hide\r\n panels[index].hidden = false;\r\n if (oldTab) {\r\n const oldIndex = Array.prototype.indexOf.call(tabs, oldTab);\r\n\r\n const oldMoreLinks: HTMLElement[] = Array.from(document.querySelectorAll(`[data-for=\"${panels[oldIndex].id}\"]`));\r\n oldMoreLinks.forEach((link) => {\r\n link.classList.remove('tabbed-content-peripheral--active');\r\n link.hidden = true;\r\n });\r\n\r\n /* moreLinks.forEach((moreLink) => {\r\n moreLink.classList.remove('tabbed-content-peripheral--active');\r\n moreLink.hidden = true;\r\n }); */\r\n\r\n panels[oldIndex].hidden = true;\r\n }\r\n\r\n // Dispatches custom event on every tab change\r\n newTab.dispatchEvent(new CustomEvent('switch-tab', {\r\n bubbles: true,\r\n detail: { tab: index },\r\n }));\r\n callback(index);\r\n};\r\n\r\nconst setTabbedContent = (\r\n key: number,\r\n tabbed: Element,\r\n initial = 0,\r\n focus = true,\r\n // eslint-disable-next-line no-console\r\n callback = (index: number) => console.log(index),\r\n): void => {\r\n const tablist = tabbed.querySelector('.switch,.nav__items') as HTMLElement;\r\n const tabs = tablist.querySelectorAll('a');\r\n const panels: HTMLElement[] = [];\r\n const sections = tabbed.querySelectorAll('section');\r\n sections.forEach((section) => {\r\n if (section.parentNode === tabbed) {\r\n panels.push(section);\r\n }\r\n });\r\n\r\n const expandAll = tabbed.querySelector('button.tabbed-content__expand-all');\r\n if (expandAll) {\r\n const expandAllEvent = () => {\r\n tablist.hidden = true;\r\n panels.forEach((panel: HTMLElement) => {\r\n panel.hidden = false;\r\n });\r\n };\r\n\r\n expandAll.removeEventListener('click', expandAllEvent);\r\n expandAll.addEventListener('click', expandAllEvent);\r\n }\r\n\r\n // Add the tablist role to the first <ul> in the .tabbed container\r\n tablist.setAttribute('role', 'tablist');\r\n\r\n // Add semantics are remove user focusability for each tab\r\n tabs.forEach((tab, i) => {\r\n tab.setAttribute('role', 'tab');\r\n tab.setAttribute('id', `tab${key}_${(i + 1)}`);\r\n tab.setAttribute('tabindex', '-1');\r\n tab.parentElement?.setAttribute('role', 'presentation');\r\n\r\n // Handle clicking of tabs for mouse users\r\n const tabClickEvent = (e: MouseEvent) => {\r\n e.preventDefault();\r\n const currentTab = tablist.querySelector('[aria-selected]');\r\n if (e.currentTarget !== currentTab) {\r\n // eslint-disable-next-line max-len\r\n switchTab(tabs, panels, currentTab, e.currentTarget as HTMLElement, tabbed.classList, true, (tabIndex) => {\r\n callback(tabIndex);\r\n });\r\n }\r\n };\r\n\r\n tab.removeEventListener('click', tabClickEvent);\r\n tab.addEventListener('click', tabClickEvent);\r\n\r\n // Handle keydown events for keyboard users\r\n const tabKeyEvent = (e: KeyboardEvent) => {\r\n // Get the index of the current tab in the tabs node list\r\n const index = Array.prototype.indexOf.call(tabs, e.currentTarget);\r\n // Work out which key the user is pressing and\r\n // Calculate the new tab's index where appropriate\r\n let dir: number | string | null = null;\r\n if (e.key === 'ArrowLeft') {\r\n dir = index - 1;\r\n }\r\n if (e.key === 'ArrowRight') {\r\n dir = index + 1;\r\n }\r\n if (e.key === 'ArrowDown') {\r\n dir = 'down';\r\n }\r\n if (dir !== null) {\r\n e.preventDefault();\r\n // If the down key is pressed, move focus to the open panel,\r\n // otherwise switch to the adjacent tab\r\n if (dir === 'down') {\r\n panels[i].focus();\r\n } else if (tabs[dir]) {\r\n // eslint-disable-next-line max-len\r\n switchTab(tabs, panels, e.currentTarget as Element, tabs[dir], tabbed.classList, true, (tabIndex) => {\r\n callback(tabIndex);\r\n });\r\n }\r\n }\r\n };\r\n tab.removeEventListener('keydown', tabKeyEvent);\r\n tab.addEventListener('keydown', tabKeyEvent);\r\n });\r\n\r\n // Add tab panel semantics and hide them all\r\n panels.forEach((panel: HTMLElement, i: number) => {\r\n panel.setAttribute('tabindex', '-1');\r\n panel.setAttribute('aria-labelledby', tabs[i].id);\r\n // eslint-disable-next-line no-param-reassign\r\n panel.hidden = true;\r\n panel.setAttribute('role', 'tabpanel');\r\n });\r\n\r\n // Initially activate the first tab and reveal the first tab panel\r\n if (initial > -1) {\r\n switchTab(tabs, panels, null, tabs[initial], tabbed.classList, focus);\r\n }\r\n};\r\n\r\nconst setTabs = (tabbedObjects: ITabbedObject[]): void => {\r\n tabbedObjects.forEach((tabObject: ITabbedObject, key: number): void => {\r\n const { rendered, domElement } = tabObject;\r\n if (isBelowViewportLimit(domElement.classList)) {\r\n if (!rendered) {\r\n const focus = domElement.getAttribute('data-focus-onload');\r\n const dataInitial = domElement.getAttribute('data-initial-tab');\r\n const initial = dataInitial ? parseInt(dataInitial, 10) : 0;\r\n setTabbedContent(key, domElement, initial, focus !== 'false');\r\n tabObject.rendered = true;\r\n }\r\n } else if (rendered) {\r\n destroyTabs(domElement);\r\n tabObject.rendered = false;\r\n }\r\n });\r\n};\r\n\r\nexport {\r\n setTabbedContent,\r\n isBelowViewportLimit,\r\n destroyTabs,\r\n destroySwitches,\r\n setTabs,\r\n};\r\n", "/* eslint-disable max-len */\r\n/* eslint-env browser */\r\n/* eslint-disable import/prefer-default-export */\r\n\r\nimport { isViewportBelow} from './helpers';\r\n\r\nconst setContentToggle = (\r\n content: Element,\r\n onClick?: ((content: HTMLElement, button: HTMLButtonElement) => void) | undefined,\r\n beforeCallback?: ((content: HTMLElement, button: HTMLButtonElement) => void) | undefined,\r\n afterCallback?: ((content: HTMLElement, button: HTMLButtonElement) => void) | undefined,\r\n): CleanUpPair[] => {\r\n const cleanUp: CleanUpPair[] = [];\r\n const setContentClose = (button: HTMLElement, contentClose: HTMLElement, focus: boolean): () => void => {\r\n if (focus) {\r\n contentClose.focus();\r\n }\r\n const click = () => {\r\n content.setAttribute('hidden', 'hidden');\r\n button.removeAttribute('hidden');\r\n button.setAttribute('aria-expanded', 'false');\r\n button.focus();\r\n };\r\n contentClose.addEventListener('click', click);\r\n return click;\r\n };\r\n\r\n const button = content?.parentElement?.querySelector('.content-toggle__toggle') as HTMLElement;\r\n const contentClose = content.querySelectorAll('.content-toggle__close');\r\n \r\n const setBPModiferClass = () => {\r\n if (isViewportBelow('--bp-medium') && content.classList.contains('content-toggle__content--always-show-on-medium')) {\r\n button.removeAttribute(\"hidden\");\r\n content.setAttribute(\"hidden\", \"hidden\");\r\n } \r\n else if (isViewportBelow('--bp-wide') && content.classList.contains('content-toggle__content--always-show-on-wide')) {\r\n button.removeAttribute(\"hidden\");\r\n content.setAttribute(\"hidden\", \"hidden\");\r\n } \r\n else if (isViewportBelow('--bp-max-width') && content.classList.contains('content-toggle__content--always-show-on-max-width')) {\r\n button.removeAttribute(\"hidden\");\r\n content.setAttribute(\"hidden\", \"hidden\");\r\n \r\n } \r\n else (\r\n content.classList.contains('content-toggle__content--always-show-on-medium') ||\r\n content.classList.contains('content-toggle__content--always-show-on-wide') ||\r\n content.classList.contains('content-toggle__content--always-show-on-max-width')\r\n )\r\n }\r\n window.addEventListener('resize', () => {\r\n setBPModiferClass();\r\n });\r\n\r\n const setBPModifierPopupClass = () => {\r\n document.addEventListener('click', (event) => {\r\n const eventTarget = event.target as HTMLElement;\r\n const doesNotContainContent = !eventTarget.classList.contains('content-toggle__content')\r\n const doesNotContainButton = !eventTarget.classList.contains('content-toggle__toggle')\r\n const doesNotContainSpan = !eventTarget.classList.contains('profile-header__info__contact__toggle__button')\r\n if (doesNotContainContent && doesNotContainButton && doesNotContainSpan) {\r\n if (!isViewportBelow('--bp-medium') && content.classList.contains('content-toggle__content--is-popover--on-medium')) {\r\n button.removeAttribute(\"hidden\");\r\n content.setAttribute(\"hidden\", \"hidden\");\r\n button.setAttribute(\"aria-expanded\", \"false\");\r\n button.focus();\r\n } else if (!isViewportBelow('--bp-wide') && content.classList.contains('content-toggle__content--is-popover--on-wide')) {\r\n button.removeAttribute(\"hidden\");\r\n content.setAttribute(\"hidden\", \"hidden\");\r\n button.setAttribute(\"aria-expanded\", \"false\");\r\n button.focus();\r\n } else if (!isViewportBelow('--bp-max-width') && content.classList.contains('content-toggle__content--is-popover--on-max-width')) {\r\n button.removeAttribute(\"hidden\");\r\n content.setAttribute(\"hidden\", \"hidden\");\r\n button.setAttribute(\"aria-expanded\", \"false\");\r\n button.focus(); \r\n }\r\n else if (content.classList.contains('content-toggle__content--is-popover')) {\r\n button.removeAttribute(\"hidden\");\r\n content.setAttribute(\"hidden\", \"hidden\");\r\n button.setAttribute(\"aria-expanded\", \"false\");\r\n button.focus();\r\n }\r\n }\r\n });\r\n }\r\n\r\n setBPModifierPopupClass(); \r\n setBPModiferClass();\r\n\r\n if (button) {\r\n const clickEvent = () => {\r\n const ariaExpanded = button.getAttribute('aria-expanded');\r\n // Til toolbar: hvis man klikker p\u00E5 en knap, der ikke er foldet ud\r\n // S\u00E5 lukker vi alle \u00E5bne content-toggles\r\n if (typeof beforeCallback === 'function' && ariaExpanded === 'false') {\r\n beforeCallback(content as HTMLElement, button as HTMLButtonElement);\r\n }\r\n // Og s\u00E5 g\u00E5r vi i gang med folde-ud-logikken\r\n button.setAttribute('aria-expanded', ariaExpanded === 'false' ? 'true' : 'false');\r\n if (ariaExpanded === 'true') {\r\n content.setAttribute('hidden', 'hidden');\r\n } else {\r\n content.removeAttribute('hidden');\r\n }\r\n\r\n if (typeof onClick === 'function') {\r\n onClick(content as HTMLElement, button as HTMLButtonElement);\r\n }\r\n\r\n if (button.hasAttribute('aria-haspopup')) {\r\n button.setAttribute('hidden', 'hidden');\r\n contentClose.forEach((cc) => {\r\n setContentClose(button, cc as HTMLElement, true);\r\n });\r\n }\r\n\r\n // Det der sker efter folde-logikken\r\n if (typeof afterCallback === 'function') {\r\n afterCallback(content as HTMLElement, button as HTMLButtonElement);\r\n }\r\n };\r\n\r\n button.addEventListener('click', clickEvent);\r\n // Altid tilf\u00F8j denne f\u00F8rst!\r\n cleanUp.push({\r\n element: button,\r\n clickEvent,\r\n });\r\n\r\n contentClose.forEach((cc) => {\r\n const btnClick = setContentClose(button, cc as HTMLElement, false);\r\n cleanUp.push({\r\n element: cc,\r\n clickEvent: btnClick,\r\n });\r\n });\r\n }\r\n return cleanUp;\r\n};\r\n\r\nexport {\r\n setContentToggle, \r\n};\r\n", "/* eslint-disable max-len */\r\nimport { convertRemToPixels, isElementWithClassNameInEventPath, isViewportBelow } from './helpers';\r\n\r\nconst lockBodyScroll = (): void => {\r\n const body = document.querySelector('body');\r\n if (isViewportBelow('--bp-medium') || isViewportBelow('--bp-low-height')) {\r\n body?.classList.add('body--no-scroll');\r\n }\r\n};\r\n\r\nconst unlockBodyScroll = (): void => {\r\n const body = document.querySelector('body');\r\n body?.classList.remove('body--no-scroll');\r\n};\r\n\r\n/* eslint-env browser */\r\nconst closeAllContentTogglesInToolbar = (toolbar: HTMLElement): void => {\r\n const contentToggles = toolbar.querySelectorAll('.content-toggle__toggle');\r\n contentToggles.forEach((toggle) => {\r\n const content = toggle.parentElement?.querySelector('.content-toggle__content');\r\n toggle.setAttribute('aria-expanded', 'false');\r\n content?.setAttribute('hidden', 'hidden');\r\n });\r\n};\r\n\r\nconst setOverflow = (toolbarElement: Element): void => {\r\n if (!toolbarElement.classList.contains('toolbar--no-collapse')) {\r\n toolbarElement.classList.remove('toolbar--toggled');\r\n }\r\n toolbarElement.classList.remove('toolbar--fully-overflown');\r\n toolbarElement.classList.remove('toolbar--has-popout');\r\n const toolbarItemsParent = toolbarElement.querySelector('.toolbar__items');\r\n const toolbarItems = toolbarItemsParent?.children as HTMLCollection;\r\n const isOverflownClass = 'toolbar__item--is-overflown';\r\n const hasOverflowClass = 'toolbar--has-overflow';\r\n let hasOverflown = false;\r\n\r\n let overflownCount = 0;\r\n const addOverflowClass = (item: HTMLElement, index: number) => {\r\n if (item) {\r\n const top = item.offsetTop;\r\n if (top > 25) {\r\n item.classList.add(isOverflownClass);\r\n toolbarElement.classList.add(hasOverflowClass);\r\n hasOverflown = true;\r\n overflownCount += 1;\r\n } else {\r\n item.classList.remove(isOverflownClass);\r\n }\r\n\r\n if (!hasOverflown) {\r\n toolbarElement.classList.remove(hasOverflowClass);\r\n } else if (index - 1 >= 0) {\r\n addOverflowClass(toolbarItems[index - 1] as HTMLElement, index - 1);\r\n }\r\n }\r\n };\r\n\r\n addOverflowClass(toolbarItems[toolbarItems.length - 1] as HTMLElement, toolbarItems.length - 1);\r\n\r\n if (overflownCount > 0 && overflownCount === toolbarItems.length) {\r\n toolbarElement.classList.add('toolbar--fully-overflown');\r\n }\r\n};\r\n\r\nconst setToolbarToggle = (toolbar: HTMLElement): ExtendedCleanUpPair[] => {\r\n const cleanUp: ExtendedCleanUpPair[] = [];\r\n const buttons = toolbar.querySelectorAll('.toolbar__toggle');\r\n buttons.forEach((button) => {\r\n const clickEvent = () => {\r\n button?.parentElement?.classList.toggle('toolbar--toggled');\r\n const ariaExpanded = button.getAttribute('aria-expanded');\r\n if (ariaExpanded !== 'true') {\r\n const focusable = 'a.toolbar__item--is-overflown, button.toolbar__item--is-overflown, input.toolbar__item--is-overflown, select.toolbar__item--is-overflown, .toolbar__item--is-overflown a, .toolbar__item--is-overflown button, .toolbar__item--is-overflown input, .toolbar__item--is-overflown select';\r\n const firstWithOverflow = button?.parentElement?.querySelector(focusable) as HTMLElement;\r\n if (firstWithOverflow) {\r\n setTimeout(() => {\r\n firstWithOverflow.focus();\r\n }, 0);\r\n }\r\n }\r\n button.setAttribute('aria-expanded', ariaExpanded === 'false' ? 'true' : 'false');\r\n };\r\n\r\n cleanUp.push({\r\n element: button,\r\n clickEvent,\r\n });\r\n button.addEventListener('click', clickEvent);\r\n });\r\n return cleanUp;\r\n};\r\n\r\nconst setToolbar = (\r\n toolbar: HTMLElement,\r\n onCloseContentToggle: (toolbarElement: HTMLElement) => void,\r\n setOverflowOnly = true,\r\n): ExtendedCleanUpPair[] => {\r\n let cleanUp: ExtendedCleanUpPair[] = [];\r\n\r\n setOverflow(toolbar);\r\n onCloseContentToggle(toolbar);\r\n cleanUp = cleanUp.concat(setToolbarToggle(toolbar));\r\n\r\n if (!setOverflowOnly) {\r\n const bodyClickEvent = (event: Event) => {\r\n if (!(event.target as HTMLElement).classList.contains('content-toggle__toggle')\r\n && !isElementWithClassNameInEventPath(event as MouseEvent, 'content-toggle__content')) {\r\n onCloseContentToggle(toolbar);\r\n }\r\n };\r\n\r\n const escKeyEvent = (event: Event) => {\r\n if ((event as KeyboardEvent).key === 'Escape') {\r\n if (event.target && (event.target as HTMLElement).getAttribute('type') !== 'search') {\r\n onCloseContentToggle(toolbar);\r\n }\r\n }\r\n };\r\n\r\n const body = document.querySelector('body');\r\n\r\n cleanUp.push({\r\n element: body as Element,\r\n clickEvent: bodyClickEvent,\r\n });\r\n\r\n cleanUp.push({\r\n element: window,\r\n keyUpEvent: escKeyEvent,\r\n });\r\n\r\n body?.addEventListener('click', bodyClickEvent);\r\n window.addEventListener('keyup', escKeyEvent);\r\n }\r\n\r\n return cleanUp;\r\n};\r\n\r\nconst findToolbar = (element: HTMLElement): HTMLElement => {\r\n const parent = element.parentElement;\r\n if (parent) {\r\n if (parent.classList.contains('toolbar')) {\r\n return parent;\r\n }\r\n return findToolbar(parent);\r\n }\r\n return element;\r\n};\r\n\r\nconst contentToggleEdgeHandling = (element: HTMLElement): void => {\r\n if (!isViewportBelow('--bp-medium') && !isViewportBelow('--bp-low-height')) {\r\n const allowedDistance = convertRemToPixels(parseInt(getComputedStyle(document.documentElement).getPropertyValue('--toolbar-popout-allowed-edge-distance').replace('rem,', ''), 10));\r\n const popoutX = parseInt(getComputedStyle(element).width.replace('px', ''), 10);\r\n const popoutWidth = element.getBoundingClientRect().x;\r\n\r\n const distance = document.body.offsetWidth - allowedDistance - popoutX - popoutWidth;\r\n\r\n if (distance < 0) {\r\n element.style.setProperty('--toolbar-popout-edge-overflow', `${distance}px`);\r\n }\r\n }\r\n};\r\n\r\nexport {\r\n setToolbar,\r\n setOverflow,\r\n findToolbar,\r\n closeAllContentTogglesInToolbar,\r\n contentToggleEdgeHandling,\r\n lockBodyScroll,\r\n unlockBodyScroll,\r\n};\r\n", "// Scroller 80% p\u00E5 horisontal scroll til h\u00F8jre og s\u00E6tter knappen disabled n\u00E5r man rammer bunden\r\nconst horizontalScrollButtonNext = (nextButtons: NodeListOf<Element>): void => {\r\n if (nextButtons) {\r\n nextButtons.forEach((nextButton) => {\r\n const topElem = nextButton?.parentElement?.parentElement?.parentElement?.parentElement;\r\n if (topElem) {\r\n const scrollElements = topElem.querySelectorAll('.horizontal-scroll__scrollable-content');\r\n const switch__segments = topElem.querySelectorAll('.switch__segment');\r\n scrollElements.forEach((scrollElement) => { \r\n if (scrollElement) {\r\n nextButton.addEventListener('click', () => {\r\n // Scroller 80% af den synlige bredde p\u00E5 horizontal scroll til h\u00F8jre\r\n const scrollAmount = 0.8 * scrollElement.clientWidth;\r\n scrollElement.scrollLeft += scrollAmount;\r\n });\r\n // G\u00F8r knappen aktiv hvis scroll har ramt bunden\r\n scrollElement.addEventListener('scroll', () => {\r\n if ((scrollElement.scrollLeft + scrollElement.clientWidth) >= (scrollElement.scrollWidth * 0.98)) {\r\n disableButton(nextButton);\r\n } else if (scrollElement.scrollLeft + scrollElement.clientWidth < scrollElement.scrollWidth) {\r\n activateButton(nextButton);\r\n }\r\n });\r\n // Reset af knap ved flere tabs af horizontal scroll\r\n if (switch__segments) {\r\n switch__segments.forEach(switch__segment => {\r\n switch__segment.addEventListener('click', () => {\r\n activateButton(nextButton);\r\n scrollElement.scrollLeft = 0;\r\n })\r\n });\r\n }\r\n }\r\n });\r\n }\r\n });\r\n }\r\n };\r\n \r\n // Scroller 80% p\u00E5 horisontal scroll til venstre og s\u00E6tter knappen disabled n\u00E5r man rammer toppen\r\n const horizontalScrollButtonPrevious = (previousButtons: NodeListOf<Element>): void => {\r\n if (previousButtons) {\r\n previousButtons.forEach((previousButton) => {\r\n const topElem = previousButton?.parentElement?.parentElement?.parentElement?.parentElement;\r\n if (topElem) {\r\n const scrollElements = topElem.querySelectorAll('.horizontal-scroll__scrollable-content');\r\n const switch__segments = topElem.querySelectorAll('.switch__segment');\r\n scrollElements.forEach((scrollElement) => { \r\n if (scrollElement) {\r\n previousButton.addEventListener('click', () => {\r\n // Scroller 80% af den synlige bredde p\u00E5 horizontal scroll til venstre\r\n const scrollAmount = 0.8 * scrollElement.clientWidth;\r\n scrollElement.scrollLeft -= scrollAmount;\r\n });\r\n // G\u00F8r knappen aktiv hvis scroll har ramt toppen\r\n scrollElement.addEventListener('scroll', () => {\r\n if (scrollElement.scrollLeft <= 0) {\r\n disableButton(previousButton);\r\n } else if (scrollElement.scrollLeft > 0) {\r\n activateButton(previousButton);\r\n }\r\n });\r\n }\r\n // Reset af knap ved flere tabs af horizontal scroll\r\n if (switch__segments) {\r\n switch__segments.forEach(switch__segment => {\r\n switch__segment.addEventListener('click', () => {\r\n disableButton(previousButton);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n };\r\n\r\n function activateButton(button) {\r\n button.classList.remove('visually-disabled');\r\n button.setAttribute('aria-disabled', 'false');\r\n }\r\n \r\n function disableButton(button) {\r\n button.classList.add('visually-disabled');\r\n button.setAttribute('aria-disabled', 'true');\r\n }\r\n\r\n export {\r\n horizontalScrollButtonNext,\r\n horizontalScrollButtonPrevious,\r\n };", "function setupAutoExpand(textarea: HTMLTextAreaElement | null): void {\r\n if (textarea) {\r\n textarea.addEventListener(\"input\", function (this: HTMLTextAreaElement, event: Event) {\r\n const parentNode = textarea?.parentNode as HTMLElement | null;\r\n \r\n if (parentNode && parentNode.dataset) {\r\n parentNode.dataset.value = this.value;\r\n }\r\n });\r\n }\r\n }\r\n\r\n export {\r\n setupAutoExpand\r\n };", "function setupCharacterCount(\r\n element: HTMLElement,\r\n type: HTMLTextAreaElement | HTMLInputElement | null,\r\n length: string | null,\r\n countdown: HTMLElement | null,\r\n countMessageOverflow: HTMLElement | null\r\n ): void {\r\n let text = type?.value;\r\n let charCount = text?.length;\r\n if (type && text) {\r\n type.textContent = text;\r\n charCount = text?.length;\r\n if (charCount && countdown && countMessageOverflow) {\r\n if (length) {\r\n const lengthNumber = parseInt(length, 10);\r\n let remainingChars = lengthNumber - charCount;\r\n let absoluteValue = Math.abs(remainingChars);\r\n // Update span 2 with remaining number of chars\r\n if(countMessageOverflow.textContent) {\r\n countMessageOverflow.textContent = countMessageOverflow.textContent.replace(/\\d+/, String(absoluteValue));\r\n }\r\n // Update span 3 with remaining number of chars\r\n if(countdown.textContent) {\r\n countdown.textContent = countdown.textContent.replace(/\\d+/, String(absoluteValue));\r\n }\r\n // Adds overflow class if remaining chars < 0 \r\n if (remainingChars < 0) {\r\n element.classList.add('form__field__character-count--overflow');\r\n element.setAttribute(\"aria-invalid\", \"true\");\r\n }\r\n // Remove overflow class if remaining chars >= 0 \r\n if (remainingChars >= 0) {\r\n element.classList.remove('form__field__character-count--overflow');\r\n element.setAttribute(\"aria-invalid\", \"false\");\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function charCounter(element: HTMLElement | null): void { \r\n if (element) {\r\n const textArea = element.querySelector(\"textarea\");\r\n const input = element.querySelector(\"input\");\r\n const recommendedLength = element.getAttribute('data-recommended-length');\r\n const allowedLength = element.getAttribute('data-allowed-length');\r\n let countdown = element.querySelector('.form__field__character-count__info__count-down');\r\n let countMessageOverflow = element.querySelector('.form__field__character-count__info__overflow-count');\r\n\r\n // Textarea intial page load\r\n setupCharacterCount(element as HTMLElement, textArea as HTMLTextAreaElement, recommendedLength as string, countdown as HTMLElement, countMessageOverflow as HTMLElement);\r\n setupCharacterCount(element as HTMLElement, textArea as HTMLTextAreaElement, allowedLength as string, countdown as HTMLElement, countMessageOverflow as HTMLElement);\r\n\r\n // Input intial page load\r\n setupCharacterCount(element as HTMLElement, input as HTMLInputElement, recommendedLength as string, countdown as HTMLElement, countMessageOverflow as HTMLElement);\r\n setupCharacterCount(element as HTMLElement, input as HTMLInputElement, allowedLength as string, countdown as HTMLElement, countMessageOverflow as HTMLElement);\r\n\r\n // Update textarea on input\r\n textArea?.addEventListener('input', function() { \r\n setupCharacterCount(element as HTMLElement, textArea as HTMLTextAreaElement, recommendedLength as string, countdown as HTMLElement, countMessageOverflow as HTMLElement);\r\n setupCharacterCount(element as HTMLElement, textArea as HTMLTextAreaElement, allowedLength as string, countdown as HTMLElement, countMessageOverflow as HTMLElement);\r\n })\r\n\r\n // Update input field on input\r\n input?.addEventListener('input', function() { \r\n setupCharacterCount(element as HTMLElement, input as HTMLInputElement, recommendedLength as string, countdown as HTMLElement, countMessageOverflow as HTMLElement);\r\n setupCharacterCount(element as HTMLElement, input as HTMLInputElement, allowedLength as string, countdown as HTMLElement, countMessageOverflow as HTMLElement);\r\n })\r\n }\r\n }\r\n\r\n export {\r\n charCounter,\r\n setupCharacterCount\r\n };", "/* eslint-disable import/prefer-default-export */\r\nconst setInlineSelectLabel = (formField: Element): void => {\r\n const select = formField.querySelector('select');\r\n const label = formField.querySelector(`label[for=\"${select?.getAttribute('id')}\"]`);\r\n if (label) {\r\n const labelWidth = getComputedStyle(label).width;\r\n select?.style.setProperty('--label-width', labelWidth);\r\n }\r\n};\r\n\r\nfunction dropdownIconToggle(element: HTMLElement): void { \r\n let dropdownInactive = true;\r\n element.addEventListener('click', function (event) {\r\n if (dropdownInactive) {\r\n element.classList.add('dropdown-icon--active');\r\n element.classList.remove('dropdown-icon--inactive');\r\n dropdownInactive = false;\r\n } else {\r\n element.classList.add('dropdown-icon--inactive');\r\n element.classList.remove('dropdown-icon--active');\r\n dropdownInactive = true;\r\n }\r\n \r\n const handleOutsideClick = (event) => {\r\n if (!element.contains(event.target)) {\r\n element.classList.add('dropdown-icon--inactive');\r\n element.classList.remove('dropdown-icon--active');\r\n document.removeEventListener('click', handleOutsideClick);\r\n dropdownInactive = true;\r\n }\r\n };\r\n \r\n document.addEventListener('click', handleOutsideClick);\r\n });\r\n }\r\n\r\n\r\n\r\nexport {\r\n setInlineSelectLabel,\r\n dropdownIconToggle\r\n};\r\n", "// Centers stepper labels if they are 4 chars or less\r\nfunction stepperLabelsCenter(element: HTMLElement): void { \r\n if (element && element.textContent) {\r\n if (element.textContent.length <= 4) {\r\n element.style.textAlign = 'center';\r\n }\r\n }\r\n}\r\n\r\nexport {\r\n stepperLabelsCenter\r\n };\r\n ", "/* eslint-disable no-param-reassign */\r\n/* eslint-env browser */\r\nimport ready from '../components/ready';\r\nimport {\r\n setResponsiveNav,\r\n setResponsiveToggle, setCopyToClipboard,\r\n} from '../components/nav';\r\nimport copyHexCode from '../components/copy-hex-code';\r\nimport { isElementWithClassNameInEventPath, setMetaThemeColor, setHorizontalScroll } from '../components/helpers';\r\nimport { setResponsiveTable } from '../components/table';\r\nimport { setTabs } from '../components/tabs';\r\nimport { setContentToggle } from '../components/content-toggle';\r\nimport {\r\n closeAllContentTogglesInToolbar,\r\n contentToggleEdgeHandling,\r\n findToolbar,\r\n lockBodyScroll,\r\n unlockBodyScroll,\r\n} from '../components/toolbar';\r\nimport { horizontalScrollButtonNext, horizontalScrollButtonPrevious } from '../components/horizontal-scroll-btn';\r\nimport { setupAutoExpand } from '../components/text-area';\r\nimport { charCounter } from '../components/char-counter';\r\nimport { dropdownIconToggle } from '../components/form';\r\nimport { stepperLabelsCenter } from '../components/stepper';\r\n\r\nlet windowInnerWidth = 0;\r\n\r\nready(() => {\r\n const tabbedContent = document.querySelectorAll('.tabbed-content');\r\n const tabbedObjects: ITabbedObject[] = [];\r\n tabbedContent.forEach((tab) => tabbedObjects.push({\r\n domElement: tab,\r\n rendered: false,\r\n }));\r\n setTabs(tabbedObjects);\r\n setMetaThemeColor();\r\n\r\n const navElements = document.querySelectorAll('.nav:not(.nav--vertical)');\r\n navElements.forEach((n) => setResponsiveNav(navElements, n));\r\n setResponsiveToggle(navElements);\r\n\r\n const tables = document.querySelectorAll('.table--wrap-medium-width, .table--wrap-default-width');\r\n tables.forEach((table) => setResponsiveTable(table));\r\n\r\n // Progress bar animation\r\n const animationButtons = document.querySelectorAll('.button');\r\n const animatedProgressBars = document.querySelectorAll('.progress-bar__progress.progress-bar__progress--confirm.progress-bar__progress--transistion-from-start');\r\n animationButtons.forEach((button) => {\r\n button.addEventListener('click', () => {\r\n animatedProgressBars.forEach((progressBar) => {\r\n progressBar.classList.toggle('progress-bar__progress--transistion-from-start');\r\n });\r\n });\r\n });\r\n\r\n // Character counter for form input\r\n const elements = document.querySelectorAll('.form__field__character-count');\r\n elements.forEach((element) => {\r\n charCounter(element as HTMLElement);\r\n });\r\n\r\n // Textarea input\r\n const textarea = document.getElementById(\"autoexpand\") as HTMLTextAreaElement | null;\r\n setupAutoExpand(textarea);\r\n window.onload = function () {\r\n setupAutoExpand(textarea);\r\n };\r\n\r\n // Dropdown box icon toggle\r\n const dropDownElements: NodeListOf<HTMLElement> = document.querySelectorAll('.form__field select, .form__field__combo-box__field');\r\n dropDownElements.forEach((element) => {\r\n dropdownIconToggle(element);\r\n });\r\n\r\n // Centers stepper labels when they are 4 chars or less\r\n const stepperLabels : NodeListOf<HTMLElement> = document.querySelectorAll('.stepper__item__label');\r\n stepperLabels.forEach((element) => {\r\n stepperLabelsCenter(element);\r\n });\r\n\r\n\r\n // Find alle copy-to-clipboard elementer\r\n const ctc = document.querySelectorAll('.copy-to-clipboard');\r\n ctc.forEach((element) => setCopyToClipboard(element as HTMLElement, document.querySelector('html')?.getAttribute('lang') === 'en' ? 'Hexcode copied!' : 'Hexkode kopieret!'));\r\n copyHexCode();\r\n\r\n //const toggles = document.querySelectorAll('.box .content-toggle__content, .profile-header .content-toggle__content, .design-documentation .content-toggle__content');\r\n const toggles = document.querySelectorAll('.content-toggle__content:not(.toolbar .content-toggle__content)');\r\n toggles.forEach((toggle) => {\r\n setContentToggle(toggle);\r\n });\r\n \r\n // Hortizontal scroll buttons\r\n const scrollButtonsNext = document.querySelectorAll('.button.button--small.button--icon.button--icon--hide-label.icon-next');\r\n const scrollButtonsPrevious = document.querySelectorAll('.button.button--small.button--icon.button--icon--hide-label.icon-previous');\r\n horizontalScrollButtonNext(scrollButtonsNext);\r\n horizontalScrollButtonPrevious(scrollButtonsPrevious);\r\n\r\n const horizontalScroll = document.querySelectorAll('.horizontal-scroll');\r\n horizontalScroll.forEach((hs) => {\r\n setHorizontalScroll(hs as HTMLElement);\r\n window.addEventListener('resize', () => {\r\n setHorizontalScroll(hs as HTMLElement);\r\n });\r\n });\r\n\r\n const switchSegments = document.querySelectorAll('.switch__segment');\r\n switchSegments.forEach((switchSegment) => {\r\n switchSegment.addEventListener('click', () => {\r\n const horizontalScrollTabbed = document.querySelectorAll('.horizontal-scroll');\r\n horizontalScrollTabbed.forEach((hsTabbed) => {\r\n setHorizontalScroll(hsTabbed as HTMLElement);\r\n });\r\n });\r\n });\r\n \r\n // Kursuskatalog\r\n const togglesInToolbars = document.querySelectorAll('.toolbar .content-toggle__content');\r\n togglesInToolbars.forEach((toggle) => {\r\n setContentToggle(\r\n toggle,\r\n (popout: HTMLElement) => {\r\n contentToggleEdgeHandling(popout);\r\n lockBodyScroll();\r\n },\r\n (content: HTMLElement) => closeAllContentTogglesInToolbar(findToolbar(content)),\r\n (content: HTMLElement, button: HTMLButtonElement) => {\r\n const ariaExpanded = button.getAttribute('aria-expanded');\r\n const toolbar = findToolbar(content);\r\n if (ariaExpanded === 'true') {\r\n toolbar?.classList.add('toolbar--has-popout');\r\n } else {\r\n toolbar?.classList.remove('toolbar--has-popout');\r\n }\r\n\r\n content.addEventListener('click', (event: MouseEvent) => {\r\n if ((event.target as HTMLElement).classList.contains('toolbar__popout')\r\n && !isElementWithClassNameInEventPath(event as MouseEvent, 'toolbar__filter__content')) {\r\n closeAllContentTogglesInToolbar(toolbar);\r\n unlockBodyScroll();\r\n }\r\n });\r\n },\r\n );\r\n });\r\n\r\n window.addEventListener('load', () => {\r\n windowInnerWidth = window.innerWidth;\r\n });\r\n\r\n window.addEventListener('resize', () => {\r\n if (windowInnerWidth > 0 && window.innerWidth !== windowInnerWidth) {\r\n windowInnerWidth = window.innerWidth;\r\n navElements.forEach((n) => setResponsiveNav(navElements, n));\r\n setTabs(tabbedObjects);\r\n }\r\n });\r\n});\r\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ready", "fn", "ready_default", "copyToClipboard", "str", "isElementWithClassNameInEventPath", "event", "className", "found", "p", "setMetaThemeColor", "body", "bgColor", "existingMeta", "meta", "getBaseFontSize", "convertRemToPixels", "rem", "isViewportBelow", "mediaQuery", "viewportWidth", "mediaQueryValue", "overflowsX", "element", "setHorizontalScroll", "element", "content", "overflowsX", "findNav", "element", "parent", "closeResponsiveNav", "navElements", "keepOpen", "navToggledClass", "n", "button", "setResponsiveToggle", "toggleMenu", "hideItems", "navItems", "lastNavItem", "firstElement", "transitionListener", "cleanUp", "clickEvent", "nav", "ariaExpanded", "setResponsiveNav", "navElement", "navItemsClass", "navItemsParent", "isOverflownClass", "hasOverflowClass", "isActiveClass", "hasOverflown", "i", "isActive", "bodyClickEvent", "e", "isElementWithClassNameInEventPath", "setClickMessage", "text", "copyElement", "clickElement", "ctcThis", "listener", "copyToClipboard", "ctcThisMessage", "setCopyToClipboard", "element", "btn", "copyHexCode", "ctc", "colorElements", "button", "color", "computedStyle", "hexColor", "rgbToHex", "copyToClipboard", "rgb", "rgbArray", "hex", "value", "hexValue", "copy_hex_code_default", "setResponsiveTable", "table", "head", "body", "foot", "headers", "h", "rowContainers", "rc", "tr", "cell", "i", "getMediaWidthBasedOnModifier", "classList", "isBelowViewportLimit", "widthInRem", "getBaseFontSize", "mediaWidth", "destroyTabs", "tabbed", "tabs", "panels", "section", "tab", "panel", "switchTab", "tabs", "panels", "oldTab", "newTab", "_", "focus", "callback", "index", "link", "oldIndex", "setTabbedContent", "key", "tabbed", "initial", "tablist", "section", "expandAll", "expandAllEvent", "panel", "tab", "i", "tabClickEvent", "e", "currentTab", "tabIndex", "tabKeyEvent", "dir", "setTabs", "tabbedObjects", "tabObject", "rendered", "domElement", "isBelowViewportLimit", "dataInitial", "destroyTabs", "setContentToggle", "content", "onClick", "beforeCallback", "afterCallback", "cleanUp", "setContentClose", "button", "contentClose", "focus", "click", "setBPModiferClass", "isViewportBelow", "event", "eventTarget", "doesNotContainContent", "doesNotContainButton", "doesNotContainSpan", "clickEvent", "ariaExpanded", "cc", "btnClick", "lockBodyScroll", "body", "isViewportBelow", "unlockBodyScroll", "closeAllContentTogglesInToolbar", "toolbar", "toggle", "content", "findToolbar", "element", "parent", "contentToggleEdgeHandling", "isViewportBelow", "allowedDistance", "convertRemToPixels", "popoutX", "popoutWidth", "distance", "horizontalScrollButtonNext", "nextButtons", "nextButton", "topElem", "scrollElements", "switch__segments", "scrollElement", "scrollAmount", "disableButton", "activateButton", "switch__segment", "horizontalScrollButtonPrevious", "previousButtons", "previousButton", "button", "setupAutoExpand", "textarea", "event", "parentNode", "setupCharacterCount", "element", "type", "length", "countdown", "countMessageOverflow", "text", "charCount", "remainingChars", "absoluteValue", "charCounter", "textArea", "input", "recommendedLength", "allowedLength", "dropdownIconToggle", "element", "dropdownInactive", "event", "handleOutsideClick", "stepperLabelsCenter", "element", "windowInnerWidth", "ready_default", "tabbedContent", "tabbedObjects", "tab", "setTabs", "setMetaThemeColor", "navElements", "n", "setResponsiveNav", "setResponsiveToggle", "table", "setResponsiveTable", "animationButtons", "animatedProgressBars", "button", "progressBar", "element", "charCounter", "textarea", "setupAutoExpand", "dropdownIconToggle", "stepperLabelsCenter", "setCopyToClipboard", "copy_hex_code_default", "toggle", "setContentToggle", "scrollButtonsNext", "scrollButtonsPrevious", "horizontalScrollButtonNext", "horizontalScrollButtonPrevious", "hs", "setHorizontalScroll", "switchSegment", "hsTabbed", "popout", "contentToggleEdgeHandling", "lockBodyScroll", "content", "closeAllContentTogglesInToolbar", "findToolbar", "ariaExpanded", "toolbar", "event", "isElementWithClassNameInEventPath", "unlockBodyScroll"]
|
|
7
|
+
}
|