devexpress-richedit
Version: 
DevExpress Rich Text Editor is an advanced word-processing tool designed for working with rich text documents.
46 lines (45 loc) • 1.99 kB
JavaScript
import dxSelectBox from 'devextreme/ui/select_box';
import { ToolbarDropDownItemTemplateCreator } from './base-types';
export class SelectBoxToolbarItemTemplateCreator extends ToolbarDropDownItemTemplateCreator {
    constructor(options) {
        super();
        this.options = options;
    }
    createTemplate() {
        const result = super.createTemplate();
        result.widget = 'dxSelectBox';
        const widgetOptions = this.getWidgetOptions();
        if (this.shouldCreateTextContentTemplate(this.options.itemOptions.textOptions))
            result.template = this.createTextContentTemplate(this.options.itemOptions.textOptions, widgetOptions, dxSelectBox);
        else
            result.options = widgetOptions;
        return result;
    }
    getOnCustomItemCreating(itemOptions) {
        return itemOptions.acceptCustomValue && itemOptions.onCustomItemCreating ? itemOptions.onCustomItemCreating :
            function (e) { if (!e.customItem) {
                e.customItem = e.text;
            } };
    }
    getWidgetOptions() {
        const itemOptions = this.options.itemOptions;
        return {
            placeholder: itemOptions.placeholder,
            stylingMode: 'filled',
            searchEnabled: true,
            acceptCustomValue: itemOptions.acceptCustomValue,
            dataSource: itemOptions.dataSource,
            width: itemOptions.width,
            displayExpr: itemOptions.displayExpr,
            valueExpr: itemOptions.valueExpr,
            value: itemOptions.value,
            showClearButton: itemOptions.showClearButton,
            onValueChanged: this.options.onValueChanged,
            onInitialized: this.options.onInitialized,
            onFocusOut: super.getOnFocusOut(),
            onKeyDown: super.getOnKeyDown(),
            onCustomItemCreating: this.getOnCustomItemCreating(itemOptions),
            elementAttr: { class: this.getCssClass() }
        };
    }
}