From 6c991c56ac4f95bdf89343039d24d9a3fbd8e87c Mon Sep 17 00:00:00 2001 From: Tiberiu Ichim Date: Thu, 4 Jan 2024 15:45:28 +0200 Subject: [PATCH 1/7] Use _self as target for base tag --- src/components/theme/BaseTag.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/theme/BaseTag.jsx b/src/components/theme/BaseTag.jsx index 94087618..c02c92b1 100644 --- a/src/components/theme/BaseTag.jsx +++ b/src/components/theme/BaseTag.jsx @@ -6,6 +6,6 @@ export default function BaseTag(props) { const baseHref = contentId ? flattenToAppURL(contentId) : null; return baseHref !== null ? ( - + ) : null; } From 2a3d8cb2dbc4eb75226c8fa2873649daa2d5c49c Mon Sep 17 00:00:00 2001 From: EEA Jenkins <@users.noreply.github.com> Date: Thu, 4 Jan 2024 14:19:27 +0000 Subject: [PATCH 2/7] Automated release 1.26.2 --- CHANGELOG.md | 2 ++ package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 39a9c693..ef8cbc7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file. Dates are d Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). +### [1.26.2](https://github.com/eea/volto-eea-website-theme/compare/1.26.1...1.26.2) - 4 January 2024 + ### [1.26.1](https://github.com/eea/volto-eea-website-theme/compare/1.26.0...1.26.1) - 14 December 2023 #### :rocket: New Features diff --git a/package.json b/package.json index f780e02c..a7ef0f27 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@eeacms/volto-eea-website-theme", - "version": "1.26.1", + "version": "1.26.2", "description": "@eeacms/volto-eea-website-theme: Volto add-on", "main": "src/index.js", "author": "European Environment Agency: IDM2 A-Team", From 069bffcf114a886690408bbc2c2909c298b5e1aa Mon Sep 17 00:00:00 2001 From: dobri1408 <50819975+dobri1408@users.noreply.github.com> Date: Tue, 9 Jan 2024 16:41:48 +0200 Subject: [PATCH 3/7] feat: Put cloneData function for slate block, in order to change the uuids of fragments - refs #261770 --- cypress/e2e/03-blocks-copypaste.cy.js | 106 ++++++++++++++++++++++++++ src/index.js | 39 +++++++++- 2 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 cypress/e2e/03-blocks-copypaste.cy.js diff --git a/cypress/e2e/03-blocks-copypaste.cy.js b/cypress/e2e/03-blocks-copypaste.cy.js new file mode 100644 index 00000000..f9088752 --- /dev/null +++ b/cypress/e2e/03-blocks-copypaste.cy.js @@ -0,0 +1,106 @@ +import { slateBeforeEach, slateAfterEach } from '../support/e2e'; + +describe('Blocks copy/paste', () => { + beforeEach(slateBeforeEach); + afterEach(slateAfterEach); + + it('Copy/paste multiple blocks', () => { + // GIVEN: A page with multiple blocks + cy.getSlate().click().type('/maps{enter}'); + + cy.get(`.block.maps .toolbar-inner .ui.input input`) + .type( + '', + ) + .type('{enter}'); + + cy.getSlateEditorAndType('Noam Avram Chomsky').contains( + 'Noam Avram Chomsky', + ); + + cy.getSlate().click(); + + // WHEN: I copy paste them + cy.getSlateTitle().focus().click().type('{shift}', { release: false }); + cy.get('.block-editor-maps').click(); + cy.get('#toolbar-copy-blocks').click(); + + cy.getSlateEditorAndType('{shift}').click(); + cy.get('#toolbar-paste-blocks').should('be.visible'); + cy.get('#toolbar-paste-blocks').click(); + + // THEN: the page will contain duplicated blocks + cy.get('.documentFirstHeading').should(($blocks) => { + expect($blocks).to.have.length(2); + }); + + cy.get('.block-editor-maps').should(($blocks) => { + expect($blocks).to.have.length(2); + }); + }); + + it('Cut/paste multiple blocks', () => { + // GIVEN: A page with multiple blocks + + cy.getSlate().click().type('/maps{enter}'); + cy.get(`.block.maps .toolbar-inner .ui.input input`) + .type( + '', + ) + .type('{enter}'); + + cy.getSlateEditorAndType('Noam Avram Chomsky').contains( + 'Noam Avram Chomsky', + ); + + cy.getSlate().click(); + + cy.getSlateTitle().focus().click().type('{shift}', { release: false }); + cy.get('.block-editor-maps').click(); + cy.get('#toolbar-cut-blocks').click(); + + cy.getSlateEditorAndType('{shift}').click(); + + cy.get('#toolbar-paste-blocks').should('be.visible'); + cy.get('#toolbar-paste-blocks').click(); + + // THEN: the page will contain only one of each blocks + cy.get('.documentFirstHeading').should(($blocks) => { + expect($blocks).to.have.length(1); + }); + + cy.get('.block-editor-maps').should(($blocks) => { + expect($blocks).to.have.length(1); + }); + }); + + it('Delete multiple blocks', () => { + // GIVEN: A page with multiple blocks + cy.getSlate().click().type('/maps{enter}'); + cy.get(`.block.maps .toolbar-inner .ui.input input`) + .type( + '', + ) + .type('{enter}'); + + cy.getSlateEditorAndType('Noam Avram Chomsky').contains( + 'Noam Avram Chomsky', + ); + + cy.getSlate().click(); + + cy.getSlateTitle().focus().type('{shift}', { release: false }); + cy.get('.block-editor-maps').click(); + cy.get('#toolbar-delete-blocks').should('be.visible'); + cy.get('#toolbar-delete-blocks').click(); + + // THEN: the page will contain none of the blocks + cy.get('.documentFirstHeading').should(($blocks) => { + expect($blocks).to.have.length(0); + }); + + cy.get('.block-editor-maps').should(($blocks) => { + expect($blocks).to.have.length(0); + }); + }); +}); diff --git a/src/index.js b/src/index.js index 39f5eced..05a9eab5 100644 --- a/src/index.js +++ b/src/index.js @@ -29,6 +29,9 @@ import installSlate from './slate'; import installReducers from './reducers'; import installMiddlewares from './middleware'; +import { nanoid } from '@plone/volto-slate/utils'; +import { v4 as uuid } from 'uuid'; + import * as eea from './config'; import React from 'react'; @@ -98,6 +101,7 @@ function tabVariationCustomization(tabs_block_variations, config) { }; return schema; }; + const oldDefaultSchemaEnhancer = defaultVariation.schemaEnhancer; defaultVariation.schemaEnhancer = (props) => { const newSchema = oldDefaultSchemaEnhancer(props); @@ -110,7 +114,6 @@ function tabVariationCustomization(tabs_block_variations, config) { ]; return newSchema; }; - const oldHorizontalSchemaEnhancer = horizontalVariation.schemaEnhancer; horizontalVariation.schemaEnhancer = (props) => { const newSchema = oldHorizontalSchemaEnhancer(props); @@ -139,6 +142,40 @@ const applyConfig = (config) => { if (config.settings?.serverConfig?.extractScripts) { config.settings.serverConfig.extractScripts.errorPages = true; } + // Set cloneData function for slate block, in order to change the uuids of fragments in the copy process + if (config.blocks?.blocksConfig?.slate) { + config.blocks.blocksConfig.slate.cloneData = (data) => { + const replaceAllUidsWithNewOnes = (value) => { + if (value?.children?.length > 0) { + const newChildren = value.children.map((childrenData) => { + if (childrenData?.data?.uid) { + return { + ...childrenData, + data: { ...childrenData.data, uid: nanoid(5) }, + }; + } + return childrenData; + }); + return { + ...value, + children: newChildren, + }; + } + return value; + }; + return [ + uuid(), + { + ...data, + value: [ + ...(data?.value || []).map((value) => + replaceAllUidsWithNewOnes(value), + ), + ], + }, + ]; + }; + } // Disable tags on View config.settings.showTags = false; From f580b16f24faacb9318402699a1b616814840d63 Mon Sep 17 00:00:00 2001 From: dobri1408 <50819975+dobri1408@users.noreply.github.com> Date: Wed, 17 Jan 2024 14:42:11 +0200 Subject: [PATCH 4/7] fix: History diff page overlap - refs #262216 --- .../components/manage/Diff/DiffField.jsx | 351 ++++++++++++++++++ .../components/theme/AppExtras/AppExtras.jsx | 27 ++ src/index.test.js | 4 +- src/reducers/index.js | 1 + 4 files changed, 381 insertions(+), 2 deletions(-) create mode 100644 src/customizations/volto/components/manage/Diff/DiffField.jsx create mode 100644 src/customizations/volto/components/theme/AppExtras/AppExtras.jsx diff --git a/src/customizations/volto/components/manage/Diff/DiffField.jsx b/src/customizations/volto/components/manage/Diff/DiffField.jsx new file mode 100644 index 00000000..7d81082d --- /dev/null +++ b/src/customizations/volto/components/manage/Diff/DiffField.jsx @@ -0,0 +1,351 @@ +/** + * Diff field component. + * @module components/manage/Diff/DiffField + */ + +import React from 'react'; +// import { diffWords as dWords } from 'diff'; +import { join, map } from 'lodash'; +import PropTypes from 'prop-types'; +import { Grid } from 'semantic-ui-react'; +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'; +import { DefaultView } from '@plone/volto/components/'; +import { serializeNodes } from '@plone/volto-slate/editor/render'; + +import { injectLazyLibs } from '@plone/volto/helpers/Loadable/Loadable'; + +/** + * Enhanced diff words utility + * @function diffWords + * @param oneStr Field one + * @param twoStr Field two + */ + +/** + * Diff field component. + * @function DiffField + * @param {*} one Field one + * @param {*} two Field two + * @param {Object} schema Field schema + * @returns {string} Markup of the component. + */ +const DiffField = ({ + one, + two, + contentOne, + contentTwo, + view, + schema, + diffLib, +}) => { + const language = useSelector((state) => state.intl.locale); + const readable_date_format = { + dateStyle: 'full', + timeStyle: 'short', + }; + const splitWords = (str) => { + if (!str) return []; + const splitedArray = []; + let elementCurent = ''; + let insideTag = false; + for (let i = 0; i < str.length; i++) + if (str[i] === '<') { + if (elementCurent) splitedArray.push(elementCurent); + elementCurent = '<'; + insideTag = true; + } else if (str[i] === '>') { + elementCurent += '>'; + splitedArray.push(elementCurent); + elementCurent = ''; + insideTag = false; + } else if (str[i] === ' ' && insideTag === false) { + elementCurent += ' '; + splitedArray.push(elementCurent); + elementCurent = ''; + } else elementCurent += str[i]; + if (elementCurent) splitedArray.push(elementCurent); + return splitedArray; + }; + + const diffWords = (oneStr, twoStr) => { + return diffLib.diffArrays(splitWords(oneStr), splitWords(twoStr)); + }; + + let parts, oneArray, twoArray; + if (schema.widget && schema.title !== 'Data sources and providers') { + switch (schema.widget) { + case 'richtext': + parts = diffWords(one?.data, two?.data); + break; + case 'datetime': + parts = diffWords( + new Intl.DateTimeFormat(language, readable_date_format) + .format(new Date(one)) + .replace('\u202F', ' '), + new Intl.DateTimeFormat(language, readable_date_format) + .format(new Date(two)) + .replace('\u202F', ' '), + ); + break; + case 'json': { + const api = new Api(); + const history = createBrowserHistory(); + const store = configureStore(window.__data, history, api); + parts = diffWords( + ReactDOMServer.renderToStaticMarkup( + + + + + , + ), + ReactDOMServer.renderToStaticMarkup( + + + + + , + ), + ); + break; + } + case 'slate': { + const api = new Api(); + const history = createBrowserHistory(); + const store = configureStore(window.__data, history, api); + parts = diffWords( + ReactDOMServer.renderToStaticMarkup( + + + {serializeNodes(one)} + + , + ), + ReactDOMServer.renderToStaticMarkup( + + + {serializeNodes(two)} + + , + ), + ); + break; + } + case 'temporal': { + if (one?.temporal?.length > 0 && two.temporal?.length > 0) { + let firstString = one.temporal.reduce((acc, cur) => { + return acc + cur?.label + ', '; + }, ''); + firstString = firstString.substring(0, firstString.length - 2); + let secondString = two.temporal.reduce((acc, cur) => { + return acc + cur?.label + ', '; + }, ''); + secondString = secondString.substring(0, secondString.length - 2); + parts = diffWords(firstString, secondString); + } + break; + } + case 'geolocation': { + if (one?.geolocation?.length > 0 && two.geolocation?.length > 0) { + let firstString = one.geolocation.reduce((acc, cur) => { + return acc + cur?.label + ', '; + }, ''); + firstString = firstString.substring(0, firstString.length - 2); + let secondString = two.geolocation.reduce((acc, cur) => { + return acc + cur?.label + ', '; + }, ''); + secondString = secondString.substring(0, secondString.length - 2); + parts = diffWords(firstString, secondString); + } + break; + } + case 'textarea': + default: + parts = diffWords(one, two); + break; + } + } else if (schema.title === 'Data sources and providers') { + if (one?.data?.length > 0 && two.data?.length > 0) { + let firstString = one.data.reduce((acc, cur) => { + return acc + cur?.title + ', ' + cur?.organisation + '
'; + }, ''); + firstString = firstString.substring(0, firstString.length - 2); + let secondString = two.data.reduce((acc, cur) => { + return acc + cur?.title + ', ' + cur?.organisation + '
'; + }, ''); + secondString = secondString.substring(0, secondString.length - 2); + parts = diffWords(firstString, secondString); + } + } else if (schema.type === 'object') { + parts = diffWords(one?.filename || one, two?.filename || two); + } else if (schema.type === 'array') { + oneArray = (one || []).map((i) => i?.title || i); + twoArray = (two || []).map((j) => j?.title || j); + parts = diffWords(oneArray, twoArray); + } else { + parts = diffWords(one?.title || one, two?.title || two); + } + + return ( + + + {schema.title} + + + {view === 'split' && ( + + + { + let combined = (part.value || []).reduce((acc, value) => { + if ( + part.removed && + !value.includes('<') && + !value.includes('>') && + !value.includes('>') && + !value.includes('${value}`; + if ( + part.added && + !value.includes('<') && + !value.includes('>') && + !value.includes('>') && + !value.includes(' + + + { + let combined = (part.value || []).reduce((acc, value) => { + if ( + part.added && + !value.includes('<') && + !value.includes('>') && + !value.includes('>') && + !value.includes('${value}`; + if ( + part.removed && + !value.includes('<') && + !value.includes('>') && + !value.includes('>') && + !value.includes(' + + + )} + {view === 'unified' && ( + + + { + let combined = (part.value || []).reduce((acc, value) => { + if ( + part.removed && + !value.includes('<') && + !value.includes('>') && + !value.includes('>') && + !value.includes('${value}`; + + if ( + part.added && + !value.includes('<') && + !value.includes('>') && + !value.includes('>') && + !value.includes('${value}`; + + return acc + value; + }, ''); + return combined; + }), + '', + ), + }} + /> + + + )} + + ); +}; + +/** + * Property types. + * @property {Object} propTypes Property types. + * @static + */ +DiffField.propTypes = { + one: PropTypes.any.isRequired, + two: PropTypes.any.isRequired, + contentOne: PropTypes.any, + contentTwo: PropTypes.any, + view: PropTypes.string.isRequired, + schema: PropTypes.shape({ + widget: PropTypes.string, + type: PropTypes.string, + title: PropTypes.string, + }).isRequired, +}; + +export default injectLazyLibs('diffLib')(DiffField); diff --git a/src/customizations/volto/components/theme/AppExtras/AppExtras.jsx b/src/customizations/volto/components/theme/AppExtras/AppExtras.jsx new file mode 100644 index 00000000..7fd492fe --- /dev/null +++ b/src/customizations/volto/components/theme/AppExtras/AppExtras.jsx @@ -0,0 +1,27 @@ +//this should be deleted when upgraded to a volto version that supports App Extras exceptions +import React from 'react'; +import { matchPath } from 'react-router'; +import config from '@plone/volto/registry'; + +const AppExtras = (props) => { + const { settings } = config; + const { appExtras = [] } = settings; + const { pathname } = props; + const active = appExtras + .map((reg) => { + const excluded = matchPath(pathname, reg.exclude); + if (excluded) return null; + const match = matchPath(pathname, reg.match); + return match ? { reg, match } : null; + }) + .filter((reg) => reg); + + return active.map(({ reg: { component, props: extraProps }, match }, i) => { + const Insert = component; + return ( + + ); + }); +}; + +export default AppExtras; diff --git a/src/index.test.js b/src/index.test.js index 34565820..5234f53d 100644 --- a/src/index.test.js +++ b/src/index.test.js @@ -144,7 +144,7 @@ describe('applyConfig', () => { { match: '', component: 'MockedDraftBackground' }, { match: '', component: 'MockedSubsiteClass' }, { match: '', component: BaseTag }, - { match: '*', component: 'MockedRemoveSchema' }, + { match: '*', exclude: '/**/diff', component: 'MockedRemoveSchema' }, ]); expect(config.settings.available_colors).toEqual(eea.colors); expect(config.settings.hasLanguageDropdown).toBe(false); @@ -303,7 +303,7 @@ describe('applyConfig', () => { { match: '', component: 'MockedDraftBackground' }, { match: '', component: 'MockedSubsiteClass' }, { match: '', component: BaseTag }, - { match: '*', component: 'MockedRemoveSchema' }, + { match: '*', exclude: '/**/diff', component: 'MockedRemoveSchema' }, ]); expect(config.settings.available_colors).toEqual(eea.colors); expect(config.settings.hasLanguageDropdown).toBe(false); diff --git a/src/reducers/index.js b/src/reducers/index.js index ad447d1d..e5c15e0b 100644 --- a/src/reducers/index.js +++ b/src/reducers/index.js @@ -9,6 +9,7 @@ export default function applyConfig(config) { ...(config.settings.appExtras || []), { match: '*', + exclude: '/**/diff', component: RemoveSchema, }, ]; From d8f81e01d9d2666e834ac92b2f34976f25156ea2 Mon Sep 17 00:00:00 2001 From: ichim-david Date: Wed, 17 Jan 2024 14:43:10 +0200 Subject: [PATCH 5/7] fix: noreferrer on links - refs #263008 --- .../manage/UniversalLink/UniversalLink.jsx | 154 ++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 src/customizations/volto/components/manage/UniversalLink/UniversalLink.jsx diff --git a/src/customizations/volto/components/manage/UniversalLink/UniversalLink.jsx b/src/customizations/volto/components/manage/UniversalLink/UniversalLink.jsx new file mode 100644 index 00000000..e764abeb --- /dev/null +++ b/src/customizations/volto/components/manage/UniversalLink/UniversalLink.jsx @@ -0,0 +1,154 @@ +/* + * UniversalLink + * @module components/UniversalLink + * Removed noreferrer from rel attribute + */ + +import React from 'react'; +import PropTypes from 'prop-types'; +import { HashLink as Link } from 'react-router-hash-link'; +import { useSelector } from 'react-redux'; +import { + flattenToAppURL, + isInternalURL, + URLUtils, +} from '@plone/volto/helpers/Url/Url'; + +import config from '@plone/volto/registry'; + +const UniversalLink = ({ + href, + item = null, + openLinkInNewTab, + download = false, + children, + className = null, + title = null, + ...props +}) => { + const token = useSelector((state) => state.userSession?.token); + + let url = href; + if (!href && item) { + if (!item['@id']) { + // eslint-disable-next-line no-console + console.error( + 'Invalid item passed to UniversalLink', + item, + props, + children, + ); + url = '#'; + } else { + //case: generic item + url = flattenToAppURL(item['@id']); + + //case: item like a Link + let remoteUrl = item.remoteUrl || item.getRemoteUrl; + if (!token && remoteUrl) { + url = remoteUrl; + } + + //case: item of type 'File' + if ( + !token && + config.settings.downloadableObjects.includes(item['@type']) + ) { + url = `${url}/@@download/file`; + } + + if ( + !token && + config.settings.viewableInBrowserObjects.includes(item['@type']) + ) { + url = `${url}/@@display-file/file`; + } + } + } + + const isExternal = !isInternalURL(url); + + const isDownload = (!isExternal && url.includes('@@download')) || download; + const isDisplayFile = + (!isExternal && url.includes('@@display-file')) || false; + + const checkedURL = URLUtils.checkAndNormalizeUrl(url); + + url = checkedURL.url; + let tag = ( + + {children} + + ); + + if (isExternal) { + tag = ( + + {children} + + ); + } else if (isDownload) { + tag = ( + + {children} + + ); + } else if (isDisplayFile) { + tag = ( + + {children} + + ); + } + return tag; +}; + +UniversalLink.propTypes = { + href: PropTypes.string, + openLinkInNewTab: PropTypes.bool, + download: PropTypes.bool, + className: PropTypes.string, + title: PropTypes.string, + item: PropTypes.shape({ + '@id': PropTypes.string.isRequired, + remoteUrl: PropTypes.string, //of plone @type 'Link' + }), + children: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.node), + PropTypes.node, + ]), +}; + +export default UniversalLink; From e7acf6dd3332c090f75a6b1f63fc772912406ec0 Mon Sep 17 00:00:00 2001 From: Alin Voinea Date: Wed, 17 Jan 2024 14:48:46 +0200 Subject: [PATCH 6/7] Release 1.27.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a7ef0f27..54c1556a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@eeacms/volto-eea-website-theme", - "version": "1.26.2", + "version": "1.27.0", "description": "@eeacms/volto-eea-website-theme: Volto add-on", "main": "src/index.js", "author": "European Environment Agency: IDM2 A-Team", From 12308783cdca7d23bf21b4a4e093b2a6cc9ba3cd Mon Sep 17 00:00:00 2001 From: EEA Jenkins <@users.noreply.github.com> Date: Wed, 17 Jan 2024 12:59:54 +0000 Subject: [PATCH 7/7] Automated release 1.27.0 --- CHANGELOG.md | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef8cbc7e..ad55ab36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,20 @@ All notable changes to this project will be documented in this file. Dates are d Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). +### [1.27.0](https://github.com/eea/volto-eea-website-theme/compare/1.26.2...1.27.0) - 17 January 2024 + +#### :rocket: New Features + +- feat: Put cloneData function for slate block, in order to change the uuids of fragments - refs #261770 [dobri1408 - [`069bffc`](https://github.com/eea/volto-eea-website-theme/commit/069bffcf114a886690408bbc2c2909c298b5e1aa)] + +#### :bug: Bug Fixes + +- fix: noreferrer on links - refs #263008 [ichim-david - [`d8f81e0`](https://github.com/eea/volto-eea-website-theme/commit/d8f81e01d9d2666e834ac92b2f34976f25156ea2)] +- fix: History diff page overlap - refs #262216 [dobri1408 - [`f580b16`](https://github.com/eea/volto-eea-website-theme/commit/f580b16f24faacb9318402699a1b616814840d63)] + +#### :hammer_and_wrench: Others + +- Release 1.27.0 [Alin Voinea - [`e7acf6d`](https://github.com/eea/volto-eea-website-theme/commit/e7acf6dd3332c090f75a6b1f63fc772912406ec0)] ### [1.26.2](https://github.com/eea/volto-eea-website-theme/compare/1.26.1...1.26.2) - 4 January 2024 ### [1.26.1](https://github.com/eea/volto-eea-website-theme/compare/1.26.0...1.26.1) - 14 December 2023 @@ -76,11 +90,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). - test: Add real image to cypress test [Alin Voinea - [`4ff591a`](https://github.com/eea/volto-eea-website-theme/commit/4ff591ae3318c9588b4e2114582c0fa6cfdf31ae)] - test: Add cypress tests for Image block styling position and align [Alin Voinea - [`7341ef7`](https://github.com/eea/volto-eea-website-theme/commit/7341ef7b92714fc0cc3ab0c31c39033e7b3e19e7)] - Revert "change(tests): commented out rss test since title block config is missing" [Alin Voinea - [`fb61191`](https://github.com/eea/volto-eea-website-theme/commit/fb611918d6ca380b89b594f283dcf9f685a4b294)] -- test: [JENKINS] Use java17 for sonarqube scanner [valentinab25 - [`6a3be30`](https://github.com/eea/volto-eea-website-theme/commit/6a3be3092589411af7808a235f76de5222fd3868)] -- test: [JENKINS] Run cypress in started frontend container [valentinab25 - [`c3978f2`](https://github.com/eea/volto-eea-website-theme/commit/c3978f23375ef066e9fd6f6c2e34ba6c1c058f69)] -- test: [JENKINS] Add cpu limit on cypress docker [valentinab25 - [`f672779`](https://github.com/eea/volto-eea-website-theme/commit/f672779e845bec9240ccc901e9f53ec80c5a1819)] -- test: [JENKINS] Increase shm-size to cypress docker [valentinab25 - [`ae5d8e3`](https://github.com/eea/volto-eea-website-theme/commit/ae5d8e3f4e04dc2808d47ce2ee886e1b23b528da)] -- test: [JENKINS] Improve cypress time [valentinab25 - [`170ff0c`](https://github.com/eea/volto-eea-website-theme/commit/170ff0c8e3b30e69479bdf1117e811fea94f1027)] ### [1.23.0](https://github.com/eea/volto-eea-website-theme/compare/1.22.1...1.23.0) - 2 November 2023 #### :rocket: New Features @@ -93,7 +102,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). #### :house: Internal changes -- chore: [JENKINS] Refactor automated testing [valentinab25 - [`f28fce3`](https://github.com/eea/volto-eea-website-theme/commit/f28fce3d1eb815f95fb9aa40de42b10b7e8e30c5)] - chore: husky, lint-staged use fixed versions [valentinab25 - [`6d15088`](https://github.com/eea/volto-eea-website-theme/commit/6d150886c5aeb2ca0b569270486e60f7cc274e2c)] - chore:volto 16 in tests, update docs, fix stylelint overrides [valentinab25 - [`20c0323`](https://github.com/eea/volto-eea-website-theme/commit/20c032380b33c0077c869a05136f93e2fb68e5d4)] @@ -279,7 +287,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). #### :house: Internal changes -- chore: [JENKINS] Deprecate circularity website [valentinab25 - [`370dcbf`](https://github.com/eea/volto-eea-website-theme/commit/370dcbfbf1a8135ce7b1b3b271b004552a631837)] #### :hammer_and_wrench: Others @@ -435,7 +442,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). #### :hammer_and_wrench: Others -- Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`6c5e2f8`](https://github.com/eea/volto-eea-website-theme/commit/6c5e2f80456e2061d9e9c15fd0a0b91b9ac70568)] ### [1.9.1](https://github.com/eea/volto-eea-website-theme/compare/1.9.0...1.9.1) - 28 February 2023 #### :bug: Bug Fixes @@ -582,7 +588,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). - For some reasons types is a string [Alin Voinea - [`3769a09`](https://github.com/eea/volto-eea-website-theme/commit/3769a0981181d5b633f3498daebbe96be8b4b833)] - Fix(redirect): o.filter - refs #157627 [Alin Voinea - [`deb23da`](https://github.com/eea/volto-eea-website-theme/commit/deb23da846444cc96539697fd798429ae0abe89e)] -- Add Sonarqube tag using advisory-board-frontend addons list [EEA Jenkins - [`f1fffc5`](https://github.com/eea/volto-eea-website-theme/commit/f1fffc5db96725440863d545580b4e76cce4b796)] ### [1.5.0](https://github.com/eea/volto-eea-website-theme/compare/1.4.2...1.5.0) - 9 January 2023 #### :hammer_and_wrench: Others @@ -616,7 +621,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). - Release 1.4.0 [Alin Voinea - [`bd42a0d`](https://github.com/eea/volto-eea-website-theme/commit/bd42a0d26e928cac5d99933194755da3db06b341)] - bump version to use as volto-eea-design-system [David Ichim - [`f4be047`](https://github.com/eea/volto-eea-website-theme/commit/f4be047328b46399b03b612d378b18aaf82e7dc1)] -- Add Sonarqube tag using advisory-board-frontend addons list [EEA Jenkins - [`9b7cfef`](https://github.com/eea/volto-eea-website-theme/commit/9b7cfefb4d34fc1c948015e491feb370f9795bd8)] - test(Jenkins): Run tests and cypress with latest canary @plone/volto [Alin Voinea - [`df252a9`](https://github.com/eea/volto-eea-website-theme/commit/df252a9bfed0bb86cadf53c59dd1603b1e2cd822)] ### [1.3.2](https://github.com/eea/volto-eea-website-theme/compare/1.3.1...1.3.2) - 16 December 2022 @@ -626,7 +630,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). #### :hammer_and_wrench: Others -- Add Sonarqube tag using cca-frontend addons list [EEA Jenkins - [`a43c658`](https://github.com/eea/volto-eea-website-theme/commit/a43c658a7920c8df95e763b9a637f38ce77eba2c)] - Better razzle.config [Tiberiu Ichim - [`81dbf48`](https://github.com/eea/volto-eea-website-theme/commit/81dbf48815fb27facb4f82c9b764540fdf188b2e)] - Better razzle.config [Tiberiu Ichim - [`7bc9da2`](https://github.com/eea/volto-eea-website-theme/commit/7bc9da2cd837ab62a95cd29979cdd9b0055b7d67)] ### [1.3.1](https://github.com/eea/volto-eea-website-theme/compare/1.3.0...1.3.1) - 28 November 2022 @@ -637,7 +640,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). #### :hammer_and_wrench: Others -- yarn 3 [Alin Voinea - [`ea7a709`](https://github.com/eea/volto-eea-website-theme/commit/ea7a7094945312776e9b6f44e371178603e92139)] ### [1.3.0](https://github.com/eea/volto-eea-website-theme/compare/1.2.0...1.3.0) - 22 November 2022 #### :rocket: New Features @@ -678,7 +680,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). - Add subsite class to body [Tiberiu Ichim - [`74d700f`](https://github.com/eea/volto-eea-website-theme/commit/74d700fbfd6249a8604762a7e4e49cce857db0f3)] - Add subsite info to header [Tiberiu Ichim - [`47daf8b`](https://github.com/eea/volto-eea-website-theme/commit/47daf8bb6374a1222040626b19d4154df7ba1b83)] - fix eslint [Miu Razvan - [`eb8d0a7`](https://github.com/eea/volto-eea-website-theme/commit/eb8d0a790bc70c0aae256c6ff35f63c4885f338e)] -- Add Sonarqube tag using circularity-frontend addons list [EEA Jenkins - [`cc578a4`](https://github.com/eea/volto-eea-website-theme/commit/cc578a413b205a8e61e091fab3a88f94cedefc89)] ### [1.1.0](https://github.com/eea/volto-eea-website-theme/compare/1.0.0...1.1.0) - 28 October 2022 #### :nail_care: Enhancements @@ -726,7 +727,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). #### :hammer_and_wrench: Others -- Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`33b56ac`](https://github.com/eea/volto-eea-website-theme/commit/33b56acb13fbaf0c5b79e8fc6e13c4b699c79c90)] ### [0.7.3](https://github.com/eea/volto-eea-website-theme/compare/0.7.2...0.7.3) - 22 September 2022 #### :hammer_and_wrench: Others @@ -994,7 +994,6 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). - Header refactor, add custom logo #5 [ichim-david - [`4950235`](https://github.com/eea/volto-eea-website-theme/commit/49502358105437cfeac3b144e6d301cb59aa2346)] - Update footer.config with new publication card component [ichim-david - [`2e38e9a`](https://github.com/eea/volto-eea-website-theme/commit/2e38e9a417f835009d60c80d4eb4b30229f55e45)] - feature(breadcrumbs): implement eea-design-system breadcrumb as Volto component #32 #7 [ichim-david - [`181af41`](https://github.com/eea/volto-eea-website-theme/commit/181af4125ce2b9ddac56dab4723cb11c26633221)] -- Add Sonarqube tag using eea-website-frontend addons list [EEA Jenkins - [`da8ceb6`](https://github.com/eea/volto-eea-website-theme/commit/da8ceb68ea68bfbc9504e48ccd4d68277f11ab9a)] - use breadcrumbs from eea-design-system [nileshgulia1 - [`db2f9e9`](https://github.com/eea/volto-eea-website-theme/commit/db2f9e9a4327420a3cce9a9903cd88549b129eab)] - Update theme.config [ichim-david - [`8eca4f4`](https://github.com/eea/volto-eea-website-theme/commit/8eca4f40397a4aeca6d39029c92db78968d37064)] - Added keyContent component to theme.config [ichim-david - [`d86f202`](https://github.com/eea/volto-eea-website-theme/commit/d86f202d0274d839487a88b51cae9a0e899beb23)] @@ -1036,5 +1035,4 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). #### :hammer_and_wrench: Others -- yarn bootstrap [Alin Voinea - [`6995e9e`](https://github.com/eea/volto-eea-website-theme/commit/6995e9e091f21fdbbdffa8a44fc0e2c626f6d46a)] - Initial commit [Alin Voinea - [`6a9c03a`](https://github.com/eea/volto-eea-website-theme/commit/6a9c03a7cebe71ca87e82cf58c42904063e9d8d3)]