UNPKG

@humanspeak/svelte-headless-table

Version:

A powerful, headless table library for Svelte that provides complete control over table UI while handling complex data operations like sorting, filtering, pagination, grouping, and row expansion. Build custom, accessible data tables with zero styling opin

25 lines (24 loc) 1.01 kB
import { derived, writable } from 'svelte/store'; export const addColumnOrder = ({ initialColumnIdOrder = [], hideUnspecifiedColumns = false } = {}) => () => { const columnIdOrder = writable(initialColumnIdOrder); const pluginState = { columnIdOrder }; const deriveFlatColumns = (flatColumns) => { return derived([flatColumns, columnIdOrder], ([$flatColumns, $columnIdOrder]) => { const _flatColumns = [...$flatColumns]; const orderedFlatColumns = []; $columnIdOrder.forEach((id) => { const colIdx = _flatColumns.findIndex((c) => c.id === id); orderedFlatColumns.push(..._flatColumns.splice(colIdx, 1)); }); if (!hideUnspecifiedColumns) { // Push the remaining unspecified columns. orderedFlatColumns.push(..._flatColumns); } return orderedFlatColumns; }); }; return { pluginState, deriveFlatColumns }; };