@threadlabs/looma 0.14.8 → 0.15.1

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 (343) hide show
  1. package/components/shared/icons.js +5 -0
  2. package/components/shared/menu-navigation.js +49 -0
  3. package/components/shared/overlay.js +33 -60
  4. package/components/ui-avatar/ui-avatar.html +19 -2
  5. package/components/ui-avatar/ui-avatar.js +7 -1
  6. package/components/ui-avatar-group/ui-avatar-group.html +8 -3
  7. package/components/ui-avatar-group/ui-avatar-group.js +6 -2
  8. package/components/ui-badge/ui-badge.html +70 -4
  9. package/components/ui-button/ui-button.html +21 -5
  10. package/components/ui-button/ui-button.js +10 -0
  11. package/components/ui-callout/ui-callout.html +13 -5
  12. package/components/ui-checkbox/ui-checkbox.html +11 -0
  13. package/components/ui-cluster/ui-cluster.html +7 -0
  14. package/components/ui-combobox/ui-combobox.html +46 -10
  15. package/components/ui-combobox/ui-combobox.js +5 -5
  16. package/components/ui-context-menu/ui-context-menu.html +33 -5
  17. package/components/ui-context-menu/ui-context-menu.js +26 -17
  18. package/components/ui-dialog/ui-dialog.html +51 -8
  19. package/components/ui-dialog/ui-dialog.js +28 -7
  20. package/components/ui-disclosure/ui-disclosure.html +14 -5
  21. package/components/ui-disclosure/ui-disclosure.js +51 -4
  22. package/components/ui-editable/ui-editable.html +17 -3
  23. package/components/ui-editable/ui-editable.js +7 -0
  24. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +48 -14
  25. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.js +40 -6
  26. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +22 -9
  27. package/components/ui-editor-mention-menu/ui-editor-mention-menu.js +33 -11
  28. package/components/ui-editor-mention-menu-item/ui-editor-mention-menu-item.html +67 -0
  29. package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +33 -30
  30. package/components/ui-editor-slash-menu/ui-editor-slash-menu.js +42 -8
  31. package/components/ui-editor-slash-menu-group/ui-editor-slash-menu-group.html +31 -0
  32. package/components/ui-editor-slash-menu-item/ui-editor-slash-menu-item.html +75 -0
  33. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +16 -5
  34. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.js +10 -2
  35. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +5 -5
  36. package/components/ui-editor-table-overlay/ui-editor-table-overlay.js +5 -2
  37. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +14 -4
  38. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.js +2 -2
  39. package/components/ui-editor-toolbar/ui-editor-toolbar.html +1 -1
  40. package/components/ui-editor-toolbar/ui-editor-toolbar.js +46 -0
  41. package/components/ui-floating-action-button/ui-floating-action-button.html +1 -1
  42. package/components/ui-form-field/ui-form-field.html +16 -3
  43. package/components/ui-form-field/ui-form-field.js +1 -1
  44. package/components/ui-grid/ui-grid.html +17 -2
  45. package/components/ui-icon/ui-icon.html +5 -0
  46. package/components/ui-icon-button/ui-icon-button.html +25 -6
  47. package/components/ui-icon-button/ui-icon-button.js +11 -1
  48. package/components/ui-input/ui-input.html +3 -3
  49. package/components/ui-input-group/ui-input-group.html +18 -4
  50. package/components/ui-listbox/ui-listbox.html +81 -0
  51. package/components/ui-listbox/ui-listbox.js +27 -0
  52. package/components/ui-menu/ui-menu.html +33 -5
  53. package/components/ui-menu/ui-menu.js +18 -12
  54. package/components/ui-menu-group/ui-menu-group.html +27 -0
  55. package/components/ui-menu-item/ui-menu-item.html +80 -8
  56. package/components/ui-menu-item/ui-menu-item.js +47 -0
  57. package/components/ui-popover/ui-popover.html +33 -5
  58. package/components/ui-popover/ui-popover.js +9 -1
  59. package/components/ui-radio-group/ui-radio-group.html +13 -1
  60. package/components/ui-search-shell/ui-search-shell.html +6 -6
  61. package/components/ui-search-shell/ui-search-shell.js +21 -5
  62. package/components/ui-select/ui-select.html +14 -4
  63. package/components/ui-switch/ui-switch.html +2 -2
  64. package/components/ui-switcher/ui-switcher.html +8 -1
  65. package/components/ui-switcher/ui-switcher.js +15 -0
  66. package/components/ui-tabs/ui-tabs.html +17 -12
  67. package/components/ui-tabs/ui-tabs.js +43 -7
  68. package/components/ui-textarea/ui-textarea.html +28 -5
  69. package/components/ui-toast/ui-toast.html +88 -0
  70. package/components/ui-toast/ui-toast.js +68 -0
  71. package/components/ui-toast-region/ui-toast-region.html +102 -19
  72. package/components/ui-toast-region/ui-toast-region.js +10 -18
  73. package/components/ui-tooltip/ui-tooltip.html +51 -7
  74. package/components/ui-tooltip/ui-tooltip.js +29 -3
  75. package/components/ui-tree/ui-tree.html +12 -0
  76. package/components/ui-tree/ui-tree.js +191 -12
  77. package/components/ui-tree-item/ui-tree-item.html +87 -8
  78. package/components/ui-tree-item/ui-tree-item.js +3 -1
  79. package/dist/index.js +38 -32
  80. package/editor/chunks/extensions.js +82 -2
  81. package/editor/extensions/table-commands.d.ts +8 -0
  82. package/editor/icons.d.ts +5 -0
  83. package/editor/index.js +7 -2
  84. package/editor/insert-table-grid.d.ts +1 -1
  85. package/editor/mention-menu.d.ts +2 -0
  86. package/editor/slash-menu.d.ts +3 -0
  87. package/editor/table-context-menu.d.ts +1 -1
  88. package/editor/table-overlay.d.ts +2 -2
  89. package/package.json +1 -1
  90. package/styles/ui-avatar-group.css +1 -2
  91. package/styles/ui-avatar.css +11 -1
  92. package/styles/ui-badge.css +73 -1
  93. package/styles/ui-button.css +9 -1
  94. package/styles/ui-callout.css +1 -1
  95. package/styles/ui-checkbox.css +9 -0
  96. package/styles/ui-cluster.css +3 -0
  97. package/styles/ui-combobox.css +38 -7
  98. package/styles/ui-context-menu.css +32 -4
  99. package/styles/ui-dialog.css +42 -5
  100. package/styles/ui-editor-insert-table-grid.css +48 -11
  101. package/styles/ui-editor-mention-menu-item.css +57 -0
  102. package/styles/ui-editor-mention-menu.css +11 -1
  103. package/styles/ui-editor-slash-menu-group.css +21 -0
  104. package/styles/ui-editor-slash-menu-item.css +62 -0
  105. package/styles/ui-editor-slash-menu.css +10 -21
  106. package/styles/ui-editor-table-context-menu.css +1 -1
  107. package/styles/ui-floating-action-button.css +1 -1
  108. package/styles/ui-form-field.css +14 -1
  109. package/styles/ui-grid.css +14 -1
  110. package/styles/ui-icon-button.css +17 -5
  111. package/styles/ui-input-group.css +18 -4
  112. package/styles/ui-input.css +3 -3
  113. package/styles/ui-listbox.css +69 -0
  114. package/styles/ui-menu-group.css +19 -0
  115. package/styles/ui-menu-item.css +48 -9
  116. package/styles/ui-menu.css +32 -4
  117. package/styles/ui-popover.css +28 -4
  118. package/styles/ui-radio-group.css +9 -0
  119. package/styles/ui-search-shell.css +5 -5
  120. package/styles/ui-select.css +14 -4
  121. package/styles/ui-switch.css +2 -2
  122. package/styles/ui-switcher.css +4 -0
  123. package/styles/ui-textarea.css +27 -4
  124. package/styles/ui-toast-region.css +88 -4
  125. package/styles/ui-toast.css +74 -0
  126. package/styles/ui-tooltip.css +46 -6
  127. package/styles/ui-tree-item.css +72 -4
  128. package/styles/ui-tree.css +8 -0
  129. package/tokens.css +3 -0
  130. package/vanilla/UiAvatar.d.ts +2 -0
  131. package/vanilla/UiAvatar.js +8 -1
  132. package/vanilla/UiAvatarGroup.d.ts +2 -0
  133. package/vanilla/UiAvatarGroup.js +1 -1
  134. package/vanilla/UiBadge.d.ts +1 -1
  135. package/vanilla/UiBadge.js +1 -1
  136. package/vanilla/UiButton.d.ts +1 -0
  137. package/vanilla/UiButton.js +22 -6
  138. package/vanilla/UiCallout.d.ts +1 -1
  139. package/vanilla/UiCallout.js +1 -1
  140. package/vanilla/UiCheckbox.d.ts +1 -0
  141. package/vanilla/UiCheckbox.js +12 -9
  142. package/vanilla/UiCluster.d.ts +1 -0
  143. package/vanilla/UiCluster.js +2 -0
  144. package/vanilla/UiCombobox.d.ts +3 -0
  145. package/vanilla/UiCombobox.js +30 -15
  146. package/vanilla/UiContextMenu.d.ts +1 -1
  147. package/vanilla/UiContextMenu.js +1 -1
  148. package/vanilla/UiDialog.d.ts +5 -2
  149. package/vanilla/UiDialog.js +1 -1
  150. package/vanilla/UiDisclosure.d.ts +2 -0
  151. package/vanilla/UiDisclosure.js +32 -18
  152. package/vanilla/UiEditable.d.ts +5 -0
  153. package/vanilla/UiEditable.js +7 -3
  154. package/vanilla/UiEditorInsertTableGrid.js +1 -6
  155. package/vanilla/UiEditorMentionMenu.d.ts +4 -2
  156. package/vanilla/UiEditorMentionMenu.js +49 -31
  157. package/vanilla/UiEditorMentionMenuItem.d.ts +16 -0
  158. package/vanilla/UiEditorMentionMenuItem.js +56 -0
  159. package/vanilla/UiEditorSlashMenu.d.ts +4 -3
  160. package/vanilla/UiEditorSlashMenu.js +59 -46
  161. package/vanilla/UiEditorSlashMenuGroup.d.ts +14 -0
  162. package/vanilla/UiEditorSlashMenuGroup.js +48 -0
  163. package/vanilla/UiEditorSlashMenuItem.d.ts +18 -0
  164. package/vanilla/UiEditorSlashMenuItem.js +57 -0
  165. package/vanilla/UiEditorTableContextMenu.d.ts +5 -2
  166. package/vanilla/UiEditorTableContextMenu.js +1 -2
  167. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  168. package/vanilla/UiEditorTableOverlay.js +5 -5
  169. package/vanilla/UiEditorTableToolbar.d.ts +4 -2
  170. package/vanilla/UiEditorTableToolbar.js +1 -2
  171. package/vanilla/UiEditorToolbar.js +2 -0
  172. package/vanilla/UiGrid.d.ts +1 -0
  173. package/vanilla/UiGrid.js +8 -7
  174. package/vanilla/UiIcon.js +1 -1
  175. package/vanilla/UiIconButton.d.ts +1 -0
  176. package/vanilla/UiIconButton.js +11 -2
  177. package/vanilla/UiListbox.d.ts +20 -0
  178. package/vanilla/UiListbox.js +45 -0
  179. package/vanilla/UiMenu.d.ts +1 -1
  180. package/vanilla/UiMenu.js +1 -1
  181. package/vanilla/UiMenuGroup.d.ts +14 -0
  182. package/vanilla/UiMenuGroup.js +35 -0
  183. package/vanilla/UiMenuItem.d.ts +5 -1
  184. package/vanilla/UiMenuItem.js +91 -30
  185. package/vanilla/UiPopover.d.ts +1 -1
  186. package/vanilla/UiPopover.js +1 -1
  187. package/vanilla/UiRadioGroup.d.ts +1 -0
  188. package/vanilla/UiRadioGroup.js +6 -3
  189. package/vanilla/UiSwitcher.d.ts +1 -0
  190. package/vanilla/UiSwitcher.js +7 -9
  191. package/vanilla/UiTabs.d.ts +1 -0
  192. package/vanilla/UiTabs.js +9 -1
  193. package/vanilla/UiTextarea.d.ts +1 -0
  194. package/vanilla/UiTextarea.js +4 -1
  195. package/vanilla/UiToast.d.ts +16 -0
  196. package/vanilla/UiToast.js +53 -0
  197. package/vanilla/UiToastRegion.d.ts +1 -4
  198. package/vanilla/UiToastRegion.js +3 -11
  199. package/vanilla/UiTooltip.d.ts +1 -1
  200. package/vanilla/UiTooltip.js +1 -1
  201. package/vanilla/UiTree.d.ts +2 -0
  202. package/vanilla/UiTree.js +1 -1
  203. package/vanilla/UiTreeItem.d.ts +1 -0
  204. package/vanilla/UiTreeItem.js +45 -31
  205. package/vanilla/index.js +6 -0
  206. package/vue/UiAvatar.d.ts +4 -0
  207. package/vue/UiAvatar.vue +23 -3
  208. package/vue/UiAvatarGroup.d.ts +3 -0
  209. package/vue/UiAvatarGroup.vue +7 -4
  210. package/vue/UiBadge.d.ts +2 -2
  211. package/vue/UiBadge.vue +74 -2
  212. package/vue/UiButton.d.ts +5 -3
  213. package/vue/UiButton.vue +41 -7
  214. package/vue/UiCallout.d.ts +2 -2
  215. package/vue/UiCallout.vue +3 -2
  216. package/vue/UiCheckbox.d.ts +2 -0
  217. package/vue/UiCheckbox.vue +16 -0
  218. package/vue/UiCluster.d.ts +1 -0
  219. package/vue/UiCluster.vue +5 -0
  220. package/vue/UiCombobox.d.ts +11 -3
  221. package/vue/UiCombobox.vue +60 -11
  222. package/vue/UiContextMenu.d.ts +2 -0
  223. package/vue/UiContextMenu.vue +47 -6
  224. package/vue/UiDialog.d.ts +18 -4
  225. package/vue/UiDialog.vue +86 -11
  226. package/vue/UiDisclosure.d.ts +8 -2
  227. package/vue/UiDisclosure.vue +38 -14
  228. package/vue/UiEditable.d.ts +10 -0
  229. package/vue/UiEditable.vue +14 -2
  230. package/vue/UiEditorInsertTableGrid.vue +52 -15
  231. package/vue/UiEditorMentionMenu.d.ts +24 -2
  232. package/vue/UiEditorMentionMenu.vue +27 -11
  233. package/vue/UiEditorMentionMenuItem.d.ts +24 -0
  234. package/vue/UiEditorMentionMenuItem.js +2 -0
  235. package/vue/UiEditorMentionMenuItem.vue +88 -0
  236. package/vue/UiEditorSlashMenu.d.ts +24 -1
  237. package/vue/UiEditorSlashMenu.vue +33 -33
  238. package/vue/UiEditorSlashMenuGroup.d.ts +18 -0
  239. package/vue/UiEditorSlashMenuGroup.js +2 -0
  240. package/vue/UiEditorSlashMenuGroup.vue +43 -0
  241. package/vue/UiEditorSlashMenuItem.d.ts +26 -0
  242. package/vue/UiEditorSlashMenuItem.js +2 -0
  243. package/vue/UiEditorSlashMenuItem.vue +101 -0
  244. package/vue/UiEditorTableContextMenu.d.ts +9 -3
  245. package/vue/UiEditorTableContextMenu.vue +53 -3
  246. package/vue/UiEditorTableOverlay.d.ts +2 -2
  247. package/vue/UiEditorTableOverlay.vue +8 -6
  248. package/vue/UiEditorTableToolbar.d.ts +7 -3
  249. package/vue/UiEditorTableToolbar.vue +50 -2
  250. package/vue/UiEditorToolbar.vue +14 -1
  251. package/vue/UiFloatingActionButton.vue +1 -1
  252. package/vue/UiFormField.vue +28 -3
  253. package/vue/UiGrid.d.ts +1 -0
  254. package/vue/UiGrid.vue +26 -2
  255. package/vue/UiIcon.vue +16 -0
  256. package/vue/UiIconButton.d.ts +5 -3
  257. package/vue/UiIconButton.vue +40 -6
  258. package/vue/UiInput.vue +10 -3
  259. package/vue/UiInputGroup.vue +32 -11
  260. package/vue/UiListbox.d.ts +33 -0
  261. package/vue/UiListbox.js +2 -0
  262. package/vue/UiListbox.vue +131 -0
  263. package/vue/UiMenu.d.ts +2 -0
  264. package/vue/UiMenu.vue +43 -6
  265. package/vue/UiMenuGroup.d.ts +18 -0
  266. package/vue/UiMenuGroup.js +2 -0
  267. package/vue/UiMenuGroup.vue +39 -0
  268. package/vue/UiMenuItem.d.ts +34 -2
  269. package/vue/UiMenuItem.vue +145 -9
  270. package/vue/UiPopover.d.ts +2 -2
  271. package/vue/UiPopover.vue +44 -5
  272. package/vue/UiRadioGroup.d.ts +2 -0
  273. package/vue/UiRadioGroup.vue +17 -0
  274. package/vue/UiSearchShell.vue +12 -5
  275. package/vue/UiSelect.vue +18 -4
  276. package/vue/UiSwitch.vue +2 -2
  277. package/vue/UiSwitcher.d.ts +1 -0
  278. package/vue/UiSwitcher.vue +22 -1
  279. package/vue/UiTabs.d.ts +6 -2
  280. package/vue/UiTabs.vue +14 -12
  281. package/vue/UiTextarea.d.ts +2 -0
  282. package/vue/UiTextarea.vue +32 -4
  283. package/vue/UiToast.d.ts +34 -0
  284. package/vue/UiToast.js +2 -0
  285. package/vue/UiToast.vue +173 -0
  286. package/vue/UiToastRegion.d.ts +2 -18
  287. package/vue/UiToastRegion.vue +123 -48
  288. package/vue/UiTooltip.d.ts +2 -2
  289. package/vue/UiTooltip.vue +67 -12
  290. package/vue/UiTree.d.ts +10 -0
  291. package/vue/UiTree.vue +27 -0
  292. package/vue/UiTreeItem.d.ts +2 -0
  293. package/vue/UiTreeItem.vue +96 -4
  294. package/vue/chunks/UiAvatar.js +19 -5
  295. package/vue/chunks/UiAvatarGroup.js +10 -4
  296. package/vue/chunks/UiBadge.js +1 -1
  297. package/vue/chunks/UiButton.js +58 -11
  298. package/vue/chunks/UiCallout.js +2 -2
  299. package/vue/chunks/UiCheckbox.js +12 -2
  300. package/vue/chunks/UiCluster.js +5 -3
  301. package/vue/chunks/UiCombobox.js +29 -13
  302. package/vue/chunks/UiContextMenu.js +6 -2
  303. package/vue/chunks/UiDialog.js +25 -8
  304. package/vue/chunks/UiDisclosure.js +36 -12
  305. package/vue/chunks/UiEditable.js +22 -8
  306. package/vue/chunks/UiEditorInsertTableGrid.js +11 -14
  307. package/vue/chunks/UiEditorMentionMenu.js +30 -19
  308. package/vue/chunks/UiEditorMentionMenuItem.js +36 -0
  309. package/vue/chunks/UiEditorSlashMenu.js +33 -35
  310. package/vue/chunks/UiEditorSlashMenuGroup.js +26 -0
  311. package/vue/chunks/UiEditorSlashMenuItem.js +51 -0
  312. package/vue/chunks/UiEditorTableContextMenu.js +39 -5
  313. package/vue/chunks/UiEditorTableOverlay.js +6 -6
  314. package/vue/chunks/UiEditorTableToolbar.js +37 -4
  315. package/vue/chunks/UiEditorToolbar.js +18 -4
  316. package/vue/chunks/UiFloatingActionButton.js +1 -1
  317. package/vue/chunks/UiFormField.js +13 -9
  318. package/vue/chunks/UiGrid.js +6 -2
  319. package/vue/chunks/UiIcon.js +40 -2
  320. package/vue/chunks/UiIconButton.js +35 -4
  321. package/vue/chunks/UiInput.js +1 -1
  322. package/vue/chunks/UiInputGroup.js +1 -1
  323. package/vue/chunks/UiListbox.js +70 -0
  324. package/vue/chunks/UiMenu.js +6 -2
  325. package/vue/chunks/UiMenuGroup.js +25 -0
  326. package/vue/chunks/UiMenuItem.js +128 -7
  327. package/vue/chunks/UiPopover.js +1 -1
  328. package/vue/chunks/UiRadioGroup.js +8 -2
  329. package/vue/chunks/UiSearchShell.js +1 -1
  330. package/vue/chunks/UiSelect.js +1 -1
  331. package/vue/chunks/UiSwitch.js +1 -1
  332. package/vue/chunks/UiSwitcher.js +20 -3
  333. package/vue/chunks/UiTabs.js +4 -3
  334. package/vue/chunks/UiTextarea.js +7 -2
  335. package/vue/chunks/UiToast.js +81 -0
  336. package/vue/chunks/UiToastRegion.js +25 -49
  337. package/vue/chunks/UiTooltip.js +3 -7
  338. package/vue/chunks/UiTree.js +8 -4
  339. package/vue/chunks/UiTreeItem.js +28 -10
  340. package/vue/components.css +1856 -864
  341. package/vue/editor/index.js +263 -2
  342. package/vue/index.d.ts +6 -0
  343. package/vue/index.js +9 -3
@@ -17,6 +17,7 @@ const props = withDefaults(
17
17
  expanded?: boolean
18
18
  itemId?: string
19
19
  label?: string
20
+ lazy?: boolean
20
21
  marquee?: boolean
21
22
  selected?: boolean
22
23
  sortable?: boolean
@@ -31,6 +32,7 @@ const props = withDefaults(
31
32
  expanded: false,
32
33
  itemId: '',
33
34
  label: '',
35
+ lazy: false,
34
36
  marquee: false,
35
37
  selected: false,
36
38
  sortable: false,
@@ -158,6 +160,14 @@ useComponentHost(controllerModule.default, {
158
160
  >
159
161
  <span class="disclosure-icon" aria-hidden="true"></span>
160
162
  </button>
163
+ <label class="selection-hit"><input
164
+ class="selection-checkbox"
165
+ type="checkbox"
166
+ tabindex="-1"
167
+ :checked="selected"
168
+ :disabled="disabled"
169
+ :aria-label="`Select ${label}`"
170
+ ></label>
161
171
  <span class="leading" ref="leading"><slot name="leading" /></span>
162
172
  <span class="label" ref="label"><span class="label-text" ref="labelText"><slot name="label">{{
163
173
  label
@@ -289,6 +299,35 @@ useComponentHost(controllerModule.default, {
289
299
  display: none;
290
300
  }
291
301
 
302
+ .selection-hit {
303
+ display: none;
304
+ grid-column: 2;
305
+ grid-row: 1;
306
+ place-items: center;
307
+ inline-size: 1.25rem;
308
+ block-size: var(--_ui-tree-item-min-block-size, var(--_tree-row-min-height));
309
+ cursor: pointer;
310
+ }
311
+ .selection-checkbox {
312
+ inline-size: 1rem;
313
+ block-size: 1rem;
314
+ margin: 0;
315
+ accent-color: var(--ui-accent-solid);
316
+ }
317
+
318
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row {
319
+ grid-template-columns: var(--_tree-disclosure-size) 1.25rem auto minmax(0, 1fr);
320
+ }
321
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .selection-hit {
322
+ display: grid;
323
+ }
324
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .leading {
325
+ grid-column: 3;
326
+ }
327
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"] > .row > .label {
328
+ grid-column: 4;
329
+ }
330
+
292
331
  .disclosure:hover {
293
332
  color: var(--ui-text-primary);
294
333
  background: var(--ui-surface-elevated);
@@ -564,7 +603,7 @@ useComponentHost(controllerModule.default, {
564
603
  inset-inline: 1px;
565
604
  display: none;
566
605
  block-size: 2px;
567
- border-radius: 999px;
606
+ border-radius: var(--ui-radius-round);
568
607
  background: var(--_ui-tree-drop-color, var(--ui-accent-solid));
569
608
  pointer-events: none;
570
609
  }
@@ -577,7 +616,7 @@ useComponentHost(controllerModule.default, {
577
616
  inline-size: 7px;
578
617
  block-size: 7px;
579
618
  border: 2px solid var(--_ui-tree-drop-color, var(--ui-accent-solid));
580
- border-radius: 999px;
619
+ border-radius: var(--ui-radius-round);
581
620
  background: var(--ui-surface-elevated);
582
621
  transform: translateY(-50%);
583
622
  }
@@ -607,8 +646,61 @@ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] {
607
646
  --_tree-row-min-height: 44px;
608
647
  }
609
648
 
610
- html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-handle {
611
- display: none;
649
+ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .row {
650
+ grid-template-columns: 44px var(--_tree-disclosure-size) auto minmax(0, 1fr);
651
+ }
652
+
653
+ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .drag-handle,
654
+ html[data-ui-input-modality="touch"]
655
+ [data-component~="ui-tree-item"][data-ui-tree-item-state~="isContainer"]
656
+ > .row
657
+ > .drag-handle {
658
+ position: relative;
659
+ grid-column: 1;
660
+ grid-row: 1;
661
+ inset: auto;
662
+ inline-size: 44px;
663
+ block-size: 44px;
664
+ padding: 14px;
665
+ opacity: 1;
666
+ transform: none;
667
+ cursor: pointer;
668
+ }
669
+
670
+ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .disclosure {
671
+ grid-column: 2;
672
+ }
673
+ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .leading {
674
+ grid-column: 3;
675
+ }
676
+ html[data-ui-input-modality="touch"] [data-component~="ui-tree-item"] .label {
677
+ grid-column: 4;
678
+ }
679
+
680
+ html[data-ui-input-modality="touch"]
681
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"]
682
+ > .row {
683
+ grid-template-columns: 44px var(--_tree-disclosure-size) 44px auto minmax(0, 1fr);
684
+ }
685
+ html[data-ui-input-modality="touch"]
686
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"]
687
+ > .row
688
+ > .selection-hit {
689
+ grid-column: 3;
690
+ inline-size: 44px;
691
+ block-size: 44px;
692
+ }
693
+ html[data-ui-input-modality="touch"]
694
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"]
695
+ > .row
696
+ > .leading {
697
+ grid-column: 4;
698
+ }
699
+ html[data-ui-input-modality="touch"]
700
+ [data-component~="ui-tree-item"][data-selection-mode="multiple"]
701
+ > .row
702
+ > .label {
703
+ grid-column: 5;
612
704
  }
613
705
 
614
706
  @media (prefers-reduced-motion: reduce) {
@@ -1,11 +1,14 @@
1
1
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
2
  import { n as useComponentHost, t as createDispatch } from "./host.js";
3
- import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, openBlock, ref, renderSlot, toDisplayString, useTemplateRef } from "vue";
3
+ import { t as UiIcon_default } from "./UiIcon.js";
4
+ import { computed, createElementBlock, createElementVNode, createVNode, defineComponent, mergeProps, openBlock, ref, renderSlot, toDisplayString, useTemplateRef } from "vue";
4
5
  import * as controllerModule from "@threadlabs/looma/components/ui-avatar/ui-avatar.js";
5
6
  //#region .build/vue/UiAvatar.vue?vue&type=script&setup=true&lang.ts
6
7
  var _hoisted_1 = ["data-ui-avatar-state"];
7
8
  var _hoisted_2 = ["src", "hidden"];
8
9
  var _hoisted_3 = ["aria-hidden", "hidden"];
10
+ var _hoisted_4 = ["hidden"];
11
+ var _hoisted_5 = ["hidden"];
9
12
  //#endregion
10
13
  //#region .build/vue/UiAvatar.vue
11
14
  var UiAvatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -17,8 +20,13 @@ var UiAvatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
17
20
  default: false
18
21
  },
19
22
  alt: { default: "" },
23
+ decorative: {
24
+ type: Boolean,
25
+ default: false
26
+ },
20
27
  fallback: { default: "" },
21
28
  name: { default: "" },
29
+ shape: { default: "circle" },
22
30
  size: { default: "md" },
23
31
  src: {}
24
32
  },
@@ -29,8 +37,13 @@ var UiAvatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
29
37
  const hasImage = ref(false);
30
38
  const hasAuthoredImage = ref(false);
31
39
  const initials = ref("?");
40
+ const showGlyph = ref(false);
32
41
  /** The values the styles' :host-state() rules test. */
33
- const hostState = computed(() => [props.size && `size size=${props.size}`, props.active && "active"].filter(Boolean).join(" "));
42
+ const hostState = computed(() => [
43
+ props.size && `size size=${props.size}`,
44
+ props.shape && `shape shape=${props.shape}`,
45
+ props.active && "active"
46
+ ].filter(Boolean).join(" "));
34
47
  const dispatch = createDispatch(root);
35
48
  useComponentHost(controllerModule.default, {
36
49
  root,
@@ -40,7 +53,8 @@ var UiAvatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
40
53
  state: {
41
54
  hasImage,
42
55
  hasAuthoredImage,
43
- initials
56
+ initials,
57
+ showGlyph
44
58
  }
45
59
  });
46
60
  return (_ctx, _cache) => {
@@ -62,10 +76,10 @@ var UiAvatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
62
76
  class: "fallback",
63
77
  "aria-hidden": hasImage.value,
64
78
  hidden: hasImage.value
65
- }, toDisplayString(initials.value), 9, _hoisted_3)
79
+ }, [createElementVNode("span", { hidden: showGlyph.value }, toDisplayString(initials.value), 9, _hoisted_4), createElementVNode("span", { hidden: !showGlyph.value }, [createVNode(UiIcon_default, { name: "user-round" })], 8, _hoisted_5)], 8, _hoisted_3)
66
80
  ], 16, _hoisted_1);
67
81
  };
68
82
  }
69
- }), [["__scopeId", "data-v-43a3ae30"]]);
83
+ }), [["__scopeId", "data-v-f9a69ac3"]]);
70
84
  //#endregion
71
85
  export { UiAvatar_default as t };
@@ -13,13 +13,16 @@ var UiAvatarGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
13
13
  props: {
14
14
  label: { default: "People" },
15
15
  max: { default: 5 },
16
- size: { default: "md" }
16
+ overflowLabel: { default: "{count} more" },
17
+ size: { default: "md" },
18
+ total: {}
17
19
  },
18
20
  setup(__props) {
19
21
  const props = __props;
20
22
  const root = ref(null);
21
23
  const overflowElement = useTemplateRef("overflow");
22
24
  const overflowCount = ref(0);
25
+ const overflowAnnouncement = ref("");
23
26
  /** The values the styles' :host-state() rules test. */
24
27
  const hostState = computed(() => [props.size && `size size=${props.size}`].filter(Boolean).join(" "));
25
28
  const dispatch = createDispatch(root);
@@ -28,7 +31,10 @@ var UiAvatarGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
28
31
  dispatch,
29
32
  props,
30
33
  refs: { overflow: overflowElement },
31
- state: { overflowCount }
34
+ state: {
35
+ overflowCount,
36
+ overflowAnnouncement
37
+ }
32
38
  });
33
39
  return (_ctx, _cache) => {
34
40
  return openBlock(), createElementBlock("div", mergeProps({
@@ -43,11 +49,11 @@ var UiAvatarGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
43
49
  class: "overflow",
44
50
  role: "img",
45
51
  hidden: !overflowCount.value,
46
- "aria-label": `${overflowCount.value} more`,
52
+ "aria-label": overflowAnnouncement.value,
47
53
  ref: "overflow"
48
54
  }, toDisplayString(`+${overflowCount.value}`), 9, _hoisted_2)], 16, _hoisted_1);
49
55
  };
50
56
  }
51
- }), [["__scopeId", "data-v-ff71c721"]]);
57
+ }), [["__scopeId", "data-v-c8469808"]]);
52
58
  //#endregion
53
59
  export { UiAvatarGroup_default as t };
@@ -24,6 +24,6 @@ var UiBadge_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
24
24
  return openBlock(), createElementBlock("span", mergeProps({ "data-component": "ui-badge" }, _ctx.$attrs, { "data-ui-badge-state": hostState.value || void 0 }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1);
25
25
  };
26
26
  }
27
- }), [["__scopeId", "data-v-4c8e66a3"]]);
27
+ }), [["__scopeId", "data-v-8ef5da57"]]);
28
28
  //#endregion
29
29
  export { UiBadge_default as t };
@@ -1,16 +1,23 @@
1
1
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
- import { computed, createElementBlock, defineComponent, mergeProps, openBlock, renderSlot } from "vue";
2
+ import { n as useComponentHost, t as createDispatch } from "./host.js";
3
+ import { t as UiSpinner_default } from "./UiSpinner.js";
4
+ import { computed, createBlock, createCommentVNode, createElementBlock, defineComponent, mergeProps, openBlock, ref, renderSlot } from "vue";
5
+ import * as controllerModule from "@threadlabs/looma/components/ui-button/ui-button.js";
3
6
  //#region .build/vue/UiButton.vue?vue&type=script&setup=true&lang.ts
4
7
  var _hoisted_1 = [
5
8
  "href",
6
9
  "target",
7
10
  "rel",
8
11
  "aria-disabled",
12
+ "aria-busy",
13
+ "tabindex",
9
14
  "data-ui-button-state"
10
15
  ];
11
16
  var _hoisted_2 = [
12
17
  "type",
13
18
  "disabled",
19
+ "aria-disabled",
20
+ "aria-busy",
14
21
  "data-ui-button-state"
15
22
  ];
16
23
  //#endregion
@@ -26,6 +33,10 @@ var UiButton_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
26
33
  default: false
27
34
  },
28
35
  href: {},
36
+ pending: {
37
+ type: Boolean,
38
+ default: false
39
+ },
29
40
  rel: {},
30
41
  size: { default: "md" },
31
42
  stretch: {
@@ -39,14 +50,22 @@ var UiButton_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
39
50
  },
40
51
  setup(__props) {
41
52
  const props = __props;
53
+ const root = ref(null);
42
54
  /** The values the styles' :host-state() rules test. */
43
55
  const hostState = computed(() => [
44
56
  props.align && `align align=${props.align}`,
45
57
  props.stretch && "stretch",
46
58
  props.size && `size size=${props.size}`,
47
59
  props.variant && `variant variant=${props.variant}`,
48
- props.tone && `tone tone=${props.tone}`
60
+ props.tone && `tone tone=${props.tone}`,
61
+ props.pending && "pending"
49
62
  ].filter(Boolean).join(" "));
63
+ const dispatch = createDispatch(root);
64
+ useComponentHost(controllerModule.default, {
65
+ root,
66
+ dispatch,
67
+ props
68
+ });
50
69
  function text(value) {
51
70
  if (Array.isArray(value)) return value.map(text).join(" ");
52
71
  return value === null || value === void 0 || typeof value === "object" ? "" : String(value);
@@ -63,30 +82,58 @@ var UiButton_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
63
82
  href: attribute({
64
83
  true: null,
65
84
  false: __props.href
66
- }[`${__props.disabled}`]),
85
+ }[`${__props.disabled || __props.pending}`]),
67
86
  target: __props.target,
68
87
  rel: __props.rel,
69
88
  "aria-disabled": typeof {
70
89
  true: "true",
71
90
  false: null
72
- }[`${Boolean(__props.disabled && __props.href)}`] === "boolean" ? String({
91
+ }[`${__props.disabled || __props.pending}`] === "boolean" ? String({
73
92
  true: "true",
74
93
  false: null
75
- }[`${Boolean(__props.disabled && __props.href)}`]) : attribute({
94
+ }[`${__props.disabled || __props.pending}`]) : attribute({
76
95
  true: "true",
77
96
  false: null
78
- }[`${Boolean(__props.disabled && __props.href)}`]),
79
- "data-ui-button-state": hostState.value || void 0
80
- }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1)) : (openBlock(), createElementBlock("button", mergeProps({
97
+ }[`${__props.disabled || __props.pending}`]),
98
+ "aria-busy": __props.pending,
99
+ tabindex: attribute({
100
+ true: "0",
101
+ false: null
102
+ }[`${__props.pending && !__props.disabled}`]),
103
+ "data-ui-button-state": hostState.value || void 0,
104
+ ref_key: "root",
105
+ ref: root
106
+ }), [__props.pending ? (openBlock(), createBlock(UiSpinner_default, {
107
+ key: 0,
108
+ size: "sm",
109
+ class: "pending-spinner"
110
+ })) : createCommentVNode("v-if", true), renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1)) : (openBlock(), createElementBlock("button", mergeProps({
81
111
  key: 1,
82
112
  "data-component": "ui-button"
83
113
  }, _ctx.$attrs, {
84
114
  type: __props.type,
85
115
  disabled: __props.disabled,
86
- "data-ui-button-state": hostState.value || void 0
87
- }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_2));
116
+ "aria-disabled": typeof {
117
+ true: "true",
118
+ false: null
119
+ }[`${__props.pending}`] === "boolean" ? String({
120
+ true: "true",
121
+ false: null
122
+ }[`${__props.pending}`]) : attribute({
123
+ true: "true",
124
+ false: null
125
+ }[`${__props.pending}`]),
126
+ "aria-busy": __props.pending,
127
+ "data-ui-button-state": hostState.value || void 0,
128
+ ref_key: "root",
129
+ ref: root
130
+ }), [__props.pending ? (openBlock(), createBlock(UiSpinner_default, {
131
+ key: 0,
132
+ size: "sm",
133
+ class: "pending-spinner"
134
+ })) : createCommentVNode("v-if", true), renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_2));
88
135
  };
89
136
  }
90
- }), [["__scopeId", "data-v-bd32a08d"]]);
137
+ }), [["__scopeId", "data-v-3f3120c8"]]);
91
138
  //#endregion
92
139
  export { UiButton_default as t };
@@ -76,7 +76,7 @@ var UiCallout_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
76
76
  createElementVNode("path", { d: "M12 16v-4" }, null, -1),
77
77
  createElementVNode("path", { d: "M12 8h.01" }, null, -1)
78
78
  ])])) : createCommentVNode("v-if", true),
79
- __props.tone === "note" ? (openBlock(), createElementBlock("svg", _hoisted_4, [..._cache[1] || (_cache[1] = [
79
+ __props.tone === "neutral" || __props.tone === "note" ? (openBlock(), createElementBlock("svg", _hoisted_4, [..._cache[1] || (_cache[1] = [
80
80
  createElementVNode("path", { d: "M13.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8.5L13.5 2Z" }, null, -1),
81
81
  createElementVNode("path", { d: "M13 2v7h7" }, null, -1),
82
82
  createElementVNode("path", { d: "m9.5 17.5 4-4 2 2-4 4H9.5v-2Z" }, null, -1)
@@ -103,6 +103,6 @@ var UiCallout_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
103
103
  ]), createElementVNode("div", _hoisted_8, [renderSlot(_ctx.$slots, "default")])], 16, _hoisted_1);
104
104
  };
105
105
  }
106
- }), [["__scopeId", "data-v-faa2395f"]]);
106
+ }), [["__scopeId", "data-v-99de7df0"]]);
107
107
  //#endregion
108
108
  export { UiCallout_default as t };
@@ -8,6 +8,7 @@ var _hoisted_2 = [
8
8
  ".checked",
9
9
  ".indeterminate",
10
10
  "disabled",
11
+ "aria-invalid",
11
12
  "required",
12
13
  "name",
13
14
  "value"
@@ -37,6 +38,10 @@ var UiCheckbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
37
38
  type: Boolean,
38
39
  default: false
39
40
  },
41
+ invalid: {
42
+ type: Boolean,
43
+ default: false
44
+ },
40
45
  name: { default: "" },
41
46
  required: {
42
47
  type: Boolean,
@@ -58,7 +63,11 @@ var UiCheckbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
58
63
  const descriptionElement = useTemplateRef("description");
59
64
  const internalChecked = ref(false);
60
65
  /** The values the styles' :host-state() rules test. */
61
- const hostState = computed(() => [props.disabled && "disabled", props.size && `size size=${props.size}`].filter(Boolean).join(" "));
66
+ const hostState = computed(() => [
67
+ props.invalid && "invalid",
68
+ props.disabled && "disabled",
69
+ props.size && `size size=${props.size}`
70
+ ].filter(Boolean).join(" "));
62
71
  const isChangeDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["checked"] === "boolean" && typeof detail["value"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
63
72
  "checked",
64
73
  "value",
@@ -88,6 +97,7 @@ var UiCheckbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
88
97
  ".checked": internalChecked.value,
89
98
  ".indeterminate": __props.indeterminate,
90
99
  disabled: __props.disabled,
100
+ "aria-invalid": __props.invalid,
91
101
  required: __props.required,
92
102
  name: __props.name,
93
103
  value: __props.value,
@@ -95,6 +105,6 @@ var UiCheckbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
95
105
  }, null, 40, _hoisted_2), createElementVNode("span", _hoisted_3, [createElementVNode("span", _hoisted_4, [renderSlot(_ctx.$slots, "default", {}, void 0, true)]), createElementVNode("span", _hoisted_5, [renderSlot(_ctx.$slots, "description", {}, void 0, true)], 512)])], 16, _hoisted_1);
96
106
  };
97
107
  }
98
- }), [["__scopeId", "data-v-bfcc98e1"]]);
108
+ }), [["__scopeId", "data-v-5e151d99"]]);
99
109
  //#endregion
100
110
  export { UiCheckbox_default as t };
@@ -10,7 +10,8 @@ var UiCluster_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
10
10
  props: {
11
11
  align: {},
12
12
  gap: {},
13
- justify: {}
13
+ justify: {},
14
+ wrap: {}
14
15
  },
15
16
  setup(__props) {
16
17
  const props = __props;
@@ -18,12 +19,13 @@ var UiCluster_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
18
19
  const hostState = computed(() => [
19
20
  props.gap && `gap gap=${props.gap}`,
20
21
  props.align && `align align=${props.align}`,
21
- props.justify && `justify justify=${props.justify}`
22
+ props.justify && `justify justify=${props.justify}`,
23
+ props.wrap && `wrap wrap=${props.wrap}`
22
24
  ].filter(Boolean).join(" "));
23
25
  return (_ctx, _cache) => {
24
26
  return openBlock(), createElementBlock("div", mergeProps({ "data-component": "ui-cluster" }, _ctx.$attrs, { "data-ui-cluster-state": hostState.value || void 0 }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1);
25
27
  };
26
28
  }
27
- }), [["__scopeId", "data-v-81b18ffc"]]);
29
+ }), [["__scopeId", "data-v-b98d575c"]]);
28
30
  //#endregion
29
31
  export { UiCluster_default as t };
@@ -78,14 +78,18 @@ var _hoisted_24 = {
78
78
  key: 1,
79
79
  class: "message"
80
80
  };
81
- var _hoisted_25 = ["id", "hidden"];
82
- var _hoisted_26 = {
81
+ var _hoisted_25 = {
82
+ key: 2,
83
+ class: "message"
84
+ };
85
+ var _hoisted_26 = ["id", "hidden"];
86
+ var _hoisted_27 = {
83
87
  class: "sr-only",
84
88
  role: "status",
85
89
  "aria-live": "polite",
86
90
  "aria-atomic": "true"
87
91
  };
88
- var _hoisted_27 = {
92
+ var _hoisted_28 = {
89
93
  class: "authored-options",
90
94
  hidden: "",
91
95
  "aria-hidden": "true",
@@ -119,14 +123,26 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
119
123
  },
120
124
  filter: { default: "label" },
121
125
  help: { default: "" },
126
+ invalid: {
127
+ type: Boolean,
128
+ default: false
129
+ },
122
130
  items: {},
123
131
  label: { default: "" },
124
132
  labelVisibility: { default: "visible" },
133
+ loading: {
134
+ type: Boolean,
135
+ default: false
136
+ },
125
137
  multiple: {
126
138
  type: Boolean,
127
139
  default: false
128
140
  },
129
141
  name: { default: "" },
142
+ openOnFocus: {
143
+ type: Boolean,
144
+ default: false
145
+ },
130
146
  placeholder: { default: "" },
131
147
  query: {},
132
148
  readonly: {
@@ -173,7 +189,6 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
173
189
  const expanded = ref(false);
174
190
  const rows = ref([]);
175
191
  const active = ref(-1);
176
- const loading = ref(false);
177
192
  const helpOpen = ref(false);
178
193
  const lookupError = ref("");
179
194
  const validation = ref({
@@ -195,6 +210,7 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
195
210
  props.size && `size size=${props.size}`,
196
211
  validationStatus.value && "validationStatus",
197
212
  `validationStatus=${encodeURIComponent(validationStatus.value)}`,
213
+ props.invalid && "invalid",
198
214
  props.multiple && "multiple"
199
215
  ].filter(Boolean).join(" "));
200
216
  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) => [
@@ -313,7 +329,6 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
313
329
  expanded,
314
330
  rows,
315
331
  active,
316
- loading,
317
332
  helpOpen,
318
333
  lookupError,
319
334
  validation,
@@ -370,8 +385,8 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
370
385
  id: `${uid.value}-input`,
371
386
  "aria-controls": `${uid.value}-listbox`,
372
387
  "aria-expanded": expanded.value,
373
- "aria-invalid": validationStatus.value === "error",
374
- "aria-busy": validationStatus.value === "pending",
388
+ "aria-invalid": __props.invalid || validationStatus.value === "error",
389
+ "aria-busy": __props.loading || validationStatus.value === "pending",
375
390
  ".value": display.value,
376
391
  placeholder: __props.placeholder,
377
392
  disabled: __props.disabled,
@@ -470,7 +485,7 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
470
485
  role: "listbox",
471
486
  id: `${uid.value}-listbox`,
472
487
  "aria-label": `${__props.label} suggestions`,
473
- "aria-busy": loading.value,
488
+ "aria-busy": __props.loading,
474
489
  ref: "listbox"
475
490
  }, [
476
491
  (openBlock(true), createElementBlock(Fragment, null, renderList(groups.value, (group) => {
@@ -513,7 +528,8 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
513
528
  id: `${uid.value}-option-${createIndex.value}`,
514
529
  "data-index": createIndex.value
515
530
  }, toDisplayString(`Create “${raw.value}”`), 11, _hoisted_23)) : createCommentVNode("v-if", true),
516
- message.value ? (openBlock(), createElementBlock("div", _hoisted_24, toDisplayString(message.value), 1)) : createCommentVNode("v-if", true)
531
+ message.value ? (openBlock(), createElementBlock("div", _hoisted_24, toDisplayString(message.value), 1)) : createCommentVNode("v-if", true),
532
+ !__props.loading && !rows.value[0] && !creatable.value && !lookupError.value ? (openBlock(), createElementBlock("div", _hoisted_25, [renderSlot(_ctx.$slots, "empty", {}, () => [_cache[3] || (_cache[3] = createTextVNode("No suggestions.", -1))], true)])) : createCommentVNode("v-if", true)
517
533
  ], 8, _hoisted_13), renderSlot(_ctx.$slots, "footer", {}, void 0, true)], 8, _hoisted_12),
518
534
  createElementVNode("div", {
519
535
  class: "message",
@@ -521,12 +537,12 @@ var UiCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
521
537
  hidden: !validation.value.issues.length
522
538
  }, [(openBlock(true), createElementBlock(Fragment, null, renderList(validation.value.issues, (issue, index) => {
523
539
  return openBlock(), createElementBlock("div", { key: index }, toDisplayString(issue.message), 1);
524
- }), 128))], 8, _hoisted_25),
525
- createElementVNode("div", _hoisted_26, toDisplayString(statusText.value), 1),
526
- createElementVNode("div", _hoisted_27, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 512)
540
+ }), 128))], 8, _hoisted_26),
541
+ createElementVNode("div", _hoisted_27, toDisplayString(statusText.value), 1),
542
+ createElementVNode("div", _hoisted_28, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 512)
527
543
  ], 16, _hoisted_1);
528
544
  };
529
545
  }
530
- }), [["__scopeId", "data-v-10aa8368"]]);
546
+ }), [["__scopeId", "data-v-069ed42d"]]);
531
547
  //#endregion
532
548
  export { UiCombobox_default as t };
@@ -38,7 +38,11 @@ var UiContextMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
38
38
  "reason",
39
39
  "trigger"
40
40
  ].includes(key));
41
- const isSelectDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["value"] === "string" && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => ["value", "trigger"].includes(key));
41
+ const isSelectDetail = (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["value"] === "string" && (detail["checked"] === void 0 || typeof detail["checked"] === "boolean") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
42
+ "value",
43
+ "checked",
44
+ "trigger"
45
+ ].includes(key));
42
46
  const dispatch = createDispatch(root, emit, {
43
47
  checks: {
44
48
  open: isOpenDetail,
@@ -61,6 +65,6 @@ var UiContextMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
61
65
  }), [createElementVNode("div", _hoisted_1, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 512)], 16);
62
66
  };
63
67
  }
64
- }), [["__scopeId", "data-v-3d09af05"]]);
68
+ }), [["__scopeId", "data-v-2e00c9d8"]]);
65
69
  //#endregion
66
70
  export { UiContextMenu_default as t };