@threadlabs/looma 0.19.1 → 0.21.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 (517) hide show
  1. package/components/shared/trigger.js +9 -4
  2. package/components/ui-affordance-scope/ui-affordance-scope.html +1 -1
  3. package/components/ui-avatar/ui-avatar.html +6 -6
  4. package/components/ui-avatar-group/ui-avatar-group.html +3 -3
  5. package/components/ui-avatar-group/ui-avatar-group.js +1 -1
  6. package/components/ui-badge/ui-badge.html +3 -3
  7. package/components/ui-breadcrumb-item/ui-breadcrumb-item.html +1 -1
  8. package/components/ui-breadcrumbs/ui-breadcrumbs.html +1 -1
  9. package/components/ui-button/ui-button.html +17 -16
  10. package/components/ui-callout/ui-callout.html +1 -1
  11. package/components/ui-card/ui-card.html +5 -4
  12. package/components/ui-checkbox/ui-checkbox.html +11 -7
  13. package/components/ui-cluster/ui-cluster.html +4 -4
  14. package/components/ui-combobox/ui-combobox.html +299 -74
  15. package/components/ui-combobox/ui-combobox.js +21 -20
  16. package/components/ui-container/ui-container.html +2 -2
  17. package/components/ui-context-menu/ui-context-menu.html +17 -5
  18. package/components/ui-cover/ui-cover.html +1 -1
  19. package/components/ui-description-list/ui-description-list.html +3 -3
  20. package/components/ui-dialog/ui-dialog.html +15 -7
  21. package/components/ui-disclosure/ui-disclosure.html +17 -8
  22. package/components/ui-editable/ui-editable.html +20 -9
  23. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +6 -6
  24. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +6 -6
  25. package/components/ui-editor-mention-menu-item/ui-editor-mention-menu-item.html +1 -1
  26. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +6 -6
  27. package/components/ui-editor-slash-menu-group/ui-editor-slash-menu-group.html +1 -1
  28. package/components/ui-editor-slash-menu-item/ui-editor-slash-menu-item.html +2 -2
  29. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +33 -13
  30. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +107 -29
  31. package/components/ui-editor-table-overlay/ui-editor-table-overlay.js +5 -5
  32. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +48 -22
  33. package/components/ui-floating-action-button/ui-floating-action-button.html +1 -1
  34. package/components/ui-grid/ui-grid.html +2 -2
  35. package/components/ui-icon/ui-icon.html +13 -4
  36. package/components/ui-icon-button/ui-icon-button.html +6 -6
  37. package/components/ui-input/ui-input.html +28 -6
  38. package/components/ui-list/ui-list.html +5 -4
  39. package/components/ui-list-item/ui-list-item.html +2 -2
  40. package/components/ui-listbox/ui-listbox.html +31 -16
  41. package/components/ui-menu/ui-menu.html +18 -5
  42. package/components/ui-menu-group/ui-menu-group.html +1 -1
  43. package/components/ui-menu-item/ui-menu-item.html +14 -9
  44. package/components/ui-meter/ui-meter.html +7 -7
  45. package/components/ui-nav-item/ui-nav-item.html +10 -9
  46. package/components/ui-page-header/ui-page-header.html +1 -1
  47. package/components/ui-popover/ui-popover.html +14 -5
  48. package/components/ui-radio/ui-radio.html +7 -3
  49. package/components/ui-radio-group/ui-radio-group.html +12 -4
  50. package/components/ui-reel/ui-reel.html +3 -3
  51. package/components/ui-scroll-area/ui-scroll-area.html +1 -1
  52. package/components/ui-search-result-row/ui-search-result-row.html +1 -1
  53. package/components/ui-search-shell/ui-search-shell.html +7 -3
  54. package/components/ui-section/ui-section.html +3 -3
  55. package/components/ui-select/ui-select.html +2 -2
  56. package/components/ui-separator/ui-separator.html +2 -2
  57. package/components/ui-sidebar/ui-sidebar.html +13 -6
  58. package/components/ui-spinner/ui-spinner.html +5 -5
  59. package/components/ui-stack/ui-stack.html +3 -3
  60. package/components/ui-status-message/ui-status-message.html +5 -5
  61. package/components/ui-switch/ui-switch.html +16 -3
  62. package/components/ui-switcher/ui-switcher.html +3 -3
  63. package/components/ui-table/ui-table.html +1 -1
  64. package/components/ui-tabs/ui-tabs.html +14 -9
  65. package/components/ui-text/ui-text.html +6 -6
  66. package/components/ui-textarea/ui-textarea.html +10 -2
  67. package/components/ui-toast/ui-toast.html +8 -4
  68. package/components/ui-toast-region/ui-toast-region.html +27 -7
  69. package/components/ui-tooltip/ui-tooltip.html +16 -7
  70. package/components/ui-tree/ui-tree.html +30 -7
  71. package/components/ui-tree-item/ui-tree-item.html +21 -17
  72. package/dist/index.js +1 -1
  73. package/editor/table-overlay.d.ts +1 -1
  74. package/package.json +3 -3
  75. package/styles/ui-action-bar.css +1 -1
  76. package/styles/ui-affordance-scope.css +1 -1
  77. package/styles/ui-avatar-group.css +1 -1
  78. package/styles/ui-avatar.css +1 -1
  79. package/styles/ui-badge.css +1 -1
  80. package/styles/ui-breadcrumb-item.css +1 -1
  81. package/styles/ui-breadcrumbs.css +1 -1
  82. package/styles/ui-button.css +1 -1
  83. package/styles/ui-callout.css +1 -1
  84. package/styles/ui-card.css +1 -1
  85. package/styles/ui-checkbox.css +1 -1
  86. package/styles/ui-cluster.css +1 -1
  87. package/styles/ui-combobox.css +1 -1
  88. package/styles/ui-container.css +1 -1
  89. package/styles/ui-context-menu.css +1 -1
  90. package/styles/ui-cover.css +1 -1
  91. package/styles/ui-description-item.css +1 -1
  92. package/styles/ui-description-list.css +1 -1
  93. package/styles/ui-dialog.css +1 -1
  94. package/styles/ui-disclosure.css +1 -1
  95. package/styles/ui-editable.css +1 -1
  96. package/styles/ui-editor-insert-table-grid.css +1 -1
  97. package/styles/ui-editor-mention-menu-item.css +1 -1
  98. package/styles/ui-editor-mention-menu.css +1 -1
  99. package/styles/ui-editor-slash-menu-group.css +1 -1
  100. package/styles/ui-editor-slash-menu-item.css +1 -1
  101. package/styles/ui-editor-slash-menu.css +1 -1
  102. package/styles/ui-editor-table-context-menu.css +1 -1
  103. package/styles/ui-editor-table-overlay.css +1 -1
  104. package/styles/ui-editor-table-toolbar.css +1 -1
  105. package/styles/ui-editor-toolbar.css +1 -1
  106. package/styles/ui-floating-action-button.css +1 -1
  107. package/styles/ui-form-field.css +1 -1
  108. package/styles/ui-grid.css +1 -1
  109. package/styles/ui-icon-button.css +1 -1
  110. package/styles/ui-icon.css +1 -1
  111. package/styles/ui-input-group.css +1 -1
  112. package/styles/ui-input.css +1 -1
  113. package/styles/ui-list-item.css +1 -1
  114. package/styles/ui-list.css +1 -1
  115. package/styles/ui-listbox.css +1 -1
  116. package/styles/ui-menu-group.css +1 -1
  117. package/styles/ui-menu-item.css +1 -1
  118. package/styles/ui-menu.css +1 -1
  119. package/styles/ui-meter.css +1 -1
  120. package/styles/ui-nav-item.css +1 -1
  121. package/styles/ui-page-header.css +1 -1
  122. package/styles/ui-popover.css +1 -1
  123. package/styles/ui-radio-group.css +1 -1
  124. package/styles/ui-radio.css +1 -1
  125. package/styles/ui-reel.css +1 -1
  126. package/styles/ui-scroll-area.css +1 -1
  127. package/styles/ui-search-result-row.css +1 -1
  128. package/styles/ui-search-shell.css +1 -1
  129. package/styles/ui-section.css +1 -1
  130. package/styles/ui-select.css +1 -1
  131. package/styles/ui-separator.css +1 -1
  132. package/styles/ui-sidebar.css +1 -1
  133. package/styles/ui-spinner.css +1 -1
  134. package/styles/ui-stack.css +1 -1
  135. package/styles/ui-status-message.css +1 -1
  136. package/styles/ui-switch.css +1 -1
  137. package/styles/ui-switcher.css +1 -1
  138. package/styles/ui-table.css +1 -1
  139. package/styles/ui-tabs.css +1 -1
  140. package/styles/ui-text.css +1 -1
  141. package/styles/ui-textarea.css +1 -1
  142. package/styles/ui-toast-region.css +1 -1
  143. package/styles/ui-toast.css +1 -1
  144. package/styles/ui-tooltip.css +1 -1
  145. package/styles/ui-top-bar.css +1 -1
  146. package/styles/ui-tree-item.css +1 -1
  147. package/styles/ui-tree.css +1 -1
  148. package/vanilla/UiActionBar.d.ts +1 -1
  149. package/vanilla/UiActionBar.js +5 -1
  150. package/vanilla/UiAffordanceScope.d.ts +1 -1
  151. package/vanilla/UiAffordanceScope.js +3 -2
  152. package/vanilla/UiAvatar.d.ts +1 -1
  153. package/vanilla/UiAvatar.js +4 -3
  154. package/vanilla/UiAvatarGroup.d.ts +1 -1
  155. package/vanilla/UiAvatarGroup.js +3 -2
  156. package/vanilla/UiBadge.d.ts +1 -1
  157. package/vanilla/UiBadge.js +2 -1
  158. package/vanilla/UiBreadcrumbItem.d.ts +1 -1
  159. package/vanilla/UiBreadcrumbItem.js +2 -1
  160. package/vanilla/UiBreadcrumbs.d.ts +1 -1
  161. package/vanilla/UiBreadcrumbs.js +4 -7
  162. package/vanilla/UiButton.d.ts +1 -1
  163. package/vanilla/UiButton.js +6 -4
  164. package/vanilla/UiCallout.d.ts +1 -1
  165. package/vanilla/UiCallout.js +3 -2
  166. package/vanilla/UiCard.d.ts +1 -1
  167. package/vanilla/UiCard.js +6 -2
  168. package/vanilla/UiCheckbox.d.ts +1 -1
  169. package/vanilla/UiCheckbox.js +4 -2
  170. package/vanilla/UiCluster.d.ts +1 -1
  171. package/vanilla/UiCluster.js +2 -1
  172. package/vanilla/UiCombobox.d.ts +3 -2
  173. package/vanilla/UiCombobox.js +8 -2
  174. package/vanilla/UiContainer.d.ts +1 -1
  175. package/vanilla/UiContainer.js +2 -1
  176. package/vanilla/UiContextMenu.d.ts +1 -1
  177. package/vanilla/UiContextMenu.js +3 -2
  178. package/vanilla/UiCover.d.ts +1 -1
  179. package/vanilla/UiCover.js +4 -5
  180. package/vanilla/UiDescriptionItem.d.ts +1 -1
  181. package/vanilla/UiDescriptionItem.js +4 -7
  182. package/vanilla/UiDescriptionList.d.ts +1 -1
  183. package/vanilla/UiDescriptionList.js +2 -1
  184. package/vanilla/UiDialog.d.ts +1 -1
  185. package/vanilla/UiDialog.js +4 -2
  186. package/vanilla/UiDisclosure.d.ts +1 -1
  187. package/vanilla/UiDisclosure.js +4 -2
  188. package/vanilla/UiEditable.d.ts +1 -1
  189. package/vanilla/UiEditable.js +2 -2
  190. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  191. package/vanilla/UiEditorInsertTableGrid.js +1 -1
  192. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  193. package/vanilla/UiEditorMentionMenu.js +5 -2
  194. package/vanilla/UiEditorMentionMenuItem.d.ts +1 -1
  195. package/vanilla/UiEditorMentionMenuItem.js +3 -1
  196. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  197. package/vanilla/UiEditorSlashMenu.js +6 -2
  198. package/vanilla/UiEditorSlashMenuGroup.d.ts +1 -1
  199. package/vanilla/UiEditorSlashMenuGroup.js +4 -7
  200. package/vanilla/UiEditorSlashMenuItem.d.ts +1 -1
  201. package/vanilla/UiEditorSlashMenuItem.js +2 -1
  202. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  203. package/vanilla/UiEditorTableContextMenu.js +2 -2
  204. package/vanilla/UiEditorTableOverlay.d.ts +12 -2
  205. package/vanilla/UiEditorTableOverlay.js +2 -2
  206. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  207. package/vanilla/UiEditorTableToolbar.js +2 -2
  208. package/vanilla/UiEditorToolbar.d.ts +1 -1
  209. package/vanilla/UiEditorToolbar.js +2 -1
  210. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  211. package/vanilla/UiFloatingActionButton.js +2 -1
  212. package/vanilla/UiFormField.d.ts +1 -1
  213. package/vanilla/UiFormField.js +6 -1
  214. package/vanilla/UiGrid.d.ts +1 -1
  215. package/vanilla/UiGrid.js +4 -3
  216. package/vanilla/UiIcon.d.ts +1 -1
  217. package/vanilla/UiIcon.js +1 -1
  218. package/vanilla/UiIconButton.d.ts +1 -1
  219. package/vanilla/UiIconButton.js +4 -3
  220. package/vanilla/UiInput.d.ts +5 -4
  221. package/vanilla/UiInput.js +16 -13
  222. package/vanilla/UiInputGroup.d.ts +1 -1
  223. package/vanilla/UiInputGroup.js +5 -1
  224. package/vanilla/UiList.d.ts +1 -1
  225. package/vanilla/UiList.js +4 -2
  226. package/vanilla/UiListItem.d.ts +1 -1
  227. package/vanilla/UiListItem.js +5 -1
  228. package/vanilla/UiListbox.d.ts +1 -1
  229. package/vanilla/UiListbox.js +3 -2
  230. package/vanilla/UiMenu.d.ts +1 -1
  231. package/vanilla/UiMenu.js +3 -2
  232. package/vanilla/UiMenuGroup.d.ts +1 -1
  233. package/vanilla/UiMenuGroup.js +2 -1
  234. package/vanilla/UiMenuItem.d.ts +1 -1
  235. package/vanilla/UiMenuItem.js +6 -2
  236. package/vanilla/UiMeter.d.ts +1 -1
  237. package/vanilla/UiMeter.js +2 -2
  238. package/vanilla/UiNavItem.d.ts +2 -2
  239. package/vanilla/UiNavItem.js +11 -5
  240. package/vanilla/UiPageHeader.d.ts +1 -1
  241. package/vanilla/UiPageHeader.js +8 -5
  242. package/vanilla/UiPopover.d.ts +1 -1
  243. package/vanilla/UiPopover.js +3 -2
  244. package/vanilla/UiRadio.d.ts +1 -1
  245. package/vanilla/UiRadio.js +4 -2
  246. package/vanilla/UiRadioGroup.d.ts +1 -1
  247. package/vanilla/UiRadioGroup.js +3 -2
  248. package/vanilla/UiReel.d.ts +1 -1
  249. package/vanilla/UiReel.js +2 -1
  250. package/vanilla/UiScrollArea.d.ts +1 -1
  251. package/vanilla/UiScrollArea.js +3 -2
  252. package/vanilla/UiSearchResultRow.d.ts +1 -1
  253. package/vanilla/UiSearchResultRow.js +6 -1
  254. package/vanilla/UiSearchShell.d.ts +1 -1
  255. package/vanilla/UiSearchShell.js +6 -2
  256. package/vanilla/UiSection.d.ts +1 -1
  257. package/vanilla/UiSection.js +5 -2
  258. package/vanilla/UiSelect.d.ts +1 -1
  259. package/vanilla/UiSelect.js +3 -2
  260. package/vanilla/UiSeparator.d.ts +1 -1
  261. package/vanilla/UiSeparator.js +3 -7
  262. package/vanilla/UiSidebar.d.ts +1 -1
  263. package/vanilla/UiSidebar.js +3 -2
  264. package/vanilla/UiSpinner.d.ts +1 -1
  265. package/vanilla/UiSpinner.js +2 -2
  266. package/vanilla/UiStack.d.ts +1 -1
  267. package/vanilla/UiStack.js +2 -1
  268. package/vanilla/UiStatusMessage.d.ts +1 -1
  269. package/vanilla/UiStatusMessage.js +4 -2
  270. package/vanilla/UiSwitch.d.ts +1 -1
  271. package/vanilla/UiSwitch.js +4 -2
  272. package/vanilla/UiSwitcher.d.ts +1 -1
  273. package/vanilla/UiSwitcher.js +3 -2
  274. package/vanilla/UiTable.d.ts +1 -1
  275. package/vanilla/UiTable.js +3 -2
  276. package/vanilla/UiTabs.d.ts +1 -1
  277. package/vanilla/UiTabs.js +4 -2
  278. package/vanilla/UiText.d.ts +1 -1
  279. package/vanilla/UiText.js +13 -2
  280. package/vanilla/UiTextarea.d.ts +1 -1
  281. package/vanilla/UiTextarea.js +3 -3
  282. package/vanilla/UiToast.d.ts +1 -1
  283. package/vanilla/UiToast.js +4 -2
  284. package/vanilla/UiToastRegion.d.ts +1 -1
  285. package/vanilla/UiToastRegion.js +3 -2
  286. package/vanilla/UiTooltip.d.ts +1 -1
  287. package/vanilla/UiTooltip.js +3 -2
  288. package/vanilla/UiTopBar.d.ts +1 -1
  289. package/vanilla/UiTopBar.js +5 -1
  290. package/vanilla/UiTree.d.ts +1 -1
  291. package/vanilla/UiTree.js +3 -2
  292. package/vanilla/UiTreeItem.d.ts +1 -1
  293. package/vanilla/UiTreeItem.js +8 -4
  294. package/vue/UiActionBar.vue +33 -2
  295. package/vue/UiAffordanceScope.d.ts +23 -8
  296. package/vue/UiAffordanceScope.vue +90 -17
  297. package/vue/UiAvatar.d.ts +77 -19
  298. package/vue/UiAvatar.vue +151 -31
  299. package/vue/UiAvatarGroup.d.ts +50 -13
  300. package/vue/UiAvatarGroup.vue +121 -23
  301. package/vue/UiBadge.d.ts +32 -10
  302. package/vue/UiBadge.vue +104 -17
  303. package/vue/UiBreadcrumbItem.d.ts +14 -6
  304. package/vue/UiBreadcrumbItem.vue +82 -15
  305. package/vue/UiBreadcrumbs.d.ts +14 -6
  306. package/vue/UiBreadcrumbs.vue +78 -10
  307. package/vue/UiButton.d.ts +122 -27
  308. package/vue/UiButton.vue +288 -64
  309. package/vue/UiCallout.d.ts +14 -6
  310. package/vue/UiCallout.vue +84 -16
  311. package/vue/UiCard.d.ts +41 -12
  312. package/vue/UiCard.vue +149 -25
  313. package/vue/UiCheckbox.d.ts +85 -28
  314. package/vue/UiCheckbox.vue +173 -43
  315. package/vue/UiCluster.d.ts +41 -7
  316. package/vue/UiCluster.vue +122 -13
  317. package/vue/UiCombobox.d.ts +303 -110
  318. package/vue/UiCombobox.vue +723 -412
  319. package/vue/UiContainer.d.ts +23 -5
  320. package/vue/UiContainer.vue +89 -9
  321. package/vue/UiContextMenu.d.ts +38 -23
  322. package/vue/UiContextMenu.vue +113 -38
  323. package/vue/UiCover.d.ts +14 -6
  324. package/vue/UiCover.vue +76 -12
  325. package/vue/UiDescriptionItem.d.ts +14 -6
  326. package/vue/UiDescriptionItem.vue +78 -11
  327. package/vue/UiDescriptionList.d.ts +32 -9
  328. package/vue/UiDescriptionList.vue +106 -16
  329. package/vue/UiDialog.d.ts +89 -30
  330. package/vue/UiDialog.vue +168 -38
  331. package/vue/UiDisclosure.d.ts +70 -27
  332. package/vue/UiDisclosure.vue +149 -36
  333. package/vue/UiEditable.d.ts +119 -41
  334. package/vue/UiEditable.vue +220 -62
  335. package/vue/UiEditorInsertTableGrid.d.ts +46 -17
  336. package/vue/UiEditorInsertTableGrid.vue +215 -40
  337. package/vue/UiEditorMentionMenu.d.ts +128 -41
  338. package/vue/UiEditorMentionMenu.vue +211 -37
  339. package/vue/UiEditorMentionMenuItem.d.ts +32 -10
  340. package/vue/UiEditorMentionMenuItem.vue +98 -17
  341. package/vue/UiEditorSlashMenu.d.ts +110 -37
  342. package/vue/UiEditorSlashMenu.vue +189 -31
  343. package/vue/UiEditorSlashMenuGroup.d.ts +14 -6
  344. package/vue/UiEditorSlashMenuGroup.vue +80 -12
  345. package/vue/UiEditorSlashMenuItem.d.ts +50 -14
  346. package/vue/UiEditorSlashMenuItem.vue +120 -23
  347. package/vue/UiEditorTableContextMenu.d.ts +64 -20
  348. package/vue/UiEditorTableContextMenu.vue +326 -91
  349. package/vue/UiEditorTableOverlay.d.ts +170 -44
  350. package/vue/UiEditorTableOverlay.vue +420 -149
  351. package/vue/UiEditorTableToolbar.d.ts +64 -20
  352. package/vue/UiEditorTableToolbar.vue +344 -107
  353. package/vue/UiEditorToolbar.d.ts +14 -6
  354. package/vue/UiEditorToolbar.vue +79 -15
  355. package/vue/UiFloatingActionButton.d.ts +32 -10
  356. package/vue/UiFloatingActionButton.vue +96 -18
  357. package/vue/UiFormField.d.ts +32 -10
  358. package/vue/UiFormField.vue +99 -19
  359. package/vue/UiGrid.d.ts +32 -6
  360. package/vue/UiGrid.vue +95 -11
  361. package/vue/UiIcon.d.ts +14 -6
  362. package/vue/UiIcon.vue +99 -14
  363. package/vue/UiIconButton.d.ts +77 -19
  364. package/vue/UiIconButton.vue +176 -39
  365. package/vue/UiInput.d.ts +50 -19
  366. package/vue/UiInput.vue +326 -33
  367. package/vue/UiInputGroup.d.ts +14 -6
  368. package/vue/UiInputGroup.vue +79 -15
  369. package/vue/UiList.d.ts +41 -12
  370. package/vue/UiList.vue +125 -22
  371. package/vue/UiListItem.d.ts +23 -8
  372. package/vue/UiListItem.vue +88 -16
  373. package/vue/UiListbox.d.ts +86 -27
  374. package/vue/UiListbox.vue +272 -64
  375. package/vue/UiMenu.d.ts +69 -33
  376. package/vue/UiMenu.vue +142 -38
  377. package/vue/UiMenuGroup.d.ts +14 -6
  378. package/vue/UiMenuGroup.vue +80 -11
  379. package/vue/UiMenuItem.d.ts +61 -25
  380. package/vue/UiMenuItem.vue +174 -45
  381. package/vue/UiMeter.d.ts +68 -18
  382. package/vue/UiMeter.vue +215 -41
  383. package/vue/UiNavItem.d.ts +50 -11
  384. package/vue/UiNavItem.vue +163 -29
  385. package/vue/UiPageHeader.d.ts +14 -6
  386. package/vue/UiPageHeader.vue +75 -12
  387. package/vue/UiPopover.d.ts +43 -21
  388. package/vue/UiPopover.vue +147 -27
  389. package/vue/UiRadio.d.ts +67 -24
  390. package/vue/UiRadio.vue +147 -36
  391. package/vue/UiRadioGroup.d.ts +79 -29
  392. package/vue/UiRadioGroup.vue +162 -41
  393. package/vue/UiReel.d.ts +32 -6
  394. package/vue/UiReel.vue +97 -11
  395. package/vue/UiScrollArea.d.ts +14 -6
  396. package/vue/UiScrollArea.vue +83 -14
  397. package/vue/UiSearchResultRow.d.ts +23 -8
  398. package/vue/UiSearchResultRow.vue +86 -16
  399. package/vue/UiSearchShell.d.ts +48 -19
  400. package/vue/UiSearchShell.vue +120 -26
  401. package/vue/UiSection.d.ts +32 -10
  402. package/vue/UiSection.vue +103 -17
  403. package/vue/UiSelect.d.ts +59 -17
  404. package/vue/UiSelect.vue +140 -29
  405. package/vue/UiSeparator.d.ts +14 -6
  406. package/vue/UiSeparator.vue +80 -9
  407. package/vue/UiSidebar.d.ts +95 -31
  408. package/vue/UiSidebar.vue +172 -39
  409. package/vue/UiSpinner.d.ts +23 -8
  410. package/vue/UiSpinner.vue +115 -24
  411. package/vue/UiStack.d.ts +32 -6
  412. package/vue/UiStack.vue +107 -11
  413. package/vue/UiStatusMessage.d.ts +32 -10
  414. package/vue/UiStatusMessage.vue +109 -19
  415. package/vue/UiSwitch.d.ts +67 -24
  416. package/vue/UiSwitch.vue +147 -36
  417. package/vue/UiSwitcher.d.ts +41 -7
  418. package/vue/UiSwitcher.vue +118 -15
  419. package/vue/UiTable.d.ts +23 -8
  420. package/vue/UiTable.vue +91 -17
  421. package/vue/UiTabs.d.ts +66 -23
  422. package/vue/UiTabs.vue +230 -44
  423. package/vue/UiText.d.ts +68 -18
  424. package/vue/UiText.vue +308 -48
  425. package/vue/UiTextarea.d.ts +84 -21
  426. package/vue/UiTextarea.vue +172 -38
  427. package/vue/UiToast.d.ts +28 -13
  428. package/vue/UiToast.vue +103 -24
  429. package/vue/UiToastRegion.d.ts +29 -14
  430. package/vue/UiToastRegion.vue +202 -47
  431. package/vue/UiTooltip.d.ts +81 -31
  432. package/vue/UiTooltip.vue +192 -37
  433. package/vue/UiTopBar.vue +33 -2
  434. package/vue/UiTree.d.ts +72 -29
  435. package/vue/UiTree.vue +170 -49
  436. package/vue/UiTreeItem.d.ts +136 -35
  437. package/vue/UiTreeItem.vue +227 -61
  438. package/vue/chunks/UiActionBar.js +16 -3
  439. package/vue/chunks/UiAffordanceScope.js +66 -11
  440. package/vue/chunks/UiAvatar.js +121 -20
  441. package/vue/chunks/UiAvatarGroup.js +94 -15
  442. package/vue/chunks/UiBadge.js +82 -10
  443. package/vue/chunks/UiBreadcrumbItem.js +43 -9
  444. package/vue/chunks/UiBreadcrumbs.js +41 -5
  445. package/vue/chunks/UiButton.js +237 -51
  446. package/vue/chunks/UiCallout.js +53 -11
  447. package/vue/chunks/UiCard.js +145 -18
  448. package/vue/chunks/UiCheckbox.js +130 -30
  449. package/vue/chunks/UiCluster.js +99 -12
  450. package/vue/chunks/UiCombobox.js +545 -162
  451. package/vue/chunks/UiContainer.js +65 -7
  452. package/vue/chunks/UiContextMenu.js +56 -11
  453. package/vue/chunks/UiCover.js +41 -6
  454. package/vue/chunks/UiDescriptionItem.js +39 -4
  455. package/vue/chunks/UiDescriptionList.js +80 -10
  456. package/vue/chunks/UiDialog.js +125 -18
  457. package/vue/chunks/UiDisclosure.js +102 -17
  458. package/vue/chunks/UiEditable.js +154 -29
  459. package/vue/chunks/UiEditorInsertTableGrid.js +154 -31
  460. package/vue/chunks/UiEditorMentionMenu.js +221 -18
  461. package/vue/chunks/UiEditorMentionMenuItem.js +64 -7
  462. package/vue/chunks/UiEditorSlashMenu.js +201 -14
  463. package/vue/chunks/UiEditorSlashMenuGroup.js +43 -9
  464. package/vue/chunks/UiEditorSlashMenuItem.js +80 -14
  465. package/vue/chunks/UiEditorTableContextMenu.js +220 -49
  466. package/vue/chunks/UiEditorTableOverlay.js +390 -85
  467. package/vue/chunks/UiEditorTableToolbar.js +248 -71
  468. package/vue/chunks/UiEditorToolbar.js +44 -10
  469. package/vue/chunks/UiFloatingActionButton.js +57 -9
  470. package/vue/chunks/UiFormField.js +63 -12
  471. package/vue/chunks/UiGrid.js +80 -9
  472. package/vue/chunks/UiIcon.js +73 -16
  473. package/vue/chunks/UiIconButton.js +126 -28
  474. package/vue/chunks/UiInput.js +328 -22
  475. package/vue/chunks/UiInputGroup.js +44 -10
  476. package/vue/chunks/UiList.js +104 -15
  477. package/vue/chunks/UiListItem.js +57 -8
  478. package/vue/chunks/UiListbox.js +208 -49
  479. package/vue/chunks/UiMenu.js +88 -15
  480. package/vue/chunks/UiMenuGroup.js +41 -5
  481. package/vue/chunks/UiMenuItem.js +111 -32
  482. package/vue/chunks/UiMeter.js +166 -36
  483. package/vue/chunks/UiNavItem.js +133 -37
  484. package/vue/chunks/UiPageHeader.js +41 -6
  485. package/vue/chunks/UiPopover.js +81 -11
  486. package/vue/chunks/UiRadio.js +115 -24
  487. package/vue/chunks/UiRadioGroup.js +108 -19
  488. package/vue/chunks/UiReel.js +81 -10
  489. package/vue/chunks/UiScrollArea.js +47 -10
  490. package/vue/chunks/UiSearchResultRow.js +47 -8
  491. package/vue/chunks/UiSearchShell.js +84 -24
  492. package/vue/chunks/UiSection.js +77 -10
  493. package/vue/chunks/UiSelect.js +108 -20
  494. package/vue/chunks/UiSeparator.js +41 -5
  495. package/vue/chunks/UiSidebar.js +136 -20
  496. package/vue/chunks/UiSpinner.js +64 -19
  497. package/vue/chunks/UiStack.js +87 -10
  498. package/vue/chunks/UiStatusMessage.js +82 -12
  499. package/vue/chunks/UiSwitch.js +115 -24
  500. package/vue/chunks/UiSwitcher.js +103 -15
  501. package/vue/chunks/UiTable.js +63 -11
  502. package/vue/chunks/UiTabs.js +170 -30
  503. package/vue/chunks/UiText.js +365 -38
  504. package/vue/chunks/UiTextarea.js +132 -26
  505. package/vue/chunks/UiToast.js +70 -12
  506. package/vue/chunks/UiToastRegion.js +154 -33
  507. package/vue/chunks/UiTooltip.js +124 -16
  508. package/vue/chunks/UiTopBar.js +16 -3
  509. package/vue/chunks/UiTree.js +107 -15
  510. package/vue/chunks/UiTreeItem.js +167 -43
  511. package/vue/chunks/control.js +171 -0
  512. package/vue/chunks/host.js +170 -27
  513. package/vue/chunks/props.js +477 -0
  514. package/vue/components.css +1192 -1192
  515. package/vue/editor/index.js +58 -15
  516. package/vue/editor/primitives.d.ts +52 -2
  517. package/vue/host.ts +370 -39
@@ -1,11 +1,37 @@
1
1
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
- import { n as useComponentHost, t as createDispatch } from "./host.js";
2
+ import { r as useComponentHost, t as createDispatch } from "./host.js";
3
+ import { t as checkedProp } from "./props.js";
3
4
  import { t as UiBadge_default } from "./UiBadge.js";
5
+ import { r as vBindControl } from "./control.js";
4
6
  import { t as UiTooltip_default } from "./UiTooltip.js";
5
- import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, mergeProps, normalizeClass, normalizeStyle, openBlock, ref, renderList, renderSlot, toDisplayString, useTemplateRef, withCtx } from "vue";
6
- import * as controllerModule from "@threadlabs/looma/components/ui-combobox/ui-combobox.js";
7
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, getCurrentInstance, h, mergeProps, normalizeClass, normalizeStyle, openBlock, ref, renderList, renderSlot, toDisplayString, unref, useTemplateRef, watchSyncEffect, withCtx, withDirectives } from "vue";
7
8
  //#region .build/vue/UiCombobox.vue?vue&type=script&setup=true&lang.ts
8
- var _hoisted_1 = ["data-ui-combobox-state"];
9
+ var _hoisted_1 = [
10
+ "data-allow-create",
11
+ "data-allow-free-text",
12
+ "data-clearable",
13
+ "data-disabled",
14
+ "data-disclosure",
15
+ "data-filter",
16
+ "data-help",
17
+ "data-invalid",
18
+ "data-items",
19
+ "data-label",
20
+ "data-label-visibility",
21
+ "data-loading",
22
+ "data-multiple",
23
+ "data-name",
24
+ "data-open-on-focus",
25
+ "data-placeholder",
26
+ "data-query",
27
+ "data-readonly",
28
+ "data-required",
29
+ "data-selected-values",
30
+ "data-size",
31
+ "data-token-separators",
32
+ "data-value",
33
+ "data-ui-combobox-state"
34
+ ];
9
35
  var _hoisted_2 = ["for"];
10
36
  var _hoisted_3 = { class: "control" };
11
37
  var _hoisted_4 = {
@@ -24,7 +50,6 @@ var _hoisted_7 = [
24
50
  "aria-expanded",
25
51
  "aria-invalid",
26
52
  "aria-busy",
27
- ".value",
28
53
  "placeholder",
29
54
  "disabled",
30
55
  "readonly",
@@ -32,12 +57,12 @@ var _hoisted_7 = [
32
57
  ];
33
58
  var _hoisted_8 = [
34
59
  "name",
35
- "value",
60
+ "^value",
36
61
  "disabled"
37
62
  ];
38
63
  var _hoisted_9 = [
39
64
  "name",
40
- "value",
65
+ "^value",
41
66
  "disabled"
42
67
  ];
43
68
  var _hoisted_10 = ["disabled"];
@@ -108,61 +133,97 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
108
133
  __name: "UiCombobox",
109
134
  props: {
110
135
  allowCreate: {
111
- type: Boolean,
136
+ type: null,
112
137
  default: false
113
138
  },
114
139
  allowFreeText: {
115
- type: Boolean,
140
+ type: null,
116
141
  default: false
117
142
  },
118
143
  clearable: {
119
- type: Boolean,
144
+ type: null,
120
145
  default: false
121
146
  },
122
147
  disabled: {
123
- type: Boolean,
148
+ type: null,
124
149
  default: false
125
150
  },
126
151
  disclosure: {
127
- type: Boolean,
152
+ type: null,
128
153
  default: false
129
154
  },
130
- filter: { default: "label" },
131
- help: { default: "" },
155
+ filter: {
156
+ type: null,
157
+ default: "label"
158
+ },
159
+ help: {
160
+ type: null,
161
+ default: ""
162
+ },
132
163
  invalid: {
133
- type: Boolean,
164
+ type: null,
134
165
  default: false
135
166
  },
136
- items: {},
137
- label: { default: "" },
138
- labelVisibility: { default: "visible" },
167
+ items: {
168
+ type: null,
169
+ default: null
170
+ },
171
+ label: {
172
+ type: null,
173
+ default: ""
174
+ },
175
+ labelVisibility: {
176
+ type: null,
177
+ default: "visible"
178
+ },
139
179
  loading: {
140
- type: Boolean,
180
+ type: null,
141
181
  default: false
142
182
  },
143
183
  multiple: {
144
- type: Boolean,
184
+ type: null,
145
185
  default: false
146
186
  },
147
- name: { default: "" },
187
+ name: {
188
+ type: null,
189
+ default: ""
190
+ },
148
191
  openOnFocus: {
149
- type: Boolean,
192
+ type: null,
150
193
  default: false
151
194
  },
152
- placeholder: { default: "" },
153
- query: {},
195
+ placeholder: {
196
+ type: null,
197
+ default: ""
198
+ },
199
+ query: {
200
+ type: null,
201
+ default: null
202
+ },
154
203
  readonly: {
155
- type: Boolean,
204
+ type: null,
156
205
  default: false
157
206
  },
158
207
  required: {
159
- type: Boolean,
208
+ type: null,
160
209
  default: false
161
210
  },
162
- selectedValues: {},
163
- size: { default: "md" },
164
- tokenSeparators: {},
165
- value: {}
211
+ selectedValues: {
212
+ type: null,
213
+ default: null
214
+ },
215
+ size: {
216
+ type: null,
217
+ default: "md"
218
+ },
219
+ tokenSeparators: {
220
+ type: null,
221
+ default: null
222
+ },
223
+ value: {
224
+ type: null,
225
+ default: null
226
+ }
166
227
  },
167
228
  emits: [
168
229
  "update:query",
@@ -170,6 +231,7 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
170
231
  "update:value",
171
232
  "query-change",
172
233
  "value-change",
234
+ "items-change",
173
235
  "free-entry",
174
236
  "create-entry",
175
237
  "validation-change",
@@ -181,6 +243,249 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
181
243
  ],
182
244
  setup(__props, { expose: __expose, emit: __emit }) {
183
245
  const props = __props;
246
+ const checkedProps = computed(() => ({
247
+ allowCreate: checkedProp(props["allowCreate"], {
248
+ kind: "terminal",
249
+ name: "boolean"
250
+ }, false, "allowCreate", void 0, void 0),
251
+ allowFreeText: checkedProp(props["allowFreeText"], {
252
+ kind: "terminal",
253
+ name: "boolean"
254
+ }, false, "allowFreeText", void 0, void 0),
255
+ clearable: checkedProp(props["clearable"], {
256
+ kind: "terminal",
257
+ name: "boolean"
258
+ }, false, "clearable", void 0, void 0),
259
+ disabled: checkedProp(props["disabled"], {
260
+ kind: "terminal",
261
+ name: "boolean"
262
+ }, false, "disabled", void 0, void 0),
263
+ disclosure: checkedProp(props["disclosure"], {
264
+ kind: "terminal",
265
+ name: "boolean"
266
+ }, false, "disclosure", void 0, void 0),
267
+ filter: checkedProp(props["filter"], {
268
+ kind: "terminal",
269
+ name: "keyword"
270
+ }, false, "filter", void 0, ["label", "none"]),
271
+ help: checkedProp(props["help"], {
272
+ kind: "terminal",
273
+ name: "string"
274
+ }, false, "help", void 0, void 0),
275
+ invalid: checkedProp(props["invalid"], {
276
+ kind: "terminal",
277
+ name: "boolean"
278
+ }, false, "invalid", void 0, void 0),
279
+ items: checkedProp(props["items"], {
280
+ kind: "list",
281
+ item: {
282
+ kind: "object",
283
+ fields: [
284
+ {
285
+ name: "id",
286
+ type: {
287
+ kind: "terminal",
288
+ name: "string"
289
+ },
290
+ optional: false
291
+ },
292
+ {
293
+ name: "value",
294
+ type: {
295
+ kind: "terminal",
296
+ name: "string"
297
+ },
298
+ optional: false
299
+ },
300
+ {
301
+ name: "label",
302
+ type: {
303
+ kind: "terminal",
304
+ name: "string"
305
+ },
306
+ optional: false
307
+ },
308
+ {
309
+ name: "group",
310
+ type: {
311
+ kind: "terminal",
312
+ name: "string"
313
+ },
314
+ optional: true
315
+ },
316
+ {
317
+ name: "disabled",
318
+ type: {
319
+ kind: "terminal",
320
+ name: "boolean"
321
+ },
322
+ optional: true
323
+ },
324
+ {
325
+ name: "description",
326
+ type: {
327
+ kind: "terminal",
328
+ name: "string"
329
+ },
330
+ optional: true
331
+ },
332
+ {
333
+ name: "tag",
334
+ type: {
335
+ kind: "object",
336
+ fields: [
337
+ {
338
+ name: "label",
339
+ type: {
340
+ kind: "terminal",
341
+ name: "string"
342
+ },
343
+ optional: false
344
+ },
345
+ {
346
+ name: "tone",
347
+ type: {
348
+ kind: "constrained",
349
+ base: {
350
+ kind: "terminal",
351
+ name: "keyword"
352
+ },
353
+ values: [
354
+ "neutral",
355
+ "accent",
356
+ "info",
357
+ "success",
358
+ "warning",
359
+ "danger"
360
+ ]
361
+ },
362
+ optional: true
363
+ },
364
+ {
365
+ name: "color",
366
+ type: {
367
+ kind: "terminal",
368
+ name: "string"
369
+ },
370
+ optional: true
371
+ }
372
+ ],
373
+ open: false
374
+ },
375
+ optional: true
376
+ }
377
+ ],
378
+ open: false
379
+ }
380
+ }, false, "items", void 0, void 0),
381
+ label: checkedProp(props["label"], {
382
+ kind: "terminal",
383
+ name: "string"
384
+ }, false, "label", void 0, void 0),
385
+ labelVisibility: checkedProp(props["labelVisibility"], {
386
+ kind: "terminal",
387
+ name: "keyword"
388
+ }, false, "labelVisibility", void 0, ["visible", "sr-only"]),
389
+ loading: checkedProp(props["loading"], {
390
+ kind: "terminal",
391
+ name: "boolean"
392
+ }, false, "loading", void 0, void 0),
393
+ multiple: checkedProp(props["multiple"], {
394
+ kind: "terminal",
395
+ name: "boolean"
396
+ }, false, "multiple", void 0, void 0),
397
+ name: checkedProp(props["name"], {
398
+ kind: "terminal",
399
+ name: "string"
400
+ }, false, "name", void 0, void 0),
401
+ openOnFocus: checkedProp(props["openOnFocus"], {
402
+ kind: "terminal",
403
+ name: "boolean"
404
+ }, false, "openOnFocus", void 0, void 0),
405
+ placeholder: checkedProp(props["placeholder"], {
406
+ kind: "terminal",
407
+ name: "string"
408
+ }, false, "placeholder", void 0, void 0),
409
+ query: checkedProp(props["query"], {
410
+ kind: "terminal",
411
+ name: "string"
412
+ }, false, "query", void 0, void 0),
413
+ readonly: checkedProp(props["readonly"], {
414
+ kind: "terminal",
415
+ name: "boolean"
416
+ }, false, "readonly", void 0, void 0),
417
+ required: checkedProp(props["required"], {
418
+ kind: "terminal",
419
+ name: "boolean"
420
+ }, false, "required", void 0, void 0),
421
+ selectedValues: checkedProp(props["selectedValues"], {
422
+ kind: "list",
423
+ item: {
424
+ kind: "terminal",
425
+ name: "string"
426
+ }
427
+ }, false, "selectedValues", void 0, void 0),
428
+ size: checkedProp(props["size"], {
429
+ kind: "terminal",
430
+ name: "keyword"
431
+ }, false, "size", void 0, [
432
+ "sm",
433
+ "md",
434
+ "lg"
435
+ ]),
436
+ tokenSeparators: checkedProp(props["tokenSeparators"], {
437
+ kind: "list",
438
+ item: {
439
+ kind: "terminal",
440
+ name: "string"
441
+ }
442
+ }, false, "tokenSeparators", void 0, void 0),
443
+ value: checkedProp(props["value"], {
444
+ kind: "terminal",
445
+ name: "string"
446
+ }, false, "value", void 0, void 0)
447
+ }));
448
+ checkedProps.value;
449
+ watchSyncEffect(() => {
450
+ checkedProps.value;
451
+ });
452
+ function nativeAttrs(attrs) {
453
+ const names = Object.keys(attrs);
454
+ if (!names.some((name) => Object.hasOwn(Object.prototype, name))) return attrs;
455
+ return Object.fromEntries(names.map((name) => [Object.hasOwn(Object.prototype, name) ? name === "__proto__" ? "__Proto__" : name[0].toUpperCase() + name.slice(1) : name, attrs[name]]));
456
+ }
457
+ const KeyedFailure = defineComponent({
458
+ props: { error: {
459
+ type: null,
460
+ required: true
461
+ } },
462
+ setup(props) {
463
+ return () => {
464
+ throw props.error;
465
+ };
466
+ }
467
+ });
468
+ const KeyedBoundary = defineComponent({ setup(_props, { slots }) {
469
+ let last = [];
470
+ return () => {
471
+ try {
472
+ last = slots.default?.() ?? [];
473
+ return last;
474
+ } catch (error) {
475
+ if (!(error instanceof Error) || error.diagnostic?.code !== "HR004") throw error;
476
+ if (typeof window === "undefined") throw error;
477
+ return [...last, h(KeyedFailure, { error })];
478
+ }
479
+ };
480
+ } });
481
+ const componentInstance = getCurrentInstance();
482
+ function reflectedProp(name, kebab, value, fallback, bound, separator) {
483
+ const incoming = componentInstance?.vnode.props;
484
+ if (!bound && (incoming === null || incoming === void 0 || !Object.hasOwn(incoming, name) && !Object.hasOwn(incoming, kebab))) return fallback;
485
+ if (value === null || value === void 0) return void 0;
486
+ return Array.isArray(value) && separator !== void 0 ? value.join(separator) : typeof value === "object" ? JSON.stringify(value) : String(value);
487
+ }
488
+ const hydrationInstance = getCurrentInstance();
184
489
  const emit = __emit;
185
490
  const root = ref(null);
186
491
  const fieldElement = useTemplateRef("field");
@@ -211,13 +516,32 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
211
516
  const message = ref("");
212
517
  const statusText = ref("");
213
518
  const validationStatus = ref("pristine");
519
+ let guardedPrevious;
520
+ const guarded = computed(() => {
521
+ if (!(internalItems.value?.["0"] == null || typeof internalItems.value?.["0"] === "object" && internalItems.value?.["0"] !== null && !Array.isArray(internalItems.value?.["0"]))) return guardedPrevious;
522
+ return guardedPrevious = checkedProps.value.required && !(checkedProps.value.multiple && internalItems.value[0]);
523
+ });
524
+ let guardedBindingPrevious;
525
+ const guardedBinding = computed(() => {
526
+ if (!(selected.value == null || typeof selected.value === "string" || selected.value === null)) return guardedBindingPrevious;
527
+ return guardedBindingPrevious = checkedProps.value.disabled || checkedProps.value.readonly || !raw.value && (checkedProps.value.multiple || selected.value === null);
528
+ });
529
+ const hydrationNode = hydrationInstance?.vnode.el;
530
+ if (typeof window !== "undefined" && hydrationNode != null && (!(hydrationNode instanceof Element) || hydrationNode.localName !== "div")) throw Object.assign(/* @__PURE__ */ new Error("HR005: Server markup for <ui-combobox> has an incompatible root."), {
531
+ name: "HtmlDiagnosticError",
532
+ diagnostic: Object.freeze({
533
+ code: "HR005",
534
+ message: "Server markup for <ui-combobox> has an incompatible root."
535
+ })
536
+ });
214
537
  /** The values the styles' :host-state() rules test. */
215
538
  const hostState = computed(() => [
216
- props.size && `size size=${props.size}`,
539
+ checkedProps.value.size && "size",
540
+ checkedProps.value.size != null && `size=${encodeURIComponent(checkedProps.value.size)}`,
217
541
  validationStatus.value && "validationStatus",
218
542
  `validationStatus=${encodeURIComponent(validationStatus.value)}`,
219
- props.invalid && "invalid",
220
- props.multiple && "multiple"
543
+ checkedProps.value.invalid && "invalid",
544
+ checkedProps.value.multiple && "multiple"
221
545
  ].filter(Boolean).join(" "));
222
546
  const isQueryChangeDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["query"] === "string" && typeof detail["display"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
223
547
  "query",
@@ -242,7 +566,8 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
242
566
  "option",
243
567
  "kind",
244
568
  "trigger"
245
- ].includes(key)) || Array.isArray(detail) && detail.every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && typeof item["id"] === "string" && typeof item["value"] === "string" && typeof item["label"] === "string" && (item["group"] === void 0 || typeof item["group"] === "string") && (item["disabled"] === void 0 || typeof item["disabled"] === "boolean") && (item["description"] === void 0 || typeof item["description"] === "string") && (item["tag"] === void 0 || item["tag"] !== null && typeof item["tag"] === "object" && !Array.isArray(item["tag"]) && typeof item["tag"]["label"] === "string" && (item["tag"]["tone"] === void 0 || item["tag"]["tone"] === "neutral" || item["tag"]["tone"] === "accent" || item["tag"]["tone"] === "info" || item["tag"]["tone"] === "success" || item["tag"]["tone"] === "warning" || item["tag"]["tone"] === "danger") && (item["tag"]["color"] === void 0 || typeof item["tag"]["color"] === "string") && Object.keys(item["tag"]).every((key) => [
569
+ ].includes(key));
570
+ const isItemsChangeDetail = (detail) => Array.isArray(detail) && detail.every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && typeof item["id"] === "string" && typeof item["value"] === "string" && typeof item["label"] === "string" && (item["group"] === void 0 || typeof item["group"] === "string") && (item["disabled"] === void 0 || typeof item["disabled"] === "boolean") && (item["description"] === void 0 || typeof item["description"] === "string") && (item["tag"] === void 0 || item["tag"] !== null && typeof item["tag"] === "object" && !Array.isArray(item["tag"]) && typeof item["tag"]["label"] === "string" && (item["tag"]["tone"] === void 0 || item["tag"]["tone"] === "neutral" || item["tag"]["tone"] === "accent" || item["tag"]["tone"] === "info" || item["tag"]["tone"] === "success" || item["tag"]["tone"] === "warning" || item["tag"]["tone"] === "danger") && (item["tag"]["color"] === void 0 || typeof item["tag"]["color"] === "string") && Object.keys(item["tag"]).every((key) => [
246
571
  "label",
247
572
  "tone",
248
573
  "color"
@@ -255,25 +580,6 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
255
580
  "description",
256
581
  "tag"
257
582
  ].includes(key)));
258
- const isFreeEntryDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (typeof detail["value"] === "string" || detail["value"] === null) && typeof detail["query"] === "string" && (detail["option"] !== null && typeof detail["option"] === "object" && !Array.isArray(detail["option"]) && typeof detail["option"]["id"] === "string" && typeof detail["option"]["value"] === "string" && typeof detail["option"]["label"] === "string" && (detail["option"]["group"] === void 0 || typeof detail["option"]["group"] === "string") && (detail["option"]["disabled"] === void 0 || typeof detail["option"]["disabled"] === "boolean") && (detail["option"]["description"] === void 0 || typeof detail["option"]["description"] === "string") && (detail["option"]["tag"] === void 0 || detail["option"]["tag"] !== null && typeof detail["option"]["tag"] === "object" && !Array.isArray(detail["option"]["tag"]) && typeof detail["option"]["tag"]["label"] === "string" && (detail["option"]["tag"]["tone"] === void 0 || detail["option"]["tag"]["tone"] === "neutral" || detail["option"]["tag"]["tone"] === "accent" || detail["option"]["tag"]["tone"] === "info" || detail["option"]["tag"]["tone"] === "success" || detail["option"]["tag"]["tone"] === "warning" || detail["option"]["tag"]["tone"] === "danger") && (detail["option"]["tag"]["color"] === void 0 || typeof detail["option"]["tag"]["color"] === "string") && Object.keys(detail["option"]["tag"]).every((key) => [
259
- "label",
260
- "tone",
261
- "color"
262
- ].includes(key))) && Object.keys(detail["option"]).every((key) => [
263
- "id",
264
- "value",
265
- "label",
266
- "group",
267
- "disabled",
268
- "description",
269
- "tag"
270
- ].includes(key)) || detail["option"] === null) && (detail["kind"] === "selection" || detail["kind"] === "clear" || detail["kind"] === "free-entry" || detail["kind"] === "create") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
271
- "value",
272
- "query",
273
- "option",
274
- "kind",
275
- "trigger"
276
- ].includes(key));
277
583
  const isValidationChangeDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && (detail["status"] === "pristine" || detail["status"] === "pending" || detail["status"] === "valid" || detail["status"] === "warning" || detail["status"] === "error") && typeof detail["touched"] === "boolean" && typeof detail["dirty"] === "boolean" && Array.isArray(detail["issues"]) && detail["issues"].every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && typeof item["message"] === "string" && (item["path"] === void 0 || Array.isArray(item["path"]) && item["path"].every((item) => true)) && (item["severity"] === void 0 || item["severity"] === "error" || item["severity"] === "warning") && Object.keys(item).every((key) => [
278
584
  "message",
279
585
  "path",
@@ -285,19 +591,6 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
285
591
  "issues",
286
592
  "output"
287
593
  ].includes(key));
288
- const isOptionsChangeDetail = (detail) => Array.isArray(detail) && detail.every((item) => item !== null && typeof item === "object" && !Array.isArray(item) && typeof item["id"] === "string" && typeof item["value"] === "string" && typeof item["label"] === "string" && (item["group"] === void 0 || typeof item["group"] === "string") && (item["disabled"] === void 0 || typeof item["disabled"] === "boolean") && (item["description"] === void 0 || typeof item["description"] === "string") && (item["tag"] === void 0 || item["tag"] !== null && typeof item["tag"] === "object" && !Array.isArray(item["tag"]) && typeof item["tag"]["label"] === "string" && (item["tag"]["tone"] === void 0 || item["tag"]["tone"] === "neutral" || item["tag"]["tone"] === "accent" || item["tag"]["tone"] === "info" || item["tag"]["tone"] === "success" || item["tag"]["tone"] === "warning" || item["tag"]["tone"] === "danger") && (item["tag"]["color"] === void 0 || typeof item["tag"]["color"] === "string") && Object.keys(item["tag"]).every((key) => [
289
- "label",
290
- "tone",
291
- "color"
292
- ].includes(key))) && Object.keys(item).every((key) => [
293
- "id",
294
- "value",
295
- "label",
296
- "group",
297
- "disabled",
298
- "description",
299
- "tag"
300
- ].includes(key)));
301
594
  const isAddItemDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && detail["item"] !== null && typeof detail["item"] === "object" && !Array.isArray(detail["item"]) && typeof detail["item"]["id"] === "string" && typeof detail["item"]["value"] === "string" && typeof detail["item"]["label"] === "string" && (detail["item"]["group"] === void 0 || typeof detail["item"]["group"] === "string") && (detail["item"]["disabled"] === void 0 || typeof detail["item"]["disabled"] === "boolean") && (detail["item"]["description"] === void 0 || typeof detail["item"]["description"] === "string") && (detail["item"]["tag"] === void 0 || detail["item"]["tag"] !== null && typeof detail["item"]["tag"] === "object" && !Array.isArray(detail["item"]["tag"]) && typeof detail["item"]["tag"]["label"] === "string" && (detail["item"]["tag"]["tone"] === void 0 || detail["item"]["tag"]["tone"] === "neutral" || detail["item"]["tag"]["tone"] === "accent" || detail["item"]["tag"]["tone"] === "info" || detail["item"]["tag"]["tone"] === "success" || detail["item"]["tag"]["tone"] === "warning" || detail["item"]["tag"]["tone"] === "danger") && (detail["item"]["tag"]["color"] === void 0 || typeof detail["item"]["tag"]["color"] === "string") && Object.keys(detail["item"]["tag"]).every((key) => [
302
595
  "label",
303
596
  "tone",
@@ -321,10 +614,11 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
321
614
  checks: {
322
615
  "query-change": isQueryChangeDetail,
323
616
  "value-change": isValueChangeDetail,
324
- "free-entry": isFreeEntryDetail,
325
- "create-entry": isFreeEntryDetail,
617
+ "items-change": isItemsChangeDetail,
618
+ "free-entry": isValueChangeDetail,
619
+ "create-entry": isValueChangeDetail,
326
620
  "validation-change": isValidationChangeDetail,
327
- "options-change": isOptionsChangeDetail,
621
+ "options-change": isItemsChangeDetail,
328
622
  "add-item": isAddItemDetail,
329
623
  "remove-item": isAddItemDetail,
330
624
  "create-item": isCreateItemDetail,
@@ -336,10 +630,14 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
336
630
  "value"
337
631
  ]
338
632
  });
339
- const { host, ready } = useComponentHost(controllerModule.default, {
633
+ const { host, ready } = useComponentHost(() => import("@threadlabs/looma/components/ui-combobox/ui-combobox.js"), {
340
634
  root,
341
635
  dispatch,
342
- props,
636
+ controllerSource: {
637
+ specifier: "../components/ui-combobox/ui-combobox.js",
638
+ definition: "./components/ui-combobox/ui-combobox.html"
639
+ },
640
+ props: checkedProps,
343
641
  refs: {
344
642
  field: fieldElement,
345
643
  input: inputElement,
@@ -370,80 +668,159 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
370
668
  });
371
669
  __expose({
372
670
  validate: async (...args) => {
373
- await ready();
374
- return controllerModule["validate"](host, ...args);
671
+ const controllerModule = await ready();
672
+ if (controllerModule === void 0) throw new TypeError("Controller method `validate` is not ready for <ui-combobox>.");
673
+ const method = Reflect.get(controllerModule, "validate");
674
+ if (typeof method !== "function") throw Object.assign(/* @__PURE__ */ new Error("HJ003: Controller does not export method `validate`."), {
675
+ name: "HtmlDiagnosticError",
676
+ diagnostic: Object.freeze({
677
+ code: "HJ003",
678
+ message: "Controller does not export method `validate`."
679
+ })
680
+ });
681
+ return method(host, ...args);
375
682
  },
376
683
  focusInput: async (...args) => {
377
- await ready();
378
- return controllerModule["focusInput"](host, ...args);
684
+ const controllerModule = await ready();
685
+ if (controllerModule === void 0) throw new TypeError("Controller method `focusInput` is not ready for <ui-combobox>.");
686
+ const method = Reflect.get(controllerModule, "focusInput");
687
+ if (typeof method !== "function") throw Object.assign(/* @__PURE__ */ new Error("HJ003: Controller does not export method `focusInput`."), {
688
+ name: "HtmlDiagnosticError",
689
+ diagnostic: Object.freeze({
690
+ code: "HJ003",
691
+ message: "Controller does not export method `focusInput`."
692
+ })
693
+ });
694
+ return method(host, ...args);
379
695
  }
380
696
  });
697
+ function text(value) {
698
+ if (Array.isArray(value)) return value.map(text).join(" ");
699
+ return value === null || value === void 0 || typeof value === "object" ? "" : String(value);
700
+ }
701
+ function uniqueKeys(items, keyOf) {
702
+ const seen = /* @__PURE__ */ new Set();
703
+ for (let index = 0; index < items.length; index += 1) {
704
+ const key = keyOf(items[index], index, {
705
+ index,
706
+ first: index === 0,
707
+ last: index === items.length - 1,
708
+ count: items.length
709
+ });
710
+ if (seen.has(key)) {
711
+ const message = `A keyed list produced duplicate key \`${text(key)}\`.`;
712
+ throw Object.assign(/* @__PURE__ */ new Error(`HR004: ${message}`), {
713
+ name: "HtmlDiagnosticError",
714
+ diagnostic: Object.freeze({
715
+ code: "HR004",
716
+ message
717
+ })
718
+ });
719
+ }
720
+ seen.add(key);
721
+ }
722
+ return items;
723
+ }
381
724
  return (_ctx, _cache) => {
382
- return openBlock(), createElementBlock("div", mergeProps({ "data-component": "ui-combobox" }, _ctx.$attrs, {
725
+ return openBlock(), createElementBlock("div", mergeProps({ "data-component": "ui-combobox" }, nativeAttrs(_ctx.$attrs), {
726
+ "data-allow-create": reflectedProp("allowCreate", "allow-create", checkedProps.value.allowCreate, void 0, false),
727
+ "data-allow-free-text": reflectedProp("allowFreeText", "allow-free-text", checkedProps.value.allowFreeText, void 0, false),
728
+ "data-clearable": reflectedProp("clearable", "clearable", checkedProps.value.clearable, void 0, false),
729
+ "data-disabled": reflectedProp("disabled", "disabled", checkedProps.value.disabled, void 0, false),
730
+ "data-disclosure": reflectedProp("disclosure", "disclosure", checkedProps.value.disclosure, void 0, false),
731
+ "data-filter": reflectedProp("filter", "filter", checkedProps.value.filter, void 0, false),
732
+ "data-help": reflectedProp("help", "help", checkedProps.value.help, void 0, false),
733
+ "data-invalid": reflectedProp("invalid", "invalid", checkedProps.value.invalid, void 0, false),
734
+ "data-items": reflectedProp("items", "items", checkedProps.value.items, void 0, false),
735
+ "data-label": reflectedProp("label", "label", checkedProps.value.label, void 0, false),
736
+ "data-label-visibility": reflectedProp("labelVisibility", "label-visibility", checkedProps.value.labelVisibility, void 0, false),
737
+ "data-loading": reflectedProp("loading", "loading", checkedProps.value.loading, void 0, false),
738
+ "data-multiple": reflectedProp("multiple", "multiple", checkedProps.value.multiple, void 0, false),
739
+ "data-name": reflectedProp("name", "name", checkedProps.value.name, void 0, false),
740
+ "data-open-on-focus": reflectedProp("openOnFocus", "open-on-focus", checkedProps.value.openOnFocus, void 0, false),
741
+ "data-placeholder": reflectedProp("placeholder", "placeholder", checkedProps.value.placeholder, void 0, false),
742
+ "data-query": reflectedProp("query", "query", checkedProps.value.query, void 0, false),
743
+ "data-readonly": reflectedProp("readonly", "readonly", checkedProps.value.readonly, void 0, false),
744
+ "data-required": reflectedProp("required", "required", checkedProps.value.required, void 0, false),
745
+ "data-selected-values": reflectedProp("selectedValues", "selected-values", checkedProps.value.selectedValues, void 0, false),
746
+ "data-size": reflectedProp("size", "size", checkedProps.value.size, void 0, false),
747
+ "data-token-separators": reflectedProp("tokenSeparators", "token-separators", checkedProps.value.tokenSeparators, void 0, false),
748
+ "data-value": reflectedProp("value", "value", checkedProps.value.value, void 0, false),
383
749
  "data-ui-combobox-state": hostState.value || void 0,
384
750
  ref_key: "root",
385
751
  ref: root
386
752
  }), [
387
753
  createElementVNode("label", {
388
754
  for: `${uid.value}-input`,
389
- class: normalizeClass({ "sr-only": __props.labelVisibility === "sr-only" })
390
- }, [createTextVNode(toDisplayString(__props.label) + " ", 1), __props.required ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createTextVNode(" *")], 64)) : createCommentVNode("v-if", true)], 10, _hoisted_2),
755
+ class: normalizeClass({ "sr-only": checkedProps.value.labelVisibility === "sr-only" })
756
+ }, [createTextVNode(toDisplayString(checkedProps.value.label) + " ", 1), checkedProps.value.required ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createTextVNode(" *")], 64)) : createCommentVNode("v-if", true)], 10, _hoisted_2),
391
757
  createElementVNode("div", _hoisted_3, [createElementVNode("div", _hoisted_4, [
392
758
  createElementVNode("div", _hoisted_5, [
393
759
  renderSlot(_ctx.$slots, "start", {}, void 0, true),
394
- __props.multiple ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(internalItems.value, (item, index) => {
395
- return openBlock(), createElementBlock("button", {
396
- key: item.id,
397
- class: "item",
398
- type: "button",
399
- tabindex: "-1",
400
- "data-index": index,
401
- disabled: __props.disabled || __props.readonly || item.disabled,
402
- "aria-label": `${item.label}, press Delete or Backspace to remove`
403
- }, [renderSlot(_ctx.$slots, `item-${item.id}`, {}, () => [createVNode(UiBadge_default, null, {
404
- default: withCtx(() => [createTextVNode(toDisplayString(item.label), 1)]),
405
- _: 2
406
- }, 1024)], true)], 8, _hoisted_6);
407
- }), 128)) : createCommentVNode("v-if", true),
408
- createElementVNode("input", {
760
+ checkedProps.value.multiple ? (openBlock(), createBlock(unref(KeyedBoundary), { key: 0 }, {
761
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(uniqueKeys(internalItems.value, (item, index, loop) => item.id), (item, index) => {
762
+ return openBlock(), createElementBlock("button", {
763
+ key: item.id,
764
+ class: "item",
765
+ type: "button",
766
+ tabindex: "-1",
767
+ "data-index": index,
768
+ disabled: checkedProps.value.disabled || checkedProps.value.readonly || item.disabled,
769
+ "aria-label": `${item.label}, press Delete or Backspace to remove`
770
+ }, [renderSlot(_ctx.$slots, `item-${item.id}`, {}, () => [createVNode(UiBadge_default, null, {
771
+ default: withCtx(() => [createTextVNode(toDisplayString(item.label), 1)]),
772
+ _: 2
773
+ }, 1024)], true)], 8, _hoisted_6);
774
+ }), 128))]),
775
+ _: 3
776
+ })) : createCommentVNode("v-if", true),
777
+ withDirectives(createElementVNode("input", {
409
778
  role: "combobox",
410
779
  "aria-autocomplete": "list",
411
780
  autocomplete: "off",
412
781
  id: `${uid.value}-input`,
413
782
  "aria-controls": `${uid.value}-listbox`,
414
783
  "aria-expanded": expanded.value,
415
- "aria-invalid": __props.invalid || validationStatus.value === "error",
416
- "aria-busy": __props.loading || validationStatus.value === "pending",
417
- ".value": display.value,
418
- placeholder: __props.placeholder,
419
- disabled: __props.disabled,
420
- readonly: __props.readonly,
421
- required: __props.required && !(__props.multiple && internalItems.value[0]),
784
+ "aria-invalid": checkedProps.value.invalid || validationStatus.value === "error",
785
+ "aria-busy": checkedProps.value.loading || validationStatus.value === "pending",
786
+ placeholder: checkedProps.value.placeholder ?? void 0,
787
+ disabled: checkedProps.value.disabled ?? void 0,
788
+ readonly: checkedProps.value.readonly ?? void 0,
789
+ required: guarded.value,
422
790
  ref: "input"
423
- }, null, 40, _hoisted_7)
791
+ }, null, 8, _hoisted_7), [[unref(vBindControl), {
792
+ tag: "input",
793
+ name: "value",
794
+ value: display.value,
795
+ nativeProperty: true,
796
+ defaultValue: ""
797
+ }]])
424
798
  ]),
425
- __props.name && !__props.multiple ? (openBlock(), createElementBlock("input", {
799
+ checkedProps.value.name && !checkedProps.value.multiple ? (openBlock(), createElementBlock("input", {
426
800
  key: 0,
427
801
  type: "hidden",
428
- name: __props.name,
429
- value: submitted.value,
430
- disabled: __props.disabled
802
+ name: checkedProps.value.name ?? void 0,
803
+ "^value": submitted.value,
804
+ disabled: checkedProps.value.disabled ?? void 0
431
805
  }, null, 8, _hoisted_8)) : createCommentVNode("v-if", true),
432
- __props.name && __props.multiple ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(internalItems.value, (item) => {
433
- return openBlock(), createElementBlock("input", {
434
- key: item.id,
435
- type: "hidden",
436
- name: __props.name,
437
- value: item.value,
438
- disabled: __props.disabled
439
- }, null, 8, _hoisted_9);
440
- }), 128)) : createCommentVNode("v-if", true),
441
- __props.clearable ? (openBlock(), createElementBlock("button", {
806
+ checkedProps.value.name && checkedProps.value.multiple ? (openBlock(), createBlock(unref(KeyedBoundary), { key: 1 }, {
807
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(uniqueKeys(internalItems.value, (item, index, loop) => item.id), (item) => {
808
+ return openBlock(), createElementBlock("input", {
809
+ key: item.id,
810
+ type: "hidden",
811
+ name: checkedProps.value.name ?? void 0,
812
+ "^value": item.value,
813
+ disabled: checkedProps.value.disabled ?? void 0
814
+ }, null, 8, _hoisted_9);
815
+ }), 128))]),
816
+ _: 1
817
+ })) : createCommentVNode("v-if", true),
818
+ checkedProps.value.clearable ? (openBlock(), createElementBlock("button", {
442
819
  key: 2,
443
820
  type: "button",
444
821
  "data-combobox-action": "clear",
445
822
  "aria-label": "Clear",
446
- disabled: __props.disabled || __props.readonly || !raw.value && (__props.multiple || selected.value === null)
823
+ disabled: guardedBinding.value
447
824
  }, [..._cache[0] || (_cache[0] = [createElementVNode("svg", {
448
825
  class: "affordance-icon",
449
826
  "aria-hidden": "true",
@@ -453,14 +830,14 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
453
830
  "stroke-width": "2",
454
831
  "stroke-linecap": "round"
455
832
  }, [createElementVNode("path", { d: "M7 7l10 10M17 7 7 17" })], -1)])], 8, _hoisted_10)) : createCommentVNode("v-if", true),
456
- __props.disclosure ? (openBlock(), createElementBlock("button", {
833
+ checkedProps.value.disclosure ? (openBlock(), createElementBlock("button", {
457
834
  key: 3,
458
835
  type: "button",
459
836
  "data-combobox-action": "disclosure",
460
837
  tabindex: "-1",
461
838
  "aria-label": "Show suggestions",
462
839
  "aria-controls": `${uid.value}-listbox`,
463
- disabled: __props.disabled || __props.readonly
840
+ disabled: checkedProps.value.disabled || checkedProps.value.readonly
464
841
  }, [..._cache[1] || (_cache[1] = [createElementVNode("svg", {
465
842
  class: "affordance-icon",
466
843
  "aria-hidden": "true",
@@ -471,13 +848,13 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
471
848
  "stroke-linecap": "round",
472
849
  "stroke-linejoin": "round"
473
850
  }, [createElementVNode("path", { d: "m6 9 6 6 6-6" })], -1)])], 8, _hoisted_11)) : createCommentVNode("v-if", true)
474
- ], 512), __props.help ? (openBlock(), createElementBlock("button", {
851
+ ], 512), checkedProps.value.help ? (openBlock(), createElementBlock("button", {
475
852
  key: 0,
476
853
  class: "help",
477
854
  type: "button",
478
855
  "aria-label": "Help",
479
856
  id: `${uid.value}-help`,
480
- disabled: __props.disabled
857
+ disabled: checkedProps.value.disabled ?? void 0
481
858
  }, [..._cache[2] || (_cache[2] = [createElementVNode("svg", {
482
859
  class: "help-icon",
483
860
  "aria-hidden": "true",
@@ -496,13 +873,13 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
496
873
  createElementVNode("path", { d: "M9.1 9a3 3 0 0 1 5.8 1c0 2-3 3-3 3" }),
497
874
  createElementVNode("path", { d: "M12 17h.01" })
498
875
  ], -1)])], 8, _hoisted_12)) : createCommentVNode("v-if", true)]),
499
- __props.help ? (openBlock(), createBlock(UiTooltip_default, {
876
+ checkedProps.value.help ? (openBlock(), createBlock(UiTooltip_default, {
500
877
  key: 0,
501
878
  trigger: "click",
502
879
  id: `${uid.value}-help-text`,
503
880
  for: `${uid.value}-help`
504
881
  }, {
505
- default: withCtx(() => [createTextVNode(toDisplayString(__props.help), 1)]),
882
+ default: withCtx(() => [createTextVNode(toDisplayString(checkedProps.value.help), 1)]),
506
883
  _: 1
507
884
  }, 8, ["id", "for"])) : createCommentVNode("v-if", true),
508
885
  createElementVNode("div", {
@@ -512,70 +889,76 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
512
889
  }, [createElementVNode("div", {
513
890
  role: "listbox",
514
891
  id: `${uid.value}-listbox`,
515
- "aria-label": `${__props.label} suggestions`,
516
- "aria-busy": __props.loading,
892
+ "aria-label": `${checkedProps.value.label ?? ""} suggestions`,
893
+ "aria-busy": checkedProps.value.loading ?? void 0,
517
894
  ref: "listbox"
518
895
  }, [
519
- (openBlock(true), createElementBlock(Fragment, null, renderList(groups.value, (group) => {
520
- return openBlock(), createElementBlock("div", {
521
- key: group.name,
522
- role: group.role,
523
- "aria-label": group.label ?? void 0
524
- }, [group.name ? (openBlock(), createElementBlock("div", _hoisted_16, toDisplayString(group.name), 1)) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(group.rows, (row) => {
896
+ createVNode(unref(KeyedBoundary), null, {
897
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(uniqueKeys(groups.value, (group, indexLoop, loop) => group.name), (group) => {
525
898
  return openBlock(), createElementBlock("div", {
526
- key: row.id,
527
- class: normalizeClass(["option", { active: row.index === active.value }]),
528
- role: "option",
529
- "data-ui-choice-option": "",
530
- "data-multiple": __props.multiple ? "" : void 0,
531
- id: `${uid.value}-option-${row.index}`,
532
- "aria-selected": row.selected,
533
- "aria-disabled": row.disabled,
534
- "data-index": row.index,
535
- "aria-labelledby": row.labelledBy ?? void 0,
536
- "aria-describedby": row.detail ?? void 0
537
- }, [renderSlot(_ctx.$slots, `option-${row.id}`, {}, () => [row.detail ? (openBlock(), createElementBlock("span", _hoisted_18, [createElementVNode("span", _hoisted_19, [createElementVNode("span", {
538
- class: "primary",
539
- id: `${uid.value}-option-${row.index}-label`
540
- }, toDisplayString(row.label), 9, _hoisted_20), row.tag ? (openBlock(), createBlock(UiBadge_default, {
541
- key: 0,
542
- tone: row.tag?.tone,
543
- style: normalizeStyle({ "--ui-badge-color": row.tag?.color })
544
- }, {
545
- default: withCtx(() => [createElementVNode("span", { id: `${uid.value}-option-${row.index}-tag` }, toDisplayString(row.tag?.label), 9, _hoisted_21)]),
899
+ key: group.name,
900
+ role: group.role,
901
+ "aria-label": group.label ?? void 0
902
+ }, [group.name ? (openBlock(), createElementBlock("div", _hoisted_16, toDisplayString(group.name), 1)) : createCommentVNode("v-if", true), createVNode(unref(KeyedBoundary), null, {
903
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(uniqueKeys(group.rows, (row, indexLoop2, loop) => row.id), (row) => {
904
+ return openBlock(), createElementBlock("div", {
905
+ key: row.id,
906
+ class: normalizeClass(["option", { active: row.index === active.value }]),
907
+ role: "option",
908
+ "data-ui-choice-option": "",
909
+ "data-multiple": checkedProps.value.multiple ? "" : void 0,
910
+ id: `${uid.value}-option-${row.index}`,
911
+ "aria-selected": row.selected,
912
+ "aria-disabled": row.disabled,
913
+ "data-index": row.index,
914
+ "aria-labelledby": row.labelledBy ?? void 0,
915
+ "aria-describedby": row.detail ?? void 0
916
+ }, [renderSlot(_ctx.$slots, `option-${row.id}`, {}, () => [row.detail ? (openBlock(), createElementBlock("span", _hoisted_18, [createElementVNode("span", _hoisted_19, [createElementVNode("span", {
917
+ class: "primary",
918
+ id: `${uid.value}-option-${row.index}-label`
919
+ }, toDisplayString(row.label), 9, _hoisted_20), row.tag ? (openBlock(), createBlock(UiBadge_default, {
920
+ key: 0,
921
+ tone: row.tag?.tone,
922
+ style: normalizeStyle({ "--ui-badge-color": row.tag?.color ?? void 0 })
923
+ }, {
924
+ default: withCtx(() => [createElementVNode("span", { id: `${uid.value}-option-${row.index}-tag` }, toDisplayString(row.tag?.label), 9, _hoisted_21)]),
925
+ _: 2
926
+ }, 1032, ["tone", "style"])) : createCommentVNode("v-if", true)]), row.description ? (openBlock(), createElementBlock("span", {
927
+ key: 0,
928
+ class: "description",
929
+ id: `${uid.value}-option-${row.index}-description`
930
+ }, toDisplayString(row.description), 9, _hoisted_22)) : createCommentVNode("v-if", true)])) : createCommentVNode("v-if", true), !row.detail ? (openBlock(), createElementBlock("span", _hoisted_23, toDisplayString(row.label), 1)) : createCommentVNode("v-if", true)], true)], 10, _hoisted_17);
931
+ }), 128))]),
546
932
  _: 2
547
- }, 1032, ["tone", "style"])) : createCommentVNode("v-if", true)]), row.description ? (openBlock(), createElementBlock("span", {
548
- key: 0,
549
- class: "description",
550
- id: `${uid.value}-option-${row.index}-description`
551
- }, toDisplayString(row.description), 9, _hoisted_22)) : createCommentVNode("v-if", true)])) : createCommentVNode("v-if", true), !row.detail ? (openBlock(), createElementBlock("span", _hoisted_23, toDisplayString(row.label), 1)) : createCommentVNode("v-if", true)], true)], 10, _hoisted_17);
552
- }), 128))], 8, _hoisted_15);
553
- }), 128)),
933
+ }, 1024)], 8, _hoisted_15);
934
+ }), 128))]),
935
+ _: 3
936
+ }),
554
937
  creatable.value ? (openBlock(), createElementBlock("div", {
555
938
  key: 0,
556
939
  class: normalizeClass(["option", { active: createIndex.value === active.value }]),
557
940
  role: "option",
558
941
  "data-ui-choice-option": "",
559
942
  "aria-selected": "false",
560
- "data-multiple": __props.multiple ? "" : void 0,
943
+ "data-multiple": checkedProps.value.multiple ? "" : void 0,
561
944
  id: `${uid.value}-option-${createIndex.value}`,
562
945
  "data-index": createIndex.value
563
946
  }, toDisplayString(`Create “${raw.value}”`), 11, _hoisted_24)) : createCommentVNode("v-if", true),
564
947
  message.value ? (openBlock(), createElementBlock("div", _hoisted_25, toDisplayString(message.value), 1)) : createCommentVNode("v-if", true),
565
- !__props.loading && !rows.value[0] && !creatable.value && !lookupError.value ? (openBlock(), createElementBlock("div", _hoisted_26, [renderSlot(_ctx.$slots, "empty", {}, () => [_cache[3] || (_cache[3] = createTextVNode("No suggestions.", -1))], true)])) : createCommentVNode("v-if", true)
948
+ !checkedProps.value.loading && !rows.value[0] && !creatable.value && !lookupError.value ? (openBlock(), createElementBlock("div", _hoisted_26, [renderSlot(_ctx.$slots, "empty", {}, () => [_cache[3] || (_cache[3] = createTextVNode("No suggestions.", -1))], true)])) : createCommentVNode("v-if", true)
566
949
  ], 8, _hoisted_14), renderSlot(_ctx.$slots, "footer", {}, void 0, true)], 8, _hoisted_13),
567
950
  createElementVNode("div", {
568
951
  class: "message",
569
952
  id: `${uid.value}-validation`,
570
953
  hidden: !validation.value.issues.length
571
- }, [(openBlock(true), createElementBlock(Fragment, null, renderList(validation.value.issues, (issue, index) => {
572
- return openBlock(), createElementBlock("div", { key: index }, toDisplayString(issue.message), 1);
954
+ }, [(openBlock(true), createElementBlock(Fragment, null, renderList(validation.value.issues, (issue, indexLoop3) => {
955
+ return openBlock(), createElementBlock("div", { key: indexLoop3 }, toDisplayString(issue.message), 1);
573
956
  }), 128))], 8, _hoisted_27),
574
957
  createElementVNode("div", _hoisted_28, toDisplayString(statusText.value), 1),
575
958
  createElementVNode("div", _hoisted_29, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 512)
576
959
  ], 16, _hoisted_1);
577
960
  };
578
961
  }
579
- }), [["__scopeId", "data-v-f90db7fa"]]);
962
+ }), [["__scopeId", "data-v-bdf82123"]]);
580
963
  //#endregion
581
964
  export { UiCombobox_default as t };