mirror of https://github.com/artf/grapesjs.git
5 changed files with 587 additions and 144 deletions
@ -0,0 +1,413 @@ |
|||
<!-- Generated by documentation.js. Update this documentation by updating the source code. --> |
|||
|
|||
## Component |
|||
|
|||
The Component object represents a single node of our template structure, so when you update its properties the changes are |
|||
immediatly reflected on the canvas and in the code to export (indeed, when you ask to export the code we just go through all |
|||
the tree of nodes). |
|||
An example on how to update properties: |
|||
|
|||
```js |
|||
component.set({ |
|||
tagName: 'span', |
|||
attributes: { ... }, |
|||
removable: false, |
|||
}); |
|||
component.get('tagName'); |
|||
// -> 'span' |
|||
``` |
|||
|
|||
### Properties |
|||
|
|||
- `type` **[String][1]?** Component type, eg. `text`, `image`, `video`, etc. |
|||
- `tagName` **[String][1]?** HTML tag of the component, eg. `span`. Default: `div` |
|||
- `attributes` **[Object][2]?** Key-value object of the component's attributes, eg. `{ title: 'Hello' }` Default: `{}` |
|||
- `name` **[String][1]?** Name of the component. Will be used, for example, in Layers and badges |
|||
- `removable` **[Boolean][3]?** When `true` the component is removable from the canvas, default: `true` |
|||
- `draggable` **([Boolean][3] \| [String][1])?** Indicates if it's possible to drag the component inside others. |
|||
You can also specify a query string to indentify elements, |
|||
eg. `'.some-class[title=Hello], [data-gjs-type=column]'` means you can drag the component only inside elements |
|||
containing `some-class` class and `Hello` title, and `column` components. Default: `true` |
|||
- `droppable` **([Boolean][3] \| [String][1])?** Indicates if it's possible to drop other components inside. You can use |
|||
a query string as with `draggable`. Default: `true` |
|||
- `badgable` **[Boolean][3]?** Set to false if you don't want to see the badge (with the name) over the component. Default: `true` |
|||
- `stylable` **([Boolean][3] \| [Array][4]<[String][1]>)?** True if it's possible to style the component. |
|||
You can also indicate an array of CSS properties which is possible to style, eg. `['color', 'width']`, all other properties |
|||
will be hidden from the style manager. Default: `true` |
|||
- `stylable-require` **[Array][4]<[String][1]>?** Indicate an array of style properties to show up which has been marked as `toRequire`. Default: `[]` |
|||
- `unstylable` **[Array][4]<[String][1]>?** Indicate an array of style properties which should be hidden from the style manager. Default: `[]` |
|||
- `highlightable` **[Boolean][3]?** It can be highlighted with 'dotted' borders if true. Default: `true` |
|||
- `copyable` **[Boolean][3]?** True if it's possible to clone the component. Default: `true` |
|||
- `resizable` **[Boolean][3]?** Indicates if it's possible to resize the component. It's also possible to pass an object as [options for the Resizer][5]. Default: `false` |
|||
- `editable` **[Boolean][3]?** Allow to edit the content of the component (used on Text components). Default: `false` |
|||
- `layerable` **[Boolean][3]?** Set to `false` if you need to hide the component inside Layers. Default: `true` |
|||
- `selectable` **[Boolean][3]?** Allow component to be selected when clicked. Default: `true` |
|||
- `hoverable` **[Boolean][3]?** Shows a highlight outline when hovering on the element if `true`. Default: `true` |
|||
- `void` **[Boolean][3]?** This property is used by the HTML exporter as void elements don't have closing tags, eg. `<br/>`, `<hr/>`, etc. Default: `false` |
|||
- `content` **[String][1]?** Content of the component (not escaped) which will be appended before children rendering. Default: `''` |
|||
- `icon` **[String][1]?** Component's icon, this string will be inserted before the name (in Layers and badge), eg. it can be an HTML string '<i class="fa fa-square-o"></i>'. Default: `''` |
|||
- `script` **([String][1] \| [Function][6])?** Component's javascript. More about it [here][7]. Default: `''` |
|||
- `traits` **[Array][4]<([Object][2] \| [String][1])>?** Component's traits. More about it [here][8]. Default: `['id', 'title']` |
|||
- `propagate` **[Array][4]<[String][1]>?** Indicates an array of properties which will be inhereted by all NEW appended children. |
|||
For example if you create a component likes this: `{ removable: false, draggable: false, propagate: ['removable', 'draggable'] }` |
|||
and append some new component inside, the new added component will get the exact same properties indicated in the `propagate` array (and the `propagate` property itself). Default: `[]` |
|||
- `toolbar` **[Array][4]<[Object][2]>?** Set an array of items to show up inside the toolbar when the component is selected (move, clone, delete). |
|||
Eg. `toolbar: [ { attributes: {class: 'fa fa-arrows'}, command: 'tlb-move' }, ... ]`. |
|||
By default, when `toolbar` property is falsy the editor will add automatically commands like `move`, `delete`, etc. based on its properties. |
|||
- `components` **Collection<[Component][9]>?** Children components. Default: `null` |
|||
|
|||
## is |
|||
|
|||
Check component's type |
|||
|
|||
### Parameters |
|||
|
|||
- `type` **[string][1]** Component type |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
component.is('image') |
|||
// -> false |
|||
``` |
|||
|
|||
Returns **[Boolean][3]** |
|||
|
|||
## find |
|||
|
|||
Find inner components by query string. |
|||
**ATTENTION**: this method works only with already rendered component |
|||
|
|||
### Parameters |
|||
|
|||
- `query` **[String][1]** Query string |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
component.find('div > .class'); |
|||
// -> [Component, Component, ...] |
|||
``` |
|||
|
|||
Returns **[Array][4]** Array of components |
|||
|
|||
## closest |
|||
|
|||
Find the closest parent component by query string. |
|||
**ATTENTION**: this method works only with already rendered component |
|||
|
|||
### Parameters |
|||
|
|||
- `query` **[string][1]** Query string |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
component.closest('div.some-class'); |
|||
// -> Component |
|||
``` |
|||
|
|||
Returns **[Component][9]** |
|||
|
|||
## replaceWith |
|||
|
|||
Replace a component with another one |
|||
|
|||
### Parameters |
|||
|
|||
- `el` **([String][1] \| [Component][9])** Component or HTML string |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
component.replaceWith('<div>Some new content</div>'); |
|||
// -> Component |
|||
``` |
|||
|
|||
Returns **([Component][9] \| [Array][4]<[Component][9]>)** New added component/s |
|||
|
|||
## setAttributes |
|||
|
|||
Update attributes of the component |
|||
|
|||
### Parameters |
|||
|
|||
- `attrs` **[Object][2]** Key value attributes |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
component.setAttributes({ id: 'test', 'data-key': 'value' }); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## addAttributes |
|||
|
|||
Add attributes to the component |
|||
|
|||
### Parameters |
|||
|
|||
- `attrs` **[Object][2]** Key value attributes |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
component.addAttributes({ 'data-key': 'value' }); |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
## getStyle |
|||
|
|||
Get the style of the component |
|||
|
|||
Returns **[Object][2]** |
|||
|
|||
## setStyle |
|||
|
|||
Set the style on the component |
|||
|
|||
### Parameters |
|||
|
|||
- `prop` **[Object][2]** Key value style object (optional, default `{}`) |
|||
- `opts` (optional, default `{}`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
component.setStyle({ color: 'red' }); |
|||
``` |
|||
|
|||
Returns **[Object][2]** |
|||
|
|||
## getAttributes |
|||
|
|||
Return all component's attributes |
|||
|
|||
Returns **[Object][2]** |
|||
|
|||
## addClass |
|||
|
|||
Add classes |
|||
|
|||
### Parameters |
|||
|
|||
- `classes` **([Array][4]<[String][1]> | [String][1])** Array or string of classes |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
model.addClass('class1'); |
|||
model.addClass('class1 class2'); |
|||
model.addClass(['class1', 'class2']); |
|||
// -> [SelectorObject, ...] |
|||
``` |
|||
|
|||
Returns **[Array][4]** Array of added selectors |
|||
|
|||
## setClass |
|||
|
|||
Set classes (resets current collection) |
|||
|
|||
### Parameters |
|||
|
|||
- `classes` **([Array][4]<[String][1]> | [String][1])** Array or string of classes |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
model.setClass('class1'); |
|||
model.setClass('class1 class2'); |
|||
model.setClass(['class1', 'class2']); |
|||
// -> [SelectorObject, ...] |
|||
``` |
|||
|
|||
Returns **[Array][4]** Array of added selectors |
|||
|
|||
## removeClass |
|||
|
|||
Remove classes |
|||
|
|||
### Parameters |
|||
|
|||
- `classes` **([Array][4]<[String][1]> | [String][1])** Array or string of classes |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
model.removeClass('class1'); |
|||
model.removeClass('class1 class2'); |
|||
model.removeClass(['class1', 'class2']); |
|||
// -> [SelectorObject, ...] |
|||
``` |
|||
|
|||
Returns **[Array][4]** Array of removed selectors |
|||
|
|||
## append |
|||
|
|||
Add new component children |
|||
|
|||
### Parameters |
|||
|
|||
- `components` **([Component][9] \| [String][1])** Component to add |
|||
- `opts` **[Object][2]** Options, same as in `model.add()`(from backbone) (optional, default `{}`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
someComponent.get('components').length // -> 0 |
|||
const videoComponent = someComponent.append('<video></video><div></div>')[0]; |
|||
// This will add 2 components (`video` and `div`) to your `someComponent` |
|||
someComponent.get('components').length // -> 2 |
|||
// You can pass components directly |
|||
otherComponent.append(otherComponent2); |
|||
otherComponent.append([otherComponent3, otherComponent4]); |
|||
``` |
|||
|
|||
Returns **[Array][4]** Array of appended components |
|||
|
|||
## components |
|||
|
|||
Set new collection if `components` are provided, otherwise the |
|||
current collection is returned |
|||
|
|||
### Parameters |
|||
|
|||
- `components` **([Component][9] \| [String][1])?** Components to set |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
// Set new collection |
|||
component.components('<span></span><div></div>'); |
|||
// Get current collection |
|||
const collection = component.components(); |
|||
console.log(collection.length); |
|||
// -> 2 |
|||
``` |
|||
|
|||
Returns **(Collection | [Array][4]<[Component][9]>)** |
|||
|
|||
## parent |
|||
|
|||
Get the parent component, if exists |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
component.parent(); |
|||
// -> Component |
|||
``` |
|||
|
|||
Returns **[Component][9]** |
|||
|
|||
## getName |
|||
|
|||
Get the name of the component |
|||
|
|||
Returns **[String][1]** |
|||
|
|||
## getIcon |
|||
|
|||
Get the icon string |
|||
|
|||
Returns **[String][1]** |
|||
|
|||
## toHTML |
|||
|
|||
Return HTML string of the component |
|||
|
|||
### Parameters |
|||
|
|||
- `opts` **[Object][2]** Options (optional, default `{}`) |
|||
- `opts.attributes` **([Object][2] \| [Function][6])** You can pass an object of custom attributes to replace |
|||
with the current one or you can even pass a function to generate attributes dynamically (optional, default `null`) |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
// Simple HTML return |
|||
component.set({ tagName: 'span' }); |
|||
component.setAttributes({ title: 'Hello' }); |
|||
component.toHTML(); |
|||
// -> <span title="Hello"></span> |
|||
|
|||
// Custom attributes |
|||
component.toHTML({ attributes: { 'data-test': 'Hello' } }); |
|||
// -> <span data-test="Hello"></span> |
|||
|
|||
// Custom dynamic attributes |
|||
component.toHTML({ |
|||
attributes(component, attributes) { |
|||
if (component.get('tagName') == 'span') { |
|||
attributes.title = 'Custom attribute'; |
|||
} |
|||
return attributes; |
|||
}, |
|||
}); |
|||
// -> <span title="Custom attribute"></span> |
|||
``` |
|||
|
|||
Returns **[String][1]** HTML string |
|||
|
|||
## getId |
|||
|
|||
Return the component id |
|||
|
|||
Returns **[String][1]** |
|||
|
|||
## setId |
|||
|
|||
Set new id on the component |
|||
|
|||
### Parameters |
|||
|
|||
- `id` **[String][1]** |
|||
|
|||
Returns **this** |
|||
|
|||
## getEl |
|||
|
|||
Get the DOM element of the component. This works only of the |
|||
component is already rendered |
|||
|
|||
Returns **[HTMLElement][10]** |
|||
|
|||
## onAll |
|||
|
|||
Execute callback function on itself and all inner components |
|||
|
|||
### Parameters |
|||
|
|||
- `clb` **[Function][6]** Callback function, the model is passed as an argument |
|||
|
|||
### Examples |
|||
|
|||
```javascript |
|||
component.onAll(component => { |
|||
// do something with component |
|||
}) |
|||
``` |
|||
|
|||
Returns **this** |
|||
|
|||
[1]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String |
|||
|
|||
[2]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object |
|||
|
|||
[3]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean |
|||
|
|||
[4]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array |
|||
|
|||
[5]: https://github.com/artf/grapesjs/blob/master/src/utils/Resizer.js |
|||
|
|||
[6]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function |
|||
|
|||
[7]: /modules/Components-js.html |
|||
|
|||
[8]: /modules/Traits.html |
|||
|
|||
[9]: #component |
|||
|
|||
[10]: https://developer.mozilla.org/docs/Web/HTML/Element |
|||
Loading…
Reference in new issue