lucid-ui
Version:
A UI component library from AppNexus.
139 lines (138 loc) • 5.62 kB
JavaScript
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))));
},
});