react-antd-xform 1.0.6 → 1.0.7
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/dist/form/form-item.js +4 -0
- package/dist/form-ui/default-component.d.ts +3 -2
- package/dist/form-ui/default-component.js +112 -43
- package/dist/form-ui/render-preview.d.ts +29 -0
- package/dist/form-ui/render-preview.js +55 -0
- package/dist/node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/dayjs.min.js +1 -1
- package/package.json +1 -1
package/dist/form/form-item.js
CHANGED
|
@@ -88,6 +88,7 @@ function FormItemView({
|
|
|
88
88
|
}
|
|
89
89
|
function createFormItem(inputOptions) {
|
|
90
90
|
const options = processCreationOptions(inputOptions);
|
|
91
|
+
console.log(options, "options");
|
|
91
92
|
function FormItemComponent({
|
|
92
93
|
defaultValue: defaultValueProp,
|
|
93
94
|
isEmpty = options.isEmpty,
|
|
@@ -99,6 +100,7 @@ function createFormItem(inputOptions) {
|
|
|
99
100
|
}) {
|
|
100
101
|
const formEnv = useFormEnv();
|
|
101
102
|
const model = useModel();
|
|
103
|
+
const variant = formEnv.variant;
|
|
102
104
|
const field = resolveField(fieldProp, model, name, props.value);
|
|
103
105
|
const isPreview = composeValue(props.isPreview, formEnv.isPreview);
|
|
104
106
|
const error = composeValue(props.error, field.state.error);
|
|
@@ -107,6 +109,7 @@ function createFormItem(inputOptions) {
|
|
|
107
109
|
const htmlId = Field.getHtmlId(formEnv.htmlIdPrefix, field);
|
|
108
110
|
const componentProps = {
|
|
109
111
|
id: htmlId,
|
|
112
|
+
variant,
|
|
110
113
|
...isPreview ? { isPreview: true } : null,
|
|
111
114
|
// dataSource, readOnly, disabled,options 允许直接透传
|
|
112
115
|
...pick(props, ["dataSource", "readOnly", "disabled", "options"]),
|
|
@@ -176,6 +179,7 @@ function createFormItem(inputOptions) {
|
|
|
176
179
|
return null;
|
|
177
180
|
}
|
|
178
181
|
}
|
|
182
|
+
console.log(isPreview, "isPreviewisPreviewisPreview");
|
|
179
183
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
180
184
|
FormItemView,
|
|
181
185
|
{
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { isEmptyValue } from './common-utils';
|
|
2
2
|
declare const ALL_COMPONENTS: {
|
|
3
|
-
name: "input" | "textArea" | "
|
|
3
|
+
name: "input" | "textArea" | "select" | "singleSelect" | "multiSelect" | "radio" | "checkbox" | "inputNumber" | "slider" | "switch" | "datePicker" | "dateRangePicker" | "timePicker" | "timeRangePicker" | "rate" | "colorPicker";
|
|
4
4
|
component: any;
|
|
5
5
|
defaultValue: any;
|
|
6
6
|
isEmpty: typeof isEmptyValue;
|
|
7
|
-
hasIntrinsicWidth:
|
|
7
|
+
hasIntrinsicWidth: boolean;
|
|
8
|
+
renderPreview: (props: import('../form/type').FormItemComponentProps) => import('react').ReactNode;
|
|
8
9
|
}[];
|
|
9
10
|
export { ALL_COMPONENTS };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ColorPicker, Rate, TimePicker, DatePicker, Switch, Slider, InputNumber, Checkbox, Radio, Select, Input } from "antd";
|
|
2
|
-
import { withInjectedProps,
|
|
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 } from "./render-preview.js";
|
|
3
4
|
const COMPONENT_MAP = {
|
|
4
5
|
input: Input,
|
|
5
6
|
textArea: Input.TextArea,
|
|
@@ -18,26 +19,6 @@ const COMPONENT_MAP = {
|
|
|
18
19
|
rate: Rate,
|
|
19
20
|
colorPicker: ColorPicker
|
|
20
21
|
};
|
|
21
|
-
const HOC_RULES = {
|
|
22
|
-
// 需要withValueChangeHandler的组件
|
|
23
|
-
withValueChangeHandler: [
|
|
24
|
-
"input",
|
|
25
|
-
"textArea",
|
|
26
|
-
"radio",
|
|
27
|
-
"inputNumber",
|
|
28
|
-
"slider",
|
|
29
|
-
"switch"
|
|
30
|
-
],
|
|
31
|
-
// 需要日期转换(Day.js)的组件
|
|
32
|
-
withDayjsTransformAntdDate: ["datePicker"],
|
|
33
|
-
withDayjsTransformAntdDateRangePicker: ["dateRangePicker"],
|
|
34
|
-
withDayjsTransformAntdTime: ["timePicker"],
|
|
35
|
-
withDayjsTransformAntdTimeRange: ["timeRangePicker"],
|
|
36
|
-
// 颜色选择处理
|
|
37
|
-
withColorPickerHandler: ["colorPicker"],
|
|
38
|
-
// 多选下拉框
|
|
39
|
-
multiSelect: ["multiSelect"]
|
|
40
|
-
};
|
|
41
22
|
const DEFAULT_VALUES = {
|
|
42
23
|
input: "",
|
|
43
24
|
textArea: "",
|
|
@@ -56,35 +37,123 @@ const DEFAULT_VALUES = {
|
|
|
56
37
|
rate: 0,
|
|
57
38
|
colorPicker: ""
|
|
58
39
|
};
|
|
40
|
+
const COMPONENT_RULES = {
|
|
41
|
+
input: {
|
|
42
|
+
hocs: ["valueChange"],
|
|
43
|
+
renderPreview: useValueToPreview,
|
|
44
|
+
hasIntrinsicWidth: false
|
|
45
|
+
},
|
|
46
|
+
textArea: {
|
|
47
|
+
hocs: ["valueChange"],
|
|
48
|
+
renderPreview: useValueToPreview,
|
|
49
|
+
hasIntrinsicWidth: true
|
|
50
|
+
},
|
|
51
|
+
select: {
|
|
52
|
+
hocs: [],
|
|
53
|
+
renderPreview: useValueToPreview,
|
|
54
|
+
hasIntrinsicWidth: true
|
|
55
|
+
},
|
|
56
|
+
singleSelect: {
|
|
57
|
+
hocs: [],
|
|
58
|
+
renderPreview: useValueToPreview,
|
|
59
|
+
hasIntrinsicWidth: true
|
|
60
|
+
},
|
|
61
|
+
multiSelect: {
|
|
62
|
+
hocs: ["multiSelect"],
|
|
63
|
+
renderPreview: useMultiplePreview,
|
|
64
|
+
hasIntrinsicWidth: true
|
|
65
|
+
},
|
|
66
|
+
radio: {
|
|
67
|
+
hocs: ["valueChange"],
|
|
68
|
+
renderPreview: useValueToPreview,
|
|
69
|
+
hasIntrinsicWidth: false
|
|
70
|
+
},
|
|
71
|
+
checkbox: {
|
|
72
|
+
hocs: [],
|
|
73
|
+
renderPreview: useMultiplePreview,
|
|
74
|
+
hasIntrinsicWidth: false
|
|
75
|
+
},
|
|
76
|
+
inputNumber: {
|
|
77
|
+
hocs: ["valueChange"],
|
|
78
|
+
renderPreview: useValueToPreview,
|
|
79
|
+
hasIntrinsicWidth: false
|
|
80
|
+
},
|
|
81
|
+
slider: {
|
|
82
|
+
hocs: ["valueChange"],
|
|
83
|
+
renderPreview: useValueToPreview,
|
|
84
|
+
hasIntrinsicWidth: false
|
|
85
|
+
},
|
|
86
|
+
switch: {
|
|
87
|
+
hocs: ["valueChange"],
|
|
88
|
+
renderPreview: useBooleanPreview,
|
|
89
|
+
hasIntrinsicWidth: false
|
|
90
|
+
},
|
|
91
|
+
datePicker: {
|
|
92
|
+
hocs: ["dayjsDate"],
|
|
93
|
+
renderPreview: useDatePreview,
|
|
94
|
+
hasIntrinsicWidth: true
|
|
95
|
+
},
|
|
96
|
+
dateRangePicker: {
|
|
97
|
+
hocs: ["dayjsDateRange"],
|
|
98
|
+
renderPreview: useDateRangePreview,
|
|
99
|
+
hasIntrinsicWidth: true
|
|
100
|
+
},
|
|
101
|
+
timePicker: {
|
|
102
|
+
hocs: ["dayjsTime"],
|
|
103
|
+
renderPreview: useTimePreview,
|
|
104
|
+
hasIntrinsicWidth: true
|
|
105
|
+
},
|
|
106
|
+
timeRangePicker: {
|
|
107
|
+
hocs: ["dayjsTimeRange"],
|
|
108
|
+
renderPreview: useTimeRangePreview,
|
|
109
|
+
hasIntrinsicWidth: true
|
|
110
|
+
},
|
|
111
|
+
rate: {
|
|
112
|
+
hocs: [],
|
|
113
|
+
renderPreview: useRatePreview,
|
|
114
|
+
hasIntrinsicWidth: false
|
|
115
|
+
},
|
|
116
|
+
colorPicker: {
|
|
117
|
+
hocs: ["colorPicker"],
|
|
118
|
+
renderPreview: useColorPreview,
|
|
119
|
+
hasIntrinsicWidth: false
|
|
120
|
+
}
|
|
121
|
+
};
|
|
59
122
|
const ALL_COMPONENTS = Object.keys(COMPONENT_MAP).map((name) => {
|
|
60
123
|
let component = COMPONENT_MAP[name];
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
124
|
+
const rule = COMPONENT_RULES[name];
|
|
125
|
+
rule.hocs.forEach((hoc) => {
|
|
126
|
+
switch (hoc) {
|
|
127
|
+
case "valueChange":
|
|
128
|
+
component = withValueChangeHandler(component);
|
|
129
|
+
break;
|
|
130
|
+
case "dayjsDate":
|
|
131
|
+
component = withDayjsTransformAntdDate(component);
|
|
132
|
+
break;
|
|
133
|
+
case "dayjsDateRange":
|
|
134
|
+
component = withDayjsTransformAntdDateRangePicker(component);
|
|
135
|
+
break;
|
|
136
|
+
case "dayjsTime":
|
|
137
|
+
component = withDayjsTransformAntdTime(component);
|
|
138
|
+
break;
|
|
139
|
+
case "dayjsTimeRange":
|
|
140
|
+
component = withDayjsTransformAntdTimeRange(component);
|
|
141
|
+
break;
|
|
142
|
+
case "multiSelect":
|
|
143
|
+
component = withInjectedProps({ mode: "multiple" })(component);
|
|
144
|
+
break;
|
|
145
|
+
case "colorPicker":
|
|
146
|
+
component = withColorPickerHandler(component);
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
149
|
+
});
|
|
82
150
|
return {
|
|
83
151
|
name,
|
|
84
152
|
component,
|
|
85
153
|
defaultValue: DEFAULT_VALUES[name],
|
|
86
154
|
isEmpty: isEmptyValue,
|
|
87
|
-
hasIntrinsicWidth:
|
|
155
|
+
hasIntrinsicWidth: rule.hasIntrinsicWidth,
|
|
156
|
+
renderPreview: (props) => rule.renderPreview(props.value)
|
|
88
157
|
};
|
|
89
158
|
});
|
|
90
159
|
export {
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** 通用默认预览 */
|
|
2
|
+
export declare const useValueToPreview: (value: any) => React.ReactNode;
|
|
3
|
+
/** 日期预览 */
|
|
4
|
+
export declare const useDatePreview: (value: any) => React.ReactNode;
|
|
5
|
+
/** 日期范围预览 */
|
|
6
|
+
export declare const useDateRangePreview: (value: [any, any] | null | undefined) => React.ReactNode;
|
|
7
|
+
/** 时间预览 */
|
|
8
|
+
export declare const useTimePreview: (value: any) => React.ReactNode;
|
|
9
|
+
/** 时间范围预览 */
|
|
10
|
+
export declare const useTimeRangePreview: (value: [any, any] | null | undefined) => React.ReactNode;
|
|
11
|
+
/** 多选/标签类预览 */
|
|
12
|
+
export declare const useMultiplePreview: (value: any[]) => React.ReactNode;
|
|
13
|
+
/** 开关类预览 */
|
|
14
|
+
export declare const useBooleanPreview: (value: boolean) => React.ReactNode;
|
|
15
|
+
/** 评分预览 */
|
|
16
|
+
export declare const useRatePreview: (value: number) => React.ReactNode;
|
|
17
|
+
/** 颜色预览(返回色块) */
|
|
18
|
+
export declare const useColorPreview: (value: string) => React.ReactNode;
|
|
19
|
+
export declare const PREVIEW_RENDERERS: {
|
|
20
|
+
readonly useValueToPreview: (value: any) => React.ReactNode;
|
|
21
|
+
readonly useDatePreview: (value: any) => React.ReactNode;
|
|
22
|
+
readonly useDateRangePreview: (value: [any, any] | null | undefined) => React.ReactNode;
|
|
23
|
+
readonly useTimePreview: (value: any) => React.ReactNode;
|
|
24
|
+
readonly useTimeRangePreview: (value: [any, any] | null | undefined) => React.ReactNode;
|
|
25
|
+
readonly useMultiplePreview: (value: any[]) => React.ReactNode;
|
|
26
|
+
readonly useBooleanPreview: (value: boolean) => React.ReactNode;
|
|
27
|
+
readonly useRatePreview: (value: number) => React.ReactNode;
|
|
28
|
+
readonly useColorPreview: (value: string) => React.ReactNode;
|
|
29
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { j as jsxRuntimeExports } from "../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js";
|
|
2
|
+
import dayjs from "../node_modules/.pnpm/dayjs@1.11.18/node_modules/dayjs/dayjs.min.js";
|
|
3
|
+
const useValueToPreview = (value) => {
|
|
4
|
+
return value != null && value !== "" ? `${value}` : "--";
|
|
5
|
+
};
|
|
6
|
+
const useDatePreview = (value) => {
|
|
7
|
+
return value ? dayjs(value).format("YYYY-MM-DD") : "--";
|
|
8
|
+
};
|
|
9
|
+
const useDateRangePreview = (value) => {
|
|
10
|
+
if (!Array.isArray(value) || !value[0] || !value[1]) return "--";
|
|
11
|
+
return `${dayjs(value[0]).format("YYYY-MM-DD")} ~ ${dayjs(value[1]).format("YYYY-MM-DD")}`;
|
|
12
|
+
};
|
|
13
|
+
const useTimePreview = (value) => {
|
|
14
|
+
return value ? dayjs(value).format("HH:mm:ss") : "--";
|
|
15
|
+
};
|
|
16
|
+
const useTimeRangePreview = (value) => {
|
|
17
|
+
if (!Array.isArray(value) || !value[0] || !value[1]) return "--";
|
|
18
|
+
return `${dayjs(value[0]).format("HH:mm")} ~ ${dayjs(value[1]).format("HH:mm")}`;
|
|
19
|
+
};
|
|
20
|
+
const useMultiplePreview = (value) => {
|
|
21
|
+
return Array.isArray(value) && value.length > 0 ? value.join(", ") : "--";
|
|
22
|
+
};
|
|
23
|
+
const useBooleanPreview = (value) => {
|
|
24
|
+
return typeof value === "boolean" ? value ? "是" : "否" : "--";
|
|
25
|
+
};
|
|
26
|
+
const useRatePreview = (value) => {
|
|
27
|
+
return typeof value === "number" ? "★".repeat(value) + "☆".repeat(5 - value) : "--";
|
|
28
|
+
};
|
|
29
|
+
const useColorPreview = (value) => {
|
|
30
|
+
if (!value) return "--";
|
|
31
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
32
|
+
"span",
|
|
33
|
+
{
|
|
34
|
+
style: {
|
|
35
|
+
display: "inline-block",
|
|
36
|
+
width: 16,
|
|
37
|
+
height: 16,
|
|
38
|
+
border: "1px solid #ddd",
|
|
39
|
+
backgroundColor: value,
|
|
40
|
+
borderRadius: 3
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
};
|
|
45
|
+
export {
|
|
46
|
+
useBooleanPreview,
|
|
47
|
+
useColorPreview,
|
|
48
|
+
useDatePreview,
|
|
49
|
+
useDateRangePreview,
|
|
50
|
+
useMultiplePreview,
|
|
51
|
+
useRatePreview,
|
|
52
|
+
useTimePreview,
|
|
53
|
+
useTimeRangePreview,
|
|
54
|
+
useValueToPreview
|
|
55
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getDefaultExportFromCjs, commonjsGlobal } from "../../../../../_virtual/_commonjsHelpers.js";
|
|
2
2
|
import { __module as dayjs_min } from "../../../../../_virtual/dayjs.min.js";
|
|
3
3
|
(function(module, exports) {
|
|
4
4
|
!function(t, e) {
|