@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,6 +1,6 @@
1
1
  type __VLS_Props = {
2
- gutters?: "s" | "m" | "l" | null;
3
- measure?: "narrow" | "wide" | null;
2
+ gutters?: 's' | 'm' | 'l';
3
+ measure?: 'narrow' | 'wide';
4
4
  };
5
5
  declare var __VLS_1: {};
6
6
  type __VLS_Slots = {} & {
@@ -1,65 +1,62 @@
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 } from "vue";
3
+ import { computed } from 'vue'
4
4
 
5
- defineOptions({ inheritAttrs: false });
6
-
7
- const hn = {
8
- 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),
9
- };
5
+ defineOptions({ inheritAttrs: false })
10
6
 
11
7
  const props = defineProps<{
12
- gutters?: "s" | "m" | "l" | null;
13
- measure?: "narrow" | "wide" | null;
14
- }>();
15
-
16
- /** The resolved values the styles' :host-state() rules test. */
17
- const hostState = computed(() => (["measure","gutters"] as const).flatMap((name) => {
18
- const value = read(name);
19
- const tokens: string[] = hn.t(value) ? [name] : [];
20
- if (typeof value === "string" || typeof value === "number") tokens.push(`${name}=${encodeURIComponent(String(value))}`);
21
- return tokens;
22
- }).join(" "));
23
-
24
- function read(name: string): unknown {
25
- return (props as Record<string, unknown>)[name];
26
- }
27
-
8
+ gutters?: 's' | 'm' | 'l'
9
+ measure?: 'narrow' | 'wide'
10
+ }>()
11
+
12
+ /** The values the styles' :host-state() rules test. */
13
+ const hostState = computed(() =>
14
+ [
15
+ props.measure && `measure measure=${props.measure}`,
16
+ props.gutters && `gutters gutters=${props.gutters}`,
17
+ ].filter(Boolean).join(' ')
18
+ )
28
19
  </script>
29
20
 
30
21
  <template>
31
- <div data-component="ui-container" v-bind="$attrs" :data-ui-container-state="hostState || undefined"><slot></slot></div>
22
+ <div
23
+ data-component="ui-container"
24
+ v-bind="$attrs"
25
+ :data-ui-container-state="hostState || undefined"
26
+ >
27
+ <slot />
28
+ </div>
32
29
  </template>
33
30
 
34
31
  <style scoped>
35
32
  [data-component~="ui-container"] {
36
- --_container-measure: 65ch;
37
- --_container-gutters: var(--ui-space-4, 1rem);
38
- display: block;
39
- inline-size: 100%;
40
- max-inline-size: var(--ui-container-measure, var(--_container-measure));
41
- margin-inline: auto;
42
- padding-inline: var(--ui-container-gutters, var(--_container-gutters));
43
- }
33
+ --_container-measure: 65ch;
34
+ --_container-gutters: var(--ui-space-4, 1rem);
35
+ display: block;
36
+ inline-size: 100%;
37
+ max-inline-size: var(--ui-container-measure, var(--_container-measure));
38
+ margin-inline: auto;
39
+ padding-inline: var(--ui-container-gutters, var(--_container-gutters));
40
+ }
44
41
 
45
- [data-component~="ui-container"][data-ui-container-state~="measure=narrow"] {
46
- --_container-measure: 45ch;
47
- }
48
- [data-component~="ui-container"][data-ui-container-state~="measure=wide"] {
49
- --_container-measure: 80ch;
50
- }
51
- [data-component~="ui-container"][data-ui-container-state~="gutters=s"] {
52
- --_container-gutters: var(--ui-space-3, 0.75rem);
53
- }
54
- [data-component~="ui-container"][data-ui-container-state~="gutters=m"] {
55
- --_container-gutters: var(--ui-space-4, 1rem);
56
- }
57
- [data-component~="ui-container"][data-ui-container-state~="gutters=l"] {
58
- --_container-gutters: var(--ui-space-5, 1.5rem);
59
- }
42
+ [data-component~="ui-container"][data-ui-container-state~="measure=narrow"] {
43
+ --_container-measure: 45ch;
44
+ }
45
+ [data-component~="ui-container"][data-ui-container-state~="measure=wide"] {
46
+ --_container-measure: 80ch;
47
+ }
48
+ [data-component~="ui-container"][data-ui-container-state~="gutters=s"] {
49
+ --_container-gutters: var(--ui-space-3, 0.75rem);
50
+ }
51
+ [data-component~="ui-container"][data-ui-container-state~="gutters=m"] {
52
+ --_container-gutters: var(--ui-space-4, 1rem);
53
+ }
54
+ [data-component~="ui-container"][data-ui-container-state~="gutters=l"] {
55
+ --_container-gutters: var(--ui-space-5, 1.5rem);
56
+ }
60
57
 
61
- /* A component that sets its display still honours the hidden attribute on its root. */
62
- [data-component~="ui-container"][hidden] {
63
- display: none;
64
- }
58
+ /* A component that sets its display still honours the hidden attribute on its root. */
59
+ [data-component~="ui-container"][hidden] {
60
+ display: none;
61
+ }
65
62
  </style>
@@ -1,6 +1,6 @@
1
1
  type __VLS_Props = {
2
- for?: string | null;
3
- open?: boolean | null;
2
+ for?: string;
3
+ open?: boolean;
4
4
  };
5
5
  declare var __VLS_1: {};
6
6
  type __VLS_Slots = {} & {
@@ -21,6 +21,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
21
21
  readonly reason: "action" | "programmatic" | "light-dismiss" | "escape";
22
22
  readonly trigger: "keyboard" | "pointer" | "programmatic";
23
23
  }) => any;
24
+ "update:open": (value: boolean) => any;
24
25
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
25
26
  onSelect?: ((detail: {
26
27
  readonly value: string;
@@ -36,9 +37,10 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
36
37
  readonly reason: "action" | "programmatic" | "light-dismiss" | "escape";
37
38
  readonly trigger: "keyboard" | "pointer" | "programmatic";
38
39
  }) => any) | undefined;
40
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
39
41
  }>, {
40
- for: string | null;
41
- open: boolean | null;
42
+ for: string;
43
+ open: boolean;
42
44
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
43
45
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
44
46
  declare const _default: typeof __VLS_export;
@@ -1,166 +1,255 @@
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-context-menu/ui-context-menu.js";
5
-
6
- defineOptions({ inheritAttrs: false });
7
-
8
- const props = withDefaults(defineProps<{
9
- for?: string | null;
10
- open?: boolean | null;
11
- }>(), {
12
- for: "",
13
- open: false,
14
- });
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-context-menu/ui-context-menu.js'
13
+
14
+ defineOptions({ inheritAttrs: false })
15
+
16
+ const props = withDefaults(
17
+ defineProps<{
18
+ for?: string
19
+ open?: boolean
20
+ }>(),
21
+ {
22
+ for: '',
23
+ open: false,
24
+ },
25
+ )
15
26
  const emit = defineEmits<{
16
- "open": [detail: { readonly open: boolean; readonly reason: "action" | "programmatic" | "light-dismiss" | "escape"; readonly trigger: "keyboard" | "pointer" | "programmatic" }];
17
- "close": [detail: { readonly open: boolean; readonly reason: "action" | "programmatic" | "light-dismiss" | "escape"; readonly trigger: "keyboard" | "pointer" | "programmatic" }];
18
- "select": [detail: { readonly value: string; readonly trigger: "keyboard" | "pointer" | "programmatic" }];
19
- }>();
20
- const root = ref<HTMLElement | null>(null);
21
- const refs: Record<string, Element | undefined> = {};
22
- const state_internalOpen = ref<any>(false);
27
+ 'update:open': [value: boolean]
28
+ open: [
29
+ detail: {
30
+ readonly open: boolean
31
+ readonly reason: 'action' | 'programmatic' | 'light-dismiss' | 'escape'
32
+ readonly trigger: 'keyboard' | 'pointer' | 'programmatic'
33
+ },
34
+ ]
35
+ close: [
36
+ detail: {
37
+ readonly open: boolean
38
+ readonly reason: 'action' | 'programmatic' | 'light-dismiss' | 'escape'
39
+ readonly trigger: 'keyboard' | 'pointer' | 'programmatic'
40
+ },
41
+ ]
42
+ select: [
43
+ detail: { readonly value: string; readonly trigger: 'keyboard' | 'pointer' | 'programmatic' },
44
+ ]
45
+ }>()
46
+
47
+ const root = ref<HTMLElement | null>(null)
48
+ const menuElement = useTemplateRef<HTMLElement>('menu')
49
+ const internalOpen = ref(false)
23
50
 
24
51
  /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
25
- const dispatch = (name: string, detail?: unknown): boolean => {
26
- const declared = {"open":{"bubbles":true,"composed":true,"cancelable":false},"close":{"bubbles":true,"composed":true,"cancelable":false},"select":{"bubbles":true,"composed":true,"cancelable":false}} as Record<string, EventInit | undefined>;
52
+ function dispatch(name: string, detail?: unknown): boolean {
53
+ const declared: Record<string, EventInit | undefined> = {
54
+ open: { bubbles: true, composed: true, cancelable: false },
55
+ close: { bubbles: true, composed: true, cancelable: false },
56
+ select: { bubbles: true, composed: true, cancelable: false },
57
+ }
27
58
  const checks: Record<string, (detail: unknown) => boolean> = {
28
- "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))),
29
- "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))),
30
- "select": (detail: unknown) => (detail !== null && typeof detail === "object" && !Array.isArray(detail) && typeof (detail as Record<string, unknown>)["value"] === "string" && ((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) => ["value","trigger"].includes(key))),
31
- };
59
+ open: (detail) =>
60
+ detail !== null && typeof detail === 'object' && !Array.isArray(detail)
61
+ && typeof (detail as Record<string, unknown>)['open'] === 'boolean'
62
+ && ((detail as Record<string, unknown>)['reason'] === 'action'
63
+ || (detail as Record<string, unknown>)['reason'] === 'programmatic'
64
+ || (detail as Record<string, unknown>)['reason'] === 'light-dismiss'
65
+ || (detail as Record<string, unknown>)['reason'] === 'escape')
66
+ && ((detail as Record<string, unknown>)['trigger'] === 'keyboard'
67
+ || (detail as Record<string, unknown>)['trigger'] === 'pointer'
68
+ || (detail as Record<string, unknown>)['trigger'] === 'programmatic')
69
+ && Object.keys(detail as object).every((key) => ['open', 'reason', 'trigger'].includes(key)),
70
+ close: (detail) =>
71
+ detail !== null && typeof detail === 'object' && !Array.isArray(detail)
72
+ && typeof (detail as Record<string, unknown>)['open'] === 'boolean'
73
+ && ((detail as Record<string, unknown>)['reason'] === 'action'
74
+ || (detail as Record<string, unknown>)['reason'] === 'programmatic'
75
+ || (detail as Record<string, unknown>)['reason'] === 'light-dismiss'
76
+ || (detail as Record<string, unknown>)['reason'] === 'escape')
77
+ && ((detail as Record<string, unknown>)['trigger'] === 'keyboard'
78
+ || (detail as Record<string, unknown>)['trigger'] === 'pointer'
79
+ || (detail as Record<string, unknown>)['trigger'] === 'programmatic')
80
+ && Object.keys(detail as object).every((key) => ['open', 'reason', 'trigger'].includes(key)),
81
+ select: (detail) =>
82
+ detail !== null && typeof detail === 'object' && !Array.isArray(detail)
83
+ && typeof (detail as Record<string, unknown>)['value'] === 'string'
84
+ && ((detail as Record<string, unknown>)['trigger'] === 'keyboard'
85
+ || (detail as Record<string, unknown>)['trigger'] === 'pointer'
86
+ || (detail as Record<string, unknown>)['trigger'] === 'programmatic')
87
+ && Object.keys(detail as object).every((key) => ['value', 'trigger'].includes(key)),
88
+ }
32
89
  if (detail !== undefined && checks[name] !== undefined && !checks[name]!(detail)) {
33
- throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`);
90
+ throw new TypeError(`HR002: Event \`${name}\` detail does not satisfy its declared type.`)
34
91
  }
35
- (emit as (name: string, detail: unknown) => void)(name, detail);
36
- return root.value?.dispatchEvent(new CustomEvent(name, { bubbles: true, composed: true, ...declared[name], detail })) ?? true;
37
- };
92
+ const emitEvent = emit as (name: string, detail: unknown) => void
93
+ emitEvent(name, detail)
94
+ if (detail !== null && typeof detail === 'object' && 'open' in detail) {
95
+ emitEvent('update:open', (detail as Record<string, unknown>)['open'])
96
+ }
97
+ return root.value?.dispatchEvent(
98
+ new CustomEvent(name, { bubbles: true, composed: true, ...declared[name], detail }),
99
+ ) ?? true
100
+ }
38
101
 
39
102
  function read(name: string): unknown {
40
- if (name === "internalOpen") return state_internalOpen.value;
41
- return (props as Record<string, unknown>)[name];
103
+ if (name === 'internalOpen') return internalOpen.value
104
+ return (props as Record<string, unknown>)[name]
42
105
  }
43
106
 
44
107
  function write(name: string, value: unknown): boolean {
45
- if (name === "internalOpen") { state_internalOpen.value = value; return true; }
46
- 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
+ throw new TypeError(`Only declared state is writable; \`${name}\` is not.`)
47
113
  }
48
114
 
49
- const stops: Array<() => void> = [];
115
+ const stops: Array<() => void> = []
50
116
  const host = {
51
- get element(): Element { return root.value as Element; },
117
+ get element(): Element {
118
+ return root.value as Element
119
+ },
52
120
  state: new Proxy({} as Record<string, unknown>, {
53
- get: (_target, name) => typeof name === "string" ? read(name) : undefined,
54
- set: (_target, name, value) => typeof name === "string" && write(name, value),
121
+ get: (_target, name) => typeof name === 'string' ? read(name) : undefined,
122
+ set: (_target, name, value) => typeof name === 'string' && write(name, value),
55
123
  }),
56
- refs: refs as Readonly<Record<string, Element>>,
124
+ refs: {
125
+ get menu(): Element {
126
+ return menuElement.value as Element
127
+ },
128
+ } as Readonly<Record<string, Element>>,
57
129
  elements: new Proxy({} as Record<string, Element | RadioNodeList | undefined>, {
58
130
  get: (_target, name) => {
59
- if (typeof name !== "string" || root.value === null) return undefined;
60
- const form = root.value instanceof HTMLFormElement ? root.value : root.value.querySelector("form");
61
- return form?.elements.namedItem(name) ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? undefined;
131
+ if (typeof name !== 'string' || root.value === null) return undefined
132
+ const form = root.value instanceof HTMLFormElement
133
+ ? root.value
134
+ : root.value.querySelector('form')
135
+ return form?.elements.namedItem(name)
136
+ ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? undefined
62
137
  },
63
138
  }),
64
139
  signal<T>(initialValue: T) {
65
- const value = shallowRef(initialValue);
140
+ const value = shallowRef(initialValue)
66
141
  return {
67
142
  get: (): T => value.value,
68
- set: (next: T): void => { if (!Object.is(value.value, next)) value.value = next; },
69
- update: (next: (current: T) => T): void => { const updated = next(value.value); if (!Object.is(value.value, updated)) value.value = updated; },
70
- };
143
+ set: (next: T): void => {
144
+ if (!Object.is(value.value, next)) value.value = next
145
+ },
146
+ update: (next: (current: T) => T): void => {
147
+ const updated = next(value.value)
148
+ if (!Object.is(value.value, updated)) value.value = updated
149
+ },
150
+ }
71
151
  },
72
152
  computed<T>(compute: () => T) {
73
- const value = computed(compute);
74
- return { get: (): T => value.value };
153
+ const value = computed(compute)
154
+ return { get: (): T => value.value }
75
155
  },
76
156
  effect(run: () => void | (() => void)): () => void {
77
157
  const stop = watchEffect((onCleanup) => {
78
- const cleanup = run();
79
- if (typeof cleanup === "function") onCleanup(cleanup);
80
- }, { flush: "post" });
81
- stops.push(stop);
82
- return stop;
158
+ const cleanup = run()
159
+ if (typeof cleanup === 'function') onCleanup(cleanup)
160
+ }, { flush: 'post' })
161
+ stops.push(stop)
162
+ return stop
83
163
  },
84
164
  on(event: string, listener: EventListener): () => void {
85
- const element = root.value;
86
- element?.addEventListener(event, listener);
87
- const off = (): void => element?.removeEventListener(event, listener);
88
- stops.push(off);
89
- return off;
165
+ const element = root.value
166
+ element?.addEventListener(event, listener)
167
+ const off = (): void => element?.removeEventListener(event, listener)
168
+ stops.push(off)
169
+ return off
90
170
  },
91
171
  dispatch,
92
- };
172
+ }
93
173
 
94
- let cleanup: void | (() => void);
95
- let ready: Promise<void> | undefined;
174
+ let cleanup: void | (() => void)
175
+ let ready: Promise<void> | undefined
96
176
  onMounted(() => {
97
- ready = Promise.resolve(controllerModule.default(host as never)).then((result) => { cleanup = result; });
98
- });
177
+ ready = Promise.resolve(controllerModule.default(host as never)).then((result) => {
178
+ cleanup = result
179
+ })
180
+ })
99
181
  onBeforeUnmount(() => {
100
- for (const stop of stops.splice(0)) stop();
101
- if (typeof cleanup === "function") cleanup();
102
- });
182
+ for (const stop of stops.splice(0)) stop()
183
+ if (typeof cleanup === 'function') cleanup()
184
+ })
103
185
  </script>
104
186
 
105
187
  <template>
106
- <span data-component="ui-context-menu" v-bind="$attrs" ref="root"><div class="menu" role="menu" aria-orientation="vertical" :ref="(element) => { refs['menu'] = element as Element }"><slot></slot></div></span>
188
+ <span data-component="ui-context-menu" v-bind="$attrs" ref="root"><div
189
+ class="menu"
190
+ role="menu"
191
+ aria-orientation="vertical"
192
+ ref="menu"
193
+ >
194
+ <slot />
195
+ </div></span>
107
196
  </template>
108
197
 
109
198
  <style scoped>
110
199
  [data-component~="ui-context-menu"] {
111
- display: contents;
112
- }
200
+ display: contents;
201
+ }
113
202
 
114
- .menu {
115
- position: fixed;
116
- inset: auto;
117
- margin: 0;
118
- display: flex;
119
- flex-direction: column;
120
- box-sizing: border-box;
121
- padding: var(--ui-space-1);
122
- background: var(--ui-surface-elevated);
123
- border: 1px solid var(--ui-border-default);
124
- border-radius: var(--ui-radius-3);
125
- box-shadow: var(--ui-elevation-overlay, var(--ui-shadow-lg));
126
- outline: 0;
127
- overflow: auto;
128
- z-index: var(--ui-z-overlay, 1000);
129
- min-width: 12rem;
130
- opacity: 0;
131
- transform: translateY(-4px) scale(0.99);
132
- transition:
133
- opacity var(--ui-motion-fast) var(--ui-motion-ease),
134
- transform var(--ui-motion-fast) var(--ui-motion-ease),
135
- display var(--ui-motion-fast) allow-discrete,
136
- overlay var(--ui-motion-fast) allow-discrete;
137
- }
203
+ .menu {
204
+ position: fixed;
205
+ inset: auto;
206
+ margin: 0;
207
+ display: flex;
208
+ flex-direction: column;
209
+ box-sizing: border-box;
210
+ padding: var(--ui-space-1);
211
+ background: var(--ui-surface-elevated);
212
+ border: 1px solid var(--ui-border-default);
213
+ border-radius: var(--ui-radius-3);
214
+ box-shadow: var(--ui-elevation-overlay, var(--ui-shadow-lg));
215
+ outline: 0;
216
+ overflow: auto;
217
+ z-index: var(--ui-z-overlay, 1000);
218
+ min-width: 12rem;
219
+ opacity: 0;
220
+ transform: translateY(-4px) scale(0.99);
221
+ transition:
222
+ opacity var(--ui-motion-fast) var(--ui-motion-ease),
223
+ transform var(--ui-motion-fast) var(--ui-motion-ease),
224
+ display var(--ui-motion-fast) allow-discrete,
225
+ overlay var(--ui-motion-fast) allow-discrete;
226
+ }
138
227
 
139
- .menu:popover-open {
140
- opacity: 1;
141
- transform: translateY(0) scale(1);
142
- }
228
+ .menu:popover-open {
229
+ opacity: 1;
230
+ transform: translateY(0) scale(1);
231
+ }
143
232
 
144
- @starting-style {
145
- .menu:popover-open {
146
- opacity: 0;
147
- transform: translateY(-4px) scale(0.99);
148
- }
149
- }
233
+ @starting-style {
234
+ .menu:popover-open {
235
+ opacity: 0;
236
+ transform: translateY(-4px) scale(0.99);
237
+ }
238
+ }
150
239
 
151
- .menu[hidden],
152
- .menu[popover]:not(:popover-open) {
153
- display: none;
154
- }
240
+ .menu[hidden],
241
+ .menu[popover]:not(:popover-open) {
242
+ display: none;
243
+ }
155
244
 
156
- @media (prefers-reduced-motion: reduce) {
157
- .menu {
158
- transition: none;
159
- }
160
- }
245
+ @media (prefers-reduced-motion: reduce) {
246
+ .menu {
247
+ transition: none;
248
+ }
249
+ }
161
250
 
162
- /* A component that sets its display still honours the hidden attribute on its root. */
163
- [data-component~="ui-context-menu"][hidden] {
164
- display: none;
165
- }
251
+ /* A component that sets its display still honours the hidden attribute on its root. */
252
+ [data-component~="ui-context-menu"][hidden] {
253
+ display: none;
254
+ }
166
255
  </style>
package/vue/UiDialog.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  type __VLS_Props = {
2
- dismissible?: boolean | null;
3
- for?: string | null;
4
- label?: string | null;
5
- modal?: boolean | null;
6
- open?: boolean | null;
2
+ dismissible?: boolean;
3
+ for?: string;
4
+ label?: string;
5
+ modal?: boolean;
6
+ open?: boolean;
7
7
  };
8
8
  declare var __VLS_1: {}, __VLS_3: {};
9
9
  type __VLS_Slots = {} & {
@@ -17,17 +17,19 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {},
17
17
  readonly reason: "action" | "programmatic" | "light-dismiss" | "escape";
18
18
  readonly trigger: "keyboard" | "pointer" | "programmatic";
19
19
  }) => any;
20
+ "update:open": (value: boolean) => any;
20
21
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
21
22
  onClose?: ((detail: {
22
23
  readonly open: boolean;
23
24
  readonly reason: "action" | "programmatic" | "light-dismiss" | "escape";
24
25
  readonly trigger: "keyboard" | "pointer" | "programmatic";
25
26
  }) => any) | undefined;
27
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
26
28
  }>, {
27
- for: string | null;
28
- open: boolean | null;
29
- dismissible: boolean | null;
30
- modal: boolean | null;
29
+ for: string;
30
+ open: boolean;
31
+ dismissible: boolean;
32
+ modal: boolean;
31
33
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
32
34
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
33
35
  declare const _default: typeof __VLS_export;