1.4.0 • Published 7 years ago
cm-pages-builder v1.4.0
cm-page-builder
Page builder package like notion
Installation
Run npm install -s cm-page-builder
Add to your index.html the fonts cdn: <link rel="stylesheet" href="https://d1azc1qln24ryf.cloudfront.net/120939/EXPAV3/style-cf.css?crxvf0">
Import it as import PageBuilder from 'cm-page-builder'
Initialization
A PageBuilder component looks like this:
<PageBuilder
meta={meta}
pageComponents={pageComponents}
typeMapping={TYPE_MAP_COMPONENT}
REVERSE_TYPE_MAP_COMPONENT={REVERSE_TYPE_MAP_COMPONENT}
handleUpdate={this._updatePageComponent}
status={this.state.status}
requestHandler={requestHandler}
pageCategories={getResourceCategories()}
currentOffices={currentPerson.creatable_offices_for_pages}
/>Props
Page components.
A list of Page components, to be initialized. They have the following structure
{
component_attachment: { content: String, filename: String, url: String}
component_type: String
content: String
position: Number
}Status (default: Edit):
Has to be one of Edit
handleUpdate(id, data, type, key):
A function that gets fired every time something happens with the components of a page. It receives four parameters, id, data, type, key
id: The ID of the component,data: The data inside the component.type: The kind of change that has happened with the component. It can be any of"createComponent""updateComponent""deleteComponent"
key:undefined
typeMapping
A hash that maps snake_cased names of components with cm-page-builder components found inside the src/components folder. Available components are
Header1: The equivalent of a h1 tagHeader2: The equivalent of a h2 tagOList: An ordered list. Two or more adjacent components of this type will make a group, and the position number will increase sequentially within that groupUList: An unordered listText: The default component, regular text. It may have HTML formattingEmbed: A vimeo or youtube video which is meant to be displayed as an embed fileUpload: A file.component_attachmentwill hold all relevant information. If it is an image, it should be displayed as an embedded imageDivider: A line divider.