UNPKG

@schema-render/form-render-react

Version:

Out-of-the-box form rendering library based on Core and Antd.

50 lines (49 loc) 1.8 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { useMemoizedFn, 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 SelectMultiple = ({ schema, disabled, value, onChange, validator, locale })=>{ const placeholder = useMemo(()=>utils.templateCompiled(locale.FormRender.placeholderSelect, { title: schema.title }), [ schema.title, locale.FormRender.placeholderSelect ]); const handleChange = useMemoizedFn((selectedValues, options)=>{ onChange(selectedValues, { extra: { selectedOptions: options } }); }); return /*#__PURE__*/ _jsx(AntSelect, { allowClear: true, style: { width: '100%' }, placeholder: placeholder, ...schema.renderOptions, status: validator.status, mode: "multiple", value: value, onChange: handleChange, disabled: disabled }); }; /** * 只读态组件 */ const ReadonlySelectMultiple = ({ 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: SelectMultiple, readonlyComponent: ReadonlySelectMultiple };