aboutsummaryrefslogtreecommitdiffstats
path: root/packages/react-docs/src/components/interface.tsx
diff options
context:
space:
mode:
authorFabio Berger <me@fabioberger.com>2018-03-19 03:14:02 +0800
committerFabio Berger <me@fabioberger.com>2018-03-19 03:14:02 +0800
commit82b0ff6008415fac4d509d4e2e91b17d11cb0079 (patch)
tree6be7db86e35691e4c663cfb324ff59b43ae3f7db /packages/react-docs/src/components/interface.tsx
parenta691de7d55d2f712a9601dd2440f155fcb0a9a14 (diff)
parentcc4e390c91da86778c6d1492d55591a783af3152 (diff)
downloaddexon-0x-contracts-82b0ff6008415fac4d509d4e2e91b17d11cb0079.tar
dexon-0x-contracts-82b0ff6008415fac4d509d4e2e91b17d11cb0079.tar.gz
dexon-0x-contracts-82b0ff6008415fac4d509d4e2e91b17d11cb0079.tar.bz2
dexon-0x-contracts-82b0ff6008415fac4d509d4e2e91b17d11cb0079.tar.lz
dexon-0x-contracts-82b0ff6008415fac4d509d4e2e91b17d11cb0079.tar.xz
dexon-0x-contracts-82b0ff6008415fac4d509d4e2e91b17d11cb0079.tar.zst
dexon-0x-contracts-82b0ff6008415fac4d509d4e2e91b17d11cb0079.zip
Merge branch 'development'
* development: (269 commits) Make new packages default to public on publish Add new public packages to top-level README Update top-level package.json Fix incorrect new versions Fix path to assets Publish Updated CHANGELOGS Fix quotation marks Add a complex test for ast visitor Move opcodes to constants Fix issue with bundling subproviders for the browser by ignoring the `ganache-core` dependency Add changelog entry about pragma addition Add pragma above command-line script Add tests for sol-cov Updated CHANGELOGs Add SignedOrder, Order, and ECSignature types to the types package Keep console.log in monorepo-scripts Enable coverage for all other packages with tests Fix parallel coverage results reporting Fix linter issuesx ...
Diffstat (limited to 'packages/react-docs/src/components/interface.tsx')
-rw-r--r--packages/react-docs/src/components/interface.tsx63
1 files changed, 63 insertions, 0 deletions
diff --git a/packages/react-docs/src/components/interface.tsx b/packages/react-docs/src/components/interface.tsx
new file mode 100644
index 000000000..01f4942ef
--- /dev/null
+++ b/packages/react-docs/src/components/interface.tsx
@@ -0,0 +1,63 @@
+import * as _ from 'lodash';
+import * as React from 'react';
+
+import { DocsInfo } from '../docs_info';
+import { CustomType, TypeDocTypes } from '../types';
+
+import { MethodSignature } from './method_signature';
+import { Type } from './type';
+
+export interface InterfaceProps {
+ type: CustomType;
+ sectionName: string;
+ docsInfo: DocsInfo;
+}
+
+export function Interface(props: InterfaceProps) {
+ const type = props.type;
+ const properties = _.map(type.children, property => {
+ return (
+ <span key={`property-${property.name}-${property.type}-${type.name}`}>
+ {property.name}:{' '}
+ {property.type.typeDocType !== TypeDocTypes.Reflection ? (
+ <Type type={property.type} sectionName={props.sectionName} docsInfo={props.docsInfo} />
+ ) : (
+ <MethodSignature
+ method={property.type.method}
+ sectionName={props.sectionName}
+ shouldHideMethodName={true}
+ shouldUseArrowSyntax={true}
+ docsInfo={props.docsInfo}
+ />
+ )},
+ </span>
+ );
+ });
+ const hasIndexSignature = !_.isUndefined(type.indexSignature);
+ if (hasIndexSignature) {
+ const is = type.indexSignature;
+ const param = (
+ <span key={`indexSigParams-${is.keyName}-${is.keyType}-${type.name}`}>
+ {is.keyName}: <Type type={is.keyType} sectionName={props.sectionName} docsInfo={props.docsInfo} />
+ </span>
+ );
+ properties.push(
+ <span key={`indexSignature-${type.name}-${is.keyType.name}`}>
+ [{param}]: {is.valueName},
+ </span>,
+ );
+ }
+ const propertyList = _.reduce(properties, (prev: React.ReactNode, curr: React.ReactNode) => {
+ return [prev, '\n\t', curr];
+ });
+ return (
+ <span>
+ {`{`}
+ <br />
+ {'\t'}
+ {propertyList}
+ <br />
+ {`}`}
+ </span>
+ );
+}