@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
@@ -0,0 +1,101 @@
1
+ import React from "react";
2
+ import { render } from "@testing-library/react";
3
+ import userEvent from "@testing-library/user-event";
4
+
5
+ import "@testing-library/jest-dom";
6
+
7
+ import { CLASSPREFIX as eccgui } from "../../configuration/constants";
8
+
9
+ import { ColorField } from "./ColorField";
10
+
11
+ describe("ColorField", () => {
12
+ describe("rendering", () => {
13
+ it("renders without crashing, and correct component CSS class is applied", () => {
14
+ const { container } = render(<ColorField />);
15
+ expect(container).not.toBeEmptyDOMElement();
16
+ expect(container.getElementsByClassName(`${eccgui}-colorfield`).length).toBe(1);
17
+ });
18
+
19
+ it("renders a color input by default (no palette presets)", () => {
20
+ const { container } = render(<ColorField colorPresets={[]} allowCustomColor={true} />);
21
+ expect(container.querySelector("input[type='color']")).toBeInTheDocument();
22
+ });
23
+
24
+ it("renders a readonly text input when palette colors are configured, and custom picker CSS class is applied", () => {
25
+ const { container } = render(
26
+ <ColorField
27
+ className="my-custom-class"
28
+ colorPresets={[
29
+ ["my-black", "#000000"],
30
+ ["my-white", "#ffffff"],
31
+ ]}
32
+ />
33
+ );
34
+ // With default palette settings, a text input with readOnly is shown
35
+ expect(container.querySelector("input[type='text']")).toBeInTheDocument();
36
+ expect(container.querySelector("input[readonly]")).toBeInTheDocument();
37
+ expect(container.querySelector(`.${eccgui}-colorfield--custom-picker`)).toBeInTheDocument();
38
+ });
39
+
40
+ it("applies additional className", () => {
41
+ render(<ColorField className="my-custom-class" colorPresets={[]} allowCustomColor={true} />);
42
+ expect(document.querySelector(".my-custom-class")).toBeInTheDocument();
43
+ });
44
+ });
45
+
46
+ describe("value handling", () => {
47
+ it("uses defaultValue as initial color", () => {
48
+ render(<ColorField defaultValue="#ff0000" colorPresets={[]} allowCustomColor={true} />);
49
+ const input = document.querySelector("input") as HTMLInputElement;
50
+ expect(input.value).toBe("#ff0000");
51
+ });
52
+
53
+ it("uses value prop as initial color", () => {
54
+ render(<ColorField value="#00ff00" colorPresets={[]} allowCustomColor={true} />);
55
+ const input = document.querySelector("input") as HTMLInputElement;
56
+ expect(input.value).toBe("#00ff00");
57
+ });
58
+
59
+ it("falls back to #000000 when no value or defaultValue is provided", () => {
60
+ render(<ColorField colorPresets={[]} allowCustomColor={true} />);
61
+ const input = document.querySelector("input") as HTMLInputElement;
62
+ expect(input.value).toBe("#000000");
63
+ });
64
+
65
+ it("updates displayed value when value prop changes", () => {
66
+ const { rerender } = render(<ColorField value="#ff0000" colorPresets={[]} allowCustomColor={true} />);
67
+ let input = document.querySelector("input") as HTMLInputElement;
68
+ expect(input.value).toBe("#ff0000");
69
+
70
+ rerender(<ColorField value="#0000ff" colorPresets={[]} allowCustomColor={true} />);
71
+ input = document.querySelector("input") as HTMLInputElement;
72
+ expect(input.value).toBe("#0000ff");
73
+ });
74
+ });
75
+
76
+ describe("disabled state", () => {
77
+ it("is disabled when disabled prop is true", () => {
78
+ render(<ColorField disabled colorPresets={[]} allowCustomColor={true} />);
79
+ const input = document.querySelector("input") as HTMLInputElement;
80
+ expect(input).toBeDisabled();
81
+ });
82
+
83
+ it("is disabled when no palette colors and allowCustomColor is false", () => {
84
+ render(<ColorField colorPresets={[]} allowCustomColor={false} />);
85
+ const input = document.querySelector("input") as HTMLInputElement;
86
+ expect(input).toBeDisabled();
87
+ });
88
+ });
89
+
90
+ describe("onChange callback", () => {
91
+ it("calls onChange when native color input changes", async () => {
92
+ const user = userEvent.setup();
93
+ const onChange = jest.fn();
94
+ render(<ColorField onChange={onChange} colorPresets={[]} allowCustomColor={true} />);
95
+ const input = document.querySelector("input[type='color']") as HTMLInputElement;
96
+ input.type = "text"; // for unknown reasons Jest seems not able to test it on color inputs
97
+ await user.type(input, "#123456");
98
+ expect(onChange).toHaveBeenCalled();
99
+ });
100
+ });
101
+ });
@@ -0,0 +1,200 @@
1
+ import React, { CSSProperties } from "react";
2
+ import classNames from "classnames";
3
+ import Color from "color";
4
+
5
+ import { utils } from "../../common";
6
+ import { getEnabledColorsProps } from "../../common/utils/colorHash";
7
+ import { CLASSPREFIX as eccgui } from "../../configuration/constants";
8
+ import { ContextOverlay } from "../ContextOverlay";
9
+ import { FieldSet } from "../Form";
10
+ import { RadioButton } from "../RadioButton/RadioButton";
11
+ import { Spacing } from "../Separation/Spacing";
12
+ import { Tag, TagList } from "../Tag";
13
+ import { TextField, TextFieldProps } from "../TextField";
14
+ import { Tooltip } from "../Tooltip/Tooltip";
15
+ import { WhiteSpaceContainer } from "../Typography";
16
+
17
+ type ColorPresets = [string, string][] | [string, Color][];
18
+ type ColorPresetConfiguration = Pick<getEnabledColorsProps, "includeColorWeight" | "includePaletteGroup">;
19
+
20
+ export interface ColorFieldProps extends Omit<TextFieldProps, "invisibleCharacterWarning"> {
21
+ /**
22
+ * Any color can be selected, not only from the color presets.
23
+ */
24
+ allowCustomColor?: boolean;
25
+ /**
26
+ * List of named colors that are used a selectable color options.
27
+ */
28
+ colorPresets?: ColorPresets;
29
+ }
30
+
31
+ /**
32
+ * Color input field that provides resets from the configured color palette.
33
+ * Use `includeColorWeight` and `includePaletteGroup` to filter them.
34
+ */
35
+ export const ColorField = ({
36
+ className = "",
37
+ allowCustomColor = false,
38
+ colorPresets = listColorPalettePresets(),
39
+ defaultValue,
40
+ value,
41
+ onChange,
42
+ fullWidth = false,
43
+ ...otherTextFieldProps
44
+ }: ColorFieldProps) => {
45
+ const ref = React.useRef(null);
46
+ const [colorValue, setColorValue] = React.useState<string>(defaultValue || value || "#000000");
47
+ if (value && value !== colorValue) {
48
+ setColorValue(value);
49
+ }
50
+
51
+ const disableNativePicker = colorPresets.length > 0;
52
+ const disabled = (!disableNativePicker && !allowCustomColor) || otherTextFieldProps.disabled;
53
+
54
+ const forwardOnChange = (forwardedEvent: React.ChangeEvent<HTMLInputElement>) => {
55
+ setColorValue(forwardedEvent.target.value);
56
+ if (onChange) {
57
+ onChange(forwardedEvent);
58
+ }
59
+ };
60
+
61
+ const colorInput = (
62
+ <TextField
63
+ inputRef={ref}
64
+ className={classNames(`${eccgui}-colorfield`, className, {
65
+ [`${eccgui}-colorfield--custom-picker`]: disableNativePicker,
66
+ [`${eccgui}-colorfield--disabled`]: disabled,
67
+ })}
68
+ // we cannot use `color` type for the custom picker because we do not have control over it then
69
+ type={!disableNativePicker ? "color" : "text"}
70
+ readOnly={disableNativePicker}
71
+ disabled={disabled}
72
+ value={colorValue}
73
+ fullWidth={fullWidth}
74
+ {...otherTextFieldProps}
75
+ onChange={
76
+ !disableNativePicker
77
+ ? (e: React.ChangeEvent<HTMLInputElement>) => {
78
+ forwardOnChange(e);
79
+ }
80
+ : undefined
81
+ }
82
+ style={{ ...otherTextFieldProps.style, [`--eccgui-colorfield-background`]: colorValue } as CSSProperties}
83
+ />
84
+ );
85
+
86
+ return disableNativePicker && !disabled ? (
87
+ <ContextOverlay
88
+ fill={fullWidth}
89
+ content={
90
+ <WhiteSpaceContainer
91
+ paddingTop={"small"}
92
+ paddingRight={"small"}
93
+ paddingBottom={"small"}
94
+ paddingLeft={"small"}
95
+ className={`${eccgui}-colorfield__picker`}
96
+ >
97
+ {allowCustomColor && (
98
+ <>
99
+ <TextField
100
+ type={"color"}
101
+ value={colorValue}
102
+ onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
103
+ forwardOnChange(e);
104
+ }}
105
+ />
106
+ <Spacing size={"small"} />
107
+ </>
108
+ )}
109
+ <FieldSet>
110
+ <TagList className={`${eccgui}-colorfield__palette`}>
111
+ {colorPresets!.map((color: [string, string | Color], idx: number) => [
112
+ <RadioButton
113
+ key={idx}
114
+ className={`${eccgui}-colorfield__palette__color`}
115
+ hideIndicator
116
+ value={typeof color[1] === "string" ? color[1] : color[1].toString()}
117
+ onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
118
+ forwardOnChange(e);
119
+ }}
120
+ >
121
+ <Tooltip content={color[0]}>
122
+ <Tag
123
+ large
124
+ style={{ [`--eccgui-colorfield-palette-color`]: color[1] } as CSSProperties}
125
+ >
126
+ {typeof color[1] === "string" ? color[1] : color[1].toString()}
127
+ </Tag>
128
+ </Tooltip>
129
+ </RadioButton>,
130
+ // Looks like we cannot force some type of line break in the tag list via CSS only
131
+ (idx + 1) % 8 === 0 && (
132
+ <>
133
+ <br className={`${eccgui}-colorfield__palette-linebreak`} />
134
+ </>
135
+ ),
136
+ ])}
137
+ </TagList>
138
+ </FieldSet>
139
+ </WhiteSpaceContainer>
140
+ }
141
+ >
142
+ {colorInput}
143
+ </ContextOverlay>
144
+ ) : (
145
+ colorInput
146
+ );
147
+ };
148
+
149
+ const defaultColorPaletteSet: ColorPresetConfiguration = {
150
+ // on default, we only include color weights that can have enough contrasts to black/white
151
+ includeColorWeight: [100, 300, 700, 900],
152
+ // on default, we only include layout colors
153
+ includePaletteGroup: ["layout"],
154
+ };
155
+
156
+ /**
157
+ * Simple helper function to get a list of colors defined in the color palette.
158
+ */
159
+ const listColorPalettePresets = (colorPaletteSet = defaultColorPaletteSet) => {
160
+ return utils
161
+ .getEnabledColorPropertiesFromPalette({
162
+ ...colorPaletteSet,
163
+ minimalColorDistance: 0, // we use all allowed colors, and do not check distances between them
164
+ })
165
+ .map((color: [string, string | Color]) => [
166
+ color[0].replace(`${eccgui}-color-palette-`, ""),
167
+ color[1],
168
+ ]) as ColorPresets;
169
+ };
170
+
171
+ ColorField.listColorPalettePresets = listColorPalettePresets;
172
+
173
+ type calculateColorHashValueProps = Pick<ColorFieldProps, "allowCustomColor"> & ColorPresetConfiguration;
174
+
175
+ /**
176
+ * Simple helper function that provide simple access to color hash calculation.
177
+ */
178
+ ColorField.calculateColorHashValue = (
179
+ text: string,
180
+ options: calculateColorHashValueProps = {
181
+ ...defaultColorPaletteSet,
182
+ allowCustomColor: false,
183
+ }
184
+ ) => {
185
+ const hash = utils.textToColorHash({
186
+ text,
187
+ options: {
188
+ returnValidColorsDirectly: options.allowCustomColor as boolean,
189
+ enabledColors: utils.getEnabledColorsFromPalette({
190
+ includePaletteGroup: options.includePaletteGroup,
191
+ includeColorWeight: options.includeColorWeight,
192
+ minimalColorDistance: 0,
193
+ }),
194
+ },
195
+ });
196
+
197
+ return hash ? hash : undefined;
198
+ };
199
+
200
+ export default ColorField;
@@ -0,0 +1,67 @@
1
+ .#{$eccgui}-colorfield {
2
+ cursor: default;
3
+
4
+ &:not(.#{$ns}-fill) {
5
+ width: 100%;
6
+ max-width: 4 * $eccgui-size-textfield-height-regular;
7
+ }
8
+
9
+ .#{$ns}-input {
10
+ color: var(--#{$eccgui}-colorfield-background);
11
+ cursor: inherit;
12
+ background-color: var(--#{$eccgui}-colorfield-background);
13
+
14
+ &[type="color"] {
15
+ &::-webkit-color-swatch-wrapper {
16
+ display: none;
17
+ }
18
+
19
+ &::-moz-color-swatch {
20
+ display: none;
21
+ }
22
+ }
23
+ }
24
+
25
+ &[class*="#{$ns}-intent-"] {
26
+ // we need to remove normal intent indicators like colored bg or blinking
27
+ .#{$ns}-input {
28
+ background-color: var(--#{$eccgui}-colorfield-background);
29
+ }
30
+ }
31
+
32
+ .#{$ns}-input-left-container {
33
+ top: 1px;
34
+ left: 1px !important;
35
+ height: calc(100% - 2px);
36
+ background-color: $eccgui-color-textfield-background;
37
+ }
38
+ .#{$ns}-input-action {
39
+ top: 1px;
40
+ right: 1px !important;
41
+ height: calc(100% - 2px);
42
+ background-color: $eccgui-color-textfield-background;
43
+ }
44
+ }
45
+
46
+ .#{$eccgui}-colorfield--disabled {
47
+ opacity: $eccgui-opacity-disabled;
48
+ }
49
+
50
+ .#{$eccgui}-colorfield__palette {
51
+ & > li:has(.#{$eccgui}-colorfield__palette-linebreak) {
52
+ display: block;
53
+ width: 100%;
54
+ height: 0;
55
+ margin: 0;
56
+ overflow: hidden;
57
+ }
58
+ }
59
+
60
+ .#{$eccgui}-colorfield__palette__color {
61
+ margin: 0;
62
+ .#{$eccgui}-tag__item {
63
+ width: 3rem;
64
+ color: var(--#{$eccgui}-colorfield-palette-color) !important;
65
+ background-color: var(--#{$eccgui}-colorfield-palette-color) !important;
66
+ }
67
+ }
@@ -2,7 +2,7 @@ import React from "react";
2
2
  import { LoremIpsum } from "react-lorem-ipsum";
3
3
  import { Meta, StoryFn } from "@storybook/react";
4
4
 
5
- import { Badge, ContentGroup, HtmlContentBlock, IconButton, Tag } from "../../../index";
5
+ import { Badge, ContentGroup, HtmlContentBlock, IconButton, Tag } from "../../components";
6
6
 
7
7
  export default {
8
8
  title: "Components/ContentGroup",
@@ -2,8 +2,6 @@ import React from "react";
2
2
  import classNames from "classnames";
3
3
  import Color from "color";
4
4
 
5
- import { TestableComponent } from "../../components/interfaces";
6
- import { CLASSPREFIX as eccgui } from "../../configuration/constants";
7
5
  import {
8
6
  Divider,
9
7
  Icon,
@@ -17,7 +15,9 @@ import {
17
15
  Toolbar,
18
16
  ToolbarSection,
19
17
  Tooltip,
20
- } from "../index";
18
+ } from "../../components";
19
+ import { TestableComponent } from "../../components/interfaces";
20
+ import { CLASSPREFIX as eccgui } from "../../configuration/constants";
21
21
 
22
22
  export interface ContentGroupProps extends Omit<React.HTMLAttributes<HTMLElement>, "title">, TestableComponent {
23
23
  /**
@@ -60,3 +60,12 @@ $eccgui-color-scontentgroup-border-sub: eccgui-color-rgba(
60
60
  flex-shrink: 1;
61
61
  width: 100%;
62
62
  }
63
+
64
+ @media print {
65
+ .#{$eccgui}-contentgroup__header__options {
66
+ display: none;
67
+ }
68
+ .#{$eccgui}-contentgroup--border-sub::after {
69
+ print-color-adjust: exact;
70
+ }
71
+ }
@@ -2,7 +2,7 @@ import React, { ReactElement } from "react";
2
2
 
3
3
  import { CLASSPREFIX as eccgui } from "../../configuration/constants";
4
4
  import { ValidIconName } from "../Icon/canonicalIconNames";
5
- import IconButton from "../Icon/IconButton";
5
+ import { IconButton, IconButtonProps } from "../Icon/IconButton";
6
6
  import { TestableComponent } from "../interfaces";
7
7
  import Menu from "../Menu/Menu";
8
8
 
@@ -17,19 +17,24 @@ export interface ContextMenuProps extends TestableComponent {
17
17
  * The elements of the context menu.
18
18
  * They will be wrapped in a `Menu` element automatically.
19
19
  */
20
- children?: JSX.Element | JSX.Element[];
20
+ children?: React.JSX.Element | React.JSX.Element[];
21
21
  /**
22
22
  * Toggler that need to be used to display menu.
23
23
  * If a valid icon name is used then the icon element is displayed.
24
24
  * In this case `togglerText`, `togglerLarge` and `tooltipAsTitle` are used, too.
25
25
  */
26
- togglerElement?: ValidIconName | JSX.Element;
26
+ togglerElement?: ValidIconName | React.JSX.Element;
27
27
  /**
28
28
  * Text displayed as title or tooltip on toggler element.
29
29
  */
30
30
  togglerText?: string;
31
+ /**
32
+ * Allow to de- and increase the size of the default toggler button.
33
+ */
34
+ togglerSize?: IconButtonProps["size"];
31
35
  /**
32
36
  * Toggler element is displayed larger than normal.
37
+ * @deprecated (v26) use `togglerSize="large" instead
33
38
  */
34
39
  togglerLarge?: boolean;
35
40
  /**
@@ -62,6 +67,7 @@ export const ContextMenu = ({
62
67
  contextOverlayProps,
63
68
  disabled,
64
69
  togglerLarge = false,
70
+ togglerSize,
65
71
  /* FIXME: The Tooltip component can interfere with the opened menu, since it is implemented via portal and may cover the menu,
66
72
  so by default we use the title attribute instead of Tooltip. */
67
73
  tooltipAsTitle = true,
@@ -76,7 +82,7 @@ export const ContextMenu = ({
76
82
  tooltipAsTitle={tooltipAsTitle}
77
83
  name={[togglerElement]}
78
84
  text={togglerText}
79
- large={togglerLarge}
85
+ size={togglerLarge ? "large" : togglerSize}
80
86
  disabled={!!disabled}
81
87
  data-test-id={dataTestId ?? undefined}
82
88
  data-testid={dataTestid ?? undefined}
@@ -6,14 +6,14 @@ import {
6
6
  PopoverProps as BlueprintPopoverProps,
7
7
  Utils as BlueprintUtils,
8
8
  } from "@blueprintjs/core";
9
-
10
- import { CLASSPREFIX as eccgui } from "../../configuration/constants";
9
+ import {WhiteSpaceContainerProps, WhiteSpaceContainer} from "../Typography";
10
+ import {CLASSPREFIX as eccgui} from "../../configuration/constants";
11
11
 
12
12
  export interface ContextOverlayProps extends Omit<BlueprintPopoverProps, "position"> {
13
13
  /**
14
14
  * `target` element to use as toggler for the overlay display.
15
15
  */
16
- children?: JSX.Element;
16
+ children?: React.JSX.Element;
17
17
  /**
18
18
  * Type of counter property to `Modal.forceTopPosition`.
19
19
  * Use it when you need to display modal dialogs out of the context overlay.
@@ -24,6 +24,11 @@ export interface ContextOverlayProps extends Omit<BlueprintPopoverProps, "positi
24
24
  * Currently experimental.
25
25
  */
26
26
  usePlaceholder?: boolean;
27
+ /**
28
+ * Adds white space to each side of the overlay content.
29
+ * For more control use `WhiteSpaceContainer` directly as wrapper for the content children.
30
+ */
31
+ paddingSize?: WhiteSpaceContainerProps["paddingTop"];
27
32
  }
28
33
 
29
34
  /**
@@ -36,6 +41,8 @@ export const ContextOverlay = ({
36
41
  preventTopPosition,
37
42
  className = "",
38
43
  usePlaceholder = false,
44
+ paddingSize,
45
+ content,
39
46
  ...otherPopoverProps
40
47
  }: ContextOverlayProps) => {
41
48
  const placeholderRef = React.useRef<HTMLElement>(null);
@@ -108,7 +115,7 @@ export const ContextOverlay = ({
108
115
  return () => {};
109
116
  }, [!!placeholderRef.current, otherPopoverProps.interactionKind]);
110
117
 
111
- const refocus = React.useCallback((node) => {
118
+ const refocus = React.useCallback((node:any) => {
112
119
  const target = node?.targetRef.current.children[0];
113
120
  if (!eventMemory.current || !target) {
114
121
  return;
@@ -169,6 +176,18 @@ export const ContextOverlay = ({
169
176
  ) : (
170
177
  <BlueprintPopover
171
178
  placement="bottom"
179
+ content={content ? (
180
+ paddingSize ? (
181
+ <WhiteSpaceContainer
182
+ paddingTop={paddingSize}
183
+ paddingRight={paddingSize}
184
+ paddingBottom={paddingSize}
185
+ paddingLeft={paddingSize}
186
+ >
187
+ {content}
188
+ </WhiteSpaceContainer>
189
+ ) : content
190
+ ) : undefined}
172
191
  {...otherPopoverProps}
173
192
  className={targetClassName}
174
193
  portalClassName={portalClassNameFinal.trim() ?? undefined}
@@ -0,0 +1,30 @@
1
+ import React from "react";
2
+ import { Meta, StoryFn } from "@storybook/react";
3
+
4
+ import { DecoupledOverlay, DecoupledOverlayProps, Tag, WhiteSpaceContainer } from "../../../index";
5
+
6
+ export default {
7
+ title: "Components/DecoupledOverlay",
8
+ component: DecoupledOverlay,
9
+ argTypes: {},
10
+ } as Meta<typeof DecoupledOverlay>;
11
+
12
+ const Template: StoryFn<typeof DecoupledOverlay> = (args: DecoupledOverlayProps) => {
13
+ return (
14
+ <>
15
+ <Tag id={"decoupledTarget"}>Decoupled target</Tag>
16
+ <DecoupledOverlay {...args} />
17
+ </>
18
+ );
19
+ };
20
+
21
+ export const Default = Template.bind({});
22
+
23
+ Default.args = {
24
+ children: (
25
+ <WhiteSpaceContainer marginTop={"small"} marginRight={"small"} marginBottom={"small"} marginLeft={"small"}>
26
+ Decoupled overlay
27
+ </WhiteSpaceContainer>
28
+ ),
29
+ targetSelectorOrElement: "#decoupledTarget",
30
+ };
@@ -0,0 +1,100 @@
1
+ import React from "react";
2
+ import { createPortal } from "react-dom";
3
+ import { Classes as BlueprintClasses } from "@blueprintjs/core";
4
+ import { createPopper } from "@popperjs/core";
5
+ import {TooltipSize} from "../Tooltip/Tooltip";
6
+ import {TestableComponent} from "../interfaces";
7
+ import {ContextOverlayProps} from "../ContextOverlay";
8
+ import {CLASSPREFIX as eccgui} from "../../configuration/constants";
9
+ import WhiteSpaceContainer from "../Typography/WhiteSpaceContainer";
10
+
11
+ export interface DecoupledOverlayProps
12
+ extends React.HTMLAttributes<HTMLDivElement>,
13
+ TestableComponent,
14
+ Pick<ContextOverlayProps, "usePortal" | "portalContainer" | "placement" | "minimal" | "paddingSize"> {
15
+ /**
16
+ * Element that should be used. The step content is displayed as a tooltip instead of a modal.
17
+ * In case of an array, the first match is highlighted. */
18
+ targetSelectorOrElement: string | Element;
19
+ /**
20
+ * The size of the overlay.
21
+ * */
22
+ size?: TooltipSize;
23
+ }
24
+
25
+ /**
26
+ * Use an overlay popover without the necessity to use a target that need to be rendered in place.
27
+ * The target is referenced by a selector string or element object.
28
+ * It can exist somewhere in the DOM, but it must exist when the overlay is rendered.
29
+ * It is always displayed, close it by removement.
30
+ */
31
+ export const DecoupledOverlay = ({
32
+ targetSelectorOrElement,
33
+ usePortal = true,
34
+ portalContainer = document.body,
35
+ minimal = false,
36
+ placement = "auto",
37
+ size = "large",
38
+ paddingSize,
39
+ children,
40
+ }: DecoupledOverlayProps) => {
41
+ const overlayRef = React.useCallback(
42
+ (overlay: HTMLDivElement | null) => {
43
+ const target =
44
+ typeof targetSelectorOrElement === "string"
45
+ ? document.querySelector(targetSelectorOrElement)
46
+ : targetSelectorOrElement;
47
+ if (overlay && target) {
48
+ createPopper(target, overlay, {
49
+ placement: placement,
50
+ modifiers: [
51
+ {
52
+ name: "offset",
53
+ options: {
54
+ offset: [0, 15],
55
+ },
56
+ },
57
+ ],
58
+ });
59
+ }
60
+ },
61
+ [targetSelectorOrElement]
62
+ );
63
+
64
+ const overlay = (
65
+ <div
66
+ className={
67
+ `${eccgui}-decoupled-overlay` +
68
+ ` ${eccgui}-decoupled-overlay--${size}` +
69
+ ` ${BlueprintClasses.POPOVER}` +
70
+ (minimal ? ` ${BlueprintClasses.MINIMAL}` : "")
71
+ }
72
+ role="tooltip"
73
+ ref={overlayRef}
74
+ >
75
+ {!minimal && (
76
+ <div
77
+ className={`${eccgui}-decoupled-overlay__arrow ${BlueprintClasses.POPOVER_ARROW}`}
78
+ data-popper-arrow
79
+ aria-hidden
80
+ />
81
+ )}
82
+ <div className={`${BlueprintClasses.POPOVER_CONTENT} ${eccgui}-decoupled-overlay__content`}>
83
+ {paddingSize ? (
84
+ <WhiteSpaceContainer
85
+ paddingTop={paddingSize}
86
+ paddingRight={paddingSize}
87
+ paddingBottom={paddingSize}
88
+ paddingLeft={paddingSize}
89
+ >
90
+ {children}
91
+ </WhiteSpaceContainer>
92
+ ) : children}
93
+ </div>
94
+ </div>
95
+ );
96
+
97
+ return usePortal ? createPortal(overlay, portalContainer) : overlay;
98
+ };
99
+
100
+ export default DecoupledOverlay;