UNPKG

@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
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 };