@vuu-ui/vuu-table-extras 3.3.11 → 4.0.0-alpha.1

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 (57) hide show
  1. package/package.json +17 -17
  2. package/src/column-expression-input/column-language-parser/column-expression-parse-utils.js +1 -1
  3. package/src/column-expression-input/useColumnExpressionEditor.js +0 -1
  4. package/src/csv-upload/CsvUpload.js +32 -52
  5. package/src/csv-upload/data-upload-preview/DataUploadPreview.js +1 -1
  6. package/src/csv-upload/parse/csv-constants.js +2 -2
  7. package/src/csv-upload/parse/csv-errors.js +0 -1
  8. package/src/csv-upload/parse/csv-schema-validation.js +0 -9
  9. package/src/csv-upload/useCsvUpload.js +5 -7
  10. package/src/tabbed-table-config-panel/TabbedTableConfigPanel.css.js +3 -3
  11. package/src/tabbed-table-config-panel/TabbedTableConfigPanel.js +29 -27
  12. package/types/calculated-column/CalculatedColumnPanel.d.ts +1 -1
  13. package/types/cell-renderers/background-cell/BackgroundCell.d.ts +1 -1
  14. package/types/cell-renderers/background-cell/BackgroundCellConfigurationEditor.d.ts +1 -1
  15. package/types/cell-renderers/button-cell/IconButtonCell.d.ts +1 -1
  16. package/types/cell-renderers/dropdown-cell/DropdownCell.d.ts +1 -1
  17. package/types/cell-renderers/lookup-cell/LookupCell.d.ts +1 -1
  18. package/types/cell-renderers/pct-progress-cell/PctProgressCell.d.ts +1 -1
  19. package/types/column-expression-input/ColumnExpressionInput.d.ts +1 -1
  20. package/types/column-expression-input/column-language-parser/column-expression-parse-utils.d.ts +1 -1
  21. package/types/column-expression-input/column-language-parser/generated/column-parser.d.ts +1 -1
  22. package/types/column-expression-input/column-language-parser/generated/column-parser.terms.d.ts +1 -24
  23. package/types/column-expression-input/useColumnExpressionEditor.d.ts +4 -4
  24. package/types/column-formatting-settings/BaseNumericFormattingSettings.d.ts +1 -1
  25. package/types/column-formatting-settings/ColumnFormattingPanel.d.ts +1 -1
  26. package/types/column-formatting-settings/LongTypeFormattingSettings.d.ts +2 -1
  27. package/types/column-menu/ColumnMenu.d.ts +1 -1
  28. package/types/column-picker/ColumnPickerAction.d.ts +1 -1
  29. package/types/column-settings-panel/ColumnNameLabel.d.ts +1 -1
  30. package/types/column-settings-panel/ColumnSettingsPanel.d.ts +1 -1
  31. package/types/csv-upload/CsvUpload.d.ts +2 -3
  32. package/types/csv-upload/data-upload-preview/DataUploadPreview.d.ts +1 -1
  33. package/types/csv-upload/data-upload-preview/useDataUploadPreview.d.ts +1 -1
  34. package/types/csv-upload/index.d.ts +1 -1
  35. package/types/csv-upload/parse/csv-constants.d.ts +2 -2
  36. package/types/csv-upload/parse/csv-errors.d.ts +1 -2
  37. package/types/csv-upload/parse/csv-schema-validation.d.ts +0 -2
  38. package/types/csv-upload/parse/index.d.ts +1 -1
  39. package/types/csv-upload/useCsvUpload.d.ts +2 -3
  40. package/types/datasource-stats/DatasourceStats.d.ts +1 -1
  41. package/types/freeze-control/FreezeControl.d.ts +1 -1
  42. package/types/freeze-control/FrozenBanner.d.ts +1 -1
  43. package/types/freeze-control/useFreezeControl.d.ts +1 -1
  44. package/types/inline-add-row/InlineAddRow.d.ts +1 -1
  45. package/types/inline-add-row/useInlineAddRow.d.ts +23 -23
  46. package/types/src/csv-upload/CsvUpload.d.ts +1 -2
  47. package/types/src/csv-upload/index.d.ts +1 -1
  48. package/types/src/csv-upload/parse/csv-constants.d.ts +2 -2
  49. package/types/src/csv-upload/parse/csv-errors.d.ts +1 -2
  50. package/types/src/csv-upload/parse/csv-schema-validation.d.ts +0 -2
  51. package/types/src/csv-upload/parse/index.d.ts +1 -1
  52. package/types/src/csv-upload/useCsvUpload.d.ts +2 -3
  53. package/types/tabbed-table-config-panel/TabbedTableConfigPanel.d.ts +5 -5
  54. package/types/tabbed-table-config-panel/TabbedTableSettingsAction.d.ts +1 -1
  55. package/types/table-footer/TableFooter.d.ts +3 -3
  56. package/types/table-provider/TableProvider.d.ts +1 -1
  57. package/types/table-settings-panel/TableSettingsPanel.d.ts +1 -1
package/package.json CHANGED
@@ -1,43 +1,43 @@
1
1
  {
2
- "version": "3.3.11",
2
+ "version": "4.0.0-alpha.1",
3
3
  "author": "heswell",
4
4
  "main": "./src/index.js",
5
5
  "license": "Apache-2.0",
6
+ "type": "module",
6
7
  "scripts": {
7
8
  "prebuild": "npm run lezer-generate:column",
8
9
  "build:dev": "node ../../scripts/run-build.mjs",
9
10
  "build": "node ../../scripts/run-build-rslib.ts",
10
11
  "type-defs": "node ../../scripts/build-type-defs.mjs",
11
- "lezer-generate:column": "lezer-generator --output ./src/column-expression-input/column-language-parser/generated/column-parser.js ./src/column-expression-input/column-language-parser/grammar/column.grammar"
12
+ "lezer-generate:column": "lezer-generator --output ./src/column-expression-input/column-language-parser/generated/column-parser.ts ./src/column-expression-input/column-language-parser/grammar/column.grammar"
12
13
  },
13
14
  "devDependencies": {
14
- "@vuu-ui/vuu-filter-types": "3.3.11",
15
- "@vuu-ui/vuu-protocol-types": "3.3.11"
15
+ "@vuu-ui/vuu-filter-types": "4.0.0-alpha.1",
16
+ "@vuu-ui/vuu-protocol-types": "4.0.0-alpha.1"
16
17
  },
17
18
  "dependencies": {
18
- "@vuu-ui/vuu-codemirror": "3.3.11",
19
- "@vuu-ui/vuu-data-editing": "3.3.11",
20
- "@vuu-ui/vuu-data-react": "3.3.11",
21
- "@vuu-ui/vuu-data-types": "3.3.11",
22
- "@vuu-ui/vuu-table-types": "3.3.11",
23
- "@vuu-ui/vuu-popups": "3.3.11",
24
- "@vuu-ui/vuu-table": "3.3.11",
25
- "@vuu-ui/vuu-utils": "3.3.11",
26
- "@vuu-ui/vuu-ui-controls": "3.3.11",
19
+ "@vuu-ui/vuu-codemirror": "4.0.0-alpha.1",
20
+ "@vuu-ui/vuu-data-editing": "4.0.0-alpha.1",
21
+ "@vuu-ui/vuu-data-react": "4.0.0-alpha.1",
22
+ "@vuu-ui/vuu-data-types": "4.0.0-alpha.1",
23
+ "@vuu-ui/vuu-table-types": "4.0.0-alpha.1",
24
+ "@vuu-ui/vuu-popups": "4.0.0-alpha.1",
25
+ "@vuu-ui/vuu-table": "4.0.0-alpha.1",
26
+ "@vuu-ui/vuu-utils": "4.0.0-alpha.1",
27
+ "@vuu-ui/vuu-ui-controls": "4.0.0-alpha.1",
27
28
  "@lezer/lr": "1.4.2",
28
- "@salt-ds/core": "1.54.1",
29
- "@salt-ds/lab": "1.0.0-alpha.83",
29
+ "@salt-ds/core": "1.67.0",
30
+ "@salt-ds/lab": "1.0.0-alpha.99",
30
31
  "@salt-ds/styles": "0.2.1",
31
32
  "@salt-ds/window": "0.1.1",
32
33
  "csv-parse": "^7.0.0"
33
34
  },
34
35
  "peerDependencies": {
35
- "@floating-ui/react": "^0.26.28",
36
+ "@floating-ui/react": "^0.27.19",
36
37
  "clsx": "^2.0.0",
37
38
  "react": "^19.2.3",
38
39
  "react-dom": "^19.2.3"
39
40
  },
40
- "type": "module",
41
41
  "files": [
42
42
  "README.md",
43
43
  "src",
@@ -33,7 +33,7 @@ const isCompleteExpression = (src)=>{
33
33
  try {
34
34
  strictParser.parse(src);
35
35
  return true;
36
- } catch (err) {
36
+ } catch (_err) {
37
37
  return false;
38
38
  }
39
39
  };
@@ -116,7 +116,6 @@ const useColumnExpressionEditor = ({ onChange, onSubmitExpression, source, sugge
116
116
  viewRef.current?.destroy();
117
117
  };
118
118
  }, [
119
- completionFn,
120
119
  createState
121
120
  ]);
122
121
  const handleBlur = useCallback(()=>{
@@ -1,5 +1,5 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
- import { Button, Dialog, DialogActions, DialogContent, DialogHeader, FileDropZone, FileDropZoneIcon, FileDropZoneTrigger, Text } from "@salt-ds/core";
2
+ import { Button, Dialog, DialogActions, DialogContent, DialogHeader, FileDropZone, FileDropZoneIcon, FileDropZoneTrigger } from "@salt-ds/core";
3
3
  import { useComponentCssInjection } from "@salt-ds/styles";
4
4
  import { useWindow } from "@salt-ds/window";
5
5
  import { useCallback, useState } from "react";
@@ -18,10 +18,6 @@ const CsvUpload_CsvUpload = (props)=>{
18
18
  window: targetWindow
19
19
  });
20
20
  const { canImport, cancelImport, isProcessingFile, isImporting, importData, onDrop, onTriggerChange, schema, validation, error } = useCsvUpload(props);
21
- const fileErrors = validation?.errors.filter((e)=>e.column in validation.errorMap.fileErrors) ?? [];
22
- const hasErrors = !!error || validation && validation.errors.length > 0;
23
- const isUploaded = canImport || isImporting;
24
- const status = hasErrors ? "error" : isUploaded ? "success" : void 0;
25
21
  const handleCancel = useCallback(async ()=>{
26
22
  await cancelImport();
27
23
  if (!isControlledOpen) setInternalOpen(false);
@@ -40,55 +36,38 @@ const CsvUpload_CsvUpload = (props)=>{
40
36
  const content = /*#__PURE__*/ jsxs("div", {
41
37
  className: classBase,
42
38
  children: [
43
- /*#__PURE__*/ jsx(FileDropZone, {
39
+ /*#__PURE__*/ jsxs(FileDropZone, {
44
40
  className: `${classBase}-dropZone`,
45
41
  disabled: void 0 === schema || isProcessingFile || isImporting,
46
42
  onDrop: onDrop,
47
- status: status,
48
- children: isUploaded ? /*#__PURE__*/ jsxs(Fragment, {
49
- children: [
50
- /*#__PURE__*/ jsx(FileDropZoneIcon, {
51
- status: "success"
52
- }),
53
- /*#__PURE__*/ jsx("strong", {
54
- children: "Upload completed"
55
- })
56
- ]
57
- }) : /*#__PURE__*/ jsxs(Fragment, {
58
- children: [
59
- /*#__PURE__*/ jsx(FileDropZoneIcon, {
60
- status: hasErrors ? "error" : void 0
61
- }),
62
- validation && validation.errors.length > 0 ? /*#__PURE__*/ jsxs(Fragment, {
63
- children: [
64
- /*#__PURE__*/ jsx("div", {
65
- children: "Your file contains errors"
66
- }),
67
- fileErrors.length > 0 && /*#__PURE__*/ jsx("ul", {
68
- className: `${classBase}-errorList`,
69
- children: fileErrors.map((error, i)=>/*#__PURE__*/ jsx("li", {
70
- className: `${classBase}-errorItem`,
71
- children: error.message
72
- }, `${error.column}-${error.message}-${i}`))
73
- }),
74
- /*#__PURE__*/ jsx("div", {
75
- children: "Please rectify and reupload"
76
- })
77
- ]
78
- }) : /*#__PURE__*/ jsx("div", {
79
- children: "Drop a file here or"
80
- }),
81
- /*#__PURE__*/ jsx(FileDropZoneTrigger, {
82
- accept: ".csv,text/csv",
83
- onChange: onTriggerChange,
84
- children: "BROWSE FILES"
85
- }),
86
- /*#__PURE__*/ jsx(Text, {
87
- children: "Only .csv files"
88
- }),
89
- children
90
- ]
91
- })
43
+ status: validation && validation.errors.length > 0 || error ? "error" : void 0,
44
+ children: [
45
+ /*#__PURE__*/ jsx(FileDropZoneIcon, {}),
46
+ validation && validation.errors.length > 0 ? /*#__PURE__*/ jsxs(Fragment, {
47
+ children: [
48
+ /*#__PURE__*/ jsx("div", {
49
+ children: "Your file contains errors"
50
+ }),
51
+ /*#__PURE__*/ jsx("ul", {
52
+ className: `${classBase}-errorList`,
53
+ children: validation.errors.filter((e)=>e.column in validation.errorMap.fileErrors).map((error, i)=>/*#__PURE__*/ jsx("li", {
54
+ className: `${classBase}-errorItem`,
55
+ children: error.message
56
+ }, `${error.column}-${error.message}-${i}`))
57
+ }),
58
+ /*#__PURE__*/ jsx("div", {
59
+ children: "Please rectify and reupload"
60
+ })
61
+ ]
62
+ }) : /*#__PURE__*/ jsx("div", {
63
+ children: "Drop a file here or"
64
+ }),
65
+ /*#__PURE__*/ jsx(FileDropZoneTrigger, {
66
+ accept: ".csv,text/csv",
67
+ onChange: onTriggerChange,
68
+ children: "BROWSE FILES"
69
+ })
70
+ ]
92
71
  }),
93
72
  error && (renderError ? renderError(error) : /*#__PURE__*/ jsxs("div", {
94
73
  className: `${classBase}-errors`,
@@ -102,7 +81,8 @@ const CsvUpload_CsvUpload = (props)=>{
102
81
  children: error.errors.importError?.message || error.errors.schemaError?.message || error.errors.validationError?.message || "An unexpected error occurred during import."
103
82
  })
104
83
  ]
105
- }))
84
+ })),
85
+ children
106
86
  ]
107
87
  });
108
88
  const actions = /*#__PURE__*/ jsxs(DialogActions, {
@@ -45,7 +45,7 @@ const DataUploadPreview_DataUploadPreview = ({ className, editSession, onClose,
45
45
  editable: false,
46
46
  hidden: false,
47
47
  label: "Error",
48
- width: 300
48
+ width: 200
49
49
  } : {
50
50
  ...column,
51
51
  editable: true
@@ -1,4 +1,4 @@
1
- const CSV_HEADER_ROW_NUMBER = 0;
2
- const CSV_FIRST_DATA_ROW_NUMBER = 1;
1
+ const CSV_HEADER_ROW_NUMBER = 1;
2
+ const CSV_FIRST_DATA_ROW_NUMBER = 2;
3
3
  const MAX_ROWS_IN_CSV = 10000;
4
4
  export { CSV_FIRST_DATA_ROW_NUMBER, CSV_HEADER_ROW_NUMBER, MAX_ROWS_IN_CSV };
@@ -15,7 +15,6 @@ var csv_errors_CsvValidationErrorEnum = /*#__PURE__*/ function(CsvValidationErro
15
15
  CsvValidationErrorEnum["MAX_ROWS_EXCEEDED"] = "MAX_ROWS_EXCEEDED";
16
16
  CsvValidationErrorEnum["EMPTY_NON_STRING_VALUE"] = "EMPTY_NON_STRING_VALUE";
17
17
  CsvValidationErrorEnum["TYPE_MISMATCH"] = "TYPE_MISMATCH";
18
- CsvValidationErrorEnum["CUSTOM_VALIDATION"] = "CUSTOM_VALIDATION";
19
18
  return CsvValidationErrorEnum;
20
19
  }({});
21
20
  const createCsvErrorState = ()=>({
@@ -20,10 +20,6 @@ const validateCsvAgainstSchema = (parsed, tableSchema, options)=>{
20
20
  parsed.rows.forEach((rowValues, rowIndex)=>{
21
21
  const rowNum = rowIndex + CSV_FIRST_DATA_ROW_NUMBER;
22
22
  const typedRow = {};
23
- const rawRow = parsed.header.reduce((acc, headerCol, idx)=>{
24
- acc[headerCol] = rowValues[idx];
25
- return acc;
26
- }, {});
27
23
  parsed.header.forEach((columnName, columnIndex)=>{
28
24
  const rawValue = rowValues[columnIndex];
29
25
  const schemaType = schemaColumns.get(columnName);
@@ -37,11 +33,6 @@ const validateCsvAgainstSchema = (parsed, tableSchema, options)=>{
37
33
  return;
38
34
  }
39
35
  if (void 0 === value) return void addCsvRowError(errorState, rowNum, columnName, CsvValidationErrorEnum.TYPE_MISMATCH, `Value '${rawValue}' is not a valid ${toType}`, rawValue);
40
- const customValidator = options?.validators?.[columnName];
41
- if (customValidator) {
42
- const validationResult = customValidator(rawValue, columnName, rawRow);
43
- if (true !== validationResult) return void addCsvRowError(errorState, rowNum, columnName, CsvValidationErrorEnum.CUSTOM_VALIDATION, "string" == typeof validationResult ? validationResult : `Value '${rawValue}' failed custom validation.`, rawValue);
44
- }
45
36
  typedRow[columnName] = value;
46
37
  });
47
38
  typedRows.push(typedRow);
@@ -5,7 +5,7 @@ import { parseCsv } from "./parse/csv-parse.js";
5
5
  import { validateCsvAgainstSchema } from "./parse/csv-schema-validation.js";
6
6
  import { buildRowErrorMessage, createUploadError, hasFileParseErrors, isCsvParseError, mergeValidationWithParseErrors, toErrorMessage } from "./parse/csv-upload-utils.js";
7
7
  import { CSV_FIRST_DATA_ROW_NUMBER } from "./parse/csv-constants.js";
8
- const useCsvUpload = ({ dataSource, importMode = "direct", importSchema, importTable, onImportSessionEnded, onImportSessionStarted, onError, onImported, onPreview, onProcessingStarted, maxRows, parseOptions, rowDefaults, validators })=>{
8
+ const useCsvUpload = ({ dataSource, importMode = "direct", importSchema, importTable, onImportSessionEnded, onImportSessionStarted, onError, onImported, onPreview, onProcessingStarted, maxRows, parseOptions, rowDefaults })=>{
9
9
  const { getServerAPI } = useData();
10
10
  const [validation, setValidation] = useState();
11
11
  const [sessionTable, setSessionTable] = useState();
@@ -140,7 +140,7 @@ const useCsvUpload = ({ dataSource, importMode = "direct", importSchema, importT
140
140
  if (rowNum < CSV_FIRST_DATA_ROW_NUMBER) continue;
141
141
  const existing = vuuMsgByRow.get(rowNum);
142
142
  const columnError = `${column}: ${message}`;
143
- vuuMsgByRow.set(rowNum, existing ? `${existing}; ${columnError}` : `${0 === rowNum ? "Header" : `Row ${rowNum}`}: ${columnError}`);
143
+ vuuMsgByRow.set(rowNum, existing ? `${existing}; ${columnError}` : `Row ${rowNum}: ${columnError}`);
144
144
  }
145
145
  const parsedRowCount = mergedValidation.rows.length;
146
146
  const unparsedErrorRows = [
@@ -174,7 +174,7 @@ const useCsvUpload = ({ dataSource, importMode = "direct", importSchema, importT
174
174
  if (isRpcError(result)) throw Error(result.errorMessage);
175
175
  if ("string" == typeof result) throw Error(result);
176
176
  } catch (error) {
177
- rpcErrors.push(`${0 === rowNum ? "Header" : `Row ${rowNum}`}: ${toErrorMessage(error)}`);
177
+ rpcErrors.push(`Row ${rowNum}: ${toErrorMessage(error)}`);
178
178
  }
179
179
  }
180
180
  if (rpcErrors.length > 0) throw Error(buildRowErrorMessage("Import failed", rpcErrors));
@@ -240,8 +240,7 @@ const useCsvUpload = ({ dataSource, importMode = "direct", importSchema, importT
240
240
  return;
241
241
  }
242
242
  const schemaValidation = validateCsvAgainstSchema(parsedCsv, schema, {
243
- maxRows,
244
- validators
243
+ maxRows
245
244
  });
246
245
  if (Object.keys(schemaValidation.errorMap.fileErrors).length > 0) {
247
246
  setValidation(schemaValidation);
@@ -289,8 +288,7 @@ const useCsvUpload = ({ dataSource, importMode = "direct", importSchema, importT
289
288
  dataSource.table,
290
289
  table,
291
290
  endEditSessionAndNotify,
292
- schema,
293
- validators
291
+ schema
294
292
  ]);
295
293
  const handleFiles = useCallback(async (files)=>{
296
294
  const file = files[0];
@@ -4,15 +4,15 @@ const css = `
4
4
  position: absolute;
5
5
  inset: 0;
6
6
 
7
- & .saltTabsNext {
7
+ & .saltTabs {
8
8
  height: 100%;
9
9
 
10
- & .saltTabListNext {
10
+ & .saltTabList {
11
11
  border-bottom: solid var(--salt-separable-secondary-borderColor) 1px;
12
12
  height: var(--tabs-height);
13
13
  }
14
14
 
15
- & .saltTabNextPanel {
15
+ & .saltTabPanel {
16
16
  height: calc(100% - var(--tabs-height));
17
17
  }
18
18
  }
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { TabListNext, TabNext, TabNextPanel, TabNextTrigger, TabsNext } from "@salt-ds/lab";
2
+ import { Tab, TabBar, TabList, TabPanel, TabTrigger, Tabs } from "@salt-ds/core";
3
3
  import { useComponentCssInjection } from "@salt-ds/styles";
4
4
  import { useWindow } from "@salt-ds/window";
5
5
  import clsx from "clsx";
@@ -39,42 +39,44 @@ const TabbedTableConfigPanel_TabbedTableConfigPanel = ({ allowCreateCalculatedCo
39
39
  return /*#__PURE__*/ jsx("div", {
40
40
  ...htmlAttributes,
41
41
  className: clsx(classBase, className),
42
- children: /*#__PURE__*/ jsxs(TabsNext, {
42
+ children: /*#__PURE__*/ jsxs(Tabs, {
43
43
  onChange: handleChange,
44
44
  value: value,
45
45
  children: [
46
- /*#__PURE__*/ jsxs(TabListNext, {
47
- appearance: "transparent",
48
- children: [
49
- /*#__PURE__*/ jsx(TabNext, {
50
- value: "table-settings",
51
- children: /*#__PURE__*/ jsx(TabNextTrigger, {
52
- children: "Table settings"
46
+ /*#__PURE__*/ jsx(TabBar, {
47
+ children: /*#__PURE__*/ jsxs(TabList, {
48
+ appearance: "transparent",
49
+ children: [
50
+ /*#__PURE__*/ jsx(Tab, {
51
+ value: "table-settings",
52
+ children: /*#__PURE__*/ jsx(TabTrigger, {
53
+ children: "Table settings"
54
+ })
55
+ }),
56
+ /*#__PURE__*/ jsx(Tab, {
57
+ value: "table-columns",
58
+ children: /*#__PURE__*/ jsx(TabTrigger, {
59
+ children: "Table columns"
60
+ })
61
+ }),
62
+ /*#__PURE__*/ jsx(Tab, {
63
+ disabled: 0 === columns.length,
64
+ value: "column-settings",
65
+ children: /*#__PURE__*/ jsx(TabTrigger, {
66
+ children: "Column settings"
67
+ })
53
68
  })
54
- }),
55
- /*#__PURE__*/ jsx(TabNext, {
56
- value: "table-columns",
57
- children: /*#__PURE__*/ jsx(TabNextTrigger, {
58
- children: "Table columns"
59
- })
60
- }),
61
- /*#__PURE__*/ jsx(TabNext, {
62
- disabled: 0 === columns.length,
63
- value: "column-settings",
64
- children: /*#__PURE__*/ jsx(TabNextTrigger, {
65
- children: "Column settings"
66
- })
67
- })
68
- ]
69
+ ]
70
+ })
69
71
  }),
70
- /*#__PURE__*/ jsx(TabNextPanel, {
72
+ /*#__PURE__*/ jsx(TabPanel, {
71
73
  value: "table-settings",
72
74
  children: /*#__PURE__*/ jsx(TableSettingsPanel, {
73
75
  onDisplayAttributeChange: onDisplayAttributeChange,
74
76
  tableDisplayAttributes: config
75
77
  })
76
78
  }),
77
- /*#__PURE__*/ jsx(TabNextPanel, {
79
+ /*#__PURE__*/ jsx(TabPanel, {
78
80
  value: "table-columns",
79
81
  children: /*#__PURE__*/ jsx(ColumnPicker, {
80
82
  allowCreateCalculatedColumn: allowCreateCalculatedColumn,
@@ -84,7 +86,7 @@ const TabbedTableConfigPanel_TabbedTableConfigPanel = ({ allowCreateCalculatedCo
84
86
  selected: columns
85
87
  })
86
88
  }),
87
- /*#__PURE__*/ jsx(TabNextPanel, {
89
+ /*#__PURE__*/ jsx(TabPanel, {
88
90
  value: "column-settings",
89
91
  children: columns.length > 0 ? /*#__PURE__*/ jsx(ColumnSettingsPanel, {
90
92
  column: columns[0],
@@ -9,4 +9,4 @@ export interface CalculatedColumnPanelProps extends HTMLAttributes<HTMLDivElemen
9
9
  onChangeServerDataType?: (name: VuuColumnDataType) => void;
10
10
  vuuTable: VuuTable;
11
11
  }
12
- export declare const CalculatedColumnPanel: ({ column: columnProp, columnModel, onChangeColumn, onChangeServerDataType: onChangeServerDataTypeProp, vuuTable, }: CalculatedColumnPanelProps) => import("react/jsx-runtime").JSX.Element;
12
+ export declare const CalculatedColumnPanel: ({ column: columnProp, columnModel, onChangeColumn, onChangeServerDataType: onChangeServerDataTypeProp, vuuTable, }: CalculatedColumnPanelProps) => import("react").JSX.Element;
@@ -1,2 +1,2 @@
1
1
  import { TableCellRendererProps } from "@vuu-ui/vuu-table-types";
2
- export declare const BackgroundCell: import("react").NamedExoticComponent<TableCellRendererProps>;
2
+ export declare const BackgroundCell: import("react").MemoExoticComponent<({ column, dataRow, }: TableCellRendererProps) => import("react").JSX.Element>;
@@ -1,2 +1,2 @@
1
1
  import { ConfigurationEditorProps } from "@vuu-ui/vuu-utils";
2
- export declare const BackgroundCellConfigurationEditor: ({ column, onChangeRendering, }: ConfigurationEditorProps) => import("react/jsx-runtime").JSX.Element;
2
+ export declare const BackgroundCellConfigurationEditor: ({ column, onChangeRendering, }: ConfigurationEditorProps) => import("react").JSX.Element;
@@ -3,4 +3,4 @@ import { TableCellRendererProps } from "@vuu-ui/vuu-table-types";
3
3
  * To assign an icon to the cell, give the columndescriptor
4
4
  * a className. In css, assign an icon variable to --vuu-svg-icon.
5
5
  */
6
- export declare const IconButtonCell: ({ column, dataRow }: TableCellRendererProps) => import("react/jsx-runtime").JSX.Element;
6
+ export declare const IconButtonCell: ({ column, dataRow }: TableCellRendererProps) => import("react").JSX.Element;
@@ -1,2 +1,2 @@
1
1
  import { TableCellRendererProps } from "@vuu-ui/vuu-table-types";
2
- export declare const DropdownCell: import("react").NamedExoticComponent<TableCellRendererProps>;
2
+ export declare const DropdownCell: import("react").MemoExoticComponent<({ column, dataRow, editedDuringCurrentSession, onEdit, }: TableCellRendererProps) => import("react").JSX.Element>;
@@ -1,2 +1,2 @@
1
1
  import { TableCellRendererProps } from "@vuu-ui/vuu-table-types";
2
- export declare const LookupCell: import("react").NamedExoticComponent<TableCellRendererProps>;
2
+ export declare const LookupCell: import("react").MemoExoticComponent<({ column, dataRow, }: TableCellRendererProps) => import("react").JSX.Element>;
@@ -1,2 +1,2 @@
1
1
  import { TableCellProps } from "@vuu-ui/vuu-table-types";
2
- export declare const PctProgressCell: ({ column, dataRow }: TableCellProps) => import("react/jsx-runtime").JSX.Element;
2
+ export declare const PctProgressCell: ({ column, dataRow }: TableCellProps) => import("react").JSX.Element;
@@ -7,4 +7,4 @@ export interface ColumnExpressionInputProps extends ExpressionSuggestionConsumer
7
7
  onSubmitExpression?: ColumnExpressionSubmitHandler;
8
8
  source?: string;
9
9
  }
10
- export declare const ColumnExpressionInput: import("react").MemoExoticComponent<({ onChange, onSubmitExpression, source, suggestionProvider, }: ColumnExpressionInputProps) => import("react/jsx-runtime").JSX.Element>;
10
+ export declare const ColumnExpressionInput: import("react").MemoExoticComponent<({ onChange, onSubmitExpression, source, suggestionProvider, }: ColumnExpressionInputProps) => import("react").JSX.Element>;
@@ -2,4 +2,4 @@ import type { SyntaxNode } from "@vuu-ui/vuu-codemirror";
2
2
  export declare const ColumnNamedTerms: readonly string[];
3
3
  export declare const isCompleteExpression: (src: string) => boolean;
4
4
  export declare const lastNamedChild: (node: SyntaxNode) => SyntaxNode | null;
5
- export declare const isCompleteRelationalExpression: (node?: SyntaxNode) => boolean;
5
+ export declare const isCompleteRelationalExpression: (node?: any) => boolean;
@@ -1,2 +1,2 @@
1
- export const parser: LRParser;
2
1
  import { LRParser } from "@lezer/lr";
2
+ export declare const parser: LRParser;
@@ -1,24 +1 @@
1
- export const ColumnDefinitionExpression: 1;
2
- export const Column: 2;
3
- export const Number: 3;
4
- export const String: 4;
5
- export const True: 5;
6
- export const False: 6;
7
- export const ParenthesizedExpression: 7;
8
- export const OpenBrace: 8;
9
- export const CloseBrace: 9;
10
- export const ArithmeticExpression: 10;
11
- export const Divide: 11;
12
- export const Times: 12;
13
- export const Plus: 13;
14
- export const Minus: 14;
15
- export const ConditionalExpression: 15;
16
- export const If: 16;
17
- export const RelationalExpression: 17;
18
- export const RelationalOperator: 18;
19
- export const AndCondition: 19;
20
- export const OrCondition: 20;
21
- export const Comma: 21;
22
- export const CallExpression: 22;
23
- export const Function: 23;
24
- export const ArgList: 24;
1
+ export declare const ColumnDefinitionExpression = 1, Column = 2, Number = 3, String = 4, True = 5, False = 6, ParenthesizedExpression = 7, OpenBrace = 8, CloseBrace = 9, ArithmeticExpression = 10, Divide = 11, Times = 12, Plus = 13, Minus = 14, ConditionalExpression = 15, If = 16, RelationalExpression = 17, RelationalOperator = 18, AndCondition = 19, OrCondition = 20, Comma = 21, CallExpression = 22, Function = 23, ArgList = 24;
@@ -1,6 +1,6 @@
1
- import { Completion } from "@vuu-ui/vuu-codemirror";
2
- import { FocusEventHandler } from "react";
3
- import { ColumnExpressionInputProps } from "./ColumnExpressionInput";
1
+ import { type Completion } from "@vuu-ui/vuu-codemirror";
2
+ import { type FocusEventHandler, type RefObject } from "react";
3
+ import type { ColumnExpressionInputProps } from "./ColumnExpressionInput";
4
4
  export type ColumnExpressionOperator = "Times" | "Divide" | "Minus" | "Plus";
5
5
  export type ColumnExpressionSuggestionType = "column" | "columnValue" | "expression" | "condition-operator" | "operator" | "relational-operator";
6
6
  export type ColumnExpressionSuggestionOptions = {
@@ -19,7 +19,7 @@ export interface ExpressionSuggestionConsumer {
19
19
  suggestionProvider: IExpressionSuggestionProvider;
20
20
  }
21
21
  export declare const useColumnExpressionEditor: ({ onChange, onSubmitExpression, source, suggestionProvider, }: ColumnExpressionInputProps) => {
22
- editorRef: import("react").RefObject<HTMLDivElement | null>;
22
+ editorRef: RefObject<HTMLDivElement | null>;
23
23
  clearInput: () => void;
24
24
  onBlur: FocusEventHandler;
25
25
  };
@@ -1,2 +1,2 @@
1
1
  import { FormattingSettingsProps } from "@vuu-ui/vuu-table-types";
2
- export declare const BaseNumericFormattingSettings: ({ column, onChangeFormatting: onChange, }: FormattingSettingsProps) => import("react/jsx-runtime").JSX.Element;
2
+ export declare const BaseNumericFormattingSettings: ({ column, onChangeFormatting: onChange, }: FormattingSettingsProps) => import("react").JSX.Element;
@@ -6,4 +6,4 @@ export interface ColumnFormattingPanelProps extends HTMLAttributes<HTMLDivElemen
6
6
  column: ColumnDescriptor;
7
7
  onChangeRendering: (renderProps: ColumnTypeRendering) => void;
8
8
  }
9
- export declare const ColumnFormattingPanel: ({ availableRenderers, className, column, onChangeFormatting, onChangeColumnType, onChangeRendering, ...htmlAttributes }: ColumnFormattingPanelProps) => import("react/jsx-runtime").JSX.Element;
9
+ export declare const ColumnFormattingPanel: ({ availableRenderers, className, column, onChangeFormatting, onChangeColumnType, onChangeRendering, ...htmlAttributes }: ColumnFormattingPanelProps) => import("react").JSX.Element;
@@ -1,2 +1,3 @@
1
1
  import { FormattingSettingsProps } from "@vuu-ui/vuu-table-types";
2
- export declare const LongTypeFormattingSettings: (props: FormattingSettingsProps) => import("react/jsx-runtime").JSX.Element;
2
+ import React from "react";
3
+ export declare const LongTypeFormattingSettings: (props: FormattingSettingsProps) => React.JSX.Element;
@@ -7,4 +7,4 @@ export interface ColumnMenuProps extends HTMLAttributes<HTMLSpanElement> {
7
7
  menuActionHandler?: MenuActionHandler<ColumnMenuActionType, ColumnDescriptor>;
8
8
  menuPermissions?: ColumnMenuPermissions;
9
9
  }
10
- export declare const ColumnMenu: ({ className, column, menuActionHandler: menuActionHandlerProp, menuPermissions: { allowSort, allowGroup, allowAggregation, allowHide, allowRemove, allowPin, }, }: ColumnMenuProps) => import("react/jsx-runtime").JSX.Element;
10
+ export declare const ColumnMenu: ({ className, column, menuActionHandler: menuActionHandlerProp, menuPermissions: { allowSort, allowGroup, allowAggregation, allowHide, allowRemove, allowPin, }, }: ColumnMenuProps) => import("react").JSX.Element;
@@ -2,4 +2,4 @@ import { IconButtonProps } from "@vuu-ui/vuu-ui-controls";
2
2
  import { ColumnPickerHookProps } from "./useColumnPicker";
3
3
  export interface ColumnPickerActionProps extends Partial<IconButtonProps>, ColumnPickerHookProps {
4
4
  }
5
- export declare const ColumnPickerAction: ({ appearance, columnModel, icon, sentiment, ...IconButtonProps }: ColumnPickerActionProps) => import("react/jsx-runtime").JSX.Element;
5
+ export declare const ColumnPickerAction: ({ appearance, columnModel, icon, sentiment, ...IconButtonProps }: ColumnPickerActionProps) => import("react").JSX.Element;
@@ -4,4 +4,4 @@ export interface ColumnNameLabelProps {
4
4
  column: ColumnDescriptor;
5
5
  onClick?: MouseEventHandler;
6
6
  }
7
- export declare const ColumnNameLabel: ({ column, onClick }: ColumnNameLabelProps) => import("react/jsx-runtime").JSX.Element;
7
+ export declare const ColumnNameLabel: ({ column, onClick }: ColumnNameLabelProps) => import("react").JSX.Element;
@@ -2,4 +2,4 @@ import { ColumnSettingsProps } from "./useColumnSettings";
2
2
  export interface ColumnSettinsPanelProps extends ColumnSettingsProps {
3
3
  onClickEditCalculatedColumn?: () => void;
4
4
  }
5
- export declare const ColumnSettingsPanel: ({ column: columnProp, columnModel, onClickEditCalculatedColumn, onConfigChange, }: ColumnSettinsPanelProps) => import("react/jsx-runtime").JSX.Element;
5
+ export declare const ColumnSettingsPanel: ({ column: columnProp, columnModel, onClickEditCalculatedColumn, onConfigChange, }: ColumnSettinsPanelProps) => import("react").JSX.Element;
@@ -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, CsvColumnValidator } from "./parse/csv-schema-validation";
4
+ import type { CsvValidationStructuredError } 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,10 +60,9 @@ export interface CsvUploadProps {
60
60
  parseOptions?: CsvParseOptions;
61
61
  importMode?: "direct" | "preview";
62
62
  rowDefaults?: RowDefaultDataItemValues;
63
- validators?: Record<string, CsvColumnValidator>;
64
63
  /**
65
64
  * Custom renderer for the error panel.
66
65
  */
67
66
  renderError?: (error: CsvUploadErrorResult) => ReactNode;
68
67
  }
69
- export declare const CsvUpload: (props: CsvUploadProps) => import("react/jsx-runtime").JSX.Element;
68
+ export declare const CsvUpload: (props: CsvUploadProps) => import("react").JSX.Element;
@@ -7,4 +7,4 @@ export interface DataUploadPreviewProps extends Omit<HTMLAttributes<HTMLDivEleme
7
7
  saveLabel?: string;
8
8
  tableSchema: TableSchema;
9
9
  }
10
- export declare const DataUploadPreview: ({ className, editSession, onClose, saveLabel, tableSchema, ...htmlAttributes }: DataUploadPreviewProps) => import("react/jsx-runtime").JSX.Element;
10
+ export declare const DataUploadPreview: ({ className, editSession, onClose, saveLabel, tableSchema, ...htmlAttributes }: DataUploadPreviewProps) => import("react").JSX.Element;
@@ -11,7 +11,7 @@ export declare const useDataUploadPreview: ({ dataSource, editSession, onClose,
11
11
  canSave: boolean;
12
12
  hasSelection: boolean;
13
13
  onCancel: () => Promise<void>;
14
- onDelete: () => Promise<import("@vuu-ui/vuu-protocol-types").RpcResult>;
14
+ onDelete: () => Promise<void>;
15
15
  onSave: (force?: boolean) => Promise<void>;
16
16
  sessionError: string | undefined;
17
17
  };
@@ -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 CsvColumnValidator, type CsvValidationOptions, type CsvValidationResult, } from "./parse/csv-schema-validation";
4
+ export { validateCsvAgainstSchema, 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 = 0;
2
- export declare const CSV_FIRST_DATA_ROW_NUMBER = 1;
1
+ export declare const CSV_HEADER_ROW_NUMBER = 1;
2
+ export declare const CSV_FIRST_DATA_ROW_NUMBER = 2;
3
3
  export declare const MAX_ROWS_IN_CSV = 10000;
@@ -12,8 +12,7 @@ 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",
16
- CUSTOM_VALIDATION = "CUSTOM_VALIDATION"
15
+ TYPE_MISMATCH = "TYPE_MISMATCH"
17
16
  }
18
17
  export type CsvErrorMap<TError extends string> = {
19
18
  rowErrors: Record<number, Record<string, TError[]>>;
@@ -3,7 +3,6 @@ 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;
7
6
  export type CsvValidationResult = {
8
7
  columns: string[];
9
8
  errorMap: CsvValidationErrorMap;
@@ -13,6 +12,5 @@ export type CsvValidationResult = {
13
12
  };
14
13
  export type CsvValidationOptions = {
15
14
  maxRows?: number;
16
- validators?: Record<string, CsvColumnValidator>;
17
15
  };
18
16
  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 CsvColumnValidator, type CsvValidationOptions, type CsvValidationResult, } from "./csv-schema-validation";
4
+ export { validateCsvAgainstSchema, 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, type CsvColumnValidator } from "./parse/csv-schema-validation";
5
+ import { type CsvValidationResult } 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,7 +25,6 @@ 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>;
29
28
  }
30
29
  export type UseCsvUploadReturn = {
31
30
  canImport: boolean;
@@ -40,4 +39,4 @@ export type UseCsvUploadReturn = {
40
39
  validation: CsvValidationResult | undefined;
41
40
  error: CsvUploadErrorResult | undefined;
42
41
  };
43
- export declare const useCsvUpload: ({ dataSource, importMode, importSchema, importTable, onImportSessionEnded, onImportSessionStarted, onError, onImported, onPreview, onProcessingStarted, maxRows, parseOptions, rowDefaults, validators, }: CsvUploadHookProps) => UseCsvUploadReturn;
42
+ export declare const useCsvUpload: ({ dataSource, importMode, importSchema, importTable, onImportSessionEnded, onImportSessionStarted, onError, onImported, onPreview, onProcessingStarted, maxRows, parseOptions, rowDefaults, }: CsvUploadHookProps) => UseCsvUploadReturn;
@@ -14,4 +14,4 @@ export interface DataSourceStatsProps extends DatasourceStatsHookProps, Omit<HTM
14
14
  selectionActions?: ReactNode;
15
15
  tooltrayActions?: ReactNode;
16
16
  }
17
- export declare const DataSourceStats: ({ children, className, dataSource, showRowStats, tooltrayActions, ...htmlAttributes }: DataSourceStatsProps) => import("react/jsx-runtime").JSX.Element;
17
+ export declare const DataSourceStats: ({ children, className, dataSource, showRowStats, tooltrayActions, ...htmlAttributes }: DataSourceStatsProps) => import("react").JSX.Element;
@@ -12,4 +12,4 @@ export interface FreezeControlProps extends HTMLAttributes<HTMLDivElement>, Free
12
12
  */
13
13
  flashDuration?: number;
14
14
  }
15
- export declare const FreezeControl: ({ dataSource, className, newItemsLabel, flashDuration, ...htmlAttributes }: FreezeControlProps) => import("react/jsx-runtime").JSX.Element;
15
+ export declare const FreezeControl: ({ dataSource, className, newItemsLabel, flashDuration, ...htmlAttributes }: FreezeControlProps) => import("react").JSX.Element;
@@ -3,4 +3,4 @@ import { DataSource } from "@vuu-ui/vuu-data-types";
3
3
  export interface FrozenBannerProps extends HTMLAttributes<HTMLDivElement> {
4
4
  dataSource: DataSource;
5
5
  }
6
- export declare const FrozenBanner: ({ dataSource, className, ...htmlAttributes }: FrozenBannerProps) => import("react/jsx-runtime").JSX.Element | null;
6
+ export declare const FrozenBanner: ({ dataSource, className, ...htmlAttributes }: FrozenBannerProps) => import("react").JSX.Element | null;
@@ -4,7 +4,7 @@ export interface FreezeProps {
4
4
  dataSource: DataSource;
5
5
  }
6
6
  export declare const useFreezeControl: ({ dataSource }: FreezeProps) => {
7
- onToggleChange: (evt: SyntheticEvent<HTMLButtonElement>) => void;
8
7
  isFrozen: boolean;
9
8
  newRecordCount: number;
9
+ onToggleChange: (evt: SyntheticEvent<HTMLButtonElement>) => void;
10
10
  };
@@ -1,3 +1,3 @@
1
1
  import type { BaseRowProps } from "@vuu-ui/vuu-table-types";
2
2
  export type InlineAddRowProps = BaseRowProps;
3
- export declare const InlineAddRow: ({ ariaRowIndex, className, columns, style, }: InlineAddRowProps) => import("react/jsx-runtime").JSX.Element;
3
+ export declare const InlineAddRow: ({ ariaRowIndex, className, columns, style, }: InlineAddRowProps) => import("react").JSX.Element;
@@ -7,8 +7,27 @@ export declare const useInlineAddRow: ({ columns }: UseInlineAddRowProps) => {
7
7
  dataRow: DataRow;
8
8
  draftRevision: number;
9
9
  inlineAddColumns: {
10
- CellRenderer: import("react").FunctionComponent<import("@vuu-ui/vuu-table-types").TableCellRendererProps> | undefined;
11
- editable: boolean;
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;
12
31
  align?: "left" | "right";
13
32
  ariaColIndex: number;
14
33
  HeaderCellContentRenderer?: import("react").FunctionComponent<Omit<import("@vuu-ui/vuu-table-types").HeaderCellProps, "id" | "index">>;
@@ -34,26 +53,7 @@ export declare const useInlineAddRow: ({ columns }: UseInlineAddRowProps) => {
34
53
  sorted?: import("@vuu-ui/vuu-table-types").ColumnSort;
35
54
  valueFormatter: import("@vuu-ui/vuu-table-types").ValueFormatter;
36
55
  width: number;
37
- aggregate?: import("@vuu-ui/vuu-protocol-types").VuuAggType;
38
- allowColumnHeaderMenu?: false;
39
- colHeaderContentRenderer?: string;
40
- colHeaderLabelRenderer?: string;
41
- exportFormatter?: (value: unknown) => string;
42
- getIcon?: (row: DataRow) => string | undefined;
43
- groupable?: boolean;
44
- hidden?: boolean;
45
- locked?: Exclude<import("@vuu-ui/vuu-table-types").PinLocation, "left"> | false;
46
- maxWidth?: number;
47
- minWidth?: number;
48
- pin?: import("@vuu-ui/vuu-table-types").PinLocation | false;
49
- removeable?: boolean;
50
- selected?: boolean;
51
- source?: "client" | "server";
52
- status?: import("@salt-ds/core").ValidationStatus;
53
- editableBulk?: import("@vuu-ui/vuu-data-types").BulkEdit;
54
- name: string;
55
- required?: boolean;
56
- serverDataType?: import("@vuu-ui/vuu-protocol-types").VuuColumnDataType;
57
- type?: import("@vuu-ui/vuu-data-types").DataValueType;
56
+ editable: boolean;
57
+ CellRenderer: import("react").FunctionComponent<import("@vuu-ui/vuu-table-types").TableCellRendererProps> | undefined;
58
58
  }[];
59
59
  };
@@ -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, CsvColumnValidator } from "./parse/csv-schema-validation";
4
+ import type { CsvValidationStructuredError } 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,7 +60,6 @@ export interface CsvUploadProps {
60
60
  parseOptions?: CsvParseOptions;
61
61
  importMode?: "direct" | "preview";
62
62
  rowDefaults?: RowDefaultDataItemValues;
63
- validators?: Record<string, CsvColumnValidator>;
64
63
  /**
65
64
  * Custom renderer for the error panel.
66
65
  */
@@ -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 CsvColumnValidator, type CsvValidationOptions, type CsvValidationResult, } from "./parse/csv-schema-validation";
4
+ export { validateCsvAgainstSchema, 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 = 0;
2
- export declare const CSV_FIRST_DATA_ROW_NUMBER = 1;
1
+ export declare const CSV_HEADER_ROW_NUMBER = 1;
2
+ export declare const CSV_FIRST_DATA_ROW_NUMBER = 2;
3
3
  export declare const MAX_ROWS_IN_CSV = 10000;
@@ -12,8 +12,7 @@ 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",
16
- CUSTOM_VALIDATION = "CUSTOM_VALIDATION"
15
+ TYPE_MISMATCH = "TYPE_MISMATCH"
17
16
  }
18
17
  export type CsvErrorMap<TError extends string> = {
19
18
  rowErrors: Record<number, Record<string, TError[]>>;
@@ -3,7 +3,6 @@ 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;
7
6
  export type CsvValidationResult = {
8
7
  columns: string[];
9
8
  errorMap: CsvValidationErrorMap;
@@ -13,6 +12,5 @@ export type CsvValidationResult = {
13
12
  };
14
13
  export type CsvValidationOptions = {
15
14
  maxRows?: number;
16
- validators?: Record<string, CsvColumnValidator>;
17
15
  };
18
16
  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 CsvColumnValidator, type CsvValidationOptions, type CsvValidationResult, } from "./csv-schema-validation";
4
+ export { validateCsvAgainstSchema, 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, type CsvColumnValidator } from "./parse/csv-schema-validation";
5
+ import { type CsvValidationResult } 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,7 +25,6 @@ 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>;
29
28
  }
30
29
  export type UseCsvUploadReturn = {
31
30
  canImport: boolean;
@@ -40,4 +39,4 @@ export type UseCsvUploadReturn = {
40
39
  validation: CsvValidationResult | undefined;
41
40
  error: CsvUploadErrorResult | undefined;
42
41
  };
43
- export declare const useCsvUpload: ({ dataSource, importMode, importSchema, importTable, onImportSessionEnded, onImportSessionStarted, onError, onImported, onPreview, onProcessingStarted, maxRows, parseOptions, rowDefaults, validators, }: CsvUploadHookProps) => UseCsvUploadReturn;
42
+ export declare const useCsvUpload: ({ dataSource, importMode, importSchema, importTable, onImportSessionEnded, onImportSessionStarted, onError, onImported, onPreview, onProcessingStarted, maxRows, parseOptions, rowDefaults, }: CsvUploadHookProps) => UseCsvUploadReturn;
@@ -1,8 +1,8 @@
1
- import { VuuTable } from "@vuu-ui/vuu-protocol-types";
1
+ import type { VuuTable } from "@vuu-ui/vuu-protocol-types";
2
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";
3
+ import { type HTMLAttributes } from "react";
4
+ import { type ColumnPickerProps } from "../column-picker/ColumnPicker";
5
+ import { type TableSettingsPanelProps } from "../table-settings-panel/TableSettingsPanel";
6
6
  declare const TabLabels: {
7
7
  readonly "table-settings": "Table";
8
8
  readonly "table-columns": "Columns";
@@ -13,5 +13,5 @@ export interface TabbedTableConfigPanelProps extends ColumnPickerProps, Pick<Tab
13
13
  selectedTab?: TabName;
14
14
  vuuTable?: VuuTable;
15
15
  }
16
- export declare const TabbedTableConfigPanel: ({ allowCreateCalculatedColumn, className, columnModel, config, onDisplayAttributeChange, selectedTab, vuuTable, ...htmlAttributes }: TabbedTableConfigPanelProps) => import("react/jsx-runtime").JSX.Element;
16
+ export declare const TabbedTableConfigPanel: ({ allowCreateCalculatedColumn, className, columnModel, config, onDisplayAttributeChange, selectedTab, vuuTable, ...htmlAttributes }: TabbedTableConfigPanelProps) => import("react").JSX.Element;
17
17
  export {};
@@ -4,4 +4,4 @@ import { TableDisplayAttributeChangeHandler } from "../table-settings-panel/Tabl
4
4
  export interface TabbedTableSettingsActionProps extends Partial<IconButtonProps>, TabbedTableConfigPanelHookProps {
5
5
  onDisplayAttributeChange: TableDisplayAttributeChangeHandler;
6
6
  }
7
- export declare const TabbedTableSettingsAction: ({ allowCreateCalculatedColumn, appearance, columnModel, config, icon, onDisplayAttributeChange, sentiment, vuuTable, ...IconButtonProps }: TabbedTableSettingsActionProps) => import("react/jsx-runtime").JSX.Element;
7
+ export declare const TabbedTableSettingsAction: ({ allowCreateCalculatedColumn, appearance, columnModel, config, icon, onDisplayAttributeChange, sentiment, vuuTable, ...IconButtonProps }: TabbedTableSettingsActionProps) => import("react").JSX.Element;
@@ -5,6 +5,6 @@ export interface TableFooterProps extends HTMLAttributes<HTMLDivElement> {
5
5
  }
6
6
  export declare const TableFooterTray: ({ children, position }: {
7
7
  children: ReactNode;
8
- position?: "center" | "end";
9
- }) => import("react/jsx-runtime").JSX.Element;
10
- export declare const TableFooter: ({ children, className, onInvokeAction, tooltrayActions, ...htmlAttributes }: TableFooterProps) => import("react/jsx-runtime").JSX.Element;
8
+ position?: 'center' | 'end';
9
+ }) => import("react").JSX.Element;
10
+ export declare const TableFooter: ({ children, className, onInvokeAction, tooltrayActions, ...htmlAttributes }: TableFooterProps) => import("react").JSX.Element;
@@ -10,7 +10,7 @@ export interface TableContextProps extends Pick<TableProps, "dataSource" | "rowA
10
10
  export declare const TableContext: import("react").Context<TableContextProps>;
11
11
  export declare const TableProvider: ({ children, dataSource, menuActionHandler, rowActionHandlers, }: TableContextProps & {
12
12
  children: ReactNode;
13
- }) => import("react/jsx-runtime").JSX.Element;
13
+ }) => import("react").JSX.Element;
14
14
  export declare function useTableContext(throwIfNoDataSource?: boolean): {
15
15
  dataSource: DataSource;
16
16
  menuActionHandler: MenuActionHandler<ColumnMenuActionType, ColumnDescriptor>;
@@ -19,4 +19,4 @@ export interface TableSettingsPanelProps {
19
19
  It updates the settings in state locally and notifies caller of
20
20
  every change via onChange callback
21
21
  */
22
- export declare const TableSettingsPanel: ({ onDisplayAttributeChange, tableDisplayAttributes: tableDisplayAttributesProp, permissions: permissionsProp, }: TableSettingsPanelProps) => import("react/jsx-runtime").JSX.Element;
22
+ export declare const TableSettingsPanel: ({ onDisplayAttributeChange, tableDisplayAttributes: tableDisplayAttributesProp, permissions: permissionsProp, }: TableSettingsPanelProps) => import("react").JSX.Element;