@manuscripts/style-guide 1.3.6 → 1.3.7-LEAN-2585-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/AuthorsList/Author.js +19 -11
- package/dist/cjs/components/AuthorsList/AuthorsList.js +1 -1
- package/dist/cjs/components/EditorHeader/EditorHeader.js +3 -11
- package/dist/cjs/components/EditorHeader/ProceedView.js +25 -6
- package/dist/cjs/lib/capabilities.js +2 -1
- package/dist/es/components/AuthorsList/Author.js +19 -11
- package/dist/es/components/AuthorsList/AuthorsList.js +1 -1
- package/dist/es/components/EditorHeader/EditorHeader.js +3 -11
- package/dist/es/components/EditorHeader/ProceedView.js +26 -7
- package/dist/es/lib/capabilities.js +2 -1
- package/dist/types/components/AuthorsList/Author.d.ts +1 -0
- package/dist/types/components/EditorHeader/ProceedView.d.ts +0 -1
- package/dist/types/lib/capabilities.d.ts +1 -0
- package/package.json +2 -2
|
@@ -56,27 +56,35 @@ const LinkSharedStyles = (0, styled_components_1.css) `
|
|
|
56
56
|
color: inherit;
|
|
57
57
|
outline: none;
|
|
58
58
|
|
|
59
|
-
&:
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
59
|
+
&:not(:disabled) {
|
|
60
|
+
&:hover,
|
|
61
|
+
&:focus {
|
|
62
|
+
&,
|
|
63
|
+
span {
|
|
64
|
+
color: ${(props) => props.theme.colors.text.tertiary};
|
|
65
|
+
}
|
|
64
66
|
}
|
|
65
67
|
}
|
|
66
68
|
`;
|
|
67
69
|
const AuthorAffiliation = styled_components_1.default.span `
|
|
68
70
|
${LinkSharedStyles}
|
|
69
71
|
`;
|
|
70
|
-
const AuthorsContainer = styled_components_1.default.
|
|
72
|
+
const AuthorsContainer = styled_components_1.default.button `
|
|
71
73
|
display: inline-flex;
|
|
74
|
+
background: transparent;
|
|
75
|
+
border: 0;
|
|
76
|
+
font-size: 1rem;
|
|
72
77
|
${LinkSharedStyles}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
78
|
+
|
|
79
|
+
&:not(:disabled) {
|
|
80
|
+
&:hover {
|
|
81
|
+
text-decoration: underline;
|
|
82
|
+
cursor: pointer !important;
|
|
83
|
+
}
|
|
76
84
|
}
|
|
77
85
|
`;
|
|
78
|
-
const Author = ({ author, affiliations, jointFirstAuthor, startEditing, selectAuthor, showEditButton, }) => (react_1.default.createElement("span", { key: author._id },
|
|
79
|
-
showEditButton ? (react_1.default.createElement(AuthorsContainer, {
|
|
86
|
+
const Author = ({ author, affiliations, jointFirstAuthor, startEditing, selectAuthor, showEditButton, disableEditButton, }) => (react_1.default.createElement("span", { key: author._id },
|
|
87
|
+
showEditButton ? (react_1.default.createElement(AuthorsContainer, { disabled: disableEditButton, onClick: (e) => {
|
|
80
88
|
e.preventDefault();
|
|
81
89
|
startEditing && startEditing();
|
|
82
90
|
selectAuthor && selectAuthor(author);
|
|
@@ -46,7 +46,7 @@ const AuthorsActions = styled_components_1.default.div `
|
|
|
46
46
|
const AuthorsList = ({ authors, authorAffiliations, startEditing, showEditButton, disableEditButton, selectAuthor, }) => (react_1.default.createElement(AuthorsContainer, { isEmpty: !authors.length },
|
|
47
47
|
react_1.default.createElement("div", null, authors.map((author, index) => (react_1.default.createElement(react_1.default.Fragment, { key: author._id },
|
|
48
48
|
!!index && ', ',
|
|
49
|
-
react_1.default.createElement(Author_1.Author, { author: author, jointFirstAuthor: (0, authors_1.isJointFirstAuthor)(authors, index), affiliations: authorAffiliations.get(author._id), selectAuthor: selectAuthor, startEditing: startEditing, showEditButton: showEditButton }))))),
|
|
49
|
+
react_1.default.createElement(Author_1.Author, { author: author, jointFirstAuthor: (0, authors_1.isJointFirstAuthor)(authors, index), affiliations: authorAffiliations.get(author._id), selectAuthor: selectAuthor, startEditing: startEditing, showEditButton: showEditButton, disableEditButton: disableEditButton }))))),
|
|
50
50
|
showEditButton && startEditing && (react_1.default.createElement(AuthorsActions, null,
|
|
51
51
|
react_1.default.createElement(Button_1.PrimaryButton, { mini: true, onClick: startEditing, className: 'edit_authors_button', disabled: disableEditButton }, "Edit Authors")))));
|
|
52
52
|
exports.AuthorsList = AuthorsList;
|
|
@@ -59,7 +59,6 @@ const MapUserRole = {
|
|
|
59
59
|
};
|
|
60
60
|
const EditorHeader = ({ handleSnapshot, submission, hasPendingSuggestions, userRole, canCompleteTask, submitProceed, goBack, status, isAnnotator, isProofer, message, exceptionDialog: ExceptionDialog, disabelProceedNote, }) => {
|
|
61
61
|
var _a, _b, _c, _d, _e;
|
|
62
|
-
const [confirmationDialog, toggleConfirmationDialog] = (0, react_1.useState)(false);
|
|
63
62
|
const [noteValue, setNoteValue] = (0, react_1.useState)('');
|
|
64
63
|
const [selectedTransitionIndex, setSelectedTransitionIndex] = (0, react_1.useState)();
|
|
65
64
|
const { dialogData, submit } = submitProceed;
|
|
@@ -81,20 +80,13 @@ const EditorHeader = ({ handleSnapshot, submission, hasPendingSuggestions, userR
|
|
|
81
80
|
]);
|
|
82
81
|
const onTransitionClick = (0, react_1.useCallback)((event) => {
|
|
83
82
|
updateState(DialogState.INIT);
|
|
84
|
-
toggleConfirmationDialog(true);
|
|
85
83
|
setSelectedTransitionIndex(event.target.value || event.target.parentNode.value);
|
|
86
|
-
}, [setSelectedTransitionIndex,
|
|
84
|
+
}, [setSelectedTransitionIndex, updateState]);
|
|
87
85
|
const onCancelClick = (0, react_1.useCallback)(() => {
|
|
88
|
-
toggleConfirmationDialog(false);
|
|
89
86
|
setSelectedTransitionIndex(undefined);
|
|
90
87
|
clearError();
|
|
91
88
|
updateState(DialogState.CLOSED);
|
|
92
|
-
}, [
|
|
93
|
-
toggleConfirmationDialog,
|
|
94
|
-
setSelectedTransitionIndex,
|
|
95
|
-
clearError,
|
|
96
|
-
updateState,
|
|
97
|
-
]);
|
|
89
|
+
}, [setSelectedTransitionIndex, clearError, updateState]);
|
|
98
90
|
const onNoteChange = (0, react_1.useCallback)((event) => setNoteValue(event.target.value), [setNoteValue]);
|
|
99
91
|
const currentStepTransition = submission === null || submission === void 0 ? void 0 : submission.currentStep.type.transitions;
|
|
100
92
|
const disable = !currentStepTransition || !canCompleteTask;
|
|
@@ -105,7 +97,7 @@ const EditorHeader = ({ handleSnapshot, submission, hasPendingSuggestions, userR
|
|
|
105
97
|
react_1.default.createElement("span", null, "Dashboard"))),
|
|
106
98
|
handleSnapshot &&
|
|
107
99
|
typeof hasPendingSuggestions == 'boolean' &&
|
|
108
|
-
submission.nextStep && (react_1.default.createElement(ProceedView_1.ProceedView, { isAnnotator: isAnnotator, isProofer: isProofer, disable: disable, onTransitionClick: onTransitionClick, hasPendingSuggestions: hasPendingSuggestions, dialogData: dialogData, noteValue: noteValue, currentStepTransition: currentStepTransition, currentStepType: submission.currentStep.type, previousStepType: (_e = submission.previousStep) === null || _e === void 0 ? void 0 : _e.type, nextStepType: submission.nextStep.type,
|
|
100
|
+
submission.nextStep && (react_1.default.createElement(ProceedView_1.ProceedView, { isAnnotator: isAnnotator, isProofer: isProofer, disable: disable, onTransitionClick: onTransitionClick, hasPendingSuggestions: hasPendingSuggestions, dialogData: dialogData, noteValue: noteValue, currentStepTransition: currentStepTransition, currentStepType: submission.currentStep.type, previousStepType: (_e = submission.previousStep) === null || _e === void 0 ? void 0 : _e.type, nextStepType: submission.nextStep.type, onNoteChange: disabelProceedNote ? undefined : onNoteChange, continueDialogAction: continueDialogAction, onCancelClick: onCancelClick, message: message })),
|
|
109
101
|
status && (react_1.default.createElement(ChildWrapper, null,
|
|
110
102
|
react_1.default.createElement(__1.SaveStatus, { status: status }))),
|
|
111
103
|
react_1.default.createElement(Spacer, null),
|
|
@@ -46,8 +46,11 @@ const StepDetails = ({ icon, label, description, role }) => (react_1.default.cre
|
|
|
46
46
|
react_1.default.createElement(__1.SecondarySmallText, null,
|
|
47
47
|
"Actor: ",
|
|
48
48
|
role.label))));
|
|
49
|
-
const ProceedView = ({ currentStepTransition, onTransitionClick, disable, dialogData,
|
|
50
|
-
const dialogMessages = (0, react_1.useMemo)(() => hasPendingSuggestions &&
|
|
49
|
+
const ProceedView = ({ currentStepTransition, onTransitionClick, disable, dialogData, previousStepType, currentStepType, isAnnotator, isProofer, hasPendingSuggestions, onCancelClick, continueDialogAction, message: Message, }) => {
|
|
50
|
+
const dialogMessages = (0, react_1.useMemo)(() => hasPendingSuggestions &&
|
|
51
|
+
!isAnnotator &&
|
|
52
|
+
!isProofer &&
|
|
53
|
+
dialogData.state !== __1.DialogState.SUCCESS
|
|
51
54
|
? {
|
|
52
55
|
header: 'The task can not be transitioned to the next step',
|
|
53
56
|
message: `There are still pending suggestions in the document.
|
|
@@ -57,6 +60,7 @@ const ProceedView = ({ currentStepTransition, onTransitionClick, disable, dialog
|
|
|
57
60
|
action: onCancelClick,
|
|
58
61
|
title: 'Ok',
|
|
59
62
|
},
|
|
63
|
+
onClose: onCancelClick,
|
|
60
64
|
},
|
|
61
65
|
}
|
|
62
66
|
: dialogData.state === __1.DialogState.SUCCESS
|
|
@@ -68,6 +72,7 @@ const ProceedView = ({ currentStepTransition, onTransitionClick, disable, dialog
|
|
|
68
72
|
action: onCancelClick,
|
|
69
73
|
title: 'Close',
|
|
70
74
|
},
|
|
75
|
+
onClose: onCancelClick,
|
|
71
76
|
},
|
|
72
77
|
}
|
|
73
78
|
: {
|
|
@@ -82,6 +87,7 @@ const ProceedView = ({ currentStepTransition, onTransitionClick, disable, dialog
|
|
|
82
87
|
action: onCancelClick,
|
|
83
88
|
title: 'Cancel',
|
|
84
89
|
},
|
|
90
|
+
onClose: onCancelClick,
|
|
85
91
|
},
|
|
86
92
|
}, [
|
|
87
93
|
dialogData,
|
|
@@ -92,21 +98,34 @@ const ProceedView = ({ currentStepTransition, onTransitionClick, disable, dialog
|
|
|
92
98
|
isAnnotator,
|
|
93
99
|
isProofer,
|
|
94
100
|
]);
|
|
101
|
+
const prevDialogMsgs = (0, react_1.useRef)();
|
|
102
|
+
const prevDialogueState = (0, react_1.useRef)();
|
|
103
|
+
(0, react_1.useEffect)(() => {
|
|
104
|
+
prevDialogMsgs.current = dialogMessages;
|
|
105
|
+
prevDialogueState.current = dialogData.state;
|
|
106
|
+
}, [dialogData.state]);
|
|
107
|
+
const messages = dialogData.state === __1.DialogState.CLOSED && prevDialogMsgs.current
|
|
108
|
+
? prevDialogMsgs.current
|
|
109
|
+
: dialogMessages;
|
|
110
|
+
const finalState = dialogData.state === __1.DialogState.CLOSED && prevDialogueState.current
|
|
111
|
+
? prevDialogueState.current
|
|
112
|
+
: dialogData.state;
|
|
95
113
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
96
114
|
(currentStepTransition && (currentStepTransition === null || currentStepTransition === void 0 ? void 0 : currentStepTransition.length) > 1 && (react_1.default.createElement(DropdownWrapper, { button: 'Complete task', disabled: disable, primary: true },
|
|
97
115
|
react_1.default.createElement(TaskDropdown, null, currentStepTransition &&
|
|
98
116
|
currentStepTransition.map((transition, index) => (react_1.default.createElement(Task, { key: 'task_' + transition.type.id, className: transition.status.id === 'success' ? 'happyPath' : '', value: index, onClick: onTransitionClick },
|
|
99
117
|
react_1.default.createElement("strong", null, transition.type.label),
|
|
100
118
|
transition.type.description))))))) || (react_1.default.createElement(EditorHeader_1.PrimaryButtonSmall, { value: 0, onClick: onTransitionClick, disabled: disable }, "Complete task")),
|
|
101
|
-
|
|
119
|
+
finalState === __1.DialogState.LOADING && (react_1.default.createElement(__1.LoadingOverlay, null,
|
|
102
120
|
react_1.default.createElement(Message, { isCentered: true }, "Proceeding with your submission\u2026"))),
|
|
103
|
-
|
|
104
|
-
|
|
121
|
+
react_1.default.createElement(__1.Dialog, { isOpen: dialogData.state !== __1.DialogState.CLOSED &&
|
|
122
|
+
dialogData.state !== __1.DialogState.LOADING, category: __1.Category.confirmation, header: messages.header, message: messages.message, actions: messages.actions },
|
|
123
|
+
finalState === __1.DialogState.SUCCESS && (react_1.default.createElement(Grid, null,
|
|
105
124
|
previousStepType && (react_1.default.createElement(StepDetails, Object.assign({}, previousStepType, { icon: react_1.default.createElement(react_1.default.Fragment, null,
|
|
106
125
|
react_1.default.createElement(__1.TaskStepDoneIcon, null),
|
|
107
126
|
react_1.default.createElement(Line, null)) }))),
|
|
108
127
|
react_1.default.createElement(StepDetails, Object.assign({}, currentStepType)))),
|
|
109
|
-
|
|
128
|
+
finalState === __1.DialogState.ERROR && (react_1.default.createElement(AlertMessage_1.AlertMessage, { type: AlertMessage_1.AlertMessageType.error, hideCloseButton: true }, dialogData.error)))));
|
|
110
129
|
};
|
|
111
130
|
exports.ProceedView = ProceedView;
|
|
112
131
|
const TaskDropdown = styled_components_1.default.div `
|
|
@@ -56,9 +56,10 @@ const getCapabilities = (project, profile, role, actions) => {
|
|
|
56
56
|
accessEditor: true,
|
|
57
57
|
formatArticle: !isViewer(),
|
|
58
58
|
editArticle: !isViewer(),
|
|
59
|
-
editMetadata: !(isViewer() ||
|
|
59
|
+
editMetadata: !(isViewer() || isProofer()) || isAnnotator(),
|
|
60
60
|
editCitationsAndRefs: !(isViewer() || isAnnotator() || isProofer()),
|
|
61
61
|
shareProject: isOwner(),
|
|
62
|
+
applySaveChanges: !(isAnnotator() || isProofer()),
|
|
62
63
|
};
|
|
63
64
|
};
|
|
64
65
|
exports.getCapabilities = getCapabilities;
|
|
@@ -27,27 +27,35 @@ const LinkSharedStyles = css `
|
|
|
27
27
|
color: inherit;
|
|
28
28
|
outline: none;
|
|
29
29
|
|
|
30
|
-
&:
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
&:not(:disabled) {
|
|
31
|
+
&:hover,
|
|
32
|
+
&:focus {
|
|
33
|
+
&,
|
|
34
|
+
span {
|
|
35
|
+
color: ${(props) => props.theme.colors.text.tertiary};
|
|
36
|
+
}
|
|
35
37
|
}
|
|
36
38
|
}
|
|
37
39
|
`;
|
|
38
40
|
const AuthorAffiliation = styled.span `
|
|
39
41
|
${LinkSharedStyles}
|
|
40
42
|
`;
|
|
41
|
-
const AuthorsContainer = styled.
|
|
43
|
+
const AuthorsContainer = styled.button `
|
|
42
44
|
display: inline-flex;
|
|
45
|
+
background: transparent;
|
|
46
|
+
border: 0;
|
|
47
|
+
font-size: 1rem;
|
|
43
48
|
${LinkSharedStyles}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
49
|
+
|
|
50
|
+
&:not(:disabled) {
|
|
51
|
+
&:hover {
|
|
52
|
+
text-decoration: underline;
|
|
53
|
+
cursor: pointer !important;
|
|
54
|
+
}
|
|
47
55
|
}
|
|
48
56
|
`;
|
|
49
|
-
export const Author = ({ author, affiliations, jointFirstAuthor, startEditing, selectAuthor, showEditButton, }) => (React.createElement("span", { key: author._id },
|
|
50
|
-
showEditButton ? (React.createElement(AuthorsContainer, {
|
|
57
|
+
export const Author = ({ author, affiliations, jointFirstAuthor, startEditing, selectAuthor, showEditButton, disableEditButton, }) => (React.createElement("span", { key: author._id },
|
|
58
|
+
showEditButton ? (React.createElement(AuthorsContainer, { disabled: disableEditButton, onClick: (e) => {
|
|
51
59
|
e.preventDefault();
|
|
52
60
|
startEditing && startEditing();
|
|
53
61
|
selectAuthor && selectAuthor(author);
|
|
@@ -40,6 +40,6 @@ const AuthorsActions = styled.div `
|
|
|
40
40
|
export const AuthorsList = ({ authors, authorAffiliations, startEditing, showEditButton, disableEditButton, selectAuthor, }) => (React.createElement(AuthorsContainer, { isEmpty: !authors.length },
|
|
41
41
|
React.createElement("div", null, authors.map((author, index) => (React.createElement(React.Fragment, { key: author._id },
|
|
42
42
|
!!index && ', ',
|
|
43
|
-
React.createElement(Author, { author: author, jointFirstAuthor: isJointFirstAuthor(authors, index), affiliations: authorAffiliations.get(author._id), selectAuthor: selectAuthor, startEditing: startEditing, showEditButton: showEditButton }))))),
|
|
43
|
+
React.createElement(Author, { author: author, jointFirstAuthor: isJointFirstAuthor(authors, index), affiliations: authorAffiliations.get(author._id), selectAuthor: selectAuthor, startEditing: startEditing, showEditButton: showEditButton, disableEditButton: disableEditButton }))))),
|
|
44
44
|
showEditButton && startEditing && (React.createElement(AuthorsActions, null,
|
|
45
45
|
React.createElement(PrimaryButton, { mini: true, onClick: startEditing, className: 'edit_authors_button', disabled: disableEditButton }, "Edit Authors")))));
|
|
@@ -30,7 +30,6 @@ const MapUserRole = {
|
|
|
30
30
|
};
|
|
31
31
|
export const EditorHeader = ({ handleSnapshot, submission, hasPendingSuggestions, userRole, canCompleteTask, submitProceed, goBack, status, isAnnotator, isProofer, message, exceptionDialog: ExceptionDialog, disabelProceedNote, }) => {
|
|
32
32
|
var _a, _b, _c, _d, _e;
|
|
33
|
-
const [confirmationDialog, toggleConfirmationDialog] = useState(false);
|
|
34
33
|
const [noteValue, setNoteValue] = useState('');
|
|
35
34
|
const [selectedTransitionIndex, setSelectedTransitionIndex] = useState();
|
|
36
35
|
const { dialogData, submit } = submitProceed;
|
|
@@ -52,20 +51,13 @@ export const EditorHeader = ({ handleSnapshot, submission, hasPendingSuggestions
|
|
|
52
51
|
]);
|
|
53
52
|
const onTransitionClick = useCallback((event) => {
|
|
54
53
|
updateState(DialogState.INIT);
|
|
55
|
-
toggleConfirmationDialog(true);
|
|
56
54
|
setSelectedTransitionIndex(event.target.value || event.target.parentNode.value);
|
|
57
|
-
}, [setSelectedTransitionIndex,
|
|
55
|
+
}, [setSelectedTransitionIndex, updateState]);
|
|
58
56
|
const onCancelClick = useCallback(() => {
|
|
59
|
-
toggleConfirmationDialog(false);
|
|
60
57
|
setSelectedTransitionIndex(undefined);
|
|
61
58
|
clearError();
|
|
62
59
|
updateState(DialogState.CLOSED);
|
|
63
|
-
}, [
|
|
64
|
-
toggleConfirmationDialog,
|
|
65
|
-
setSelectedTransitionIndex,
|
|
66
|
-
clearError,
|
|
67
|
-
updateState,
|
|
68
|
-
]);
|
|
60
|
+
}, [setSelectedTransitionIndex, clearError, updateState]);
|
|
69
61
|
const onNoteChange = useCallback((event) => setNoteValue(event.target.value), [setNoteValue]);
|
|
70
62
|
const currentStepTransition = submission === null || submission === void 0 ? void 0 : submission.currentStep.type.transitions;
|
|
71
63
|
const disable = !currentStepTransition || !canCompleteTask;
|
|
@@ -76,7 +68,7 @@ export const EditorHeader = ({ handleSnapshot, submission, hasPendingSuggestions
|
|
|
76
68
|
React.createElement("span", null, "Dashboard"))),
|
|
77
69
|
handleSnapshot &&
|
|
78
70
|
typeof hasPendingSuggestions == 'boolean' &&
|
|
79
|
-
submission.nextStep && (React.createElement(ProceedView, { isAnnotator: isAnnotator, isProofer: isProofer, disable: disable, onTransitionClick: onTransitionClick, hasPendingSuggestions: hasPendingSuggestions, dialogData: dialogData, noteValue: noteValue, currentStepTransition: currentStepTransition, currentStepType: submission.currentStep.type, previousStepType: (_e = submission.previousStep) === null || _e === void 0 ? void 0 : _e.type, nextStepType: submission.nextStep.type,
|
|
71
|
+
submission.nextStep && (React.createElement(ProceedView, { isAnnotator: isAnnotator, isProofer: isProofer, disable: disable, onTransitionClick: onTransitionClick, hasPendingSuggestions: hasPendingSuggestions, dialogData: dialogData, noteValue: noteValue, currentStepTransition: currentStepTransition, currentStepType: submission.currentStep.type, previousStepType: (_e = submission.previousStep) === null || _e === void 0 ? void 0 : _e.type, nextStepType: submission.nextStep.type, onNoteChange: disabelProceedNote ? undefined : onNoteChange, continueDialogAction: continueDialogAction, onCancelClick: onCancelClick, message: message })),
|
|
80
72
|
status && (React.createElement(ChildWrapper, null,
|
|
81
73
|
React.createElement(SaveStatus, { status: status }))),
|
|
82
74
|
React.createElement(Spacer, null),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useMemo } from 'react';
|
|
1
|
+
import React, { useEffect, useMemo, useRef } from 'react';
|
|
2
2
|
import styled from 'styled-components';
|
|
3
3
|
import { Category, Dialog, DialogState, LoadingOverlay, NavDropdown, NavDropdownButton, NavDropdownContainer, PrimaryBoldHeading, PrimaryButton, SecondarySmallText, TaskStepDoneIcon, useDropdown, } from '../..';
|
|
4
4
|
import { AlertMessage, AlertMessageType } from '../AlertMessage';
|
|
@@ -17,8 +17,11 @@ const StepDetails = ({ icon, label, description, role }) => (React.createElement
|
|
|
17
17
|
React.createElement(SecondarySmallText, null,
|
|
18
18
|
"Actor: ",
|
|
19
19
|
role.label))));
|
|
20
|
-
export const ProceedView = ({ currentStepTransition, onTransitionClick, disable, dialogData,
|
|
21
|
-
const dialogMessages = useMemo(() => hasPendingSuggestions &&
|
|
20
|
+
export const ProceedView = ({ currentStepTransition, onTransitionClick, disable, dialogData, previousStepType, currentStepType, isAnnotator, isProofer, hasPendingSuggestions, onCancelClick, continueDialogAction, message: Message, }) => {
|
|
21
|
+
const dialogMessages = useMemo(() => hasPendingSuggestions &&
|
|
22
|
+
!isAnnotator &&
|
|
23
|
+
!isProofer &&
|
|
24
|
+
dialogData.state !== DialogState.SUCCESS
|
|
22
25
|
? {
|
|
23
26
|
header: 'The task can not be transitioned to the next step',
|
|
24
27
|
message: `There are still pending suggestions in the document.
|
|
@@ -28,6 +31,7 @@ export const ProceedView = ({ currentStepTransition, onTransitionClick, disable,
|
|
|
28
31
|
action: onCancelClick,
|
|
29
32
|
title: 'Ok',
|
|
30
33
|
},
|
|
34
|
+
onClose: onCancelClick,
|
|
31
35
|
},
|
|
32
36
|
}
|
|
33
37
|
: dialogData.state === DialogState.SUCCESS
|
|
@@ -39,6 +43,7 @@ export const ProceedView = ({ currentStepTransition, onTransitionClick, disable,
|
|
|
39
43
|
action: onCancelClick,
|
|
40
44
|
title: 'Close',
|
|
41
45
|
},
|
|
46
|
+
onClose: onCancelClick,
|
|
42
47
|
},
|
|
43
48
|
}
|
|
44
49
|
: {
|
|
@@ -53,6 +58,7 @@ export const ProceedView = ({ currentStepTransition, onTransitionClick, disable,
|
|
|
53
58
|
action: onCancelClick,
|
|
54
59
|
title: 'Cancel',
|
|
55
60
|
},
|
|
61
|
+
onClose: onCancelClick,
|
|
56
62
|
},
|
|
57
63
|
}, [
|
|
58
64
|
dialogData,
|
|
@@ -63,21 +69,34 @@ export const ProceedView = ({ currentStepTransition, onTransitionClick, disable,
|
|
|
63
69
|
isAnnotator,
|
|
64
70
|
isProofer,
|
|
65
71
|
]);
|
|
72
|
+
const prevDialogMsgs = useRef();
|
|
73
|
+
const prevDialogueState = useRef();
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
prevDialogMsgs.current = dialogMessages;
|
|
76
|
+
prevDialogueState.current = dialogData.state;
|
|
77
|
+
}, [dialogData.state]);
|
|
78
|
+
const messages = dialogData.state === DialogState.CLOSED && prevDialogMsgs.current
|
|
79
|
+
? prevDialogMsgs.current
|
|
80
|
+
: dialogMessages;
|
|
81
|
+
const finalState = dialogData.state === DialogState.CLOSED && prevDialogueState.current
|
|
82
|
+
? prevDialogueState.current
|
|
83
|
+
: dialogData.state;
|
|
66
84
|
return (React.createElement(React.Fragment, null,
|
|
67
85
|
(currentStepTransition && (currentStepTransition === null || currentStepTransition === void 0 ? void 0 : currentStepTransition.length) > 1 && (React.createElement(DropdownWrapper, { button: 'Complete task', disabled: disable, primary: true },
|
|
68
86
|
React.createElement(TaskDropdown, null, currentStepTransition &&
|
|
69
87
|
currentStepTransition.map((transition, index) => (React.createElement(Task, { key: 'task_' + transition.type.id, className: transition.status.id === 'success' ? 'happyPath' : '', value: index, onClick: onTransitionClick },
|
|
70
88
|
React.createElement("strong", null, transition.type.label),
|
|
71
89
|
transition.type.description))))))) || (React.createElement(PrimaryButtonSmall, { value: 0, onClick: onTransitionClick, disabled: disable }, "Complete task")),
|
|
72
|
-
|
|
90
|
+
finalState === DialogState.LOADING && (React.createElement(LoadingOverlay, null,
|
|
73
91
|
React.createElement(Message, { isCentered: true }, "Proceeding with your submission\u2026"))),
|
|
74
|
-
|
|
75
|
-
|
|
92
|
+
React.createElement(Dialog, { isOpen: dialogData.state !== DialogState.CLOSED &&
|
|
93
|
+
dialogData.state !== DialogState.LOADING, category: Category.confirmation, header: messages.header, message: messages.message, actions: messages.actions },
|
|
94
|
+
finalState === DialogState.SUCCESS && (React.createElement(Grid, null,
|
|
76
95
|
previousStepType && (React.createElement(StepDetails, Object.assign({}, previousStepType, { icon: React.createElement(React.Fragment, null,
|
|
77
96
|
React.createElement(TaskStepDoneIcon, null),
|
|
78
97
|
React.createElement(Line, null)) }))),
|
|
79
98
|
React.createElement(StepDetails, Object.assign({}, currentStepType)))),
|
|
80
|
-
|
|
99
|
+
finalState === DialogState.ERROR && (React.createElement(AlertMessage, { type: AlertMessageType.error, hideCloseButton: true }, dialogData.error)))));
|
|
81
100
|
};
|
|
82
101
|
const TaskDropdown = styled.div `
|
|
83
102
|
display: flex;
|
|
@@ -50,9 +50,10 @@ export const getCapabilities = (project, profile, role, actions) => {
|
|
|
50
50
|
accessEditor: true,
|
|
51
51
|
formatArticle: !isViewer(),
|
|
52
52
|
editArticle: !isViewer(),
|
|
53
|
-
editMetadata: !(isViewer() ||
|
|
53
|
+
editMetadata: !(isViewer() || isProofer()) || isAnnotator(),
|
|
54
54
|
editCitationsAndRefs: !(isViewer() || isAnnotator() || isProofer()),
|
|
55
55
|
shareProject: isOwner(),
|
|
56
|
+
applySaveChanges: !(isAnnotator() || isProofer()),
|
|
56
57
|
};
|
|
57
58
|
};
|
|
58
59
|
export const getAllPermitted = () => {
|
|
@@ -14,7 +14,6 @@ export declare const ProceedView: React.FC<{
|
|
|
14
14
|
previousStepType: SubmissionStepType | undefined;
|
|
15
15
|
currentStepType: SubmissionStepType;
|
|
16
16
|
nextStepType: SubmissionStepType;
|
|
17
|
-
confirmationDialog: boolean;
|
|
18
17
|
onCancelClick: () => void;
|
|
19
18
|
continueDialogAction: () => Promise<void>;
|
|
20
19
|
message: React.FC<{
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@manuscripts/style-guide",
|
|
3
3
|
"description": "Shared components for Manuscripts applications",
|
|
4
|
-
"version": "1.3.
|
|
4
|
+
"version": "1.3.7-LEAN-2585-0",
|
|
5
5
|
"repository": "github:Atypon-OpenSource/manuscripts-style-guide",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"main": "dist/cjs",
|
|
@@ -141,4 +141,4 @@
|
|
|
141
141
|
"resolutions": {
|
|
142
142
|
"@types/react": "^17.0.2"
|
|
143
143
|
}
|
|
144
|
-
}
|
|
144
|
+
}
|