2019-10-19 16:38:07 +02:00
|
|
|
import * as React from 'react';
|
|
|
|
|
import classNames from 'classnames';
|
2019-02-01 10:02:19 +01:00
|
|
|
|
|
|
|
|
type Props = {
|
2019-10-19 16:38:07 +02:00
|
|
|
title: string;
|
|
|
|
|
closeFunction: () => void;
|
|
|
|
|
body: any;
|
|
|
|
|
footer?: any;
|
|
|
|
|
active: boolean;
|
|
|
|
|
className?: string;
|
|
|
|
|
headColor: string;
|
2019-02-01 10:02:19 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class Modal extends React.Component<Props> {
|
2019-09-17 17:47:41 +02:00
|
|
|
static defaultProps = {
|
2019-10-19 16:38:07 +02:00
|
|
|
headColor: 'light',
|
2019-09-17 17:47:41 +02:00
|
|
|
};
|
|
|
|
|
|
2019-02-01 10:02:19 +01:00
|
|
|
render() {
|
2019-09-23 14:16:28 +02:00
|
|
|
const {
|
|
|
|
|
title,
|
|
|
|
|
closeFunction,
|
|
|
|
|
body,
|
|
|
|
|
footer,
|
|
|
|
|
active,
|
|
|
|
|
className,
|
2019-10-19 16:38:07 +02:00
|
|
|
headColor,
|
2019-09-23 14:16:28 +02:00
|
|
|
} = this.props;
|
2019-02-01 10:02:19 +01:00
|
|
|
|
2019-10-19 16:38:07 +02:00
|
|
|
const isActive = active ? 'is-active' : null;
|
2019-02-01 10:02:19 +01:00
|
|
|
|
2019-02-07 13:53:15 +01:00
|
|
|
let showFooter = null;
|
|
|
|
|
if (footer) {
|
|
|
|
|
showFooter = <footer className="modal-card-foot">{footer}</footer>;
|
|
|
|
|
}
|
|
|
|
|
|
2019-02-01 10:02:19 +01:00
|
|
|
return (
|
2019-10-19 16:38:07 +02:00
|
|
|
<div className={classNames('modal', className, isActive)}>
|
2019-02-01 10:02:19 +01:00
|
|
|
<div className="modal-background" />
|
2019-02-19 15:57:54 +01:00
|
|
|
<div className="modal-card">
|
2019-09-23 14:16:28 +02:00
|
|
|
<header
|
|
|
|
|
className={classNames(
|
2019-10-19 16:38:07 +02:00
|
|
|
'modal-card-head',
|
|
|
|
|
`has-background-${headColor}`,
|
2019-09-23 14:16:28 +02:00
|
|
|
)}
|
|
|
|
|
>
|
2019-09-04 10:02:25 +02:00
|
|
|
<p className="modal-card-title is-marginless">{title}</p>
|
2019-02-01 10:43:11 +01:00
|
|
|
<button
|
|
|
|
|
className="delete"
|
|
|
|
|
aria-label="close"
|
|
|
|
|
onClick={closeFunction}
|
|
|
|
|
/>
|
2019-02-01 10:02:19 +01:00
|
|
|
</header>
|
2019-02-07 13:53:15 +01:00
|
|
|
<section className="modal-card-body">{body}</section>
|
|
|
|
|
{showFooter}
|
2019-02-01 10:02:19 +01:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2019-02-19 15:57:54 +01:00
|
|
|
export default Modal;
|