React HtmlEditor - toolbar.items

Configures toolbar controls. These controls allow users to format text and execute commands.

Type:

Object

The toolbar provides built-in controls and supports custom controls. To add a built-in control to the toolbar, include it in the items array:

jQuery
JavaScript
$(function(){
    $("#htmlEditorContainer").dxHtmlEditor({
        toolbar: {
            items: [ "bold", "italic", "alignCenter", "undo", "redo" ]
        }
    })
})
Angular
HTML
TypeScript
<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
Razor C#
@(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");
        })
    )
)

The following built-in controls are available:

Formatting Controls Action and Other Controls
  • "background"
  • "bold"
  • "color"
  • "italic"
  • "link"
  • "image"
  • "strike"
  • "subscript"
  • "superscript"
  • "underline"
  • "blockquote"
  • "header"
  • "increaseIndent"
  • "decreaseIndent"
  • "orderedList"
  • "bulletList"
  • "alignLeft"
  • "alignCenter"
  • "alignRight"
  • "alignJustify"
  • "codeBlock"
  • "variable"
  • "separator"
  • "undo"
  • "redo"
  • "clear"

These controls are buttons. To customize a button, assign its name to the formatName option and specify the button options in the options object:

jQuery
JavaScript
$(function(){
    $("#htmlEditorContainer").dxHtmlEditor({
        toolbar: {
            items: [ // ...
            { 
                formatName: "clear", 
                options: { icon: "clear", type: "danger" }
            }]
        }
    })
})
Angular
TypeScript
HTML
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
Razor C#
@(Html.DevExtreme().HtmlEditor()
    .Toolbar(t => t
        .Items(i => { 
            i.Add().FormatName("clear")
                .Widget(w => w.Button()
                    .Icon("clear")
                    .Type(ButtonType.Danger)
                );
        })
    )
)

To use another widget instead of a button, specify the widget option and configure the widget in the options object. In this case, you should also implement all the logic.

The toolbar also provides short syntax for implementing a custom drop-down control with multiple choices. Refer to the formatName description for more information.

View Demo

cssClass

Specifies a CSS class to be applied to the item.

Type:

String

Default Value: undefined

disabled

Specifies whether a widget item should be disabled.

Type:

Boolean

Default Value: false

formatName

Specifies the built-in control that this object customizes or a format with multiple choices.

Type:

String

To customize a built-in control, assign its name to this option and specify the other control options. See the full list of available controls in the items description.

This option 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 widgets whose options you can specify in the options object.

View Demo

In the following code, the header and size formats are configured as described in the previous paragraph:

jQuery
JavaScript
$(function(){
    $("#htmlEditorContainer").dxHtmlEditor({
        toolbar: {
            items: [ // ...
            {
                formatName: "header",
                formatValues: [1, 2, 3, false],
                options: {
                    width: 150
                }
            }, {
                formatName: "size",
                formatValues: ["11px", "14px", "16px"]
            }]
        }
    })
})
Angular
TypeScript
HTML
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>

The following tables list available formats and their values categorized in three groups: inline (or text), block, and embedded formats.

Inline (or text) formats Block Formats
Format Name Accepted Values
background Any value the background-color CSS property accepts.
bold true, false
color Any value the color CSS property accepts.
font Any value the font-family CSS property accepts.
italic true, false
link String
or
Object ({ href: String, text: String, target: Boolean })
size Any value the font-size CSS property accepts.
strike true, false
script "sub", "super", false
underline true, false
Format Name Accepted Values
blockquote true, false
header 1, 2, 3, 4, 5, 6, false
indent "+1", "-1", false
list "ordered", "bullet", false
align "left", "right", "center", "justify", false
code-block true, false

Embedded formats

Format Name Value Types
extendedImage String
or
Object ({ src: String, width: Number, height: Number, alt: String })
variable Object {{ value: String, escapeChar: String | Array<String> }}
See Also

formatValues

Specifies values for a format with multiple choices. Should be used with the formatName.

Type:

Array<String | Number | Boolean>

Formats with multiple choices are represented by SelectBox widgets whose options you can specify in the options object.

html

Specifies html code inserted into the widget item element.

Type:

String

locateInMenu

Specifies when to display an item in the toolbar's overflow menu.

Type:

String

Default Value: 'never'
Accepted Values: 'always' | 'auto' | 'never'

Use the ToolbarItemLocateInMenuMode enum to specify this option when the widget is used as an ASP.NET MVC Control. This enum accepts the following values: Always, Never, and Auto.

location

Specifies a location for the item on the toolbar.

Type:

String

Default Value: 'before'
Accepted Values: 'after' | 'before' | 'center'

Whatever template you use for widget 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 option when the widget is used as an ASP.NET MVC Control. This enum accepts the following values: Before, After, and Center.

See Also

menuItemTemplate

Specifies a template that should be used to render a menu item.

Type:

template

Template Data: undefined

Whether you use a default or a custom template for menu items, you can specify a specific template for a particular menu item. To do so, set the menuItemTemplate field for the data source object of this menu item. 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

Specifies a configuration object for the widget that presents a toolbar item.

Type:

Object

This data source field is used by a default item template. If you use the default template for your widget items, and specify the widget field in the toolbar data source, you can specify the options field as well. Set the configuration options that are exposed by the configuration object of the specified widget.

NOTE
If you use the Menu widget as a toolbar item, the adaptivityEnabled option does not apply.
NOTE
The fields of a configuration object passed to this option do not support two-way binding in Angular, AngularJS, and Knockout and event bindings in Angular.
See Also

showText

Specifies when to display the text for the widget item.

Type:

String

Default Value: 'always'
Accepted Values: 'always' | 'inMenu'

The text should be specified in the options configuration object.

NOTE
This option is available only for the dxButton widget that presents a toolbar item.

Use the ToolbarItemShowTextMode enum to specify this option when the widget is used as an ASP.NET MVC Control. This enum accepts the following values: Always and InMenu.

template

Specifies an item template that should be used to render this item only.

Type:

template

Template Data: undefined

Whether you use a default or a custom template for widget items, you can specify a specific template for a particular item. To do so, set the template field for the data source object of this item. 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

text

Specifies text displayed for the widget item.

Type:

String

visible

Specifies whether or not a widget item must be displayed.

Type:

Boolean

Default Value: true

widget

The name of the widget that should represent the toolbar control.

Type:

String

Accepted Values: 'dxAutocomplete' | 'dxButton' | 'dxCheckBox' | 'dxDateBox' | 'dxMenu' | 'dxSelectBox' | 'dxTabs' | 'dxTextBox' | 'dxButtonGroup'

NOTE
Import the specified widget's module when using DevExtreme modules.

Configure the specified widget in the options object. You can find information on available widget options in the widget's API reference.

View Demo

In the following example, the CheckBox widget with a label and a custom valueChanged event handler is added as a custom toolbar control. The locateInMenu option set to "never" ensures that the toolbar control is never hidden to the overflow menu.

jQuery
JavaScript
$(function(){
    $("#htmlEditorContainer").dxHtmlEditor({
        toolbar: {
            items: [ // ...
            {
                widget: "dxCheckBox",
                options: {
                    text: "My Format",  
                    onValueChanged: function(e) {
                        // Implement your logic here
                    },
                    // ...
                },
                locateInMenu: "never"
            }]
        }
    })
})
Angular
TypeScript
HTML
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
Razor C#
@(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