Chore: Update slate types to fix more strict TypeScript errors (#37159)

This commit is contained in:
Ashley Harrison 2021-07-23 15:33:53 +01:00 committed by GitHub
parent 2601a4dd6e
commit 26abec2287
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 64 additions and 97 deletions

View File

@ -127,7 +127,7 @@
"@types/redux-mock-store": "1.0.2",
"@types/reselect": "2.2.0",
"@types/semver": "^6.0.0",
"@types/slate": "0.47.1",
"@types/slate": "0.47.2",
"@types/slate-plain-serializer": "0.6.1",
"@types/slate-react": "0.22.5",
"@types/testing-library__jest-dom": "5.9.5",

View File

@ -1,8 +1,7 @@
import React, { useEffect } from 'react';
import { css, cx } from '@emotion/css';
import { hot } from 'react-hot-loader';
import { connect, MapDispatchToProps, MapStateToProps } from 'react-redux';
import { NavModel } from '@grafana/data';
import { connect, ConnectedProps } from 'react-redux';
import { Pagination, Tooltip, stylesFactory, LinkButton, Icon } from '@grafana/ui';
import { AccessControlAction, StoreState, UserDTO } from '../../types';
import Page from 'app/core/components/Page/Page';
@ -12,24 +11,26 @@ import { TagBadge } from 'app/core/components/TagFilter/TagBadge';
import { contextSrv } from 'app/core/core';
import { FilterInput } from 'app/core/components/FilterInput/FilterInput';
const mapDispatchToProps = {
fetchUsers,
changeQuery,
changePage,
};
const mapStateToProps = (state: StoreState) => ({
navModel: getNavModel(state.navIndex, 'global-users'),
users: state.userListAdmin.users,
query: state.userListAdmin.query,
showPaging: state.userListAdmin.showPaging,
totalPages: state.userListAdmin.totalPages,
page: state.userListAdmin.page,
});
const connector = connect(mapStateToProps, mapDispatchToProps);
interface OwnProps {}
interface ConnectedProps {
navModel: NavModel;
users: UserDTO[];
query: string;
showPaging: boolean;
totalPages: number;
page: number;
}
interface DispatchProps {
fetchUsers: typeof fetchUsers;
changeQuery: typeof changeQuery;
changePage: typeof changePage;
}
type Props = OwnProps & ConnectedProps & DispatchProps;
type Props = OwnProps & ConnectedProps<typeof connector>;
const UserListAdminPageUnConnected: React.FC<Props> = (props) => {
const styles = getStyles();
@ -141,19 +142,4 @@ const getStyles = stylesFactory(() => {
};
});
const mapDispatchToProps: MapDispatchToProps<DispatchProps, OwnProps> = {
fetchUsers,
changeQuery,
changePage,
};
const mapStateToProps: MapStateToProps<ConnectedProps, OwnProps, StoreState> = (state) => ({
navModel: getNavModel(state.navIndex, 'global-users'),
users: state.userListAdmin.users,
query: state.userListAdmin.query,
showPaging: state.userListAdmin.showPaging,
totalPages: state.userListAdmin.totalPages,
page: state.userListAdmin.page,
});
export default hot(module)(connect(mapStateToProps, mapDispatchToProps)(UserListAdminPageUnConnected));
export default hot(module)(connector(UserListAdminPageUnConnected));

View File

@ -16,7 +16,7 @@ import { AngularLocationWrapper } from 'app/angular/AngularLocationWrapper';
export class PanelCtrl {
panel: any;
error: any;
dashboard: DashboardModel;
declare dashboard: DashboardModel;
pluginName = '';
pluginId = '';
editorTabs: any;

View File

@ -1,14 +1,21 @@
import React, { PureComponent } from 'react';
import { connect } from 'react-redux';
import { connect, ConnectedProps } from 'react-redux';
import { Invitee } from 'app/types';
import { revokeInvite } from './state/actions';
import { Button, ClipboardButton } from '@grafana/ui';
export interface Props {
const mapDispatchToProps = {
revokeInvite,
};
const connector = connect(null, mapDispatchToProps);
interface OwnProps {
invitee: Invitee;
revokeInvite: typeof revokeInvite;
}
export type Props = OwnProps & ConnectedProps<typeof connector>;
class InviteeRow extends PureComponent<Props> {
render() {
const { invitee, revokeInvite } = this.props;
@ -30,10 +37,4 @@ class InviteeRow extends PureComponent<Props> {
}
}
const mapDispatchToProps = {
revokeInvite,
};
export default connect(() => {
return {};
}, mapDispatchToProps)(InviteeRow);
export default connector(InviteeRow);

View File

@ -1,35 +1,44 @@
import React, { PureComponent } from 'react';
import { hot } from 'react-hot-loader';
import { connect } from 'react-redux';
import { NavModel, renderMarkdown } from '@grafana/data';
import { connect, ConnectedProps } from 'react-redux';
import { renderMarkdown } from '@grafana/data';
import { HorizontalGroup, Pagination, VerticalGroup } from '@grafana/ui';
import Page from 'app/core/components/Page/Page';
import UsersActionBar from './UsersActionBar';
import UsersTable from './UsersTable';
import InviteesTable from './InviteesTable';
import { Invitee, OrgUser, OrgRole } from 'app/types';
import { OrgUser, OrgRole, StoreState } from 'app/types';
import { loadInvitees, loadUsers, removeUser, updateUser } from './state/actions';
import { getNavModel } from 'app/core/selectors/navModel';
import { getInvitees, getUsers, getUsersSearchQuery, getUsersSearchPage } from './state/selectors';
import { setUsersSearchQuery, setUsersSearchPage } from './state/reducers';
export interface Props {
navModel: NavModel;
invitees: Invitee[];
users: OrgUser[];
searchQuery: string;
searchPage: number;
externalUserMngInfo: string;
hasFetched: boolean;
loadUsers: typeof loadUsers;
loadInvitees: typeof loadInvitees;
setUsersSearchQuery: typeof setUsersSearchQuery;
setUsersSearchPage: typeof setUsersSearchPage;
updateUser: typeof updateUser;
removeUser: typeof removeUser;
function mapStateToProps(state: StoreState) {
return {
navModel: getNavModel(state.navIndex, 'users'),
users: getUsers(state.users),
searchQuery: getUsersSearchQuery(state.users),
searchPage: getUsersSearchPage(state.users),
invitees: getInvitees(state.users),
externalUserMngInfo: state.users.externalUserMngInfo,
hasFetched: state.users.hasFetched,
};
}
const mapDispatchToProps = {
loadUsers,
loadInvitees,
setUsersSearchQuery,
setUsersSearchPage,
updateUser,
removeUser,
};
const connector = connect(mapStateToProps, mapDispatchToProps);
export type Props = ConnectedProps<typeof connector>;
export interface State {
showInvites: boolean;
}
@ -129,25 +138,4 @@ export class UsersListPage extends PureComponent<Props, State> {
}
}
function mapStateToProps(state: any) {
return {
navModel: getNavModel(state.navIndex, 'users'),
users: getUsers(state.users),
searchQuery: getUsersSearchQuery(state.users),
searchPage: getUsersSearchPage(state.users),
invitees: getInvitees(state.users),
externalUserMngInfo: state.users.externalUserMngInfo,
hasFetched: state.users.hasFetched,
};
}
const mapDispatchToProps = {
loadUsers,
loadInvitees,
setUsersSearchQuery,
setUsersSearchPage,
updateUser,
removeUser,
};
export default hot(module)(connect(mapStateToProps, mapDispatchToProps)(UsersListPage));
export default hot(module)(connector(UsersListPage));

View File

@ -33,7 +33,7 @@ export const Preprocessor: FunctionComponent<Props> = ({ query, metricDescriptor
);
};
const useOptions = (metricDescriptor?: MetricDescriptor): Array<SelectableValue<string>> => {
const useOptions = (metricDescriptor?: MetricDescriptor): Array<SelectableValue<PreprocessorType>> => {
const metricKind = metricDescriptor?.metricKind;
const valueType = metricDescriptor?.valueType;

View File

@ -5,7 +5,7 @@ import { ElasticsearchOptions, Interval } from '../types';
import { DataSourceSettings, SelectableValue } from '@grafana/data';
import { gte, lt } from 'semver';
const indexPatternTypes = [
const indexPatternTypes: Array<SelectableValue<'none' | Interval>> = [
{ label: 'No pattern', value: 'none' },
{ label: 'Hourly', value: 'Hourly', example: '[logstash-]YYYY.MM.DD.HH' },
{ label: 'Daily', value: 'Daily', example: '[logstash-]YYYY.MM.DD' },

View File

@ -3,7 +3,7 @@ set -e
echo -e "Collecting code stats (typescript errors & more)"
ERROR_COUNT_LIMIT=136
ERROR_COUNT_LIMIT=77
ERROR_COUNT="$(./node_modules/.bin/tsc --project tsconfig.json --noEmit --strict true | grep -oP 'Found \K(\d+)')"
if [ "$ERROR_COUNT" -gt $ERROR_COUNT_LIMIT ]; then

View File

@ -4045,7 +4045,7 @@
storybook-addon-outline "^1.4.1"
ts-dedent "^2.0.0"
"@storybook/addon-knobs@6.3.5":
"@storybook/addon-knobs@6.3.0":
version "6.3.0"
resolved "https://registry.yarnpkg.com/@storybook/addon-knobs/-/addon-knobs-6.3.0.tgz#f289c072729651150a27a163371df20922c24f93"
integrity sha512-wsZZ1t38KHdaxzrc9oPyiIJDihJnjHRRabrENQbylktJwETEjb2z3eX0iBRJGiz/YCHO+tGd0ItyZArOdijT6g==
@ -5866,14 +5866,6 @@
"@types/react" "*"
immutable "^3.8.2"
"@types/slate@0.47.1":
version "0.47.1"
resolved "https://registry.yarnpkg.com/@types/slate/-/slate-0.47.1.tgz#6c66f82df085c764039eea2229be763f7e1906fd"
integrity sha512-2ZlnWI6/RYMXxeGFIeZtvmaXAeYAJh4ZVumziqVl77/liNEi9hOwkUTU2zFu+j/z21v385I2WVPl8sgadxfzXg==
dependencies:
"@types/react" "*"
immutable "^3.8.2"
"@types/source-list-map@*":
version "0.1.2"
resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9"