fuse-importer 0.0.1-staging
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +270 -0
- package/lib/esm/Importer/ImporterWithContext.d.ts +6 -0
- package/lib/esm/Importer/ImporterWithContext.js +62 -0
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/index.d.ts +3 -0
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/index.js +68 -0
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/tableColumns.d.ts +13 -0
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcher/tableColumns.js +58 -0
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcherContext.d.ts +10 -0
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/EnumFieldMatcherContext.js +21 -0
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/index.d.ts +1 -0
- package/lib/esm/Importer/Matcher/EnumFieldsMatchers/index.js +23 -0
- package/lib/esm/Importer/Matcher/HeaderMatcher/index.d.ts +2 -0
- package/lib/esm/Importer/Matcher/HeaderMatcher/index.js +61 -0
- package/lib/esm/Importer/Matcher/HeaderMatcher/tableColumns.d.ts +14 -0
- package/lib/esm/Importer/Matcher/HeaderMatcher/tableColumns.js +55 -0
- package/lib/esm/Importer/Matcher/common/icons/index.d.ts +2 -0
- package/lib/esm/Importer/Matcher/common/icons/index.js +14 -0
- package/lib/esm/Importer/Matcher/common/index.d.ts +3 -0
- package/lib/esm/Importer/Matcher/common/index.js +39 -0
- package/lib/esm/Importer/Matcher/common/types.d.ts +7 -0
- package/lib/esm/Importer/Matcher/common/types.js +9 -0
- package/lib/esm/Importer/Matcher/index.d.ts +3 -0
- package/lib/esm/Importer/Matcher/index.js +22 -0
- package/lib/esm/Importer/PreviewFirstTime.d.ts +1 -0
- package/lib/esm/Importer/PreviewFirstTime.js +81 -0
- package/lib/esm/Importer/PreviewModeBanner.d.ts +1 -0
- package/lib/esm/Importer/PreviewModeBanner.js +19 -0
- package/lib/esm/Importer/Review/AppResponseModal.d.ts +1 -0
- package/lib/esm/Importer/Review/AppResponseModal.js +35 -0
- package/lib/esm/Importer/Review/ReviewContextProvider.d.ts +29 -0
- package/lib/esm/Importer/Review/ReviewContextProvider.js +290 -0
- package/lib/esm/Importer/Review/ReviewWithContext.d.ts +2 -0
- package/lib/esm/Importer/Review/ReviewWithContext.js +33 -0
- package/lib/esm/Importer/Review/index.d.ts +3 -0
- package/lib/esm/Importer/Review/index.js +4 -0
- package/lib/esm/Importer/Stepper/ConfirmCloseModal.d.ts +7 -0
- package/lib/esm/Importer/Stepper/ConfirmCloseModal.js +24 -0
- package/lib/esm/Importer/Stepper/Step.d.ts +6 -0
- package/lib/esm/Importer/Stepper/Step.js +19 -0
- package/lib/esm/Importer/Stepper/StepIndex.d.ts +5 -0
- package/lib/esm/Importer/Stepper/StepIndex.js +27 -0
- package/lib/esm/Importer/Stepper/StepperSubmitModal.d.ts +7 -0
- package/lib/esm/Importer/Stepper/StepperSubmitModal.js +24 -0
- package/lib/esm/Importer/Stepper/UnmatchedHeadersModal.d.ts +8 -0
- package/lib/esm/Importer/Stepper/UnmatchedHeadersModal.js +31 -0
- package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.d.ts +8 -0
- package/lib/esm/Importer/Stepper/common/getEnumFieldValueMatchingsInitialValue.js +33 -0
- package/lib/esm/Importer/Stepper/common/icons.d.ts +2 -0
- package/lib/esm/Importer/Stepper/common/icons.js +18 -0
- package/lib/esm/Importer/Stepper/index.d.ts +6 -0
- package/lib/esm/Importer/Stepper/index.js +118 -0
- package/lib/esm/Importer/TrialModeBanner.d.ts +1 -0
- package/lib/esm/Importer/TrialModeBanner.js +22 -0
- package/lib/esm/Importer/Uploader/DragAndDropImporter/DragAndDropImporter.styles.d.ts +3 -0
- package/lib/esm/Importer/Uploader/DragAndDropImporter/DragAndDropImporter.styles.js +11 -0
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.d.ts +2 -0
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterDropzone.js +111 -0
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterSectionHeader/ImporterSectionHeader.styles.d.ts +7 -0
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterSectionHeader/ImporterSectionHeader.styles.js +11 -0
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterSectionHeader/index.d.ts +7 -0
- package/lib/esm/Importer/Uploader/DragAndDropImporter/ImporterSectionHeader/index.js +44 -0
- package/lib/esm/Importer/Uploader/DragAndDropImporter/backgrounds.d.ts +2 -0
- package/lib/esm/Importer/Uploader/DragAndDropImporter/backgrounds.js +14 -0
- package/lib/esm/Importer/Uploader/DragAndDropImporter/index.d.ts +3 -0
- package/lib/esm/Importer/Uploader/DragAndDropImporter/index.js +45 -0
- package/lib/esm/Importer/Uploader/HeaderButtons.d.ts +1 -0
- package/lib/esm/Importer/Uploader/HeaderButtons.js +28 -0
- package/lib/esm/Importer/Uploader/HeadersPreview.d.ts +2 -0
- package/lib/esm/Importer/Uploader/HeadersPreview.js +36 -0
- package/lib/esm/Importer/Uploader/UploaderContextProvider.d.ts +13 -0
- package/lib/esm/Importer/Uploader/UploaderContextProvider.js +27 -0
- package/lib/esm/Importer/Uploader/index.d.ts +3 -0
- package/lib/esm/Importer/Uploader/index.js +13 -0
- package/lib/esm/Importer/common/AppLoading.d.ts +1 -0
- package/lib/esm/Importer/common/AppLoading.js +24 -0
- package/lib/esm/Importer/common/Footer.d.ts +2 -0
- package/lib/esm/Importer/common/Footer.js +17 -0
- package/lib/esm/Importer/common/FuseApi.d.ts +12 -0
- package/lib/esm/Importer/common/FuseApi.js +48 -0
- package/lib/esm/Importer/common/GlobalStyle.d.ts +1 -0
- package/lib/esm/Importer/common/GlobalStyle.js +7 -0
- package/lib/esm/Importer/common/ImporterFonts.d.ts +1 -0
- package/lib/esm/Importer/common/ImporterFonts.js +5 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.d.ts +5 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/filterMethods.js +67 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.d.ts +47 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/index.js +167 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useSpreadsheetFilter.d.ts +14 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/useSpreadsheetFilter.js +45 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/utils.d.ts +2 -0
- package/lib/esm/Importer/common/Spreadsheet/SpreadsheetContextProvider/utils.js +14 -0
- package/lib/esm/Importer/common/Spreadsheet/common/index.d.ts +16 -0
- package/lib/esm/Importer/common/Spreadsheet/common/index.js +63 -0
- package/lib/esm/Importer/common/Spreadsheet/common/types.d.ts +24 -0
- package/lib/esm/Importer/common/Spreadsheet/common/types.js +5 -0
- package/lib/esm/Importer/common/Spreadsheet/components/FieldHeader.d.ts +15 -0
- package/lib/esm/Importer/common/Spreadsheet/components/FieldHeader.js +66 -0
- package/lib/esm/Importer/common/Spreadsheet/components/GlobalStyle.d.ts +2 -0
- package/lib/esm/Importer/common/Spreadsheet/components/GlobalStyle.js +9 -0
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.d.ts +3 -0
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetData.js +105 -0
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.d.ts +10 -0
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowCheckboxes.js +181 -0
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowNumbers.d.ts +9 -0
- package/lib/esm/Importer/common/Spreadsheet/components/SpreadsheetRowNumbers.js +55 -0
- package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.d.ts +5 -0
- package/lib/esm/Importer/common/Spreadsheet/components/ValidationProgress.js +19 -0
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpeadsheetAutocomplete.d.ts +13 -0
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpeadsheetAutocomplete.js +38 -0
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.d.ts +12 -0
- package/lib/esm/Importer/common/Spreadsheet/components/fields/SpreadsheetInput.js +43 -0
- package/lib/esm/Importer/common/Spreadsheet/components/fields/index.d.ts +12 -0
- package/lib/esm/Importer/common/Spreadsheet/components/fields/index.js +96 -0
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/Boolean.d.ts +3 -0
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/Boolean.js +18 -0
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/EmailInput.d.ts +3 -0
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/EmailInput.js +14 -0
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/EnumInput.d.ts +6 -0
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/EnumInput.js +30 -0
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/FloatInput.d.ts +3 -0
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/FloatInput.js +16 -0
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/IntegerInput.d.ts +3 -0
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/IntegerInput.js +16 -0
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/StringInput.d.ts +3 -0
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/StringInput.js +14 -0
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/index.d.ts +13 -0
- package/lib/esm/Importer/common/Spreadsheet/components/inputs/index.js +20 -0
- package/lib/esm/Importer/common/Spreadsheet/hooks.d.ts +34 -0
- package/lib/esm/Importer/common/Spreadsheet/hooks.js +234 -0
- package/lib/esm/Importer/common/Spreadsheet/index.d.ts +6 -0
- package/lib/esm/Importer/common/Spreadsheet/index.js +125 -0
- package/lib/esm/Importer/common/Spreadsheet/styles.d.ts +10 -0
- package/lib/esm/Importer/common/Spreadsheet/styles.js +16 -0
- package/lib/esm/Importer/common/Spreadsheet/transformation/index.d.ts +7 -0
- package/lib/esm/Importer/common/Spreadsheet/transformation/index.js +25 -0
- package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.d.ts +8 -0
- package/lib/esm/Importer/common/Spreadsheet/transformation/transformators.js +106 -0
- package/lib/esm/Importer/common/Spreadsheet/validation/index.d.ts +23 -0
- package/lib/esm/Importer/common/Spreadsheet/validation/index.js +196 -0
- package/lib/esm/Importer/common/Spreadsheet/validation/validators.d.ts +6 -0
- package/lib/esm/Importer/common/Spreadsheet/validation/validators.js +176 -0
- package/lib/esm/Importer/common/icons/index.d.ts +6 -0
- package/lib/esm/Importer/common/icons/index.js +18 -0
- package/lib/esm/Importer/common/index.d.ts +15 -0
- package/lib/esm/Importer/common/index.js +13 -0
- package/lib/esm/Importer/common/theme.d.ts +238 -0
- package/lib/esm/Importer/common/theme.js +19 -0
- package/lib/esm/Importer/common/utils.d.ts +12 -0
- package/lib/esm/Importer/common/utils.js +100 -0
- package/lib/esm/Importer/contexts/ImporterContextProvider.d.ts +71 -0
- package/lib/esm/Importer/contexts/ImporterContextProvider.js +244 -0
- package/lib/esm/Importer/data/index.d.ts +52 -0
- package/lib/esm/Importer/data/index.js +155 -0
- package/lib/esm/Importer/index.d.ts +22 -0
- package/lib/esm/Importer/index.js +28 -0
- package/lib/esm/api/index.d.ts +16 -0
- package/lib/esm/api/index.js +93 -0
- package/lib/esm/api/responseHandlers.d.ts +4 -0
- package/lib/esm/api/responseHandlers.js +49 -0
- package/lib/esm/common/ConfirmationModal.d.ts +10 -0
- package/lib/esm/common/ConfirmationModal.js +19 -0
- package/lib/esm/common/Modal.d.ts +16 -0
- package/lib/esm/common/Modal.js +31 -0
- package/lib/esm/common/Spinner.d.ts +5 -0
- package/lib/esm/common/Spinner.js +41 -0
- package/lib/esm/common/Table/Pagination/icons.d.ts +11 -0
- package/lib/esm/common/Table/Pagination/icons.js +42 -0
- package/lib/esm/common/Table/Pagination/index.d.ts +2 -0
- package/lib/esm/common/Table/Pagination/index.js +32 -0
- package/lib/esm/common/Table/TableActions/DeleteSelectedRows.d.ts +5 -0
- package/lib/esm/common/Table/TableActions/DeleteSelectedRows.js +50 -0
- package/lib/esm/common/Table/TableActions/ExportData.d.ts +3 -0
- package/lib/esm/common/Table/TableActions/ExportData.js +23 -0
- package/lib/esm/common/Table/TableActions/FilterByErrors/FilterByErrors.d.ts +1 -0
- package/lib/esm/common/Table/TableActions/FilterByErrors/FilterByErrors.js +46 -0
- package/lib/esm/common/Table/TableActions/FilterByErrors/FilterByErrors.styles.d.ts +6 -0
- package/lib/esm/common/Table/TableActions/FilterByErrors/FilterByErrors.styles.js +24 -0
- package/lib/esm/common/Table/TableActions/FilterByErrors/functions.d.ts +11 -0
- package/lib/esm/common/Table/TableActions/FilterByErrors/functions.js +35 -0
- package/lib/esm/common/Table/TableActions/FilterByErrors/index.d.ts +1 -0
- package/lib/esm/common/Table/TableActions/FilterByErrors/index.js +1 -0
- package/lib/esm/common/Table/TableActions/RowFilters.d.ts +1 -0
- package/lib/esm/common/Table/TableActions/RowFilters.js +39 -0
- package/lib/esm/common/Table/TableActions/SearchRows.d.ts +3 -0
- package/lib/esm/common/Table/TableActions/SearchRows.js +72 -0
- package/lib/esm/common/Table/TableActions/TableActions.d.ts +8 -0
- package/lib/esm/common/Table/TableActions/TableActions.js +34 -0
- package/lib/esm/common/Table/TableActions/TableActions.styles.d.ts +5 -0
- package/lib/esm/common/Table/TableActions/TableActions.styles.js +17 -0
- package/lib/esm/common/Table/TableActions/common.d.ts +1 -0
- package/lib/esm/common/Table/TableActions/common.js +1 -0
- package/lib/esm/common/Table/TableActions/hooks.d.ts +18 -0
- package/lib/esm/common/Table/TableActions/hooks.js +41 -0
- package/lib/esm/common/Table/TableActions/icons.d.ts +4 -0
- package/lib/esm/common/Table/TableActions/icons.js +16 -0
- package/lib/esm/common/Table/TableActions/index.d.ts +1 -0
- package/lib/esm/common/Table/TableActions/index.js +1 -0
- package/lib/esm/common/Table/TableDataProvider.d.ts +35 -0
- package/lib/esm/common/Table/TableDataProvider.js +127 -0
- package/lib/esm/common/Table/TableView/CustomScrollbar.d.ts +2 -0
- package/lib/esm/common/Table/TableView/CustomScrollbar.js +34 -0
- package/lib/esm/common/Table/TableView/TableHeaders.d.ts +23 -0
- package/lib/esm/common/Table/TableView/TableHeaders.js +69 -0
- package/lib/esm/common/Table/TableView/TableRows/TableRow.d.ts +19 -0
- package/lib/esm/common/Table/TableView/TableRows/TableRow.js +57 -0
- package/lib/esm/common/Table/TableView/TableRows/index.d.ts +4 -0
- package/lib/esm/common/Table/TableView/TableRows/index.js +45 -0
- package/lib/esm/common/Table/TableView/common/index.d.ts +5 -0
- package/lib/esm/common/Table/TableView/common/index.js +37 -0
- package/lib/esm/common/Table/TableView/index.d.ts +11 -0
- package/lib/esm/common/Table/TableView/index.js +133 -0
- package/lib/esm/common/Table/TableView/types.d.ts +37 -0
- package/lib/esm/common/Table/TableView/types.js +1 -0
- package/lib/esm/common/Table/icons.d.ts +3 -0
- package/lib/esm/common/Table/icons.js +15 -0
- package/lib/esm/common/Table/index.d.ts +11 -0
- package/lib/esm/common/Table/index.js +140 -0
- package/lib/esm/common/Table/useReorderRows.d.ts +4 -0
- package/lib/esm/common/Table/useReorderRows.js +83 -0
- package/lib/esm/common/Toast.d.ts +4 -0
- package/lib/esm/common/Toast.js +69 -0
- package/lib/esm/common/TooltipProvider.d.ts +19 -0
- package/lib/esm/common/TooltipProvider.js +57 -0
- package/lib/esm/common/buttons.d.ts +50 -0
- package/lib/esm/common/buttons.js +97 -0
- package/lib/esm/common/columnsTransformations.d.ts +15 -0
- package/lib/esm/common/columnsTransformations.js +92 -0
- package/lib/esm/common/columnsValidations.d.ts +45 -0
- package/lib/esm/common/columnsValidations.js +431 -0
- package/lib/esm/common/icons/index.d.ts +11 -0
- package/lib/esm/common/icons/index.js +30 -0
- package/lib/esm/common/index.d.ts +27 -0
- package/lib/esm/common/index.js +45 -0
- package/lib/esm/common/inputs/Autocomplete.d.ts +22 -0
- package/lib/esm/common/inputs/Autocomplete.js +110 -0
- package/lib/esm/common/inputs/Checkbox.d.ts +11 -0
- package/lib/esm/common/inputs/Checkbox.js +53 -0
- package/lib/esm/common/inputs/SelectMenu.d.ts +14 -0
- package/lib/esm/common/inputs/SelectMenu.js +67 -0
- package/lib/esm/common/inputs/TextInput.d.ts +29 -0
- package/lib/esm/common/inputs/TextInput.js +89 -0
- package/lib/esm/common/inputs/index.d.ts +5 -0
- package/lib/esm/common/inputs/index.js +5 -0
- package/lib/esm/common/inputs/tooltip.d.ts +4 -0
- package/lib/esm/common/inputs/tooltip.js +38 -0
- package/lib/esm/common/logo.d.ts +1 -0
- package/lib/esm/common/logo.js +13 -0
- package/lib/esm/hooks/index.d.ts +5 -0
- package/lib/esm/hooks/index.js +16 -0
- package/lib/esm/index.d.ts +34 -0
- package/lib/esm/index.js +230 -0
- package/lib/esm/locales/de.d.ts +121 -0
- package/lib/esm/locales/de.js +121 -0
- package/lib/esm/locales/en.d.ts +121 -0
- package/lib/esm/locales/en.js +121 -0
- package/lib/esm/locales/es.d.ts +121 -0
- package/lib/esm/locales/es.js +121 -0
- package/lib/esm/locales/fr.d.ts +121 -0
- package/lib/esm/locales/fr.js +121 -0
- package/lib/esm/locales/index.d.ts +4 -0
- package/lib/esm/locales/index.js +4 -0
- package/lib/esm/styled/fontsURL.d.ts +9 -0
- package/lib/esm/styled/fontsURL.js +27 -0
- package/lib/esm/styled/index.d.ts +3 -0
- package/lib/esm/styled/index.js +3 -0
- package/lib/esm/styled/theme/animations.d.ts +3 -0
- package/lib/esm/styled/theme/animations.js +9 -0
- package/lib/esm/styled/theme/colorPalette.d.ts +171 -0
- package/lib/esm/styled/theme/colorPalette.js +109 -0
- package/lib/esm/styled/theme/debugCss.d.ts +10 -0
- package/lib/esm/styled/theme/debugCss.js +16 -0
- package/lib/esm/styled/theme/dimensionsCss.d.ts +17 -0
- package/lib/esm/styled/theme/dimensionsCss.js +20 -0
- package/lib/esm/styled/theme/fontCss.d.ts +11 -0
- package/lib/esm/styled/theme/fontCss.js +17 -0
- package/lib/esm/styled/theme/globalCss.d.ts +18 -0
- package/lib/esm/styled/theme/globalCss.js +26 -0
- package/lib/esm/styled/theme/index.d.ts +345 -0
- package/lib/esm/styled/theme/index.js +33 -0
- package/lib/esm/styled/theme/layoutCss.d.ts +20 -0
- package/lib/esm/styled/theme/layoutCss.js +26 -0
- package/lib/esm/styled/theme/mediaQueries.d.ts +4 -0
- package/lib/esm/styled/theme/mediaQueries.js +4 -0
- package/lib/esm/styled/theme/positionCss.d.ts +20 -0
- package/lib/esm/styled/theme/positionCss.js +27 -0
- package/lib/esm/styled/theme/textCss.d.ts +12 -0
- package/lib/esm/styled/theme/textCss.js +18 -0
- package/lib/esm/styled/theme/textStyles.d.ts +21 -0
- package/lib/esm/styled/theme/textStyles.js +27 -0
- package/lib/esm/styled/themeType.d.ts +2 -0
- package/lib/esm/styled/themeType.js +6 -0
- package/lib/esm/styled/utils.d.ts +22 -0
- package/lib/esm/styled/utils.js +17 -0
- package/lib/esm/types.d.ts +209 -0
- package/lib/esm/types.js +65 -0
- package/lib/esm/utils/hooks/useWindowSize.d.ts +11 -0
- package/lib/esm/utils/hooks/useWindowSize.js +23 -0
- package/lib/esm/utils/hooks.d.ts +1 -0
- package/lib/esm/utils/hooks.js +1 -0
- package/lib/esm/utils/index.d.ts +12 -0
- package/lib/esm/utils/index.js +37 -0
- package/lib/main.js +172 -0
- package/lib/main.js.LICENSE.txt +61 -0
- package/package.json +96 -0
package/README.md
ADDED
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
<div>
|
|
2
|
+
<center>
|
|
3
|
+
<a href="https://fuse.flatirons.com/users/sign-up?utm_source=npmjs&utm_medium=Fuse+importer+logo&utm_campaign=NPM">
|
|
4
|
+
<img alt="Flatirons Fuse" src="https://wp.flatirons.com/wp-content/uploads/2022/07/fuse-logo.png">
|
|
5
|
+
</a>
|
|
6
|
+
</center>
|
|
7
|
+
<br>
|
|
8
|
+
<br>
|
|
9
|
+
<p>
|
|
10
|
+
Flatirons Fuse is a customizable and powerful CSV Importer that works with all front-end languages.
|
|
11
|
+
</p>
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
## Table of Contents
|
|
15
|
+
|
|
16
|
+
- [Installation](#installation)
|
|
17
|
+
- [Introduction](#introduction)
|
|
18
|
+
- [Registration](#registration)
|
|
19
|
+
- [Create Your First Importer](#create-your-first-template)
|
|
20
|
+
- [Getting started](#getting-started)
|
|
21
|
+
- [More Examples](#more-examples)
|
|
22
|
+
- [Usage](#usage)
|
|
23
|
+
- [FuseImporter Hooks](#fuseimporter-hooks)
|
|
24
|
+
- [`show`](#show)
|
|
25
|
+
- [`close`](#close)
|
|
26
|
+
- [`onClose`](#onclose)
|
|
27
|
+
- [`onValidateRecord`](#onvalidaterecord)
|
|
28
|
+
- [`formatRecord`](#formatrecord)
|
|
29
|
+
- [`onSubmit`](#onsubmit)
|
|
30
|
+
|
|
31
|
+
## Installation
|
|
32
|
+
|
|
33
|
+
You can use Yarn, NPM, or a CDN to install the importer.
|
|
34
|
+
|
|
35
|
+
Install with npm:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm install fuse-importer --save
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Install with yarn:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
yarn add fuse-importer
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Install with CDN:
|
|
48
|
+
|
|
49
|
+
```html
|
|
50
|
+
<script
|
|
51
|
+
type="text/javascript"
|
|
52
|
+
src="https://unpkg.com/fuse-importer@latest.js"
|
|
53
|
+
></script>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Introduction
|
|
57
|
+
|
|
58
|
+
Flatirons Fuse is our solution to the inevitable difficulties of getting customer data into your solution. We provide a white-labeled, customizable CSV and Spreadsheet import experience that is above all effective and flexible. Not only do we save you the time and effort of developing your own import solution, but we also ensure that setup and integration with your systems are a breeze.
|
|
59
|
+
|
|
60
|
+
To get started with our solution, you're going to need a free account and to create a template on our platform: [Flatirons Fuse](https://fuse.flatirons.com/users/sign-up?utm_source=npmjs&utm_medium=Flatirons+Fuse+Get+Started&utm_campaign=NPM)
|
|
61
|
+
|
|
62
|
+
To use the importer you will need two keys:
|
|
63
|
+
|
|
64
|
+
- Your **Organization's API key**: You can find this at the top of the [Importers page](#create-your-first-template).
|
|
65
|
+
- Your **Importer's ID**: You can find this in the table on the [Importers page](#create-your-first-template).
|
|
66
|
+
|
|
67
|
+
For more information see our [full documentation.](https://fuse-docs.flatirons.com?utm_source=npmjs&utm_medium=Fuse+importer+Full+Documentation&utm_campaign=NPM)
|
|
68
|
+
|
|
69
|
+
Check it out in action:
|
|
70
|
+
|
|
71
|
+
<div>
|
|
72
|
+
<center>
|
|
73
|
+
<img alt="Check it out in action" src="https://wp.flatirons.com/wp-content/uploads/2022/07/ezgif-1-242e10926e.gif">
|
|
74
|
+
</center>
|
|
75
|
+
</div>
|
|
76
|
+
|
|
77
|
+
## Registration
|
|
78
|
+
|
|
79
|
+
If you don't have an account yet, you can go over the [Registration](https://fuse-docs.flatirons.com/getting-started/registration?utm_source=npmjs&utm_medium=Registration&utm_campaign=NPM).
|
|
80
|
+
|
|
81
|
+
## Create Your First Importer
|
|
82
|
+
|
|
83
|
+
If you don’t have an Importer yet, you can go over [Create Your First Importer](https://fuse-docs.flatirons.com/getting-started/create-your-first-template?utm_source=npmjs&utm_medium=Create+Your+First+Template&utm_campaign=NPM). Importer represents the fields and validations that your own system accepts, also known as your data schema.
|
|
84
|
+
|
|
85
|
+
## Getting started
|
|
86
|
+
|
|
87
|
+
```html
|
|
88
|
+
<!DOCTYPE html>
|
|
89
|
+
<html>
|
|
90
|
+
<head>
|
|
91
|
+
<script
|
|
92
|
+
type="text/javascript"
|
|
93
|
+
src="https://unpkg.com/fuse-importer@latest"
|
|
94
|
+
></script>
|
|
95
|
+
<script type="text/javascript">
|
|
96
|
+
const organizationApiKey = "YOUR ORGANIZATIONS API KEY";
|
|
97
|
+
const importerId = "YOUR IMPORTER ID";
|
|
98
|
+
const importer = new FuseImporter(organizationApiKey, importerId);
|
|
99
|
+
|
|
100
|
+
importer.onValidateRecord = async (record) => {
|
|
101
|
+
// return no frontend validation errors or warnings
|
|
102
|
+
return { errors: {}, warnings: {} };
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
importer.onSubmit = async (records) => {
|
|
106
|
+
// an empty hash will tell us the import was successful!
|
|
107
|
+
return {
|
|
108
|
+
message: "Your data was imported successfully",
|
|
109
|
+
errors: {},
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
window.showFuseImporter = () => {
|
|
114
|
+
if (
|
|
115
|
+
organizationApiKey.indexOf("YOUR") !== -1 ||
|
|
116
|
+
importerId.indexOf("YOUR") !== -1
|
|
117
|
+
) {
|
|
118
|
+
window.confirm(
|
|
119
|
+
"You need to configure your organization api key and Importer id."
|
|
120
|
+
);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
importer.show();
|
|
124
|
+
};
|
|
125
|
+
</script>
|
|
126
|
+
</head>
|
|
127
|
+
|
|
128
|
+
<body>
|
|
129
|
+
<button onclick="javascript:showFuseImporter()">Show Importer</button>
|
|
130
|
+
</body>
|
|
131
|
+
</html>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## More Examples
|
|
135
|
+
|
|
136
|
+
- [Quickstart Examples](https://fuse-docs.flatirons.com/installation/quickstart-examples?utm_source=npmjs&utm_medium=More+Examples+Quickstart+Examples&utm_campaign=NPM)
|
|
137
|
+
- [React.js](https://fuse-docs.flatirons.com/use-cases/react.js-csv-importer?utm_source=npmjs&utm_medium=More+Examples+React&utm_campaign=NPM)
|
|
138
|
+
- [Angular](https://fuse-docs.flatirons.com/use-cases/angular-csv-importer?utm_source=npmjs&utm_medium=More+Examples+Angular&utm_campaign=NPM)
|
|
139
|
+
- [Vue.js](https://fuse-docs.flatirons.com/use-cases/vue.js-csv-importer?utm_source=npmjs&utm_medium=More+Examples+Vue&utm_campaign=NPM)
|
|
140
|
+
|
|
141
|
+
## Usage
|
|
142
|
+
|
|
143
|
+
```typescript
|
|
144
|
+
import FuseImporter from "fuse-importer";
|
|
145
|
+
|
|
146
|
+
const organizationApiKey = "YOUR ORGANIZATIONS API KEY";
|
|
147
|
+
const importerId = "YOUR IMPORTER ID";
|
|
148
|
+
const importer = new FuseImporter(organizationApiKey, importerId);
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### FuseImporter Hooks
|
|
152
|
+
|
|
153
|
+
Hooks allow you to show the importer, run validations, and submit records to your backend.
|
|
154
|
+
|
|
155
|
+
#### `show`
|
|
156
|
+
|
|
157
|
+
The show function does exactly what it sounds like; it launches the importer. Ensure you have initialized the importer properly beforehand. Use this function like so:
|
|
158
|
+
|
|
159
|
+
```typescript
|
|
160
|
+
importer.show();
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
#### `close`
|
|
164
|
+
|
|
165
|
+
The close function allows you to remove the importer from the view.
|
|
166
|
+
|
|
167
|
+
```typescript
|
|
168
|
+
importer.close();
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
#### `onClose`
|
|
172
|
+
|
|
173
|
+
The onClose function allows you to be notified when the importer is removed from the view.
|
|
174
|
+
|
|
175
|
+
```typescript
|
|
176
|
+
importer.onClose = () => {
|
|
177
|
+
console.log("The importer was closed!");
|
|
178
|
+
};
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
#### `onValidateRecord`
|
|
182
|
+
|
|
183
|
+
The `onValidationRecord` hook is called for each row (record) that a customer uploads. It allows you to specify custom frontend validations and display error messages in the importer for the user to fix. When you create an importer, each column contains an `internal key`. These internal keys represent the
|
|
184
|
+
|
|
185
|
+
Return values:
|
|
186
|
+
|
|
187
|
+
- If the record has no errors, we expect you to return an empty object: `return { errors : {}, warnings: {} }`.
|
|
188
|
+
- If the record has validation errors/warnings, you can specify them like below.
|
|
189
|
+
|
|
190
|
+
```typescript
|
|
191
|
+
importer.onValidateRecord = async (record) => {
|
|
192
|
+
const errors = {};
|
|
193
|
+
const warnings = {};
|
|
194
|
+
|
|
195
|
+
// force emails to include gmail
|
|
196
|
+
if (!record.email?.includes("gmail")) {
|
|
197
|
+
errors["email"] = "Email must be from Gmail";
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// email should be from the domain.
|
|
201
|
+
if (!record.email?.includes("@example.com")) {
|
|
202
|
+
warnings["email"] = "Email is outside the domain";
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
return { errors: errors, warnings: warnings };
|
|
206
|
+
};
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
The differences between errors and warnings are:
|
|
210
|
+
|
|
211
|
+
- `warnings` will still allow you to submit the spreadsheet, unlike `errors`.
|
|
212
|
+
- `errors` have a higher priority than warnings, which means if a record has both, you will not be able to see warnings until you fix errors first.
|
|
213
|
+
- Any `errors` must be fixed before the user submits an importer. The user will not be able to submit without fixing all errors.
|
|
214
|
+
|
|
215
|
+
#### `formatRecord`
|
|
216
|
+
|
|
217
|
+
The `formatRecord` hook can be used to format data automatically on behalf of a user. For example, if you have a field called `first_name` and you know that your system always requires `first_name` to be capitalized, you can use this callback to uppercase all `first_name` records like so:
|
|
218
|
+
|
|
219
|
+
```typescript
|
|
220
|
+
importer.formatRecord = (record) => {
|
|
221
|
+
const newRecord = { ...record };
|
|
222
|
+
|
|
223
|
+
// capitalize first letter in first_name
|
|
224
|
+
if (typeof newRecord.first_name === "string") {
|
|
225
|
+
newRecord.first_name =
|
|
226
|
+
newRecord.first_name.charAt(0).toUpperCase() +
|
|
227
|
+
newRecord.first_name.slice(1);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
return newRecord;
|
|
231
|
+
};
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
#### `onSubmit`
|
|
235
|
+
|
|
236
|
+
`onSubmit` will pass all records to you after the user has made any necessary corrections to frontend validations. This callback expects you to submit the records to your backend in whatever way you typically would, we do not submit the records for you.
|
|
237
|
+
|
|
238
|
+
This callback also allows you to pass back any backend errors for specific rows. Each record passed to this callback will have a unique identifier under the key `record._meta.id`. In this case of a backend validation or error occurring, you can tell the importer to show a specific error to the user for a row. Note that after submission, only records with errors will remain visible to the user.
|
|
239
|
+
|
|
240
|
+
Return values:
|
|
241
|
+
|
|
242
|
+
- If there were no backend errors, pass back an empty errors object and a message to show to the user like so:
|
|
243
|
+
|
|
244
|
+
```typescript
|
|
245
|
+
importer.onSubmit = async (records) => {
|
|
246
|
+
// submit to backend here
|
|
247
|
+
let message = "Data imported successfully";
|
|
248
|
+
return {
|
|
249
|
+
message,
|
|
250
|
+
errors: {},
|
|
251
|
+
};
|
|
252
|
+
};
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
- If you find an error with a record in your backend, you can tell the importer to show the error to the user like so:
|
|
256
|
+
|
|
257
|
+
```typescript
|
|
258
|
+
importer.onSubmit = async (records) => {
|
|
259
|
+
// submit to your backend here
|
|
260
|
+
|
|
261
|
+
return {
|
|
262
|
+
errors: {
|
|
263
|
+
[records[0]._meta.id]: {
|
|
264
|
+
email: "Email is already taken. Emails must be unique.",
|
|
265
|
+
first_name: "First Name must be capitalized.",
|
|
266
|
+
},
|
|
267
|
+
},
|
|
268
|
+
};
|
|
269
|
+
};
|
|
270
|
+
```
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
type LayoutProps = {
|
|
2
|
+
zIndex: number;
|
|
3
|
+
};
|
|
4
|
+
export declare const Layout: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, import("../styled").CSSProps & LayoutProps, never>;
|
|
5
|
+
export declare const ImporterWithContext: () => JSX.Element;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
2
|
+
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
3
|
+
return cooked;
|
|
4
|
+
};
|
|
5
|
+
var __assign = (this && this.__assign) || function () {
|
|
6
|
+
__assign = Object.assign || function(t) {
|
|
7
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
8
|
+
s = arguments[i];
|
|
9
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
10
|
+
t[p] = s[p];
|
|
11
|
+
}
|
|
12
|
+
return t;
|
|
13
|
+
};
|
|
14
|
+
return __assign.apply(this, arguments);
|
|
15
|
+
};
|
|
16
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
17
|
+
import { useEffect, useRef } from "react";
|
|
18
|
+
import { useTranslation } from "react-i18next";
|
|
19
|
+
import styled, { ThemeProvider, css } from "styled-components";
|
|
20
|
+
import { Toast } from "../common";
|
|
21
|
+
import { Div } from "../styled";
|
|
22
|
+
import Matcher from "./Matcher";
|
|
23
|
+
import { PreviewFirstTime } from "./PreviewFirstTime";
|
|
24
|
+
import { PreviewModeBanner } from "./PreviewModeBanner";
|
|
25
|
+
import Review from "./Review";
|
|
26
|
+
import { ReviewContextProvider } from "./Review/ReviewContextProvider";
|
|
27
|
+
import { Stepper } from "./Stepper/index";
|
|
28
|
+
import { TrialModeBanner } from "./TrialModeBanner";
|
|
29
|
+
import Uploader from "./Uploader";
|
|
30
|
+
import { AppLoading } from "./common/AppLoading";
|
|
31
|
+
import { Footer } from "./common/Footer";
|
|
32
|
+
import { GlobalStyle } from "./common/GlobalStyle";
|
|
33
|
+
import { ImporterFonts } from "./common/ImporterFonts";
|
|
34
|
+
import { useImporterContext } from "./contexts/ImporterContextProvider";
|
|
35
|
+
export var Layout = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n background: ", ";\n display: flex;\n flex-direction: column;\n height: 100vh;\n left: 0;\n overflow-y: auto;\n position: fixed;\n top: 0;\n width: 100vw;\n z-index: ", ";\n ", ";\n"], ["\n background: ", ";\n display: flex;\n flex-direction: column;\n height: 100vh;\n left: 0;\n overflow-y: auto;\n position: fixed;\n top: 0;\n width: 100vw;\n z-index: ", ";\n ", ";\n"])), function (_a) {
|
|
36
|
+
var theme = _a.theme;
|
|
37
|
+
return theme.colors.backgroundInterface;
|
|
38
|
+
}, function (p) { return p.zIndex; }, function (p) { return p.theme.css.scrollbarDark; });
|
|
39
|
+
var Content = styled(Div)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), function (_a) {
|
|
40
|
+
var colors = _a.theme.colors, inTrialMode = _a.inTrialMode;
|
|
41
|
+
return css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n background-color: ", ";\n flex: ", ";\n "], ["\n background-color: ", ";\n flex: ", ";\n "])), colors.backgroundInterface, inTrialMode ? "none" : 1);
|
|
42
|
+
});
|
|
43
|
+
export var ImporterWithContext = function () {
|
|
44
|
+
var _a = useImporterContext(), inTrialMode = _a.inTrialMode, currentStepIndex = _a.currentStepIndex, matcherSubstep = _a.matcherSubstep, templateHeaders = _a.templateHeaders, theme = _a.theme, logoURL = _a.logoURL, previewFirstTime = _a.previewFirstTime, initialRecords = _a.initialRecords, _b = _a.importerOptions, zIndex = _b.zIndex, previewMode = _b.previewMode;
|
|
45
|
+
var layoutRef = useRef(null);
|
|
46
|
+
var t = useTranslation().t;
|
|
47
|
+
useEffect(function () {
|
|
48
|
+
var _a;
|
|
49
|
+
(_a = layoutRef === null || layoutRef === void 0 ? void 0 : layoutRef.current) === null || _a === void 0 ? void 0 : _a.scrollTo(0, 0);
|
|
50
|
+
}, [currentStepIndex, matcherSubstep, layoutRef.current]);
|
|
51
|
+
var stepLabels = [
|
|
52
|
+
t("general:steps.upload"),
|
|
53
|
+
t("general:steps.match"),
|
|
54
|
+
t("general:steps.review"),
|
|
55
|
+
];
|
|
56
|
+
function renderContent() {
|
|
57
|
+
return (_jsxs(_Fragment, { children: [_jsxs(Div, { children: [previewMode && _jsx(PreviewModeBanner, {}), !previewMode && _jsx(TrialModeBanner, {}), _jsx(Stepper, { stepLabels: stepLabels, logoURL: logoURL })] }), _jsxs(Content, { children: [currentStepIndex === 0 && _jsx(Uploader, {}), currentStepIndex === 1 && _jsx(Matcher, {}), currentStepIndex === 2 && templateHeaders && _jsx(Review, {})] }), inTrialMode && (_jsx(Content, __assign({ inTrialMode: inTrialMode }, { children: _jsx(Footer, {}) })))] }));
|
|
58
|
+
}
|
|
59
|
+
var shouldShowPreviewFirstTime = previewFirstTime && previewMode;
|
|
60
|
+
return (_jsxs(ThemeProvider, __assign({ theme: theme }, { children: [_jsx(Toast, {}), _jsx(GlobalStyle, {}), _jsx(ImporterFonts, {}), templateHeaders ? (_jsx(ReviewContextProvider, __assign({ initialRecords: initialRecords }, { children: _jsx(Layout, __assign({ zIndex: zIndex, ref: layoutRef }, { children: shouldShowPreviewFirstTime ? (_jsx(PreviewFirstTime, {})) : (renderContent()) })) }))) : (_jsx(AppLoading, {}))] })));
|
|
61
|
+
};
|
|
62
|
+
var templateObject_1, templateObject_2, templateObject_3;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
+
import { useRef } from "react";
|
|
14
|
+
import { TableView } from "../../../../common/Table/TableView";
|
|
15
|
+
import { colors } from "../../../../styled/theme/colorPalette";
|
|
16
|
+
import { Div } from "../../../../styled/utils";
|
|
17
|
+
import { defaultTableHeaderHeightPx } from "../../../../common/Table/TableView/common";
|
|
18
|
+
import { getTableHeight } from "../../../common";
|
|
19
|
+
import { useImporterContext } from "../../../contexts/ImporterContextProvider";
|
|
20
|
+
import { MAX_VISIBLE_ROWS } from "../../common";
|
|
21
|
+
import { MatcherStatus } from "../../common/types";
|
|
22
|
+
import { EnumFieldMatcherContextProvider } from "../EnumFieldMatcherContext";
|
|
23
|
+
import { tableColumns } from "./tableColumns";
|
|
24
|
+
import { useTranslation } from "react-i18next";
|
|
25
|
+
export var EnumFieldMatcher = function (_a) {
|
|
26
|
+
var _b;
|
|
27
|
+
var templateHeaderLabel = _a.templateHeaderLabel;
|
|
28
|
+
var t = useTranslation("match").t;
|
|
29
|
+
var _c = useImporterContext(), enumFieldValueMatchings = _c.enumFieldValueMatchings, templateHeaders = _c.templateHeaders;
|
|
30
|
+
var isRequired = (_b = templateHeaders.find(function (th) { return th.label === templateHeaderLabel; })) === null || _b === void 0 ? void 0 : _b.required;
|
|
31
|
+
var enumFieldValueMatching = enumFieldValueMatchings[templateHeaderLabel];
|
|
32
|
+
var uploadedDataValues = Object.keys(enumFieldValueMatching);
|
|
33
|
+
var data = uploadedDataValues.map(function (uploadedDataValue) { return ({
|
|
34
|
+
uploadedDataValue: uploadedDataValue,
|
|
35
|
+
uploadedDataValueMatching: enumFieldValueMatching[uploadedDataValue],
|
|
36
|
+
status: enumFieldValueMatching[uploadedDataValue]
|
|
37
|
+
? MatcherStatus.matched
|
|
38
|
+
: MatcherStatus.unmatched,
|
|
39
|
+
}); });
|
|
40
|
+
var dataSortingOrderRef = useRef(uploadedDataValues
|
|
41
|
+
.map(function (uploadedDataValue, index) { return ({
|
|
42
|
+
index: index,
|
|
43
|
+
isMatched: !!enumFieldValueMatching[uploadedDataValue],
|
|
44
|
+
}); })
|
|
45
|
+
.sort(function (a, b) {
|
|
46
|
+
if (a.isMatched === b.isMatched) {
|
|
47
|
+
return a.index - b.index;
|
|
48
|
+
}
|
|
49
|
+
else if (a.isMatched) {
|
|
50
|
+
return -1;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
return 1;
|
|
54
|
+
}
|
|
55
|
+
}));
|
|
56
|
+
//sort data based on automatched items
|
|
57
|
+
var sortedData = dataSortingOrderRef.current.map(function (sorting) { return data[sorting.index]; });
|
|
58
|
+
var tableRowHeight = 100;
|
|
59
|
+
var tableHeight = getTableHeight({
|
|
60
|
+
headerHeight: defaultTableHeaderHeightPx,
|
|
61
|
+
rowHeight: tableRowHeight,
|
|
62
|
+
dataCount: data.length,
|
|
63
|
+
maxVisibleRows: MAX_VISIBLE_ROWS,
|
|
64
|
+
});
|
|
65
|
+
return (_jsxs(Div, { children: [_jsx(Div, __assign({ h5: true, mb: 16 }, { children: t("columns.values_for_the_column", {
|
|
66
|
+
column: "".concat(templateHeaderLabel).concat(isRequired ? "*" : ""),
|
|
67
|
+
}) })), _jsx(Div, __assign({ mb: 40 }, { children: _jsx(EnumFieldMatcherContextProvider, __assign({ templateHeaderLabel: templateHeaderLabel }, { children: _jsx(TableView, { h: tableHeight, rowHeight: tableRowHeight, data: sortedData, columns: tableColumns, bg: colors.white }) })) }))] }));
|
|
68
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const tableColumns: ({
|
|
2
|
+
header: string;
|
|
3
|
+
width: number;
|
|
4
|
+
Content: ({ uploadedDataValue }: {
|
|
5
|
+
uploadedDataValue: any;
|
|
6
|
+
}) => JSX.Element;
|
|
7
|
+
} | {
|
|
8
|
+
header: string;
|
|
9
|
+
width: number;
|
|
10
|
+
Content: ({ status }: {
|
|
11
|
+
status: any;
|
|
12
|
+
}) => JSX.Element;
|
|
13
|
+
})[];
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
13
|
+
import { Autocomplete } from "../../../../common/inputs/Autocomplete";
|
|
14
|
+
import { Div } from "../../../../styled/utils";
|
|
15
|
+
import { useImporterContext } from "../../../contexts/ImporterContextProvider";
|
|
16
|
+
import { MatchedIndicatorUI, UnmatchedIndicatorUI } from "../../common";
|
|
17
|
+
import { MatcherStatus } from "../../common/types";
|
|
18
|
+
import { useEnumFieldMatcherContext } from "../EnumFieldMatcherContext";
|
|
19
|
+
import { useTranslation } from "react-i18next";
|
|
20
|
+
export var tableColumns = [
|
|
21
|
+
{
|
|
22
|
+
header: "match:columns.your_columns",
|
|
23
|
+
width: 1,
|
|
24
|
+
Content: function (_a) {
|
|
25
|
+
var uploadedDataValue = _a.uploadedDataValue;
|
|
26
|
+
return _jsxs(Div, __assign({ body1: true }, { children: [" ", uploadedDataValue, " "] }));
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
header: "match:columns.our_columns",
|
|
31
|
+
width: 1,
|
|
32
|
+
Content: function (_a) {
|
|
33
|
+
var _b;
|
|
34
|
+
var uploadedDataValue = _a.uploadedDataValue, uploadedDataValueMatching = _a.uploadedDataValueMatching;
|
|
35
|
+
var t = useTranslation("match").t;
|
|
36
|
+
var _c = useImporterContext(), templateHeaders = _c.templateHeaders, enumFieldValueMatchings = _c.enumFieldValueMatchings, setEnumFieldValueMatchings = _c.setEnumFieldValueMatchings;
|
|
37
|
+
var templateHeaderLabel = useEnumFieldMatcherContext().templateHeaderLabel;
|
|
38
|
+
var valueOptions = (_b = templateHeaders.find(function (th) { return th.label === templateHeaderLabel; })) === null || _b === void 0 ? void 0 : _b.values;
|
|
39
|
+
var onChange = function (selected) {
|
|
40
|
+
var newEnumFieldValueMatchings = __assign({}, enumFieldValueMatchings);
|
|
41
|
+
newEnumFieldValueMatchings[templateHeaderLabel][uploadedDataValue] = selected;
|
|
42
|
+
setEnumFieldValueMatchings(newEnumFieldValueMatchings);
|
|
43
|
+
};
|
|
44
|
+
return (_jsx(Div, __assign({ w100: true }, { children: _jsx(Autocomplete, { w: "90%", placeholder: t("columns.placeholder"), onChange: onChange, placement: "bottom", value: uploadedDataValueMatching, options: valueOptions.map(function (vo) { return ({
|
|
45
|
+
value: vo,
|
|
46
|
+
label: vo,
|
|
47
|
+
}); }) }) })));
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
header: "match:columns.status",
|
|
52
|
+
width: 1,
|
|
53
|
+
Content: function (_a) {
|
|
54
|
+
var status = _a.status;
|
|
55
|
+
return (_jsx(_Fragment, { children: status === MatcherStatus.matched ? (_jsx(MatchedIndicatorUI, {})) : (_jsx(UnmatchedIndicatorUI, {})) }));
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type State = {
|
|
2
|
+
templateHeaderLabel: string;
|
|
3
|
+
};
|
|
4
|
+
type Props = {
|
|
5
|
+
templateHeaderLabel: string;
|
|
6
|
+
children: JSX.Element;
|
|
7
|
+
};
|
|
8
|
+
export declare const EnumFieldMatcherContextProvider: ({ templateHeaderLabel, children, }: Props) => JSX.Element;
|
|
9
|
+
export declare const useEnumFieldMatcherContext: () => State;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import { createContext, useContext } from "react";
|
|
14
|
+
var EnumFieldMatcherContext = createContext({});
|
|
15
|
+
export var EnumFieldMatcherContextProvider = function (_a) {
|
|
16
|
+
var templateHeaderLabel = _a.templateHeaderLabel, children = _a.children;
|
|
17
|
+
return (_jsx(EnumFieldMatcherContext.Provider, __assign({ value: { templateHeaderLabel: templateHeaderLabel } }, { children: children })));
|
|
18
|
+
};
|
|
19
|
+
export var useEnumFieldMatcherContext = function () {
|
|
20
|
+
return useContext(EnumFieldMatcherContext);
|
|
21
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const EnumFieldsMatchers: () => JSX.Element;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
13
|
+
import { Div } from "../../../styled/utils";
|
|
14
|
+
import { useImporterContext } from "../../contexts/ImporterContextProvider";
|
|
15
|
+
import { EnumFieldMatcher } from "./EnumFieldMatcher";
|
|
16
|
+
import { useTranslation } from "react-i18next";
|
|
17
|
+
export var EnumFieldsMatchers = function () {
|
|
18
|
+
var t = useTranslation("match").t;
|
|
19
|
+
var enumFieldValueMatchings = useImporterContext().enumFieldValueMatchings;
|
|
20
|
+
return (_jsxs(_Fragment, { children: [_jsxs(Div, __assign({ flexColumn: true, ml: 32 }, { children: [_jsx(Div, __assign({ h2: true, mb: 16, mt: 40 }, { children: t("title") })), _jsx(Div, __assign({ body1: true, mb: 40, maxw: 928 }, { children: t("enum_description") }))] })), _jsx(Div, __assign({ flexColumn: true, alignCenter: true, mb: 20, ml: 32, mr: 32, centered: true }, { children: Object.keys(enumFieldValueMatchings).map(function (templateHeaderLabel, index) {
|
|
21
|
+
return (_jsx(Div, __assign({ w: "100%" }, { children: _jsx(EnumFieldMatcher, { templateHeaderLabel: templateHeaderLabel }) }), index));
|
|
22
|
+
}) }))] }));
|
|
23
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
2
|
+
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
3
|
+
return cooked;
|
|
4
|
+
};
|
|
5
|
+
var __assign = (this && this.__assign) || function () {
|
|
6
|
+
__assign = Object.assign || function(t) {
|
|
7
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
8
|
+
s = arguments[i];
|
|
9
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
10
|
+
t[p] = s[p];
|
|
11
|
+
}
|
|
12
|
+
return t;
|
|
13
|
+
};
|
|
14
|
+
return __assign.apply(this, arguments);
|
|
15
|
+
};
|
|
16
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
17
|
+
import { useRef } from "react";
|
|
18
|
+
import styled from "styled-components";
|
|
19
|
+
import { defaultTableHeaderHeightPx, TableView, } from "../../../common/Table/TableView";
|
|
20
|
+
import { colors } from "../../../styled/theme";
|
|
21
|
+
import { Div } from "../../../styled/utils";
|
|
22
|
+
import { getTableHeight } from "../../common/index";
|
|
23
|
+
import { useImporterContext } from "../../contexts/ImporterContextProvider";
|
|
24
|
+
import { MAX_VISIBLE_ROWS } from "../common";
|
|
25
|
+
import { MatcherStatus } from "../common/types";
|
|
26
|
+
import { tableColumns } from "./tableColumns";
|
|
27
|
+
import { useTranslation } from "react-i18next";
|
|
28
|
+
var CardContainer = styled(Div)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n flex-direction: row;\n"], ["\n flex-direction: row;\n"])));
|
|
29
|
+
var HeaderMatcher = function () {
|
|
30
|
+
var t = useTranslation("match").t;
|
|
31
|
+
var _a = useImporterContext(), templateHeaders = _a.templateHeaders, templateHeaderMatchings = _a.templateHeaderMatchings;
|
|
32
|
+
var templateHeaderLabels = Object.keys(templateHeaderMatchings);
|
|
33
|
+
var numberOfMatchedHeaders = templateHeaderLabels.filter(function (templateHeaderLabel) { return templateHeaderMatchings[templateHeaderLabel]; }).length;
|
|
34
|
+
var data = templateHeaderLabels.map(function (templateHeaderLabel) {
|
|
35
|
+
return {
|
|
36
|
+
ourColumns: templateHeaderLabel,
|
|
37
|
+
yourColumns: templateHeaderMatchings[templateHeaderLabel],
|
|
38
|
+
status: templateHeaderMatchings[templateHeaderLabel]
|
|
39
|
+
? MatcherStatus.matched
|
|
40
|
+
: MatcherStatus.unmatched,
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
var dataSortingOrderRef = useRef(templateHeaderLabels.map(function (templateHeaderLabel, index) { return ({
|
|
44
|
+
index: index,
|
|
45
|
+
isMatched: !!templateHeaderMatchings[templateHeaderLabel],
|
|
46
|
+
}); }));
|
|
47
|
+
var sortedData = dataSortingOrderRef.current.map(function (sorting) { return data[sorting.index]; });
|
|
48
|
+
var tableRowHeight = 100;
|
|
49
|
+
var tableHeight = getTableHeight({
|
|
50
|
+
headerHeight: defaultTableHeaderHeightPx,
|
|
51
|
+
rowHeight: tableRowHeight,
|
|
52
|
+
dataCount: data.length,
|
|
53
|
+
maxVisibleRows: MAX_VISIBLE_ROWS,
|
|
54
|
+
});
|
|
55
|
+
return (_jsx(_Fragment, { children: _jsxs(Div, __assign({ flexColumn: true, h100: true }, { children: [_jsxs(Div, __assign({ ml: 32, mr: 32 }, { children: [_jsx(Div, __assign({ h2: true, mb: 16, mt: 40 }, { children: t("title") })), _jsx(Div, __assign({ body1: true, mb: 24 }, { children: t("description", {
|
|
56
|
+
numberOfMatchedHeaders: numberOfMatchedHeaders,
|
|
57
|
+
totalNumberOfHeaders: templateHeaders.length,
|
|
58
|
+
}) }))] })), _jsx(CardContainer, __assign({ dflex: true, centered: true, alignStart: true, w100: true, h100: true }, { children: _jsx(Div, __assign({ w100: true, h100: true }, { children: _jsx(TableView, { h: tableHeight, data: sortedData, rowHeight: tableRowHeight, columns: tableColumns, bg: colors.white, style: { height: "100%" } }) })) }))] })) }));
|
|
59
|
+
};
|
|
60
|
+
export { HeaderMatcher };
|
|
61
|
+
var templateObject_1;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const tableColumns: ({
|
|
2
|
+
header: string;
|
|
3
|
+
width: number;
|
|
4
|
+
Content: ({ yourColumns, ourColumns }: {
|
|
5
|
+
yourColumns: any;
|
|
6
|
+
ourColumns: any;
|
|
7
|
+
}) => JSX.Element;
|
|
8
|
+
} | {
|
|
9
|
+
header: string;
|
|
10
|
+
width: number;
|
|
11
|
+
Content: ({ status }: {
|
|
12
|
+
status: any;
|
|
13
|
+
}) => JSX.Element;
|
|
14
|
+
})[];
|