@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 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: 120px;
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
- gap: 6px;
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;
@@ -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}"]}