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'