mirror of
https://github.com/jeffvli/feishin.git
synced 2026-06-23 20:37:42 +02:00
Add context modal
This commit is contained in:
@@ -5,6 +5,7 @@ import { ModalsProvider } from '@mantine/modals';
|
|||||||
import { NotificationsProvider } from '@mantine/notifications';
|
import { NotificationsProvider } from '@mantine/notifications';
|
||||||
import isElectron from 'is-electron';
|
import isElectron from 'is-electron';
|
||||||
import { BrowserRouter, HashRouter } from 'react-router-dom';
|
import { BrowserRouter, HashRouter } from 'react-router-dom';
|
||||||
|
import { BaseContextModal } from '@/renderer/components';
|
||||||
import { useDefaultSettings } from './features/settings';
|
import { useDefaultSettings } from './features/settings';
|
||||||
import { AppRouter } from './router/app-router';
|
import { AppRouter } from './router/app-router';
|
||||||
import './styles/global.scss';
|
import './styles/global.scss';
|
||||||
@@ -68,7 +69,7 @@ export const App = () => {
|
|||||||
}}
|
}}
|
||||||
transitionDuration={200}
|
transitionDuration={200}
|
||||||
>
|
>
|
||||||
<ModalsProvider>
|
<ModalsProvider modals={{ base: BaseContextModal }}>
|
||||||
<SelectRouter>
|
<SelectRouter>
|
||||||
<AppRouter />
|
<AppRouter />
|
||||||
</SelectRouter>
|
</SelectRouter>
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import {
|
|||||||
Modal as MantineModal,
|
Modal as MantineModal,
|
||||||
ModalProps as MantineModalProps,
|
ModalProps as MantineModalProps,
|
||||||
} from '@mantine/core';
|
} from '@mantine/core';
|
||||||
|
import { ContextModalProps } from '@mantine/modals';
|
||||||
|
|
||||||
export interface ModalProps extends Omit<MantineModalProps, 'onClose'> {
|
export interface ModalProps extends Omit<MantineModalProps, 'onClose'> {
|
||||||
children?: React.ReactNode;
|
children?: React.ReactNode;
|
||||||
@@ -26,6 +27,19 @@ export const Modal = ({ children, handlers, ...rest }: ModalProps) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type ContextModalVars = {
|
||||||
|
context: ContextModalProps['context'];
|
||||||
|
id: ContextModalProps['id'];
|
||||||
|
};
|
||||||
|
|
||||||
|
export const BaseContextModal = ({
|
||||||
|
context,
|
||||||
|
id,
|
||||||
|
innerProps,
|
||||||
|
}: ContextModalProps<{
|
||||||
|
modalBody: (vars: ContextModalVars) => React.ReactNode;
|
||||||
|
}>) => <>{innerProps.modalBody({ context, id })}</>;
|
||||||
|
|
||||||
Modal.defaultProps = {
|
Modal.defaultProps = {
|
||||||
children: undefined,
|
children: undefined,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user