Files
grafana/public/app/features/org/SelectOrgPage.tsx
Ashley Harrison 47f8717149 React: Use new JSX transform (#88802)
* update eslint, tsconfig + esbuild to handle new jsx transform

* remove thing that breaks the new jsx transform

* remove react imports

* adjust grafana-icons build

* is this the correct syntax?

* try this

* well this was much easier than expected...

* change grafana-plugin-configs webpack config

* fixes

* fix lockfile

* fix 2 more violations

* use path.resolve instead of require.resolve

* remove react import

* fix react imports

* more fixes

* remove React import

* remove import React from docs

* remove another react import
2024-06-25 12:43:47 +01:00

70 lines
1.8 KiB
TypeScript

import { connect, ConnectedProps } from 'react-redux';
import { useEffectOnce } from 'react-use';
import { config } from '@grafana/runtime';
import { Button, Stack } from '@grafana/ui';
import { Page } from 'app/core/components/Page/Page';
import { StoreState, UserOrg } from 'app/types';
import { getUserOrganizations, setUserOrganization } from './state/actions';
const navModel = {
main: {
icon: 'grafana' as const,
subTitle: 'Preferences',
text: 'Select active organization',
},
node: {
text: 'Select active organization',
},
};
const mapStateToProps = (state: StoreState) => {
return {
userOrgs: state.organization.userOrgs,
};
};
const mapDispatchToProps = {
setUserOrganization,
getUserOrganizations,
};
const connector = connect(mapStateToProps, mapDispatchToProps);
type Props = ConnectedProps<typeof connector>;
export const SelectOrgPage = ({ setUserOrganization, getUserOrganizations, userOrgs }: Props) => {
const setUserOrg = async (org: UserOrg) => {
await setUserOrganization(org.orgId);
window.location.href = config.appSubUrl + '/';
};
useEffectOnce(() => {
getUserOrganizations();
});
return (
<Page navModel={navModel}>
<Page.Contents>
<div>
<p>
You have been invited to another organization! Please select which organization that you want to use right
now. You can change this later at any time.
</p>
<Stack wrap="wrap">
{userOrgs &&
userOrgs.map((org) => (
<Button key={org.orgId} icon="signin" onClick={() => setUserOrg(org)}>
{org.name}
</Button>
))}
</Stack>
</div>
</Page.Contents>
</Page>
);
};
export default connector(SelectOrgPage);