From 11803752051df3fb161a7ed20b8184de0a6f5880 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Fern=C3=A1ndez=20de=20Alba?= Date: Wed, 26 Jan 2022 08:18:47 +0100 Subject: [PATCH 01/25] Update p.restapi to 8.20.0 and plone.volto to 4.0.0a1 and plone.rest to 2.0.0a2 (#3004) * Update p.restapi to 8.20.0 and plone.volto to 4.0.0a1 and plone.rest to 2.0.0a2 * Changekog * Use plone.volto 4.0.0a2 * Fix test for NewsItems that now is blocks enable! --- CHANGELOG.md | 2 +- Makefile | 2 +- api/buildout.cfg | 4 ++-- cypress/tests/core-sandbox/search.js | 4 +--- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 078ff3e5ce..95d31202c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,8 +11,8 @@ ### Internal - Lazyload react-beautiful-dnd @tiberiuichim - - Lazyload react-dnd @tiberiuichim +- Update p.restapi to 8.20.0 and plone.volto to 4.0.0a1 and plone.rest to 2.0.0a2 @sneridagh ## 14.4.0 (2022-01-21) diff --git a/Makefile b/Makefile index f1696dd397..5541566b73 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ MAKEFLAGS+=--no-builtin-rules INSTANCE_PORT=8080 DOCKER_IMAGE=plone/plone-backend:5.2.6 -KGS=plone.restapi==8.19.0 plone.app.iterate==4.0.2 plone.rest==2.0.0a1 plone.app.vocabularies==4.3.0 plone.volto==3.1.0a8 +KGS=plone.restapi==8.20.0 plone.volto==4.0.0a2 plone.rest==2.0.0a2 plone.app.iterate==4.0.2 plone.app.vocabularies==4.3.0 # Recipe snippets for reuse diff --git a/api/buildout.cfg b/api/buildout.cfg index 569951b27d..4196663dfa 100644 --- a/api/buildout.cfg +++ b/api/buildout.cfg @@ -74,9 +74,9 @@ eggs = ${instance:eggs} setuptools = zc.buildout = # force to latest p.restapi -plone.restapi = 8.19.0 +plone.restapi = 8.20.0 # new JSON only traversal -plone.rest = 2.0.0a1 +plone.rest = 2.0.0a2 # Using working copy support in Volto requires it plone.app.iterate = 4.0.2 # plone.volto requires it diff --git a/cypress/tests/core-sandbox/search.js b/cypress/tests/core-sandbox/search.js index 411b450575..993c8b876f 100644 --- a/cypress/tests/core-sandbox/search.js +++ b/cypress/tests/core-sandbox/search.js @@ -32,9 +32,7 @@ context('Search action tests', () => { cy.navigate('/newsitem/edit'); // Add subject - cy.get('a:contains("Categorization")') - .click() - .get('.field-wrapper-subjects input') + cy.get('.field-wrapper-subjects input') .type('garden', { force: true }) .type('{enter}'); cy.get('#toolbar-save').click(); From 3787d0b44a8926526f692dede77769e523b5aff9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20S=C3=BCss?= Date: Wed, 26 Jan 2022 09:23:34 +0100 Subject: [PATCH 02/25] VocabularyTermsWidget: Let token be editable on creation of term. (#2998) * Remove former widget variation from storybook. * Let token be editable on creation of term. * Docs: Add link to storybook. --- CHANGELOG.md | 2 + docs/source/recipes/widget.md | 5 ++ .../manage/Widgets/VocabularyTermsWidget.jsx | 48 ++++++++++++++++--- .../Widgets/VocabularyTermsWidget.stories.js | 27 +++-------- .../VocabularyTermsWidget.test.jsx.snap | 9 +--- 5 files changed, 55 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 95d31202c5..740c38d139 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ ### Feature +VocabularyTermsWidget: Token is now on creation of term editable, but stays ineditable afterwards. @ksuess + ### Bugfix ### Internal diff --git a/docs/source/recipes/widget.md b/docs/source/recipes/widget.md index 418f617ace..9198321996 100644 --- a/docs/source/recipes/widget.md +++ b/docs/source/recipes/widget.md @@ -136,6 +136,11 @@ const applyConfig = (config) => { Based on this setup, Volto will render this field with the `TokenWidget`. + +!!! tip + See [storybook](docs.voltocms.com/storybook) with available widgets. + + ## Write a new widget !!! note diff --git a/src/components/manage/Widgets/VocabularyTermsWidget.jsx b/src/components/manage/Widgets/VocabularyTermsWidget.jsx index b0642f93f1..797f977976 100644 --- a/src/components/manage/Widgets/VocabularyTermsWidget.jsx +++ b/src/components/manage/Widgets/VocabularyTermsWidget.jsx @@ -84,11 +84,11 @@ def TalkTypesVocabulary(context): import React from 'react'; import { useDispatch } from 'react-redux'; -import { findIndex, remove } from 'lodash'; +import { find, findIndex, remove } from 'lodash'; import { defineMessages, useIntl } from 'react-intl'; import { v4 as uuid } from 'uuid'; -import { Button, Segment } from 'semantic-ui-react'; +import { Button } from 'semantic-ui-react'; import { DragDropList, @@ -134,6 +134,7 @@ const VocabularyTermsWidget = (props) => { var widgetvalue = value; const dispatch = useDispatch(); const [toFocusId, setToFocusId] = React.useState(''); + const [editableToken, setEditableToken] = React.useState(''); const intl = useIntl(); React.useEffect(() => { @@ -206,6 +207,7 @@ const VocabularyTermsWidget = (props) => { items: newitems, }); setToFocusId(`field-${supportedLanguages[0]}-0-${id}-${newtoken}`); + setEditableToken(newtoken); } function swap(arr, from, to) { @@ -217,10 +219,7 @@ const VocabularyTermsWidget = (props) => { }); return ( - - -

{props.title}

-
+
)} - + ); }; From e1eba33ebfe9a50193224837a0c8b1bfd13c2485 Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Thu, 27 Jan 2022 18:25:54 +0100 Subject: [PATCH 15/25] Prepare for release --- CHANGELOG.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 03abc1cb5b..284e638390 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,14 +2,10 @@ ## 14.5.1 (unreleased) -### Breaking - ### Feature - Use `volto.config.js` as dynamic configuration for addons. It adds up to the `package.json` `addons` key, allowing dynamic load of addons (eg. via environment variables) @sneridagh -### Bugfix - ### Internal - Fix ObjectListWidget story bug caused by lazyloading dnd libraries From 470a4ac8f197fea03388a7dd3e8a16c12c75da54 Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Thu, 27 Jan 2022 18:26:25 +0100 Subject: [PATCH 16/25] Release 14.6.0 --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 284e638390..0695da1e65 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log -## 14.5.1 (unreleased) +## 14.6.0 (2022-01-27) ### Feature diff --git a/package.json b/package.json index 6098aa2425..b33af661ad 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ } ], "license": "MIT", - "version": "14.5.0", + "version": "14.6.0", "repository": { "type": "git", "url": "git@github.com:plone/volto.git" From 023b85e97b044fed57edeeca4bfcae20220a7be0 Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Thu, 27 Jan 2022 18:26:31 +0100 Subject: [PATCH 17/25] Back to development --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0695da1e65..a4167574de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Change Log +## 14.6.1 (unreleased) + +### Breaking + +### Feature + +### Bugfix + +### Internal + ## 14.6.0 (2022-01-27) ### Feature From 68114df977e1fab5916f688120666b244c895a85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Fern=C3=A1ndez=20de=20Alba?= Date: Fri, 28 Jan 2022 12:17:48 +0100 Subject: [PATCH 18/25] Look ma, no `momentjs`! (#2910) * WIP * More developments * Enable the format prop; add FormattedI18nDate story * WIP on adding relative formatted date * Rename to FormattedDate, move date utils to helpers/Utils/Date * Add impl and test for formatRelativeDate * Add support for the style * Rename to FormattedRelativeDate * Upgrade jest * Update History snapshot as it is now more correct * Add support for classNames; update snapshots; no need to mock momentjs * Allow passing the locale to date formatting utils * Try to fix problem on CI * Remove intl hack * Remove intl hack * Avoid platform differences * Add full-icu * Avoid platform differences * WIP Add support for formatToParts * Add Splitparts story * Add FormattedRelativeDate story * Add relative to date story * Add live refresh to relative date * Fix display of relative date in ContentsUploadModal * Fix display of relative date in ModerateComments * Add some test for parseDateTime * Lazyload momentjs in dates display * Use lazyload moment in RecurrenceWidget and Occurences * More lazyload momentjs * More lazyload momentjs * Update changelog * Fix use of moment lib * Update yarn.lock * Testing CI build, remove full-icu from test command * Bring back full-icu env option to make it build for node v12 Co-authored-by: Tiberiu Ichim --- CHANGELOG.md | 6 + package.json | 4 +- src/components/index.js | 2 + .../manage/Contents/Contents.test.jsx | 7 - .../manage/Contents/ContentsItem.jsx | 23 +- .../manage/Contents/ContentsUploadModal.jsx | 6 +- .../manage/Controlpanels/ModerateComments.jsx | 12 +- src/components/manage/Diff/Diff.jsx | 18 +- src/components/manage/Diff/Diff.test.jsx | 6 - src/components/manage/Diff/DiffField.jsx | 15 +- src/components/manage/Diff/DiffField.test.jsx | 6 - .../Diff/__snapshots__/Diff.test.jsx.snap | 78 +- .../__snapshots__/DiffField.test.jsx.snap | 25 +- src/components/manage/History/History.jsx | 11 +- .../manage/History/History.test.jsx | 19 +- .../__snapshots__/History.test.jsx.snap | 27 +- .../manage/Widgets/DatetimeWidget.jsx | 13 +- .../manage/Widgets/DatetimeWidget.test.jsx | 4 +- .../Widgets/RecurrenceWidget/ByDayField.jsx | 7 +- .../RecurrenceWidget/MonthOfTheYearField.jsx | 13 +- .../Widgets/RecurrenceWidget/Occurences.jsx | 12 +- .../RecurrenceWidget/RecurrenceWidget.jsx | 34 +- .../RecurrenceWidget.test.jsx | 6 + .../manage/Widgets/RecurrenceWidget/Utils.js | 3 +- .../WeekdayOfTheMonthField.jsx | 8 +- src/components/theme/Comments/Comments.jsx | 4 +- .../theme/Comments/Comments.test.jsx | 6 + .../theme/FormattedDate/FormattedDate.jsx | 42 + .../FormattedDate/FormattedDate.stories.jsx | 91 ++ .../FormattedDate/FormattedRelativeDate.jsx | 57 + .../FormattedRelativeDate.stories.jsx | 122 ++ src/components/theme/View/EventDatesInfo.jsx | 18 +- .../theme/View/EventDatesInfo.test.jsx | 6 + src/components/theme/View/EventView.test.jsx | 6 + src/helpers/Utils/Date.js | 97 ++ src/helpers/Utils/Date.test.js | 197 +++ src/helpers/Utils/Utils.js | 3 +- src/helpers/Utils/Utils.test.js | 25 + yarn.lock | 1209 ++++++++++++++++- 39 files changed, 2090 insertions(+), 158 deletions(-) create mode 100644 src/components/theme/FormattedDate/FormattedDate.jsx create mode 100644 src/components/theme/FormattedDate/FormattedDate.stories.jsx create mode 100644 src/components/theme/FormattedDate/FormattedRelativeDate.jsx create mode 100644 src/components/theme/FormattedDate/FormattedRelativeDate.stories.jsx create mode 100644 src/helpers/Utils/Date.js create mode 100644 src/helpers/Utils/Date.test.js diff --git a/CHANGELOG.md b/CHANGELOG.md index a4167574de..e29fdb016d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,10 +6,16 @@ ### Feature +- Add `` and `` components. Check their Storybook stories for details. This is part of ongoing work to minimize the use of 'deprecated' momentjs. @sneridagh @tiberiuichim + ### Bugfix ### Internal +- Upgrade jest to latest release, 27 major. @tiberiuichim +- Lazyload momentjs. `parseDateTime` helper now requires passing the momentjs library @tiberiuichim + +- Lazyload react-beautiful-dnd @tiberiuichim ## 14.6.0 (2022-01-27) ### Feature diff --git a/package.json b/package.json index b33af661ad..867cfb6844 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "build": "razzle build", "build-spa": "razzle build --type=spa", "test": "razzle test --env=jest-environment-jsdom-sixteen --maxWorkers=50%", - "test:ci": "CI=true razzle test --env=jest-environment-jsdom-sixteen", + "test:ci": "CI=true NODE_ICU_DATA=node_modules/full-icu razzle test --env=jest-environment-jsdom-sixteen", "test:husky": "CI=true yarn test --bail --findRelatedTests", "test:debug": "node --inspect node_modules/.bin/jest --runInBand", "start:prod": "NODE_ENV=production node build/server.js", @@ -414,7 +414,9 @@ "@storybook/react": "^6.3.0", "babel-loader": "^8.1.0", "crypto-random-string": "3.2.0", + "full-icu": "1.4.0", "identity-obj-proxy": "3.0.0", + "jest": "27.4.5", "jest-environment-jsdom-sixteen": "1.0.3", "react-is": "^16.13.1", "tmp": "0.2.1", diff --git a/src/components/index.js b/src/components/index.js index 824ed15e61..52701c1aed 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -198,5 +198,7 @@ export ToCSettingsSchema from '@plone/volto/components/manage/Blocks/ToC/Schema' export MaybeWrap from '@plone/volto/components/manage/MaybeWrap/MaybeWrap'; export ContentMetadataTags from '@plone/volto/components/theme/ContentMetadataTags/ContentMetadataTags'; +export FormattedDate from '@plone/volto/components/theme/FormattedDate/FormattedDate'; +export FormattedRelativeDate from '@plone/volto/components/theme/FormattedDate/FormattedRelativeDate'; export App from '@plone/volto/components/theme/App/App'; diff --git a/src/components/manage/Contents/Contents.test.jsx b/src/components/manage/Contents/Contents.test.jsx index 5e8f9f9bf7..48f01c1562 100644 --- a/src/components/manage/Contents/Contents.test.jsx +++ b/src/components/manage/Contents/Contents.test.jsx @@ -24,13 +24,6 @@ jest.mock('./ContentsUploadModal', () => jest.fn(() =>
), ); -jest.mock('moment', () => - jest.fn(() => ({ - format: jest.fn(() => 'Sunday, April 23, 2017 3:38 AM'), - fromNow: jest.fn(() => 'a few seconds ago'), - })), -); - describe('Contents', () => { it('renders a folder contents view component', () => { const store = mockStore({ diff --git a/src/components/manage/Contents/ContentsItem.jsx b/src/components/manage/Contents/ContentsItem.jsx index f77fed321a..d77bb52d2b 100644 --- a/src/components/manage/Contents/ContentsItem.jsx +++ b/src/components/manage/Contents/ContentsItem.jsx @@ -8,9 +8,8 @@ import { Button, Dropdown, Table } from 'semantic-ui-react'; import { Link } from 'react-router-dom'; import PropTypes from 'prop-types'; import { map } from 'lodash'; -import moment from 'moment'; import { useIntl, defineMessages, FormattedMessage } from 'react-intl'; -import { Icon, Circle } from '@plone/volto/components'; +import { Circle, FormattedDate, Icon } from '@plone/volto/components'; import { getContentIcon } from '@plone/volto/helpers'; import moreSVG from '@plone/volto/icons/more.svg'; import checkboxUncheckedSVG from '@plone/volto/icons/checkbox-unchecked.svg'; @@ -48,6 +47,10 @@ const messages = defineMessages({ id: 'no workflow state', defaultMessage: 'No workflow state', }, + none: { + id: 'None', + defaultMessage: 'None', + }, }); function getColor(string) { @@ -187,21 +190,13 @@ export const ContentsItemComponent = ({
)} {index.type === 'date' && ( - - ) - } - > + <> {item[index.id] !== 'None' ? ( - moment(item[index.id]).format('L') + ) : ( - + intl.formatMessage(messages.none) )} - + )} {index.type === 'array' && ( {item[index.id]?.join(', ')} diff --git a/src/components/manage/Contents/ContentsUploadModal.jsx b/src/components/manage/Contents/ContentsUploadModal.jsx index 13d0a50b2f..52e43a3ecb 100644 --- a/src/components/manage/Contents/ContentsUploadModal.jsx +++ b/src/components/manage/Contents/ContentsUploadModal.jsx @@ -20,10 +20,10 @@ import { } from 'semantic-ui-react'; import loadable from '@loadable/component'; import { concat, filter, map } from 'lodash'; -import moment from 'moment'; import filesize from 'filesize'; import { readAsDataURL } from 'promise-file-reader'; import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; +import { FormattedRelativeDate } from '@plone/volto/components'; import { createContent } from '@plone/volto/actions'; const Dropzone = loadable(() => import('react-dropzone')); @@ -180,8 +180,6 @@ class ContentsUploadModal extends Component { * @returns {string} Markup for the component. */ render() { - moment.locale(this.props.intl.locale); - return ( this.props.open && ( @@ -269,7 +267,7 @@ class ContentsUploadModal extends Component { {file.name} - {moment(file.lastModifiedDate).fromNow()} + {filesize(file.size, { round: 0 })} diff --git a/src/components/manage/Controlpanels/ModerateComments.jsx b/src/components/manage/Controlpanels/ModerateComments.jsx index 0e2f9b20d2..182ce40ae0 100644 --- a/src/components/manage/Controlpanels/ModerateComments.jsx +++ b/src/components/manage/Controlpanels/ModerateComments.jsx @@ -11,11 +11,15 @@ import { Link } from 'react-router-dom'; import { getParentUrl, Helmet } from '@plone/volto/helpers'; import { Portal } from 'react-portal'; import { Container, Button, Table } from 'semantic-ui-react'; -import moment from 'moment'; import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; import { deleteComment, searchContent } from '@plone/volto/actions'; -import { CommentEditModal, Icon, Toolbar } from '@plone/volto/components'; +import { + CommentEditModal, + FormattedRelativeDate, + Icon, + Toolbar, +} from '@plone/volto/components'; import backSVG from '@plone/volto/icons/back.svg'; @@ -230,9 +234,7 @@ class ModerateComments extends Component { {item.author_name} - - {moment(item.creation_date).fromNow()} - + {item.text.data} diff --git a/src/components/manage/Diff/Diff.jsx b/src/components/manage/Diff/Diff.jsx index cb88d6b171..0c92f31825 100644 --- a/src/components/manage/Diff/Diff.jsx +++ b/src/components/manage/Diff/Diff.jsx @@ -12,7 +12,6 @@ import { filter, isEqual, map } from 'lodash'; import { Container, Button, Dropdown, Grid, Table } from 'semantic-ui-react'; import { Link, withRouter } from 'react-router-dom'; import { Portal } from 'react-portal'; -import moment from 'moment'; import { FormattedMessage, defineMessages, injectIntl } from 'react-intl'; import qs from 'query-string'; @@ -23,7 +22,12 @@ import { getBlocksLayoutFieldname, hasBlocksData, } from '@plone/volto/helpers'; -import { DiffField, Icon, Toolbar } from '@plone/volto/components'; +import { + DiffField, + FormattedDate, + Icon, + Toolbar, +} from '@plone/volto/components'; import backSVG from '@plone/volto/icons/back.svg'; @@ -189,9 +193,13 @@ class Diff extends Component { const versions = map( filter(this.props.historyEntries, (entry) => 'version' in entry), (entry, index) => ({ - text: `${index === 0 ? 'Current' : entry.version} (${moment( - entry.time, - ).format('LLLL')}, ${entry.actor.fullname})`, + text: ( + <> + {index === 0 ? 'Current' : entry.version} ( + ,   + {entry.actor.fullname}) + + ), value: `${entry.version}`, key: `${entry.version}`, }), diff --git a/src/components/manage/Diff/Diff.test.jsx b/src/components/manage/Diff/Diff.test.jsx index d32a7d693e..9da87ed980 100644 --- a/src/components/manage/Diff/Diff.test.jsx +++ b/src/components/manage/Diff/Diff.test.jsx @@ -1,5 +1,4 @@ import React from 'react'; -// import renderer from 'react-test-renderer'; import configureStore from 'redux-mock-store'; import { Provider } from 'react-intl-redux'; import { MemoryRouter } from 'react-router-dom'; @@ -12,11 +11,6 @@ const mockStore = configureStore(); jest.mock('react-portal', () => ({ Portal: jest.fn(() =>
), })); -jest.mock('moment', () => - jest.fn(() => ({ - format: jest.fn(() => 'Sunday, April 23, 2017 3:38 AM'), - })), -); jest.mock('@plone/volto/helpers/Loadable/Loadable'); beforeAll( diff --git a/src/components/manage/Diff/DiffField.jsx b/src/components/manage/Diff/DiffField.jsx index ceaf682969..0592ee44b3 100644 --- a/src/components/manage/Diff/DiffField.jsx +++ b/src/components/manage/Diff/DiffField.jsx @@ -8,11 +8,11 @@ import React from 'react'; import { join, map } from 'lodash'; import PropTypes from 'prop-types'; import { Table } from 'semantic-ui-react'; -import moment from 'moment'; import ReactDOMServer from 'react-dom/server'; import { Provider } from 'react-intl-redux'; import { createBrowserHistory } from 'history'; import { ConnectedRouter } from 'connected-react-router'; +import { useSelector } from 'react-redux'; import { Api } from '@plone/volto/helpers'; import configureStore from '@plone/volto/store'; @@ -44,6 +44,11 @@ const DiffField = ({ schema, diffLib, }) => { + const language = useSelector((state) => state.intl.locale); + const readable_date_format = { + dateStyle: 'full', + timeStyle: 'short', + }; const diffWords = (oneStr, twoStr) => { return diffLib.diffWords(String(oneStr), String(twoStr)); }; @@ -56,8 +61,12 @@ const DiffField = ({ break; case 'datetime': parts = diffWords( - moment(one).format('LLLL'), - moment(two).format('LLLL'), + new Intl.DateTimeFormat(language, readable_date_format).format( + new Date(one), + ), + new Intl.DateTimeFormat(language, readable_date_format).format( + new Date(two), + ), ); break; case 'json': diff --git a/src/components/manage/Diff/DiffField.test.jsx b/src/components/manage/Diff/DiffField.test.jsx index 198f274589..5eb387ba1e 100644 --- a/src/components/manage/Diff/DiffField.test.jsx +++ b/src/components/manage/Diff/DiffField.test.jsx @@ -5,12 +5,6 @@ import { waitFor, render, screen } from '@testing-library/react'; import DiffField from './DiffField'; -jest.mock('moment', () => - jest.fn(() => ({ - format: jest.fn(() => 'Sunday, April 23, 2017 3:38 AM'), - })), -); - jest.mock('@plone/volto/helpers/Loadable/Loadable'); beforeAll( async () => diff --git a/src/components/manage/Diff/__snapshots__/Diff.test.jsx.snap b/src/components/manage/Diff/__snapshots__/Diff.test.jsx.snap index bea8e5e361..8c43204f66 100644 --- a/src/components/manage/Diff/__snapshots__/Diff.test.jsx.snap +++ b/src/components/manage/Diff/__snapshots__/Diff.test.jsx.snap @@ -67,7 +67,18 @@ exports[`Diff renders a diff component 1`] = ` class="divider text" role="alert" > - 0 (Sunday, April 23, 2017 3:38 AM, Web Admin) + 0 +  ( + + ,   + Web Admin + )