Skip to content

Add global component type with focus-edit mode#91

Open
toriaezunama wants to merge 1 commit into
GrapesJS:masterfrom
toriaezunama:feat/global-components-edit-mode
Open

Add global component type with focus-edit mode#91
toriaezunama wants to merge 1 commit into
GrapesJS:masterfrom
toriaezunama:feat/global-components-edit-mode

Conversation

@toriaezunama

Copy link
Copy Markdown

Introduces a three-type shared component model:

  • Local: default GrapesJS components (no changes).
  • Saved (Template): unlinked reusable starting points, surfaced as Blocks under a "Templates" category from a new templates plugin option. Capture is wired via a "Save as Template" command that invokes onSaveTemplate, letting the host persist the payload.
  • Global (Linked): a new global-component custom type wrapping a GrapesJS Symbol for in-page sync, tagged with data-global-id for cross-page identity. "Make Global" command promotes the selection.

Adds a "Component edit mode" entered by double-clicking a Global: the rest of the canvas dims (opacity 0.3, pointer-events none) while the focused subtree remains full opacity and interactive — the visual cue that edits will propagate to every linked instance. CSS is iframe-scoped and DOM-only, so no transient classes leak into exported HTML. Exits on Escape, click-outside, preview/device change, undo/redo, or removal of the focused component.

New toolbar buttons: Make Global, Save as Template, Edit Component (gated on selection type = global-component).

Introduces a three-type shared component model:

- Local: default GrapesJS components (no changes).
- Saved (Template): unlinked reusable starting points, surfaced as Blocks
  under a "Templates" category from a new `templates` plugin option.
  Capture is wired via a "Save as Template" command that invokes
  `onSaveTemplate`, letting the host persist the payload.
- Global (Linked): a new `global-component` custom type wrapping a
  GrapesJS Symbol for in-page sync, tagged with `data-global-id` for
  cross-page identity. "Make Global" command promotes the selection.

Adds a "Component edit mode" entered by double-clicking a Global: the
rest of the canvas dims (opacity 0.3, pointer-events none) while the
focused subtree remains full opacity and interactive — the visual cue
that edits will propagate to every linked instance. CSS is iframe-scoped
and DOM-only, so no transient classes leak into exported HTML. Exits on
Escape, click-outside, preview/device change, undo/redo, or removal of
the focused component.

New toolbar buttons: Make Global, Save as Template, Edit Component
(gated on selection type = global-component).
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.

1 participant