@plone/volto 19.1.1 → 19.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -17,6 +17,15 @@ myst:
17
17
 
18
18
  <!-- towncrier release notes start -->
19
19
 
20
+ ## 19.1.2 (2026-06-08)
21
+
22
+ ### Bugfix
23
+
24
+ - Increase home icon size to comply with WCAG 2.2 accessibility. @polyester [#8297](https://github.com/plone/volto/issues/8297)
25
+ - Fix layout regression in `FormFieldWrapper` where the empty `aria-live` container was acting as an extra flex item, breaking widget layouts like `SizeWidget`. @Wagner3UB [#8319](https://github.com/plone/volto/issues/8319)
26
+ - Fix "Cannot POST" error on login form if it was submitted before hydration
27
+ finished, by disabling the submit button until then. @davisagli
28
+
20
29
  ## 19.1.1 (2026-05-28)
21
30
 
22
31
  ### Internal
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  }
10
10
  ],
11
11
  "license": "MIT",
12
- "version": "19.1.1",
12
+ "version": "19.1.2",
13
13
  "repository": {
14
14
  "type": "git",
15
15
  "url": "git@github.com:plone/volto.git"
@@ -177,8 +177,8 @@
177
177
  "url": "^0.11.3",
178
178
  "use-deep-compare-effect": "1.8.1",
179
179
  "uuid": "^14.0.0",
180
+ "@plone/components": "4.2.0",
180
181
  "@plone/registry": "3.0.1",
181
- "@plone/components": "4.1.0",
182
182
  "@plone/scripts": "4.0.1",
183
183
  "@plone/volto-slate": "19.0.2"
184
184
  },
@@ -290,9 +290,9 @@
290
290
  "webpack-node-externals": "3.0.0",
291
291
  "@plone/babel-preset-razzle": "^1.0.1",
292
292
  "@plone/types": "2.0.0",
293
+ "@plone/razzle-dev-utils": "1.0.0",
293
294
  "@plone/volto-coresandbox": "1.0.0",
294
- "@plone/razzle": "1.0.0",
295
- "@plone/razzle-dev-utils": "1.0.0"
295
+ "@plone/razzle": "1.0.0"
296
296
  },
297
297
  "scripts": {
298
298
  "analyze": "BUNDLE_ANALYZE=true razzle build",
@@ -61,7 +61,11 @@ const FormFieldWrapper = ({
61
61
  <>
62
62
  {children}
63
63
 
64
- <div aria-live="polite" aria-atomic="true">
64
+ <div
65
+ aria-live="polite"
66
+ aria-atomic="true"
67
+ className={cx({ 'visually-hidden': !error?.length })}
68
+ >
65
69
  {map(error, (message) => (
66
70
  <Label key={message} basic color="red" className="form-error-label">
67
71
  {message}
@@ -67,7 +67,7 @@ const BreadcrumbsComponent = ({ pathname }) => {
67
67
  className="section"
68
68
  title={intl.formatMessage(messages.home)}
69
69
  >
70
- <Icon name={homeSVG} size="18px" />
70
+ <Icon name={homeSVG} size="24px" />
71
71
  </Link>
72
72
  {items.map((item, index, items) => [
73
73
  <Breadcrumb.Divider key={`divider-${item.url}`} />,
@@ -14,6 +14,7 @@ import qs from 'query-string';
14
14
 
15
15
  import Helmet from '@plone/volto/helpers/Helmet/Helmet';
16
16
  import { usePrevious } from '@plone/volto/helpers/Utils/usePrevious';
17
+ import { useClient } from '@plone/volto/hooks/client/useClient';
17
18
  import config from '@plone/volto/registry';
18
19
  import Icon from '@plone/volto/components/theme/Icon/Icon';
19
20
  import {
@@ -84,6 +85,7 @@ const Login = (props) => {
84
85
  location.pathname.replace(/\/[^/]*\/?$/, '') ||
85
86
  '/';
86
87
  const previousToken = usePrevious(token);
88
+ const isClient = useClient();
87
89
 
88
90
  useEffect(() => {
89
91
  if (location?.state?.isLogout) {
@@ -252,6 +254,7 @@ const Login = (props) => {
252
254
  aria-label={intl.formatMessage(messages.login)}
253
255
  title={intl.formatMessage(messages.login)}
254
256
  loading={loading}
257
+ disabled={!isClient}
255
258
  >
256
259
  <Icon className="circled" name={aheadSVG} size="30px" />
257
260
  </Button>