53 lines
941 B
JavaScript
53 lines
941 B
JavaScript
|
import './style.scss';
|
||
|
|
||
|
import classnames from 'classnames/dedupe';
|
||
|
|
||
|
import { Button, Modal } from '@wordpress/components';
|
||
|
import { Component } from '@wordpress/element';
|
||
|
|
||
|
/**
|
||
|
* Component Class
|
||
|
*/
|
||
|
export default class ToggleModal extends Component {
|
||
|
constructor(...args) {
|
||
|
super(...args);
|
||
|
|
||
|
this.state = {
|
||
|
isOpened: false,
|
||
|
};
|
||
|
}
|
||
|
|
||
|
render() {
|
||
|
const { children, modalTitle, buttonLabel, size } = this.props;
|
||
|
|
||
|
const { isOpened } = this.state;
|
||
|
|
||
|
return (
|
||
|
<>
|
||
|
<Button
|
||
|
isSecondary
|
||
|
onClick={() => this.setState({ isOpened: !isOpened })}
|
||
|
>
|
||
|
{buttonLabel}
|
||
|
</Button>
|
||
|
{isOpened ? (
|
||
|
<Modal
|
||
|
title={modalTitle}
|
||
|
onRequestClose={() =>
|
||
|
this.setState({ isOpened: !isOpened })
|
||
|
}
|
||
|
className={classnames(
|
||
|
'vpf-component-modal',
|
||
|
size ? `vpf-component-modal-size-${size}` : ''
|
||
|
)}
|
||
|
>
|
||
|
{children}
|
||
|
</Modal>
|
||
|
) : (
|
||
|
''
|
||
|
)}
|
||
|
</>
|
||
|
);
|
||
|
}
|
||
|
}
|