diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index 801409da97..08763d2f3a 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -31,7 +31,9 @@ jobs:
run: pip install virtualenv
- name: pip install requirements
- run: pip install -r requirements-docs.txt
+ run: |
+ pip install -r requirements-docs.txt
+ sudo snap install --edge vale
- name: Check for broken links
run: make docs-linkcheckbroken
@@ -39,13 +41,8 @@ jobs:
- name: Build HTML documentation
run: make docs-html
- # Disable GHA vale checking, it started to fail with a gazillion of
- # violations. We need to review it closely
- # - uses: errata-ai/vale-action@reviewdog
- # with:
- # # debug: true
- # files: all
- # env:
- # # Required, set by GitHub actions automatically:
- # # https://docs.github.com/en/actions/security-guides/automatic-token-authentication#about-the-github_token-secret
- # GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
+ - name: Run vale
+ run: |
+ git clone https://github.com/errata-ai/Microsoft.git
+ cp -r ./Microsoft/Microsoft ./styles
+ vale --no-exit ./docs
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 606904badb..379f7e81bd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,20 @@
+## 17.0.1 (2023-10-03)
+
+### Bugfix
+
+- issue #5126 a11y for checkboxes on the sharing page @Wagner3UB [#5201](https://github.com/plone/volto/issues/5201)
+- Adjust DNS resolution to prefer IPv4 addresses when both IPv4 and IPv6 are resolved. @davisagli [#5261](https://github.com/plone/volto/issues/5261)
+
+### Documentation
+
+- Fix tests and documentation broken because the renaming master->main @sneridagh [#5251](https://github.com/plone/volto/issues/5251)
+- Disable GHA vale checking, it started to fail with a gazillion of violations. @sneridagh [#5253](https://github.com/plone/volto/issues/5253)
+- Reenable GHA vale checking, but with configuration from `plone/documentation`. It now runs Vale, but with the flag `--no-exit` which means "Don't return a nonzero exit code on errors." It also eliminates reviewdog as the test runner. @stevepiercy [#5256](https://github.com/plone/volto/issues/5256)
+
+
## 17.0.0 (2023-09-30)
### Breaking
diff --git a/addon-registry.js b/addon-registry.js
index 62a40920e5..f39251ea55 100644
--- a/addon-registry.js
+++ b/addon-registry.js
@@ -101,16 +101,14 @@ function getAddonsLoaderChain(graph) {
*/
class AddonConfigurationRegistry {
constructor(projectRootPath) {
- const packageJson = (this.packageJson = require(path.join(
- projectRootPath,
- 'package.json',
- )));
+ const packageJson = (this.packageJson = require(
+ path.join(projectRootPath, 'package.json'),
+ ));
// Loads the dynamic config, if any
if (fs.existsSync(path.join(projectRootPath, 'volto.config.js'))) {
- this.voltoConfigJS = require(path.join(
- projectRootPath,
- 'volto.config.js',
- ));
+ this.voltoConfigJS = require(
+ path.join(projectRootPath, 'volto.config.js'),
+ );
} else {
this.voltoConfigJS = [];
}
diff --git a/cypress/fixtures/example.json b/cypress/fixtures/example.json
index da18d9352a..02e4254378 100644
--- a/cypress/fixtures/example.json
+++ b/cypress/fixtures/example.json
@@ -2,4 +2,4 @@
"name": "Using fixtures to represent data",
"email": "hello@cypress.io",
"body": "Fixtures are a great way to mock data for responses to routes"
-}
\ No newline at end of file
+}
diff --git a/cypress/support/commands.js b/cypress/support/commands.js
index f9f5af27da..5ecae1f031 100644
--- a/cypress/support/commands.js
+++ b/cypress/support/commands.js
@@ -126,8 +126,7 @@ Cypress.Commands.add(
body: bodyModifier({
...defaultParams.body,
image: {
- data:
- 'iVBORw0KGgoAAAANSUhEUgAAANcAAAA4CAMAAABZsZ3QAAAAM1BMVEX29fK42OU+oMvn7u9drtIPisHI4OhstdWZyt4fkcXX5+sAg74umMhNp86p0eJ7vNiKw9v/UV4wAAAAAXRSTlMAQObYZgAABBxJREFUeF7tmuty4yAMhZG4X2zn/Z92J5tsBJwWXG/i3XR6frW2Y/SBLIRAfaQUDNt8E5tLUt9BycfcKfq3R6Mlfyimtx4rzp+K3dtibXkor99zsEqLYZltblTecciogoh+TXfY1Ve4dn07rCDGG9dHSEEOg/GmXl0U1XDxTKxNK5De7BxsyyBr6gGm2/vPxKJ8F6f7BXKfRMp1xIWK9A+5ks25alSb353dWnDJN1k35EL5f8dVGifTf/4tjUuuFq7u4srmXC60yAmldLXIWbg65RKU87lcGxJCFqUPv0IacW0PmSivOZFLE908inPToMmii/roG+MRV/O8FU88i8tFsxV3a06MFUw0Qu7RmAtdV5/HVVaOVMTWNOWSwMljLhzhcB6XIS7OK5V6AvRDNN7t5VJWQs1J40UmalbK56usBG/CuCHSYuc+rkUGeMCViNRARPrzW52N3oQLe6WifNliSuuGaH3czbVNudI9s7ZLUCLHVwWlyES522o1t14uvmbblmVTKqFjaZYJFSTPP4dLL1kU1z7p0lzdbRulmEWLxoQX+z9ce7A8GqEEucllLxePuZwdJl1Lezu0hoswvTPt61DrFcRuujV/2cmlxaGBC7Aw6cpovGANwRiSdOAWJ5AGy4gLL64dl0QhUEAuEUNws+XxV+OKGPdw/hESGYF9XEGaFC7sNLMSXWJjHsnanYi87VK428N2uxpOjOFANcagLM5l+7mSycM8KknZpKLcGi6jmzWGr/vLurZ/0g4u9AZuAoeb5r1ceQhyiTPY1E4wUR6u/F3H2ojSpXMMriBPT9cezTto8Cx+MsglHL4fv1Rxrb1LVw9yvyQpJ3AhFnLZfuRLH2QsOG3FGGD20X/th/u5bFAt16Bt308KjF+MNOXgl/SquIEySX3GhaZvc67KZbDxcCDORz2N8yCWPaY5lyQZO7lQ29fnZbt3Xu6qoge4+DjXl/MocySPOp9rlvdyznahRyHEYd77v3LhugOXDv4J65QXfl803BDAdaWBEDhfVx7nKofjoVCgxnUAqw/UAUDPn788BDvQuG4TDtdtUPvzjSlXAB8DvaDOhhrmhwbywylXAm8CvaouikJTL93gs3y7Yy4VYbIxOHrcMizPqWOjqO9l3Uz52kibQy4xxOgqhJvD+w5rvokOcAlGvNCfeqCv1ste1stzLm0f71Iq3ZfTrPfuE5nhPtF+LvQE2lffQC7pYtQy3tdzdrKvd5TLVVzDetScS3nEKmmwDyt1Cev1kX3YfbvzNK4fzrlw+cB6vm+uiUgf2zdXI62241LawCb7Pi5FXFPF8KpzDoF/Sw2lg+GrHNbno1mhPu+VCF/vfMnw06PnUl6j48dVHD3jHNHPua+fc3o/5yp/zsGi0vYtzi3Pz5mHd4T6BWMIlewacd63AAAAAElFTkSuQmCC',
+ data: 'iVBORw0KGgoAAAANSUhEUgAAANcAAAA4CAMAAABZsZ3QAAAAM1BMVEX29fK42OU+oMvn7u9drtIPisHI4OhstdWZyt4fkcXX5+sAg74umMhNp86p0eJ7vNiKw9v/UV4wAAAAAXRSTlMAQObYZgAABBxJREFUeF7tmuty4yAMhZG4X2zn/Z92J5tsBJwWXG/i3XR6frW2Y/SBLIRAfaQUDNt8E5tLUt9BycfcKfq3R6Mlfyimtx4rzp+K3dtibXkor99zsEqLYZltblTecciogoh+TXfY1Ve4dn07rCDGG9dHSEEOg/GmXl0U1XDxTKxNK5De7BxsyyBr6gGm2/vPxKJ8F6f7BXKfRMp1xIWK9A+5ks25alSb353dWnDJN1k35EL5f8dVGifTf/4tjUuuFq7u4srmXC60yAmldLXIWbg65RKU87lcGxJCFqUPv0IacW0PmSivOZFLE908inPToMmii/roG+MRV/O8FU88i8tFsxV3a06MFUw0Qu7RmAtdV5/HVVaOVMTWNOWSwMljLhzhcB6XIS7OK5V6AvRDNN7t5VJWQs1J40UmalbK56usBG/CuCHSYuc+rkUGeMCViNRARPrzW52N3oQLe6WifNliSuuGaH3czbVNudI9s7ZLUCLHVwWlyES522o1t14uvmbblmVTKqFjaZYJFSTPP4dLL1kU1z7p0lzdbRulmEWLxoQX+z9ce7A8GqEEucllLxePuZwdJl1Lezu0hoswvTPt61DrFcRuujV/2cmlxaGBC7Aw6cpovGANwRiSdOAWJ5AGy4gLL64dl0QhUEAuEUNws+XxV+OKGPdw/hESGYF9XEGaFC7sNLMSXWJjHsnanYi87VK428N2uxpOjOFANcagLM5l+7mSycM8KknZpKLcGi6jmzWGr/vLurZ/0g4u9AZuAoeb5r1ceQhyiTPY1E4wUR6u/F3H2ojSpXMMriBPT9cezTto8Cx+MsglHL4fv1Rxrb1LVw9yvyQpJ3AhFnLZfuRLH2QsOG3FGGD20X/th/u5bFAt16Bt308KjF+MNOXgl/SquIEySX3GhaZvc67KZbDxcCDORz2N8yCWPaY5lyQZO7lQ29fnZbt3Xu6qoge4+DjXl/MocySPOp9rlvdyznahRyHEYd77v3LhugOXDv4J65QXfl803BDAdaWBEDhfVx7nKofjoVCgxnUAqw/UAUDPn788BDvQuG4TDtdtUPvzjSlXAB8DvaDOhhrmhwbywylXAm8CvaouikJTL93gs3y7Yy4VYbIxOHrcMizPqWOjqO9l3Uz52kibQy4xxOgqhJvD+w5rvokOcAlGvNCfeqCv1ste1stzLm0f71Iq3ZfTrPfuE5nhPtF+LvQE2lffQC7pYtQy3tdzdrKvd5TLVVzDetScS3nEKmmwDyt1Cev1kX3YfbvzNK4fzrlw+cB6vm+uiUgf2zdXI62241LawCb7Pi5FXFPF8KpzDoF/Sw2lg+GrHNbno1mhPu+VCF/vfMnw06PnUl6j48dVHD3jHNHPua+fc3o/5yp/zsGi0vYtzi3Pz5mHd4T6BWMIlewacd63AAAAAElFTkSuQmCC',
encoding: 'base64',
filename: 'image.png',
'content-type': 'image/png',
diff --git a/cypress/support/reset-fixture.js b/cypress/support/reset-fixture.js
index ebe6fffaf6..21d2152970 100644
--- a/cypress/support/reset-fixture.js
+++ b/cypress/support/reset-fixture.js
@@ -4,8 +4,7 @@ function setup() {
method: 'POST',
url: `${api_url}/RobotRemote`,
headers: { Accept: 'text/xml', 'content-type': 'text/xml' },
- body:
- 'run_keywordremote_zodb_setupplone.app.robotframework.testing.PLONE_ROBOT_TESTING',
+ body: 'run_keywordremote_zodb_setupplone.app.robotframework.testing.PLONE_ROBOT_TESTING',
}).then(() => cy.log('Setting up API fixture'));
}
@@ -15,8 +14,7 @@ function teardown() {
method: 'POST',
url: `${api_url}/RobotRemote`,
headers: { Accept: 'text/xml', 'content-type': 'text/xml' },
- body:
- 'run_keywordremote_zodb_teardownplone.app.robotframework.testing.PLONE_ROBOT_TESTING',
+ body: 'run_keywordremote_zodb_teardownplone.app.robotframework.testing.PLONE_ROBOT_TESTING',
}).then(() => cy.log('Tearing down API fixture'));
}
diff --git a/cypress/tests/core/basic/actions.js b/cypress/tests/core/basic/actions.js
index e5b238ad4b..58c87c0a3d 100644
--- a/cypress/tests/core/basic/actions.js
+++ b/cypress/tests/core/basic/actions.js
@@ -1,57 +1,69 @@
describe('actions Tests', () => {
- beforeEach(() => {
- cy.autologin();
- cy.createContent({
- contentType: 'Document',
- contentId: 'my-page-1',
- contentTitle: 'My Page-1',
- allow_discussion: true,
- }
- );
- cy.visit('/contents');
- });
- it('copy', function () {
- cy.get('tr[aria-label="/my-page-1"]').within(() => {
- cy.get('svg[class="icon dropdown-popup-trigger"]').click();
- });
- cy.get('a[class="item right-dropdown icon-align"]').eq(2).click();
- cy.get('button[class="ui button icon item"]').click();
- cy.visit('/contents');
- cy.get('tr[aria-label="/copy_of_my-page-1"]').within(()=>{
- cy.get('a[class="icon-align-name"]').should('have.attr', 'href', '/copy_of_my-page-1/contents');
- })
+ beforeEach(() => {
+ cy.autologin();
+ cy.createContent({
+ contentType: 'Document',
+ contentId: 'my-page-1',
+ contentTitle: 'My Page-1',
+ allow_discussion: true,
+ });
+ cy.visit('/contents');
+ });
+ it('copy', function () {
+ cy.get('tr[aria-label="/my-page-1"]').within(() => {
+ cy.get('svg[class="icon dropdown-popup-trigger"]').click();
+ });
+ cy.get('a[class="item right-dropdown icon-align"]').eq(2).click();
+ cy.get('button[class="ui button icon item"]').click();
+ cy.visit('/contents');
+ cy.get('tr[aria-label="/copy_of_my-page-1"]').within(() => {
+ cy.get('a[class="icon-align-name"]').should(
+ 'have.attr',
+ 'href',
+ '/copy_of_my-page-1/contents',
+ );
+ });
+ });
+ it('delete', function () {
+ cy.get('tr[aria-label="/my-page-1"]').within(() => {
+ cy.get('button[class="ui basic icon button"]').click({ multiple: true });
+ });
+ cy.get('button[class="ui button icon item"]').eq(6).click();
+ cy.get('button[class="ui primary button"]').findByText('Delete').click();
+ cy.visit('/contents');
+ cy.get('tr').should('not.contain', '/my-page-1');
+ });
+ it('cut', function () {
+ cy.get('tr[aria-label="/my-page-1"]').within(() => {
+ cy.get('svg[class="icon dropdown-popup-trigger"]').click();
+ });
+ cy.get('a[class="item right-dropdown icon-align"]').eq(1).click();
+ cy.get('button[class="ui button icon item"]').click();
+ cy.visit('/contents');
+ cy.get('tr[aria-label="/my-page-1"]').within(() => {
+ cy.get('a[class="icon-align-name"]').should(
+ 'have.attr',
+ 'href',
+ '/my-page-1/contents',
+ );
+ });
+ });
+ it('rename', function () {
+ cy.get('tr[aria-label="/my-page-1"]').within(() => {
+ cy.get('button[class="ui basic icon button"]').click({ multiple: true });
+ });
+ cy.get('button[class="ui button icon item"]').eq(0).click();
+ cy.get('#field-0_title').clear().type('my-page-rename');
+ cy.get('#field-0_id').clear().type('my-page-rename');
+ cy.get(
+ 'button[class="ui basic circular primary right floated button"]',
+ ).click();
+ cy.get('tr[aria-label="/my-page-rename"]').within(() => {
+ cy.get('a[class="icon-align-name"]').should(
+ 'have.attr',
+ 'href',
+ '/my-page-rename/contents',
+ );
+ });
});
- it('delete', function () {
- cy.get('tr[aria-label="/my-page-1"]').within(() => {
- cy.get('button[class="ui basic icon button"]').click({ multiple: true });
- });
- cy.get('button[class="ui button icon item"]').eq(6).click();
- cy.get('button[class="ui primary button"]').findByText('Delete').click();
- cy.visit('/contents');
- cy.get('tr').should('not.contain','/my-page-1');
-
- });
- it('cut', function () {
- cy.get('tr[aria-label="/my-page-1"]').within(() => {
- cy.get('svg[class="icon dropdown-popup-trigger"]').click();
- });
- cy.get('a[class="item right-dropdown icon-align"]').eq(1).click();
- cy.get('button[class="ui button icon item"]').click();
- cy.visit('/contents');
- cy.get('tr[aria-label="/my-page-1"]').within(()=>{
- cy.get('a[class="icon-align-name"]').should('have.attr', 'href', '/my-page-1/contents');
- })
- });
- it('rename', function () {
- cy.get('tr[aria-label="/my-page-1"]').within(() => {
- cy.get('button[class="ui basic icon button"]').click({ multiple: true });
- });
- cy.get('button[class="ui button icon item"]').eq(0).click();
- cy.get('#field-0_title').clear().type('my-page-rename');
- cy.get('#field-0_id').clear().type('my-page-rename');
- cy.get('button[class="ui basic circular primary right floated button"]').click();
- cy.get('tr[aria-label="/my-page-rename"]').within(()=>{
- cy.get('a[class="icon-align-name"]').should('have.attr', 'href', '/my-page-rename/contents');
- })
- })
- });
\ No newline at end of file
+});
diff --git a/cypress/tests/core/basic/contactForm.js b/cypress/tests/core/basic/contactForm.js
index 54fe9fc73e..4321312921 100644
--- a/cypress/tests/core/basic/contactForm.js
+++ b/cypress/tests/core/basic/contactForm.js
@@ -1,15 +1,16 @@
describe('Contact Form Tests', () => {
- beforeEach(() => {
- cy.visit('/');
- });
- it('renders contact Form', function () {
- cy.get('a:contains("Contact")').click();
- cy.get('input[name="name"]').type('Myname');
- cy.get('input[name="from"]').type('admin@admin.com');
- cy.get('input[name="subject"]').type('Loreum Ipsium');
- cy.get('textarea[name="message"]').type('Lorem Ipsum is simply dummy text of the printing and typesetting industry.');
-
-
- cy.get('button[class="ui basic primary right floated button"]').click();
- });
- });
\ No newline at end of file
+ beforeEach(() => {
+ cy.visit('/');
+ });
+ it('renders contact Form', function () {
+ cy.get('a:contains("Contact")').click();
+ cy.get('input[name="name"]').type('Myname');
+ cy.get('input[name="from"]').type('admin@admin.com');
+ cy.get('input[name="subject"]').type('Loreum Ipsium');
+ cy.get('textarea[name="message"]').type(
+ 'Lorem Ipsum is simply dummy text of the printing and typesetting industry.',
+ );
+
+ cy.get('button[class="ui basic primary right floated button"]').click();
+ });
+});
diff --git a/cypress/tests/core/basic/view.js b/cypress/tests/core/basic/view.js
index 00cc061e25..4d20f09cf0 100644
--- a/cypress/tests/core/basic/view.js
+++ b/cypress/tests/core/basic/view.js
@@ -1,55 +1,50 @@
describe('Add Content Tests', () => {
- beforeEach(() => {
- cy.intercept('GET', `/**/*?expand*`).as('content');
- // give a logged in editor and the site root
- cy.autologin();
- cy.visit('/');
- cy.wait('@content');
- });
-
- it('As editor I can change the view to Listing View', function () {
-
- cy.visit('/events');
- cy.get('#toolbar-more').click();
- cy.findByText('Listing view').click();
- cy.findByText('Album view').click();
- cy.visit('/events');
- cy.wait('@content');
- cy.wait(2000);
- cy.get('main').contains('Event').should('be.visible');
- });
-
- it('As editor I can change the view to Summary View', function () {
-
- cy.visit('/events');
- cy.get('#toolbar-more').click();
- cy.findByText('Listing view').click();
- cy.findByText('Summary view').click();
- cy.visit('/events');
- cy.wait('@content');
- cy.wait(2000);
- cy.get('main').contains('Event').should('be.visible');
- });
- it('As editor I can change the view to Tabular View', function () {
-
- cy.visit('/events');
- cy.get('#toolbar-more').click();
- cy.findByText('Listing view').click();
- cy.findByText('Tabular view').click();
- cy.visit('/events');
- cy.wait('@content');
- cy.wait(2000);
- cy.get('main').contains('Event').should('be.visible');
- });
- it('As editor I can change the view to Album View', function () {
-
- cy.visit('/events');
- cy.get('#toolbar-more').click();
- cy.findByText('Listing view').click();
- cy.visit('/events');
- cy.wait('@content');
- cy.wait(2000);
- cy.get('main').contains('Event').should('be.visible');
- });
- });
-
\ No newline at end of file
+ beforeEach(() => {
+ cy.intercept('GET', `/**/*?expand*`).as('content');
+ // give a logged in editor and the site root
+ cy.autologin();
+ cy.visit('/');
+ cy.wait('@content');
+ });
+
+ it('As editor I can change the view to Listing View', function () {
+ cy.visit('/events');
+ cy.get('#toolbar-more').click();
+ cy.findByText('Listing view').click();
+ cy.findByText('Album view').click();
+ cy.visit('/events');
+ cy.wait('@content');
+ cy.wait(2000);
+ cy.get('main').contains('Event').should('be.visible');
+ });
+
+ it('As editor I can change the view to Summary View', function () {
+ cy.visit('/events');
+ cy.get('#toolbar-more').click();
+ cy.findByText('Listing view').click();
+ cy.findByText('Summary view').click();
+ cy.visit('/events');
+ cy.wait('@content');
+ cy.wait(2000);
+ cy.get('main').contains('Event').should('be.visible');
+ });
+ it('As editor I can change the view to Tabular View', function () {
+ cy.visit('/events');
+ cy.get('#toolbar-more').click();
+ cy.findByText('Listing view').click();
+ cy.findByText('Tabular view').click();
+ cy.visit('/events');
+ cy.wait('@content');
+ cy.wait(2000);
+ cy.get('main').contains('Event').should('be.visible');
+ });
+ it('As editor I can change the view to Album View', function () {
+ cy.visit('/events');
+ cy.get('#toolbar-more').click();
+ cy.findByText('Listing view').click();
+ cy.visit('/events');
+ cy.wait('@content');
+ cy.wait(2000);
+ cy.get('main').contains('Event').should('be.visible');
+ });
+});
diff --git a/cypress/tests/core/basic/workflow.js b/cypress/tests/core/basic/workflow.js
index 0a58077af6..1df0027f3a 100644
--- a/cypress/tests/core/basic/workflow.js
+++ b/cypress/tests/core/basic/workflow.js
@@ -1,25 +1,24 @@
describe('workflow Tests', () => {
- beforeEach(() => {
- cy.autologin();
- cy.createContent({
- contentType: 'Document',
- contentId: 'my-page',
- contentTitle: 'My Page',
- allow_discussion: true,
- }
- );
- cy.visit('/contents');
+ beforeEach(() => {
+ cy.autologin();
+ cy.createContent({
+ contentType: 'Document',
+ contentId: 'my-page',
+ contentTitle: 'My Page',
+ allow_discussion: true,
});
- it('change workflow state recursively', function () {
- cy.get('tr[aria-label="/my-page"]').within(() => {
- cy.get('button[class="ui basic icon button"]').click({ multiple: true });
- })
- cy.get('button[class="ui button icon item"]').eq(1).click();
- cy.findByText('Select…').click();
- cy.findByText('Publish').click();
- cy.findByTitle('Save').click();
- cy.get('tr[aria-label="/my-page"]').within(() => {
- cy.get('td > div').should('contain','Published');
- })
+ cy.visit('/contents');
+ });
+ it('change workflow state recursively', function () {
+ cy.get('tr[aria-label="/my-page"]').within(() => {
+ cy.get('button[class="ui basic icon button"]').click({ multiple: true });
});
- });
\ No newline at end of file
+ cy.get('button[class="ui button icon item"]').eq(1).click();
+ cy.findByText('Select…').click();
+ cy.findByText('Publish').click();
+ cy.findByTitle('Save').click();
+ cy.get('tr[aria-label="/my-page"]').within(() => {
+ cy.get('td > div').should('contain', 'Published');
+ });
+ });
+});
diff --git a/cypress/tests/core/content/delete.js b/cypress/tests/core/content/delete.js
index 7b09f468c0..d724cf9df4 100644
--- a/cypress/tests/core/content/delete.js
+++ b/cypress/tests/core/content/delete.js
@@ -1,21 +1,20 @@
describe('delete Tests', () => {
- beforeEach(() => {
- cy.autologin();
- cy.createContent({
- contentType: 'Document',
- contentId: 'my-page',
- contentTitle: 'My Page',
- allow_discussion: true,
- }
- );
- cy.visit('/contents');
+ beforeEach(() => {
+ cy.autologin();
+ cy.createContent({
+ contentType: 'Document',
+ contentId: 'my-page',
+ contentTitle: 'My Page',
+ allow_discussion: true,
});
- it('delete', function () {
- cy.get('tr[aria-label="/my-page"]').within(() => {
- cy.get('button[class="ui basic icon button"]').click({ multiple: true });
- });
- cy.get('button[class="ui button icon item"]').eq(6).click();
- cy.get('button[class="ui primary button"]').findByText('Delete').click();
- cy.get('tr').should('not.contain','/my-page');
+ cy.visit('/contents');
+ });
+ it('delete', function () {
+ cy.get('tr[aria-label="/my-page"]').within(() => {
+ cy.get('button[class="ui basic icon button"]').click({ multiple: true });
});
- });
\ No newline at end of file
+ cy.get('button[class="ui button icon item"]').eq(6).click();
+ cy.get('button[class="ui primary button"]').findByText('Delete').click();
+ cy.get('tr').should('not.contain', '/my-page');
+ });
+});
diff --git a/docs/source/contributing/branch-policy.md b/docs/source/contributing/branch-policy.md
index 843ee8ba0b..bda1a0cae9 100644
--- a/docs/source/contributing/branch-policy.md
+++ b/docs/source/contributing/branch-policy.md
@@ -42,6 +42,11 @@ legacy
: At the moment of this writing, `15.x.x` is the current stable branch in git.
Upon the final release of version 16.0.0, the `15.x.x` branch line will become legacy.
+```{todo}
+See https://github.com/plone/volto/issues/5255
+```
+
+
## Translation contributing policy
Due to the nature of `main` and `16.x.x` branches, some developments that may land in `main` may not be backported to `16.x.x`. This means that many translations that may come with those developments will be useless in the `16.x.x` branch and thus porting them to `16.x.x` makes no sense.
diff --git a/jest-extender-plugin.js b/jest-extender-plugin.js
index 98128e1b08..e51fa8b2b2 100644
--- a/jest-extender-plugin.js
+++ b/jest-extender-plugin.js
@@ -16,7 +16,9 @@ module.exports = {
if (
fs.existsSync(`${projectRootPath}/${process.env.RAZZLE_JEST_CONFIG}`)
) {
- const jestConfig = require(`${projectRootPath}/${process.env.RAZZLE_JEST_CONFIG}`);
+ const jestConfig = require(
+ `${projectRootPath}/${process.env.RAZZLE_JEST_CONFIG}`,
+ );
config = { ...config, ...jestConfig };
}
// if not, use the sensible default, `jest.config.js`
diff --git a/locales/ca/LC_MESSAGES/volto.po b/locales/ca/LC_MESSAGES/volto.po
index ad8b437acf..7e3dcf33e0 100644
--- a/locales/ca/LC_MESSAGES/volto.po
+++ b/locales/ca/LC_MESSAGES/volto.po
@@ -411,6 +411,11 @@ msgstr "Esteu segurs que voleu eliminar aquest grup de camps i tots els camps qu
msgid "Ascending"
msgstr "Ascendent"
+#: components/manage/Sharing/Sharing
+# defaultMessage: Assign the {role} role to {entry}
+msgid "Assign the {role} role to {entry}"
+msgstr ""
+
#: components/manage/Controlpanels/Rules/ConfigureRule
# defaultMessage: Assignments
msgid "Assignments"
diff --git a/locales/de/LC_MESSAGES/volto.po b/locales/de/LC_MESSAGES/volto.po
index 09772cb6d5..501400c73c 100644
--- a/locales/de/LC_MESSAGES/volto.po
+++ b/locales/de/LC_MESSAGES/volto.po
@@ -408,6 +408,11 @@ msgstr "Sind Sie sicher, dass Sie dieses Fieldset löschen möchten?"
msgid "Ascending"
msgstr "Aufsteigend"
+#: components/manage/Sharing/Sharing
+# defaultMessage: Assign the {role} role to {entry}
+msgid "Assign the {role} role to {entry}"
+msgstr ""
+
#: components/manage/Controlpanels/Rules/ConfigureRule
# defaultMessage: Assignments
msgid "Assignments"
diff --git a/locales/en/LC_MESSAGES/volto.po b/locales/en/LC_MESSAGES/volto.po
index 98e85b140d..50dce32990 100644
--- a/locales/en/LC_MESSAGES/volto.po
+++ b/locales/en/LC_MESSAGES/volto.po
@@ -402,6 +402,11 @@ msgstr ""
msgid "Ascending"
msgstr ""
+#: components/manage/Sharing/Sharing
+# defaultMessage: Assign the {role} role to {entry}
+msgid "Assign the {role} role to {entry}"
+msgstr ""
+
#: components/manage/Controlpanels/Rules/ConfigureRule
# defaultMessage: Assignments
msgid "Assignments"
diff --git a/locales/es/LC_MESSAGES/volto.po b/locales/es/LC_MESSAGES/volto.po
index aecc914419..595636eec5 100644
--- a/locales/es/LC_MESSAGES/volto.po
+++ b/locales/es/LC_MESSAGES/volto.po
@@ -413,6 +413,11 @@ msgstr "¿Esta seguro de querer eliminar este conjunto de campo incluyendo todos
msgid "Ascending"
msgstr "Ascendente"
+#: components/manage/Sharing/Sharing
+# defaultMessage: Assign the {role} role to {entry}
+msgid "Assign the {role} role to {entry}"
+msgstr ""
+
#: components/manage/Controlpanels/Rules/ConfigureRule
# defaultMessage: Assignments
msgid "Assignments"
diff --git a/locales/eu/LC_MESSAGES/volto.po b/locales/eu/LC_MESSAGES/volto.po
index 6f58787dde..f7e40a10b4 100644
--- a/locales/eu/LC_MESSAGES/volto.po
+++ b/locales/eu/LC_MESSAGES/volto.po
@@ -409,6 +409,11 @@ msgstr "Eremu-multzo hau eta bere eremu guztiak ezabatu nahi dituzu?"
msgid "Ascending"
msgstr "Goraka"
+#: components/manage/Sharing/Sharing
+# defaultMessage: Assign the {role} role to {entry}
+msgid "Assign the {role} role to {entry}"
+msgstr ""
+
#: components/manage/Controlpanels/Rules/ConfigureRule
# defaultMessage: Assignments
msgid "Assignments"
diff --git a/locales/fi/LC_MESSAGES/volto.po b/locales/fi/LC_MESSAGES/volto.po
index 56c0d48680..71412b10c2 100644
--- a/locales/fi/LC_MESSAGES/volto.po
+++ b/locales/fi/LC_MESSAGES/volto.po
@@ -413,6 +413,11 @@ msgstr "Haluatko varmasti poistaa tämän kenttäryhmän ja kaikki sen kentät?"
msgid "Ascending"
msgstr "Nouseva"
+#: components/manage/Sharing/Sharing
+# defaultMessage: Assign the {role} role to {entry}
+msgid "Assign the {role} role to {entry}"
+msgstr ""
+
#: components/manage/Controlpanels/Rules/ConfigureRule
# defaultMessage: Assignments
msgid "Assignments"
diff --git a/locales/fr/LC_MESSAGES/volto.po b/locales/fr/LC_MESSAGES/volto.po
index 469d73757b..49959616bd 100644
--- a/locales/fr/LC_MESSAGES/volto.po
+++ b/locales/fr/LC_MESSAGES/volto.po
@@ -419,6 +419,11 @@ msgstr "Voulez-vous vraiment supprimer ce groupe de champs et tous les champs de
msgid "Ascending"
msgstr "Ascendant"
+#: components/manage/Sharing/Sharing
+# defaultMessage: Assign the {role} role to {entry}
+msgid "Assign the {role} role to {entry}"
+msgstr ""
+
#: components/manage/Controlpanels/Rules/ConfigureRule
# defaultMessage: Assignments
msgid "Assignments"
diff --git a/locales/it/LC_MESSAGES/volto.po b/locales/it/LC_MESSAGES/volto.po
index cab54e43d5..e62c2bad73 100644
--- a/locales/it/LC_MESSAGES/volto.po
+++ b/locales/it/LC_MESSAGES/volto.po
@@ -402,6 +402,11 @@ msgstr "Sicuro di voler eliminare questo insieme di campi compresi tutti i campi
msgid "Ascending"
msgstr "Crescente"
+#: components/manage/Sharing/Sharing
+# defaultMessage: Assign the {role} role to {entry}
+msgid "Assign the {role} role to {entry}"
+msgstr "Assegnare il ruolo di {role} a {entry}"
+
#: components/manage/Controlpanels/Rules/ConfigureRule
# defaultMessage: Assignments
msgid "Assignments"
diff --git a/locales/ja/LC_MESSAGES/volto.po b/locales/ja/LC_MESSAGES/volto.po
index 3c8b38259f..287a210940 100644
--- a/locales/ja/LC_MESSAGES/volto.po
+++ b/locales/ja/LC_MESSAGES/volto.po
@@ -410,6 +410,11 @@ msgstr "Are you sure you want to delete this fieldset including all fields? (未
msgid "Ascending"
msgstr "昇順"
+#: components/manage/Sharing/Sharing
+# defaultMessage: Assign the {role} role to {entry}
+msgid "Assign the {role} role to {entry}"
+msgstr ""
+
#: components/manage/Controlpanels/Rules/ConfigureRule
# defaultMessage: Assignments
msgid "Assignments"
diff --git a/locales/nl/LC_MESSAGES/volto.po b/locales/nl/LC_MESSAGES/volto.po
index 73aa04c97f..c35ced2486 100644
--- a/locales/nl/LC_MESSAGES/volto.po
+++ b/locales/nl/LC_MESSAGES/volto.po
@@ -421,6 +421,11 @@ msgstr ""
msgid "Ascending"
msgstr "Oplopend"
+#: components/manage/Sharing/Sharing
+# defaultMessage: Assign the {role} role to {entry}
+msgid "Assign the {role} role to {entry}"
+msgstr ""
+
#: components/manage/Controlpanels/Rules/ConfigureRule
# defaultMessage: Assignments
msgid "Assignments"
diff --git a/locales/pt/LC_MESSAGES/volto.po b/locales/pt/LC_MESSAGES/volto.po
index b9872b68c0..53828a292f 100644
--- a/locales/pt/LC_MESSAGES/volto.po
+++ b/locales/pt/LC_MESSAGES/volto.po
@@ -410,6 +410,11 @@ msgstr "Tem a certeza que quer eliminar este conjunto de campos incluindo todos
msgid "Ascending"
msgstr "Ascendente"
+#: components/manage/Sharing/Sharing
+# defaultMessage: Assign the {role} role to {entry}
+msgid "Assign the {role} role to {entry}"
+msgstr ""
+
#: components/manage/Controlpanels/Rules/ConfigureRule
# defaultMessage: Assignments
msgid "Assignments"
diff --git a/locales/pt_BR/LC_MESSAGES/volto.po b/locales/pt_BR/LC_MESSAGES/volto.po
index 166b399a37..375652d850 100644
--- a/locales/pt_BR/LC_MESSAGES/volto.po
+++ b/locales/pt_BR/LC_MESSAGES/volto.po
@@ -412,6 +412,11 @@ msgstr "Você realmente deseja deletar este fieldset com todos os campos?"
msgid "Ascending"
msgstr "Ascendente"
+#: components/manage/Sharing/Sharing
+# defaultMessage: Assign the {role} role to {entry}
+msgid "Assign the {role} role to {entry}"
+msgstr "Atribuir o papel de {role} à {entry}"
+
#: components/manage/Controlpanels/Rules/ConfigureRule
# defaultMessage: Assignments
msgid "Assignments"
diff --git a/locales/ro/LC_MESSAGES/volto.po b/locales/ro/LC_MESSAGES/volto.po
index 1c911e4bea..ae607d5d64 100644
--- a/locales/ro/LC_MESSAGES/volto.po
+++ b/locales/ro/LC_MESSAGES/volto.po
@@ -402,6 +402,11 @@ msgstr "Sunteți sigur că doriți să ștergeți acest set de câmpuri, inclusi
msgid "Ascending"
msgstr "Crescător"
+#: components/manage/Sharing/Sharing
+# defaultMessage: Assign the {role} role to {entry}
+msgid "Assign the {role} role to {entry}"
+msgstr ""
+
#: components/manage/Controlpanels/Rules/ConfigureRule
# defaultMessage: Assignments
msgid "Assignments"
diff --git a/locales/volto.pot b/locales/volto.pot
index d750bd3086..b243ad1a4c 100644
--- a/locales/volto.pot
+++ b/locales/volto.pot
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Plone\n"
-"POT-Creation-Date: 2023-09-26T10:20:03.552Z\n"
+"POT-Creation-Date: 2023-10-02T11:59:20.013Z\n"
"Last-Translator: Plone i18n \n"
"Language-Team: Plone i18n \n"
"MIME-Version: 1.0\n"
@@ -404,6 +404,11 @@ msgstr ""
msgid "Ascending"
msgstr ""
+#: components/manage/Sharing/Sharing
+# defaultMessage: Assign the {role} role to {entry}
+msgid "Assign the {role} role to {entry}"
+msgstr ""
+
#: components/manage/Controlpanels/Rules/ConfigureRule
# defaultMessage: Assignments
msgid "Assignments"
diff --git a/locales/zh_CN/LC_MESSAGES/volto.po b/locales/zh_CN/LC_MESSAGES/volto.po
index b7ec2bc33c..50a87152f1 100644
--- a/locales/zh_CN/LC_MESSAGES/volto.po
+++ b/locales/zh_CN/LC_MESSAGES/volto.po
@@ -408,6 +408,11 @@ msgstr "确定要删除此包括所有字段的字段集?"
msgid "Ascending"
msgstr "上升"
+#: components/manage/Sharing/Sharing
+# defaultMessage: Assign the {role} role to {entry}
+msgid "Assign the {role} role to {entry}"
+msgstr ""
+
#: components/manage/Controlpanels/Rules/ConfigureRule
# defaultMessage: Assignments
msgid "Assignments"
diff --git a/news/5085.feature b/news/5085.feature
new file mode 100644
index 0000000000..2a5ccf64f0
--- /dev/null
+++ b/news/5085.feature
@@ -0,0 +1 @@
+storybook Header-@Tishasoumya
\ No newline at end of file
diff --git a/news/5088.feature b/news/5088.feature
new file mode 100644
index 0000000000..87e9335560
--- /dev/null
+++ b/news/5088.feature
@@ -0,0 +1 @@
+Storybook EventDetails-@Tishasoumya
\ No newline at end of file
diff --git a/news/5091.feature b/news/5091.feature
new file mode 100644
index 0000000000..1b224cda2c
--- /dev/null
+++ b/news/5091.feature
@@ -0,0 +1 @@
+Storybook CommentEditModal-@Tishasoumya
\ No newline at end of file
diff --git a/news/5092.feature b/news/5092.feature
new file mode 100644
index 0000000000..bb44bba61c
--- /dev/null
+++ b/news/5092.feature
@@ -0,0 +1 @@
+Storybook SearchWidget-@Tishasoumya
\ No newline at end of file
diff --git a/news/5251.documentation b/news/5251.documentation
deleted file mode 100644
index 5035416412..0000000000
--- a/news/5251.documentation
+++ /dev/null
@@ -1 +0,0 @@
-Fix tests and documentation broken because the renaming master->main @sneridagh
diff --git a/news/5253.documentation b/news/5253.documentation
deleted file mode 100644
index 2f9e4d5017..0000000000
--- a/news/5253.documentation
+++ /dev/null
@@ -1 +0,0 @@
-Disable GHA vale checking, it started to fail with a gazillion of violations. @sneridagh
diff --git a/news/5258.bugfix b/news/5258.bugfix
new file mode 100644
index 0000000000..efa2008829
--- /dev/null
+++ b/news/5258.bugfix
@@ -0,0 +1 @@
+Ensure .gitignore gets copied when running yo @plone/volto-addon @instification
diff --git a/news/5260.bugfix b/news/5260.bugfix
new file mode 100644
index 0000000000..4f8832297d
--- /dev/null
+++ b/news/5260.bugfix
@@ -0,0 +1 @@
+Configure the `prettier` and `prettier:fix` yarn commands to also include the root js files and the `cypress` subfolder @tiberiuichim
diff --git a/package.json b/package.json
index 235b3be503..9e40914fbe 100644
--- a/package.json
+++ b/package.json
@@ -9,7 +9,7 @@
}
],
"license": "MIT",
- "version": "17.0.0",
+ "version": "17.0.1",
"repository": {
"type": "git",
"url": "git@github.com:plone/volto.git"
@@ -44,8 +44,8 @@
"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",
- "prettier": "./node_modules/.bin/prettier --single-quote --check 'src/**/*.{js,jsx,ts,tsx,json}'",
- "prettier:fix": "./node_modules/.bin/prettier --single-quote --write 'src/**/*.{js,jsx,ts,tsx,json}'",
+ "prettier": "./node_modules/.bin/prettier --single-quote --check '{src,cypress}/**/*.{js,jsx,ts,tsx}' --check '*.js'",
+ "prettier:fix": "./node_modules/.bin/prettier --single-quote --write '{src,cypress}/**/*.{js,jsx,ts,tsx}' --write '*.js'",
"stylelint": "./node_modules/.bin/stylelint 'theme/**/*.{css,less}' 'src/**/*.{css,less}'",
"stylelint:overrides": "./node_modules/.bin/stylelint 'theme/**/*.overrides' 'src/**/*.overrides'",
"stylelint:fix": "yarn stylelint --fix && yarn stylelint:overrides --fix",
diff --git a/packages/generator-volto/generators/addon/index.js b/packages/generator-volto/generators/addon/index.js
index 5fdf0ec41f..e2420dd424 100644
--- a/packages/generator-volto/generators/addon/index.js
+++ b/packages/generator-volto/generators/addon/index.js
@@ -207,11 +207,6 @@ Run "npm install -g @plone/generator-volto" to update.`,
}
install() {
- this.renderTemplate(
- `${this.templatePath()}/**/*`,
- this.destinationPath(),
- this.globals,
- );
// copy dotfiles
this.fs.copyTpl(
this.templatePath('.github/workflows'),
@@ -223,8 +218,16 @@ Run "npm install -g @plone/generator-volto" to update.`,
this.destinationPath('.yarn/releases'),
this.globals,
);
-
- this.fs.copy(this.templatePath('.*'), this.destinationPath());
+ this.fs.copyTpl(
+ this.templatePath('.gitignorefile'),
+ this.destinationPath('.gitignore'),
+ this.globals,
+ );
+ this.fs.copyTpl(this.templatePath(), this.destinationPath(), {
+ ...this.globals,
+ ignore: ['**/*.tpl', '**/*~', '**/.gitignorefile'],
+ dot: true,
+ });
}
end() {
diff --git a/packages/generator-volto/generators/addon/templates/.gitignore b/packages/generator-volto/generators/addon/templates/.gitignorefile
similarity index 100%
rename from packages/generator-volto/generators/addon/templates/.gitignore
rename to packages/generator-volto/generators/addon/templates/.gitignorefile
diff --git a/packages/scripts/addon/generators.js b/packages/scripts/addon/generators.js
index a21ea9c909..806ab0f4a6 100644
--- a/packages/scripts/addon/generators.js
+++ b/packages/scripts/addon/generators.js
@@ -74,9 +74,19 @@ export async function runGitGenerator({
branch,
});
+ // BBB: Maintains compatibility with
+ // @plone/generator-volto < 7.0.0-alpha.7
+ // In new versions of @plone/generator-volto we do not have jsconfig.json but tsconfig.json
+ let configFile;
+ if (fs.existsSync(`${destination}/jsconfig.json`)) {
+ configFile = 'jsconfig.json';
+ } else {
+ configFile = 'tsconfig.json';
+ }
+
await develop({
root: destination,
- configFile: 'jsconfig.json',
+ configFile: configFile,
output: 'addons',
});
@@ -163,9 +173,19 @@ export async function runLocalGenerator({
destination,
});
+ // BBB: Maintains compatibility with
+ // @plone/generator-volto < 7.0.0-alpha.7
+ // In new versions of @plone/generator-volto we do not have jsconfig.json but tsconfig.json
+ let configFile;
+ if (fs.existsSync(`${destination}/jsconfig.json`)) {
+ configFile = 'jsconfig.json';
+ } else {
+ configFile = 'tsconfig.json';
+ }
+
await develop({
root: destination,
- configFile: 'jsconfig.json',
+ configFile: configFile,
output: 'addons',
});
diff --git a/packages/scripts/news/5239.bugfix b/packages/scripts/news/5239.bugfix
new file mode 100644
index 0000000000..f8971746c5
--- /dev/null
+++ b/packages/scripts/news/5239.bugfix
@@ -0,0 +1 @@
+Fix error ``no such file or directory, open 'addon-testing-project/jsconfig.json'`` in addon clone command. @wesleybl
diff --git a/packages/volto-slate/package.json b/packages/volto-slate/package.json
index 3aebc05b35..b676440ede 100644
--- a/packages/volto-slate/package.json
+++ b/packages/volto-slate/package.json
@@ -1,6 +1,6 @@
{
"name": "@plone/volto-slate",
- "version": "17.0.0",
+ "version": "17.0.1",
"description": "Slate.js integration with Volto",
"main": "src/index.js",
"author": "European Environment Agency: IDM2 A-Team",
diff --git a/pre-build-transpiling.js b/pre-build-transpiling.js
index fe5a71db2b..d009282ea7 100644
--- a/pre-build-transpiling.js
+++ b/pre-build-transpiling.js
@@ -17,7 +17,7 @@ const offendingPackages = [
];
echo('\nPre-build transpiling to ES5 offending packages...\n');
-offendingPackages.forEach(pkg =>
+offendingPackages.forEach((pkg) =>
exec(
`NODE_ENV=production babel --presets=@babel/env ${pkg} --out-dir ${pkg}`,
),
diff --git a/razzle.config.js b/razzle.config.js
index 341e433f4b..3cc2fcd8ba 100644
--- a/razzle.config.js
+++ b/razzle.config.js
@@ -244,10 +244,8 @@ const defaultModify = ({
'lodash-es': path.dirname(require.resolve('lodash')),
};
- const [
- addonsThemeLoaderVariablesPath,
- addonsThemeLoaderMainPath,
- ] = createThemeAddonsLoader(registry.getCustomThemeAddons());
+ const [addonsThemeLoaderVariablesPath, addonsThemeLoaderMainPath] =
+ createThemeAddonsLoader(registry.getCustomThemeAddons());
// Automatic Theme Loading
if (registry.theme) {
@@ -258,12 +256,10 @@ const defaultModify = ({
config.resolve.alias['../../theme.config'] = themeConfigPath;
// We create an alias for each custom theme insertion point (variables, main)
- config.resolve.alias[
- 'addonsThemeCustomizationsVariables'
- ] = addonsThemeLoaderVariablesPath;
- config.resolve.alias[
- 'addonsThemeCustomizationsMain'
- ] = addonsThemeLoaderMainPath;
+ config.resolve.alias['addonsThemeCustomizationsVariables'] =
+ addonsThemeLoaderVariablesPath;
+ config.resolve.alias['addonsThemeCustomizationsMain'] =
+ addonsThemeLoaderMainPath;
}
config.performance = {
diff --git a/src/components/manage/Sharing/Sharing.jsx b/src/components/manage/Sharing/Sharing.jsx
index 1731de9ede..31d715ad0a 100644
--- a/src/components/manage/Sharing/Sharing.jsx
+++ b/src/components/manage/Sharing/Sharing.jsx
@@ -87,6 +87,10 @@ const messages = defineMessages({
id: 'Permissions have been updated successfully',
defaultMessage: 'Permissions have been updated successfully',
},
+ assignNewRoles: {
+ id: 'Assign the {role} role to {entry}',
+ defaultMessage: 'Assign the {role} role to {entry}',
+ },
});
/**
@@ -419,6 +423,20 @@ class SharingComponent extends Component {
)}
{typeof entry.roles[role.id] === 'boolean' && (
+
+ {}}
+ onCancel={() => {}}
+ />
+
+ );
+}
+
+export const CommentEditModal = StoryComponent.bind({});
+
+CommentEditModal.args = {
+ open: true,
+ text: 'Comment Body',
+};
+
+export default {
+ title: 'Public components/Comments/CommentEdit Modal',
+ component: CommentEditModalComponent,
+ decorators: [
+ (Story) => (
+
+
+
+ ),
+ ],
+ argTypes: {
+ open: {
+ description: 'open/close modal',
+ },
+ id: {
+ description: 'id of the comment',
+ },
+ text: {
+ description: 'body of comment',
+ },
+ onCancel: {
+ description: 'cancel changing the comment',
+ },
+ onOk: {
+ description: 'save the change in the comment',
+ },
+ },
+};
diff --git a/src/components/theme/EventDetails/EventDetails.stories.jsx b/src/components/theme/EventDetails/EventDetails.stories.jsx
new file mode 100644
index 0000000000..3173585f01
--- /dev/null
+++ b/src/components/theme/EventDetails/EventDetails.stories.jsx
@@ -0,0 +1,88 @@
+import { injectIntl } from 'react-intl';
+import React from 'react';
+import EventDetailsComponent from './EventDetails';
+import { RealStoreWrapper as Wrapper } from '@plone/volto/storybook';
+
+const IntlEventDetailsComponent = injectIntl(EventDetailsComponent);
+
+function StoryComponent(args) {
+ return (
+
+
+ Hello World!
',
+ },
+ ...args,
+ }}
+ />
+
+ );
+}
+
+export const EventDetails = StoryComponent.bind({});
+EventDetails.args = {
+ attendees: ['John Doe', 'Mario Rossi'],
+ contact_email: 'test@example.com',
+ contact_name: 'John Doe',
+ contact_phone: '0123456789',
+ end: '2019-06-24T15:20:00+00:00',
+ event_url: 'https://www.example.com',
+ location: 'Volto, Plone',
+ open_end: false,
+ recurrence: 'RRULE:FREQ=DAILY;INTERVAL=7;COUNT=7',
+ start: '2019-06-23T15:20:00+00:00',
+ subjects: ['Guillotina', 'Volto'],
+ whole_day: false,
+};
+export default {
+ title: 'Public components/EventDetails',
+ component: EventDetails,
+ decorators: [
+ (Story) => (
+
+
+
+ ),
+ ],
+ argTypes: {
+ contact_email: {
+ description: 'email address',
+ },
+ contact_name: {
+ description: 'name of the attendee',
+ },
+ contact_phone: {
+ description: 'contact phone of the attendee',
+ },
+ end: {
+ control: { type: 'date' },
+ description: 'end date/time of the event',
+ },
+ event_url: {
+ description: 'event url',
+ },
+ start: {
+ control: { type: 'date' },
+ context: 'time',
+ description: 'start date/time of the event',
+ },
+ whole_day: {
+ description: 'whether the event will be whole day or not',
+ },
+ subjects: {
+ description: 'subjects covered in the event meetings',
+ },
+ },
+};
diff --git a/src/components/theme/Header/Header.stories.jsx b/src/components/theme/Header/Header.stories.jsx
new file mode 100644
index 0000000000..49d6357a8f
--- /dev/null
+++ b/src/components/theme/Header/Header.stories.jsx
@@ -0,0 +1,47 @@
+import { injectIntl } from 'react-intl';
+import React from 'react';
+import HeaderComponent from './Header';
+import { RealStoreWrapper as Wrapper } from '@plone/volto/storybook';
+
+const IntlHeaderComponent = injectIntl(HeaderComponent);
+
+function StoryComponent(args) {
+ return (
+
+
+
+
+ );
+}
+
+export const Default = StoryComponent.bind({});
+Default.args = {
+ token: '',
+};
+export const Auth = StoryComponent.bind({});
+Auth.args = {
+ token: '1234567890',
+};
+
+export default {
+ title: 'Public components/Header',
+ component: HeaderComponent,
+ decorators: [
+ (Story) => (
+
+
+
+ ),
+ ],
+ argTypes: {
+ token: 'Token for userSession',
+ },
+};
diff --git a/src/components/theme/SearchWidget/SearchWidget.stories.jsx b/src/components/theme/SearchWidget/SearchWidget.stories.jsx
new file mode 100644
index 0000000000..33390f9050
--- /dev/null
+++ b/src/components/theme/SearchWidget/SearchWidget.stories.jsx
@@ -0,0 +1,36 @@
+import { injectIntl } from 'react-intl';
+import React from 'react';
+import SearchWidgetComponent from './SearchWidget';
+import { RealStoreWrapper as Wrapper } from '@plone/volto/storybook';
+
+const IntlSearchWidgetComponent = injectIntl(SearchWidgetComponent);
+
+function StoryComponent(args) {
+ return (
+
+
+
+
+ );
+}
+
+export const SearchWidget = StoryComponent.bind({});
+
+export default {
+ title: 'Public components/SearchWidget',
+ component: SearchWidget,
+ decorators: [
+ (Story) => (
+
+
+
+ ),
+ ],
+};
diff --git a/src/start-server.js b/src/start-server.js
index 5e8fcc1449..52bdd7c343 100644
--- a/src/start-server.js
+++ b/src/start-server.js
@@ -1,10 +1,14 @@
/* eslint no-console: 0 */
+import dns from 'dns';
import http from 'http';
import app from './server';
import debug from 'debug';
export default function server() {
+ // If DNS returns both ipv4 and ipv6 addresses, prefer ipv4
+ dns.setDefaultResultOrder('ipv4first');
+
const server = http.createServer(app);
// const host = process.env.HOST || 'localhost';
const port = process.env.PORT || 3000;