@eccenca/gui-elements 23.0.0-rc.0 → 23.0.0-rc.3-unofficial.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 (339) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +1 -11
  3. package/dist/cjs/cmem/ActivityControl/ActivityControlWidget.js +4 -10
  4. package/dist/cjs/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
  5. package/dist/cjs/cmem/index.js +3 -1
  6. package/dist/cjs/cmem/index.js.map +1 -1
  7. package/dist/cjs/cmem/react-flow/ReactFlow/ReactFlow.js +9 -2
  8. package/dist/cjs/cmem/react-flow/ReactFlow/ReactFlow.js.map +1 -1
  9. package/dist/cjs/cmem/react-flow/StickyNoteModal/StickyNoteModal.js +64 -0
  10. package/dist/cjs/cmem/react-flow/StickyNoteModal/StickyNoteModal.js.map +1 -0
  11. package/dist/cjs/cmem/react-flow/configuration/customLabel.js +13 -0
  12. package/dist/cjs/cmem/react-flow/configuration/customLabel.js.map +1 -0
  13. package/dist/cjs/cmem/react-flow/configuration/graph.js.map +1 -1
  14. package/dist/cjs/cmem/react-flow/configuration/inverseEdge.js +13 -0
  15. package/dist/cjs/cmem/react-flow/configuration/inverseEdge.js.map +1 -0
  16. package/dist/cjs/cmem/react-flow/configuration/linking.js +2 -0
  17. package/dist/cjs/cmem/react-flow/configuration/linking.js.map +1 -1
  18. package/dist/cjs/cmem/react-flow/configuration/typing.js +35 -0
  19. package/dist/cjs/cmem/react-flow/configuration/typing.js.map +1 -0
  20. package/dist/cjs/cmem/react-flow/configuration/workflow.js +2 -0
  21. package/dist/cjs/cmem/react-flow/configuration/workflow.js.map +1 -1
  22. package/dist/cjs/cmem/react-flow/nodes/StickyNoteNode.js +42 -0
  23. package/dist/cjs/cmem/react-flow/nodes/StickyNoteNode.js.map +1 -0
  24. package/dist/cjs/common/utils/CssCustomProperties.js +114 -0
  25. package/dist/cjs/common/utils/CssCustomProperties.js.map +1 -0
  26. package/dist/cjs/common/utils/getColorConfiguration.js +21 -0
  27. package/dist/cjs/common/utils/getColorConfiguration.js.map +1 -0
  28. package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js +19 -19
  29. package/dist/cjs/components/AutoSuggestion/AutoSuggestion.js.map +1 -1
  30. package/dist/cjs/components/AutoSuggestion/AutoSuggestionList.js +4 -12
  31. package/dist/cjs/components/AutoSuggestion/AutoSuggestionList.js.map +1 -1
  32. package/dist/cjs/components/AutocompleteField/AutoCompleteField.js +15 -6
  33. package/dist/cjs/components/AutocompleteField/AutoCompleteField.js.map +1 -1
  34. package/dist/cjs/components/Button/Button.js +2 -2
  35. package/dist/cjs/components/Button/Button.js.map +1 -1
  36. package/dist/cjs/components/ContextOverlay/ContextMenu.js +6 -5
  37. package/dist/cjs/components/ContextOverlay/ContextMenu.js.map +1 -1
  38. package/dist/cjs/components/ContextOverlay/ContextOverlay.js +6 -8
  39. package/dist/cjs/components/ContextOverlay/ContextOverlay.js.map +1 -1
  40. package/dist/cjs/components/Dialog/SimpleDialog.js +9 -4
  41. package/dist/cjs/components/Dialog/SimpleDialog.js.map +1 -1
  42. package/dist/cjs/components/Form/FieldItem.js +2 -2
  43. package/dist/cjs/components/Form/FieldItem.js.map +1 -1
  44. package/dist/cjs/components/Icon/Icon.js +2 -2
  45. package/dist/cjs/components/Icon/Icon.js.map +1 -1
  46. package/dist/cjs/components/Icon/IconButton.js +2 -2
  47. package/dist/cjs/components/Icon/IconButton.js.map +1 -1
  48. package/dist/cjs/components/Icon/canonicalIconNames.js +134 -114
  49. package/dist/cjs/components/Icon/canonicalIconNames.js.map +1 -1
  50. package/dist/cjs/components/Iframe/IframeModal.js +2 -6
  51. package/dist/cjs/components/Iframe/IframeModal.js.map +1 -1
  52. package/dist/cjs/components/Label/Label.js +6 -6
  53. package/dist/cjs/components/Label/Label.js.map +1 -1
  54. package/dist/cjs/components/Menu/MenuItem.js +2 -5
  55. package/dist/cjs/components/Menu/MenuItem.js.map +1 -1
  56. package/dist/cjs/components/MultiSelect/MultiSelect.js +8 -10
  57. package/dist/cjs/components/MultiSelect/MultiSelect.js.map +1 -1
  58. package/dist/cjs/components/Select/Select.js +29 -0
  59. package/dist/cjs/components/Select/Select.js.map +1 -0
  60. package/dist/cjs/components/Tabs/TabTitle.js +2 -4
  61. package/dist/cjs/components/Tabs/TabTitle.js.map +1 -1
  62. package/dist/cjs/components/Tag/Tag.js +2 -1
  63. package/dist/cjs/components/Tag/Tag.js.map +1 -1
  64. package/dist/cjs/components/Tooltip/Tooltip.js +7 -4
  65. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  66. package/dist/cjs/extensions/codemirror/CodeMirror.js +3 -3
  67. package/dist/cjs/extensions/codemirror/CodeMirror.js.map +1 -1
  68. package/dist/cjs/extensions/react-flow/edges/EdgeDefault.js +5 -5
  69. package/dist/cjs/extensions/react-flow/edges/EdgeDefault.js.map +1 -1
  70. package/dist/cjs/extensions/react-flow/edges/EdgeTools.js +2 -1
  71. package/dist/cjs/extensions/react-flow/edges/EdgeTools.js.map +1 -1
  72. package/dist/cjs/extensions/react-flow/handles/HandleContent.js +1 -1
  73. package/dist/cjs/extensions/react-flow/handles/HandleContent.js.map +1 -1
  74. package/dist/cjs/extensions/react-flow/index.js +10 -1
  75. package/dist/cjs/extensions/react-flow/index.js.map +1 -1
  76. package/dist/cjs/extensions/react-flow/markers/MarkerArrowClosedInverse.js +13 -0
  77. package/dist/cjs/extensions/react-flow/markers/MarkerArrowClosedInverse.js.map +1 -0
  78. package/dist/cjs/extensions/react-flow/markers/ReactFlowMarkers.js +15 -0
  79. package/dist/cjs/extensions/react-flow/markers/ReactFlowMarkers.js.map +1 -0
  80. package/dist/cjs/extensions/react-flow/minimap/MiniMap.js +3 -2
  81. package/dist/cjs/extensions/react-flow/minimap/MiniMap.js.map +1 -1
  82. package/dist/cjs/extensions/react-flow/minimap/utils.js +12 -6
  83. package/dist/cjs/extensions/react-flow/minimap/utils.js.map +1 -1
  84. package/dist/cjs/extensions/react-flow/nodes/NodeContent.js +74 -25
  85. package/dist/cjs/extensions/react-flow/nodes/NodeContent.js.map +1 -1
  86. package/dist/cjs/extensions/react-flow/nodes/NodeContentExtension.js +10 -6
  87. package/dist/cjs/extensions/react-flow/nodes/NodeContentExtension.js.map +1 -1
  88. package/dist/cjs/extensions/react-flow/nodes/NodeTools.js +1 -3
  89. package/dist/cjs/extensions/react-flow/nodes/NodeTools.js.map +1 -1
  90. package/dist/cjs/extensions/react-flow/nodes/nodeUtils.js +49 -0
  91. package/dist/cjs/extensions/react-flow/nodes/nodeUtils.js.map +1 -0
  92. package/dist/cjs/index.js +3 -2
  93. package/dist/cjs/index.js.map +1 -1
  94. package/dist/cjs/legacy-replacements/Tabs/Tabs.js +1 -1
  95. package/dist/cjs/legacy-replacements/Tabs/Tabs.js.map +1 -1
  96. package/dist/cjs/legacy-replacements/TextField/TextField.js +5 -8
  97. package/dist/cjs/legacy-replacements/TextField/TextField.js.map +1 -1
  98. package/dist/esm/cmem/ActivityControl/ActivityControlWidget.js +4 -10
  99. package/dist/esm/cmem/ActivityControl/ActivityControlWidget.js.map +1 -1
  100. package/dist/esm/cmem/index.js +1 -0
  101. package/dist/esm/cmem/index.js.map +1 -1
  102. package/dist/esm/cmem/react-flow/ReactFlow/ReactFlow.js +9 -2
  103. package/dist/esm/cmem/react-flow/ReactFlow/ReactFlow.js.map +1 -1
  104. package/dist/esm/cmem/react-flow/StickyNoteModal/StickyNoteModal.js +89 -0
  105. package/dist/esm/cmem/react-flow/StickyNoteModal/StickyNoteModal.js.map +1 -0
  106. package/dist/esm/cmem/react-flow/configuration/customLabel.js +10 -0
  107. package/dist/esm/cmem/react-flow/configuration/customLabel.js.map +1 -0
  108. package/dist/esm/cmem/react-flow/configuration/graph.js +1 -1
  109. package/dist/esm/cmem/react-flow/configuration/graph.js.map +1 -1
  110. package/dist/esm/cmem/react-flow/configuration/inverseEdge.js +10 -0
  111. package/dist/esm/cmem/react-flow/configuration/inverseEdge.js.map +1 -0
  112. package/dist/esm/cmem/react-flow/configuration/linking.js +3 -1
  113. package/dist/esm/cmem/react-flow/configuration/linking.js.map +1 -1
  114. package/dist/esm/cmem/react-flow/configuration/typing.js +32 -0
  115. package/dist/esm/cmem/react-flow/configuration/typing.js.map +1 -0
  116. package/dist/esm/cmem/react-flow/configuration/workflow.js +3 -1
  117. package/dist/esm/cmem/react-flow/configuration/workflow.js.map +1 -1
  118. package/dist/esm/cmem/react-flow/nodes/StickyNoteNode.js +31 -0
  119. package/dist/esm/cmem/react-flow/nodes/StickyNoteNode.js.map +1 -0
  120. package/dist/esm/common/utils/CssCustomProperties.js +154 -0
  121. package/dist/esm/common/utils/CssCustomProperties.js.map +1 -0
  122. package/dist/esm/common/utils/getColorConfiguration.js +16 -0
  123. package/dist/esm/common/utils/getColorConfiguration.js.map +1 -0
  124. package/dist/esm/components/AutoSuggestion/AutoSuggestion.js +23 -21
  125. package/dist/esm/components/AutoSuggestion/AutoSuggestion.js.map +1 -1
  126. package/dist/esm/components/AutoSuggestion/AutoSuggestionList.js +4 -12
  127. package/dist/esm/components/AutoSuggestion/AutoSuggestionList.js.map +1 -1
  128. package/dist/esm/components/AutocompleteField/AutoCompleteField.js +32 -23
  129. package/dist/esm/components/AutocompleteField/AutoCompleteField.js.map +1 -1
  130. package/dist/esm/components/Button/Button.js +2 -2
  131. package/dist/esm/components/Button/Button.js.map +1 -1
  132. package/dist/esm/components/ContextOverlay/ContextMenu.js +6 -5
  133. package/dist/esm/components/ContextOverlay/ContextMenu.js.map +1 -1
  134. package/dist/esm/components/ContextOverlay/ContextOverlay.js +6 -8
  135. package/dist/esm/components/ContextOverlay/ContextOverlay.js.map +1 -1
  136. package/dist/esm/components/Dialog/SimpleDialog.js +25 -4
  137. package/dist/esm/components/Dialog/SimpleDialog.js.map +1 -1
  138. package/dist/esm/components/Form/FieldItem.js +2 -2
  139. package/dist/esm/components/Form/FieldItem.js.map +1 -1
  140. package/dist/esm/components/Icon/Icon.js +2 -2
  141. package/dist/esm/components/Icon/Icon.js.map +1 -1
  142. package/dist/esm/components/Icon/IconButton.js +2 -2
  143. package/dist/esm/components/Icon/IconButton.js.map +1 -1
  144. package/dist/esm/components/Icon/canonicalIconNames.js +134 -114
  145. package/dist/esm/components/Icon/canonicalIconNames.js.map +1 -1
  146. package/dist/esm/components/Iframe/IframeModal.js +2 -22
  147. package/dist/esm/components/Iframe/IframeModal.js.map +1 -1
  148. package/dist/esm/components/Label/Label.js +6 -6
  149. package/dist/esm/components/Label/Label.js.map +1 -1
  150. package/dist/esm/components/Menu/MenuItem.js +2 -5
  151. package/dist/esm/components/Menu/MenuItem.js.map +1 -1
  152. package/dist/esm/components/MultiSelect/MultiSelect.js +5 -7
  153. package/dist/esm/components/MultiSelect/MultiSelect.js.map +1 -1
  154. package/dist/esm/components/Select/Select.js +35 -0
  155. package/dist/esm/components/Select/Select.js.map +1 -0
  156. package/dist/esm/components/Tabs/TabTitle.js +2 -4
  157. package/dist/esm/components/Tabs/TabTitle.js.map +1 -1
  158. package/dist/esm/components/Tag/Tag.js +2 -1
  159. package/dist/esm/components/Tag/Tag.js.map +1 -1
  160. package/dist/esm/components/Tooltip/Tooltip.js +7 -4
  161. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  162. package/dist/esm/extensions/codemirror/CodeMirror.js +3 -3
  163. package/dist/esm/extensions/codemirror/CodeMirror.js.map +1 -1
  164. package/dist/esm/extensions/react-flow/edges/EdgeDefault.js +6 -6
  165. package/dist/esm/extensions/react-flow/edges/EdgeDefault.js.map +1 -1
  166. package/dist/esm/extensions/react-flow/edges/EdgeTools.js +2 -1
  167. package/dist/esm/extensions/react-flow/edges/EdgeTools.js.map +1 -1
  168. package/dist/esm/extensions/react-flow/handles/HandleContent.js +1 -1
  169. package/dist/esm/extensions/react-flow/handles/HandleContent.js.map +1 -1
  170. package/dist/esm/extensions/react-flow/index.js +3 -0
  171. package/dist/esm/extensions/react-flow/index.js.map +1 -1
  172. package/dist/esm/extensions/react-flow/markers/MarkerArrowClosedInverse.js +6 -0
  173. package/dist/esm/extensions/react-flow/markers/MarkerArrowClosedInverse.js.map +1 -0
  174. package/dist/esm/extensions/react-flow/markers/ReactFlowMarkers.js +8 -0
  175. package/dist/esm/extensions/react-flow/markers/ReactFlowMarkers.js.map +1 -0
  176. package/dist/esm/extensions/react-flow/minimap/MiniMap.js +3 -2
  177. package/dist/esm/extensions/react-flow/minimap/MiniMap.js.map +1 -1
  178. package/dist/esm/extensions/react-flow/minimap/utils.js +10 -5
  179. package/dist/esm/extensions/react-flow/minimap/utils.js.map +1 -1
  180. package/dist/esm/extensions/react-flow/nodes/NodeContent.js +76 -27
  181. package/dist/esm/extensions/react-flow/nodes/NodeContent.js.map +1 -1
  182. package/dist/esm/extensions/react-flow/nodes/NodeContentExtension.js +26 -6
  183. package/dist/esm/extensions/react-flow/nodes/NodeContentExtension.js.map +1 -1
  184. package/dist/esm/extensions/react-flow/nodes/NodeTools.js +1 -3
  185. package/dist/esm/extensions/react-flow/nodes/NodeTools.js.map +1 -1
  186. package/dist/esm/extensions/react-flow/nodes/nodeUtils.js +44 -0
  187. package/dist/esm/extensions/react-flow/nodes/nodeUtils.js.map +1 -0
  188. package/dist/esm/index.js +3 -2
  189. package/dist/esm/index.js.map +1 -1
  190. package/dist/esm/legacy-replacements/Tabs/Tabs.js +1 -1
  191. package/dist/esm/legacy-replacements/Tabs/Tabs.js.map +1 -1
  192. package/dist/esm/legacy-replacements/TextField/TextField.js +2 -5
  193. package/dist/esm/legacy-replacements/TextField/TextField.js.map +1 -1
  194. package/dist/types/cmem/index.d.ts +1 -0
  195. package/dist/types/cmem/react-flow/ReactFlow/ReactFlow.d.ts +2 -3
  196. package/dist/types/cmem/react-flow/StickyNoteModal/StickyNoteModal.d.ts +26 -0
  197. package/dist/types/cmem/react-flow/configuration/customLabel.d.ts +8 -0
  198. package/dist/types/cmem/react-flow/configuration/graph.d.ts +3 -8
  199. package/dist/types/cmem/react-flow/configuration/inverseEdge.d.ts +8 -0
  200. package/dist/types/cmem/react-flow/configuration/linking.d.ts +3 -9
  201. package/dist/types/cmem/react-flow/configuration/typing.d.ts +28 -0
  202. package/dist/types/cmem/react-flow/configuration/workflow.d.ts +3 -9
  203. package/dist/types/cmem/react-flow/nodes/StickyNoteNode.d.ts +3 -0
  204. package/dist/types/common/utils/CssCustomProperties.d.ts +28 -0
  205. package/dist/types/common/utils/getColorConfiguration.d.ts +8 -0
  206. package/dist/types/components/AutocompleteField/AutoCompleteField.d.ts +7 -4
  207. package/dist/types/components/Button/Button.d.ts +2 -2
  208. package/dist/types/components/ContextOverlay/ContextMenu.d.ts +37 -3
  209. package/dist/types/components/ContextOverlay/ContextOverlay.d.ts +12 -1
  210. package/dist/types/components/Dialog/SimpleDialog.d.ts +5 -1
  211. package/dist/types/components/Form/FieldItem.d.ts +3 -2
  212. package/dist/types/components/Icon/Icon.d.ts +32 -7
  213. package/dist/types/components/Icon/IconButton.d.ts +21 -7
  214. package/dist/types/components/Icon/canonicalIconNames.d.ts +1 -1
  215. package/dist/types/components/Label/Label.d.ts +30 -2
  216. package/dist/types/components/Menu/MenuItem.d.ts +3 -7
  217. package/dist/types/components/MultiSelect/MultiSelect.d.ts +13 -9
  218. package/dist/types/components/Select/Select.d.ts +22 -0
  219. package/dist/types/components/Tag/Tag.d.ts +5 -1
  220. package/dist/types/components/Tooltip/Tooltip.d.ts +13 -11
  221. package/dist/types/components/interfaces.d.ts +1 -0
  222. package/dist/types/extensions/codemirror/CodeMirror.d.ts +5 -1
  223. package/dist/types/extensions/react-flow/edges/EdgeDefault.d.ts +3 -0
  224. package/dist/types/extensions/react-flow/edges/EdgeTools.d.ts +2 -2
  225. package/dist/types/extensions/react-flow/index.d.ts +3 -0
  226. package/dist/types/extensions/react-flow/markers/MarkerArrowClosedInverse.d.ts +2 -0
  227. package/dist/types/extensions/react-flow/markers/ReactFlowMarkers.d.ts +2 -0
  228. package/dist/types/extensions/react-flow/minimap/MiniMap.d.ts +1 -1
  229. package/dist/types/extensions/react-flow/minimap/utils.d.ts +1 -0
  230. package/dist/types/extensions/react-flow/nodes/NodeContent.d.ts +17 -1
  231. package/dist/types/extensions/react-flow/nodes/NodeContentExtension.d.ts +2 -2
  232. package/dist/types/extensions/react-flow/nodes/NodeTools.d.ts +2 -2
  233. package/dist/types/extensions/react-flow/nodes/nodeUtils.d.ts +14 -0
  234. package/dist/types/index.d.ts +3 -2
  235. package/dist/types/legacy-replacements/Tabs/Tabs.d.ts +1 -1
  236. package/package.json +19 -11
  237. package/scripts/compile-sass.ts +9 -0
  238. package/scripts/fix-cjs-dist +5 -0
  239. package/scripts/fix-esm-dist +6 -0
  240. package/scripts/sassConfig.js +13 -0
  241. package/src/_shame.scss +17 -0
  242. package/src/cmem/ActivityControl/ActivityControlWidget.stories.tsx +2 -2
  243. package/src/cmem/ActivityControl/ActivityControlWidget.tsx +5 -10
  244. package/src/cmem/index.ts +1 -0
  245. package/src/cmem/markdown/markdown.scss +1 -1
  246. package/src/cmem/react-flow/ReactFlow/ReactFlow.stories.tsx +160 -51
  247. package/src/cmem/react-flow/ReactFlow/ReactFlow.tsx +12 -3
  248. package/src/cmem/react-flow/StickyNoteModal/StickyNoteModal.tsx +134 -0
  249. package/src/cmem/react-flow/_index.scss +1 -1
  250. package/src/cmem/react-flow/_minimap.scss +6 -2
  251. package/src/cmem/react-flow/configuration/customLabel.ts +11 -0
  252. package/src/cmem/react-flow/configuration/graph.ts +3 -5
  253. package/src/cmem/react-flow/configuration/inverseEdge.ts +11 -0
  254. package/src/cmem/react-flow/configuration/linking.ts +5 -6
  255. package/src/cmem/react-flow/configuration/typing.ts +30 -0
  256. package/src/cmem/react-flow/configuration/workflow.ts +5 -5
  257. package/src/cmem/react-flow/nodes/StickyNoteNode.tsx +13 -0
  258. package/src/cmem/react-flow/{_nodes.scss → nodes/_colors.scss} +0 -0
  259. package/src/cmem/react-flow/nodes/_index.scss +2 -0
  260. package/src/cmem/react-flow/nodes/_stickynote.scss +72 -0
  261. package/src/common/utils/CssCustomProperties.ts +25 -13
  262. package/src/common/utils/getColorConfiguration.ts +1 -2
  263. package/src/components/Accordion/accordion.scss +11 -11
  264. package/src/components/Application/_header.scss +4 -3
  265. package/src/components/AutoSuggestion/AutoSuggestion.tsx +23 -23
  266. package/src/components/AutoSuggestion/AutoSuggestionList.tsx +15 -17
  267. package/src/components/AutoSuggestion/tests/AutoSuggestionList.test.tsx +1 -1
  268. package/src/components/AutocompleteField/AutoCompleteField.tsx +44 -19
  269. package/src/components/AutocompleteField/autocompletefield.scss +5 -3
  270. package/src/components/AutocompleteField/stories/AutoCompleteField.stories.tsx +75 -0
  271. package/src/components/Button/Button.tsx +3 -3
  272. package/src/components/Button/button.scss +43 -6
  273. package/src/components/Card/card.scss +5 -5
  274. package/src/components/ContextOverlay/ContextMenu.stories.tsx +33 -0
  275. package/src/components/ContextOverlay/ContextMenu.tsx +46 -8
  276. package/src/components/ContextOverlay/ContextOverlay.stories.tsx +148 -0
  277. package/src/components/ContextOverlay/ContextOverlay.tsx +16 -9
  278. package/src/components/ContextOverlay/contextoverlay.scss +17 -5
  279. package/src/components/Dialog/SimpleDialog.tsx +25 -4
  280. package/src/components/Dialog/dialog.scss +10 -8
  281. package/src/components/Form/FieldItem.tsx +4 -4
  282. package/src/components/Form/form.scss +6 -6
  283. package/src/components/Icon/Icon.tsx +33 -18
  284. package/src/components/Icon/IconButton.tsx +24 -19
  285. package/src/components/Icon/canonicalIconNames.tsx +146 -121
  286. package/src/components/Icon/icon.scss +1 -1
  287. package/src/components/Icon/stories/Icon.stories.tsx +52 -0
  288. package/src/components/Icon/stories/IconButton.stories.tsx +27 -0
  289. package/src/components/Iframe/IframeModal.tsx +6 -17
  290. package/src/components/Label/Label.stories.tsx +27 -0
  291. package/src/components/Label/Label.tsx +47 -15
  292. package/src/components/Label/label.scss +2 -2
  293. package/src/components/Menu/MenuItem.tsx +9 -16
  294. package/src/components/Menu/menu.scss +10 -9
  295. package/src/components/MultiSelect/MultiSelect.tsx +30 -18
  296. package/src/components/Notification/notification.scss +3 -1
  297. package/src/components/OverviewItem/overviewitem.scss +8 -8
  298. package/src/components/PropertyValuePair/propertyvalue.scss +9 -7
  299. package/src/components/Select/Select.stories.tsx +35 -0
  300. package/src/components/Select/Select.tsx +38 -0
  301. package/src/components/Select/_select.scss +8 -0
  302. package/src/components/Separation/separation.scss +6 -6
  303. package/src/components/SimpleTable/simpletable.scss +5 -5
  304. package/src/components/Tabs/TabTitle.tsx +2 -4
  305. package/src/components/Tabs/tabs.scss +3 -3
  306. package/src/components/Tag/Tag.tsx +6 -0
  307. package/src/components/Tag/tag.scss +62 -33
  308. package/src/components/TextField/textfield.scss +6 -4
  309. package/src/components/Tooltip/Tooltip.stories.tsx +36 -0
  310. package/src/components/Tooltip/Tooltip.tsx +23 -18
  311. package/src/components/Tooltip/tooltip.scss +7 -7
  312. package/src/components/Typography/typography.scss +5 -4
  313. package/src/components/interfaces.ts +3 -1
  314. package/src/configuration/_variables.scss +11 -9
  315. package/src/extensions/codemirror/CodeMirror.tsx +9 -4
  316. package/src/extensions/react-flow/edges/EdgeDefault.tsx +7 -2
  317. package/src/extensions/react-flow/edges/EdgeTools.tsx +6 -4
  318. package/src/extensions/react-flow/edges/_edges.scss +3 -3
  319. package/src/extensions/react-flow/handles/HandleContent.tsx +0 -1
  320. package/src/extensions/react-flow/handles/_handles.scss +13 -13
  321. package/src/extensions/react-flow/index.ts +3 -0
  322. package/src/extensions/react-flow/markers/MarkerArrowClosedInverse.tsx +25 -0
  323. package/src/extensions/react-flow/markers/ReactFlowMarkers.tsx +13 -0
  324. package/src/extensions/react-flow/minimap/MiniMap.tsx +16 -1
  325. package/src/extensions/react-flow/minimap/_minimap.scss +6 -6
  326. package/src/extensions/react-flow/minimap/utils.ts +8 -3
  327. package/src/extensions/react-flow/nodes/NodeContent.tsx +253 -166
  328. package/src/extensions/react-flow/nodes/NodeContentExtension.tsx +17 -11
  329. package/src/extensions/react-flow/nodes/NodeTools.tsx +10 -7
  330. package/src/extensions/react-flow/nodes/_nodes.scss +44 -12
  331. package/src/extensions/react-flow/nodes/nodeUtils.tsx +53 -0
  332. package/src/extensions/react-flow/nodes/stories/NodeContent.stories.tsx +41 -12
  333. package/src/extensions/react-flow/nodes/stories/NodeContentExtension.stories.tsx +39 -47
  334. package/src/includes/blueprintjs/_variables.scss +4 -2
  335. package/src/includes/carbon-components/_variables.scss +7 -5
  336. package/src/index.scss +9 -5
  337. package/src/index.ts +4 -2
  338. package/src/legacy-replacements/Tabs/Tabs.tsx +3 -1
  339. package/src/legacy-replacements/TextField/TextField.tsx +7 -5
@@ -0,0 +1,75 @@
1
+ import React from "react";
2
+ import {ComponentMeta, ComponentStory} from "@storybook/react";
3
+
4
+ import {AutoCompleteField, IAutoCompleteFieldProps} from "../AutoCompleteField";
5
+ import {extractSearchWords, matchesAllWords} from "../../Typography/Highlighter";
6
+ import {createNewItemRendererFactory} from "../autoCompleteFieldUtils";
7
+
8
+ const AutoCompleteFieldStory: ComponentMeta<typeof AutoCompleteField> = {
9
+ title: "Components/AutoCompleteField",
10
+ component: AutoCompleteField,
11
+ argTypes: {
12
+ },
13
+ }
14
+
15
+ const Template: ComponentStory<typeof AutoCompleteField> = (args) => (
16
+ <AutoCompleteField {...args}></AutoCompleteField>
17
+ );
18
+
19
+ export const Default = Template.bind({});
20
+ export const AdaptQueryAfterSelection = Template.bind({})
21
+ export const AllowReset = Template.bind({})
22
+ export const AllowCustomValues = Template.bind({})
23
+
24
+ // Renders string values as string
25
+ const defaultRenderer = (item: string) => item
26
+
27
+ const defaultArgs: IAutoCompleteFieldProps<string, string> = {
28
+ itemRenderer: (item: string) => `Rendered item: ${item}`,
29
+ itemValueRenderer: (item: string) => `Selected item: ${item}`,
30
+ itemValueString: (item: string) => `Query: ${item}`,
31
+ onSearch: (query: string) => {
32
+ const multiWord = extractSearchWords(query, true)
33
+ return ["search item A", "search element B", "search object C"]
34
+ .filter(word => matchesAllWords(word.toLowerCase(), multiWord))
35
+ },
36
+ onChange: elem => {
37
+ console.log(`Entry '${elem}' selected!`)
38
+ },
39
+ itemValueSelector: defaultRenderer,
40
+ noResultText: "No result"
41
+ }
42
+
43
+ // Changes the search query for the selected item, e.g. when the rendered item text should be different from the query finding this item.
44
+ const adaptQueryAfterSelection: IAutoCompleteFieldProps<string, string> = {
45
+ ...defaultArgs,
46
+ resetQueryToValue: (selectedValue: string) => selectedValue
47
+ }
48
+
49
+ // Allows to reset a selection
50
+ const resetSelection: IAutoCompleteFieldProps<string, string> = {
51
+ ...defaultArgs,
52
+ reset: {
53
+ resetValue: "",
54
+ resetButtonText: "Clear selected value",
55
+ resettableValue: (value: string) => true
56
+ }
57
+ }
58
+
59
+ const allowCustomValues: IAutoCompleteFieldProps<string, string> = {
60
+ ...defaultArgs,
61
+ createNewItem: {
62
+ itemRenderer: createNewItemRendererFactory(
63
+ (query: string) => `Create new item: ${query}`,
64
+ "item-add-artefact"
65
+ ),
66
+ itemFromQuery: item => item,
67
+ }
68
+ }
69
+
70
+ Default.args = defaultArgs;
71
+ AdaptQueryAfterSelection.args = adaptQueryAfterSelection
72
+ AllowReset.args = resetSelection
73
+ AllowCustomValues.args = allowCustomValues
74
+
75
+ export default AutoCompleteFieldStory
@@ -52,7 +52,7 @@ export interface ButtonProps extends React.HTMLAttributes<HTMLElement> {
52
52
  /**
53
53
  * Object with additional properties for the tooltip.
54
54
  */
55
- tooltipProperties?: Partial<Omit<TooltipProps, "content" | "children">>;
55
+ tooltipProps?: Partial<Omit<TooltipProps, "content" | "children">>;
56
56
  /**
57
57
  * If an URL is set then the button is included as HTML anchor element instead of a button form element.
58
58
  */
@@ -79,7 +79,7 @@ function Button({
79
79
  icon,
80
80
  rightIcon,
81
81
  tooltip = null,
82
- tooltipProperties,
82
+ tooltipProps,
83
83
  ...restProps
84
84
  }: ButtonProps & AnchorOrButtonProps) {
85
85
  let intention;
@@ -117,7 +117,7 @@ function Button({
117
117
  );
118
118
 
119
119
  return (tooltip && !restProps.loading) ? (
120
- <Tooltip content={tooltip} {...tooltipProperties}>
120
+ <Tooltip content={tooltip} {...tooltipProps}>
121
121
  <span>{button}</span>
122
122
  </Tooltip>
123
123
  ) : (
@@ -1,11 +1,14 @@
1
+ @use "sass:color";
2
+ @use "sass:map";
3
+
1
4
  $button-height: $pt-button-height;
2
5
  $button-border-width: 1px; // !default;
3
- $button-padding: ($pt-grid-size / 2) $pt-grid-size; // !default;
6
+ $button-padding: ($pt-grid-size * 0.5) $pt-grid-size; // !default;
4
7
  $button-border-radius: $pt-border-radius;
5
8
  // $button-padding-small: 0 ($pt-grid-size * 0.7) !default;
6
- // $button-padding-large: ($pt-grid-size / 2) ($pt-grid-size * 1.5) !default;
7
- // $button-icon-spacing: ($pt-button-height - $pt-icon-size-standard) / 2 !default;
8
- // $button-icon-spacing-large: ($pt-button-height-large - $pt-icon-size-large) / 2 !default;
9
+ // $button-padding-large: ($pt-grid-size * 0.5) ($pt-grid-size * 1.5) !default;
10
+ // $button-icon-spacing: ($pt-button-height - $pt-icon-size-standard) * 0.5 !default;
11
+ // $button-icon-spacing-large: ($pt-button-height-large - $pt-icon-size-large) * 0.5 !default;
9
12
  // $button-box-shadow: inset 0 0 0 $button-border-width rgba($black, 0.2), inset 0 (-$button-border-width) 0 rgba($black, 0.1) !default;
10
13
  // $button-box-shadow-active: inset 0 0 0 $button-border-width rgba($black, 0.2), inset 0 1px 2px rgba($black, 0.2) !default;
11
14
  // $button-intent-box-shadow: inset 0 0 0 $button-border-width rgba($black, 0.4), inset 0 (-$button-border-width) 0 rgba($black, 0.2) !default;
@@ -44,10 +47,44 @@ $dark-button-gradient: $button-gradient; // !default; // linear-gradient(to bott
44
47
  // $button-outlined-border-intent-opacity: 0.6 !default;
45
48
  // $button-outlined-border-disabled-intent-opacity: 0.2 !default;
46
49
 
50
+ $button-intents: (
51
+ "primary": ($eccgui-color-accent, color.scale($eccgui-color-accent, $lightness: -20%), color.scale($eccgui-color-accent, $lightness: -40%)),
52
+ "success": ($eccgui-color-success-text, color.scale($eccgui-color-success-text, $lightness: -20%), color.scale($eccgui-color-success-text, $lightness: -40%)),
53
+ "warning": ($eccgui-color-warning-text, color.scale($eccgui-color-warning-text, $lightness: -20%), color.scale($eccgui-color-warning-text, $lightness: -40%)),
54
+ "danger": ($eccgui-color-danger-text, color.scale($eccgui-color-danger-text, $lightness: -20%), color.scale($eccgui-color-danger-text, $lightness: -40%))
55
+ );
56
+
47
57
  @import "~@blueprintjs/core/src/components/button/button";
48
58
 
49
- .#{$ns}-button.#{$ns}-large {
50
- min-height: mini-units(6);
59
+ .#{$ns}-button {
60
+ .#{$ns}-large {
61
+ min-height: mini-units(6);
62
+ }
63
+ // special case override: blueprint do not use configured colors here
64
+ &.#{$ns}-intent-warning {
65
+ @include pt-button-intent(map.get($button-intents, "warning")...);
66
+
67
+ &:not(.#{$ns}-disabled).#{$ns}-icon > svg {
68
+ fill: rgba($white, 0.7);
69
+ }
70
+
71
+ &:not(.#{$ns}-disabled):not(.#{$ns}-minimal):not(.#{$ns}-outlined) {
72
+ @include pt-button-intent(map.get($button-intents, "warning")...);
73
+ }
74
+
75
+ &.#{$ns}-minimal,
76
+ &.#{$ns}-outlined {
77
+ background: none;
78
+ box-shadow: none;
79
+ color: $eccgui-color-warning-text;
80
+ border-color: $eccgui-color-warning-text;
81
+
82
+ &:disabled,
83
+ &.#{$ns}-disabled {
84
+ color: rgba($eccgui-color-warning-text, 0.39);
85
+ }
86
+ }
87
+ }
51
88
  }
52
89
 
53
90
  .#{$ns}-button-text {
@@ -49,7 +49,7 @@ $eccgui-size-card-spacing: $eccgui-size-typo-base !default;
49
49
  }
50
50
 
51
51
  .#{$eccgui}-card__header {
52
- padding: $eccgui-size-card-spacing/2 $eccgui-size-card-spacing/2 $eccgui-size-card-spacing/2 $eccgui-size-card-spacing;
52
+ padding: $eccgui-size-card-spacing * 0.5 $eccgui-size-card-spacing * 0.5 $eccgui-size-card-spacing * 0.5 $eccgui-size-card-spacing;
53
53
  box-sizing: content-box;
54
54
  flex-grow: 0;
55
55
  flex-shrink: 0;
@@ -83,7 +83,7 @@ $eccgui-size-card-spacing: $eccgui-size-typo-base !default;
83
83
  }
84
84
 
85
85
  .#{$eccgui}-card__content {
86
- padding: $eccgui-size-card-spacing/2 $eccgui-size-card-spacing $eccgui-size-card-spacing $eccgui-size-card-spacing;
86
+ padding: $eccgui-size-card-spacing * 0.5 $eccgui-size-card-spacing $eccgui-size-card-spacing $eccgui-size-card-spacing;
87
87
  flex-grow: 1;
88
88
  flex-shrink: 1;
89
89
  overflow: auto;
@@ -95,7 +95,7 @@ $eccgui-size-card-spacing: $eccgui-size-typo-base !default;
95
95
  }
96
96
 
97
97
  .#{$eccgui}-card__actions {
98
- padding: $eccgui-size-card-spacing/4;
98
+ padding: $eccgui-size-card-spacing * 0.25;
99
99
  flex-grow: 0;
100
100
  flex-shrink: 0;
101
101
  display: flex;
@@ -103,7 +103,7 @@ $eccgui-size-card-spacing: $eccgui-size-typo-base !default;
103
103
  align-items: center;
104
104
 
105
105
  & > * {
106
- margin: $eccgui-size-card-spacing/4;
106
+ margin: $eccgui-size-card-spacing * 0.25;
107
107
  }
108
108
 
109
109
  &.#{$eccgui}-intent--success > .#{$eccgui}-button:first-child {
@@ -133,7 +133,7 @@ $eccgui-size-card-spacing: $eccgui-size-typo-base !default;
133
133
  align-items: center;
134
134
 
135
135
  & > * {
136
- margin: $eccgui-size-card-spacing/4;
136
+ margin: $eccgui-size-card-spacing * 0.25;
137
137
  }
138
138
 
139
139
  .#{$eccgui}-card__actions--inversedirection > & {
@@ -0,0 +1,33 @@
1
+ import React from "react";
2
+ import { ComponentStory, ComponentMeta } from "@storybook/react";
3
+
4
+ import {
5
+ ContextMenu,
6
+ MenuItem,
7
+ } from "../../index";
8
+
9
+ export default {
10
+ title: "Components/ContextMenu",
11
+ component: ContextMenu,
12
+ subcomponents: { MenuItem },
13
+ argTypes: {
14
+ children: {
15
+ control: "none",
16
+ }
17
+ },
18
+ } as ComponentMeta<typeof ContextMenu>;
19
+
20
+ const Template: ComponentStory<typeof ContextMenu> = (args) => (
21
+ <ContextMenu {...args} />
22
+ );
23
+
24
+ export const Default = Template.bind({});
25
+ Default.args = {
26
+ children: [
27
+ <MenuItem key="m0" text={"First option"} />,
28
+ <MenuItem key="m1" text={"Item two"}>
29
+ <MenuItem key="m0" text={"First sub option"} />
30
+ <MenuItem key="m1" text={"Sub item two"} />
31
+ </MenuItem>
32
+ ]
33
+ }
@@ -1,20 +1,54 @@
1
- import React from "react";
1
+ import React, {ReactElement} from "react";
2
2
  import { CLASSPREFIX as eccgui } from "../../configuration/constants";
3
- import ContextOverlay from "./ContextOverlay";
3
+ import { TestableComponent } from "../interfaces";
4
+ import ContextOverlay, { ContextOverlayProps } from "./ContextOverlay";
4
5
  import Menu from "../Menu/Menu";
5
6
  import IconButton from "../Icon/IconButton";
6
7
  import {ValidIconName} from "../Icon/canonicalIconNames";
7
8
 
8
- interface ContextMenuProps {
9
- togglerElement?: ValidIconName | JSX.Element
10
- [key: string]: any
9
+ interface ContextMenuProps extends TestableComponent {
10
+ /**
11
+ * Addional CSS class names.
12
+ */
13
+ className?: string;
14
+ /**
15
+ * The elements of the context menu.
16
+ * They will be wrapped in a `Menu` element automatically.
17
+ */
18
+ children?: JSX.Element | JSX.Element[];
19
+ /**
20
+ * Toggler that need to be used to display menu.
21
+ * If a valid icon name is used then the icon element is displayed.
22
+ * In this case `togglerText`, `togglerLarge` and `tooltipAsTitle` are used, too.
23
+ */
24
+ togglerElement?: ValidIconName | JSX.Element;
25
+ /**
26
+ * Text displayed as title or tooltip on toggler element.
27
+ */
28
+ togglerText?: string;
29
+ /**
30
+ * Toggler element is displayed larger than normal.
31
+ */
32
+ togglerLarge?: boolean;
33
+ /**
34
+ * Tooltip on toggler element is display as HTML title, not as extra tooltip element.
35
+ */
36
+ tooltipAsTitle?: boolean;
37
+ /**
38
+ * Props to spread to `ContextOverlay` that is used to display the dropdown.
39
+ */
40
+ contextOverlayProps?: Partial<Omit<ContextOverlayProps, "content" | "children" | "className">>
11
41
  }
12
42
 
43
+ /**
44
+ * Element displays menu items after toggler is clicked.
45
+ */
13
46
  function ContextMenu({
14
47
  children,
15
48
  className = "",
16
49
  togglerElement = "item-moremenu",
17
50
  togglerText = "Show more options",
51
+ contextOverlayProps,
18
52
  togglerLarge = false,
19
53
  /* FIXME: The Tooltip component can interfere with the opened menu, since it is implemented via portal and may cover the menu,
20
54
  so by default we use the title attribute instead of Tooltip. */
@@ -22,7 +56,12 @@ function ContextMenu({
22
56
  ...restProps
23
57
  }: ContextMenuProps) {
24
58
  return (
25
- <ContextOverlay {...restProps} className={`${eccgui}-contextmenu ` + className}>
59
+ <ContextOverlay
60
+ {...restProps}
61
+ {...contextOverlayProps}
62
+ className={`${eccgui}-contextmenu ` + className}
63
+ content={<Menu>{children}</Menu>}
64
+ >
26
65
  {typeof togglerElement === "string" ? (
27
66
  <IconButton
28
67
  tooltipAsTitle={tooltipAsTitle}
@@ -32,9 +71,8 @@ function ContextMenu({
32
71
  data-test-id={restProps["data-test-id"]}
33
72
  />
34
73
  ) : (
35
- { togglerElement }
74
+ togglerElement as ReactElement
36
75
  )}
37
- <Menu>{children}</Menu>
38
76
  </ContextOverlay>
39
77
  );
40
78
  }
@@ -0,0 +1,148 @@
1
+ import React from "react";
2
+ import { ComponentStory, ComponentMeta } from "@storybook/react";
3
+ import { LoremIpsum } from 'react-lorem-ipsum';
4
+ import {
5
+ PopoverPosition,
6
+ PopoverInteractionKind,
7
+ PopperModifiers,
8
+ } from "@blueprintjs/core";
9
+ import {
10
+ PlacementOptions
11
+ } from "@blueprintjs/popover2";
12
+
13
+ import {
14
+ ContextOverlay,
15
+ HtmlContentBlock,
16
+ Button
17
+ } from "../../index";
18
+
19
+ export default {
20
+ title: "Components/ContextOverlay",
21
+ component: ContextOverlay,
22
+ argTypes: {
23
+ className: {
24
+ control: "string",
25
+ description: "A space-delimited list of class names to pass along to a child element."
26
+ },
27
+ defaultIsOpen: {
28
+ control: "boolean",
29
+ description: "Initial opened state when uncontrolled."
30
+ },
31
+ isOpen: {
32
+ control: "boolean",
33
+ description: "Whether the popover is visible. Passing this prop puts the popover in controlled mode, where the only way to change visibility is by updating this property."
34
+ },
35
+ interactionKind: {
36
+ control: "select",
37
+ options: {UNDEFINED: undefined, ...PopoverInteractionKind},
38
+ description: "The kind of interaction that triggers the display of the popover."
39
+ },
40
+ canEscapeKeyClose: {
41
+ control: "boolean",
42
+ description: "Whether pressing the esc key should invoke `onClose`."
43
+ },
44
+ onClose: {
45
+ control: "none",
46
+ description: "A callback that is invoked when user interaction causes the overlay to close, such as clicking on the overlay or pressing the esc key (if enabled).",
47
+ table: {
48
+ defaultValue: { summary: undefined },
49
+ type: { summary: "(event: SyntheticEvent<HTMLElement>) => void" },
50
+ }
51
+ },
52
+ onInteraction: {
53
+ control: "none",
54
+ description: "Callback invoked in controlled mode when the popover open state would change due to user interaction.",
55
+ table: {
56
+ defaultValue: { summary: undefined },
57
+ type: { summary: "(nextOpenState: boolean, e?: React.SyntheticEvent<HTMLElement>) => void" },
58
+ }
59
+ },
60
+ children: {
61
+ control: "none",
62
+ },
63
+ content: {
64
+ control: "none",
65
+ description: "Elements for overlay content."
66
+ },
67
+ minimal: {
68
+ control: "boolean",
69
+ description: "Whether to apply minimal styling to this popover or tooltip. Minimal popovers do not have an arrow pointing to their target and use a subtler animation."
70
+ },
71
+ placement: {
72
+ control: "select",
73
+ options: PlacementOptions,
74
+ description: "The placement (relative to the target) at which the popover should appear. Mutually exclusive with `position` prop."
75
+ },
76
+ /*
77
+ position: {
78
+ control: "select",
79
+ options: {UNDEFINED: undefined, ...PopoverPosition},
80
+ description: "The position (relative to the target) at which the popover should appear. Mutually exclusive with `placement` prop."
81
+ },
82
+ */
83
+ usePortal: {
84
+ control: "boolean",
85
+ description: "Whether the popover should be rendered inside a Portal attached to `portalContainer` prop."
86
+ },
87
+ modifiers: {
88
+ control: "object",
89
+ description: "Popper modifier options, passed directly to internal Popper instance. See https://popper.js.org/docs/v2/modifiers/ for complete details.",
90
+ table: {
91
+ defaultValue: { summary: undefined },
92
+ type: { summary: "PopperModifiers" },
93
+ }
94
+ },
95
+ hasBackdrop: {
96
+ control: "boolean",
97
+ description: "Enables an invisible overlay beneath the popover that captures clicks and prevents interaction with the rest of the document until the popover is closed, only available with `PopoverInteractionKind.CLICK`."
98
+ },
99
+ rootBoundary: {
100
+ control: "select",
101
+ options: {UNDEFINED: undefined, VIEWPORT: "viewport", DOCUMENT: "document"},
102
+ description: "A root boundary element supplied to the `flip` and `preventOverflow` modifiers, shorthand for overriding Popper.js modifier options. See: https://popper.js.org/docs/v2/utils/detect-overflow/#rootboundary",
103
+ table: {
104
+ defaultValue: { summary: "viewport" },
105
+ type: { summary: "RootBoundary" },
106
+ }
107
+ },
108
+ positioningStrategy: {
109
+ control: "select",
110
+ options: {UNDEFINED: undefined, ABSOLUTE: "absolute", FIXED: "fixed"},
111
+ description: "Popper.js positioning strategy. See: https://popper.js.org/docs/v2/constructors/#strategy",
112
+ table: {
113
+ defaultValue: { summary: "absolute" },
114
+ type: { summary: "PositioningStrategy" },
115
+ }
116
+ },
117
+ },
118
+ } as ComponentMeta<typeof ContextOverlay>;
119
+
120
+ const Template: ComponentStory<typeof ContextOverlay> = (args) => (
121
+ <ContextOverlay {...args} />
122
+ );
123
+
124
+ export const Default = Template.bind({});
125
+ Default.args = {
126
+ children: <Button>Target</Button>,
127
+ content: (
128
+ <HtmlContentBlock style={{maxWidth: "40em", padding: "0.5rem"}}>
129
+ Overlay:
130
+ <LoremIpsum p={2} avgSentencesPerParagraph={4} random={false} />
131
+ </HtmlContentBlock>
132
+ ),
133
+ //position: PopoverPosition.RIGHT,
134
+ placement: "auto-start",
135
+ usePortal: true,
136
+ minimal: false,
137
+ defaultIsOpen: false,
138
+ modifiers: {
139
+ flip: {
140
+ enabled: true
141
+ },
142
+ preventOverflow: {
143
+ enabled: true,
144
+ }
145
+ } as PopperModifiers,
146
+ rootBoundary: "viewport",
147
+ hasBackdrop: false,
148
+ }
@@ -1,23 +1,30 @@
1
1
  import React from 'react';
2
- import { Popover as BlueprintPropover, Position as BlueprintPosition } from "@blueprintjs/core";
2
+ import {
3
+ Popover2 as BlueprintPropover,
4
+ Popover2Props as BlueprintPopoverProps,
5
+ } from "@blueprintjs/popover2";
3
6
  import { CLASSPREFIX as eccgui } from "../../configuration/constants";
4
7
 
5
- /*
6
-
7
- @see https://blueprintjs.com/docs/#core/components/popover for list of
8
- properties
9
-
10
- */
8
+ export interface ContextOverlayProps extends Omit<BlueprintPopoverProps, "position"> {
9
+ /**
10
+ * `target` element to use as toggler for the overlay display.
11
+ */
12
+ children?: JSX.Element;
13
+ }
11
14
 
15
+ /**
16
+ * Element displays connected content by interacting with a target element.
17
+ * Full list of available option can be seen at https://blueprintjs.com/docs/#popover2-package/popover2
18
+ */
12
19
  function ContextOverlay({
13
20
  children,
14
21
  className='',
15
22
  ...restProps
16
- }: any) {
23
+ }: ContextOverlayProps) {
17
24
 
18
25
  return (
19
26
  <BlueprintPropover
20
- position={BlueprintPosition.BOTTOM}
27
+ placement="bottom"
21
28
  {...restProps}
22
29
  className={`${eccgui}-contextoverlay ` + className}
23
30
  >
@@ -1,15 +1,27 @@
1
1
  /*
2
- $popover-background-color: $white !default;
3
- $dark-popover-background-color: $dark-gray4 !default;
2
+ $pt-popover2-background-color: $white !default;
3
+ $pt-dark-popover2-background-color: $dark-gray4 !default;
4
4
  */
5
5
 
6
- @import "~@blueprintjs/core/src/components/popover/popover";
6
+ @import "~@blueprintjs/popover2/src/popover2";
7
7
 
8
- .#{$ns}-popover-wrapper {
8
+ .#{$ns}-popover2-content {
9
9
  max-width: 100%;
10
10
  }
11
11
 
12
- .#{$ns}-popover-target {
12
+ .#{$ns}-popover2-target {
13
13
  cursor: pointer;
14
14
  max-width: 100%;
15
15
  }
16
+
17
+ .#{$ns}-submenu.#{$ns}-popover > .#{$ns}-popover-content {
18
+ // fix for submenu items in overlays/popovers
19
+ background-color: $pt-popover2-background-color;
20
+ }
21
+
22
+ .#{$ns}-overlay-start-focus-trap,
23
+ .#{$ns}-overlay-end-focus-trap {
24
+ &:focus-visible {
25
+ outline: none;
26
+ }
27
+ }
@@ -16,6 +16,7 @@ import {
16
16
  import Divider from "./../Separation/Divider";
17
17
  import Modal, { ModalProps } from "./Modal";
18
18
  import {TestableComponent} from "../interfaces";
19
+ import IconButton from "../Icon/IconButton";
19
20
 
20
21
  export interface SimpleDialogProps extends ModalProps, TestableComponent {
21
22
  /**
@@ -49,6 +50,10 @@ export interface SimpleDialogProps extends ModalProps, TestableComponent {
49
50
  intent?: IntentTypes;
50
51
  /** Optional props for the wrapper div element inside the modal. */
51
52
  wrapperDivProps?: React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>
53
+ /** If a full screen toggler is shown that will allow to switch to full screen mode. */
54
+ showFullScreenToggler?: boolean
55
+ /** Starts the modal in full screen mode. The show full screen toggler will be automatically enabled. */
56
+ startInFullScreenMode?: boolean
52
57
  }
53
58
 
54
59
  /**
@@ -66,8 +71,13 @@ function SimpleDialog({
66
71
  preventSimpleClosing = false,
67
72
  intent,
68
73
  headerOptions,
74
+ showFullScreenToggler = false,
75
+ startInFullScreenMode = false,
76
+ size,
69
77
  ...otherProps
70
78
  }: SimpleDialogProps) {
79
+ const [displayFullscreen, setDisplayFullscreen] = React.useState<boolean>(startInFullScreenMode);
80
+ const showToggler = startInFullScreenMode || showFullScreenToggler
71
81
  const intentClassName = intent ? `${eccgui}-intent--${intent}` : "";
72
82
  return (
73
83
  <Modal
@@ -76,21 +86,32 @@ function SimpleDialog({
76
86
  data-test-id={otherProps["data-test-id"] ?? "simpleDialogWidget"}
77
87
  canOutsideClickClose={canOutsideClickClose || !preventSimpleClosing}
78
88
  canEscapeKeyClose={canEscapeKeyClose || !preventSimpleClosing}
89
+ size={displayFullscreen ? "fullscreen" : size}
79
90
  >
80
91
  <Card className={intentClassName}
81
92
  >
82
- {(title || headerOptions) && (
93
+ {(title || headerOptions || showToggler) ? (
83
94
  <CardHeader>
84
95
  <CardTitle
85
96
  className={intentClassName}
86
97
  >
87
98
  {title}
88
99
  </CardTitle>
89
- {headerOptions && (
90
- <CardOptions>{headerOptions}</CardOptions>
100
+ {(headerOptions || showToggler) ? (
101
+ <CardOptions>
102
+ { headerOptions }
103
+ {showToggler && (
104
+ <IconButton
105
+ name={displayFullscreen ? "toggler-minimize" : "toggler-maximize"}
106
+ onClick={() => setDisplayFullscreen(!displayFullscreen)}
107
+ />
108
+ )}
109
+ </CardOptions>
110
+ ) : (
111
+ <></>
91
112
  )}
92
113
  </CardHeader>
93
- )}
114
+ ) : null}
94
115
  {hasBorder && <Divider />}
95
116
  <CardContent>{children}</CardContent>
96
117
  {hasBorder && <Divider />}
@@ -1,12 +1,14 @@
1
+ @use "sass:math";
2
+
1
3
  // our vars
2
- $eccgui-size-modal-tiny-width: 4/16 * 100vw !default;
3
- $eccgui-size-modal-tiny-height: 1/9 * 100vh !default;
4
- $eccgui-size-modal-small-width: 6/16 * 100vw !default;
5
- $eccgui-size-modal-small-height: 2/9 * 100vh !default;
6
- $eccgui-size-modal-regular-width: 6/16 * 100vw !default;
7
- $eccgui-size-modal-regular-height: 3/9 * 100vh !default;
8
- $eccgui-size-modal-large-width: 8/16 * 100vw !default;
9
- $eccgui-size-modal-large-height: 6/9 * 100vh !default;
4
+ $eccgui-size-modal-tiny-width: math.div(4, 16) * 100vw !default;
5
+ $eccgui-size-modal-tiny-height: math.div(1, 9) * 100vh !default;
6
+ $eccgui-size-modal-small-width: math.div(6, 16) * 100vw !default;
7
+ $eccgui-size-modal-small-height: math.div(2, 9) * 100vh !default;
8
+ $eccgui-size-modal-regular-width: math.div(6, 16) * 100vw !default;
9
+ $eccgui-size-modal-regular-height: math.div(3, 9) * 100vh !default;
10
+ $eccgui-size-modal-large-width: math.div(8, 16) * 100vw !default;
11
+ $eccgui-size-modal-large-height: math.div(6, 9) * 100vh !default;
10
12
  $eccgui-color-modal-backdrop: rgba(invert($eccgui-color-workspace-background), 0.69) !default;
11
13
 
12
14
  @import "~@blueprintjs/core/src/components/dialog/dialog";