Repository navigation
feat(pages): add the grid canvas and its widgets - #3213
Open
rubenvdlinde wants to merge 2 commits into
Open
rubenvdlinde wants to merge 2 commits into
rubenvdlinde wants to merge 2 commits into
Conversation
This was referenced Nov 3, 2026
A grid page shows widgets on a 12 column GridStack canvas: a header, a text and a table or view. Widgets carry an optional named icon and description next to their title. In edit mode widgets can be dragged and resized, and moved and resized from their menu with a keyboard. On a narrower screen the grid reflows to 6 columns or one, and that reflow is never saved. Assisted-by: ClaudeCode:claude-opus-5-5 Signed-off-by: Ruben van der Linde <ruben@conduction.nl>
…tle once A data widget without a title of its own takes the title of its table or view, and the table or view inside it no longer repeats it. A widget without a title gets no header in edit mode either: its menu floats over it, so switching edit mode no longer moves the widgets. The edit mode outline uses the regular border colour. Assisted-by: ClaudeCode:claude-opus-5-5 Signed-off-by: Ruben van der Linde <ruben@conduction.nl>
rubenvdlinde
force-pushed
the
feat/noid/grid-canvas
branch
from
November 5, 2026 11:59
fe08042 to
4be217b
Compare
Author
|
Following @jancborchardt's feedback on #3099: a table widget shows its title once, a widget keeps the same size in view and edit mode, and the edit mode outline uses
|
rubenvdlinde
marked this pull request as ready for review
November 6, 2026 08:24
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.


Part of #3099, on top of #3212 (tabs model). The first frontend pull request for grid pages: the canvas and the three widgets that render on it. Nothing uses them yet; #3214 adds the dialog to add and configure widgets and #3215 puts the grid on a page. The whole stack is listed in #3211. None of it needs the menu (#3135 to #3138).
Size: 1313 lines: 1082 code (17 of them in
package-lock.json) and 231 tests.What changes
start,centerorend, and colours), a text and a table or view. The table or view widget shows the rows with the same components as the start page, and only tables and views of its own application. A widget of a type this frontend can't render says so instead of failing.NamedIconshows an icon by name, and pages and menu items can use it too.GET /api/2/widget-typesonce, shared by all widgets that mount together; the card uses them for its type label.How it was tested
GridCanvas.cy.js(placing widgets, edit mode on a wide and a narrow screen, a widget added later),GridWidget.cy.js(title, icon, description and header alignment, the empty states of a data widget, moving from the menu) andgridLayout.cy.js(reading a page into a grid and saving it back, including icon and description)npm run lint,npm run stylelintandnpm run build🖼️ Screenshots
No screen yet: #3215 puts the grid on a page, its pull request has the screenshots.
🏁 Checklist
/backport to stableX.X🤖 AI (if applicable)