diff --git a/src/public/app/widgets/type_widgets/editable_text.js b/src/public/app/widgets/type_widgets/editable_text.js index 2a191c3d0..1820e9b1d 100644 --- a/src/public/app/widgets/type_widgets/editable_text.js +++ b/src/public/app/widgets/type_widgets/editable_text.js @@ -176,8 +176,16 @@ export default class EditableTextTypeWidget extends AbstractTextTypeWidget { }); this.watchdog.setCreator(async (elementOrData, editorConfig) => { + const extraOpts = {}; + if (isClassicEditor) { + extraOpts.toolbar = { + shouldNotGroupWhenFull: options.get("textNoteEditorMultilineToolbar") === "true" + }; + } + const editor = await editorClass.create(elementOrData, { ...editorConfig, + ...extraOpts, htmlSupport: { allow: JSON.parse(options.get("allowedHtmlTags")), styles: true, diff --git a/src/public/app/widgets/type_widgets/options/text_notes/editor.js b/src/public/app/widgets/type_widgets/options/text_notes/editor.js index ce5bc9edc..0ec031d02 100644 --- a/src/public/app/widgets/type_widgets/options/text_notes/editor.js +++ b/src/public/app/widgets/type_widgets/options/text_notes/editor.js @@ -3,7 +3,7 @@ import utils from "../../../../services/utils.js"; import OptionsWidget from "../options_widget.js"; const TPL = ` -
+ + +`; export default class EditorOptions extends OptionsWidget { doRender() { @@ -33,10 +47,14 @@ export default class EditorOptions extends OptionsWidget { await this.updateOption('textNoteEditorType', newEditorType); utils.reloadFrontendApp("editor type change"); }); + + this.$multilineToolbarCheckbox = this.$widget.find('input[name="multiline-toolbar"]'); + this.$multilineToolbarCheckbox.on("change", () => this.updateCheckboxOption("textNoteEditorMultilineToolbar", this.$multilineToolbarCheckbox)); } async optionsLoaded(options) { this.$widget.find(`input[name="editor-type"][value="${options.textNoteEditorType}"]`) .prop("checked", "true"); + this.setCheckboxState(this.$multilineToolbarCheckbox, options.textNoteEditorMultilineToolbar); } } diff --git a/src/routes/api/options.ts b/src/routes/api/options.ts index 214e265ef..a9a13e29d 100644 --- a/src/routes/api/options.ts +++ b/src/routes/api/options.ts @@ -67,6 +67,7 @@ const ALLOWED_OPTIONS = new Set([ 'locale', 'firstDayOfWeek', 'textNoteEditorType', + 'textNoteEditorMultilineToolbar', 'layoutOrientation', 'backgroundEffects', 'allowedHtmlTags' // Allow configuring HTML import tags diff --git a/src/services/options_init.ts b/src/services/options_init.ts index a0d08a815..2ad06e508 100644 --- a/src/services/options_init.ts +++ b/src/services/options_init.ts @@ -134,6 +134,7 @@ const defaultOptions: DefaultOption[] = [ // Text note configuration { name: "textNoteEditorType", value: "ckeditor-balloon", isSynced: true }, + { name: "textNoteEditorMultilineToolbar", value: "false", isSynced: true }, // HTML import configuration { name: "layoutOrientation", value: "vertical", isSynced: false },