mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-12 16:35:45 +01:00
63 lines
1.3 KiB
TypeScript
63 lines
1.3 KiB
TypeScript
import * as React from 'react';
|
|
import classNames from 'classnames';
|
|
|
|
type Props = {
|
|
title: string;
|
|
closeFunction: () => void;
|
|
body: any;
|
|
footer?: any;
|
|
active: boolean;
|
|
className?: string;
|
|
headColor: string;
|
|
};
|
|
|
|
class Modal extends React.Component<Props> {
|
|
static defaultProps = {
|
|
headColor: 'light',
|
|
};
|
|
|
|
render() {
|
|
const {
|
|
title,
|
|
closeFunction,
|
|
body,
|
|
footer,
|
|
active,
|
|
className,
|
|
headColor,
|
|
} = this.props;
|
|
|
|
const isActive = active ? 'is-active' : null;
|
|
|
|
let showFooter = null;
|
|
if (footer) {
|
|
showFooter = <footer className="modal-card-foot">{footer}</footer>;
|
|
}
|
|
|
|
return (
|
|
<div className={classNames('modal', className, isActive)}>
|
|
<div className="modal-background" />
|
|
<div className="modal-card">
|
|
<header
|
|
className={classNames(
|
|
'modal-card-head',
|
|
`has-background-${headColor}`,
|
|
)}
|
|
>
|
|
<p className="modal-card-title is-marginless">{title}</p>
|
|
<button
|
|
className="delete"
|
|
aria-label="close"
|
|
onClick={closeFunction}
|
|
/>
|
|
</header>
|
|
<section className="modal-card-body">{body}</section>
|
|
{showFooter}
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|
|
}
|
|
|
|
export default Modal;
|