@expressivecss/expressive 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (602) hide show
  1. package/CHANGELOG.md +1502 -1
  2. package/README.md +9 -8
  3. package/dist/css/expressive.css +19247 -11923
  4. package/dist/css/expressive.css.map +1 -1
  5. package/dist/css/expressive.min.css +1 -1
  6. package/dist/css/expressive.min.css.map +1 -1
  7. package/dist/fonts/LICENSE-noto-sans-arabic +93 -0
  8. package/dist/fonts/LICENSE-noto-sans-hebrew +93 -0
  9. package/dist/fonts/LICENSE-noto-sans-thai +93 -0
  10. package/dist/fonts/material-symbols-outlined.woff2 +0 -0
  11. package/dist/fonts/material-symbols-rounded.woff2 +0 -0
  12. package/dist/fonts/material-symbols-sharp.woff2 +0 -0
  13. package/dist/fonts/noto-sans-arabic-arabic-400.woff2 +0 -0
  14. package/dist/fonts/noto-sans-arabic-arabic-500.woff2 +0 -0
  15. package/dist/fonts/noto-sans-arabic-arabic-700.woff2 +0 -0
  16. package/dist/fonts/noto-sans-cyrillic-400.woff2 +0 -0
  17. package/dist/fonts/noto-sans-cyrillic-500.woff2 +0 -0
  18. package/dist/fonts/noto-sans-cyrillic-700.woff2 +0 -0
  19. package/dist/fonts/noto-sans-cyrillic-ext-400.woff2 +0 -0
  20. package/dist/fonts/noto-sans-cyrillic-ext-500.woff2 +0 -0
  21. package/dist/fonts/noto-sans-cyrillic-ext-700.woff2 +0 -0
  22. package/dist/fonts/noto-sans-devanagari-400.woff2 +0 -0
  23. package/dist/fonts/noto-sans-devanagari-500.woff2 +0 -0
  24. package/dist/fonts/noto-sans-devanagari-700.woff2 +0 -0
  25. package/dist/fonts/noto-sans-greek-400.woff2 +0 -0
  26. package/dist/fonts/noto-sans-greek-500.woff2 +0 -0
  27. package/dist/fonts/noto-sans-greek-700.woff2 +0 -0
  28. package/dist/fonts/noto-sans-greek-ext-400.woff2 +0 -0
  29. package/dist/fonts/noto-sans-greek-ext-500.woff2 +0 -0
  30. package/dist/fonts/noto-sans-greek-ext-700.woff2 +0 -0
  31. package/dist/fonts/noto-sans-hebrew-hebrew-400.woff2 +0 -0
  32. package/dist/fonts/noto-sans-hebrew-hebrew-500.woff2 +0 -0
  33. package/dist/fonts/noto-sans-hebrew-hebrew-700.woff2 +0 -0
  34. package/dist/fonts/noto-sans-latin-700.woff2 +0 -0
  35. package/dist/fonts/noto-sans-latin-ext-400.woff2 +0 -0
  36. package/dist/fonts/noto-sans-latin-ext-500.woff2 +0 -0
  37. package/dist/fonts/noto-sans-latin-ext-700.woff2 +0 -0
  38. package/dist/fonts/noto-sans-thai-thai-400.woff2 +0 -0
  39. package/dist/fonts/noto-sans-thai-thai-500.woff2 +0 -0
  40. package/dist/fonts/noto-sans-thai-thai-700.woff2 +0 -0
  41. package/dist/fonts/noto-sans-vietnamese-400.woff2 +0 -0
  42. package/dist/fonts/noto-sans-vietnamese-500.woff2 +0 -0
  43. package/dist/fonts/noto-sans-vietnamese-700.woff2 +0 -0
  44. package/dist/fonts/roboto-cyrillic-400.woff2 +0 -0
  45. package/dist/fonts/roboto-cyrillic-500.woff2 +0 -0
  46. package/dist/fonts/roboto-cyrillic-700.woff2 +0 -0
  47. package/dist/fonts/roboto-cyrillic-ext-400.woff2 +0 -0
  48. package/dist/fonts/roboto-cyrillic-ext-500.woff2 +0 -0
  49. package/dist/fonts/roboto-cyrillic-ext-700.woff2 +0 -0
  50. package/dist/fonts/roboto-greek-400.woff2 +0 -0
  51. package/dist/fonts/roboto-greek-500.woff2 +0 -0
  52. package/dist/fonts/roboto-greek-700.woff2 +0 -0
  53. package/dist/fonts/roboto-greek-ext-400.woff2 +0 -0
  54. package/dist/fonts/roboto-greek-ext-500.woff2 +0 -0
  55. package/dist/fonts/roboto-greek-ext-700.woff2 +0 -0
  56. package/dist/fonts/roboto-latin-700.woff2 +0 -0
  57. package/dist/fonts/roboto-latin-ext-400.woff2 +0 -0
  58. package/dist/fonts/roboto-latin-ext-500.woff2 +0 -0
  59. package/dist/fonts/roboto-latin-ext-700.woff2 +0 -0
  60. package/dist/fonts/roboto-vietnamese-400.woff2 +0 -0
  61. package/dist/fonts/roboto-vietnamese-500.woff2 +0 -0
  62. package/dist/fonts/roboto-vietnamese-700.woff2 +0 -0
  63. package/dist/js/chunks/chunk-2CS6TITK.mjs +219 -0
  64. package/dist/js/chunks/chunk-2CS6TITK.mjs.map +7 -0
  65. package/dist/js/chunks/chunk-2RLBDFH4.mjs +108 -0
  66. package/dist/js/chunks/chunk-2RLBDFH4.mjs.map +7 -0
  67. package/dist/js/chunks/chunk-3L3QIYLC.mjs +85 -0
  68. package/dist/js/chunks/chunk-3L3QIYLC.mjs.map +7 -0
  69. package/dist/js/chunks/chunk-4EWGD4V2.mjs +75 -0
  70. package/dist/js/chunks/chunk-4EWGD4V2.mjs.map +7 -0
  71. package/dist/js/chunks/chunk-4IKVPCSU.mjs +7 -0
  72. package/dist/js/chunks/chunk-4IKVPCSU.mjs.map +7 -0
  73. package/dist/js/chunks/chunk-4PIXLDNJ.mjs +127 -0
  74. package/dist/js/chunks/chunk-4PIXLDNJ.mjs.map +7 -0
  75. package/dist/js/chunks/{chunk-KVJAVDBC.mjs → chunk-4QUCNFSD.mjs} +64 -113
  76. package/dist/js/chunks/chunk-4QUCNFSD.mjs.map +7 -0
  77. package/dist/js/chunks/{chunk-UETTGDLI.mjs → chunk-4TRZ2AER.mjs} +35 -41
  78. package/dist/js/chunks/chunk-4TRZ2AER.mjs.map +7 -0
  79. package/dist/js/chunks/{chunk-C6CHEWYP.mjs → chunk-5KIHWJI2.mjs} +40 -26
  80. package/dist/js/chunks/chunk-5KIHWJI2.mjs.map +7 -0
  81. package/dist/js/chunks/{chunk-L27Q6ZMI.mjs → chunk-67ZPPKXS.mjs} +20 -33
  82. package/dist/js/chunks/chunk-67ZPPKXS.mjs.map +7 -0
  83. package/dist/js/chunks/{chunk-XAEAEHIX.mjs → chunk-6FSEUFVW.mjs} +39 -26
  84. package/dist/js/chunks/chunk-6FSEUFVW.mjs.map +7 -0
  85. package/dist/js/chunks/chunk-752ADW4M.mjs +225 -0
  86. package/dist/js/chunks/chunk-752ADW4M.mjs.map +7 -0
  87. package/dist/js/chunks/{chunk-CK2XCICY.mjs → chunk-75E5EDJF.mjs} +3 -11
  88. package/dist/js/chunks/chunk-75E5EDJF.mjs.map +7 -0
  89. package/dist/js/chunks/{chunk-KHXZ2A4K.mjs → chunk-7NLUI3RR.mjs} +139 -66
  90. package/dist/js/chunks/chunk-7NLUI3RR.mjs.map +7 -0
  91. package/dist/js/chunks/chunk-7W7TV6NY.mjs +108 -0
  92. package/dist/js/chunks/chunk-7W7TV6NY.mjs.map +7 -0
  93. package/dist/js/chunks/chunk-7YQBHTK3.mjs +225 -0
  94. package/dist/js/chunks/chunk-7YQBHTK3.mjs.map +7 -0
  95. package/dist/js/chunks/chunk-7YZ5CN3V.mjs +33 -0
  96. package/dist/js/chunks/chunk-7YZ5CN3V.mjs.map +7 -0
  97. package/dist/js/chunks/chunk-AI73GJKG.mjs +28 -0
  98. package/dist/js/chunks/chunk-AI73GJKG.mjs.map +7 -0
  99. package/dist/js/chunks/{chunk-LQWUDNHZ.mjs → chunk-ANKFWNWT.mjs} +21 -45
  100. package/dist/js/chunks/chunk-ANKFWNWT.mjs.map +7 -0
  101. package/dist/js/chunks/{chunk-5CEAOLUA.mjs → chunk-B7DQFHA5.mjs} +30 -47
  102. package/dist/js/chunks/chunk-B7DQFHA5.mjs.map +7 -0
  103. package/dist/js/chunks/chunk-BIGU5RCJ.mjs +153 -0
  104. package/dist/js/chunks/chunk-BIGU5RCJ.mjs.map +7 -0
  105. package/dist/js/chunks/{chunk-VGNYF6FB.mjs → chunk-BPF3I2MN.mjs} +109 -24
  106. package/dist/js/chunks/chunk-BPF3I2MN.mjs.map +7 -0
  107. package/dist/js/chunks/chunk-CMGXGYUC.mjs +74 -0
  108. package/dist/js/chunks/chunk-CMGXGYUC.mjs.map +7 -0
  109. package/dist/js/chunks/{chunk-NUHMOAOY.mjs → chunk-CSYWKEK3.mjs} +310 -196
  110. package/dist/js/chunks/chunk-CSYWKEK3.mjs.map +7 -0
  111. package/dist/js/chunks/chunk-CZSQHXEV.mjs +227 -0
  112. package/dist/js/chunks/chunk-CZSQHXEV.mjs.map +7 -0
  113. package/dist/js/chunks/chunk-DZYVU75J.mjs +121 -0
  114. package/dist/js/chunks/chunk-DZYVU75J.mjs.map +7 -0
  115. package/dist/js/chunks/{chunk-74MXKKLN.mjs → chunk-EC26RU2D.mjs} +11 -29
  116. package/dist/js/chunks/chunk-EC26RU2D.mjs.map +7 -0
  117. package/dist/js/chunks/{chunk-WDK4T63U.mjs → chunk-EVCVFEV3.mjs} +235 -146
  118. package/dist/js/chunks/chunk-EVCVFEV3.mjs.map +7 -0
  119. package/dist/js/chunks/chunk-FCNF4GRJ.mjs +445 -0
  120. package/dist/js/chunks/chunk-FCNF4GRJ.mjs.map +7 -0
  121. package/dist/js/chunks/chunk-GCWWEZKO.mjs +342 -0
  122. package/dist/js/chunks/chunk-GCWWEZKO.mjs.map +7 -0
  123. package/dist/js/chunks/chunk-GNRSYMVH.mjs +1 -0
  124. package/dist/js/chunks/chunk-GVZQH2H5.mjs +54 -0
  125. package/dist/js/chunks/chunk-GVZQH2H5.mjs.map +7 -0
  126. package/dist/js/chunks/chunk-GWZ76SR4.mjs +435 -0
  127. package/dist/js/chunks/chunk-GWZ76SR4.mjs.map +7 -0
  128. package/dist/js/chunks/{chunk-PDG64UHF.mjs → chunk-ILDRRG7T.mjs} +21 -23
  129. package/dist/js/chunks/chunk-ILDRRG7T.mjs.map +7 -0
  130. package/dist/js/chunks/chunk-INLZWHLY.mjs +80 -0
  131. package/dist/js/chunks/chunk-INLZWHLY.mjs.map +7 -0
  132. package/dist/js/chunks/chunk-JUKBBN6P.mjs +175 -0
  133. package/dist/js/chunks/chunk-JUKBBN6P.mjs.map +7 -0
  134. package/dist/js/chunks/chunk-KYIEG4U3.mjs +730 -0
  135. package/dist/js/chunks/chunk-KYIEG4U3.mjs.map +7 -0
  136. package/dist/js/chunks/{chunk-BGZLF6JZ.mjs → chunk-KZPSAXIU.mjs} +142 -32
  137. package/dist/js/chunks/chunk-KZPSAXIU.mjs.map +7 -0
  138. package/dist/js/chunks/chunk-LDXCC2L3.mjs +438 -0
  139. package/dist/js/chunks/chunk-LDXCC2L3.mjs.map +7 -0
  140. package/dist/js/chunks/chunk-NAC72P7R.mjs +137 -0
  141. package/dist/js/chunks/chunk-NAC72P7R.mjs.map +7 -0
  142. package/dist/js/chunks/chunk-NBJAUGPP.mjs +244 -0
  143. package/dist/js/chunks/chunk-NBJAUGPP.mjs.map +7 -0
  144. package/dist/js/chunks/chunk-NNHVANQA.mjs +113 -0
  145. package/dist/js/chunks/chunk-NNHVANQA.mjs.map +7 -0
  146. package/dist/js/chunks/chunk-NVQ5EHCU.mjs +376 -0
  147. package/dist/js/chunks/chunk-NVQ5EHCU.mjs.map +7 -0
  148. package/dist/js/chunks/{chunk-DXGRXYYL.mjs → chunk-OP43LLIC.mjs} +28 -45
  149. package/dist/js/chunks/chunk-OP43LLIC.mjs.map +7 -0
  150. package/dist/js/chunks/chunk-OUCHKSAW.mjs +63 -0
  151. package/dist/js/chunks/chunk-OUCHKSAW.mjs.map +7 -0
  152. package/dist/js/chunks/{chunk-TSZYSW7F.mjs → chunk-OYNUDOHR.mjs} +19 -47
  153. package/dist/js/chunks/chunk-OYNUDOHR.mjs.map +7 -0
  154. package/dist/js/chunks/{chunk-UAZSDUVP.mjs → chunk-P6DRQ6KS.mjs} +36 -30
  155. package/dist/js/chunks/chunk-P6DRQ6KS.mjs.map +7 -0
  156. package/dist/js/chunks/chunk-PA7NU5AK.mjs +99 -0
  157. package/dist/js/chunks/chunk-PA7NU5AK.mjs.map +7 -0
  158. package/dist/js/chunks/chunk-QACZ6TUP.mjs +224 -0
  159. package/dist/js/chunks/chunk-QACZ6TUP.mjs.map +7 -0
  160. package/dist/js/chunks/{chunk-GJL6GCIU.mjs → chunk-QXKWVHBD.mjs} +265 -161
  161. package/dist/js/chunks/chunk-QXKWVHBD.mjs.map +7 -0
  162. package/dist/js/chunks/{chunk-X4ISMKE2.mjs → chunk-ROH2HDB4.mjs} +7 -6
  163. package/dist/js/chunks/chunk-ROH2HDB4.mjs.map +7 -0
  164. package/dist/js/chunks/chunk-S23RJ3XY.mjs +86 -0
  165. package/dist/js/chunks/chunk-S23RJ3XY.mjs.map +7 -0
  166. package/dist/js/chunks/{chunk-SMY7GJSS.mjs → chunk-SPPHF7YZ.mjs} +36 -29
  167. package/dist/js/chunks/chunk-SPPHF7YZ.mjs.map +7 -0
  168. package/dist/js/chunks/chunk-T3BNSRP3.mjs +152 -0
  169. package/dist/js/chunks/chunk-T3BNSRP3.mjs.map +7 -0
  170. package/dist/js/chunks/chunk-TFABTUAZ.mjs +108 -0
  171. package/dist/js/chunks/chunk-TFABTUAZ.mjs.map +7 -0
  172. package/dist/js/chunks/chunk-U4B3VHFS.mjs +507 -0
  173. package/dist/js/chunks/chunk-U4B3VHFS.mjs.map +7 -0
  174. package/dist/js/chunks/chunk-UGJHCHXG.mjs +341 -0
  175. package/dist/js/chunks/chunk-UGJHCHXG.mjs.map +7 -0
  176. package/dist/js/chunks/chunk-VFV75DHF.mjs +70 -0
  177. package/dist/js/chunks/chunk-VFV75DHF.mjs.map +7 -0
  178. package/dist/js/chunks/{chunk-ZX6M7SWO.mjs → chunk-VGY4M57S.mjs} +266 -120
  179. package/dist/js/chunks/chunk-VGY4M57S.mjs.map +7 -0
  180. package/dist/js/chunks/chunk-VH4BMAZS.mjs +167 -0
  181. package/dist/js/chunks/chunk-VH4BMAZS.mjs.map +7 -0
  182. package/dist/js/chunks/chunk-VJVQIXHC.mjs +123 -0
  183. package/dist/js/chunks/chunk-VJVQIXHC.mjs.map +7 -0
  184. package/dist/js/chunks/{chunk-SFI2U4YW.mjs → chunk-VMY55K2X.mjs} +76 -109
  185. package/dist/js/chunks/chunk-VMY55K2X.mjs.map +7 -0
  186. package/dist/js/chunks/{chunk-KUFHW3DS.mjs → chunk-VR3L2WN5.mjs} +11 -17
  187. package/dist/js/chunks/chunk-VR3L2WN5.mjs.map +7 -0
  188. package/dist/js/chunks/chunk-W6FAL3TI.mjs +38 -0
  189. package/dist/js/chunks/chunk-W6FAL3TI.mjs.map +7 -0
  190. package/dist/js/chunks/chunk-WU7XJ4RR.mjs +450 -0
  191. package/dist/js/chunks/chunk-WU7XJ4RR.mjs.map +7 -0
  192. package/dist/js/chunks/chunk-X7SDA2J5.mjs +116 -0
  193. package/dist/js/chunks/chunk-X7SDA2J5.mjs.map +7 -0
  194. package/dist/js/chunks/chunk-Y6H2X7ZC.mjs +209 -0
  195. package/dist/js/chunks/chunk-Y6H2X7ZC.mjs.map +7 -0
  196. package/dist/js/chunks/chunk-Y6TLRA3U.mjs +129 -0
  197. package/dist/js/chunks/chunk-Y6TLRA3U.mjs.map +7 -0
  198. package/dist/js/chunks/chunk-Z4GICXR2.mjs +190 -0
  199. package/dist/js/chunks/chunk-Z4GICXR2.mjs.map +7 -0
  200. package/dist/js/chunks/chunk-Z4OARDZ7.mjs +442 -0
  201. package/dist/js/chunks/chunk-Z4OARDZ7.mjs.map +7 -0
  202. package/dist/js/chunks/{chunk-FM5CZOUB.mjs → chunk-ZJNLAGY5.mjs} +19 -30
  203. package/dist/js/chunks/chunk-ZJNLAGY5.mjs.map +7 -0
  204. package/dist/js/chunks/chunk-ZKWUWBUB.mjs +81 -0
  205. package/dist/js/chunks/chunk-ZKWUWBUB.mjs.map +7 -0
  206. package/dist/js/chunks/chunk-ZM3XBHWV.mjs +746 -0
  207. package/dist/js/chunks/chunk-ZM3XBHWV.mjs.map +7 -0
  208. package/dist/js/chunks/chunk-ZO6ZLHFF.mjs +48 -0
  209. package/dist/js/chunks/chunk-ZO6ZLHFF.mjs.map +7 -0
  210. package/dist/js/chunks/chunk-ZVLOUDIJ.mjs +251 -0
  211. package/dist/js/chunks/chunk-ZVLOUDIJ.mjs.map +7 -0
  212. package/dist/js/expressive.cjs +10613 -4327
  213. package/dist/js/expressive.cjs.map +4 -4
  214. package/dist/js/expressive.js +10613 -4327
  215. package/dist/js/expressive.js.map +4 -4
  216. package/dist/js/expressive.min.js +23 -22
  217. package/dist/js/expressive.min.js.map +4 -4
  218. package/dist/js/expressive.mjs +182 -71
  219. package/dist/js/expressive.mjs.map +2 -2
  220. package/dist/js/internal/behaviors/bottomSheets.mjs +4 -3
  221. package/dist/js/internal/behaviors/copy.mjs +9 -0
  222. package/dist/js/internal/behaviors/copy.mjs.map +7 -0
  223. package/dist/js/internal/behaviors/dataTables.mjs +10 -0
  224. package/dist/js/internal/behaviors/dataTables.mjs.map +7 -0
  225. package/dist/js/internal/behaviors/dialogs.mjs +2 -2
  226. package/dist/js/internal/behaviors/forms.mjs +2 -2
  227. package/dist/js/internal/behaviors/imageCompare.mjs +8 -0
  228. package/dist/js/internal/behaviors/imageCompare.mjs.map +7 -0
  229. package/dist/js/internal/behaviors/lists.mjs +8 -0
  230. package/dist/js/internal/behaviors/lists.mjs.map +7 -0
  231. package/dist/js/internal/behaviors/paneResize.mjs +8 -0
  232. package/dist/js/internal/behaviors/paneResize.mjs.map +7 -0
  233. package/dist/js/internal/behaviors/sheetDrag.mjs +7 -2
  234. package/dist/js/internal/behaviors/sideSheets.mjs +4 -3
  235. package/dist/js/internal/behaviors/sortable.mjs +8 -0
  236. package/dist/js/internal/behaviors/sortable.mjs.map +7 -0
  237. package/dist/js/internal/behaviors/theme.mjs +8 -0
  238. package/dist/js/internal/behaviors/theme.mjs.map +7 -0
  239. package/dist/js/internal/behaviors/tour.mjs +8 -0
  240. package/dist/js/internal/behaviors/tour.mjs.map +7 -0
  241. package/dist/js/internal/behaviors/transferList.mjs +8 -0
  242. package/dist/js/internal/behaviors/transferList.mjs.map +7 -0
  243. package/dist/js/internal/components/appBar.mjs +3 -2
  244. package/dist/js/internal/components/autocomplete.mjs +4 -4
  245. package/dist/js/internal/components/backToTop.mjs +9 -0
  246. package/dist/js/internal/components/backToTop.mjs.map +7 -0
  247. package/dist/js/internal/components/barChart.mjs +5 -4
  248. package/dist/js/internal/components/buttonGroup.mjs +3 -2
  249. package/dist/js/internal/components/buttons.mjs +3 -3
  250. package/dist/js/internal/components/cards.mjs +3 -3
  251. package/dist/js/internal/components/carousel.mjs +3 -3
  252. package/dist/js/internal/components/cascader.mjs +10 -0
  253. package/dist/js/internal/components/cascader.mjs.map +7 -0
  254. package/dist/js/internal/components/characterCounter.mjs +3 -2
  255. package/dist/js/internal/components/chips.mjs +6 -5
  256. package/dist/js/internal/components/colorPicker.mjs +9 -0
  257. package/dist/js/internal/components/colorPicker.mjs.map +7 -0
  258. package/dist/js/internal/components/columnChart.mjs +4 -3
  259. package/dist/js/internal/components/commandPalette.mjs +3 -3
  260. package/dist/js/internal/components/confetti.mjs +3 -2
  261. package/dist/js/internal/components/currencyInput.mjs +9 -0
  262. package/dist/js/internal/components/currencyInput.mjs.map +7 -0
  263. package/dist/js/internal/components/datepicker.mjs +11 -8
  264. package/dist/js/internal/components/expandingCard.mjs +3 -3
  265. package/dist/js/internal/components/funnelChart.mjs +10 -0
  266. package/dist/js/internal/components/funnelChart.mjs.map +7 -0
  267. package/dist/js/internal/components/heatmapChart.mjs +4 -3
  268. package/dist/js/internal/components/hoverCard.mjs +9 -0
  269. package/dist/js/internal/components/hoverCard.mjs.map +7 -0
  270. package/dist/js/internal/components/index.mjs +131 -66
  271. package/dist/js/internal/components/inputMask.mjs +9 -0
  272. package/dist/js/internal/components/inputMask.mjs.map +7 -0
  273. package/dist/js/internal/components/keypad.mjs +3 -3
  274. package/dist/js/internal/components/lightbox.mjs +3 -3
  275. package/dist/js/internal/components/lineChart.mjs +25 -4
  276. package/dist/js/internal/components/loadingOverlay.mjs +9 -0
  277. package/dist/js/internal/components/loadingOverlay.mjs.map +7 -0
  278. package/dist/js/internal/components/mapView.mjs +3 -3
  279. package/dist/js/internal/components/menu.mjs +3 -3
  280. package/dist/js/internal/components/menubar.mjs +10 -0
  281. package/dist/js/internal/components/menubar.mjs.map +7 -0
  282. package/dist/js/internal/components/messageScroller.mjs +3 -3
  283. package/dist/js/internal/components/mixedChart.mjs +5 -4
  284. package/dist/js/internal/components/navigationRail.mjs +3 -2
  285. package/dist/js/internal/components/particles.mjs +3 -2
  286. package/dist/js/internal/components/pieChart.mjs +4 -3
  287. package/dist/js/internal/components/pullToRefresh.mjs +9 -0
  288. package/dist/js/internal/components/pullToRefresh.mjs.map +7 -0
  289. package/dist/js/internal/components/questionnaire.mjs +3 -3
  290. package/dist/js/internal/components/radarChart.mjs +4 -3
  291. package/dist/js/internal/components/radialChart.mjs +4 -3
  292. package/dist/js/internal/components/registry.mjs +59 -41
  293. package/dist/js/internal/components/richTextEditor.mjs +3 -3
  294. package/dist/js/internal/components/sankeyChart.mjs +10 -0
  295. package/dist/js/internal/components/sankeyChart.mjs.map +7 -0
  296. package/dist/js/internal/components/scatterChart.mjs +10 -0
  297. package/dist/js/internal/components/scatterChart.mjs.map +7 -0
  298. package/dist/js/internal/components/scrollspy.mjs +3 -2
  299. package/dist/js/internal/components/select.mjs +4 -4
  300. package/dist/js/internal/components/showMore.mjs +9 -0
  301. package/dist/js/internal/components/showMore.mjs.map +7 -0
  302. package/dist/js/internal/components/slider.mjs +3 -3
  303. package/dist/js/internal/components/snackbar.mjs +2 -2
  304. package/dist/js/internal/components/swipeActions.mjs +9 -0
  305. package/dist/js/internal/components/swipeActions.mjs.map +7 -0
  306. package/dist/js/internal/components/tabs.mjs +3 -4
  307. package/dist/js/internal/components/timepicker.mjs +5 -4
  308. package/dist/js/internal/components/tooltip.mjs +3 -3
  309. package/dist/js/internal/components/treeSelect.mjs +13 -0
  310. package/dist/js/internal/components/treeSelect.mjs.map +7 -0
  311. package/dist/js/internal/components/treemapChart.mjs +10 -0
  312. package/dist/js/internal/components/treemapChart.mjs.map +7 -0
  313. package/dist/js/internal/core/component.mjs +2 -1
  314. package/dist/js/internal/core/formControl.mjs +12 -0
  315. package/dist/js/internal/core/formControl.mjs.map +7 -0
  316. package/dist/js/internal/core/spring.mjs +11 -0
  317. package/dist/js/internal/core/spring.mjs.map +7 -0
  318. package/dist/js/internal/core/utils.mjs +11 -3
  319. package/dist/js/internal/plugins/dockedDisplayPlugin.mjs +2 -2
  320. package/dist/js/internal/plugins/modalDisplayPlugin.mjs +13 -0
  321. package/dist/js/internal/plugins/modalDisplayPlugin.mjs.map +7 -0
  322. package/dist/js/modular.mjs +173 -71
  323. package/dist/types/behaviors/bottomSheets.d.ts +19 -3
  324. package/dist/types/behaviors/copy.d.ts +18 -0
  325. package/dist/types/behaviors/dataTables.d.ts +129 -0
  326. package/dist/types/behaviors/dialogs.d.ts +27 -1
  327. package/dist/types/behaviors/forms.d.ts +68 -2
  328. package/dist/types/behaviors/imageCompare.d.ts +12 -0
  329. package/dist/types/behaviors/lists.d.ts +12 -0
  330. package/dist/types/behaviors/paneResize.d.ts +29 -0
  331. package/dist/types/behaviors/sheetDrag.d.ts +18 -0
  332. package/dist/types/behaviors/sideSheets.d.ts +1 -1
  333. package/dist/types/behaviors/sortable.d.ts +28 -0
  334. package/dist/types/behaviors/theme.d.ts +22 -0
  335. package/dist/types/behaviors/tour.d.ts +36 -0
  336. package/dist/types/behaviors/transferList.d.ts +51 -0
  337. package/dist/types/components/appBar.d.ts +5 -6
  338. package/dist/types/components/autocomplete.d.ts +91 -17
  339. package/dist/types/components/backToTop.d.ts +36 -0
  340. package/dist/types/components/barChart.d.ts +3 -6
  341. package/dist/types/components/buttonGroup.d.ts +2 -4
  342. package/dist/types/components/buttons.d.ts +5 -5
  343. package/dist/types/components/cards.d.ts +3 -16
  344. package/dist/types/components/carousel.d.ts +9 -15
  345. package/dist/types/components/cascader.d.ts +130 -0
  346. package/dist/types/components/characterCounter.d.ts +2 -15
  347. package/dist/types/components/chips.d.ts +65 -19
  348. package/dist/types/components/colorPicker.d.ts +42 -0
  349. package/dist/types/components/columnChart.d.ts +23 -10
  350. package/dist/types/components/commandPalette.d.ts +11 -16
  351. package/dist/types/components/confetti.d.ts +2 -4
  352. package/dist/types/components/currencyInput.d.ts +59 -0
  353. package/dist/types/components/datepicker.d.ts +56 -32
  354. package/dist/types/components/expandingCard.d.ts +4 -6
  355. package/dist/types/components/funnelChart.d.ts +38 -0
  356. package/dist/types/components/heatmapChart.d.ts +39 -8
  357. package/dist/types/components/hoverCard.d.ts +58 -0
  358. package/dist/types/components/index.d.ts +16 -1
  359. package/dist/types/components/inputMask.d.ts +30 -0
  360. package/dist/types/components/keypad.d.ts +38 -6
  361. package/dist/types/components/lightbox.d.ts +14 -20
  362. package/dist/types/components/lineChart.d.ts +172 -10
  363. package/dist/types/components/loadingOverlay.d.ts +42 -0
  364. package/dist/types/components/mapView.d.ts +26 -17
  365. package/dist/types/components/menu.d.ts +60 -22
  366. package/dist/types/components/menubar.d.ts +37 -0
  367. package/dist/types/components/messageScroller.d.ts +2 -14
  368. package/dist/types/components/mixedChart.d.ts +15 -6
  369. package/dist/types/components/navigationRail.d.ts +16 -5
  370. package/dist/types/components/particles.d.ts +8 -4
  371. package/dist/types/components/pieChart.d.ts +32 -7
  372. package/dist/types/components/pullToRefresh.d.ts +80 -0
  373. package/dist/types/components/questionnaire.d.ts +58 -16
  374. package/dist/types/components/radarChart.d.ts +10 -6
  375. package/dist/types/components/radialChart.d.ts +58 -7
  376. package/dist/types/components/registry.d.ts +73 -3
  377. package/dist/types/components/richTextEditor.d.ts +6 -14
  378. package/dist/types/components/sankeyChart.d.ts +72 -0
  379. package/dist/types/components/scatterChart.d.ts +102 -0
  380. package/dist/types/components/scrollspy.d.ts +3 -5
  381. package/dist/types/components/select.d.ts +43 -30
  382. package/dist/types/components/showMore.d.ts +51 -0
  383. package/dist/types/components/slider.d.ts +3 -15
  384. package/dist/types/components/snackbar.d.ts +61 -0
  385. package/dist/types/components/swipeActions.d.ts +81 -0
  386. package/dist/types/components/tabs.d.ts +89 -27
  387. package/dist/types/components/timepicker.d.ts +113 -21
  388. package/dist/types/components/tooltip.d.ts +56 -20
  389. package/dist/types/components/treeSelect.d.ts +106 -0
  390. package/dist/types/components/treemapChart.d.ts +56 -0
  391. package/dist/types/core/component.d.ts +43 -25
  392. package/dist/types/core/formControl.d.ts +21 -0
  393. package/dist/types/core/spring.d.ts +20 -0
  394. package/dist/types/core/utils.d.ts +85 -72
  395. package/dist/types/modular.d.ts +33 -1
  396. package/dist/types/plugins/dockedDisplayPlugin.d.ts +10 -8
  397. package/dist/types/plugins/modalDisplayPlugin.d.ts +32 -0
  398. package/package.json +10 -8
  399. package/src/sass/README.md +27 -18
  400. package/src/sass/abstracts/_elevation.scss +13 -7
  401. package/src/sass/abstracts/_index.scss +1 -0
  402. package/src/sass/abstracts/_mixins.scss +422 -36
  403. package/src/sass/abstracts/_spring.scss +63 -0
  404. package/src/sass/abstracts/_variables.scss +39 -21
  405. package/src/sass/base/_fonts.scss +61 -48
  406. package/src/sass/base/_global.scss +104 -24
  407. package/src/sass/base/_index.scss +2 -0
  408. package/src/sass/base/_normalize.scss +59 -114
  409. package/src/sass/base/_print.scss +21 -0
  410. package/src/sass/base/_prose.scss +68 -0
  411. package/src/sass/base/_typography.scss +9 -5
  412. package/src/sass/components/_accordion.scss +9 -16
  413. package/src/sass/components/_alert.scss +102 -0
  414. package/src/sass/components/_aura.scss +8 -3
  415. package/src/sass/components/_avatar.scss +3 -3
  416. package/src/sass/components/_back-to-top.scss +38 -0
  417. package/src/sass/components/_badges.scss +6 -5
  418. package/src/sass/components/_bar-chart.scss +41 -19
  419. package/src/sass/components/_bottom-sheet.scss +44 -16
  420. package/src/sass/components/_breadcrumb.scss +8 -1
  421. package/src/sass/components/_button-groups.scss +15 -25
  422. package/src/sass/components/_buttons.scss +156 -63
  423. package/src/sass/components/_calendar.scss +246 -0
  424. package/src/sass/components/_cards.scss +36 -44
  425. package/src/sass/components/_carousel.scss +27 -103
  426. package/src/sass/components/_cascader.scss +142 -0
  427. package/src/sass/components/_chips.scss +36 -46
  428. package/src/sass/components/_column-chart.scss +19 -12
  429. package/src/sass/components/_command-palette.scss +4 -7
  430. package/src/sass/components/_confetti.scss +0 -2
  431. package/src/sass/components/_countdown.scss +1 -1
  432. package/src/sass/components/_data-table.scss +162 -25
  433. package/src/sass/components/_datepicker.scss +54 -40
  434. package/src/sass/components/_description-list.scss +85 -0
  435. package/src/sass/components/_dialog.scss +42 -41
  436. package/src/sass/components/_docked-display.scss +1 -3
  437. package/src/sass/components/_drag-handle.scss +16 -20
  438. package/src/sass/components/_expanding-card.scss +20 -9
  439. package/src/sass/components/_fab-menu.scss +44 -32
  440. package/src/sass/components/_funnel-chart.scss +124 -0
  441. package/src/sass/components/_heatmap-chart.scss +111 -22
  442. package/src/sass/components/_icon-buttons.scss +7 -7
  443. package/src/sass/components/_icons-material-design.scss +2 -2
  444. package/src/sass/components/_image-compare.scss +108 -0
  445. package/src/sass/components/_index.scss +20 -0
  446. package/src/sass/components/_keypad.scss +39 -19
  447. package/src/sass/components/_kpi.scss +6 -11
  448. package/src/sass/components/_lightbox.scss +24 -13
  449. package/src/sass/components/_line-chart.scss +16 -2
  450. package/src/sass/components/_list.scss +59 -14
  451. package/src/sass/components/_loading-indicator.scss +1 -0
  452. package/src/sass/components/_loading-overlay.scss +105 -0
  453. package/src/sass/components/_map.scss +33 -11
  454. package/src/sass/components/_marquee.scss +3 -2
  455. package/src/sass/components/_mega-menu.scss +137 -0
  456. package/src/sass/components/_menu.scss +143 -123
  457. package/src/sass/components/_menubar.scss +59 -0
  458. package/src/sass/components/_message-scroller.scss +2 -2
  459. package/src/sass/components/_message.scss +3 -3
  460. package/src/sass/components/_mixed-chart.scss +37 -9
  461. package/src/sass/components/_modal-display.scss +21 -0
  462. package/src/sass/components/_navbar.scss +34 -20
  463. package/src/sass/components/_navigation-bar.scss +15 -77
  464. package/src/sass/components/_navigation-rail.scss +151 -92
  465. package/src/sass/components/_org-chart.scss +192 -0
  466. package/src/sass/components/_page-footer.scss +1 -1
  467. package/src/sass/components/_pagination.scss +6 -13
  468. package/src/sass/components/_panes.scss +32 -26
  469. package/src/sass/components/_particles.scss +0 -2
  470. package/src/sass/components/_pie-chart.scss +91 -11
  471. package/src/sass/components/_popover.scss +18 -5
  472. package/src/sass/components/_progress.scss +152 -31
  473. package/src/sass/components/_pull-to-refresh.scss +90 -0
  474. package/src/sass/components/_questionnaire.scss +74 -3
  475. package/src/sass/components/_radar-chart.scss +38 -10
  476. package/src/sass/components/_radial-chart.scss +113 -5
  477. package/src/sass/components/_rich-text-editor.scss +2 -2
  478. package/src/sass/components/_sankey-chart.scss +114 -0
  479. package/src/sass/components/_scatter-chart.scss +153 -0
  480. package/src/sass/components/_scrim.scss +0 -2
  481. package/src/sass/components/_scrollspy.scss +0 -2
  482. package/src/sass/components/_search.scss +26 -22
  483. package/src/sass/components/_show-more.scss +8 -0
  484. package/src/sass/components/_side-sheet.scss +23 -37
  485. package/src/sass/components/_skeleton.scss +2 -4
  486. package/src/sass/components/_snackbar.scss +27 -21
  487. package/src/sass/components/_split-button.scss +5 -5
  488. package/src/sass/components/_stat.scss +3 -8
  489. package/src/sass/components/_stepper.scss +1 -1
  490. package/src/sass/components/_swipe-actions.scss +71 -0
  491. package/src/sass/components/_tabs.scss +51 -32
  492. package/src/sass/components/_timeline.scss +12 -12
  493. package/src/sass/components/_timepicker.scss +109 -78
  494. package/src/sass/components/_toolbar.scss +35 -43
  495. package/src/sass/components/_tooltip.scss +21 -12
  496. package/src/sass/components/_tour.scss +89 -0
  497. package/src/sass/components/_transfer-list.scss +73 -0
  498. package/src/sass/components/_transitions.scss +4 -4
  499. package/src/sass/components/_tree.scss +3 -16
  500. package/src/sass/components/_treemap-chart.scss +122 -0
  501. package/src/sass/components/forms/_checkboxes.scss +106 -24
  502. package/src/sass/components/forms/_color-picker.scss +135 -0
  503. package/src/sass/components/forms/_color-swatches.scss +85 -0
  504. package/src/sass/components/forms/_drop-zone.scss +15 -9
  505. package/src/sass/components/forms/_fieldset.scss +7 -7
  506. package/src/sass/components/forms/_file-input.scss +6 -8
  507. package/src/sass/components/forms/_index.scss +3 -1
  508. package/src/sass/components/forms/_input-fields.scss +254 -90
  509. package/src/sass/components/forms/_radio-buttons.scss +33 -94
  510. package/src/sass/components/forms/_rating.scss +2 -32
  511. package/src/sass/components/forms/_select.scss +199 -20
  512. package/src/sass/components/forms/_slider.scss +91 -94
  513. package/src/sass/components/forms/_switches.scss +53 -164
  514. package/src/sass/custom.scss +10 -1
  515. package/src/sass/expressive.scss +3 -63
  516. package/src/sass/tokens/_contrast.scss +94 -0
  517. package/src/sass/tokens/_elevation.scss +16 -0
  518. package/src/sass/tokens/_index.scss +5 -0
  519. package/src/sass/tokens/_motion.scss +109 -0
  520. package/src/sass/tokens/_reference.scss +72 -141
  521. package/src/sass/tokens/_shape.scss +38 -0
  522. package/src/sass/tokens/_stacking.scss +27 -0
  523. package/src/sass/tokens/_state.scss +0 -2
  524. package/src/sass/tokens/_theme.scss +10 -1
  525. package/src/sass/tokens/_vibrant.scss +2 -5
  526. package/src/sass/utilities/_defer-render.scss +17 -0
  527. package/src/sass/utilities/_helpers.scss +183 -26
  528. package/src/sass/utilities/_index.scss +1 -0
  529. package/src/sass/utilities/_scroll-area.scss +0 -2
  530. package/src/sass/utilities/_spacing.scss +52 -34
  531. package/src/sass/utilities/_typescale.scss +8 -1
  532. package/src/sass/utilities/_visibility.scss +47 -76
  533. package/src/sass/utilities/_z-depth.scss +7 -4
  534. package/dist/js/chunks/chunk-33QVDDGR.mjs +0 -270
  535. package/dist/js/chunks/chunk-33QVDDGR.mjs.map +0 -7
  536. package/dist/js/chunks/chunk-45FER6RI.mjs +0 -59
  537. package/dist/js/chunks/chunk-45FER6RI.mjs.map +0 -7
  538. package/dist/js/chunks/chunk-5CEAOLUA.mjs.map +0 -7
  539. package/dist/js/chunks/chunk-6VATUZC6.mjs +0 -295
  540. package/dist/js/chunks/chunk-6VATUZC6.mjs.map +0 -7
  541. package/dist/js/chunks/chunk-74MXKKLN.mjs.map +0 -7
  542. package/dist/js/chunks/chunk-AIURVCG6.mjs +0 -55
  543. package/dist/js/chunks/chunk-AIURVCG6.mjs.map +0 -7
  544. package/dist/js/chunks/chunk-BGZLF6JZ.mjs.map +0 -7
  545. package/dist/js/chunks/chunk-C6CHEWYP.mjs.map +0 -7
  546. package/dist/js/chunks/chunk-CK2XCICY.mjs.map +0 -7
  547. package/dist/js/chunks/chunk-CXXM2L4F.mjs +0 -344
  548. package/dist/js/chunks/chunk-CXXM2L4F.mjs.map +0 -7
  549. package/dist/js/chunks/chunk-DXGRXYYL.mjs.map +0 -7
  550. package/dist/js/chunks/chunk-FM5CZOUB.mjs.map +0 -7
  551. package/dist/js/chunks/chunk-GJL6GCIU.mjs.map +0 -7
  552. package/dist/js/chunks/chunk-K3HZMFMD.mjs +0 -135
  553. package/dist/js/chunks/chunk-K3HZMFMD.mjs.map +0 -7
  554. package/dist/js/chunks/chunk-KHXZ2A4K.mjs.map +0 -7
  555. package/dist/js/chunks/chunk-KQACNQ22.mjs +0 -7
  556. package/dist/js/chunks/chunk-KQACNQ22.mjs.map +0 -7
  557. package/dist/js/chunks/chunk-KUFHW3DS.mjs.map +0 -7
  558. package/dist/js/chunks/chunk-KVJAVDBC.mjs.map +0 -7
  559. package/dist/js/chunks/chunk-L27Q6ZMI.mjs.map +0 -7
  560. package/dist/js/chunks/chunk-LQWUDNHZ.mjs.map +0 -7
  561. package/dist/js/chunks/chunk-M372EDXD.mjs +0 -322
  562. package/dist/js/chunks/chunk-M372EDXD.mjs.map +0 -7
  563. package/dist/js/chunks/chunk-M3MURWMB.mjs +0 -82
  564. package/dist/js/chunks/chunk-M3MURWMB.mjs.map +0 -7
  565. package/dist/js/chunks/chunk-NUHMOAOY.mjs.map +0 -7
  566. package/dist/js/chunks/chunk-OWG3LMUL.mjs +0 -169
  567. package/dist/js/chunks/chunk-OWG3LMUL.mjs.map +0 -7
  568. package/dist/js/chunks/chunk-PD6HYHAE.mjs +0 -48
  569. package/dist/js/chunks/chunk-PD6HYHAE.mjs.map +0 -7
  570. package/dist/js/chunks/chunk-PDG64UHF.mjs.map +0 -7
  571. package/dist/js/chunks/chunk-PO3AXVR3.mjs +0 -546
  572. package/dist/js/chunks/chunk-PO3AXVR3.mjs.map +0 -7
  573. package/dist/js/chunks/chunk-QYGK36OG.mjs +0 -181
  574. package/dist/js/chunks/chunk-QYGK36OG.mjs.map +0 -7
  575. package/dist/js/chunks/chunk-SFI2U4YW.mjs.map +0 -7
  576. package/dist/js/chunks/chunk-SMY7GJSS.mjs.map +0 -7
  577. package/dist/js/chunks/chunk-TCCA2HDG.mjs +0 -414
  578. package/dist/js/chunks/chunk-TCCA2HDG.mjs.map +0 -7
  579. package/dist/js/chunks/chunk-TSZYSW7F.mjs.map +0 -7
  580. package/dist/js/chunks/chunk-UAZSDUVP.mjs.map +0 -7
  581. package/dist/js/chunks/chunk-UBRZZWRA.mjs +0 -127
  582. package/dist/js/chunks/chunk-UBRZZWRA.mjs.map +0 -7
  583. package/dist/js/chunks/chunk-UCOE7ZDL.mjs +0 -287
  584. package/dist/js/chunks/chunk-UCOE7ZDL.mjs.map +0 -7
  585. package/dist/js/chunks/chunk-UETTGDLI.mjs.map +0 -7
  586. package/dist/js/chunks/chunk-UNCRDLP6.mjs +0 -136
  587. package/dist/js/chunks/chunk-UNCRDLP6.mjs.map +0 -7
  588. package/dist/js/chunks/chunk-VGNYF6FB.mjs.map +0 -7
  589. package/dist/js/chunks/chunk-VGPGBNGL.mjs +0 -68
  590. package/dist/js/chunks/chunk-VGPGBNGL.mjs.map +0 -7
  591. package/dist/js/chunks/chunk-VKAUVTQY.mjs +0 -1
  592. package/dist/js/chunks/chunk-VM4FTS7L.mjs +0 -48
  593. package/dist/js/chunks/chunk-VM4FTS7L.mjs.map +0 -7
  594. package/dist/js/chunks/chunk-WDK4T63U.mjs.map +0 -7
  595. package/dist/js/chunks/chunk-WOCCTVUF.mjs +0 -185
  596. package/dist/js/chunks/chunk-WOCCTVUF.mjs.map +0 -7
  597. package/dist/js/chunks/chunk-WQYN5L4E.mjs +0 -107
  598. package/dist/js/chunks/chunk-WQYN5L4E.mjs.map +0 -7
  599. package/dist/js/chunks/chunk-X4ISMKE2.mjs.map +0 -7
  600. package/dist/js/chunks/chunk-XAEAEHIX.mjs.map +0 -7
  601. package/dist/js/chunks/chunk-ZX6M7SWO.mjs.map +0 -7
  602. /package/dist/js/chunks/{chunk-VKAUVTQY.mjs.map → chunk-GNRSYMVH.mjs.map} +0 -0
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  Menu
3
- } from "./chunk-NUHMOAOY.mjs";
4
- import {
5
- Utils
6
- } from "./chunk-M372EDXD.mjs";
3
+ } from "./chunk-CSYWKEK3.mjs";
7
4
  import {
8
5
  Component
9
- } from "./chunk-PD6HYHAE.mjs";
6
+ } from "./chunk-CMGXGYUC.mjs";
7
+ import {
8
+ Utils
9
+ } from "./chunk-ZVLOUDIJ.mjs";
10
10
 
11
11
  // src/ts/components/autocomplete.ts
12
12
  var _defaults = {
@@ -14,7 +14,8 @@ var _defaults = {
14
14
  loading: "Loading results.",
15
15
  noResults: "No results.",
16
16
  results: (count) => `${count} ${count === 1 ? "result" : "results"} available.`,
17
- selected: (count) => `${count} ${count === 1 ? "item" : "items"} selected.`
17
+ selected: (count) => `${count} ${count === 1 ? "item" : "items"} selected.`,
18
+ create: (text) => `Add "${text}"`
18
19
  },
19
20
  data: [],
20
21
  // Autocomplete data set
@@ -28,6 +29,9 @@ var _defaults = {
28
29
  },
29
30
  minLength: 1,
30
31
  // Min characters before autocomplete starts
32
+ searchDelay: 0,
33
+ allowCreate: false,
34
+ onCreate: null,
31
35
  isMultiSelect: false,
32
36
  onSearch: (text, autocomplete) => {
33
37
  const normSearch = text.toLocaleLowerCase();
@@ -43,9 +47,20 @@ var _defaults = {
43
47
  };
44
48
  var _Autocomplete = class _Autocomplete extends Component {
45
49
  constructor(el, options) {
46
- super(el, options, _Autocomplete);
50
+ super(el, options);
51
+ /**
52
+ * Whether the user left or dismissed the field since the last search, so
53
+ * late results must not reopen it. A field nobody has focused yet counts.
54
+ */
55
+ this._left = true;
56
+ // Counts selections, so a callback that selects again silences the stale event.
57
+ this._selection = 0;
58
+ /** The last search returned no suggestions. A text change clears it until the next one returns. */
59
+ this._noResults = false;
47
60
  this._handleInputBlur = () => {
48
61
  if (!this._pointerDown) {
62
+ this._left = true;
63
+ this._cancelPendingSearch();
49
64
  this.close();
50
65
  this._resetAutocomplete();
51
66
  }
@@ -54,65 +69,69 @@ var _Autocomplete = class _Autocomplete extends Component {
54
69
  _Autocomplete._keydown = false;
55
70
  };
56
71
  this._handleInput = () => {
72
+ this._left = false;
57
73
  this.count = 0;
58
74
  const actualValue = this.el.value.toLocaleLowerCase();
59
75
  if (this.oldVal !== actualValue) {
60
76
  this._resetCurrentElementPosition();
77
+ this._noResults = false;
61
78
  if (this.el.matches(":focus-visible") && (!this.menu.isOpen || actualValue.length < this.options.minLength)) this.open();
62
79
  }
63
- this._inputChangeDetection(actualValue);
80
+ this._inputChangeDetection(actualValue, true);
64
81
  };
65
82
  this._handleInputFocus = () => {
83
+ this._left = false;
66
84
  this.count = 0;
67
85
  const actualValue = this.el.value.toLocaleLowerCase();
68
86
  this._inputChangeDetection(actualValue);
69
87
  };
70
- this._inputChangeDetection = (value) => {
88
+ this._inputChangeDetection = (value, typed) => {
71
89
  const deselected = !this.options.isMultiSelect && this.selectedValues.length > 0 && this.el.value !== (this.selectedValues[0].text || String(this.selectedValues[0].id));
72
90
  if (deselected) this.selectedValues = [];
73
91
  if (this.oldVal !== value) {
92
+ this._noResults = false;
74
93
  this._setStatusLoading();
75
- this.options.onSearch(this.el.value, this);
94
+ this._queueSearch(typed);
76
95
  }
77
96
  if (deselected) this._triggerChanged();
78
97
  this.oldVal = value;
79
98
  };
80
- this._handleInputKeydown = (e) => {
99
+ this._handleInputKeydown = Utils.ignoringComposition((e) => {
81
100
  _Autocomplete._keydown = true;
82
- if (e.key === Utils.keys.ESC || e.key === "Tab") {
83
- this.close();
84
- this._resetCurrentElementPosition();
101
+ if (e.key === "Escape" || e.key === "Tab") {
102
+ this._dismiss(e);
85
103
  return;
86
104
  }
87
- const numItems = this.container.querySelectorAll("li").length;
88
- if (e.key === Utils.keys.ENTER && this.activeIndex >= 0) {
89
- const liElement = this.container.querySelectorAll("li")[this.activeIndex];
105
+ const options = this._options();
106
+ const numItems = options.length;
107
+ if (e.key === "Enter" && this.activeIndex >= 0) {
108
+ const liElement = options[this.activeIndex];
90
109
  if (liElement) {
91
- this.selectOption(liElement.getAttribute("data-id"));
110
+ this._choose(liElement);
92
111
  e.preventDefault();
93
112
  }
94
113
  return;
95
114
  }
96
- if (e.key === Utils.keys.ARROW_UP || e.key === Utils.keys.ARROW_DOWN) {
115
+ if (e.key === "ArrowUp" || e.key === "ArrowDown") {
97
116
  e.preventDefault();
98
117
  if (!this.menu.isOpen && this._openTimer === void 0) {
99
118
  this.open();
100
119
  return;
101
120
  }
102
- if (e.key === Utils.keys.ARROW_UP && this.activeIndex > 0) this.activeIndex--;
103
- if (e.key === Utils.keys.ARROW_DOWN && this.activeIndex < numItems - 1)
121
+ if (e.key === "ArrowUp" && this.activeIndex > 0) this.activeIndex--;
122
+ if (e.key === "ArrowDown" && this.activeIndex < numItems - 1)
104
123
  this.activeIndex++;
105
124
  this._setActive(null);
106
125
  if (this.activeIndex >= 0) {
107
- this._setActive(this.container.querySelectorAll("li")[this.activeIndex]);
108
- this.container.children[this.activeIndex].scrollIntoView({
126
+ this._setActive(options[this.activeIndex]);
127
+ options[this.activeIndex].scrollIntoView({
109
128
  behavior: "smooth",
110
129
  block: "nearest",
111
130
  inline: "nearest"
112
131
  });
113
132
  }
114
133
  }
115
- };
134
+ });
116
135
  this._handleInputClick = () => {
117
136
  this.open();
118
137
  };
@@ -128,6 +147,14 @@ var _Autocomplete = class _Autocomplete extends Component {
128
147
  this._handleContainerPointerUp = () => {
129
148
  this._pointerDown = false;
130
149
  };
150
+ // The no-results row and group headings are not options, and a disabled row
151
+ // cannot be chosen. A press on any of them would move focus to the list,
152
+ // which nothing hands back, and Menu would report the row as chosen.
153
+ this._handleInertRowPress = (e) => {
154
+ if (!(e.target instanceof Element) || !e.target.closest('.autocomplete-no-results, .autocomplete-group-label, [aria-disabled="true"]')) return;
155
+ e.preventDefault();
156
+ e.stopPropagation();
157
+ };
131
158
  /**
132
159
  * Show autocomplete.
133
160
  */
@@ -136,7 +163,7 @@ var _Autocomplete = class _Autocomplete extends Component {
136
163
  this._resetAutocomplete();
137
164
  if (inputText.length >= this.options.minLength) {
138
165
  this._renderMenu();
139
- this._announce(this._resultsMessage(this.menuItems.length));
166
+ this._announce(this._resultsMessage());
140
167
  }
141
168
  if (!this.menu.isOpen) {
142
169
  if (this._openTimer !== void 0) clearTimeout(this._openTimer);
@@ -158,12 +185,6 @@ var _Autocomplete = class _Autocomplete extends Component {
158
185
  this.isOpen = false;
159
186
  this.menu.close();
160
187
  };
161
- this.el["Expressive_Autocomplete"] = this;
162
- this.options = {
163
- ..._Autocomplete.defaults,
164
- ...options,
165
- i18n: { ..._Autocomplete.defaults.i18n, ...options?.i18n }
166
- };
167
188
  this.isOpen = false;
168
189
  this.count = 0;
169
190
  this.activeIndex = -1;
@@ -198,17 +219,6 @@ var _Autocomplete = class _Autocomplete extends Component {
198
219
  static get defaults() {
199
220
  return _defaults;
200
221
  }
201
- /**
202
- * Initializes instances of Autocomplete.
203
- * @param els HTML elements.
204
- * @param options Component options.
205
- */
206
- static init(els, options = {}) {
207
- return super.init(els, options, _Autocomplete);
208
- }
209
- static getInstance(el) {
210
- return el["Expressive_Autocomplete"];
211
- }
212
222
  static _loadingIndicator() {
213
223
  if (!_Autocomplete._loadingTemplate) {
214
224
  const template = document.createElement("template");
@@ -226,35 +236,32 @@ var _Autocomplete = class _Autocomplete extends Component {
226
236
  clearTimeout(this._openTimer);
227
237
  this._openTimer = void 0;
228
238
  }
229
- this._removeEventHandlers();
239
+ this._cancelPendingSearch();
240
+ this._searchAbort?.abort();
241
+ this._events.abort();
230
242
  this.menu.destroy();
231
243
  this.isOpen = false;
232
244
  this._removeMenu();
245
+ for (const name of ["role", "aria-autocomplete", "aria-controls", "data-target", "aria-haspopup", "aria-expanded", "aria-activedescendant"]) {
246
+ this.el.removeAttribute(name);
247
+ }
233
248
  this._statusInfo.remove();
234
249
  this._announcer.remove();
235
- this.el["Expressive_Autocomplete"] = void 0;
250
+ super.destroy();
236
251
  }
237
252
  _setupEventHandlers() {
238
- this.el.addEventListener("blur", this._handleInputBlur);
239
- this.el.addEventListener("input", this._handleInput);
240
- this.el.addEventListener("keyup", this._handleInputKeyup);
241
- this.el.addEventListener("focus", this._handleInputFocus);
242
- this.el.addEventListener("keydown", this._handleInputKeydown);
243
- this.el.addEventListener("click", this._handleInputClick);
244
- this.container.addEventListener("pointerdown", this._handleContainerPointerDown);
245
- this.container.addEventListener("pointerup", this._handleContainerPointerUp);
246
- this.container.addEventListener("pointercancel", this._handleContainerPointerUp);
247
- }
248
- _removeEventHandlers() {
249
- this.el.removeEventListener("blur", this._handleInputBlur);
250
- this.el.removeEventListener("input", this._handleInput);
251
- this.el.removeEventListener("keyup", this._handleInputKeyup);
252
- this.el.removeEventListener("focus", this._handleInputFocus);
253
- this.el.removeEventListener("keydown", this._handleInputKeydown);
254
- this.el.removeEventListener("click", this._handleInputClick);
255
- this.container.removeEventListener("pointerdown", this._handleContainerPointerDown);
256
- this.container.removeEventListener("pointerup", this._handleContainerPointerUp);
257
- this.container.removeEventListener("pointercancel", this._handleContainerPointerUp);
253
+ const { signal } = this._events;
254
+ this.el.addEventListener("blur", this._handleInputBlur, { signal });
255
+ this.el.addEventListener("input", this._handleInput, { signal });
256
+ this.el.addEventListener("keyup", this._handleInputKeyup, { signal });
257
+ this.el.addEventListener("focus", this._handleInputFocus, { signal });
258
+ this.el.addEventListener("keydown", this._handleInputKeydown, { signal });
259
+ this.el.addEventListener("click", this._handleInputClick, { signal });
260
+ this.container.addEventListener("pointerdown", this._handleContainerPointerDown, { signal });
261
+ this.container.addEventListener("pointerup", this._handleContainerPointerUp, { signal });
262
+ this.container.addEventListener("pointercancel", this._handleContainerPointerUp, { signal });
263
+ this.container.addEventListener("mousedown", this._handleInertRowPress, { capture: true, signal });
264
+ this.container.addEventListener("click", this._handleInertRowPress, { capture: true, signal });
258
265
  }
259
266
  _setupMenu() {
260
267
  this.container = document.createElement("menu");
@@ -289,8 +296,7 @@ var _Autocomplete = class _Autocomplete extends Component {
289
296
  const userOnItemClick = menuOptions.onItemClick;
290
297
  menuOptions.onItemClick = (li) => {
291
298
  if (!li) return;
292
- const entryID = li.getAttribute("data-id");
293
- this.selectOption(entryID);
299
+ this._choose(li);
294
300
  if (typeof userOnItemClick === "function") userOnItemClick.call(this.menu, li);
295
301
  };
296
302
  this.menu = Menu.init(this.el, menuOptions);
@@ -319,6 +325,39 @@ var _Autocomplete = class _Autocomplete extends Component {
319
325
  this.container.ariaExpanded = "false";
320
326
  this.container.parentNode.removeChild(this.container);
321
327
  }
328
+ /** Searches now, or once typing pauses for `searchDelay`. Focus never waits. */
329
+ _queueSearch(typed) {
330
+ this._cancelPendingSearch();
331
+ const delay = this.options.searchDelay;
332
+ if (!typed || !(delay > 0 && delay < Infinity)) return this._search(this.el.value);
333
+ this._searchAbort?.abort();
334
+ this._searchTimer = setTimeout(() => {
335
+ this._searchTimer = void 0;
336
+ this._search(this.el.value);
337
+ }, delay);
338
+ }
339
+ _cancelPendingSearch() {
340
+ clearTimeout(this._searchTimer);
341
+ this._searchTimer = void 0;
342
+ }
343
+ /** Starts a search and aborts the one before, whose response is now stale. */
344
+ _search(text) {
345
+ this._searchAbort?.abort();
346
+ this._searchAbort = new AbortController();
347
+ this.options.onSearch(text, this, this._searchAbort.signal);
348
+ }
349
+ _dismiss(e) {
350
+ if (e.key === "Escape") {
351
+ if (this.menu.isOpen || this._openTimer !== void 0) e.preventDefault();
352
+ this._left = true;
353
+ }
354
+ this.close();
355
+ this._resetCurrentElementPosition();
356
+ }
357
+ /** The rows that can be chosen. The no-results row and disabled rows are not. */
358
+ _options() {
359
+ return this.container.querySelectorAll('li[role="option"]:not([aria-disabled="true"])');
360
+ }
322
361
  _resetCurrentElementPosition() {
323
362
  this.activeIndex = -1;
324
363
  this._setActive(null);
@@ -344,6 +383,7 @@ var _Autocomplete = class _Autocomplete extends Component {
344
383
  const isSelected = this.selectedValues.some((sel) => sel.id === entry.id);
345
384
  item.setAttribute("aria-selected", isSelected ? "true" : "false");
346
385
  item.setAttribute("data-id", entry.id);
386
+ _Autocomplete._markDisabled(item, entry);
347
387
  item.setAttribute(
348
388
  "style",
349
389
  "display:grid; grid-auto-flow: column; user-select: none; align-items: center;"
@@ -357,6 +397,7 @@ var _Autocomplete = class _Autocomplete extends Component {
357
397
  checkbox.type = "checkbox";
358
398
  checkbox.tabIndex = -1;
359
399
  checkbox.checked = isSelected;
400
+ checkbox.disabled = entry.disabled === true;
360
401
  const spacer = document.createElement("span");
361
402
  spacer.style.paddingLeft = "21px";
362
403
  selection.append(checkbox, spacer);
@@ -368,35 +409,7 @@ var _Autocomplete = class _Autocomplete extends Component {
368
409
  img.src = entry.image;
369
410
  item.appendChild(img);
370
411
  }
371
- const inputText = this.el.value.toLocaleLowerCase();
372
- const label = (entry.text || entry.id).toString();
373
- const parts = this._highlightPartialText(inputText, label);
374
- const div = document.createElement("div");
375
- div.setAttribute("style", "line-height:1.2;font-weight:500;");
376
- if (this.options.allowUnsafeHTML) {
377
- div.innerHTML = label;
378
- const walker = document.createTreeWalker(div, NodeFilter.SHOW_TEXT);
379
- for (let node = walker.nextNode(); node; node = walker.nextNode()) {
380
- const [before, match] = this._highlightPartialText(inputText, node.data);
381
- if (!match) continue;
382
- const matched = node.splitText(before.length);
383
- matched.splitText(match.length);
384
- const highlight = document.createElement("span");
385
- highlight.classList.add("highlight");
386
- matched.replaceWith(highlight);
387
- highlight.append(matched);
388
- break;
389
- }
390
- } else {
391
- div.appendChild(document.createTextNode(parts[0]));
392
- if (parts[1]) {
393
- const highlight = document.createElement("span");
394
- highlight.textContent = parts[1];
395
- highlight.classList.add("highlight");
396
- div.appendChild(highlight);
397
- div.appendChild(document.createTextNode(parts[2]));
398
- }
399
- }
412
+ const div = this._createLabel(entry);
400
413
  const itemText = document.createElement("div");
401
414
  itemText.classList.add("item-text");
402
415
  itemText.setAttribute("style", "padding:5px;overflow:hidden;");
@@ -422,15 +435,118 @@ var _Autocomplete = class _Autocomplete extends Component {
422
435
  item.style.gridTemplateColumns = getGridConfig();
423
436
  return item;
424
437
  }
438
+ /** Menu already ignores a click on an aria-disabled row. */
439
+ static _markDisabled(item, entry) {
440
+ if (entry.disabled === true) item.setAttribute("aria-disabled", "true");
441
+ }
442
+ _createLabel(entry) {
443
+ const inputText = this.el.value.toLocaleLowerCase();
444
+ const label = (entry.text || entry.id).toString();
445
+ const div = document.createElement("div");
446
+ div.setAttribute("style", "line-height:1.2;font-weight:500;");
447
+ if (this.options.allowUnsafeHTML && entry.text) this._highlightHTML(div, label, inputText);
448
+ else this._highlightText(div, this._highlightPartialText(inputText, label));
449
+ return div;
450
+ }
451
+ _highlightHTML(div, label, inputText) {
452
+ div.innerHTML = label;
453
+ const walker = document.createTreeWalker(div, NodeFilter.SHOW_TEXT);
454
+ for (let node = walker.nextNode(); node; node = walker.nextNode()) {
455
+ const [before, match] = this._highlightPartialText(inputText, node.data);
456
+ if (!match) continue;
457
+ const matched = node.splitText(before.length);
458
+ matched.splitText(match.length);
459
+ const highlight = document.createElement("span");
460
+ highlight.classList.add("highlight");
461
+ matched.replaceWith(highlight);
462
+ highlight.append(matched);
463
+ break;
464
+ }
465
+ }
466
+ _highlightText(div, parts) {
467
+ div.appendChild(document.createTextNode(parts[0]));
468
+ if (parts[1]) {
469
+ const highlight = document.createElement("span");
470
+ highlight.textContent = parts[1];
471
+ highlight.classList.add("highlight");
472
+ div.appendChild(highlight);
473
+ div.appendChild(document.createTextNode(parts[2]));
474
+ }
475
+ }
425
476
  _renderMenu() {
426
477
  this._resetAutocomplete();
478
+ if (this._noResults) this.container.append(this._createNoResultsRow());
427
479
  if (this.menuItems.length === 0) {
428
480
  this.menuItems = this.selectedValues;
429
481
  }
430
- for (let i = 0; i < this.menuItems.length; i++) {
431
- const item = this._createMenuItem(this.menuItems[i]);
432
- this.container.append(item);
433
- }
482
+ const groups = /* @__PURE__ */ new Map();
483
+ this.menuItems.forEach((entry) => this._groupList(entry.group, groups).append(this._createMenuItem(entry)));
484
+ const createText = this._createText();
485
+ if (createText) this.container.append(this._createRow(createText));
486
+ }
487
+ /** The list a row goes in: the listbox, or its group's list, made where the group first appears. */
488
+ _groupList(name, groups) {
489
+ if (!name) return this.container;
490
+ if (!groups.has(name)) groups.set(name, this._createGroup(name));
491
+ return groups.get(name);
492
+ }
493
+ /**
494
+ * A labelled group of options, as the APG grouped listbox nests it. The
495
+ * heading is not an option, so the arrow keys and the count pass over it.
496
+ * Its name is set as text: only an entry's own `text` may be HTML.
497
+ */
498
+ _createGroup(name) {
499
+ const heading = document.createElement("li");
500
+ heading.id = `autocomplete-group-${Utils.guid()}`;
501
+ heading.setAttribute("role", "presentation");
502
+ heading.classList.add("label", "autocomplete-group-label");
503
+ heading.textContent = name;
504
+ const list = document.createElement("ul");
505
+ list.setAttribute("role", "group");
506
+ list.setAttribute("aria-labelledby", heading.id);
507
+ list.append(heading);
508
+ const wrapper = document.createElement("li");
509
+ wrapper.setAttribute("role", "none");
510
+ wrapper.append(list);
511
+ this.container.append(wrapper);
512
+ return list;
513
+ }
514
+ /** The typed text to offer as a new value, or '' when the option is off, the text is short or a suggestion matches it. */
515
+ _createText() {
516
+ const text = this.el.value.trim();
517
+ if (!this.options.allowCreate || text.length < this.options.minLength) return "";
518
+ const typed = text.toLocaleLowerCase();
519
+ return this.menuItems.some((entry) => (entry.text || String(entry.id)).toLocaleLowerCase() === typed) ? "" : text;
520
+ }
521
+ /** The "Add" row. Its label is what the person typed, so it is set as text, never as HTML. */
522
+ _createRow(text) {
523
+ const item = document.createElement("li");
524
+ item.id = `autocomplete-option-${Utils.guid()}`;
525
+ item.setAttribute("role", "option");
526
+ item.setAttribute("aria-selected", "false");
527
+ item.setAttribute("data-create", text);
528
+ item.classList.add("autocomplete-create");
529
+ item.setAttribute("style", "display:grid; user-select: none; align-items: center;");
530
+ item.tabIndex = -1;
531
+ const label = document.createElement("div");
532
+ label.classList.add("item-text");
533
+ label.setAttribute("style", "padding:5px;overflow:hidden;line-height:1.2;font-weight:500;");
534
+ label.textContent = this.options.i18n.create(text);
535
+ item.append(label);
536
+ return item;
537
+ }
538
+ /**
539
+ * Shows sighted users the `i18n.noResults` that the live region announces.
540
+ * Screen readers already hear that, and a listbox may only own options, so
541
+ * the row is hidden from them.
542
+ */
543
+ _createNoResultsRow() {
544
+ const row = document.createElement("li");
545
+ row.classList.add("autocomplete-no-results");
546
+ row.setAttribute("role", "none");
547
+ row.setAttribute("aria-hidden", "true");
548
+ row.textContent = this.options.i18n.noResults;
549
+ return row;
434
550
  }
435
551
  _setStatusLoading() {
436
552
  const statusElement = this._statusInfo;
@@ -442,7 +558,9 @@ var _Autocomplete = class _Autocomplete extends Component {
442
558
  const text = this.el.matches(":focus") && this.el.value.length >= this.options.minLength ? message : "";
443
559
  if (this._announcer.textContent !== text) this._announcer.textContent = text;
444
560
  }
445
- _resultsMessage(count) {
561
+ /** Announces the entries a person can choose. Disabled ones are shown, not counted. */
562
+ _resultsMessage() {
563
+ const count = this.menuItems.filter((entry) => entry.disabled !== true).length;
446
564
  return count ? this.options.i18n.results(count) : this.options.i18n.noResults;
447
565
  }
448
566
  _updateSelectedInfo() {
@@ -460,9 +578,11 @@ var _Autocomplete = class _Autocomplete extends Component {
460
578
  }
461
579
  }
462
580
  _triggerChanged() {
581
+ const values = this.selectedValues;
582
+ const selection = ++this._selection;
463
583
  this.el.dispatchEvent(new Event("change", { bubbles: true, cancelable: true, composed: true }));
464
- if (typeof this.options.onAutocomplete === "function")
465
- this.options.onAutocomplete.call(this, this.selectedValues);
584
+ if (selection !== this._selection) return;
585
+ this._notify("autocomplete", this.options.onAutocomplete, { args: [values], detail: { values }, current: () => selection === this._selection });
466
586
  }
467
587
  /**
468
588
  * Updates the visible or selectable items shown in the menu.
@@ -472,7 +592,8 @@ var _Autocomplete = class _Autocomplete extends Component {
472
592
  */
473
593
  setMenuItems(menuItems, selected = null, open = true) {
474
594
  if (this.el["Expressive_Autocomplete"] !== this) return;
475
- const resultCount = menuItems.length;
595
+ open && (open = !this._left);
596
+ this._noResults = menuItems.length === 0;
476
597
  this.menuItems = menuItems;
477
598
  if (selected) {
478
599
  this.selectedValues = this.menuItems.filter(
@@ -486,35 +607,60 @@ var _Autocomplete = class _Autocomplete extends Component {
486
607
  }
487
608
  if (open) this.open();
488
609
  this._updateSelectedInfo();
489
- this._announce(open ? this._resultsMessage(resultCount) : "");
610
+ this._announce(open ? this._resultsMessage() : "");
490
611
  if (selected) this._triggerChanged();
491
612
  }
613
+ _toggleOption(entry) {
614
+ const selected = !this.selectedValues.some((selectedEntry) => selectedEntry.id === entry.id);
615
+ if (selected) this.selectedValues.push(entry);
616
+ else this.selectedValues = this.selectedValues.filter((selectedEntry) => selectedEntry.id !== entry.id);
617
+ const row = Array.from(this.container.querySelectorAll("li[data-id]")).find((li) => li.getAttribute("data-id") === String(entry.id));
618
+ if (row) {
619
+ row.setAttribute("aria-selected", String(selected));
620
+ row.querySelector("input").checked = selected;
621
+ }
622
+ this.el.focus();
623
+ }
624
+ _selectSingle(entry) {
625
+ const refocus = Utils.focusIsIn(this.container);
626
+ this._cancelPendingSearch();
627
+ this.selectedValues = [entry];
628
+ this._refreshInputText();
629
+ this._resetAutocomplete();
630
+ this.close();
631
+ if (refocus) {
632
+ this.oldVal = this.el.value.toLocaleLowerCase();
633
+ this.el.focus();
634
+ }
635
+ }
636
+ /** Commits a row chosen by Enter or a click. */
637
+ _choose(li) {
638
+ if (li.hasAttribute("data-create")) this._create(li.getAttribute("data-create"));
639
+ else this.selectOption(li.getAttribute("data-id"));
640
+ }
641
+ _create(text) {
642
+ const refocus = Utils.focusIsIn(this.container);
643
+ this._cancelPendingSearch();
644
+ this.oldVal = this.el.value.toLocaleLowerCase();
645
+ this.close();
646
+ if (refocus) this.el.focus();
647
+ this._notify("create", this.options.onCreate, { args: [text, this], detail: { text } });
648
+ }
492
649
  /**
493
650
  * Select a specific autocomplete option via id-property.
494
651
  * @param id The id of a data-entry.
495
652
  */
496
653
  selectOption(id) {
497
- const entry = this.menuItems.find((item) => item.id == id);
654
+ const entry = this.menuItems.find((item) => item.id == id && item.disabled !== true);
498
655
  if (!entry) return;
499
- if (this.options.isMultiSelect) {
500
- if (!this.selectedValues.some((selectedEntry) => selectedEntry.id === entry.id))
501
- this.selectedValues.push(entry);
502
- else this.selectedValues = this.selectedValues.filter(
503
- (selectedEntry) => selectedEntry.id !== entry.id
504
- );
505
- this._renderMenu();
506
- this.el.focus();
507
- } else {
508
- this.selectedValues = [entry];
509
- this._refreshInputText();
510
- this._resetAutocomplete();
511
- this.close();
512
- }
656
+ if (this.options.isMultiSelect) this._toggleOption(entry);
657
+ else this._selectSingle(entry);
513
658
  this._updateSelectedInfo();
514
659
  if (this.options.isMultiSelect) this._announce(this.options.i18n.selected(this.selectedValues.length));
515
660
  this._triggerChanged();
516
661
  }
517
662
  };
663
+ _Autocomplete.key = "Expressive_Autocomplete";
518
664
  /**
519
665
  * The three-dot loading indicator, parsed once and cloned thereafter.
520
666
  *
@@ -528,4 +674,4 @@ var Autocomplete = _Autocomplete;
528
674
  export {
529
675
  Autocomplete
530
676
  };
531
- //# sourceMappingURL=chunk-ZX6M7SWO.mjs.map
677
+ //# sourceMappingURL=chunk-VGY4M57S.mjs.map