Skip to content

[6.x] Added form modal and slideout actions to Table node cells - #19843

Merged
brandonkelly merged 12 commits into
feature/6.x-form-component-compatibility-and-usage-updatesfrom
feature/6.x-table-node-cell-actions
Oct 6, 2026
Merged

brandonkelly merged 12 commits into
feature/6.x-form-component-compatibility-and-usage-updatesfrom
feature/6.x-table-node-cell-actions

Conversation

@lukeholder

@lukeholder lukeholder commented Oct 6, 2026 •

Copy link
Copy Markdown
Member

Description

Lets a Form Table node's cells do more than link out, so a table can act on a row without leaving the screen. Commerce's inventory stock levels screen needs this for its set, adjust and move quantity actions and for editing an inventory item.

  • Menu items that open a modal Form. An item in a menu cell can be ['label', 'modalUrl', 'actionUrl', 'params'] instead of a link. It opens the existing FormModal: modalUrl is requested with params and returns {form, title?, submitLabel?}, and submitting posts the form's values plus params to actionUrl, then reloads the table.
  • Links that open in a slideout. A link cell with 'slideout' => true opens its URL's screen with openSlideout() and reloads the table once that screen is saved. A modified click still follows the link.
  • Menu cells work. The menu cell's button was never given slot="invoker", so craft-action-menu had no trigger and filed the button away with its content. It now gets the slot attributes ActionMenu passes to its invoker.
  • Menu cells read as cell text until needed. The button is plain and flush, and its chevron only shows while the row is hovered or focused or the menu is open. It stays visible where there is no hover.
  • Rows without an id no longer crash the table. getRowId returned "undefined" for every row with no id, and the duplicate row ids sent DataTable into a render loop (Maximum recursive updates exceeded). Rows now fall back to their index. Table::rows() only documents id as needed for reordering and deleting.
CleanShot 2026-10-06 at 2 28 59 PM@2x CleanShot 2026-10-06 at 2 31 12 PM@2x

Generated with Claude Code

@github-actions

github-actions Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

📚 Storybook previews

@craftcms/ui — open Storybook

Changed components:

resources/js — open Storybook

No changed components detected in this Storybook.

lukeholder and others added 10 commits October 6, 2026 14:33
…tes' into feature/6.x-table-node-cell-actions
Save the Storybook cache under a key unique to each run and restore it by
the content-hash prefix. With a fixed key, a run cancelled by
cancel-in-progress while saving held the reservation, so the next run
couldn't save it, and its deploy jobs restored nothing and failed to find
Storybook. Deploy jobs now fail fast on a cache miss.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`$prefix` ran straight into the substituted run ID, so bash read it as one
undefined variable and the key came out as `-1` for every run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@brandonkelly
brandonkelly merged commit a8033ce into feature/6.x-form-component-compatibility-and-usage-updates Oct 6, 2026
9 checks passed
@brandonkelly
brandonkelly deleted the feature/6.x-table-node-cell-actions branch October 6, 2026 11:02
@brandonkelly

Copy link
Copy Markdown
Member

@lukeholder sorry, I accidentally merged this before @nfourtythree had a chance to approve.

Any changes could be made on #19665 though.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants