-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Options
Options to customize medium-editor are passed as the second argument to the MediumEditor constructor. Example:
var editor = new MediumEditor('.editor', {
// options go here
});
- Core Options
- Toolbar options - 'static' Toolbar Options
- Anchor Preview options
- Placeholder Options
- Anchor Form options
- Paste Options
- KeyboardCommands Options
- Auto Link Options
- Image Dragging Options
- Options Example:
-
activeButtonClass: CSS class added to active buttons in the toolbar. Default:
'medium-editor-button-active'
-
allowMultiParagraphSelection: enables the toolbar when selecting multiple paragraphs/block elements. Default:
true
-
buttonLabels: type of labels on the buttons. Values: 'fontawesome',
{'bold': '<b>b</b>', 'italic': '<i>i</i>'}
. Default:false
-
delay: time in milliseconds to show the toolbar or anchor tag preview. Default:
0
-
disableReturn: enables/disables the use of the return-key. You can also set specific element behavior by using setting a data-disable-return attribute. Default:
false
-
disableDoubleReturn: allows/disallows two (or more) empty new lines. You can also set specific element behavior by using setting a data-disable-double-return attribute. Default:
false
-
disableEditing: enables/disables adding the contenteditable behavior. Useful for using the toolbar with customized buttons/actions. You can also set specific element behavior by using setting a data-disable-editing attribute. Default:
false
-
elementsContainer: specifies a DOM node to contain MediumEditor's toolbar and anchor preview elements. Default:
document.body
-
extensions: extension to use (see Custom Buttons and Extensions) for more. Default:
{}
-
spellcheck: Enable/disable native contentEditable automatic spellcheck. Default:
true
-
targetBlank: enables/disables target="_blank" for anchor tags. Default:
false
The toolbar for MediumEditor is implemented as a built-in extension which automatically displays whenever the user selects some text. The toolbar can hold any set of defined built-in buttons, but can also hold any custom buttons passed in as extensions.
Options for the toolbar are passed as an object taht is a member of the outer options object. Example:
var editor = new MediumEditor('.editable', {
toolbar: {
/* These are the default options for the toolbar,
if nothing is passed this is what is used */
buttons: ['bold', 'italic', 'underline', 'anchor', 'h1', 'h2', 'quote'],
diffLeft: 0,
diffTop: -10,
firstButtonClass: 'medium-editor-button-first',
headerTags: ['h2', 'h3', 'h4'],
lastButtonClass: 'medium-editor-button-last',
standardizeSelectionStart: false,
static: false,
/* options which only apply when static is true */
align: 'center',
sticky: false,
updateOnEmptySelection: false
}
});
-
buttons: the set of buttons to display on the toolbar. Default:
['bold', 'italic', 'underline', 'anchor', 'h1', 'h2', 'quote']
-
diffLeft: value in pixels to be added to the X axis positioning of the toolbar. Default:
0
-
diffTop: value in pixels to be added to the Y axis positioning of the toolbar. Default:
-10
-
firstButtonClass: CSS class added to the first button in the toolbar. Default:
'medium-editor-button-first'
-
headerTags: the types of html elements to create when the H1, H2, or H3 toolbar buttons are clicked. The first element in the array (index 0) indicates which tag name (ie
<h3></h3>
) will be used when the H1 button is clicked. The second element in the array (index 1) corresponds to the H2 button and the last element (index 2) corresponds to the H3 button. Default:['h2', 'h3', 'h4']
-
lastButtonClass: CSS class added to the last button in the toolbar. Default:
'medium-editor-button-last'
-
standardizeSelectionStart: enables/disables standardizing how the beginning of a range is decided between browsers whenever the selected text is analyzed for updating toolbar buttons status. Default:
false
-
static: enable/disable the toolbar always displaying in the same location relative to the medium-editor element. Default:
false
These options only apply when the static
option is being used
-
align:
left
|center
|right
- When the static option istrue
, this aligns the static toolbar relative to the medium-editor element. Default:center
-
sticky: When the static option is
true
, this enables/disables the toolbar "sticking" to the viewport and staying visible on the screen while the page scrolls. Default:false
-
updateOnEmptySelection: When the static option is
true
, this enables/disables updating the state of the toolbar buttons even when the selection is collapsed (there is no selection, just a cursor). Default:false
To disable the toolbar (which also disables the anchor-preview extension), set the value of the toolbar
option to false
:
var editor = new MediumEditor('.editable', {
toolbar: false
});
The anchor preview is a built-in extension which automatically displays a 'tooltip' when the user is hovering over a link in the editor. The tooltip will display the href
of the link, and when click, will open the anchor editing form in the toolbar.
Options for the anchor preview 'tooltip' are passed as an object that is a member of the outer options object. Example:
var editor = new MediumEditor('.editable', {
anchorPreview: {
/* These are the default options for anchor preview,
if nothing is passed this is what it used */
hideDelay: 500,
previewValueSelector: 'a'
}
}
});
-
hideDelay: time in milliseconds to show the anchor tag preview after the mouse has left the anchor tag. Default:
500
-
previewValueSelector: the default selector to locate where to put the activeAnchor value in the preview. You should only need to override this if you've modified the way in which the anchor-preview extension renders. Default:
'a'
To disable the anchor preview, set the value of the anchorPreview
option to false
:
var editor = new MediumEditor('.editable', {
anchorPreview: false
});
NOTE:
- If the toolbar is disabled (via
toolbar: false
option ordata-disable-toolbar
attribute) the anchor-preview is automatically disabled. - If the anchor editing form is not enabled, clicking on the anchor-preview will not allow the href of the link to be edited
The placeholder handler is a built-in extension which displays placeholder text when the editor is empty.
Options for placeholder are passed as an object that is a member of the outer options object. Example:
var editor = new MediumEditor('.editable', {
placeholder: {
/* This example includes the default options for placeholder,
if nothing is passed this is what it used */
text: 'Type your text'
}
});
-
text: Defines the default placeholder for empty contenteditables when placeholder is not set to false. You can overwrite it by setting a
data-placeholder
attribute on the editor elements. Default:'Type your text'
To disable the placeholder, set the value of the placeholder
option to false
:
var editor = new MediumEditor('.editable', {
placeholder: false
});
The anchor form is a built-in button extension which allows the user to add/edit/remove links from within the editor. When 'anchor' is passed in as a button in the list of buttons, this extension will be enabled and can be triggered by clicking the corresponding button in the toolbar.
Options for the anchor form are passed as an object that is a member of the outer options object. Example:
var editor = new MediumEditor('.editable', {
toolbar: {
buttons: ['bold', 'italic', 'underline', 'anchor']
},
anchor: {
/* These are the default options for anchor form,
if nothing is passed this is what it used */
customClassOption: null,
customClassOptionText: 'Button',
linkValidation: false,
placeholderText: 'Paste or type a link',
targetCheckbox: false,
targetCheckboxText: 'Open in new window'
}
}
});
-
customClassOption: custom class name the user can optionally have added to their created links (ie 'button'). If passed as a non-empty string, a checkbox will be displayed allowing the user to choose whether to have the class added to the created link or not. Default:
null
-
customClassOptionText: text to be shown in the checkbox when the customClassOption is being used. Default:
'Button'
-
linkValidation: enables/disables check for common URL protocols on anchor links. Default:
false
-
placeholderText: text to be shown as placeholder of the anchor input. Default:
'Paste or type a link'
-
targetCheckbox: enables/disables displaying a "Open in new window" checkbox, which when checked changes the
target
attribute of the created link. Default:false
-
targetCheckboxText: text to be shown in the checkbox enabled via the targetCheckbox option. Default:
'Open in new window'
The paste handler is a built-in extension which attempts to filter the content when the user pastes. How the paste handler filters is configurable via specific options.
Options for paste handling are passed as an object that is a member of the outer options object. Example:
var editor = new MediumEditor('.editable', {
paste: {
/* This example includes the default options for paste,
if nothing is passed this is what it used */
forcePlainText: true,
cleanPastedHTML: false,
cleanReplacements: [],
cleanAttrs: ['class', 'style', 'dir'],
cleanTags: ['meta']
}
});
-
forcePlainText: Forces pasting as plain text. Default:
true
-
cleanPastedHTML: cleans pasted content from different sources, like google docs etc. Default:
false
-
cleanReplacements: custom pairs (2 element arrays) of RegExp and replacement text to use during paste when forcePlainText or cleanPastedHTML are
true
OR when callingcleanPaste(text)
helper method. Default:[]
-
cleanAttrs: list of element attributes to remove during paste when cleanPastedHTML is
true
or when callingcleanPaste(text)
orpasteHTML(html,options)
helper methods. Default:['class', 'style', 'dir']
-
cleanTags: list of element tag names to remove during paste when cleanPastedHTML is
true
or when callingcleanPaste(text)
orpasteHTML(html,options)
helper methods. Default:['meta']
The keyboard commands handler is a built-in extension for mapping key-combinations to actions to execute in the editor.
Options for KeyboardCommands are passed as an object that is a member of the outer options object. Example:
var editor = new MediumEditor('.editable', {
keyboardCommands: {
/* This example includes the default options for keyboardCommands,
if nothing is passed this is what it used */
commands: [
{
command: 'bold',
key: 'b',
meta: true,
shift: false
},
{
command: 'italic',
key: 'i',
meta: true,
shift: false
},
{
command: 'underline',
key: 'u',
meta: true,
shift: false
}
],
}
});
-
commands: Array of objects describing each command and the combination of keys that will trigger it. Required for each object:
-
command: argument passed to
editor.execAction()
when key-combination is used - key: keyboard character that triggers this command
- meta: whether the ctrl/meta key has to be active or inactive
- shift: whether the shift key has to be active or inactive
-
command: argument passed to
To disable the keyboard commands, set the value of the keyboardCommands
option to false
:
var editor = new MediumEditor('.editable', {
keyboardCommands: false
});
The auto-link handler is a built-in extension which automatically turns URLs entered into the text field into HTML anchor tags (similar to the functionality of Markdown). This feature is OFF by default.
To enable built-in auto-link support, set the value of the autoLink
option to true
:
var editor = new MediumEditor('.editable', {
autoLink: true
});
The image dragging handler is a built-in extenson for handling dragging & dropping images into the contenteditable. This feature is ON by default.
To disable built-in image dragging, set the value of the imageDragging
option to false
:
var editor = new MediumEditor('.editable', {
imageDragging: false
});
var editor = new MediumEditor('.editable', {
delay: 1000,
targetBlank: true,
toolbar: {
buttons: ['bold', 'italic', 'quote', 'h1', 'h2', 'h3'],
diffLeft: 25,
diffTop: 10,
headerTags: ['h1', 'h3', 'h5']
},
anchor: {
placeholderText: 'Type a link',
customClassOption: 'btn',
customClassOptionText: 'Create Button'
},
paste: {
cleanPastedHTML: true,
cleanAttrs: ['style', 'dir'],
cleanTags: ['label', 'meta']
},
anchorPreview: {
hideDelay: 300
},
placeholder: {
text: 'Click to edit'
}
});