React HtmlEditor - toolbar.items
The toolbar provides predefined items and supports custom items. To add a predefined item to the toolbar, include it in the items array:
jQuery
$(function(){ $("#htmlEditorContainer").dxHtmlEditor({ toolbar: { items: [ "bold", "italic", "alignCenter", "undo", "redo" ] } }) })
Angular
<dx-html-editor> <dxo-toolbar [items]="[ 'bold', 'italic', 'alignCenter', 'undo', 'redo' ]"></dxo-toolbar> </dx-html-editor>
import { DxHtmlEditorModule } from "devextreme-angular"; // ... export class AppComponent { // ... } @NgModule({ imports: [ // ... DxHtmlEditorModule ], // ... })
ASP.NET MVC Controls
@(Html.DevExtreme().HtmlEditor() .Toolbar(t => t .Items(i => { i.Add().FormatName("bold"); i.Add().FormatName("italic"); i.Add().FormatName("alignCenter"); i.Add().FormatName("undo"); i.Add().FormatName("redo"); }) ) )
Most of the predefined items are buttons. To customize a button, assign its name to the formatName property and specify the button properties in the options object:
jQuery
$(function(){ $("#htmlEditorContainer").dxHtmlEditor({ toolbar: { items: [ // ... { formatName: "clear", options: { icon: "clear", type: "danger" } }] } }) })
Angular
import { DxHtmlEditorModule } from "devextreme-angular"; // ... export class AppComponent { items: any = [ // ... { formatName: "clear", options: { icon: "clear", type: "danger" } }]; } @NgModule({ imports: [ // ... DxHtmlEditorModule ], // ... })
<dx-html-editor> <dxo-toolbar [items]="items"></dxo-toolbar> </dx-html-editor>
ASP.NET MVC Controls
@(Html.DevExtreme().HtmlEditor() .Toolbar(t => t .Items(i => { i.Add().FormatName("clear") .Widget(w => w.Button() .Icon("clear") .Type(ButtonType.Danger) ); }) ) )
To use another UI component instead of a button, specify the widget property and configure the UI component in the options object. In this case, you should also implement all the logic.
The toolbar provides a short syntax for implementing a custom drop-down menu with multiple choices. Refer to the formatName description for more information.
component
An alias for the template property specified in React. Accepts a custom component. Refer to Using a Custom Component for more information.
formatName
To customize a predefined item, assign its name to this property and specify the other item properties.
This property also accepts names of formats with multiple choices. In addition to the format name, specify formatValues. On the toolbar, such formats are represented by SelectBox UI components whose properties you can specify in the options object.
In the following code, the header
and size
formats are configured as described in the previous paragraph:
jQuery
$(function(){ $("#htmlEditorContainer").dxHtmlEditor({ toolbar: { items: [ // ... { formatName: "header", formatValues: [1, 2, 3, false], options: { width: 150 } }, { formatName: "size", formatValues: ["11px", "14px", "16px"] }] } }) })
Angular
import { DxHtmlEditorModule } from "devextreme-angular"; // ... export class AppComponent { items: any = [ // ... { formatName: "header", formatValues: [1, 2, 3, false], options: { width: 150 } }, { formatName: "size", formatValues: ["11px", "14px", "16px"] }]; } @NgModule({ imports: [ // ... DxHtmlEditorModule ], // ... })
<dx-html-editor> <dxo-toolbar [items]="items"></dxo-toolbar> </dx-html-editor>
Refer to the Formats article for a full list of available formats.
See Also
formatValues
Specifies values for a format with multiple choices. Should be used with the formatName.
Formats with multiple choices are represented by SelectBox UI components whose properties you can specify in the options object.
locateInMenu
Use the ToolbarItemLocateInMenuMode
enum to specify this property when the UI component is used as an ASP.NET MVC 5 Control or a DevExtreme-Based ASP.NET Core Control. This enum accepts the following values: Always
, Never
, and Auto
.
location
Whatever template you use for UI component items (default or a custom) will be located according to the value specified for the location field in the item data source object.
Use the ToolbarItemLocation
enum to specify this property when the UI component is used as an ASP.NET MVC 5 Control or a DevExtreme-Based ASP.NET Core Control. This enum accepts the following values: Before
, After
, and Center
.
See Also
menuItemComponent
An alias for the menuItemTemplate property specified in React. Accepts a custom component. Refer to Using a Custom Component for more information.
menuItemRender
An alias for the menuItemTemplate property specified in React. Accepts a rendering function. Refer to Using a Rendering Function for more information.
menuItemTemplate
The following types of the specified value are available.
- Assign a string containing the name of the required template.
- Assign a jQuery object of the template's container.
- Assign a DOM Node of the template's container.
- Assign a function that returns the jQuery object or a DOM Node of the template's container.
See Also
options
options should contain the properties of the DevExtreme UI component specified in the widget property. Because of this dependency, options cannot be typed and are not implemented as nested configuration components in Angular, Vue, and React. In these frameworks, specify options with an object. We recommend that you declare the object outside the configuration component in Vue and React to prevent possible issues caused by unnecessary re-rendering.
Angular
<dx-html-editor ... > <dxo-toolbar> <dxi-item widget="dxCheckBox" [options]="{ text: 'Show IDs' }"> </dxi-item> </dxo-toolbar> </dx-html-editor>
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import { DxHtmlEditorModule } from 'devextreme-angular'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, DxHtmlEditorModule ], providers: [ ], bootstrap: [AppComponent] }) export class AppModule { }
Vue
<template> <DxHtmlEditor ... > <DxToolbar> <DxItem widget="dxCheckBox" :options="checkBoxOptions" /> </DxToolbar> </DxHtmlEditor> </template> <script> import 'devextreme/dist/css/dx.common.css'; import 'devextreme/dist/css/dx.light.css'; import DxHtmlEditor, { DxToolbar, DxItem } from 'devextreme-vue/html-editor'; export default { components: { DxHtmlEditor, DxToolbar, DxItem }, data() { return { checkBoxOptions: { text: 'Show IDs' } } } } </script>
React
import React from 'react'; import 'devextreme/dist/css/dx.common.css'; import 'devextreme/dist/css/dx.light.css'; import HtmlEditor, { Toolbar, Item } from 'devextreme-react/html-editor'; class App extends React.Component { checkBoxOptions = { text: 'Show IDs' }; render() { return ( <HtmlEditor ... > <Toolbar> <Item widget="dxCheckBox" options={this.checkBoxOptions} /> </Toolbar> </HtmlEditor> ); } } export default App;
render
An alias for the template property specified in React. Accepts a rendering function. Refer to Using a Rendering Function for more information.
showText
The text should be specified in the options configuration object.
Use the ToolbarItemShowTextMode
enum to specify this property when the UI component is used as an ASP.NET MVC 5 Control or a DevExtreme-Based ASP.NET Core Control. This enum accepts the following values: Always
and InMenu
.
template
The following types of the specified value are available.
- Assign a string containing the name of the required template.
- Assign a jQuery object of the template's container.
- Assign a DOM Node of the template's container.
- Assign a function that returns the jQuery object or a DOM Node of the template's container.
See Also
widget
Configure the specified UI component in the options object. You can find information on available UI component properties in the UI component's API reference.
In the following example, the CheckBox UI component is added as a custom toolbar item. It has a label and a custom valueChanged event handler. The toolbar item's locateInMenu property is set to "never" to specify that the toolbar item should never be hidden in the overflow menu.
jQuery
$(function(){ $("#htmlEditorContainer").dxHtmlEditor({ toolbar: { items: [ // ... { widget: "dxCheckBox", options: { text: "My Format", onValueChanged: function(e) { // Implement your logic here }, // ... }, locateInMenu: "never" }] } }) })
Angular
import { DxHtmlEditorModule, DxCheckBoxModule } from "devextreme-angular"; // ... export class AppComponent { items: any = [ // ... { widget: "dxCheckBox", options: { text: "My Format", onValueChanged: function(e) { // Implement your logic here }, // ... }, locateInMenu: "never" }]; } @NgModule({ imports: [ // ... DxHtmlEditorModule, DxCheckBoxModule ], // ... })
<dx-html-editor> <dxo-toolbar [items]="items"></dxo-toolbar> </dx-html-editor>
ASP.NET MVC Controls
@(Html.DevExtreme().HtmlEditor() .Toolbar(t => t .Items(i => { i.Add().LocateInMenu(ToolbarItemLocateInMenuMode.Never) .Widget(w => w.CheckBox() .Text("My Format") .OnValueChanged("myFormat_valueChanged") ); }) ) ) <script> function myFormat_valueChanged(e) { // Implement your logic here } </script>
See Also
If you have technical questions, please create a support ticket in the DevExpress Support Center.