@blukavantui/community 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -5
- package/dist/build-audit.json +181 -53
- package/dist/checkbox.css +1 -0
- package/dist/checkbox.d.ts +2 -0
- package/dist/checkbox.js +1 -0
- package/dist/chunk-3PNBQVYS.js +1 -0
- package/dist/chunk-5ENZVZGF.js +0 -0
- package/dist/chunk-AL2ETLJV.js +1 -0
- package/dist/chunk-BN3PDE5G.js +0 -0
- package/dist/chunk-EOKNLCNS.js +1 -0
- package/dist/chunk-EPZGLHPD.js +0 -0
- package/dist/chunk-FNX33PDD.js +0 -0
- package/dist/chunk-GXHANADL.js +1 -0
- package/dist/chunk-HO6CYWED.js +0 -0
- package/dist/chunk-IJ62ILKE.js +0 -0
- package/dist/chunk-IO22GWON.js +0 -0
- package/dist/chunk-IZJN3EF7.js +1 -0
- package/dist/chunk-JVE6CXCJ.js +1 -0
- package/dist/chunk-MYVLBALF.js +1 -0
- package/dist/chunk-OPMD7QNV.js +1 -0
- package/dist/chunk-RWBLICYX.js +0 -0
- package/dist/chunk-RYD6RHRX.js +0 -0
- package/dist/chunk-UN2SLVFG.js +1 -0
- package/dist/chunk-VJVFHL6P.js +0 -0
- package/dist/chunk-XWXEH3SW.js +1 -0
- package/dist/chunk-YCLR3IE3.js +0 -0
- package/dist/columns2.css +1 -0
- package/dist/columns2.d.ts +2 -0
- package/dist/columns2.js +1 -0
- package/dist/columns3.css +1 -0
- package/dist/columns3.d.ts +2 -0
- package/dist/columns3.js +1 -0
- package/dist/columns4.css +1 -0
- package/dist/columns4.d.ts +2 -0
- package/dist/columns4.js +1 -0
- package/dist/content.js +1 -1
- package/dist/core.js +1 -1
- package/dist/data.css +63 -0
- package/dist/data.d.ts +1 -0
- package/dist/data.js +1 -1
- package/dist/date-picker.css +5 -5
- package/dist/date-picker.js +1 -1
- package/dist/date-range-picker.css +5 -5
- package/dist/date-range-picker.js +1 -1
- package/dist/date-time-picker.css +5 -5
- package/dist/date-time-picker.js +1 -1
- package/dist/draft-components.json +77 -0
- package/dist/feedback.js +1 -1
- package/dist/form-field.css +1 -0
- package/dist/form-field.d.ts +2 -0
- package/dist/form-field.js +1 -0
- package/dist/form-layout/choice.d.ts +15 -0
- package/dist/form-layout/layout.d.ts +12 -0
- package/dist/form-layout/select.d.ts +3 -0
- package/dist/form-layout/shared.d.ts +21 -0
- package/dist/form-layout/table.d.ts +20 -0
- package/dist/form-layout/text.d.ts +3 -0
- package/dist/form-layout/types.d.ts +151 -0
- package/dist/form-layout.css +62 -0
- package/dist/form-layout.d.ts +12 -0
- package/dist/form-layout.js +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -1
- package/dist/inputs.css +83 -20
- package/dist/inputs.d.ts +8 -0
- package/dist/inputs.js +1 -1
- package/dist/layout.css +63 -0
- package/dist/layout.d.ts +3 -0
- package/dist/layout.js +1 -1
- package/dist/native/date-picker.js +1 -1
- package/dist/native/date-range-picker.js +1 -1
- package/dist/native/date-time-picker.js +1 -1
- package/dist/native/form-layout.js +1 -0
- package/dist/native/time-picker.js +1 -1
- package/dist/native-components/form-layout.d.ts +1 -0
- package/dist/radio-button.css +1 -0
- package/dist/radio-button.d.ts +2 -0
- package/dist/radio-button.js +1 -0
- package/dist/radio-group.css +1 -0
- package/dist/radio-group.d.ts +2 -0
- package/dist/radio-group.js +1 -0
- package/dist/select.css +1 -0
- package/dist/select.d.ts +2 -0
- package/dist/select.js +1 -0
- package/dist/sizes.json +272 -90
- package/dist/styles.css +83 -20
- package/dist/switch.css +1 -0
- package/dist/switch.d.ts +2 -0
- package/dist/switch.js +1 -0
- package/dist/table.css +1 -0
- package/dist/table.d.ts +2 -0
- package/dist/table.js +1 -0
- package/dist/text-area.css +1 -0
- package/dist/text-area.d.ts +2 -0
- package/dist/text-area.js +1 -0
- package/dist/text-input.css +1 -0
- package/dist/text-input.d.ts +2 -0
- package/dist/text-input.js +1 -0
- package/dist/time-picker.css +5 -5
- package/dist/time-picker.js +1 -1
- package/docs/FORM-LAYOUT-ESSENTIALS.md +122 -0
- package/docs/PUBLISHING.md +129 -25
- package/draft-components.json +77 -0
- package/edition.json +44 -7
- package/npm-shrinkwrap.json +2 -2
- package/package.json +76 -10
- package/scripts/build.mjs +16 -8
- package/src/checkbox.ts +2 -0
- package/src/columns2.ts +2 -0
- package/src/columns3.ts +2 -0
- package/src/columns4.ts +2 -0
- package/src/data.ts +1 -0
- package/src/form-field.ts +2 -0
- package/src/form-layout/choice.ts +66 -0
- package/src/form-layout/layout.ts +40 -0
- package/src/form-layout/select.ts +97 -0
- package/src/form-layout/shared.ts +57 -0
- package/src/form-layout/table.ts +86 -0
- package/src/form-layout/text.ts +73 -0
- package/src/form-layout/types.ts +59 -0
- package/src/form-layout.ts +12 -0
- package/src/index.ts +2 -0
- package/src/inputs.ts +8 -0
- package/src/layout.ts +3 -0
- package/src/native-components/form-layout.ts +21 -0
- package/src/radio-button.ts +2 -0
- package/src/radio-group.ts +2 -0
- package/src/runtime/date-picker.js +21 -12
- package/src/runtime/date-range-picker.js +21 -12
- package/src/runtime/date-time-picker.js +21 -12
- package/src/runtime/time-picker.js +21 -12
- package/src/select.ts +2 -0
- package/src/switch.ts +2 -0
- package/src/table.ts +2 -0
- package/src/text-area.ts +2 -0
- package/src/text-input.ts +2 -0
- package/src/types.ts +0 -12
- package/styles/checkbox.css +1 -0
- package/styles/columns2.css +1 -0
- package/styles/columns3.css +1 -0
- package/styles/columns4.css +1 -0
- package/styles/date-picker.css +5 -5
- package/styles/date-range-picker.css +5 -5
- package/styles/date-time-picker.css +5 -5
- package/styles/form-field.css +1 -0
- package/styles/form-layout.css +62 -0
- package/styles/radio-button.css +1 -0
- package/styles/radio-group.css +1 -0
- package/styles/select.css +1 -0
- package/styles/switch.css +1 -0
- package/styles/table.css +1 -0
- package/styles/text-area.css +1 -0
- package/styles/text-input.css +1 -0
- package/styles/time-picker.css +5 -5
- package/test/form-layout.test.mjs +28 -0
- package/test/isolation.test.mjs +2 -2
- package/dist/chunk-2TCNAQC6.js +0 -1
- package/dist/chunk-CTLZIWMX.js +0 -1
- package/dist/chunk-MHHJZYXW.js +0 -1
- package/dist/chunk-XDYBNO4P.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(()=>{var ie=Object.defineProperty;var re=(u,l)=>{for(var t in l)ie(u,t,{get:l[t],enumerable:!0})};function f(u,l="",t){let e=document.createElement(u);return e.className=l,t!==void 0&&(e.textContent=t),e}var ae=0;function F(){return"blu-field-"+ ++ae+"-"+Math.random().toString(36).slice(2,8)}function R(u,l,t){t===void 0||t===!1||t===""?u.removeAttribute(l):u.setAttribute(l,String(t))}function v(u,l,t=!1){let e=f(t?"fieldset":"div","blu-field"),i=f(t?"legend":"label","blu-field__label"),a=f("div","blu-field__body"),y=f("div","blu-field__help"),p=f("div","blu-field__error"),o=l.Id||F();y.id=o+"-help",p.id=o+"-error",p.setAttribute("aria-live","polite"),e.append(i,a,y,p),u.append(e);function h(n,r){var c;e.className="blu-field blu-field--"+(n.Size||"Medium").toLowerCase()+(n.ExtendedClass?" "+n.ExtendedClass:""),e.dataset.invalid=String(!!n.Error),e.dataset.disabled=String(!!n.Disabled),i.textContent=(n.Label||"")+(n.Required?" *":""),i.hidden=!n.Label,!t&&r[0]&&((c=r[0]).id||(c.id=o),i.setAttribute("for",r[0].id)),y.textContent=n.Description||"",y.hidden=!n.Description,p.textContent=n.Error||"",p.hidden=!n.Error;let d=[n.Description?y.id:"",n.Error?p.id:""].filter(Boolean).join(" ");for(let b of r)R(b,"aria-describedby",d),R(b,"aria-invalid",n.Error?"true":void 0),R(b,"aria-required",n.Required?"true":void 0)}return{root:e,label:i,body:a,description:y,error:p,id:o,paint:h}}function V(u,l){let t=new AbortController,e=!1,i=u.closest("form");return i==null||i.addEventListener("reset",a=>queueMicrotask(()=>{!e&&!a.defaultPrevented&&l()}),{signal:t.signal}),{signal:t.signal,check(){if(e)throw Error("Component is destroyed.")},destroy(){e||(e=!0,t.abort(),u.remove())}}}function H(u,l){u.name=l.Name||"",u.disabled=!!l.Disabled,u.required=!!l.Required,"readOnly"in u&&(u.readOnly=!!l.ReadOnly),u.setCustomValidity(l.Error||"")}function I(u,l,t,e){return Number.isFinite(u)?Math.max(t,Math.min(e,u)):l}function te(u){let l=new URL(u,document.baseURI);if(!["http:","https:"].includes(l.protocol))throw Error("Adornment images must use an HTTP(S) or relative URL.");return l.href}function U(u,l,t,e){let i={...l},a=!1,y=v(u,i),p=f("label","blu-choice"),o=f("input","blu-choice__input"),h=f("span","blu-choice__mark"),n=f("span"),r=f("span","blu-choice__state");o.type=e==="radio"?"radio":"checkbox",e==="switch"&&o.setAttribute("role","switch"),p.classList.add("blu-choice--"+e),h.setAttribute("aria-hidden","true"),r.setAttribute("aria-hidden","true"),p.append(o,h,n,r),y.body.append(p);let d=V(y.root,b);function c(m){d.check(),a&&e==="radio"&&!("Checked"in m)&&(i.Checked=o.checked),i={...i,...m},y.paint(i,[o]),y.label.hidden=!0,y.label.removeAttribute("for"),H(o,i),o.checked=!!i.Checked,o.indeterminate=e==="checkbox"&&!!i.Indeterminate,o.value=i.Value||"on",R(o,"aria-readonly",i.ReadOnly?"true":void 0),n.textContent=(i.Label||"")+(i.Required?" *":""),r.textContent=o.checked?i.OnText||"":i.OffText||"",a=!0}function b(){c({Checked:!!l.Checked,Indeterminate:!!l.Indeterminate})}return o.addEventListener("click",m=>{i.ReadOnly&&m.preventDefault()},{signal:d.signal}),o.addEventListener("keydown",m=>{i.ReadOnly&&["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"," "].includes(m.key)&&m.preventDefault()},{signal:d.signal}),o.addEventListener("change",()=>{var m;i.Checked=o.checked,i.Indeterminate=!1,r.textContent=o.checked?i.OnText||"":i.OffText||"",(m=t.Change)==null||m.call(t,o.checked)},{signal:d.signal}),o.addEventListener("blur",()=>{var m;return(m=t.Blur)==null?void 0:m.call(t)},{signal:d.signal}),c({}),{element:y.root,control:o,update:c,reset:b,getValue:()=>o.checked,focus:()=>o.focus(),validate:()=>o.reportValidity(),destroy:d.destroy}}function J(u,l={},t={}){return U(u,l,t,"checkbox")}function z(u,l={},t={}){return U(u,l,t,"switch")}function G(u,l,t={}){return U(u,l,t,"radio")}function W(u,l,t={}){let e={...l},i=[],a=v(u,e,!0),y=e.Name||F(),p=V(a.root,h);function o(n){p.check();let r=!i.length||"Options"in n;if(e={...e,...n},new Set(e.Options.map(d=>d.Value)).size!==e.Options.length)throw Error("Radio option values must be unique.");a.body.className="blu-radio-group blu-radio-group--"+(e.Direction||"Vertical").toLowerCase(),r&&(a.body.replaceChildren(),i=e.Options.map((d,c)=>{let b=f("label","blu-choice blu-choice--radio"),m=f("input","blu-choice__input"),T=f("span","blu-choice__mark"),k=f("span");m.type="radio",m.id=a.id+"-"+c,m.value=d.Value,T.setAttribute("aria-hidden","true");let O=f("span","",d.Label);if(O.id=m.id+"-label",k.append(O),m.setAttribute("aria-labelledby",O.id),d.Description){let g=f("small","blu-choice__description",d.Description);g.id=m.id+"-description",k.append(g)}return b.append(m,T,k),a.body.append(b),m.onchange=()=>{var g;m.checked&&(e.Value=m.value,(g=t.Change)==null||g.call(t,m.value))},m.onclick=g=>{e.ReadOnly&&g.preventDefault()},m.onkeydown=g=>{e.ReadOnly&&["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"," "].includes(g.key)&&g.preventDefault()},m.onblur=()=>{var g;return(g=t.Blur)==null?void 0:g.call(t)},m})),a.paint(e,i),i.forEach((d,c)=>{H(d,e),d.name=e.Name||y,d.disabled=!!e.Disabled||!!e.Options[c].Disabled,d.checked=d.value===e.Value,R(d,"aria-readonly",e.ReadOnly?"true":void 0),e.Options[c].Description&&R(d,"aria-describedby",[d.getAttribute("aria-describedby"),d.id+"-description"].filter(Boolean).join(" "))})}function h(){o({Value:l.Value||""})}return o({}),{element:a.root,update:o,reset:h,getValue:()=>{var n;return((n=i.find(r=>r.checked))==null?void 0:n.value)||""},focus:()=>{var n;return(n=i.find(r=>r.checked&&!r.disabled)||i.find(r=>!r.disabled))==null?void 0:n.focus()},validate:()=>i.filter(n=>!n.disabled).every(n=>n.reportValidity()),destroy:p.destroy}}function $(u,l={},t={}){let e={...l},i=!1,a=v(u,e),y=f("div","blu-text"),p=f("input","blu-text__input"),o=f("span","blu-text__adornment"),h=f("span","blu-text__adornment"),n=f("button","blu-text__action","\xD7"),r=f("button","blu-text__action","Show");n.type=r.type="button",n.setAttribute("aria-label","Clear "+(e.Label||"text")),y.append(o,p,h,n,r),a.body.append(y);let d=V(a.root,O),c=new WeakMap;function b(g,L){if(c.get(g)!==(L==null?void 0:L.Kind)&&g.replaceChildren(),g.removeAttribute("role"),g.removeAttribute("aria-label"),g.removeAttribute("aria-hidden"),g.hidden=!L,!L){c.delete(g);return}if(c.set(g,L.Kind),L.Kind==="Image"){let S=g.querySelector("img")||f("img"),D=te(L.Src);S.src!==D&&(S.src=D),S.alt=L.Alt,S.parentNode||g.append(S)}else if(L.Kind==="Action"){let S=g.querySelector("button")||f("button","blu-text__action");S.type="button",S.textContent=L.Text,S.setAttribute("aria-label",L.Label),S.disabled=!!e.Disabled||!!e.ReadOnly,S.onclick=()=>{var D;return(D=t.Action)==null?void 0:D.call(t,L.Key,p.value)},S.parentNode||g.append(S)}else g.textContent=L.Text,L.Kind==="Icon"&&(R(g,"role",L.Label?"img":void 0),R(g,"aria-label",L.Label),R(g,"aria-hidden",L.Label?void 0:"true"))}function m(){n.hidden=!e.Clearable||!p.value||!!e.ReadOnly,r.hidden=!e.RevealPassword||e.Type!=="password"}function T(g){d.check(),e={...e,...g},a.paint(e,[p]),H(p,e),p.type=e.Type==="password"&&i?"text":e.Type||"text",p.value!==(e.Value||"")&&(p.value=e.Value||""),p.placeholder=e.Placeholder||"",R(p,"maxlength",e.MaxLength===void 0?void 0:Math.max(0,Math.floor(e.MaxLength))),R(p,"autocomplete",e.Autocomplete),b(o,e.Leading),b(h,e.Trailing),n.disabled=r.disabled=!!e.Disabled,n.setAttribute("aria-label","Clear "+(e.Label||"text")),r.textContent=i?"Hide":"Show",r.setAttribute("aria-label",i?"Hide password":"Show password"),r.setAttribute("aria-pressed",String(i)),m()}function k(){var g;e.Value=p.value,m(),(g=t.Change)==null||g.call(t,p.value)}function O(){i=!1,T({Value:l.Value||""})}return p.addEventListener("input",k,{signal:d.signal}),p.addEventListener("blur",()=>{var g;return(g=t.Blur)==null?void 0:g.call(t)},{signal:d.signal}),n.addEventListener("click",()=>{p.value="",k(),p.focus()},{signal:d.signal}),r.addEventListener("click",()=>{i=!i,T({}),p.focus()},{signal:d.signal}),T({}),{element:a.root,control:p,update:T,reset:O,getValue:()=>p.value,focus:()=>p.focus(),validate:()=>p.reportValidity(),destroy:d.destroy}}function Z(u,l={},t={}){let e={...l},i=v(u,e),a=f("textarea","blu-textarea"),y=f("div","blu-field__count");y.id=i.id+"-count",i.body.append(a,y);let p=V(i.root,n);function o(){y.hidden=!e.ShowCount,y.textContent=a.value.length+(e.MaxLength===void 0?" characters":" / "+e.MaxLength),a.style.maxHeight=e.AutoGrow?I(e.MaxHeight,320,80,2e3)+"px":"",a.style.resize=e.AutoGrow?"none":"vertical",a.style.height="",e.AutoGrow&&(a.style.height=Math.min(a.scrollHeight+2,I(e.MaxHeight,320,80,2e3))+"px")}function h(c){p.check(),e={...e,...c},i.paint(e,[a]),H(a,e),a.rows=Math.floor(I(e.Rows,4,1,30)),a.placeholder=e.Placeholder||"",R(a,"maxlength",e.MaxLength===void 0?void 0:Math.max(0,Math.floor(e.MaxLength))),a.value!==(e.Value||"")&&(a.value=e.Value||""),e.ShowCount&&R(a,"aria-describedby",[a.getAttribute("aria-describedby"),y.id].filter(Boolean).join(" ")),o()}function n(){h({Value:l.Value||""})}a.addEventListener("input",()=>{var c;e.Value=a.value,o(),(c=t.Change)==null||c.call(t,a.value)},{signal:p.signal}),a.addEventListener("blur",()=>{var c;return(c=t.Blur)==null?void 0:c.call(t)},{signal:p.signal});let r=0,d=typeof ResizeObserver!="undefined"?new ResizeObserver(c=>{let b=c[0].contentRect.width;b!==r&&(r=b,o())}):void 0;return d==null||d.observe(i.root),h({}),{element:i.root,control:a,update:h,reset:n,getValue:()=>a.value,focus:()=>a.focus(),validate:()=>a.reportValidity(),destroy(){d==null||d.disconnect(),p.destroy()}}}function Q(u,l,t={}){let e={...l},i=!1,a=-1,y="",p=0,o=v(u,e),h=f("div","blu-select"),n=f("select","blu-select__native"),r=f("button","blu-select__trigger"),d=f("button","blu-text__action","\xD7"),c=f("div","blu-select__popup"),b=f("input","blu-select__search"),m=f("div","blu-select__list"),T=f("p","blu-field__help","No matching options");n.tabIndex=-1,n.setAttribute("aria-hidden","true"),n.dataset.enhanced="true",r.type=d.type="button",r.id=o.id,r.setAttribute("role","combobox"),r.setAttribute("aria-haspopup","listbox"),m.id=o.id+"-list",m.setAttribute("role","listbox"),r.setAttribute("aria-controls",m.id),b.type="search",b.placeholder="Search options",b.setAttribute("role","combobox"),b.setAttribute("aria-autocomplete","list"),b.setAttribute("aria-controls",m.id),c.hidden=!0,c.append(b,m,T),h.append(n,r,d,c),o.body.append(h);let k=typeof c.showPopover=="function";k&&c.setAttribute("popover","manual");let O=V(o.root,A),g=[];function L(){if(!i||!k)return;let s=r.getBoundingClientRect(),x=window.innerHeight-s.bottom-12,w=s.top-12,E=x<220&&w>x,C=Math.min(320,Math.max(100,E?w:x));c.style.cssText=`position:fixed;inset:auto;margin:0;left:${Math.max(8,Math.min(s.left,window.innerWidth-s.width-8))}px;width:${Math.min(s.width,window.innerWidth-16)}px;max-height:${C}px;${E?"bottom:"+(window.innerHeight-s.top+6):"top:"+(s.bottom+6)}px;`}function S(s){a=s,m.querySelectorAll("[role=option]").forEach(w=>{let E=Number(w.dataset.index)===a;w.dataset.active=String(E),E&&w.scrollIntoView({block:"nearest"})});let x=a<0?void 0:o.id+"-option-"+a;R(r,"aria-activedescendant",i?x:void 0),R(b,"aria-activedescendant",i?x:void 0)}function D(){var x,w;g=e.Options.map((E,C)=>C).filter(E=>e.Options[E].Label.toLocaleLowerCase().includes(b.value.toLocaleLowerCase())),m.replaceChildren();for(let E of g){let C=e.Options[E],M=f("div","blu-select__option",C.Label);M.id=o.id+"-option-"+E,M.setAttribute("role","option"),M.dataset.index=String(E),M.setAttribute("aria-selected",String(C.Value===n.value)),M.setAttribute("aria-disabled",String(!!C.Disabled)),C.Description&&M.append(f("small","blu-choice__description",C.Description)),M.onpointerdown=q=>q.preventDefault(),M.onclick=()=>{C.Disabled||P(E)},m.append(M)}T.hidden=!!g.length;let s=g.filter(E=>!e.Options[E].Disabled);S(s.includes(a)?a:(w=(x=s.find(E=>e.Options[E].Value===n.value))!=null?x:s[0])!=null?w:-1)}function _(s,x=!0){s&&(e.Disabled||e.ReadOnly)||(i=s,r.setAttribute("aria-expanded",String(i)),b.setAttribute("aria-expanded",String(i)),i?(c.hidden=!1,k&&!c.matches(":popover-open")&&c.showPopover(),b.value="",a=-1,D(),L(),e.Searchable&&b.focus()):(k&&c.matches(":popover-open")&&c.hidePopover(),c.hidden=!0,S(-1),x&&r.focus()))}function P(s){var x;e.Value=s<0?"":e.Options[s].Value,n.value=e.Value,B(),_(!1),(x=t.Change)==null||x.call(t,e.Value)}function B(){var s;r.textContent=((s=e.Options.find(x=>x.Value===n.value))==null?void 0:s.Label)||e.Placeholder||"Choose an option",r.dataset.placeholder=String(!n.value),d.hidden=!e.Clearable||!n.value||!!e.ReadOnly,n.validity.valid&&!e.Error&&(o.error.hidden=!0,o.error.textContent="",o.paint(e,[r]))}function N(s){if(O.check(),e={...e,...s},e.Options.some(w=>!w.Value)||new Set(e.Options.map(w=>w.Value)).size!==e.Options.length)throw Error("Select option values must be non-empty and unique.");H(n,e),o.paint(e,[r]),n.id=o.id+"-native";let x=f("option","",e.Placeholder||"Choose an option");x.value="",n.replaceChildren(x,...e.Options.map(w=>{let E=f("option","",w.Label);return E.value=w.Value,E.disabled=!!w.Disabled,E})),n.value=e.Options.some(w=>w.Value===e.Value)?e.Value:"",e.Value=n.value,r.disabled=d.disabled=!!e.Disabled,R(r,"aria-readonly",e.ReadOnly?"true":void 0),d.setAttribute("aria-label","Clear "+(e.Label||"selection")),b.setAttribute("aria-label","Search "+(e.Label||"options")),m.setAttribute("aria-label",e.Label||"Options"),b.hidden=!e.Searchable,e.Disabled||e.ReadOnly?_(!1,!1):i&&(D(),L()),r.setAttribute("aria-expanded",String(i)),B()}function j(s){var E;if(e.Disabled||e.ReadOnly)return;let x=g.filter(C=>!e.Options[C].Disabled),w=x.indexOf(a);if(s.key==="Escape"&&i)s.preventDefault(),_(!1);else if(s.key==="Tab")_(!1,!1);else if(["ArrowDown","ArrowUp","Home","End"].includes(s.key)){if(!i){s.preventDefault(),_(!0);return}s.preventDefault();let C=s.key==="Home"?0:s.key==="End"?x.length-1:Math.max(0,Math.min(x.length-1,w+(s.key==="ArrowDown"?1:-1)));S((E=x[C])!=null?E:-1)}else if(s.key==="Enter"||s.key===" "&&s.target!==b)s.preventDefault(),i?a>=0&&P(a):_(!0);else if(s.key.length===1&&!s.ctrlKey&&!s.metaKey&&s.target!==b){s.preventDefault(),i||_(!0),y=Date.now()-p>650?s.key:y+s.key,p=Date.now();let C=g.find(M=>!e.Options[M].Disabled&&e.Options[M].Label.toLocaleLowerCase().startsWith(y.toLocaleLowerCase()));C!==void 0&&S(C)}}function A(){N({Value:l.Value||""}),_(!1,!1)}return r.addEventListener("click",()=>_(!i),{signal:O.signal}),d.addEventListener("click",()=>P(-1),{signal:O.signal}),h.addEventListener("keydown",j,{signal:O.signal}),b.addEventListener("input",D,{signal:O.signal}),document.addEventListener("pointerdown",s=>{i&&!o.root.contains(s.target)&&_(!1,!1)},{signal:O.signal}),h.addEventListener("focusout",s=>{var x;h.contains(s.relatedTarget)||(_(!1,!1),(x=t.Blur)==null||x.call(t))},{signal:O.signal}),window.addEventListener("resize",L,{signal:O.signal}),window.addEventListener("scroll",L,{signal:O.signal,capture:!0}),n.addEventListener("invalid",s=>{s.preventDefault(),R(r,"aria-invalid","true"),o.error.textContent=n.validationMessage,o.error.hidden=!1,R(r,"aria-describedby",o.error.id),r.focus()},{signal:O.signal}),n.addEventListener("change",()=>{var s;e.Value=n.value,B(),(s=t.Change)==null||s.call(t,n.value)},{signal:O.signal}),N({}),{element:o.root,control:n,update:N,reset:A,getValue:()=>n.value,focus:()=>r.focus(),validate:()=>n.reportValidity(),destroy(){_(!1,!1),O.destroy()}}}function le(u){let l=[...u.Rows],t=u.SortKey;t&&u.Columns.some(y=>y.Key===t&&y.Sortable)&&l.sort((y,p)=>{let o=y[t],h=p[t];if(o==null||h==null)return o==null?h==null?0:1:-1;let n=typeof o=="number"&&typeof h=="number"?o-h:String(o).localeCompare(String(h),void 0,{numeric:!0,sensitivity:"base"});return u.SortDirection==="Descending"?-n:n});let e=u.PageSize?Math.floor(I(u.PageSize,10,1,1e4)):Math.max(1,l.length),i=Math.max(1,Math.ceil(l.length/e)),a=Math.floor(I(u.Page,1,1,i));return{rows:l.slice((a-1)*e,a*e),page:a,pages:i,total:l.length,start:l.length?(a-1)*e+1:0,end:Math.min(a*e,l.length)}}function X(u,l,t={}){let e={...l},i=!1,a=f("div","blu-table"),y=f("div","blu-table__scroll"),p=f("table"),o=f("caption"),h=f("thead"),n=f("tbody"),r=f("div","blu-table__footer"),d=f("span"),c=f("button","blu-table-button","Previous"),b=f("button","blu-table-button","Next"),m="";o.id=F(),y.tabIndex=0,y.setAttribute("role","region"),y.setAttribute("aria-labelledby",o.id),c.type=b.type="button",d.setAttribute("role","status"),r.append(d,c,b),p.append(o,h,n),y.append(p),a.append(y,r),u.append(a);function T(k){var D,_,P,B,N,j;if(i)throw Error("Component is destroyed.");if(e={...e,...k},!e.Columns.length)throw Error("Table needs at least one column.");if(new Set(e.Columns.map(A=>A.Key)).size!==e.Columns.length)throw Error("Table column keys must be unique.");a.className="blu-table"+(e.ExtendedClass?" "+e.ExtendedClass:""),a.dataset.density=e.Density||"Comfortable",a.dataset.striped=String(!!e.Striped),p.setAttribute("aria-busy",String(!!e.Loading)),o.textContent=e.Caption;let O=document.activeElement instanceof HTMLElement&&a.contains(document.activeElement)?document.activeElement.dataset.focusKey:void 0,g=document.activeElement===b?b:document.activeElement===c?c:void 0,L=JSON.stringify([e.Columns.map(A=>[A.Key,A.Header,!!A.Sortable,A.Align||"Left"]),!!((D=e.Actions)!=null&&D.length)]);if(L!==m){m=L,h.replaceChildren();let A=f("tr");h.append(A);for(let s of e.Columns){let x=f("th");if(x.scope="col",x.style.textAlign=(s.Align||"Left").toLowerCase(),s.Sortable){let w=f("button","blu-table__sort",s.Header);w.type="button",w.dataset.focusKey="sort-"+s.Key;let E=f("span");E.setAttribute("aria-hidden","true"),w.append(E),w.onclick=()=>{var M;let C=e.SortKey===s.Key&&e.SortDirection!=="Descending"?"Descending":"Ascending";T({SortKey:s.Key,SortDirection:C,Page:1}),(M=t.SortChanged)==null||M.call(t,s.Key,C)},x.append(w)}else x.textContent=s.Header;A.append(x)}if((_=e.Actions)!=null&&_.length){let s=f("th","","Actions");s.scope="col",A.append(s)}}e.Columns.forEach((A,s)=>{if(!A.Sortable)return;let x=h.rows[0].cells[s];x.setAttribute("aria-sort",e.SortKey===A.Key?(e.SortDirection||"Ascending").toLowerCase():"none"),x.querySelector("span").textContent=e.SortKey===A.Key?e.SortDirection==="Descending"?"\u2193":"\u2191":"\u2195"});let S=le(e);if(e.Page=S.page,n.replaceChildren(),e.Loading||!S.rows.length){let A=f("tr"),s=f("td","blu-table__empty",e.Loading?"Loading records\u2026":e.EmptyMessage||"No records yet.");s.colSpan=e.Columns.length+((P=e.Actions)!=null&&P.length?1:0),A.append(s),n.append(A)}else for(let[A,s]of S.rows.entries()){let x=f("tr");for(let w of e.Columns){let E=f("td");E.style.textAlign=(w.Align||"Left").toLowerCase(),E.textContent=w.Format?w.Format(s[w.Key],s):String((B=s[w.Key])!=null?B:"\u2014"),x.append(E)}if((N=e.Actions)!=null&&N.length){let w=f("td"),E=f("div","blu-table__actions");for(let C of e.Actions){let M=f("button","blu-table-button",C.Label);M.type="button",M.disabled=typeof C.Disabled=="function"?C.Disabled(s):!!C.Disabled,M.dataset.focusKey="row-"+String(e.RowKey?s[e.RowKey]:A)+"-"+C.Key,e.RowKey&&M.setAttribute("aria-label",C.Label+" "+String(s[e.RowKey])),M.onclick=()=>{var q;return(q=t.RowAction)==null?void 0:q.call(t,C.Key,s)},E.append(M)}w.append(E),x.append(w)}n.append(x)}d.textContent=e.Loading?"Loading records\u2026":`${S.start}\u2013${S.end} of ${S.total} records`,c.hidden=b.hidden=!e.PageSize,c.disabled=!!e.Loading||S.page<=1,b.disabled=!!e.Loading||S.page>=S.pages,c.onclick=()=>{var A;T({Page:S.page-1}),(A=t.PageChanged)==null||A.call(t,e.Page)},b.onclick=()=>{var A;T({Page:S.page+1}),(A=t.PageChanged)==null||A.call(t,e.Page)},O&&((j=Array.from(a.querySelectorAll("[data-focus-key]")).find(A=>A.dataset.focusKey===O))==null||j.focus()),!e.Loading&&e.PageSize&&(g===b&&b.disabled?(c.disabled?y:c).focus():g===c&&c.disabled&&(b.disabled?y:b).focus())}try{T({})}catch(k){throw a.remove(),k}return{element:a,update:T,getState:()=>({Page:e.Page||1,SortKey:e.SortKey,SortDirection:e.SortDirection||"Ascending"}),destroy(){i||(i=!0,a.remove())}}}var ee={};re(ee,{getAppearance:()=>de,mountAppearanceSelector:()=>ce,setAppearance:()=>se});(function(u){"use strict";if(u.BluUITheme&&u.BluUITheme.version==="1.0.0")return;var l="bluui:appearance:v1",t=u.matchMedia("(prefers-color-scheme: dark)"),e="System";function i(n){var r=String(n||"System").toLowerCase();if(r!=="system"&&r!=="light"&&r!=="dark")throw new Error("Mode must be Light, Dark or System.");return r.charAt(0).toUpperCase()+r.slice(1)}function a(){try{return i(u.localStorage.getItem(l))}catch(n){return"System"}}function y(){return{Mode:e,EffectiveMode:e==="System"?t.matches?"Dark":"Light":e}}function p(){var n=y(),r=document.documentElement;return r.setAttribute("data-bluui-mode",n.Mode.toLowerCase()),r.setAttribute("data-bluui-theme",n.EffectiveMode.toLowerCase()),document.querySelectorAll("[data-bluui-theme-select]").forEach(function(d){d.value=e}),u.dispatchEvent(new CustomEvent("bluui:themechange",{detail:n})),n}function o(n,r){if(e=i(n),r!==!1)try{u.localStorage.setItem(l,e)}catch(d){}return p()}function h(n){if(!n)return null;var r=n.querySelector("[data-bluui-theme-select]");if(r)return r.value=e,r;var d=document.createElement("label");d.className="blu-theme-control";var c=document.createElementNS("http://www.w3.org/2000/svg","svg");c.setAttribute("viewBox","0 0 24 24"),c.setAttribute("width","17"),c.setAttribute("height","17"),c.setAttribute("aria-hidden","true"),c.setAttribute("focusable","false");var b=document.createElementNS("http://www.w3.org/2000/svg","path");b.setAttribute("d","M12 3a9 9 0 1 0 0 18V3Z M12 3a9 9 0 0 1 0 18"),b.setAttribute("fill","none"),b.setAttribute("stroke","currentColor"),b.setAttribute("stroke-width","1.7"),c.appendChild(b);var m=document.createElement("select");return m.setAttribute("data-bluui-theme-select",""),m.setAttribute("aria-label","Appearance"),["System","Light","Dark"].forEach(function(T){var k=document.createElement("option");k.value=T,k.textContent=T,m.appendChild(k)}),m.value=e,m.addEventListener("change",function(){o(m.value)}),d.appendChild(c),d.appendChild(m),n.appendChild(d),m}u.BluUITheme={version:"1.0.0",setMode:o,getMode:y,mountSelector:h},e=a(),t.addEventListener?t.addEventListener("change",function(){e==="System"&&p()}):t.addListener(function(){e==="System"&&p()}),u.addEventListener("storage",function(n){(n.key===l||n.key===null)&&(e=a(),p())}),p()})(window);function Y(){if(typeof window=="undefined")throw new Error("Set appearance in the browser.");return window.BluUITheme}function se(u,l=!0){return Y().setMode(u,l)}function de(){return Y().getMode()}function ce(u){return Y().mountSelector(u)}function ue(u){let l=new Map,t=new WeakMap;function e(p){let o=l.get(p);o&&(o.instance.destroy(),l.delete(p),t.get(o.host)===p&&(t.delete(o.host),delete o.host.dataset.bluCommunityReady))}function i(p,o,h,n,r){var d;try{if(!r)throw Error("Owner key is required.");let c=document.getElementById(o);if(!c)throw Error("Community component host was not found.");let b=t.get(c);b&&b!==r&&e(b);let m=l.get(r);m&&(m.host!==c||m.kind!==p)&&e(r),p==="BluGridBasic"&&(h={...h},"RowsJson"in h&&(h.Rows=JSON.parse(h.RowsJson),delete h.RowsJson),"ColumnsJson"in h&&(h.Columns=JSON.parse(h.ColumnsJson),delete h.ColumnsJson));let T=l.get(r);if(T)return T.instance.update(h),"";let k=u[p];if(typeof k!="function")throw Error("Unknown Community component.");let O=k(c,h,n);return l.set(r,{host:c,kind:p,instance:O}),t.set(c,r),c.dataset.bluCommunityReady="true",""}catch(c){let b=c instanceof Error?c.message:String(c);return(d=n==null?void 0:n.Error)==null||d.call(n,b),b}}function a(p,o){let h={...p},n=h.HostId,r=h.OwnerKey;delete h.HostId,delete h.OwnerKey;try{return h.Columns=JSON.parse(h.ColumnsJson).map(d=>(d.Width===0&&delete d.Width,d.Header||delete d.Header,d)),delete h.ColumnsJson,i("BluGridBasic",n,h,{Ready:()=>o.EmitReady(r),RowClicked:d=>o.EmitRowClicked(JSON.stringify(d)),SelectionChanged:d=>o.EmitSelectionChanged(JSON.stringify(d)),Error:d=>o.EmitError(d)},r)}catch(d){let c=d instanceof Error?d.message:String(d);return o.EmitError(c),c}}let y={syncGrid:a,version:"0.2.0",sync:i,destroy:e,clearSelection:p=>{let o=l.get(p);return o!=null&&o.instance.clearSelection?(o.instance.clearSelection(),""):"Grid instance was not found."},...ee};return Object.assign(y,{register:p=>Object.assign(u,p)})}function ne(u){let l=window;l.BluUICommunity?l.BluUICommunity.register(u):l.BluUICommunity=ue(u)}var K=u=>(l,t,e)=>{let i=u(l,oe(t),e);return{...i,update:a=>i.update(oe(a))}},oe=u=>{let l={...u};for(let t of["Options","Rows","Columns","Actions","Leading","Trailing"])t+"Json"in l&&(l[t]=JSON.parse(String(l[t+"Json"]||(["Leading","Trailing"].includes(t)?"null":"[]"))),delete l[t+"Json"]);return l};ne({Checkbox:K(J),TextInput:K($),TextArea:K(Z),RadioButton:K(G),RadioGroup:K(W),Switch:K(z),Select:K(Q),Table:K(X)});})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var C=typeof window=="undefined"?globalThis:window,Z="__bluuiCommunityModulesV1",ee=C[Z]||(C[Z]={families:Object.create(null)}),W=C.BluUICommunityRuntime&&!Object.isFrozen(C.BluUICommunityRuntime)?C.BluUICommunityRuntime:Object.assign({},C.BluUICommunityRuntime||{});C.BluUICommunityRuntime=W;function te(e,t){return ee.families[e]||(ee.families[e]=t())}function ne(e,t){return W[e]||(W[e]=t())}var _=te("advanced",()=>({instances:new Map,serial:0})),ye=()=>`blu-advanced-${++_.serial}`;function l(e,t,n){let r=document.createElement(e);return t&&(r.className=t),n!==void 0&&(r.textContent=String(n)),r}function c(e,t,n){return n==null?e.removeAttribute(t):e.setAttribute(t,String(n)),e}function O(e,t,n="blu-picker__button"){let r=l("button",n,e);return r.type="button",r.addEventListener("click",t),r}function s(e,t,...n){var r,i;if(!e.dead)try{Promise.resolve((i=(r=e.events)[t])==null?void 0:i.call(r,...n)).catch(a=>$(e,a))}catch(a){$(e,a)}}function $(e,t){if(e.dead)return;let n=(t==null?void 0:t.message)||String(t);e.notice.textContent=n,e.lastError!==n&&(e.lastError=n,s(e,"Error",n))}function ae(e,t){let n=typeof e=="string"?JSON.parse(e||"[]"):e||[];if(!Array.isArray(n))throw Error(t+" must be a list.");return n}function ge(e,t,n){let r=i=>{var m;let a=_.instances.get(i);!a||a.kind!==e||(a.dead=!0,(m=a.dispose)==null||m.call(a),a.root.remove(),a.notice.remove(),a.host._bluAdvancedOwner===i&&delete a.host._bluAdvancedOwner,_.instances.delete(i))};return ne(e,()=>({sync(i,a={},m={},b){let d=document.getElementById(i);if(!d)return e+" host was not found.";let D=b||i,p=_.instances.get(D);p&&(p.host!==d||p.kind!==e)&&(p.destroy(p.key),p=null);let h=_.instances.get(d._bluAdvancedOwner);if(h&&h!==p&&h.destroy(h.key),!p){p={key:D,host:d,kind:e,uid:ye(),options:a,events:m,dead:!1,destroy:r},p.root=l("div"),p.notice=c(l("div","blu-advanced-sr"),"role","status"),c(p.notice,"aria-atomic","true"),d.append(p.root,p.notice),_.instances.set(D,p),d._bluAdvancedOwner=D;try{t(p)}catch(y){throw r(D),y}}p.options=a,p.events=m;try{return n(p),d.dataset.bluRuntimeReady="true",""}catch(y){return $(p,y),y.message||String(y)}},destroy:r}))}var S=e=>String(e).padStart(2,"0");function j(e){return String(e.getFullYear()).padStart(4,"0")+"-"+S(e.getMonth()+1)+"-"+S(e.getDate())}function v(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(String(e));if(!t||+t[1]<1||+t[1]>9999)return null;let n=new Date(2e3,+t[2]-1,+t[3],12);return n.setFullYear(+t[1]),j(n)===e?n:null}function V(e){let t=/^(\d{2}):(\d{2})$/.exec(String(e));return t&&+t[1]<24&&+t[2]<60?t[1]+":"+t[2]:null}function re(e,t="YYYY-MM-DD"){if(e=String(e).trim(),!e)return"";let n=e;if(t!=="YYYY-MM-DD"){let r=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/.exec(e);if(!r)return null;n=r[3]+"-"+S(+(t==="DD/MM/YYYY"?r[2]:r[1]))+"-"+S(+(t==="DD/MM/YYYY"?r[1]:r[2]))}return v(n)?n:null}function ie(e,t="YYYY-MM-DD"){if(!e)return"";let n=e.split("-");return t==="MM/DD/YYYY"?n[1]+"/"+n[2]+"/"+n[0]:t==="DD/MM/YYYY"?n[2]+"/"+n[1]+"/"+n[0]:e}function be(e,t=24){if(e=String(e).trim(),!e)return"";let n=/^(\d{1,2}):(\d{2})(?:\s*(AM|PM))?$/i.exec(e);return!n||+n[2]>59||(t===12?!n[3]||+n[1]<1||+n[1]>12:n[3]||+n[1]>23)?null:S(n[3]?+n[1]%12+(n[3].toUpperCase()==="PM"?12:0):+n[1])+":"+n[2]}function I(e,t=24){if(!e)return"";let[n,r]=e.split(":").map(Number);return t===12?(n%12||12)+":"+S(r)+" "+(n<12?"AM":"PM"):S(n)+":"+S(r)}function oe(e,t){let n=v(e);return n.setDate(n.getDate()+t),j(n)}function ue(e,t){let n=v(e),r=n.getDate();return n.setDate(1),n.setMonth(n.getMonth()+t),n.setDate(Math.min(r,new Date(n.getFullYear(),n.getMonth()+1,0).getDate())),j(n)}function De(e,t){let n=v(e),r=v(t);return Math.round((r.getTime()-n.getTime())/864e5)}function G(e,t,n,r){return v(e)?t&&e<t?"Choose "+t+" or later.":n&&e>n?"Choose "+n+" or earlier.":r!=null&&r.has(e)?"This date is unavailable.":"":"Enter a real calendar date."}function ce(e,t,n={}){if(!e||!t)return"Choose both a start date and an end date.";let r=G(e,n.Min,n.Max,n.disabled)||G(t,n.Min,n.Max,n.disabled);if(r)return r;if(t<e)return"End date must be on or after start date.";let i=De(e,t)+1;if(n.MinRangeDays&&i<n.MinRangeDays)return"Choose at least "+n.MinRangeDays+" days.";if(n.MaxRangeDays&&i>n.MaxRangeDays)return"Choose no more than "+n.MaxRangeDays+" days.";if(n.disabled){for(let a of n.disabled)if(a>=e&&a<=t)return"The range includes an unavailable date."}return""}var ve=["YYYY-MM-DD","MM/DD/YYYY","DD/MM/YYYY"],U=()=>j(new Date),E=e=>String(e||"").split("T")[0],q=e=>String(e||"").split("T")[1]||"";function k(e,t){let n=v(t);return n?new Intl.DateTimeFormat(e.locale,{dateStyle:"full"}).format(n):t}function z(e,t,n=e.fields){e.error.textContent=t,e.error.hidden=!t||e.isOpen,e.dialogError&&(e.dialogError.textContent=e.isOpen?t:"");for(let i of e.fields)c(i.input,"aria-invalid",t&&n.includes(i)?"true":null);let r=!t;(e.valid!==r||e.validationMessage!==t)&&(e.valid=r,e.validationMessage=t,s(e,"ValidationChanged",r,t))}function K(e,t){return G(t,E(e.options.Min),E(e.options.Max),e.disabledDates)}function Me(e,t,n){if(!V(t))return"Enter a valid time.";let r=e.dateTime?n+"T"+t:t,i=e.options.Min,a=e.options.Max;return i&&r<i?"Choose "+i+" or later.":a&&r>a?"Choose "+a+" or earlier.":""}function pe(e,t,n,r){if(e.range)return!t&&!n&&!e.options.IsRequired?"":ce(t,n,{...e.options,disabled:e.disabledDates});if(!t&&!r)return e.options.IsRequired?"A "+(e.timeOnly?"time":"date")+" is required.":"";if(!e.timeOnly){if(!t)return"Choose a date.";let i=K(e,t);if(i)return i}return e.hasTime?r?Me(e,r,t):"Choose a time.":""}function fe(e){e.timeOnly?e.fields[0].input.value=I(e.value,e.cycle):(e.fields[0].input.value=ie(e.range?e.start:E(e.value),e.format),e.range&&(e.fields[1].input.value=ie(e.end,e.format)),e.dateTime&&(e.fields[1].input.value=I(q(e.value),e.cycle)));let t=e.range?[e.start,e.end].filter(Boolean).join(" to "):e.value;e.typedDirty=!1,e.clearButton.hidden=e.options.ShowClear===!1||!t}function T(e,t=!0){var n;if(e.isOpen){e.isOpen=!1,e.dialog.hidePopover&&e.dialog.matches(":popover-open")&&e.dialog.hidePopover(),e.dialog.hidden=!0,e.error.hidden=!e.validationMessage;for(let{input:r}of e.fields)c(r,"aria-expanded","false");t&&((n=e.anchor)!=null&&n.isConnected)&&!e.anchor.disabled&&e.anchor.focus({preventScroll:!0}),s(e,"OpenChanged",!1)}}function N(e){if(!e.isOpen||e.dead)return;let t=e.anchor.getBoundingClientRect(),n=window.visualViewport,r=(n==null?void 0:n.offsetLeft)||0,i=(n==null?void 0:n.offsetTop)||0,a=(n==null?void 0:n.width)||document.documentElement.clientWidth,m=(n==null?void 0:n.height)||window.innerHeight,b=6,d=8;if(t.bottom<=i||t.top>=i+m||t.right<=r||t.left>=r+a){T(e,!1);return}let D=e.dialog,p=Math.min(e.timeOnly?300:344,a-d*2);D.dataset.compact=String(m<420),D.style.width=p+"px",D.style.maxHeight="none";let h=Math.max(0,i+m-d-t.bottom-b),y=Math.max(0,t.top-b-i-d),g=D.scrollHeight+2,M=g>h&&y>h,u=Math.max(0,m-d*2);D.style.maxHeight=u+"px",D.style.left=Math.max(r+d,Math.min(t.left,r+a-d-p))+"px";let f=M?t.top-b-g:t.bottom+b;D.style.top=Math.max(i+d,Math.min(f,i+m-d-Math.min(g,u)))+"px",D.dataset.placement=M?"top":"bottom"}function de(e){(e.timeOnly||e.dateTime&&e.anchor===e.fields[1].input?e.hours:e.calendar.querySelector('[data-date="'+e.focusDate+'"]')||e.monthSelect).focus()}function J(e,t,n,r,i=!1){let a=pe(e,t,n,r);if(z(e,a),a)return e.dialogError.textContent=a,!1;let m=document.activeElement===e.clearButton&&!t&&!n&&!r,b=e.timeOnly?r:e.dateTime?t?t+"T"+r:"":t,d=e.range?e.start!==t||e.end!==n:e.value!==b;return e.range?(e.start=t,e.end=n,e.options.StartDate=t,e.options.EndDate=n):(e.value=b,e.options.Value=b),e.inputSignature=JSON.stringify(e.range?[e.start,e.end]:[e.value]),fe(e),i||T(e),m&&e.fields[0].input.focus(),e.notice.textContent=e.range?t?k(e,t)+" to "+k(e,n):"Date range cleared":b?"Selected "+(e.timeOnly?I(b,e.cycle):k(e,t)+(e.hasTime?" at "+I(r,e.cycle):"")):"Selection cleared",d&&(e.range?s(e,"Change",t,n):s(e,"Change",b)),!0}function le(e,t=!1){if(e.options.IsDisabled||e.options.IsReadOnly)return;let n=e.timeOnly?"":re(e.fields[0].input.value,e.format),r=e.range?re(e.fields[1].input.value,e.format):"",i=e.hasTime?be(e.fields[e.timeOnly?0:1].input.value,e.cycle):"";if(n===null||r===null){z(e,"Enter a real date using "+e.format+".");return}if(i===null){z(e,e.cycle===12?"Enter a time such as 9:15 AM.":"Enter a time such as 14:30.");return}J(e,n,r,i,t)&&t&&(e.draftStart=n,e.draftEnd=r,e.draftTime=i,n&&(e.focusDate=n,e.month=n.slice(0,7)),A(e),Q(e),P(e),N(e))}function Se(e){let t=e.range||e.dateTime?2:1;e.fields=[];for(let n=0;n<t;n++){let r=l("div","blu-picker__field"),i=l("label"),a=l("input","blu-picker__input");a.type="text",a.id=e.uid+"-input-"+n,i.htmlFor=a.id,a.autocomplete="off",a.spellcheck=!1,c(a,"role","combobox"),c(a,"aria-haspopup","dialog"),c(a,"aria-expanded","false"),c(a,"aria-autocomplete","none"),c(a,"aria-controls",e.uid+"-dialog"),c(a,"aria-describedby",e.uid+"-hint "+e.uid+"-error "+e.uid+"-keyboard"),a.addEventListener("input",()=>{e.typedDirty=!0}),a.addEventListener("change",()=>le(e,e.isOpen)),a.addEventListener("pointerdown",d=>{d.pointerType==="mouse"&&(e.touchOpen=!1,a.inputMode="text"),(d.pointerType==="touch"||d.pointerType==="pen")&&e.manualInput!==a&&!e.options.IsDisabled&&!e.options.IsReadOnly&&(d.preventDefault(),e.touchOpen=!0,a.inputMode="none",B(e,a,!0))}),a.addEventListener("click",d=>{e.manualInput!==a&&(e.touchOpen?(d.preventDefault(),B(e,a,!0)):B(e,a,!1))}),a.addEventListener("blur",()=>{e.manualInput===a&&(e.manualInput=null)}),a.addEventListener("keydown",d=>{d.ctrlKey||d.metaKey||d.shiftKey||(d.key==="ArrowDown"&&(d.preventDefault(),B(e,a,!0)),d.key==="Enter"&&(d.preventDefault(),!e.isOpen&&!e.typedDirty?B(e,a,!0):le(e)),d.key==="Tab"&&T(e,!1))});let m=l("div","blu-picker__field-control"),b=c(l("span","blu-picker__field-icon"),"aria-hidden","true");b.innerHTML=e.timeOnly||e.dateTime&&n?'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><circle cx="12" cy="12" r="8.5"/><path d="M12 7v5l3 2"/></svg>':'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><rect x="4" y="5" width="16" height="16" rx="3"/><path d="M8 3v4m8-4v4M4 10h16m-11 4h2m3 0h2m-7 3h2"/></svg>',m.append(a,b),r.append(i,m),e.fields.push({field:r,label:i,input:a}),e.fieldRow.append(r)}}function Y(e,t,n){let r=l("option","",n);return r.value=String(t),e.append(r),r}function F(e,t,n){let r=l("label","blu-picker__select-field"),i=l("span","",t),a=l("select","blu-picker__input");return a.id=e.uid+"-"+n,r.append(i,a),{wrap:r,select:a}}function H(e,t){var i;let n=E(e.options.Min)||"0001-01-01",r=E(e.options.Max)||"9999-12-31";t=t<n?n:t>r?r:t,v(t)&&(e.focusDate=t,e.month=t.slice(0,7),A(e),(i=e.calendar.querySelector('[data-date="'+t+'"]'))==null||i.focus())}function we(e,t,n){if(t.altKey||t.ctrlKey||t.metaKey)return;let r,i={ArrowLeft:-1,ArrowRight:1,ArrowUp:-7,ArrowDown:7};if(t.key in i)r=oe(n,i[t.key]);else if(t.key==="Home"||t.key==="End"){let a=(v(n).getDay()-e.firstDay+7)%7;r=oe(n,t.key==="Home"?-a:6-a)}else(t.key==="PageUp"||t.key==="PageDown")&&(r=ue(n,(t.key==="PageUp"?-1:1)*(t.shiftKey?12:1)));r&&(t.preventDefault(),H(e,r))}function me(e,t){var n;if(!K(e,t)){if(e.dialogError.textContent="",e.focusDate=t,e.range?e.rangeNext==="start"?(e.draftStart=t,e.draftEnd="",e.rangeNext="end"):(t<e.draftStart?(e.draftEnd=e.draftStart,e.draftStart=t):e.draftEnd=t,e.rangeNext="start"):e.draftStart=t,!e.hasTime&&!e.range){J(e,t,"","");return}A(e),(n=e.calendar.querySelector('[data-date="'+t+'"]'))==null||n.focus(),P(e)}}function P(e){let t=e.range?e.draftStart?k(e,e.draftStart)+(e.draftEnd?" to "+k(e,e.draftEnd):" \u2014 choose an end date"):"Choose a start date":e.hasTime?(e.draftStart?k(e,e.draftStart)+" \xB7 ":"")+I(e.draftTime,e.cycle):"",n=r=>v(r)?new Intl.DateTimeFormat(e.locale,{month:"short",day:"numeric"}).format(v(r)):"";e.selectionSpeech.textContent=t,e.selectionVisual.textContent=e.range?e.draftStart?n(e.draftStart)+(e.draftEnd?" \u2013 "+n(e.draftEnd):" \u2014 choose end"):"Choose start date":e.dateTime?n(e.draftStart)+" \xB7 "+I(e.draftTime,e.cycle):e.timeOnly?I(e.draftTime,e.cycle):"",e.selection.hidden=!t}function A(e){let t=v(e.month+"-01");if(!t)return;let n=t.getFullYear(),r=t.getMonth(),i=Number(E(e.options.Min).slice(0,4))||1,a=Number(E(e.options.Max).slice(0,4))||9999;e.monthSelect.value=String(r),e.yearInput.value=String(n),c(e.yearInput,"aria-invalid",null),e.yearInput.min=String(i),e.yearInput.max=String(a);let m=new Intl.DateTimeFormat(e.locale,{month:"long",year:"numeric"}).format(t);e.caption.textContent!==m&&(e.caption.textContent=m);let b=(t.getDay()-e.firstDay+7)%7,d=new Date(n,r+1,0).getDate();if(e.focusDate.startsWith(e.month)||(e.focusDate=e.month+"-01"),!e.dayCells){let h=l("tbody");e.dayCells=[];for(let y=0;y<6;y++){let g=l("tr");for(let M=0;M<7;M++){let u=l("td"),f=O("",()=>me(e,f.dataset.date),"blu-picker__day");f.addEventListener("keydown",w=>we(e,w,f.dataset.date)),f.addEventListener("focus",()=>{e.focusDate=f.dataset.date;for(let w of e.dayCells)w.button.tabIndex=w.button===f?0:-1}),u.append(f),g.append(u),e.dayCells.push({cell:u,button:f})}h.append(g)}e.calendar.append(h)}for(let h=0;h<e.dayCells.length;h++){let{cell:y,button:g}=e.dayCells[h],M=h-b+1,u=M>0&&M<=d;if(g.hidden=!u,!u){g.tabIndex=-1,delete g.dataset.date,c(y,"aria-selected",null);continue}let f=e.month+"-"+S(M),w=f===e.draftStart||e.range&&f===e.draftEnd,R=e.range&&e.draftStart&&e.draftEnd&&f>e.draftStart&&f<e.draftEnd,o=K(e,f),x=!!(w||R),L=e.range&&w?f===e.draftStart?e.draftEnd?", range starts here; "+k(e,e.draftStart)+" to "+k(e,e.draftEnd):", start date; choose an end date":", range ends here; "+k(e,e.draftStart)+" to "+k(e,e.draftEnd):"",X=k(e,f)+(x?", selected":"")+L+(o?", unavailable":"");g.dataset.date=f,g.tabIndex=f===e.focusDate?0:-1,g.textContent!==String(M)&&(g.textContent=String(M)),g.getAttribute("aria-label")!==X&&c(g,"aria-label",X),c(y,"aria-selected",String(x)),c(g,"aria-disabled",o?"true":null),c(g,"aria-current",f===U()?"date":null),g.dataset.selected=String(w),g.dataset.between=String(!!R)}for(let h=0;h<6;h++)e.dayCells[h*7].cell.parentElement.hidden=h*7-b+1>d;let D=E(e.options.Min),p=E(e.options.Max);e.prev.disabled=!!D&&e.month<=D.slice(0,7)||n===1&&r===0,e.next.disabled=!!p&&e.month>=p.slice(0,7)||n===9999&&r===11,e.todayButton.hidden=e.timeOnly||e.options.ShowToday===!1,e.todayButton.disabled=!!K(e,U())}function Q(e){if(!e.hasTime)return;let[t,n]=(e.draftTime||"09:00").split(":").map(Number);e.hours.replaceChildren(),e.minutes.replaceChildren();for(let r=0;r<(e.cycle===12?12:24);r++)Y(e.hours,e.cycle===12?r+1:r,S(e.cycle===12?r+1:r));for(let r=0;r<60;r+=e.step)Y(e.minutes,r,S(r));n%e.step&&Y(e.minutes,n,S(n)+" (entered)"),e.hours.value=String(e.cycle===12?t%12||12:t),e.minutes.value=String(n),e.period.value=t<12?"AM":"PM",e.periodField.hidden=e.cycle!==12,P(e)}function B(e,t=e.fields[0].input,n=!0){if(e.options.IsDisabled||e.options.IsReadOnly)return;if(e.anchor=t,e.manualInput=null,e.typeButton.hidden=!e.touchOpen,e.isOpen){e.range&&(e.rangeNext=t===e.fields[1].input&&e.draftStart?"end":"start"),N(e),n&&de(e);return}e.draftStart=e.timeOnly?"":e.range?e.start:E(e.value),e.draftEnd=e.end||"",e.draftTime=e.timeOnly?e.value:q(e.value),e.hasTime&&!V(e.draftTime)&&(e.draftTime="09:00"),e.rangeNext="start",e.range&&t===e.fields[1].input&&e.draftStart&&(e.rangeNext="end");let r=e.range&&e.rangeNext==="end"?e.draftEnd:e.draftStart;e.focusDate=v(r)?r:v(e.draftStart)?e.draftStart:U();let i=E(e.options.Min),a=E(e.options.Max);e.timeOnly||(i&&e.focusDate<i&&(e.focusDate=i),a&&e.focusDate>a&&(e.focusDate=a)),e.month=e.focusDate.slice(0,7),e.dialogError.textContent="",A(e),Q(e),P(e),e.isOpen=!0,e.dialog.hidden=!1,e.dialog.showPopover&&e.dialog.showPopover(),e.dialog.scrollTop=0;for(let{input:m}of e.fields)c(m,"aria-expanded","true");N(e),n&&e.isOpen&&de(e),s(e,"OpenChanged",!0)}function Ee(e){var g,M;e.range=e.kind==="DateRangePicker",e.timeOnly=e.kind==="TimePicker",e.dateTime=e.kind==="DateTimePicker",e.hasTime=e.timeOnly||e.dateTime,e.root.className="blu-picker",e.fieldRow=l("div","blu-picker__fields"),e.error=c(l("div","blu-picker__error"),"role","alert"),e.error.id=e.uid+"-error",e.error.hidden=!0,e.hint=l("div","blu-picker__hint"),e.hint.id=e.uid+"-hint",e.actions=l("div","blu-picker__actions"),e.clearButton=O("Clear",()=>J(e,"","","")),e.actions.append(e.clearButton),e.root.append(e.fieldRow,e.hint,e.actions,e.error),Se(e);let t=l("span","blu-advanced-sr","Click the field or press Down Arrow to browse. Escape closes the popup.");t.id=e.uid+"-keyboard",e.root.append(t),e.dialog=l("div","blu-picker__dialog blu-picker__popup"),e.dialog.id=e.uid+"-dialog",e.dialog.hidden=!0,c(e.dialog,"role","dialog"),c(e.dialog,"aria-labelledby",e.uid+"-title"),c(e.dialog,"aria-modal","false"),e.dialog.showPopover&&c(e.dialog,"popover","manual"),e.root.append(e.dialog),e.title=l("h2","blu-advanced-sr"),e.title.id=e.uid+"-title",e.dialog.append(e.title),e.presets=l("div","blu-picker__presets"),e.dialog.append(e.presets),e.calendarArea=l("div","blu-picker__calendar-area"),e.calendarArea.hidden=e.timeOnly,e.dialog.append(e.calendarArea);let n=l("div","blu-picker__calendar-nav"),r=F(e,"Month","month");e.monthSelect=r.select;let i=l("label","blu-picker__select-field");i.append(l("span","","Year")),e.yearInput=l("input","blu-picker__input"),e.yearInput.type="number",e.yearInput.step="1",i.append(e.yearInput);let a=u=>{let f=ue(e.focusDate,u);H(e,f)};e.prev=O("\u2039",()=>a(-1)),c(e.prev,"aria-label","Previous month"),e.next=O("\u203A",()=>a(1)),c(e.next,"aria-label","Next month"),n.append(e.prev,r.wrap,i,e.next),e.calendarArea.append(n),e.monthSelect.addEventListener("change",()=>H(e,String(e.yearInput.value).padStart(4,"0")+"-"+S(+e.monthSelect.value+1)+"-01")),e.yearInput.addEventListener("change",()=>{let u=Number(e.yearInput.value);if(!Number.isInteger(u)||u<+e.yearInput.min||u>+e.yearInput.max){e.dialogError.textContent="Enter a year from "+e.yearInput.min+" to "+e.yearInput.max+".",c(e.yearInput,"aria-invalid","true");return}c(e.yearInput,"aria-invalid",null),e.dialogError.textContent="",H(e,String(u).padStart(4,"0")+"-"+S(+e.monthSelect.value+1)+"-01")}),e.caption=c(l("h3","blu-picker__caption blu-advanced-sr"),"aria-live","polite"),e.caption.id=e.uid+"-caption",e.calendarArea.append(e.caption),e.calendar=c(l("table","blu-picker__calendar"),"role","grid"),c(e.calendar,"aria-labelledby",e.caption.id),e.range&&c(e.calendar,"aria-multiselectable","true"),e.calendarArea.append(e.calendar),e.todayButton=O("Today",()=>{e.focusDate=U(),e.month=e.focusDate.slice(0,7),me(e,e.focusDate)}),e.calendarArea.append(l("p","blu-advanced-sr","Arrow keys move by day or week. Home/End move within the week. Page Up/Down change month; hold Shift to change year.")),e.timeArea=l("div","blu-picker__time-area"),e.timeArea.hidden=!e.hasTime,e.dialog.append(e.timeArea);let m=F(e,"Hour","hour"),b=F(e,"Minute","minute"),d=F(e,"AM / PM","period");e.hours=m.select,e.minutes=b.select,e.period=d.select,e.periodField=d.wrap,Y(e.period,"AM","AM"),Y(e.period,"PM","PM"),e.timeArea.append(m.wrap,b.wrap,d.wrap);for(let u of[e.hours,e.minutes,e.period])u.addEventListener("change",()=>{let f=+e.hours.value;e.cycle===12&&(f=f%12+(e.period.value==="PM"?12:0)),e.draftTime=S(f)+":"+S(+e.minutes.value),e.dialogError.textContent="",P(e)});e.selection=c(l("div","blu-picker__selection"),"role","status"),c(e.selection,"aria-atomic","true"),e.selectionSpeech=l("span","blu-advanced-sr"),e.selectionVisual=c(l("span"),"aria-hidden","true"),e.selection.append(e.selectionSpeech,e.selectionVisual),e.dialogError=c(l("div","blu-picker__error"),"role","alert"),e.dialogError.id=e.uid+"-dialog-error",c(e.yearInput,"aria-describedby",e.dialogError.id),e.apply=O("Apply",()=>J(e,e.draftStart,e.draftEnd,e.draftTime),"blu-picker__button blu-picker__button--primary"),e.apply.hidden=!e.range&&!e.hasTime,e.typeButton=O("Type",()=>{let u=e.anchor;T(e,!1),e.manualInput=u,u.inputMode="text",u.focus({preventScroll:!0})}),c(e.typeButton,"aria-label","Type a date or time"),e.typeButton.hidden=!0;let D=l("div","blu-picker__popup-actions");D.append(e.typeButton,e.todayButton,O("Cancel",()=>T(e)),e.apply),e.dialog.append(e.selection,e.dialogError,D);let p=u=>{e.isOpen&&!e.root.contains(u.target)&&T(e,!1)},h=u=>{e.isOpen&&u.key==="Escape"&&!u.defaultPrevented&&(u.preventDefault(),u.stopPropagation(),T(e))},y=u=>{!e.isOpen||e.dialog.contains(u==null?void 0:u.target)||(cancelAnimationFrame(e.positionFrame),e.positionFrame=requestAnimationFrame(()=>N(e)))};document.addEventListener("pointerdown",p,!0),document.addEventListener("focusin",p),e.root.addEventListener("keydown",h),window.addEventListener("resize",y),document.addEventListener("scroll",y,!0),(g=window.visualViewport)==null||g.addEventListener("resize",y),(M=window.visualViewport)==null||M.addEventListener("scroll",y),window.ResizeObserver&&(e.popupObserver=new ResizeObserver(()=>y()),e.popupObserver.observe(e.fieldRow),e.popupObserver.observe(e.dialog)),e.dispose=()=>{var u,f,w;T(e,!1),cancelAnimationFrame(e.positionFrame),(u=e.popupObserver)==null||u.disconnect(),document.removeEventListener("pointerdown",p,!0),document.removeEventListener("focusin",p),e.root.removeEventListener("keydown",h),window.removeEventListener("resize",y),document.removeEventListener("scroll",y,!0),(f=window.visualViewport)==null||f.removeEventListener("resize",y),(w=window.visualViewport)==null||w.removeEventListener("scroll",y)}}function xe(e){var h,y,g,M,u,f,w,R;let t=JSON.stringify(e.options);if(e.renderSignature===t)return;let n=e.isOpen?document.activeElement:null,r=(h=n==null?void 0:n.dataset)==null?void 0:h.date,i=n==null?void 0:n.id,a=e.options;if(e.label=String(a.Label||{DatePicker:"Date",TimePicker:"Time",DateTimePicker:"Date and time",DateRangePicker:"Date range"}[e.kind]),e.locale=String(a.Locale||"en-US"),new Intl.DateTimeFormat(e.locale),e.format=ve.includes(a.DateFormat)?a.DateFormat:"YYYY-MM-DD",e.cycle=Number(a.HourCycle)===12?12:24,e.step=Number((y=a.MinuteStep)!=null?y:15),!Number.isInteger(e.step)||e.step<1||e.step>60)throw Error("MinuteStep must be a whole number from 1 to 60.");if(e.firstDay=Number((g=a.FirstDayOfWeek)!=null?g:1),!Number.isInteger(e.firstDay)||e.firstDay<0||e.firstDay>6)throw Error("FirstDayOfWeek must be 0\u20136.");e.disabledDates=new Set(ae((M=a.DisabledDatesJson)!=null?M:a.DisabledDates,"DisabledDates").map(o=>typeof o=="string"?o:o.Date));for(let o of e.disabledDates)if(!v(o))throw Error("DisabledDates must contain ISO calendar dates.");for(let o of["Min","Max"])if(a[o]&&!(e.timeOnly?V(a[o]):v(E(a[o]))&&(!e.dateTime||V(q(a[o])))))throw Error(o+" must use the documented ISO value format.");if(a.Min&&a.Max&&a.Min>a.Max)throw Error("Min must be on or before Max.");for(let o of["MinRangeDays","MaxRangeDays"])if(a[o]!==void 0&&(!Number.isInteger(Number(a[o]))||Number(a[o])<0))throw Error(o+" must be a non-negative whole number.");if(a.MinRangeDays&&a.MaxRangeDays&&Number(a.MinRangeDays)>Number(a.MaxRangeDays))throw Error("MinRangeDays must not exceed MaxRangeDays.");let m=e.range?[String(a.StartDate||""),String(a.EndDate||"")]:[String(a.Value||"")],b=JSON.stringify(m),d=b!==e.inputSignature;if(e.inputSignature=b,e.range?(e.start=m[0],e.end=m[1]):e.value=m[0],e.fields.forEach((o,x)=>{o.label.textContent=e.range?e.label+(x?" \u2014 end":" \u2014 start"):e.dateTime?e.label+(x?" \u2014 time":" \u2014 date"):e.label,o.input.disabled=!!a.IsDisabled,o.input.readOnly=!!a.IsReadOnly,o.input.required=!!a.IsRequired,o.input.placeholder=String(a.Placeholder||(e.timeOnly||e.dateTime&&x?e.cycle===12?"9:00 AM":"09:00":e.format))}),e.hint.textContent=e.timeOnly?(e.cycle===12?"h:mm AM/PM":"HH:mm")+" \xB7 local time":e.format+(e.dateTime?" \xB7 "+(e.cycle===12?"h:mm AM/PM":"HH:mm")+" local time":""),e.title.textContent=e.label,e.clearButton.disabled=!!a.IsDisabled||!!a.IsReadOnly,d||e.previousFormat!==e.format||e.previousCycle!==e.cycle){fe(e);let o=m.some(Boolean);z(e,o?pe(e,e.timeOnly?"":e.range?e.start:E(e.value),e.end||"",e.timeOnly?e.value:q(e.value)):""),e.previousFormat=e.format,e.previousCycle=e.cycle}e.monthSelect.replaceChildren();for(let o=0;o<12;o++)Y(e.monthSelect,o,new Intl.DateTimeFormat(e.locale,{month:"long"}).format(new Date(2024,o,1)));(u=e.calendar.tHead)==null||u.remove();let D=l("thead"),p=l("tr");for(let o=0;o<7;o++){let x=new Date(2024,0,7+(o+e.firstDay)%7),L=l("th","",new Intl.DateTimeFormat(e.locale,{weekday:"short"}).format(x));L.scope="col",L.abbr=new Intl.DateTimeFormat(e.locale,{weekday:"long"}).format(x),p.append(L)}if(D.append(p),e.calendar.prepend(D),e.presets.replaceChildren(),e.presets.hidden=!e.range,e.range)for(let o of ae((f=a.PresetsJson)!=null?f:a.Presets,"Presets")){if(!o.Label||!v(o.StartDate)||!v(o.EndDate))throw Error("Presets need Label, StartDate and EndDate.");let x=O(o.Label,()=>{e.draftStart=o.StartDate,e.draftEnd=o.EndDate,e.rangeNext="start",e.focusDate=e.draftStart,e.month=e.focusDate.slice(0,7),e.dialogError.textContent="",A(e),P(e)});x.disabled=!!ce(o.StartDate,o.EndDate,{...a,disabled:e.disabledDates}),e.presets.append(x)}e.isOpen&&(a.IsDisabled||a.IsReadOnly||d?T(e):(A(e),Q(e),r?(w=e.calendar.querySelector('[data-date="'+r+'"]'))==null||w.focus():i&&((R=document.getElementById(i))==null||R.focus()),N(e))),e.renderSignature=t}var he=()=>ge("TimePicker",Ee,xe);he();})();
|
|
1
|
+
"use strict";(()=>{var C=typeof window=="undefined"?globalThis:window,Z="__bluuiCommunityModulesV1",ee=C[Z]||(C[Z]={families:Object.create(null)}),W=C.BluUICommunityRuntime&&!Object.isFrozen(C.BluUICommunityRuntime)?C.BluUICommunityRuntime:Object.assign({},C.BluUICommunityRuntime||{});C.BluUICommunityRuntime=W;function te(e,t){return ee.families[e]||(ee.families[e]=t())}function ne(e,t){return W[e]||(W[e]=t())}var _=te("advanced",()=>({instances:new Map,serial:0})),ge=()=>`blu-advanced-${++_.serial}`;function l(e,t,n){let r=document.createElement(e);return t&&(r.className=t),n!==void 0&&(r.textContent=String(n)),r}function c(e,t,n){return n==null?e.removeAttribute(t):e.setAttribute(t,String(n)),e}function O(e,t,n="blu-picker__button"){let r=l("button",n,e);return r.type="button",r.addEventListener("click",t),r}function Y(e,t,...n){var r,i;if(!e.dead)try{Promise.resolve((i=(r=e.events)[t])==null?void 0:i.call(r,...n)).catch(a=>$(e,a))}catch(a){$(e,a)}}function $(e,t){if(e.dead)return;let n=(t==null?void 0:t.message)||String(t);e.notice.textContent=n,e.lastError!==n&&(e.lastError=n,Y(e,"Error",n))}function ae(e,t){let n=typeof e=="string"?JSON.parse(e||"[]"):e||[];if(!Array.isArray(n))throw Error(t+" must be a list.");return n}function ye(e,t,n){let r=i=>{var m;let a=_.instances.get(i);!a||a.kind!==e||(a.dead=!0,(m=a.dispose)==null||m.call(a),a.root.remove(),a.notice.remove(),a.host._bluAdvancedOwner===i&&delete a.host._bluAdvancedOwner,_.instances.delete(i))};return ne(e,()=>({sync(i,a={},m={},b){let d=document.getElementById(i);if(!d)return e+" host was not found.";let D=b||i,p=_.instances.get(D);p&&(p.host!==d||p.kind!==e)&&(p.destroy(p.key),p=null);let h=_.instances.get(d._bluAdvancedOwner);if(h&&h!==p&&h.destroy(h.key),!p){p={key:D,host:d,kind:e,uid:ge(),options:a,events:m,dead:!1,destroy:r},p.root=l("div"),p.notice=c(l("div","blu-advanced-sr"),"role","status"),c(p.notice,"aria-atomic","true"),d.append(p.root,p.notice),_.instances.set(D,p),d._bluAdvancedOwner=D;try{t(p)}catch(g){throw r(D),g}}p.options=a,p.events=m;try{return n(p),d.dataset.bluRuntimeReady="true",""}catch(g){return $(p,g),g.message||String(g)}},destroy:r}))}var w=e=>String(e).padStart(2,"0");function j(e){return String(e.getFullYear()).padStart(4,"0")+"-"+w(e.getMonth()+1)+"-"+w(e.getDate())}function v(e){let t=/^(\d{4})-(\d{2})-(\d{2})$/.exec(String(e));if(!t||+t[1]<1||+t[1]>9999)return null;let n=new Date(2e3,+t[2]-1,+t[3],12);return n.setFullYear(+t[1]),j(n)===e?n:null}function V(e){let t=/^(\d{2}):(\d{2})$/.exec(String(e));return t&&+t[1]<24&&+t[2]<60?t[1]+":"+t[2]:null}function re(e,t="YYYY-MM-DD"){if(e=String(e).trim(),!e)return"";let n=e;if(t!=="YYYY-MM-DD"){let r=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/.exec(e);if(!r)return null;n=r[3]+"-"+w(+(t==="DD/MM/YYYY"?r[2]:r[1]))+"-"+w(+(t==="DD/MM/YYYY"?r[1]:r[2]))}return v(n)?n:null}function ie(e,t="YYYY-MM-DD"){if(!e)return"";let n=e.split("-");return t==="MM/DD/YYYY"?n[1]+"/"+n[2]+"/"+n[0]:t==="DD/MM/YYYY"?n[2]+"/"+n[1]+"/"+n[0]:e}function be(e,t=24){if(e=String(e).trim(),!e)return"";let n=/^(\d{1,2}):(\d{2})(?:\s*(AM|PM))?$/i.exec(e);return!n||+n[2]>59||(t===12?!n[3]||+n[1]<1||+n[1]>12:n[3]||+n[1]>23)?null:w(n[3]?+n[1]%12+(n[3].toUpperCase()==="PM"?12:0):+n[1])+":"+n[2]}function I(e,t=24){if(!e)return"";let[n,r]=e.split(":").map(Number);return t===12?(n%12||12)+":"+w(r)+" "+(n<12?"AM":"PM"):w(n)+":"+w(r)}function oe(e,t){let n=v(e);return n.setDate(n.getDate()+t),j(n)}function ue(e,t){let n=v(e),r=n.getDate();return n.setDate(1),n.setMonth(n.getMonth()+t),n.setDate(Math.min(r,new Date(n.getFullYear(),n.getMonth()+1,0).getDate())),j(n)}function De(e,t){let n=v(e),r=v(t);return Math.round((r.getTime()-n.getTime())/864e5)}function G(e,t,n,r){return v(e)?t&&e<t?"Choose "+t+" or later.":n&&e>n?"Choose "+n+" or earlier.":r!=null&&r.has(e)?"This date is unavailable.":"":"Enter a real calendar date."}function ce(e,t,n={}){if(!e||!t)return"Choose both a start date and an end date.";let r=G(e,n.Min,n.Max,n.disabled)||G(t,n.Min,n.Max,n.disabled);if(r)return r;if(t<e)return"End date must be on or after start date.";let i=De(e,t)+1;if(n.MinRangeDays&&i<n.MinRangeDays)return"Choose at least "+n.MinRangeDays+" days.";if(n.MaxRangeDays&&i>n.MaxRangeDays)return"Choose no more than "+n.MaxRangeDays+" days.";if(n.disabled){for(let a of n.disabled)if(a>=e&&a<=t)return"The range includes an unavailable date."}return""}var ve=["YYYY-MM-DD","MM/DD/YYYY","DD/MM/YYYY"],U=()=>j(new Date),E=e=>String(e||"").split("T")[0],q=e=>String(e||"").split("T")[1]||"";function k(e,t){let n=v(t);return n?new Intl.DateTimeFormat(e.locale,{dateStyle:"full"}).format(n):t}function z(e,t,n=e.fields){e.error.textContent=t,e.error.hidden=!t||e.isOpen,e.dialogError&&(e.dialogError.textContent=e.isOpen?t:"");for(let i of e.fields)c(i.input,"aria-invalid",t&&n.includes(i)?"true":null);let r=!t;(e.valid!==r||e.validationMessage!==t)&&(e.valid=r,e.validationMessage=t,Y(e,"ValidationChanged",r,t))}function K(e,t){return G(t,E(e.options.Min),E(e.options.Max),e.disabledDates)}function Se(e,t,n){if(!V(t))return"Enter a valid time.";let r=e.dateTime?n+"T"+t:t,i=e.options.Min,a=e.options.Max;return i&&r<i?"Choose "+i+" or later.":a&&r>a?"Choose "+a+" or earlier.":""}function pe(e,t,n,r){if(e.range)return!t&&!n&&!e.options.IsRequired?"":ce(t,n,{...e.options,disabled:e.disabledDates});if(!t&&!r)return e.options.IsRequired?"A "+(e.timeOnly?"time":"date")+" is required.":"";if(!e.timeOnly){if(!t)return"Choose a date.";let i=K(e,t);if(i)return i}return e.hasTime?r?Se(e,r,t):"Choose a time.":""}function fe(e){e.timeOnly?e.fields[0].input.value=I(e.value,e.cycle):(e.fields[0].input.value=ie(e.range?e.start:E(e.value),e.format),e.range&&(e.fields[1].input.value=ie(e.end,e.format)),e.dateTime&&(e.fields[1].input.value=I(q(e.value),e.cycle)));let t=e.range?[e.start,e.end].filter(Boolean).join(" to "):e.value;e.typedDirty=!1,e.clearButton.hidden=e.options.ShowClear===!1||!t}function T(e,t=!0){var n;if(e.isOpen){e.isOpen=!1,e.dialog.hidePopover&&e.dialog.matches(":popover-open")&&e.dialog.hidePopover(),e.dialog.hidden=!0,e.error.hidden=!e.validationMessage;for(let{input:r}of e.fields)c(r,"aria-expanded","false");t&&((n=e.anchor)!=null&&n.isConnected)&&!e.anchor.disabled&&e.anchor.focus({preventScroll:!0}),Y(e,"OpenChanged",!1)}}function N(e){if(!e.isOpen||e.dead)return;let t=e.anchor.getBoundingClientRect(),n=window.visualViewport,r=(n==null?void 0:n.offsetLeft)||0,i=(n==null?void 0:n.offsetTop)||0,a=(n==null?void 0:n.width)||document.documentElement.clientWidth,m=(n==null?void 0:n.height)||window.innerHeight,b=6,d=8;if(t.bottom<=i||t.top>=i+m||t.right<=r||t.left>=r+a){T(e,!1);return}let D=e.dialog,p=Math.min(e.timeOnly?300:344,a-d*2);D.dataset.compact=String(m<420),D.style.width=p+"px",D.style.maxHeight="none";let h=Math.max(0,i+m-d-t.bottom-b),g=Math.max(0,t.top-b-i-d),y=D.scrollHeight+2,S=y>h&&g>h,u=Math.max(0,m-d*2);D.style.maxHeight=u+"px";let f=e.fieldRow.getBoundingClientRect();D.style.left=Math.max(r+d,Math.min(f.left+(f.width-p)/2,r+a-d-p))+"px";let M=S?t.top-b-y:t.bottom+b;D.style.top=Math.max(i+d,Math.min(M,i+m-d-Math.min(y,u)))+"px",D.dataset.placement=S?"top":"bottom"}function de(e){(e.timeOnly||e.dateTime&&e.anchor===e.fields[1].input?e.hours:e.calendar.querySelector('[data-date="'+e.focusDate+'"]')||e.monthSelect).focus({preventScroll:!0})}function J(e,t,n,r,i=!1){let a=pe(e,t,n,r);if(z(e,a),a)return e.dialogError.textContent=a,!1;let m=document.activeElement===e.clearButton&&!t&&!n&&!r,b=e.timeOnly?r:e.dateTime?t?t+"T"+r:"":t,d=e.range?e.start!==t||e.end!==n:e.value!==b;return e.range?(e.start=t,e.end=n,e.options.StartDate=t,e.options.EndDate=n):(e.value=b,e.options.Value=b),e.inputSignature=JSON.stringify(e.range?[e.start,e.end]:[e.value]),fe(e),i||T(e),m&&e.fields[0].input.focus({preventScroll:!0}),e.notice.textContent=e.range?t?k(e,t)+" to "+k(e,n):"Date range cleared":b?"Selected "+(e.timeOnly?I(b,e.cycle):k(e,t)+(e.hasTime?" at "+I(r,e.cycle):"")):"Selection cleared",d&&(e.range?Y(e,"Change",t,n):Y(e,"Change",b)),!0}function le(e,t=!1){if(e.options.IsDisabled||e.options.IsReadOnly)return;let n=e.timeOnly?"":re(e.fields[0].input.value,e.format),r=e.range?re(e.fields[1].input.value,e.format):"",i=e.hasTime?be(e.fields[e.timeOnly?0:1].input.value,e.cycle):"";if(n===null||r===null){z(e,"Enter a real date using "+e.format+".");return}if(i===null){z(e,e.cycle===12?"Enter a time such as 9:15 AM.":"Enter a time such as 14:30.");return}J(e,n,r,i,t)&&t&&(e.draftStart=n,e.draftEnd=r,e.draftTime=i,n&&(e.focusDate=n,e.month=n.slice(0,7)),A(e),Q(e),P(e),N(e))}function Me(e){let t=e.range||e.dateTime?2:1;e.fields=[];for(let n=0;n<t;n++){let r=l("div","blu-picker__field"),i=l("label"),a=l("input","blu-picker__input");a.type="text",a.id=e.uid+"-input-"+n,i.htmlFor=a.id,a.autocomplete="off",a.spellcheck=!1,c(a,"role","combobox"),c(a,"aria-haspopup","dialog"),c(a,"aria-expanded","false"),c(a,"aria-autocomplete","none"),c(a,"aria-controls",e.uid+"-dialog"),c(a,"aria-describedby",e.uid+"-hint "+e.uid+"-error "+e.uid+"-keyboard"),a.addEventListener("input",()=>{e.typedDirty=!0}),a.addEventListener("change",()=>le(e,e.isOpen)),a.addEventListener("pointerdown",d=>{d.pointerType==="mouse"&&(e.touchOpen=!1,a.inputMode="text"),(d.pointerType==="touch"||d.pointerType==="pen")&&e.manualInput!==a&&!e.options.IsDisabled&&!e.options.IsReadOnly&&(d.preventDefault(),e.touchOpen=!0,a.inputMode="none",B(e,a,!0))}),a.addEventListener("click",d=>{e.manualInput!==a&&(e.touchOpen?(d.preventDefault(),B(e,a,!0)):B(e,a,!1))}),a.addEventListener("blur",()=>{e.manualInput===a&&(e.manualInput=null)}),a.addEventListener("keydown",d=>{d.ctrlKey||d.metaKey||d.shiftKey||(d.key==="ArrowDown"&&(d.preventDefault(),B(e,a,!0)),d.key==="Enter"&&(d.preventDefault(),!e.isOpen&&!e.typedDirty?B(e,a,!0):le(e)),d.key==="Tab"&&T(e,!1))});let m=l("div","blu-picker__field-control"),b=c(l("span","blu-picker__field-icon"),"aria-hidden","true");b.innerHTML=e.timeOnly||e.dateTime&&n?'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><circle cx="12" cy="12" r="8.5"/><path d="M12 7v5l3 2"/></svg>':'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7"><rect x="4" y="5" width="16" height="16" rx="3"/><path d="M8 3v4m8-4v4M4 10h16m-11 4h2m3 0h2m-7 3h2"/></svg>',m.append(a,b),r.append(i,m),e.fields.push({field:r,label:i,input:a}),e.fieldRow.append(r)}}function s(e,t,n){let r=l("option","",n);return r.value=String(t),e.append(r),r}function F(e,t,n){let r=l("label","blu-picker__select-field"),i=l("span","blu-picker__select-caption",t),a=l("select","blu-picker__input");return a.id=e.uid+"-"+n,r.append(i,a),{wrap:r,select:a}}function we(e){var n,r;if(e.button!==0)return;let t=(r=(n=e.target).closest)==null?void 0:r.call(n,"button");!t||t.disabled||(e.preventDefault(),t.focus({preventScroll:!0}))}function H(e,t){var i;let n=E(e.options.Min)||"0001-01-01",r=E(e.options.Max)||"9999-12-31";t=t<n?n:t>r?r:t,v(t)&&(e.focusDate=t,e.month=t.slice(0,7),A(e),(i=e.calendar.querySelector('[data-date="'+t+'"]'))==null||i.focus({preventScroll:!0}))}function Ee(e,t,n){if(t.altKey||t.ctrlKey||t.metaKey)return;let r,i={ArrowLeft:-1,ArrowRight:1,ArrowUp:-7,ArrowDown:7};if(t.key in i)r=oe(n,i[t.key]);else if(t.key==="Home"||t.key==="End"){let a=(v(n).getDay()-e.firstDay+7)%7;r=oe(n,t.key==="Home"?-a:6-a)}else(t.key==="PageUp"||t.key==="PageDown")&&(r=ue(n,(t.key==="PageUp"?-1:1)*(t.shiftKey?12:1)));r&&(t.preventDefault(),H(e,r))}function me(e,t){var n;if(!K(e,t)){if(e.dialogError.textContent="",e.focusDate=t,e.range?e.rangeNext==="start"?(e.draftStart=t,e.draftEnd="",e.rangeNext="end"):(t<e.draftStart?(e.draftEnd=e.draftStart,e.draftStart=t):e.draftEnd=t,e.rangeNext="start"):e.draftStart=t,!e.hasTime&&!e.range){J(e,t,"","");return}A(e),(n=e.calendar.querySelector('[data-date="'+t+'"]'))==null||n.focus({preventScroll:!0}),P(e)}}function P(e){let t=e.range?e.draftStart?k(e,e.draftStart)+(e.draftEnd?" to "+k(e,e.draftEnd):" \u2014 choose an end date"):"Choose a start date":e.hasTime?(e.draftStart?k(e,e.draftStart)+" \xB7 ":"")+I(e.draftTime,e.cycle):"",n=r=>v(r)?new Intl.DateTimeFormat(e.locale,{month:"short",day:"numeric"}).format(v(r)):"";e.selectionSpeech.textContent=t,e.selectionVisual.textContent=e.range?e.draftStart?n(e.draftStart)+(e.draftEnd?" \u2013 "+n(e.draftEnd):" \u2014 choose end"):"Choose start date":e.dateTime?n(e.draftStart)+" \xB7 "+I(e.draftTime,e.cycle):e.timeOnly?I(e.draftTime,e.cycle):"",e.selection.hidden=!t}function A(e){let t=v(e.month+"-01");if(!t)return;let n=t.getFullYear(),r=t.getMonth(),i=Number(E(e.options.Min).slice(0,4))||1,a=Number(E(e.options.Max).slice(0,4))||9999;e.monthSelect.value=String(r),e.yearInput.value=String(n),c(e.yearInput,"aria-invalid",null),e.yearInput.min=String(i),e.yearInput.max=String(a);let m=new Intl.DateTimeFormat(e.locale,{month:"long",year:"numeric"}).format(t);e.caption.textContent!==m&&(e.caption.textContent=m);let b=(t.getDay()-e.firstDay+7)%7,d=new Date(n,r+1,0).getDate();if(e.focusDate.startsWith(e.month)||(e.focusDate=e.month+"-01"),!e.dayCells){let h=l("tbody");e.dayCells=[];for(let g=0;g<6;g++){let y=l("tr");for(let S=0;S<7;S++){let u=l("td"),f=O("",()=>me(e,f.dataset.date),"blu-picker__day");f.addEventListener("keydown",M=>Ee(e,M,f.dataset.date)),f.addEventListener("focus",()=>{e.focusDate=f.dataset.date;for(let M of e.dayCells)M.button.tabIndex=M.button===f?0:-1}),u.append(f),y.append(u),e.dayCells.push({cell:u,button:f})}h.append(y)}e.calendar.append(h)}for(let h=0;h<e.dayCells.length;h++){let{cell:g,button:y}=e.dayCells[h],S=h-b+1,u=S>0&&S<=d;if(y.hidden=!u,!u){y.tabIndex=-1,delete y.dataset.date,c(g,"aria-selected",null);continue}let f=e.month+"-"+w(S),M=f===e.draftStart||e.range&&f===e.draftEnd,R=e.range&&e.draftStart&&e.draftEnd&&f>e.draftStart&&f<e.draftEnd,o=K(e,f),x=!!(M||R),L=e.range&&M?f===e.draftStart?e.draftEnd?", range starts here; "+k(e,e.draftStart)+" to "+k(e,e.draftEnd):", start date; choose an end date":", range ends here; "+k(e,e.draftStart)+" to "+k(e,e.draftEnd):"",X=k(e,f)+(x?", selected":"")+L+(o?", unavailable":"");y.dataset.date=f,y.tabIndex=f===e.focusDate?0:-1,y.textContent!==String(S)&&(y.textContent=String(S)),y.getAttribute("aria-label")!==X&&c(y,"aria-label",X),c(g,"aria-selected",String(x)),c(y,"aria-disabled",o?"true":null),c(y,"aria-current",f===U()?"date":null),y.dataset.selected=String(M),y.dataset.between=String(!!R)}for(let h=0;h<6;h++)e.dayCells[h*7].cell.parentElement.hidden=h*7-b+1>d;let D=E(e.options.Min),p=E(e.options.Max);e.prev.disabled=!!D&&e.month<=D.slice(0,7)||n===1&&r===0,e.next.disabled=!!p&&e.month>=p.slice(0,7)||n===9999&&r===11,e.todayButton.hidden=e.timeOnly||e.options.ShowToday===!1,e.todayButton.disabled=!!K(e,U())}function Q(e){if(!e.hasTime)return;let[t,n]=(e.draftTime||"09:00").split(":").map(Number);e.hours.replaceChildren(),e.minutes.replaceChildren();for(let r=0;r<(e.cycle===12?12:24);r++)s(e.hours,e.cycle===12?r+1:r,w(e.cycle===12?r+1:r));for(let r=0;r<60;r+=e.step)s(e.minutes,r,w(r));n%e.step&&s(e.minutes,n,w(n)+" (entered)"),e.hours.value=String(e.cycle===12?t%12||12:t),e.minutes.value=String(n),e.period.value=t<12?"AM":"PM",e.periodField.hidden=e.cycle!==12,P(e)}function B(e,t=e.fields[0].input,n=!0){if(e.options.IsDisabled||e.options.IsReadOnly)return;if(e.anchor=t,e.manualInput=null,e.typeButton.hidden=!e.touchOpen,e.isOpen){e.range&&(e.rangeNext=t===e.fields[1].input&&e.draftStart?"end":"start"),N(e),n&&de(e);return}e.draftStart=e.timeOnly?"":e.range?e.start:E(e.value),e.draftEnd=e.end||"",e.draftTime=e.timeOnly?e.value:q(e.value),e.hasTime&&!V(e.draftTime)&&(e.draftTime="09:00"),e.rangeNext="start",e.range&&t===e.fields[1].input&&e.draftStart&&(e.rangeNext="end");let r=e.range&&e.rangeNext==="end"?e.draftEnd:e.draftStart;e.focusDate=v(r)?r:v(e.draftStart)?e.draftStart:U();let i=E(e.options.Min),a=E(e.options.Max);e.timeOnly||(i&&e.focusDate<i&&(e.focusDate=i),a&&e.focusDate>a&&(e.focusDate=a)),e.month=e.focusDate.slice(0,7),e.dialogError.textContent="",A(e),Q(e),P(e),e.isOpen=!0,e.dialog.hidden=!1,e.dialog.showPopover&&e.dialog.showPopover(),e.dialog.scrollTop=0;for(let{input:m}of e.fields)c(m,"aria-expanded","true");N(e),n&&e.isOpen&&de(e),Y(e,"OpenChanged",!0)}function xe(e){var y,S;e.range=e.kind==="DateRangePicker",e.timeOnly=e.kind==="TimePicker",e.dateTime=e.kind==="DateTimePicker",e.hasTime=e.timeOnly||e.dateTime,e.root.className="blu-picker",e.fieldRow=l("div","blu-picker__fields"),e.error=c(l("div","blu-picker__error"),"role","alert"),e.error.id=e.uid+"-error",e.error.hidden=!0,e.hint=l("div","blu-picker__hint"),e.hint.id=e.uid+"-hint",e.actions=l("div","blu-picker__actions"),e.clearButton=O("Clear",()=>J(e,"","","")),e.actions.append(e.clearButton),e.root.append(e.fieldRow,e.hint,e.actions,e.error),Me(e);let t=l("span","blu-advanced-sr","Click the field or press Down Arrow to browse. Escape closes the popup.");t.id=e.uid+"-keyboard",e.root.append(t),e.dialog=l("div","blu-picker__dialog blu-picker__popup"),e.dialog.id=e.uid+"-dialog",e.dialog.hidden=!0,c(e.dialog,"role","dialog"),c(e.dialog,"aria-labelledby",e.uid+"-title"),c(e.dialog,"aria-modal","false"),e.dialog.showPopover&&c(e.dialog,"popover","manual"),e.root.append(e.dialog),e.dialog.addEventListener("mousedown",we),e.title=l("h2","blu-advanced-sr"),e.title.id=e.uid+"-title",e.dialog.append(e.title),e.presets=l("div","blu-picker__presets"),e.dialog.append(e.presets),e.calendarArea=l("div","blu-picker__calendar-area"),e.calendarArea.hidden=e.timeOnly,e.dialog.append(e.calendarArea);let n=l("div","blu-picker__calendar-nav"),r=F(e,"Month","month");e.monthSelect=r.select;let i=l("label","blu-picker__select-field");i.append(l("span","blu-picker__select-caption","Year")),e.yearInput=l("input","blu-picker__input"),e.yearInput.type="number",e.yearInput.step="1",i.append(e.yearInput);let a=u=>{let f=ue(e.focusDate,u);H(e,f)};e.prev=O("\u2039",()=>a(-1)),c(e.prev,"aria-label","Previous month"),e.next=O("\u203A",()=>a(1)),c(e.next,"aria-label","Next month"),n.append(e.prev,r.wrap,i,e.next),e.calendarArea.append(n),e.monthSelect.addEventListener("change",()=>H(e,String(e.yearInput.value).padStart(4,"0")+"-"+w(+e.monthSelect.value+1)+"-01")),e.yearInput.addEventListener("change",()=>{let u=Number(e.yearInput.value);if(!Number.isInteger(u)||u<+e.yearInput.min||u>+e.yearInput.max){e.dialogError.textContent="Enter a year from "+e.yearInput.min+" to "+e.yearInput.max+".",c(e.yearInput,"aria-invalid","true");return}c(e.yearInput,"aria-invalid",null),e.dialogError.textContent="",H(e,String(u).padStart(4,"0")+"-"+w(+e.monthSelect.value+1)+"-01")}),e.caption=c(l("h3","blu-picker__caption blu-advanced-sr"),"aria-live","polite"),e.caption.id=e.uid+"-caption",e.calendarArea.append(e.caption),e.calendar=c(l("table","blu-picker__calendar"),"role","grid"),c(e.calendar,"aria-labelledby",e.caption.id),e.range&&c(e.calendar,"aria-multiselectable","true"),e.calendarArea.append(e.calendar),e.todayButton=O("Today",()=>{e.focusDate=U(),e.month=e.focusDate.slice(0,7),me(e,e.focusDate)}),e.calendarArea.append(l("p","blu-advanced-sr","Arrow keys move by day or week. Home/End move within the week. Page Up/Down change month; hold Shift to change year.")),e.timeArea=l("div","blu-picker__time-area"),e.timeArea.hidden=!e.hasTime,e.dialog.append(e.timeArea);let m=F(e,"Hour","hour"),b=F(e,"Minute","minute"),d=F(e,"AM / PM","period");e.hours=m.select,e.minutes=b.select,e.period=d.select,e.periodField=d.wrap,s(e.period,"AM","AM"),s(e.period,"PM","PM"),e.timeArea.append(m.wrap,b.wrap,d.wrap);for(let u of[e.hours,e.minutes,e.period])u.addEventListener("change",()=>{let f=+e.hours.value;e.cycle===12&&(f=f%12+(e.period.value==="PM"?12:0)),e.draftTime=w(f)+":"+w(+e.minutes.value),e.dialogError.textContent="",P(e)});e.selection=c(l("div","blu-picker__selection"),"role","status"),c(e.selection,"aria-atomic","true"),e.selectionSpeech=l("span","blu-advanced-sr"),e.selectionVisual=c(l("span"),"aria-hidden","true"),e.selection.append(e.selectionSpeech,e.selectionVisual),e.dialogError=c(l("div","blu-picker__error"),"role","alert"),e.dialogError.id=e.uid+"-dialog-error",c(e.yearInput,"aria-describedby",e.dialogError.id),e.apply=O("Apply",()=>J(e,e.draftStart,e.draftEnd,e.draftTime),"blu-picker__button blu-picker__button--primary"),e.apply.hidden=!e.range&&!e.hasTime,e.typeButton=O("Type",()=>{let u=e.anchor;T(e,!1),e.manualInput=u,u.inputMode="text",u.focus({preventScroll:!0})}),c(e.typeButton,"aria-label","Type a date or time"),e.typeButton.hidden=!0;let D=l("div","blu-picker__popup-actions");D.append(e.typeButton,e.todayButton,O("Cancel",()=>T(e)),e.apply),e.dialog.append(e.selection,e.dialogError,D);let p=u=>{e.isOpen&&!e.root.contains(u.target)&&T(e,!1)},h=u=>{e.isOpen&&u.key==="Escape"&&!u.defaultPrevented&&(u.preventDefault(),u.stopPropagation(),T(e))},g=u=>{!e.isOpen||e.dialog.contains(u==null?void 0:u.target)||(cancelAnimationFrame(e.positionFrame),e.positionFrame=requestAnimationFrame(()=>N(e)))};document.addEventListener("pointerdown",p,!0),document.addEventListener("focusin",p),e.root.addEventListener("keydown",h),window.addEventListener("resize",g),document.addEventListener("scroll",g,!0),(y=window.visualViewport)==null||y.addEventListener("resize",g),(S=window.visualViewport)==null||S.addEventListener("scroll",g),window.ResizeObserver&&(e.popupObserver=new ResizeObserver(()=>g()),e.popupObserver.observe(e.fieldRow),e.popupObserver.observe(e.dialog)),e.dispose=()=>{var u,f,M;T(e,!1),cancelAnimationFrame(e.positionFrame),(u=e.popupObserver)==null||u.disconnect(),document.removeEventListener("pointerdown",p,!0),document.removeEventListener("focusin",p),e.root.removeEventListener("keydown",h),window.removeEventListener("resize",g),document.removeEventListener("scroll",g,!0),(f=window.visualViewport)==null||f.removeEventListener("resize",g),(M=window.visualViewport)==null||M.removeEventListener("scroll",g)}}function ke(e){var h,g,y,S,u,f,M,R;let t=JSON.stringify(e.options);if(e.renderSignature===t)return;let n=e.isOpen?document.activeElement:null,r=(h=n==null?void 0:n.dataset)==null?void 0:h.date,i=n==null?void 0:n.id,a=e.options;if(e.label=String(a.Label||{DatePicker:"Date",TimePicker:"Time",DateTimePicker:"Date and time",DateRangePicker:"Date range"}[e.kind]),e.locale=String(a.Locale||"en-US"),new Intl.DateTimeFormat(e.locale),e.format=ve.includes(a.DateFormat)?a.DateFormat:"YYYY-MM-DD",e.cycle=Number(a.HourCycle)===12?12:24,e.step=Number((g=a.MinuteStep)!=null?g:15),!Number.isInteger(e.step)||e.step<1||e.step>60)throw Error("MinuteStep must be a whole number from 1 to 60.");if(e.firstDay=Number((y=a.FirstDayOfWeek)!=null?y:1),!Number.isInteger(e.firstDay)||e.firstDay<0||e.firstDay>6)throw Error("FirstDayOfWeek must be 0\u20136.");e.disabledDates=new Set(ae((S=a.DisabledDatesJson)!=null?S:a.DisabledDates,"DisabledDates").map(o=>typeof o=="string"?o:o.Date));for(let o of e.disabledDates)if(!v(o))throw Error("DisabledDates must contain ISO calendar dates.");for(let o of["Min","Max"])if(a[o]&&!(e.timeOnly?V(a[o]):v(E(a[o]))&&(!e.dateTime||V(q(a[o])))))throw Error(o+" must use the documented ISO value format.");if(a.Min&&a.Max&&a.Min>a.Max)throw Error("Min must be on or before Max.");for(let o of["MinRangeDays","MaxRangeDays"])if(a[o]!==void 0&&(!Number.isInteger(Number(a[o]))||Number(a[o])<0))throw Error(o+" must be a non-negative whole number.");if(a.MinRangeDays&&a.MaxRangeDays&&Number(a.MinRangeDays)>Number(a.MaxRangeDays))throw Error("MinRangeDays must not exceed MaxRangeDays.");let m=e.range?[String(a.StartDate||""),String(a.EndDate||"")]:[String(a.Value||"")],b=JSON.stringify(m),d=b!==e.inputSignature;if(e.inputSignature=b,e.range?(e.start=m[0],e.end=m[1]):e.value=m[0],e.fields.forEach((o,x)=>{o.label.textContent=e.range?e.label+(x?" \u2014 end":" \u2014 start"):e.dateTime?e.label+(x?" \u2014 time":" \u2014 date"):e.label,o.input.disabled=!!a.IsDisabled,o.input.readOnly=!!a.IsReadOnly,o.input.required=!!a.IsRequired,o.input.placeholder=String(a.Placeholder||(e.timeOnly||e.dateTime&&x?e.cycle===12?"9:00 AM":"09:00":e.format))}),e.hint.textContent=e.timeOnly?(e.cycle===12?"h:mm AM/PM":"HH:mm")+" \xB7 local time":e.format+(e.dateTime?" \xB7 "+(e.cycle===12?"h:mm AM/PM":"HH:mm")+" local time":""),e.title.textContent=e.label,e.clearButton.disabled=!!a.IsDisabled||!!a.IsReadOnly,d||e.previousFormat!==e.format||e.previousCycle!==e.cycle){fe(e);let o=m.some(Boolean);z(e,o?pe(e,e.timeOnly?"":e.range?e.start:E(e.value),e.end||"",e.timeOnly?e.value:q(e.value)):""),e.previousFormat=e.format,e.previousCycle=e.cycle}e.monthSelect.replaceChildren();for(let o=0;o<12;o++)s(e.monthSelect,o,new Intl.DateTimeFormat(e.locale,{month:"long"}).format(new Date(2024,o,1)));(u=e.calendar.tHead)==null||u.remove();let D=l("thead"),p=l("tr");for(let o=0;o<7;o++){let x=new Date(2024,0,7+(o+e.firstDay)%7),L=l("th","",new Intl.DateTimeFormat(e.locale,{weekday:"short"}).format(x));L.scope="col",L.abbr=new Intl.DateTimeFormat(e.locale,{weekday:"long"}).format(x),p.append(L)}if(D.append(p),e.calendar.prepend(D),e.presets.replaceChildren(),e.presets.hidden=!e.range,e.range)for(let o of ae((f=a.PresetsJson)!=null?f:a.Presets,"Presets")){if(!o.Label||!v(o.StartDate)||!v(o.EndDate))throw Error("Presets need Label, StartDate and EndDate.");let x=O(o.Label,()=>{e.draftStart=o.StartDate,e.draftEnd=o.EndDate,e.rangeNext="start",e.focusDate=e.draftStart,e.month=e.focusDate.slice(0,7),e.dialogError.textContent="",A(e),P(e)});x.disabled=!!ce(o.StartDate,o.EndDate,{...a,disabled:e.disabledDates}),e.presets.append(x)}e.isOpen&&(a.IsDisabled||a.IsReadOnly||d?T(e):(A(e),Q(e),r?(M=e.calendar.querySelector('[data-date="'+r+'"]'))==null||M.focus({preventScroll:!0}):i&&((R=document.getElementById(i))==null||R.focus({preventScroll:!0})),N(e))),e.renderSignature=t}var he=()=>ye("TimePicker",xe,ke);he();})();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import './form-layout.css';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./chunk-FNX33PDD.js";import{c as a}from"./chunk-GXHANADL.js";import"./chunk-EOKNLCNS.js";export{a as createRadioButton};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import './form-layout.css';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./chunk-IO22GWON.js";import{d as a}from"./chunk-GXHANADL.js";import"./chunk-EOKNLCNS.js";export{a as createRadioGroup};
|
package/dist/select.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import './form-layout.css';
|
package/dist/select.d.ts
ADDED
package/dist/select.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a}from"./chunk-MYVLBALF.js";import"./chunk-EOKNLCNS.js";export{a as createSelect};
|