From 65096fde0e99c46a7e8de2693b10e8d8f11612cf Mon Sep 17 00:00:00 2001 From: Muhammad Anas <88967643+Anas12091101@users.noreply.github.com> Date: Sat, 28 Feb 2026 04:37:41 +0500 Subject: [PATCH] feat: add card in Pages and Resources to allow hiding the dates tab (#2834) --- package-lock.json | 21 ++++++++++++++ package.json | 1 + plugins/course-apps/dates/Settings.tsx | 29 +++++++++++++++++++ plugins/course-apps/dates/messages.ts | 26 +++++++++++++++++ plugins/course-apps/dates/package.json | 17 +++++++++++ src/pages-and-resources/SettingsComponent.jsx | 2 +- 6 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 plugins/course-apps/dates/Settings.tsx create mode 100644 plugins/course-apps/dates/messages.ts create mode 100644 plugins/course-apps/dates/package.json diff --git a/package-lock.json b/package-lock.json index 9ddef6959..9eb282234 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,6 +27,7 @@ "@edx/frontend-platform": "^8.4.0", "@edx/openedx-atlas": "^0.7.0", "@openedx-plugins/course-app-calculator": "file:plugins/course-apps/calculator", + "@openedx-plugins/course-app-dates": "file:plugins/course-apps/dates", "@openedx-plugins/course-app-edxnotes": "file:plugins/course-apps/edxnotes", "@openedx-plugins/course-app-learning_assistant": "file:plugins/course-apps/learning_assistant", "@openedx-plugins/course-app-live": "file:plugins/course-apps/live", @@ -5159,6 +5160,10 @@ "resolved": "plugins/course-apps/calculator", "link": true }, + "node_modules/@openedx-plugins/course-app-dates": { + "resolved": "plugins/course-apps/dates", + "link": true + }, "node_modules/@openedx-plugins/course-app-edxnotes": { "resolved": "plugins/course-apps/edxnotes", "link": true @@ -24716,6 +24721,22 @@ } } }, + "plugins/course-apps/dates": { + "name": "@openedx-plugins/course-app-dates", + "version": "0.1.0", + "peerDependencies": { + "@edx/frontend-app-authoring": "*", + "@edx/frontend-platform": "*", + "@openedx/paragon": "*", + "prop-types": "*", + "react": "*" + }, + "peerDependenciesMeta": { + "@edx/frontend-app-authoring": { + "optional": true + } + } + }, "plugins/course-apps/edxnotes": { "name": "@openedx-plugins/course-app-edxnotes", "version": "0.1.0", diff --git a/package.json b/package.json index fc7cb9d45..5f9be98ef 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "@edx/frontend-platform": "^8.4.0", "@edx/openedx-atlas": "^0.7.0", "@openedx-plugins/course-app-calculator": "file:plugins/course-apps/calculator", + "@openedx-plugins/course-app-dates": "file:plugins/course-apps/dates", "@openedx-plugins/course-app-edxnotes": "file:plugins/course-apps/edxnotes", "@openedx-plugins/course-app-learning_assistant": "file:plugins/course-apps/learning_assistant", "@openedx-plugins/course-app-live": "file:plugins/course-apps/live", diff --git a/plugins/course-apps/dates/Settings.tsx b/plugins/course-apps/dates/Settings.tsx new file mode 100644 index 000000000..50841ab01 --- /dev/null +++ b/plugins/course-apps/dates/Settings.tsx @@ -0,0 +1,29 @@ +import React from 'react'; +import { useIntl } from '@edx/frontend-platform/i18n'; + +import AppSettingsModal from 'CourseAuthoring/pages-and-resources/app-settings-modal/AppSettingsModal'; +import messages from './messages'; + +type DatesSettingsProps = { + onClose: () => void; +}; + +const DatesSettings: React.FC = ({ onClose }) => { + const intl = useIntl(); + + return ( + true} + /> + ); +}; + +export default DatesSettings; diff --git a/plugins/course-apps/dates/messages.ts b/plugins/course-apps/dates/messages.ts new file mode 100644 index 000000000..3f76cc7f2 --- /dev/null +++ b/plugins/course-apps/dates/messages.ts @@ -0,0 +1,26 @@ +import { defineMessages } from '@edx/frontend-platform/i18n'; + +const messages = defineMessages({ + heading: { + id: 'course-authoring.pages-resources.dates.heading', + defaultMessage: 'Configure dates', + description: 'Heading for the Dates settings modal shown in Pages & Resources.', + }, + enableAppLabel: { + id: 'course-authoring.pages-resources.dates.enable-app.label', + defaultMessage: 'Dates', + description: 'Label for the toggle that enables the Dates experience.', + }, + enableAppHelp: { + id: 'course-authoring.pages-resources.dates.enable-app.help', + defaultMessage: 'Show the Dates tab in course navigation, where learners can view important course dates.', + description: 'Helper text explaining what enabling the Dates experience does.', + }, + learnMore: { + id: 'course-authoring.pages-resources.dates.learn-more', + defaultMessage: 'Learn more about dates', + description: 'Link text that leads to documentation about the Dates experience.', + }, +}); + +export default messages; diff --git a/plugins/course-apps/dates/package.json b/plugins/course-apps/dates/package.json new file mode 100644 index 000000000..f3678afe1 --- /dev/null +++ b/plugins/course-apps/dates/package.json @@ -0,0 +1,17 @@ +{ + "name": "@openedx-plugins/course-app-dates", + "version": "0.1.0", + "description": "Dates configuration for courses using it", + "peerDependencies": { + "@edx/frontend-app-authoring": "*", + "@edx/frontend-platform": "*", + "@openedx/paragon": "*", + "prop-types": "*", + "react": "*" + }, + "peerDependenciesMeta": { + "@edx/frontend-app-authoring": { + "optional": true + } + } +} diff --git a/src/pages-and-resources/SettingsComponent.jsx b/src/pages-and-resources/SettingsComponent.jsx index 4600d17ef..c612565e1 100644 --- a/src/pages-and-resources/SettingsComponent.jsx +++ b/src/pages-and-resources/SettingsComponent.jsx @@ -17,7 +17,7 @@ const SettingsComponent = ({ url }) => { const LazyLoadedComponent = React.useMemo( () => React.lazy(() => - import(`@openedx-plugins/course-app-${appId}/Settings.jsx`).catch((err) => { // eslint-disable-line + import(`@openedx-plugins/course-app-${appId}/Settings`).catch((err) => { // eslint-disable-line // If we couldn't load this plugin, log the details to the console. console.trace(err); // eslint-disable-line no-console return { default: PluginLoadFailedError };