From 54f6302046002d351005e18db15b43340b6ce083 Mon Sep 17 00:00:00 2001 From: Sara Bianchi Date: Thu, 20 Jun 2024 12:57:48 +0200 Subject: [PATCH 1/3] chore: updated volto-form-block v3.9.0 --- RELEASE.md | 10 ++++++++-- package.json | 2 +- yarn.lock | 28 ++++++++++++++++++++-------- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/RELEASE.md b/RELEASE.md index a26f3510d..e475e2e5c 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -29,12 +29,18 @@ ### Fix - ... --> - ## Versione X.X.X (dd/mm/yyyy) + +### Novità +- Aggiornato il Blocco Form con diverse proprietà aggiuntive: ora è possibile aggiungere un testo in header e in footer nell'email inviata, è stato inserito un nuovo livello di sicurezza OTP nel caso in cui venga scelta l'opzione dell'invio mail al destinatario, è stato aggiunto anche un messaggio personalizzabile da mostrare dopo l'invio del form e un pulsante da mostrare per il reset dei campi della form. + + +## Versione 7.28.2 (18/06/2024) + ### Fix -- Blocchi elenco dentro ad un grid con la corretta visualizzazione quando scelto una variazione. +- Sistemati Blocchi Elenco dentro al un Blocco Grid, ora viene mostrata la variazione scelta. ## Versione 7.27.1 (10/04/2024) diff --git a/package.json b/package.json index e4f44a6b1..3a28d7efa 100644 --- a/package.json +++ b/package.json @@ -204,7 +204,7 @@ "volto-customer-satisfaction": "1.0.0", "volto-dropdownmenu": "4.0.0", "volto-editablefooter": "5.0.1", - "volto-form-block": "3.1.0", + "volto-form-block": "3.9.0", "volto-gdpr-privacy": "2.1.0", "volto-google-analytics": "2.0.0", "volto-multilingual-widget": "3.0.0", diff --git a/yarn.lock b/yarn.lock index 9d2a739ea..829bdc6a9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12252,7 +12252,7 @@ __metadata: volto-customer-satisfaction: 1.0.0 volto-dropdownmenu: 4.0.0 volto-editablefooter: 5.0.1 - volto-form-block: 3.1.0 + volto-form-block: 3.9.0 volto-gdpr-privacy: 2.1.0 volto-google-analytics: 2.0.0 volto-multilingual-widget: 3.0.0 @@ -28946,18 +28946,18 @@ __metadata: languageName: node linkType: hard -"volto-form-block@npm:3.1.0": - version: 3.1.0 - resolution: "volto-form-block@npm:3.1.0" +"volto-form-block@npm:3.9.0": + version: 3.9.0 + resolution: "volto-form-block@npm:3.9.0" dependencies: "@hcaptcha/react-hcaptcha": ^0.3.6 file-saver: ^2.0.5 react-google-recaptcha-v3: ^1.8.0 - volto-subblocks: ^2.0.0 + volto-subblocks: ^2.1.0 peerDependencies: "@plone/volto": ">=16.0.0-alpha.38" - volto-subblocks: ^2.0.0 - checksum: a8707b864ee32acf99151d302de6389d9a395623b2c384dbae3a1acb9e2b5c57f355f5d9318834fa9e49b004f14f97494534dd435daea65414ddce087e340009 + volto-subblocks: ^2.1.0 + checksum: 0019fe78d6d4cdbdf8ce5124132d9b158c103da269ca39b7b3de8e7808d71bca6cef5103feee5d590bcce3e185a7b9f934c50f5266ae86fd4a8eb27d9d146dc9 languageName: node linkType: hard @@ -29022,7 +29022,7 @@ __metadata: languageName: node linkType: hard -"volto-subblocks@npm:2.0.0, volto-subblocks@npm:^2.0.0": +"volto-subblocks@npm:2.0.0": version: 2.0.0 resolution: "volto-subblocks@npm:2.0.0" dependencies: @@ -29034,6 +29034,18 @@ __metadata: languageName: node linkType: hard +"volto-subblocks@npm:^2.1.0": + version: 2.1.0 + resolution: "volto-subblocks@npm:2.1.0" + dependencies: + react-dnd: ^5.0.0 + react-dnd-html5-backend: ^5.0.1 + peerDependencies: + "@plone/volto": ">=16.0.0-alpha.38" + checksum: a1cc02ca26176b44398445084c9b90330e898ccb725247f131e71dcc8b1c9e70b3352b8dd4fcf322ea60df7970c02f001454151ab7a82b7a6f6ab96ed4ffc8d5 + languageName: node + linkType: hard + "volto-subfooter@npm:3.0.0": version: 3.0.0 resolution: "volto-subfooter@npm:3.0.0" From ad65f0c074daaadb7ad09f87c591dfe1947631e6 Mon Sep 17 00:00:00 2001 From: Sara Bianchi Date: Fri, 21 Jun 2024 12:02:18 +0200 Subject: [PATCH 2/3] chore: updated customizations of volto-form-blocks --- RELEASE.md | 8 +- locales/de/LC_MESSAGES/volto.po | 15 +++ locales/en/LC_MESSAGES/volto.po | 15 +++ locales/es/LC_MESSAGES/volto.po | 15 +++ locales/fr/LC_MESSAGES/volto.po | 15 +++ locales/it/LC_MESSAGES/volto.po | 15 +++ locales/volto.pot | 17 ++- .../ItaliaTheme/manage/Widgets/FileWidget.jsx | 42 ++++++- .../volto-form-block/components/Edit.jsx | 107 +++++++++------- .../volto-form-block/components/Field.jsx | 74 +++++++++-- .../volto-form-block/components/FormView.jsx | 119 ++++++++++++++---- src/overrideTranslations.jsx | 15 +++ theme/ItaliaTheme/Blocks/_form.scss | 55 +++++++- 13 files changed, 434 insertions(+), 78 deletions(-) diff --git a/RELEASE.md b/RELEASE.md index e475e2e5c..74d5ce146 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -33,7 +33,13 @@ ### Novità -- Aggiornato il Blocco Form con diverse proprietà aggiuntive: ora è possibile aggiungere un testo in header e in footer nell'email inviata, è stato inserito un nuovo livello di sicurezza OTP nel caso in cui venga scelta l'opzione dell'invio mail al destinatario, è stato aggiunto anche un messaggio personalizzabile da mostrare dopo l'invio del form e un pulsante da mostrare per il reset dei campi della form. +* Aggiornato il Blocco Form con diverse proprietà aggiuntive: + * è possibile aggiungere un testo in header e in footer nell'email inviata, + * è stato inserito un nuovo livello di sicurezza OTP nel caso in cui venga scelta l'opzione dell'invio copia della mail, + * è stato aggiunto un messaggio personalizzabile da mostrare dopo l'invio del form, + * è possibile mostrare un pulsante per il reset dei campi della form, + * sono stati sistemati i messaggi d'errore dei campi, + * è stata aggiunta una legenda per i campi obbligatori. ## Versione 7.28.2 (18/06/2024) diff --git a/locales/de/LC_MESSAGES/volto.po b/locales/de/LC_MESSAGES/volto.po index 7a20b533c..f36182860 100644 --- a/locales/de/LC_MESSAGES/volto.po +++ b/locales/de/LC_MESSAGES/volto.po @@ -2004,6 +2004,16 @@ msgstr "" msgid "fine_termine" msgstr "" +#: overrideTranslations +# defaultMessage: Annulla +msgid "form_default_cancel_label" +msgstr "" + +#: overrideTranslations +# defaultMessage: Ricomincia +msgid "form_reset" +msgstr "" + #: components/ItaliaTheme/View/PersonaView/PersonaRuolo # defaultMessage: Foto dell'attività politica msgid "foto_attivita_politica" @@ -2166,6 +2176,11 @@ msgstr "" msgid "legami_strutture_figlie" msgstr "" +#: overrideTranslations +# defaultMessage: I campi contrassegnati da (*) sono obbligatori. +msgid "legend_required" +msgstr "" + #: components/ItaliaTheme/Blocks/SearchSections/SideBar # defaultMessage: Collegamento msgid "link" diff --git a/locales/en/LC_MESSAGES/volto.po b/locales/en/LC_MESSAGES/volto.po index 2a758a19e..477654897 100644 --- a/locales/en/LC_MESSAGES/volto.po +++ b/locales/en/LC_MESSAGES/volto.po @@ -1989,6 +1989,16 @@ msgstr "Search" msgid "fine_termine" msgstr "End of term" +#: overrideTranslations +# defaultMessage: Annulla +msgid "form_default_cancel_label" +msgstr "" + +#: overrideTranslations +# defaultMessage: Ricomincia +msgid "form_reset" +msgstr "" + #: components/ItaliaTheme/View/PersonaView/PersonaRuolo # defaultMessage: Foto dell'attività politica msgid "foto_attivita_politica" @@ -2151,6 +2161,11 @@ msgstr "Association service or office" msgid "legami_strutture_figlie" msgstr "Internal services or offices" +#: overrideTranslations +# defaultMessage: I campi contrassegnati da (*) sono obbligatori. +msgid "legend_required" +msgstr "" + #: components/ItaliaTheme/Blocks/SearchSections/SideBar # defaultMessage: Collegamento msgid "link" diff --git a/locales/es/LC_MESSAGES/volto.po b/locales/es/LC_MESSAGES/volto.po index f4d874b52..4ce8b5b09 100644 --- a/locales/es/LC_MESSAGES/volto.po +++ b/locales/es/LC_MESSAGES/volto.po @@ -1998,6 +1998,16 @@ msgstr "Buscar" msgid "fine_termine" msgstr "Fin de los términos" +#: overrideTranslations +# defaultMessage: Annulla +msgid "form_default_cancel_label" +msgstr "" + +#: overrideTranslations +# defaultMessage: Ricomincia +msgid "form_reset" +msgstr "" + #: components/ItaliaTheme/View/PersonaView/PersonaRuolo # defaultMessage: Foto dell'attività politica msgid "foto_attivita_politica" @@ -2160,6 +2170,11 @@ msgstr "Servicio u oficina de la asociación" msgid "legami_strutture_figlie" msgstr "Servicios internos u oficinas" +#: overrideTranslations +# defaultMessage: I campi contrassegnati da (*) sono obbligatori. +msgid "legend_required" +msgstr "" + #: components/ItaliaTheme/Blocks/SearchSections/SideBar # defaultMessage: Collegamento msgid "link" diff --git a/locales/fr/LC_MESSAGES/volto.po b/locales/fr/LC_MESSAGES/volto.po index 54367e282..e98b64a94 100644 --- a/locales/fr/LC_MESSAGES/volto.po +++ b/locales/fr/LC_MESSAGES/volto.po @@ -2006,6 +2006,16 @@ msgstr "Rechercher" msgid "fine_termine" msgstr "Fin du mandat" +#: overrideTranslations +# defaultMessage: Annulla +msgid "form_default_cancel_label" +msgstr "" + +#: overrideTranslations +# defaultMessage: Ricomincia +msgid "form_reset" +msgstr "" + #: components/ItaliaTheme/View/PersonaView/PersonaRuolo # defaultMessage: Foto dell'attività politica msgid "foto_attivita_politica" @@ -2168,6 +2178,11 @@ msgstr "" msgid "legami_strutture_figlie" msgstr "" +#: overrideTranslations +# defaultMessage: I campi contrassegnati da (*) sono obbligatori. +msgid "legend_required" +msgstr "" + #: components/ItaliaTheme/Blocks/SearchSections/SideBar # defaultMessage: Collegamento msgid "link" diff --git a/locales/it/LC_MESSAGES/volto.po b/locales/it/LC_MESSAGES/volto.po index 4c165c29d..90e55b986 100644 --- a/locales/it/LC_MESSAGES/volto.po +++ b/locales/it/LC_MESSAGES/volto.po @@ -1989,6 +1989,16 @@ msgstr "Cerca" msgid "fine_termine" msgstr "Fine termine" +#: overrideTranslations +# defaultMessage: Annulla +msgid "form_default_cancel_label" +msgstr "Annulla" + +#: overrideTranslations +# defaultMessage: Ricomincia +msgid "form_reset" +msgstr "Ricomincia" + #: components/ItaliaTheme/View/PersonaView/PersonaRuolo # defaultMessage: Foto dell'attività politica msgid "foto_attivita_politica" @@ -2151,6 +2161,11 @@ msgstr "Servizio o ufficio di appartenenza" msgid "legami_strutture_figlie" msgstr "Servizi o uffici interni" +#: overrideTranslations +# defaultMessage: I campi contrassegnati da (*) sono obbligatori. +msgid "legend_required" +msgstr "I campi contrassegnati da (*) sono obbligatori." + #: components/ItaliaTheme/Blocks/SearchSections/SideBar # defaultMessage: Collegamento msgid "link" diff --git a/locales/volto.pot b/locales/volto.pot index 5cffc80d4..34568edad 100644 --- a/locales/volto.pot +++ b/locales/volto.pot @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: Plone\n" -"POT-Creation-Date: 2024-03-27T13:29:18.025Z\n" +"POT-Creation-Date: 2024-06-21T09:58:51.722Z\n" "Last-Translator: Plone i18n \n" "Language-Team: Plone i18n \n" "MIME-Version: 1.0\n" @@ -1991,6 +1991,16 @@ msgstr "" msgid "fine_termine" msgstr "" +#: overrideTranslations +# defaultMessage: Annulla +msgid "form_default_cancel_label" +msgstr "" + +#: overrideTranslations +# defaultMessage: Ricomincia +msgid "form_reset" +msgstr "" + #: components/ItaliaTheme/View/PersonaView/PersonaRuolo # defaultMessage: Foto dell'attività politica msgid "foto_attivita_politica" @@ -2153,6 +2163,11 @@ msgstr "" msgid "legami_strutture_figlie" msgstr "" +#: overrideTranslations +# defaultMessage: I campi contrassegnati da (*) sono obbligatori. +msgid "legend_required" +msgstr "" + #: components/ItaliaTheme/Blocks/SearchSections/SideBar # defaultMessage: Collegamento msgid "link" diff --git a/src/components/ItaliaTheme/manage/Widgets/FileWidget.jsx b/src/components/ItaliaTheme/manage/Widgets/FileWidget.jsx index 83eb4214d..cda0d531a 100644 --- a/src/components/ItaliaTheme/manage/Widgets/FileWidget.jsx +++ b/src/components/ItaliaTheme/manage/Widgets/FileWidget.jsx @@ -5,6 +5,7 @@ import React from 'react'; import PropTypes from 'prop-types'; +import cx from 'classnames'; import { Dimmer, Button } from 'design-react-kit/dist/design-react-kit'; import { readAsDataURL } from 'promise-file-reader'; import { injectIntl, defineMessages, useIntl } from 'react-intl'; @@ -56,13 +57,25 @@ const messages = defineMessages({ * @returns {string} Markup of the component. */ const FileWidget = (props) => { - const { id, value, onChange, label, onEdit, infoText } = props; + const { + id, + value, + onChange, + label, + onEdit, + infoText, + required, + invalid, + validationText, + } = props; const [isImage, setIsImage] = React.useState(false); const intl = useIntl(); React.useEffect(() => { if (value && imageMimetypes.includes(value['content-type'])) { setIsImage(true); + } else { + setIsImage(false); } }, [value]); @@ -98,6 +111,16 @@ const FileWidget = (props) => { reader.readAsDataURL(files[0]); }; + let attributes = {}; + if (required) { + attributes.required = true; + attributes['aria-required'] = true; + } + const isInvalid = invalid === true || invalid === 'true'; + if (isInvalid) { + attributes['aria-invalid'] = true; + } + return (
)} - {infoText && {infoText}} + {infoText && ( + + {infoText} + + )} {value && (
{value.filename} @@ -177,6 +210,11 @@ const FileWidget = (props) => {
)} + {validationText && ( +
+ {validationText} +
+ )} ); }; diff --git a/src/customizations/volto-form-block/components/Edit.jsx b/src/customizations/volto-form-block/components/Edit.jsx index f36dbe403..c4a8a917e 100644 --- a/src/customizations/volto-form-block/components/Edit.jsx +++ b/src/customizations/volto-form-block/components/Edit.jsx @@ -11,6 +11,7 @@ import React from 'react'; import EditBlock from 'volto-form-block/components/EditBlock'; // eslint-disable-next-line import/no-unresolved import Sidebar from 'volto-form-block/components/Sidebar'; +import ValidateConfigForm from 'volto-form-block/components/ValidateConfigForm'; import { Card, @@ -38,6 +39,10 @@ const messages = defineMessages({ id: 'form_default_submit_label', defaultMessage: 'Invia', }, + default_cancel_label: { + id: 'form_default_cancel_label', + defaultMessage: 'Annulla', + }, warning: { id: 'form_edit_warning', defaultMessage: 'Attenzione!', @@ -80,17 +85,24 @@ class Edit extends SubblocksEdit { return (
-
- {this.props?.data?.title &&

{this.props.data.title}

} - {this.props?.data?.description && ( -
- {this.props.data.description} -
- )} - - - - {/*this.state.subblocks.filter((s) => s.field_type === 'from') + { + this.props.onChangeBlock(this.props.block, data); + }} + > +
+ {this.props?.data?.title &&

{this.props.data.title}

} + {this.props?.data?.description && ( +
+ {this.props.data.description} +
+ )} + + + + {/*this.state.subblocks.filter((s) => s.field_type === 'from') .length == 0 && (

{this.props.intl.formatMessage(messages.warning)}

@@ -100,40 +112,49 @@ class Edit extends SubblocksEdit {
)*/} - {this.state.subblocks.map((subblock, subindex) => ( -
- -
- ))} + {this.state.subblocks.map((subblock, subindex) => ( +
+ +
+ ))} - {this.props.selected && ( -
- {this.renderAddBlockButton( - this.props.intl.formatMessage(messages.addField), - )} -
- )} + {this.props.selected && ( +
+ {this.renderAddBlockButton( + this.props.intl.formatMessage(messages.addField), + )} +
+ )} - - - - - -
-
-
-
+ + + {this.props.data?.show_cancel && ( + + )} + + + +
+
+
+
+ { + const intl = useIntl(); + const components = props.reactSelect.components; + return ( + + + + ); }); /** @@ -46,6 +65,7 @@ const Field = ({ valid, disabled = false, formHasErrors = false, + errorMessage, id, reactSelect, }) => { @@ -60,6 +80,15 @@ const Field = ({ return !isOnEdit && !valid; }; + const infoText = errorMessage ? ( + <> +
{description}
+ {errorMessage} + + ) : ( + description + ); + return (
{field_type === 'text' && ( @@ -69,7 +98,7 @@ const Field = ({ label={getLabel()} type="text" required={required} - infoText={description} + infoText={infoText} disabled={disabled} readOnly={disabled} invalid={isInvalid() ? 'true' : null} @@ -87,14 +116,14 @@ const Field = ({ type="textarea" rows={10} required={required} - infoText={description} + infoText={infoText} disabled={disabled} readOnly={disabled} invalid={isInvalid() ? 'true' : null} onChange={(e) => { onChange(name, e.target.value); }} - {...(value ? { value } : {})} + value={value ?? undefined} /> )} {field_type === 'select' && ( @@ -108,6 +137,7 @@ const Field = ({