@manuscripts/article-editor 4.7.28 → 4.7.30

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 (150) hide show
  1. package/dist/cjs/components/DocumentOptionsDropdown.js +92 -6
  2. package/dist/cjs/components/DocumentOptionsDropdown.js.map +1 -1
  3. package/dist/cjs/components/FileManager/FileActions.js +68 -11
  4. package/dist/cjs/components/FileManager/FileActions.js.map +1 -1
  5. package/dist/cjs/components/FileManager/FileContainer.js +10 -2
  6. package/dist/cjs/components/FileManager/FileContainer.js.map +1 -1
  7. package/dist/cjs/components/FileManager/FileGroup.js +7 -2
  8. package/dist/cjs/components/FileManager/FileGroup.js.map +1 -1
  9. package/dist/cjs/components/FileManager/FileUploader.js +12 -1
  10. package/dist/cjs/components/FileManager/FileUploader.js.map +1 -1
  11. package/dist/cjs/components/FileManager/InlineFilesSection.js +11 -0
  12. package/dist/cjs/components/FileManager/InlineFilesSection.js.map +1 -1
  13. package/dist/cjs/components/FileManager/MainFilesSection.js +8 -0
  14. package/dist/cjs/components/FileManager/MainFilesSection.js.map +1 -1
  15. package/dist/cjs/components/FileManager/OtherFilesSection.js +1 -1
  16. package/dist/cjs/components/FileManager/OtherFilesSection.js.map +1 -1
  17. package/dist/cjs/components/FileManager/SupplementsSection.js +5 -1
  18. package/dist/cjs/components/FileManager/SupplementsSection.js.map +1 -1
  19. package/dist/cjs/components/Inspector.js +17 -1
  20. package/dist/cjs/components/Inspector.js.map +1 -1
  21. package/dist/cjs/components/Panel.js +2 -2
  22. package/dist/cjs/components/Panel.js.map +1 -1
  23. package/dist/cjs/components/SearchReplace/SearchField.js +3 -3
  24. package/dist/cjs/components/SearchReplace/SearchField.js.map +1 -1
  25. package/dist/cjs/components/SearchReplace/SearchReplace.js +1 -1
  26. package/dist/cjs/components/SearchReplace/SearchReplace.js.map +1 -1
  27. package/dist/cjs/components/comments/CommentActions.js +78 -7
  28. package/dist/cjs/components/comments/CommentActions.js.map +1 -1
  29. package/dist/cjs/components/comments/CommentBody.js +2 -2
  30. package/dist/cjs/components/comments/CommentBody.js.map +1 -1
  31. package/dist/cjs/components/comments/CommentResolveButton.js +6 -1
  32. package/dist/cjs/components/comments/CommentResolveButton.js.map +1 -1
  33. package/dist/cjs/components/comments/CommentThread.js +30 -2
  34. package/dist/cjs/components/comments/CommentThread.js.map +1 -1
  35. package/dist/cjs/components/comments/CommentsPanel.js +39 -5
  36. package/dist/cjs/components/comments/CommentsPanel.js.map +1 -1
  37. package/dist/cjs/components/comments/DeleteCommentConfirmation.js +2 -2
  38. package/dist/cjs/components/comments/DeleteCommentConfirmation.js.map +1 -1
  39. package/dist/cjs/components/comments/ReplyBox.js +2 -2
  40. package/dist/cjs/components/comments/ReplyBox.js.map +1 -1
  41. package/dist/cjs/components/inspector/SnapshotsList.js +2 -2
  42. package/dist/cjs/components/inspector/SnapshotsList.js.map +1 -1
  43. package/dist/cjs/components/projects/EditorElement.js +17 -1
  44. package/dist/cjs/components/projects/EditorElement.js.map +1 -1
  45. package/dist/cjs/components/projects/ListToolbarItem.js +87 -6
  46. package/dist/cjs/components/projects/ListToolbarItem.js.map +1 -1
  47. package/dist/cjs/components/projects/ListToolbarItemStyles.js +12 -0
  48. package/dist/cjs/components/projects/ListToolbarItemStyles.js.map +1 -1
  49. package/dist/cjs/components/projects/ManuscriptMenus.js +2 -2
  50. package/dist/cjs/components/projects/ManuscriptMenus.js.map +1 -1
  51. package/dist/cjs/components/projects/ManuscriptPageContainer.js +23 -3
  52. package/dist/cjs/components/projects/ManuscriptPageContainer.js.map +1 -1
  53. package/dist/cjs/components/projects/ManuscriptToolbar.js +86 -2
  54. package/dist/cjs/components/projects/ManuscriptToolbar.js.map +1 -1
  55. package/dist/cjs/components/track-changes/ApproveAllButton.js +1 -1
  56. package/dist/cjs/components/track-changes/ApproveAllButton.js.map +1 -1
  57. package/dist/cjs/components/track-changes/SortByDropdown.js +52 -15
  58. package/dist/cjs/components/track-changes/SortByDropdown.js.map +1 -1
  59. package/dist/cjs/components/track-changes/suggestion-list/Suggestion.js +76 -5
  60. package/dist/cjs/components/track-changes/suggestion-list/Suggestion.js.map +1 -1
  61. package/dist/cjs/components/track-changes/suggestion-list/SuggestionActions.js +7 -4
  62. package/dist/cjs/components/track-changes/suggestion-list/SuggestionActions.js.map +1 -1
  63. package/dist/cjs/components/track-changes/suggestion-list/SuggestionList.js +26 -1
  64. package/dist/cjs/components/track-changes/suggestion-list/SuggestionList.js.map +1 -1
  65. package/dist/cjs/components/track-changes/suggestion-list/SuggestionSnippet.js +14 -10
  66. package/dist/cjs/components/track-changes/suggestion-list/SuggestionSnippet.js.map +1 -1
  67. package/dist/cjs/theme/colors.js +2 -1
  68. package/dist/cjs/theme/colors.js.map +1 -1
  69. package/dist/cjs/theme/theme.js +3 -0
  70. package/dist/cjs/theme/theme.js.map +1 -1
  71. package/dist/es/components/DocumentOptionsDropdown.js +59 -6
  72. package/dist/es/components/DocumentOptionsDropdown.js.map +1 -1
  73. package/dist/es/components/FileManager/FileActions.js +68 -11
  74. package/dist/es/components/FileManager/FileActions.js.map +1 -1
  75. package/dist/es/components/FileManager/FileContainer.js +10 -2
  76. package/dist/es/components/FileManager/FileContainer.js.map +1 -1
  77. package/dist/es/components/FileManager/FileGroup.js +7 -2
  78. package/dist/es/components/FileManager/FileGroup.js.map +1 -1
  79. package/dist/es/components/FileManager/FileUploader.js +12 -1
  80. package/dist/es/components/FileManager/FileUploader.js.map +1 -1
  81. package/dist/es/components/FileManager/InlineFilesSection.js +11 -0
  82. package/dist/es/components/FileManager/InlineFilesSection.js.map +1 -1
  83. package/dist/es/components/FileManager/MainFilesSection.js +8 -0
  84. package/dist/es/components/FileManager/MainFilesSection.js.map +1 -1
  85. package/dist/es/components/FileManager/OtherFilesSection.js +1 -1
  86. package/dist/es/components/FileManager/OtherFilesSection.js.map +1 -1
  87. package/dist/es/components/FileManager/SupplementsSection.js +5 -1
  88. package/dist/es/components/FileManager/SupplementsSection.js.map +1 -1
  89. package/dist/es/components/Inspector.js +17 -1
  90. package/dist/es/components/Inspector.js.map +1 -1
  91. package/dist/es/components/Panel.js +2 -2
  92. package/dist/es/components/Panel.js.map +1 -1
  93. package/dist/es/components/SearchReplace/SearchField.js +3 -3
  94. package/dist/es/components/SearchReplace/SearchField.js.map +1 -1
  95. package/dist/es/components/SearchReplace/SearchReplace.js +1 -1
  96. package/dist/es/components/SearchReplace/SearchReplace.js.map +1 -1
  97. package/dist/es/components/comments/CommentActions.js +45 -7
  98. package/dist/es/components/comments/CommentActions.js.map +1 -1
  99. package/dist/es/components/comments/CommentBody.js +2 -2
  100. package/dist/es/components/comments/CommentBody.js.map +1 -1
  101. package/dist/es/components/comments/CommentResolveButton.js +6 -1
  102. package/dist/es/components/comments/CommentResolveButton.js.map +1 -1
  103. package/dist/es/components/comments/CommentThread.js +30 -2
  104. package/dist/es/components/comments/CommentThread.js.map +1 -1
  105. package/dist/es/components/comments/CommentsPanel.js +40 -6
  106. package/dist/es/components/comments/CommentsPanel.js.map +1 -1
  107. package/dist/es/components/comments/DeleteCommentConfirmation.js +2 -2
  108. package/dist/es/components/comments/DeleteCommentConfirmation.js.map +1 -1
  109. package/dist/es/components/comments/ReplyBox.js +2 -2
  110. package/dist/es/components/comments/ReplyBox.js.map +1 -1
  111. package/dist/es/components/inspector/SnapshotsList.js +2 -2
  112. package/dist/es/components/inspector/SnapshotsList.js.map +1 -1
  113. package/dist/es/components/projects/EditorElement.js +17 -1
  114. package/dist/es/components/projects/EditorElement.js.map +1 -1
  115. package/dist/es/components/projects/ListToolbarItem.js +54 -6
  116. package/dist/es/components/projects/ListToolbarItem.js.map +1 -1
  117. package/dist/es/components/projects/ListToolbarItemStyles.js +12 -0
  118. package/dist/es/components/projects/ListToolbarItemStyles.js.map +1 -1
  119. package/dist/es/components/projects/ManuscriptMenus.js +2 -2
  120. package/dist/es/components/projects/ManuscriptMenus.js.map +1 -1
  121. package/dist/es/components/projects/ManuscriptPageContainer.js +23 -3
  122. package/dist/es/components/projects/ManuscriptPageContainer.js.map +1 -1
  123. package/dist/es/components/projects/ManuscriptToolbar.js +53 -2
  124. package/dist/es/components/projects/ManuscriptToolbar.js.map +1 -1
  125. package/dist/es/components/track-changes/ApproveAllButton.js +1 -1
  126. package/dist/es/components/track-changes/ApproveAllButton.js.map +1 -1
  127. package/dist/es/components/track-changes/SortByDropdown.js +52 -12
  128. package/dist/es/components/track-changes/SortByDropdown.js.map +1 -1
  129. package/dist/es/components/track-changes/suggestion-list/Suggestion.js +77 -6
  130. package/dist/es/components/track-changes/suggestion-list/Suggestion.js.map +1 -1
  131. package/dist/es/components/track-changes/suggestion-list/SuggestionActions.js +7 -4
  132. package/dist/es/components/track-changes/suggestion-list/SuggestionActions.js.map +1 -1
  133. package/dist/es/components/track-changes/suggestion-list/SuggestionList.js +26 -1
  134. package/dist/es/components/track-changes/suggestion-list/SuggestionList.js.map +1 -1
  135. package/dist/es/components/track-changes/suggestion-list/SuggestionSnippet.js +10 -6
  136. package/dist/es/components/track-changes/suggestion-list/SuggestionSnippet.js.map +1 -1
  137. package/dist/es/theme/colors.js +1 -0
  138. package/dist/es/theme/colors.js.map +1 -1
  139. package/dist/es/theme/theme.js +3 -0
  140. package/dist/es/theme/theme.js.map +1 -1
  141. package/dist/types/components/FileManager/FileActions.d.ts +1 -1
  142. package/dist/types/components/Inspector.d.ts +3 -1
  143. package/dist/types/components/SearchReplace/SearchField.d.ts +1 -0
  144. package/dist/types/components/comments/CommentThread.d.ts +2 -0
  145. package/dist/types/components/projects/ListToolbarItemStyles.d.ts +4 -2
  146. package/dist/types/components/track-changes/suggestion-list/Suggestion.d.ts +2 -0
  147. package/dist/types/components/track-changes/suggestion-list/SuggestionActions.d.ts +1 -0
  148. package/dist/types/components/track-changes/suggestion-list/SuggestionSnippet.d.ts +3 -0
  149. package/dist/types/theme/colors.d.ts +1 -0
  150. package/package.json +3 -3
@@ -11,7 +11,7 @@
11
11
  */
12
12
  import { ListStyles } from '@manuscripts/body-editor';
13
13
  import { ArrowDownIcon, DropdownList, ToolbarOrderedListIcon, ToolbarUnorderedListIcon, Tooltip, useDropdown, } from '@manuscripts/style-guide';
14
- import React from 'react';
14
+ import React, { useEffect } from 'react';
15
15
  import styled from 'styled-components';
16
16
  import { ListButton, ListStyleButton } from './ListToolbarItemStyles';
17
17
  import { ToolbarItem } from './ManuscriptToolbar';
@@ -20,12 +20,52 @@ const Container = styled.div `
20
20
  `;
21
21
  const ListStyleSelector = ({ title, disabled, styles, onClick, }) => {
22
22
  const { isOpen, toggleOpen, wrapperRef } = useDropdown();
23
- return (React.createElement(Container, { onClick: () => !disabled && toggleOpen(), ref: wrapperRef },
24
- React.createElement(ListStyleButton, { "data-tooltip-id": title, disabled: disabled, "aria-label": title },
23
+ const buttonRef = React.useRef(null);
24
+ const styleRefs = React.useRef([]);
25
+ useEffect(() => {
26
+ if (isOpen) {
27
+ styleRefs.current[0]?.focus();
28
+ }
29
+ }, [isOpen]);
30
+ const handleKeyDown = (e) => {
31
+ if (!isOpen) {
32
+ return;
33
+ }
34
+ const items = styleRefs.current.filter(Boolean);
35
+ if (items.length === 0) {
36
+ return;
37
+ }
38
+ const currentIndex = items.indexOf(document.activeElement);
39
+ if (currentIndex === -1) {
40
+ return;
41
+ }
42
+ e.preventDefault();
43
+ switch (e.key) {
44
+ case 'ArrowDown':
45
+ case 'ArrowRight':
46
+ items[(currentIndex + 1) % items.length]?.focus();
47
+ break;
48
+ case 'ArrowUp':
49
+ case 'ArrowLeft':
50
+ items[(currentIndex - 1 + items.length) % items.length]?.focus();
51
+ break;
52
+ case 'Escape':
53
+ toggleOpen();
54
+ buttonRef.current?.focus();
55
+ break;
56
+ case 'Enter': {
57
+ const el = document.activeElement;
58
+ el?.click();
59
+ break;
60
+ }
61
+ }
62
+ };
63
+ return (React.createElement(Container, { onClick: () => !disabled && toggleOpen(), ref: wrapperRef, onKeyDown: handleKeyDown },
64
+ React.createElement(ListStyleButton, { ref: buttonRef, "data-tooltip-id": title, disabled: disabled, "aria-label": title },
25
65
  React.createElement(ArrowDownIcon, null)),
26
66
  React.createElement(Tooltip, { id: title, place: "bottom" }, title),
27
67
  isOpen && (React.createElement(DropdownList, { direction: 'right', top: 6, onClick: toggleOpen },
28
- React.createElement(ListStyles, { styles: styles, onClick: onClick })))));
68
+ React.createElement(ListStyles, { styles: styles, onClick: onClick, styleRefs: styleRefs })))));
29
69
  };
30
70
  export const ListToolbarItem = ({ state, type, dispatch, view, config }) => {
31
71
  if (!config.options) {
@@ -43,11 +83,19 @@ export const ListToolbarItem = ({ state, type, dispatch, view, config }) => {
43
83
  view && view.focus();
44
84
  };
45
85
  const styles = Object.keys(config.options);
86
+ const run = () => {
87
+ config.run(state, dispatch, view);
88
+ view?.focus();
89
+ };
46
90
  return (React.createElement(ToolbarItem, null,
47
91
  React.createElement(ListButton, { "data-tooltip-id": config.title, "data-active": config.isActive && config.isActive(state), disabled: !isEnabled, onMouseDown: (event) => {
48
92
  event.preventDefault();
49
- config.run(state, dispatch, view);
50
- view && view.focus();
93
+ run();
94
+ }, onKeyDown: (event) => {
95
+ if (event.key === 'Enter') {
96
+ event.preventDefault();
97
+ run();
98
+ }
51
99
  }, "aria-label": config.title }, type === 'ordered_list' ? (React.createElement(ToolbarOrderedListIcon, null)) : (React.createElement(ToolbarUnorderedListIcon, null))),
52
100
  React.createElement(Tooltip, { id: config.title, place: "bottom" }, config.title),
53
101
  React.createElement(ListStyleSelector, { title: config.title + ' styles', disabled: !isEnabled, onClick: handleClick, styles: styles })));
@@ -1 +1 @@
1
- {"version":3,"file":"ListToolbarItem.js","sourceRoot":"","sources":["../../../../src/components/projects/ListToolbarItem.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ListToolbarItem.js","sourceRoot":"","sources":["../../../../src/components/projects/ListToolbarItem.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,UAAU,EAAuB,MAAM,0BAA0B,CAAA;AAC1E,OAAO,EACL,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,wBAAwB,EACxB,OAAO,EACP,WAAW,GACZ,MAAM,0BAA0B,CAAA;AAGjC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACxC,OAAO,MAAM,MAAM,mBAAmB,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEjD,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAA;;CAE3B,CAAA;AASD,MAAM,iBAAiB,GAAqC,CAAC,EAC3D,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE,EAAE;IACH,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAA;IACxD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAoB,IAAI,CAAC,CAAA;IACvD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAA4B,EAAE,CAAC,CAAA;IAE7D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,EAAE,CAAC;YACX,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAA;QAC/B,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,MAAM,aAAa,GAAG,CAAC,CAAsB,EAAE,EAAE;QAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAM;QACR,CAAC;QAED,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAqB,CAAA;QACnE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAM;QACR,CAAC;QAED,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,aAA+B,CAAC,CAAA;QAC5E,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;YACxB,OAAM;QACR,CAAC;QAED,CAAC,CAAC,cAAc,EAAE,CAAA;QAClB,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;YACd,KAAK,WAAW,CAAC;YACjB,KAAK,YAAY;gBACf,KAAK,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;gBACjD,MAAK;YACP,KAAK,SAAS,CAAC;YACf,KAAK,WAAW;gBACd,KAAK,CAAC,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;gBAChE,MAAK;YACP,KAAK,QAAQ;gBACX,UAAU,EAAE,CAAA;gBACZ,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA;gBAC1B,MAAK;YACP,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,EAAE,GAAG,QAAQ,CAAC,aAA4B,CAAA;gBAChD,EAAE,EAAE,KAAK,EAAE,CAAA;gBACX,MAAK;YACP,CAAC;QACH,CAAC;IACH,CAAC,CAAA;IAED,OAAO,CACL,oBAAC,SAAS,IACR,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,IAAI,UAAU,EAAE,EACxC,GAAG,EAAE,UAAU,EACf,SAAS,EAAE,aAAa;QAExB,oBAAC,eAAe,IACd,GAAG,EAAE,SAAS,qBACG,KAAK,EACtB,QAAQ,EAAE,QAAQ,gBACN,KAAK;YAEjB,oBAAC,aAAa,OAAG,CACD;QAClB,oBAAC,OAAO,IAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAC,QAAQ,IAC/B,KAAK,CACE;QACT,MAAM,IAAI,CACT,oBAAC,YAAY,IAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU;YAC3D,oBAAC,UAAU,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,GAAI,CACzD,CAChB,CACS,CACb,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAMvB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;IAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAE9D;;;;;OAKG;IACH,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,EAAE;QACpC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;QAC9C,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAE1C,MAAM,GAAG,GAAG,GAAG,EAAE;QACf,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;QACjC,IAAI,EAAE,KAAK,EAAE,CAAA;IACf,CAAC,CAAA;IACD,OAAO,CACL,oBAAC,WAAW;QACV,oBAAC,UAAU,uBACQ,MAAM,CAAC,KAAK,iBAChB,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EACtD,QAAQ,EAAE,CAAC,SAAS,EACpB,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;gBACrB,KAAK,CAAC,cAAc,EAAE,CAAA;gBACtB,GAAG,EAAE,CAAA;YACP,CAAC,EACD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBACnB,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;oBAC1B,KAAK,CAAC,cAAc,EAAE,CAAA;oBACtB,GAAG,EAAE,CAAA;gBACP,CAAC;YACH,CAAC,gBACW,MAAM,CAAC,KAAK,IAEvB,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,CACzB,oBAAC,sBAAsB,OAAG,CAC3B,CAAC,CAAC,CAAC,CACF,oBAAC,wBAAwB,OAAG,CAC7B,CACU;QACb,oBAAC,OAAO,IAAC,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAC,QAAQ,IACtC,MAAM,CAAC,KAAK,CACL;QACV,oBAAC,iBAAiB,IAChB,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,SAAS,EAC/B,QAAQ,EAAE,CAAC,SAAS,EACpB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,GACd,CACU,CACf,CAAA;AACH,CAAC,CAAA"}
@@ -33,6 +33,7 @@ const buttonCss = css `
33
33
  `;
34
34
  export const ListButton = styled.button.attrs({
35
35
  type: 'button',
36
+ 'data-toolbar-button': true,
36
37
  }) `
37
38
  ${buttonCss};
38
39
  padding: ${(props) => props.theme.grid.unit * 2 - 1}px
@@ -42,9 +43,15 @@ export const ListButton = styled.button.attrs({
42
43
  border-right: 0;
43
44
  border-top-right-radius: 0 !important;
44
45
  border-bottom-right-radius: 0 !important;
46
+
47
+ &:focus-visible {
48
+ outline: 2px solid ${(props) => props.theme.colors.outline.focus};
49
+ outline-offset: -2px;
50
+ }
45
51
  `;
46
52
  export const ListStyleButton = styled.button.attrs({
47
53
  type: 'button',
54
+ 'data-toolbar-button': true,
48
55
  }) `
49
56
  ${buttonCss};
50
57
  border-left: 0;
@@ -60,5 +67,10 @@ export const ListStyleButton = styled.button.attrs({
60
67
  &:hover path {
61
68
  stroke: #6e6e6e;
62
69
  }
70
+
71
+ &:focus-visible {
72
+ outline: 2px solid ${(props) => props.theme.colors.outline.focus};
73
+ outline-offset: -2px;
74
+ }
63
75
  `;
64
76
  //# sourceMappingURL=ListToolbarItemStyles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListToolbarItemStyles.js","sourceRoot":"","sources":["../../../../src/components/projects/ListToolbarItemStyles.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAE/C,MAAM,SAAS,GAAG,GAAG,CAEnB;sBACoB,CAAC,KAAK,EAAE,EAAE,CAC5B,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO;sBACnD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS;;;;;;;kBAOlD,CAAC,KAAK,EAAE,EAAE,CACtB,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS;;;;;;;;;;;CAW5E,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;IAC5C,IAAI,EAAE,QAAQ;CACf,CAAC,CAEA;IACE,SAAS;aACA,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC;MAC/C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;MACpC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC;MACxC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;;;;CAIzC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;IACjD,IAAI,EAAE,QAAQ;CACf,CAAC,CAEA;IACE,SAAS;;;;;;;;;;;;;;CAcZ,CAAA"}
1
+ {"version":3,"file":"ListToolbarItemStyles.js","sourceRoot":"","sources":["../../../../src/components/projects/ListToolbarItemStyles.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAE/C,MAAM,SAAS,GAAG,GAAG,CAEnB;sBACoB,CAAC,KAAK,EAAE,EAAE,CAC5B,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO;sBACnD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS;;;;;;;kBAOlD,CAAC,KAAK,EAAE,EAAE,CACtB,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS;;;;;;;;;;;CAW5E,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;IAC5C,IAAI,EAAE,QAAQ;IACd,qBAAqB,EAAE,IAAI;CAC5B,CAAC,CAEA;IACE,SAAS;aACA,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC;MAC/C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;MACpC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC;MACxC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;;;;;;yBAMjB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK;;;CAGnE,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;IACjD,IAAI,EAAE,QAAQ;IACd,qBAAqB,EAAE,IAAI;CAC5B,CAAC,CAEA;IACE,SAAS;;;;;;;;;;;;;;;;yBAgBY,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK;;;CAGnE,CAAA"}
@@ -75,7 +75,7 @@ export const ManuscriptMenus = () => {
75
75
  }
76
76
  return getFilteredMenus(editor, can);
77
77
  }, [can, editor]);
78
- const { menus, ref, handleClick } = useMenus(specs);
79
- return React.createElement(Menus, { menus: menus, innerRef: ref, handleClick: handleClick });
78
+ const { menus, ref, handleClick, closeAll } = useMenus(specs);
79
+ return (React.createElement(Menus, { menus: menus, innerRef: ref, handleClick: handleClick, closeAll: closeAll }));
80
80
  };
81
81
  //# sourceMappingURL=ManuscriptMenus.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ManuscriptMenus.js","sourceRoot":"","sources":["../../../../src/components/projects/ManuscriptMenus.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ManuscriptMenus.js","sourceRoot":"","sources":["../../../../src/components/projects/ManuscriptMenus.tsx"],"names":[],"mappings":"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"}
@@ -71,11 +71,19 @@ const ManuscriptPageView = () => {
71
71
  React.createElement(MenusWrapper, null,
72
72
  React.createElement(ManuscriptMenus, null),
73
73
  savingProcess && React.createElement(SaveStatus, { status: savingProcess }))),
74
- showTrackChangesToggle && (React.createElement(React.Fragment, null,
74
+ showTrackChangesToggle && (React.createElement(TrackChangesToggleWrapper, { onKeyDown: (e) => {
75
+ if (e.key === 'Enter') {
76
+ e.preventDefault();
77
+ toggleTrackingChangesVisibility();
78
+ }
79
+ }, tabIndex: 0, role: "button", "aria-label": "show tracked changes", "aria-pressed": isTrackingChangesVisible },
75
80
  React.createElement(Label, null, "Show tracked changes"),
76
- React.createElement(IconButton, { defaultColor: true, onClick: toggleTrackingChangesVisibility, "aria-label": isTrackingChangesVisible
81
+ React.createElement(IconButton, { defaultColor: true, onClick: (e) => {
82
+ e.stopPropagation();
83
+ toggleTrackingChangesVisibility();
84
+ }, "aria-label": isTrackingChangesVisible
77
85
  ? 'Hide tracked changes'
78
- : 'Show tracked changes' }, isTrackingChangesVisible ? (React.createElement(SliderOnIcon, null)) : (React.createElement(SliderOffIcon, null)))))),
86
+ : 'Show tracked changes', tabIndex: -1 }, isTrackingChangesVisible ? (React.createElement(SliderOnIcon, null)) : (React.createElement(SliderOffIcon, null)))))),
79
87
  can.seeEditorToolbar && React.createElement(ManuscriptToolbar, null),
80
88
  React.createElement(SearchReplace, null)),
81
89
  React.createElement(EditorBody, { className: "editor-body" },
@@ -84,6 +92,18 @@ const ManuscriptPageView = () => {
84
92
  React.createElement(Inspector, { "data-cy": "inspector" }),
85
93
  React.createElement(UtilitiesEffects, null))));
86
94
  };
95
+ const TrackChangesToggleWrapper = styled.div `
96
+ display: flex;
97
+ align-items: center;
98
+ cursor: pointer;
99
+ border-radius: 4px;
100
+ padding: 0px 8px;
101
+
102
+ &:focus-visible {
103
+ outline: 2px solid ${(props) => props.theme.colors.outline.focus};
104
+ outline-offset: -2px;
105
+ }
106
+ `;
87
107
  const Label = styled.div `
88
108
  padding-right: 8px;
89
109
  white-space: nowrap;
@@ -1 +1 @@
1
- {"version":3,"file":"ManuscriptPageContainer.js","sourceRoot":"","sources":["../../../../src/components/projects/ManuscriptPageContainer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ManuscriptPageContainer.js","sourceRoot":"","sources":["../../../../src/components/projects/ManuscriptPageContainer.tsx"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@
12
12
  import { templateAllows, toolbar, TypeSelector, } from '@manuscripts/body-editor';
13
13
  import { Tooltip } from '@manuscripts/style-guide';
14
14
  import { schema } from '@manuscripts/transform';
15
- import React from 'react';
15
+ import React, { useCallback, useLayoutEffect, useRef } from 'react';
16
16
  import styled from 'styled-components';
17
17
  import { usePermissions } from '../../lib/capabilities';
18
18
  import { useStore } from '../../store';
@@ -23,6 +23,7 @@ export const ToolbarItem = styled.div `
23
23
  `;
24
24
  const ToolbarButton = styled.button.attrs({
25
25
  type: 'button',
26
+ 'data-toolbar-button': true,
26
27
  }) `
27
28
  background-color: ${(props) => props['data-active'] ? '#eee' : props.theme.colors.background.primary};
28
29
  border: 1px solid ${(props) => props.theme.colors.border.secondary};
@@ -47,6 +48,11 @@ const ToolbarButton = styled.button.attrs({
47
48
  opacity: 0.2;
48
49
  cursor: not-allowed;
49
50
  }
51
+
52
+ &:focus-visible {
53
+ outline: 2px solid ${(props) => props.theme.colors.outline.focus};
54
+ outline-offset: -2px;
55
+ }
50
56
  `;
51
57
  export const ToolbarContainer = styled.div `
52
58
  margin: ${(props) => props.theme.grid.unit}px;
@@ -88,9 +94,27 @@ export const ToolbarGroup = styled.div `
88
94
  `;
89
95
  export const ManuscriptToolbar = () => {
90
96
  const can = usePermissions();
97
+ const containerRef = useRef(null);
91
98
  const [{ editor }] = useStore((store) => ({
92
99
  editor: store.editor,
93
100
  }));
101
+ // Get all enabled toolbar buttons
102
+ const getButtons = useCallback(() => {
103
+ if (!containerRef.current) {
104
+ return [];
105
+ }
106
+ return Array.from(containerRef.current.querySelectorAll('[data-toolbar-button]:not([disabled]):not([aria-disabled="true"])'));
107
+ }, []);
108
+ // Roving tabindex: only first button is tabbable, rest are -1
109
+ useLayoutEffect(() => {
110
+ const buttons = getButtons();
111
+ if (buttons.length === 0) {
112
+ return;
113
+ }
114
+ buttons.forEach((button, index) => {
115
+ button.tabIndex = index === 0 ? 0 : -1;
116
+ });
117
+ }, [getButtons, editor]);
94
118
  if (!editor || !editor.view) {
95
119
  return null;
96
120
  }
@@ -99,7 +123,34 @@ export const ManuscriptToolbar = () => {
99
123
  const isEnabled = (id, item, state) => {
100
124
  return item.isEnabled(state);
101
125
  };
102
- return (React.createElement(ToolbarContainer, { "data-cy": "toolbar" },
126
+ const handleKeyDown = (event) => {
127
+ if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') {
128
+ return;
129
+ }
130
+ const target = event.target;
131
+ // Only handle if a button is currently focused
132
+ if (!target.hasAttribute('data-toolbar-button')) {
133
+ return;
134
+ }
135
+ const buttons = getButtons();
136
+ if (buttons.length === 0) {
137
+ return;
138
+ }
139
+ const currentIndex = buttons.indexOf(target);
140
+ if (currentIndex === -1) {
141
+ return;
142
+ }
143
+ event.preventDefault();
144
+ let nextIndex;
145
+ if (event.key === 'ArrowRight') {
146
+ nextIndex = (currentIndex + 1) % buttons.length;
147
+ }
148
+ else {
149
+ nextIndex = (currentIndex - 1 + buttons.length) % buttons.length;
150
+ }
151
+ buttons[nextIndex]?.focus();
152
+ };
153
+ return (React.createElement(ToolbarContainer, { "data-cy": "toolbar", ref: containerRef, onKeyDown: handleKeyDown },
103
154
  React.createElement(ToolbarGroup, null,
104
155
  React.createElement(TypeSelector, { state: state, dispatch: view.dispatch, view: view })),
105
156
  Object.entries(toolbar).map(([groupKey, group]) => (React.createElement(ToolbarGroup, { key: groupKey }, Object.entries(group)
@@ -1 +1 @@
1
- {"version":3,"file":"ManuscriptToolbar.js","sourceRoot":"","sources":["../../../../src/components/projects/ManuscriptToolbar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ManuscriptToolbar.js","sourceRoot":"","sources":["../../../../src/components/projects/ManuscriptToolbar.tsx"],"names":[],"mappings":"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"}
@@ -42,7 +42,7 @@ const ApproveAllButton = ({ approveAll }) => {
42
42
  React.createElement(StyledButton, { onClick: (event) => {
43
43
  event.stopPropagation();
44
44
  setOpenDialog(true);
45
- } }, "Approve all"),
45
+ }, tabIndex: 0 }, "Approve all"),
46
46
  openDialog && (React.createElement(Dialog, { isOpen: openDialog, actions: approveAllDialogActions, category: Category.confirmation, header: 'Are you sure you want to approve all the suggestions?', message: 'By that, all pending suggestions will be applied to the document.' }))));
47
47
  };
48
48
  export default ApproveAllButton;
@@ -1 +1 @@
1
- {"version":3,"file":"ApproveAllButton.js","sourceRoot":"","sources":["../../../../src/components/track-changes/ApproveAllButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACvE,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,MAAM,MAAM,mBAAmB,CAAA;AAEtC,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;eACxB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;WAC3C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;;kBAEpC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;;;;aAIzC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;;CAEvD,CAAA;AACD,MAAM,gBAAgB,GAEjB,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;IACtB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEnD,MAAM,uBAAuB,GAAG;QAC9B,OAAO,EAAE;YACP,MAAM,EAAE,GAAG,EAAE;gBACX,UAAU,EAAE,CAAA;gBACZ,aAAa,CAAC,KAAK,CAAC,CAAA;YACtB,CAAC;YACD,KAAK,EAAE,SAAS;SACjB;QACD,SAAS,EAAE;YACT,MAAM,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC;YAClC,KAAK,EAAE,QAAQ;SAChB;KACF,CAAA;IAED,OAAO,CACL;QACE,oBAAC,YAAY,IACX,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjB,KAAK,CAAC,eAAe,EAAE,CAAA;gBACvB,aAAa,CAAC,IAAI,CAAC,CAAA;YACrB,CAAC,kBAGY;QACd,UAAU,IAAI,CACb,oBAAC,MAAM,IACL,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,uBAAuB,EAChC,QAAQ,EAAE,QAAQ,CAAC,YAAY,EAC/B,MAAM,EAAE,uDAAuD,EAC/D,OAAO,EACL,mEAAmE,GAErE,CACH,CACA,CACJ,CAAA;AACH,CAAC,CAAA;AAED,eAAe,gBAAgB,CAAA"}
1
+ {"version":3,"file":"ApproveAllButton.js","sourceRoot":"","sources":["../../../../src/components/track-changes/ApproveAllButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACvE,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,MAAM,MAAM,mBAAmB,CAAA;AAEtC,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;eACxB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;WAC3C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;;kBAEpC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;;;;aAIzC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;;CAEvD,CAAA;AACD,MAAM,gBAAgB,GAEjB,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;IACtB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEnD,MAAM,uBAAuB,GAAG;QAC9B,OAAO,EAAE;YACP,MAAM,EAAE,GAAG,EAAE;gBACX,UAAU,EAAE,CAAA;gBACZ,aAAa,CAAC,KAAK,CAAC,CAAA;YACtB,CAAC;YACD,KAAK,EAAE,SAAS;SACjB;QACD,SAAS,EAAE;YACT,MAAM,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC;YAClC,KAAK,EAAE,QAAQ;SAChB;KACF,CAAA;IAED,OAAO,CACL;QACE,oBAAC,YAAY,IACX,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjB,KAAK,CAAC,eAAe,EAAE,CAAA;gBACvB,aAAa,CAAC,IAAI,CAAC,CAAA;YACrB,CAAC,EACD,QAAQ,EAAE,CAAC,kBAGE;QACd,UAAU,IAAI,CACb,oBAAC,MAAM,IACL,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,uBAAuB,EAChC,QAAQ,EAAE,QAAQ,CAAC,YAAY,EAC/B,MAAM,EAAE,uDAAuD,EAC/D,OAAO,EACL,mEAAmE,GAErE,CACH,CACA,CACJ,CAAA;AACH,CAAC,CAAA;AAED,eAAe,gBAAgB,CAAA"}
@@ -10,27 +10,56 @@
10
10
  * All portions of the code written by Atypon Systems LLC are Copyright (c) 2019 Atypon Systems LLC. All Rights Reserved.
11
11
  */
12
12
  import { SecondaryButton, useDropdown } from '@manuscripts/style-guide';
13
- import React from 'react';
13
+ import React, { useEffect, useRef } from 'react';
14
14
  import styled, { css } from 'styled-components';
15
15
  import { Dropdown, DropdownButtonContainer, DropdownContainer, DropdownToggle, } from '../nav/Dropdown';
16
16
  export const SortByDropdown = ({ sortBy, setSortBy }) => {
17
17
  const { isOpen, toggleOpen, wrapperRef } = useDropdown();
18
+ const toggleButtonRef = useRef(null);
19
+ const optionRefs = useRef([]);
20
+ const options = ['Date', 'in Context'];
21
+ useEffect(() => {
22
+ if (isOpen) {
23
+ optionRefs.current[0]?.focus();
24
+ }
25
+ }, [isOpen]);
26
+ const handleDropdownKeyDown = (e) => {
27
+ const buttons = optionRefs.current;
28
+ const currentIndex = Array.from(buttons).indexOf(document.activeElement);
29
+ switch (e.key) {
30
+ case 'ArrowDown':
31
+ e.preventDefault();
32
+ buttons[(currentIndex + 1) % buttons.length]?.focus();
33
+ break;
34
+ case 'ArrowUp':
35
+ e.preventDefault();
36
+ buttons[(currentIndex - 1 + buttons.length) % buttons.length]?.focus();
37
+ break;
38
+ case 'Escape':
39
+ e.preventDefault();
40
+ toggleOpen();
41
+ toggleButtonRef.current?.focus();
42
+ break;
43
+ }
44
+ };
18
45
  return (React.createElement(React.Fragment, null,
19
46
  React.createElement(Container, { ref: wrapperRef },
20
- React.createElement(DropdownButtonContainer, { isOpen: isOpen, onClick: toggleOpen, className: 'dropdown-toggle' },
47
+ React.createElement(DropdownButtonContainer, { ref: toggleButtonRef, isOpen: isOpen, onClick: toggleOpen, onKeyDown: (e) => {
48
+ if (e.key === 'ArrowDown') {
49
+ toggleOpen();
50
+ }
51
+ }, className: 'dropdown-toggle', tabIndex: 0 },
21
52
  React.createElement(Label, null,
22
53
  "Sorted by:",
23
54
  React.createElement(Bold, null, sortBy),
24
55
  React.createElement(DropdownToggle, { className: isOpen ? 'open' : '' }))),
25
- isOpen && (React.createElement(DropdownList, { direction: 'right', minWidth: 100 },
26
- React.createElement(Option, { onClick: (e) => {
27
- setSortBy('Date');
28
- toggleOpen();
29
- }, key: 'Date', value: 'Date' }, "Date"),
30
- React.createElement(Option, { onClick: (e) => {
31
- setSortBy('in Context');
32
- toggleOpen();
33
- }, key: 'in Context', value: 'in Context' }, "in Context")))),
56
+ isOpen && (React.createElement(DropdownList, { direction: 'right', minWidth: 100, onKeyDown: handleDropdownKeyDown }, options.map((opt, index) => (React.createElement(Option, { key: opt, value: opt, ref: (el) => {
57
+ if (el)
58
+ optionRefs.current[index] = el;
59
+ }, onClick: () => {
60
+ setSortBy(opt);
61
+ toggleOpen();
62
+ } }, opt)))))),
34
63
  React.createElement(SeparatorLine, null)));
35
64
  };
36
65
  const SeparatorLine = styled.div `
@@ -56,6 +85,11 @@ const Container = styled(DropdownContainer) `
56
85
  .dropdown-toggle {
57
86
  border: none;
58
87
  background: transparent !important;
88
+
89
+ &:focus-visible {
90
+ outline: 2px solid ${(props) => props.theme.colors.outline.focus};
91
+ outline-offset: 2px;
92
+ }
59
93
  }
60
94
  `;
61
95
  const Option = styled(SecondaryButton) `
@@ -63,10 +97,16 @@ const Option = styled(SecondaryButton) `
63
97
  text-align: left;
64
98
  display: block;
65
99
  border: none;
66
- &:not([disabled]):hover {
100
+ &:not([disabled]):hover,
101
+ &:not([disabled]):focus {
67
102
  background: ${(props) => props.theme.colors.background.fifth} !important;
68
103
  color: ${(props) => props.theme.colors.button.secondary.color.default} !important;
69
104
  }
105
+
106
+ &:focus-visible {
107
+ outline: 2px solid ${(props) => props.theme.colors.outline.focus};
108
+ outline-offset: -2px;
109
+ }
70
110
  `;
71
111
  const DropdownList = styled(Dropdown) `
72
112
  padding: ${(props) => props.theme.grid.unit * 2}px 0;
@@ -1 +1 @@
1
- {"version":3,"file":"SortByDropdown.js","sourceRoot":"","sources":["../../../../src/components/track-changes/SortByDropdown.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SortByDropdown.js","sourceRoot":"","sources":["../../../../src/components/track-changes/SortByDropdown.tsx"],"names":[],"mappings":"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"}
@@ -14,9 +14,18 @@ import styled from 'styled-components';
14
14
  import { scrollIntoView } from '../../../lib/utils';
15
15
  import { useStore } from '../../../store';
16
16
  import TrackModal from '../TrackModal';
17
- import { SuggestionSnippet } from './SuggestionSnippet';
18
- export const Suggestion = ({ suggestions, isSelected, onAccept, onReject, onSelect, }) => {
17
+ import { Card, CardActions, SuggestionSnippet } from './SuggestionSnippet';
18
+ export const Suggestion = ({ suggestions, isSelected, onAccept, onReject, onSelect, isTabbable, cardLinkRef, }) => {
19
19
  const wrapperRef = useRef(null);
20
+ const linkRef = useRef(null);
21
+ const actionButtonRefs = useRef([]);
22
+ const setLinkRef = (el) => {
23
+ linkRef.current = el;
24
+ cardLinkRef?.(el);
25
+ };
26
+ const setActionButtonRef = (el, index) => {
27
+ actionButtonRefs.current[index] = el;
28
+ };
20
29
  const [trackModalVisible, setModalVisible] = useState(false);
21
30
  const [{ isComparingMode, isTrackingChangesVisible }] = useStore((store) => ({
22
31
  isComparingMode: store.isComparingMode,
@@ -32,21 +41,83 @@ export const Suggestion = ({ suggestions, isSelected, onAccept, onReject, onSele
32
41
  onSelect();
33
42
  }
34
43
  };
44
+ const handleKeyDown = (e) => {
45
+ // Only handle horizontal navigation (Left/Right)
46
+ // Let vertical navigation (Up/Down) bubble to parent SuggestionList
47
+ if (!['ArrowLeft', 'ArrowRight'].includes(e.key)) {
48
+ return;
49
+ }
50
+ const actionButtons = actionButtonRefs.current.filter(Boolean);
51
+ if (actionButtons.length === 0) {
52
+ return;
53
+ }
54
+ const currentElement = document.activeElement;
55
+ // If on the card link and arrow right is pressed, move to first action button
56
+ if (currentElement === linkRef.current && e.key === 'ArrowRight') {
57
+ e.preventDefault();
58
+ e.stopPropagation();
59
+ actionButtons[0]?.focus();
60
+ }
61
+ // If on an action button, navigate between them
62
+ else if (actionButtons.includes(currentElement)) {
63
+ const currentIndex = actionButtons.indexOf(currentElement);
64
+ if (e.key === 'ArrowLeft') {
65
+ e.preventDefault();
66
+ e.stopPropagation();
67
+ if (currentIndex === 0) {
68
+ linkRef.current?.focus();
69
+ }
70
+ else {
71
+ actionButtons[currentIndex - 1]?.focus();
72
+ }
73
+ }
74
+ else if (e.key === 'ArrowRight') {
75
+ e.preventDefault();
76
+ e.stopPropagation();
77
+ if (currentIndex < actionButtons.length - 1) {
78
+ actionButtons[currentIndex + 1]?.focus();
79
+ }
80
+ }
81
+ }
82
+ };
35
83
  useEffect(() => {
36
84
  if (isSelected && wrapperRef.current) {
37
85
  scrollIntoView(wrapperRef.current);
38
86
  }
39
87
  }, [isSelected]);
40
- return (React.createElement(Wrapper, { "data-cy": "suggestion", isFocused: isSelected, ref: wrapperRef },
41
- React.createElement(FocusHandle, { isTrackingChangesVisible: isTrackingChangesVisible, href: "#", onClick: handleClick },
42
- React.createElement(SuggestionSnippet, { suggestions: suggestions, isComparingMode: isComparingMode, isFocused: isSelected, handleAccept: onAccept, handleReject: onReject })),
88
+ return (React.createElement(Wrapper, { "data-cy": "suggestion", isFocused: isSelected, ref: wrapperRef, onKeyDown: handleKeyDown },
89
+ React.createElement(FocusHandle, { ref: setLinkRef, tabIndex: isTabbable ? 0 : -1, isTrackingChangesVisible: isTrackingChangesVisible, onClick: handleClick, onKeyDown: (e) => {
90
+ if (e.target !== e.currentTarget) {
91
+ return;
92
+ }
93
+ if (e.key === 'Enter') {
94
+ e.preventDefault();
95
+ handleClick(e);
96
+ }
97
+ } },
98
+ React.createElement(SuggestionSnippet, { suggestions: suggestions, isComparingMode: isComparingMode, isFocused: isSelected, handleAccept: onAccept, handleReject: onReject, isTrackingChangesVisible: isTrackingChangesVisible, actionButtonRefs: setActionButtonRef })),
43
99
  trackModalVisible && (React.createElement(TrackModal, { ref: wrapperRef, isVisible: trackModalVisible, changeId: suggestions[0].id, setVisible: setModalVisible }))));
44
100
  };
45
101
  const Wrapper = styled.li ``;
46
102
  const FocusHandle = styled.a `
47
103
  color: inherit;
48
- text-decoration: none;
49
104
  overflow: hidden;
50
105
  cursor: ${(props) => props.isTrackingChangesVisible ? 'pointer' : 'default'};
106
+
107
+ &:focus {
108
+ outline: none;
109
+ }
110
+
111
+ ${(props) => props.isTrackingChangesVisible
112
+ ? `&:focus ${Card},
113
+ &:focus-within ${Card} {
114
+ background: ${props.theme.colors.background.tracked.hover};
115
+
116
+ ${CardActions} {
117
+ opacity: 1;
118
+ pointer-events: auto;
119
+ }
120
+ }`
121
+ : ''}
51
122
  `;
52
123
  //# sourceMappingURL=Suggestion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Suggestion.js","sourceRoot":"","sources":["../../../../../src/components/track-changes/suggestion-list/Suggestion.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC1D,OAAO,MAAM,MAAM,mBAAmB,CAAA;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,UAAU,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAUvD,MAAM,CAAC,MAAM,UAAU,GAAoB,CAAC,EAC1C,WAAW,EACX,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAA;IAC9C,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC5D,MAAM,CAAC,EAAE,eAAe,EAAE,wBAAwB,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC3E,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,wBAAwB,EAAE,KAAK,CAAC,wBAAwB;KACzD,CAAC,CAAC,CAAA;IAEH,MAAM,WAAW,GAAG,CAAC,CAAmB,EAAE,EAAE;QAC1C,CAAC,CAAC,cAAc,EAAE,CAAA;QAClB,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC9B,OAAM;QACR,CAAC;QACD,eAAe,CAAC,IAAI,CAAC,CAAA;QACrB,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,EAAE,CAAA;QACZ,CAAC;IACH,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACrC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IAEhB,OAAO,CACL,oBAAC,OAAO,eAAS,YAAY,EAAC,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU;QAClE,oBAAC,WAAW,IACV,wBAAwB,EAAE,wBAAwB,EAClD,IAAI,EAAC,GAAG,EACR,OAAO,EAAE,WAAW;YAEpB,oBAAC,iBAAiB,IAChB,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,UAAU,EACrB,YAAY,EAAE,QAAQ,EACtB,YAAY,EAAE,QAAQ,GACtB,CACU;QAEb,iBAAiB,IAAI,CACpB,oBAAC,UAAU,IACT,GAAG,EAAE,UAAU,EACf,SAAS,EAAE,iBAAiB,EAC5B,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAC3B,UAAU,EAAE,eAAe,GACf,CACf,CACO,CACX,CAAA;AACH,CAAC,CAAA;AAED,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAEvB,EAAE,CAAA;AAEJ,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAE1B;;;;YAIU,CAAC,KAAK,EAAE,EAAE,CAClB,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;CACzD,CAAA"}
1
+ {"version":3,"file":"Suggestion.js","sourceRoot":"","sources":["../../../../../src/components/track-changes/suggestion-list/Suggestion.tsx"],"names":[],"mappings":"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"}