@esri/calcite-components 5.2.0-next.6 → 5.2.0-next.8

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 (214) hide show
  1. package/dist/cdn/{4STE75YI.js → 2KDUUXIU.js} +1 -1
  2. package/dist/cdn/{7WN6WR2B.js → 2T6RYQXQ.js} +1 -1
  3. package/dist/cdn/{FF3BNERI.js → 2ZYEFS4R.js} +1 -1
  4. package/dist/cdn/{NVF4K6HP.js → 33OATGR4.js} +1 -1
  5. package/dist/cdn/{25HEUF62.js → 3CUP2E34.js} +1 -1
  6. package/dist/cdn/{AJYPMLTJ.js → 3DMOTAL5.js} +1 -1
  7. package/dist/cdn/{OFWHQQ3T.js → 3DROCAQL.js} +1 -1
  8. package/dist/cdn/{Z3MFTUAY.js → 3EX6TDIA.js} +1 -1
  9. package/dist/cdn/{XVHDY6QN.js → 3I6N73T4.js} +1 -1
  10. package/dist/cdn/{JPSCTBEO.js → 3XDG5DCZ.js} +1 -1
  11. package/dist/cdn/{RWYSLJFS.js → 42E3K5AW.js} +1 -1
  12. package/dist/cdn/{BJOJINNV.js → 4CCOEFEW.js} +1 -1
  13. package/dist/cdn/{3IIMBPGI.js → 4DE452CJ.js} +1 -1
  14. package/dist/cdn/{JJQGOFEM.js → 4ECLQBZQ.js} +1 -1
  15. package/dist/cdn/{FEIOKH52.js → 4P77ZRBH.js} +1 -1
  16. package/dist/cdn/{M2KR7ZH5.js → 4TSJDMSV.js} +1 -1
  17. package/dist/cdn/{5TUWUQHN.js → 5CLXCL6Y.js} +1 -1
  18. package/dist/cdn/{MS7U4EKG.js → 5IJAADUF.js} +1 -1
  19. package/dist/cdn/{VCM2ZHPT.js → 5J2GB4J3.js} +1 -1
  20. package/dist/cdn/{NKMMLWMY.js → 5TJ7WWVN.js} +1 -1
  21. package/dist/cdn/{N3D6FMEH.js → 5YNXBNGP.js} +1 -1
  22. package/dist/cdn/{L77XFD22.js → 5ZOELRWO.js} +1 -1
  23. package/dist/cdn/{LZMQVYXJ.js → 6CAVVJCP.js} +1 -1
  24. package/dist/cdn/{QSYX3KO4.js → 6DGJHUQO.js} +1 -1
  25. package/dist/cdn/{WYO3R6BR.js → 6ENPRCZM.js} +1 -1
  26. package/dist/cdn/{HELW7C5O.js → 6ML3NLFM.js} +1 -1
  27. package/dist/cdn/{HRLK2RSF.js → 74XLK3K6.js} +1 -1
  28. package/dist/cdn/{H6QON2TD.js → 7IQUA4JE.js} +1 -1
  29. package/dist/cdn/{5OJ3Q4SI.js → 7L4VVXSZ.js} +1 -1
  30. package/dist/cdn/{55ECBMKY.js → 7LURFLRF.js} +1 -1
  31. package/dist/cdn/{RZKOBNPA.js → 7TYCYK5P.js} +1 -1
  32. package/dist/cdn/{EDSYBZIF.js → 7UCARA53.js} +1 -1
  33. package/dist/cdn/AEY5LOCA.js +2 -0
  34. package/dist/cdn/{4FFUO6AL.js → ALA7HODM.js} +1 -1
  35. package/dist/cdn/{7KYHXTZ7.js → ASWTAH37.js} +1 -1
  36. package/dist/cdn/{STVS4SFC.js → B3CPEQLG.js} +1 -1
  37. package/dist/cdn/{Z2RDFJ3O.js → BA36JDIJ.js} +1 -1
  38. package/dist/cdn/{LQJYSCJD.js → BHHO3CNQ.js} +1 -1
  39. package/dist/cdn/{XJAWMEAX.js → BQVG3O3G.js} +1 -1
  40. package/dist/cdn/{F5S74A6J.js → C2UEEF3A.js} +1 -1
  41. package/dist/cdn/{LB3LM7KW.js → C77YFIM3.js} +1 -1
  42. package/dist/cdn/{QXDIQQGO.js → CARSBC7E.js} +1 -1
  43. package/dist/cdn/{L22NWLBO.js → CASTSWDV.js} +1 -1
  44. package/dist/cdn/{DAE6OWX6.js → CDLARAP5.js} +1 -1
  45. package/dist/cdn/{DQBHDK7Y.js → CFCMJTYI.js} +1 -1
  46. package/dist/cdn/{Y4OMJTVI.js → CMIBFZZC.js} +1 -1
  47. package/dist/cdn/{BRRREDR5.js → CNH2PL3A.js} +1 -1
  48. package/dist/cdn/CU6HZ2JJ.js +2 -0
  49. package/dist/cdn/{VTB66B24.js → CUPW3OIR.js} +1 -1
  50. package/dist/cdn/{JTUQOIII.js → DHEWQOY4.js} +1 -1
  51. package/dist/cdn/{WHJTD6F6.js → DYNFXWTT.js} +1 -1
  52. package/dist/cdn/{CA2SBV2Y.js → E24OWARN.js} +1 -1
  53. package/dist/cdn/{ZW25BB34.js → E7ZDN5OH.js} +1 -1
  54. package/dist/cdn/{KHVMN3I6.js → EEOFGKLI.js} +2 -2
  55. package/dist/cdn/{L4DOJVLT.js → EKF6NDL7.js} +1 -1
  56. package/dist/cdn/{ZO734Y5U.js → ELOBOGQS.js} +1 -1
  57. package/dist/cdn/{HI4AC5NT.js → EPTZEF22.js} +1 -1
  58. package/dist/cdn/ERTTZ4RP.js +2 -0
  59. package/dist/cdn/{2VQ4SQ6E.js → EUTRDXQ2.js} +1 -1
  60. package/dist/cdn/{LII6G3V3.js → F4P2BGQV.js} +1 -1
  61. package/dist/cdn/{Z57BICST.js → FATNGVNJ.js} +1 -1
  62. package/dist/cdn/{27TMS7TL.js → FI6GRZKY.js} +1 -1
  63. package/dist/cdn/{VV7SRS22.js → FLGJFEF4.js} +1 -1
  64. package/dist/cdn/{LMPBTORD.js → FMPVR6AO.js} +1 -1
  65. package/dist/cdn/{MOSQZFYT.js → FOQ2SUKE.js} +1 -1
  66. package/dist/cdn/FT2HA2I4.js +2 -0
  67. package/dist/cdn/{KNOX6XCS.js → FUD2VGGV.js} +1 -1
  68. package/dist/cdn/{GYJEWH7E.js → G3YGGBDQ.js} +1 -1
  69. package/dist/cdn/{YHD7HKDX.js → GHDKS4TD.js} +1 -1
  70. package/dist/cdn/{WBIPNNGL.js → GWELZXFR.js} +1 -1
  71. package/dist/cdn/{ZYLB2RT3.js → HFY4WMNW.js} +1 -1
  72. package/dist/cdn/{NTJQBE2P.js → HI7DACWU.js} +1 -1
  73. package/dist/cdn/HMPOVZAJ.js +2 -0
  74. package/dist/cdn/{J5H2LW3F.js → HOOPFOCA.js} +1 -1
  75. package/dist/cdn/{TMENZ2VZ.js → HPZXWDPU.js} +1 -1
  76. package/dist/cdn/{EOLQCEAO.js → HWJ2CJFG.js} +1 -1
  77. package/dist/cdn/{6XR57LJ6.js → HX4CFRKW.js} +1 -1
  78. package/dist/cdn/{DIIBT6ES.js → IAN2VNLX.js} +1 -1
  79. package/dist/cdn/{5BGGNWJQ.js → IHGF5524.js} +1 -1
  80. package/dist/cdn/{SUMMJWW7.js → IOLHNYZE.js} +1 -1
  81. package/dist/cdn/{DXYF2XAM.js → J4ESNVXW.js} +1 -1
  82. package/dist/cdn/{C2SFDYFY.js → JCJV4TYS.js} +1 -1
  83. package/dist/cdn/{Y5DQ7II6.js → K3G7QFLF.js} +1 -1
  84. package/dist/cdn/{QM74WXQL.js → KVR23OAX.js} +1 -1
  85. package/dist/cdn/{KZ3ACECQ.js → KVWFFO2Y.js} +1 -1
  86. package/dist/cdn/{EKQRORSO.js → L6OWYBBH.js} +1 -1
  87. package/dist/cdn/{G2XUNH4V.js → LTE7JJUZ.js} +1 -1
  88. package/dist/cdn/{ET7FYLD3.js → MZDNIBCQ.js} +1 -1
  89. package/dist/cdn/{BDIWM5DD.js → NA5OLGIY.js} +1 -1
  90. package/dist/cdn/NR6V5HZB.js +2 -0
  91. package/dist/cdn/{TD3YG3I3.js → NTAEYRY6.js} +1 -1
  92. package/dist/cdn/{JE7COWZ4.js → NTL7LSIZ.js} +1 -1
  93. package/dist/cdn/{SA35OSIJ.js → NUZKOPX6.js} +1 -1
  94. package/dist/cdn/OIO5CL6R.js +2 -0
  95. package/dist/cdn/{3KPPK6JG.js → OJE22IGP.js} +1 -1
  96. package/dist/cdn/OKM5SS4B.js +2 -0
  97. package/dist/cdn/{UGLRJ7LC.js → OPL23FR7.js} +1 -1
  98. package/dist/cdn/{I5C2XC5I.js → P5E4K2YU.js} +1 -1
  99. package/dist/cdn/{ZMJFSBIG.js → PE3YZIAT.js} +1 -1
  100. package/dist/cdn/{MKFZEFQ6.js → PGMLUFVU.js} +1 -1
  101. package/dist/cdn/{FU52LD3F.js → QBSYK3AR.js} +1 -1
  102. package/dist/cdn/{QBOTNUZA.js → QEWYVOHX.js} +1 -1
  103. package/dist/cdn/{KWIJFLPJ.js → QFZURAGK.js} +1 -1
  104. package/dist/cdn/{3VB4KSXM.js → QI4FGO3G.js} +1 -1
  105. package/dist/cdn/{VCQ5M2XF.js → QKWOCRRV.js} +1 -1
  106. package/dist/cdn/QQDQTFWB.js +2 -0
  107. package/dist/cdn/{RUVRJVVT.js → QW24VHLN.js} +1 -1
  108. package/dist/cdn/QWPCCTSZ.js +2 -0
  109. package/dist/cdn/{SRKLCLO7.js → QZ6BJ2XH.js} +1 -1
  110. package/dist/cdn/{AQJNAUQZ.js → RGZBMAMP.js} +1 -1
  111. package/dist/cdn/{G3Y3LVCH.js → RHYXRYOQ.js} +1 -1
  112. package/dist/cdn/RPL7QQKV.js +2 -0
  113. package/dist/cdn/{U34FLFGP.js → RVEQPYHY.js} +1 -1
  114. package/dist/cdn/{GQHRGQXT.js → S3YOKYLX.js} +1 -1
  115. package/dist/cdn/{6SWGOABM.js → S7MAO6Y3.js} +1 -1
  116. package/dist/cdn/{O63QYVPR.js → SHL4XOS5.js} +1 -1
  117. package/dist/cdn/{PQ7DCUPL.js → SI5TAY2P.js} +1 -1
  118. package/dist/cdn/{6UNW5QUY.js → SPQMG5CJ.js} +1 -1
  119. package/dist/cdn/{5SJ7DUTY.js → SRWGOEGR.js} +1 -1
  120. package/dist/cdn/{GH2UFRFZ.js → TCVD3ABC.js} +1 -1
  121. package/dist/cdn/{CKF3HEXO.js → TUGQ2UBU.js} +1 -1
  122. package/dist/cdn/{RWITZVQC.js → U4ZE6G4R.js} +1 -1
  123. package/dist/cdn/{PKFY2P43.js → U6LERXLN.js} +1 -1
  124. package/dist/cdn/{XGSEBUKD.js → UBEY6AST.js} +1 -1
  125. package/dist/cdn/{RFXCFK6K.js → UBXZOZUZ.js} +1 -1
  126. package/dist/cdn/{2MVXV2MI.js → UFIIF52W.js} +1 -1
  127. package/dist/cdn/{2D5TGEGM.js → USJ4RTSF.js} +1 -1
  128. package/dist/cdn/{524GQTNG.js → UUHMF2K7.js} +1 -1
  129. package/dist/cdn/{KCNDBMLL.js → V7GKBVT6.js} +1 -1
  130. package/dist/cdn/{VYBYSRSC.js → VB76CA5U.js} +1 -1
  131. package/dist/cdn/{Y47AW44L.js → VB7LMUSD.js} +1 -1
  132. package/dist/cdn/{H4DY4JG2.js → VJOLRX4C.js} +1 -1
  133. package/dist/cdn/{T6FWGIF5.js → VOLJQKCP.js} +1 -1
  134. package/dist/cdn/{ISVN563X.js → VV6PH6JX.js} +1 -1
  135. package/dist/cdn/{AGH5I4NC.js → WA6QWQ6S.js} +1 -1
  136. package/dist/cdn/{ESHAWAWL.js → WDI6DIHP.js} +1 -1
  137. package/dist/cdn/{LF3SYGBF.js → WOETTTEU.js} +1 -1
  138. package/dist/cdn/{OQ4ME7QP.js → WTMSZNJL.js} +1 -1
  139. package/dist/cdn/{AXRVR7RO.js → WVYYQ7DV.js} +1 -1
  140. package/dist/cdn/{75TN3ELK.js → Y4TGZ522.js} +1 -1
  141. package/dist/cdn/{LFL2NOMX.js → YFQY77OM.js} +1 -1
  142. package/dist/cdn/YJPIZ6DX.js +2 -0
  143. package/dist/cdn/{IQFKCBYR.js → YK77UYHI.js} +1 -1
  144. package/dist/cdn/{KHGZVW5S.js → YMH4S3VW.js} +1 -1
  145. package/dist/cdn/{QB2FASAQ.js → YZNE3ZW6.js} +1 -1
  146. package/dist/cdn/{2HYBPCP5.js → Z34FSXQJ.js} +1 -1
  147. package/dist/cdn/Z5A5DESW.js +2 -0
  148. package/dist/cdn/{CL5AZEAL.js → ZEBRIFPJ.js} +1 -1
  149. package/dist/cdn/{MEMDH5M4.js → ZRWXJ4YA.js} +1 -1
  150. package/dist/cdn/{6QSTWKNM.js → ZT3EZZRB.js} +1 -1
  151. package/dist/cdn/assets/icon/userSave16.json +1 -0
  152. package/dist/cdn/assets/icon/userSave24.json +1 -0
  153. package/dist/cdn/assets/icon/userSave32.json +1 -0
  154. package/dist/cdn/assets/icon/weatherRadar16.json +1 -0
  155. package/dist/cdn/assets/icon/weatherRadar24.json +1 -0
  156. package/dist/cdn/assets/icon/weatherRadar32.json +1 -0
  157. package/dist/cdn/index.js +1 -1
  158. package/dist/chunks/date.js +9 -6
  159. package/dist/chunks/dom.js +3 -2
  160. package/dist/chunks/math.js +1 -1
  161. package/dist/chunks/responsive.js +1 -1
  162. package/dist/chunks/runtime.js +4 -4
  163. package/dist/chunks/useTime.js +24 -24
  164. package/dist/chunks/utils.js +3 -3
  165. package/dist/chunks/utils3.js +1 -1
  166. package/dist/components/calcite-carousel/customElement.js +1 -1
  167. package/dist/components/calcite-combobox/customElement.js +6 -6
  168. package/dist/components/calcite-date-picker/customElement.d.ts +10 -10
  169. package/dist/components/calcite-date-picker/customElement.js +18 -18
  170. package/dist/components/calcite-date-picker-day/customElement.js +2 -2
  171. package/dist/components/calcite-date-picker-month/customElement.d.ts +4 -4
  172. package/dist/components/calcite-date-picker-month/customElement.js +19 -14
  173. package/dist/components/calcite-date-picker-month-header/customElement.js +14 -9
  174. package/dist/components/calcite-dialog/customElement.d.ts +8 -8
  175. package/dist/components/calcite-dialog/customElement.js +5 -6
  176. package/dist/components/calcite-dropdown/customElement.d.ts +3 -3
  177. package/dist/components/calcite-dropdown/customElement.js +9 -6
  178. package/dist/components/calcite-dropdown-group/customElement.d.ts +1 -1
  179. package/dist/components/calcite-dropdown-group/customElement.js +1 -1
  180. package/dist/components/calcite-dropdown-item/customElement.d.ts +7 -7
  181. package/dist/components/calcite-dropdown-item/customElement.js +3 -3
  182. package/dist/components/calcite-input-date-picker/customElement.js +16 -16
  183. package/dist/components/calcite-input-time-picker/customElement.js +4 -4
  184. package/dist/components/calcite-input-time-zone/customElement.js +2 -2
  185. package/dist/components/calcite-pagination/customElement.js +1 -1
  186. package/dist/components/calcite-tab-nav/customElement.js +64 -26
  187. package/dist/components/calcite-tab-title/customElement.js +4 -0
  188. package/dist/components/calcite-tabs/customElement.d.ts +6 -0
  189. package/dist/components/calcite-tabs/customElement.js +13 -7
  190. package/dist/components/calcite-time-picker/customElement.js +4 -4
  191. package/dist/docs/api.json +1 -1
  192. package/dist/docs/docs.json +1 -1
  193. package/dist/docs/vscode.html-custom-data.json +1 -1
  194. package/dist/docs/web-types.json +1 -1
  195. package/dist/loader.js +2 -2
  196. package/dist/types/lumina.d.ts +1 -1
  197. package/dist/types/preact.d.ts +1 -1
  198. package/dist/types/react.d.ts +1 -1
  199. package/dist/types/stencil.d.ts +1 -1
  200. package/dist/utils/date.d.ts +2 -2
  201. package/package.json +3 -3
  202. package/dist/cdn/6JPWON4E.js +0 -2
  203. package/dist/cdn/6SJW5IBJ.js +0 -2
  204. package/dist/cdn/7QATBQUC.js +0 -2
  205. package/dist/cdn/H5PHSNTL.js +0 -2
  206. package/dist/cdn/HKIP6O5B.js +0 -2
  207. package/dist/cdn/HYS3KXOM.js +0 -2
  208. package/dist/cdn/IMZBK4NI.js +0 -2
  209. package/dist/cdn/LKEGNPWV.js +0 -2
  210. package/dist/cdn/P2BT5ISA.js +0 -2
  211. package/dist/cdn/PZXDAKVC.js +0 -2
  212. package/dist/cdn/Q6HQOCPI.js +0 -2
  213. package/dist/cdn/QVYX2WRU.js +0 -2
  214. package/dist/cdn/SOLIHAFU.js +0 -2
@@ -57,7 +57,7 @@ import type { DialogPlacement } from "./interfaces.js";
57
57
  */
58
58
  export abstract class Dialog extends LitElement {
59
59
  /** Specifies a function to run before the component closes. */
60
- accessor beforeClose: () => Promise<void>;
60
+ accessor beforeClose: (() => Promise<void>) | undefined;
61
61
  /**
62
62
  * When `true`, disables the component's close button.
63
63
  *
@@ -65,7 +65,7 @@ export abstract class Dialog extends LitElement {
65
65
  */
66
66
  accessor closeDisabled: boolean;
67
67
  /** Specifies the component's description. */
68
- accessor description: string;
68
+ accessor description: string | undefined;
69
69
  /**
70
70
  * When `true`, the component is draggable.
71
71
  *
@@ -96,7 +96,7 @@ export abstract class Dialog extends LitElement {
96
96
  * `"extraContainers"` specifies additional focusable elements external to the trap, such as 3rd-party components appending elements to the document body, and
97
97
  * `"setReturnFocus"` customizes the element to which focus is returned when the trap is deactivated. Return `false` to prevent focus return, or `undefined` to use the default behavior (returning focus to the element focused before activation).
98
98
  */
99
- accessor focusTrapOptions: Partial<FocusTrapOptions>;
99
+ accessor focusTrapOptions: Partial<FocusTrapOptions> | undefined;
100
100
  /**
101
101
  * When `true`, the component will not display at fullscreen, which may be desired in limited display areas, such as mobile devices.
102
102
  *
@@ -104,11 +104,11 @@ export abstract class Dialog extends LitElement {
104
104
  */
105
105
  accessor fullscreenDisabled: boolean;
106
106
  /** Specifies the component's heading text. */
107
- accessor heading: string;
107
+ accessor heading: string | undefined;
108
108
  /** Specifies the heading level number of the component's `heading` for proper document structure, without affecting visual styling. */
109
- accessor headingLevel: HeadingLevel;
109
+ accessor headingLevel: HeadingLevel | undefined;
110
110
  /** Specifies an icon to display. */
111
- accessor icon: IconName;
111
+ accessor icon: IconName | undefined;
112
112
  /**
113
113
  * When `true` and the element direction is right-to-left (`"rtl"`), flips the component`s `icon`.
114
114
  *
@@ -116,7 +116,7 @@ export abstract class Dialog extends LitElement {
116
116
  */
117
117
  accessor iconFlipRtl: boolean;
118
118
  /** Specifies the component's kind, which determines the top border styling. */
119
- accessor kind: Extract<"brand" | "danger" | "info" | "success" | "warning", Kind>;
119
+ accessor kind: Extract<"brand" | "danger" | "info" | "success" | "warning", Kind> | undefined;
120
120
  /**
121
121
  * When `true`, a busy indicator is displayed.
122
122
  *
@@ -189,7 +189,7 @@ export abstract class Dialog extends LitElement {
189
189
  */
190
190
  accessor topLayerDisabled: boolean;
191
191
  /** Specifies the component's width. */
192
- accessor width: Extract<Width, Scale>;
192
+ accessor width: Extract<Width, Scale> | undefined;
193
193
  /**
194
194
  * Specifies the component's width.
195
195
  *
@@ -41,8 +41,8 @@ const SLOTS = {
41
41
  footerStart: "footer-start",
42
42
  footerEnd: "footer-end"
43
43
  };
44
- const initialDragPosition = { x: null, y: null };
45
- const initialResizePosition = { top: null, right: null, bottom: null, left: null };
44
+ const initialDragPosition = { x: 0, y: 0 };
45
+ const initialResizePosition = { top: 0, right: 0, bottom: 0, left: 0 };
46
46
  const styles = css`:host{--calcite-dialog-scrim-background-color: rgba(0, 0, 0, .85);pointer-events:none;inset:0;display:flex;--calcite-internal-dialog-animation-offset: 20px}:host([top-layer-disabled]),:host([top-layer-disabled]) .container,:host([embedded]),.container--embedded{z-index:var(--calcite-z-index-overlay)}:host([embedded][modal]){position:absolute}.container{pointer-events:auto;position:fixed;inset:0;display:flex;block-size:100%;inline-size:100%;align-items:center;justify-content:center;overflow:hidden;color:var(--calcite-color-text-2);opacity:0;visibility:hidden;transition:visibility 0ms linear var(--calcite-internal-animation-timing-slow),opacity var(--calcite-internal-animation-timing-slow) ease-in-out}:host([placement=top]) .container{align-items:flex-start;justify-content:center}:host([placement=top-start]) .container{align-items:flex-start;justify-content:flex-start}:host([placement=top-end]) .container{align-items:flex-start;justify-content:flex-end}:host([placement=bottom]) .container{align-items:flex-end;justify-content:center}:host([placement=bottom-start]) .container{align-items:flex-end;justify-content:flex-start}:host([placement=bottom-end]) .container{align-items:flex-end;justify-content:flex-end}:host(:not([modal])) .container{pointer-events:none}:host([scale=s]){--calcite-internal-dialog-content-padding: var(--calcite-dialog-content-space, var(--calcite-spacing-sm));--calcite-internal-dialog-min-size-x: 198px;--calcite-internal-dialog-min-size-y: 140px}:host([scale=m]){--calcite-internal-dialog-content-padding: var(--calcite-dialog-content-space, var(--calcite-spacing-md));--calcite-internal-dialog-min-size-x: 288px;--calcite-internal-dialog-min-size-y: 180px}:host([scale=l]){--calcite-internal-dialog-content-padding: var(--calcite-dialog-content-space, var(--calcite-spacing-md-plus));--calcite-internal-dialog-min-size-x: 388px;--calcite-internal-dialog-min-size-y: 220px}.scrim{--calcite-scrim-background: var(--calcite-dialog-scrim-background-color, var(--calcite-color-transparent-scrim));--calcite-scrim-background-color: var( --calcite-dialog-scrim-background-color, var(--calcite-color-transparent-scrim) );position:fixed;inset:0;display:flex;overflow-y:hidden;z-index:calc(var(--calcite-z-index) * -1)}:host([top-layer-disabled]) .scrim{z-index:unset}calcite-panel{--calcite-panel-content-space: var(--calcite-dialog-content-space, var(--calcite-internal-dialog-content-padding));--calcite-panel-content-top-space: var( --calcite-dialog-content-top-space, var(--calcite-internal-dialog-content-padding) );--calcite-panel-content-bottom-space: var( --calcite-dialog-content-bottom-space, var(--calcite-internal-dialog-content-padding) );--calcite-panel-footer-space: var(--calcite-dialog-footer-space);--calcite-panel-border-color: var(--calcite-dialog-border-color);--calcite-panel-background-color: var(--calcite-dialog-background-color, var(--calcite-color-foreground-1));--calcite-panel-icon-color: var(--calcite-dialog-icon-color);--calcite-panel-heading-text-color: var(--calcite-dialog-heading-text-color);--calcite-panel-description-text-color: var(--calcite-dialog-description-text-color);--calcite-panel-header-background-color: var(--calcite-dialog-header-background-color);--calcite-panel-header-action-background-color: var(--calcite-dialog-header-action-background-color);--calcite-panel-header-action-background-color-hover: var(--calcite-dialog-header-action-background-color-hover);--calcite-panel-header-action-background-color-press: var(--calcite-dialog-header-action-background-color-press);--calcite-panel-header-action-text-color: var(--calcite-dialog-header-action-text-color);--calcite-panel-header-action-text-color-press: var(--calcite-dialog-header-action-text-color-press);--calcite-panel-footer-background-color: var(--calcite-dialog-footer-background-color);--calcite-panel-space: var(--calcite-dialog-space, var(--calcite-internal-dialog-content-padding));--calcite-panel-header-content-space: var(--calcite-dialog-header-content-space, var(--calcite-dialog-content-space));--calcite-popover-border-color: var(--calcite-dialog-action-menu-border-color, var(--calcite-color-border-1));--calcite-panel-corner-radius: var(--calcite-dialog-corner-radius)}:host([kind=brand]) calcite-panel{--calcite-panel-icon-color: var(--calcite-dialog-icon-color, var(--calcite-color-brand))}:host([kind=danger]) calcite-panel{--calcite-panel-icon-color: var(--calcite-dialog-icon-color, var(--calcite-color-status-danger))}:host([kind=info]) calcite-panel{--calcite-panel-icon-color: var(--calcite-dialog-icon-color, var(--calcite-color-status-info))}:host([kind=success]) calcite-panel{--calcite-panel-icon-color: var(--calcite-dialog-icon-color, var(--calcite-color-status-success))}:host([kind=warning]) calcite-panel{--calcite-panel-icon-color: var(--calcite-dialog-icon-color, var(--calcite-color-status-warning))}::slotted(*){--calcite-panel-background-color: initial}[popover]{padding:0;border:none;background-color:transparent;position:fixed;display:flex}[popover]:popover-open{display:flex}.dialog{pointer-events:none;position:relative;margin:1.5rem;box-sizing:border-box;display:flex;inline-size:100%;flex-direction:column;opacity:0;box-shadow:var(--calcite-shadow-md);-webkit-overflow-scrolling:touch;visibility:hidden;transition:inset-block-start var(--calcite-internal-animation-timing-slow) ease-in-out allow-discrete,opacity var(--calcite-internal-animation-timing-slow) ease-in-out;border-radius:var(--calcite-dialog-corner-radius, var(--calcite-corner-radius-sm));min-inline-size:var(--calcite-dialog-min-size-x, var(--calcite-internal-dialog-min-size-x));max-inline-size:var(--calcite-dialog-max-size-x, 100%);min-block-size:var(--calcite-dialog-min-size-y, var(--calcite-internal-dialog-min-size-y));max-block-size:var(--calcite-dialog-max-size-y, 100%);--calcite-internal-dialog-hidden-position: calc( var(--calcite-dialog-offset-y, 0px) + var(--calcite-internal-dialog-animation-offset) );--calcite-internal-dialog-shown-position: var(--calcite-dialog-offset-y, 0);inset-inline-start:var(--calcite-dialog-offset-x, 0);inset-block-start:var(--calcite-internal-dialog-hidden-position)}:host([top-layer-disabled]) .dialog,:host([embedded]) .dialog{z-index:var(--calcite-z-index-modal)}:host([menu-open]) .dialog{transition:visibility 0ms linear var(--calcite-internal-animation-timing-slow),opacity var(--calcite-internal-animation-timing-slow) ease-in-out}.panel{visibility:hidden;opacity:0;border-radius:var(--calcite-dialog-corner-radius, var(--calcite-corner-radius-sm));transition:visibility 0ms linear var(--calcite-internal-animation-timing-slow),opacity var(--calcite-internal-animation-timing-slow) ease-in-out}.container--open .panel{visibility:visible;opacity:1;transition:visibility 0ms linear,opacity var(--calcite-internal-animation-timing-slow) ease-in-out}.container--open{opacity:1;visibility:visible;transition-delay:0ms}.container--open .dialog{pointer-events:auto;visibility:visible;opacity:1;transition:inset-block-start var(--calcite-internal-animation-timing-slow) ease-in-out allow-discrete,opacity var(--calcite-internal-animation-timing-slow) ease-in-out;transition-delay:0ms}.width-s{inline-size:auto;inline-size:var(--calcite-dialog-size-x, 32rem);block-size:var(--calcite-dialog-size-y, auto)}@media screen and (max-width:35rem){:host(:not([fullscreen-disabled])) .width-s{margin:0;block-size:100%;max-block-size:100%;inline-size:100%;max-inline-size:100%;inset-inline-start:0;inset-block-start:var(--calcite-internal-dialog-animation-offset)}}.width-m{inline-size:var(--calcite-dialog-size-x, 48rem);block-size:var(--calcite-dialog-size-y, auto)}@media screen and (max-width:51rem){:host(:not([fullscreen-disabled])) .width-m{margin:0;block-size:100%;max-block-size:100%;inline-size:100%;max-inline-size:100%;inset-inline-start:0;inset-block-start:var(--calcite-internal-dialog-animation-offset)}}.width-l{inline-size:var(--calcite-dialog-size-x, 94rem);block-size:var(--calcite-dialog-size-y, auto)}@media screen and (max-width:97rem){:host(:not([fullscreen-disabled])) .width-l{margin:0;block-size:100%;max-block-size:100%;inline-size:100%;max-inline-size:100%;inset-inline-start:0;inset-block-start:var(--calcite-internal-dialog-animation-offset)}}:host([placement=cover]) .dialog{margin:0;block-size:100%;max-block-size:100%;inline-size:100%;max-inline-size:100%;border-radius:0}:host([placement=cover]) .panel{border-radius:0}:host([kind]) .panel{border-start-start-radius:0px;border-start-end-radius:0px}:host([kind]) .dialog{overflow:hidden}:host([kind=brand]) .dialog{border-color:var(--calcite-color-brand)}:host([kind=danger]) .dialog{border-color:var(--calcite-dialog-accent-color, var(--calcite-color-status-danger))}:host([kind=info]) .dialog{border-color:var(--calcite-dialog-accent-color, var(--calcite-color-status-info))}:host([kind=success]) .dialog{border-color:var(--calcite-dialog-accent-color, var(--calcite-color-status-success))}:host([kind=warning]) .dialog{border-color:var(--calcite-dialog-accent-color, var(--calcite-color-status-warning))}:host([open]) .dialog{inset-block-start:var(--calcite-internal-dialog-shown-position)}@starting-style{:host([open]) .dialog{inset-block-start:var(--calcite-internal-dialog-hidden-position);opacity:0}}:host([kind=brand][open]) .dialog,:host([kind=danger][open]) .dialog,:host([kind=info][open]) .dialog,:host([kind=success][open]) .dialog,:host([kind=warning][open]) .dialog{border-width:0px;border-block-start-width:4px;border-style:solid}.container--embedded{position:absolute;pointer-events:auto}.container--embedded calcite-scrim{position:absolute}.assistive-text{position:absolute;inline-size:1px;block-size:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host([hidden]){display:none}[hidden]{display:none}`;
47
47
  class Dialog extends LitElement {
48
48
  constructor() {
@@ -70,7 +70,6 @@ class Dialog extends LitElement {
70
70
  this.panelRef = createRef();
71
71
  this.popoverRef = createRef();
72
72
  this.resizePosition = { ...initialResizePosition };
73
- this.transitionEl = null;
74
73
  this.messages = useT9n();
75
74
  this.focusSetter = useSetFocus()(this);
76
75
  this.sizeOverride = useSizeOverride({
@@ -327,13 +326,13 @@ class Dialog extends LitElement {
327
326
  return;
328
327
  }
329
328
  if (!dragEnabled && !resizable) {
330
- transitionEl.style.transform = null;
329
+ transitionEl.style.transform = "";
331
330
  return;
332
331
  }
333
332
  const { top, right, bottom, left } = this.getAdjustedResizePosition(resizePosition);
334
333
  const translateX = Math.round(x + left + right);
335
334
  const translateY = Math.round(y + top + bottom);
336
- this.transitionEl.style.transform = translateX || translateY ? `translate(${translateX}px, ${translateY}px)` : null;
335
+ this.transitionEl.style.transform = translateX || translateY ? `translate(${translateX}px, ${translateY}px)` : "";
337
336
  }
338
337
  cleanUpInteractions() {
339
338
  this.interaction?.unset();
@@ -491,7 +490,7 @@ class Dialog extends LitElement {
491
490
  [CSS.container]: true,
492
491
  [CSS.containerOpen]: opened,
493
492
  [CSS.containerEmbedded]: this.embedded
494
- })} .popover=${!this.embedded ? "manual" : null} role=dialog ${ref(this.popoverRef)}>${this.modal ? html`<calcite-scrim class=${safeClassMap(CSS.scrim)} @click=${this.handleOutsideClose}></calcite-scrim>` : null}<div class=${safeClassMap({
493
+ })} .popover=${!this.embedded ? "manual" : void 0} role=dialog ${ref(this.popoverRef)}>${this.modal ? html`<calcite-scrim class=${safeClassMap(CSS.scrim)} @click=${this.handleOutsideClose}></calcite-scrim>` : null}<div class=${safeClassMap({
495
494
  [CSS.dialog]: true,
496
495
  [getDimensionClass("width", this.width, this.widthScale)]: !!(this.width || this.widthScale)
497
496
  })} @keydown=${this.handleKeyDown} ${ref(this.setTransitionEl)}>${assistiveText ? keyed("assistive-text", html`<div aria-live=polite class=${safeClassMap(CSS.assistiveText)}>${assistiveText}</div>`) : null}<slot name=${SLOTS.customContent}><calcite-panel class=${safeClassMap(CSS.panel)} .closable=${!this.closeDisabled} .description=${description} .heading=${heading} .headingLevel=${this.headingLevel} .hidden=${!this.opened} .icon=${icon} .iconFlipRtl=${iconFlipRtl} .loading=${this.loading} .menuOpen=${this.menuOpen} .messageOverrides=${this.messageOverrides} @calcitePanelClose=${this.handleInternalPanelCloseClick} @calcitePanelScroll=${this.handleInternalPanelScroll} @keydown=${this.handlePanelKeyDown} .overlayPositioning=${this.overlayPositioning} .scale=${this.scale} .topLayerDisabled=${this.topLayerDisabled} ${ref(this.panelRef)}><slot name=${SLOTS.actionBar} slot=${SLOTS$1.actionBar}></slot><slot name=${SLOTS.alerts} slot=${SLOTS$1.alerts}></slot><slot name=${SLOTS.headerActionsStart} slot=${SLOTS$1.headerActionsStart}></slot><slot name=${SLOTS.headerActionsEnd} slot=${SLOTS$1.headerActionsEnd}></slot><slot name=${SLOTS.description} slot=${SLOTS$1.description}></slot><slot name=${SLOTS.heading} slot=${SLOTS$1.heading}></slot><slot name=${SLOTS.headerContent} slot=${SLOTS$1.headerContent}></slot><slot name=${SLOTS.headerMenuActions} slot=${SLOTS$1.headerMenuActions}></slot><slot name=${SLOTS.fab} slot=${SLOTS$1.fab}></slot><slot name=${SLOTS.contentTop} slot=${SLOTS$1.contentTop}></slot><slot name=${SLOTS.contentBottom} slot=${SLOTS$1.contentBottom}></slot><slot name=${SLOTS.footerStart} slot=${SLOTS$1.footerStart}></slot><slot name=${SLOTS.footer} slot=${SLOTS$1.footer}></slot><slot name=${SLOTS.footerEnd} slot=${SLOTS$1.footerEnd}></slot><slot></slot></calcite-panel></slot></div></div>`;
@@ -27,7 +27,7 @@ export abstract class Dropdown extends LitElement {
27
27
  */
28
28
  accessor disabled: boolean;
29
29
  /** Specifies the component's fallback `placement` for slotted `calcite-dropdown-item`s when its initial or specified `placement` has insufficient space available. */
30
- accessor flipPlacements: FlipPlacement[];
30
+ accessor flipPlacements: FlipPlacement[] | undefined;
31
31
  /**
32
32
  * Specifies the maximum number of `calcite-dropdown-item`s to display before showing a scrollbar.
33
33
  * Value must be greater than `0`, and does not include `groupTitle`s from `calcite-dropdown-group`.
@@ -101,13 +101,13 @@ export abstract class Dropdown extends LitElement {
101
101
  */
102
102
  accessor type: "hover" | "click";
103
103
  /** Specifies the component's width. */
104
- accessor width: Extract<Width, Scale>;
104
+ accessor width: Extract<Width, Scale> | undefined;
105
105
  /**
106
106
  * Specifies the component's width.
107
107
  *
108
108
  * @deprecated in v3.0.0, removal target v6.0.0 - Use the `width` property instead.
109
109
  */
110
- accessor widthScale: Scale;
110
+ accessor widthScale: Scale | undefined;
111
111
  /**
112
112
  * Updates the component's position.
113
113
  *
@@ -75,7 +75,7 @@ class Dropdown extends LitElement {
75
75
  this.styles = styles;
76
76
  }
77
77
  get referenceElementType() {
78
- return this.referenceElement ? this.type : null;
78
+ return this.referenceElement ? this.type : void 0;
79
79
  }
80
80
  async reposition(delayed = false) {
81
81
  const { filteredFlipPlacements, floatingEl, offsetDistance, offsetSkidding, overlayPositioning, placement, referenceEl } = this;
@@ -198,7 +198,7 @@ class Dropdown extends LitElement {
198
198
  }
199
199
  setFilteredPlacements() {
200
200
  const { el, flipPlacements } = this;
201
- this.filteredFlipPlacements = flipPlacements ? filterValidFlipPlacements(flipPlacements, el) : null;
201
+ this.filteredFlipPlacements = flipPlacements ? filterValidFlipPlacements(flipPlacements, el) : void 0;
202
202
  }
203
203
  updateItems() {
204
204
  this.items = this.groups.map((group) => Array.from(group?.querySelectorAll("calcite-dropdown-item"))).reduce((previousValue, currentValue) => [...previousValue, ...currentValue], []);
@@ -266,8 +266,8 @@ class Dropdown extends LitElement {
266
266
  this.topLayer.hide();
267
267
  }
268
268
  setReferenceEl(el) {
269
- const previousReferenceEl = this.referenceEl instanceof HTMLElement ? this.referenceEl : null;
270
- const nextReferenceEl = el instanceof HTMLElement ? el : null;
269
+ const previousReferenceEl = this.referenceEl instanceof HTMLElement ? this.referenceEl : void 0;
270
+ const nextReferenceEl = el instanceof HTMLElement ? el : void 0;
271
271
  updateRefObserver(this.resizeObserver, previousReferenceEl, nextReferenceEl);
272
272
  if (this.referenceElementType || !nextReferenceEl) {
273
273
  return;
@@ -339,6 +339,9 @@ class Dropdown extends LitElement {
339
339
  this.selectedItems = this.items.filter((item) => item.selected);
340
340
  }
341
341
  getYDistanceFromScroller(last) {
342
+ if (!last) {
343
+ return NaN;
344
+ }
342
345
  const style = last.getBoundingClientRect();
343
346
  return last.offsetTop + style.height;
344
347
  }
@@ -380,7 +383,7 @@ class Dropdown extends LitElement {
380
383
  this.items.forEach((item) => {
381
384
  item.activeDescendant = item === activeItem;
382
385
  });
383
- this.activeDescendantElement = activeItem ?? null;
386
+ this.activeDescendantElement = activeItem ?? void 0;
384
387
  }
385
388
  navigateActiveItem(direction) {
386
389
  const traversableItems = this.getTraversableItems();
@@ -446,7 +449,7 @@ class Dropdown extends LitElement {
446
449
  }
447
450
  render() {
448
451
  const { open } = this;
449
- return this.interactiveContainer({ disabled: this.disabled, children: html`${!this.referenceElementType ? html`<div class=${safeClassMap(CSS.triggerContainer)} @click=${this.toggleClickDropdown} @focusin=${this.openHoverDropdown} @focusout=${this.closeHoverDropdown} @keydown=${this.keyDownHandler} ${ref(this.setReferenceEl)}><slot .ariaActiveDescendantElement=${this.activeDescendantElement ?? null} .ariaControlsElements=${this.scrollerEl ? [this.scrollerEl] : void 0} .ariaExpanded=${open} aria-haspopup=menu name=${SLOTS.trigger}></slot></div>` : null}<div class=${safeClassMap({
452
+ return this.interactiveContainer({ disabled: this.disabled, children: html`${!this.referenceElementType ? html`<div class=${safeClassMap(CSS.triggerContainer)} @click=${this.toggleClickDropdown} @focusin=${this.openHoverDropdown} @focusout=${this.closeHoverDropdown} @keydown=${this.keyDownHandler} ${ref(this.setReferenceEl)}><slot .ariaActiveDescendantElement=${this.activeDescendantElement ?? void 0} .ariaControlsElements=${this.scrollerEl ? [this.scrollerEl] : void 0} .ariaExpanded=${open} aria-haspopup=menu name=${SLOTS.trigger}></slot></div>` : null}<div class=${safeClassMap({
450
453
  [CSS.wrapper]: true,
451
454
  [getDimensionClass("width", this.width, this.widthScale)]: !!(this.width || this.widthScale)
452
455
  })} .inert=${!open} popover=manual ${ref(this.setFloatingEl)}><div .ariaLabelledByElements=${this.referenceEl instanceof HTMLElement ? [this.referenceEl] : void 0} class=${safeClassMap({
@@ -9,7 +9,7 @@ import type { SelectionMode } from "../interfaces.js";
9
9
  */
10
10
  export abstract class DropdownGroup extends LitElement {
11
11
  /** When specified, displays a group title. */
12
- accessor groupTitle: string;
12
+ accessor groupTitle: string | undefined;
13
13
  /**
14
14
  * The position of the group in the dropdown menu.
15
15
  *
@@ -57,7 +57,7 @@ class DropdownGroup extends LitElement {
57
57
  render() {
58
58
  const groupTitle = this.groupTitle ? html`<span aria-hidden=true class=${safeClassMap({ [CSS.title]: true, [CSS.firstTitle]: this.position === 0 })}>${this.groupTitle}</span>` : null;
59
59
  const dropdownSeparator = this.position > 0 ? html`<div class=${safeClassMap(CSS.separator)} role=separator></div>` : null;
60
- this.el.ariaLabel = this.groupTitle;
60
+ this.el.ariaLabel = this.groupTitle ?? null;
61
61
  this.el.role = "group";
62
62
  return html`<div class=${safeClassMap({
63
63
  [CSS$1.container]: true
@@ -24,17 +24,17 @@ export abstract class DropdownItem extends LitElement {
24
24
  *
25
25
  * Determines if the component will render as an anchor.
26
26
  */
27
- accessor href: string;
27
+ accessor href: string | undefined;
28
28
  /** Specifies an icon to display at the end of the component. */
29
- accessor iconEnd: IconName;
29
+ accessor iconEnd: IconName | undefined;
30
30
  /** When the element direction is right-to-left (`"rtl"`), flips the component's `iconStart` and/or `iconEnd`. */
31
- accessor iconFlipRtl: FlipContext;
31
+ accessor iconFlipRtl: FlipContext | undefined;
32
32
  /** Specifies an icon to display at the start of the component. */
33
- accessor iconStart: IconName;
33
+ accessor iconStart: IconName | undefined;
34
34
  /** Specifies an accessible label for the component. */
35
- accessor label: string;
35
+ accessor label: string | undefined;
36
36
  /** Specifies the relationship to the linked resource defined in `href`. */
37
- accessor rel: string;
37
+ accessor rel: string | undefined;
38
38
  /**
39
39
  * When `true`, the component is selected.
40
40
  *
@@ -42,7 +42,7 @@ export abstract class DropdownItem extends LitElement {
42
42
  */
43
43
  accessor selected: boolean;
44
44
  /** Specifies the frame or window to open the linked resource. */
45
- accessor target: string;
45
+ accessor target: string | undefined;
46
46
  /**
47
47
  * Sets focus on the component.
48
48
  *
@@ -55,7 +55,7 @@ class DropdownItem extends LitElement {
55
55
  this.emitRequestedItem();
56
56
  }
57
57
  updateActiveItemOnChange(event) {
58
- const parentEmittedChange = event.composedPath().includes(this.parentDropdownGroupEl);
58
+ const parentEmittedChange = this.parentDropdownGroupEl && event.composedPath().includes(this.parentDropdownGroupEl);
59
59
  if (parentEmittedChange) {
60
60
  this.requestedDropdownGroup = event.detail.requestedDropdownGroup;
61
61
  this.requestedDropdownItem = event.detail.requestedDropdownItem;
@@ -64,7 +64,7 @@ class DropdownItem extends LitElement {
64
64
  event.stopPropagation();
65
65
  }
66
66
  initialize() {
67
- this.parentDropdownGroupEl = this.el.closest("calcite-dropdown-group");
67
+ this.parentDropdownGroupEl = this.el.closest("calcite-dropdown-group") ?? void 0;
68
68
  if (this.selectionMode === "none") {
69
69
  this.selected = false;
70
70
  }
@@ -106,7 +106,7 @@ class DropdownItem extends LitElement {
106
106
  const itemAria = selectionMode !== "none" ? toAriaBoolean(this.selected) : null;
107
107
  const { disabled } = this;
108
108
  this.el.ariaChecked = itemAria;
109
- this.el.ariaLabel = !href ? label : "";
109
+ this.el.ariaLabel = !href ? label ?? null : "";
110
110
  this.el.role = itemRole;
111
111
  setAttribute(this.el, "tabIndex", -1);
112
112
  return this.interactiveContainer({ disabled, children: html`<div class=${safeClassMap({
@@ -199,19 +199,19 @@ class InputDatePicker extends LitElement {
199
199
  const minSource = getMinMaxSource(changes, "min");
200
200
  const maxSource = getMinMaxSource(changes, "max");
201
201
  if (minSource === "min") {
202
- this.minAsDate = dateFromISO(this.min) ?? void 0;
202
+ this.minAsDate = dateFromISO(this.min);
203
203
  } else if (minSource === "minAsDate") {
204
- this.minAsDate = dateFromISO(dateToISO(this.minAsDate)) ?? void 0;
204
+ this.minAsDate = dateFromISO(dateToISO(this.minAsDate));
205
205
  }
206
206
  if (maxSource === "max") {
207
- this.maxAsDate = dateFromISO(this.max) ?? void 0;
207
+ this.maxAsDate = dateFromISO(this.max);
208
208
  } else if (maxSource === "maxAsDate") {
209
- this.maxAsDate = dateFromISO(dateToISO(this.maxAsDate)) ?? void 0;
209
+ this.maxAsDate = dateFromISO(dateToISO(this.maxAsDate));
210
210
  }
211
211
  if ((minSource || maxSource) && !Array.isArray(this.valueAsDate)) {
212
212
  const validValueAsDate = dateFromRange(this.valueAsDate, this.minAsDate, this.maxAsDate);
213
213
  if (validValueAsDate !== this.valueAsDate) {
214
- this.valueAsDate = validValueAsDate ?? void 0;
214
+ this.valueAsDate = validValueAsDate;
215
215
  }
216
216
  }
217
217
  if (changes.has("open") && (this.hasUpdated || this.open !== false)) {
@@ -255,7 +255,7 @@ class InputDatePicker extends LitElement {
255
255
  if (Array.isArray(newValue)) {
256
256
  newValueAsDate = getValueAsDateRange(newValue);
257
257
  } else if (newValue) {
258
- newValueAsDate = dateFromISO(newValue) ?? void 0;
258
+ newValueAsDate = dateFromISO(newValue);
259
259
  } else {
260
260
  newValueAsDate = void 0;
261
261
  }
@@ -382,21 +382,21 @@ class InputDatePicker extends LitElement {
382
382
  }
383
383
  if (date) {
384
384
  this.setRangeValue([
385
- focusedInput === "start" ? date : dateFromISO(value[0]) ?? void 0,
386
- focusedInput === "end" ? date : dateFromISO(value[1]) ?? void 0
385
+ focusedInput === "start" ? date : dateFromISO(value[0]),
386
+ focusedInput === "end" ? date : dateFromISO(value[1])
387
387
  ]);
388
388
  this.localizeInputValues();
389
389
  } else {
390
390
  this.setRangeValue([
391
- focusedInput === "end" ? dateFromISO(value[0]) ?? void 0 : void 0,
392
- focusedInput === "start" ? dateFromISO(value[1]) ?? void 0 : void 0
391
+ focusedInput === "end" ? dateFromISO(value[0]) : void 0,
392
+ focusedInput === "start" ? dateFromISO(value[1]) : void 0
393
393
  ]);
394
394
  }
395
395
  } else {
396
396
  if (date) {
397
397
  this.setRangeValue([
398
- focusedInput === "start" ? date : dateFromISO(value[0]) ?? void 0,
399
- focusedInput === "end" ? date : dateFromISO(value[1]) ?? void 0
398
+ focusedInput === "start" ? date : dateFromISO(value[0]),
399
+ focusedInput === "end" ? date : dateFromISO(value[1])
400
400
  ]);
401
401
  this.localizeInputValues();
402
402
  }
@@ -533,15 +533,15 @@ class InputDatePicker extends LitElement {
533
533
  if (this.shouldFocusRangeStart() || this.rangeStartValueChangedByUser) {
534
534
  return;
535
535
  }
536
- if (this.proximitySelectionDisabled && this.valueAsDate && this.valueAsDate[1] === null) {
536
+ if (this.proximitySelectionDisabled && Array.isArray(this.valueAsDate) && this.valueAsDate[1] === void 0) {
537
537
  return;
538
538
  }
539
539
  this.open = false;
540
540
  this.focusInput();
541
541
  }
542
542
  localizeInputValues() {
543
- const date = dateFromRange(this.range ? Array.isArray(this.valueAsDate) && this.valueAsDate[0] || void 0 : this.valueAsDate, this.minAsDate, this.maxAsDate);
544
- const endDate = this.range ? dateFromRange(Array.isArray(this.valueAsDate) && this.valueAsDate[1] || void 0, this.minAsDate, this.maxAsDate) : null;
543
+ const date = dateFromRange(this.range ? Array.isArray(this.valueAsDate) && this.valueAsDate[0] : this.valueAsDate, this.minAsDate, this.maxAsDate);
544
+ const endDate = this.range ? dateFromRange(Array.isArray(this.valueAsDate) && this.valueAsDate[1], this.minAsDate, this.maxAsDate) : void 0;
545
545
  this.setInputValue((date && this.dateTimeFormat?.format(date)) ?? "", "start");
546
546
  this.setInputValue(this.range && endDate && this.dateTimeFormat?.format(endDate) || "", "end");
547
547
  }
@@ -602,7 +602,7 @@ class InputDatePicker extends LitElement {
602
602
  return;
603
603
  }
604
604
  this.userChangedValue = true;
605
- this.valueAsDate = newValue ? dateFromISO(newValue) ?? void 0 : void 0;
605
+ this.valueAsDate = newValue ? dateFromISO(newValue) : void 0;
606
606
  this.value = newValue || "";
607
607
  const changeEvent = this.calciteInputDatePickerChange.emit();
608
608
  if (changeEvent.defaultPrevented) {
@@ -329,19 +329,19 @@ class InputTimePicker extends LitElement {
329
329
  })} role=combobox ${ref(this.containerRef)}><calcite-icon class=${safeClassMap(CSS.clockIcon)} .icon=${ICONS.clock} .scale=${scale === "l" ? "m" : "s"}></calcite-icon><div class=${safeClassMap(CSS.contentContainer)}>${this.showPlaceholder && html`<div class=${safeClassMap(CSS.placeholder)}>${this.placeholder}</div>` || ""}<div aria-label=${getLabelText(this) ?? nothing} .ariaRequired=${this.required} class=${safeClassMap({
330
330
  [CSS.inputContainer]: true,
331
331
  [CSS.inputContainerHidden]: this.showPlaceholder
332
- })} dir=ltr id=${IDS.inputContainer} role=group>${showMeridiem && meridiemStart && this.renderMeridiem() || ""}<span aria-label=${this.messages.hour ?? nothing} aria-valuemax=23 aria-valuemin=1 aria-valuenow=${(hourIsNumber && parseInt(hour) || "0") ?? nothing} aria-valuetext=${hour ?? nothing} class=${safeClassMap({
332
+ })} dir=ltr id=${IDS.inputContainer} role=group>${showMeridiem && meridiemStart && this.renderMeridiem() || ""}<span aria-label=${this.messages.hour ?? nothing} aria-valuemax=23 aria-valuemin=1 aria-valuenow=${(hourIsNumber && parseInt(hour, 10) || "0") ?? nothing} aria-valuetext=${hour ?? nothing} class=${safeClassMap({
333
333
  [CSS.empty]: !localizedHour,
334
334
  [CSS.hour]: true,
335
335
  [CSS.input]: true
336
- })} @focus=${this.timePartFocusHandler} @keydown=${isInteractive ? handleHourKeyDownEvent : void 0} @mousedown=${this.mouseDownHandler} role=spinbutton tabindex=0 ${ref(this.hourRef)}>${localizedHour || emptyPlaceholder}</span><span class=${safeClassMap(CSS.hourSuffix)}>${localizedHourSuffix}</span><span aria-label=${this.messages.minute ?? nothing} aria-valuemax=12 aria-valuemin=1 aria-valuenow=${(minuteIsNumber && parseInt(minute) || "0") ?? nothing} aria-valuetext=${minute ?? nothing} class=${safeClassMap({
336
+ })} @focus=${this.timePartFocusHandler} @keydown=${isInteractive ? handleHourKeyDownEvent : void 0} @mousedown=${this.mouseDownHandler} role=spinbutton tabindex=0 ${ref(this.hourRef)}>${localizedHour || emptyPlaceholder}</span><span class=${safeClassMap(CSS.hourSuffix)}>${localizedHourSuffix}</span><span aria-label=${this.messages.minute ?? nothing} aria-valuemax=12 aria-valuemin=1 aria-valuenow=${(minuteIsNumber && parseInt(minute, 10) || "0") ?? nothing} aria-valuetext=${minute ?? nothing} class=${safeClassMap({
337
337
  [CSS.empty]: !localizedMinute,
338
338
  [CSS.input]: true,
339
339
  [CSS.minute]: true
340
- })} @focus=${this.timePartFocusHandler} @keydown=${isInteractive ? handleMinuteKeyDownEvent : void 0} @mousedown=${this.mouseDownHandler} role=spinbutton tabindex=0 ${ref(this.minuteRef)}>${localizedMinute || emptyPlaceholder}</span><span class=${safeClassMap(CSS.minuteSuffix)}>${localizedMinuteSuffix}</span>${showSecond && html`<span aria-label=${this.messages.second ?? nothing} aria-valuemax=59 aria-valuemin=0 aria-valuenow=${(secondIsNumber && parseInt(second) || "0") ?? nothing} aria-valuetext=${second ?? nothing} class=${safeClassMap({
340
+ })} @focus=${this.timePartFocusHandler} @keydown=${isInteractive ? handleMinuteKeyDownEvent : void 0} @mousedown=${this.mouseDownHandler} role=spinbutton tabindex=0 ${ref(this.minuteRef)}>${localizedMinute || emptyPlaceholder}</span><span class=${safeClassMap(CSS.minuteSuffix)}>${localizedMinuteSuffix}</span>${showSecond && html`<span aria-label=${this.messages.second ?? nothing} aria-valuemax=59 aria-valuemin=0 aria-valuenow=${(secondIsNumber && parseInt(second, 10) || "0") ?? nothing} aria-valuetext=${second ?? nothing} class=${safeClassMap({
341
341
  [CSS.empty]: !localizedSecond,
342
342
  [CSS.input]: true,
343
343
  [CSS.second]: true
344
- })} @focus=${this.timePartFocusHandler} @keydown=${isInteractive ? handleSecondKeyDownEvent : void 0} @mousedown=${this.mouseDownHandler} role=spinbutton tabindex=0 ${ref(this.secondRef)}>${localizedSecond || emptyPlaceholder}</span>` || ""}${showFractionalSecond && html`<span class=${safeClassMap(CSS.decimalSeparator)}>${localizedDecimalSeparator}</span>` || ""}${showFractionalSecond && html`<span aria-label=${this.messages.fractionalSecond ?? nothing} aria-valuemax=999 aria-valuemin=1 aria-valuenow=${(fractionalSecondIsNumber && parseInt(fractionalSecond) || "0") ?? nothing} aria-valuetext=${localizedFractionalSecond ?? nothing} class=${safeClassMap({
344
+ })} @focus=${this.timePartFocusHandler} @keydown=${isInteractive ? handleSecondKeyDownEvent : void 0} @mousedown=${this.mouseDownHandler} role=spinbutton tabindex=0 ${ref(this.secondRef)}>${localizedSecond || emptyPlaceholder}</span>` || ""}${showFractionalSecond && html`<span class=${safeClassMap(CSS.decimalSeparator)}>${localizedDecimalSeparator}</span>` || ""}${showFractionalSecond && html`<span aria-label=${this.messages.fractionalSecond ?? nothing} aria-valuemax=999 aria-valuemin=1 aria-valuenow=${(fractionalSecondIsNumber && parseInt(fractionalSecond, 10) || "0") ?? nothing} aria-valuetext=${localizedFractionalSecond ?? nothing} class=${safeClassMap({
345
345
  [CSS.empty]: !localizedFractionalSecond,
346
346
  [CSS.fractionalSecond]: true,
347
347
  [CSS.input]: true
@@ -81,8 +81,8 @@ async function createTimeZoneItems(locale, messages, mode, referenceDate, standa
81
81
  if (timeZoneA.startsWith(gmtTimeZoneString) && timeZoneB.startsWith(gmtTimeZoneString)) {
82
82
  const offsetStringA = timeZoneA.substring(gmtTimeZoneString.length);
83
83
  const offsetStringB = timeZoneB.substring(gmtTimeZoneString.length);
84
- const offsetA = offsetStringA === "" ? 0 : parseInt(offsetStringA);
85
- const offsetB = offsetStringB === "" ? 0 : parseInt(offsetStringB);
84
+ const offsetA = offsetStringA === "" ? 0 : parseInt(offsetStringA, 10);
85
+ const offsetB = offsetStringB === "" ? 0 : parseInt(offsetStringB, 10);
86
86
  return offsetB - offsetA;
87
87
  }
88
88
  return labeledTimeZoneA.localeCompare(labeledTimeZoneB);
@@ -187,7 +187,7 @@ class Pagination extends LitElement {
187
187
  }
188
188
  handlePageClick(event) {
189
189
  const target = event.target;
190
- this.startItem = parseInt(target.value);
190
+ this.startItem = parseInt(target.value, 10);
191
191
  this.emitUpdate();
192
192
  }
193
193
  renderEllipsis(type) {
@@ -33,12 +33,13 @@ class TabNav extends LitElement {
33
33
  this.resizeObserver = createObserver("resize", () => {
34
34
  this.updateScrollingState();
35
35
  });
36
- this.makeFirstVisibleTabClosable = false;
37
36
  this.messages = useT9n();
38
37
  this.hasOverflowingEndTabTitle = false;
39
38
  this.hasOverflowingStartTabTitle = false;
39
+ this.hasVisibleTabTitles = true;
40
40
  this.bordered = false;
41
41
  this.layout = "inline";
42
+ this.lastTabClosable = false;
42
43
  this.position = "bottom";
43
44
  this.scale = "m";
44
45
  this.selectedTitle = null;
@@ -49,13 +50,14 @@ class TabNav extends LitElement {
49
50
  this.listen("calciteInternalTabsFocusNext", this.focusNextTabHandler);
50
51
  this.listen("calciteInternalTabsFocusFirst", this.focusFirstTabHandler);
51
52
  this.listen("calciteInternalTabsFocusLast", this.focusLastTabHandler);
53
+ this.listen("calciteInternalTabTitleCloseChange", this.syncVisibleTabTitlesState);
52
54
  this.listen("calciteInternalTabTitleRegister", this.updateTabTitles);
53
55
  this.listen("calciteInternalTabsActivate", this.internalActivateTabHandler);
54
56
  this.listen("calciteInternalTabsClose", this.internalCloseTabHandler);
55
57
  this.listenOn(document.body, "calciteInternalTabChange", this.globalInternalTabChangeHandler);
56
58
  }
57
59
  static {
58
- this.properties = { hasOverflowingEndTabTitle: [16, {}, { state: true }], hasOverflowingStartTabTitle: [16, {}, { state: true }], selectedTabId: [16, {}, { state: true }], bordered: [7, {}, { reflect: true, type: Boolean }], layout: [3, {}, { reflect: true }], messageOverrides: [0, {}, { attribute: false }], position: 1, scale: 1, selectedTitle: [0, {}, { attribute: false }], storageId: [3, {}, { reflect: true }], syncId: [3, {}, { reflect: true }] };
60
+ this.properties = { hasOverflowingEndTabTitle: [16, {}, { state: true }], hasOverflowingStartTabTitle: [16, {}, { state: true }], hasVisibleTabTitles: [16, {}, { state: true }], selectedTabId: [16, {}, { state: true }], bordered: [7, {}, { reflect: true, type: Boolean }], layout: [3, {}, { reflect: true }], lastTabClosable: [5, {}, { type: Boolean }], messageOverrides: [0, {}, { attribute: false }], position: 1, scale: 1, selectedTitle: [0, {}, { attribute: false }], storageId: [3, {}, { reflect: true }], syncId: [3, {}, { reflect: true }] };
59
61
  }
60
62
  static {
61
63
  this.styles = styles;
@@ -76,7 +78,7 @@ class TabNav extends LitElement {
76
78
  }
77
79
  }
78
80
  willUpdate(changes) {
79
- if (changes.has("selectedTitle") && (this.hasUpdated || this.selectedTitle !== null)) {
81
+ if (changes.has("selectedTitle") && (this.hasUpdated || this.selectedTitle !== null) && this.selectedTabId !== void 0) {
80
82
  this.calciteInternalTabChange.emit({
81
83
  tab: this.selectedTabId
82
84
  });
@@ -84,6 +86,9 @@ class TabNav extends LitElement {
84
86
  if (changes.has("selectedTabId")) {
85
87
  this.selectedTabIdChanged();
86
88
  }
89
+ if (changes.has("lastTabClosable") && this.hasUpdated) {
90
+ this.updateLastVisibleTabClosable();
91
+ }
87
92
  const { parentTabsEl } = this;
88
93
  if (parentTabsEl) {
89
94
  this.layout = parentTabsEl.layout;
@@ -93,7 +98,7 @@ class TabNav extends LitElement {
93
98
  }
94
99
  loaded() {
95
100
  this.scrollTabTitleIntoView(this.selectedTitle, "instant");
96
- if (this.tabTitles.length && this.tabTitles.every((title) => !title.selected) && !this.selectedTabId) {
101
+ if (this.tabTitles.length && this.tabTitles.every((title) => !title.selected) && this.selectedTabId === void 0) {
97
102
  this.tabTitles[0].getTabIdentifier().then((tab) => {
98
103
  this.calciteInternalTabChange.emit({
99
104
  tab
@@ -110,7 +115,7 @@ class TabNav extends LitElement {
110
115
  }
111
116
  get scrollerButtonWidth() {
112
117
  const { scale } = this;
113
- return parseInt(scale === "s" ? calciteSize24 : scale === "m" ? calciteSize32 : calciteSize44);
118
+ return parseInt(scale === "s" ? calciteSize24 : scale === "m" ? calciteSize32 : calciteSize44, 10);
114
119
  }
115
120
  get tabTitles() {
116
121
  return filterDirectChildren(this.el, "calcite-tab-title");
@@ -169,6 +174,7 @@ class TabNav extends LitElement {
169
174
  this.selectedTabId = event.detail;
170
175
  this.selectedTitle = await this.getTabTitleById(this.selectedTabId);
171
176
  }
177
+ this.syncVisibleTabTitlesState();
172
178
  }
173
179
  globalInternalTabChangeHandler(event) {
174
180
  if (this.syncId && event.target !== this.el && event.target.syncId === this.syncId && this.selectedTabId !== event.detail.tab) {
@@ -178,7 +184,10 @@ class TabNav extends LitElement {
178
184
  }
179
185
  async selectedTabIdChanged() {
180
186
  await this.componentOnReady();
181
- if (localStorage && this.storageId && this.selectedTabId !== void 0 && this.selectedTabId !== null) {
187
+ if (this.selectedTabId === void 0) {
188
+ return;
189
+ }
190
+ if (localStorage && this.storageId) {
182
191
  localStorage.setItem(`calcite-tab-nav-${this.storageId}`, JSON.stringify(this.selectedTabId));
183
192
  }
184
193
  this.calciteInternalTabChange.emit({
@@ -209,13 +218,33 @@ class TabNav extends LitElement {
209
218
  tabTitles.forEach((child) => {
210
219
  this.intersectionObserver?.observe(child);
211
220
  });
221
+ this.syncVisibleTabTitlesState();
222
+ }
223
+ syncVisibleTabTitlesState() {
224
+ this.updateLastVisibleTabClosable();
225
+ this.hasVisibleTabTitles = this.getVisibleTabTitlesIndices(this.tabTitles).length > 0;
226
+ this.calciteInternalTabNavSlotChange.emit([...this.tabTitles]);
227
+ }
228
+ updateLastVisibleTabClosable() {
229
+ const { tabTitles } = this;
212
230
  const visibleTabTitlesIndices = this.getVisibleTabTitlesIndices(tabTitles);
213
231
  const totalVisibleTabTitles = visibleTabTitlesIndices.length;
214
- if (totalVisibleTabTitles > 1 && this.makeFirstVisibleTabClosable) {
215
- tabTitles[visibleTabTitlesIndices[0]].closable = true;
216
- this.makeFirstVisibleTabClosable = false;
232
+ if (totalVisibleTabTitles === 0) {
233
+ return;
234
+ }
235
+ const firstVisibleTabTitle = tabTitles[visibleTabTitlesIndices[0]];
236
+ const shouldDisableCloseButton = !this.lastTabClosable && totalVisibleTabTitles === 1;
237
+ if (shouldDisableCloseButton) {
238
+ if (firstVisibleTabTitle.closable) {
239
+ this.firstVisibleTabMadeNonClosable = firstVisibleTabTitle;
240
+ firstVisibleTabTitle.closable = false;
241
+ }
242
+ return;
243
+ }
244
+ if (this.firstVisibleTabMadeNonClosable && !this.firstVisibleTabMadeNonClosable.closed) {
245
+ this.firstVisibleTabMadeNonClosable.closable = true;
217
246
  }
218
- this.calciteInternalTabNavSlotChange.emit(tabTitles);
247
+ this.firstVisibleTabMadeNonClosable = void 0;
219
248
  }
220
249
  setTabTitleContainerEl(el) {
221
250
  this.tabTitleContainerEl = el;
@@ -334,26 +363,35 @@ class TabNav extends LitElement {
334
363
  }
335
364
  handleTabTitleClose(closedTabTitleEl) {
336
365
  const { tabTitles } = this;
366
+ const visibleTabTitles = tabTitles.filter((tabTitle) => !tabTitle.closed);
367
+ const enabledVisibleTabTitles = this.enabledTabTitles;
368
+ const totalVisibleTabTitles = visibleTabTitles.length;
337
369
  const selectionModified = closedTabTitleEl.selected;
338
- const visibleTabTitlesIndices = this.getVisibleTabTitlesIndices(tabTitles);
339
- const totalVisibleTabTitles = visibleTabTitlesIndices.length;
340
- if (totalVisibleTabTitles === 1 && tabTitles[visibleTabTitlesIndices[0]].closable) {
341
- this.makeFirstVisibleTabClosable = true;
342
- tabTitles[visibleTabTitlesIndices[0]].closable = false;
343
- this.selectedTabId = visibleTabTitlesIndices[0];
344
- if (selectionModified) {
345
- tabTitles[visibleTabTitlesIndices[0]].activateTab();
346
- }
347
- } else if (totalVisibleTabTitles > 1) {
370
+ this.hasVisibleTabTitles = totalVisibleTabTitles > 0;
371
+ this.calciteInternalTabNavSlotChange.emit([...tabTitles]);
372
+ if (totalVisibleTabTitles === 0) {
373
+ this.selectedTitle = null;
374
+ this.selectedTabId = void 0;
375
+ return;
376
+ }
377
+ if (selectionModified) {
348
378
  const closedTabTitleIndex = tabTitles.findIndex((el) => el === closedTabTitleEl);
349
- const nextTabTitleIndex = visibleTabTitlesIndices.find((value) => value > closedTabTitleIndex);
350
- if (this.selectedTabId === closedTabTitleIndex) {
351
- this.selectedTabId = nextTabTitleIndex ? nextTabTitleIndex : totalVisibleTabTitles - 1;
352
- tabTitles[this.selectedTabId].activateTab();
379
+ const nextVisibleTabTitle = enabledVisibleTabTitles.find((tabTitle) => tabTitles.indexOf(tabTitle) > closedTabTitleIndex) || enabledVisibleTabTitles.at(-1);
380
+ if (!nextVisibleTabTitle) {
381
+ this.selectedTitle = null;
382
+ this.selectedTabId = void 0;
383
+ this.updateLastVisibleTabClosable();
384
+ return;
353
385
  }
386
+ nextVisibleTabTitle.activateTab();
354
387
  }
388
+ this.updateLastVisibleTabClosable();
355
389
  requestAnimationFrame(() => {
356
- focusElement(tabTitles[this.selectedTabId]);
390
+ const selectedTitle = this.selectedTitle;
391
+ if (!selectedTitle) {
392
+ return;
393
+ }
394
+ focusElement(selectedTitle);
357
395
  });
358
396
  }
359
397
  render() {
@@ -363,7 +401,7 @@ class TabNav extends LitElement {
363
401
  [CSS.scale(this.scale)]: true,
364
402
  [CSS.position(this.position)]: true,
365
403
  [CSS_UTILITY.rtl]: this.effectiveDir === "rtl"
366
- })}><div class=${safeClassMap({
404
+ })} .hidden=${!this.hasVisibleTabTitles}><div class=${safeClassMap({
367
405
  [CSS.tabTitleSlotWrapper]: true
368
406
  })} @scroll=${this.onTabTitleScroll} @wheel=${this.onTabTitleWheel} ${ref(this.setTabTitleContainerEl)}><slot @slotchange=${this.onSlotChange}></slot></div><div class=${safeClassMap(CSS.scrollButtonContainer)} .hidden=${!this.hasOverflowingEndTabTitle && !this.hasOverflowingStartTabTitle}>${this.renderScrollButton("start")}${this.renderScrollButton("end")}</div></div>`;
369
407
  }
@@ -54,6 +54,7 @@ class TabTitle extends LitElement {
54
54
  this.selected = false;
55
55
  this.calciteInternalTabIconChanged = createEvent({ cancelable: false });
56
56
  this.calciteInternalTabTitleRegister = createEvent({ cancelable: false });
57
+ this.calciteInternalTabTitleCloseChange = createEvent({ cancelable: false });
57
58
  this.calciteInternalTabsActivate = createEvent({ cancelable: false });
58
59
  this.calciteInternalTabsClose = createEvent({ cancelable: false });
59
60
  this.calciteInternalTabsFocusFirst = createEvent({ cancelable: false });
@@ -108,6 +109,9 @@ class TabTitle extends LitElement {
108
109
  if (changes.has("selected") && (this.hasUpdated || this.selected !== false)) {
109
110
  this.selectedHandler();
110
111
  }
112
+ if (changes.has("closed") && this.hasUpdated) {
113
+ this.calciteInternalTabTitleCloseChange.emit();
114
+ }
111
115
  if (this.parentTabsEl) {
112
116
  this.layout = this.parentTabsEl.layout;
113
117
  this.bordered = this.parentTabsEl.bordered;