import React from 'react'; import PropTypes from 'prop-types'; import { Button } from '@edx/paragon'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faChevronLeft, faChevronRight } from '@fortawesome/free-solid-svg-icons'; import { injectIntl, intlShape, isRtl, getLocale, } from '@edx/frontend-platform/i18n'; import { useSelector } from 'react-redux'; import { GetCourseExitNavigation } from '../../course-exit'; import UnitNavigationEffortEstimate from './UnitNavigationEffortEstimate'; import { useSequenceNavigationMetadata } from './hooks'; import messages from './messages'; const UnitNavigation = ({ intl, sequenceId, unitId, onClickPrevious, onClickNext, goToCourseExitPage, }) => { const { isFirstUnit, isLastUnit } = useSequenceNavigationMetadata(sequenceId, unitId); const { courseId } = useSelector(state => state.courseware); const renderNextButton = () => { const { exitActive, exitText } = GetCourseExitNavigation(courseId, intl); const buttonOnClick = isLastUnit ? goToCourseExitPage : onClickNext; const buttonText = (isLastUnit && exitText) ? exitText : intl.formatMessage(messages.nextButton); const disabled = isLastUnit && !exitActive; const nextArrow = isRtl(getLocale()) ? faChevronLeft : faChevronRight; return ( ); }; const prevArrow = isRtl(getLocale()) ? faChevronRight : faChevronLeft; return (
{renderNextButton()}
); }; UnitNavigation.propTypes = { intl: intlShape.isRequired, sequenceId: PropTypes.string.isRequired, unitId: PropTypes.string, onClickPrevious: PropTypes.func.isRequired, onClickNext: PropTypes.func.isRequired, goToCourseExitPage: PropTypes.func.isRequired, }; UnitNavigation.defaultProps = { unitId: null, }; export default injectIntl(UnitNavigation);