@lavalogic/scoria 0.37.44 → 0.37.46
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/README.md +58 -58
- package/dist/Components/AccordionGroup.svelte +46 -46
- package/dist/Components/AccordionGroupButton.svelte +76 -76
- package/dist/Components/Action.svelte +136 -136
- package/dist/Components/ActionProps.d.ts +2 -6
- package/dist/Components/AlertModal.svelte +195 -183
- package/dist/Components/AppointmentCalendar/AppointmentCalendar.svelte +702 -702
- package/dist/Components/Base/BaseModal.svelte +125 -125
- package/dist/Components/Base/ContextWrapper.svelte +72 -72
- package/dist/Components/Base/Pagination.svelte +198 -198
- package/dist/Components/Base/Snippets.svelte +36 -36
- package/dist/Components/BigRadioSet.svelte +38 -38
- package/dist/Components/Bubble.svelte +101 -101
- package/dist/Components/Button.svelte +209 -209
- package/dist/Components/ButtonProps.d.ts +2 -6
- package/dist/Components/Checkbox.svelte +86 -86
- package/dist/Components/CollapsibleCard.svelte +78 -78
- package/dist/Components/Contexts/ContextMenu.svelte +164 -164
- package/dist/Components/Contexts/ContextMenuDivider.svelte +15 -15
- package/dist/Components/Contexts/ContextMenuOption.svelte +60 -60
- package/dist/Components/Contexts/Toast.svelte +86 -83
- package/dist/Components/Contexts/Toast.svelte.d.ts +8 -5
- package/dist/Components/Contexts/ToastContainer.svelte +65 -65
- package/dist/Components/Contexts/Tooltip.svelte +37 -37
- package/dist/Components/DataMatrixIcon.svelte +112 -112
- package/dist/Components/DataMatrixIconProps.d.ts +3 -13
- package/dist/Components/DateInput.svelte +148 -148
- package/dist/Components/DatePicker.svelte +300 -300
- package/dist/Components/DesktopModal.svelte +90 -90
- package/dist/Components/Dial.svelte +204 -204
- package/dist/Components/DialProps.d.ts +1 -18
- package/dist/Components/DimensionInput.svelte +170 -170
- package/dist/Components/DragMenu/DragMenuHolder.svelte +119 -119
- package/dist/Components/DragMenu/DraggableCard.svelte +77 -77
- package/dist/Components/FileCard.svelte +24 -24
- package/dist/Components/FileUpload.svelte +236 -236
- package/dist/Components/GridInput.svelte +196 -200
- package/dist/Components/GridInputSet.svelte +29 -29
- package/dist/Components/HorizontalTabGroup.svelte +82 -82
- package/dist/Components/HorizontalTabGroupButton.svelte +44 -44
- package/dist/Components/Icon.svelte +128 -128
- package/dist/Components/IconProps.d.ts +2 -7
- package/dist/Components/Icons.js +357 -357
- package/dist/Components/LoadingAnimation.svelte +29 -29
- package/dist/Components/LoadingModal.svelte +45 -45
- package/dist/Components/LoadingOverlay.svelte +25 -25
- package/dist/Components/LoadingOverlayProps.d.ts +3 -7
- package/dist/Components/Modal.svelte +258 -258
- package/dist/Components/ModalProps.d.ts +0 -3
- package/dist/Components/MultiSelect.svelte +220 -220
- package/dist/Components/MultiSelectCommonProps.d.ts +6 -17
- package/dist/Components/Nav/Nav.svelte +110 -99
- package/dist/Components/Nav/NavProps.d.ts +4 -11
- package/dist/Components/Nav/NavServiceMenuList.svelte +43 -43
- package/dist/Components/Nav/NavTab.svelte +62 -62
- package/dist/Components/Nav/ServiceMenuItem.svelte +100 -100
- package/dist/Components/Nav/ServicesNav.svelte +80 -80
- package/dist/Components/NumberInput.svelte +157 -157
- package/dist/Components/PageHeading.svelte +25 -25
- package/dist/Components/PasswordInput.svelte +88 -88
- package/dist/Components/Portal.svelte +36 -36
- package/dist/Components/ProgressBubble.svelte +107 -108
- package/dist/Components/ProgressBubbleProps.d.ts +3 -3
- package/dist/Components/QuerySelect.svelte +366 -366
- package/dist/Components/QuerySelectProps.d.ts +4 -14
- package/dist/Components/SingleSelect.svelte +250 -250
- package/dist/Components/SingleSelectCommonProps.d.ts +3 -19
- package/dist/Components/StepButton.svelte +70 -70
- package/dist/Components/StepForm.svelte +140 -140
- package/dist/Components/Switch.svelte +69 -69
- package/dist/Components/Table/ARCHITECTURE.md +298 -0
- package/dist/Components/Table/Body/QuickSearchCell.svelte +683 -694
- package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte +51 -51
- package/dist/Components/Table/Body/Rows/ColumnList.svelte +59 -59
- package/dist/Components/Table/Body/Rows/ColumnListRow.svelte +456 -478
- package/dist/Components/Table/Body/Rows/Columns/AccessorComponent.svelte +79 -79
- package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +185 -188
- package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +124 -124
- package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +120 -120
- package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +230 -230
- package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +105 -105
- package/dist/Components/Table/Body/Rows/Columns/SelectColumn.d.ts +12 -9
- package/dist/Components/Table/Body/Rows/Columns/SelectTableCell.d.ts +5 -5
- package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte +87 -87
- package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +126 -126
- package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +159 -159
- package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +246 -246
- package/dist/Components/Table/Body/Rows/Columns/TableDatePickerProps.d.ts +4 -4
- package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +216 -216
- package/dist/Components/Table/Body/Rows/Columns/TableQueryCell.d.ts +6 -5
- package/dist/Components/Table/Body/Rows/Columns/TableQueryColumn.d.ts +7 -6
- package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +252 -257
- package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +179 -179
- package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +221 -229
- package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte.d.ts +11 -11
- package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +197 -197
- package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +190 -190
- package/dist/Components/Table/Body/Rows/TableRow.svelte +290 -290
- package/dist/Components/Table/Body/TableBody.svelte +155 -155
- package/dist/Components/Table/ColumnDefinitions/ExampleItemColumnDefRepository.svelte.js +2 -3
- package/dist/Components/Table/ColumnFactory.svelte.d.ts +9 -11
- package/dist/Components/Table/ColumnFactory.svelte.js +110 -143
- package/dist/Components/Table/ColumnKindRegistry.d.ts +112 -0
- package/dist/Components/Table/ColumnKindRegistry.js +63 -0
- package/dist/Components/Table/Headers/HighlightAllHeader.svelte +41 -41
- package/dist/Components/Table/Headers/SelectAllHeader.svelte +30 -30
- package/dist/Components/Table/Headers/TableHead.svelte +415 -413
- package/dist/Components/Table/Misc/ColumnPanel.svelte +94 -94
- package/dist/Components/Table/Misc/ColumnPanelModal.svelte +112 -112
- package/dist/Components/Table/Misc/FilterInput.svelte +620 -644
- package/dist/Components/Table/Misc/FilterInput.svelte.d.ts +12 -12
- package/dist/Components/Table/Misc/FilterInputProps.d.ts +2 -2
- package/dist/Components/Table/Misc/FilterPanel.svelte +257 -257
- package/dist/Components/Table/Misc/FilterPanelModal.svelte +30 -30
- package/dist/Components/Table/Misc/SidePanel.svelte +35 -35
- package/dist/Components/Table/Misc/TableFooter.svelte +311 -311
- package/dist/Components/Table/Misc/TableHorizontalBar.svelte +125 -125
- package/dist/Components/Table/Misc/TableSidebar.svelte +157 -157
- package/dist/Components/Table/Misc/ToolboxPanel.svelte +100 -100
- package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +107 -107
- package/dist/Components/Table/NestedTable.svelte +130 -133
- package/dist/Components/Table/SubApis.svelte.d.ts +1 -5
- package/dist/Components/Table/SubApis.svelte.js +33 -32
- package/dist/Components/Table/Table.svelte +692 -745
- package/dist/Components/Table/TableHelpers.svelte.d.ts +6 -19
- package/dist/Components/Table/TableHelpers.svelte.js +6 -14
- package/dist/Components/Table/Types/Columns/Column.d.ts +2 -2
- package/dist/Components/Table/Types/Columns/DateColumn.d.ts +3 -3
- package/dist/Components/Table/Types/Columns/DateTableCell.d.ts +7 -7
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.d.ts +7 -8
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/AccessorDef.svelte.js +4 -5
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.d.ts +11 -14
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/CheckboxDef.svelte.js +3 -4
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.d.ts +7 -11
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/DateInputDef.svelte.js +3 -3
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.d.ts +13 -18
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/NumberInputDef.svelte.js +4 -5
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.d.ts +5 -5
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/QueryDef.svelte.js +2 -2
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.d.ts +15 -12
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/SelectDef.svelte.js +4 -5
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.d.ts +8 -12
- package/dist/Components/Table/Types/Columns/Definitions/Accessors/TextInputDef.svelte.js +3 -3
- package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.d.ts +6 -6
- package/dist/Components/Table/Types/Columns/Definitions/Actions/ActionsDef.svelte.js +3 -3
- package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.d.ts +49 -16
- package/dist/Components/Table/Types/Columns/Definitions/ColumnDef.svelte.js +27 -5
- package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.d.ts +7 -7
- package/dist/Components/Table/Types/Columns/Definitions/Display/AbstractDisplayDef.svelte.js +4 -4
- package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.d.ts +5 -5
- package/dist/Components/Table/Types/Columns/Definitions/Display/BubbleDef.svelte.js +2 -2
- package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.d.ts +5 -5
- package/dist/Components/Table/Types/Columns/Definitions/Display/DisplayDef.svelte.js +2 -2
- package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.d.ts +5 -5
- package/dist/Components/Table/Types/Columns/Definitions/Display/ProgressBarDef.svelte.js +2 -2
- package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.d.ts +5 -5
- package/dist/Components/Table/Types/Columns/Definitions/Display/ValidityDef.svelte.js +2 -2
- package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.d.ts +11 -19
- package/dist/Components/Table/Types/Columns/Definitions/Expand/ExpandDef.svelte.js +4 -8
- package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.d.ts +6 -7
- package/dist/Components/Table/Types/Columns/Definitions/FilterOnly/FilterOnlyDef.svelte.js +3 -4
- package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.d.ts +9 -9
- package/dist/Components/Table/Types/Columns/Definitions/RowSelection/RowSelectionDef.svelte.js +4 -4
- package/dist/Components/Table/Types/Columns/ExpandTableCell.d.ts +5 -5
- package/dist/Components/Table/Types/Columns/ProgressBarTableCell.d.ts +6 -6
- package/dist/Components/Table/Types/Columns/TableCell.d.ts +7 -6
- package/dist/Components/Table/Types/Context/ClipboardState.svelte.d.ts +98 -0
- package/dist/Components/Table/Types/Context/ClipboardState.svelte.js +290 -0
- package/dist/Components/Table/Types/Context/ColumnLayoutState.svelte.d.ts +17 -45
- package/dist/Components/Table/Types/Context/ColumnLayoutState.svelte.js +17 -45
- package/dist/Components/Table/Types/Context/FilteringState.svelte.d.ts +9 -20
- package/dist/Components/Table/Types/Context/FilteringState.svelte.js +9 -20
- package/dist/Components/Table/Types/Context/FocusState.svelte.d.ts +23 -42
- package/dist/Components/Table/Types/Context/FocusState.svelte.js +32 -59
- package/dist/Components/Table/Types/Context/ITable.d.ts +5 -8
- package/dist/Components/Table/Types/Context/PreferencesState.svelte.d.ts +29 -56
- package/dist/Components/Table/Types/Context/PreferencesState.svelte.js +28 -55
- package/dist/Components/Table/Types/Context/QueryValuesState.svelte.d.ts +50 -0
- package/dist/Components/Table/Types/Context/QueryValuesState.svelte.js +62 -0
- package/dist/Components/Table/Types/Context/SelectionState.svelte.d.ts +17 -28
- package/dist/Components/Table/Types/Context/SelectionState.svelte.js +17 -28
- package/dist/Components/Table/Types/Context/SortingState.svelte.d.ts +15 -29
- package/dist/Components/Table/Types/Context/SortingState.svelte.js +17 -31
- package/dist/Components/Table/Types/Context/TableContext.svelte.d.ts +212 -325
- package/dist/Components/Table/Types/Context/TableContext.svelte.js +292 -706
- package/dist/Components/Table/Types/Context/VirtualisationState.svelte.d.ts +62 -79
- package/dist/Components/Table/Types/Context/VirtualisationState.svelte.js +54 -73
- package/dist/Components/Table/Types/DataRepository/BuiltInRemoteRepository.svelte.d.ts +16 -27
- package/dist/Components/Table/Types/DataRepository/BuiltInRemoteRepository.svelte.js +16 -27
- package/dist/Components/Table/Types/DataRepository/IDataRepository.d.ts +12 -15
- package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.d.ts +15 -30
- package/dist/Components/Table/Types/DataRepository/TableDataRepository.svelte.js +16 -28
- package/dist/Components/Table/Types/Header.d.ts +4 -4
- package/dist/Components/Table/Types/HeaderGroup.d.ts +5 -5
- package/dist/Components/Table/Types/Public/index.d.ts +2 -4
- package/dist/Components/Table/Types/Public/index.js +2 -4
- package/dist/Components/Table/clipboardEscape.d.ts +32 -0
- package/dist/Components/Table/clipboardEscape.js +45 -0
- package/dist/Components/Table/createTable.svelte.d.ts +8 -18
- package/dist/Components/Table/createTable.svelte.js +19 -47
- package/dist/Components/Test/TestContextConsumer.svelte +13 -13
- package/dist/Components/TextArea.svelte +130 -130
- package/dist/Components/TextInput.svelte +176 -176
- package/dist/Components/ThreeStateRadio.svelte +131 -131
- package/dist/Components/Touch/BoolCard.svelte +45 -45
- package/dist/Components/Touch/DateModal.svelte +209 -209
- package/dist/Components/Touch/EditCard.svelte +59 -59
- package/dist/Components/Touch/InfoCard.svelte +31 -31
- package/dist/Components/Touch/InfoTextCard.svelte +28 -28
- package/dist/Components/Touch/ModalExplanation.svelte +17 -17
- package/dist/Components/Touch/NumberKeyboard.svelte +225 -225
- package/dist/Components/Touch/NumberModal.svelte +79 -79
- package/dist/Components/Touch/PlusMinusCard.svelte +46 -46
- package/dist/Components/Touch/SelectModal.svelte +123 -123
- package/dist/Components/Touch/SummaryCard.svelte +93 -93
- package/dist/Components/Touch/TextAreaModal.svelte +95 -95
- package/dist/Components/Touch/TextModal.svelte +106 -106
- package/dist/Components/Touch/TouchCard.svelte +33 -33
- package/dist/Components/Touch/TouchModal.svelte +274 -274
- package/dist/Components/Touch/UtilityButton.svelte +109 -109
- package/dist/Components/VerticalTabGroup.svelte +79 -79
- package/dist/Components/VerticalTabGroupButton.svelte +58 -58
- package/dist/Contexts/ToastContext.svelte.js +3 -4
- package/dist/Helpers/Datamatrix.d.ts +19 -19
- package/dist/Helpers/Datamatrix.js +291 -291
- package/dist/Helpers/Helpers.svelte.d.ts +47 -4
- package/dist/Helpers/Helpers.svelte.js +97 -4
- package/dist/Helpers/dropdownPortal.d.ts +26 -41
- package/dist/Helpers/dropdownPortal.js +62 -116
- package/dist/Types/Examples/ExampleModal.svelte +35 -35
- package/dist/index.d.ts +1 -2
- package/dist/index.js +1 -1
- package/dist/scss/_basics.scss +12 -12
- package/dist/scss/_colours.scss +134 -134
- package/dist/scss/_mixins.scss +3358 -3360
- package/dist/scss/_motion.scss +57 -57
- package/dist/scss/_sizing.scss +85 -85
- package/dist/scss/_transitions.scss +8 -8
- package/package.json +8 -6
|
@@ -1,157 +1,157 @@
|
|
|
1
|
-
<svelte:options runes />
|
|
2
|
-
|
|
3
|
-
<script
|
|
4
|
-
lang="ts"
|
|
5
|
-
generics="T extends object, IdType extends Primitive"
|
|
6
|
-
>
|
|
7
|
-
import { getContext } from 'svelte';
|
|
8
|
-
import { TableContext } from '../Types/Context/TableContext.svelte.js';
|
|
9
|
-
import type { Primitive } from '../Types/Context/TableInitOptions.js';
|
|
10
|
-
import QuickSearchCell from './QuickSearchCell.svelte';
|
|
11
|
-
import TableRow from './Rows/TableRow.svelte';
|
|
12
|
-
import type { TableBodyProps } from './TableBodyProps.js';
|
|
13
|
-
|
|
14
|
-
const { oncontextmenu }: TableBodyProps = $props();
|
|
15
|
-
|
|
16
|
-
const tableContext = getContext<TableContext<T, IdType>>(TableContext.identifier);
|
|
17
|
-
|
|
18
|
-
// Visible columns split by pinning side, matching the cell-side
|
|
19
|
-
// arrays used by `TableRow`. Each side is reactive on column
|
|
20
|
-
// visibility and pinning state.
|
|
21
|
-
const leftColumns = $derived(tableContext.table.getLeftVisibleLeafColumns());
|
|
22
|
-
const centreColumns = $derived(tableContext.table.getCenterVisibleLeafColumns());
|
|
23
|
-
const rightColumns = $derived(tableContext.table.getRightVisibleLeafColumns());
|
|
24
|
-
|
|
25
|
-
const showHighlightColumn = $derived(
|
|
26
|
-
leftColumns.length + centreColumns.length + rightColumns.length > 0
|
|
27
|
-
);
|
|
28
|
-
|
|
29
|
-
// Cumulative pinning offsets for the quick-filter row's sticky
|
|
30
|
-
// cells. Reads rendered widths from `_columnRenderedWidths`
|
|
31
|
-
// (populated by the ResizeObserver in TableHead) so filter inputs
|
|
32
|
-
// for pinned columns stay aligned with their column even when the
|
|
33
|
-
// column flexes wider than `columnDef.width`.
|
|
34
|
-
function renderedColumnWidth(columnId: string, declared: number): number {
|
|
35
|
-
return tableContext._columnRenderedWidths.get(columnId) ?? declared;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
const leftOffsets: Array<number> = $derived.by(() => {
|
|
39
|
-
void tableContext._columnRenderedWidths.size;
|
|
40
|
-
const offsets: Array<number> = [];
|
|
41
|
-
let cumulative = showHighlightColumn ? 20 : 0;
|
|
42
|
-
for (const col of leftColumns) {
|
|
43
|
-
offsets.push(cumulative);
|
|
44
|
-
cumulative += renderedColumnWidth(col.id, col.columnDef.width);
|
|
45
|
-
}
|
|
46
|
-
return offsets;
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
const rightOffsets: Array<number> = $derived.by(() => {
|
|
50
|
-
void tableContext._columnRenderedWidths.size;
|
|
51
|
-
const offsets = new Array<number>(rightColumns.length).fill(0);
|
|
52
|
-
let cumulative = 0;
|
|
53
|
-
for (let i = rightColumns.length - 1; i >= 0; i--) {
|
|
54
|
-
offsets[i] = cumulative;
|
|
55
|
-
cumulative += renderedColumnWidth(rightColumns[i].id, rightColumns[i].columnDef.width);
|
|
56
|
-
}
|
|
57
|
-
return offsets;
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
//
|
|
61
|
-
//
|
|
62
|
-
//
|
|
63
|
-
//
|
|
64
|
-
//
|
|
65
|
-
const virtualisation = $derived(tableContext._virtualisation);
|
|
66
|
-
const visibleRows = $derived(virtualisation.visibleRows);
|
|
67
|
-
const topSpacerHeight = $derived(virtualisation.topSpacerHeight);
|
|
68
|
-
const bottomSpacerHeight = $derived(virtualisation.bottomSpacerHeight);
|
|
69
|
-
</script>
|
|
70
|
-
|
|
71
|
-
<div
|
|
72
|
-
role="rowgroup"
|
|
73
|
-
class="datatable-body"
|
|
74
|
-
{oncontextmenu}
|
|
75
|
-
>
|
|
76
|
-
{#if tableContext.allowQuickFiltering && tableContext.showQuickFiltering && showHighlightColumn}
|
|
77
|
-
<div
|
|
78
|
-
role="row"
|
|
79
|
-
class="datatable-row quick-filter-row"
|
|
80
|
-
>
|
|
81
|
-
{#if showHighlightColumn}
|
|
82
|
-
<div
|
|
83
|
-
role="cell"
|
|
84
|
-
class="cell highlight-dud pinned-left"
|
|
85
|
-
style="left: 0px"
|
|
86
|
-
aria-hidden="true"
|
|
87
|
-
>
|
|
88
|
-
|
|
89
|
-
</div>
|
|
90
|
-
{/if}
|
|
91
|
-
{#each leftColumns as column, index (column.id)}
|
|
92
|
-
<div
|
|
93
|
-
role="cell"
|
|
94
|
-
class="cell pinned-left"
|
|
95
|
-
style="left: {leftOffsets[index]}px"
|
|
96
|
-
>
|
|
97
|
-
<QuickSearchCell
|
|
98
|
-
{column}
|
|
99
|
-
customFilters={tableContext.remoteFilters}
|
|
100
|
-
/>
|
|
101
|
-
</div>
|
|
102
|
-
{/each}
|
|
103
|
-
{#each centreColumns as column (column.id)}
|
|
104
|
-
<div
|
|
105
|
-
role="cell"
|
|
106
|
-
class="cell"
|
|
107
|
-
>
|
|
108
|
-
<QuickSearchCell
|
|
109
|
-
{column}
|
|
110
|
-
customFilters={tableContext.remoteFilters}
|
|
111
|
-
/>
|
|
112
|
-
</div>
|
|
113
|
-
{/each}
|
|
114
|
-
{#each rightColumns as column, index (column.id)}
|
|
115
|
-
<div
|
|
116
|
-
role="cell"
|
|
117
|
-
class="cell pinned-right"
|
|
118
|
-
style="right: {rightOffsets[index]}px"
|
|
119
|
-
>
|
|
120
|
-
<QuickSearchCell
|
|
121
|
-
{column}
|
|
122
|
-
customFilters={tableContext.remoteFilters}
|
|
123
|
-
/>
|
|
124
|
-
</div>
|
|
125
|
-
{/each}
|
|
126
|
-
</div>
|
|
127
|
-
{/if}
|
|
128
|
-
|
|
129
|
-
{#if topSpacerHeight > 0}
|
|
130
|
-
<div
|
|
131
|
-
role="presentation"
|
|
132
|
-
class="virtual-spacer"
|
|
133
|
-
style="height: {topSpacerHeight}px;"
|
|
134
|
-
></div>
|
|
135
|
-
{/if}
|
|
136
|
-
|
|
137
|
-
{#each visibleRows as { row } (row.id)}
|
|
138
|
-
{@const originalIndex = row.visibleIndex}
|
|
139
|
-
<TableRow
|
|
140
|
-
{row}
|
|
141
|
-
odd={originalIndex % 2 == 1}
|
|
142
|
-
includeHighlight={showHighlightColumn}
|
|
143
|
-
/>
|
|
144
|
-
{/each}
|
|
145
|
-
|
|
146
|
-
{#if bottomSpacerHeight > 0}
|
|
147
|
-
<div
|
|
148
|
-
role="presentation"
|
|
149
|
-
class="virtual-spacer"
|
|
150
|
-
style="height: {bottomSpacerHeight}px;"
|
|
151
|
-
></div>
|
|
152
|
-
{/if}
|
|
153
|
-
</div>
|
|
154
|
-
|
|
1
|
+
<svelte:options runes />
|
|
2
|
+
|
|
3
|
+
<script
|
|
4
|
+
lang="ts"
|
|
5
|
+
generics="T extends object, IdType extends Primitive"
|
|
6
|
+
>
|
|
7
|
+
import { getContext } from 'svelte';
|
|
8
|
+
import { TableContext } from '../Types/Context/TableContext.svelte.js';
|
|
9
|
+
import type { Primitive } from '../Types/Context/TableInitOptions.js';
|
|
10
|
+
import QuickSearchCell from './QuickSearchCell.svelte';
|
|
11
|
+
import TableRow from './Rows/TableRow.svelte';
|
|
12
|
+
import type { TableBodyProps } from './TableBodyProps.js';
|
|
13
|
+
|
|
14
|
+
const { oncontextmenu }: TableBodyProps = $props();
|
|
15
|
+
|
|
16
|
+
const tableContext = getContext<TableContext<T, IdType>>(TableContext.identifier);
|
|
17
|
+
|
|
18
|
+
// Visible columns split by pinning side, matching the cell-side
|
|
19
|
+
// arrays used by `TableRow`. Each side is reactive on column
|
|
20
|
+
// visibility and pinning state.
|
|
21
|
+
const leftColumns = $derived(tableContext.table.getLeftVisibleLeafColumns());
|
|
22
|
+
const centreColumns = $derived(tableContext.table.getCenterVisibleLeafColumns());
|
|
23
|
+
const rightColumns = $derived(tableContext.table.getRightVisibleLeafColumns());
|
|
24
|
+
|
|
25
|
+
const showHighlightColumn = $derived(
|
|
26
|
+
leftColumns.length + centreColumns.length + rightColumns.length > 0
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
// Cumulative pinning offsets for the quick-filter row's sticky
|
|
30
|
+
// cells. Reads rendered widths from `_columnRenderedWidths`
|
|
31
|
+
// (populated by the ResizeObserver in TableHead) so filter inputs
|
|
32
|
+
// for pinned columns stay aligned with their column even when the
|
|
33
|
+
// column flexes wider than `columnDef.width`.
|
|
34
|
+
function renderedColumnWidth(columnId: string, declared: number): number {
|
|
35
|
+
return tableContext._columnRenderedWidths.get(columnId) ?? declared;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const leftOffsets: Array<number> = $derived.by(() => {
|
|
39
|
+
void tableContext._columnRenderedWidths.size;
|
|
40
|
+
const offsets: Array<number> = [];
|
|
41
|
+
let cumulative = showHighlightColumn ? 20 : 0;
|
|
42
|
+
for (const col of leftColumns) {
|
|
43
|
+
offsets.push(cumulative);
|
|
44
|
+
cumulative += renderedColumnWidth(col.id, col.columnDef.width);
|
|
45
|
+
}
|
|
46
|
+
return offsets;
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
const rightOffsets: Array<number> = $derived.by(() => {
|
|
50
|
+
void tableContext._columnRenderedWidths.size;
|
|
51
|
+
const offsets = new Array<number>(rightColumns.length).fill(0);
|
|
52
|
+
let cumulative = 0;
|
|
53
|
+
for (let i = rightColumns.length - 1; i >= 0; i--) {
|
|
54
|
+
offsets[i] = cumulative;
|
|
55
|
+
cumulative += renderedColumnWidth(rightColumns[i].id, rightColumns[i].columnDef.width);
|
|
56
|
+
}
|
|
57
|
+
return offsets;
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// Row virtualisation. When the current row count is above the
|
|
61
|
+
// `_virtualisation` threshold (100 rows by default), only rows in the
|
|
62
|
+
// viewport plus an overscan band are rendered. Two spacer rows (top
|
|
63
|
+
// and bottom) reserve the rest of the body height so the scrollbar
|
|
64
|
+
// matches the un-virtualised length.
|
|
65
|
+
const virtualisation = $derived(tableContext._virtualisation);
|
|
66
|
+
const visibleRows = $derived(virtualisation.visibleRows);
|
|
67
|
+
const topSpacerHeight = $derived(virtualisation.topSpacerHeight);
|
|
68
|
+
const bottomSpacerHeight = $derived(virtualisation.bottomSpacerHeight);
|
|
69
|
+
</script>
|
|
70
|
+
|
|
71
|
+
<div
|
|
72
|
+
role="rowgroup"
|
|
73
|
+
class="datatable-body"
|
|
74
|
+
{oncontextmenu}
|
|
75
|
+
>
|
|
76
|
+
{#if tableContext.allowQuickFiltering && tableContext.showQuickFiltering && showHighlightColumn}
|
|
77
|
+
<div
|
|
78
|
+
role="row"
|
|
79
|
+
class="datatable-row quick-filter-row"
|
|
80
|
+
>
|
|
81
|
+
{#if showHighlightColumn}
|
|
82
|
+
<div
|
|
83
|
+
role="cell"
|
|
84
|
+
class="cell highlight-dud pinned-left"
|
|
85
|
+
style="left: 0px"
|
|
86
|
+
aria-hidden="true"
|
|
87
|
+
>
|
|
88
|
+
|
|
89
|
+
</div>
|
|
90
|
+
{/if}
|
|
91
|
+
{#each leftColumns as column, index (column.id)}
|
|
92
|
+
<div
|
|
93
|
+
role="cell"
|
|
94
|
+
class="cell pinned-left"
|
|
95
|
+
style="left: {leftOffsets[index]}px"
|
|
96
|
+
>
|
|
97
|
+
<QuickSearchCell
|
|
98
|
+
{column}
|
|
99
|
+
customFilters={tableContext.remoteFilters}
|
|
100
|
+
/>
|
|
101
|
+
</div>
|
|
102
|
+
{/each}
|
|
103
|
+
{#each centreColumns as column (column.id)}
|
|
104
|
+
<div
|
|
105
|
+
role="cell"
|
|
106
|
+
class="cell"
|
|
107
|
+
>
|
|
108
|
+
<QuickSearchCell
|
|
109
|
+
{column}
|
|
110
|
+
customFilters={tableContext.remoteFilters}
|
|
111
|
+
/>
|
|
112
|
+
</div>
|
|
113
|
+
{/each}
|
|
114
|
+
{#each rightColumns as column, index (column.id)}
|
|
115
|
+
<div
|
|
116
|
+
role="cell"
|
|
117
|
+
class="cell pinned-right"
|
|
118
|
+
style="right: {rightOffsets[index]}px"
|
|
119
|
+
>
|
|
120
|
+
<QuickSearchCell
|
|
121
|
+
{column}
|
|
122
|
+
customFilters={tableContext.remoteFilters}
|
|
123
|
+
/>
|
|
124
|
+
</div>
|
|
125
|
+
{/each}
|
|
126
|
+
</div>
|
|
127
|
+
{/if}
|
|
128
|
+
|
|
129
|
+
{#if topSpacerHeight > 0}
|
|
130
|
+
<div
|
|
131
|
+
role="presentation"
|
|
132
|
+
class="virtual-spacer"
|
|
133
|
+
style="height: {topSpacerHeight}px;"
|
|
134
|
+
></div>
|
|
135
|
+
{/if}
|
|
136
|
+
|
|
137
|
+
{#each visibleRows as { row } (row.id)}
|
|
138
|
+
{@const originalIndex = row.visibleIndex}
|
|
139
|
+
<TableRow
|
|
140
|
+
{row}
|
|
141
|
+
odd={originalIndex % 2 == 1}
|
|
142
|
+
includeHighlight={showHighlightColumn}
|
|
143
|
+
/>
|
|
144
|
+
{/each}
|
|
145
|
+
|
|
146
|
+
{#if bottomSpacerHeight > 0}
|
|
147
|
+
<div
|
|
148
|
+
role="presentation"
|
|
149
|
+
class="virtual-spacer"
|
|
150
|
+
style="height: {bottomSpacerHeight}px;"
|
|
151
|
+
></div>
|
|
152
|
+
{/if}
|
|
153
|
+
</div>
|
|
154
|
+
|
|
155
155
|
<style>.cell {
|
|
156
156
|
display: block;
|
|
157
157
|
position: relative;
|
|
@@ -213,4 +213,4 @@
|
|
|
213
213
|
pointer-events: none;
|
|
214
214
|
--row-stripe-height: var(--height, 3rem);
|
|
215
215
|
background-image: repeating-linear-gradient(to bottom, #ffffff 0, #ffffff var(--row-stripe-height), #f4f7f9 var(--row-stripe-height), #f4f7f9 calc(2 * var(--row-stripe-height)));
|
|
216
|
-
}</style>
|
|
216
|
+
}</style>
|
|
@@ -130,9 +130,8 @@ export function generateExampleItemColumnDefs(modal) {
|
|
|
130
130
|
},
|
|
131
131
|
isValid,
|
|
132
132
|
filterFn: (_row, _index, value) => {
|
|
133
|
-
// Example fixture:
|
|
134
|
-
//
|
|
135
|
-
// `no-unused-vars` quiet without changing the public signature.
|
|
133
|
+
// Example fixture: value-only inspection. Real callers
|
|
134
|
+
// match against `_row` as well.
|
|
136
135
|
void value;
|
|
137
136
|
return false;
|
|
138
137
|
},
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Runtime for the typed column builder closure
|
|
2
|
+
* Runtime for the typed column builder closure passed to
|
|
3
3
|
* `createTable({ columns: (col) => [...] })`. Each method on the returned
|
|
4
|
-
* `ColumnFactory<TRow>` wraps the matching
|
|
5
|
-
* and returns a `ColumnSpec<TRow, Kind>` whose
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* `ColumnFactory<TRow>` wraps the matching internal `<Name>Def` constructor
|
|
5
|
+
* and returns a `ColumnSpec<TRow, Kind>` whose underlying `ColumnDef` plus
|
|
6
|
+
* any per-column edit handler / reactive dependencies are hidden behind a
|
|
7
|
+
* symbol-keyed property (`InternalSpecPayload`).
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* `
|
|
12
|
-
*
|
|
13
|
-
* fields, with `id` passed explicitly at each call site so its narrowed
|
|
14
|
-
* type survives the spread.
|
|
9
|
+
* This file is a thin facade: it maps the consumer-friendly option names
|
|
10
|
+
* (`accessor`, `minWidth`, …) onto the internal Def field names (`accessorFn`,
|
|
11
|
+
* `minSize`, …) via the `commonProps(...)` helper. `id` is passed explicitly
|
|
12
|
+
* at each call site so its narrowed literal type survives the object spread.
|
|
15
13
|
*/
|
|
16
14
|
import type { CellCoordinates } from './Types/Coordinates/CellCoordinates.js';
|
|
17
15
|
import type { ColumnDef } from './Types/Columns/Definitions/ColumnDef.svelte.js';
|