From 40a6ee9ca59896c1a14168f3f67db9be06dbd803 Mon Sep 17 00:00:00 2001 From: Braden MacDonald Date: Fri, 18 Oct 2024 11:27:10 -0700 Subject: [PATCH] feat: View for comparing published version of library block to previous (#1393) --- src/index.jsx | 8 +- .../LibraryBlock/LibraryBlock.tsx | 11 ++- src/library-authoring/LibraryBlock/index.ts | 3 +- .../CompareChangesWidget.test.tsx | 77 +++++++++++++++++++ .../CompareChangesWidget.tsx | 43 +++++++++++ .../component-comparison/messages.ts | 22 ++++++ src/library-authoring/index.tsx | 1 + .../PreviewChangesEmbed.test.tsx | 53 +++++++++++++ .../PreviewChangesEmbed.tsx | 44 +++++++++++ .../library-info/LibraryInfoHeader.test.tsx | 4 - 10 files changed, 255 insertions(+), 11 deletions(-) create mode 100644 src/library-authoring/component-comparison/CompareChangesWidget.test.tsx create mode 100644 src/library-authoring/component-comparison/CompareChangesWidget.tsx create mode 100644 src/library-authoring/component-comparison/messages.ts create mode 100644 src/library-authoring/legacy-integration/PreviewChangesEmbed.test.tsx create mode 100644 src/library-authoring/legacy-integration/PreviewChangesEmbed.tsx diff --git a/src/index.jsx b/src/index.jsx index 29d0a9ac5..933e67f40 100755 --- a/src/index.jsx +++ b/src/index.jsx @@ -16,7 +16,12 @@ import { initializeHotjar } from '@edx/frontend-enterprise-hotjar'; import { logError } from '@edx/frontend-platform/logging'; import messages from './i18n'; -import { ComponentPicker, CreateLibrary, LibraryLayout } from './library-authoring'; +import { + ComponentPicker, + CreateLibrary, + LibraryLayout, + PreviewChangesEmbed, +} from './library-authoring'; import initializeStore from './store'; import CourseAuthoringRoutes from './CourseAuthoringRoutes'; import Head from './head/Head'; @@ -56,6 +61,7 @@ const App = () => { } /> } /> } /> + } /> } /> } /> {getConfig().ENABLE_ACCESSIBILITY_PAGE === 'true' && ( diff --git a/src/library-authoring/LibraryBlock/LibraryBlock.tsx b/src/library-authoring/LibraryBlock/LibraryBlock.tsx index dd4920612..b76e2b1ae 100644 --- a/src/library-authoring/LibraryBlock/LibraryBlock.tsx +++ b/src/library-authoring/LibraryBlock/LibraryBlock.tsx @@ -4,9 +4,12 @@ import { getConfig } from '@edx/frontend-platform'; import messages from './messages'; +export type VersionSpec = 'published' | 'draft' | number; + interface LibraryBlockProps { onBlockNotification?: (event: { eventType: string; [key: string]: any }) => void; usageKey: string; + version?: VersionSpec; } /** * React component that displays an XBlock in a sandboxed IFrame. @@ -17,7 +20,7 @@ interface LibraryBlockProps { * cannot access things like the user's cookies, nor can it make GET/POST * requests as the user. However, it is allowed to call any XBlock handlers. */ -const LibraryBlock = ({ onBlockNotification, usageKey }: LibraryBlockProps) => { +export const LibraryBlock = ({ onBlockNotification, usageKey, version }: LibraryBlockProps) => { const iframeRef = useRef(null); const [iFrameHeight, setIFrameHeight] = useState(600); const studioBaseUrl = getConfig().STUDIO_BASE_URL; @@ -62,6 +65,8 @@ const LibraryBlock = ({ onBlockNotification, usageKey }: LibraryBlockProps) => { }; }, []); + const queryStr = version ? `?version=${version}` : ''; + return (
{