@simple-table/react 4.0.1 → 4.0.3

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 (196) 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/loadingPlaceholderUtils.d.ts +0 -11
  175. package/dist/types/core/src/utils/nestedGridRowRenderer.d.ts +0 -50
  176. package/dist/types/core/src/utils/pinnedColumnUtils.d.ts +0 -29
  177. package/dist/types/core/src/utils/pivot/pivotRows.d.ts +0 -16
  178. package/dist/types/core/src/utils/propSyncEqual.d.ts +0 -60
  179. package/dist/types/core/src/utils/quickFilterUtils.d.ts +0 -14
  180. package/dist/types/core/src/utils/resizeUtils/autoExpandResize.d.ts +0 -32
  181. package/dist/types/core/src/utils/resizeUtils/compensation.d.ts +0 -17
  182. package/dist/types/core/src/utils/resizeUtils/domUpdates.d.ts +0 -15
  183. package/dist/types/core/src/utils/resizeUtils/index.d.ts +0 -26
  184. package/dist/types/core/src/utils/resizeUtils/maxWidth.d.ts +0 -9
  185. package/dist/types/core/src/utils/resizeUtils/parentHeaderResize.d.ts +0 -11
  186. package/dist/types/core/src/utils/resizeUtils/sectionWidths.d.ts +0 -36
  187. package/dist/types/core/src/utils/rowFlattening.d.ts +0 -30
  188. package/dist/types/core/src/utils/rowProcessing.d.ts +0 -65
  189. package/dist/types/core/src/utils/rowSelectionUtils.d.ts +0 -62
  190. package/dist/types/core/src/utils/rowSeparatorRenderer.d.ts +0 -16
  191. package/dist/types/core/src/utils/rowUtils.d.ts +0 -187
  192. package/dist/types/core/src/utils/sortUtils.d.ts +0 -8
  193. package/dist/types/core/src/utils/stateRowRenderer.d.ts +0 -15
  194. package/dist/types/core/src/utils/stickyParentsRenderer.d.ts +0 -53
  195. package/dist/types/react/src/buildVanillaConfig.d.ts +0 -4
  196. package/dist/types/react/src/index.d.ts +0 -5
@@ -1,46 +1,46 @@
1
- import React from "react";
2
- import type { ColumnEditorRowRendererComponents as VanillaColumnEditorRowComponents, HeaderRendererComponents as VanillaHeaderRendererComponents } from "simple-table-core";
3
- type DomSlotProps = {
4
- node: Node;
5
- };
6
- /**
7
- * Bridges imperative DOM from simple-table-core into a React subtree. Core passes
8
- * HTMLElement/SVG nodes as slots; React cannot render those as children directly.
9
- * This host uses `display: contents` so flex/grid parents still lay out the slot.
10
- */
11
- export declare function ImperativeDomSlot({ node }: DomSlotProps): import("react/jsx-runtime").JSX.Element;
12
- /**
13
- * Converts a core column-editor slot (string markup or a live node) into a ReactNode.
14
- */
15
- export declare function domSlotToReactNode(value: string | Node | null | undefined): React.ReactNode;
16
- /** Maps core header slots (live DOM icons) to React nodes for `headerRenderer` JSX. */
17
- export declare function mapHeaderRendererComponentsForReact(components: VanillaHeaderRendererComponents | undefined): {
18
- sortIcon?: React.ReactNode;
19
- filterIcon?: React.ReactNode;
20
- collapseIcon?: React.ReactNode;
21
- labelContent?: React.ReactNode;
22
- };
23
- /**
24
- * Bridges an *icon* slot into a ReactNode. Unlike {@link domSlotToReactNode}, a
25
- * string is treated as HTML markup — core serializes React icons to HTML strings
26
- * (via renderToStaticMarkup), so it must be rendered with dangerouslySetInnerHTML
27
- * rather than as escaped text. Live DOM nodes still go through ImperativeDomSlot.
28
- */
29
- export declare function iconSlotToReactNode(value: string | Node | null | undefined): React.ReactNode;
30
- /** Maps core footer pagination icon slots (live DOM / HTML string) to React nodes for `footerRenderer` JSX. */
31
- export declare function mapFooterIconsForReact(icons: {
32
- nextIcon?: unknown;
33
- prevIcon?: unknown;
34
- }): {
35
- nextIcon?: React.ReactNode;
36
- prevIcon?: React.ReactNode;
37
- };
38
- /** Maps core column-editor row slots (live DOM) to React nodes for `rowRenderer` JSX. */
39
- export declare function mapColumnEditorRowComponentsForReact(components: VanillaColumnEditorRowComponents): {
40
- expandIcon?: React.ReactNode;
41
- checkbox?: React.ReactNode;
42
- dragIcon?: React.ReactNode;
43
- labelContent?: React.ReactNode;
44
- pinIcon?: React.ReactNode;
45
- };
46
- export {};
1
+ import React from "react";
2
+ import type { ColumnEditorRowRendererComponents as VanillaColumnEditorRowComponents, HeaderRendererComponents as VanillaHeaderRendererComponents } from "simple-table-core";
3
+ type DomSlotProps = {
4
+ node: Node;
5
+ };
6
+ /**
7
+ * Bridges imperative DOM from simple-table-core into a React subtree. Core passes
8
+ * HTMLElement/SVG nodes as slots; React cannot render those as children directly.
9
+ * This host uses `display: contents` so flex/grid parents still lay out the slot.
10
+ */
11
+ export declare function ImperativeDomSlot({ node }: DomSlotProps): import("react/jsx-runtime").JSX.Element;
12
+ /**
13
+ * Converts a core column-editor slot (string markup or a live node) into a ReactNode.
14
+ */
15
+ export declare function domSlotToReactNode(value: string | Node | null | undefined): React.ReactNode;
16
+ /** Maps core header slots (live DOM icons) to React nodes for `headerRenderer` JSX. */
17
+ export declare function mapHeaderRendererComponentsForReact(components: VanillaHeaderRendererComponents | undefined): {
18
+ sortIcon?: React.ReactNode;
19
+ filterIcon?: React.ReactNode;
20
+ collapseIcon?: React.ReactNode;
21
+ labelContent?: React.ReactNode;
22
+ };
23
+ /**
24
+ * Bridges an *icon* slot into a ReactNode. Unlike {@link domSlotToReactNode}, a
25
+ * string is treated as HTML markup — core serializes React icons to HTML strings
26
+ * (via renderToStaticMarkup), so it must be rendered with dangerouslySetInnerHTML
27
+ * rather than as escaped text. Live DOM nodes still go through ImperativeDomSlot.
28
+ */
29
+ export declare function iconSlotToReactNode(value: string | Node | null | undefined): React.ReactNode;
30
+ /** Maps core footer pagination icon slots (live DOM / HTML string) to React nodes for `footerRenderer` JSX. */
31
+ export declare function mapFooterIconsForReact(icons: {
32
+ nextIcon?: unknown;
33
+ prevIcon?: unknown;
34
+ }): {
35
+ nextIcon?: React.ReactNode;
36
+ prevIcon?: React.ReactNode;
37
+ };
38
+ /** Maps core column-editor row slots (live DOM) to React nodes for `rowRenderer` JSX. */
39
+ export declare function mapColumnEditorRowComponentsForReact(components: VanillaColumnEditorRowComponents): {
40
+ expandIcon?: React.ReactNode;
41
+ checkbox?: React.ReactNode;
42
+ dragIcon?: React.ReactNode;
43
+ labelContent?: React.ReactNode;
44
+ pinIcon?: React.ReactNode;
45
+ };
46
+ export {};
@@ -1,6 +1,6 @@
1
- /**
2
- * Re-export shared prop-sync helpers from core so React tests/imports that
3
- * target this path keep working. Source of truth: simple-table-core.
4
- */
5
- export { headersStructurallyEqual, collectHeaderAccessors, rowsShallowUnchanged, shallowEqualRow, SHALLOW_ROW_COMPARE_MAX, } from "simple-table-core";
6
- export type { HeaderStructureLike, GetRowIdLike } from "simple-table-core";
1
+ /**
2
+ * Re-export shared prop-sync helpers from core so React tests/imports that
3
+ * target this path keep working. Source of truth: simple-table-core.
4
+ */
5
+ export { headersStructurallyEqual, collectHeaderAccessors, rowsShallowUnchanged, shallowEqualRow, SHALLOW_ROW_COMPARE_MAX, } from "simple-table-core";
6
+ export type { HeaderStructureLike, GetRowIdLike } from "simple-table-core";
@@ -1,6 +1,6 @@
1
- /**
2
- * Re-export shared row-sync helpers from core.
3
- * Source of truth: simple-table-core `propSyncEqual`.
4
- */
5
- export { rowsShallowUnchanged, shallowEqualRow, SHALLOW_ROW_COMPARE_MAX, } from "simple-table-core";
6
- export type { GetRowIdLike } from "simple-table-core";
1
+ /**
2
+ * Re-export shared row-sync helpers from core.
3
+ * Source of truth: simple-table-core `propSyncEqual`.
4
+ */
5
+ export { rowsShallowUnchanged, shallowEqualRow, SHALLOW_ROW_COMPARE_MAX, } from "simple-table-core";
6
+ export type { GetRowIdLike } from "simple-table-core";
@@ -1,95 +1,95 @@
1
- import React from "react";
2
- import type { ColumnEditorCustomRendererProps as VanillaColumnEditorCustomRendererProps, ColumnEditorRowRendererProps as VanillaColumnEditorRowRendererProps, HeaderRendererProps as VanillaHeaderRendererProps, HeaderDropdownProps as VanillaHeaderDropdownProps, FooterRendererProps as VanillaFooterRendererProps, RowButtonProps as VanillaRowButtonProps } from "simple-table-core";
3
- import type { PortalBridge } from "../PortalBridge";
4
- /**
5
- * Marks a function produced by the wrap helpers below. Controlled-header flows
6
- * often push core's already-wrapped renderers back through React state into
7
- * {@link buildVanillaConfig}; without this marker those functions would be
8
- * wrapped again (a portal-registering wrapper around another portal-registering
9
- * wrapper), which can freeze the page after autofit / width sync.
10
- */
11
- export declare const ST_WRAPPED_RENDERER: unique symbol;
12
- /** True when `fn` was produced by one of the wrap helpers in this module. */
13
- export declare function isWrappedRenderer(fn: unknown): boolean;
14
- /**
15
- * Wraps a React component into a function that returns an HTMLElement, matching
16
- * the vanilla renderer contract expected by simple-table-core.
17
- *
18
- * The component is registered with the {@link PortalBridge} rather than mounted
19
- * in its own `createRoot`, so it renders as part of the host React tree and
20
- * inherits context. The returned container is filled on the host's next render.
21
- *
22
- * Idempotent: if `Component` is already a wrapped vanilla renderer, it is
23
- * returned unchanged so controlled `defaultHeaders` updates cannot nest wraps.
24
- */
25
- export declare function wrapReactRenderer<P extends object>(bridge: PortalBridge, Component: React.ComponentType<P>): (props: P) => HTMLElement;
26
- /**
27
- * Like {@link wrapReactRenderer} but uses `display: contents` so layout is
28
- * unchanged when core appends this node (no extra box vs a plain div). Used for
29
- * cell renderers.
30
- */
31
- export declare function wrapReactRendererIntoFragment<P extends object>(bridge: PortalBridge, Component: React.ComponentType<P>): (props: P) => HTMLElement;
32
- /**
33
- * Like {@link wrapReactRenderer} for header renderers: core passes `components.*`
34
- * (sortIcon / filterIcon / collapseIcon / labelContent) as live DOM nodes; this
35
- * bridges them to React nodes so consumers can use them directly in JSX.
36
- *
37
- * Reuses a single portal host per wrapped column so sort/filter icon refreshes
38
- * update props in place (via {@link PortalBridge.update}) instead of remounting
39
- * the React subtree and wiping local state.
40
- */
41
- export declare function wrapReactHeaderRenderer(bridge: PortalBridge, Component: React.ComponentType<VanillaHeaderRendererProps>): (props: VanillaHeaderRendererProps) => HTMLElement;
42
- /**
43
- * Like {@link wrapReactRendererIntoFragment}, but reuses one wrapper per
44
- * `accessor` on the bridge. When the consumer rebuilds columns with a new
45
- * Component identity, the slot's `component` is updated in place so the
46
- * wrapped function identity stays stable across `defaultHeaders` rebuilds.
47
- */
48
- export declare function wrapCachedCellRenderer<P extends object>(bridge: PortalBridge, accessor: string, Component: React.ComponentType<P>): (props: P) => HTMLElement;
49
- /**
50
- * Like {@link wrapReactHeaderRenderer}, but reuses one host-bearing wrapper per
51
- * `accessor` so unstable column rebuilds do not remount header React state.
52
- */
53
- export declare function wrapCachedHeaderRenderer(bridge: PortalBridge, accessor: string, Component: React.ComponentType<VanillaHeaderRendererProps>): (props: VanillaHeaderRendererProps) => HTMLElement;
54
- /**
55
- * Like {@link wrapReactHeaderRenderer} for the header dropdown, which shares the
56
- * same `components` slot shape.
57
- */
58
- export declare function wrapReactHeaderDropdown(bridge: PortalBridge, Component: React.ComponentType<VanillaHeaderDropdownProps>): (props: VanillaHeaderDropdownProps) => HTMLElement;
59
- /**
60
- * Like {@link wrapReactRenderer} for footer renderers: bridges the `nextIcon` /
61
- * `prevIcon` pagination slots (live DOM) to React nodes for JSX use.
62
- */
63
- export declare function wrapReactFooterRenderer(bridge: PortalBridge, Component: React.ComponentType<VanillaFooterRendererProps>): (props: VanillaFooterRendererProps) => HTMLElement;
64
- /**
65
- * Like {@link wrapReactRenderer} for column editor rows: core passes `components.*`
66
- * as live DOM nodes; this maps them to React nodes so consumers can use normal JSX.
67
- */
68
- export declare function wrapReactColumnEditorRowRenderer(bridge: PortalBridge, Component: React.ComponentType<object>): (props: VanillaColumnEditorRowRendererProps) => HTMLElement;
69
- /**
70
- * Maps `searchSection` / `listSection` / `resetSection` HTMLElement slots for
71
- * `columnEditorConfig.customRenderer` the same way as row slots.
72
- */
73
- export declare function wrapReactColumnEditorCustomRenderer(bridge: PortalBridge, Component: React.ComponentType<object>): (props: VanillaColumnEditorCustomRendererProps) => HTMLElement;
74
- /**
75
- * Wraps a React row-button render function into the vanilla `RowButton`
76
- * contract `(props) => HTMLElement`. Like {@link wrapReactRendererIntoFragment},
77
- * it registers the element with the {@link PortalBridge} so the button renders
78
- * inside the host React tree — preserving interactivity (onClick) and context —
79
- * and uses `display: contents` so core's `st-row-button` wrapper styles the
80
- * actual button rather than an extra box.
81
- */
82
- export declare function wrapReactRowButton(bridge: PortalBridge, Component: React.ComponentType<VanillaRowButtonProps>): (props: VanillaRowButtonProps) => HTMLElement;
83
- /**
84
- * Renders a static ReactNode into an HTMLElement using server-side static
85
- * rendering. Used for props like tableEmptyStateRenderer that are static markup
86
- * (not interactive and not called with arguments). These do not need context.
87
- */
88
- export declare function wrapReactNode(node: React.ReactNode): HTMLElement;
89
- /**
90
- * Converts a ReactNode to an HTML string using server-side static rendering.
91
- * Used for icon props where the vanilla table expects a string | HTMLElement | SVGSVGElement.
92
- */
93
- export declare function reactNodeToHtmlString(node: React.ReactNode): string;
94
- /** Returns true if the value is a React component (function or class). */
95
- export declare function isReactComponent(value: unknown): value is React.ComponentType<any>;
1
+ import React from "react";
2
+ import type { ColumnEditorCustomRendererProps as VanillaColumnEditorCustomRendererProps, ColumnEditorRowRendererProps as VanillaColumnEditorRowRendererProps, HeaderRendererProps as VanillaHeaderRendererProps, HeaderDropdownProps as VanillaHeaderDropdownProps, FooterRendererProps as VanillaFooterRendererProps, RowButtonProps as VanillaRowButtonProps } from "simple-table-core";
3
+ import type { PortalBridge } from "../PortalBridge";
4
+ /**
5
+ * Marks a function produced by the wrap helpers below. Controlled-header flows
6
+ * often push core's already-wrapped renderers back through React state into
7
+ * {@link buildVanillaConfig}; without this marker those functions would be
8
+ * wrapped again (a portal-registering wrapper around another portal-registering
9
+ * wrapper), which can freeze the page after autofit / width sync.
10
+ */
11
+ export declare const ST_WRAPPED_RENDERER: unique symbol;
12
+ /** True when `fn` was produced by one of the wrap helpers in this module. */
13
+ export declare function isWrappedRenderer(fn: unknown): boolean;
14
+ /**
15
+ * Wraps a React component into a function that returns an HTMLElement, matching
16
+ * the vanilla renderer contract expected by simple-table-core.
17
+ *
18
+ * The component is registered with the {@link PortalBridge} rather than mounted
19
+ * in its own `createRoot`, so it renders as part of the host React tree and
20
+ * inherits context. The returned container is filled on the host's next render.
21
+ *
22
+ * Idempotent: if `Component` is already a wrapped vanilla renderer, it is
23
+ * returned unchanged so controlled `defaultHeaders` updates cannot nest wraps.
24
+ */
25
+ export declare function wrapReactRenderer<P extends object>(bridge: PortalBridge, Component: React.ComponentType<P>): (props: P) => HTMLElement;
26
+ /**
27
+ * Like {@link wrapReactRenderer} but uses `display: contents` so layout is
28
+ * unchanged when core appends this node (no extra box vs a plain div). Used for
29
+ * cell renderers.
30
+ */
31
+ export declare function wrapReactRendererIntoFragment<P extends object>(bridge: PortalBridge, Component: React.ComponentType<P>): (props: P) => HTMLElement;
32
+ /**
33
+ * Like {@link wrapReactRenderer} for header renderers: core passes `components.*`
34
+ * (sortIcon / filterIcon / collapseIcon / labelContent) as live DOM nodes; this
35
+ * bridges them to React nodes so consumers can use them directly in JSX.
36
+ *
37
+ * Reuses a single portal host per wrapped column so sort/filter icon refreshes
38
+ * update props in place (via {@link PortalBridge.update}) instead of remounting
39
+ * the React subtree and wiping local state.
40
+ */
41
+ export declare function wrapReactHeaderRenderer(bridge: PortalBridge, Component: React.ComponentType<VanillaHeaderRendererProps>): (props: VanillaHeaderRendererProps) => HTMLElement;
42
+ /**
43
+ * Like {@link wrapReactRendererIntoFragment}, but reuses one wrapper per
44
+ * `accessor` on the bridge. When the consumer rebuilds columns with a new
45
+ * Component identity, the slot's `component` is updated in place so the
46
+ * wrapped function identity stays stable across `defaultHeaders` rebuilds.
47
+ */
48
+ export declare function wrapCachedCellRenderer<P extends object>(bridge: PortalBridge, accessor: string, Component: React.ComponentType<P>): (props: P) => HTMLElement;
49
+ /**
50
+ * Like {@link wrapReactHeaderRenderer}, but reuses one host-bearing wrapper per
51
+ * `accessor` so unstable column rebuilds do not remount header React state.
52
+ */
53
+ export declare function wrapCachedHeaderRenderer(bridge: PortalBridge, accessor: string, Component: React.ComponentType<VanillaHeaderRendererProps>): (props: VanillaHeaderRendererProps) => HTMLElement;
54
+ /**
55
+ * Like {@link wrapReactHeaderRenderer} for the header dropdown, which shares the
56
+ * same `components` slot shape.
57
+ */
58
+ export declare function wrapReactHeaderDropdown(bridge: PortalBridge, Component: React.ComponentType<VanillaHeaderDropdownProps>): (props: VanillaHeaderDropdownProps) => HTMLElement;
59
+ /**
60
+ * Like {@link wrapReactRenderer} for footer renderers: bridges the `nextIcon` /
61
+ * `prevIcon` pagination slots (live DOM) to React nodes for JSX use.
62
+ */
63
+ export declare function wrapReactFooterRenderer(bridge: PortalBridge, Component: React.ComponentType<VanillaFooterRendererProps>): (props: VanillaFooterRendererProps) => HTMLElement;
64
+ /**
65
+ * Like {@link wrapReactRenderer} for column editor rows: core passes `components.*`
66
+ * as live DOM nodes; this maps them to React nodes so consumers can use normal JSX.
67
+ */
68
+ export declare function wrapReactColumnEditorRowRenderer(bridge: PortalBridge, Component: React.ComponentType<object>): (props: VanillaColumnEditorRowRendererProps) => HTMLElement;
69
+ /**
70
+ * Maps `searchSection` / `listSection` / `resetSection` HTMLElement slots for
71
+ * `columnEditorConfig.customRenderer` the same way as row slots.
72
+ */
73
+ export declare function wrapReactColumnEditorCustomRenderer(bridge: PortalBridge, Component: React.ComponentType<object>): (props: VanillaColumnEditorCustomRendererProps) => HTMLElement;
74
+ /**
75
+ * Wraps a React row-button render function into the vanilla `RowButton`
76
+ * contract `(props) => HTMLElement`. Like {@link wrapReactRendererIntoFragment},
77
+ * it registers the element with the {@link PortalBridge} so the button renders
78
+ * inside the host React tree — preserving interactivity (onClick) and context —
79
+ * and uses `display: contents` so core's `st-row-button` wrapper styles the
80
+ * actual button rather than an extra box.
81
+ */
82
+ export declare function wrapReactRowButton(bridge: PortalBridge, Component: React.ComponentType<VanillaRowButtonProps>): (props: VanillaRowButtonProps) => HTMLElement;
83
+ /**
84
+ * Renders a static ReactNode into an HTMLElement using server-side static
85
+ * rendering. Used for props like tableEmptyStateRenderer that are static markup
86
+ * (not interactive and not called with arguments). These do not need context.
87
+ */
88
+ export declare function wrapReactNode(node: React.ReactNode): HTMLElement;
89
+ /**
90
+ * Converts a ReactNode to an HTML string using server-side static rendering.
91
+ * Used for icon props where the vanilla table expects a string | HTMLElement | SVGSVGElement.
92
+ */
93
+ export declare function reactNodeToHtmlString(node: React.ReactNode): string;
94
+ /** Returns true if the value is a React component (function or class). */
95
+ export declare function isReactComponent(value: unknown): value is React.ComponentType<any>;
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@simple-table/react",
3
- "version": "4.0.1",
3
+ "version": "4.0.3",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/index.es.js",
6
- "types": "dist/types/react/src/index.d.ts",
6
+ "types": "dist/types/index.d.ts",
7
7
  "sideEffects": [
8
8
  "*.css",
9
9
  "**/*.css"
@@ -12,9 +12,12 @@
12
12
  ".": {
13
13
  "import": "./dist/index.es.js",
14
14
  "require": "./dist/cjs/index.js",
15
- "types": "./dist/types/react/src/index.d.ts"
15
+ "types": "./dist/types/index.d.ts"
16
16
  },
17
- "./styles.css": "./dist/styles.css"
17
+ "./styles.css": {
18
+ "types": "./styles.css.d.ts",
19
+ "default": "./dist/styles.css"
20
+ }
18
21
  },
19
22
  "license": "Community",
20
23
  "publishConfig": {
@@ -22,14 +25,15 @@
22
25
  },
23
26
  "files": [
24
27
  "dist",
25
- "LICENSE"
28
+ "LICENSE",
29
+ "styles.css.d.ts"
26
30
  ],
27
31
  "peerDependencies": {
28
32
  "react": ">=18.0.0",
29
33
  "react-dom": ">=18.0.0"
30
34
  },
31
35
  "dependencies": {
32
- "simple-table-core": "4.0.1"
36
+ "simple-table-core": "4.0.3"
33
37
  },
34
38
  "devDependencies": {
35
39
  "@rollup/plugin-alias": "^4.0.4",
@@ -45,7 +49,7 @@
45
49
  "rollup-plugin-terser": "^7.0.2",
46
50
  "rollup-plugin-typescript2": "^0.37.0",
47
51
  "tslib": "^2.8.1",
48
- "typescript": "^4.9.5",
52
+ "typescript": "^5.0.0",
49
53
  "vitest": "^2.1.9"
50
54
  },
51
55
  "description": "React adapter for simple-table-core — use the Simple Table data grid with full React component support for renderers.",
@@ -94,6 +98,7 @@
94
98
  "scripts": {
95
99
  "build": "rollup -c",
96
100
  "preview": "rollup -c -w",
101
+ "typecheck": "tsc -p tsconfig.json --noEmit",
97
102
  "test": "vitest run",
98
103
  "version:patch": "npm version patch && git push && git push --tags",
99
104
  "version:minor": "npm version minor && git push && git push --tags",
@@ -0,0 +1 @@
1
+ export {};
@@ -1,58 +0,0 @@
1
- /**
2
- * Column width constraints for the table
3
- * These values control minimum and maximum widths for columns and sections
4
- */
5
- /**
6
- * MIN_COLUMN_WIDTH
7
- * The minimum width in pixels that any column can have.
8
- * This is used as:
9
- * - The default minimum width when header.minWidth is undefined
10
- * - The absolute minimum in autoExpandColumns mode to prevent columns from becoming too narrow
11
- */
12
- export declare const MIN_COLUMN_WIDTH = 40;
13
- /**
14
- * MAX_SINGLE_PINNED_SECTION_PERCENT
15
- * Maximum percentage of container width that a single pinned section can occupy.
16
- * When only one section (left OR right) is pinned, it can take up to 60% of the width.
17
- * This ensures the main section always has at least 40% of the space.
18
- */
19
- export declare const MAX_SINGLE_PINNED_SECTION_PERCENT = 0.6;
20
- /**
21
- * MAX_DUAL_PINNED_SECTION_PERCENT
22
- * Maximum percentage of container width that each pinned section can occupy
23
- * when BOTH left and right sections are pinned.
24
- * With both sections at 40%, the main section is guaranteed at least 20% of the space.
25
- */
26
- export declare const MAX_DUAL_PINNED_SECTION_PERCENT = 0.4;
27
- /**
28
- * Mobile breakpoints for responsive pinned section constraints
29
- */
30
- export declare const MOBILE_BREAKPOINT_SMALL = 480;
31
- export declare const MOBILE_BREAKPOINT_MEDIUM = 768;
32
- /**
33
- * Get the maximum allowed width percentage for a single pinned section based on container width.
34
- * This is used when only ONE section (left OR right) is pinned.
35
- *
36
- * @param containerWidth - The table container width in pixels (st-body-container)
37
- * @returns The maximum percentage (0-1) of container width that the pinned section can occupy
38
- */
39
- export declare const getMaxSinglePinnedPercent: (containerWidth: number) => number;
40
- /**
41
- * Get the maximum allowed width percentage for pinned sections based on container width
42
- * and the number of pinned sections.
43
- *
44
- * @param containerWidth - The table container width in pixels (st-body-container)
45
- * @param hasPinnedLeft - Whether there is a pinned left section
46
- * @param hasPinnedRight - Whether there is a pinned right section
47
- * @returns The maximum percentage (0-1) of container width that each pinned section can occupy
48
- */
49
- export declare const getMaxPinnedSectionPercent: (containerWidth: number, hasPinnedLeft: boolean, hasPinnedRight: boolean) => number;
50
- /**
51
- * Calculate the maximum width in pixels for a pinned section
52
- *
53
- * @param containerWidth - The table container width in pixels (st-body-container)
54
- * @param hasPinnedLeft - Whether there is a pinned left section
55
- * @param hasPinnedRight - Whether there is a pinned right section
56
- * @returns The maximum width in pixels for a pinned section
57
- */
58
- export declare const getMaxPinnedSectionWidth: (containerWidth: number, hasPinnedLeft: boolean, hasPinnedRight: boolean) => number;
@@ -1,32 +0,0 @@
1
- export declare const DRAG_THROTTLE_LIMIT = 50;
2
- export declare const ROW_SEPARATOR_WIDTH = 1;
3
- export declare const PAGE_SIZE = 20;
4
- export declare const CSS_VAR_BORDER_WIDTH = "--st-border-width";
5
- export declare const DEFAULT_BORDER_WIDTH = 1;
6
- export declare const VIRTUALIZATION_THRESHOLD = 20;
7
- export declare const UNVIRTUALIZED_ROW_WARNING_THRESHOLD = 500;
8
- export declare const OVERSCAN_PIXELS = 800;
9
- export declare const calculateBufferRowCount: (rowHeight: number) => number;
10
- export declare const COLUMN_EDIT_WIDTH = 29.5;
11
- /**
12
- * Horizontal space reserved for the built-in column-editor toggle strip.
13
- * Returns 0 when editing is off or the strip is hidden via `showToggle: false`.
14
- */
15
- export declare const getColumnEditorStripWidth: (editColumns: boolean | undefined, showToggle?: boolean) => number;
16
- /**
17
- * Whether the built-in column-editor toggle strip is visible and takes layout space.
18
- */
19
- export declare const isColumnEditorStripVisible: (editColumns: boolean | undefined, showToggle?: boolean) => boolean;
20
- export declare const TABLE_HEADER_CELL_WIDTH_DEFAULT = 150;
21
- export declare const PINNED_BORDER_WIDTH = 1;
22
- export declare const CHART_COLUMN_TYPES: string[];
23
- export declare const OPTIMAL_CHART_COLUMN_WIDTH = 150;
24
- export declare const AUTO_SIZE_HEAD_SAMPLE_SIZE = 25;
25
- export declare const AUTO_SIZE_STRIDED_SAMPLE_SIZE = 75;
26
- export declare const AUTO_SIZE_MAX_WIDTH = 500;
27
- export declare const AUTO_SIZE_OUTLIER_PERCENTILE = 95;
28
- export declare const AUTO_SIZE_OUTLIER_THRESHOLD = 0.5;
29
- export declare const AUTO_SIZE_MIN_SAMPLE_FOR_CLIP = 20;
30
- export declare const AUTO_SIZE_WIDTH_BUFFER = 2;
31
- /** Extra padding reserved around header icons (sort / collapse) during auto-size. */
32
- export declare const AUTO_SIZE_HEADER_ICON_PADDING = 4;