Update from Vibe Studio

This commit is contained in:
Vibe Studio
2026-01-12 09:12:41 +00:00
parent a4605e311a
commit a6ae5199b0
29756 changed files with 2526222 additions and 278 deletions

View File

@@ -0,0 +1,9 @@
import type { FormSchema } from './typing';
export * from './typing';
/**
* 此组件可以根据 Json Schema 来生成相应的表单,大部分配置与 antd 的 table 列配置相同
*
* @see 此组件仍为 beta 版本api 可能发生变化
*/
declare function BetaSchemaForm<T, ValueType = 'text'>(props: FormSchema<T, ValueType>): import("react/jsx-runtime").JSX.Element;
export default BetaSchemaForm;

View File

@@ -0,0 +1,178 @@
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
var _excluded = ["columns", "layoutType", "type", "action", "shouldUpdate", "formRef"];
import { LabelIconTip, omitUndefined, runFunction, stringify, useDeepCompareMemo, useLatest, useReactiveRef, useRefFunction } from '@ant-design/pro-utils';
import { Form } from 'antd';
import React, { useCallback, useImperativeHandle, useRef, useState } from 'react';
import { DrawerForm } from "../../layouts/DrawerForm";
import { LightFilter } from "../../layouts/LightFilter";
import { ModalForm } from "../../layouts/ModalForm";
import { ProForm } from "../../layouts/ProForm";
import { QueryFilter } from "../../layouts/QueryFilter";
import { StepsForm as ProStepsForm } from "../../layouts/StepsForm";
import { Embed, StepsForm } from "./layoutType";
import { renderValueType } from "./valueType";
import { jsx as _jsx } from "react/jsx-runtime";
export * from "./typing";
var FormLayoutType = {
DrawerForm: DrawerForm,
QueryFilter: QueryFilter,
LightFilter: LightFilter,
StepForm: ProStepsForm.StepForm,
StepsForm: StepsForm,
ModalForm: ModalForm,
Embed: Embed,
Form: ProForm
};
/**
* 此组件可以根据 Json Schema 来生成相应的表单,大部分配置与 antd 的 table 列配置相同
*
* @see 此组件仍为 beta 版本api 可能发生变化
*/
function BetaSchemaForm(props) {
var columns = props.columns,
_props$layoutType = props.layoutType,
layoutType = _props$layoutType === void 0 ? 'Form' : _props$layoutType,
_props$type = props.type,
type = _props$type === void 0 ? 'form' : _props$type,
action = props.action,
_props$shouldUpdate = props.shouldUpdate,
shouldUpdate = _props$shouldUpdate === void 0 ? function (pre, next) {
return stringify(pre) !== stringify(next);
} : _props$shouldUpdate,
propsFormRef = props.formRef,
restProps = _objectWithoutProperties(props, _excluded);
var FormRenderComponents = FormLayoutType[layoutType] || ProForm;
var _Form$useForm = Form.useForm(),
_Form$useForm2 = _slicedToArray(_Form$useForm, 1),
form = _Form$useForm2[0];
var formInstance = Form.useFormInstance();
var _useState = useState([]),
_useState2 = _slicedToArray(_useState, 2),
forceUpdate = _useState2[1];
var _useState3 = useState(function () {
return [];
}),
_useState4 = _slicedToArray(_useState3, 2),
formDomsDeps = _useState4[0],
updatedFormDoms = _useState4[1];
var formRef = useReactiveRef(props.form || formInstance || form);
var oldValuesRef = useRef();
var propsRef = useLatest(props);
/**
* 生成子项,方便被 table 接入
*
* @param items
*/
var genItems = useRefFunction(function (items) {
return items.filter(function (originItem) {
return !(originItem.hideInForm && type === 'form');
}).sort(function (a, b) {
if (b.order || a.order) {
return (b.order || 0) - (a.order || 0);
}
return (b.index || 0) - (a.index || 0);
}).map(function (originItem, index) {
var title = runFunction(originItem.title, originItem, 'form', /*#__PURE__*/_jsx(LabelIconTip, {
label: originItem.title,
tooltip: originItem.tooltip || originItem.tip
}));
var item = omitUndefined({
title: title,
label: title,
name: originItem.name,
valueType: runFunction(originItem.valueType, {}),
key: originItem.key || originItem.dataIndex || index,
columns: originItem.columns,
valueEnum: originItem.valueEnum,
dataIndex: originItem.dataIndex || originItem.key,
initialValue: originItem.initialValue,
width: originItem.width,
index: originItem.index,
readonly: originItem.readonly,
colSize: originItem.colSize,
colProps: originItem.colProps,
rowProps: originItem.rowProps,
className: originItem.className,
tooltip: originItem.tooltip || originItem.tip,
dependencies: originItem.dependencies,
proFieldProps: originItem.proFieldProps,
ignoreFormItem: originItem.ignoreFormItem,
getFieldProps: originItem.fieldProps ? function () {
return runFunction(originItem.fieldProps, formRef.current, originItem);
} : undefined,
getFormItemProps: originItem.formItemProps ? function () {
return runFunction(originItem.formItemProps, formRef.current, originItem);
} : undefined,
render: originItem.render,
renderFormItem: originItem.renderFormItem,
renderText: originItem.renderText,
request: originItem.request,
params: originItem.params,
transform: originItem.transform,
convertValue: originItem.convertValue,
debounceTime: originItem.debounceTime,
defaultKeyWords: originItem.defaultKeyWords
});
return renderValueType(item, {
action: action,
type: type,
originItem: originItem,
formRef: formRef,
genItems: genItems
});
}).filter(function (field) {
return Boolean(field);
});
});
var onValuesChange = useCallback(function (changedValues, values) {
var propsOnValuesChange = propsRef.current.onValuesChange;
if (shouldUpdate === true || typeof shouldUpdate === 'function' && shouldUpdate(values, oldValuesRef.current)) {
updatedFormDoms([]);
}
oldValuesRef.current = values;
propsOnValuesChange === null || propsOnValuesChange === void 0 || propsOnValuesChange(changedValues, values);
}, [propsRef, shouldUpdate]);
var formChildrenDoms = useDeepCompareMemo(function () {
if (!formRef.current) return;
// like StepsForm's columns but not only for StepsForm
if (columns.length && Array.isArray(columns[0])) return;
return genItems(columns);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [columns, restProps === null || restProps === void 0 ? void 0 : restProps.open, action, type, formDomsDeps]);
/**
* Append layoutType component specific props
*/
var specificProps = useDeepCompareMemo(function () {
if (layoutType === 'StepsForm') {
return {
forceUpdate: forceUpdate,
columns: columns
};
}
return {};
}, [columns, layoutType]);
useImperativeHandle(propsFormRef, function () {
return formRef.current;
}, [formRef.current]);
return /*#__PURE__*/_jsx(FormRenderComponents, _objectSpread(_objectSpread(_objectSpread({}, specificProps), restProps), {}, {
onInit: function onInit(_, initForm) {
var _restProps$onInit;
if (propsFormRef) {
propsFormRef.current = initForm;
}
restProps === null || restProps === void 0 || (_restProps$onInit = restProps.onInit) === null || _restProps$onInit === void 0 || _restProps$onInit.call(restProps, _, initForm);
formRef.current = initForm;
},
form: props.form || form,
formRef: formRef,
onValuesChange: onValuesChange,
children: formChildrenDoms
}));
}
export default BetaSchemaForm;

View File

@@ -0,0 +1,5 @@
/// <reference types="react" />
declare const Embed: React.FC<{
children: any;
}>;
export default Embed;

View File

@@ -0,0 +1,9 @@
import { Fragment as _Fragment } from "react/jsx-runtime";
import { jsx as _jsx } from "react/jsx-runtime";
var Embed = function Embed(_ref) {
var children = _ref.children;
return /*#__PURE__*/_jsx(_Fragment, {
children: children
});
};
export default Embed;

View File

@@ -0,0 +1,9 @@
import React from 'react';
import type { ProFormGridConfig } from '../../../typing';
import type { FormSchema, ProFormPropsType } from '../typing';
type StepsFormProps<T, ValueType> = ProFormPropsType<T, ValueType> & Pick<FormSchema, 'steps'> & {
layoutType: 'StepsForm';
forceUpdate: React.Dispatch<React.SetStateAction<[]>>;
} & Pick<ProFormGridConfig, 'grid'>;
declare const StepsForm: <T, ValueType>({ steps, columns, forceUpdate, grid, ...props }: StepsFormProps<T, ValueType>) => import("react/jsx-runtime").JSX.Element;
export default StepsForm;

View File

@@ -0,0 +1,43 @@
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
var _excluded = ["steps", "columns", "forceUpdate", "grid"];
import { useLatest } from '@ant-design/pro-utils';
import React, { useCallback, useMemo } from 'react';
import { StepsForm as ProStepsForm } from "../../../layouts/StepsForm";
import BetaSchemaForm from "../index";
import { createElement as _createElement } from "react";
import { jsx as _jsx } from "react/jsx-runtime";
var StepsForm = function StepsForm(_ref) {
var steps = _ref.steps,
columns = _ref.columns,
forceUpdate = _ref.forceUpdate,
grid = _ref.grid,
props = _objectWithoutProperties(_ref, _excluded);
var propsRef = useLatest(props);
/**
* Fixed StepsForm toggle step causing formRef to update
*/
var onCurrentChange = useCallback(function (current) {
var _propsRef$current$onC, _propsRef$current;
(_propsRef$current$onC = (_propsRef$current = propsRef.current).onCurrentChange) === null || _propsRef$current$onC === void 0 || _propsRef$current$onC.call(_propsRef$current, current);
forceUpdate([]);
}, [forceUpdate, propsRef]);
var StepDoms = useMemo(function () {
return steps === null || steps === void 0 ? void 0 : steps.map(function (step, index) {
return /*#__PURE__*/_createElement(BetaSchemaForm, _objectSpread(_objectSpread({
grid: grid
}, step), {}, {
// eslint-disable-next-line react/no-array-index-key
key: index,
layoutType: "StepForm",
columns: columns[index]
}));
});
}, [columns, grid, steps]);
return /*#__PURE__*/_jsx(ProStepsForm, _objectSpread(_objectSpread({}, props), {}, {
onCurrentChange: onCurrentChange,
children: StepDoms
}));
};
export default StepsForm;

View File

@@ -0,0 +1,2 @@
export { default as Embed } from './Embed';
export { default as StepsForm } from './StepsForm';

View File

@@ -0,0 +1,2 @@
export { default as Embed } from "./Embed";
export { default as StepsForm } from "./StepsForm";

View File

@@ -0,0 +1,125 @@
/// <reference types="react" />
import type { ProCoreActionType, ProSchema, ProSchemaComponentTypes, SearchConvertKeyFn, SearchTransformKeyFn } from '@ant-design/pro-utils';
import type { FormInstance, FormProps } from 'antd';
import type { NamePath } from 'antd/lib/form/interface';
import type { CommonFormProps } from '../../BaseForm';
import type { DrawerFormProps, LightFilterProps, ModalFormProps, ProFormProps, QueryFilterProps, StepFormProps, StepsFormProps } from '../../layouts';
import type { ProFormGridConfig } from '../../typing';
export type ExtraProColumnType = {
tooltip?: React.ReactNode;
key?: React.Key;
className?: string;
/**
* @type auto 使用组件默认的宽度
* @type xs=104px 适用于短数字、短文本或选项。
* @type sm=216px 适用于较短字段录入、如姓名、电话、ID 等。
* @type md=328px 标准宽度,适用于大部分字段长度。
* @type lg=440px 适用于较长字段录入,如长网址、标签组、文件路径等。
* @type xl=552px 适用于长文本录入,如长链接、描述、备注等,通常搭配自适应多行输入框或定高文本域使用。
*/
width?: string | number;
name?: NamePath | NamePath[];
defaultKeyWords?: string;
} & Pick<ProFormGridConfig, 'rowProps' | 'colProps'>;
/**
* ProForm 支持的相关类型
*/
export type ProFormPropsType<T, ValueType = 'text'> = ((({
layoutType?: 'Form';
} & ProFormProps<T>) | ({
layoutType: 'DrawerForm';
} & DrawerFormProps<T>) | ({
layoutType: 'ModalForm';
} & ModalFormProps<T>) | ({
layoutType: 'QueryFilter';
} & QueryFilterProps<T>) | ({
layoutType: 'LightFilter';
} & LightFilterProps<T>) | ({
layoutType: 'StepForm';
} & StepFormProps<T>) | {
layoutType: 'Embed';
}) & {
columns: ProFormColumnsType<T, ValueType>[];
}) | ({
layoutType: 'StepsForm';
columns: ProFormColumnsType<T, ValueType>[][];
} & StepsFormProps<T>);
/** ProForm 的特色 layout */
export type ProFormLayoutType = ProFormPropsType<any>['layoutType'];
export type FormFieldType = 'group' | 'formList' | 'formSet' | 'divider' | 'dependency';
export type ProFormColumnsType<T = any, ValueType = 'text'> = ProSchema<T, ExtraProColumnType & {
index?: number;
/**
* 每个表单占据的格子大小
*
* @param 总宽度 = span* colSize
* @param 默认为 1
*/
colSize?: number;
/** 是否只读模式 */
readonly?: boolean;
/** 搜索表单的默认值 */
initialValue?: any;
/**
* @name 获取时转化值,一般用于将数据格式化为组件接收的格式
* @param value 字段的值
* @param namePath 字段的name
* @returns 字段新的值
*
*
* @example a,b => [a,b] convertValue: (value,namePath)=> value.split(",")
* @example string => json convertValue: (value,namePath)=> JSON.parse(value)
* @example number => date convertValue: (value,namePath)=> Dayjs(value)
* @example YYYY-MM-DD => date convertValue: (value,namePath)=> Dayjs(value,"YYYY-MM-DD")
* @example string => object convertValue: (value,namePath)=> { return {value,label:value} }
*/
convertValue?: SearchConvertKeyFn;
/**
* @name 提交时转化值,一般用于将值转化为提交的数据
* @param value 字段的值
* @param namePath 字段的name
* @param allValues 所有的字段
* @returns 字段新的值,如果返回对象,会和所有值 merge 一次
*
* @example {name:[a,b] => {name:a,b } transform: (value,namePath,allValues)=> value.join(",")
* @example {name: string => { newName:string } transform: (value,namePath,allValues)=> { newName:value }
* @example {name:dayjs} => {name:string transform: (value,namePath,allValues)=> value.format("YYYY-MM-DD")
* @example {name:dayjs}=> {name:时间戳} transform: (value,namePath,allValues)=> value.valueOf()
* @example {name:{value,label}} => { name:string} transform: (value,namePath,allValues)=> value.value
* @example {name:{value,label}} => { valueName,labelName } transform: (value,namePath,allValues)=> { valueName:value.value, labelName:value.name }
*/
transform?: SearchTransformKeyFn;
/** Form 的排序 */
order?: number;
/** 嵌套子项 */
columns?: ProFormColumnsType<T, ValueType | FormFieldType>[] | ((values: any) => ProFormColumnsType<T, ValueType | FormFieldType>[]);
}, ProSchemaComponentTypes, ValueType | FormFieldType>;
export type FormSchema<T = Record<string, any>, ValueType = 'text'> = {
title?: React.ReactNode | ((schema: ProFormColumnsType<T, ValueType>, type: 'form', dom: React.ReactNode) => React.ReactNode);
description?: React.ReactNode;
steps?: StepFormProps[];
type?: any;
action?: React.MutableRefObject<ProCoreActionType | undefined>;
/**
* @default true
* Fine-grained control over when to update
*/
shouldUpdate?: boolean | ((newValues: T, oldValues?: T) => boolean);
} & Omit<FormProps<T>, 'onFinish'> & ProFormPropsType<T, ValueType> & CommonFormProps<T> & {
open?: boolean;
};
export type ProFormRenderValueTypeItem<T, ValueType> = {
label: any;
getFieldProps?: () => any;
getFormItemProps?: () => any;
} & ProFormColumnsType<T, ValueType>;
export type ProFormRenderValueTypeHelpers<T, ValueType> = {
originItem: ProFormColumnsType<T, ValueType>;
type: ProSchemaComponentTypes;
formRef: React.MutableRefObject<FormInstance<any> | undefined>;
genItems: (items: ProFormColumnsType<T, ValueType>[]) => React.ReactNode[];
} & Pick<FormSchema<T, ValueType>, 'action'>;
export type ItemType<T, ValueType> = Omit<ProFormRenderValueTypeItem<T, ValueType>, 'key'> & {
key?: React.Key | React.Key[];
};
export type ProSchemaRenderValueTypeFunction<T = any, ValueType = any> = (item: ItemType<T, ValueType>, helpers: ProFormRenderValueTypeHelpers<T, ValueType>) => React.ReactNode;

View File

@@ -0,0 +1 @@
export {};

View File

@@ -0,0 +1,2 @@
import type { ItemType, ProFormRenderValueTypeHelpers } from '../typing';
export declare const dependency: <DataType, ValueType>(item: ItemType<DataType, ValueType>, helpers: ProFormRenderValueTypeHelpers<DataType, ValueType>) => true | import("react/jsx-runtime").JSX.Element | null;

View File

@@ -0,0 +1,23 @@
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
import { noteOnce } from "rc-util/es/warning";
import ProFormDependency from "../../Dependency";
import { createElement as _createElement } from "react";
export var dependency = function dependency(item, helpers) {
/** ProFormDependency */
if (item.valueType === 'dependency') {
var _item$getFieldProps, _item$name, _item$name2;
var fieldProps = (_item$getFieldProps = item.getFieldProps) === null || _item$getFieldProps === void 0 ? void 0 : _item$getFieldProps.call(item);
noteOnce(Array.isArray((_item$name = item.name) !== null && _item$name !== void 0 ? _item$name : fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.name), 'SchemaForm: fieldProps.name should be NamePath[] when valueType is "dependency"');
noteOnce(typeof item.columns === 'function', 'SchemaForm: columns should be a function when valueType is "dependency"');
if (!Array.isArray((_item$name2 = item.name) !== null && _item$name2 !== void 0 ? _item$name2 : fieldProps === null || fieldProps === void 0 ? void 0 : fieldProps.name)) return null;
return /*#__PURE__*/_createElement(ProFormDependency, _objectSpread(_objectSpread({
name: item.name
}, fieldProps), {}, {
key: item.key
}), function (values) {
if (!item.columns || typeof item.columns !== 'function') return null;
return helpers.genItems(item.columns(values));
});
}
return true;
};

View File

@@ -0,0 +1,2 @@
import type { ItemType } from '../typing';
export declare const divider: <DataType, ValueType = "divider">(item: ItemType<DataType, ValueType>) => true | import("react/jsx-runtime").JSX.Element;

View File

@@ -0,0 +1,13 @@
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
import { Divider } from 'antd';
import { createElement as _createElement } from "react";
export var divider = function divider(item) {
/** 分割线 */
if (item.valueType === 'divider') {
var _item$getFieldProps;
return /*#__PURE__*/_createElement(Divider, _objectSpread(_objectSpread({}, (_item$getFieldProps = item.getFieldProps) === null || _item$getFieldProps === void 0 ? void 0 : _item$getFieldProps.call(item)), {}, {
key: item.key
}));
}
return true;
};

View File

@@ -0,0 +1,2 @@
import type { ProSchemaRenderValueTypeFunction } from '../typing';
export declare const field: ProSchemaRenderValueTypeFunction<any, any>;

View File

@@ -0,0 +1,72 @@
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
var _excluded = ["key"];
import { omitUndefined } from '@ant-design/pro-utils';
import omit from "rc-util/es/omit";
import React from 'react';
import ProFormDependency from "../../Dependency";
import ProFormField from "../../Field";
import { jsx as _jsx } from "react/jsx-runtime";
import { createElement as _createElement } from "react";
export var field = function field(item, _ref) {
var action = _ref.action,
formRef = _ref.formRef,
type = _ref.type,
originItem = _ref.originItem;
/** 公用的 类型 props */
var formFieldProps = _objectSpread(_objectSpread({}, omit(item, ['dataIndex', 'width', 'render', 'renderFormItem', 'renderText', 'title'])), {}, {
name: item.name || item.key || item.dataIndex,
width: item.width,
render: item !== null && item !== void 0 && item.render ? function (dom, entity, renderIndex) {
var _item$render, _item$key, _item$getFormItemProp, _item$getFieldProps;
return item === null || item === void 0 || (_item$render = item.render) === null || _item$render === void 0 ? void 0 : _item$render.call(item, dom, entity, renderIndex, action === null || action === void 0 ? void 0 : action.current, _objectSpread(_objectSpread({
type: type
}, item), {}, {
key: (_item$key = item.key) === null || _item$key === void 0 ? void 0 : _item$key.toString(),
formItemProps: (_item$getFormItemProp = item.getFormItemProps) === null || _item$getFormItemProp === void 0 ? void 0 : _item$getFormItemProp.call(item),
fieldProps: (_item$getFieldProps = item.getFieldProps) === null || _item$getFieldProps === void 0 ? void 0 : _item$getFieldProps.call(item)
}));
} : undefined
});
var defaultRender = function defaultRender() {
var key = formFieldProps.key,
rest = _objectWithoutProperties(formFieldProps, _excluded);
return /*#__PURE__*/_jsx(ProFormField, _objectSpread(_objectSpread({}, rest), {}, {
ignoreFormItem: true
}), key);
};
var renderFormItem = item !== null && item !== void 0 && item.renderFormItem ? function (_, config) {
var _item$renderFormItem, _item$key2, _item$getFormItemProp2, _item$getFieldProps2;
var renderConfig = omitUndefined(_objectSpread(_objectSpread({}, config), {}, {
onChange: undefined
}));
return item === null || item === void 0 || (_item$renderFormItem = item.renderFormItem) === null || _item$renderFormItem === void 0 ? void 0 : _item$renderFormItem.call(item, _objectSpread(_objectSpread({
type: type
}, item), {}, {
key: (_item$key2 = item.key) === null || _item$key2 === void 0 ? void 0 : _item$key2.toString(),
formItemProps: (_item$getFormItemProp2 = item.getFormItemProps) === null || _item$getFormItemProp2 === void 0 ? void 0 : _item$getFormItemProp2.call(item),
fieldProps: (_item$getFieldProps2 = item.getFieldProps) === null || _item$getFieldProps2 === void 0 ? void 0 : _item$getFieldProps2.call(item),
originProps: originItem
}), _objectSpread(_objectSpread({}, renderConfig), {}, {
defaultRender: defaultRender,
type: type
}), formRef.current);
} : undefined;
var getField = function getField() {
if (item !== null && item !== void 0 && item.renderFormItem) {
var dom = renderFormItem === null || renderFormItem === void 0 ? void 0 : renderFormItem(null, {});
if (!dom || item.ignoreFormItem) return dom;
}
return /*#__PURE__*/_createElement(ProFormField, _objectSpread(_objectSpread({}, formFieldProps), {}, {
key: [item.key, item.index || 0].join('-'),
renderFormItem: renderFormItem
}));
};
if (item.dependencies) {
return /*#__PURE__*/_jsx(ProFormDependency, {
name: item.dependencies || [],
children: getField
}, item.key);
}
return getField();
};

View File

@@ -0,0 +1,2 @@
import type { ProSchemaRenderValueTypeFunction } from '../typing';
export declare const formList: ProSchemaRenderValueTypeFunction;

View File

@@ -0,0 +1,19 @@
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
import { ProFormList } from "../../List";
import { createElement as _createElement } from "react";
export var formList = function formList(item, _ref) {
var genItems = _ref.genItems;
if (item.valueType === 'formList' && item.dataIndex) {
var _item$getFormItemProp, _item$getFieldProps;
if (!item.columns || !Array.isArray(item.columns)) return null;
return /*#__PURE__*/_createElement(ProFormList, _objectSpread(_objectSpread({}, (_item$getFormItemProp = item.getFormItemProps) === null || _item$getFormItemProp === void 0 ? void 0 : _item$getFormItemProp.call(item)), {}, {
key: item.key,
name: item.dataIndex,
label: item.label,
initialValue: item.initialValue,
colProps: item.colProps,
rowProps: item.rowProps
}, (_item$getFieldProps = item.getFieldProps) === null || _item$getFieldProps === void 0 ? void 0 : _item$getFieldProps.call(item)), genItems(item.columns));
}
return true;
};

View File

@@ -0,0 +1,2 @@
import type { ProSchemaRenderValueTypeFunction } from '../typing';
export declare const formSet: ProSchemaRenderValueTypeFunction;

View File

@@ -0,0 +1,19 @@
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
import ProFormFieldSet from "../../FieldSet";
import { createElement as _createElement } from "react";
export var formSet = function formSet(item, _ref) {
var genItems = _ref.genItems;
if (item.valueType === 'formSet' && item.dataIndex) {
var _item$getFormItemProp, _item$getFieldProps;
if (!item.columns || !Array.isArray(item.columns)) return null;
return /*#__PURE__*/_createElement(ProFormFieldSet, _objectSpread(_objectSpread({}, (_item$getFormItemProp = item.getFormItemProps) === null || _item$getFormItemProp === void 0 ? void 0 : _item$getFormItemProp.call(item)), {}, {
key: item.key,
initialValue: item.initialValue,
name: item.dataIndex,
label: item.label,
colProps: item.colProps,
rowProps: item.rowProps
}, (_item$getFieldProps = item.getFieldProps) === null || _item$getFieldProps === void 0 ? void 0 : _item$getFieldProps.call(item)), genItems(item.columns));
}
return true;
};

View File

@@ -0,0 +1,2 @@
import type { ProSchemaRenderValueTypeFunction } from '../typing';
export declare const group: ProSchemaRenderValueTypeFunction;

View File

@@ -0,0 +1,18 @@
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
import { ProFormGroup } from "../../../layouts";
import { jsx as _jsx } from "react/jsx-runtime";
export var group = function group(item, _ref) {
var genItems = _ref.genItems;
if (item.valueType === 'group') {
var _item$getFieldProps;
if (!item.columns || !Array.isArray(item.columns)) return null;
return /*#__PURE__*/_jsx(ProFormGroup, _objectSpread(_objectSpread({
label: item.label,
colProps: item.colProps,
rowProps: item.rowProps
}, (_item$getFieldProps = item.getFieldProps) === null || _item$getFieldProps === void 0 ? void 0 : _item$getFieldProps.call(item)), {}, {
children: genItems(item.columns)
}), item.key);
}
return true;
};

View File

@@ -0,0 +1,2 @@
import type { ProSchemaRenderValueTypeFunction } from '../typing';
export declare const ignore: ProSchemaRenderValueTypeFunction;

View File

@@ -0,0 +1,7 @@
export var ignore = function ignore(item) {
// 几种特殊的 value 不处理
if (item.valueType && typeof item.valueType === 'string' && ['index', 'indexBorder', 'option'].includes(item === null || item === void 0 ? void 0 : item.valueType)) {
return null;
}
return true;
};

View File

@@ -0,0 +1,3 @@
/// <reference types="react" />
import type { ItemType, ProFormRenderValueTypeHelpers } from '../typing';
export declare const renderValueType: <DataType, ValueType>(item: ItemType<DataType, ValueType>, helpers: ProFormRenderValueTypeHelpers<DataType, ValueType>) => import("react").ReactNode;

View File

@@ -0,0 +1,30 @@
import { dependency } from "./dependency";
import { divider } from "./divider";
import { field } from "./field";
import { formList } from "./formList";
import { formSet } from "./formSet";
import { group } from "./group";
import { ignore } from "./ignore";
// 按照数组顺序执行
var tasks = [ignore, group, formList, formSet, divider, dependency];
export var renderValueType = function renderValueType(item, helpers) {
for (var cur = 0; cur < tasks.length; cur++) {
var task = tasks[cur];
var dom = task(item, helpers);
// False 不再遍历
// if (dom === false) {
// return false;
if (dom === true) {
// True 继续下一次
continue;
} else {
// Other Is Dom
return dom;
}
}
// 最后执行
return field(item, helpers);
};