@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.
Files changed (109) hide show
  1. package/CHANGELOG.md +105 -0
  2. package/DATA-PRIVACY.md +20 -0
  3. package/INTEGRATION.md +178 -0
  4. package/KNOWN-LIMITATIONS.md +34 -0
  5. package/LICENSE +21 -0
  6. package/README.md +67 -5
  7. package/dist/contracts.d.ts +33 -0
  8. package/dist/contracts.d.ts.map +1 -0
  9. package/dist/contracts.js +83 -0
  10. package/dist/contracts.js.map +1 -0
  11. package/dist/data-view.d.ts +3 -0
  12. package/dist/data-view.d.ts.map +1 -0
  13. package/dist/data-view.js +822 -0
  14. package/dist/data-view.js.map +1 -0
  15. package/dist/engine.d.ts +34 -0
  16. package/dist/engine.d.ts.map +1 -0
  17. package/dist/engine.js +307 -0
  18. package/dist/engine.js.map +1 -0
  19. package/dist/gantt-bar.d.ts +17 -0
  20. package/dist/gantt-bar.d.ts.map +1 -0
  21. package/dist/gantt-bar.js +142 -0
  22. package/dist/gantt-bar.js.map +1 -0
  23. package/dist/gantt-dependencies.d.ts +27 -0
  24. package/dist/gantt-dependencies.d.ts.map +1 -0
  25. package/dist/gantt-dependencies.js +218 -0
  26. package/dist/gantt-dependencies.js.map +1 -0
  27. package/dist/gantt-dependency-ui.d.ts +37 -0
  28. package/dist/gantt-dependency-ui.d.ts.map +1 -0
  29. package/dist/gantt-dependency-ui.js +79 -0
  30. package/dist/gantt-dependency-ui.js.map +1 -0
  31. package/dist/gantt-grid.d.ts +27 -0
  32. package/dist/gantt-grid.d.ts.map +1 -0
  33. package/dist/gantt-grid.js +72 -0
  34. package/dist/gantt-grid.js.map +1 -0
  35. package/dist/gantt-operations.d.ts +14 -0
  36. package/dist/gantt-operations.d.ts.map +1 -0
  37. package/dist/gantt-operations.js +103 -0
  38. package/dist/gantt-operations.js.map +1 -0
  39. package/dist/index.d.ts +17 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +17 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/operations.d.ts +11 -0
  44. package/dist/operations.d.ts.map +1 -0
  45. package/dist/operations.js +117 -0
  46. package/dist/operations.js.map +1 -0
  47. package/dist/registry.d.ts +13 -0
  48. package/dist/registry.d.ts.map +1 -0
  49. package/dist/registry.js +465 -0
  50. package/dist/registry.js.map +1 -0
  51. package/dist/remote-data.d.ts +19 -0
  52. package/dist/remote-data.d.ts.map +1 -0
  53. package/dist/remote-data.js +67 -0
  54. package/dist/remote-data.js.map +1 -0
  55. package/dist/row-move.d.ts +7 -0
  56. package/dist/row-move.d.ts.map +1 -0
  57. package/dist/row-move.js +27 -0
  58. package/dist/row-move.js.map +1 -0
  59. package/dist/schedule-view.d.ts +27 -0
  60. package/dist/schedule-view.d.ts.map +1 -0
  61. package/dist/schedule-view.js +122 -0
  62. package/dist/schedule-view.js.map +1 -0
  63. package/dist/schedule.d.ts +28 -0
  64. package/dist/schedule.d.ts.map +1 -0
  65. package/dist/schedule.js +97 -0
  66. package/dist/schedule.js.map +1 -0
  67. package/dist/style.css +986 -0
  68. package/dist/timeline.d.ts +25 -0
  69. package/dist/timeline.d.ts.map +1 -0
  70. package/dist/timeline.js +58 -0
  71. package/dist/timeline.js.map +1 -0
  72. package/dist/toolbar.d.ts +10 -0
  73. package/dist/toolbar.d.ts.map +1 -0
  74. package/dist/toolbar.js +31 -0
  75. package/dist/toolbar.js.map +1 -0
  76. package/dist/types.d.ts +472 -0
  77. package/dist/types.d.ts.map +1 -0
  78. package/dist/types.js +22 -0
  79. package/dist/types.js.map +1 -0
  80. package/dist/use-remote-data.d.ts +18 -0
  81. package/dist/use-remote-data.d.ts.map +1 -0
  82. package/dist/use-remote-data.js +12 -0
  83. package/dist/use-remote-data.js.map +1 -0
  84. package/dist/use-row-move.d.ts +12 -0
  85. package/dist/use-row-move.d.ts.map +1 -0
  86. package/dist/use-row-move.js +151 -0
  87. package/dist/use-row-move.js.map +1 -0
  88. package/dist/v2-panels.d.ts +37 -0
  89. package/dist/v2-panels.d.ts.map +1 -0
  90. package/dist/v2-panels.js +108 -0
  91. package/dist/v2-panels.js.map +1 -0
  92. package/dist/view-state.d.ts +30 -0
  93. package/dist/view-state.d.ts.map +1 -0
  94. package/dist/view-state.js +94 -0
  95. package/dist/view-state.js.map +1 -0
  96. package/dist/view-workspace.d.ts +3 -0
  97. package/dist/view-workspace.d.ts.map +1 -0
  98. package/dist/view-workspace.js +95 -0
  99. package/dist/view-workspace.js.map +1 -0
  100. package/dist/virtual-list.d.ts +12 -0
  101. package/dist/virtual-list.d.ts.map +1 -0
  102. package/dist/virtual-list.js +46 -0
  103. package/dist/virtual-list.js.map +1 -0
  104. package/package.json +19 -16
  105. package/index.d.ts +0 -2
  106. package/index.js +0 -5
  107. package/react.d.ts +0 -2
  108. package/react.js +0 -8
  109. 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"}