@antdv-next1/pro-field 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/LICENSE +21 -0
  2. package/dist/FieldHOC/index.d.ts +16 -0
  3. package/dist/FieldHOC/index.js +51 -0
  4. package/dist/ProField.d.ts +18 -0
  5. package/dist/ProField.js +417 -0
  6. package/dist/ProPureField.d.ts +10 -0
  7. package/dist/ProPureField.js +222 -0
  8. package/dist/ValueTypeToComponent.d.ts +6 -0
  9. package/dist/ValueTypeToComponent.js +442 -0
  10. package/dist/components/Cascader/index.d.ts +40 -0
  11. package/dist/components/Cascader/index.js +202 -0
  12. package/dist/components/Checkbox/index.d.ts +37 -0
  13. package/dist/components/Checkbox/index.js +149 -0
  14. package/dist/components/Checkbox/style/index.d.ts +11 -0
  15. package/dist/components/Checkbox/style/index.js +26 -0
  16. package/dist/components/Code/index.d.ts +34 -0
  17. package/dist/components/Code/index.js +125 -0
  18. package/dist/components/ColorPicker/index.d.ts +22 -0
  19. package/dist/components/ColorPicker/index.js +278 -0
  20. package/dist/components/DatePicker/index.d.ts +27 -0
  21. package/dist/components/DatePicker/index.js +171 -0
  22. package/dist/components/Digit/index.d.ts +27 -0
  23. package/dist/components/Digit/index.js +159 -0
  24. package/dist/components/DigitRange/index.d.ts +48 -0
  25. package/dist/components/DigitRange/index.js +197 -0
  26. package/dist/components/FromNow/index.d.ts +23 -0
  27. package/dist/components/FromNow/index.js +123 -0
  28. package/dist/components/Image/index.d.ts +23 -0
  29. package/dist/components/Image/index.js +119 -0
  30. package/dist/components/IndexColumn/index.d.ts +13 -0
  31. package/dist/components/IndexColumn/index.js +30 -0
  32. package/dist/components/IndexColumn/style/index.d.ts +11 -0
  33. package/dist/components/IndexColumn/style/index.js +29 -0
  34. package/dist/components/Money/InputNumberPopover.d.ts +120 -0
  35. package/dist/components/Money/InputNumberPopover.js +345 -0
  36. package/dist/components/Money/index.d.ts +303 -0
  37. package/dist/components/Money/index.js +274 -0
  38. package/dist/components/Options/index.d.ts +18 -0
  39. package/dist/components/Options/index.js +120 -0
  40. package/dist/components/Password/index.d.ts +33 -0
  41. package/dist/components/Password/index.js +137 -0
  42. package/dist/components/Percent/index.d.ts +45 -0
  43. package/dist/components/Percent/index.js +171 -0
  44. package/dist/components/Percent/util.d.ts +10 -0
  45. package/dist/components/Percent/util.js +22 -0
  46. package/dist/components/Progress/index.d.ts +22 -0
  47. package/dist/components/Progress/index.js +124 -0
  48. package/dist/components/Radio/index.d.ts +36 -0
  49. package/dist/components/Radio/index.js +138 -0
  50. package/dist/components/Radio/style/index.d.ts +11 -0
  51. package/dist/components/Radio/style/index.js +21 -0
  52. package/dist/components/RangePicker/DatePicker.d.ts +29 -0
  53. package/dist/components/RangePicker/DatePicker.js +189 -0
  54. package/dist/components/RangePicker/TimePicker.d.ts +25 -0
  55. package/dist/components/RangePicker/TimePicker.js +177 -0
  56. package/dist/components/RangePicker/index.d.ts +3 -0
  57. package/dist/components/RangePicker/index.js +3 -0
  58. package/dist/components/Rate/index.d.ts +19 -0
  59. package/dist/components/Rate/index.js +98 -0
  60. package/dist/components/Second/index.d.ts +28 -0
  61. package/dist/components/Second/index.js +151 -0
  62. package/dist/components/Segmented/index.d.ts +36 -0
  63. package/dist/components/Segmented/index.js +138 -0
  64. package/dist/components/Select/Highlight/index.d.ts +14 -0
  65. package/dist/components/Select/Highlight/index.js +46 -0
  66. package/dist/components/Select/Highlight/style/index.d.ts +12 -0
  67. package/dist/components/Select/Highlight/style/index.js +24 -0
  68. package/dist/components/Select/LightSelect/index.d.ts +45 -0
  69. package/dist/components/Select/LightSelect/index.js +621 -0
  70. package/dist/components/Select/LightSelect/style/index.d.ts +11 -0
  71. package/dist/components/Select/LightSelect/style/index.js +28 -0
  72. package/dist/components/Select/SearchSelect/index.d.ts +78 -0
  73. package/dist/components/Select/SearchSelect/index.js +273 -0
  74. package/dist/components/Select/index.d.ts +67 -0
  75. package/dist/components/Select/index.js +357 -0
  76. package/dist/components/Slider/index.d.ts +18 -0
  77. package/dist/components/Slider/index.js +99 -0
  78. package/dist/components/Status/index.d.ts +31 -0
  79. package/dist/components/Status/index.js +71 -0
  80. package/dist/components/Switch/index.d.ts +31 -0
  81. package/dist/components/Switch/index.js +132 -0
  82. package/dist/components/Text/index.d.ts +37 -0
  83. package/dist/components/Text/index.js +146 -0
  84. package/dist/components/TextArea/index.d.ts +25 -0
  85. package/dist/components/TextArea/index.js +117 -0
  86. package/dist/components/TextArea/readonly/index.d.ts +17 -0
  87. package/dist/components/TextArea/readonly/index.js +20 -0
  88. package/dist/components/TextArea/readonly/style/index.d.ts +11 -0
  89. package/dist/components/TextArea/readonly/style/index.js +20 -0
  90. package/dist/components/TimePicker/index.d.ts +23 -0
  91. package/dist/components/TimePicker/index.js +153 -0
  92. package/dist/components/TreeSelect/index.d.ts +45 -0
  93. package/dist/components/TreeSelect/index.js +762 -0
  94. package/dist/index.d.ts +34 -0
  95. package/dist/index.js +33 -0
  96. package/dist/pro-field.esm.js +72945 -0
  97. package/dist/pro-field.js +214 -0
  98. package/dist/typing.d.ts +28 -0
  99. package/dist/typing.js +1 -0
  100. package/dist/utils/useFieldExpose.d.ts +7 -0
  101. package/dist/utils/useFieldExpose.js +9 -0
  102. package/package.json +63 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 asuradaSong
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,16 @@
1
+ import { ProFieldLightProps } from "../typing.js";
2
+ import * as _$vue from "vue";
3
+ import { VNode } from "vue";
4
+ import { CustomSlotsType } from "@v-c/util/dist/type";
5
+
6
+ //#region src/FieldHOC/index.d.ts
7
+ type FieldHOCProps = ProFieldLightProps & {
8
+ isLight?: boolean;
9
+ };
10
+ declare const FieldHOC: _$vue.DefineSetupFnComponent<FieldHOCProps, {}, CustomSlotsType<{
11
+ default?: () => VNode[];
12
+ }>, ProFieldLightProps & {
13
+ isLight?: boolean;
14
+ } & {}, _$vue.PublicProps>;
15
+ //#endregion
16
+ export { FieldHOCProps, FieldHOC as default };
@@ -0,0 +1,51 @@
1
+ import { Fragment, cloneVNode, createVNode, defineComponent, isVNode, shallowRef } from "vue";
2
+ import { childrenToArray, isSpecialNode, useState } from "@antdv-next1/pro-utils";
3
+ //#region src/FieldHOC/index.tsx
4
+ const FieldHOC = /* @__PURE__ */ defineComponent((props, { slots, expose }) => {
5
+ const [labelTrigger, setLabelTrigger] = useState(false);
6
+ const lightLabel = shallowRef();
7
+ const isTriggeredByLabel = (e) => {
8
+ const isLabelMouseDown = lightLabel.value?.labelRef?.value?.contains(e.target);
9
+ const isClearMouseDown = lightLabel.value?.clearRef?.value?.contains(e.target);
10
+ return isLabelMouseDown && !isClearMouseDown;
11
+ };
12
+ const handleMouseDown = (e) => {
13
+ if (isTriggeredByLabel(e)) setLabelTrigger(true);
14
+ };
15
+ const handleMouseUp = () => setLabelTrigger(false);
16
+ expose({});
17
+ return () => {
18
+ if (props.isLight) return createVNode("div", {
19
+ "onMousedown": handleMouseDown,
20
+ "onMouseup": handleMouseUp
21
+ }, [childrenToArray(slots.default?.(), true).map((item) => {
22
+ if (isVNode(item) && !isSpecialNode(item)) return cloneVNode(item, {
23
+ labelTrigger: labelTrigger.value,
24
+ lightLabel
25
+ });
26
+ return item;
27
+ })]);
28
+ return createVNode(Fragment, null, [slots.default?.()]);
29
+ };
30
+ }, {
31
+ props: {
32
+ lightLabel: {
33
+ type: Object,
34
+ required: false
35
+ },
36
+ labelTrigger: {
37
+ type: Boolean,
38
+ required: false,
39
+ default: void 0
40
+ },
41
+ isLight: {
42
+ type: Boolean,
43
+ required: false,
44
+ default: void 0
45
+ }
46
+ },
47
+ name: "FieldHOC",
48
+ inheritAttrs: false
49
+ });
50
+ //#endregion
51
+ export { FieldHOC as default };
@@ -0,0 +1,18 @@
1
+ import { RenderProps } from "./typing.js";
2
+ import * as _$vue from "vue";
3
+ import { Plugin } from "vue";
4
+ import { ProFieldTextType, ProFieldValueObjectType, ProFieldValueType } from "@antdv-next1/pro-utils";
5
+ import { CustomSlotsType, VueNode as VueNode$1 } from "@v-c/util/dist/type";
6
+
7
+ //#region src/ProField.d.ts
8
+ interface ProFieldProps extends RenderProps {
9
+ valueType?: ProFieldValueType | ProFieldValueObjectType;
10
+ text?: ProFieldTextType;
11
+ placeholder?: string | string[];
12
+ }
13
+ declare const _ProField: _$vue.DefineSetupFnComponent<ProFieldProps, {}, CustomSlotsType<{
14
+ default?: () => VueNode$1;
15
+ }>, ProFieldProps & {}, _$vue.PublicProps>;
16
+ declare const ProField: typeof _ProField & Plugin;
17
+ //#endregion
18
+ export { ProFieldProps, ProField as default };
@@ -0,0 +1,417 @@
1
+ import FieldSelect from "./components/Select/index.js";
2
+ import FieldCascader from "./components/Cascader/index.js";
3
+ import FieldCheckbox from "./components/Checkbox/index.js";
4
+ import FieldCode from "./components/Code/index.js";
5
+ import FieldColorPicker from "./components/ColorPicker/index.js";
6
+ import FieldDatePicker from "./components/DatePicker/index.js";
7
+ import FieldDigit from "./components/Digit/index.js";
8
+ import FieldDigitRange from "./components/DigitRange/index.js";
9
+ import FieldFromNow from "./components/FromNow/index.js";
10
+ import FieldImage from "./components/Image/index.js";
11
+ import FieldIndexColumn from "./components/IndexColumn/index.js";
12
+ import FieldMoney from "./components/Money/index.js";
13
+ import FieldOptions from "./components/Options/index.js";
14
+ import FieldPassword from "./components/Password/index.js";
15
+ import FieldPercent from "./components/Percent/index.js";
16
+ import FieldProgress from "./components/Progress/index.js";
17
+ import FieldRadio from "./components/Radio/index.js";
18
+ import FieldTimeRangePicker from "./components/RangePicker/TimePicker.js";
19
+ import FieldDateRangePicker from "./components/RangePicker/DatePicker.js";
20
+ import FieldRate from "./components/Rate/index.js";
21
+ import FieldSecond from "./components/Second/index.js";
22
+ import FieldSegmented from "./components/Segmented/index.js";
23
+ import FieldSlider from "./components/Slider/index.js";
24
+ import FieldSwitch from "./components/Switch/index.js";
25
+ import FieldText from "./components/Text/index.js";
26
+ import FieldTextArea from "./components/TextArea/index.js";
27
+ import FieldTimePicker from "./components/TimePicker/index.js";
28
+ import FieldTreeSelect from "./components/TreeSelect/index.js";
29
+ import FieldHOC from "./FieldHOC/index.js";
30
+ import { useFieldExpose } from "./utils/useFieldExpose.js";
31
+ import { Fragment, cloneVNode, createVNode, defineComponent, isVNode, mergeProps, shallowRef } from "vue";
32
+ import { useProConfig } from "@antdv-next1/pro-provider";
33
+ import { omitUndefined, pickProProps } from "@antdv-next1/pro-utils";
34
+ import { isEmptyElement } from "@v-c/util/dist/props-util/index";
35
+ import { Avatar } from "antdv-next";
36
+ import dayjs from "dayjs";
37
+ import advancedFormat from "dayjs/plugin/advancedFormat.js";
38
+ import isoWeek from "dayjs/plugin/isoWeek.js";
39
+ import localeData from "dayjs/plugin/localeData.js";
40
+ import localizedFormat from "dayjs/plugin/localizedFormat.js";
41
+ import weekday from "dayjs/plugin/weekday.js";
42
+ import weekOfYear from "dayjs/plugin/weekOfYear.js";
43
+ //#region src/ProField.tsx
44
+ dayjs.extend(localeData);
45
+ dayjs.extend(advancedFormat);
46
+ dayjs.extend(isoWeek);
47
+ dayjs.extend(weekOfYear);
48
+ dayjs.extend(weekday);
49
+ dayjs.extend(localizedFormat);
50
+ /**
51
+ * Render valueType object
52
+ *
53
+ * @param text String | number
54
+ * @param valueType ProColumnsValueObjectType
55
+ * @param props
56
+ */
57
+ function defaultRenderTextByObject(text, valueType, props) {
58
+ const pickFormItemProps = pickProProps(props.fieldProps);
59
+ if (valueType.type === "progress") return createVNode(FieldProgress, mergeProps(props, {
60
+ "text": text,
61
+ "fieldProps": {
62
+ ...pickFormItemProps,
63
+ status: valueType.status ? valueType.status : void 0
64
+ }
65
+ }), null);
66
+ if (valueType.type === "money") return createVNode(FieldMoney, mergeProps(props, {
67
+ "locale": valueType.locale,
68
+ "fieldProps": pickFormItemProps,
69
+ "text": text,
70
+ "moneySymbol": valueType.moneySymbol
71
+ }), null);
72
+ if (valueType.type === "percent") return createVNode(FieldPercent, mergeProps(props, {
73
+ "text": text,
74
+ "showSymbol": valueType.showSymbol,
75
+ "precision": valueType.precision,
76
+ "fieldProps": pickFormItemProps,
77
+ "showColor": valueType.showColor
78
+ }), null);
79
+ if (valueType.type === "image") return createVNode(FieldImage, mergeProps(props, {
80
+ "text": text,
81
+ "width": valueType.width
82
+ }), null);
83
+ return text;
84
+ }
85
+ /**
86
+ * 根据不同的类型来转化数值
87
+ *
88
+ */
89
+ function defaultRenderText(dataValue, valueType, props, valueTypeMap) {
90
+ const { mode = "read", render, emptyText = "-" } = props;
91
+ if (emptyText !== false && mode === "read" && valueType !== "option" && valueType !== "switch") {
92
+ if (typeof dataValue !== "boolean" && typeof dataValue !== "number" && !dataValue) {
93
+ if (render) return createVNode(Fragment, null, [render(dataValue, { mode }, createVNode(Fragment, null, [emptyText]))]);
94
+ return createVNode(Fragment, null, [emptyText]);
95
+ }
96
+ }
97
+ delete props.emptyText;
98
+ if (typeof valueType === "object") return createVNode(Fragment, null, [defaultRenderTextByObject(dataValue, valueType, props)]);
99
+ const customValueTypeConfig = valueTypeMap && valueTypeMap[valueType];
100
+ if (customValueTypeConfig) {
101
+ if (mode === "read") return createVNode(Fragment, null, [customValueTypeConfig.render?.(dataValue, {
102
+ text: dataValue,
103
+ ...props,
104
+ mode: mode || "read"
105
+ }, createVNode(Fragment, null, [dataValue]))]);
106
+ if (mode === "update" || mode === "edit") return createVNode(Fragment, null, [customValueTypeConfig.formItemRender?.(dataValue, {
107
+ text: dataValue,
108
+ ...props
109
+ }, createVNode(Fragment, null, [dataValue]))]);
110
+ }
111
+ /** 如果是金额的值 */
112
+ if (valueType === "money") return createVNode(FieldMoney, mergeProps(props, { "text": dataValue }), null);
113
+ /** 如果是日期的值 */
114
+ if (valueType === "date") return createVNode(FieldHOC, { "isLight": props.light }, { default: () => [createVNode(FieldDatePicker, mergeProps(props, {
115
+ "text": dataValue,
116
+ "format": "YYYY-MM-DD"
117
+ }), null)] });
118
+ /** 如果是周的值 */
119
+ if (valueType === "dateWeek") return createVNode(FieldHOC, { "isLight": props.light }, { default: () => [createVNode(FieldDatePicker, mergeProps(props, {
120
+ "text": dataValue,
121
+ "format": "YYYY-wo",
122
+ "picker": "week"
123
+ }), null)] });
124
+ /** 如果是周范围的值 */
125
+ if (valueType === "dateWeekRange") {
126
+ const { fieldProps, ...otherProps } = props;
127
+ return createVNode(FieldHOC, { "isLight": props.light }, { default: () => [createVNode(FieldDateRangePicker, mergeProps(otherProps, {
128
+ "text": dataValue || [],
129
+ "format": "YYYY-wo",
130
+ "showTime": true,
131
+ "fieldProps": {
132
+ picker: "week",
133
+ ...fieldProps
134
+ }
135
+ }), null)] });
136
+ }
137
+ /** 如果是月范围的值 */
138
+ if (valueType === "dateMonthRange") {
139
+ const { fieldProps, ...otherProps } = props;
140
+ return createVNode(FieldHOC, { "isLight": props.light }, { default: () => [createVNode(FieldDateRangePicker, mergeProps(otherProps, {
141
+ "text": dataValue || [],
142
+ "format": "YYYY-MM",
143
+ "showTime": true,
144
+ "fieldProps": {
145
+ picker: "month",
146
+ ...fieldProps
147
+ }
148
+ }), null)] });
149
+ }
150
+ /** 如果是季范围的值 */
151
+ if (valueType === "dateQuarterRange") {
152
+ const { fieldProps, ...otherProps } = props;
153
+ return createVNode(FieldHOC, { "isLight": props.light }, { default: () => [createVNode(FieldDateRangePicker, mergeProps(otherProps, {
154
+ "text": dataValue || [],
155
+ "format": "YYYY-[Q]Q",
156
+ "showTime": true,
157
+ "fieldProps": {
158
+ picker: "quarter",
159
+ ...fieldProps
160
+ }
161
+ }), null)] });
162
+ }
163
+ /** 如果是年范围的值 */
164
+ if (valueType === "dateYearRange") {
165
+ const { fieldProps, ...otherProps } = props;
166
+ return createVNode(FieldHOC, { "isLight": props.light }, { default: () => [createVNode(FieldDateRangePicker, mergeProps(otherProps, {
167
+ "text": dataValue || [],
168
+ "format": "YYYY",
169
+ "showTime": true,
170
+ "fieldProps": {
171
+ picker: "year",
172
+ ...fieldProps
173
+ }
174
+ }), null)] });
175
+ }
176
+ /** 如果是月的值 */
177
+ if (valueType === "dateMonth") return createVNode(FieldHOC, { "isLight": props.light }, { default: () => [createVNode(FieldDatePicker, mergeProps(props, {
178
+ "text": dataValue,
179
+ "format": "YYYY-MM",
180
+ "picker": "month"
181
+ }), null)] });
182
+ /** 如果是季度的值 */
183
+ if (valueType === "dateQuarter") return createVNode(FieldHOC, { "isLight": props.light }, { default: () => [createVNode(FieldDatePicker, mergeProps(props, {
184
+ "text": dataValue,
185
+ "format": "YYYY-[Q]Q",
186
+ "picker": "quarter"
187
+ }), null)] });
188
+ /** 如果是年的值 */
189
+ if (valueType === "dateYear") return createVNode(FieldHOC, { "isLight": props.light }, { default: () => [createVNode(FieldDatePicker, mergeProps(props, {
190
+ "text": dataValue,
191
+ "format": "YYYY",
192
+ "picker": "year"
193
+ }), null)] });
194
+ /** 如果是日期范围的值 */
195
+ if (valueType === "dateRange") return createVNode(FieldDateRangePicker, mergeProps(props, {
196
+ "text": dataValue || [],
197
+ "format": "YYYY-MM-DD"
198
+ }), null);
199
+ /** 如果是日期加时间类型的值 */
200
+ if (valueType === "dateTime") return createVNode(FieldHOC, { "isLight": props.light }, { default: () => [createVNode(FieldDatePicker, mergeProps(props, {
201
+ "text": dataValue,
202
+ "format": "YYYY-MM-DD HH:mm:ss",
203
+ "showTime": true
204
+ }), null)] });
205
+ /** 如果是日期加时间类型的值的值 */
206
+ if (valueType === "dateTimeRange") return createVNode(FieldHOC, { "isLight": props.light }, { default: () => [createVNode(FieldDateRangePicker, mergeProps(props, {
207
+ "text": dataValue || [],
208
+ "format": "YYYY-MM-DD HH:mm:ss",
209
+ "showTime": true
210
+ }), null)] });
211
+ /** 如果是时间类型的值 */
212
+ if (valueType === "time") return createVNode(FieldHOC, { "isLight": props.light }, { default: () => [createVNode(FieldTimePicker, mergeProps(props, {
213
+ "text": dataValue,
214
+ "format": "HH:mm:ss"
215
+ }), null)] });
216
+ /** 如果是时间类型的值 */
217
+ if (valueType === "timeRange") return createVNode(FieldHOC, { "isLight": props.light }, { default: () => [createVNode(FieldTimeRangePicker, mergeProps(props, {
218
+ "text": dataValue || [],
219
+ "format": "HH:mm:ss"
220
+ }), null)] });
221
+ if (valueType === "fromNow") return createVNode(FieldFromNow, mergeProps(props, { "text": dataValue }), null);
222
+ if (valueType === "index") return createVNode(FieldIndexColumn, { "children": dataValue + 1 }, null);
223
+ if (valueType === "indexBorder") return createVNode(FieldIndexColumn, {
224
+ "border": true,
225
+ "children": dataValue + 1
226
+ }, null);
227
+ if (valueType === "progress") return createVNode(FieldProgress, mergeProps(props, { "text": dataValue }), null);
228
+ if (valueType === "percent") return createVNode(FieldPercent, mergeProps(props, { "text": dataValue }), null);
229
+ if (valueType === "avatar" && typeof dataValue === "string" && props.mode === "read") return createVNode(Avatar, {
230
+ "src": dataValue,
231
+ "size": 22,
232
+ "shape": "circle"
233
+ }, null);
234
+ if (valueType === "code") return createVNode(FieldCode, mergeProps(props, { "text": dataValue }), null);
235
+ if (valueType === "jsonCode") return createVNode(FieldCode, mergeProps(props, {
236
+ "text": dataValue,
237
+ "language": "json"
238
+ }), null);
239
+ if (valueType === "textarea") return createVNode(FieldTextArea, mergeProps(props, { "text": dataValue }), null);
240
+ if (valueType === "digit") return createVNode(FieldDigit, mergeProps(props, { "text": dataValue }), null);
241
+ if (valueType === "digitRange") return createVNode(FieldDigitRange, mergeProps(props, { "text": dataValue || [] }), null);
242
+ if (valueType === "second") return createVNode(FieldSecond, mergeProps(props, { "text": dataValue }), null);
243
+ if (valueType === "select" || valueType === "text" && (props.valueEnum || props.request)) return createVNode(FieldHOC, { "isLight": props.light }, { default: () => [createVNode(FieldSelect, mergeProps(props, { "text": dataValue }), null)] });
244
+ if (valueType === "checkbox") return createVNode(FieldCheckbox, mergeProps(props, { "text": dataValue }), null);
245
+ if (valueType === "radio") return createVNode(FieldRadio, mergeProps(props, { "text": dataValue }), null);
246
+ if (valueType === "radioButton") return createVNode(FieldRadio, mergeProps({ "radioType": "button" }, props, { "text": dataValue }), null);
247
+ if (valueType === "rate") return createVNode(FieldRate, mergeProps(props, { "text": dataValue }), null);
248
+ if (valueType === "slider") return createVNode(FieldSlider, mergeProps(props, { "text": dataValue }), null);
249
+ if (valueType === "switch") return createVNode(FieldSwitch, mergeProps(props, { "text": dataValue }), null);
250
+ if (valueType === "option") return createVNode(FieldOptions, mergeProps(props, { "text": dataValue }), null);
251
+ if (valueType === "password") return createVNode(FieldPassword, mergeProps(props, { "text": dataValue }), null);
252
+ if (valueType === "image") return createVNode(FieldImage, mergeProps(props, { "text": dataValue }), null);
253
+ if (valueType === "cascader") return createVNode(FieldCascader, mergeProps(props, { "text": dataValue || [] }), null);
254
+ if (valueType === "treeSelect") return createVNode(FieldTreeSelect, mergeProps(props, { "text": dataValue || [] }), null);
255
+ if (valueType === "color") return createVNode(FieldColorPicker, mergeProps(props, { "text": dataValue }), null);
256
+ if (valueType === "segmented") return createVNode(FieldSegmented, mergeProps(props, {
257
+ "emptyText": void 0,
258
+ "text": dataValue
259
+ }), null);
260
+ return createVNode(FieldText, mergeProps(props, { "text": dataValue }), null);
261
+ }
262
+ const ProField = /* @__PURE__ */ defineComponent((props, { expose }) => {
263
+ const proProvide = useProConfig();
264
+ const profieldRef = shallowRef(null);
265
+ const handleChange = (...restParams) => {
266
+ props.fieldProps?.onChange?.(...restParams);
267
+ props.onChange?.(...restParams);
268
+ };
269
+ expose(useFieldExpose(profieldRef, props.valueType));
270
+ return () => {
271
+ const { text, valueType = "text", mode = "read", onChange, formItemRender, value, "onUpdate:text": onUpdateText, "onUpdate:value": onUpdateValue, readonly, fieldProps: restFieldProps, ...rest } = props;
272
+ const fieldProps = (value !== void 0 || restFieldProps) && {
273
+ value,
274
+ "onUpdate:value": (_value) => {
275
+ onUpdateValue?.(_value);
276
+ onUpdateText?.(_value);
277
+ },
278
+ ...omitUndefined(restFieldProps || {}),
279
+ onChange: handleChange
280
+ };
281
+ return defaultRenderText(mode === "edit" ? fieldProps?.value ?? text ?? "" : text ?? fieldProps?.value ?? "", valueType || "text", omitUndefined({
282
+ ref: profieldRef,
283
+ ...rest,
284
+ mode: readonly ? "read" : mode,
285
+ formItemRender: formItemRender ? (curText, props, dom) => {
286
+ const { placeholder: _placeholder, ...restProps } = props;
287
+ const newDom = formItemRender(curText, restProps, dom);
288
+ if (isVNode(newDom) && !isEmptyElement(newDom)) return cloneVNode(newDom, {
289
+ ...fieldProps,
290
+ ...newDom.props || {}
291
+ });
292
+ return newDom;
293
+ } : void 0,
294
+ placeholder: formItemRender ? void 0 : rest?.placeholder ?? fieldProps?.placeholder,
295
+ fieldProps: pickProProps(omitUndefined({
296
+ ...fieldProps,
297
+ placeholder: formItemRender ? void 0 : rest?.placeholder ?? fieldProps?.placeholder
298
+ }), Object.keys(proProvide.value.valueTypeMap || {})?.includes(valueType))
299
+ }), proProvide.value.valueTypeMap || {});
300
+ };
301
+ }, {
302
+ props: {
303
+ valueType: { required: false },
304
+ text: {
305
+ type: [
306
+ Object,
307
+ Function,
308
+ String,
309
+ Number,
310
+ null,
311
+ Boolean,
312
+ Array
313
+ ],
314
+ required: false,
315
+ default: void 0
316
+ },
317
+ placeholder: {
318
+ type: [String, Array],
319
+ required: false
320
+ },
321
+ mode: {
322
+ type: String,
323
+ required: false
324
+ },
325
+ readonly: {
326
+ type: Boolean,
327
+ required: false,
328
+ default: void 0
329
+ },
330
+ value: { required: false },
331
+ "onUpdate:value": {
332
+ type: Function,
333
+ required: false
334
+ },
335
+ onChange: {
336
+ type: Function,
337
+ required: false
338
+ },
339
+ "onUpdate:text": {
340
+ type: Function,
341
+ required: false
342
+ },
343
+ fieldProps: { required: false },
344
+ light: {
345
+ type: Boolean,
346
+ required: false,
347
+ default: void 0
348
+ },
349
+ label: {
350
+ type: [
351
+ Object,
352
+ Function,
353
+ String,
354
+ Number,
355
+ null,
356
+ Boolean,
357
+ Array
358
+ ],
359
+ required: false,
360
+ default: void 0
361
+ },
362
+ valueEnum: {
363
+ type: [Object, Map],
364
+ required: false
365
+ },
366
+ proFieldKey: {
367
+ type: [String, Number],
368
+ required: false
369
+ },
370
+ render: {
371
+ type: Function,
372
+ required: false
373
+ },
374
+ formItemRender: {
375
+ type: Function,
376
+ required: false
377
+ },
378
+ id: {
379
+ type: String,
380
+ required: false
381
+ },
382
+ request: {
383
+ type: Function,
384
+ required: false
385
+ },
386
+ emptyText: {
387
+ type: [
388
+ Object,
389
+ Function,
390
+ String,
391
+ Number,
392
+ null,
393
+ Boolean,
394
+ Array
395
+ ],
396
+ required: false,
397
+ default: void 0
398
+ },
399
+ open: {
400
+ type: Boolean,
401
+ required: false,
402
+ default: void 0
403
+ },
404
+ onOpenChange: {
405
+ type: Function,
406
+ required: false
407
+ }
408
+ },
409
+ name: "ProField",
410
+ inheritAttrs: false
411
+ });
412
+ ProField.install = (app) => {
413
+ app.component(ProField.name, ProField);
414
+ return app;
415
+ };
416
+ //#endregion
417
+ export { ProField as default };
@@ -0,0 +1,10 @@
1
+ import { ProFieldProps } from "./ProField.js";
2
+ import * as _$vue from "vue";
3
+ import { CustomSlotsType, VueNode } from "@v-c/util/dist/type";
4
+
5
+ //#region src/ProPureField.d.ts
6
+ declare const ProPureField: _$vue.DefineSetupFnComponent<ProFieldProps, {}, CustomSlotsType<{
7
+ default?: () => VueNode;
8
+ }>, ProFieldProps & {}, _$vue.PublicProps>;
9
+ //#endregion
10
+ export { ProPureField as default };