2019-02-01 10:02:19 +01:00
|
|
|
// @flow
|
|
|
|
|
import * as React from "react";
|
|
|
|
|
import classNames from "classnames";
|
|
|
|
|
|
|
|
|
|
type Props = {
|
|
|
|
|
title: string,
|
2019-02-01 10:43:11 +01:00
|
|
|
closeFunction: () => void,
|
2019-02-01 10:02:19 +01:00
|
|
|
body: any,
|
2019-02-07 13:53:15 +01:00
|
|
|
footer?: any,
|
2019-02-01 10:39:41 +01:00
|
|
|
active: boolean,
|
2019-09-17 17:47:41 +02:00
|
|
|
className?: string,
|
2019-09-19 11:31:56 +02:00
|
|
|
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 = {
|
|
|
|
|
headColor: "light"
|
|
|
|
|
};
|
|
|
|
|
|
2019-02-01 10:02:19 +01:00
|
|
|
render() {
|
2019-09-17 17:47:41 +02:00
|
|
|
const { title, closeFunction, body, footer, active, className, headColor } = this.props;
|
2019-02-01 10:02:19 +01:00
|
|
|
|
|
|
|
|
const isActive = active ? "is-active" : null;
|
|
|
|
|
|
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-09-12 12:55:10 +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-17 17:47:41 +02:00
|
|
|
<header className={classNames("modal-card-head", `has-background-${headColor}`)}>
|
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;
|