@esri/calcite-components 5.1.1-next.4 → 5.1.1-next.6

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 (227) hide show
  1. package/dist/cdn/{6URRYJJC.js → 25SUELBY.js} +1 -1
  2. package/dist/cdn/{UWYNYTMN.js → 27MK2V4G.js} +1 -1
  3. package/dist/cdn/2MRL4RKW.js +2 -0
  4. package/dist/cdn/{FAXETKEB.js → 2PEF7GQE.js} +1 -1
  5. package/dist/cdn/{3E5HT7WV.js → 2VL3OCAZ.js} +1 -1
  6. package/dist/cdn/{WG6S2XJI.js → 32QFEQZS.js} +1 -1
  7. package/dist/cdn/{GZLUCGFN.js → 34WAUXUE.js} +1 -1
  8. package/dist/cdn/{DT2W5XTJ.js → 3BUDIEL3.js} +1 -1
  9. package/dist/cdn/{JV3HNXO4.js → 3H6RVKMN.js} +1 -1
  10. package/dist/cdn/{WKGWLLC5.js → 3NNR2AZU.js} +1 -1
  11. package/dist/cdn/{SCWOG2PF.js → 3VNZC64N.js} +1 -1
  12. package/dist/cdn/{ICR6VGXW.js → 3XFDQDVC.js} +1 -1
  13. package/dist/cdn/{NUAG24SD.js → 3XMNPYNB.js} +1 -1
  14. package/dist/cdn/{ACTDFQ7A.js → 45C4ENM6.js} +1 -1
  15. package/dist/cdn/{4ZPAVVYJ.js → 4NYY44U4.js} +1 -1
  16. package/dist/cdn/{EZMKINVL.js → 4Q7PL2KY.js} +1 -1
  17. package/dist/cdn/{KCOVOOEW.js → 5CBFI2KM.js} +1 -1
  18. package/dist/cdn/{SAP7K723.js → 5JIKOOZ6.js} +1 -1
  19. package/dist/cdn/{TB6QF6QC.js → 5L5RJCKK.js} +1 -1
  20. package/dist/cdn/{ZNN7Y3Q2.js → 5N32D533.js} +1 -1
  21. package/dist/cdn/{CQYUSMYI.js → 5QXKHC54.js} +1 -1
  22. package/dist/cdn/{7TRR6NS7.js → 5RJTKL4J.js} +1 -1
  23. package/dist/cdn/{TNBTRBEH.js → 5SYOHCLD.js} +1 -1
  24. package/dist/cdn/{TXPXLQUH.js → 5WFJNGXP.js} +1 -1
  25. package/dist/cdn/5X2CR2NN.js +2 -0
  26. package/dist/cdn/{M4N5KK5H.js → 6MUZLYOR.js} +1 -1
  27. package/dist/cdn/{2ESXTULI.js → 6N246L5H.js} +1 -1
  28. package/dist/cdn/{H3KW6SFE.js → 6UM5PQBD.js} +1 -1
  29. package/dist/cdn/6W4CWLXH.js +2 -0
  30. package/dist/cdn/{BAK72T45.js → 72EJ64LI.js} +1 -1
  31. package/dist/cdn/{6TAMH7YM.js → 72XY7IDN.js} +1 -1
  32. package/dist/cdn/{QMKT34NA.js → 73EQ5TEB.js} +1 -1
  33. package/dist/cdn/74CLXGQH.js +2 -0
  34. package/dist/cdn/{YZYPUE3P.js → 74UIHSVE.js} +1 -1
  35. package/dist/cdn/{AVEA3JYC.js → 773VWCGD.js} +1 -1
  36. package/dist/cdn/{54FANYIK.js → 7AOQ4FPG.js} +1 -1
  37. package/dist/cdn/{YVAWGS4S.js → 7M4ANW77.js} +1 -1
  38. package/dist/cdn/{B4XZL24D.js → 7YNDWV76.js} +1 -1
  39. package/dist/cdn/{2IBAD62X.js → A332WZ6V.js} +1 -1
  40. package/dist/cdn/ATWAUE4R.js +2 -0
  41. package/dist/cdn/{WC7KZ5RN.js → BTSHRUHD.js} +1 -1
  42. package/dist/cdn/BZJYGCDK.js +2 -0
  43. package/dist/cdn/{ZC4LZHSU.js → C2BK5CUC.js} +1 -1
  44. package/dist/cdn/{H36BMH7D.js → C4DX6ZIA.js} +1 -1
  45. package/dist/cdn/{3WYNE4QF.js → C4PPQBLW.js} +1 -1
  46. package/dist/cdn/{UEXXVM6G.js → CBUNIAKL.js} +1 -1
  47. package/dist/cdn/{FJHS7DDZ.js → CDGEWGDD.js} +1 -1
  48. package/dist/cdn/{AFDMIMYJ.js → CQYI4Z2Z.js} +1 -1
  49. package/dist/cdn/{SUKQDR3P.js → CUSR767T.js} +1 -1
  50. package/dist/cdn/{JSEQVKIC.js → CUTXFNYN.js} +1 -1
  51. package/dist/cdn/{GUV5FMJI.js → CZPSEMDH.js} +1 -1
  52. package/dist/cdn/{GLXEUJPR.js → D2HPEC7F.js} +1 -1
  53. package/dist/cdn/{KY6BBDSF.js → DAXLXKIY.js} +1 -1
  54. package/dist/cdn/{IFEFYG7Y.js → DEQNFOAS.js} +1 -1
  55. package/dist/cdn/{DPV2S2W4.js → DJMAPSDY.js} +1 -1
  56. package/dist/cdn/{UZZ34E4T.js → DZSC3TJX.js} +1 -1
  57. package/dist/cdn/{VNENCDEM.js → E4MGJ47Y.js} +1 -1
  58. package/dist/cdn/{6334DHXU.js → EHS7L663.js} +1 -1
  59. package/dist/cdn/{JJ2XXUYL.js → EJUEMY56.js} +1 -1
  60. package/dist/cdn/{ACJ3OWNF.js → ERBKUSSX.js} +1 -1
  61. package/dist/cdn/{7Y3634W2.js → F3E7QPPC.js} +1 -1
  62. package/dist/cdn/{GVWCR74G.js → F5MS5PBN.js} +1 -1
  63. package/dist/cdn/{B6TEVZWE.js → F7RQCNJ4.js} +1 -1
  64. package/dist/cdn/{KN2YMMJU.js → FE3TGEP7.js} +1 -1
  65. package/dist/cdn/{4KMJ4MXD.js → FKPCRFUW.js} +1 -1
  66. package/dist/cdn/{WRN5WBB6.js → FKX46Z6K.js} +1 -1
  67. package/dist/cdn/{7UDR7DFA.js → FZTLSQJL.js} +1 -1
  68. package/dist/cdn/{7HNSFXSY.js → G62VTWNT.js} +1 -1
  69. package/dist/cdn/{LNQQJUF3.js → GEKASHNF.js} +1 -1
  70. package/dist/cdn/{IONE557M.js → GYYFBZS2.js} +1 -1
  71. package/dist/cdn/{N32WSYSG.js → HQHM5NWX.js} +1 -1
  72. package/dist/cdn/{XKBIB37X.js → I2DNOFC6.js} +1 -1
  73. package/dist/cdn/{CKKHWLPH.js → I5HZNPIE.js} +1 -1
  74. package/dist/cdn/{ACPUOOSS.js → IHGSINVA.js} +1 -1
  75. package/dist/cdn/{LZFQODN7.js → IRDSJTUK.js} +1 -1
  76. package/dist/cdn/{62HI5T32.js → IXQQO6HC.js} +1 -1
  77. package/dist/cdn/{6QHKZ6N2.js → JDAOWOTY.js} +1 -1
  78. package/dist/cdn/{WVRMCTHV.js → JMKB4CRU.js} +1 -1
  79. package/dist/cdn/JQIHTMWX.js +2 -0
  80. package/dist/cdn/{B6JI7EFV.js → KB2WIMAL.js} +1 -1
  81. package/dist/cdn/{EPDFNXOA.js → KCENWQ6Z.js} +1 -1
  82. package/dist/cdn/KJNTF66K.js +2 -0
  83. package/dist/cdn/{M7L5IJNX.js → KQGUXAM6.js} +1 -1
  84. package/dist/cdn/M2TFDONT.js +2 -0
  85. package/dist/cdn/{H7USABMA.js → MD2UCHOX.js} +1 -1
  86. package/dist/cdn/{HCDCLO25.js → MRRVOAJL.js} +1 -1
  87. package/dist/cdn/{ZQZPGG2I.js → MWMTHMMN.js} +1 -1
  88. package/dist/cdn/{WF3KH3KX.js → N3YQ6P66.js} +1 -1
  89. package/dist/cdn/{D53MEGF3.js → N6V2UT62.js} +1 -1
  90. package/dist/cdn/{KZII5LW7.js → NAJTDRNC.js} +1 -1
  91. package/dist/cdn/{ISATMK3J.js → ND7KY7GE.js} +1 -1
  92. package/dist/cdn/{HRXTLTVO.js → NDVX6CLP.js} +1 -1
  93. package/dist/cdn/{RCL7WVWK.js → O6PZKJ7R.js} +1 -1
  94. package/dist/cdn/OB3Z74X6.js +2 -0
  95. package/dist/cdn/{S6Y5KXTC.js → OGNY6ZIB.js} +1 -1
  96. package/dist/cdn/{WGTXCQ3O.js → OJO5NPP3.js} +1 -1
  97. package/dist/cdn/{EILZPSBO.js → OWJYARYV.js} +1 -1
  98. package/dist/cdn/{NKHYGAEA.js → OXKGEAUB.js} +1 -1
  99. package/dist/cdn/{YVL6U4S3.js → PJSI5N6F.js} +1 -1
  100. package/dist/cdn/{H5AJS6TE.js → PW2XM5HR.js} +1 -1
  101. package/dist/cdn/{LNTMBB4T.js → QABVNEOF.js} +1 -1
  102. package/dist/cdn/{PJFK6R25.js → QN4XN67Z.js} +1 -1
  103. package/dist/cdn/QXPWDVC2.js +2 -0
  104. package/dist/cdn/{ADNBYFDU.js → R4C3WA5S.js} +1 -1
  105. package/dist/cdn/{J7AXA5LK.js → RDOHAXOA.js} +1 -1
  106. package/dist/cdn/{SJCVYBDF.js → REW7C42W.js} +1 -1
  107. package/dist/cdn/{GS6RPTCF.js → RIEKXKB2.js} +1 -1
  108. package/dist/cdn/{ROZCUEUS.js → ROY5CHB3.js} +1 -1
  109. package/dist/cdn/{MGC2TVCO.js → RUNWK23I.js} +1 -1
  110. package/dist/cdn/{SGRN6ZVC.js → RVXZUGJA.js} +1 -1
  111. package/dist/cdn/{ID36ZNWO.js → RZR44QGM.js} +1 -1
  112. package/dist/cdn/{X5NQ6JCY.js → SBQVCX2M.js} +1 -1
  113. package/dist/cdn/{54YEESGE.js → SGZ3IG5W.js} +1 -1
  114. package/dist/cdn/{4KKONFB4.js → SH7DQCS7.js} +1 -1
  115. package/dist/cdn/SS4J7QES.js +2 -0
  116. package/dist/cdn/{JPLDIX5B.js → TFTS26NS.js} +1 -1
  117. package/dist/cdn/{2URTQOMI.js → TMWGSGAP.js} +1 -1
  118. package/dist/cdn/{VRXZT4W2.js → TPML2DIA.js} +1 -1
  119. package/dist/cdn/{2DULJTZM.js → TQJK5WF5.js} +1 -1
  120. package/dist/cdn/{W3RFQNTS.js → TRN7FUFM.js} +1 -1
  121. package/dist/cdn/U6NA5WAH.js +2 -0
  122. package/dist/cdn/{D2VHXI3B.js → UE4QYUAU.js} +1 -1
  123. package/dist/cdn/{OVLA6XSV.js → UIFHJ5IO.js} +1 -1
  124. package/dist/cdn/UOSSQPFY.js +2 -0
  125. package/dist/cdn/{XPPVR4JK.js → VCDOY22T.js} +1 -1
  126. package/dist/cdn/{GMX26I6Z.js → VVJGLEIA.js} +1 -1
  127. package/dist/cdn/{HOII54SV.js → VWQPK5JA.js} +1 -1
  128. package/dist/cdn/{OKQZCFIY.js → VYXKMJSU.js} +1 -1
  129. package/dist/cdn/{MVD7UGWN.js → VYZ6WAWT.js} +1 -1
  130. package/dist/cdn/W3N2DKPC.js +2 -0
  131. package/dist/cdn/{IHAUCNQX.js → WAXTXFBL.js} +1 -1
  132. package/dist/cdn/{3ZONR255.js → WRQD4O6A.js} +1 -1
  133. package/dist/cdn/{FO5JD4B6.js → WUBPEGFV.js} +1 -1
  134. package/dist/cdn/{PHXN4HLP.js → WVJUNLFN.js} +1 -1
  135. package/dist/cdn/{GBZSLSHZ.js → WYGNUS2B.js} +1 -1
  136. package/dist/cdn/{KDQ3UZH7.js → XCNAJ4XA.js} +1 -1
  137. package/dist/cdn/{KVFTDPP2.js → XTGDCTQE.js} +1 -1
  138. package/dist/cdn/{FBWOZGYD.js → Y44WJ7Z2.js} +1 -1
  139. package/dist/cdn/{UZDC6JVX.js → Y6WCKCHJ.js} +1 -1
  140. package/dist/cdn/{BIBFBRJ4.js → YBFI2FQL.js} +1 -1
  141. package/dist/cdn/{ORWPOYLO.js → YFUBBPNI.js} +1 -1
  142. package/dist/cdn/{LJBIF6OV.js → YI3ZMHS5.js} +1 -1
  143. package/dist/cdn/{GMC5U6MT.js → YNG6JO67.js} +1 -1
  144. package/dist/cdn/{5DZK4XYB.js → Z2GSU7Q2.js} +1 -1
  145. package/dist/cdn/{X433YAPN.js → Z7NNDJEN.js} +1 -1
  146. package/dist/cdn/{TWFY346Z.js → ZBN5LXKS.js} +1 -1
  147. package/dist/cdn/{YQWYH3MV.js → ZEEFJOPQ.js} +1 -1
  148. package/dist/cdn/index.js +1 -1
  149. package/dist/chunks/date.js +3 -3
  150. package/dist/chunks/dom.js +15 -3
  151. package/dist/chunks/floating-ui.js +1 -1
  152. package/dist/chunks/label.js +6 -6
  153. package/dist/chunks/locale.js +3 -6
  154. package/dist/chunks/runtime.js +4 -4
  155. package/dist/chunks/useForm.js +10 -4
  156. package/dist/chunks/useTime.js +40 -45
  157. package/dist/components/calcite-card/customElement.d.ts +1 -1
  158. package/dist/components/calcite-carousel/customElement.js +5 -6
  159. package/dist/components/calcite-checkbox/customElement.d.ts +4 -4
  160. package/dist/components/calcite-chip-group/customElement.js +1 -1
  161. package/dist/components/calcite-color-picker/customElement.js +1 -1
  162. package/dist/components/calcite-color-picker-hex-input/customElement.js +1 -1
  163. package/dist/components/calcite-combobox/customElement.js +11 -6
  164. package/dist/components/calcite-flow/customElement.d.ts +2 -2
  165. package/dist/components/calcite-flow/customElement.js +1 -1
  166. package/dist/components/calcite-flow-item/customElement.js +1 -1
  167. package/dist/components/calcite-input/customElement.js +4 -6
  168. package/dist/components/calcite-input-text/customElement.js +1 -1
  169. package/dist/components/calcite-list/customElement.d.ts +4 -4
  170. package/dist/components/calcite-list/customElement.js +4 -5
  171. package/dist/components/calcite-list-item/customElement.d.ts +6 -6
  172. package/dist/components/calcite-list-item/customElement.js +17 -16
  173. package/dist/components/calcite-list-item-group/customElement.d.ts +1 -1
  174. package/dist/components/calcite-loader/customElement.js +3 -3
  175. package/dist/components/calcite-radio-button/customElement.d.ts +5 -5
  176. package/dist/components/calcite-radio-button/customElement.js +1 -1
  177. package/dist/components/calcite-radio-button-group/customElement.d.ts +4 -4
  178. package/dist/components/calcite-radio-button-group/customElement.js +3 -3
  179. package/dist/components/calcite-rating/customElement.d.ts +7 -7
  180. package/dist/components/calcite-rating/customElement.js +13 -9
  181. package/dist/components/calcite-tab/customElement.d.ts +1 -1
  182. package/dist/components/calcite-tab/customElement.js +2 -1
  183. package/dist/components/calcite-tab-nav/customElement.d.ts +3 -3
  184. package/dist/components/calcite-tab-nav/customElement.js +12 -7
  185. package/dist/components/calcite-tab-title/customElement.d.ts +3 -3
  186. package/dist/components/calcite-tab-title/customElement.js +2 -0
  187. package/dist/components/calcite-table/customElement.js +22 -14
  188. package/dist/components/calcite-table-cell/customElement.d.ts +2 -2
  189. package/dist/components/calcite-table-cell/customElement.js +6 -0
  190. package/dist/components/calcite-table-header/customElement.d.ts +4 -4
  191. package/dist/components/calcite-table-header/customElement.js +2 -0
  192. package/dist/components/calcite-table-row/customElement.js +5 -3
  193. package/dist/components/calcite-tabs/customElement.js +3 -2
  194. package/dist/components/calcite-text-area/customElement.d.ts +12 -12
  195. package/dist/components/calcite-text-area/customElement.js +5 -3
  196. package/dist/components/calcite-tile/customElement.d.ts +6 -6
  197. package/dist/components/calcite-time-picker/customElement.d.ts +1 -1
  198. package/dist/components/calcite-time-picker/customElement.js +35 -15
  199. package/dist/components/calcite-tooltip/customElement.d.ts +2 -2
  200. package/dist/components/calcite-tooltip/customElement.js +1 -1
  201. package/dist/components/calcite-tree/customElement.js +7 -6
  202. package/dist/components/calcite-tree-item/customElement.d.ts +3 -3
  203. package/dist/components/calcite-tree-item/customElement.js +12 -6
  204. package/dist/controllers/useSortable.d.ts +2 -2
  205. package/dist/controllers/useTime.d.ts +20 -20
  206. package/dist/docs/api.json +1 -1
  207. package/dist/docs/docs.json +1 -1
  208. package/dist/docs/supported-browsers.json +1 -1
  209. package/dist/docs/vscode.html-custom-data.json +1 -1
  210. package/dist/docs/web-types.json +1 -1
  211. package/dist/utils/dom.d.ts +1 -1
  212. package/package.json +4 -4
  213. package/dist/cdn/2MWPMRNJ.js +0 -2
  214. package/dist/cdn/5ZXYOEVA.js +0 -2
  215. package/dist/cdn/AO2HCAIF.js +0 -2
  216. package/dist/cdn/AP2LDRUV.js +0 -2
  217. package/dist/cdn/BAKFDEYB.js +0 -2
  218. package/dist/cdn/BTML4MEJ.js +0 -2
  219. package/dist/cdn/GZU4L4YE.js +0 -2
  220. package/dist/cdn/IVJ5CA2B.js +0 -2
  221. package/dist/cdn/RW3PY4A7.js +0 -2
  222. package/dist/cdn/SB3DKUEP.js +0 -2
  223. package/dist/cdn/T7EQTOMC.js +0 -2
  224. package/dist/cdn/UWZCA674.js +0 -2
  225. package/dist/cdn/VYRAJF74.js +0 -2
  226. package/dist/cdn/ZWWMN3TM.js +0 -2
  227. package/dist/cdn/ZXAA7KJS.js +0 -2
@@ -60,9 +60,9 @@ function getConfig() {
60
60
  }
61
61
  return effectiveConfig;
62
62
  }
63
- const version = "5.1.1-next.4";
64
- const buildDate = "2026-06-04";
65
- const revision = "09ee56df3";
63
+ const version = "5.1.1-next.6";
64
+ const buildDate = "2026-06-08";
65
+ const revision = "ffb6800bd";
66
66
  function stampVersion() {
67
67
  const config = getConfig();
68
68
  if (config && config.version) {
@@ -85,7 +85,7 @@ if (!isServer) {
85
85
  if (process.env.NODE_ENV !== "test") {
86
86
  queueMicrotask(stampVersion);
87
87
  }
88
- const runtime = makeRuntime({ defaultAssetPath: "https://cdn.jsdelivr.net/npm/@esri/calcite-components@5.1.1-next.4/dist/cdn/", hydratedAttribute: "calcite-hydrated" });
88
+ const runtime = makeRuntime({ defaultAssetPath: "https://cdn.jsdelivr.net/npm/@esri/calcite-components@5.1.1-next.6/dist/cdn/", hydratedAttribute: "calcite-hydrated" });
89
89
  const { customElement, getAssetPath, setAssetPath } = runtime;
90
90
  export {
91
91
  CSS_UTILITY as C,
@@ -97,8 +97,12 @@ function validate({
97
97
  };
98
98
  }
99
99
  function validateValue(inputDelegate, valueToValidate) {
100
- inputDelegate.value = // file will throw if non-empty string is provided
101
- inputDelegate.type === "file" || valueToValidate == null ? "" : String(valueToValidate);
100
+ if (inputDelegate.type === "file") {
101
+ inputDelegate.value = "";
102
+ const isMissingValue = !valueToValidate || valueToValidate instanceof FileList && valueToValidate.length === 0;
103
+ return !inputDelegate.required || !isMissingValue;
104
+ }
105
+ inputDelegate.value = valueToValidate == null ? "" : String(valueToValidate);
102
106
  return inputDelegate.validity.valid;
103
107
  }
104
108
  function getValidityFlags(validityState) {
@@ -304,9 +308,11 @@ const useForm = (options) => {
304
308
  }
305
309
  function getFormValue() {
306
310
  const value = getComponentValue();
307
- if (Array.isArray(value)) {
311
+ if (Array.isArray(value) || value instanceof FileList) {
308
312
  const formData = new FormData();
309
- value.forEach((value2) => formData.append(component.name, value2));
313
+ for (const item of value) {
314
+ formData.append(component.name, item);
315
+ }
310
316
  return formData;
311
317
  }
312
318
  if (isCheckable(component)) {
@@ -128,23 +128,28 @@ function getLocalizedTimePart(part, parts, locale = "en") {
128
128
  return null;
129
129
  }
130
130
  if (part === "hourSuffix") {
131
- const hourIndex = parts.indexOf(parts.find(({ type }) => type === "hour"));
132
- const minuteIndex = parts.indexOf(parts.find(({ type }) => type === "minute"));
131
+ const hourPart = parts.find(({ type }) => type === "hour");
132
+ const minutePart = parts.find(({ type }) => type === "minute");
133
+ const hourIndex = hourPart ? parts.indexOf(hourPart) : -1;
134
+ const minuteIndex = minutePart ? parts.indexOf(minutePart) : -1;
133
135
  const hourSuffix = parts[hourIndex + 1];
134
136
  return hourSuffix?.type === "literal" && minuteIndex - hourIndex === 2 ? hourSuffix.value || null : null;
135
137
  }
136
138
  if (part === "minuteSuffix") {
137
- const minuteIndex = parts.indexOf(parts.find(({ type }) => type === "minute"));
139
+ const minutePart = parts.find(({ type }) => type === "minute");
140
+ const minuteIndex = minutePart ? parts.indexOf(minutePart) : -1;
138
141
  const minuteSuffix = parts[minuteIndex + 1];
139
142
  return minuteSuffix?.type === "literal" ? minuteSuffix.value || null : null;
140
143
  }
141
144
  if (part === "secondSuffix") {
142
145
  let secondSuffixPart;
143
- const fractionalSecondIndex = parts.indexOf(parts.find(({ type }) => type === "fractionalSecond"));
146
+ const fractionalSecondPart = parts.find(({ type }) => type === "fractionalSecond");
147
+ const fractionalSecondIndex = fractionalSecondPart ? parts.indexOf(fractionalSecondPart) : -1;
144
148
  if (fractionalSecondIndex !== -1) {
145
149
  secondSuffixPart = parts[fractionalSecondIndex + 1];
146
150
  } else {
147
- const secondIndex = parts.indexOf(parts.find(({ type }) => type === "second"));
151
+ const secondPart = parts.find(({ type }) => type === "second");
152
+ const secondIndex = secondPart ? parts.indexOf(secondPart) : -1;
148
153
  secondSuffixPart = parts[secondIndex + 1];
149
154
  }
150
155
  return secondSuffixPart?.type === "literal" && secondSuffixPart.value || null;
@@ -152,7 +157,7 @@ function getLocalizedTimePart(part, parts, locale = "en") {
152
157
  if (part === "meridiem") {
153
158
  const meridiemFromBrowser = parts.find(({ type }) => type === "dayPeriod")?.value || null;
154
159
  if (meridiemFromBrowser) {
155
- return getLocalizedMeridiem({ locale, parts });
160
+ return getLocalizedMeridiem({ locale, parts }) ?? null;
156
161
  }
157
162
  }
158
163
  return parts.find(({ type }) => type === part)?.value || null;
@@ -192,14 +197,11 @@ function isValidTime(value) {
192
197
  }
193
198
  const hourAsNumber = parseInt(hour);
194
199
  const minuteAsNumber = parseInt(minute);
195
- const secondAsNumber = parseInt(second);
200
+ const secondAsNumber = parseInt(second ?? "");
196
201
  const hourValid = isValidNumber(hour) && hourAsNumber >= 0 && hourAsNumber < 24;
197
202
  const minuteValid = isValidNumber(minute) && minuteAsNumber >= 0 && minuteAsNumber < 60;
198
203
  const secondValid = isValidNumber(second) && secondAsNumber >= 0 && secondAsNumber < 60;
199
- if (hourValid && minuteValid && !second || hourValid && minuteValid && secondValid) {
200
- return true;
201
- }
202
- return false;
204
+ return hourValid && minuteValid && (!second || secondValid);
203
205
  }
204
206
  function isValidTimePart(value, part) {
205
207
  if (part === "meridiem") {
@@ -208,7 +210,8 @@ function isValidTimePart(value, part) {
208
210
  if (!isValidNumber(value)) {
209
211
  return false;
210
212
  }
211
- const valueAsNumber = Number(value);
213
+ const valueAsString = value;
214
+ const valueAsNumber = Number(valueAsString);
212
215
  const isZeroOrGreater = valueAsNumber >= 0;
213
216
  const isLessThanMaxHour = valueAsNumber < 24;
214
217
  const isLessThanMaxSecond = valueAsNumber < 60;
@@ -290,8 +293,8 @@ function localizeTimeString({
290
293
  0,
291
294
  parseInt(hour),
292
295
  parseInt(minute),
293
- includeSeconds && parseInt(second),
294
- includeSeconds && fractionalSecond && fractionalSecondPartToMilliseconds(fractionalSecond)
296
+ includeSeconds && typeof second === "string" ? parseInt(second) : 0,
297
+ includeSeconds && fractionalSecond ? fractionalSecondPartToMilliseconds(fractionalSecond) : 0
295
298
  )
296
299
  );
297
300
  const formatter = createLocaleDateTimeFormatter({
@@ -311,7 +314,7 @@ function localizeTimeString({
311
314
  second: getLocalizedTimePart("second", parts),
312
315
  decimalSeparator: getLocalizedDecimalSeparator(locale, numberingSystem),
313
316
  fractionalSecond: getLocalizedTimePart("fractionalSecond", parts),
314
- secondSuffix: locale !== "bg" && getLocalizedTimePart("secondSuffix", parts),
317
+ secondSuffix: locale !== "bg" ? getLocalizedTimePart("secondSuffix", parts) : null,
315
318
  meridiem: getLocalizedTimePart("meridiem", parts, locale)
316
319
  };
317
320
  } else {
@@ -341,7 +344,7 @@ function parseTimeString(value, step) {
341
344
  if (secondDecimal?.includes(".")) {
342
345
  [second, fractionalSecond] = secondDecimal.split(".");
343
346
  }
344
- if (step) {
347
+ if (step && typeof fractionalSecond === "string") {
345
348
  fractionalSecond = formatFractionalSecond(fractionalSecond, step);
346
349
  }
347
350
  return {
@@ -422,7 +425,7 @@ class TimeController extends GenericController {
422
425
  case "Backspace":
423
426
  case "Delete":
424
427
  event.preventDefault();
425
- this.setValuePart("hour", null);
428
+ this.setValuePart("hour", void 0);
426
429
  break;
427
430
  case "ArrowDown":
428
431
  event.preventDefault();
@@ -444,7 +447,7 @@ class TimeController extends GenericController {
444
447
  if (numberKeys.includes(key)) {
445
448
  const keyAsNumber = parseInt(key);
446
449
  let newMinute;
447
- if (isValidNumber(this.minute) && this.minute.startsWith("0")) {
450
+ if (typeof this.minute === "string" && isValidNumber(this.minute) && this.minute.startsWith("0")) {
448
451
  const minuteAsNumber = parseInt(this.minute);
449
452
  newMinute = minuteAsNumber > maxTenthForMinuteAndSecond ? keyAsNumber : `${minuteAsNumber}${keyAsNumber}`;
450
453
  } else {
@@ -456,7 +459,7 @@ class TimeController extends GenericController {
456
459
  case "Backspace":
457
460
  case "Delete":
458
461
  event.preventDefault();
459
- this.setValuePart("minute", null);
462
+ this.setValuePart("minute", void 0);
460
463
  break;
461
464
  case "ArrowDown":
462
465
  event.preventDefault();
@@ -478,7 +481,7 @@ class TimeController extends GenericController {
478
481
  if (numberKeys.includes(key)) {
479
482
  const keyAsNumber = parseInt(key);
480
483
  let newSecond;
481
- if (isValidNumber(this.second) && this.second.startsWith("0")) {
484
+ if (typeof this.second === "string" && isValidNumber(this.second) && this.second.startsWith("0")) {
482
485
  const secondAsNumber = parseInt(this.second);
483
486
  newSecond = secondAsNumber > maxTenthForMinuteAndSecond ? keyAsNumber : `${secondAsNumber}${keyAsNumber}`;
484
487
  } else {
@@ -490,7 +493,7 @@ class TimeController extends GenericController {
490
493
  case "Backspace":
491
494
  case "Delete":
492
495
  event.preventDefault();
493
- this.setValuePart("second", null);
496
+ this.setValuePart("second", void 0);
494
497
  break;
495
498
  case "ArrowDown":
496
499
  event.preventDefault();
@@ -525,7 +528,7 @@ class TimeController extends GenericController {
525
528
  case "Backspace":
526
529
  case "Delete":
527
530
  event.preventDefault();
528
- this.setValuePart("fractionalSecond", null);
531
+ this.setValuePart("fractionalSecond", void 0);
529
532
  break;
530
533
  case "ArrowDown":
531
534
  event.preventDefault();
@@ -583,7 +586,7 @@ class TimeController extends GenericController {
583
586
  this.decrementMinuteOrSecond("second");
584
587
  }
585
588
  incrementHour() {
586
- const newHour = isValidNumber(this.hour) ? this.hour === "23" ? 0 : parseInt(this.hour) + 1 : 1;
589
+ const newHour = typeof this.hour === "string" && isValidNumber(this.hour) ? this.hour === "23" ? 0 : parseInt(this.hour) + 1 : 1;
587
590
  this.setValuePart("hour", newHour);
588
591
  }
589
592
  incrementMinute() {
@@ -694,17 +697,7 @@ class TimeController extends GenericController {
694
697
  const newValue = toISOTimeString(value, step);
695
698
  if (isValidTime(value)) {
696
699
  const { hour, minute, second, fractionalSecond } = parseTimeString(newValue, step);
697
- const {
698
- hour: localizedHour,
699
- hourSuffix: localizedHourSuffix,
700
- minute: localizedMinute,
701
- minuteSuffix: localizedMinuteSuffix,
702
- second: localizedSecond,
703
- secondSuffix: localizedSecondSuffix,
704
- decimalSeparator: localizedDecimalSeparator,
705
- fractionalSecond: localizedFractionalSecond,
706
- meridiem: localizedMeridiem
707
- } = localizeTimeString({
700
+ const localized = localizeTimeString({
708
701
  hour12,
709
702
  locale,
710
703
  numberingSystem,
@@ -716,17 +709,19 @@ class TimeController extends GenericController {
716
709
  this.minute = minute;
717
710
  this.second = second;
718
711
  this.fractionalSecond = fractionalSecond;
719
- this.localizedHour = localizedHour;
720
- this.localizedHourSuffix = localizedHourSuffix;
721
- this.localizedMinute = localizedMinute;
722
- this.localizedMinuteSuffix = localizedMinuteSuffix;
723
- this.localizedSecond = localizedSecond;
724
- this.localizedDecimalSeparator = localizedDecimalSeparator;
725
- this.localizedFractionalSecond = localizedFractionalSecond;
726
- this.localizedSecondSuffix = localizedSecondSuffix;
727
- if (localizedMeridiem) {
728
- this.meridiem = getMeridiem(this.hour);
729
- this.localizedMeridiem = localizedMeridiem;
712
+ if (localized) {
713
+ this.localizedHour = localized.hour;
714
+ this.localizedHourSuffix = localized.hourSuffix;
715
+ this.localizedMinute = localized.minute;
716
+ this.localizedMinuteSuffix = localized.minuteSuffix;
717
+ this.localizedSecond = localized.second;
718
+ this.localizedDecimalSeparator = localized.decimalSeparator;
719
+ this.localizedFractionalSecond = localized.fractionalSecond;
720
+ this.localizedSecondSuffix = localized.secondSuffix;
721
+ if (localized.meridiem) {
722
+ this.meridiem = getMeridiem(this.hour);
723
+ this.localizedMeridiem = localized.meridiem;
724
+ }
730
725
  }
731
726
  } else {
732
727
  this.hour = null;
@@ -30,7 +30,7 @@ export abstract class Card extends LitElement {
30
30
  */
31
31
  accessor disabled: boolean;
32
32
  /** Specifies an accessible label for the component. */
33
- accessor label: string;
33
+ accessor label: string | undefined;
34
34
  /**
35
35
  * When `true`, a busy indicator is displayed.
36
36
  *
@@ -70,8 +70,6 @@ class Carousel extends LitElement {
70
70
  this.setMaxItemsToBreakpoint(width);
71
71
  };
72
72
  this.resizeObserver = createObserver("resize", (entries) => entries.forEach(this.resizeHandler));
73
- this.slideDurationInterval = null;
74
- this.slideInterval = null;
75
73
  this.tabListRef = createRef();
76
74
  this.timer = () => {
77
75
  let time = this.slideDurationRemaining;
@@ -97,6 +95,7 @@ class Carousel extends LitElement {
97
95
  this.items = [];
98
96
  this.maxItems = centerItemsByBreakpoint.xxsmall;
99
97
  this.playing = false;
98
+ this.selectedIndex = 0;
100
99
  this.slideDurationRemaining = 1;
101
100
  this.suspendedDueToFocus = false;
102
101
  this.suspendedDueToHover = false;
@@ -122,7 +121,7 @@ class Carousel extends LitElement {
122
121
  this.styles = styles;
123
122
  }
124
123
  async play() {
125
- if (this.playing || !this.hasMultiple || this.autoplay !== "" && !this.autoplay && this.autoplay !== "paused") {
124
+ if (this.playing || !this.hasMultiple || this.autoplay !== "" && this.autoplay !== true && this.autoplay !== "paused") {
126
125
  return;
127
126
  }
128
127
  this.handlePlay(true);
@@ -287,7 +286,7 @@ class Carousel extends LitElement {
287
286
  }
288
287
  }
289
288
  handleItemSelection(event) {
290
- const item = event.target;
289
+ const item = event.currentTarget;
291
290
  const requestedPosition = parseInt(item.dataset.index);
292
291
  if (requestedPosition === this.selectedIndex) {
293
292
  return;
@@ -355,7 +354,7 @@ class Carousel extends LitElement {
355
354
  case " ":
356
355
  case "Enter":
357
356
  event.preventDefault();
358
- if (this.autoplay === "" || this.autoplay || this.autoplay === "paused") {
357
+ if (this.autoplay === "" || this.autoplay === true || this.autoplay === "paused") {
359
358
  this.toggleRotation();
360
359
  }
361
360
  break;
@@ -425,7 +424,7 @@ class Carousel extends LitElement {
425
424
  return html`<div class=${safeClassMap({
426
425
  [CSS.pagination]: true,
427
426
  [CSS.containerOverlaid]: this.controlOverlay
428
- })} @keydown=${this.tabListKeyDownHandler} ${ref(this.tabListRef)}>${(this.playing || this.autoplay === "" || this.autoplay || this.autoplay === "paused") && this.hasMultiple && this.renderRotationControl() || ""}${this.arrowType === "inline" && this.hasMultiple && this.renderArrow("previous") || ""}${this.paginationDisabled ? this.renderPaginationAriaLive() : this.renderPaginationItems()}${this.arrowType === "inline" && this.hasMultiple && this.renderArrow("next") || ""}</div>`;
427
+ })} @keydown=${this.tabListKeyDownHandler} ${ref(this.tabListRef)}>${(this.playing || this.autoplay === "" || this.autoplay === true || this.autoplay === "paused") && this.hasMultiple && this.renderRotationControl() || ""}${this.arrowType === "inline" && this.hasMultiple && this.renderArrow("previous") || ""}${this.paginationDisabled ? this.renderPaginationAriaLive() : this.renderPaginationItems()}${this.arrowType === "inline" && this.hasMultiple && this.renderArrow("next") || ""}</div>`;
429
428
  }
430
429
  renderPaginationItems() {
431
430
  const { selectedIndex, maxItems, items, label, handleItemSelection } = this;
@@ -27,7 +27,7 @@ export abstract class Checkbox extends LitElement {
27
27
  *
28
28
  * When not set, the component is associated with its ancestor form element, if one exists.
29
29
  */
30
- accessor form: string;
30
+ accessor form: string | undefined;
31
31
  /**
32
32
  * When `true`, the component is initially indeterminate, which is independent from its `checked` value.
33
33
  *
@@ -38,13 +38,13 @@ export abstract class Checkbox extends LitElement {
38
38
  */
39
39
  accessor indeterminate: boolean;
40
40
  /** Specifies an accessible label for the component. */
41
- accessor label: string;
41
+ accessor label: string | undefined;
42
42
  /** Specifies the component's label text. */
43
- accessor labelText: string;
43
+ accessor labelText: string | undefined;
44
44
  /** Overrides individual strings used by the component. */
45
45
  accessor messageOverrides: { required?: string; };
46
46
  /** Specifies the name of the component. Required to pass the component's `value` on form submission. */
47
- accessor name: string;
47
+ accessor name: string | undefined;
48
48
  /**
49
49
  * When `true` and the component resides in a form,
50
50
  * the component must have a value in order for the form to submit.
@@ -91,7 +91,7 @@ class ChipGroup extends LitElement {
91
91
  event.stopPropagation();
92
92
  }
93
93
  updateItems(event) {
94
- const itemsFromSlot = this.slotRef.value?.assignedElements({ flatten: true }).filter((el) => el?.matches("calcite-chip"));
94
+ const itemsFromSlot = this.slotRef.value?.assignedElements({ flatten: true }).filter((el) => el?.matches("calcite-chip")) || [];
95
95
  this.items = !event ? itemsFromSlot : slotChangeGetAssignedElements(event);
96
96
  if (this.items?.length < 1) {
97
97
  return;
@@ -879,7 +879,7 @@ class ColorPicker extends LitElement {
879
879
  })}</div></calcite-tab>`);
880
880
  }
881
881
  renderChannel(value, index, ariaLabel, direction, suffix) {
882
- return keyed(index, html`<calcite-input-number class=${safeClassMap(CSS.channel)} data-channel-index=${index ?? nothing} dir=${direction ?? nothing} .label=${ariaLabel} lang=${this.messages._lang ?? nothing} number-button-type=none .numberingSystem=${this.numberingSystem} @keydown=${this.handleKeyDown} @calciteInputNumberChange=${this.handleChannelChange} @calciteInputNumberInput=${this.handleChannelInput} @calciteInternalInputNumberBlur=${this.handleChannelBlur} @calciteInternalInputNumberFocus=${this.handleChannelFocus} .scale=${this.scale === "l" ? "m" : "s"} style=${safeStyleMap({
882
+ return keyed(index, html`<calcite-input-number class=${safeClassMap(CSS.channel)} data-channel-index=${index ?? nothing} dir=${direction ?? nothing} .label=${ariaLabel} lang=${this.messages._lang ?? nothing} number-button-type=none .numberingSystem=${this.numberingSystem} @calciteInputNumberChange=${this.handleChannelChange} @calciteInputNumberInput=${this.handleChannelInput} @calciteInternalInputNumberBlur=${this.handleChannelBlur} @calciteInternalInputNumberFocus=${this.handleChannelFocus} @keydown=${this.handleKeyDown} .scale=${this.scale === "l" ? "m" : "s"} style=${safeStyleMap({
883
883
  marginLeft: index > 0 && !(this.scale === "s" && this.alphaChannel && index === 3) ? "-1px" : ""
884
884
  })} .suffixText=${suffix} .value=${value?.toString()}></calcite-input-number>`);
885
885
  }
@@ -223,7 +223,7 @@ class ColorPickerHexInput extends LitElement {
223
223
  const hexInputValue = this.formatHexForInternalInput(value);
224
224
  const opacityInputValue = this.formatOpacityForInternalInput(internalColor);
225
225
  const inputScale = scale === "l" ? "m" : "s";
226
- return html`<div class=${safeClassMap(CSS.container)}><calcite-input-text class=${safeClassMap(CSS.hexInput)} .label=${messages?.hex || hexLabel} .maxLength=${this.alphaChannel ? 8 : 6} @keydown=${this.onInputKeyDown} @paste=${this.onHexInputPaste} @calciteInputTextChange=${this.onHexInputChange} @calciteInputTextInput=${this.onHexInputInput} @calciteInternalInputTextBlur=${this.onHexInputBlur} @calciteInternalInputTextFocus=${this.onInputFocus} prefix-text=# .scale=${inputScale} .value=${hexInputValue} ${ref(this.hexInputRef)}></calcite-input-text>${alphaChannel ? keyed("opacity-input", html`<calcite-input-number class=${safeClassMap(CSS.opacityInput)} .label=${messages?.opacity} .max=${OPACITY_LIMITS.max} max-length=3 .min=${OPACITY_LIMITS.min} number-button-type=none .numberingSystem=${this.numberingSystem} @keydown=${this.onInputKeyDown} @calciteInputNumberInput=${this.onOpacityInputInput} @calciteInternalInputNumberBlur=${this.onOpacityInputBlur} @calciteInternalInputNumberFocus=${this.onInputFocus} .scale=${inputScale} suffix-text=% .value=${opacityInputValue} ${ref(this.opacityInputRef)}></calcite-input-number>`) : null}</div>`;
226
+ return html`<div class=${safeClassMap(CSS.container)}><calcite-input-text class=${safeClassMap(CSS.hexInput)} .label=${messages?.hex || hexLabel} .maxLength=${this.alphaChannel ? 8 : 6} @calciteInputTextChange=${this.onHexInputChange} @calciteInputTextInput=${this.onHexInputInput} @calciteInternalInputTextBlur=${this.onHexInputBlur} @calciteInternalInputTextFocus=${this.onInputFocus} @keydown=${this.onInputKeyDown} @paste=${this.onHexInputPaste} prefix-text=# .scale=${inputScale} .value=${hexInputValue} ${ref(this.hexInputRef)}></calcite-input-text>${alphaChannel ? keyed("opacity-input", html`<calcite-input-number class=${safeClassMap(CSS.opacityInput)} .label=${messages?.opacity} .max=${OPACITY_LIMITS.max} max-length=3 .min=${OPACITY_LIMITS.min} number-button-type=none .numberingSystem=${this.numberingSystem} @calciteInputNumberInput=${this.onOpacityInputInput} @calciteInternalInputNumberBlur=${this.onOpacityInputBlur} @calciteInternalInputNumberFocus=${this.onInputFocus} @keydown=${this.onInputKeyDown} .scale=${inputScale} suffix-text=% .value=${opacityInputValue} ${ref(this.opacityInputRef)}></calcite-input-number>`) : null}</div>`;
227
227
  }
228
228
  }
229
229
  customElement("calcite-color-picker-hex-input", ColorPickerHexInput);
@@ -484,9 +484,9 @@ class Combobox extends LitElement {
484
484
  break;
485
485
  case " ":
486
486
  if (!this.textInputRef.value.value && !event.defaultPrevented) {
487
- if (!this.open) {
487
+ if (!this.open && this.keyboardNavItems.length) {
488
488
  this.open = true;
489
- this.shiftActiveItemIndex(1);
489
+ this.ensureRecentSelectedItemIsActive();
490
490
  }
491
491
  event.preventDefault();
492
492
  }
@@ -566,7 +566,7 @@ class Combobox extends LitElement {
566
566
  this.topLayer.show();
567
567
  this.reposition();
568
568
  this.calciteComboboxBeforeOpen.emit();
569
- setTimeout(() => this.scrollToActiveOrSelectedItem(true), 0);
569
+ setTimeout(() => this.scrollToActiveOrSelectedItem(this.activeItemIndex < 0), 0);
570
570
  }
571
571
  onOpen() {
572
572
  this.calciteComboboxOpen.emit();
@@ -615,9 +615,14 @@ class Combobox extends LitElement {
615
615
  this.ensureRecentSelectedItemIsActive();
616
616
  }
617
617
  ensureRecentSelectedItemIsActive() {
618
- const { selectedItems } = this;
619
- const targetIndex = selectedItems.length === 0 ? 0 : this.items.indexOf(selectedItems[selectedItems.length - 1]);
620
- this.updateActiveItemIndex(targetIndex);
618
+ const { activeItemIndex, selectedItems, keyboardNavItems } = this;
619
+ if (activeItemIndex > -1 && keyboardNavItems[activeItemIndex]) {
620
+ this.updateActiveItemIndex(activeItemIndex);
621
+ return;
622
+ }
623
+ const selectedItem = selectedItems[selectedItems.length - 1];
624
+ const targetIndex = selectedItem ? keyboardNavItems.indexOf(selectedItem) : keyboardNavItems.length ? 0 : -1;
625
+ this.updateActiveItemIndex(targetIndex > -1 ? targetIndex : keyboardNavItems.length ? 0 : -1);
621
626
  }
622
627
  hideChip(chipEl) {
623
628
  chipEl.classList.add(CSS.chipInvisible);
@@ -11,9 +11,9 @@ export abstract class Flow extends LitElement {
11
11
  /**
12
12
  * Removes selection of the currently active `calcite-flow-item`.
13
13
  *
14
- * @returns Promise<HTMLCalciteFlowItemElement | FlowItemLikeElement>
14
+ * @returns Promise<HTMLCalciteFlowItemElement | FlowItemLikeElement | undefined>
15
15
  */
16
- back(): Promise<FlowItem | FlowItemLikeElement>;
16
+ back(): Promise<FlowItem | FlowItemLikeElement | undefined>;
17
17
  /**
18
18
  * Sets focus on the component.
19
19
  *
@@ -122,7 +122,7 @@ class Flow extends LitElement {
122
122
  }
123
123
  findSelectedFlowItemIndex(items) {
124
124
  const selectedItem = items.slice(0).reverse().find((item) => !!item.selected);
125
- return items.indexOf(selectedItem);
125
+ return selectedItem ? items.indexOf(selectedItem) : -1;
126
126
  }
127
127
  ensureSelectedFlowItemExists() {
128
128
  const { items } = this;
@@ -123,7 +123,7 @@ class FlowItem extends LitElement {
123
123
  }
124
124
  render() {
125
125
  const { collapsed, collapseDirection, collapsible, closable, closed, description, disabled, heading, headingLevel, loading, menuOpen, messageOverrides, overlayPositioning, beforeClose, icon, iconFlipRtl } = this;
126
- return this.interactiveContainer({ disabled, children: html`<calcite-panel .beforeClose=${beforeClose} .closable=${closable} .closed=${closed} .collapseDirection=${collapseDirection} .collapsed=${collapsed} .collapsible=${collapsible} .description=${description} .disabled=${disabled} .heading=${heading} .headingLevel=${headingLevel} .icon=${icon} .iconFlipRtl=${iconFlipRtl} .loading=${loading} .menuOpen=${menuOpen} .messageOverrides=${messageOverrides} @calcitePanelClose=${this.handleInternalPanelClose} @calcitePanelScroll=${this.handleInternalPanelScroll} @calcitePanelToggle=${this.handleInternalPanelToggle} .overlayPositioning=${overlayPositioning} .scale=${this.scale} .topLayerDisabled=${this.topLayerDisabled} ${ref(this.containerRef)}>${this.renderBackButton()}<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>` });
126
+ return this.interactiveContainer({ disabled, children: html`<calcite-panel .beforeClose=${beforeClose} .closable=${closable} .closed=${closed} .collapsed=${collapsed} .collapseDirection=${collapseDirection} .collapsible=${collapsible} .description=${description} .disabled=${disabled} .heading=${heading} .headingLevel=${headingLevel} .icon=${icon} .iconFlipRtl=${iconFlipRtl} .loading=${loading} .menuOpen=${menuOpen} .messageOverrides=${messageOverrides} @calcitePanelClose=${this.handleInternalPanelClose} @calcitePanelScroll=${this.handleInternalPanelScroll} @calcitePanelToggle=${this.handleInternalPanelToggle} .overlayPositioning=${overlayPositioning} .scale=${this.scale} .topLayerDisabled=${this.topLayerDisabled} ${ref(this.containerRef)}>${this.renderBackButton()}<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>` });
127
127
  }
128
128
  }
129
129
  customElement("calcite-flow-item", FlowItem);
@@ -68,7 +68,8 @@ class Input extends LitElement {
68
68
  this.childNumberRef = createRef();
69
69
  this.direction = useDirection();
70
70
  this.formSupport = useForm({
71
- inputType: "text"
71
+ inputType: "text",
72
+ getValue: () => this.type === "file" ? this.childRef.value?.files ?? null : this.value
72
73
  })(this);
73
74
  this.inputWrapperRef = createRef();
74
75
  this.previousValueOrigin = "initial";
@@ -511,14 +512,11 @@ class Input extends LitElement {
511
512
  const autofocus = this.el.autofocus;
512
513
  const enterKeyHint = this.el.enterKeyHint;
513
514
  const inputMode = this.el.inputMode;
514
- const localeNumberInput = this.type === "number" ? keyed("localized-input", html`<input accept=${this.accept ?? nothing} aria-errormessage=${IDS.validationMessage} .ariaInvalid=${this.status === "invalid"} .ariaLabel=${getLabelText(this)} autocomplete=${this.autocomplete ?? nothing} .autofocus=${autofocus} value=${this.defaultValue ?? nothing} .disabled=${this.disabled ? true : null} enterkeyhint=${enterKeyHint ?? nothing} inputmode=${inputMode ?? nothing} maxlength=${this.maxLength ?? nothing} minlength=${this.minLength ?? nothing} .multiple=${this.multiple} name=${nothing} @blur=${this.inputBlurHandler} @focus=${this.inputFocusHandler} @input=${this.inputNumberInputHandler} @keydown=${this.inputNumberKeyDownHandler} @keyup=${this.inputKeyUpHandler} pattern=${this.pattern ?? nothing} placeholder=${(this.placeholder || "") ?? nothing} .readOnly=${this.readOnly} .required=${this.required} type=text .value=${live(this.displayedValue ?? "")} ${ref(this.childNumberRef)}>`) : null;
515
+ const localeNumberInput = this.type === "number" ? keyed("localized-input", html`<input accept=${this.accept ?? nothing} aria-errormessage=${IDS.validationMessage} .ariaInvalid=${this.status === "invalid"} .ariaLabel=${getLabelText(this)} autocomplete=${this.autocomplete ?? nothing} .autofocus=${autofocus} value=${this.defaultValue ?? nothing} .disabled=${this.disabled} enterkeyhint=${enterKeyHint ?? nothing} inputmode=${inputMode ?? nothing} maxlength=${this.maxLength ?? nothing} minlength=${this.minLength ?? nothing} .multiple=${this.multiple} name=${nothing} @blur=${this.inputBlurHandler} @focus=${this.inputFocusHandler} @input=${this.inputNumberInputHandler} @keydown=${this.inputNumberKeyDownHandler} @keyup=${this.inputKeyUpHandler} pattern=${this.pattern ?? nothing} placeholder=${(this.placeholder || "") ?? nothing} .readOnly=${this.readOnly} .required=${this.required} type=text .value=${live(this.displayedValue ?? "")} ${ref(this.childNumberRef)}>`) : null;
515
516
  const childEl = this.type !== "number" ? html`<input accept=${this.accept ?? nothing} aria-errormessage=${IDS.validationMessage} .ariaInvalid=${this.status === "invalid"} .ariaLabel=${getLabelText(this)} autocomplete=${this.autocomplete ?? nothing} .autofocus=${autofocus} class=${safeClassMap({
516
517
  [CSS.editingEnabled]: this.editingEnabled,
517
518
  [CSS.inlineChild]: !!this.inlineEditableEl
518
- })} value=${this.defaultValue ?? nothing} .disabled=${this.disabled ? true : null} enterkeyhint=${enterKeyHint ?? nothing} inputmode=${inputMode ?? nothing} max=${this.maxString ?? nothing} maxlength=${this.maxLength ?? nothing} min=${this.minString ?? nothing} minlength=${this.minLength ?? nothing} .multiple=${this.multiple} name=${this.name ?? nothing} @blur=${this.inputBlurHandler} @focus=${this.inputFocusHandler} @input=${this.inputInputHandler} @keydown=${this.inputKeyDownHandler} @keyup=${this.inputKeyUpHandler} pattern=${this.pattern ?? nothing} placeholder=${(this.placeholder || "") ?? nothing} .readOnly=${this.readOnly} .required=${this.required ? true : null} spellcheck=${this.el.spellcheck ?? nothing} step=${this.step ?? nothing} tabindex=${(this.disabled || this.inlineEditableEl && !this.editingEnabled ? -1 : null) ?? nothing} type=${this.type ?? nothing} .value=${live(this.value ?? "")} ${ref(
519
- this.childRef
520
- /* using unknown to workaround Lumina dynamic ref type issue */
521
- )}>` : null;
519
+ })} value=${this.defaultValue ?? nothing} .disabled=${this.disabled} enterkeyhint=${enterKeyHint ?? nothing} inputmode=${inputMode ?? nothing} max=${this.maxString ?? nothing} maxlength=${this.maxLength ?? nothing} min=${this.minString ?? nothing} minlength=${this.minLength ?? nothing} .multiple=${this.multiple} name=${this.name ?? nothing} @blur=${this.inputBlurHandler} @focus=${this.inputFocusHandler} @input=${this.inputInputHandler} @keydown=${this.inputKeyDownHandler} @keyup=${this.inputKeyUpHandler} pattern=${this.pattern ?? nothing} placeholder=${(this.placeholder || "") ?? nothing} .readOnly=${this.readOnly} .required=${this.required} spellcheck=${this.el.spellcheck ?? nothing} step=${this.step ?? nothing} tabindex=${(this.disabled || this.inlineEditableEl && !this.editingEnabled ? -1 : null) ?? nothing} type=${this.type ?? nothing} .value=${live(this.value ?? "")} ${ref(this.childRef)}>` : null;
522
520
  return this.interactiveContainer({ disabled: this.disabled, children: html`${this.labelText && InternalLabel({ labelText: this.labelText, onClick: this.onLabelClick, required: this.required, tooltipText: this.messages.required }) || ""}<div class=${safeClassMap({
523
521
  [CSS.inputWrapper]: true,
524
522
  [CSS_UTILITY.rtl]: dir === "rtl",
@@ -246,7 +246,7 @@ class InputText extends LitElement {
246
246
  const childEl = html`<input aria-errormessage=${IDS.validationMessage} .ariaInvalid=${this.status === "invalid"} .ariaLabel=${getLabelText(this)} autocomplete=${this.autocomplete ?? nothing} .autofocus=${this.el.autofocus} class=${safeClassMap({
247
247
  [CSS.editingEnabled]: this.editingEnabled,
248
248
  [CSS.inlineChild]: !!this.inlineEditableEl
249
- })} value=${this.defaultValue ?? nothing} .disabled=${this.disabled ? true : null} enterkeyhint=${this.el.enterKeyHint ?? nothing} inputmode=${this.el.inputMode ?? nothing} maxlength=${this.maxLength ?? nothing} minlength=${this.minLength ?? nothing} name=${this.name ?? nothing} @blur=${this.inputTextBlurHandler} @focus=${this.inputTextFocusHandler} @input=${this.inputTextInputHandler} @keydown=${this.inputTextKeyDownHandler} pattern=${this.pattern ?? nothing} placeholder=${(this.placeholder || "") ?? nothing} .readOnly=${this.readOnly} .required=${this.required ? true : null} spellcheck=${this.el.spellcheck ?? nothing} tabindex=${(this.disabled || this.inlineEditableEl && !this.editingEnabled ? -1 : null) ?? nothing} type=text .value=${live(this.value ?? "")} ${ref(this.childRef)}>`;
249
+ })} value=${this.defaultValue ?? nothing} .disabled=${this.disabled} enterkeyhint=${this.el.enterKeyHint ?? nothing} inputmode=${this.el.inputMode ?? nothing} maxlength=${this.maxLength ?? nothing} minlength=${this.minLength ?? nothing} name=${this.name ?? nothing} @blur=${this.inputTextBlurHandler} @focus=${this.inputTextFocusHandler} @input=${this.inputTextInputHandler} @keydown=${this.inputTextKeyDownHandler} pattern=${this.pattern ?? nothing} placeholder=${(this.placeholder || "") ?? nothing} .readOnly=${this.readOnly} .required=${this.required} spellcheck=${this.el.spellcheck ?? nothing} tabindex=${(this.disabled || this.inlineEditableEl && !this.editingEnabled ? -1 : null) ?? nothing} type=text .value=${live(this.value ?? "")} ${ref(this.childRef)}>`;
250
250
  return this.interactiveContainer({ disabled: this.disabled, children: html`${this.labelText && InternalLabel({ labelText: this.labelText, onClick: this.onLabelClick, required: this.required, tooltipText: this.messages.required }) || ""}<div class=${safeClassMap({
251
251
  [CSS.inputWrapper]: true,
252
252
  [CSS_UTILITY.rtl]: dir === "rtl",
@@ -57,9 +57,9 @@ export abstract class List extends LitElement {
57
57
  */
58
58
  accessor filterEnabled: boolean;
59
59
  /** Specifies an accessible name for the filter input field. */
60
- accessor filterLabel: string;
60
+ accessor filterLabel: string | undefined;
61
61
  /** Specifies placeholder text for the component's filter input field. */
62
- accessor filterPlaceholder: string;
62
+ accessor filterPlaceholder: string | undefined;
63
63
  /**
64
64
  * Specifies a function to handle filtering.
65
65
  *
@@ -71,7 +71,7 @@ export abstract class List extends LitElement {
71
71
  */
72
72
  accessor filterPredicate: ((item: ListItem) => boolean) | undefined;
73
73
  /** Specifies the properties to match against when filtering. If not set, all properties will be matched (`description`, `label`, `metadata`, and the `calcite-list-item-group`'s `heading`). */
74
- accessor filterProps: string[];
74
+ accessor filterProps: string[] | undefined;
75
75
  /**
76
76
  * Text for the component's filter input field.
77
77
  *
@@ -116,7 +116,7 @@ export abstract class List extends LitElement {
116
116
  total?: string;
117
117
  };
118
118
  /** Specifies the Unicode numeral system used by the component for localization. */
119
- accessor numberingSystem: NumberingSystem;
119
+ accessor numberingSystem: NumberingSystem | undefined;
120
120
  /**
121
121
  * Specifies the size of the component.
122
122
  *
@@ -111,13 +111,13 @@ class List extends LitElement {
111
111
  this.styles = styles;
112
112
  }
113
113
  get hasActiveFilter() {
114
- return this.filterEnabled && this.filterText && this.filteredItems.length !== this.visibleItems.length;
114
+ return !!(this.filterEnabled && this.filterText && this.filteredItems.length !== this.visibleItems.length);
115
115
  }
116
116
  get showEmptyContentContainer() {
117
117
  return !this.hasContent && this.hasEmptyContent;
118
118
  }
119
119
  get showNoResultsContainer() {
120
- return this.filterEnabled && this.filterText && this.hasFilterNoResults && this.visibleItems.length && !this.filteredItems.length;
120
+ return !!(this.filterEnabled && this.filterText && this.hasFilterNoResults && this.visibleItems.length && !this.filteredItems.length);
121
121
  }
122
122
  get effectiveFilterProps() {
123
123
  if (!this.filterProps) {
@@ -366,7 +366,7 @@ class List extends LitElement {
366
366
  this.calciteListOrderChange.emit(detail);
367
367
  }
368
368
  setParentList() {
369
- this.parentListEl = this.el.parentElement?.closest(listSelector);
369
+ this.parentListEl = this.el.parentElement?.closest(listSelector) || void 0;
370
370
  }
371
371
  handleDefaultSlotChange(event) {
372
372
  if (this.parentListEl) {
@@ -493,8 +493,7 @@ class List extends LitElement {
493
493
  }));
494
494
  }
495
495
  getGroupHeading(item) {
496
- const heading = this.listItemGroups.filter((group) => group.contains(item)).map((group) => group.heading);
497
- return heading;
496
+ return this.listItemGroups.filter((group) => group.contains(item) && group.heading).map((group) => group.heading);
498
497
  }
499
498
  updateGroupItems() {
500
499
  const { el, group, scale } = this;
@@ -35,7 +35,7 @@ export abstract class ListItem extends LitElement {
35
35
  */
36
36
  accessor closed: boolean;
37
37
  /** Specifies a description for the component. Displays below the `label`. */
38
- accessor description: string;
38
+ accessor description: string | undefined;
39
39
  /**
40
40
  * When `true`, interaction is prevented and the component is displayed with lower opacity.
41
41
  *
@@ -55,13 +55,13 @@ export abstract class ListItem extends LitElement {
55
55
  */
56
56
  accessor expanded: boolean;
57
57
  /** Specifies an icon to display at the end of the component. */
58
- accessor iconEnd: IconName;
58
+ accessor iconEnd: IconName | undefined;
59
59
  /** Displays the `iconStart` and/or `iconEnd` as flipped when the element direction is right-to-left (`"rtl"`). */
60
- accessor iconFlipRtl: FlipContext;
60
+ accessor iconFlipRtl: FlipContext | undefined;
61
61
  /** Specifies an icon to display at the start of the component. */
62
- accessor iconStart: IconName;
62
+ accessor iconStart: IconName | undefined;
63
63
  /** Specifies an accessible label for the component, displays above the `description`. */
64
- accessor label: string;
64
+ accessor label: string | undefined;
65
65
  /** Overrides individual strings used by the component. */
66
66
  accessor messageOverrides: {
67
67
  close?: string;
@@ -69,7 +69,7 @@ export abstract class ListItem extends LitElement {
69
69
  collapse?: string;
70
70
  };
71
71
  /** Provides additional metadata to the component. Primary use is for a filter on the parent `calcite-list`. */
72
- accessor metadata: Record<string, unknown>;
72
+ accessor metadata: Record<string, unknown> | undefined;
73
73
  /**
74
74
  * When `true`, the item is open to show child components.
75
75
  *