@blukavantui/community 1.0.1 → 1.2.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 +234 -44
- package/dist/checkbox.css +1 -0
- package/dist/checkbox.d.ts +2 -0
- package/dist/checkbox.js +1 -0
- package/dist/chunk-2BSBXDOT.js +1 -0
- package/dist/chunk-4LHIQROI.js +0 -0
- package/dist/chunk-5ENZVZGF.js +0 -0
- package/dist/chunk-6T677NSC.js +1 -0
- package/dist/chunk-7CEOCZ5L.js +0 -0
- package/dist/chunk-7DXFNK7C.js +1 -0
- package/dist/chunk-AL2ETLJV.js +1 -0
- package/dist/chunk-BN3PDE5G.js +0 -0
- package/dist/chunk-CNIIMGT3.js +0 -0
- package/dist/chunk-CSTCEBEK.js +1 -0
- package/dist/chunk-DRZM2AL3.js +0 -0
- package/dist/chunk-EOKNLCNS.js +1 -0
- package/dist/chunk-EPPETNK6.js +1 -0
- package/dist/chunk-EPPSBHZR.js +1 -0
- package/dist/chunk-EPZGLHPD.js +0 -0
- package/dist/chunk-FNX33PDD.js +0 -0
- package/dist/{chunk-NTFHNL7T.js → chunk-G6OW4OZM.js} +1 -1
- package/dist/chunk-GS67ZBLI.js +1 -0
- package/dist/chunk-HO6CYWED.js +0 -0
- package/dist/{chunk-6EHKOVZK.js → chunk-HVR2UDFX.js} +1 -1
- package/dist/chunk-IJ62ILKE.js +0 -0
- package/dist/chunk-IKYBFMHI.js +1 -0
- package/dist/chunk-IO22GWON.js +0 -0
- package/dist/chunk-KVOA55NE.js +0 -0
- package/dist/{chunk-MZBB5ROJ.js → chunk-LF2HELEZ.js} +1 -1
- package/dist/chunk-MYVLBALF.js +1 -0
- package/dist/{chunk-UEOCR2C3.js → chunk-OLDA73XG.js} +2 -2
- package/dist/chunk-RWBLICYX.js +0 -0
- package/dist/chunk-RYD6RHRX.js +0 -0
- package/dist/chunk-T45FJNEQ.js +1 -0
- package/dist/chunk-TZSX4OTV.js +1 -0
- package/dist/chunk-UN2SLVFG.js +1 -0
- package/dist/{chunk-GK3INPAZ.js → chunk-V2YPIC6Z.js} +1 -1
- package/dist/chunk-V4ZQLQ7L.js +0 -0
- package/dist/chunk-VAM3FPCS.js +0 -0
- package/dist/chunk-VJVFHL6P.js +0 -0
- package/dist/chunk-VSTKXZYY.js +0 -0
- package/dist/chunk-W3H7XTA7.js +1 -0
- package/dist/chunk-WG4US4JH.js +1 -0
- package/dist/chunk-WGSTNXAQ.js +0 -0
- package/dist/chunk-WJHCVECU.js +1 -0
- package/dist/chunk-XVMJG26X.js +1 -0
- package/dist/chunk-Y4AXWTAD.js +0 -0
- package/dist/chunk-YCLR3IE3.js +0 -0
- package/dist/chunk-YLFXSHKZ.js +0 -0
- package/dist/chunk-ZDGZGAYG.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/command-palette.js +1 -1
- package/dist/component-motion.css +39 -0
- package/dist/component-motion.d.ts +45 -0
- package/dist/component-motion.js +1 -0
- package/dist/content.js +1 -1
- package/dist/core.css +8 -0
- package/dist/core.js +1 -1
- package/dist/data-motion.css +4 -0
- package/dist/data-motion.d.ts +23 -0
- package/dist/data-motion.js +1 -0
- 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/drawer.js +1 -1
- package/dist/essentials.css +8 -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/modal.js +1 -1
- package/dist/motion/action-feedback.d.ts +14 -0
- package/dist/motion/border-glow.d.ts +12 -0
- package/dist/motion/button.d.ts +11 -0
- package/dist/motion/component-settings.d.ts +51 -0
- package/dist/motion/controller.d.ts +33 -0
- package/dist/motion/effects.d.ts +30 -0
- package/dist/motion/feedback.d.ts +6 -0
- package/dist/motion/loading.d.ts +9 -0
- package/dist/motion/optional.d.ts +35 -0
- package/dist/motion/photo.d.ts +7 -0
- package/dist/motion/presence.d.ts +12 -0
- package/dist/motion/scene.d.ts +10 -0
- package/dist/motion/screen.d.ts +6 -0
- package/dist/motion/scroll-reveal.d.ts +13 -0
- package/dist/motion/settings-group.d.ts +14 -0
- package/dist/motion/stagger.d.ts +12 -0
- package/dist/motion/structure.d.ts +18 -0
- package/dist/motion/tabs.d.ts +19 -0
- package/dist/motion/tokens.d.ts +11 -0
- package/dist/motion/value.d.ts +21 -0
- package/dist/motion/view-transition.d.ts +14 -0
- package/dist/motion-enhancers.d.ts +12 -0
- package/dist/motion-enhancers.js +1 -0
- package/dist/motion-settings.d.ts +3 -0
- package/dist/motion-settings.js +1 -0
- package/dist/motion.css +1076 -0
- package/dist/motion.d.ts +20 -0
- package/dist/motion.js +1 -0
- 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/native-motion-components.d.ts +3 -0
- package/dist/native-motion-content.d.ts +1 -0
- package/dist/native-motion-foundations.d.ts +3 -0
- package/dist/native-motion-layout.d.ts +3 -0
- package/dist/native-motion-pilot.d.ts +34 -0
- package/dist/native-motion.d.ts +71 -0
- package/dist/notification.js +1 -1
- package/dist/pagination.js +1 -1
- 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/sidebar.js +1 -1
- package/dist/sizes.json +416 -112
- package/dist/skeleton.css +8 -0
- package/dist/styles.css +1213 -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/dist/tree-view.js +1 -1
- package/dist/web-motion/chip-ripple.d.ts +6 -0
- package/dist/web-motion/choice-ripple.d.ts +6 -0
- package/dist/web-motion/content.d.ts +9 -0
- package/dist/web-motion/data-rows.d.ts +12 -0
- package/dist/web-motion/fields.d.ts +6 -0
- package/dist/web-motion/navigation.d.ts +6 -0
- package/dist/web-motion/notifications.d.ts +6 -0
- package/dist/web-motion/select-ripple.d.ts +6 -0
- package/dist/web-motion/statistic.d.ts +13 -0
- package/dist/web-motion/surfaces.d.ts +10 -0
- package/dist/web-motion/tree.d.ts +6 -0
- 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 +102 -10
- package/scripts/build-motion-css.mjs +36 -0
- package/scripts/build-motion-styles.mjs +29 -0
- package/scripts/build.mjs +20 -8
- package/scripts/motion-entries.mjs +2 -0
- 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/component-motion.ts +101 -0
- package/src/data-motion.ts +60 -0
- package/src/data.ts +1 -0
- package/src/form-field.ts +2 -0
- package/src/form-layout/choice.ts +82 -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/motion/action-feedback.ts +38 -0
- package/src/motion/border-glow.ts +41 -0
- package/src/motion/button.ts +56 -0
- package/src/motion/component-settings.ts +147 -0
- package/src/motion/controller.ts +191 -0
- package/src/motion/effects.ts +75 -0
- package/src/motion/feedback.ts +41 -0
- package/src/motion/loading.ts +40 -0
- package/src/motion/optional.ts +123 -0
- package/src/motion/photo.ts +19 -0
- package/src/motion/presence.ts +44 -0
- package/src/motion/scene.ts +103 -0
- package/src/motion/screen.ts +15 -0
- package/src/motion/scroll-reveal.ts +49 -0
- package/src/motion/settings-group.ts +28 -0
- package/src/motion/stagger.ts +26 -0
- package/src/motion/structure.ts +75 -0
- package/src/motion/tabs.ts +105 -0
- package/src/motion/tokens.ts +2 -0
- package/src/motion/value.ts +61 -0
- package/src/motion/view-transition.ts +57 -0
- package/src/motion-enhancers.ts +12 -0
- package/src/motion-settings.ts +3 -0
- package/src/motion.ts +20 -0
- package/src/native-components/form-layout.ts +21 -0
- package/src/native-motion-components.ts +76 -0
- package/src/native-motion-content.ts +10 -0
- package/src/native-motion-foundations.ts +56 -0
- package/src/native-motion-layout.ts +35 -0
- package/src/native-motion-pilot.ts +151 -0
- package/src/native-motion.ts +188 -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/src/web-motion/chip-ripple.ts +31 -0
- package/src/web-motion/choice-ripple.ts +30 -0
- package/src/web-motion/content.ts +74 -0
- package/src/web-motion/data-rows.ts +106 -0
- package/src/web-motion/fields.ts +52 -0
- package/src/web-motion/navigation.ts +62 -0
- package/src/web-motion/notifications.ts +67 -0
- package/src/web-motion/select-ripple.ts +23 -0
- package/src/web-motion/statistic.ts +23 -0
- package/src/web-motion/surfaces.ts +137 -0
- package/src/web-motion/tree.ts +44 -0
- 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/component-motion.css +39 -0
- package/styles/data-motion.css +4 -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/motion-optional.css +15 -0
- package/styles/motion-presets.css +92 -0
- package/styles/motion-tokens.css +6 -0
- package/styles/motion.css +125 -0
- package/styles/radio-button.css +1 -0
- package/styles/radio-group.css +1 -0
- package/styles/select.css +1 -0
- package/styles/skeleton.css +8 -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/component-motion-settings.test.mjs +35 -0
- package/test/content-overlay-motion.test.mjs +36 -0
- package/test/form-layout.test.mjs +28 -0
- package/test/isolation.test.mjs +2 -2
- package/test/motion.test.mjs +215 -0
- 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
- /package/dist/{chunk-H7ETPJVW.js → chunk-3PODK22R.js} +0 -0
- /package/dist/{chunk-SIU7DSOA.js → chunk-KBWB4OIF.js} +0 -0
package/dist/motion.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Experimental web-only 1.2 entry. Not exported by the published 1.1.0 package. */
|
|
2
|
+
export * from './motion/controller.js';
|
|
3
|
+
export * from './motion/view-transition.js';
|
|
4
|
+
export * from './motion/button.js';
|
|
5
|
+
export * from './motion/loading.js';
|
|
6
|
+
export * from './motion/effects.js';
|
|
7
|
+
export * from './motion/presence.js';
|
|
8
|
+
export * from './motion/stagger.js';
|
|
9
|
+
export * from './motion/scroll-reveal.js';
|
|
10
|
+
export * from './motion/structure.js';
|
|
11
|
+
export * from './motion/feedback.js';
|
|
12
|
+
export * from './motion/value.js';
|
|
13
|
+
export * from './motion/scene.js';
|
|
14
|
+
export * from './motion/photo.js';
|
|
15
|
+
export * from './motion/border-glow.js';
|
|
16
|
+
export * from './motion/tabs.js';
|
|
17
|
+
export * from './motion/action-feedback.js';
|
|
18
|
+
export * from './motion/screen.js';
|
|
19
|
+
export * from './motion/tokens.js';
|
|
20
|
+
export * from './motion/optional.js';
|
package/dist/motion.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as ce}from"./chunk-7DXFNK7C.js";import{a as j,c as U}from"./chunk-SDMH2EVD.js";import{a as ae,b as W,c as _,d as Z,e as se,f as le}from"./chunk-CSTCEBEK.js";import{a as be,b as ge,c as ye,d as he,e as Me,f as we,g as ve,h as Ee}from"./chunk-IKYBFMHI.js";import{a as R,b as de,c as ue,d as fe,e as me,f as pe,g as J}from"./chunk-6T677NSC.js";var K=Object.freeze({fast:280,normal:450,slow:750,layout:650,highlight:1400,reduced:200,maxDuration:2e3,maxDelay:500});var $=new WeakSet;function te(e,t){return e==="off"?"off":e==="reduced"||t?"reduced":"full"}function B(e,t,n=2e3){return e!==void 0&&Number.isFinite(e)?Math.min(n,Math.max(0,e)):t}function re(e,t){let n=/^([\d.]+)(ms|s)$/.exec(e.trim());return n?B(Number(n[1])*(n[2]==="s"?1e3:1),t):t}function Le(e,t="system"){if(!["system","reduced","off"].includes(t))throw new Error("Unknown motion preference.");if($.has(e))throw new Error("This scope already has a motion controller.");let n=e.ownerDocument.defaultView;if(!n)throw new Error("A browser document is required.");let c=n.matchMedia("(prefers-reduced-motion: reduce)"),l=e.getAttribute("data-blu-motion"),a=new Map,i=t,o=!1,d=()=>te(i,c.matches);function u(){e.setAttribute("data-blu-motion",d());for(let r of Array.from(a.values()))r.cancel()}$.add(e),c.addEventListener("change",u),u();function b(r){if(!e.contains(r))throw new Error("Motion target must be inside its controller scope.");return d()==="full"&&!r.closest?.('[data-blu-motion="off"], [data-blu-motion="reduced"], .blu-motion-off')}let y={get mode(){return d()},get preference(){return i},setPreference(r){if(o)throw new Error("Motion controller is destroyed.");if(!["system","reduced","off"].includes(r))throw new Error("Unknown motion preference.");i=r,u()},cancel(r){a.get(r)?.cancel()},animate(r,h,p={},f="instant"){if(o)return Promise.resolve("cancelled");let w=b(r);if(a.get(r)?.cancel(),!w)return f==="fade"&&d()!=="off"&&!r.closest('.blu-motion-off, [data-blu-motion="off"]')?y.play(r,"fade",{...p,duration:Math.min(p.duration??200,200),delay:0}):Promise.resolve("finished");let v=B(p.duration,K.normal);return!v||!r.animate?Promise.resolve("finished"):new Promise(s=>{let m=r.animate(h,{duration:v,delay:B(p.delay,0,500),easing:_[p.easing||"standard"],fill:"both"}),M=!1,g={cancel:()=>E("cancelled")};function E(L){M||(M=!0,a.get(r)===g&&a.delete(r),m.cancel(),s(L))}a.set(r,g),m.finished.then(()=>E("finished"),()=>E("cancelled"))})},tween(r,h,p,f,w={}){if(!Number.isFinite(h)||!Number.isFinite(p))throw new Error("Numeric motion requires finite values.");if(o)return Promise.resolve("cancelled");let v=b(r);a.get(r)?.cancel();let s=B(w.duration,K.normal),m=B(w.delay,0,500);return!v||!s||!n.requestAnimationFrame?(f(p),Promise.resolve("finished")):new Promise((M,g)=>{let E=0,L,k=!1,C={cancel:()=>x("cancelled")};function x(V){k||(k=!0,n.cancelAnimationFrame(E),a.get(r)===C&&a.delete(r),M(V))}function S(V){if(k)return;L??(L=V);let T=Math.min(1,Math.max(0,(V-L-m)/s));try{f(T===1?p:h+(p-h)*ne(T,w.easing||"standard"))}catch(F){k=!0,a.delete(r),g(F);return}T===1?x("finished"):E=n.requestAnimationFrame(S)}a.set(r,C),E=n.requestAnimationFrame(S)})},play(r,h="fade",p={}){if(o)return Promise.resolve("cancelled");if(!e.contains(r))throw new Error("Motion target must be inside its controller scope.");if(a.get(r)?.cancel(),d()==="off"||r.closest?.('.blu-motion-off, [data-blu-motion="off"]')||!r.animate)return Promise.resolve("finished");let f=d()==="reduced"||!!r.closest?.('[data-blu-motion="reduced"]'),w=n.getComputedStyle(r),v=B(p.duration,re(w.getPropertyValue("--blu-motion-duration"),K.normal)),s=f?Math.min(v||(p.duration===0?0:200),200):v;if(!s)return Promise.resolve("finished");let m=w.getPropertyValue("--blu-motion-distance").trim()||"12px",M=Z(f?"fade":h,p.phase,m);if(!f&&p.origin){if(!(p.origin in W))throw new Error("Unknown motion origin.");for(let E of M)E.transformOrigin=W[p.origin]}let g=p.easing?_[p.easing]:w.getPropertyValue("--blu-motion-ease").trim()||_.standard;if(!g)throw new Error("Unknown motion easing.");return new Promise(E=>{let L=!1,k=r.animate(M,{duration:s,delay:f?0:B(p.delay,0,500),easing:f?_["ease-out"]:g,fill:"both"}),C={cancel:()=>x("cancelled")};function x(S){L||(L=!0,a.get(r)===C&&a.delete(r),k.cancel(),E(S))}a.set(r,C),k.finished.then(()=>x("finished"),()=>x("cancelled"))})},destroy(){if(!o){o=!0,c.removeEventListener("change",u);for(let r of Array.from(a.values()))r.cancel();l===null?e.removeAttribute("data-blu-motion"):e.setAttribute("data-blu-motion",l),$.delete(e)}}};return y}function ne(e,t){if(e<=0)return 0;if(e>=1)return 1;if(t==="linear")return e;let[n,c,l,a]=_[t].match(/[\d.]+/g).map(Number),i=(u,b,y)=>3*(1-u)**2*u*b+3*(1-u)*u*u*y+u**3,o=0,d=1;for(let u=0;u<20;u++){let b=(o+d)/2;i(b,n,l)<e?o=b:d=b}return i((o+d)/2,c,a)}function ke(e,t){let n=0,c=!1,l=e.getAttribute("aria-busy"),a=()=>l===null?e.removeAttribute("aria-busy"):e.setAttribute("aria-busy",l);return{async show(i,o={}){if(c)return"cancelled";if(i.contains(e)||i===e)throw new Error("A view cannot contain its outlet.");let d=++n,u=e.ownerDocument.defaultView.getComputedStyle(e).opacity;t.cancel(e),e.setAttribute("aria-busy","true");let b=()=>!c&&d===n;try{if(o.effect!=="instant"&&await t.animate(e,[{opacity:u},{opacity:0}],{phase:"exit",duration:280,easing:"ease-in-out"},"fade"),!b())return"cancelled";let y=e.ownerDocument.activeElement,r=!!y&&e.contains(y),h=y?.getAttribute("data-focus-key"),p=e.scrollTop,f=e.scrollLeft;if(e.replaceChildren(i),e.scrollTop=o.scroll==="top"?0:p,e.scrollLeft=o.scroll==="top"?0:f,r){let v=(h?Array.from(i.querySelectorAll("[data-focus-key]")).find(s=>s.getAttribute("data-focus-key")===h):void 0)||i.querySelector("[data-view-heading]")||i;!v.hasAttribute("tabindex")&&!v.matches("button,input,select,textarea,a[href]")&&(v.tabIndex=-1),v.focus({preventScroll:!0})}return o.effect!=="instant"&&await t.play(e,o.effect||"fade",{duration:o.duration??450,easing:"ease-in-out"}),b()?"finished":"cancelled"}finally{b()&&a()}},cancel(){++n,t.cancel(e),a()},destroy(){c||(c=!0,++n,t.cancel(e),a())}}}function oe(e){return e!==void 0&&Number.isFinite(e)?Math.min(100,Math.max(0,e)):void 0}function Re(e,t){let n=U(e),c=j("span"),l=j("span","blu-loading__visual"),a=j("progress"),i=j("span","blu-loading__bar"),o={...t},d=!1;n.className="blu-loading",c.id=n.id+"-label",l.setAttribute("aria-hidden","true");for(let b=0;b<3;b++)l.append(j("i"));a.max=100,a.setAttribute("aria-labelledby",c.id),i.setAttribute("role","progressbar"),i.setAttribute("aria-labelledby",c.id),n.append(l,a,i,c);function u(b){if(d)throw new Error("Loading indicator is destroyed.");o={...o,...b};let y=oe(o.Progress),r=y!==void 0||o.Variant==="Bar";n.dataset.variant=r?"Bar":o.Variant||"Spinner",c.textContent=o.Label,l.hidden=r,a.hidden=y===void 0,i.hidden=!r||y!==void 0,r?(n.removeAttribute("role"),n.removeAttribute("aria-labelledby")):(n.setAttribute("role","status"),n.setAttribute("aria-labelledby",c.id)),y===void 0?a.removeAttribute("value"):a.value=y}return u({}),{element:n,update:u,destroy(){d||(d=!0,n.remove())}}}function Oe(e,t){let n=e.hidden,c=e.inert,l=0,a=!1;return{async show(i={}){if(a)return"cancelled";let o=++l;return t.cancel(e),e.hidden=!1,e.inert=c,await t.play(e,i.effect||"fade",{...i,phase:"enter"}),!a&&l===o?"finished":"cancelled"},async hide(i={}){if(a)return"cancelled";if(e.contains(e.ownerDocument.activeElement)){let d=i.focusFallback;if(!d?.isConnected||e.contains(d))throw new Error("Provide a connected focusFallback outside the closing element.");if(d.focus({preventScroll:!0}),e.contains(e.ownerDocument.activeElement))throw new Error("focusFallback must be focusable.")}let o=++l;return t.cancel(e),e.inert=!0,e.hidden||await t.play(e,i.effect||"fade",{...i,phase:"exit"}),a||l!==o?"cancelled":(e.hidden=!0,"finished")},destroy(){a||(a=!0,++l,t.cancel(e),e.hidden=n,e.inert=c)}}}function ie(e,t="forward",n=1){if(!Number.isInteger(e)||e<0)throw Error("Stagger count must be a nonnegative integer.");if(!["forward","reverse","center","rows","columns"].includes(t))throw Error("Unknown stagger order.");if(!Number.isInteger(n)||n<1)throw Error("Stagger columns must be a positive integer.");return Array.from({length:e},(c,l)=>t==="reverse"?e-1-l:t==="center"?Math.floor(Math.abs(l-(e-1)/2)):t==="rows"?Math.floor(l/n):t==="columns"?l%n:l)}function Be(e,t,n="fade",c={}){let l=B(c.gap,45,150),a=B(c.delay,0,500),i=Array.from(t),o=ie(i.length,c.order,c.columns);return Promise.all(i.map((d,u)=>e.play(d,n,{...c,delay:Math.min(500,a+o[u]*l)})))}function Fe(e,t,n={}){let c=Array.from(new Set(e)),l=c[0]?.ownerDocument.defaultView,a=new Set,i=new Set,o=new Map,d=!1,u=Number.isFinite(n.threshold)?Math.min(1,Math.max(0,n.threshold)):.15,b=n.once!==!1,y=l?.IntersectionObserver,r=y?new y(h=>{if(!d)for(let p of h){let f=p.target;if(!(p.isIntersecting&&p.intersectionRatio>=u)){a.delete(f);continue}if(!f.isConnected||a.has(f)||b&&i.has(f))continue;a.add(f),i.add(f),b&&r.unobserve(f);let v={};o.set(f,v);let s=t.play(f,n.effect||"fade",{...n,phase:"enter"});n.onReveal?.(f),s.finally(()=>{o.get(f)===v&&o.delete(f)})}},{root:n.root||null,rootMargin:n.rootMargin||"0px",threshold:u}):null;for(let h of c)r?.observe(h);return{destroy(){if(!d){d=!0,r?.disconnect();for(let h of o.keys())t.cancel(h);o.clear(),a.clear(),i.clear()}}}}function Q(e){let t=new Map;for(let n of Array.from(e.querySelectorAll("[data-shared-key]"))){let c=n.dataset.sharedKey;if(!c||t.has(c))throw new Error("Shared elements need unique, nonempty data-shared-key values per view.");if(n.matches("button, input, select, textarea, a, [tabindex], [contenteditable], canvas, video, iframe")||n.querySelector("button, input, select, textarea, a, [tabindex], [contenteditable], canvas, video, iframe, [data-shared-key]"))throw new Error("Shared elements must be decorative text, image or SVG wrappers, without interactive or nested shared content.");t.set(c,n)}return t}function X(e,t,n){let c=0,l=!1,a=()=>{},i=new Map;return{async show(o,d={}){if(l)return"cancelled";if(o.parentNode||o===e||o.contains(e))throw new Error("Provide a detached next view.");let u=n?Q(o):new Map,b=++c,y=new Map(Array.from(i,([A,N])=>[A,N.getBoundingClientRect()]));a(),d={duration:280,...d};let r=e.firstElementChild,h=n&&r?Q(r):new Map,p=new Map(Array.from(h,([A,N])=>[A,y.get(A)||N.getBoundingClientRect()])),f=e.ownerDocument.activeElement,w=!!r?.contains(f),v=f?.dataset.focusKey,s=e.scrollTop,m=e.scrollLeft,M=R(e,["display","position","isolation","box-sizing","align-items"]),g=R(o,["grid-area","min-width"]),E=r?R(r,["grid-area","min-width"]):()=>{},L=r?.inert,k=r?.getAttribute("aria-hidden"),C=e.getBoundingClientRect().height,x=[e,o];r&&x.push(r);let S=[],V=[],T=!1,F=()=>{if(!T){T=!0;for(let A of x)t.cancel(A);for(let A of V)A.remove();i.clear();for(let A of S)A();r?.remove(),E(),g(),M(),r&&(r.inert=L,k===null?r.removeAttribute("aria-hidden"):r.setAttribute("aria-hidden",k))}};a=F;try{if(e.style.display="grid",e.style.alignItems="start",e.style.position="relative",e.style.isolation="isolate",e.style.boxSizing="border-box",o.style.gridArea="1 / 1",o.style.minWidth="0",r&&(r.style.gridArea="1 / 1",r.style.minWidth="0"),e.append(o),w){let P=v?Array.from(o.querySelectorAll("[data-focus-key]")).find(H=>H.dataset.focusKey===v):null,O=P||o.querySelector("[data-view-heading]")||o,D=O.getAttribute("tabindex");P||(O.tabIndex=-1),O.focus({preventScroll:!0}),P||(D===null?O.removeAttribute("tabindex"):O.setAttribute("tabindex",D))}r&&(r.inert=!0,r.setAttribute("aria-hidden","true")),e.scrollTop=s,e.scrollLeft=m;let A=[],N=e.getBoundingClientRect();for(let[P,O]of u){let D=h.get(P),H=p.get(P),z=O.getBoundingClientRect();if(!D||!H?.width||!H.height||!z.width||!z.height||t.mode!=="full")continue;let I=D.cloneNode(!0);for(let q of[I,...Array.from(I.querySelectorAll("*"))])q.removeAttribute("id"),q.removeAttribute("name"),q.removeAttribute("data-shared-key");I.inert=!0,I.setAttribute("aria-hidden","true"),I.setAttribute("data-motion-overlay",""),I.style.cssText+=`;position:absolute;pointer-events:none;margin:0;left:${H.left-N.left+e.scrollLeft-e.clientLeft}px;top:${H.top-N.top+e.scrollTop-e.clientTop}px;width:${H.width}px;height:${H.height}px;box-sizing:border-box;transform-origin:top left;z-index:10;`,e.append(I),V.push(I),x.push(I),i.set(P,I);for(let q of[D,O])S.push(R(q,["visibility"])),q.style.visibility="hidden";let ee=e.ownerDocument.defaultView.getComputedStyle(O);A.push(t.animate(I,[{transform:"none",width:H.width+"px",height:H.height+"px",borderRadius:e.ownerDocument.defaultView.getComputedStyle(D).borderRadius},{transform:`translate(${z.left-H.left}px, ${z.top-H.top}px)`,width:z.width+"px",height:z.height+"px",borderRadius:ee.borderRadius}],{easing:"ease-in-out",...d}))}if(r&&A.push(t.play(r,"fade",{...d,phase:"exit"})),A.push(t.play(o,"fade",{...d,phase:"enter"})),r){let P=e.ownerDocument.defaultView.getComputedStyle(e),O=parseFloat(P.paddingTop)+parseFloat(P.paddingBottom)+parseFloat(P.borderTopWidth)+parseFloat(P.borderBottomWidth);A.push(t.animate(e,[{height:C+"px"},{height:o.getBoundingClientRect().height+O+"px"}],d))}await Promise.all(A)}finally{c===b&&(F(),a=()=>{})}return!l&&c===b?"finished":"cancelled"},destroy(){l||(l=!0,++c,a(),a=()=>{})}}}function qe(e,t){return X(e,t,!1)}function je(e,t){return X(e,t,!0)}function We(e,t,n=1.2){if(!Number.isFinite(n)||n<1||n>2)throw new Error("Photo zoom must be between 1 and 2.");let c=R(e,["transform","transform-origin"]),l=0,a=!1;return e.style.transformOrigin="center",{async setZoomed(i,o={}){if(a)return"cancelled";let d=++l,u=e.ownerDocument.defaultView.getComputedStyle(e).transform;return t.cancel(e),e.style.transform=`scale(${i?n:1})`,await t.animate(e,[{transform:u},{transform:e.style.transform}],{duration:1e3,easing:"ease-in-out",...o}),!a&&d===l?"finished":"cancelled"},destroy(){a||(a=!0,++l,t.cancel(e),c())}}}var G=new WeakSet;function Y(e=12e3){if(!Number.isFinite(e)||e<4e3||e>6e4)throw Error("Border glow duration must be from 4000 to 60000 ms.");return e}function Ue(e,t={}){let n=Y(t.duration),c=t.paused??!1,l=!0,a=!1;if(G.has(e))throw Error("This element already has a border glow.");let i=e.ownerDocument,o=i.defaultView;if(!o||!e.isConnected)throw Error("Mount a border glow on a connected browser element.");let d=R(e,["position"]);o.getComputedStyle(e).position==="static"&&(e.style.position="relative");let u=i.createElement("span"),b=i.createElement("span"),y=i.createElement("span");u.className="blu-motion-border-glow",b.className="blu-motion-border-glow__rim",y.className="blu-motion-border-glow__beam",b.append(y),u.setAttribute("aria-hidden","true"),u.inert=!0,u.append(b),e.append(u),G.add(e);let r=()=>{u.style.setProperty("--blu-glow-duration",n+"ms"),u.dataset.paused=String(c||!l||i.hidden)},h=()=>u.style.setProperty("--blu-glow-size",Math.ceil(Math.hypot(e.offsetWidth+4,e.offsetHeight+4))+"px"),p=new ResizeObserver(h);p.observe(e),h();let f=typeof IntersectionObserver=="function"?new IntersectionObserver(w=>{l=w[0].isIntersecting,r()}):null;return f?.observe(e),i.addEventListener("visibilitychange",r),r(),{element:u,update(w){if(a)throw Error("Border glow is destroyed.");w.duration!==void 0&&(n=Y(w.duration)),w.paused!==void 0&&(c=w.paused),r()},destroy(){a||(a=!0,p.disconnect(),f?.disconnect(),i.removeEventListener("visibilitychange",r),u.remove(),d(),G.delete(e))}}}function Xe(e,t,n,c={}){let l=t[0]?.panel.parentElement;if(!t.length||!l||new Set(t.map(s=>s.key)).size!==t.length||t.some(s=>!s.key||!s.tab.id||!s.panel.id||!e.contains(s.tab)||s.panel.parentElement!==l))throw Error("Tabs need unique keys, tab/panel IDs and a shared panel container.");if(new Set(t.flatMap(s=>[s.tab.id,s.panel.id])).size!==t.length*2)throw Error("Tab and panel IDs must be unique.");let a=s=>!s.tab.disabled&&s.tab.getAttribute("aria-disabled")!=="true",i=t.find(s=>a(s)&&s.tab.getAttribute("aria-selected")==="true")||t.find(a);if(!i)throw Error("Tabs require an enabled tab.");let o=!1,d=0,u=()=>{},b=l.ownerDocument.defaultView,y=(s,m)=>{let M=m.map(g=>[g,s.getAttribute(g)]);return()=>{for(let[g,E]of M)E===null?s.removeAttribute(g):s.setAttribute(g,E)}},r=[y(e,["role","aria-orientation"])];e.setAttribute("role","tablist"),e.setAttribute("aria-orientation",c.orientation||"horizontal");for(let s of t)r.push(y(s.tab,["role","aria-controls","aria-selected","tabindex","type"]),y(s.panel,["role","aria-labelledby","aria-hidden","hidden","inert","tabindex"])),s.tab.type="button",s.tab.setAttribute("role","tab"),s.tab.setAttribute("aria-controls",s.panel.id),s.panel.setAttribute("role","tabpanel"),s.panel.setAttribute("aria-labelledby",s.tab.id),s.panel.tabIndex=0;function h(){for(let s of t){let m=s===i;s.tab.setAttribute("aria-selected",String(m)),s.tab.tabIndex=m?0:-1,s.panel.inert=!m,s.panel.setAttribute("aria-hidden",String(!m))}}h();for(let s of t)s.panel.hidden=s!==i;let p=J(e,n,"tabs");async function f(s){let m=t.find(T=>T.key===s);if(o||!m||!a(m))return"cancelled";if(m===i)return h(),"finished";let M=++d,g=i,E=l.getBoundingClientRect().height,L=b.getComputedStyle(g.panel).opacity,k=m.panel.hidden?"0":b.getComputedStyle(m.panel).opacity;u(),i=m,t.some(T=>T!==m&&T.panel.contains(l.ownerDocument.activeElement))&&m.tab.focus({preventScroll:!0}),h();for(let T of t)T.panel.hidden=T!==m&&T!==g;let C=R(l,["position","height","overflow","box-sizing"]),x=R(g.panel,["position","inset","width","box-sizing"]),S=!1,V=()=>{if(!S){S=!0,n.cancel(l),n.cancel(g.panel),n.cancel(m.panel),x(),C();for(let T of t)T.panel.hidden=T!==i}};u=V;try{l.style.position="relative",l.style.overflow="hidden",l.style.boxSizing="border-box",g.panel.style.position="absolute",g.panel.style.inset="0 auto auto 0",g.panel.style.width="100%",g.panel.style.boxSizing="border-box";let T=l.getBoundingClientRect().height;l.style.height=T+"px";let F=[n.animate(g.panel,[{opacity:L},{opacity:0}],{duration:450,phase:"exit",easing:"ease-in-out"},"fade"),n.animate(m.panel,[{opacity:k},{opacity:1}],{duration:450,easing:"ease-in-out"},"fade"),n.animate(l,[{height:E+"px"},{height:T+"px"}],{duration:450,easing:"ease-in-out"})];c.onChange?.(s),await Promise.all(F)}finally{d===M&&(V(),u=()=>{})}return!o&&d===M?"finished":"cancelled"}let w=s=>{let m=t.find(M=>M.tab.contains(s.target));m&&a(m)&&(m.tab.focus({preventScroll:!0}),f(m.key))},v=s=>{let m=t.find(S=>S.tab===s.target);if(!m)return;let M=t.filter(a),g=M.indexOf(m),E=c.orientation==="vertical",L=b.getComputedStyle(e).direction==="rtl",k=E?"ArrowUp":L?"ArrowRight":"ArrowLeft",C=E?"ArrowDown":L?"ArrowLeft":"ArrowRight",x;if(s.key===k&&(x=M[(g-1+M.length)%M.length]),s.key===C&&(x=M[(g+1)%M.length]),s.key==="Home"&&(x=M[0]),s.key==="End"&&(x=M.at(-1)),x){s.preventDefault();for(let S of t)S.tab.tabIndex=S===x?0:-1;x.tab.focus(),c.activation!=="manual"&&f(x.key)}};return e.addEventListener("click",w),e.addEventListener("keydown",v),{get activeKey(){return i.key},select:f,destroy(){if(!o){o=!0,++d,u(),p.destroy(),e.removeEventListener("click",w),e.removeEventListener("keydown",v);for(let s of r.reverse())s()}}}}function et(e,t){let n={role:e.getAttribute("role"),atomic:e.getAttribute("aria-atomic"),state:e.getAttribute("data-action-state")};e.setAttribute("role","status"),e.setAttribute("aria-atomic","true");let c=!1,l=!1,a=(i,o)=>{e.textContent=i,e.dataset.actionState=o,t.play(e,"fade",{duration:350,easing:"ease-out"})};return{get pending(){return l},async run(i,o){if(c)return"cancelled";if(l)return"busy";l=!0,a(o.pending,"pending");try{return await i(),c?"cancelled":(a(o.success,"success"),"success")}catch{return c?"cancelled":(a(o.error,"error"),"error")}finally{l=!1}},destroy(){if(!c){c=!0,t.cancel(e);for(let[i,o]of[["role",n.role],["aria-atomic",n.atomic],["data-action-state",n.state]])o===null?e.removeAttribute(i):e.setAttribute(i,o)}}}}function rt(e,t){let n=new WeakMap,c=new Map,l=!1,a=0;return{enter(i,o){if(l)return Promise.resolve("cancelled");if(!e.contains(i))throw Error("Screen content must be inside its scope.");if(n.get(i)===o)return Promise.resolve("finished");n.set(i,o);let d=++a;return c.set(i,d),t.animate(i,[{opacity:0,translate:"0px 12px"},{opacity:1,translate:"0px 0px"}],{duration:650,easing:"ease-out"},"fade").finally(()=>{c.get(i)===d&&c.delete(i)})},destroy(){if(!l){l=!0;for(let i of c.keys())t.cancel(i);c.clear()}}}}export{B as boundedTime,et as createActionFeedback,Ue as createBorderGlow,qe as createCrossfade,Ee as createEmphasis,ve as createIconTransition,fe as createLayoutTransition,Re as createLoadingIndicator,ce as createMotionButton,Le as createMotionController,Oe as createMotionPresence,Xe as createMotionTabs,he as createNumberTransition,We as createPhotoZoom,pe as createPressFeedback,ge as createProgressTransition,Me as createRipple,rt as createScreenMotion,Fe as createScrollReveal,je as createSharedElementTransition,we as createShimmer,ue as createSizeTransition,ye as createStrokeTransition,ke as createViewTransition,ne as easeProgress,be as finiteValue,se as motionClass,le as motionEasingClass,_ as motionEasings,ae as motionEffects,Z as motionFrames,W as motionOrigins,K as motionTiming,de as moveFocusOut,oe as normalizeProgress,me as playFeedback,Be as playStagger,R as preserveStyles,te as resolveMotionMode,ie as staggerRanks};
|
|
@@ -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("DatePicker",Ee,xe);he();})();
|
|
1
|
+
"use strict";(()=>{var T=typeof window=="undefined"?globalThis:window,Z="__bluuiCommunityModulesV1",ee=T[Z]||(T[Z]={families:Object.create(null)}),W=T.BluUICommunityRuntime&&!Object.isFrozen(T.BluUICommunityRuntime)?T.BluUICommunityRuntime:Object.assign({},T.BluUICommunityRuntime||{});T.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 C(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){C(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||C(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"&&C(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;C(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",()=>C(e)),e.apply),e.dialog.append(e.selection,e.dialogError,D);let p=u=>{e.isOpen&&!e.root.contains(u.target)&&C(e,!1)},h=u=>{e.isOpen&&u.key==="Escape"&&!u.defaultPrevented&&(u.preventDefault(),u.stopPropagation(),C(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;C(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?C(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("DatePicker",xe,ke);he();})();
|
|
@@ -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),R(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(),R(e)}}function R(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,P=e.range&&e.draftStart&&e.draftEnd&&f>e.draftStart&&f<e.draftEnd,o=K(e,f),x=!!(w||P),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(!!P)}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,R(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),R(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="",R(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,P;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),R(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&&((P=document.getElementById(i))==null||P.focus()),N(e))),e.renderSignature=t}var he=()=>ge("DateRangePicker",Ee,xe);he();})();
|
|
1
|
+
"use strict";(()=>{var T=typeof window=="undefined"?globalThis:window,Z="__bluuiCommunityModulesV1",ee=T[Z]||(T[Z]={families:Object.create(null)}),W=T.BluUICommunityRuntime&&!Object.isFrozen(T.BluUICommunityRuntime)?T.BluUICommunityRuntime:Object.assign({},T.BluUICommunityRuntime||{});T.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 C(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){C(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||C(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)),R(e),Q(e),A(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"&&C(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),R(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}R(e),(n=e.calendar.querySelector('[data-date="'+t+'"]'))==null||n.focus({preventScroll:!0}),A(e)}}function A(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 R(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,P=e.range&&e.draftStart&&e.draftEnd&&f>e.draftStart&&f<e.draftEnd,o=K(e,f),x=!!(M||P),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(!!P)}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,A(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="",R(e),Q(e),A(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="",A(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;C(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",()=>C(e)),e.apply),e.dialog.append(e.selection,e.dialogError,D);let p=u=>{e.isOpen&&!e.root.contains(u.target)&&C(e,!1)},h=u=>{e.isOpen&&u.key==="Escape"&&!u.defaultPrevented&&(u.preventDefault(),u.stopPropagation(),C(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;C(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,P;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="",R(e),A(e)});x.disabled=!!ce(o.StartDate,o.EndDate,{...a,disabled:e.disabledDates}),e.presets.append(x)}e.isOpen&&(a.IsDisabled||a.IsReadOnly||d?C(e):(R(e),Q(e),r?(M=e.calendar.querySelector('[data-date="'+r+'"]'))==null||M.focus({preventScroll:!0}):i&&((P=document.getElementById(i))==null||P.focus({preventScroll:!0})),N(e))),e.renderSignature=t}var he=()=>ye("DateRangePicker",xe,ke);he();})();
|
|
@@ -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("DateTimePicker",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("DateTimePicker",xe,ke);he();})();
|