diff --git a/src/editors/Editor.jsx b/src/editors/Editor.jsx index d1b14cb38..9236e0474 100644 --- a/src/editors/Editor.jsx +++ b/src/editors/Editor.jsx @@ -31,9 +31,19 @@ export const Editor = ({ const EditorComponent = supportedEditors[blockType]; return ( -
+
diff --git a/src/editors/__snapshots__/Editor.test.jsx.snap b/src/editors/__snapshots__/Editor.test.jsx.snap index 8c929ec63..8a314a651 100644 --- a/src/editors/__snapshots__/Editor.test.jsx.snap +++ b/src/editors/__snapshots__/Editor.test.jsx.snap @@ -3,10 +3,19 @@ exports[`Editor render presents error message if no relevant editor found and ref ready 1`] = `
TextEditor) 1`] = `

My test content @@ -78,7 +83,12 @@ exports[`EditorContainer component render snapshot: initialized. enable save and exports[`EditorContainer component render snapshot: not initialized. disable save and pass to header 1`] = `
- + {isInitialized && children} - +

- +
- +
- +
{ problemType === ProblemTypeKeys.ADVANCED && (
- +
) } @@ -161,7 +169,8 @@ SettingsWidget.propTypes = { defaultSettings: PropTypes.shape({ maxAttempts: PropTypes.number, showanswer: PropTypes.string, - showReseButton: PropTypes.bool, + showResetButton: PropTypes.bool, + rerandomize: PropTypes.string, }).isRequired, // eslint-disable-next-line settings: PropTypes.any.isRequired, diff --git a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/Randomization/__snapshots__/index.test.jsx.snap b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/Randomization/__snapshots__/index.test.jsx.snap index a9a780585..2c8432711 100644 --- a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/Randomization/__snapshots__/index.test.jsx.snap +++ b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/Randomization/__snapshots__/index.test.jsx.snap @@ -1,6 +1,58 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`RandomizationCard snapshot snapshot: renders randonmization setting card with randomization defined 1`] = ` +exports[`RandomizationCard snapshot snapshot: renders randomization setting card with default randomization 1`] = ` + +
+ {randomization, select, + null {No Python based randomization is present in this problem.} + other {Defines when to randomize the variables specified in the associated Python script. For problems that do not randomize values, specify "Never".} + } +
+ + + + + + + + +
+`; + +exports[`RandomizationCard snapshot snapshot: renders randomization setting card with randomization defined 1`] = ` @@ -52,7 +104,7 @@ exports[`RandomizationCard snapshot snapshot: renders randonmization setting car `; -exports[`RandomizationCard snapshot snapshot: renders randonmization setting card with randomization null 1`] = ` +exports[`RandomizationCard snapshot snapshot: renders randomization setting card with randomization null 1`] = ` diff --git a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/Randomization/index.jsx b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/Randomization/index.jsx index 0cb2817e4..f20845ed8 100644 --- a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/Randomization/index.jsx +++ b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/Randomization/index.jsx @@ -9,11 +9,16 @@ import { RandomizationTypesKeys, RandomizationTypes } from '../../../../../../.. export const RandomizationCard = ({ randomization, + defaultValue, updateSettings, // inject intl, }) => { - const { summary, handleChange } = useRandomizationSettingStatus({ randomization, updateSettings }); + const curretRandomization = randomization || defaultValue; + const { summary, handleChange } = useRandomizationSettingStatus({ + randomization: curretRandomization, + updateSettings, + }); return ( { @@ -48,6 +53,7 @@ export const RandomizationCard = ({ }; RandomizationCard.propTypes = { + defaultValue: PropTypes.string.isRequired, randomization: PropTypes.string.isRequired, updateSettings: PropTypes.func.isRequired, intl: intlShape.isRequired, diff --git a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/Randomization/index.test.jsx b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/Randomization/index.test.jsx index b4a062a48..c47799848 100644 --- a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/Randomization/index.test.jsx +++ b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/Randomization/index.test.jsx @@ -11,6 +11,7 @@ jest.mock('./hooks', () => ({ describe('RandomizationCard', () => { const props = { randomization: 'sOmE_vAlUE', + defaultValue: 'default_vAlUE', updateSettings: jest.fn().mockName('args.updateSettings'), intl: { formatMessage }, }; @@ -32,11 +33,14 @@ describe('RandomizationCard', () => { }); describe('snapshot', () => { - test('snapshot: renders randonmization setting card with randomization defined', () => { + test('snapshot: renders randomization setting card with randomization defined', () => { expect(shallow()).toMatchSnapshot(); }); - test('snapshot: renders randonmization setting card with randomization null', () => { + test('snapshot: renders randomization setting card with default randomization', () => { expect(shallow()).toMatchSnapshot(); }); + test('snapshot: renders randomization setting card with randomization null', () => { + expect(shallow()).toMatchSnapshot(); + }); }); }); diff --git a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/ResetCard.jsx b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/ResetCard.jsx index a4038863b..3f4d1415e 100644 --- a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/ResetCard.jsx +++ b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/ResetCard.jsx @@ -10,6 +10,7 @@ import { selectors } from '../../../../../../data/redux'; export const ResetCard = ({ showResetButton, + defaultValue, updateSettings, // inject intl, @@ -17,10 +18,11 @@ export const ResetCard = ({ const isLibrary = useSelector(selectors.app.isLibrary); const { setResetTrue, setResetFalse } = resetCardHooks(updateSettings); const advancedSettingsLink = `${useSelector(selectors.app.studioEndpointUrl)}/settings/advanced/${useSelector(selectors.app.learningContextId)}#show_reset_button`; + const currentResetButton = showResetButton !== null ? showResetButton : defaultValue; return ( @@ -37,10 +39,10 @@ export const ResetCard = ({
)} - - @@ -50,6 +52,7 @@ export const ResetCard = ({ ResetCard.propTypes = { showResetButton: PropTypes.bool.isRequired, + defaultValue: PropTypes.bool.isRequired, updateSettings: PropTypes.func.isRequired, // injected intl: intlShape.isRequired, diff --git a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/ShowAnswerCard.jsx b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/ShowAnswerCard.jsx index 5739abbed..2e92667fd 100644 --- a/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/ShowAnswerCard.jsx +++ b/src/editors/containers/ProblemEditor/components/EditProblemView/SettingsWidget/settingsComponents/ShowAnswerCard.jsx @@ -26,6 +26,8 @@ export const ShowAnswerCard = ({ showAttempts, } = useAnswerSettings(showAnswer, updateSettings); + const currentShowAnswer = showAnswer.on || defaultValue; + const showAnswerSection = ( <>
@@ -43,7 +45,7 @@ export const ShowAnswerCard = ({ {Object.values(ShowAnswerTypesKeys).map((answerType) => { @@ -79,7 +81,7 @@ export const ShowAnswerCard = ({ return ( {showAnswerSection} diff --git a/src/editors/containers/VideoEditor/components/VideoSettingsModal/components/ThumbnailWidget/__snapshots__/index.test.jsx.snap b/src/editors/containers/VideoEditor/components/VideoSettingsModal/components/ThumbnailWidget/__snapshots__/index.test.jsx.snap index 925bf5993..a1f33627b 100644 --- a/src/editors/containers/VideoEditor/components/VideoSettingsModal/components/ThumbnailWidget/__snapshots__/index.test.jsx.snap +++ b/src/editors/containers/VideoEditor/components/VideoSettingsModal/components/ThumbnailWidget/__snapshots__/index.test.jsx.snap @@ -22,7 +22,7 @@ exports[`ThumbnailWidget snapshots snapshots: renders as expected where thumbnai variant="light" > @@ -167,6 +167,15 @@ exports[`ThumbnailWidget snapshots snapshots: renders as expected with a thumbna id="authoring.videoeditor.thumbnail.error.fileSizeError" /> + + + diff --git a/src/editors/containers/VideoEditor/components/VideoSettingsModal/components/ThumbnailWidget/index.jsx b/src/editors/containers/VideoEditor/components/VideoSettingsModal/components/ThumbnailWidget/index.jsx index c8b9efe77..ce060b7d3 100644 --- a/src/editors/containers/VideoEditor/components/VideoSettingsModal/components/ThumbnailWidget/index.jsx +++ b/src/editors/containers/VideoEditor/components/VideoSettingsModal/components/ThumbnailWidget/index.jsx @@ -75,7 +75,7 @@ export const ThumbnailWidget = ({ > - {edxVideo ? null : ( + {(allowThumbnailUpload && edxVideo) ? null : ( @@ -90,7 +90,7 @@ export const ThumbnailWidget = ({ src={thumbnailSrc || thumbnail} alt={intl.formatMessage(messages.thumbnailAltText)} /> - { (allowThumbnailUpload && edxVideo) ? ( + {(allowThumbnailUpload && edxVideo) ? ( diff --git a/src/editors/containers/VideoEditor/components/VideoSettingsModal/components/ThumbnailWidget/messages.js b/src/editors/containers/VideoEditor/components/VideoSettingsModal/components/ThumbnailWidget/messages.js index f6a1112ad..e930448cb 100644 --- a/src/editors/containers/VideoEditor/components/VideoSettingsModal/components/ThumbnailWidget/messages.js +++ b/src/editors/containers/VideoEditor/components/VideoSettingsModal/components/ThumbnailWidget/messages.js @@ -24,7 +24,8 @@ const messages = defineMessages({ }, unavailableMessage: { id: 'authoring.videoeditor.thumbnail.unavailable.message', - defaultMessage: 'Select a video from your library to enable this feature', + defaultMessage: + 'Select a video from your library to enable this feature (applies only to courses that run on the edx.org site).', description: 'Message for unavailable thumbnail widget', }, uploadButtonLabel: { diff --git a/src/editors/containers/VideoEditor/components/VideoSettingsModal/components/VideoPreviewWidget/index.jsx b/src/editors/containers/VideoEditor/components/VideoSettingsModal/components/VideoPreviewWidget/index.jsx index 9cff6456e..6b8e54036 100644 --- a/src/editors/containers/VideoEditor/components/VideoSettingsModal/components/VideoPreviewWidget/index.jsx +++ b/src/editors/containers/VideoEditor/components/VideoSettingsModal/components/VideoPreviewWidget/index.jsx @@ -32,7 +32,7 @@ export const VideoPreviewWidget = ({
{intl.formatMessage(thumbnailMessages.thumbnailAltText)} { const [searchString, setSearchString] = React.useState(''); const [sortBy, setSortBy] = React.useState(sortKeys.dateNewest); - const [filterBy, setFilterBy] = React.useState([]); + const [filterBy, setFilterBy] = React.useState(filterKeys.anyStatus); const [hideSelectedVideos, setHideSelectedVideos] = React.useState(false); - const handleFilter = (key) => () => { - if (filterBy.includes(key)) { - setFilterBy(filterBy.filter(item => item !== key)); - } else { - setFilterBy([...filterBy, key]); - } - }; - return { searchString, onSearchChange: (e) => setSearchString(e.target.value), @@ -38,7 +30,9 @@ export const useSearchAndSortProps = () => { sortKeys, sortMessages, filterBy, - onFilterClick: handleFilter, + onFilterClick: (key) => () => setFilterBy(key), + filterKeys, + filterMessages, showSwitch: false, hideSelectedVideos, switchMessage: messages.hideSelectedCourseVideosSwitchLabel, @@ -54,15 +48,13 @@ export const filterListBySearch = ({ .includes(searchString.toLowerCase())) ); -export const filterListByStatus = ({ - statusFilter, - videoList, -}) => { - if (statusFilter.length === 0) { +export const filterListByStatus = ({ statusFilter, videoList }) => { + if (statusFilter === filterKeys.anyStatus) { return videoList; } - return videoList.filter(({ status }) => statusFilter.map(key => filterKeys[key]) - .includes(status)); + // TODO deal with translation mismatch because the video status is + // already translated in the backend + return videoList.filter(({ status }) => filterKeys[statusFilter] === status); }; export const filterListByHideSelectedCourse = ({ videoList }) => ( @@ -145,10 +137,14 @@ export const useVideoListProps = ({ }; }; -export const useVideoUploadHandler = () => { +export const useVideoUploadHandler = ({ replace }) => { const learningContextId = useSelector(selectors.app.learningContextId); const blockId = useSelector(selectors.app.blockId); - return () => navigateTo(`/course/${learningContextId}/editor/video_upload/${blockId}`); + const path = `/course/${learningContextId}/editor/video_upload/${blockId}`; + if (replace) { + return () => window.location.replace(path); + } + return () => navigateTo(path); }; export const useCancelHandler = () => ( @@ -181,6 +177,7 @@ export const buildVideos = ({ rawVideos }) => { export const getstatusBadgeVariant = ({ status }) => { switch (status) { + // TODO deal with translation mismatch case filterKeys.failed: return 'danger'; case filterKeys.uploading: @@ -203,7 +200,7 @@ export const useVideoProps = ({ videos }) => { inputError, selectBtnProps, } = videoList; - const fileInput = { click: useVideoUploadHandler() }; + const fileInput = { click: useVideoUploadHandler({ replace: false }) }; return { galleryError, diff --git a/src/editors/containers/VideoGallery/index.jsx b/src/editors/containers/VideoGallery/index.jsx index 0600c1334..83b1445a8 100644 --- a/src/editors/containers/VideoGallery/index.jsx +++ b/src/editors/containers/VideoGallery/index.jsx @@ -1,4 +1,5 @@ import React, { useEffect } from 'react'; +import { Image } from '@edx/paragon'; import { useSelector } from 'react-redux'; import { selectors } from '../../data/redux'; import hooks from './hooks'; @@ -6,6 +7,7 @@ import SelectionModal from '../../sharedComponents/SelectionModal'; import { acceptedImgKeys } from './utils'; import messages from './messages'; import { RequestKeys } from '../../data/constants/requests'; +import videoThumbnail from '../../data/images/videoThumbnail.svg'; export const VideoGallery = () => { const rawVideos = useSelector(selectors.app.videos); @@ -19,7 +21,7 @@ export const VideoGallery = () => { (state) => selectors.requests.isFailed(state, { requestKey: RequestKeys.uploadVideo }), ); const videos = hooks.buildVideos({ rawVideos }); - const handleVideoUpload = hooks.useVideoUploadHandler(); + const handleVideoUpload = hooks.useVideoUploadHandler({ replace: true }); useEffect(() => { // If no videos exists redirects to the video upload screen @@ -45,6 +47,14 @@ export const VideoGallery = () => { uploadError: messages.uploadVideoError, }; + const thumbnailFallback = ( + + ); + return ( { galleryError, inputError, fileInput, - galleryProps, + galleryProps: { + ...galleryProps, + thumbnailFallback, + }, searchSortProps, selectBtnProps, acceptedFiles: acceptedImgKeys, diff --git a/src/editors/containers/VideoGallery/index.test.jsx b/src/editors/containers/VideoGallery/index.test.jsx index 1ac21014d..4292c24e5 100644 --- a/src/editors/containers/VideoGallery/index.test.jsx +++ b/src/editors/containers/VideoGallery/index.test.jsx @@ -80,7 +80,7 @@ describe('VideoGallery', () => { beforeAll(() => { oldLocation = window.location; delete window.location; - window.location = { assign: jest.fn() }; + window.location = { replace: jest.fn() }; }); afterAll(() => { window.location = oldLocation; @@ -118,23 +118,23 @@ describe('VideoGallery', () => { )); }); it('navigates to video upload page when there are no videos', async () => { - expect(window.location.assign).not.toHaveBeenCalled(); + expect(window.location.replace).not.toHaveBeenCalled(); updateState({ videos: [] }); await renderComponent(); - expect(window.location.assign).toHaveBeenCalled(); + expect(window.location.replace).toHaveBeenCalled(); }); it.each([ - [/by date added \(newest\)/i, [2, 1, 3]], - [/by date added \(oldest\)/i, [3, 1, 2]], - [/by name \(ascending\)/i, [1, 2, 3]], - [/by name \(descending\)/i, [3, 2, 1]], - [/by duration \(longest\)/i, [3, 1, 2]], - [/by duration \(shortest\)/i, [2, 1, 3]], + [/newest/i, [2, 1, 3]], + [/oldest/i, [3, 1, 2]], + [/name A-Z/i, [1, 2, 3]], + [/name Z-A/i, [3, 2, 1]], + [/longest/i, [3, 1, 2]], + [/shortest/i, [2, 1, 3]], ])('videos can be sorted %s', async (sortBy, order) => { await renderComponent(); fireEvent.click(screen.getByRole('button', { - name: /by date added \(newest\)/i, + name: /By newest/i, })); fireEvent.click(screen.getByRole('link', { name: sortBy, @@ -163,13 +163,12 @@ describe('VideoGallery', () => { }], }); - await act(async () => { - fireEvent.click(screen.getByRole('button', { - name: 'Video status', - })); + act(() => { + fireEvent.click(screen.getByTestId('dropdown-filter')); }); - await act(async () => { - fireEvent.click(screen.getByRole('checkbox', { + + act(() => { + fireEvent.click(screen.getByRole('button', { name: filterBy, })); }); diff --git a/src/editors/containers/VideoGallery/messages.js b/src/editors/containers/VideoGallery/messages.js index a846b3956..2089806e7 100644 --- a/src/editors/containers/VideoGallery/messages.js +++ b/src/editors/containers/VideoGallery/messages.js @@ -25,40 +25,40 @@ export const messages = { // Sort Dropdown sortByDateNewest: { id: 'authoring.selectvideomodal.sort.datenewest.label', - defaultMessage: 'By date added (newest)', + defaultMessage: 'newest', description: 'Dropdown label for sorting by date (newest)', }, sortByDateOldest: { id: 'authoring.selectvideomodal.sort.dateoldest.label', - defaultMessage: 'By date added (oldest)', + defaultMessage: 'oldest', description: 'Dropdown label for sorting by date (oldest)', }, sortByNameAscending: { id: 'authoring.selectvideomodal.sort.nameascending.label', - defaultMessage: 'By name (ascending)', + defaultMessage: 'name A-Z', description: 'Dropdown label for sorting by name (ascending)', }, sortByNameDescending: { id: 'authoring.selectvideomodal.sort.namedescending.label', - defaultMessage: 'By name (descending)', + defaultMessage: 'name Z-A', description: 'Dropdown label for sorting by name (descending)', }, sortByDurationShortest: { id: 'authoring.selectvideomodal.sort.durationshortest.label', - defaultMessage: 'By duration (shortest)', + defaultMessage: 'shortest', description: 'Dropdown label for sorting by duration (shortest)', }, sortByDurationLongest: { id: 'authoring.selectvideomodal.sort.durationlongest.label', - defaultMessage: 'By duration (longest)', + defaultMessage: 'longest', description: 'Dropdown label for sorting by duration (longest)', }, // Filter Dropdown - filterByVideoStatusNone: { + filterByVideoStatusAny: { id: 'authoring.selectvideomodal.filter.videostatusnone.label', - defaultMessage: 'Video status', - description: 'Dropdown label for filter by video status (none)', + defaultMessage: 'Any status', + description: 'Dropdown label for no filter (any status)', }, filterByVideoStatusUploading: { id: 'authoring.selectvideomodal.filter.videostatusuploading.label', diff --git a/src/editors/containers/VideoGallery/utils.js b/src/editors/containers/VideoGallery/utils.js index 8a1373948..94a60e487 100644 --- a/src/editors/containers/VideoGallery/utils.js +++ b/src/editors/containers/VideoGallery/utils.js @@ -22,6 +22,7 @@ export const sortMessages = StrictDict({ }); export const filterKeys = StrictDict({ + anyStatus: 'anyStatus', uploading: 'Uploading', processing: 'In Progress', ready: 'Ready', @@ -29,7 +30,7 @@ export const filterKeys = StrictDict({ }); export const filterMessages = StrictDict({ - title: messages[messageKeys.filterByVideoStatusNone], + anyStatus: messages[messageKeys.filterByVideoStatusAny], uploading: messages[messageKeys.filterByVideoStatusUploading], processing: messages[messageKeys.filterByVideoStatusProcessing], ready: messages[messageKeys.filterByVideoStatusReady], diff --git a/src/editors/containers/VideoUploadEditor/VideoUploader.jsx b/src/editors/containers/VideoUploadEditor/VideoUploader.jsx index c2783fe64..8b7a73f94 100644 --- a/src/editors/containers/VideoUploadEditor/VideoUploader.jsx +++ b/src/editors/containers/VideoUploadEditor/VideoUploader.jsx @@ -8,7 +8,6 @@ import { ArrowForward, FileUpload, Close } from '@edx/paragon/icons'; import { useDispatch } from 'react-redux'; import { thunkActions } from '../../data/redux'; import * as hooks from './hooks'; -import * as editorHooks from '../EditorContainer/hooks'; import messages from './messages'; const URLUploader = () => { @@ -17,49 +16,52 @@ const URLUploader = () => { const intl = useIntl(); return (
-
- +
+
-
- {intl.formatMessage(messages.dropVideoFileHere)} - {intl.formatMessage(messages.info)} +
+ {intl.formatMessage(messages.dropVideoFileHere)} + {intl.formatMessage(messages.info)}
-
OR
-
- +
+ OR +
+
+ { event.stopPropagation(); }} onChange={(event) => { setTextInputValue(event.target.value); }} + trailingElement={( + { + event.stopPropagation(); + if (textInputValue.trim() !== '') { + onURLUpload(textInputValue); + } + }} + /> + )} /> -
- { - event.stopPropagation(); - if (textInputValue.trim() !== '') { - onURLUpload(textInputValue); - } - }} - /> -
); }; -export const VideoUploader = ({ setLoading, onClose }) => { +export const VideoUploader = ({ setLoading }) => { const dispatch = useDispatch(); const intl = useIntl(); - const handleCancel = editorHooks.handleCancel({ onClose }); + const goBack = hooks.useHistoryGoBack(); const handleProcessUpload = ({ fileData }) => { dispatch(thunkActions.video.uploadVideo({ @@ -77,7 +79,7 @@ export const VideoUploader = ({ setLoading, onClose }) => { alt={intl.formatMessage(messages.closeButtonAltText)} src={Close} iconAs={Icon} - onClick={handleCancel} + onClick={goBack} />
{ VideoUploader.propTypes = { setLoading: PropTypes.func.isRequired, - onClose: PropTypes.func.isRequired, }; export default VideoUploader; diff --git a/src/editors/containers/VideoUploadEditor/__snapshots__/VideoUploader.test.jsx.snap b/src/editors/containers/VideoUploadEditor/__snapshots__/VideoUploader.test.jsx.snap index c4307f49a..5a4f1efbc 100644 --- a/src/editors/containers/VideoUploadEditor/__snapshots__/VideoUploader.test.jsx.snap +++ b/src/editors/containers/VideoUploadEditor/__snapshots__/VideoUploader.test.jsx.snap @@ -60,11 +60,11 @@ Object { class="d-flex flex-column" >
- + Drag and drop video here or click to upload Upload MP4 or MOV files (5 GB max)
OR
-
-
- + +
@@ -218,11 +215,11 @@ Object { class="d-flex flex-column" >
- + Drag and drop video here or click to upload Upload MP4 or MOV files (5 GB max)
OR
-
-
- + +
diff --git a/src/editors/containers/VideoUploadEditor/__snapshots__/index.test.jsx.snap b/src/editors/containers/VideoUploadEditor/__snapshots__/index.test.jsx.snap index e85627dc6..62df48ed6 100644 --- a/src/editors/containers/VideoUploadEditor/__snapshots__/index.test.jsx.snap +++ b/src/editors/containers/VideoUploadEditor/__snapshots__/index.test.jsx.snap @@ -5,26 +5,69 @@ Object { "asFragment": [Function], "baseElement":
-
+
-
- +
+