@plone/volto 19.0.0-alpha.32 → 19.0.0-alpha.34

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.
Files changed (33) hide show
  1. package/AGENTS.md +47 -0
  2. package/CHANGELOG.md +27 -0
  3. package/README.md +0 -1
  4. package/package.json +16 -19
  5. package/src/actions/controlpanels/controlpanels.js +7 -12
  6. package/src/actions/controlpanels/controlpanels.test.js +2 -3
  7. package/src/components/manage/Contents/Contents.jsx +410 -323
  8. package/src/components/manage/Contents/Contents.test.jsx +1 -1
  9. package/src/components/manage/Contents/ContentsIndexHeader.jsx +47 -81
  10. package/src/components/manage/Contents/ContentsIndexHeader.test.jsx +10 -3
  11. package/src/components/manage/Contents/ContentsItem.jsx +226 -278
  12. package/src/components/manage/Contents/ContentsItem.test.jsx +10 -6
  13. package/src/components/manage/Controlpanels/ContentType.jsx +131 -222
  14. package/src/components/manage/Controlpanels/Controlpanel.jsx +122 -218
  15. package/src/components/manage/Controlpanels/Controlpanel.test.jsx +1 -29
  16. package/src/components/manage/Form/Field.jsx +1 -69
  17. package/src/components/manage/Widgets/ArrayWidget.jsx +111 -88
  18. package/src/components/manage/Widgets/ArrayWidget.test.jsx +0 -6
  19. package/src/components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthIndexField.jsx +56 -50
  20. package/src/components/manage/Widgets/SelectStyling.jsx +52 -20
  21. package/src/config/Loadables.jsx +1 -5
  22. package/src/server.jsx +7 -1
  23. package/theme/themes/default/globals/site.variables +3 -3
  24. package/theme/themes/pastanaga/extras/contents.less +0 -4
  25. package/theme/themes/pastanaga/globals/site.variables +0 -3
  26. package/types/components/manage/Contents/Contents.d.ts +1 -1
  27. package/types/components/manage/Contents/ContentsIndexHeader.d.ts +6 -11
  28. package/types/components/manage/Contents/ContentsItem.d.ts +3 -10
  29. package/types/components/manage/Controlpanels/ContentType.d.ts +2 -2
  30. package/types/components/manage/Controlpanels/Controlpanel.d.ts +2 -5
  31. package/types/components/manage/Controlpanels/index.d.ts +2 -2
  32. package/types/components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthIndexField.d.ts +22 -5
  33. package/types/components/manage/Widgets/SelectStyling.d.ts +1 -0
package/AGENTS.md ADDED
@@ -0,0 +1,47 @@
1
+ # AGENTS.md
2
+
3
+ This file applies only to `packages/volto` and its subdirectories.
4
+
5
+ ## What This Package Is
6
+
7
+ - `@plone/volto` is the main Plone 6 frontend application package.
8
+ - It is a React application built with Volto's Razzle-based toolchain.
9
+ - This package is still mostly JavaScript, with selective TypeScript support.
10
+
11
+ ## Architecture Notes
12
+
13
+ - The app is driven by configuration registry patterns, add-on extensibility, Redux state, and block-based editing.
14
+ - `src/components/` contains most UI and editor code.
15
+ - `src/config/` and registry-related wiring define app composition and extensibility points.
16
+ - `theme/` contains Less and Semantic UI customization.
17
+ - `cypress/` contains acceptance coverage and fixtures.
18
+
19
+ ## Editing Rules
20
+
21
+ - Prefer TypeScript for all new modules and features, even though this package still contains substantial JavaScript.
22
+ - Refactoring touched code toward TypeScript is welcome, but not required.
23
+ - Respect add-on extensibility. Prefer configuration and composition points over hardcoded behavior when touching core features.
24
+ - Keep block changes aligned with existing editor/view separation and serialization expectations.
25
+ - Do not treat this package like a standalone Vite library; its build, theming, and test workflows are app-specific.
26
+ - When editing runtime code that depends on `@plone/registry`, `@plone/components`, or `@plone/volto-slate`, validate the integration instead of only linting local files.
27
+ - Be careful with imports from sibling packages. If a dependency is a workspace package, prefer its public API over deep internal paths.
28
+
29
+ ## Validation
30
+
31
+ Choose the narrowest useful set:
32
+
33
+ ```sh
34
+ pnpm --filter @plone/volto test --run
35
+ pnpm --filter @plone/volto test:ci
36
+ pnpm --filter @plone/volto lint
37
+ pnpm --filter @plone/volto check:ts
38
+ pnpm --filter @plone/volto build
39
+ pnpm --filter @plone/volto storybook
40
+ make ci-acceptance-test-run-all
41
+ ```
42
+
43
+ ## Additional Guidance
44
+
45
+ - For style changes, use the package's lint and stylelint commands.
46
+ - For i18n changes, validate with `pnpm --filter @plone/volto i18n:ci`.
47
+ - For docs-related work inside this package, also consider the Sphinx docs under the repo root.
package/CHANGELOG.md CHANGED
@@ -17,6 +17,33 @@ myst:
17
17
 
18
18
  <!-- towncrier release notes start -->
19
19
 
20
+ ## 19.0.0-alpha.34 (2026-05-07)
21
+
22
+ ### Bugfix
23
+
24
+ - Replace hard-coded color values with Semantic UI theme variables for input field to improve accessibility. @Wagner3UB [#8044](https://github.com/plone/volto/issues/8044)
25
+
26
+ ## 19.0.0-alpha.33 (2026-05-04)
27
+
28
+ ### Breaking
29
+
30
+ - Removed the `@plone/client` package from the `main` branch. @sneridagh [#8170](https://github.com/plone/volto/issues/8170)
31
+ - Replaced the dependencies `react-dnd`, `react-dnd-html5-backend`, and `react-sortable-hoc` with `dnd-kit`.
32
+ See https://6.docs.plone.org/volto/upgrade-guide/index.html for more information.
33
+ @davisagli
34
+
35
+ ### Bugfix
36
+
37
+ - Force the proper setting of the I18NLANGUAGE cookie for non-multilingual sites too. @sneridagh
38
+
39
+ ### Internal
40
+
41
+ - Refactored the `ContentType` and `ControlPanel` components to be functional components. @Manik-Khajuria-5, @davisagli [#7705](https://github.com/plone/volto/issues/7705)
42
+ - Refactored the `WeekdayOfTheMonthIndexField` component by converting it from a class-based component to a modern functional component. @Manik-Khajuria-5 [#7811](https://github.com/plone/volto/issues/7811)
43
+ - Remove unused devDependency: `react-docgen-typescript-plugin`. @davisagli
44
+ - Standardized the TypeScript validation script name to `check:ts` and added package-specific `AGENTS.md` contributor guidance for `@plone/volto`.
45
+ - Update devDependency: `@vitest/ui` 3.2.4. @davisagli
46
+
20
47
  ## 19.0.0-alpha.32 (2026-04-30)
21
48
 
22
49
  ### Breaking
package/README.md CHANGED
@@ -45,7 +45,6 @@ This allows the code to be shared effectively, and unifies tracking of changes a
45
45
 
46
46
  | Package | Location |
47
47
  |---|---|
48
- | [`@plone/client`](https://www.npmjs.com/package/@plone/client) | [`packages/client`](https://github.com/plone/volto/tree/main/packages/client#readme) |
49
48
  | [`@plone/components`](https://www.npmjs.com/package/@plone/components) | [`packages/components`](https://github.com/plone/volto/tree/main/packages/components#readme) |
50
49
  | [`@plone/registry`](https://www.npmjs.com/package/@plone/registry) | [`packages/registry`](https://github.com/plone/volto/tree/main/packages/registry#readme) |
51
50
  | [`@plone/scripts`](https://www.npmjs.com/package/@plone/scripts) | [`packages/scripts`](https://github.com/plone/volto/tree/main/packages/scripts#readme) |
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  }
10
10
  ],
11
11
  "license": "MIT",
12
- "version": "19.0.0-alpha.32",
12
+ "version": "19.0.0-alpha.34",
13
13
  "repository": {
14
14
  "type": "git",
15
15
  "url": "git@github.com:plone/volto.git"
@@ -87,12 +87,12 @@
87
87
  "node": "^22 || ^24"
88
88
  },
89
89
  "dependencies": {
90
- "@dnd-kit/core": "6.0.8",
91
- "@dnd-kit/sortable": "7.0.2",
90
+ "@dnd-kit/core": "6.3.1",
91
+ "@dnd-kit/modifiers": "9.0.0",
92
+ "@dnd-kit/sortable": "10.0.0",
92
93
  "@dnd-kit/utilities": "3.2.2",
93
94
  "@loadable/component": "5.16.7",
94
95
  "@loadable/server": "5.16.7",
95
- "react-aria-components": "^1.17.0",
96
96
  "@redux-devtools/extension": "^3.3.0",
97
97
  "classnames": "2.5.1",
98
98
  "connected-react-router": "6.8.0",
@@ -132,12 +132,11 @@
132
132
  "react": "18.2.0",
133
133
  "react-anchor-link-smooth-scroll": "1.0.12",
134
134
  "react-animate-height": "2.0.17",
135
+ "react-aria-components": "^1.17.0",
135
136
  "react-beautiful-dnd": "13.0.0",
136
137
  "react-cookie": "4.1.1",
137
138
  "react-dates": "21.8.0",
138
139
  "react-detect-click-outside": "1.1.1",
139
- "react-dnd": "5.0.0",
140
- "react-dnd-html5-backend": "5.0.1",
141
140
  "react-dom": "18.2.0",
142
141
  "react-dropzone": "11.1.0",
143
142
  "react-fast-compare": "2.0.4",
@@ -156,7 +155,6 @@
156
155
  "react-select-async-paginate": "0.5.3",
157
156
  "react-side-effect": "2.1.2",
158
157
  "react-simple-code-editor": "0.7.1",
159
- "react-sortable-hoc": "2.0.0",
160
158
  "react-test-renderer": "18.2.0",
161
159
  "react-toastify": "5.5.0",
162
160
  "react-transition-group": "4.4.5",
@@ -182,10 +180,10 @@
182
180
  "url": "^0.11.3",
183
181
  "use-deep-compare-effect": "1.8.1",
184
182
  "uuid": "^14.0.0",
185
- "@plone/components": "4.0.0-alpha.7",
186
- "@plone/scripts": "4.0.0-alpha.6",
187
- "@plone/volto-slate": "19.0.0-alpha.15",
188
- "@plone/registry": "3.0.0-alpha.11"
183
+ "@plone/components": "4.0.0-alpha.8",
184
+ "@plone/scripts": "4.0.0-alpha.7",
185
+ "@plone/registry": "3.0.0-alpha.12",
186
+ "@plone/volto-slate": "19.0.0-alpha.16"
189
187
  },
190
188
  "devDependencies": {
191
189
  "@babel/core": "^7.28.5",
@@ -225,7 +223,7 @@
225
223
  "@typescript-eslint/eslint-plugin": "^7.7.0",
226
224
  "@typescript-eslint/parser": "^7.7.0",
227
225
  "@vitejs/plugin-react": "^4.3.4",
228
- "@vitest/ui": "^2.1.8",
226
+ "@vitest/ui": "^3.2.4",
229
227
  "autoprefixer": "10.4.8",
230
228
  "axe-core": "4.4.2",
231
229
  "babel-loader": "9.1.0",
@@ -265,7 +263,6 @@
265
263
  "postcss-load-config": "^6.0.1",
266
264
  "postcss-loader": "^8.2.1",
267
265
  "postcss-scss": "4.0.9",
268
- "react-docgen-typescript-plugin": "^1.0.8",
269
266
  "react-error-overlay": "6.0.9",
270
267
  "react-is": "^18.2.0",
271
268
  "release-it": "^20.0.1",
@@ -292,11 +289,11 @@
292
289
  "webpack-bundle-analyzer": "4.10.1",
293
290
  "webpack-dev-server": "^5.2.3",
294
291
  "webpack-node-externals": "3.0.0",
295
- "@plone/razzle": "1.0.0-alpha.4",
296
- "@plone/types": "2.0.0-alpha.17",
297
- "@plone/babel-preset-razzle": "^1.0.0-alpha.0",
298
- "@plone/volto-coresandbox": "1.0.0",
299
- "@plone/razzle-dev-utils": "1.0.0-alpha.2"
292
+ "@plone/babel-preset-razzle": "^1.0.0-alpha.1",
293
+ "@plone/razzle": "1.0.0-alpha.5",
294
+ "@plone/razzle-dev-utils": "1.0.0-alpha.3",
295
+ "@plone/types": "2.0.0-alpha.18",
296
+ "@plone/volto-coresandbox": "1.0.0"
300
297
  },
301
298
  "scripts": {
302
299
  "analyze": "BUNDLE_ANALYZE=true razzle build",
@@ -320,7 +317,7 @@
320
317
  "lint:husky": "eslint --max-warnings=0 --fix",
321
318
  "i18n": "rm -rf build/messages && NODE_ENV=production i18n",
322
319
  "i18n:ci": "pnpm i18n && git diff -G'^[^\"POT]' --exit-code",
323
- "typecheck": "tsc --project tsconfig.json --noEmit",
320
+ "check:ts": "tsc --project tsconfig.json --noEmit",
324
321
  "dry-release": "release-it --dry-run",
325
322
  "release": "release-it",
326
323
  "release-major-alpha": "release-it major --preRelease=alpha",
@@ -12,7 +12,6 @@ import {
12
12
  SYSTEM_INFORMATION,
13
13
  DATABASE_INFORMATION,
14
14
  } from '@plone/volto/constants/ActionTypes';
15
- import { getSite } from '@plone/volto/actions/site/site';
16
15
 
17
16
  /**
18
17
  * Get controlpanel function.
@@ -88,17 +87,13 @@ export function listControlpanels() {
88
87
  * @returns {Object} Update controlpanel action.
89
88
  */
90
89
  export function updateControlpanel(url, data) {
91
- return (dispatch) => {
92
- dispatch({
93
- type: UPDATE_CONTROLPANEL,
94
- request: {
95
- op: 'patch',
96
- path: url,
97
- data,
98
- },
99
- }).then(() => {
100
- dispatch(getSite());
101
- });
90
+ return {
91
+ type: UPDATE_CONTROLPANEL,
92
+ request: {
93
+ op: 'patch',
94
+ path: url,
95
+ data,
96
+ },
102
97
  };
103
98
  }
104
99
 
@@ -36,10 +36,9 @@ describe('Controlpanels action', () => {
36
36
  const url = 'http://localhost';
37
37
  const data = 'Hello World!';
38
38
 
39
- const dispatch = vi.fn().mockResolvedValue();
40
- updateControlpanel(url, data)(dispatch);
39
+ const action = updateControlpanel(url, data);
41
40
 
42
- expect(dispatch).toHaveBeenCalledWith({
41
+ expect(action).toEqual({
43
42
  type: UPDATE_CONTROLPANEL,
44
43
  request: {
45
44
  op: 'patch',