Commit 4b9e9336 by Dominik Prokop

Added config provider to be able to access config easily from react components

parent 33fa40a1
import React from 'react';
import config, { Settings } from 'app/core/config';
import { GrafanaTheme } from '@grafana/ui';
export const ConfigContext = React.createContext<Settings>(config);
export const ConfigConsumer = ConfigContext.Consumer;
export const provideConfig = (component: React.ComponentType<any>) => {
const ConfigProvider = (props: any) => (
<ConfigContext.Provider value={config}>{React.createElement(component, { ...props })}</ConfigContext.Provider>
);
return ConfigProvider;
};
interface ThemeProviderProps {
children: (theme: GrafanaTheme) => JSX.Element;
}
export const ThemeProvider = ({ children }: ThemeProviderProps) => {
return (
<ConfigConsumer>
{({ bootData }) => {
return children(bootData.user.lightTheme ? GrafanaTheme.Light : GrafanaTheme.Dark);
}}
</ConfigConsumer>
);
};
import coreModule from 'app/core/core_module'; import coreModule from 'app/core/core_module';
import { provideConfig } from 'app/core/utils/ConfigProvider';
export function react2AngularDirective(name: string, component: any, options: any) { export function react2AngularDirective(name: string, component: any, options: any) {
coreModule.directive(name, [ coreModule.directive(name, [
'reactDirective', 'reactDirective',
reactDirective => { reactDirective => {
return reactDirective(component, options); return reactDirective(provideConfig(component), options);
}, },
]); ]);
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment