@esri/calcite-components 5.2.0-next.0 → 5.2.0-next.10

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 (487) hide show
  1. package/README.md +1 -1
  2. package/dist/cdn/23VCVGLR.js +2 -0
  3. package/dist/cdn/{HW3NCJAS.js → 24IFUIVY.js} +1 -1
  4. package/dist/cdn/{TR4SNSFR.js → 2BWHYQMD.js} +1 -1
  5. package/dist/cdn/{DPCEF3DX.js → 2NR7N254.js} +1 -1
  6. package/dist/cdn/2OKTIK5P.js +2 -0
  7. package/dist/cdn/{4NA5MGOB.js → 2XBG7AQW.js} +1 -1
  8. package/dist/cdn/{PKAEBI2S.js → 32V4MTBZ.js} +1 -1
  9. package/dist/cdn/{7JEYTQG4.js → 3B57SEKF.js} +1 -1
  10. package/dist/cdn/{U535IWWN.js → 3KFW6OD6.js} +1 -1
  11. package/dist/cdn/{2T5S2GZD.js → 3LWCBP7W.js} +1 -1
  12. package/dist/cdn/4D4NG376.js +2 -0
  13. package/dist/cdn/4ILBALOX.js +2 -0
  14. package/dist/cdn/4NS7O3WO.js +2 -0
  15. package/dist/cdn/{R7OIKART.js → 5LF7TQ7N.js} +1 -1
  16. package/dist/cdn/{XGZ4H27N.js → 5MI4LBOF.js} +1 -1
  17. package/dist/cdn/5MVD3F6G.js +2 -0
  18. package/dist/cdn/{DKVLMKQB.js → 5ZR6DDCR.js} +1 -1
  19. package/dist/cdn/{7VDKJ2SK.js → 623VYD6R.js} +1 -1
  20. package/dist/cdn/{6CBYZ6KQ.js → 62BATO6A.js} +1 -1
  21. package/dist/cdn/62DS7KDI.js +2 -0
  22. package/dist/cdn/{TAQOWFC4.js → 6EAKC3JX.js} +1 -1
  23. package/dist/cdn/{KSRIAA2B.js → 6XGFIG4A.js} +1 -1
  24. package/dist/cdn/{MWJWPSLW.js → 7OJ44OYE.js} +1 -1
  25. package/dist/cdn/{6DMMICVX.js → 7RU3CEXC.js} +1 -1
  26. package/dist/cdn/{IPLGO7L6.js → 7VRPMFQF.js} +1 -1
  27. package/dist/cdn/{6GL54USA.js → A5O37JHD.js} +1 -1
  28. package/dist/cdn/{4FJ5PQFY.js → A65ZFLA5.js} +1 -1
  29. package/dist/cdn/{62NJQWHM.js → AADSKWZE.js} +1 -1
  30. package/dist/cdn/{JHIGTRC5.js → ACJQRKUW.js} +1 -1
  31. package/dist/cdn/{W2NGW4D3.js → AF4KCLDZ.js} +1 -1
  32. package/dist/cdn/{D2YKWM6L.js → ASE5XDV4.js} +1 -1
  33. package/dist/cdn/{PBAUETVN.js → ATGPYSIN.js} +1 -1
  34. package/dist/cdn/AUFQLHKF.js +2 -0
  35. package/dist/cdn/B4OXM5EW.js +2 -0
  36. package/dist/cdn/{OD7JITPI.js → B57TN6IA.js} +1 -1
  37. package/dist/cdn/{PR4A5JHV.js → BFGNWZDN.js} +1 -1
  38. package/dist/cdn/{CFV4Q7K7.js → BFWNX5LC.js} +1 -1
  39. package/dist/cdn/{I72XT4W6.js → BLEDNRID.js} +1 -1
  40. package/dist/cdn/{KRX3Q4X3.js → BQTJOWZ3.js} +1 -1
  41. package/dist/cdn/{NOVMIJES.js → BX2A7TZF.js} +1 -1
  42. package/dist/cdn/{F5S74A6J.js → C2UEEF3A.js} +1 -1
  43. package/dist/cdn/{OSQJUMST.js → CAYYH2BZ.js} +1 -1
  44. package/dist/cdn/{WHTQZTLK.js → CDZP2WAZ.js} +1 -1
  45. package/dist/cdn/{2GX4D6HJ.js → CS4FUOM2.js} +1 -1
  46. package/dist/cdn/D2OHAZVJ.js +2 -0
  47. package/dist/cdn/{VH6Z5EP4.js → D5SMTOSV.js} +1 -1
  48. package/dist/cdn/{CRIHCMCZ.js → DDKQNHOD.js} +1 -1
  49. package/dist/cdn/{CHBJQ4J2.js → DS6L5K3I.js} +1 -1
  50. package/dist/cdn/{7VLVW6XG.js → DSKYNHS5.js} +1 -1
  51. package/dist/cdn/{6D5BQKYD.js → DYPOSBRY.js} +1 -1
  52. package/dist/cdn/{OVFYNDZQ.js → E2D5X3QE.js} +1 -1
  53. package/dist/cdn/{4YFA6UNT.js → EB4TOPVL.js} +1 -1
  54. package/dist/cdn/{FVR7AYMZ.js → EBNDBB6M.js} +1 -1
  55. package/dist/cdn/{2LEPTGBS.js → ECJOLDA7.js} +1 -1
  56. package/dist/cdn/{PFRUMG4W.js → EJDHS4O4.js} +1 -1
  57. package/dist/cdn/F2FESEN6.js +2 -0
  58. package/dist/cdn/{J5O57W2E.js → F3CASDS6.js} +1 -1
  59. package/dist/cdn/{7KVTCN6Q.js → FD4JYU3Z.js} +1 -1
  60. package/dist/cdn/{SKVVTJ4Y.js → G35IZGOS.js} +1 -1
  61. package/dist/cdn/{WKURA6GH.js → GA7TBRYI.js} +1 -1
  62. package/dist/cdn/{V6YUYE2A.js → GCPJFQZF.js} +1 -1
  63. package/dist/cdn/{WLBJ5BGK.js → GFNFEM62.js} +1 -1
  64. package/dist/cdn/{4MGZ6ADZ.js → GHDKS4TD.js} +1 -1
  65. package/dist/cdn/{V2YWSRNU.js → GS2Y3PBT.js} +1 -1
  66. package/dist/cdn/HDPZILRT.js +2 -0
  67. package/dist/cdn/{GQO5YIX6.js → HTU2PERJ.js} +1 -1
  68. package/dist/cdn/{PWWZP3KR.js → HU6DWJRC.js} +1 -1
  69. package/dist/cdn/I2P6NHEC.js +2 -0
  70. package/dist/cdn/I3B4HO2I.js +2 -0
  71. package/dist/cdn/{Q3S7NEGI.js → I5UVGD2T.js} +1 -1
  72. package/dist/cdn/I6SYKKXZ.js +2 -0
  73. package/dist/cdn/{E6SFDYKP.js → IAR4ISXM.js} +1 -1
  74. package/dist/cdn/IB5GGLYT.js +2 -0
  75. package/dist/cdn/{74ES23ZD.js → II45OKZO.js} +1 -1
  76. package/dist/cdn/{PVXQK5DA.js → IKWZUQVX.js} +1 -1
  77. package/dist/cdn/{R5K4A5LI.js → IOUY4CQP.js} +1 -1
  78. package/dist/cdn/{DEYOBQP4.js → IQNZOCQ5.js} +1 -1
  79. package/dist/cdn/IR3U674S.js +2 -0
  80. package/dist/cdn/{JFLHSOEG.js → IS3ZDW5X.js} +1 -1
  81. package/dist/cdn/{L6M7PQB2.js → IVC47QDM.js} +1 -1
  82. package/dist/cdn/J4H5KXXA.js +2 -0
  83. package/dist/cdn/{QFRMRDY4.js → J667RYKY.js} +1 -1
  84. package/dist/cdn/{LI5R65A7.js → J672TVUY.js} +1 -1
  85. package/dist/cdn/J6HUPBGJ.js +2 -0
  86. package/dist/cdn/JAJPR5ZA.js +2 -0
  87. package/dist/cdn/{A2EZHYSR.js → JRW3WDSZ.js} +1 -1
  88. package/dist/cdn/{4JIYUOBM.js → JSVI27VE.js} +1 -1
  89. package/dist/cdn/{FTR4BVVC.js → JSYBOIFM.js} +1 -1
  90. package/dist/cdn/{LKOXGPBU.js → K7PZZZ6K.js} +1 -1
  91. package/dist/cdn/{HMIXABNO.js → KI44TQK5.js} +1 -1
  92. package/dist/cdn/{EN6G2SPQ.js → KIJ2PAMT.js} +1 -1
  93. package/dist/cdn/{2IFHEXRA.js → KNBD5GM5.js} +1 -1
  94. package/dist/cdn/KRZT7UVD.js +2 -0
  95. package/dist/cdn/KTXKK7QW.js +2 -0
  96. package/dist/cdn/{URSFIR7X.js → KYXL4Q6Z.js} +1 -1
  97. package/dist/cdn/{ZCFV5NPR.js → KZPZO55C.js} +1 -1
  98. package/dist/cdn/LF33RPOG.js +2 -0
  99. package/dist/cdn/{A555ZEHW.js → LSCCXGYA.js} +1 -1
  100. package/dist/cdn/{HEWEVGQO.js → LSHFRLID.js} +1 -1
  101. package/dist/cdn/M4DT3YH7.js +2 -0
  102. package/dist/cdn/{XVKUIBXG.js → MDCWCWAM.js} +1 -1
  103. package/dist/cdn/{YHO7HK4V.js → NCB62BP6.js} +1 -1
  104. package/dist/cdn/{4PNNCVVV.js → NETUDVJE.js} +1 -1
  105. package/dist/cdn/{SDGSZMUK.js → NOWB7ME4.js} +1 -1
  106. package/dist/cdn/{JSYHBTNB.js → NQW3WH3Q.js} +1 -1
  107. package/dist/cdn/NZSAVAYK.js +2 -0
  108. package/dist/cdn/OIO5CL6R.js +2 -0
  109. package/dist/cdn/{QELU63EL.js → OPSPK4B3.js} +1 -1
  110. package/dist/cdn/P5E4K2YU.js +2 -0
  111. package/dist/cdn/{MWCNIRUV.js → PKJLXAOH.js} +1 -1
  112. package/dist/cdn/PUF2Z3VH.js +2 -0
  113. package/dist/cdn/{DRA725EP.js → PWDPNUIL.js} +1 -1
  114. package/dist/cdn/{D3IWPYIX.js → PWRAXZYG.js} +1 -1
  115. package/dist/cdn/QCGQ7ATZ.js +2 -0
  116. package/dist/cdn/{R4BGHODS.js → QGF4HKFB.js} +1 -1
  117. package/dist/cdn/{WBHR5HAI.js → QJMDDNP3.js} +1 -1
  118. package/dist/cdn/QQDQTFWB.js +2 -0
  119. package/dist/cdn/{3FN5WM5Q.js → QTPNQPO2.js} +2 -2
  120. package/dist/cdn/{EE5FG5WC.js → QWDKQYDJ.js} +1 -1
  121. package/dist/cdn/{EMAXP36D.js → R2OJ24AU.js} +1 -1
  122. package/dist/cdn/{QTXUDRNM.js → R5TLERHG.js} +1 -1
  123. package/dist/cdn/{XS5BOW2R.js → RRCZQZOO.js} +1 -1
  124. package/dist/cdn/{6YWZMFTP.js → RU76WLDJ.js} +1 -1
  125. package/dist/cdn/{YYHZXM6R.js → SCTJJN6F.js} +1 -1
  126. package/dist/cdn/{N7K3Z33V.js → SNAUVEQE.js} +1 -1
  127. package/dist/cdn/{JUR2QHXO.js → SUS2TW6Q.js} +1 -1
  128. package/dist/cdn/{V2OPNZPW.js → T6HXZ3H2.js} +1 -1
  129. package/dist/cdn/{BWJBSXDP.js → TGYPYCF4.js} +1 -1
  130. package/dist/cdn/{ZWKGNLYM.js → TGZ3QKJ4.js} +1 -1
  131. package/dist/cdn/TI24RDMW.js +2 -0
  132. package/dist/cdn/{QIGBMUD5.js → TQEGPC7M.js} +1 -1
  133. package/dist/cdn/{KH3SJOXF.js → TRD5VAXC.js} +1 -1
  134. package/dist/cdn/{Q3A3FJSL.js → UB3V636R.js} +1 -1
  135. package/dist/cdn/{3UC22UAK.js → UGQDFFBV.js} +1 -1
  136. package/dist/cdn/UWAER5W3.js +2 -0
  137. package/dist/cdn/VELYDHCO.js +20 -0
  138. package/dist/cdn/{WIJ5OVSP.js → VOWRCOLL.js} +1 -1
  139. package/dist/cdn/WDSPL6ZK.js +2 -0
  140. package/dist/cdn/{MSVOHYM2.js → WESLKQDB.js} +1 -1
  141. package/dist/cdn/WLHD45FG.js +2 -0
  142. package/dist/cdn/WLKA4SAY.js +2 -0
  143. package/dist/cdn/{HFTNYJO3.js → WYZKN22P.js} +1 -1
  144. package/dist/cdn/WZZAKFR4.js +2 -0
  145. package/dist/cdn/X6FCHMZG.js +2 -0
  146. package/dist/cdn/{YGSNC6W4.js → X6NRJK63.js} +1 -1
  147. package/dist/cdn/{OOF6IOO6.js → XASONDK4.js} +1 -1
  148. package/dist/cdn/{BMMQHDLU.js → XHHYMR4N.js} +1 -1
  149. package/dist/cdn/{CBLXJ7FA.js → XPBXVOOM.js} +1 -1
  150. package/dist/cdn/{TUW4KHTF.js → Y3IJ4QWR.js} +1 -1
  151. package/dist/cdn/YJPIZ6DX.js +2 -0
  152. package/dist/cdn/{YUWQQXGZ.js → YPAAYPPO.js} +1 -1
  153. package/dist/cdn/{27PXNVGA.js → Z2HYUNW6.js} +1 -1
  154. package/dist/cdn/ZV25GLCY.js +2 -0
  155. package/dist/cdn/assets/icon/buildingIndex16.json +1 -0
  156. package/dist/cdn/assets/icon/buildingIndex24.json +1 -0
  157. package/dist/cdn/assets/icon/buildingIndex32.json +1 -0
  158. package/dist/cdn/assets/icon/fireIndex16.json +1 -0
  159. package/dist/cdn/assets/icon/fireIndex24.json +1 -0
  160. package/dist/cdn/assets/icon/fireIndex32.json +1 -0
  161. package/dist/cdn/assets/icon/geologyIndex16.json +1 -0
  162. package/dist/cdn/assets/icon/geologyIndex24.json +1 -0
  163. package/dist/cdn/assets/icon/geologyIndex32.json +1 -0
  164. package/dist/cdn/assets/icon/returnToDefault16.json +1 -1
  165. package/dist/cdn/assets/icon/returnToDefault32.json +1 -1
  166. package/dist/cdn/assets/icon/smartSearch16.json +1 -0
  167. package/dist/cdn/assets/icon/smartSearch24.json +1 -0
  168. package/dist/cdn/assets/icon/smartSearch32.json +1 -0
  169. package/dist/cdn/assets/icon/snowIndex16.json +1 -0
  170. package/dist/cdn/assets/icon/snowIndex24.json +1 -0
  171. package/dist/cdn/assets/icon/snowIndex32.json +1 -0
  172. package/dist/cdn/assets/icon/soilAdjustedVegetationIndex16.json +1 -0
  173. package/dist/cdn/assets/icon/soilAdjustedVegetationIndex24.json +1 -0
  174. package/dist/cdn/assets/icon/soilAdjustedVegetationIndex32.json +1 -0
  175. package/dist/cdn/assets/icon/userSave16.json +1 -0
  176. package/dist/cdn/assets/icon/userSave24.json +1 -0
  177. package/dist/cdn/assets/icon/userSave32.json +1 -0
  178. package/dist/cdn/assets/icon/vegetationIndex16.json +1 -0
  179. package/dist/cdn/assets/icon/vegetationIndex24.json +1 -0
  180. package/dist/cdn/assets/icon/vegetationIndex32.json +1 -0
  181. package/dist/cdn/assets/icon/weatherRadar16.json +1 -0
  182. package/dist/cdn/assets/icon/weatherRadar24.json +1 -0
  183. package/dist/cdn/assets/icon/weatherRadar32.json +1 -0
  184. package/dist/cdn/assets/input/t9n/messages.ar.json +1 -1
  185. package/dist/cdn/assets/input/t9n/messages.bg.json +1 -1
  186. package/dist/cdn/assets/input/t9n/messages.bs.json +1 -1
  187. package/dist/cdn/assets/input/t9n/messages.ca.json +1 -1
  188. package/dist/cdn/assets/input/t9n/messages.cs.json +1 -1
  189. package/dist/cdn/assets/input/t9n/messages.da.json +1 -1
  190. package/dist/cdn/assets/input/t9n/messages.de.json +1 -1
  191. package/dist/cdn/assets/input/t9n/messages.el.json +1 -1
  192. package/dist/cdn/assets/input/t9n/messages.en.json +1 -1
  193. package/dist/cdn/assets/input/t9n/messages.es.json +1 -1
  194. package/dist/cdn/assets/input/t9n/messages.et.json +1 -1
  195. package/dist/cdn/assets/input/t9n/messages.fi.json +1 -1
  196. package/dist/cdn/assets/input/t9n/messages.fr.json +1 -1
  197. package/dist/cdn/assets/input/t9n/messages.he.json +1 -1
  198. package/dist/cdn/assets/input/t9n/messages.hr.json +1 -1
  199. package/dist/cdn/assets/input/t9n/messages.hu.json +1 -1
  200. package/dist/cdn/assets/input/t9n/messages.id.json +1 -1
  201. package/dist/cdn/assets/input/t9n/messages.it.json +1 -1
  202. package/dist/cdn/assets/input/t9n/messages.ja.json +1 -1
  203. package/dist/cdn/assets/input/t9n/messages.json +1 -1
  204. package/dist/cdn/assets/input/t9n/messages.ko.json +1 -1
  205. package/dist/cdn/assets/input/t9n/messages.lt.json +1 -1
  206. package/dist/cdn/assets/input/t9n/messages.lv.json +1 -1
  207. package/dist/cdn/assets/input/t9n/messages.nl.json +1 -1
  208. package/dist/cdn/assets/input/t9n/messages.no.json +1 -1
  209. package/dist/cdn/assets/input/t9n/messages.pl.json +1 -1
  210. package/dist/cdn/assets/input/t9n/messages.pt-BR.json +1 -1
  211. package/dist/cdn/assets/input/t9n/messages.pt-PT.json +1 -1
  212. package/dist/cdn/assets/input/t9n/messages.ro.json +1 -1
  213. package/dist/cdn/assets/input/t9n/messages.ru.json +1 -1
  214. package/dist/cdn/assets/input/t9n/messages.sk.json +1 -1
  215. package/dist/cdn/assets/input/t9n/messages.sl.json +1 -1
  216. package/dist/cdn/assets/input/t9n/messages.sr.json +1 -1
  217. package/dist/cdn/assets/input/t9n/messages.sv.json +1 -1
  218. package/dist/cdn/assets/input/t9n/messages.th.json +1 -1
  219. package/dist/cdn/assets/input/t9n/messages.tr.json +1 -1
  220. package/dist/cdn/assets/input/t9n/messages.uk.json +1 -1
  221. package/dist/cdn/assets/input/t9n/messages.vi.json +1 -1
  222. package/dist/cdn/assets/input/t9n/messages.zh-CN.json +1 -1
  223. package/dist/cdn/assets/input/t9n/messages.zh-HK.json +1 -1
  224. package/dist/cdn/assets/input/t9n/messages.zh-TW.json +1 -1
  225. package/dist/cdn/assets/input-number/t9n/messages.ar.json +1 -1
  226. package/dist/cdn/assets/input-number/t9n/messages.bg.json +1 -1
  227. package/dist/cdn/assets/input-number/t9n/messages.bs.json +1 -1
  228. package/dist/cdn/assets/input-number/t9n/messages.ca.json +1 -1
  229. package/dist/cdn/assets/input-number/t9n/messages.cs.json +1 -1
  230. package/dist/cdn/assets/input-number/t9n/messages.da.json +1 -1
  231. package/dist/cdn/assets/input-number/t9n/messages.de.json +1 -1
  232. package/dist/cdn/assets/input-number/t9n/messages.el.json +1 -1
  233. package/dist/cdn/assets/input-number/t9n/messages.en.json +1 -1
  234. package/dist/cdn/assets/input-number/t9n/messages.es.json +1 -1
  235. package/dist/cdn/assets/input-number/t9n/messages.et.json +1 -1
  236. package/dist/cdn/assets/input-number/t9n/messages.fi.json +1 -1
  237. package/dist/cdn/assets/input-number/t9n/messages.fr.json +1 -1
  238. package/dist/cdn/assets/input-number/t9n/messages.he.json +1 -1
  239. package/dist/cdn/assets/input-number/t9n/messages.hr.json +1 -1
  240. package/dist/cdn/assets/input-number/t9n/messages.hu.json +1 -1
  241. package/dist/cdn/assets/input-number/t9n/messages.id.json +1 -1
  242. package/dist/cdn/assets/input-number/t9n/messages.it.json +1 -1
  243. package/dist/cdn/assets/input-number/t9n/messages.ja.json +1 -1
  244. package/dist/cdn/assets/input-number/t9n/messages.json +1 -1
  245. package/dist/cdn/assets/input-number/t9n/messages.ko.json +1 -1
  246. package/dist/cdn/assets/input-number/t9n/messages.lt.json +1 -1
  247. package/dist/cdn/assets/input-number/t9n/messages.lv.json +1 -1
  248. package/dist/cdn/assets/input-number/t9n/messages.nl.json +1 -1
  249. package/dist/cdn/assets/input-number/t9n/messages.no.json +1 -1
  250. package/dist/cdn/assets/input-number/t9n/messages.pl.json +1 -1
  251. package/dist/cdn/assets/input-number/t9n/messages.pt-BR.json +1 -1
  252. package/dist/cdn/assets/input-number/t9n/messages.pt-PT.json +1 -1
  253. package/dist/cdn/assets/input-number/t9n/messages.ro.json +1 -1
  254. package/dist/cdn/assets/input-number/t9n/messages.ru.json +1 -1
  255. package/dist/cdn/assets/input-number/t9n/messages.sk.json +1 -1
  256. package/dist/cdn/assets/input-number/t9n/messages.sl.json +1 -1
  257. package/dist/cdn/assets/input-number/t9n/messages.sr.json +1 -1
  258. package/dist/cdn/assets/input-number/t9n/messages.sv.json +1 -1
  259. package/dist/cdn/assets/input-number/t9n/messages.th.json +1 -1
  260. package/dist/cdn/assets/input-number/t9n/messages.tr.json +1 -1
  261. package/dist/cdn/assets/input-number/t9n/messages.uk.json +1 -1
  262. package/dist/cdn/assets/input-number/t9n/messages.vi.json +1 -1
  263. package/dist/cdn/assets/input-number/t9n/messages.zh-CN.json +1 -1
  264. package/dist/cdn/assets/input-number/t9n/messages.zh-HK.json +1 -1
  265. package/dist/cdn/assets/input-number/t9n/messages.zh-TW.json +1 -1
  266. package/dist/cdn/assets/input-text/t9n/messages.ar.json +1 -1
  267. package/dist/cdn/assets/input-text/t9n/messages.bg.json +1 -1
  268. package/dist/cdn/assets/input-text/t9n/messages.bs.json +1 -1
  269. package/dist/cdn/assets/input-text/t9n/messages.ca.json +1 -1
  270. package/dist/cdn/assets/input-text/t9n/messages.cs.json +1 -1
  271. package/dist/cdn/assets/input-text/t9n/messages.da.json +1 -1
  272. package/dist/cdn/assets/input-text/t9n/messages.de.json +1 -1
  273. package/dist/cdn/assets/input-text/t9n/messages.el.json +1 -1
  274. package/dist/cdn/assets/input-text/t9n/messages.en.json +1 -1
  275. package/dist/cdn/assets/input-text/t9n/messages.es.json +1 -1
  276. package/dist/cdn/assets/input-text/t9n/messages.et.json +1 -1
  277. package/dist/cdn/assets/input-text/t9n/messages.fi.json +1 -1
  278. package/dist/cdn/assets/input-text/t9n/messages.fr.json +1 -1
  279. package/dist/cdn/assets/input-text/t9n/messages.he.json +1 -1
  280. package/dist/cdn/assets/input-text/t9n/messages.hr.json +1 -1
  281. package/dist/cdn/assets/input-text/t9n/messages.hu.json +1 -1
  282. package/dist/cdn/assets/input-text/t9n/messages.id.json +1 -1
  283. package/dist/cdn/assets/input-text/t9n/messages.it.json +1 -1
  284. package/dist/cdn/assets/input-text/t9n/messages.ja.json +1 -1
  285. package/dist/cdn/assets/input-text/t9n/messages.json +1 -1
  286. package/dist/cdn/assets/input-text/t9n/messages.ko.json +1 -1
  287. package/dist/cdn/assets/input-text/t9n/messages.lt.json +1 -1
  288. package/dist/cdn/assets/input-text/t9n/messages.lv.json +1 -1
  289. package/dist/cdn/assets/input-text/t9n/messages.nl.json +1 -1
  290. package/dist/cdn/assets/input-text/t9n/messages.no.json +1 -1
  291. package/dist/cdn/assets/input-text/t9n/messages.pl.json +1 -1
  292. package/dist/cdn/assets/input-text/t9n/messages.pt-BR.json +1 -1
  293. package/dist/cdn/assets/input-text/t9n/messages.pt-PT.json +1 -1
  294. package/dist/cdn/assets/input-text/t9n/messages.ro.json +1 -1
  295. package/dist/cdn/assets/input-text/t9n/messages.ru.json +1 -1
  296. package/dist/cdn/assets/input-text/t9n/messages.sk.json +1 -1
  297. package/dist/cdn/assets/input-text/t9n/messages.sl.json +1 -1
  298. package/dist/cdn/assets/input-text/t9n/messages.sr.json +1 -1
  299. package/dist/cdn/assets/input-text/t9n/messages.sv.json +1 -1
  300. package/dist/cdn/assets/input-text/t9n/messages.th.json +1 -1
  301. package/dist/cdn/assets/input-text/t9n/messages.tr.json +1 -1
  302. package/dist/cdn/assets/input-text/t9n/messages.uk.json +1 -1
  303. package/dist/cdn/assets/input-text/t9n/messages.vi.json +1 -1
  304. package/dist/cdn/assets/input-text/t9n/messages.zh-CN.json +1 -1
  305. package/dist/cdn/assets/input-text/t9n/messages.zh-HK.json +1 -1
  306. package/dist/cdn/assets/input-text/t9n/messages.zh-TW.json +1 -1
  307. package/dist/cdn/index.js +1 -1
  308. package/dist/chunks/ClearButton.js +1 -1
  309. package/dist/chunks/date.js +9 -6
  310. package/dist/chunks/dom.js +3 -2
  311. package/dist/chunks/math.js +1 -1
  312. package/dist/chunks/openCloseComponent.js +1 -1
  313. package/dist/chunks/resources10.js +19 -0
  314. package/dist/chunks/resources11.js +63 -0
  315. package/dist/chunks/resources12.js +27 -0
  316. package/dist/chunks/resources5.js +40 -51
  317. package/dist/chunks/resources6.js +24 -46
  318. package/dist/chunks/resources7.js +53 -8
  319. package/dist/chunks/resources8.js +50 -10
  320. package/dist/chunks/resources9.js +7 -53
  321. package/dist/chunks/responsive.js +1 -1
  322. package/dist/chunks/runtime.js +4 -4
  323. package/dist/chunks/useSizeOverride.js +1 -1
  324. package/dist/chunks/useTime.js +27 -24
  325. package/dist/chunks/utils.js +12 -18
  326. package/dist/chunks/utils2.js +59 -6
  327. package/dist/chunks/utils3.js +1 -1
  328. package/dist/components/calcite-action/customElement.d.ts +1 -5
  329. package/dist/components/calcite-action-group/customElement.d.ts +2 -4
  330. package/dist/components/calcite-action-menu/customElement.d.ts +2 -4
  331. package/dist/components/calcite-alert/customElement.d.ts +1 -3
  332. package/dist/components/calcite-autocomplete/customElement.d.ts +3 -9
  333. package/dist/components/calcite-autocomplete-item/customElement.d.ts +1 -1
  334. package/dist/components/calcite-block/customElement.d.ts +12 -14
  335. package/dist/components/calcite-block/customElement.js +8 -49
  336. package/dist/components/calcite-block-group/customElement.js +3 -5
  337. package/dist/components/calcite-block-section/customElement.d.ts +5 -5
  338. package/dist/components/calcite-block-section/customElement.js +1 -1
  339. package/dist/components/calcite-button/customElement.d.ts +9 -13
  340. package/dist/components/calcite-button/customElement.js +3 -3
  341. package/dist/components/calcite-carousel/customElement.js +1 -1
  342. package/dist/components/calcite-checkbox/customElement.d.ts +1 -5
  343. package/dist/components/calcite-checkbox/customElement.js +1 -1
  344. package/dist/components/calcite-chip/customElement.js +1 -27
  345. package/dist/components/calcite-color-picker/customElement.d.ts +3 -3
  346. package/dist/components/calcite-color-picker/customElement.js +23 -20
  347. package/dist/components/calcite-color-picker-hex-input/customElement.d.ts +1 -1
  348. package/dist/components/calcite-color-picker-hex-input/customElement.js +4 -4
  349. package/dist/components/calcite-color-picker-swatch/customElement.d.ts +1 -1
  350. package/dist/components/calcite-color-picker-swatch/customElement.js +1 -1
  351. package/dist/components/calcite-combobox/customElement.d.ts +13 -19
  352. package/dist/components/calcite-combobox/customElement.js +308 -150
  353. package/dist/components/calcite-combobox-item/customElement.d.ts +6 -6
  354. package/dist/components/calcite-combobox-item/customElement.js +2 -1
  355. package/dist/components/calcite-combobox-item-group/customElement.d.ts +1 -1
  356. package/dist/components/calcite-combobox-item-group/customElement.js +1 -1
  357. package/dist/components/calcite-date-picker/customElement.d.ts +10 -10
  358. package/dist/components/calcite-date-picker/customElement.js +18 -18
  359. package/dist/components/calcite-date-picker-day/customElement.js +2 -2
  360. package/dist/components/calcite-date-picker-month/customElement.d.ts +4 -4
  361. package/dist/components/calcite-date-picker-month/customElement.js +19 -14
  362. package/dist/components/calcite-date-picker-month-header/customElement.js +14 -9
  363. package/dist/components/calcite-dialog/customElement.d.ts +9 -11
  364. package/dist/components/calcite-dialog/customElement.js +6 -7
  365. package/dist/components/calcite-dropdown/customElement.d.ts +6 -7
  366. package/dist/components/calcite-dropdown/customElement.js +10 -7
  367. package/dist/components/calcite-dropdown-group/customElement.d.ts +1 -1
  368. package/dist/components/calcite-dropdown-group/customElement.js +2 -2
  369. package/dist/components/calcite-dropdown-item/customElement.d.ts +7 -7
  370. package/dist/components/calcite-dropdown-item/customElement.js +4 -4
  371. package/dist/components/calcite-filter/customElement.js +1 -1
  372. package/dist/components/calcite-flow-item/customElement.d.ts +2 -4
  373. package/dist/components/calcite-flow-item/customElement.js +1 -1
  374. package/dist/components/calcite-graph/customElement.d.ts +3 -3
  375. package/dist/components/calcite-graph/customElement.js +11 -15
  376. package/dist/components/calcite-icon/customElement.d.ts +2 -2
  377. package/dist/components/calcite-icon/customElement.js +4 -4
  378. package/dist/components/calcite-icon/interfaces.d.ts +1 -1
  379. package/dist/components/calcite-inline-editable/customElement.d.ts +1 -1
  380. package/dist/components/calcite-inline-editable/customElement.js +4 -2
  381. package/dist/components/calcite-input/customElement.d.ts +23 -24
  382. package/dist/components/calcite-input/customElement.js +15 -13
  383. package/dist/components/calcite-input-date-picker/customElement.d.ts +17 -23
  384. package/dist/components/calcite-input-date-picker/customElement.js +19 -24
  385. package/dist/components/calcite-input-message/customElement.d.ts +1 -1
  386. package/dist/components/calcite-input-number/customElement.d.ts +22 -25
  387. package/dist/components/calcite-input-number/customElement.js +15 -13
  388. package/dist/components/calcite-input-text/customElement.d.ts +18 -19
  389. package/dist/components/calcite-input-text/customElement.js +3 -3
  390. package/dist/components/calcite-input-time-picker/customElement.d.ts +11 -13
  391. package/dist/components/calcite-input-time-picker/customElement.js +34 -10
  392. package/dist/components/calcite-input-time-zone/customElement.d.ts +9 -15
  393. package/dist/components/calcite-input-time-zone/customElement.js +14 -12
  394. package/dist/components/calcite-list/customElement.js +1 -1
  395. package/dist/components/calcite-list-item/customElement.d.ts +1 -3
  396. package/dist/components/calcite-list-item/customElement.js +1 -1
  397. package/dist/components/calcite-list-item-group/customElement.js +1 -1
  398. package/dist/components/calcite-meter/customElement.d.ts +1 -3
  399. package/dist/components/calcite-pagination/customElement.js +2 -2
  400. package/dist/components/calcite-panel/customElement.d.ts +4 -6
  401. package/dist/components/calcite-panel/customElement.js +1 -1
  402. package/dist/components/calcite-popover/customElement.d.ts +2 -4
  403. package/dist/components/calcite-radio-button/customElement.d.ts +1 -5
  404. package/dist/components/calcite-rating/customElement.d.ts +1 -5
  405. package/dist/components/calcite-rating/customElement.js +1 -1
  406. package/dist/components/calcite-segmented-control/customElement.d.ts +1 -5
  407. package/dist/components/calcite-select/customElement.d.ts +1 -5
  408. package/dist/components/calcite-sheet/customElement.d.ts +1 -3
  409. package/dist/components/calcite-slider/customElement.d.ts +13 -17
  410. package/dist/components/calcite-slider/customElement.js +19 -20
  411. package/dist/components/calcite-sort-handle/customElement.d.ts +2 -4
  412. package/dist/components/calcite-split-button/customElement.d.ts +12 -14
  413. package/dist/components/calcite-split-button/customElement.js +1 -1
  414. package/dist/components/calcite-stack/customElement.js +1 -1
  415. package/dist/components/calcite-stepper/customElement.d.ts +1 -1
  416. package/dist/components/calcite-stepper/customElement.js +10 -10
  417. package/dist/components/calcite-stepper-item/customElement.d.ts +3 -3
  418. package/dist/components/calcite-stepper-item/customElement.js +8 -24
  419. package/dist/components/calcite-swatch/customElement.d.ts +1 -1
  420. package/dist/components/calcite-swatch/customElement.js +2 -2
  421. package/dist/components/calcite-swatch-group/customElement.js +8 -6
  422. package/dist/components/calcite-switch/customElement.d.ts +6 -10
  423. package/dist/components/calcite-tab-nav/customElement.js +64 -26
  424. package/dist/components/calcite-tab-title/customElement.js +4 -0
  425. package/dist/components/calcite-table-header/customElement.d.ts +1 -1
  426. package/dist/components/calcite-tabs/customElement.d.ts +6 -0
  427. package/dist/components/calcite-tabs/customElement.js +13 -7
  428. package/dist/components/calcite-text-area/customElement.d.ts +1 -5
  429. package/dist/components/calcite-tile/customElement.d.ts +1 -1
  430. package/dist/components/calcite-time-picker/customElement.js +4 -4
  431. package/dist/components/calcite-tooltip/customElement.d.ts +1 -3
  432. package/dist/controllers/useTime.d.ts +3 -0
  433. package/dist/docs/api.json +1 -1
  434. package/dist/docs/docs.json +1 -1
  435. package/dist/docs/translations.json +1 -1
  436. package/dist/docs/vscode.css-custom-data.json +1 -1
  437. package/dist/docs/vscode.html-custom-data.json +1 -1
  438. package/dist/docs/web-types.json +1 -1
  439. package/dist/loader.js +3 -3
  440. package/dist/types/lumina.d.ts +2 -2
  441. package/dist/types/preact.d.ts +2 -2
  442. package/dist/types/react.d.ts +2 -2
  443. package/dist/types/stencil.d.ts +2 -2
  444. package/dist/utils/date.d.ts +2 -2
  445. package/package.json +13 -10
  446. package/dist/cdn/2YACKK37.js +0 -2
  447. package/dist/cdn/436YQVXE.js +0 -2
  448. package/dist/cdn/4DBQ4ANV.js +0 -2
  449. package/dist/cdn/5NUVM2O5.js +0 -2
  450. package/dist/cdn/5SUANSC5.js +0 -2
  451. package/dist/cdn/6THNFXTV.js +0 -2
  452. package/dist/cdn/77K7O24O.js +0 -2
  453. package/dist/cdn/B77UXRFM.js +0 -2
  454. package/dist/cdn/BUM6WOSW.js +0 -2
  455. package/dist/cdn/DAZHMHCO.js +0 -2
  456. package/dist/cdn/EB7IYMTW.js +0 -2
  457. package/dist/cdn/FITMXYWO.js +0 -2
  458. package/dist/cdn/GHR4QESS.js +0 -2
  459. package/dist/cdn/GRHXNV32.js +0 -2
  460. package/dist/cdn/IJXQ6SIM.js +0 -2
  461. package/dist/cdn/JLRS6GUS.js +0 -2
  462. package/dist/cdn/KBON2CAX.js +0 -2
  463. package/dist/cdn/LF6HBGIK.js +0 -2
  464. package/dist/cdn/LKEGNPWV.js +0 -2
  465. package/dist/cdn/LRKNRPLM.js +0 -2
  466. package/dist/cdn/LUMYH5OP.js +0 -2
  467. package/dist/cdn/LYY7VO7C.js +0 -2
  468. package/dist/cdn/NI547XEE.js +0 -2
  469. package/dist/cdn/PVLU53NA.js +0 -2
  470. package/dist/cdn/PXCZRN5T.js +0 -2
  471. package/dist/cdn/Q6AT6CSF.js +0 -2
  472. package/dist/cdn/QCDNDFJF.js +0 -2
  473. package/dist/cdn/QMY55ROX.js +0 -2
  474. package/dist/cdn/SZG4WIY5.js +0 -2
  475. package/dist/cdn/T2B7YQBZ.js +0 -2
  476. package/dist/cdn/T4S5XNIM.js +0 -2
  477. package/dist/cdn/URGWXZVV.js +0 -2
  478. package/dist/cdn/URYJKH3O.js +0 -2
  479. package/dist/cdn/VKSNYALB.js +0 -2
  480. package/dist/cdn/XNIMPU7U.js +0 -2
  481. package/dist/cdn/ZDK7XU74.js +0 -20
  482. package/dist/cdn/ZLOVZ5ZX.js +0 -2
  483. /package/dist/cdn/{XJY76HZ5.js → 2QCI6TGY.js} +0 -0
  484. /package/dist/cdn/{O2A6CQZA.js → BLWTCPBG.js} +0 -0
  485. /package/dist/cdn/{5OPFL4DZ.js → KWIC32XQ.js} +0 -0
  486. /package/dist/cdn/{SG5FNFQO.js → Q24FQVQ4.js} +0 -0
  487. /package/dist/cdn/{DE7OTXX2.js → QBJZUEM2.js} +0 -0
@@ -27,8 +27,9 @@ import { u as useCancelable } from "../../chunks/useCancelable.js";
27
27
  import { u as useInteractive } from "../../chunks/useInteractive.js";
28
28
  import { u as useTopLayer } from "../../chunks/useTopLayer.js";
29
29
  import { u as useForm } from "../../chunks/useForm.js";
30
- import { I as IDS, C as CSS, a as ComboboxItemSelector, b as ComboboxItemGroupSelector, c as ICONS } from "../../chunks/resources5.js";
31
- import { h as hasActiveChildren, i as isSingleLike, g as getLabel, a as getItemAncestors, b as getItemChildren } from "../../chunks/utils2.js";
30
+ import { i as isChip } from "../../chunks/resources6.js";
31
+ import { I as IDS, C as CSS, a as ComboboxItemSelector, b as ComboboxItemGroupSelector, c as ICONS } from "../../chunks/resources7.js";
32
+ import { h as hasActiveChildren, i as isSingleLike, o as orderValuesByPrevious, a as orderByPrevious, g as getLabel, b as getItemAncestors, c as getItemChildren } from "../../chunks/utils2.js";
32
33
  const styles = css`:host([disabled]){cursor:default;-webkit-user-select:none;user-select:none;opacity:var(--calcite-opacity-disabled)}:host([disabled]) *,:host([disabled]) ::slotted(*){pointer-events:none}:host{position:relative;display:block}:host([scale=s]){font-size:var(--calcite-font-size-relative-sm);--calcite-internal-combobox-spacing-unit-l: .5rem;--calcite-internal-combobox-spacing-unit-s: .25rem;--calcite-internal-combobox-padding-inline-end: var(--calcite-space-2xs);--calcite-internal-combobox-no-matches-spacing-unit-s: .25rem;--calcite-combobox-input-height: 1rem;--calcite-internal-combobox-input-margin-block: calc(.25rem - 1px) ;--calcite-internal-close-size: 1rem}:host([scale=m]){font-size:var(--calcite-font-size-relative-base);--calcite-internal-combobox-spacing-unit-l: .75rem;--calcite-internal-combobox-spacing-unit-s: .5rem;--calcite-internal-combobox-padding-inline-end: var(--calcite-space-sm);--calcite-internal-combobox-no-matches-spacing-unit-s: .375rem;--calcite-combobox-input-height: 1rem;--calcite-internal-combobox-input-margin-block: calc(.5rem - 1px) ;--calcite-internal-close-size: 1.5rem}:host([scale=l]){font-size:var(--calcite-font-size-relative-md);--calcite-internal-combobox-spacing-unit-l: 1rem;--calcite-internal-combobox-spacing-unit-s: .75rem;--calcite-internal-combobox-padding-inline-end: var(--calcite-space-sm-plus);--calcite-internal-combobox-no-matches-spacing-unit-s: var(--calcite-space-sm-plus);--calcite-combobox-input-height: 1.5rem;--calcite-internal-combobox-input-margin-block: calc(var(--calcite-space-sm-plus) - 1px);--calcite-internal-close-size: 2rem}.wrapper{display:flex;border-width:1px;border-style:solid;outline-color:transparent;padding-block:calc(var(--calcite-internal-combobox-spacing-unit-s) / 4);padding-inline:var(--calcite-internal-combobox-spacing-unit-l) var(--calcite-internal-combobox-padding-inline-end);background-color:var(--calcite-combobox-input-background-color, var(--calcite-color-foreground-1));color:var(--calcite-combobox-input-text-color, var(--calcite-color-text-1));border-color:var(--calcite-combobox-input-border-color, var(--calcite-color-border-input))}.wrapper:hover .icon{color:var(--calcite-combobox-icon-color-hover, var(--calcite-color-text-1))}:host(:focus-within) .wrapper,.wrapper--active{outline:var(--calcite-border-width-md) solid var(--calcite-color-focus, var(--calcite-ui-focus-color, var(--calcite-color-brand)));outline-offset:calc(calc(-1 * var(--calcite-spacing-base)) * calc(1 - (2*clamp(0,var(--calcite-offset-invert-focus),1))))}:host([read-only]) .wrapper{background-color:var(--calcite-color-background)}:host([read-only]) .label{font-weight:var(--calcite-font-weight-medium)}:host([status=invalid]) .wrapper{border-color:var(--calcite-color-status-danger)}:host([status=invalid]:focus-within) .wrapper{outline:var(--calcite-border-width-md) solid var(--calcite-color-status-danger);outline-offset:calc(calc(-1 * var(--calcite-spacing-base)) * calc(1 - (2*clamp(0,var(--calcite-offset-invert-focus),1))))}.wrapper--single{padding-block:0;padding-inline:var(--calcite-internal-combobox-spacing-unit-l) var(--calcite-internal-combobox-padding-inline-end);cursor:pointer;flex-wrap:nowrap}.grid-input{position:relative;display:flex;flex-grow:1;flex-wrap:wrap;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0;gap:var(--calcite-internal-combobox-spacing-unit-s);margin-inline-end:var(--calcite-internal-combobox-spacing-unit-s)}.grid-input.selection-display--fit,.grid-input.selection-display--single{flex-wrap:nowrap;overflow:hidden}.input{flex-grow:1;appearance:none;overflow:hidden;text-overflow:ellipsis;border-style:none;background-color:transparent;padding:0;font-family:inherit;color:var(--calcite-color-text-1);font-size:inherit;block-size:var(--calcite-combobox-input-height);line-height:var(--calcite-combobox-input-height);inline-size:100%;margin-block-end:var(--calcite-internal-combobox-spacing-unit-s);min-inline-size:4.8125rem}.input:focus{outline:2px solid transparent;outline-offset:2px}.input:placeholder-shown{text-overflow:ellipsis}.input--single{padding:0;margin-block:var(--calcite-internal-combobox-input-margin-block)}.wrapper--active .input-single{cursor:text}.input--hidden{pointer-events:none;width:0px;min-width:0px;opacity:0}.input--icon{padding-block:0;padding-inline:var(--calcite-internal-combobox-spacing-unit-l)}.placeholder-icon{color:var(--calcite-combobox-icon-color, var(--calcite-color-text-3))}.input-wrap{display:flex;flex-grow:1;align-items:center}.input-wrap--single{flex:1 1 0%;overflow:hidden}.label{pointer-events:none;max-width:100%;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0;font-weight:var(--calcite-font-weight-normal);block-size:var(--calcite-combobox-input-height);line-height:var(--calcite-combobox-input-height)}.label--icon{padding-inline:var(--calcite-internal-combobox-spacing-unit-l)}.icon-end,.icon-start{display:flex;cursor:pointer;align-items:center}.icon-end{flex:none}.icon-end .icon{color:var(--calcite-combobox-icon-color, var(--calcite-color-text-3))}.floating-ui-container{inline-size:max-content;display:none;max-inline-size:100vw;max-block-size:100vh;inset-block-start:0;left:0;z-index:var(--calcite-floating-ui-z-index)}@starting-style{.floating-ui-container{opacity:0;inset-block-start:0;left:0}}:host([top-layer-disabled]) .floating-ui-container{--calcite-floating-ui-z-index: var(--calcite-z-index-dropdown)}.floating-ui-container[popover]{padding:0;margin:0;border:none;background-color:transparent;overflow:visible;display:none}.floating-ui-container:popover-open{display:block}.floating-ui-container .calcite-floating-ui-anim{position:relative;transition-duration:var(--calcite-floating-ui-transition);transition-property:inset-block-start,left,opacity,display;transition-behavior:allow-discrete;opacity:0;box-shadow:0 0 16px #00000029;z-index:var(--calcite-z-index);border-radius:.25rem}.floating-ui-container[data-placement^=bottom] .calcite-floating-ui-anim{inset-block-start:-5px}.floating-ui-container[data-placement^=top] .calcite-floating-ui-anim{inset-block-start:5px}.floating-ui-container[data-placement^=left] .calcite-floating-ui-anim{left:5px}.floating-ui-container[data-placement^=right] .calcite-floating-ui-anim{left:-5px}.floating-ui-container[data-placement] .calcite-floating-ui-anim--active{opacity:1;inset-block-start:0;left:0}@starting-style{.floating-ui-container[data-placement] .calcite-floating-ui-anim--active{opacity:0}}.floating-ui-container .calcite-floating-ui-anim{box-shadow:var(--calcite-shadow-md)}@media(forced-colors:active){.wrapper,.floating-ui-container{border:1px solid canvasText}}.screen-readers-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.list-container{max-height:45vh;overflow-y:auto;inline-size:var(--calcite-dropdown-width, 100%);background-color:var(--calcite-combobox-background-color, var(--calcite-color-foreground-1))}.list{margin:0;display:block;padding:0;line-height:var(--calcite-font-line-height-relative-snug)}.list--hide{height:0px;overflow:hidden}calcite-chip{--calcite-animation-timing: 0}.chip{margin-block:calc(var(--calcite-internal-combobox-spacing-unit-s) / 4);max-inline-size:100%}.chip--invisible{visibility:hidden;position:absolute}.item{display:block}.select-all{background-color:var(--calcite-combobox-item-background-color-active, var(--calcite-color-foreground-1));border-block-end-color:var(--calcite-combobox-divider-color, var(--calcite-combobox-item-border-color, var(--calcite-color-border-3)));border-block-end-style:solid;border-block-end-width:var(--calcite-border-width-sm);inset-block-start:0;position:sticky;z-index:var(--calcite-z-index-sticky)}.no-matches{padding-block:var(--calcite-internal-combobox-no-matches-spacing-unit-s);padding-inline:var(--calcite-internal-combobox-spacing-unit-l);color:var(--calcite-combobox-input-text-color, var(--calcite-color-text-1));background:var(--calcite-combobox-background-color, var(--calcite-color-foreground-1));cursor:pointer}.no-matches-placeholder{color:var(--calcite-combobox-icon-color, var(--calcite-color-text-3));cursor:default}.disabled{opacity:.5}:host([disabled]) ::slotted([calcite-hydrated][disabled]),:host([disabled]) [calcite-hydrated][disabled]{opacity:1}.interaction-container{display:contents}.clear-button--container{display:flex;cursor:pointer;align-items:center}.clear-button--container:hover calcite-action{--calcite-action-background-color: var(--calcite-clear-button-background-color-hover, var(--calcite-color-foreground-3));--calcite-action-text-color: var(--calcite-clear-button-icon-color-hover, var(--calcite-color-text-1))}.clear-button--container:active calcite-action{--calcite-action-background-color: var(--calcite-clear-button-background-color-press, var(--calcite-color-border-2));--calcite-action-text-color: var(--calcite-clear-button-icon-color-press, var(--calcite-color-text-1))}.clear-button--container calcite-action{--calcite-internal-action-height: 100%;--calcite-internal-action-padding-inline: var(--calcite-spacing-none);--calcite-internal-action-padding-block: var(--calcite-spacing-none);--calcite-action-background-color: var(--calcite-clear-button-background-color, var(--calcite-color-foreground-2));--calcite-action-text-color: var(--calcite-clear-button-icon-color)}.clear-button--container calcite-action:hover{--calcite-action-background-color-hover: var(--calcite-clear-button-background-color-hover, var(--calcite-color-foreground-3));--calcite-action-text-color-press: var(--calcite-clear-button-icon-color-hover)}.clear-button--container calcite-action:active{--calcite-action-background-color-press: var(--calcite-clear-button-background-color-press, var(--calcite-color-border-2));--calcite-action-text-color-press: var(--calcite-clear-button-icon-color-press)}:host([scale=s]) .clear-button--container{padding:var(--calcite-spacing-xxs)}:host([scale=m]) .clear-button--container{padding:var(--calcite-spacing-xxs);padding-inline-end:var(--calcite-space-sm)}:host([scale=l]) .clear-button--container{padding-inline-end:var(--calcite-spacing-sm-plus)}.validation-container{display:flex;flex-direction:column;align-items:flex-start;align-self:stretch}:host([scale=m]) .validation-container,:host([scale=l]) .validation-container{padding-block-start:.5rem}:host([scale=s]) .validation-container{padding-block-start:.25rem}::slotted(input[slot=hidden-form-input]){margin:0!important;opacity:0!important;outline:none!important;padding:0!important;position:absolute!important;inset:0!important;transform:none!important;-webkit-appearance:none!important;z-index:-1!important}:host([hidden]){display:none}[hidden]{display:none}.text-match{background-color:transparent;color:inherit;font-weight:var(--calcite-font-weight-bold)}.internal-label-alignment--center{align-items:center}.internal-label-alignment--end{align-items:end}.internal-label--container{display:flex;justify-content:space-between;color:var(--calcite-color-text-1)}.internal-label-required--indicator{font-weight:var(--calcite-font-weight-medium);color:var(--calcite-color-status-danger);padding-inline:var(--calcite-spacing-base)}.internal-label-required--indicator:hover{cursor:help}.internal-label--text{line-height:1}:host([scale=s]) .internal-label-spacing--bottom{margin-block-end:var(--calcite-spacing-xxs)}:host([scale=s]) .internal-label-spacing-inline--end{margin-inline-end:var(--calcite-spacing-sm)}:host([scale=s]) .internal-label-spacing-inline--start{margin-inline-start:var(--calcite-spacing-sm)}:host([scale=s]) .internal-label--text{font-size:var(--calcite-font-size--2)}:host([scale=m]) .internal-label-spacing--bottom{margin-block-end:var(--calcite-spacing-sm)}:host([scale=m]) .internal-label-spacing-inline--end{margin-inline-end:var(--calcite-spacing-sm)}:host([scale=m]) .internal-label-spacing-inline--start{margin-inline-start:var(--calcite-spacing-sm)}:host([scale=m]) .internal-label--text{font-size:var(--calcite-font-size--1)}:host([scale=l]) .internal-label-spacing--bottom{margin-block-end:var(--calcite-spacing-sm)}:host([scale=l]) .internal-label-spacing-inline--end{margin-inline-end:var(--calcite-spacing-md)}:host([scale=l]) .internal-label-spacing-inline--start{margin-inline-start:var(--calcite-spacing-md)}:host([scale=l]) .internal-label--text{font-size:var(--calcite-font-size-0)}::placeholder{font-weight:var(--calcite-font-weight-normal);color:var(--calcite-input-placeholder-text-color, var(--calcite-color-text-3))}`;
33
34
  class Combobox extends LitElement {
34
35
  constructor() {
@@ -39,6 +40,7 @@ class Combobox extends LitElement {
39
40
  })(this);
40
41
  this.selectAllComboboxItemRef = createRef();
41
42
  this.allSelectedIndicatorChipRef = createRef();
43
+ this.data = [];
42
44
  this.cancelable = useCancelable()(this);
43
45
  this.filterItems = (() => {
44
46
  const find = (item, filteredData) => item && filteredData.some(({ el }) => item === el);
@@ -62,7 +64,7 @@ class Combobox extends LitElement {
62
64
  }
63
65
  });
64
66
  this.noMatchesFound = this.filteredItems.length === 0 && !!this.filterText;
65
- this.filterTextMatchPattern = this.filterText && new RegExp(`(${escapeRegExp(this.filterText)})`, "i");
67
+ this.filterTextMatchPattern = this.filterText ? new RegExp(`(${escapeRegExp(this.filterText)})`, "i") : void 0;
66
68
  this.keyboardNavItems.forEach((item) => {
67
69
  item.filterTextMatchPattern = this.filterTextMatchPattern;
68
70
  });
@@ -77,36 +79,43 @@ class Combobox extends LitElement {
77
79
  this._filterText = "";
78
80
  this.getSelectedItems = () => {
79
81
  if (!this.isMulti()) {
80
- const match = this.items.find(({ selected }) => selected);
82
+ const match = this.allItems.find(({ selected }) => selected);
81
83
  return match ? [match] : [];
82
84
  }
83
- return this.items.filter((item) => item.selected && (this.selectionMode !== "ancestors" || !hasActiveChildren(item))).sort((a, b) => {
84
- const aIdx = this.selectedItems.indexOf(a);
85
- const bIdx = this.selectedItems.indexOf(b);
86
- if (aIdx > -1 && bIdx > -1) {
87
- return aIdx - bIdx;
88
- }
89
- return bIdx - aIdx;
90
- });
85
+ return this.allItems.filter((item) => item.selected && (this.selectionMode !== "ancestors" || !hasActiveChildren(item)));
91
86
  };
87
+ this.groupData = [];
92
88
  this.groupItems = [];
93
89
  this.guid = guid();
94
90
  this.ignoreSelectedEventsFlag = false;
95
91
  this.internalValueChangeFlag = false;
92
+ this.previousAllSelected = false;
93
+ this.refreshingSelectionDisplay = false;
96
94
  this.mutationObserver = createObserver("mutation", () => this.updateItems());
97
95
  this.onLabelClick = () => {
98
96
  this.setFocus();
99
97
  };
100
98
  this.transitionProp = "opacity";
101
- this.resizeObserver = createObserver("resize", () => {
102
- this.setMaxScrollerHeight();
103
- this.refreshSelectionDisplay();
104
- });
99
+ this.resizeObserver = (() => {
100
+ let resizeWorkQueued = false;
101
+ return createObserver("resize", () => {
102
+ if (resizeWorkQueued) {
103
+ return;
104
+ }
105
+ resizeWorkQueued = true;
106
+ requestAnimationFrame(() => {
107
+ resizeWorkQueued = false;
108
+ this.setMaxScrollerHeight();
109
+ this.refreshSelectionDisplay();
110
+ });
111
+ });
112
+ })();
105
113
  this.selectedIndicatorChipRef = createRef();
114
+ this.selectedChipCountRef = createRef();
106
115
  this.clearButtonRef = createRef();
107
116
  this._selectedItems = [];
108
117
  this.textInputRef = createRef();
109
- this._value = null;
118
+ this._value = "";
110
119
  this.messages = useT9n();
111
120
  this.focusSetter = useSetFocus()(this);
112
121
  this.customChipAddHandler = () => {
@@ -120,10 +129,13 @@ class Combobox extends LitElement {
120
129
  this.activeDescendant = "";
121
130
  this.activeItemIndex = -1;
122
131
  this.compactSelectionDisplay = false;
132
+ this.deferFitChipCountRender = false;
123
133
  this.selectedHiddenChipsCount = 0;
124
134
  this.selectedVisibleChipsCount = 0;
135
+ this.fitUsingCompactCountLabel = false;
125
136
  this.allItems = [];
126
137
  this.items = [];
138
+ this.noMatchesFound = false;
127
139
  this.clearDisabled = false;
128
140
  this.disabled = false;
129
141
  this.maxItems = 0;
@@ -153,7 +165,7 @@ class Combobox extends LitElement {
153
165
  this.listen("click", this.comboboxFocusHandler);
154
166
  }
155
167
  static {
156
- this.properties = { activeChipIndex: [16, {}, { state: true }], activeDescendant: [16, {}, { state: true }], activeItemIndex: [16, {}, { state: true }], compactSelectionDisplay: [16, {}, { state: true }], selectedHiddenChipsCount: [16, {}, { state: true }], selectedVisibleChipsCount: [16, {}, { state: true }], allItems: [16, {}, { state: true }], items: [16, {}, { state: true }], noMatchesFound: [16, {}, { state: true }], allowCustomValues: [7, {}, { reflect: true, type: Boolean }], clearDisabled: [7, {}, { reflect: true, type: Boolean }], disabled: [7, {}, { reflect: true, type: Boolean }], filterText: [3, {}, { reflect: true }], filterProps: [0, {}, { attribute: false }], filteredItems: [32, {}, { attribute: false, readOnly: true }], flipPlacements: [0, {}, { attribute: false }], form: [3, {}, { reflect: true }], label: 1, labelText: 1, maxItems: [11, {}, { reflect: true, type: Number }], messageOverrides: [0, {}, { attribute: false }], name: [3, {}, { reflect: true }], open: [7, {}, { reflect: true, type: Boolean }], overlayPositioning: [3, {}, { reflect: true }], placeholder: 1, placeholderIcon: [3, { type: String }, { reflect: true }], placeholderIconFlipRtl: [7, {}, { reflect: true, type: Boolean }], placement: [3, {}, { reflect: true }], readOnly: [7, {}, { reflect: true, type: Boolean }], required: [7, {}, { reflect: true, type: Boolean }], scale: [3, {}, { reflect: true }], selectAllEnabled: [7, {}, { reflect: true, type: Boolean }], selectedItems: [0, {}, { attribute: false }], selectionDisplay: [3, {}, { reflect: true }], selectionAppearance: [3, {}, { reflect: true }], selectionMode: [3, {}, { reflect: true }], status: [3, {}, { reflect: true }], topLayerDisabled: [7, {}, { reflect: true, type: Boolean }], validationIcon: [3, { converter: stringOrBoolean, type: String }, { reflect: true }], validationMessage: 1, validity: [32, {}, { readOnly: true, attribute: false }], value: 1 };
168
+ this.properties = { activeChipIndex: [16, {}, { state: true }], activeDescendant: [16, {}, { state: true }], activeItemIndex: [16, {}, { state: true }], compactSelectionDisplay: [16, {}, { state: true }], deferFitChipCountRender: [16, {}, { state: true }], selectedHiddenChipsCount: [16, {}, { state: true }], selectedVisibleChipsCount: [16, {}, { state: true }], fitUsingCompactCountLabel: [16, {}, { state: true }], allItems: [16, {}, { state: true }], items: [16, {}, { state: true }], noMatchesFound: [16, {}, { state: true }], allowCustomValues: [7, {}, { reflect: true, type: Boolean }], clearDisabled: [7, {}, { reflect: true, type: Boolean }], disabled: [7, {}, { reflect: true, type: Boolean }], filterText: [3, {}, { reflect: true }], filterProps: [0, {}, { attribute: false }], filteredItems: [32, {}, { attribute: false, readOnly: true }], flipPlacements: [0, {}, { attribute: false }], form: [3, {}, { reflect: true }], label: 1, labelText: 1, maxItems: [11, {}, { reflect: true, type: Number }], messageOverrides: [0, {}, { attribute: false }], name: [3, {}, { reflect: true }], open: [7, {}, { reflect: true, type: Boolean }], overlayPositioning: [3, {}, { reflect: true }], placeholder: 1, placeholderIcon: [3, { type: String }, { reflect: true }], placeholderIconFlipRtl: [7, {}, { reflect: true, type: Boolean }], placement: [3, {}, { reflect: true }], readOnly: [7, {}, { reflect: true, type: Boolean }], required: [7, {}, { reflect: true, type: Boolean }], scale: [3, {}, { reflect: true }], selectAllEnabled: [7, {}, { reflect: true, type: Boolean }], selectedItems: [0, {}, { attribute: false }], selectionDisplay: [3, {}, { reflect: true }], selectionAppearance: [3, {}, { reflect: true }], selectionMode: [3, {}, { reflect: true }], status: [3, {}, { reflect: true }], topLayerDisabled: [7, {}, { reflect: true, type: Boolean }], validationIcon: [3, { converter: stringOrBoolean, type: String }, { reflect: true }], validationMessage: 1, validity: [32, {}, { readOnly: true, attribute: false }], value: 1 };
157
169
  }
158
170
  static {
159
171
  this.formAssociated = true;
@@ -178,9 +190,6 @@ class Combobox extends LitElement {
178
190
  const enabledItems = this.allItems.filter((item) => !item.disabled);
179
191
  return enabledItems.length > 0 && enabledItems.every((item) => item.selected);
180
192
  }
181
- get hasDisabledItems() {
182
- return this.allItems.some((item) => item.disabled);
183
- }
184
193
  get hasDisabledSelected() {
185
194
  return this.allItems.some((item) => item.disabled && item.selected);
186
195
  }
@@ -325,11 +334,33 @@ class Combobox extends LitElement {
325
334
  this.reposition(true);
326
335
  }
327
336
  selectedItemsHandler() {
337
+ const wasAllSelected = this.previousAllSelected;
338
+ const isAllSelected = this.allSelected;
339
+ this.previousAllSelected = isAllSelected;
328
340
  this.internalValueChangeFlag = true;
329
341
  this.value = this.getValue();
330
342
  this.internalValueChangeFlag = false;
331
343
  if (this.selectionDisplay === "fit" && this.isMulti()) {
332
- this.refreshSelectionDisplay();
344
+ const transitioningFromAllSelected = wasAllSelected && !isAllSelected;
345
+ if (wasAllSelected && !isAllSelected) {
346
+ this.selectedHiddenChipsCount = 0;
347
+ this.selectedItems.forEach((item) => {
348
+ const chipEl = this.referenceEl?.querySelector(`#${IDS.chip(item.guid)}`);
349
+ if (chipEl) {
350
+ this.showChip(chipEl);
351
+ }
352
+ });
353
+ }
354
+ this.updateComplete.then(async () => {
355
+ if (transitioningFromAllSelected) {
356
+ await this.updateComplete;
357
+ }
358
+ await this.refreshSelectionDisplay();
359
+ if (this.fitFollowUpRefreshPromise) {
360
+ await this.fitFollowUpRefreshPromise;
361
+ }
362
+ this.deferFitChipCountRender = false;
363
+ });
333
364
  }
334
365
  }
335
366
  async documentClickHandler(event) {
@@ -348,10 +379,11 @@ class Combobox extends LitElement {
348
379
  this.open = false;
349
380
  }
350
381
  handleSelectAll(isSelectAllTarget) {
351
- if (isSelectAllTarget) {
352
- this.toggleSelectAll();
382
+ if (!isSelectAllTarget) {
383
+ return;
353
384
  }
354
- if (this.allSelected && (!this.hasDisabledItems || this.hasDisabledSelected)) {
385
+ this.toggleSelectAll();
386
+ if (this.selectionDisplay !== "fit" && this.allSelected) {
355
387
  this.selectedItems.forEach((item) => {
356
388
  const chipEl = this.referenceEl.querySelector(`#${IDS.chip(item.guid)}`);
357
389
  if (chipEl) {
@@ -360,6 +392,9 @@ class Combobox extends LitElement {
360
392
  });
361
393
  }
362
394
  }
395
+ updateSelectedItems() {
396
+ this.selectedItems = this.getOrderedSelectedItems(this.getSelectedItems());
397
+ }
363
398
  calciteComboboxItemChangeHandler(event) {
364
399
  if (this.ignoreSelectedEventsFlag) {
365
400
  return;
@@ -372,7 +407,6 @@ class Combobox extends LitElement {
372
407
  const newIndex = this.keyboardNavItems.indexOf(isSelectAllTarget ? this.selectAllComboboxItemRef.value : target);
373
408
  this.updateActiveItemIndex(newIndex);
374
409
  this.toggleSelection(target, target.selected);
375
- this.selectedItems = this.getSelectedItems();
376
410
  }
377
411
  calciteInternalComboboxItemChangeHandler(event) {
378
412
  event.stopPropagation();
@@ -381,11 +415,14 @@ class Combobox extends LitElement {
381
415
  }
382
416
  }
383
417
  clearValue() {
384
- this.ignoreSelectedEventsFlag = true;
385
- this.items.forEach((el) => el.selected = false);
386
- this.ignoreSelectedEventsFlag = false;
387
- this.selectedItems = [];
388
- this.emitComboboxChange();
418
+ const enabledSelectedItems = this.items.filter((item) => item.selected && !item.disabled);
419
+ if (enabledSelectedItems.length) {
420
+ this.ignoreSelectedEventsFlag = true;
421
+ enabledSelectedItems.forEach((el) => el.selected = false);
422
+ this.ignoreSelectedEventsFlag = false;
423
+ this.updateSelectedItems();
424
+ this.emitComboboxChange();
425
+ }
389
426
  this.open = false;
390
427
  this.updateActiveItemIndex(-1);
391
428
  this.resetText();
@@ -400,12 +437,22 @@ class Combobox extends LitElement {
400
437
  }
401
438
  setFilteredPlacements() {
402
439
  const { el, flipPlacements } = this;
403
- this.filteredFlipPlacements = flipPlacements ? filterValidFlipPlacements(flipPlacements, el) : null;
440
+ this.filteredFlipPlacements = flipPlacements ? filterValidFlipPlacements(flipPlacements, el) : void 0;
404
441
  }
405
442
  getValue() {
406
- const items = this.selectedItems.map((item) => item.value?.toString());
443
+ const items = this.getOrderedSelectedValues(this.selectedItems.map((item) => item.value?.toString()));
407
444
  return items.length ? items.length > 1 ? items : items[0] : "";
408
445
  }
446
+ getOrderedSelectedValues(selectedValues) {
447
+ if (!this.isMulti()) {
448
+ return selectedValues;
449
+ }
450
+ const previousValues = Array.isArray(this.value) ? this.value : this.value ? [this.value] : [];
451
+ return orderValuesByPrevious(selectedValues, previousValues);
452
+ }
453
+ getOrderedSelectedItems(selectedItems) {
454
+ return this.isMulti() ? orderByPrevious(selectedItems, this.selectedItems) : selectedItems;
455
+ }
409
456
  comboboxInViewport() {
410
457
  const bounding = this.el.getBoundingClientRect();
411
458
  return bounding.top >= 0 && bounding.left >= 0 && bounding.right <= (window.innerWidth || document.documentElement.clientWidth) && bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight);
@@ -418,9 +465,16 @@ class Combobox extends LitElement {
418
465
  }
419
466
  item.selected = toggledValue;
420
467
  });
421
- this.selectedItems = this.getSelectedItems();
468
+ this.updateSelectedItems();
422
469
  this.emitComboboxChange();
423
470
  }
471
+ hasHiddenSelectedFitChips() {
472
+ if (this.selectionDisplay !== "fit" || !this.isMulti()) {
473
+ return false;
474
+ }
475
+ const hiddenCountChip = this.selectedChipCountRef.value;
476
+ return !!hiddenCountChip && !hiddenCountChip.classList.contains(CSS.chipInvisible);
477
+ }
424
478
  keyDownHandler(event) {
425
479
  if (this.readOnly) {
426
480
  return;
@@ -443,7 +497,7 @@ class Combobox extends LitElement {
443
497
  }
444
498
  break;
445
499
  case "ArrowLeft":
446
- if (this.activeChipIndex !== -1 || this.textInputRef.value.selectionStart === 0) {
500
+ if (this.activeChipIndex !== -1 || this.textInputRef.value?.selectionStart === 0) {
447
501
  this.previousChip();
448
502
  event.preventDefault();
449
503
  }
@@ -483,7 +537,7 @@ class Combobox extends LitElement {
483
537
  }
484
538
  break;
485
539
  case " ":
486
- if (!this.textInputRef.value.value && !event.defaultPrevented) {
540
+ if (!this.textInputRef.value?.value && !event.defaultPrevented) {
487
541
  if (!this.open && this.keyboardNavItems.length) {
488
542
  this.open = true;
489
543
  this.ensureRecentSelectedItemIsActive();
@@ -520,7 +574,7 @@ class Combobox extends LitElement {
520
574
  break;
521
575
  }
522
576
  if (!this.clearDisabled) {
523
- if (this.textInputRef.value?.value.length > 0) {
577
+ if (this.textInputRef.value.value.length > 0) {
524
578
  this.resetText();
525
579
  event.preventDefault();
526
580
  } else if (this.selectedItems.length > 0 && this.selectionMode !== "single-persist") {
@@ -547,13 +601,16 @@ class Combobox extends LitElement {
547
601
  break;
548
602
  case "Delete":
549
603
  case "Backspace": {
550
- const notDeletable = this.selectionDisplay === "single" || this.selectionDisplay === "fit" && this.selectedHiddenChipsCount > 0;
604
+ const fitDeleteBlockedByOverflow = this.hasHiddenSelectedFitChips();
605
+ const overflowDeleteBlocked = fitDeleteBlockedByOverflow && this.activeChipIndex === -1;
606
+ const notDeletable = this.selectionDisplay === "single" || overflowDeleteBlocked;
551
607
  if (notDeletable) {
552
608
  return;
553
609
  }
554
- if (this.activeChipIndex > -1) {
610
+ const deleteTargetChip = event.composedPath().find((node) => isChip(node));
611
+ if (this.activeChipIndex > -1 && deleteTargetChip) {
555
612
  event.preventDefault();
556
- this.removeActiveChip(event.target);
613
+ this.removeActiveChip(deleteTargetChip);
557
614
  } else if (!this.filterText && this.isMulti()) {
558
615
  event.preventDefault();
559
616
  this.removeLastChip();
@@ -581,7 +638,7 @@ class Combobox extends LitElement {
581
638
  }
582
639
  async setMaxScrollerHeight() {
583
640
  const { listContainerEl, open, referenceEl } = this;
584
- if (!listContainerEl || !open) {
641
+ if (!listContainerEl || !open || !referenceEl) {
585
642
  return;
586
643
  }
587
644
  const maxScrollerHeight = this.getMaxScrollerHeight();
@@ -601,12 +658,13 @@ class Combobox extends LitElement {
601
658
  return;
602
659
  }
603
660
  const composedPath = event.composedPath();
604
- if (composedPath.some((node) => node.tagName === "CALCITE-CHIP")) {
661
+ if (composedPath.some((node) => isChip(node))) {
605
662
  this.open = false;
606
663
  event.preventDefault();
607
664
  return;
608
665
  }
609
- if (composedPath.includes(this.clearButtonRef.value)) {
666
+ const clearButton = this.clearButtonRef.value;
667
+ if (clearButton && composedPath.includes(clearButton)) {
610
668
  this.clearValue();
611
669
  event.preventDefault();
612
670
  return;
@@ -630,35 +688,63 @@ class Combobox extends LitElement {
630
688
  showChip(chipEl) {
631
689
  chipEl.classList.remove(CSS.chipInvisible);
632
690
  }
633
- refreshChipDisplay({ chipEls, availableHorizontalChipElSpace, chipContainerElGap }) {
691
+ refreshChipDisplay({ chipEls, availableHorizontalChipElSpace, chipContainerElGap, hideSelectedChips }) {
692
+ const selectedChipEls = chipEls.filter((chipEl) => chipEl.selected);
693
+ const enabledSelectedChipEls = selectedChipEls.filter((chipEl) => !chipEl.disabled);
694
+ const disabledSelectedChipEls = selectedChipEls.filter((chipEl) => chipEl.disabled);
695
+ const getChipWidth = (chipEl) => {
696
+ const computedWidth = getElementWidth(chipEl);
697
+ const fallbackWidth = chipEl.getBoundingClientRect().width;
698
+ return Number.isFinite(computedWidth) && computedWidth > 0 ? computedWidth : fallbackWidth;
699
+ };
700
+ selectedChipEls.forEach((chipEl) => getChipWidth(chipEl));
634
701
  chipEls.forEach((chipEl) => {
635
- if (!chipEl.selected) {
636
- this.hideChip(chipEl);
637
- } else {
638
- const chipElWidth = getElementWidth(chipEl);
639
- if (chipElWidth && chipElWidth < availableHorizontalChipElSpace) {
702
+ this.hideChip(chipEl);
703
+ });
704
+ if (hideSelectedChips) {
705
+ return;
706
+ }
707
+ const renderFittingChips = (chips) => {
708
+ let visibleChipsCount = 0;
709
+ chips.forEach((chipEl) => {
710
+ const chipElWidth = getChipWidth(chipEl);
711
+ if (chipElWidth && chipElWidth <= availableHorizontalChipElSpace) {
640
712
  availableHorizontalChipElSpace -= chipElWidth + chipContainerElGap;
641
713
  this.showChip(chipEl);
642
- return;
714
+ visibleChipsCount++;
643
715
  }
644
- }
645
- this.hideChip(chipEl);
646
- });
716
+ });
717
+ return visibleChipsCount;
718
+ };
719
+ const visibleEnabledChipsCount = renderFittingChips(enabledSelectedChipEls);
720
+ if (visibleEnabledChipsCount <= 1) {
721
+ renderFittingChips(disabledSelectedChipEls);
722
+ }
647
723
  }
648
- async refreshSelectionDisplay() {
649
- this.componentOnReady();
650
- if (isSingleLike(this.selectionMode)) {
724
+ async refreshSelectionDisplay(followUpRefresh = true) {
725
+ if (this.refreshingSelectionDisplay) {
651
726
  return;
652
727
  }
653
- if (!this.textInputRef.value || !this.chipContainerEl) {
728
+ this.refreshingSelectionDisplay = true;
729
+ await this.componentOnReady();
730
+ if (isSingleLike(this.selectionMode)) {
731
+ this.refreshingSelectionDisplay = false;
654
732
  return;
655
733
  }
656
734
  const { allSelectedIndicatorChipRef, chipContainerEl, selectionDisplay, placeholder, selectedIndicatorChipRef, textInputRef } = this;
657
- const chipContainerElGap = parseInt(getComputedStyle(chipContainerEl).gap.replace("px", ""));
735
+ if (!textInputRef.value || !chipContainerEl) {
736
+ this.refreshingSelectionDisplay = false;
737
+ return;
738
+ }
739
+ const chipContainerElGap = parseInt(getComputedStyle(chipContainerEl).gap, 10);
658
740
  const chipContainerElWidth = getElementWidth(chipContainerEl);
659
- const { fontSize, fontFamily } = getComputedStyle(textInputRef.value);
660
- const inputTextWidth = getTextWidth(placeholder, `${fontSize} ${fontFamily}`);
661
- const inputWidth = (inputTextWidth || parseInt(calciteSize48)) + chipContainerElGap;
741
+ const { fontSize, fontFamily, minInlineSize } = getComputedStyle(textInputRef.value);
742
+ const placeholderWidthMultiplier = 0.55;
743
+ const inputMinWidth = parseFloat(minInlineSize) || parseInt(calciteSize48, 10);
744
+ const measuredPlaceholderWidth = getTextWidth(placeholder, `${fontSize} ${fontFamily}`);
745
+ const placeholderWidth = measuredPlaceholderWidth > 0 ? measuredPlaceholderWidth : Math.max(inputMinWidth, Math.round((placeholder?.length || 0) * (parseFloat(fontSize) || parseInt(calciteSize48, 10)) * placeholderWidthMultiplier));
746
+ const fitInputWidth = Math.max(inputMinWidth, placeholderWidth);
747
+ const inputWidth = (selectionDisplay === "fit" ? fitInputWidth : placeholderWidth) + chipContainerElGap;
662
748
  const allSelectedIndicatorChipElWidth = getElementWidth(allSelectedIndicatorChipRef.value);
663
749
  const selectedIndicatorChipElWidth = getElementWidth(selectedIndicatorChipRef.value);
664
750
  const largestSelectedIndicatorChipWidth = Math.max(allSelectedIndicatorChipElWidth, selectedIndicatorChipElWidth);
@@ -668,9 +754,9 @@ class Combobox extends LitElement {
668
754
  inputWidth,
669
755
  largestSelectedIndicatorChipWidth
670
756
  });
671
- if (this.allSelected && this.selectAllEnabled && (!this.hasDisabledItems || this.hasDisabledSelected)) {
757
+ if (selectionDisplay !== "fit" && this.allSelected && this.selectAllEnabled) {
672
758
  this.selectedItems.forEach((item) => {
673
- const chipEl = this.referenceEl.querySelector(`#${IDS.chip(item.guid)}`);
759
+ const chipEl = this.referenceEl?.querySelector(`#${IDS.chip(item.guid)}`);
674
760
  if (chipEl) {
675
761
  this.hideChip(chipEl);
676
762
  }
@@ -678,23 +764,71 @@ class Combobox extends LitElement {
678
764
  }
679
765
  if (this.indeterminate) {
680
766
  this.selectedItems.forEach((item) => {
681
- const chipEl = this.referenceEl.querySelector(`#${IDS.chip(item.guid)}`);
767
+ const chipEl = this.referenceEl?.querySelector(`#${IDS.chip(item.guid)}`);
682
768
  if (chipEl) {
683
769
  this.showChip(chipEl);
684
770
  }
685
771
  });
686
772
  }
687
773
  if (selectionDisplay === "fit") {
688
- const chipEls = Array.from(this.el.shadowRoot.querySelectorAll("calcite-chip")).filter((chipEl) => chipEl.closable);
689
- const availableHorizontalChipElSpace = Math.round(chipContainerElWidth - ((this.selectedHiddenChipsCount > 0 ? selectedIndicatorChipElWidth : 0) + chipContainerElGap + inputWidth + chipContainerElGap));
690
- this.refreshChipDisplay({ availableHorizontalChipElSpace, chipContainerElGap, chipEls });
691
- this.setVisibleAndHiddenChips(chipEls);
774
+ const chipEls = Array.from(this.renderRoot.querySelectorAll("calcite-chip")).filter((chipEl) => {
775
+ const chipValue = chipEl.value;
776
+ const hasValue = chipValue != null && `${chipValue}` !== "";
777
+ return chipEl.disabled || hasValue;
778
+ });
779
+ const { hiddenChipIndicatorWidth, hideSelectedChips, reservedPlaceholderInputWidth } = this.getFitCompactDisplayState({
780
+ chipContainerElGap,
781
+ chipContainerElWidth,
782
+ inputMinWidth,
783
+ placeholderWidth,
784
+ selectedIndicatorChipElWidth
785
+ });
786
+ this.fitUsingCompactCountLabel = hideSelectedChips;
787
+ const availableHorizontalChipElSpace = Math.round(chipContainerElWidth - (hiddenChipIndicatorWidth + chipContainerElGap + reservedPlaceholderInputWidth + chipContainerElGap));
788
+ this.refreshChipDisplay({
789
+ availableHorizontalChipElSpace,
790
+ chipContainerElGap,
791
+ chipEls,
792
+ hideSelectedChips
793
+ });
794
+ const previousHiddenChipsCount = this.selectedHiddenChipsCount;
795
+ this.syncChipVisibilityCounts(chipEls);
796
+ const didHiddenCountChange = previousHiddenChipsCount !== this.selectedHiddenChipsCount;
797
+ if (didHiddenCountChange && followUpRefresh) {
798
+ this.fitFollowUpRefreshPromise = this.updateComplete.then(() => this.refreshSelectionDisplay(false)).then(() => {
799
+ this.fitFollowUpRefreshPromise = void 0;
800
+ });
801
+ }
692
802
  }
803
+ this.refreshingSelectionDisplay = false;
693
804
  }
694
805
  setFloatingEl(el) {
695
806
  this.floatingEl = el;
696
807
  connectFloatingUI(this);
697
808
  }
809
+ shouldUseFitCompactDisplay({ chipContainerElGap, chipContainerElWidth, hiddenChipIndicatorWidth, inputMinWidth, placeholderWidth, reservedPlaceholderInputWidth }) {
810
+ const availableHorizontalChipElSpaceWithPlaceholder = Math.round(chipContainerElWidth - (hiddenChipIndicatorWidth + chipContainerElGap + reservedPlaceholderInputWidth + chipContainerElGap));
811
+ const placeholderIsReallyLong = placeholderWidth > inputMinWidth * 2;
812
+ return placeholderIsReallyLong && availableHorizontalChipElSpaceWithPlaceholder <= 0;
813
+ }
814
+ getFitCompactDisplayState({ chipContainerElGap, chipContainerElWidth, inputMinWidth, placeholderWidth, selectedIndicatorChipElWidth }) {
815
+ const selectedChipCountElWidth = getElementWidth(this.selectedChipCountRef.value);
816
+ const hiddenChipIndicatorWidth = this.deferFitChipCountRender || this.selectedHiddenChipsCount <= 0 ? 0 : selectedChipCountElWidth || selectedIndicatorChipElWidth;
817
+ const reservedPlaceholderInputWidth = Math.max(inputMinWidth, placeholderWidth);
818
+ const hideSelectedChips = this.shouldUseFitCompactDisplay({
819
+ chipContainerElGap,
820
+ chipContainerElWidth,
821
+ hiddenChipIndicatorWidth,
822
+ inputMinWidth,
823
+ placeholderWidth,
824
+ reservedPlaceholderInputWidth
825
+ });
826
+ return {
827
+ hiddenChipIndicatorWidth,
828
+ hideSelectedChips,
829
+ reservedPlaceholderInputWidth
830
+ };
831
+ }
698
832
  setCompactSelectionDisplay({ chipContainerElGap, chipContainerElWidth, inputWidth, largestSelectedIndicatorChipWidth }) {
699
833
  const newCompactBreakpoint = Math.round(largestSelectedIndicatorChipWidth + chipContainerElGap + inputWidth);
700
834
  if (!this.maxCompactBreakpoint || this.maxCompactBreakpoint < newCompactBreakpoint) {
@@ -715,17 +849,21 @@ class Combobox extends LitElement {
715
849
  this.referenceEl = el;
716
850
  connectFloatingUI(this);
717
851
  }
718
- setVisibleAndHiddenChips(chipEls) {
852
+ syncChipVisibilityCounts(chipEls) {
719
853
  let newSelectedVisibleChipsCount = 0;
854
+ let selectedChipCount = 0;
720
855
  chipEls.forEach((chipEl) => {
721
- if (chipEl.selected && !chipEl.classList.contains(CSS.chipInvisible)) {
722
- newSelectedVisibleChipsCount++;
856
+ if (chipEl.selected) {
857
+ selectedChipCount++;
858
+ if (!chipEl.classList.contains(CSS.chipInvisible)) {
859
+ newSelectedVisibleChipsCount++;
860
+ }
723
861
  }
724
862
  });
725
863
  if (newSelectedVisibleChipsCount !== this.selectedVisibleChipsCount) {
726
864
  this.selectedVisibleChipsCount = newSelectedVisibleChipsCount;
727
865
  }
728
- const newSelectedHiddenChipsCount = Math.max(0, this.getSelectedItems().length - newSelectedVisibleChipsCount);
866
+ const newSelectedHiddenChipsCount = Math.max(0, selectedChipCount - newSelectedVisibleChipsCount);
729
867
  if (newSelectedHiddenChipsCount !== this.selectedHiddenChipsCount) {
730
868
  this.selectedHiddenChipsCount = newSelectedHiddenChipsCount;
731
869
  }
@@ -770,6 +908,9 @@ class Combobox extends LitElement {
770
908
  if (!item || this.selectionMode === "single-persist" && item.selected && item.value === this.value && !value) {
771
909
  return;
772
910
  }
911
+ if (this.selectionDisplay === "fit" && this.isMulti()) {
912
+ this.deferFitChipCountRender = true;
913
+ }
773
914
  if (this.isMulti()) {
774
915
  this.handleMultiSelection(item, value);
775
916
  } else {
@@ -779,7 +920,7 @@ class Combobox extends LitElement {
779
920
  handleMultiSelection(item, value) {
780
921
  item.selected = value;
781
922
  this.updateAncestors(item);
782
- this.selectedItems = this.getSelectedItems();
923
+ this.updateSelectedItems();
783
924
  this.emitComboboxChange();
784
925
  this.resetText();
785
926
  this.filterItems("");
@@ -788,7 +929,7 @@ class Combobox extends LitElement {
788
929
  this.ignoreSelectedEventsFlag = true;
789
930
  this.items.forEach((el) => el.selected = el === item ? value : false);
790
931
  this.ignoreSelectedEventsFlag = false;
791
- this.selectedItems = this.getSelectedItems();
932
+ this.updateSelectedItems();
792
933
  this.emitComboboxChange();
793
934
  if (this.textInputRef.value) {
794
935
  this.textInputRef.value.value = getLabel(item);
@@ -805,11 +946,14 @@ class Combobox extends LitElement {
805
946
  const ancestors = getItemAncestors(item);
806
947
  const children = getItemChildren(item);
807
948
  if (item.selected) {
808
- ancestors.forEach((el) => {
949
+ [...children, ...ancestors].forEach((el) => {
950
+ if (el.disabled) {
951
+ return;
952
+ }
809
953
  el.selected = true;
810
954
  });
811
955
  } else {
812
- children.forEach((el) => {
956
+ [...children].forEach((el) => {
813
957
  if (el.disabled) {
814
958
  return;
815
959
  }
@@ -829,7 +973,8 @@ class Combobox extends LitElement {
829
973
  this.data = this.getData();
830
974
  this.groupData = this.getGroupData();
831
975
  this.updateItemProps();
832
- this.selectedItems = this.getSelectedItems();
976
+ this.updateSelectedItems();
977
+ this.previousAllSelected = this.allSelected;
833
978
  }
834
979
  updateItemProps() {
835
980
  this.allItems.forEach((item) => {
@@ -903,13 +1048,17 @@ class Combobox extends LitElement {
903
1048
  }
904
1049
  removeActiveChip(chip) {
905
1050
  const activeItem = this.selectedItems[this.activeChipIndex];
906
- if (activeItem && `${IDS.chip(activeItem.guid)}` === chip.id) {
1051
+ if (activeItem && !activeItem.disabled && `${IDS.chip(activeItem.guid)}` === chip.id) {
907
1052
  this.toggleSelection(activeItem, false);
908
1053
  }
909
1054
  this.setFocus();
910
1055
  }
911
1056
  removeLastChip() {
912
- this.toggleSelection(this.selectedItems[this.selectedItems.length - 1], false);
1057
+ const lastEnabledSelectedItem = this.selectedItems.findLast((item) => !item.disabled);
1058
+ if (!lastEnabledSelectedItem) {
1059
+ return;
1060
+ }
1061
+ this.toggleSelection(lastEnabledSelectedItem, false);
913
1062
  this.setFocus();
914
1063
  }
915
1064
  previousChip() {
@@ -933,7 +1082,7 @@ class Combobox extends LitElement {
933
1082
  }
934
1083
  focusChip() {
935
1084
  const guid2 = this.selectedItems[this.activeChipIndex]?.guid;
936
- const chip = guid2 ? this.referenceEl.querySelector(`#${IDS.chip(guid2)}`) : null;
1085
+ const chip = guid2 ? this.referenceEl?.querySelector(`#${IDS.chip(guid2)}`) : void 0;
937
1086
  chip?.setFocus();
938
1087
  }
939
1088
  scrollToActiveOrSelectedItem(scrollToSelected = false) {
@@ -959,7 +1108,7 @@ class Combobox extends LitElement {
959
1108
  }
960
1109
  updateActiveItemIndex(index) {
961
1110
  this.activeItemIndex = index;
962
- let activeDescendant = null;
1111
+ let activeDescendant = "";
963
1112
  this.keyboardNavItems.forEach((el, i) => {
964
1113
  if (i === index) {
965
1114
  el.active = true;
@@ -980,7 +1129,11 @@ class Combobox extends LitElement {
980
1129
  if (this.disabled) {
981
1130
  return;
982
1131
  }
983
- this.textInputRef.value.focus();
1132
+ this.activeChipIndex = -1;
1133
+ this.textInputRef.value?.focus();
1134
+ if (this.open && this.selectionDisplay === "fit" && this.isMulti()) {
1135
+ void this.refreshSelectionDisplay();
1136
+ }
984
1137
  }
985
1138
  createScreenReaderItem({ ariaLabel, ariaSelected, id, textContent }) {
986
1139
  return html`<li aria-label=${ariaLabel ?? nothing} aria-selected=${ariaSelected ?? nothing} id=${id ?? nothing} role=option tabindex=-1>${textContent}</li>`;
@@ -992,7 +1145,7 @@ class Combobox extends LitElement {
992
1145
  }
993
1146
  getDescriptionMessage() {
994
1147
  const value = Array.isArray(this.value) ? this.value.join(", ") : this.value;
995
- return this.readOnly ? this.messages.nonEditable?.replace("{value}", `${value}`) : value;
1148
+ return this.readOnly ? this.messages.nonEditable?.replace("{value}", `${value}`) ?? `${value}` : value;
996
1149
  }
997
1150
  getChipLabel(item, isAncestors) {
998
1151
  if (!isAncestors) {
@@ -1006,64 +1159,58 @@ class Combobox extends LitElement {
1006
1159
  return keyed(item.guid || item.value || label, html`<calcite-chip .appearance=${readOnly ? "outline" : "solid"} class=${safeClassMap({
1007
1160
  [CSS.chip]: true,
1008
1161
  [CSS.disabled]: disabled
1009
- })} .closable=${!disabled && !readOnly} .disabled=${disabled} .icon=${item.icon} .iconFlipRtl=${item.iconFlipRtl} id=${(!disabled && item.guid ? `${IDS.chip(item.guid)}` : null) ?? nothing} .label=${label} .messageOverrides=${!disabled ? { dismissLabel: messages.removeTag } : null} @calciteChipClose=${!disabled ? () => this.calciteChipCloseHandler(item) : null} @focusin=${!disabled ? () => this.activeChipIndex = index : null} .scale=${scale} .selected=${item.selected} .tabIndex=${!disabled && activeChipIndex === index ? 0 : -1} title=${label ?? nothing} .value=${item.value}>${label}</calcite-chip>`);
1162
+ })} .closable=${!disabled && !readOnly} data-testid=${`${disabled ? "disabled-chip" : "chip"}-${index}`} .disabled=${disabled} .icon=${item.icon} .iconFlipRtl=${item.iconFlipRtl} id=${(!disabled && item.guid ? `${IDS.chip(item.guid)}` : void 0) ?? nothing} .label=${label} .messageOverrides=${!disabled ? { dismissLabel: messages.removeTag } : void 0} @calciteChipClose=${!disabled ? () => this.calciteChipCloseHandler(item) : void 0} @focusin=${!disabled ? () => this.activeChipIndex = index : void 0} .scale=${scale} .selected=${item.selected} .tabIndex=${!disabled && activeChipIndex === index ? 0 : -1} title=${label ?? nothing} .value=${item.value}>${label}</calcite-chip>`);
1010
1163
  }
1011
1164
  renderChipCount(count, scale) {
1012
- const label = this.messages.disabledSelectedCount?.replace("{count}", `${count}`) ?? `+${count}`;
1165
+ const label = this.fitUsingCompactCountLabel ? `${count}` : this.messages.disabledSelectedCount?.replace("{count}", `${count}`) ?? `+${count}`;
1013
1166
  return html`<calcite-chip appearance=solid class=${safeClassMap({
1014
1167
  [CSS.chip]: true
1015
- })} .label=${label} .scale=${scale} tabindex=-1 title=${label ?? nothing}>${label}</calcite-chip>`;
1168
+ })} data-testid=selected-chip-count id=selected-chip-count .label=${label} .scale=${scale} tabindex=-1 title=${label ?? nothing} ${ref(this.selectedChipCountRef)}>${label}</calcite-chip>`;
1016
1169
  }
1017
1170
  renderChips() {
1018
1171
  const { activeChipIndex, readOnly, scale, selectionDisplay, selectionMode, messages } = this;
1019
1172
  const chips = [];
1020
1173
  const isAncestors = selectionMode === "ancestors";
1021
- const allSelectedNoDisabled = this.allSelected && !this.hasDisabledItems;
1022
- const allSelectedWithDisabledSelected = this.allSelected && this.hasDisabledSelected;
1023
- const disabledItems = this.allItems.filter((item) => item.disabled && item.selected && (!isAncestors || !hasActiveChildren(item)));
1174
+ const hideSelectedChipsForSelectAll = this.selectAllEnabled && this.allSelected;
1024
1175
  const preserveOrder = selectionDisplay === "all";
1025
- if (selectionDisplay === "fit" && (allSelectedNoDisabled || allSelectedWithDisabledSelected) || selectionDisplay === "all" && this.selectAllEnabled && allSelectedWithDisabledSelected || this.selectAllEnabled && this.allSelected && !this.hasDisabledItems) {
1176
+ if (hideSelectedChipsForSelectAll) {
1026
1177
  return null;
1027
1178
  }
1028
1179
  let selectedIndex = 0;
1029
1180
  let disabledIndex = 0;
1030
1181
  if (preserveOrder) {
1031
- this.allItems.forEach((item) => {
1182
+ const selectedChipItems = this.allItems.filter((item) => item.selected && (!isAncestors || !hasActiveChildren(item)));
1183
+ const orderedSelectedChipItems = orderByPrevious(selectedChipItems, this.selectedItems);
1184
+ orderedSelectedChipItems.forEach((item) => {
1032
1185
  if (item.disabled) {
1033
- if (item.selected && (!isAncestors || !hasActiveChildren(item))) {
1034
- chips.push(this.renderChip({
1035
- activeChipIndex,
1036
- disabled: true,
1037
- index: disabledIndex++,
1038
- item,
1039
- messages,
1040
- readOnly,
1041
- scale,
1042
- isAncestors
1043
- }));
1044
- }
1186
+ chips.push(this.renderChip({
1187
+ activeChipIndex,
1188
+ disabled: true,
1189
+ index: disabledIndex++,
1190
+ item,
1191
+ messages,
1192
+ readOnly,
1193
+ scale,
1194
+ isAncestors
1195
+ }));
1045
1196
  return;
1046
1197
  }
1047
- if (!this.selectAllEnabled || !this.allSelected || this.hasDisabledItems) {
1048
- if (item.selected && (!isAncestors || !hasActiveChildren(item))) {
1049
- chips.push(this.renderChip({
1050
- activeChipIndex,
1051
- disabled: false,
1052
- index: selectedIndex++,
1053
- item,
1054
- messages,
1055
- readOnly,
1056
- scale,
1057
- isAncestors
1058
- }));
1059
- }
1060
- }
1198
+ chips.push(this.renderChip({
1199
+ activeChipIndex,
1200
+ disabled: false,
1201
+ index: selectedIndex++,
1202
+ item,
1203
+ messages,
1204
+ readOnly,
1205
+ scale,
1206
+ isAncestors
1207
+ }));
1061
1208
  });
1062
- } else if (!this.selectAllEnabled || !this.allSelected || this.hasDisabledItems) {
1209
+ } else if (!hideSelectedChipsForSelectAll) {
1063
1210
  this.selectedItems.forEach((item) => {
1064
1211
  chips.push(this.renderChip({
1065
1212
  activeChipIndex,
1066
- disabled: false,
1213
+ disabled: item.disabled,
1067
1214
  index: selectedIndex++,
1068
1215
  item,
1069
1216
  messages,
@@ -1073,32 +1220,53 @@ class Combobox extends LitElement {
1073
1220
  }));
1074
1221
  });
1075
1222
  }
1076
- if (selectionDisplay === "fit" && disabledItems.length) {
1077
- chips.push(this.renderChipCount(disabledItems.length, scale));
1223
+ if (selectionDisplay === "fit") {
1224
+ const hiddenSelectedCount = this.selectedHiddenChipsCount;
1225
+ const countChipValue = this.selectedVisibleChipsCount === 0 ? this.selectedItems.length : hiddenSelectedCount;
1226
+ if (hiddenSelectedCount > 0 && !this.deferFitChipCountRender) {
1227
+ chips.push(this.renderChipCount(countChipValue, scale));
1228
+ }
1078
1229
  }
1079
1230
  return chips.length ? chips : null;
1080
1231
  }
1081
1232
  renderAllSelectedIndicatorChip() {
1082
1233
  const { allSelectedIndicatorChipRef, compactSelectionDisplay, scale, selectedVisibleChipsCount } = this;
1083
- const label = compactSelectionDisplay ? this.messages.all : this.messages.allSelected;
1084
- const showAllSelectedChip = this.allSelected && (this.selectionDisplay === "single" || !selectedVisibleChipsCount || this.selectionDisplay === "fit" && this.hasDisabledSelected || this.selectionDisplay === "all" && this.hasDisabledSelected);
1234
+ let useFitCompactLabel = false;
1235
+ if (this.selectionDisplay === "fit" && this.textInputRef.value && this.chipContainerEl) {
1236
+ const chipContainerElGap = parseInt(getComputedStyle(this.chipContainerEl).gap, 10);
1237
+ const chipContainerElWidth = getElementWidth(this.chipContainerEl);
1238
+ const { fontSize, fontFamily, minInlineSize } = getComputedStyle(this.textInputRef.value);
1239
+ const placeholderWidthMultiplier = 0.55;
1240
+ const inputMinWidth = parseFloat(minInlineSize) || parseInt(calciteSize48, 10);
1241
+ const measuredPlaceholderWidth = getTextWidth(this.placeholder, `${fontSize} ${fontFamily}`);
1242
+ const placeholderWidth = measuredPlaceholderWidth > 0 ? measuredPlaceholderWidth : Math.max(inputMinWidth, Math.round((this.placeholder?.length || 0) * (parseFloat(fontSize) || parseInt(calciteSize48, 10)) * placeholderWidthMultiplier));
1243
+ const selectedIndicatorChipElWidth = getElementWidth(this.selectedIndicatorChipRef.value);
1244
+ useFitCompactLabel = this.getFitCompactDisplayState({
1245
+ chipContainerElGap,
1246
+ chipContainerElWidth,
1247
+ inputMinWidth,
1248
+ placeholderWidth,
1249
+ selectedIndicatorChipElWidth
1250
+ }).hideSelectedChips;
1251
+ }
1252
+ const useCompactAllLabel = compactSelectionDisplay || useFitCompactLabel;
1253
+ const label = useCompactAllLabel ? this.messages.all : this.messages.allSelected;
1254
+ const showAllSelectedChip = this.allSelected && (this.selectionDisplay === "single" || !selectedVisibleChipsCount || this.selectionDisplay === "all");
1085
1255
  return html`<calcite-chip class=${safeClassMap({
1086
1256
  [CSS.chip]: true,
1087
1257
  [CSS.chipInvisible]: !showAllSelectedChip,
1088
1258
  [CSS.allSelected]: true
1089
- })} .label=${label} .scale=${scale} title=${label ?? nothing} value ${ref(allSelectedIndicatorChipRef)}>${label}</calcite-chip>`;
1259
+ })} data-testid=all-selected-indicator-chip .label=${label} .scale=${scale} title=${label ?? nothing} value ${ref(allSelectedIndicatorChipRef)}>${label}</calcite-chip>`;
1090
1260
  }
1091
1261
  renderSelectedIndicatorChip() {
1092
- const { compactSelectionDisplay, selectionDisplay, scale, selectedHiddenChipsCount, selectedVisibleChipsCount, selectedIndicatorChipRef } = this;
1093
- const allSelectedNoDisabled = this.allSelected && !this.hasDisabledItems;
1094
- const allSelectedWithDisabledSelected = this.allSelected && this.hasDisabledSelected;
1095
- let chipInvisible;
1262
+ const { compactSelectionDisplay, selectionDisplay, scale, selectedIndicatorChipRef } = this;
1263
+ let chipInvisible = false;
1096
1264
  let label;
1265
+ const selectedItemsCount = this.getSelectedItems().length;
1097
1266
  if (compactSelectionDisplay) {
1098
1267
  chipInvisible = true;
1099
1268
  } else {
1100
1269
  if (selectionDisplay === "single") {
1101
- const selectedItemsCount = this.allItems.filter((item) => item.selected && (this.selectionMode !== "ancestors" || !hasActiveChildren(item))).length;
1102
1270
  if (this.allSelected) {
1103
1271
  chipInvisible = true;
1104
1272
  } else if (selectedItemsCount > 0) {
@@ -1107,9 +1275,6 @@ class Combobox extends LitElement {
1107
1275
  chipInvisible = true;
1108
1276
  }
1109
1277
  label = `${selectedItemsCount} ${this.messages.selected}`;
1110
- } else if (selectionDisplay === "fit") {
1111
- chipInvisible = !!((allSelectedNoDisabled || allSelectedWithDisabledSelected) && selectedVisibleChipsCount === 0 || selectedHiddenChipsCount === 0);
1112
- label = selectedVisibleChipsCount > 0 ? `+${selectedHiddenChipsCount}` : `${selectedHiddenChipsCount} ${this.messages.selected}`;
1113
1278
  }
1114
1279
  }
1115
1280
  return html`<calcite-chip class=${safeClassMap({
@@ -1118,18 +1283,13 @@ class Combobox extends LitElement {
1118
1283
  })} .label=${label} .scale=${scale} title=${label ?? nothing} value ${ref(selectedIndicatorChipRef)}>${label}</calcite-chip>`;
1119
1284
  }
1120
1285
  renderSelectedIndicatorChipCompact() {
1121
- const { compactSelectionDisplay, selectionDisplay, scale, selectedHiddenChipsCount } = this;
1122
- const allSelectedNoDisabled = this.allSelected && !this.hasDisabledItems;
1123
- const allSelectedWithDisabledSelected = this.allSelected && this.hasDisabledSelected;
1124
- let chipInvisible;
1286
+ const { compactSelectionDisplay, selectionDisplay, scale } = this;
1287
+ let chipInvisible = false;
1125
1288
  let label;
1289
+ const selectedItemsCount = this.getSelectedItems().length;
1126
1290
  if (compactSelectionDisplay) {
1127
- const selectedItemsCount = this.allItems.filter((item) => item.selected && (this.selectionMode !== "ancestors" || !hasActiveChildren(item))).length;
1128
- if (allSelectedNoDisabled || allSelectedWithDisabledSelected || selectionDisplay === "single" && this.allSelected) {
1291
+ if (this.allSelected) {
1129
1292
  chipInvisible = true;
1130
- } else if (selectionDisplay === "fit") {
1131
- chipInvisible = !(selectedHiddenChipsCount > 0);
1132
- label = `${selectedHiddenChipsCount || 0}`;
1133
1293
  } else if (selectionDisplay === "single") {
1134
1294
  chipInvisible = !(selectedItemsCount > 0);
1135
1295
  label = `${selectedItemsCount}`;
@@ -1158,7 +1318,7 @@ class Combobox extends LitElement {
1158
1318
  [CSS.inputSingle]: true,
1159
1319
  [CSS.inputHidden]: showLabel,
1160
1320
  [CSS.inputIcon]: this.showingInlineIcon && !!this.placeholderIcon
1161
- })} .disabled=${disabled} .id=${`${IDS.input(guid2)}`} @focus=${this.comboboxFocusHandler} @input=${this.inputHandler} placeholder=${placeholder ?? nothing} .readOnly=${this.readOnly} .required=${this.required} role=combobox .tabIndex=${this.activeChipIndex === -1 ? 0 : -1} type=text .value=${live(this.filterText ?? "")} ${ref(this.textInputRef)}>`)}</span>`;
1321
+ })} data-testid=input .disabled=${disabled} .id=${`${IDS.input(guid2)}`} @focus=${this.comboboxFocusHandler} @input=${this.inputHandler} placeholder=${placeholder ?? nothing} .readOnly=${this.readOnly} .required=${this.required} role=combobox .tabIndex=${this.activeChipIndex === -1 ? 0 : -1} type=text .value=${live(this.filterText ?? "")} ${ref(this.textInputRef)}>`)}</span>`;
1162
1322
  }
1163
1323
  renderListBoxOptions() {
1164
1324
  const mappedListBoxOptions = this.keyboardNavItems.map((item) => this.createScreenReaderItem({
@@ -1187,7 +1347,7 @@ class Combobox extends LitElement {
1187
1347
  [FloatingCSS.animationActive]: open
1188
1348
  };
1189
1349
  const label = (this.filterText && messages.add?.replace("{text}", `${this.filterText}`)) ?? "";
1190
- return html`<div aria-hidden=true class=${safeClassMap(CSS.floatingUIContainer)} popover=manual ${ref(setFloatingEl)}><div class=${safeClassMap(classes)} ${ref(setContainerEl)}><ul class=${safeClassMap({ [CSS.list]: true, [CSS.listHide]: !open })}>${this.selectAllEnabled && this.selectionMode !== "single" && this.selectionMode !== "single-persist" && html`<calcite-combobox-item class=${safeClassMap(CSS.selectAll)} .heading=${messages.selectAll} .id=${`${this.guid}-select-all-enabled-interactive`} .indeterminate=${this.indeterminate} .label=${messages.selectAll} .scale=${scale} .selected=${this.allSelected} tabindex=-1 value=select-all ${ref(this.selectAllComboboxItemRef)}></calcite-combobox-item>` || ""}<slot></slot>${this.noMatchesFound && (this.allowCustomValues ? html`<li aria-label=${label ?? nothing} class=${safeClassMap(CSS.noMatches)} @click=${this.customChipAddHandler} role=option tabindex=0>${highlightText({
1350
+ return html`<div aria-hidden=true class=${safeClassMap(CSS.floatingUIContainer)} popover=manual ${ref(setFloatingEl)}><div class=${safeClassMap(classes)} ${ref(setContainerEl)}><ul class=${safeClassMap({ [CSS.list]: true, [CSS.listHide]: !open })}>${this.selectAllEnabled && this.selectionMode !== "single" && this.selectionMode !== "single-persist" && html`<calcite-combobox-item class=${safeClassMap(CSS.selectAll)} data-testid=select-all-item .heading=${messages.selectAll} .id=${`${this.guid}-select-all-enabled-interactive`} .indeterminate=${this.indeterminate} .label=${messages.selectAll} .scale=${scale} .selected=${this.allSelected} tabindex=-1 value=select-all ${ref(this.selectAllComboboxItemRef)}></calcite-combobox-item>` || ""}<slot></slot>${this.noMatchesFound && (this.allowCustomValues ? html`<li aria-label=${label ?? nothing} class=${safeClassMap(CSS.noMatches)} @click=${this.customChipAddHandler} role=option tabindex=0>${highlightText({
1191
1351
  text: label,
1192
1352
  pattern: new RegExp(`(${escapeRegExp(this.filterText)})`, "i")
1193
1353
  })}</li>` : html`<li class=${safeClassMap({ [CSS.noMatchesPlaceholder]: true, [CSS.noMatches]: true })}>${messages.noMatches}</li>`) || ""}</ul></div></div>`;
@@ -1212,8 +1372,10 @@ class Combobox extends LitElement {
1212
1372
  const allSelectionDisplay = selectionDisplay === "all";
1213
1373
  const singleSelectionDisplay = selectionDisplay === "single";
1214
1374
  const fitSelectionDisplay = !singleSelectionMode && selectionDisplay === "fit";
1215
- const isClearable = !this.clearDisabled && this.selectionMode !== "single-persist" && !!this.value?.length;
1216
- const hasDisabledItems = this.hasDisabledItems;
1375
+ const showIndicatorChips = !singleSelectionMode && !allSelectionDisplay;
1376
+ const showSingleIndicatorChips = showIndicatorChips && !fitSelectionDisplay;
1377
+ const hasClearableSelection = this.items.some((item) => item.selected && !item.disabled);
1378
+ const isClearable = !this.clearDisabled && this.selectionMode !== "single-persist" && !!this.value?.length && hasClearableSelection;
1217
1379
  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 aria-live=polite class=${safeClassMap({
1218
1380
  [CSS.wrapper]: true,
1219
1381
  [CSS.wrapperSingle]: singleSelectionMode || !this.selectedItems.length,
@@ -1222,11 +1384,7 @@ class Combobox extends LitElement {
1222
1384
  [CSS.gridInput]: true,
1223
1385
  [CSS.selectionDisplayFit]: fitSelectionDisplay,
1224
1386
  [CSS.selectionDisplaySingle]: singleSelectionDisplay
1225
- })} ${ref(this.setChipContainerEl)}>${!singleSelectionMode && !singleSelectionDisplay && this.renderChips() || ""}${!singleSelectionMode && !singleSelectionDisplay && this.selectAllEnabled && allSelectionDisplay && (!hasDisabledItems || this.hasDisabledSelected) && this.renderAllSelectedIndicatorChip() || ""}${!singleSelectionMode && !allSelectionDisplay && [
1226
- this.renderSelectedIndicatorChip(),
1227
- this.renderSelectedIndicatorChipCompact(),
1228
- this.renderAllSelectedIndicatorChip()
1229
- ] || ""}<label class=${safeClassMap(CSS.screenReadersOnly)} .htmlFor=${`${IDS.input(guid2)}`} .id=${`${IDS.label(guid2)}`}>${label}</label>${this.renderInput()}</div>`)}${!readOnly && isClearable ? ClearButton({ ariaLabel: this.messages.clear, disabled: this.disabled, ref: this.clearButtonRef, scale: this.scale, title: this.messages.clear }) : null}${!readOnly && this.renderChevronIcon() || ""}</div><ul aria-labelledby=${`${IDS.label(guid2)}`} aria-multiselectable=true class=${safeClassMap(CSS.screenReadersOnly)} .id=${`${IDS.listbox(guid2)}`} role=listbox tabindex=-1>${this.renderListBoxOptions()}</ul>${this.renderFloatingUIContainer()}${this.validationMessage && this.status === "invalid" ? Validation({ icon: this.validationIcon, id: IDS.validationMessage, message: this.validationMessage, scale: this.scale, status: this.status }) : null}` });
1387
+ })} ${ref(this.setChipContainerEl)}>${!singleSelectionMode && !singleSelectionDisplay && this.renderChips() || ""}${!singleSelectionMode && !singleSelectionDisplay && this.selectAllEnabled && allSelectionDisplay && this.renderAllSelectedIndicatorChip() || ""}${showSingleIndicatorChips && this.renderSelectedIndicatorChip() || ""}${showSingleIndicatorChips && this.renderSelectedIndicatorChipCompact() || ""}${showIndicatorChips && this.renderAllSelectedIndicatorChip() || ""}<label class=${safeClassMap(CSS.screenReadersOnly)} .htmlFor=${`${IDS.input(guid2)}`} .id=${`${IDS.label(guid2)}`}>${label}</label>${this.renderInput()}</div>`)}${!readOnly && isClearable ? ClearButton({ ariaLabel: this.messages.clear, disabled: this.disabled, ref: this.clearButtonRef, scale: this.scale, title: this.messages.clear }) : null}${!readOnly && this.renderChevronIcon() || ""}</div><ul aria-labelledby=${`${IDS.label(guid2)}`} aria-multiselectable=true class=${safeClassMap(CSS.screenReadersOnly)} .id=${`${IDS.listbox(guid2)}`} role=listbox tabindex=-1>${this.renderListBoxOptions()}</ul>${this.renderFloatingUIContainer()}${this.validationMessage && this.status === "invalid" ? Validation({ icon: this.validationIcon, id: IDS.validationMessage, message: this.validationMessage, scale: this.scale, status: this.status }) : null}` });
1230
1388
  }
1231
1389
  }
1232
1390
  customElement("calcite-combobox", Combobox);