openreplay/frontend/app/components/Modal/index.tsx
Shekar Siri 0c0dd30a73
Preferences - UI and API improvements (#654)
* 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>
2022-08-04 12:21:25 +02:00

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);