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

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 (31) hide show
  1. package/AGENTS.md +47 -0
  2. package/CHANGELOG.md +21 -0
  3. package/README.md +0 -1
  4. package/package.json +9 -12
  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/pastanaga/extras/contents.less +0 -4
  24. package/types/components/manage/Contents/Contents.d.ts +1 -1
  25. package/types/components/manage/Contents/ContentsIndexHeader.d.ts +6 -11
  26. package/types/components/manage/Contents/ContentsItem.d.ts +3 -10
  27. package/types/components/manage/Controlpanels/ContentType.d.ts +2 -2
  28. package/types/components/manage/Controlpanels/Controlpanel.d.ts +2 -5
  29. package/types/components/manage/Controlpanels/index.d.ts +2 -2
  30. package/types/components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthIndexField.d.ts +22 -5
  31. 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,27 @@ myst:
17
17
 
18
18
  <!-- towncrier release notes start -->
19
19
 
20
+ ## 19.0.0-alpha.33 (2026-05-04)
21
+
22
+ ### Breaking
23
+
24
+ - Removed the `@plone/client` package from the `main` branch. @sneridagh [#8170](https://github.com/plone/volto/issues/8170)
25
+ - Replaced the dependencies `react-dnd`, `react-dnd-html5-backend`, and `react-sortable-hoc` with `dnd-kit`.
26
+ See https://6.docs.plone.org/volto/upgrade-guide/index.html for more information.
27
+ @davisagli
28
+
29
+ ### Bugfix
30
+
31
+ - Force the proper setting of the I18NLANGUAGE cookie for non-multilingual sites too. @sneridagh
32
+
33
+ ### Internal
34
+
35
+ - Refactored the `ContentType` and `ControlPanel` components to be functional components. @Manik-Khajuria-5, @davisagli [#7705](https://github.com/plone/volto/issues/7705)
36
+ - 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)
37
+ - Remove unused devDependency: `react-docgen-typescript-plugin`. @davisagli
38
+ - Standardized the TypeScript validation script name to `check:ts` and added package-specific `AGENTS.md` contributor guidance for `@plone/volto`.
39
+ - Update devDependency: `@vitest/ui` 3.2.4. @davisagli
40
+
20
41
  ## 19.0.0-alpha.32 (2026-04-30)
21
42
 
22
43
  ### 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.33",
13
13
  "repository": {
14
14
  "type": "git",
15
15
  "url": "git@github.com:plone/volto.git"
@@ -87,8 +87,9 @@
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",
@@ -136,8 +137,6 @@
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",
@@ -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
292
  "@plone/babel-preset-razzle": "^1.0.0-alpha.0",
298
293
  "@plone/volto-coresandbox": "1.0.0",
299
- "@plone/razzle-dev-utils": "1.0.0-alpha.2"
294
+ "@plone/razzle": "1.0.0-alpha.5",
295
+ "@plone/razzle-dev-utils": "1.0.0-alpha.2",
296
+ "@plone/types": "2.0.0-alpha.18"
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',