UNPKG

@grafana/ui

Version:
1 lines 2.11 kB
{"version":3,"file":"ModalsContext.mjs","sources":["../../../../src/components/Modal/ModalsContext.tsx"],"sourcesContent":["import { Component } from 'react';\nimport * as React from 'react';\n\nexport interface ModalsContextState {\n component: React.ComponentType<any> | null;\n props: any;\n showModal: <T>(component: React.ComponentType<T>, props: T) => void;\n hideModal: () => void;\n}\n\nexport const ModalsContext = React.createContext<ModalsContextState>({\n component: null,\n props: {},\n showModal: () => {},\n hideModal: () => {},\n});\n\ninterface ModalsProviderProps {\n children: React.ReactNode;\n /** Set default component to render as modal. Useful when rendering modals from Angular */\n component?: React.ComponentType<any> | null;\n /** Set default component props. Useful when rendering modals from Angular */\n props?: any;\n}\n\n/**\n * @deprecated.\n * Not the real implementation used by core.\n */\nexport class ModalsProvider extends Component<ModalsProviderProps, ModalsContextState> {\n constructor(props: ModalsProviderProps) {\n super(props);\n this.state = {\n component: props.component || null,\n props: props.props || {},\n showModal: this.showModal,\n hideModal: this.hideModal,\n };\n }\n\n showModal = <T,>(component: React.ComponentType<T>, props: T) => {\n this.setState({\n component,\n props,\n });\n };\n\n hideModal = () => {\n this.setState({\n component: null,\n props: {},\n });\n };\n\n render() {\n return <ModalsContext.Provider value={this.state}>{this.props.children}</ModalsContext.Provider>;\n }\n}\n\nexport const ModalRoot = () => (\n <ModalsContext.Consumer>\n {({ component: Component, props }) => {\n return Component ? <Component {...props} /> : null;\n }}\n </ModalsContext.Consumer>\n);\n\nexport const ModalsController = ModalsContext.Consumer;\n"],"names":[],"mappings":";;;AAUa,MAAA,aAAA,GAAgB,MAAM,aAAkC,CAAA;AAAA,EACnE,SAAW,EAAA,IAAA;AAAA,EACX,OAAO,EAAC;AAAA,EACR,WAAW,MAAM;AAAA,GAAC;AAAA,EAClB,WAAW,MAAM;AAAA;AACnB,CAAC;AAoD+B,aAAc,CAAA;;;;"}