import React from 'react' import { Cascader } from 'antd' import { isArray, run } from '@fexd/tools' import { Hook } from '@fexd/pro-utils' import useLocales from '../../locales' import { defineTypes, ProFormValueTypeMapConfig } from '../types-define' import RemoteOptionsView from './RemoteOptionsView' import RemoteCascaderView from './RemoteCascaderView' import RemoteSelect from './RemoteSelect' import RemoteTreeSelect from './RemoteTreeSelect' import useModalSelect from './useModalSelect' const types = defineTypes({ // 下拉框 select: { renderField: ({ fieldProps: props = {} } = {}) => ( ), renderView: (value, config = {}) => ( ), }, // 下拉框 multipleSelect: { renderField: ({ fieldProps: props = {} } = {}) => ( ), renderView: (value, config = {}) => ( ), }, // 树形下拉框 treeSelect: { renderField: ({ fieldProps: props = {} } = {}) => , renderView: (value, config = {}) => ( ), }, // 树形下拉框 multipleTreeSelect: { renderField: ({ fieldProps: props = {} } = {}) => , renderView: (value, config = {}) => ( ), }, // 级联选择器 cascader: { renderField: ({ fieldProps: props = {} } = {}) => ( {(props) => { const { t } = useLocales(({ t }) => [t]) return }} ), renderView: (value, config = {}) => ( ), }, // 弹窗单选框 modalSelect: { renderField: ({ fieldProps: props = {}, field, modalStationId } = {}) => ( {({ getModalConfig, ...props } = {}) => { const { props: modalSelectProps, options, destroy, } = useModalSelect({ value: props?.value, getModalConfig, onChange: props?.onChange, modalStationId, initialOptions: props?.options, }) const mergedProps = { ...modalSelectProps, ...props, } return ( { run(destroy) run(mergedProps, 'onClear', ...args) }} options={[...(isArray(props?.options) ? props?.options : []), ...options]} /> ) }} ), renderView: (value, config = {}) => ( ), }, // 弹窗多选框 modalMultipleSelect: { renderField: ({ fieldProps: props = {}, field, modalStationId } = {}) => ( {({ getModalConfig, ...props }) => { const { props: modalSelectProps, options, destroy, } = useModalSelect({ value: props?.value, getModalConfig, onChange: props?.onChange, modalStationId, multiple: true, initialOptions: props?.options, }) const mergedProps = { ...modalSelectProps, ...props, } return ( { run(destroy) run(mergedProps, 'onClear', ...args) }} options={[...(isArray(props?.options) ? props?.options : []), ...options]} /> ) }} ), renderView: (value, config = {}) => ( ), }, }) export default types export { default as RemoteOptionsView } from './RemoteOptionsView' export { default as RemoteCascaderView } from './RemoteCascaderView' export { default as RemoteSelect } from './RemoteSelect' export { default as RemoteTreeSelect } from './RemoteTreeSelect' export * from './RemoteTreeSelect'