dsh-plugin-core 0.14.2 → 0.15.0
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/ui/QuickToolbar.d.ts +54 -0
- package/dist/ui/QuickToolbar.d.ts.map +1 -0
- package/dist/ui/QuickToolbar.js +241 -0
- package/dist/ui/QuickToolbar.js.map +1 -0
- package/dist/ui/controls/quick-toolbar-css.generated.d.ts +2 -0
- package/dist/ui/controls/quick-toolbar-css.generated.d.ts.map +1 -0
- package/dist/ui/controls/quick-toolbar-css.generated.js +4 -0
- package/dist/ui/controls/quick-toolbar-css.generated.js.map +1 -0
- package/dist/ui/controls-css.d.ts +1 -1
- package/dist/ui/controls-css.d.ts.map +1 -1
- package/dist/ui/controls-css.js +1 -1
- package/dist/ui/controls-css.js.map +1 -1
- package/dist/ui/index.d.ts +2 -1
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +2 -1
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/quick-toolbar-logic.d.ts +76 -0
- package/dist/ui/quick-toolbar-logic.d.ts.map +1 -0
- package/dist/ui/quick-toolbar-logic.js +40 -0
- package/dist/ui/quick-toolbar-logic.js.map +1 -0
- package/dist/utils/i18n.d.ts +1 -1
- package/dist/utils/i18n.d.ts.map +1 -1
- package/dist/utils/i18n.js +4 -0
- package/dist/utils/i18n.js.map +1 -1
- package/docs/design/external/dsh-host.md +2 -2
- package/docs/design/structure.md +7 -4
- package/docs/help/ui.doc.ts +90 -2
- package/docs/help/ui.md +83 -2
- package/docs/requirements.md +1 -0
- package/package.json +1 -1
- package/dist/ui/BackToTop.d.ts +0 -8
- package/dist/ui/BackToTop.d.ts.map +0 -1
- package/dist/ui/BackToTop.js +0 -112
- package/dist/ui/BackToTop.js.map +0 -1
- package/dist/ui/controls/back-to-top-css.generated.d.ts +0 -2
- package/dist/ui/controls/back-to-top-css.generated.d.ts.map +0 -1
- package/dist/ui/controls/back-to-top-css.generated.js +0 -4
- package/dist/ui/controls/back-to-top-css.generated.js.map +0 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 快捷工具栏(UI 基础层):**右侧悬浮的一列圆钮**,内置「回到顶部」,并可挂自定义按钮。
|
|
3
|
+
*
|
|
4
|
+
* 用法:
|
|
5
|
+
* <QuickToolbar
|
|
6
|
+
* anchorId="dshpc-main"
|
|
7
|
+
* onAction={(id) => …}
|
|
8
|
+
* items={[{ id: 'search', icon: <SearchIcon />, label: '搜索' }]}
|
|
9
|
+
* />
|
|
10
|
+
*
|
|
11
|
+
* 行为(2026-10-31 用户拍板):
|
|
12
|
+
* - **纵向恒定**贴屏幕底边,距离 `offset`(默认 16px);按钮从下往上排。
|
|
13
|
+
* - **横向默认**贴屏幕右缘、留 `offset`;给了 `anchorId` / `anchor()` 就贴到那个控件的
|
|
14
|
+
* **右缘外侧**,同样留 `offset`。右侧放不下(再留一个 `offset` 后越界)就退回贴屏幕右缘。
|
|
15
|
+
* 控件找不到按「跟随窗口」处理,不报错。
|
|
16
|
+
* - 内置「回到顶部」默认 `when: 'scroll'`、阈值 320:滚过才出现;可传 `backToTop: false` 关掉,
|
|
17
|
+
* 或用 `{ order, label, threshold }` 调整。
|
|
18
|
+
* - 自定义项:`icon` / `label` / `onClick`;`visible` / `when` / `order` / `threshold` / `color` /
|
|
19
|
+
* `fgColor` 都可配。点击后先调 `onClick`,再统一回调 `onAction(id, item)`。
|
|
20
|
+
* - 滚动容器默认取工具栏最近的「可纵向滚动」祖先,也可以显式给 `scrollContainer`。
|
|
21
|
+
* - 显隐切换带 0.2s 动画:挂载淡入,消失先淡出、播完才卸载(`reduced-motion` 下关闭)。
|
|
22
|
+
*
|
|
23
|
+
* 样式只注入自己那一份(`controls/quick-toolbar.css`),横向位置 / 尺寸 / 间距由本组件在
|
|
24
|
+
* style 上实时写入,不写死 CSS。
|
|
25
|
+
*/
|
|
26
|
+
import { createElement as h } from 'react';
|
|
27
|
+
import { type QuickToolbarBackToTop, type QuickToolbarItem } from './quick-toolbar-logic.js';
|
|
28
|
+
export interface QuickToolbarProps {
|
|
29
|
+
/** 自定义按钮;按数组顺序排在「回到顶部」下面。 */
|
|
30
|
+
items?: QuickToolbarItem[];
|
|
31
|
+
/** 内置回顶部:`false` 关掉;对象可调 `order` / `label` / `threshold`。 */
|
|
32
|
+
backToTop?: boolean | QuickToolbarBackToTop;
|
|
33
|
+
/** 自定义项点击后的统一回调(在单项 `onClick` 之后触发)。 */
|
|
34
|
+
onAction?: (id: string, item: QuickToolbarItem) => void;
|
|
35
|
+
/** 与屏幕 / 锚点右缘、屏幕底边的距离(px,默认 16)。 */
|
|
36
|
+
offset?: number;
|
|
37
|
+
/** 相邻按钮的纵向间距(px,默认 12)。 */
|
|
38
|
+
gap?: number;
|
|
39
|
+
/** 按钮直径(px,默认 44)。 */
|
|
40
|
+
size?: number;
|
|
41
|
+
/** 跟随这个 id 的控件:横向贴它的右缘外侧;不传 = 跟随窗口右缘。 */
|
|
42
|
+
anchorId?: string;
|
|
43
|
+
/** 动态锚点函数(优先于 `anchorId`):返回 null 时按跟随窗口处理。 */
|
|
44
|
+
anchor?: () => HTMLElement | null;
|
|
45
|
+
/** 滚动容器;不传则取工具栏最近的可纵向滚动祖先,再退回窗口。 */
|
|
46
|
+
scrollContainer?: HTMLElement | (() => HTMLElement | null);
|
|
47
|
+
/** 无障碍名,默认内置字典「快捷工具栏」。 */
|
|
48
|
+
ariaLabel?: string;
|
|
49
|
+
/** 追加 class(只允许补布局)。 */
|
|
50
|
+
className?: string;
|
|
51
|
+
}
|
|
52
|
+
/** 右侧浮动的快捷工具栏:内置回顶部 + 自定义按钮。 */
|
|
53
|
+
export declare function QuickToolbar(props: QuickToolbarProps): ReturnType<typeof h>;
|
|
54
|
+
//# sourceMappingURL=QuickToolbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuickToolbar.d.ts","sourceRoot":"","sources":["../../src/ui/QuickToolbar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,aAAa,IAAI,CAAC,EAAmE,MAAM,OAAO,CAAA;AAI3G,OAAO,EAKL,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EAEtB,MAAM,0BAA0B,CAAA;AAYjC,MAAM,WAAW,iBAAiB;IAChC,6BAA6B;IAC7B,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC1B,6DAA6D;IAC7D,SAAS,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAA;IAC3C,wCAAwC;IACxC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAA;IACvD,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2BAA2B;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,WAAW,GAAG,IAAI,CAAA;IACjC,oCAAoC;IACpC,eAAe,CAAC,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,CAAA;IAC1D,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA+CD,gCAAgC;AAChC,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CA6K3E"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 快捷工具栏(UI 基础层):**右侧悬浮的一列圆钮**,内置「回到顶部」,并可挂自定义按钮。
|
|
3
|
+
*
|
|
4
|
+
* 用法:
|
|
5
|
+
* <QuickToolbar
|
|
6
|
+
* anchorId="dshpc-main"
|
|
7
|
+
* onAction={(id) => …}
|
|
8
|
+
* items={[{ id: 'search', icon: <SearchIcon />, label: '搜索' }]}
|
|
9
|
+
* />
|
|
10
|
+
*
|
|
11
|
+
* 行为(2026-10-31 用户拍板):
|
|
12
|
+
* - **纵向恒定**贴屏幕底边,距离 `offset`(默认 16px);按钮从下往上排。
|
|
13
|
+
* - **横向默认**贴屏幕右缘、留 `offset`;给了 `anchorId` / `anchor()` 就贴到那个控件的
|
|
14
|
+
* **右缘外侧**,同样留 `offset`。右侧放不下(再留一个 `offset` 后越界)就退回贴屏幕右缘。
|
|
15
|
+
* 控件找不到按「跟随窗口」处理,不报错。
|
|
16
|
+
* - 内置「回到顶部」默认 `when: 'scroll'`、阈值 320:滚过才出现;可传 `backToTop: false` 关掉,
|
|
17
|
+
* 或用 `{ order, label, threshold }` 调整。
|
|
18
|
+
* - 自定义项:`icon` / `label` / `onClick`;`visible` / `when` / `order` / `threshold` / `color` /
|
|
19
|
+
* `fgColor` 都可配。点击后先调 `onClick`,再统一回调 `onAction(id, item)`。
|
|
20
|
+
* - 滚动容器默认取工具栏最近的「可纵向滚动」祖先,也可以显式给 `scrollContainer`。
|
|
21
|
+
* - 显隐切换带 0.2s 动画:挂载淡入,消失先淡出、播完才卸载(`reduced-motion` 下关闭)。
|
|
22
|
+
*
|
|
23
|
+
* 样式只注入自己那一份(`controls/quick-toolbar.css`),横向位置 / 尺寸 / 间距由本组件在
|
|
24
|
+
* style 上实时写入,不写死 CSS。
|
|
25
|
+
*/
|
|
26
|
+
import { createElement as h, useEffect, useRef, useState } from 'react';
|
|
27
|
+
import { Chevron } from './chevron.js';
|
|
28
|
+
import { ensureComponentStyles } from './css.js';
|
|
29
|
+
import { QUICK_TOOLBAR_CSS } from './controls-css.js';
|
|
30
|
+
import { DEFAULT_SCROLL_THRESHOLD, isToolbarEntryVisible, resolveToolbarLeft, sortToolbarEntries, } from './quick-toolbar-logic.js';
|
|
31
|
+
import { t } from '../utils/i18n.js';
|
|
32
|
+
/** 默认贴边距离(px)。 */
|
|
33
|
+
const DEFAULT_OFFSET = 16;
|
|
34
|
+
/** 默认按钮直径(px)。 */
|
|
35
|
+
const DEFAULT_SIZE = 44;
|
|
36
|
+
/** 默认按钮间距(px)。 */
|
|
37
|
+
const DEFAULT_GAP = 12;
|
|
38
|
+
/** 退场动画的卸载延迟(ms,与 CSS 的 0.2s 对齐并留余量)。 */
|
|
39
|
+
const LEAVE_MS = 220;
|
|
40
|
+
/** 向上找最近的「可纵向滚动」祖先。 */
|
|
41
|
+
function findScrollParent(node) {
|
|
42
|
+
let el = node?.parentElement ?? null;
|
|
43
|
+
while (el !== null) {
|
|
44
|
+
const oy = getComputedStyle(el).overflowY;
|
|
45
|
+
if (oy === 'auto' || oy === 'scroll')
|
|
46
|
+
return el;
|
|
47
|
+
el = el.parentElement;
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
/** 显式 scrollContainer 优先,其次最近的可滚动祖先,最后退回窗口。 */
|
|
52
|
+
function resolveScrollTarget(explicit, node) {
|
|
53
|
+
let target = null;
|
|
54
|
+
if (typeof explicit === 'function')
|
|
55
|
+
target = explicit();
|
|
56
|
+
else if (explicit !== undefined)
|
|
57
|
+
target = explicit;
|
|
58
|
+
if (target === null)
|
|
59
|
+
target = findScrollParent(node);
|
|
60
|
+
return target ?? window;
|
|
61
|
+
}
|
|
62
|
+
/** 读当前滚动距离。 */
|
|
63
|
+
function scrollTopOf(target) {
|
|
64
|
+
if (typeof HTMLElement !== 'undefined' && target instanceof HTMLElement)
|
|
65
|
+
return target.scrollTop;
|
|
66
|
+
if (typeof window === 'undefined')
|
|
67
|
+
return 0;
|
|
68
|
+
return window.scrollY || document.documentElement.scrollTop || 0;
|
|
69
|
+
}
|
|
70
|
+
/** 平滑回到顶部(reduced-motion 下瞬时)。 */
|
|
71
|
+
function scrollToTop(target) {
|
|
72
|
+
const reduce = typeof window !== 'undefined'
|
|
73
|
+
&& typeof window.matchMedia === 'function'
|
|
74
|
+
&& window.matchMedia('(prefers-reduced-motion: reduce)').matches;
|
|
75
|
+
const behavior = reduce ? 'auto' : 'smooth';
|
|
76
|
+
if (typeof HTMLElement !== 'undefined' && target instanceof HTMLElement)
|
|
77
|
+
target.scrollTo({ top: 0, behavior });
|
|
78
|
+
else if (typeof window !== 'undefined')
|
|
79
|
+
window.scrollTo({ top: 0, behavior });
|
|
80
|
+
}
|
|
81
|
+
/** 右侧浮动的快捷工具栏:内置回顶部 + 自定义按钮。 */
|
|
82
|
+
export function QuickToolbar(props) {
|
|
83
|
+
ensureComponentStyles('quick-toolbar', QUICK_TOOLBAR_CSS);
|
|
84
|
+
const ref = useRef(null);
|
|
85
|
+
const [left, setLeft] = useState(null);
|
|
86
|
+
const [scrollTop, setScrollTop] = useState(0);
|
|
87
|
+
// 正在退场的按钮:先留在 DOM 里播 fade-out,计时到了才卸载。
|
|
88
|
+
const [leaving, setLeaving] = useState([]);
|
|
89
|
+
const shownRef = useRef([]);
|
|
90
|
+
const leaveTimers = useRef(new Map());
|
|
91
|
+
const offset = props.offset ?? DEFAULT_OFFSET;
|
|
92
|
+
const size = props.size ?? DEFAULT_SIZE;
|
|
93
|
+
const gap = props.gap ?? DEFAULT_GAP;
|
|
94
|
+
// 横向定位:锚点右缘外侧;放不下 / 没锚点 ⇒ 贴视口右缘。
|
|
95
|
+
useEffect(() => {
|
|
96
|
+
const node = ref.current;
|
|
97
|
+
if (node === null)
|
|
98
|
+
return;
|
|
99
|
+
const resolveAnchor = () => {
|
|
100
|
+
if (props.anchor !== undefined)
|
|
101
|
+
return props.anchor();
|
|
102
|
+
const id = props.anchorId;
|
|
103
|
+
return id === undefined ? null : document.getElementById(id);
|
|
104
|
+
};
|
|
105
|
+
let observed = null;
|
|
106
|
+
const ro = new ResizeObserver(update);
|
|
107
|
+
function update() {
|
|
108
|
+
const anchorEl = resolveAnchor();
|
|
109
|
+
if (anchorEl !== observed) {
|
|
110
|
+
if (observed !== null)
|
|
111
|
+
ro.unobserve(observed);
|
|
112
|
+
if (anchorEl !== null)
|
|
113
|
+
ro.observe(anchorEl);
|
|
114
|
+
observed = anchorEl;
|
|
115
|
+
}
|
|
116
|
+
const viewportWidth = document.documentElement.clientWidth;
|
|
117
|
+
setLeft(resolveToolbarLeft({ viewportWidth, offset, size }, anchorEl === null ? null : anchorEl.getBoundingClientRect().right));
|
|
118
|
+
}
|
|
119
|
+
update();
|
|
120
|
+
window.addEventListener('resize', update);
|
|
121
|
+
return () => {
|
|
122
|
+
window.removeEventListener('resize', update);
|
|
123
|
+
ro.disconnect();
|
|
124
|
+
};
|
|
125
|
+
}, [props.anchor, props.anchorId, offset, size]);
|
|
126
|
+
// 滚动距离:驱动 `when: 'scroll'` 的显隐。
|
|
127
|
+
useEffect(() => {
|
|
128
|
+
const node = ref.current;
|
|
129
|
+
if (node === null)
|
|
130
|
+
return;
|
|
131
|
+
const target = resolveScrollTarget(props.scrollContainer, node);
|
|
132
|
+
const onScroll = () => setScrollTop(scrollTopOf(target));
|
|
133
|
+
onScroll();
|
|
134
|
+
target.addEventListener('scroll', onScroll, { passive: true });
|
|
135
|
+
return () => target.removeEventListener('scroll', onScroll);
|
|
136
|
+
}, [props.scrollContainer]);
|
|
137
|
+
// 内置回顶部与自定义项摊平成同一张排序表。
|
|
138
|
+
const backTop = props.backToTop === false
|
|
139
|
+
? null
|
|
140
|
+
: (typeof props.backToTop === 'object' ? props.backToTop : {});
|
|
141
|
+
const entries = [];
|
|
142
|
+
if (backTop !== null) {
|
|
143
|
+
entries.push({ id: '__backtop', kind: 'backtop', order: backTop.order ?? 0, index: 0 });
|
|
144
|
+
}
|
|
145
|
+
for (const [index, item] of (props.items ?? []).entries()) {
|
|
146
|
+
entries.push({ id: item.id, kind: 'custom', order: item.order ?? index + 1, index, item });
|
|
147
|
+
}
|
|
148
|
+
const threshold = backTop?.threshold ?? DEFAULT_SCROLL_THRESHOLD;
|
|
149
|
+
const sorted = sortToolbarEntries(entries);
|
|
150
|
+
const visible = sorted.filter((entry) => {
|
|
151
|
+
if (entry.kind === 'backtop')
|
|
152
|
+
return isToolbarEntryVisible({ when: 'scroll', threshold }, scrollTop);
|
|
153
|
+
return isToolbarEntryVisible(entry.item ?? {}, scrollTop);
|
|
154
|
+
});
|
|
155
|
+
const visibleKey = JSON.stringify(visible.map((entry) => entry.id));
|
|
156
|
+
// 显隐切换:新出现的项挂载即淡入;消失的项先转为退场态、延迟卸载。
|
|
157
|
+
useEffect(() => {
|
|
158
|
+
const next = JSON.parse(visibleKey);
|
|
159
|
+
const revived = next.filter((id) => leaveTimers.current.has(id));
|
|
160
|
+
for (const id of revived) {
|
|
161
|
+
const timer = leaveTimers.current.get(id);
|
|
162
|
+
if (timer !== undefined)
|
|
163
|
+
clearTimeout(timer);
|
|
164
|
+
leaveTimers.current.delete(id);
|
|
165
|
+
}
|
|
166
|
+
if (revived.length > 0)
|
|
167
|
+
setLeaving((prev) => prev.filter((id) => !revived.includes(id)));
|
|
168
|
+
const gone = shownRef.current.filter((id) => !next.includes(id));
|
|
169
|
+
if (gone.length > 0) {
|
|
170
|
+
setLeaving((prev) => [...prev, ...gone.filter((id) => !prev.includes(id))]);
|
|
171
|
+
for (const id of gone) {
|
|
172
|
+
const timer = leaveTimers.current.get(id);
|
|
173
|
+
if (timer !== undefined)
|
|
174
|
+
clearTimeout(timer);
|
|
175
|
+
leaveTimers.current.set(id, setTimeout(() => {
|
|
176
|
+
leaveTimers.current.delete(id);
|
|
177
|
+
setLeaving((prev) => prev.filter((value) => value !== id));
|
|
178
|
+
}, LEAVE_MS));
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
shownRef.current = next;
|
|
182
|
+
}, [visibleKey]);
|
|
183
|
+
useEffect(() => () => {
|
|
184
|
+
for (const timer of leaveTimers.current.values())
|
|
185
|
+
clearTimeout(timer);
|
|
186
|
+
leaveTimers.current.clear();
|
|
187
|
+
}, []);
|
|
188
|
+
const style = {
|
|
189
|
+
bottom: `${offset}px`,
|
|
190
|
+
gap: `${gap}px`,
|
|
191
|
+
...(left === null ? { right: `${offset}px` } : { left: `${left}px` }),
|
|
192
|
+
};
|
|
193
|
+
const shownSet = new Set(visible.map((entry) => entry.id));
|
|
194
|
+
const leavingSet = new Set(leaving);
|
|
195
|
+
const rendered = sorted.filter((entry) => shownSet.has(entry.id) || leavingSet.has(entry.id));
|
|
196
|
+
const renderItem = (entry, isLeaving) => {
|
|
197
|
+
const leaveClass = isLeaving ? ' is-leaving' : '';
|
|
198
|
+
if (entry.kind === 'backtop') {
|
|
199
|
+
const label = backTop?.label ?? t('backToTop');
|
|
200
|
+
return h('button', {
|
|
201
|
+
key: entry.id,
|
|
202
|
+
type: 'button',
|
|
203
|
+
className: `dshpc-quick-toolbar__item dshpc-quick-toolbar__backtop${leaveClass}`,
|
|
204
|
+
style: { width: size, height: size },
|
|
205
|
+
'aria-label': label,
|
|
206
|
+
title: label,
|
|
207
|
+
onClick: () => scrollToTop(resolveScrollTarget(props.scrollContainer, ref.current)),
|
|
208
|
+
}, h(Chevron, { dir: 'up', size: 18 }));
|
|
209
|
+
}
|
|
210
|
+
const item = entry.item;
|
|
211
|
+
if (item === undefined)
|
|
212
|
+
return null;
|
|
213
|
+
// 自定义配色只写 CSS 变量,不直接写 background / color —— 否则会压过 hover / active 的混色规则。
|
|
214
|
+
const buttonStyle = { width: size, height: size };
|
|
215
|
+
if (item.color !== undefined)
|
|
216
|
+
buttonStyle['--dshpc-quick-toolbar-bg'] = item.color;
|
|
217
|
+
if (item.fgColor !== undefined)
|
|
218
|
+
buttonStyle['--dshpc-quick-toolbar-fg'] = item.fgColor;
|
|
219
|
+
const onClick = () => {
|
|
220
|
+
item.onClick?.();
|
|
221
|
+
props.onAction?.(item.id, item);
|
|
222
|
+
};
|
|
223
|
+
return h('button', {
|
|
224
|
+
key: entry.id,
|
|
225
|
+
type: 'button',
|
|
226
|
+
className: `dshpc-quick-toolbar__item${leaveClass}`,
|
|
227
|
+
style: buttonStyle,
|
|
228
|
+
'aria-label': item.label,
|
|
229
|
+
title: item.label,
|
|
230
|
+
onClick,
|
|
231
|
+
}, item.icon);
|
|
232
|
+
};
|
|
233
|
+
return h('div', {
|
|
234
|
+
ref,
|
|
235
|
+
className: `dshpc-quick-toolbar${props.className === undefined ? '' : ` ${props.className}`}`,
|
|
236
|
+
style,
|
|
237
|
+
role: 'toolbar',
|
|
238
|
+
'aria-label': props.ariaLabel ?? t('quickToolbarAria'),
|
|
239
|
+
}, ...rendered.map((entry) => renderItem(entry, leavingSet.has(entry.id))));
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=QuickToolbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuickToolbar.js","sourceRoot":"","sources":["../../src/ui/QuickToolbar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const QUICK_TOOLBAR_CSS = "/* \u5FEB\u6377\u5DE5\u5177\u680F\uFF1A\u53F3\u4FA7\u60AC\u6D6E\u7684\u4E00\u5217\u72EC\u7ACB\u5706\u94AE\u3002\n \u6A2A\u5411 left / right \u4E0E bottom\u3001\u6309\u94AE\u76F4\u5F84\u3001\u7EB5\u5411\u95F4\u8DDD\u7531\u7EC4\u4EF6\u6309 props \u5B9E\u65F6\u5199\u5165 style\uFF1B\n \u8FD9\u91CC\u53EA\u653E\u4E0E\u4F4D\u7F6E\u65E0\u5173\u7684\u76AE\u80A4\u3002 */\n.dshpc-quick-toolbar{\n position:fixed;\n z-index:var(--dshpc-z-dock);\n display:flex;\n flex-direction:column;\n align-items:center;\n}\n/* \u51FA\u73B0 / \u6D88\u5931\uFF1A\u6302\u8F7D\u5373\u6DE1\u5165\uFF0C\u9000\u573A\u5148\u64AD fade-out\uFF08\u7EC4\u4EF6\u5EF6\u8FDF\u5378\u8F7D\uFF0C\u89C1 QuickToolbar.ts\uFF09\u3002 */\n@keyframes dshpc-quick-toolbar-in{\n from{opacity:0;transform:translateY(6px) scale(.9);}\n to{opacity:1;transform:none;}\n}\n@keyframes dshpc-quick-toolbar-out{\n from{opacity:1;transform:none;}\n to{opacity:0;transform:translateY(6px) scale(.9);}\n}\n.dshpc-quick-toolbar__item{\n display:inline-flex;\n align-items:center;\n justify-content:center;\n padding:0;\n margin:0;\n box-sizing:border-box;\n border:1px solid var(--dshpc-border);\n border-radius:50%;\n /* \u81EA\u5B9A\u4E49\u5E95\u8272 / \u5B57\u8272\u53EA\u5199\u8FD9\u4E24\u4E2A\u53D8\u91CF\uFF08\u89C1 QuickToolbar.ts\uFF09\uFF0Chover/active \u624D\u80FD\u8DDF\u7740\u6DF7\u8272\u3002 */\n background:var(--dshpc-quick-toolbar-bg, var(--dshpc-solid));\n color:var(--dshpc-quick-toolbar-fg, var(--dshpc-on-solid));\n box-shadow:var(--dshpc-shadow-2);\n cursor:pointer;\n animation:dshpc-quick-toolbar-in var(--dshpc-dur) var(--dshpc-ease);\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),\n color var(--dshpc-dur-fast) var(--dshpc-ease),\n transform var(--dshpc-dur-fast) var(--dshpc-ease);\n}\n/* \u9000\u573A\u671F\u4FDD\u7559\u5360\u4F4D\uFF0C\u907F\u514D\u540C\u5217\u5176\u4ED6\u6309\u94AE\u77AC\u65F6\u8DF3\u4F4D\u3002 */\n.dshpc-quick-toolbar__item.is-leaving{\n animation:dshpc-quick-toolbar-out var(--dshpc-dur) var(--dshpc-ease) forwards;\n pointer-events:none;\n}\n/* \u53D8\u8272\u4E0E\u6838\u5FC3 Button \u5B9E\u5FC3\u6863\u540C\u4E00\u5957\uFF1A\u6309 --dshpc-fg \u6DF7\u51FA hover / active \u5E95\u8272\uFF08\u81EA\u5B9A\u4E49 color \u4E5F\u8DDF\u968F\uFF09\u3002 */\n.dshpc-quick-toolbar__item:hover{\n background:color-mix(in srgb, var(--dshpc-quick-toolbar-bg, var(--dshpc-solid)) 82%, var(--dshpc-fg));\n}\n.dshpc-quick-toolbar__item:active{\n background:color-mix(in srgb, var(--dshpc-quick-toolbar-bg, var(--dshpc-solid)) 70%, var(--dshpc-fg));\n transform:scale(.94);\n}\n.dshpc-quick-toolbar__item:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}\n@media (prefers-reduced-motion: reduce){\n .dshpc-quick-toolbar__item{transition:none;transform:none;animation:none;}\n .dshpc-quick-toolbar__item.is-leaving{animation:none;opacity:0;}\n}\n";
|
|
2
|
+
//# sourceMappingURL=quick-toolbar-css.generated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quick-toolbar-css.generated.d.ts","sourceRoot":"","sources":["../../../src/ui/controls/quick-toolbar-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,k3FAA+nE,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// ⚠️ 生成物,勿手改。真源 = src/ui/controls/quick-toolbar.css
|
|
2
|
+
// 由 scripts/gen-css.mjs 生成(`pnpm run gen:css`):改样式请改那个 .css 文件后重新生成。
|
|
3
|
+
export const QUICK_TOOLBAR_CSS = "/* 快捷工具栏:右侧悬浮的一列独立圆钮。\n 横向 left / right 与 bottom、按钮直径、纵向间距由组件按 props 实时写入 style;\n 这里只放与位置无关的皮肤。 */\n.dshpc-quick-toolbar{\n position:fixed;\n z-index:var(--dshpc-z-dock);\n display:flex;\n flex-direction:column;\n align-items:center;\n}\n/* 出现 / 消失:挂载即淡入,退场先播 fade-out(组件延迟卸载,见 QuickToolbar.ts)。 */\n@keyframes dshpc-quick-toolbar-in{\n from{opacity:0;transform:translateY(6px) scale(.9);}\n to{opacity:1;transform:none;}\n}\n@keyframes dshpc-quick-toolbar-out{\n from{opacity:1;transform:none;}\n to{opacity:0;transform:translateY(6px) scale(.9);}\n}\n.dshpc-quick-toolbar__item{\n display:inline-flex;\n align-items:center;\n justify-content:center;\n padding:0;\n margin:0;\n box-sizing:border-box;\n border:1px solid var(--dshpc-border);\n border-radius:50%;\n /* 自定义底色 / 字色只写这两个变量(见 QuickToolbar.ts),hover/active 才能跟着混色。 */\n background:var(--dshpc-quick-toolbar-bg, var(--dshpc-solid));\n color:var(--dshpc-quick-toolbar-fg, var(--dshpc-on-solid));\n box-shadow:var(--dshpc-shadow-2);\n cursor:pointer;\n animation:dshpc-quick-toolbar-in var(--dshpc-dur) var(--dshpc-ease);\n transition:background-color var(--dshpc-dur-fast) var(--dshpc-ease),\n color var(--dshpc-dur-fast) var(--dshpc-ease),\n transform var(--dshpc-dur-fast) var(--dshpc-ease);\n}\n/* 退场期保留占位,避免同列其他按钮瞬时跳位。 */\n.dshpc-quick-toolbar__item.is-leaving{\n animation:dshpc-quick-toolbar-out var(--dshpc-dur) var(--dshpc-ease) forwards;\n pointer-events:none;\n}\n/* 变色与核心 Button 实心档同一套:按 --dshpc-fg 混出 hover / active 底色(自定义 color 也跟随)。 */\n.dshpc-quick-toolbar__item:hover{\n background:color-mix(in srgb, var(--dshpc-quick-toolbar-bg, var(--dshpc-solid)) 82%, var(--dshpc-fg));\n}\n.dshpc-quick-toolbar__item:active{\n background:color-mix(in srgb, var(--dshpc-quick-toolbar-bg, var(--dshpc-solid)) 70%, var(--dshpc-fg));\n transform:scale(.94);\n}\n.dshpc-quick-toolbar__item:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}\n@media (prefers-reduced-motion: reduce){\n .dshpc-quick-toolbar__item{transition:none;transform:none;animation:none;}\n .dshpc-quick-toolbar__item.is-leaving{animation:none;opacity:0;}\n}\n";
|
|
4
|
+
//# sourceMappingURL=quick-toolbar-css.generated.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quick-toolbar-css.generated.js","sourceRoot":"","sources":["../../../src/ui/controls/quick-toolbar-css.generated.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,qEAAqE;AACrE,MAAM,CAAC,MAAM,iBAAiB,GAAG,4nEAA4nE,CAAA"}
|
|
@@ -4,7 +4,7 @@ export { FIELD_CSS } from './controls/field-css.generated.js';
|
|
|
4
4
|
export { LOADING_CSS } from './controls/loading-css.generated.js';
|
|
5
5
|
export { LOADER_CSS } from './controls/loader-css.generated.js';
|
|
6
6
|
export { LOADER_BAR_CSS } from './controls/loader-bar-css.generated.js';
|
|
7
|
-
export {
|
|
7
|
+
export { QUICK_TOOLBAR_CSS } from './controls/quick-toolbar-css.generated.js';
|
|
8
8
|
export { HINT_CSS } from './controls/hint-css.generated.js';
|
|
9
9
|
export { DATETIME_CSS } from './controls/datetime-css.generated.js';
|
|
10
10
|
export { SPLIT_GROUP_CSS } from './controls/split-group-css.generated.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls-css.d.ts","sourceRoot":"","sources":["../../src/ui/controls-css.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AACvE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"controls-css.d.ts","sourceRoot":"","sources":["../../src/ui/controls-css.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAA;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAA;AAEzE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAA;AAEzE,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AAEvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAA"}
|
package/dist/ui/controls-css.js
CHANGED
|
@@ -11,7 +11,7 @@ export { FIELD_CSS } from './controls/field-css.generated.js';
|
|
|
11
11
|
export { LOADING_CSS } from './controls/loading-css.generated.js';
|
|
12
12
|
export { LOADER_CSS } from './controls/loader-css.generated.js';
|
|
13
13
|
export { LOADER_BAR_CSS } from './controls/loader-bar-css.generated.js';
|
|
14
|
-
export {
|
|
14
|
+
export { QUICK_TOOLBAR_CSS } from './controls/quick-toolbar-css.generated.js';
|
|
15
15
|
export { HINT_CSS } from './controls/hint-css.generated.js';
|
|
16
16
|
export { DATETIME_CSS } from './controls/datetime-css.generated.js';
|
|
17
17
|
export { SPLIT_GROUP_CSS } from './controls/split-group-css.generated.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls-css.js","sourceRoot":"","sources":["../../src/ui/controls-css.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAE3B,mCAAmC;AACnC,8DAA8D;AAC9D,kEAAkE;AAClE,gDAAgD;AAChD,kDAAkD;AAClD,4DAA4D;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AACvE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"controls-css.js","sourceRoot":"","sources":["../../src/ui/controls-css.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAE3B,mCAAmC;AACnC,8DAA8D;AAC9D,kEAAkE;AAClE,gDAAgD;AAChD,kDAAkD;AAClD,4DAA4D;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAA;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAA;AACzE,gDAAgD;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAA;AACzE,6BAA6B;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAA;AACvE,uCAAuC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAA"}
|
package/dist/ui/index.d.ts
CHANGED
|
@@ -31,7 +31,8 @@ export { SectionHead, type SectionHeadAccent, type SectionHeadProps } from './Se
|
|
|
31
31
|
export { FieldHint, type FieldHintProps } from './FieldHint.js';
|
|
32
32
|
export { getTooltipRenderer, setTooltipRenderer, type TooltipRenderProps, type TooltipRenderer, } from './tooltip.js';
|
|
33
33
|
export { LiveText } from './LiveText.js';
|
|
34
|
-
export {
|
|
34
|
+
export { QuickToolbar, type QuickToolbarProps, } from './QuickToolbar.js';
|
|
35
|
+
export { DEFAULT_SCROLL_THRESHOLD, isToolbarEntryVisible, resolveToolbarLeft, sortToolbarEntries, type QuickToolbarBackToTop, type QuickToolbarItem, type QuickToolbarWhen, type ToolbarEntry, type ToolbarGeometry, } from './quick-toolbar-logic.js';
|
|
35
36
|
export { startResizeLayoutWidth, type ResizeOptions } from './resizer.js';
|
|
36
37
|
export { DockPanel, PanelDock, createPanelDock, type DockCloseButton, type DockCloseReason, type DockPanelProps, type PanelDockController, type PanelDockOptions, type PanelDockProps, } from './PanelDock.js';
|
|
37
38
|
export { DEFAULT_PANEL_ID, clampWidth, closePanel, collapsePanel, emptyDock, expandPanel, isCollapsed, isOpen, openPanel, othersWidth, setPanelWidth, type DockState, type OpenResult, } from './panel-dock-logic.js';
|
package/dist/ui/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACpF,OAAO,EACL,YAAY,EACZ,cAAc,EACd,OAAO,EACP,QAAQ,EACR,oBAAoB,EACpB,QAAQ,EACR,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,YAAY,GAClB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,EACL,cAAc,EACd,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,eAAe,EACf,eAAe,EACf,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,UAAU,EACV,aAAa,EACb,OAAO,EACP,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,UAAU,EACV,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,SAAS,GACf,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAC9F,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AACjF,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,UAAU,GAChB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,UAAU,EACV,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,YAAY,EACZ,IAAI,EACJ,SAAS,EACT,KAAK,UAAU,EACf,KAAK,eAAe,GACrB,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,IAAI,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAA;AAE9E,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,qBAAqB,GAC3B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,SAAS,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACrB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,UAAU,EACV,YAAY,EACZ,eAAe,EACf,WAAW,EACX,UAAU,EACV,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,SAAS,GACf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,SAAS,EACT,MAAM,EACN,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,GACnB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7H,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnF,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3F,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EACL,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAC7F,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACrB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,sBAAsB,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,EACL,SAAS,EACT,SAAS,EACT,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,WAAW,EACX,WAAW,EACX,MAAM,EACN,SAAS,EACT,WAAW,EACX,aAAa,EACb,KAAK,SAAS,EACd,KAAK,UAAU,GAChB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,EACL,WAAW,EACX,aAAa,EACb,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,YAAY,CAAA"}
|
package/dist/ui/index.js
CHANGED
|
@@ -37,7 +37,8 @@ export { SectionHead } from './SectionHead.js';
|
|
|
37
37
|
export { FieldHint } from './FieldHint.js';
|
|
38
38
|
export { getTooltipRenderer, setTooltipRenderer, } from './tooltip.js';
|
|
39
39
|
export { LiveText } from './LiveText.js';
|
|
40
|
-
export {
|
|
40
|
+
export { QuickToolbar, } from './QuickToolbar.js';
|
|
41
|
+
export { DEFAULT_SCROLL_THRESHOLD, isToolbarEntryVisible, resolveToolbarLeft, sortToolbarEntries, } from './quick-toolbar-logic.js';
|
|
41
42
|
export { startResizeLayoutWidth } from './resizer.js';
|
|
42
43
|
export { DockPanel, PanelDock, createPanelDock, } from './PanelDock.js';
|
|
43
44
|
export { DEFAULT_PANEL_ID, clampWidth, closePanel, collapsePanel, emptyDock, expandPanel, isCollapsed, isOpen, openPanel, othersWidth, setPanelWidth, } from './panel-dock-logic.js';
|
package/dist/ui/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QuickToolbar 的纯逻辑(零 DOM、零 React 运行时)。
|
|
3
|
+
*
|
|
4
|
+
* 只回答三件事:横向贴哪、按钮按什么顺序排、某一项此刻该不该出现。
|
|
5
|
+
* 真机尺寸 / 滚动 / 锚点解析留在组件里 —— 这里全部可直接进 Node 单测。
|
|
6
|
+
*/
|
|
7
|
+
import type { ReactNode } from 'react';
|
|
8
|
+
/** 某一项的显隐时机:`always` 一直显示,`scroll` 滚过阈值才显示。 */
|
|
9
|
+
export type QuickToolbarWhen = 'always' | 'scroll';
|
|
10
|
+
/** 自定义按钮。 */
|
|
11
|
+
export interface QuickToolbarItem {
|
|
12
|
+
/** 唯一标识;`onAction` 里原样回传。 */
|
|
13
|
+
id: string;
|
|
14
|
+
/** 图标(自绘或调用方自己的图标组件渲染结果)。 */
|
|
15
|
+
icon: ReactNode;
|
|
16
|
+
/** 无障碍名,同时作为 title。 */
|
|
17
|
+
label: string;
|
|
18
|
+
/** 单项点击回调(与 `onAction` 都会触发)。 */
|
|
19
|
+
onClick?: () => void;
|
|
20
|
+
/** `false` = 永久隐藏;默认显示。 */
|
|
21
|
+
visible?: boolean;
|
|
22
|
+
/** 默认 `always`。 */
|
|
23
|
+
when?: QuickToolbarWhen;
|
|
24
|
+
/** 排序值,越小越靠上;默认按数组下标 + 1(内置回顶部默认 0 在最上)。 */
|
|
25
|
+
order?: number;
|
|
26
|
+
/** `when: 'scroll'` 的触发阈值(px),默认 320。 */
|
|
27
|
+
threshold?: number;
|
|
28
|
+
/** 覆盖底色(任意 CSS 颜色值)。 */
|
|
29
|
+
color?: string;
|
|
30
|
+
/** 覆盖图标 / 文字色(任意 CSS 颜色值)。 */
|
|
31
|
+
fgColor?: string;
|
|
32
|
+
}
|
|
33
|
+
/** 内置回顶部的配置;传 `false` 关掉。 */
|
|
34
|
+
export interface QuickToolbarBackToTop {
|
|
35
|
+
/** 排序值,默认 0(最上)。 */
|
|
36
|
+
order?: number;
|
|
37
|
+
/** 无障碍名,默认内置字典「回到顶部」。 */
|
|
38
|
+
label?: string;
|
|
39
|
+
/** 滚动超过这个距离(px)才出现,默认 320。 */
|
|
40
|
+
threshold?: number;
|
|
41
|
+
}
|
|
42
|
+
/** 滚过多少像素才触发 `when: 'scroll'`。 */
|
|
43
|
+
export declare const DEFAULT_SCROLL_THRESHOLD = 320;
|
|
44
|
+
/** 排序用条目:组件把内置回顶部与自定义项都摊平成这个形状。 */
|
|
45
|
+
export interface ToolbarEntry {
|
|
46
|
+
id: string;
|
|
47
|
+
kind: 'backtop' | 'custom';
|
|
48
|
+
order: number;
|
|
49
|
+
/** 自定义项在 `items` 里的下标;内置项固定 0。 */
|
|
50
|
+
index: number;
|
|
51
|
+
}
|
|
52
|
+
/** 横向贴边所需的三个数。 */
|
|
53
|
+
export interface ToolbarGeometry {
|
|
54
|
+
/** 视口宽(documentElement.clientWidth)。 */
|
|
55
|
+
viewportWidth: number;
|
|
56
|
+
/** 与屏幕 / 锚点右缘的距离。 */
|
|
57
|
+
offset: number;
|
|
58
|
+
/** 按钮直径。 */
|
|
59
|
+
size: number;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* 算出工具栏左缘的 x 坐标。
|
|
63
|
+
*
|
|
64
|
+
* - 没有锚点(或锚点取不到):贴视口右缘,留 `offset`。
|
|
65
|
+
* - 有锚点:贴锚点右缘外侧,留 `offset`;但右侧还必须再留 `offset`,
|
|
66
|
+
* 放不下(`锚点右缘 + offset + size + offset > 视口宽`)就退回贴视口右缘。
|
|
67
|
+
*/
|
|
68
|
+
export declare function resolveToolbarLeft(geometry: ToolbarGeometry, anchorRight: number | null): number;
|
|
69
|
+
/**
|
|
70
|
+
* 排序:先按 `order`,相同 order 时内置回顶部在前、自定义项按数组顺序。
|
|
71
|
+
* 不修改入参。
|
|
72
|
+
*/
|
|
73
|
+
export declare function sortToolbarEntries<T extends ToolbarEntry>(entries: readonly T[]): T[];
|
|
74
|
+
/** 某一项此刻是否该出现(显隐判定)。 */
|
|
75
|
+
export declare function isToolbarEntryVisible(entry: Pick<QuickToolbarItem, 'visible' | 'when' | 'threshold'>, scrollTop: number): boolean;
|
|
76
|
+
//# sourceMappingURL=quick-toolbar-logic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quick-toolbar-logic.d.ts","sourceRoot":"","sources":["../../src/ui/quick-toolbar-logic.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,+CAA+C;AAC/C,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAElD,aAAa;AACb,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,6BAA6B;IAC7B,IAAI,EAAE,SAAS,CAAA;IACf,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,mBAAmB;IACnB,IAAI,CAAC,EAAE,gBAAgB,CAAA;IACvB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wBAAwB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,6BAA6B;AAC7B,MAAM,WAAW,qBAAqB;IACpC,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,kCAAkC;AAClC,eAAO,MAAM,wBAAwB,MAAM,CAAA;AAE3C,mCAAmC;AACnC,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,SAAS,GAAG,QAAQ,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAA;CACd;AAED,kBAAkB;AAClB,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,aAAa,EAAE,MAAM,CAAA;IACrB,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY;IACZ,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAMhG;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CAMrF;AAED,wBAAwB;AACxB,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC,EAC/D,SAAS,EAAE,MAAM,GAChB,OAAO,CAMT"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/** 滚过多少像素才触发 `when: 'scroll'`。 */
|
|
2
|
+
export const DEFAULT_SCROLL_THRESHOLD = 320;
|
|
3
|
+
/**
|
|
4
|
+
* 算出工具栏左缘的 x 坐标。
|
|
5
|
+
*
|
|
6
|
+
* - 没有锚点(或锚点取不到):贴视口右缘,留 `offset`。
|
|
7
|
+
* - 有锚点:贴锚点右缘外侧,留 `offset`;但右侧还必须再留 `offset`,
|
|
8
|
+
* 放不下(`锚点右缘 + offset + size + offset > 视口宽`)就退回贴视口右缘。
|
|
9
|
+
*/
|
|
10
|
+
export function resolveToolbarLeft(geometry, anchorRight) {
|
|
11
|
+
const { viewportWidth, offset, size } = geometry;
|
|
12
|
+
const pinned = Math.max(0, viewportWidth - offset - size);
|
|
13
|
+
if (anchorRight === null || !Number.isFinite(anchorRight))
|
|
14
|
+
return pinned;
|
|
15
|
+
const anchored = anchorRight + offset;
|
|
16
|
+
return anchored + size + offset <= viewportWidth ? anchored : pinned;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 排序:先按 `order`,相同 order 时内置回顶部在前、自定义项按数组顺序。
|
|
20
|
+
* 不修改入参。
|
|
21
|
+
*/
|
|
22
|
+
export function sortToolbarEntries(entries) {
|
|
23
|
+
return [...entries].sort((a, b) => {
|
|
24
|
+
if (a.order !== b.order)
|
|
25
|
+
return a.order - b.order;
|
|
26
|
+
if (a.kind !== b.kind)
|
|
27
|
+
return a.kind === 'backtop' ? -1 : 1;
|
|
28
|
+
return a.index - b.index;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/** 某一项此刻是否该出现(显隐判定)。 */
|
|
32
|
+
export function isToolbarEntryVisible(entry, scrollTop) {
|
|
33
|
+
if (entry.visible === false)
|
|
34
|
+
return false;
|
|
35
|
+
if ((entry.when ?? 'always') === 'scroll') {
|
|
36
|
+
return scrollTop > (entry.threshold ?? DEFAULT_SCROLL_THRESHOLD);
|
|
37
|
+
}
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=quick-toolbar-logic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quick-toolbar-logic.js","sourceRoot":"","sources":["../../src/ui/quick-toolbar-logic.ts"],"names":[],"mappings":"AA6CA,kCAAkC;AAClC,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAA;AAqB3C;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAyB,EAAE,WAA0B;IACtF,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAA;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAAC,CAAA;IACzD,IAAI,WAAW,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,MAAM,CAAA;IACxE,MAAM,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAA;IACrC,OAAO,QAAQ,GAAG,IAAI,GAAG,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAA;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAyB,OAAqB;IAC9E,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAChC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;YAAE,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAA;QACjD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3D,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAA;IAC1B,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,wBAAwB;AACxB,MAAM,UAAU,qBAAqB,CACnC,KAA+D,EAC/D,SAAiB;IAEjB,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IACzC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,SAAS,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,wBAAwB,CAAC,CAAA;IAClE,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/dist/utils/i18n.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export type Locale = 'zh' | 'en';
|
|
9
9
|
/** utils 内置文案的 key(ui 的选择器也复用这套字典,保持单一 locale 状态)。 */
|
|
10
|
-
export type UtilMessageKey = 'sessionLoading' | 'sessionFailed' | 'sessionEmpty' | 'explorerLoading' | 'loadingDefault' | 'explorerFailed' | 'explorerRoot' | 'explorerTruncated' | 'explorerEmptyDir' | 'explorerLevels' | 'explorerExpand' | 'explorerCollapse' | 'explorerEnter' | 'explorerRootName' | 'explorerCrumbsAria' | 'explorerPickFile' | 'explorerPickDir' | 'explorerPickDirAria' | 'previewClose' | 'previewCopyPath' | 'previewRefresh' | 'previewRender' | 'previewSource' | 'previewMdSwitchAria' | 'previewHtmlSwitchAria' | 'previewLoadMore' | 'previewTruncated' | 'previewOfficeUnavailable' | 'previewRenderFailed' | 'previewBadPayload' | 'previewOutside' | 'previewNotFound' | 'previewNotDirectory' | 'previewTooLarge' | 'previewNotText' | 'previewFailedCode' | 'mdCopy' | 'mdCopied' | 'mdCode' | 'mdWrap' | 'mdUnwrap' | 'mdFootnotes' | 'cardToggle' | 'tableEmpty' | 'tableLoading' | 'tableLoadingMore' | 'tableNoMore' | 'paginationAria' | 'paginationPrev' | 'paginationNext' | 'paginationPage' | 'paginationTotal' | 'paginationTotalZero' | 'paginationPageSizeOption' | 'paginationPageSizeAria' | 'modalClose' | 'dockClose' | 'dockResize' | 'dockCollapse' | 'dockExpand' | 'errorRetry' | 'confirm' | 'cancel' | 'dialogOk' | 'pickerPlaceholder' | 'pickerClear' | 'pickerEmpty' | 'pickerNoMatch' | 'pickerSearch' | 'pickerSelected' | 'pickerMaxReached' | 'pickerDegraded' | 'modelProvider' | 'modelModel' | 'modelDefault' | 'workspaceAll' | 'relNow' | 'relInJustNow' | 'relInMinutes' | 'relInHours' | 'relInDays' | 'relInMonths' | 'relInYears' | 'relJustNow' | 'relMinutesAgo' | 'relHoursAgo' | 'relDaysAgo' | 'relWeeksAgo' | 'relMonthsAgo' | 'relYearsAgo' | 'codeCopy' | 'codeCopied' | 'sessionUnknownKind' | 'sessionLoadOlder' | 'sessionProcess' | 'triggerRequest' | 'triggerGoal' | 'triggerAgent' | 'triggerTeam' | 'triggerSubagent' | 'triggerGithub' | 'triggerWebhook' | 'triggerSchedule' | 'triggerJob' | 'triggerPlugin' | 'triggerExplanation' | 'turnProcessTook' | 'turnProcessDeepDiving' | 'turnProcessWorked' | 'turnProcessFailed' | 'turnStopped' | 'chatDeepDiving' | 'thinkLabel' | 'durationSeconds' | 'durationMinutes' | 'durationHours' | 'durationMilliseconds' | 'retryActive' | 'retryCancelled' | 'retryStarted' | 'retryScheduled' | 'retryStatus' | 'retryDelay' | 'retryFailure' | 'turnErrorTitle' | 'accountStopped' | 'maxTokensTitle' | 'maxTokensHint' | 'failureAuth' | 'failureQuota' | 'failureAccountSignedOut' | 'failureAccountSignInRequired' | 'clockDate' | 'clockDateYear' | 'copyLabel' | 'copiedLabel' | 'branchLabel' | 'branchUnavailableLabel' | 'turnUsageTitle' | 'turnUsageModel' | 'turnUsageCacheHit' | 'turnUsageInput' | 'turnUsageCacheRead' | 'turnUsageCacheWrite' | 'turnUsageOutput' | 'turnUsageReasoning' | 'turnUsageConsumed' | 'turnUsageCount' | 'numberThousand' | 'numberMillion' | 'numberGroupSeparator' | 'stepProcessDoneThinking' | 'stepProcessDoneRead' | 'stepProcessDoneReadImage' | 'stepProcessDoneWrite' | 'stepProcessDoneSearch' | 'stepProcessDoneEdit' | 'stepProcessDoneCommands' | 'stepProcessDoneCode' | 'stepProcessDoneWebSearch' | 'stepProcessDoneWebFetch' | 'stepProcessDoneSubagents' | 'stepProcessDonePlan' | 'stepProcessDoneQuestions' | 'stepProcessDoneTools' | 'stepProcessJoinTwo' | 'stepProcessComma' | 'stepProcessSharedPrefix' | 'stepProcessMore' | 'toolTitleRead' | 'toolTitleReadImage' | 'toolTitleGrep' | 'toolTitleGlob' | 'toolTitleBash' | 'toolTitleWrite' | 'toolTitleEdit' | 'toolTitleCode' | 'toolTitleWebSearch' | 'toolTitleWebFetch' | 'toolTitleGeneric' | 'toolTitleSearch' | 'toolInputLabel' | 'toolOutputLabel' | 'rowPreparing' | 'rowRunning' | 'rowFailed' | 'rowStopped' | 'commandRunning' | 'commandFailed' | 'commandDone' | 'commandTitle' | 'collapseLabel' | 'readWindow' | 'readCollapseAria' | 'readExpandAria' | 'readExpandRest' | 'terminalSignal' | 'terminalExitCode' | 'terminalNoExitCode' | 'terminalRunning' | 'terminalFailed' | 'terminalDone' | 'terminalNoOutput' | 'terminalCollapseAria' | 'terminalExpandAria' | 'terminalExpandRest' | 'terminalCommandLine' | 'terminalSendInput' | 'terminalSession' | 'codeBlockLabel' | 'diffWrapLabel' | 'diffUnwrapLabel' | 'diffCollapseAria' | 'diffExpandAria' | 'diffExpandRest' | 'sessionArchived' | 'sessionHeading' | 'changesSingle' | 'changesMulti' | 'changesBinary' | 'changesAll' | 'changesCollapse' | 'changesOversized' | 'diffLoading' | 'diffMissing' | 'diffError' | 'diffBinary' | 'diffOversized' | 'diffCreated' | 'diffDeleted' | 'diffUnchanged' | 'diffCoarse' | 'diffTruncated' | 'continueBranch' | 'forkConfirmTitle' | 'forkConfirmText' | 'forkConfirmAccept' | 'forkWorking' | 'forkFailed' | 'deliverRowTitle' | 'deliverRowPreparing' | 'deliverRowRunning' | 'deliverRowOk' | 'deliverRowError' | 'deliverRowStopped' | 'deliverFileLabel' | 'deliverPreviewHint' | 'deliverPreviewCard' | 'deliverAll' | 'deliverCollapse' | 'deliverExpandAria' | 'deliverCollapseAria' | 'composerPlaceholder' | 'composerHint' | 'dtPlaceholder' | 'dtStart' | 'dtEnd' | 'dtToday' | 'dtNow' | 'dtClear' | 'dtHour' | 'dtMinute' | 'dtSecond' | 'dtPrevYear' | 'dtPrevMonth' | 'dtNextMonth' | 'dtNextYear' | 'dtInvalidRange';
|
|
10
|
+
export type UtilMessageKey = 'sessionLoading' | 'sessionFailed' | 'sessionEmpty' | 'explorerLoading' | 'loadingDefault' | 'explorerFailed' | 'explorerRoot' | 'explorerTruncated' | 'explorerEmptyDir' | 'explorerLevels' | 'explorerExpand' | 'explorerCollapse' | 'explorerEnter' | 'explorerRootName' | 'explorerCrumbsAria' | 'explorerPickFile' | 'explorerPickDir' | 'explorerPickDirAria' | 'previewClose' | 'previewCopyPath' | 'previewRefresh' | 'previewRender' | 'previewSource' | 'previewMdSwitchAria' | 'previewHtmlSwitchAria' | 'previewLoadMore' | 'previewTruncated' | 'previewOfficeUnavailable' | 'previewRenderFailed' | 'previewBadPayload' | 'previewOutside' | 'previewNotFound' | 'previewNotDirectory' | 'previewTooLarge' | 'previewNotText' | 'previewFailedCode' | 'mdCopy' | 'mdCopied' | 'mdCode' | 'mdWrap' | 'mdUnwrap' | 'mdFootnotes' | 'cardToggle' | 'tableEmpty' | 'tableLoading' | 'tableLoadingMore' | 'tableNoMore' | 'paginationAria' | 'paginationPrev' | 'paginationNext' | 'paginationPage' | 'paginationTotal' | 'paginationTotalZero' | 'paginationPageSizeOption' | 'paginationPageSizeAria' | 'modalClose' | 'dockClose' | 'dockResize' | 'dockCollapse' | 'dockExpand' | 'backToTop' | 'quickToolbarAria' | 'errorRetry' | 'confirm' | 'cancel' | 'dialogOk' | 'pickerPlaceholder' | 'pickerClear' | 'pickerEmpty' | 'pickerNoMatch' | 'pickerSearch' | 'pickerSelected' | 'pickerMaxReached' | 'pickerDegraded' | 'modelProvider' | 'modelModel' | 'modelDefault' | 'workspaceAll' | 'relNow' | 'relInJustNow' | 'relInMinutes' | 'relInHours' | 'relInDays' | 'relInMonths' | 'relInYears' | 'relJustNow' | 'relMinutesAgo' | 'relHoursAgo' | 'relDaysAgo' | 'relWeeksAgo' | 'relMonthsAgo' | 'relYearsAgo' | 'codeCopy' | 'codeCopied' | 'sessionUnknownKind' | 'sessionLoadOlder' | 'sessionProcess' | 'triggerRequest' | 'triggerGoal' | 'triggerAgent' | 'triggerTeam' | 'triggerSubagent' | 'triggerGithub' | 'triggerWebhook' | 'triggerSchedule' | 'triggerJob' | 'triggerPlugin' | 'triggerExplanation' | 'turnProcessTook' | 'turnProcessDeepDiving' | 'turnProcessWorked' | 'turnProcessFailed' | 'turnStopped' | 'chatDeepDiving' | 'thinkLabel' | 'durationSeconds' | 'durationMinutes' | 'durationHours' | 'durationMilliseconds' | 'retryActive' | 'retryCancelled' | 'retryStarted' | 'retryScheduled' | 'retryStatus' | 'retryDelay' | 'retryFailure' | 'turnErrorTitle' | 'accountStopped' | 'maxTokensTitle' | 'maxTokensHint' | 'failureAuth' | 'failureQuota' | 'failureAccountSignedOut' | 'failureAccountSignInRequired' | 'clockDate' | 'clockDateYear' | 'copyLabel' | 'copiedLabel' | 'branchLabel' | 'branchUnavailableLabel' | 'turnUsageTitle' | 'turnUsageModel' | 'turnUsageCacheHit' | 'turnUsageInput' | 'turnUsageCacheRead' | 'turnUsageCacheWrite' | 'turnUsageOutput' | 'turnUsageReasoning' | 'turnUsageConsumed' | 'turnUsageCount' | 'numberThousand' | 'numberMillion' | 'numberGroupSeparator' | 'stepProcessDoneThinking' | 'stepProcessDoneRead' | 'stepProcessDoneReadImage' | 'stepProcessDoneWrite' | 'stepProcessDoneSearch' | 'stepProcessDoneEdit' | 'stepProcessDoneCommands' | 'stepProcessDoneCode' | 'stepProcessDoneWebSearch' | 'stepProcessDoneWebFetch' | 'stepProcessDoneSubagents' | 'stepProcessDonePlan' | 'stepProcessDoneQuestions' | 'stepProcessDoneTools' | 'stepProcessJoinTwo' | 'stepProcessComma' | 'stepProcessSharedPrefix' | 'stepProcessMore' | 'toolTitleRead' | 'toolTitleReadImage' | 'toolTitleGrep' | 'toolTitleGlob' | 'toolTitleBash' | 'toolTitleWrite' | 'toolTitleEdit' | 'toolTitleCode' | 'toolTitleWebSearch' | 'toolTitleWebFetch' | 'toolTitleGeneric' | 'toolTitleSearch' | 'toolInputLabel' | 'toolOutputLabel' | 'rowPreparing' | 'rowRunning' | 'rowFailed' | 'rowStopped' | 'commandRunning' | 'commandFailed' | 'commandDone' | 'commandTitle' | 'collapseLabel' | 'readWindow' | 'readCollapseAria' | 'readExpandAria' | 'readExpandRest' | 'terminalSignal' | 'terminalExitCode' | 'terminalNoExitCode' | 'terminalRunning' | 'terminalFailed' | 'terminalDone' | 'terminalNoOutput' | 'terminalCollapseAria' | 'terminalExpandAria' | 'terminalExpandRest' | 'terminalCommandLine' | 'terminalSendInput' | 'terminalSession' | 'codeBlockLabel' | 'diffWrapLabel' | 'diffUnwrapLabel' | 'diffCollapseAria' | 'diffExpandAria' | 'diffExpandRest' | 'sessionArchived' | 'sessionHeading' | 'changesSingle' | 'changesMulti' | 'changesBinary' | 'changesAll' | 'changesCollapse' | 'changesOversized' | 'diffLoading' | 'diffMissing' | 'diffError' | 'diffBinary' | 'diffOversized' | 'diffCreated' | 'diffDeleted' | 'diffUnchanged' | 'diffCoarse' | 'diffTruncated' | 'continueBranch' | 'forkConfirmTitle' | 'forkConfirmText' | 'forkConfirmAccept' | 'forkWorking' | 'forkFailed' | 'deliverRowTitle' | 'deliverRowPreparing' | 'deliverRowRunning' | 'deliverRowOk' | 'deliverRowError' | 'deliverRowStopped' | 'deliverFileLabel' | 'deliverPreviewHint' | 'deliverPreviewCard' | 'deliverAll' | 'deliverCollapse' | 'deliverExpandAria' | 'deliverCollapseAria' | 'composerPlaceholder' | 'composerHint' | 'dtPlaceholder' | 'dtStart' | 'dtEnd' | 'dtToday' | 'dtNow' | 'dtClear' | 'dtHour' | 'dtMinute' | 'dtSecond' | 'dtPrevYear' | 'dtPrevMonth' | 'dtNextMonth' | 'dtNextYear' | 'dtInvalidRange';
|
|
11
11
|
/** 文案函数:`vars` 用于填 `{n}` 这类占位。 */
|
|
12
12
|
export type Translate = (key: UtilMessageKey, vars?: Record<string, number | string>) => string;
|
|
13
13
|
export declare function setLocale(locale: Locale): void;
|
package/dist/utils/i18n.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/utils/i18n.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/utils/i18n.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/i18n.js
CHANGED
|
@@ -67,6 +67,8 @@ const DICT = {
|
|
|
67
67
|
dockResize: '拖动调整宽度',
|
|
68
68
|
dockCollapse: '收起面板',
|
|
69
69
|
dockExpand: '展开面板',
|
|
70
|
+
backToTop: '回到顶部',
|
|
71
|
+
quickToolbarAria: '快捷工具栏',
|
|
70
72
|
errorRetry: '重试',
|
|
71
73
|
confirm: '确定',
|
|
72
74
|
cancel: '取消',
|
|
@@ -338,6 +340,8 @@ const DICT = {
|
|
|
338
340
|
dockResize: 'Drag to resize',
|
|
339
341
|
dockCollapse: 'Collapse panel',
|
|
340
342
|
dockExpand: 'Expand panel',
|
|
343
|
+
backToTop: 'Back to top',
|
|
344
|
+
quickToolbarAria: 'Quick toolbar',
|
|
341
345
|
errorRetry: 'Retry',
|
|
342
346
|
confirm: 'Confirm',
|
|
343
347
|
cancel: 'Cancel',
|
package/dist/utils/i18n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/utils/i18n.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/utils/i18n.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
不写进插件依赖。
|
|
27
27
|
- 后果:在 Node / 单测 / 任何非内核环境 `import` 它会 `ERR_MODULE_NOT_FOUND`,
|
|
28
28
|
**一个控件依赖它就会让整个 `ui` 入口 import 失败**(实测过)。
|
|
29
|
-
- 处置:本包 `ui` **零官方依赖**(`
|
|
30
|
-
|
|
29
|
+
- 处置:本包 `ui` **零官方依赖**(`QuickToolbar` 的图标由调用方传入、内部回顶箭头自绘,
|
|
30
|
+
`SelectField` 因依赖官方 `Menu` 被删,由自绘 `Picker` 取代)。
|
|
31
31
|
- 来源:`dsh-task-dispatch-table/src/client/primitives.d.ts` 头部注释。
|
|
32
32
|
|
|
33
33
|
## 3. 宿主 API 的位置参数校验
|
package/docs/design/structure.md
CHANGED
|
@@ -46,7 +46,7 @@ dsh-plugin-core/
|
|
|
46
46
|
│ │ │ 两者都只画图形,无背景无定位,背景与位置归调用方
|
|
47
47
|
│ │ └── Loading ✅ 旧复合浮层(贴右下角的 pill + 两种加载卡),保留、已标 deprecated
|
|
48
48
|
│ ├── 展示 ✅ Card / StripCard / Chip / MarqueeText /
|
|
49
|
-
│ │ SectionHead / FieldHint / LiveText /
|
|
49
|
+
│ │ SectionHead / FieldHint / LiveText /
|
|
50
50
|
│ │ Table(第一档 Plain:外框 + 灰底表头 + 按列分隔线;
|
|
51
51
|
│ │ 表级 density / striped / borders,列级 divider / padding / headerTone,
|
|
52
52
|
│ │ 单元格可跨列跨行;TableGrid / TableZebra 预留同族独立组件)
|
|
@@ -56,6 +56,8 @@ dsh-plugin-core/
|
|
|
56
56
|
│ └── 布局 ✅ PanelDock / createPanelDock(可停靠分栏:多面板 + 拖拽拉栏)
|
|
57
57
|
│ 组名 = 窗口一对一、同名覆盖、默认上限 3 超限拒绝;
|
|
58
58
|
│ 不做 tab 切换 / 自动淘汰 / 浮动层(用户 2026-10-20 定案)
|
|
59
|
+
│ ✅ QuickToolbar(右侧浮动快捷工具栏:内置回顶部 + 自定义按钮;
|
|
60
|
+
│ 纵向恒贴屏幕底边,横向默认贴屏幕右缘或指定控件右缘外侧)
|
|
59
61
|
│
|
|
60
62
|
├── utils/ ③ 纯方法 —— 零 React / 零 DOM(谁都能用,它不依赖谁)
|
|
61
63
|
│ ├── date ✅ 日期 / 相对时间 / 时间区间
|
|
@@ -117,9 +119,9 @@ utils(谁都不依赖,谁都可以用)
|
|
|
117
119
|
│ ├─ 表单 Input / NumberInput / PrefixedInput / Textarea / Checkbox / Segmented / Picker / DateTimePicker
|
|
118
120
|
│ ├─ 动作 Button / IconButton
|
|
119
121
|
│ ├─ 反馈 Modal / Toast
|
|
120
|
-
│ ├─ 展示 Card / StripCard / Chip / Table / MarqueeText / SectionHead / FieldHint / LiveText
|
|
122
|
+
│ ├─ 展示 Card / StripCard / Chip / Table / MarqueeText / SectionHead / FieldHint / LiveText
|
|
121
123
|
│ ├─ 组合 SplitGroup(展示在选择器页)
|
|
122
|
-
│ └─ 布局 PanelDock / 拉栏
|
|
124
|
+
│ └─ 布局 PanelDock / 拉栏 / QuickToolbar
|
|
123
125
|
│
|
|
124
126
|
├─ ③ 高级空间
|
|
125
127
|
│ ├─ 文件浏览 FileBrowser + openFilePreview / pickWorkspaceFile(点文件夹、点文件看预览)
|
|
@@ -137,7 +139,8 @@ utils(谁都不依赖,谁都可以用)
|
|
|
137
139
|
| `buttons.tsx` | ② 基础控件 · 动作 |
|
|
138
140
|
| `pickers.tsx` | ② 基础控件 · 表单 |
|
|
139
141
|
| `display.tsx` | ② 基础控件 · 展示 |
|
|
140
|
-
| `feedback.tsx` | ② 基础控件 · 反馈 |
|
|
142
|
+
| `feedback.tsx` / `controls.tsx` | ② 基础控件 · 反馈 |
|
|
143
|
+
| `toolbar.tsx` | ② 基础控件 · 布局(QuickToolbar) |
|
|
141
144
|
| `explorer.tsx` | ③ 高级空间 · 文件浏览 |
|
|
142
145
|
| `session.tsx` | ③ 高级空间 · 会话预览 |
|
|
143
146
|
| `utils.tsx` | ④ 工具方法 |
|
package/docs/help/ui.doc.ts
CHANGED
|
@@ -182,6 +182,35 @@ h(Table, {
|
|
|
182
182
|
onLoadMore: () => fetchNextPage(), // 滚到接近底部自动触发一次
|
|
183
183
|
})`
|
|
184
184
|
|
|
185
|
+
const quickToolbarExample = `import { QuickToolbar } from 'dsh-plugin-core/ui'
|
|
186
|
+
|
|
187
|
+
// 默认:贴屏幕右下角(纵向恒贴屏幕底边、横向贴右缘,各留 16px)
|
|
188
|
+
h(QuickToolbar, {
|
|
189
|
+
onAction: (id) => console.log('点了', id),
|
|
190
|
+
items: [
|
|
191
|
+
{ id: 'search', icon: <SearchIcon />, label: '搜索' },
|
|
192
|
+
{ id: 'settings', icon: <SettingsIcon />, label: '设置' },
|
|
193
|
+
],
|
|
194
|
+
// backToTop 默认开:滚过 320px 才出现;不想要就传 false
|
|
195
|
+
})
|
|
196
|
+
|
|
197
|
+
// 跟随某个控件:横向贴它的右缘外侧;右侧放不下自动退回屏幕右缘
|
|
198
|
+
h(QuickToolbar, {
|
|
199
|
+
anchorId: 'my-content',
|
|
200
|
+
items: [...],
|
|
201
|
+
backToTop: { order: 2 }, // 回顶部排到第 3 位;默认 0 在最上
|
|
202
|
+
})
|
|
203
|
+
|
|
204
|
+
// 自定义项:显隐 / 排序 / 配色
|
|
205
|
+
h(QuickToolbar, {
|
|
206
|
+
items: [
|
|
207
|
+
{ id: 'search', icon: <SearchIcon />, label: '搜索', when: 'scroll', threshold: 480 },
|
|
208
|
+
{ id: 'wide', icon: <WideIcon />, label: '宽屏', visible: wide },
|
|
209
|
+
{ id: 'brand', icon: <BrandIcon />, label: '品牌', color: '#7c3aed', fgColor: '#fff' },
|
|
210
|
+
],
|
|
211
|
+
scrollContainer: myScrollElement,
|
|
212
|
+
})`
|
|
213
|
+
|
|
185
214
|
const doc: DocTopic = {
|
|
186
215
|
title: { zh: 'ui —— 基础控件', en: 'ui — base controls' },
|
|
187
216
|
exports: [
|
|
@@ -189,7 +218,7 @@ const doc: DocTopic = {
|
|
|
189
218
|
'Checkbox', 'fieldMetricsOf', 'Picker', 'WorkspacePicker', 'ModelPicker', 'DateTimePicker', 'Card', 'StripCard',
|
|
190
219
|
'Chip', 'Table', 'Pagination', 'Modal', 'FieldHint', 'setTooltipRenderer', 'showToast', 'notify', 'showHostToast',
|
|
191
220
|
'Loader', 'LoaderBar', 'Loading', 'RunningBlocks', 'SectionHead', 'MarqueeText', 'LiveText',
|
|
192
|
-
'
|
|
221
|
+
'QuickToolbar', 'startResizeLayoutWidth', 'PanelDock', 'createPanelDock', 'DockPanel',
|
|
193
222
|
'ensureControls', 'setStyleKit',
|
|
194
223
|
],
|
|
195
224
|
sections: [
|
|
@@ -631,7 +660,6 @@ const doc: DocTopic = {
|
|
|
631
660
|
{ name: 'SectionHead({ icon?, title, right?, accent?, flush? })', type: '', def: '', desc: { zh: '分区标题:标签(可选,画出来的短竖线)/ icon + 标题 + 右侧控件。accent = 标签颜色(内置色名 / 任意色值 / default / false 不画);flush = 去底边距', en: 'Section heading: optional drawn bar / icon + title + right controls. accent = bar colour (built-in name / raw value / default / false for none); flush = no bottom margin' } },
|
|
632
661
|
{ name: 'MarqueeText({ text, style?, title?, className? })', type: '', def: '', desc: { zh: '超长省略、hover 滚动', en: 'Ellipsis on overflow, scroll on hover' } },
|
|
633
662
|
{ name: 'LiveText({ render, style? })', type: '', def: '', desc: { zh: '定时重渲染(相对时间这类)', en: 'Periodic re-render (for relative time etc.)' } },
|
|
634
|
-
{ name: 'BackToTop({ anchorId? })', type: '', def: '', desc: { zh: '回到顶部,贴主容器右缘外侧', en: 'Back-to-top, outside the main container’s right edge' } },
|
|
635
663
|
{ name: 'startResizeLayoutWidth(opts)', type: '', def: '', desc: { zh: '拖拽调整布局宽度(root 不传则回落 #dshpc-root)', en: 'Drag to resize layout width (falls back to #dshpc-root if root omitted)' } },
|
|
636
664
|
],
|
|
637
665
|
},
|
|
@@ -708,6 +736,66 @@ const doc: DocTopic = {
|
|
|
708
736
|
],
|
|
709
737
|
code: [{ id: 'ui-paneldock-example', lang: 'ts', src: panelDockExample }],
|
|
710
738
|
},
|
|
739
|
+
{
|
|
740
|
+
id: 'quick-toolbar',
|
|
741
|
+
heading: { zh: 'QuickToolbar(快捷工具栏)', en: 'QuickToolbar (quick toolbar)' },
|
|
742
|
+
prose: [
|
|
743
|
+
{
|
|
744
|
+
zh: '右侧悬浮的一列独立圆钮:**纵向恒定**贴屏幕底边(默认 16px,从下往上排),**横向默认**贴屏幕右缘。传 `anchorId` / `anchor()` 时横向贴到那个控件的右缘外侧、同样留 16px;右侧再留 16px 后放不下就自动退回贴屏幕右缘。锚点控件找不到按「跟随窗口」处理,不报错。',
|
|
745
|
+
en: 'A right-side floating column of standalone round buttons. Vertically it **always** hugs the viewport bottom (16px by default, stacking upward); horizontally it defaults to the viewport’s right edge. Pass `anchorId` / `anchor()` to sit outside that control’s right edge with the same 16px gap; if another 16px would overflow, it falls back to the viewport edge. A missing anchor is treated as “follow the window”, no error.',
|
|
746
|
+
},
|
|
747
|
+
{
|
|
748
|
+
zh: '内置「回到顶部」默认开启:`when: \'scroll\'`、阈值 320px,滚过才出现,点击平滑回顶(`prefers-reduced-motion` 下瞬时)。传 `backToTop: false` 关掉;传对象可调 `{ order, label, threshold }`。',
|
|
749
|
+
en: 'The built-in back-to-top is on by default: `when: \'scroll\'`, threshold 320px — it appears after scrolling and smoothly returns to the top (instant under `prefers-reduced-motion`). Pass `backToTop: false` to remove it, or an object to tune `{ order, label, threshold }`.',
|
|
750
|
+
},
|
|
751
|
+
{
|
|
752
|
+
zh: '任意按钮显隐切换都带 0.2s 动画:出现时淡入并上移一小段,消失时先淡出再卸载(同一列的其它按钮不会瞬时跳位);`prefers-reduced-motion` 下动画关闭。',
|
|
753
|
+
en: 'Every visibility change is animated over 0.2s: a button fades in with a slight upward slide, and fades out before being unmounted (the rest of the column never jumps); animations are off under `prefers-reduced-motion`.',
|
|
754
|
+
},
|
|
755
|
+
{
|
|
756
|
+
zh: '自定义项走 `items`:`icon` + `label` + `onClick`,单项的 `visible` / `when` / `order` / `threshold` / `color` / `fgColor` 都可配;点击后先调 `onClick`,再统一回调 `onAction(id, item)`。排序按 `order` 升序:回顶部默认 0 在最上,自定义项默认按数组下标 + 1 往下排。',
|
|
757
|
+
en: 'Custom buttons go through `items`: `icon` + `label` + `onClick`, each with optional `visible` / `when` / `order` / `threshold` / `color` / `fgColor`. A click calls `onClick` first, then the shared `onAction(id, item)`. Sorting is ascending by `order`: back-to-top defaults to 0 (topmost), custom items default to array index + 1 below it.',
|
|
758
|
+
},
|
|
759
|
+
{
|
|
760
|
+
zh: '边界:`position: fixed`,不占布局;滚动容器默认取工具栏最近的可纵向滚动祖先,也可显式给 `scrollContainer`。只做右侧;按钮尺寸 / 间距 / 贴边距离由 props 控制,样式自注入,不依赖调用方额外引 CSS。',
|
|
761
|
+
en: 'Boundary: `position: fixed`, takes no layout space. The scroll container defaults to the nearest vertically scrollable ancestor, or pass `scrollContainer` explicitly. Right side only; size / gap / edge distance are props, and the component injects its own styles — callers need no extra CSS.',
|
|
762
|
+
},
|
|
763
|
+
],
|
|
764
|
+
api: [
|
|
765
|
+
{
|
|
766
|
+
id: 'ui-quick-toolbar',
|
|
767
|
+
rows: [
|
|
768
|
+
{ name: 'items', type: 'QuickToolbarItem[]', def: '[]', desc: { zh: '自定义按钮列表,排在回顶部下面', en: 'Custom buttons, listed below back-to-top by default' } },
|
|
769
|
+
{ name: 'backToTop', type: 'boolean | QuickToolbarBackToTop', def: 'true', desc: { zh: '内置回顶部:false 关掉;对象可调 order / label / threshold', en: 'Built-in back-to-top: false to remove; object tunes order / label / threshold' } },
|
|
770
|
+
{ name: 'onAction', type: '(id, item) => void', def: '—', desc: { zh: '自定义项点击后的统一回调(在单项 onClick 之后)', en: 'Shared callback after a custom item’s own onClick' } },
|
|
771
|
+
{ name: 'offset', type: 'number', def: '16', desc: { zh: '与右缘 / 屏幕底边的距离(px)', en: 'Distance to the right edge / viewport bottom (px)' } },
|
|
772
|
+
{ name: 'gap', type: 'number', def: '12', desc: { zh: '相邻按钮的纵向间距(px)', en: 'Vertical gap between buttons (px)' } },
|
|
773
|
+
{ name: 'size', type: 'number', def: '44', desc: { zh: '按钮直径(px)', en: 'Button diameter (px)' } },
|
|
774
|
+
{ name: 'anchorId', type: 'string', def: '—', desc: { zh: '跟随这个 id 的控件;不传 = 跟随窗口', en: 'Follow the control with this id; omit to follow the window' } },
|
|
775
|
+
{ name: 'anchor', type: '() => HTMLElement | null', def: '—', desc: { zh: '动态锚点(优先于 anchorId);返回 null 按跟随窗口', en: 'Dynamic anchor (wins over anchorId); null means follow the window' } },
|
|
776
|
+
{ name: 'scrollContainer', type: 'HTMLElement | () => HTMLElement | null', def: '最近可滚动祖先', desc: { zh: '显式指定滚动容器', en: 'Explicit scroll container' } },
|
|
777
|
+
{ name: 'ariaLabel', type: 'string', def: '内置字典「快捷工具栏」', desc: { zh: '工具栏无障碍名', en: 'Toolbar accessible name' } },
|
|
778
|
+
{ name: 'className', type: 'string', def: '—', desc: { zh: '追加 class(只补布局)', en: 'Extra class (layout only)' } },
|
|
779
|
+
],
|
|
780
|
+
},
|
|
781
|
+
{
|
|
782
|
+
id: 'ui-quick-toolbar-item',
|
|
783
|
+
rows: [
|
|
784
|
+
{ name: 'id', type: 'string', def: '—', required: '必填', desc: { zh: '唯一标识,onAction 原样回传', en: 'Unique id, echoed back by onAction' } },
|
|
785
|
+
{ name: 'icon', type: 'ReactNode', def: '—', required: '必填', desc: { zh: '按钮图标', en: 'Button icon' } },
|
|
786
|
+
{ name: 'label', type: 'string', def: '—', required: '必填', desc: { zh: '无障碍名,兼 title', en: 'Accessible name, doubles as title' } },
|
|
787
|
+
{ name: 'onClick', type: '() => void', def: '—', desc: { zh: '单项点击回调', en: 'Per-item click handler' } },
|
|
788
|
+
{ name: 'visible', type: 'boolean', def: 'true', desc: { zh: 'false = 永久隐藏', en: 'false hides it permanently' } },
|
|
789
|
+
{ name: 'when', type: '\'always\' | \'scroll\'', def: '\'always\'', desc: { zh: 'scroll = 滚过阈值才出现', en: 'scroll shows it only past the threshold' } },
|
|
790
|
+
{ name: 'order', type: 'number', def: '数组下标 + 1', desc: { zh: '越小越靠上', en: 'Smaller sorts higher' } },
|
|
791
|
+
{ name: 'threshold', type: 'number', def: '320', desc: { zh: 'when: scroll 的触发距离(px)', en: 'Trigger distance (px) for when: scroll' } },
|
|
792
|
+
{ name: 'color', type: 'string', def: '主题 solid', desc: { zh: '覆盖按钮底色', en: 'Override button background' } },
|
|
793
|
+
{ name: 'fgColor', type: 'string', def: '主题 on-solid', desc: { zh: '覆盖图标 / 文字色', en: 'Override icon / text colour' } },
|
|
794
|
+
],
|
|
795
|
+
},
|
|
796
|
+
],
|
|
797
|
+
code: [{ id: 'ui-quicktoolbar-example', lang: 'tsx', src: quickToolbarExample }],
|
|
798
|
+
},
|
|
711
799
|
],
|
|
712
800
|
}
|
|
713
801
|
|
package/docs/help/ui.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
> EN: ui — base controls
|
|
6
6
|
|
|
7
|
-
导出:Button、IconButton、Segmented、SplitGroup、Input、PrefixedInput、NumberInput、Textarea、Checkbox、fieldMetricsOf、Picker、WorkspacePicker、ModelPicker、DateTimePicker、Card、StripCard、Chip、Table、Pagination、Modal、FieldHint、setTooltipRenderer、showToast、notify、showHostToast、Loader、LoaderBar、Loading、RunningBlocks、SectionHead、MarqueeText、LiveText、
|
|
7
|
+
导出:Button、IconButton、Segmented、SplitGroup、Input、PrefixedInput、NumberInput、Textarea、Checkbox、fieldMetricsOf、Picker、WorkspacePicker、ModelPicker、DateTimePicker、Card、StripCard、Chip、Table、Pagination、Modal、FieldHint、setTooltipRenderer、showToast、notify、showHostToast、Loader、LoaderBar、Loading、RunningBlocks、SectionHead、MarqueeText、LiveText、QuickToolbar、startResizeLayoutWidth、PanelDock、createPanelDock、DockPanel、ensureControls、setStyleKit
|
|
8
8
|
|
|
9
9
|
## 概览
|
|
10
10
|
|
|
@@ -556,7 +556,6 @@ Modal 是自绘 overlay,不走 react-dom portal。
|
|
|
556
556
|
| `SectionHead({ icon?, title, right?, accent?, flush? })` | `` | | 分区标题:标签(可选,画出来的短竖线)/ icon + 标题 + 右侧控件。accent = 标签颜色(内置色名 / 任意色值 / default / false 不画);flush = 去底边距 | Section heading: optional drawn bar / icon + title + right controls. accent = bar colour (built-in name / raw value / default / false for none); flush = no bottom margin |
|
|
557
557
|
| `MarqueeText({ text, style?, title?, className? })` | `` | | 超长省略、hover 滚动 | Ellipsis on overflow, scroll on hover |
|
|
558
558
|
| `LiveText({ render, style? })` | `` | | 定时重渲染(相对时间这类) | Periodic re-render (for relative time etc.) |
|
|
559
|
-
| `BackToTop({ anchorId? })` | `` | | 回到顶部,贴主容器右缘外侧 | Back-to-top, outside the main container’s right edge |
|
|
560
559
|
| `startResizeLayoutWidth(opts)` | `` | | 拖拽调整布局宽度(root 不传则回落 #dshpc-root) | Drag to resize layout width (falls back to #dshpc-root if root omitted) |
|
|
561
560
|
|
|
562
561
|
| 参数 | 类型 | 默认 | 说明(zh) | 说明(en) |
|
|
@@ -631,3 +630,85 @@ h('div', { style: { display: 'flex' } },
|
|
|
631
630
|
)
|
|
632
631
|
// 之后任何地方:dock.open('files') / dock.close('files')
|
|
633
632
|
```
|
|
633
|
+
|
|
634
|
+
## QuickToolbar(快捷工具栏)
|
|
635
|
+
|
|
636
|
+
> EN: QuickToolbar (quick toolbar)
|
|
637
|
+
|
|
638
|
+
右侧悬浮的一列独立圆钮:**纵向恒定**贴屏幕底边(默认 16px,从下往上排),**横向默认**贴屏幕右缘。传 `anchorId` / `anchor()` 时横向贴到那个控件的右缘外侧、同样留 16px;右侧再留 16px 后放不下就自动退回贴屏幕右缘。锚点控件找不到按「跟随窗口」处理,不报错。
|
|
639
|
+
|
|
640
|
+
> EN: A right-side floating column of standalone round buttons. Vertically it **always** hugs the viewport bottom (16px by default, stacking upward); horizontally it defaults to the viewport’s right edge. Pass `anchorId` / `anchor()` to sit outside that control’s right edge with the same 16px gap; if another 16px would overflow, it falls back to the viewport edge. A missing anchor is treated as “follow the window”, no error.
|
|
641
|
+
|
|
642
|
+
内置「回到顶部」默认开启:`when: 'scroll'`、阈值 320px,滚过才出现,点击平滑回顶(`prefers-reduced-motion` 下瞬时)。传 `backToTop: false` 关掉;传对象可调 `{ order, label, threshold }`。
|
|
643
|
+
|
|
644
|
+
> EN: The built-in back-to-top is on by default: `when: 'scroll'`, threshold 320px — it appears after scrolling and smoothly returns to the top (instant under `prefers-reduced-motion`). Pass `backToTop: false` to remove it, or an object to tune `{ order, label, threshold }`.
|
|
645
|
+
|
|
646
|
+
任意按钮显隐切换都带 0.2s 动画:出现时淡入并上移一小段,消失时先淡出再卸载(同一列的其它按钮不会瞬时跳位);`prefers-reduced-motion` 下动画关闭。
|
|
647
|
+
|
|
648
|
+
> EN: Every visibility change is animated over 0.2s: a button fades in with a slight upward slide, and fades out before being unmounted (the rest of the column never jumps); animations are off under `prefers-reduced-motion`.
|
|
649
|
+
|
|
650
|
+
自定义项走 `items`:`icon` + `label` + `onClick`,单项的 `visible` / `when` / `order` / `threshold` / `color` / `fgColor` 都可配;点击后先调 `onClick`,再统一回调 `onAction(id, item)`。排序按 `order` 升序:回顶部默认 0 在最上,自定义项默认按数组下标 + 1 往下排。
|
|
651
|
+
|
|
652
|
+
> EN: Custom buttons go through `items`: `icon` + `label` + `onClick`, each with optional `visible` / `when` / `order` / `threshold` / `color` / `fgColor`. A click calls `onClick` first, then the shared `onAction(id, item)`. Sorting is ascending by `order`: back-to-top defaults to 0 (topmost), custom items default to array index + 1 below it.
|
|
653
|
+
|
|
654
|
+
边界:`position: fixed`,不占布局;滚动容器默认取工具栏最近的可纵向滚动祖先,也可显式给 `scrollContainer`。只做右侧;按钮尺寸 / 间距 / 贴边距离由 props 控制,样式自注入,不依赖调用方额外引 CSS。
|
|
655
|
+
|
|
656
|
+
> EN: Boundary: `position: fixed`, takes no layout space. The scroll container defaults to the nearest vertically scrollable ancestor, or pass `scrollContainer` explicitly. Right side only; size / gap / edge distance are props, and the component injects its own styles — callers need no extra CSS.
|
|
657
|
+
|
|
658
|
+
| 参数 | 类型 | 默认 | 说明(zh) | 说明(en) |
|
|
659
|
+
|---|---|---|---|---|
|
|
660
|
+
| `items` | `QuickToolbarItem[]` | [] | 自定义按钮列表,排在回顶部下面 | Custom buttons, listed below back-to-top by default |
|
|
661
|
+
| `backToTop` | `boolean \| QuickToolbarBackToTop` | true | 内置回顶部:false 关掉;对象可调 order / label / threshold | Built-in back-to-top: false to remove; object tunes order / label / threshold |
|
|
662
|
+
| `onAction` | `(id, item) => void` | — | 自定义项点击后的统一回调(在单项 onClick 之后) | Shared callback after a custom item’s own onClick |
|
|
663
|
+
| `offset` | `number` | 16 | 与右缘 / 屏幕底边的距离(px) | Distance to the right edge / viewport bottom (px) |
|
|
664
|
+
| `gap` | `number` | 12 | 相邻按钮的纵向间距(px) | Vertical gap between buttons (px) |
|
|
665
|
+
| `size` | `number` | 44 | 按钮直径(px) | Button diameter (px) |
|
|
666
|
+
| `anchorId` | `string` | — | 跟随这个 id 的控件;不传 = 跟随窗口 | Follow the control with this id; omit to follow the window |
|
|
667
|
+
| `anchor` | `() => HTMLElement \| null` | — | 动态锚点(优先于 anchorId);返回 null 按跟随窗口 | Dynamic anchor (wins over anchorId); null means follow the window |
|
|
668
|
+
| `scrollContainer` | `HTMLElement \| () => HTMLElement \| null` | 最近可滚动祖先 | 显式指定滚动容器 | Explicit scroll container |
|
|
669
|
+
| `ariaLabel` | `string` | 内置字典「快捷工具栏」 | 工具栏无障碍名 | Toolbar accessible name |
|
|
670
|
+
| `className` | `string` | — | 追加 class(只补布局) | Extra class (layout only) |
|
|
671
|
+
|
|
672
|
+
| 参数 | 类型 | 必填 | 默认 | 说明(zh) | 说明(en) |
|
|
673
|
+
|---|---|---|---|---|---|
|
|
674
|
+
| `id` | `string` | 必填 | — | 唯一标识,onAction 原样回传 | Unique id, echoed back by onAction |
|
|
675
|
+
| `icon` | `ReactNode` | 必填 | — | 按钮图标 | Button icon |
|
|
676
|
+
| `label` | `string` | 必填 | — | 无障碍名,兼 title | Accessible name, doubles as title |
|
|
677
|
+
| `onClick` | `() => void` | — | — | 单项点击回调 | Per-item click handler |
|
|
678
|
+
| `visible` | `boolean` | — | true | false = 永久隐藏 | false hides it permanently |
|
|
679
|
+
| `when` | `'always' \| 'scroll'` | — | 'always' | scroll = 滚过阈值才出现 | scroll shows it only past the threshold |
|
|
680
|
+
| `order` | `number` | — | 数组下标 + 1 | 越小越靠上 | Smaller sorts higher |
|
|
681
|
+
| `threshold` | `number` | — | 320 | when: scroll 的触发距离(px) | Trigger distance (px) for when: scroll |
|
|
682
|
+
| `color` | `string` | — | 主题 solid | 覆盖按钮底色 | Override button background |
|
|
683
|
+
| `fgColor` | `string` | — | 主题 on-solid | 覆盖图标 / 文字色 | Override icon / text colour |
|
|
684
|
+
|
|
685
|
+
```tsx id="ui-quicktoolbar-example"
|
|
686
|
+
import { QuickToolbar } from 'dsh-plugin-core/ui'
|
|
687
|
+
|
|
688
|
+
// 默认:贴屏幕右下角(纵向恒贴屏幕底边、横向贴右缘,各留 16px)
|
|
689
|
+
h(QuickToolbar, {
|
|
690
|
+
onAction: (id) => console.log('点了', id),
|
|
691
|
+
items: [
|
|
692
|
+
{ id: 'search', icon: <SearchIcon />, label: '搜索' },
|
|
693
|
+
{ id: 'settings', icon: <SettingsIcon />, label: '设置' },
|
|
694
|
+
],
|
|
695
|
+
// backToTop 默认开:滚过 320px 才出现;不想要就传 false
|
|
696
|
+
})
|
|
697
|
+
|
|
698
|
+
// 跟随某个控件:横向贴它的右缘外侧;右侧放不下自动退回屏幕右缘
|
|
699
|
+
h(QuickToolbar, {
|
|
700
|
+
anchorId: 'my-content',
|
|
701
|
+
items: [...],
|
|
702
|
+
backToTop: { order: 2 }, // 回顶部排到第 3 位;默认 0 在最上
|
|
703
|
+
})
|
|
704
|
+
|
|
705
|
+
// 自定义项:显隐 / 排序 / 配色
|
|
706
|
+
h(QuickToolbar, {
|
|
707
|
+
items: [
|
|
708
|
+
{ id: 'search', icon: <SearchIcon />, label: '搜索', when: 'scroll', threshold: 480 },
|
|
709
|
+
{ id: 'wide', icon: <WideIcon />, label: '宽屏', visible: wide },
|
|
710
|
+
{ id: 'brand', icon: <BrandIcon />, label: '品牌', color: '#7c3aed', fgColor: '#fff' },
|
|
711
|
+
],
|
|
712
|
+
scrollContainer: myScrollElement,
|
|
713
|
+
})
|
|
714
|
+
```
|
package/docs/requirements.md
CHANGED
|
@@ -111,6 +111,7 @@ dsh-plugin-core/
|
|
|
111
111
|
`LoadingBlock` 的转圈改为复用它(环的画法与 keyframes 只剩 `controls/loader.css` 一份)。
|
|
112
112
|
- `Loading` 是旧的「自带定位 + 自带 pill 背景」复合件,**保留不删**但标 `@deprecated`,新代码用 `Loader`。
|
|
113
113
|
- 布局基础:`PanelDock` / `DockPanel` / `createPanelDock`(**可停靠分栏容器**:多面板并存、按组名寻址、拖拽拉栏、宽度记忆;2026-10-20 拍板用此名,替代早先的 `SidebarLayout` / `SplitPane`)。只做右侧;组名与窗口一对一;默认上限 3,超限拒绝新开;不做 tab 切换 / 自动淘汰 / 多份同名;**面板本身始终是布局成员,不做面板浮层**(2026-10-28 补:**收起** = 面板退出布局、另出右侧一只独立的 `position: fixed` 耳朵,点耳朵展开并还原宽度;关闭不留耳朵——耳朵是独立浮层,不是把面板变浮层)。**结构照成熟库口径写 children,`open/close` 只传 id,不把页面树塞进调用参数**
|
|
114
|
+
- 浮动快捷工具栏:`QuickToolbar`(2026-10-31 用户拍板):右侧一列独立圆钮,纵向**恒贴屏幕底边**(默认 16px);横向默认贴屏幕右缘,传 `anchorId` / `anchor()` 时贴到指定控件右缘外侧,右侧放不下则退回屏幕右缘(控件找不到按跟随窗口处理)。内置回顶部默认 `when:'scroll'`、阈值 320,`backToTop:false` 可关掉,对象可调 `order` / `label` / `threshold`;自定义项 `items` 支持 `icon` / `label` / `onClick` / `visible` / `when` / `order` / `threshold` / `color` / `fgColor`,统一 `onAction`。旧的 `BackToTop` **全部删除**,只保留这一份,不做迁移。
|
|
114
115
|
- **通用控件是纯零件,数据由调用方传入**;**领域选择器例外**(2026-10-20 用户拍板反转):
|
|
115
116
|
`ModelPicker` / `WorkspacePicker` 是「现成的包」,接线后**自己取数自己显示**,消费方不再拿数组传 props。
|
|
116
117
|
接线两处、共用同一 path 常量:宿主 `serveModelCatalog(ctx,{path})`(`llm.listModels` 挂只读路由,
|
package/package.json
CHANGED
package/dist/ui/BackToTop.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { createElement as h } from 'react';
|
|
2
|
-
export interface BackToTopProps {
|
|
3
|
-
/** 主内容容器 id,按钮贴到它的右缘外侧;默认 `dshpc-main`。 */
|
|
4
|
-
anchorId?: string;
|
|
5
|
-
}
|
|
6
|
-
/** 统一的回到顶部悬浮按钮。 */
|
|
7
|
-
export declare function BackToTop(props: BackToTopProps): ReturnType<typeof h>;
|
|
8
|
-
//# sourceMappingURL=BackToTop.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BackToTop.d.ts","sourceRoot":"","sources":["../../src/ui/BackToTop.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,aAAa,IAAI,CAAC,EAA+B,MAAM,OAAO,CAAA;AA0BvE,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,mBAAmB;AACnB,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAiErE"}
|
package/dist/ui/BackToTop.js
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 统一的「回到顶部」悬浮按钮(UI 基础层)。
|
|
3
|
-
*
|
|
4
|
-
* 用法:
|
|
5
|
-
* <BackToTop />
|
|
6
|
-
*
|
|
7
|
-
* 行为:
|
|
8
|
-
* - 渲染在主面板滚动容器(page 容器,overflow:auto)内;fixed 定位,**不占布局空间**;
|
|
9
|
-
* - 横向贴在主内容列(`PANEL_CONTENT_ID` = `dshpc-main`,限宽 1120)**右缘外侧**、页面靠下,
|
|
10
|
-
* 与主内容同进退(窗口 resize / 分栏 dock 开合都会跟住);
|
|
11
|
-
* - 滚动超过阈值(默认 320px)才显形,否则隐身(`.is-visible` 切换);
|
|
12
|
-
* - 点击把滚动容器平滑滚回顶部(prefers-reduced-motion 下改用瞬时)。
|
|
13
|
-
*
|
|
14
|
-
* 因为主面板的三个 tab(任务配置 / 执行记录 / 任务日程 …)共用同一个滚动容器,
|
|
15
|
-
* 在 `index.ts` 的 page 容器里渲染**一次**即覆盖所有页面,无需每个页面各放一份。
|
|
16
|
-
*
|
|
17
|
-
* 横向锚定逻辑与 `<Loading />` 同源(后者贴右缘内侧),本件放在右缘**外侧**并留 16px 间隙。
|
|
18
|
-
*/
|
|
19
|
-
import { Chevron } from './chevron.js';
|
|
20
|
-
import { createElement as h, useEffect, useRef, useState } from 'react';
|
|
21
|
-
import { ensureComponentStyles } from './css.js';
|
|
22
|
-
import { BACK_TO_TOP_CSS } from './controls-css.js';
|
|
23
|
-
// 主内容列 id 与 `<Loading />` 同源:必须 == ui/index.ts 的 `PANEL_CONTENT_ID`(`dshpc-main`),
|
|
24
|
-
// 这里用字面量避免与 ui/index 形成循环依赖(Loading 同样如此)。
|
|
25
|
-
const DEFAULT_ANCHOR_ID = 'dshpc-main';
|
|
26
|
-
/** 滚动超过这个距离(px)才显形。 */
|
|
27
|
-
const SHOW_THRESHOLD_PX = 320;
|
|
28
|
-
/** 按钮左缘与主内容列右缘的间隙(px)。 */
|
|
29
|
-
const GAP_PX = 16;
|
|
30
|
-
/** 视口右缘至少留白(px),按钮越界时回退到贴近视口右缘。 */
|
|
31
|
-
const VIEWPORT_PADDING_PX = 8;
|
|
32
|
-
/** 向上找最近的「可纵向滚动」祖先(本件就挂在 page 滚动容器里,一路找到它)。 */
|
|
33
|
-
function findScrollContainer(node) {
|
|
34
|
-
let el = node?.parentElement ?? null;
|
|
35
|
-
while (el !== null) {
|
|
36
|
-
const oy = getComputedStyle(el).overflowY;
|
|
37
|
-
if (oy === 'auto' || oy === 'scroll')
|
|
38
|
-
return el;
|
|
39
|
-
el = el.parentElement;
|
|
40
|
-
}
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
/** 统一的回到顶部悬浮按钮。 */
|
|
44
|
-
export function BackToTop(props) {
|
|
45
|
-
ensureComponentStyles('back-to-top', BACK_TO_TOP_CSS);
|
|
46
|
-
ensureComponentStyles('back-to-top', BACK_TO_TOP_CSS);
|
|
47
|
-
const ref = useRef(null);
|
|
48
|
-
const [visible, setVisible] = useState(false);
|
|
49
|
-
const [left, setLeft] = useState('auto');
|
|
50
|
-
useEffect(() => {
|
|
51
|
-
const btn = ref.current;
|
|
52
|
-
if (btn === null)
|
|
53
|
-
return;
|
|
54
|
-
const anchorId = props.anchorId ?? DEFAULT_ANCHOR_ID;
|
|
55
|
-
const sc = findScrollContainer(btn);
|
|
56
|
-
let observed = null;
|
|
57
|
-
const reposition = () => {
|
|
58
|
-
const el = document.getElementById(anchorId);
|
|
59
|
-
if (el === null)
|
|
60
|
-
return;
|
|
61
|
-
if (observed !== el) {
|
|
62
|
-
if (observed !== null)
|
|
63
|
-
ro.unobserve(observed);
|
|
64
|
-
ro.observe(el);
|
|
65
|
-
observed = el;
|
|
66
|
-
}
|
|
67
|
-
const rect = el.getBoundingClientRect();
|
|
68
|
-
const vw = document.documentElement.clientWidth;
|
|
69
|
-
const bw = btn.offsetWidth;
|
|
70
|
-
let x = rect.right + GAP_PX;
|
|
71
|
-
if (x + bw > vw - VIEWPORT_PADDING_PX)
|
|
72
|
-
x = Math.max(VIEWPORT_PADDING_PX, vw - bw - VIEWPORT_PADDING_PX);
|
|
73
|
-
setLeft(`${x}px`);
|
|
74
|
-
};
|
|
75
|
-
const onScroll = () => {
|
|
76
|
-
const top = sc !== null ? sc.scrollTop : document.documentElement.scrollTop;
|
|
77
|
-
setVisible(top > SHOW_THRESHOLD_PX);
|
|
78
|
-
};
|
|
79
|
-
const ro = new ResizeObserver(reposition);
|
|
80
|
-
reposition();
|
|
81
|
-
onScroll();
|
|
82
|
-
window.addEventListener('resize', reposition);
|
|
83
|
-
if (sc !== null)
|
|
84
|
-
sc.addEventListener('scroll', onScroll);
|
|
85
|
-
return () => {
|
|
86
|
-
window.removeEventListener('resize', reposition);
|
|
87
|
-
if (sc !== null)
|
|
88
|
-
sc.removeEventListener('scroll', onScroll);
|
|
89
|
-
ro.disconnect();
|
|
90
|
-
};
|
|
91
|
-
}, [props.anchorId]);
|
|
92
|
-
const onClick = () => {
|
|
93
|
-
const sc = findScrollContainer(ref.current);
|
|
94
|
-
const reduce = typeof window.matchMedia === 'function'
|
|
95
|
-
&& window.matchMedia('(prefers-reduced-motion: reduce)').matches;
|
|
96
|
-
const behavior = reduce ? 'auto' : 'smooth';
|
|
97
|
-
if (sc !== null)
|
|
98
|
-
sc.scrollTo({ top: 0, behavior });
|
|
99
|
-
else
|
|
100
|
-
window.scrollTo({ top: 0, behavior });
|
|
101
|
-
};
|
|
102
|
-
return h('button', {
|
|
103
|
-
ref,
|
|
104
|
-
type: 'button',
|
|
105
|
-
className: `dshpc-backtotop${visible ? ' is-visible' : ''}`,
|
|
106
|
-
style: { left },
|
|
107
|
-
'aria-label': '回到顶部',
|
|
108
|
-
title: '回到顶部',
|
|
109
|
-
onClick,
|
|
110
|
-
}, h(Chevron, { dir: 'up', size: 18 }));
|
|
111
|
-
}
|
|
112
|
-
//# sourceMappingURL=BackToTop.js.map
|
package/dist/ui/BackToTop.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BackToTop.js","sourceRoot":"","sources":["../../src/ui/BackToTop.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export declare const BACK_TO_TOP_CSS = "\n/* \u56DE\u5230\u9876\u90E8\u60AC\u6D6E\u94AE\uFF1A\u5706\u94AE\u3001\u5B9E\u9762\u3001\u6295\u5F71\uFF1B\u9ED8\u8BA4\u9690\u8EAB\uFF0C\u6EDA\u8FC7\u9608\u503C\u52A0 .is-visible \u624D\u663E\u5F62\u3002\n \u6A2A\u5411 left \u7531\u7EC4\u4EF6\u6309\u4E3B\u5185\u5BB9\u5217\u53F3\u7F18\u5B9E\u65F6\u7B97\u51FA\uFF08\u8D34\u5728\u5176\u53F3\u4FA7\u5916\u4FA7\uFF09\uFF0C\u4E0D\u5199\u6B7B\u3002 */\n.dshpc-backtotop{\n position:fixed;\n bottom:var(--dshpc-space-4);\n z-index:var(--dshpc-z-dock);\n width:44px;height:44px;\n display:inline-flex;align-items:center;justify-content:center;\n padding:0;margin:0;\n box-sizing:border-box;\n border:1px solid var(--dshpc-border);\n border-radius:50%;\n background:var(--dshpc-solid);\n color:var(--dshpc-on-solid);\n box-shadow:var(--dshpc-shadow-2);\n cursor:pointer;\n opacity:0;\n transform:translateY(8px) scale(.92);\n transition:opacity var(--dshpc-dur) var(--dshpc-ease),\n transform var(--dshpc-dur) var(--dshpc-ease),\n background-color var(--dshpc-dur-fast) var(--dshpc-ease);\n pointer-events:none;\n}\n.dshpc-backtotop.is-visible{opacity:1;transform:translateY(0) scale(1);pointer-events:auto;}\n.dshpc-backtotop:hover{background:var(--dshpc-hover);}\n.dshpc-backtotop:active{background:var(--dshpc-active);}\n.dshpc-backtotop:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}\n@media (prefers-reduced-motion: reduce){\n .dshpc-backtotop{transition:opacity var(--dshpc-dur-fast) linear;transform:none;}\n}\n";
|
|
2
|
-
//# sourceMappingURL=back-to-top-css.generated.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"back-to-top-css.generated.d.ts","sourceRoot":"","sources":["../../../src/ui/controls/back-to-top-css.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,8/CAA6sC,CAAA"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
// ⚠️ 生成物,勿手改。真源 = src/ui/controls/back-to-top.css
|
|
2
|
-
// 由 scripts/gen-css.mjs 生成(`pnpm run gen:css`):改样式请改那个 .css 文件后重新生成。
|
|
3
|
-
export const BACK_TO_TOP_CSS = "\n/* 回到顶部悬浮钮:圆钮、实面、投影;默认隐身,滚过阈值加 .is-visible 才显形。\n 横向 left 由组件按主内容列右缘实时算出(贴在其右侧外侧),不写死。 */\n.dshpc-backtotop{\n position:fixed;\n bottom:var(--dshpc-space-4);\n z-index:var(--dshpc-z-dock);\n width:44px;height:44px;\n display:inline-flex;align-items:center;justify-content:center;\n padding:0;margin:0;\n box-sizing:border-box;\n border:1px solid var(--dshpc-border);\n border-radius:50%;\n background:var(--dshpc-solid);\n color:var(--dshpc-on-solid);\n box-shadow:var(--dshpc-shadow-2);\n cursor:pointer;\n opacity:0;\n transform:translateY(8px) scale(.92);\n transition:opacity var(--dshpc-dur) var(--dshpc-ease),\n transform var(--dshpc-dur) var(--dshpc-ease),\n background-color var(--dshpc-dur-fast) var(--dshpc-ease);\n pointer-events:none;\n}\n.dshpc-backtotop.is-visible{opacity:1;transform:translateY(0) scale(1);pointer-events:auto;}\n.dshpc-backtotop:hover{background:var(--dshpc-hover);}\n.dshpc-backtotop:active{background:var(--dshpc-active);}\n.dshpc-backtotop:focus-visible{outline:2px solid var(--dshpc-focus);outline-offset:2px;}\n@media (prefers-reduced-motion: reduce){\n .dshpc-backtotop{transition:opacity var(--dshpc-dur-fast) linear;transform:none;}\n}\n";
|
|
4
|
-
//# sourceMappingURL=back-to-top-css.generated.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"back-to-top-css.generated.js","sourceRoot":"","sources":["../../../src/ui/controls/back-to-top-css.generated.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,qEAAqE;AACrE,MAAM,CAAC,MAAM,eAAe,GAAG,0sCAA0sC,CAAA"}
|