Repository navigation
Move the recurrence modal off TanStack Form - #254
Merged
Merged
Conversation
The recurrence modal's own form now uses a form store from @plone/helpers. It is not provided as the current form, so the fields in the modal still read the event's start and end from the content form. The field components take plain onChange(value) setters instead of TanStack updaters. With that, nothing uses @tanstack/react-form anymore, and cmsui drops the dependency. Also fixes the modal crashing the edit form for events that end on days 1 to 9 of a month: the default "until" date was built without padding the day (2026-10-5), which is not a valid ISO date. Adds the first acceptance test for the recurrence widget. Refs #244
…ecurrence-form-store * origin/feat/form-migration: Fix the indentation of the jotai/vanilla optimizeDeps entry
This was referenced Oct 9, 2026
…ecurrence-form-store * origin/feat/form-migration: Fix the recurrence modal crash for events ending on days 1 to 9 (#255)
7 tasks
…ecurrence-form-store * origin/feat/form-migration: Explain where controls and widgets live in the widgets guide
Member
Author
|
LGTM |
pnicolli
approved these changes
Oct 10, 2026
sneridagh
added a commit
that referenced
this pull request
Oct 10, 2026
* origin/main: Validate schema-driven forms (#256) Move the recurrence modal off TanStack Form (#254) Move the forms onto the helpers form store (#253) Add a Jotai-native form layer to helpers (#252) Render every schema form through one field renderer (#251) Document and type the form widget contract (#97) Match utility dependencies exactly in the registry (#259) # Conflicts: # packages/cmsui/config/widgets.ts
sneridagh
added a commit
that referenced
this pull request
Oct 10, 2026
…widget-context * origin/feat/widget-adapters: Restore files the pre-commit hook reformatted Validate schema-driven forms (#256) Move the recurrence modal off TanStack Form (#254) Move the forms onto the helpers form store (#253) Add a Jotai-native form layer to helpers (#252) Render every schema form through one field renderer (#251) Document and type the form widget contract (#97) Match utility dependencies exactly in the registry (#259)
sneridagh
added a commit
that referenced
this pull request
Oct 10, 2026
…yped-widget-registry * origin/feat/widget-context: Restore files the pre-commit hook reformatted Validate schema-driven forms (#256) Move the recurrence modal off TanStack Form (#254) Move the forms onto the helpers form store (#253) Add a Jotai-native form layer to helpers (#252) Render every schema form through one field renderer (#251) Document and type the form widget contract (#97) Match utility dependencies exactly in the registry (#259)
sneridagh
added a commit
that referenced
this pull request
Oct 10, 2026
… feat/missing-widgets * origin/feat/typed-widget-registry: Restore files the pre-commit hook reformatted Validate schema-driven forms (#256) Move the recurrence modal off TanStack Form (#254) Move the forms onto the helpers form store (#253) Add a Jotai-native form layer to helpers (#252) Render every schema form through one field renderer (#251) Document and type the form widget contract (#97) Match utility dependencies exactly in the registry (#259)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Last part of step 6 of #244. Stacked on #253. After this, nothing in the repo uses
@tanstack/react-form, and it's gone from the lockfile.Changes
useFormStorefrom@plone/helpersinstead of a TanStack form.form.AppFieldblocks become the field components withonChange={setField('name')}.form.Subscribeblocks read the values the modal already subscribes to.FormProvider), soUntilEndFieldkeeps reading the event'sendfrom the content form.onChange(value). None of them passed a function updater.@plone/cmsuidrops the@tanstack/react-formdependency and itsoptimizeDepsentry.Recurrence date fix
The "until" date crash this PR originally fixed has landed on
mainseparately in #255, together with the widget's acceptance test. After the update frommain, this PR only contains the TanStack migration.Not fixed here
The widget's edit and delete buttons, and the modal's submit button, are icon-only with no accessible name. The acceptance test locates them by position. Worth a follow-up (#243 step 5 touches this widget anyway).
Tests
acceptance/tests/recurrence-widget.test.ts, the first for this widget: open the modal, choose Weekly, apply, see the rule in the widget, save the event, and check thatrecurrencecontainsFREQ=WEEKLYthrough the REST API. (It came in with Fix the recurrence modal crash for events ending on days 1 to 9 #255.)toISODate.optimizeDepsaudit are clean.