@cluadwong/form-designer 0.2.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/LICENSE +21 -0
- package/README.md +261 -0
- package/dist/chunks/designer-ui.js +3092 -0
- package/dist/chunks/renderer-core.js +2635 -0
- package/dist/components/designer/CanvasSurface.vue.d.ts +64 -0
- package/dist/components/designer/CanvasSurface.vue.d.ts.map +1 -0
- package/dist/components/designer/DesignerToolbar.vue.d.ts +49 -0
- package/dist/components/designer/DesignerToolbar.vue.d.ts.map +1 -0
- package/dist/components/designer/FormDesigner.vue.d.ts +25 -0
- package/dist/components/designer/FormDesigner.vue.d.ts.map +1 -0
- package/dist/components/designer/HelpPanel.vue.d.ts +10 -0
- package/dist/components/designer/HelpPanel.vue.d.ts.map +1 -0
- package/dist/components/designer/InspectorPanel.vue.d.ts +48 -0
- package/dist/components/designer/InspectorPanel.vue.d.ts.map +1 -0
- package/dist/components/designer/NodeTreeItem.vue.d.ts +18 -0
- package/dist/components/designer/NodeTreeItem.vue.d.ts.map +1 -0
- package/dist/components/designer/PaletteSidebar.vue.d.ts +29 -0
- package/dist/components/designer/PaletteSidebar.vue.d.ts.map +1 -0
- package/dist/components/designer/StatusBar.vue.d.ts +25 -0
- package/dist/components/designer/StatusBar.vue.d.ts.map +1 -0
- package/dist/components/designer/composables/treeControl.d.ts +65 -0
- package/dist/components/designer/composables/treeControl.d.ts.map +1 -0
- package/dist/components/designer/composables/useFillData.d.ts +34 -0
- package/dist/components/designer/composables/useFillData.d.ts.map +1 -0
- package/dist/components/designer/composables/useNodeSelection.d.ts +56 -0
- package/dist/components/designer/composables/useNodeSelection.d.ts.map +1 -0
- package/dist/components/designer/composables/useSchemaDocument.d.ts +44 -0
- package/dist/components/designer/composables/useSchemaDocument.d.ts.map +1 -0
- package/dist/components/designer/composables/useSchemaEdits.d.ts +111 -0
- package/dist/components/designer/composables/useSchemaEdits.d.ts.map +1 -0
- package/dist/components/designer/config.d.ts +40 -0
- package/dist/components/designer/config.d.ts.map +1 -0
- package/dist/components/designer/export-api.d.ts +81 -0
- package/dist/components/designer/export-api.d.ts.map +1 -0
- package/dist/components/designer/inspectors/CellInspector.vue.d.ts +20 -0
- package/dist/components/designer/inspectors/CellInspector.vue.d.ts.map +1 -0
- package/dist/components/designer/inspectors/FieldPInspector.vue.d.ts +10 -0
- package/dist/components/designer/inspectors/FieldPInspector.vue.d.ts.map +1 -0
- package/dist/components/designer/inspectors/GridInspector.vue.d.ts +10 -0
- package/dist/components/designer/inspectors/GridInspector.vue.d.ts.map +1 -0
- package/dist/components/designer/inspectors/HeaderFooterFields.vue.d.ts +14 -0
- package/dist/components/designer/inspectors/HeaderFooterFields.vue.d.ts.map +1 -0
- package/dist/components/designer/inspectors/HtmlInspector.vue.d.ts +10 -0
- package/dist/components/designer/inspectors/HtmlInspector.vue.d.ts.map +1 -0
- package/dist/components/designer/inspectors/ImageInspector.vue.d.ts +10 -0
- package/dist/components/designer/inspectors/ImageInspector.vue.d.ts.map +1 -0
- package/dist/components/designer/inspectors/IssuesPanel.vue.d.ts +11 -0
- package/dist/components/designer/inspectors/IssuesPanel.vue.d.ts.map +1 -0
- package/dist/components/designer/inspectors/PageInspector.vue.d.ts +27 -0
- package/dist/components/designer/inspectors/PageInspector.vue.d.ts.map +1 -0
- package/dist/components/designer/inspectors/TableInspector.vue.d.ts +10 -0
- package/dist/components/designer/inspectors/TableInspector.vue.d.ts.map +1 -0
- package/dist/components/designer/inspectors/TextInspector.vue.d.ts +10 -0
- package/dist/components/designer/inspectors/TextInspector.vue.d.ts.map +1 -0
- package/dist/components/designer/inspectors/TextStyleFields.vue.d.ts +10 -0
- package/dist/components/designer/inspectors/TextStyleFields.vue.d.ts.map +1 -0
- package/dist/components/renderer-v2/FormRenderer.vue.d.ts +106 -0
- package/dist/components/renderer-v2/FormRenderer.vue.d.ts.map +1 -0
- package/dist/components/renderer-v2/GridFormRenderer.vue.d.ts +49 -0
- package/dist/components/renderer-v2/GridFormRenderer.vue.d.ts.map +1 -0
- package/dist/components/renderer-v2/GridSchemaNode.vue.d.ts +46 -0
- package/dist/components/renderer-v2/GridSchemaNode.vue.d.ts.map +1 -0
- package/dist/components/renderer-v2/HtmlBlock.vue.d.ts +16 -0
- package/dist/components/renderer-v2/HtmlBlock.vue.d.ts.map +1 -0
- package/dist/components/renderer-v2/PaperViewport.vue.d.ts +63 -0
- package/dist/components/renderer-v2/PaperViewport.vue.d.ts.map +1 -0
- package/dist/components/renderer-v2/collectFieldValues.d.ts +29 -0
- package/dist/components/renderer-v2/collectFieldValues.d.ts.map +1 -0
- package/dist/components/renderer-v2/index.d.ts +13 -0
- package/dist/components/renderer-v2/index.d.ts.map +1 -0
- package/dist/components/renderer-v2/measure-rows.d.ts +12 -0
- package/dist/components/renderer-v2/measure-rows.d.ts.map +1 -0
- package/dist/components/renderer-v2/page-size-style.d.ts +28 -0
- package/dist/components/renderer-v2/page-size-style.d.ts.map +1 -0
- package/dist/components/renderer-v2/print-form.d.ts +20 -0
- package/dist/components/renderer-v2/print-form.d.ts.map +1 -0
- package/dist/designer-ui.css +5 -0
- package/dist/designer.d.ts +16 -0
- package/dist/designer.d.ts.map +1 -0
- package/dist/designer.js +16 -0
- package/dist/engine-v2/derivation.d.ts +81 -0
- package/dist/engine-v2/derivation.d.ts.map +1 -0
- package/dist/engine-v2/index.d.ts +3 -0
- package/dist/engine-v2/index.d.ts.map +1 -0
- package/dist/engine-v2/node-address.d.ts +25 -0
- package/dist/engine-v2/node-address.d.ts.map +1 -0
- package/dist/engine-v2/pagination.d.ts +120 -0
- package/dist/engine-v2/pagination.d.ts.map +1 -0
- package/dist/i18n/en.d.ts +7 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/index.d.ts +14 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/types.d.ts +5 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/zh-CN.d.ts +7 -0
- package/dist/i18n/zh-CN.d.ts.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +107 -0
- package/dist/renderer-core.css +1 -0
- package/dist/renderer.d.ts +22 -0
- package/dist/renderer.d.ts.map +1 -0
- package/dist/renderer.js +93 -0
- package/dist/samples/types.d.ts +18 -0
- package/dist/samples/types.d.ts.map +1 -0
- package/dist/ticket-designer.css +5 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/schema-v2-index.d.ts +15 -0
- package/dist/types/schema-v2-index.d.ts.map +1 -0
- package/dist/types/schema-v2-operations.d.ts +124 -0
- package/dist/types/schema-v2-operations.d.ts.map +1 -0
- package/dist/types/schema-v2-serialization.d.ts +30 -0
- package/dist/types/schema-v2-serialization.d.ts.map +1 -0
- package/dist/types/schema-v2-table-rows.d.ts +17 -0
- package/dist/types/schema-v2-table-rows.d.ts.map +1 -0
- package/dist/types/schema-v2-validation.d.ts +10 -0
- package/dist/types/schema-v2-validation.d.ts.map +1 -0
- package/dist/types/schema-v2.d.ts +283 -0
- package/dist/types/schema-v2.d.ts.map +1 -0
- package/dist/utils/date-format.d.ts +34 -0
- package/dist/utils/date-format.d.ts.map +1 -0
- package/package.json +96 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { FormSchemaV2 } from "./schema-v2";
|
|
2
|
+
export interface SchemaIssueV2 {
|
|
3
|
+
level: "error" | "warning";
|
|
4
|
+
code: string;
|
|
5
|
+
nodeId?: string;
|
|
6
|
+
path?: Array<string | number>;
|
|
7
|
+
message: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function validateFormSchemaV2(schema: FormSchemaV2): SchemaIssueV2[];
|
|
10
|
+
//# sourceMappingURL=schema-v2-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-v2-validation.d.ts","sourceRoot":"","sources":["../../src/types/schema-v2-validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,YAAY,EAQb,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAoUD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa,EAAE,CA8B1E"}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V2 固定版式表单 Schema。
|
|
3
|
+
*
|
|
4
|
+
* V2 使用嵌套结构作为持久化和渲染格式:Page -> Grid -> Row -> Cell -> children。
|
|
5
|
+
* 设计器运行时可以从这棵树派生节点索引,但索引不写入 Schema。
|
|
6
|
+
*/
|
|
7
|
+
export type PaperSizeV2 = "A4" | "A3";
|
|
8
|
+
export type OrientationV2 = "portrait" | "landscape";
|
|
9
|
+
export type PageModeV2 = "fixed";
|
|
10
|
+
export type GridTrackV2 = number | `${number}fr` | "auto";
|
|
11
|
+
export type BorderModeV2 = "all" | "outer" | "inner" | "none";
|
|
12
|
+
/** 页眉/页脚三栏文本。占位符:`{page}` 当前物理页序(1-based)、`{total}` 总物理页数。
|
|
13
|
+
* 三栏均可缺省;MVP 仅支持静态文本 + 页码占位符(字段绑定 `{field:key}` 暂不支持)。 */
|
|
14
|
+
export interface HeaderFooterContentV2 {
|
|
15
|
+
left?: string;
|
|
16
|
+
center?: string;
|
|
17
|
+
right?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 页眉 / 页脚配置。
|
|
21
|
+
*
|
|
22
|
+
* 驻留纸张**上/下边距区**,随每个物理页重复渲染(渲染层每个物理页各画一条带,
|
|
23
|
+
* 故天然每页重复、打印同理);属于纸张装饰,**不进入 SchemaNode 树**(不参与
|
|
24
|
+
* 选中 / 拖拽 / 结构树,只能经 Inspector 编辑)。
|
|
25
|
+
*/
|
|
26
|
+
export interface HeaderFooterV2 {
|
|
27
|
+
/** 开关:仅 `true` 时渲染,未设即关闭。 */
|
|
28
|
+
enabled?: boolean;
|
|
29
|
+
content?: HeaderFooterContentV2;
|
|
30
|
+
/** 带高(mm);未设/非法回退 `DEFAULT_BAND_HEIGHT_MM`(10)。大于纸张边距会压到正文,由 Inspector 提示。 */
|
|
31
|
+
height?: number;
|
|
32
|
+
/** 文本样式:生效子集为 `fontSize` / `fontWeight` / `color`(其余键忽略)。 */
|
|
33
|
+
style?: TextStyleV2;
|
|
34
|
+
/** 分隔线(页眉下 / 页脚上):未设即 true。 */
|
|
35
|
+
separator?: boolean;
|
|
36
|
+
separatorColor?: string;
|
|
37
|
+
separatorWidth?: number;
|
|
38
|
+
}
|
|
39
|
+
/** 页眉/页脚带默认高度(mm):`height` 未设或非法时的回退值(渲染与面板共用单一真源)。 */
|
|
40
|
+
export declare const DEFAULT_BAND_HEIGHT_MM = 10;
|
|
41
|
+
export interface PaperConfigV2 {
|
|
42
|
+
size: PaperSizeV2;
|
|
43
|
+
/** 废弃键:方向自 P11-3 起由纸张尺寸派生(A4→纵向、A3→横向),渲染与打印均忽略本字段。
|
|
44
|
+
* 保留为可选仅为存量模板向后兼容;新模板不再写入,序列化导出自然丢弃。 */
|
|
45
|
+
orientation?: OrientationV2;
|
|
46
|
+
/** 页眉(全局,作用于所有物理页)。 */
|
|
47
|
+
header?: HeaderFooterV2;
|
|
48
|
+
/** 页脚(全局,作用于所有物理页)。 */
|
|
49
|
+
footer?: HeaderFooterV2;
|
|
50
|
+
}
|
|
51
|
+
export interface EdgeInsetsV2 {
|
|
52
|
+
top: number;
|
|
53
|
+
right: number;
|
|
54
|
+
bottom: number;
|
|
55
|
+
left: number;
|
|
56
|
+
}
|
|
57
|
+
export interface BoxStyleV2 {
|
|
58
|
+
backgroundColor?: string;
|
|
59
|
+
borderColor?: string;
|
|
60
|
+
borderWidth?: number;
|
|
61
|
+
}
|
|
62
|
+
export interface TextStyleV2 {
|
|
63
|
+
align?: "left" | "center" | "right";
|
|
64
|
+
verticalAlign?: "top" | "middle" | "bottom";
|
|
65
|
+
fontSize?: number;
|
|
66
|
+
lineHeight?: number;
|
|
67
|
+
fontWeight?: "normal" | "bold";
|
|
68
|
+
writingMode?: "horizontal-tb" | "vertical-rl";
|
|
69
|
+
whiteSpace?: "normal" | "nowrap" | "pre-wrap";
|
|
70
|
+
/** 文字颜色(CSS color)。仅用于渲染,不影响字段语义。 */
|
|
71
|
+
color?: string;
|
|
72
|
+
/** 字体族(CSS font-family)。 */
|
|
73
|
+
fontFamily?: string;
|
|
74
|
+
}
|
|
75
|
+
export interface SchemaNodeBaseV2 {
|
|
76
|
+
id: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* 固定文字节点(text 类型,标题 / 标签 / 说明等)。
|
|
80
|
+
* 与可输入字段的 `p` 节点彻底分离:text 不进入字段数据、不参与填写回写,
|
|
81
|
+
* 仅用于静态展示,可在设计器配置多行文本与文本样式。
|
|
82
|
+
*/
|
|
83
|
+
export interface TextNodeV2 extends SchemaNodeBaseV2 {
|
|
84
|
+
type: "text";
|
|
85
|
+
text: string;
|
|
86
|
+
style?: TextStyleV2;
|
|
87
|
+
}
|
|
88
|
+
export interface FieldPNodeV2 extends SchemaNodeBaseV2 {
|
|
89
|
+
type: "p";
|
|
90
|
+
mode: "field";
|
|
91
|
+
field: string;
|
|
92
|
+
/** Optional inline label rendered before the input area. */
|
|
93
|
+
prefix?: string;
|
|
94
|
+
/** Optional inline label rendered after the input area. */
|
|
95
|
+
suffix?: string;
|
|
96
|
+
/** 外部组件触发类型(选项值):由宿主弹窗调用、在回调里把数据回写 data 再渲染到票面上。
|
|
97
|
+
* text=无(纯文本输入)、date=日期选择器、signature=签名板、upload=文件上传。 */
|
|
98
|
+
action?: "text" | "date" | "signature" | "upload";
|
|
99
|
+
/** 外部组件的额外参数(含义由 `action` 决定,如 date 的 `format`)。 */
|
|
100
|
+
actionParams?: Record<string, string>;
|
|
101
|
+
underline?: boolean;
|
|
102
|
+
webUnderline?: boolean;
|
|
103
|
+
printUnderline?: boolean;
|
|
104
|
+
/** 字段宽度(CSS 长度字符串,支持 mm / px / % 等,如 "30mm"、"120px"、"50%")。
|
|
105
|
+
* 缺省时不限制宽度(沿用父容器 100%)。 */
|
|
106
|
+
width?: string;
|
|
107
|
+
/** 字段默认内容:无填写数据时的预设文本,支持多行(`\n`)。 */
|
|
108
|
+
default?: string;
|
|
109
|
+
/** 内部边框:为 p 标签内每一行(回车生成的 div)显示底边框。
|
|
110
|
+
* 默认不显示;勾选后设计态 / 预览 / 打印均保持显示。 */
|
|
111
|
+
innerBorder?: boolean;
|
|
112
|
+
style?: TextStyleV2;
|
|
113
|
+
}
|
|
114
|
+
export type PNodeV2 = FieldPNodeV2;
|
|
115
|
+
/**
|
|
116
|
+
* 字段级运行时权限(P9.2a / P9.2b):**与 `data` 同轨,由消费方经 props 注入渲染组件**
|
|
117
|
+
* (`fieldPermissions: { 字段名: 权限 }`),**不进 schema**——权限是消费会话关注点,
|
|
118
|
+
* 设计模板不携带(设计态不注入 → 全部 EDIT,设计交互不受影响)。
|
|
119
|
+
* - `EDIT`:可输入(**缺省值**,未注明的字段一律可编辑,向后兼容);
|
|
120
|
+
* - `READ`:只读回显(渲染值但不可就地输入);
|
|
121
|
+
* - `HIDDEN`:**脱敏显示**(2026-09-08 用户拍板):字段外壳与前/后标签照常渲染、
|
|
122
|
+
* 占位与分页高度不变,**非空输入内容以 `***` 替代**(空值不打码);真实值不进 DOM,
|
|
123
|
+
* `collectFieldValues` 跳过该字段(防止假值污染),消费页 `getFormData` 仍返回真实值。
|
|
124
|
+
*/
|
|
125
|
+
export type FieldPermissionV2 = "READ" | "EDIT" | "HIDDEN";
|
|
126
|
+
/**
|
|
127
|
+
* 字段级校验规则(P9.2c):**与 `data` / `fieldPermissions` 同轨,由消费方经 props
|
|
128
|
+
* (`FormRenderer` 的 `options.rules`)注入**,不进 schema——「哪些字段必填」是消费
|
|
129
|
+
* 会话的采集策略,模板不携带。键 = 字段名,值 = 规则对象(当前仅 `required`,
|
|
130
|
+
* 后续可扩展 min/max/pattern 等)。
|
|
131
|
+
*/
|
|
132
|
+
export interface FieldRuleV2 {
|
|
133
|
+
/** 必填:值为空(键缺失 / 空串 / 纯空白)时校验不通过。 */
|
|
134
|
+
required?: boolean;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* 专用控件触发事件契约(P9.1c):字段 P 配置了 `action`(非 text)时,渲染内核在
|
|
138
|
+
* **填写态**(canFill)由**点击字段元素本身**触发(表单不加任何额外按钮),经
|
|
139
|
+
* `action-trigger` 事件把触发权交还宿主——**宿主负责召唤外部输入组件(弹窗/选择器)并在
|
|
140
|
+
* 回调里回写 data**(与 data 同轨,回写后票面自动重渲染)。内核不做任何弹窗实现
|
|
141
|
+
* (分层:内核不认识宿主 UI)。
|
|
142
|
+
*/
|
|
143
|
+
export interface FieldActionTriggerV2 {
|
|
144
|
+
/** 触发源字段节点 id。 */
|
|
145
|
+
nodeId: string;
|
|
146
|
+
/** 字段名(宿主回写 data 的键)。 */
|
|
147
|
+
field: string;
|
|
148
|
+
/** 外部组件类型。 */
|
|
149
|
+
action: NonNullable<FieldPNodeV2["action"]>;
|
|
150
|
+
/** 外部组件额外参数(含义由 action 决定,如 date 的 format)。 */
|
|
151
|
+
actionParams?: Record<string, string>;
|
|
152
|
+
}
|
|
153
|
+
export interface GridNodeV2 extends SchemaNodeBaseV2 {
|
|
154
|
+
type: "grid";
|
|
155
|
+
border: BorderModeV2;
|
|
156
|
+
rows: GridRowV2[];
|
|
157
|
+
style?: BoxStyleV2;
|
|
158
|
+
/** 列宽规范(按逻辑列顺序)。渲染时所有行共用同一组列轨,使跨列合并(colspan)
|
|
159
|
+
* 在任意列宽下都能正确对齐。缺省时渲染器回退到逐格 cell.width(旧数据兼容)。 */
|
|
160
|
+
columns?: GridTrackV2[];
|
|
161
|
+
/** 单元格默认内边距(mm)。子 cell 未单独设置 padding 时继承此值,缺省为 0。 */
|
|
162
|
+
cellPadding?: number;
|
|
163
|
+
/** 单元格默认水平对齐。子 cell 未单独设置 align 时继承此值。 */
|
|
164
|
+
cellAlign?: "left" | "center" | "right";
|
|
165
|
+
/** 单元格默认垂直对齐。子 cell 未单独设置 verticalAlign 时继承此值。 */
|
|
166
|
+
cellVerticalAlign?: "top" | "middle" | "bottom";
|
|
167
|
+
/**
|
|
168
|
+
* 单元格间距(mm,非负):同时作用于**行与行之间**与**列与列之间**,
|
|
169
|
+
* 等价于 CSS `gap`。缺省为 0(单元格紧贴,分隔线相接)。
|
|
170
|
+
* 注意:间距会让内部边框线之间出现等距空隙(每格只画自己的单边,间隙留白)。
|
|
171
|
+
*/
|
|
172
|
+
gap?: number;
|
|
173
|
+
}
|
|
174
|
+
export interface GridRowV2 extends SchemaNodeBaseV2 {
|
|
175
|
+
type: "grid-row";
|
|
176
|
+
/** 相对于 FormSchemaV2.baseRowHeight 的固定倍数。 */
|
|
177
|
+
height: number;
|
|
178
|
+
cells: GridCellV2[];
|
|
179
|
+
}
|
|
180
|
+
export interface GridCellV2 extends SchemaNodeBaseV2 {
|
|
181
|
+
type: "grid-cell";
|
|
182
|
+
width?: GridTrackV2;
|
|
183
|
+
colspan?: number;
|
|
184
|
+
/** 单元格行高倍数(覆盖所在 Grid 行的 height);不设置时继承 Grid 行高。 */
|
|
185
|
+
rowHeight?: number;
|
|
186
|
+
padding?: number;
|
|
187
|
+
align?: "left" | "center" | "right";
|
|
188
|
+
verticalAlign?: "top" | "middle" | "bottom";
|
|
189
|
+
/**
|
|
190
|
+
* 弹性布局(单元格级):为 true 时该单元格自身作为水平流式 flex 容器,
|
|
191
|
+
* 其直接子节点沿水平方向排布、到达边界自动换行、水平左对齐、垂直居中、间隔 0
|
|
192
|
+
* (等价于 CSS `display:flex; flex-direction:row; flex-wrap:wrap;
|
|
193
|
+
* justify-content:flex-start; align-items:center`)。
|
|
194
|
+
* 适用于「一格内横排多个字段/文本」的弹性分组场景;缺省为 false(普通格子,
|
|
195
|
+
* 子节点按默认对齐居中放置)。flex 是单元格属性,不是独立组件。
|
|
196
|
+
*/
|
|
197
|
+
flex?: boolean;
|
|
198
|
+
children: FormNodeV2[];
|
|
199
|
+
}
|
|
200
|
+
export interface TableColumnV2 {
|
|
201
|
+
key: string;
|
|
202
|
+
title: string;
|
|
203
|
+
width?: GridTrackV2;
|
|
204
|
+
align?: "left" | "center" | "right";
|
|
205
|
+
}
|
|
206
|
+
export interface TableCellTemplateV2 extends SchemaNodeBaseV2 {
|
|
207
|
+
type: "table-cell-template";
|
|
208
|
+
columnKey: string;
|
|
209
|
+
children: FormNodeV2[];
|
|
210
|
+
}
|
|
211
|
+
export interface TableNodeV2 extends SchemaNodeBaseV2 {
|
|
212
|
+
type: "table";
|
|
213
|
+
field?: string;
|
|
214
|
+
columns: TableColumnV2[];
|
|
215
|
+
minRows: number;
|
|
216
|
+
rowTemplate: TableCellTemplateV2[];
|
|
217
|
+
/** 表头样式(标题行):字号(px) / 粗细 / 对齐。可选;未设时回退到列 align 与默认外观。 */
|
|
218
|
+
headerStyle?: TextStyleV2;
|
|
219
|
+
/** 边框模式(与 Grid 一致):all=外框+内部线(默认)、inner=仅内部线、outer=仅外框、none=无。 */
|
|
220
|
+
border?: BorderModeV2;
|
|
221
|
+
/**
|
|
222
|
+
* 分页引擎内部字段(2026-09-03 廿一续):跨页切分时,本片段最多渲染的数据行数。
|
|
223
|
+
* 仅由 `paginateTable` 写入,渲染层 `GridSchemaNode.vue` 用它限制 `v-for` 行范围。
|
|
224
|
+
* 未设置或 ≤0 时渲染全部行(= 不限制,与未分页时一致)。
|
|
225
|
+
* 序列化/校验层忽略此字段(不在用户 JSON 中出现)。
|
|
226
|
+
*/
|
|
227
|
+
_paginateMaxRows?: number;
|
|
228
|
+
}
|
|
229
|
+
export interface HtmlNodeV2 extends SchemaNodeBaseV2 {
|
|
230
|
+
type: "html";
|
|
231
|
+
/** HTML 片段,配置期即要求不含 <script>/on* 等脚本;渲染前仍由引擎统一清洗(见 engine.md §11) */
|
|
232
|
+
html: string;
|
|
233
|
+
/** 仅在 Shadow DOM 内生效,不污染表单样式 */
|
|
234
|
+
css?: string;
|
|
235
|
+
}
|
|
236
|
+
export interface ImageNodeV2 extends SchemaNodeBaseV2 {
|
|
237
|
+
type: "image";
|
|
238
|
+
src?: string;
|
|
239
|
+
field?: string;
|
|
240
|
+
width?: number;
|
|
241
|
+
height?: number;
|
|
242
|
+
objectFit?: "contain" | "cover" | "fill";
|
|
243
|
+
}
|
|
244
|
+
export type FormNodeV2 = GridNodeV2 | PNodeV2 | TextNodeV2 | TableNodeV2 | HtmlNodeV2 | ImageNodeV2;
|
|
245
|
+
/** 表单数据:字段名 -> 值。渲染时用于原地填充字段节点(见 engine.md §11)。 */
|
|
246
|
+
export type FormDataV2 = Record<string, string | number | boolean | null>;
|
|
247
|
+
/** Persisted component nodes. Rows/cells/templates are owned layout records. */
|
|
248
|
+
export type SchemaNodeV2 = PageSchemaV2 | FormNodeV2;
|
|
249
|
+
export type LayoutNodeV2 = GridRowV2 | GridCellV2 | TableCellTemplateV2;
|
|
250
|
+
export type EditorNodeV2 = SchemaNodeV2 | LayoutNodeV2;
|
|
251
|
+
/** Returns true for nodes that can be selected and edited as components. */
|
|
252
|
+
export declare function isSelectableSchemaNodeV2(node: EditorNodeV2 | undefined): node is SchemaNodeV2;
|
|
253
|
+
export interface PageSchemaV2 extends SchemaNodeBaseV2 {
|
|
254
|
+
type: "page";
|
|
255
|
+
mode: PageModeV2;
|
|
256
|
+
margin: EdgeInsetsV2;
|
|
257
|
+
children: FormNodeV2[];
|
|
258
|
+
}
|
|
259
|
+
export interface FormSchemaV2 {
|
|
260
|
+
version: 2;
|
|
261
|
+
paper: PaperConfigV2;
|
|
262
|
+
baseRowHeight: number;
|
|
263
|
+
pages: PageSchemaV2[];
|
|
264
|
+
}
|
|
265
|
+
/** 纸张边长(mm):short=短边,long=长边。渲染纸张、打印 `@page size`、溢出校验共用同一份,
|
|
266
|
+
* 避免各处硬编码「A4 = 210×297」(历史上 `@page` 写死 A4,导致选 A3 时打印被裁)。 */
|
|
267
|
+
export declare const PAPER_SIDE_MM: Record<PaperSizeV2, {
|
|
268
|
+
short: number;
|
|
269
|
+
long: number;
|
|
270
|
+
}>;
|
|
271
|
+
export interface ResolvedPaperSizeV2 {
|
|
272
|
+
size: PaperSizeV2;
|
|
273
|
+
/** 方向由纸张尺寸派生(无独立方向选择):A4 → 纵向,A3 → 横向。 */
|
|
274
|
+
orientation: OrientationV2;
|
|
275
|
+
widthMm: number;
|
|
276
|
+
heightMm: number;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* 解析纸张物理尺寸(mm)。渲染纸张宽度/最小高度、打印 `@page size`、页面溢出校验
|
|
280
|
+
* 三处统一调用本函数,保证「屏幕上看到多大纸、打印出来就是多大纸」。
|
|
281
|
+
*/
|
|
282
|
+
export declare function resolvePaperSizeV2(paper: PaperConfigV2): ResolvedPaperSizeV2;
|
|
283
|
+
//# sourceMappingURL=schema-v2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-v2.d.ts","sourceRoot":"","sources":["../../src/types/schema-v2.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 日期字段显示格式工具(P 字段 action="date" 的「format」属性配套)。
|
|
3
|
+
*
|
|
4
|
+
* 格式串 token:`{YYYY}` 年 / `{MM}` 月 / `{DD}` 日 / `{hh}` 时 / `{mm}` 分 / `{ss}` 秒。
|
|
5
|
+
* 例:`{YYYY}年{MM}月{DD} {hh}时{mm}分{ss}秒`。
|
|
6
|
+
*
|
|
7
|
+
* 仅作用于【填写回写】环节:宿主(消费页)在 date 选择器 change 时把原生 ISO 值
|
|
8
|
+
* (`YYYY-MM-DD` 或 `YYYY-MM-DDTHH:mm[:ss]`)按 `actionParams.format` 套成中文串写进 data,
|
|
9
|
+
* 票面直接显示该串;脱敏/采集/打印均不改此逻辑(按 data 原样)。无 format 时原样存储(向后兼容)。
|
|
10
|
+
*
|
|
11
|
+
* 渲染内核不认识这些 token——它们属于宿主的「外部输入组件」职责(与 action 机制同轨)。
|
|
12
|
+
*/
|
|
13
|
+
export interface DateParts {
|
|
14
|
+
Y: string;
|
|
15
|
+
M: string;
|
|
16
|
+
D: string;
|
|
17
|
+
h: string;
|
|
18
|
+
m: string;
|
|
19
|
+
s: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 把原生 ISO 值格式化为配置串。无 format / 无值 / 无法解析 → 原样返回(向后兼容)。
|
|
23
|
+
* 注意:替换发生在 format 模板上,值取自解析后的 iso 六段。
|
|
24
|
+
*/
|
|
25
|
+
export declare function formatDateValue(iso: string, format?: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* 把已格式化的值按 format 还原为原生 ISO(date 或 datetime-local),
|
|
28
|
+
* 供宿主回填到原生选择器(再次打开时定位到已填值)。解析不到完整年月日 → 返回 ""(无法回填)。
|
|
29
|
+
*/
|
|
30
|
+
export declare function parseDateValue(formatted: string, format?: string): string;
|
|
31
|
+
/** 格式串是否含时间 token(决定宿主用 datetime-local 还是 date 选择器)。
|
|
32
|
+
* 注意无 `i` 标志:分钟是小写 `{mm}`、月份是大写 `{MM}`,不可混。 */
|
|
33
|
+
export declare function formatHasTime(format?: string): boolean;
|
|
34
|
+
//# sourceMappingURL=date-format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-format.d.ts","sourceRoot":"","sources":["../../src/utils/date-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,SAAS;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAwBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAsBpE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAuBzE;AAED;gDACgD;AAChD,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAEtD"}
|
package/package.json
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@cluadwong/form-designer",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public"
|
|
6
|
+
},
|
|
7
|
+
"type": "module",
|
|
8
|
+
"description": "固定布局表单设计器与渲染组件(Schema V2):可视化编排版式 → 导出 Schema JSON → 渲染 / 填写 / 打印",
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"author": "CluadWong",
|
|
11
|
+
"keywords": [
|
|
12
|
+
"vue",
|
|
13
|
+
"vue3",
|
|
14
|
+
"form",
|
|
15
|
+
"form-designer",
|
|
16
|
+
"form-renderer",
|
|
17
|
+
"schema",
|
|
18
|
+
"typescript",
|
|
19
|
+
"print",
|
|
20
|
+
"layout"
|
|
21
|
+
],
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "git+https://github.com/CluadWong/form-designer.git"
|
|
25
|
+
},
|
|
26
|
+
"homepage": "https://github.com/CluadWong/form-designer",
|
|
27
|
+
"bugs": {
|
|
28
|
+
"url": "https://github.com/CluadWong/form-designer/issues"
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist"
|
|
32
|
+
],
|
|
33
|
+
"main": "./dist/index.js",
|
|
34
|
+
"module": "./dist/index.js",
|
|
35
|
+
"types": "./dist/index.d.ts",
|
|
36
|
+
"//typesVersions": "宿主 tsconfig 若用 moduleResolution:\"node\"(node10) 会忽略 exports,子路径 @cluadwong/form-designer/designer|renderer 的类型解析不到(TS2307)。此映射补上该回落路径;用 bundler/node16 的宿主走 exports,两者并存不冲突。",
|
|
37
|
+
"typesVersions": {
|
|
38
|
+
"*": {
|
|
39
|
+
"designer": [
|
|
40
|
+
"./dist/designer.d.ts"
|
|
41
|
+
],
|
|
42
|
+
"renderer": [
|
|
43
|
+
"./dist/renderer.d.ts"
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"exports": {
|
|
48
|
+
".": {
|
|
49
|
+
"types": "./dist/index.d.ts",
|
|
50
|
+
"import": "./dist/index.js"
|
|
51
|
+
},
|
|
52
|
+
"./renderer": {
|
|
53
|
+
"types": "./dist/renderer.d.ts",
|
|
54
|
+
"import": "./dist/renderer.js"
|
|
55
|
+
},
|
|
56
|
+
"./designer": {
|
|
57
|
+
"types": "./dist/designer.d.ts",
|
|
58
|
+
"import": "./dist/designer.js"
|
|
59
|
+
},
|
|
60
|
+
"./renderer/style.css": "./dist/renderer-core.css",
|
|
61
|
+
"./designer/style.css": "./dist/designer-ui.css",
|
|
62
|
+
"./style.css": "./dist/ticket-designer.css"
|
|
63
|
+
},
|
|
64
|
+
"sideEffects": [
|
|
65
|
+
"**/*.css"
|
|
66
|
+
],
|
|
67
|
+
"scripts": {
|
|
68
|
+
"dev": "vite",
|
|
69
|
+
"build": "vue-tsc --noEmit && vite build",
|
|
70
|
+
"build:lib": "vite build --config vite.lib.config.ts --emptyOutDir",
|
|
71
|
+
"dev:lib": "npm run build:types && vite build --config vite.lib.config.ts --watch",
|
|
72
|
+
"build:types": "vue-tsc -p tsconfig.lib.json --declaration --emitDeclarationOnly --outDir dist && node scripts/fix-dts-alias.mjs",
|
|
73
|
+
"pack:check": "npm run build:lib && npm run build:types && npm pack --dry-run",
|
|
74
|
+
"test": "vitest run",
|
|
75
|
+
"release": "bash scripts/release.sh"
|
|
76
|
+
},
|
|
77
|
+
"peerDependencies": {
|
|
78
|
+
"vue": "^3.5.0"
|
|
79
|
+
},
|
|
80
|
+
"dependencies": {
|
|
81
|
+
"@panzoom/panzoom": "^4.6.2",
|
|
82
|
+
"dompurify": "^3.4.14",
|
|
83
|
+
"vue-print-next": "^1.1.6"
|
|
84
|
+
},
|
|
85
|
+
"devDependencies": {
|
|
86
|
+
"@vitejs/plugin-vue": "^5.1.0",
|
|
87
|
+
"@vue/test-utils": "^2.4.0",
|
|
88
|
+
"jsdom": "^24.0.0",
|
|
89
|
+
"typescript": "^5.5.0",
|
|
90
|
+
"vite": "^5.4.0",
|
|
91
|
+
"vitest": "^1.6.0",
|
|
92
|
+
"vue": "^3.5.0",
|
|
93
|
+
"vue-tsc": "^2.1.0"
|
|
94
|
+
},
|
|
95
|
+
"private": false
|
|
96
|
+
}
|