@schema-render/form-render-react
Version:
Out-of-the-box form rendering library based on Core and Antd.
50 lines (49 loc) • 1.54 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { useMemoizedFn, utils } from "@schema-render/core-react";
import { Input } from "antd";
import React, { useMemo } from "react";
import Description from "../components/Description";
/**
* 编辑与禁用态组件
*/ const InputText = ({ schema, disabled, value, onChange, validator, locale })=>{
const { validateOnBlur, ...restProps } = schema.renderOptions || {};
const placeholder = useMemo(()=>utils.templateCompiled(locale.FormRender.placeholderInput, {
title: schema.title
}), [
schema.title,
locale.FormRender.placeholderInput
]);
const handleChange = useMemoizedFn((e)=>{
const val = e.target.value;
/* istanbul ignore else */ if (val !== value) {
onChange(val, {
triggerValidator: !validateOnBlur
});
}
});
const handleBlur = useMemoizedFn(()=>{
onChange(value, {
triggerValidator: true
});
});
return /*#__PURE__*/ _jsx(Input, {
placeholder: placeholder,
...restProps,
status: validator.status,
value: value ?? '',
onChange: handleChange,
onBlur: validateOnBlur ? handleBlur : undefined,
disabled: disabled
});
};
/**
* 只读态组件
*/ const ReadonlyInputText = ({ value })=>{
return /*#__PURE__*/ _jsx(Description, {
children: value
});
};
export default {
component: InputText,
readonlyComponent: ReadonlyInputText
};