@flatbiz/antd
Version:
80 lines (77 loc) • 2.63 kB
TypeScript
import { TAny } from '@flatbiz/utils';
import { PopconfirmProps, SwitchProps } from 'antd';
export type SwitchConfirmWrapperValue = string | number | boolean;
export type SwitchConfirmWrapperProps = Omit<SwitchProps, "defaultChecked" | "onChange"> & {
value?: SwitchConfirmWrapperValue;
checkedValue: SwitchConfirmWrapperValue;
unCheckedValue: SwitchConfirmWrapperValue;
needConfirm?: "close" | "open" | "all" | "none";
noMessage?: boolean;
onChange?: (value: SwitchConfirmWrapperValue) => void;
popConfirmProps?: Pick<PopconfirmProps, "disabled" | "title" | "description"> | ((checked?: boolean) => Pick<PopconfirmProps, "disabled" | "title" | "description">);
serviceConfig?: {
onRequest: (value: SwitchConfirmWrapperValue) => TAny;
message?: {
success?: string;
defaultError?: string;
};
};
};
/**
*
* @description switch 切换时做二次pop提醒, 非可控组件【内部控制】
* @param props
* @param value
* @param checkedValue:选中状态值
* @param unCheckedValue:非选中状态值
* @param needConfirm:二次pop拦截时机 可不传
* close:switch 由开启转换成关闭时pop弹出
* open:switch 由开启转换成开启时pop弹出
* all:switch 一直pop
* none:switch 不弹出
* @param noMessage:不采用内置message提示
* @param onChange:switch 有效切换回掉
* @param popConfirmProps:popConfirm中参数 disabled title description
* @param serviceConfig onRequest
* @field onRequest 请求函数
* @field message message配置 success defaultError
* ```
* 1. 单独使用
* <SwitchConfirmWrapper
* value={value}
* checkedValue={'1'}
* unCheckedValue={'2'}
* serviceConfig={{
* onRequest: async () => {
* await sleep(2000);
* },
* }}
* needConfirm={'all'}
* popConfirmProps={{
* title: '确定要开启吗?',
* }}
* onChange={(value) => {
* setValue(value as string);
* }}
* />
*
* 2. 与Form.Item结合使用
* <Form.Item name="open">
* <SwitchConfirmWrapper
* checkedValue={'1'}
* unCheckedValue={'2'}
* serviceConfig={{
* onRequest: async () => {
* await sleep(2000);
* },
* }}
* needConfirm={'all'}
* popConfirmProps={{
* title: '确定要开启吗?',
* }}
* />
* </Form.Item>
* ```
*/
export declare const SwitchConfirmWrapper: (props: SwitchConfirmWrapperProps) => import("react").JSX.Element;
export {};