@blukavantui/community 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/README.md +11 -5
  2. package/dist/build-audit.json +181 -53
  3. package/dist/checkbox.css +1 -0
  4. package/dist/checkbox.d.ts +2 -0
  5. package/dist/checkbox.js +1 -0
  6. package/dist/chunk-3PNBQVYS.js +1 -0
  7. package/dist/chunk-5ENZVZGF.js +0 -0
  8. package/dist/chunk-AL2ETLJV.js +1 -0
  9. package/dist/chunk-BN3PDE5G.js +0 -0
  10. package/dist/chunk-EOKNLCNS.js +1 -0
  11. package/dist/chunk-EPZGLHPD.js +0 -0
  12. package/dist/chunk-FNX33PDD.js +0 -0
  13. package/dist/chunk-GXHANADL.js +1 -0
  14. package/dist/chunk-HO6CYWED.js +0 -0
  15. package/dist/chunk-IJ62ILKE.js +0 -0
  16. package/dist/chunk-IO22GWON.js +0 -0
  17. package/dist/chunk-IZJN3EF7.js +1 -0
  18. package/dist/chunk-JVE6CXCJ.js +1 -0
  19. package/dist/chunk-MYVLBALF.js +1 -0
  20. package/dist/chunk-OPMD7QNV.js +1 -0
  21. package/dist/chunk-RWBLICYX.js +0 -0
  22. package/dist/chunk-RYD6RHRX.js +0 -0
  23. package/dist/chunk-UN2SLVFG.js +1 -0
  24. package/dist/chunk-VJVFHL6P.js +0 -0
  25. package/dist/chunk-XWXEH3SW.js +1 -0
  26. package/dist/chunk-YCLR3IE3.js +0 -0
  27. package/dist/columns2.css +1 -0
  28. package/dist/columns2.d.ts +2 -0
  29. package/dist/columns2.js +1 -0
  30. package/dist/columns3.css +1 -0
  31. package/dist/columns3.d.ts +2 -0
  32. package/dist/columns3.js +1 -0
  33. package/dist/columns4.css +1 -0
  34. package/dist/columns4.d.ts +2 -0
  35. package/dist/columns4.js +1 -0
  36. package/dist/content.js +1 -1
  37. package/dist/core.js +1 -1
  38. package/dist/data.css +63 -0
  39. package/dist/data.d.ts +1 -0
  40. package/dist/data.js +1 -1
  41. package/dist/date-picker.css +5 -5
  42. package/dist/date-picker.js +1 -1
  43. package/dist/date-range-picker.css +5 -5
  44. package/dist/date-range-picker.js +1 -1
  45. package/dist/date-time-picker.css +5 -5
  46. package/dist/date-time-picker.js +1 -1
  47. package/dist/draft-components.json +77 -0
  48. package/dist/feedback.js +1 -1
  49. package/dist/form-field.css +1 -0
  50. package/dist/form-field.d.ts +2 -0
  51. package/dist/form-field.js +1 -0
  52. package/dist/form-layout/choice.d.ts +15 -0
  53. package/dist/form-layout/layout.d.ts +12 -0
  54. package/dist/form-layout/select.d.ts +3 -0
  55. package/dist/form-layout/shared.d.ts +21 -0
  56. package/dist/form-layout/table.d.ts +20 -0
  57. package/dist/form-layout/text.d.ts +3 -0
  58. package/dist/form-layout/types.d.ts +151 -0
  59. package/dist/form-layout.css +62 -0
  60. package/dist/form-layout.d.ts +12 -0
  61. package/dist/form-layout.js +1 -0
  62. package/dist/index.d.ts +1 -0
  63. package/dist/index.js +1 -1
  64. package/dist/inputs.css +83 -20
  65. package/dist/inputs.d.ts +8 -0
  66. package/dist/inputs.js +1 -1
  67. package/dist/layout.css +63 -0
  68. package/dist/layout.d.ts +3 -0
  69. package/dist/layout.js +1 -1
  70. package/dist/native/date-picker.js +1 -1
  71. package/dist/native/date-range-picker.js +1 -1
  72. package/dist/native/date-time-picker.js +1 -1
  73. package/dist/native/form-layout.js +1 -0
  74. package/dist/native/time-picker.js +1 -1
  75. package/dist/native-components/form-layout.d.ts +1 -0
  76. package/dist/radio-button.css +1 -0
  77. package/dist/radio-button.d.ts +2 -0
  78. package/dist/radio-button.js +1 -0
  79. package/dist/radio-group.css +1 -0
  80. package/dist/radio-group.d.ts +2 -0
  81. package/dist/radio-group.js +1 -0
  82. package/dist/select.css +1 -0
  83. package/dist/select.d.ts +2 -0
  84. package/dist/select.js +1 -0
  85. package/dist/sizes.json +272 -90
  86. package/dist/styles.css +83 -20
  87. package/dist/switch.css +1 -0
  88. package/dist/switch.d.ts +2 -0
  89. package/dist/switch.js +1 -0
  90. package/dist/table.css +1 -0
  91. package/dist/table.d.ts +2 -0
  92. package/dist/table.js +1 -0
  93. package/dist/text-area.css +1 -0
  94. package/dist/text-area.d.ts +2 -0
  95. package/dist/text-area.js +1 -0
  96. package/dist/text-input.css +1 -0
  97. package/dist/text-input.d.ts +2 -0
  98. package/dist/text-input.js +1 -0
  99. package/dist/time-picker.css +5 -5
  100. package/dist/time-picker.js +1 -1
  101. package/docs/FORM-LAYOUT-ESSENTIALS.md +122 -0
  102. package/docs/PUBLISHING.md +129 -25
  103. package/draft-components.json +77 -0
  104. package/edition.json +44 -7
  105. package/npm-shrinkwrap.json +2 -2
  106. package/package.json +76 -10
  107. package/scripts/build.mjs +16 -8
  108. package/src/checkbox.ts +2 -0
  109. package/src/columns2.ts +2 -0
  110. package/src/columns3.ts +2 -0
  111. package/src/columns4.ts +2 -0
  112. package/src/data.ts +1 -0
  113. package/src/form-field.ts +2 -0
  114. package/src/form-layout/choice.ts +66 -0
  115. package/src/form-layout/layout.ts +40 -0
  116. package/src/form-layout/select.ts +97 -0
  117. package/src/form-layout/shared.ts +57 -0
  118. package/src/form-layout/table.ts +86 -0
  119. package/src/form-layout/text.ts +73 -0
  120. package/src/form-layout/types.ts +59 -0
  121. package/src/form-layout.ts +12 -0
  122. package/src/index.ts +2 -0
  123. package/src/inputs.ts +8 -0
  124. package/src/layout.ts +3 -0
  125. package/src/native-components/form-layout.ts +21 -0
  126. package/src/radio-button.ts +2 -0
  127. package/src/radio-group.ts +2 -0
  128. package/src/runtime/date-picker.js +21 -12
  129. package/src/runtime/date-range-picker.js +21 -12
  130. package/src/runtime/date-time-picker.js +21 -12
  131. package/src/runtime/time-picker.js +21 -12
  132. package/src/select.ts +2 -0
  133. package/src/switch.ts +2 -0
  134. package/src/table.ts +2 -0
  135. package/src/text-area.ts +2 -0
  136. package/src/text-input.ts +2 -0
  137. package/src/types.ts +0 -12
  138. package/styles/checkbox.css +1 -0
  139. package/styles/columns2.css +1 -0
  140. package/styles/columns3.css +1 -0
  141. package/styles/columns4.css +1 -0
  142. package/styles/date-picker.css +5 -5
  143. package/styles/date-range-picker.css +5 -5
  144. package/styles/date-time-picker.css +5 -5
  145. package/styles/form-field.css +1 -0
  146. package/styles/form-layout.css +62 -0
  147. package/styles/radio-button.css +1 -0
  148. package/styles/radio-group.css +1 -0
  149. package/styles/select.css +1 -0
  150. package/styles/switch.css +1 -0
  151. package/styles/table.css +1 -0
  152. package/styles/text-area.css +1 -0
  153. package/styles/text-input.css +1 -0
  154. package/styles/time-picker.css +5 -5
  155. package/test/form-layout.test.mjs +28 -0
  156. package/test/isolation.test.mjs +2 -2
  157. package/dist/chunk-2TCNAQC6.js +0 -1
  158. package/dist/chunk-CTLZIWMX.js +0 -1
  159. package/dist/chunk-MHHJZYXW.js +0 -1
  160. package/dist/chunk-XDYBNO4P.js +0 -1
package/dist/layout.css CHANGED
@@ -842,3 +842,66 @@ No If widget is needed; consumer content remains mounted with its state. */
842
842
  .blu-shape-mask__media .blu-common-slot--content>div {height:100%;}
843
843
  .blu-advanced-sr {position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
844
844
  @media(prefers-reduced-motion:reduce){.blu-shape-mask__media{animation:none!important;transition:none!important;}}
845
+
846
+ /* Community Form & Layout Essentials — local draft; no OutSystems UI selectors. */
847
+ .blu-field,.blu-columns,.blu-table{box-sizing:border-box;min-width:0;color:var(--bluui-text,#182230);font-family:var(--blu-font-family,Inter,system-ui,sans-serif);font-size:14px}
848
+ .blu-field *,.blu-columns *,.blu-table *{box-sizing:border-box}
849
+ .blu-field [hidden],.blu-table [hidden]{display:none!important}
850
+ .blu-field{--blu-field-height:42px;--blu-field-padding:12px;display:flex;flex-direction:column;gap:7px;border:0;padding:0;margin:0;min-inline-size:0}
851
+ .blu-field--small{--blu-field-height:34px;--blu-field-padding:9px;font-size:13px}.blu-field--large{--blu-field-height:50px;--blu-field-padding:15px;font-size:16px}
852
+ .blu-field__label{font-weight:600;line-height:1.5;padding:0;margin:0 0 2px}.blu-field__body{min-width:0}
853
+ .blu-field__help,.blu-choice__description,.blu-field__count{font-size:12px;color:var(--bluui-text-muted,#5c6b80);line-height:1.5}.blu-field__error{color:var(--bluui-color-error-text,#b42318);font-size:12px;line-height:1.5}.blu-field__count{text-align:end;margin-top:5px;font-variant-numeric:tabular-nums}
854
+ .blu-text,.blu-textarea,.blu-select__trigger{border:1px solid var(--bluui-control-border,#7b8799);border-radius:var(--blu-radius-md,8px);background:var(--bluui-surface,#fff);color:inherit;transition:border-color .12s,box-shadow .12s}
855
+ .blu-text{display:flex;align-items:center;gap:8px;min-height:var(--blu-field-height);padding:0 var(--blu-field-padding)}
856
+ .blu-text__input{width:100%;min-width:0;border:0!important;box-shadow:none!important;outline:none!important;background:transparent!important;color:inherit;padding:9px 0!important;font:inherit;line-height:1.5;height:auto}
857
+ .blu-text__input::placeholder,.blu-textarea::placeholder{color:var(--bluui-text-muted,#5c6b80);opacity:1}
858
+ .blu-text:focus-within,.blu-textarea:focus-visible,.blu-select__trigger:focus-visible{border-color:var(--bluui-primary,#4f46e5);outline:2px solid var(--bluui-primary,#4f46e5);outline-offset:2px}
859
+ .blu-text__adornment{display:inline-flex;flex:none;gap:6px;align-items:center;color:var(--bluui-text-muted,#5c6b80);white-space:nowrap}.blu-text__adornment img{width:24px;height:24px;object-fit:contain;border-radius:4px}
860
+ .blu-text__action{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:4px;background:transparent;color:var(--bluui-primary,#4f46e5);font:inherit;font-size:12px;font-weight:600;min-width:26px;min-height:30px;cursor:pointer;white-space:nowrap;padding:3px}
861
+ .blu-text__action:hover{background:var(--bluui-hover,#f0f2f7)}
862
+ .blu-field button:focus-visible,.blu-table button:focus-visible,.blu-table__scroll:focus-visible{outline:2px solid var(--bluui-primary,#4f46e5);outline-offset:3px}
863
+ .blu-textarea{display:block;width:100%;min-height:var(--blu-field-height);padding:10px var(--blu-field-padding);font:inherit;line-height:1.6}
864
+ .blu-field[data-invalid=true] .blu-text,.blu-field[data-invalid=true] .blu-textarea,.blu-field[data-invalid=true] .blu-select__trigger{border-color:var(--bluui-color-error-text,#b42318)}
865
+ .blu-field[data-disabled=true]{opacity:.6}.blu-field input:disabled,.blu-field textarea:disabled,.blu-field button:disabled{cursor:not-allowed}
866
+ .blu-field input[readonly],.blu-field textarea[readonly]{cursor:default}
867
+ .blu-choice{display:flex;align-items:center;position:relative;gap:10px;min-height:32px;cursor:pointer;line-height:1.5}.blu-choice__input{position:absolute;inline-size:1px;block-size:1px;clip-path:inset(50%);overflow:hidden;white-space:nowrap;opacity:0}
868
+ .blu-choice__mark{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:19px;height:19px;border:1.5px solid var(--bluui-control-border,#7b8799);border-radius:5px;background:var(--bluui-surface,#fff);color:var(--bluui-on-primary,#fff)}
869
+ .blu-choice__input:checked+.blu-choice__mark,.blu-choice__input:indeterminate+.blu-choice__mark{background:var(--bluui-primary,#4f46e5);border-color:var(--bluui-primary,#4f46e5)}
870
+ .blu-choice--checkbox .blu-choice__input:checked+.blu-choice__mark:after{content:'';width:5px;height:9px;border:solid currentColor;border-width:0 2px 2px 0;transform:translateY(-1px) rotate(45deg)}
871
+ .blu-choice__input:indeterminate+.blu-choice__mark:after{content:'';width:9px;height:2px;background:currentColor;transform:none;border:0}
872
+ .blu-choice__input:focus-visible+.blu-choice__mark{outline:2px solid var(--bluui-primary,#4f46e5);outline-offset:3px}
873
+ .blu-choice:has(input:disabled){opacity:.6;cursor:not-allowed}.blu-field[data-disabled=true] .blu-choice:has(input:disabled){opacity:1}
874
+ .blu-choice--radio .blu-choice__mark{border-radius:50%}.blu-choice--radio .blu-choice__input:checked+.blu-choice__mark:after{content:'';width:7px;height:7px;border-radius:50%;background:currentColor}
875
+ .blu-choice--switch .blu-choice__mark{width:38px;height:22px;border-radius:20px;background:var(--bluui-control-border,#7b8799);padding:2px;justify-content:flex-start}
876
+ .blu-choice--switch .blu-choice__mark:after{content:'';height:16px;width:16px;background:#fff;border-radius:50%;transition:transform .15s}
877
+ .blu-choice--switch .blu-choice__input:checked+.blu-choice__mark:after{transform:translateX(14px)}.blu-choice--switch .blu-choice__input:checked+.blu-choice__mark{background:var(--bluui-primary,#4f46e5)}
878
+ .blu-choice__state{margin-inline-start:auto;font-size:12px;color:var(--bluui-text-muted,#5c6b80)}.blu-choice__description{display:block}
879
+ .blu-radio-group{display:flex;flex-direction:column;gap:10px}.blu-radio-group--horizontal{flex-direction:row;flex-wrap:wrap;gap:12px 24px}
880
+ .blu-select{position:relative;display:flex;gap:5px}.blu-select__native{position:absolute;width:1px;height:1px;opacity:0;clip-path:inset(50%);pointer-events:none}
881
+ .blu-select__trigger{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0;min-height:var(--blu-field-height);width:100%;padding:9px var(--blu-field-padding);font:inherit;text-align:start;cursor:pointer}
882
+ .blu-select__trigger:after{content:'';width:7px;height:7px;border:solid currentColor;border-width:0 1.5px 1.5px 0;transform:translateY(-2px) rotate(45deg);flex-shrink:0}.blu-select__trigger[data-placeholder=true]{color:var(--bluui-text-muted,#5c6b80)}
883
+ .blu-select__popup{box-sizing:border-box;position:absolute;inset:calc(100% + 6px) 0 auto;z-index:1000;max-height:320px;overflow:auto;margin:0;padding:6px;border:1px solid var(--bluui-border-strong,#b8c4d4);border-radius:10px;background:var(--bluui-surface,#fff);box-shadow:var(--bluui-menu-shadow,0 10px 30px #17203326);color:var(--bluui-text,#182230);font:inherit}
884
+ .blu-select__search{width:100%;min-height:38px;padding:8px 10px;border:1px solid var(--bluui-control-border,#7b8799);border-radius:6px;background:var(--bluui-surface,#fff);color:inherit;font:inherit;margin-bottom:5px;outline-offset:2px}
885
+ .blu-select__option{padding:9px 10px;border-radius:5px;cursor:pointer;line-height:1.5}.blu-select__option[aria-selected=true]{font-weight:600;color:var(--bluui-primary,#4f46e5)}.blu-select__option[data-active=true]{background:var(--bluui-selected,#e9e6ff)}.blu-select__option[aria-disabled=true]{opacity:.5;cursor:not-allowed}
886
+ .blu-columns{display:grid;grid-template-columns:var(--blu-columns-tracks,1fr 1fr);gap:var(--blu-columns-gap,24px)}.blu-columns__column{min-width:0;display:flex;flex-direction:column;gap:20px}
887
+ @media(max-width:479px){.blu-columns--stack-small{grid-template-columns:minmax(0,1fr)}}
888
+ @media(max-width:767px){.blu-columns--stack-medium{grid-template-columns:minmax(0,1fr)}}
889
+ @media(max-width:1023px){.blu-columns--stack-large{grid-template-columns:minmax(0,1fr)}}
890
+ .blu-table{border:1px solid var(--bluui-border,#e2e8f0);border-radius:12px;background:var(--bluui-surface,#fff);overflow:hidden}
891
+ .blu-table__scroll{overflow:auto}.blu-table table{width:100%;border-collapse:collapse;font:inherit;text-align:start}.blu-table caption{text-align:start;padding:18px;font-weight:600;font-size:15px}
892
+ .blu-table th{font-size:12px;color:var(--bluui-text-muted,#5c6b80);background:var(--bluui-surface-muted,#f7f8fb);font-weight:600;white-space:nowrap}
893
+ .blu-table th,.blu-table td{padding:14px 18px;border-top:1px solid var(--bluui-border,#e2e8f0);line-height:1.5}
894
+ .blu-table[data-density=Compact] th,.blu-table[data-density=Compact] td{padding:8px 12px}
895
+ .blu-table[data-striped=true] tbody tr:nth-child(even){background:var(--bluui-surface-muted,#f7f8fb)}
896
+ .blu-table__sort{font:inherit;font-weight:600;color:inherit;background:transparent;border:0;padding:0;cursor:pointer;display:inline-flex;align-items:center;gap:12px}
897
+ .blu-table__empty{text-align:center!important;height:140px;color:var(--bluui-text-muted,#5c6b80)}
898
+ .blu-table__footer{display:flex;align-items:center;gap:8px;padding:12px 18px;border-top:1px solid var(--bluui-border,#e2e8f0);font-size:12px;flex-wrap:wrap}.blu-table__footer>span{margin-inline-end:auto;color:var(--bluui-text-muted,#5c6b80)}
899
+ .blu-table-button{border:1px solid var(--bluui-border-strong,#b8c4d4);border-radius:6px;padding:6px 10px;background:var(--bluui-surface,#fff);font:inherit;font-size:12px;color:var(--bluui-text,#182230);cursor:pointer;min-height:30px;white-space:nowrap}.blu-table-button:hover{background:var(--bluui-hover,#f0f2f7)}.blu-table-button:disabled{opacity:.5;cursor:not-allowed}.blu-table__actions{display:flex;gap:6px}
900
+ @media(prefers-reduced-motion:reduce){.blu-field *{transition:none!important}}
901
+ @media(forced-colors:active){.blu-choice__mark{forced-color-adjust:none;border-color:ButtonText;background:Canvas;color:HighlightText}.blu-choice__input:checked+.blu-choice__mark,.blu-choice__input:indeterminate+.blu-choice__mark{background:Highlight;border-color:Highlight}.blu-select__option[data-active=true]{outline:2px solid Highlight}.blu-choice--switch .blu-choice__mark:after{background:ButtonText}.blu-choice--switch .blu-choice__input:checked+.blu-choice__mark:after{background:HighlightText}}
902
+
903
+ /* Equal height is row-scoped; stacked columns retain their content height. */
904
+ .blu-columns.blu-columns--equal-height{align-items:stretch}
905
+ .blu-columns--equal-height > .blu-columns__column > :only-child{flex:1 1 auto}
906
+ .blu-columns--equal-height > .blu-columns__column > [data-placeholder]{display:flex;flex-direction:column}
907
+ .blu-columns--equal-height > .blu-columns__column > [data-placeholder] > :only-child{flex:1 1 auto}
package/dist/layout.d.ts CHANGED
@@ -6,3 +6,6 @@ export * from './splitter.js';
6
6
  export * from './app-layout.js';
7
7
  export * from './page-layout.js';
8
8
  export * from './shape-mask.js';
9
+ export * from './columns2.js';
10
+ export * from './columns3.js';
11
+ export * from './columns4.js';
package/dist/layout.js CHANGED
@@ -1 +1 @@
1
- import{a as p}from"./chunk-XIOI5PKM.js";import{a as t}from"./chunk-Y4TCT2K6.js";import{a as x}from"./chunk-3LWXPCWY.js";import"./chunk-MSMNEIWA.js";import{a as r}from"./chunk-U73BNLZ3.js";import{a as e}from"./chunk-LJ4O6YTN.js";import{a as f}from"./chunk-SIU7DSOA.js";import{a as m}from"./chunk-K2P2BHV5.js";import{f as o}from"./chunk-O3MRWAI5.js";import"./chunk-MEEQNPGM.js";import"./chunk-5TEIXA4R.js";import"./chunk-SDMH2EVD.js";export{p as createAppLayout,r as createBreadcrumbs,o as createCard,e as createPageHeader,t as createPageLayout,x as createShapeMask,f as createSidebar,m as createSplitter};
1
+ import{a as r}from"./chunk-U73BNLZ3.js";import{a as e}from"./chunk-LJ4O6YTN.js";import{a as f}from"./chunk-SIU7DSOA.js";import{a as m}from"./chunk-K2P2BHV5.js";import{a as p}from"./chunk-XIOI5PKM.js";import{a as t}from"./chunk-Y4TCT2K6.js";import{a as x}from"./chunk-3LWXPCWY.js";import"./chunk-MSMNEIWA.js";import{f as o}from"./chunk-O3MRWAI5.js";import"./chunk-MEEQNPGM.js";import"./chunk-5TEIXA4R.js";import"./chunk-SDMH2EVD.js";import"./chunk-BN3PDE5G.js";import"./chunk-VJVFHL6P.js";import"./chunk-IJ62ILKE.js";import{b as a,c as b,d as c}from"./chunk-UN2SLVFG.js";import"./chunk-EOKNLCNS.js";export{p as createAppLayout,r as createBreadcrumbs,o as createCard,a as createColumns2,b as createColumns3,c as createColumns4,e as createPageHeader,t as createPageLayout,x as createShapeMask,f as createSidebar,m as createSplitter};
@@ -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();})();