@eccenca/gui-elements 25.0.0 → 25.1.0-changeupgradedtoreact18cmem6639.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.
Files changed (493) hide show
  1. package/CHANGELOG.md +124 -0
  2. package/dist/cjs/cmem/ActivityControl/ActivityControlWidget.js +30 -26
  3. package/dist/cjs/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
  4. package/dist/cjs/cmem/ActivityControl/ActivityExecutionErrorReportModal.js +11 -5
  5. package/dist/cjs/cmem/ActivityControl/ActivityExecutionErrorReportModal.js.map +1 -1
  6. package/dist/cjs/cmem/ActivityControl/SilkActivityControl.js +1 -3
  7. package/dist/cjs/cmem/ActivityControl/SilkActivityControl.js.map +1 -1
  8. package/dist/cjs/cmem/ContentBlobToggler/ContentBlobToggler.js +13 -6
  9. package/dist/cjs/cmem/ContentBlobToggler/ContentBlobToggler.js.map +1 -1
  10. package/dist/cjs/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js +49 -11
  11. package/dist/cjs/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js.map +1 -1
  12. package/dist/cjs/cmem/markdown/Markdown.js +2 -2
  13. package/dist/cjs/cmem/markdown/Markdown.js.map +1 -1
  14. package/dist/cjs/cmem/react-flow/ReactFlow/ReactFlowV12.js.map +1 -1
  15. package/dist/cjs/cmem/react-flow/StickyNoteModal/StickyNoteModal.js +1 -1
  16. package/dist/cjs/cmem/react-flow/StickyNoteModal/StickyNoteModal.js.map +1 -1
  17. package/dist/cjs/cmem/react-flow/configuration/graph.js +0 -2
  18. package/dist/cjs/cmem/react-flow/configuration/graph.js.map +1 -1
  19. package/dist/cjs/cmem/react-flow/configuration/linking.js +0 -2
  20. package/dist/cjs/cmem/react-flow/configuration/linking.js.map +1 -1
  21. package/dist/cjs/cmem/react-flow/configuration/workflow.js +0 -2
  22. package/dist/cjs/cmem/react-flow/configuration/workflow.js.map +1 -1
  23. package/dist/cjs/common/Intent/index.js +1 -1
  24. package/dist/cjs/common/Intent/index.js.map +1 -1
  25. package/dist/cjs/common/index.js +1 -0
  26. package/dist/cjs/common/index.js.map +1 -1
  27. package/dist/cjs/common/utils/CssCustomProperties.js.map +1 -1
  28. package/dist/cjs/common/utils/colorHash.js +26 -12
  29. package/dist/cjs/common/utils/colorHash.js.map +1 -1
  30. package/dist/cjs/components/Application/ApplicationSidebarNavigation.js.map +1 -1
  31. package/dist/cjs/components/Application/ApplicationTitle.js +5 -1
  32. package/dist/cjs/components/Application/ApplicationTitle.js.map +1 -1
  33. package/dist/cjs/components/Application/ApplicationViewability.js +33 -0
  34. package/dist/cjs/components/Application/ApplicationViewability.js.map +1 -0
  35. package/dist/cjs/components/Application/index.js +1 -0
  36. package/dist/cjs/components/Application/index.js.map +1 -1
  37. package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js +1 -1
  38. package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js.map +1 -1
  39. package/dist/cjs/components/AutoSuggestion/AutoSuggestionList.js.map +1 -1
  40. package/dist/cjs/components/AutocompleteField/AutoCompleteField.js +2 -9
  41. package/dist/cjs/components/AutocompleteField/AutoCompleteField.js.map +1 -1
  42. package/dist/cjs/components/AutocompleteField/autoCompleteFieldUtils.js.map +1 -1
  43. package/dist/cjs/components/Button/Button.js +6 -2
  44. package/dist/cjs/components/Button/Button.js.map +1 -1
  45. package/dist/cjs/components/ColorField/ColorField.js +114 -0
  46. package/dist/cjs/components/ColorField/ColorField.js.map +1 -0
  47. package/dist/cjs/components/ContentGroup/ContentGroup.js +19 -19
  48. package/dist/cjs/components/ContentGroup/ContentGroup.js.map +1 -1
  49. package/dist/cjs/components/ContextOverlay/ContextMenu.js +4 -4
  50. package/dist/cjs/components/ContextOverlay/ContextMenu.js.map +1 -1
  51. package/dist/cjs/components/ContextOverlay/ContextOverlay.js +3 -2
  52. package/dist/cjs/components/ContextOverlay/ContextOverlay.js.map +1 -1
  53. package/dist/cjs/components/DecoupledOverlay/DecoupledOverlay.js +48 -0
  54. package/dist/cjs/components/DecoupledOverlay/DecoupledOverlay.js.map +1 -0
  55. package/dist/cjs/components/Icon/IconButton.js +2 -2
  56. package/dist/cjs/components/Icon/IconButton.js.map +1 -1
  57. package/dist/cjs/components/Icon/canonicalIconNames.js +10 -1
  58. package/dist/cjs/components/Icon/canonicalIconNames.js.map +1 -1
  59. package/dist/cjs/components/Icon/transformIcon.js +14 -0
  60. package/dist/cjs/components/Icon/transformIcon.js.map +1 -0
  61. package/dist/cjs/components/MultiSelect/MultiSelect.js +63 -24
  62. package/dist/cjs/components/MultiSelect/MultiSelect.js.map +1 -1
  63. package/dist/cjs/components/NotAvailable/NotAvailable.js +42 -0
  64. package/dist/cjs/components/NotAvailable/NotAvailable.js.map +1 -0
  65. package/dist/cjs/components/Notification/Notification.js.map +1 -1
  66. package/dist/cjs/components/OverviewItem/OverviewItemDepiction.js.map +1 -1
  67. package/dist/cjs/components/RadioButton/RadioButton.js +5 -2
  68. package/dist/cjs/components/RadioButton/RadioButton.js.map +1 -1
  69. package/dist/cjs/components/Select/Select.js +6 -4
  70. package/dist/cjs/components/Select/Select.js.map +1 -1
  71. package/dist/cjs/components/Skeleton/Skeleton.js.map +1 -1
  72. package/dist/cjs/components/Table/Table.js.map +1 -1
  73. package/dist/cjs/components/Table/TableContainer.js +1 -1
  74. package/dist/cjs/components/Table/TableContainer.js.map +1 -1
  75. package/dist/cjs/components/Table/TableExpandRow.js +2 -2
  76. package/dist/cjs/components/Table/TableExpandRow.js.map +1 -1
  77. package/dist/cjs/components/TextField/useTextValidation.js +17 -8
  78. package/dist/cjs/components/TextField/useTextValidation.js.map +1 -1
  79. package/dist/cjs/components/Tooltip/Tooltip.js +11 -7
  80. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  81. package/dist/cjs/components/Typography/InlineText.js +29 -0
  82. package/dist/cjs/components/Typography/InlineText.js.map +1 -0
  83. package/dist/cjs/components/Typography/index.js +1 -0
  84. package/dist/cjs/components/Typography/index.js.map +1 -1
  85. package/dist/cjs/components/VisualTour/VisualTour.js +30 -36
  86. package/dist/cjs/components/VisualTour/VisualTour.js.map +1 -1
  87. package/dist/cjs/components/index.js +3 -0
  88. package/dist/cjs/components/index.js.map +1 -1
  89. package/dist/cjs/extensions/codemirror/CodeMirror.js +59 -21
  90. package/dist/cjs/extensions/codemirror/CodeMirror.js.map +1 -1
  91. package/dist/cjs/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js +1 -1
  92. package/dist/cjs/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js.map +1 -1
  93. package/dist/cjs/extensions/codemirror/tests/codemirrorTestHelper.js +2 -2
  94. package/dist/cjs/extensions/codemirror/tests/codemirrorTestHelper.js.map +1 -1
  95. package/dist/cjs/extensions/codemirror/toolbars/EditorAppearanceConfigMenu.js +23 -0
  96. package/dist/cjs/extensions/codemirror/toolbars/EditorAppearanceConfigMenu.js.map +1 -0
  97. package/dist/cjs/extensions/codemirror/toolbars/markdown.toolbar.js +5 -2
  98. package/dist/cjs/extensions/codemirror/toolbars/markdown.toolbar.js.map +1 -1
  99. package/dist/cjs/extensions/react-flow/edges/EdgeLabel.js +8 -3
  100. package/dist/cjs/extensions/react-flow/edges/EdgeLabel.js.map +1 -1
  101. package/dist/cjs/extensions/react-flow/edges/EdgeNew.js +6 -4
  102. package/dist/cjs/extensions/react-flow/edges/EdgeNew.js.map +1 -1
  103. package/dist/cjs/extensions/react-flow/edges/EdgeTools.js +2 -2
  104. package/dist/cjs/extensions/react-flow/edges/EdgeTools.js.map +1 -1
  105. package/dist/cjs/extensions/react-flow/handles/HandleContent.js +5 -2
  106. package/dist/cjs/extensions/react-flow/handles/HandleContent.js.map +1 -1
  107. package/dist/cjs/extensions/react-flow/handles/HandleDefault.js +1 -1
  108. package/dist/cjs/extensions/react-flow/handles/HandleDefault.js.map +1 -1
  109. package/dist/cjs/extensions/react-flow/handles/HandleTools.js +2 -2
  110. package/dist/cjs/extensions/react-flow/handles/HandleTools.js.map +1 -1
  111. package/dist/cjs/extensions/react-flow/markers/ReactFlowMarkers.js.map +1 -1
  112. package/dist/cjs/extensions/react-flow/minimap/MiniMap.js +1 -1
  113. package/dist/cjs/extensions/react-flow/minimap/MiniMap.js.map +1 -1
  114. package/dist/cjs/extensions/react-flow/minimap/MiniMapV12.js.map +1 -1
  115. package/dist/cjs/extensions/react-flow/nodes/NodeContent.js +7 -5
  116. package/dist/cjs/extensions/react-flow/nodes/NodeContent.js.map +1 -1
  117. package/dist/cjs/extensions/react-flow/nodes/NodeDefault.js +5 -2
  118. package/dist/cjs/extensions/react-flow/nodes/NodeDefault.js.map +1 -1
  119. package/dist/cjs/extensions/react-flow/nodes/NodeTools.js +6 -2
  120. package/dist/cjs/extensions/react-flow/nodes/NodeTools.js.map +1 -1
  121. package/dist/cjs/extensions/react-flow/nodes/nodeUtils.js.map +1 -1
  122. package/dist/esm/cmem/ActivityControl/ActivityControlWidget.js +19 -14
  123. package/dist/esm/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
  124. package/dist/esm/cmem/ActivityControl/ActivityExecutionErrorReportModal.js +4 -1
  125. package/dist/esm/cmem/ActivityControl/ActivityExecutionErrorReportModal.js.map +1 -1
  126. package/dist/esm/cmem/ActivityControl/SilkActivityControl.js +1 -3
  127. package/dist/esm/cmem/ActivityControl/SilkActivityControl.js.map +1 -1
  128. package/dist/esm/cmem/ContentBlobToggler/ContentBlobToggler.js +9 -5
  129. package/dist/esm/cmem/ContentBlobToggler/ContentBlobToggler.js.map +1 -1
  130. package/dist/esm/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js +57 -9
  131. package/dist/esm/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.js.map +1 -1
  132. package/dist/esm/cmem/markdown/Markdown.js +1 -1
  133. package/dist/esm/cmem/markdown/Markdown.js.map +1 -1
  134. package/dist/esm/cmem/react-flow/ReactFlow/ReactFlowV12.js.map +1 -1
  135. package/dist/esm/cmem/react-flow/StickyNoteModal/StickyNoteModal.js +1 -1
  136. package/dist/esm/cmem/react-flow/StickyNoteModal/StickyNoteModal.js.map +1 -1
  137. package/dist/esm/cmem/react-flow/configuration/graph.js +0 -2
  138. package/dist/esm/cmem/react-flow/configuration/graph.js.map +1 -1
  139. package/dist/esm/cmem/react-flow/configuration/linking.js +0 -2
  140. package/dist/esm/cmem/react-flow/configuration/linking.js.map +1 -1
  141. package/dist/esm/cmem/react-flow/configuration/workflow.js +0 -2
  142. package/dist/esm/cmem/react-flow/configuration/workflow.js.map +1 -1
  143. package/dist/esm/common/Intent/index.js +1 -1
  144. package/dist/esm/common/Intent/index.js.map +1 -1
  145. package/dist/esm/common/index.js +2 -1
  146. package/dist/esm/common/index.js.map +1 -1
  147. package/dist/esm/common/utils/CssCustomProperties.js.map +1 -1
  148. package/dist/esm/common/utils/colorHash.js +26 -13
  149. package/dist/esm/common/utils/colorHash.js.map +1 -1
  150. package/dist/esm/common/utils/reduceToText.js +1 -1
  151. package/dist/esm/components/Application/ApplicationSidebarNavigation.js.map +1 -1
  152. package/dist/esm/components/Application/ApplicationTitle.js +5 -1
  153. package/dist/esm/components/Application/ApplicationTitle.js.map +1 -1
  154. package/dist/esm/components/Application/ApplicationViewability.js +28 -0
  155. package/dist/esm/components/Application/ApplicationViewability.js.map +1 -0
  156. package/dist/esm/components/Application/index.js +1 -0
  157. package/dist/esm/components/Application/index.js.map +1 -1
  158. package/dist/esm/components/AutoSuggestion/AutoSuggestion.js +1 -1
  159. package/dist/esm/components/AutoSuggestion/AutoSuggestion.js.map +1 -1
  160. package/dist/esm/components/AutoSuggestion/AutoSuggestionList.js.map +1 -1
  161. package/dist/esm/components/AutocompleteField/AutoCompleteField.js +9 -16
  162. package/dist/esm/components/AutocompleteField/AutoCompleteField.js.map +1 -1
  163. package/dist/esm/components/AutocompleteField/autoCompleteFieldUtils.js.map +1 -1
  164. package/dist/esm/components/Button/Button.js +6 -2
  165. package/dist/esm/components/Button/Button.js.map +1 -1
  166. package/dist/esm/components/ColorField/ColorField.js +140 -0
  167. package/dist/esm/components/ColorField/ColorField.js.map +1 -0
  168. package/dist/esm/components/ContentGroup/ContentGroup.js +1 -1
  169. package/dist/esm/components/ContentGroup/ContentGroup.js.map +1 -1
  170. package/dist/esm/components/ContextOverlay/ContextMenu.js +4 -4
  171. package/dist/esm/components/ContextOverlay/ContextMenu.js.map +1 -1
  172. package/dist/esm/components/ContextOverlay/ContextOverlay.js +3 -2
  173. package/dist/esm/components/ContextOverlay/ContextOverlay.js.map +1 -1
  174. package/dist/esm/components/DecoupledOverlay/DecoupledOverlay.js +42 -0
  175. package/dist/esm/components/DecoupledOverlay/DecoupledOverlay.js.map +1 -0
  176. package/dist/esm/components/Icon/IconButton.js +2 -2
  177. package/dist/esm/components/Icon/IconButton.js.map +1 -1
  178. package/dist/esm/components/Icon/canonicalIconNames.js +10 -1
  179. package/dist/esm/components/Icon/canonicalIconNames.js.map +1 -1
  180. package/dist/esm/components/Icon/transformIcon.js +21 -0
  181. package/dist/esm/components/Icon/transformIcon.js.map +1 -0
  182. package/dist/esm/components/MultiSelect/MultiSelect.js +66 -27
  183. package/dist/esm/components/MultiSelect/MultiSelect.js.map +1 -1
  184. package/dist/esm/components/NotAvailable/NotAvailable.js +46 -0
  185. package/dist/esm/components/NotAvailable/NotAvailable.js.map +1 -0
  186. package/dist/esm/components/Notification/Notification.js.map +1 -1
  187. package/dist/esm/components/OverviewItem/OverviewItemDepiction.js.map +1 -1
  188. package/dist/esm/components/RadioButton/RadioButton.js +6 -2
  189. package/dist/esm/components/RadioButton/RadioButton.js.map +1 -1
  190. package/dist/esm/components/Select/Select.js +3 -1
  191. package/dist/esm/components/Select/Select.js.map +1 -1
  192. package/dist/esm/components/Skeleton/Skeleton.js.map +1 -1
  193. package/dist/esm/components/Table/Table.js.map +1 -1
  194. package/dist/esm/components/Table/TableContainer.js +1 -1
  195. package/dist/esm/components/Table/TableContainer.js.map +1 -1
  196. package/dist/esm/components/Table/TableExpandRow.js +1 -1
  197. package/dist/esm/components/Table/TableExpandRow.js.map +1 -1
  198. package/dist/esm/components/TextField/useTextValidation.js +39 -8
  199. package/dist/esm/components/TextField/useTextValidation.js.map +1 -1
  200. package/dist/esm/components/Tooltip/Tooltip.js +11 -7
  201. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  202. package/dist/esm/components/Typography/InlineText.js +33 -0
  203. package/dist/esm/components/Typography/InlineText.js.map +1 -0
  204. package/dist/esm/components/Typography/index.js +1 -0
  205. package/dist/esm/components/Typography/index.js.map +1 -1
  206. package/dist/esm/components/VisualTour/VisualTour.js +31 -37
  207. package/dist/esm/components/VisualTour/VisualTour.js.map +1 -1
  208. package/dist/esm/components/index.js +3 -0
  209. package/dist/esm/components/index.js.map +1 -1
  210. package/dist/esm/extensions/codemirror/CodeMirror.js +62 -24
  211. package/dist/esm/extensions/codemirror/CodeMirror.js.map +1 -1
  212. package/dist/esm/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js +1 -1
  213. package/dist/esm/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.js.map +1 -1
  214. package/dist/esm/extensions/codemirror/tests/codemirrorTestHelper.js +3 -3
  215. package/dist/esm/extensions/codemirror/tests/codemirrorTestHelper.js.map +1 -1
  216. package/dist/esm/extensions/codemirror/toolbars/EditorAppearanceConfigMenu.js +47 -0
  217. package/dist/esm/extensions/codemirror/toolbars/EditorAppearanceConfigMenu.js.map +1 -0
  218. package/dist/esm/extensions/codemirror/toolbars/markdown.toolbar.js +16 -2
  219. package/dist/esm/extensions/codemirror/toolbars/markdown.toolbar.js.map +1 -1
  220. package/dist/esm/extensions/react-flow/edges/EdgeLabel.js +4 -2
  221. package/dist/esm/extensions/react-flow/edges/EdgeLabel.js.map +1 -1
  222. package/dist/esm/extensions/react-flow/edges/EdgeNew.js +3 -1
  223. package/dist/esm/extensions/react-flow/edges/EdgeNew.js.map +1 -1
  224. package/dist/esm/extensions/react-flow/edges/EdgeTools.js +1 -1
  225. package/dist/esm/extensions/react-flow/edges/EdgeTools.js.map +1 -1
  226. package/dist/esm/extensions/react-flow/handles/HandleContent.js +1 -1
  227. package/dist/esm/extensions/react-flow/handles/HandleContent.js.map +1 -1
  228. package/dist/esm/extensions/react-flow/handles/HandleDefault.js +1 -1
  229. package/dist/esm/extensions/react-flow/handles/HandleDefault.js.map +1 -1
  230. package/dist/esm/extensions/react-flow/handles/HandleTools.js +1 -1
  231. package/dist/esm/extensions/react-flow/handles/HandleTools.js.map +1 -1
  232. package/dist/esm/extensions/react-flow/markers/ReactFlowMarkers.js.map +1 -1
  233. package/dist/esm/extensions/react-flow/minimap/MiniMap.js +1 -1
  234. package/dist/esm/extensions/react-flow/minimap/MiniMap.js.map +1 -1
  235. package/dist/esm/extensions/react-flow/minimap/MiniMapV12.js.map +1 -1
  236. package/dist/esm/extensions/react-flow/nodes/NodeContent.js +4 -2
  237. package/dist/esm/extensions/react-flow/nodes/NodeContent.js.map +1 -1
  238. package/dist/esm/extensions/react-flow/nodes/NodeDefault.js +1 -1
  239. package/dist/esm/extensions/react-flow/nodes/NodeDefault.js.map +1 -1
  240. package/dist/esm/extensions/react-flow/nodes/NodeTools.js +2 -1
  241. package/dist/esm/extensions/react-flow/nodes/NodeTools.js.map +1 -1
  242. package/dist/esm/extensions/react-flow/nodes/nodeUtils.js.map +1 -1
  243. package/dist/types/cmem/ActivityControl/ActivityControlWidget.d.ts +13 -4
  244. package/dist/types/cmem/ActivityControl/ActivityExecutionErrorReportModal.d.ts +1 -1
  245. package/dist/types/cmem/ActivityControl/SilkActivityControl.d.ts +4 -4
  246. package/dist/types/cmem/ContentBlobToggler/ContentBlobToggler.d.ts +5 -1
  247. package/dist/types/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.d.ts +27 -11
  248. package/dist/types/cmem/markdown/Markdown.d.ts +2 -1
  249. package/dist/types/cmem/react-flow/configuration/graph.d.ts +2 -1
  250. package/dist/types/cmem/react-flow/configuration/linking.d.ts +2 -1
  251. package/dist/types/cmem/react-flow/configuration/workflow.d.ts +2 -1
  252. package/dist/types/common/index.d.ts +2 -1
  253. package/dist/types/common/utils/CssCustomProperties.d.ts +2 -2
  254. package/dist/types/common/utils/colorHash.d.ts +5 -4
  255. package/dist/types/components/Accordion/AccordionItem.d.ts +1 -1
  256. package/dist/types/components/Application/ApplicationSidebarNavigation.d.ts +2 -0
  257. package/dist/types/components/Application/ApplicationViewability.d.ts +36 -0
  258. package/dist/types/components/Application/index.d.ts +1 -0
  259. package/dist/types/components/AutoSuggestion/AutoSuggestion.d.ts +2 -2
  260. package/dist/types/components/AutocompleteField/AutoCompleteField.d.ts +2 -12
  261. package/dist/types/components/AutocompleteField/autoCompleteFieldUtils.d.ts +1 -1
  262. package/dist/types/components/Button/Button.d.ts +3 -3
  263. package/dist/types/components/Card/CardHeader.d.ts +1 -1
  264. package/dist/types/components/ColorField/ColorField.d.ts +30 -0
  265. package/dist/types/components/ContentGroup/ContentGroup.d.ts +1 -1
  266. package/dist/types/components/ContextOverlay/ContextMenu.d.ts +9 -3
  267. package/dist/types/components/ContextOverlay/ContextOverlay.d.ts +8 -2
  268. package/dist/types/components/DecoupledOverlay/DecoupledOverlay.d.ts +22 -0
  269. package/dist/types/components/Depiction/Depiction.d.ts +1 -1
  270. package/dist/types/components/Dialog/SimpleDialog.d.ts +1 -1
  271. package/dist/types/components/Form/FieldItem.d.ts +1 -1
  272. package/dist/types/components/Form/FieldSet.d.ts +3 -3
  273. package/dist/types/components/HoverToggler/HoverToggler.d.ts +2 -2
  274. package/dist/types/components/Icon/IconButton.d.ts +1 -1
  275. package/dist/types/components/Icon/canonicalIconNames.d.ts +9 -1
  276. package/dist/types/components/Icon/transformIcon.d.ts +2 -0
  277. package/dist/types/components/Label/Label.d.ts +3 -3
  278. package/dist/types/components/Menu/MenuItem.d.ts +1 -1
  279. package/dist/types/components/MultiSelect/MultiSelect.d.ts +17 -5
  280. package/dist/types/components/NotAvailable/NotAvailable.d.ts +32 -0
  281. package/dist/types/components/Notification/Notification.d.ts +2 -2
  282. package/dist/types/components/OverviewItem/OverviewItemActions.d.ts +1 -1
  283. package/dist/types/components/PropertyValuePair/PropertyValueList.d.ts +1 -1
  284. package/dist/types/components/RadioButton/RadioButton.d.ts +8 -2
  285. package/dist/types/components/Select/Select.d.ts +2 -1
  286. package/dist/types/components/Skeleton/Skeleton.d.ts +1 -1
  287. package/dist/types/components/Structure/TitleSubsection.d.ts +3 -6
  288. package/dist/types/components/SuggestField/index.d.ts +2 -2
  289. package/dist/types/components/Table/TableContainer.d.ts +3 -3
  290. package/dist/types/components/Tabs/Tab.d.ts +4 -10
  291. package/dist/types/components/Tabs/TabTitle.d.ts +1 -1
  292. package/dist/types/components/TextField/TextArea.d.ts +1 -1
  293. package/dist/types/components/Typography/InlineText.d.ts +13 -0
  294. package/dist/types/components/Typography/index.d.ts +1 -0
  295. package/dist/types/components/index.d.ts +3 -0
  296. package/dist/types/extensions/codemirror/CodeMirror.d.ts +12 -9
  297. package/dist/types/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.d.ts +1 -1
  298. package/dist/types/extensions/codemirror/tests/codemirrorTestHelper.d.ts +1 -1
  299. package/dist/types/extensions/codemirror/toolbars/EditorAppearanceConfigMenu.d.ts +24 -0
  300. package/dist/types/extensions/codemirror/toolbars/markdown.toolbar.d.ts +2 -0
  301. package/dist/types/extensions/react-flow/edges/EdgeLabel.d.ts +3 -3
  302. package/dist/types/extensions/react-flow/edges/EdgeTools.d.ts +1 -1
  303. package/dist/types/extensions/react-flow/handles/HandleContent.d.ts +2 -2
  304. package/dist/types/extensions/react-flow/handles/HandleTools.d.ts +2 -2
  305. package/dist/types/extensions/react-flow/nodes/NodeContent.d.ts +3 -3
  306. package/dist/types/extensions/react-flow/nodes/NodeTools.d.ts +2 -2
  307. package/package.json +65 -61
  308. package/src/_shame.scss +1 -35
  309. package/src/cmem/ActivityControl/ActivityControlWidget.stories.tsx +3 -8
  310. package/src/cmem/ActivityControl/ActivityControlWidget.tsx +74 -41
  311. package/src/cmem/ActivityControl/ActivityExecutionErrorReportModal.tsx +6 -4
  312. package/src/cmem/ActivityControl/SilkActivityControl.tsx +5 -5
  313. package/src/cmem/ContentBlobToggler/ContentBlobToggler.tsx +16 -6
  314. package/src/cmem/ContentBlobToggler/StringPreviewContentBlobToggler.tsx +72 -19
  315. package/src/cmem/ContentBlobToggler/stories/StringPreviewContentBlobToggler.stories.tsx +27 -0
  316. package/src/cmem/ContentBlobToggler/tests/StringPreviewContentBlobToggler.test.tsx +98 -0
  317. package/src/cmem/markdown/Markdown.stories.tsx +2 -2
  318. package/src/cmem/markdown/Markdown.tsx +2 -1
  319. package/src/cmem/markdown/markdown.scss +1 -1
  320. package/src/cmem/react-flow/ReactFlow/ReactFlowV12.tsx +1 -0
  321. package/src/cmem/react-flow/StickyNoteModal/StickyNoteModal.tsx +1 -1
  322. package/src/cmem/react-flow/configuration/graph.ts +2 -3
  323. package/src/cmem/react-flow/configuration/linking.ts +2 -3
  324. package/src/cmem/react-flow/configuration/workflow.ts +2 -3
  325. package/src/common/Intent/index.ts +2 -1
  326. package/src/common/index.ts +2 -1
  327. package/src/common/scss/_accessibility-defaults.scss +101 -0
  328. package/src/common/utils/CssCustomProperties.ts +5 -3
  329. package/src/common/utils/colorHash.ts +38 -20
  330. package/src/components/Accordion/AccordionItem.tsx +1 -1
  331. package/src/components/Accordion/Stories/AccordionItem.stories.tsx +1 -1
  332. package/src/components/Application/ApplicationSidebarNavigation.tsx +5 -2
  333. package/src/components/Application/ApplicationTitle.tsx +7 -1
  334. package/src/components/Application/ApplicationViewability.tsx +61 -0
  335. package/src/components/Application/_colors.scss +15 -0
  336. package/src/components/Application/_content.scss +7 -0
  337. package/src/components/Application/_header.scss +45 -21
  338. package/src/components/Application/_sidebar.scss +6 -0
  339. package/src/components/Application/_toolbar.scss +3 -3
  340. package/src/components/Application/_viewability.scss +13 -0
  341. package/src/components/Application/application.scss +1 -0
  342. package/src/components/Application/index.ts +1 -0
  343. package/src/components/Application/stories/ApplicationViewability.stories.tsx +37 -0
  344. package/src/components/Application/stories/ColorPalettes.stories.tsx +4 -3
  345. package/src/components/Application/tests/ApplicationViewability.test.tsx +43 -0
  346. package/src/components/AutoSuggestion/AutoSuggestion.scss +3 -1
  347. package/src/components/AutoSuggestion/AutoSuggestion.tsx +4 -4
  348. package/src/components/AutoSuggestion/AutoSuggestionList.tsx +1 -1
  349. package/src/components/AutoSuggestion/tests/ExtendedCodeEditor.test.tsx +1 -1
  350. package/src/components/AutocompleteField/AutoCompleteField.tsx +9 -18
  351. package/src/components/AutocompleteField/autoCompleteFieldUtils.tsx +1 -1
  352. package/src/components/Badge/Badge.stories.tsx +1 -1
  353. package/src/components/Badge/Badge.test.tsx +22 -0
  354. package/src/components/Breadcrumb/breadcrumb.scss +2 -2
  355. package/src/components/Button/Button.test.tsx +16 -2
  356. package/src/components/Button/Button.tsx +11 -6
  357. package/src/components/Button/button.scss +2 -0
  358. package/src/components/Card/CardHeader.tsx +1 -1
  359. package/src/components/Card/card.scss +6 -0
  360. package/src/components/Card/stories/Card.stories.tsx +1 -1
  361. package/src/components/Checkbox/Stories/Checkbox.stories.tsx +1 -1
  362. package/src/components/Checkbox/checkbox.scss +23 -3
  363. package/src/components/ColorField/ColorField.stories.tsx +72 -0
  364. package/src/components/ColorField/ColorField.test.tsx +101 -0
  365. package/src/components/ColorField/ColorField.tsx +200 -0
  366. package/src/components/ColorField/_colorfield.scss +67 -0
  367. package/src/components/ContentGroup/ContentGroup.stories.tsx +1 -1
  368. package/src/components/ContentGroup/ContentGroup.tsx +3 -3
  369. package/src/components/ContentGroup/_contentgroup.scss +9 -0
  370. package/src/components/ContextOverlay/ContextMenu.tsx +10 -4
  371. package/src/components/ContextOverlay/ContextOverlay.tsx +23 -4
  372. package/src/components/DecoupledOverlay/DecoupledOverlay.stories.tsx +30 -0
  373. package/src/components/DecoupledOverlay/DecoupledOverlay.tsx +100 -0
  374. package/src/components/DecoupledOverlay/_decoupledoverlay.scss +46 -0
  375. package/src/components/Depiction/Depiction.tsx +1 -1
  376. package/src/components/Depiction/depiction.scss +6 -0
  377. package/src/components/Dialog/SimpleDialog.tsx +1 -1
  378. package/src/components/Dialog/dialog.scss +10 -2
  379. package/src/components/Dialog/stories/Modal.stories.tsx +1 -1
  380. package/src/components/FlexibleLayout/flexiblelayout.scss +16 -0
  381. package/src/components/Form/FieldItem.tsx +1 -1
  382. package/src/components/Form/FieldSet.tsx +3 -3
  383. package/src/components/Form/Stories/FieldItem.stories.tsx +1 -1
  384. package/src/components/Form/Stories/FieldSet.stories.tsx +1 -1
  385. package/src/components/Form/form.scss +2 -2
  386. package/src/components/Grid/grid.scss +17 -0
  387. package/src/components/Grid/stories/Grid.stories.tsx +10 -7
  388. package/src/components/Grid/stories/GridColumn.stories.tsx +1 -1
  389. package/src/components/Grid/stories/GridRow.stories.tsx +14 -8
  390. package/src/components/HoverToggler/HoverToggler.tsx +2 -2
  391. package/src/components/Icon/IconButton.tsx +3 -3
  392. package/src/components/Icon/canonicalIconNames.tsx +11 -1
  393. package/src/components/Icon/stories/IconButton.stories.tsx +1 -1
  394. package/src/components/Icon/stories/TestIcon.stories.tsx +1 -1
  395. package/src/components/Icon/transformIcon.tsx +17 -0
  396. package/src/components/Label/Label.tsx +3 -3
  397. package/src/components/Link/Link.stories.tsx +30 -0
  398. package/src/components/Link/link.scss +33 -8
  399. package/src/components/Menu/MenuItem.tsx +1 -1
  400. package/src/components/Menu/Stories/MenuItem.stories.tsx +1 -1
  401. package/src/components/MultiSelect/MultiSelect.tsx +104 -32
  402. package/src/components/MultiSuggestField/MultiSuggestField.stories.tsx +40 -1
  403. package/src/components/MultiSuggestField/_multisuggestfield.scss +18 -0
  404. package/src/components/MultiSuggestField/tests/MultiSuggestField.test.tsx +89 -37
  405. package/src/components/NotAvailable/NotAvailable.stories.tsx +15 -0
  406. package/src/components/NotAvailable/NotAvailable.tsx +71 -0
  407. package/src/components/Notification/Notification.stories.tsx +2 -1
  408. package/src/components/Notification/Notification.tsx +3 -3
  409. package/src/components/Notification/notification.scss +6 -0
  410. package/src/components/OverviewItem/OverviewItemActions.tsx +1 -1
  411. package/src/components/OverviewItem/OverviewItemDepiction.tsx +1 -1
  412. package/src/components/OverviewItem/overviewitem.scss +9 -0
  413. package/src/components/OverviewItem/stories/OverviewItem.stories.tsx +29 -1
  414. package/src/components/OverviewItem/stories/OverviewItemActions.stories.tsx +3 -3
  415. package/src/components/OverviewItem/stories/OverviewItemDepiction.stories.tsx +1 -1
  416. package/src/components/OverviewItem/stories/OverviewItemDescription.stories.tsx +2 -2
  417. package/src/components/OverviewItem/stories/OverviewItemLine.stories.tsx +1 -1
  418. package/src/components/Pagination/Stories/Pagination.stories.tsx +32 -0
  419. package/src/components/Pagination/pagination.scss +55 -5
  420. package/src/components/PropertyValuePair/PropertyValueList.tsx +1 -1
  421. package/src/components/PropertyValuePair/propertyvalue.scss +23 -1
  422. package/src/components/RadioButton/RadioButton.tsx +15 -3
  423. package/src/components/RadioButton/Stories/RadioButton.stories.tsx +1 -1
  424. package/src/components/RadioButton/radiobutton.scss +18 -1
  425. package/src/components/Select/Select.tsx +8 -6
  426. package/src/components/Separation/separation.scss +6 -0
  427. package/src/components/Skeleton/Skeleton.tsx +2 -2
  428. package/src/components/Structure/TitleSubsection.tsx +1 -1
  429. package/src/components/Table/Table.tsx +1 -1
  430. package/src/components/Table/TableContainer.tsx +4 -4
  431. package/src/components/Table/TableExpandRow.tsx +1 -1
  432. package/src/components/Table/table.scss +22 -0
  433. package/src/components/Tabs/TabTitle.tsx +1 -1
  434. package/src/components/Tabs/stories/TabTitle.stories.tsx +7 -2
  435. package/src/components/Tabs/tabs.scss +2 -2
  436. package/src/components/Tag/stories/Tag.stories.tsx +1 -1
  437. package/src/components/Tag/stories/TagList.stories.tsx +3 -3
  438. package/src/components/Tag/tag.scss +19 -9
  439. package/src/components/TextField/TextArea.tsx +1 -1
  440. package/src/components/TextField/stories/TextArea.stories.tsx +1 -1
  441. package/src/components/TextField/stories/TextField.stories.tsx +24 -3
  442. package/src/components/TextField/tests/useTextValidation.test.tsx +83 -0
  443. package/src/components/TextField/textfield.scss +20 -0
  444. package/src/components/TextField/useTextValidation.ts +17 -8
  445. package/src/components/TextReducer/TextReducer.stories.tsx +4 -1
  446. package/src/components/TextReducer/TextReducer.test.tsx +3 -3
  447. package/src/components/Toolbar/toolbar.scss +1 -2
  448. package/src/components/Tooltip/Tooltip.test.tsx +40 -5
  449. package/src/components/Tooltip/Tooltip.tsx +15 -11
  450. package/src/components/Typography/InlineText.tsx +24 -0
  451. package/src/components/Typography/_reset.scss +2 -0
  452. package/src/components/Typography/index.ts +1 -0
  453. package/src/components/Typography/stories/InlineText.stories.tsx +27 -0
  454. package/src/components/Typography/typography.scss +37 -3
  455. package/src/components/VisualTour/VisualTour.tsx +35 -55
  456. package/src/components/VisualTour/visualTour.scss +0 -34
  457. package/src/components/index.scss +2 -0
  458. package/src/components/index.ts +3 -0
  459. package/src/configuration/_customproperties.scss +32 -0
  460. package/src/configuration/stories/customproperties.stories.tsx +122 -0
  461. package/src/extensions/codemirror/CodeMirror.stories.tsx +9 -4
  462. package/src/extensions/codemirror/CodeMirror.tsx +93 -37
  463. package/src/extensions/codemirror/_codemirror.scss +18 -28
  464. package/src/extensions/codemirror/hooks/useCodemirrorModeExtension.hooks.ts +1 -2
  465. package/src/extensions/codemirror/tests/CodeEditor.test.tsx +138 -0
  466. package/src/extensions/codemirror/tests/EditorAppearanceConfigMenu.test.tsx +131 -0
  467. package/src/extensions/codemirror/tests/codemirrorTestHelper.ts +3 -3
  468. package/src/extensions/codemirror/toolbars/EditorAppearanceConfigMenu.tsx +59 -0
  469. package/src/extensions/codemirror/toolbars/markdown.toolbar.tsx +17 -3
  470. package/src/extensions/react-flow/_config.scss +3 -3
  471. package/src/extensions/react-flow/_react-flow_v12.scss +1 -1
  472. package/src/extensions/react-flow/edges/EdgeLabel.tsx +15 -11
  473. package/src/extensions/react-flow/edges/EdgeNew.tsx +6 -6
  474. package/src/extensions/react-flow/edges/EdgeTools.tsx +5 -6
  475. package/src/extensions/react-flow/edges/_edges.scss +3 -2
  476. package/src/extensions/react-flow/edges/stories/EdgeLabel.stories.tsx +2 -1
  477. package/src/extensions/react-flow/handles/HandleContent.tsx +4 -4
  478. package/src/extensions/react-flow/handles/HandleDefault.tsx +3 -3
  479. package/src/extensions/react-flow/handles/HandleTools.tsx +3 -3
  480. package/src/extensions/react-flow/handles/_handles.scss +3 -3
  481. package/src/extensions/react-flow/markers/ReactFlowMarkers.tsx +1 -1
  482. package/src/extensions/react-flow/minimap/MiniMap.tsx +2 -1
  483. package/src/extensions/react-flow/minimap/MiniMapV12.tsx +1 -1
  484. package/src/extensions/react-flow/nodes/NodeContent.tsx +20 -19
  485. package/src/extensions/react-flow/nodes/NodeDefault.tsx +1 -1
  486. package/src/extensions/react-flow/nodes/NodeDefaultV12.tsx +1 -2
  487. package/src/extensions/react-flow/nodes/NodeTools.tsx +8 -8
  488. package/src/extensions/react-flow/nodes/_nodes.scss +4 -3
  489. package/src/extensions/react-flow/nodes/nodeUtils.tsx +1 -0
  490. package/src/extensions/react-flow/nodes/stories/NodeContent.stories.tsx +3 -1
  491. package/src/includes/carbon-components/_requisits.scss +3 -1
  492. package/src/index.scss +2 -0
  493. package/src/test/setupTests.js +1 -1
@@ -19,13 +19,13 @@ $eccgui-size-codeeditor-toolbar-height: $button-height !default;
19
19
 
20
20
  &__toolbar {
21
21
  position: absolute;
22
- z-index: 3;
23
- left: 1px;
24
- right: 1px;
25
22
  top: 1px;
26
- border-radius: $pt-border-radius $pt-border-radius 0 0;
27
- border-bottom: solid 1px $eccgui-color-codeeditor-separation;
23
+ right: 1px;
24
+ left: 1px;
25
+ z-index: 3;
28
26
  background-color: $eccgui-color-codeeditor-background;
27
+ border-bottom: solid 1px $eccgui-color-codeeditor-separation;
28
+ border-radius: $pt-border-radius $pt-border-radius 0 0;
29
29
  }
30
30
 
31
31
  &--has-toolbar {
@@ -37,9 +37,9 @@ $eccgui-size-codeeditor-toolbar-height: $button-height !default;
37
37
  &__preview {
38
38
  position: absolute;
39
39
  top: calc(#{$eccgui-size-codeeditor-toolbar-height} + 1px) !important;
40
- left: 1px;
41
40
  right: 1px;
42
41
  bottom: 1px;
42
+ left: 1px;
43
43
  z-index: 2;
44
44
  padding: $button-padding;
45
45
  overflow-y: auto;
@@ -50,12 +50,12 @@ $eccgui-size-codeeditor-toolbar-height: $button-height !default;
50
50
  .cm-editor {
51
51
  width: 100%;
52
52
  height: $eccgui-size-codeeditor-height;
53
- clip-path: unset !important; // we may check later why they set inset(0) now
54
53
  background-color: $eccgui-color-codeeditor-background;
55
54
  border-radius: $pt-border-radius;
56
55
 
57
56
  // get them a "border" like input boxes from blueprintjs
58
57
  box-shadow: input-transition-shadow($input-shadow-color-focus), $pt-input-box-shadow;
58
+ clip-path: unset !important; // we may check later why they set inset(0) now
59
59
 
60
60
  &.#{eccgui}-disabled {
61
61
  @extend .#{$ns}-input, .#{$ns}-disabled;
@@ -89,7 +89,7 @@ $eccgui-size-codeeditor-toolbar-height: $button-height !default;
89
89
  }
90
90
 
91
91
  &.#{eccgui}-intent--primary {
92
- @include pt-input-intent($eccgui-color-info-text);
92
+ @include pt-input-intent($eccgui-color-primary);
93
93
  }
94
94
 
95
95
  &.#{eccgui}-intent--info {
@@ -97,7 +97,7 @@ $eccgui-size-codeeditor-toolbar-height: $button-height !default;
97
97
  }
98
98
 
99
99
  &.#{eccgui}-intent--accent {
100
- @include pt-input-intent($eccgui-color-primary);
100
+ @include pt-input-intent($eccgui-color-accent);
101
101
  }
102
102
 
103
103
  &.#{eccgui}-intent--neutral {
@@ -124,39 +124,29 @@ $eccgui-size-codeeditor-toolbar-height: $button-height !default;
124
124
  }
125
125
 
126
126
  &.cm-focused {
127
- outline: none;
128
- box-shadow: input-transition-shadow($input-shadow-color-focus, true), $input-box-shadow-focus;
127
+ --#{$eccgui}-a11y-outline-color: #{$eccgui-color-accent};
128
+ --#{$eccgui}-a11y-outline-offset: 0;
129
+
130
+ @extend .#{$eccgui}-a11y-focus-by-keyboard-static;
129
131
 
130
132
  &.#{eccgui}-intent--warning {
131
- box-shadow: input-transition-shadow($eccgui-color-warning-text, true), $input-box-shadow-focus;
133
+ --#{$eccgui}-a11y-outline-color: #{$eccgui-color-warning-text};
132
134
  }
133
135
 
134
136
  &.#{eccgui}-intent--success {
135
- box-shadow: input-transition-shadow($eccgui-color-success-text, true), $input-box-shadow-focus;
137
+ --#{$eccgui}-a11y-outline-color: #{$eccgui-color-success-text};
136
138
  }
137
139
 
138
140
  &.#{eccgui}-intent--danger {
139
- box-shadow: input-transition-shadow($eccgui-color-danger-text, true), $input-box-shadow-focus;
141
+ --#{$eccgui}-a11y-outline-color: #{$eccgui-color-danger-text};
140
142
  }
141
143
 
142
144
  &.#{eccgui}-intent--primary {
143
- box-shadow: input-transition-shadow($eccgui-color-info-text, true), $input-box-shadow-focus;
145
+ --#{$eccgui}-a11y-outline-color: #{$eccgui-color-primary};
144
146
  }
145
147
 
146
148
  &.#{eccgui}-intent--info {
147
- box-shadow: input-transition-shadow($eccgui-color-info-text, true), $input-box-shadow-focus;
148
- }
149
-
150
- &.#{eccgui}-intent--accent {
151
- box-shadow: input-transition-shadow($eccgui-color-warning-text, true), $input-box-shadow-focus;
152
- }
153
-
154
- &.#{eccgui}-intent--neutral {
155
- box-shadow: input-transition-shadow($eccgui-color-workspace-text, true), $input-box-shadow-focus;
156
- }
157
-
158
- &.#{eccgui}-intent--edited {
159
- box-shadow: input-transition-shadow($eccgui-color-info-text, true), $input-box-shadow-focus;
149
+ --#{$eccgui}-a11y-outline-color: #{$eccgui-color-info-text};
160
150
  }
161
151
 
162
152
  &.#{eccgui}-intent--removed {
@@ -1,12 +1,11 @@
1
1
  //adapted v6 modes imports
2
+ import {html} from "@codemirror/lang-html"
2
3
  import { javascript } from "@codemirror/lang-javascript";
3
4
  import { json } from "@codemirror/lang-json";
4
5
  import { markdown } from "@codemirror/lang-markdown";
5
6
  import { sql } from "@codemirror/lang-sql";
6
7
  import { xml } from "@codemirror/lang-xml";
7
8
  import { yaml } from "@codemirror/lang-yaml";
8
- import {html} from "@codemirror/lang-html"
9
-
10
9
  import { defaultHighlightStyle, LanguageSupport, StreamLanguage, StreamParser } from "@codemirror/language";
11
10
  //legacy mode imports
12
11
  import { jinja2 } from "@codemirror/legacy-modes/mode/jinja2";
@@ -0,0 +1,138 @@
1
+ import React from "react";
2
+ import { fireEvent, render, screen } from "@testing-library/react";
3
+
4
+ import "@testing-library/jest-dom";
5
+
6
+ import { CLASSPREFIX as eccgui } from "../../../configuration/constants";
7
+ import { CodeEditor } from "../CodeMirror";
8
+
9
+ const contextOverlayClass = `${eccgui}-contextoverlay`;
10
+
11
+ const setupDocumentRange = () => {
12
+ document.createRange = () => {
13
+ const range = new Range();
14
+ range.getBoundingClientRect = jest.fn();
15
+ range.getClientRects = () => ({
16
+ item: () => null,
17
+ length: 0,
18
+ [Symbol.iterator]: jest.fn(),
19
+ });
20
+ return range;
21
+ };
22
+ };
23
+
24
+ describe("CodeEditor - markdown mode with toolbar", () => {
25
+ beforeAll(() => {
26
+ setupDocumentRange();
27
+ });
28
+
29
+ // The toolbar contains a Paragraphs ContextMenu first, then the EditorAppearanceConfigMenu last.
30
+ const getConfigMenuOverlay = (container: HTMLElement) => {
31
+ const overlays = container.getElementsByClassName(contextOverlayClass);
32
+ return overlays[overlays.length - 1] as HTMLElement;
33
+ };
34
+
35
+ it("renders toolbar when mode is markdown and useToolbar is true", () => {
36
+ const { container } = render(<CodeEditor name="test-editor" mode="markdown" useToolbar={true} />);
37
+ expect(container.querySelector(`.${eccgui}-codeeditor__toolbar`)).not.toBeNull();
38
+ });
39
+
40
+ it("does not render toolbar when useToolbar is false", () => {
41
+ const { container } = render(<CodeEditor name="test-editor" mode="markdown" useToolbar={false} />);
42
+ expect(container.querySelector(`.${eccgui}-codeeditor__toolbar`)).toBeNull();
43
+ });
44
+
45
+ it("does not render toolbar for non-markdown modes even when useToolbar is true", () => {
46
+ const { container } = render(<CodeEditor name="test-editor" mode="yaml" useToolbar={true} />);
47
+ expect(container.querySelector(`.${eccgui}-codeeditor__toolbar`)).toBeNull();
48
+ });
49
+
50
+ it("includes the EditorAppearanceConfigMenu in the markdown toolbar", () => {
51
+ const { container } = render(<CodeEditor name="test-editor" mode="markdown" useToolbar={true} />);
52
+ const toolbar = container.querySelector(`.${eccgui}-codeeditor__toolbar`);
53
+ // Toolbar contains at least the Paragraphs menu and the EditorAppearanceConfigMenu
54
+ expect(toolbar?.getElementsByClassName(contextOverlayClass).length).toBeGreaterThanOrEqual(2);
55
+ });
56
+
57
+ it("defaults wrapLines to true in markdown mode with toolbar", async () => {
58
+ const { container } = render(<CodeEditor name="test-editor" mode="markdown" useToolbar={true} />);
59
+
60
+ fireEvent.click(getConfigMenuOverlay(container));
61
+
62
+ const wrapLinesItem = await screen.findByText("wrapLines");
63
+ expect(wrapLinesItem.closest("[aria-selected='true']")).not.toBeNull();
64
+ });
65
+
66
+ it("defaults preventLineNumbers to true in markdown mode with toolbar", async () => {
67
+ const { container } = render(<CodeEditor name="test-editor" mode="markdown" useToolbar={true} />);
68
+
69
+ fireEvent.click(getConfigMenuOverlay(container));
70
+
71
+ const preventLineNumbersItem = await screen.findByText("preventLineNumbers");
72
+ expect(preventLineNumbersItem.closest("[aria-selected='true']")).not.toBeNull();
73
+ });
74
+
75
+ it("locks wrapLines in config menu when wrapLines prop is explicitly provided", async () => {
76
+ const { container } = render(
77
+ <CodeEditor name="test-editor" mode="markdown" useToolbar={true} wrapLines={false} />
78
+ );
79
+
80
+ fireEvent.click(getConfigMenuOverlay(container));
81
+
82
+ const wrapLinesItem = await screen.findByText("wrapLines");
83
+ expect(wrapLinesItem.closest("[aria-disabled='true']")).not.toBeNull();
84
+ });
85
+
86
+ it("locks preventLineNumbers in config menu when preventLineNumbers prop is explicitly provided", async () => {
87
+ const { container } = render(
88
+ <CodeEditor name="test-editor" mode="markdown" useToolbar={true} preventLineNumbers={false} />
89
+ );
90
+
91
+ fireEvent.click(getConfigMenuOverlay(container));
92
+
93
+ const preventLineNumbersItem = await screen.findByText("preventLineNumbers");
94
+ expect(preventLineNumbersItem.closest("[aria-disabled='true']")).not.toBeNull();
95
+ });
96
+
97
+ it("does not lock wrapLines in config menu when wrapLines prop is not provided", async () => {
98
+ const { container } = render(<CodeEditor name="test-editor" mode="markdown" useToolbar={true} />);
99
+
100
+ fireEvent.click(getConfigMenuOverlay(container));
101
+
102
+ const wrapLinesItem = await screen.findByText("wrapLines");
103
+ expect(wrapLinesItem.closest("[aria-disabled='true']")).toBeNull();
104
+ });
105
+
106
+ it("does not lock preventLineNumbers in config menu when preventLineNumbers prop is not provided", async () => {
107
+ const { container } = render(<CodeEditor name="test-editor" mode="markdown" useToolbar={true} />);
108
+
109
+ fireEvent.click(getConfigMenuOverlay(container));
110
+
111
+ const preventLineNumbersItem = await screen.findByText("preventLineNumbers");
112
+ expect(preventLineNumbersItem.closest("[aria-disabled='true']")).toBeNull();
113
+ });
114
+
115
+ it("disables config menu trigger when both wrapLines and preventLineNumbers props are provided", () => {
116
+ const { container } = render(
117
+ <CodeEditor
118
+ name="test-editor"
119
+ mode="markdown"
120
+ useToolbar={true}
121
+ wrapLines={true}
122
+ preventLineNumbers={true}
123
+ />
124
+ );
125
+
126
+ const configMenuTrigger = getConfigMenuOverlay(container).querySelector("button");
127
+ expect(configMenuTrigger).toBeDisabled();
128
+ });
129
+
130
+ it("disables config menu trigger when editor is disabled", () => {
131
+ const { container } = render(
132
+ <CodeEditor name="test-editor" mode="markdown" useToolbar={true} disabled={true} />
133
+ );
134
+
135
+ const configMenuTrigger = getConfigMenuOverlay(container).querySelector("button");
136
+ expect(configMenuTrigger).toBeDisabled();
137
+ });
138
+ });
@@ -0,0 +1,131 @@
1
+ import React from "react";
2
+ import { fireEvent, render, screen } from "@testing-library/react";
3
+
4
+ import "@testing-library/jest-dom";
5
+
6
+ import { CLASSPREFIX as eccgui } from "../../../configuration/constants";
7
+ import { EditorAppearanceConfigMenu } from "../toolbars/EditorAppearanceConfigMenu";
8
+
9
+ const contextOverlayClass = `${eccgui}-contextoverlay`;
10
+
11
+ describe("EditorAppearanceConfigMenu", () => {
12
+ it("renders menu items for each config property, using key as fallback label", async () => {
13
+ const config = { wrapLines: true, preventLineNumbers: false };
14
+ const setConfig = jest.fn();
15
+
16
+ const { container } = render(<EditorAppearanceConfigMenu config={config} setConfig={setConfig} />);
17
+
18
+ fireEvent.click(container.getElementsByClassName(contextOverlayClass)[0]);
19
+
20
+ expect(await screen.findByText("wrapLines")).toBeVisible();
21
+ expect(await screen.findByText("preventLineNumbers")).toBeVisible();
22
+ });
23
+
24
+ it("uses configPropertyTranslate for menu item labels", async () => {
25
+ const config = { wrapLines: true, preventLineNumbers: false };
26
+ const setConfig = jest.fn();
27
+ const translate = (key: string) => `Label_${key}` as string | false;
28
+
29
+ const { container } = render(
30
+ <EditorAppearanceConfigMenu config={config} setConfig={setConfig} configPropertyTranslate={translate} />
31
+ );
32
+
33
+ fireEvent.click(container.getElementsByClassName(contextOverlayClass)[0]);
34
+
35
+ expect(await screen.findByText("Label_wrapLines")).toBeVisible();
36
+ expect(await screen.findByText("Label_preventLineNumbers")).toBeVisible();
37
+ });
38
+
39
+ it("calls setConfig with the toggled value when a menu item is clicked", async () => {
40
+ const config = { wrapLines: true, preventLineNumbers: false };
41
+ const setConfig = jest.fn();
42
+
43
+ const { container } = render(<EditorAppearanceConfigMenu config={config} setConfig={setConfig} />);
44
+
45
+ fireEvent.click(container.getElementsByClassName(contextOverlayClass)[0]);
46
+ const wrapLinesItem = await screen.findByText("wrapLines");
47
+ fireEvent.click(wrapLinesItem);
48
+
49
+ expect(setConfig).toHaveBeenCalledWith({ wrapLines: false, preventLineNumbers: false });
50
+ });
51
+
52
+ it("menu trigger is disabled when all config properties are locked", () => {
53
+ const config = { wrapLines: true, preventLineNumbers: false };
54
+ const configLocked = { wrapLines: true, preventLineNumbers: true };
55
+ const setConfig = jest.fn();
56
+
57
+ const { container } = render(
58
+ <EditorAppearanceConfigMenu config={config} configLocked={configLocked} setConfig={setConfig} />
59
+ );
60
+
61
+ const trigger = container.getElementsByClassName(contextOverlayClass)[0].querySelector("button");
62
+ expect(trigger).toBeDisabled();
63
+ });
64
+
65
+ it("menu trigger is enabled when not all config properties are locked", () => {
66
+ const config = { wrapLines: true, preventLineNumbers: false };
67
+ const configLocked = { wrapLines: true }; // only one locked
68
+ const setConfig = jest.fn();
69
+
70
+ const { container } = render(
71
+ <EditorAppearanceConfigMenu config={config} configLocked={configLocked} setConfig={setConfig} />
72
+ );
73
+
74
+ const trigger = container.getElementsByClassName(contextOverlayClass)[0].querySelector("button");
75
+ expect(trigger).not.toBeDisabled();
76
+ });
77
+
78
+ it("locked config property has a disabled menu item", async () => {
79
+ const config = { wrapLines: true, preventLineNumbers: false };
80
+ const configLocked = { wrapLines: true };
81
+ const setConfig = jest.fn();
82
+
83
+ const { container } = render(
84
+ <EditorAppearanceConfigMenu config={config} configLocked={configLocked} setConfig={setConfig} />
85
+ );
86
+
87
+ fireEvent.click(container.getElementsByClassName(contextOverlayClass)[0]);
88
+
89
+ const wrapLinesItem = await screen.findByText("wrapLines");
90
+ expect(wrapLinesItem.closest("[aria-disabled='true']")).not.toBeNull();
91
+ });
92
+
93
+ it("unlocked config property has an enabled menu item", async () => {
94
+ const config = { wrapLines: true, preventLineNumbers: false };
95
+ const configLocked = { wrapLines: true }; // only wrapLines is locked
96
+ const setConfig = jest.fn();
97
+
98
+ const { container } = render(
99
+ <EditorAppearanceConfigMenu config={config} configLocked={configLocked} setConfig={setConfig} />
100
+ );
101
+
102
+ fireEvent.click(container.getElementsByClassName(contextOverlayClass)[0]);
103
+
104
+ const preventLineNumbersItem = await screen.findByText("preventLineNumbers");
105
+ expect(preventLineNumbersItem.closest("[aria-disabled='true']")).toBeNull();
106
+ });
107
+
108
+ it("selected config property is marked as selected in the menu", async () => {
109
+ const config = { wrapLines: true, preventLineNumbers: false };
110
+ const setConfig = jest.fn();
111
+
112
+ const { container } = render(<EditorAppearanceConfigMenu config={config} setConfig={setConfig} />);
113
+
114
+ fireEvent.click(container.getElementsByClassName(contextOverlayClass)[0]);
115
+
116
+ const wrapLinesItem = await screen.findByText("wrapLines");
117
+ expect(wrapLinesItem.closest("[aria-selected='true']")).not.toBeNull();
118
+ });
119
+
120
+ it("unselected config property is not marked as selected in the menu", async () => {
121
+ const config = { wrapLines: true, preventLineNumbers: false };
122
+ const setConfig = jest.fn();
123
+
124
+ const { container } = render(<EditorAppearanceConfigMenu config={config} setConfig={setConfig} />);
125
+
126
+ fireEvent.click(container.getElementsByClassName(contextOverlayClass)[0]);
127
+
128
+ const preventLineNumbersItem = await screen.findByText("preventLineNumbers");
129
+ expect(preventLineNumbersItem.closest("[aria-selected='true']")).toBeNull();
130
+ });
131
+ });
@@ -7,10 +7,10 @@
7
7
  */
8
8
  //Todo this should become redundant with later patches that avoid this error
9
9
 
10
- import { EditorView, placeholder, highlightSpecialChars, lineNumbers, highlightActiveLine } from "@codemirror/view";
11
- import { syntaxHighlighting, foldGutter, codeFolding } from "@codemirror/language";
12
- import {Extension, Compartment, StateEffect, EditorState} from "@codemirror/state";
10
+ import { codeFolding,foldGutter, syntaxHighlighting } from "@codemirror/language";
13
11
  import { lintGutter } from "@codemirror/lint";
12
+ import {Compartment, EditorState,Extension, StateEffect} from "@codemirror/state";
13
+ import { EditorView, highlightActiveLine,highlightSpecialChars, lineNumbers, placeholder } from "@codemirror/view";
14
14
 
15
15
  /** placeholder extension, current error '_view.placeholder is not a function' */
16
16
  export const adaptedPlaceholder = (text?: string) =>
@@ -0,0 +1,59 @@
1
+ import React from "react";
2
+
3
+ import { ContextMenu, ContextMenuProps, MenuItem } from "../../../components";
4
+
5
+ export interface EditorAppearanceConfigMenuProps {
6
+ /** Object containing a `true`/`false` value for each property */
7
+ config: { [s: string]: boolean };
8
+ /** Object containing `true` for each property that cannot be changed by user */
9
+ configLocked?: { [s: string]: boolean | undefined };
10
+ /** Handler that returns a translation for each config property key */
11
+ configPropertyTranslate?: (key: string) => string | false;
12
+ /** Handler to update config after user changes */
13
+ setConfig: React.Dispatch<React.SetStateAction<{ [s: string]: boolean }>>;
14
+ /** Additional properties used for the included `ContextMenu` */
15
+ contextMenuProps?: ContextMenuProps;
16
+ }
17
+
18
+ /**
19
+ * Returns a simple context menu that provides switches to control the editor appearance.
20
+ */
21
+ export function EditorAppearanceConfigMenu({
22
+ config,
23
+ configLocked = {},
24
+ configPropertyTranslate = (s) => s,
25
+ setConfig,
26
+ contextMenuProps,
27
+ }: EditorAppearanceConfigMenuProps) {
28
+ return (
29
+ <ContextMenu
30
+ togglerElement={"item-settings"}
31
+ {...contextMenuProps}
32
+ disabled={
33
+ contextMenuProps?.disabled ??
34
+ Object.values(config).length ===
35
+ Object.values(configLocked).filter((value) => {
36
+ return typeof value !== "undefined";
37
+ }).length
38
+ }
39
+ >
40
+ {Object.entries(config).map(([key, value]) => {
41
+ return (
42
+ <MenuItem
43
+ key={key}
44
+ roleStructure={"listoption"}
45
+ selected={value}
46
+ text={configPropertyTranslate(key) || key}
47
+ disabled={typeof configLocked[key] !== "undefined"}
48
+ onClick={() => {
49
+ setConfig({
50
+ ...config,
51
+ [key]: !value,
52
+ });
53
+ }}
54
+ />
55
+ );
56
+ })}
57
+ </ContextMenu>
58
+ );
59
+ }
@@ -9,6 +9,7 @@ import { Spacing } from "../../../components/Separation/Spacing";
9
9
  import { Toolbar, ToolbarSection } from "../../../components/Toolbar";
10
10
 
11
11
  import MarkdownCommand from "./commands/markdown.command";
12
+ import { EditorAppearanceConfigMenu } from "./EditorAppearanceConfigMenu";
12
13
 
13
14
  interface MarkdownToolbarProps {
14
15
  view?: EditorView;
@@ -17,6 +18,7 @@ interface MarkdownToolbarProps {
17
18
  translate: (key: string) => string | false;
18
19
  disabled?: boolean;
19
20
  readonly?: boolean;
21
+ configMenu?: React.ReactElement<typeof EditorAppearanceConfigMenu>;
20
22
  }
21
23
 
22
24
  export const MarkdownToolbar: React.FC<MarkdownToolbarProps> = ({
@@ -25,7 +27,8 @@ export const MarkdownToolbar: React.FC<MarkdownToolbarProps> = ({
25
27
  showPreview,
26
28
  disabled,
27
29
  readonly,
28
- translate
30
+ translate,
31
+ configMenu,
29
32
  }) => {
30
33
  const commandRef = React.useRef<MarkdownCommand | null>(null);
31
34
 
@@ -35,10 +38,10 @@ export const MarkdownToolbar: React.FC<MarkdownToolbarProps> = ({
35
38
  }
36
39
  }, [view]);
37
40
 
38
- const getTranslation = (fallback: string) : string => {
41
+ const getTranslation = (fallback: string): string => {
39
42
  const key = fallback.toLowerCase().replace(" ", "-");
40
43
  return translate(key) || fallback;
41
- }
44
+ };
42
45
 
43
46
  const { basic, lists, attachments } = MarkdownCommand.commands;
44
47
  return (
@@ -112,6 +115,17 @@ export const MarkdownToolbar: React.FC<MarkdownToolbarProps> = ({
112
115
  disabled={disabled}
113
116
  />
114
117
  </ToolbarSection>
118
+ {configMenu && (
119
+ <ToolbarSection>
120
+ <Spacing vertical size="small" hasDivider />
121
+ {React.cloneElement(configMenu, {
122
+ ...{
123
+ ...configMenu.props,
124
+ contextMenuProps: { disabled: showPreview || disabled ? true : undefined },
125
+ },
126
+ })}
127
+ </ToolbarSection>
128
+ )}
115
129
  </Toolbar>
116
130
  );
117
131
  };
@@ -8,9 +8,9 @@ $reactflow-node-font-size: $eccgui-size-typo-caption !default;
8
8
  $reactflow-node-border-width: 2 * $button-border-width !default;
9
9
  $reactflow-node-border-radius: $button-border-radius !default;
10
10
  $reactflow-edge-rendering: geometricprecision !default;
11
- $reactflow-edge-stroke-width-default: 2px !default;
12
- $reactflow-edge-stroke-width-hover: 2px !default;
13
- $reactflow-edge-stroke-width-selected: 2px !default;
11
+ $reactflow-edge-stroke-width-default: 1px !default;
12
+ $reactflow-edge-stroke-width-hover: 1px !default;
13
+ $reactflow-edge-stroke-width-selected: 1px !default;
14
14
  $reactflow-edge-stroke-opacity-default: $eccgui-opacity-muted !default;
15
15
  $reactflow-edge-stroke-opacity-hover: $eccgui-opacity-narrow !default;
16
16
  $reactflow-edge-stroke-opacity-selected: $eccgui-opacity-regular !default;
@@ -6,8 +6,8 @@
6
6
  */
7
7
 
8
8
  .react-flow {
9
- direction: ltr;
10
9
  z-index: 0;
10
+ direction: ltr;
11
11
  }
12
12
 
13
13
  .react-flow__pane {
@@ -1,9 +1,11 @@
1
- import React, { memo } from "react";
1
+ import React, {memo} from "react";
2
2
 
3
- import { intentClassName, IntentTypes } from "../../../common/Intent";
4
- import { ValidIconName } from "../../../components/Icon/canonicalIconNames";
5
- import { CLASSPREFIX as eccgui } from "../../../configuration/constants";
6
- import { Depiction, DepictionProps, Icon, OverflowText } from "../../../index";
3
+ import {intentClassName, IntentTypes} from "../../../common/Intent";
4
+ import {ValidIconName} from "../../../components/Icon/canonicalIconNames";
5
+ import {CLASSPREFIX as eccgui} from "../../../configuration/constants";
6
+ import {Depiction, DepictionProps} from "../../../components/Depiction/Depiction";
7
+ import Icon from "../../../components/Icon/Icon";
8
+ import OverflowText from "../../../components/Typography/OverflowText";
7
9
 
8
10
  export interface EdgeLabelProps extends React.HTMLAttributes<HTMLDivElement> {
9
11
  /**
@@ -14,11 +16,11 @@ export interface EdgeLabelProps extends React.HTMLAttributes<HTMLDivElement> {
14
16
  * Label of the edge.
15
17
  * Cannot overflow the parent container.
16
18
  */
17
- text: string | JSX.Element;
19
+ text: string | React.JSX.Element;
18
20
  /**
19
21
  * One or multiple other elements displayed right from label.
20
22
  */
21
- actions?: JSX.Element | JSX.Element[];
23
+ actions?: React.JSX.Element | React.JSX.Element[];
22
24
  /**
23
25
  * The element is increased in its size.
24
26
  */
@@ -81,9 +83,11 @@ export const EdgeLabel = memo(
81
83
  })}
82
84
  </div>
83
85
  )}
84
- <div className={`${eccgui}-graphviz__edge-label__text`} title={title}>
85
- {typeof text === "string" ? <OverflowText>{text}</OverflowText> : text}
86
- </div>
86
+ {(title || text) && (
87
+ <div className={`${eccgui}-graphviz__edge-label__text`} title={title??undefined}>
88
+ {text && (typeof text === "string" ? <OverflowText>{text}</OverflowText> : text)}
89
+ </div>
90
+ )}
87
91
  {!!actions && <div className={`${eccgui}-graphviz__edge-label__aux`}>{actions}</div>}
88
92
  </div>
89
93
  );
@@ -109,7 +113,7 @@ export interface EdgeLabelObjectProps extends React.SVGAttributes<SVGForeignObje
109
113
  export const EdgeLabelObject = memo(
110
114
  ({ children, edgeCenter, resizeTimeout = -1, ...otherForeignObjectProps }: EdgeLabelObjectProps) => {
111
115
  const containerCallback = React.useCallback(
112
- (containerRef) => {
116
+ (containerRef: SVGForeignObjectElement | null) => {
113
117
  if (containerRef) labelSize(containerRef);
114
118
  },
115
119
  [edgeCenter]
@@ -1,11 +1,11 @@
1
1
  import React from "react";
2
- import {
3
- ConnectionLineComponentProps,
4
- ConnectionLineType,
5
- } from "@xyflow/react";
6
- import { EdgeStraight, EdgeStep, EdgeBezier, EdgeDefaultV12Props } from "./../index";
2
+ import {ConnectionLineComponentProps, ConnectionLineType,} from "@xyflow/react";
7
3
 
8
- import { CLASSPREFIX as eccgui } from "../../../configuration/constants";
4
+ import {CLASSPREFIX as eccgui} from "../../../configuration/constants";
5
+ import {EdgeStep} from "./EdgeStep";
6
+ import {EdgeStraight} from "./EdgeStraight";
7
+ import {EdgeBezier} from "./EdgeBezier";
8
+ import {EdgeDefaultV12Props} from "./EdgeDefaultV12";
9
9
 
10
10
  export const EdgeNew = (edgeNewProps: ConnectionLineComponentProps) => {
11
11
 
@@ -1,10 +1,9 @@
1
- import React, { memo } from "react";
2
- import { PopoverInteractionKind as BlueprintPopoverInteractionKind } from "@blueprintjs/core";
1
+ import React, {memo} from "react";
2
+ import {PopoverInteractionKind as BlueprintPopoverInteractionKind} from "@blueprintjs/core";
3
3
 
4
- import { CLASSPREFIX as eccgui } from "../../../configuration/constants";
5
- import { ContextOverlay } from "../../../index";
4
+ import {CLASSPREFIX as eccgui} from "../../../configuration/constants";
6
5
 
7
- import { ContextOverlayProps } from "./../../../components/ContextOverlay/ContextOverlay";
6
+ import {ContextOverlay, ContextOverlayProps} from "./../../../components/ContextOverlay/ContextOverlay";
8
7
 
9
8
  interface PosOffset {
10
9
  left: number;
@@ -13,7 +12,7 @@ interface PosOffset {
13
12
 
14
13
  export interface EdgeToolsProps extends Omit<ContextOverlayProps, "children"> {
15
14
  posOffset: PosOffset;
16
- children: string | JSX.Element | JSX.Element[];
15
+ children: string | React.JSX.Element | React.JSX.Element[];
17
16
  }
18
17
 
19
18
  export const EdgeTools = memo(({ posOffset, children, ...otherProps }: EdgeToolsProps) => {