UNPKG

lucid-ui

Version:

A UI component library from AppNexus.

139 lines (138 loc) 5.62 kB
import React from 'react'; import createClass from 'create-react-class'; import { DataTable, SuccessIcon, TextField, CheckboxLabeled, } from '../../../index'; const data = [ { id: 1, first_name: 'Isaac', last_name: 'Newton', email: 'inewton@example.com', occupation: 'Physicist', salary: '$100.01', status: React.createElement(SuccessIcon, null), }, { id: 2, first_name: 'Albert', last_name: 'Einstein', email: 'aeinstein@example.com', occupation: 'Physicist', salary: '$100.02', status: React.createElement(SuccessIcon, null), isSelected: true, }, { id: 3, first_name: 'Leonardo', last_name: 'da Vinci', email: 'ldvinci@example.com', occupation: 'Engineer', salary: '$100.03', status: React.createElement(SuccessIcon, null), isActive: true, }, { id: 4, first_name: 'Aristotle', last_name: null, email: 'aristotle@example.com', occupation: 'Tutor', salary: '$100.04', status: React.createElement(SuccessIcon, null), }, { id: 5, first_name: 'Galileo', email: 'ggalilei@example.com', occupation: 'Physicist', salary: '$100.05', status: React.createElement(SuccessIcon, null), }, { id: 6, first_name: 'Charles', last_name: 'Darwin', email: 'cdarwin@example.com', occupation: 'Biologist', salary: '$100.06', status: React.createElement(SuccessIcon, null), }, { id: 7, first_name: 'Alexander', last_name: 'Macedon', email: 'amacedon@example.com', occupation: 'Head of State', salary: '$100.07', status: React.createElement(SuccessIcon, null), }, { id: 8, first_name: 'Plato', last_name: 'Plato', email: 'plato@example.com', occupation: 'Philosopher', salary: '$100.08', status: React.createElement(SuccessIcon, null), }, { id: 9, first_name: 'Mahatma', last_name: 'Gandhi', email: 'mgandhi@example.com', occupation: 'Politician', salary: '$100.09', status: React.createElement(SuccessIcon, null), }, { id: 10, first_name: 'William', last_name: 'Shakespeare', email: 'wshakespear@example.com', occupation: 'Playwright', salary: '$100.10', status: React.createElement(SuccessIcon, null), }, ]; export default createClass({ getInitialState() { return { hasFixedHeader: true, isSelectable: true, hasLightHeader: false, fixedColumnCount: 2, fixedRowHeight: 50, isActionable: false, }; }, handleToggle(stateItem) { this.setState({ [stateItem]: !this.state[stateItem] }); }, handleNumeric(stateItem, value) { this.setState({ [stateItem]: value }); }, renderDataTable(props) { return (React.createElement(DataTable, Object.assign({ data: data }, props), React.createElement(DataTable.Column, { field: 'id', align: 'left', width: 35 }, "ID"), React.createElement(DataTable.Column, { field: 'first_name', align: 'left', width: 100 }, "First"), React.createElement(DataTable.Column, { field: 'last_name', align: 'left', width: 100 }, "Last"), React.createElement(DataTable.Column, { field: 'email', align: 'left', width: 900 }, "E-Mail"), React.createElement(DataTable.Column, { field: 'occupation', align: 'left', width: 100 }, "Occupation"), React.createElement(DataTable.Column, { field: 'salary', align: 'right', width: 100 }, "Salary"), React.createElement(DataTable.Column, { field: 'status', align: 'center', width: 100 }, "Status"))); }, render() { return (React.createElement("div", null, React.createElement("label", { style: { marginBottom: 6, display: 'block', fontSize: 12 } }, React.createElement(TextField, { style: { marginRight: 9, width: 45 }, onChangeDebounced: v => this.handleNumeric('fixedColumnCount', parseInt(v, 10)), placeholder: 'fixedColumnCount', value: this.state.fixedColumnCount }), "fixedColumnCount"), React.createElement("label", { style: { marginBottom: 6, display: 'block', fontSize: 12 } }, React.createElement(TextField, { style: { marginRight: 9, width: 45 }, onChangeDebounced: v => this.handleNumeric('fixedRowHeight', parseInt(v, 10)), placeholder: 'fixedRowHeight', value: this.state.fixedRowHeight }), "fixedRowHeight"), React.createElement(CheckboxLabeled, { Label: 'hasFixedHeader', isSelected: this.state.hasFixedHeader, onSelect: () => this.handleToggle('hasFixedHeader') }), React.createElement(CheckboxLabeled, { Label: 'isSelectable', isSelected: this.state.isSelectable, onSelect: () => this.handleToggle('isSelectable') }), React.createElement(CheckboxLabeled, { Label: 'hasLightHeader', isSelected: this.state.hasLightHeader, onSelect: () => this.handleToggle('hasLightHeader') }), React.createElement(CheckboxLabeled, { Label: 'isActionable', isSelected: this.state.isActionable, onSelect: () => this.handleToggle('isActionable') }), React.createElement("div", { style: { height: '200px' } }, this.renderDataTable(this.state)))); }, });