demo D207
Every type in Svelte
A column per type, from every group, each sorting on its value not its text
type: 'voltage' · 'bytes' · 'ipv4' · …
This grid lays out one column of every type the grid ships, across every group, each sorting on its real value rather than its text. It is the quick reference for what a type buys you, so you can see the whole set behaving correctly in one place.
This is the Svelte version. A use action attaches the grid to a plain element, so no framework runtime is passed in and the component stays small, while the configuration is ordinary Svelte state.
The configuration
<script>
import { createGrid } from 'https://cdn.latticegrid.dev/lattice-grid@1.107.0/lattice-grid.esm.min.js';
import createLatticeAction from 'https://cdn.latticegrid.dev/lattice-grid@1.107.0/modules/svelte.esm.min.js';
const lattice = createLatticeAction({ createGrid });
const config = {
rowKey: 'id',
toolPanel: { side: 'left', panels: ['columns', 'filters'] },
// One column per built-in type. Each brings its own parser, comparator,
// editor, filter and alignment; each sorts on its stored value.
columns: [
{ field: 'label', title: 'Sample', layout: { pin: 'start', width: 130 } },
{ field: 'address', title: 'ipv4', type: 'ipv4' },
{ field: 'subnet', title: 'cidr', type: 'cidr' },
{ field: 'elapsed', title: 'duration', type: 'duration' },
{ field: 'disk', title: 'bytes', type: 'bytes' },
{ field: 'link', title: 'bitrate', type: 'bitrate' },
{ field: 'status', title: 'hex', type: 'hex' },
{ field: 'temp', title: 'celsius', type: 'celsius' },
{ field: 'voltage', title: 'voltage', type: 'voltage' },
{ field: 'resistance', title: 'resistance', type: 'resistance' },
{ field: 'frequency', title: 'frequency', type: 'frequency' },
{ field: 'pressure', title: 'pressure', type: 'pressure' },
{ field: 'spindle', title: 'rpm', type: 'rpm' },
],
rows,
};
</script>
<svelte:head>
<link rel="stylesheet" href="https://cdn.latticegrid.dev/lattice-grid@1.107.0/lattice-grid.min.css">
</svelte:head>
<div use:lattice={config} style="height: 500px"></div>