react-antd-xform 1.0.10 → 1.0.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.
@@ -4,7 +4,7 @@ import { FormModel } from './model';
4
4
  import { FormItemView } from './form-item';
5
5
  import { FormLayout } from './extend/form-layout';
6
6
  import { FormSubmit } from './extend/form-submit';
7
- export declare function Form({ model: modelProp, defaultValue, children, className, style, layout, containerProps, htmlIdPrefix: htmlIdPrefixProp, variant, ...restEnvProps }: FormProps): import("react/jsx-runtime").JSX.Element;
7
+ export declare function Form({ model: modelProp, defaultValue, children, className, style, layout, containerProps, htmlIdPrefix: htmlIdPrefixProp, variant, isPreview, ...restEnvProps }: FormProps): import("react/jsx-runtime").JSX.Element;
8
8
  export declare namespace Form {
9
9
  var Array: (<T extends unknown>({ name, children, layout, arrayModel: arrayModelProp, use, }: import("./extend/form-array").FormArrayProps<T>) => import("react/jsx-runtime").JSX.Element) & {
10
10
  displayName: string;
@@ -4,7 +4,7 @@ import { FormModel } from "./model.js";
4
4
  import { FormItemView } from "./form-item.js";
5
5
  import { ModelProvider } from "./context/modelContext.js";
6
6
  import { FormEnvProvider } from "./context/formEnvContext.js";
7
- import { useHtmlIdPrefix, composeValue } from "./common-utils.js";
7
+ import { composeValue, useHtmlIdPrefix } from "./common-utils.js";
8
8
  import { FormArray } from "./extend/form-array.js";
9
9
  import { FormCheck } from "./extend/form-check.js";
10
10
  import { FormReset } from "./extend/form-reset.js";
@@ -23,12 +23,14 @@ function Form({
23
23
  containerProps,
24
24
  htmlIdPrefix: htmlIdPrefixProp,
25
25
  variant,
26
+ isPreview,
26
27
  ...restEnvProps
27
28
  }) {
28
29
  const [_model] = useState(() => new FormModel(defaultValue));
29
30
  const model = composeValue(modelProp, _model);
31
+ model.isPreview = isPreview;
30
32
  const htmlIdPrefix = useHtmlIdPrefix(htmlIdPrefixProp);
31
- return /* @__PURE__ */ jsxRuntimeExports.jsx(FormEnvProvider, { htmlIdPrefix, variant, ...restEnvProps, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ModelProvider, { value: model, children: /* @__PURE__ */ jsxRuntimeExports.jsx(FormLayout, { style, className, containerProps, ...layout, children }) }) });
33
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(FormEnvProvider, { htmlIdPrefix, variant, ...restEnvProps, isPreview, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ModelProvider, { value: model, children: /* @__PURE__ */ jsxRuntimeExports.jsx(FormLayout, { style, className, containerProps, ...layout, children }) }) });
32
34
  }
33
35
  Form.Array = FormArray;
34
36
  Form.Check = FormCheck;
@@ -16,6 +16,7 @@ export declare class FormModel<D extends {
16
16
  readonly root: FormModel<any>;
17
17
  readonly parent: FormModel<any>;
18
18
  name: string;
19
+ isPreview: boolean;
19
20
  /** 当前 Model 的类型,目前只有两种类型: rootModel 和 subModel */
20
21
  _modelType: ModelType;
21
22
  _values: D;
@@ -18,6 +18,7 @@ class IdGenerator {
18
18
  class FormModel {
19
19
  constructor(initValues, options = ROOT_MODEL_CREATE_OPTIONS) {
20
20
  this.state = {};
21
+ this.isPreview = false;
21
22
  this._fieldMap = /* @__PURE__ */ new Map();
22
23
  this._valueShape = "auto";
23
24
  this._checkMap = /* @__PURE__ */ new Map();
@@ -1,6 +1,6 @@
1
1
  import { ColorPicker, Rate, TimePicker, DatePicker, Switch, Slider, InputNumber, Checkbox, Radio, Select, Input } from "antd";
2
2
  import { withInjectedProps, withDayjsTransformAntdTimeRange, withDayjsTransformAntdTime, withDayjsTransformAntdDateRangePicker, withDayjsTransformAntdDate, withValueChangeHandler, isEmptyValue, withColorPickerHandler } from "./common-utils.js";
3
- import { useColorPreview, useRatePreview, useTimeRangePreview, useTimePreview, useDateRangePreview, useDatePreview, useBooleanPreview, useValueToPreview, useMultiplePreview, useSelectToPreview } from "./render-preview.js";
3
+ import { renderColorPreview, renderRatePreview, renderTimeRangePreview, renderTimePreview, renderDateRangePreview, renderDatePreview, renderBooleanPreview, renderValueToPreview, renderMultiplePreview, renderSelectToPreview } from "./render-preview.js";
4
4
  const COMPONENT_MAP = {
5
5
  input: Input,
6
6
  textArea: Input.TextArea,
@@ -40,82 +40,82 @@ const DEFAULT_VALUES = {
40
40
  const COMPONENT_RULES = {
41
41
  input: {
42
42
  hocs: ["valueChange"],
43
- renderPreview: useValueToPreview,
43
+ renderPreview: renderValueToPreview,
44
44
  hasIntrinsicWidth: false
45
45
  },
46
46
  textArea: {
47
47
  hocs: ["valueChange"],
48
- renderPreview: useValueToPreview,
48
+ renderPreview: renderValueToPreview,
49
49
  hasIntrinsicWidth: true
50
50
  },
51
51
  select: {
52
52
  hocs: [],
53
- renderPreview: useSelectToPreview,
53
+ renderPreview: renderSelectToPreview,
54
54
  hasIntrinsicWidth: true
55
55
  },
56
56
  singleSelect: {
57
57
  hocs: [],
58
- renderPreview: useSelectToPreview,
58
+ renderPreview: renderSelectToPreview,
59
59
  hasIntrinsicWidth: true
60
60
  },
61
61
  multiSelect: {
62
62
  hocs: ["multiSelect"],
63
- renderPreview: useSelectToPreview,
63
+ renderPreview: renderSelectToPreview,
64
64
  hasIntrinsicWidth: true
65
65
  },
66
66
  radio: {
67
67
  hocs: ["valueChange"],
68
- renderPreview: useValueToPreview,
68
+ renderPreview: renderValueToPreview,
69
69
  hasIntrinsicWidth: false
70
70
  },
71
71
  checkbox: {
72
72
  hocs: [],
73
- renderPreview: useMultiplePreview,
73
+ renderPreview: renderMultiplePreview,
74
74
  hasIntrinsicWidth: false
75
75
  },
76
76
  inputNumber: {
77
77
  hocs: ["valueChange"],
78
- renderPreview: useValueToPreview,
78
+ renderPreview: renderValueToPreview,
79
79
  hasIntrinsicWidth: false
80
80
  },
81
81
  slider: {
82
82
  hocs: ["valueChange"],
83
- renderPreview: useValueToPreview,
83
+ renderPreview: renderValueToPreview,
84
84
  hasIntrinsicWidth: false
85
85
  },
86
86
  switch: {
87
87
  hocs: ["valueChange"],
88
- renderPreview: useBooleanPreview,
88
+ renderPreview: renderBooleanPreview,
89
89
  hasIntrinsicWidth: false
90
90
  },
91
91
  datePicker: {
92
92
  hocs: ["dayjsDate"],
93
- renderPreview: useDatePreview,
93
+ renderPreview: renderDatePreview,
94
94
  hasIntrinsicWidth: true
95
95
  },
96
96
  dateRangePicker: {
97
97
  hocs: ["dayjsDateRange"],
98
- renderPreview: useDateRangePreview,
98
+ renderPreview: renderDateRangePreview,
99
99
  hasIntrinsicWidth: true
100
100
  },
101
101
  timePicker: {
102
102
  hocs: ["dayjsTime"],
103
- renderPreview: useTimePreview,
103
+ renderPreview: renderTimePreview,
104
104
  hasIntrinsicWidth: true
105
105
  },
106
106
  timeRangePicker: {
107
107
  hocs: ["dayjsTimeRange"],
108
- renderPreview: useTimeRangePreview,
108
+ renderPreview: renderTimeRangePreview,
109
109
  hasIntrinsicWidth: true
110
110
  },
111
111
  rate: {
112
112
  hocs: [],
113
- renderPreview: useRatePreview,
113
+ renderPreview: renderRatePreview,
114
114
  hasIntrinsicWidth: false
115
115
  },
116
116
  colorPicker: {
117
117
  hocs: ["colorPicker"],
118
- renderPreview: useColorPreview,
118
+ renderPreview: renderColorPreview,
119
119
  hasIntrinsicWidth: false
120
120
  }
121
121
  };
@@ -1,8 +1,8 @@
1
1
  /** 通用默认预览,直接使用value进行设置 */
2
- export declare const useValueToPreview: (props: {
2
+ export declare const renderValueToPreview: (props: {
3
3
  value: string;
4
4
  }) => React.ReactNode;
5
- export declare const useSelectToPreview: (props: {
5
+ export declare const renderSelectToPreview: (props: {
6
6
  value: string | number | (string | number)[] | null | undefined;
7
7
  options: {
8
8
  label: string;
@@ -10,63 +10,63 @@ export declare const useSelectToPreview: (props: {
10
10
  }[];
11
11
  }) => React.ReactNode;
12
12
  /** 日期预览 */
13
- export declare const useDatePreview: (props: {
13
+ export declare const renderDatePreview: (props: {
14
14
  value: any;
15
15
  }) => React.ReactNode;
16
16
  /** 日期范围预览 */
17
- export declare const useDateRangePreview: (props: {
17
+ export declare const renderDateRangePreview: (props: {
18
18
  value: [any, any] | null | undefined;
19
19
  }) => React.ReactNode;
20
20
  /** 时间预览 */
21
- export declare const useTimePreview: (props: {
21
+ export declare const renderTimePreview: (props: {
22
22
  value: any;
23
23
  }) => React.ReactNode;
24
24
  /** 时间范围预览 */
25
- export declare const useTimeRangePreview: (props: {
25
+ export declare const renderTimeRangePreview: (props: {
26
26
  value: [any, any] | null | undefined;
27
27
  }) => React.ReactNode;
28
28
  /** 多选/标签类预览 */
29
- export declare const useMultiplePreview: (props: {
29
+ export declare const renderMultiplePreview: (props: {
30
30
  value: any[];
31
31
  }) => React.ReactNode;
32
32
  /** 开关类预览 */
33
- export declare const useBooleanPreview: (props: {
33
+ export declare const renderBooleanPreview: (props: {
34
34
  value: boolean;
35
35
  }) => React.ReactNode;
36
36
  /** 评分预览 */
37
- export declare const useRatePreview: (props: {
37
+ export declare const renderRatePreview: (props: {
38
38
  value: number;
39
39
  }) => React.ReactNode;
40
40
  /** 颜色预览(返回色块) */
41
- export declare const useColorPreview: (props: {
41
+ export declare const renderColorPreview: (props: {
42
42
  value: string;
43
43
  }) => React.ReactNode;
44
44
  export declare const PREVIEW_RENDERERS: {
45
- readonly useValueToPreview: (props: {
45
+ readonly renderValueToPreview: (props: {
46
46
  value: string;
47
47
  }) => React.ReactNode;
48
- readonly useDatePreview: (props: {
48
+ readonly renderDatePreview: (props: {
49
49
  value: any;
50
50
  }) => React.ReactNode;
51
- readonly useDateRangePreview: (props: {
51
+ readonly renderDateRangePreview: (props: {
52
52
  value: [any, any] | null | undefined;
53
53
  }) => React.ReactNode;
54
- readonly useTimePreview: (props: {
54
+ readonly renderTimePreview: (props: {
55
55
  value: any;
56
56
  }) => React.ReactNode;
57
- readonly useTimeRangePreview: (props: {
57
+ readonly renderTimeRangePreview: (props: {
58
58
  value: [any, any] | null | undefined;
59
59
  }) => React.ReactNode;
60
- readonly useMultiplePreview: (props: {
60
+ readonly renderMultiplePreview: (props: {
61
61
  value: any[];
62
62
  }) => React.ReactNode;
63
- readonly useBooleanPreview: (props: {
63
+ readonly renderBooleanPreview: (props: {
64
64
  value: boolean;
65
65
  }) => React.ReactNode;
66
- readonly useRatePreview: (props: {
66
+ readonly renderRatePreview: (props: {
67
67
  value: number;
68
68
  }) => React.ReactNode;
69
- readonly useColorPreview: (props: {
69
+ readonly renderColorPreview: (props: {
70
70
  value: string;
71
71
  }) => React.ReactNode;
72
72
  };
@@ -1,116 +1,97 @@
1
1
  import { j as jsxRuntimeExports } from "../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js";
2
2
  import dayjs from "../node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/dayjs.min.js";
3
- import { useMemo } from "react";
4
- const useValueToPreview = (props) => {
3
+ const renderValueToPreview = (props) => {
5
4
  const {
6
5
  value
7
6
  } = props;
8
7
  return value != null && value !== "" ? `${value}` : "--";
9
8
  };
10
- const useSelectToPreview = (props) => {
9
+ const renderSelectToPreview = (props) => {
11
10
  const {
12
11
  value,
13
12
  options
14
13
  } = props;
15
- return useMemo(() => {
16
- if (value === null || value === void 0) {
17
- return "--";
18
- }
19
- if (Array.isArray(value)) {
20
- if (value.length === 0) return "--";
21
- const labels = value.map((val) => {
22
- const matched = options.find((item) => item.value === val);
23
- return matched ? matched.label : null;
24
- }).filter(Boolean);
25
- return labels.length > 0 ? labels.join("、") : "--";
26
- }
27
- const matchedOption = options.find((item) => item.value === value);
28
- return matchedOption ? matchedOption.label : "--";
29
- }, [value, options]);
14
+ if (value === null || value === void 0) {
15
+ return "--";
16
+ }
17
+ if (Array.isArray(value)) {
18
+ if (value.length === 0) return "--";
19
+ const labels = value.map((val) => {
20
+ const matched = options.find((item) => item.value === val);
21
+ return matched ? matched.label : null;
22
+ }).filter(Boolean);
23
+ return labels.length > 0 ? labels.join("、") : "--";
24
+ }
25
+ const matchedOption = options.find((item) => item.value === value);
26
+ return matchedOption ? matchedOption.label : "--";
30
27
  };
31
- const useDatePreview = (props) => {
28
+ const renderDatePreview = (props) => {
32
29
  const {
33
30
  value
34
31
  } = props;
35
- return useMemo(() => {
36
- return value ? dayjs(value).format("YYYY-MM-DD") : "--";
37
- }, [value]);
32
+ return value ? dayjs(value).format("YYYY-MM-DD") : "--";
38
33
  };
39
- const useDateRangePreview = (props) => {
34
+ const renderDateRangePreview = (props) => {
40
35
  const {
41
36
  value
42
37
  } = props;
43
- return useMemo(() => {
44
- if (!Array.isArray(value) || !value[0] || !value[1]) return "--";
45
- return `${dayjs(value[0]).format("YYYY-MM-DD")} ~ ${dayjs(value[1]).format("YYYY-MM-DD")}`;
46
- }, [value]);
38
+ if (!Array.isArray(value) || !value[0] || !value[1]) return "--";
39
+ return `${dayjs(value[0]).format("YYYY-MM-DD")} ~ ${dayjs(value[1]).format("YYYY-MM-DD")}`;
47
40
  };
48
- const useTimePreview = (props) => {
41
+ const renderTimePreview = (props) => {
49
42
  const {
50
43
  value
51
44
  } = props;
52
- return useMemo(() => {
53
- return value ? dayjs(value).format("HH:mm:ss") : "--";
54
- }, [value]);
45
+ return value ? dayjs(value).format("HH:mm:ss") : "--";
55
46
  };
56
- const useTimeRangePreview = (props) => {
47
+ const renderTimeRangePreview = (props) => {
57
48
  const {
58
49
  value
59
50
  } = props;
60
- return useMemo(() => {
61
- if (!Array.isArray(value) || !value[0] || !value[1]) return "--";
62
- return `${dayjs(value[0]).format("HH:mm")} ~ ${dayjs(value[1]).format("HH:mm")}`;
63
- }, [value]);
51
+ if (!Array.isArray(value) || !value[0] || !value[1]) return "--";
52
+ return `${dayjs(value[0]).format("HH:mm")} ~ ${dayjs(value[1]).format("HH:mm")}`;
64
53
  };
65
- const useMultiplePreview = (props) => {
54
+ const renderMultiplePreview = (props) => {
66
55
  const {
67
56
  value
68
57
  } = props;
69
- return useMemo(() => {
70
- return Array.isArray(value) && value.length > 0 ? value.join(", ") : "--";
71
- }, [value]);
58
+ return Array.isArray(value) && value.length > 0 ? value.join(", ") : "--";
72
59
  };
73
- const useBooleanPreview = (props) => {
60
+ const renderBooleanPreview = (props) => {
74
61
  const {
75
62
  value
76
63
  } = props;
77
- return useMemo(() => {
78
- return typeof value === "boolean" ? value ? "是" : "否" : "--";
79
- }, [value]);
64
+ return typeof value === "boolean" ? value ? "是" : "否" : "--";
80
65
  };
81
- const useRatePreview = (props) => {
66
+ const renderRatePreview = (props) => {
82
67
  const {
83
68
  value
84
69
  } = props;
85
- return useMemo(() => {
86
- return typeof value === "number" ? "★".repeat(value) + "☆".repeat(5 - value) : "--";
87
- }, [value]);
70
+ return typeof value === "number" ? "★".repeat(value) + "☆".repeat(5 - value) : "--";
88
71
  };
89
- const useColorPreview = (props) => {
72
+ const renderColorPreview = (props) => {
90
73
  const {
91
74
  value
92
75
  } = props;
93
- return useMemo(() => {
94
- if (!value) return "--";
95
- return /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: {
96
- display: "inline-block",
97
- width: 16,
98
- height: 16,
99
- border: "1px solid #ddd",
100
- backgroundColor: value,
101
- borderRadius: 3
102
- } });
103
- }, [value]);
76
+ if (!value) return "--";
77
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("span", { style: {
78
+ display: "inline-block",
79
+ width: 16,
80
+ height: 16,
81
+ border: "1px solid #ddd",
82
+ backgroundColor: value,
83
+ borderRadius: 3
84
+ } });
104
85
  };
105
86
  export {
106
- useBooleanPreview,
107
- useColorPreview,
108
- useDatePreview,
109
- useDateRangePreview,
110
- useMultiplePreview,
111
- useRatePreview,
112
- useSelectToPreview,
113
- useTimePreview,
114
- useTimeRangePreview,
115
- useValueToPreview
87
+ renderBooleanPreview,
88
+ renderColorPreview,
89
+ renderDatePreview,
90
+ renderDateRangePreview,
91
+ renderMultiplePreview,
92
+ renderRatePreview,
93
+ renderSelectToPreview,
94
+ renderTimePreview,
95
+ renderTimeRangePreview,
96
+ renderValueToPreview
116
97
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-antd-xform",
3
- "version": "1.0.10",
3
+ "version": "1.0.11",
4
4
  "description": "基于mobx的form解决方案",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",