Skip to content
Snippets Groups Projects
Commit c266d3e3 authored by chris's avatar chris
Browse files

feat(track-changes): mark active box on click in progress

parent 8c22c411
No related branches found
No related tags found
1 merge request!215set id
/* eslint react/prop-types: 0 */
import React, { useContext, useMemo, useState, useEffect } from 'react';
import styled from 'styled-components';
// import { DocumentHelpers } from 'wax-prosemirror-utilities';
import { DocumentHelpers } from 'wax-prosemirror-utilities';
import { WaxContext } from 'wax-prosemirror-core';
import { last, maxBy } from 'lodash';
import { TextSelection } from 'prosemirror-state';
import TrackChangesBox from './TrackChangesBox';
const ConnectedTrackChangeStyled = styled.div`
......@@ -14,11 +16,11 @@ const ConnectedTrackChangeStyled = styled.div`
`;
export default ({ trackChangeId, top, recalculateTops, trackChange }) => {
const { app, activeView } = useContext(WaxContext);
const { app, activeView, view } = useContext(WaxContext);
const [isActive, setIsActive] = useState(false);
// const { state, dispatch } = activeView;
const viewId = 'main';
const styles = {
top: `${top}px`,
};
......@@ -27,6 +29,26 @@ export default ({ trackChangeId, top, recalculateTops, trackChange }) => {
const activeTrackChange = trakChangePlugin.getState(activeView.state)
.trackChange;
const onClickBox = trackData => {
const allTracksWithSameId = DocumentHelpers.findAllMarksWithSameId(
view[viewId].state,
trackData,
);
const maxPos = maxBy(allTracksWithSameId, 'pos');
maxPos.pos += last(allTracksWithSameId).node.nodeSize;
view[viewId].dispatch(
view[viewId].state.tr.setSelection(
new TextSelection(
view[viewId].state.tr.doc.resolve(maxPos.pos, maxPos.pos),
),
),
);
view[viewId].focus();
return true;
};
useEffect(() => {
setIsActive(false);
if (activeTrackChange && trackChangeId === activeTrackChange.attrs.id) {
......@@ -45,6 +67,7 @@ export default ({ trackChangeId, top, recalculateTops, trackChange }) => {
<TrackChangesBox
active={isActive}
key={trackChangeId}
onClickBox={onClickBox}
recalculateTops={recalculateTops}
trackChangeId={trackChangeId}
trackData={trackChange}
......
......@@ -91,15 +91,20 @@ const TrackChangesBox = props => {
active,
className,
label,
onClick,
onClickBox,
onClickAccept,
onClickReject,
text,
trackData,
} = props;
// console.log(trackData);
const onClickTrackBox = () => {
console.log(onClickBox);
onClickBox(trackData);
};
return (
<Wrapper active={active} className={className} onClick={onClick}>
<Wrapper active={active} className={className} onClick={onClickTrackBox}>
<HeadWrapper>
<Info>
<Name>{trackData.attrs.username}</Name>
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment