@simple-table/react 4.0.0 → 4.0.2

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.
Files changed (195) hide show
  1. package/dist/cjs/index.js +1 -1
  2. package/dist/index.es.js +1 -1
  3. package/dist/types/{react/src/PortalBridge.d.ts → PortalBridge.d.ts} +96 -96
  4. package/dist/types/{react/src/SimpleTable.d.ts → SimpleTable.d.ts} +27 -27
  5. package/dist/types/buildVanillaConfig.d.ts +6 -0
  6. package/dist/types/index.d.ts +5 -0
  7. package/dist/types/{react/src/types.d.ts → types.d.ts} +111 -103
  8. package/dist/types/{react/src/utils → utils}/ImperativeDomSlot.d.ts +46 -46
  9. package/dist/types/{react/src/utils → utils}/headersEqual.d.ts +6 -6
  10. package/dist/types/{react/src/utils → utils}/rowsEqual.d.ts +6 -6
  11. package/dist/types/{react/src/utils → utils}/wrapReactRenderer.d.ts +95 -95
  12. package/package.json +12 -7
  13. package/styles.css.d.ts +1 -0
  14. package/dist/types/core/src/consts/column-constraints.d.ts +0 -58
  15. package/dist/types/core/src/consts/general-consts.d.ts +0 -32
  16. package/dist/types/core/src/core/SimpleTableVanilla.d.ts +0 -369
  17. package/dist/types/core/src/core/api/TableAPIImpl.d.ts +0 -78
  18. package/dist/types/core/src/core/dom/DOMManager.d.ts +0 -52
  19. package/dist/types/core/src/core/initialization/TableInitializer.d.ts +0 -34
  20. package/dist/types/core/src/core/rendering/RenderOrchestrator.d.ts +0 -172
  21. package/dist/types/core/src/core/rendering/SectionRenderer.d.ts +0 -119
  22. package/dist/types/core/src/core/rendering/TableRenderer.d.ts +0 -120
  23. package/dist/types/core/src/hooks/ariaAnnouncements.d.ts +0 -37
  24. package/dist/types/core/src/hooks/contentHeight.d.ts +0 -29
  25. package/dist/types/core/src/hooks/expandedDepths.d.ts +0 -69
  26. package/dist/types/core/src/hooks/handleOutsideClick.d.ts +0 -50
  27. package/dist/types/core/src/hooks/previousValue.d.ts +0 -30
  28. package/dist/types/core/src/hooks/scrollbarVisibility.d.ts +0 -65
  29. package/dist/types/core/src/hooks/scrollbarWidth.d.ts +0 -52
  30. package/dist/types/core/src/hooks/useAggregatedRows.d.ts +0 -14
  31. package/dist/types/core/src/hooks/useQuickFilter.d.ts +0 -14
  32. package/dist/types/core/src/hooks/windowResize.d.ts +0 -31
  33. package/dist/types/core/src/icons/AngleDownIcon.d.ts +0 -1
  34. package/dist/types/core/src/icons/AngleLeftIcon.d.ts +0 -1
  35. package/dist/types/core/src/icons/AngleRightIcon.d.ts +0 -1
  36. package/dist/types/core/src/icons/AngleUpIcon.d.ts +0 -1
  37. package/dist/types/core/src/icons/AscIcon.d.ts +0 -1
  38. package/dist/types/core/src/icons/CheckIcon.d.ts +0 -1
  39. package/dist/types/core/src/icons/DescIcon.d.ts +0 -1
  40. package/dist/types/core/src/icons/DragIcon.d.ts +0 -1
  41. package/dist/types/core/src/icons/FilterIcon.d.ts +0 -1
  42. package/dist/types/core/src/icons/SelectIcon.d.ts +0 -1
  43. package/dist/types/core/src/icons/index.d.ts +0 -14
  44. package/dist/types/core/src/index.d.ts +0 -58
  45. package/dist/types/core/src/managers/AnimationCoordinator.d.ts +0 -356
  46. package/dist/types/core/src/managers/AutoScaleManager.d.ts +0 -33
  47. package/dist/types/core/src/managers/DimensionManager.d.ts +0 -84
  48. package/dist/types/core/src/managers/DragHandlerManager.d.ts +0 -44
  49. package/dist/types/core/src/managers/FilterManager.d.ts +0 -36
  50. package/dist/types/core/src/managers/PivotManager.d.ts +0 -35
  51. package/dist/types/core/src/managers/RowManager.d.ts +0 -56
  52. package/dist/types/core/src/managers/RowSelectionManager.d.ts +0 -72
  53. package/dist/types/core/src/managers/ScrollManager.d.ts +0 -38
  54. package/dist/types/core/src/managers/SectionScrollController.d.ts +0 -74
  55. package/dist/types/core/src/managers/SelectionManager/SelectionManager.d.ts +0 -251
  56. package/dist/types/core/src/managers/SelectionManager/index.d.ts +0 -2
  57. package/dist/types/core/src/managers/SelectionManager/keyboardUtils.d.ts +0 -7
  58. package/dist/types/core/src/managers/SelectionManager/mouseUtils.d.ts +0 -16
  59. package/dist/types/core/src/managers/SelectionManager/selectionRangeUtils.d.ts +0 -7
  60. package/dist/types/core/src/managers/SelectionManager/types.d.ts +0 -28
  61. package/dist/types/core/src/managers/SortManager.d.ts +0 -42
  62. package/dist/types/core/src/types/AggregationTypes.d.ts +0 -8
  63. package/dist/types/core/src/types/AnimationsConfig.d.ts +0 -16
  64. package/dist/types/core/src/types/BoundingBox.d.ts +0 -11
  65. package/dist/types/core/src/types/Cell.d.ts +0 -7
  66. package/dist/types/core/src/types/CellChangeProps.d.ts +0 -9
  67. package/dist/types/core/src/types/CellClickProps.d.ts +0 -11
  68. package/dist/types/core/src/types/CellRendererProps.d.ts +0 -32
  69. package/dist/types/core/src/types/CellValue.d.ts +0 -2
  70. package/dist/types/core/src/types/ColumnEditorConfig.d.ts +0 -42
  71. package/dist/types/core/src/types/ColumnEditorCustomRendererProps.d.ts +0 -14
  72. package/dist/types/core/src/types/ColumnEditorRowRendererProps.d.ts +0 -39
  73. package/dist/types/core/src/types/ColumnVisibilityTypes.d.ts +0 -4
  74. package/dist/types/core/src/types/CustomTheme.d.ts +0 -28
  75. package/dist/types/core/src/types/DragHandlerProps.d.ts +0 -14
  76. package/dist/types/core/src/types/EnumOption.d.ts +0 -5
  77. package/dist/types/core/src/types/FilterTypes.d.ts +0 -31
  78. package/dist/types/core/src/types/FlattenedHeader.d.ts +0 -10
  79. package/dist/types/core/src/types/FooterPosition.d.ts +0 -3
  80. package/dist/types/core/src/types/FooterRendererProps.d.ts +0 -17
  81. package/dist/types/core/src/types/GenerateRowIdParams.d.ts +0 -11
  82. package/dist/types/core/src/types/GetRowId.d.ts +0 -16
  83. package/dist/types/core/src/types/HandleResizeStartProps.d.ts +0 -25
  84. package/dist/types/core/src/types/HeaderDropdownProps.d.ts +0 -14
  85. package/dist/types/core/src/types/HeaderObject.d.ts +0 -133
  86. package/dist/types/core/src/types/HeaderRendererProps.d.ts +0 -17
  87. package/dist/types/core/src/types/IconsConfig.d.ts +0 -19
  88. package/dist/types/core/src/types/OnNextPage.d.ts +0 -2
  89. package/dist/types/core/src/types/OnRowGroupExpandProps.d.ts +0 -16
  90. package/dist/types/core/src/types/OnSortProps.d.ts +0 -3
  91. package/dist/types/core/src/types/PanelSection.d.ts +0 -1
  92. package/dist/types/core/src/types/Pinned.d.ts +0 -1
  93. package/dist/types/core/src/types/PinnedSectionsState.d.ts +0 -6
  94. package/dist/types/core/src/types/PivotTypes.d.ts +0 -37
  95. package/dist/types/core/src/types/QuickFilterTypes.d.ts +0 -21
  96. package/dist/types/core/src/types/Row.d.ts +0 -3
  97. package/dist/types/core/src/types/RowButton.d.ts +0 -6
  98. package/dist/types/core/src/types/RowId.d.ts +0 -1
  99. package/dist/types/core/src/types/RowSelectionChangeProps.d.ts +0 -7
  100. package/dist/types/core/src/types/RowSelectionMode.d.ts +0 -8
  101. package/dist/types/core/src/types/RowState.d.ts +0 -12
  102. package/dist/types/core/src/types/RowStateRendererProps.d.ts +0 -18
  103. package/dist/types/core/src/types/SharedTableProps.d.ts +0 -24
  104. package/dist/types/core/src/types/SimpleTableConfig.d.ts +0 -124
  105. package/dist/types/core/src/types/SimpleTableProps.d.ts +0 -125
  106. package/dist/types/core/src/types/SortColumn.d.ts +0 -8
  107. package/dist/types/core/src/types/TableAPI.d.ts +0 -82
  108. package/dist/types/core/src/types/TableHeaderProps.d.ts +0 -17
  109. package/dist/types/core/src/types/TableRow.d.ts +0 -39
  110. package/dist/types/core/src/types/TableRowProps.d.ts +0 -29
  111. package/dist/types/core/src/types/Theme.d.ts +0 -2
  112. package/dist/types/core/src/types/UpdateCellProps.d.ts +0 -8
  113. package/dist/types/core/src/utils/accordionAnimation.d.ts +0 -25
  114. package/dist/types/core/src/utils/aggregationUtils.d.ts +0 -7
  115. package/dist/types/core/src/utils/ariaRowOwnership.d.ts +0 -37
  116. package/dist/types/core/src/utils/asRows.d.ts +0 -7
  117. package/dist/types/core/src/utils/bodyCell/cellLiveRef.d.ts +0 -9
  118. package/dist/types/core/src/utils/bodyCell/content.d.ts +0 -5
  119. package/dist/types/core/src/utils/bodyCell/editing.d.ts +0 -4
  120. package/dist/types/core/src/utils/bodyCell/editors/booleanDropdown.d.ts +0 -2
  121. package/dist/types/core/src/utils/bodyCell/editors/datePicker.d.ts +0 -2
  122. package/dist/types/core/src/utils/bodyCell/editors/dropdown.d.ts +0 -18
  123. package/dist/types/core/src/utils/bodyCell/editors/enumDropdown.d.ts +0 -2
  124. package/dist/types/core/src/utils/bodyCell/eventTracking.d.ts +0 -3
  125. package/dist/types/core/src/utils/bodyCell/expansion.d.ts +0 -12
  126. package/dist/types/core/src/utils/bodyCell/selection.d.ts +0 -7
  127. package/dist/types/core/src/utils/bodyCell/styling.d.ts +0 -11
  128. package/dist/types/core/src/utils/bodyCell/types.d.ts +0 -170
  129. package/dist/types/core/src/utils/bodyCellRenderer.d.ts +0 -6
  130. package/dist/types/core/src/utils/cellClipboardUtils.d.ts +0 -25
  131. package/dist/types/core/src/utils/cellScrollUtils.d.ts +0 -10
  132. package/dist/types/core/src/utils/cellUtils.d.ts +0 -18
  133. package/dist/types/core/src/utils/charts/createBarChart.d.ts +0 -20
  134. package/dist/types/core/src/utils/charts/createLineAreaChart.d.ts +0 -25
  135. package/dist/types/core/src/utils/collapseUtils.d.ts +0 -31
  136. package/dist/types/core/src/utils/columnEditor/columnEditorUtils.d.ts +0 -27
  137. package/dist/types/core/src/utils/columnEditor/createCheckbox.d.ts +0 -21
  138. package/dist/types/core/src/utils/columnEditor/createColumnEditor.d.ts +0 -26
  139. package/dist/types/core/src/utils/columnEditor/createColumnEditorPopout.d.ts +0 -23
  140. package/dist/types/core/src/utils/columnEditor/createColumnEditorRow.d.ts +0 -41
  141. package/dist/types/core/src/utils/csvExportUtils.d.ts +0 -14
  142. package/dist/types/core/src/utils/dateUtils.d.ts +0 -18
  143. package/dist/types/core/src/utils/externalScroll.d.ts +0 -58
  144. package/dist/types/core/src/utils/filterUtils.d.ts +0 -5
  145. package/dist/types/core/src/utils/filters/createBooleanFilter.d.ts +0 -15
  146. package/dist/types/core/src/utils/filters/createCustomSelect.d.ts +0 -20
  147. package/dist/types/core/src/utils/filters/createDateFilter.d.ts +0 -15
  148. package/dist/types/core/src/utils/filters/createDatePicker.d.ts +0 -10
  149. package/dist/types/core/src/utils/filters/createDropdown.d.ts +0 -33
  150. package/dist/types/core/src/utils/filters/createEnumFilter.d.ts +0 -15
  151. package/dist/types/core/src/utils/filters/createFilterActions.d.ts +0 -12
  152. package/dist/types/core/src/utils/filters/createFilterDropdown.d.ts +0 -15
  153. package/dist/types/core/src/utils/filters/createFilterInput.d.ts +0 -16
  154. package/dist/types/core/src/utils/filters/createNumberFilter.d.ts +0 -15
  155. package/dist/types/core/src/utils/filters/createStringFilter.d.ts +0 -15
  156. package/dist/types/core/src/utils/footer/createTableFooter.d.ts +0 -21
  157. package/dist/types/core/src/utils/formatters.d.ts +0 -3
  158. package/dist/types/core/src/utils/generalUtils.d.ts +0 -4
  159. package/dist/types/core/src/utils/headerCell/collapsing.d.ts +0 -6
  160. package/dist/types/core/src/utils/headerCell/dragging.d.ts +0 -5
  161. package/dist/types/core/src/utils/headerCell/editing.d.ts +0 -4
  162. package/dist/types/core/src/utils/headerCell/eventTracking.d.ts +0 -28
  163. package/dist/types/core/src/utils/headerCell/filtering.d.ts +0 -3
  164. package/dist/types/core/src/utils/headerCell/resizing.d.ts +0 -3
  165. package/dist/types/core/src/utils/headerCell/selection.d.ts +0 -10
  166. package/dist/types/core/src/utils/headerCell/sorting.d.ts +0 -3
  167. package/dist/types/core/src/utils/headerCell/styling.d.ts +0 -7
  168. package/dist/types/core/src/utils/headerCell/types.d.ts +0 -110
  169. package/dist/types/core/src/utils/headerCellRenderer.d.ts +0 -4
  170. package/dist/types/core/src/utils/headerUtils.d.ts +0 -41
  171. package/dist/types/core/src/utils/headerWidthUtils.d.ts +0 -121
  172. package/dist/types/core/src/utils/horizontalScrollbarRenderer.d.ts +0 -27
  173. package/dist/types/core/src/utils/infiniteScrollUtils.d.ts +0 -145
  174. package/dist/types/core/src/utils/nestedGridRowRenderer.d.ts +0 -50
  175. package/dist/types/core/src/utils/pinnedColumnUtils.d.ts +0 -29
  176. package/dist/types/core/src/utils/pivot/pivotRows.d.ts +0 -16
  177. package/dist/types/core/src/utils/propSyncEqual.d.ts +0 -60
  178. package/dist/types/core/src/utils/quickFilterUtils.d.ts +0 -14
  179. package/dist/types/core/src/utils/resizeUtils/autoExpandResize.d.ts +0 -32
  180. package/dist/types/core/src/utils/resizeUtils/compensation.d.ts +0 -17
  181. package/dist/types/core/src/utils/resizeUtils/domUpdates.d.ts +0 -15
  182. package/dist/types/core/src/utils/resizeUtils/index.d.ts +0 -26
  183. package/dist/types/core/src/utils/resizeUtils/maxWidth.d.ts +0 -9
  184. package/dist/types/core/src/utils/resizeUtils/parentHeaderResize.d.ts +0 -11
  185. package/dist/types/core/src/utils/resizeUtils/sectionWidths.d.ts +0 -36
  186. package/dist/types/core/src/utils/rowFlattening.d.ts +0 -30
  187. package/dist/types/core/src/utils/rowProcessing.d.ts +0 -65
  188. package/dist/types/core/src/utils/rowSelectionUtils.d.ts +0 -62
  189. package/dist/types/core/src/utils/rowSeparatorRenderer.d.ts +0 -16
  190. package/dist/types/core/src/utils/rowUtils.d.ts +0 -187
  191. package/dist/types/core/src/utils/sortUtils.d.ts +0 -8
  192. package/dist/types/core/src/utils/stateRowRenderer.d.ts +0 -15
  193. package/dist/types/core/src/utils/stickyParentsRenderer.d.ts +0 -53
  194. package/dist/types/react/src/buildVanillaConfig.d.ts +0 -4
  195. package/dist/types/react/src/index.d.ts +0 -5
@@ -1,33 +0,0 @@
1
- /**
2
- * Filter / filter-UI dropdown positioning (React-era parity):
3
- * - Fixed: portaled under `.simple-table-root`, anchored to `anchorElement` (e.g. filter icon) so
4
- * `overflow: hidden` on `.st-header-cell` does not clip the panel. Same top/left +4px and
5
- * container-based flip as legacy React Dropdown.tsx.
6
- * - Absolute: stays under caller’s parent (e.g. `.st-custom-select`); use `anchorElement` for the
7
- * trigger rect vs `position: relative` parent (React CustomSelect pattern).
8
- */
9
- export interface CreateDropdownOptions {
10
- children: HTMLElement;
11
- containerRef?: HTMLElement;
12
- mainBodyRef?: HTMLElement;
13
- /** Rect used for placement. Required for fixed portaling (e.g. filter icon); for absolute, pass the real trigger (button/input) when it differs from the dropdown parent. */
14
- anchorElement?: HTMLElement;
15
- onClose: () => void;
16
- open: boolean;
17
- overflow?: "auto" | "visible" | "hidden";
18
- width?: number;
19
- maxWidth?: number;
20
- positioning?: "fixed" | "absolute";
21
- /**
22
- * When true, this panel does not clip overflowing descendants (e.g. nested operator menus inside
23
- * the filter popover). Uses overflow: visible and drops max-height on the shell — see
24
- * `.st-dropdown-content--allow-descendant-overflow` in base.css.
25
- */
26
- allowDescendantOverflow?: boolean;
27
- }
28
- export declare const createDropdown: (options: CreateDropdownOptions) => {
29
- element: HTMLDivElement;
30
- update: (newOptions: Partial<CreateDropdownOptions>) => void;
31
- destroy: () => void;
32
- setOpen: (newOpen: boolean) => void;
33
- };
@@ -1,15 +0,0 @@
1
- import HeaderObject from "../../types/HeaderObject";
2
- import { FilterCondition } from "../../types/FilterTypes";
3
- export interface CreateEnumFilterOptions {
4
- header: HeaderObject;
5
- currentFilter?: FilterCondition;
6
- onApplyFilter: (filter: FilterCondition) => void;
7
- onClearFilter: () => void;
8
- containerRef?: HTMLElement;
9
- mainBodyRef?: HTMLElement;
10
- }
11
- export declare const createEnumFilter: (options: CreateEnumFilterOptions) => {
12
- element: HTMLDivElement;
13
- update: (newOptions: Partial<CreateEnumFilterOptions>) => void;
14
- destroy: () => void;
15
- };
@@ -1,12 +0,0 @@
1
- export interface CreateFilterActionsOptions {
2
- onApply: () => void;
3
- onClear?: () => void;
4
- canApply: boolean;
5
- showClear: boolean;
6
- }
7
- /** Matches React FilterActions: `st-filter-button-apply`, `st-filter-button-clear`, `st-filter-button-disabled`. */
8
- export declare const createFilterActions: (options: CreateFilterActionsOptions) => {
9
- element: HTMLDivElement;
10
- update: (newOptions: Partial<CreateFilterActionsOptions>) => void;
11
- destroy: () => void;
12
- };
@@ -1,15 +0,0 @@
1
- import HeaderObject from "../../types/HeaderObject";
2
- import { FilterCondition } from "../../types/FilterTypes";
3
- export interface CreateFilterDropdownOptions {
4
- header: HeaderObject;
5
- currentFilter?: FilterCondition;
6
- onApplyFilter: (filter: FilterCondition) => void;
7
- onClearFilter: () => void;
8
- containerRef?: HTMLElement;
9
- mainBodyRef?: HTMLElement;
10
- }
11
- export declare const createFilterDropdown: (options: CreateFilterDropdownOptions) => {
12
- element: HTMLDivElement;
13
- update: (newOptions: Partial<import("./createStringFilter").CreateStringFilterOptions>) => void;
14
- destroy: () => void;
15
- };
@@ -1,16 +0,0 @@
1
- export interface CreateFilterInputOptions {
2
- type?: "text" | "number" | "date";
3
- value: string;
4
- onChange: (value: string) => void;
5
- onEnter?: () => void;
6
- placeholder?: string;
7
- autoFocus?: boolean;
8
- min?: string;
9
- max?: string;
10
- step?: string;
11
- }
12
- export declare const createFilterInput: (options: CreateFilterInputOptions) => {
13
- element: HTMLInputElement;
14
- update: (newOptions: Partial<CreateFilterInputOptions>) => void;
15
- destroy: () => void;
16
- };
@@ -1,15 +0,0 @@
1
- import HeaderObject from "../../types/HeaderObject";
2
- import { FilterCondition } from "../../types/FilterTypes";
3
- export interface CreateNumberFilterOptions {
4
- header: HeaderObject;
5
- currentFilter?: FilterCondition;
6
- onApplyFilter: (filter: FilterCondition) => void;
7
- onClearFilter: () => void;
8
- containerRef?: HTMLElement;
9
- mainBodyRef?: HTMLElement;
10
- }
11
- export declare const createNumberFilter: (options: CreateNumberFilterOptions) => {
12
- element: HTMLDivElement;
13
- update: (newOptions: Partial<CreateNumberFilterOptions>) => void;
14
- destroy: () => void;
15
- };
@@ -1,15 +0,0 @@
1
- import HeaderObject from "../../types/HeaderObject";
2
- import { FilterCondition } from "../../types/FilterTypes";
3
- export interface CreateStringFilterOptions {
4
- header: HeaderObject;
5
- currentFilter?: FilterCondition;
6
- onApplyFilter: (filter: FilterCondition) => void;
7
- onClearFilter: () => void;
8
- containerRef?: HTMLElement;
9
- mainBodyRef?: HTMLElement;
10
- }
11
- export declare const createStringFilter: (options: CreateStringFilterOptions) => {
12
- element: HTMLDivElement;
13
- update: (newOptions: Partial<CreateStringFilterOptions>) => void;
14
- destroy: () => void;
15
- };
@@ -1,21 +0,0 @@
1
- import OnNextPage from "../../types/OnNextPage";
2
- export interface CreateTableFooterOptions {
3
- currentPage: number;
4
- hideFooter?: boolean;
5
- onPageChange: (page: number) => void;
6
- onNextPage?: OnNextPage;
7
- onUserPageChange?: (page: number) => void | Promise<void>;
8
- rowsPerPage: number;
9
- shouldPaginate?: boolean;
10
- totalPages: number;
11
- totalRows: number;
12
- /** Custom icon for previous page button (string = HTML, HTMLElement = node to clone/append). */
13
- prevIcon?: string | HTMLElement | SVGSVGElement;
14
- /** Custom icon for next page button. */
15
- nextIcon?: string | HTMLElement | SVGSVGElement;
16
- }
17
- export declare const createTableFooter: (options: CreateTableFooterOptions) => {
18
- element: HTMLDivElement;
19
- update: (newOptions: Partial<CreateTableFooterOptions>) => void;
20
- destroy: () => void;
21
- };
@@ -1,3 +0,0 @@
1
- export declare const formatDate: (dateString: string | number | Date) => string;
2
- export declare const formatCurrency: (value: number) => string;
3
- export declare const formatLargeNumber: (value: number) => string;
@@ -1,4 +0,0 @@
1
- import HeaderObject from "../types/HeaderObject";
2
- import { Pinned } from "../types/Pinned";
3
- export declare const deepClone: <T>(obj: T) => T;
4
- export declare const canDisplaySection: (headers: HeaderObject[], pinned?: Pinned) => boolean;
@@ -1,6 +0,0 @@
1
- import HeaderObject from "../../types/HeaderObject";
2
- import { HeaderRenderContext } from "./types";
3
- /** Use same icon and animation as body row expand/collapse (icons.expand + st-expand-icon-container). */
4
- export declare const createCollapseIcon: (header: HeaderObject, context: HeaderRenderContext) => HTMLElement | null;
5
- /** Update header collapse icon direction on an existing cell (delegates to body updateExpandIconState). */
6
- export declare const updateHeaderCollapseIconState: (cellElement: HTMLElement, isCollapsed: boolean, label?: string) => void;
@@ -1,5 +0,0 @@
1
- import HeaderObject from "../../types/HeaderObject";
2
- import { HeaderRenderContext } from "./types";
3
- export declare const handleColumnHeaderClick: (event: MouseEvent, header: HeaderObject, colIndex: number, context: HeaderRenderContext) => void;
4
- export declare const handleColumnHeaderDoubleClick: (event: MouseEvent, header: HeaderObject, context: HeaderRenderContext) => void;
5
- export declare const attachDragHandlers: (labelElement: HTMLElement, cellElement: HTMLElement, header: HeaderObject, context: HeaderRenderContext) => void;
@@ -1,4 +0,0 @@
1
- import HeaderObject from "../../types/HeaderObject";
2
- import { HeaderRenderContext } from "./types";
3
- export declare const createEditableInput: (header: HeaderObject, context: HeaderRenderContext, labelContainer: HTMLElement) => HTMLInputElement;
4
- export declare const createLabelContent: (header: HeaderObject, context: HeaderRenderContext, labelOverride?: string) => HTMLElement;
@@ -1,28 +0,0 @@
1
- import HeaderObject from "../../types/HeaderObject";
2
- export declare let prevUpdateTime: number;
3
- export declare let prevDraggingPosition: {
4
- screenX: number;
5
- screenY: number;
6
- };
7
- export declare let prevHeaders: HeaderObject[] | null;
8
- export declare const setPrevUpdateTime: (time: number) => void;
9
- export declare const setPrevDraggingPosition: (position: {
10
- screenX: number;
11
- screenY: number;
12
- }) => void;
13
- export declare const setPrevHeaders: (headers: HeaderObject[] | null) => void;
14
- export declare const getRenderedCells: (container: HTMLElement) => Map<string, HTMLElement>;
15
- export interface CachedHeaderPosition {
16
- left: number;
17
- top: number;
18
- width: number;
19
- height: number;
20
- }
21
- export declare const getHeaderPositionCache: (container: HTMLElement) => Map<string, CachedHeaderPosition>;
22
- export declare const REVERT_TO_PREVIOUS_HEADERS_DELAY = 150;
23
- export declare const throttle: (callback: () => void, limit: number) => void;
24
- export declare const addTrackedEventListener: (element: HTMLElement, event: string, handler: EventListener, options?: AddEventListenerOptions) => void;
25
- /** Header tooltips are portaled under .simple-table-root; remove them when header DOM is torn down
26
- * without pointer leave (e.g. sort/filter invalidates context cache and removes header cells). */
27
- export declare const removeFloatingHeaderTooltips: (fromElement: HTMLElement) => void;
28
- export declare const cleanupHeaderCellRendering: (container?: HTMLElement, onHostDiscard?: ((host: HTMLElement) => void) | undefined) => void;
@@ -1,3 +0,0 @@
1
- import HeaderObject from "../../types/HeaderObject";
2
- import { HeaderRenderContext } from "./types";
3
- export declare const createFilterIcon: (header: HeaderObject, context: HeaderRenderContext) => HTMLElement | null;
@@ -1,3 +0,0 @@
1
- import HeaderObject from "../../types/HeaderObject";
2
- import { HeaderRenderContext } from "./types";
3
- export declare const createResizeHandle: (header: HeaderObject, context: HeaderRenderContext) => HTMLElement | null;
@@ -1,10 +0,0 @@
1
- import { HeaderRenderContext } from "./types";
2
- /**
3
- * Updates an existing header select-all checkbox to match the current checked state.
4
- * Use when selection changes but the header cell DOM is reused (e.g. from cache).
5
- */
6
- export declare const updateHeaderSelectionCheckbox: (cellElement: HTMLElement, checked: boolean) => void;
7
- /**
8
- * Creates the header select-all checkbox using the shared createCheckbox (same as column editor popout).
9
- */
10
- export declare const createSelectionCheckbox: (context: HeaderRenderContext) => HTMLElement;
@@ -1,3 +0,0 @@
1
- import HeaderObject from "../../types/HeaderObject";
2
- import { HeaderRenderContext } from "./types";
3
- export declare const createSortIcon: (header: HeaderObject, context: HeaderRenderContext) => HTMLElement | null;
@@ -1,7 +0,0 @@
1
- import { AbsoluteCell, HeaderRenderContext } from "./types";
2
- export declare const calculateHeaderCellClasses: (cell: AbsoluteCell, context: HeaderRenderContext) => string;
3
- export declare const createHeaderCellElement: (cell: AbsoluteCell, context: HeaderRenderContext) => HTMLElement;
4
- export declare const getLastHeaderIndex: (absoluteCells: AbsoluteCell[]) => number;
5
- /** Replace sort/filter/collapse icons on an existing header cell, preserving label/drag handlers. */
6
- export declare const refreshHeaderCellIcons: (cellElement: HTMLElement, header: AbsoluteCell["header"], context: HeaderRenderContext, colIndex: number) => void;
7
- export declare const updateHeaderCellElement: (cellElement: HTMLElement, cell: AbsoluteCell, context: HeaderRenderContext) => void;
@@ -1,110 +0,0 @@
1
- import HeaderObject, { Accessor } from "../../types/HeaderObject";
2
- import SortColumn from "../../types/SortColumn";
3
- import { TableFilterState, FilterCondition } from "../../types/FilterTypes";
4
- import { IconsConfig } from "../../types/IconsConfig";
5
- import Row from "../../types/Row";
6
- import type { AccordionAxis } from "../accordionAnimation";
7
- import type { AnimationCoordinator } from "../../managers/AnimationCoordinator";
8
- type SetStateAction<T> = T | ((prevState: T) => T);
9
- type Dispatch<A> = (value: A) => void;
10
- type MutableRefObject<T> = {
11
- current: T;
12
- };
13
- type RefObject<T> = {
14
- readonly current: T | null;
15
- };
16
- export interface AbsoluteCell {
17
- header: HeaderObject;
18
- left: number;
19
- top: number;
20
- width: number;
21
- height: number;
22
- colIndex: number;
23
- parentHeader?: HeaderObject;
24
- }
25
- export interface HeaderRenderContext {
26
- areAllRowsSelected?: () => boolean;
27
- autoExpandColumns: boolean;
28
- collapsedHeaders: Set<Accessor>;
29
- essentialAccessors?: ReadonlySet<string>;
30
- columnBorders: boolean;
31
- columnReordering: boolean;
32
- columnResizing: boolean;
33
- columnsWithSelectedCells: Set<number>;
34
- containerWidth: number;
35
- draggedHeaderRef: MutableRefObject<HeaderObject | null>;
36
- enableHeaderEditing?: boolean;
37
- enableRowSelection?: boolean;
38
- /** When `"single"`, header select-all checkbox is hidden. */
39
- rowSelectionMode?: "single" | "multiple";
40
- filters: TableFilterState;
41
- forceUpdate: () => void;
42
- getCollapsedHeaders?: () => Set<Accessor>; /** Get current collapsed headers (avoids stale closure in toggle handler). */
43
- /** Natural-width shrink floors (accessor -> px) for auto-expand column resize. */
44
- getShrinkFloors?: () => Map<string, number>;
45
- /** Persist user-set widths (drag / double-click auto-fit) as natural widths. */
46
- onAutoExpandNaturalWidths?: (widths: Map<string, number>) => void;
47
- handleApplyFilter: (filter: FilterCondition) => void;
48
- handleClearFilter: (accessor: Accessor) => void;
49
- handleSelectAll?: (checked: boolean) => void;
50
- /** Live header tree from table state (avoids stale `headers` snapshot in long-lived handlers). */
51
- getHeaders: () => HeaderObject[];
52
- headerHeight: number;
53
- headerRegistry?: Map<string, {
54
- setEditing: (editing: boolean) => void;
55
- }>;
56
- headers: HeaderObject[];
57
- hoveredHeaderRef: MutableRefObject<HeaderObject | null>;
58
- icons: IconsConfig;
59
- lastHeaderIndex: number;
60
- mainBodyRef: RefObject<HTMLDivElement>;
61
- mainSectionContainerWidth?: number; /** Main section *content* width (sum of all non-pinned column widths). NOT the virtualization viewport. */
62
- mainSectionViewportWidth?: number; /** Main section *visible* viewport width (container minus pinned); use for getVisibleCells when !pinned */
63
- /** When false, skip column virtualization and render every header cell in the main section. Default true. */
64
- enableVirtualization?: boolean;
65
- onColumnOrderChange?: (headers: HeaderObject[]) => void;
66
- onColumnSelect?: (header: HeaderObject) => void;
67
- onColumnWidthChange?: (headers: HeaderObject[]) => void;
68
- onHeaderEdit?: (header: HeaderObject, newLabel: string) => void;
69
- onSort: (accessor: Accessor) => void;
70
- onTableHeaderDragEnd: (headers: HeaderObject[]) => void;
71
- pinned?: "left" | "right";
72
- /** Mirrors body context: pinned strip width for cache invalidation when only section width changes. */
73
- pinnedSectionWidthPx?: number;
74
- pinnedLeftRef: RefObject<HTMLDivElement>;
75
- pinnedRightRef: RefObject<HTMLDivElement>;
76
- reverse: boolean;
77
- rows: Row[];
78
- selectColumns?: (columnIndices: number[]) => void;
79
- selectableColumns?: boolean;
80
- selectedColumns: Set<number>;
81
- selectedRowCount?: number; /** Used for context cache invalidation when row selection changes */
82
- setCollapsedHeaders: Dispatch<SetStateAction<Set<Accessor>>>;
83
- setHeaders: Dispatch<SetStateAction<HeaderObject[]>>;
84
- setInitialFocusedCell: (cell: any) => void;
85
- setIsResizing: Dispatch<SetStateAction<boolean>>;
86
- setSelectedCells: Dispatch<SetStateAction<Set<string>>>;
87
- setSelectedColumns: Dispatch<SetStateAction<Set<number>>>;
88
- sort: SortColumn | null;
89
- /**
90
- * Active accordion animation axis (parallel to {@link CellRenderContext.accordionAxis}).
91
- * Used so newly-visible header cells (e.g. children of a just-expanded
92
- * collapsible header) start at zero width and CSS-transition to their
93
- * final width.
94
- */
95
- accordionAxis?: AccordionAxis;
96
- /**
97
- * Animation coordinator (when enabled). The header renderer uses
98
- * {@link AnimationCoordinator.hasSnapshotEntry} to detect cells that did
99
- * not exist in the pre-render layout — those are the incoming cells
100
- * driving the unfold animation.
101
- */
102
- animationCoordinator?: AnimationCoordinator;
103
- /**
104
- * Called immediately before a header host (or its label content) is permanently
105
- * discarded so adapters can tear down renderer subtrees (e.g. React portals).
106
- * Mirrors {@link CellRenderContext.onRendererHostDiscard}.
107
- */
108
- onRendererHostDiscard?: (host: HTMLElement) => void;
109
- }
110
- export {};
@@ -1,4 +0,0 @@
1
- import { AbsoluteCell, HeaderRenderContext } from "./headerCell/types";
2
- export type { AbsoluteCell, HeaderRenderContext } from "./headerCell/types";
3
- export { cleanupHeaderCellRendering } from "./headerCell/eventTracking";
4
- export declare const renderHeaderCells: (container: HTMLElement, absoluteCells: AbsoluteCell[], context: HeaderRenderContext, scrollLeft?: number) => void;
@@ -1,41 +0,0 @@
1
- import HeaderObject from "../types/HeaderObject";
2
- /**
3
- * Gets all leaf column indices (bottom-level columns) for a given header and its descendants
4
- * @param header The header to get indices for
5
- * @param colIndex The column index of the header in the current context
6
- * @returns Array of column indices that belong to this header branch
7
- */
8
- export declare const getHeaderLeafIndices: (header: HeaderObject, colIndex: number) => number[];
9
- /**
10
- * Flattens a nested header structure to get all leaf headers
11
- * @param headers The headers array to flatten
12
- * @returns Flattened array of all leaf headers
13
- */
14
- export declare const flattenHeaders: (headers: HeaderObject[]) => HeaderObject[];
15
- /**
16
- * Flattens a nested header structure to get all headers (including parent headers)
17
- * @param headers The headers array to flatten
18
- * @returns Flattened array of all headers in the hierarchy
19
- */
20
- export declare const flattenAllHeaders: (headers: HeaderObject[]) => HeaderObject[];
21
- /**
22
- * Gets the range of column indices between two column indices
23
- * @param startColIndex Starting column index
24
- * @param endColIndex Ending column index
25
- * @returns Array of column indices in the range (inclusive)
26
- */
27
- export declare const getColumnRange: (startColIndex: number, endColIndex: number) => number[];
28
- export declare const calculatePinnedWidth: (width?: number) => number;
29
- /**
30
- * Generates a unique ID for header description element
31
- * @param accessor The header accessor
32
- * @returns Unique ID string for aria-describedby
33
- */
34
- export declare const getHeaderDescriptionId: (accessor: string | number) => string;
35
- /**
36
- * Builds a descriptive string for screen readers about a column header
37
- * @param header The header object
38
- * @param filterable Whether the column is filterable
39
- * @returns Description string for aria-describedby, or empty string if no description
40
- */
41
- export declare const getHeaderDescription: (header: HeaderObject, filterable: boolean) => string;
@@ -1,121 +0,0 @@
1
- import HeaderObject, { Accessor } from "../types/HeaderObject";
2
- /**
3
- * Build the set of row indices to sample for auto-size measurement.
4
- * Hybrid strategy: the first `headSize` rows (always include the top / initial
5
- * viewport) plus `stridedSize` rows spread at an even stride across the rest of
6
- * the dataset, so wide values deeper in the data are caught without scanning
7
- * every row. Strided (not random) keeps the result deterministic across renders.
8
- */
9
- export declare const buildHybridSampleIndices: (rowCount: number, headSize: number, stridedSize: number) => number[];
10
- /** Linear-interpolated percentile (0-100) of a numeric array. */
11
- export declare const percentileOf: (values: number[], percentile: number) => number;
12
- /**
13
- * Choose a representative "content width" from sampled cell widths, clipping
14
- * outliers only when they clearly stand apart from the bulk of the data.
15
- *
16
- * - Uses the true max when the column is uniform (max close to the percentile),
17
- * so nothing legitimate gets truncated.
18
- * - Falls back to the percentile width only when `max > p * (1 + threshold)` and
19
- * there are enough samples to trust the percentile, so a single rogue 2000px
20
- * row can't define the whole column.
21
- */
22
- export declare const selectContentWidthWithOutlierClip: (widths: number[], options?: {
23
- percentile?: number;
24
- threshold?: number;
25
- minSampleForClip?: number;
26
- }) => number;
27
- /**
28
- * Find all leaf headers (headers without children) in a header tree
29
- * Takes collapsed state into account - when a header is collapsed, only returns
30
- * children that are visible when parent is collapsed (showWhen is 'parentCollapsed' or 'always')
31
- */
32
- export declare const findLeafHeaders: (header: HeaderObject, collapsedHeaders?: Set<Accessor>) => HeaderObject[];
33
- /** Default pixel width for 1fr when converting before container width is known */
34
- export declare const DEFAULT_FR_PX = 150;
35
- /** Default total table width used when normalizing fr/% if container width unknown */
36
- export declare const DEFAULT_TABLE_WIDTH = 800;
37
- /** True when a header's width requests content-based auto-sizing (`width: "auto"`). */
38
- export declare const isAutoWidth: (header: HeaderObject) => boolean;
39
- /**
40
- * Normalize header widths so that fr and % are converted to pixels.
41
- * Call this as soon as headers are received so the rest of the code can assume numeric widths.
42
- * If totalWidth is not provided, a reasonable total is computed from fixed widths + default for fr columns.
43
- * If options.containerWidth is provided, all fr/% columns are resolved against the full container width,
44
- * so pinned and non-pinned fr columns share the same proportional pool.
45
- */
46
- export declare function normalizeHeaderWidths(headers: HeaderObject[], totalWidthOrOptions?: number | {
47
- containerWidth: number;
48
- }): HeaderObject[];
49
- /**
50
- * Get actual width of a header in pixels
51
- */
52
- export declare const getHeaderWidthInPixels: (header: HeaderObject) => number;
53
- /**
54
- * Convert fractional widths to pixel values
55
- */
56
- export declare const removeAllFractionalWidths: (header: HeaderObject) => void;
57
- /**
58
- * Calculate the minimum width for a header
59
- */
60
- export declare const getHeaderMinWidth: (header: HeaderObject) => number;
61
- /**
62
- * Get all visible leaf headers from an array of headers
63
- */
64
- export declare const getAllVisibleLeafHeaders: (headers: HeaderObject[], collapsedHeaders?: Set<Accessor>) => HeaderObject[];
65
- /**
66
- * Calculate the optimal width for a column by measuring both header and cell content
67
- * This is used for auto-sizing columns to fit their content (like Excel/Google Sheets)
68
- *
69
- * @param accessor - The accessor of the header to measure
70
- * @param options - Configuration options
71
- * @returns Measured width plus whether the result is final (`settled`). When a
72
- * custom `cellRenderer` / `headerRenderer` exists but its real DOM is not
73
- * measurable yet (async portal / loading skeleton), `settled` is false and
74
- * the width is provisional (header / minWidth only — never `valueFormatter`
75
- * or plain `label` as a stand-in for renderer output). Callers should apply
76
- * that provisional width once and re-measure later via an explicit refit
77
- * (rows / isLoading / `refitAutoSizeColumns`) — not by leaving the column
78
- * pending across every render.
79
- */
80
- export declare const calculateHeaderContentWidth: (accessor: Accessor, options?: {
81
- rows?: any[] | undefined;
82
- header?: HeaderObject | undefined;
83
- maxWidth?: number | undefined;
84
- /** Leading rows always measured (default AUTO_SIZE_HEAD_SAMPLE_SIZE) */
85
- headSampleSize?: number | undefined;
86
- /** Rows sampled at an even stride across the rest (default AUTO_SIZE_STRIDED_SAMPLE_SIZE) */
87
- stridedSampleSize?: number | undefined;
88
- /** Back-compat: when set, used as the head sample size (strided defaults to 0) */
89
- sampleSize?: number | undefined;
90
- /** Outlier clip percentile (default AUTO_SIZE_OUTLIER_PERCENTILE) */
91
- outlierPercentile?: number | undefined;
92
- /** Outlier clip threshold fraction (default AUTO_SIZE_OUTLIER_THRESHOLD) */
93
- outlierThreshold?: number | undefined;
94
- /** When "header", ignore cell content and fit the header label only */
95
- autoSizeMode?: "content" | "header" | undefined;
96
- /** Theme passed to a custom cellRenderer during measurement */
97
- theme?: any;
98
- /** Scope `.st-cell-content` font/padding sampling to this table instance */
99
- styleRoot?: ParentNode | null | undefined;
100
- /**
101
- * The table's resolved sort icon. Used to reserve space on sortable columns
102
- * that are not currently sorted (the icon only exists on the active sort
103
- * column), so sorting later does not push the label into ellipsis.
104
- */
105
- sortIcon?: string | HTMLElement | SVGSVGElement | undefined;
106
- /**
107
- * The table's resolved expand/collapse icon. Used to reserve space on
108
- * collapsible headers when the header cell is virtualized out of the
109
- * horizontal band (so the icon is not in the DOM to measure directly).
110
- */
111
- expandIcon?: string | HTMLElement | SVGSVGElement | undefined;
112
- /**
113
- * Called before a temporary measure host from `cellRenderer` is discarded.
114
- * Framework adapters (React portals, Vue/Solid mounts) register on render;
115
- * without this, autofit sampling leaks those registrations.
116
- */
117
- onRendererHostDiscard?: ((host: HTMLElement) => void) | undefined;
118
- } | undefined) => {
119
- width: number;
120
- settled: boolean;
121
- };
@@ -1,27 +0,0 @@
1
- import type { SectionScrollController } from "../managers/SectionScrollController";
2
- export interface HorizontalScrollbarProps {
3
- mainBodyRef: HTMLDivElement;
4
- mainBodyWidth: number;
5
- pinnedLeftWidth: number;
6
- pinnedRightWidth: number;
7
- pinnedLeftContentWidth: number;
8
- pinnedRightContentWidth: number;
9
- tableBodyContainerRef: HTMLDivElement;
10
- /** True when the column-editor toggle strip is visible and reserves horizontal space. */
11
- editColumns: boolean;
12
- sectionScrollController?: SectionScrollController | null;
13
- /**
14
- * When true, skip the DOM scrollWidth check and always build the scrollbar.
15
- * Used after the caller has already verified content overflow (e.g. empty
16
- * tables where the header scrollport is sized to content and reports no
17
- * DOM overflow even though columns exceed the viewport).
18
- */
19
- forceScrollable?: boolean;
20
- }
21
- export declare const createHorizontalScrollbar: (props: HorizontalScrollbarProps) => HTMLElement | null;
22
- /**
23
- * Apply width props to an existing scrollbar from {@link createHorizontalScrollbar}.
24
- * Used when layout is recreated without tearing down the DOM node (e.g. pinned resize).
25
- */
26
- export declare const syncHorizontalScrollbarLayout: (container: HTMLElement, props: HorizontalScrollbarProps) => void;
27
- export declare const cleanupHorizontalScrollbar: (container: HTMLElement, sectionScrollController?: SectionScrollController | null) => void;