@ulu/frontend 0.1.0-beta.36 → 0.1.0-beta.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/dist/ulu-frontend.min.css +1 -1
  3. package/dist/ulu-frontend.min.js +2 -2
  4. package/docs-dev/changelog/index.html +137 -30
  5. package/docs-dev/demos/accordion/index.html +60 -30
  6. package/docs-dev/demos/breakpoints-manager/index.html +5186 -0
  7. package/docs-dev/demos/button/index.html +60 -30
  8. package/docs-dev/demos/button-verbose/index.html +60 -30
  9. package/docs-dev/demos/callout/index.html +60 -30
  10. package/docs-dev/demos/captioned-figure/index.html +60 -30
  11. package/docs-dev/demos/card/index.html +76 -46
  12. package/docs-dev/demos/card-grid/index.html +60 -30
  13. package/docs-dev/demos/css-icons/index.html +60 -30
  14. package/docs-dev/demos/data-grid/index.html +60 -30
  15. package/docs-dev/demos/data-table/index.html +160 -130
  16. package/docs-dev/demos/details-group/index.html +60 -30
  17. package/docs-dev/demos/file-save/index.html +60 -30
  18. package/docs-dev/demos/flipcard/index.html +60 -30
  19. package/docs-dev/demos/form-theme/index.html +60 -30
  20. package/docs-dev/demos/index.html +60 -30
  21. package/docs-dev/demos/list-inline/index.html +60 -30
  22. package/docs-dev/demos/list-lines/index.html +60 -30
  23. package/docs-dev/demos/menu-stack/index.html +60 -30
  24. package/docs-dev/demos/modals/index.html +111 -30
  25. package/docs-dev/demos/nav-strip/index.html +60 -30
  26. package/docs-dev/demos/overlay-section/index.html +60 -30
  27. package/docs-dev/demos/popovers/index.html +117 -31
  28. package/docs-dev/demos/print/index.html +60 -30
  29. package/docs-dev/demos/pull-quote/index.html +60 -30
  30. package/docs-dev/demos/rule/index.html +60 -30
  31. package/docs-dev/demos/scrollpoints/index.html +60 -30
  32. package/docs-dev/demos/spoke-spinner/index.html +60 -30
  33. package/docs-dev/demos/sticky-list/index.html +60 -30
  34. package/docs-dev/demos/tabs/index.html +60 -30
  35. package/docs-dev/demos/tag/index.html +60 -30
  36. package/docs-dev/demos/theme-toggle/index.html +60 -30
  37. package/docs-dev/demos/tiles/index.html +60 -30
  38. package/docs-dev/demos/tooltip/index.html +60 -30
  39. package/docs-dev/guide/building-stylesheet/index.html +60 -30
  40. package/docs-dev/guide/developing-ulu-scss-module/index.html +60 -30
  41. package/docs-dev/guide/index.html +60 -30
  42. package/docs-dev/index.html +60 -30
  43. package/docs-dev/javascript/events/index.html +60 -30
  44. package/docs-dev/javascript/index.html +60 -30
  45. package/docs-dev/javascript/settings/index.html +132 -36
  46. package/docs-dev/javascript/ui-breakpoints/index.html +75 -45
  47. package/docs-dev/javascript/ui-collapsible/index.html +60 -30
  48. package/docs-dev/javascript/ui-details-group/index.html +60 -30
  49. package/docs-dev/javascript/ui-dialog/index.html +60 -30
  50. package/docs-dev/javascript/ui-flipcard/index.html +60 -30
  51. package/docs-dev/javascript/ui-grid/index.html +60 -30
  52. package/docs-dev/javascript/ui-modal-builder/index.html +60 -30
  53. package/docs-dev/javascript/ui-overflow-scroller/index.html +60 -30
  54. package/docs-dev/javascript/ui-overflow-scroller-pager/index.html +60 -30
  55. package/docs-dev/javascript/ui-page/index.html +60 -30
  56. package/docs-dev/javascript/ui-popover/index.html +60 -30
  57. package/docs-dev/javascript/ui-print/index.html +60 -30
  58. package/docs-dev/javascript/ui-print-details/index.html +60 -30
  59. package/docs-dev/javascript/ui-programmatic-modal/index.html +60 -30
  60. package/docs-dev/javascript/ui-proxy-click/index.html +60 -30
  61. package/docs-dev/javascript/ui-resizer/index.html +60 -30
  62. package/docs-dev/javascript/ui-scroll-slider/index.html +60 -30
  63. package/docs-dev/javascript/ui-scrollpoint/index.html +60 -30
  64. package/docs-dev/javascript/ui-slider/index.html +60 -30
  65. package/docs-dev/javascript/ui-tabs/index.html +60 -30
  66. package/docs-dev/javascript/ui-theme-toggle/index.html +60 -30
  67. package/docs-dev/javascript/ui-tooltip/index.html +60 -30
  68. package/docs-dev/javascript/utils-class-logger/index.html +60 -30
  69. package/docs-dev/javascript/utils-css/index.html +5164 -0
  70. package/docs-dev/javascript/utils-dom/index.html +60 -30
  71. package/docs-dev/javascript/utils-file-save/index.html +60 -30
  72. package/docs-dev/javascript/utils-floating-ui/index.html +60 -30
  73. package/docs-dev/javascript/utils-id/index.html +60 -30
  74. package/docs-dev/javascript/utils-pause-youtube-video/index.html +60 -30
  75. package/docs-dev/javascript/utils-system/index.html +60 -30
  76. package/docs-dev/sass/base/color/index.html +60 -30
  77. package/docs-dev/sass/base/elements/index.html +60 -30
  78. package/docs-dev/sass/base/index/index.html +60 -30
  79. package/docs-dev/sass/base/index.html +60 -30
  80. package/docs-dev/sass/base/keyframes/index.html +60 -30
  81. package/docs-dev/sass/base/layout/index.html +60 -30
  82. package/docs-dev/sass/base/normalize/index.html +60 -30
  83. package/docs-dev/sass/base/print/index.html +60 -30
  84. package/docs-dev/sass/base/root/index.html +60 -30
  85. package/docs-dev/sass/base/typography/index.html +60 -30
  86. package/docs-dev/sass/components/accordion/index.html +60 -30
  87. package/docs-dev/sass/components/adaptive-spacing/index.html +60 -30
  88. package/docs-dev/sass/components/badge/index.html +60 -30
  89. package/docs-dev/sass/components/basic-hero/index.html +60 -30
  90. package/docs-dev/sass/components/button/index.html +60 -30
  91. package/docs-dev/sass/components/button-verbose/index.html +82 -38
  92. package/docs-dev/sass/components/callout/index.html +60 -30
  93. package/docs-dev/sass/components/captioned-figure/index.html +60 -30
  94. package/docs-dev/sass/components/card/index.html +61 -31
  95. package/docs-dev/sass/components/card-grid/index.html +60 -30
  96. package/docs-dev/sass/components/css-icon/index.html +60 -30
  97. package/docs-dev/sass/components/data-grid/index.html +80 -43
  98. package/docs-dev/sass/components/data-table/index.html +60 -30
  99. package/docs-dev/sass/components/fill-context/index.html +60 -30
  100. package/docs-dev/sass/components/flipcard/index.html +60 -30
  101. package/docs-dev/sass/components/flipcard-grid/index.html +60 -30
  102. package/docs-dev/sass/components/form-theme/index.html +60 -30
  103. package/docs-dev/sass/components/hero/index.html +60 -30
  104. package/docs-dev/sass/components/horizontal-rule/index.html +60 -30
  105. package/docs-dev/sass/components/image-grid/index.html +60 -30
  106. package/docs-dev/sass/components/index/index.html +60 -30
  107. package/docs-dev/sass/components/index.html +60 -30
  108. package/docs-dev/sass/components/links/index.html +60 -30
  109. package/docs-dev/sass/components/list-inline/index.html +60 -30
  110. package/docs-dev/sass/components/list-lines/index.html +60 -30
  111. package/docs-dev/sass/components/list-ordered/index.html +60 -30
  112. package/docs-dev/sass/components/list-unordered/index.html +60 -30
  113. package/docs-dev/sass/components/menu-stack/index.html +60 -30
  114. package/docs-dev/sass/components/modal/index.html +61 -31
  115. package/docs-dev/sass/components/nav-strip/index.html +60 -30
  116. package/docs-dev/sass/components/overlay-section/index.html +60 -30
  117. package/docs-dev/sass/components/pager/index.html +60 -30
  118. package/docs-dev/sass/components/placeholder-block/index.html +60 -30
  119. package/docs-dev/sass/components/popover/index.html +60 -30
  120. package/docs-dev/sass/components/pull-quote/index.html +60 -30
  121. package/docs-dev/sass/components/ratio-box/index.html +60 -30
  122. package/docs-dev/sass/components/rule/index.html +60 -30
  123. package/docs-dev/sass/components/scroll-slider/index.html +60 -30
  124. package/docs-dev/sass/components/skip-link/index.html +60 -30
  125. package/docs-dev/sass/components/slider/index.html +60 -30
  126. package/docs-dev/sass/components/spoke-spinner/index.html +60 -30
  127. package/docs-dev/sass/components/sticky-list/index.html +60 -30
  128. package/docs-dev/sass/components/tabs/index.html +60 -30
  129. package/docs-dev/sass/components/tag/index.html +60 -30
  130. package/docs-dev/sass/components/tile-button/index.html +60 -30
  131. package/docs-dev/sass/components/tile-grid/index.html +60 -30
  132. package/docs-dev/sass/components/tile-grid-overlay/index.html +60 -30
  133. package/docs-dev/sass/components/vignette/index.html +60 -30
  134. package/docs-dev/sass/components/wysiwyg/index.html +60 -30
  135. package/docs-dev/sass/core/breakpoint/index.html +106 -62
  136. package/docs-dev/sass/core/button/index.html +60 -30
  137. package/docs-dev/sass/core/color/index.html +60 -30
  138. package/docs-dev/sass/core/cssvar/index.html +60 -30
  139. package/docs-dev/sass/core/element/index.html +60 -30
  140. package/docs-dev/sass/core/index.html +60 -30
  141. package/docs-dev/sass/core/layout/index.html +60 -30
  142. package/docs-dev/sass/core/path/index.html +60 -30
  143. package/docs-dev/sass/core/selector/index.html +60 -30
  144. package/docs-dev/sass/core/typography/index.html +60 -30
  145. package/docs-dev/sass/core/units/index.html +60 -30
  146. package/docs-dev/sass/core/utils/index.html +175 -123
  147. package/docs-dev/sass/helpers/color/index.html +60 -30
  148. package/docs-dev/sass/helpers/display/index.html +61 -31
  149. package/docs-dev/sass/helpers/index/index.html +60 -30
  150. package/docs-dev/sass/helpers/index.html +60 -30
  151. package/docs-dev/sass/helpers/print/index.html +60 -0
  152. package/docs-dev/sass/helpers/typography/index.html +60 -30
  153. package/docs-dev/sass/helpers/units/index.html +60 -30
  154. package/docs-dev/sass/helpers/utilities/index.html +62 -32
  155. package/docs-dev/sass/index.html +60 -30
  156. package/js/ui/slider.js +2 -2
  157. package/package.json +1 -1
  158. package/scss/helpers/_display.scss +15 -18
  159. package/scss/helpers/_print.scss +12 -7
  160. package/scss/helpers/_utilities.scss +42 -32
@@ -66,6 +66,6 @@ var aa=Object.defineProperty;var sa=(n,e,t)=>e in n?aa(n,e,{enumerable:!0,config
66
66
  ${e?this.transitionCss("opacity"):""}
67
67
  opacity: ${e?"0":"1"}
68
68
  `}getClass(e,t){const{namespace:r}=this.options;return t?`${r}--${e}`:e?`${r}__${e}`:r}createControlButton(e){const t=document.createElement("button");return t.classList.add(this.getClass("control-button")),t.classList.add(this.getClass(`control-button--${e}`)),t.classList.add(...this.options.buttonClasses),t.setAttribute("data-slider-control",e),t.setAttribute("type","button"),t.innerHTML=this.getControlContent(e),t}createControls(e){const t=document.createElement("ul"),r=document.createElement("li"),o=document.createElement("li"),i=this.createControlButton("previous"),a=this.createControlButton("next");return t.classList.add(this.getClass("controls")),r.appendChild(i),o.appendChild(a),t.appendChild(r),t.appendChild(o),i.addEventListener("click",this.previous.bind(this)),a.addEventListener("click",this.next.bind(this)),e.appendChild(t),{controls:t,previousItem:r,nextItem:o,previous:i,next:a}}createNav(e){const t=document.createElement("ul"),r=this.slides.map(this.createNavButton.bind(this)),o=r.map(i=>{const a=document.createElement("li");return a.appendChild(i),t.appendChild(a),a});return t.classList.add(this.getClass("nav")),e.appendChild(t),{nav:t,navButtons:r,navItems:o}}createNavButton(e,t){const r=document.createElement("button");return r.classList.add(this.getClass("nav-button")),r.setAttribute("type","button"),r.innerHTML=this.getNavContent(e),e.navButton=r,r.addEventListener("click",this.goto.bind(this,t)),r}getControlContent(e){const t=this.options[e==="next"?"iconClassNext":"iconClassPrevious"];return`
69
- <span class="hidden-visually">${e}</span>
69
+ <span class="${this.options.classAccessiblyHidden}">${e}</span>
70
70
  <span class="${this.getClass("control-icon")} ${t}" aria-hidden="true"></span>
71
- `}getNavContent(e){return`<span class="hidden-visually">Item ${e.number}</span>`}emit(e,t){this.options.events[e]&&this.options.events[e].apply(this,t)}};z(Ve,"instances",[]),z(Ve,"defaults",{classAccessiblyHidden:"hidden-visually",namespace:"Slider",events:{},transition:!0,transitionFade:!1,transitionDuration:700,transitionDurationExit:400,transitionTimingFunction:"ease-in-out",buttonClasses:["button","button--icon"],iconClassPrevious:we("iconClassPrevious"),iconClassNext:we("iconClassNext")});let at=Ve;const $u=Object.freeze(Object.defineProperty({__proto__:null,Slider:at,init:Fu,initializer:Qe,setupSlider:Io},Symbol.toStringTag,{value:"Module"}));var Do={exports:{}};(function(n,e){(function(t,r){n.exports=r()})(window,function(){return function(t){var r={};function o(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return t[i].call(a.exports,a,a.exports,o),a.l=!0,a.exports}return o.m=t,o.c=r,o.d=function(i,a,s){o.o(i,a)||Object.defineProperty(i,a,{enumerable:!0,get:s})},o.r=function(i){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})},o.t=function(i,a){if(1&a&&(i=o(i)),8&a||4&a&&typeof i=="object"&&i&&i.__esModule)return i;var s=Object.create(null);if(o.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:i}),2&a&&typeof i!="string")for(var l in i)o.d(s,l,(function(u){return i[u]}).bind(null,l));return s},o.n=function(i){var a=i&&i.__esModule?function(){return i.default}:function(){return i};return o.d(a,"a",a),a},o.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},o.p="",o(o.s=0)}([function(t,r,o){o.r(r),o.d(r,"AriaTablist",function(){return P});var i=35,a=36,s=37,l=38,u=39,m=40,f=46,d=13,h=32,v={37:-1,38:-1,39:1,40:1},p=function(){function T(w){this.tabs=w.tabs,this.panels=w.panels,this.options=w.options,this.open=this.open.bind(w),this.close=this.close.bind(w),this.delete=this.delete.bind(w),this.destroy=this.destroy.bind(w),w.tablist.ariaTablist=this}return T.prototype.open=function(w,c){this.checkMultiple(),this.activateTabWithTimer.apply(this,[w,c,!0])},T.prototype.close=function(w,c){this.checkMultiple(),this.deactivateTab.apply(this,[w,c,!0]),this.makeFocusable()},T.prototype.delete=function(w){this.determineDeletable.call(this,w)},T.prototype.destroy=function(){this.destroy.call(this)},T}(),b=function(T){for(var w in T===void 0&&(T={}),this.delay=0,this.deletable=!1,this.focusableTabs=!1,this.focusablePanels=!0,this.arrowActivation=!1,this.allArrows=!1,this.tabSelector='[role="tab"]',this.tabindex=0,T)T.hasOwnProperty(w)&&T[w]!==void 0&&(this[w]=T[w])};function _(T){T&&typeof T.preventDefault=="function"&&T.preventDefault()}function g(T,w){return T.getAttribute&&T.getAttribute(w)||""}function y(T,w,c){T&&g(T,w)!==c&&T.setAttribute&&T.setAttribute(w,c)}function E(T,w){T&&w&&T.removeAttribute&&w.split(" ").forEach(function(c){return c&&T.removeAttribute(c)})}var C=0,A=function(){function T(w,c){if(this.tabs=[],this.panels=[],w&&w.nodeType===1){var x=w.ariaTablist;x&&typeof x.destroy=="function"&&x.destroy(),C+=1,this.tablist=w,this.options=new b(c),this.api=new p(this),this.init()}}return T.prototype.checkMultiple=function(){this.multiple=g(this.tablist,"aria-multiselectable")==="true"},T.prototype.triggerOptionCallback=function(w,c){if(c===void 0&&(c=[]),this.options&&typeof this.options[w]=="function")return this.options[w].apply(this.api,c)},T.prototype.makeFocusable=function(){for(var w=""+(this.options.tabindex||0),c=0,x=this.tabs.length;c<x;c+=1)if(g(this.tabs[c],"tabindex")===w)return;y(this.tabs[0],"tabindex",w)},T.prototype.setCoreAttributes=function(w,c,x){var O=this.options.tabindex||"0";this.options.focusableTabs&&y(w,"tabindex",O),this.options.focusablePanels&&y(c,"tabindex",O),w.id||y(w,"id","aria-tablist-"+C+"-tab-"+x),c.id||y(c,"id","aria-tablist-"+C+"-panel-"+x),y(w,"role","tab"),y(c,"role","tabpanel"),y(w,"aria-controls",c.id),y(c,"aria-labelledby",w.id)},T.prototype.getTabPanel=function(w){var c=typeof w=="number"?this.tabs[w]:w;if(!c||c.nodeType!==1)return null;var x=typeof w=="number"?this.panels[w]:null;if(x)return x;var O=g(c,"aria-controls");return O||(O=g(c,"data-controls")),O&&(x=document.getElementById(O)),x||(O&&E(c,"aria-controls"),c.id&&(x=document.querySelector('[aria-labelledby="'+c.id+'"]')),x||(x=document.querySelector('[data-labelledby="'+c.id+'"]'))),x},T.prototype.generateArrays=function(w){this.tabs.splice(0),this.panels.splice(0);var c=this.tablist.querySelectorAll(this.options.tabSelector);w&&!c.length&&(c=this.tablist.childNodes);for(var x=0,O=c.length;x<O;x+=1){var M=c[x];if(M&&M.nodeType===1&&!(this.panels.indexOf(M)>-1)){var L=this.getTabPanel(M);L?(this.tabs.push(M),this.panels.push(L),this.setCoreAttributes(M,L,x),M._ariaTablistTabIndex=this.tabs.length-1):g(M,"role")==="tab"&&E(M,"role")}}},T.prototype.elementIsTab=function(w){return!!(w&&this.tabs.indexOf(w)>-1)},T.prototype.addListenersToTab=function(w){var c=this.tabs[w];c.addEventListener("keydown",this.tabKeydownEvent),c.addEventListener("keyup",this.tabKeyupEvent),c.addEventListener("click",this.tabClickEvent)},T.prototype.tabClickEvent=function(w){var c=w.target;do{if(this.elementIsTab(c))return this.checkMultiple(),_(w),this.activateTabWithTimer(c,!1);c=c.parentElement||c.parentNode}while(c!==null&&c.nodeType===1)},T.prototype.tabKeydownEvent=function(w){if(this.elementIsTab(w.target))switch(w.keyCode){case i:_(w),this.focusLastTab();break;case a:_(w),this.focusFirstTab();break;case l:case m:case s:case u:this.processArrowPress(w);break;case h:case d:_(w)}},T.prototype.tabKeyupEvent=function(w){var c=w.target;if(this.elementIsTab(c))switch(w.keyCode){case f:this.determineDeletable(c);break;case d:case h:this.checkMultiple(),_(w),this.activateTabWithTimer(c)}},T.prototype.processArrowPress=function(w){var c=w.keyCode;(this.options.allArrows||(g(this.tablist,"aria-orientation")==="vertical"?c===l||c===m:c===s||c===u))&&this.switchTabOnArrowPress(w)},T.prototype.switchTabOnArrowPress=function(w){var c=w.keyCode,x=v[c],O=w.target._ariaTablistTabIndex;if(x&&typeof O=="number"){_(w);var M=(c===s||c===u)&&(document.dir==="rtl"||this.tablist.dir==="rtl");M&&this.tablist.dir!=="ltr"&&(x*=-1);var L=O+x;this.tabs[L]?this.focusTab(L):c===s||c===l?M?this.focusFirstTab():this.focusLastTab():c!==u&&c!=m||(M?this.focusLastTab():this.focusFirstTab())}},T.prototype.getTab=function(w){return typeof w=="number"&&this.elementIsTab(this.tabs[w])?this.tabs[w]:this.elementIsTab(w)?w:null},T.prototype.activateTabWithTimer=function(w,c,x){var O=this;this.tabTimer&&clearTimeout(this.tabTimer);var M=typeof this.options.delay=="number"?this.options.delay:0;this.tabTimer=setTimeout(function(){O.activateTab(w,c,x)},M)},T.prototype.activateTab=function(w,c,x){c===void 0&&(c=!0),x===void 0&&(x=!1);var O=this.getTab(w);if(O&&c&&O.focus(),O&&(x||g(O,"aria-disabled")!=="true")){var M=g(O,"aria-selected")==="true";if(this.multiple&&M&&!x)return this.deactivateTab(O),void this.makeFocusable();this.multiple||this.deactivateTabs([O]);var L=this.options.tabindex||"0";y(O,"tabindex",L),y(O,"aria-selected","true");var D=this.getTabPanel(w);if(D){var B=g(D,"hidden")==="hidden";E(D,"hidden aria-hidden"),this.multiple&&(y(D,"aria-expanded","true"),y(O,"aria-expanded","true")),this.options.focusablePanels&&y(D,"tabindex",L),B&&this.triggerOptionCallback("onOpen",[D,O])}}},T.prototype.deactivateTab=function(w,c,x){c===void 0&&(c=!1),x===void 0&&(x=!1);var O=this.getTab(w);if(O&&(c&&O.focus(),y(O,"tabindex",this.options.focusableTabs?this.options.tabindex||"0":"-1"),x||g(O,"aria-disabled")!=="true")){y(O,"aria-selected","false");var M=this.getTabPanel(w);if(M){var L=g(M,"hidden")==="hidden";E(M,"tabindex"),y(M,"hidden","hidden"),y(M,"aria-hidden","true"),this.multiple?(y(O,"aria-expanded","false"),y(M,"aria-expanded","false")):(E(M,"aria-expanded"),E(O,"aria-expanded")),L||this.triggerOptionCallback("onClose",[M,O])}}},T.prototype.deactivateTabs=function(w){var c=this;w===void 0&&(w=[]);var x=Array.isArray(w);this.tabs.forEach(function(O){x&&w.indexOf(O)!==-1||c.deactivateTab(O,!1,!0)})},T.prototype.focusTab=function(w){var c=this.getTab(w),x=this.options.arrowActivation;if(c){if(x&&g(c,"aria-selected")!=="true")return void this.activateTabWithTimer(c);c.focus()}},T.prototype.focusFirstTab=function(){this.focusTab(0)},T.prototype.focusLastTab=function(){this.focusTab(this.tabs.length-1)},T.prototype.determineDeletable=function(w){if(this.options.deletable){var c=this.getTab(w);if(c&&g(c,"data-deletable")!=="false"){this.checkMultiple(),this.deleteTab(c),this.generateArrays();var x=c._ariaTablistTabIndex,O=x-1>-1?x-1:0;this.multiple||g(c,"aria-selected")!=="true"?this.tabs[O]&&this.tabs[O].focus():this.activateTab(O),this.makeFocusable(),this.triggerOptionCallback("onDelete",[c])}}},T.prototype.deleteTab=function(w){var c=this.getTabPanel(w);w.parentElement.removeChild(w),c&&c.parentElement.removeChild(c)},T.prototype.destroy=function(){var w=this,c="aria-expanded aria-hidden hidden role tabindex";this.tabs.forEach(function(x,O){x.removeEventListener("keydown",w.tabKeydownEvent),x.removeEventListener("keyup",w.tabKeyupEvent),x.removeEventListener("click",w.tabClickEvent),E(w.panels[O],c),E(x,c),delete x._ariaTablistTabIndex}),this.tablist&&(delete this.tablist.ariaTablist,E(this.tablist,"role")),this.panels.splice(0),this.tabs.splice(0),this.tablist=null},T.prototype.init=function(){var w=this;this.checkMultiple(),this.generateArrays(!0),this.tabKeydownEvent=this.tabKeydownEvent.bind(this),this.tabClickEvent=this.tabClickEvent.bind(this),this.tabKeyupEvent=this.tabKeyupEvent.bind(this);var c=[];this.tabs.forEach(function(x,O){w.addListenersToTab(O),!(g(x,"aria-selected")==="true"||g(x,"data-selected")==="true")||!w.multiple&&c.length||c.push(x)}),y(this.tablist,"role","tablist"),this.tabs.length&&(this.multiple||c.length||c.push(this.tabs[0]),this.deactivateTabs(c),c.forEach(function(x){return w.activateTab(x,!1,!0)}),this.makeFocusable()),this.triggerOptionCallback("onReady",[this.tablist])},T}();function P(T,w){return new A(T,w).api}r.default=P}])})})(Do);var Nu=Do.exports;const qu=co(Nu),fi=[],Lo=new J({type:"tabs",baseAttribute:"data-ulu-tablist"});function Hu(){const n=()=>{Lo.init({events:["pageModified"],withData:!0,setup({element:e,data:t,initialize:r}){Ro(e,t),r()}}),fi.forEach(Bu)};document.readyState==="complete"?n():window.addEventListener("load",n)}function Ro(n,e={}){const t=Object.assign({},e);t.vertical&&(t.allArrows=!0);const r={element:n,options:e};return r.ariaTablist=qu(n,{onOpen(...o){o.unshift(r),Wu.apply(null,o)},...t}),fi.push(r),t.equalHeights&&ju(n),r}function Bu({options:n,ariaTablist:e}){if(n.openByUrlHash){const{hash:t}=window.location;if(t&&t.length>1){const r=t.substring(1);e.tabs.forEach(o=>{r===o.id&&e.open(o)})}}}function Wu({options:n},e,t){n.openByUrlHash&&window.history&&window.history.replaceState(null,"",`#${t.id}`)}function ju(n){const t=[...n.children].map(s=>document.querySelector(`[aria-labelledby="${s.id}"]`)),i=[...t[0].parentElement.querySelectorAll("img")].map(s=>a(s));function a(s){return new Promise(l=>{s.complete?l(s):(s.onload=l,s.onerror=l)})}Promise.all(i).then(()=>{const s=t.map(u=>{let m=u.offsetHeight;return u.hidden&&(u.hidden=!1,m=u.offsetHeight,u.setAttribute("hidden","hidden")),m}),l=Math.max(...s);t.forEach(u=>u.style.minHeight=`${l}px`)})}const Vu=Object.freeze(Object.defineProperty({__proto__:null,init:Hu,initializer:Lo,instances:fi,setup:Ro},Symbol.toStringTag,{value:"Module"})),Fo=new J({type:"proxy-click",baseAttribute:"data-ulu-proxy-click"}),$o={selector:"[data-ulu-proxy-click-source]",selectorPreventBase:"input, select, textarea, button, a, [tabindex='-1']",selectorPrevent:"",mousedownDurationPrevent:250};let Gr={...$o};function zu(n){Gr=Object.assign({},Gr,n)}function Ku(){Fo.init({withData:!0,events:["pageModified"],setup({element:n,data:e,initialize:t}){No(n,e),t()}})}function No(n,e){const t=Object.assign({},Gr,e),r=n.querySelector(t.selector);r?qo(n,r,t):console.error("Unable to locate proxy click source",t.selector)}function qo(n,e,t){const{selectorPreventBase:r,selectorPrevent:o}=t,i=`${r}${o?`, ${o}`:""}`;let a,s;n.addEventListener("mousedown",({target:l,timeStamp:u})=>{s=!1,l.matches(i)||(s=!0,a=u)}),n.addEventListener("mouseup",({timeStamp:l})=>{s&&l-a<t.mousedownDurationPrevent&&e.click()}),n.style.cursor="pointer"}const Gu=Object.freeze(Object.defineProperty({__proto__:null,attachHandlers:qo,defaults:$o,init:Ku,initializer:Fo,setDefaults:zu,setupProxy:No},Symbol.toStringTag,{value:"Module"})),Pt=new J({type:"scrollpoint",baseAttribute:"data-ulu-scrollpoint"});function Uu(){Pt.init({withData:!0,events:["pageModified"],setup({element:n,data:e,initialize:t}){const r=Object.assign({},e);new kt(n,r),t()}})}const Rt=class Rt{constructor(e,t){const r=Object.assign({},Rt.defaults,t);if(!e){re(this,"Missing required element");return}r.rootSelector&&(r.root=document.querySelector(r.rootSelector),delete r.rootSelector),this.options=r,this.observer=null,this.lastPosition=null,this.isActive=!1,this.element=e,this.syncedElements=[e,...r.syncElements.map(o=>getElement(o))],this.classes={enter:this.getClassname("enter"),enterForward:this.getClassname("enter--from-forward"),enterReverse:this.getClassname("enter--from-reverse"),exit:this.getClassname("exit"),exitForward:this.getClassname("exit--from-forward"),exitReverse:this.getClassname("exit--from-reverse")},this.setupObserver(),r.debug&&Pt.log(this)}getClassname(e){return this.options.classPrefix+"-"+e}getObserverOptions(){const{root:e,marginStart:t,marginEnd:r,threshold:o,horizontal:i}=this.options,a=i?`0px ${t} 0px ${r}`:`${t} 0px ${r} 0px`;return{root:e,rootMargin:a,threshold:o}}onObserve(e){const t=this.getScrollY(),{lastPosition:r,isActive:o,options:i}=this,a=r===null?null:r<t;e.forEach(s=>{const{isIntersecting:l}=s;l&&!o?this.setState(!0,a):!l&&o&&i.exit&&(a&&i.exitForward||!a&&i.exitReverse)&&this.setState(!1,a)}),this.lastPosition=t}setupObserver(){const e=r=>{this.onObserve(r)},t=this.getObserverOptions();this.options.debug&&Pt.log("IntersectionObserver (options)",t),this.observer=new IntersectionObserver(e,t),this.observer.observe(this.element)}getScrollY(){const{root:e}=this.options;return e===null||e===document?window.scrollY:e.scrollTop}setState(e,t){const{element:r}=this,o={isActive:e,isForward:t,element:r,instance:this},{setClasses:i,setAttribute:a,onChange:s}=this.options;i&&this.updateClasses(e,t),a&&this.updateStateAttribute(e,t),s&&s(o),this.isActive=e}getAllClasses(){return Object.values(this.classes)}updateClasses(e,t){const{classes:r}=this,o=this.getAllClasses(),i=[r.enter,t?r.enterForward:r.enterReverse],a=[r.exit,t?r.exitForward:r.exitReverse];this.syncedElements.forEach(s=>{s.classList.remove(...o),e?s.classList.add(...i):s.classList.add(...a)})}updateStateAttribute(e,t){const r=e?"enter":"exit",o=t?"forward":"reverse";this.syncedElements.forEach(i=>{i.setAttribute(this.options.attributeName,`${r}-${o}`)})}destroy(){this.observer.disconnect(),this.observer=null,this.options.setClasses&&this.element.classList.remove(...this.getAllClasses()),this.options.setAttribute&&this.element.removeAttribute(this.options.attributeName)}};z(Rt,"defaults",{root:null,rootSelector:null,debug:!1,horizontal:!1,marginStart:"-25%",marginEnd:"-55%",threshold:[0,1],exit:!0,exitForward:!0,exitReverse:!0,setClasses:!1,classPrefix:"scrollpoint",setAttribute:!0,attributeName:"data-scrollpoint-state",syncElements:[],onChange(e){}});let kt=Rt;const Zu=Object.freeze(Object.defineProperty({__proto__:null,Scrollpoint:kt,init:Uu,initializer:Pt},Symbol.toStringTag,{value:"Module"}));function Xu(n){const e=window.open();e.document.write(n),e.print(),e.close()}function Ju(n){var e=n.innerHTML;Xu(e)}const Yu=new J({type:"print",baseAttribute:"data-ulu-print"}),Qu={element:null};function ec(){Yu.init({withData:!0,events:["pageModified"],setup({element:n,data:e,initialize:t}){tc(n,e),t()}})}function tc(n,e){const t=Object.assign({},Qu,e);n.addEventListener("click",()=>{if(t.element){const r=$i(t.element);r?Ju(r):console.error("Unable to find element to print",n,t)}else window.print()})}const nc=Object.freeze(Object.defineProperty({__proto__:null,init:ec},Symbol.toStringTag,{value:"Module"})),It={opened:"data-ulu-print-details-opened"},rc=n=>`[${It[n]}]`,ic={selector:"details:not([open])"};function oc(n){const e=Object.assign({},ic,n);document.addEventListener(Q("beforePrint"),()=>{document.querySelectorAll(e.selector).forEach(t=>{t.open||(t.setAttribute(It.opened,!0),t.open=!0)})}),document.addEventListener(Q("afterPrint"),()=>{document.querySelectorAll(rc("opened")).forEach(t=>{t.removeAttribute(It.opened),t.open=!1})})}const ac=Object.freeze(Object.defineProperty({__proto__:null,attrs:It,init:oc},Symbol.toStringTag,{value:"Module"})),Bt=new J({type:"scroll-slider",baseAttribute:"data-ulu-scroll-slider"}),sc=Bt.attributeSelector("track"),lc=Bt.attributeSelector("control-context"),uc=[],cc={amount:Zi()};function fc(){Bt.init({withData:!0,events:["pageModified"],setup({element:n,data:e,initialize:t}){dc(n,e),t()}})}function dc(n,e){const t=Object.assign({},cc,e),r={track:n.querySelector(sc),controls:n.querySelector(lc)};uc.push(new Ot(r,t))}const pc=Object.freeze(Object.defineProperty({__proto__:null,init:fc,initializer:Bt},Symbol.toStringTag,{value:"Module"})),te=new J({type:"theme-toggle",baseAttribute:"data-ulu-theme-toggle"}),vc=te.attributeSelector("label"),hc=te.attributeSelector("icon"),Ho=te.getAttribute("remote"),Ur=te.getAttribute("init"),_i=te.getAttribute("state"),mc=n=>document.querySelectorAll(`[${Ho}="${n}"]`),Ei=n=>document.querySelectorAll(`[${Ho}="${n}"]:not([${Ur}])`),Bo=["target"],bc=$t(Bo),wi=(n,e)=>n?e():null,di={themes:{light:{label:"Light",value:"light",iconClass:"fas fa-moon",targetClass:"theme-light",mediaQuery:"(prefers-color-scheme: light)"},dark:{label:"Dark",iconClass:"fas fa-sun",targetClass:"theme-dark",mediaQuery:"(prefers-color-scheme: dark)"}},target:"body",group:null,onChange(n){},initialState:"light",checkMediaQuery:!1,savePreference:!1,storagePrefix:"ulu-theme-",debug:!1};let Si={...di};function gc(n){Si=Object.assign({},Si,n)}function xc(){te.init({events:["pageModified"],withData:!0,setup({element:n,data:e,initialize:t}){Wo(n,e),t()}})}function Wo(n,e){const t=Object.assign({},di,e);if(!bc(t)){console.error(`Missing a required option: ${Bo.join(", ")}`);return}const r=t.group,o={toggle:n,options:t},i=yc(t);if(!i){console.error("Unable to resolve initial key");return}Jt(i,o),n.addEventListener("click",s),l(),document.addEventListener(Q("pageModified"),l);function a(f){const h=Xr(t.target)[0].dataset.uluThemeToggleState,v=Ec(h,t);if(!v){console.error("Issue getting next theme key");return}Jt(v,{...o,event:f})}function s(f){a(f)}function l(){if(!r)return;Ei(r).forEach(d=>{d.addEventListener("click",s),te.initializeElement(d)})}function u(){if(!r)return;Ei(r).forEach(d=>{d.removeEventListener("click",s),d.removeAttribute(Ur,"")})}function m(){n.removeEventListener("click",s),n.removeAttribute(Ur,""),u(),document.removeEventListener(Q("pageModified"),l)}return{destroy:m,toggle:n,options:t,toggleState:a,setState(f){Jt(f,o)}}}function Jt(n,e){if(!n){console.error("Missing key");return}const{toggle:t,options:r}=e,{themes:o,group:i}=r,a={targets:Xr(r.target),toggles:[t,...i?mc(i):[]]};if(!a.targets.length||!a.toggles.length){console.error("Issue setting state, couldn't find needed elements",a);return}const s=o[n],l=wc(n,o),u={...e,key:n,elements:a,theme:s,otherThemes:l};r.debug&&te.log("Set state context",u);const m=Oi(l,"targetClass"),f=Oi(l,"iconClass");a.targets.forEach(d=>{d.setAttribute(_i,n),d.classList.remove(...m),d.classList.add(...gt(s.targetClass))}),a.toggles.forEach(d=>{const h=d.querySelector(vc),v=d.querySelector(hc);h&&(h.textContent=s.label),v&&(v.classList.remove(...f),v.classList.add(...gt(s.iconClass))),d.setAttribute(_i,n)}),r.onChange&&r.onChange(u),r.savePreference&&localStorage.setItem(jo(r),n)}function yc(n){const{savePreference:e,checkMediaQuery:t,themes:r,initialState:o}=n,i=jo(n),a=wi(e,()=>localStorage.getItem(i)),s=wi(t,()=>_c(r)),l=a||s||o;return n.debug&&(te.log("Preference Saved",a),te.log("Media Query Preference",s),te.log("Initial State:",o)),l||te.logError("Failed to resolve initial theme (pass 'initialState' to options)"),l}function _c(n){const e=Object.entries(n).find(([t,r])=>{if(r.mediaQuery)return window.matchMedia(r.mediaQuery).matches});return e?e[0]:null}function Ec(n,e){const{themes:t}=e,r=Object.keys(t),o=r.findIndex(a=>a===n),i=o===-1?0:(o+1)%r.length;return r[i]}function wc(n,e){return Object.entries(e).filter(([r])=>r!==n).map(([r,o])=>o)}function Oi(n,e){return n.reduce((t,r)=>t.concat(gt(r[e])),[])}function jo(n){const{storagePrefix:e,group:t}=n;return t?`${e}${t}`:e}const Sc=Object.freeze(Object.defineProperty({__proto__:null,defaults:di,init:xc,initializer:te,setDefaults:gc,setupToggle:Wo},Symbol.toStringTag,{value:"Module"})),Wt=new J({type:"details-group",baseAttribute:"data-ulu-details-group"}),Yt=Wt.getAttribute("child-init"),Oc={onlyOneOpen:!0,childSelector:":scope > details"};function Cc(){Wt.init({withData:!0,events:["pageModified"],setup({element:n,data:e,initialize:t}){Vo(n,e),t()}})}function Vo(n,e){const t=Object.assign({},Oc,e);try{o()}catch(s){console.error(s)}function r(){return n.querySelectorAll(t.childSelector)}function o(){r().forEach(s=>{s.hasAttribute(Yt)||(s.setAttribute(Yt,""),s.addEventListener("toggle",i))})}function i({target:s}){t.onlyOneOpen&&s.open&&r().forEach(l=>{l!==s&&l.open&&(l.open=!1)})}function a(){r().forEach(s=>{s.removeEventListener("toggle",i),s.removeAttribute(Yt)}),n.removeAttribute(Wt.getAttribute("init"))}return{destroy:a,element:n,setupChildren:o}}const Tc=Object.freeze(Object.defineProperty({__proto__:null,init:Cc,initializer:Wt,setupGroup:Vo},Symbol.toStringTag,{value:"Module"})),zo=Object.freeze(Object.defineProperty({__proto__:null,breakpoints:Ca,collapsible:Ma,detailsGroup:Tc,dialog:$a,flipcard:za,grid:Ga,get index(){return zo},modalBuilder:Ba,overflowScroller:Xa,overflowScrollerPager:Ua,page:ga,popover:Vs,print:nc,printDetails:ac,proxyClick:Gu,resizer:Pa,scrollSlider:pc,scrollpoint:Zu,slider:$u,tabs:Vu,themeToggle:Sc,tooltip:Zs},Symbol.toStringTag,{value:"Module"})),Ft=class Ft{constructor(e,t){this.options=Object.assign({},Ft.defaults,t),this.data=e,this.blob=new Blob([e],{type:this.options.type}),this.url=URL.createObjectURL(this.blob)}destroy(){return URL.revokeObjectURL(this.url)}getUrl(){return this.url}createLink(e){const t=document.createElement("a"),r=document.createTextNode(e);return t.setAttribute("download",this.options.filename),t.setAttribute("href",this.url),t.appendChild(r),t}static isBrowserSupported(){return"FileReader"in window}};z(Ft,"defaults",{filename:"filesave-file.txt",type:"text/plain;charset=utf-8"});let Zr=Ft;const Ac=Object.freeze(Object.defineProperty({__proto__:null,FileSave:Zr},Symbol.toStringTag,{value:"Module"}));function Mc(){Ti({iconClassClose:"fas fa-xmark",iconClassDragX:"fas fa-solid fa-grip-lines-vertical",iconClassPrevious:"fas fa-solid fa-chevron-left",iconClassNext:"fas fa-solid fa-chevron-right"})}const Pc=Object.freeze(Object.defineProperty({__proto__:null,configureIcons:Mc},Symbol.toStringTag,{value:"Module"})),Ko=Object.freeze(Object.defineProperty({__proto__:null,classLogger:wa,dom:ma,fileSave:Ac,floatingUi:$s,fontAwesome:Pc,id:Aa,get index(){return Ko},pauseYoutubeVideo:Ia},Symbol.toStringTag,{value:"Module"})),kc=Object.freeze(Object.defineProperty({__proto__:null,events:ha,settings:fa,ui:zo,utils:Ko},Symbol.toStringTag,{value:"Module"}));typeof window<"u"&&(window.ULU=kc);
71
+ `}getNavContent(e){return`<span class="${this.options.classAccessiblyHidden}">Item ${e.number}</span>`}emit(e,t){this.options.events[e]&&this.options.events[e].apply(this,t)}};z(Ve,"instances",[]),z(Ve,"defaults",{classAccessiblyHidden:"hidden-visually",namespace:"Slider",events:{},transition:!0,transitionFade:!1,transitionDuration:700,transitionDurationExit:400,transitionTimingFunction:"ease-in-out",buttonClasses:["button","button--icon"],iconClassPrevious:we("iconClassPrevious"),iconClassNext:we("iconClassNext")});let at=Ve;const $u=Object.freeze(Object.defineProperty({__proto__:null,Slider:at,init:Fu,initializer:Qe,setupSlider:Io},Symbol.toStringTag,{value:"Module"}));var Do={exports:{}};(function(n,e){(function(t,r){n.exports=r()})(window,function(){return function(t){var r={};function o(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return t[i].call(a.exports,a,a.exports,o),a.l=!0,a.exports}return o.m=t,o.c=r,o.d=function(i,a,s){o.o(i,a)||Object.defineProperty(i,a,{enumerable:!0,get:s})},o.r=function(i){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})},o.t=function(i,a){if(1&a&&(i=o(i)),8&a||4&a&&typeof i=="object"&&i&&i.__esModule)return i;var s=Object.create(null);if(o.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:i}),2&a&&typeof i!="string")for(var l in i)o.d(s,l,(function(u){return i[u]}).bind(null,l));return s},o.n=function(i){var a=i&&i.__esModule?function(){return i.default}:function(){return i};return o.d(a,"a",a),a},o.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},o.p="",o(o.s=0)}([function(t,r,o){o.r(r),o.d(r,"AriaTablist",function(){return P});var i=35,a=36,s=37,l=38,u=39,m=40,f=46,d=13,h=32,v={37:-1,38:-1,39:1,40:1},p=function(){function T(w){this.tabs=w.tabs,this.panels=w.panels,this.options=w.options,this.open=this.open.bind(w),this.close=this.close.bind(w),this.delete=this.delete.bind(w),this.destroy=this.destroy.bind(w),w.tablist.ariaTablist=this}return T.prototype.open=function(w,c){this.checkMultiple(),this.activateTabWithTimer.apply(this,[w,c,!0])},T.prototype.close=function(w,c){this.checkMultiple(),this.deactivateTab.apply(this,[w,c,!0]),this.makeFocusable()},T.prototype.delete=function(w){this.determineDeletable.call(this,w)},T.prototype.destroy=function(){this.destroy.call(this)},T}(),b=function(T){for(var w in T===void 0&&(T={}),this.delay=0,this.deletable=!1,this.focusableTabs=!1,this.focusablePanels=!0,this.arrowActivation=!1,this.allArrows=!1,this.tabSelector='[role="tab"]',this.tabindex=0,T)T.hasOwnProperty(w)&&T[w]!==void 0&&(this[w]=T[w])};function _(T){T&&typeof T.preventDefault=="function"&&T.preventDefault()}function g(T,w){return T.getAttribute&&T.getAttribute(w)||""}function y(T,w,c){T&&g(T,w)!==c&&T.setAttribute&&T.setAttribute(w,c)}function E(T,w){T&&w&&T.removeAttribute&&w.split(" ").forEach(function(c){return c&&T.removeAttribute(c)})}var C=0,A=function(){function T(w,c){if(this.tabs=[],this.panels=[],w&&w.nodeType===1){var x=w.ariaTablist;x&&typeof x.destroy=="function"&&x.destroy(),C+=1,this.tablist=w,this.options=new b(c),this.api=new p(this),this.init()}}return T.prototype.checkMultiple=function(){this.multiple=g(this.tablist,"aria-multiselectable")==="true"},T.prototype.triggerOptionCallback=function(w,c){if(c===void 0&&(c=[]),this.options&&typeof this.options[w]=="function")return this.options[w].apply(this.api,c)},T.prototype.makeFocusable=function(){for(var w=""+(this.options.tabindex||0),c=0,x=this.tabs.length;c<x;c+=1)if(g(this.tabs[c],"tabindex")===w)return;y(this.tabs[0],"tabindex",w)},T.prototype.setCoreAttributes=function(w,c,x){var O=this.options.tabindex||"0";this.options.focusableTabs&&y(w,"tabindex",O),this.options.focusablePanels&&y(c,"tabindex",O),w.id||y(w,"id","aria-tablist-"+C+"-tab-"+x),c.id||y(c,"id","aria-tablist-"+C+"-panel-"+x),y(w,"role","tab"),y(c,"role","tabpanel"),y(w,"aria-controls",c.id),y(c,"aria-labelledby",w.id)},T.prototype.getTabPanel=function(w){var c=typeof w=="number"?this.tabs[w]:w;if(!c||c.nodeType!==1)return null;var x=typeof w=="number"?this.panels[w]:null;if(x)return x;var O=g(c,"aria-controls");return O||(O=g(c,"data-controls")),O&&(x=document.getElementById(O)),x||(O&&E(c,"aria-controls"),c.id&&(x=document.querySelector('[aria-labelledby="'+c.id+'"]')),x||(x=document.querySelector('[data-labelledby="'+c.id+'"]'))),x},T.prototype.generateArrays=function(w){this.tabs.splice(0),this.panels.splice(0);var c=this.tablist.querySelectorAll(this.options.tabSelector);w&&!c.length&&(c=this.tablist.childNodes);for(var x=0,O=c.length;x<O;x+=1){var M=c[x];if(M&&M.nodeType===1&&!(this.panels.indexOf(M)>-1)){var L=this.getTabPanel(M);L?(this.tabs.push(M),this.panels.push(L),this.setCoreAttributes(M,L,x),M._ariaTablistTabIndex=this.tabs.length-1):g(M,"role")==="tab"&&E(M,"role")}}},T.prototype.elementIsTab=function(w){return!!(w&&this.tabs.indexOf(w)>-1)},T.prototype.addListenersToTab=function(w){var c=this.tabs[w];c.addEventListener("keydown",this.tabKeydownEvent),c.addEventListener("keyup",this.tabKeyupEvent),c.addEventListener("click",this.tabClickEvent)},T.prototype.tabClickEvent=function(w){var c=w.target;do{if(this.elementIsTab(c))return this.checkMultiple(),_(w),this.activateTabWithTimer(c,!1);c=c.parentElement||c.parentNode}while(c!==null&&c.nodeType===1)},T.prototype.tabKeydownEvent=function(w){if(this.elementIsTab(w.target))switch(w.keyCode){case i:_(w),this.focusLastTab();break;case a:_(w),this.focusFirstTab();break;case l:case m:case s:case u:this.processArrowPress(w);break;case h:case d:_(w)}},T.prototype.tabKeyupEvent=function(w){var c=w.target;if(this.elementIsTab(c))switch(w.keyCode){case f:this.determineDeletable(c);break;case d:case h:this.checkMultiple(),_(w),this.activateTabWithTimer(c)}},T.prototype.processArrowPress=function(w){var c=w.keyCode;(this.options.allArrows||(g(this.tablist,"aria-orientation")==="vertical"?c===l||c===m:c===s||c===u))&&this.switchTabOnArrowPress(w)},T.prototype.switchTabOnArrowPress=function(w){var c=w.keyCode,x=v[c],O=w.target._ariaTablistTabIndex;if(x&&typeof O=="number"){_(w);var M=(c===s||c===u)&&(document.dir==="rtl"||this.tablist.dir==="rtl");M&&this.tablist.dir!=="ltr"&&(x*=-1);var L=O+x;this.tabs[L]?this.focusTab(L):c===s||c===l?M?this.focusFirstTab():this.focusLastTab():c!==u&&c!=m||(M?this.focusLastTab():this.focusFirstTab())}},T.prototype.getTab=function(w){return typeof w=="number"&&this.elementIsTab(this.tabs[w])?this.tabs[w]:this.elementIsTab(w)?w:null},T.prototype.activateTabWithTimer=function(w,c,x){var O=this;this.tabTimer&&clearTimeout(this.tabTimer);var M=typeof this.options.delay=="number"?this.options.delay:0;this.tabTimer=setTimeout(function(){O.activateTab(w,c,x)},M)},T.prototype.activateTab=function(w,c,x){c===void 0&&(c=!0),x===void 0&&(x=!1);var O=this.getTab(w);if(O&&c&&O.focus(),O&&(x||g(O,"aria-disabled")!=="true")){var M=g(O,"aria-selected")==="true";if(this.multiple&&M&&!x)return this.deactivateTab(O),void this.makeFocusable();this.multiple||this.deactivateTabs([O]);var L=this.options.tabindex||"0";y(O,"tabindex",L),y(O,"aria-selected","true");var D=this.getTabPanel(w);if(D){var B=g(D,"hidden")==="hidden";E(D,"hidden aria-hidden"),this.multiple&&(y(D,"aria-expanded","true"),y(O,"aria-expanded","true")),this.options.focusablePanels&&y(D,"tabindex",L),B&&this.triggerOptionCallback("onOpen",[D,O])}}},T.prototype.deactivateTab=function(w,c,x){c===void 0&&(c=!1),x===void 0&&(x=!1);var O=this.getTab(w);if(O&&(c&&O.focus(),y(O,"tabindex",this.options.focusableTabs?this.options.tabindex||"0":"-1"),x||g(O,"aria-disabled")!=="true")){y(O,"aria-selected","false");var M=this.getTabPanel(w);if(M){var L=g(M,"hidden")==="hidden";E(M,"tabindex"),y(M,"hidden","hidden"),y(M,"aria-hidden","true"),this.multiple?(y(O,"aria-expanded","false"),y(M,"aria-expanded","false")):(E(M,"aria-expanded"),E(O,"aria-expanded")),L||this.triggerOptionCallback("onClose",[M,O])}}},T.prototype.deactivateTabs=function(w){var c=this;w===void 0&&(w=[]);var x=Array.isArray(w);this.tabs.forEach(function(O){x&&w.indexOf(O)!==-1||c.deactivateTab(O,!1,!0)})},T.prototype.focusTab=function(w){var c=this.getTab(w),x=this.options.arrowActivation;if(c){if(x&&g(c,"aria-selected")!=="true")return void this.activateTabWithTimer(c);c.focus()}},T.prototype.focusFirstTab=function(){this.focusTab(0)},T.prototype.focusLastTab=function(){this.focusTab(this.tabs.length-1)},T.prototype.determineDeletable=function(w){if(this.options.deletable){var c=this.getTab(w);if(c&&g(c,"data-deletable")!=="false"){this.checkMultiple(),this.deleteTab(c),this.generateArrays();var x=c._ariaTablistTabIndex,O=x-1>-1?x-1:0;this.multiple||g(c,"aria-selected")!=="true"?this.tabs[O]&&this.tabs[O].focus():this.activateTab(O),this.makeFocusable(),this.triggerOptionCallback("onDelete",[c])}}},T.prototype.deleteTab=function(w){var c=this.getTabPanel(w);w.parentElement.removeChild(w),c&&c.parentElement.removeChild(c)},T.prototype.destroy=function(){var w=this,c="aria-expanded aria-hidden hidden role tabindex";this.tabs.forEach(function(x,O){x.removeEventListener("keydown",w.tabKeydownEvent),x.removeEventListener("keyup",w.tabKeyupEvent),x.removeEventListener("click",w.tabClickEvent),E(w.panels[O],c),E(x,c),delete x._ariaTablistTabIndex}),this.tablist&&(delete this.tablist.ariaTablist,E(this.tablist,"role")),this.panels.splice(0),this.tabs.splice(0),this.tablist=null},T.prototype.init=function(){var w=this;this.checkMultiple(),this.generateArrays(!0),this.tabKeydownEvent=this.tabKeydownEvent.bind(this),this.tabClickEvent=this.tabClickEvent.bind(this),this.tabKeyupEvent=this.tabKeyupEvent.bind(this);var c=[];this.tabs.forEach(function(x,O){w.addListenersToTab(O),!(g(x,"aria-selected")==="true"||g(x,"data-selected")==="true")||!w.multiple&&c.length||c.push(x)}),y(this.tablist,"role","tablist"),this.tabs.length&&(this.multiple||c.length||c.push(this.tabs[0]),this.deactivateTabs(c),c.forEach(function(x){return w.activateTab(x,!1,!0)}),this.makeFocusable()),this.triggerOptionCallback("onReady",[this.tablist])},T}();function P(T,w){return new A(T,w).api}r.default=P}])})})(Do);var Nu=Do.exports;const qu=co(Nu),fi=[],Lo=new J({type:"tabs",baseAttribute:"data-ulu-tablist"});function Hu(){const n=()=>{Lo.init({events:["pageModified"],withData:!0,setup({element:e,data:t,initialize:r}){Ro(e,t),r()}}),fi.forEach(Bu)};document.readyState==="complete"?n():window.addEventListener("load",n)}function Ro(n,e={}){const t=Object.assign({},e);t.vertical&&(t.allArrows=!0);const r={element:n,options:e};return r.ariaTablist=qu(n,{onOpen(...o){o.unshift(r),Wu.apply(null,o)},...t}),fi.push(r),t.equalHeights&&ju(n),r}function Bu({options:n,ariaTablist:e}){if(n.openByUrlHash){const{hash:t}=window.location;if(t&&t.length>1){const r=t.substring(1);e.tabs.forEach(o=>{r===o.id&&e.open(o)})}}}function Wu({options:n},e,t){n.openByUrlHash&&window.history&&window.history.replaceState(null,"",`#${t.id}`)}function ju(n){const t=[...n.children].map(s=>document.querySelector(`[aria-labelledby="${s.id}"]`)),i=[...t[0].parentElement.querySelectorAll("img")].map(s=>a(s));function a(s){return new Promise(l=>{s.complete?l(s):(s.onload=l,s.onerror=l)})}Promise.all(i).then(()=>{const s=t.map(u=>{let m=u.offsetHeight;return u.hidden&&(u.hidden=!1,m=u.offsetHeight,u.setAttribute("hidden","hidden")),m}),l=Math.max(...s);t.forEach(u=>u.style.minHeight=`${l}px`)})}const Vu=Object.freeze(Object.defineProperty({__proto__:null,init:Hu,initializer:Lo,instances:fi,setup:Ro},Symbol.toStringTag,{value:"Module"})),Fo=new J({type:"proxy-click",baseAttribute:"data-ulu-proxy-click"}),$o={selector:"[data-ulu-proxy-click-source]",selectorPreventBase:"input, select, textarea, button, a, [tabindex='-1']",selectorPrevent:"",mousedownDurationPrevent:250};let Gr={...$o};function zu(n){Gr=Object.assign({},Gr,n)}function Ku(){Fo.init({withData:!0,events:["pageModified"],setup({element:n,data:e,initialize:t}){No(n,e),t()}})}function No(n,e){const t=Object.assign({},Gr,e),r=n.querySelector(t.selector);r?qo(n,r,t):console.error("Unable to locate proxy click source",t.selector)}function qo(n,e,t){const{selectorPreventBase:r,selectorPrevent:o}=t,i=`${r}${o?`, ${o}`:""}`;let a,s;n.addEventListener("mousedown",({target:l,timeStamp:u})=>{s=!1,l.matches(i)||(s=!0,a=u)}),n.addEventListener("mouseup",({timeStamp:l})=>{s&&l-a<t.mousedownDurationPrevent&&e.click()}),n.style.cursor="pointer"}const Gu=Object.freeze(Object.defineProperty({__proto__:null,attachHandlers:qo,defaults:$o,init:Ku,initializer:Fo,setDefaults:zu,setupProxy:No},Symbol.toStringTag,{value:"Module"})),Pt=new J({type:"scrollpoint",baseAttribute:"data-ulu-scrollpoint"});function Uu(){Pt.init({withData:!0,events:["pageModified"],setup({element:n,data:e,initialize:t}){const r=Object.assign({},e);new kt(n,r),t()}})}const Rt=class Rt{constructor(e,t){const r=Object.assign({},Rt.defaults,t);if(!e){re(this,"Missing required element");return}r.rootSelector&&(r.root=document.querySelector(r.rootSelector),delete r.rootSelector),this.options=r,this.observer=null,this.lastPosition=null,this.isActive=!1,this.element=e,this.syncedElements=[e,...r.syncElements.map(o=>getElement(o))],this.classes={enter:this.getClassname("enter"),enterForward:this.getClassname("enter--from-forward"),enterReverse:this.getClassname("enter--from-reverse"),exit:this.getClassname("exit"),exitForward:this.getClassname("exit--from-forward"),exitReverse:this.getClassname("exit--from-reverse")},this.setupObserver(),r.debug&&Pt.log(this)}getClassname(e){return this.options.classPrefix+"-"+e}getObserverOptions(){const{root:e,marginStart:t,marginEnd:r,threshold:o,horizontal:i}=this.options,a=i?`0px ${t} 0px ${r}`:`${t} 0px ${r} 0px`;return{root:e,rootMargin:a,threshold:o}}onObserve(e){const t=this.getScrollY(),{lastPosition:r,isActive:o,options:i}=this,a=r===null?null:r<t;e.forEach(s=>{const{isIntersecting:l}=s;l&&!o?this.setState(!0,a):!l&&o&&i.exit&&(a&&i.exitForward||!a&&i.exitReverse)&&this.setState(!1,a)}),this.lastPosition=t}setupObserver(){const e=r=>{this.onObserve(r)},t=this.getObserverOptions();this.options.debug&&Pt.log("IntersectionObserver (options)",t),this.observer=new IntersectionObserver(e,t),this.observer.observe(this.element)}getScrollY(){const{root:e}=this.options;return e===null||e===document?window.scrollY:e.scrollTop}setState(e,t){const{element:r}=this,o={isActive:e,isForward:t,element:r,instance:this},{setClasses:i,setAttribute:a,onChange:s}=this.options;i&&this.updateClasses(e,t),a&&this.updateStateAttribute(e,t),s&&s(o),this.isActive=e}getAllClasses(){return Object.values(this.classes)}updateClasses(e,t){const{classes:r}=this,o=this.getAllClasses(),i=[r.enter,t?r.enterForward:r.enterReverse],a=[r.exit,t?r.exitForward:r.exitReverse];this.syncedElements.forEach(s=>{s.classList.remove(...o),e?s.classList.add(...i):s.classList.add(...a)})}updateStateAttribute(e,t){const r=e?"enter":"exit",o=t?"forward":"reverse";this.syncedElements.forEach(i=>{i.setAttribute(this.options.attributeName,`${r}-${o}`)})}destroy(){this.observer.disconnect(),this.observer=null,this.options.setClasses&&this.element.classList.remove(...this.getAllClasses()),this.options.setAttribute&&this.element.removeAttribute(this.options.attributeName)}};z(Rt,"defaults",{root:null,rootSelector:null,debug:!1,horizontal:!1,marginStart:"-25%",marginEnd:"-55%",threshold:[0,1],exit:!0,exitForward:!0,exitReverse:!0,setClasses:!1,classPrefix:"scrollpoint",setAttribute:!0,attributeName:"data-scrollpoint-state",syncElements:[],onChange(e){}});let kt=Rt;const Zu=Object.freeze(Object.defineProperty({__proto__:null,Scrollpoint:kt,init:Uu,initializer:Pt},Symbol.toStringTag,{value:"Module"}));function Xu(n){const e=window.open();e.document.write(n),e.print(),e.close()}function Ju(n){var e=n.innerHTML;Xu(e)}const Yu=new J({type:"print",baseAttribute:"data-ulu-print"}),Qu={element:null};function ec(){Yu.init({withData:!0,events:["pageModified"],setup({element:n,data:e,initialize:t}){tc(n,e),t()}})}function tc(n,e){const t=Object.assign({},Qu,e);n.addEventListener("click",()=>{if(t.element){const r=$i(t.element);r?Ju(r):console.error("Unable to find element to print",n,t)}else window.print()})}const nc=Object.freeze(Object.defineProperty({__proto__:null,init:ec},Symbol.toStringTag,{value:"Module"})),It={opened:"data-ulu-print-details-opened"},rc=n=>`[${It[n]}]`,ic={selector:"details:not([open])"};function oc(n){const e=Object.assign({},ic,n);document.addEventListener(Q("beforePrint"),()=>{document.querySelectorAll(e.selector).forEach(t=>{t.open||(t.setAttribute(It.opened,!0),t.open=!0)})}),document.addEventListener(Q("afterPrint"),()=>{document.querySelectorAll(rc("opened")).forEach(t=>{t.removeAttribute(It.opened),t.open=!1})})}const ac=Object.freeze(Object.defineProperty({__proto__:null,attrs:It,init:oc},Symbol.toStringTag,{value:"Module"})),Bt=new J({type:"scroll-slider",baseAttribute:"data-ulu-scroll-slider"}),sc=Bt.attributeSelector("track"),lc=Bt.attributeSelector("control-context"),uc=[],cc={amount:Zi()};function fc(){Bt.init({withData:!0,events:["pageModified"],setup({element:n,data:e,initialize:t}){dc(n,e),t()}})}function dc(n,e){const t=Object.assign({},cc,e),r={track:n.querySelector(sc),controls:n.querySelector(lc)};uc.push(new Ot(r,t))}const pc=Object.freeze(Object.defineProperty({__proto__:null,init:fc,initializer:Bt},Symbol.toStringTag,{value:"Module"})),te=new J({type:"theme-toggle",baseAttribute:"data-ulu-theme-toggle"}),vc=te.attributeSelector("label"),hc=te.attributeSelector("icon"),Ho=te.getAttribute("remote"),Ur=te.getAttribute("init"),_i=te.getAttribute("state"),mc=n=>document.querySelectorAll(`[${Ho}="${n}"]`),Ei=n=>document.querySelectorAll(`[${Ho}="${n}"]:not([${Ur}])`),Bo=["target"],bc=$t(Bo),wi=(n,e)=>n?e():null,di={themes:{light:{label:"Light",value:"light",iconClass:"fas fa-moon",targetClass:"theme-light",mediaQuery:"(prefers-color-scheme: light)"},dark:{label:"Dark",iconClass:"fas fa-sun",targetClass:"theme-dark",mediaQuery:"(prefers-color-scheme: dark)"}},target:"body",group:null,onChange(n){},initialState:"light",checkMediaQuery:!1,savePreference:!1,storagePrefix:"ulu-theme-",debug:!1};let Si={...di};function gc(n){Si=Object.assign({},Si,n)}function xc(){te.init({events:["pageModified"],withData:!0,setup({element:n,data:e,initialize:t}){Wo(n,e),t()}})}function Wo(n,e){const t=Object.assign({},di,e);if(!bc(t)){console.error(`Missing a required option: ${Bo.join(", ")}`);return}const r=t.group,o={toggle:n,options:t},i=yc(t);if(!i){console.error("Unable to resolve initial key");return}Jt(i,o),n.addEventListener("click",s),l(),document.addEventListener(Q("pageModified"),l);function a(f){const h=Xr(t.target)[0].dataset.uluThemeToggleState,v=Ec(h,t);if(!v){console.error("Issue getting next theme key");return}Jt(v,{...o,event:f})}function s(f){a(f)}function l(){if(!r)return;Ei(r).forEach(d=>{d.addEventListener("click",s),te.initializeElement(d)})}function u(){if(!r)return;Ei(r).forEach(d=>{d.removeEventListener("click",s),d.removeAttribute(Ur,"")})}function m(){n.removeEventListener("click",s),n.removeAttribute(Ur,""),u(),document.removeEventListener(Q("pageModified"),l)}return{destroy:m,toggle:n,options:t,toggleState:a,setState(f){Jt(f,o)}}}function Jt(n,e){if(!n){console.error("Missing key");return}const{toggle:t,options:r}=e,{themes:o,group:i}=r,a={targets:Xr(r.target),toggles:[t,...i?mc(i):[]]};if(!a.targets.length||!a.toggles.length){console.error("Issue setting state, couldn't find needed elements",a);return}const s=o[n],l=wc(n,o),u={...e,key:n,elements:a,theme:s,otherThemes:l};r.debug&&te.log("Set state context",u);const m=Oi(l,"targetClass"),f=Oi(l,"iconClass");a.targets.forEach(d=>{d.setAttribute(_i,n),d.classList.remove(...m),d.classList.add(...gt(s.targetClass))}),a.toggles.forEach(d=>{const h=d.querySelector(vc),v=d.querySelector(hc);h&&(h.textContent=s.label),v&&(v.classList.remove(...f),v.classList.add(...gt(s.iconClass))),d.setAttribute(_i,n)}),r.onChange&&r.onChange(u),r.savePreference&&localStorage.setItem(jo(r),n)}function yc(n){const{savePreference:e,checkMediaQuery:t,themes:r,initialState:o}=n,i=jo(n),a=wi(e,()=>localStorage.getItem(i)),s=wi(t,()=>_c(r)),l=a||s||o;return n.debug&&(te.log("Preference Saved",a),te.log("Media Query Preference",s),te.log("Initial State:",o)),l||te.logError("Failed to resolve initial theme (pass 'initialState' to options)"),l}function _c(n){const e=Object.entries(n).find(([t,r])=>{if(r.mediaQuery)return window.matchMedia(r.mediaQuery).matches});return e?e[0]:null}function Ec(n,e){const{themes:t}=e,r=Object.keys(t),o=r.findIndex(a=>a===n),i=o===-1?0:(o+1)%r.length;return r[i]}function wc(n,e){return Object.entries(e).filter(([r])=>r!==n).map(([r,o])=>o)}function Oi(n,e){return n.reduce((t,r)=>t.concat(gt(r[e])),[])}function jo(n){const{storagePrefix:e,group:t}=n;return t?`${e}${t}`:e}const Sc=Object.freeze(Object.defineProperty({__proto__:null,defaults:di,init:xc,initializer:te,setDefaults:gc,setupToggle:Wo},Symbol.toStringTag,{value:"Module"})),Wt=new J({type:"details-group",baseAttribute:"data-ulu-details-group"}),Yt=Wt.getAttribute("child-init"),Oc={onlyOneOpen:!0,childSelector:":scope > details"};function Cc(){Wt.init({withData:!0,events:["pageModified"],setup({element:n,data:e,initialize:t}){Vo(n,e),t()}})}function Vo(n,e){const t=Object.assign({},Oc,e);try{o()}catch(s){console.error(s)}function r(){return n.querySelectorAll(t.childSelector)}function o(){r().forEach(s=>{s.hasAttribute(Yt)||(s.setAttribute(Yt,""),s.addEventListener("toggle",i))})}function i({target:s}){t.onlyOneOpen&&s.open&&r().forEach(l=>{l!==s&&l.open&&(l.open=!1)})}function a(){r().forEach(s=>{s.removeEventListener("toggle",i),s.removeAttribute(Yt)}),n.removeAttribute(Wt.getAttribute("init"))}return{destroy:a,element:n,setupChildren:o}}const Tc=Object.freeze(Object.defineProperty({__proto__:null,init:Cc,initializer:Wt,setupGroup:Vo},Symbol.toStringTag,{value:"Module"})),zo=Object.freeze(Object.defineProperty({__proto__:null,breakpoints:Ca,collapsible:Ma,detailsGroup:Tc,dialog:$a,flipcard:za,grid:Ga,get index(){return zo},modalBuilder:Ba,overflowScroller:Xa,overflowScrollerPager:Ua,page:ga,popover:Vs,print:nc,printDetails:ac,proxyClick:Gu,resizer:Pa,scrollSlider:pc,scrollpoint:Zu,slider:$u,tabs:Vu,themeToggle:Sc,tooltip:Zs},Symbol.toStringTag,{value:"Module"})),Ft=class Ft{constructor(e,t){this.options=Object.assign({},Ft.defaults,t),this.data=e,this.blob=new Blob([e],{type:this.options.type}),this.url=URL.createObjectURL(this.blob)}destroy(){return URL.revokeObjectURL(this.url)}getUrl(){return this.url}createLink(e){const t=document.createElement("a"),r=document.createTextNode(e);return t.setAttribute("download",this.options.filename),t.setAttribute("href",this.url),t.appendChild(r),t}static isBrowserSupported(){return"FileReader"in window}};z(Ft,"defaults",{filename:"filesave-file.txt",type:"text/plain;charset=utf-8"});let Zr=Ft;const Ac=Object.freeze(Object.defineProperty({__proto__:null,FileSave:Zr},Symbol.toStringTag,{value:"Module"}));function Mc(){Ti({iconClassClose:"fas fa-xmark",iconClassDragX:"fas fa-solid fa-grip-lines-vertical",iconClassPrevious:"fas fa-solid fa-chevron-left",iconClassNext:"fas fa-solid fa-chevron-right"})}const Pc=Object.freeze(Object.defineProperty({__proto__:null,configureIcons:Mc},Symbol.toStringTag,{value:"Module"})),Ko=Object.freeze(Object.defineProperty({__proto__:null,classLogger:wa,dom:ma,fileSave:Ac,floatingUi:$s,fontAwesome:Pc,id:Aa,get index(){return Ko},pauseYoutubeVideo:Ia},Symbol.toStringTag,{value:"Module"})),kc=Object.freeze(Object.defineProperty({__proto__:null,events:ha,settings:fa,ui:zo,utils:Ko},Symbol.toStringTag,{value:"Module"}));typeof window<"u"&&(window.ULU=kc);
@@ -181,6 +181,21 @@
181
181
  </li>
182
182
 
183
183
 
184
+ <li class="nav-tree__item ">
185
+
186
+ <a class="nav-tree__link " href="/frontend/demos/breakpoints-manager/">
187
+
188
+
189
+ <span class="nav-tree__text">
190
+ Breakpoint Manager
191
+ </span>
192
+
193
+ </a>
194
+
195
+
196
+ </li>
197
+
198
+
184
199
  <li class="nav-tree__item ">
185
200
 
186
201
  <a class="nav-tree__link " href="/frontend/demos/button/">
@@ -1973,21 +1988,6 @@
1973
1988
  </li>
1974
1989
 
1975
1990
 
1976
- <li class="nav-tree__item ">
1977
-
1978
- <a class="nav-tree__link " href="/frontend/sass/helpers/print/">
1979
-
1980
-
1981
- <span class="nav-tree__text">
1982
- Print
1983
- </span>
1984
-
1985
- </a>
1986
-
1987
-
1988
- </li>
1989
-
1990
-
1991
1991
  <li class="nav-tree__item ">
1992
1992
 
1993
1993
  <a class="nav-tree__link " href="/frontend/sass/helpers/typography/">
@@ -2453,6 +2453,21 @@
2453
2453
  </li>
2454
2454
 
2455
2455
 
2456
+ <li class="nav-tree__item ">
2457
+
2458
+ <a class="nav-tree__link " href="/frontend/javascript/utils-css/">
2459
+
2460
+
2461
+ <span class="nav-tree__text">
2462
+ utils/css
2463
+ </span>
2464
+
2465
+ </a>
2466
+
2467
+
2468
+ </li>
2469
+
2470
+
2456
2471
  <li class="nav-tree__item ">
2457
2472
 
2458
2473
  <a class="nav-tree__link " href="/frontend/javascript/utils-dom/">
@@ -2682,6 +2697,21 @@
2682
2697
  </li>
2683
2698
 
2684
2699
 
2700
+ <li class="nav-tree__item ">
2701
+
2702
+ <a class="nav-tree__link " href="/frontend/demos/breakpoints-manager/">
2703
+
2704
+
2705
+ <span class="nav-tree__text">
2706
+ Breakpoint Manager
2707
+ </span>
2708
+
2709
+ </a>
2710
+
2711
+
2712
+ </li>
2713
+
2714
+
2685
2715
  <li class="nav-tree__item ">
2686
2716
 
2687
2717
  <a class="nav-tree__link " href="/frontend/demos/button/">
@@ -4474,21 +4504,6 @@
4474
4504
  </li>
4475
4505
 
4476
4506
 
4477
- <li class="nav-tree__item ">
4478
-
4479
- <a class="nav-tree__link " href="/frontend/sass/helpers/print/">
4480
-
4481
-
4482
- <span class="nav-tree__text">
4483
- Print
4484
- </span>
4485
-
4486
- </a>
4487
-
4488
-
4489
- </li>
4490
-
4491
-
4492
4507
  <li class="nav-tree__item ">
4493
4508
 
4494
4509
  <a class="nav-tree__link " href="/frontend/sass/helpers/typography/">
@@ -4954,6 +4969,21 @@
4954
4969
  </li>
4955
4970
 
4956
4971
 
4972
+ <li class="nav-tree__item ">
4973
+
4974
+ <a class="nav-tree__link " href="/frontend/javascript/utils-css/">
4975
+
4976
+
4977
+ <span class="nav-tree__text">
4978
+ utils/css
4979
+ </span>
4980
+
4981
+ </a>
4982
+
4983
+
4984
+ </li>
4985
+
4986
+
4957
4987
  <li class="nav-tree__item ">
4958
4988
 
4959
4989
  <a class="nav-tree__link " href="/frontend/javascript/utils-dom/">
@@ -5076,6 +5106,12 @@
5076
5106
  <div class="toc">
5077
5107
  <ol>
5078
5108
 
5109
+ <li><a href="#version-0.1.0-beta.37-(unrealized)">Version 0.1.0-beta.37 (unrealized)</a>
5110
+ </li>
5111
+
5112
+ <li><a href="#version-0.1.0-beta.36-(unrealized)">Version 0.1.0-beta.36 (unrealized)</a>
5113
+ </li>
5114
+
5079
5115
  <li><a href="#version-0.1.0-beta.35">Version 0.1.0-beta.35</a>
5080
5116
  </li>
5081
5117
 
@@ -5238,6 +5274,77 @@
5238
5274
 
5239
5275
  <div class="changelog">
5240
5276
  <h1 id="change-log" tabindex="-1">Change Log</h1>
5277
+ <h2 id="version-0.1.0-beta.37-(unrealized)" tabindex="-1">Version 0.1.0-beta.37 (unrealized)</h2>
5278
+ <ul>
5279
+ <li><strong>scss/</strong>
5280
+ <ul>
5281
+ <li><strong>helpers/display</strong>
5282
+ <ul>
5283
+ <li>remove clearfix class styling</li>
5284
+ </ul>
5285
+ </li>
5286
+ </ul>
5287
+ </li>
5288
+ </ul>
5289
+ <h2 id="version-0.1.0-beta.36-(unrealized)" tabindex="-1">Version 0.1.0-beta.36 (unrealized)</h2>
5290
+ <ul>
5291
+ <li><strong>scss/</strong>
5292
+ <ul>
5293
+ <li><strong>components/button-verbose</strong>
5294
+ <ul>
5295
+ <li>Add &quot;border-width&quot; and &quot;border-color&quot; options with ability to fallback to button defaults for each. No borders are added by default. Options descriptions added to sass api docs.</li>
5296
+ </ul>
5297
+ </li>
5298
+ <li><strong>components/modal</strong>
5299
+ <ul>
5300
+ <li>Add fullscreen size modifier</li>
5301
+ </ul>
5302
+ </li>
5303
+ <li><strong>components/data-grid</strong>
5304
+ <ul>
5305
+ <li>Create option &quot;rule-fade-duration&quot; which when enabled (can be disabled by passing false) will hide the rules for the grid until the grid's initialization script has finished (which gives positioning information about the column arrangement so the appropriate rules can be shown per column/row).</li>
5306
+ </ul>
5307
+ </li>
5308
+ </ul>
5309
+ </li>
5310
+ <li><strong>js</strong>
5311
+ <ul>
5312
+ <li><strong>settings</strong>
5313
+ <ul>
5314
+ <li>Update &quot;wrapSettingString&quot; function to have second argument for &quot;transform&quot; allowing default settings strings that can also be transformed. This was used in breakpoint module so user can match &quot;cssvarPrefix&quot; to create a default value of &quot;--PREFIX-breakpoint&quot; for example, where PREFIX is dynamic at time of string is used</li>
5315
+ <li>Add &quot;cssvarPrefix&quot; to match scss cssvar module's prefix value</li>
5316
+ </ul>
5317
+ </li>
5318
+ <li><strong>ui/breakpoint</strong>
5319
+ <ul>
5320
+ <li>Fix all typos (options and methods) of &quot;psuedo&quot; to &quot;pseudo&quot; (valueFromPseudo, pseudoSelector)</li>
5321
+ <li>Bring in new setting (from settings.js) for &quot;cssvarPrefix&quot; for the breakpoint customProperty default value</li>
5322
+ <li>Create test for this in demos</li>
5323
+ </ul>
5324
+ </li>
5325
+ <li><strong>ui/collapsibles</strong>
5326
+ <ul>
5327
+ <li>Fix bug with &quot;focusoutCloses&quot; check collapsible content for focus before closing (so only close if focusout led outside the content) which is the intended behavior. Note this is mechanism used to control popover's so it fixes the bug there as well</li>
5328
+ </ul>
5329
+ </li>
5330
+ <li><strong>ui/modal-builder</strong>
5331
+ <ul>
5332
+ <li>Update all templates options (templateCloseIcon, templateResizerIcon, template) to include new option for &quot;baseClass&quot; so that base BEM selector can easily be changed (ie. .namespace-modal for example)</li>
5333
+ </ul>
5334
+ </li>
5335
+ <li><strong>ui/slider.js</strong>
5336
+ <ul>
5337
+ <li>Implement classAccessiblyHidden option to allow users to customize its styling. Will still default to &quot;hidden-visually.&quot;</li>
5338
+ </ul>
5339
+ </li>
5340
+ <li><strong>utils/css.js</strong>
5341
+ <ul>
5342
+ <li>Add new module to hold utility functions related to CSS, currently just new function getCustomProperty which is used in ui/breakpoints module</li>
5343
+ </ul>
5344
+ </li>
5345
+ </ul>
5346
+ </li>
5347
+ </ul>
5241
5348
  <h2 id="version-0.1.0-beta.35" tabindex="-1">Version 0.1.0-beta.35</h2>
5242
5349
  <ul>
5243
5350
  <li><strong>scss/</strong>
@@ -181,6 +181,21 @@
181
181
  </li>
182
182
 
183
183
 
184
+ <li class="nav-tree__item ">
185
+
186
+ <a class="nav-tree__link " href="/frontend/demos/breakpoints-manager/">
187
+
188
+
189
+ <span class="nav-tree__text">
190
+ Breakpoint Manager
191
+ </span>
192
+
193
+ </a>
194
+
195
+
196
+ </li>
197
+
198
+
184
199
  <li class="nav-tree__item ">
185
200
 
186
201
  <a class="nav-tree__link " href="/frontend/demos/button/">
@@ -1973,21 +1988,6 @@
1973
1988
  </li>
1974
1989
 
1975
1990
 
1976
- <li class="nav-tree__item ">
1977
-
1978
- <a class="nav-tree__link " href="/frontend/sass/helpers/print/">
1979
-
1980
-
1981
- <span class="nav-tree__text">
1982
- Print
1983
- </span>
1984
-
1985
- </a>
1986
-
1987
-
1988
- </li>
1989
-
1990
-
1991
1991
  <li class="nav-tree__item ">
1992
1992
 
1993
1993
  <a class="nav-tree__link " href="/frontend/sass/helpers/typography/">
@@ -2453,6 +2453,21 @@
2453
2453
  </li>
2454
2454
 
2455
2455
 
2456
+ <li class="nav-tree__item ">
2457
+
2458
+ <a class="nav-tree__link " href="/frontend/javascript/utils-css/">
2459
+
2460
+
2461
+ <span class="nav-tree__text">
2462
+ utils/css
2463
+ </span>
2464
+
2465
+ </a>
2466
+
2467
+
2468
+ </li>
2469
+
2470
+
2456
2471
  <li class="nav-tree__item ">
2457
2472
 
2458
2473
  <a class="nav-tree__link " href="/frontend/javascript/utils-dom/">
@@ -2682,6 +2697,21 @@
2682
2697
  </li>
2683
2698
 
2684
2699
 
2700
+ <li class="nav-tree__item ">
2701
+
2702
+ <a class="nav-tree__link " href="/frontend/demos/breakpoints-manager/">
2703
+
2704
+
2705
+ <span class="nav-tree__text">
2706
+ Breakpoint Manager
2707
+ </span>
2708
+
2709
+ </a>
2710
+
2711
+
2712
+ </li>
2713
+
2714
+
2685
2715
  <li class="nav-tree__item ">
2686
2716
 
2687
2717
  <a class="nav-tree__link " href="/frontend/demos/button/">
@@ -4474,21 +4504,6 @@
4474
4504
  </li>
4475
4505
 
4476
4506
 
4477
- <li class="nav-tree__item ">
4478
-
4479
- <a class="nav-tree__link " href="/frontend/sass/helpers/print/">
4480
-
4481
-
4482
- <span class="nav-tree__text">
4483
- Print
4484
- </span>
4485
-
4486
- </a>
4487
-
4488
-
4489
- </li>
4490
-
4491
-
4492
4507
  <li class="nav-tree__item ">
4493
4508
 
4494
4509
  <a class="nav-tree__link " href="/frontend/sass/helpers/typography/">
@@ -4954,6 +4969,21 @@
4954
4969
  </li>
4955
4970
 
4956
4971
 
4972
+ <li class="nav-tree__item ">
4973
+
4974
+ <a class="nav-tree__link " href="/frontend/javascript/utils-css/">
4975
+
4976
+
4977
+ <span class="nav-tree__text">
4978
+ utils/css
4979
+ </span>
4980
+
4981
+ </a>
4982
+
4983
+
4984
+ </li>
4985
+
4986
+
4957
4987
  <li class="nav-tree__item ">
4958
4988
 
4959
4989
  <a class="nav-tree__link " href="/frontend/javascript/utils-dom/">