@sentropic/design-system-vue 0.36.57 → 0.36.59
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/dist/AppShell.d.ts +71 -2
- package/dist/AppShell.d.ts.map +1 -1
- package/dist/AppShell.js +190 -5
- package/dist/AppShell.js.map +1 -1
- package/dist/BarChart.d.ts +1 -1
- package/dist/BulletChart.d.ts +1 -1
- package/dist/CheckboxGroup.d.ts +1 -1
- package/dist/ColumnRangeChart.d.ts +1 -1
- package/dist/FunnelChart.d.ts +1 -1
- package/dist/LollipopChart.d.ts +1 -1
- package/dist/MenuPopover.d.ts +48 -4
- package/dist/MenuPopover.d.ts.map +1 -1
- package/dist/MenuPopover.js +126 -12
- package/dist/MenuPopover.js.map +1 -1
- package/dist/PanelSection.d.ts +50 -0
- package/dist/PanelSection.d.ts.map +1 -0
- package/dist/PanelSection.js +102 -0
- package/dist/PanelSection.js.map +1 -0
- package/dist/PanelStack.d.ts +158 -0
- package/dist/PanelStack.d.ts.map +1 -0
- package/dist/PanelStack.js +437 -0
- package/dist/PanelStack.js.map +1 -0
- package/dist/Popper.d.ts +1 -1
- package/dist/Popper.d.ts.map +1 -1
- package/dist/RadioGroup.d.ts +1 -1
- package/dist/TreeView.d.ts +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/styles.css +210 -5
- package/package.json +1 -1
package/dist/MenuPopover.js
CHANGED
|
@@ -1,30 +1,144 @@
|
|
|
1
|
-
import { defineComponent, h } from "vue";
|
|
1
|
+
import { defineComponent, h, onUnmounted, ref, watch } from "vue";
|
|
2
2
|
import { classNames } from "./classNames.js";
|
|
3
3
|
import { Menu } from "./Menu.js";
|
|
4
|
+
// Anchor spacing between panel and trigger.
|
|
5
|
+
const MENU_POPOVER_GAP = 4;
|
|
6
|
+
// Anti-overflow margin between the panel and the viewport edge.
|
|
7
|
+
const MENU_POPOVER_VIEWPORT_MARGIN = 8;
|
|
8
|
+
// Height floor: below this threshold we keep a usable scrollable window
|
|
9
|
+
// rather than a crushed menu (rare case of a trigger glued to the edge).
|
|
10
|
+
const MENU_POPOVER_MIN_HEIGHT = 160;
|
|
11
|
+
function menuPopoverIsWithin(event, node) {
|
|
12
|
+
if (!node)
|
|
13
|
+
return false;
|
|
14
|
+
const path = typeof event.composedPath === "function"
|
|
15
|
+
? event.composedPath()
|
|
16
|
+
: [];
|
|
17
|
+
if (path.includes(node))
|
|
18
|
+
return true;
|
|
19
|
+
const target = event.target;
|
|
20
|
+
return Boolean(target && node.contains(target));
|
|
21
|
+
}
|
|
4
22
|
export const MenuPopover = defineComponent({
|
|
5
23
|
name: "MenuPopover",
|
|
6
24
|
props: {
|
|
7
25
|
items: { type: Array, default: () => [] },
|
|
8
|
-
open: { type: Boolean, default:
|
|
26
|
+
open: { type: Boolean, default: undefined },
|
|
27
|
+
trigger: { type: Object, default: null },
|
|
9
28
|
placement: { type: String, default: "bottom-start" },
|
|
29
|
+
align: { type: String, default: undefined },
|
|
10
30
|
label: { type: String, default: undefined },
|
|
11
31
|
class: { type: String, default: undefined },
|
|
32
|
+
closeOnOutside: { type: Boolean, default: true },
|
|
33
|
+
closeOnEscape: { type: Boolean, default: true },
|
|
12
34
|
},
|
|
13
|
-
|
|
35
|
+
emits: ["update:open"],
|
|
36
|
+
setup(props, { emit, slots, attrs }) {
|
|
37
|
+
const localOpen = ref(props.open ?? false);
|
|
38
|
+
const panelRef = ref(null);
|
|
39
|
+
const top = ref(0);
|
|
40
|
+
const left = ref(0);
|
|
41
|
+
const maxHeight = ref(0);
|
|
42
|
+
const alignEnd = ref(false);
|
|
43
|
+
const alignCenter = ref(false);
|
|
44
|
+
const isOpen = () => (props.open !== undefined ? props.open : localOpen.value);
|
|
45
|
+
const setOpen = (value) => {
|
|
46
|
+
if (props.open === undefined)
|
|
47
|
+
localOpen.value = value;
|
|
48
|
+
emit("update:open", value);
|
|
49
|
+
};
|
|
50
|
+
function computePosition() {
|
|
51
|
+
const trigger = props.trigger;
|
|
52
|
+
if (!trigger)
|
|
53
|
+
return;
|
|
54
|
+
const rect = trigger.getBoundingClientRect();
|
|
55
|
+
const verticalUp = props.placement === "top-start" || props.placement === "top-end";
|
|
56
|
+
const horizontalEnd = props.placement === "bottom-end" || props.placement === "top-end";
|
|
57
|
+
const resolvedAlign = props.align ?? (horizontalEnd ? "end" : "start");
|
|
58
|
+
alignEnd.value = resolvedAlign === "end";
|
|
59
|
+
alignCenter.value = resolvedAlign === "center";
|
|
60
|
+
if (verticalUp) {
|
|
61
|
+
// Panel bottom edge sits above the trigger (transform handles the
|
|
62
|
+
// flip); available space is what's ABOVE the trigger.
|
|
63
|
+
top.value = rect.top + window.scrollY - MENU_POPOVER_GAP;
|
|
64
|
+
maxHeight.value = Math.max(rect.top - MENU_POPOVER_GAP - MENU_POPOVER_VIEWPORT_MARGIN, MENU_POPOVER_MIN_HEIGHT);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
top.value = rect.bottom + window.scrollY + MENU_POPOVER_GAP;
|
|
68
|
+
// Space actually available BELOW the trigger — `max-height: 100vh`
|
|
69
|
+
// alone ignores the panel's offset and overflows past the bottom edge.
|
|
70
|
+
maxHeight.value = Math.max(window.innerHeight - rect.bottom - MENU_POPOVER_GAP - MENU_POPOVER_VIEWPORT_MARGIN, MENU_POPOVER_MIN_HEIGHT);
|
|
71
|
+
}
|
|
72
|
+
if (resolvedAlign === "end") {
|
|
73
|
+
left.value = rect.right + window.scrollX;
|
|
74
|
+
}
|
|
75
|
+
else if (resolvedAlign === "center") {
|
|
76
|
+
left.value = rect.left + window.scrollX + rect.width / 2;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
left.value = rect.left + window.scrollX;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
let stopPositionTracking = null;
|
|
83
|
+
let stopCloseHandlers = null;
|
|
84
|
+
const teardown = () => {
|
|
85
|
+
stopPositionTracking?.();
|
|
86
|
+
stopPositionTracking = null;
|
|
87
|
+
stopCloseHandlers?.();
|
|
88
|
+
stopCloseHandlers = null;
|
|
89
|
+
};
|
|
90
|
+
watch(() => isOpen(), (openNow) => {
|
|
91
|
+
teardown();
|
|
92
|
+
if (!openNow)
|
|
93
|
+
return;
|
|
94
|
+
computePosition();
|
|
95
|
+
const onScroll = () => computePosition();
|
|
96
|
+
const onResize = () => computePosition();
|
|
97
|
+
window.addEventListener("scroll", onScroll, true);
|
|
98
|
+
window.addEventListener("resize", onResize);
|
|
99
|
+
stopPositionTracking = () => {
|
|
100
|
+
window.removeEventListener("scroll", onScroll, true);
|
|
101
|
+
window.removeEventListener("resize", onResize);
|
|
102
|
+
};
|
|
103
|
+
const onPointerDown = (event) => {
|
|
104
|
+
if (!props.closeOnOutside)
|
|
105
|
+
return;
|
|
106
|
+
if (menuPopoverIsWithin(event, panelRef.value))
|
|
107
|
+
return;
|
|
108
|
+
if (menuPopoverIsWithin(event, props.trigger))
|
|
109
|
+
return;
|
|
110
|
+
setOpen(false);
|
|
111
|
+
};
|
|
112
|
+
const onKeyDown = (event) => {
|
|
113
|
+
if (!props.closeOnEscape)
|
|
114
|
+
return;
|
|
115
|
+
if (event.key === "Escape") {
|
|
116
|
+
event.preventDefault();
|
|
117
|
+
setOpen(false);
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
window.addEventListener("pointerdown", onPointerDown);
|
|
121
|
+
window.addEventListener("keydown", onKeyDown);
|
|
122
|
+
stopCloseHandlers = () => {
|
|
123
|
+
window.removeEventListener("pointerdown", onPointerDown);
|
|
124
|
+
window.removeEventListener("keydown", onKeyDown);
|
|
125
|
+
};
|
|
126
|
+
}, { immediate: true });
|
|
127
|
+
onUnmounted(teardown);
|
|
14
128
|
return () => {
|
|
129
|
+
if (!isOpen())
|
|
130
|
+
return null;
|
|
131
|
+
const style = { top: `${top.value}px`, left: `${left.value}px` };
|
|
132
|
+
if (maxHeight.value)
|
|
133
|
+
style.maxHeight = `${maxHeight.value}px`;
|
|
15
134
|
return h("div", {
|
|
16
135
|
...attrs,
|
|
136
|
+
ref: panelRef,
|
|
17
137
|
role: "dialog",
|
|
18
138
|
"aria-label": props.label,
|
|
19
|
-
class: classNames("st-menuPopover", `st-menuPopover--${props.placement}`, props.class),
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
props.open
|
|
23
|
-
? h("div", { class: "st-menuPopover__content" }, props.items && props.items.length
|
|
24
|
-
? h(Menu, { items: props.items, role: "presentation" })
|
|
25
|
-
: slots.default?.())
|
|
26
|
-
: null,
|
|
27
|
-
]);
|
|
139
|
+
class: classNames("st-menuPopover", `st-menuPopover--${props.placement}`, alignEnd.value ? "st-menuPopover--alignEnd" : null, alignCenter.value ? "st-menuPopover--alignCenter" : null, props.class),
|
|
140
|
+
style,
|
|
141
|
+
}, props.items && props.items.length ? h(Menu, { items: props.items, role: "presentation" }) : slots.default?.());
|
|
28
142
|
};
|
|
29
143
|
},
|
|
30
144
|
});
|
package/dist/MenuPopover.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuPopover.js","sourceRoot":"","sources":["../src/MenuPopover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"MenuPopover.js","sourceRoot":"","sources":["../src/MenuPopover.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export type PanelSectionProps = {
|
|
2
|
+
id: string;
|
|
3
|
+
label: string;
|
|
4
|
+
class?: string;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* One collapsible region inside a {@link PanelStack}. Registers itself with
|
|
8
|
+
* the parent stack (via provide/inject) on mount, in DOM order, so the stack
|
|
9
|
+
* can resolve its scroll-owner fallbacks. A PanelSection outside a PanelStack
|
|
10
|
+
* (no injected context) falls back to a fully expanded, scroll-owning,
|
|
11
|
+
* non-primary section so it still renders sanely in isolation — but the
|
|
12
|
+
* component is designed to always live inside a stack.
|
|
13
|
+
*
|
|
14
|
+
* Content (default slot) is mounted once and only ever hidden/resized via
|
|
15
|
+
* CSS classes on collapse — never removed from the DOM — so a chat session,
|
|
16
|
+
* map or other stateful widget survives collapse/expand without remounting.
|
|
17
|
+
* Slots: default (content), actions (header-trailing controls).
|
|
18
|
+
*/
|
|
19
|
+
export declare const PanelSection: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
20
|
+
id: {
|
|
21
|
+
type: StringConstructor;
|
|
22
|
+
required: true;
|
|
23
|
+
};
|
|
24
|
+
label: {
|
|
25
|
+
type: StringConstructor;
|
|
26
|
+
required: true;
|
|
27
|
+
};
|
|
28
|
+
class: {
|
|
29
|
+
type: StringConstructor;
|
|
30
|
+
default: undefined;
|
|
31
|
+
};
|
|
32
|
+
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
33
|
+
[key: string]: any;
|
|
34
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
35
|
+
id: {
|
|
36
|
+
type: StringConstructor;
|
|
37
|
+
required: true;
|
|
38
|
+
};
|
|
39
|
+
label: {
|
|
40
|
+
type: StringConstructor;
|
|
41
|
+
required: true;
|
|
42
|
+
};
|
|
43
|
+
class: {
|
|
44
|
+
type: StringConstructor;
|
|
45
|
+
default: undefined;
|
|
46
|
+
};
|
|
47
|
+
}>> & Readonly<{}>, {
|
|
48
|
+
class: string;
|
|
49
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
50
|
+
//# sourceMappingURL=PanelSection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PanelSection.d.ts","sourceRoot":"","sources":["../src/PanelSection.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EAqHvB,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { defineComponent, h, inject, onBeforeUnmount, onMounted, ref, watch, } from "vue";
|
|
2
|
+
import { ChevronDown } from "lucide-vue-next";
|
|
3
|
+
import { classNames } from "./classNames.js";
|
|
4
|
+
import { PANEL_STACK_KEY } from "./PanelStack.js";
|
|
5
|
+
/**
|
|
6
|
+
* One collapsible region inside a {@link PanelStack}. Registers itself with
|
|
7
|
+
* the parent stack (via provide/inject) on mount, in DOM order, so the stack
|
|
8
|
+
* can resolve its scroll-owner fallbacks. A PanelSection outside a PanelStack
|
|
9
|
+
* (no injected context) falls back to a fully expanded, scroll-owning,
|
|
10
|
+
* non-primary section so it still renders sanely in isolation — but the
|
|
11
|
+
* component is designed to always live inside a stack.
|
|
12
|
+
*
|
|
13
|
+
* Content (default slot) is mounted once and only ever hidden/resized via
|
|
14
|
+
* CSS classes on collapse — never removed from the DOM — so a chat session,
|
|
15
|
+
* map or other stateful widget survives collapse/expand without remounting.
|
|
16
|
+
* Slots: default (content), actions (header-trailing controls).
|
|
17
|
+
*/
|
|
18
|
+
export const PanelSection = defineComponent({
|
|
19
|
+
name: "PanelSection",
|
|
20
|
+
props: {
|
|
21
|
+
id: { type: String, required: true },
|
|
22
|
+
label: { type: String, required: true },
|
|
23
|
+
class: { type: String, default: undefined },
|
|
24
|
+
},
|
|
25
|
+
setup(props, { slots, attrs }) {
|
|
26
|
+
const stack = inject(PANEL_STACK_KEY, undefined);
|
|
27
|
+
const rootEl = ref(null);
|
|
28
|
+
const headerEl = ref(null);
|
|
29
|
+
// Register with the parent stack (mount order) so it can fall back to
|
|
30
|
+
// "the first section" whenever nothing else designates a scroll owner
|
|
31
|
+
// (unset or stale `expanded`/`primary`) — see PanelStack.ts's `register`.
|
|
32
|
+
// Same register-in-onMounted / return-the-unregister-callback idiom as
|
|
33
|
+
// SelectableRow.
|
|
34
|
+
let unregister = null;
|
|
35
|
+
function doRegister() {
|
|
36
|
+
unregister?.();
|
|
37
|
+
unregister = null;
|
|
38
|
+
if (stack && rootEl.value && headerEl.value) {
|
|
39
|
+
unregister = stack.register(props.id, rootEl.value, headerEl.value);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
onMounted(() => doRegister());
|
|
43
|
+
// Re-register under the new id if it ever changes while mounted.
|
|
44
|
+
watch(() => props.id, () => doRegister());
|
|
45
|
+
onBeforeUnmount(() => {
|
|
46
|
+
unregister?.();
|
|
47
|
+
unregister = null;
|
|
48
|
+
});
|
|
49
|
+
function onTriggerClick() {
|
|
50
|
+
stack?.toggle(props.id);
|
|
51
|
+
}
|
|
52
|
+
return () => {
|
|
53
|
+
const triggerId = `st-panelSection-trigger-${props.id}`;
|
|
54
|
+
const regionId = `st-panelSection-region-${props.id}`;
|
|
55
|
+
const isPrimary = stack?.isPrimary(props.id) ?? false;
|
|
56
|
+
const expanded = stack?.isExpanded(props.id) ?? true;
|
|
57
|
+
const scrollOwner = stack?.isScrollOwner(props.id) ?? true;
|
|
58
|
+
const rootClasses = classNames("st-panelSection", scrollOwner && "st-panelSection--scrollOwner", props.class);
|
|
59
|
+
const bodyClasses = classNames("st-panelSection__body", scrollOwner
|
|
60
|
+
? "st-panelSection__body--scrollOwner"
|
|
61
|
+
: !expanded
|
|
62
|
+
? "st-panelSection__body--collapsed"
|
|
63
|
+
: null);
|
|
64
|
+
const headingChild = isPrimary
|
|
65
|
+
? h("span", { class: "st-panelSection__title st-panelSection__title--primary", id: triggerId }, props.label)
|
|
66
|
+
: h("button", {
|
|
67
|
+
type: "button",
|
|
68
|
+
class: "st-panelSection__trigger",
|
|
69
|
+
"aria-expanded": expanded ? "true" : "false",
|
|
70
|
+
"aria-controls": regionId,
|
|
71
|
+
id: triggerId,
|
|
72
|
+
onClick: onTriggerClick,
|
|
73
|
+
}, [
|
|
74
|
+
h("span", { class: "st-panelSection__title" }, props.label),
|
|
75
|
+
h("span", {
|
|
76
|
+
class: classNames("st-panelSection__icon", expanded && "st-panelSection__icon--expanded"),
|
|
77
|
+
"aria-hidden": "true",
|
|
78
|
+
}, [h(ChevronDown, { size: 18, strokeWidth: 2.25, "aria-hidden": "true" })]),
|
|
79
|
+
]);
|
|
80
|
+
return h("div", {
|
|
81
|
+
...attrs,
|
|
82
|
+
class: rootClasses,
|
|
83
|
+
"data-panel-section-id": props.id,
|
|
84
|
+
ref: rootEl,
|
|
85
|
+
}, [
|
|
86
|
+
h("div", { class: "st-panelSection__header", ref: headerEl }, [
|
|
87
|
+
h("h3", { class: "st-panelSection__heading" }, [headingChild]),
|
|
88
|
+
slots.actions ? h("div", { class: "st-panelSection__actions" }, slots.actions()) : null,
|
|
89
|
+
]),
|
|
90
|
+
// Mounted once, always — collapsing is purely a class/CSS concern
|
|
91
|
+
// (sizing + hiding this region), never a conditional block.
|
|
92
|
+
h("div", {
|
|
93
|
+
class: bodyClasses,
|
|
94
|
+
role: "region",
|
|
95
|
+
id: regionId,
|
|
96
|
+
"aria-labelledby": triggerId,
|
|
97
|
+
}, slots.default?.()),
|
|
98
|
+
]);
|
|
99
|
+
};
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
//# sourceMappingURL=PanelSection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PanelSection.js","sourceRoot":"","sources":["../src/PanelSection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { type InjectionKey, type PropType } from "vue";
|
|
2
|
+
export type PanelStackShape = "split-primary" | "sticky-item";
|
|
3
|
+
/**
|
|
4
|
+
* Bound ratified by the chat consumer lane: beyond 4 sections, stacking
|
|
5
|
+
* collapsible regions in a pane capped at 640px makes scrolling unmanageable
|
|
6
|
+
* and the single-owner rule becomes untenable. Enforced as a dev-time
|
|
7
|
+
* `console.warn` in `register()` (this package's established convention —
|
|
8
|
+
* see NavActionStack/WaterfallChart — is to warn and degrade, never throw or
|
|
9
|
+
* silently truncate); exported here so the bound is also visible through
|
|
10
|
+
* types/docs to a consumer reading `PanelStackProps`.
|
|
11
|
+
*/
|
|
12
|
+
export declare const PANEL_STACK_MAX_SECTIONS = 4;
|
|
13
|
+
export type PanelStackProps = {
|
|
14
|
+
/** "sticky-item" (default): one section expanded at a time, all headers stay visible.
|
|
15
|
+
"split-primary": the `primary` section is always expanded and owns the scroll;
|
|
16
|
+
the others are content-sized disclosures. */
|
|
17
|
+
shape?: PanelStackShape;
|
|
18
|
+
/** Accessible name for the stack region. */
|
|
19
|
+
label?: string;
|
|
20
|
+
/** sticky-item, controlled: id of the expanded section. */
|
|
21
|
+
expanded?: string | null;
|
|
22
|
+
/** sticky-item, uncontrolled seed. */
|
|
23
|
+
defaultExpanded?: string | null;
|
|
24
|
+
onExpandedChange?: (id: string | null) => void;
|
|
25
|
+
/**
|
|
26
|
+
* split-primary: id of the section that owns the scroll. Falls back to the
|
|
27
|
+
* first EXPANDED section (DOM order) when unset or stale, and — if nothing
|
|
28
|
+
* is expanded — to the first registered section, so the stack never
|
|
29
|
+
* degrades to zero scroll owners.
|
|
30
|
+
*/
|
|
31
|
+
primary?: string;
|
|
32
|
+
/** Usable floor for the primary section, in px. While the primary sits above it the
|
|
33
|
+
primary absorbs overflow; once it would drop below, a secondary auto-collapses
|
|
34
|
+
instead of compressing the primary further. Default 160. */
|
|
35
|
+
primaryMinHeight?: number;
|
|
36
|
+
class?: string;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Context contract shared with PanelSection. Every shape-dependent branch
|
|
40
|
+
* (sticky-item vs split-primary) is decided HERE and only here — PanelSection
|
|
41
|
+
* never reads `shape`, it only calls these four functions/callback. If the
|
|
42
|
+
* consumer-lane contract for these two shapes changes, this is the one place
|
|
43
|
+
* to touch.
|
|
44
|
+
*/
|
|
45
|
+
export declare const PANEL_STACK_KEY: InjectionKey<PanelStackContext>;
|
|
46
|
+
export type PanelStackContext = {
|
|
47
|
+
/** Is this section the (non-collapsible) primary of a split-primary stack? */
|
|
48
|
+
isPrimary: (id: string) => boolean;
|
|
49
|
+
/** Is this section currently expanded (body visible, content-sized or scrolling)? */
|
|
50
|
+
isExpanded: (id: string) => boolean;
|
|
51
|
+
/** Is this section's body THE single scroll owner right now (flex:1 1 0, overflow:auto)? */
|
|
52
|
+
isScrollOwner: (id: string) => boolean;
|
|
53
|
+
/** Header was activated (click / Space / Enter on the disclosure button). */
|
|
54
|
+
toggle: (id: string) => void;
|
|
55
|
+
/**
|
|
56
|
+
* Register a section's root AND header element, in mount/DOM order;
|
|
57
|
+
* returns an unregister callback. NOT just bookkeeping — the stack falls
|
|
58
|
+
* back to the first registered section as the scroll owner whenever
|
|
59
|
+
* nothing else designates one (unset/stale `expanded` or `primary`), so
|
|
60
|
+
* the invariant "exactly one scroll owner whenever the stack has ≥1
|
|
61
|
+
* section" holds even for a misconfigured or dynamically-changing stack.
|
|
62
|
+
* `headerEl` is used only by split-primary's auto-collapse measurement
|
|
63
|
+
* (the header of whichever section is CURRENTLY primary is observed for
|
|
64
|
+
* its height); sticky-item ignores it.
|
|
65
|
+
*/
|
|
66
|
+
register: (id: string, rootEl: HTMLElement, headerEl: HTMLElement) => () => void;
|
|
67
|
+
};
|
|
68
|
+
export declare const PRIMARY_MIN_BLOCK_SIZE_PX = 160;
|
|
69
|
+
/**
|
|
70
|
+
* Stacks several PanelSection children inside ONE panel so a docked chat can
|
|
71
|
+
* share a pane with other content. The invariant is the whole point: exactly
|
|
72
|
+
* one element in the stack has `overflow: auto` at any moment, and the stack
|
|
73
|
+
* itself NEVER scrolls — see PanelStack.svelte (the frozen reference this
|
|
74
|
+
* component mirrors) and styles.css's `.st-panelStack` rule.
|
|
75
|
+
*/
|
|
76
|
+
export declare const PanelStack: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
77
|
+
shape: {
|
|
78
|
+
type: PropType<PanelStackShape>;
|
|
79
|
+
default: string;
|
|
80
|
+
};
|
|
81
|
+
label: {
|
|
82
|
+
type: StringConstructor;
|
|
83
|
+
default: undefined;
|
|
84
|
+
};
|
|
85
|
+
expanded: {
|
|
86
|
+
type: PropType<string | null>;
|
|
87
|
+
default: undefined;
|
|
88
|
+
};
|
|
89
|
+
defaultExpanded: {
|
|
90
|
+
type: PropType<string | null>;
|
|
91
|
+
default: null;
|
|
92
|
+
};
|
|
93
|
+
onExpandedChange: {
|
|
94
|
+
type: PropType<(id: string | null) => void>;
|
|
95
|
+
default: undefined;
|
|
96
|
+
};
|
|
97
|
+
primary: {
|
|
98
|
+
type: StringConstructor;
|
|
99
|
+
default: undefined;
|
|
100
|
+
};
|
|
101
|
+
primaryMinHeight: {
|
|
102
|
+
type: NumberConstructor;
|
|
103
|
+
default: undefined;
|
|
104
|
+
};
|
|
105
|
+
class: {
|
|
106
|
+
type: StringConstructor;
|
|
107
|
+
default: undefined;
|
|
108
|
+
};
|
|
109
|
+
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
110
|
+
[key: string]: any;
|
|
111
|
+
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
112
|
+
expandedChange: (_id: string | null) => true;
|
|
113
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
114
|
+
shape: {
|
|
115
|
+
type: PropType<PanelStackShape>;
|
|
116
|
+
default: string;
|
|
117
|
+
};
|
|
118
|
+
label: {
|
|
119
|
+
type: StringConstructor;
|
|
120
|
+
default: undefined;
|
|
121
|
+
};
|
|
122
|
+
expanded: {
|
|
123
|
+
type: PropType<string | null>;
|
|
124
|
+
default: undefined;
|
|
125
|
+
};
|
|
126
|
+
defaultExpanded: {
|
|
127
|
+
type: PropType<string | null>;
|
|
128
|
+
default: null;
|
|
129
|
+
};
|
|
130
|
+
onExpandedChange: {
|
|
131
|
+
type: PropType<(id: string | null) => void>;
|
|
132
|
+
default: undefined;
|
|
133
|
+
};
|
|
134
|
+
primary: {
|
|
135
|
+
type: StringConstructor;
|
|
136
|
+
default: undefined;
|
|
137
|
+
};
|
|
138
|
+
primaryMinHeight: {
|
|
139
|
+
type: NumberConstructor;
|
|
140
|
+
default: undefined;
|
|
141
|
+
};
|
|
142
|
+
class: {
|
|
143
|
+
type: StringConstructor;
|
|
144
|
+
default: undefined;
|
|
145
|
+
};
|
|
146
|
+
}>> & Readonly<{
|
|
147
|
+
onExpandedChange?: ((_id: string | null) => any) | undefined;
|
|
148
|
+
}>, {
|
|
149
|
+
class: string;
|
|
150
|
+
label: string;
|
|
151
|
+
shape: PanelStackShape;
|
|
152
|
+
expanded: string | null;
|
|
153
|
+
primary: string;
|
|
154
|
+
defaultExpanded: string | null;
|
|
155
|
+
onExpandedChange: (id: string | null) => void;
|
|
156
|
+
primaryMinHeight: number;
|
|
157
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
158
|
+
//# sourceMappingURL=PanelStack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PanelStack.d.ts","sourceRoot":"","sources":["../src/PanelStack.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,YAAY,EACjB,KAAK,QAAQ,EACd,MAAM,KAAK,CAAC;AAGb,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,aAAa,CAAC;AAE9D;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,MAAM,MAAM,eAAe,GAAG;IAC5B;;oDAEgD;IAChD,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,sCAAsC;IACtC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;mEAE+D;IAC/D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAKF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,iBAAiB,CAA4B,CAAC;AAEzF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,8EAA8E;IAC9E,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC,qFAAqF;IACrF,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IACpC,4FAA4F;IAC5F,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,6EAA6E;IAC7E,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B;;;;;;;;;;OAUG;IACH,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,KAAK,MAAM,IAAI,CAAC;CAClF,CAAC;AA4BF,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C;;;;;;GAMG;AACH,eAAO,MAAM,UAAU;;cAGM,QAAQ,CAAC,eAAe,CAAC;;;;;;;;cAEtB,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;;;;cAChB,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;;;;cAEtC,QAAQ,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;;;;;;;;;;;;;;;;;;0BAQnC,MAAM,GAAG,IAAI;;;cAbV,QAAQ,CAAC,eAAe,CAAC;;;;;;;;cAEtB,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;;;;cAChB,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;;;;cAEtC,QAAQ,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;2BAAvB,MAAM,GAAG,IAAI,KAAK,IAAI;;4EAsY1D,CAAC"}
|