From ec24bf84019ef16c32149040d096e436442828b8 Mon Sep 17 00:00:00 2001 From: fragosti Date: Thu, 29 Nov 2018 17:21:53 -0800 Subject: feat: add MultiSelect component skeleton --- packages/website/ts/components/ui/multi_select.tsx | 57 ++++++++++++++++++++++ .../website/ts/pages/instant/config_generator.tsx | 24 ++++++++- 2 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 packages/website/ts/components/ui/multi_select.tsx diff --git a/packages/website/ts/components/ui/multi_select.tsx b/packages/website/ts/components/ui/multi_select.tsx new file mode 100644 index 000000000..329e76bd5 --- /dev/null +++ b/packages/website/ts/components/ui/multi_select.tsx @@ -0,0 +1,57 @@ +import { colors } from '@0x/react-shared'; +import * as _ from 'lodash'; +import * as React from 'react'; + +import { zIndex } from 'ts/style/z_index'; + +import { Container } from './container'; +import { Overlay } from './overlay'; +import { Text } from './text'; + +export interface MultiSelectItemConfig { + value: string; + displayText: string; + onClick?: () => void; +} + +export interface MultiSelectProps { + selectedValues: string[]; + items: MultiSelectItemConfig[]; + backgroundColor?: string; + textColor?: string; +} + +export class MultiSelect extends React.Component { + public static defaultProps = { + backgroundColor: colors.white, + textColor: colors.darkGrey, + }; + public render(): React.ReactNode { + const { items, backgroundColor } = this.props; + return ( + + {_.map(items, item => ( + + ))} + + ); + } +} + +export interface MultiSelectItemProps { + displayText: string; + isSelected?: boolean; + onClick?: () => void; +} + +export const MultiSelectItem: React.StatelessComponent = ({ + displayText, + isSelected, + onClick, +}) => ( + + + {displayText} + + +); diff --git a/packages/website/ts/pages/instant/config_generator.tsx b/packages/website/ts/pages/instant/config_generator.tsx index d63975e31..0dac0f9ec 100644 --- a/packages/website/ts/pages/instant/config_generator.tsx +++ b/packages/website/ts/pages/instant/config_generator.tsx @@ -3,6 +3,8 @@ import * as React from 'react'; import { Container } from 'ts/components/ui/container'; import { Select, SelectItemConfig } from 'ts/components/ui/select'; +import { Text } from 'ts/components/ui/text'; +import { colors } from 'ts/style/colors'; import { ZeroExInstantBaseConfig } from '../../../../instant/src/types'; @@ -18,7 +20,10 @@ export class ConfigGenerator extends React.Component { const { value } = this.props; return ( - + + BLAH ); } @@ -36,3 +41,20 @@ export class ConfigGenerator extends React.Component { this.props.onConfigChange(newConfig); }; } + +export interface ConfigGeneratorSectionProps { + title: string; + actionText?: string; + onActionTextClick?: () => void; +} + +export const ConfigGeneratorSection: React.StatelessComponent = props => ( + + + + {props.title} + + + {props.children} + +); -- cgit v1.2.3