Remove remaining chakra-ui dependencies, clean up files, clean up build errors, move react-spreadsheet-import directory into main component structure
This commit is contained in:
@@ -1,43 +0,0 @@
|
|||||||
# Details
|
|
||||||
|
|
||||||
Date : 2025-03-17 14:20:03
|
|
||||||
|
|
||||||
Directory /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew
|
|
||||||
|
|
||||||
Total : 28 files, 6565 codes, 1027 comments, 1053 blanks, all 8645 lines
|
|
||||||
|
|
||||||
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
|
|
||||||
|
|
||||||
## Files
|
|
||||||
| filename | language | code | comment | blank | total |
|
|
||||||
| :--- | :--- | ---: | ---: | ---: | ---: |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/README.md](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/README.md) | Markdown | 39 | 0 | 19 | 58 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/AiValidationDialogs.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/AiValidationDialogs.tsx) | TypeScript JSX | 230 | 10 | 8 | 248 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/BaseCellContent.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/BaseCellContent.tsx) | TypeScript JSX | 18 | 0 | 3 | 21 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/SaveTemplateDialog.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/SaveTemplateDialog.tsx) | TypeScript JSX | 83 | 0 | 4 | 87 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/SearchableTemplateSelect.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/SearchableTemplateSelect.tsx) | TypeScript JSX | 273 | 19 | 37 | 329 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/TemplateManager.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/TemplateManager.tsx) | TypeScript JSX | 193 | 4 | 15 | 212 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationCell.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationCell.tsx) | TypeScript JSX | 374 | 42 | 44 | 460 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationContainer.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationContainer.tsx) | TypeScript JSX | 1,101 | 234 | 213 | 1,548 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationTable.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationTable.tsx) | TypeScript JSX | 499 | 48 | 54 | 601 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/CheckboxCell.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/CheckboxCell.tsx) | TypeScript JSX | 112 | 12 | 21 | 145 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/InputCell.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/InputCell.tsx) | TypeScript JSX | 232 | 31 | 32 | 295 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/MultiSelectCell.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/MultiSelectCell.tsx) | TypeScript JSX | 407 | 56 | 52 | 515 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/MultilineInput.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/MultilineInput.tsx) | TypeScript JSX | 193 | 23 | 22 | 238 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/SelectCell.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/SelectCell.tsx) | TypeScript JSX | 289 | 36 | 31 | 356 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useAiValidation.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useAiValidation.tsx) | TypeScript JSX | 500 | 75 | 89 | 664 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useFilters.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useFilters.tsx) | TypeScript JSX | 89 | 12 | 16 | 117 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useTemplates.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useTemplates.tsx) | TypeScript JSX | 204 | 26 | 33 | 263 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useUpcValidation.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useUpcValidation.tsx) | TypeScript JSX | 93 | 13 | 18 | 124 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useValidation.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useValidation.tsx) | TypeScript JSX | 219 | 39 | 47 | 305 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useValidationState.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useValidationState.tsx) | TypeScript JSX | 1,060 | 228 | 229 | 1,517 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/index.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/index.tsx) | TypeScript JSX | 20 | 6 | 2 | 28 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/types.ts](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/types.ts) | TypeScript | 4 | 0 | 1 | 5 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/types/index.ts](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/types/index.ts) | TypeScript | 16 | 4 | 4 | 24 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/dataMutations.ts](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/dataMutations.ts) | TypeScript | 124 | 4 | 14 | 142 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/errorUtils.ts](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/errorUtils.ts) | TypeScript | 21 | 15 | 5 | 41 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/upcValidation.ts](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/upcValidation.ts) | TypeScript | 43 | 24 | 7 | 74 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/validation-helper.js](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/validation-helper.js) | JavaScript | 28 | 7 | 9 | 44 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/validationUtils.ts](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/validationUtils.ts) | TypeScript | 101 | 59 | 24 | 184 |
|
|
||||||
|
|
||||||
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
# Diff Details
|
|
||||||
|
|
||||||
Date : 2025-03-17 14:20:03
|
|
||||||
|
|
||||||
Directory /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew
|
|
||||||
|
|
||||||
Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines
|
|
||||||
|
|
||||||
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details
|
|
||||||
|
|
||||||
## Files
|
|
||||||
| filename | language | code | comment | blank | total |
|
|
||||||
| :--- | :--- | ---: | ---: | ---: | ---: |
|
|
||||||
|
|
||||||
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
# Diff Summary
|
|
||||||
|
|
||||||
Date : 2025-03-17 14:20:03
|
|
||||||
|
|
||||||
Directory /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew
|
|
||||||
|
|
||||||
Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines
|
|
||||||
|
|
||||||
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)
|
|
||||||
|
|
||||||
## Languages
|
|
||||||
| language | files | code | comment | blank | total |
|
|
||||||
| :--- | ---: | ---: | ---: | ---: | ---: |
|
|
||||||
|
|
||||||
## Directories
|
|
||||||
| path | files | code | comment | blank | total |
|
|
||||||
| :--- | ---: | ---: | ---: | ---: | ---: |
|
|
||||||
|
|
||||||
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
Date : 2025-03-17 14:20:03
|
|
||||||
Directory : /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew
|
|
||||||
Total : 0 files, 0 codes, 0 comments, 0 blanks, all 0 lines
|
|
||||||
|
|
||||||
Languages
|
|
||||||
+----------+------------+------------+------------+------------+------------+
|
|
||||||
| language | files | code | comment | blank | total |
|
|
||||||
+----------+------------+------------+------------+------------+------------+
|
|
||||||
+----------+------------+------------+------------+------------+------------+
|
|
||||||
|
|
||||||
Directories
|
|
||||||
+------+------------+------------+------------+------------+------------+
|
|
||||||
| path | files | code | comment | blank | total |
|
|
||||||
+------+------------+------------+------------+------------+------------+
|
|
||||||
+------+------------+------------+------------+------------+------------+
|
|
||||||
|
|
||||||
Files
|
|
||||||
+----------+----------+------------+------------+------------+------------+
|
|
||||||
| filename | language | code | comment | blank | total |
|
|
||||||
+----------+----------+------------+------------+------------+------------+
|
|
||||||
| Total | | 0 | 0 | 0 | 0 |
|
|
||||||
+----------+----------+------------+------------+------------+------------+
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,31 +0,0 @@
|
|||||||
# Summary
|
|
||||||
|
|
||||||
Date : 2025-03-17 14:20:03
|
|
||||||
|
|
||||||
Directory /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew
|
|
||||||
|
|
||||||
Total : 28 files, 6565 codes, 1027 comments, 1053 blanks, all 8645 lines
|
|
||||||
|
|
||||||
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
|
|
||||||
|
|
||||||
## Languages
|
|
||||||
| language | files | code | comment | blank | total |
|
|
||||||
| :--- | ---: | ---: | ---: | ---: | ---: |
|
|
||||||
| TypeScript JSX | 20 | 6,189 | 914 | 970 | 8,073 |
|
|
||||||
| TypeScript | 6 | 309 | 106 | 55 | 470 |
|
|
||||||
| Markdown | 1 | 39 | 0 | 19 | 58 |
|
|
||||||
| JavaScript | 1 | 28 | 7 | 9 | 44 |
|
|
||||||
|
|
||||||
## Directories
|
|
||||||
| path | files | code | comment | blank | total |
|
|
||||||
| :--- | ---: | ---: | ---: | ---: | ---: |
|
|
||||||
| . | 28 | 6,565 | 1,027 | 1,053 | 8,645 |
|
|
||||||
| . (Files) | 3 | 63 | 6 | 22 | 91 |
|
|
||||||
| components | 13 | 4,004 | 515 | 536 | 5,055 |
|
|
||||||
| components (Files) | 8 | 2,771 | 357 | 378 | 3,506 |
|
|
||||||
| components/cells | 5 | 1,233 | 158 | 158 | 1,549 |
|
|
||||||
| hooks | 6 | 2,165 | 393 | 432 | 2,990 |
|
|
||||||
| types | 1 | 16 | 4 | 4 | 24 |
|
|
||||||
| utils | 5 | 317 | 109 | 59 | 485 |
|
|
||||||
|
|
||||||
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
Date : 2025-03-17 14:20:03
|
|
||||||
Directory : /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew
|
|
||||||
Total : 28 files, 6565 codes, 1027 comments, 1053 blanks, all 8645 lines
|
|
||||||
|
|
||||||
Languages
|
|
||||||
+----------------+------------+------------+------------+------------+------------+
|
|
||||||
| language | files | code | comment | blank | total |
|
|
||||||
+----------------+------------+------------+------------+------------+------------+
|
|
||||||
| TypeScript JSX | 20 | 6,189 | 914 | 970 | 8,073 |
|
|
||||||
| TypeScript | 6 | 309 | 106 | 55 | 470 |
|
|
||||||
| Markdown | 1 | 39 | 0 | 19 | 58 |
|
|
||||||
| JavaScript | 1 | 28 | 7 | 9 | 44 |
|
|
||||||
+----------------+------------+------------+------------+------------+------------+
|
|
||||||
|
|
||||||
Directories
|
|
||||||
+------------------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
|
|
||||||
| path | files | code | comment | blank | total |
|
|
||||||
+------------------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
|
|
||||||
| . | 28 | 6,565 | 1,027 | 1,053 | 8,645 |
|
|
||||||
| . (Files) | 3 | 63 | 6 | 22 | 91 |
|
|
||||||
| components | 13 | 4,004 | 515 | 536 | 5,055 |
|
|
||||||
| components (Files) | 8 | 2,771 | 357 | 378 | 3,506 |
|
|
||||||
| components/cells | 5 | 1,233 | 158 | 158 | 1,549 |
|
|
||||||
| hooks | 6 | 2,165 | 393 | 432 | 2,990 |
|
|
||||||
| types | 1 | 16 | 4 | 4 | 24 |
|
|
||||||
| utils | 5 | 317 | 109 | 59 | 485 |
|
|
||||||
+------------------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
|
|
||||||
|
|
||||||
Files
|
|
||||||
+------------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+------------+------------+------------+
|
|
||||||
| filename | language | code | comment | blank | total |
|
|
||||||
+------------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+------------+------------+------------+
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/README.md | Markdown | 39 | 0 | 19 | 58 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/AiValidationDialogs.tsx | TypeScript JSX | 230 | 10 | 8 | 248 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/BaseCellContent.tsx | TypeScript JSX | 18 | 0 | 3 | 21 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/SaveTemplateDialog.tsx | TypeScript JSX | 83 | 0 | 4 | 87 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/SearchableTemplateSelect.tsx | TypeScript JSX | 273 | 19 | 37 | 329 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/TemplateManager.tsx | TypeScript JSX | 193 | 4 | 15 | 212 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationCell.tsx | TypeScript JSX | 374 | 42 | 44 | 460 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationContainer.tsx | TypeScript JSX | 1,101 | 234 | 213 | 1,548 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationTable.tsx | TypeScript JSX | 499 | 48 | 54 | 601 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/CheckboxCell.tsx | TypeScript JSX | 112 | 12 | 21 | 145 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/InputCell.tsx | TypeScript JSX | 232 | 31 | 32 | 295 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/MultiSelectCell.tsx | TypeScript JSX | 407 | 56 | 52 | 515 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/MultilineInput.tsx | TypeScript JSX | 193 | 23 | 22 | 238 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/SelectCell.tsx | TypeScript JSX | 289 | 36 | 31 | 356 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useAiValidation.tsx | TypeScript JSX | 500 | 75 | 89 | 664 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useFilters.tsx | TypeScript JSX | 89 | 12 | 16 | 117 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useTemplates.tsx | TypeScript JSX | 204 | 26 | 33 | 263 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useUpcValidation.tsx | TypeScript JSX | 93 | 13 | 18 | 124 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useValidation.tsx | TypeScript JSX | 219 | 39 | 47 | 305 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useValidationState.tsx | TypeScript JSX | 1,060 | 228 | 229 | 1,517 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/index.tsx | TypeScript JSX | 20 | 6 | 2 | 28 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/types.ts | TypeScript | 4 | 0 | 1 | 5 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/types/index.ts | TypeScript | 16 | 4 | 4 | 24 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/dataMutations.ts | TypeScript | 124 | 4 | 14 | 142 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/errorUtils.ts | TypeScript | 21 | 15 | 5 | 41 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/upcValidation.ts | TypeScript | 43 | 24 | 7 | 74 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/validation-helper.js | JavaScript | 28 | 7 | 9 | 44 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/validationUtils.ts | TypeScript | 101 | 59 | 24 | 184 |
|
|
||||||
| Total | | 6,565 | 1,027 | 1,053 | 8,645 |
|
|
||||||
+------------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+------------+------------+------------+
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
# Details
|
|
||||||
|
|
||||||
Date : 2025-03-17 16:02:14
|
|
||||||
|
|
||||||
Directory /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew
|
|
||||||
|
|
||||||
Total : 28 files, 6551 codes, 1023 comments, 1050 blanks, all 8624 lines
|
|
||||||
|
|
||||||
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
|
|
||||||
|
|
||||||
## Files
|
|
||||||
| filename | language | code | comment | blank | total |
|
|
||||||
| :--- | :--- | ---: | ---: | ---: | ---: |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/README.md](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/README.md) | Markdown | 39 | 0 | 19 | 58 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/AiValidationDialogs.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/AiValidationDialogs.tsx) | TypeScript JSX | 230 | 10 | 8 | 248 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/BaseCellContent.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/BaseCellContent.tsx) | TypeScript JSX | 18 | 0 | 3 | 21 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/SaveTemplateDialog.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/SaveTemplateDialog.tsx) | TypeScript JSX | 83 | 0 | 4 | 87 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/SearchableTemplateSelect.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/SearchableTemplateSelect.tsx) | TypeScript JSX | 273 | 19 | 37 | 329 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/TemplateManager.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/TemplateManager.tsx) | TypeScript JSX | 193 | 4 | 15 | 212 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationCell.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationCell.tsx) | TypeScript JSX | 374 | 42 | 44 | 460 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationContainer.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationContainer.tsx) | TypeScript JSX | 971 | 194 | 178 | 1,343 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationTable.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationTable.tsx) | TypeScript JSX | 499 | 48 | 54 | 601 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/CheckboxCell.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/CheckboxCell.tsx) | TypeScript JSX | 112 | 12 | 21 | 145 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/InputCell.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/InputCell.tsx) | TypeScript JSX | 232 | 31 | 32 | 295 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/MultiSelectCell.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/MultiSelectCell.tsx) | TypeScript JSX | 407 | 56 | 52 | 515 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/MultilineInput.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/MultilineInput.tsx) | TypeScript JSX | 193 | 23 | 22 | 238 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/SelectCell.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/SelectCell.tsx) | TypeScript JSX | 289 | 36 | 31 | 356 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useAiValidation.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useAiValidation.tsx) | TypeScript JSX | 500 | 75 | 89 | 664 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useFilters.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useFilters.tsx) | TypeScript JSX | 89 | 12 | 16 | 117 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useTemplates.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useTemplates.tsx) | TypeScript JSX | 204 | 26 | 33 | 263 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useUpcValidation.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useUpcValidation.tsx) | TypeScript JSX | 209 | 49 | 50 | 308 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useValidation.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useValidation.tsx) | TypeScript JSX | 219 | 39 | 47 | 305 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useValidationState.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useValidationState.tsx) | TypeScript JSX | 1,060 | 228 | 229 | 1,517 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/index.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/index.tsx) | TypeScript JSX | 20 | 6 | 2 | 28 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/types.ts](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/types.ts) | TypeScript | 4 | 0 | 1 | 5 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/types/index.ts](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/types/index.ts) | TypeScript | 16 | 4 | 4 | 24 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/dataMutations.ts](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/dataMutations.ts) | TypeScript | 124 | 4 | 14 | 142 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/errorUtils.ts](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/errorUtils.ts) | TypeScript | 21 | 15 | 5 | 41 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/upcValidation.ts](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/upcValidation.ts) | TypeScript | 43 | 24 | 7 | 74 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/validation-helper.js](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/validation-helper.js) | JavaScript | 28 | 7 | 9 | 44 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/validationUtils.ts](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/validationUtils.ts) | TypeScript | 101 | 59 | 24 | 184 |
|
|
||||||
|
|
||||||
[Summary](results.md) / Details / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
# Diff Details
|
|
||||||
|
|
||||||
Date : 2025-03-17 16:02:14
|
|
||||||
|
|
||||||
Directory /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew
|
|
||||||
|
|
||||||
Total : 2 files, -14 codes, -4 comments, -3 blanks, all -21 lines
|
|
||||||
|
|
||||||
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details
|
|
||||||
|
|
||||||
## Files
|
|
||||||
| filename | language | code | comment | blank | total |
|
|
||||||
| :--- | :--- | ---: | ---: | ---: | ---: |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationContainer.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationContainer.tsx) | TypeScript JSX | -130 | -40 | -35 | -205 |
|
|
||||||
| [inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useUpcValidation.tsx](/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useUpcValidation.tsx) | TypeScript JSX | 116 | 36 | 32 | 184 |
|
|
||||||
|
|
||||||
[Summary](results.md) / [Details](details.md) / [Diff Summary](diff.md) / Diff Details
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
# Diff Summary
|
|
||||||
|
|
||||||
Date : 2025-03-17 16:02:14
|
|
||||||
|
|
||||||
Directory /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew
|
|
||||||
|
|
||||||
Total : 2 files, -14 codes, -4 comments, -3 blanks, all -21 lines
|
|
||||||
|
|
||||||
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)
|
|
||||||
|
|
||||||
## Languages
|
|
||||||
| language | files | code | comment | blank | total |
|
|
||||||
| :--- | ---: | ---: | ---: | ---: | ---: |
|
|
||||||
| TypeScript JSX | 2 | -14 | -4 | -3 | -21 |
|
|
||||||
|
|
||||||
## Directories
|
|
||||||
| path | files | code | comment | blank | total |
|
|
||||||
| :--- | ---: | ---: | ---: | ---: | ---: |
|
|
||||||
| . | 2 | -14 | -4 | -3 | -21 |
|
|
||||||
| components | 1 | -130 | -40 | -35 | -205 |
|
|
||||||
| hooks | 1 | 116 | 36 | 32 | 184 |
|
|
||||||
|
|
||||||
[Summary](results.md) / [Details](details.md) / Diff Summary / [Diff Details](diff-details.md)
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
Date : 2025-03-17 16:02:14
|
|
||||||
Directory : /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew
|
|
||||||
Total : 2 files, -14 codes, -4 comments, -3 blanks, all -21 lines
|
|
||||||
|
|
||||||
Languages
|
|
||||||
+----------------+------------+------------+------------+------------+------------+
|
|
||||||
| language | files | code | comment | blank | total |
|
|
||||||
+----------------+------------+------------+------------+------------+------------+
|
|
||||||
| TypeScript JSX | 2 | -14 | -4 | -3 | -21 |
|
|
||||||
+----------------+------------+------------+------------+------------+------------+
|
|
||||||
|
|
||||||
Directories
|
|
||||||
+-------------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
|
|
||||||
| path | files | code | comment | blank | total |
|
|
||||||
+-------------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
|
|
||||||
| . | 2 | -14 | -4 | -3 | -21 |
|
|
||||||
| components | 1 | -130 | -40 | -35 | -205 |
|
|
||||||
| hooks | 1 | 116 | 36 | 32 | 184 |
|
|
||||||
+-------------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
|
|
||||||
|
|
||||||
Files
|
|
||||||
+-------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+------------+------------+------------+
|
|
||||||
| filename | language | code | comment | blank | total |
|
|
||||||
+-------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+------------+------------+------------+
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationContainer.tsx | TypeScript JSX | -130 | -40 | -35 | -205 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useUpcValidation.tsx | TypeScript JSX | 116 | 36 | 32 | 184 |
|
|
||||||
| Total | | -14 | -4 | -3 | -21 |
|
|
||||||
+-------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+------------+------------+------------+
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,31 +0,0 @@
|
|||||||
# Summary
|
|
||||||
|
|
||||||
Date : 2025-03-17 16:02:14
|
|
||||||
|
|
||||||
Directory /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew
|
|
||||||
|
|
||||||
Total : 28 files, 6551 codes, 1023 comments, 1050 blanks, all 8624 lines
|
|
||||||
|
|
||||||
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
|
|
||||||
|
|
||||||
## Languages
|
|
||||||
| language | files | code | comment | blank | total |
|
|
||||||
| :--- | ---: | ---: | ---: | ---: | ---: |
|
|
||||||
| TypeScript JSX | 20 | 6,175 | 910 | 967 | 8,052 |
|
|
||||||
| TypeScript | 6 | 309 | 106 | 55 | 470 |
|
|
||||||
| Markdown | 1 | 39 | 0 | 19 | 58 |
|
|
||||||
| JavaScript | 1 | 28 | 7 | 9 | 44 |
|
|
||||||
|
|
||||||
## Directories
|
|
||||||
| path | files | code | comment | blank | total |
|
|
||||||
| :--- | ---: | ---: | ---: | ---: | ---: |
|
|
||||||
| . | 28 | 6,551 | 1,023 | 1,050 | 8,624 |
|
|
||||||
| . (Files) | 3 | 63 | 6 | 22 | 91 |
|
|
||||||
| components | 13 | 3,874 | 475 | 501 | 4,850 |
|
|
||||||
| components (Files) | 8 | 2,641 | 317 | 343 | 3,301 |
|
|
||||||
| components/cells | 5 | 1,233 | 158 | 158 | 1,549 |
|
|
||||||
| hooks | 6 | 2,281 | 429 | 464 | 3,174 |
|
|
||||||
| types | 1 | 16 | 4 | 4 | 24 |
|
|
||||||
| utils | 5 | 317 | 109 | 59 | 485 |
|
|
||||||
|
|
||||||
Summary / [Details](details.md) / [Diff Summary](diff.md) / [Diff Details](diff-details.md)
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
Date : 2025-03-17 16:02:14
|
|
||||||
Directory : /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew
|
|
||||||
Total : 28 files, 6551 codes, 1023 comments, 1050 blanks, all 8624 lines
|
|
||||||
|
|
||||||
Languages
|
|
||||||
+----------------+------------+------------+------------+------------+------------+
|
|
||||||
| language | files | code | comment | blank | total |
|
|
||||||
+----------------+------------+------------+------------+------------+------------+
|
|
||||||
| TypeScript JSX | 20 | 6,175 | 910 | 967 | 8,052 |
|
|
||||||
| TypeScript | 6 | 309 | 106 | 55 | 470 |
|
|
||||||
| Markdown | 1 | 39 | 0 | 19 | 58 |
|
|
||||||
| JavaScript | 1 | 28 | 7 | 9 | 44 |
|
|
||||||
+----------------+------------+------------+------------+------------+------------+
|
|
||||||
|
|
||||||
Directories
|
|
||||||
+------------------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
|
|
||||||
| path | files | code | comment | blank | total |
|
|
||||||
+------------------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
|
|
||||||
| . | 28 | 6,551 | 1,023 | 1,050 | 8,624 |
|
|
||||||
| . (Files) | 3 | 63 | 6 | 22 | 91 |
|
|
||||||
| components | 13 | 3,874 | 475 | 501 | 4,850 |
|
|
||||||
| components (Files) | 8 | 2,641 | 317 | 343 | 3,301 |
|
|
||||||
| components/cells | 5 | 1,233 | 158 | 158 | 1,549 |
|
|
||||||
| hooks | 6 | 2,281 | 429 | 464 | 3,174 |
|
|
||||||
| types | 1 | 16 | 4 | 4 | 24 |
|
|
||||||
| utils | 5 | 317 | 109 | 59 | 485 |
|
|
||||||
+------------------------------------------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
|
|
||||||
|
|
||||||
Files
|
|
||||||
+------------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+------------+------------+------------+
|
|
||||||
| filename | language | code | comment | blank | total |
|
|
||||||
+------------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+------------+------------+------------+
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/README.md | Markdown | 39 | 0 | 19 | 58 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/AiValidationDialogs.tsx | TypeScript JSX | 230 | 10 | 8 | 248 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/BaseCellContent.tsx | TypeScript JSX | 18 | 0 | 3 | 21 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/SaveTemplateDialog.tsx | TypeScript JSX | 83 | 0 | 4 | 87 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/SearchableTemplateSelect.tsx | TypeScript JSX | 273 | 19 | 37 | 329 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/TemplateManager.tsx | TypeScript JSX | 193 | 4 | 15 | 212 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationCell.tsx | TypeScript JSX | 374 | 42 | 44 | 460 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationContainer.tsx | TypeScript JSX | 971 | 194 | 178 | 1,343 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/ValidationTable.tsx | TypeScript JSX | 499 | 48 | 54 | 601 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/CheckboxCell.tsx | TypeScript JSX | 112 | 12 | 21 | 145 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/InputCell.tsx | TypeScript JSX | 232 | 31 | 32 | 295 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/MultiSelectCell.tsx | TypeScript JSX | 407 | 56 | 52 | 515 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/MultilineInput.tsx | TypeScript JSX | 193 | 23 | 22 | 238 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/components/cells/SelectCell.tsx | TypeScript JSX | 289 | 36 | 31 | 356 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useAiValidation.tsx | TypeScript JSX | 500 | 75 | 89 | 664 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useFilters.tsx | TypeScript JSX | 89 | 12 | 16 | 117 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useTemplates.tsx | TypeScript JSX | 204 | 26 | 33 | 263 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useUpcValidation.tsx | TypeScript JSX | 209 | 49 | 50 | 308 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useValidation.tsx | TypeScript JSX | 219 | 39 | 47 | 305 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/hooks/useValidationState.tsx | TypeScript JSX | 1,060 | 228 | 229 | 1,517 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/index.tsx | TypeScript JSX | 20 | 6 | 2 | 28 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/types.ts | TypeScript | 4 | 0 | 1 | 5 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/types/index.ts | TypeScript | 16 | 4 | 4 | 24 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/dataMutations.ts | TypeScript | 124 | 4 | 14 | 142 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/errorUtils.ts | TypeScript | 21 | 15 | 5 | 41 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/upcValidation.ts | TypeScript | 43 | 24 | 7 | 74 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/validation-helper.js | JavaScript | 28 | 7 | 9 | 44 |
|
|
||||||
| /Users/matt/Dev/inventory/inventory/src/lib/react-spreadsheet-import/src/steps/ValidationStepNew/utils/validationUtils.ts | TypeScript | 101 | 59 | 24 | 184 |
|
|
||||||
| Total | | 6,551 | 1,023 | 1,050 | 8,624 |
|
|
||||||
+------------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+------------+------------+------------+
|
|
||||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -64,3 +64,7 @@ csv/**/*
|
|||||||
!csv/.gitkeep
|
!csv/.gitkeep
|
||||||
inventory/tsconfig.tsbuildinfo
|
inventory/tsconfig.tsbuildinfo
|
||||||
inventory-server/scripts/.fuse_hidden00000fa20000000a
|
inventory-server/scripts/.fuse_hidden00000fa20000000a
|
||||||
|
|
||||||
|
.VSCodeCounter/
|
||||||
|
.VSCodeCounter/*
|
||||||
|
.VSCodeCounter/**/*
|
||||||
2249
inventory/package-lock.json
generated
2249
inventory/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -10,22 +10,7 @@
|
|||||||
"preview": "vite preview"
|
"preview": "vite preview"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@chakra-ui/button": "^2.1.0",
|
"@dnd-kit/core": "^6.3.1",
|
||||||
"@chakra-ui/checkbox": "^2.3.2",
|
|
||||||
"@chakra-ui/form-control": "^2.2.0",
|
|
||||||
"@chakra-ui/hooks": "^2.4.3",
|
|
||||||
"@chakra-ui/icons": "^2.2.4",
|
|
||||||
"@chakra-ui/input": "^2.1.2",
|
|
||||||
"@chakra-ui/layout": "^2.3.1",
|
|
||||||
"@chakra-ui/modal": "^2.3.1",
|
|
||||||
"@chakra-ui/popper": "^3.1.0",
|
|
||||||
"@chakra-ui/react": "^2.8.1",
|
|
||||||
"@chakra-ui/select": "^2.1.2",
|
|
||||||
"@chakra-ui/system": "^2.6.2",
|
|
||||||
"@chakra-ui/theme": "^3.4.7",
|
|
||||||
"@chakra-ui/theme-tools": "^2.2.7",
|
|
||||||
"@chakra-ui/utils": "^2.2.3",
|
|
||||||
"@dnd-kit/core": "^6.3.1",
|
|
||||||
"@dnd-kit/sortable": "^10.0.0",
|
"@dnd-kit/sortable": "^10.0.0",
|
||||||
"@dnd-kit/utilities": "^3.2.2",
|
"@dnd-kit/utilities": "^3.2.2",
|
||||||
"@emotion/react": "^11.14.0",
|
"@emotion/react": "^11.14.0",
|
||||||
@@ -60,8 +45,6 @@
|
|||||||
"@types/js-levenshtein": "^1.1.3",
|
"@types/js-levenshtein": "^1.1.3",
|
||||||
"@types/uuid": "^10.0.0",
|
"@types/uuid": "^10.0.0",
|
||||||
"axios": "^1.8.1",
|
"axios": "^1.8.1",
|
||||||
"chakra-react-select": "^4.7.5",
|
|
||||||
"chakra-ui-steps": "^2.0.4",
|
|
||||||
"chart.js": "^4.4.7",
|
"chart.js": "^4.4.7",
|
||||||
"chartjs-adapter-date-fns": "^3.0.0",
|
"chartjs-adapter-date-fns": "^3.0.0",
|
||||||
"class-variance-authority": "^0.7.1",
|
"class-variance-authority": "^0.7.1",
|
||||||
|
|||||||
@@ -1,25 +0,0 @@
|
|||||||
import fs from 'fs-extra';
|
|
||||||
import path from 'path';
|
|
||||||
|
|
||||||
async function copyBuild() {
|
|
||||||
const sourcePath = path.resolve(__dirname, '../build');
|
|
||||||
const targetPath = path.resolve(__dirname, '../../inventory-server/frontend/build');
|
|
||||||
|
|
||||||
try {
|
|
||||||
// Ensure the target directory exists
|
|
||||||
await fs.ensureDir(path.dirname(targetPath));
|
|
||||||
|
|
||||||
// Remove old build if it exists
|
|
||||||
await fs.remove(targetPath);
|
|
||||||
|
|
||||||
// Copy new build
|
|
||||||
await fs.copy(sourcePath, targetPath);
|
|
||||||
|
|
||||||
console.log('Build files copied successfully to server directory!');
|
|
||||||
} catch (error) {
|
|
||||||
console.error('Error copying build files:', error);
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
copyBuild();
|
|
||||||
@@ -16,7 +16,6 @@ import Forecasting from "@/pages/Forecasting";
|
|||||||
import { Vendors } from '@/pages/Vendors';
|
import { Vendors } from '@/pages/Vendors';
|
||||||
import { Categories } from '@/pages/Categories';
|
import { Categories } from '@/pages/Categories';
|
||||||
import { Import } from '@/pages/Import';
|
import { Import } from '@/pages/Import';
|
||||||
import { ChakraProvider } from '@chakra-ui/react';
|
|
||||||
import { AiValidationDebug } from "@/pages/AiValidationDebug"
|
import { AiValidationDebug } from "@/pages/AiValidationDebug"
|
||||||
|
|
||||||
const queryClient = new QueryClient();
|
const queryClient = new QueryClient();
|
||||||
@@ -53,30 +52,28 @@ function App() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<QueryClientProvider client={queryClient}>
|
<QueryClientProvider client={queryClient}>
|
||||||
<ChakraProvider>
|
<Toaster richColors position="top-center" />
|
||||||
<Toaster richColors position="top-center" />
|
<Routes>
|
||||||
<Routes>
|
<Route path="/login" element={<Login />} />
|
||||||
<Route path="/login" element={<Login />} />
|
<Route element={
|
||||||
<Route element={
|
<RequireAuth>
|
||||||
<RequireAuth>
|
<MainLayout />
|
||||||
<MainLayout />
|
</RequireAuth>
|
||||||
</RequireAuth>
|
}>
|
||||||
}>
|
<Route path="/" element={<Dashboard />} />
|
||||||
<Route path="/" element={<Dashboard />} />
|
<Route path="/products" element={<Products />} />
|
||||||
<Route path="/products" element={<Products />} />
|
<Route path="/import" element={<Import />} />
|
||||||
<Route path="/import" element={<Import />} />
|
<Route path="/categories" element={<Categories />} />
|
||||||
<Route path="/categories" element={<Categories />} />
|
<Route path="/vendors" element={<Vendors />} />
|
||||||
<Route path="/vendors" element={<Vendors />} />
|
<Route path="/orders" element={<Orders />} />
|
||||||
<Route path="/orders" element={<Orders />} />
|
<Route path="/purchase-orders" element={<PurchaseOrders />} />
|
||||||
<Route path="/purchase-orders" element={<PurchaseOrders />} />
|
<Route path="/analytics" element={<Analytics />} />
|
||||||
<Route path="/analytics" element={<Analytics />} />
|
<Route path="/settings" element={<Settings />} />
|
||||||
<Route path="/settings" element={<Settings />} />
|
<Route path="/forecasting" element={<Forecasting />} />
|
||||||
<Route path="/forecasting" element={<Forecasting />} />
|
<Route path="/ai-validation/debug" element={<AiValidationDebug />} />
|
||||||
<Route path="/ai-validation/debug" element={<AiValidationDebug />} />
|
<Route path="*" element={<Navigate to="/" replace />} />
|
||||||
<Route path="*" element={<Navigate to="/" replace />} />
|
</Route>
|
||||||
</Route>
|
</Routes>
|
||||||
</Routes>
|
|
||||||
</ChakraProvider>
|
|
||||||
</QueryClientProvider>
|
</QueryClientProvider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ export function CategoryPerformance() {
|
|||||||
))}
|
))}
|
||||||
</Pie>
|
</Pie>
|
||||||
<Tooltip
|
<Tooltip
|
||||||
formatter={(value: number, name: string, props: any) => [
|
formatter={(value: number, _: string, props: any) => [
|
||||||
`$${value.toLocaleString()}`,
|
`$${value.toLocaleString()}`,
|
||||||
<div key="tooltip">
|
<div key="tooltip">
|
||||||
<div className="font-medium">Category Path:</div>
|
<div className="font-medium">Category Path:</div>
|
||||||
@@ -143,7 +143,7 @@ export function CategoryPerformance() {
|
|||||||
/>
|
/>
|
||||||
<YAxis tickFormatter={(value) => `${value}%`} />
|
<YAxis tickFormatter={(value) => `${value}%`} />
|
||||||
<Tooltip
|
<Tooltip
|
||||||
formatter={(value: number, name: string, props: any) => [
|
formatter={(value: number, _: string, props: any) => [
|
||||||
`${value.toFixed(1)}%`,
|
`${value.toFixed(1)}%`,
|
||||||
<div key="tooltip">
|
<div key="tooltip">
|
||||||
<div className="font-medium">Category Path:</div>
|
<div className="font-medium">Category Path:</div>
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ export function ProfitAnalysis() {
|
|||||||
/>
|
/>
|
||||||
<YAxis tickFormatter={(value) => `${value}%`} />
|
<YAxis tickFormatter={(value) => `${value}%`} />
|
||||||
<Tooltip
|
<Tooltip
|
||||||
formatter={(value: number, name: string, props: any) => [
|
formatter={(value: number, _: string, props: any) => [
|
||||||
`${value.toFixed(1)}%`,
|
`${value.toFixed(1)}%`,
|
||||||
<div key="tooltip">
|
<div key="tooltip">
|
||||||
<div className="font-medium">Category Path:</div>
|
<div className="font-medium">Category Path:</div>
|
||||||
|
|||||||
@@ -33,15 +33,6 @@ interface BestSellerBrand {
|
|||||||
growth_rate: string
|
growth_rate: string
|
||||||
}
|
}
|
||||||
|
|
||||||
interface BestSellerCategory {
|
|
||||||
cat_id: number;
|
|
||||||
name: string;
|
|
||||||
units_sold: number;
|
|
||||||
revenue: string;
|
|
||||||
profit: string;
|
|
||||||
growth_rate: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface BestSellersData {
|
interface BestSellersData {
|
||||||
products: Product[]
|
products: Product[]
|
||||||
brands: BestSellerBrand[]
|
brands: BestSellerBrand[]
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ import {
|
|||||||
TableRow,
|
TableRow,
|
||||||
} from "@/components/ui/table"
|
} from "@/components/ui/table"
|
||||||
import { Badge } from "@/components/ui/badge"
|
import { Badge } from "@/components/ui/badge"
|
||||||
import { AlertCircle, AlertTriangle } from "lucide-react"
|
|
||||||
import config from "@/config"
|
import config from "@/config"
|
||||||
|
import { format } from "date-fns"
|
||||||
|
|
||||||
interface Product {
|
interface Product {
|
||||||
pid: number;
|
pid: number;
|
||||||
@@ -24,6 +24,24 @@ interface Product {
|
|||||||
lead_time_status: string;
|
lead_time_status: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Helper functions
|
||||||
|
const formatDate = (dateString: string) => {
|
||||||
|
return format(new Date(dateString), 'MMM dd, yyyy')
|
||||||
|
}
|
||||||
|
|
||||||
|
const getLeadTimeVariant = (status: string) => {
|
||||||
|
switch (status.toLowerCase()) {
|
||||||
|
case 'critical':
|
||||||
|
return 'destructive'
|
||||||
|
case 'warning':
|
||||||
|
return 'secondary'
|
||||||
|
case 'good':
|
||||||
|
return 'secondary'
|
||||||
|
default:
|
||||||
|
return 'secondary'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function LowStockAlerts() {
|
export function LowStockAlerts() {
|
||||||
const { data: products } = useQuery<Product[]>({
|
const { data: products } = useQuery<Product[]>({
|
||||||
queryKey: ["low-stock"],
|
queryKey: ["low-stock"],
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import config from "@/config"
|
|||||||
import { formatCurrency } from "@/lib/utils"
|
import { formatCurrency } from "@/lib/utils"
|
||||||
import { ClipboardList, AlertCircle, Layers, DollarSign, ShoppingCart } from "lucide-react" // Importing icons
|
import { ClipboardList, AlertCircle, Layers, DollarSign, ShoppingCart } from "lucide-react" // Importing icons
|
||||||
import { useState } from "react"
|
import { useState } from "react"
|
||||||
import { PurchaseOrderStatus, ReceivingStatus } from "@/types/status-codes"
|
|
||||||
|
|
||||||
interface PurchaseMetricsData {
|
interface PurchaseMetricsData {
|
||||||
activePurchaseOrders: number // Orders that are not canceled, done, or fully received
|
activePurchaseOrders: number // Orders that are not canceled, done, or fully received
|
||||||
|
|||||||
@@ -41,14 +41,6 @@ export function TrendingProducts() {
|
|||||||
signDisplay: "exceptZero",
|
signDisplay: "exceptZero",
|
||||||
}).format(value / 100)
|
}).format(value / 100)
|
||||||
|
|
||||||
const formatCurrency = (value: number) =>
|
|
||||||
new Intl.NumberFormat("en-US", {
|
|
||||||
style: "currency",
|
|
||||||
currency: "USD",
|
|
||||||
minimumFractionDigits: 2,
|
|
||||||
maximumFractionDigits: 2,
|
|
||||||
}).format(value)
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ export const renderSubComponent = ({ row }: { row: any }) => {
|
|||||||
</TableRow>
|
</TableRow>
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
<TableBody>
|
<TableBody>
|
||||||
{products.map((product) => (
|
{products.map((product: Product) => (
|
||||||
<TableRow key={product.pid}>
|
<TableRow key={product.pid}>
|
||||||
<TableCell>
|
<TableCell>
|
||||||
<a
|
<a
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
import merge from "lodash/merge"
|
import merge from "lodash/merge"
|
||||||
|
|
||||||
import { Steps } from "./steps/Steps"
|
import { Steps } from "./steps/Steps"
|
||||||
import { rtlThemeSupport, themeOverrides } from "./theme"
|
|
||||||
import { Providers } from "./components/Providers"
|
import { Providers } from "./components/Providers"
|
||||||
import type { RsiProps } from "./types"
|
import type { RsiProps } from "./types"
|
||||||
import { ModalWrapper } from "./components/ModalWrapper"
|
import { ModalWrapper } from "./components/ModalWrapper"
|
||||||
import { translations } from "./translationsRSIProps"
|
import { translations } from "./translationsRSIProps"
|
||||||
|
|
||||||
export const defaultTheme = themeOverrides
|
// Simple empty theme placeholder
|
||||||
|
export const defaultTheme = {}
|
||||||
|
|
||||||
export const defaultRSIProps: Partial<RsiProps<any>> = {
|
export const defaultRSIProps: Partial<RsiProps<any>> = {
|
||||||
autoMapHeaders: true,
|
autoMapHeaders: true,
|
||||||
@@ -27,12 +27,9 @@ export const ReactSpreadsheetImport = <T extends string>(propsWithoutDefaults: R
|
|||||||
const props = merge({}, defaultRSIProps, propsWithoutDefaults)
|
const props = merge({}, defaultRSIProps, propsWithoutDefaults)
|
||||||
const mergedTranslations =
|
const mergedTranslations =
|
||||||
props.translations !== translations ? merge(translations, props.translations) : translations
|
props.translations !== translations ? merge(translations, props.translations) : translations
|
||||||
const mergedThemes = props.rtl
|
|
||||||
? merge(defaultTheme, rtlThemeSupport, props.customTheme)
|
|
||||||
: merge(defaultTheme, props.customTheme)
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Providers theme={mergedThemes} rsiValues={{ ...props, translations: mergedTranslations }}>
|
<Providers rsiValues={{ ...props, translations: mergedTranslations }}>
|
||||||
<ModalWrapper isOpen={props.isOpen} onClose={props.onClose}>
|
<ModalWrapper isOpen={props.isOpen} onClose={props.onClose}>
|
||||||
<Steps />
|
<Steps />
|
||||||
</ModalWrapper>
|
</ModalWrapper>
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
import { createContext } from "react"
|
||||||
|
import type { RsiProps } from "../types"
|
||||||
|
|
||||||
|
export const RsiContext = createContext({} as any)
|
||||||
|
|
||||||
|
type ProvidersProps<T extends string> = {
|
||||||
|
children: React.ReactNode
|
||||||
|
rsiValues: RsiProps<T>
|
||||||
|
}
|
||||||
|
|
||||||
|
// No need for a root ID as we're not using Chakra anymore
|
||||||
|
export const rootId = "rsi-modal-root"
|
||||||
|
|
||||||
|
export const Providers = <T extends string>({ children, rsiValues }: ProvidersProps<T>) => {
|
||||||
|
if (!rsiValues.fields) {
|
||||||
|
throw new Error("Fields must be provided to react-spreadsheet-import")
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<RsiContext.Provider value={{ ...rsiValues }}>
|
||||||
|
{children}
|
||||||
|
</RsiContext.Provider>
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -1,2 +1,3 @@
|
|||||||
export { StepType } from "./steps/UploadFlow"
|
export { StepType } from "./steps/UploadFlow"
|
||||||
export { ReactSpreadsheetImport } from "./ReactSpreadsheetImport"
|
export { ReactSpreadsheetImport } from "./ReactSpreadsheetImport"
|
||||||
|
export * from "./types"
|
||||||
@@ -4,8 +4,34 @@ import { CSS } from "@dnd-kit/utilities";
|
|||||||
import { Loader2, Trash2, Maximize2, GripVertical, X } from "lucide-react";
|
import { Loader2, Trash2, Maximize2, GripVertical, X } from "lucide-react";
|
||||||
import { Dialog, DialogContent, DialogTrigger } from "@/components/ui/dialog";
|
import { Dialog, DialogContent, DialogTrigger } from "@/components/ui/dialog";
|
||||||
import { Button } from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
import config from "@/config";
|
|
||||||
import { ProductImageSortable } from "../types";
|
// Define the ProductImage interface
|
||||||
|
interface ProductImage {
|
||||||
|
id: string;
|
||||||
|
url?: string;
|
||||||
|
imageUrl?: string;
|
||||||
|
fileName?: string;
|
||||||
|
loading?: boolean;
|
||||||
|
isLoading?: boolean;
|
||||||
|
// Optional fields from the full ProductImage type
|
||||||
|
productIndex?: number;
|
||||||
|
pid?: number;
|
||||||
|
iid?: number;
|
||||||
|
type?: number;
|
||||||
|
order?: number;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
hidden?: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Define the SortableImageProps interface
|
||||||
|
interface SortableImageProps {
|
||||||
|
image: ProductImage;
|
||||||
|
productIndex: number;
|
||||||
|
imgIndex: number;
|
||||||
|
productName?: string; // Make this optional
|
||||||
|
removeImage: (id: string) => void; // Changed to match ProductCard
|
||||||
|
}
|
||||||
|
|
||||||
// Function to ensure URLs are properly formatted with absolute paths
|
// Function to ensure URLs are properly formatted with absolute paths
|
||||||
const getFullImageUrl = (url: string): string => {
|
const getFullImageUrl = (url: string): string => {
|
||||||
@@ -89,7 +115,7 @@ export const SortableImage = ({
|
|||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
<img
|
<img
|
||||||
src={getFullImageUrl(image.imageUrl)}
|
src={getFullImageUrl(image.url || image.imageUrl || '')}
|
||||||
alt={`${displayName} - Image ${imgIndex + 1}`}
|
alt={`${displayName} - Image ${imgIndex + 1}`}
|
||||||
className="h-full w-full object-cover select-none no-native-drag"
|
className="h-full w-full object-cover select-none no-native-drag"
|
||||||
draggable={false}
|
draggable={false}
|
||||||
@@ -154,7 +180,7 @@ export const SortableImage = ({
|
|||||||
</Button>
|
</Button>
|
||||||
<div className="overflow-hidden rounded-md border border-border shadow-md bg-white dark:bg-black">
|
<div className="overflow-hidden rounded-md border border-border shadow-md bg-white dark:bg-black">
|
||||||
<img
|
<img
|
||||||
src={getFullImageUrl(image.imageUrl)}
|
src={getFullImageUrl(image.url || image.imageUrl || '')}
|
||||||
alt={`${displayName} - Image ${imgIndex + 1}`}
|
alt={`${displayName} - Image ${imgIndex + 1}`}
|
||||||
className="max-h-[70vh] max-w-full object-contain"
|
className="max-h-[70vh] max-w-full object-contain"
|
||||||
/>
|
/>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import { toast } from "sonner";
|
import { toast } from "sonner";
|
||||||
import { UnassignedImage, Product, ProductImageSortable } from "../types";
|
import { UnassignedImage, Product } from "../types";
|
||||||
|
|
||||||
type HandleImageUploadFn = (files: FileList | File[], productIndex: number) => Promise<void>;
|
type HandleImageUploadFn = (files: FileList | File[], productIndex: number) => Promise<void>;
|
||||||
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
import { motion } from "framer-motion"
|
||||||
|
import { CgCheck } from "react-icons/cg"
|
||||||
|
|
||||||
|
const animationConfig = {
|
||||||
|
transition: {
|
||||||
|
duration: 0.1,
|
||||||
|
},
|
||||||
|
exit: { scale: 0.5, opacity: 0 },
|
||||||
|
initial: { scale: 0.5, opacity: 0 },
|
||||||
|
animate: { scale: 1, opacity: 1 },
|
||||||
|
}
|
||||||
|
|
||||||
|
type MatchIconProps = {
|
||||||
|
isChecked: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
export const MatchIcon = ({ isChecked }: MatchIconProps) => {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className="flex items-center justify-center rounded-full border-2 border-yellow-500 bg-background text-background transition-colors duration-100 min-w-6 min-h-6 w-6 h-6 ml-3.5 mr-3 data-[highlighted=true]:bg-green-500 data-[highlighted=true]:border-green-500"
|
||||||
|
data-highlighted={isChecked}
|
||||||
|
data-testid="column-checkmark"
|
||||||
|
>
|
||||||
|
{isChecked && (
|
||||||
|
<motion.div {...animationConfig}>
|
||||||
|
<CgCheck size="24px" />
|
||||||
|
</motion.div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -4,8 +4,6 @@ import {
|
|||||||
Table,
|
Table,
|
||||||
TableBody,
|
TableBody,
|
||||||
TableCell,
|
TableCell,
|
||||||
TableHead,
|
|
||||||
TableHeader,
|
|
||||||
TableRow,
|
TableRow,
|
||||||
} from "@/components/ui/table"
|
} from "@/components/ui/table"
|
||||||
import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"
|
import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
// Define MultiSelectCell component to fix the import issue
|
||||||
|
type MultiSelectCellProps = {
|
||||||
|
field: string;
|
||||||
|
value: any;
|
||||||
|
onChange: (value: any) => void;
|
||||||
|
options: any[];
|
||||||
|
hasErrors: boolean;
|
||||||
|
className?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Using _ to indicate intentionally unused parameters
|
||||||
|
const MultiSelectCell = (_: MultiSelectCellProps) => {
|
||||||
|
// This is a placeholder implementation
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
|
const BaseCellContent = ({ fieldType, field, value, onChange, options, hasErrors, className }: {
|
||||||
|
fieldType: string;
|
||||||
|
field: string;
|
||||||
|
value: any;
|
||||||
|
onChange: (value: any) => void;
|
||||||
|
options: any[];
|
||||||
|
hasErrors: boolean;
|
||||||
|
className?: string;
|
||||||
|
}) => {
|
||||||
|
if (fieldType === 'multi-select' || fieldType === 'multi-input') {
|
||||||
|
return (
|
||||||
|
<MultiSelectCell
|
||||||
|
field={field}
|
||||||
|
value={value}
|
||||||
|
onChange={onChange}
|
||||||
|
options={options}
|
||||||
|
hasErrors={hasErrors}
|
||||||
|
className={className}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default BaseCellContent;
|
||||||
@@ -2,18 +2,19 @@ import React, { useMemo } from 'react'
|
|||||||
import ValidationTable from './ValidationTable'
|
import ValidationTable from './ValidationTable'
|
||||||
import { RowSelectionState } from '@tanstack/react-table'
|
import { RowSelectionState } from '@tanstack/react-table'
|
||||||
import { Fields } from '../../../types'
|
import { Fields } from '../../../types'
|
||||||
|
import { Template } from '../hooks/useValidationState'
|
||||||
|
|
||||||
interface UpcValidationTableAdapterProps<T extends string> {
|
interface UpcValidationTableAdapterProps<T extends string> {
|
||||||
data: any[]
|
data: any[]
|
||||||
fields: Fields<string>
|
fields: Fields<string>
|
||||||
validationErrors: Map<number, Record<string, any[]>>
|
validationErrors: Map<number, Record<string, any[]>>
|
||||||
rowSelection: RowSelectionState
|
rowSelection: RowSelectionState
|
||||||
setRowSelection: (value: RowSelectionState) => void
|
setRowSelection: React.Dispatch<React.SetStateAction<RowSelectionState>>
|
||||||
updateRow: (rowIndex: number, key: T, value: any) => void
|
updateRow: (rowIndex: number, key: T, value: any) => void
|
||||||
filters: any
|
filters: any
|
||||||
templates: any[]
|
templates: Template[]
|
||||||
applyTemplate: (templateId: string, rowIndexes: number[]) => void
|
applyTemplate: (templateId: string, rowIndexes: number[]) => void
|
||||||
getTemplateDisplayText: (templateId: string) => string
|
getTemplateDisplayText: (templateId: string | null) => string
|
||||||
isValidatingUpc: (rowIndex: number) => boolean
|
isValidatingUpc: (rowIndex: number) => boolean
|
||||||
validatingUpcRows: number[]
|
validatingUpcRows: number[]
|
||||||
copyDown: (rowIndex: number, fieldKey: string, endRowIndex?: number) => void
|
copyDown: (rowIndex: number, fieldKey: string, endRowIndex?: number) => void
|
||||||
@@ -93,6 +94,17 @@ function UpcValidationTableAdapter<T extends string>({
|
|||||||
return row;
|
return row;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Create a Map for upcValidationResults with the same structure expected by ValidationTable
|
||||||
|
const upcValidationResultsMap = new Map<number, { itemNumber: string }>();
|
||||||
|
|
||||||
|
// Populate with any item numbers we have from validation
|
||||||
|
data.forEach((_, index) => {
|
||||||
|
const itemNumber = upcValidation.getItemNumber(index);
|
||||||
|
if (itemNumber) {
|
||||||
|
upcValidationResultsMap.set(index, { itemNumber });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ValidationTable
|
<ValidationTable
|
||||||
{...props}
|
{...props}
|
||||||
@@ -105,6 +117,7 @@ function UpcValidationTableAdapter<T extends string>({
|
|||||||
rowSublines={rowSublines}
|
rowSublines={rowSublines}
|
||||||
isLoadingLines={isLoadingLines}
|
isLoadingLines={isLoadingLines}
|
||||||
isLoadingSublines={isLoadingSublines}
|
isLoadingSublines={isLoadingSublines}
|
||||||
|
upcValidationResults={upcValidationResultsMap}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}), [upcValidation.validatingRows, upcValidation.getItemNumber, isLoadingTemplates, copyDown, externalValidatingCells, rowProductLines, rowSublines, isLoadingLines, isLoadingSublines]);
|
}), [upcValidation.validatingRows, upcValidation.getItemNumber, isLoadingTemplates, copyDown, externalValidatingCells, rowProductLines, rowSublines, isLoadingLines, isLoadingSublines]);
|
||||||
@@ -128,7 +141,7 @@ function UpcValidationTableAdapter<T extends string>({
|
|||||||
itemNumbers={new Map()}
|
itemNumbers={new Map()}
|
||||||
isLoadingTemplates={isLoadingTemplates}
|
isLoadingTemplates={isLoadingTemplates}
|
||||||
copyDown={copyDown}
|
copyDown={copyDown}
|
||||||
upcValidationResults={new Map()}
|
upcValidationResults={new Map<number, { itemNumber: string }>()}
|
||||||
rowProductLines={rowProductLines}
|
rowProductLines={rowProductLines}
|
||||||
rowSublines={rowSublines}
|
rowSublines={rowSublines}
|
||||||
isLoadingLines={isLoadingLines}
|
isLoadingLines={isLoadingLines}
|
||||||
@@ -394,9 +394,12 @@ const ValidationContainer = <T extends string>({
|
|||||||
// This function is defined for potential future use but not currently used
|
// This function is defined for potential future use but not currently used
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||||
|
|
||||||
const handleRowSelectionChange = useCallback((newSelection: RowSelectionState) => {
|
const handleRowSelectionChange = useCallback(
|
||||||
setRowSelection(newSelection);
|
(value: React.SetStateAction<RowSelectionState>) => {
|
||||||
}, [setRowSelection]);
|
setRowSelection(value);
|
||||||
|
},
|
||||||
|
[setRowSelection]
|
||||||
|
);
|
||||||
|
|
||||||
// Add scroll container ref at the container level
|
// Add scroll container ref at the container level
|
||||||
const scrollContainerRef = useRef<HTMLDivElement>(null);
|
const scrollContainerRef = useRef<HTMLDivElement>(null);
|
||||||
@@ -185,7 +185,10 @@ const ValidationTable = <T extends string>({
|
|||||||
rowProductLines = {},
|
rowProductLines = {},
|
||||||
rowSublines = {},
|
rowSublines = {},
|
||||||
isLoadingLines = {},
|
isLoadingLines = {},
|
||||||
isLoadingSublines = {}
|
isLoadingSublines = {},
|
||||||
|
isValidatingUpc,
|
||||||
|
validatingUpcRows = [],
|
||||||
|
upcValidationResults
|
||||||
}: ValidationTableProps<T>) => {
|
}: ValidationTableProps<T>) => {
|
||||||
const { translations } = useRsi<T>();
|
const { translations } = useRsi<T>();
|
||||||
|
|
||||||
@@ -328,6 +331,16 @@ const ValidationTable = <T extends string>({
|
|||||||
copyDown(rowIndex, fieldKey, endRowIndex);
|
copyDown(rowIndex, fieldKey, endRowIndex);
|
||||||
}, [copyDown]);
|
}, [copyDown]);
|
||||||
|
|
||||||
|
// Use validatingUpcRows for calculation
|
||||||
|
const isRowValidatingUpc = useCallback((rowIndex: number) => {
|
||||||
|
return isValidatingUpc?.(rowIndex) || validatingUpcRows.includes(rowIndex);
|
||||||
|
}, [isValidatingUpc, validatingUpcRows]);
|
||||||
|
|
||||||
|
// Use upcValidationResults for display
|
||||||
|
const getRowUpcResult = useCallback((rowIndex: number) => {
|
||||||
|
return upcValidationResults?.get(rowIndex)?.itemNumber;
|
||||||
|
}, [upcValidationResults]);
|
||||||
|
|
||||||
// Memoize field columns with stable handlers
|
// Memoize field columns with stable handlers
|
||||||
const fieldColumns = useMemo(() => fields.map((field): ColumnDef<RowData<T>, any> | null => {
|
const fieldColumns = useMemo(() => fields.map((field): ColumnDef<RowData<T>, any> | null => {
|
||||||
// Don't filter out disabled fields, just pass the disabled state to the cell component
|
// Don't filter out disabled fields, just pass the disabled state to the cell component
|
||||||
@@ -368,6 +381,10 @@ const ValidationTable = <T extends string>({
|
|||||||
if (validatingCells.has(cellLoadingKey)) {
|
if (validatingCells.has(cellLoadingKey)) {
|
||||||
isLoading = true;
|
isLoading = true;
|
||||||
}
|
}
|
||||||
|
// Check if UPC is validating for this row and field is item_number
|
||||||
|
else if (fieldKey === 'item_number' && isRowValidatingUpc(row.index)) {
|
||||||
|
isLoading = true;
|
||||||
|
}
|
||||||
// Add loading state for line/subline fields
|
// Add loading state for line/subline fields
|
||||||
else if (fieldKey === 'line' && rowId && isLoadingLines[rowId]) {
|
else if (fieldKey === 'line' && rowId && isLoadingLines[rowId]) {
|
||||||
isLoading = true;
|
isLoading = true;
|
||||||
@@ -405,6 +422,12 @@ const ValidationTable = <T extends string>({
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get item number from UPC validation results if available
|
||||||
|
let itemNumber = itemNumbers.get(row.index);
|
||||||
|
if (!itemNumber && fieldKey === 'item_number') {
|
||||||
|
itemNumber = getRowUpcResult(row.index);
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<MemoizedCell
|
<MemoizedCell
|
||||||
field={fieldWithType as Field<string>}
|
field={fieldWithType as Field<string>}
|
||||||
@@ -414,7 +437,7 @@ const ValidationTable = <T extends string>({
|
|||||||
isValidating={isLoading}
|
isValidating={isLoading}
|
||||||
fieldKey={fieldKey}
|
fieldKey={fieldKey}
|
||||||
options={options}
|
options={options}
|
||||||
itemNumber={itemNumbers.get(row.index)}
|
itemNumber={itemNumber}
|
||||||
width={fieldWidth}
|
width={fieldWidth}
|
||||||
rowIndex={row.index}
|
rowIndex={row.index}
|
||||||
copyDown={(endRowIndex?: number) => handleCopyDown(row.index, field.key as string, endRowIndex)}
|
copyDown={(endRowIndex?: number) => handleCopyDown(row.index, field.key as string, endRowIndex)}
|
||||||
@@ -424,7 +447,9 @@ const ValidationTable = <T extends string>({
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}).filter((col): col is ColumnDef<RowData<T>, any> => col !== null),
|
}).filter((col): col is ColumnDef<RowData<T>, any> => col !== null),
|
||||||
[fields, validationErrors, validatingCells, itemNumbers, handleFieldUpdate, handleCopyDown, optionsCache, data.length, rowProductLines, rowSublines, isLoadingLines, isLoadingSublines]);
|
[fields, validationErrors, validatingCells, itemNumbers, handleFieldUpdate, handleCopyDown, optionsCache,
|
||||||
|
data.length, rowProductLines, rowSublines, isLoadingLines, isLoadingSublines,
|
||||||
|
isRowValidatingUpc, getRowUpcResult]);
|
||||||
|
|
||||||
// Combine columns
|
// Combine columns
|
||||||
const columns = useMemo(() => [selectionColumn, templateColumn, ...fieldColumns], [selectionColumn, templateColumn, fieldColumns]);
|
const columns = useMemo(() => [selectionColumn, templateColumn, ...fieldColumns], [selectionColumn, templateColumn, fieldColumns]);
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import React, { useState, useCallback, useDeferredValue, useTransition, useRef, useEffect, useMemo } from 'react'
|
import React, { useState, useCallback, useTransition, useRef, useEffect, useMemo } from 'react'
|
||||||
import { Field } from '../../../../types'
|
import { Field } from '../../../../types'
|
||||||
import { Input } from '@/components/ui/input'
|
import { Input } from '@/components/ui/input'
|
||||||
import { cn } from '@/lib/utils'
|
import { cn } from '@/lib/utils'
|
||||||
@@ -46,7 +46,6 @@ const InputCell = <T extends string>({
|
|||||||
const [isEditing, setIsEditing] = useState(false);
|
const [isEditing, setIsEditing] = useState(false);
|
||||||
const [editValue, setEditValue] = useState('');
|
const [editValue, setEditValue] = useState('');
|
||||||
const [isPending, startTransition] = useTransition();
|
const [isPending, startTransition] = useTransition();
|
||||||
const deferredEditValue = useDeferredValue(editValue);
|
|
||||||
|
|
||||||
// Use a ref to track if we need to process the value
|
// Use a ref to track if we need to process the value
|
||||||
const needsProcessingRef = useRef(false);
|
const needsProcessingRef = useRef(false);
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import { useState, useCallback } from 'react';
|
import { useState, useCallback } from 'react';
|
||||||
import { toast } from 'sonner';
|
import { toast } from 'sonner';
|
||||||
import { getApiUrl, RowData } from './useValidationState';
|
import { getApiUrl, RowData } from './useValidationState';
|
||||||
import { Fields, InfoWithSource, ErrorSources, ErrorType } from '../../../types';
|
import { Fields } from '../../../types';
|
||||||
import { Meta } from '../types';
|
import { Meta } from '../types';
|
||||||
import { addErrorsAndRunHooks } from '../utils/dataMutations';
|
import { addErrorsAndRunHooks } from '../utils/dataMutations';
|
||||||
import * as Diff from 'diff';
|
import * as Diff from 'diff';
|
||||||
@@ -21,30 +21,22 @@ const isEmpty = (value: any): boolean =>
|
|||||||
(Array.isArray(value) && value.length === 0) ||
|
(Array.isArray(value) && value.length === 0) ||
|
||||||
(typeof value === 'object' && !Array.isArray(value) && Object.keys(value).length === 0);
|
(typeof value === 'object' && !Array.isArray(value) && Object.keys(value).length === 0);
|
||||||
|
|
||||||
// Cache validation results to avoid running expensive validations repeatedly
|
// Create a cache for validation results to avoid repeated validation of the same data
|
||||||
const validationResultCache = new Map<string, ValidationError[]>();
|
const validationResultCache = new Map();
|
||||||
|
const validationCache: Record<string, any> = {};
|
||||||
// Add debounce to prevent rapid successive validations
|
|
||||||
let validateDataTimeoutId: ReturnType<typeof setTimeout> | null = null;
|
|
||||||
|
|
||||||
// Add a function to clear cache for a specific field value
|
// Add a function to clear cache for a specific field value
|
||||||
export const clearValidationCacheForField = (fieldKey: string, value: any) => {
|
export const clearValidationCacheForField = (fieldKey: string) => {
|
||||||
// Create a pattern to match cache keys for this field
|
// Clear cache
|
||||||
const pattern = new RegExp(`^${fieldKey}-`);
|
const cacheKey = `field_${fieldKey}`;
|
||||||
|
delete validationCache[cacheKey];
|
||||||
// Find and clear matching cache entries
|
|
||||||
validationResultCache.forEach((_, key) => {
|
|
||||||
if (pattern.test(key)) {
|
|
||||||
validationResultCache.delete(key);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Add a special function to clear all uniqueness validation caches
|
// Add a special function to clear all uniqueness validation caches
|
||||||
export const clearAllUniquenessCaches = () => {
|
export const clearAllUniquenessCaches = () => {
|
||||||
// Clear cache for common unique fields
|
// Clear cache for common unique fields
|
||||||
['item_number', 'upc', 'barcode', 'supplier_no', 'notions_no'].forEach(fieldKey => {
|
['item_number', 'upc', 'barcode', 'supplier_no', 'notions_no'].forEach(fieldKey => {
|
||||||
clearValidationCacheForField(fieldKey, null);
|
clearValidationCacheForField(fieldKey);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Also clear any cache entries that might involve uniqueness validation
|
// Also clear any cache entries that might involve uniqueness validation
|
||||||
@@ -359,12 +351,12 @@ export const useValidation = <T extends string>(
|
|||||||
// Force cache clearing for uniqueness-validated fields to ensure fresh validation
|
// Force cache clearing for uniqueness-validated fields to ensure fresh validation
|
||||||
if (isUniqueField) {
|
if (isUniqueField) {
|
||||||
console.log(`Clearing validation cache for uniqueness field: ${fieldKey}`);
|
console.log(`Clearing validation cache for uniqueness field: ${fieldKey}`);
|
||||||
clearValidationCacheForField(fieldKey, null);
|
clearValidationCacheForField(fieldKey);
|
||||||
|
|
||||||
// If a field that might affect item_number, also clear item_number cache
|
// If a field that might affect item_number, also clear item_number cache
|
||||||
if (triggersItemNumberValidation) {
|
if (triggersItemNumberValidation) {
|
||||||
console.log('Also clearing item_number validation cache');
|
console.log('Also clearing item_number validation cache');
|
||||||
clearValidationCacheForField('item_number', null);
|
clearValidationCacheForField('item_number');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -9,7 +9,8 @@ export const convertToError = (error: any): ErrorType => {
|
|||||||
return {
|
return {
|
||||||
message: typeof error.message === 'string' ? error.message : String(error.message || ''),
|
message: typeof error.message === 'string' ? error.message : String(error.message || ''),
|
||||||
level: error.level || 'error',
|
level: error.level || 'error',
|
||||||
source: error.source || 'row'
|
source: error.source || 'row',
|
||||||
|
type: error.type || 'custom'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Field, Data, ErrorSources, ErrorType as ValidationErrorType } from '../../../types'
|
import { Field, Data, ErrorSources, ErrorType as ValidationErrorType } from '../../../types'
|
||||||
import { ErrorType } from '../types'
|
import { ErrorType } from '../types/index'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Formats a price value to a consistent format
|
* Formats a price value to a consistent format
|
||||||
@@ -31,8 +31,6 @@ export type RsiProps<T extends string> = {
|
|||||||
isNavigationEnabled?: boolean
|
isNavigationEnabled?: boolean
|
||||||
// Translations for each text
|
// Translations for each text
|
||||||
translations?: TranslationsRSIProps
|
translations?: TranslationsRSIProps
|
||||||
// Theme configuration passed to underlying Chakra-UI
|
|
||||||
customTheme?: object
|
|
||||||
// Specifies maximum number of rows for a single import
|
// Specifies maximum number of rows for a single import
|
||||||
maxRecords?: number
|
maxRecords?: number
|
||||||
// Maximum upload filesize (in bytes)
|
// Maximum upload filesize (in bytes)
|
||||||
@@ -75,7 +73,7 @@ export type Field<T extends string> = {
|
|||||||
// Alternate labels used for fields' auto-matching, e.g. "fname" -> "firstName"
|
// Alternate labels used for fields' auto-matching, e.g. "fname" -> "firstName"
|
||||||
alternateMatches?: string[]
|
alternateMatches?: string[]
|
||||||
// Validations used for field entries
|
// Validations used for field entries
|
||||||
validations?: ValidationConfig[]
|
validations?: Validation[]
|
||||||
// Field entry component
|
// Field entry component
|
||||||
fieldType: FieldType
|
fieldType: FieldType
|
||||||
// UI-facing values shown to user as field examples pre-upload phase
|
// UI-facing values shown to user as field examples pre-upload phase
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
import type { WorkSheet } from "xlsx"
|
||||||
|
|
||||||
|
export const exceedsMaxRecords = (workSheet: WorkSheet, maxRecords: number) => {
|
||||||
|
const [top, bottom] = workSheet["!ref"]?.split(":").map((position: string) => parseInt(position.replace(/\D/g, ""), 10)) || []
|
||||||
|
return bottom - top > maxRecords
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user