import { Box, CustomModalLayoutProps, Text, TextButton, } from '@wix/design-system'; import { ExportState, FiltersMap } from '@wix/bex-core'; import React, { ReactNode } from 'react'; import { ExportStepConfig } from './ExportStepConfig'; import { ExportStepProgress } from './ExportStepProgress'; import { ExportStepError } from './ExportStepError'; import { ExportStepCancel } from './ExportStepCancel'; import { getExportModalErrorProps, RenderModalError, } from './getExportModalErrorProps'; export interface GetExportModalStepProps { state: ExportState; renderError?: RenderModalError; exportModalFooter?: { text: string }; exportModalTitle?: string; onProgressModalTitle?: string; exportToCSVMessage?: string; } export function getExportModalStepProps({ state, renderError, exportModalFooter, exportModalTitle, exportToCSVMessage, onProgressModalTitle, }: GetExportModalStepProps): Partial< CustomModalLayoutProps & { children?: ReactNode; onRequestClose?: () => void } > { const { currentStep, translate: t } = state; if (currentStep === 'cancel') { return { title: t('cairo.export.cancelTheExport'), children: , primaryButtonText: t('cairo.export.cancelTheExportConfirm'), secondaryButtonText: t('cairo.export.cancelTheExportGoBack'), secondaryButtonProps: { skin: 'destructive' }, primaryButtonProps: { skin: 'destructive', disabled: false }, primaryButtonOnClick: () => state.onCancelExportVerifyButtonClick(), secondaryButtonOnClick: state.onCancelExportGoBackButtonClick, closeButtonProps: { onClick: state.onCancelExportCloseButtonClick, autoFocus: true }, onRequestClose: state.onCancelExportCloseButtonClick, }; } if (currentStep === 'config') { return { title: exportModalTitle || t('cairo.export.exportTypeQuestionTitle'), children: ( ), primaryButtonText: t('cairo.export.export'), primaryButtonOnClick: state.onExportToClick, secondaryButtonText: t('cairo.export.cancelButton'), secondaryButtonOnClick: state.onCancelClick, closeButtonProps: { onClick: state.onCloseClick, autoFocus: true }, onRequestClose: state.onCloseClick, footnote: exportModalFooter ? ( {exportModalFooter?.text} ) : null, }; } if (currentStep === 'error') { const modalProps = getExportModalErrorProps({ state, renderError }); return { title: t('cairo.export.exportFailed'), secondaryButtonText: t('cairo.export.cancelButton'), secondaryButtonOnClick: state.onFailedCancel, closeButtonProps: { onClick: state.onFailedClose, autoFocus: true }, onRequestClose: state.onFailedClose, primaryButtonText: t('Got It' as any), primaryButtonOnClick: state.onFailedClose, ...modalProps, children: ( {modalProps.children ?? ( {t('cairo.export.serverErrorMessage')} {t('cairo.export.tryAgain')} )} ), }; } // exporting return { title: onProgressModalTitle || t('cairo.export.exportingTitle'), children: , primaryButtonText: t('cairo.export.exporting'), primaryButtonProps: { disabled: true, }, closeButtonProps: { onClick: state.onExportCloseAttemptClick, autoFocus: true }, onRequestClose: state.onExportCloseAttemptClick, secondaryButtonText: t('cairo.export.cancelButton'), secondaryButtonOnClick: state.onExportSecondaryActionAttempt, }; }