demo D175
Colour schemes in React
Built-in palettes, the default colour-blind safe
scheme: 'default' · 'bright' · 'earth' · 'mono'
This shows the built-in colour palettes, with the default chosen to be colour-blind safe. It lets you match a chart to your product's palette while keeping the categories distinguishable for every reader.
This is the React version. The grid mounts through the createLatticeGrid adapter, which takes its configuration as ordinary props and hands back the live grid through a ref. The grid below is the same one every other tab runs.
The configuration
<link rel="stylesheet" href="https://cdn.latticegrid.dev/lattice-grid@1.107.0/lattice-grid.min.css">
<div id="app"></div>
<script type="module">
import React from 'https://esm.sh/react@18';
import { createRoot } from 'https://esm.sh/react-dom@18/client';
import { createGrid } from 'https://cdn.latticegrid.dev/lattice-grid@1.107.0/lattice-grid.esm.min.js';
import { createLatticeReact } from 'https://cdn.latticegrid.dev/lattice-grid@1.107.0/modules/react.esm.min.js';
import { createChart } from 'https://cdn.latticegrid.dev/lattice-grid@1.107.0/modules/charts.esm.min.js';
const { LatticeGrid, LatticeChart } = createLatticeReact({ React, createGrid, createChart });
const columns = [
{ field: 'circuit', title: 'Circuit', layout: { width: 180 } },
{ field: 'region', title: 'Region', filter: { type: 'set' } },
{ field: 'status', title: 'Status', filter: { type: 'set' } },
{ field: 'bandwidth', title: 'Bandwidth', type: 'number' },
{ field: 'charge', title: 'Monthly charge', type: 'number',
format: { style: 'currency', currency: 'GBP' }, total: 'sum' },
];
const rows = [/* circuit records */];
function App() {
const [grid, setGrid] = React.useState(null);
// scheme picks the palette. The default is the colour-blind-safe one.
return (
<>
{grid && (
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: '14px', height: '210px' }}>
<LatticeChart grid={grid} type="pie" x="region" y="charge" scheme="default" title="default" />
<LatticeChart grid={grid} type="pie" x="region" y="charge" scheme="bright" title="bright" />
<LatticeChart grid={grid} type="pie" x="region" y="charge" scheme="earth" title="earth" />
<LatticeChart grid={grid} type="pie" x="region" y="charge" scheme="mono" title="mono" />
</div>
)}
<LatticeGrid
rowKey="id"
columns={columns}
rows={rows}
onGridReady={setGrid}
style={{ height: '340px', marginTop: '14px' }}
/>
</>
);
}
createRoot(document.getElementById('app')).render(<App />);
</script>