@elyra/canvas 12.16.0 → 12.21.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 (155) hide show
  1. package/dist/canvas-controller-ccb05f9f.js +2 -0
  2. package/dist/canvas-controller-ccb05f9f.js.map +1 -0
  3. package/dist/canvas-controller-feabad26.js +2 -0
  4. package/dist/canvas-controller-feabad26.js.map +1 -0
  5. package/dist/{common-canvas-51ed78a5.js → common-canvas-bcfe04ef.js} +2 -2
  6. package/dist/common-canvas-bcfe04ef.js.map +1 -0
  7. package/dist/{common-canvas-d0230688.js → common-canvas-c4f77878.js} +2 -2
  8. package/dist/common-canvas-c4f77878.js.map +1 -0
  9. package/dist/common-canvas.es.js +1 -1
  10. package/dist/common-canvas.js +1 -1
  11. package/dist/common-properties-267a9a6c.js +2 -0
  12. package/dist/common-properties-267a9a6c.js.map +1 -0
  13. package/dist/common-properties-6520f90b.js +2 -0
  14. package/dist/common-properties-6520f90b.js.map +1 -0
  15. package/dist/{extends-8d17c85c.js → extends-12382a72.js} +2 -2
  16. package/dist/extends-12382a72.js.map +1 -0
  17. package/dist/extends-195c6b49.js +7 -0
  18. package/dist/extends-195c6b49.js.map +1 -0
  19. package/dist/flexible-table-056c538e.js +2 -0
  20. package/dist/{flexible-table-60c73b88.js.map → flexible-table-056c538e.js.map} +1 -1
  21. package/dist/flexible-table-7fb8a62e.js +2 -0
  22. package/dist/{flexible-table-0c7ae548.js.map → flexible-table-7fb8a62e.js.map} +1 -1
  23. package/dist/{icon-918d2dd3.js → icon-162ec1ee.js} +2 -2
  24. package/dist/{icon-918d2dd3.js.map → icon-162ec1ee.js.map} +1 -1
  25. package/dist/{icon-4882a57f.js → icon-1ef0f3b9.js} +2 -2
  26. package/dist/{icon-4882a57f.js.map → icon-1ef0f3b9.js.map} +1 -1
  27. package/dist/{index-390d8148.js → index-61be3509.js} +2 -2
  28. package/dist/index-61be3509.js.map +1 -0
  29. package/dist/index-8076376e.js +2 -0
  30. package/dist/index-8076376e.js.map +1 -0
  31. package/dist/lib/canvas-controller.es.js +1 -1
  32. package/dist/lib/canvas-controller.js +1 -1
  33. package/dist/lib/canvas.es.js +1 -1
  34. package/dist/lib/canvas.js +1 -1
  35. package/dist/lib/context-menu.es.js +1 -1
  36. package/dist/lib/context-menu.js +1 -1
  37. package/dist/lib/properties/field-picker.es.js +1 -1
  38. package/dist/lib/properties/field-picker.js +1 -1
  39. package/dist/lib/properties/flexible-table.es.js +1 -1
  40. package/dist/lib/properties/flexible-table.js +1 -1
  41. package/dist/lib/properties.es.js +1 -1
  42. package/dist/lib/properties.js +1 -1
  43. package/dist/styles/common-canvas.min.css +1 -1
  44. package/dist/styles/common-canvas.min.css.map +1 -1
  45. package/dist/{toolbar-3f4b173f.js → toolbar-59ce5251.js} +2 -2
  46. package/dist/{toolbar-3f4b173f.js.map → toolbar-59ce5251.js.map} +1 -1
  47. package/dist/{toolbar-29ec7983.js → toolbar-bb5bee87.js} +2 -2
  48. package/dist/{toolbar-29ec7983.js.map → toolbar-bb5bee87.js.map} +1 -1
  49. package/locales/command-actions/locales/de.json +8 -8
  50. package/locales/command-actions/locales/es.json +8 -8
  51. package/locales/command-actions/locales/fr.json +9 -9
  52. package/locales/command-actions/locales/it.json +13 -13
  53. package/locales/command-actions/locales/ja.json +8 -8
  54. package/locales/command-actions/locales/ko.json +8 -8
  55. package/locales/command-actions/locales/pt-br.json +10 -10
  56. package/locales/command-actions/locales/sv.json +1 -1
  57. package/locales/command-actions/locales/zh-CN.json +8 -8
  58. package/locales/command-actions/locales/zh-TW.json +10 -10
  59. package/locales/common-canvas/locales/de.json +18 -4
  60. package/locales/common-canvas/locales/es.json +16 -2
  61. package/locales/common-canvas/locales/fr.json +16 -2
  62. package/locales/common-canvas/locales/it.json +17 -3
  63. package/locales/common-canvas/locales/ja.json +19 -5
  64. package/locales/common-canvas/locales/ko.json +25 -11
  65. package/locales/common-canvas/locales/pt-br.json +18 -4
  66. package/locales/common-canvas/locales/sv.json +18 -4
  67. package/locales/common-canvas/locales/zh-CN.json +15 -1
  68. package/locales/common-canvas/locales/zh-TW.json +15 -1
  69. package/locales/common-properties/locales/de.json +22 -22
  70. package/locales/common-properties/locales/en.json +7 -1
  71. package/locales/common-properties/locales/eo.json +6 -0
  72. package/locales/common-properties/locales/es.json +12 -12
  73. package/locales/common-properties/locales/fr.json +22 -22
  74. package/locales/common-properties/locales/it.json +13 -13
  75. package/locales/common-properties/locales/ja.json +28 -28
  76. package/locales/common-properties/locales/ko.json +10 -10
  77. package/locales/common-properties/locales/pt-br.json +16 -16
  78. package/locales/common-properties/locales/sv.json +8 -8
  79. package/locales/common-properties/locales/zh-CN.json +28 -28
  80. package/locales/common-properties/locales/zh-TW.json +26 -26
  81. package/locales/palette/locales/it.json +1 -1
  82. package/locales/palette/locales/ja.json +1 -1
  83. package/locales/palette/locales/pt-br.json +1 -1
  84. package/locales/palette/locales/sv.json +1 -1
  85. package/locales/palette/locales/zh-CN.json +4 -4
  86. package/locales/palette/locales/zh-TW.json +2 -2
  87. package/locales/toolbar/locales/es.json +1 -1
  88. package/locales/toolbar/locales/it.json +2 -2
  89. package/locales/toolbar/locales/pt-br.json +1 -1
  90. package/package.json +3 -3
  91. package/src/command-actions/createCommentAction.js +5 -9
  92. package/src/common-canvas/canvas-controller.js +13 -2
  93. package/src/common-canvas/svg-canvas-d3.js +2 -2
  94. package/src/common-canvas/svg-canvas-renderer.js +11 -5
  95. package/src/common-properties/actions.js +10 -0
  96. package/src/common-properties/components/components.scss +1 -1
  97. package/src/common-properties/components/editor-form/editor-form.jsx +23 -3
  98. package/src/common-properties/components/wide-flyout/wide-flyout.jsx +5 -2
  99. package/src/common-properties/constants/constants.js +10 -1
  100. package/src/common-properties/constants/form-constants.js +6 -2
  101. package/src/common-properties/controls/abstract-table.jsx +2 -2
  102. package/src/common-properties/controls/checkboxset/checkboxset.scss +7 -4
  103. package/src/common-properties/controls/control-factory.js +5 -0
  104. package/src/common-properties/controls/controls.scss +1 -0
  105. package/src/common-properties/controls/dropdown/dropdown.jsx +7 -5
  106. package/src/common-properties/controls/expression/expression-builder/expression-select-field-function.jsx +14 -2
  107. package/src/common-properties/controls/expression/expression-toggle/expression-toggle.jsx +74 -0
  108. package/src/common-properties/controls/expression/expression-toggle/expression-toggle.scss +12 -0
  109. package/src/common-properties/controls/expression/expression.jsx +15 -1
  110. package/src/common-properties/controls/expression/expression.scss +61 -33
  111. package/src/common-properties/controls/expression/expressionInfo-parser.js +11 -1
  112. package/src/common-properties/controls/passwordfield/passwordfield.jsx +16 -14
  113. package/src/common-properties/controls/radioset/radioset.jsx +4 -4
  114. package/src/common-properties/controls/selectcolumns/selectcolumns.jsx +3 -3
  115. package/src/common-properties/controls/someofselect/someofselect.jsx +4 -4
  116. package/src/common-properties/controls/toggle/index.jsx +18 -0
  117. package/src/common-properties/controls/toggle/toggle.jsx +89 -0
  118. package/src/common-properties/controls/toggle/toggle.scss +23 -0
  119. package/src/common-properties/form/ControlInfo.js +3 -0
  120. package/src/common-properties/form/EditorForm.js +12 -1
  121. package/src/common-properties/form/ParameterInfo.js +5 -0
  122. package/src/common-properties/form/UIItem.js +10 -0
  123. package/src/common-properties/panels/panels.scss +1 -0
  124. package/src/common-properties/panels/summary/summary.jsx +5 -2
  125. package/src/common-properties/panels/tearsheet/index.js +18 -0
  126. package/src/common-properties/panels/tearsheet/tearsheet.jsx +54 -0
  127. package/src/common-properties/panels/tearsheet/tearsheet.scss +31 -0
  128. package/src/common-properties/properties-controller.js +40 -13
  129. package/src/common-properties/properties-main/properties-main.jsx +1 -0
  130. package/src/common-properties/properties-store.js +35 -3
  131. package/src/common-properties/reducers/tearsheet-states.js +29 -0
  132. package/src/common-properties/reducers/wide-flyout-primary-button-disable.jsx +31 -0
  133. package/src/common-properties/ui-conditions/condition-ops/colDoesExists.js +9 -3
  134. package/src/common-properties/ui-conditions/conditions-utils.js +10 -16
  135. package/src/object-model/api-pipeline.js +11 -4
  136. package/src/palette/palette-content-list-item.jsx +3 -1
  137. package/stats.html +1 -1
  138. package/dist/canvas-controller-c420f377.js +0 -2
  139. package/dist/canvas-controller-c420f377.js.map +0 -1
  140. package/dist/canvas-controller-e02a5de5.js +0 -2
  141. package/dist/canvas-controller-e02a5de5.js.map +0 -1
  142. package/dist/common-canvas-51ed78a5.js.map +0 -1
  143. package/dist/common-canvas-d0230688.js.map +0 -1
  144. package/dist/common-properties-0a697e6a.js +0 -2
  145. package/dist/common-properties-0a697e6a.js.map +0 -1
  146. package/dist/common-properties-233593d2.js +0 -2
  147. package/dist/common-properties-233593d2.js.map +0 -1
  148. package/dist/extends-1139e06f.js +0 -7
  149. package/dist/extends-1139e06f.js.map +0 -1
  150. package/dist/extends-8d17c85c.js.map +0 -1
  151. package/dist/flexible-table-0c7ae548.js +0 -2
  152. package/dist/flexible-table-60c73b88.js +0 -2
  153. package/dist/index-390d8148.js.map +0 -1
  154. package/dist/index-e6d8ea9c.js +0 -2
  155. package/dist/index-e6d8ea9c.js.map +0 -1
@@ -15,55 +15,83 @@
15
15
  */
16
16
 
17
17
  @import "./expression-builder/expression-builder";
18
+ @import "./expression-toggle/expression-toggle";
18
19
 
19
- /* Override so Codemirror autocomplete shows up on top */
20
- .CodeMirror-hints {
21
- z-index: 1110;
22
- }
20
+ .react-codemirror2 {
21
+ .CodeMirror {
22
+ width: 100%;
23
+ background: $field-02;
24
+ color: $text-01;
23
25
 
24
- .CodeMirror-placeholder {
25
- opacity: 0.5;
26
- }
26
+ .CodeMirror-gutters {
27
+ border-right: none;
28
+ background-color: inherit;
29
+ }
27
30
 
28
- .CodeMirror {
29
- width: 100%;
30
- background: $field-02;
31
- color: $text-01;
32
- }
31
+ .CodeMirror-lines {
32
+ padding-top: $spacing-05;
33
+ .CodeMirror-line-like {
34
+ padding-left: $spacing-03;
35
+ }
36
+ .CodeMirror-placeholder {
37
+ opacity: 0.5;
38
+ @include carbon--type-style("code-02");
39
+ }
40
+ .CodeMirror-cursor {
41
+ border-left: 1px solid $text-01;
42
+ }
43
+ .CodeMirror-code {
33
44
 
34
- .CodeMirror-cursor {
35
- border-left: 1px solid $text-01;
36
- }
45
+ .CodeMirror-linenumber {
46
+ @include carbon--type-style("body-short-01");
47
+ }
37
48
 
38
- .cm-s-error.CodeMirror { border: $spacing-01 solid $support-01; }
49
+ .CodeMirror-line {
50
+ padding-left: $spacing-03;
39
51
 
40
- .cm-s-warning.CodeMirror { border: $spacing-01 solid $support-03; }
52
+ span {
53
+ @include carbon--type-style("code-02");
54
+ }
55
+ }
56
+ }
57
+ }
58
+ }
41
59
 
42
- .cm-s-disabled.CodeMirror { opacity: 0.5}
60
+ .cm-s-error.CodeMirror { border: $spacing-01 solid $support-01; }
43
61
 
44
- .cm-s-custom .cm-keyword { color: $link-01; }
62
+ .cm-s-warning.CodeMirror { border: $spacing-01 solid $support-03; }
45
63
 
46
- .cm-s-custom .cm-number { color: $text-02; }
64
+ .cm-s-disabled.CodeMirror { opacity: 0.5}
47
65
 
48
- .cm-s-custom .cm-def { color: $support-01; }
66
+ .cm-s-custom .cm-keyword { color: $link-01; }
49
67
 
50
- .cm-s-custom .cm-comment { color: $support-02; }
68
+ .cm-s-custom .cm-number { color: $text-02; }
51
69
 
52
- .cm-s-custom .cm-variable,
53
- .cm-s-custom .cm-punctuation,
54
- .cm-s-custom .cm-property,
55
- .cm-s-custom .cm-operator {
56
- color: $text-01;
57
- }
58
- .cm-s-custom .cm-variable-2 { color: $text-01; }
70
+ .cm-s-custom .cm-def { color: $support-01; }
71
+
72
+ .cm-s-custom .cm-comment { color: $support-02; }
73
+
74
+ .cm-s-custom .cm-variable,
75
+ .cm-s-custom .cm-punctuation,
76
+ .cm-s-custom .cm-property,
77
+ .cm-s-custom .cm-operator {
78
+ color: $text-01;
79
+ }
80
+ .cm-s-custom .cm-variable-2 { color: $text-01; }
59
81
 
60
- .cm-s-custom .cm-variable-3, .cm-s-custom .cm-type { color: $text-01; }
82
+ .cm-s-custom .cm-variable-3, .cm-s-custom .cm-type { color: $text-01; }
61
83
 
62
- .cm-s-custom .cm-string { color: $text-error; }
84
+ .cm-s-custom .cm-string { color: $text-error; }
63
85
 
64
- .cm-s-custom .cm-string-2 { color: $text-error; }
86
+ .cm-s-custom .cm-string-2 { color: $text-error; }
65
87
 
66
- .cm-s-custom .cm-meta { color: $ui-01; }
88
+ .cm-s-custom .cm-meta { color: $ui-01; }
89
+ }
90
+
91
+ /* Override so Codemirror autocomplete shows up on top */
92
+ .CodeMirror-hints {
93
+ z-index: 1110;
94
+ }
67
95
 
68
96
  .properties-expression-editor {
69
97
  border: 1px solid $ui-03;
@@ -15,7 +15,7 @@
15
15
  */
16
16
 
17
17
  import logger from "../../../../utils/logger";
18
- import { L10nProvider } from "../../util/L10nProvider";
18
+ import { L10nProvider, ResourceDef } from "../../util/L10nProvider";
19
19
  import { cloneDeep, propertyOf } from "lodash";
20
20
 
21
21
  function setExpressionInfo(inExpressionInfo) {
@@ -75,6 +75,11 @@ function setExpressionInfo(inExpressionInfo) {
75
75
  }
76
76
  }
77
77
  }
78
+
79
+ if (inExpressionInfo && inExpressionInfo.resources) {
80
+ expressionFunctionInfo.resources = inExpressionInfo.resources;
81
+ }
82
+
78
83
  return expressionFunctionInfo;
79
84
  }
80
85
 
@@ -85,6 +90,11 @@ function _genFunctionParameters(functionInfoList, l10nProvider) {
85
90
  newEntry.locLabel = l10nProvider.l10nLabel(newEntry, newEntry.id);
86
91
  newEntry.help = l10nProvider.l10nDesc(newEntry, newEntry.locLabel);
87
92
  newEntry.value = newEntry.locLabel;
93
+ // Translatable return type of function
94
+ if (newEntry.return_type_label) {
95
+ const returnTypeLabel = ResourceDef.make(newEntry.return_type_label);
96
+ newEntry.locReturnType = l10nProvider.l10nResource(returnTypeLabel);
97
+ }
88
98
  if (Array.isArray(functionInfo.parameters)) {
89
99
  // if the function label has any parameter substituion char '?' then replace with parameter label
90
100
  if (newEntry.locLabel && newEntry.locLabel.indexOf("?") !== -1) {
@@ -17,7 +17,7 @@
17
17
  import React from "react";
18
18
  import PropTypes from "prop-types";
19
19
  import { connect } from "react-redux";
20
- import { TextInput } from "carbon-components-react";
20
+ import { TextInput, Form } from "carbon-components-react";
21
21
  import ValidationMessage from "./../../components/validation-message";
22
22
  import * as ControlUtils from "./../../util/control-utils";
23
23
  import { STATES } from "./../../constants/constants.js";
@@ -40,19 +40,21 @@ class PasswordControl extends React.Component {
40
40
  const validationProps = ControlUtils.getValidationProps(this.props.messageInfo, this.props.tableControl);
41
41
  return (
42
42
  <div className={className} data-id={ControlUtils.getDataId(this.props.propertyId)}>
43
- <TextInput.PasswordInput
44
- {...validationProps}
45
- autoComplete="off"
46
- id={this.id}
47
- disabled={this.props.state === STATES.DISABLED}
48
- placeholder={this.props.control.additionalText}
49
- onChange={this.handleChange.bind(this)}
50
- value={value}
51
- labelText={this.props.controlItem}
52
- hideLabel={this.props.tableControl}
53
- light={this.props.controller.getLight()}
54
- tooltipAlignment="end"
55
- />
43
+ <Form>
44
+ <TextInput.PasswordInput
45
+ {...validationProps}
46
+ autoComplete="off"
47
+ id={this.id}
48
+ disabled={this.props.state === STATES.DISABLED}
49
+ placeholder={this.props.control.additionalText}
50
+ onChange={this.handleChange.bind(this)}
51
+ value={value}
52
+ labelText={this.props.controlItem}
53
+ hideLabel={this.props.tableControl}
54
+ light={this.props.controller.getLight()}
55
+ tooltipAlignment="end"
56
+ />
57
+ </Form>
56
58
  <ValidationMessage inTable={this.props.tableControl} tableOnly state={this.props.state} messageInfo={this.props.messageInfo} />
57
59
  </div>);
58
60
  }
@@ -23,7 +23,7 @@ import * as ConditionsUtils from "./../../ui-conditions/conditions-utils.js";
23
23
  import ValidationMessage from "./../../components/validation-message";
24
24
  import { RadioButton } from "carbon-components-react";
25
25
  import classNames from "classnames";
26
- import { STATES } from "./../../constants/constants.js";
26
+ import { STATES, UPDATE_TYPE } from "./../../constants/constants.js";
27
27
  import { ORIENTATIONS } from "./../../constants/form-constants.js";
28
28
  import { v4 as uuid4 } from "uuid";
29
29
  import { Information16 } from "@carbon/icons-react";
@@ -39,7 +39,7 @@ class RadiosetControl extends React.Component {
39
39
  }
40
40
 
41
41
  componentDidMount() {
42
- this.updateValueFromFilterEnum(true);
42
+ this.updateValueFromFilterEnum(true, UPDATE_TYPE.INITIAL_LOAD);
43
43
  const val = this.props.controller.getPropertyValue(this.props.propertyId);
44
44
  this.setEnabledStateOfOptionalPanels(val);
45
45
  if (typeof this.props.value !== "undefined" && this.props.value !== null) {
@@ -92,7 +92,7 @@ class RadiosetControl extends React.Component {
92
92
  }
93
93
 
94
94
  // this is needed in order to reset the property value when a value is filtered out.
95
- updateValueFromFilterEnum(skipValidateInput) {
95
+ updateValueFromFilterEnum(skipValidateInput, updateType) {
96
96
  if (this.props.value !== null && typeof this.props.value !== "undefined" &&
97
97
  !this.props.controlOpts.values.includes(this.props.value)) {
98
98
  let defaultValue = null;
@@ -100,7 +100,7 @@ class RadiosetControl extends React.Component {
100
100
  if (this.props.control.valueDef && this.props.control.valueDef.defaultValue && this.props.controlOpts.values.includes(this.props.control.valueDef.defaultValue)) {
101
101
  defaultValue = this.props.control.valueDef.defaultValue;
102
102
  }
103
- this.props.controller.updatePropertyValue(this.props.propertyId, defaultValue, skipValidateInput);
103
+ this.props.controller.updatePropertyValue(this.props.propertyId, defaultValue, skipValidateInput, updateType);
104
104
  }
105
105
  }
106
106
 
@@ -31,7 +31,7 @@ import ReadonlyControl from "./../readonly";
31
31
 
32
32
  /* eslint max-depth: ["error", 6] */
33
33
 
34
- class SelectColumns extends AbstractTable {
34
+ class SelectColumnsControl extends AbstractTable {
35
35
 
36
36
  constructor(props) {
37
37
  super(props);
@@ -170,7 +170,7 @@ class SelectColumns extends AbstractTable {
170
170
  }
171
171
  }
172
172
 
173
- SelectColumns.propTypes = {
173
+ SelectColumnsControl.propTypes = {
174
174
  control: PropTypes.object.isRequired,
175
175
  propertyId: PropTypes.object.isRequired,
176
176
  controller: PropTypes.object.isRequired,
@@ -194,4 +194,4 @@ const mapStateToProps = (state, ownProps) => ({
194
194
  tableButtons: ownProps.controller.getTableButtons(ownProps.propertyId)
195
195
  });
196
196
 
197
- export default connect(mapStateToProps, null)(SelectColumns);
197
+ export default connect(mapStateToProps, null)(SelectColumnsControl);
@@ -23,7 +23,7 @@ import ValidationMessage from "./../../components/validation-message";
23
23
  import classNames from "classnames";
24
24
  import { isEqual, intersection } from "lodash";
25
25
 
26
- import { STATES } from "../../constants/constants";
26
+ import { STATES, UPDATE_TYPE } from "../../constants/constants";
27
27
 
28
28
  class SomeofselectControl extends React.Component {
29
29
  constructor(props) {
@@ -34,7 +34,7 @@ class SomeofselectControl extends React.Component {
34
34
  }
35
35
 
36
36
  componentDidMount() {
37
- this.updateValueFromFilterEnum(true);
37
+ this.updateValueFromFilterEnum(true, UPDATE_TYPE.INITIAL_LOAD);
38
38
  }
39
39
 
40
40
  componentDidUpdate(prevProps) {
@@ -45,10 +45,10 @@ class SomeofselectControl extends React.Component {
45
45
  }
46
46
 
47
47
  // this is needed in order to reset the property value when a value is filtered out.
48
- updateValueFromFilterEnum(skipValidateInput) {
48
+ updateValueFromFilterEnum(skipValidateInput, updateType) {
49
49
  const newValues = intersection(this.props.value, this.props.controlOpts.values);
50
50
  if (!isEqual(newValues, this.props.value)) {
51
- this.props.controller.updatePropertyValue(this.props.propertyId, newValues, skipValidateInput);
51
+ this.props.controller.updatePropertyValue(this.props.propertyId, newValues, skipValidateInput, updateType);
52
52
  }
53
53
  }
54
54
 
@@ -0,0 +1,18 @@
1
+ /*
2
+ * Copyright 2017-2022 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 ToggleControl from "./toggle.jsx";
18
+ export default ToggleControl;
@@ -0,0 +1,89 @@
1
+ /*
2
+ * Copyright 2017-2022 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 { connect } from "react-redux";
20
+ import { Toggle } from "carbon-components-react";
21
+ import ValidationMessage from "./../../components/validation-message";
22
+ import * as ControlUtils from "./../../util/control-utils";
23
+ import { STATES, MESSAGE_KEYS } from "./../../constants/constants.js";
24
+ import classNames from "classnames";
25
+ import { formatMessage } from "./../../util/property-utils";
26
+
27
+
28
+ class ToggleControl extends React.Component {
29
+ constructor(props) {
30
+ super(props);
31
+ this.id = ControlUtils.getControlId(this.props.propertyId);
32
+ }
33
+
34
+
35
+ handleChange(value) {
36
+ this.props.controller.updatePropertyValue(this.props.propertyId, value);
37
+ }
38
+
39
+ render() {
40
+ const overrideLabelKeyOn = `${this.props.control.name}.toggle.on.label`;
41
+ const overrideLabelKeyOff = `${this.props.control.name}.toggle.off.label`;
42
+
43
+ const defaultOnEditLabel = formatMessage(this.reactIntl, MESSAGE_KEYS.TOGGLE_ON_LABEL);
44
+ const defaultOffEditLabel = formatMessage(this.reactIntl, MESSAGE_KEYS.TOGGLE_OFF_LABEL);
45
+
46
+ const labelOn = this.props.controller.getResource(overrideLabelKeyOn, defaultOnEditLabel);
47
+ const labelOff = this.props.controller.getResource(overrideLabelKeyOff, defaultOffEditLabel);
48
+ const size = this.props.tableControl ? "sm" : "md";
49
+ const toggleControl = (<Toggle
50
+ id={this.id}
51
+ size={size}
52
+ disabled={this.props.state === STATES.DISABLED}
53
+ toggled={Boolean(this.props.value)}
54
+ labelB={labelOn}
55
+ labelA={labelOff}
56
+ onToggle={this.handleChange.bind(this)}
57
+ labelText={this.props.controlItem}
58
+ />);
59
+
60
+
61
+ const className = classNames("properties-toggle", { "hide": this.props.state === STATES.HIDDEN }, this.props.messageInfo ? this.props.messageInfo.type : null);
62
+ return (
63
+ <div className={className} data-id={ControlUtils.getDataId(this.props.propertyId)}>
64
+ {toggleControl}
65
+ <ValidationMessage inTable={this.props.tableControl} state={this.props.state} messageInfo={this.props.messageInfo} />
66
+ </div>
67
+
68
+ );
69
+ }
70
+ }
71
+
72
+ ToggleControl.propTypes = {
73
+ control: PropTypes.object.isRequired,
74
+ propertyId: PropTypes.object.isRequired,
75
+ controller: PropTypes.object.isRequired,
76
+ controlItem: PropTypes.element,
77
+ tableControl: PropTypes.bool,
78
+ state: PropTypes.string, // pass in by redux
79
+ value: PropTypes.bool, // pass in by redux
80
+ messageInfo: PropTypes.object // pass in by redux
81
+ };
82
+
83
+ const mapStateToProps = (state, ownProps) => ({
84
+ value: ownProps.controller.getPropertyValue(ownProps.propertyId),
85
+ state: ownProps.controller.getControlState(ownProps.propertyId),
86
+ messageInfo: ownProps.controller.getErrorMessage(ownProps.propertyId)
87
+ });
88
+
89
+ export default connect(mapStateToProps, null)(ToggleControl);
@@ -0,0 +1,23 @@
1
+ /*
2
+ * Copyright 2017-2022 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
+ .properties-table-cell-control { // overrides when in a table cell
18
+ .properties-toggle {
19
+ .bx--toggle__switch { // override carbon when inside a table
20
+ margin: $spacing-02 0;
21
+ }
22
+ }
23
+ }
@@ -68,6 +68,9 @@ export class Control {
68
68
  if (settings.language) {
69
69
  this.language = settings.language;
70
70
  }
71
+ if (settings.enableMaximize) {
72
+ this.enableMaximize = settings.enableMaximize;
73
+ }
71
74
  if (settings.charLimit) {
72
75
  this.charLimit = settings.charLimit;
73
76
  }
@@ -238,6 +238,17 @@ function _makeUIItem(parameterMetadata, actionMetadata, group, structureMetadata
238
238
  }
239
239
  return UIItem.makePanel(new ControlPanel(groupName, PanelType.TWISTY_PANEL, groupClassName, nestedPanel, panSubItems, groupLabel, group.open));
240
240
  }
241
+ case GroupType.TEARSHEET_PANEL: {
242
+ groupLabel = l10nProvider.l10nLabel(group, group.name);
243
+ const panSubItems = [];
244
+ if (Array.isArray(group.subGroups)) {
245
+ group.subGroups.forEach(function(subGroup) {
246
+ groupItem = _makeUIItem(parameterMetadata, actionMetadata, subGroup, structureMetadata, l10nProvider);
247
+ panSubItems.push(groupItem);
248
+ });
249
+ }
250
+ return UIItem.makeTearsheetPanel(new ControlPanel(groupName, PanelType.TEARSHEET, groupClassName, nestedPanel, panSubItems, groupLabel, false), group.description);
251
+ }
241
252
  default:
242
253
  logger.warn("(Unknown group type '" + group.groupType() + "')");
243
254
  return null;
@@ -605,6 +616,7 @@ function _makeControl(parameterMetadata, paramName, group, structureDefinition,
605
616
  settings.moveableRows = moveableRows;
606
617
  settings.required = required;
607
618
  settings.language = parameter.language;
619
+ settings.enableMaximize = parameter.enableMaximize;
608
620
  settings.summary = parameter.summary;
609
621
  settings.increment = parameter.increment;
610
622
  settings.rowSelection = rowSelection;
@@ -625,7 +637,6 @@ function _makeControl(parameterMetadata, paramName, group, structureDefinition,
625
637
  settings.customValueAllowed = parameter.customValueAllowed;
626
638
  settings.className = parameter.className;
627
639
  settings.buttons = buttons;
628
-
629
640
  if (isSubControl) {
630
641
  settings.visible = parameter.visible;
631
642
  settings.width = parameter.columns(8);
@@ -113,6 +113,10 @@ export class ParameterDef {
113
113
  if (settings.language) {
114
114
  this.language = settings.language;
115
115
  }
116
+ if (settings.enableMaximize) {
117
+ this.enableMaximize = settings.enableMaximize;
118
+ }
119
+
116
120
  if (toType(settings.summary) === "boolean") {
117
121
  this.summary = settings.summary;
118
122
  }
@@ -314,6 +318,7 @@ export class ParameterDef {
314
318
  if (param) {
315
319
  return new ParameterDef({
316
320
  "id": propertyOf(param)("id"),
321
+ "enableMaximize": propertyOf(uihint)("enable_maximize"),
317
322
  "label": propertyOf(uihint)("label"),
318
323
  "description": propertyOf(uihint)("description"),
319
324
  "type": propertyOf(param)("type"),
@@ -123,4 +123,14 @@ export class UIItem {
123
123
  className: className
124
124
  });
125
125
  }
126
+
127
+ static makeTearsheetPanel(control, description) {
128
+ return new UIItem({
129
+ itemType: ItemType.TEARSHEET,
130
+ panel: {
131
+ ...control,
132
+ description
133
+ }
134
+ });
135
+ }
126
136
  }
@@ -22,3 +22,4 @@
22
22
  @import "./action-panel/action-panel";
23
23
  @import "./column/column";
24
24
  @import "./control/control";
25
+ @import "./tearsheet/tearsheet";
@@ -299,6 +299,7 @@ class SummaryPanel extends React.Component {
299
299
  rejectLabel={rejectLabel}
300
300
  title={this.props.panel.label}
301
301
  light={this.props.controller.getLight()}
302
+ okButtonEnabled={this.props.okButtonEnabled}
302
303
  >
303
304
  <div>
304
305
  {this.props.children}
@@ -326,11 +327,13 @@ SummaryPanel.propTypes = {
326
327
  controller: PropTypes.object.isRequired,
327
328
  children: PropTypes.array,
328
329
  panel: PropTypes.object.isRequired,
329
- panelState: PropTypes.string // set by redux
330
+ panelState: PropTypes.string, // set by redux
331
+ okButtonEnabled: PropTypes.bool // set by redux
330
332
  };
331
333
 
332
334
  const mapStateToProps = (state, ownProps) => ({
333
- panelState: ownProps.controller.getPanelState({ name: ownProps.panel.id })
335
+ panelState: ownProps.controller.getPanelState({ name: ownProps.panel.id }),
336
+ okButtonEnabled: !ownProps.controller.getWideFlyoutPrimaryButtonDisabled({ name: ownProps.panel.id })
334
337
  });
335
338
 
336
339
  export default connect(mapStateToProps, null)(SummaryPanel);
@@ -0,0 +1,18 @@
1
+ /*
2
+ * Copyright 2017-2022 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 TearSheet from "./tearsheet.jsx";
18
+ export default TearSheet;
@@ -0,0 +1,54 @@
1
+ import React, { Component } from "react";
2
+ import PropTypes from "prop-types";
3
+ import { ComposedModal, ModalHeader, ModalBody } from "carbon-components-react";
4
+ import { Portal } from "react-portal";
5
+
6
+ class TearSheet extends Component {
7
+ constructor(props) {
8
+ super(props);
9
+ this.state = {
10
+ open: false
11
+ };
12
+ }
13
+ componentDidMount() {
14
+ setTimeout(() => {
15
+ this.setState({
16
+ open: true
17
+ });
18
+ }, 0);
19
+ }
20
+ render() {
21
+ const title = this.props.panel.label ? this.props.panel.label : null;
22
+ const description = this.props.panel.description ? this.props.panel.description.default : null;
23
+ return (
24
+ <Portal>
25
+ <ComposedModal
26
+ className="properties-tearsheet-panel"
27
+ open={this.state.open}
28
+ size="lg"
29
+ preventCloseOnClickOutside
30
+ >
31
+ <ModalHeader
32
+ title={title}
33
+ buttonOnClick={() => {
34
+ setTimeout(() => {
35
+ this.props.controller.clearActiveTearsheet();
36
+ }, 500);
37
+ }}
38
+ >
39
+ {description ? (<p>{description}</p>) : null}
40
+ </ModalHeader>
41
+ <ModalBody>
42
+ {this.props.children}
43
+ </ModalBody>
44
+ </ComposedModal>
45
+ </Portal>);
46
+ }
47
+ }
48
+ TearSheet.propTypes = {
49
+ panel: PropTypes.object.isRequired,
50
+ controller: PropTypes.object.isRequired,
51
+ children: PropTypes.array
52
+ };
53
+
54
+ export default TearSheet;
@@ -0,0 +1,31 @@
1
+ .properties-tearsheet-panel.bx--modal {
2
+ align-items: flex-end;
3
+ .bx--modal-container {
4
+ max-height: calc(100% - 88px);
5
+ height: 100%;
6
+ width: calc(100% - 128px);
7
+ transform: translate3d(0, 500px, 0);
8
+ transition: transform 240ms cubic-bezier(0, 0, 0.3, 1);
9
+ .bx--modal-header {
10
+ padding: $spacing-06 $spacing-07;
11
+ border-bottom: 1px solid $ui-03;
12
+ margin-bottom: 0;
13
+ h3 {
14
+ @include carbon--type-style("productive-heading-04");
15
+ }
16
+ p {
17
+ margin-top: $spacing-03;
18
+ @include carbon--type-style("body-short-01");
19
+ }
20
+ }
21
+ .bx--modal-content {
22
+ padding: $spacing-06 $spacing-07;
23
+ background-color: $ui-background;
24
+ margin-bottom: 0;
25
+ .react-codemirror2, .react-codemirror2 .CodeMirror {
26
+ background-color: $ui-01;
27
+ }
28
+ }
29
+ }
30
+
31
+ }