diff --git a/components/leave_team_modal/__snapshots__/leave_team_modal.test.jsx.snap b/components/leave_team_modal/__snapshots__/leave_team_modal.test.tsx.snap similarity index 100% rename from components/leave_team_modal/__snapshots__/leave_team_modal.test.jsx.snap rename to components/leave_team_modal/__snapshots__/leave_team_modal.test.tsx.snap diff --git a/components/leave_team_modal/index.js b/components/leave_team_modal/index.ts similarity index 76% rename from components/leave_team_modal/index.js rename to components/leave_team_modal/index.ts index e91e59fa7c7d..eb0cc6f9e4ff 100644 --- a/components/leave_team_modal/index.js +++ b/components/leave_team_modal/index.ts @@ -2,19 +2,21 @@ // See LICENSE.txt for license information. import {connect} from 'react-redux'; -import {bindActionCreators} from 'redux'; +import {bindActionCreators, Dispatch} from 'redux'; import {getCurrentUserId} from 'mattermost-redux/selectors/entities/users'; import {getCurrentTeamId} from 'mattermost-redux/selectors/entities/teams'; import {removeUserFromTeam as leaveTeam} from 'mattermost-redux/actions/teams'; +import {GlobalState} from 'mattermost-redux/types/store'; +import {GenericAction} from 'mattermost-redux/types/actions'; import {toggleSideBarRightMenuAction} from 'actions/global_actions.jsx'; import {ModalIdentifiers} from 'utils/constants'; import {isModalOpen} from 'selectors/views/modals'; -import LeaveTeamModal from './leave_team_modal.jsx'; +import LeaveTeamModal from './leave_team_modal'; -function mapStateToProps(state) { +function mapStateToProps(state: GlobalState) { const modalId = ModalIdentifiers.LEAVE_TEAM; const currentUserId = getCurrentUserId(state); const currentTeamId = getCurrentTeamId(state); @@ -26,7 +28,7 @@ function mapStateToProps(state) { }; } -function mapDispatchToProps(dispatch) { +function mapDispatchToProps(dispatch: Dispatch) { return { actions: bindActionCreators({ leaveTeam, diff --git a/components/leave_team_modal/leave_team_modal.test.jsx b/components/leave_team_modal/leave_team_modal.test.tsx similarity index 96% rename from components/leave_team_modal/leave_team_modal.test.jsx rename to components/leave_team_modal/leave_team_modal.test.tsx index 1a5535629cb6..7db6b354faae 100644 --- a/components/leave_team_modal/leave_team_modal.test.jsx +++ b/components/leave_team_modal/leave_team_modal.test.tsx @@ -4,7 +4,7 @@ import {shallow} from 'enzyme'; import React from 'react'; -import LeaveTeamModal from 'components/leave_team_modal/leave_team_modal.jsx'; +import LeaveTeamModal from 'components/leave_team_modal/leave_team_modal'; describe('components/LeaveTeamModal', () => { const requiredProps = { @@ -50,7 +50,7 @@ describe('components/LeaveTeamModal', () => { document.removeEventListener = jest.fn(); const wrapper = shallow(); - const instance = wrapper.instance(); + const instance = wrapper.instance() as LeaveTeamModal; expect(document.addEventListener).toHaveBeenCalledTimes(1); expect(document.removeEventListener).not.toBeCalled(); diff --git a/components/leave_team_modal/leave_team_modal.jsx b/components/leave_team_modal/leave_team_modal.tsx similarity index 76% rename from components/leave_team_modal/leave_team_modal.jsx rename to components/leave_team_modal/leave_team_modal.tsx index 2260706c4a4a..d53a94e9f27b 100644 --- a/components/leave_team_modal/leave_team_modal.jsx +++ b/components/leave_team_modal/leave_team_modal.tsx @@ -4,52 +4,24 @@ import React from 'react'; import {Modal} from 'react-bootstrap'; import {FormattedMessage} from 'react-intl'; -import PropTypes from 'prop-types'; +import {ActionFunc} from 'mattermost-redux/types/actions'; import Constants from 'utils/constants'; import {isKeyPressed} from 'utils/utils'; -export default class LeaveTeamModal extends React.PureComponent { - static propTypes = { - - /** - * Current user id. - */ - currentUserId: PropTypes.string.isRequired, - - /** - * Current team id. - */ - currentTeamId: PropTypes.string.isRequired, - - /** - * hide action - */ - - onHide: PropTypes.func.isRequired, - - /** - * show or hide modal - */ - - show: PropTypes.bool.isRequired, - - actions: PropTypes.shape({ - - /** - * An action to remove user from team - */ - - leaveTeam: PropTypes.func.isRequired, - - /** - * An action to toggle the right menu - */ - - toggleSideBarRightMenu: PropTypes.func.isRequired, - }), +type Props = { + currentUserId: string; + currentTeamId: string; + onHide: () => void; + show: boolean; + actions: { + leaveTeam: (teamId: string, userId: string) => ActionFunc; + toggleSideBarRightMenu: () => void; }; +} + +export default class LeaveTeamModal extends React.PureComponent { componentDidMount() { if (this.props.show) { document.addEventListener('keypress', this.handleKeyPress); @@ -60,9 +32,9 @@ export default class LeaveTeamModal extends React.PureComponent { document.removeEventListener('keypress', this.handleKeyPress); } - handleKeyPress = (e) => { + handleKeyPress = (e: KeyboardEvent) => { if (isKeyPressed(e, Constants.KeyCodes.ENTER)) { - this.handleSubmit(e); + this.handleSubmit(); } };