* fix(deps): regenerate package-lock.json
Co-Authored-By: Claude Code <noreply@anthropic.com>
* fix(deps): regenerate package-lock.json
Moved @openedx/frontend-build from dependencies to devDependencies.
Removed direct jest devDependency which was causing ts-jest hoisting issues.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(tests): use require() for MockedPluginSlot in jest.mock
Jest hoists jest.mock() calls to the top of the file, which caused
MockedPluginSlot to be undefined when the mock factory executed.
Using require() inside the factory ensures it loads at runtime.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(types): handle nullable breakpoint types
Paragon's breakpoint types now have optional minWidth/maxWidth properties.
Added non-null assertions since these values are always defined in practice.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(tests): add IntlProvider to ContentIFrame tests
Paragon's ModalDialog now uses useIntl() (openedx/paragon#3624),
requiring an IntlProvider in the component ancestry.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(tests): await async operations in Course tests
Fixed dangling waitFor blocks that weren't awaited, causing tests
to not actually wait for async operations. Changed to properly use
await with screen.findBy*() queries.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(tests): use dynamic imports in LearnerToolsSlot tests
Jest hoists mock calls but ES imports run before the test body.
Using dynamic imports in beforeEach ensures mocks are set up
before modules are loaded.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Code <noreply@anthropic.com>
* feat: fetch exams data on the progress page
This commit adds changes to fetch the exams data associated with all subsections relevant to the progress page. Exams data is relevant to the progress page because the status of a learner's exam attempt may influence the state of their grade.
This allows children of the root ProgressPage or downstream plugin slots to access this data from the Redux store.
---------
Co-authored-by: nsprenkle <nsprenkle@2u.com>
Refactors the grade summary logic to delegate all calculation responsibilities to the backend.
Previously, the frontend was performing grade summary computations using data fetched from the API. Now, the API itself provides the fully computed grade summary, simplifying the frontend and ensuring consistent results across clients.
Additionally, a "Hidden Grades" label has been added in the grade summary table to clearly indicate sections where grades are not visible to learners.
Finally, for visibility settings that depend on the due date, this PR adds a banner on the Progress page indicating that grades are not yet released, along with the relevant due date information.
Remove @edx/reactifex package from devDependencies as it is no longer
needed. Translation extraction functionality has been verified to work
correctly without this dependency.
Co-Authored-By: Claude <noreply@anthropic.com>
The previous implementation had a race condition that sometimes prevented
XBlocks from being marked as viewed. Users had to scroll or resize the window
to trigger visibility tracking instead of having it happen once content loads.
Earlier versions of @openedx/frontend-build used on older version of
'sharp', which caused intermittent installation issues. The version of
'sharp' was updated in @openedx/frontend-build to fix these issues, so
the frontend-build version can be updated here, to fix the issues in
this project too. See
https://github.com/openedx/frontend-build/issues/664 and
https://github.com/openedx/frontend-build/pull/665 for more information.
The frontend-build dependency was updated by:
```
npm install --package-lock-only @openedx/frontend-build
```
Private-ref: https://tasks.opencraft.com/browse/BB-9953