lobe-chat

Форк
0
/
createModalHooks.ts 
46 строк · 1.1 Кб
1
import { App } from 'antd';
2
import { ModalFuncProps } from 'antd/es/modal/interface';
3
import { MutableRefObject, ReactNode, useRef } from 'react';
4

5
import { closeIcon, useStyles } from './style';
6

7
interface CreateModalProps extends ModalFuncProps {
8
  content: ReactNode;
9
}
10

11
interface ModalInstance {
12
  destroy: (...args: any[]) => void;
13
}
14

15
type PropsFunc<T = undefined> = (
16
  instance: MutableRefObject<ModalInstance | undefined>,
17
  props?: T,
18
) => CreateModalProps;
19

20
const createModal = <T>(params: CreateModalProps | PropsFunc<T>) => {
21
  const useModal = () => {
22
    const { styles } = useStyles();
23
    const { modal } = App.useApp();
24
    const instanceRef = useRef<ModalInstance>();
25

26
    const open = (outProps?: T) => {
27
      const props = typeof params === 'function' ? params(instanceRef, outProps) : params;
28

29
      instanceRef.current = modal.confirm({
30
        className: styles.content,
31
        closable: true,
32
        closeIcon,
33
        footer: false,
34
        icon: null,
35
        wrapClassName: styles.wrap,
36
        ...props,
37
      });
38
    };
39

40
    return { open };
41
  };
42

43
  return useModal;
44
};
45

46
export { createModal };
47

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.