decaporg / decaporg/decap-website

Collapsible Note custom editor component from the documentation not working

Open
#13 2 comments 0 reactions 0 assignees View on GitHub
bug documentation
Dominant language
SCSS
Stars
13
Forks
319
Avg merge
6d 3h
Merged PRs (30d)
1

Description

**Describe the bug**
I am trying to use Custom Editor Components and I cant get the markdown widget to behave properly
Just using the Collapsible Note example from the documentation results in an "undefined" displayed in the "details" part of the component.

**To Reproduce**
1. Add the Collapsible Note example to your `cms.js`:

```
CMS.registerEditorComponent({
// Internal id of the component
id: "collapsible-note",
// Visible label
label: "Collapsible Note",
// Fields the user need to fill out when adding an instance of the component
fields: [
{
name: 'summary',
label: 'Summary',
widget: 'string'
},
{
name: 'details',
label: 'Details',
widget: 'markdown'
}
],
// Regex pattern used to search for instances of this block in the markdown document.
// Patterns are run in a multline environment (against the entire markdown document),
// and so generally should make use of the multiline flag (`m`). If you need to capture
// newlines in your capturing groups, you can either use something like
// `([\S\s]*)`, or you can additionally enable the "dot all" flag (`s`),
// which will cause `(.*)` to match newlines as well.
//
// Additionally, it's recommended that you use non-greedy capturing groups (e.g.
// `(.*?)` vs `(.*)`), especially if matching against newline characters.
pattern: /^$\s*?(.*?)<\/summary>\n\n(.*?)\n^<\/details>$/ms,
// Given a RegExp Match object
// (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match#return_value),
// return an object with one property for each field defined in `fields`.
//
// This is used to populate the custom widget in the markdown editor in the CMS.
fromBlock: function(match) {
return {
summary: match[1],
detail: match[2]
};
},
// Given an object with one property for each field defined in `fields`,
// return the string you wish to be inserted into your markdown.
//
// This is used to serialize the data from the custom widget to the
// markdown document
toBlock: function(data) {
return `

${data.summary}

${data.detail}

`;
},
// Preview output for this component. Can either be a string or a React component
// (component gives better render performance)
toPreview: function(data) {
return `

${data.summary}

${data.detail}

`;
}
});
```
2. Going to your markdown editor and adding a Collapsible Note component
3. Putting text in it
4. Observing the "undefined" text on the preview

**Expected behavior**
Having a preview that displays the text in the "details" area

**Screenshots**
![image](https://user-images.githubusercontent.com/9805355/146638870-b3405b9f-1fe5-4827-995e-1684526cf5aa.png)

**Applicable Versions:**
- netlify-cms-app 2.15.61
- netlify-cms-core 2.54.2
- OS: Fedora 35
- Browser version: Firefox 95.0
- Node.JS version: v12

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.