/
ModalCore.tsx
40 lines (33 loc) · 1.02 KB
/
ModalCore.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import * as React from 'react';
import * as ReactModal from 'react-modal';
import {
withClassDefault,
withClassModifier,
WithClassModifierOptions,
compose,
} from '@axa-fr/react-toolkit-core';
const DEFAULT_CLASSNAME = 'af-modal';
ReactModal.setAppElement('body');
interface ModalCoreComponentProps {
isOpen: boolean;
onOutsideTap: (event: MouseEvent | KeyboardEvent) => void;
className?: string;
}
const ModalCoreRaw: React.SFC<ModalCoreComponentProps> = props => (
<ReactModal
className={props.className}
isOpen={props.isOpen}
onRequestClose={props.onOutsideTap}>
<div className="af-modal__dialog">
<div className="af-modal__content">{props.children}</div>
</div>
</ReactModal>
);
export type ModalCoreProps = ModalCoreComponentProps & WithClassModifierOptions;
const enhance = compose<ModalCoreComponentProps, ModalCoreProps>(
withClassDefault(DEFAULT_CLASSNAME),
withClassModifier
);
const Enhanced = enhance(ModalCoreRaw);
Enhanced.displayName = 'ModalCore';
export default Enhanced;