material-inspired-component-library 7.0.2 → 8.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +14 -0
- package/CLAUDE.md +53 -0
- package/README.md +6 -0
- package/components/accordion/README.md +6 -3
- package/components/alert/index.scss +5 -0
- package/components/appbar/index.scss +12 -0
- package/components/badge/index.scss +2 -0
- package/components/bottomsheet/index.scss +9 -0
- package/components/button/index.scss +33 -6
- package/components/card/README.md +4 -0
- package/components/card/index.scss +182 -150
- package/components/checkbox/index.scss +28 -6
- package/components/datepicker/index.scss +13 -0
- package/components/datepicker/index.ts +9 -9
- package/components/dialog/index.scss +21 -6
- package/components/iconbutton/index.scss +28 -6
- package/components/list/README.md +191 -32
- package/components/list/index.scss +281 -190
- package/components/list/index.ts +100 -100
- package/components/menu/README.md +199 -10
- package/components/menu/index.scss +242 -47
- package/components/menu/index.ts +74 -37
- package/components/navigationrail/index.scss +91 -68
- package/components/progressindicator/README.md +88 -0
- package/components/progressindicator/index.scss +225 -0
- package/components/progressindicator/index.ts +77 -0
- package/components/radio/index.scss +24 -6
- package/components/select/README.md +42 -5
- package/components/select/index.scss +45 -79
- package/components/shape/README.md +103 -0
- package/components/shape/_paths.generated.scss +64 -0
- package/components/shape/index.scss +66 -0
- package/components/shape/master.scss +28 -0
- package/components/sidesheet/index.scss +11 -0
- package/components/slider/index.scss +13 -0
- package/components/snackbar/index.scss +12 -0
- package/components/stepper/index.scss +3 -5
- package/components/switch/index.scss +9 -0
- package/components/textfield/index.scss +10 -1
- package/components/textfield/index.ts +2 -2
- package/components/timepicker/index.scss +16 -0
- package/dist/alert.css +1 -1
- package/dist/appbar.css +1 -1
- package/dist/badge.css +1 -1
- package/dist/bottomsheet.css +1 -1
- package/dist/button.css +1 -1
- package/dist/card.css +1 -1
- package/dist/checkbox.css +1 -1
- package/dist/components/list/index.d.ts +2 -2
- package/dist/components/progressindicator/index.d.ts +6 -0
- package/dist/datepicker.css +1 -1
- package/dist/dialog.css +1 -1
- package/dist/divider.css +1 -1
- package/dist/foundations/form/index.js +1 -0
- package/dist/foundations.css +1 -1
- package/dist/iconbutton.css +1 -1
- package/dist/layout.css +1 -1
- package/dist/list.css +1 -1
- package/dist/menu.css +1 -1
- package/dist/micl.css +1 -1
- package/dist/micl.js +1 -1
- package/dist/navigationrail.css +1 -1
- package/dist/progressindicator.css +1 -0
- package/dist/progressindicator.js +1 -0
- package/dist/radio.css +1 -1
- package/dist/select.css +1 -1
- package/dist/shape.css +1 -0
- package/dist/shape.js +1 -0
- package/dist/sidesheet.css +1 -1
- package/dist/slider.css +1 -1
- package/dist/snackbar.css +1 -1
- package/dist/stepper.css +1 -1
- package/dist/switch.css +1 -1
- package/dist/textfield.css +1 -1
- package/dist/timepicker.css +1 -1
- package/docs/accordion.html +24 -24
- package/docs/bottomsheet.html +1 -4
- package/docs/datepicker.html +21 -21
- package/docs/dialog.html +1 -1
- package/docs/index.html +5 -4
- package/docs/list.html +38 -22
- package/docs/menu.html +246 -41
- package/docs/micl.css +1 -1
- package/docs/micl.js +1 -1
- package/docs/progressindicator.html +288 -0
- package/docs/select.html +68 -19
- package/docs/shape.css +1 -0
- package/docs/shape.js +1 -0
- package/docs/shapes.html +150 -0
- package/foundations/index.scss +0 -1
- package/foundations/layout/README.md +1 -1
- package/foundations/layout/index.scss +3 -0
- package/micl.ts +8 -1
- package/package.json +6 -4
- package/styles/README.md +90 -12
- package/styles/elevation.scss +46 -13
- package/styles/motion.scss +51 -47
- package/styles/shapes.scss +41 -26
- package/styles/statelayer.scss +93 -36
- package/styles/typography.scss +120 -322
- package/styles.scss +10 -6
- package/tools/shapes/check.mjs +42 -0
- package/tools/shapes/generate.mjs +834 -0
- package/webpack.config.js +16 -1
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:()=>Z});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,a=e(t);return a.filter(e=>e>i+4)[0]||a[n?a.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:a=>{if(!a.matches(n)||a.dataset.miclinitialized)return;a.dataset.miclinitialized="1";const r=a.querySelector(".micl-bottomsheet__headline");if(!r)return;const l=r.querySelector(".micl-bottomsheet__draghandle");l?.addEventListener("click",()=>{i(a,t(a,!1))});let o,c,s=!1,d=!1;function m(e){const t=e.clientY;s&&Math.abs(o-t)>4&&(s=!1,d=!0,a.classList.add("micl-bottomsheet--resizing")),d&&i(a,c+o-t)}function u(n){s=!1,a.classList.remove("micl-bottomsheet--resizing"),d&&(d=!1,n.clientY<o?i(a,t(a,!0)):a.getBoundingClientRect().height<48?i(a,0):i(a,(t=>{let n=t.getBoundingClientRect().height,i=e(t),a=i.filter(e=>e<n-4);return a[a.length-1]||i[0]})(a)),document.removeEventListener("mousemove",m),document.removeEventListener("mouseup",u))}r.addEventListener("mousedown",e=>{e.eventPhase===Event.AT_TARGET&&(s=!0,e.preventDefault(),o=e.clientY,c=a.getBoundingClientRect().height,document.addEventListener("mousemove",m),document.addEventListener("mouseup",u))})},cleanup:e=>{e.matches(n)&&(e.classList.remove("micl-bottomsheet--resizing"),delete e.dataset.miclinitialized,delete e.dataset.miclfitheight)}}})(),a="button.micl-button--toggle",r=e=>{const t=e.querySelector(".micl-button__icon")??e,n=e.classList.contains("micl-button--selected");t.dataset.micliconselected&&t.classList.toggle(t.dataset.micliconselected,n),t.dataset.miclicon&&t.classList.toggle(t.dataset.miclicon,!n)},l={command:e=>{const t=e.target;t.matches(a)&&!t.disabled&&"--micl-toggle"===e.command&&(t.classList.add("micl-button--toggled"),t.classList.toggle("micl-button--selected"),r(t))},initialize:function(e){e.matches(a)&&!e.dataset.miclinitialized&&(e.dataset.miclinitialized="1",r(e),e.addEventListener("command",this.command))},cleanup:function(e){e.matches(a)&&(document.removeEventListener("command",this.command),delete e.dataset.miclinitialized)}},o=".micl-checkbox-group",c=(()=>{const e=e=>{const t=e.querySelector(".micl-checkbox__parent");return t?.closest(o)===e?t:null},t=n=>{const i=e(n);if(!i)return!1;let a=0,r=0;return n.querySelectorAll('input[type="checkbox"].micl-checkbox').forEach(e=>{if(e!==i){const i=e.closest(o);i===n?(a++,e.checked&&!e.indeterminate&&r++):e.classList.contains("micl-checkbox__parent")&&i?.parentElement?.closest(o)===n&&(a++,t(i)&&r++)}}),0===r?(i.checked=!1,i.indeterminate=!1):r===a?(i.checked=!0,i.indeterminate=!1):(i.checked=!0,i.indeterminate=!0),r===a},n=(e,t)=>{e.querySelectorAll('input[type="checkbox"].micl-checkbox').forEach(i=>{const a=i.closest(o);a===e?i.checked=t:i.classList.contains("micl-checkbox__parent")&&a?.parentElement?.closest(o)===e&&(i.checked=t,n(a,t))})},i=(i,a)=>{const r=e(i);if(!r)return;a===r&&n(i,a.checked);let l,c=i;do{l=c,c=c.parentElement?.closest(o)}while(c);t(l)};return{initialize:e=>{e.matches(o)&&!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="dialog.micl-dialog.micl-datepicker",d=new WeakMap,m=(new Intl.DateTimeFormat).resolvedOptions().locale,u={input:new Intl.DateTimeFormat(m,{year:"numeric",month:"2-digit",day:"2-digit"}),header:new Intl.DateTimeFormat(m,{weekday:"short",day:"numeric",month:"short"}),monthLong:new Intl.DateTimeFormat(void 0,{month:"long"}),monthShort:new Intl.DateTimeFormat(m,{month:"short"}),weekdayNarrow:new Intl.DateTimeFormat(m,{weekday:"narrow"}),weekdayLong:new Intl.DateTimeFormat(m,{weekday:"long"})},p=e=>{const t=new Date(e);return t.setHours(0,0,0,0),t},g=e=>{const t=(e.getMonth()+1).toString().padStart(2,"0"),n=e.getDate().toString().padStart(2,"0");return`${e.getFullYear()}-${t}-${n}`},h=()=>u.input.formatToParts(new Date(2025,0,15)).map(e=>{switch(e.type){case"day":return"DD";case"month":return"MM";case"year":return"YYYY";case"literal":return e.value;default:return""}}).join("").trim(),f=(()=>{try{const e=new Intl.Locale(m).getWeekInfo?.();if(e)return 7===e.firstDay?0:e.firstDay}catch{}return/US|CA|MX/i.test(m)?0:1})(),y=e=>!isNaN(e.getTime()),v=(e,t)=>{if(e)if(e.firstElementChild){let n=e.firstChild;for(;n;){if(n.nodeType===Node.TEXT_NODE)return void(n.nodeValue=t);n=n.nextSibling}e.appendChild(document.createTextNode(t))}else e.textContent=t},E=(e,t)=>{const n=new Date(e,t,1).getDay(),i=new Date(e,t,1-(n-f+7)%7);return Array.from({length:42},(e,n)=>{const a=new Date(i);return a.setDate(i.getDate()+n),{date:a,val:g(a),isCurrentMonth:a.getMonth()===t}})},L=(e,t,n,i=!1)=>{if(i){const n=(()=>{const e=new Date,t=e.getDay()-f;e.setDate(e.getDate()-t);const n=document.createDocumentFragment();for(let t=0;t<7;t++){const i=document.createElement("span");i.style.gridArea=`1 / ${t+1}`,i.textContent=u.weekdayNarrow.format(e),i.title=u.weekdayLong.format(e),n.appendChild(i),e.setDate(e.getDate()+1)}return n})();t.forEach((e,t)=>{const i=document.createElement("time"),a=Math.floor(t/7)+2,r=t%7+1;i.style.gridArea=`${a} / ${r}`,n.appendChild(i)}),e.appendChild(n)}const a=p(new Date);e.querySelectorAll("time").forEach((e,i)=>{const r=t[i];e.dateTime=r.val,e.textContent=r.date.getDate().toString();const l=r.date.getTime()===n.selected.getTime(),o=r.date.getTime()===a.getTime();e.className="",r.isCurrentMonth||e.classList.add("micl-datepicker__outside"),l&&e.classList.add("micl-datepicker__selected"),o&&e.classList.add("micl-datepicker__today")})},k=(e,t,n=0)=>{const i=e.querySelector(".micl-dialog__content"),a=i?.querySelector(".micl-datepicker__calendars");if(!a)return;const r="micl-startleft",l="micl-startright",o="micl-moveleft",c="micl-moveright";if(a.classList.remove(o,c,r,l),a.offsetWidth,0!==n){const e=a.querySelector(".micl-datepicker__calendar");if(!e)return;const i=document.createElement("div"),s=document.createElement("div");i.classList.add("micl-datepicker__calendar"),s.classList.add("micl-datepicker__calendar-inner");const d=E(t.viewDate.getFullYear(),t.viewDate.getMonth());L(s,d,t,!0);const m=n>0,u=m?r:l,p=m?o:c;i.appendChild(s),m?a.appendChild(i):a.prepend(i),a.classList.add("micl-no-transition",u),a.offsetWidth,requestAnimationFrame(()=>{a.classList.remove("micl-no-transition",u),a.classList.add(p)});const g=()=>{a.removeEventListener("transitionend",g),setTimeout(()=>{a.classList.remove(p),e.parentElement===a&&e.remove(),a.classList.add("micl-no-transition",r),a.offsetWidth,a.classList.remove("micl-no-transition",r)},0)};a.addEventListener("transitionend",g)}else{let e=a.querySelector(".micl-datepicker__calendar");e||(e=document.createElement("div"),e.classList.add("micl-datepicker__calendar"),e=a.appendChild(e));let n=e.querySelector(".micl-datepicker__calendar-inner");n||(n=document.createElement("div"),n.classList.add("micl-datepicker__calendar-inner"),e.appendChild(n));const i=E(t.viewDate.getFullYear(),t.viewDate.getMonth());L(n,i,t,0===n.querySelectorAll("time").length)}const s=i?.querySelector(".micl-datepicker__input input");s&&(s.value=u.input.format(t.selected),s.value?s.dataset.miclvalue="1":delete s.dataset.miclvalue,s.dataset.micldateformat||(s.dataset.micldateformat=h())),v(e.querySelector("h1, h2, h3, h4, h5, h6, .micl-heading"),u.header.format(t.selected)),v(e.querySelector(".micl-datepicker__month"),u.monthShort.format(t.viewDate)),v(e.querySelector(".micl-datepicker__year"),t.viewDate.toLocaleDateString(m,e.classList.contains("micl-dialog--docked")?{year:"numeric"}:{month:"long",year:"numeric"}));const d=e.querySelector(`.micl-datepicker__months input[value="${t.viewDate.getMonth()}"]`);d&&(d.checked=!0);const p=e.querySelector(`.micl-datepicker__years input[value="${t.viewDate.getFullYear()}"]`);p&&(p.checked=!0)},_=(e,t)=>{"months"!==t&&"years"!==t||e.querySelector(`.micl-datepicker__${t}.micl-datepicker__view-hidden`)||(t="calendars"),["calendars","input","month-selector","year-selector"].forEach(n=>{let i="input"===t;"calendars"!==n&&"input"!==n||(i=t!==n),e.querySelector(`.micl-datepicker__${n}`)?.classList.toggle("micl-datepicker__view-hidden",i)});const n=e.querySelector(".micl-dialog__content");if(!n)return;const i=parseInt(window.getComputedStyle(n).getPropertyValue("max-block-size"),10);[".micl-datepicker__months",".micl-datepicker__years"].forEach(e=>{const a=n.querySelector(e);if(!a)return;const r=a.querySelector("input:checked");let l=!1;if(r&&e.substring(18)===t){const e=window.getComputedStyle(a).getPropertyValue("transition-duration"),t=parseFloat(e)*(e.includes("ms")?1:1e3),o=a.scrollHeight-i,c=(i-48)/2;if(r.offsetTop>c){let e=r.offsetTop-c-24;e>o&&(e=o);const i=performance.now(),s=a=>{const r=Math.min((a-i)/t,1);n.scrollTop=e*r,r<1&&requestAnimationFrame(s)};a.classList.remove("micl-datepicker__view-hidden"),requestAnimationFrame(s),l=null,a.addEventListener("transitionend",function t(i){"height"!==i.propertyName&&"block-size"!==i.propertyName||(n.scrollTop=e,a.removeEventListener("transitionend",t))})}}else l=!0;null!==l&&a.classList.toggle("micl-datepicker__view-hidden",l)})},b=(e,t,n)=>{const i=d.get(e);if(!i)return;const a=new Date(i.viewDate);"month"===n?a.setMonth(a.getMonth()+t):a.setFullYear(a.getFullYear()+t);const r=i.min&&a<i.min,l=i.max&&a>i.max;r||l?e.querySelector(".micl-datepicker__calendars")?.animate([{transform:"translateX(0)"},{transform:`translateX(${r?8:-8}px)`},{transform:"translateX(0)"}],{duration:500,easing:"ease-in-out"}):(i.viewDate=a,k(e,i,"month"===n?t:0))},S=(e,t,n=!1)=>{const i=d.get(e);if(!i)return;let a=[];if(n){const e=h();if(t.length===e.length){let n="",i="",r="";for(let a=0;a<e.length;a++)switch(e[a]){case"D":n+=t[a];break;case"M":i+=t[a];break;case"Y":r+=t[a]}a=[parseInt(r,10),parseInt(i,10)-1,parseInt(n,10)]}}else a=t.split("-").map(Number),a[1]--;3===a.length&&(i.selected=new Date(a[0],a[1],a[2]),i.viewDate=new Date(i.selected),k(e,i))},w={keydown:e=>{if(!(e instanceof KeyboardEvent&&e.target instanceof Element))return;const t=e.target.closest(s);if(t)switch(e.key){case"Enter":case" ":e.target instanceof HTMLInputElement&&"date"===e.target.type&&e.preventDefault();break;case"M":_(t,"months");break;case"Y":_(t,"years");break;case"PageUp":case"PageDown":b(t,"PageUp"===e.key?1:-1,e.shiftKey?"year":"month")}},initialize:e=>{if(e.dataset.miclinitialized)return;const t=e.querySelector("form"),n=e.querySelector(".micl-dialog__content");t&&n&&(e.dataset.miclinitialized="1",e.addEventListener("click",t=>{const n=t.target,i=n.closest("button");if(i){const t=i.parentElement?.classList.contains("micl-datepicker__month-selector"),n=i.classList.contains("micl-datepicker__next"),a=i.classList.contains("micl-datepicker__previous");if(n||a)return void b(e,n?1:-1,t?"month":"year")}n.closest(".micl-datepicker__month")&&_(e,"months"),n.closest(".micl-datepicker__year")&&_(e,"years"),n.closest(".micl-datepicker__inputmode")&&_(e,e.querySelector(".micl-datepicker__input.micl-datepicker__view-hidden")?"input":"calendars");const a=n.closest("time");if(a&&a.dateTime&&S(e,a.dateTime),n instanceof HTMLInputElement&&("miclmonth"===n.name||"miclyear"===n.name)){const t=d.get(e);if(t){const i=parseInt(n.value,10);"miclmonth"===n.name?t.viewDate.setMonth(i):t.viewDate.setFullYear(i),t.viewDate<t.min?t.viewDate=t.min:t.viewDate>t.max&&(t.viewDate=t.max),k(e,t),_(e,"calendars")}}}),e.addEventListener("beforetoggle",t=>{if("open"!==t.newState)return;const n=e=>e instanceof HTMLInputElement||e instanceof HTMLButtonElement;let i=document.activeElement;if(n(i)&&(i.dataset.datepicker||i.popoverTargetElement||i.commandForElement)||(i=document.querySelector(`[data-datepicker="${e.id}"],[popovertarget="${e.id}"],[commandfor="${e.id}"]`)),!n(i))return;let a=new Date,r=new Date(1900,0,1),l=new Date(2099,11,31);if(i instanceof HTMLInputElement)"date"===i.type&&i.valueAsDate?a=i.valueAsDate:i.value&&(a=new Date(i.value)),i.min&&(r=new Date(i.min)),i.max&&(l=new Date(i.max));else{const e=new Date(i.value||i.textContent);y(e)&&(a=e)}y(a)||(a=new Date),a=p(a);const o={invoker:i,selected:a,viewDate:new Date(a),min:r,max:l};d.set(e,o),((e,t,n)=>{const i=t.getFullYear(),a=n.getFullYear();["months","years"].forEach(r=>{const l=e.querySelector(`.micl-datepicker__${r}`);if(!l)return;l.innerHTML="";const o=document.createDocumentFragment(),c=n.getMonth();if("months"===r){const e=[];let i=new Date(t.getFullYear(),t.getMonth(),1);for(;i<=n||i.getMonth()===c&&i.getFullYear()===a;)e.push(i.getMonth()),i.setMonth(i.getMonth()+1);[...new Set(e.sort((e,t)=>e-t))].forEach(e=>{const t=document.createElement("label");t.innerHTML=`<span class="material-symbols-outlined">check</span><input type="radio" name="miclmonth" value="${e}"> ${u.monthLong.format(new Date(2e3,e,1))}`,o.appendChild(t)})}else for(let e=i;e<=a;e++){const t=document.createElement("label");t.innerHTML=`<input type="radio" name="miclyear" value="${e}"> ${e}`,o.appendChild(t)}const s=document.createElement("div");s.classList.add(`micl-datepicker__${r}-inner`),l.appendChild(s).appendChild(o)})})(e,r,l),_(e,"calendars"),k(e,o),e.querySelector(".micl-datepicker__input input")?.addEventListener("blur",t=>{const n=t.target;S(e,n.value,!0)},{once:!0})}),e.addEventListener("close",()=>{const t=d.get(e);t?.invoker&&""!==e.returnValue&&(t.invoker.value=g(t.selected),t.invoker instanceof HTMLInputElement?(t.invoker.dispatchEvent(new Event("change",{bubbles:!0})),t.invoker.dispatchEvent(new Event("input",{bubbles:!0}))):t.invoker.textContent=t.selected.toLocaleDateString())}))}},T=".micl-list",x=(()=>{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||n instanceof HTMLOListElement)&&(i=Array.from(n.children).map(t=>t instanceof HTMLLIElement&&!e(t)&&"separator"!==t.role?t:null).filter(e=>!!e)),0===i.length)return;const a=i.findIndex(e=>(e=>!!e&&e.matches(":has(input[type=checkbox]:checked)"))(e)),r=document.activeElement,l=i.indexOf(r);if(-1===l)return;let o=l;switch(t.key){case"ArrowDown":t.preventDefault(),o=(l+1)%i.length;break;case"ArrowUp":t.preventDefault(),o=(l-1+i.length)%i.length;break;case"Tab":o=-1===a?0:a;break;case" ":t.preventDefault();case"Enter":const e=t.target.querySelector("input[type=checkbox], a[href], button");e instanceof HTMLInputElement?e.checked=!e.checked:e instanceof HTMLAnchorElement?e.click():e instanceof HTMLButtonElement&&e.dispatchEvent(new MouseEvent("mouseenter",{bubbles:!0,cancelable:!0,view:window}))}o!==l&&(r?.setAttribute("tabindex","-1"),i[o].setAttribute("tabindex","0"),i[o].focus())},initialize:e=>{e.dataset.miclinitialized||(e.dataset.miclinitialized="1",0!==e.querySelectorAll('li[tabindex="0"]').length&&Array.from(e.querySelectorAll('li:not([role="separator"])')).forEach(e=>{"0"!==e.getAttribute("tabindex")&&e.setAttribute("tabindex","-1"),e.querySelectorAll("a, button, input").forEach(e=>e.setAttribute("tabindex","-1"))}))}}})(),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()})}})}}})(),C=".micl-navigationrail",q=new WeakMap,A={initialize:e=>{if(!e.matches(C)||e.dataset.miclinitialized)return;e.dataset.miclinitialized="1";const t=t=>{const n=t.target.closest("a.micl-navigationrail__item");n&&(e.querySelectorAll("a.micl-navigationrail__item").forEach(e=>e.removeAttribute("aria-current")),n.setAttribute("aria-current","page"))};q.set(e,{boundHandleClick:t}),e.addEventListener("click",t)},keydown:e=>{e instanceof KeyboardEvent&&e.target instanceof HTMLElement&&e.target.matches(".micl-navigationrail__item")&&(32!==e.keyCode&&" "!==e.key||(e.preventDefault(),e.target.click()))},cleanup:e=>{const t=q.get(e);t&&e.removeEventListener("click",t.boundHandleClick),delete e.dataset.miclinitialized}},H="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",I=(()=>{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},a=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:r=>{if(!r.matches(H))return;(e=>{let t=e.max||"100";n(e)?.style.setProperty("--md-sys-slider-max",t),e.style.setProperty("--md-sys-slider-max",t)})(r),(e=>{let t=e.min||"0";n(e)?.style.setProperty("--md-sys-slider-min",t),e.style.setProperty("--md-sys-slider-min",t)})(r),a(r),(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))})}})(r);const l=parseFloat(r.max),o=parseFloat(r.min),c=r.getBoundingClientRect(),s=((e,t,n)=>{const i=[];return e.list&&t>n&&e.list.querySelectorAll("option[value]").forEach(e=>{let a=parseFloat(e.value);!isNaN(a)&&a>=n&&a<=t&&i.push(a)}),i})(r,l,o).sort((e,t)=>e-t).map(e=>Math.round(100*(e-o)/(l-o)));if(s.length>0){const n=document.createElement("canvas"),a=n.getContext("2d");if(a){a.font=window.getComputedStyle(r).getPropertyValue("font");let n=a.measureText(t).width,l=a.measureText(e).width,o=c.width-10,d=0,m="";s.forEach(i=>{let a=o*i/100,r=Math.round((a-d)/n)-1;for(let e=0;e<r;e++)m+=t,d+=n;m+=e,d+=l}),i(r,m)}n.remove()}else i(r,e)},input:e=>{e.target.matches(H)&&e.target instanceof HTMLInputElement&&!e.target.disabled&&a(e.target)}}})(),$=".micl-snackbar",P=new WeakMap,z=e=>{const t=P.get(e);t&&t.timeoutid&&(clearTimeout(t.timeoutid),t.timeoutid=void 0)},N=e=>{z(e);const t=P.get(e);t&&(t.timeoutid=window.setTimeout(()=>{e.isConnected&&e.matches(":popover-open")&&e.hidePopover()},t.delay))},F={initialize:e=>{if(!e.matches($)||e.dataset.miclinitialized)return;const t=e.dataset.micldelay,n=t?parseInt(t,10):0;if(isNaN(n)||n<=0)return;e.dataset.miclinitialized="1";const i=()=>z(e),a=t=>{"open"===t.newState?N(e):z(e)},r=()=>{e.matches(":popover-open")&&N(e)};P.set(e,{delay:n,boundHandleToggle:a,boundClearTimer:i,boundHandleMouseLeave:r}),e.addEventListener("toggle",a),e.addEventListener("mouseenter",i),e.addEventListener("mouseleave",r)},cleanup:e=>{const t=P.get(e);t&&(z(e),e.removeEventListener("toggle",t.boundHandleToggle),e.removeEventListener("mouseenter",t.boundClearTimer),e.removeEventListener("mouseleave",t.boundHandleMouseLeave),P.delete(e)),delete e.dataset.miclinitialized}},Y=(()=>{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||"",a=e.dataset.miclvalidateCheckboxesCountEqual||"",r=e.dataset.miclvalidateCheckboxesCountMax||"",l=e.dataset.miclvalidateCheckboxesCountMin||"";if(i&&(a||r||l)){const o=e.querySelectorAll(`input[type="checkbox"][name="${i}"]:checked`).length,c=parseInt(a,10),s=parseInt(r,10),d=parseInt(l,10);let m=!isNaN(c)&&o!=c||!isNaN(s)&&o>s||!isNaN(d)&&o<d;e.setCustomValidity(m?n:"");const u=e.querySelector(`input[type="checkbox"][name="${i}"]`);u&&(u.setCustomValidity(m?n:""),m?u.addEventListener("change",t):u.removeEventListener("change",t))}}},i=(t,i)=>{let a=!1;return t.querySelectorAll("fieldset").forEach(n),Array.from(t.elements).forEach(t=>{if(e(t)&&t.willValidate){t.checkValidity()||(a=!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()}}),!a};return{validateFieldSet:(e,t)=>(n(e),i(e,t)),validateForm:(e,t)=>i(e,t)}})(),O=".micl-stepper",B=".micl-stepper__action-back,.micl-stepper__action-next",V=".micl-stepper__header button[role=tab][aria-controls]",R="micl-stepper__step",j="."+R,W=(()=>{const e=e=>e.querySelector(`${j}[aria-current=step]`)||n(e,e.querySelector(j)),t=(e,t)=>Array.from(e.querySelectorAll(j)).indexOf(t)+1,n=(e,t)=>{if(!t)return null;let n=0;e.querySelectorAll(j).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=>{e.setAttribute("aria-selected",e===i?"true":"false")}),r(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))},a=e=>e.classList.contains("micl-stepper__action-back"),r=(e,n)=>{((e,t)=>{Array.from(e.querySelectorAll(B)).forEach(e=>{const n=a(e)?"previousElementSibling":"nextElementSibling",i=t[n]?.classList.contains(R);e.classList.toggle("micl-hidden",!i)})})(e,n),((e,n)=>{const i=e.querySelectorAll(j).length,a=t(e,n);e.querySelectorAll("[data-step]").forEach(e=>{const t=parseInt(e.dataset.step||"0",10);e.classList.toggle("micl-hidden",t>0?t!=a:i+t+1!=a)})})(e,n),((e,n)=>{const i=t(e,n),a=e.querySelectorAll(j).length,r=!e.classList.contains("micl-stepper--nonlinear"),l=(t,n)=>{e.querySelectorAll(t).forEach(e=>{e.textContent=n})};l(".micl-stepper__progress-current",`${i}`),l(".micl-stepper__progress-total",`${a}`),e.querySelectorAll(".micl-stepper__progress-dots").forEach(e=>{const t=document.createDocumentFragment();e.innerHTML="";for(let e=1;e<=a;e++){let n=document.createElement("span");n.classList.add("micl-stepper__progress-dot"),(r&&e<=i||!r&&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",r?t+1<=i:t+1===i)})})(e,n)};return{initialize:t=>{if(!t.matches(O)||t.dataset.miclinitialized)return;t.dataset.miclinitialized="1";const l=e(t),o=t.querySelector(".micl-stepper__header");l&&(r(t,l),o?.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(B)).forEach(r=>{r.addEventListener("click",function(r){const l=a(this),o=e(t);if(!o||!l&&o instanceof HTMLFieldSetElement&&!Y.validateFieldSet(o,!0))return void(l||r.stopImmediatePropagation());const c=o[l?"previousElementSibling":"nextElementSibling"];c?.classList.contains(R)&&((e,t,a)=>{t.addEventListener("transitionend",i),t.classList.add("micl-stepper__step--fromselected"),t.offsetHeight,a.addEventListener("transitionend",i),a.classList.add("micl-stepper__step--toselected"),a.offsetHeight,n(e,a)})(t,o,c)},!0)}),t instanceof HTMLFormElement&&t.addEventListener("submit",e=>{e.submitter?.classList.contains("micl-form--dosubmit")||e.preventDefault(),Y.validateForm(t,!0)||e.stopImmediatePropagation()},!0)}}})(),U=".micl-textfield-outlined > input,.micl-textfield-filled > input",X=".micl-textfield-outlined > textarea,.micl-textfield-filled > textarea",K=".micl-textfield-filled > select,.micl-textfield-outlined > select",G=(()=>{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}`)},t=t=>{t.target.matches(`${U},${K},${X}`)&&t.target.dataset.miclinitialized&&!t.target.disabled&&(t.target instanceof HTMLInputElement&&t.target.dataset.micldateformat&&((e,t)=>{const n=(e.dataset.micldateformat||"").match(/([DMY]{2,4})([^DMY])?([DMY]{2,4})([^DMY])?([DMY]{2,4})/);if(!n)return;const i=[{type:n[1],length:n[1].length,separator:n[2]||""},{type:n[3],length:n[3].length,separator:n[4]||""},{type:n[5],length:n[5].length,separator:""}];e.maxLength=i.reduce((e,t)=>e+t.length+(t.separator?1:0),0);let a=e.value.replace(/\D/g,""),r="",l=0,o=e.selectionStart||0;for(let e=0;e<i.length;e++){const t=i[e];if(a.length<l)break;const n=a.substring(l,l+t.length);r+=n,l+=n.length,n.length===t.length&&t.separator&&(r+=t.separator)}const c=e.value.length;e.value=r.substring(0,e.maxLength);const s=e.value.length;t.startsWith("deleteContent")?o>0&&e.setSelectionRange(o,o):s>c&&s>o?e.setSelectionRange(s,s):e.setSelectionRange(o,o)})(t.target,t.inputType),t.target.value?t.target.dataset.miclvalue="1":delete t.target.dataset.miclvalue,e(t.target))};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],input[type=date][data-datepicker]")){const e=t.dataset.timepicker?document.getElementById(t.dataset.timepicker):t.dataset.datepicker?document.getElementById(t.dataset.datepicker):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)}},change:e=>{t(e)},input:e=>{t(e)}}})(),J="dialog.micl-dialog.micl-timepicker",Q=(()=>{const e=(()=>{try{const e=new Intl.DateTimeFormat(void 0,{hour:"numeric"}).resolvedOptions().hourCycle;return"h11"===e||"h12"===e}catch(e){return!1}})(),t=(e,t)=>e.querySelector(t),n=e=>e instanceof HTMLInputElement||e instanceof HTMLButtonElement,i=e=>!!e&&!e.classList.contains("micl-hidden"),a=(e,t)=>{e.classList.toggle("micl-timepicker--selected",t)},r=t=>"hour"===t?{min:e?1:0,max:e?12:23}:{min:0,max:59},l=(e,t,n)=>{e.querySelectorAll("data").forEach(e=>e.classList.remove("micl-timepicker__time--selected"));const i=e.querySelector(`data[data-${t}][value="${n}"]`);let a="";i?(a=window.getComputedStyle(i).getPropertyValue("--micl-angle"),i.classList.add("micl-timepicker__time--selected")):"minute"===t&&(a=`${Math.round(360*parseInt(n,10)/60-90)}deg`),a&&e.style.setProperty("--micl-angle",a)},o=(n,i,a,r,o=!0)=>{let c=parseInt(a||"0",10);if(isNaN(c))return;const s=t(n,`input[name=${i}]`);if(s){if("hour"===i&&r&&e){const e=n.querySelector(".micl-timepicker__am"),t=n.querySelector(".micl-timepicker__pm");c>12?(t&&(t.checked=!0),c-=12):e&&(e.checked=!0)}if(s.value=`${c}`.padStart(2,"0"),o){const e=t(n,".micl-timepicker__dial");if(!e)return;l(e,i,s.value)}}},c=(t,n,i)=>{if("ArrowDown"!==i.key&&"ArrowUp"!==i.key)return;i.preventDefault();const{max:a,min:l}=r(n.name);let c=parseInt(n.value,10)||0;if(c+="ArrowUp"===i.key?1:-1,(c<l||c>a)&&(c=c<l?a:l,"hour"===n.name&&e)){const e=t.querySelector("input[name=period]:not(:checked)");e?.click()}o(t,n.name,`${c}`)};return{initialize:s=>{if(s.dataset.miclinitialized)return;const d=t(s,"form"),m=t(s,".micl-timepicker__inputmode"),u=t(s,".micl-timepicker__dial"),p=[t(s,"input[name=hour]"),t(s,"input[name=minute]")].filter(e=>null!==e);if(!d||p.length<2)return;s.dataset.miclinitialized="1",p.forEach((t,n)=>{(t=>{const{min:n,max:i}=r(t.name);let a;a="hour"===t.name?e?"(0[1-9]|1[0-2])":"(0[0-9]|1[0-9]|2[0-3])":"(0[0-9]|[1-5][0-9])";const l={maxlength:"2",pattern:a,inputmode:"numeric",autocomplete:"off",role:"spinbutton",min:String(n),max:String(i)};for(const e in l)t.setAttribute(e,l[e])})(t),u&&t.toggleAttribute("readonly",i(u)),t.addEventListener("keydown",c.bind(null,s,t)),t.addEventListener("focus",()=>{a(p[0===n?1:0],!1),a(t,!0),u&&(((e,t)=>{e.querySelectorAll("data").forEach(e=>{e.dataset[t]&&(e.textContent=e.dataset[t],e.value=e.dataset[t].padStart(2,"0")),e.classList.contains("micl-timepicker__dial-inner")&&e.classList["hour"===t?"remove":"add"]("micl-hidden")})})(u,t.name),l(u,t.name,t.value))}),t.addEventListener("blur",()=>{i(u)||((e=>{const{max:t,min:n}=r(e.name);let i=parseInt(e.value,10);isNaN(i)&&(i=n),i>t&&(i=t),i<0&&(i=n),e.value=String(i).padStart(2,"0")})(t),a(t,!1))})});const g=s.querySelector(".micl-timepicker__period");if(g&&e&&(["am","pm"].forEach(e=>{let t=document.createElement("input");t.type="radio",t.name="period",t.classList.add(`micl-timepicker__${e}`),t.value=e,t.ariaLabel=e.toUpperCase(),g.appendChild(t)}),g.classList.toggle("micl-hidden",!e)),m?.addEventListener("click",()=>{u?.classList.toggle("micl-hidden"),p.forEach(e=>{e.toggleAttribute("readonly",i(u))}),i(u)&&p[0].focus()}),u){(t=>{let n=e?300:270;for(let i=e?1:0;i<=(e?12:23);i++){const a=document.createElement("data");a.value=`${i}`.padStart(2,"0"),a.textContent=`${i}`,a.dataset.hour=`${i}`,a.style.setProperty("--micl-angle",`${n}deg`),!e&&i>=12?a.classList.add("micl-timepicker__dial-inner"):a.dataset.minute=""+5*i%60,t.appendChild(a),n=(n+30)%360}const i=document.createElement("span");i.classList.add("micl-timepicker__track"),t.appendChild(i)})(u);const t=(e,t)=>{const n=document.elementFromPoint(e,t);n&&"DATA"===n.tagName&&o(s,s.querySelector("input[name=hour].micl-timepicker--selected")?"hour":"minute",n.value)};u.addEventListener("pointerdown",e=>{u.classList.add("micl-timepicker__dial--dragging"),t(e.clientX,e.clientY),u.setPointerCapture(e.pointerId)}),u.addEventListener("pointermove",e=>{u.classList.contains("micl-timepicker__dial--dragging")&&t(e.clientX,e.clientY)});const n=e=>{u.classList.remove("micl-timepicker__dial--dragging"),u.releasePointerCapture(e.pointerId)};u.addEventListener("pointerup",n),u.addEventListener("pointercancel",n)}s.addEventListener("beforetoggle",e=>{if("open"===e.oldState)return;let t=document.activeElement;if(n(t)&&(t.dataset.timepicker||t.popoverTargetElement||t.commandForElement)||(t=document.querySelector(`[data-timepicker="${s.id}"],[popovertarget="${s.id}"],[commandfor="${s.id}"]`)),!n(t))return;s._miclInvoker=t;const i=(t.value||t.textContent).split(":");2===i.length&&(o(s,"hour",i[0],!0),o(s,"minute",i[1],!1,!1))}),s.addEventListener("close",()=>{if(!s.returnValue)return;let t=s._miclInvoker;if(t||(t=document.querySelector(`[data-timepicker="${s.id}"],[popovertarget="${s.id}"],[commandfor="${s.id}"]`)),!n(t))return;const i=d.elements;let a=parseInt(i.namedItem("hour")?.value||"0",10);if(isNaN(a))return;e&&"pm"===i.namedItem("period")?.value&&(a+=12);const r=parseInt(i.namedItem("minute")?.value||"0",10);if(isNaN(r))return;const l=`${a}`.padStart(2,"0")+":"+`${r}`.padStart(2,"0");t.value=l,t instanceof HTMLInputElement?(t.dispatchEvent(new Event("change",{bubbles:!0})),t.dispatchEvent(new Event("input",{bubbles:!0}))):t.textContent=l})}}})(),Z=(()=>{const e={[n]:{component:i,type:HTMLDialogElement},[a]:{component:l,type:HTMLButtonElement},[o]:{component:c,type:HTMLElement},[s]:{component:w,type:HTMLDialogElement},[T]:{component:x,type:HTMLElement},[M]:{component:D,type:HTMLElement},[C]:{component:A,type:HTMLElement},[K]:{component:G,type:HTMLSelectElement},[H]:{component:I,type:HTMLInputElement},[$]:{component:F,type:HTMLElement},[O]:{component:W,type:HTMLElement},[X]:{component:G,type:HTMLTextAreaElement},[U]:{component:G,type:HTMLInputElement},[J]:{component:Q,type:HTMLDialogElement}},t=Object.keys(e).join(","),r=t=>Object.entries(e).find(([e,{type:n}])=>t.matches(e)&&t instanceof n)?.[1],d=e=>{const t=r(e);t&&"function"==typeof t.component.initialize&&t.component.initialize(e)},m=new WeakSet,u=e=>{e.querySelectorAll(t).forEach(d),e.querySelectorAll('[class*="micl-"]').forEach(e=>{m.has(e)||"1"===window.getComputedStyle(e).getPropertyValue("--micl-ripple")&&(e.addEventListener("pointerdown",t=>{if(t.currentTarget.classList.contains("micl-card--nonactionable"))return;t.stopPropagation();const n=e.getBoundingClientRect();e.style.setProperty("--micl-x",t.clientX-n.left+"px"),e.style.setProperty("--micl-y",t.clientY-n.top+"px");const i=t=>{"micl-ripple"===t.animationName&&(e.style.removeProperty("--micl-x"),e.style.removeProperty("--micl-y"),e.removeEventListener("animationend",i))};e.addEventListener("animationend",i)}),m.add(e))}),document.documentElement.style.setProperty("--md-sys-scrollbar-thumb-color",window.getComputedStyle(document.body).getPropertyValue("--md-sys-color-outline").trim())},p=e=>{const t=r(e);t&&"function"==typeof t.component.cleanup&&t.component.cleanup(e)},g=e=>{e.querySelectorAll(t).forEach(p)},h=e=>{const n=e.target.closest(t);if(!(n instanceof HTMLElement))return;const i=r(n),a=e.type;i&&"function"==typeof i.component[a]&&i.component[a]?.(e)},f=()=>{new MutationObserver(e=>{e.forEach(e=>{"childList"===e.type&&(e.addedNodes.forEach(e=>{e instanceof HTMLElement&&(e.matches(t)&&d(e),e.querySelectorAll(t).forEach(d))}),e.removedNodes.forEach(e=>{e instanceof HTMLElement&&(e.matches(t)&&p(e),g(e))}))})}).observe(document.body,{childList:!0,subtree:!0}),u(document),document.addEventListener("change",h),document.addEventListener("input",h),document.addEventListener("keydown",h)},y=()=>{document.removeEventListener("DOMContentLoaded",y),f()};return"loading"!==document.readyState?f():document.addEventListener("DOMContentLoaded",y),{initialize:()=>u(document),cleanup:()=>g(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:()=>ne});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,a=e(t);return a.filter(e=>e>i+4)[0]||a[n?a.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:a=>{if(!a.matches(n)||a.dataset.miclinitialized)return;a.dataset.miclinitialized="1";const r=a.querySelector(".micl-bottomsheet__headline");if(!r)return;const l=r.querySelector(".micl-bottomsheet__draghandle");l?.addEventListener("click",()=>{i(a,t(a,!1))});let o,c,s=!1,m=!1;function d(e){const t=e.clientY;s&&Math.abs(o-t)>4&&(s=!1,m=!0,a.classList.add("micl-bottomsheet--resizing")),m&&i(a,c+o-t)}function u(n){s=!1,a.classList.remove("micl-bottomsheet--resizing"),m&&(m=!1,n.clientY<o?i(a,t(a,!0)):a.getBoundingClientRect().height<48?i(a,0):i(a,(t=>{let n=t.getBoundingClientRect().height,i=e(t),a=i.filter(e=>e<n-4);return a[a.length-1]||i[0]})(a)),document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",u))}r.addEventListener("mousedown",e=>{e.eventPhase===Event.AT_TARGET&&(s=!0,e.preventDefault(),o=e.clientY,c=a.getBoundingClientRect().height,document.addEventListener("mousemove",d),document.addEventListener("mouseup",u))})},cleanup:e=>{e.matches(n)&&(e.classList.remove("micl-bottomsheet--resizing"),delete e.dataset.miclinitialized,delete e.dataset.miclfitheight)}}})(),a="button.micl-button--toggle",r=e=>{const t=e.querySelector(".micl-button__icon")??e,n=e.classList.contains("micl-button--selected");t.dataset.micliconselected&&t.classList.toggle(t.dataset.micliconselected,n),t.dataset.miclicon&&t.classList.toggle(t.dataset.miclicon,!n)},l={command:e=>{const t=e.target;t.matches(a)&&!t.disabled&&"--micl-toggle"===e.command&&(t.classList.add("micl-button--toggled"),t.classList.toggle("micl-button--selected"),r(t))},initialize:function(e){e.matches(a)&&!e.dataset.miclinitialized&&(e.dataset.miclinitialized="1",r(e),e.addEventListener("command",this.command))},cleanup:function(e){e.matches(a)&&(document.removeEventListener("command",this.command),delete e.dataset.miclinitialized)}},o=".micl-checkbox-group",c=(()=>{const e=e=>{const t=e.querySelector(".micl-checkbox__parent");return t?.closest(o)===e?t:null},t=n=>{const i=e(n);if(!i)return!1;let a=0,r=0;return n.querySelectorAll('input[type="checkbox"].micl-checkbox').forEach(e=>{if(e!==i){const i=e.closest(o);i===n?(a++,e.checked&&!e.indeterminate&&r++):e.classList.contains("micl-checkbox__parent")&&i?.parentElement?.closest(o)===n&&(a++,t(i)&&r++)}}),0===r?(i.checked=!1,i.indeterminate=!1):r===a?(i.checked=!0,i.indeterminate=!1):(i.checked=!0,i.indeterminate=!0),r===a},n=(e,t)=>{e.querySelectorAll('input[type="checkbox"].micl-checkbox').forEach(i=>{const a=i.closest(o);a===e?i.checked=t:i.classList.contains("micl-checkbox__parent")&&a?.parentElement?.closest(o)===e&&(i.checked=t,n(a,t))})},i=(i,a)=>{const r=e(i);if(!r)return;a===r&&n(i,a.checked);let l,c=i;do{l=c,c=c.parentElement?.closest(o)}while(c);t(l)};return{initialize:e=>{e.matches(o)&&!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="dialog.micl-dialog.micl-datepicker",m=new WeakMap,d=(new Intl.DateTimeFormat).resolvedOptions().locale,u={input:new Intl.DateTimeFormat(d,{year:"numeric",month:"2-digit",day:"2-digit"}),header:new Intl.DateTimeFormat(d,{weekday:"short",day:"numeric",month:"short"}),monthLong:new Intl.DateTimeFormat(void 0,{month:"long"}),monthShort:new Intl.DateTimeFormat(d,{month:"short"}),weekdayNarrow:new Intl.DateTimeFormat(d,{weekday:"narrow"}),weekdayLong:new Intl.DateTimeFormat(d,{weekday:"long"})},p=e=>{const t=new Date(e);return t.setHours(0,0,0,0),t},h=e=>{const t=(e.getMonth()+1).toString().padStart(2,"0"),n=e.getDate().toString().padStart(2,"0");return`${e.getFullYear()}-${t}-${n}`},g=()=>u.input.formatToParts(new Date(2025,0,15)).map(e=>{switch(e.type){case"day":return"DD";case"month":return"MM";case"year":return"YYYY";case"literal":return e.value;default:return""}}).join("").trim(),y=(()=>{try{const e=new Intl.Locale(d).getWeekInfo?.();if(e)return 7===e.firstDay?0:e.firstDay}catch{}return/US|CA|MX/i.test(d)?0:1})(),f=e=>!isNaN(e.getTime()),v=(e,t)=>{if(e)if(e.firstElementChild){let n=e.firstChild;for(;n;){if(n.nodeType===Node.TEXT_NODE)return void(n.nodeValue=t);n=n.nextSibling}e.appendChild(document.createTextNode(t))}else e.textContent=t},E=(e,t)=>{const n=new Date(e,t,1).getDay(),i=new Date(e,t,1-(n-y+7)%7);return Array.from({length:42},(e,n)=>{const a=new Date(i);return a.setDate(i.getDate()+n),{date:a,val:h(a),isCurrentMonth:a.getMonth()===t}})},L=(e,t,n,i=!1)=>{if(i){const n=(()=>{const e=new Date,t=e.getDay()-y;e.setDate(e.getDate()-t);const n=document.createDocumentFragment();for(let t=0;t<7;t++){const i=document.createElement("span");i.style.gridArea=`1 / ${t+1}`,i.textContent=u.weekdayNarrow.format(e),i.title=u.weekdayLong.format(e),n.appendChild(i),e.setDate(e.getDate()+1)}return n})();t.forEach((e,t)=>{const i=document.createElement("time"),a=Math.floor(t/7)+2,r=t%7+1;i.style.gridArea=`${a} / ${r}`,n.appendChild(i)}),e.appendChild(n)}const a=p(new Date);e.querySelectorAll("time").forEach((e,i)=>{const r=t[i];e.dateTime=r.val,e.textContent=r.date.getDate().toString();const l=r.date.getTime()===n.selected.getTime(),o=r.date.getTime()===a.getTime();e.className="",r.isCurrentMonth||e.classList.add("micl-datepicker__outside"),l&&e.classList.add("micl-datepicker__selected"),o&&e.classList.add("micl-datepicker__today")})},k=(e,t,n=0)=>{const i=e.querySelector(".micl-dialog__content"),a=i?.querySelector(".micl-datepicker__calendars");if(!a)return;const r="micl-startleft",l="micl-startright",o="micl-moveleft",c="micl-moveright";if(a.classList.remove(o,c,r,l),a.offsetWidth,0!==n){const e=a.querySelector(".micl-datepicker__calendar");if(!e)return;const i=document.createElement("div"),s=document.createElement("div");i.classList.add("micl-datepicker__calendar"),s.classList.add("micl-datepicker__calendar-inner");const m=E(t.viewDate.getFullYear(),t.viewDate.getMonth());L(s,m,t,!0);const d=n>0,u=d?r:l,p=d?o:c;i.appendChild(s),d?a.appendChild(i):a.prepend(i),a.classList.add("micl-no-transition",u),a.offsetWidth,requestAnimationFrame(()=>{a.classList.remove("micl-no-transition",u),a.classList.add(p)});const h=()=>{a.removeEventListener("transitionend",h),setTimeout(()=>{a.classList.remove(p),e.parentElement===a&&e.remove(),a.classList.add("micl-no-transition",r),a.offsetWidth,a.classList.remove("micl-no-transition",r)},0)};a.addEventListener("transitionend",h)}else{let e=a.querySelector(".micl-datepicker__calendar");e||(e=document.createElement("div"),e.classList.add("micl-datepicker__calendar"),e=a.appendChild(e));let n=e.querySelector(".micl-datepicker__calendar-inner");n||(n=document.createElement("div"),n.classList.add("micl-datepicker__calendar-inner"),e.appendChild(n));const i=E(t.viewDate.getFullYear(),t.viewDate.getMonth());L(n,i,t,0===n.querySelectorAll("time").length)}const s=i?.querySelector(".micl-datepicker__input input");s&&(s.value=u.input.format(t.selected),s.value?s.dataset.miclvalue="1":delete s.dataset.miclvalue,s.dataset.micldateformat||(s.dataset.micldateformat=g())),v(e.querySelector("h1, h2, h3, h4, h5, h6, .micl-heading"),u.header.format(t.selected)),v(e.querySelector(".micl-datepicker__month"),u.monthShort.format(t.viewDate)),v(e.querySelector(".micl-datepicker__year"),t.viewDate.toLocaleDateString(d,e.classList.contains("micl-dialog--docked")?{year:"numeric"}:{month:"long",year:"numeric"}));const m=e.querySelector(`.micl-datepicker__months input[value="${t.viewDate.getMonth()}"]`);m&&(m.checked=!0);const p=e.querySelector(`.micl-datepicker__years input[value="${t.viewDate.getFullYear()}"]`);p&&(p.checked=!0)},b=(e,t)=>{"months"!==t&&"years"!==t||e.querySelector(`.micl-datepicker__${t}.micl-datepicker__view-hidden`)||(t="calendars"),["calendars","input","month-selector","year-selector"].forEach(n=>{let i="input"===t;"calendars"!==n&&"input"!==n||(i=t!==n),e.querySelector(`.micl-datepicker__${n}`)?.classList.toggle("micl-datepicker__view-hidden",i)});const n=e.querySelector(".micl-dialog__content");if(!n)return;const i=parseInt(window.getComputedStyle(n).getPropertyValue("max-block-size"),10);[".micl-datepicker__months",".micl-datepicker__years"].forEach(e=>{const a=n.querySelector(e);if(!a)return;const r=a.querySelector("input:checked");let l=!1;if(r&&e.substring(18)===t){const e=window.getComputedStyle(a).getPropertyValue("transition-duration"),t=parseFloat(e)*(e.includes("ms")?1:1e3),o=a.scrollHeight-i,c=(i-48)/2;if(r.offsetTop>c){let e=r.offsetTop-c-24;e>o&&(e=o);const i=performance.now(),s=a=>{const r=Math.min((a-i)/t,1);n.scrollTop=e*r,r<1&&requestAnimationFrame(s)};a.classList.remove("micl-datepicker__view-hidden"),requestAnimationFrame(s),l=null,a.addEventListener("transitionend",function t(i){"height"!==i.propertyName&&"block-size"!==i.propertyName||(n.scrollTop=e,a.removeEventListener("transitionend",t))})}}else l=!0;null!==l&&a.classList.toggle("micl-datepicker__view-hidden",l)})},_=(e,t,n)=>{const i=m.get(e);if(!i)return;const a=new Date(i.viewDate);"month"===n?a.setMonth(a.getMonth()+t):a.setFullYear(a.getFullYear()+t);const r=i.min&&a<i.min,l=i.max&&a>i.max;r||l?e.querySelector(".micl-datepicker__calendars")?.animate([{transform:"translateX(0)"},{transform:`translateX(${r?8:-8}px)`},{transform:"translateX(0)"}],{duration:500,easing:"ease-in-out"}):(i.viewDate=a,k(e,i,"month"===n?t:0))},w=(e,t,n=!1)=>{const i=m.get(e);if(!i)return;let a=[];if(n){const e=g();if(t.length===e.length){let n="",i="",r="";for(let a=0;a<e.length;a++)switch(e[a]){case"D":n+=t[a];break;case"M":i+=t[a];break;case"Y":r+=t[a]}a=[parseInt(r,10),parseInt(i,10)-1,parseInt(n,10)]}}else a=t.split("-").map(Number),a[1]--;3===a.length&&(i.selected=new Date(a[0],a[1],a[2]),i.viewDate=new Date(i.selected),k(e,i))},S={keydown:e=>{if(!(e instanceof KeyboardEvent&&e.target instanceof Element))return;const t=e.target.closest(s);if(t)switch(e.key){case"Enter":case" ":e.target instanceof HTMLInputElement&&"date"===e.target.type&&e.preventDefault();break;case"M":b(t,"months");break;case"Y":b(t,"years");break;case"PageUp":case"PageDown":_(t,"PageUp"===e.key?1:-1,e.shiftKey?"year":"month")}},initialize:e=>{if(e.dataset.miclinitialized)return;const t=e.querySelector("form"),n=e.querySelector(".micl-dialog__content");t&&n&&(e.dataset.miclinitialized="1",e.addEventListener("click",t=>{const n=t.target,i=n.closest("button");if(i){const t=i.parentElement?.classList.contains("micl-datepicker__month-selector"),n=i.classList.contains("micl-datepicker__next"),a=i.classList.contains("micl-datepicker__previous");if(n||a)return void _(e,n?1:-1,t?"month":"year")}n.closest(".micl-datepicker__month")&&b(e,"months"),n.closest(".micl-datepicker__year")&&b(e,"years"),n.closest(".micl-datepicker__inputmode")&&b(e,e.querySelector(".micl-datepicker__input.micl-datepicker__view-hidden")?"input":"calendars");const a=n.closest("time");if(a&&a.dateTime&&w(e,a.dateTime),n instanceof HTMLInputElement&&("miclmonth"===n.name||"miclyear"===n.name)){const t=m.get(e);if(t){const i=parseInt(n.value,10);"miclmonth"===n.name?t.viewDate.setMonth(i):t.viewDate.setFullYear(i),t.viewDate<t.min?t.viewDate=t.min:t.viewDate>t.max&&(t.viewDate=t.max),k(e,t),b(e,"calendars")}}}),e.addEventListener("beforetoggle",t=>{if("open"!==t.newState)return;const n=e=>e instanceof HTMLInputElement||e instanceof HTMLButtonElement;let i=document.activeElement;if(n(i)&&(i.dataset.datepicker||i.popoverTargetElement||i.commandForElement)||(i=document.querySelector(`[data-datepicker="${e.id}"],[popovertarget="${e.id}"],[commandfor="${e.id}"]`)),!n(i))return;let a=new Date,r=new Date(1900,0,1),l=new Date(2099,11,31);if(i instanceof HTMLInputElement)"date"===i.type&&i.valueAsDate?a=i.valueAsDate:i.value&&(a=new Date(i.value)),i.min&&(r=new Date(i.min)),i.max&&(l=new Date(i.max));else{const e=new Date(i.value||i.textContent);f(e)&&(a=e)}f(a)||(a=new Date),a=p(a);const o={invoker:i,selected:a,viewDate:new Date(a),min:r,max:l};m.set(e,o),((e,t,n)=>{const i=t.getFullYear(),a=n.getFullYear();["months","years"].forEach(r=>{const l=e.querySelector(`.micl-datepicker__${r}`);if(!l)return;l.innerHTML="";const o=document.createDocumentFragment(),c=n.getMonth();if("months"===r){const e=[];let i=new Date(t.getFullYear(),t.getMonth(),1);for(;i<=n||i.getMonth()===c&&i.getFullYear()===a;)e.push(i.getMonth()),i.setMonth(i.getMonth()+1);[...new Set(e.sort((e,t)=>e-t))].forEach(e=>{const t=document.createElement("label");t.innerHTML=`<span class="material-symbols-outlined">check</span><input type="radio" name="miclmonth" value="${e}"> ${u.monthLong.format(new Date(2e3,e,1))}`,o.appendChild(t)})}else for(let e=i;e<=a;e++){const t=document.createElement("label");t.innerHTML=`<input type="radio" name="miclyear" value="${e}"> ${e}`,o.appendChild(t)}const s=document.createElement("div");s.classList.add(`micl-datepicker__${r}-inner`),l.appendChild(s).appendChild(o)})})(e,r,l),b(e,"calendars"),k(e,o),e.querySelector(".micl-datepicker__input input")?.addEventListener("blur",t=>{const n=t.target;w(e,n.value,!0)},{once:!0})}),e.addEventListener("close",()=>{const t=m.get(e);t?.invoker&&""!==e.returnValue&&(t.invoker.value=h(t.selected),t.invoker instanceof HTMLInputElement?(t.invoker.dispatchEvent(new Event("change",{bubbles:!0})),t.invoker.dispatchEvent(new Event("input",{bubbles:!0}))):t.invoker.textContent=t.selected.toLocaleDateString())}))}},x=".micl-list",D=e=>e?.matches(":has(input[type=checkbox]:checked)"),M={keydown(e){const t=e.target;if(!(e instanceof KeyboardEvent&&t?.matches(".micl-list-item-one,.micl-list-item-two,.micl-list-item-three")))return;const n=t.parentElement;if(!n)return;const i=n instanceof HTMLDetailsElement;let a=[];if(i?a=Array.from(n.parentElement?.children||[]).map(e=>e.querySelector(":scope > summary")).filter(Boolean):["UL","OL"].includes(n.tagName)&&(a=Array.from(n.children).filter(e=>e instanceof HTMLLIElement&&"separator"!==e.getAttribute("role"))),a=a.filter(e=>!(e=>e?.classList.contains("micl-list-item--disabled"))(e)),!a.length)return;const r=a.indexOf(t);if(-1===r)return;let l=r;switch(e.key){case"ArrowDown":e.preventDefault(),l=(r+1)%a.length;break;case"ArrowUp":e.preventDefault(),l=(r-1+a.length)%a.length;break;case"Tab":if(!i){const e=a.findIndex(D);l=-1===e?0:e}break;case" ":case"Enter":if(i)break;" "===e.key&&e.preventDefault();const n=t.querySelector("input[type=checkbox], a[href], button");n instanceof HTMLInputElement?(n.checked=!n.checked,n.dispatchEvent(new Event("change",{bubbles:!0,cancelable:!0}))):n?.click()}l!==r&&(i||(t.setAttribute("tabindex","-1"),a[l].setAttribute("tabindex","0")),a[l].focus())},initialize(e){e.dataset.miclinitialized||(e.dataset.miclinitialized="1",e.querySelectorAll(":scope > details > summary.micl-list-item--disabled").forEach(e=>e.setAttribute("tabindex","-1")),e.querySelector('li[tabindex="0"]')&&e.querySelectorAll('li:not([role="separator"])').forEach(e=>{"0"!==e.getAttribute("tabindex")&&e.setAttribute("tabindex","-1"),e.querySelectorAll("a, button, input").forEach(e=>e.setAttribute("tabindex","-1")),(e=>e?.matches(":has(input[type=checkbox])"))(e)&&(e.setAttribute("role","option"),e.parentElement?.setAttribute("role","listbox"))}))}},T=".micl-menu[popover]",C=(()=>{const e=e=>Array.from(e.children).filter(e=>e instanceof HTMLLIElement&&"separator"!==e.getAttribute("role")&&!e.classList.contains("micl-list-item--disabled")&&e.matches(".micl-list-item-one,.micl-list-item-two,.micl-list-item-three"));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",()=>{t.style.transformOrigin=((e,t)=>{const n=e.getBoundingClientRect(),i=t.getBoundingClientRect();return(n.x>i.x?"right ":"left ")+(n.y>i.y?"bottom":"top")})(n,t)}),t.addEventListener("keydown",n=>{if("ArrowDown"!==n.key&&"ArrowUp"!==n.key)return;const i=n.target;if(!(i instanceof HTMLElement&&i.matches(".micl-list-item-one,.micl-list-item-two,.micl-list-item-three")))return;const a=i.parentElement;if(!a?.matches("ul.micl-list"))return;if(a.parentElement!==t)return;const r=Array.from(t.querySelectorAll(":scope > ul.micl-list"));if(r.length<2)return;const l=r.indexOf(a),o=e(a),c=o.indexOf(i);if(-1===c)return;let s;if("ArrowDown"===n.key&&c===o.length-1){const t=(l+1)%r.length;s=e(r[t])[0]}else if("ArrowUp"===n.key&&0===c){const t=(l-1+r.length)%r.length,n=e(r[t]);s=n[n.length-1]}s&&(n.preventDefault(),n.stopPropagation(),i.setAttribute("tabindex","-1"),s.setAttribute("tabindex","0"),s.focus())},!0),t.querySelectorAll(":scope > ul.micl-list > li > button[popovertarget]").forEach(e=>{if(e.popoverTargetElement?.matches(".micl-menu[popover]")){const t=e.popoverTargetElement,n=`--${t.id}`;let i;e.style.setProperty("anchor-name",n),t.style.insetBlockStart=`anchor(${n} start)`,t.style.insetInlineStart=`anchor(${n} end)`;const a=()=>{clearTimeout(i),i=setTimeout(()=>{e.matches(":hover")||t.matches(":hover")||t.hidePopover()},300)};e.addEventListener("mouseenter",()=>{clearTimeout(i),t.showPopover()}),e.addEventListener("mouseleave",a),t.addEventListener("mouseenter",()=>{clearTimeout(i)}),t.addEventListener("mouseleave",a)}})}}})(),A=".micl-navigationrail",q=new WeakMap,P={initialize:e=>{if(!e.matches(A)||e.dataset.miclinitialized)return;e.dataset.miclinitialized="1";const t=t=>{const n=t.target.closest("a.micl-navigationrail__item");n&&(e.querySelectorAll("a.micl-navigationrail__item").forEach(e=>e.removeAttribute("aria-current")),n.setAttribute("aria-current","page"))};q.set(e,{boundHandleClick:t}),e.addEventListener("click",t)},keydown:e=>{e instanceof KeyboardEvent&&e.target instanceof HTMLElement&&e.target.matches(".micl-navigationrail__item")&&(32!==e.keyCode&&" "!==e.key||(e.preventDefault(),e.target.click()))},cleanup:e=>{const t=q.get(e);t&&e.removeEventListener("click",t.boundHandleClick),delete e.dataset.miclinitialized}},I="progress.micl-progress-linear,progress.micl-progress-circular",H=(()=>{const e=new WeakMap,t=e=>{const t=e.position;if(t<0)return e.style.removeProperty("--md-comp-progress-value"),e.style.removeProperty("--md-comp-progress-max"),e.style.removeProperty("--md-comp-progress-fraction"),void e.style.removeProperty("--md-comp-progress-amplitude-scale");const n=Math.max(0,Math.min(1,(1-t)/.1));e.style.setProperty("--md-comp-progress-value",String(e.value)),e.style.setProperty("--md-comp-progress-max",String(e.max||1)),e.style.setProperty("--md-comp-progress-fraction",String(t)),e.style.setProperty("--md-comp-progress-amplitude-scale",String(n))};return{initialize:n=>{if(!n.matches(I))return;t(n);const i=new MutationObserver(()=>t(n));i.observe(n,{attributes:!0,attributeFilter:["value","max"]}),e.set(n,i)},cleanup:t=>{const n=e.get(t);n&&(n.disconnect(),e.delete(t))}}})(),$="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",z=(()=>{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},a=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:r=>{if(!r.matches($))return;(e=>{let t=e.max||"100";n(e)?.style.setProperty("--md-sys-slider-max",t),e.style.setProperty("--md-sys-slider-max",t)})(r),(e=>{let t=e.min||"0";n(e)?.style.setProperty("--md-sys-slider-min",t),e.style.setProperty("--md-sys-slider-min",t)})(r),a(r),(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))})}})(r);const l=parseFloat(r.max),o=parseFloat(r.min),c=r.getBoundingClientRect(),s=((e,t,n)=>{const i=[];return e.list&&t>n&&e.list.querySelectorAll("option[value]").forEach(e=>{let a=parseFloat(e.value);!isNaN(a)&&a>=n&&a<=t&&i.push(a)}),i})(r,l,o).sort((e,t)=>e-t).map(e=>Math.round(100*(e-o)/(l-o)));if(s.length>0){const n=document.createElement("canvas"),a=n.getContext("2d");if(a){a.font=window.getComputedStyle(r).getPropertyValue("font");let n=a.measureText(t).width,l=a.measureText(e).width,o=c.width-10,m=0,d="";s.forEach(i=>{let a=o*i/100,r=Math.round((a-m)/n)-1;for(let e=0;e<r;e++)d+=t,m+=n;d+=e,m+=l}),i(r,d)}n.remove()}else i(r,e)},input:e=>{e.target.matches($)&&e.target instanceof HTMLInputElement&&!e.target.disabled&&a(e.target)}}})(),N=".micl-snackbar",F=new WeakMap,Y=e=>{const t=F.get(e);t&&t.timeoutid&&(clearTimeout(t.timeoutid),t.timeoutid=void 0)},O=e=>{Y(e);const t=F.get(e);t&&(t.timeoutid=window.setTimeout(()=>{e.isConnected&&e.matches(":popover-open")&&e.hidePopover()},t.delay))},B={initialize:e=>{if(!e.matches(N)||e.dataset.miclinitialized)return;const t=e.dataset.micldelay,n=t?parseInt(t,10):0;if(isNaN(n)||n<=0)return;e.dataset.miclinitialized="1";const i=()=>Y(e),a=t=>{"open"===t.newState?O(e):Y(e)},r=()=>{e.matches(":popover-open")&&O(e)};F.set(e,{delay:n,boundHandleToggle:a,boundClearTimer:i,boundHandleMouseLeave:r}),e.addEventListener("toggle",a),e.addEventListener("mouseenter",i),e.addEventListener("mouseleave",r)},cleanup:e=>{const t=F.get(e);t&&(Y(e),e.removeEventListener("toggle",t.boundHandleToggle),e.removeEventListener("mouseenter",t.boundClearTimer),e.removeEventListener("mouseleave",t.boundHandleMouseLeave),F.delete(e)),delete e.dataset.miclinitialized}},V=(()=>{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||"",a=e.dataset.miclvalidateCheckboxesCountEqual||"",r=e.dataset.miclvalidateCheckboxesCountMax||"",l=e.dataset.miclvalidateCheckboxesCountMin||"";if(i&&(a||r||l)){const o=e.querySelectorAll(`input[type="checkbox"][name="${i}"]:checked`).length,c=parseInt(a,10),s=parseInt(r,10),m=parseInt(l,10);let d=!isNaN(c)&&o!=c||!isNaN(s)&&o>s||!isNaN(m)&&o<m;e.setCustomValidity(d?n:"");const u=e.querySelector(`input[type="checkbox"][name="${i}"]`);u&&(u.setCustomValidity(d?n:""),d?u.addEventListener("change",t):u.removeEventListener("change",t))}}},i=(t,i)=>{let a=!1;return t.querySelectorAll("fieldset").forEach(n),Array.from(t.elements).forEach(t=>{if(e(t)&&t.willValidate){t.checkValidity()||(a=!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()}}),!a};return{validateFieldSet:(e,t)=>(n(e),i(e,t)),validateForm:(e,t)=>i(e,t)}})(),R=".micl-stepper",j=".micl-stepper__action-back,.micl-stepper__action-next",W=".micl-stepper__header button[role=tab][aria-controls]",U="micl-stepper__step",X="."+U,K=(()=>{const e=e=>e.querySelector(`${X}[aria-current=step]`)||n(e,e.querySelector(X)),t=(e,t)=>Array.from(e.querySelectorAll(X)).indexOf(t)+1,n=(e,t)=>{if(!t)return null;let n=0;e.querySelectorAll(X).forEach((e,i)=>{e.setAttribute("aria-current",e===t?"step":"false"),e===t&&(n=i)});const i=e.querySelectorAll(W).item(n);return e.querySelectorAll(W).forEach(e=>{e.setAttribute("aria-selected",e===i?"true":"false")}),r(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))},a=e=>e.classList.contains("micl-stepper__action-back"),r=(e,n)=>{((e,t)=>{Array.from(e.querySelectorAll(j)).forEach(e=>{const n=a(e)?"previousElementSibling":"nextElementSibling",i=t[n]?.classList.contains(U);e.classList.toggle("micl-hidden",!i)})})(e,n),((e,n)=>{const i=e.querySelectorAll(X).length,a=t(e,n);e.querySelectorAll("[data-step]").forEach(e=>{const t=parseInt(e.dataset.step||"0",10);e.classList.toggle("micl-hidden",t>0?t!=a:i+t+1!=a)})})(e,n),((e,n)=>{const i=t(e,n),a=e.querySelectorAll(X).length,r=!e.classList.contains("micl-stepper--nonlinear"),l=(t,n)=>{e.querySelectorAll(t).forEach(e=>{e.textContent=n})};l(".micl-stepper__progress-current",`${i}`),l(".micl-stepper__progress-total",`${a}`),e.querySelectorAll(".micl-stepper__progress-dots").forEach(e=>{const t=document.createDocumentFragment();e.innerHTML="";for(let e=1;e<=a;e++){let n=document.createElement("span");n.classList.add("micl-stepper__progress-dot"),(r&&e<=i||!r&&e===i)&&n.classList.add("micl-stepper__progress--done"),t.appendChild(n)}e.appendChild(t)}),e.querySelectorAll(W).forEach((e,t)=>{e.classList.toggle("micl-stepper__progress--done",r?t+1<=i:t+1===i)})})(e,n)};return{initialize:t=>{if(!t.matches(R)||t.dataset.miclinitialized)return;t.dataset.miclinitialized="1";const l=e(t),o=t.querySelector(".micl-stepper__header");l&&(r(t,l),o?.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(j)).forEach(r=>{r.addEventListener("click",function(r){const l=a(this),o=e(t);if(!o||!l&&o instanceof HTMLFieldSetElement&&!V.validateFieldSet(o,!0))return void(l||r.stopImmediatePropagation());const c=o[l?"previousElementSibling":"nextElementSibling"];c?.classList.contains(U)&&((e,t,a)=>{t.addEventListener("transitionend",i),t.classList.add("micl-stepper__step--fromselected"),t.offsetHeight,a.addEventListener("transitionend",i),a.classList.add("micl-stepper__step--toselected"),a.offsetHeight,n(e,a)})(t,o,c)},!0)}),t instanceof HTMLFormElement&&t.addEventListener("submit",e=>{e.submitter?.classList.contains("micl-form--dosubmit")||e.preventDefault(),V.validateForm(t,!0)||e.stopImmediatePropagation()},!0)}}})(),G=".micl-textfield-outlined > input,.micl-textfield-filled > input",J=".micl-textfield-outlined > textarea,.micl-textfield-filled > textarea",Q=".micl-textfield-filled > select,.micl-textfield-outlined > select",Z=(()=>{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}`)},t=t=>{t.target.matches(`${G},${Q},${J}`)&&t.target.dataset.miclinitialized&&!t.target.disabled&&(t.target instanceof HTMLInputElement&&t.target.dataset.micldateformat&&((e,t)=>{const n=(e.dataset.micldateformat||"").match(/([DMY]{2,4})([^DMY])?([DMY]{2,4})([^DMY])?([DMY]{2,4})/);if(!n)return;const i=[{type:n[1],length:n[1].length,separator:n[2]||""},{type:n[3],length:n[3].length,separator:n[4]||""},{type:n[5],length:n[5].length,separator:""}];e.maxLength=i.reduce((e,t)=>e+t.length+(t.separator?1:0),0);let a=e.value.replace(/\D/g,""),r="",l=0,o=e.selectionStart||0;for(let e=0;e<i.length;e++){const t=i[e];if(a.length<l)break;const n=a.substring(l,l+t.length);r+=n,l+=n.length,n.length===t.length&&t.separator&&(r+=t.separator)}const c=e.value.length;e.value=r.substring(0,e.maxLength);const s=e.value.length;t.startsWith("deleteContent")?o>0&&e.setSelectionRange(o,o):s>c&&s>o?e.setSelectionRange(s,s):e.setSelectionRange(o,o)})(t.target,t.inputType),t.target.value?t.target.dataset.miclvalue="1":delete t.target.dataset.miclvalue,e(t.target))};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-comp-select-picker-origin",n>i?"left bottom":"left top")}),t.matches("input[type=time][data-timepicker],input[type=date][data-datepicker]")){const e=t.dataset.timepicker?document.getElementById(t.dataset.timepicker):t.dataset.datepicker?document.getElementById(t.dataset.datepicker):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)}},change:e=>{t(e)},input:e=>{t(e)}}})(),ee="dialog.micl-dialog.micl-timepicker",te=(()=>{const e=(()=>{try{const e=new Intl.DateTimeFormat(void 0,{hour:"numeric"}).resolvedOptions().hourCycle;return"h11"===e||"h12"===e}catch(e){return!1}})(),t=(e,t)=>e.querySelector(t),n=e=>e instanceof HTMLInputElement||e instanceof HTMLButtonElement,i=e=>!!e&&!e.classList.contains("micl-hidden"),a=(e,t)=>{e.classList.toggle("micl-timepicker--selected",t)},r=t=>"hour"===t?{min:e?1:0,max:e?12:23}:{min:0,max:59},l=(e,t,n)=>{e.querySelectorAll("data").forEach(e=>e.classList.remove("micl-timepicker__time--selected"));const i=e.querySelector(`data[data-${t}][value="${n}"]`);let a="";i?(a=window.getComputedStyle(i).getPropertyValue("--micl-angle"),i.classList.add("micl-timepicker__time--selected")):"minute"===t&&(a=`${Math.round(360*parseInt(n,10)/60-90)}deg`),a&&e.style.setProperty("--micl-angle",a)},o=(n,i,a,r,o=!0)=>{let c=parseInt(a||"0",10);if(isNaN(c))return;const s=t(n,`input[name=${i}]`);if(s){if("hour"===i&&r&&e){const e=n.querySelector(".micl-timepicker__am"),t=n.querySelector(".micl-timepicker__pm");c>12?(t&&(t.checked=!0),c-=12):e&&(e.checked=!0)}if(s.value=`${c}`.padStart(2,"0"),o){const e=t(n,".micl-timepicker__dial");if(!e)return;l(e,i,s.value)}}},c=(t,n,i)=>{if("ArrowDown"!==i.key&&"ArrowUp"!==i.key)return;i.preventDefault();const{max:a,min:l}=r(n.name);let c=parseInt(n.value,10)||0;if(c+="ArrowUp"===i.key?1:-1,(c<l||c>a)&&(c=c<l?a:l,"hour"===n.name&&e)){const e=t.querySelector("input[name=period]:not(:checked)");e?.click()}o(t,n.name,`${c}`)};return{initialize:s=>{if(s.dataset.miclinitialized)return;const m=t(s,"form"),d=t(s,".micl-timepicker__inputmode"),u=t(s,".micl-timepicker__dial"),p=[t(s,"input[name=hour]"),t(s,"input[name=minute]")].filter(e=>null!==e);if(!m||p.length<2)return;s.dataset.miclinitialized="1",p.forEach((t,n)=>{(t=>{const{min:n,max:i}=r(t.name);let a;a="hour"===t.name?e?"(0[1-9]|1[0-2])":"(0[0-9]|1[0-9]|2[0-3])":"(0[0-9]|[1-5][0-9])";const l={maxlength:"2",pattern:a,inputmode:"numeric",autocomplete:"off",role:"spinbutton",min:String(n),max:String(i)};for(const e in l)t.setAttribute(e,l[e])})(t),u&&t.toggleAttribute("readonly",i(u)),t.addEventListener("keydown",c.bind(null,s,t)),t.addEventListener("focus",()=>{a(p[0===n?1:0],!1),a(t,!0),u&&(((e,t)=>{e.querySelectorAll("data").forEach(e=>{e.dataset[t]&&(e.textContent=e.dataset[t],e.value=e.dataset[t].padStart(2,"0")),e.classList.contains("micl-timepicker__dial-inner")&&e.classList["hour"===t?"remove":"add"]("micl-hidden")})})(u,t.name),l(u,t.name,t.value))}),t.addEventListener("blur",()=>{i(u)||((e=>{const{max:t,min:n}=r(e.name);let i=parseInt(e.value,10);isNaN(i)&&(i=n),i>t&&(i=t),i<0&&(i=n),e.value=String(i).padStart(2,"0")})(t),a(t,!1))})});const h=s.querySelector(".micl-timepicker__period");if(h&&e&&(["am","pm"].forEach(e=>{let t=document.createElement("input");t.type="radio",t.name="period",t.classList.add(`micl-timepicker__${e}`),t.value=e,t.ariaLabel=e.toUpperCase(),h.appendChild(t)}),h.classList.toggle("micl-hidden",!e)),d?.addEventListener("click",()=>{u?.classList.toggle("micl-hidden"),p.forEach(e=>{e.toggleAttribute("readonly",i(u))}),i(u)&&p[0].focus()}),u){(t=>{let n=e?300:270;for(let i=e?1:0;i<=(e?12:23);i++){const a=document.createElement("data");a.value=`${i}`.padStart(2,"0"),a.textContent=`${i}`,a.dataset.hour=`${i}`,a.style.setProperty("--micl-angle",`${n}deg`),!e&&i>=12?a.classList.add("micl-timepicker__dial-inner"):a.dataset.minute=""+5*i%60,t.appendChild(a),n=(n+30)%360}const i=document.createElement("span");i.classList.add("micl-timepicker__track"),t.appendChild(i)})(u);const t=(e,t)=>{const n=document.elementFromPoint(e,t);n&&"DATA"===n.tagName&&o(s,s.querySelector("input[name=hour].micl-timepicker--selected")?"hour":"minute",n.value)};u.addEventListener("pointerdown",e=>{u.classList.add("micl-timepicker__dial--dragging"),t(e.clientX,e.clientY),u.setPointerCapture(e.pointerId)}),u.addEventListener("pointermove",e=>{u.classList.contains("micl-timepicker__dial--dragging")&&t(e.clientX,e.clientY)});const n=e=>{u.classList.remove("micl-timepicker__dial--dragging"),u.releasePointerCapture(e.pointerId)};u.addEventListener("pointerup",n),u.addEventListener("pointercancel",n)}s.addEventListener("beforetoggle",e=>{if("open"===e.oldState)return;let t=document.activeElement;if(n(t)&&(t.dataset.timepicker||t.popoverTargetElement||t.commandForElement)||(t=document.querySelector(`[data-timepicker="${s.id}"],[popovertarget="${s.id}"],[commandfor="${s.id}"]`)),!n(t))return;s._miclInvoker=t;const i=(t.value||t.textContent).split(":");2===i.length&&(o(s,"hour",i[0],!0),o(s,"minute",i[1],!1,!1))}),s.addEventListener("close",()=>{if(!s.returnValue)return;let t=s._miclInvoker;if(t||(t=document.querySelector(`[data-timepicker="${s.id}"],[popovertarget="${s.id}"],[commandfor="${s.id}"]`)),!n(t))return;const i=m.elements;let a=parseInt(i.namedItem("hour")?.value||"0",10);if(isNaN(a))return;e&&"pm"===i.namedItem("period")?.value&&(a+=12);const r=parseInt(i.namedItem("minute")?.value||"0",10);if(isNaN(r))return;const l=`${a}`.padStart(2,"0")+":"+`${r}`.padStart(2,"0");t.value=l,t instanceof HTMLInputElement?(t.dispatchEvent(new Event("change",{bubbles:!0})),t.dispatchEvent(new Event("input",{bubbles:!0}))):t.textContent=l})}}})(),ne=(()=>{const e={[n]:{component:i,type:HTMLDialogElement},[a]:{component:l,type:HTMLButtonElement},[o]:{component:c,type:HTMLElement},[s]:{component:S,type:HTMLDialogElement},[x]:{component:M,type:HTMLElement},[T]:{component:C,type:HTMLElement},[A]:{component:P,type:HTMLElement},[I]:{component:H,type:HTMLProgressElement},[Q]:{component:Z,type:HTMLSelectElement},[$]:{component:z,type:HTMLInputElement},[N]:{component:B,type:HTMLElement},[R]:{component:K,type:HTMLElement},[J]:{component:Z,type:HTMLTextAreaElement},[G]:{component:Z,type:HTMLInputElement},[ee]:{component:te,type:HTMLDialogElement}},t=Object.keys(e).join(","),r=t=>Object.entries(e).find(([e,{type:n}])=>t.matches(e)&&t instanceof n)?.[1],m=e=>{const t=r(e);t&&"function"==typeof t.component.initialize&&t.component.initialize(e)},d=new WeakSet,u=e=>{e.querySelectorAll(t).forEach(m),e.querySelectorAll('[class*="micl-"], [class*="micl-"] > summary').forEach(e=>{d.has(e)||"1"===window.getComputedStyle(e).getPropertyValue("--micl-ripple")&&(e.addEventListener("pointerdown",t=>{if(t.currentTarget.classList.contains("micl-card--nonactionable"))return;t.stopPropagation();const n=e.getBoundingClientRect();e.style.setProperty("--micl-x",t.clientX-n.left+"px"),e.style.setProperty("--micl-y",t.clientY-n.top+"px"),e.classList.remove("micl-rippling"),e.offsetWidth,e.classList.add("micl-rippling");const i=t=>{"micl-ripple"===t.animationName&&(e.classList.remove("micl-rippling"),e.style.removeProperty("--micl-x"),e.style.removeProperty("--micl-y"),e.removeEventListener("animationend",i))};e.addEventListener("animationend",i)}),d.add(e))}),document.documentElement.style.setProperty("--md-sys-scrollbar-thumb-color",window.getComputedStyle(document.body).getPropertyValue("--md-sys-color-outline").trim())},p=e=>{const t=r(e);t&&"function"==typeof t.component.cleanup&&t.component.cleanup(e)},h=e=>{e.querySelectorAll(t).forEach(p)},g=e=>{const n=e.target.closest(t);if(!(n instanceof HTMLElement))return;const i=r(n),a=e.type;i&&"function"==typeof i.component[a]&&i.component[a]?.(e)},y=()=>{new MutationObserver(e=>{e.forEach(e=>{"childList"===e.type&&(e.addedNodes.forEach(e=>{e instanceof HTMLElement&&(e.matches(t)&&m(e),e.querySelectorAll(t).forEach(m))}),e.removedNodes.forEach(e=>{e instanceof HTMLElement&&(e.matches(t)&&p(e),h(e))}))})}).observe(document.body,{childList:!0,subtree:!0}),u(document),document.addEventListener("change",g),document.addEventListener("input",g),document.addEventListener("keydown",g)},f=()=>{document.removeEventListener("DOMContentLoaded",f),y()};return"loading"!==document.readyState?y():document.addEventListener("DOMContentLoaded",f),{initialize:()=>u(document),cleanup:()=>h(document)}})()})(),t})());
|
|
@@ -0,0 +1,288 @@
|
|
|
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 Progress Indicators">
|
|
7
|
+
<title>MICL Progress Indicators</title>
|
|
8
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
9
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
10
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Google+Sans:ital,opsz,wght@0,17..18,400..700;1,17..18,400..700&display=swap">
|
|
11
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:FILL@0..1&icon_names=content_copy,dark_mode,home&display=block">
|
|
12
|
+
<link rel="stylesheet" href="themes/airblue/theme.css" id="theme-link">
|
|
13
|
+
<link rel="stylesheet" href="micl.css">
|
|
14
|
+
<link rel="stylesheet" href="docs.css">
|
|
15
|
+
<style>
|
|
16
|
+
.docs-row {
|
|
17
|
+
display: flex;
|
|
18
|
+
flex-direction: column;
|
|
19
|
+
row-gap: 28px;
|
|
20
|
+
padding-block: 16px;
|
|
21
|
+
}
|
|
22
|
+
.docs-field label {
|
|
23
|
+
display: block;
|
|
24
|
+
margin-block-end: 12px;
|
|
25
|
+
color: var(--md-sys-color-on-surface);
|
|
26
|
+
}
|
|
27
|
+
.docs-circular-row {
|
|
28
|
+
display: flex;
|
|
29
|
+
align-items: center;
|
|
30
|
+
column-gap: 32px;
|
|
31
|
+
padding-block: 16px;
|
|
32
|
+
}
|
|
33
|
+
.docs-circular-row figure {
|
|
34
|
+
display: flex;
|
|
35
|
+
flex-direction: column;
|
|
36
|
+
align-items: center;
|
|
37
|
+
row-gap: 12px;
|
|
38
|
+
margin: 0;
|
|
39
|
+
}
|
|
40
|
+
.docs-circular-row figcaption {
|
|
41
|
+
color: var(--md-sys-color-on-surface);
|
|
42
|
+
}
|
|
43
|
+
.box {
|
|
44
|
+
--mask:
|
|
45
|
+
radial-gradient(15.12px at 50% calc(100% + 8.5px),#0000 calc(99% - 4px),#000 calc(101% - 4px) 99%,#0000 101%) calc(50% - 20px) calc(50% - 7px + .5px)/40px 14px repeat-x,
|
|
46
|
+
radial-gradient(15.12px at 50% -8.5px,#0000 calc(99% - 4px),#000 calc(101% - 4px) 99%,#0000 101%) 50% calc(50% + 7px)/40px 14px repeat-x;
|
|
47
|
+
}
|
|
48
|
+
.sine-wave-bg0 {
|
|
49
|
+
width: 100%;
|
|
50
|
+
height: 200px;
|
|
51
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 20'%3E%3Cpath fill='none' stroke='%23007bff' stroke-width='2' d='M0 10 Q 25 0 50 10 T 100 10' /%3E%3C/svg%3E");
|
|
52
|
+
background-repeat: repeat-x;
|
|
53
|
+
background-size: 200px 40px;
|
|
54
|
+
}
|
|
55
|
+
.sine-wave-bg1 {
|
|
56
|
+
width: 100%;
|
|
57
|
+
height: 12px;
|
|
58
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 10'%3E%3Cpath fill='none' stroke='currentColor' stroke-width='2' d='M 0 5 C 4.244 -1.667 5.756 -1.667 10 5 C 14.244 11.667 15.756 11.667 20 5 C 24.244 -1.667 25.756 -1.667 30 5 C 34.244 11.667 35.756 11.667 40 5 C 44.244 -1.667 45.756 -1.667 50 5 C 54.244 11.667 55.756 11.667 60 5 C 64.244 -1.667 65.756 -1.667 70 5 C 74.244 11.667 75.756 11.667 80 5 C 84.244 -1.667 85.756 -1.667 90 5 C 94.244 11.667 95.756 11.667 100 5 C 104.244 -1.667 105.756 -1.667 110 5 C 114.244 11.667 115.756 11.667 120 5 C 124.244 -1.667 125.756 -1.667 130 5 C 134.244 11.667 135.756 11.667 140 5 C 144.244 -1.667 145.756 -1.667 150 5 C 154.244 11.667 155.756 11.667 160 5 C 164.244 -1.667 165.756 -1.667 170 5 C 174.244 11.667 175.756 11.667 180 5 C 184.244 -1.667 185.756 -1.667 190 5 C 194.244 11.667 195.756 11.667 200 5' /%3E%3C/svg%3E");
|
|
59
|
+
background-repeat: no-repeat;
|
|
60
|
+
background-size: 200px 12px;
|
|
61
|
+
}
|
|
62
|
+
.sine-wave-bg2 {
|
|
63
|
+
position: relative;
|
|
64
|
+
width: 100%;
|
|
65
|
+
height: 12px;
|
|
66
|
+
background-color: var(--md-sys-color-primary);
|
|
67
|
+
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 12'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='M 0 6 C 4.244 -0.667 5.756 -0.667 10 6 C 14.244 12.667 15.756 12.667 20 6 C 24.244 -0.667 25.756 -0.667 30 6 C 34.244 12.667 35.756 12.667 40 6 C 44.244 -0.667 45.756 -0.667 50 6 C 54.244 12.667 55.756 12.667 60 6 C 64.244 -0.667 65.756 -0.667 70 6 C 74.244 12.667 75.756 12.667 80 6 C 84.244 -0.667 85.756 -0.667 90 6 C 94.244 12.667 95.756 12.667 100 6 C 104.244 -0.667 105.756 -0.667 110 6 C 114.244 12.667 115.756 12.667 120 6 C 124.244 -0.667 125.756 -0.667 130 6 C 134.244 12.667 135.756 12.667 140 6 C 144.244 -0.667 145.756 -0.667 150 6 C 154.244 12.667 155.756 12.667 160 6 C 164.244 -0.667 165.756 -0.667 170 6 C 174.244 12.667 175.756 12.667 180 6 C 184.244 -0.667 185.756 -0.667 190 6 C 194.244 12.667 195.756 12.667 200 6' /%3E%3C/svg%3E") no-repeat;
|
|
68
|
+
mask-size: 200px 12px;
|
|
69
|
+
clip-path: rect(0 100% 100% 0);
|
|
70
|
+
animation: clipping 10s ease-in-out infinite alternate;
|
|
71
|
+
}
|
|
72
|
+
.sine-wave-bg2::before {
|
|
73
|
+
content: "";
|
|
74
|
+
position: absolute;
|
|
75
|
+
inset: 0;
|
|
76
|
+
inset-block-start: 4px;
|
|
77
|
+
inset-inline-start: 0;
|
|
78
|
+
width: 100%;
|
|
79
|
+
height: 8px;
|
|
80
|
+
background-color: var(--md-sys-color-secondary-fixed-dim);
|
|
81
|
+
}
|
|
82
|
+
.sine-wave-bg3 {
|
|
83
|
+
position: relative;
|
|
84
|
+
block-size: 3px;
|
|
85
|
+
margin-block: 4.5px;
|
|
86
|
+
padding-inline-start: 0%;
|
|
87
|
+
background-color: var(--md-sys-color-secondary-fixed-dim);
|
|
88
|
+
background-clip: content-box;
|
|
89
|
+
animation: padding 2s cubic-bezier(0.65, 0, 0.35, 1) infinite alternate
|
|
90
|
+
}
|
|
91
|
+
.sine-wave-bg3::before {
|
|
92
|
+
content: "";
|
|
93
|
+
position: absolute;
|
|
94
|
+
inset: 0;
|
|
95
|
+
inset-block-start: -4px;
|
|
96
|
+
inset-inline-start: 0;
|
|
97
|
+
width: 100%;
|
|
98
|
+
height: 12px;
|
|
99
|
+
background-color: var(--md-sys-color-primary);
|
|
100
|
+
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 240 8'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='M 0 4 C 5.093 0 6.907 0 12 4 C 17.093 8 18.907 8 24 4 C 29.093 0 30.907 0 36 4 C 41.093 8 42.907 8 48 4 C 53.093 0 54.907 0 60 4 C 65.093 8 66.907 8 72 4 C 77.093 0 78.907 0 84 4 C 89.093 8 90.907 8 96 4 C 101.093 0 102.907 0 108 4 C 113.093 8 114.907 8 120 4 C 125.093 0 126.907 0 132 4 C 137.093 8 138.907 8 144 4 C 149.093 0 150.907 0 156 4 C 161.093 8 162.907 8 168 4 C 173.093 0 174.907 0 180 4 C 185.093 8 186.907 8 192 4 C 197.093 0 198.907 0 204 4 C 209.093 8 210.907 8 216 4 C 221.093 0 222.907 0 228 4 C 233.093 8 234.907 8 240 4' /%3E%3C/svg%3E") no-repeat;
|
|
101
|
+
mask-size: 240px 12px;
|
|
102
|
+
clip-path: rect(0 100% 100% 0);
|
|
103
|
+
animation: clipping 2s cubic-bezier(0.65, 0, 0.35, 1) infinite alternate;
|
|
104
|
+
}
|
|
105
|
+
.sine-wave-bg3::after {
|
|
106
|
+
content: "";
|
|
107
|
+
position: absolute;
|
|
108
|
+
inset: 0;
|
|
109
|
+
inset-block-start: -0.5px;
|
|
110
|
+
inset-inline-start: auto;
|
|
111
|
+
width: 4px;
|
|
112
|
+
height: 4px;
|
|
113
|
+
border-radius: 2px;
|
|
114
|
+
background-color: black;
|
|
115
|
+
}
|
|
116
|
+
@keyframes padding {
|
|
117
|
+
0% {
|
|
118
|
+
padding-inline-start: 4px;
|
|
119
|
+
}
|
|
120
|
+
100% {
|
|
121
|
+
padding-inline-start: calc(100% + 4px);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
@keyframes clipping {
|
|
125
|
+
0% {
|
|
126
|
+
clip-path: rect(0 0 100% 0);
|
|
127
|
+
inset-inline-start: 0;
|
|
128
|
+
}
|
|
129
|
+
100% {
|
|
130
|
+
clip-path: rect(0 100% 100% 0);
|
|
131
|
+
inset-inline-start: -20%;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
</style>
|
|
135
|
+
</head>
|
|
136
|
+
<body class="micl-window light">
|
|
137
|
+
<main class="micl-body micl-body--stacked-to-large">
|
|
138
|
+
<section class="micl-pane">
|
|
139
|
+
<header class="micl-appbar">
|
|
140
|
+
<a href="index.html" class="micl-appbar__leading-icon micl-link micl-iconbutton-standard-s" aria-label="Navigate to the main MICL Showcase page">
|
|
141
|
+
<span class="material-symbols-outlined" aria-hidden="true">home</span>
|
|
142
|
+
</a>
|
|
143
|
+
<div class="micl-appbar__headline micl-appbar__headline--center">
|
|
144
|
+
<h1>Progress Indicators</h1>
|
|
145
|
+
<p class="micl-appbar__subtitle">Showcasing MICL progress indicators</p>
|
|
146
|
+
</div>
|
|
147
|
+
<div id="settings-placeholder" class="micl-appbar__trailing"></div>
|
|
148
|
+
</header>
|
|
149
|
+
|
|
150
|
+
<div class="micl-pane__columns micl-pane__columns--stacked-to-expanded">
|
|
151
|
+
<div class="micl-pane__column">
|
|
152
|
+
<div class="micl-card-elevated">
|
|
153
|
+
<div class="micl-card__headline-s">
|
|
154
|
+
<h2>Linear — determinate</h2>
|
|
155
|
+
</div>
|
|
156
|
+
<div class="micl-card__content docs-row">
|
|
157
|
+
<div class="docs-field">
|
|
158
|
+
<label class="md-sys-typescale-body-medium">Downloading… <span id="pct">0%</span></label>
|
|
159
|
+
<progress class="micl-progress-linear" id="linear-demo" value="0" max="1"></progress>
|
|
160
|
+
</div>
|
|
161
|
+
<div class="docs-field">
|
|
162
|
+
<label class="md-sys-typescale-body-medium">Static value (40%)</label>
|
|
163
|
+
<progress class="micl-progress-linear" value="0.4" max="1"></progress>
|
|
164
|
+
</div>
|
|
165
|
+
<div class="docs-field">
|
|
166
|
+
<label class="md-sys-typescale-body-medium">Flat active indicator (wave disabled, 70%)</label>
|
|
167
|
+
<progress class="micl-progress-linear" value="0.7" max="1" style="--md-comp-progress-wave-amplitude:0"></progress>
|
|
168
|
+
</div>
|
|
169
|
+
</div>
|
|
170
|
+
</div>
|
|
171
|
+
|
|
172
|
+
<!-- <div class="micl-card-filled"> -->
|
|
173
|
+
<!-- <div class="micl-card__headline-s"> -->
|
|
174
|
+
<!-- <h2>Linear — indeterminate</h2> -->
|
|
175
|
+
<!-- </div> -->
|
|
176
|
+
<!-- <div class="micl-card__content docs-row"> -->
|
|
177
|
+
<!-- <div class="docs-field"> -->
|
|
178
|
+
<!-- <label class="md-sys-typescale-body-medium">Loading…</label> -->
|
|
179
|
+
<!-- <progress class="micl-progress-linear"></progress> -->
|
|
180
|
+
<!-- </div> -->
|
|
181
|
+
<!-- <div class="docs-field"> -->
|
|
182
|
+
<!-- <label class="md-sys-typescale-body-medium">Thicker track (8px)</label> -->
|
|
183
|
+
<!-- <progress class="micl-progress-linear" style="--md-comp-progress-thickness:8px"></progress> -->
|
|
184
|
+
<!-- </div> -->
|
|
185
|
+
<!-- </div> -->
|
|
186
|
+
<!-- </div> -->
|
|
187
|
+
|
|
188
|
+
<div class="micl-card-filled">
|
|
189
|
+
<div class="micl-card__headline-s">
|
|
190
|
+
<h2>Linear — Test</h2>
|
|
191
|
+
</div>
|
|
192
|
+
<div class="micl-card__content docs-row">
|
|
193
|
+
<div class="docs-field" style="overflow:hidden">
|
|
194
|
+
<label class="md-sys-typescale-body-medium">Loading…</label>
|
|
195
|
+
<div class="sine-wave-bg1"></div>
|
|
196
|
+
<div class="sine-wave-bg2"></div>
|
|
197
|
+
<div class="sine-wave-bg3"></div>
|
|
198
|
+
</div>
|
|
199
|
+
</div>
|
|
200
|
+
</div>
|
|
201
|
+
</div>
|
|
202
|
+
|
|
203
|
+
<!-- <div class="micl-pane__column"> -->
|
|
204
|
+
<!-- <div class="micl-card-outlined"> -->
|
|
205
|
+
<!-- <div class="micl-card__headline-s"> -->
|
|
206
|
+
<!-- <h2>Circular — determinate</h2> -->
|
|
207
|
+
<!-- </div> -->
|
|
208
|
+
<!-- <div class="micl-card__content docs-circular-row"> -->
|
|
209
|
+
<!-- <figure> -->
|
|
210
|
+
<!-- <progress class="micl-progress-circular micl-progress-circular--s" value="25" max="100"></progress> -->
|
|
211
|
+
<!-- <figcaption class="md-sys-typescale-body-small">Small · 25%</figcaption> -->
|
|
212
|
+
<!-- </figure> -->
|
|
213
|
+
<!-- <figure> -->
|
|
214
|
+
<!-- <progress class="micl-progress-circular micl-progress-circular--m" id="circular-demo" value="0" max="100"></progress> -->
|
|
215
|
+
<!-- <figcaption class="md-sys-typescale-body-small">Medium · animated</figcaption> -->
|
|
216
|
+
<!-- </figure> -->
|
|
217
|
+
<!-- <figure> -->
|
|
218
|
+
<!-- <progress class="micl-progress-circular micl-progress-circular--l" value="75" max="100"></progress> -->
|
|
219
|
+
<!-- <figcaption class="md-sys-typescale-body-small">Large · 75%</figcaption> -->
|
|
220
|
+
<!-- </figure> -->
|
|
221
|
+
<!-- </div> -->
|
|
222
|
+
<!-- </div> -->
|
|
223
|
+
|
|
224
|
+
<!-- <div class="micl-card-elevated"> -->
|
|
225
|
+
<!-- <div class="micl-card__headline-s"> -->
|
|
226
|
+
<!-- <h2>Circular — indeterminate</h2> -->
|
|
227
|
+
<!-- </div> -->
|
|
228
|
+
<!-- <div class="micl-card__content docs-circular-row"> -->
|
|
229
|
+
<!-- <figure> -->
|
|
230
|
+
<!-- <progress class="micl-progress-circular micl-progress-circular--s"></progress> -->
|
|
231
|
+
<!-- <figcaption class="md-sys-typescale-body-small">Small</figcaption> -->
|
|
232
|
+
<!-- </figure> -->
|
|
233
|
+
<!-- <figure> -->
|
|
234
|
+
<!-- <progress class="micl-progress-circular micl-progress-circular--m"></progress> -->
|
|
235
|
+
<!-- <figcaption class="md-sys-typescale-body-small">Medium</figcaption> -->
|
|
236
|
+
<!-- </figure> -->
|
|
237
|
+
<!-- <figure> -->
|
|
238
|
+
<!-- <progress class="micl-progress-circular micl-progress-circular--l"></progress> -->
|
|
239
|
+
<!-- <figcaption class="md-sys-typescale-body-small">Large</figcaption> -->
|
|
240
|
+
<!-- </figure> -->
|
|
241
|
+
<!-- </div> -->
|
|
242
|
+
<!-- </div> -->
|
|
243
|
+
<!-- </div> -->
|
|
244
|
+
</div>
|
|
245
|
+
</section>
|
|
246
|
+
<section class="micl-pane">
|
|
247
|
+
<div class="micl-card-filled" style="margin-top:8px">
|
|
248
|
+
<div class="micl-card__headline-s">
|
|
249
|
+
<h2>Code example</h2>
|
|
250
|
+
<button type="button" id="copycode" class="micl-iconbutton-standard-s material-symbols-outlined" aria-label="Copy code">content_copy</button>
|
|
251
|
+
</div>
|
|
252
|
+
<div class="micl-card__content docs-code">
|
|
253
|
+
<pre tabindex="-1"><code><!-- Determinate -->
|
|
254
|
+
<progress class="micl-progress-linear" value="0.6" max="1"></progress>
|
|
255
|
+
<progress class="micl-progress-circular" value="60" max="100"></progress>
|
|
256
|
+
|
|
257
|
+
<!-- Indeterminate (omit the value attribute) -->
|
|
258
|
+
<progress class="micl-progress-linear"></progress>
|
|
259
|
+
<progress class="micl-progress-circular"></progress></code></pre>
|
|
260
|
+
</div>
|
|
261
|
+
</div>
|
|
262
|
+
</section>
|
|
263
|
+
</main>
|
|
264
|
+
|
|
265
|
+
<script src="micl.js"></script>
|
|
266
|
+
<script src="docs.js"></script>
|
|
267
|
+
<script>
|
|
268
|
+
<!-- const animate = () => { -->
|
|
269
|
+
<!-- const linear = document.getElementById('linear-demo'); -->
|
|
270
|
+
<!-- const circular = document.getElementById('circular-demo'); -->
|
|
271
|
+
<!-- const pct = document.getElementById('pct'); -->
|
|
272
|
+
<!-- let v = 0; -->
|
|
273
|
+
<!-- setInterval(() => { -->
|
|
274
|
+
<!-- v = v >= 1 ? 0 : Math.min(1, v + 0.01); -->
|
|
275
|
+
<!-- linear.setAttribute('value', v.toFixed(2)); -->
|
|
276
|
+
<!-- circular.setAttribute('value', Math.round(v * 100)); -->
|
|
277
|
+
<!-- pct.textContent = Math.round(v * 100) + '%'; -->
|
|
278
|
+
<!-- }, 80); -->
|
|
279
|
+
<!-- }; -->
|
|
280
|
+
<!-- if (document.readyState !== 'loading') { -->
|
|
281
|
+
<!-- animate(); -->
|
|
282
|
+
<!-- } -->
|
|
283
|
+
<!-- else { -->
|
|
284
|
+
<!-- document.addEventListener('DOMContentLoaded', animate); -->
|
|
285
|
+
<!-- } -->
|
|
286
|
+
</script>
|
|
287
|
+
</body>
|
|
288
|
+
</html>
|