material-inspired-component-library 4.0.0 → 4.0.2

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 (44) hide show
  1. package/components/accordion/README.md +42 -3
  2. package/components/alert/README.md +19 -7
  3. package/components/button/README.md +1 -1
  4. package/components/button/index.scss +23 -20
  5. package/components/dialog/README.md +5 -5
  6. package/components/divider/index.scss +9 -3
  7. package/components/iconbutton/README.md +1 -1
  8. package/components/iconbutton/index.scss +20 -17
  9. package/components/list/README.md +18 -16
  10. package/components/list/index.scss +90 -68
  11. package/components/menu/README.md +2 -1
  12. package/components/menu/index.scss +6 -18
  13. package/components/select/README.md +7 -2
  14. package/components/select/index.scss +2 -3
  15. package/components/sidesheet/README.md +13 -19
  16. package/components/sidesheet/index.scss +15 -16
  17. package/components/textfield/index.ts +26 -0
  18. package/components/timepicker/index.scss +268 -0
  19. package/components/timepicker/index.ts +113 -0
  20. package/dist/button.css +1 -1
  21. package/dist/components/timepicker/index.d.ts +5 -0
  22. package/dist/divider.css +1 -1
  23. package/dist/iconbutton.css +1 -1
  24. package/dist/list.css +1 -1
  25. package/dist/menu.css +1 -1
  26. package/dist/micl.css +1 -1
  27. package/dist/micl.js +1 -1
  28. package/dist/select.css +1 -1
  29. package/dist/sidesheet.css +1 -1
  30. package/dist/timepicker.css +1 -0
  31. package/dist/timepicker.js +1 -0
  32. package/docs/accordion.html +31 -17
  33. package/docs/button.html +42 -15
  34. package/docs/iconbutton.html +258 -164
  35. package/docs/index.html +11 -8
  36. package/docs/list.html +52 -44
  37. package/docs/menu.html +2 -1
  38. package/docs/micl.css +1 -1
  39. package/docs/micl.js +1 -1
  40. package/docs/sidesheet.html +3 -2
  41. package/docs/timepicker.html +113 -0
  42. package/micl.ts +3 -1
  43. package/package.json +2 -4
  44. package/styles.scss +1 -0
package/docs/micl.js CHANGED
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.micl=t():e.micl=t()}(self,()=>(()=>{"use strict";var e={d:(t,n)=>{for(var i in n)e.o(n,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:n[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};return(()=>{e.r(t),e.d(t,{default:()=>M});const n="dialog.micl-bottomsheet",i=(()=>{const e=e=>{let t=parseInt(e.dataset.miclfitheight||"0",10),n=parseInt(window.getComputedStyle(e).getPropertyValue("max-block-size"),10),i=(e.dataset.miclsnapheights||"").split(",").map(Number).filter(e=>!isNaN(e)&&e>=0&&e<=n);return t<1&&(t=Math.min(e.getBoundingClientRect().height,n),e.dataset.miclfitheight=`${t}`),[...new Set(i.concat([t]).sort())]},t=(t,n)=>{let i=t.getBoundingClientRect().height,l=e(t);return l.filter(e=>e>i+4)[0]||l[n?l.length-1:0]},i=(e,t)=>{t<1?(delete e.dataset.miclfitheight,e.style.removeProperty("--md-sys-bottomsheet-height"),e[e.popover?"hidePopover":"close"]()):e.style.setProperty("--md-sys-bottomsheet-height",`${t}px`)};return{initialize:l=>{if(!l.matches(n)||l.dataset.miclinitialized)return;l.dataset.miclinitialized="1";const o=l.querySelector(".micl-bottomsheet__headline");if(!o)return;const r=o.querySelector(".micl-bottomsheet__draghandle");r?.addEventListener("click",()=>{i(l,t(l,!1))});let a,s,c=!1,m=!1;function d(e){const t=e.clientY;c&&Math.abs(a-t)>4&&(c=!1,m=!0,l.classList.add("micl-bottomsheet--resizing")),m&&i(l,s+a-t)}function p(n){c=!1,l.classList.remove("micl-bottomsheet--resizing"),m&&(m=!1,n.clientY<a?i(l,t(l,!0)):l.getBoundingClientRect().height<48?i(l,0):i(l,(t=>{let n=t.getBoundingClientRect().height,i=e(t),l=i.filter(e=>e<n-4);return l[l.length-1]||i[0]})(l)),document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",p))}o.addEventListener("mousedown",e=>{e.eventPhase===Event.AT_TARGET&&(c=!0,e.preventDefault(),a=e.clientY,s=l.getBoundingClientRect().height,document.addEventListener("mousemove",d),document.addEventListener("mouseup",p))})},cleanup:e=>{e.matches(n)&&(e.classList.remove("micl-bottomsheet--resizing"),delete e.dataset.miclinitialized,delete e.dataset.miclfitheight)}}})(),l="button[popovertarget],button.micl-button--toggle",o=(()=>{const e=e=>{e.target&&e.target instanceof HTMLButtonElement&&(e.target.popoverTargetElement instanceof HTMLDialogElement&&(e.target.popoverTargetElement.open?e.target.popoverTargetElement.close():e.target.popoverTargetElement.showModal()),e.target.classList.contains("micl-button--toggle")&&(e.target.classList.add("micl-button--toggled"),e.target.classList.toggle("micl-button--selected"),e.target.dataset.miclalt&&([e.target.textContent,e.target.dataset.miclalt]=[e.target.dataset.miclalt,e.target.textContent])))};return{initialize:t=>{t.matches("button[popovertarget],button.micl-button--toggle")&&!t.dataset.miclinitialized&&(t.dataset.miclinitialized="1",(t.popoverTargetElement instanceof HTMLDialogElement&&!t.popoverTargetElement.hasAttribute("popover")||t.classList.contains("micl-button--toggle"))&&t.addEventListener("click",e))},cleanup:t=>{t.matches("button[popovertarget],button.micl-button--toggle")&&(document.removeEventListener("click",e),delete t.dataset.miclinitialized)}}})(),r=".micl-checkbox-group",a=(()=>{const e=e=>{const t=e.querySelector(".micl-checkbox__parent");return t?.closest(r)===e?t:null},t=n=>{const i=e(n);if(!i)return!1;let l=0,o=0;return n.querySelectorAll('input[type="checkbox"].micl-checkbox').forEach(e=>{if(e!==i){const i=e.closest(r);i===n?(l++,e.checked&&!e.indeterminate&&o++):e.classList.contains("micl-checkbox__parent")&&i?.parentElement?.closest(r)===n&&(l++,t(i)&&o++)}}),0===o?(i.checked=!1,i.indeterminate=!1):o===l?(i.checked=!0,i.indeterminate=!1):(i.checked=!0,i.indeterminate=!0),o===l},n=(e,t)=>{e.querySelectorAll('input[type="checkbox"].micl-checkbox').forEach(i=>{const l=i.closest(r);l===e?i.checked=t:i.classList.contains("micl-checkbox__parent")&&l?.parentElement?.closest(r)===e&&(i.checked=t,n(l,t))})},i=(i,l)=>{const o=e(i);if(!o)return;l===o&&n(i,l.checked);let a,s=i;do{a=s,s=s.parentElement?.closest(r)}while(s);t(a)};return{initialize:e=>{e.matches(r)&&!e.dataset.miclinitialized&&(e.dataset.miclinitialized="1",e.addEventListener("change",t=>{const n=t.target;n.classList.contains("micl-checkbox")&&(t.stopPropagation(),i(e,n))}),i(e,null))}}})(),s=".micl-list-item-one,.micl-list-item-two,.micl-list-item-three",c=(()=>{const e=e=>!!e&&e.classList.contains("micl-list-item--disabled");return{keydown:t=>{if(!(t instanceof KeyboardEvent&&t.target instanceof Element&&t.target.matches(".micl-list-item-one,.micl-list-item-two,.micl-list-item-three")))return;const n=t.target.parentElement;if(!n)return;let i=[];if(n instanceof HTMLDetailsElement?i=Array.from(n.parentElement?.children||[]).map(t=>{let n=t.querySelector(":scope > summary");return e(n)?null:n}).filter(e=>!!e):n instanceof HTMLUListElement&&(i=Array.from(n.children).map(t=>t instanceof HTMLLIElement&&!e(t)?t:null).filter(e=>!!e)),0===i.length)return;let l=i.findIndex(e=>(e=>!!e&&e.matches(":has(input[type=checkbox]:checked)"))(e)),o=i.findIndex(e=>0===e.tabIndex),r=o;switch(t.key){case"ArrowDown":r=(o+1)%i.length,t.preventDefault();break;case"ArrowUp":r=(o-1+i.length)%i.length,t.preventDefault();break;case"Tab":-1===l?0!==o&&(i[o].tabIndex=-1,i[0].tabIndex=0):l!==o&&(i[o].tabIndex=-1,i[l].tabIndex=0);break;case"Enter":case" ":const e=t.target.querySelector("input[type=checkbox]");e instanceof HTMLInputElement&&(e.checked=!e.checked)}if(r!==o){i[o].tabIndex=-1,i[r].tabIndex=0,i[r].focus();const e=i[r].querySelector(":scope > button");e?.dispatchEvent(new MouseEvent("mouseenter",{bubbles:!0,cancelable:!0,view:window}))}}}})(),m=".micl-menu[popover]",d=(()=>{const e=(e,t)=>{const n=e.getBoundingClientRect(),i=t.getBoundingClientRect();return(n.x>i.x?"right ":"left ")+(n.y>i.y?"bottom":"top")};return{initialize:t=>{if(!t.matches(".micl-menu[popover]")||t.dataset.miclinitialized)return;t.dataset.miclinitialized="1";const n=document.querySelector(`[popovertarget="${t.id}"]`);n&&t.addEventListener("beforetoggle",i=>{"open"===i.oldState&&(t.style.transformOrigin=e(n,t))}),n&&t.addEventListener("toggle",i=>{"closed"===i.oldState&&(t.style.transformOrigin=e(n,t))}),t.querySelectorAll(":scope > ul.micl-list > li > button[popovertarget]").forEach(e=>{if(e.popoverTargetElement?.matches(".micl-menu[popover]")){let t,n=`--${e.popoverTargetElement.id}`;e.popoverTargetElement instanceof HTMLElement&&(e.style.setProperty("anchor-name",n),e.popoverTargetElement.style.insetBlockStart=`anchor(${n} start)`,e.popoverTargetElement.style.insetInlineStart=`anchor(${n} end)`),e.addEventListener("mouseenter",()=>{e.popoverTargetElement instanceof HTMLElement&&e.popoverTargetElement.showPopover()}),e.addEventListener("mouseleave",()=>{t=setTimeout(()=>{e.popoverTargetElement instanceof HTMLElement&&!e.popoverTargetElement.matches(":hover")&&e.popoverTargetElement.hidePopover()},100)}),e.popoverTargetElement.addEventListener("mouseenter",()=>{clearTimeout(t)}),e.popoverTargetElement.addEventListener("mouseleave",()=>{e.popoverTargetElement instanceof HTMLElement&&e.popoverTargetElement.hidePopover()})}})}}})(),p=".micl-navigationrail__item[for]:not(.micl-navigationrail__item--disabled)",u={keydown:e=>{if(!(e instanceof KeyboardEvent&&e.target instanceof HTMLLabelElement&&e.target.matches(p)))return;const t=document.getElementById(e.target.htmlFor);if(t)switch(e.key){case"Enter":case" ":e.preventDefault(),t.checked||(t.checked=!t.checked)}}},g="input[type=range].micl-slider-xs,input[type=range].micl-slider-s,input[type=range].micl-slider-m,input[type=range].micl-slider-l,input[type=range].micl-slider-xl",h=(()=>{const e=String.fromCharCode(8226),t=String.fromCharCode(8201),n=e=>e.parentElement?.classList.contains("micl-slider__container")?e.parentElement:null,i=(e,t)=>{e.dataset.miclsliderticks=t},l=e=>{let t=JSON.stringify(e.value+""),i=n(e);i&&(i.style.setProperty("--md-sys-slider-value",e.value),i.style.setProperty("--md-sys-slider-tip",t)),e.style.setProperty("--md-sys-slider-value",e.value),e.style.setProperty("--md-sys-slider-tip",t)};return{initialize:o=>{if(!o.matches(g))return;(e=>{let t=e.max||"100";n(e)?.style.setProperty("--md-sys-slider-max",t),e.style.setProperty("--md-sys-slider-max",t)})(o),(e=>{let t=e.min||"0";n(e)?.style.setProperty("--md-sys-slider-min",t),e.style.setProperty("--md-sys-slider-min",t)})(o),l(o),(e=>{let t=n(e);if(t){const n=window.getComputedStyle(e);["--md-sys-slider-handle-height","--md-sys-slider-track-height"].forEach(e=>{t.style.setProperty(e,n.getPropertyValue(e))})}})(o);const r=parseFloat(o.max),a=parseFloat(o.min),s=o.getBoundingClientRect(),c=((e,t,n)=>{const i=[];return e.list&&t>n&&e.list.querySelectorAll("option[value]").forEach(e=>{let l=parseFloat(e.value);!isNaN(l)&&l>=n&&l<=t&&i.push(l)}),i})(o,r,a).sort((e,t)=>e-t).map(e=>Math.round(100*(e-a)/(r-a)));if(c.length>0){const n=document.createElement("canvas"),l=n.getContext("2d");if(l){l.font=window.getComputedStyle(o).getPropertyValue("font");let n=l.measureText(t).width,r=l.measureText(e).width,a=s.width-10,m=0,d="";c.forEach(i=>{let l=a*i/100,o=Math.round((l-m)/n)-1;for(let e=0;e<o;e++)d+=t,m+=n;d+=e,m+=r}),i(o,d)}n.remove()}else i(o,e)},input:e=>{e.target.matches(g)&&e.target instanceof HTMLInputElement&&!e.target.disabled&&l(e.target)}}})(),f=(()=>{const e=e=>"willValidate"in e,t=t=>{const n=t.target;e(n)&&n.setCustomValidity("")},n=e=>{const n=e.dataset.miclvalidateMessage||"";if(n&&e.matches("[data-miclvalidate-checkboxes-name]")){const i=e.dataset.miclvalidateCheckboxesName||"",l=e.dataset.miclvalidateCheckboxesCountEqual||"",o=e.dataset.miclvalidateCheckboxesCountMax||"",r=e.dataset.miclvalidateCheckboxesCountMin||"";if(i&&(l||o||r)){const a=e.querySelectorAll(`input[type="checkbox"][name="${i}"]:checked`).length,s=parseInt(l,10),c=parseInt(o,10),m=parseInt(r,10);let d=!isNaN(s)&&a!=s||!isNaN(c)&&a>c||!isNaN(m)&&a<m;e.setCustomValidity(d?n:"");const p=e.querySelector(`input[type="checkbox"][name="${i}"]`);p&&(p.setCustomValidity(d?n:""),d?p.addEventListener("change",t):p.removeEventListener("change",t))}}},i=(t,i)=>{let l=!1;return t.querySelectorAll("fieldset").forEach(n),Array.from(t.elements).forEach(t=>{if(e(t)&&t.willValidate){t.checkValidity()||(l=!0);let n=(t=>{if(!t.parentElement||!e(t))return!1;let n=!1;return t instanceof HTMLInputElement&&"checkbox"===t.type&&t.classList.contains("micl-checkbox")?n=(e=>(e.classList.toggle("micl-checkbox--error",!!e.validationMessage),!1))(t):(t.parentElement.classList.contains("micl-textfield-outlined")||t.parentElement.classList.contains("micl-textfield-filled"))&&(n=((e,t)=>{e.classList.toggle("micl-textfield--error",!!t);const n=e.querySelector(".micl-textfield__supporting-text");return n&&(t?(n.dataset.micltext||(n.dataset.micltext=n.textContent),n.textContent=t):"micltext"in n.dataset&&(n.textContent=n.dataset.micltext||"")),!!t&&!!n})(t.parentElement,t.validationMessage)),n})(t);!n&&i&&t.reportValidity()}}),!l};return{validateFieldSet:(e,t)=>(n(e),i(e,t)),validateForm:(e,t)=>i(e,t)}})(),y=".micl-stepper",E=".micl-stepper__action-back,.micl-stepper__action-next",v=".micl-stepper__header button[role=tab][aria-controls]",b="micl-stepper__step",L="."+b,x=(()=>{const e=e=>e.querySelector(`${L}[aria-current=step]`)||n(e,e.querySelector(L)),t=(e,t)=>Array.from(e.querySelectorAll(L)).indexOf(t)+1,n=(e,t)=>{if(!t)return null;let n=0;e.querySelectorAll(L).forEach((e,i)=>{e.setAttribute("aria-current",e===t?"step":"false"),e===t&&(n=i)});const i=e.querySelectorAll(v).item(n);return e.querySelectorAll(v).forEach((e,t)=>{e.setAttribute("aria-selected",e===i?"true":"false")}),o(e,t),t},i=e=>{const t=e.currentTarget;"transform"===e.propertyName&&t&&(t.classList.remove("micl-stepper__step--fromselected","micl-stepper__step--toselected"),t.removeEventListener("transitionend",i))},l=e=>e.classList.contains("micl-stepper__action-back"),o=(e,n)=>{((e,t)=>{Array.from(e.querySelectorAll(E)).forEach(e=>{const n=l(e)?"previousElementSibling":"nextElementSibling",i=t[n]?.classList.contains(b);e.classList.toggle("micl-hidden",!i)})})(e,n),((e,n)=>{const i=t(e,n);e.querySelectorAll("[data-step]").forEach(e=>{const t=e.dataset.step!=`${i}`;e.classList.toggle("micl-hidden",t)})})(e,n),((e,n)=>{const i=t(e,n),l=e.querySelectorAll(L).length,o=!e.classList.contains("micl-stepper--nonlinear"),r=(t,n)=>{e.querySelectorAll(t).forEach(e=>{e.textContent=n})};r(".micl-stepper__progress-current",`${i}`),r(".micl-stepper__progress-total",`${l}`),e.querySelectorAll(".micl-stepper__progress-dots").forEach(e=>{const t=document.createDocumentFragment();e.innerHTML="";for(let e=1;e<=l;e++){let n=document.createElement("span");n.classList.add("micl-stepper__progress-dot"),(o&&e<=i||!o&&e===i)&&n.classList.add("micl-stepper__progress--done"),t.appendChild(n)}e.appendChild(t)}),e.querySelectorAll(v).forEach((e,t)=>{e.classList.toggle("micl-stepper__progress--done",o?t+1<=i:t+1===i)})})(e,n)};return{initialize:t=>{if(!t.matches(y)||t.dataset.miclinitialized)return;t.dataset.miclinitialized="1";const r=e(t),a=t.querySelector(".micl-stepper__header");r&&(o(t,r),a?.querySelectorAll("button[role=tab][aria-controls]").forEach(e=>{e.addEventListener("click",()=>{if("ariaControlsElements"in Element.prototype&&e.ariaControlsElements)n(t,e.ariaControlsElements[0]);else{const i=e.getAttribute("aria-controls");i&&n(t,document.getElementById(i))}})})),Array.from(t.querySelectorAll(E)).forEach(o=>{o.addEventListener("click",function(o){const r=l(this),a=e(t);if(!a||!r&&a instanceof HTMLFieldSetElement&&!f.validateFieldSet(a,!0))return void(r||o.stopImmediatePropagation());const s=a[r?"previousElementSibling":"nextElementSibling"];s?.classList.contains(b)&&((e,t,l)=>{t.addEventListener("transitionend",i),t.classList.add("micl-stepper__step--fromselected"),t.offsetHeight,l.addEventListener("transitionend",i),l.classList.add("micl-stepper__step--toselected"),l.offsetHeight,n(e,l)})(t,a,s)},!0)}),t instanceof HTMLFormElement&&t.addEventListener("submit",e=>{e.submitter?.classList.contains("micl-form--dosubmit")||e.preventDefault(),f.validateForm(t,!0)||e.stopImmediatePropagation()},!0)}}})(),T=".micl-textfield-outlined > input,.micl-textfield-filled > input",S=".micl-textfield-outlined > textarea,.micl-textfield-filled > textarea",k=".micl-textfield-filled > select,.micl-textfield-outlined > select",_=(()=>{const e=e=>{if(!e.parentElement||e instanceof HTMLSelectElement||!e.maxLength)return;const t=e.parentElement.querySelector(".micl-textfield__character-counter");t&&(t.textContent=`${e.value.length}/${e.maxLength}`)};return{initialize:t=>{t.dataset.miclinitialized||(t.dataset.miclinitialized="1",t.value&&(t.dataset.miclvalue="1"),t instanceof HTMLSelectElement&&t.addEventListener("mousedown",()=>{const e=t.getBoundingClientRect(),n=e.top,i=window.innerHeight-e.bottom;!t.matches(":open")&&t.style.setProperty("--md-sys-select-picker-origin",n>i?"left bottom":"left top")}),e(t))},input:t=>{t.target.matches(`${T},${k},${S}`)&&t.target.dataset.miclinitialized&&!t.target.disabled&&(t.target.value?t.target.dataset.miclvalue="1":delete t.target.dataset.miclvalue,e(t.target))}}})(),M=(()=>{const e={[n]:{component:i,type:HTMLDialogElement},[l]:{component:o,type:HTMLButtonElement},[r]:{component:a,type:HTMLElement},[s]:{component:c,type:HTMLElement},[m]:{component:d,type:HTMLElement},[p]:{component:u,type:HTMLLabelElement},[k]:{component:_,type:HTMLSelectElement},[g]:{component:h,type:HTMLInputElement},[y]:{component:x,type:HTMLElement},[S]:{component:_,type:HTMLTextAreaElement},[T]:{component:_,type:HTMLInputElement}},t=Object.keys(e).join(","),f=t=>{for(const[n,{component:i,type:l}]of Object.entries(e))if(t.matches(n)&&t instanceof l&&"function"==typeof i.initialize)return void i.initialize(t)},E=e=>{e.querySelectorAll(t).forEach(f),e.querySelectorAll('[class*="micl-"]').forEach(e=>{"1"===window.getComputedStyle(e).getPropertyValue("--micl-ripple")&&e.addEventListener("pointerdown",t=>{if(t.currentTarget.classList.contains("micl-card--nonactionable"))return;t.stopPropagation();let n=e.getBoundingClientRect();e.style.setProperty("--micl-x",t.clientX-n.left+"px"),e.style.setProperty("--micl-y",t.clientY-n.top+"px")})})},v=t=>{for(const[n,{component:i,type:l}]of Object.entries(e))if(t.matches(n)&&t instanceof l&&"function"==typeof i.cleanup)return void i.cleanup(t)},b=e=>{e.querySelectorAll(t).forEach(v)},L=t=>{for(const[n,{component:i,type:l}]of Object.entries(e))if(t.target.matches(n)&&t.target instanceof l&&["input","keydown"].includes(t.type)&&"function"==typeof i[t.type])return void i[t.type]?.(t)},M=()=>{new MutationObserver(e=>{e.forEach(e=>{"childList"===e.type&&(e.addedNodes.forEach(e=>{e instanceof HTMLElement&&(e.matches(t)&&f(e),e.querySelectorAll(t).forEach(f))}),e.removedNodes.forEach(e=>{e instanceof HTMLElement&&(e.matches(t)&&v(e),b(e))}))})}).observe(document.body,{childList:!0,subtree:!0}),E(document),document.addEventListener("input",L),document.addEventListener("keydown",L)},C=()=>{document.removeEventListener("DOMContentLoaded",C),M()};return"loading"!==document.readyState?M():document.addEventListener("DOMContentLoaded",C),{initialize:()=>E(document),cleanup:()=>b(document)}})()})(),t})());
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.micl=t():e.micl=t()}(self,()=>(()=>{"use strict";var e={d:(t,n)=>{for(var i in n)e.o(n,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:n[i]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};return(()=>{e.r(t),e.d(t,{default:()=>w});const n="dialog.micl-bottomsheet",i=(()=>{const e=e=>{let t=parseInt(e.dataset.miclfitheight||"0",10),n=parseInt(window.getComputedStyle(e).getPropertyValue("max-block-size"),10),i=(e.dataset.miclsnapheights||"").split(",").map(Number).filter(e=>!isNaN(e)&&e>=0&&e<=n);return t<1&&(t=Math.min(e.getBoundingClientRect().height,n),e.dataset.miclfitheight=`${t}`),[...new Set(i.concat([t]).sort())]},t=(t,n)=>{let i=t.getBoundingClientRect().height,l=e(t);return l.filter(e=>e>i+4)[0]||l[n?l.length-1:0]},i=(e,t)=>{t<1?(delete e.dataset.miclfitheight,e.style.removeProperty("--md-sys-bottomsheet-height"),e[e.popover?"hidePopover":"close"]()):e.style.setProperty("--md-sys-bottomsheet-height",`${t}px`)};return{initialize:l=>{if(!l.matches(n)||l.dataset.miclinitialized)return;l.dataset.miclinitialized="1";const o=l.querySelector(".micl-bottomsheet__headline");if(!o)return;const r=o.querySelector(".micl-bottomsheet__draghandle");r?.addEventListener("click",()=>{i(l,t(l,!1))});let a,s,c=!1,m=!1;function d(e){const t=e.clientY;c&&Math.abs(a-t)>4&&(c=!1,m=!0,l.classList.add("micl-bottomsheet--resizing")),m&&i(l,s+a-t)}function p(n){c=!1,l.classList.remove("micl-bottomsheet--resizing"),m&&(m=!1,n.clientY<a?i(l,t(l,!0)):l.getBoundingClientRect().height<48?i(l,0):i(l,(t=>{let n=t.getBoundingClientRect().height,i=e(t),l=i.filter(e=>e<n-4);return l[l.length-1]||i[0]})(l)),document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",p))}o.addEventListener("mousedown",e=>{e.eventPhase===Event.AT_TARGET&&(c=!0,e.preventDefault(),a=e.clientY,s=l.getBoundingClientRect().height,document.addEventListener("mousemove",d),document.addEventListener("mouseup",p))})},cleanup:e=>{e.matches(n)&&(e.classList.remove("micl-bottomsheet--resizing"),delete e.dataset.miclinitialized,delete e.dataset.miclfitheight)}}})(),l="button[popovertarget],button.micl-button--toggle",o=(()=>{const e=e=>{e.target&&e.target instanceof HTMLButtonElement&&(e.target.popoverTargetElement instanceof HTMLDialogElement&&(e.target.popoverTargetElement.open?e.target.popoverTargetElement.close():e.target.popoverTargetElement.showModal()),e.target.classList.contains("micl-button--toggle")&&(e.target.classList.add("micl-button--toggled"),e.target.classList.toggle("micl-button--selected"),e.target.dataset.miclalt&&([e.target.textContent,e.target.dataset.miclalt]=[e.target.dataset.miclalt,e.target.textContent])))};return{initialize:t=>{t.matches("button[popovertarget],button.micl-button--toggle")&&!t.dataset.miclinitialized&&(t.dataset.miclinitialized="1",(t.popoverTargetElement instanceof HTMLDialogElement&&!t.popoverTargetElement.hasAttribute("popover")||t.classList.contains("micl-button--toggle"))&&t.addEventListener("click",e))},cleanup:t=>{t.matches("button[popovertarget],button.micl-button--toggle")&&(document.removeEventListener("click",e),delete t.dataset.miclinitialized)}}})(),r=".micl-checkbox-group",a=(()=>{const e=e=>{const t=e.querySelector(".micl-checkbox__parent");return t?.closest(r)===e?t:null},t=n=>{const i=e(n);if(!i)return!1;let l=0,o=0;return n.querySelectorAll('input[type="checkbox"].micl-checkbox').forEach(e=>{if(e!==i){const i=e.closest(r);i===n?(l++,e.checked&&!e.indeterminate&&o++):e.classList.contains("micl-checkbox__parent")&&i?.parentElement?.closest(r)===n&&(l++,t(i)&&o++)}}),0===o?(i.checked=!1,i.indeterminate=!1):o===l?(i.checked=!0,i.indeterminate=!1):(i.checked=!0,i.indeterminate=!0),o===l},n=(e,t)=>{e.querySelectorAll('input[type="checkbox"].micl-checkbox').forEach(i=>{const l=i.closest(r);l===e?i.checked=t:i.classList.contains("micl-checkbox__parent")&&l?.parentElement?.closest(r)===e&&(i.checked=t,n(l,t))})},i=(i,l)=>{const o=e(i);if(!o)return;l===o&&n(i,l.checked);let a,s=i;do{a=s,s=s.parentElement?.closest(r)}while(s);t(a)};return{initialize:e=>{e.matches(r)&&!e.dataset.miclinitialized&&(e.dataset.miclinitialized="1",e.addEventListener("change",t=>{const n=t.target;n.classList.contains("micl-checkbox")&&(t.stopPropagation(),i(e,n))}),i(e,null))}}})(),s=".micl-list-item-one,.micl-list-item-two,.micl-list-item-three",c=(()=>{const e=e=>!!e&&e.classList.contains("micl-list-item--disabled");return{keydown:t=>{if(!(t instanceof KeyboardEvent&&t.target instanceof Element&&t.target.matches(".micl-list-item-one,.micl-list-item-two,.micl-list-item-three")))return;const n=t.target.parentElement;if(!n)return;let i=[];if(n instanceof HTMLDetailsElement?i=Array.from(n.parentElement?.children||[]).map(t=>{let n=t.querySelector(":scope > summary");return e(n)?null:n}).filter(e=>!!e):n instanceof HTMLUListElement&&(i=Array.from(n.children).map(t=>t instanceof HTMLLIElement&&!e(t)?t:null).filter(e=>!!e)),0===i.length)return;let l=i.findIndex(e=>(e=>!!e&&e.matches(":has(input[type=checkbox]:checked)"))(e)),o=i.findIndex(e=>0===e.tabIndex),r=o;switch(t.key){case"ArrowDown":r=(o+1)%i.length,t.preventDefault();break;case"ArrowUp":r=(o-1+i.length)%i.length,t.preventDefault();break;case"Tab":-1===l?0!==o&&(i[o].tabIndex=-1,i[0].tabIndex=0):l!==o&&(i[o].tabIndex=-1,i[l].tabIndex=0);break;case"Enter":case" ":const e=t.target.querySelector("input[type=checkbox]");e instanceof HTMLInputElement&&(e.checked=!e.checked)}if(r!==o){i[o].tabIndex=-1,i[r].tabIndex=0,i[r].focus();const e=i[r].querySelector(":scope > button");e?.dispatchEvent(new MouseEvent("mouseenter",{bubbles:!0,cancelable:!0,view:window}))}}}})(),m=".micl-menu[popover]",d=(()=>{const e=(e,t)=>{const n=e.getBoundingClientRect(),i=t.getBoundingClientRect();return(n.x>i.x?"right ":"left ")+(n.y>i.y?"bottom":"top")};return{initialize:t=>{if(!t.matches(".micl-menu[popover]")||t.dataset.miclinitialized)return;t.dataset.miclinitialized="1";const n=document.querySelector(`[popovertarget="${t.id}"]`);n&&t.addEventListener("beforetoggle",i=>{"open"===i.oldState&&(t.style.transformOrigin=e(n,t))}),n&&t.addEventListener("toggle",i=>{"closed"===i.oldState&&(t.style.transformOrigin=e(n,t))}),t.querySelectorAll(":scope > ul.micl-list > li > button[popovertarget]").forEach(e=>{if(e.popoverTargetElement?.matches(".micl-menu[popover]")){let t,n=`--${e.popoverTargetElement.id}`;e.popoverTargetElement instanceof HTMLElement&&(e.style.setProperty("anchor-name",n),e.popoverTargetElement.style.insetBlockStart=`anchor(${n} start)`,e.popoverTargetElement.style.insetInlineStart=`anchor(${n} end)`),e.addEventListener("mouseenter",()=>{e.popoverTargetElement instanceof HTMLElement&&e.popoverTargetElement.showPopover()}),e.addEventListener("mouseleave",()=>{t=setTimeout(()=>{e.popoverTargetElement instanceof HTMLElement&&!e.popoverTargetElement.matches(":hover")&&e.popoverTargetElement.hidePopover()},100)}),e.popoverTargetElement.addEventListener("mouseenter",()=>{clearTimeout(t)}),e.popoverTargetElement.addEventListener("mouseleave",()=>{e.popoverTargetElement instanceof HTMLElement&&e.popoverTargetElement.hidePopover()})}})}}})(),p=".micl-navigationrail__item[for]:not(.micl-navigationrail__item--disabled)",u={keydown:e=>{if(!(e instanceof KeyboardEvent&&e.target instanceof HTMLLabelElement&&e.target.matches(p)))return;const t=document.getElementById(e.target.htmlFor);if(t)switch(e.key){case"Enter":case" ":e.preventDefault(),t.checked||(t.checked=!t.checked)}}},g="input[type=range].micl-slider-xs,input[type=range].micl-slider-s,input[type=range].micl-slider-m,input[type=range].micl-slider-l,input[type=range].micl-slider-xl",f=(()=>{const e=String.fromCharCode(8226),t=String.fromCharCode(8201),n=e=>e.parentElement?.classList.contains("micl-slider__container")?e.parentElement:null,i=(e,t)=>{e.dataset.miclsliderticks=t},l=e=>{let t=JSON.stringify(e.value+""),i=n(e);i&&(i.style.setProperty("--md-sys-slider-value",e.value),i.style.setProperty("--md-sys-slider-tip",t)),e.style.setProperty("--md-sys-slider-value",e.value),e.style.setProperty("--md-sys-slider-tip",t)};return{initialize:o=>{if(!o.matches(g))return;(e=>{let t=e.max||"100";n(e)?.style.setProperty("--md-sys-slider-max",t),e.style.setProperty("--md-sys-slider-max",t)})(o),(e=>{let t=e.min||"0";n(e)?.style.setProperty("--md-sys-slider-min",t),e.style.setProperty("--md-sys-slider-min",t)})(o),l(o),(e=>{let t=n(e);if(t){const n=window.getComputedStyle(e);["--md-sys-slider-handle-height","--md-sys-slider-track-height"].forEach(e=>{t.style.setProperty(e,n.getPropertyValue(e))})}})(o);const r=parseFloat(o.max),a=parseFloat(o.min),s=o.getBoundingClientRect(),c=((e,t,n)=>{const i=[];return e.list&&t>n&&e.list.querySelectorAll("option[value]").forEach(e=>{let l=parseFloat(e.value);!isNaN(l)&&l>=n&&l<=t&&i.push(l)}),i})(o,r,a).sort((e,t)=>e-t).map(e=>Math.round(100*(e-a)/(r-a)));if(c.length>0){const n=document.createElement("canvas"),l=n.getContext("2d");if(l){l.font=window.getComputedStyle(o).getPropertyValue("font");let n=l.measureText(t).width,r=l.measureText(e).width,a=s.width-10,m=0,d="";c.forEach(i=>{let l=a*i/100,o=Math.round((l-m)/n)-1;for(let e=0;e<o;e++)d+=t,m+=n;d+=e,m+=r}),i(o,d)}n.remove()}else i(o,e)},input:e=>{e.target.matches(g)&&e.target instanceof HTMLInputElement&&!e.target.disabled&&l(e.target)}}})(),h=(()=>{const e=e=>"willValidate"in e,t=t=>{const n=t.target;e(n)&&n.setCustomValidity("")},n=e=>{const n=e.dataset.miclvalidateMessage||"";if(n&&e.matches("[data-miclvalidate-checkboxes-name]")){const i=e.dataset.miclvalidateCheckboxesName||"",l=e.dataset.miclvalidateCheckboxesCountEqual||"",o=e.dataset.miclvalidateCheckboxesCountMax||"",r=e.dataset.miclvalidateCheckboxesCountMin||"";if(i&&(l||o||r)){const a=e.querySelectorAll(`input[type="checkbox"][name="${i}"]:checked`).length,s=parseInt(l,10),c=parseInt(o,10),m=parseInt(r,10);let d=!isNaN(s)&&a!=s||!isNaN(c)&&a>c||!isNaN(m)&&a<m;e.setCustomValidity(d?n:"");const p=e.querySelector(`input[type="checkbox"][name="${i}"]`);p&&(p.setCustomValidity(d?n:""),d?p.addEventListener("change",t):p.removeEventListener("change",t))}}},i=(t,i)=>{let l=!1;return t.querySelectorAll("fieldset").forEach(n),Array.from(t.elements).forEach(t=>{if(e(t)&&t.willValidate){t.checkValidity()||(l=!0);let n=(t=>{if(!t.parentElement||!e(t))return!1;let n=!1;return t instanceof HTMLInputElement&&"checkbox"===t.type&&t.classList.contains("micl-checkbox")?n=(e=>(e.classList.toggle("micl-checkbox--error",!!e.validationMessage),!1))(t):(t.parentElement.classList.contains("micl-textfield-outlined")||t.parentElement.classList.contains("micl-textfield-filled"))&&(n=((e,t)=>{e.classList.toggle("micl-textfield--error",!!t);const n=e.querySelector(".micl-textfield__supporting-text");return n&&(t?(n.dataset.micltext||(n.dataset.micltext=n.textContent),n.textContent=t):"micltext"in n.dataset&&(n.textContent=n.dataset.micltext||"")),!!t&&!!n})(t.parentElement,t.validationMessage)),n})(t);!n&&i&&t.reportValidity()}}),!l};return{validateFieldSet:(e,t)=>(n(e),i(e,t)),validateForm:(e,t)=>i(e,t)}})(),y=".micl-stepper",E=".micl-stepper__action-back,.micl-stepper__action-next",v=".micl-stepper__header button[role=tab][aria-controls]",L="micl-stepper__step",b="."+L,x=(()=>{const e=e=>e.querySelector(`${b}[aria-current=step]`)||n(e,e.querySelector(b)),t=(e,t)=>Array.from(e.querySelectorAll(b)).indexOf(t)+1,n=(e,t)=>{if(!t)return null;let n=0;e.querySelectorAll(b).forEach((e,i)=>{e.setAttribute("aria-current",e===t?"step":"false"),e===t&&(n=i)});const i=e.querySelectorAll(v).item(n);return e.querySelectorAll(v).forEach((e,t)=>{e.setAttribute("aria-selected",e===i?"true":"false")}),o(e,t),t},i=e=>{const t=e.currentTarget;"transform"===e.propertyName&&t&&(t.classList.remove("micl-stepper__step--fromselected","micl-stepper__step--toselected"),t.removeEventListener("transitionend",i))},l=e=>e.classList.contains("micl-stepper__action-back"),o=(e,n)=>{((e,t)=>{Array.from(e.querySelectorAll(E)).forEach(e=>{const n=l(e)?"previousElementSibling":"nextElementSibling",i=t[n]?.classList.contains(L);e.classList.toggle("micl-hidden",!i)})})(e,n),((e,n)=>{const i=t(e,n);e.querySelectorAll("[data-step]").forEach(e=>{const t=e.dataset.step!=`${i}`;e.classList.toggle("micl-hidden",t)})})(e,n),((e,n)=>{const i=t(e,n),l=e.querySelectorAll(b).length,o=!e.classList.contains("micl-stepper--nonlinear"),r=(t,n)=>{e.querySelectorAll(t).forEach(e=>{e.textContent=n})};r(".micl-stepper__progress-current",`${i}`),r(".micl-stepper__progress-total",`${l}`),e.querySelectorAll(".micl-stepper__progress-dots").forEach(e=>{const t=document.createDocumentFragment();e.innerHTML="";for(let e=1;e<=l;e++){let n=document.createElement("span");n.classList.add("micl-stepper__progress-dot"),(o&&e<=i||!o&&e===i)&&n.classList.add("micl-stepper__progress--done"),t.appendChild(n)}e.appendChild(t)}),e.querySelectorAll(v).forEach((e,t)=>{e.classList.toggle("micl-stepper__progress--done",o?t+1<=i:t+1===i)})})(e,n)};return{initialize:t=>{if(!t.matches(y)||t.dataset.miclinitialized)return;t.dataset.miclinitialized="1";const r=e(t),a=t.querySelector(".micl-stepper__header");r&&(o(t,r),a?.querySelectorAll("button[role=tab][aria-controls]").forEach(e=>{e.addEventListener("click",()=>{if("ariaControlsElements"in Element.prototype&&e.ariaControlsElements)n(t,e.ariaControlsElements[0]);else{const i=e.getAttribute("aria-controls");i&&n(t,document.getElementById(i))}})})),Array.from(t.querySelectorAll(E)).forEach(o=>{o.addEventListener("click",function(o){const r=l(this),a=e(t);if(!a||!r&&a instanceof HTMLFieldSetElement&&!h.validateFieldSet(a,!0))return void(r||o.stopImmediatePropagation());const s=a[r?"previousElementSibling":"nextElementSibling"];s?.classList.contains(L)&&((e,t,l)=>{t.addEventListener("transitionend",i),t.classList.add("micl-stepper__step--fromselected"),t.offsetHeight,l.addEventListener("transitionend",i),l.classList.add("micl-stepper__step--toselected"),l.offsetHeight,n(e,l)})(t,a,s)},!0)}),t instanceof HTMLFormElement&&t.addEventListener("submit",e=>{e.submitter?.classList.contains("micl-form--dosubmit")||e.preventDefault(),h.validateForm(t,!0)||e.stopImmediatePropagation()},!0)}}})(),k=".micl-textfield-outlined > input,.micl-textfield-filled > input",T=".micl-textfield-outlined > textarea,.micl-textfield-filled > textarea",S=".micl-textfield-filled > select,.micl-textfield-outlined > select",_=(()=>{const e=e=>{if(!e.parentElement||e instanceof HTMLSelectElement||!e.maxLength)return;const t=e.parentElement.querySelector(".micl-textfield__character-counter");t&&(t.textContent=`${e.value.length}/${e.maxLength}`)};return{initialize:t=>{if(!t.dataset.miclinitialized){if(t.dataset.miclinitialized="1",t.value&&(t.dataset.miclvalue="1"),t instanceof HTMLSelectElement&&t.addEventListener("mousedown",()=>{const e=t.getBoundingClientRect(),n=e.top,i=window.innerHeight-e.bottom;!t.matches(":open")&&t.style.setProperty("--md-sys-select-picker-origin",n>i?"left bottom":"left top")}),t.matches("input[type=time][data-timepicker]")){const e=t.dataset.timepicker?document.getElementById(t.dataset.timepicker):null;e instanceof HTMLDialogElement&&(t.addEventListener("click",t=>{t.preventDefault(),e.showModal()}),t.addEventListener("keydown",t=>{if(t instanceof KeyboardEvent)switch(t.key){case"Enter":case" ":t.preventDefault(),e.showModal()}}))}e(t)}},input:t=>{t.target.matches(`${k},${S},${T}`)&&t.target.dataset.miclinitialized&&!t.target.disabled&&(t.target.value?t.target.dataset.miclvalue="1":delete t.target.dataset.miclvalue,e(t.target))}}})(),M="dialog.micl-dialog.micl-timepicker",C=(()=>{const e=e=>e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement;return{initialize:t=>{const n=t.querySelector("form"),i=t.querySelector("input");if(!n||!i)return;if(t.dataset.miclinitialized)return;t.dataset.miclinitialized="1",i.addEventListener("keydown",e=>{e instanceof KeyboardEvent&&("Enter"!==e.key&&" "!==e.key||e.preventDefault())}),i.addEventListener("change",()=>{const e=parseInt(i.value.split(":")[0],10);i.classList.toggle("micl-timepicker--pm",e>=12),console.log(`${i.value} - ${e}`)});const l=t.querySelector(".micl-timepicker__dial");l&&(l.addEventListener("mousedown",()=>{l.classList.add("micl-timepicker__dial--dragging")}),l.addEventListener("mouseup",()=>{l.classList.remove("micl-timepicker__dial--dragging")})),t.addEventListener("beforetoggle",n=>{if("open"===n.oldState)return;const l=document.querySelector(`[data-timepicker="${t.id}"],[popovertarget="${t.id}"]`);l&&(e(l)?i.value=l.value:"textContent"in l&&(i.value=l.textContent))}),t.addEventListener("close",()=>{t.returnValue&&document.querySelectorAll(`[data-timepicker="${t.id}"],[popovertarget="${t.id}"]`).forEach(t=>{e(t)?t.value=i.value:"textContent"in t&&(t.textContent=i.value)})})}}})(),w=(()=>{const e={[n]:{component:i,type:HTMLDialogElement},[l]:{component:o,type:HTMLButtonElement},[r]:{component:a,type:HTMLElement},[s]:{component:c,type:HTMLElement},[m]:{component:d,type:HTMLElement},[p]:{component:u,type:HTMLLabelElement},[S]:{component:_,type:HTMLSelectElement},[g]:{component:f,type:HTMLInputElement},[y]:{component:x,type:HTMLElement},[T]:{component:_,type:HTMLTextAreaElement},[k]:{component:_,type:HTMLInputElement},[M]:{component:C,type:HTMLDialogElement}},t=Object.keys(e).join(","),h=t=>{for(const[n,{component:i,type:l}]of Object.entries(e))if(t.matches(n)&&t instanceof l&&"function"==typeof i.initialize)return void i.initialize(t)},E=e=>{e.querySelectorAll(t).forEach(h),e.querySelectorAll('[class*="micl-"]').forEach(e=>{"1"===window.getComputedStyle(e).getPropertyValue("--micl-ripple")&&e.addEventListener("pointerdown",t=>{if(t.currentTarget.classList.contains("micl-card--nonactionable"))return;t.stopPropagation();let n=e.getBoundingClientRect();e.style.setProperty("--micl-x",t.clientX-n.left+"px"),e.style.setProperty("--micl-y",t.clientY-n.top+"px")})})},v=t=>{for(const[n,{component:i,type:l}]of Object.entries(e))if(t.matches(n)&&t instanceof l&&"function"==typeof i.cleanup)return void i.cleanup(t)},L=e=>{e.querySelectorAll(t).forEach(v)},b=t=>{for(const[n,{component:i,type:l}]of Object.entries(e))if(t.target.matches(n)&&t.target instanceof l&&["input","keydown"].includes(t.type)&&"function"==typeof i[t.type])return void i[t.type]?.(t)},w=()=>{new MutationObserver(e=>{e.forEach(e=>{"childList"===e.type&&(e.addedNodes.forEach(e=>{e instanceof HTMLElement&&(e.matches(t)&&h(e),e.querySelectorAll(t).forEach(h))}),e.removedNodes.forEach(e=>{e instanceof HTMLElement&&(e.matches(t)&&v(e),L(e))}))})}).observe(document.body,{childList:!0,subtree:!0}),E(document),document.addEventListener("input",b),document.addEventListener("keydown",b)},q=()=>{document.removeEventListener("DOMContentLoaded",q),w()};return"loading"!==document.readyState?w():document.addEventListener("DOMContentLoaded",q),{initialize:()=>E(document),cleanup:()=>L(document)}})()})(),t})());
@@ -79,14 +79,14 @@
79
79
  </dialog>
80
80
  <button type="button" class="micl-button-outlined-m" popovertarget="mysidesheet2">Open Standard Sheet<br>without dividers</button>
81
81
 
82
- <dialog id="mysidesheet3" class="micl-sidesheet" closedby="closerequest" aria-labelledby="title1">
82
+ <dialog id="mysidesheet3" class="micl-sidesheet" closedby="closerequest" aria-labelledby="title1" tabindex="-1">
83
83
  <div class="micl-sidesheet__headline">
84
84
  <button class="micl-iconbutton-standard-s material-symbols-outlined">arrow_back</button>
85
85
  <h2 id="title3">Title</h2>
86
86
  <button class="micl-iconbutton-standard-s material-symbols-outlined" popovertarget="mysidesheet3">close</button>
87
87
  </div>
88
88
  <div class="micl-sidesheet__content">
89
- <p class="md-sys-typescale-body-medium" style="padding-top:1rem">Make your selection:</p>
89
+ <p class="md-sys-typescale-body-medium">Make your selection:</p>
90
90
  <div class="switch">
91
91
  <label for="cb01" class="md-sys-typescale-body-medium">Selection A</label>
92
92
  <input type="checkbox" id="cb01" class="micl-switch">
@@ -108,6 +108,7 @@
108
108
  <input type="checkbox" id="cb05" class="micl-switch">
109
109
  </div>
110
110
  </div>
111
+ <hr class="micl-divider">
111
112
  <div class="micl-sidesheet__actions">
112
113
  <button type="button" class="micl-button-filled-s">Save</button>
113
114
  <button type="button" class="micl-button-outlined-s">Cancel</button>
@@ -0,0 +1,113 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <meta name="description" content="Demonstrating MICL Time Pickers">
7
+ <title>MICL Time Pickers</title>
8
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100..900;1,100..900&display=swap">
9
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:FILL@0..1&icon_names=dark_mode,home&display=block">
10
+ <link rel="stylesheet" href="themes/airblue/theme.css" id="theme-link">
11
+ <link rel="stylesheet" href="micl.css">
12
+ <link rel="stylesheet" href="docs.css">
13
+ <style>
14
+ .micl-card__content {
15
+ display: flex;
16
+ flex-direction: column;
17
+ row-gap: 8px;
18
+ }
19
+ p {
20
+ margin-block: 24px 0px;
21
+ color: var(--md-sys-color-on-surface);
22
+ }
23
+ </style>
24
+ </head>
25
+ <body class="micl-window light">
26
+ <main class="micl-body micl-body--stacked-to-large">
27
+ <section class="micl-pane">
28
+ <header class="micl-appbar">
29
+ <a href="index.html" class="micl-appbar__leading-icon micl-link micl-iconbutton-standard-s" aria-label="Navigate to the main MICL Showcase page">
30
+ <span class="material-symbols-outlined" aria-hidden="true">home</span>
31
+ </a>
32
+ <div class="micl-appbar__headline micl-appbar__headline--center">
33
+ <h1>Time Pickers</h1>
34
+ <p class="micl-appbar__subtitle">Showcasing MICL time pickers</p>
35
+ </div>
36
+ <div id="settings-placeholder" class="micl-appbar__trailing"></div>
37
+ </header>
38
+
39
+ <div class="micl-pane__columns">
40
+ <div class="micl-pane__column" style="gap:24px">
41
+ <div class="micl-card-outlined">
42
+ <div class="micl-card__content">
43
+ <p class="md-sys-typescale-body-medium">Default non-MICL time input field</p>
44
+ <input type="time" name="t0" style="width:fit-content" value="08:40">
45
+ <p class="md-sys-typescale-body-medium">MICL time textfield component without the MICL time picker component</p>
46
+ <div class="micl-textfield-outlined" style="width:fit-content">
47
+ <label for="mytextfield0">Start time</label>
48
+ <input type="time" id="mytextfield0" value="08:40">
49
+ </div>
50
+ <p class="md-sys-typescale-body-medium">MICL time textfield component with the MICL time picker component</p>
51
+ <div class="micl-textfield-outlined" style="width:fit-content">
52
+ <label for="mytextfield1">Start time</label>
53
+ <input type="time" id="mytextfield1" data-timepicker="mytimepicker" value="23:19">
54
+ </div>
55
+ <p class="md-sys-typescale-body-medium">Time input using a MICL button component that opens the MICL time picker</p>
56
+ <div class="micl-flex--vcenter" style="column-gap:8px">
57
+ <label for="mytime" class="md-sys-typescale-body-large">Start time:</label>
58
+ <button type="button" id="mytime" class="micl-button-text-m" popovertarget="mytimepicker">07:53</button>
59
+ </div>
60
+
61
+ <dialog id="mytimepicker" class="micl-dialog micl-timepicker" closedby="any" aria-labelledby="mytitle">
62
+ <form method="dialog">
63
+ <div class="micl-dialog__headline">
64
+ <h2 id="mytitle">Enter time</h2>
65
+ </div>
66
+ <div class="micl-dialog__content">
67
+ <input type="time" name="time" class="micl-blabla" value="">
68
+ <span class="micl-timepicker__supporting-text-hour">Hour</span>
69
+ <span class="micl-timepicker__supporting-text-minute">Minute</span>
70
+ <div class="micl-timepicker__dial">
71
+ <time datetime="12:00" class="micl-timepicker__time--selected">12</time>
72
+ <time datetime="1:00">1</time>
73
+ <time datetime="2:00">2</time>
74
+ <time datetime="3:00">3</time>
75
+ <time datetime="4:00">4</time>
76
+ <time datetime="5:00">5</time>
77
+ <time datetime="6:00">6</time>
78
+ <time datetime="7:00">7</time>
79
+ <time datetime="8:00">8</time>
80
+ <time datetime="9:00">9</time>
81
+ <time datetime="10:00">10</time>
82
+ <time datetime="11:00">11</time>
83
+ <span class="micl-timepicker__track"></span>
84
+ </div>
85
+ </div>
86
+ <div class="micl-dialog__actions">
87
+ <button class="micl-button-text-s" value="">Cancel</button>
88
+ <button class="micl-button-text-s" value="OK">OK</button>
89
+ </div>
90
+ </form>
91
+ </dialog>
92
+ </div>
93
+ </div>
94
+ </div>
95
+ </div>
96
+ </section>
97
+ <section class="micl-pane">
98
+ <div class="micl-card-filled">
99
+ <div class="micl-card__headline-s">
100
+ <h2>Code example</h2>
101
+ </div>
102
+ <div class="micl-card__content docs-code">
103
+ <pre tabindex="-1"><code>
104
+ </code></pre>
105
+ </div>
106
+ </div>
107
+ </section>
108
+ </main>
109
+
110
+ <script src="micl.js"></script>
111
+ <script src="docs.js"></script>
112
+ </body>
113
+ </html>
package/micl.ts CHANGED
@@ -28,6 +28,7 @@ import _navigationrail, { navigationrailSelector } from './components/navigation
28
28
  import _slider, { sliderSelector } from './components/slider';
29
29
  import _stepper, { stepperSelector } from './components/stepper';
30
30
  import _textfield, { textfieldSelector, textareaSelector, selectSelector } from './components/textfield';
31
+ import _timepicker, { timepickerSelector } from './components/timepicker';
31
32
 
32
33
  interface ComponentEntry<T extends HTMLElement> {
33
34
  component: {
@@ -53,7 +54,8 @@ export default (() =>
53
54
  [sliderSelector] : { component: _slider, type: HTMLInputElement },
54
55
  [stepperSelector] : { component: _stepper, type: HTMLElement },
55
56
  [textareaSelector] : { component: _textfield, type: HTMLTextAreaElement },
56
- [textfieldSelector] : { component: _textfield, type: HTMLInputElement }
57
+ [textfieldSelector] : { component: _textfield, type: HTMLInputElement },
58
+ [timepickerSelector] : { component: _timepicker, type: HTMLDialogElement }
57
59
  };
58
60
 
59
61
  const selector = Object.keys(componentMap).join(',');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "material-inspired-component-library",
3
- "version": "4.0.0",
3
+ "version": "4.0.2",
4
4
  "description": "The Material-Inspired Component Library (MICL) offers a collection of beautifully crafted components leveraging native HTML markup, designed to align with the Material Design 3 guidelines.",
5
5
  "author": "MICL Hermana <micl.hermana@proton.me> (https://github.com/henkpb/micl)",
6
6
  "license": "MIT",
@@ -47,9 +47,7 @@
47
47
  "main": "dist/micl.js",
48
48
  "types": "dist/micl.d.ts",
49
49
  "scripts": {
50
- "build": "webpack",
51
- "start": "echo 'No start script yet'",
52
- "test": "echo \"Error: no test specified\" && exit 1"
50
+ "build": "webpack"
53
51
  },
54
52
  "sideEffects": false,
55
53
  "devDependencies": {
package/styles.scss CHANGED
@@ -47,6 +47,7 @@
47
47
  @use 'components/bottomsheet';
48
48
  @use 'components/navigationrail';
49
49
  @use 'components/stepper';
50
+ @use 'components/timepicker';
50
51
 
51
52
  @property --micl-ripple {
52
53
  syntax: '<integer>';