@threadlabs/looma 0.5.1 → 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 (309) hide show
  1. package/README.md +1 -1
  2. package/components/ui-button/ui-button.html +13 -0
  3. package/components/ui-combobox/ui-combobox.html +12 -4
  4. package/components/ui-dialog/ui-dialog.html +13 -0
  5. package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +1 -1
  6. package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +1 -1
  7. package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +6 -2
  8. package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +20 -4
  9. package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +8 -4
  10. package/components/ui-form-field/ui-form-field.html +18 -7
  11. package/components/ui-icon/ui-icon.html +5 -1
  12. package/components/ui-icon-button/ui-icon-button.html +30 -0
  13. package/components/ui-popover/ui-popover.js +10 -2
  14. package/components/ui-search-shell/ui-search-shell.html +7 -0
  15. package/components/ui-search-shell/ui-search-shell.js +9 -0
  16. package/components/ui-tabs/ui-tabs.html +1 -1
  17. package/components/ui-toast-region/ui-toast-region.html +1 -1
  18. package/components/ui-tree-item/ui-tree-item.html +6 -1
  19. package/dist/index.d.ts +1 -1
  20. package/dist/index.js +2 -2
  21. package/package.json +2 -2
  22. package/styles/ui-affordance-scope.css +1 -1
  23. package/styles/ui-avatar-group.css +1 -1
  24. package/styles/ui-avatar.css +1 -1
  25. package/styles/ui-badge.css +1 -1
  26. package/styles/ui-button.css +11 -1
  27. package/styles/ui-callout.css +1 -1
  28. package/styles/ui-checkbox.css +1 -1
  29. package/styles/ui-cluster.css +1 -1
  30. package/styles/ui-combobox.css +1 -1
  31. package/styles/ui-container.css +1 -1
  32. package/styles/ui-context-menu.css +1 -1
  33. package/styles/ui-dialog.css +18 -1
  34. package/styles/ui-disclosure.css +1 -1
  35. package/styles/ui-editable.css +1 -1
  36. package/styles/ui-editor-insert-table-grid.css +1 -1
  37. package/styles/ui-editor-mention-menu.css +1 -1
  38. package/styles/ui-editor-slash-menu.css +1 -1
  39. package/styles/ui-editor-table-context-menu.css +1 -1
  40. package/styles/ui-editor-table-overlay.css +1 -1
  41. package/styles/ui-editor-table-toolbar.css +1 -1
  42. package/styles/ui-editor-toolbar.css +1 -1
  43. package/styles/ui-floating-action-button.css +1 -1
  44. package/styles/ui-form-field.css +24 -10
  45. package/styles/ui-grid.css +1 -1
  46. package/styles/ui-icon-button.css +36 -1
  47. package/styles/ui-icon.css +1 -1
  48. package/styles/ui-input.css +1 -1
  49. package/styles/ui-menu-item.css +1 -1
  50. package/styles/ui-menu.css +1 -1
  51. package/styles/ui-popover.css +1 -1
  52. package/styles/ui-radio-group.css +1 -1
  53. package/styles/ui-radio.css +1 -1
  54. package/styles/ui-reel.css +1 -1
  55. package/styles/ui-search-result-row.css +1 -1
  56. package/styles/ui-search-shell.css +11 -2
  57. package/styles/ui-select.css +1 -1
  58. package/styles/ui-separator.css +1 -1
  59. package/styles/ui-sidebar.css +1 -1
  60. package/styles/ui-stack.css +1 -1
  61. package/styles/ui-switch.css +1 -1
  62. package/styles/ui-switcher.css +1 -1
  63. package/styles/ui-tabs.css +1 -1
  64. package/styles/ui-textarea.css +1 -1
  65. package/styles/ui-toast-region.css +1 -1
  66. package/styles/ui-tooltip.css +1 -1
  67. package/styles/ui-top-bar.css +1 -1
  68. package/styles/ui-tree-item.css +10 -2
  69. package/styles/ui-tree.css +1 -1
  70. package/vanilla/UiAffordanceScope.d.ts +1 -1
  71. package/vanilla/UiAffordanceScope.js +2 -2
  72. package/vanilla/UiAvatar.d.ts +1 -1
  73. package/vanilla/UiAvatar.js +2 -2
  74. package/vanilla/UiAvatarGroup.d.ts +1 -1
  75. package/vanilla/UiAvatarGroup.js +2 -2
  76. package/vanilla/UiBadge.d.ts +1 -1
  77. package/vanilla/UiBadge.js +2 -2
  78. package/vanilla/UiButton.d.ts +3 -1
  79. package/vanilla/UiButton.js +3 -3
  80. package/vanilla/UiCallout.d.ts +1 -1
  81. package/vanilla/UiCallout.js +2 -2
  82. package/vanilla/UiCheckbox.d.ts +1 -1
  83. package/vanilla/UiCheckbox.js +2 -2
  84. package/vanilla/UiCluster.d.ts +1 -1
  85. package/vanilla/UiCluster.js +2 -2
  86. package/vanilla/UiCombobox.d.ts +1 -1
  87. package/vanilla/UiCombobox.js +3 -3
  88. package/vanilla/UiContainer.d.ts +1 -1
  89. package/vanilla/UiContainer.js +2 -2
  90. package/vanilla/UiContextMenu.d.ts +1 -1
  91. package/vanilla/UiContextMenu.js +2 -2
  92. package/vanilla/UiDialog.d.ts +1 -1
  93. package/vanilla/UiDialog.js +2 -2
  94. package/vanilla/UiDisclosure.d.ts +1 -1
  95. package/vanilla/UiDisclosure.js +2 -2
  96. package/vanilla/UiEditable.d.ts +1 -1
  97. package/vanilla/UiEditable.js +2 -2
  98. package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
  99. package/vanilla/UiEditorInsertTableGrid.js +3 -3
  100. package/vanilla/UiEditorMentionMenu.d.ts +1 -1
  101. package/vanilla/UiEditorMentionMenu.js +3 -3
  102. package/vanilla/UiEditorSlashMenu.d.ts +1 -1
  103. package/vanilla/UiEditorSlashMenu.js +2 -2
  104. package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
  105. package/vanilla/UiEditorTableContextMenu.js +3 -3
  106. package/vanilla/UiEditorTableOverlay.d.ts +1 -1
  107. package/vanilla/UiEditorTableOverlay.js +3 -3
  108. package/vanilla/UiEditorTableToolbar.d.ts +1 -1
  109. package/vanilla/UiEditorTableToolbar.js +3 -3
  110. package/vanilla/UiEditorToolbar.d.ts +1 -1
  111. package/vanilla/UiEditorToolbar.js +2 -2
  112. package/vanilla/UiFloatingActionButton.d.ts +1 -1
  113. package/vanilla/UiFloatingActionButton.js +2 -2
  114. package/vanilla/UiFormField.d.ts +1 -1
  115. package/vanilla/UiFormField.js +15 -6
  116. package/vanilla/UiGrid.d.ts +1 -1
  117. package/vanilla/UiGrid.js +2 -2
  118. package/vanilla/UiIcon.d.ts +1 -1
  119. package/vanilla/UiIcon.js +3 -3
  120. package/vanilla/UiIconButton.d.ts +1 -1
  121. package/vanilla/UiIconButton.js +2 -2
  122. package/vanilla/UiInput.d.ts +1 -1
  123. package/vanilla/UiInput.js +2 -2
  124. package/vanilla/UiMenu.d.ts +1 -1
  125. package/vanilla/UiMenu.js +2 -2
  126. package/vanilla/UiMenuItem.d.ts +1 -1
  127. package/vanilla/UiMenuItem.js +2 -2
  128. package/vanilla/UiPopover.d.ts +1 -1
  129. package/vanilla/UiPopover.js +2 -2
  130. package/vanilla/UiRadio.d.ts +1 -1
  131. package/vanilla/UiRadio.js +2 -2
  132. package/vanilla/UiRadioGroup.d.ts +1 -1
  133. package/vanilla/UiRadioGroup.js +2 -2
  134. package/vanilla/UiReel.d.ts +1 -1
  135. package/vanilla/UiReel.js +2 -2
  136. package/vanilla/UiSearchResultRow.d.ts +1 -1
  137. package/vanilla/UiSearchResultRow.js +2 -2
  138. package/vanilla/UiSearchShell.d.ts +1 -1
  139. package/vanilla/UiSearchShell.js +2 -2
  140. package/vanilla/UiSelect.d.ts +1 -1
  141. package/vanilla/UiSelect.js +2 -2
  142. package/vanilla/UiSeparator.d.ts +1 -1
  143. package/vanilla/UiSeparator.js +2 -2
  144. package/vanilla/UiSidebar.d.ts +1 -1
  145. package/vanilla/UiSidebar.js +2 -2
  146. package/vanilla/UiStack.d.ts +1 -1
  147. package/vanilla/UiStack.js +2 -2
  148. package/vanilla/UiSwitch.d.ts +1 -1
  149. package/vanilla/UiSwitch.js +2 -2
  150. package/vanilla/UiSwitcher.d.ts +1 -1
  151. package/vanilla/UiSwitcher.js +2 -2
  152. package/vanilla/UiTabs.d.ts +1 -1
  153. package/vanilla/UiTabs.js +3 -3
  154. package/vanilla/UiTextarea.d.ts +1 -1
  155. package/vanilla/UiTextarea.js +2 -2
  156. package/vanilla/UiToastRegion.d.ts +1 -1
  157. package/vanilla/UiToastRegion.js +3 -3
  158. package/vanilla/UiTooltip.d.ts +1 -1
  159. package/vanilla/UiTooltip.js +2 -2
  160. package/vanilla/UiTopBar.d.ts +1 -1
  161. package/vanilla/UiTopBar.js +1 -1
  162. package/vanilla/UiTree.d.ts +1 -1
  163. package/vanilla/UiTree.js +2 -2
  164. package/vanilla/UiTreeItem.d.ts +1 -1
  165. package/vanilla/UiTreeItem.js +2 -2
  166. package/vue/UiAffordanceScope.d.ts +2 -2
  167. package/vue/UiAffordanceScope.vue +92 -73
  168. package/vue/UiAvatar.d.ts +7 -7
  169. package/vue/UiAvatar.vue +145 -105
  170. package/vue/UiAvatarGroup.d.ts +4 -4
  171. package/vue/UiAvatarGroup.vue +134 -118
  172. package/vue/UiBadge.d.ts +4 -4
  173. package/vue/UiBadge.vue +113 -114
  174. package/vue/UiButton.d.ts +10 -6
  175. package/vue/UiButton.vue +289 -248
  176. package/vue/UiCallout.d.ts +2 -2
  177. package/vue/UiCallout.vue +154 -87
  178. package/vue/UiCheckbox.d.ts +14 -10
  179. package/vue/UiCheckbox.vue +228 -162
  180. package/vue/UiCluster.d.ts +2 -2
  181. package/vue/UiCluster.vue +53 -60
  182. package/vue/UiCombobox.d.ts +36 -32
  183. package/vue/UiCombobox.vue +1005 -416
  184. package/vue/UiContainer.d.ts +2 -2
  185. package/vue/UiContainer.vue +48 -51
  186. package/vue/UiContextMenu.d.ts +6 -4
  187. package/vue/UiContextMenu.vue +205 -116
  188. package/vue/UiDialog.d.ts +11 -9
  189. package/vue/UiDialog.vue +287 -212
  190. package/vue/UiDisclosure.d.ts +8 -6
  191. package/vue/UiDisclosure.vue +248 -159
  192. package/vue/UiEditable.d.ts +16 -12
  193. package/vue/UiEditable.vue +325 -205
  194. package/vue/UiEditorInsertTableGrid.d.ts +8 -8
  195. package/vue/UiEditorInsertTableGrid.vue +216 -157
  196. package/vue/UiEditorMentionMenu.d.ts +9 -9
  197. package/vue/UiEditorMentionMenu.vue +265 -222
  198. package/vue/UiEditorSlashMenu.d.ts +7 -7
  199. package/vue/UiEditorSlashMenu.vue +286 -240
  200. package/vue/UiEditorTableContextMenu.d.ts +5 -5
  201. package/vue/UiEditorTableContextMenu.vue +306 -193
  202. package/vue/UiEditorTableOverlay.d.ts +2 -2
  203. package/vue/UiEditorTableOverlay.vue +609 -369
  204. package/vue/UiEditorTableToolbar.d.ts +7 -7
  205. package/vue/UiEditorTableToolbar.vue +443 -268
  206. package/vue/UiEditorToolbar.d.ts +2 -2
  207. package/vue/UiEditorToolbar.vue +134 -121
  208. package/vue/UiFloatingActionButton.d.ts +6 -6
  209. package/vue/UiFloatingActionButton.vue +100 -99
  210. package/vue/UiFormField.d.ts +6 -6
  211. package/vue/UiFormField.vue +112 -80
  212. package/vue/UiGrid.d.ts +2 -2
  213. package/vue/UiGrid.vue +51 -57
  214. package/vue/UiIcon.d.ts +2 -2
  215. package/vue/UiIcon.vue +118 -89
  216. package/vue/UiIconButton.d.ts +11 -11
  217. package/vue/UiIconButton.vue +283 -217
  218. package/vue/UiInput.d.ts +9 -9
  219. package/vue/UiInput.vue +153 -127
  220. package/vue/UiMenu.d.ts +8 -6
  221. package/vue/UiMenu.vue +217 -143
  222. package/vue/UiMenuItem.d.ts +4 -4
  223. package/vue/UiMenuItem.vue +52 -46
  224. package/vue/UiPopover.d.ts +8 -6
  225. package/vue/UiPopover.vue +197 -137
  226. package/vue/UiRadio.d.ts +14 -10
  227. package/vue/UiRadio.vue +183 -117
  228. package/vue/UiRadioGroup.d.ts +14 -12
  229. package/vue/UiRadioGroup.vue +172 -111
  230. package/vue/UiReel.d.ts +3 -3
  231. package/vue/UiReel.vue +77 -77
  232. package/vue/UiSearchResultRow.d.ts +4 -4
  233. package/vue/UiSearchResultRow.vue +124 -115
  234. package/vue/UiSearchShell.d.ts +10 -8
  235. package/vue/UiSearchShell.vue +245 -176
  236. package/vue/UiSelect.d.ts +9 -9
  237. package/vue/UiSelect.vue +162 -134
  238. package/vue/UiSeparator.d.ts +2 -2
  239. package/vue/UiSeparator.vue +22 -27
  240. package/vue/UiSidebar.d.ts +20 -18
  241. package/vue/UiSidebar.vue +312 -224
  242. package/vue/UiStack.d.ts +3 -3
  243. package/vue/UiStack.vue +64 -70
  244. package/vue/UiSwitch.d.ts +12 -8
  245. package/vue/UiSwitch.vue +218 -150
  246. package/vue/UiSwitcher.d.ts +3 -3
  247. package/vue/UiSwitcher.vue +73 -75
  248. package/vue/UiTabs.d.ts +10 -8
  249. package/vue/UiTabs.vue +251 -210
  250. package/vue/UiTextarea.d.ts +11 -11
  251. package/vue/UiTextarea.vue +155 -128
  252. package/vue/UiToastRegion.d.ts +10 -8
  253. package/vue/UiToastRegion.vue +261 -198
  254. package/vue/UiTooltip.d.ts +14 -12
  255. package/vue/UiTooltip.vue +241 -177
  256. package/vue/UiTopBar.vue +51 -42
  257. package/vue/UiTree.d.ts +8 -6
  258. package/vue/UiTree.vue +157 -70
  259. package/vue/UiTreeItem.d.ts +24 -22
  260. package/vue/UiTreeItem.vue +456 -339
  261. package/vue/chunks/UiAffordanceScope.js +9 -16
  262. package/vue/chunks/UiAvatar.js +23 -29
  263. package/vue/chunks/UiAvatarGroup.js +16 -39
  264. package/vue/chunks/UiBadge.js +3 -12
  265. package/vue/chunks/UiButton.js +15 -18
  266. package/vue/chunks/UiCallout.js +8 -17
  267. package/vue/chunks/UiCheckbox.js +37 -40
  268. package/vue/chunks/UiCluster.js +3 -12
  269. package/vue/chunks/UiCombobox.js +224 -266
  270. package/vue/chunks/UiContainer.js +3 -12
  271. package/vue/chunks/UiContextMenu.js +39 -34
  272. package/vue/chunks/UiDialog.js +36 -39
  273. package/vue/chunks/UiDisclosure.js +43 -48
  274. package/vue/chunks/UiEditable.js +55 -57
  275. package/vue/chunks/UiEditorInsertTableGrid.js +55 -73
  276. package/vue/chunks/UiEditorMentionMenu.js +40 -81
  277. package/vue/chunks/UiEditorSlashMenu.js +28 -52
  278. package/vue/chunks/UiEditorTableContextMenu.js +32 -56
  279. package/vue/chunks/UiEditorTableOverlay.js +58 -82
  280. package/vue/chunks/UiEditorTableToolbar.js +61 -85
  281. package/vue/chunks/UiEditorToolbar.js +4 -13
  282. package/vue/chunks/UiFloatingActionButton.js +7 -21
  283. package/vue/chunks/UiFormField.js +15 -12
  284. package/vue/chunks/UiGrid.js +3 -12
  285. package/vue/chunks/UiIcon.js +20 -43
  286. package/vue/chunks/UiIconButton.js +16 -28
  287. package/vue/chunks/UiInput.js +20 -25
  288. package/vue/chunks/UiMenu.js +29 -33
  289. package/vue/chunks/UiMenuItem.js +4 -10
  290. package/vue/chunks/UiPopover.js +28 -29
  291. package/vue/chunks/UiRadio.js +36 -39
  292. package/vue/chunks/UiRadioGroup.js +30 -34
  293. package/vue/chunks/UiReel.js +6 -15
  294. package/vue/chunks/UiSearchResultRow.js +6 -19
  295. package/vue/chunks/UiSearchShell.js +25 -28
  296. package/vue/chunks/UiSelect.js +20 -23
  297. package/vue/chunks/UiSeparator.js +2 -8
  298. package/vue/chunks/UiSidebar.js +39 -44
  299. package/vue/chunks/UiStack.js +6 -15
  300. package/vue/chunks/UiSwitch.js +35 -38
  301. package/vue/chunks/UiSwitcher.js +6 -15
  302. package/vue/chunks/UiTabs.js +47 -85
  303. package/vue/chunks/UiTextarea.js +21 -26
  304. package/vue/chunks/UiToastRegion.js +38 -72
  305. package/vue/chunks/UiTooltip.js +34 -35
  306. package/vue/chunks/UiTopBar.js +1 -1
  307. package/vue/chunks/UiTree.js +20 -15
  308. package/vue/chunks/UiTreeItem.js +85 -102
  309. package/vue/components.css +3994 -3801
@@ -1,211 +1,300 @@
1
- <!-- Generated by HTML Next 1.0.0-alpha.1 for Vue 3.5. Do not edit. -->
1
+ <!-- Generated by HTML Next 1.0.0-alpha.2 for Vue 3.5. Do not edit. -->
2
2
  <script setup lang="ts">
3
- import { computed, onBeforeUnmount, onMounted, ref, shallowRef, watchEffect } from "vue";
4
- import * as controllerModule from "../components/ui-disclosure/ui-disclosure.js";
5
-
6
- defineOptions({ inheritAttrs: false });
7
-
8
- const hn = {
9
- t: (v: unknown): boolean => 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),
10
- text: (v: unknown): string => v === undefined || v === null ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? "" : String(v),
11
- attr: (v: unknown): any => v === undefined || v === null || v === false ? undefined : v === true ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? undefined : String(v),
12
- enumerated: (v: unknown): any => typeof v === "boolean" ? String(v) : hn.attr(v),
13
- };
14
-
15
- const props = withDefaults(defineProps<{
16
- disabled?: boolean | null;
17
- open?: boolean | null;
18
- summary?: string | null;
19
- }>(), {
20
- disabled: false,
21
- open: false,
22
- summary: "Details",
23
- });
3
+ import {
4
+ computed,
5
+ onBeforeUnmount,
6
+ onMounted,
7
+ ref,
8
+ shallowRef,
9
+ useTemplateRef,
10
+ watchEffect,
11
+ } from 'vue'
12
+ import * as controllerModule from '../components/ui-disclosure/ui-disclosure.js'
13
+
14
+ defineOptions({ inheritAttrs: false })
15
+
16
+ const props = withDefaults(
17
+ defineProps<{
18
+ disabled?: boolean
19
+ open?: boolean
20
+ summary?: string
21
+ }>(),
22
+ {
23
+ disabled: false,
24
+ open: false,
25
+ summary: 'Details',
26
+ },
27
+ )
24
28
  const emit = defineEmits<{
25
- "open": [detail: { readonly open: boolean; readonly reason: "action" | "programmatic" | "light-dismiss" | "escape"; readonly trigger: "keyboard" | "pointer" | "programmatic" }];
26
- "close": [detail: { readonly open: boolean; readonly reason: "action" | "programmatic" | "light-dismiss" | "escape"; readonly trigger: "keyboard" | "pointer" | "programmatic" }];
27
- }>();
28
- const root = ref<HTMLElement | null>(null);
29
- const refs: Record<string, Element | undefined> = {};
30
- const state_internalOpen = ref<any>(false);
31
- const state_contentId = ref<any>("");
29
+ 'update:open': [value: boolean]
30
+ open: [
31
+ detail: {
32
+ readonly open: boolean
33
+ readonly reason: 'action' | 'programmatic' | 'light-dismiss' | 'escape'
34
+ readonly trigger: 'keyboard' | 'pointer' | 'programmatic'
35
+ },
36
+ ]
37
+ close: [
38
+ detail: {
39
+ readonly open: boolean
40
+ readonly reason: 'action' | 'programmatic' | 'light-dismiss' | 'escape'
41
+ readonly trigger: 'keyboard' | 'pointer' | 'programmatic'
42
+ },
43
+ ]
44
+ }>()
45
+
46
+ const root = ref<HTMLElement | null>(null)
47
+ const triggerElement = useTemplateRef<HTMLElement>('trigger')
48
+ const internalOpen = ref(false)
49
+ const contentId = ref('')
50
+
51
+ /** The values the styles' :host-state() rules test. */
52
+ const hostState = computed(() =>
53
+ [
54
+ internalOpen.value && 'internalOpen',
55
+ ].filter(Boolean).join(' ')
56
+ )
32
57
 
33
58
  /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
34
- const dispatch = (name: string, detail?: unknown): boolean => {
35
- const declared = {"open":{"bubbles":true,"composed":true,"cancelable":false},"close":{"bubbles":true,"composed":true,"cancelable":false}} as Record<string, EventInit | undefined>;
59
+ function dispatch(name: string, detail?: unknown): boolean {
60
+ const declared: Record<string, EventInit | undefined> = {
61
+ open: { bubbles: true, composed: true, cancelable: false },
62
+ close: { bubbles: true, composed: true, cancelable: false },
63
+ }
36
64
  const checks: Record<string, (detail: unknown) => boolean> = {
37
- "open": (detail: unknown) => (detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof (detail as Record<string, unknown>)["open"] === "boolean" && ((detail as Record<string, unknown>)["reason"] === "action" || (detail as Record<string, unknown>)["reason"] === "programmatic" || (detail as Record<string, unknown>)["reason"] === "light-dismiss" || (detail as Record<string, unknown>)["reason"] === "escape") && ((detail as Record<string, unknown>)["trigger"] === "keyboard" || (detail as Record<string, unknown>)["trigger"] === "pointer" || (detail as Record<string, unknown>)["trigger"] === "programmatic") && Object.keys(detail as object).every((key) => ["open","reason","trigger"].includes(key))),
38
- "close": (detail: unknown) => (detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof (detail as Record<string, unknown>)["open"] === "boolean" && ((detail as Record<string, unknown>)["reason"] === "action" || (detail as Record<string, unknown>)["reason"] === "programmatic" || (detail as Record<string, unknown>)["reason"] === "light-dismiss" || (detail as Record<string, unknown>)["reason"] === "escape") && ((detail as Record<string, unknown>)["trigger"] === "keyboard" || (detail as Record<string, unknown>)["trigger"] === "pointer" || (detail as Record<string, unknown>)["trigger"] === "programmatic") && Object.keys(detail as object).every((key) => ["open","reason","trigger"].includes(key))),
39
- };
65
+ open: (detail) =>
66
+ detail !== null && typeof detail === 'object' && !Array.isArray(detail)
67
+ && typeof (detail as Record<string, unknown>)['open'] === 'boolean'
68
+ && ((detail as Record<string, unknown>)['reason'] === 'action'
69
+ || (detail as Record<string, unknown>)['reason'] === 'programmatic'
70
+ || (detail as Record<string, unknown>)['reason'] === 'light-dismiss'
71
+ || (detail as Record<string, unknown>)['reason'] === 'escape')
72
+ && ((detail as Record<string, unknown>)['trigger'] === 'keyboard'
73
+ || (detail as Record<string, unknown>)['trigger'] === 'pointer'
74
+ || (detail as Record<string, unknown>)['trigger'] === 'programmatic')
75
+ && Object.keys(detail as object).every((key) => ['open', 'reason', 'trigger'].includes(key)),
76
+ close: (detail) =>
77
+ detail !== null && typeof detail === 'object' && !Array.isArray(detail)
78
+ && typeof (detail as Record<string, unknown>)['open'] === 'boolean'
79
+ && ((detail as Record<string, unknown>)['reason'] === 'action'
80
+ || (detail as Record<string, unknown>)['reason'] === 'programmatic'
81
+ || (detail as Record<string, unknown>)['reason'] === 'light-dismiss'
82
+ || (detail as Record<string, unknown>)['reason'] === 'escape')
83
+ && ((detail as Record<string, unknown>)['trigger'] === 'keyboard'
84
+ || (detail as Record<string, unknown>)['trigger'] === 'pointer'
85
+ || (detail as Record<string, unknown>)['trigger'] === 'programmatic')
86
+ && Object.keys(detail as object).every((key) => ['open', 'reason', 'trigger'].includes(key)),
87
+ }
40
88
  if (detail !== undefined && checks[name] !== undefined && !checks[name]!(detail)) {
41
- throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
89
+ throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`)
42
90
  }
43
- (emit as (name: string, detail: unknown) => void)(name, detail);
44
- return root.value?.dispatchEvent(new CustomEvent(name, { bubbles: true, composed: true, ...declared[name], detail })) ?? true;
45
- };
46
-
47
- /** The resolved values the styles' :host-state() rules test. */
48
- const hostState = computed(() => (["internalOpen"] as const).flatMap((name) => {
49
- const value = read(name);
50
- const tokens: string[] = hn.t(value) ? [name] : [];
51
- if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
52
- return tokens;
53
- }).join(" "));
91
+ const emitEvent = emit as (name: string, detail: unknown) => void
92
+ emitEvent(name, detail)
93
+ if (detail !== null && typeof detail === 'object' && 'open' in detail) {
94
+ emitEvent('update:open', (detail as Record<string, unknown>)['open'])
95
+ }
96
+ return root.value?.dispatchEvent(
97
+ new CustomEvent(name, { bubbles: true, composed: true, ...declared[name], detail }),
98
+ ) ?? true
99
+ }
54
100
 
55
101
  function read(name: string): unknown {
56
- if (name === "internalOpen") return state_internalOpen.value;
57
- if (name === "contentId") return state_contentId.value;
58
- return (props as Record<string, unknown>)[name];
102
+ if (name === 'internalOpen') return internalOpen.value
103
+ if (name === 'contentId') return contentId.value
104
+ return (props as Record<string, unknown>)[name]
59
105
  }
60
106
 
61
107
  function write(name: string, value: unknown): boolean {
62
- if (name === "internalOpen") { state_internalOpen.value = value; return true; }
63
- if (name === "contentId") { state_contentId.value = value; return true; }
64
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
108
+ if (name === 'internalOpen') {
109
+ internalOpen.value = value as never
110
+ return true
111
+ }
112
+ if (name === 'contentId') {
113
+ contentId.value = value as never
114
+ return true
115
+ }
116
+ throw new TypeError(`Only declared state is writable; \`${name}\` is not.`)
65
117
  }
66
118
 
67
- const stops: Array<() => void> = [];
119
+ const stops: Array<() => void> = []
68
120
  const host = {
69
- get element(): Element { return root.value as Element; },
121
+ get element(): Element {
122
+ return root.value as Element
123
+ },
70
124
  state: new Proxy({} as Record<string, unknown>, {
71
- get: (_target, name) => typeof name === "string" ? read(name) : undefined,
72
- set: (_target, name, value) => typeof name === "string" && write(name, value),
125
+ get: (_target, name) => typeof name === 'string' ? read(name) : undefined,
126
+ set: (_target, name, value) => typeof name === 'string' && write(name, value),
73
127
  }),
74
- refs: refs as Readonly<Record<string, Element>>,
128
+ refs: {
129
+ get trigger(): Element {
130
+ return triggerElement.value as Element
131
+ },
132
+ } as Readonly<Record<string, Element>>,
75
133
  elements: new Proxy({} as Record<string, Element | RadioNodeList | undefined>, {
76
134
  get: (_target, name) => {
77
- if (typeof name !== "string" || root.value === null) return undefined;
78
- const form = root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form");
79
- return form?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? undefined;
135
+ if (typeof name !== 'string' || root.value === null) return undefined
136
+ const form = root.value instanceof HTMLFormElement
137
+ ? root.value
138
+ : root.value.querySelector('form')
139
+ return form?.elements.namedItem(name)
140
+ ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? undefined
80
141
  },
81
142
  }),
82
143
  signal<T>(initialValue: T) {
83
- const value = shallowRef(initialValue);
144
+ const value = shallowRef(initialValue)
84
145
  return {
85
146
  get: (): T => value.value,
86
- set: (next: T): void => { if (!Object.is(value.value, next)) value.value = next; },
87
- update: (next: (current: T) => T): void => { const updated = next(value.value); if (!Object.is(value.value, updated)) value.value = updated; },
88
- };
147
+ set: (next: T): void => {
148
+ if (!Object.is(value.value, next)) value.value = next
149
+ },
150
+ update: (next: (current: T) => T): void => {
151
+ const updated = next(value.value)
152
+ if (!Object.is(value.value, updated)) value.value = updated
153
+ },
154
+ }
89
155
  },
90
156
  computed<T>(compute: () => T) {
91
- const value = computed(compute);
92
- return { get: (): T => value.value };
157
+ const value = computed(compute)
158
+ return { get: (): T => value.value }
93
159
  },
94
160
  effect(run: () => void | (() => void)): () => void {
95
161
  const stop = watchEffect((onCleanup) => {
96
- const cleanup = run();
97
- if (typeof cleanup === "function") onCleanup(cleanup);
98
- }, { flush: "post" });
99
- stops.push(stop);
100
- return stop;
162
+ const cleanup = run()
163
+ if (typeof cleanup === 'function') onCleanup(cleanup)
164
+ }, { flush: 'post' })
165
+ stops.push(stop)
166
+ return stop
101
167
  },
102
168
  on(event: string, listener: EventListener): () => void {
103
- const element = root.value;
104
- element?.addEventListener(event, listener);
105
- const off = (): void => element?.removeEventListener(event, listener);
106
- stops.push(off);
107
- return off;
169
+ const element = root.value
170
+ element?.addEventListener(event, listener)
171
+ const off = (): void => element?.removeEventListener(event, listener)
172
+ stops.push(off)
173
+ return off
108
174
  },
109
175
  dispatch,
110
- };
176
+ }
111
177
 
112
- let cleanup: void | (() => void);
113
- let ready: Promise<void> | undefined;
178
+ let cleanup: void | (() => void)
179
+ let ready: Promise<void> | undefined
114
180
  onMounted(() => {
115
- ready = Promise.resolve(controllerModule.default(host as never)).then((result) => { cleanup = result; });
116
- });
181
+ ready = Promise.resolve(controllerModule.default(host as never)).then((result) => {
182
+ cleanup = result
183
+ })
184
+ })
117
185
  onBeforeUnmount(() => {
118
- for (const stop of stops.splice(0)) stop();
119
- if (typeof cleanup === "function") cleanup();
120
- });
186
+ for (const stop of stops.splice(0)) stop()
187
+ if (typeof cleanup === 'function') cleanup()
188
+ })
121
189
  </script>
122
190
 
123
191
  <template>
124
- <div data-component="ui-disclosure" v-bind="$attrs" :data-ui-disclosure-state="hostState || undefined" ref="root"><button class="trigger" type="button" :aria-controls="hn.enumerated(state_contentId)" :aria-expanded="hn.enumerated(state_internalOpen)" :disabled="hn.attr(props.disabled)" :ref="(element) => { refs['trigger'] = element as Element }"><span>{{ hn.text(props.summary) }}</span><span class="chevron" aria-hidden="true"></span></button><div class="panel" :id="hn.attr(state_contentId)" :inert="hn.attr(!hn.t(state_internalOpen))"><div class="panel-inner"><slot></slot></div></div></div>
192
+ <div
193
+ data-component="ui-disclosure"
194
+ v-bind="$attrs"
195
+ :data-ui-disclosure-state="hostState || undefined"
196
+ ref="root"
197
+ >
198
+ <button
199
+ class="trigger"
200
+ type="button"
201
+ :aria-controls="contentId"
202
+ :aria-expanded="internalOpen"
203
+ :disabled="disabled"
204
+ ref="trigger"
205
+ >
206
+ <span>{{ summary }}</span>
207
+ <span class="chevron" aria-hidden="true"></span>
208
+ </button>
209
+ <div class="panel" :id="contentId" :inert="!internalOpen">
210
+ <div class="panel-inner"><slot /></div>
211
+ </div>
212
+ </div>
125
213
  </template>
126
214
 
127
215
  <style scoped>
128
216
  /* An accordion row, not a field: no enclosing box, just a divider, so it never reads as a
129
- * select or combobox. Stacked disclosures share their dividers. */
130
- [data-component~="ui-disclosure"] {
131
- display: block;
132
- inline-size: 100%;
133
- overflow: clip;
134
- border-block-end: 1px solid var(--ui-border-default);
135
- color: var(--ui-text-primary);
136
- }
217
+ * select or combobox. Stacked disclosures share their dividers. */
218
+ [data-component~="ui-disclosure"] {
219
+ display: block;
220
+ inline-size: 100%;
221
+ overflow: clip;
222
+ border-block-end: 1px solid var(--ui-border-default);
223
+ color: var(--ui-text-primary);
224
+ }
137
225
 
138
- .trigger {
139
- display: grid;
140
- grid-template-columns: minmax(0, 1fr) auto;
141
- gap: var(--ui-space-3);
142
- align-items: center;
143
- inline-size: 100%;
144
- min-block-size: 2.5rem;
145
- padding: var(--ui-space-2) var(--ui-space-3);
146
- border: 0;
147
- background: transparent;
148
- color: inherit;
149
- font: inherit;
150
- font-weight: var(--ui-font-semibold, 600);
151
- text-align: start;
152
- cursor: pointer;
153
- border-radius: var(--ui-radius-1);
154
- transition: background-color var(--ui-motion-fast) var(--ui-motion-ease);
155
- }
226
+ .trigger {
227
+ display: grid;
228
+ grid-template-columns: minmax(0, 1fr) auto;
229
+ gap: var(--ui-space-3);
230
+ align-items: center;
231
+ inline-size: 100%;
232
+ min-block-size: 2.5rem;
233
+ padding: var(--ui-space-2) var(--ui-space-3);
234
+ border: 0;
235
+ background: transparent;
236
+ color: inherit;
237
+ font: inherit;
238
+ font-weight: var(--ui-font-semibold, 600);
239
+ text-align: start;
240
+ cursor: pointer;
241
+ border-radius: var(--ui-radius-1);
242
+ transition: background-color var(--ui-motion-fast) var(--ui-motion-ease);
243
+ }
156
244
 
157
- .trigger:hover:not(:disabled) {
158
- background: var(--ui-surface-muted);
159
- }
160
- .trigger:focus-visible {
161
- outline: none;
162
- box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
163
- }
164
- .trigger:disabled {
165
- color: var(--ui-text-muted);
166
- cursor: not-allowed;
167
- }
245
+ .trigger:hover:not(:disabled) {
246
+ background: var(--ui-surface-muted);
247
+ }
248
+ .trigger:focus-visible {
249
+ outline: none;
250
+ box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
251
+ }
252
+ .trigger:disabled {
253
+ color: var(--ui-text-muted);
254
+ cursor: not-allowed;
255
+ }
168
256
 
169
- .chevron {
170
- inline-size: 0.5rem;
171
- block-size: 0.5rem;
172
- border-inline-end: 2px solid currentColor;
173
- border-block-end: 2px solid currentColor;
174
- transform: rotate(45deg) translate(-1px, -1px);
175
- transition: transform var(--ui-motion-fast) var(--ui-motion-ease);
176
- }
257
+ .chevron {
258
+ inline-size: 0.5rem;
259
+ block-size: 0.5rem;
260
+ border-inline-end: 2px solid currentColor;
261
+ border-block-end: 2px solid currentColor;
262
+ transform: rotate(45deg) translate(-1px, -1px);
263
+ transition: transform var(--ui-motion-fast) var(--ui-motion-ease);
264
+ }
177
265
 
178
- .panel {
179
- display: grid;
180
- grid-template-rows: 0fr;
181
- transition: grid-template-rows var(--ui-motion-fast) var(--ui-motion-ease-out, var(--ui-motion-ease));
182
- }
266
+ .panel {
267
+ display: grid;
268
+ grid-template-rows: 0fr;
269
+ transition: grid-template-rows var(--ui-motion-fast)
270
+ var(--ui-motion-ease-out, var(--ui-motion-ease));
271
+ }
183
272
 
184
- .panel-inner {
185
- min-block-size: 0;
186
- overflow: hidden;
187
- padding-inline: var(--ui-space-3);
188
- }
273
+ .panel-inner {
274
+ min-block-size: 0;
275
+ overflow: hidden;
276
+ padding-inline: var(--ui-space-3);
277
+ }
189
278
 
190
- [data-component~="ui-disclosure"][data-ui-disclosure-state~="internalOpen"] .panel {
191
- grid-template-rows: 1fr;
192
- }
193
- [data-component~="ui-disclosure"][data-ui-disclosure-state~="internalOpen"] .panel-inner {
194
- padding-block: 0 var(--ui-space-3);
195
- }
196
- [data-component~="ui-disclosure"][data-ui-disclosure-state~="internalOpen"] .chevron {
197
- transform: rotate(225deg) translate(-1px, -1px);
198
- }
279
+ [data-component~="ui-disclosure"][data-ui-disclosure-state~="internalOpen"] .panel {
280
+ grid-template-rows: 1fr;
281
+ }
282
+ [data-component~="ui-disclosure"][data-ui-disclosure-state~="internalOpen"] .panel-inner {
283
+ padding-block: 0 var(--ui-space-3);
284
+ }
285
+ [data-component~="ui-disclosure"][data-ui-disclosure-state~="internalOpen"] .chevron {
286
+ transform: rotate(225deg) translate(-1px, -1px);
287
+ }
199
288
 
200
- @media (prefers-reduced-motion: reduce) {
201
- .panel,
202
- .chevron {
203
- transition: none;
204
- }
205
- }
289
+ @media (prefers-reduced-motion: reduce) {
290
+ .panel,
291
+ .chevron {
292
+ transition: none;
293
+ }
294
+ }
206
295
 
207
- /* A component that sets its display still honours the hidden attribute on its root. */
208
- [data-component~="ui-disclosure"][hidden] {
209
- display: none;
210
- }
296
+ /* A component that sets its display still honours the hidden attribute on its root. */
297
+ [data-component~="ui-disclosure"][hidden] {
298
+ display: none;
299
+ }
211
300
  </style>
@@ -1,10 +1,10 @@
1
1
  type __VLS_Props = {
2
- actions?: boolean | null;
3
- disabled?: boolean | null;
4
- edit?: boolean | null;
5
- hint?: string | null;
6
- label?: string | null;
7
- value?: string | null;
2
+ actions?: boolean;
3
+ disabled?: boolean;
4
+ edit?: boolean;
5
+ hint?: string;
6
+ label?: string;
7
+ value?: string;
8
8
  };
9
9
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
10
10
  input: (detail: {
@@ -16,6 +16,8 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
16
16
  readonly previousValue: string;
17
17
  readonly trigger: "keyboard" | "pointer" | "programmatic";
18
18
  }) => any;
19
+ "update:value": (value: string) => any;
20
+ "update:edit": (value: boolean) => any;
19
21
  "edit-change": (detail: {
20
22
  readonly edit: boolean;
21
23
  readonly reason: "activate" | "commit" | "cancel" | "light-dismiss" | "escape" | "programmatic";
@@ -31,18 +33,20 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
31
33
  readonly previousValue: string;
32
34
  readonly trigger: "keyboard" | "pointer" | "programmatic";
33
35
  }) => any) | undefined;
36
+ "onUpdate:value"?: ((value: string) => any) | undefined;
37
+ "onUpdate:edit"?: ((value: boolean) => any) | undefined;
34
38
  "onEdit-change"?: ((detail: {
35
39
  readonly edit: boolean;
36
40
  readonly reason: "activate" | "commit" | "cancel" | "light-dismiss" | "escape" | "programmatic";
37
41
  readonly trigger: "keyboard" | "pointer" | "programmatic";
38
42
  }) => any) | undefined;
39
43
  }>, {
40
- label: string | null;
41
- disabled: boolean | null;
42
- value: string | null;
43
- actions: boolean | null;
44
- edit: boolean | null;
45
- hint: string | null;
44
+ label: string;
45
+ value: string;
46
+ disabled: boolean;
47
+ actions: boolean;
48
+ edit: boolean;
49
+ hint: string;
46
50
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
47
51
  declare const _default: typeof __VLS_export;
48
52
  export default _default;