diff --git a/src/common-elements/fields-layout.ts b/src/common-elements/fields-layout.ts index ff36621b..21084d64 100644 --- a/src/common-elements/fields-layout.ts +++ b/src/common-elements/fields-layout.ts @@ -10,6 +10,18 @@ export const PropertiesTableCaption = styled.caption` color: ${props => props.theme.colors.text.secondary}; `; +export const PropertyRow = styled.tr<{ kind?: string }>` + &:focus { + outline: none; + } + + &.hidden, + &.hidden > td { + overflow: hidden; + position: absolute; + } +`; + export const PropertyCell = styled.td<{ kind?: string }>` border-left: 1px solid ${props => props.theme.schema.linesColor}; box-sizing: border-box; diff --git a/src/common-elements/samples.tsx b/src/common-elements/samples.tsx index f4855a43..f8e08b78 100644 --- a/src/common-elements/samples.tsx +++ b/src/common-elements/samples.tsx @@ -5,6 +5,9 @@ export const SampleControls = styled.div` opacity: 0.4; transition: opacity 0.3s ease; text-align: right; + position: absolute; + right: 30px; + z-index: 5; > span { display: inline-block; diff --git a/src/components/Fields/Field.tsx b/src/components/Fields/Field.tsx index 4b9fa445..b93f881b 100644 --- a/src/components/Fields/Field.tsx +++ b/src/components/Fields/Field.tsx @@ -10,6 +10,7 @@ import { PropertyCellWithInner, PropertyDetailsCell, PropertyNameCell, + PropertyRow, } from '../../common-elements/fields-layout'; import { ShelfIcon } from '../../common-elements/'; @@ -27,14 +28,32 @@ export interface FieldProps extends SchemaOptions { renderDiscriminatorSwitch?: (opts: FieldProps) => JSX.Element; } +interface FieldState { + expanded?: boolean; +} + @observer -export class Field extends React.Component { +export class Field extends React.Component { + + constructor(props) { + super(props); + + this.state = { + expanded: false, + }; + } + toggle = () => { - this.props.field.toggle(); + this.setState({ expanded: !this.state.expanded }); }; + + onFocus = () => { + this.setState({ expanded: true }); + }; + render() { const { className, field, isLast } = this.props; - const { name, expanded, deprecated, required, kind } = field; + const { name, deprecated, required, kind } = field; const withSubSchema = !field.schema.isPrimitive && !field.schema.isCircular; const paramName = withSubSchema ? ( @@ -46,16 +65,16 @@ export class Field extends React.Component { > {name} - + {!required && optional } ) : ( - - - {name} - {!required && optional } - - ); + + + {name} + {!required && optional } + + ); return ( <> @@ -65,8 +84,8 @@ export class Field extends React.Component { - {field.expanded && withSubSchema && ( - + {withSubSchema && ( + { /> - + )} ); diff --git a/src/components/PayloadSamples/styled.elements.ts b/src/components/PayloadSamples/styled.elements.ts index 12edf038..80b5a86c 100644 --- a/src/components/PayloadSamples/styled.elements.ts +++ b/src/components/PayloadSamples/styled.elements.ts @@ -5,8 +5,12 @@ import styled from '../../styled-components'; import { StyledDropdown } from '../../common-elements'; export const MimeLabel = styled.div` - border-bottom: 1px solid #c2c2c2; - margin: 0 0 10px 0; + position: relative; + top: -35px; + left: 132px; + margin: 0; + font-size: 0.929em; + color: #000; display: block; `; diff --git a/src/components/RequestSamples/RequestSamples.tsx b/src/components/RequestSamples/RequestSamples.tsx index af804c66..41846867 100644 --- a/src/components/RequestSamples/RequestSamples.tsx +++ b/src/components/RequestSamples/RequestSamples.tsx @@ -1,11 +1,10 @@ import { observer } from 'mobx-react'; import * as React from 'react'; +import { Tab, TabList, TabPanel, Tabs, UnderlinedHeader } from '../../common-elements'; import { OperationModel } from '../../services/models'; import { PayloadSamples } from '../PayloadSamples/PayloadSamples'; import { SourceCodeWithCopy } from '../SourceCode/SourceCode'; -import { RightPanelHeader, Tab, TabList, TabPanel, Tabs } from '../../common-elements'; - export interface RequestSamplesProps { operation: OperationModel; } @@ -24,7 +23,7 @@ export class RequestSamples extends React.Component { return ( (hasSamples && (
- Request + Request Example: {samples.length > 0 ?