@edx/frontend-app-subscription-learner-dashboard 1.11.0 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/containers/CourseCard/components/CourseCardActions/index.d.ts +3 -1
  2. package/dist/containers/CourseCard/components/CourseCardActions/index.js +4 -3
  3. package/dist/containers/CourseCard/components/CourseCardActions/index.js.map +1 -1
  4. package/dist/containers/CourseCard/components/CourseCardBanners/UpgradeBanner.d.ts +10 -0
  5. package/dist/containers/CourseCard/components/CourseCardBanners/UpgradeBanner.js +14 -0
  6. package/dist/containers/CourseCard/components/CourseCardBanners/UpgradeBanner.js.map +1 -0
  7. package/dist/containers/CourseCard/components/CourseCardBanners/index.d.ts +3 -1
  8. package/dist/containers/CourseCard/components/CourseCardBanners/index.js +10 -3
  9. package/dist/containers/CourseCard/components/CourseCardBanners/index.js.map +1 -1
  10. package/dist/containers/CourseCard/components/CourseCardBanners/messages.d.ts +16 -0
  11. package/dist/containers/CourseCard/components/CourseCardBanners/messages.js +10 -0
  12. package/dist/containers/CourseCard/components/CourseCardBanners/messages.js.map +1 -1
  13. package/dist/containers/CourseCard/components/CourseCardDetails/hooks.d.ts +2 -0
  14. package/dist/containers/CourseCard/components/CourseCardDetails/hooks.js +5 -1
  15. package/dist/containers/CourseCard/components/CourseCardDetails/hooks.js.map +1 -1
  16. package/dist/containers/CourseCard/components/CourseCardDetails/index.d.ts +3 -2
  17. package/dist/containers/CourseCard/components/CourseCardDetails/index.js +16 -4
  18. package/dist/containers/CourseCard/components/CourseCardDetails/index.js.map +1 -1
  19. package/dist/containers/CourseCard/components/CourseCardDetails/messages.d.ts +24 -0
  20. package/dist/containers/CourseCard/components/CourseCardDetails/messages.js +15 -0
  21. package/dist/containers/CourseCard/components/CourseCardDetails/messages.js.map +1 -1
  22. package/dist/containers/CourseCard/index.d.ts +3 -1
  23. package/dist/containers/CourseCard/index.js +3 -2
  24. package/dist/containers/CourseCard/index.js.map +1 -1
  25. package/dist/containers/CoursesPanel/CourseList/index.d.ts +1 -0
  26. package/dist/containers/CoursesPanel/CourseList/index.js +3 -2
  27. package/dist/containers/CoursesPanel/CourseList/index.js.map +1 -1
  28. package/dist/containers/CoursesPanel/index.js +2 -7
  29. package/dist/containers/CoursesPanel/index.js.map +1 -1
  30. package/dist/containers/CoursesPanel/messages.d.ts +1 -9
  31. package/dist/containers/CoursesPanel/messages.js +1 -6
  32. package/dist/containers/CoursesPanel/messages.js.map +1 -1
  33. package/dist/containers/Dashboard/DashboardContent.d.ts +2 -0
  34. package/dist/containers/Dashboard/DashboardContent.js +5 -0
  35. package/dist/containers/Dashboard/DashboardContent.js.map +1 -0
  36. package/dist/containers/Dashboard/DashboardTabs.js +2 -1
  37. package/dist/containers/Dashboard/DashboardTabs.js.map +1 -1
  38. package/dist/containers/Dashboard/index.js +2 -2
  39. package/dist/containers/Dashboard/index.js.map +1 -1
  40. package/dist/containers/HistoryPanel/index.d.ts +5 -0
  41. package/dist/containers/HistoryPanel/index.js +41 -0
  42. package/dist/containers/HistoryPanel/index.js.map +1 -0
  43. package/dist/containers/HistoryPanel/messages.d.ts +8 -0
  44. package/dist/containers/HistoryPanel/messages.js +10 -0
  45. package/dist/containers/HistoryPanel/messages.js.map +1 -0
  46. package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgress.js +2 -1
  47. package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgress.js.map +1 -1
  48. package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgressSidebar/ProgramProgressCircle.d.ts +4 -0
  49. package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgressSidebar/ProgramProgressCircle.js +29 -0
  50. package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgressSidebar/ProgramProgressCircle.js.map +1 -0
  51. package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgressSidebar/index.d.ts +4 -0
  52. package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgressSidebar/index.js +12 -0
  53. package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgressSidebar/index.js.map +1 -0
  54. package/dist/containers/ProgramDashboard/ProgramProgress/ProgramProgressSidebar/index.scss +63 -0
  55. package/dist/containers/ProgramDashboard/ProgramProgress/messages.d.ts +20 -0
  56. package/dist/containers/ProgramDashboard/ProgramProgress/messages.js +21 -1
  57. package/dist/containers/ProgramDashboard/ProgramProgress/messages.js.map +1 -1
  58. package/dist/containers/ProgramDashboard/data/constants.d.ts +7 -0
  59. package/dist/containers/ProgramDashboard/data/constants.js +7 -0
  60. package/dist/containers/ProgramDashboard/data/constants.js.map +1 -1
  61. package/dist/data/hooks/queryHooks.js +6 -1
  62. package/dist/data/hooks/queryHooks.js.map +1 -1
  63. package/package.json +1 -1
@@ -6,3 +6,10 @@ export declare const PROGRAM_TYPE_MAP: {
6
6
  MICROBACHELORS: string;
7
7
  MASTERS: string;
8
8
  };
9
+ export declare const PROGRAM_PROGRESS_CIRCLE_MAP: {
10
+ X_AXIS: number;
11
+ Y_AXIS: number;
12
+ CIRCLE_RADIUS: number;
13
+ CIRCLE_DEGREES: number;
14
+ STROKE_WIDTH: number;
15
+ };
@@ -6,4 +6,11 @@ export const PROGRAM_TYPE_MAP = {
6
6
  MICROBACHELORS: 'MicroBachelors',
7
7
  MASTERS: 'Masters',
8
8
  };
9
+ export const PROGRAM_PROGRESS_CIRCLE_MAP = {
10
+ X_AXIS: 22,
11
+ Y_AXIS: 22,
12
+ CIRCLE_RADIUS: 16,
13
+ CIRCLE_DEGREES: 180,
14
+ STROKE_WIDTH: 1.2,
15
+ };
9
16
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/containers/ProgramDashboard/data/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,YAAY,EAAE,cAAc;IAC5B,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,wBAAwB,EAAE,0BAA0B;IACpD,cAAc,EAAE,gBAAgB;IAChC,OAAO,EAAE,SAAS;CACnB,CAAC","sourcesContent":["export const PROGRAM_TYPE_MAP = {\n MICROMASTERS: 'MicroMasters',\n CREDIT: 'Credit',\n XSERIES: 'XSeries',\n PROFESSIONAL_CERTIFICATE: 'Professional Certificate',\n MICROBACHELORS: 'MicroBachelors',\n MASTERS: 'Masters',\n};\n"]}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/containers/ProgramDashboard/data/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,YAAY,EAAE,cAAc;IAC5B,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,wBAAwB,EAAE,0BAA0B;IACpD,cAAc,EAAE,gBAAgB;IAChC,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,EAAE;IACV,aAAa,EAAE,EAAE;IACjB,cAAc,EAAE,GAAG;IACnB,YAAY,EAAE,GAAG;CAClB,CAAC","sourcesContent":["export const PROGRAM_TYPE_MAP = {\n MICROMASTERS: 'MicroMasters',\n CREDIT: 'Credit',\n XSERIES: 'XSeries',\n PROFESSIONAL_CERTIFICATE: 'Professional Certificate',\n MICROBACHELORS: 'MicroBachelors',\n MASTERS: 'Masters',\n};\n\nexport const PROGRAM_PROGRESS_CIRCLE_MAP = {\n X_AXIS: 22,\n Y_AXIS: 22,\n CIRCLE_RADIUS: 16,\n CIRCLE_DEGREES: 180,\n STROKE_WIDTH: 1.2,\n};\n"]}
@@ -14,6 +14,10 @@ import GlobalDataContext from '../../data/contexts/GlobalDataContext';
14
14
  import { getTransformedCourseDataObject } from '../../utils/dataTransformers';
15
15
  import { learnerDashboardQueryKeys } from './queryKeys';
16
16
  import { getProgramProgressData, getProgramsListData, initializeCourseList, initializeSubsList } from '../../data/services/subs';
17
+ const getCombinedCourses = (data) => ([
18
+ ...((data === null || data === void 0 ? void 0 : data.subscriptionCourses) || []).map(course => (Object.assign(Object.assign({}, course), { isFromNonUpgradeableCourses: false }))),
19
+ ...((data === null || data === void 0 ? void 0 : data.nonUpgradeableCourses) || []).map(course => (Object.assign(Object.assign({}, course), { isFromNonUpgradeableCourses: true }))),
20
+ ]);
17
21
  const useInitializeSubsDashboard = () => {
18
22
  const { masqueradeUser } = useMasquerade();
19
23
  const queryClient = useQueryClient();
@@ -60,7 +64,8 @@ const useInitializeSubsCourseDashboard = () => {
60
64
  queryKey: learnerDashboardQueryKeys.initializeSubsCourseDashboard(masqueradeUser),
61
65
  queryFn: () => __awaiter(void 0, void 0, void 0, function* () {
62
66
  const data = yield initializeCourseList(masqueradeUser);
63
- return Object.assign(Object.assign({}, data), { coursesByCardId: getTransformedCourseDataObject((data === null || data === void 0 ? void 0 : data.subscriptionCourses) || []) });
67
+ const combinedCourses = getCombinedCourses(data);
68
+ return Object.assign(Object.assign({}, data), { coursesByCardId: getTransformedCourseDataObject(combinedCourses) });
64
69
  }),
65
70
  staleTime: 5 * 60 * 1000, // 5 minutes — dashboard data rarely changes while viewing
66
71
  retry: (failureCount, error) => {
@@ -1 +1 @@
1
- {"version":3,"file":"queryHooks.js","sourceRoot":"","sources":["../../../src/data/hooks/queryHooks.ts"],"names":[],"mappings":"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","sourcesContent":["import { useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useContext, useEffect } from 'react';\nimport { useMasquerade } from '@src/data/context';\nimport GlobalDataContext from '@src/data/contexts/GlobalDataContext';\nimport { ProgramListData, ProgramProgressData } from '@src/containers/ProgramDashboard/data/types';\nimport { getTransformedCourseDataObject } from '@src/utils/dataTransformers';\nimport { learnerDashboardQueryKeys } from './queryKeys';\nimport { getProgramProgressData, getProgramsListData, initializeCourseList, initializeSubsList } from '@src/data/services/subs';\n\nconst useInitializeSubsDashboard = () => {\n const { masqueradeUser } = useMasquerade();\n const queryClient = useQueryClient();\n const { setEmailConfirmation, setPlatformSettings } = useContext(GlobalDataContext);\n\n const query = useQuery({\n queryKey: learnerDashboardQueryKeys.initializeSubsDashboard(masqueradeUser),\n queryFn: async () => {\n const data = await initializeSubsList(masqueradeUser);\n return {\n ...data,\n };\n },\n staleTime: 5 * 60 * 1000, // 5 minutes — dashboard data rarely changes while viewing\n retry: (failureCount, error: any) => {\n // Don't retry client errors (4xx) — they won't resolve on retry\n if (error?.response?.status >= 400 && error?.response?.status < 500) return false;\n return failureCount < 3;\n },\n retryOnMount: !masqueradeUser,\n refetchOnMount: !masqueradeUser,\n });\n\n // Populate shell-level GlobalDataProvider so header widgets can access this data\n useEffect(() => {\n if (query.data && !masqueradeUser) {\n if (query.data.emailConfirmation && setEmailConfirmation) {\n setEmailConfirmation(query.data.emailConfirmation);\n }\n if (query.data.platformSettings && setPlatformSettings) {\n setPlatformSettings(query.data.platformSettings);\n }\n }\n }, [masqueradeUser, query.data, setEmailConfirmation, setPlatformSettings]);\n\n // When masquerading fails, fall back to the normal user's cached data\n let { data } = query;\n if (masqueradeUser && query.isError) {\n data = queryClient.getQueryData(learnerDashboardQueryKeys.initializeSubsDashboard(undefined));\n }\n\n return { ...query, data };\n};\n\nconst useInitializeSubsCourseDashboard = () => {\n const { masqueradeUser } = useMasquerade();\n const queryClient = useQueryClient();\n\n const query = useQuery({\n queryKey: learnerDashboardQueryKeys.initializeSubsCourseDashboard(masqueradeUser),\n queryFn: async () => {\n const data = await initializeCourseList(masqueradeUser);\n return {\n ...data,\n coursesByCardId: getTransformedCourseDataObject(data?.subscriptionCourses || []),\n };\n },\n staleTime: 5 * 60 * 1000, // 5 minutes — dashboard data rarely changes while viewing\n retry: (failureCount, error: any) => {\n // Don't retry client errors (4xx) — they won't resolve on retry\n if (error?.response?.status >= 400 && error?.response?.status < 500) return false;\n return failureCount < 3;\n },\n retryOnMount: !masqueradeUser,\n refetchOnMount: !masqueradeUser,\n });\n\n // When masquerading fails, fall back to the normal user's cached data\n let { data } = query;\n if (masqueradeUser && query.isError) {\n data = queryClient.getQueryData(learnerDashboardQueryKeys.initializeSubsCourseDashboard(undefined));\n }\n\n return { ...query, data };\n};\n\nconst useProgramsListData = () => {\n return useQuery<ProgramListData>({\n queryKey: ['programsList'],\n queryFn: getProgramsListData,\n retry: false,\n refetchOnWindowFocus: false,\n });\n};\n\nconst useProgramProgressData = (uuid: string) => {\n return useQuery<ProgramProgressData>({\n queryKey: ['programProgress', uuid],\n queryFn: () => getProgramProgressData(uuid),\n enabled: !!uuid,\n staleTime: 1000 * 60 * 5, // 5 min caching\n retry: 2,\n });\n};\n\nexport {\n useInitializeSubsDashboard,\n useInitializeSubsCourseDashboard,\n useProgramProgressData,\n useProgramsListData,\n};\n"]}
1
+ {"version":3,"file":"queryHooks.js","sourceRoot":"","sources":["../../../src/data/hooks/queryHooks.ts"],"names":[],"mappings":"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","sourcesContent":["import { useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useContext, useEffect } from 'react';\nimport { useMasquerade } from '@src/data/context';\nimport GlobalDataContext from '@src/data/contexts/GlobalDataContext';\nimport { ProgramListData, ProgramProgressData } from '@src/containers/ProgramDashboard/data/types';\nimport { getTransformedCourseDataObject } from '@src/utils/dataTransformers';\nimport { learnerDashboardQueryKeys } from './queryKeys';\nimport { getProgramProgressData, getProgramsListData, initializeCourseList, initializeSubsList } from '@src/data/services/subs';\n\nconst getCombinedCourses = (data) => ([\n ...(data?.subscriptionCourses || []).map(course => ({\n ...course,\n isFromNonUpgradeableCourses: false,\n })),\n ...(data?.nonUpgradeableCourses || []).map(course => ({\n ...course,\n isFromNonUpgradeableCourses: true,\n })),\n]);\n\nconst useInitializeSubsDashboard = () => {\n const { masqueradeUser } = useMasquerade();\n const queryClient = useQueryClient();\n const { setEmailConfirmation, setPlatformSettings } = useContext(GlobalDataContext);\n\n const query = useQuery({\n queryKey: learnerDashboardQueryKeys.initializeSubsDashboard(masqueradeUser),\n queryFn: async () => {\n const data = await initializeSubsList(masqueradeUser);\n return {\n ...data,\n };\n },\n staleTime: 5 * 60 * 1000, // 5 minutes — dashboard data rarely changes while viewing\n retry: (failureCount, error: any) => {\n // Don't retry client errors (4xx) — they won't resolve on retry\n if (error?.response?.status >= 400 && error?.response?.status < 500) return false;\n return failureCount < 3;\n },\n retryOnMount: !masqueradeUser,\n refetchOnMount: !masqueradeUser,\n });\n\n // Populate shell-level GlobalDataProvider so header widgets can access this data\n useEffect(() => {\n if (query.data && !masqueradeUser) {\n if (query.data.emailConfirmation && setEmailConfirmation) {\n setEmailConfirmation(query.data.emailConfirmation);\n }\n if (query.data.platformSettings && setPlatformSettings) {\n setPlatformSettings(query.data.platformSettings);\n }\n }\n }, [masqueradeUser, query.data, setEmailConfirmation, setPlatformSettings]);\n\n // When masquerading fails, fall back to the normal user's cached data\n let { data } = query;\n if (masqueradeUser && query.isError) {\n data = queryClient.getQueryData(learnerDashboardQueryKeys.initializeSubsDashboard(undefined));\n }\n\n return { ...query, data };\n};\n\nconst useInitializeSubsCourseDashboard = () => {\n const { masqueradeUser } = useMasquerade();\n const queryClient = useQueryClient();\n\n const query = useQuery({\n queryKey: learnerDashboardQueryKeys.initializeSubsCourseDashboard(masqueradeUser),\n queryFn: async () => {\n const data = await initializeCourseList(masqueradeUser);\n const combinedCourses = getCombinedCourses(data);\n return {\n ...data,\n coursesByCardId: getTransformedCourseDataObject(combinedCourses),\n };\n },\n staleTime: 5 * 60 * 1000, // 5 minutes — dashboard data rarely changes while viewing\n retry: (failureCount, error: any) => {\n // Don't retry client errors (4xx) — they won't resolve on retry\n if (error?.response?.status >= 400 && error?.response?.status < 500) return false;\n return failureCount < 3;\n },\n retryOnMount: !masqueradeUser,\n refetchOnMount: !masqueradeUser,\n });\n\n // When masquerading fails, fall back to the normal user's cached data\n let { data } = query;\n if (masqueradeUser && query.isError) {\n data = queryClient.getQueryData(learnerDashboardQueryKeys.initializeSubsCourseDashboard(undefined));\n }\n\n return { ...query, data };\n};\n\nconst useProgramsListData = () => {\n return useQuery<ProgramListData>({\n queryKey: ['programsList'],\n queryFn: getProgramsListData,\n retry: false,\n refetchOnWindowFocus: false,\n });\n};\n\nconst useProgramProgressData = (uuid: string) => {\n return useQuery<ProgramProgressData>({\n queryKey: ['programProgress', uuid],\n queryFn: () => getProgramProgressData(uuid),\n enabled: !!uuid,\n staleTime: 1000 * 60 * 5, // 5 min caching\n retry: 2,\n });\n};\n\nexport {\n useInitializeSubsDashboard,\n useInitializeSubsCourseDashboard,\n useProgramProgressData,\n useProgramsListData,\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edx/frontend-app-subscription-learner-dashboard",
3
- "version": "1.11.0",
3
+ "version": "1.12.0",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",