@kne/form-creator 0.1.7 → 0.1.11
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/README.md +268 -1
- package/dist/index.css +23 -2
- package/dist/index.css.map +1 -1
- package/dist/index.js +596 -127
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +588 -131
- package/dist/index.modern.js.map +1 -1
- package/package.json +2 -3
package/README.md
CHANGED
|
@@ -691,6 +691,7 @@ preset({
|
|
|
691
691
|
groupName: '评价组件',
|
|
692
692
|
component: Rate,
|
|
693
693
|
defaultProps: { count: 5, allowHalf: false, allowClear: true },
|
|
694
|
+
valueSchema: { type: 'number' },
|
|
694
695
|
propsSchema: [
|
|
695
696
|
{
|
|
696
697
|
name: 'count',
|
|
@@ -718,6 +719,7 @@ preset({
|
|
|
718
719
|
label: '滑块',
|
|
719
720
|
component: Slider,
|
|
720
721
|
defaultProps: { min: 0, max: 100, step: 1 },
|
|
722
|
+
valueSchema: { type: 'number' },
|
|
721
723
|
propsSchema: [
|
|
722
724
|
{ name: 'min', label: '最小值', type: 'number', defaultValue: 0 },
|
|
723
725
|
{ name: 'max', label: '最大值', type: 'number', defaultValue: 100 },
|
|
@@ -804,6 +806,232 @@ render(<PresetExtendExample />);
|
|
|
804
806
|
|
|
805
807
|
```
|
|
806
808
|
|
|
809
|
+
- 生成提交数据 JSON Schema
|
|
810
|
+
- schemaToDataSchema:对照表单提交结果与生成的 data schema(含 hidden、object/list、choice oneOf/anyOf)
|
|
811
|
+
- _FormCreator(@kne/current-lib_form-creator)[import * as _FormCreator from "@kne/form-creator"],(@kne/current-lib_form-creator/dist/index.css)[import "@kne/form-creator/dist/index.css"],_JsonView(@kne/json-view)[import * as _JsonView from "@kne/json-view"],(@kne/json-view/dist/index.css)[import "@kne/json-view/dist/index.css"],antd(antd)[import antd from "antd"]
|
|
812
|
+
|
|
813
|
+
```jsx
|
|
814
|
+
const {
|
|
815
|
+
SchemaRenderer,
|
|
816
|
+
schemaToDataSchema,
|
|
817
|
+
createBlock,
|
|
818
|
+
createField,
|
|
819
|
+
createChoiceOption,
|
|
820
|
+
createStep,
|
|
821
|
+
defaultSchema
|
|
822
|
+
} = _FormCreator;
|
|
823
|
+
const { default: JsonView } = _JsonView;
|
|
824
|
+
const { useMemo, useState } = React;
|
|
825
|
+
const { Alert, Card, Col, Row, Space, Switch, Typography } = antd;
|
|
826
|
+
const { Text, Title } = Typography;
|
|
827
|
+
|
|
828
|
+
const buildDemoSchema = multipleChoice => ({
|
|
829
|
+
...defaultSchema(),
|
|
830
|
+
title: '提交数据 Schema 演示',
|
|
831
|
+
actions: {
|
|
832
|
+
showSubmit: true,
|
|
833
|
+
showReset: true,
|
|
834
|
+
submitText: '提交并对照',
|
|
835
|
+
resetText: '重置'
|
|
836
|
+
},
|
|
837
|
+
blocks: [
|
|
838
|
+
createBlock('formInfo', {
|
|
839
|
+
title: '基本信息',
|
|
840
|
+
subtitle: '含 hidden 字段(界面不展示,但应出现在 data schema)',
|
|
841
|
+
column: 2,
|
|
842
|
+
list: [
|
|
843
|
+
createField({
|
|
844
|
+
type: 'Input',
|
|
845
|
+
name: 'name',
|
|
846
|
+
label: '姓名',
|
|
847
|
+
rule: 'REQ',
|
|
848
|
+
props: { placeholder: '请输入姓名' }
|
|
849
|
+
}),
|
|
850
|
+
createField({
|
|
851
|
+
type: 'Input',
|
|
852
|
+
name: 'mobile',
|
|
853
|
+
label: '手机号',
|
|
854
|
+
rule: 'REQ TEL',
|
|
855
|
+
props: { placeholder: '请输入手机号' }
|
|
856
|
+
}),
|
|
857
|
+
createField({
|
|
858
|
+
type: 'Select',
|
|
859
|
+
name: 'city',
|
|
860
|
+
label: '城市',
|
|
861
|
+
props: {
|
|
862
|
+
allowClear: true,
|
|
863
|
+
options: [
|
|
864
|
+
{ label: '上海', value: 'sh' },
|
|
865
|
+
{ label: '北京', value: 'bj' }
|
|
866
|
+
]
|
|
867
|
+
}
|
|
868
|
+
}),
|
|
869
|
+
createField({
|
|
870
|
+
type: 'Input',
|
|
871
|
+
name: 'internalCode',
|
|
872
|
+
label: '内部编码',
|
|
873
|
+
hidden: true,
|
|
874
|
+
rule: 'REQ',
|
|
875
|
+
tips: 'hidden: true,预览不可见,data schema 应包含'
|
|
876
|
+
}),
|
|
877
|
+
createField({
|
|
878
|
+
type: 'Switch',
|
|
879
|
+
name: 'agree',
|
|
880
|
+
label: '同意协议'
|
|
881
|
+
})
|
|
882
|
+
]
|
|
883
|
+
}),
|
|
884
|
+
createBlock('object', {
|
|
885
|
+
name: 'profile',
|
|
886
|
+
title: '档案对象',
|
|
887
|
+
column: 2,
|
|
888
|
+
list: [
|
|
889
|
+
createField({ type: 'InputNumber', name: 'age', label: '年龄' }),
|
|
890
|
+
createField({
|
|
891
|
+
type: 'DatePicker',
|
|
892
|
+
name: 'birthday',
|
|
893
|
+
label: '生日',
|
|
894
|
+
props: { format: 'YYYY-MM-DD' }
|
|
895
|
+
})
|
|
896
|
+
]
|
|
897
|
+
}),
|
|
898
|
+
createBlock('list', {
|
|
899
|
+
name: 'projects',
|
|
900
|
+
title: '项目经历',
|
|
901
|
+
addText: '添加项目',
|
|
902
|
+
minLength: 0,
|
|
903
|
+
maxLength: 5,
|
|
904
|
+
list: [
|
|
905
|
+
createField({ type: 'Input', name: 'projectName', label: '项目名', rule: 'REQ' }),
|
|
906
|
+
createField({ type: 'TextArea', name: 'desc', label: '描述', props: { rows: 2 } })
|
|
907
|
+
],
|
|
908
|
+
itemBlocks: [
|
|
909
|
+
createBlock('object', {
|
|
910
|
+
name: 'period',
|
|
911
|
+
title: '周期',
|
|
912
|
+
column: 2,
|
|
913
|
+
list: [
|
|
914
|
+
createField({ type: 'Input', name: 'start', label: '开始' }),
|
|
915
|
+
createField({ type: 'Input', name: 'end', label: '结束' })
|
|
916
|
+
]
|
|
917
|
+
})
|
|
918
|
+
]
|
|
919
|
+
}),
|
|
920
|
+
createBlock('multiField', {
|
|
921
|
+
name: 'tags',
|
|
922
|
+
label: '标签',
|
|
923
|
+
fieldType: 'Input',
|
|
924
|
+
addText: '添加标签'
|
|
925
|
+
}),
|
|
926
|
+
createBlock('choice', {
|
|
927
|
+
title: '客户类型',
|
|
928
|
+
mode: multipleChoice ? 'multiple' : 'single',
|
|
929
|
+
minLength: multipleChoice ? 1 : undefined,
|
|
930
|
+
maxLength: multipleChoice ? 2 : undefined,
|
|
931
|
+
selectorName: 'customerType',
|
|
932
|
+
selectorInData: true,
|
|
933
|
+
options: [
|
|
934
|
+
createChoiceOption({
|
|
935
|
+
id: 'personal',
|
|
936
|
+
title: '个人',
|
|
937
|
+
list: [
|
|
938
|
+
createField({ type: 'Input', name: 'idCard', label: '身份证号', rule: 'REQ' }),
|
|
939
|
+
createField({ type: 'Input', name: 'personalRemark', label: '备注' })
|
|
940
|
+
]
|
|
941
|
+
}),
|
|
942
|
+
createChoiceOption({
|
|
943
|
+
id: 'company',
|
|
944
|
+
title: '企业',
|
|
945
|
+
list: [
|
|
946
|
+
createField({ type: 'Input', name: 'companyName', label: '公司名', rule: 'REQ' }),
|
|
947
|
+
createField({ type: 'Input', name: 'creditCode', label: '统一社会信用代码' })
|
|
948
|
+
],
|
|
949
|
+
blocks: [
|
|
950
|
+
createBlock('object', {
|
|
951
|
+
name: 'billing',
|
|
952
|
+
title: '开票信息',
|
|
953
|
+
list: [createField({ type: 'Input', name: 'taxTitle', label: '抬头' })]
|
|
954
|
+
})
|
|
955
|
+
]
|
|
956
|
+
})
|
|
957
|
+
]
|
|
958
|
+
}),
|
|
959
|
+
createBlock('steps', {
|
|
960
|
+
title: '补充步骤',
|
|
961
|
+
items: [
|
|
962
|
+
createStep({
|
|
963
|
+
title: '确认',
|
|
964
|
+
list: [createField({ type: 'Checkbox', name: 'confirmed', label: '已核对信息' })]
|
|
965
|
+
})
|
|
966
|
+
]
|
|
967
|
+
})
|
|
968
|
+
]
|
|
969
|
+
});
|
|
970
|
+
|
|
971
|
+
const SchemaToDataSchemaExample = () => {
|
|
972
|
+
const [multipleChoice, setMultipleChoice] = useState(false);
|
|
973
|
+
const [submitData, setSubmitData] = useState(null);
|
|
974
|
+
|
|
975
|
+
const schema = useMemo(() => buildDemoSchema(multipleChoice), [multipleChoice]);
|
|
976
|
+
const dataSchema = useMemo(() => schemaToDataSchema(schema), [schema]);
|
|
977
|
+
|
|
978
|
+
return (
|
|
979
|
+
<Space direction="vertical" size={16} style={{ width: '100%' }}>
|
|
980
|
+
<Alert
|
|
981
|
+
type="info"
|
|
982
|
+
showIcon
|
|
983
|
+
message="schemaToDataSchema"
|
|
984
|
+
description={
|
|
985
|
+
<span>
|
|
986
|
+
左侧可填写并提交,右侧为根据搭建 Schema 生成的<strong>提交数据 JSON Schema</strong>。请对照:hidden 字段
|
|
987
|
+
<Text code>internalCode</Text>、object / list / multiField、choice 的 <Text code>oneOf</Text>/
|
|
988
|
+
<Text code>anyOf</Text> 是否符合预期。
|
|
989
|
+
</span>
|
|
990
|
+
}
|
|
991
|
+
/>
|
|
992
|
+
|
|
993
|
+
<Space align="center">
|
|
994
|
+
<Text>客户类型多选</Text>
|
|
995
|
+
<Switch checked={multipleChoice} onChange={setMultipleChoice} checkedChildren="anyOf" unCheckedChildren="oneOf" />
|
|
996
|
+
<Text type="secondary">{multipleChoice ? 'choice → anyOf + selector 数组' : 'choice → oneOf + selector const'}</Text>
|
|
997
|
+
</Space>
|
|
998
|
+
|
|
999
|
+
<Row gutter={[16, 16]}>
|
|
1000
|
+
<Col xs={24} lg={12}>
|
|
1001
|
+
<Card size="small" title="表单预览(提交数据)" bordered>
|
|
1002
|
+
<SchemaRenderer
|
|
1003
|
+
key={multipleChoice ? 'multi' : 'single'}
|
|
1004
|
+
schema={schema}
|
|
1005
|
+
formProps={{
|
|
1006
|
+
onSubmit: data => setSubmitData(data)
|
|
1007
|
+
}}
|
|
1008
|
+
/>
|
|
1009
|
+
{submitData ? (
|
|
1010
|
+
<div style={{ marginTop: 12 }}>
|
|
1011
|
+
<Title level={5}>最近一次提交</Title>
|
|
1012
|
+
<JsonView data={submitData} theme="light" collapsedFrom={2} searchable={false} />
|
|
1013
|
+
</div>
|
|
1014
|
+
) : null}
|
|
1015
|
+
</Card>
|
|
1016
|
+
</Col>
|
|
1017
|
+
<Col xs={24} lg={12}>
|
|
1018
|
+
<Card size="small" title="生成的 data schema" bordered>
|
|
1019
|
+
<JsonView data={dataSchema} theme="light" collapsedFrom={3} searchable={false} />
|
|
1020
|
+
</Card>
|
|
1021
|
+
</Col>
|
|
1022
|
+
</Row>
|
|
1023
|
+
|
|
1024
|
+
<Card size="small" title="搭建 Schema(源)" bordered>
|
|
1025
|
+
<JsonView data={schema} theme="light" collapsedFrom={2} searchable={false} />
|
|
1026
|
+
</Card>
|
|
1027
|
+
</Space>
|
|
1028
|
+
);
|
|
1029
|
+
};
|
|
1030
|
+
|
|
1031
|
+
render(<SchemaToDataSchemaExample />);
|
|
1032
|
+
|
|
1033
|
+
```
|
|
1034
|
+
|
|
807
1035
|
### API
|
|
808
1036
|
|
|
809
1037
|
| 属性 | 类型 | 默认值 | 说明 |
|
|
@@ -945,9 +1173,37 @@ import { Form, SubmitButton } from '@kne/form-info';
|
|
|
945
1173
|
#### 工具方法
|
|
946
1174
|
|
|
947
1175
|
- `createBlock(kind)` / `createStep()` / `createChoiceOption()` / `normalizeSchema(schema)`
|
|
1176
|
+
- `schemaToDataSchema(schema)` 根据搭建 Schema 生成**提交数据**的 JSON Schema(见下节)
|
|
948
1177
|
- `preset({ rules, fields })` 一次注册扩展规则与填写项(推荐)
|
|
949
1178
|
- `parseRuleString(rule)` / `buildRuleString(config)` 校验规则字符串解析/组装
|
|
950
1179
|
|
|
1180
|
+
#### schemaToDataSchema
|
|
1181
|
+
|
|
1182
|
+
将搭建 Schema 转为描述表单提交数据形状的 JSON Schema(`type: 'object'`)。
|
|
1183
|
+
|
|
1184
|
+
```js
|
|
1185
|
+
import { schemaToDataSchema } from '@kne/form-creator';
|
|
1186
|
+
|
|
1187
|
+
const dataSchema = schemaToDataSchema(schema);
|
|
1188
|
+
// dataSchema.properties / required / oneOf|anyOf(choice)
|
|
1189
|
+
```
|
|
1190
|
+
|
|
1191
|
+
| 搭建块 | 提交数据形状 |
|
|
1192
|
+
|--------|----------------|
|
|
1193
|
+
| formInfo | 字段摊平进当前 object |
|
|
1194
|
+
| object | `properties[name]` = nested object(字段名为相对 name) |
|
|
1195
|
+
| list / tableList | `properties[name]` = array of object |
|
|
1196
|
+
| multiField | `properties[name]` = array,元素为 `fieldType` 的 valueSchema |
|
|
1197
|
+
| steps | 各 step 字段/子块并入当前层 |
|
|
1198
|
+
| choice(single) | `oneOf`:每支含 selector `const` + 该 option 字段 |
|
|
1199
|
+
| choice(multiple) | 当前层 selector 为数组 + `anyOf` 各 option 字段支 |
|
|
1200
|
+
|
|
1201
|
+
说明:
|
|
1202
|
+
|
|
1203
|
+
- **hidden 字段仍进入** data schema(可提交)
|
|
1204
|
+
- 字段值类型来自 registry 的 `valueSchema`;`rule` 含 `REQ` 时写入父 object 的 `required`(choice 支内同样生效)
|
|
1205
|
+
- 扩展字段在 `preset` / `registerField` 中声明 `valueSchema`(对象或 `(field) => schema`);未声明则回退 `{ type: 'string' }`
|
|
1206
|
+
|
|
951
1207
|
#### preset(推荐)
|
|
952
1208
|
|
|
953
1209
|
应用入口调用一次,同时完成:
|
|
@@ -996,15 +1252,26 @@ preset({
|
|
|
996
1252
|
| `rules` | `Record<string, RuleDef>` | key 为规则 token;`RuleDef` 含 `label` + `reg/message` 或 `validator` |
|
|
997
1253
|
| `fields` | `Record<string, FieldDef>` | key 为字段 type;见下方 FieldDef |
|
|
998
1254
|
|
|
999
|
-
**FieldDef** 常用字段:`label`、`component`、`groupName`、`defaultProps`、`propsSchema`、`hasOptions`、`hasFieldProps` 等。
|
|
1255
|
+
**FieldDef** 常用字段:`label`、`component`、`groupName`、`defaultProps`、`propsSchema`、`valueSchema`、`hasOptions`、`hasFieldProps` 等。
|
|
1256
|
+
|
|
1257
|
+
- `valueSchema`:该类型**提交值**的 JSON Schema 片段;可为对象,或 `(field) => schema`(可按 props 细化)。供 `schemaToDataSchema` 使用;缺省回退 `{ type: 'string' }`。
|
|
1000
1258
|
|
|
1001
1259
|
扩展填写项时,用 `fields` 内的 `propsSchema` 声明可编辑的额外参数(写入字段 `props`),编辑器会按声明自动生成「填写项设置」表单:
|
|
1002
1260
|
|
|
1003
1261
|
```js
|
|
1004
1262
|
fields: {
|
|
1263
|
+
Rate: {
|
|
1264
|
+
label: '评分',
|
|
1265
|
+
component: Rate,
|
|
1266
|
+
valueSchema: { type: 'number' },
|
|
1267
|
+
propsSchema: [
|
|
1268
|
+
{ name: 'count', label: '星星总数', type: 'number', min: 1, max: 10, defaultValue: 5 }
|
|
1269
|
+
]
|
|
1270
|
+
},
|
|
1005
1271
|
Slider: {
|
|
1006
1272
|
label: '滑块',
|
|
1007
1273
|
component: Slider,
|
|
1274
|
+
valueSchema: { type: 'number' },
|
|
1008
1275
|
defaultProps: { min: 0, max: 100, step: 1 },
|
|
1009
1276
|
propsSchema: [
|
|
1010
1277
|
{ name: 'min', label: '最小值', type: 'number', defaultValue: 0 },
|
package/dist/index.css
CHANGED
|
@@ -311,11 +311,21 @@
|
|
|
311
311
|
gap: 8px;
|
|
312
312
|
flex-wrap: wrap;
|
|
313
313
|
margin-bottom: 6px;
|
|
314
|
+
min-width: 0;
|
|
314
315
|
}
|
|
315
316
|
|
|
316
317
|
.kne-form-creator_NBinE {
|
|
317
318
|
flex: 1;
|
|
318
|
-
min-width:
|
|
319
|
+
min-width: 0;
|
|
320
|
+
max-width: 100%;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
.kne-form-creator_es-FC {
|
|
324
|
+
flex-shrink: 0;
|
|
325
|
+
display: inline-flex;
|
|
326
|
+
align-items: center;
|
|
327
|
+
flex-wrap: wrap;
|
|
328
|
+
gap: 4px;
|
|
319
329
|
}
|
|
320
330
|
|
|
321
331
|
.kne-form-creator_CCKZZ {
|
|
@@ -959,11 +969,22 @@
|
|
|
959
969
|
padding: 8px 10px;
|
|
960
970
|
}
|
|
961
971
|
.kne-form-creator_Xrjrk.kne-form-creator_LtgJz .kne-form-creator_wkhEX {
|
|
962
|
-
|
|
972
|
+
align-items: flex-start;
|
|
973
|
+
gap: 8px;
|
|
974
|
+
}
|
|
975
|
+
.kne-form-creator_Xrjrk.kne-form-creator_LtgJz {
|
|
976
|
+
/* 标题独占一行,避免与常显操作栏挤成竖排字 */
|
|
963
977
|
}
|
|
964
978
|
.kne-form-creator_Xrjrk.kne-form-creator_LtgJz .kne-form-creator_NBinE {
|
|
979
|
+
flex: 0 0 100%;
|
|
965
980
|
width: 100%;
|
|
966
981
|
min-width: 0;
|
|
982
|
+
max-width: 100%;
|
|
983
|
+
}
|
|
984
|
+
.kne-form-creator_Xrjrk.kne-form-creator_LtgJz .kne-form-creator_es-FC {
|
|
985
|
+
width: 100%;
|
|
986
|
+
justify-content: flex-end;
|
|
987
|
+
gap: 6px;
|
|
967
988
|
}
|
|
968
989
|
.kne-form-creator_Xrjrk.kne-form-creator_LtgJz .kne-form-creator_XMkdt {
|
|
969
990
|
flex-wrap: wrap;
|
package/dist/index.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["style.module.scss"],"names":[],"mappings":"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R,cAAc;AAChB;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,cAAc;EACd,eAAe;EACf,cAAc;EACd,eAAe;AACjB;;AAEA,gBAAgB;AAChB;EACE,sBAAsB;EACtB,uBAAuB;EACvB,0BAA0B;EAC1B,qBAAqB;EACrB,+BAA+B;EAC/B,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,eAAe;AACjB;;AAEA;EACE,sBAAsB;EACtB,uBAAuB;EACvB,0BAA0B;EAC1B,qBAAqB;EACrB,+BAA+B;EAC/B,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,eAAe;AACjB;;AAEA;EACE;;IAEE,iBAAiB;EACnB;EACA;IACE,gBAAgB;EAClB;EACA;IACE,SAAS;EACX;EACA;IACE,kBAAkB;IAClB,mBAAmB;EACrB;EACA;IACE,wBAAwB;EAC1B;EACA;;IAEE,UAAU;IACV,oBAAoB;EACtB;EACA;IACE,eAAe;IACf,uBAAuB;IACvB,QAAQ;EACV;EACA;IACE,WAAW;IACX,eAAe;EACjB;EACA;IACE,gBAAgB;IAChB,cAAc;EAChB;EACA;IACE,WAAW;IACX,aAAa;IACb,yBAAyB;IACzB,eAAe;IACf,QAAQ;EACV;EACA;IACE,cAAc;EAChB;EACA;IACE,iBAAiB;EACnB;EACA;IACE,QAAQ;EACV;EACA;IACE,WAAW;IACX,YAAY;EACd;EACA;IACE,eAAe;IACf,QAAQ;IACR,YAAY;IACZ,eAAe;EACjB;EACA;IACE,eAAe;EACjB;EACA;IACE,2BAA2B;IAC3B,YAAY;EACd;EACA;IACE,iBAAiB;EACnB;EACA;IACE,+BAA+B;EACjC;EACA;IACE,uBAAuB;IACvB,0BAA0B;EAC5B;EACA;IACE,sBAAsB;IACtB,uBAAuB;IACvB,0BAA0B;EAC5B;EACA;IACE,UAAU;EACZ;EACA;;IAEE,gBAAgB;EAClB;EACA;IACE,eAAe;EACjB;EACA;IACE,gBAAgB;EAClB;AACF","file":"index.css","sourcesContent":["@charset \"UTF-8\";\n.kne-responsive-boundary {\n position: relative;\n}\n\n.kne-responsive-scroll {\n overflow: auto;\n}\n\n:root {\n --kne-viewport-width: 100vw;\n --kne-viewport-height: 100dvh;\n --kne-viewport-inline-size: 100vw;\n --kne-viewport-block-size: 100dvh;\n}\n\n.kne-responsive-boundary {\n --kne-viewport-width: 100vw;\n --kne-viewport-height: 100dvh;\n --kne-viewport-inline-size: 100vw;\n --kne-viewport-block-size: 100dvh;\n}\n\n.form-creator {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n min-height: 480px;\n align-items: stretch;\n box-sizing: border-box;\n padding: 16px;\n background: #f5f5f5;\n border-radius: 12px;\n}\n\n.editor-pane,\n.preview-pane {\n flex: 1 1 360px;\n min-width: min(360px, 100%);\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.editor-pane {\n flex-basis: 420px;\n min-width: min(420px, 100%);\n}\n\n.preview-pane {\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n margin: 0;\n padding: 16px;\n background: #fff;\n border-radius: 8px;\n}\n\n.editor-header {\n padding: 0 0 12px;\n margin-bottom: 4px;\n}\n\n.block-list-panel {\n padding: 8px 0 0;\n}\n\n.form-actions-setting-btn {\n width: 30px !important;\n min-width: 30px !important;\n height: 30px !important;\n padding: 0 !important;\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n}\n\n.panel-toolbar {\n margin-bottom: 10px;\n}\n\n.add-block-btn {\n height: 30px !important;\n padding: 0 14px !important;\n border-radius: 999px !important;\n font-weight: 500;\n}\n\n/* 添加填写项 / 添加步骤:中性小胶囊,与操作组同语汇 */\n.add-inline-btn {\n height: 26px !important;\n padding: 0 10px !important;\n border: none !important;\n border-radius: 999px !important;\n background: rgba(255, 255, 255, 0.72) !important;\n box-shadow: none !important;\n color: rgba(0, 0, 0, 0.55) !important;\n font-size: 12px !important;\n font-weight: 500;\n display: inline-flex !important;\n align-items: center;\n gap: 2px;\n}\n.add-inline-btn :global(.anticon) {\n font-size: 11px;\n}\n.add-inline-btn:hover {\n color: rgba(0, 0, 0, 0.85) !important;\n background: #ffffff !important;\n}\n.add-inline-btn:global(.ant-btn-text):not(:disabled):not(.ant-btn-disabled):hover {\n color: rgba(0, 0, 0, 0.85) !important;\n background: #ffffff !important;\n}\n\n.block-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n/* 模块:类型浅色底区隔,无边框线框 */\n.block-section {\n padding: 12px 14px;\n border-radius: 12px;\n background: #f4f6f9;\n transition: box-shadow 0.15s ease;\n}\n.block-section:hover {\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.03);\n}\n\n.block-kind-formInfo {\n background: #eef4ff;\n}\n\n.block-kind-list {\n background: #eafaf8;\n}\n\n.block-kind-tableList {\n background: #eef1ff;\n}\n\n.block-kind-multiField {\n background: #f6f0ff;\n}\n\n.block-kind-steps {\n background: #fff8e8;\n}\n.block-kind-steps .step-section {\n background: rgba(255, 255, 255, 0.72);\n}\n\n.block-section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n min-width: 0;\n}\n\n.block-header-left {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 6px 8px;\n min-width: 0;\n flex: 1;\n}\n.block-header-left :global(.ant-tag) {\n flex-shrink: 0;\n}\n\n.block-title {\n flex: 0 1 auto;\n min-width: 0;\n max-width: 160px;\n overflow: hidden;\n font-size: 14px;\n}\n\n.block-summary {\n flex-shrink: 0;\n padding: 1px 8px;\n border-radius: 999px;\n background: rgba(255, 255, 255, 0.7);\n color: rgba(0, 0, 0, 0.45);\n font-size: 12px;\n line-height: 18px;\n white-space: nowrap;\n}\n\n.block-header-actions {\n flex-shrink: 0;\n}\n\n.block-body {\n margin-top: 10px;\n}\n\n.item-blocks-section {\n margin-top: 12px;\n padding-top: 10px;\n border-top: 1px dashed rgba(0, 0, 0, 0.08);\n}\n\n.nested-block-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.block-section-nested {\n padding: 10px 12px;\n border-radius: 10px;\n background: rgba(255, 255, 255, 0.55);\n box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.04);\n}\n.block-section-nested:hover {\n box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.06);\n}\n\n.add-field-dropdown {\n min-width: 200px;\n max-width: 280px;\n max-height: 280px;\n overflow-y: auto;\n padding: 6px;\n background: #ffffff;\n border-radius: 8px;\n box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);\n}\n\n.add-field-dropdown-item {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 6px 8px;\n padding: 8px 10px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 13px;\n line-height: 20px;\n color: rgba(0, 0, 0, 0.88);\n}\n.add-field-dropdown-item:hover {\n background: #f5f5f5;\n}\n\n.add-field-dropdown-item-icon {\n display: inline-flex;\n color: #4183f0;\n font-size: 14px;\n}\n\n.add-field-dropdown-item-desc {\n flex: 1 0 100%;\n padding-left: 22px;\n color: rgba(0, 0, 0, 0.45);\n font-size: 12px;\n line-height: 16px;\n}\n\n.add-field-dropdown-divider {\n height: 1px;\n margin: 4px 6px;\n background: rgba(0, 0, 0, 0.06);\n}\n\n.add-field-dropdown-label {\n padding: 6px 10px 2px;\n color: rgba(0, 0, 0, 0.45);\n font-size: 12px;\n line-height: 18px;\n}\n\n.section-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 28px;\n margin-bottom: 6px;\n}\n\n.section-toolbar-label {\n font-size: 12px;\n}\n\n.field-list,\n.step-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n/* 步骤:半透明白底叠在模块色底上 */\n.step-section {\n padding: 10px 12px;\n border-radius: 10px;\n background: rgba(255, 255, 255, 0.55);\n}\n.step-section + .step-section {\n margin-top: 0;\n}\n\n.step-section-header {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n margin-bottom: 6px;\n}\n\n.step-section-title {\n flex: 1;\n min-width: 120px;\n}\n\n.step-index {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: rgba(47, 84, 235, 0.12);\n color: #2f54eb;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* 填写项:白底块 */\n.field-row {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 10px;\n border-radius: 10px;\n background: #ffffff;\n transition: background 0.15s ease, transform 0.15s ease;\n}\n.field-row:hover {\n background: #fcfdff;\n transform: translateY(-0.5px);\n}\n\n.field-row-index {\n width: 18px;\n flex-shrink: 0;\n color: #bfbfbf;\n font-size: 12px;\n text-align: center;\n}\n\n.field-row-main {\n flex: 1;\n min-width: 0;\n}\n\n.inline-empty {\n display: block;\n padding: 8px 10px;\n font-size: 12px;\n border-radius: 10px;\n background: rgba(255, 255, 255, 0.55);\n}\n\n/* 操作组 / 添加按钮:默认隐藏,悬停对应容器再显示 */\n.action-group,\n.hover-reveal {\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s ease;\n}\n\n.action-group {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n padding: 2px;\n border-radius: 999px;\n background: rgba(0, 0, 0, 0.06);\n gap: 0;\n}\n\n.block-section:hover > .block-section-header .action-group,\n.block-section:hover > .block-section-header .hover-reveal,\n.block-section:focus-within > .block-section-header .action-group,\n.block-section:focus-within > .block-section-header .hover-reveal,\n.block-section:hover > .block-body > .section-toolbar .hover-reveal,\n.block-section:focus-within > .block-body > .section-toolbar .hover-reveal,\n.step-section:hover > .step-section-header .action-group,\n.step-section:hover > .step-section-header .hover-reveal,\n.step-section:focus-within > .step-section-header .action-group,\n.step-section:focus-within > .step-section-header .hover-reveal,\n.field-row:hover .action-group,\n.field-row:focus-within .action-group,\n.hover-reveal-active {\n opacity: 1;\n pointer-events: auto;\n}\n\n.action-btn {\n width: 26px !important;\n height: 26px !important;\n min-width: 26px !important;\n padding: 0 !important;\n border: none !important;\n border-radius: 999px !important;\n box-shadow: none !important;\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n color: rgba(0, 0, 0, 0.55);\n}\n.action-btn :global(.anticon) {\n font-size: 12px;\n}\n.action-btn:hover:not(:disabled) {\n color: rgba(0, 0, 0, 0.88);\n background: rgba(255, 255, 255, 0.85) !important;\n}\n.action-btn:disabled {\n color: rgba(0, 0, 0, 0.25);\n background: transparent !important;\n}\n.action-btn:global(.ant-btn-dangerous) {\n color: #ff4d4f;\n}\n.action-btn:global(.ant-btn-dangerous):hover:not(:disabled) {\n color: #ff7875;\n background: rgba(255, 255, 255, 0.9) !important;\n}\n\n.add-block-dropdown {\n width: 320px;\n padding: 8px;\n background: #ffffff;\n border-radius: 8px;\n box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);\n}\n\n.add-block-option {\n display: flex;\n gap: 12px;\n padding: 10px 12px;\n border-radius: 8px;\n cursor: pointer;\n border: 1px solid transparent;\n transition: background 0.2s ease, border-color 0.2s ease;\n}\n.add-block-option:hover {\n background: #f7fbff;\n border-color: #dbe7ff;\n}\n\n.add-block-option-icon {\n width: 36px;\n height: 36px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #f1f7ff;\n color: #4183f0;\n flex-shrink: 0;\n}\n\n.add-block-option-text {\n min-width: 0;\n}\n\n.add-block-option-title {\n font-size: 14px;\n font-weight: 600;\n line-height: 20px;\n}\n\n.add-block-option-desc {\n margin-top: 2px;\n color: #667085;\n font-size: 12px;\n line-height: 16px;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.field-empty {\n padding: 24px 0;\n}\n\n.field-label-tips-icon {\n margin-left: 4px;\n color: rgba(0, 0, 0, 0.45);\n cursor: help;\n font-size: 14px;\n}\n\n.preview-header {\n padding: 0 0 12px;\n margin-bottom: 4px;\n}\n\n.preview-title {\n margin-bottom: 4px !important;\n}\n\n.preview-body {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n padding: 0;\n}\n.preview-body :global form {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 100%;\n}\n.preview-body :global .ant-card-extra .ant-btn.ant-btn-icon-only {\n width: 32px;\n height: 32px;\n min-width: 32px;\n padding: 0 !important;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.preview-body :global form .ant-card.no-title > .ant-card-head {\n margin-bottom: 0 !important;\n padding-bottom: 8px !important;\n}\n.preview-body :global form .ant-card.no-title > .ant-card-body {\n padding-top: 0 !important;\n}\n\n.schema-form {\n display: flex;\n flex-direction: column;\n width: 100%;\n min-height: 100%;\n box-sizing: border-box;\n}\n\n.schema-body {\n flex: 1 1 auto;\n display: flex;\n flex-direction: column;\n gap: 24px;\n width: 100%;\n min-width: 0;\n}\n\n/* 表单底部操作区:与内容分隔,固定落在表单最下方 */\n.schema-actions {\n width: 100%;\n box-sizing: border-box;\n margin-top: auto;\n padding: 16px 0;\n border-top: 1px solid rgba(0, 0, 0, 0.06);\n flex-shrink: 0;\n}\n\n.schema-actions-inner {\n width: 100%;\n}\n\n.choice-block {\n width: 100%;\n min-width: 0;\n box-sizing: border-box;\n}\n\n.choice-selector {\n margin-bottom: 4px;\n}\n.choice-selector :global .react-form__field {\n margin-bottom: 8px;\n}\n.choice-selector :global .ant-checkbox-group {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n.choice-selector :global .ant-radio-group {\n display: inline-flex;\n flex-wrap: wrap;\n}\n\n.choice-panels {\n display: flex;\n flex-direction: column;\n gap: 16px;\n width: 100%;\n margin-top: 12px;\n padding-top: 16px;\n border-top: 1px solid rgba(0, 0, 0, 0.06);\n box-sizing: border-box;\n}\n\n.choice-panels-empty {\n margin-top: 12px;\n padding: 16px 0 4px;\n border-top: 1px solid rgba(0, 0, 0, 0.06);\n font-size: 13px;\n line-height: 20px;\n color: rgba(0, 0, 0, 0.45);\n text-align: center;\n}\n\n.choice-option-panel {\n width: 100%;\n min-width: 0;\n box-sizing: border-box;\n padding: 12px 14px;\n border: 1px solid rgba(0, 0, 0, 0.06);\n border-radius: 8px;\n background: #fafafa;\n}\n.choice-option-panel :global(.ant-card),\n.choice-option-panel :global(.ant-card-body) {\n background: transparent;\n}\n\n.choice-option-panel-title {\n margin-bottom: 12px;\n font-size: 14px;\n font-weight: 600;\n line-height: 22px;\n color: rgba(0, 0, 0, 0.88);\n}\n\n.choice-option-summary {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-top: 8px;\n}\n\n.field-editor-form {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding-top: 4px;\n}\n\n.form-actions-editor {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding-top: 4px;\n}\n.form-actions-editor :global .ant-row {\n row-gap: 8px;\n}\n\n.form-actions-switch-field :global .react-form__field-main {\n min-height: 32px;\n display: flex;\n align-items: center;\n}\n\n.form-actions-layout-panel {\n padding: 14px 16px 18px;\n border-radius: 10px;\n background: #f7f8fa;\n border: 1px solid rgba(0, 0, 0, 0.04);\n}\n.form-actions-layout-panel :global .ant-card {\n background: transparent !important;\n border: none !important;\n box-shadow: none !important;\n}\n.form-actions-layout-panel :global .ant-card-head {\n display: none;\n}\n.form-actions-layout-panel :global .ant-card-body {\n padding: 0 !important;\n}\n.form-actions-layout-panel :global .ant-form-item {\n margin-bottom: 14px;\n}\n.form-actions-layout-panel :global .ant-form-item:last-child {\n margin-bottom: 0;\n}\n\n.form-actions-align-group {\n display: flex !important;\n width: 100%;\n padding: 3px;\n background: #fff;\n border-radius: 999px;\n border: 1px solid rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n.form-actions-align-group :global .ant-radio-button-wrapper {\n flex: 1;\n height: 30px;\n line-height: 30px;\n padding-inline: 0;\n text-align: center;\n border: none !important;\n border-radius: 999px !important;\n background: transparent !important;\n box-shadow: none !important;\n color: rgba(0, 0, 0, 0.65);\n}\n.form-actions-align-group :global .ant-radio-button-wrapper::before {\n display: none !important;\n}\n.form-actions-align-group :global .ant-radio-button-wrapper:not(:first-child)::before {\n display: none !important;\n}\n.form-actions-align-group :global .ant-radio-button-wrapper:hover {\n color: rgba(0, 0, 0, 0.88);\n}\n.form-actions-align-group :global .ant-radio-button-wrapper:focus-within {\n box-shadow: none !important;\n}\n.form-actions-align-group :global .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {\n background: var(--ant-color-primary, #1677ff) !important;\n color: #fff !important;\n font-weight: 500;\n}\n.form-actions-align-group :global .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {\n color: #fff !important;\n background: var(--ant-color-primary-hover, #4096ff) !important;\n}\n\n.form-actions-layout-title {\n margin-bottom: 12px;\n color: rgba(0, 0, 0, 0.65);\n font-size: 13px;\n font-weight: 500;\n letter-spacing: 0.02em;\n}\n\n.form-actions-gap-slider {\n margin: 0 6px 8px !important;\n padding-bottom: 12px;\n}\n\n.editor-section {\n margin-bottom: 4px;\n}\n\n.section-divider {\n margin: 16px 0 !important;\n}\n\n.rule-editor,\n.options-editor,\n.super-select-props,\n.field-props-editor,\n.columns-editor {\n padding: 0 2px;\n}\n\n.prop-row {\n display: flex;\n flex-direction: column;\n gap: 6px;\n width: 100%;\n}\n\n.prop-label {\n color: rgba(0, 0, 0, 0.88);\n font-size: 14px;\n}\n\n.options-item {\n display: flex;\n flex-direction: column;\n}\n\n.table-row-card {\n background: #fafafa;\n}\n\n.tree-options-editor {\n margin-top: 12px;\n}\n\n.tree-options-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.tree-option-node {\n border: 1px solid #eef0f4;\n border-radius: 8px;\n background: #fff;\n padding: 10px 12px;\n}\n\n.tree-option-row {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.tree-option-fields {\n flex: 1;\n min-width: 0;\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 8px;\n}\n\n.tree-option-actions {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n gap: 0;\n}\n\n.tree-option-children {\n margin-top: 10px;\n margin-left: 12px;\n padding-left: 12px;\n border-left: 2px solid #e6ebf5;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.tree-add-sibling {\n align-self: flex-start;\n}\n\n.rule-checkbox-group {\n display: flex;\n flex-wrap: wrap;\n gap: 8px 16px;\n margin-top: 12px;\n}\n\n.rule-len-row {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 10px;\n padding: 10px 12px;\n background: #fafafa;\n border-radius: 8px;\n}\n\n.rule-len-input {\n flex: 1;\n min-width: 0;\n width: 100%;\n}\n\n.rule-len-sep {\n flex: none;\n color: rgba(0, 0, 0, 0.45);\n line-height: 1;\n}\n\n.options-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin: 12px 0;\n}\n\n.options-row {\n width: 100%;\n}\n\n.options-tip {\n display: block;\n margin-top: 8px;\n color: #8c8c8c;\n font-size: 12px;\n}\n\n/* 纯图标按钮统一为正方形 */\n.icon-square-btn {\n width: 32px !important;\n height: 32px !important;\n min-width: 32px !important;\n padding: 0 !important;\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n}\n.icon-square-btn :global(.anticon) {\n font-size: 14px;\n}\n\n.icon-square-btn-sm {\n width: 28px !important;\n height: 28px !important;\n min-width: 28px !important;\n padding: 0 !important;\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n}\n.icon-square-btn-sm :global(.anticon) {\n font-size: 13px;\n}\n\n@container kne-responsive (max-width: 768px) {\n .form-creator.is-mobile .editor-header,\n .form-creator.is-mobile .preview-header {\n padding: 0 0 10px;\n }\n .form-creator.is-mobile .block-list-panel {\n padding: 6px 0 0;\n }\n .form-creator.is-mobile .block-list {\n gap: 10px;\n }\n .form-creator.is-mobile .block-section {\n padding: 10px 12px;\n border-radius: 10px;\n }\n .form-creator.is-mobile {\n /* 触屏无 hover:操作与添加按钮常显 */\n }\n .form-creator.is-mobile .action-group,\n .form-creator.is-mobile .hover-reveal {\n opacity: 1;\n pointer-events: auto;\n }\n .form-creator.is-mobile .block-section-header {\n flex-wrap: wrap;\n align-items: flex-start;\n gap: 8px;\n }\n .form-creator.is-mobile .block-header-left {\n width: 100%;\n flex-wrap: wrap;\n }\n .form-creator.is-mobile .block-title {\n max-width: 160px;\n flex: 0 1 auto;\n }\n .form-creator.is-mobile .block-header-actions {\n width: 100%;\n display: flex;\n justify-content: flex-end;\n flex-wrap: wrap;\n gap: 6px;\n }\n .form-creator.is-mobile .block-summary {\n margin-left: 0;\n }\n .form-creator.is-mobile .step-section {\n padding: 8px 10px;\n }\n .form-creator.is-mobile .step-section-header {\n gap: 6px;\n }\n .form-creator.is-mobile .step-section-title {\n width: 100%;\n min-width: 0;\n }\n .form-creator.is-mobile .field-row {\n flex-wrap: wrap;\n gap: 8px;\n padding: 8px;\n transform: none;\n }\n .form-creator.is-mobile .field-row:hover {\n transform: none;\n }\n .form-creator.is-mobile .field-row-main {\n flex: 1 1 calc(100% - 28px);\n min-width: 0;\n }\n .form-creator.is-mobile .field-row .action-group {\n margin-left: auto;\n }\n .form-creator.is-mobile .add-block-dropdown {\n width: min(320px, 100vw - 32px);\n }\n .form-creator.is-mobile .add-inline-btn {\n height: 28px !important;\n padding: 0 12px !important;\n }\n .form-creator.is-mobile .action-btn {\n width: 28px !important;\n height: 28px !important;\n min-width: 28px !important;\n }\n .form-creator.is-mobile .preview-body {\n padding: 0;\n }\n .form-creator.is-mobile .preview-body :global form + .part,\n .form-creator.is-mobile .preview-body :global .part + form {\n margin-top: 12px;\n }\n .form-creator.is-mobile .preview-body :global .ant-steps {\n max-width: 100%;\n }\n .form-creator.is-mobile .preview-body :global .ant-steps-horizontal {\n overflow-x: auto;\n }\n}"]}
|
|
1
|
+
{"version":3,"sources":["style.module.scss"],"names":[],"mappings":"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AEA;EACE,UAAU;EACV,0BAA0B;EAC1B,cAAc;AAChB;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,QAAQ;EACR,cAAc;AAChB;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,cAAc;EACd,eAAe;EACf,cAAc;EACd,eAAe;AACjB;;AAEA,gBAAgB;AAChB;EACE,sBAAsB;EACtB,uBAAuB;EACvB,0BAA0B;EAC1B,qBAAqB;EACrB,+BAA+B;EAC/B,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,eAAe;AACjB;;AAEA;EACE,sBAAsB;EACtB,uBAAuB;EACvB,0BAA0B;EAC1B,qBAAqB;EACrB,+BAA+B;EAC/B,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,eAAe;AACjB;;AAEA;EACE;;IAEE,iBAAiB;EACnB;EACA;IACE,gBAAgB;EAClB;EACA;IACE,SAAS;EACX;EACA;IACE,kBAAkB;IAClB,mBAAmB;EACrB;EACA;IACE,wBAAwB;EAC1B;EACA;;IAEE,UAAU;IACV,oBAAoB;EACtB;EACA;IACE,eAAe;IACf,uBAAuB;IACvB,QAAQ;EACV;EACA;IACE,WAAW;IACX,eAAe;EACjB;EACA;IACE,gBAAgB;IAChB,cAAc;EAChB;EACA;IACE,WAAW;IACX,aAAa;IACb,yBAAyB;IACzB,eAAe;IACf,QAAQ;EACV;EACA;IACE,cAAc;EAChB;EACA;IACE,iBAAiB;EACnB;EACA;IACE,uBAAuB;IACvB,QAAQ;EACV;EACA;IACE,yBAAyB;EAC3B;EACA;IACE,cAAc;IACd,WAAW;IACX,YAAY;IACZ,eAAe;EACjB;EACA;IACE,WAAW;IACX,yBAAyB;IACzB,QAAQ;EACV;EACA;IACE,eAAe;IACf,QAAQ;IACR,YAAY;IACZ,eAAe;EACjB;EACA;IACE,eAAe;EACjB;EACA;IACE,2BAA2B;IAC3B,YAAY;EACd;EACA;IACE,iBAAiB;EACnB;EACA;IACE,+BAA+B;EACjC;EACA;IACE,uBAAuB;IACvB,0BAA0B;EAC5B;EACA;IACE,sBAAsB;IACtB,uBAAuB;IACvB,0BAA0B;EAC5B;EACA;IACE,UAAU;EACZ;EACA;;IAEE,gBAAgB;EAClB;EACA;IACE,eAAe;EACjB;EACA;IACE,gBAAgB;EAClB;AACF","file":"index.css","sourcesContent":["@charset \"UTF-8\";\n.kne-responsive-boundary {\n position: relative;\n}\n\n.kne-responsive-scroll {\n overflow: auto;\n}\n\n:root {\n --kne-viewport-width: 100vw;\n --kne-viewport-height: 100dvh;\n --kne-viewport-inline-size: 100vw;\n --kne-viewport-block-size: 100dvh;\n}\n\n.kne-responsive-boundary {\n --kne-viewport-width: 100vw;\n --kne-viewport-height: 100dvh;\n --kne-viewport-inline-size: 100vw;\n --kne-viewport-block-size: 100dvh;\n}\n\n.form-creator {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n min-height: 480px;\n align-items: stretch;\n box-sizing: border-box;\n padding: 16px;\n background: #f5f5f5;\n border-radius: 12px;\n}\n\n.editor-pane,\n.preview-pane {\n flex: 1 1 360px;\n min-width: min(360px, 100%);\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.editor-pane {\n flex-basis: 420px;\n min-width: min(420px, 100%);\n}\n\n.preview-pane {\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n margin: 0;\n padding: 16px;\n background: #fff;\n border-radius: 8px;\n}\n\n.editor-header {\n padding: 0 0 12px;\n margin-bottom: 4px;\n}\n\n.block-list-panel {\n padding: 8px 0 0;\n}\n\n.form-actions-setting-btn {\n width: 30px !important;\n min-width: 30px !important;\n height: 30px !important;\n padding: 0 !important;\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n}\n\n.panel-toolbar {\n margin-bottom: 10px;\n}\n\n.add-block-btn {\n height: 30px !important;\n padding: 0 14px !important;\n border-radius: 999px !important;\n font-weight: 500;\n}\n\n/* 添加填写项 / 添加步骤:中性小胶囊,与操作组同语汇 */\n.add-inline-btn {\n height: 26px !important;\n padding: 0 10px !important;\n border: none !important;\n border-radius: 999px !important;\n background: rgba(255, 255, 255, 0.72) !important;\n box-shadow: none !important;\n color: rgba(0, 0, 0, 0.55) !important;\n font-size: 12px !important;\n font-weight: 500;\n display: inline-flex !important;\n align-items: center;\n gap: 2px;\n}\n.add-inline-btn :global(.anticon) {\n font-size: 11px;\n}\n.add-inline-btn:hover {\n color: rgba(0, 0, 0, 0.85) !important;\n background: #ffffff !important;\n}\n.add-inline-btn:global(.ant-btn-text):not(:disabled):not(.ant-btn-disabled):hover {\n color: rgba(0, 0, 0, 0.85) !important;\n background: #ffffff !important;\n}\n\n.block-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n/* 模块:类型浅色底区隔,无边框线框 */\n.block-section {\n padding: 12px 14px;\n border-radius: 12px;\n background: #f4f6f9;\n transition: box-shadow 0.15s ease;\n}\n.block-section:hover {\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.03);\n}\n\n.block-kind-formInfo {\n background: #eef4ff;\n}\n\n.block-kind-list {\n background: #eafaf8;\n}\n\n.block-kind-tableList {\n background: #eef1ff;\n}\n\n.block-kind-multiField {\n background: #f6f0ff;\n}\n\n.block-kind-steps {\n background: #fff8e8;\n}\n.block-kind-steps .step-section {\n background: rgba(255, 255, 255, 0.72);\n}\n\n.block-section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n min-width: 0;\n}\n\n.block-header-left {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 6px 8px;\n min-width: 0;\n flex: 1;\n}\n.block-header-left :global(.ant-tag) {\n flex-shrink: 0;\n}\n\n.block-title {\n flex: 0 1 auto;\n min-width: 0;\n max-width: 160px;\n overflow: hidden;\n font-size: 14px;\n}\n\n.block-summary {\n flex-shrink: 0;\n padding: 1px 8px;\n border-radius: 999px;\n background: rgba(255, 255, 255, 0.7);\n color: rgba(0, 0, 0, 0.45);\n font-size: 12px;\n line-height: 18px;\n white-space: nowrap;\n}\n\n.block-header-actions {\n flex-shrink: 0;\n}\n\n.block-body {\n margin-top: 10px;\n}\n\n.item-blocks-section {\n margin-top: 12px;\n padding-top: 10px;\n border-top: 1px dashed rgba(0, 0, 0, 0.08);\n}\n\n.nested-block-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.block-section-nested {\n padding: 10px 12px;\n border-radius: 10px;\n background: rgba(255, 255, 255, 0.55);\n box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.04);\n}\n.block-section-nested:hover {\n box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.06);\n}\n\n.add-field-dropdown {\n min-width: 200px;\n max-width: 280px;\n max-height: 280px;\n overflow-y: auto;\n padding: 6px;\n background: #ffffff;\n border-radius: 8px;\n box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);\n}\n\n.add-field-dropdown-item {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 6px 8px;\n padding: 8px 10px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 13px;\n line-height: 20px;\n color: rgba(0, 0, 0, 0.88);\n}\n.add-field-dropdown-item:hover {\n background: #f5f5f5;\n}\n\n.add-field-dropdown-item-icon {\n display: inline-flex;\n color: #4183f0;\n font-size: 14px;\n}\n\n.add-field-dropdown-item-desc {\n flex: 1 0 100%;\n padding-left: 22px;\n color: rgba(0, 0, 0, 0.45);\n font-size: 12px;\n line-height: 16px;\n}\n\n.add-field-dropdown-divider {\n height: 1px;\n margin: 4px 6px;\n background: rgba(0, 0, 0, 0.06);\n}\n\n.add-field-dropdown-label {\n padding: 6px 10px 2px;\n color: rgba(0, 0, 0, 0.45);\n font-size: 12px;\n line-height: 18px;\n}\n\n.section-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 28px;\n margin-bottom: 6px;\n}\n\n.section-toolbar-label {\n font-size: 12px;\n}\n\n.field-list,\n.step-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n/* 步骤:半透明白底叠在模块色底上 */\n.step-section {\n padding: 10px 12px;\n border-radius: 10px;\n background: rgba(255, 255, 255, 0.55);\n}\n.step-section + .step-section {\n margin-top: 0;\n}\n\n.step-section-header {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n margin-bottom: 6px;\n min-width: 0;\n}\n\n.step-section-title {\n flex: 1;\n min-width: 0;\n max-width: 100%;\n}\n\n.step-section-actions {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.step-index {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: rgba(47, 84, 235, 0.12);\n color: #2f54eb;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* 填写项:白底块 */\n.field-row {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 10px;\n border-radius: 10px;\n background: #ffffff;\n transition: background 0.15s ease, transform 0.15s ease;\n}\n.field-row:hover {\n background: #fcfdff;\n transform: translateY(-0.5px);\n}\n\n.field-row-index {\n width: 18px;\n flex-shrink: 0;\n color: #bfbfbf;\n font-size: 12px;\n text-align: center;\n}\n\n.field-row-main {\n flex: 1;\n min-width: 0;\n}\n\n.inline-empty {\n display: block;\n padding: 8px 10px;\n font-size: 12px;\n border-radius: 10px;\n background: rgba(255, 255, 255, 0.55);\n}\n\n/* 操作组 / 添加按钮:默认隐藏,悬停对应容器再显示 */\n.action-group,\n.hover-reveal {\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s ease;\n}\n\n.action-group {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n padding: 2px;\n border-radius: 999px;\n background: rgba(0, 0, 0, 0.06);\n gap: 0;\n}\n\n.block-section:hover > .block-section-header .action-group,\n.block-section:hover > .block-section-header .hover-reveal,\n.block-section:focus-within > .block-section-header .action-group,\n.block-section:focus-within > .block-section-header .hover-reveal,\n.block-section:hover > .block-body > .section-toolbar .hover-reveal,\n.block-section:focus-within > .block-body > .section-toolbar .hover-reveal,\n.step-section:hover > .step-section-header .action-group,\n.step-section:hover > .step-section-header .hover-reveal,\n.step-section:focus-within > .step-section-header .action-group,\n.step-section:focus-within > .step-section-header .hover-reveal,\n.field-row:hover .action-group,\n.field-row:focus-within .action-group,\n.hover-reveal-active {\n opacity: 1;\n pointer-events: auto;\n}\n\n.action-btn {\n width: 26px !important;\n height: 26px !important;\n min-width: 26px !important;\n padding: 0 !important;\n border: none !important;\n border-radius: 999px !important;\n box-shadow: none !important;\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n color: rgba(0, 0, 0, 0.55);\n}\n.action-btn :global(.anticon) {\n font-size: 12px;\n}\n.action-btn:hover:not(:disabled) {\n color: rgba(0, 0, 0, 0.88);\n background: rgba(255, 255, 255, 0.85) !important;\n}\n.action-btn:disabled {\n color: rgba(0, 0, 0, 0.25);\n background: transparent !important;\n}\n.action-btn:global(.ant-btn-dangerous) {\n color: #ff4d4f;\n}\n.action-btn:global(.ant-btn-dangerous):hover:not(:disabled) {\n color: #ff7875;\n background: rgba(255, 255, 255, 0.9) !important;\n}\n\n.add-block-dropdown {\n width: 320px;\n padding: 8px;\n background: #ffffff;\n border-radius: 8px;\n box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);\n}\n\n.add-block-option {\n display: flex;\n gap: 12px;\n padding: 10px 12px;\n border-radius: 8px;\n cursor: pointer;\n border: 1px solid transparent;\n transition: background 0.2s ease, border-color 0.2s ease;\n}\n.add-block-option:hover {\n background: #f7fbff;\n border-color: #dbe7ff;\n}\n\n.add-block-option-icon {\n width: 36px;\n height: 36px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #f1f7ff;\n color: #4183f0;\n flex-shrink: 0;\n}\n\n.add-block-option-text {\n min-width: 0;\n}\n\n.add-block-option-title {\n font-size: 14px;\n font-weight: 600;\n line-height: 20px;\n}\n\n.add-block-option-desc {\n margin-top: 2px;\n color: #667085;\n font-size: 12px;\n line-height: 16px;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.field-empty {\n padding: 24px 0;\n}\n\n.field-label-tips-icon {\n margin-left: 4px;\n color: rgba(0, 0, 0, 0.45);\n cursor: help;\n font-size: 14px;\n}\n\n.preview-header {\n padding: 0 0 12px;\n margin-bottom: 4px;\n}\n\n.preview-title {\n margin-bottom: 4px !important;\n}\n\n.preview-body {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n padding: 0;\n}\n.preview-body :global form {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 100%;\n}\n.preview-body :global .ant-card-extra .ant-btn.ant-btn-icon-only {\n width: 32px;\n height: 32px;\n min-width: 32px;\n padding: 0 !important;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.preview-body :global form .ant-card.no-title > .ant-card-head {\n margin-bottom: 0 !important;\n padding-bottom: 8px !important;\n}\n.preview-body :global form .ant-card.no-title > .ant-card-body {\n padding-top: 0 !important;\n}\n\n.schema-form {\n display: flex;\n flex-direction: column;\n width: 100%;\n min-height: 100%;\n box-sizing: border-box;\n}\n\n.schema-body {\n flex: 1 1 auto;\n display: flex;\n flex-direction: column;\n gap: 24px;\n width: 100%;\n min-width: 0;\n}\n\n/* 表单底部操作区:与内容分隔,固定落在表单最下方 */\n.schema-actions {\n width: 100%;\n box-sizing: border-box;\n margin-top: auto;\n padding: 16px 0;\n border-top: 1px solid rgba(0, 0, 0, 0.06);\n flex-shrink: 0;\n}\n\n.schema-actions-inner {\n width: 100%;\n}\n\n.choice-block {\n width: 100%;\n min-width: 0;\n box-sizing: border-box;\n}\n\n.choice-selector {\n margin-bottom: 4px;\n}\n.choice-selector :global .react-form__field {\n margin-bottom: 8px;\n}\n.choice-selector :global .ant-checkbox-group {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n.choice-selector :global .ant-radio-group {\n display: inline-flex;\n flex-wrap: wrap;\n}\n\n.choice-panels {\n display: flex;\n flex-direction: column;\n gap: 16px;\n width: 100%;\n margin-top: 12px;\n padding-top: 16px;\n border-top: 1px solid rgba(0, 0, 0, 0.06);\n box-sizing: border-box;\n}\n\n.choice-panels-empty {\n margin-top: 12px;\n padding: 16px 0 4px;\n border-top: 1px solid rgba(0, 0, 0, 0.06);\n font-size: 13px;\n line-height: 20px;\n color: rgba(0, 0, 0, 0.45);\n text-align: center;\n}\n\n.choice-option-panel {\n width: 100%;\n min-width: 0;\n box-sizing: border-box;\n padding: 12px 14px;\n border: 1px solid rgba(0, 0, 0, 0.06);\n border-radius: 8px;\n background: #fafafa;\n}\n.choice-option-panel :global(.ant-card),\n.choice-option-panel :global(.ant-card-body) {\n background: transparent;\n}\n\n.choice-option-panel-title {\n margin-bottom: 12px;\n font-size: 14px;\n font-weight: 600;\n line-height: 22px;\n color: rgba(0, 0, 0, 0.88);\n}\n\n.choice-option-summary {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-top: 8px;\n}\n\n.field-editor-form {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding-top: 4px;\n}\n\n.form-actions-editor {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding-top: 4px;\n}\n.form-actions-editor :global .ant-row {\n row-gap: 8px;\n}\n\n.form-actions-switch-field :global .react-form__field-main {\n min-height: 32px;\n display: flex;\n align-items: center;\n}\n\n.form-actions-layout-panel {\n padding: 14px 16px 18px;\n border-radius: 10px;\n background: #f7f8fa;\n border: 1px solid rgba(0, 0, 0, 0.04);\n}\n.form-actions-layout-panel :global .ant-card {\n background: transparent !important;\n border: none !important;\n box-shadow: none !important;\n}\n.form-actions-layout-panel :global .ant-card-head {\n display: none;\n}\n.form-actions-layout-panel :global .ant-card-body {\n padding: 0 !important;\n}\n.form-actions-layout-panel :global .ant-form-item {\n margin-bottom: 14px;\n}\n.form-actions-layout-panel :global .ant-form-item:last-child {\n margin-bottom: 0;\n}\n\n.form-actions-align-group {\n display: flex !important;\n width: 100%;\n padding: 3px;\n background: #fff;\n border-radius: 999px;\n border: 1px solid rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n.form-actions-align-group :global .ant-radio-button-wrapper {\n flex: 1;\n height: 30px;\n line-height: 30px;\n padding-inline: 0;\n text-align: center;\n border: none !important;\n border-radius: 999px !important;\n background: transparent !important;\n box-shadow: none !important;\n color: rgba(0, 0, 0, 0.65);\n}\n.form-actions-align-group :global .ant-radio-button-wrapper::before {\n display: none !important;\n}\n.form-actions-align-group :global .ant-radio-button-wrapper:not(:first-child)::before {\n display: none !important;\n}\n.form-actions-align-group :global .ant-radio-button-wrapper:hover {\n color: rgba(0, 0, 0, 0.88);\n}\n.form-actions-align-group :global .ant-radio-button-wrapper:focus-within {\n box-shadow: none !important;\n}\n.form-actions-align-group :global .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {\n background: var(--ant-color-primary, #1677ff) !important;\n color: #fff !important;\n font-weight: 500;\n}\n.form-actions-align-group :global .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {\n color: #fff !important;\n background: var(--ant-color-primary-hover, #4096ff) !important;\n}\n\n.form-actions-layout-title {\n margin-bottom: 12px;\n color: rgba(0, 0, 0, 0.65);\n font-size: 13px;\n font-weight: 500;\n letter-spacing: 0.02em;\n}\n\n.form-actions-gap-slider {\n margin: 0 6px 8px !important;\n padding-bottom: 12px;\n}\n\n.editor-section {\n margin-bottom: 4px;\n}\n\n.section-divider {\n margin: 16px 0 !important;\n}\n\n.rule-editor,\n.options-editor,\n.super-select-props,\n.field-props-editor,\n.columns-editor {\n padding: 0 2px;\n}\n\n.prop-row {\n display: flex;\n flex-direction: column;\n gap: 6px;\n width: 100%;\n}\n\n.prop-label {\n color: rgba(0, 0, 0, 0.88);\n font-size: 14px;\n}\n\n.options-item {\n display: flex;\n flex-direction: column;\n}\n\n.table-row-card {\n background: #fafafa;\n}\n\n.tree-options-editor {\n margin-top: 12px;\n}\n\n.tree-options-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.tree-option-node {\n border: 1px solid #eef0f4;\n border-radius: 8px;\n background: #fff;\n padding: 10px 12px;\n}\n\n.tree-option-row {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.tree-option-fields {\n flex: 1;\n min-width: 0;\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 8px;\n}\n\n.tree-option-actions {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n gap: 0;\n}\n\n.tree-option-children {\n margin-top: 10px;\n margin-left: 12px;\n padding-left: 12px;\n border-left: 2px solid #e6ebf5;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.tree-add-sibling {\n align-self: flex-start;\n}\n\n.rule-checkbox-group {\n display: flex;\n flex-wrap: wrap;\n gap: 8px 16px;\n margin-top: 12px;\n}\n\n.rule-len-row {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 10px;\n padding: 10px 12px;\n background: #fafafa;\n border-radius: 8px;\n}\n\n.rule-len-input {\n flex: 1;\n min-width: 0;\n width: 100%;\n}\n\n.rule-len-sep {\n flex: none;\n color: rgba(0, 0, 0, 0.45);\n line-height: 1;\n}\n\n.options-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin: 12px 0;\n}\n\n.options-row {\n width: 100%;\n}\n\n.options-tip {\n display: block;\n margin-top: 8px;\n color: #8c8c8c;\n font-size: 12px;\n}\n\n/* 纯图标按钮统一为正方形 */\n.icon-square-btn {\n width: 32px !important;\n height: 32px !important;\n min-width: 32px !important;\n padding: 0 !important;\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n}\n.icon-square-btn :global(.anticon) {\n font-size: 14px;\n}\n\n.icon-square-btn-sm {\n width: 28px !important;\n height: 28px !important;\n min-width: 28px !important;\n padding: 0 !important;\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n}\n.icon-square-btn-sm :global(.anticon) {\n font-size: 13px;\n}\n\n@container kne-responsive (max-width: 768px) {\n .form-creator.is-mobile .editor-header,\n .form-creator.is-mobile .preview-header {\n padding: 0 0 10px;\n }\n .form-creator.is-mobile .block-list-panel {\n padding: 6px 0 0;\n }\n .form-creator.is-mobile .block-list {\n gap: 10px;\n }\n .form-creator.is-mobile .block-section {\n padding: 10px 12px;\n border-radius: 10px;\n }\n .form-creator.is-mobile {\n /* 触屏无 hover:操作与添加按钮常显 */\n }\n .form-creator.is-mobile .action-group,\n .form-creator.is-mobile .hover-reveal {\n opacity: 1;\n pointer-events: auto;\n }\n .form-creator.is-mobile .block-section-header {\n flex-wrap: wrap;\n align-items: flex-start;\n gap: 8px;\n }\n .form-creator.is-mobile .block-header-left {\n width: 100%;\n flex-wrap: wrap;\n }\n .form-creator.is-mobile .block-title {\n max-width: 160px;\n flex: 0 1 auto;\n }\n .form-creator.is-mobile .block-header-actions {\n width: 100%;\n display: flex;\n justify-content: flex-end;\n flex-wrap: wrap;\n gap: 6px;\n }\n .form-creator.is-mobile .block-summary {\n margin-left: 0;\n }\n .form-creator.is-mobile .step-section {\n padding: 8px 10px;\n }\n .form-creator.is-mobile .step-section-header {\n align-items: flex-start;\n gap: 8px;\n }\n .form-creator.is-mobile {\n /* 标题独占一行,避免与常显操作栏挤成竖排字 */\n }\n .form-creator.is-mobile .step-section-title {\n flex: 0 0 100%;\n width: 100%;\n min-width: 0;\n max-width: 100%;\n }\n .form-creator.is-mobile .step-section-actions {\n width: 100%;\n justify-content: flex-end;\n gap: 6px;\n }\n .form-creator.is-mobile .field-row {\n flex-wrap: wrap;\n gap: 8px;\n padding: 8px;\n transform: none;\n }\n .form-creator.is-mobile .field-row:hover {\n transform: none;\n }\n .form-creator.is-mobile .field-row-main {\n flex: 1 1 calc(100% - 28px);\n min-width: 0;\n }\n .form-creator.is-mobile .field-row .action-group {\n margin-left: auto;\n }\n .form-creator.is-mobile .add-block-dropdown {\n width: min(320px, 100vw - 32px);\n }\n .form-creator.is-mobile .add-inline-btn {\n height: 28px !important;\n padding: 0 12px !important;\n }\n .form-creator.is-mobile .action-btn {\n width: 28px !important;\n height: 28px !important;\n min-width: 28px !important;\n }\n .form-creator.is-mobile .preview-body {\n padding: 0;\n }\n .form-creator.is-mobile .preview-body :global form + .part,\n .form-creator.is-mobile .preview-body :global .part + form {\n margin-top: 12px;\n }\n .form-creator.is-mobile .preview-body :global .ant-steps {\n max-width: 100%;\n }\n .form-creator.is-mobile .preview-body :global .ant-steps-horizontal {\n overflow-x: auto;\n }\n}"]}
|