@keenaioc/data-view 0.0.0-poc.1 → 0.2.0-alpha.8
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/CHANGELOG.md +105 -0
- package/DATA-PRIVACY.md +20 -0
- package/INTEGRATION.md +178 -0
- package/KNOWN-LIMITATIONS.md +34 -0
- package/LICENSE +21 -0
- package/README.md +67 -5
- package/dist/contracts.d.ts +33 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +83 -0
- package/dist/contracts.js.map +1 -0
- package/dist/data-view.d.ts +3 -0
- package/dist/data-view.d.ts.map +1 -0
- package/dist/data-view.js +822 -0
- package/dist/data-view.js.map +1 -0
- package/dist/engine.d.ts +34 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +307 -0
- package/dist/engine.js.map +1 -0
- package/dist/gantt-bar.d.ts +17 -0
- package/dist/gantt-bar.d.ts.map +1 -0
- package/dist/gantt-bar.js +142 -0
- package/dist/gantt-bar.js.map +1 -0
- package/dist/gantt-dependencies.d.ts +27 -0
- package/dist/gantt-dependencies.d.ts.map +1 -0
- package/dist/gantt-dependencies.js +218 -0
- package/dist/gantt-dependencies.js.map +1 -0
- package/dist/gantt-dependency-ui.d.ts +37 -0
- package/dist/gantt-dependency-ui.d.ts.map +1 -0
- package/dist/gantt-dependency-ui.js +79 -0
- package/dist/gantt-dependency-ui.js.map +1 -0
- package/dist/gantt-grid.d.ts +27 -0
- package/dist/gantt-grid.d.ts.map +1 -0
- package/dist/gantt-grid.js +72 -0
- package/dist/gantt-grid.js.map +1 -0
- package/dist/gantt-operations.d.ts +14 -0
- package/dist/gantt-operations.d.ts.map +1 -0
- package/dist/gantt-operations.js +103 -0
- package/dist/gantt-operations.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/operations.d.ts +11 -0
- package/dist/operations.d.ts.map +1 -0
- package/dist/operations.js +117 -0
- package/dist/operations.js.map +1 -0
- package/dist/registry.d.ts +13 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +465 -0
- package/dist/registry.js.map +1 -0
- package/dist/remote-data.d.ts +19 -0
- package/dist/remote-data.d.ts.map +1 -0
- package/dist/remote-data.js +67 -0
- package/dist/remote-data.js.map +1 -0
- package/dist/row-move.d.ts +7 -0
- package/dist/row-move.d.ts.map +1 -0
- package/dist/row-move.js +27 -0
- package/dist/row-move.js.map +1 -0
- package/dist/schedule-view.d.ts +27 -0
- package/dist/schedule-view.d.ts.map +1 -0
- package/dist/schedule-view.js +122 -0
- package/dist/schedule-view.js.map +1 -0
- package/dist/schedule.d.ts +28 -0
- package/dist/schedule.d.ts.map +1 -0
- package/dist/schedule.js +97 -0
- package/dist/schedule.js.map +1 -0
- package/dist/style.css +986 -0
- package/dist/timeline.d.ts +25 -0
- package/dist/timeline.d.ts.map +1 -0
- package/dist/timeline.js +58 -0
- package/dist/timeline.js.map +1 -0
- package/dist/toolbar.d.ts +10 -0
- package/dist/toolbar.d.ts.map +1 -0
- package/dist/toolbar.js +31 -0
- package/dist/toolbar.js.map +1 -0
- package/dist/types.d.ts +472 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +22 -0
- package/dist/types.js.map +1 -0
- package/dist/use-remote-data.d.ts +18 -0
- package/dist/use-remote-data.d.ts.map +1 -0
- package/dist/use-remote-data.js +12 -0
- package/dist/use-remote-data.js.map +1 -0
- package/dist/use-row-move.d.ts +12 -0
- package/dist/use-row-move.d.ts.map +1 -0
- package/dist/use-row-move.js +151 -0
- package/dist/use-row-move.js.map +1 -0
- package/dist/v2-panels.d.ts +37 -0
- package/dist/v2-panels.d.ts.map +1 -0
- package/dist/v2-panels.js +108 -0
- package/dist/v2-panels.js.map +1 -0
- package/dist/view-state.d.ts +30 -0
- package/dist/view-state.d.ts.map +1 -0
- package/dist/view-state.js +94 -0
- package/dist/view-state.js.map +1 -0
- package/dist/view-workspace.d.ts +3 -0
- package/dist/view-workspace.d.ts.map +1 -0
- package/dist/view-workspace.js +95 -0
- package/dist/view-workspace.js.map +1 -0
- package/dist/virtual-list.d.ts +12 -0
- package/dist/virtual-list.d.ts.map +1 -0
- package/dist/virtual-list.js +46 -0
- package/dist/virtual-list.js.map +1 -0
- package/package.json +19 -16
- package/index.d.ts +0 -2
- package/index.js +0 -5
- package/react.d.ts +0 -2
- package/react.js +0 -8
- package/style.css +0 -1
package/dist/types.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export const FIELD_TYPES = [
|
|
2
|
+
"singleLineText",
|
|
3
|
+
"multiLineText",
|
|
4
|
+
"number",
|
|
5
|
+
"currency",
|
|
6
|
+
"percentage",
|
|
7
|
+
"checkbox",
|
|
8
|
+
"date",
|
|
9
|
+
"dateTime",
|
|
10
|
+
"singleSelect",
|
|
11
|
+
"multiSelect",
|
|
12
|
+
"person",
|
|
13
|
+
"relation",
|
|
14
|
+
"attachment",
|
|
15
|
+
"createdAt",
|
|
16
|
+
"updatedAt",
|
|
17
|
+
"createdBy",
|
|
18
|
+
"updatedBy",
|
|
19
|
+
"autoNumber",
|
|
20
|
+
"systemReadOnly",
|
|
21
|
+
];
|
|
22
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,gBAAgB;IAChB,eAAe;IACf,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,UAAU;IACV,MAAM;IACN,UAAU;IACV,cAAc;IACd,aAAa;IACb,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,YAAY;IACZ,gBAAgB;CACR,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { DataSource, DataViewQuery } from "./types.js";
|
|
2
|
+
/** Memoize source and getRowId; remount with identityKey when account/dataset changes. */
|
|
3
|
+
export declare function useRemoteDataView<Row>(source: DataSource<Row>, getRowId: (row: Row) => string): {
|
|
4
|
+
rows: Row[];
|
|
5
|
+
onQueryChange: (query: DataViewQuery) => void;
|
|
6
|
+
remote: {
|
|
7
|
+
onLoadMore: () => undefined;
|
|
8
|
+
onRetry: () => void;
|
|
9
|
+
queryKey: string;
|
|
10
|
+
rows: Row[];
|
|
11
|
+
total?: number;
|
|
12
|
+
complete: boolean;
|
|
13
|
+
loading: boolean;
|
|
14
|
+
error: string | null;
|
|
15
|
+
groupCounts?: Record<string, number>;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=use-remote-data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-remote-data.d.ts","sourceRoot":"","sources":["../src/use-remote-data.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE5D,0FAA0F;AAC1F,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM;;2BAIhD,aAAa;;;;;;;;;;;;EAE1D"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useEffect, useMemo, useState } from "react";
|
|
3
|
+
import { createRemoteController } from "./remote-data.js";
|
|
4
|
+
/** Memoize source and getRowId; remount with identityKey when account/dataset changes. */
|
|
5
|
+
export function useRemoteDataView(source, getRowId) {
|
|
6
|
+
const [state, setState] = useState({ rows: [], queryKey: "", complete: false, loading: false, error: null });
|
|
7
|
+
const controller = useMemo(() => createRemoteController(source, getRowId, setState), [source, getRowId]);
|
|
8
|
+
useEffect(() => () => controller.dispose(), [controller]);
|
|
9
|
+
const onQueryChange = useMemo(() => (query) => controller.setQuery(query), [controller]);
|
|
10
|
+
return { rows: state.rows, onQueryChange, remote: { ...state, onLoadMore: () => void controller.loadMore(), onRetry: () => controller.retry() } };
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=use-remote-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-remote-data.js","sourceRoot":"","sources":["../src/use-remote-data.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAuB,MAAM,kBAAkB,CAAC;AAG/E,0FAA0F;AAC1F,MAAM,UAAU,iBAAiB,CAAM,MAAuB,EAAE,QAA8B;IAC5F,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAsB,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClI,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACzG,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,KAAoB,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACxG,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK,UAAU,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC;AACpJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type RefObject, type PointerEvent as ReactPointerEvent, type KeyboardEvent } from "react";
|
|
2
|
+
import type { DataViewConfig, DataViewProps, RowMoveRequest } from "./types.js";
|
|
3
|
+
export declare function useRowMove<Row>(props: DataViewProps<Row>, view: DataViewConfig, root: RefObject<HTMLElement | null>, run: (id: string, action: () => void | Promise<void>) => Promise<unknown>): {
|
|
4
|
+
sourceId: string | null;
|
|
5
|
+
target: RowMoveRequest<Row> | null;
|
|
6
|
+
pending: boolean;
|
|
7
|
+
message: string;
|
|
8
|
+
start: (id: string, event: ReactPointerEvent<HTMLButtonElement>) => void;
|
|
9
|
+
key: (id: string, event: KeyboardEvent<HTMLButtonElement>) => void;
|
|
10
|
+
cancel: () => void;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=use-row-move.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-row-move.d.ts","sourceRoot":"","sources":["../src/use-row-move.ts"],"names":[],"mappings":"AACA,OAAO,EAAwC,KAAK,SAAS,EAAE,KAAK,YAAY,IAAI,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAEzI,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEhF,wBAAgB,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC;;;;;gBAyC1K,MAAM,SAAS,iBAAiB,CAAC,iBAAiB,CAAC;cA0BrD,MAAM,SAAS,aAAa,CAAC,iBAAiB,CAAC;;EAWjE"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useEffect, useMemo, useRef, useState } from "react";
|
|
3
|
+
import { rowGroupPaths, validateRowMove } from "./row-move.js";
|
|
4
|
+
export function useRowMove(props, view, root, run) {
|
|
5
|
+
const [sourceId, setSourceId] = useState(null);
|
|
6
|
+
const [target, setTarget] = useState(null);
|
|
7
|
+
const [message, setMessage] = useState("");
|
|
8
|
+
const [pending, setPending] = useState(false);
|
|
9
|
+
const paths = useMemo(() => rowGroupPaths(props.rows, props.fields, view.groups, props.getRowId), [props.rows, props.fields, view.groups, props.getRowId]);
|
|
10
|
+
const current = useRef({ props, view, run, paths });
|
|
11
|
+
current.current = { props, view, run, paths };
|
|
12
|
+
const gesture = useRef(null);
|
|
13
|
+
const cleanup = useRef(null);
|
|
14
|
+
function cancel() { cleanup.current?.(); gesture.current = null; setSourceId(null); setTarget(null); }
|
|
15
|
+
useEffect(() => () => cleanup.current?.(), []);
|
|
16
|
+
function request(id, node, after = false) {
|
|
17
|
+
const { props: p, view: v } = current.current;
|
|
18
|
+
const row = p.rows.find((r) => p.getRowId(r) === id);
|
|
19
|
+
if (!row)
|
|
20
|
+
return null;
|
|
21
|
+
const paths = current.current.paths;
|
|
22
|
+
const group = node.dataset.groupKey;
|
|
23
|
+
const targetRowId = node.dataset.moveRow ?? null;
|
|
24
|
+
const targetGroupPath = group ? paths.groupPaths.get(group) : targetRowId ? paths.rowPaths.get(targetRowId) : undefined;
|
|
25
|
+
if (!targetGroupPath)
|
|
26
|
+
return null;
|
|
27
|
+
const r = { row, rowId: id, targetRowId, position: group ? "groupEnd" : after ? "after" : "before", sourceGroupPath: paths.rowPaths.get(id) ?? [], targetGroupPath };
|
|
28
|
+
return !validateRowMove(r, v.groups) && p.rowMove?.canDrop(r) ? r : null;
|
|
29
|
+
}
|
|
30
|
+
async function commit(r) {
|
|
31
|
+
cancel();
|
|
32
|
+
if (!r || pending)
|
|
33
|
+
return;
|
|
34
|
+
setPending(true);
|
|
35
|
+
setMessage("正在移動資料…");
|
|
36
|
+
try {
|
|
37
|
+
await current.current.run(r.rowId, async () => {
|
|
38
|
+
const { props: p, view: v } = current.current;
|
|
39
|
+
const row = p.rows.find((row) => p.getRowId(row) === r.rowId);
|
|
40
|
+
if (!row || p.access === "denied" || p.rowMove?.canMove?.(row) === false || !p.rowMove)
|
|
41
|
+
throw new Error("資料不存在或無移動權限");
|
|
42
|
+
const paths = rowGroupPaths(p.rows, p.fields, v.groups, p.getRowId);
|
|
43
|
+
const targetPath = r.targetRowId ? paths.rowPaths.get(r.targetRowId) : r.targetGroupPath.length ? paths.groupPaths.get(r.targetGroupPath.at(-1).key) : [];
|
|
44
|
+
if (!targetPath || JSON.stringify(paths.rowPaths.get(r.rowId) ?? []) !== JSON.stringify(r.sourceGroupPath) || JSON.stringify(targetPath) !== JSON.stringify(r.targetGroupPath))
|
|
45
|
+
throw new Error("分組或落點已變更,請重新拖曳");
|
|
46
|
+
const next = { ...r, row };
|
|
47
|
+
const error = validateRowMove(next, v.groups);
|
|
48
|
+
if (error || !p.rowMove.canDrop(next))
|
|
49
|
+
throw new Error(error ?? "此位置不允許移入");
|
|
50
|
+
await p.rowMove.onMove(next);
|
|
51
|
+
});
|
|
52
|
+
setMessage("資料已移動");
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
setMessage(e instanceof Error ? e.message : "移動失敗;原順序保留");
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
setPending(false);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function start(id, event) {
|
|
62
|
+
if (pending || event.button !== 0)
|
|
63
|
+
return;
|
|
64
|
+
const row = props.rows.find((r) => props.getRowId(r) === id);
|
|
65
|
+
if (!row || props.access === "denied" || props.rowMove?.canMove?.(row) === false)
|
|
66
|
+
return;
|
|
67
|
+
event.preventDefault();
|
|
68
|
+
cancel();
|
|
69
|
+
setSourceId(id);
|
|
70
|
+
gesture.current = { id, target: null, x: event.clientX, y: event.clientY };
|
|
71
|
+
let frame = 0;
|
|
72
|
+
const pick = () => {
|
|
73
|
+
const g = gesture.current;
|
|
74
|
+
if (!g)
|
|
75
|
+
return;
|
|
76
|
+
const hit = document.elementFromPoint(g.x, g.y)?.closest("[data-move-row],[data-group-key]");
|
|
77
|
+
const next = hit && root.current?.contains(hit) ? request(id, hit, g.y > hit.getBoundingClientRect().top + hit.getBoundingClientRect().height / 2) : null;
|
|
78
|
+
if (JSON.stringify(g.target) !== JSON.stringify(next)) {
|
|
79
|
+
g.target = next;
|
|
80
|
+
setTarget(next);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
const tick = () => {
|
|
84
|
+
const g = gesture.current;
|
|
85
|
+
if (!g)
|
|
86
|
+
return;
|
|
87
|
+
const hit = document.elementFromPoint(g.x, g.y);
|
|
88
|
+
const scroller = hit?.closest(".hy-dv-table-scroll,.hy-dv-mobile");
|
|
89
|
+
if (scroller && root.current?.contains(scroller)) {
|
|
90
|
+
const rect = scroller.getBoundingClientRect();
|
|
91
|
+
const delta = g.y < rect.top + 44 ? -12 : g.y > rect.bottom - 44 ? 12 : 0;
|
|
92
|
+
if (delta) {
|
|
93
|
+
scroller.scrollTop += delta;
|
|
94
|
+
pick();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
frame = requestAnimationFrame(tick);
|
|
98
|
+
};
|
|
99
|
+
const move = (e) => { if (gesture.current) {
|
|
100
|
+
gesture.current.x = e.clientX;
|
|
101
|
+
gesture.current.y = e.clientY;
|
|
102
|
+
pick();
|
|
103
|
+
} };
|
|
104
|
+
const up = () => { void commit(gesture.current?.target ?? null); };
|
|
105
|
+
const escape = (e) => { if (e.key === "Escape") {
|
|
106
|
+
cancel();
|
|
107
|
+
setMessage("已取消移動");
|
|
108
|
+
} };
|
|
109
|
+
window.addEventListener("pointermove", move);
|
|
110
|
+
window.addEventListener("pointerup", up);
|
|
111
|
+
window.addEventListener("pointercancel", cancel);
|
|
112
|
+
window.addEventListener("keydown", escape);
|
|
113
|
+
cleanup.current = () => { cancelAnimationFrame(frame); window.removeEventListener("pointermove", move); window.removeEventListener("pointerup", up); window.removeEventListener("pointercancel", cancel); window.removeEventListener("keydown", escape); cleanup.current = null; };
|
|
114
|
+
frame = requestAnimationFrame(tick);
|
|
115
|
+
}
|
|
116
|
+
function key(id, event) {
|
|
117
|
+
if (event.key === "Escape") {
|
|
118
|
+
event.preventDefault();
|
|
119
|
+
cancel();
|
|
120
|
+
setMessage("已取消移動");
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if ([" ", "Enter"].includes(event.key)) {
|
|
124
|
+
event.preventDefault();
|
|
125
|
+
if (sourceId === id)
|
|
126
|
+
void commit(target);
|
|
127
|
+
else {
|
|
128
|
+
setSourceId(id);
|
|
129
|
+
setMessage("使用上下鍵選擇落點,Enter 確認,Escape 取消");
|
|
130
|
+
}
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
if (sourceId !== id || !["ArrowUp", "ArrowDown"].includes(event.key))
|
|
134
|
+
return;
|
|
135
|
+
event.preventDefault();
|
|
136
|
+
const nodes = [...(root.current?.querySelectorAll(".hy-dv-desktop [data-move-row],.hy-dv-desktop [data-group-key]") ?? [])];
|
|
137
|
+
const currentIndex = nodes.findIndex((n) => target ? target.targetRowId ? n.dataset.moveRow === target.targetRowId : n.dataset.groupKey === target.targetGroupPath.at(-1)?.key : n.dataset.moveRow === id);
|
|
138
|
+
const direction = event.key === "ArrowDown" ? 1 : -1;
|
|
139
|
+
for (let i = currentIndex + direction; i >= 0 && i < nodes.length; i += direction) {
|
|
140
|
+
const next = request(id, nodes[i], direction === 1);
|
|
141
|
+
if (next) {
|
|
142
|
+
setTarget(next);
|
|
143
|
+
nodes[i].scrollIntoView({ block: "nearest" });
|
|
144
|
+
setMessage("落點已選擇,Enter 確認");
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return { sourceId, target, pending, message, start, key, cancel };
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=use-row-move.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-row-move.js","sourceRoot":"","sources":["../src/use-row-move.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type BatchCommit, type CellCommit, type DataViewConfig, type DataViewPermissions, type FieldChange, type FieldDefinition } from "./types.js";
|
|
3
|
+
export declare function DataViewDialog({ title, children, onClose, busy }: {
|
|
4
|
+
title: string;
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
onClose: () => void;
|
|
7
|
+
busy?: boolean;
|
|
8
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export declare function ViewSettings<Row>({ fields, view, onChange }: {
|
|
10
|
+
fields: FieldDefinition<Row>[];
|
|
11
|
+
view: DataViewConfig;
|
|
12
|
+
onChange: (view: DataViewConfig) => void;
|
|
13
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
type FieldFormProps<Row> = {
|
|
15
|
+
fields: FieldDefinition<Row>[];
|
|
16
|
+
permissions?: DataViewPermissions<Row>;
|
|
17
|
+
onApply: (change: FieldChange<Row>) => Promise<boolean>;
|
|
18
|
+
busy: boolean;
|
|
19
|
+
};
|
|
20
|
+
export declare function FieldCreator<Row>({ fields, permissions, onApply, busy, onCancel }: FieldFormProps<Row> & {
|
|
21
|
+
onCancel?: () => void;
|
|
22
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
export declare function FieldManager<Row>({ fields, permissions, onApply, busy }: FieldFormProps<Row>): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export declare function BatchEditor<Row>({ rows, fields, permissions, getRowId, onReview }: {
|
|
25
|
+
rows: Row[];
|
|
26
|
+
fields: FieldDefinition<Row>[];
|
|
27
|
+
permissions?: DataViewPermissions<Row>;
|
|
28
|
+
getRowId: (row: Row) => string;
|
|
29
|
+
onReview: (changes: CellCommit<Row>[], reason: BatchCommit<Row>["reason"]) => void;
|
|
30
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
export declare function ColorSettings<Row>({ fields, view, onChange }: {
|
|
32
|
+
fields: FieldDefinition<Row>[];
|
|
33
|
+
view: DataViewConfig;
|
|
34
|
+
onChange: (view: DataViewConfig) => void;
|
|
35
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=v2-panels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2-panels.d.ts","sourceRoot":"","sources":["../src/v2-panels.tsx"],"names":[],"mappings":"AACA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGpE,OAAO,EAAe,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,mBAAmB,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAkB,MAAM,YAAY,CAAC;AAGnL,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAY,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,2CAIrJ;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;IAAE,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;IAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAA;CAAE,2CAwC/J;AAED,KAAK,cAAc,CAAC,GAAG,IAAI;IAAE,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAAC,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAE9K,wBAAgB,YAAY,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,2CA4BlI;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,cAAc,CAAC,GAAG,CAAC,2CA0B5F;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;IAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAAC,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;IAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAA;CAAE,2CAU9R;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;IAAE,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;IAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAA;CAAE,2CAUhK"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useRef, useState } from "react";
|
|
4
|
+
import { getFieldTypeDefinition, FIELD_TYPE_REGISTRY, FILTER_OPERATOR_LABELS } from "./registry.js";
|
|
5
|
+
import { canWriteField, newOperationId, validateFieldChange } from "./operations.js";
|
|
6
|
+
import { FIELD_TYPES } from "./types.js";
|
|
7
|
+
import { getFieldValue } from "./engine.js";
|
|
8
|
+
export function DataViewDialog({ title, children, onClose, busy = false }) {
|
|
9
|
+
const ref = useRef(null);
|
|
10
|
+
useEffect(() => { const dialog = ref.current; dialog?.showModal(); return () => dialog?.close(); }, []);
|
|
11
|
+
return _jsxs("dialog", { ref: ref, className: "hy-dv-dialog", "aria-label": title, onCancel: (event) => { event.preventDefault(); if (!busy)
|
|
12
|
+
onClose(); }, children: [_jsxs("header", { children: [_jsx("h3", { children: title }), _jsx("button", { disabled: busy, onClick: onClose, "aria-label": `關閉${title}`, children: "\u00D7" })] }), children] });
|
|
13
|
+
}
|
|
14
|
+
export function ViewSettings({ fields, view, onChange }) {
|
|
15
|
+
const dates = fields.filter((f) => ["date", "dateTime", "createdAt", "updatedAt"].includes(f.type));
|
|
16
|
+
const times = fields.filter((f) => ["dateTime", "createdAt", "updatedAt"].includes(f.type));
|
|
17
|
+
const g = view.gantt ?? { titleFieldId: "", startFieldId: "", endFieldId: "" };
|
|
18
|
+
const c = view.calendar ?? { titleFieldId: "", dateFieldId: "" };
|
|
19
|
+
function select(label, value, options, change) { return _jsxs("label", { children: [label, _jsxs("select", { value: value ?? "", onChange: (e) => change(e.target.value), children: [_jsx("option", { value: "", children: "\u8ACB\u9078\u64C7\uFF0F\u4E0D\u4F7F\u7528" }), options.map((f) => _jsx("option", { value: f.id, children: f.label }, f.id))] })] }); }
|
|
20
|
+
return _jsxs("div", { className: "hy-dv-form", children: [_jsxs("label", { children: ["\u8CC7\u6599\u5217\u9AD8\u5EA6", _jsxs("select", { value: view.density ?? "standard", onChange: (e) => onChange({ ...view, density: e.target.value }), children: [_jsx("option", { value: "workbench", children: "\u5DE5\u4F5C\u53F0\u30FB32px" }), _jsx("option", { value: "compact", children: "\u7DCA\u6E4A\u30FB36px" }), _jsx("option", { value: "standard", children: "\u6A19\u6E96\u30FB52px" }), _jsx("option", { value: "comfortable", children: "\u5BEC\u9B06\u30FB72px" })] })] }), _jsxs("label", { children: [_jsx("input", { type: "checkbox", checked: view.virtualize === true, onChange: (e) => onChange({ ...view, virtualize: e.target.checked }) }), "\u4F7F\u7528\u865B\u64EC\u6372\u52D5\uFF1B\u8D85\u904E 200 \u7B46\u81EA\u52D5\u555F\u7528"] }), _jsx("h4", { children: "\u624B\u6A5F\u7248" }), _jsxs("label", { children: ["\u5448\u73FE\u65B9\u5F0F", _jsxs("select", { value: view.mobile?.presentation ?? "cards", onChange: (e) => onChange({ ...view, mobile: { fieldIds: view.mobile?.fieldIds ?? fields.filter((f) => view.columns.some((c) => c.fieldId === f.id && c.visible)).slice(0, 5).map((f) => f.id), ...view.mobile, presentation: e.target.value } }), children: [_jsx("option", { value: "cards", children: "\u5361\u7247" }), _jsx("option", { value: "compact", children: "\u7CBE\u7C21\u8CC7\u6599\u5217" })] })] }), select("手機摘要欄位", view.mobile?.summaryFieldId, fields, (id) => onChange({ ...view, mobile: { fieldIds: view.mobile?.fieldIds ?? fields.slice(0, 5).map((f) => f.id), ...view.mobile, summaryFieldId: id } })), _jsx("div", { className: "hy-dv-mobile-field-settings", children: (() => { const ids = view.mobile?.fieldIds ?? fields.filter((f) => view.columns.some((c) => c.fieldId === f.id && c.visible)).slice(0, 5).map((f) => f.id); const ordered = [...ids, ...fields.map((f) => f.id).filter((id) => !ids.includes(id))]; const update = (next) => onChange({ ...view, mobile: { ...view.mobile, fieldIds: next } }); return ordered.map((id) => { const field = fields.find((f) => f.id === id); if (!field)
|
|
21
|
+
return null; const i = ids.indexOf(id); return _jsxs("div", { children: [_jsxs("label", { children: [_jsx("input", { type: "checkbox", checked: i >= 0, onChange: (e) => update(e.target.checked ? [...ids, id] : ids.filter((v) => v !== id)) }), field.label] }), i >= 0 && _jsxs(_Fragment, { children: [_jsx("button", { disabled: i === 0, onClick: () => { const next = [...ids]; [next[i - 1], next[i]] = [next[i], next[i - 1]]; update(next); }, children: "\u2191" }), _jsx("button", { disabled: i === ids.length - 1, onClick: () => { const next = [...ids]; [next[i + 1], next[i]] = [next[i], next[i + 1]]; update(next); }, children: "\u2193" })] })] }, id); }); })() }), _jsx("h4", { children: "\u6392\u7A0B\u986F\u793A" }), _jsxs("label", { children: [_jsx("input", { type: "checkbox", checked: view.schedulePolicy?.showUnscheduled === true, onChange: (e) => onChange({ ...view, schedulePolicy: { ...view.schedulePolicy, showUnscheduled: e.target.checked } }) }), "\u986F\u793A\u5C1A\u672A\u6392\u5B9A\u6E05\u55AE\u5165\u53E3"] }), _jsxs("label", { children: [_jsx("input", { type: "checkbox", checked: view.schedulePolicy?.showInvalidDates === true, onChange: (e) => onChange({ ...view, schedulePolicy: { ...view.schedulePolicy, showInvalidDates: e.target.checked } }) }), "\u986F\u793A\u65E5\u671F\u683C\u5F0F\u8A3A\u65B7\u5165\u53E3"] }), _jsx("h4", { children: "\u7518\u7279\u5716\u6B04\u4F4D" }), select("甘特標題", g.titleFieldId, fields, (id) => onChange({ ...view, gantt: { ...g, titleFieldId: id } })), select("開始日期", g.startFieldId, dates, (id) => onChange({ ...view, gantt: { ...g, startFieldId: id } })), select("結束日期", g.endFieldId, dates, (id) => onChange({ ...view, gantt: { ...g, endFieldId: id } })), select("甘特分組(同步共用第一層)", g.groupFieldId, fields, (id) => onChange({ ...view, gantt: { ...g, groupFieldId: id }, groups: id ? [{ fieldId: id }, ...view.groups.filter((r) => r.fieldId !== id).slice(0, 2)] : [] })), select("進度(0–1,可選)", g.progressFieldId, fields.filter((f) => ["number", "percentage"].includes(f.type)), (id) => onChange({ ...view, gantt: { ...g, progressFieldId: id } })), g.startFieldId && g.startFieldId === g.endFieldId && _jsx("p", { role: "status", children: "\u62D6\u66F3\u9700\u8981\u5169\u500B\u4E0D\u540C\u7684\u958B\u59CB\u8207\u7D50\u675F\u65E5\u671F\u6B04\u4F4D\u3002" }), _jsxs("label", { children: ["\u81A0\u56CA\u689D\u984F\u8272", _jsxs("select", { value: g.colorMode ?? "custom", onChange: (e) => onChange({ ...view, gantt: { ...g, colorMode: e.target.value } }), children: [_jsx("option", { value: "custom", children: "\u81EA\u8A02\u984F\u8272" }), _jsx("option", { value: "field", children: "\u4F9D\u9078\u9805\u6B04\u4F4D\u984F\u8272" })] })] }), g.colorMode === "field" ? select("顏色來源欄位", g.colorFieldId, fields.filter((f) => f.type === "singleSelect"), (id) => onChange({ ...view, gantt: { ...g, colorFieldId: id } })) : _jsxs(_Fragment, { children: [_jsx("div", { className: "hy-dv-color-swatches", "aria-label": "\u7518\u7279\u5716\u5E38\u7528\u984F\u8272", children: [["藍色", "#316bff"], ["紫色", "#7955f9"], ["綠色", "#2c9e4b"], ["淺藍", "#26b2da"], ["黃色", "#ffcb00"], ["橙色", "#ff8b24"], ["紅色", "#f36b75"], ["灰色", "#67707c"]].map(([label, color]) => _jsx("button", { type: "button", "aria-label": `甘特圖${label}`, "aria-pressed": (g.color ?? "#316bff") === color, title: label, style: { backgroundColor: color }, onClick: () => onChange({ ...view, gantt: { ...g, color } }), children: (g.color ?? "#316bff") === color ? "✓" : "" }, color)) }), _jsxs("label", { children: ["\u81EA\u8A02\u8272\u78BC", _jsx("input", { type: "color", value: g.color ?? "#316bff", onChange: (e) => onChange({ ...view, gantt: { ...g, color: e.target.value } }) })] })] }), _jsxs("label", { className: "hy-dv-inline-check", children: [_jsx("input", { type: "checkbox", checked: g.showTitle !== false, onChange: (e) => onChange({ ...view, gantt: { ...g, showTitle: e.target.checked } }) }), "\u81A0\u56CA\u689D\u986F\u793A\u6A19\u984C"] }), _jsxs("label", { className: "hy-dv-inline-check", children: [_jsx("input", { type: "checkbox", checked: g.showDuration !== false, onChange: (e) => onChange({ ...view, gantt: { ...g, showDuration: e.target.checked } }) }), "\u81A0\u56CA\u689D\u986F\u793A\u5929\u6578"] }), _jsxs("label", { className: "hy-dv-inline-check", children: [_jsx("input", { type: "checkbox", checked: g.workdaysOnly === true, onChange: (e) => onChange({ ...view, gantt: { ...g, workdaysOnly: e.target.checked } }) }), "\u50C5\u8A08\u7B97\u5DE5\u4F5C\u5929"] }), _jsxs("p", { children: [g.workdaysOnly ? "工作天為週一至週五,不扣國定假日。整條移動保留工作天天數,起訖日避開週六日。" : "日曆天包含開始及結束當日;整條移動保留原本天數。", " \u62D6\u66F3\u6642\u53EF\u6309 Esc \u53D6\u6D88\u3002"] }), _jsx("h4", { children: "\u884C\u4E8B\u66C6\u6B04\u4F4D" }), select("行事曆標題", c.titleFieldId, fields, (id) => onChange({ ...view, calendar: { ...c, titleFieldId: id } })), select("行事曆日期", c.dateFieldId, dates, (id) => onChange({ ...view, calendar: { ...c, dateFieldId: id } })), select("開始時間(完整日期時間,可選)", c.startTimeFieldId, times, (id) => onChange({ ...view, calendar: { ...c, startTimeFieldId: id } })), select("結束時間(完整日期時間,可選)", c.endTimeFieldId, times, (id) => onChange({ ...view, calendar: { ...c, endTimeFieldId: id } })), select("顏色來源(選項色,可選)", c.colorFieldId, fields.filter((f) => f.options?.length), (id) => onChange({ ...view, calendar: { ...c, colorFieldId: id } })), _jsx("p", { children: "\u4E09\u7A2E\u8996\u5716\u4F7F\u7528\u540C\u4E00\u4EFD\u8CC7\u6599\u3001\u7BE9\u9078\u3001\u6392\u5E8F\u8207\u6B0A\u9650\u3002\u65E5\u671F\u932F\u8AA4\u6216\u7121\u8B80\u53D6\u6B0A\u9650\u7684\u65E5\u671F\u4E0D\u6703\u88AB\u731C\u6E2C\u6392\u7A0B\u3002" })] });
|
|
22
|
+
}
|
|
23
|
+
export function FieldCreator({ fields, permissions, onApply, busy, onCancel }) {
|
|
24
|
+
const [type, setType] = useState("singleLineText");
|
|
25
|
+
const [label, setLabel] = useState("");
|
|
26
|
+
const [optionsText, setOptionsText] = useState("");
|
|
27
|
+
const [message, setMessage] = useState("");
|
|
28
|
+
const submitting = useRef(false);
|
|
29
|
+
const hasOptions = ["singleSelect", "multiSelect", "person", "relation"].includes(type);
|
|
30
|
+
async function create() {
|
|
31
|
+
if (busy || submitting.current)
|
|
32
|
+
return;
|
|
33
|
+
const labels = optionsText.split("\n").map((s) => s.trim()).filter(Boolean);
|
|
34
|
+
if (hasOptions && new Set(labels).size !== labels.length) {
|
|
35
|
+
setMessage("選項不可重複");
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const change = { action: "add", field: {
|
|
39
|
+
id: `field_${newOperationId()}`, label: label.trim(), type,
|
|
40
|
+
options: hasOptions ? labels.map((label, i) => ({ value: label, label, color: ["#d9eadf", "#fff0b8", "#dbe7f8"][i % 3] })) : undefined,
|
|
41
|
+
} };
|
|
42
|
+
const error = validateFieldChange(fields, change, permissions);
|
|
43
|
+
if (error) {
|
|
44
|
+
setMessage(error);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
submitting.current = true;
|
|
48
|
+
try {
|
|
49
|
+
if (await onApply(change)) {
|
|
50
|
+
setMessage("欄位已新增");
|
|
51
|
+
setLabel("");
|
|
52
|
+
setOptionsText("");
|
|
53
|
+
}
|
|
54
|
+
else
|
|
55
|
+
setMessage("新增未完成,請查看儲存提示後重試。");
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
submitting.current = false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return _jsxs("form", { className: "hy-dv-form", onSubmit: (event) => { event.preventDefault(); void create(); }, children: [_jsxs("fieldset", { disabled: busy || permissions?.canManageFields !== true, children: [_jsx("legend", { children: "\u65B0\u589E\u6B04\u4F4D" }), _jsxs("label", { children: ["\u6B04\u4F4D\u985E\u578B", _jsx("select", { autoFocus: true, value: type, onChange: (e) => { setType(e.target.value); setMessage(""); }, children: FIELD_TYPES.filter((t) => FIELD_TYPE_REGISTRY[t].editable).map((t) => _jsx("option", { value: t, children: FIELD_TYPE_REGISTRY[t].label }, t)) })] }), _jsxs("label", { children: ["\u6B04\u4F4D\u540D\u7A31", _jsx("input", { required: true, value: label, maxLength: 80, placeholder: "\u8F38\u5165\u6B04\u4F4D\u540D\u7A31", onChange: (e) => setLabel(e.target.value) })] }), hasOptions && _jsxs("label", { children: ["\u9078\u9805\uFF08\u6BCF\u884C\u4E00\u500B\uFF09", _jsx("textarea", { value: optionsText, onChange: (e) => setOptionsText(e.target.value), placeholder: "選項一\n選項二" })] }), _jsxs("div", { className: "hy-dv-actions", children: [onCancel && _jsx("button", { type: "button", onClick: onCancel, children: "\u53D6\u6D88" }), _jsx("button", { type: "submit", className: "hy-dv-primary", disabled: !label.trim(), children: busy ? "正在新增…" : "確認新增" })] })] }), message && _jsx("p", { role: "status", children: message }), _jsx("p", { children: "\u5EFA\u7ACB\u6642\u9593\u3001\u5EFA\u7ACB\u8005\u7B49\u7CFB\u7D71\u6B04\u4F4D\u7531\u7CFB\u7D71\u7DAD\u8B77\uFF0C\u4E0D\u958B\u653E\u624B\u52D5\u65B0\u589E\u3002" })] });
|
|
62
|
+
}
|
|
63
|
+
export function FieldManager({ fields, permissions, onApply, busy }) {
|
|
64
|
+
const [selectedId, setSelectedId] = useState(fields[0]?.id ?? "");
|
|
65
|
+
const [rename, setRename] = useState("");
|
|
66
|
+
const [confirmDelete, setConfirmDelete] = useState(false);
|
|
67
|
+
const [message, setMessage] = useState("");
|
|
68
|
+
const selected = fields.find((f) => f.id === selectedId) ?? fields[0];
|
|
69
|
+
const protectedField = selected && (selected.system || !getFieldTypeDefinition(selected.type).deletable || selected.deletable === false);
|
|
70
|
+
async function apply(change) {
|
|
71
|
+
const error = validateFieldChange(fields, change, permissions);
|
|
72
|
+
if (error) {
|
|
73
|
+
setMessage(error);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (await onApply(change)) {
|
|
77
|
+
setMessage("欄位變更已儲存");
|
|
78
|
+
setConfirmDelete(false);
|
|
79
|
+
setRename("");
|
|
80
|
+
if (change.action === "delete")
|
|
81
|
+
setSelectedId(fields.find((f) => f.id !== change.fieldId)?.id ?? "");
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return _jsxs("div", { className: "hy-dv-form", children: [_jsx(FieldCreator, { fields: fields, permissions: permissions, onApply: onApply, busy: busy }), _jsxs("fieldset", { disabled: busy || permissions?.canManageFields !== true, children: [_jsx("legend", { children: "\u7BA1\u7406\u65E2\u6709\u6B04\u4F4D" }), _jsxs("label", { children: ["\u9078\u64C7\u6B04\u4F4D", _jsx("select", { value: selected?.id ?? "", onChange: (e) => { setSelectedId(e.target.value); setConfirmDelete(false); setRename(""); setMessage(""); }, children: fields.map((f) => _jsx("option", { value: f.id, children: f.label }, f.id)) })] }), protectedField ? _jsx("p", { children: "\u7CFB\u7D71\u6216\u53D7\u4FDD\u8B77\u6B04\u4F4D\u4E0D\u53EF\u91CD\u65B0\u547D\u540D\u3001\u8907\u88FD\u6216\u522A\u9664\u3002" }) : selected && _jsxs(_Fragment, { children: [_jsxs("label", { children: ["\u65B0\u540D\u7A31", _jsx("input", { value: rename, onChange: (e) => setRename(e.target.value), maxLength: 80, placeholder: selected.label })] }), _jsxs("div", { className: "hy-dv-actions", children: [_jsx("button", { disabled: !rename.trim(), onClick: () => void apply({ action: "rename", fieldId: selected.id, label: rename.trim() }), children: "\u91CD\u65B0\u547D\u540D" }), _jsx("button", { onClick: () => {
|
|
85
|
+
const { getValue: _getValue, ...definition } = selected;
|
|
86
|
+
void _getValue;
|
|
87
|
+
void apply({ action: "copy", sourceFieldId: selected.id, field: { ...definition, id: `field_${newOperationId()}`, label: `${selected.label}(副本)`, pinned: null, required: false, options: selected.options?.map((o) => ({ ...o })) } });
|
|
88
|
+
}, children: "\u8907\u88FD\u6B04\u4F4D\u8207\u503C" }), _jsx("button", { className: "hy-dv-danger", onClick: () => setConfirmDelete(true), children: "\u522A\u9664\u6B04\u4F4D\u2026" })] }), confirmDelete && _jsxs("div", { role: "alert", className: "hy-dv-confirm", children: [_jsxs("p", { children: ["\u522A\u9664\u300C", selected.label, "\u300D\u6703\u6E05\u9664\u5F15\u7528\u5B83\u7684\u7BE9\u9078\u3001\u6392\u5E8F\u3001\u586B\u8272\u8207\u8996\u5716\u6620\u5C04\u3002\u8CC7\u6599\u4FDD\u7559\uFF0F\u522A\u9664\u7531\u5C08\u6848\u8CA0\u8CAC\uFF1B\u9019\u4E0D\u662F\u6E05\u7A7A\u6BCF\u4E00\u5217\uFF0C\u4E5F\u4E0D\u5728\u8CC7\u6599\u5FA9\u539F\u7BC4\u570D\u5167\u3002"] }), _jsx("button", { className: "hy-dv-danger", onClick: () => void apply({ action: "delete", fieldId: selected.id }), children: "\u78BA\u8A8D\u522A\u9664\u6B04\u4F4D" }), _jsx("button", { onClick: () => setConfirmDelete(false), children: "\u53D6\u6D88" })] })] })] }), _jsx("p", { role: "status", children: message })] });
|
|
89
|
+
}
|
|
90
|
+
export function BatchEditor({ rows, fields, permissions, getRowId, onReview }) {
|
|
91
|
+
const editable = fields.filter((f) => f.type !== "attachment" && rows.length > 0 && rows.every((row) => canWriteField(row, f, permissions)));
|
|
92
|
+
const [fieldId, setFieldId] = useState(editable[0]?.id ?? "");
|
|
93
|
+
const [draft, setDraft] = useState(null);
|
|
94
|
+
const [hasDraft, setHasDraft] = useState(false);
|
|
95
|
+
const [editing, setEditing] = useState(false);
|
|
96
|
+
const field = editable.find((f) => f.id === fieldId);
|
|
97
|
+
const Editor = field ? getFieldTypeDefinition(field.type).Editor : undefined;
|
|
98
|
+
return _jsxs("div", { className: "hy-dv-form", children: [_jsxs("p", { children: ["\u4FEE\u6539\u5DF2\u9078\u53D6\u7684 ", rows.length, " \u7B46\uFF08\u5305\u542B\u5176\u4ED6\u9801\u6216\u76EE\u524D\u88AB\u7BE9\u9078\u96B1\u85CF\u7684\u5DF2\u9078\u5217\uFF09\u3002\u53EA\u5217\u51FA\u6BCF\u4E00\u7B46\u90FD\u6709\u4FEE\u6539\u6B0A\u9650\u7684\u6B04\u4F4D\u3002"] }), _jsxs("label", { children: ["\u6279\u6B21\u4FEE\u6539\u6B04\u4F4D", _jsxs("select", { value: field?.id ?? "", onChange: (e) => { setFieldId(e.target.value); setHasDraft(false); setDraft(null); setEditing(false); }, children: [_jsx("option", { value: "", children: "\u8ACB\u9078\u64C7" }), editable.map((f) => _jsx("option", { value: f.id, children: f.label }, f.id))] })] }), field && _jsxs(_Fragment, { children: [_jsx("label", { children: "\u7D71\u4E00\u503C" }), editing && Editor ? _jsx(Editor, { value: draft, row: rows[0], field: field, onCommit: (v) => { setDraft(v); setHasDraft(true); setEditing(false); }, onCancel: () => setEditing(false) }, field.id) : _jsx("button", { onClick: () => setEditing(true), children: hasDraft ? getFieldTypeDefinition(field.type).render(draft, field) : "設定統一值" }), _jsx("button", { onClick: () => { setDraft(field.type === "checkbox" ? false : null); setHasDraft(true); setEditing(false); }, children: "\u8A2D\u70BA\u7A7A\u767D\uFF0F\u53D6\u6D88\u6253\u52FE" }), _jsx("button", { disabled: !hasDraft || editing, onClick: () => onReview(rows.map((row) => ({ row, rowId: getRowId(row), field, previousValue: getFieldValue(row, field), nextValue: draft })), "batch"), children: "\u9810\u89BD\u6279\u6B21\u4FEE\u6539" })] }), !editable.length && _jsx("p", { children: "\u6C92\u6709\u53EF\u5171\u540C\u4FEE\u6539\u7684\u6B04\u4F4D\u3002" })] });
|
|
99
|
+
}
|
|
100
|
+
export function ColorSettings({ fields, view, onChange }) {
|
|
101
|
+
const rules = view.colorRules ?? [];
|
|
102
|
+
return _jsxs("div", { className: "hy-dv-form", children: [_jsx("p", { children: "\u7531\u4E0A\u5F80\u4E0B\u7B2C\u4E00\u500B\u7B26\u5408\u7684\u898F\u5247\u512A\u5148\uFF1B\u586B\u8272\u662F\u500B\u4EBA\u6AA2\u8996\u8A2D\u5B9A\uFF0C\u4E0D\u6703\u4FEE\u6539\u8CC7\u6599\u3002" }), rules.map((rule) => {
|
|
103
|
+
const field = fields.find((f) => f.id === rule.condition.fieldId);
|
|
104
|
+
const update = (patch) => onChange({ ...view, colorRules: rules.map((r) => r.id === rule.id ? { ...r, ...patch } : r) });
|
|
105
|
+
return _jsxs("fieldset", { children: [_jsx("legend", { children: "\u586B\u8272\u689D\u4EF6" }), _jsxs("label", { children: ["\u689D\u4EF6\u6B04\u4F4D", _jsx("select", { value: field.id, onChange: (e) => { const next = fields.find((f) => f.id === e.target.value); update({ condition: { ...rule.condition, fieldId: next.id, operator: getFieldTypeDefinition(next.type).operators[0], value: "" } }); }, children: fields.map((f) => _jsx("option", { value: f.id, children: f.label }, f.id)) })] }), _jsxs("label", { children: ["\u5224\u65B7", _jsx("select", { value: rule.condition.operator, onChange: (e) => update({ condition: { ...rule.condition, operator: e.target.value } }), children: getFieldTypeDefinition(field.type).operators.map((op) => _jsx("option", { value: op, children: FILTER_OPERATOR_LABELS[op] }, op)) })] }), !["isEmpty", "isNotEmpty", "isTrue", "isFalse"].includes(rule.condition.operator) && _jsxs("label", { children: ["\u689D\u4EF6\u503C", field.options ? _jsxs("select", { value: String(rule.condition.value ?? ""), onChange: (e) => update({ condition: { ...rule.condition, value: e.target.value } }), children: [_jsx("option", { value: "", children: "\u8ACB\u9078\u64C7" }), field.options.map((o) => _jsx("option", { value: o.value, children: o.label }, o.value))] }) : _jsx("input", { value: String(rule.condition.value ?? ""), onChange: (e) => update({ condition: { ...rule.condition, value: e.target.value } }) })] }), _jsxs("label", { children: ["\u5957\u7528\u4F4D\u7F6E", _jsxs("select", { value: rule.target, onChange: (e) => update({ target: e.target.value }), children: [_jsx("option", { value: "row", children: "\u6574\u5217" }), fields.map((f) => _jsxs("option", { value: f.id, children: [f.label, "\u5132\u5B58\u683C"] }, f.id))] })] }), _jsxs("label", { children: ["\u984F\u8272", _jsx("input", { type: "color", value: rule.color, onChange: (e) => update({ color: e.target.value }) })] }), _jsx("button", { onClick: () => onChange({ ...view, colorRules: rules.filter((r) => r.id !== rule.id) }), children: "\u79FB\u9664\u586B\u8272" })] }, rule.id);
|
|
106
|
+
}), _jsx("button", { disabled: !fields.length || rules.length >= 20, onClick: () => { const field = fields[0]; onChange({ ...view, colorRules: [...rules, { id: newOperationId(), condition: { id: newOperationId(), fieldId: field.id, operator: getFieldTypeDefinition(field.type).operators[0], value: "" }, target: "row", color: "#fff0b8" }] }); }, children: "\u65B0\u589E\u586B\u8272\u689D\u4EF6" })] });
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=v2-panels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2-panels.js","sourceRoot":"","sources":["../src/v2-panels.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { DataViewCollection, DataViewConfig, FieldDefinition } from "./types.js";
|
|
2
|
+
/** Settings only: row data, callbacks and dependencies never enter this document. */
|
|
3
|
+
export declare function createViewCollection<Row>(fields: FieldDefinition<Row>[], initial?: Partial<DataViewConfig>): DataViewCollection;
|
|
4
|
+
export declare function normalizeViewCollection<Row>(fields: FieldDefinition<Row>[], input: DataViewCollection): DataViewCollection;
|
|
5
|
+
export type ViewAction = {
|
|
6
|
+
type: "select";
|
|
7
|
+
id: string;
|
|
8
|
+
} | {
|
|
9
|
+
type: "delete";
|
|
10
|
+
id: string;
|
|
11
|
+
} | {
|
|
12
|
+
type: "rename";
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
} | {
|
|
16
|
+
type: "add" | "copy";
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
viewType?: DataViewConfig["viewType"];
|
|
20
|
+
} | {
|
|
21
|
+
type: "update";
|
|
22
|
+
id: string;
|
|
23
|
+
config: DataViewConfig;
|
|
24
|
+
};
|
|
25
|
+
export declare function changeViewCollection(current: DataViewCollection, action: ViewAction): DataViewCollection;
|
|
26
|
+
/** No debounce timer: invokes sync storage before returning; async writes are serialized.
|
|
27
|
+
* A queued snapshot supersedes older queued snapshots, and includes ALL named views.
|
|
28
|
+
* Promises settle only when their snapshot or a newer one has been persisted. */
|
|
29
|
+
export declare function createSnapshotWriter<T>(save: (value: T) => void | Promise<void>): (value: T) => Promise<void>;
|
|
30
|
+
//# sourceMappingURL=view-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-state.d.ts","sourceRoot":"","sources":["../src/view-state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEtF,qFAAqF;AACrF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAG/H;AACD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,kBAAkB,GAAG,kBAAkB,CAS1H;AACD,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,CAAC;AAC7R,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,UAAU,GAAG,kBAAkB,CAqBxG;AAED;;iFAEiF;AACjF,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAetE,OAAO,CAAC,mBAKjB"}
|