import type { ReactElement, ReactNode } from 'react'; import { type ModalProps } from '../modal'; export interface BasePopupProps { allowClear?: boolean; disabled?: boolean; showLabel?: boolean; placeholder?: string; /** * @deprecated * 请使用beforeOpen */ disabledTip?: string; bordered?: boolean; /** * @description 是否仅作为受控的Modal使用 * 当作为modal使用,请不要传入onOk方法,通过open以及onCancel来控制Modal是否显示 */ modal?: boolean; /** * @description 受控open */ open?: boolean; readOnly?: boolean; /** * * @description 非modal模式,打开Modal之前 */ beforeOpen?: () => boolean | Promise; autoFocus?: boolean; onCancel?: () => void; onOpenChange?: (visible: boolean) => void; /** * 是否在完全关闭popup之后触发onChange, * @returns */ triggerChangeAfterClose?: boolean; onClick?: () => void; } export interface PopupProps extends BasePopupProps, Omit { value?: ValueType; onChange?: (value?: ValueType) => void; /** * @description 渲染函数,这个函数不是作为组件渲染的,偷懒可以直接传入组件,如果需要考虑优化参考demo的传入方式 */ component: (params: { value?: ValueType; onChange: (value: ValueType, closePopup?: boolean) => void; readOnly?: boolean; }) => ReactElement | null; formatLabel?: (value: ValueType) => string; /** * @deprecated */ beforeOk?: (value: ValueType) => ValueType | PromiseLike; /** * @description 确认事件之前校验 */ beforeOkCheck?: (value?: ValueType) => boolean | PromiseLike; children?: ReactElement | null | ((props: { value?: ValueType; disabled?: boolean; readOnly?: boolean; }) => ReactElement | null); /** * @description 清空后的值 */ emptyValue?: ValueType; renderFooter?: (params: { onOk: () => void; onCancel: () => void; }) => ReactNode; } interface ValuedPopupProps extends Omit, 'onChange' | 'emptyValue' | 'beforeOkCheck'> { onChange?: (value: ValueType) => void; emptyValue: ValueType; beforeOkCheck?: (value: ValueType) => boolean | PromiseLike; } declare function Popup(props: ValuedPopupProps): JSX.Element; declare function Popup(props: PopupProps): JSX.Element; export default Popup;