Changeset View
Changeset View
Standalone View
Standalone View
web/modals/modal.react.js
Show All 12 Lines | |||||
export type ModalSize = 'small' | 'large' | 'fit-content'; | export type ModalSize = 'small' | 'large' | 'fit-content'; | ||||
export type ModalOverridableProps = { | export type ModalOverridableProps = { | ||||
+name: string, | +name: string, | ||||
+icon?: Icon, | +icon?: Icon, | ||||
+onClose: () => void, | +onClose: () => void, | ||||
+withCloseButton?: boolean, | +withCloseButton?: boolean, | ||||
+transparent?: boolean, | |||||
+size?: ModalSize, | +size?: ModalSize, | ||||
+modalHeaderCentered?: boolean, | +modalHeaderCentered?: boolean, | ||||
}; | }; | ||||
type ModalProps = { | type ModalProps = { | ||||
...ModalOverridableProps, | ...ModalOverridableProps, | ||||
+children?: React.Node, | +children?: React.Node, | ||||
}; | }; | ||||
function Modal(props: ModalProps): React.Node { | function Modal(props: ModalProps): React.Node { | ||||
const { | const { | ||||
size = 'small', | size = 'small', | ||||
children, | children, | ||||
onClose, | onClose, | ||||
name, | name, | ||||
icon, | icon, | ||||
transparent = false, | |||||
withCloseButton = true, | withCloseButton = true, | ||||
modalHeaderCentered = false, | modalHeaderCentered = false, | ||||
} = props; | } = props; | ||||
const modalContainerClasses = classNames(css.modalContainer, { | const modalContainerClasses = classNames({ | ||||
[css.modalContainer]: transparent === false, | |||||
[css.modalContainerTransparent]: transparent === true, | |||||
[css.modalContainerLarge]: size === 'large', | [css.modalContainerLarge]: size === 'large', | ||||
[css.modalContainerSmall]: size === 'small', | [css.modalContainerSmall]: size === 'small', | ||||
}); | }); | ||||
const modalHeader = classNames({ | const modalHeader = classNames({ | ||||
[css.modalHeader]: true, | [css.modalHeader]: true, | ||||
[css.modalHeaderCentered]: modalHeaderCentered, | [css.modalHeaderCentered]: modalHeaderCentered, | ||||
}); | }); | ||||
Show All 36 Lines |