@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,177 +1,204 @@
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-textarea/ui-textarea.js";
5
-
6
- defineOptions({ inheritAttrs: false });
7
-
8
- const hn = {
9
- text: (v: unknown): string => v === undefined || v === null ? "" : Array.isArray(v) ? v.map(hn.text).join(" ") : typeof v === "object" ? "" : String(v),
10
- 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),
11
- enumerated: (v: unknown): any => typeof v === "boolean" ? String(v) : hn.attr(v),
12
- };
13
-
14
- const props = withDefaults(defineProps<{
15
- disabled?: boolean | null;
16
- invalid?: boolean | null;
17
- readonly?: boolean | null;
18
- required?: boolean | null;
19
- rows?: number | null;
20
- value?: string | null;
21
- modelValue?: string | null;
22
- }>(), {
23
- disabled: false,
24
- invalid: false,
25
- readonly: false,
26
- required: false,
27
- rows: 4,
28
- });
3
+ import { computed, onBeforeUnmount, onMounted, ref, shallowRef, watchEffect } from 'vue'
4
+ import * as controllerModule from '../components/ui-textarea/ui-textarea.js'
5
+
6
+ defineOptions({ inheritAttrs: false })
7
+
8
+ const props = withDefaults(
9
+ defineProps<{
10
+ disabled?: boolean
11
+ invalid?: boolean
12
+ readonly?: boolean
13
+ required?: boolean
14
+ rows?: number
15
+ value?: string
16
+ modelValue?: string | null
17
+ }>(),
18
+ {
19
+ disabled: false,
20
+ invalid: false,
21
+ readonly: false,
22
+ required: false,
23
+ rows: 4,
24
+ },
25
+ )
29
26
  const emit = defineEmits<{
30
- "update:modelValue": [value: string];
31
- }>();
32
- const updateModel = (event: Event): void => emit("update:modelValue", (event.target as HTMLInputElement).value);
33
- const root = ref<HTMLElement | null>(null);
34
- const refs: Record<string, Element | undefined> = {};
27
+ 'update:modelValue': [value: string]
28
+ }>()
29
+ const model = computed({
30
+ get: () => props.modelValue ?? props.value ?? undefined,
31
+ set: (value) => emit('update:modelValue', value as string),
32
+ })
33
+
34
+ const root = ref<HTMLElement | null>(null)
35
35
 
36
36
  /** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
37
- const dispatch = (name: string, detail?: unknown): boolean => {
38
- return root.value?.dispatchEvent(new CustomEvent(name, { bubbles: true, composed: true, detail })) ?? true;
39
- };
37
+ function dispatch(name: string, detail?: unknown): boolean {
38
+ return root.value?.dispatchEvent(new CustomEvent(name, { bubbles: true, composed: true, detail }))
39
+ ?? true
40
+ }
40
41
 
41
42
  function read(name: string): unknown {
42
- return (props as Record<string, unknown>)[name];
43
+ return (props as Record<string, unknown>)[name]
43
44
  }
44
45
 
45
46
  function write(name: string, value: unknown): boolean {
46
- throw new TypeError(`Only declared state is writable; \`${name}\` is not.`);
47
+ throw new TypeError(`Only declared state is writable; \`${name}\` is not.`)
47
48
  }
48
49
 
49
- const stops: Array<() => void> = [];
50
+ const stops: Array<() => void> = []
50
51
  const host = {
51
- get element(): Element { return root.value as Element; },
52
+ get element(): Element {
53
+ return root.value as Element
54
+ },
52
55
  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),
56
+ get: (_target, name) => typeof name === 'string' ? read(name) : undefined,
57
+ set: (_target, name, value) => typeof name === 'string' && write(name, value),
55
58
  }),
56
- refs: refs as Readonly<Record<string, Element>>,
59
+ refs: {} as Readonly<Record<string, Element>>,
57
60
  elements: new Proxy({} as Record<string, Element | RadioNodeList | undefined>, {
58
61
  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;
62
+ if (typeof name !== 'string' || root.value === null) return undefined
63
+ const form = root.value instanceof HTMLFormElement
64
+ ? root.value
65
+ : root.value.querySelector('form')
66
+ return form?.elements.namedItem(name)
67
+ ?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? undefined
62
68
  },
63
69
  }),
64
70
  signal<T>(initialValue: T) {
65
- const value = shallowRef(initialValue);
71
+ const value = shallowRef(initialValue)
66
72
  return {
67
73
  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
- };
74
+ set: (next: T): void => {
75
+ if (!Object.is(value.value, next)) value.value = next
76
+ },
77
+ update: (next: (current: T) => T): void => {
78
+ const updated = next(value.value)
79
+ if (!Object.is(value.value, updated)) value.value = updated
80
+ },
81
+ }
71
82
  },
72
83
  computed<T>(compute: () => T) {
73
- const value = computed(compute);
74
- return { get: (): T => value.value };
84
+ const value = computed(compute)
85
+ return { get: (): T => value.value }
75
86
  },
76
87
  effect(run: () => void | (() => void)): () => void {
77
88
  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;
89
+ const cleanup = run()
90
+ if (typeof cleanup === 'function') onCleanup(cleanup)
91
+ }, { flush: 'post' })
92
+ stops.push(stop)
93
+ return stop
83
94
  },
84
95
  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;
96
+ const element = root.value
97
+ element?.addEventListener(event, listener)
98
+ const off = (): void => element?.removeEventListener(event, listener)
99
+ stops.push(off)
100
+ return off
90
101
  },
91
102
  dispatch,
92
- };
103
+ }
93
104
 
94
- let cleanup: void | (() => void);
95
- let ready: Promise<void> | undefined;
105
+ let cleanup: void | (() => void)
106
+ let ready: Promise<void> | undefined
96
107
  onMounted(() => {
97
- ready = Promise.resolve(controllerModule.default(host as never)).then((result) => { cleanup = result; });
98
- });
108
+ ready = Promise.resolve(controllerModule.default(host as never)).then((result) => {
109
+ cleanup = result
110
+ })
111
+ })
99
112
  onBeforeUnmount(() => {
100
- for (const stop of stops.splice(0)) stop();
101
- if (typeof cleanup === "function") cleanup();
102
- });
113
+ for (const stop of stops.splice(0)) stop()
114
+ if (typeof cleanup === 'function') cleanup()
115
+ })
103
116
  </script>
104
117
 
105
118
  <template>
106
- <textarea data-component="ui-textarea" v-bind="$attrs" :value="hn.attr((props.modelValue ?? props.value))" :disabled="hn.attr(props.disabled)" :readonly="hn.attr(props.readonly)" :required="hn.attr(props.required)" :aria-invalid="hn.enumerated(props.invalid)" :rows="hn.attr(props.rows)" @input="updateModel" ref="root"></textarea>
119
+ <textarea
120
+ data-component="ui-textarea"
121
+ v-bind="$attrs"
122
+ :disabled="disabled"
123
+ :readonly="readonly"
124
+ :required="required"
125
+ :aria-invalid="invalid"
126
+ :rows="rows"
127
+ v-model="model"
128
+ ref="root"
129
+ ></textarea>
107
130
  </template>
108
131
 
109
132
  <style scoped>
110
133
  [data-component~="ui-textarea"] {
111
- box-sizing: border-box;
112
- display: inline-block;
113
- inline-size: 100%;
114
- min-inline-size: 0;
115
- min-block-size: calc(var(--ui-space-12, 3rem) * 2);
116
- margin: 0;
117
- padding: var(--ui-space-2) var(--ui-space-3);
118
- appearance: none;
119
- resize: vertical;
120
- border: 1px solid var(--ui-control-border, var(--ui-border-strong));
121
- border-radius: var(--ui-textarea-radius, var(--ui-radius-2));
122
- background: var(--ui-control-surface, var(--ui-surface-elevated));
123
- color: var(--ui-text-primary);
124
- font: inherit;
125
- line-height: var(--ui-line-height-md);
126
- box-shadow: var(--ui-textarea-shadow, var(--ui-control-inset));
127
- transition:
128
- border-color var(--ui-motion-fast) var(--ui-motion-ease),
129
- box-shadow var(--ui-motion-fast) var(--ui-motion-ease),
130
- background-color var(--ui-motion-fast) var(--ui-motion-ease);
131
- }
134
+ box-sizing: border-box;
135
+ display: inline-block;
136
+ inline-size: 100%;
137
+ min-inline-size: 0;
138
+ min-block-size: calc(var(--ui-space-12, 3rem) * 2);
139
+ margin: 0;
140
+ padding: var(--ui-space-2) var(--ui-space-3);
141
+ appearance: none;
142
+ resize: vertical;
143
+ border: 1px solid var(--ui-control-border, var(--ui-border-strong));
144
+ border-radius: var(--ui-textarea-radius, var(--ui-radius-2));
145
+ background: var(--ui-control-surface, var(--ui-surface-elevated));
146
+ color: var(--ui-text-primary);
147
+ font: inherit;
148
+ line-height: var(--ui-line-height-md);
149
+ box-shadow: var(--ui-textarea-shadow, var(--ui-control-inset));
150
+ transition:
151
+ border-color var(--ui-motion-fast) var(--ui-motion-ease),
152
+ box-shadow var(--ui-motion-fast) var(--ui-motion-ease),
153
+ background-color var(--ui-motion-fast) var(--ui-motion-ease);
154
+ }
132
155
 
133
- /* Tabbing into a field selects its text; tint that selection softly instead of the page highlight. */
134
- [data-component~="ui-textarea"]::selection {
135
- background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
136
- color: inherit;
137
- }
156
+ /* Tabbing into a field selects its text; tint that selection softly instead of the page highlight. */
157
+ [data-component~="ui-textarea"]::selection {
158
+ background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
159
+ color: inherit;
160
+ }
138
161
 
139
- [data-component~="ui-textarea"]::placeholder {
140
- color: var(--ui-control-placeholder, var(--ui-text-secondary));
141
- opacity: 1;
142
- }
162
+ [data-component~="ui-textarea"]::placeholder {
163
+ color: var(--ui-control-placeholder, var(--ui-text-secondary));
164
+ opacity: 1;
165
+ }
143
166
 
144
- [data-component~="ui-textarea"]:hover:not(:focus):not(:disabled) {
145
- border-color: var(--ui-control-border-hover, var(--ui-text-secondary));
146
- }
167
+ [data-component~="ui-textarea"]:hover:not(:focus):not(:disabled) {
168
+ border-color: var(--ui-control-border-hover, var(--ui-text-secondary));
169
+ }
147
170
 
148
- [data-component~="ui-textarea"]:focus-visible {
149
- border-color: var(--ui-control-focus, var(--ui-accent-solid));
150
- outline: none;
151
- box-shadow: var(--ui-textarea-focus-shadow, var(--ui-control-inset), var(--ui-control-focus-halo-shadow));
152
- }
171
+ [data-component~="ui-textarea"]:focus-visible {
172
+ border-color: var(--ui-control-focus, var(--ui-accent-solid));
173
+ outline: none;
174
+ box-shadow: var(
175
+ --ui-textarea-focus-shadow,
176
+ var(--ui-control-inset),
177
+ var(--ui-control-focus-halo-shadow)
178
+ );
179
+ }
153
180
 
154
- /* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
155
- [data-component~="ui-textarea"][aria-invalid="true"],
156
- [data-component~="ui-textarea"]:is(:user-invalid, [data-user-invalid]) {
157
- border-color: var(--ui-danger-solid);
158
- }
181
+ /* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
182
+ [data-component~="ui-textarea"][aria-invalid="true"],
183
+ [data-component~="ui-textarea"]:is(:user-invalid, [data-user-invalid]) {
184
+ border-color: var(--ui-danger-solid);
185
+ }
159
186
 
160
- [data-component~="ui-textarea"]:is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible {
161
- box-shadow:
162
- var(--ui-control-inset),
163
- 0 0 0 3px color-mix(in srgb, var(--ui-danger-solid) 22%, transparent);
164
- }
187
+ [data-component~="ui-textarea"]:is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible {
188
+ box-shadow:
189
+ var(--ui-control-inset),
190
+ 0 0 0 3px color-mix(in srgb, var(--ui-danger-solid) 22%, transparent);
191
+ }
165
192
 
166
- [data-component~="ui-textarea"]:disabled {
167
- background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
168
- color: var(--ui-text-muted);
169
- box-shadow: none;
170
- cursor: not-allowed;
171
- }
193
+ [data-component~="ui-textarea"]:disabled {
194
+ background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
195
+ color: var(--ui-text-muted);
196
+ box-shadow: none;
197
+ cursor: not-allowed;
198
+ }
172
199
 
173
- /* A component that sets its display still honours the hidden attribute on its root. */
174
- [data-component~="ui-textarea"][hidden] {
175
- display: none;
176
- }
200
+ /* A component that sets its display still honours the hidden attribute on its root. */
201
+ [data-component~="ui-textarea"][hidden] {
202
+ display: none;
203
+ }
177
204
  </style>
@@ -1,8 +1,8 @@
1
1
  type __VLS_Props = {
2
- auto?: boolean | null;
3
- duration?: number | null;
4
- message?: string | null;
5
- open?: boolean | null;
2
+ auto?: boolean;
3
+ duration?: number;
4
+ message?: string;
5
+ open?: boolean;
6
6
  };
7
7
  declare var __VLS_1: {};
8
8
  type __VLS_Slots = {} & {
@@ -16,6 +16,7 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
16
16
  readonly reason: "action" | "timeout" | "programmatic" | "light-dismiss" | "escape";
17
17
  readonly trigger: "keyboard" | "pointer" | "programmatic";
18
18
  }) => any;
19
+ "update:open": (value: boolean) => any;
19
20
  dismiss: (detail: {
20
21
  readonly id: string;
21
22
  readonly reason: "action" | "timeout";
@@ -27,16 +28,17 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
27
28
  readonly reason: "action" | "timeout" | "programmatic" | "light-dismiss" | "escape";
28
29
  readonly trigger: "keyboard" | "pointer" | "programmatic";
29
30
  }) => any) | undefined;
31
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
30
32
  onDismiss?: ((detail: {
31
33
  readonly id: string;
32
34
  readonly reason: "action" | "timeout";
33
35
  readonly trigger: "keyboard" | "pointer" | "programmatic";
34
36
  }) => any) | undefined;
35
37
  }>, {
36
- open: boolean | null;
37
- message: string | null;
38
- auto: boolean | null;
39
- duration: number | null;
38
+ open: boolean;
39
+ message: string;
40
+ auto: boolean;
41
+ duration: number;
40
42
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
41
43
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
42
44
  declare const _default: typeof __VLS_export;