@manuscripts/body-editor 3.8.5 → 3.8.7

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.
Files changed (45) hide show
  1. package/dist/cjs/components/ChangeHandlingForm.js +4 -3
  2. package/dist/cjs/components/affiliations/AffiliationForm.js +35 -38
  3. package/dist/cjs/components/authors/AuthorDetailsForm.js +42 -36
  4. package/dist/cjs/components/authors/AuthorsModal.js +1 -10
  5. package/dist/cjs/components/authors/CreditDrawer.js +1 -1
  6. package/dist/cjs/components/awards/AwardForm.js +27 -45
  7. package/dist/cjs/components/awards/AwardModal.js +2 -21
  8. package/dist/cjs/components/modal-drawer/GenericDrawerGroup.js +5 -3
  9. package/dist/cjs/components/references/ImportBibliographyForm.js +11 -30
  10. package/dist/cjs/components/references/ImportBibliographyModal.js +2 -17
  11. package/dist/cjs/components/references/ReferenceForm/PersonDropDown.js +6 -6
  12. package/dist/cjs/components/references/ReferenceForm/ReferenceForm.js +72 -98
  13. package/dist/cjs/components/references/ReferenceForm/styled-components.js +8 -64
  14. package/dist/cjs/components/toolbar/InsertEmbedDialog.js +6 -8
  15. package/dist/cjs/components/views/LinkForm.js +63 -37
  16. package/dist/cjs/configs/editor-plugins.js +8 -1
  17. package/dist/cjs/plugins/persistent-cursor.js +62 -0
  18. package/dist/cjs/versions.js +1 -1
  19. package/dist/es/components/ChangeHandlingForm.js +4 -3
  20. package/dist/es/components/affiliations/AffiliationForm.js +34 -37
  21. package/dist/es/components/authors/AuthorDetailsForm.js +41 -35
  22. package/dist/es/components/authors/AuthorsModal.js +1 -10
  23. package/dist/es/components/authors/CreditDrawer.js +2 -2
  24. package/dist/es/components/awards/AwardForm.js +28 -46
  25. package/dist/es/components/awards/AwardModal.js +2 -18
  26. package/dist/es/components/modal-drawer/GenericDrawerGroup.js +5 -3
  27. package/dist/es/components/references/ImportBibliographyForm.js +12 -31
  28. package/dist/es/components/references/ImportBibliographyModal.js +2 -17
  29. package/dist/es/components/references/ReferenceForm/PersonDropDown.js +8 -8
  30. package/dist/es/components/references/ReferenceForm/ReferenceForm.js +71 -97
  31. package/dist/es/components/references/ReferenceForm/styled-components.js +7 -63
  32. package/dist/es/components/toolbar/InsertEmbedDialog.js +7 -9
  33. package/dist/es/components/views/LinkForm.js +63 -37
  34. package/dist/es/configs/editor-plugins.js +8 -1
  35. package/dist/es/plugins/persistent-cursor.js +59 -0
  36. package/dist/es/versions.js +1 -1
  37. package/dist/types/components/ChangeHandlingForm.d.ts +1 -1
  38. package/dist/types/components/authors/AuthorDetailsForm.d.ts +0 -1
  39. package/dist/types/components/references/ReferenceForm/styled-components.d.ts +3 -11
  40. package/dist/types/components/views/LinkForm.d.ts +0 -1
  41. package/dist/types/configs/editor-plugins.d.ts +1 -1
  42. package/dist/types/plugins/persistent-cursor.d.ts +23 -0
  43. package/dist/types/versions.d.ts +1 -1
  44. package/package.json +2 -2
  45. package/styles/AdvancedEditor.css +11 -1
@@ -42,10 +42,11 @@ const react_1 = __importStar(require("react"));
42
42
  const styled_components_1 = __importDefault(require("styled-components"));
43
43
  const ChangeHandlingForm = (props) => {
44
44
  const { values } = (0, formik_1.useFormikContext)();
45
+ const { onChange, id, formRef, children, ...formProps } = props;
45
46
  (0, react_1.useEffect)(() => {
46
- props.onChange?.(values);
47
- }, [props.onChange, values]);
48
- return (react_1.default.createElement(exports.FlexForm, { id: props.id, ref: props.formRef }, props.children));
47
+ onChange?.(values);
48
+ }, [onChange, values]);
49
+ return (react_1.default.createElement(exports.FlexForm, { id: id, ref: formRef, ...formProps }, children));
49
50
  };
50
51
  exports.ChangeHandlingForm = ChangeHandlingForm;
51
52
  exports.FlexForm = (0, styled_components_1.default)(formik_1.Form) `
@@ -42,10 +42,6 @@ const formik_1 = require("formik");
42
42
  const react_1 = __importStar(require("react"));
43
43
  const styled_components_1 = __importDefault(require("styled-components"));
44
44
  const ChangeHandlingForm_1 = require("../ChangeHandlingForm");
45
- const styled_components_2 = require("../references/ReferenceForm/styled-components");
46
- const Row = styled_components_1.default.div `
47
- display: flex;
48
- `;
49
45
  const AffiliationsTextField = (0, styled_components_1.default)(style_guide_1.TextField) `
50
46
  border-radius: 0;
51
47
  background: transparent;
@@ -73,18 +69,6 @@ const DepartmentTextField = (0, styled_components_1.default)(style_guide_1.TextA
73
69
  background: transparent;
74
70
  }
75
71
  `;
76
- const FormLabel = styled_components_1.default.legend `
77
- &:not(:first-child) {
78
- margin-top: 24px;
79
- }
80
- margin-bottom: 12px;
81
- font: ${(props) => props.theme.font.weight.normal}
82
- ${(props) => props.theme.font.size.xlarge} /
83
- ${(props) => props.theme.font.lineHeight.large}
84
- ${(props) => props.theme.font.family.sans};
85
- letter-spacing: -0.4px;
86
- color: ${(props) => props.theme.colors.text.secondary};
87
- `;
88
72
  const MarginRightTextField = (0, styled_components_1.default)(AffiliationsTextField) `
89
73
  margin-right: 4px;
90
74
  `;
@@ -97,32 +81,45 @@ const AffiliationForm = ({ values, onSave, onChange, actionsRef, }) => {
97
81
  };
98
82
  }
99
83
  const formRef = (0, react_1.useRef)(null);
100
- return (react_1.default.createElement(formik_1.Formik, { initialValues: values, onSubmit: onSave, innerRef: formRef, enableReinitialize: true }, () => (react_1.default.createElement(ChangeHandlingForm_1.ChangeHandlingForm, { onChange: onChange, id: "affiliation-form" },
101
- react_1.default.createElement(FormLabel, null, "Institution*"),
102
- react_1.default.createElement(Row, null,
103
- react_1.default.createElement(formik_1.Field, { name: "institution" }, (props) => (react_1.default.createElement(react_1.default.Fragment, null,
104
- react_1.default.createElement(styled_components_2.Label, { htmlFor: "institution", className: "sr-only" }, "Institution Name"),
105
- react_1.default.createElement(AffiliationsTextField, { id: "institution", placeholder: "Institution Name", ...props.field }))))),
106
- react_1.default.createElement(FormLabel, null, "Details"),
107
- react_1.default.createElement(Row, null,
84
+ const validateAffiliation = (values) => {
85
+ const errors = {};
86
+ if (!values.institution?.trim()) {
87
+ errors.institution = 'Institution Name is required';
88
+ }
89
+ return errors;
90
+ };
91
+ return (react_1.default.createElement(formik_1.Formik, { initialValues: values, onSubmit: onSave, innerRef: formRef, enableReinitialize: true, validate: validateAffiliation }, (formik) => (react_1.default.createElement(ChangeHandlingForm_1.ChangeHandlingForm, { onChange: onChange, id: "affiliation-form", noValidate: true },
92
+ react_1.default.createElement(style_guide_1.FormLabel, null, "Institution*"),
93
+ react_1.default.createElement(style_guide_1.FormRow, null,
94
+ react_1.default.createElement(formik_1.Field, { name: "institution" }, (props) => {
95
+ const hasError = formik.touched.institution && formik.errors.institution;
96
+ return (react_1.default.createElement(react_1.default.Fragment, null,
97
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: "institution" }, "Institution Name"),
98
+ react_1.default.createElement(AffiliationsTextField, { id: "institution", ...props.field, error: hasError }),
99
+ hasError && (react_1.default.createElement(style_guide_1.InputErrorText, null, formik.errors.institution))));
100
+ })),
101
+ react_1.default.createElement(style_guide_1.FormLabel, null, "Details"),
102
+ react_1.default.createElement(style_guide_1.FormRow, null,
108
103
  react_1.default.createElement(formik_1.Field, { name: "department" }, (props) => (react_1.default.createElement(react_1.default.Fragment, null,
109
- react_1.default.createElement(styled_components_2.Label, { htmlFor: "department", className: "sr-only" }, "Department"),
110
- react_1.default.createElement(DepartmentTextField, { id: "department", placeholder: "Department", ...props.field }))))),
111
- react_1.default.createElement(Row, null,
104
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: "department" }, "Department"),
105
+ react_1.default.createElement(DepartmentTextField, { id: "department", ...props.field }))))),
106
+ react_1.default.createElement(style_guide_1.FormRow, null,
112
107
  react_1.default.createElement(formik_1.Field, { name: "addressLine1" }, (props) => (react_1.default.createElement(react_1.default.Fragment, null,
113
- react_1.default.createElement(styled_components_2.Label, { htmlFor: "addressLine1", className: "sr-only" }, "Street Address"),
114
- react_1.default.createElement(AffiliationsTextField, { id: "addressLine1", placeholder: "Street Address", ...props.field }))))),
115
- react_1.default.createElement(Row, null,
116
- react_1.default.createElement(formik_1.Field, { name: "city" }, (props) => (react_1.default.createElement(MarginRightTextField, { id: "city", placeholder: "City", "aria-label": "City", ...props.field }))),
108
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: "addressLine1" }, "Street Address"),
109
+ react_1.default.createElement(AffiliationsTextField, { id: "addressLine1", ...props.field }))))),
110
+ react_1.default.createElement(style_guide_1.FormRow, null,
111
+ react_1.default.createElement(formik_1.Field, { name: "city" }, (props) => (react_1.default.createElement(react_1.default.Fragment, null,
112
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: "city" }, "City"),
113
+ react_1.default.createElement(MarginRightTextField, { id: "city", ...props.field })))),
117
114
  react_1.default.createElement(formik_1.Field, { name: "county" }, (props) => (react_1.default.createElement(react_1.default.Fragment, null,
118
- react_1.default.createElement(styled_components_2.Label, { htmlFor: "county", className: "sr-only" }, "State / Province"),
119
- react_1.default.createElement(AffiliationsTextField, { id: "county", placeholder: "State / Province", ...props.field }))))),
120
- react_1.default.createElement(Row, null,
115
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: "county" }, "State / Province"),
116
+ react_1.default.createElement(AffiliationsTextField, { id: "county", ...props.field }))))),
117
+ react_1.default.createElement(style_guide_1.FormRow, null,
121
118
  react_1.default.createElement(formik_1.Field, { name: "postCode" }, (props) => (react_1.default.createElement(react_1.default.Fragment, null,
122
- react_1.default.createElement(styled_components_2.Label, { htmlFor: "postCode", className: "sr-only" }, "Postal Code"),
123
- react_1.default.createElement(MarginRightTextField, { id: "postCode", placeholder: "Postal Code", ...props.field })))),
119
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: "postCode" }, "Postal Code"),
120
+ react_1.default.createElement(MarginRightTextField, { id: "postCode", ...props.field })))),
124
121
  react_1.default.createElement(formik_1.Field, { name: "country" }, ({ field }) => (react_1.default.createElement(react_1.default.Fragment, null,
125
- react_1.default.createElement(styled_components_2.Label, { htmlFor: "country", className: "sr-only" }, "Country"),
126
- react_1.default.createElement(AffiliationsTextField, { id: "country", placeholder: "Country", ...field })))))))));
122
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: "country" }, "Country"),
123
+ react_1.default.createElement(AffiliationsTextField, { id: "country", ...field })))))))));
127
124
  };
128
125
  exports.AffiliationForm = AffiliationForm;
@@ -51,23 +51,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
51
51
  return (mod && mod.__esModule) ? mod : { "default": mod };
52
52
  };
53
53
  Object.defineProperty(exports, "__esModule", { value: true });
54
- exports.AuthorDetailsForm = exports.CheckboxContainer = exports.Fieldset = exports.LabelText = void 0;
54
+ exports.AuthorDetailsForm = exports.CheckboxContainer = exports.Fieldset = void 0;
55
55
  const style_guide_1 = require("@manuscripts/style-guide");
56
56
  const formik_1 = require("formik");
57
57
  const react_1 = __importStar(require("react"));
58
58
  const styled_components_1 = __importDefault(require("styled-components"));
59
59
  const ChangeHandlingForm_1 = require("../ChangeHandlingForm");
60
- const styled_components_2 = require("../references/ReferenceForm/styled-components");
61
- exports.LabelText = styled_components_1.default.div `
62
- font: ${(props) => props.theme.font.weight.normal}
63
- ${(props) => props.theme.font.size.normal} / 1
64
- ${(props) => props.theme.font.family.sans};
65
- letter-spacing: -0.2px;
66
- color: ${(props) => props.theme.colors.text.primary};
67
- &::before {
68
- margin-right: 8px !important;
69
- }
70
- `;
71
60
  exports.Fieldset = styled_components_1.default.fieldset `
72
61
  padding: 0;
73
62
  margin: 0;
@@ -105,39 +94,56 @@ const AuthorDetailsForm = ({ values, onChange, onSave, actionsRef, isEmailRequir
105
94
  },
106
95
  };
107
96
  }
108
- return (react_1.default.createElement(formik_1.Formik, { initialValues: values, onSubmit: onSave, enableReinitialize: true, validateOnChange: true, innerRef: formRef }, () => {
109
- return (react_1.default.createElement(ChangeHandlingForm_1.ChangeHandlingForm, { onChange: onChange, id: "author-details-form", formRef: authorFormRef },
97
+ const validateAuthor = (values) => {
98
+ const errors = {};
99
+ if (isEmailRequired && !values.email) {
100
+ errors.email = 'Email address is required';
101
+ }
102
+ else if (values.email &&
103
+ !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(values.email)) {
104
+ errors.email = 'Invalid email address';
105
+ }
106
+ return errors;
107
+ };
108
+ return (react_1.default.createElement(formik_1.Formik, { initialValues: values, onSubmit: onSave, enableReinitialize: true, validateOnChange: true, innerRef: formRef, validate: validateAuthor }, (formik) => {
109
+ return (react_1.default.createElement(ChangeHandlingForm_1.ChangeHandlingForm, { onChange: onChange, id: "author-details-form", formRef: authorFormRef, noValidate: true },
110
110
  react_1.default.createElement(exports.Fieldset, null,
111
- react_1.default.createElement(style_guide_1.TextFieldGroupContainer, null,
111
+ react_1.default.createElement(style_guide_1.FormRow, null,
112
112
  react_1.default.createElement(formik_1.Field, { name: 'prefix' }, (props) => (react_1.default.createElement(react_1.default.Fragment, null,
113
- react_1.default.createElement(styled_components_2.Label, { htmlFor: "prefix", className: "sr-only" }, "Prefix"),
114
- react_1.default.createElement(style_guide_1.TextField, { id: 'prefix', placeholder: 'Prefix', ...props.field })))),
113
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: "prefix" }, "Prefix"),
114
+ react_1.default.createElement(style_guide_1.TextField, { id: 'prefix', ...props.field }))))),
115
+ react_1.default.createElement(style_guide_1.FormRow, null,
115
116
  react_1.default.createElement(formik_1.Field, { name: 'bibliographicName.given' }, (props) => (react_1.default.createElement(react_1.default.Fragment, null,
116
- react_1.default.createElement(styled_components_2.Label, { htmlFor: "given-name", className: "sr-only" }, "Given name"),
117
- react_1.default.createElement(style_guide_1.TextField, { id: 'given-name', placeholder: 'Given name', ...props.field })))),
117
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: "given-name" }, "Given name"),
118
+ react_1.default.createElement(style_guide_1.TextField, { id: 'given-name', ...props.field }))))),
119
+ react_1.default.createElement(style_guide_1.FormRow, null,
118
120
  react_1.default.createElement(formik_1.Field, { name: 'bibliographicName.family' }, (props) => (react_1.default.createElement(react_1.default.Fragment, null,
119
- react_1.default.createElement(styled_components_2.Label, { htmlFor: "family-name", className: "sr-only" }, "Family name"),
120
- react_1.default.createElement(style_guide_1.TextField, { id: 'family-name', placeholder: 'Family name', ...props.field }))))),
121
- react_1.default.createElement(formik_1.Field, { name: 'email', type: 'email' }, (props) => {
122
- const placeholder = isEmailRequired
123
- ? '*Email address (required)'
124
- : 'Email address';
125
- return (react_1.default.createElement(react_1.default.Fragment, null,
126
- react_1.default.createElement(styled_components_2.Label, { htmlFor: "email", className: "sr-only" }, "Email address"),
127
- react_1.default.createElement(TextFieldWithError, { id: 'email', type: "email", required: isEmailRequired, placeholder: placeholder, ...props.field })));
128
- }),
129
- react_1.default.createElement(formik_1.Field, { name: 'role' }, (props) => (react_1.default.createElement(react_1.default.Fragment, null,
130
- react_1.default.createElement(styled_components_2.Label, { htmlFor: "role", className: "sr-only" }, "Job Title"),
131
- react_1.default.createElement(style_guide_1.TextField, { id: 'role', placeholder: 'Job Title', ...props.field })))),
121
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: "family-name" }, "Family name"),
122
+ react_1.default.createElement(style_guide_1.TextField, { id: 'family-name', ...props.field }))))),
123
+ react_1.default.createElement(style_guide_1.FormRow, null,
124
+ react_1.default.createElement(formik_1.Field, { name: 'email', type: 'email' }, (props) => {
125
+ const hasError = (0, formik_1.getIn)(formik.touched, 'email') &&
126
+ (0, formik_1.getIn)(formik.errors, 'email');
127
+ return (react_1.default.createElement(react_1.default.Fragment, null,
128
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: "email" }, isEmailRequired
129
+ ? 'Email address (required)'
130
+ : 'Email address'),
131
+ react_1.default.createElement(TextFieldWithError, { id: 'email', type: "email", required: isEmailRequired, ...props.field, error: hasError }),
132
+ hasError && (react_1.default.createElement(style_guide_1.InputErrorText, null, (0, formik_1.getIn)(formik.errors, 'email')))));
133
+ })),
134
+ react_1.default.createElement(style_guide_1.FormRow, null,
135
+ react_1.default.createElement(formik_1.Field, { name: 'role' }, (props) => (react_1.default.createElement(react_1.default.Fragment, null,
136
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: "role" }, "Job Title"),
137
+ react_1.default.createElement(style_guide_1.TextField, { id: 'role', ...props.field }))))),
132
138
  react_1.default.createElement(exports.CheckboxContainer, null,
133
139
  react_1.default.createElement(style_guide_1.CheckboxLabel, null,
134
140
  react_1.default.createElement(formik_1.Field, { name: 'isCorresponding' }, (props) => (react_1.default.createElement(style_guide_1.CheckboxField, { id: 'isCorresponding', checked: props.field.value, ...props.field }))),
135
- react_1.default.createElement(exports.LabelText, null, "Corresponding Author"))),
141
+ react_1.default.createElement(style_guide_1.LabelText, null, "Corresponding Author"))),
136
142
  react_1.default.createElement(OrcidContainer, null,
137
- react_1.default.createElement(style_guide_1.TextFieldLabel, null,
138
- react_1.default.createElement(exports.LabelText, null, "ORCID"),
143
+ react_1.default.createElement(style_guide_1.FormRow, null,
144
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: "orcid" }, "ORCID"),
139
145
  react_1.default.createElement(formik_1.Field, { name: 'ORCIDIdentifier', type: 'text' }, (props) => (react_1.default.createElement(react_1.default.Fragment, null,
140
- react_1.default.createElement(styled_components_2.Label, { htmlFor: "orcid", className: "sr-only" }, "ORCID"),
146
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: "orcid", className: "sr-only" }, "ORCID"),
141
147
  react_1.default.createElement(style_guide_1.TextField, { id: 'orcid', placeholder: 'https://orcid.org/...', pattern: "https://orcid\\.org/\\d{4}-\\d{4}-\\d{4}-\\d{3}[0-9Xx]", title: "Please enter a valid ORCID URL format: https://orcid.org/xxxx-xxxx-xxxx-xxxx", ...props.field })))))))));
142
148
  }));
143
149
  };
@@ -355,7 +355,7 @@ const AuthorsModal = ({ authors: $authors, affiliations: $affiliations, author,
355
355
  (isCreatingNewAuthor &&
356
356
  !showConfirmationDialog &&
357
357
  !showRequiredFieldConfirmationDialog), isDisableSave: isDisableSave }),
358
- react_1.default.createElement(FormLabel, null, "Details"),
358
+ react_1.default.createElement(style_guide_1.FormLabel, null, "Details"),
359
359
  react_1.default.createElement(AuthorDetailsForm_1.AuthorDetailsForm, { values: (0, normalize_1.normalizeAuthor)(selection), onChange: changeAuthor, onSave: saveAuthor, actionsRef: actionsRef, isEmailRequired: isEmailRequired, selectedAffiliations: selectedAffiliations.map((a) => a.id), authorFormRef: authorFormRef, selectedCreditRoles: selectedCreditRoles }),
360
360
  react_1.default.createElement(GenericDrawerGroup_1.DrawerGroup, { Drawer: AffiliationDrawer_1.AffiliationsDrawer, removeItem: removeAffiliation, selectedItems: selectedAffiliations, onSelect: selectAffiliation, items: affiliations, showDrawer: showAffiliationDrawer, setShowDrawer: setShowAffiliationDrawer, title: "Affiliations", buttonText: "Assign Institutions", cy: "affiliations", labelField: "institution", Icon: react_1.default.createElement(style_guide_1.AddInstitutionIcon, { width: 16, height: 16 }) }),
361
361
  react_1.default.createElement(GenericDrawerGroup_1.DrawerGroup, { Drawer: CreditDrawer_1.CreditDrawer, removeItem: removeCreditRole, selectedItems: selectedCreditRoles.map((r) => ({
@@ -398,15 +398,6 @@ const AddAuthorButton = styled_components_1.default.div `
398
398
  const ActionTitle = styled_components_1.default.div `
399
399
  padding-left: ${(props) => props.theme.grid.unit * 2}px;
400
400
  `;
401
- const FormLabel = styled_components_1.default.legend `
402
- margin-bottom: 12px;
403
- font: ${(props) => props.theme.font.weight.normal}
404
- ${(props) => props.theme.font.size.xlarge} /
405
- ${(props) => props.theme.font.lineHeight.large}
406
- ${(props) => props.theme.font.family.sans};
407
- letter-spacing: -0.4px;
408
- color: ${(props) => props.theme.colors.text.secondary};
409
- `;
410
401
  const AuthorForms = styled_components_1.default.div `
411
402
  padding-left: ${(props) => props.theme.grid.unit * 3}px;
412
403
  padding-right: ${(props) => props.theme.grid.unit * 3}px;
@@ -15,7 +15,7 @@ const CreditDrawer = ({ items, selectedItems = [], onSelect, ...drawerProps }) =
15
15
  react_1.default.createElement(style_guide_1.CheckboxField, { id: 'credit-role-' + i, name: item.id, checked: selectedItems?.map((a) => a.id).includes(item.id), onChange: () => {
16
16
  onSelect(item.id);
17
17
  } }),
18
- react_1.default.createElement(AuthorDetailsForm_1.LabelText, null, item.vocabTerm))))))));
18
+ react_1.default.createElement(style_guide_1.LabelText, null, item.vocabTerm))))))));
19
19
  };
20
20
  exports.CreditDrawer = CreditDrawer;
21
21
  const TwoColumnContainer = (0, styled_components_1.default)(style_guide_1.DrawerItemsList) `
@@ -117,54 +117,36 @@ const AwardForm = ({ values, onSave, onCancel, onChange, }) => {
117
117
  }, enableReinitialize: true, validate: validate, validateOnChange: false, innerRef: formRef }, (formik) => {
118
118
  return (react_1.default.createElement(ChangeHandlingForm_1.ChangeHandlingForm, { onChange: onChange },
119
119
  react_1.default.createElement(formik_1.Field, { type: "hidden", name: "id" }),
120
- react_1.default.createElement(LabelContainer, null,
121
- react_1.default.createElement(Label, { htmlFor: 'source' }, "Funder name")),
122
- react_1.default.createElement(SearchContainer, null,
123
- react_1.default.createElement(SearchIconContainer, null,
124
- react_1.default.createElement(style_guide_1.SearchIcon, null)),
125
- react_1.default.createElement(formik_1.Field, { name: "source" }, (props) => (react_1.default.createElement(StyledTextField, { id: "source", placeholder: "Search for funder...", onChange: (e) => {
126
- props.field.onChange(e);
127
- handleFunderSearch(e);
128
- }, value: props.field.value || '', autoFocus: true }))),
129
- isLoading && react_1.default.createElement(LoadingText, null, "Loading..."),
130
- funders.length > 0 && (react_1.default.createElement(SearchResults, null, funders.map((funder) => (react_1.default.createElement(SearchResultItem, { key: funder.value, onClick: () => {
131
- formik.setFieldValue('source', funder.value);
132
- setFunders([]);
133
- } }, funder.label)))))),
134
- formik.errors.source && formik.touched.source && (react_1.default.createElement(ErrorText, null, formik.errors.source)),
135
- react_1.default.createElement(LabelContainer, null,
136
- react_1.default.createElement(Label, { htmlFor: 'code' }, "Grant number")),
137
- react_1.default.createElement(style_guide_1.MultiValueInput, { id: "code", inputType: "text", placeholder: "Enter grant number and press enter", initialValues: values.code ? values.code.split(';') : [], onChange: (newValues) => {
138
- formik.setFieldValue('code', newValues.join(';'));
139
- } }),
140
- react_1.default.createElement(LabelContainer, null,
141
- react_1.default.createElement(Label, { htmlFor: 'recipient' }, "Recipient name")),
142
- react_1.default.createElement(formik_1.Field, { name: "recipient" }, (props) => (react_1.default.createElement(style_guide_1.TextField, { id: "recipient", placeholder: "Enter full name", ...props.field }))),
143
- react_1.default.createElement(ButtonContainer, null,
144
- react_1.default.createElement(style_guide_1.SecondaryButton, { onClick: handleCancel }, "Cancel"),
145
- react_1.default.createElement(style_guide_1.PrimaryButton, { type: "submit", disabled: !formik.dirty || formik.isSubmitting }, primaryButtonText))));
120
+ react_1.default.createElement(style_guide_1.FormRow, null,
121
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: 'source' }, "Funder name"),
122
+ react_1.default.createElement(SearchContainer, null,
123
+ react_1.default.createElement(SearchIconContainer, null,
124
+ react_1.default.createElement(style_guide_1.SearchIcon, null)),
125
+ react_1.default.createElement(formik_1.Field, { name: "source" }, (props) => (react_1.default.createElement(StyledTextField, { id: "source", placeholder: "Search for funder...", onChange: (e) => {
126
+ props.field.onChange(e);
127
+ handleFunderSearch(e);
128
+ }, value: props.field.value || '' }))),
129
+ isLoading && react_1.default.createElement(LoadingText, null, "Loading..."),
130
+ funders.length > 0 && (react_1.default.createElement(SearchResults, null, funders.map((funder) => (react_1.default.createElement(SearchResultItem, { key: funder.value, onClick: () => {
131
+ formik.setFieldValue('source', funder.value);
132
+ setFunders([]);
133
+ } }, funder.label)))))),
134
+ formik.errors.source && formik.touched.source && (react_1.default.createElement(ErrorText, null, formik.errors.source))),
135
+ react_1.default.createElement(style_guide_1.FormRow, null,
136
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: 'code' }, "Grant number"),
137
+ react_1.default.createElement(style_guide_1.MultiValueInput, { id: "code", inputType: "text", placeholder: "Enter grant number and press enter", initialValues: values.code ? values.code.split(';') : [], onChange: (newValues) => {
138
+ formik.setFieldValue('code', newValues.join(';'));
139
+ } })),
140
+ react_1.default.createElement(style_guide_1.FormRow, null,
141
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: 'recipient' }, "Recipient name"),
142
+ react_1.default.createElement(formik_1.Field, { name: "recipient" }, (props) => (react_1.default.createElement(style_guide_1.TextField, { id: "recipient", placeholder: "Enter full name", ...props.field })))),
143
+ react_1.default.createElement(style_guide_1.FormRow, null,
144
+ react_1.default.createElement(style_guide_1.FormActionsBar, null,
145
+ react_1.default.createElement(style_guide_1.SecondaryButton, { onClick: handleCancel }, "Cancel"),
146
+ react_1.default.createElement(style_guide_1.PrimaryButton, { type: "submit", disabled: !formik.dirty || formik.isSubmitting }, primaryButtonText)))));
146
147
  }));
147
148
  };
148
149
  exports.AwardForm = AwardForm;
149
- const LabelContainer = styled_components_1.default.div `
150
- display: flex;
151
- justify-content: space-between;
152
- align-items: center;
153
- margin-top: ${(props) => 4 * props.theme.grid.unit}px;
154
- margin-bottom: ${(props) => props.theme.grid.unit}px;
155
- `;
156
- const Label = styled_components_1.default.label `
157
- font-family: ${(props) => props.theme.font.family.sans};
158
- font-size: ${(props) => props.theme.font.size.large};
159
- display: block;
160
- color: ${(props) => props.theme.colors.text.secondary};
161
- `;
162
- const ButtonContainer = styled_components_1.default.div `
163
- display: flex;
164
- justify-content: flex-end;
165
- margin-top: 16px;
166
- gap: 8px;
167
- `;
168
150
  const SearchContainer = styled_components_1.default.div `
169
151
  position: relative;
170
152
  width: 100%;
@@ -32,30 +32,11 @@ var __importStar = (this && this.__importStar) || (function () {
32
32
  return result;
33
33
  };
34
34
  })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
35
  Object.defineProperty(exports, "__esModule", { value: true });
39
36
  exports.AwardModal = void 0;
40
37
  const style_guide_1 = require("@manuscripts/style-guide");
41
38
  const react_1 = __importStar(require("react"));
42
- const styled_components_1 = __importDefault(require("styled-components"));
43
39
  const AwardForm_1 = require("./AwardForm");
44
- const ModalBody = styled_components_1.default.div `
45
- box-sizing: border-box;
46
- padding: ${(props) => 6 * props.theme.grid.unit}px;
47
- background-color: ${(props) => props.theme.colors.background.primary};
48
- width: 480px;
49
- max-width: 60vw;
50
- max-height: 80vh;
51
- `;
52
- const ModalTitle = styled_components_1.default.h2 `
53
- font-family: ${(props) => props.theme.font.family.sans};
54
- font-size: ${(props) => props.theme.font.size.medium};
55
- font-weight: ${(props) => props.theme.font.weight.bold};
56
- color: ${(props) => props.theme.colors.text.primary};
57
- margin: 0;
58
- `;
59
40
  const normalizeData = (award) => ({
60
41
  id: award.id || '',
61
42
  source: award.source || '',
@@ -83,8 +64,8 @@ const AwardModal = ({ initialData, onSaveAward, onCancelAward, }) => {
83
64
  react_1.default.createElement(style_guide_1.ModalContainer, { "data-cy": "award-modal" },
84
65
  react_1.default.createElement(style_guide_1.ModalHeader, null,
85
66
  react_1.default.createElement(style_guide_1.CloseButton, { onClick: handleCancel, "data-cy": "modal-close-button" })),
86
- react_1.default.createElement(ModalBody, null,
87
- react_1.default.createElement(ModalTitle, null, "Add Funder information"),
67
+ react_1.default.createElement(style_guide_1.ModalCardBody, { width: 480 },
68
+ react_1.default.createElement(style_guide_1.ModalTitle, null, "Add Funder information"),
88
69
  react_1.default.createElement(AwardForm_1.AwardForm, { values: normalizedValues, onSave: handleSave, onCancel: handleCancel, onChange: handleChange })))));
89
70
  };
90
71
  exports.AwardModal = AwardModal;
@@ -39,9 +39,11 @@ function DrawerGroup({ removeItem, selectedItems, onSelect, items, showDrawer, s
39
39
  }
40
40
  const DrawerSectionTitle = styled_components_1.default.h3 `
41
41
  margin: 0;
42
- font-weight: ${(props) => props.theme.font.weight.normal};
43
- font-size: ${(props) => props.theme.font.size.large};
44
- font-family: ${(props) => props.theme.font.family.sans};
42
+ padding-bottom: 12px;
43
+ font: ${(props) => props.theme.font.weight.normal}
44
+ ${(props) => props.theme.font.size.xlarge} /
45
+ ${(props) => props.theme.font.lineHeight.large}
46
+ ${(props) => props.theme.font.family.sans};
45
47
  color: ${(props) => props.theme.colors.text.secondary};
46
48
  `;
47
49
  exports.AssignButton = styled_components_1.default.button `
@@ -117,19 +117,20 @@ const ImportBibliographyForm = ({ onCancel, onSave, }) => {
117
117
  reader.readAsText(file);
118
118
  };
119
119
  return (react_1.default.createElement("form", { onSubmit: formik.handleSubmit, onReset: formik.handleReset },
120
- react_1.default.createElement(DropContainer, { onDrop: handleDrop, onDragOver: (e) => {
121
- e.preventDefault();
122
- setDragging(true);
123
- }, onDragLeave: () => setDragging(false), active: dragging },
124
- react_1.default.createElement("input", { id: "file", name: "file", type: "file", onChange: handleFileChange, style: { display: 'none' } }),
125
- react_1.default.createElement(Label, { htmlFor: "file" }, "Drag & Drop or Click here to upload a file.")),
126
- react_1.default.createElement(LabelContainer, null,
127
- react_1.default.createElement(Label, null, "Alternatively, you can directly Copy&Paste below, the text of the bibliography items.")),
128
- react_1.default.createElement(style_guide_1.TextArea, { name: "content", rows: 6, value: formik.values.content, onChange: formik.handleChange }),
120
+ react_1.default.createElement(style_guide_1.FormRow, null,
121
+ react_1.default.createElement(DropContainer, { onDrop: handleDrop, onDragOver: (e) => {
122
+ e.preventDefault();
123
+ setDragging(true);
124
+ }, onDragLeave: () => setDragging(false), active: dragging },
125
+ react_1.default.createElement("input", { id: "file", name: "file", type: "file", onChange: handleFileChange, style: { display: 'none' } }),
126
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: "file" }, "Drag & Drop or Click here to upload a file."))),
127
+ react_1.default.createElement(style_guide_1.FormRow, null,
128
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: "content" }, "Alternatively, you can directly Copy&Paste below, the text of the bibliography items."),
129
+ react_1.default.createElement(style_guide_1.TextArea, { id: "content", name: "content", rows: 6, value: formik.values.content, onChange: formik.handleChange })),
129
130
  react_1.default.createElement(Preview, null,
130
131
  formik.values.err,
131
132
  formik.values.data.map((item) => (react_1.default.createElement(ReferenceLine_1.ReferenceLine, { item: item, key: item.id })))),
132
- react_1.default.createElement(ButtonContainer, null,
133
+ react_1.default.createElement(style_guide_1.FormActionsBar, null,
133
134
  react_1.default.createElement(style_guide_1.SecondaryButton, { type: "reset" }, "Cancel"),
134
135
  react_1.default.createElement(style_guide_1.PrimaryButton, { type: "submit", disabled: !formik.dirty || formik.isSubmitting || !formik.values.data.length }, "Save"))));
135
136
  };
@@ -142,26 +143,6 @@ const Preview = styled_components_1.default.div `
142
143
  margin-top: ${(props) => 4 * props.theme.grid.unit}px;
143
144
  margin-bottom: ${(props) => props.theme.grid.unit}px;
144
145
  `;
145
- const LabelContainer = styled_components_1.default.div `
146
- display: flex;
147
- justify-content: space-between;
148
- align-items: center;
149
- margin-top: ${(props) => 4 * props.theme.grid.unit}px;
150
- margin-bottom: ${(props) => props.theme.grid.unit}px;
151
- `;
152
- const Label = styled_components_1.default.label `
153
- font-size: ${(props) => props.theme.font.size.normal};
154
- line-height: ${(props) => props.theme.font.lineHeight.large};
155
- font-family: ${(props) => props.theme.font.family.Lato};
156
- display: block;
157
- color: ${(props) => props.theme.colors.text.secondary};
158
- `;
159
- const ButtonContainer = styled_components_1.default.div `
160
- display: flex;
161
- justify-content: flex-end;
162
- margin-top: ${(props) => 4 * props.theme.grid.unit}px;
163
- gap: ${(props) => 2 * props.theme.grid.unit}px;
164
- `;
165
146
  const activeBoxStyle = (0, styled_components_1.css) `
166
147
  background: #f2fbfc;
167
148
  border: 1px dashed #bce7f6;
@@ -94,8 +94,8 @@ const ImportBibliographyModal = ({ onCancel, onSave }) => {
94
94
  react_1.default.createElement(style_guide_1.ModalContainer, { "data-cy": "import-bibliography-modal" },
95
95
  react_1.default.createElement(style_guide_1.ModalHeader, null,
96
96
  react_1.default.createElement(style_guide_1.CloseButton, { onClick: onCancel, "data-cy": "modal-close-button" })),
97
- react_1.default.createElement(ModalBody, null,
98
- react_1.default.createElement(ModalTitle, null, "Import Bibliography"),
97
+ react_1.default.createElement(style_guide_1.ModalCardBody, { width: 640 },
98
+ react_1.default.createElement(style_guide_1.ModalTitle, null, "Import Bibliography"),
99
99
  react_1.default.createElement("p", null,
100
100
  react_1.default.createElement(SpanWithExample, { "data-tooltip-id": "import-example-tooltip", "data-tooltip-content": exampleBibtex }, "BibTex"),
101
101
  ",",
@@ -117,21 +117,6 @@ const ImportBibliographyModal = ({ onCancel, onSave }) => {
117
117
  react_1.default.createElement(Example, { id: "import-example-tooltip", place: "bottom", render: (s) => react_1.default.createElement("pre", null, s.content) })))));
118
118
  };
119
119
  exports.ImportBibliographyModal = ImportBibliographyModal;
120
- const ModalBody = styled_components_1.default.div `
121
- box-sizing: border-box;
122
- padding: ${(props) => 6 * props.theme.grid.unit}px;
123
- background-color: ${(props) => props.theme.colors.background.primary};
124
- width: 640px;
125
- max-width: 60vw;
126
- max-height: 80vh;
127
- `;
128
- const ModalTitle = styled_components_1.default.h2 `
129
- font-family: ${(props) => props.theme.font.family.sans};
130
- font-size: ${(props) => props.theme.font.size.medium};
131
- font-weight: ${(props) => props.theme.font.weight.bold};
132
- color: ${(props) => props.theme.colors.text.primary};
133
- margin: 0;
134
- `;
135
120
  const SpanWithExample = styled_components_1.default.span `
136
121
  text-decoration: underline dotted;
137
122
  text-underline-offset: 4px;
@@ -52,11 +52,11 @@ const PersonDropDown = (props) => {
52
52
  react_1.default.createElement(styled_components_1.RemoveButton, { type: "button", "aria-label": "Delete this editor", onClick: () => remove(index) },
53
53
  react_1.default.createElement(style_guide_1.DeleteIcon, null))),
54
54
  isOpen && (react_1.default.createElement(styled_components_1.PersonForm, null,
55
- react_1.default.createElement(formik_1.Field, { name: `${prefix}.given`, value: person.given, onChange: onChange }, ({ field }) => (react_1.default.createElement(styled_components_1.NameFieldContainer, null,
56
- react_1.default.createElement(styled_components_1.NameField, { ...field, id: field.name, placeholder: 'Given', autoFocus: true }),
57
- react_1.default.createElement(styled_components_1.FieldLabel, { htmlFor: field.name }, "Given")))),
58
- react_1.default.createElement(formik_1.Field, { name: `${prefix}.family`, value: person.family, onChange: onChange }, ({ field }) => (react_1.default.createElement(styled_components_1.NameFieldContainer, null,
59
- react_1.default.createElement(styled_components_1.NameField, { ...field, id: field.name, placeholder: 'Family', autoFocus: true }),
60
- react_1.default.createElement(styled_components_1.FieldLabel, { htmlFor: field.name }, "Family"))))))));
55
+ react_1.default.createElement(style_guide_1.FormRow, null,
56
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: `${prefix}.given` }, "Given Name"),
57
+ react_1.default.createElement(formik_1.Field, { name: `${prefix}.given`, id: `${prefix}.given`, value: person.given, onChange: onChange, component: style_guide_1.TextField })),
58
+ react_1.default.createElement(style_guide_1.FormRow, null,
59
+ react_1.default.createElement(style_guide_1.Label, { htmlFor: `${prefix}.family` }, "Family Name"),
60
+ react_1.default.createElement(formik_1.Field, { name: `${prefix}.family`, id: `${prefix}.family`, value: person.family, onChange: onChange, component: style_guide_1.TextField }))))));
61
61
  };
62
62
  exports.PersonDropDown = PersonDropDown;