@vuu-ui/vuu-table-extras 3.3.9 → 3.3.11

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 (98) hide show
  1. package/package.json +12 -12
  2. package/src/csv-upload/CsvUpload.js +52 -32
  3. package/src/csv-upload/parse/csv-constants.js +2 -2
  4. package/src/csv-upload/parse/csv-errors.js +1 -0
  5. package/src/csv-upload/parse/csv-schema-validation.js +9 -0
  6. package/src/csv-upload/useCsvUpload.js +7 -5
  7. package/types/csv-upload/CsvUpload.d.ts +2 -1
  8. package/types/csv-upload/index.d.ts +1 -1
  9. package/types/csv-upload/parse/csv-constants.d.ts +2 -2
  10. package/types/csv-upload/parse/csv-errors.d.ts +2 -1
  11. package/types/csv-upload/parse/csv-schema-validation.d.ts +2 -0
  12. package/types/csv-upload/parse/index.d.ts +1 -1
  13. package/types/csv-upload/useCsvUpload.d.ts +3 -2
  14. package/types/src/calculated-column/CalculatedColumnPanel.d.ts +12 -0
  15. package/types/src/calculated-column/useCalculatedColumnPanel.d.ts +10 -0
  16. package/types/src/calculated-column/useEditCalculatedColumn.d.ts +13 -0
  17. package/types/src/cell-edit-validators/CaseValidator.d.ts +2 -0
  18. package/types/src/cell-edit-validators/PatternValidator.d.ts +2 -0
  19. package/types/src/cell-edit-validators/index.d.ts +2 -0
  20. package/types/src/cell-renderers/background-cell/BackgroundCell.d.ts +2 -0
  21. package/types/src/cell-renderers/background-cell/BackgroundCellConfigurationEditor.d.ts +2 -0
  22. package/types/src/cell-renderers/background-cell/index.d.ts +2 -0
  23. package/types/src/cell-renderers/background-cell/useDirection.d.ts +3 -0
  24. package/types/src/cell-renderers/button-cell/IconButtonCell.d.ts +6 -0
  25. package/types/src/cell-renderers/dropdown-cell/DropdownCell.d.ts +2 -0
  26. package/types/src/cell-renderers/dropdown-cell/index.d.ts +1 -0
  27. package/types/src/cell-renderers/index.d.ts +6 -0
  28. package/types/src/cell-renderers/lookup-cell/LookupCell.d.ts +2 -0
  29. package/types/src/cell-renderers/lookup-cell/index.d.ts +1 -0
  30. package/types/src/cell-renderers/pct-progress-cell/PctProgressCell.d.ts +2 -0
  31. package/types/src/cell-renderers/pct-progress-cell/index.d.ts +1 -0
  32. package/types/src/cell-renderers/progress-cell/ProgressCell.d.ts +1 -0
  33. package/types/src/cell-renderers/progress-cell/index.d.ts +1 -0
  34. package/types/src/column-expression-input/ColumnExpressionInput.d.ts +10 -0
  35. package/types/src/column-expression-input/column-function-descriptors.d.ts +15 -0
  36. package/types/src/column-expression-input/column-language-parser/ColumnExpressionLanguage.d.ts +2 -0
  37. package/types/src/column-expression-input/column-language-parser/ColumnExpressionTreeWalker.d.ts +57 -0
  38. package/types/src/column-expression-input/column-language-parser/column-expression-parse-utils.d.ts +5 -0
  39. package/types/src/column-expression-input/column-language-parser/generated/column-parser.d.ts +2 -0
  40. package/types/src/column-expression-input/column-language-parser/generated/column-parser.terms.d.ts +1 -0
  41. package/types/src/column-expression-input/column-language-parser/index.d.ts +3 -0
  42. package/types/src/column-expression-input/column-language-parser/test.d.mts +1 -0
  43. package/types/src/column-expression-input/functionDocInfo.d.ts +2 -0
  44. package/types/src/column-expression-input/highlighting.d.ts +1 -0
  45. package/types/src/column-expression-input/index.d.ts +4 -0
  46. package/types/src/column-expression-input/theme.d.ts +1 -0
  47. package/types/src/column-expression-input/useColumnAutoComplete.d.ts +6 -0
  48. package/types/src/column-expression-input/useColumnExpressionEditor.d.ts +25 -0
  49. package/types/src/column-expression-input/useColumnExpressionSuggestionProvider.d.ts +8 -0
  50. package/types/src/column-formatting-settings/BaseNumericFormattingSettings.d.ts +2 -0
  51. package/types/src/column-formatting-settings/ColumnFormattingPanel.d.ts +9 -0
  52. package/types/src/column-formatting-settings/DateTimeFormattingSettings.d.ts +3 -0
  53. package/types/src/column-formatting-settings/LongTypeFormattingSettings.d.ts +3 -0
  54. package/types/src/column-formatting-settings/index.d.ts +3 -0
  55. package/types/src/column-menu/ColumnMenu.d.ts +10 -0
  56. package/types/src/column-menu/column-action-types.d.ts +11 -0
  57. package/types/src/column-menu/column-menu-utils.d.ts +19 -0
  58. package/types/src/column-menu/useColumnActions.d.ts +16 -0
  59. package/types/src/column-picker/ColumnModel.d.ts +81 -0
  60. package/types/src/column-picker/ColumnPicker.d.ts +10 -0
  61. package/types/src/column-picker/ColumnPickerAction.d.ts +5 -0
  62. package/types/src/column-picker/useColumnPicker.d.ts +16 -0
  63. package/types/src/column-picker/useTableColumnPicker.d.ts +7 -0
  64. package/types/src/column-picker/useTableColumnPickerDeprecated.d.ts +14 -0
  65. package/types/src/column-settings-panel/ColumnNameLabel.d.ts +7 -0
  66. package/types/src/column-settings-panel/ColumnSettingsPanel.d.ts +5 -0
  67. package/types/src/column-settings-panel/useColumnSettings.d.ts +30 -0
  68. package/types/src/csv-export/export-utils.d.ts +42 -0
  69. package/types/src/csv-export/index.d.ts +2 -0
  70. package/types/src/csv-export/useCsvExport.d.ts +14 -0
  71. package/types/src/csv-upload/CsvUpload.d.ts +69 -0
  72. package/types/src/csv-upload/data-upload-preview/DataUploadPreview.d.ts +10 -0
  73. package/types/src/csv-upload/data-upload-preview/useDataUploadPreview.d.ts +17 -0
  74. package/types/src/csv-upload/index.d.ts +7 -0
  75. package/types/src/csv-upload/parse/csv-constants.d.ts +3 -0
  76. package/types/src/csv-upload/parse/csv-errors.d.ts +47 -0
  77. package/types/src/csv-upload/parse/csv-parse.d.ts +11 -0
  78. package/types/src/csv-upload/parse/csv-schema-validation.d.ts +18 -0
  79. package/types/src/csv-upload/parse/csv-upload-utils.d.ts +21 -0
  80. package/types/src/csv-upload/parse/index.d.ts +5 -0
  81. package/types/src/csv-upload/useCsvUpload.d.ts +43 -0
  82. package/types/src/datasource-stats/DatasourceStats.d.ts +17 -0
  83. package/types/src/datasource-stats/useDatasourceStats.d.ts +15 -0
  84. package/types/src/freeze-control/FreezeControl.d.ts +15 -0
  85. package/types/src/freeze-control/FrozenBanner.d.ts +6 -0
  86. package/types/src/freeze-control/freezeControlBadge.d.ts +11 -0
  87. package/types/src/freeze-control/useFreezeControl.d.ts +10 -0
  88. package/types/src/index.d.ts +26 -0
  89. package/types/src/inline-add-row/InlineAddRow.d.ts +3 -0
  90. package/types/src/inline-add-row/index.d.ts +2 -0
  91. package/types/src/inline-add-row/useInlineAddRow.d.ts +59 -0
  92. package/types/src/tabbed-table-config-panel/TabbedTableConfigPanel.d.ts +17 -0
  93. package/types/src/tabbed-table-config-panel/TabbedTableSettingsAction.d.ts +7 -0
  94. package/types/src/tabbed-table-config-panel/useTabbedTableConfigPanel.d.ts +13 -0
  95. package/types/src/table-footer/TableFooter.d.ts +10 -0
  96. package/types/src/table-provider/TableProvider.d.ts +18 -0
  97. package/types/src/table-settings-panel/TableSettingsPanel.d.ts +22 -0
  98. package/types/src/table-settings-panel/useTableSettings.d.ts +14 -0
@@ -0,0 +1,43 @@
1
+ import type { DataSource, TableSchema } from "@vuu-ui/vuu-data-types";
2
+ import { type RowDefaultDataItemValues } from "@vuu-ui/vuu-data-editing";
3
+ import type { VuuTable } from "@vuu-ui/vuu-protocol-types";
4
+ import { type CsvParseOptions } from "./parse/csv-parse";
5
+ import { type CsvValidationResult, type CsvColumnValidator } from "./parse/csv-schema-validation";
6
+ import type { CsvUploadErrorResult, CsvUploadImportedResult, CsvUploadPreviewResult, CsvUploadSessionEndResult, CsvUploadSessionTable } from "./CsvUpload";
7
+ export interface CsvUploadHookProps {
8
+ dataSource: DataSource;
9
+ importMode?: "direct" | "preview";
10
+ /**
11
+ * Schema of the import table, where it differs from the target table. Used to validate
12
+ * the CSV and to determine the session datasource columns. If omitted and importTable is
13
+ * provided, the schema is fetched via getTableSchema. Pass a stable reference.
14
+ */
15
+ importSchema?: TableSchema;
16
+ /** Expected import table, used to validate the session table returned by the server. */
17
+ importTable?: VuuTable;
18
+ maxRows?: number;
19
+ onImportSessionEnded?: (result: CsvUploadSessionEndResult) => void;
20
+ onImportSessionStarted?: (dataSource: DataSource) => void;
21
+ onError?: (result: CsvUploadErrorResult | undefined) => void;
22
+ onImported?: (result: CsvUploadImportedResult) => void;
23
+ onPreview?: (result: CsvUploadPreviewResult) => void;
24
+ onProcessingStarted?: () => void;
25
+ parseOptions?: CsvParseOptions;
26
+ /** Default column values applied to every addRow call. Pass a stable reference — a new object triggers EditSession recreation. */
27
+ rowDefaults?: RowDefaultDataItemValues;
28
+ validators?: Record<string, CsvColumnValidator>;
29
+ }
30
+ export type UseCsvUploadReturn = {
31
+ canImport: boolean;
32
+ cancelImport: () => Promise<void>;
33
+ importData: () => Promise<boolean>;
34
+ isImporting: boolean;
35
+ isProcessingFile: boolean;
36
+ onDrop: (_event: React.DragEvent<HTMLDivElement>, files: File[]) => void;
37
+ onTriggerChange: (_event: React.ChangeEvent<HTMLInputElement>, files: File[]) => void;
38
+ sessionTable: CsvUploadSessionTable | undefined;
39
+ schema: TableSchema | undefined;
40
+ validation: CsvValidationResult | undefined;
41
+ error: CsvUploadErrorResult | undefined;
42
+ };
43
+ export declare const useCsvUpload: ({ dataSource, importMode, importSchema, importTable, onImportSessionEnded, onImportSessionStarted, onError, onImported, onPreview, onProcessingStarted, maxRows, parseOptions, rowDefaults, validators, }: CsvUploadHookProps) => UseCsvUploadReturn;
@@ -0,0 +1,17 @@
1
+ import { HTMLAttributes, ReactNode } from "react";
2
+ import { DatasourceStatsHookProps } from "./useDatasourceStats";
3
+ export type ItemLabel = string | {
4
+ singlular: string;
5
+ plural: string;
6
+ };
7
+ export interface DataSourceStatsProps extends DatasourceStatsHookProps, Omit<HTMLAttributes<HTMLDivElement>, "children"> {
8
+ /**
9
+ * children will be displayed when selection present. Intended
10
+ * use case is display of action button(s) that will operate on
11
+ * selected rows.
12
+ */
13
+ children?: ReactNode;
14
+ selectionActions?: ReactNode;
15
+ tooltrayActions?: ReactNode;
16
+ }
17
+ export declare const DataSourceStats: ({ children, className, dataSource, showRowStats, tooltrayActions, ...htmlAttributes }: DataSourceStatsProps) => import("react").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import { DataSource } from "@vuu-ui/vuu-data-types";
2
+ import { Range } from "@vuu-ui/vuu-utils";
3
+ export interface DatasourceStatsHookProps {
4
+ dataSource: DataSource;
5
+ showFreezeStatus?: boolean;
6
+ showRowStats?: boolean;
7
+ showSelectionStats?: boolean;
8
+ }
9
+ export declare const useDatasourceStats: ({ dataSource, }: DatasourceStatsHookProps) => {
10
+ range: Range;
11
+ selectedCount: number;
12
+ size: number;
13
+ freezeTime: string | undefined;
14
+ maxScroll: number;
15
+ };
@@ -0,0 +1,15 @@
1
+ import { type FreezeProps } from "./useFreezeControl";
2
+ import { HTMLAttributes } from "react";
3
+ export interface FreezeControlProps extends HTMLAttributes<HTMLDivElement>, FreezeProps {
4
+ /**
5
+ * Label shown when the table is frozen next to the new record badge.
6
+ * @default "New Orders"
7
+ */
8
+ newItemsLabel?: string;
9
+ /**
10
+ * Duration of the flash animation for the badge (in seconds).
11
+ * @default 0.25
12
+ */
13
+ flashDuration?: number;
14
+ }
15
+ export declare const FreezeControl: ({ dataSource, className, newItemsLabel, flashDuration, ...htmlAttributes }: FreezeControlProps) => import("react").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { HTMLAttributes } from "react";
2
+ import { DataSource } from "@vuu-ui/vuu-data-types";
3
+ export interface FrozenBannerProps extends HTMLAttributes<HTMLDivElement> {
4
+ dataSource: DataSource;
5
+ }
6
+ export declare const FrozenBanner: ({ dataSource, className, ...htmlAttributes }: FrozenBannerProps) => import("react").JSX.Element | null;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Calculates the badge value and overflow state for FreezeControl
3
+ * It should max at 99, and when this is exceeded show 99+
4
+ *
5
+ * @param newRecordCount - int of new records
6
+ * @returns An object with `badgeValue` (the displayed number, max 99) and `isOverflow` (whether count exceeds 99)
7
+ */
8
+ export declare const calculateBadgeState: (newRecordCount: number) => {
9
+ badgeValue: number;
10
+ isOverflow: boolean;
11
+ };
@@ -0,0 +1,10 @@
1
+ import { DataSource } from "@vuu-ui/vuu-data-types";
2
+ import { SyntheticEvent } from "react";
3
+ export interface FreezeProps {
4
+ dataSource: DataSource;
5
+ }
6
+ export declare const useFreezeControl: ({ dataSource }: FreezeProps) => {
7
+ isFrozen: boolean;
8
+ newRecordCount: number;
9
+ onToggleChange: (evt: SyntheticEvent<HTMLButtonElement>) => void;
10
+ };
@@ -0,0 +1,26 @@
1
+ export { CalculatedColumnPanel } from "./calculated-column/CalculatedColumnPanel";
2
+ export * from "./csv-export";
3
+ export * from "./csv-upload";
4
+ export * from "./cell-edit-validators";
5
+ export * from "./cell-renderers";
6
+ export * from "./column-expression-input";
7
+ export * from "./column-formatting-settings";
8
+ export type { ColumnDisplayActionHandler, TableSettingsActionHandler, } from "./column-menu/column-action-types";
9
+ export { ColumnMenu } from "./column-menu/ColumnMenu";
10
+ export { useColumnActions } from "./column-menu/useColumnActions";
11
+ export { ColumnChangeSource, ColumnModel, isColumnAdded, isColumnRemoved, isColumnsReordered, SelectedColumnChangeType, type ColumnEvents, type ColumnsChangeHandler, } from "./column-picker/ColumnModel";
12
+ export { ColumnPicker, type ColumnPickerProps, } from "./column-picker/ColumnPicker";
13
+ export { ColumnPickerAction } from "./column-picker/ColumnPickerAction";
14
+ export type { SelectedColumnsChangeHandler } from "./column-picker/useColumnPicker";
15
+ export { useTableColumnPicker } from "./column-picker/useTableColumnPicker";
16
+ export { ColumnSettingsPanel } from "./column-settings-panel/ColumnSettingsPanel";
17
+ export { useColumnSettings } from "./column-settings-panel/useColumnSettings";
18
+ export { DataSourceStats, type DataSourceStatsProps, } from "./datasource-stats/DatasourceStats";
19
+ export { FreezeControl } from "./freeze-control/FreezeControl";
20
+ export { FrozenBanner } from "./freeze-control/FrozenBanner";
21
+ export * from "./inline-add-row";
22
+ export { TabbedTableConfigPanel } from "./tabbed-table-config-panel/TabbedTableConfigPanel";
23
+ export { TabbedTableSettingsAction } from "./tabbed-table-config-panel/TabbedTableSettingsAction";
24
+ export { TableFooter, TableFooterTray } from "./table-footer/TableFooter";
25
+ export { TableProvider, useTableContext } from "./table-provider/TableProvider";
26
+ export { defaultTableSettingsPermissions, TableSettingsPanel, type TableDisplayAttributeChangeHandler, } from "./table-settings-panel/TableSettingsPanel";
@@ -0,0 +1,3 @@
1
+ import type { BaseRowProps } from "@vuu-ui/vuu-table-types";
2
+ export type InlineAddRowProps = BaseRowProps;
3
+ export declare const InlineAddRow: ({ ariaRowIndex, className, columns, style, }: InlineAddRowProps) => import("react").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { InlineAddRow, type InlineAddRowProps } from "./InlineAddRow";
2
+ export { useInlineAddRow, type UseInlineAddRowProps } from "./useInlineAddRow";
@@ -0,0 +1,59 @@
1
+ import type { DataRow, RuntimeColumnDescriptor } from "@vuu-ui/vuu-table-types";
2
+ export interface UseInlineAddRowProps {
3
+ columns: RuntimeColumnDescriptor[];
4
+ }
5
+ export declare const useInlineAddRow: ({ columns }: UseInlineAddRowProps) => {
6
+ containerRef: import("react").RefObject<HTMLDivElement | null>;
7
+ dataRow: DataRow;
8
+ draftRevision: number;
9
+ inlineAddColumns: {
10
+ editableBulk?: import("@vuu-ui/vuu-data-types").BulkEdit;
11
+ name: string;
12
+ required?: boolean;
13
+ serverDataType?: import("@vuu-ui/vuu-protocol-types").VuuColumnDataType;
14
+ type?: import("@vuu-ui/vuu-data-types").DataValueType;
15
+ aggregate?: import("@vuu-ui/vuu-protocol-types").VuuAggType;
16
+ allowColumnHeaderMenu?: false;
17
+ colHeaderContentRenderer?: string;
18
+ colHeaderLabelRenderer?: string;
19
+ exportFormatter?: (value: unknown) => string;
20
+ getIcon?: (row: DataRow) => string | undefined;
21
+ groupable?: boolean;
22
+ hidden?: boolean;
23
+ locked?: Exclude<import("@vuu-ui/vuu-table-types").PinLocation, "left"> | false;
24
+ maxWidth?: number;
25
+ minWidth?: number;
26
+ pin?: import("@vuu-ui/vuu-table-types").PinLocation | false;
27
+ removeable?: boolean;
28
+ selected?: boolean;
29
+ source?: "client" | "server";
30
+ status?: import("@salt-ds/core").ValidationStatus;
31
+ align?: "left" | "right";
32
+ ariaColIndex: number;
33
+ HeaderCellContentRenderer?: import("react").FunctionComponent<Omit<import("@vuu-ui/vuu-table-types").HeaderCellProps, "id" | "index">>;
34
+ HeaderCellLabelRenderer?: import("react").FunctionComponent<Omit<import("@vuu-ui/vuu-table-types").HeaderCellProps, "id" | "index">>;
35
+ canStretch?: boolean;
36
+ className?: string;
37
+ clientSideEditValidationCheck?: import("@vuu-ui/vuu-data-types").DataValueValidationChecker;
38
+ draggable?: boolean;
39
+ filter?: import("@vuu-ui/vuu-filter-types").Filter;
40
+ flex?: number;
41
+ heading?: [...string[]];
42
+ isGroup?: boolean;
43
+ isSystemColumn?: boolean;
44
+ label: string;
45
+ marginLeft?: number;
46
+ moving?: boolean;
47
+ originalIdx?: number;
48
+ pinnedOffset?: number;
49
+ pinnedWidth?: number;
50
+ resizeable?: boolean;
51
+ resizing?: boolean;
52
+ sortable?: boolean;
53
+ sorted?: import("@vuu-ui/vuu-table-types").ColumnSort;
54
+ valueFormatter: import("@vuu-ui/vuu-table-types").ValueFormatter;
55
+ width: number;
56
+ editable: boolean;
57
+ CellRenderer: import("react").FunctionComponent<import("@vuu-ui/vuu-table-types").TableCellRendererProps> | undefined;
58
+ }[];
59
+ };
@@ -0,0 +1,17 @@
1
+ import { VuuTable } from "@vuu-ui/vuu-protocol-types";
2
+ import type { TableProps } from "@vuu-ui/vuu-table";
3
+ import { HTMLAttributes } from "react";
4
+ import { ColumnPickerProps } from "../column-picker/ColumnPicker";
5
+ import { TableSettingsPanelProps } from "../table-settings-panel/TableSettingsPanel";
6
+ declare const TabLabels: {
7
+ readonly "table-settings": "Table";
8
+ readonly "table-columns": "Columns";
9
+ };
10
+ type TabName = keyof typeof TabLabels;
11
+ export interface TabbedTableConfigPanelProps extends ColumnPickerProps, Pick<TableSettingsPanelProps, "onDisplayAttributeChange">, Pick<TableProps, "config">, HTMLAttributes<HTMLDivElement> {
12
+ allowCreateCalculatedColumn?: boolean;
13
+ selectedTab?: TabName;
14
+ vuuTable?: VuuTable;
15
+ }
16
+ export declare const TabbedTableConfigPanel: ({ allowCreateCalculatedColumn, className, columnModel, config, onDisplayAttributeChange, selectedTab, vuuTable, ...htmlAttributes }: TabbedTableConfigPanelProps) => import("react").JSX.Element;
17
+ export {};
@@ -0,0 +1,7 @@
1
+ import { IconButtonProps } from "@vuu-ui/vuu-ui-controls";
2
+ import { TabbedTableConfigPanelHookProps } from "./useTabbedTableConfigPanel";
3
+ import { TableDisplayAttributeChangeHandler } from "../table-settings-panel/TableSettingsPanel";
4
+ export interface TabbedTableSettingsActionProps extends Partial<IconButtonProps>, TabbedTableConfigPanelHookProps {
5
+ onDisplayAttributeChange: TableDisplayAttributeChangeHandler;
6
+ }
7
+ export declare const TabbedTableSettingsAction: ({ allowCreateCalculatedColumn, appearance, columnModel, config, icon, onDisplayAttributeChange, sentiment, vuuTable, ...IconButtonProps }: TabbedTableSettingsActionProps) => import("react").JSX.Element;
@@ -0,0 +1,13 @@
1
+ import { TableSettingsPanelProps } from "../table-settings-panel/TableSettingsPanel";
2
+ import { TableProps } from "@vuu-ui/vuu-table";
3
+ import { ColumnPickerProps } from "../column-picker/ColumnPicker";
4
+ import { VuuTable } from "@vuu-ui/vuu-protocol-types";
5
+ export interface TabbedTableConfigPanelHookProps extends Pick<ColumnPickerProps, "allowCreateCalculatedColumn" | "columnModel">, Pick<TableSettingsPanelProps, "onDisplayAttributeChange">, Pick<TableProps, "config"> {
6
+ /**
7
+ * only required for calculated columns
8
+ */
9
+ vuuTable?: VuuTable;
10
+ }
11
+ export declare const useTabbedTableConfigPanel: ({ allowCreateCalculatedColumn, columnModel, config, onDisplayAttributeChange, vuuTable, }: TabbedTableConfigPanelHookProps) => {
12
+ showTabbedTableConfigPanel: (title?: string) => void;
13
+ };
@@ -0,0 +1,10 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ export interface TableFooterProps extends HTMLAttributes<HTMLDivElement> {
3
+ onInvokeAction?: (action: string) => void;
4
+ tooltrayActions?: ReactNode;
5
+ }
6
+ export declare const TableFooterTray: ({ children, position }: {
7
+ children: ReactNode;
8
+ position?: 'center' | 'end';
9
+ }) => import("react").JSX.Element;
10
+ export declare const TableFooter: ({ children, className, onInvokeAction, tooltrayActions, ...htmlAttributes }: TableFooterProps) => import("react").JSX.Element;
@@ -0,0 +1,18 @@
1
+ import type { MenuActionHandler } from "@vuu-ui/vuu-context-menu";
2
+ import type { DataSource } from "@vuu-ui/vuu-data-types";
3
+ import type { TableProps } from "@vuu-ui/vuu-table";
4
+ import type { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
5
+ import { ReactNode } from "react";
6
+ import type { ColumnMenuActionType } from "../column-menu/column-menu-utils";
7
+ export interface TableContextProps extends Pick<TableProps, "dataSource" | "rowActionHandlers"> {
8
+ menuActionHandler: MenuActionHandler<ColumnMenuActionType, ColumnDescriptor>;
9
+ }
10
+ export declare const TableContext: import("react").Context<TableContextProps>;
11
+ export declare const TableProvider: ({ children, dataSource, menuActionHandler, rowActionHandlers, }: TableContextProps & {
12
+ children: ReactNode;
13
+ }) => import("react").JSX.Element;
14
+ export declare function useTableContext(throwIfNoDataSource?: boolean): {
15
+ dataSource: DataSource;
16
+ menuActionHandler: MenuActionHandler<ColumnMenuActionType, ColumnDescriptor>;
17
+ };
18
+ export declare const useRowAction: (actionId: string) => import("@vuu-ui/vuu-table-types").RowActionHandler;
@@ -0,0 +1,22 @@
1
+ import { TableDisplayAttributes, TableSettingsPermissions } from "@vuu-ui/vuu-table-types";
2
+ export declare const defaultTableSettingsPermissions: Readonly<TableSettingsPermissions>;
3
+ export declare const noTableSettingsPermissions: Readonly<TableSettingsPermissions>;
4
+ export type TableDisplayAttributeChangeHandler = (displayAttributes: TableDisplayAttributes) => void;
5
+ /**
6
+ * Describes the props for a Table Configuration Editor, for which
7
+ * an implementation is provided in vuu-table-extras
8
+ */
9
+ export interface TableSettingsPanelProps {
10
+ allowColumnLabelCase?: boolean;
11
+ allowColumnDefaultWidth?: boolean;
12
+ allowGridRowStyling?: boolean;
13
+ onDisplayAttributeChange: TableDisplayAttributeChangeHandler;
14
+ tableDisplayAttributes: TableDisplayAttributes;
15
+ permissions?: TableSettingsPermissions | boolean;
16
+ }
17
+ /**
18
+ The TableSettingsPanel assumes 'ownership' of the tableSettings.
19
+ It updates the settings in state locally and notifies caller of
20
+ every change via onChange callback
21
+ */
22
+ export declare const TableSettingsPanel: ({ onDisplayAttributeChange, tableDisplayAttributes: tableDisplayAttributesProp, permissions: permissionsProp, }: TableSettingsPanelProps) => import("react").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { TableDisplayAttributes } from "@vuu-ui/vuu-table-types";
2
+ import { CommitHandler } from "@vuu-ui/vuu-utils";
3
+ import { MouseEvent, SyntheticEvent } from "react";
4
+ import { TableSettingsPanelProps } from "./TableSettingsPanel";
5
+ export type ColumnLike = {
6
+ name: string;
7
+ };
8
+ export declare const useTableSettings: ({ onDisplayAttributeChange, tableDisplayAttributes: tableDisplayAttributesProp, }: TableSettingsPanelProps) => {
9
+ columnLabelsValue: number;
10
+ onChangeColumnLabels: (evt: SyntheticEvent) => void;
11
+ onChangeTableAttribute: (evt: MouseEvent<HTMLButtonElement>) => void;
12
+ onCommitColumnWidth: CommitHandler;
13
+ tableDisplayAttributes: TableDisplayAttributes;
14
+ };