Skip to content

Initialize ContentEditor in its main Vue component

What does this MR do?

This MR moves the initialization of the ContentEditor object from the feature using the Content Editor to the ContentEditor Vue component. The ContentEditor object is the single source of truth for state management and business logic of the Editor.

We initially created an instance of ContentEditor outside ContentEditor.vue because the Editor‘s client also needed to invoke methods included in the ContentEditor to set load a Markdown document into the Editor and get a Markdown version of a Content Editor document. ContentEditor.vue also needs the instance of ContentEditor to update the state of the toolbar and other UI elements:

sequenceDiagram
    participant A as Wiki
    participant B as ContentEditor.vue
    participant C as ContentEditor.js
    B->>C: isBoldActive?
    C-->>B: Yes
    A->>C: getSerializedContent
    C-->>A: MarkdownString

However, the ContentEditor instance is not a reactive object and passing it down as a property to ContentEditor.vue introduces maintainability problems and a complicated workflow. You can see an extended explanation here. We are moving the initialization of ContentEditor inside ContentEditor.vue but allowing at the same time to access this object by triggering an initialized event.

Breaking down this MR

We’ve spin off smaller MRs to deliver individual commits included in this MR:

Screenshots or Screencasts (strongly suggested)

This MR does not introduce user-facing changes.

How to setup and validate locally (strongly suggested)

This MR does not introduce new behavior to the Content Editor

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

Does this MR contain changes to processing or storing of credentials or tokens, authorization and authentication methods or other items described in the security review guidelines? If not, then delete this Security section.

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team
Edited by Enrique Alcántara

Merge request reports