@vuu-ui/vuu-table-extras 4.0.0-alpha.1 → 4.0.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +14 -12
- package/src/calculated-column/CalculatedColumnPanel.js +2 -2
- package/src/calculated-column/useEditCalculatedColumn.js +1 -1
- package/src/column-picker/ColumnModel.js +14 -25
- package/src/column-picker/ColumnPicker.css.js +0 -86
- package/src/column-picker/ColumnPicker.js +12 -180
- package/src/column-picker/useColumnPicker.js +28 -22
- package/src/csv-upload/CsvUpload.css.js +34 -0
- package/src/csv-upload/CsvUpload.js +109 -45
- package/src/csv-upload/parse/csv-constants.js +2 -2
- package/src/csv-upload/parse/csv-errors.js +2 -1
- package/src/csv-upload/parse/csv-parse.js +1 -1
- package/src/csv-upload/parse/csv-schema-validation.js +54 -6
- package/src/csv-upload/useCsvUpload.js +16 -16
- package/src/tabbed-table-config-panel/TabbedTableConfigPanel.js +17 -8
- package/src/tabbed-table-config-panel/useTabbedTableConfigPanel.js +1 -1
- package/types/calculated-column/CalculatedColumnPanel.d.ts +2 -2
- package/types/column-picker/ColumnModel.d.ts +4 -3
- package/types/column-picker/ColumnPicker.d.ts +4 -6
- package/types/column-picker/useColumnPicker.d.ts +7 -10
- package/types/column-settings-panel/useColumnSettings.d.ts +3 -3
- package/types/csv-upload/CsvUpload.d.ts +3 -6
- package/types/csv-upload/data-upload-preview/useDataUploadPreview.d.ts +1 -1
- package/types/csv-upload/index.d.ts +1 -1
- package/types/csv-upload/parse/csv-constants.d.ts +2 -2
- package/types/csv-upload/parse/csv-errors.d.ts +3 -2
- package/types/csv-upload/parse/csv-schema-validation.d.ts +10 -2
- package/types/csv-upload/parse/index.d.ts +1 -1
- package/types/csv-upload/useCsvUpload.d.ts +4 -3
- package/types/index.d.ts +0 -1
- package/types/src/csv-upload/CsvUpload.d.ts +2 -1
- package/types/src/csv-upload/index.d.ts +1 -1
- package/types/src/csv-upload/parse/csv-constants.d.ts +2 -2
- package/types/src/csv-upload/parse/csv-errors.d.ts +2 -1
- package/types/src/csv-upload/parse/csv-schema-validation.d.ts +2 -0
- package/types/src/csv-upload/parse/index.d.ts +1 -1
- package/types/src/csv-upload/useCsvUpload.d.ts +3 -2
- package/types/tabbed-table-config-panel/useTabbedTableConfigPanel.d.ts +4 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { CSV_FIRST_DATA_ROW_NUMBER, CSV_HEADER_ROW_NUMBER, } from "./csv-constants";
|
|
2
2
|
export { CsvParseErrorEnum, CsvValidationErrorEnum, type CsvError, type CsvErrorMap, type CsvErrorState, type CsvParseError, type CsvParseErrorMap, type CsvStructuredError, type CsvValidationError, type CsvValidationErrorMap, type CsvValidationErrorType, type CsvValidationStructuredError, addCsvFileError, addCsvRowError, createCsvErrorState, hasCsvErrors, } from "./csv-errors";
|
|
3
3
|
export { parseCsv, type CsvParseOptions, type CsvParseResult, } from "./csv-parse";
|
|
4
|
-
export { validateCsvAgainstSchema, type CsvValidationOptions, type CsvValidationResult, } from "./csv-schema-validation";
|
|
4
|
+
export { validateCsvAgainstSchema, type CsvColumnValidator, type CsvValidationOptions, type CsvValidationResult, } from "./csv-schema-validation";
|
|
5
5
|
export { buildRowErrorMessage, executeBatchRpcCalls, hasFileParseErrors, isCsvParseError, mergeValidationWithParseErrors, normalizeTableData, toErrorMessage, toValidationErrorsFromParseRowErrors, type CsvUploadTableData, type RpcBatchResult, } from "./csv-upload-utils";
|
|
@@ -2,7 +2,7 @@ import type { DataSource, TableSchema } from "@vuu-ui/vuu-data-types";
|
|
|
2
2
|
import { type RowDefaultDataItemValues } from "@vuu-ui/vuu-data-editing";
|
|
3
3
|
import type { VuuTable } from "@vuu-ui/vuu-protocol-types";
|
|
4
4
|
import { type CsvParseOptions } from "./parse/csv-parse";
|
|
5
|
-
import { type CsvValidationResult } from "./parse/csv-schema-validation";
|
|
5
|
+
import { type CsvValidationResult, type CsvColumnValidator } from "./parse/csv-schema-validation";
|
|
6
6
|
import type { CsvUploadErrorResult, CsvUploadImportedResult, CsvUploadPreviewResult, CsvUploadSessionEndResult, CsvUploadSessionTable } from "./CsvUpload";
|
|
7
7
|
export interface CsvUploadHookProps {
|
|
8
8
|
dataSource: DataSource;
|
|
@@ -17,7 +17,7 @@ export interface CsvUploadHookProps {
|
|
|
17
17
|
importTable?: VuuTable;
|
|
18
18
|
maxRows?: number;
|
|
19
19
|
onImportSessionEnded?: (result: CsvUploadSessionEndResult) => void;
|
|
20
|
-
|
|
20
|
+
onImportSessionReady?: (dataSource: DataSource) => void;
|
|
21
21
|
onError?: (result: CsvUploadErrorResult | undefined) => void;
|
|
22
22
|
onImported?: (result: CsvUploadImportedResult) => void;
|
|
23
23
|
onPreview?: (result: CsvUploadPreviewResult) => void;
|
|
@@ -25,6 +25,7 @@ export interface CsvUploadHookProps {
|
|
|
25
25
|
parseOptions?: CsvParseOptions;
|
|
26
26
|
/** Default column values applied to every addRow call. Pass a stable reference — a new object triggers EditSession recreation. */
|
|
27
27
|
rowDefaults?: RowDefaultDataItemValues;
|
|
28
|
+
validators?: Record<string, CsvColumnValidator>;
|
|
28
29
|
}
|
|
29
30
|
export type UseCsvUploadReturn = {
|
|
30
31
|
canImport: boolean;
|
|
@@ -39,4 +40,4 @@ export type UseCsvUploadReturn = {
|
|
|
39
40
|
validation: CsvValidationResult | undefined;
|
|
40
41
|
error: CsvUploadErrorResult | undefined;
|
|
41
42
|
};
|
|
42
|
-
export declare const useCsvUpload: ({ dataSource, importMode, importSchema, importTable, onImportSessionEnded,
|
|
43
|
+
export declare const useCsvUpload: ({ dataSource, importMode, importSchema, importTable, onImportSessionEnded, onImportSessionReady, onError, onImported, onPreview, onProcessingStarted, maxRows, parseOptions, rowDefaults, validators, }: CsvUploadHookProps) => UseCsvUploadReturn;
|
package/types/index.d.ts
CHANGED
|
@@ -11,7 +11,6 @@ export { useColumnActions } from "./column-menu/useColumnActions";
|
|
|
11
11
|
export { ColumnChangeSource, ColumnModel, isColumnAdded, isColumnRemoved, isColumnsReordered, SelectedColumnChangeType, type ColumnEvents, type ColumnsChangeHandler, } from "./column-picker/ColumnModel";
|
|
12
12
|
export { ColumnPicker, type ColumnPickerProps, } from "./column-picker/ColumnPicker";
|
|
13
13
|
export { ColumnPickerAction } from "./column-picker/ColumnPickerAction";
|
|
14
|
-
export type { SelectedColumnsChangeHandler } from "./column-picker/useColumnPicker";
|
|
15
14
|
export { useTableColumnPicker } from "./column-picker/useTableColumnPicker";
|
|
16
15
|
export { ColumnSettingsPanel } from "./column-settings-panel/ColumnSettingsPanel";
|
|
17
16
|
export { useColumnSettings } from "./column-settings-panel/useColumnSettings";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
2
|
import type { RowDefaultDataItemValues, EditSession } from "@vuu-ui/vuu-data-editing";
|
|
3
3
|
import type { CsvParseError, CsvParseOptions } from "./parse/csv-parse";
|
|
4
|
-
import type { CsvValidationStructuredError } from "./parse/csv-schema-validation";
|
|
4
|
+
import type { CsvValidationStructuredError, CsvColumnValidator } from "./parse/csv-schema-validation";
|
|
5
5
|
import type { DataSource, TableSchema } from "@vuu-ui/vuu-data-types";
|
|
6
6
|
import type { VuuTable } from "@vuu-ui/vuu-protocol-types";
|
|
7
7
|
import type { CsvUploadTableData } from "./parse/csv-upload-utils";
|
|
@@ -60,6 +60,7 @@ export interface CsvUploadProps {
|
|
|
60
60
|
parseOptions?: CsvParseOptions;
|
|
61
61
|
importMode?: "direct" | "preview";
|
|
62
62
|
rowDefaults?: RowDefaultDataItemValues;
|
|
63
|
+
validators?: Record<string, CsvColumnValidator>;
|
|
63
64
|
/**
|
|
64
65
|
* Custom renderer for the error panel.
|
|
65
66
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { CsvUpload, type CsvUploadError, type CsvUploadProps, type CsvUploadErrorResult, type CsvUploadErrors, type CsvUploadPhase, type CsvUploadImportedResult, type CsvUploadPreviewResult, type CsvUploadSessionEndReason, type CsvUploadSessionEndResult, type CsvUploadSessionTable, } from "./CsvUpload";
|
|
2
2
|
export { useCsvUpload, type CsvUploadHookProps, type UseCsvUploadReturn, } from "./useCsvUpload";
|
|
3
3
|
export { DataUploadPreview, type DataUploadPreviewProps, } from "./data-upload-preview/DataUploadPreview";
|
|
4
|
-
export { validateCsvAgainstSchema, type CsvValidationOptions, type CsvValidationResult, } from "./parse/csv-schema-validation";
|
|
4
|
+
export { validateCsvAgainstSchema, type CsvColumnValidator, type CsvValidationOptions, type CsvValidationResult, } from "./parse/csv-schema-validation";
|
|
5
5
|
export { parseCsv, type CsvParseOptions, type CsvParseResult, } from "./parse/csv-parse";
|
|
6
6
|
export { CsvValidationErrorEnum, CsvParseErrorEnum, type CsvError, type CsvErrorMap, type CsvStructuredError, type CsvValidationError, type CsvValidationErrorMap, type CsvValidationErrorType, type CsvValidationStructuredError, type CsvParseError, type CsvParseErrorMap, } from "./parse/csv-errors";
|
|
7
7
|
export { CSV_FIRST_DATA_ROW_NUMBER, CSV_HEADER_ROW_NUMBER, } from "./parse/csv-constants";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const CSV_HEADER_ROW_NUMBER =
|
|
2
|
-
export declare const CSV_FIRST_DATA_ROW_NUMBER =
|
|
1
|
+
export declare const CSV_HEADER_ROW_NUMBER = 0;
|
|
2
|
+
export declare const CSV_FIRST_DATA_ROW_NUMBER = 1;
|
|
3
3
|
export declare const MAX_ROWS_IN_CSV = 10000;
|
|
@@ -12,7 +12,8 @@ export declare enum CsvValidationErrorEnum {
|
|
|
12
12
|
UNKNOWN_COLUMN = "UNKNOWN_COLUMN",
|
|
13
13
|
MAX_ROWS_EXCEEDED = "MAX_ROWS_EXCEEDED",
|
|
14
14
|
EMPTY_NON_STRING_VALUE = "EMPTY_NON_STRING_VALUE",
|
|
15
|
-
TYPE_MISMATCH = "TYPE_MISMATCH"
|
|
15
|
+
TYPE_MISMATCH = "TYPE_MISMATCH",
|
|
16
|
+
CUSTOM_VALIDATION = "CUSTOM_VALIDATION"
|
|
16
17
|
}
|
|
17
18
|
export type CsvErrorMap<TError extends string> = {
|
|
18
19
|
rowErrors: Record<number, Record<string, TError[]>>;
|
|
@@ -3,6 +3,7 @@ import type { VuuRowDataItemType } from "@vuu-ui/vuu-protocol-types";
|
|
|
3
3
|
import type { CsvValidationError, CsvValidationErrorMap, CsvParseError } from "./csv-errors";
|
|
4
4
|
import type { CsvParseResult } from "./csv-parse";
|
|
5
5
|
export { CsvValidationErrorEnum, type CsvValidationError, type CsvValidationErrorMap, type CsvValidationErrorType, type CsvValidationStructuredError, } from "./csv-errors";
|
|
6
|
+
export type CsvColumnValidator = (value: string, columnName: string, row: Record<string, string>) => boolean | string;
|
|
6
7
|
export type CsvValidationResult = {
|
|
7
8
|
columns: string[];
|
|
8
9
|
errorMap: CsvValidationErrorMap;
|
|
@@ -12,5 +13,6 @@ export type CsvValidationResult = {
|
|
|
12
13
|
};
|
|
13
14
|
export type CsvValidationOptions = {
|
|
14
15
|
maxRows?: number;
|
|
16
|
+
validators?: Record<string, CsvColumnValidator>;
|
|
15
17
|
};
|
|
16
18
|
export declare const validateCsvAgainstSchema: (parsed: CsvParseResult, tableSchema: TableSchema, options?: CsvValidationOptions) => CsvValidationResult;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { CSV_FIRST_DATA_ROW_NUMBER, CSV_HEADER_ROW_NUMBER, } from "./csv-constants";
|
|
2
2
|
export { CsvParseErrorEnum, CsvValidationErrorEnum, type CsvError, type CsvErrorMap, type CsvErrorState, type CsvParseError, type CsvParseErrorMap, type CsvStructuredError, type CsvValidationError, type CsvValidationErrorMap, type CsvValidationErrorType, type CsvValidationStructuredError, addCsvFileError, addCsvRowError, createCsvErrorState, hasCsvErrors, } from "./csv-errors";
|
|
3
3
|
export { parseCsv, type CsvParseOptions, type CsvParseResult, } from "./csv-parse";
|
|
4
|
-
export { validateCsvAgainstSchema, type CsvValidationOptions, type CsvValidationResult, } from "./csv-schema-validation";
|
|
4
|
+
export { validateCsvAgainstSchema, type CsvColumnValidator, type CsvValidationOptions, type CsvValidationResult, } from "./csv-schema-validation";
|
|
5
5
|
export { buildRowErrorMessage, executeBatchRpcCalls, hasFileParseErrors, isCsvParseError, mergeValidationWithParseErrors, normalizeTableData, toErrorMessage, toValidationErrorsFromParseRowErrors, type CsvUploadTableData, type RpcBatchResult, } from "./csv-upload-utils";
|
|
@@ -2,7 +2,7 @@ import type { DataSource, TableSchema } from "@vuu-ui/vuu-data-types";
|
|
|
2
2
|
import { type RowDefaultDataItemValues } from "@vuu-ui/vuu-data-editing";
|
|
3
3
|
import type { VuuTable } from "@vuu-ui/vuu-protocol-types";
|
|
4
4
|
import { type CsvParseOptions } from "./parse/csv-parse";
|
|
5
|
-
import { type CsvValidationResult } from "./parse/csv-schema-validation";
|
|
5
|
+
import { type CsvValidationResult, type CsvColumnValidator } from "./parse/csv-schema-validation";
|
|
6
6
|
import type { CsvUploadErrorResult, CsvUploadImportedResult, CsvUploadPreviewResult, CsvUploadSessionEndResult, CsvUploadSessionTable } from "./CsvUpload";
|
|
7
7
|
export interface CsvUploadHookProps {
|
|
8
8
|
dataSource: DataSource;
|
|
@@ -25,6 +25,7 @@ export interface CsvUploadHookProps {
|
|
|
25
25
|
parseOptions?: CsvParseOptions;
|
|
26
26
|
/** Default column values applied to every addRow call. Pass a stable reference — a new object triggers EditSession recreation. */
|
|
27
27
|
rowDefaults?: RowDefaultDataItemValues;
|
|
28
|
+
validators?: Record<string, CsvColumnValidator>;
|
|
28
29
|
}
|
|
29
30
|
export type UseCsvUploadReturn = {
|
|
30
31
|
canImport: boolean;
|
|
@@ -39,4 +40,4 @@ export type UseCsvUploadReturn = {
|
|
|
39
40
|
validation: CsvValidationResult | undefined;
|
|
40
41
|
error: CsvUploadErrorResult | undefined;
|
|
41
42
|
};
|
|
42
|
-
export declare const useCsvUpload: ({ dataSource, importMode, importSchema, importTable, onImportSessionEnded, onImportSessionStarted, onError, onImported, onPreview, onProcessingStarted, maxRows, parseOptions, rowDefaults, }: CsvUploadHookProps) => UseCsvUploadReturn;
|
|
43
|
+
export declare const useCsvUpload: ({ dataSource, importMode, importSchema, importTable, onImportSessionEnded, onImportSessionStarted, onError, onImported, onPreview, onProcessingStarted, maxRows, parseOptions, rowDefaults, validators, }: CsvUploadHookProps) => UseCsvUploadReturn;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { VuuTable } from "@vuu-ui/vuu-protocol-types";
|
|
2
2
|
import { TableProps } from "@vuu-ui/vuu-table";
|
|
3
3
|
import { ColumnPickerProps } from "../column-picker/ColumnPicker";
|
|
4
|
-
import {
|
|
5
|
-
export interface TabbedTableConfigPanelHookProps extends Pick<ColumnPickerProps, "
|
|
4
|
+
import { TableSettingsPanelProps } from "../table-settings-panel/TableSettingsPanel";
|
|
5
|
+
export interface TabbedTableConfigPanelHookProps extends Pick<ColumnPickerProps, "columnModel">, Pick<TableSettingsPanelProps, "onDisplayAttributeChange">, Pick<TableProps, "config"> {
|
|
6
6
|
/**
|
|
7
7
|
* only required for calculated columns
|
|
8
8
|
*/
|
|
9
9
|
vuuTable?: VuuTable;
|
|
10
|
+
allowCreateCalculatedColumn?: boolean;
|
|
10
11
|
}
|
|
11
12
|
export declare const useTabbedTableConfigPanel: ({ allowCreateCalculatedColumn, columnModel, config, onDisplayAttributeChange, vuuTable, }: TabbedTableConfigPanelHookProps) => {
|
|
12
13
|
showTabbedTableConfigPanel: (title?: string) => void;
|