diff --git a/packages/grafana-ui/src/components/index.ts b/packages/grafana-ui/src/components/index.ts index da4aa2ea0e5..af4187a5d9a 100644 --- a/packages/grafana-ui/src/components/index.ts +++ b/packages/grafana-ui/src/components/index.ts @@ -23,6 +23,7 @@ export { UnitPicker } from './UnitPicker/UnitPicker'; export { StatsPicker } from './StatsPicker/StatsPicker'; export { RefreshPicker } from './RefreshPicker/RefreshPicker'; export { TimeRangePicker } from './TimePicker/TimeRangePicker'; +export { TimeZonePicker } from './TimePicker/TimeZonePicker'; export { TimeOfDayPicker } from './TimePicker/TimeOfDayPicker'; export { List } from './List/List'; export { TagsInput } from './TagsInput/TagsInput'; diff --git a/public/app/features/org/OrgDetailsPage.tsx b/public/app/features/org/OrgDetailsPage.tsx index 3bb83189309..6c4861bd663 100644 --- a/public/app/features/org/OrgDetailsPage.tsx +++ b/public/app/features/org/OrgDetailsPage.tsx @@ -10,6 +10,7 @@ import { loadOrganization, updateOrganization } from './state/actions'; import { Organization, StoreState } from 'app/types'; import { getNavModel } from 'app/core/selectors/navModel'; import { setOrganizationName } from './state/reducers'; +import { VerticalGroup } from '@grafana/ui'; export interface Props { navModel: NavModel; @@ -24,11 +25,8 @@ export class OrgDetailsPage extends PureComponent { await this.props.loadOrganization(); } - onOrgNameChange = (name: string) => { - this.props.setOrganizationName(name); - }; - - onUpdateOrganization = () => { + onUpdateOrganization = (orgName: string) => { + this.props.setOrganizationName(orgName); this.props.updateOrganization(); }; @@ -40,14 +38,10 @@ export class OrgDetailsPage extends PureComponent { {!isLoading && ( -
- this.onOrgNameChange(name)} - onSubmit={this.onUpdateOrganization} - orgName={organization.name} - /> + + -
+ )}
diff --git a/public/app/features/org/OrgProfile.test.tsx b/public/app/features/org/OrgProfile.test.tsx index d101eded13e..216beb001e4 100644 --- a/public/app/features/org/OrgProfile.test.tsx +++ b/public/app/features/org/OrgProfile.test.tsx @@ -6,7 +6,6 @@ const setup = () => { const props: Props = { orgName: 'Main org', onSubmit: jest.fn(), - onOrgNameChange: jest.fn(), }; return shallow(); diff --git a/public/app/features/org/OrgProfile.tsx b/public/app/features/org/OrgProfile.tsx index 165ad082202..e69be4342d6 100644 --- a/public/app/features/org/OrgProfile.tsx +++ b/public/app/features/org/OrgProfile.tsx @@ -1,43 +1,28 @@ -import React, { ChangeEvent, FC } from 'react'; -import { LegacyForms } from '@grafana/ui'; -const { Input } = LegacyForms; +import React, { FC } from 'react'; +import { Input, Field, FieldSet, Button, Form } from '@grafana/ui'; export interface Props { orgName: string; - onSubmit: () => void; - onOrgNameChange: (orgName: string) => void; + onSubmit: (orgName: string) => void; } -const OrgProfile: FC = ({ onSubmit, onOrgNameChange, orgName }) => { +interface FormDTO { + orgName: string; +} + +const OrgProfile: FC = ({ onSubmit, orgName }) => { return ( -
-

Organization profile

-
{ - event.preventDefault(); - onSubmit(); - }} - > -
-
- Organization name - ) => onOrgNameChange(event.target.value)} - value={orgName} - /> -
-
-
- -
-
-
+
onSubmit(orgName)}> + {({ register }) => ( +
+ + + + + +
+ )} +
); }; diff --git a/public/app/features/org/__snapshots__/OrgDetailsPage.test.tsx.snap b/public/app/features/org/__snapshots__/OrgDetailsPage.test.tsx.snap index 2339975ca8b..95b79ec31ad 100644 --- a/public/app/features/org/__snapshots__/OrgDetailsPage.test.tsx.snap +++ b/public/app/features/org/__snapshots__/OrgDetailsPage.test.tsx.snap @@ -35,16 +35,15 @@ exports[`Render should render organization and preferences 1`] = ` -
+ -
+
`; diff --git a/public/app/features/org/__snapshots__/OrgProfile.test.tsx.snap b/public/app/features/org/__snapshots__/OrgProfile.test.tsx.snap index 4a9ba6addf3..c6b257b3976 100644 --- a/public/app/features/org/__snapshots__/OrgProfile.test.tsx.snap +++ b/public/app/features/org/__snapshots__/OrgProfile.test.tsx.snap @@ -1,46 +1,14 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Render should render component 1`] = ` -
-

- Organization profile -

-
-
-
- - Organization name - - -
-
-
- -
-
-
+
+ + `; diff --git a/public/app/features/teams/TeamSettings.test.tsx b/public/app/features/teams/TeamSettings.test.tsx index 2e40a0e3c44..b261116718e 100644 --- a/public/app/features/teams/TeamSettings.test.tsx +++ b/public/app/features/teams/TeamSettings.test.tsx @@ -12,7 +12,7 @@ const setup = (propOverrides?: object) => { Object.assign(props, propOverrides); const wrapper = shallow(); - const instance = wrapper.instance() as TeamSettings; + const instance = wrapper.instance() as any; return { wrapper, @@ -27,18 +27,3 @@ describe('Render', () => { expect(wrapper).toMatchSnapshot(); }); }); - -describe('Functions', () => { - it('should update team', () => { - const { instance } = setup(); - const mockEvent = { preventDefault: jest.fn() }; - - instance.setState({ - name: 'test11', - }); - - instance.onUpdate(mockEvent); - - expect(instance.props.updateTeam).toHaveBeenCalledWith('test11', 'test@test.com'); - }); -}); diff --git a/public/app/features/teams/TeamSettings.tsx b/public/app/features/teams/TeamSettings.tsx index aab7cde6ae7..7e1fa099c0f 100644 --- a/public/app/features/teams/TeamSettings.tsx +++ b/public/app/features/teams/TeamSettings.tsx @@ -1,7 +1,6 @@ -import React from 'react'; +import React, { FC } from 'react'; import { connect } from 'react-redux'; -import { InlineFormLabel, LegacyForms } from '@grafana/ui'; -const { Input } = LegacyForms; +import { Input, Field, Form, Button, FieldSet, VerticalGroup } from '@grafana/ui'; import { SharedPreferences } from 'app/core/components/SharedPreferences/SharedPreferences'; import { updateTeam } from './state/actions'; @@ -14,78 +13,37 @@ export interface Props { updateTeam: typeof updateTeam; } -interface State { - name: string; - email: string; -} +export const TeamSettings: FC = ({ team, updateTeam }) => { + return ( + +
+
{ + updateTeam(formTeam.name, formTeam.email); + }} + > + {({ register }) => ( + <> + + + -export class TeamSettings extends React.Component { - constructor(props: Props) { - super(props); - - this.state = { - name: props.team.name, - email: props.team.email, - }; - } - - onChangeName = (event: any) => { - this.setState({ name: event.target.value }); - }; - - onChangeEmail = (event: any) => { - this.setState({ email: event.target.value }); - }; - - onUpdate = (event: any) => { - const { name, email } = this.state; - event.preventDefault(); - this.props.updateTeam(name, email); - }; - - render() { - const { team } = this.props; - const { name, email } = this.state; - - return ( -
-

Team Settings

- -
- Name - -
- -
- - Email - - -
- -
- -
- - -
- ); - } -} + + + + + + )} + +
+ +
+ ); +}; function mapStateToProps(state: any) { const teamId = getRouteParamsId(state.location); diff --git a/public/app/features/teams/__snapshots__/TeamPages.test.tsx.snap b/public/app/features/teams/__snapshots__/TeamPages.test.tsx.snap index 4322d6991b4..7f4cb63f3ec 100644 --- a/public/app/features/teams/__snapshots__/TeamPages.test.tsx.snap +++ b/public/app/features/teams/__snapshots__/TeamPages.test.tsx.snap @@ -44,7 +44,7 @@ exports[`Render should render settings and preferences page 1`] = ` - + `; @@ -66,7 +66,7 @@ exports[`Render when feature toggle editorsCanAdmin is turned on should render s - + `; diff --git a/public/app/features/teams/__snapshots__/TeamSettings.test.tsx.snap b/public/app/features/teams/__snapshots__/TeamSettings.test.tsx.snap index 0f7f8af6bdd..1967d04e1ca 100644 --- a/public/app/features/teams/__snapshots__/TeamSettings.test.tsx.snap +++ b/public/app/features/teams/__snapshots__/TeamSettings.test.tsx.snap @@ -1,60 +1,28 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`Render should render component 1`] = ` -
-

+ - Team Settings -

-
-
- - Name - - -
-
- - Email - - -
-
- -
-
+ + + -
+
`;