@threadlabs/looma 0.5.0 → 0.5.2

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 (313) hide show
  1. package/README.md +1 -1
  2. package/components/shared/input-modality.d.ts +8 -0
  3. package/components/shared/input-modality.js +2 -0
  4. package/components/ui-button/ui-button.html +42 -1
  5. package/components/ui-combobox/ui-combobox.html +12 -4
  6. package/components/ui-dialog/ui-dialog.html +13 -0
  7. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +1 -1
  8. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +1 -1
  9. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +6 -2
  10. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +20 -4
  11. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +8 -4
  12. package/components/ui-form-field/ui-form-field.html +18 -7
  13. package/components/ui-icon/ui-icon.html +5 -1
  14. package/components/ui-icon-button/ui-icon-button.html +44 -1
  15. package/components/ui-popover/ui-popover.js +10 -2
  16. package/components/ui-search-shell/ui-search-shell.html +7 -0
  17. package/components/ui-search-shell/ui-search-shell.js +9 -0
  18. package/components/ui-tabs/ui-tabs.html +1 -1
  19. package/components/ui-toast-region/ui-toast-region.html +1 -1
  20. package/components/ui-tree-item/ui-tree-item.html +6 -1
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.js +2 -2
  23. package/package.json +2 -2
  24. package/styles/ui-affordance-scope.css +1 -1
  25. package/styles/ui-avatar-group.css +1 -1
  26. package/styles/ui-avatar.css +1 -1
  27. package/styles/ui-badge.css +1 -1
  28. package/styles/ui-button.css +42 -2
  29. package/styles/ui-callout.css +1 -1
  30. package/styles/ui-checkbox.css +1 -1
  31. package/styles/ui-cluster.css +1 -1
  32. package/styles/ui-combobox.css +1 -1
  33. package/styles/ui-container.css +1 -1
  34. package/styles/ui-context-menu.css +1 -1
  35. package/styles/ui-dialog.css +18 -1
  36. package/styles/ui-disclosure.css +1 -1
  37. package/styles/ui-editable.css +1 -1
  38. package/styles/ui-editor-insert-table-grid.css +1 -1
  39. package/styles/ui-editor-mention-menu.css +1 -1
  40. package/styles/ui-editor-slash-menu.css +1 -1
  41. package/styles/ui-editor-table-context-menu.css +1 -1
  42. package/styles/ui-editor-table-overlay.css +1 -1
  43. package/styles/ui-editor-table-toolbar.css +1 -1
  44. package/styles/ui-editor-toolbar.css +1 -1
  45. package/styles/ui-floating-action-button.css +1 -1
  46. package/styles/ui-form-field.css +24 -10
  47. package/styles/ui-grid.css +1 -1
  48. package/styles/ui-icon-button.css +52 -2
  49. package/styles/ui-icon.css +1 -1
  50. package/styles/ui-input.css +1 -1
  51. package/styles/ui-menu-item.css +1 -1
  52. package/styles/ui-menu.css +1 -1
  53. package/styles/ui-popover.css +1 -1
  54. package/styles/ui-radio-group.css +1 -1
  55. package/styles/ui-radio.css +1 -1
  56. package/styles/ui-reel.css +1 -1
  57. package/styles/ui-search-result-row.css +1 -1
  58. package/styles/ui-search-shell.css +11 -2
  59. package/styles/ui-select.css +1 -1
  60. package/styles/ui-separator.css +1 -1
  61. package/styles/ui-sidebar.css +1 -1
  62. package/styles/ui-stack.css +1 -1
  63. package/styles/ui-switch.css +1 -1
  64. package/styles/ui-switcher.css +1 -1
  65. package/styles/ui-tabs.css +1 -1
  66. package/styles/ui-textarea.css +1 -1
  67. package/styles/ui-toast-region.css +1 -1
  68. package/styles/ui-tooltip.css +1 -1
  69. package/styles/ui-top-bar.css +1 -1
  70. package/styles/ui-tree-item.css +10 -2
  71. package/styles/ui-tree.css +1 -1
  72. package/vanilla/UiAffordanceScope.d.ts +1 -1
  73. package/vanilla/UiAffordanceScope.js +2 -2
  74. package/vanilla/UiAvatar.d.ts +1 -1
  75. package/vanilla/UiAvatar.js +2 -2
  76. package/vanilla/UiAvatarGroup.d.ts +1 -1
  77. package/vanilla/UiAvatarGroup.js +2 -2
  78. package/vanilla/UiBadge.d.ts +1 -1
  79. package/vanilla/UiBadge.js +2 -2
  80. package/vanilla/UiButton.d.ts +3 -1
  81. package/vanilla/UiButton.js +3 -3
  82. package/vanilla/UiCallout.d.ts +1 -1
  83. package/vanilla/UiCallout.js +2 -2
  84. package/vanilla/UiCheckbox.d.ts +1 -1
  85. package/vanilla/UiCheckbox.js +2 -2
  86. package/vanilla/UiCluster.d.ts +1 -1
  87. package/vanilla/UiCluster.js +2 -2
  88. package/vanilla/UiCombobox.d.ts +1 -1
  89. package/vanilla/UiCombobox.js +3 -3
  90. package/vanilla/UiContainer.d.ts +1 -1
  91. package/vanilla/UiContainer.js +2 -2
  92. package/vanilla/UiContextMenu.d.ts +1 -1
  93. package/vanilla/UiContextMenu.js +2 -2
  94. package/vanilla/UiDialog.d.ts +1 -1
  95. package/vanilla/UiDialog.js +2 -2
  96. package/vanilla/UiDisclosure.d.ts +1 -1
  97. package/vanilla/UiDisclosure.js +2 -2
  98. package/vanilla/UiEditable.d.ts +1 -1
  99. package/vanilla/UiEditable.js +2 -2
  100. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  101. package/vanilla/UiEditorInsertTableGrid.js +3 -3
  102. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  103. package/vanilla/UiEditorMentionMenu.js +3 -3
  104. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  105. package/vanilla/UiEditorSlashMenu.js +2 -2
  106. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  107. package/vanilla/UiEditorTableContextMenu.js +3 -3
  108. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  109. package/vanilla/UiEditorTableOverlay.js +3 -3
  110. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  111. package/vanilla/UiEditorTableToolbar.js +3 -3
  112. package/vanilla/UiEditorToolbar.d.ts +1 -1
  113. package/vanilla/UiEditorToolbar.js +2 -2
  114. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  115. package/vanilla/UiFloatingActionButton.js +2 -2
  116. package/vanilla/UiFormField.d.ts +1 -1
  117. package/vanilla/UiFormField.js +15 -6
  118. package/vanilla/UiGrid.d.ts +1 -1
  119. package/vanilla/UiGrid.js +2 -2
  120. package/vanilla/UiIcon.d.ts +1 -1
  121. package/vanilla/UiIcon.js +3 -3
  122. package/vanilla/UiIconButton.d.ts +1 -1
  123. package/vanilla/UiIconButton.js +2 -2
  124. package/vanilla/UiInput.d.ts +1 -1
  125. package/vanilla/UiInput.js +2 -2
  126. package/vanilla/UiMenu.d.ts +1 -1
  127. package/vanilla/UiMenu.js +2 -2
  128. package/vanilla/UiMenuItem.d.ts +1 -1
  129. package/vanilla/UiMenuItem.js +2 -2
  130. package/vanilla/UiPopover.d.ts +1 -1
  131. package/vanilla/UiPopover.js +2 -2
  132. package/vanilla/UiRadio.d.ts +1 -1
  133. package/vanilla/UiRadio.js +2 -2
  134. package/vanilla/UiRadioGroup.d.ts +1 -1
  135. package/vanilla/UiRadioGroup.js +2 -2
  136. package/vanilla/UiReel.d.ts +1 -1
  137. package/vanilla/UiReel.js +2 -2
  138. package/vanilla/UiSearchResultRow.d.ts +1 -1
  139. package/vanilla/UiSearchResultRow.js +2 -2
  140. package/vanilla/UiSearchShell.d.ts +1 -1
  141. package/vanilla/UiSearchShell.js +2 -2
  142. package/vanilla/UiSelect.d.ts +1 -1
  143. package/vanilla/UiSelect.js +2 -2
  144. package/vanilla/UiSeparator.d.ts +1 -1
  145. package/vanilla/UiSeparator.js +2 -2
  146. package/vanilla/UiSidebar.d.ts +1 -1
  147. package/vanilla/UiSidebar.js +2 -2
  148. package/vanilla/UiStack.d.ts +1 -1
  149. package/vanilla/UiStack.js +2 -2
  150. package/vanilla/UiSwitch.d.ts +1 -1
  151. package/vanilla/UiSwitch.js +2 -2
  152. package/vanilla/UiSwitcher.d.ts +1 -1
  153. package/vanilla/UiSwitcher.js +2 -2
  154. package/vanilla/UiTabs.d.ts +1 -1
  155. package/vanilla/UiTabs.js +3 -3
  156. package/vanilla/UiTextarea.d.ts +1 -1
  157. package/vanilla/UiTextarea.js +2 -2
  158. package/vanilla/UiToastRegion.d.ts +1 -1
  159. package/vanilla/UiToastRegion.js +3 -3
  160. package/vanilla/UiTooltip.d.ts +1 -1
  161. package/vanilla/UiTooltip.js +2 -2
  162. package/vanilla/UiTopBar.d.ts +1 -1
  163. package/vanilla/UiTopBar.js +1 -1
  164. package/vanilla/UiTree.d.ts +1 -1
  165. package/vanilla/UiTree.js +2 -2
  166. package/vanilla/UiTreeItem.d.ts +1 -1
  167. package/vanilla/UiTreeItem.js +2 -2
  168. package/vue/UiAffordanceScope.d.ts +2 -2
  169. package/vue/UiAffordanceScope.vue +92 -73
  170. package/vue/UiAvatar.d.ts +7 -7
  171. package/vue/UiAvatar.vue +145 -105
  172. package/vue/UiAvatarGroup.d.ts +4 -4
  173. package/vue/UiAvatarGroup.vue +134 -118
  174. package/vue/UiBadge.d.ts +4 -4
  175. package/vue/UiBadge.vue +113 -114
  176. package/vue/UiButton.d.ts +10 -6
  177. package/vue/UiButton.vue +289 -220
  178. package/vue/UiCallout.d.ts +2 -2
  179. package/vue/UiCallout.vue +154 -87
  180. package/vue/UiCheckbox.d.ts +14 -10
  181. package/vue/UiCheckbox.vue +228 -162
  182. package/vue/UiCluster.d.ts +2 -2
  183. package/vue/UiCluster.vue +53 -60
  184. package/vue/UiCombobox.d.ts +36 -32
  185. package/vue/UiCombobox.vue +1005 -416
  186. package/vue/UiContainer.d.ts +2 -2
  187. package/vue/UiContainer.vue +48 -51
  188. package/vue/UiContextMenu.d.ts +6 -4
  189. package/vue/UiContextMenu.vue +205 -116
  190. package/vue/UiDialog.d.ts +11 -9
  191. package/vue/UiDialog.vue +287 -212
  192. package/vue/UiDisclosure.d.ts +8 -6
  193. package/vue/UiDisclosure.vue +248 -159
  194. package/vue/UiEditable.d.ts +16 -12
  195. package/vue/UiEditable.vue +325 -205
  196. package/vue/UiEditorInsertTableGrid.d.ts +8 -8
  197. package/vue/UiEditorInsertTableGrid.vue +216 -157
  198. package/vue/UiEditorMentionMenu.d.ts +9 -9
  199. package/vue/UiEditorMentionMenu.vue +265 -222
  200. package/vue/UiEditorSlashMenu.d.ts +7 -7
  201. package/vue/UiEditorSlashMenu.vue +286 -240
  202. package/vue/UiEditorTableContextMenu.d.ts +5 -5
  203. package/vue/UiEditorTableContextMenu.vue +306 -193
  204. package/vue/UiEditorTableOverlay.d.ts +2 -2
  205. package/vue/UiEditorTableOverlay.vue +609 -369
  206. package/vue/UiEditorTableToolbar.d.ts +7 -7
  207. package/vue/UiEditorTableToolbar.vue +443 -268
  208. package/vue/UiEditorToolbar.d.ts +2 -2
  209. package/vue/UiEditorToolbar.vue +134 -121
  210. package/vue/UiFloatingActionButton.d.ts +6 -6
  211. package/vue/UiFloatingActionButton.vue +100 -99
  212. package/vue/UiFormField.d.ts +6 -6
  213. package/vue/UiFormField.vue +112 -80
  214. package/vue/UiGrid.d.ts +2 -2
  215. package/vue/UiGrid.vue +51 -57
  216. package/vue/UiIcon.d.ts +2 -2
  217. package/vue/UiIcon.vue +118 -89
  218. package/vue/UiIconButton.d.ts +11 -11
  219. package/vue/UiIconButton.vue +285 -206
  220. package/vue/UiInput.d.ts +9 -9
  221. package/vue/UiInput.vue +153 -127
  222. package/vue/UiMenu.d.ts +8 -6
  223. package/vue/UiMenu.vue +217 -143
  224. package/vue/UiMenuItem.d.ts +4 -4
  225. package/vue/UiMenuItem.vue +52 -46
  226. package/vue/UiPopover.d.ts +8 -6
  227. package/vue/UiPopover.vue +197 -137
  228. package/vue/UiRadio.d.ts +14 -10
  229. package/vue/UiRadio.vue +183 -117
  230. package/vue/UiRadioGroup.d.ts +14 -12
  231. package/vue/UiRadioGroup.vue +172 -111
  232. package/vue/UiReel.d.ts +3 -3
  233. package/vue/UiReel.vue +77 -77
  234. package/vue/UiSearchResultRow.d.ts +4 -4
  235. package/vue/UiSearchResultRow.vue +124 -115
  236. package/vue/UiSearchShell.d.ts +10 -8
  237. package/vue/UiSearchShell.vue +245 -176
  238. package/vue/UiSelect.d.ts +9 -9
  239. package/vue/UiSelect.vue +162 -134
  240. package/vue/UiSeparator.d.ts +2 -2
  241. package/vue/UiSeparator.vue +22 -27
  242. package/vue/UiSidebar.d.ts +20 -18
  243. package/vue/UiSidebar.vue +312 -224
  244. package/vue/UiStack.d.ts +3 -3
  245. package/vue/UiStack.vue +64 -70
  246. package/vue/UiSwitch.d.ts +12 -8
  247. package/vue/UiSwitch.vue +218 -150
  248. package/vue/UiSwitcher.d.ts +3 -3
  249. package/vue/UiSwitcher.vue +73 -75
  250. package/vue/UiTabs.d.ts +10 -8
  251. package/vue/UiTabs.vue +251 -210
  252. package/vue/UiTextarea.d.ts +11 -11
  253. package/vue/UiTextarea.vue +155 -128
  254. package/vue/UiToastRegion.d.ts +10 -8
  255. package/vue/UiToastRegion.vue +261 -198
  256. package/vue/UiTooltip.d.ts +14 -12
  257. package/vue/UiTooltip.vue +241 -177
  258. package/vue/UiTopBar.vue +51 -42
  259. package/vue/UiTree.d.ts +8 -6
  260. package/vue/UiTree.vue +157 -70
  261. package/vue/UiTreeItem.d.ts +24 -22
  262. package/vue/UiTreeItem.vue +456 -339
  263. package/vue/chunks/UiAffordanceScope.js +9 -16
  264. package/vue/chunks/UiAvatar.js +23 -29
  265. package/vue/chunks/UiAvatarGroup.js +16 -39
  266. package/vue/chunks/UiBadge.js +3 -12
  267. package/vue/chunks/UiButton.js +15 -18
  268. package/vue/chunks/UiCallout.js +8 -17
  269. package/vue/chunks/UiCheckbox.js +37 -40
  270. package/vue/chunks/UiCluster.js +3 -12
  271. package/vue/chunks/UiCombobox.js +224 -266
  272. package/vue/chunks/UiContainer.js +3 -12
  273. package/vue/chunks/UiContextMenu.js +39 -34
  274. package/vue/chunks/UiDialog.js +36 -39
  275. package/vue/chunks/UiDisclosure.js +43 -48
  276. package/vue/chunks/UiEditable.js +55 -57
  277. package/vue/chunks/UiEditorInsertTableGrid.js +55 -73
  278. package/vue/chunks/UiEditorMentionMenu.js +40 -81
  279. package/vue/chunks/UiEditorSlashMenu.js +28 -52
  280. package/vue/chunks/UiEditorTableContextMenu.js +32 -56
  281. package/vue/chunks/UiEditorTableOverlay.js +58 -82
  282. package/vue/chunks/UiEditorTableToolbar.js +61 -85
  283. package/vue/chunks/UiEditorToolbar.js +4 -13
  284. package/vue/chunks/UiFloatingActionButton.js +7 -21
  285. package/vue/chunks/UiFormField.js +15 -12
  286. package/vue/chunks/UiGrid.js +3 -12
  287. package/vue/chunks/UiIcon.js +20 -43
  288. package/vue/chunks/UiIconButton.js +16 -28
  289. package/vue/chunks/UiInput.js +20 -25
  290. package/vue/chunks/UiMenu.js +29 -33
  291. package/vue/chunks/UiMenuItem.js +4 -10
  292. package/vue/chunks/UiPopover.js +28 -29
  293. package/vue/chunks/UiRadio.js +36 -39
  294. package/vue/chunks/UiRadioGroup.js +30 -34
  295. package/vue/chunks/UiReel.js +6 -15
  296. package/vue/chunks/UiSearchResultRow.js +6 -19
  297. package/vue/chunks/UiSearchShell.js +25 -28
  298. package/vue/chunks/UiSelect.js +20 -23
  299. package/vue/chunks/UiSeparator.js +2 -8
  300. package/vue/chunks/UiSidebar.js +39 -44
  301. package/vue/chunks/UiStack.js +6 -15
  302. package/vue/chunks/UiSwitch.js +35 -38
  303. package/vue/chunks/UiSwitcher.js +6 -15
  304. package/vue/chunks/UiTabs.js +47 -85
  305. package/vue/chunks/UiTextarea.js +21 -26
  306. package/vue/chunks/UiToastRegion.js +38 -72
  307. package/vue/chunks/UiTooltip.js +34 -35
  308. package/vue/chunks/UiTopBar.js +1 -1
  309. package/vue/chunks/UiTree.js +20 -15
  310. package/vue/chunks/UiTreeItem.js +85 -102
  311. package/vue/components.css +3994 -3764
  312. package/vue/index.d.ts +1 -0
  313. package/vue/index.js +2 -1
@@ -12,22 +12,13 @@ var UiContainer_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
12
12
  measure: {}
13
13
  },
14
14
  setup(__props) {
15
- const hn = { t: (v) => v === true || (typeof v === "string" ? v.length > 0 : typeof v === "number" ? v !== 0 && v === v : Array.isArray(v) ? v.length > 0 : v !== null && typeof v === "object" ? Object.keys(v).length > 0 : false) };
16
15
  const props = __props;
17
- /** The resolved values the styles' :host-state() rules test. */
18
- const hostState = computed(() => ["measure", "gutters"].flatMap((name) => {
19
- const value = read(name);
20
- const tokens = hn.t(value) ? [name] : [];
21
- if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
22
- return tokens;
23
- }).join(" "));
24
- function read(name) {
25
- return props[name];
26
- }
16
+ /** The values the styles' :host-state() rules test. */
17
+ const hostState = computed(() => [props.measure && `measure measure=${props.measure}`, props.gutters && `gutters gutters=${props.gutters}`].filter(Boolean).join(" "));
27
18
  return (_ctx, _cache) => {
28
19
  return openBlock(), createElementBlock("div", mergeProps({ "data-component": "ui-container" }, _ctx.$attrs, { "data-ui-container-state": hostState.value || void 0 }), [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 16, _hoisted_1);
29
20
  };
30
21
  }
31
- }), [["__scopeId", "data-v-4a497418"]]);
22
+ }), [["__scopeId", "data-v-bf6caa0d"]]);
32
23
  //#endregion
33
24
  export { UiContainer_default as t };
@@ -1,6 +1,13 @@
1
1
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
- import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, watchEffect } from "vue";
2
+ import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, useTemplateRef, watchEffect } from "vue";
3
3
  import * as controllerModule from "@threadlabs/looma/components/ui-context-menu/ui-context-menu.js";
4
+ //#region .build/vue/UiContextMenu.vue?vue&type=script&setup=true&lang.ts
5
+ var _hoisted_1 = {
6
+ class: "menu",
7
+ role: "menu",
8
+ "aria-orientation": "vertical",
9
+ ref: "menu"
10
+ };
4
11
  //#endregion
5
12
  //#region .build/vue/UiContextMenu.vue
6
13
  var UiContextMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -9,11 +16,12 @@ var UiContextMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
9
16
  props: {
10
17
  for: { default: "" },
11
18
  open: {
12
- type: [Boolean, null],
19
+ type: Boolean,
13
20
  default: false
14
21
  }
15
22
  },
16
23
  emits: [
24
+ "update:open",
17
25
  "open",
18
26
  "close",
19
27
  "select"
@@ -22,56 +30,58 @@ var UiContextMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
22
30
  const props = __props;
23
31
  const emit = __emit;
24
32
  const root = ref(null);
25
- const refs = {};
26
- const state_internalOpen = ref(false);
33
+ const menuElement = useTemplateRef("menu");
34
+ const internalOpen = ref(false);
27
35
  /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
28
- const dispatch = (name, detail) => {
36
+ function dispatch(name, detail) {
29
37
  const declared = {
30
- "open": {
31
- "bubbles": true,
32
- "composed": true,
33
- "cancelable": false
38
+ open: {
39
+ bubbles: true,
40
+ composed: true,
41
+ cancelable: false
34
42
  },
35
- "close": {
36
- "bubbles": true,
37
- "composed": true,
38
- "cancelable": false
43
+ close: {
44
+ bubbles: true,
45
+ composed: true,
46
+ cancelable: false
39
47
  },
40
- "select": {
41
- "bubbles": true,
42
- "composed": true,
43
- "cancelable": false
48
+ select: {
49
+ bubbles: true,
50
+ composed: true,
51
+ cancelable: false
44
52
  }
45
53
  };
46
54
  const checks = {
47
- "open": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic" || detail["reason"] === "light-dismiss" || detail["reason"] === "escape") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
55
+ open: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic" || detail["reason"] === "light-dismiss" || detail["reason"] === "escape") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
48
56
  "open",
49
57
  "reason",
50
58
  "trigger"
51
59
  ].includes(key)),
52
- "close": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic" || detail["reason"] === "light-dismiss" || detail["reason"] === "escape") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
60
+ close: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic" || detail["reason"] === "light-dismiss" || detail["reason"] === "escape") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
53
61
  "open",
54
62
  "reason",
55
63
  "trigger"
56
64
  ].includes(key)),
57
- "select": (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))
65
+ select: (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))
58
66
  };
59
67
  if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
60
- emit(name, detail);
68
+ const emitEvent = emit;
69
+ emitEvent(name, detail);
70
+ if (detail !== null && typeof detail === "object" && "open" in detail) emitEvent("update:open", detail["open"]);
61
71
  return root.value?.dispatchEvent(new CustomEvent(name, {
62
72
  bubbles: true,
63
73
  composed: true,
64
74
  ...declared[name],
65
75
  detail
66
76
  })) ?? true;
67
- };
77
+ }
68
78
  function read(name) {
69
- if (name === "internalOpen") return state_internalOpen.value;
79
+ if (name === "internalOpen") return internalOpen.value;
70
80
  return props[name];
71
81
  }
72
82
  function write(name, value) {
73
83
  if (name === "internalOpen") {
74
- state_internalOpen.value = value;
84
+ internalOpen.value = value;
75
85
  return true;
76
86
  }
77
87
  throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
@@ -85,7 +95,9 @@ var UiContextMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
85
95
  get: (_target, name) => typeof name === "string" ? read(name) : void 0,
86
96
  set: (_target, name, value) => typeof name === "string" && write(name, value)
87
97
  }),
88
- refs,
98
+ refs: { get menu() {
99
+ return menuElement.value;
100
+ } },
89
101
  elements: new Proxy({}, { get: (_target, name) => {
90
102
  if (typeof name !== "string" || root.value === null) return void 0;
91
103
  return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
@@ -138,16 +150,9 @@ var UiContextMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
138
150
  return openBlock(), createElementBlock("span", mergeProps({ "data-component": "ui-context-menu" }, _ctx.$attrs, {
139
151
  ref_key: "root",
140
152
  ref: root
141
- }), [createElementVNode("div", {
142
- class: "menu",
143
- role: "menu",
144
- "aria-orientation": "vertical",
145
- ref: (element) => {
146
- refs["menu"] = element;
147
- }
148
- }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 512)], 16);
153
+ }), [createElementVNode("div", _hoisted_1, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 512)], 16);
149
154
  };
150
155
  }
151
- }), [["__scopeId", "data-v-ef76cc50"]]);
156
+ }), [["__scopeId", "data-v-9d2943e9"]]);
152
157
  //#endregion
153
158
  export { UiContextMenu_default as t };
@@ -1,5 +1,5 @@
1
1
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
- import { computed, createCommentVNode, createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, toDisplayString, watchEffect } from "vue";
2
+ import { computed, createCommentVNode, createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, toDisplayString, useTemplateRef, watchEffect } from "vue";
3
3
  import * as controllerModule from "@threadlabs/looma/components/ui-dialog/ui-dialog.js";
4
4
  //#region .build/vue/UiDialog.vue?vue&type=script&setup=true&lang.ts
5
5
  var _hoisted_1 = ["aria-label"];
@@ -7,7 +7,13 @@ var _hoisted_2 = {
7
7
  key: 0,
8
8
  class: "title"
9
9
  };
10
- var _hoisted_3 = { class: "body" };
10
+ var _hoisted_3 = {
11
+ class: "close",
12
+ type: "button",
13
+ "aria-label": "Close",
14
+ ref: "close"
15
+ };
16
+ var _hoisted_4 = { class: "body" };
11
17
  //#endregion
12
18
  //#region .build/vue/UiDialog.vue
13
19
  var UiDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -15,67 +21,63 @@ var UiDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
15
21
  __name: "UiDialog",
16
22
  props: {
17
23
  dismissible: {
18
- type: [Boolean, null],
24
+ type: Boolean,
19
25
  default: false
20
26
  },
21
27
  for: { default: "" },
22
28
  label: {},
23
29
  modal: {
24
- type: [Boolean, null],
30
+ type: Boolean,
25
31
  default: false
26
32
  },
27
33
  open: {
28
- type: [Boolean, null],
34
+ type: Boolean,
29
35
  default: false
30
36
  }
31
37
  },
32
- emits: ["close"],
38
+ emits: ["update:open", "close"],
33
39
  setup(__props, { emit: __emit }) {
34
- const hn = {
35
- t: (v) => v === true || (typeof v === "string" ? v.length > 0 : typeof v === "number" ? v !== 0 && v === v : Array.isArray(v) ? v.length > 0 : v !== null && typeof v === "object" ? Object.keys(v).length > 0 : false),
36
- text: (v) => v === void 0 || v === null ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? "" : String(v),
37
- attr: (v) => v === void 0 || v === null || v === false ? void 0 : v === true ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? void 0 : String(v),
38
- enumerated: (v) => typeof v === "boolean" ? String(v) : hn.attr(v)
39
- };
40
40
  const props = __props;
41
41
  const emit = __emit;
42
42
  const root = ref(null);
43
- const refs = {};
44
- const state_internalOpen = ref(false);
45
- const state_accessibleLabel = ref("Dialog");
43
+ const closeElement = useTemplateRef("close");
44
+ const internalOpen = ref(false);
45
+ const accessibleLabel = ref("Dialog");
46
46
  /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
47
- const dispatch = (name, detail) => {
48
- const declared = { "close": {
49
- "bubbles": true,
50
- "composed": true,
51
- "cancelable": false
47
+ function dispatch(name, detail) {
48
+ const declared = { close: {
49
+ bubbles: true,
50
+ composed: true,
51
+ cancelable: false
52
52
  } };
53
- const checks = { "close": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic" || detail["reason"] === "light-dismiss" || detail["reason"] === "escape") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
53
+ const checks = { close: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic" || detail["reason"] === "light-dismiss" || detail["reason"] === "escape") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
54
54
  "open",
55
55
  "reason",
56
56
  "trigger"
57
57
  ].includes(key)) };
58
58
  if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
59
- emit(name, detail);
59
+ const emitEvent = emit;
60
+ emitEvent(name, detail);
61
+ if (detail !== null && typeof detail === "object" && "open" in detail) emitEvent("update:open", detail["open"]);
60
62
  return root.value?.dispatchEvent(new CustomEvent(name, {
61
63
  bubbles: true,
62
64
  composed: true,
63
65
  ...declared[name],
64
66
  detail
65
67
  })) ?? true;
66
- };
68
+ }
67
69
  function read(name) {
68
- if (name === "internalOpen") return state_internalOpen.value;
69
- if (name === "accessibleLabel") return state_accessibleLabel.value;
70
+ if (name === "internalOpen") return internalOpen.value;
71
+ if (name === "accessibleLabel") return accessibleLabel.value;
70
72
  return props[name];
71
73
  }
72
74
  function write(name, value) {
73
75
  if (name === "internalOpen") {
74
- state_internalOpen.value = value;
76
+ internalOpen.value = value;
75
77
  return true;
76
78
  }
77
79
  if (name === "accessibleLabel") {
78
- state_accessibleLabel.value = value;
80
+ accessibleLabel.value = value;
79
81
  return true;
80
82
  }
81
83
  throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
@@ -89,7 +91,9 @@ var UiDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
89
91
  get: (_target, name) => typeof name === "string" ? read(name) : void 0,
90
92
  set: (_target, name, value) => typeof name === "string" && write(name, value)
91
93
  }),
92
- refs,
94
+ refs: { get close() {
95
+ return closeElement.value;
96
+ } },
93
97
  elements: new Proxy({}, { get: (_target, name) => {
94
98
  if (typeof name !== "string" || root.value === null) return void 0;
95
99
  return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
@@ -140,23 +144,16 @@ var UiDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
140
144
  });
141
145
  return (_ctx, _cache) => {
142
146
  return openBlock(), createElementBlock("dialog", mergeProps({ "data-component": "ui-dialog" }, _ctx.$attrs, {
143
- "aria-label": hn.enumerated(state_accessibleLabel.value),
147
+ "aria-label": accessibleLabel.value,
144
148
  ref_key: "root",
145
149
  ref: root
146
150
  }), [
147
- createElementVNode("header", null, [hn.t(props.label) ? (openBlock(), createElementBlock("h2", _hoisted_2, toDisplayString(hn.text(props.label)), 1)) : createCommentVNode("v-if", true), createElementVNode("button", {
148
- class: "close",
149
- type: "button",
150
- "aria-label": "Close",
151
- ref: (element) => {
152
- refs["close"] = element;
153
- }
154
- }, null, 512)]),
155
- createElementVNode("div", _hoisted_3, [renderSlot(_ctx.$slots, "default", {}, void 0, true)]),
151
+ createElementVNode("header", null, [__props.label ? (openBlock(), createElementBlock("h2", _hoisted_2, toDisplayString(__props.label), 1)) : createCommentVNode("v-if", true), createElementVNode("button", _hoisted_3, null, 512)]),
152
+ createElementVNode("div", _hoisted_4, [renderSlot(_ctx.$slots, "default", {}, void 0, true)]),
156
153
  createElementVNode("footer", null, [renderSlot(_ctx.$slots, "actions", {}, void 0, true)])
157
154
  ], 16, _hoisted_1);
158
155
  };
159
156
  }
160
- }), [["__scopeId", "data-v-901875ac"]]);
157
+ }), [["__scopeId", "data-v-e78fa426"]]);
161
158
  //#endregion
162
159
  export { UiDialog_default as t };
@@ -1,5 +1,5 @@
1
1
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
2
- import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, toDisplayString, watchEffect } from "vue";
2
+ import { computed, createElementBlock, createElementVNode, defineComponent, mergeProps, onBeforeUnmount, onMounted, openBlock, ref, renderSlot, shallowRef, toDisplayString, useTemplateRef, watchEffect } from "vue";
3
3
  import * as controllerModule from "@threadlabs/looma/components/ui-disclosure/ui-disclosure.js";
4
4
  //#region .build/vue/UiDisclosure.vue?vue&type=script&setup=true&lang.ts
5
5
  var _hoisted_1 = ["data-ui-disclosure-state"];
@@ -17,83 +17,78 @@ var UiDisclosure_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
17
17
  __name: "UiDisclosure",
18
18
  props: {
19
19
  disabled: {
20
- type: [Boolean, null],
20
+ type: Boolean,
21
21
  default: false
22
22
  },
23
23
  open: {
24
- type: [Boolean, null],
24
+ type: Boolean,
25
25
  default: false
26
26
  },
27
27
  summary: { default: "Details" }
28
28
  },
29
- emits: ["open", "close"],
29
+ emits: [
30
+ "update:open",
31
+ "open",
32
+ "close"
33
+ ],
30
34
  setup(__props, { emit: __emit }) {
31
- const hn = {
32
- t: (v) => v === true || (typeof v === "string" ? v.length > 0 : typeof v === "number" ? v !== 0 && v === v : Array.isArray(v) ? v.length > 0 : v !== null && typeof v === "object" ? Object.keys(v).length > 0 : false),
33
- text: (v) => v === void 0 || v === null ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? "" : String(v),
34
- attr: (v) => v === void 0 || v === null || v === false ? void 0 : v === true ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? void 0 : String(v),
35
- enumerated: (v) => typeof v === "boolean" ? String(v) : hn.attr(v)
36
- };
37
35
  const props = __props;
38
36
  const emit = __emit;
39
37
  const root = ref(null);
40
- const refs = {};
41
- const state_internalOpen = ref(false);
42
- const state_contentId = ref("");
38
+ const triggerElement = useTemplateRef("trigger");
39
+ const internalOpen = ref(false);
40
+ const contentId = ref("");
41
+ /** The values the styles' :host-state() rules test. */
42
+ const hostState = computed(() => [internalOpen.value && "internalOpen"].filter(Boolean).join(" "));
43
43
  /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
44
- const dispatch = (name, detail) => {
44
+ function dispatch(name, detail) {
45
45
  const declared = {
46
- "open": {
47
- "bubbles": true,
48
- "composed": true,
49
- "cancelable": false
46
+ open: {
47
+ bubbles: true,
48
+ composed: true,
49
+ cancelable: false
50
50
  },
51
- "close": {
52
- "bubbles": true,
53
- "composed": true,
54
- "cancelable": false
51
+ close: {
52
+ bubbles: true,
53
+ composed: true,
54
+ cancelable: false
55
55
  }
56
56
  };
57
57
  const checks = {
58
- "open": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic" || detail["reason"] === "light-dismiss" || detail["reason"] === "escape") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
58
+ open: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic" || detail["reason"] === "light-dismiss" || detail["reason"] === "escape") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
59
59
  "open",
60
60
  "reason",
61
61
  "trigger"
62
62
  ].includes(key)),
63
- "close": (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic" || detail["reason"] === "light-dismiss" || detail["reason"] === "escape") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
63
+ close: (detail) => detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof detail["open"] === "boolean" && (detail["reason"] === "action" || detail["reason"] === "programmatic" || detail["reason"] === "light-dismiss" || detail["reason"] === "escape") && (detail["trigger"] === "keyboard" || detail["trigger"] === "pointer" || detail["trigger"] === "programmatic") && Object.keys(detail).every((key) => [
64
64
  "open",
65
65
  "reason",
66
66
  "trigger"
67
67
  ].includes(key))
68
68
  };
69
69
  if (detail !== void 0 && checks[name] !== void 0 && !checks[name](detail)) throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
70
- emit(name, detail);
70
+ const emitEvent = emit;
71
+ emitEvent(name, detail);
72
+ if (detail !== null && typeof detail === "object" && "open" in detail) emitEvent("update:open", detail["open"]);
71
73
  return root.value?.dispatchEvent(new CustomEvent(name, {
72
74
  bubbles: true,
73
75
  composed: true,
74
76
  ...declared[name],
75
77
  detail
76
78
  })) ?? true;
77
- };
78
- /** The resolved values the styles' :host-state() rules test. */
79
- const hostState = computed(() => ["internalOpen"].flatMap((name) => {
80
- const value = read(name);
81
- const tokens = hn.t(value) ? [name] : [];
82
- if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
83
- return tokens;
84
- }).join(" "));
79
+ }
85
80
  function read(name) {
86
- if (name === "internalOpen") return state_internalOpen.value;
87
- if (name === "contentId") return state_contentId.value;
81
+ if (name === "internalOpen") return internalOpen.value;
82
+ if (name === "contentId") return contentId.value;
88
83
  return props[name];
89
84
  }
90
85
  function write(name, value) {
91
86
  if (name === "internalOpen") {
92
- state_internalOpen.value = value;
87
+ internalOpen.value = value;
93
88
  return true;
94
89
  }
95
90
  if (name === "contentId") {
96
- state_contentId.value = value;
91
+ contentId.value = value;
97
92
  return true;
98
93
  }
99
94
  throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
@@ -107,7 +102,9 @@ var UiDisclosure_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
107
102
  get: (_target, name) => typeof name === "string" ? read(name) : void 0,
108
103
  set: (_target, name, value) => typeof name === "string" && write(name, value)
109
104
  }),
110
- refs,
105
+ refs: { get trigger() {
106
+ return triggerElement.value;
107
+ } },
111
108
  elements: new Proxy({}, { get: (_target, name) => {
112
109
  if (typeof name !== "string" || root.value === null) return void 0;
113
110
  return (root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form"))?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? void 0;
@@ -164,22 +161,20 @@ var UiDisclosure_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
164
161
  }), [createElementVNode("button", {
165
162
  class: "trigger",
166
163
  type: "button",
167
- "aria-controls": hn.enumerated(state_contentId.value),
168
- "aria-expanded": hn.enumerated(state_internalOpen.value),
169
- disabled: hn.attr(props.disabled),
170
- ref: (element) => {
171
- refs["trigger"] = element;
172
- }
173
- }, [createElementVNode("span", null, toDisplayString(hn.text(props.summary)), 1), _cache[0] || (_cache[0] = createElementVNode("span", {
164
+ "aria-controls": contentId.value,
165
+ "aria-expanded": internalOpen.value,
166
+ disabled: __props.disabled,
167
+ ref: "trigger"
168
+ }, [createElementVNode("span", null, toDisplayString(__props.summary), 1), _cache[0] || (_cache[0] = createElementVNode("span", {
174
169
  class: "chevron",
175
170
  "aria-hidden": "true"
176
171
  }, null, -1))], 8, _hoisted_2), createElementVNode("div", {
177
172
  class: "panel",
178
- id: hn.attr(state_contentId.value),
179
- inert: hn.attr(!hn.t(state_internalOpen.value))
173
+ id: contentId.value,
174
+ inert: !internalOpen.value
180
175
  }, [createElementVNode("div", _hoisted_4, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])], 8, _hoisted_3)], 16, _hoisted_1);
181
176
  };
182
177
  }
183
- }), [["__scopeId", "data-v-ab5e82b4"]]);
178
+ }), [["__scopeId", "data-v-283377cf"]]);
184
179
  //#endregion
185
180
  export { UiDisclosure_default as t };