diff --git a/src/app/views/App.tsx b/src/app/views/App.tsx index 13e62c33c..eb3ab9c29 100644 --- a/src/app/views/App.tsx +++ b/src/app/views/App.tsx @@ -1,4 +1,5 @@ import { + Announced, IStackTokens, ITheme, styled } from 'office-ui-fabric-react'; import React, { Component } from 'react'; @@ -24,6 +25,7 @@ import { logIn } from '../services/graph-client/msal-service'; import { GRAPH_URL } from '../services/graph-constants'; import { parseSampleUrl } from '../utils/sample-url-generation'; import { substituteTokens } from '../utils/token-helpers'; +import { translateMessage } from '../utils/translate-messages'; import { appTitleDisplayOnFullScreen, appTitleDisplayOnMobileScreen } from './app-sections/AppTitle'; import { headerMessaging } from './app-sections/HeaderMessaging'; import { statusMessages } from './app-sections/StatusMessages'; @@ -77,7 +79,7 @@ class App extends Component { this.state = { selectedVerb: 'GET', mobileScreen: false, - hideDialog: true, + hideDialog: true }; } @@ -287,7 +289,6 @@ class App extends Component { ; } - public render() { const classes = classNames(this.props); const { authenticated, graphExplorerMode, queryState, minimised, termsOfUse, sampleQuery, @@ -326,13 +327,12 @@ class App extends Component { sidebarWidth = layout = 'col-xs-12 col-sm-12'; } - - - return ( // @ts-ignore
+
{graphExplorerMode === Mode.Complete && (
diff --git a/src/app/views/query-response/QueryResponse.tsx b/src/app/views/query-response/QueryResponse.tsx index 3fe4187d2..2428bf480 100644 --- a/src/app/views/query-response/QueryResponse.tsx +++ b/src/app/views/query-response/QueryResponse.tsx @@ -1,4 +1,5 @@ import { + Announced, DefaultButton, FontSizes, getId, @@ -32,7 +33,7 @@ import './query-response.scss'; class QueryResponse extends Component< IQueryResponseProps, IQueryResponseState -> { + > { constructor(props: any) { super(props); this.state = { @@ -159,7 +160,7 @@ class QueryResponse extends Component< />
- + { // @ts-ignore ; + /> onPivotItemClick(sampleQuery, pivotItem)}> {pivotItems} diff --git a/src/app/views/query-runner/query-input/QueryInput.tsx b/src/app/views/query-runner/query-input/QueryInput.tsx index fb467825a..424f51397 100644 --- a/src/app/views/query-runner/query-input/QueryInput.tsx +++ b/src/app/views/query-runner/query-input/QueryInput.tsx @@ -80,7 +80,7 @@ export class QueryInput extends Component { const { intl: { messages }, }: any = this.props; - const showError = !authenticated && sampleQuery.selectedVerb != 'GET'; + const showError = !authenticated && sampleQuery.selectedVerb !== 'GET'; const verbSelector: any = queryRunnerStyles().verbSelector; verbSelector.title = { ...verbSelector.title, @@ -96,7 +96,7 @@ export class QueryInput extends Component { selectedKey={sampleQuery.selectedVerb} options={httpMethods} styles={verbSelector} - errorMessage={showError ? translateMessage('Sign in to use this method') : undefined } + errorMessage={showError ? translateMessage('Sign in to use this method') : undefined} onChange={(event, method) => handleOnMethodChange(method)} />
@@ -119,7 +119,7 @@ export class QueryInput extends Component { handleOnRunQuery()} submitting={submitting} diff --git a/src/app/views/query-runner/request/headers/RequestHeaders.tsx b/src/app/views/query-runner/request/headers/RequestHeaders.tsx index 1b3338217..ce435a2ac 100644 --- a/src/app/views/query-runner/request/headers/RequestHeaders.tsx +++ b/src/app/views/query-runner/request/headers/RequestHeaders.tsx @@ -1,57 +1,57 @@ -import { PrimaryButton, TextField } from 'office-ui-fabric-react'; -import React, { Component } from 'react'; +import { Announced, PrimaryButton, styled, TextField } from 'office-ui-fabric-react'; +import React, { useState } from 'react'; import { FormattedMessage, injectIntl } from 'react-intl'; -import { connect } from 'react-redux'; -import { bindActionCreators, Dispatch } from 'redux'; +import { useDispatch, useSelector } from 'react-redux'; -import { IRequestHeadersProps } from '../../../../../types/request'; import * as queryInputActionCreators from '../../../../services/actions/query-input-action-creators'; +import { translateMessage } from '../../../../utils/translate-messages'; +import { classNames } from '../../../classnames'; import { headerStyles } from './Headers.styles'; import HeadersList from './HeadersList'; -class RequestHeaders extends Component { - constructor(props: any) { - super(props); - this.state = { - headerName: '', - headerValue: '', - }; - } +interface IHeader { + name: string; + value: string; +} + +const RequestHeaders = (props: any) => { + const sampleQuery = useSelector((state: any) => state.sampleQuery); + const [headerName, setHeaderName] = useState(''); + const [headerValue, setHeaderValue] = useState(''); + const [announcedMessage, setAnnouncedMessage] = useState(''); + + const { intl: { messages } } = props; + const sampleQueryHeaders = sampleQuery.sampleHeaders; - private handleOnHeaderNameChange = (name?: string) => { + const dispatch = useDispatch(); + const classes = classNames(props); + + const handleOnHeaderNameChange = (name?: string) => { if (name) { - this.setState({ - headerName: name, - }); + setHeaderName(name); } }; - private handleOnHeaderValueChange = (value?: string) => { + const handleOnHeaderValueChange = (value?: string) => { if (value) { - this.setState({ headerValue: value }); + setHeaderValue(value); } }; - private handleOnHeaderDelete = (header: any) => { - const { actions, sampleQuery } = this.props; + const handleOnHeaderDelete = (header: IHeader) => { let headers = [...sampleQuery.sampleHeaders]; headers = headers.filter(head => head.name !== header.name); - const query = sampleQuery; + const query = { ...sampleQuery }; query.sampleHeaders = headers; - if (actions) { - actions.setSampleQuery(query); - } - - this.setState(this.state); + dispatch(queryInputActionCreators.setSampleQuery(query)); + setAnnouncedMessage(translateMessage('Request Header deleted')); }; - private handleOnHeaderAdd = () => { - if (this.state.headerName !== '') { - const { headerName, headerValue } = this.state; - const { actions } = this.props; - let { sampleHeaders } = this.props.sampleQuery; + const handleOnHeaderAdd = () => { + if (headerName) { + let { sampleHeaders } = sampleQuery; const header = { name: headerName, value: headerValue }; if (!sampleHeaders) { @@ -63,76 +63,52 @@ class RequestHeaders extends Component { const newHeaders = [header, ...sampleHeaders]; - this.setState({ - headerName: '', - headerValue: '', - }); + setHeaderName(''); + setHeaderValue(''); + setAnnouncedMessage(translateMessage('Request Header added')); - if (actions) { - const query = this.props.sampleQuery; - query.sampleHeaders = newHeaders; - actions.setSampleQuery(query); - } + const query = { ...sampleQuery }; + query.sampleHeaders = newHeaders; + dispatch(queryInputActionCreators.setSampleQuery(query)); } }; - public render() { - // @ts-ignore - const { sampleQuery, intl: { messages } } = this.props; - const headers = sampleQuery.sampleHeaders; - const container: any = headerStyles().container; - - return ( -
-
-
- this.handleOnHeaderNameChange(name)} - /> -
-
- this.handleOnHeaderValueChange(value)} - /> -
-
- this.handleOnHeaderAdd()}> - - -
+ return ( +
+ +
+
+ handleOnHeaderNameChange(name)} + /> +
+
+ handleOnHeaderValueChange(value)} + /> +
+
+ + +
-
- this.handleOnHeaderDelete(header)} - headers={headers} - />
- ); - } -} - -function mapDispatchToProps(dispatch: Dispatch): object { - return { - actions: bindActionCreators( - { ...queryInputActionCreators }, - dispatch), - }; -} - -function mapStateToProps(state: any) { - return { - sampleQuery: state.sampleQuery, - }; -} - +
+ handleOnHeaderDelete(header)} + headers={sampleQueryHeaders} + /> +
+ ); +}; // @ts-ignore -const WithIntl = injectIntl(RequestHeaders); -export default connect(mapStateToProps, mapDispatchToProps)(WithIntl); +const styledRequestHeaders = styled(injectIntl(RequestHeaders), headerStyles); +export default styledRequestHeaders; diff --git a/src/messages/GE.json b/src/messages/GE.json index 3e4b11b8f..f30e5abdd 100644 --- a/src/messages/GE.json +++ b/src/messages/GE.json @@ -328,5 +328,13 @@ "Query Sample Input": "Query sample input", "popup blocked, allow pop-up windows in your browser": "popup blocked, allow pop-up windows in your browser", "sign in to consent to permissions": "One of the following permissions is required to run the query. Sign in with an account that can consent to the permission you will choose.", - "Sign in to use this method": "Sign in to use this method" + "Sign in to use this method": "Sign in to use this method", + "Request Header deleted": "Request Header deleted", + "Request Header added": "Request Header added", + "Sidebar minimized": "Sidebar minimized", + "Sidebar maximized": "Sidebar maximized", + "Response area expanded": "Response area expanded", + "Close expanded response area": "Close expanded response area" + } +