@human-kit/svelte-components 1.0.0-alpha.4 → 1.0.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/checkbox/README.md +53 -0
- package/dist/checkbox/TODO.md +16 -0
- package/dist/checkbox/index.d.ts +6 -0
- package/dist/checkbox/index.js +6 -0
- package/dist/checkbox/index.parts.d.ts +2 -0
- package/dist/checkbox/index.parts.js +2 -0
- package/dist/checkbox/indicator/README.md +23 -0
- package/dist/checkbox/indicator/checkbox-indicator.svelte +43 -0
- package/dist/checkbox/indicator/checkbox-indicator.svelte.d.ts +10 -0
- package/dist/checkbox/root/README.md +47 -0
- package/dist/checkbox/root/checkbox-label-test.svelte +10 -0
- package/dist/checkbox/root/checkbox-label-test.svelte.d.ts +18 -0
- package/dist/checkbox/root/checkbox-root.svelte +361 -0
- package/dist/checkbox/root/checkbox-root.svelte.d.ts +23 -0
- package/dist/checkbox/root/checkbox-test.svelte +59 -0
- package/dist/checkbox/root/checkbox-test.svelte.d.ts +18 -0
- package/dist/checkbox/root/context.d.ts +21 -0
- package/dist/checkbox/root/context.js +15 -0
- package/dist/combobox/list/combobox-listbox.svelte.d.ts +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -0
- package/dist/table/IMPLEMENTATION_NOTES.md +8 -0
- package/dist/table/PLAN-HIDDEN-COLUMNS.md +152 -0
- package/dist/table/PLAN.md +924 -0
- package/dist/table/README.md +116 -0
- package/dist/table/SELECTION_CHECKBOX_PLAN.md +234 -0
- package/dist/table/TODO.md +100 -0
- package/dist/table/body/README.md +24 -0
- package/dist/table/body/table-body.svelte +25 -0
- package/dist/table/body/table-body.svelte.d.ts +9 -0
- package/dist/table/cell/README.md +25 -0
- package/dist/table/cell/table-cell.svelte +247 -0
- package/dist/table/cell/table-cell.svelte.d.ts +9 -0
- package/dist/table/checkbox/README.md +38 -0
- package/dist/table/checkbox/table-checkbox-test.svelte +121 -0
- package/dist/table/checkbox/table-checkbox-test.svelte.d.ts +16 -0
- package/dist/table/checkbox/table-checkbox.svelte +274 -0
- package/dist/table/checkbox/table-checkbox.svelte.d.ts +13 -0
- package/dist/table/checkbox-indicator/README.md +29 -0
- package/dist/table/checkbox-indicator/table-checkbox-indicator.svelte +22 -0
- package/dist/table/checkbox-indicator/table-checkbox-indicator.svelte.d.ts +10 -0
- package/dist/table/column/README.md +32 -0
- package/dist/table/column/table-column.svelte +108 -0
- package/dist/table/column/table-column.svelte.d.ts +18 -0
- package/dist/table/column-header-cell/README.md +28 -0
- package/dist/table/column-header-cell/table-column-header-cell.svelte +281 -0
- package/dist/table/column-header-cell/table-column-header-cell.svelte.d.ts +9 -0
- package/dist/table/column-resizer/README.md +32 -0
- package/dist/table/column-resizer/table-column-resizer-freeze-layout-test.svelte +51 -0
- package/dist/table/column-resizer/table-column-resizer-freeze-layout-test.svelte.d.ts +3 -0
- package/dist/table/column-resizer/table-column-resizer-selection-column-test.svelte +83 -0
- package/dist/table/column-resizer/table-column-resizer-selection-column-test.svelte.d.ts +3 -0
- package/dist/table/column-resizer/table-column-resizer-test.svelte +75 -0
- package/dist/table/column-resizer/table-column-resizer-test.svelte.d.ts +3 -0
- package/dist/table/column-resizer/table-column-resizer.svelte +616 -0
- package/dist/table/column-resizer/table-column-resizer.svelte.d.ts +11 -0
- package/dist/table/empty-state/README.md +25 -0
- package/dist/table/empty-state/table-empty-state.svelte +38 -0
- package/dist/table/empty-state/table-empty-state.svelte.d.ts +8 -0
- package/dist/table/footer/README.md +24 -0
- package/dist/table/footer/table-footer.svelte +19 -0
- package/dist/table/footer/table-footer.svelte.d.ts +9 -0
- package/dist/table/header/README.md +24 -0
- package/dist/table/header/table-header.svelte +19 -0
- package/dist/table/header/table-header.svelte.d.ts +9 -0
- package/dist/table/index.d.ts +16 -0
- package/dist/table/index.js +16 -0
- package/dist/table/index.parts.d.ts +12 -0
- package/dist/table/index.parts.js +12 -0
- package/dist/table/root/README.md +56 -0
- package/dist/table/root/context.d.ts +198 -0
- package/dist/table/root/context.js +1426 -0
- package/dist/table/root/table-reorder-test.svelte +64 -0
- package/dist/table/root/table-reorder-test.svelte.d.ts +3 -0
- package/dist/table/root/table-root.svelte +410 -0
- package/dist/table/root/table-root.svelte.d.ts +29 -0
- package/dist/table/root/table-test.svelte +165 -0
- package/dist/table/root/table-test.svelte.d.ts +25 -0
- package/dist/table/row/README.md +27 -0
- package/dist/table/row/table-row.svelte +321 -0
- package/dist/table/row/table-row.svelte.d.ts +13 -0
- package/package.json +11 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<!-- markdownlint-disable MD024 -->
|
|
2
|
+
|
|
3
|
+
# Table.Footer
|
|
4
|
+
|
|
5
|
+
## API reference
|
|
6
|
+
|
|
7
|
+
### Table.Footer
|
|
8
|
+
|
|
9
|
+
Name: `Table.Footer`
|
|
10
|
+
Description: Footer rowgroup for summary rows or aggregate information. In v1 it is semantic only and excluded from keyboard navigation.
|
|
11
|
+
|
|
12
|
+
| Prop | Type | Default | Description |
|
|
13
|
+
| ---------- | --------- | ----------- | ------------------------------------ |
|
|
14
|
+
| `class` | `string` | `''` | Class names for the `tfoot` element. |
|
|
15
|
+
| `children` | `Snippet` | `undefined` | Footer rows. |
|
|
16
|
+
|
|
17
|
+
### Context utilities
|
|
18
|
+
|
|
19
|
+
Name: `Table.Footer` section context
|
|
20
|
+
Description: Publishes the `footer` section scope for descendant rows and cells.
|
|
21
|
+
|
|
22
|
+
| Prop | Type | Default | Description |
|
|
23
|
+
| ------------------------ | --------------------------- | ------- | -------------------------------- |
|
|
24
|
+
| `useTableSectionContext` | `() => TableSectionContext` | `-` | Reads the current section scope. |
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
4
|
+
import { setTableSectionContext } from '../root/context';
|
|
5
|
+
|
|
6
|
+
type TableFooterProps = Omit<HTMLAttributes<HTMLTableSectionElement>, 'children'> & {
|
|
7
|
+
children?: Snippet;
|
|
8
|
+
class?: string;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
let { children, class: className = '', ...restProps }: TableFooterProps = $props();
|
|
12
|
+
setTableSectionContext({ section: 'footer' });
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<tfoot role="none" class={className} data-table-footer {...restProps}>
|
|
16
|
+
{#if children}
|
|
17
|
+
{@render children()}
|
|
18
|
+
{/if}
|
|
19
|
+
</tfoot>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
type TableFooterProps = Omit<HTMLAttributes<HTMLTableSectionElement>, 'children'> & {
|
|
4
|
+
children?: Snippet;
|
|
5
|
+
class?: string;
|
|
6
|
+
};
|
|
7
|
+
declare const TableFooter: import("svelte").Component<TableFooterProps, {}, "">;
|
|
8
|
+
type TableFooter = ReturnType<typeof TableFooter>;
|
|
9
|
+
export default TableFooter;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<!-- markdownlint-disable MD024 -->
|
|
2
|
+
|
|
3
|
+
# Table.Header
|
|
4
|
+
|
|
5
|
+
## API reference
|
|
6
|
+
|
|
7
|
+
### Table.Header
|
|
8
|
+
|
|
9
|
+
Name: `Table.Header`
|
|
10
|
+
Description: Header rowgroup for a `Table`, typically containing a single row of sortable or static column headers.
|
|
11
|
+
|
|
12
|
+
| Prop | Type | Default | Description |
|
|
13
|
+
| ---------- | --------- | ----------- | ------------------------------------ |
|
|
14
|
+
| `class` | `string` | `''` | Class names for the `thead` element. |
|
|
15
|
+
| `children` | `Snippet` | `undefined` | Header rows and columns. |
|
|
16
|
+
|
|
17
|
+
### Context utilities
|
|
18
|
+
|
|
19
|
+
Name: `Table.Header` section context
|
|
20
|
+
Description: Publishes the `header` section scope for descendant rows and cells.
|
|
21
|
+
|
|
22
|
+
| Prop | Type | Default | Description |
|
|
23
|
+
| ------------------------ | --------------------------- | ------- | -------------------------------- |
|
|
24
|
+
| `useTableSectionContext` | `() => TableSectionContext` | `-` | Reads the current section scope. |
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
4
|
+
import { setTableSectionContext } from '../root/context';
|
|
5
|
+
|
|
6
|
+
type TableHeaderProps = Omit<HTMLAttributes<HTMLTableSectionElement>, 'children'> & {
|
|
7
|
+
children?: Snippet;
|
|
8
|
+
class?: string;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
let { children, class: className = '', ...restProps }: TableHeaderProps = $props();
|
|
12
|
+
setTableSectionContext({ section: 'header' });
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<thead class={className} data-table-header {...restProps}>
|
|
16
|
+
{#if children}
|
|
17
|
+
{@render children()}
|
|
18
|
+
{/if}
|
|
19
|
+
</thead>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
|
+
type TableHeaderProps = Omit<HTMLAttributes<HTMLTableSectionElement>, 'children'> & {
|
|
4
|
+
children?: Snippet;
|
|
5
|
+
class?: string;
|
|
6
|
+
};
|
|
7
|
+
declare const TableHeader: import("svelte").Component<TableHeaderProps, {}, "">;
|
|
8
|
+
type TableHeader = ReturnType<typeof TableHeader>;
|
|
9
|
+
export default TableHeader;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * as Table from './index.parts.ts';
|
|
2
|
+
export { default as TableRoot } from './root/table-root.svelte';
|
|
3
|
+
export { default as TableColumn } from './column/table-column.svelte';
|
|
4
|
+
export { default as TableHeader } from './header/table-header.svelte';
|
|
5
|
+
export { default as TableBody } from './body/table-body.svelte';
|
|
6
|
+
export { default as TableEmptyState } from './empty-state/table-empty-state.svelte';
|
|
7
|
+
export { default as TableFooter } from './footer/table-footer.svelte';
|
|
8
|
+
export { default as TableRow } from './row/table-row.svelte';
|
|
9
|
+
export { default as TableColumnHeaderCell } from './column-header-cell/table-column-header-cell.svelte';
|
|
10
|
+
export { default as TableColumnResizer } from './column-resizer/table-column-resizer.svelte';
|
|
11
|
+
export { default as TableCheckbox } from './checkbox/table-checkbox.svelte';
|
|
12
|
+
export { default as TableCheckboxIndicator } from './checkbox-indicator/table-checkbox-indicator.svelte';
|
|
13
|
+
export { default as TableCell } from './cell/table-cell.svelte';
|
|
14
|
+
export { createTableContext, getTableContext, setTableContext, useTableContext, getTableSectionContext, setTableSectionContext, useTableSectionContext, getTableRowContext, setTableRowContext, useTableRowContext, getTableColumnContext, setTableColumnContext, useTableColumnContext, type TableContext, type TableSelectionBehavior, type TableSelectionCheckboxState, type TableSelectionKey, type TableSelectionMode, type TableSortDirection, type TableSortDescriptor, type TableColumnWidth, type TableGridCoord, type TableColumnRegistration, type TableSectionKind, type TableSectionContext, type TableRowContext, type TableColumnContext, type CreateTableContextOptions } from './root/context';
|
|
15
|
+
import * as TableParts from './index.parts.ts';
|
|
16
|
+
export default TableParts;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * as Table from './index.parts.ts';
|
|
2
|
+
export { default as TableRoot } from './root/table-root.svelte';
|
|
3
|
+
export { default as TableColumn } from './column/table-column.svelte';
|
|
4
|
+
export { default as TableHeader } from './header/table-header.svelte';
|
|
5
|
+
export { default as TableBody } from './body/table-body.svelte';
|
|
6
|
+
export { default as TableEmptyState } from './empty-state/table-empty-state.svelte';
|
|
7
|
+
export { default as TableFooter } from './footer/table-footer.svelte';
|
|
8
|
+
export { default as TableRow } from './row/table-row.svelte';
|
|
9
|
+
export { default as TableColumnHeaderCell } from './column-header-cell/table-column-header-cell.svelte';
|
|
10
|
+
export { default as TableColumnResizer } from './column-resizer/table-column-resizer.svelte';
|
|
11
|
+
export { default as TableCheckbox } from './checkbox/table-checkbox.svelte';
|
|
12
|
+
export { default as TableCheckboxIndicator } from './checkbox-indicator/table-checkbox-indicator.svelte';
|
|
13
|
+
export { default as TableCell } from './cell/table-cell.svelte';
|
|
14
|
+
export { createTableContext, getTableContext, setTableContext, useTableContext, getTableSectionContext, setTableSectionContext, useTableSectionContext, getTableRowContext, setTableRowContext, useTableRowContext, getTableColumnContext, setTableColumnContext, useTableColumnContext } from './root/context';
|
|
15
|
+
import * as TableParts from './index.parts.ts';
|
|
16
|
+
export default TableParts;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { default as Root } from './root/table-root.svelte';
|
|
2
|
+
export { default as Column } from './column/table-column.svelte';
|
|
3
|
+
export { default as Header } from './header/table-header.svelte';
|
|
4
|
+
export { default as Body } from './body/table-body.svelte';
|
|
5
|
+
export { default as EmptyState } from './empty-state/table-empty-state.svelte';
|
|
6
|
+
export { default as Footer } from './footer/table-footer.svelte';
|
|
7
|
+
export { default as Row } from './row/table-row.svelte';
|
|
8
|
+
export { default as ColumnHeaderCell } from './column-header-cell/table-column-header-cell.svelte';
|
|
9
|
+
export { default as ColumnResizer } from './column-resizer/table-column-resizer.svelte';
|
|
10
|
+
export { default as Checkbox } from './checkbox/table-checkbox.svelte';
|
|
11
|
+
export { default as CheckboxIndicator } from './checkbox-indicator/table-checkbox-indicator.svelte';
|
|
12
|
+
export { default as Cell } from './cell/table-cell.svelte';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { default as Root } from './root/table-root.svelte';
|
|
2
|
+
export { default as Column } from './column/table-column.svelte';
|
|
3
|
+
export { default as Header } from './header/table-header.svelte';
|
|
4
|
+
export { default as Body } from './body/table-body.svelte';
|
|
5
|
+
export { default as EmptyState } from './empty-state/table-empty-state.svelte';
|
|
6
|
+
export { default as Footer } from './footer/table-footer.svelte';
|
|
7
|
+
export { default as Row } from './row/table-row.svelte';
|
|
8
|
+
export { default as ColumnHeaderCell } from './column-header-cell/table-column-header-cell.svelte';
|
|
9
|
+
export { default as ColumnResizer } from './column-resizer/table-column-resizer.svelte';
|
|
10
|
+
export { default as Checkbox } from './checkbox/table-checkbox.svelte';
|
|
11
|
+
export { default as CheckboxIndicator } from './checkbox-indicator/table-checkbox-indicator.svelte';
|
|
12
|
+
export { default as Cell } from './cell/table-cell.svelte';
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<!-- markdownlint-disable MD024 MD060 -->
|
|
2
|
+
|
|
3
|
+
# Table.Root
|
|
4
|
+
|
|
5
|
+
## API reference
|
|
6
|
+
|
|
7
|
+
### Table.Root
|
|
8
|
+
|
|
9
|
+
Name: `Table.Root`
|
|
10
|
+
Description: State container for interactive table behavior, including roving focus, row selection, disabled row handling, and sortable column state.
|
|
11
|
+
|
|
12
|
+
| Prop | Type | Default | Description |
|
|
13
|
+
| ----------------------- | ------------------------------------------------------------ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
14
|
+
| `selectionMode` | `'none' \| 'single' \| 'multiple'` | `'none'` | Controls row selection behavior. |
|
|
15
|
+
| `selectionBehavior` | `'toggle' \| 'replace'` | `'toggle'` | `toggle` uses checkbox-style selection. `replace` makes click replace selection, vertical arrows move selection, and `Shift+ArrowUp/Down` extend it. |
|
|
16
|
+
| `selectedKeys` | `Iterable<string \| number>` | `undefined` | Controlled selected row ids. Supports `bind:selectedKeys`. |
|
|
17
|
+
| `defaultSelectedKeys` | `Iterable<string \| number>` | `undefined` | Initial selected row ids for uncontrolled usage. When `selectionMode` later becomes `none`, the internal selection is cleared. |
|
|
18
|
+
| `sortDescriptor` | `{ column: string; direction: 'ascending' \| 'descending' }` | `undefined` | Controlled sort state. Supports `bind:sortDescriptor`. Setting it back to `undefined` clears the sort. |
|
|
19
|
+
| `defaultSortDescriptor` | `{ column: string; direction: 'ascending' \| 'descending' }` | `undefined` | Initial sort state for uncontrolled usage. |
|
|
20
|
+
| `columnWidths` | `Map<string, number>` | `undefined` | Controlled column width state in px. Supports `bind:columnWidths`. |
|
|
21
|
+
| `defaultColumnWidths` | `Iterable<[string, number]>` | `undefined` | Initial uncontrolled column widths in px. |
|
|
22
|
+
| `disabledKeys` | `Iterable<string \| number>` | `undefined` | Row ids that should be non-selectable. |
|
|
23
|
+
| `onSelectionChange` | `(keys: Set<string \| number>) => void` | `undefined` | Called when row selection changes. |
|
|
24
|
+
| `onSortChange` | `(descriptor) => void` | `undefined` | Called when sortable header state changes. |
|
|
25
|
+
| `onColumnWidthsChange` | `(widths: Map<string, number>) => void` | `undefined` | Called when resize interactions update column widths. |
|
|
26
|
+
| `onColumnResizeStart` | `(columnId: string) => void` | `undefined` | Called when a column resize drag starts. |
|
|
27
|
+
| `onColumnResizeEnd` | `(widths: Map<string, number>) => void` | `undefined` | Called when a column resize drag ends. |
|
|
28
|
+
| `aria-label` | `string` | `undefined` | Accessible name when no external label is present. |
|
|
29
|
+
| `aria-labelledby` | `string` | `undefined` | Id reference for an external label. |
|
|
30
|
+
| `class` | `string` | `''` | Class names for the root table element. |
|
|
31
|
+
| `children` | `Snippet` | `undefined` | Composed table parts. |
|
|
32
|
+
|
|
33
|
+
### Behavior notes
|
|
34
|
+
|
|
35
|
+
Name: Selection and sorting notes
|
|
36
|
+
Description: Current v1 interaction constraints that affect consumer expectations.
|
|
37
|
+
|
|
38
|
+
| Topic | Behavior |
|
|
39
|
+
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
40
|
+
| `selectionMode="none"` | Clears existing row selection internally and prevents further row selection until another mode is set. |
|
|
41
|
+
| Text selection and copy | Browser-native text selection and `Ctrl+C` behavior are preserved; the component does not implement custom clipboard logic. |
|
|
42
|
+
| `replace` mode blur | Clicking or tabbing outside the table clears focus state but does not clear row selection. |
|
|
43
|
+
| Sort announcements | Sort changes are mirrored into a polite live region. Use `Table.Column.textValue` when the announced label should differ from the column `id`. |
|
|
44
|
+
| Column resizing | Width state is normalized to px values and a resize handle only affects the `Table.Column` it is composed within. |
|
|
45
|
+
| Row edge focus | In body rows, `ArrowLeft` before the first cell and `ArrowRight` after the last cell move focus onto the row itself; `ArrowUp` / `ArrowDown` keep that row-edge focus aligned across rows, repeating the same horizontal arrow loops back into the opposite edge cell, and `Home` / `End` jump to the first or last focusable body row while row focus is active. |
|
|
46
|
+
|
|
47
|
+
### Context utilities
|
|
48
|
+
|
|
49
|
+
Name: `context.ts` helpers
|
|
50
|
+
Description: Internal and advanced APIs for reading and publishing table state.
|
|
51
|
+
|
|
52
|
+
| Prop | Type | Default | Description |
|
|
53
|
+
| -------------------- | --------------------------- | ------- | ------------------------------------------------------- |
|
|
54
|
+
| `createTableContext` | `(options) => TableContext` | `-` | Creates the internal state contract. |
|
|
55
|
+
| `setTableContext` | `(context) => TableContext` | `-` | Publishes context from `Table.Root`. |
|
|
56
|
+
| `useTableContext` | `() => TableContext` | `-` | Consumes table context and throws outside `Table.Root`. |
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { type Readable } from 'svelte/store';
|
|
2
|
+
export type TableSelectionKey = string | number;
|
|
3
|
+
export type TableSelectionMode = 'none' | 'single' | 'multiple';
|
|
4
|
+
export type TableSelectionBehavior = 'toggle' | 'replace';
|
|
5
|
+
export type TableSortDirection = 'ascending' | 'descending';
|
|
6
|
+
export type TableSectionKind = 'header' | 'body' | 'footer';
|
|
7
|
+
type TableSelectionInteraction = {
|
|
8
|
+
shiftKey?: boolean;
|
|
9
|
+
ctrlKey?: boolean;
|
|
10
|
+
metaKey?: boolean;
|
|
11
|
+
altKey?: boolean;
|
|
12
|
+
};
|
|
13
|
+
export type TableSortDescriptor = {
|
|
14
|
+
column: string;
|
|
15
|
+
direction: TableSortDirection;
|
|
16
|
+
};
|
|
17
|
+
export type TableColumnWidth = number | `${number}px`;
|
|
18
|
+
export type TableGridCoord = {
|
|
19
|
+
row: number;
|
|
20
|
+
col: number;
|
|
21
|
+
};
|
|
22
|
+
export type TableRowFocusEdge = 'start' | 'end';
|
|
23
|
+
export type TableColumnRegistration = {
|
|
24
|
+
token: string;
|
|
25
|
+
id: string;
|
|
26
|
+
allowsSorting: boolean;
|
|
27
|
+
allowsResizing: boolean;
|
|
28
|
+
isRowHeader: boolean;
|
|
29
|
+
textValue?: string;
|
|
30
|
+
width?: TableColumnWidth;
|
|
31
|
+
defaultWidth?: TableColumnWidth;
|
|
32
|
+
minWidth?: number;
|
|
33
|
+
maxWidth?: number;
|
|
34
|
+
};
|
|
35
|
+
export type TableSelectionCheckboxState = 'none' | 'some' | 'all';
|
|
36
|
+
type TableRowRegistration = {
|
|
37
|
+
token: string;
|
|
38
|
+
section: TableSectionKind;
|
|
39
|
+
id?: TableSelectionKey;
|
|
40
|
+
disabled: boolean;
|
|
41
|
+
element?: HTMLTableRowElement;
|
|
42
|
+
};
|
|
43
|
+
type TableCellRegistration = {
|
|
44
|
+
key: string;
|
|
45
|
+
rowToken: string;
|
|
46
|
+
section: Extract<TableSectionKind, 'header' | 'body'>;
|
|
47
|
+
columnIndex?: number;
|
|
48
|
+
columnToken?: string;
|
|
49
|
+
element?: HTMLElement;
|
|
50
|
+
focusDelegate?: () => HTMLElement | undefined;
|
|
51
|
+
};
|
|
52
|
+
export type CreateTableContextOptions = {
|
|
53
|
+
selectionMode?: TableSelectionMode;
|
|
54
|
+
selectionBehavior?: TableSelectionBehavior;
|
|
55
|
+
initialSelectedKeys?: Iterable<TableSelectionKey>;
|
|
56
|
+
initialSortDescriptor?: TableSortDescriptor;
|
|
57
|
+
initialColumnWidths?: Iterable<readonly [string, number]>;
|
|
58
|
+
initialHiddenColumns?: Iterable<string>;
|
|
59
|
+
disabledKeys?: Iterable<TableSelectionKey>;
|
|
60
|
+
onSelectionChange?: (keys: Set<TableSelectionKey>) => void;
|
|
61
|
+
onSortChange?: (descriptor: TableSortDescriptor | undefined) => void;
|
|
62
|
+
onColumnWidthsChange?: (widths: Map<string, number>) => void;
|
|
63
|
+
onHiddenColumnsChange?: (columnIds: string[]) => void;
|
|
64
|
+
onColumnResizeStart?: (columnId: string) => void;
|
|
65
|
+
onColumnResizeEnd?: (widths: Map<string, number>) => void;
|
|
66
|
+
};
|
|
67
|
+
export type TableContext = {
|
|
68
|
+
layoutVersion: Readable<number>;
|
|
69
|
+
selectionVersion: Readable<number>;
|
|
70
|
+
focusVersion: Readable<number>;
|
|
71
|
+
sortVersion: Readable<number>;
|
|
72
|
+
widthVersion: Readable<number>;
|
|
73
|
+
resizeVersion: Readable<number>;
|
|
74
|
+
createInstanceToken: (prefix: string) => string;
|
|
75
|
+
selectionMode: TableSelectionMode;
|
|
76
|
+
selectionBehavior: TableSelectionBehavior;
|
|
77
|
+
disabledKeys: Set<TableSelectionKey>;
|
|
78
|
+
focusedCellKey: string | null;
|
|
79
|
+
focusVisible: boolean;
|
|
80
|
+
sortDescriptor: TableSortDescriptor | undefined;
|
|
81
|
+
resizingColumnId: string | null;
|
|
82
|
+
registerColumn: (column: TableColumnRegistration) => void;
|
|
83
|
+
unregisterColumn: (token: string) => void;
|
|
84
|
+
registerColumnResizer: (columnToken: string) => void;
|
|
85
|
+
unregisterColumnResizer: (columnToken: string) => void;
|
|
86
|
+
getColumnCount: () => number;
|
|
87
|
+
getVisibleColumnCount: () => number;
|
|
88
|
+
getColumnAt: (index: number) => TableColumnRegistration | undefined;
|
|
89
|
+
getColumnIndexByToken: (token: string) => number;
|
|
90
|
+
getVisibleColumnIndexByToken: (token: string) => number;
|
|
91
|
+
getColumnTextValue: (columnId: string) => string | undefined;
|
|
92
|
+
getColumnWidth: (columnId: string) => number | undefined;
|
|
93
|
+
getColumnMinWidth: (columnId: string) => number | undefined;
|
|
94
|
+
getColumnMaxWidth: (columnId: string) => number | undefined;
|
|
95
|
+
isColumnHidden: (columnId: string) => boolean;
|
|
96
|
+
isColumnResizable: (columnId: string) => boolean;
|
|
97
|
+
getColumnWidths: () => Map<string, number>;
|
|
98
|
+
getVisibleColumnWidths: () => Map<string, number>;
|
|
99
|
+
setColumnWidths: (widths?: Iterable<readonly [string, number]>) => void;
|
|
100
|
+
setColumnWidth: (columnId: string, width: number) => void;
|
|
101
|
+
setHiddenColumns: (columnIds?: Iterable<string>) => void;
|
|
102
|
+
measureColumnContentWidth: (columnId: string) => number | undefined;
|
|
103
|
+
startColumnResize: (columnId: string) => void;
|
|
104
|
+
endColumnResize: () => void;
|
|
105
|
+
suppressHeaderClickOnce: () => void;
|
|
106
|
+
consumeHeaderClickSuppression: () => boolean;
|
|
107
|
+
hasResizableColumns: () => boolean;
|
|
108
|
+
registerRow: (row: TableRowRegistration) => void;
|
|
109
|
+
unregisterRow: (token: string) => void;
|
|
110
|
+
getHeaderRowCount: () => number;
|
|
111
|
+
getBodyRowCount: () => number;
|
|
112
|
+
isRowSelected: (id: TableSelectionKey | undefined) => boolean;
|
|
113
|
+
isRowFocused: (token: string) => boolean;
|
|
114
|
+
isRowFocusTarget: (token: string) => boolean;
|
|
115
|
+
getRowFocusEdge: (token: string) => TableRowFocusEdge | null;
|
|
116
|
+
isRowDisabled: (id: TableSelectionKey | undefined, localDisabled?: boolean) => boolean;
|
|
117
|
+
hasSelectableRows: () => boolean;
|
|
118
|
+
getSelectionCheckboxState: () => TableSelectionCheckboxState;
|
|
119
|
+
registerCell: (cell: TableCellRegistration) => void;
|
|
120
|
+
unregisterCell: (key: string) => void;
|
|
121
|
+
isCellFocused: (key: string) => boolean;
|
|
122
|
+
isCellTabStop: (key: string) => boolean;
|
|
123
|
+
isRowTabStop: (token: string) => boolean;
|
|
124
|
+
focusCellByKey: (key: string | null) => void;
|
|
125
|
+
focusRowByToken: (token: string, edge: TableRowFocusEdge) => void;
|
|
126
|
+
pressRow: (id: TableSelectionKey | undefined, interaction?: TableSelectionInteraction) => void;
|
|
127
|
+
setFocusedCell: (key: string | null) => void;
|
|
128
|
+
setFocusedRow: (token: string | null, edge?: TableRowFocusEdge) => void;
|
|
129
|
+
setFocusVisible: (visible: boolean) => void;
|
|
130
|
+
moveFocus: (direction: 'up' | 'down' | 'left' | 'right', interaction?: TableSelectionInteraction) => void;
|
|
131
|
+
moveToRowStart: () => void;
|
|
132
|
+
moveToRowEnd: () => void;
|
|
133
|
+
moveToBodyRowStart: () => void;
|
|
134
|
+
moveToBodyRowEnd: () => void;
|
|
135
|
+
moveToGridStart: () => void;
|
|
136
|
+
moveToGridEnd: () => void;
|
|
137
|
+
toggleRowSelection: (id: TableSelectionKey | undefined) => void;
|
|
138
|
+
selectAllRows: () => void;
|
|
139
|
+
deselectAllRows: () => void;
|
|
140
|
+
setSelection: (keys: Iterable<TableSelectionKey>) => void;
|
|
141
|
+
setSelectionMode: (mode: TableSelectionMode) => void;
|
|
142
|
+
setSelectionBehavior: (behavior: TableSelectionBehavior) => void;
|
|
143
|
+
setDisabledKeys: (keys?: Iterable<TableSelectionKey>) => void;
|
|
144
|
+
setSortDescriptor: (descriptor: TableSortDescriptor | undefined) => void;
|
|
145
|
+
toggleSort: (columnId: string) => void;
|
|
146
|
+
isColumnSortable: (columnId: string) => boolean;
|
|
147
|
+
getSortDirection: (columnId: string) => TableSortDirection | undefined;
|
|
148
|
+
};
|
|
149
|
+
export type TableSectionContext = {
|
|
150
|
+
section: TableSectionKind;
|
|
151
|
+
};
|
|
152
|
+
export type TableRowContext = {
|
|
153
|
+
rowToken: string;
|
|
154
|
+
section: TableSectionKind;
|
|
155
|
+
rowId?: TableSelectionKey;
|
|
156
|
+
isDisabled: boolean;
|
|
157
|
+
cellOrderVersion: Readable<number>;
|
|
158
|
+
registerCellToken: (token: string, getElement?: () => HTMLElement | undefined) => void;
|
|
159
|
+
unregisterCellToken: (token: string) => void;
|
|
160
|
+
getCellIndex: (token: string) => number;
|
|
161
|
+
};
|
|
162
|
+
export type TableColumnContext = {
|
|
163
|
+
token: string;
|
|
164
|
+
id: string;
|
|
165
|
+
allowsSorting: boolean;
|
|
166
|
+
allowsResizing: boolean;
|
|
167
|
+
isHidden: boolean;
|
|
168
|
+
isRowHeader: boolean;
|
|
169
|
+
textValue?: string;
|
|
170
|
+
width?: TableColumnWidth;
|
|
171
|
+
defaultWidth?: TableColumnWidth;
|
|
172
|
+
minWidth?: number;
|
|
173
|
+
maxWidth?: number;
|
|
174
|
+
};
|
|
175
|
+
export type TableCellContext = {
|
|
176
|
+
cellKey: string;
|
|
177
|
+
registerFocusDelegate: (getElement: () => HTMLElement | undefined) => void;
|
|
178
|
+
unregisterFocusDelegate: () => void;
|
|
179
|
+
notifyResizerPresent?: () => void;
|
|
180
|
+
notifyResizerRemoved?: () => void;
|
|
181
|
+
};
|
|
182
|
+
export declare function createTableContext(options?: CreateTableContextOptions): TableContext;
|
|
183
|
+
export declare function setTableContext(context: TableContext): TableContext;
|
|
184
|
+
export declare function getTableContext(): TableContext | undefined;
|
|
185
|
+
export declare function useTableContext(): TableContext;
|
|
186
|
+
export declare function setTableSectionContext(context: TableSectionContext): TableSectionContext;
|
|
187
|
+
export declare function getTableSectionContext(): TableSectionContext | undefined;
|
|
188
|
+
export declare function useTableSectionContext(): TableSectionContext;
|
|
189
|
+
export declare function setTableRowContext(context: TableRowContext): TableRowContext;
|
|
190
|
+
export declare function getTableRowContext(): TableRowContext | undefined;
|
|
191
|
+
export declare function useTableRowContext(): TableRowContext;
|
|
192
|
+
export declare function setTableCellContext(context: TableCellContext): TableCellContext;
|
|
193
|
+
export declare function getTableCellContext(): TableCellContext | undefined;
|
|
194
|
+
export declare function useTableCellContext(): TableCellContext;
|
|
195
|
+
export declare function setTableColumnContext(context: TableColumnContext): TableColumnContext;
|
|
196
|
+
export declare function getTableColumnContext(): TableColumnContext | undefined;
|
|
197
|
+
export declare function useTableColumnContext(): TableColumnContext;
|
|
198
|
+
export {};
|