[Custom Widget] Multi-field text viewer with tabs, inline renaming & lock mode

Hi everyone,

Sharing a custom widget I built to display multiple long text fields from a selected record in a compact tabbed interface.

Typical use case: tables with multiple comments, specialist opinions, or structured notes — anything that’s painful to read in a standard card view.

What it does

  • Dynamic tabs — auto-detects columns from the record, no code configuration needed
  • Hover tooltips — auto-populated from native Grist column descriptions (column panel → Description field)
  • Synchronized renaming — double-click a tab to rename it inline: updates both the widget label and the Grist column label simultaneously
  • Lock mode :locked: — hides settings for read-only users; editors keep access via ⋯ → Widget options
  • localStorage persistence — no Grist “Save layout” bar triggered on config changes
  • Excluded columns, drag-and-drop reordering, title column picker

Links

Quick setup

  1. Add a view → Custom Widget
  2. Paste the URL above
  3. Access level: Full (required for column renaming)
  4. Link to your table via “Data from”

Notes

  • The widget reads _grist_Tables_column to fetch native column descriptions automatically
  • Column renaming uses applyUserActionsUpdateRecord on _grist_Tables_column (label field only — colId is never changed, so formulas and references are safe)
  • Config is stored in localStorage with a key scoped to tableId, so multiple instances on different tables don’t interfere

Other widgets from the same author

Feedback and issues welcome on GitHub!

2 Likes