@plone/volto 19.0.0-alpha.31 → 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.
- package/AGENTS.md +47 -0
- package/CHANGELOG.md +27 -0
- package/README.md +0 -1
- package/package.json +11 -14
- package/src/actions/controlpanels/controlpanels.js +7 -12
- package/src/actions/controlpanels/controlpanels.test.js +2 -3
- package/src/components/manage/Contents/Contents.jsx +410 -323
- package/src/components/manage/Contents/Contents.test.jsx +1 -1
- package/src/components/manage/Contents/ContentsIndexHeader.jsx +47 -81
- package/src/components/manage/Contents/ContentsIndexHeader.test.jsx +10 -3
- package/src/components/manage/Contents/ContentsItem.jsx +226 -278
- package/src/components/manage/Contents/ContentsItem.test.jsx +10 -6
- package/src/components/manage/Controlpanels/ContentType.jsx +131 -222
- package/src/components/manage/Controlpanels/Controlpanel.jsx +122 -218
- package/src/components/manage/Controlpanels/Controlpanel.test.jsx +1 -29
- package/src/components/manage/Form/Field.jsx +1 -69
- package/src/components/manage/Form/Form.jsx +8 -0
- package/src/components/manage/Form/Form.test.jsx +130 -1
- package/src/components/manage/Widgets/ArrayWidget.jsx +111 -88
- package/src/components/manage/Widgets/ArrayWidget.test.jsx +0 -6
- package/src/components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthIndexField.jsx +56 -50
- package/src/components/manage/Widgets/SelectStyling.jsx +52 -20
- package/src/config/Loadables.jsx +1 -5
- package/src/config/index.js +3 -0
- package/src/helpers/Utils/withSaveAsDraft.jsx +33 -9
- package/src/server.jsx +7 -1
- package/theme/themes/pastanaga/extras/contents.less +0 -4
- package/types/components/manage/Contents/Contents.d.ts +1 -1
- package/types/components/manage/Contents/ContentsIndexHeader.d.ts +6 -11
- package/types/components/manage/Contents/ContentsItem.d.ts +3 -10
- package/types/components/manage/Controlpanels/ContentType.d.ts +2 -2
- package/types/components/manage/Controlpanels/Controlpanel.d.ts +2 -5
- package/types/components/manage/Controlpanels/index.d.ts +2 -2
- package/types/components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthIndexField.d.ts +22 -5
- 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.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
|
+
|
|
41
|
+
## 19.0.0-alpha.32 (2026-04-30)
|
|
42
|
+
|
|
43
|
+
### Breaking
|
|
44
|
+
|
|
45
|
+
- Make form autosave opt-in behind `config.experimental.saveAsDraft.enabled`; enable this flag to preserve the previous save-as-draft behavior. @sneridagh
|
|
46
|
+
|
|
20
47
|
## 19.0.0-alpha.31 (2026-04-28)
|
|
21
48
|
|
|
22
49
|
### Feature
|
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.
|
|
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.
|
|
91
|
-
"@dnd-kit/
|
|
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",
|
|
@@ -183,9 +181,9 @@
|
|
|
183
181
|
"use-deep-compare-effect": "1.8.1",
|
|
184
182
|
"uuid": "^14.0.0",
|
|
185
183
|
"@plone/components": "4.0.0-alpha.7",
|
|
186
|
-
"@plone/
|
|
184
|
+
"@plone/scripts": "4.0.0-alpha.6",
|
|
187
185
|
"@plone/volto-slate": "19.0.0-alpha.15",
|
|
188
|
-
"@plone/
|
|
186
|
+
"@plone/registry": "3.0.0-alpha.11"
|
|
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.
|
|
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",
|
|
@@ -293,10 +290,10 @@
|
|
|
293
290
|
"webpack-dev-server": "^5.2.3",
|
|
294
291
|
"webpack-node-externals": "3.0.0",
|
|
295
292
|
"@plone/babel-preset-razzle": "^1.0.0-alpha.0",
|
|
296
|
-
"@plone/types": "2.0.0-alpha.17",
|
|
297
|
-
"@plone/razzle-dev-utils": "1.0.0-alpha.2",
|
|
298
293
|
"@plone/volto-coresandbox": "1.0.0",
|
|
299
|
-
"@plone/razzle": "1.0.0-alpha.
|
|
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
|
-
"
|
|
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
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|
|
40
|
-
updateControlpanel(url, data)(dispatch);
|
|
39
|
+
const action = updateControlpanel(url, data);
|
|
41
40
|
|
|
42
|
-
expect(
|
|
41
|
+
expect(action).toEqual({
|
|
43
42
|
type: UPDATE_CONTROLPANEL,
|
|
44
43
|
request: {
|
|
45
44
|
op: 'patch',
|