diff options
author | Brandon Millman <brandon@0xproject.com> | 2018-11-02 06:38:02 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-02 06:38:02 +0800 |
commit | 7c30fd4b2da83c9522f9137f4d18e6c308f2b66f (patch) | |
tree | 111722a613e8043f2ad9f6ce4ff06b7d1ca2017b /packages/instant/src/index.umd.ts | |
parent | 5573b092a94fb7c6dd32168d37a9cd994db95138 (diff) | |
parent | d16499da4e0611438df7bfe226bce940beca6918 (diff) | |
download | dexon-sol-tools-7c30fd4b2da83c9522f9137f4d18e6c308f2b66f.tar dexon-sol-tools-7c30fd4b2da83c9522f9137f4d18e6c308f2b66f.tar.gz dexon-sol-tools-7c30fd4b2da83c9522f9137f4d18e6c308f2b66f.tar.bz2 dexon-sol-tools-7c30fd4b2da83c9522f9137f4d18e6c308f2b66f.tar.lz dexon-sol-tools-7c30fd4b2da83c9522f9137f4d18e6c308f2b66f.tar.xz dexon-sol-tools-7c30fd4b2da83c9522f9137f4d18e6c308f2b66f.tar.zst dexon-sol-tools-7c30fd4b2da83c9522f9137f4d18e6c308f2b66f.zip |
Merge pull request #1205 from 0xProject/feature/instant/render-overlay
[instant] Dismissible overlay
Diffstat (limited to 'packages/instant/src/index.umd.ts')
-rw-r--r-- | packages/instant/src/index.umd.ts | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/packages/instant/src/index.umd.ts b/packages/instant/src/index.umd.ts index dabd45cae..b12e65485 100644 --- a/packages/instant/src/index.umd.ts +++ b/packages/instant/src/index.umd.ts @@ -2,21 +2,42 @@ import * as _ from 'lodash'; import * as React from 'react'; import * as ReactDOM from 'react-dom'; -import { DEFAULT_ZERO_EX_CONTAINER_SELECTOR } from './constants'; -import { ZeroExInstant, ZeroExInstantProps } from './index'; +import { DEFAULT_ZERO_EX_CONTAINER_SELECTOR, INJECTED_DIV_ID } from './constants'; +import { ZeroExInstantOverlay, ZeroExInstantOverlayProps } from './index'; import { assert } from './util/assert'; -export const render = (props: ZeroExInstantProps, selector: string = DEFAULT_ZERO_EX_CONTAINER_SELECTOR) => { - assert.isHexString('assetData', props.assetData); - assert.isValidLiquiditySource('liquiditySource', props.liquiditySource); +export const render = (props: ZeroExInstantOverlayProps, selector: string = DEFAULT_ZERO_EX_CONTAINER_SELECTOR) => { + assert.isHexString('props.assetData', props.assetData); + assert.isValidLiquiditySource('props.liquiditySource', props.liquiditySource); if (!_.isUndefined(props.additionalAssetMetaDataMap)) { - assert.isValidAssetMetaDataMap('additionalAssetMetaDataMap', props.additionalAssetMetaDataMap); + assert.isValidAssetMetaDataMap('props.additionalAssetMetaDataMap', props.additionalAssetMetaDataMap); } if (!_.isUndefined(props.defaultAssetBuyAmount)) { - assert.isNumber('defaultAssetBuyAmount', props.defaultAssetBuyAmount); + assert.isNumber('props.defaultAssetBuyAmount', props.defaultAssetBuyAmount); } if (!_.isUndefined(props.networkId)) { - assert.isNumber('networkId', props.networkId); + assert.isNumber('props.networkId', props.networkId); } - ReactDOM.render(React.createElement(ZeroExInstant, props), document.querySelector(selector)); + if (!_.isUndefined(props.onClose)) { + assert.isFunction('props.onClose', props.onClose); + } + if (!_.isUndefined(props.zIndex)) { + assert.isNumber('props.zIndex', props.zIndex); + } + const appendToIfExists = document.querySelector(selector); + assert.assert(!_.isNull(appendToIfExists), `Could not find div with selector: ${selector}`); + const appendTo = appendToIfExists as Element; + const injectedDiv = document.createElement('div'); + injectedDiv.setAttribute('id', INJECTED_DIV_ID); + appendTo.appendChild(injectedDiv); + const instantOverlayProps = { + ...props, + onClose: () => { + appendTo.removeChild(injectedDiv); + if (!_.isUndefined(props.onClose)) { + props.onClose(); + } + }, + }; + ReactDOM.render(React.createElement(ZeroExInstantOverlay, instantOverlayProps), injectedDiv); }; |