import { BottomSheet } from '@cloud-ru/ds-bottom-sheet'; import { extractSupportProps } from '@cloud-ru/ds-utils'; import { MouseEvent } from 'react'; import { CONTENT_STATE, DEFAULT_RELEASE_NOTES_SNAP_POINT } from '../../constants'; import { useReleaseNotesNavigation } from '../../hooks'; import { modalPredefinedLocale } from '../../locale'; import { ReleaseNotesProps } from '../../types'; import { ReleaseNotesContent } from '../ReleaseNotesContent'; import { ReleaseNotesFooter } from '../ReleaseNotesFooter'; export function MobileReleaseNotes({ open, onClose, closeOnPopstate, contentState = CONTENT_STATE.Data, items, loading, onReadLaterClick, onDataErrorRetryClick, onSlideChange, readLaterButtonProps, snapPoint = DEFAULT_RELEASE_NOTES_SNAP_POINT, ...rest }: ReleaseNotesProps) { const { t } = modalPredefinedLocale.useTranslations(); const { pageIndex, readablePageNumber, setPage, handleClose, handleReadLaterClick, handleNextPageClick, handlePrevPageClick, } = useReleaseNotesNavigation({ onClose, onReadLaterClick, onSlideChange }); const { onClick: onReadLaterButtonClick, ...readLaterButtonRest } = readLaterButtonProps ?? {}; const shouldShowFooter = contentState === CONTENT_STATE.Data && (loading || items.length > 0); const handleReadLaterButtonClick = (event: MouseEvent) => { onReadLaterButtonClick?.(event); handleReadLaterClick(); }; return ( } footer={ shouldShowFooter ? ( handleNextPageClick(items.length)} readLaterButtonProps={readLaterButtonRest} /> ) : undefined } data-content-state={contentState} data-surface='bottomSheet' {...extractSupportProps(rest)} /> ); }