@schema-render/form-render-react
Version:
Out-of-the-box form rendering library based on Core and Antd.
45 lines (44 loc) • 1.58 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { utils } from "@schema-render/core-react";
import { Select as AntSelect } from "antd";
import React, { useMemo } from "react";
import Description from "../components/Description";
import { getOptionsLabels } from "../utils";
/**
* 编辑与禁用态组件
*/ const Select = ({ schema, disabled, value, onChange, locale, validator })=>{
const placeholder = useMemo(()=>utils.templateCompiled(locale.FormRender.placeholderSelect, {
title: schema.title
}), [
schema.title,
locale.FormRender.placeholderSelect
]);
return /*#__PURE__*/ _jsx(AntSelect, {
allowClear: true,
style: {
width: '100%'
},
placeholder: placeholder,
...schema.renderOptions,
status: validator.status,
mode: undefined,
value: value ?? null,
onChange: (val)=>onChange(val),
disabled: disabled
});
};
/**
* 只读态组件
*/ const ReadonlySelect = ({ schema, value, locale })=>{
var _schema_renderOptions, _locale_FormRender;
const labels = getOptionsLabels((_schema_renderOptions = schema.renderOptions) === null || _schema_renderOptions === void 0 ? void 0 : _schema_renderOptions.options, [
value
]);
return /*#__PURE__*/ _jsx(Description, {
children: labels.join((_locale_FormRender = locale.FormRender) === null || _locale_FormRender === void 0 ? void 0 : _locale_FormRender.comma)
});
};
export default {
component: Select,
readonlyComponent: ReadonlySelect
};