Documentation
Column Alignment
Control horizontal alignment of header and cell content with align.
Left (default)
Best for names, descriptions, and other text. Omit align or set it explicitly to left.
TypeScript
Copy
{accessor: "name",label: "Full Name",width: "1fr",align: "left",}
TypeScript
Copy
{accessor: "name",label: "Full Name",width: "1fr",align: "left",}
TypeScript
Copy
{accessor: "name",label: "Full Name",width: "1fr",align: "left",}
TypeScript
Copy
{accessor: "name",label: "Full Name",width: "1fr",align: "left",}
TypeScript
Copy
{accessor: "name",label: "Full Name",width: "1fr",align: "left",}
TypeScript
Copy
{accessor: "name",label: "Full Name",width: "1fr",align: "left",}
Center
Use for status badges, icons, and other short indicators.
TypeScript
Copy
{accessor: "status",label: "Status",width: 100,align: "center",}
TypeScript
Copy
{accessor: "status",label: "Status",width: 100,align: "center",}
TypeScript
Copy
{accessor: "status",label: "Status",width: 100,align: "center",}
TypeScript
Copy
{accessor: "status",label: "Status",width: 100,align: "center",}
TypeScript
Copy
{accessor: "status",label: "Status",width: 100,align: "center",}
TypeScript
Copy
{accessor: "status",label: "Status",width: 100,align: "center",}
Right
Use for numbers, currency, and percentages so values line up vertically.
TypeScript
Copy
{accessor: "price",label: "Price",width: 120,type: "number",align: "right",}
TypeScript
Copy
{accessor: "price",label: "Price",width: 120,type: "number",align: "right",}
TypeScript
Copy
{accessor: "price",label: "Price",width: 120,type: "number",align: "right",}
TypeScript
Copy
{accessor: "price",label: "Price",width: 120,type: "number",align: "right",}
TypeScript
Copy
{accessor: "price",label: "Price",width: 120,type: "number",align: "right",}
TypeScript
Copy
{accessor: "price",label: "Price",width: 120,type: "number",align: "right",}
Example
React TSX
Copy
1import { SimpleTable } from "@simple-table/react";2import type { Theme } from "@simple-table/react";3import {4 columnAlignmentConfig,5 type ColumnAlignmentPlayer6} from "./column-alignment.demo-data";7import "@simple-table/react/styles.css";89const ColumnAlignmentDemo = ({10 height = "400px",11 theme12}: {13 height?: string | number;14 theme?: Theme;15}) => {16 return (17 <SimpleTable18 columns={columnAlignmentConfig.headers}19 getRowId={({ row }) => row.id}20 rows={columnAlignmentConfig.rows}21 height={height}22 theme={theme}23 />24 );25};2627export default ColumnAlignmentDemo;
Angularcolumn-alignment-demo.component.ts
Copy
1import { Component, Input } from "@angular/core";2import {SimpleTableComponent} from "@simple-table/angular";import type { AngularColumnDef, GetRowIdParams, Theme } from "@simple-table/angular";3import { columnAlignmentConfig } from "./column-alignment.demo-data";4import "@simple-table/angular/styles.css";5import type { ColumnAlignmentPlayer } from "./column-alignment.demo-data";67@Component({8 selector: "column-alignment-demo",9 standalone: true,10 imports: [SimpleTableComponent],11 template: `12 <simple-table13 [getRowId]="getRowId"14 [rows]="rows"15 [columns]="headers"16 [height]="height"17 [theme]="theme"18 ></simple-table>19 `,20})21export class ColumnAlignmentDemoComponent {22 @Input() height: string | number = "400px";23 @Input() theme?: Theme;2425 readonly rows: ColumnAlignmentPlayer[] = columnAlignmentConfig.rows;26 readonly headers: AngularColumnDef<ColumnAlignmentPlayer>[] = columnAlignmentConfig.headers;2728 getRowId = ({ row }: GetRowIdParams<ColumnAlignmentPlayer>) => row.id;29}303132// column-alignment.demo-data.ts33// Self-contained demo table setup for this example.34import type { AngularColumnDef } from "@simple-table/angular";3536export interface ColumnAlignmentPlayer {37 id: number;38 name: string;39 score: number;40 rating: number;41 status: string;42}4344export const columnAlignmentHeaders: AngularColumnDef<ColumnAlignmentPlayer>[] = [45 { accessor: "id", label: "ID", width: 80, align: "left", type: "number" },46 { accessor: "name", label: "Name", minWidth: 100, width: "1fr", align: "center", type: "string" },47 { accessor: "score", label: "Score", width: 120, align: "right", type: "number" },48 { accessor: "rating", label: "Rating", width: 120, align: "right", type: "number" },49 { accessor: "status", label: "Status", width: 120, align: "left", type: "string" },50];5152export const columnAlignmentData: ColumnAlignmentPlayer[] = [53 { id: 1, name: "Camila Rodriguez", score: 94, rating: 4.9, status: "Active" },54 { id: 2, name: "Enzo Silva", score: 89, rating: 4.6, status: "Active" },55 { id: 3, name: "Yuki Kim", score: 96, rating: 4.8, status: "Active" },56 { id: 4, name: "Leandro Nakamura", score: 81, rating: 4.2, status: "Injured" },57 { id: 5, name: "Nadia Petrov", score: 87, rating: 4.4, status: "Active" },58 { id: 6, name: "Taj Chen", score: 92, rating: 4.7, status: "Active" },59 { id: 7, name: "Mira Thompson", score: 90, rating: 4.5, status: "Active" },60 { id: 8, name: "Juno Garcia", score: 84, rating: 4.3, status: "Inactive" },61 { id: 9, name: "Caspian Williams", score: 95, rating: 4.9, status: "Active" },62 { id: 10, name: "Vera Martinez", score: 88, rating: 4.4, status: "Active" },63 { id: 11, name: "Zion Hassan", score: 93, rating: 4.8, status: "Active" },64 { id: 12, name: "Kira Kumar", score: 91, rating: 4.6, status: "Resting" },65];6667export const columnAlignmentConfig = {68 headers: columnAlignmentHeaders,69 rows: columnAlignmentData,70};71
Vue SFC
Copy
1<template>2 <SimpleTable3 :columns="columnAlignmentConfig.headers"4 :rows="columnAlignmentConfig.rows"5 :get-row-id="getRowId"6 :height="height"7 :theme="theme"8 />9</template>1011<script setup lang="ts">12import { SimpleTable } from "@simple-table/vue";13import type { Theme, GetRowIdParams } from "@simple-table/vue";14import { columnAlignmentConfig } from "./column-alignment.demo-data";15import type { ColumnAlignmentPlayer } from "./column-alignment.demo-data";16import "@simple-table/vue/styles.css";1718withDefaults(defineProps<{ height?: string | number; theme?: Theme }>(), {19 height: "400px",20});2122const getRowId = ({ row }: GetRowIdParams<ColumnAlignmentPlayer>) => row.id;23</script>
Svelte
Copy
1<script lang="ts">2 import { SimpleTable } from "@simple-table/svelte";3 import type { Theme, GetRowIdParams } from "@simple-table/svelte";4 import { columnAlignmentConfig } from "./column-alignment.demo-data";5 import type { ColumnAlignmentPlayer } from "./column-alignment.demo-data";6 import "@simple-table/svelte/styles.css";78 let { height = "400px", theme }: { height?: string | number; theme?: Theme } = $props();910 const getRowId = ({ row }: GetRowIdParams<ColumnAlignmentPlayer>) => row.id;11</script>1213<SimpleTable14 columns={columnAlignmentConfig.headers}15 rows={columnAlignmentConfig.rows}16 getRowId={getRowId}17 {height}18 {theme}19/>
Solid TSX
Copy
1import {SimpleTable} from "@simple-table/solid";import type { Theme } from "@simple-table/solid";2import { columnAlignmentConfig } from "./column-alignment.demo-data";3import "@simple-table/solid/styles.css";45export default function ColumnAlignmentDemo(props: { height?: string | number; theme?: Theme }) {6 return (7 <SimpleTable8 columns={columnAlignmentConfig.headers}9 getRowId={({ row }) => row.id}10 rows={columnAlignmentConfig.rows}11 height={props.height ?? "400px"}12 theme={props.theme}13 />14 );15}
TypeScriptColumnAlignmentDemo.ts
Copy
1import { SimpleTableVanilla } from "simple-table-core";2import type { ColumnAlignmentPlayer } from "./column-alignment.demo-data";3import type { Theme, GetRowIdParams } from "simple-table-core";4import { columnAlignmentConfig } from "./column-alignment.demo-data";5import "simple-table-core/styles.css";678const getRowId = ({ row }: GetRowIdParams<ColumnAlignmentPlayer>) => row.id;9export function renderColumnAlignmentDemo(10 container: HTMLElement,11 options?: { height?: string | number; theme?: Theme }12): SimpleTableVanilla<ColumnAlignmentPlayer> {13 const table = new SimpleTableVanilla(container, {14 getRowId,15 columns: columnAlignmentConfig.headers,16 rows: columnAlignmentConfig.rows,17 height: options?.height ?? "400px",18 theme: options?.theme,19 });20 return table;21}222324// column-alignment.demo-data.ts25// Self-contained demo table setup for this example.26import type { ColumnDef } from "simple-table-core";2728export interface ColumnAlignmentPlayer {29 id: number;30 name: string;31 score: number;32 rating: number;33 status: string;34}3536export const columnAlignmentHeaders: ColumnDef<ColumnAlignmentPlayer>[] = [37 { accessor: "id", label: "ID", width: 80, align: "left", type: "number" },38 { accessor: "name", label: "Name", minWidth: 100, width: "1fr", align: "center", type: "string" },39 { accessor: "score", label: "Score", width: 120, align: "right", type: "number" },40 { accessor: "rating", label: "Rating", width: 120, align: "right", type: "number" },41 { accessor: "status", label: "Status", width: 120, align: "left", type: "string" },42];4344export const columnAlignmentData: ColumnAlignmentPlayer[] = [45 { id: 1, name: "Camila Rodriguez", score: 94, rating: 4.9, status: "Active" },46 { id: 2, name: "Enzo Silva", score: 89, rating: 4.6, status: "Active" },47 { id: 3, name: "Yuki Kim", score: 96, rating: 4.8, status: "Active" },48 { id: 4, name: "Leandro Nakamura", score: 81, rating: 4.2, status: "Injured" },49 { id: 5, name: "Nadia Petrov", score: 87, rating: 4.4, status: "Active" },50 { id: 6, name: "Taj Chen", score: 92, rating: 4.7, status: "Active" },51 { id: 7, name: "Mira Thompson", score: 90, rating: 4.5, status: "Active" },52 { id: 8, name: "Juno Garcia", score: 84, rating: 4.3, status: "Inactive" },53 { id: 9, name: "Caspian Williams", score: 95, rating: 4.9, status: "Active" },54 { id: 10, name: "Vera Martinez", score: 88, rating: 4.4, status: "Active" },55 { id: 11, name: "Zion Hassan", score: 93, rating: 4.8, status: "Active" },56 { id: 12, name: "Kira Kumar", score: 91, rating: 4.6, status: "Resting" },57];5859export const columnAlignmentConfig = {60 headers: columnAlignmentHeaders,61 rows: columnAlignmentData,62};63
Props
Column Alignment Configuration
| Property | Required | Description | Example |
|---|---|---|---|
Property | Required | Description | Example |
ColumnDef.align | Optional | Horizontal alignment for header and cell content in the column. Defaults to left. Options: left center right |