@threadlabs/looma 0.5.0 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/components/shared/input-modality.d.ts +8 -0
- package/components/shared/input-modality.js +2 -0
- package/components/ui-button/ui-button.html +42 -1
- package/components/ui-combobox/ui-combobox.html +12 -4
- package/components/ui-dialog/ui-dialog.html +13 -0
- package/components/ui-editor-insert-table-grid/ui-editor-insert-table-grid.html +1 -1
- package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +1 -1
- package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +6 -2
- package/components/ui-editor-table-overlay/ui-editor-table-overlay.html +20 -4
- package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +8 -4
- package/components/ui-form-field/ui-form-field.html +18 -7
- package/components/ui-icon/ui-icon.html +5 -1
- package/components/ui-icon-button/ui-icon-button.html +44 -1
- package/components/ui-popover/ui-popover.js +10 -2
- package/components/ui-search-shell/ui-search-shell.html +7 -0
- package/components/ui-search-shell/ui-search-shell.js +9 -0
- package/components/ui-tabs/ui-tabs.html +1 -1
- package/components/ui-toast-region/ui-toast-region.html +1 -1
- package/components/ui-tree-item/ui-tree-item.html +6 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/package.json +2 -2
- package/styles/ui-affordance-scope.css +1 -1
- package/styles/ui-avatar-group.css +1 -1
- package/styles/ui-avatar.css +1 -1
- package/styles/ui-badge.css +1 -1
- package/styles/ui-button.css +42 -2
- package/styles/ui-callout.css +1 -1
- package/styles/ui-checkbox.css +1 -1
- package/styles/ui-cluster.css +1 -1
- package/styles/ui-combobox.css +1 -1
- package/styles/ui-container.css +1 -1
- package/styles/ui-context-menu.css +1 -1
- package/styles/ui-dialog.css +18 -1
- package/styles/ui-disclosure.css +1 -1
- package/styles/ui-editable.css +1 -1
- package/styles/ui-editor-insert-table-grid.css +1 -1
- package/styles/ui-editor-mention-menu.css +1 -1
- package/styles/ui-editor-slash-menu.css +1 -1
- package/styles/ui-editor-table-context-menu.css +1 -1
- package/styles/ui-editor-table-overlay.css +1 -1
- package/styles/ui-editor-table-toolbar.css +1 -1
- package/styles/ui-editor-toolbar.css +1 -1
- package/styles/ui-floating-action-button.css +1 -1
- package/styles/ui-form-field.css +24 -10
- package/styles/ui-grid.css +1 -1
- package/styles/ui-icon-button.css +52 -2
- package/styles/ui-icon.css +1 -1
- package/styles/ui-input.css +1 -1
- package/styles/ui-menu-item.css +1 -1
- package/styles/ui-menu.css +1 -1
- package/styles/ui-popover.css +1 -1
- package/styles/ui-radio-group.css +1 -1
- package/styles/ui-radio.css +1 -1
- package/styles/ui-reel.css +1 -1
- package/styles/ui-search-result-row.css +1 -1
- package/styles/ui-search-shell.css +11 -2
- package/styles/ui-select.css +1 -1
- package/styles/ui-separator.css +1 -1
- package/styles/ui-sidebar.css +1 -1
- package/styles/ui-stack.css +1 -1
- package/styles/ui-switch.css +1 -1
- package/styles/ui-switcher.css +1 -1
- package/styles/ui-tabs.css +1 -1
- package/styles/ui-textarea.css +1 -1
- package/styles/ui-toast-region.css +1 -1
- package/styles/ui-tooltip.css +1 -1
- package/styles/ui-top-bar.css +1 -1
- package/styles/ui-tree-item.css +10 -2
- package/styles/ui-tree.css +1 -1
- package/vanilla/UiAffordanceScope.d.ts +1 -1
- package/vanilla/UiAffordanceScope.js +2 -2
- package/vanilla/UiAvatar.d.ts +1 -1
- package/vanilla/UiAvatar.js +2 -2
- package/vanilla/UiAvatarGroup.d.ts +1 -1
- package/vanilla/UiAvatarGroup.js +2 -2
- package/vanilla/UiBadge.d.ts +1 -1
- package/vanilla/UiBadge.js +2 -2
- package/vanilla/UiButton.d.ts +3 -1
- package/vanilla/UiButton.js +3 -3
- package/vanilla/UiCallout.d.ts +1 -1
- package/vanilla/UiCallout.js +2 -2
- package/vanilla/UiCheckbox.d.ts +1 -1
- package/vanilla/UiCheckbox.js +2 -2
- package/vanilla/UiCluster.d.ts +1 -1
- package/vanilla/UiCluster.js +2 -2
- package/vanilla/UiCombobox.d.ts +1 -1
- package/vanilla/UiCombobox.js +3 -3
- package/vanilla/UiContainer.d.ts +1 -1
- package/vanilla/UiContainer.js +2 -2
- package/vanilla/UiContextMenu.d.ts +1 -1
- package/vanilla/UiContextMenu.js +2 -2
- package/vanilla/UiDialog.d.ts +1 -1
- package/vanilla/UiDialog.js +2 -2
- package/vanilla/UiDisclosure.d.ts +1 -1
- package/vanilla/UiDisclosure.js +2 -2
- package/vanilla/UiEditable.d.ts +1 -1
- package/vanilla/UiEditable.js +2 -2
- package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
- package/vanilla/UiEditorInsertTableGrid.js +3 -3
- package/vanilla/UiEditorMentionMenu.d.ts +1 -1
- package/vanilla/UiEditorMentionMenu.js +3 -3
- package/vanilla/UiEditorSlashMenu.d.ts +1 -1
- package/vanilla/UiEditorSlashMenu.js +2 -2
- package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
- package/vanilla/UiEditorTableContextMenu.js +3 -3
- package/vanilla/UiEditorTableOverlay.d.ts +1 -1
- package/vanilla/UiEditorTableOverlay.js +3 -3
- package/vanilla/UiEditorTableToolbar.d.ts +1 -1
- package/vanilla/UiEditorTableToolbar.js +3 -3
- package/vanilla/UiEditorToolbar.d.ts +1 -1
- package/vanilla/UiEditorToolbar.js +2 -2
- package/vanilla/UiFloatingActionButton.d.ts +1 -1
- package/vanilla/UiFloatingActionButton.js +2 -2
- package/vanilla/UiFormField.d.ts +1 -1
- package/vanilla/UiFormField.js +15 -6
- package/vanilla/UiGrid.d.ts +1 -1
- package/vanilla/UiGrid.js +2 -2
- package/vanilla/UiIcon.d.ts +1 -1
- package/vanilla/UiIcon.js +3 -3
- package/vanilla/UiIconButton.d.ts +1 -1
- package/vanilla/UiIconButton.js +2 -2
- package/vanilla/UiInput.d.ts +1 -1
- package/vanilla/UiInput.js +2 -2
- package/vanilla/UiMenu.d.ts +1 -1
- package/vanilla/UiMenu.js +2 -2
- package/vanilla/UiMenuItem.d.ts +1 -1
- package/vanilla/UiMenuItem.js +2 -2
- package/vanilla/UiPopover.d.ts +1 -1
- package/vanilla/UiPopover.js +2 -2
- package/vanilla/UiRadio.d.ts +1 -1
- package/vanilla/UiRadio.js +2 -2
- package/vanilla/UiRadioGroup.d.ts +1 -1
- package/vanilla/UiRadioGroup.js +2 -2
- package/vanilla/UiReel.d.ts +1 -1
- package/vanilla/UiReel.js +2 -2
- package/vanilla/UiSearchResultRow.d.ts +1 -1
- package/vanilla/UiSearchResultRow.js +2 -2
- package/vanilla/UiSearchShell.d.ts +1 -1
- package/vanilla/UiSearchShell.js +2 -2
- package/vanilla/UiSelect.d.ts +1 -1
- package/vanilla/UiSelect.js +2 -2
- package/vanilla/UiSeparator.d.ts +1 -1
- package/vanilla/UiSeparator.js +2 -2
- package/vanilla/UiSidebar.d.ts +1 -1
- package/vanilla/UiSidebar.js +2 -2
- package/vanilla/UiStack.d.ts +1 -1
- package/vanilla/UiStack.js +2 -2
- package/vanilla/UiSwitch.d.ts +1 -1
- package/vanilla/UiSwitch.js +2 -2
- package/vanilla/UiSwitcher.d.ts +1 -1
- package/vanilla/UiSwitcher.js +2 -2
- package/vanilla/UiTabs.d.ts +1 -1
- package/vanilla/UiTabs.js +3 -3
- package/vanilla/UiTextarea.d.ts +1 -1
- package/vanilla/UiTextarea.js +2 -2
- package/vanilla/UiToastRegion.d.ts +1 -1
- package/vanilla/UiToastRegion.js +3 -3
- package/vanilla/UiTooltip.d.ts +1 -1
- package/vanilla/UiTooltip.js +2 -2
- package/vanilla/UiTopBar.d.ts +1 -1
- package/vanilla/UiTopBar.js +1 -1
- package/vanilla/UiTree.d.ts +1 -1
- package/vanilla/UiTree.js +2 -2
- package/vanilla/UiTreeItem.d.ts +1 -1
- package/vanilla/UiTreeItem.js +2 -2
- package/vue/UiAffordanceScope.d.ts +2 -2
- package/vue/UiAffordanceScope.vue +92 -73
- package/vue/UiAvatar.d.ts +7 -7
- package/vue/UiAvatar.vue +145 -105
- package/vue/UiAvatarGroup.d.ts +4 -4
- package/vue/UiAvatarGroup.vue +134 -118
- package/vue/UiBadge.d.ts +4 -4
- package/vue/UiBadge.vue +113 -114
- package/vue/UiButton.d.ts +10 -6
- package/vue/UiButton.vue +289 -220
- package/vue/UiCallout.d.ts +2 -2
- package/vue/UiCallout.vue +154 -87
- package/vue/UiCheckbox.d.ts +14 -10
- package/vue/UiCheckbox.vue +228 -162
- package/vue/UiCluster.d.ts +2 -2
- package/vue/UiCluster.vue +53 -60
- package/vue/UiCombobox.d.ts +36 -32
- package/vue/UiCombobox.vue +1005 -416
- package/vue/UiContainer.d.ts +2 -2
- package/vue/UiContainer.vue +48 -51
- package/vue/UiContextMenu.d.ts +6 -4
- package/vue/UiContextMenu.vue +205 -116
- package/vue/UiDialog.d.ts +11 -9
- package/vue/UiDialog.vue +287 -212
- package/vue/UiDisclosure.d.ts +8 -6
- package/vue/UiDisclosure.vue +248 -159
- package/vue/UiEditable.d.ts +16 -12
- package/vue/UiEditable.vue +325 -205
- package/vue/UiEditorInsertTableGrid.d.ts +8 -8
- package/vue/UiEditorInsertTableGrid.vue +216 -157
- package/vue/UiEditorMentionMenu.d.ts +9 -9
- package/vue/UiEditorMentionMenu.vue +265 -222
- package/vue/UiEditorSlashMenu.d.ts +7 -7
- package/vue/UiEditorSlashMenu.vue +286 -240
- package/vue/UiEditorTableContextMenu.d.ts +5 -5
- package/vue/UiEditorTableContextMenu.vue +306 -193
- package/vue/UiEditorTableOverlay.d.ts +2 -2
- package/vue/UiEditorTableOverlay.vue +609 -369
- package/vue/UiEditorTableToolbar.d.ts +7 -7
- package/vue/UiEditorTableToolbar.vue +443 -268
- package/vue/UiEditorToolbar.d.ts +2 -2
- package/vue/UiEditorToolbar.vue +134 -121
- package/vue/UiFloatingActionButton.d.ts +6 -6
- package/vue/UiFloatingActionButton.vue +100 -99
- package/vue/UiFormField.d.ts +6 -6
- package/vue/UiFormField.vue +112 -80
- package/vue/UiGrid.d.ts +2 -2
- package/vue/UiGrid.vue +51 -57
- package/vue/UiIcon.d.ts +2 -2
- package/vue/UiIcon.vue +118 -89
- package/vue/UiIconButton.d.ts +11 -11
- package/vue/UiIconButton.vue +285 -206
- package/vue/UiInput.d.ts +9 -9
- package/vue/UiInput.vue +153 -127
- package/vue/UiMenu.d.ts +8 -6
- package/vue/UiMenu.vue +217 -143
- package/vue/UiMenuItem.d.ts +4 -4
- package/vue/UiMenuItem.vue +52 -46
- package/vue/UiPopover.d.ts +8 -6
- package/vue/UiPopover.vue +197 -137
- package/vue/UiRadio.d.ts +14 -10
- package/vue/UiRadio.vue +183 -117
- package/vue/UiRadioGroup.d.ts +14 -12
- package/vue/UiRadioGroup.vue +172 -111
- package/vue/UiReel.d.ts +3 -3
- package/vue/UiReel.vue +77 -77
- package/vue/UiSearchResultRow.d.ts +4 -4
- package/vue/UiSearchResultRow.vue +124 -115
- package/vue/UiSearchShell.d.ts +10 -8
- package/vue/UiSearchShell.vue +245 -176
- package/vue/UiSelect.d.ts +9 -9
- package/vue/UiSelect.vue +162 -134
- package/vue/UiSeparator.d.ts +2 -2
- package/vue/UiSeparator.vue +22 -27
- package/vue/UiSidebar.d.ts +20 -18
- package/vue/UiSidebar.vue +312 -224
- package/vue/UiStack.d.ts +3 -3
- package/vue/UiStack.vue +64 -70
- package/vue/UiSwitch.d.ts +12 -8
- package/vue/UiSwitch.vue +218 -150
- package/vue/UiSwitcher.d.ts +3 -3
- package/vue/UiSwitcher.vue +73 -75
- package/vue/UiTabs.d.ts +10 -8
- package/vue/UiTabs.vue +251 -210
- package/vue/UiTextarea.d.ts +11 -11
- package/vue/UiTextarea.vue +155 -128
- package/vue/UiToastRegion.d.ts +10 -8
- package/vue/UiToastRegion.vue +261 -198
- package/vue/UiTooltip.d.ts +14 -12
- package/vue/UiTooltip.vue +241 -177
- package/vue/UiTopBar.vue +51 -42
- package/vue/UiTree.d.ts +8 -6
- package/vue/UiTree.vue +157 -70
- package/vue/UiTreeItem.d.ts +24 -22
- package/vue/UiTreeItem.vue +456 -339
- package/vue/chunks/UiAffordanceScope.js +9 -16
- package/vue/chunks/UiAvatar.js +23 -29
- package/vue/chunks/UiAvatarGroup.js +16 -39
- package/vue/chunks/UiBadge.js +3 -12
- package/vue/chunks/UiButton.js +15 -18
- package/vue/chunks/UiCallout.js +8 -17
- package/vue/chunks/UiCheckbox.js +37 -40
- package/vue/chunks/UiCluster.js +3 -12
- package/vue/chunks/UiCombobox.js +224 -266
- package/vue/chunks/UiContainer.js +3 -12
- package/vue/chunks/UiContextMenu.js +39 -34
- package/vue/chunks/UiDialog.js +36 -39
- package/vue/chunks/UiDisclosure.js +43 -48
- package/vue/chunks/UiEditable.js +55 -57
- package/vue/chunks/UiEditorInsertTableGrid.js +55 -73
- package/vue/chunks/UiEditorMentionMenu.js +40 -81
- package/vue/chunks/UiEditorSlashMenu.js +28 -52
- package/vue/chunks/UiEditorTableContextMenu.js +32 -56
- package/vue/chunks/UiEditorTableOverlay.js +58 -82
- package/vue/chunks/UiEditorTableToolbar.js +61 -85
- package/vue/chunks/UiEditorToolbar.js +4 -13
- package/vue/chunks/UiFloatingActionButton.js +7 -21
- package/vue/chunks/UiFormField.js +15 -12
- package/vue/chunks/UiGrid.js +3 -12
- package/vue/chunks/UiIcon.js +20 -43
- package/vue/chunks/UiIconButton.js +16 -28
- package/vue/chunks/UiInput.js +20 -25
- package/vue/chunks/UiMenu.js +29 -33
- package/vue/chunks/UiMenuItem.js +4 -10
- package/vue/chunks/UiPopover.js +28 -29
- package/vue/chunks/UiRadio.js +36 -39
- package/vue/chunks/UiRadioGroup.js +30 -34
- package/vue/chunks/UiReel.js +6 -15
- package/vue/chunks/UiSearchResultRow.js +6 -19
- package/vue/chunks/UiSearchShell.js +25 -28
- package/vue/chunks/UiSelect.js +20 -23
- package/vue/chunks/UiSeparator.js +2 -8
- package/vue/chunks/UiSidebar.js +39 -44
- package/vue/chunks/UiStack.js +6 -15
- package/vue/chunks/UiSwitch.js +35 -38
- package/vue/chunks/UiSwitcher.js +6 -15
- package/vue/chunks/UiTabs.js +47 -85
- package/vue/chunks/UiTextarea.js +21 -26
- package/vue/chunks/UiToastRegion.js +38 -72
- package/vue/chunks/UiTooltip.js +34 -35
- package/vue/chunks/UiTopBar.js +1 -1
- package/vue/chunks/UiTree.js +20 -15
- package/vue/chunks/UiTreeItem.js +85 -102
- package/vue/components.css +3994 -3764
- package/vue/index.d.ts +1 -0
- package/vue/index.js +2 -1
package/vanilla/UiTreeItem.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Generated by HTML Next 1.0.0-alpha.
|
|
1
|
+
// Generated by HTML Next 1.0.0-alpha.2 for Vanilla DOM. Do not edit.
|
|
2
2
|
export interface UiTreeItemEventMap {
|
|
3
3
|
expand: CustomEvent<{ readonly id: string; readonly expanded: boolean; readonly trigger: "keyboard" | "pointer" | "programmatic" }>;
|
|
4
4
|
}
|
package/vanilla/UiTreeItem.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// Generated by HTML Next 1.0.0-alpha.
|
|
2
|
-
import { manageComponentLifecycle } from "@nextwebwg/
|
|
1
|
+
// Generated by HTML Next 1.0.0-alpha.2 for Vanilla DOM. Do not edit.
|
|
2
|
+
import { manageComponentLifecycle } from "@nextwebwg/html-next/runtime";
|
|
3
3
|
import * as controller from "../components/ui-tree-item/ui-tree-item.js";
|
|
4
4
|
import "../styles/ui-tree-item.css";
|
|
5
5
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
type __VLS_Props = {
|
|
2
|
-
nearRadius?: number
|
|
2
|
+
nearRadius?: number;
|
|
3
3
|
};
|
|
4
4
|
declare var __VLS_1: {};
|
|
5
5
|
type __VLS_Slots = {} & {
|
|
6
6
|
default?: (props: typeof __VLS_1) => any;
|
|
7
7
|
};
|
|
8
8
|
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
9
|
-
nearRadius: number
|
|
9
|
+
nearRadius: number;
|
|
10
10
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
11
11
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
12
12
|
declare const _default: typeof __VLS_export;
|
|
@@ -1,118 +1,137 @@
|
|
|
1
|
-
<!-- Generated by HTML Next 1.0.0-alpha.
|
|
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
|
|
4
|
-
import * as controllerModule from
|
|
3
|
+
import { computed, onBeforeUnmount, onMounted, ref, shallowRef, watchEffect } from 'vue'
|
|
4
|
+
import * as controllerModule from '../components/ui-affordance-scope/ui-affordance-scope.js'
|
|
5
5
|
|
|
6
|
-
defineOptions({ inheritAttrs: false })
|
|
6
|
+
defineOptions({ inheritAttrs: false })
|
|
7
7
|
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
const props = withDefaults(
|
|
9
|
+
defineProps<{
|
|
10
|
+
nearRadius?: number
|
|
11
|
+
}>(),
|
|
12
|
+
{
|
|
13
|
+
nearRadius: 16,
|
|
14
|
+
},
|
|
15
|
+
)
|
|
11
16
|
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
}>(), {
|
|
15
|
-
nearRadius: 16,
|
|
16
|
-
});
|
|
17
|
-
const root = ref<HTMLElement | null>(null);
|
|
18
|
-
const refs: Record<string, Element | undefined> = {};
|
|
19
|
-
const state_engaged = ref<any>(false);
|
|
17
|
+
const root = ref<HTMLElement | null>(null)
|
|
18
|
+
const engaged = ref(false)
|
|
20
19
|
|
|
21
|
-
/**
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
/** The values the styles' :host-state() rules test. */
|
|
21
|
+
const hostState = computed(() =>
|
|
22
|
+
[
|
|
23
|
+
engaged.value && 'engaged',
|
|
24
|
+
].filter(Boolean).join(' ')
|
|
25
|
+
)
|
|
25
26
|
|
|
26
|
-
/**
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return tokens;
|
|
32
|
-
}).join(" "));
|
|
27
|
+
/** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
|
|
28
|
+
function dispatch(name: string, detail?: unknown): boolean {
|
|
29
|
+
return root.value?.dispatchEvent(new CustomEvent(name, { bubbles: true, composed: true, detail }))
|
|
30
|
+
?? true
|
|
31
|
+
}
|
|
33
32
|
|
|
34
33
|
function read(name: string): unknown {
|
|
35
|
-
if (name ===
|
|
36
|
-
return (props as Record<string, unknown>)[name]
|
|
34
|
+
if (name === 'engaged') return engaged.value
|
|
35
|
+
return (props as Record<string, unknown>)[name]
|
|
37
36
|
}
|
|
38
37
|
|
|
39
38
|
function write(name: string, value: unknown): boolean {
|
|
40
|
-
if (name ===
|
|
41
|
-
|
|
39
|
+
if (name === 'engaged') {
|
|
40
|
+
engaged.value = value as never
|
|
41
|
+
return true
|
|
42
|
+
}
|
|
43
|
+
throw new TypeError(`Only declared state is writable; \`${name}\` is not.`)
|
|
42
44
|
}
|
|
43
45
|
|
|
44
|
-
const stops: Array<() => void> = []
|
|
46
|
+
const stops: Array<() => void> = []
|
|
45
47
|
const host = {
|
|
46
|
-
get element(): Element {
|
|
48
|
+
get element(): Element {
|
|
49
|
+
return root.value as Element
|
|
50
|
+
},
|
|
47
51
|
state: new Proxy({} as Record<string, unknown>, {
|
|
48
|
-
get: (_target, name) => typeof name ===
|
|
49
|
-
set: (_target, name, value) => typeof name ===
|
|
52
|
+
get: (_target, name) => typeof name === 'string' ? read(name) : undefined,
|
|
53
|
+
set: (_target, name, value) => typeof name === 'string' && write(name, value),
|
|
50
54
|
}),
|
|
51
|
-
refs:
|
|
55
|
+
refs: {} as Readonly<Record<string, Element>>,
|
|
52
56
|
elements: new Proxy({} as Record<string, Element | RadioNodeList | undefined>, {
|
|
53
57
|
get: (_target, name) => {
|
|
54
|
-
if (typeof name !==
|
|
55
|
-
const form = root.value instanceof HTMLFormElement
|
|
56
|
-
|
|
58
|
+
if (typeof name !== 'string' || root.value === null) return undefined
|
|
59
|
+
const form = root.value instanceof HTMLFormElement
|
|
60
|
+
? root.value
|
|
61
|
+
: root.value.querySelector('form')
|
|
62
|
+
return form?.elements.namedItem(name)
|
|
63
|
+
?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? undefined
|
|
57
64
|
},
|
|
58
65
|
}),
|
|
59
66
|
signal<T>(initialValue: T) {
|
|
60
|
-
const value = shallowRef(initialValue)
|
|
67
|
+
const value = shallowRef(initialValue)
|
|
61
68
|
return {
|
|
62
69
|
get: (): T => value.value,
|
|
63
|
-
set: (next: T): void => {
|
|
64
|
-
|
|
65
|
-
|
|
70
|
+
set: (next: T): void => {
|
|
71
|
+
if (!Object.is(value.value, next)) value.value = next
|
|
72
|
+
},
|
|
73
|
+
update: (next: (current: T) => T): void => {
|
|
74
|
+
const updated = next(value.value)
|
|
75
|
+
if (!Object.is(value.value, updated)) value.value = updated
|
|
76
|
+
},
|
|
77
|
+
}
|
|
66
78
|
},
|
|
67
79
|
computed<T>(compute: () => T) {
|
|
68
|
-
const value = computed(compute)
|
|
69
|
-
return { get: (): T => value.value }
|
|
80
|
+
const value = computed(compute)
|
|
81
|
+
return { get: (): T => value.value }
|
|
70
82
|
},
|
|
71
83
|
effect(run: () => void | (() => void)): () => void {
|
|
72
84
|
const stop = watchEffect((onCleanup) => {
|
|
73
|
-
const cleanup = run()
|
|
74
|
-
if (typeof cleanup ===
|
|
75
|
-
}, { flush:
|
|
76
|
-
stops.push(stop)
|
|
77
|
-
return stop
|
|
85
|
+
const cleanup = run()
|
|
86
|
+
if (typeof cleanup === 'function') onCleanup(cleanup)
|
|
87
|
+
}, { flush: 'post' })
|
|
88
|
+
stops.push(stop)
|
|
89
|
+
return stop
|
|
78
90
|
},
|
|
79
91
|
on(event: string, listener: EventListener): () => void {
|
|
80
|
-
const element = root.value
|
|
81
|
-
element?.addEventListener(event, listener)
|
|
82
|
-
const off = (): void => element?.removeEventListener(event, listener)
|
|
83
|
-
stops.push(off)
|
|
84
|
-
return off
|
|
92
|
+
const element = root.value
|
|
93
|
+
element?.addEventListener(event, listener)
|
|
94
|
+
const off = (): void => element?.removeEventListener(event, listener)
|
|
95
|
+
stops.push(off)
|
|
96
|
+
return off
|
|
85
97
|
},
|
|
86
98
|
dispatch,
|
|
87
|
-
}
|
|
99
|
+
}
|
|
88
100
|
|
|
89
|
-
let cleanup: void | (() => void)
|
|
90
|
-
let ready: Promise<void> | undefined
|
|
101
|
+
let cleanup: void | (() => void)
|
|
102
|
+
let ready: Promise<void> | undefined
|
|
91
103
|
onMounted(() => {
|
|
92
|
-
ready = Promise.resolve(controllerModule.default(host as never)).then((result) => {
|
|
93
|
-
|
|
104
|
+
ready = Promise.resolve(controllerModule.default(host as never)).then((result) => {
|
|
105
|
+
cleanup = result
|
|
106
|
+
})
|
|
107
|
+
})
|
|
94
108
|
onBeforeUnmount(() => {
|
|
95
|
-
for (const stop of stops.splice(0)) stop()
|
|
96
|
-
if (typeof cleanup ===
|
|
97
|
-
})
|
|
109
|
+
for (const stop of stops.splice(0)) stop()
|
|
110
|
+
if (typeof cleanup === 'function') cleanup()
|
|
111
|
+
})
|
|
98
112
|
</script>
|
|
99
113
|
|
|
100
114
|
<template>
|
|
101
|
-
<span
|
|
115
|
+
<span
|
|
116
|
+
data-component="ui-affordance-scope"
|
|
117
|
+
v-bind="$attrs"
|
|
118
|
+
:data-ui-affordance-scope-state="hostState || undefined"
|
|
119
|
+
ref="root"
|
|
120
|
+
><slot /></span>
|
|
102
121
|
</template>
|
|
103
122
|
|
|
104
123
|
<style scoped>
|
|
105
124
|
[data-component~="ui-affordance-scope"] {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
125
|
+
display: contents;
|
|
126
|
+
--ui-affordance-scope-engaged: 0;
|
|
127
|
+
}
|
|
109
128
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
129
|
+
[data-component~="ui-affordance-scope"][data-ui-affordance-scope-state~="engaged"] {
|
|
130
|
+
--ui-affordance-scope-engaged: 1;
|
|
131
|
+
}
|
|
113
132
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
133
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
134
|
+
[data-component~="ui-affordance-scope"][hidden] {
|
|
135
|
+
display: none;
|
|
136
|
+
}
|
|
118
137
|
</style>
|
package/vue/UiAvatar.d.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
type __VLS_Props = {
|
|
2
|
-
alt?: string
|
|
3
|
-
fallback?: string
|
|
4
|
-
name?: string
|
|
5
|
-
src?: string
|
|
2
|
+
alt?: string;
|
|
3
|
+
fallback?: string;
|
|
4
|
+
name?: string;
|
|
5
|
+
src?: string;
|
|
6
6
|
};
|
|
7
7
|
declare var __VLS_1: {};
|
|
8
8
|
type __VLS_Slots = {} & {
|
|
9
9
|
default?: (props: typeof __VLS_1) => any;
|
|
10
10
|
};
|
|
11
11
|
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
12
|
-
alt: string
|
|
13
|
-
fallback: string
|
|
14
|
-
name: string
|
|
12
|
+
alt: string;
|
|
13
|
+
fallback: string;
|
|
14
|
+
name: string;
|
|
15
15
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
16
16
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
17
17
|
declare const _default: typeof __VLS_export;
|
package/vue/UiAvatar.vue
CHANGED
|
@@ -1,152 +1,192 @@
|
|
|
1
|
-
<!-- Generated by HTML Next 1.0.0-alpha.
|
|
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 {
|
|
4
|
-
|
|
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-avatar/ui-avatar.js'
|
|
5
13
|
|
|
6
|
-
defineOptions({ inheritAttrs: false })
|
|
14
|
+
defineOptions({ inheritAttrs: false })
|
|
7
15
|
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
16
|
+
const props = withDefaults(
|
|
17
|
+
defineProps<{
|
|
18
|
+
alt?: string
|
|
19
|
+
fallback?: string
|
|
20
|
+
name?: string
|
|
21
|
+
src?: string
|
|
22
|
+
}>(),
|
|
23
|
+
{
|
|
24
|
+
alt: '',
|
|
25
|
+
fallback: '',
|
|
26
|
+
name: '',
|
|
27
|
+
},
|
|
28
|
+
)
|
|
14
29
|
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}>(), {
|
|
21
|
-
alt: "",
|
|
22
|
-
fallback: "",
|
|
23
|
-
name: "",
|
|
24
|
-
});
|
|
25
|
-
const root = ref<HTMLElement | null>(null);
|
|
26
|
-
const refs: Record<string, Element | undefined> = {};
|
|
27
|
-
const state_hasImage = ref<any>(false);
|
|
28
|
-
const state_hasAuthoredImage = ref<any>(false);
|
|
29
|
-
const state_initials = ref<any>("?");
|
|
30
|
+
const root = ref<HTMLElement | null>(null)
|
|
31
|
+
const imageElement = useTemplateRef<HTMLElement>('image')
|
|
32
|
+
const hasImage = ref(false)
|
|
33
|
+
const hasAuthoredImage = ref(false)
|
|
34
|
+
const initials = ref('?')
|
|
30
35
|
|
|
31
36
|
/** Dispatches a component event to Vue listeners and, for controllers and page code, on the root. */
|
|
32
|
-
|
|
33
|
-
return root.value?.dispatchEvent(new CustomEvent(name, { bubbles: true, composed: true, detail }))
|
|
34
|
-
|
|
37
|
+
function dispatch(name: string, detail?: unknown): boolean {
|
|
38
|
+
return root.value?.dispatchEvent(new CustomEvent(name, { bubbles: true, composed: true, detail }))
|
|
39
|
+
?? true
|
|
40
|
+
}
|
|
35
41
|
|
|
36
42
|
function read(name: string): unknown {
|
|
37
|
-
if (name ===
|
|
38
|
-
if (name ===
|
|
39
|
-
if (name ===
|
|
40
|
-
return (props as Record<string, unknown>)[name]
|
|
43
|
+
if (name === 'hasImage') return hasImage.value
|
|
44
|
+
if (name === 'hasAuthoredImage') return hasAuthoredImage.value
|
|
45
|
+
if (name === 'initials') return initials.value
|
|
46
|
+
return (props as Record<string, unknown>)[name]
|
|
41
47
|
}
|
|
42
48
|
|
|
43
49
|
function write(name: string, value: unknown): boolean {
|
|
44
|
-
if (name ===
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
50
|
+
if (name === 'hasImage') {
|
|
51
|
+
hasImage.value = value as never
|
|
52
|
+
return true
|
|
53
|
+
}
|
|
54
|
+
if (name === 'hasAuthoredImage') {
|
|
55
|
+
hasAuthoredImage.value = value as never
|
|
56
|
+
return true
|
|
57
|
+
}
|
|
58
|
+
if (name === 'initials') {
|
|
59
|
+
initials.value = value as never
|
|
60
|
+
return true
|
|
61
|
+
}
|
|
62
|
+
throw new TypeError(`Only declared state is writable; \`${name}\` is not.`)
|
|
48
63
|
}
|
|
49
64
|
|
|
50
|
-
const stops: Array<() => void> = []
|
|
65
|
+
const stops: Array<() => void> = []
|
|
51
66
|
const host = {
|
|
52
|
-
get element(): Element {
|
|
67
|
+
get element(): Element {
|
|
68
|
+
return root.value as Element
|
|
69
|
+
},
|
|
53
70
|
state: new Proxy({} as Record<string, unknown>, {
|
|
54
|
-
get: (_target, name) => typeof name ===
|
|
55
|
-
set: (_target, name, value) => typeof name ===
|
|
71
|
+
get: (_target, name) => typeof name === 'string' ? read(name) : undefined,
|
|
72
|
+
set: (_target, name, value) => typeof name === 'string' && write(name, value),
|
|
56
73
|
}),
|
|
57
|
-
refs:
|
|
74
|
+
refs: {
|
|
75
|
+
get image(): Element {
|
|
76
|
+
return imageElement.value as Element
|
|
77
|
+
},
|
|
78
|
+
} as Readonly<Record<string, Element>>,
|
|
58
79
|
elements: new Proxy({} as Record<string, Element | RadioNodeList | undefined>, {
|
|
59
80
|
get: (_target, name) => {
|
|
60
|
-
if (typeof name !==
|
|
61
|
-
const form = root.value instanceof HTMLFormElement
|
|
62
|
-
|
|
81
|
+
if (typeof name !== 'string' || root.value === null) return undefined
|
|
82
|
+
const form = root.value instanceof HTMLFormElement
|
|
83
|
+
? root.value
|
|
84
|
+
: root.value.querySelector('form')
|
|
85
|
+
return form?.elements.namedItem(name)
|
|
86
|
+
?? root.value.querySelector(`[name="${CSS.escape(name)}"]`) ?? undefined
|
|
63
87
|
},
|
|
64
88
|
}),
|
|
65
89
|
signal<T>(initialValue: T) {
|
|
66
|
-
const value = shallowRef(initialValue)
|
|
90
|
+
const value = shallowRef(initialValue)
|
|
67
91
|
return {
|
|
68
92
|
get: (): T => value.value,
|
|
69
|
-
set: (next: T): void => {
|
|
70
|
-
|
|
71
|
-
|
|
93
|
+
set: (next: T): void => {
|
|
94
|
+
if (!Object.is(value.value, next)) value.value = next
|
|
95
|
+
},
|
|
96
|
+
update: (next: (current: T) => T): void => {
|
|
97
|
+
const updated = next(value.value)
|
|
98
|
+
if (!Object.is(value.value, updated)) value.value = updated
|
|
99
|
+
},
|
|
100
|
+
}
|
|
72
101
|
},
|
|
73
102
|
computed<T>(compute: () => T) {
|
|
74
|
-
const value = computed(compute)
|
|
75
|
-
return { get: (): T => value.value }
|
|
103
|
+
const value = computed(compute)
|
|
104
|
+
return { get: (): T => value.value }
|
|
76
105
|
},
|
|
77
106
|
effect(run: () => void | (() => void)): () => void {
|
|
78
107
|
const stop = watchEffect((onCleanup) => {
|
|
79
|
-
const cleanup = run()
|
|
80
|
-
if (typeof cleanup ===
|
|
81
|
-
}, { flush:
|
|
82
|
-
stops.push(stop)
|
|
83
|
-
return stop
|
|
108
|
+
const cleanup = run()
|
|
109
|
+
if (typeof cleanup === 'function') onCleanup(cleanup)
|
|
110
|
+
}, { flush: 'post' })
|
|
111
|
+
stops.push(stop)
|
|
112
|
+
return stop
|
|
84
113
|
},
|
|
85
114
|
on(event: string, listener: EventListener): () => void {
|
|
86
|
-
const element = root.value
|
|
87
|
-
element?.addEventListener(event, listener)
|
|
88
|
-
const off = (): void => element?.removeEventListener(event, listener)
|
|
89
|
-
stops.push(off)
|
|
90
|
-
return off
|
|
115
|
+
const element = root.value
|
|
116
|
+
element?.addEventListener(event, listener)
|
|
117
|
+
const off = (): void => element?.removeEventListener(event, listener)
|
|
118
|
+
stops.push(off)
|
|
119
|
+
return off
|
|
91
120
|
},
|
|
92
121
|
dispatch,
|
|
93
|
-
}
|
|
122
|
+
}
|
|
94
123
|
|
|
95
|
-
let cleanup: void | (() => void)
|
|
96
|
-
let ready: Promise<void> | undefined
|
|
124
|
+
let cleanup: void | (() => void)
|
|
125
|
+
let ready: Promise<void> | undefined
|
|
97
126
|
onMounted(() => {
|
|
98
|
-
ready = Promise.resolve(controllerModule.default(host as never)).then((result) => {
|
|
99
|
-
|
|
127
|
+
ready = Promise.resolve(controllerModule.default(host as never)).then((result) => {
|
|
128
|
+
cleanup = result
|
|
129
|
+
})
|
|
130
|
+
})
|
|
100
131
|
onBeforeUnmount(() => {
|
|
101
|
-
for (const stop of stops.splice(0)) stop()
|
|
102
|
-
if (typeof cleanup ===
|
|
103
|
-
})
|
|
132
|
+
for (const stop of stops.splice(0)) stop()
|
|
133
|
+
if (typeof cleanup === 'function') cleanup()
|
|
134
|
+
})
|
|
104
135
|
</script>
|
|
105
136
|
|
|
106
137
|
<template>
|
|
107
|
-
<span data-component="ui-avatar" v-bind="$attrs" ref="root"><slot
|
|
138
|
+
<span data-component="ui-avatar" v-bind="$attrs" ref="root"><slot />
|
|
139
|
+
<img
|
|
140
|
+
class="image"
|
|
141
|
+
alt=""
|
|
142
|
+
aria-hidden="true"
|
|
143
|
+
:src="src"
|
|
144
|
+
:hidden="hasAuthoredImage || !hasImage"
|
|
145
|
+
ref="image"
|
|
146
|
+
>
|
|
147
|
+
<span class="fallback" :aria-hidden="hasImage" :hidden="hasImage">{{ initials }}</span></span>
|
|
108
148
|
</template>
|
|
109
149
|
|
|
110
150
|
<style scoped>
|
|
111
151
|
[data-component~="ui-avatar"] {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
152
|
+
display: inline-grid;
|
|
153
|
+
place-items: center;
|
|
154
|
+
overflow: hidden;
|
|
155
|
+
inline-size: 2.5rem;
|
|
156
|
+
block-size: 2.5rem;
|
|
157
|
+
border-radius: 999px;
|
|
158
|
+
border: 1px solid var(--ui-avatar-border, var(--ui-border-strong));
|
|
159
|
+
background: var(--ui-avatar-surface, var(--ui-accent-soft));
|
|
160
|
+
color: var(--ui-avatar-text, var(--ui-accent-solid));
|
|
161
|
+
font: inherit;
|
|
162
|
+
font-size: 0.875rem;
|
|
163
|
+
font-weight: 600;
|
|
164
|
+
text-transform: uppercase;
|
|
165
|
+
}
|
|
126
166
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
167
|
+
.image,
|
|
168
|
+
:slotted(img) {
|
|
169
|
+
grid-area: 1 / 1;
|
|
170
|
+
inline-size: 100%;
|
|
171
|
+
block-size: 100%;
|
|
172
|
+
object-fit: cover;
|
|
173
|
+
}
|
|
134
174
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
175
|
+
.fallback {
|
|
176
|
+
grid-area: 1 / 1;
|
|
177
|
+
display: inline-flex;
|
|
178
|
+
align-items: center;
|
|
179
|
+
justify-content: center;
|
|
180
|
+
inline-size: 100%;
|
|
181
|
+
block-size: 100%;
|
|
182
|
+
}
|
|
143
183
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
184
|
+
[hidden] {
|
|
185
|
+
display: none;
|
|
186
|
+
}
|
|
147
187
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
188
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
189
|
+
[data-component~="ui-avatar"][hidden] {
|
|
190
|
+
display: none;
|
|
191
|
+
}
|
|
152
192
|
</style>
|
package/vue/UiAvatarGroup.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
type __VLS_Props = {
|
|
2
|
-
label?: string
|
|
3
|
-
max?: number
|
|
2
|
+
label?: string;
|
|
3
|
+
max?: number;
|
|
4
4
|
};
|
|
5
5
|
declare var __VLS_1: {};
|
|
6
6
|
type __VLS_Slots = {} & {
|
|
7
7
|
default?: (props: typeof __VLS_1) => any;
|
|
8
8
|
};
|
|
9
9
|
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
10
|
-
label: string
|
|
11
|
-
max: number
|
|
10
|
+
label: string;
|
|
11
|
+
max: number;
|
|
12
12
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
13
13
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
14
14
|
declare const _default: typeof __VLS_export;
|