@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/vue/UiContainer.d.ts
CHANGED
package/vue/UiContainer.vue
CHANGED
|
@@ -1,65 +1,62 @@
|
|
|
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 } from
|
|
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?:
|
|
13
|
-
measure?:
|
|
14
|
-
}>()
|
|
15
|
-
|
|
16
|
-
/** The
|
|
17
|
-
const hostState = computed(() =>
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
|
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
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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>
|
package/vue/UiContextMenu.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
type __VLS_Props = {
|
|
2
|
-
for?: string
|
|
3
|
-
open?: boolean
|
|
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
|
|
41
|
-
open: boolean
|
|
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;
|
package/vue/UiContextMenu.vue
CHANGED
|
@@ -1,166 +1,255 @@
|
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
26
|
-
const declared
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
36
|
-
|
|
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 ===
|
|
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 ===
|
|
46
|
-
|
|
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 {
|
|
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 ===
|
|
54
|
-
set: (_target, name, value) => typeof name ===
|
|
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:
|
|
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 !==
|
|
60
|
-
const form = root.value instanceof HTMLFormElement
|
|
61
|
-
|
|
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 => {
|
|
69
|
-
|
|
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 ===
|
|
80
|
-
}, { flush:
|
|
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) => {
|
|
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 ===
|
|
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
|
|
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
|
-
|
|
112
|
-
|
|
200
|
+
display: contents;
|
|
201
|
+
}
|
|
113
202
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
228
|
+
.menu:popover-open {
|
|
229
|
+
opacity: 1;
|
|
230
|
+
transform: translateY(0) scale(1);
|
|
231
|
+
}
|
|
143
232
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
233
|
+
@starting-style {
|
|
234
|
+
.menu:popover-open {
|
|
235
|
+
opacity: 0;
|
|
236
|
+
transform: translateY(-4px) scale(0.99);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
150
239
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
240
|
+
.menu[hidden],
|
|
241
|
+
.menu[popover]:not(:popover-open) {
|
|
242
|
+
display: none;
|
|
243
|
+
}
|
|
155
244
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
245
|
+
@media (prefers-reduced-motion: reduce) {
|
|
246
|
+
.menu {
|
|
247
|
+
transition: none;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
161
250
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
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
|
|
3
|
-
for?: string
|
|
4
|
-
label?: string
|
|
5
|
-
modal?: boolean
|
|
6
|
-
open?: boolean
|
|
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
|
|
28
|
-
open: boolean
|
|
29
|
-
dismissible: boolean
|
|
30
|
-
modal: boolean
|
|
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;
|