fix(editor): make page slug editable via a new Page settings dialog#220
Open
gxvr wants to merge 4 commits into
Open
fix(editor): make page slug editable via a new Page settings dialog#220gxvr wants to merge 4 commits into
gxvr wants to merge 4 commits into
Conversation
A page's slug could only be set at creation time — the site explorer's inline rename only ever updates the title (renamePage(id, title) with no third arg leaves the slug untouched), and there was no other slug editor for a regular (non-template) page. The Data tab correctly locks slug as an editor-managed built-in field, but the editor had nowhere to actually manage it. Add a "Page settings" context-menu item (regular pages only — template pages already get title+slug through the existing Template settings dialog) that opens a small Title + Slug form, reusing the same slug validation helpers as TemplateSettingsDialog. The homepage's slug field is disabled since "index" is a reserved sentinel, not a freely editable value. Extracted the Template/Page settings dialog state and handlers into a usePageSettingsDialogs hook — adding the new dialog inline pushed SiteExplorerPanel.tsx over the 700-line module-size-budgets ceiling. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…elds Pages, Components, and Layouts start out with every field marked built-in and value-locked (isBuiltInValueLocked), so a generic "Add row" or "Duplicate row" through the Data tab has nothing it can actually fill in — buildEmptyCells and buildDuplicateRowCells always include the locked field keys, and the server's lockedBuiltInCellKey guard rejects the request every time. The UI offered both actions unconditionally, so clicking them silently did nothing beyond a console.error, making the whole table look broken/read-only. Add tableHasEditableFields(table) to systemTableGuard.ts (true when at least one field isn't value-locked) and use it in DataCanvas to hide both affordances for tables where every field is locked. As defense in depth, also surface handleAddRow / handleDuplicateRow failures via the toast bus instead of console.error-only, matching this project's error-handling convention for user-triggered operations. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
fix(data): hide Add row / Duplicate row on tables with no editable fi…
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.
A page's slug could only be set at creation time — the site explorer's inline rename only ever updates the title (renamePage(id, title) with no third arg leaves the slug untouched), and there was no other slug editor for a regular (non-template) page. The Data tab correctly locks slug as an editor-managed built-in field, but the editor had nowhere to actually manage it.
Add a "Page settings" context-menu item (regular pages only - template pages already get title+slug through the existing Template settings dialog) that opens a small Title + Slug form, reusing the same slug validation helpers as TemplateSettingsDialog. The homepage's slug field is disabled since "index" is a reserved sentinel, not a freely editable value.
Extracted the Template/Page settings dialog state and handlers into a usePageSettingsDialogs hook — adding the new dialog inline pushed SiteExplorerPanel.tsx over the 700-line module-size-budgets ceiling.
Summary
Describe the change and why it is needed.
Verification
bun run buildbun testbun run lintChecklist