Advertisement
Guest User

Untitled

a guest
Mar 21st, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import styled from 'styled-components'
  2. import React, { Component } from 'react'
  3. import { SelectWrapper } from 'infrastructure/components/Forms'
  4.  
  5. const DEFAULT_PER_ROW = 2
  6. const EL = Array.from('123456789012')
  7.  
  8. class CampaignGenerator extends Component {
  9.   state = {
  10.     perRow: DEFAULT_PER_ROW
  11.   }
  12.  
  13.   handlePerRowChange = perRow => {
  14.     this.setState({ perRow })
  15.   }
  16.  
  17.   render() {
  18.     const { perRow } = this.state
  19.  
  20.     return (
  21.       <Viewport>
  22.         <div style={{width: '200px'}}>
  23.           <SelectWrapper style={{ width: '200px' }} value={perRow} options={[
  24.             { value: 1, label: '1 item per row' },
  25.             { value: 2, label: '2 items per row' },
  26.             { value: 3, label: '3 items per row' },
  27.             { value: 4, label: '4 items per row' },
  28.             { value: 5, label: '5 items per row' }
  29.           ]} onChange={this.handlePerRowChange} />
  30.         </div>
  31.         <Page columns={perRow} rows={Math.ceil(EL.length / perRow)}>
  32.           {EL.map(i => {
  33.             return <Item />
  34.           })}
  35.         </Page>
  36.       </Viewport>
  37.     )
  38.   }
  39. }
  40.  
  41. CampaignGenerator.displayName = 'CampaignGenerator'
  42.  
  43. export default CampaignGenerator
  44.  
  45. const Viewport = styled.div`
  46.   min-height: 100%;
  47.   background-color: #eee;
  48. `
  49.  
  50. const Page = styled.div`
  51.   box-sizing: border-box;
  52.   min-height: 100%;
  53.   margin: 0 auto;
  54.   padding: 2em;
  55.   max-width: 800px;
  56.   font-size: 1.2em;
  57.   background-color: white;
  58.   border: double 3px #DDD;
  59.   border-top: none;
  60.   border-bottom: none;
  61.   display: grid;
  62.   grid-template-columns: ${props => `repeat(${props.columns}, 1fr)`};
  63.   grid-template-rows: ${props => `repeat(${props.rows}, 150px)`};
  64.   grid-gap: 1rem;
  65. `
  66.  
  67. const Item = styled.div`
  68.   border: 6px solid #171717;
  69.   background-color: #1EAAFC;
  70. `
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement