@threadlabs/looma 0.26.26 → 0.27.1
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/components/shared/editor.js +4 -5
- package/components/shared/overlay.js +231 -55
- package/components/ui-affordance-scope/ui-affordance-scope.js +4 -8
- package/components/ui-badge/ui-badge.html +17 -3
- package/components/ui-card/ui-card.html +3 -0
- package/components/ui-dialog/ui-dialog.html +7 -5
- package/components/ui-dialog/ui-dialog.js +67 -7
- package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +6 -0
- package/components/ui-editor-mention-menu/ui-editor-mention-menu.js +5 -9
- package/components/ui-editor-slash-menu/ui-editor-slash-menu.html +6 -0
- package/components/ui-editor-slash-menu/ui-editor-slash-menu.js +5 -9
- package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +21 -4
- package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.js +50 -22
- package/components/ui-editor-table-overlay/ui-editor-table-overlay.js +4 -6
- package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +3 -11
- package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.js +33 -44
- package/components/ui-listbox/ui-listbox.html +22 -17
- package/components/ui-menu/ui-menu.js +5 -3
- package/components/ui-popover/ui-popover.js +3 -2
- package/components/ui-scroll-area/ui-scroll-area.html +16 -0
- package/components/ui-search-shell/ui-search-shell.html +1 -1
- package/components/ui-search-shell/ui-search-shell.js +3 -5
- package/components/ui-section/ui-section.html +3 -0
- package/components/ui-toast/ui-toast.html +2 -1
- package/components/ui-toast/ui-toast.js +18 -2
- package/components/ui-toast-region/ui-toast-region.js +11 -3
- package/dist/index.js +1 -1
- package/editor/chunks/extensions.js +2 -0
- package/editor/extensions/slash-command.d.ts +2 -0
- package/editor/mention-contract.d.ts +2 -0
- package/package.json +1 -1
- package/styles/ui-badge.css +16 -0
- package/styles/ui-card.css +3 -0
- package/styles/ui-dialog.css +4 -2
- package/styles/ui-editor-mention-menu.css +7 -1
- package/styles/ui-editor-slash-menu.css +7 -1
- package/styles/ui-editor-table-context-menu.css +29 -5
- package/styles/ui-editor-table-toolbar.css +3 -11
- package/styles/ui-listbox.css +6 -0
- package/styles/ui-scroll-area.css +13 -0
- package/styles/ui-search-shell.css +1 -1
- package/styles/ui-section.css +3 -0
- package/vanilla/UiBadge.d.ts +1 -1
- package/vanilla/UiBadge.js +1 -1
- package/vanilla/UiDialog.js +10 -6
- package/vanilla/UiListbox.js +10 -9
- package/vanilla/UiScrollArea.d.ts +1 -0
- package/vanilla/UiScrollArea.js +4 -4
- package/vue/UiBadge.d.ts +3 -3
- package/vue/UiBadge.vue +24 -6
- package/vue/UiCard.vue +3 -0
- package/vue/UiDialog.vue +12 -6
- package/vue/UiEditorMentionMenu.vue +6 -0
- package/vue/UiEditorSlashMenu.vue +6 -0
- package/vue/UiEditorTableContextMenu.vue +21 -4
- package/vue/UiEditorTableToolbar.vue +3 -11
- package/vue/UiListbox.vue +20 -15
- package/vue/UiScrollArea.d.ts +9 -0
- package/vue/UiScrollArea.vue +39 -1
- package/vue/UiSearchShell.vue +1 -1
- package/vue/UiSection.vue +3 -0
- package/vue/UiToast.vue +1 -1
- package/vue/chunks/UiBadge.js +5 -4
- package/vue/chunks/UiCard.js +1 -1
- package/vue/chunks/UiDialog.js +25 -8
- package/vue/chunks/UiEditorMentionMenu.js +1 -1
- package/vue/chunks/UiEditorSlashMenu.js +1 -1
- package/vue/chunks/UiEditorTableContextMenu.js +1 -1
- package/vue/chunks/UiEditorTableToolbar.js +1 -1
- package/vue/chunks/UiListbox.js +12 -12
- package/vue/chunks/UiScrollArea.js +33 -2
- package/vue/chunks/UiSearchShell.js +1 -1
- package/vue/chunks/UiSection.js +1 -1
- package/vue/chunks/UiToast.js +2 -2
- package/vue/components.css +332 -272
- package/vue/editor/index.js +225 -40
|
@@ -394,6 +394,12 @@ useComponentHost(() => import('../components/ui-editor-slash-menu/ui-editor-slas
|
|
|
394
394
|
</template>
|
|
395
395
|
|
|
396
396
|
<style scoped>
|
|
397
|
+
[data-component~="ui-editor-slash-menu"][popover] {
|
|
398
|
+
position: fixed;
|
|
399
|
+
inset: auto;
|
|
400
|
+
margin: 0;
|
|
401
|
+
}
|
|
402
|
+
|
|
397
403
|
[data-component~="ui-editor-slash-menu"] {
|
|
398
404
|
user-select: none;
|
|
399
405
|
}
|
|
@@ -654,10 +654,16 @@ function uniqueKeys<T>(
|
|
|
654
654
|
</template>
|
|
655
655
|
|
|
656
656
|
<style scoped>
|
|
657
|
+
[data-component~="ui-editor-table-context-menu"][popover] {
|
|
658
|
+
position: fixed;
|
|
659
|
+
inset: auto;
|
|
660
|
+
margin: 0;
|
|
661
|
+
}
|
|
662
|
+
|
|
657
663
|
[data-component~="ui-editor-table-context-menu"] {
|
|
658
664
|
/* The max-width is a promise about the menu's footprint, so it counts padding and border. */
|
|
659
665
|
box-sizing: border-box;
|
|
660
|
-
min-width: 14rem;
|
|
666
|
+
min-width: min(14rem, calc(100vw - 24px));
|
|
661
667
|
max-width: min(17rem, calc(100vw - 24px));
|
|
662
668
|
max-height: min(28rem, calc(100vh - 24px));
|
|
663
669
|
padding: var(--ui-space-2);
|
|
@@ -712,16 +718,22 @@ function uniqueKeys<T>(
|
|
|
712
718
|
color: var(--ui-danger);
|
|
713
719
|
}
|
|
714
720
|
|
|
721
|
+
/* Swatches wrap like words: the row asks for the menu's full width, and a narrower menu fits fewer. */
|
|
715
722
|
.swatches {
|
|
716
|
-
display:
|
|
717
|
-
|
|
723
|
+
display: flex;
|
|
724
|
+
flex-wrap: wrap;
|
|
718
725
|
gap: 3px;
|
|
719
726
|
}
|
|
720
727
|
|
|
721
|
-
.
|
|
728
|
+
/* Three to a row at the menu's full width; 5rem keeps the longest label, "Default", whole. */
|
|
729
|
+
[data-component~="ui-editor-table-context-menu"] .swatch-button {
|
|
722
730
|
display: inline-flex;
|
|
723
731
|
align-items: center;
|
|
724
732
|
gap: var(--ui-space-2);
|
|
733
|
+
flex: 1 0 5rem;
|
|
734
|
+
min-width: 5rem;
|
|
735
|
+
max-width: calc((100% - 6px) / 3);
|
|
736
|
+
padding-inline-end: var(--ui-space-1);
|
|
725
737
|
}
|
|
726
738
|
|
|
727
739
|
.swatch {
|
|
@@ -768,6 +780,11 @@ function uniqueKeys<T>(
|
|
|
768
780
|
margin: var(--ui-space-1) 0;
|
|
769
781
|
}
|
|
770
782
|
|
|
783
|
+
/* Separators divide sections, so none sits above the first. */
|
|
784
|
+
.sep:first-child {
|
|
785
|
+
display: none;
|
|
786
|
+
}
|
|
787
|
+
|
|
771
788
|
[data-component~="ui-editor-table-context-menu"][hidden] {
|
|
772
789
|
display: none;
|
|
773
790
|
}
|
|
@@ -796,14 +796,6 @@ function uniqueKeys<T>(
|
|
|
796
796
|
background: var(--ui-accent-soft, var(--ui-accent-subtle));
|
|
797
797
|
}
|
|
798
798
|
|
|
799
|
-
.looma-editor__mobile-toolbar-shell [data-component~="ui-editor-table-toolbar"] .menu {
|
|
800
|
-
top: auto;
|
|
801
|
-
right: 0;
|
|
802
|
-
bottom: calc(100% + var(--ui-space-2));
|
|
803
|
-
max-height: min(50dvh, 22rem);
|
|
804
|
-
overflow-y: auto;
|
|
805
|
-
overscroll-behavior: contain;
|
|
806
|
-
}
|
|
807
799
|
[data-component~="ui-editor-table-toolbar"] {
|
|
808
800
|
display: inline-flex;
|
|
809
801
|
align-items: center;
|
|
@@ -894,9 +886,9 @@ function uniqueKeys<T>(
|
|
|
894
886
|
|
|
895
887
|
.menu {
|
|
896
888
|
box-sizing: border-box;
|
|
897
|
-
position:
|
|
898
|
-
|
|
899
|
-
|
|
889
|
+
position: fixed;
|
|
890
|
+
inset: auto;
|
|
891
|
+
margin: 0;
|
|
900
892
|
min-width: 12rem;
|
|
901
893
|
max-width: min(17rem, calc(100vw - 24px));
|
|
902
894
|
padding: var(--ui-space-1);
|
package/vue/UiListbox.vue
CHANGED
|
@@ -479,21 +479,23 @@ function uniqueKeys<T>(
|
|
|
479
479
|
:data-values="reflectedProp('values', 'values', checkedProps.values, undefined, false)"
|
|
480
480
|
ref="root"
|
|
481
481
|
>
|
|
482
|
-
<
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
482
|
+
<div class="choices">
|
|
483
|
+
<UiScrollArea ref="choicesElement"><KeyedBoundary><div
|
|
484
|
+
v-for="choice in uniqueKeys(choices, (choice, index, loop) => choice.index)"
|
|
485
|
+
:key="choice.index"
|
|
486
|
+
class="option"
|
|
487
|
+
role="option"
|
|
488
|
+
data-ui-choice-option=""
|
|
489
|
+
:data-multiple="checkedProps.multiple ? '' : undefined"
|
|
490
|
+
:id="concat(uid, '-option-', choice.index)"
|
|
491
|
+
:data-index="choice.index"
|
|
492
|
+
:aria-selected="choice.selected"
|
|
493
|
+
:aria-disabled="choice.disabled"
|
|
494
|
+
:class="{ active: choice.index === active }"
|
|
495
|
+
>
|
|
496
|
+
<span>{{ choice.label }}</span>
|
|
497
|
+
</div></KeyedBoundary></UiScrollArea>
|
|
498
|
+
</div>
|
|
497
499
|
<select
|
|
498
500
|
class="fallback"
|
|
499
501
|
aria-label="Choices"
|
|
@@ -566,7 +568,10 @@ function uniqueKeys<T>(
|
|
|
566
568
|
outline: none;
|
|
567
569
|
}
|
|
568
570
|
|
|
571
|
+
/* Its own box around the nested Scroll Area, which it shrinks into so the choices scroll. */
|
|
569
572
|
.choices {
|
|
573
|
+
display: flex;
|
|
574
|
+
flex-direction: column;
|
|
570
575
|
max-block-size: calc(max(2, var(--_rows, 5)) * var(--ui-control-size-md));
|
|
571
576
|
}
|
|
572
577
|
|
package/vue/UiScrollArea.d.ts
CHANGED
|
@@ -12,6 +12,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
12
12
|
type: PropType<"vertical" | "horizontal" | null>;
|
|
13
13
|
default: string;
|
|
14
14
|
};
|
|
15
|
+
padding: {
|
|
16
|
+
type: PropType<"none" | "xs" | "sm" | "md" | "lg" | null>;
|
|
17
|
+
default: string;
|
|
18
|
+
};
|
|
15
19
|
size: {
|
|
16
20
|
type: PropType<"content" | "sm" | "md" | "lg" | null>;
|
|
17
21
|
default: string;
|
|
@@ -29,6 +33,10 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
29
33
|
type: PropType<"vertical" | "horizontal" | null>;
|
|
30
34
|
default: string;
|
|
31
35
|
};
|
|
36
|
+
padding: {
|
|
37
|
+
type: PropType<"none" | "xs" | "sm" | "md" | "lg" | null>;
|
|
38
|
+
default: string;
|
|
39
|
+
};
|
|
32
40
|
size: {
|
|
33
41
|
type: PropType<"content" | "sm" | "md" | "lg" | null>;
|
|
34
42
|
default: string;
|
|
@@ -40,6 +48,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
40
48
|
}>> & Readonly<{}>, {
|
|
41
49
|
fill: boolean | null;
|
|
42
50
|
size: "sm" | "md" | "lg" | "content" | null;
|
|
51
|
+
padding: "none" | "xs" | "sm" | "md" | "lg" | null;
|
|
43
52
|
trim: boolean | null;
|
|
44
53
|
orientation: "vertical" | "horizontal" | null;
|
|
45
54
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
package/vue/UiScrollArea.vue
CHANGED
|
@@ -26,6 +26,15 @@ const propValidityContract = {
|
|
|
26
26
|
values: ['vertical', 'horizontal'],
|
|
27
27
|
default: 'vertical',
|
|
28
28
|
},
|
|
29
|
+
padding: {
|
|
30
|
+
type: { kind: 'terminal', name: 'keyword' },
|
|
31
|
+
required: false,
|
|
32
|
+
target: { attribute: 'padding' },
|
|
33
|
+
description:
|
|
34
|
+
'The space inside the scrolling region, on Card\'s scale: xs is 0.5rem, sm 0.75rem, md 1.5rem, and lg 2rem. It scrolls with the content, so the scrollbar and\n fades stay at the edges.',
|
|
35
|
+
values: ['none', 'xs', 'sm', 'md', 'lg'],
|
|
36
|
+
default: 'none',
|
|
37
|
+
},
|
|
29
38
|
size: {
|
|
30
39
|
type: { kind: 'terminal', name: 'keyword' },
|
|
31
40
|
required: false,
|
|
@@ -51,6 +60,10 @@ const props = defineProps({
|
|
|
51
60
|
type: null as unknown as PropType<'vertical' | 'horizontal' | null>,
|
|
52
61
|
default: 'vertical',
|
|
53
62
|
},
|
|
63
|
+
padding: {
|
|
64
|
+
type: null as unknown as PropType<'none' | 'xs' | 'sm' | 'md' | 'lg' | null>,
|
|
65
|
+
default: 'none',
|
|
66
|
+
},
|
|
54
67
|
size: {
|
|
55
68
|
type: null as unknown as PropType<'content' | 'sm' | 'md' | 'lg' | null>,
|
|
56
69
|
default: 'content',
|
|
@@ -60,6 +73,7 @@ const props = defineProps({
|
|
|
60
73
|
const acceptedProps: Record<string, unknown> = {
|
|
61
74
|
fill: false,
|
|
62
75
|
orientation: 'vertical',
|
|
76
|
+
padding: 'none',
|
|
63
77
|
size: 'content',
|
|
64
78
|
trim: false,
|
|
65
79
|
}
|
|
@@ -78,6 +92,13 @@ const checkedProps = computed(() => ({
|
|
|
78
92
|
'orientation',
|
|
79
93
|
acceptedProps,
|
|
80
94
|
) as 'vertical' | 'horizontal',
|
|
95
|
+
padding: checkedProp<'none' | 'xs' | 'sm' | 'md' | 'lg'>(
|
|
96
|
+
props['padding'],
|
|
97
|
+
{ kind: 'terminal', name: 'keyword' },
|
|
98
|
+
false,
|
|
99
|
+
'padding',
|
|
100
|
+
acceptedProps,
|
|
101
|
+
) as 'none' | 'xs' | 'sm' | 'md' | 'lg',
|
|
81
102
|
size: checkedProp<'content' | 'sm' | 'md' | 'lg'>(
|
|
82
103
|
props['size'],
|
|
83
104
|
{ kind: 'terminal', name: 'keyword' },
|
|
@@ -160,6 +181,9 @@ const hostState = computed(() =>
|
|
|
160
181
|
&& `orientation=${encodeURIComponent(checkedProps.value.orientation)}`,
|
|
161
182
|
checkedProps.value.size && 'size',
|
|
162
183
|
checkedProps.value.size != null && `size=${encodeURIComponent(checkedProps.value.size)}`,
|
|
184
|
+
checkedProps.value.padding && 'padding',
|
|
185
|
+
checkedProps.value.padding != null
|
|
186
|
+
&& `padding=${encodeURIComponent(checkedProps.value.padding)}`,
|
|
163
187
|
].filter(Boolean).join(' ')
|
|
164
188
|
)
|
|
165
189
|
|
|
@@ -180,7 +204,7 @@ useComponentHost(() => import('../components/ui-scroll-area/ui-scroll-area.js'),
|
|
|
180
204
|
? (incoming[name] ?? incoming[kebab] ?? null)
|
|
181
205
|
: null
|
|
182
206
|
},
|
|
183
|
-
propNames: ['fill', 'orientation', 'size', 'trim'],
|
|
207
|
+
propNames: ['fill', 'orientation', 'padding', 'size', 'trim'],
|
|
184
208
|
propValidity: (name: string) =>
|
|
185
209
|
propValidityState({ contract: propValidityContract, values: { ...props } }, name),
|
|
186
210
|
refs: { content: contentElement },
|
|
@@ -194,6 +218,7 @@ useComponentHost(() => import('../components/ui-scroll-area/ui-scroll-area.js'),
|
|
|
194
218
|
v-prop-validity="{ contract: propValidityContract, values: { ...props } }"
|
|
195
219
|
:data-fill="reflectedProp('fill', 'fill', checkedProps.fill, undefined, false)"
|
|
196
220
|
:data-orientation="reflectedProp('orientation', 'orientation', checkedProps.orientation, undefined, false)"
|
|
221
|
+
:data-padding="reflectedProp('padding', 'padding', checkedProps.padding, undefined, false)"
|
|
197
222
|
:data-size="reflectedProp('size', 'size', checkedProps.size, undefined, false)"
|
|
198
223
|
:data-trim="reflectedProp('trim', 'trim', checkedProps.trim, undefined, false)"
|
|
199
224
|
:data-ui-scroll-area-state="hostState || undefined"
|
|
@@ -268,6 +293,19 @@ useComponentHost(() => import('../components/ui-scroll-area/ui-scroll-area.js'),
|
|
|
268
293
|
max-block-size: 30rem;
|
|
269
294
|
}
|
|
270
295
|
|
|
296
|
+
[data-component~="ui-scroll-area"][data-ui-scroll-area-state~="padding=xs"] {
|
|
297
|
+
padding: var(--ui-space-2);
|
|
298
|
+
}
|
|
299
|
+
[data-component~="ui-scroll-area"][data-ui-scroll-area-state~="padding=sm"] {
|
|
300
|
+
padding: var(--ui-space-3);
|
|
301
|
+
}
|
|
302
|
+
[data-component~="ui-scroll-area"][data-ui-scroll-area-state~="padding=md"] {
|
|
303
|
+
padding: var(--ui-space-5);
|
|
304
|
+
}
|
|
305
|
+
[data-component~="ui-scroll-area"][data-ui-scroll-area-state~="padding=lg"] {
|
|
306
|
+
padding: var(--ui-space-6);
|
|
307
|
+
}
|
|
308
|
+
|
|
271
309
|
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
272
310
|
[data-component~="ui-scroll-area"][hidden] {
|
|
273
311
|
display: none;
|
package/vue/UiSearchShell.vue
CHANGED
package/vue/UiSection.vue
CHANGED
|
@@ -191,6 +191,9 @@ const hostState = computed(() =>
|
|
|
191
191
|
--_ui-selection-context-text: var(--ui-text-primary);
|
|
192
192
|
border-color: color-mix(in srgb, var(--ui-danger) 45%, var(--ui-border-default));
|
|
193
193
|
border-inline-start: var(--ui-accent-line-width) solid var(--ui-danger);
|
|
194
|
+
/* An accent edge keeps the corners on its side straight. */
|
|
195
|
+
border-start-start-radius: 0;
|
|
196
|
+
border-end-start-radius: 0;
|
|
194
197
|
background: var(--ui-danger-soft);
|
|
195
198
|
}
|
|
196
199
|
|
package/vue/UiToast.vue
CHANGED
|
@@ -16,7 +16,7 @@ const propValidityContract = {
|
|
|
16
16
|
required: false,
|
|
17
17
|
target: { attribute: 'duration' },
|
|
18
18
|
description:
|
|
19
|
-
'Milliseconds before
|
|
19
|
+
'Milliseconds the toast is shown before it dismisses itself; 0 keeps it until an action dismisses it. The timer starts when the toast is shown, starts again\n each time it is shown, and pauses on hover or focus.',
|
|
20
20
|
default: 0,
|
|
21
21
|
},
|
|
22
22
|
tone: {
|
package/vue/chunks/UiBadge.js
CHANGED
|
@@ -63,7 +63,7 @@ var UiBadge_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
|
|
|
63
63
|
},
|
|
64
64
|
required: false,
|
|
65
65
|
target: { attribute: "size" },
|
|
66
|
-
description: "Scale. xs is compact; sm keeps the usual badge geometry with compact text, fitting short counts such as 99+ inside a 24px circle. md is the usual text\n badge; lg adds room to fixed marks while retaining the usual text size. A square is 24px at xs, 32px at sm and md, and 40px at lg. A circle is 16px at xs,\n 24px at sm and md, and 32px at lg.",
|
|
66
|
+
description: "Scale. xs is compact; sm keeps the usual badge geometry with compact text, fitting short counts such as 99+ inside a 24px circle. md is the usual text\n badge; lg adds room to fixed marks while retaining the usual text size. A square is 24px at xs, 32px at sm and md, and 40px at lg. A circle is 16px at xs,\n 24px at sm and md, and 32px at lg. A small overlay circle is 20px.",
|
|
67
67
|
values: [
|
|
68
68
|
"xs",
|
|
69
69
|
"sm",
|
|
@@ -97,12 +97,13 @@ var UiBadge_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
|
|
|
97
97
|
},
|
|
98
98
|
required: false,
|
|
99
99
|
target: { attribute: "variant" },
|
|
100
|
-
description: "Emphasis. subtle sets toned text over a soft wash; solid fills with the tone and uses contrasting text; outline keeps the surface with a toned edge.\n inverse uses a translucent contrasting surface and toned ink for a count or label on a filled control of that tone. Neutral looks the same in solid and\n subtle. When space is constrained, the label truncates with an ellipsis while its full text remains available.",
|
|
100
|
+
description: "Emphasis. subtle sets toned text over a soft wash; solid fills with the tone and uses contrasting text; outline keeps the surface with a toned edge.\n inverse uses a translucent contrasting surface and toned ink for a count or label on a filled control of that tone. Neutral looks the same in solid and\n subtle. overlay inherits the containing filled control's text colour on a faint translucent fill, without a visible rim or shadow. Its small circle is\n 20px. When space is constrained, the label truncates with an ellipsis while its full text remains available.",
|
|
101
101
|
values: [
|
|
102
102
|
"solid",
|
|
103
103
|
"subtle",
|
|
104
104
|
"outline",
|
|
105
|
-
"inverse"
|
|
105
|
+
"inverse",
|
|
106
|
+
"overlay"
|
|
106
107
|
],
|
|
107
108
|
default: "subtle"
|
|
108
109
|
}
|
|
@@ -180,6 +181,6 @@ var UiBadge_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
|
|
|
180
181
|
}]]);
|
|
181
182
|
};
|
|
182
183
|
}
|
|
183
|
-
}), [["__scopeId", "data-v-
|
|
184
|
+
}), [["__scopeId", "data-v-3a29482a"]]);
|
|
184
185
|
//#endregion
|
|
185
186
|
export { UiBadge_default as t };
|
package/vue/chunks/UiCard.js
CHANGED
package/vue/chunks/UiDialog.js
CHANGED
|
@@ -20,7 +20,6 @@ var _hoisted_2 = {
|
|
|
20
20
|
key: 0,
|
|
21
21
|
class: "title"
|
|
22
22
|
};
|
|
23
|
-
var _hoisted_3 = { class: "body" };
|
|
24
23
|
var htmlNextAuthoredCheck2Reported = /* @__PURE__ */ new Set();
|
|
25
24
|
function htmlNextAuthoredCheck2(accepted, location, message) {
|
|
26
25
|
if (!accepted && !htmlNextAuthoredCheck2Reported.has(location)) {
|
|
@@ -229,7 +228,10 @@ var UiDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
|
|
|
229
228
|
const hydrationInstance = getCurrentInstance();
|
|
230
229
|
const emit = __emit;
|
|
231
230
|
const root = ref(null);
|
|
231
|
+
const headerElement = useTemplateRef("headerElement");
|
|
232
232
|
const closeElement = useTemplateRef("closeElement");
|
|
233
|
+
const bodyElement = useTemplateRef("bodyElement");
|
|
234
|
+
const footerElement = useTemplateRef("footerElement");
|
|
233
235
|
const internalOpen = ref(false);
|
|
234
236
|
const accessibleLabel = ref("Dialog");
|
|
235
237
|
let guardedPrevious;
|
|
@@ -307,7 +309,12 @@ var UiDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
|
|
|
307
309
|
contract: propValidityContract,
|
|
308
310
|
values: { ...props }
|
|
309
311
|
}, name),
|
|
310
|
-
refs: {
|
|
312
|
+
refs: {
|
|
313
|
+
header: headerElement,
|
|
314
|
+
close: closeElement,
|
|
315
|
+
body: bodyElement,
|
|
316
|
+
footer: footerElement
|
|
317
|
+
},
|
|
311
318
|
state: {
|
|
312
319
|
internalOpen,
|
|
313
320
|
accessibleLabel
|
|
@@ -328,24 +335,34 @@ var UiDialog_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
|
|
|
328
335
|
ref_key: "root",
|
|
329
336
|
ref: root
|
|
330
337
|
}), [
|
|
331
|
-
createElementVNode("header",
|
|
338
|
+
createElementVNode("header", {
|
|
339
|
+
ref_key: "headerElement",
|
|
340
|
+
ref: headerElement
|
|
341
|
+
}, [checkedProps.value.label ? (openBlock(), createElementBlock("h2", _hoisted_2, toDisplayString(checkedProps.value.label), 1)) : createCommentVNode("v-if", true), createElementVNode("button", {
|
|
332
342
|
class: "close",
|
|
333
343
|
type: "button",
|
|
334
344
|
"aria-label": "Close",
|
|
335
345
|
ref_key: "closeElement",
|
|
336
346
|
ref: closeElement
|
|
337
|
-
}, null, 512)]),
|
|
338
|
-
createElementVNode("div",
|
|
347
|
+
}, null, 512)], 512),
|
|
348
|
+
createElementVNode("div", {
|
|
349
|
+
class: "body",
|
|
350
|
+
ref_key: "bodyElement",
|
|
351
|
+
ref: bodyElement
|
|
352
|
+
}, [createVNode(UiScrollArea_default, { trim: true }, {
|
|
339
353
|
default: withCtx(() => [renderSlot(_ctx.$slots, "default", {}, void 0, true)]),
|
|
340
354
|
_: 3
|
|
341
|
-
})]),
|
|
342
|
-
createElementVNode("footer",
|
|
355
|
+
})], 512),
|
|
356
|
+
createElementVNode("footer", {
|
|
357
|
+
ref_key: "footerElement",
|
|
358
|
+
ref: footerElement
|
|
359
|
+
}, [renderSlot(_ctx.$slots, "actions", {}, void 0, true)], 512)
|
|
343
360
|
], 16, _hoisted_1)), [[unref(vPropValidity), {
|
|
344
361
|
contract: propValidityContract,
|
|
345
362
|
values: { ...props }
|
|
346
363
|
}]]);
|
|
347
364
|
};
|
|
348
365
|
}
|
|
349
|
-
}), [["__scopeId", "data-v-
|
|
366
|
+
}), [["__scopeId", "data-v-1ec9644b"]]);
|
|
350
367
|
//#endregion
|
|
351
368
|
export { UiDialog_default as t };
|
|
@@ -613,6 +613,6 @@ var UiEditorMentionMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_defaul
|
|
|
613
613
|
}]]);
|
|
614
614
|
};
|
|
615
615
|
}
|
|
616
|
-
}), [["__scopeId", "data-v-
|
|
616
|
+
}), [["__scopeId", "data-v-f27cd779"]]);
|
|
617
617
|
//#endregion
|
|
618
618
|
export { UiEditorMentionMenu_default as t };
|
|
@@ -538,6 +538,6 @@ var UiEditorSlashMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(
|
|
|
538
538
|
}]]);
|
|
539
539
|
};
|
|
540
540
|
}
|
|
541
|
-
}), [["__scopeId", "data-v-
|
|
541
|
+
}), [["__scopeId", "data-v-a85c3b18"]]);
|
|
542
542
|
//#endregion
|
|
543
543
|
export { UiEditorSlashMenu_default as t };
|
|
@@ -547,6 +547,6 @@ var UiEditorTableContextMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_d
|
|
|
547
547
|
}]]);
|
|
548
548
|
};
|
|
549
549
|
}
|
|
550
|
-
}), [["__scopeId", "data-v-
|
|
550
|
+
}), [["__scopeId", "data-v-f2ebbbc8"]]);
|
|
551
551
|
//#endregion
|
|
552
552
|
export { UiEditorTableContextMenu_default as t };
|
|
@@ -737,6 +737,6 @@ var UiEditorTableToolbar_default = /*#__PURE__*/ _plugin_vue_export_helper_defau
|
|
|
737
737
|
}]]);
|
|
738
738
|
};
|
|
739
739
|
}
|
|
740
|
-
}), [["__scopeId", "data-v-
|
|
740
|
+
}), [["__scopeId", "data-v-8c2d4497"]]);
|
|
741
741
|
//#endregion
|
|
742
742
|
export { UiEditorTableToolbar_default as t };
|
package/vue/chunks/UiListbox.js
CHANGED
|
@@ -19,22 +19,23 @@ var _hoisted_1 = [
|
|
|
19
19
|
"data-value",
|
|
20
20
|
"data-values"
|
|
21
21
|
];
|
|
22
|
-
var _hoisted_2 =
|
|
22
|
+
var _hoisted_2 = { class: "choices" };
|
|
23
|
+
var _hoisted_3 = [
|
|
23
24
|
"data-multiple",
|
|
24
25
|
"id",
|
|
25
26
|
"data-index",
|
|
26
27
|
"aria-selected",
|
|
27
28
|
"aria-disabled"
|
|
28
29
|
];
|
|
29
|
-
var
|
|
30
|
+
var _hoisted_4 = [
|
|
30
31
|
"size",
|
|
31
32
|
"multiple",
|
|
32
33
|
"disabled",
|
|
33
34
|
"required",
|
|
34
35
|
"name"
|
|
35
36
|
];
|
|
36
|
-
var
|
|
37
|
-
var
|
|
37
|
+
var _hoisted_5 = ["name", "^value"];
|
|
38
|
+
var _hoisted_6 = [
|
|
38
39
|
"required",
|
|
39
40
|
"^checked",
|
|
40
41
|
"disabled"
|
|
@@ -498,8 +499,7 @@ var UiListbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
|
|
|
498
499
|
ref_key: "root",
|
|
499
500
|
ref: root
|
|
500
501
|
}), [
|
|
501
|
-
createVNode(UiScrollArea_default, {
|
|
502
|
-
class: "choices",
|
|
502
|
+
createElementVNode("div", _hoisted_2, [createVNode(UiScrollArea_default, {
|
|
503
503
|
ref_key: "choicesElement",
|
|
504
504
|
ref: choicesElement
|
|
505
505
|
}, {
|
|
@@ -515,12 +515,12 @@ var UiListbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
|
|
|
515
515
|
"data-index": choice.index,
|
|
516
516
|
"aria-selected": choice.selected,
|
|
517
517
|
"aria-disabled": choice.disabled
|
|
518
|
-
}, [createElementVNode("span", null, toDisplayString(choice.label), 1)], 10,
|
|
518
|
+
}, [createElementVNode("span", null, toDisplayString(choice.label), 1)], 10, _hoisted_3);
|
|
519
519
|
}), 128))]),
|
|
520
520
|
_: 1
|
|
521
521
|
})]),
|
|
522
522
|
_: 1
|
|
523
|
-
}, 512),
|
|
523
|
+
}, 512)]),
|
|
524
524
|
createElementVNode("select", {
|
|
525
525
|
class: "fallback",
|
|
526
526
|
"aria-label": "Choices",
|
|
@@ -531,14 +531,14 @@ var UiListbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
|
|
|
531
531
|
name: checkedProps.value.name ?? void 0,
|
|
532
532
|
ref_key: "optionsElement",
|
|
533
533
|
ref: optionsElement
|
|
534
|
-
}, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 8,
|
|
534
|
+
}, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 8, _hoisted_4),
|
|
535
535
|
checkedProps.value.name && !checkedProps.value.disabled ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(selection.value, (selected, indexLoop) => {
|
|
536
536
|
return openBlock(), createElementBlock("input", {
|
|
537
537
|
key: indexLoop,
|
|
538
538
|
type: "hidden",
|
|
539
539
|
name: checkedProps.value.name ?? void 0,
|
|
540
540
|
"^value": selected
|
|
541
|
-
}, null, 8,
|
|
541
|
+
}, null, 8, _hoisted_5);
|
|
542
542
|
}), 128)) : createCommentVNode("v-if", true),
|
|
543
543
|
createElementVNode("input", {
|
|
544
544
|
class: "validity",
|
|
@@ -550,13 +550,13 @@ var UiListbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
|
|
|
550
550
|
disabled: checkedProps.value.disabled ?? void 0,
|
|
551
551
|
ref_key: "validityElement",
|
|
552
552
|
ref: validityElement
|
|
553
|
-
}, null, 8,
|
|
553
|
+
}, null, 8, _hoisted_6)
|
|
554
554
|
], 16, _hoisted_1)), [[unref(vPropValidity), {
|
|
555
555
|
contract: propValidityContract,
|
|
556
556
|
values: { ...props }
|
|
557
557
|
}]]);
|
|
558
558
|
};
|
|
559
559
|
}
|
|
560
|
-
}), [["__scopeId", "data-v-
|
|
560
|
+
}), [["__scopeId", "data-v-e7a8688c"]]);
|
|
561
561
|
//#endregion
|
|
562
562
|
export { UiListbox_default as t };
|
|
@@ -6,6 +6,7 @@ import { computed, createElementBlock, createElementVNode, defineComponent, getC
|
|
|
6
6
|
var _hoisted_1 = [
|
|
7
7
|
"data-fill",
|
|
8
8
|
"data-orientation",
|
|
9
|
+
"data-padding",
|
|
9
10
|
"data-size",
|
|
10
11
|
"data-trim",
|
|
11
12
|
"data-ui-scroll-area-state"
|
|
@@ -24,6 +25,10 @@ var UiScrollArea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
|
|
|
24
25
|
type: null,
|
|
25
26
|
default: "vertical"
|
|
26
27
|
},
|
|
28
|
+
padding: {
|
|
29
|
+
type: null,
|
|
30
|
+
default: "none"
|
|
31
|
+
},
|
|
27
32
|
size: {
|
|
28
33
|
type: null,
|
|
29
34
|
default: "content"
|
|
@@ -56,6 +61,23 @@ var UiScrollArea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
|
|
|
56
61
|
values: ["vertical", "horizontal"],
|
|
57
62
|
default: "vertical"
|
|
58
63
|
},
|
|
64
|
+
padding: {
|
|
65
|
+
type: {
|
|
66
|
+
kind: "terminal",
|
|
67
|
+
name: "keyword"
|
|
68
|
+
},
|
|
69
|
+
required: false,
|
|
70
|
+
target: { attribute: "padding" },
|
|
71
|
+
description: "The space inside the scrolling region, on Card's scale: xs is 0.5rem, sm 0.75rem, md 1.5rem, and lg 2rem. It scrolls with the content, so the scrollbar and\n fades stay at the edges.",
|
|
72
|
+
values: [
|
|
73
|
+
"none",
|
|
74
|
+
"xs",
|
|
75
|
+
"sm",
|
|
76
|
+
"md",
|
|
77
|
+
"lg"
|
|
78
|
+
],
|
|
79
|
+
default: "none"
|
|
80
|
+
},
|
|
59
81
|
size: {
|
|
60
82
|
type: {
|
|
61
83
|
kind: "terminal",
|
|
@@ -87,6 +109,7 @@ var UiScrollArea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
|
|
|
87
109
|
const acceptedProps = {
|
|
88
110
|
fill: false,
|
|
89
111
|
orientation: "vertical",
|
|
112
|
+
padding: "none",
|
|
90
113
|
size: "content",
|
|
91
114
|
trim: false
|
|
92
115
|
};
|
|
@@ -99,6 +122,10 @@ var UiScrollArea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
|
|
|
99
122
|
kind: "terminal",
|
|
100
123
|
name: "keyword"
|
|
101
124
|
}, false, "orientation", acceptedProps),
|
|
125
|
+
padding: checkedProp(props["padding"], {
|
|
126
|
+
kind: "terminal",
|
|
127
|
+
name: "keyword"
|
|
128
|
+
}, false, "padding", acceptedProps),
|
|
102
129
|
size: checkedProp(props["size"], {
|
|
103
130
|
kind: "terminal",
|
|
104
131
|
name: "keyword"
|
|
@@ -142,7 +169,9 @@ var UiScrollArea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
|
|
|
142
169
|
checkedProps.value.orientation && "orientation",
|
|
143
170
|
checkedProps.value.orientation != null && `orientation=${encodeURIComponent(checkedProps.value.orientation)}`,
|
|
144
171
|
checkedProps.value.size && "size",
|
|
145
|
-
checkedProps.value.size != null && `size=${encodeURIComponent(checkedProps.value.size)}
|
|
172
|
+
checkedProps.value.size != null && `size=${encodeURIComponent(checkedProps.value.size)}`,
|
|
173
|
+
checkedProps.value.padding && "padding",
|
|
174
|
+
checkedProps.value.padding != null && `padding=${encodeURIComponent(checkedProps.value.padding)}`
|
|
146
175
|
].filter(Boolean).join(" "));
|
|
147
176
|
const dispatch = createDispatch(root);
|
|
148
177
|
useComponentHost(() => import("@threadlabs/looma/components/ui-scroll-area/ui-scroll-area.js"), {
|
|
@@ -161,6 +190,7 @@ var UiScrollArea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
|
|
|
161
190
|
propNames: [
|
|
162
191
|
"fill",
|
|
163
192
|
"orientation",
|
|
193
|
+
"padding",
|
|
164
194
|
"size",
|
|
165
195
|
"trim"
|
|
166
196
|
],
|
|
@@ -174,6 +204,7 @@ var UiScrollArea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
|
|
|
174
204
|
return withDirectives((openBlock(), createElementBlock("div", mergeProps({ "data-component": "ui-scroll-area" }, nativeAttrs(_ctx.$attrs), {
|
|
175
205
|
"data-fill": reflectedProp("fill", "fill", checkedProps.value.fill, void 0, false),
|
|
176
206
|
"data-orientation": reflectedProp("orientation", "orientation", checkedProps.value.orientation, void 0, false),
|
|
207
|
+
"data-padding": reflectedProp("padding", "padding", checkedProps.value.padding, void 0, false),
|
|
177
208
|
"data-size": reflectedProp("size", "size", checkedProps.value.size, void 0, false),
|
|
178
209
|
"data-trim": reflectedProp("trim", "trim", checkedProps.value.trim, void 0, false),
|
|
179
210
|
"data-ui-scroll-area-state": hostState.value || void 0,
|
|
@@ -189,6 +220,6 @@ var UiScrollArea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
|
|
|
189
220
|
}]]);
|
|
190
221
|
};
|
|
191
222
|
}
|
|
192
|
-
}), [["__scopeId", "data-v-
|
|
223
|
+
}), [["__scopeId", "data-v-9a5bb175"]]);
|
|
193
224
|
//#endregion
|
|
194
225
|
export { UiScrollArea_default as t };
|
package/vue/chunks/UiSection.js
CHANGED