diff --git a/app/components/SimpleEditor/Editor.js b/app/components/SimpleEditor/Editor.js index 1f5977b76502b1e0bbcd16e727afdc072a6f6a2c..66c140bfe0a0248383e8805946b60ad8429e8984 100644 --- a/app/components/SimpleEditor/Editor.js +++ b/app/components/SimpleEditor/Editor.js @@ -3,6 +3,7 @@ import { includes, some } from 'lodash' import { ProseEditor, TOCProvider, + Toolbar } from 'substance' import Comments from './panes/Comments/CommentBoxList' @@ -34,10 +35,12 @@ class Editor extends ProseEditor { this.extendProps({ trackChanges: !this.props.trackChanges }) - + // this.props.updateTrackChangesStatus(!this.props.trackChanges) - this.extendState({ trackChanges: !this.props.trackChanges }) + this.refs.toolbar.extendProps({ + trackChanges: this.props.trackChanges + }) } willUpdateState () {} @@ -141,8 +144,14 @@ class Editor extends ProseEditor { // TODO -- use this to insert read-only mode alert _renderToolbar ($$) { - const toolbar = super._renderToolbar($$) - return toolbar + let commandStates = this.commandManager.getCommandStates() + return $$('div').addClass('se-toolbar-wrapper').append( + $$(Toolbar, { + commandStates: commandStates, + trackChanges: this.props.trackChanges, + toolGroups: ['text', 'document', 'annotations', 'default', 'track-change-enable', 'track-change-toggle-view'] + }).ref('toolbar') + ) } _renderEditor ($$) { @@ -163,7 +172,6 @@ class Editor extends ProseEditor { getInitialState () { return { editorReady: false, - trackChanges: this.props.trackChanges, trackChangesView: true } } diff --git a/app/components/SimpleEditor/SimpleEditor.scss b/app/components/SimpleEditor/SimpleEditor.scss index a5376e9c00b6b012cd69b98c13a55c081f09facf..e841653bbbf23850d4338a73095671b63f265853 100644 --- a/app/components/SimpleEditor/SimpleEditor.scss +++ b/app/components/SimpleEditor/SimpleEditor.scss @@ -119,7 +119,6 @@ $active-blue: #4a90e2; } // end dropdown .sm-target-track-change-enable { - border-right: 1px solid $border; button { background-color: $inactive-grey; @@ -174,8 +173,7 @@ $active-blue: #4a90e2; border-left: 1px solid $border; } - .sm-target-track-change-enable, - .sm-target-track-change-toggle-view { + .sm-target-track-change-enable { padding: 0 9px; } diff --git a/app/components/SimpleEditor/elements/track_change/TrackChangeComponent.js b/app/components/SimpleEditor/elements/track_change/TrackChangeComponent.js index 30215e3896ea9f334b5370b88e8085e52b4f997e..9fe65a520908f98f3fca973deaf103093c543a3c 100644 --- a/app/components/SimpleEditor/elements/track_change/TrackChangeComponent.js +++ b/app/components/SimpleEditor/elements/track_change/TrackChangeComponent.js @@ -96,7 +96,7 @@ class TrackChangeComponent extends AnnotationComponent { const selection = surface.editorSession.getSelection() - if (selection.isNull() || selection.isCollapsed()) return false + if (selection.isNodeSelection || selection.isNull() || selection.isCollapsed()) return false const overlaps = selection.overlaps(annotationSelection) const contains = selection.contains(annotationSelection) diff --git a/app/components/SimpleEditor/elements/track_change/TrackChangeControlTool.js b/app/components/SimpleEditor/elements/track_change/TrackChangeControlTool.js index 63a14be84f3a4058e170856d1c161ec5a818b2bf..cb652856ddcbe6c0edb1845059eddeb57a126cd8 100644 --- a/app/components/SimpleEditor/elements/track_change/TrackChangeControlTool.js +++ b/app/components/SimpleEditor/elements/track_change/TrackChangeControlTool.js @@ -2,10 +2,6 @@ import { Tool } from 'substance' class TrackChangeControlTool extends Tool { - getClassNames () { - return 'sm-target-track-change-enable' - } - renderButton ($$) { const el = super.renderButton($$) @@ -16,21 +12,12 @@ class TrackChangeControlTool extends Tool { return el } - getSurface () { - const surfaceManager = this.context.surfaceManager - // const containerId = this.context.controller.props.containerId - return surfaceManager.getSurface('body') - } - isTrackChangesOn () { - const surface = this.getSurface() - if (!surface) return - return surface.props.trackChanges + return this.parent._owner.props.trackChanges } canAct () { const provider = this.context.trackChangesProvider - // console.log('can act?', provider.canAct()) return provider.canAct() } } diff --git a/app/components/SimpleEditor/elements/track_change/TrackChangePackage.js b/app/components/SimpleEditor/elements/track_change/TrackChangePackage.js index ce01b0c0a028aa3865d9549fe00ce62d788373e1..40b630f0288a4a71f9acd2aa61989e82273df718 100644 --- a/app/components/SimpleEditor/elements/track_change/TrackChangePackage.js +++ b/app/components/SimpleEditor/elements/track_change/TrackChangePackage.js @@ -11,17 +11,18 @@ export default { name: 'track-change', configure: function (config, { toolGroup }) { config.addNode(TrackChange) - + config.addToolGroup('track-change-enable') + config.addToolGroup('track-change-toggle-view') config.addComponent(TrackChange.type, TrackChangeComponent) config.addConverter('html', TrackChangeHTMLConverter) // TODO -- both tools should go to the same target config.addTool('track-change-enable', TrackChangeControlTool, { - toolGroup: 'default' + toolGroup: 'track-change-enable' }) config.addTool('track-change-toggle-view', TrackChangeControlViewTool, { - toolGroup: 'default' + toolGroup: 'track-change-toggle-view' }) config.addCommand('track-change-enable', TrackChangeControlCommand) diff --git a/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js b/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js index e890b092bc815a803d30a35e0112085b5cf9d191..6a762e6f08158ea03f368dba119d8c0435d28524 100644 --- a/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js +++ b/app/components/SimpleEditor/elements/track_change/TrackChangesProvider.js @@ -17,7 +17,6 @@ import { import { annotationHelpers, - truncateAnnotation, TOCProvider } from 'substance' @@ -529,11 +528,10 @@ class TrackChangesProvider extends TOCProvider { truncateTrackAnnotation (selection, annotation) { const surface = this.getSurface() const info = this.getInfo() + const doc = this.getDocument() const transformation = (tx, args) => { - args.anno = annotation - args.selection = selection - truncateAnnotation(tx, args) + annotationHelpers.truncateAnnotation(doc, annotation, selection) } surface.transaction(transformation, info)