Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: adding a new plugin for the enterprise modal on dashboard #565

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ exports[`Dashboard snapshots there are no courses, there ARE available dashboard
test-page-title
</h1>
<Fragment>
<EnterpriseDashboardModal />
<DashboardModal />
</Fragment>
<div
data-testid="dashboard-content"
Expand Down
4 changes: 2 additions & 2 deletions src/containers/Dashboard/index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import React from 'react';

import { reduxHooks } from 'hooks';
import { RequestKeys } from 'data/constants/requests';
import EnterpriseDashboardModal from 'containers/EnterpriseDashboardModal';
import SelectSessionModal from 'containers/SelectSessionModal';
import CoursesPanel from 'containers/CoursesPanel';
import DashboardModalSlot from 'plugin-slots/DashboardModalSlot';

import LoadingView from './LoadingView';
import DashboardLayout from './DashboardLayout';
Expand All @@ -24,7 +24,7 @@ export const Dashboard = () => {
<h1 className="sr-only">{pageTitle}</h1>
{!initIsPending && (
<>
{hasAvailableDashboards && <EnterpriseDashboardModal />}
{hasAvailableDashboards && <DashboardModalSlot />}
{(hasCourses && showSelectSessionModal) && <SelectSessionModal />}
</>
)}
Expand Down
6 changes: 3 additions & 3 deletions src/containers/Dashboard/index.test.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import { shallow } from '@edx/react-unit-test-utils';

import { reduxHooks } from 'hooks';

import EnterpriseDashboardModal from 'containers/EnterpriseDashboardModal';
import SelectSessionModal from 'containers/SelectSessionModal';
import CoursesPanel from 'containers/CoursesPanel';
import DashboardModalSlot from 'plugin-slots/DashboardModalSlot';

import DashboardLayout from './DashboardLayout';
import LoadingView from './LoadingView';
Expand All @@ -20,7 +20,7 @@ jest.mock('hooks', () => ({
},
}));

jest.mock('containers/EnterpriseDashboardModal', () => 'EnterpriseDashboardModal');
jest.mock('plugin-slots/DashboardModalSlot', () => 'DashboardModalSlot');
jest.mock('containers/CoursesPanel', () => 'CoursesPanel');
jest.mock('./LoadingView', () => 'LoadingView');
jest.mock('./DashboardLayout', () => 'DashboardLayout');
Expand Down Expand Up @@ -81,7 +81,7 @@ describe('Dashboard', () => {
testContent(contentEl);
});
it(`${renderString(showEnterpriseModal)} dashbaord modal`, () => {
expect(wrapper.instance.findByType(EnterpriseDashboardModal).length)
expect(wrapper.instance.findByType(DashboardModalSlot).length)
.toEqual(showEnterpriseModal ? 1 : 0);
});
it(`${renderString(showSelectSessionModal)} select session modal`, () => {
Expand Down
File renamed without changes.

This file was deleted.

60 changes: 0 additions & 60 deletions src/containers/EnterpriseDashboardModal/index.jsx

This file was deleted.

29 changes: 0 additions & 29 deletions src/containers/EnterpriseDashboardModal/index.test.jsx

This file was deleted.

26 changes: 0 additions & 26 deletions src/containers/EnterpriseDashboardModal/messages.js

This file was deleted.

33 changes: 33 additions & 0 deletions src/plugin-slots/DashboardModalSlot/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Course Card Action Slot

### Slot ID: `dashboard_modal_slot`

## Description

This slot is used for the modal on a dashboard that directs you to the enterprise dashboard if applicable.
The following `env.config.jsx` will render the modal.

```js
import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework';
import { DashboardModal } from '@edx/frontend-plugin-learner-dashboard';

const config = {
pluginSlots: {
dashboard_modal_slot: {
plugins: [
{
op: PLUGIN_OPERATIONS.Insert,
widget: {
id: 'dashboard_modal',
type: DIRECT_PLUGIN,
priority: 60,
RenderWidget: DashboardModal,
},
},
],
}
},
}

export default config;
```
8 changes: 8 additions & 0 deletions src/plugin-slots/DashboardModalSlot/index.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import React from 'react';
import { PluginSlot } from '@openedx/frontend-plugin-framework';

const DashboardModal = () => (
<PluginSlot id="dashboard_modal_slot" />
);

export default DashboardModal;
3 changes: 2 additions & 1 deletion src/plugin-slots/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@
* [`footer_slot`](./FooterSlot/)
* [`widget_sidebar_slot`](./WidgetSidebarSlot/)
* [`course_list_slot`](./CourseListSlot/)
* [`no_courses_view_slot`](./NoCoursesViewSlot/)
* [`no_courses_view_slot`](./NoCoursesViewSlot/)
* [`dashboard_modal_slot](./DashboardModalSlot)
12 changes: 6 additions & 6 deletions src/tracking/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ export const events = StrictDict({
leaveSession: 'leaveSession',
unenrollReason: 'unenrollReason',
entitlementUnenrollReason: 'entitlementUnenrollReason',
enterpriseDashboardModalOpened: 'enterpriseDashboardModalOpened',
enterpriseDashboardModalCTAClicked: 'enterpriseDashboardModalCTAClicked',
enterpriseDashboardModalClosed: 'enterpriseDashboardModalClosed',
dashboardModalOpened: 'dashboardModalOpened',
dashboardModalCTAClicked: 'dashboardModalCTAClicked',
dashboardModalClosed: 'dashboardModalClosed',
});

const learnerPortal = 'edx.ui.enterprise.lms.dashboard.learner_portal_modal';
Expand All @@ -39,9 +39,9 @@ export const eventNames = StrictDict({
leaveSession: 'course-dashboard.leave-session',
unenrollReason: 'unenrollment_reason.selected',
entitlementUnenrollReason: 'entitlement_unenrollment_reason.selected',
enterpriseDashboardModalOpened: `${learnerPortal}.opened`,
enterpriseDashboardModalCTAClicked: `${learnerPortal}.dashboard_cta.clicked`,
enterpriseDashboardModalClosed: `${learnerPortal}.closed`,
dashboardModalOpened: `${learnerPortal}.opened`,
dashboardModalCTAClicked: `${learnerPortal}.dashboard_cta.clicked`,
dashboardModalClosed: `${learnerPortal}.closed`,
findCoursesClicked: 'edx.bi.dashboard.find_courses_button.clicked',
purchaseCredit: 'edx.bi.credit.clicked_purchase_credit',
filterClicked: 'course-dashboard.filter.clicked',
Expand Down
6 changes: 3 additions & 3 deletions src/tracking/trackers/enterpriseDashboard.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { eventNames } from '../constants';
* @return {func} - Callback that tracks the event when fired.
*/
export const modalOpened = (enterpriseUUID) => () => createEventTracker(
eventNames.enterpriseDashboardModalOpened,
eventNames.dashboardModalOpened,
{ enterpriseUUID },
);

Expand All @@ -20,7 +20,7 @@ export const modalOpened = (enterpriseUUID) => () => createEventTracker(
*/
export const modalCTAClicked = (enterpriseUUID, href) => createLinkTracker(
createEventTracker(
eventNames.enterpriseDashboardModalCTAClicked,
eventNames.dashboardModalCTAClicked,
{ enterpriseUUID },
),
href,
Expand All @@ -33,7 +33,7 @@ export const modalCTAClicked = (enterpriseUUID, href) => createLinkTracker(
* @return {func} - Callback that tracks the event when fired.
*/
export const modalClosed = (enterpriseUUID, source) => createEventTracker(
eventNames.enterpriseDashboardModalClosed,
eventNames.dashboardModalClosed,
{ enterpriseUUID, source },
);

Expand Down
6 changes: 3 additions & 3 deletions src/tracking/trackers/enterpriseDashboard.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ describe('enterpriseDashboard trackers', () => {
it('creates event tracker for dashboard modal opened event', () => {
expect(trackers.modalOpened(enterpriseUUID, source)()).toEqual(
createEventTracker(
eventNames.enterpriseDashboardModalOpened,
eventNames.dashboardModalOpened,
{ enterpriseUUID, source },
),
);
Expand All @@ -28,7 +28,7 @@ describe('enterpriseDashboard trackers', () => {
expect(href).toEqual(testHref);
expect(cb).toEqual(
createEventTracker(
eventNames.enterpriseDashboardModalCTAClicked,
eventNames.dashboardModalCTAClicked,
{ enterpriseUUID, source },
),
);
Expand All @@ -38,7 +38,7 @@ describe('enterpriseDashboard trackers', () => {
it('creates event tracker for dashboard modal closed event with close source', () => {
expect(trackers.modalClosed(enterpriseUUID, source)).toEqual(
createEventTracker(
eventNames.enterpriseDashboardModalClosed,
eventNames.dashboardModalClosed,
{ enterpriseUUID, source },
),
);
Expand Down