@elyra/canvas 12.31.1 → 12.32.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 (477) hide show
  1. package/.eslintrc.js +1 -1
  2. package/README.md +1 -1
  3. package/build.sh +1 -1
  4. package/dist/{_baseForOwn-ad2a8649.js → _baseForOwn-2ef49e2c.js} +2 -2
  5. package/dist/{_baseForOwn-ad2a8649.js.map → _baseForOwn-2ef49e2c.js.map} +1 -1
  6. package/dist/{_baseForOwn-bfa77b3e.js → _baseForOwn-33edf1a0.js} +1 -1
  7. package/dist/{_baseForOwn-bfa77b3e.js.map → _baseForOwn-33edf1a0.js.map} +1 -1
  8. package/dist/canvas-constants-0b396113.js +2 -0
  9. package/dist/{canvas-constants-187a30d5.js.map → canvas-constants-0b396113.js.map} +1 -1
  10. package/dist/{canvas-constants-5fb4e9b8.js → canvas-constants-903046ab.js} +2 -2
  11. package/dist/{canvas-constants-5fb4e9b8.js.map → canvas-constants-903046ab.js.map} +1 -1
  12. package/dist/canvas-controller-293520d1.js +2 -0
  13. package/dist/canvas-controller-293520d1.js.map +1 -0
  14. package/dist/canvas-controller-978f3e99.js +2 -0
  15. package/dist/canvas-controller-978f3e99.js.map +1 -0
  16. package/dist/{canvas-logger-27d3180d.js → canvas-logger-3bfbcf85.js} +1 -1
  17. package/dist/{canvas-logger-27d3180d.js.map → canvas-logger-3bfbcf85.js.map} +1 -1
  18. package/dist/{canvas-logger-bb537fb3.js → canvas-logger-6f90b136.js} +1 -1
  19. package/dist/{canvas-logger-bb537fb3.js.map → canvas-logger-6f90b136.js.map} +1 -1
  20. package/dist/common-canvas-b19904f0.js +2 -0
  21. package/dist/common-canvas-b19904f0.js.map +1 -0
  22. package/dist/common-canvas-ef3c716f.js +2 -0
  23. package/dist/common-canvas-ef3c716f.js.map +1 -0
  24. package/dist/common-canvas.es.js +1 -1
  25. package/dist/common-canvas.es.js.map +1 -1
  26. package/dist/common-canvas.js +1 -1
  27. package/dist/common-canvas.js.map +1 -1
  28. package/dist/common-properties-7863aacb.js +2 -0
  29. package/dist/common-properties-7863aacb.js.map +1 -0
  30. package/dist/common-properties-8b8a659b.js +2 -0
  31. package/dist/common-properties-8b8a659b.js.map +1 -0
  32. package/dist/context-menu-wrapper-5846a20e.js +2 -0
  33. package/dist/context-menu-wrapper-5846a20e.js.map +1 -0
  34. package/dist/context-menu-wrapper-ac5e8c7a.js +2 -0
  35. package/dist/context-menu-wrapper-ac5e8c7a.js.map +1 -0
  36. package/dist/datarecord-metadata-v3-schema-64329ae4.js +2 -0
  37. package/dist/datarecord-metadata-v3-schema-64329ae4.js.map +1 -0
  38. package/dist/datarecord-metadata-v3-schema-cd1871c0.js +2 -0
  39. package/dist/datarecord-metadata-v3-schema-cd1871c0.js.map +1 -0
  40. package/dist/{flexible-table-aa7a3125.js → flexible-table-865cd1c7.js} +2 -2
  41. package/dist/{flexible-table-aa7a3125.js.map → flexible-table-865cd1c7.js.map} +1 -1
  42. package/dist/{flexible-table-1f259bf6.js → flexible-table-ccced653.js} +2 -2
  43. package/dist/{flexible-table-1f259bf6.js.map → flexible-table-ccced653.js.map} +1 -1
  44. package/dist/{icon-e1c49d95.js → icon-5f3da14a.js} +2 -2
  45. package/dist/{icon-e1c49d95.js.map → icon-5f3da14a.js.map} +1 -1
  46. package/dist/{icon-c65ffd4c.js → icon-f3de6e3a.js} +2 -2
  47. package/dist/{icon-c65ffd4c.js.map → icon-f3de6e3a.js.map} +1 -1
  48. package/dist/{index-27d84a2b.js → index-20a7841f.js} +2 -2
  49. package/dist/{index-27d84a2b.js.map → index-20a7841f.js.map} +1 -1
  50. package/dist/{index-6776fe83.js → index-7ec85110.js} +2 -2
  51. package/dist/{index-6776fe83.js.map → index-7ec85110.js.map} +1 -1
  52. package/dist/{isArrayLikeObject-6a001191.js → isArrayLikeObject-5da4b548.js} +2 -2
  53. package/dist/{isArrayLikeObject-6a001191.js.map → isArrayLikeObject-5da4b548.js.map} +1 -1
  54. package/dist/lib/canvas-controller.es.js +1 -1
  55. package/dist/lib/canvas-controller.js +1 -1
  56. package/dist/lib/canvas.es.js +1 -1
  57. package/dist/lib/canvas.js +1 -1
  58. package/dist/lib/command-stack.es.js.map +1 -1
  59. package/dist/lib/command-stack.js.map +1 -1
  60. package/dist/lib/context-menu.es.js +1 -1
  61. package/dist/lib/context-menu.js +1 -1
  62. package/dist/lib/properties/field-picker.es.js +1 -1
  63. package/dist/lib/properties/field-picker.js +1 -1
  64. package/dist/lib/properties/flexible-table.es.js +1 -1
  65. package/dist/lib/properties/flexible-table.js +1 -1
  66. package/dist/lib/properties.es.js +1 -1
  67. package/dist/lib/properties.js +1 -1
  68. package/dist/lib/tooltip.es.js.map +1 -1
  69. package/dist/lib/tooltip.js.map +1 -1
  70. package/dist/styles/common-canvas.min.css +1 -1
  71. package/dist/styles/common-canvas.min.css.map +1 -1
  72. package/dist/toolbar-9f4c1709.js +2 -0
  73. package/dist/toolbar-9f4c1709.js.map +1 -0
  74. package/dist/toolbar-c2ec8f11.js +2 -0
  75. package/dist/toolbar-c2ec8f11.js.map +1 -0
  76. package/locales/command-actions/locales/index.js +1 -1
  77. package/locales/common-canvas/locales/index.js +1 -1
  78. package/locales/common-properties/locales/de.json +1 -1
  79. package/locales/common-properties/locales/es.json +1 -1
  80. package/locales/common-properties/locales/fr.json +1 -1
  81. package/locales/common-properties/locales/index.js +1 -1
  82. package/locales/common-properties/locales/it.json +1 -1
  83. package/locales/common-properties/locales/ja.json +1 -1
  84. package/locales/common-properties/locales/ko.json +1 -1
  85. package/locales/common-properties/locales/pt-br.json +1 -1
  86. package/locales/common-properties/locales/sv.json +1 -1
  87. package/locales/common-properties/locales/zh-CN.json +1 -1
  88. package/locales/common-properties/locales/zh-TW.json +1 -1
  89. package/locales/palette/locales/index.js +1 -1
  90. package/locales/toolbar/locales/index.js +1 -1
  91. package/package.json +1 -1
  92. package/rollup.config.js +1 -1
  93. package/src/.eslintrc.js +1 -1
  94. package/src/color-picker/color-picker.jsx +31 -8
  95. package/src/color-picker/color-picker.scss +1 -1
  96. package/src/color-picker/index.js +18 -0
  97. package/src/command-actions/arrangeLayoutAction.js +1 -1
  98. package/src/command-actions/attachNodeToLinksAction.js +1 -1
  99. package/src/command-actions/collapseSuperNodeInPlaceAction.js +1 -1
  100. package/src/command-actions/colorSelectedObjectsAction.js +3 -2
  101. package/src/command-actions/commonPropertiesAction.js +1 -1
  102. package/src/command-actions/convertSuperNodeExternalToLocalAction.js +1 -1
  103. package/src/command-actions/convertSuperNodeLocalToExternalAction.js +1 -1
  104. package/src/command-actions/createAutoNodeAction.js +1 -1
  105. package/src/command-actions/createCommentAction.js +1 -1
  106. package/src/command-actions/createCommentLinkAction.js +1 -1
  107. package/src/command-actions/createNodeAction.js +1 -1
  108. package/src/command-actions/createNodeAttachLinksAction.js +1 -1
  109. package/src/command-actions/createNodeLinkAction.js +1 -1
  110. package/src/command-actions/createNodeLinkDetachedAction.js +1 -1
  111. package/src/command-actions/createNodeOnLinkAction.js +1 -1
  112. package/src/command-actions/createSuperNodeAction.js +1 -1
  113. package/src/command-actions/deconstructSuperNodeAction.js +1 -1
  114. package/src/command-actions/deleteLinkAction.js +1 -1
  115. package/src/command-actions/deleteObjectsAction.js +1 -1
  116. package/src/command-actions/disconnectObjectsAction.js +1 -1
  117. package/src/command-actions/displayPreviousPipelineAction.js +1 -1
  118. package/src/command-actions/displaySubPipelineAction.js +1 -1
  119. package/src/command-actions/editCommentAction.js +1 -1
  120. package/src/command-actions/editDecorationLabelAction.js +1 -1
  121. package/src/command-actions/expandSuperNodeInPlaceAction.js +1 -1
  122. package/src/command-actions/insertNodeIntoLinkAction.js +1 -1
  123. package/src/command-actions/moveObjectsAction.js +1 -1
  124. package/src/command-actions/pasteAction.js +1 -1
  125. package/src/command-actions/saveToPaletteAction.js +1 -1
  126. package/src/command-actions/setLinksStyleAction.js +1 -1
  127. package/src/command-actions/setNodeLabelAction.js +1 -1
  128. package/src/command-actions/setObjectsStyleAction.js +1 -1
  129. package/src/command-actions/sizeAndPositionObjectsAction.js +1 -1
  130. package/src/command-actions/updateLinkAction.js +1 -1
  131. package/src/command-stack/action.js +1 -1
  132. package/src/command-stack/command-stack.js +1 -1
  133. package/src/command-stack/internal-stack.js +1 -1
  134. package/src/common-canvas/canvas-controller-menu-utils.js +2 -2
  135. package/src/common-canvas/cc-bottom-panel.jsx +1 -1
  136. package/src/common-canvas/cc-central-items.jsx +1 -1
  137. package/src/common-canvas/cc-context-menu.jsx +1 -1
  138. package/src/common-canvas/cc-context-toolbar.jsx +53 -33
  139. package/src/common-canvas/cc-right-flyout.jsx +1 -1
  140. package/src/common-canvas/cc-state-tag.jsx +1 -1
  141. package/src/common-canvas/cc-text-toolbar.jsx +9 -16
  142. package/src/common-canvas/cc-toolbar.jsx +1 -1
  143. package/src/common-canvas/cc-tooltip.jsx +1 -1
  144. package/src/common-canvas/common-canvas-utils.js +1 -1
  145. package/src/common-canvas/common-canvas.scss +8 -15
  146. package/src/common-canvas/constants/canvas-constants.js +1 -0
  147. package/src/common-canvas/d3-zoom-extension/.eslintrc.js +1 -1
  148. package/src/common-canvas/index.js +1 -1
  149. package/src/common-canvas/label-util.js +1 -1
  150. package/src/common-canvas/local-storage.js +1 -1
  151. package/src/common-canvas/svg-canvas-d3.js +2 -2
  152. package/src/common-canvas/svg-canvas-d3.scss +1 -1
  153. package/src/common-canvas/svg-canvas-pipeline.js +1 -1
  154. package/src/common-canvas/svg-canvas-renderer.js +26 -10
  155. package/src/common-canvas/svg-canvas-utils-comments.js +1 -1
  156. package/src/common-canvas/svg-canvas-utils-decs.js +1 -1
  157. package/src/common-canvas/svg-canvas-utils-display.js +1 -1
  158. package/src/common-canvas/svg-canvas-utils-links.js +1 -1
  159. package/src/common-canvas/svg-canvas-utils-markdown.js +1 -1
  160. package/src/common-canvas/svg-canvas-utils-nodes.js +1 -1
  161. package/src/common-canvas/svg-canvas-utils-textarea.js +2 -2
  162. package/src/common-properties/actions/action-factory.js +1 -1
  163. package/src/common-properties/actions/actions.scss +1 -1
  164. package/src/common-properties/actions/button/button.jsx +1 -1
  165. package/src/common-properties/actions/button/button.scss +1 -1
  166. package/src/common-properties/actions/button/index.js +1 -1
  167. package/src/common-properties/actions/image/image.jsx +1 -1
  168. package/src/common-properties/actions/image/image.scss +1 -1
  169. package/src/common-properties/actions/image/index.js +1 -1
  170. package/src/common-properties/actions.js +1 -1
  171. package/src/common-properties/common-properties.jsx +1 -1
  172. package/src/common-properties/components/components.scss +1 -1
  173. package/src/common-properties/components/control-item/control-item.jsx +1 -1
  174. package/src/common-properties/components/control-item/control-item.scss +1 -1
  175. package/src/common-properties/components/control-item/index.js +1 -1
  176. package/src/common-properties/components/editor-form/editor-form.jsx +1 -1
  177. package/src/common-properties/components/editor-form/editor-form.scss +2 -1
  178. package/src/common-properties/components/editor-form/index.js +1 -1
  179. package/src/common-properties/components/empty-table/empty-table.jsx +1 -1
  180. package/src/common-properties/components/empty-table/empty-table.scss +1 -1
  181. package/src/common-properties/components/empty-table/index.js +1 -1
  182. package/src/common-properties/components/field-picker/field-picker.jsx +1 -1
  183. package/src/common-properties/components/field-picker/field-picker.scss +1 -1
  184. package/src/common-properties/components/field-picker/index.js +1 -1
  185. package/src/common-properties/components/flexible-table/flexible-table.jsx +9 -6
  186. package/src/common-properties/components/flexible-table/flexible-table.scss +1 -1
  187. package/src/common-properties/components/flexible-table/index.js +1 -1
  188. package/src/common-properties/components/main-editor-properties-buttons/index.js +1 -1
  189. package/src/common-properties/components/main-editor-properties-buttons/main-editor-properties-buttons.jsx +1 -1
  190. package/src/common-properties/components/moveable-table-rows/index.js +1 -1
  191. package/src/common-properties/components/moveable-table-rows/moveable-table-rows.jsx +1 -1
  192. package/src/common-properties/components/moveable-table-rows/moveable-table-rows.scss +1 -1
  193. package/src/common-properties/components/properties-buttons/index.js +1 -1
  194. package/src/common-properties/components/properties-buttons/properties-buttons.jsx +1 -1
  195. package/src/common-properties/components/properties-buttons/properties-buttons.scss +1 -1
  196. package/src/common-properties/components/properties-editor/index.js +1 -1
  197. package/src/common-properties/components/properties-editor/properties-editor.jsx +1 -1
  198. package/src/common-properties/components/properties-modal/index.js +1 -1
  199. package/src/common-properties/components/properties-modal/properties-modal.jsx +1 -1
  200. package/src/common-properties/components/properties-modal/properties-modal.scss +1 -1
  201. package/src/common-properties/components/table-buttons/index.js +1 -1
  202. package/src/common-properties/components/table-buttons/table-buttons.jsx +1 -1
  203. package/src/common-properties/components/table-buttons/table-buttons.scss +1 -1
  204. package/src/common-properties/components/title-editor/index.js +1 -1
  205. package/src/common-properties/components/title-editor/title-editor.jsx +1 -1
  206. package/src/common-properties/components/title-editor/title-editor.scss +1 -1
  207. package/src/common-properties/components/truncated-content-tooltip/index.js +1 -1
  208. package/src/common-properties/components/truncated-content-tooltip/truncated-content-tooltip.jsx +1 -1
  209. package/src/common-properties/components/truncated-content-tooltip/truncated-content-tooltip.scss +1 -1
  210. package/src/common-properties/components/validation-message/index.js +1 -1
  211. package/src/common-properties/components/validation-message/validation-message.jsx +1 -1
  212. package/src/common-properties/components/validation-message/validation-message.scss +1 -1
  213. package/src/common-properties/components/virtualized-table/index.js +1 -1
  214. package/src/common-properties/components/virtualized-table/virtualized-table.jsx +1 -1
  215. package/src/common-properties/components/virtualized-table/virtualized-table.scss +1 -1
  216. package/src/common-properties/components/wide-flyout/index.js +1 -1
  217. package/src/common-properties/components/wide-flyout/wide-flyout.jsx +1 -1
  218. package/src/common-properties/components/wide-flyout/wide-flyout.scss +1 -1
  219. package/src/common-properties/constants/constants.js +1 -1
  220. package/src/common-properties/constants/form-constants.js +1 -1
  221. package/src/common-properties/controls/abstract-table.jsx +1 -1
  222. package/src/common-properties/controls/abstract-table.scss +1 -1
  223. package/src/common-properties/controls/checkbox/checkbox.jsx +1 -1
  224. package/src/common-properties/controls/checkbox/checkbox.scss +1 -1
  225. package/src/common-properties/controls/checkbox/index.js +1 -1
  226. package/src/common-properties/controls/checkboxset/checkboxset.jsx +1 -1
  227. package/src/common-properties/controls/checkboxset/checkboxset.scss +1 -1
  228. package/src/common-properties/controls/checkboxset/index.js +1 -1
  229. package/src/common-properties/controls/control-factory.js +1 -1
  230. package/src/common-properties/controls/datefield/datefield.jsx +1 -1
  231. package/src/common-properties/controls/datefield/index.js +1 -1
  232. package/src/common-properties/controls/dropdown/dropdown.jsx +1 -1
  233. package/src/common-properties/controls/dropdown/dropdown.scss +1 -1
  234. package/src/common-properties/controls/dropdown/index.js +1 -1
  235. package/src/common-properties/controls/expression/expression-builder/expression-builder.jsx +1 -1
  236. package/src/common-properties/controls/expression/expression-builder/expression-builder.scss +1 -1
  237. package/src/common-properties/controls/expression/expression-builder/expression-select-field-function.jsx +1 -1
  238. package/src/common-properties/controls/expression/expression-builder/expression-select-operator.jsx +1 -1
  239. package/src/common-properties/controls/expression/expression-builder/expression-selection-panel.jsx +1 -1
  240. package/src/common-properties/controls/expression/expression-toggle/expression-toggle.jsx +1 -1
  241. package/src/common-properties/controls/expression/expression.jsx +1 -1
  242. package/src/common-properties/controls/expression/expression.scss +1 -1
  243. package/src/common-properties/controls/expression/expressionInfo-parser.js +1 -1
  244. package/src/common-properties/controls/expression/index.js +1 -1
  245. package/src/common-properties/controls/expression/languages/CLEM-hint.js +1 -1
  246. package/src/common-properties/controls/expression/languages/python-hint.js +1 -1
  247. package/src/common-properties/controls/expression/languages/r-hint.js +1 -1
  248. package/src/common-properties/controls/list/index.js +1 -1
  249. package/src/common-properties/controls/list/list.jsx +1 -1
  250. package/src/common-properties/controls/multiselect/index.js +1 -1
  251. package/src/common-properties/controls/multiselect/multiselect.jsx +1 -1
  252. package/src/common-properties/controls/multiselect/multiselect.scss +1 -1
  253. package/src/common-properties/controls/numberfield/index.js +1 -1
  254. package/src/common-properties/controls/numberfield/numberfield.jsx +1 -1
  255. package/src/common-properties/controls/numberfield/numberfield.scss +1 -1
  256. package/src/common-properties/controls/passwordfield/index.js +1 -1
  257. package/src/common-properties/controls/passwordfield/passwordfield.jsx +1 -1
  258. package/src/common-properties/controls/radioset/index.js +1 -1
  259. package/src/common-properties/controls/radioset/radioset.jsx +1 -1
  260. package/src/common-properties/controls/radioset/radioset.scss +1 -1
  261. package/src/common-properties/controls/readonly/index.js +1 -1
  262. package/src/common-properties/controls/readonly/readonly.jsx +1 -1
  263. package/src/common-properties/controls/readonly/readonly.scss +1 -1
  264. package/src/common-properties/controls/readonlytable/index.js +1 -1
  265. package/src/common-properties/controls/readonlytable/readonlytable.jsx +1 -1
  266. package/src/common-properties/controls/selectcolumns/index.js +1 -1
  267. package/src/common-properties/controls/selectcolumns/selectcolumns.jsx +1 -1
  268. package/src/common-properties/controls/selectcolumns/selectcolumns.scss +1 -1
  269. package/src/common-properties/controls/someofselect/index.js +1 -1
  270. package/src/common-properties/controls/someofselect/someofselect.jsx +1 -1
  271. package/src/common-properties/controls/someofselect/someofselect.scss +1 -1
  272. package/src/common-properties/controls/structureeditor/index.js +1 -1
  273. package/src/common-properties/controls/structureeditor/structureeditor.jsx +1 -1
  274. package/src/common-properties/controls/structureeditor/structureeditor.scss +1 -1
  275. package/src/common-properties/controls/structurelisteditor/index.js +1 -1
  276. package/src/common-properties/controls/structurelisteditor/structurelisteditor.jsx +1 -1
  277. package/src/common-properties/controls/structuretable/index.js +1 -1
  278. package/src/common-properties/controls/structuretable/structuretable.jsx +1 -1
  279. package/src/common-properties/controls/textarea/index.js +1 -1
  280. package/src/common-properties/controls/textarea/textarea.jsx +1 -1
  281. package/src/common-properties/controls/textarea/textarea.scss +1 -1
  282. package/src/common-properties/controls/textfield/index.js +1 -1
  283. package/src/common-properties/controls/textfield/textfield.jsx +1 -1
  284. package/src/common-properties/controls/textfield/textfield.scss +1 -1
  285. package/src/common-properties/controls/timefield/index.js +1 -1
  286. package/src/common-properties/controls/timefield/timefield.jsx +1 -1
  287. package/src/common-properties/controls/toggle/index.jsx +1 -1
  288. package/src/common-properties/controls/toggle/toggle.jsx +1 -1
  289. package/src/common-properties/controls/toggle/toggle.scss +1 -1
  290. package/src/common-properties/controls/toggletext/index.js +1 -1
  291. package/src/common-properties/controls/toggletext/toggletext.jsx +1 -1
  292. package/src/common-properties/controls/toggletext/toggletext.scss +1 -1
  293. package/src/common-properties/form/ActionInfo.js +1 -1
  294. package/src/common-properties/form/ButtonInfo.js +1 -1
  295. package/src/common-properties/form/Conditions.js +1 -1
  296. package/src/common-properties/form/ControlInfo.js +1 -1
  297. package/src/common-properties/form/EditorForm.js +1 -1
  298. package/src/common-properties/form/Form.js +1 -1
  299. package/src/common-properties/form/GroupInfo.js +1 -1
  300. package/src/common-properties/form/ParameterInfo.js +1 -1
  301. package/src/common-properties/form/PropertyDef.js +1 -1
  302. package/src/common-properties/form/StructureInfo.js +1 -1
  303. package/src/common-properties/form/UIItem.js +1 -1
  304. package/src/common-properties/index.js +1 -1
  305. package/src/common-properties/index.scss +1 -1
  306. package/src/common-properties/panels/action-panel/action-panel.jsx +1 -1
  307. package/src/common-properties/panels/action-panel/action-panel.scss +1 -1
  308. package/src/common-properties/panels/action-panel/index.js +1 -1
  309. package/src/common-properties/panels/column/column.jsx +1 -1
  310. package/src/common-properties/panels/column/column.scss +1 -1
  311. package/src/common-properties/panels/column/index.js +1 -1
  312. package/src/common-properties/panels/control/control.jsx +1 -1
  313. package/src/common-properties/panels/control/control.scss +1 -1
  314. package/src/common-properties/panels/control/index.js +1 -1
  315. package/src/common-properties/panels/panels.scss +1 -1
  316. package/src/common-properties/panels/selector/index.js +1 -1
  317. package/src/common-properties/panels/selector/selector.jsx +1 -1
  318. package/src/common-properties/panels/sub-panel/button.jsx +1 -1
  319. package/src/common-properties/panels/sub-panel/cell.jsx +1 -1
  320. package/src/common-properties/panels/sub-panel/invoker.jsx +1 -1
  321. package/src/common-properties/panels/sub-panel/sub-panel.scss +1 -1
  322. package/src/common-properties/panels/subtabs/index.js +1 -1
  323. package/src/common-properties/panels/subtabs/subtabs.jsx +1 -1
  324. package/src/common-properties/panels/subtabs/subtabs.scss +1 -1
  325. package/src/common-properties/panels/summary/index.js +1 -1
  326. package/src/common-properties/panels/summary/summary.jsx +1 -1
  327. package/src/common-properties/panels/summary/summary.scss +1 -1
  328. package/src/common-properties/panels/tearsheet/index.js +1 -1
  329. package/src/common-properties/panels/tearsheet/tearsheet.jsx +1 -1
  330. package/src/common-properties/panels/tearsheet/tearsheet.scss +1 -1
  331. package/src/common-properties/panels/text-panel/index.js +1 -1
  332. package/src/common-properties/panels/text-panel/text-panel.jsx +1 -1
  333. package/src/common-properties/panels/text-panel/text-panel.scss +1 -1
  334. package/src/common-properties/panels/twisty/index.js +1 -1
  335. package/src/common-properties/panels/twisty/twisty.jsx +1 -1
  336. package/src/common-properties/panels/twisty/twisty.scss +1 -1
  337. package/src/common-properties/properties-controller.js +1 -1
  338. package/src/common-properties/properties-main/index.js +1 -1
  339. package/src/common-properties/properties-main/properties-main-widths.scss +1 -1
  340. package/src/common-properties/properties-main/properties-main.jsx +1 -1
  341. package/src/common-properties/properties-main/properties-main.scss +1 -1
  342. package/src/common-properties/properties-store.js +1 -1
  343. package/src/common-properties/reducers/action-states.js +1 -1
  344. package/src/common-properties/reducers/component-metadata.js +1 -1
  345. package/src/common-properties/reducers/control-states.js +1 -1
  346. package/src/common-properties/reducers/dataset-metadata.js +1 -1
  347. package/src/common-properties/reducers/disable-row-move-buttons.js +1 -1
  348. package/src/common-properties/reducers/error-messages.js +1 -1
  349. package/src/common-properties/reducers/panel-states.js +1 -1
  350. package/src/common-properties/reducers/properties-settings.js +1 -1
  351. package/src/common-properties/reducers/properties.js +1 -1
  352. package/src/common-properties/reducers/row-selections.js +1 -1
  353. package/src/common-properties/reducers/row-static.js +1 -1
  354. package/src/common-properties/reducers/save-button-disable.js +1 -1
  355. package/src/common-properties/reducers/tearsheet-states.js +1 -1
  356. package/src/common-properties/reducers/wide-flyout-primary-button-disable.js +1 -1
  357. package/src/common-properties/schema-validator/properties-schema-validator.js +1 -1
  358. package/src/common-properties/ui-conditions/condition-ops/cellNotEmpty.js +1 -1
  359. package/src/common-properties/ui-conditions/condition-ops/colDoesExists.js +1 -1
  360. package/src/common-properties/ui-conditions/condition-ops/colNotExists.js +1 -1
  361. package/src/common-properties/ui-conditions/condition-ops/condition-ops.js +1 -1
  362. package/src/common-properties/ui-conditions/condition-ops/contains.js +1 -1
  363. package/src/common-properties/ui-conditions/condition-ops/dmMeasurementEquals.js +1 -1
  364. package/src/common-properties/ui-conditions/condition-ops/dmMeasurementNotEquals.js +1 -1
  365. package/src/common-properties/ui-conditions/condition-ops/dmRoleEquals.js +1 -1
  366. package/src/common-properties/ui-conditions/condition-ops/dmRoleNotEquals.js +1 -1
  367. package/src/common-properties/ui-conditions/condition-ops/dmTypeEquals.js +1 -1
  368. package/src/common-properties/ui-conditions/condition-ops/dmTypeNotEquals.js +1 -1
  369. package/src/common-properties/ui-conditions/condition-ops/equals.js +1 -1
  370. package/src/common-properties/ui-conditions/condition-ops/lengthEquals.js +1 -1
  371. package/src/common-properties/ui-conditions/condition-ops/lengthGreaterThan.js +1 -1
  372. package/src/common-properties/ui-conditions/condition-ops/lengthLessThan.js +1 -1
  373. package/src/common-properties/ui-conditions/condition-ops/matches.js +1 -1
  374. package/src/common-properties/ui-conditions/condition-ops/notContains.js +1 -1
  375. package/src/common-properties/ui-conditions/condition-ops/notEquals.js +1 -1
  376. package/src/common-properties/ui-conditions/condition-ops/notMatches.js +1 -1
  377. package/src/common-properties/ui-conditions/ui-conditions-parser.js +1 -1
  378. package/src/common-properties/ui-conditions/ui-conditions.js +1 -1
  379. package/src/common-properties/ui-conditions/ui-groups-parser.js +1 -1
  380. package/src/common-properties/util/L10nProvider.js +1 -1
  381. package/src/common-properties/util/property-utils.js +1 -1
  382. package/src/context-menu/common-context-menu.jsx +3 -3
  383. package/src/context-menu/context-menu-wrapper.jsx +1 -1
  384. package/src/context-menu/context-menu.scss +1 -1
  385. package/src/flow-validation/validate-flow.js +1 -1
  386. package/src/icons/icon.jsx +1 -1
  387. package/src/icons/icon.scss +1 -1
  388. package/src/index.js +1 -1
  389. package/src/index.scss +1 -1
  390. package/src/logging/canvas-logger.js +1 -1
  391. package/src/notification-panel/notification-panel.jsx +1 -1
  392. package/src/notification-panel/notification-panel.scss +1 -1
  393. package/src/object-model/api-pipeline.js +1 -1
  394. package/src/object-model/canvas-in-handler.js +2 -1
  395. package/src/object-model/canvas-out-handler.js +1 -1
  396. package/src/object-model/config-utils.js +21 -2
  397. package/src/object-model/layout-dimensions.js +1 -1
  398. package/src/object-model/pipeline-in-handler.js +1 -1
  399. package/src/object-model/pipeline-out-handler.js +4 -1
  400. package/src/object-model/redux/reducers/bottompanel.js +1 -1
  401. package/src/object-model/redux/reducers/breadcrumbs.js +1 -1
  402. package/src/object-model/redux/reducers/canvasconfig.js +1 -1
  403. package/src/object-model/redux/reducers/canvasinfo.js +1 -1
  404. package/src/object-model/redux/reducers/canvastoolbar.js +1 -1
  405. package/src/object-model/redux/reducers/categories.js +1 -1
  406. package/src/object-model/redux/reducers/comments.js +1 -1
  407. package/src/object-model/redux/reducers/externalpipelineflows.js +1 -1
  408. package/src/object-model/redux/reducers/links.js +1 -1
  409. package/src/object-model/redux/reducers/nodes.js +1 -1
  410. package/src/object-model/redux/reducers/nodetypes.js +1 -1
  411. package/src/object-model/redux/reducers/notificationpanel.js +1 -1
  412. package/src/object-model/redux/reducers/notifications.js +1 -1
  413. package/src/object-model/redux/reducers/palette.js +1 -1
  414. package/src/object-model/redux/reducers/ports.js +1 -1
  415. package/src/object-model/redux/reducers/rightflyout.js +1 -1
  416. package/src/object-model/redux/reducers/selectioninfo.js +1 -1
  417. package/src/object-model/redux/reducers/texttoolbar.js +1 -1
  418. package/src/object-model/redux/reducers/tooltip.js +1 -1
  419. package/src/object-model/schemas-utils/schema-validator.js +1 -1
  420. package/src/object-model/schemas-utils/upgrade-palette.js +1 -1
  421. package/src/palette/palette-content-list-item.jsx +1 -1
  422. package/src/palette/palette-content-list.jsx +1 -1
  423. package/src/palette/palette-dialog-content-categories.jsx +1 -1
  424. package/src/palette/palette-dialog-content-category.jsx +1 -1
  425. package/src/palette/palette-dialog-content-grid-node.jsx +1 -1
  426. package/src/palette/palette-dialog-content-grid.jsx +1 -1
  427. package/src/palette/palette-dialog-content.jsx +1 -1
  428. package/src/palette/palette-dialog-topbar-three-way-icon.jsx +1 -1
  429. package/src/palette/palette-dialog-topbar.jsx +1 -1
  430. package/src/palette/palette-dialog.jsx +1 -1
  431. package/src/palette/palette-flyout-content-category.jsx +1 -1
  432. package/src/palette/palette-flyout-content-filtered-list.jsx +1 -1
  433. package/src/palette/palette-flyout-content-search.jsx +1 -1
  434. package/src/palette/palette-flyout-content.jsx +1 -1
  435. package/src/palette/palette-flyout-utils.js +1 -1
  436. package/src/palette/palette-flyout.jsx +1 -1
  437. package/src/palette/palette.jsx +1 -1
  438. package/src/palette/palette.scss +1 -1
  439. package/src/themes/light.scss +1 -1
  440. package/src/toolbar/toolbar-action-item.jsx +123 -31
  441. package/src/toolbar/toolbar-action-sub-area.jsx +126 -0
  442. package/src/toolbar/toolbar-divider-item.jsx +1 -1
  443. package/src/toolbar/toolbar-overflow-item.jsx +62 -15
  444. package/src/toolbar/toolbar-overflow-menu.jsx +77 -0
  445. package/src/toolbar/toolbar-utils.js +33 -0
  446. package/src/toolbar/toolbar.jsx +18 -25
  447. package/src/toolbar/toolbar.scss +52 -26
  448. package/src/tooltip/tooltip.jsx +1 -1
  449. package/src/tooltip/tooltip.scss +1 -1
  450. package/stats.html +1 -1
  451. package/utils/logger.js +1 -1
  452. package/dist/canvas-constants-187a30d5.js +0 -2
  453. package/dist/canvas-controller-53bd69c8.js +0 -2
  454. package/dist/canvas-controller-53bd69c8.js.map +0 -1
  455. package/dist/canvas-controller-9551a089.js +0 -2
  456. package/dist/canvas-controller-9551a089.js.map +0 -1
  457. package/dist/common-canvas-1c40c3df.js +0 -2
  458. package/dist/common-canvas-1c40c3df.js.map +0 -1
  459. package/dist/common-canvas-93c3f6a4.js +0 -2
  460. package/dist/common-canvas-93c3f6a4.js.map +0 -1
  461. package/dist/common-properties-02c52656.js +0 -2
  462. package/dist/common-properties-02c52656.js.map +0 -1
  463. package/dist/common-properties-df2350d5.js +0 -2
  464. package/dist/common-properties-df2350d5.js.map +0 -1
  465. package/dist/context-menu-wrapper-6c8f7928.js +0 -2
  466. package/dist/context-menu-wrapper-6c8f7928.js.map +0 -1
  467. package/dist/context-menu-wrapper-fc78153c.js +0 -2
  468. package/dist/context-menu-wrapper-fc78153c.js.map +0 -1
  469. package/dist/datarecord-metadata-v3-schema-15146f5e.js +0 -2
  470. package/dist/datarecord-metadata-v3-schema-15146f5e.js.map +0 -1
  471. package/dist/datarecord-metadata-v3-schema-9994b9ee.js +0 -2
  472. package/dist/datarecord-metadata-v3-schema-9994b9ee.js.map +0 -1
  473. package/dist/toolbar-83b4d3d3.js +0 -2
  474. package/dist/toolbar-83b4d3d3.js.map +0 -1
  475. package/dist/toolbar-d7febd83.js +0 -2
  476. package/dist/toolbar-d7febd83.js.map +0 -1
  477. package/src/color-picker/color-picker-panel.jsx +0 -61
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2017-2022 Elyra Authors
2
+ * Copyright 2017-2023 Elyra Authors
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -28,11 +28,13 @@ import ZoomToFit from "./../../assets/images/zoom_to_fit.svg";
28
28
  import { Button } from "carbon-components-react";
29
29
  import SVG from "react-inlinesvg";
30
30
  import classNames from "classnames";
31
- import { StopFilledAlt16, Play16, Undo16, Redo16, Chat16, ChatOff16,
31
+ import ToolbarActionSubArea from "./toolbar-action-sub-area.jsx";
32
+ import { StopFilledAlt16, Play16, Undo16, Redo16, Chat16, ChatOff16, Result16,
32
33
  Cut16, Copy16, Paste16, Edit16, ColorPalette16, Maximize16, Minimize16,
33
- Launch16, AddComment16, TrashCan16, ZoomIn16, ZoomOut16, ChevronRight16 } from "@carbon/icons-react";
34
+ Launch16, AddComment16, TrashCan16, ZoomIn16, ZoomOut16,
35
+ ChevronRight16, ChevronDown16, ChevronUp16 } from "@carbon/icons-react";
34
36
  import { TOOLBAR_STOP, TOOLBAR_RUN, TOOLBAR_UNDO, TOOLBAR_REDO,
35
- TOOLBAR_CUT, TOOLBAR_COPY, TOOLBAR_PASTE,
37
+ TOOLBAR_CUT, TOOLBAR_COPY, TOOLBAR_PASTE, TOOLBAR_CLIPBOARD,
36
38
  TOOLBAR_CREATE_COMMENT, TOOLBAR_CREATE_AUTO_COMMENT, TOOLBAR_COLOR_BACKGROUND,
37
39
  TOOLBAR_DELETE_SELECTED_OBJECTS, TOOLBAR_DELETE_LINK,
38
40
  TOOLBAR_ZOOM_IN, TOOLBAR_ZOOM_OUT, TOOLBAR_ZOOM_FIT,
@@ -47,20 +49,39 @@ class ToolbarActionItem extends React.Component {
47
49
  constructor(props) {
48
50
  super(props);
49
51
 
52
+ this.state = {
53
+ subAreaDisplayed: false
54
+ };
55
+
50
56
  this.actionClickHandler = this.actionClickHandler.bind(this);
51
57
  this.onMouseEnter = this.onMouseEnter.bind(this);
52
58
  this.onMouseLeave = this.onMouseLeave.bind(this);
59
+ this.openSubArea = this.openSubArea.bind(this);
60
+ this.closeSubArea = this.closeSubArea.bind(this);
61
+ this.clickOutside = this.clickOutside.bind(this);
62
+ }
63
+
64
+ componentDidMount() {
65
+ if (this.props.actionObj.getSubPanelCloseFn) {
66
+ this.props.actionObj.getSubPanelCloseFn(this.closeSubArea);
67
+ }
68
+ }
69
+
70
+ // We must remove the eventListener in case this class is unmounted due
71
+ // to the toolbar getting redrawn.
72
+ componentWillUnmount() {
73
+ document.removeEventListener("click", this.clickOutside, false);
53
74
  }
54
75
 
55
76
  onMouseEnter(evt) {
56
- if (this.props.actionObj.subMenu || this.props.actionObj.subPanel) {
57
- this.props.subMenuActionHandler(this.props.actionObj.action);
77
+ if ((this.props.actionObj.subMenu || this.props.actionObj.subPanel) && this.props.overflow) {
78
+ this.openSubArea();
58
79
  }
59
80
  }
60
81
 
61
82
  onMouseLeave(evt) {
62
- if (this.props.actionObj.subMenu || this.props.actionObj.subPanel) {
63
- this.props.subMenuActionHandler("");
83
+ if ((this.props.actionObj.subMenu || this.props.actionObj.subPanel) && this.props.overflow) {
84
+ this.closeSubArea();
64
85
  }
65
86
  }
66
87
 
@@ -84,6 +105,8 @@ class ToolbarActionItem extends React.Component {
84
105
  return <Undo16 disabled={disabled} />;
85
106
  case (TOOLBAR_REDO):
86
107
  return <Redo16 disabled={disabled} />;
108
+ case (TOOLBAR_CLIPBOARD):
109
+ return <Result16 disabled={disabled} />;
87
110
  case (TOOLBAR_CUT):
88
111
  return <Cut16 disabled={disabled} />;
89
112
  case (TOOLBAR_COPY):
@@ -173,8 +196,45 @@ class ToolbarActionItem extends React.Component {
173
196
  return null;
174
197
  }
175
198
 
199
+ clickOutside(evt) {
200
+ if (this.state.subAreaDisplayed) {
201
+ const items = document.getElementsByClassName(this.generateActionName());
202
+ const isOver = items && items.length > 0 ? items[0].contains(evt.target) : false;
203
+
204
+ if (!isOver) {
205
+ this.closeSubArea();
206
+ }
207
+ }
208
+ }
209
+
210
+ openSubArea() {
211
+ this.setState({ subAreaDisplayed: true });
212
+ }
213
+
214
+ closeSubArea() {
215
+ this.setState({ subAreaDisplayed: false });
216
+ }
217
+
176
218
  actionClickHandler(evt) {
177
- if (!this.props.actionObj.subMenu && !this.props.actionObj.subPanel) {
219
+ if (this.props.actionObj.subMenu || this.props.actionObj.subPanel) {
220
+ if (this.state.showExtendedMenu) {
221
+ document.removeEventListener("click", this.clickOutside, false);
222
+ } else {
223
+ document.addEventListener("click", this.clickOutside, false);
224
+ }
225
+
226
+ if (this.props.setResizeHandler) {
227
+ if (this.state.subAreaDisplayed) {
228
+ this.props.setResizeHandler(null);
229
+ } else {
230
+ this.props.setResizeHandler(this.closeSubArea);
231
+ }
232
+ }
233
+
234
+ if (!this.props.overflow) {
235
+ this.setState({ subAreaDisplayed: !this.state.subAreaDisplayed });
236
+ }
237
+ } else {
178
238
  this.props.toolbarActionHandler(this.props.actionObj.action, evt);
179
239
  }
180
240
  }
@@ -204,10 +264,10 @@ class ToolbarActionItem extends React.Component {
204
264
  // If no 'kind' is set, use ghost and then override colors using the "default" class in innerDivClassName.
205
265
  const kind = actionObj.kind || "ghost";
206
266
 
207
- const chevronIcon = actionObj.subMenu || this.props.actionObj.subPanel ? (<ChevronRight16 />) : null;
267
+ const chevronIcon = this.generateChevronIcon(actionObj);
208
268
 
209
269
  let buttonContent = (
210
- <div className={itemContentClassName}>
270
+ <div id={"open-action-item"} className={itemContentClassName}>
211
271
  {labelBefore}
212
272
  {icon}
213
273
  {labelAfter}
@@ -237,6 +297,41 @@ class ToolbarActionItem extends React.Component {
237
297
  return buttonContent;
238
298
  }
239
299
 
300
+ // Returns a chevron icon if the action icon is displaying a sub-menu or
301
+ // sub-panel. The chevron will:
302
+ // * point right if this action item is in a drop down menu
303
+ // * point down if this action item is displayed with text in the toolbar
304
+ // and the menu isn't displayed
305
+ // * point up if this action item is displayed with text in the toolbar
306
+ // and the menu is displayed
307
+ // * be a mini-chevron (small triangle in the bottom right of icon) if this
308
+ // action item isn't displayed with text.
309
+ generateChevronIcon(actionObj) {
310
+ if (actionObj.subMenu || actionObj.subPanel) {
311
+ if (this.props.overflow) {
312
+ return (<ChevronRight16 />);
313
+ }
314
+ if (actionObj.incLabelWithIcon === "before" ||
315
+ actionObj.incLabelWithIcon === "after") {
316
+ const chev = this.state.subAreaDisplayed ? (<ChevronUp16 />) : (<ChevronDown16 />);
317
+ return (<div className={"toolbar-up-down-chevron"}>{chev}</div>);
318
+ }
319
+ return this.generateChevronMini();
320
+ }
321
+ return null;
322
+ }
323
+
324
+ // Returns an svg to display the little triangle that appears in the bottom
325
+ // right corner of icons that, when clicked, show a drop down menu.
326
+ generateChevronMini() {
327
+ const path = this.props.size === "sm" ? "M 29 29 L 29 23 23 29 Z" : "M 37 37 L 37 30 30 37 Z";
328
+ return (
329
+ <svg className="toolbar-tick-svg">
330
+ <path d={path} className="toolbar-tick-mark" />
331
+ </svg>
332
+ );
333
+ }
334
+
240
335
  generateActionName(actionObj) {
241
336
  return this.props.actionObj.action + "-action";
242
337
  }
@@ -277,24 +372,19 @@ class ToolbarActionItem extends React.Component {
277
372
  // supPanel field OR a sub-menu which is a list of options which is created
278
373
  // from the array of items the caller passes in the subMenu field.
279
374
  generateSubArea() {
280
- if (this.props.displaySubArea) {
281
- if (this.props.actionObj.subPanel) {
282
- return (
283
- <div className={"toolbar-popover-list subpanel"}>
284
- {this.props.actionObj.subPanel}
285
- </div>
286
- );
287
- }
288
- const subMenuItems = this.props.generateToolbarItems(this.props.actionObj.subMenu, true, false);
375
+ const elements = document.getElementsByClassName(this.generateActionName());
376
+ const actionItemRect = elements && elements.length > 0 ? elements[0].getBoundingClientRect() : { top: 0, left: 0, width: 120 };
289
377
 
290
- return (
291
- <div className={"toolbar-popover-list submenu"}>
292
- {subMenuItems}
293
- </div>
294
- );
295
- }
296
-
297
- return null;
378
+ return (
379
+ <ToolbarActionSubArea
380
+ actionObj={this.props.actionObj}
381
+ generateToolbarItems={this.props.generateToolbarItems}
382
+ closeSubArea={this.props.actionObj.closeSubAreaOnClick ? this.closeSubArea : null}
383
+ actionItemRect={actionItemRect}
384
+ containingDivId={this.props.containingDivId}
385
+ expandDirection={this.props.overflow ? "horizontal" : "vertical" }
386
+ />
387
+ );
298
388
  }
299
389
 
300
390
  render() {
@@ -320,7 +410,7 @@ class ToolbarActionItem extends React.Component {
320
410
  kindAsClass,
321
411
  actionName);
322
412
 
323
- const subArea = this.generateSubArea();
413
+ const subArea = this.state.subAreaDisplayed ? this.generateSubArea() : null;
324
414
 
325
415
  return (
326
416
  <div className={itemClassName} data-toolbar-item={isToolbarItem} onMouseEnter={this.onMouseEnter} onMouseLeave={this.onMouseLeave}>
@@ -352,6 +442,8 @@ ToolbarActionItem.propTypes = {
352
442
  textContent: PropTypes.string,
353
443
  isSelected: PropTypes.bool,
354
444
  kind: PropTypes.string,
445
+ closeSubAreaOnClick: PropTypes.bool,
446
+ getSubPanelCloseFn: PropTypes.func,
355
447
  subMenu: PropTypes.array,
356
448
  subPanel: PropTypes.object,
357
449
  jsx: PropTypes.object,
@@ -363,10 +455,10 @@ ToolbarActionItem.propTypes = {
363
455
  }),
364
456
  tooltipDirection: PropTypes.oneOf(["top", "bottom"]),
365
457
  toolbarActionHandler: PropTypes.func.isRequired,
366
- subMenuActionHandler: PropTypes.func.isRequired,
367
458
  generateToolbarItems: PropTypes.func.isRequired,
459
+ setResizeHandler: PropTypes.func,
368
460
  instanceId: PropTypes.number.isRequired,
369
- displaySubArea: PropTypes.bool,
461
+ containingDivId: PropTypes.string,
370
462
  overflow: PropTypes.bool,
371
463
  onFocus: PropTypes.func,
372
464
  size: PropTypes.oneOf(["md", "sm"])
@@ -0,0 +1,126 @@
1
+ /*
2
+ * Copyright 2023 Elyra Authors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import React from "react";
18
+ import PropTypes from "prop-types";
19
+ import { genElementByClass, genRectByClass } from "./toolbar-utils.js";
20
+
21
+ class ToolbarActionSubArea extends React.Component {
22
+ constructor(props) {
23
+ super(props);
24
+
25
+ this.onClick = this.onClick.bind(this);
26
+ }
27
+
28
+ componentDidMount() {
29
+ if (this.props.containingDivId) {
30
+ this.adjustSubAreaPosition();
31
+ }
32
+ }
33
+
34
+ // If we are given a closeSubArea function then call it. We will only have
35
+ // such a function if the user has specified the closeSubAreaOnClick prop for
36
+ // the parent action AND provided the user has not stopped event propogation.
37
+ onClick() {
38
+ if (this.props.closeSubArea) {
39
+ this.props.closeSubArea();
40
+ }
41
+ }
42
+
43
+ // Adjust the position of the sub-area to make sure it doesn't extend
44
+ // outside the containing divs boundary. We need to do this after the subarea
45
+ // has been mounted so we can query its size and position.
46
+ adjustSubAreaPosition() {
47
+ const containingDiv = document.getElementById(this.props.containingDivId);
48
+ const containingDivRect = containingDiv.getBoundingClientRect();
49
+
50
+ const classToGet = this.props.actionObj.subPanel ? "subpanel" : "submenu";
51
+
52
+ const thisArea = genElementByClass(classToGet, containingDiv);
53
+ const thisAreaRect = genRectByClass(classToGet, containingDiv);
54
+
55
+ const outsideBottom = thisAreaRect.bottom - containingDivRect.bottom;
56
+ const outsideRight = thisAreaRect.right - containingDivRect.right;
57
+
58
+ if (this.props.expandDirection === "vertical") {
59
+ if (outsideBottom > 0) {
60
+ const newTop = this.props.actionItemRect.top - thisAreaRect.height;
61
+ thisArea.style.top = newTop + "px";
62
+ }
63
+
64
+ if (outsideRight > 0) {
65
+ const newLeft = this.props.actionItemRect.left - outsideRight - 2;
66
+ thisArea.style.left = newLeft + "px";
67
+ }
68
+
69
+ } else {
70
+ if (outsideBottom > 0) {
71
+ const newTop = thisAreaRect.top - outsideBottom - 2;
72
+ thisArea.style.top = newTop + "px";
73
+ }
74
+
75
+ if (outsideRight > 0) {
76
+ const newLeft = this.props.actionItemRect.left - thisAreaRect.width;
77
+ thisArea.style.left = newLeft + "px";
78
+ }
79
+ }
80
+ }
81
+
82
+ generateSubAreaStyle() {
83
+ if (this.props.expandDirection === "vertical") {
84
+ return {
85
+ top: this.props.actionItemRect.bottom + 1,
86
+ left: this.props.actionItemRect.left
87
+ };
88
+ }
89
+ return {
90
+ top: this.props.actionItemRect.top - 1,
91
+ left: this.props.actionItemRect.left + this.props.actionItemRect.width
92
+ };
93
+ }
94
+
95
+ render() {
96
+ const style = this.generateSubAreaStyle();
97
+
98
+ if (this.props.actionObj.subPanel) {
99
+ return (
100
+ <div style={style} className={"toolbar-popover-list subpanel"} onClick={this.onClick}>
101
+ {this.props.actionObj.subPanel}
102
+ </div>
103
+ );
104
+ } else if (this.props.actionObj.subMenu) {
105
+ const subMenuItems = this.props.generateToolbarItems(this.props.actionObj.subMenu, true, false);
106
+
107
+ return (
108
+ <div style={style} className={"toolbar-popover-list submenu"} onClick={this.onClick}>
109
+ {subMenuItems}
110
+ </div>
111
+ );
112
+ }
113
+ return null;
114
+ }
115
+ }
116
+
117
+ ToolbarActionSubArea.propTypes = {
118
+ actionObj: PropTypes.object.isRequired,
119
+ generateToolbarItems: PropTypes.func.isRequired,
120
+ closeSubArea: PropTypes.func,
121
+ actionItemRect: PropTypes.object.isRequired,
122
+ expandDirection: PropTypes.string.isRequired,
123
+ containingDivId: PropTypes.string
124
+ };
125
+
126
+ export default ToolbarActionSubArea;
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2017-2022 Elyra Authors
2
+ * Copyright 2017-2023 Elyra Authors
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2017-2022 Elyra Authors
2
+ * Copyright 2017-2023 Elyra Authors
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -17,36 +17,83 @@
17
17
  import React from "react";
18
18
  import PropTypes from "prop-types";
19
19
 
20
+ import { v4 as uuid4 } from "uuid";
20
21
  import { Button } from "carbon-components-react";
21
22
  import { OverflowMenuVertical16 } from "@carbon/icons-react";
23
+ import ToolbarOverflowMenu from "./toolbar-overflow-menu.jsx";
22
24
 
23
25
  class ToolbarOverflowItem extends React.Component {
24
26
  constructor(props) {
25
27
  super(props);
28
+
29
+ this.state = {
30
+ showExtendedMenu: false
31
+ };
32
+ this.uuid = uuid4();
26
33
  this.toggleExtendedMenu = this.toggleExtendedMenu.bind(this);
34
+ this.clickOutside = this.clickOutside.bind(this);
35
+ }
36
+
37
+ // We must remove the eventListener in case this class is unmounted due
38
+ // to the toolbar getting redrawn.
39
+ componentWillUnmount() {
40
+ document.removeEventListener("click", this.clickOutside, false);
41
+ }
42
+
43
+ genOverflowButtonClass() {
44
+ return "toolbar-spacer toolbar-index-" + this.props.index + " toolbar-uuid-" + this.uuid;
27
45
  }
28
46
 
29
47
  toggleExtendedMenu() {
30
- this.props.toggleExtendedMenu(this.props.index);
48
+ if (this.state.showExtendedMenu) {
49
+ document.removeEventListener("click", this.clickOutside, false);
50
+ } else {
51
+ document.addEventListener("click", this.clickOutside, false);
52
+ }
53
+
54
+ if (this.props.setResizeHandler) {
55
+ if (this.state.showExtendedMenu) {
56
+ this.props.setResizeHandler(null);
57
+ } else {
58
+ this.props.setResizeHandler(() => {
59
+ this.setState({ showExtendedMenu: false });
60
+ });
61
+ }
62
+ }
63
+
64
+ this.setState({ showExtendedMenu: !this.state.showExtendedMenu });
65
+ }
66
+
67
+ clickOutside(evt) {
68
+ if (this.state.showExtendedMenu) {
69
+ const items = document.getElementsByClassName("toolbar-uuid-" + this.uuid);
70
+ const isOver = items && items.length > 0 ? items[0].contains(evt.target) : false;
71
+
72
+ if (!isOver) {
73
+ this.setState({ showExtendedMenu: false });
74
+ }
75
+ }
31
76
  }
32
77
 
33
78
  render() {
79
+ if (this.props.setResizeHandler && !this.state.showExtendedMenu) {
80
+ this.props.setResizeHandler(null);
81
+ }
82
+
34
83
  let overflowMenu = null;
35
- if (this.props.showExtendedMenu) {
84
+ if (this.state.showExtendedMenu) {
36
85
  const menuItems = this.props.generateExtensionMenuItems(this.props.index);
37
- if (menuItems.length > 0) {
38
- overflowMenu = (
39
- <div className={"toolbar-popover-list"}>
40
- {menuItems}
41
- </div>
42
- );
43
- }
86
+ overflowMenu = (
87
+ <ToolbarOverflowMenu
88
+ menuItems={menuItems}
89
+ containingDivId={this.props.containingDivId}
90
+ buttonClass={"toolbar-uuid-" + this.uuid}
91
+ />
92
+ );
44
93
  }
45
94
 
46
- const className = "toolbar-spacer toolbar-index-" + this.props.index;
47
-
48
95
  return (
49
- <div className={className} >
96
+ <div className={this.genOverflowButtonClass()} >
50
97
  <div className={"toolbar-overflow-item"}>
51
98
  <Button kind="ghost"
52
99
  tabIndex={-1}
@@ -69,10 +116,10 @@ class ToolbarOverflowItem extends React.Component {
69
116
  }
70
117
 
71
118
  ToolbarOverflowItem.propTypes = {
72
- showExtendedMenu: PropTypes.bool.isRequired,
73
- toggleExtendedMenu: PropTypes.func.isRequired,
74
119
  index: PropTypes.number.isRequired,
75
120
  generateExtensionMenuItems: PropTypes.func,
121
+ setResizeHandler: PropTypes.func,
122
+ containingDivId: PropTypes.string,
76
123
  onFocus: PropTypes.func,
77
124
  label: PropTypes.string,
78
125
  size: PropTypes.oneOf(["md", "sm"])
@@ -0,0 +1,77 @@
1
+ /*
2
+ * Copyright 2017-2023 Elyra Authors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import React from "react";
18
+ import PropTypes from "prop-types";
19
+ import { genElementByClass, genRectByClass } from "./toolbar-utils.js";
20
+
21
+ class ToolbarOverflowMenu extends React.Component {
22
+
23
+ componentDidMount() {
24
+ if (this.props.containingDivId) {
25
+ this.setSubAreaStyle();
26
+ }
27
+ }
28
+
29
+ setSubAreaStyle() {
30
+ const containingDiv = document.getElementById(this.props.containingDivId);
31
+ const containingDivRect = containingDiv.getBoundingClientRect();
32
+
33
+ const mainMenu = genElementByClass("toolbar-popover-list", containingDiv);
34
+ const mainMenuRect = genRectByClass("toolbar-popover-list", containingDiv);
35
+
36
+ if (mainMenuRect) {
37
+ const overflowButtonRect = genRectByClass(this.props.buttonClass, containingDiv);
38
+
39
+ if (overflowButtonRect) {
40
+ const contextToolbaRect = genRectByClass("context-toolbar", containingDiv);
41
+
42
+ if (contextToolbaRect) {
43
+ const outsideRight = mainMenuRect.right - containingDivRect.right;
44
+ if (outsideRight > 0) {
45
+ const overflowIconOffsetX = overflowButtonRect.left - contextToolbaRect.left;
46
+ mainMenu.style.left = (overflowIconOffsetX - outsideRight - 2) + "px";
47
+ }
48
+
49
+ const outsideBottom = mainMenuRect.bottom - containingDivRect.bottom;
50
+ if (outsideBottom > 0) {
51
+ mainMenu.style.top = -mainMenuRect.height + "px";
52
+ }
53
+ }
54
+ }
55
+ }
56
+ }
57
+
58
+ render() {
59
+ let overflowMenu = null;
60
+ if (this.props.menuItems.length > 0) {
61
+ overflowMenu = (
62
+ <div className={"toolbar-popover-list"}>
63
+ {this.props.menuItems}
64
+ </div>
65
+ );
66
+ }
67
+ return overflowMenu;
68
+ }
69
+ }
70
+
71
+ ToolbarOverflowMenu.propTypes = {
72
+ menuItems: PropTypes.array.isRequired,
73
+ containingDivId: PropTypes.string,
74
+ buttonClass: PropTypes.string
75
+ };
76
+
77
+ export default ToolbarOverflowMenu;
@@ -0,0 +1,33 @@
1
+ /*
2
+ * Copyright 2017-2023 Elyra Authors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ export const genElementByClass = (className, containingDiv) => {
18
+ const elements = containingDiv.getElementsByClassName(className);
19
+
20
+ if (elements && elements.length > 0) {
21
+ return elements[0];
22
+ }
23
+ return null;
24
+ };
25
+
26
+ export const genRectByClass = (className, containingDiv) => {
27
+ const element = genElementByClass(className, containingDiv);
28
+
29
+ if (element) {
30
+ return element.getBoundingClientRect();
31
+ }
32
+ return null;
33
+ };