Read only mode
See original GitHub issueAdd the ability to enable read-only mode. We need to support initialization in read-only mode and toggling read-only mode on the fly.
For each plugin in list:
-
Improve Tools design that can be represented as WYSIWYG
-
Accept
readOnly
boolean flag in tools constructor and save it to the class’s property. -
Separate event bindings and
contenteditable
attributes activating to thetoggleReadonly(status)
method. Call this method withtrue
status on the render in read-only mode. Also, this method can be called withtrue/false
statuses by editorjs core — it should bind/unbind events corresponded by status.
Working with editor.js core:
-
Add
readOnly
option to the Editor Config -
Make
readonly.ts
module that will storereadOnlyEnabled
property and havetoggleReadonly(status)
public method. -
toggleReadonly(status)
method ofreadonly.ts
module will calltoggleReadonly(status)
methods of each editor module implemented this method. -
Implement
toggleReadonly(status)
method in modules that requires some readonly toggling logic:UI
,Toolbar
,InlineToolbar
,Paste
,Saver
,Shortcuts
(for disablingcmd+x
),BlockSettings
,BlockEvents
,BlockManager
,DragNdrop
,ModificationObserver
,API
. This method will do two things: bind/unbind events and make/remove dom elements. -
If some module makes own ui and bind events in
prepare
method (for example,UI
,Toolbar
): move events binding and ui making intoggleReadonly()
method of this module. Then calltoggleReadonly()
in prepare. -
Pass
readOnly
option to Tools constructor on render -
If some of Tools does not provide read-only functionality (can be detected by
toggleReadonly () implemented or not
), throw an error on trying to enable read-only mode. -
add
toggleReadonly()
method to the public API. This method will calltoggleReadonly(status)
method ofreadonly.ts
module internally.
Issue Analytics
- State:
- Created 4 years ago
- Reactions:35
- Comments:8 (3 by maintainers)
Top GitHub Comments
@startupgurukul you can boost development by donation to maintainers https://opencollective.com/editorjs
I’ve updated the description of the issue with more details. We are looking for contributors who can implement some of the subtasks with our help.