snice 4.14.0 → 4.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 (384) hide show
  1. package/adapters/react/doc.d.ts +1 -0
  2. package/adapters/react/doc.d.ts.map +1 -1
  3. package/adapters/react/doc.js +1 -1
  4. package/adapters/react/doc.js.map +1 -1
  5. package/adapters/react/doc.tsx +2 -1
  6. package/adapters/react/input.d.ts +3 -0
  7. package/adapters/react/input.d.ts.map +1 -1
  8. package/adapters/react/input.js +1 -1
  9. package/adapters/react/input.js.map +1 -1
  10. package/adapters/react/input.tsx +4 -1
  11. package/adapters/react/modal.d.ts +2 -0
  12. package/adapters/react/modal.d.ts.map +1 -1
  13. package/adapters/react/modal.js +1 -1
  14. package/adapters/react/modal.js.map +1 -1
  15. package/adapters/react/modal.tsx +3 -1
  16. package/dist/cdn/accordion/snice-accordion.js +1 -1
  17. package/dist/cdn/accordion/snice-accordion.min.js +1 -1
  18. package/dist/cdn/alert/snice-alert.js +1 -1
  19. package/dist/cdn/alert/snice-alert.min.js +1 -1
  20. package/dist/cdn/app-tiles/snice-app-tiles.js +1 -1
  21. package/dist/cdn/app-tiles/snice-app-tiles.min.js +1 -1
  22. package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
  23. package/dist/cdn/audio-recorder/snice-audio-recorder.min.js +1 -1
  24. package/dist/cdn/avatar/snice-avatar.js +1 -1
  25. package/dist/cdn/avatar/snice-avatar.min.js +1 -1
  26. package/dist/cdn/badge/snice-badge.js +1 -1
  27. package/dist/cdn/badge/snice-badge.min.js +1 -1
  28. package/dist/cdn/banner/snice-banner.js +1 -1
  29. package/dist/cdn/banner/snice-banner.min.js +1 -1
  30. package/dist/cdn/book/README.md +2 -2
  31. package/dist/cdn/book/snice-book.js +29 -8
  32. package/dist/cdn/book/snice-book.js.map +1 -1
  33. package/dist/cdn/book/snice-book.min.js +3 -3
  34. package/dist/cdn/book/snice-book.min.js.map +1 -1
  35. package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +1 -1
  36. package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js +1 -1
  37. package/dist/cdn/button/snice-button.js +1 -1
  38. package/dist/cdn/button/snice-button.min.js +1 -1
  39. package/dist/cdn/calendar/snice-calendar.js +1 -1
  40. package/dist/cdn/calendar/snice-calendar.min.js +1 -1
  41. package/dist/cdn/camera/snice-camera.js +1 -1
  42. package/dist/cdn/camera/snice-camera.min.js +1 -1
  43. package/dist/cdn/camera-annotate/snice-camera-annotate.js +1 -1
  44. package/dist/cdn/camera-annotate/snice-camera-annotate.min.js +1 -1
  45. package/dist/cdn/candlestick/snice-candlestick.js +1 -1
  46. package/dist/cdn/candlestick/snice-candlestick.min.js +1 -1
  47. package/dist/cdn/card/snice-card.js +1 -1
  48. package/dist/cdn/card/snice-card.min.js +1 -1
  49. package/dist/cdn/carousel/snice-carousel.js +1 -1
  50. package/dist/cdn/carousel/snice-carousel.min.js +1 -1
  51. package/dist/cdn/chart/snice-chart.js +1 -1
  52. package/dist/cdn/chart/snice-chart.min.js +1 -1
  53. package/dist/cdn/chat/snice-chat.js +1 -1
  54. package/dist/cdn/chat/snice-chat.min.js +1 -1
  55. package/dist/cdn/checkbox/snice-checkbox.js +1 -1
  56. package/dist/cdn/checkbox/snice-checkbox.min.js +1 -1
  57. package/dist/cdn/chip/snice-chip.js +1 -1
  58. package/dist/cdn/chip/snice-chip.min.js +1 -1
  59. package/dist/cdn/code-block/snice-code-block.js +4 -4
  60. package/dist/cdn/code-block/snice-code-block.js.map +1 -1
  61. package/dist/cdn/code-block/snice-code-block.min.js +2 -2
  62. package/dist/cdn/code-block/snice-code-block.min.js.map +1 -1
  63. package/dist/cdn/color-display/snice-color-display.js +1 -1
  64. package/dist/cdn/color-display/snice-color-display.min.js +1 -1
  65. package/dist/cdn/color-picker/snice-color-picker.js +1 -1
  66. package/dist/cdn/color-picker/snice-color-picker.min.js +1 -1
  67. package/dist/cdn/command-palette/snice-command-palette.js +1 -1
  68. package/dist/cdn/command-palette/snice-command-palette.min.js +1 -1
  69. package/dist/cdn/comments/snice-comments.js +1 -1
  70. package/dist/cdn/comments/snice-comments.min.js +1 -1
  71. package/dist/cdn/countdown/snice-countdown.js +1 -1
  72. package/dist/cdn/countdown/snice-countdown.min.js +1 -1
  73. package/dist/cdn/cropper/snice-cropper.js +1 -1
  74. package/dist/cdn/cropper/snice-cropper.min.js +1 -1
  75. package/dist/cdn/date-picker/README.md +1 -1
  76. package/dist/cdn/date-picker/snice-date-picker.js +49 -39
  77. package/dist/cdn/date-picker/snice-date-picker.js.map +1 -1
  78. package/dist/cdn/date-picker/snice-date-picker.min.js +4 -4
  79. package/dist/cdn/date-picker/snice-date-picker.min.js.map +1 -1
  80. package/dist/cdn/diff/snice-diff.js +1 -1
  81. package/dist/cdn/diff/snice-diff.min.js +1 -1
  82. package/dist/cdn/divider/snice-divider.js +1 -1
  83. package/dist/cdn/divider/snice-divider.min.js +1 -1
  84. package/dist/cdn/doc/README.md +2 -2
  85. package/dist/cdn/doc/snice-doc.js +221 -35
  86. package/dist/cdn/doc/snice-doc.js.map +1 -1
  87. package/dist/cdn/doc/snice-doc.min.js +2 -2
  88. package/dist/cdn/doc/snice-doc.min.js.map +1 -1
  89. package/dist/cdn/draw/snice-draw.js +1 -1
  90. package/dist/cdn/draw/snice-draw.min.js +1 -1
  91. package/dist/cdn/drawer/snice-drawer.js +1 -1
  92. package/dist/cdn/drawer/snice-drawer.min.js +1 -1
  93. package/dist/cdn/empty-state/snice-empty-state.js +1 -1
  94. package/dist/cdn/empty-state/snice-empty-state.min.js +1 -1
  95. package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
  96. package/dist/cdn/file-gallery/snice-file-gallery.min.js +1 -1
  97. package/dist/cdn/file-upload/snice-file-upload.js +1 -1
  98. package/dist/cdn/file-upload/snice-file-upload.min.js +1 -1
  99. package/dist/cdn/flip-card/snice-flip-card.js +1 -1
  100. package/dist/cdn/flip-card/snice-flip-card.min.js +1 -1
  101. package/dist/cdn/flow/snice-flow.js +1 -1
  102. package/dist/cdn/flow/snice-flow.min.js +1 -1
  103. package/dist/cdn/funnel/snice-funnel.js +1 -1
  104. package/dist/cdn/funnel/snice-funnel.min.js +1 -1
  105. package/dist/cdn/gantt/snice-gantt.js +1 -1
  106. package/dist/cdn/gantt/snice-gantt.min.js +1 -1
  107. package/dist/cdn/gauge/snice-gauge.js +1 -1
  108. package/dist/cdn/gauge/snice-gauge.min.js +1 -1
  109. package/dist/cdn/heatmap/snice-heatmap.js +1 -1
  110. package/dist/cdn/heatmap/snice-heatmap.min.js +1 -1
  111. package/dist/cdn/image/snice-image.js +1 -1
  112. package/dist/cdn/image/snice-image.min.js +1 -1
  113. package/dist/cdn/input/README.md +2 -2
  114. package/dist/cdn/input/snice-input.js +21 -3
  115. package/dist/cdn/input/snice-input.js.map +1 -1
  116. package/dist/cdn/input/snice-input.min.js +3 -3
  117. package/dist/cdn/input/snice-input.min.js.map +1 -1
  118. package/dist/cdn/kanban/snice-kanban.js +1 -1
  119. package/dist/cdn/kanban/snice-kanban.min.js +1 -1
  120. package/dist/cdn/kpi/snice-kpi.js +1 -1
  121. package/dist/cdn/kpi/snice-kpi.min.js +1 -1
  122. package/dist/cdn/layout/snice-layout.js +1 -1
  123. package/dist/cdn/layout/snice-layout.min.js +1 -1
  124. package/dist/cdn/link/snice-link.js +1 -1
  125. package/dist/cdn/link/snice-link.min.js +1 -1
  126. package/dist/cdn/link-preview/snice-link-preview.js +2 -2
  127. package/dist/cdn/link-preview/snice-link-preview.js.map +1 -1
  128. package/dist/cdn/link-preview/snice-link-preview.min.js +2 -2
  129. package/dist/cdn/link-preview/snice-link-preview.min.js.map +1 -1
  130. package/dist/cdn/list/snice-list.js +4 -4
  131. package/dist/cdn/list/snice-list.js.map +1 -1
  132. package/dist/cdn/list/snice-list.min.js +2 -2
  133. package/dist/cdn/list/snice-list.min.js.map +1 -1
  134. package/dist/cdn/location/snice-location.js +1 -1
  135. package/dist/cdn/location/snice-location.min.js +1 -1
  136. package/dist/cdn/login/snice-login.js +1 -1
  137. package/dist/cdn/login/snice-login.min.js +1 -1
  138. package/dist/cdn/map/snice-map.js +1 -1
  139. package/dist/cdn/map/snice-map.min.js +1 -1
  140. package/dist/cdn/markdown/snice-markdown.js +1 -1
  141. package/dist/cdn/markdown/snice-markdown.min.js +1 -1
  142. package/dist/cdn/masonry/snice-masonry.js +1 -1
  143. package/dist/cdn/masonry/snice-masonry.min.js +1 -1
  144. package/dist/cdn/menu/snice-menu.js +2 -2
  145. package/dist/cdn/menu/snice-menu.js.map +1 -1
  146. package/dist/cdn/menu/snice-menu.min.js +2 -2
  147. package/dist/cdn/menu/snice-menu.min.js.map +1 -1
  148. package/dist/cdn/modal/README.md +2 -2
  149. package/dist/cdn/modal/snice-modal.js +34 -18
  150. package/dist/cdn/modal/snice-modal.js.map +1 -1
  151. package/dist/cdn/modal/snice-modal.min.js +24 -20
  152. package/dist/cdn/modal/snice-modal.min.js.map +1 -1
  153. package/dist/cdn/music-player/README.md +2 -2
  154. package/dist/cdn/music-player/snice-music-player.js +8 -1
  155. package/dist/cdn/music-player/snice-music-player.js.map +1 -1
  156. package/dist/cdn/music-player/snice-music-player.min.js +3 -3
  157. package/dist/cdn/music-player/snice-music-player.min.js.map +1 -1
  158. package/dist/cdn/nav/snice-nav.js +1 -1
  159. package/dist/cdn/nav/snice-nav.min.js +1 -1
  160. package/dist/cdn/network-graph/snice-network-graph.js +1 -1
  161. package/dist/cdn/network-graph/snice-network-graph.min.js +1 -1
  162. package/dist/cdn/notification-center/snice-notification-center.js +1 -1
  163. package/dist/cdn/notification-center/snice-notification-center.min.js +1 -1
  164. package/dist/cdn/org-chart/snice-org-chart.js +1 -1
  165. package/dist/cdn/org-chart/snice-org-chart.min.js +1 -1
  166. package/dist/cdn/pagination/snice-pagination.js +1 -1
  167. package/dist/cdn/pagination/snice-pagination.min.js +1 -1
  168. package/dist/cdn/paint/snice-paint.js +1 -1
  169. package/dist/cdn/paint/snice-paint.min.js +1 -1
  170. package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +1 -1
  171. package/dist/cdn/pdf-viewer/snice-pdf-viewer.min.js +1 -1
  172. package/dist/cdn/podcast-player/snice-podcast-player.js +1 -1
  173. package/dist/cdn/podcast-player/snice-podcast-player.min.js +1 -1
  174. package/dist/cdn/pricing-table/snice-pricing-table.js +1 -1
  175. package/dist/cdn/pricing-table/snice-pricing-table.min.js +1 -1
  176. package/dist/cdn/progress/snice-progress.js +1 -1
  177. package/dist/cdn/progress/snice-progress.min.js +1 -1
  178. package/dist/cdn/qr-code/snice-qr-code.js +1 -1
  179. package/dist/cdn/qr-code/snice-qr-code.min.js +1 -1
  180. package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
  181. package/dist/cdn/qr-reader/snice-qr-reader.min.js +1 -1
  182. package/dist/cdn/radio/README.md +2 -2
  183. package/dist/cdn/radio/snice-radio.js +23 -3
  184. package/dist/cdn/radio/snice-radio.js.map +1 -1
  185. package/dist/cdn/radio/snice-radio.min.js +3 -3
  186. package/dist/cdn/radio/snice-radio.min.js.map +1 -1
  187. package/dist/cdn/rating/snice-rating.js +1 -1
  188. package/dist/cdn/rating/snice-rating.min.js +1 -1
  189. package/dist/cdn/recipe/snice-recipe.js +1 -1
  190. package/dist/cdn/recipe/snice-recipe.min.js +1 -1
  191. package/dist/cdn/runtime/README.md +2 -2
  192. package/dist/cdn/runtime/snice-runtime.esm.js +513 -46
  193. package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
  194. package/dist/cdn/runtime/snice-runtime.esm.min.js +6 -6
  195. package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
  196. package/dist/cdn/runtime/snice-runtime.js +6420 -5951
  197. package/dist/cdn/runtime/snice-runtime.js.map +1 -1
  198. package/dist/cdn/runtime/snice-runtime.min.js +18 -18
  199. package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
  200. package/dist/cdn/sankey/snice-sankey.js +1 -1
  201. package/dist/cdn/sankey/snice-sankey.min.js +1 -1
  202. package/dist/cdn/select/README.md +2 -2
  203. package/dist/cdn/select/snice-select.js +46 -92
  204. package/dist/cdn/select/snice-select.js.map +1 -1
  205. package/dist/cdn/select/snice-select.min.js +5 -13
  206. package/dist/cdn/select/snice-select.min.js.map +1 -1
  207. package/dist/cdn/skeleton/snice-skeleton.js +1 -1
  208. package/dist/cdn/skeleton/snice-skeleton.min.js +1 -1
  209. package/dist/cdn/slider/snice-slider.js +1 -1
  210. package/dist/cdn/slider/snice-slider.min.js +1 -1
  211. package/dist/cdn/sortable/snice-sortable.js +1 -1
  212. package/dist/cdn/sortable/snice-sortable.min.js +1 -1
  213. package/dist/cdn/sparkline/snice-sparkline.js +1 -1
  214. package/dist/cdn/sparkline/snice-sparkline.min.js +1 -1
  215. package/dist/cdn/spinner/snice-spinner.js +1 -1
  216. package/dist/cdn/spinner/snice-spinner.min.js +1 -1
  217. package/dist/cdn/split-pane/snice-split-pane.js +1 -1
  218. package/dist/cdn/split-pane/snice-split-pane.min.js +1 -1
  219. package/dist/cdn/spotlight/snice-spotlight.js +1 -1
  220. package/dist/cdn/spotlight/snice-spotlight.min.js +1 -1
  221. package/dist/cdn/spreadsheet/snice-spreadsheet.js +1 -1
  222. package/dist/cdn/spreadsheet/snice-spreadsheet.min.js +1 -1
  223. package/dist/cdn/stepper/snice-stepper.js +1 -1
  224. package/dist/cdn/stepper/snice-stepper.min.js +1 -1
  225. package/dist/cdn/switch/README.md +1 -1
  226. package/dist/cdn/switch/snice-switch.js +33 -23
  227. package/dist/cdn/switch/snice-switch.js.map +1 -1
  228. package/dist/cdn/switch/snice-switch.min.js +3 -3
  229. package/dist/cdn/switch/snice-switch.min.js.map +1 -1
  230. package/dist/cdn/table/README.md +2 -2
  231. package/dist/cdn/table/snice-table.js +2876 -111
  232. package/dist/cdn/table/snice-table.js.map +1 -1
  233. package/dist/cdn/table/snice-table.min.js +187 -47
  234. package/dist/cdn/table/snice-table.min.js.map +1 -1
  235. package/dist/cdn/tabs/snice-tabs.js +1 -1
  236. package/dist/cdn/tabs/snice-tabs.min.js +1 -1
  237. package/dist/cdn/tag-input/snice-tag-input.js +1 -1
  238. package/dist/cdn/tag-input/snice-tag-input.min.js +1 -1
  239. package/dist/cdn/terminal/snice-terminal.js +1 -1
  240. package/dist/cdn/terminal/snice-terminal.min.js +1 -1
  241. package/dist/cdn/testimonial/snice-testimonial.js +1 -1
  242. package/dist/cdn/testimonial/snice-testimonial.min.js +1 -1
  243. package/dist/cdn/textarea/snice-textarea.js +1 -1
  244. package/dist/cdn/textarea/snice-textarea.min.js +1 -1
  245. package/dist/cdn/time-range-picker/snice-time-range-picker.js +1 -1
  246. package/dist/cdn/time-range-picker/snice-time-range-picker.min.js +1 -1
  247. package/dist/cdn/timeline/snice-timeline.js +1 -1
  248. package/dist/cdn/timeline/snice-timeline.min.js +1 -1
  249. package/dist/cdn/timer/snice-timer.js +1 -1
  250. package/dist/cdn/timer/snice-timer.min.js +1 -1
  251. package/dist/cdn/toast/README.md +1 -1
  252. package/dist/cdn/toast/snice-toast.js +3 -3
  253. package/dist/cdn/toast/snice-toast.js.map +1 -1
  254. package/dist/cdn/toast/snice-toast.min.js +2 -2
  255. package/dist/cdn/toast/snice-toast.min.js.map +1 -1
  256. package/dist/cdn/tooltip/snice-tooltip.js +1 -1
  257. package/dist/cdn/tooltip/snice-tooltip.min.js +1 -1
  258. package/dist/cdn/tree/snice-tree.js +1 -1
  259. package/dist/cdn/tree/snice-tree.min.js +1 -1
  260. package/dist/cdn/treemap/snice-treemap.js +1 -1
  261. package/dist/cdn/treemap/snice-treemap.min.js +1 -1
  262. package/dist/cdn/video-player/snice-video-player.js +1 -1
  263. package/dist/cdn/video-player/snice-video-player.min.js +1 -1
  264. package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +1 -1
  265. package/dist/cdn/virtual-scroller/snice-virtual-scroller.min.js +1 -1
  266. package/dist/cdn/waterfall/snice-waterfall.js +1 -1
  267. package/dist/cdn/waterfall/snice-waterfall.min.js +1 -1
  268. package/dist/cdn/weather/snice-weather.js +1 -1
  269. package/dist/cdn/weather/snice-weather.min.js +1 -1
  270. package/dist/components/book/snice-book.d.ts +2 -0
  271. package/dist/components/book/snice-book.js +28 -7
  272. package/dist/components/book/snice-book.js.map +1 -1
  273. package/dist/components/book/snice-book.types.d.ts +7 -0
  274. package/dist/components/code-block/snice-code-block.js +3 -3
  275. package/dist/components/code-block/snice-code-block.js.map +1 -1
  276. package/dist/components/code-block/snice-code-block.types.d.ts +3 -3
  277. package/dist/components/date-picker/snice-date-picker.d.ts +2 -0
  278. package/dist/components/date-picker/snice-date-picker.js +49 -39
  279. package/dist/components/date-picker/snice-date-picker.js.map +1 -1
  280. package/dist/components/doc/snice-doc.d.ts +20 -0
  281. package/dist/components/doc/snice-doc.js +220 -34
  282. package/dist/components/doc/snice-doc.js.map +1 -1
  283. package/dist/components/input/snice-input.d.ts +3 -0
  284. package/dist/components/input/snice-input.js +20 -2
  285. package/dist/components/input/snice-input.js.map +1 -1
  286. package/dist/components/input/snice-input.types.d.ts +3 -0
  287. package/dist/components/link-preview/snice-link-preview.js +1 -1
  288. package/dist/components/link-preview/snice-link-preview.js.map +1 -1
  289. package/dist/components/list/snice-list.js +3 -3
  290. package/dist/components/list/snice-list.js.map +1 -1
  291. package/dist/components/menu/snice-menu.js +1 -1
  292. package/dist/components/menu/snice-menu.js.map +1 -1
  293. package/dist/components/modal/snice-modal.d.ts +2 -0
  294. package/dist/components/modal/snice-modal.js +33 -17
  295. package/dist/components/modal/snice-modal.js.map +1 -1
  296. package/dist/components/modal/snice-modal.types.d.ts +2 -0
  297. package/dist/components/music-player/snice-music-player.d.ts +1 -0
  298. package/dist/components/music-player/snice-music-player.js +7 -0
  299. package/dist/components/music-player/snice-music-player.js.map +1 -1
  300. package/dist/components/notification-center/snice-notification-center.d.ts +1 -1
  301. package/dist/components/notification-center/snice-notification-center.js.map +1 -1
  302. package/dist/components/notification-center/snice-notification-center.types.d.ts +1 -0
  303. package/dist/components/radio/snice-radio.d.ts +1 -0
  304. package/dist/components/radio/snice-radio.js +22 -2
  305. package/dist/components/radio/snice-radio.js.map +1 -1
  306. package/dist/components/select/snice-select.d.ts +2 -4
  307. package/dist/components/select/snice-select.js +46 -92
  308. package/dist/components/select/snice-select.js.map +1 -1
  309. package/dist/components/switch/snice-switch.d.ts +2 -0
  310. package/dist/components/switch/snice-switch.js +32 -22
  311. package/dist/components/switch/snice-switch.js.map +1 -1
  312. package/dist/components/table/snice-table.d.ts +2 -0
  313. package/dist/components/table/snice-table.js +17 -3
  314. package/dist/components/table/snice-table.js.map +1 -1
  315. package/dist/components/toast/snice-toast-container.js +2 -2
  316. package/dist/components/toast/snice-toast-container.js.map +1 -1
  317. package/dist/index.cjs +512 -43
  318. package/dist/index.cjs.map +1 -1
  319. package/dist/index.d.ts +1 -0
  320. package/dist/index.esm.js +511 -44
  321. package/dist/index.esm.js.map +1 -1
  322. package/dist/index.iife.js +512 -43
  323. package/dist/index.iife.js.map +1 -1
  324. package/dist/symbols.cjs +1 -1
  325. package/dist/symbols.esm.js +1 -1
  326. package/dist/tooltip-observer.d.ts +11 -0
  327. package/dist/transitions.cjs +1 -1
  328. package/dist/transitions.esm.js +1 -1
  329. package/docs/ai/DEVELOPMENT.md +1 -1
  330. package/docs/ai/api.md +14 -10
  331. package/docs/ai/architecture.md +18 -5
  332. package/docs/ai/components/app-tiles.md +1 -1
  333. package/docs/ai/components/book.md +5 -6
  334. package/docs/ai/components/camera-annotate.md +3 -3
  335. package/docs/ai/components/candlestick.md +3 -3
  336. package/docs/ai/components/chart.md +1 -1
  337. package/docs/ai/components/code-block.md +3 -3
  338. package/docs/ai/components/doc.md +26 -15
  339. package/docs/ai/components/file-gallery.md +1 -1
  340. package/docs/ai/components/input.md +10 -0
  341. package/docs/ai/components/link-preview.md +1 -1
  342. package/docs/ai/components/list.md +2 -2
  343. package/docs/ai/components/markdown.md +13 -6
  344. package/docs/ai/components/modal.md +2 -0
  345. package/docs/ai/components/music-player.md +3 -2
  346. package/docs/ai/components/network-graph.md +5 -5
  347. package/docs/ai/components/notification-center.md +1 -0
  348. package/docs/ai/components/pdf-viewer.md +1 -1
  349. package/docs/ai/components/radio.md +2 -2
  350. package/docs/ai/components/sankey.md +3 -3
  351. package/docs/ai/components/select.md +1 -1
  352. package/docs/ai/components/tooltip.md +54 -0
  353. package/docs/ai/decorators.md +4 -4
  354. package/docs/code-block.md +4 -4
  355. package/docs/components/app-tiles.md +1 -1
  356. package/docs/components/book.md +3 -4
  357. package/docs/components/button.md +2 -2
  358. package/docs/components/camera-annotate.md +6 -6
  359. package/docs/components/candlestick.md +6 -6
  360. package/docs/components/chart.md +4 -6
  361. package/docs/components/checkbox.md +3 -3
  362. package/docs/components/chip.md +4 -4
  363. package/docs/components/code-block.md +4 -3
  364. package/docs/components/doc.md +99 -58
  365. package/docs/components/file-gallery.md +25 -3
  366. package/docs/components/input.md +20 -0
  367. package/docs/components/kpi.md +2 -3
  368. package/docs/components/link-preview.md +2 -2
  369. package/docs/components/list.md +3 -3
  370. package/docs/components/markdown.md +14 -36
  371. package/docs/components/modal.md +2 -0
  372. package/docs/components/music-player.md +3 -2
  373. package/docs/components/network-graph.md +7 -7
  374. package/docs/components/notification-center.md +1 -0
  375. package/docs/components/pdf-viewer.md +1 -1
  376. package/docs/components/sankey.md +6 -6
  377. package/docs/components/switch.md +1 -1
  378. package/docs/components/table.md +2 -2
  379. package/docs/components/tooltip.md +133 -0
  380. package/docs/controllers.md +3 -14
  381. package/docs/elements.md +0 -1
  382. package/docs/events.md +3 -0
  383. package/docs/request-response.md +2 -0
  384. package/package.json +1 -1
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * snice v4.13.0
2
+ * snice v4.15.0
3
3
  * Imperative TypeScript framework for building vanilla web components with decorators, differential rendering, routing, and controllers. No virtual DOM, no build complexity.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
6
6
  */
7
- void 0===globalThis.Snice&&console.warn("[snice] snice-runtime.min.js must be loaded before snice-select.min.js"),function(e){"use strict";function t(e,t,i,s,a,n){function l(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var r,o=s.kind,c="getter"===o?"get":"setter"===o?"set":"value",d=!t&&e?s.static?e:e.prototype:null,h=t||(d?Object.getOwnPropertyDescriptor(d,s.name):{}),p=!1,u=i.length-1;u>=0;u--){var g={};for(var v in s)g[v]="access"===v?{}:s[v];for(var v in s.access)g.access[v]=s.access[v];g.addInitializer=function(e){if(p)throw new TypeError("Cannot add initializers after decoration has completed");n.push(l(e||null))};var m=(0,i[u])("accessor"===o?{get:h.get,set:h.set}:h[c],g);if("accessor"===o){if(void 0===m)continue;if(null===m||"object"!=typeof m)throw new TypeError("Object expected");(r=l(m.get))&&(h.get=r),(r=l(m.set))&&(h.set=r),(r=l(m.init))&&a.unshift(r)}else(r=l(m))&&("field"===o?a.unshift(r):h[c]=r)}d&&Object.defineProperty(d,s.name,h),p=!0}function i(e,t,i){for(var s=arguments.length>2,a=0;a<t.length;a++)i=s?t[a].call(e,i):t[a].call(e);return s?i:void 0}"function"==typeof SuppressedError&&SuppressedError,(()=>{let s,a,n,l,r,o,c,d,h,p,u=[e.element("snice-option")],g=[],v=HTMLElement,m=[],b=[],f=[],y=[],w=[],k=[],x=[],C=[],S=[],O=[],D=[];(class extends v{static{a=this}static{const L="function"==typeof Symbol&&Symbol.metadata?Object.create(v[Symbol.metadata]??null):void 0;n=[e.property({})],l=[e.property({})],r=[e.property({type:Boolean})],o=[e.property({type:Boolean})],c=[e.property({})],d=[e.render()],h=[e.styles()],p=[e.ready()],t(this,null,d,{kind:"method",name:"render",static:!1,private:!1,access:{has:e=>"render"in e,get:e=>e.render},metadata:L},null,m),t(this,null,h,{kind:"method",name:"styles",static:!1,private:!1,access:{has:e=>"styles"in e,get:e=>e.styles},metadata:L},null,m),t(this,null,p,{kind:"method",name:"init",static:!1,private:!1,access:{has:e=>"init"in e,get:e=>e.init},metadata:L},null,m),t(null,null,n,{kind:"field",name:"value",static:!1,private:!1,access:{has:e=>"value"in e,get:e=>e.value,set:(e,t)=>{e.value=t}},metadata:L},b,f),t(null,null,l,{kind:"field",name:"label",static:!1,private:!1,access:{has:e=>"label"in e,get:e=>e.label,set:(e,t)=>{e.label=t}},metadata:L},y,w),t(null,null,r,{kind:"field",name:"disabled",static:!1,private:!1,access:{has:e=>"disabled"in e,get:e=>e.disabled,set:(e,t)=>{e.disabled=t}},metadata:L},k,x),t(null,null,o,{kind:"field",name:"selected",static:!1,private:!1,access:{has:e=>"selected"in e,get:e=>e.selected,set:(e,t)=>{e.selected=t}},metadata:L},C,S),t(null,null,c,{kind:"field",name:"icon",static:!1,private:!1,access:{has:e=>"icon"in e,get:e=>e.icon,set:(e,t)=>{e.icon=t}},metadata:L},O,D),t(null,s={value:a},u,{kind:"class",name:a.name,metadata:L},null,g),a=s.value,L&&Object.defineProperty(a,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:L}),i(a,g)}render(){return e.html``}styles(){return e.css`:host { display: none; }`}init(){!this.label&&this.textContent&&(this.label=this.textContent.trim()),!this.value&&this.label&&(this.value=this.label)}get optionData(){return{value:this.value,label:this.label||this.textContent?.trim()||this.value,disabled:this.disabled,selected:this.selected,icon:this.icon}}constructor(){super(...arguments),this.value=(i(this,m),i(this,b,"")),this.label=(i(this,f),i(this,y,"")),this.disabled=(i(this,w),i(this,k,!1)),this.selected=(i(this,x),i(this,C,!1)),this.icon=(i(this,S),i(this,O,"")),i(this,D)}})})();(()=>{let s,a,n,l,r,o,c,d,h,p,u,g,v,m,b,f,y,w,k,x,C,S,O,D,L,E,$,I,z,A,B,V,N,q,T,H,j,P,F,M,K=[e.element("snice-select")],Y=[],G=HTMLElement,U=[],R=[],Z=[],J=[],Q=[],W=[],X=[],_=[],ee=[],te=[],ie=[],se=[],ae=[],ne=[],le=[],re=[],oe=[],ce=[],de=[],he=[],pe=[],ue=[],ge=[],ve=[],me=[],be=[],fe=[],ye=[],we=[],ke=[],xe=[],Ce=[],Se=[],Oe=[],De=[],Le=[],Ee=[],$e=[],Ie=[],ze=[],Ae=[],Be=[],Ve=[],Ne=[],qe=[],Te=[],He=[],je=[],Pe=[],Fe=[],Me=[],Ke=[],Ye=[];(class extends G{static{a=this}constructor(){super(...arguments),this.disabled=(i(this,U),i(this,R,!1)),this.required=(i(this,Z),i(this,J,!1)),this.invalid=(i(this,Q),i(this,W,!1)),this.readonly=(i(this,X),i(this,_,!1)),this.loading=(i(this,ee),i(this,te,!1)),this.multiple=(i(this,ie),i(this,se,!1)),this.searchable=(i(this,ae),i(this,ne,!1)),this.clearable=(i(this,le),i(this,re,!1)),this.open=(i(this,oe),i(this,ce,!1)),this.size=(i(this,de),i(this,he,"medium")),this.name=(i(this,pe),i(this,ue,"")),this.value=(i(this,ge),i(this,ve,"")),this.label=(i(this,me),i(this,be,"")),this.placeholder=(i(this,fe),i(this,ye,"Select an option")),this.maxHeight=(i(this,we),i(this,ke,"200px")),this.options=(i(this,xe),[]),this.trigger=i(this,Ce,void 0),this.dropdown=(i(this,Se),i(this,Oe,void 0)),this.valueDisplay=(i(this,De),i(this,Le,void 0)),this.labelElement=(i(this,Ee),i(this,$e,void 0)),this.searchInput=(i(this,Ie),i(this,ze,void 0)),this.optionsList=(i(this,Ae),i(this,Be,void 0)),this.nativeSelect=(i(this,Ve),i(this,Ne,void 0)),this.clearButton=(i(this,qe),i(this,Te,void 0)),this.arrow=(i(this,He),i(this,je,void 0)),this.searchContainer=(i(this,Pe),i(this,Fe,void 0)),this.optionElements=(i(this,Me),i(this,Ke,void 0)),this.filteredOptions=(i(this,Ye),[]),this.selectedValues=new Set,this.focusedIndex=-1}static{const Ge="function"==typeof Symbol&&Symbol.metadata?Object.create(G[Symbol.metadata]??null):void 0;n=[e.property({type:Boolean})],l=[e.property({type:Boolean})],r=[e.property({type:Boolean})],o=[e.property({type:Boolean})],c=[e.property({type:Boolean})],d=[e.property({type:Boolean})],h=[e.property({type:Boolean})],p=[e.property({type:Boolean})],u=[e.property({type:Boolean})],g=[e.property({})],v=[e.property({})],m=[e.property({})],b=[e.property({})],f=[e.property({})],y=[e.property({attribute:"max-height"})],w=[e.query(".select-trigger")],k=[e.query(".select-dropdown")],x=[e.query(".select-value")],C=[e.query(".select-label")],S=[e.query(".select-search-input")],O=[e.query(".select-options")],D=[e.query(".select-native")],L=[e.query(".select-clear")],E=[e.query(".select-arrow")],$=[e.query(".select-search")],I=[e.queryAll(".select-option")],z=[e.render()],A=[e.styles()],B=[e.ready()],V=[e.dispose()],N=[e.watch("value")],q=[e.watch("disabled")],T=[e.watch("loading")],H=[e.watch("open")],j=[e.watch("multiple","name")],P=[e.dispatch("select-change",{bubbles:!0,composed:!0})],F=[e.dispatch("select-open",{bubbles:!0,composed:!0})],M=[e.dispatch("select-close",{bubbles:!0,composed:!0})],t(this,null,z,{kind:"method",name:"render",static:!1,private:!1,access:{has:e=>"render"in e,get:e=>e.render},metadata:Ge},null,U),t(this,null,A,{kind:"method",name:"styles",static:!1,private:!1,access:{has:e=>"styles"in e,get:e=>e.styles},metadata:Ge},null,U),t(this,null,B,{kind:"method",name:"init",static:!1,private:!1,access:{has:e=>"init"in e,get:e=>e.init},metadata:Ge},null,U),t(this,null,V,{kind:"method",name:"cleanup",static:!1,private:!1,access:{has:e=>"cleanup"in e,get:e=>e.cleanup},metadata:Ge},null,U),t(this,null,N,{kind:"method",name:"handleValueChange",static:!1,private:!1,access:{has:e=>"handleValueChange"in e,get:e=>e.handleValueChange},metadata:Ge},null,U),t(this,null,q,{kind:"method",name:"handleDisabledChange",static:!1,private:!1,access:{has:e=>"handleDisabledChange"in e,get:e=>e.handleDisabledChange},metadata:Ge},null,U),t(this,null,T,{kind:"method",name:"handleLoadingChange",static:!1,private:!1,access:{has:e=>"handleLoadingChange"in e,get:e=>e.handleLoadingChange},metadata:Ge},null,U),t(this,null,H,{kind:"method",name:"handleOpenChange",static:!1,private:!1,access:{has:e=>"handleOpenChange"in e,get:e=>e.handleOpenChange},metadata:Ge},null,U),t(this,null,j,{kind:"method",name:"handleNativeSelectAttributeChange",static:!1,private:!1,access:{has:e=>"handleNativeSelectAttributeChange"in e,get:e=>e.handleNativeSelectAttributeChange},metadata:Ge},null,U),t(this,null,P,{kind:"method",name:"dispatchChangeEvent",static:!1,private:!1,access:{has:e=>"dispatchChangeEvent"in e,get:e=>e.dispatchChangeEvent},metadata:Ge},null,U),t(this,null,F,{kind:"method",name:"dispatchOpenEvent",static:!1,private:!1,access:{has:e=>"dispatchOpenEvent"in e,get:e=>e.dispatchOpenEvent},metadata:Ge},null,U),t(this,null,M,{kind:"method",name:"dispatchCloseEvent",static:!1,private:!1,access:{has:e=>"dispatchCloseEvent"in e,get:e=>e.dispatchCloseEvent},metadata:Ge},null,U),t(null,null,n,{kind:"field",name:"disabled",static:!1,private:!1,access:{has:e=>"disabled"in e,get:e=>e.disabled,set:(e,t)=>{e.disabled=t}},metadata:Ge},R,Z),t(null,null,l,{kind:"field",name:"required",static:!1,private:!1,access:{has:e=>"required"in e,get:e=>e.required,set:(e,t)=>{e.required=t}},metadata:Ge},J,Q),t(null,null,r,{kind:"field",name:"invalid",static:!1,private:!1,access:{has:e=>"invalid"in e,get:e=>e.invalid,set:(e,t)=>{e.invalid=t}},metadata:Ge},W,X),t(null,null,o,{kind:"field",name:"readonly",static:!1,private:!1,access:{has:e=>"readonly"in e,get:e=>e.readonly,set:(e,t)=>{e.readonly=t}},metadata:Ge},_,ee),t(null,null,c,{kind:"field",name:"loading",static:!1,private:!1,access:{has:e=>"loading"in e,get:e=>e.loading,set:(e,t)=>{e.loading=t}},metadata:Ge},te,ie),t(null,null,d,{kind:"field",name:"multiple",static:!1,private:!1,access:{has:e=>"multiple"in e,get:e=>e.multiple,set:(e,t)=>{e.multiple=t}},metadata:Ge},se,ae),t(null,null,h,{kind:"field",name:"searchable",static:!1,private:!1,access:{has:e=>"searchable"in e,get:e=>e.searchable,set:(e,t)=>{e.searchable=t}},metadata:Ge},ne,le),t(null,null,p,{kind:"field",name:"clearable",static:!1,private:!1,access:{has:e=>"clearable"in e,get:e=>e.clearable,set:(e,t)=>{e.clearable=t}},metadata:Ge},re,oe),t(null,null,u,{kind:"field",name:"open",static:!1,private:!1,access:{has:e=>"open"in e,get:e=>e.open,set:(e,t)=>{e.open=t}},metadata:Ge},ce,de),t(null,null,g,{kind:"field",name:"size",static:!1,private:!1,access:{has:e=>"size"in e,get:e=>e.size,set:(e,t)=>{e.size=t}},metadata:Ge},he,pe),t(null,null,v,{kind:"field",name:"name",static:!1,private:!1,access:{has:e=>"name"in e,get:e=>e.name,set:(e,t)=>{e.name=t}},metadata:Ge},ue,ge),t(null,null,m,{kind:"field",name:"value",static:!1,private:!1,access:{has:e=>"value"in e,get:e=>e.value,set:(e,t)=>{e.value=t}},metadata:Ge},ve,me),t(null,null,b,{kind:"field",name:"label",static:!1,private:!1,access:{has:e=>"label"in e,get:e=>e.label,set:(e,t)=>{e.label=t}},metadata:Ge},be,fe),t(null,null,f,{kind:"field",name:"placeholder",static:!1,private:!1,access:{has:e=>"placeholder"in e,get:e=>e.placeholder,set:(e,t)=>{e.placeholder=t}},metadata:Ge},ye,we),t(null,null,y,{kind:"field",name:"maxHeight",static:!1,private:!1,access:{has:e=>"maxHeight"in e,get:e=>e.maxHeight,set:(e,t)=>{e.maxHeight=t}},metadata:Ge},ke,xe),t(null,null,w,{kind:"field",name:"trigger",static:!1,private:!1,access:{has:e=>"trigger"in e,get:e=>e.trigger,set:(e,t)=>{e.trigger=t}},metadata:Ge},Ce,Se),t(null,null,k,{kind:"field",name:"dropdown",static:!1,private:!1,access:{has:e=>"dropdown"in e,get:e=>e.dropdown,set:(e,t)=>{e.dropdown=t}},metadata:Ge},Oe,De),t(null,null,x,{kind:"field",name:"valueDisplay",static:!1,private:!1,access:{has:e=>"valueDisplay"in e,get:e=>e.valueDisplay,set:(e,t)=>{e.valueDisplay=t}},metadata:Ge},Le,Ee),t(null,null,C,{kind:"field",name:"labelElement",static:!1,private:!1,access:{has:e=>"labelElement"in e,get:e=>e.labelElement,set:(e,t)=>{e.labelElement=t}},metadata:Ge},$e,Ie),t(null,null,S,{kind:"field",name:"searchInput",static:!1,private:!1,access:{has:e=>"searchInput"in e,get:e=>e.searchInput,set:(e,t)=>{e.searchInput=t}},metadata:Ge},ze,Ae),t(null,null,O,{kind:"field",name:"optionsList",static:!1,private:!1,access:{has:e=>"optionsList"in e,get:e=>e.optionsList,set:(e,t)=>{e.optionsList=t}},metadata:Ge},Be,Ve),t(null,null,D,{kind:"field",name:"nativeSelect",static:!1,private:!1,access:{has:e=>"nativeSelect"in e,get:e=>e.nativeSelect,set:(e,t)=>{e.nativeSelect=t}},metadata:Ge},Ne,qe),t(null,null,L,{kind:"field",name:"clearButton",static:!1,private:!1,access:{has:e=>"clearButton"in e,get:e=>e.clearButton,set:(e,t)=>{e.clearButton=t}},metadata:Ge},Te,He),t(null,null,E,{kind:"field",name:"arrow",static:!1,private:!1,access:{has:e=>"arrow"in e,get:e=>e.arrow,set:(e,t)=>{e.arrow=t}},metadata:Ge},je,Pe),t(null,null,$,{kind:"field",name:"searchContainer",static:!1,private:!1,access:{has:e=>"searchContainer"in e,get:e=>e.searchContainer,set:(e,t)=>{e.searchContainer=t}},metadata:Ge},Fe,Me),t(null,null,I,{kind:"field",name:"optionElements",static:!1,private:!1,access:{has:e=>"optionElements"in e,get:e=>e.optionElements,set:(e,t)=>{e.optionElements=t}},metadata:Ge},Ke,Ye),t(null,s={value:a},K,{kind:"class",name:a.name,metadata:Ge},null,Y),a=s.value,Ge&&Object.defineProperty(a,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:Ge}),i(a,Y)}render(){const t=`select-label select-label--${this.size} ${this.required?"select-label--required":""}`,i=`select-trigger select-trigger--${this.size} ${this.loading?"select-trigger--loading":""}`,s=!this.searchable;return e.html`
7
+ void 0===globalThis.Snice&&console.warn("[snice] snice-runtime.min.js must be loaded before snice-select.min.js"),function(e){"use strict";function t(e,t,s,i,a,n){function l(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var r,o=i.kind,c="getter"===o?"get":"setter"===o?"set":"value",d=!t&&e?i.static?e:e.prototype:null,h=t||(d?Object.getOwnPropertyDescriptor(d,i.name):{}),p=!1,u=s.length-1;u>=0;u--){var g={};for(var m in i)g[m]="access"===m?{}:i[m];for(var m in i.access)g.access[m]=i.access[m];g.addInitializer=function(e){if(p)throw new TypeError("Cannot add initializers after decoration has completed");n.push(l(e||null))};var v=(0,s[u])("accessor"===o?{get:h.get,set:h.set}:h[c],g);if("accessor"===o){if(void 0===v)continue;if(null===v||"object"!=typeof v)throw new TypeError("Object expected");(r=l(v.get))&&(h.get=r),(r=l(v.set))&&(h.set=r),(r=l(v.init))&&a.unshift(r)}else(r=l(v))&&("field"===o?a.unshift(r):h[c]=r)}d&&Object.defineProperty(d,i.name,h),p=!0}function s(e,t,s){for(var i=arguments.length>2,a=0;a<t.length;a++)s=i?t[a].call(e,s):t[a].call(e);return i?s:void 0}"function"==typeof SuppressedError&&SuppressedError,(()=>{let i,a,n,l,r,o,c,d,h,p,u=[e.element("snice-option")],g=[],m=HTMLElement,v=[],b=[],f=[],y=[],w=[],k=[],x=[],C=[],O=[],D=[],L=[];(class extends m{static{a=this}static{const E="function"==typeof Symbol&&Symbol.metadata?Object.create(m[Symbol.metadata]??null):void 0;n=[e.property({})],l=[e.property({})],r=[e.property({type:Boolean})],o=[e.property({type:Boolean})],c=[e.property({})],d=[e.render()],h=[e.styles()],p=[e.ready()],t(this,null,d,{kind:"method",name:"render",static:!1,private:!1,access:{has:e=>"render"in e,get:e=>e.render},metadata:E},null,v),t(this,null,h,{kind:"method",name:"styles",static:!1,private:!1,access:{has:e=>"styles"in e,get:e=>e.styles},metadata:E},null,v),t(this,null,p,{kind:"method",name:"init",static:!1,private:!1,access:{has:e=>"init"in e,get:e=>e.init},metadata:E},null,v),t(null,null,n,{kind:"field",name:"value",static:!1,private:!1,access:{has:e=>"value"in e,get:e=>e.value,set:(e,t)=>{e.value=t}},metadata:E},b,f),t(null,null,l,{kind:"field",name:"label",static:!1,private:!1,access:{has:e=>"label"in e,get:e=>e.label,set:(e,t)=>{e.label=t}},metadata:E},y,w),t(null,null,r,{kind:"field",name:"disabled",static:!1,private:!1,access:{has:e=>"disabled"in e,get:e=>e.disabled,set:(e,t)=>{e.disabled=t}},metadata:E},k,x),t(null,null,o,{kind:"field",name:"selected",static:!1,private:!1,access:{has:e=>"selected"in e,get:e=>e.selected,set:(e,t)=>{e.selected=t}},metadata:E},C,O),t(null,null,c,{kind:"field",name:"icon",static:!1,private:!1,access:{has:e=>"icon"in e,get:e=>e.icon,set:(e,t)=>{e.icon=t}},metadata:E},D,L),t(null,i={value:a},u,{kind:"class",name:a.name,metadata:E},null,g),a=i.value,E&&Object.defineProperty(a,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:E}),s(a,g)}render(){return e.html``}styles(){return e.css`:host { display: none; }`}init(){!this.label&&this.textContent&&(this.label=this.textContent.trim()),!this.value&&this.label&&(this.value=this.label)}get optionData(){return{value:this.value,label:this.label||this.textContent?.trim()||this.value,disabled:this.disabled,selected:this.selected,icon:this.icon}}constructor(){super(...arguments),this.value=(s(this,v),s(this,b,"")),this.label=(s(this,f),s(this,y,"")),this.disabled=(s(this,w),s(this,k,!1)),this.selected=(s(this,x),s(this,C,!1)),this.icon=(s(this,O),s(this,D,"")),s(this,L)}})})();(()=>{let i,a,n,l,r,o,c,d,h,p,u,g,m,v,b,f,y,w,k,x,C,O,D,L,E,$,I,S,z,B,V,A,q,T,j,H,F,P,M=[e.element("snice-select",{formAssociated:!0})],N=[],K=HTMLElement,Y=[],G=[],U=[],R=[],Z=[],J=[],Q=[],W=[],X=[],_=[],ee=[],te=[],se=[],ie=[],ae=[],ne=[],le=[],re=[],oe=[],ce=[],de=[],he=[],pe=[],ue=[],ge=[],me=[],ve=[],be=[],fe=[],ye=[],we=[],ke=[],xe=[],Ce=[],Oe=[],De=[],Le=[],Ee=[],$e=[],Ie=[],Se=[],ze=[],Be=[],Ve=[],Ae=[],qe=[],Te=[],je=[],He=[],Fe=[],Pe=[];(class extends K{static{a=this}static{const Me="function"==typeof Symbol&&Symbol.metadata?Object.create(K[Symbol.metadata]??null):void 0;n=[e.property({type:Boolean})],l=[e.property({type:Boolean})],r=[e.property({type:Boolean})],o=[e.property({type:Boolean})],c=[e.property({type:Boolean})],d=[e.property({type:Boolean})],h=[e.property({type:Boolean})],p=[e.property({type:Boolean})],u=[e.property({type:Boolean})],g=[e.property({})],m=[e.property({})],v=[e.property({})],b=[e.property({})],f=[e.property({})],y=[e.property({attribute:"max-height"})],w=[e.query(".select-trigger")],k=[e.query(".select-dropdown")],x=[e.query(".select-value")],C=[e.query(".select-label")],O=[e.query(".select-search-input")],D=[e.query(".select-options")],L=[e.query(".select-clear")],E=[e.query(".select-arrow")],$=[e.query(".select-search")],I=[e.queryAll(".select-option")],S=[e.render()],z=[e.styles()],B=[e.ready()],V=[e.dispose()],A=[e.watch("value")],q=[e.watch("disabled")],T=[e.watch("loading")],j=[e.watch("open")],H=[e.dispatch("select-change",{bubbles:!0,composed:!0})],F=[e.dispatch("select-open",{bubbles:!0,composed:!0})],P=[e.dispatch("select-close",{bubbles:!0,composed:!0})],t(this,null,S,{kind:"method",name:"render",static:!1,private:!1,access:{has:e=>"render"in e,get:e=>e.render},metadata:Me},null,Y),t(this,null,z,{kind:"method",name:"styles",static:!1,private:!1,access:{has:e=>"styles"in e,get:e=>e.styles},metadata:Me},null,Y),t(this,null,B,{kind:"method",name:"init",static:!1,private:!1,access:{has:e=>"init"in e,get:e=>e.init},metadata:Me},null,Y),t(this,null,V,{kind:"method",name:"cleanup",static:!1,private:!1,access:{has:e=>"cleanup"in e,get:e=>e.cleanup},metadata:Me},null,Y),t(this,null,A,{kind:"method",name:"handleValueChange",static:!1,private:!1,access:{has:e=>"handleValueChange"in e,get:e=>e.handleValueChange},metadata:Me},null,Y),t(this,null,q,{kind:"method",name:"handleDisabledChange",static:!1,private:!1,access:{has:e=>"handleDisabledChange"in e,get:e=>e.handleDisabledChange},metadata:Me},null,Y),t(this,null,T,{kind:"method",name:"handleLoadingChange",static:!1,private:!1,access:{has:e=>"handleLoadingChange"in e,get:e=>e.handleLoadingChange},metadata:Me},null,Y),t(this,null,j,{kind:"method",name:"handleOpenChange",static:!1,private:!1,access:{has:e=>"handleOpenChange"in e,get:e=>e.handleOpenChange},metadata:Me},null,Y),t(this,null,H,{kind:"method",name:"dispatchChangeEvent",static:!1,private:!1,access:{has:e=>"dispatchChangeEvent"in e,get:e=>e.dispatchChangeEvent},metadata:Me},null,Y),t(this,null,F,{kind:"method",name:"dispatchOpenEvent",static:!1,private:!1,access:{has:e=>"dispatchOpenEvent"in e,get:e=>e.dispatchOpenEvent},metadata:Me},null,Y),t(this,null,P,{kind:"method",name:"dispatchCloseEvent",static:!1,private:!1,access:{has:e=>"dispatchCloseEvent"in e,get:e=>e.dispatchCloseEvent},metadata:Me},null,Y),t(null,null,n,{kind:"field",name:"disabled",static:!1,private:!1,access:{has:e=>"disabled"in e,get:e=>e.disabled,set:(e,t)=>{e.disabled=t}},metadata:Me},G,U),t(null,null,l,{kind:"field",name:"required",static:!1,private:!1,access:{has:e=>"required"in e,get:e=>e.required,set:(e,t)=>{e.required=t}},metadata:Me},R,Z),t(null,null,r,{kind:"field",name:"invalid",static:!1,private:!1,access:{has:e=>"invalid"in e,get:e=>e.invalid,set:(e,t)=>{e.invalid=t}},metadata:Me},J,Q),t(null,null,o,{kind:"field",name:"readonly",static:!1,private:!1,access:{has:e=>"readonly"in e,get:e=>e.readonly,set:(e,t)=>{e.readonly=t}},metadata:Me},W,X),t(null,null,c,{kind:"field",name:"loading",static:!1,private:!1,access:{has:e=>"loading"in e,get:e=>e.loading,set:(e,t)=>{e.loading=t}},metadata:Me},_,ee),t(null,null,d,{kind:"field",name:"multiple",static:!1,private:!1,access:{has:e=>"multiple"in e,get:e=>e.multiple,set:(e,t)=>{e.multiple=t}},metadata:Me},te,se),t(null,null,h,{kind:"field",name:"searchable",static:!1,private:!1,access:{has:e=>"searchable"in e,get:e=>e.searchable,set:(e,t)=>{e.searchable=t}},metadata:Me},ie,ae),t(null,null,p,{kind:"field",name:"clearable",static:!1,private:!1,access:{has:e=>"clearable"in e,get:e=>e.clearable,set:(e,t)=>{e.clearable=t}},metadata:Me},ne,le),t(null,null,u,{kind:"field",name:"open",static:!1,private:!1,access:{has:e=>"open"in e,get:e=>e.open,set:(e,t)=>{e.open=t}},metadata:Me},re,oe),t(null,null,g,{kind:"field",name:"size",static:!1,private:!1,access:{has:e=>"size"in e,get:e=>e.size,set:(e,t)=>{e.size=t}},metadata:Me},ce,de),t(null,null,m,{kind:"field",name:"name",static:!1,private:!1,access:{has:e=>"name"in e,get:e=>e.name,set:(e,t)=>{e.name=t}},metadata:Me},he,pe),t(null,null,v,{kind:"field",name:"value",static:!1,private:!1,access:{has:e=>"value"in e,get:e=>e.value,set:(e,t)=>{e.value=t}},metadata:Me},ue,ge),t(null,null,b,{kind:"field",name:"label",static:!1,private:!1,access:{has:e=>"label"in e,get:e=>e.label,set:(e,t)=>{e.label=t}},metadata:Me},me,ve),t(null,null,f,{kind:"field",name:"placeholder",static:!1,private:!1,access:{has:e=>"placeholder"in e,get:e=>e.placeholder,set:(e,t)=>{e.placeholder=t}},metadata:Me},be,fe),t(null,null,y,{kind:"field",name:"maxHeight",static:!1,private:!1,access:{has:e=>"maxHeight"in e,get:e=>e.maxHeight,set:(e,t)=>{e.maxHeight=t}},metadata:Me},ye,we),t(null,null,w,{kind:"field",name:"trigger",static:!1,private:!1,access:{has:e=>"trigger"in e,get:e=>e.trigger,set:(e,t)=>{e.trigger=t}},metadata:Me},ke,xe),t(null,null,k,{kind:"field",name:"dropdown",static:!1,private:!1,access:{has:e=>"dropdown"in e,get:e=>e.dropdown,set:(e,t)=>{e.dropdown=t}},metadata:Me},Ce,Oe),t(null,null,x,{kind:"field",name:"valueDisplay",static:!1,private:!1,access:{has:e=>"valueDisplay"in e,get:e=>e.valueDisplay,set:(e,t)=>{e.valueDisplay=t}},metadata:Me},De,Le),t(null,null,C,{kind:"field",name:"labelElement",static:!1,private:!1,access:{has:e=>"labelElement"in e,get:e=>e.labelElement,set:(e,t)=>{e.labelElement=t}},metadata:Me},Ee,$e),t(null,null,O,{kind:"field",name:"searchInput",static:!1,private:!1,access:{has:e=>"searchInput"in e,get:e=>e.searchInput,set:(e,t)=>{e.searchInput=t}},metadata:Me},Ie,Se),t(null,null,D,{kind:"field",name:"optionsList",static:!1,private:!1,access:{has:e=>"optionsList"in e,get:e=>e.optionsList,set:(e,t)=>{e.optionsList=t}},metadata:Me},ze,Be),t(null,null,L,{kind:"field",name:"clearButton",static:!1,private:!1,access:{has:e=>"clearButton"in e,get:e=>e.clearButton,set:(e,t)=>{e.clearButton=t}},metadata:Me},Ve,Ae),t(null,null,E,{kind:"field",name:"arrow",static:!1,private:!1,access:{has:e=>"arrow"in e,get:e=>e.arrow,set:(e,t)=>{e.arrow=t}},metadata:Me},qe,Te),t(null,null,$,{kind:"field",name:"searchContainer",static:!1,private:!1,access:{has:e=>"searchContainer"in e,get:e=>e.searchContainer,set:(e,t)=>{e.searchContainer=t}},metadata:Me},je,He),t(null,null,I,{kind:"field",name:"optionElements",static:!1,private:!1,access:{has:e=>"optionElements"in e,get:e=>e.optionElements,set:(e,t)=>{e.optionElements=t}},metadata:Me},Fe,Pe),t(null,i={value:a},M,{kind:"class",name:a.name,metadata:Me},null,N),a=i.value,Me&&Object.defineProperty(a,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:Me}),s(a,N)}constructor(){super(),this.internals=s(this,Y),this.disabled=s(this,G,!1),this.required=(s(this,U),s(this,R,!1)),this.invalid=(s(this,Z),s(this,J,!1)),this.readonly=(s(this,Q),s(this,W,!1)),this.loading=(s(this,X),s(this,_,!1)),this.multiple=(s(this,ee),s(this,te,!1)),this.searchable=(s(this,se),s(this,ie,!1)),this.clearable=(s(this,ae),s(this,ne,!1)),this.open=(s(this,le),s(this,re,!1)),this.size=(s(this,oe),s(this,ce,"medium")),this.name=(s(this,de),s(this,he,"")),this.value=(s(this,pe),s(this,ue,"")),this.label=(s(this,ge),s(this,me,"")),this.placeholder=(s(this,ve),s(this,be,"Select an option")),this.maxHeight=(s(this,fe),s(this,ye,"200px")),this.options=(s(this,we),[]),this.trigger=s(this,ke,void 0),this.dropdown=(s(this,xe),s(this,Ce,void 0)),this.valueDisplay=(s(this,Oe),s(this,De,void 0)),this.labelElement=(s(this,Le),s(this,Ee,void 0)),this.searchInput=(s(this,$e),s(this,Ie,void 0)),this.optionsList=(s(this,Se),s(this,ze,void 0)),this.clearButton=(s(this,Be),s(this,Ve,void 0)),this.arrow=(s(this,Ae),s(this,qe,void 0)),this.searchContainer=(s(this,Te),s(this,je,void 0)),this.optionElements=(s(this,He),s(this,Fe,void 0)),this.filteredOptions=(s(this,Pe),[]),this.selectedValues=new Set,this.focusedIndex=-1,"function"==typeof this.attachInternals&&(this.internals=this.attachInternals())}render(){const t=`select-label select-label--${this.size} ${this.required?"select-label--required":""}`,s=`select-trigger select-trigger--${this.size} ${this.loading?"select-trigger--loading":""}`,i=!this.searchable;return e.html`
8
8
  <div class="select-wrapper">
9
9
  <label class="${t}" part="label" ?hidden="${!this.label}">
10
10
  ${this.label}
@@ -12,7 +12,7 @@ void 0===globalThis.Snice&&console.warn("[snice] snice-runtime.min.js must be lo
12
12
 
13
13
  <button
14
14
  type="button"
15
- class="${i}"
15
+ class="${s}"
16
16
  aria-haspopup="listbox"
17
17
  aria-expanded="false"
18
18
  aria-label="${this.label||"Select"}"
@@ -49,7 +49,7 @@ void 0===globalThis.Snice&&console.warn("[snice] snice-runtime.min.js must be lo
49
49
  part="dropdown"
50
50
  @click="${e=>this.handleOptionsClick(e)}">
51
51
 
52
- <div class="select-search" part="search" ?hidden="${s}">
52
+ <div class="select-search" part="search" ?hidden="${i}">
53
53
  <input
54
54
  type="text"
55
55
  class="select-search-input"
@@ -65,14 +65,6 @@ void 0===globalThis.Snice&&console.warn("[snice] snice-runtime.min.js must be lo
65
65
  </div>
66
66
  </div>
67
67
 
68
- <!-- Hidden native select for form submission -->
69
- <select
70
- class="select-native"
71
- name="${this.name||""}"
72
- tabindex="-1"
73
- aria-hidden="true">
74
- <!-- Options will be added in @ready() -->
75
- </select>
76
68
  </div>
77
- `}renderOptions(){const e=this.searchable?this.filteredOptions:this.options;return 0===e.length?`\n <div class="select-no-options">\n <span class="select-no-options-text" data-search="true" ${!this.searchable||this.filteredOptions.length>0?"hidden":""}>No matches found</span>\n <span class="select-no-options-text" data-search="false" ${this.searchable&&0===this.filteredOptions.length?"hidden":""}>No options available</span>\n </div>\n `:e.map((e,t)=>{const i=this.multiple?this.selectedValues.has(e.value):e.value===this.value;return`\n <div class="select-option \n ${i?"select-option--selected":""}\n ${e.disabled?"select-option--disabled":""}\n ${t===this.focusedIndex?"select-option--focused":""}\n ${e.icon?"select-option--has-icon":""}"\n data-value="${e.value}"\n role="option"\n aria-selected="${i}"\n aria-disabled="${e.disabled}"\n part="option">\n <span class="select-option-check" ${this.multiple?"":"hidden"}>\n <span class="select-option-check-mark" ${i?"":"hidden"}>✓</span>\n </span>\n <img class="select-option-icon" src="${e.icon||""}" alt="" ${e.icon?"":"hidden"} />\n <span class="select-option-label">${e.label}</span>\n </div>\n `}).join("")}styles(){return e.css`${":host{display:inline-block;font-family:var(--snice-font-family);position:relative;width:100%;max-width:18.75rem}[hidden]{display:none!important}img[src=\"\"]{display:none}.select-wrapper{position:relative;width:100%}.select-label{display:block;margin-bottom:.25rem;color:var(--snice-color-text);font-weight:500}.select-label--small{font-size:var(--snice-font-size-sm)}.select-label--medium{font-size:var(--snice-font-size-md)}.select-label--large{font-size:var(--snice-font-size-lg)}.select-label--required::after{content:' *';color:var(--snice-color-danger)}.select-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;background:var(--snice-color-background-input);border:1px solid var(--snice-color-border);border-radius:var(--snice-border-radius-md);cursor:pointer;transition:all var(--snice-transition-fast) ease;position:relative;text-align:left;font-family:inherit;color:var(--snice-color-text)}.select-trigger--small{padding:.375rem 2rem .375rem .625rem;font-size:var(--snice-font-size-sm);min-height:2rem}.select-trigger--medium{padding:.5rem 2.25rem .5rem .75rem;font-size:var(--snice-font-size-md);min-height:var(--snice-select-min-height,2.5rem)}.select-trigger--large{padding:.625rem 2.5rem .625rem .875rem;font-size:var(--snice-font-size-lg);min-height:3rem}.select-trigger:hover:not(.select-trigger--disabled){border-color:var(--snice-color-border-hover)}.select-trigger:focus-visible{outline:2px solid var(--snice-color-primary);outline-offset:2px;border-color:var(--snice-color-primary)}.select-trigger--open{border-color:var(--snice-color-primary)}.select-trigger--disabled{background:var(--snice-color-background-secondary);cursor:not-allowed;opacity:.6}.select-trigger--readonly{background:var(--snice-color-background-secondary);cursor:default}.select-trigger--invalid{border-color:var(--snice-color-danger)}.select-placeholder{color:var(--snice-color-text-secondary)}.select-value{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-value--single{display:flex;align-items:center;gap:.5rem}.select-value-icon{width:1rem;height:1rem;object-fit:contain;flex-shrink:0}.select-value--multiple{display:flex;gap:.25rem;flex-wrap:wrap}.select-tag{display:inline-flex;align-items:center;gap:.25rem;padding:.125rem .375rem;background:var(--snice-color-primary-light);color:var(--snice-color-primary);border-radius:var(--snice-border-radius-sm);font-size:var(--snice-font-size-xs)}.select-tag-icon{width:.75rem;height:.75rem;object-fit:contain;flex-shrink:0}.select-tag-remove{cursor:pointer;padding:0;background:0 0;border:none;color:inherit;font-size:.75rem;line-height:1}.select-tag-remove:hover{opacity:.7}.select-icons{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:.25rem;pointer-events:none;z-index:1}.select-clear{padding:2px;background:0 0;border:none;cursor:pointer;color:var(--snice-color-text-secondary);display:flex;align-items:center;justify-content:center;border-radius:var(--snice-border-radius-sm);pointer-events:auto}.select-clear:hover{background:var(--snice-color-background-secondary);color:var(--snice-color-text)}.select-arrow{transition:transform var(--snice-transition-fast) ease;color:var(--snice-color-text-secondary);pointer-events:none}.select-arrow--open{transform:rotate(180deg)}.select-dropdown{position:absolute;top:100%;margin-top:4px;left:0;right:0;background:var(--snice-color-background-element);border:1px solid var(--snice-color-border);border-radius:var(--snice-border-radius-md);box-shadow:var(--snice-shadow-lg);z-index:1000;opacity:0;transform:translateY(-8px) scaleY(.95);transform-origin:top;pointer-events:none;transition:opacity var(--snice-transition-fast) ease,transform var(--snice-transition-fast) ease;display:flex;flex-direction:column;overflow:hidden}.select-dropdown--open{opacity:1;transform:translateY(0) scaleY(1);pointer-events:auto}.select-search{padding:8px;border-bottom:1px solid var(--snice-color-border);flex-shrink:0}.select-search-input{width:100%;padding:6px 10px;background:var(--snice-color-background-input);border:1px solid var(--snice-color-border);border-radius:var(--snice-border-radius-sm);font-size:var(--snice-font-size-sm);font-family:inherit;color:var(--snice-color-text);box-sizing:border-box}.select-search-input:focus{outline:0;border-color:var(--snice-color-primary)}.select-options{max-height:200px;overflow-y:auto;overflow-x:hidden;padding:4px;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:var(--snice-color-border) var(--snice-color-background-secondary)}.select-options::-webkit-scrollbar-track{background:var(--snice-color-background-secondary);margin:4px 0}.select-options::-webkit-scrollbar-thumb{background:var(--snice-color-border);border:2px solid var(--snice-color-background)}.select-option{padding:8px 12px;cursor:pointer;border-radius:var(--snice-border-radius-sm);transition:background var(--snice-transition-fast) ease;display:flex;align-items:center;gap:8px}.select-option:hover:not(.select-option--disabled){background:var(--snice-color-background-secondary)}.select-option--selected{background:var(--snice-color-primary-light);color:var(--snice-color-primary);font-weight:500}.select-option--focused{background:var(--snice-color-background-secondary);outline:2px solid var(--snice-color-primary);outline-offset:-2px}.select-option--disabled{opacity:.5;cursor:not-allowed}.select-option-icon{width:16px;height:16px;object-fit:contain;flex-shrink:0}.select-option-check{width:16px;height:16px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.select-option-label{flex:1}.select-no-options{padding:16px;text-align:center;color:var(--snice-color-text-secondary);font-size:var(--snice-font-size-sm)}.select-native{position:absolute;opacity:0;pointer-events:none;width:0;height:0}.select-options::-webkit-scrollbar{width:6px}.select-options::-webkit-scrollbar-track{background:var(--snice-color-background-secondary);border-radius:3px}.select-options::-webkit-scrollbar-thumb{background:var(--snice-color-border);border-radius:3px}.select-options::-webkit-scrollbar-thumb:hover{background:var(--snice-color-border-hover)}.select-trigger--loading{cursor:wait;opacity:.7}.select-spinner{display:inline-block;width:14px;height:14px;margin-right:4px}.select-spinner::after{content:'';display:block;width:100%;height:100%;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}"}`}init(){this.readOptionsFromChildren(),this.multiple&&this.value&&(this.selectedValues=new Set(this.value.split(",").map(e=>e.trim()))),this.filteredOptions=[...this.options],requestAnimationFrame(()=>{requestAnimationFrame(()=>{this.updateTriggerState(),this.updateDropdownState(),this.updateNativeSelectAttributes(),this.updateDropdownContent(),this.updateNativeSelect(),this.updateValueDisplay(),this.updateClearButton()})}),this.observeChildren(),this.setupGlobalListeners()}cleanup(){this.removeGlobalListeners(),this.childObserver?.disconnect()}setupGlobalListeners(){this.outsideClickHandler=e=>{!this.contains(e.target)&&this.open&&this.closeDropdown()},this.globalKeyHandler=e=>{if(this.open)switch(e.key){case"Escape":this.closeDropdown(),this.trigger?.focus();break;case"ArrowDown":e.preventDefault(),this.focusNextOption();break;case"ArrowUp":e.preventDefault(),this.focusPreviousOption();break;case"Enter":case" ":if(e.preventDefault(),this.focusedIndex>=0){const e=(this.searchable?this.filteredOptions:this.options)[this.focusedIndex];e&&!e.disabled&&this.handleOptionSelect(e)}}},document.addEventListener("click",this.outsideClickHandler),document.addEventListener("keydown",this.globalKeyHandler)}removeGlobalListeners(){this.outsideClickHandler&&document.removeEventListener("click",this.outsideClickHandler),this.globalKeyHandler&&document.removeEventListener("keydown",this.globalKeyHandler)}observeChildren(){const e=new MutationObserver(e=>{this.handleChildrenChange(e)});e.observe(this,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value","label","disabled","selected"]}),this.childObserver=e}handleChildrenChange(e){e.some(e=>"childList"===e.type||!("attributes"!==e.type||!["value","label","disabled","selected"].includes(e.attributeName))&&"SNICE-OPTION"===e.target.nodeName)&&(this.readOptionsFromChildren(),this.filteredOptions=[...this.options],this.updateNativeSelect(),this.updateValueDisplay(),this.updateClearButton(),this.updateDropdownContent())}readOptionsFromChildren(){const e=Array.from(this.querySelectorAll("snice-option"));this.options=e.map(e=>{const t=e;return t.optionData?t.optionData:{value:e.getAttribute("value")||"",label:e.getAttribute("label")||e.textContent?.trim()||"",disabled:e.hasAttribute("disabled"),selected:e.hasAttribute("selected")}})}handleTriggerOpen(e){["Enter"," ","ArrowDown","ArrowUp"].includes(e.key)&&(e.preventDefault(),this.open||this.openDropdown())}handleSearchKeydown(e){switch(e.key){case"Escape":this.closeDropdown(),this.trigger?.focus();break;case"ArrowDown":e.preventDefault(),this.focusNextOption();break;case"ArrowUp":e.preventDefault(),this.focusPreviousOption();break;case"Enter":if(e.preventDefault(),this.focusedIndex>=0){const e=(this.searchable?this.filteredOptions:this.options)[this.focusedIndex];e&&!e.disabled&&this.handleOptionSelect(e)}}}focusNextOption(){const e=this.searchable?this.filteredOptions:this.options;if(0!==e.filter(e=>!e.disabled).length){for(this.focusedIndex++,this.focusedIndex>=e.length&&(this.focusedIndex=0);e[this.focusedIndex]?.disabled;)this.focusedIndex++,this.focusedIndex>=e.length&&(this.focusedIndex=0);this.updateOptionFocus()}}focusPreviousOption(){const e=this.searchable?this.filteredOptions:this.options;if(0!==e.filter(e=>!e.disabled).length){for(this.focusedIndex--,this.focusedIndex<0&&(this.focusedIndex=e.length-1);e[this.focusedIndex]?.disabled;)this.focusedIndex--,this.focusedIndex<0&&(this.focusedIndex=e.length-1);this.updateOptionFocus()}}updateOptionFocus(){this.optionElements&&this.optionElements.forEach((e,t)=>{e.classList.toggle("select-option--focused",t===this.focusedIndex)})}handleClearClick(e){e.preventDefault(),e.stopPropagation(),this.clear()}handleTriggerClick(e){e.target.closest(".select-clear")||(e.stopPropagation(),this.disabled||this.readonly||this.toggleDropdown())}handleOptionsClick(e){const t=e.target;if(t.closest(".select-tag-remove")){e.stopPropagation();const i=t.closest(".select-tag-remove").getAttribute("data-value");return void(i&&this.multiple&&(this.selectedValues.delete(i),this.value=Array.from(this.selectedValues).join(","),this.updateNativeSelect(),this.updateValueDisplay(),this.updateClearButton(),this.dispatchChangeEvent()))}const i=t.closest(".select-option");if(!i)return;e.stopPropagation();const s=i.getAttribute("data-value");if(!s)return;const a=this.options.find(e=>e.value===s);a&&!a.disabled&&this.handleOptionSelect(a)}handleSearchInput(e){const t=e.target.value.toLowerCase();this.filteredOptions=t?this.options.filter(e=>e.label.toLowerCase().includes(t)):[...this.options],this.focusedIndex=-1,this.updateDropdownContent()}handleOptionSelect(e){this.multiple?(this.selectedValues.has(e.value)?this.selectedValues.delete(e.value):this.selectedValues.add(e.value),this.value=Array.from(this.selectedValues).join(","),this.updateDropdownContent()):(this.value=e.value,this.closeDropdown()),this.updateNativeSelect(),this.updateValueDisplay(),this.updateClearButton(),this.dispatchChangeEvent(e)}handleValueChange(){this.multiple&&(this.selectedValues=new Set(this.value?this.value.split(",").map(e=>e.trim()):[])),this.updateNativeSelect(),this.updateValueDisplay(),this.updateClearButton()}handleDisabledChange(){this.updateTriggerState(),this.updateNativeSelectAttributes(),this.updateClearButton(),this.disabled&&this.open&&this.closeDropdown()}handleLoadingChange(){this.updateTriggerState(),this.updateNativeSelectAttributes(),this.updateClearButton(),this.loading&&this.open&&this.closeDropdown()}handleOpenChange(){this.updateDropdownState(),this.updateTriggerState(),this.open&&this.searchable&&this.searchInput&&setTimeout(()=>this.searchInput?.focus(),100),this.open||(this.focusedIndex=-1,this.searchInput&&(this.searchInput.value="",this.filteredOptions=[...this.options],this.updateDropdownContent()))}handleNativeSelectAttributeChange(){this.updateNativeSelectAttributes()}updateValueDisplay(){if(!this.valueDisplay)return;const e=this.options.filter(e=>this.multiple?this.selectedValues.has(e.value):e.value===this.value);if(this.multiple&&e.length>0)this.valueDisplay.innerHTML=`\n <div class="select-value--multiple">\n ${e.map(e=>`\n <span class="select-tag">\n <img class="select-tag-icon" src="${e.icon||""}" alt="" ${e.icon?"":"hidden"} />\n ${e.label}\n <span class="select-tag-remove" data-value="${e.value}" aria-label="Remove ${e.label}" ${this.disabled||this.readonly?"hidden":""}>×</span>\n </span>\n `).join("")}\n </div>\n `;else if(e.length>0){const t=e[0];this.valueDisplay.innerHTML=`\n <div class="select-value--single">\n <img class="select-value-icon" src="${t.icon||""}" alt="" ${t.icon?"":"hidden"} />\n <span>${t.label}</span>\n </div>\n `}else this.valueDisplay.innerHTML=`<span class="select-placeholder">${this.placeholder}</span>`}updateClearButton(){if(!this.clearButton)return;const e=this.options.filter(e=>this.multiple?this.selectedValues.has(e.value):e.value===this.value),t=this.clearable&&e.length>0&&!this.disabled&&!this.readonly;this.clearButton.style.display=t?"":"none"}updateDropdownContent(){this.optionsList&&(this.optionsList.innerHTML=this.renderOptions())}updateNativeSelect(){this.nativeSelect&&(this.nativeSelect.innerHTML="",this.options.forEach(e=>{const t=document.createElement("option");t.value=e.value,t.textContent=e.label,t.selected=this.multiple?this.selectedValues.has(e.value):e.value===this.value,this.nativeSelect.appendChild(t)}))}dispatchChangeEvent(e){return{value:this.multiple?Array.from(this.selectedValues):this.value,option:e,select:this}}dispatchOpenEvent(){return{select:this}}dispatchCloseEvent(){return{select:this}}focus(){this.trigger?.focus()}blur(){this.trigger?.blur(),this.open&&this.closeDropdown()}clear(){this.multiple?(this.selectedValues.clear(),this.value=""):this.value="",this.updateNativeSelect(),this.updateValueDisplay(),this.updateClearButton(),this.dispatchChangeEvent()}openDropdown(){this.open||this.disabled||this.readonly||(this.open=!0,this.dispatchOpenEvent())}closeDropdown(){this.open&&(this.open=!1,this.dispatchCloseEvent())}toggleDropdown(){this.open?this.closeDropdown():this.openDropdown()}selectOption(e){const t=this.options.find(t=>t.value===e);t&&!t.disabled&&this.handleOptionSelect(t)}updateTriggerState(){this.trigger&&(this.trigger.classList.toggle("select-trigger--open",this.open),this.trigger.classList.toggle("select-trigger--disabled",this.disabled),this.trigger.classList.toggle("select-trigger--readonly",this.readonly),this.trigger.classList.toggle("select-trigger--invalid",this.invalid),this.trigger.classList.toggle("select-trigger--loading",this.loading),this.trigger.setAttribute("aria-expanded",String(this.open)),this.trigger.disabled=this.disabled||this.loading)}updateDropdownState(){this.dropdown&&(this.dropdown.classList.toggle("select-dropdown--open",this.open),this.arrow&&this.arrow.classList.toggle("select-arrow--open",this.open))}updateNativeSelectAttributes(){this.nativeSelect&&(this.nativeSelect.disabled=this.disabled||this.loading,this.nativeSelect.required=this.required,this.nativeSelect.multiple=this.multiple,this.name?this.nativeSelect.name=this.name:this.nativeSelect.removeAttribute("name"))}})})()}(Snice);
69
+ `}renderOptions(){const e=this.searchable?this.filteredOptions:this.options;return 0===e.length?`\n <div class="select-no-options">\n <span class="select-no-options-text" data-search="true" ${!this.searchable||this.filteredOptions.length>0?"hidden":""}>No matches found</span>\n <span class="select-no-options-text" data-search="false" ${this.searchable&&0===this.filteredOptions.length?"hidden":""}>No options available</span>\n </div>\n `:e.map((e,t)=>{const s=this.multiple?this.selectedValues.has(e.value):e.value===this.value;return`\n <div class="select-option \n ${s?"select-option--selected":""}\n ${e.disabled?"select-option--disabled":""}\n ${t===this.focusedIndex?"select-option--focused":""}\n ${e.icon?"select-option--has-icon":""}"\n data-value="${e.value}"\n role="option"\n aria-selected="${s}"\n aria-disabled="${e.disabled}"\n part="option">\n <span class="select-option-check" ${this.multiple?"":"hidden"}>\n <span class="select-option-check-mark" ${s?"":"hidden"}>✓</span>\n </span>\n <img class="select-option-icon" src="${e.icon||""}" alt="" ${e.icon?"":"hidden"} />\n <span class="select-option-label">${e.label}</span>\n </div>\n `}).join("")}styles(){return e.css`${":host{display:inline-block;font-family:var(--snice-font-family);position:relative;width:100%;max-width:18.75rem}[hidden]{display:none!important}img[src=\"\"]{display:none}.select-wrapper{position:relative;width:100%}.select-label{display:block;margin-bottom:.25rem;color:var(--snice-color-text);font-weight:500}.select-label--small{font-size:var(--snice-font-size-sm)}.select-label--medium{font-size:var(--snice-font-size-md)}.select-label--large{font-size:var(--snice-font-size-lg)}.select-label--required::after{content:' *';color:var(--snice-color-danger)}.select-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;background:var(--snice-color-background-input);border:1px solid var(--snice-color-border);border-radius:var(--snice-border-radius-md);cursor:pointer;transition:all var(--snice-transition-fast) ease;position:relative;text-align:left;font-family:inherit;color:var(--snice-color-text)}.select-trigger--small{padding:.375rem 2rem .375rem .625rem;font-size:var(--snice-font-size-sm);min-height:2rem}.select-trigger--medium{padding:.5rem 2.25rem .5rem .75rem;font-size:var(--snice-font-size-md);min-height:var(--snice-select-min-height,2.5rem)}.select-trigger--large{padding:.625rem 2.5rem .625rem .875rem;font-size:var(--snice-font-size-lg);min-height:3rem}.select-trigger:hover:not(.select-trigger--disabled){border-color:var(--snice-color-border-hover)}.select-trigger:focus-visible{outline:2px solid var(--snice-color-primary);outline-offset:2px;border-color:var(--snice-color-primary)}.select-trigger--open{border-color:var(--snice-color-primary)}.select-trigger--disabled{background:var(--snice-color-background-secondary);cursor:not-allowed;opacity:.6}.select-trigger--readonly{background:var(--snice-color-background-secondary);cursor:default}.select-trigger--invalid{border-color:var(--snice-color-danger)}.select-placeholder{color:var(--snice-color-text-secondary)}.select-value{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-value--single{display:flex;align-items:center;gap:.5rem}.select-value-icon{width:1rem;height:1rem;object-fit:contain;flex-shrink:0}.select-value--multiple{display:flex;gap:.25rem;flex-wrap:wrap}.select-tag{display:inline-flex;align-items:center;gap:.25rem;padding:.125rem .375rem;background:var(--snice-color-primary-light);color:var(--snice-color-primary);border-radius:var(--snice-border-radius-sm);font-size:var(--snice-font-size-xs)}.select-tag-icon{width:.75rem;height:.75rem;object-fit:contain;flex-shrink:0}.select-tag-remove{cursor:pointer;padding:0;background:0 0;border:none;color:inherit;font-size:.75rem;line-height:1}.select-tag-remove:hover{opacity:.7}.select-icons{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:.25rem;pointer-events:none;z-index:1}.select-clear{padding:2px;background:0 0;border:none;cursor:pointer;color:var(--snice-color-text-secondary);display:flex;align-items:center;justify-content:center;border-radius:var(--snice-border-radius-sm);pointer-events:auto}.select-clear:hover{background:var(--snice-color-background-secondary);color:var(--snice-color-text)}.select-arrow{transition:transform var(--snice-transition-fast) ease;color:var(--snice-color-text-secondary);pointer-events:none}.select-arrow--open{transform:rotate(180deg)}.select-dropdown{position:absolute;top:100%;margin-top:4px;left:0;right:0;background:var(--snice-color-background-element);border:1px solid var(--snice-color-border);border-radius:var(--snice-border-radius-md);box-shadow:var(--snice-shadow-lg);z-index:1000;opacity:0;transform:translateY(-8px) scaleY(.95);transform-origin:top;pointer-events:none;transition:opacity var(--snice-transition-fast) ease,transform var(--snice-transition-fast) ease;display:flex;flex-direction:column;overflow:hidden}.select-dropdown--open{opacity:1;transform:translateY(0) scaleY(1);pointer-events:auto}.select-search{padding:8px;border-bottom:1px solid var(--snice-color-border);flex-shrink:0}.select-search-input{width:100%;padding:6px 10px;background:var(--snice-color-background-input);border:1px solid var(--snice-color-border);border-radius:var(--snice-border-radius-sm);font-size:var(--snice-font-size-sm);font-family:inherit;color:var(--snice-color-text);box-sizing:border-box}.select-search-input:focus{outline:0;border-color:var(--snice-color-primary)}.select-options{max-height:200px;overflow-y:auto;overflow-x:hidden;padding:4px;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:var(--snice-color-border) var(--snice-color-background-secondary)}.select-options::-webkit-scrollbar-track{background:var(--snice-color-background-secondary);margin:4px 0}.select-options::-webkit-scrollbar-thumb{background:var(--snice-color-border);border:2px solid var(--snice-color-background)}.select-option{padding:8px 12px;cursor:pointer;border-radius:var(--snice-border-radius-sm);transition:background var(--snice-transition-fast) ease;display:flex;align-items:center;gap:8px}.select-option:hover:not(.select-option--disabled){background:var(--snice-color-background-secondary)}.select-option--selected{background:var(--snice-color-primary-light);color:var(--snice-color-primary);font-weight:500}.select-option--focused{background:var(--snice-color-background-secondary);outline:2px solid var(--snice-color-primary);outline-offset:-2px}.select-option--disabled{opacity:.5;cursor:not-allowed}.select-option-icon{width:16px;height:16px;object-fit:contain;flex-shrink:0}.select-option-check{width:16px;height:16px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.select-option-label{flex:1}.select-no-options{padding:16px;text-align:center;color:var(--snice-color-text-secondary);font-size:var(--snice-font-size-sm)}.select-native{position:absolute;opacity:0;pointer-events:none;width:0;height:0}.select-options::-webkit-scrollbar{width:6px}.select-options::-webkit-scrollbar-track{background:var(--snice-color-background-secondary);border-radius:3px}.select-options::-webkit-scrollbar-thumb{background:var(--snice-color-border);border-radius:3px}.select-options::-webkit-scrollbar-thumb:hover{background:var(--snice-color-border-hover)}.select-trigger--loading{cursor:wait;opacity:.7}.select-spinner{display:inline-block;width:14px;height:14px;margin-right:4px}.select-spinner::after{content:'';display:block;width:100%;height:100%;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}"}`}init(){this.readOptionsFromChildren(),this.multiple&&this.value&&(this.selectedValues=new Set(this.value.split(",").map(e=>e.trim()))),this.filteredOptions=[...this.options],this.internals&&this.internals.setFormValue(this.value),requestAnimationFrame(()=>{requestAnimationFrame(()=>{this.updateTriggerState(),this.updateDropdownState(),this.updateDropdownContent(),this.updateValueDisplay(),this.updateClearButton()})}),this.observeChildren(),this.setupGlobalListeners()}cleanup(){this.removeGlobalListeners(),this.childObserver?.disconnect()}setupGlobalListeners(){this.outsideClickHandler=e=>{!this.contains(e.target)&&this.open&&this.closeDropdown()},this.globalKeyHandler=e=>{if(this.open)switch(e.key){case"Escape":this.closeDropdown(),this.trigger?.focus();break;case"ArrowDown":e.preventDefault(),this.focusNextOption();break;case"ArrowUp":e.preventDefault(),this.focusPreviousOption();break;case"Enter":case" ":if(e.preventDefault(),this.focusedIndex>=0){const e=(this.searchable?this.filteredOptions:this.options)[this.focusedIndex];e&&!e.disabled&&this.handleOptionSelect(e)}}},document.addEventListener("click",this.outsideClickHandler),document.addEventListener("keydown",this.globalKeyHandler)}removeGlobalListeners(){this.outsideClickHandler&&document.removeEventListener("click",this.outsideClickHandler),this.globalKeyHandler&&document.removeEventListener("keydown",this.globalKeyHandler)}observeChildren(){const e=new MutationObserver(e=>{this.handleChildrenChange(e)});e.observe(this,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value","label","disabled","selected"]}),this.childObserver=e}handleChildrenChange(e){e.some(e=>"childList"===e.type||!("attributes"!==e.type||!["value","label","disabled","selected"].includes(e.attributeName))&&"SNICE-OPTION"===e.target.nodeName)&&(this.readOptionsFromChildren(),this.filteredOptions=[...this.options],this.updateValueDisplay(),this.updateClearButton(),this.updateDropdownContent())}readOptionsFromChildren(){const e=Array.from(this.querySelectorAll("snice-option"));this.options=e.map(e=>{const t=e;return t.optionData?t.optionData:{value:e.getAttribute("value")||"",label:e.getAttribute("label")||e.textContent?.trim()||"",disabled:e.hasAttribute("disabled"),selected:e.hasAttribute("selected")}})}handleTriggerOpen(e){["Enter"," ","ArrowDown","ArrowUp"].includes(e.key)&&(e.preventDefault(),this.open||this.openDropdown())}handleSearchKeydown(e){switch(e.key){case"Escape":this.closeDropdown(),this.trigger?.focus();break;case"ArrowDown":e.preventDefault(),this.focusNextOption();break;case"ArrowUp":e.preventDefault(),this.focusPreviousOption();break;case"Enter":if(e.preventDefault(),this.focusedIndex>=0){const e=(this.searchable?this.filteredOptions:this.options)[this.focusedIndex];e&&!e.disabled&&this.handleOptionSelect(e)}}}focusNextOption(){const e=this.searchable?this.filteredOptions:this.options;if(0!==e.filter(e=>!e.disabled).length){for(this.focusedIndex++,this.focusedIndex>=e.length&&(this.focusedIndex=0);e[this.focusedIndex]?.disabled;)this.focusedIndex++,this.focusedIndex>=e.length&&(this.focusedIndex=0);this.updateOptionFocus()}}focusPreviousOption(){const e=this.searchable?this.filteredOptions:this.options;if(0!==e.filter(e=>!e.disabled).length){for(this.focusedIndex--,this.focusedIndex<0&&(this.focusedIndex=e.length-1);e[this.focusedIndex]?.disabled;)this.focusedIndex--,this.focusedIndex<0&&(this.focusedIndex=e.length-1);this.updateOptionFocus()}}updateOptionFocus(){this.optionElements&&this.optionElements.forEach((e,t)=>{e.classList.toggle("select-option--focused",t===this.focusedIndex)})}handleClearClick(e){e.preventDefault(),e.stopPropagation(),this.clear()}handleTriggerClick(e){e.target.closest(".select-clear")||(e.stopPropagation(),this.disabled||this.readonly||this.toggleDropdown())}handleOptionsClick(e){const t=e.target;if(t.closest(".select-tag-remove")){e.stopPropagation();const s=t.closest(".select-tag-remove").getAttribute("data-value");return void(s&&this.multiple&&(this.selectedValues.delete(s),this.value=Array.from(this.selectedValues).join(","),this.updateValueDisplay(),this.updateClearButton(),this.dispatchChangeEvent()))}const s=t.closest(".select-option");if(!s)return;e.stopPropagation();const i=s.getAttribute("data-value");if(!i)return;const a=this.options.find(e=>e.value===i);a&&!a.disabled&&this.handleOptionSelect(a)}handleSearchInput(e){const t=e.target.value.toLowerCase();this.filteredOptions=t?this.options.filter(e=>e.label.toLowerCase().includes(t)):[...this.options],this.focusedIndex=-1,this.updateDropdownContent()}handleOptionSelect(e){this.multiple?(this.selectedValues.has(e.value)?this.selectedValues.delete(e.value):this.selectedValues.add(e.value),this.value=Array.from(this.selectedValues).join(","),this.updateDropdownContent()):(this.value=e.value,this.closeDropdown()),this.updateValueDisplay(),this.updateClearButton(),this.dispatchChangeEvent(e)}handleValueChange(){this.multiple&&(this.selectedValues=new Set(this.value?this.value.split(",").map(e=>e.trim()):[])),this.updateValueDisplay(),this.updateClearButton(),this.internals&&this.internals.setFormValue(this.value)}handleDisabledChange(){this.updateTriggerState(),this.updateClearButton(),this.disabled&&this.open&&this.closeDropdown()}handleLoadingChange(){this.updateTriggerState(),this.updateClearButton(),this.loading&&this.open&&this.closeDropdown()}handleOpenChange(){this.updateDropdownState(),this.updateTriggerState(),this.open&&this.searchable&&this.searchInput&&setTimeout(()=>this.searchInput?.focus(),100),this.open||(this.focusedIndex=-1,this.searchInput&&(this.searchInput.value="",this.filteredOptions=[...this.options],this.updateDropdownContent()))}updateValueDisplay(){if(!this.valueDisplay)return;const e=this.options.filter(e=>this.multiple?this.selectedValues.has(e.value):e.value===this.value);if(this.multiple&&e.length>0)this.valueDisplay.innerHTML=`\n <div class="select-value--multiple">\n ${e.map(e=>`\n <span class="select-tag">\n <img class="select-tag-icon" src="${e.icon||""}" alt="" ${e.icon?"":"hidden"} />\n ${e.label}\n <span class="select-tag-remove" data-value="${e.value}" aria-label="Remove ${e.label}" ${this.disabled||this.readonly?"hidden":""}>×</span>\n </span>\n `).join("")}\n </div>\n `;else if(e.length>0){const t=e[0];this.valueDisplay.innerHTML=`\n <div class="select-value--single">\n <img class="select-value-icon" src="${t.icon||""}" alt="" ${t.icon?"":"hidden"} />\n <span>${t.label}</span>\n </div>\n `}else this.valueDisplay.innerHTML=`<span class="select-placeholder">${this.placeholder}</span>`}updateClearButton(){if(!this.clearButton)return;const e=this.options.filter(e=>this.multiple?this.selectedValues.has(e.value):e.value===this.value),t=this.clearable&&e.length>0&&!this.disabled&&!this.readonly;this.clearButton.style.display=t?"":"none"}updateDropdownContent(){this.optionsList&&(this.optionsList.innerHTML=this.renderOptions())}dispatchChangeEvent(e){return{value:this.multiple?Array.from(this.selectedValues):this.value,option:e,select:this}}dispatchOpenEvent(){return{select:this}}dispatchCloseEvent(){return{select:this}}focus(){this.trigger?.focus()}blur(){this.trigger?.blur(),this.open&&this.closeDropdown()}clear(){this.multiple?(this.selectedValues.clear(),this.value=""):this.value="",this.updateValueDisplay(),this.updateClearButton(),this.dispatchChangeEvent()}openDropdown(){this.open||this.disabled||this.readonly||(this.open=!0,this.dispatchOpenEvent())}closeDropdown(){this.open&&(this.open=!1,this.dispatchCloseEvent())}toggleDropdown(){this.open?this.closeDropdown():this.openDropdown()}selectOption(e){const t=this.options.find(t=>t.value===e);t&&!t.disabled&&this.handleOptionSelect(t)}updateTriggerState(){this.trigger&&(this.trigger.classList.toggle("select-trigger--open",this.open),this.trigger.classList.toggle("select-trigger--disabled",this.disabled),this.trigger.classList.toggle("select-trigger--readonly",this.readonly),this.trigger.classList.toggle("select-trigger--invalid",this.invalid),this.trigger.classList.toggle("select-trigger--loading",this.loading),this.trigger.setAttribute("aria-expanded",String(this.open)),this.trigger.disabled=this.disabled||this.loading)}updateDropdownState(){this.dropdown&&(this.dropdown.classList.toggle("select-dropdown--open",this.open),this.arrow&&this.arrow.classList.toggle("select-arrow--open",this.open))}})})()}(Snice);
78
70
  //# sourceMappingURL=snice-select.min.js.map