@eccenca/gui-elements 22.0.1 → 22.1.0-rc.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 (269) hide show
  1. package/CHANGELOG.md +20 -4
  2. package/dist/cjs/cmem/ActivityControl/ActivityControlWidget.js +18 -14
  3. package/dist/cjs/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
  4. package/dist/cjs/cmem/ActivityControl/SilkActivityControl.js +58 -30
  5. package/dist/cjs/cmem/ActivityControl/SilkActivityControl.js.map +1 -1
  6. package/dist/cjs/cmem/ActivityControl/index.js +11 -0
  7. package/dist/cjs/cmem/ActivityControl/index.js.map +1 -0
  8. package/dist/cjs/cmem/ContentBlobToggler/index.js +8 -0
  9. package/dist/cjs/cmem/ContentBlobToggler/index.js.map +1 -0
  10. package/dist/cjs/cmem/index.js +14 -13
  11. package/dist/cjs/cmem/index.js.map +1 -1
  12. package/dist/cjs/cmem/react-flow/ReactFlow/ReactFlow.js +57 -0
  13. package/dist/cjs/cmem/react-flow/ReactFlow/ReactFlow.js.map +1 -0
  14. package/dist/cjs/cmem/react-flow/configuration/_colors-graph.module.scss +35 -0
  15. package/dist/cjs/cmem/react-flow/configuration/_colors-linking.module.scss +29 -0
  16. package/dist/cjs/cmem/react-flow/configuration/_colors-workflow.module.scss +22 -0
  17. package/dist/cjs/cmem/react-flow/configuration/graph.js +31 -0
  18. package/dist/cjs/cmem/react-flow/configuration/graph.js.map +1 -0
  19. package/dist/cjs/cmem/react-flow/configuration/linking.js +29 -0
  20. package/dist/cjs/cmem/react-flow/configuration/linking.js.map +1 -0
  21. package/dist/cjs/cmem/react-flow/configuration/unspecified.js +15 -0
  22. package/dist/cjs/cmem/react-flow/configuration/unspecified.js.map +1 -0
  23. package/dist/cjs/cmem/react-flow/configuration/workflow.js +27 -0
  24. package/dist/cjs/cmem/react-flow/configuration/workflow.js.map +1 -0
  25. package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js +285 -0
  26. package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js.map +1 -0
  27. package/dist/cjs/components/AutoSuggestion/AutoSuggestionList.js +81 -0
  28. package/dist/cjs/components/AutoSuggestion/AutoSuggestionList.js.map +1 -0
  29. package/dist/cjs/components/AutoSuggestion/SingleLineCodeEditor.js +46 -0
  30. package/dist/cjs/components/AutoSuggestion/SingleLineCodeEditor.js.map +1 -0
  31. package/dist/cjs/components/AutocompleteField/AutoCompleteField.js +8 -12
  32. package/dist/cjs/components/AutocompleteField/AutoCompleteField.js.map +1 -1
  33. package/dist/cjs/components/Button/Button.js.map +1 -1
  34. package/dist/cjs/components/ContextOverlay/ContextMenu.js +1 -1
  35. package/dist/cjs/components/ContextOverlay/ContextMenu.js.map +1 -1
  36. package/dist/cjs/components/Dialog/Modal.js +2 -2
  37. package/dist/cjs/components/Dialog/Modal.js.map +1 -1
  38. package/dist/cjs/components/Dialog/SimpleDialog.js.map +1 -1
  39. package/dist/cjs/components/Icon/Icon.js.map +1 -1
  40. package/dist/cjs/components/Icon/canonicalIconNames.js +30 -0
  41. package/dist/cjs/components/Icon/canonicalIconNames.js.map +1 -1
  42. package/dist/cjs/components/MultiSelect/MultiSelect.js +219 -0
  43. package/dist/cjs/components/MultiSelect/MultiSelect.js.map +1 -0
  44. package/dist/cjs/components/Tabs/Tab.js +95 -0
  45. package/dist/cjs/components/Tabs/Tab.js.map +1 -0
  46. package/dist/cjs/components/Tabs/TabTitle.js +20 -0
  47. package/dist/cjs/components/Tabs/TabTitle.js.map +1 -0
  48. package/dist/cjs/components/Tabs/Tabs.js +29 -19
  49. package/dist/cjs/components/Tabs/Tabs.js.map +1 -1
  50. package/dist/cjs/components/Tag/Tag.js +7 -1
  51. package/dist/cjs/components/Tag/Tag.js.map +1 -1
  52. package/dist/cjs/extensions/react-flow/edges/utils.js +96 -4
  53. package/dist/cjs/extensions/react-flow/edges/utils.js.map +1 -1
  54. package/dist/cjs/extensions/react-flow/nodes/NodeContent.js +5 -4
  55. package/dist/cjs/extensions/react-flow/nodes/NodeContent.js.map +1 -1
  56. package/dist/cjs/extensions/react-flow/nodes/NodeContentExtension.js +2 -2
  57. package/dist/cjs/extensions/react-flow/nodes/NodeContentExtension.js.map +1 -1
  58. package/dist/cjs/extensions/react-flow/nodes/NodeTools.js.map +1 -1
  59. package/dist/cjs/index.js +17 -2
  60. package/dist/cjs/index.js.map +1 -1
  61. package/dist/cjs/legacy-replacements/Button/AffirmativeButton.js +25 -0
  62. package/dist/cjs/legacy-replacements/Button/AffirmativeButton.js.map +1 -0
  63. package/dist/cjs/legacy-replacements/Button/Button.js +61 -0
  64. package/dist/cjs/legacy-replacements/Button/Button.js.map +1 -0
  65. package/dist/cjs/legacy-replacements/Button/DismissiveButton.js +25 -0
  66. package/dist/cjs/legacy-replacements/Button/DismissiveButton.js.map +1 -0
  67. package/dist/cjs/legacy-replacements/Button/DisruptiveButton.js +25 -0
  68. package/dist/cjs/legacy-replacements/Button/DisruptiveButton.js.map +1 -0
  69. package/dist/cjs/legacy-replacements/Checkbox/Checkbox.js +55 -0
  70. package/dist/cjs/legacy-replacements/Checkbox/Checkbox.js.map +1 -0
  71. package/dist/cjs/legacy-replacements/Radio/RadioButton.js +48 -0
  72. package/dist/cjs/legacy-replacements/Radio/RadioButton.js.map +1 -0
  73. package/dist/cjs/legacy-replacements/Tabs/Tabs.js +36 -0
  74. package/dist/cjs/legacy-replacements/Tabs/Tabs.js.map +1 -0
  75. package/dist/cjs/legacy-replacements/TextField/TextField.js +75 -0
  76. package/dist/cjs/legacy-replacements/TextField/TextField.js.map +1 -0
  77. package/dist/cjs/legacy-replacements/index.js +22 -0
  78. package/dist/cjs/legacy-replacements/index.js.map +1 -0
  79. package/dist/es5/cmem/ActivityControl/ActivityControlWidget.js +19 -15
  80. package/dist/es5/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
  81. package/dist/es5/cmem/ActivityControl/SilkActivityControl.js +56 -30
  82. package/dist/es5/cmem/ActivityControl/SilkActivityControl.js.map +1 -1
  83. package/dist/es5/cmem/ActivityControl/index.js +4 -0
  84. package/dist/es5/cmem/ActivityControl/index.js.map +1 -0
  85. package/dist/es5/cmem/ContentBlobToggler/index.js +3 -0
  86. package/dist/es5/cmem/ContentBlobToggler/index.js.map +1 -0
  87. package/dist/es5/cmem/index.js +6 -8
  88. package/dist/es5/cmem/index.js.map +1 -1
  89. package/dist/es5/cmem/react-flow/ReactFlow/ReactFlow.js +43 -0
  90. package/dist/es5/cmem/react-flow/ReactFlow/ReactFlow.js.map +1 -0
  91. package/dist/es5/cmem/react-flow/configuration/_colors-graph.module.scss +35 -0
  92. package/dist/es5/cmem/react-flow/configuration/_colors-linking.module.scss +29 -0
  93. package/dist/es5/cmem/react-flow/configuration/_colors-workflow.module.scss +22 -0
  94. package/dist/es5/cmem/react-flow/configuration/graph.js +23 -0
  95. package/dist/es5/cmem/react-flow/configuration/graph.js.map +1 -0
  96. package/dist/es5/cmem/react-flow/configuration/linking.js +21 -0
  97. package/dist/es5/cmem/react-flow/configuration/linking.js.map +1 -0
  98. package/dist/es5/cmem/react-flow/configuration/unspecified.js +12 -0
  99. package/dist/es5/cmem/react-flow/configuration/unspecified.js.map +1 -0
  100. package/dist/es5/cmem/react-flow/configuration/workflow.js +19 -0
  101. package/dist/es5/cmem/react-flow/configuration/workflow.js.map +1 -0
  102. package/dist/es5/components/AutoSuggestion/AutoSuggestion.js +347 -0
  103. package/dist/es5/components/AutoSuggestion/AutoSuggestion.js.map +1 -0
  104. package/dist/es5/components/AutoSuggestion/AutoSuggestionList.js +93 -0
  105. package/dist/es5/components/AutoSuggestion/AutoSuggestionList.js.map +1 -0
  106. package/dist/es5/components/AutoSuggestion/SingleLineCodeEditor.js +42 -0
  107. package/dist/es5/components/AutoSuggestion/SingleLineCodeEditor.js.map +1 -0
  108. package/dist/es5/components/AutocompleteField/AutoCompleteField.js +8 -12
  109. package/dist/es5/components/AutocompleteField/AutoCompleteField.js.map +1 -1
  110. package/dist/es5/components/Button/Button.js.map +1 -1
  111. package/dist/es5/components/ContextOverlay/ContextMenu.js +1 -1
  112. package/dist/es5/components/ContextOverlay/ContextMenu.js.map +1 -1
  113. package/dist/es5/components/Dialog/Modal.js +2 -2
  114. package/dist/es5/components/Dialog/Modal.js.map +1 -1
  115. package/dist/es5/components/Dialog/SimpleDialog.js.map +1 -1
  116. package/dist/es5/components/Icon/Icon.js.map +1 -1
  117. package/dist/es5/components/Icon/canonicalIconNames.js +30 -0
  118. package/dist/es5/components/Icon/canonicalIconNames.js.map +1 -1
  119. package/dist/es5/components/MultiSelect/MultiSelect.js +301 -0
  120. package/dist/es5/components/MultiSelect/MultiSelect.js.map +1 -0
  121. package/dist/es5/components/Tabs/Tab.js +98 -0
  122. package/dist/es5/components/Tabs/Tab.js.map +1 -0
  123. package/dist/es5/components/Tabs/TabTitle.js +16 -0
  124. package/dist/es5/components/Tabs/TabTitle.js.map +1 -0
  125. package/dist/es5/components/Tabs/Tabs.js +11 -21
  126. package/dist/es5/components/Tabs/Tabs.js.map +1 -1
  127. package/dist/es5/components/Tag/Tag.js +7 -1
  128. package/dist/es5/components/Tag/Tag.js.map +1 -1
  129. package/dist/es5/extensions/react-flow/edges/utils.js +99 -5
  130. package/dist/es5/extensions/react-flow/edges/utils.js.map +1 -1
  131. package/dist/es5/extensions/react-flow/nodes/NodeContent.js +21 -4
  132. package/dist/es5/extensions/react-flow/nodes/NodeContent.js.map +1 -1
  133. package/dist/es5/extensions/react-flow/nodes/NodeContentExtension.js +2 -2
  134. package/dist/es5/extensions/react-flow/nodes/NodeContentExtension.js.map +1 -1
  135. package/dist/es5/extensions/react-flow/nodes/NodeTools.js.map +1 -1
  136. package/dist/es5/index.js +9 -2
  137. package/dist/es5/index.js.map +1 -1
  138. package/dist/es5/legacy-replacements/Button/AffirmativeButton.js +29 -0
  139. package/dist/es5/legacy-replacements/Button/AffirmativeButton.js.map +1 -0
  140. package/dist/es5/legacy-replacements/Button/Button.js +65 -0
  141. package/dist/es5/legacy-replacements/Button/Button.js.map +1 -0
  142. package/dist/es5/legacy-replacements/Button/DismissiveButton.js +29 -0
  143. package/dist/es5/legacy-replacements/Button/DismissiveButton.js.map +1 -0
  144. package/dist/es5/legacy-replacements/Button/DisruptiveButton.js +29 -0
  145. package/dist/es5/legacy-replacements/Button/DisruptiveButton.js.map +1 -0
  146. package/dist/es5/legacy-replacements/Checkbox/Checkbox.js +59 -0
  147. package/dist/es5/legacy-replacements/Checkbox/Checkbox.js.map +1 -0
  148. package/dist/es5/legacy-replacements/Radio/RadioButton.js +52 -0
  149. package/dist/es5/legacy-replacements/Radio/RadioButton.js.map +1 -0
  150. package/dist/es5/legacy-replacements/Tabs/Tabs.js +40 -0
  151. package/dist/es5/legacy-replacements/Tabs/Tabs.js.map +1 -0
  152. package/dist/es5/legacy-replacements/TextField/TextField.js +81 -0
  153. package/dist/es5/legacy-replacements/TextField/TextField.js.map +1 -0
  154. package/dist/es5/legacy-replacements/index.js +10 -0
  155. package/dist/es5/legacy-replacements/index.js.map +1 -0
  156. package/dist/types/cmem/ActivityControl/ActivityControlTypes.d.ts +2 -1
  157. package/dist/types/cmem/ActivityControl/ActivityControlWidget.d.ts +39 -2
  158. package/dist/types/cmem/ActivityControl/SilkActivityControl.d.ts +16 -3
  159. package/dist/types/cmem/ActivityControl/index.d.ts +3 -0
  160. package/dist/types/cmem/ContentBlobToggler/index.d.ts +2 -0
  161. package/dist/types/cmem/index.d.ts +8 -8
  162. package/dist/types/cmem/react-flow/ReactFlow/ReactFlow.d.ts +14 -0
  163. package/dist/types/cmem/react-flow/configuration/graph.d.ts +21 -0
  164. package/dist/types/cmem/react-flow/configuration/linking.d.ts +19 -0
  165. package/dist/types/cmem/react-flow/configuration/unspecified.d.ts +9 -0
  166. package/dist/types/cmem/react-flow/configuration/workflow.d.ts +17 -0
  167. package/dist/types/components/AutoSuggestion/AutoSuggestion.d.ts +67 -0
  168. package/dist/types/components/AutoSuggestion/AutoSuggestionList.d.ts +13 -0
  169. package/dist/types/components/AutoSuggestion/SingleLineCodeEditor.d.ts +25 -0
  170. package/dist/types/components/AutocompleteField/AutoCompleteField.d.ts +8 -7
  171. package/dist/types/components/Button/Button.d.ts +3 -2
  172. package/dist/types/components/ContextOverlay/ContextMenu.d.ts +6 -1
  173. package/dist/types/components/Dialog/Modal.d.ts +4 -3
  174. package/dist/types/components/Dialog/SimpleDialog.d.ts +2 -0
  175. package/dist/types/components/Icon/Icon.d.ts +2 -2
  176. package/dist/types/components/Icon/IconButton.d.ts +1 -1
  177. package/dist/types/components/Icon/canonicalIconNames.d.ts +1 -1
  178. package/dist/types/components/MultiSelect/MultiSelect.d.ts +79 -0
  179. package/dist/types/components/Tabs/Tab.d.ts +549 -0
  180. package/dist/types/components/Tabs/TabTitle.d.ts +38 -0
  181. package/dist/types/components/Tabs/Tabs.d.ts +14 -20
  182. package/dist/types/components/Tag/Tag.d.ts +1 -1
  183. package/dist/types/extensions/react-flow/edges/utils.d.ts +1 -1
  184. package/dist/types/extensions/react-flow/nodes/NodeContent.d.ts +8 -8
  185. package/dist/types/extensions/react-flow/nodes/NodeDefault.d.ts +2 -2
  186. package/dist/types/extensions/react-flow/nodes/NodeTools.d.ts +2 -1
  187. package/dist/types/extensions/react-flow/nodes/nodeTypes.d.ts +10 -10
  188. package/dist/types/index.d.ts +9 -2
  189. package/dist/types/legacy-replacements/Button/AffirmativeButton.d.ts +2 -0
  190. package/dist/types/legacy-replacements/Button/Button.d.ts +5 -0
  191. package/dist/types/legacy-replacements/Button/DismissiveButton.d.ts +2 -0
  192. package/dist/types/legacy-replacements/Button/DisruptiveButton.d.ts +2 -0
  193. package/dist/types/legacy-replacements/Checkbox/Checkbox.d.ts +2 -0
  194. package/dist/types/legacy-replacements/Radio/RadioButton.d.ts +2 -0
  195. package/dist/types/legacy-replacements/Tabs/Tabs.d.ts +22 -0
  196. package/dist/types/legacy-replacements/TextField/TextField.d.ts +2 -0
  197. package/dist/types/legacy-replacements/index.d.ts +10 -0
  198. package/package.json +16 -7
  199. package/src/cmem/ActivityControl/ActivityControlTypes.ts +3 -1
  200. package/src/cmem/ActivityControl/ActivityControlWidget.stories.tsx +98 -0
  201. package/src/cmem/ActivityControl/ActivityControlWidget.tsx +131 -89
  202. package/src/cmem/ActivityControl/SilkActivityControl.tsx +178 -120
  203. package/src/cmem/ActivityControl/index.ts +3 -0
  204. package/src/cmem/ContentBlobToggler/index.ts +2 -0
  205. package/src/cmem/_index.scss +6 -0
  206. package/src/cmem/index.ts +10 -23
  207. package/src/cmem/react-flow/ReactFlow/ReactFlow.stories.tsx +222 -0
  208. package/src/cmem/react-flow/ReactFlow/ReactFlow.tsx +40 -0
  209. package/src/cmem/react-flow/_edges.scss +23 -0
  210. package/src/cmem/react-flow/_handles.scss +34 -0
  211. package/src/cmem/react-flow/_index.scss +5 -0
  212. package/src/cmem/react-flow/_minimap.scss +33 -0
  213. package/src/cmem/react-flow/_nodes.scss +60 -0
  214. package/src/cmem/react-flow/configuration/_colors-graph.module.scss +35 -0
  215. package/src/cmem/react-flow/configuration/_colors-linking.module.scss +29 -0
  216. package/src/cmem/react-flow/configuration/_colors-workflow.module.scss +22 -0
  217. package/src/cmem/react-flow/configuration/_colors.scss +3 -0
  218. package/src/cmem/react-flow/configuration/graph.ts +29 -0
  219. package/src/cmem/react-flow/configuration/linking.ts +28 -0
  220. package/src/cmem/react-flow/configuration/unspecified.ts +13 -0
  221. package/src/cmem/react-flow/configuration/workflow.ts +25 -0
  222. package/src/components/AutoSuggestion/AutoSuggestion.scss +100 -0
  223. package/src/components/AutoSuggestion/AutoSuggestion.tsx +447 -0
  224. package/src/components/AutoSuggestion/AutoSuggestionList.tsx +170 -0
  225. package/src/components/AutoSuggestion/SingleLineCodeEditor.tsx +97 -0
  226. package/src/components/AutoSuggestion/tests/AutoSuggestion.test.tsx +37 -0
  227. package/src/components/AutoSuggestion/tests/AutoSuggestionList.test.tsx +124 -0
  228. package/src/components/AutoSuggestion/tests/SingleLineCodeEditor.test.tsx +55 -0
  229. package/src/components/AutocompleteField/AutoCompleteField.tsx +19 -19
  230. package/src/components/AutocompleteField/autoCompleteFieldUtils.tsx +2 -1
  231. package/src/components/Button/Button.tsx +3 -2
  232. package/src/components/ContextOverlay/ContextMenu.tsx +8 -2
  233. package/src/components/Dialog/Modal.tsx +9 -2
  234. package/src/components/Dialog/SimpleDialog.tsx +2 -0
  235. package/src/components/Icon/Icon.tsx +4 -4
  236. package/src/components/Icon/IconButton.tsx +1 -1
  237. package/src/components/Icon/canonicalIconNames.tsx +39 -2
  238. package/src/components/MultiSelect/MultiSelect.stories.tsx +63 -0
  239. package/src/components/MultiSelect/MultiSelect.tsx +370 -0
  240. package/src/components/Tabs/Tab.tsx +112 -0
  241. package/src/components/Tabs/TabTitle.tsx +71 -0
  242. package/src/components/Tabs/Tabs.tsx +26 -90
  243. package/src/components/Tabs/stories/Tab.stories.tsx +65 -0
  244. package/src/components/Tabs/stories/TabTitle.stories.tsx +35 -0
  245. package/src/components/Tabs/stories/Tabs.stories.tsx +98 -0
  246. package/src/components/Tabs/tabs.scss +11 -4
  247. package/src/components/Tag/Tag.tsx +10 -3
  248. package/src/components/Tag/tag.scss +1 -1
  249. package/src/components/TextField/TextField.tsx +1 -1
  250. package/src/configuration/_variables.scss +3 -3
  251. package/src/extensions/react-flow/_config.scss +2 -2
  252. package/src/extensions/react-flow/edges/_edges.scss +3 -28
  253. package/src/extensions/react-flow/edges/utils.ts +139 -4
  254. package/src/extensions/react-flow/handles/_handles.scss +4 -58
  255. package/src/extensions/react-flow/minimap/_minimap.scss +0 -45
  256. package/src/extensions/react-flow/nodes/NodeContent.tsx +134 -133
  257. package/src/extensions/react-flow/nodes/NodeContentExtension.tsx +11 -10
  258. package/src/extensions/react-flow/nodes/NodeDefault.tsx +2 -2
  259. package/src/extensions/react-flow/nodes/NodeTools.tsx +2 -1
  260. package/src/extensions/react-flow/nodes/_nodes.scss +31 -185
  261. package/src/extensions/react-flow/nodes/{NodeContent.stories.tsx → stories/NodeContent.stories.tsx} +4 -4
  262. package/src/extensions/react-flow/nodes/{NodeContentExtension.stories.tsx → stories/NodeContentExtension.stories.tsx} +4 -4
  263. package/src/extensions/react-flow/nodes/{NodeDefault.stories.tsx → stories/NodeDefault.stories.tsx} +5 -4
  264. package/src/index.scss +1 -0
  265. package/src/index.ts +16 -1
  266. package/src/legacy-replacements/Tabs/Tabs.stories.tsx +46 -0
  267. package/src/legacy-replacements/Tabs/Tabs.tsx +84 -0
  268. package/src/legacy-replacements/index.ts +11 -0
  269. package/src/test/setupTests.js +19 -0
@@ -1,24 +1,23 @@
1
- import {TestableComponent} from "../../components/interfaces";
2
- import {
3
- ActivityControlWidget,
4
- IActivityAction
5
- } from "./ActivityControlWidget";
6
- import React, {useEffect, useState} from "react";
7
- import {IActivityStatus} from "./ActivityControlTypes";
8
- import {Intent} from "@blueprintjs/core/src/common/intent";
9
- import {ActivityExecutionErrorReportModal} from "./ActivityExecutionErrorReportModal";
10
- import {Spacing} from "../../index";
11
- import {
12
- ElapsedDateTimeDisplay,
13
- TimeUnits
14
- } from "../DateTimeDisplay/ElapsedDateTimeDisplay";
1
+ import { TestableComponent } from "../../components/interfaces";
2
+ import { ActivityControlWidget, IActivityAction } from "./ActivityControlWidget";
3
+ import React, { useEffect, useState } from "react";
4
+ import {ConcreteActivityStatus, IActivityStatus} from "./ActivityControlTypes";
5
+ import { Intent } from "@blueprintjs/core/src/common/intent";
6
+ import { ActivityExecutionErrorReportModal } from "./ActivityExecutionErrorReportModal";
7
+ import { Icon, Spacing } from "../../";
8
+ import { ElapsedDateTimeDisplay, TimeUnits } from "../DateTimeDisplay/ElapsedDateTimeDisplay";
9
+ import { IntentTypes } from "../../common/Intent";
15
10
 
16
11
  const progressBreakpointIndetermination = 10;
17
12
  const progressBreakpointAnimation = 99;
18
13
 
19
14
  interface SilkActivityControlProps extends TestableComponent {
20
15
  // The label of this activity
21
- label: string;
16
+ label: string | JSX.Element;
17
+ /**
18
+ * To add tags in addition to the widget status description
19
+ */
20
+ tags?: JSX.Element;
22
21
  // Initial state
23
22
  initialStatus?: IActivityStatus;
24
23
  // Register a function in order to receive callbacks
@@ -55,6 +54,8 @@ interface SilkActivityControlProps extends TestableComponent {
55
54
  };
56
55
  // configure how the widget is displayed
57
56
  layoutConfig?: IActivityControlLayoutProps;
57
+ /** Configures when the status message should be hidden, e.g. because it is uninteresting. */
58
+ hideMessageOnStatus?: (concreteStatus: ConcreteActivityStatus | undefined) => boolean
58
59
  }
59
60
 
60
61
  export interface IActivityControlLayoutProps {
@@ -68,7 +69,12 @@ export interface IActivityControlLayoutProps {
68
69
  visualization?: "none" | "progressbar" | "spinner";
69
70
  }
70
71
 
71
- const defaultLayout: IActivityControlLayoutProps = { small: false, border: false, canShrink: false, visualization: "spinner"};
72
+ const defaultLayout: IActivityControlLayoutProps = {
73
+ small: false,
74
+ border: false,
75
+ canShrink: false,
76
+ visualization: "spinner",
77
+ };
72
78
 
73
79
  interface IErrorReportAction {
74
80
  // The title of the error report modal
@@ -117,29 +123,36 @@ interface IStacktrace {
117
123
  cause?: IStacktrace;
118
124
  }
119
125
 
120
- export type ActivityControlTranslationKeys = "startActivity" | "stopActivity" | "reloadActivity" | "showErrorReport"
126
+ export type ActivityControlTranslationKeys = "startActivity" | "stopActivity" | "reloadActivity" | "showErrorReport";
121
127
 
122
- export type ActivityAction = "start" | "cancel" | "restart"
128
+ export type ActivityAction = "start" | "cancel" | "restart";
123
129
 
124
130
  /** Silk activity control. */
125
- export function SilkActivityControl({
126
- label,
127
- initialStatus,
128
- registerForUpdates,
129
- executeActivityAction,
130
- showReloadAction,
131
- showStartAction,
132
- viewValueAction,
133
- showStopAction,
134
- failureReportAction,
135
- unregisterFromUpdates,
136
- translate,
137
- elapsedTimeOfLastStart,
138
- layoutConfig = defaultLayout,
139
- ...props
140
- }: SilkActivityControlProps) {
141
- const [activityStatus, setActivityStatus] = useState<IActivityStatus | undefined>(initialStatus)
142
- const [errorReport, setErrorReport] = useState<string | IActivityExecutionReport | undefined>(undefined)
131
+ export function SilkActivityControl(props: SilkActivityControlProps) {
132
+ const { widget } = useSilkActivityControl(props);
133
+ return widget;
134
+ }
135
+
136
+ export function useSilkActivityControl({
137
+ label,
138
+ initialStatus,
139
+ registerForUpdates,
140
+ executeActivityAction,
141
+ showReloadAction,
142
+ showStartAction,
143
+ viewValueAction,
144
+ showStopAction,
145
+ failureReportAction,
146
+ unregisterFromUpdates,
147
+ translate,
148
+ elapsedTimeOfLastStart,
149
+ tags,
150
+ layoutConfig = defaultLayout,
151
+ hideMessageOnStatus = () => false,
152
+ ...props
153
+ }: SilkActivityControlProps) {
154
+ const [activityStatus, setActivityStatus] = useState<IActivityStatus | undefined>(initialStatus);
155
+ const [errorReport, setErrorReport] = useState<string | IActivityExecutionReport | undefined>(undefined);
143
156
 
144
157
  // Register update function
145
158
  useEffect(() => {
@@ -151,153 +164,198 @@ export function SilkActivityControl({
151
164
  },
152
165
  // eslint-disable-next-line react-hooks/exhaustive-deps
153
166
  []
154
- )
167
+ );
155
168
 
156
169
  // Create activity actions
157
- const actions: IActivityAction[] = []
170
+ const actions: IActivityAction[] = [];
158
171
 
159
- if(failureReportAction && activityStatus?.failed && activityStatus.concreteStatus !== "Cancelled") {
172
+ if (failureReportAction && activityStatus?.failed && activityStatus.concreteStatus !== "Cancelled") {
160
173
  actions.push({
161
174
  "data-test-id": "activity-show-error-report",
162
175
  icon: "artefact-report",
163
176
  action: () => showErrorReport(failureReportAction),
164
177
  tooltip: translate("showErrorReport"),
165
- hasStateWarning: true
166
- })
178
+ hasStateWarning: true,
179
+ });
167
180
  }
168
181
 
169
- if(showStartAction) {
182
+ if (showStartAction) {
170
183
  actions.push({
171
184
  "data-test-id": "activity-start-activity",
172
185
  icon: "item-start",
173
186
  action: () => executeActivityAction("start"),
174
187
  tooltip: translate("startActivity"),
175
- disabled: activityStatus?.isRunning === true
176
- })
188
+ disabled: activityStatus?.isRunning === true,
189
+ });
177
190
  }
178
191
 
179
- if(showReloadAction) {
192
+ if (showReloadAction) {
180
193
  actions.push({
181
194
  "data-test-id": "activity-reload-activity",
182
195
  icon: "item-reload",
183
196
  action: () => executeActivityAction("restart"),
184
197
  tooltip: translate("reloadActivity"),
185
- disabled: activityStatus?.isRunning === true
186
- })
198
+ disabled: activityStatus?.isRunning === true,
199
+ });
187
200
  }
188
201
 
189
- if(showStopAction) {
202
+ if (showStopAction) {
190
203
  actions.push({
191
204
  "data-test-id": "activity-stop-activity",
192
205
  icon: "item-stop",
193
206
  action: () => executeActivityAction("cancel"),
194
207
  tooltip: translate("stopActivity"),
195
- disabled: activityStatus?.isRunning === false
196
- })
208
+ disabled: activityStatus?.isRunning === false,
209
+ });
197
210
  }
198
211
 
199
- if(viewValueAction && activityStatus?.concreteStatus !== "Not executed") {
200
- const action: () => any = typeof viewValueAction.action === "string" ? () => {
201
- window.open(viewValueAction.action as string, "_blank")
202
- } : viewValueAction.action
212
+ if (viewValueAction && activityStatus?.concreteStatus !== "Not executed") {
213
+ const action: () => any =
214
+ typeof viewValueAction.action === "string"
215
+ ? () => {
216
+ window.open(viewValueAction.action as string, "_blank");
217
+ }
218
+ : viewValueAction.action;
203
219
  actions.push({
204
220
  "data-test-id": "activity-view-data",
205
221
  icon: "artefact-rawdata",
206
222
  action,
207
- tooltip: viewValueAction.tooltip
208
- })
223
+ tooltip: viewValueAction.tooltip,
224
+ });
209
225
  }
210
226
 
211
227
  const showErrorReport = async (action: IErrorReportAction) => {
212
- const errorReport = await action.fetchErrorReport(action.renderMarkdown)
213
- setErrorReport(errorReport)
214
- }
228
+ const errorReport = await action.fetchErrorReport(action.renderMarkdown);
229
+ setErrorReport(errorReport);
230
+ };
215
231
 
216
232
  const closeErrorReport = () => {
217
- setErrorReport(undefined)
218
- }
233
+ setErrorReport(undefined);
234
+ };
219
235
 
220
- const activityControlLabel = activityStatus?.startTime && elapsedTimeOfLastStart ? <>
221
- {label}
222
- <Spacing vertical={true} size={"tiny"} />
223
- <ElapsedDateTimeDisplay
224
- dateTime={activityStatus.startTime}
225
- prefix={elapsedTimeOfLastStart.prefix}
226
- suffix={elapsedTimeOfLastStart.suffix}
227
- translateUnits={elapsedTimeOfLastStart.translate}
228
- />
229
- </> : label
236
+ const activityControlLabel =
237
+ activityStatus?.startTime && elapsedTimeOfLastStart ? (
238
+ <>
239
+ {label}
240
+ <Spacing vertical={true} size="tiny" />
241
+ <ElapsedDateTimeDisplay
242
+ dateTime={activityStatus.startTime}
243
+ prefix={elapsedTimeOfLastStart.prefix}
244
+ suffix={elapsedTimeOfLastStart.suffix}
245
+ translateUnits={elapsedTimeOfLastStart.translate}
246
+ />
247
+ </>
248
+ ) : (
249
+ <>{label}</>
250
+ );
230
251
 
231
- const {visualization, ...otherLayoutConfig} = layoutConfig;
252
+ const { visualization, ...otherLayoutConfig } = layoutConfig;
232
253
  let visualizationProps = {}; // visualization==="none" or undefined
233
254
  const runningProgress = activityStatus && activityStatus.isRunning;
234
255
  const waitingProgress = activityStatus && activityStatus.concreteStatus === "Waiting";
235
- const animateProgress = activityStatus && activityStatus.progress > 0 && activityStatus.progress < progressBreakpointAnimation;
256
+ const animateProgress =
257
+ activityStatus && activityStatus.progress > 0 && activityStatus.progress < progressBreakpointAnimation;
236
258
  const indeterminateProgress = activityStatus && activityStatus.progress < progressBreakpointIndetermination;
259
+ const intent = activityStatus ? calcIntent(activityStatus) : "none";
237
260
 
238
261
  if (visualization === "progressbar") {
239
262
  visualizationProps = {
240
263
  progressBar: {
241
264
  animate: waitingProgress || (runningProgress && animateProgress),
242
265
  stripes: waitingProgress || (runningProgress && animateProgress),
243
- value: (waitingProgress || (runningProgress && indeterminateProgress)) ? undefined : ((activityStatus && activityStatus.progress > 0) ? (activityStatus.progress / 100) : 0),
244
- intent: activityStatus ? calcIntent(activityStatus) : "none",
245
- }
246
- }
247
- };
266
+ value:
267
+ waitingProgress || (runningProgress && indeterminateProgress)
268
+ ? undefined
269
+ : activityStatus && activityStatus.progress > 0
270
+ ? activityStatus.progress / 100
271
+ : 0,
272
+ intent,
273
+ },
274
+ };
275
+ }
248
276
  if (visualization === "spinner") {
249
277
  visualizationProps = {
250
278
  progressSpinner: {
251
- value: (waitingProgress || (runningProgress && indeterminateProgress)) ? undefined : ((activityStatus && activityStatus.progress > 0) ? (activityStatus.progress / 100) : 0),
252
- intent: activityStatus ? calcIntent(activityStatus) : "none",
253
- }
254
- }
255
- };
279
+ value:
280
+ waitingProgress || (runningProgress && indeterminateProgress)
281
+ ? undefined
282
+ : activityStatus && activityStatus.progress > 0
283
+ ? activityStatus.progress / 100
284
+ : 0,
285
+ intent,
286
+ },
287
+ };
288
+ }
289
+
290
+ if (activityStatus?.statusName === "Finished" && intent !== "none" && intent !== "primary") {
291
+ visualizationProps = {
292
+ ...visualizationProps,
293
+ progressSpinnerFinishedIcon: <Icon name={[`state-${intent}`]} intent={intent as IntentTypes} />,
294
+ };
295
+ }
256
296
 
257
- return <>
258
- <ActivityControlWidget
259
- key={"activity-control"}
260
- data-test-id={props["data-test-id"]}
261
- label={activityControlLabel}
262
- activityActions={actions}
263
- statusMessage={activityStatus?.message}
264
- {...visualizationProps}
265
- {...otherLayoutConfig}
266
- />
267
- {errorReport && failureReportAction && <ActivityExecutionErrorReportModal
268
- title={failureReportAction.title}
269
- key={"error-report-modal"}
270
- closeButtonValue={failureReportAction.closeButtonValue}
271
- downloadButtonValue={failureReportAction.downloadButtonValue}
272
- fetchErrorReport={async () => {
273
- return await failureReportAction.fetchErrorReport(true) as (string | undefined)
274
- }}
275
- report={failureReportAction.renderReport(errorReport)}
276
- onDiscard={closeErrorReport}
277
- />}
278
- </>
297
+ const widget = (
298
+ <>
299
+ <ActivityControlWidget
300
+ key={"activity-control"}
301
+ tags={tags}
302
+ data-test-id={props["data-test-id"]}
303
+ label={activityControlLabel}
304
+ activityActions={actions}
305
+ statusMessage={hideMessageOnStatus(activityStatus?.concreteStatus) ? undefined : activityStatus?.message}
306
+ {...visualizationProps}
307
+ {...otherLayoutConfig}
308
+ />
309
+ {errorReport && failureReportAction && (
310
+ <ActivityExecutionErrorReportModal
311
+ title={failureReportAction.title}
312
+ key={"error-report-modal"}
313
+ closeButtonValue={failureReportAction.closeButtonValue}
314
+ downloadButtonValue={failureReportAction.downloadButtonValue}
315
+ fetchErrorReport={async () => {
316
+ return (await failureReportAction.fetchErrorReport(true)) as string | undefined;
317
+ }}
318
+ report={failureReportAction.renderReport(errorReport)}
319
+ onDiscard={closeErrorReport}
320
+ />
321
+ )}
322
+ </>
323
+ );
324
+
325
+ return {
326
+ elapsedDateTime: activityStatus?.startTime && elapsedTimeOfLastStart ? (
327
+ <ElapsedDateTimeDisplay
328
+ dateTime={activityStatus.startTime}
329
+ translateUnits={elapsedTimeOfLastStart.translate}
330
+ />
331
+ ) : (
332
+ <></>
333
+ ),
334
+ intent,
335
+ widget
336
+ } as const;
279
337
  }
280
338
 
281
- const calcIntent = (activityStatus: IActivityStatus): Intent => {
282
- const concreteStatus = activityStatus.concreteStatus
283
- let intent: Intent
284
- switch(concreteStatus) {
339
+ export const calcIntent = (activityStatus: IActivityStatus): Intent => {
340
+ const concreteStatus = activityStatus.concreteStatus;
341
+ let intent: Intent;
342
+ switch (concreteStatus) {
285
343
  case "Running":
286
344
  case "Successful":
287
- intent = "success"
288
- break
345
+ intent = "success";
346
+ break;
289
347
  case "Cancelled":
290
348
  case "Canceling":
291
- intent = "warning"
292
- break
349
+ intent = "warning";
350
+ break;
293
351
  case "Failed":
294
- intent = "danger"
295
- break
352
+ intent = "danger";
353
+ break;
296
354
  case "Waiting":
297
- intent = "none" // TODO: This is 100% yellow in the old activity control
298
- break
355
+ intent = "none"; // TODO: This is 100% yellow in the old activity control
356
+ break;
299
357
  default:
300
- intent = "none"
358
+ intent = "none";
301
359
  }
302
- return intent
303
- }
360
+ return intent;
361
+ };
@@ -0,0 +1,3 @@
1
+ export { ActivityControlWidget } from "./ActivityControlWidget";
2
+ export { ActivityExecutionErrorReportModal } from "./ActivityExecutionErrorReportModal";
3
+ export { SilkActivityControl, useSilkActivityControl } from "./SilkActivityControl";
@@ -0,0 +1,2 @@
1
+ export { ContentBlobToggler } from "./ContentBlobToggler";
2
+ export { StringPreviewContentBlobToggler } from "./StringPreviewContentBlobToggler";
@@ -1,2 +1,8 @@
1
1
  @import "./ActivityControl/activitycontrol";
2
2
  @import "./markdown/markdown";
3
+ @import "./react-flow";
4
+
5
+ // TODO : CMEM-3873 temp, where to move?
6
+ div.#{$eccgui}-container--highlighted {
7
+ background: rgba(61, 60, 64, 0.09);
8
+ }
package/src/cmem/index.ts CHANGED
@@ -1,32 +1,19 @@
1
- import { ActivityControlWidget } from "./ActivityControl/ActivityControlWidget";
2
- import { ActivityExecutionErrorReportModal } from "./ActivityControl/ActivityExecutionErrorReportModal";
3
- import {
4
- ActivityAction,
5
- SilkActivityControl,
6
- IActivityControlLayoutProps,
7
- } from "./ActivityControl/SilkActivityControl";
1
+ import { ActivityAction, IActivityControlLayoutProps } from "./ActivityControl/SilkActivityControl";
8
2
  import { IActivityStatus } from "./ActivityControl/ActivityControlTypes";
9
- import { ContentBlobToggler } from "./ContentBlobToggler/ContentBlobToggler";
10
- import {
11
- ElapsedDateTimeDisplay,
12
- TimeUnits
13
- } from "./DateTimeDisplay/ElapsedDateTimeDisplay";
14
- import { Markdown } from "./markdown/Markdown";
15
- import {
16
- StringPreviewContentBlobToggler,
17
- firstNonEmptyLine,
18
- } from "./ContentBlobToggler/StringPreviewContentBlobToggler";
3
+ import { TimeUnits } from "./DateTimeDisplay/ElapsedDateTimeDisplay";
19
4
 
20
5
  export {
21
6
  ActivityControlWidget,
22
7
  ActivityExecutionErrorReportModal,
23
- ContentBlobToggler,
24
- Markdown,
25
- StringPreviewContentBlobToggler,
26
8
  SilkActivityControl,
27
- ElapsedDateTimeDisplay,
28
- firstNonEmptyLine,
29
- }
9
+ useSilkActivityControl,
10
+ } from "./ActivityControl";
11
+ export { ContentBlobToggler, StringPreviewContentBlobToggler } from "./ContentBlobToggler";
12
+ export { firstNonEmptyLine } from "./ContentBlobToggler/StringPreviewContentBlobToggler";
13
+ export { ElapsedDateTimeDisplay } from "./DateTimeDisplay/ElapsedDateTimeDisplay";
14
+ export { Markdown } from "./markdown/Markdown";
15
+ export { ReactFlow } from "./react-flow/ReactFlow/ReactFlow";
16
+
30
17
  export type {
31
18
  IActivityStatus,
32
19
  ActivityAction,