import { useCallback, useMemo } from 'react'; import clsx from 'classnames'; import { Button, Intent, Position } from '@blueprintjs/core'; import { useFormikContext } from 'formik'; import { Box, FSelect, Group, Hint } from '@/components'; import { ImportFileMappingForm } from './ImportFileMappingForm'; import { EntityColumnField, useImportFileContext } from './ImportFileProvider'; import { CLASSES } from '@/constants'; import { ImportFileContainer } from './ImportFileContainer'; import { ImportStepperStep } from './_types'; import { ImportFileMapBootProvider } from './ImportFileMappingBoot'; import styles from './ImportFileMapping.module.scss'; import { getFieldKey } from './_utils'; export function ImportFileMapping() { const { importId, entityColumns } = useImportFileContext(); return (

Review and map the column headers in your csv/xlsx file with the Bigcapital fields.

{entityColumns.map((entityColumn, index) => ( ))}
); } interface ImportFileMappingGroupProps { groupKey: string; groupLabel: string; fields: any; } /** * Mapping fields group * @returns {React.ReactNode} */ function ImportFileMappingGroup({ groupKey, groupLabel, fields, }: ImportFileMappingGroupProps) { return ( {groupLabel &&

{groupLabel}

}
Bigcapital Fields Sheet Column Headers
); } interface ImportFileMappingFieldsProps { fields: EntityColumnField[]; } /** * Import mapping fields. * @returns {React.ReactNode} */ function ImportFileMappingFields({ fields }: ImportFileMappingFieldsProps) { const { sheetColumns } = useImportFileContext(); const items = useMemo( () => sheetColumns.map((column) => ({ value: column, text: column })), [sheetColumns], ); const columnMapper = useCallback( (column: EntityColumnField, index: number) => ( {column.name}{' '} {column.required && *} {column.hint && ( )} ), [items], ); const columns = useMemo( () => fields.map(columnMapper), [columnMapper, fields], ); return <>{columns}; } function ImportFileMappingFloatingActions() { const { isSubmitting } = useFormikContext(); const { setStep } = useImportFileContext(); const handleCancelBtnClick = () => { setStep(ImportStepperStep.Upload); }; return (
); }