UNPKG

react-color

Version:

A Collection of Color Pickers from Sketch, Photoshop, Chrome & more

85 lines (70 loc) 1.72 kB
'use strict'; var React = require('react'); var ReactCSS = require('reactcss'); class Checkboard extends ReactCSS.Component { constructor() { super(); this.state = { children: [], }; } classes() { return { 'default': { grid: { Absolute: '0 0 0 0', }, inside: { position: 'absolute', left: '50%', top: '50%', transform: 'translate(-50%, -50%)', }, white: { width: this.props.size + 'px', height: this.props.size + 'px', background: '#fff', float: 'left', }, grey: { width: this.props.size + 'px', height: this.props.size + 'px', background: '#e6e6e6', float: 'left', }, }, }; } componentDidMount() { var grid = React.findDOMNode(this.refs.grid); var inside = React.findDOMNode(this.refs.inside); var rows = Math.ceil(grid.clientHeight / this.props.size); var columns = Math.ceil(grid.clientWidth / this.props.size); if (columns % 2 == 0) { columns++; } inside.style.width = columns * this.props.size + 'px'; var children = []; for (var i = 0; i < rows * columns; i++) { if (i % 2 == 0) { children.push(<div key={ i } is="white" />); } else { children.push(<div key={ i } is="grey" />); } } this.setState({ children: children }); } render() { return ( <div is="grid" ref="grid"> <div is="inside" ref="inside"> { this.state.children } </div> </div> ); } } Checkboard.defaultProps = { size: 8, }; module.exports = Checkboard;