* fix(tracker): fix assist typings * fix(tracker): fix assist typings * change(ui) - preferences - removed old * change(ui) - preferences - wip * change(ui) - preferences - list * change(ui) - right box mardings * change(ui) - preferences - integration item paddings * change(ui) - preferences - integration icons * change(ui) - preferences - integration icons * change(ui) - preferences - integration - check status * change(ui) - preferences - integration - check status * change(ui) - preferences - metadata - move the delete button inside the modal * change(ui) - preferences - webhooks - modal and delete btn changes * change(ui) - preferences - modalContext updates * change(ui) - input field forward refs * change(ui) - metadata - modal * change(ui) - metadata - set deleting item to null * change(ui) - integrations * change(ui) - hoc withcopy * change(ui) - projects * change(ui) - users list modal * change(ui) - projects remove border for the last * change(ui) - integrations new api changes * change(ui) - github and jira changes * change(ui) - github and jira changes Co-authored-by: sylenien <nikita@openreplay.com>
63 lines
1.5 KiB
TypeScript
63 lines
1.5 KiB
TypeScript
//@ts-nocheck
|
|
import React, { Component, createContext } from 'react';
|
|
import Modal from './Modal';
|
|
|
|
const ModalContext = createContext({
|
|
component: null,
|
|
props: {
|
|
right: true,
|
|
onClose: () => {},
|
|
},
|
|
showModal: (component: any, props: any) => {},
|
|
hideModal: () => {},
|
|
});
|
|
|
|
export class ModalProvider extends Component {
|
|
handleKeyDown = (e: any) => {
|
|
if (e.keyCode === 27) {
|
|
this.hideModal();
|
|
}
|
|
};
|
|
|
|
showModal = (component, props = { right: true }) => {
|
|
this.setState({
|
|
component,
|
|
props,
|
|
});
|
|
document.addEventListener('keydown', this.handleKeyDown);
|
|
document.querySelector('body').style.overflow = 'hidden';
|
|
};
|
|
|
|
hideModal = () => {
|
|
document.removeEventListener('keydown', this.handleKeyDown);
|
|
document.querySelector('body').style.overflow = 'visible';
|
|
const { props } = this.state;
|
|
if (props.onClose) {
|
|
props.onClose();
|
|
}
|
|
this.setState({
|
|
component: null,
|
|
props: {},
|
|
});
|
|
};
|
|
|
|
state = {
|
|
component: null,
|
|
props: {},
|
|
showModal: this.showModal,
|
|
hideModal: this.hideModal,
|
|
};
|
|
|
|
render() {
|
|
return (
|
|
<ModalContext.Provider value={this.state}>
|
|
<Modal {...this.state} />
|
|
{this.props.children}
|
|
</ModalContext.Provider>
|
|
);
|
|
}
|
|
}
|
|
|
|
export const ModalConsumer = ModalContext.Consumer;
|
|
|
|
export const useModal = () => React.useContext(ModalContext);
|