blob: d0bd84802bb0519b8609f42c3cdf299bdcc2b2e0 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
import { AnchorTitle, HeaderSizes } from '@0x/react-shared';
import { Property, TypeDefinitionByName } from '@0x/types';
import * as React from 'react';
import { DocsInfo } from '../docs_info';
import { constants } from '../utils/constants';
import { Comment } from './comment';
import { SourceLink } from './source_link';
import { Type } from './type';
export interface PropertyBlockProps {
property: Property;
sectionName: string;
docsInfo: DocsInfo;
sourceUrl: string;
selectedVersion: string;
typeDefinitionByName: TypeDefinitionByName;
}
export interface PropertyBlockState {
shouldShowAnchor: boolean;
}
export class PropertyBlock extends React.Component<PropertyBlockProps, PropertyBlockState> {
constructor(props: PropertyBlockProps) {
super(props);
this.state = {
shouldShowAnchor: false,
};
}
public render(): React.ReactNode {
const property = this.props.property;
const sectionName = this.props.sectionName;
return (
<div
id={`${this.props.sectionName}-${property.name}`}
className="pb4 pt2"
key={`property-${property.name}-${property.type.name}`}
onMouseOver={this._setAnchorVisibility.bind(this, true)}
onMouseOut={this._setAnchorVisibility.bind(this, false)}
>
<div className="pb2" style={{ lineHeight: 1.3 }}>
<AnchorTitle
headerSize={HeaderSizes.H3}
title={property.name}
id={`${sectionName}-${property.name}`}
shouldShowAnchor={this.state.shouldShowAnchor}
/>
</div>
<code className={`hljs ${constants.TYPE_TO_SYNTAX[this.props.docsInfo.type]}`}>
{(property as any).callPath}
{property.name}:{' '}
<Type
type={property.type}
sectionName={sectionName}
docsInfo={this.props.docsInfo}
typeDefinitionByName={this.props.typeDefinitionByName}
isInPopover={false}
/>
</code>
{property.source && (
<SourceLink
version={this.props.selectedVersion}
source={property.source}
sourceUrl={this.props.sourceUrl}
/>
)}
{property.comment && <Comment comment={property.comment} className="py2" />}
</div>
);
}
private _setAnchorVisibility(shouldShowAnchor: boolean): void {
this.setState({
shouldShowAnchor,
});
}
}
|