@elyra/canvas 12.23.1 → 12.24.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.
- package/dist/canvas-constants-07dbe4b7.js +2 -0
- package/dist/{canvas-constants-ab55d0fd.js.map → canvas-constants-07dbe4b7.js.map} +1 -1
- package/dist/canvas-constants-ba465147.js +2 -0
- package/dist/canvas-constants-ba465147.js.map +1 -0
- package/dist/canvas-controller-60ed1f25.js +2 -0
- package/dist/canvas-controller-60ed1f25.js.map +1 -0
- package/dist/canvas-controller-6239cacc.js +2 -0
- package/dist/canvas-controller-6239cacc.js.map +1 -0
- package/dist/{canvas-logger-fa8cef5b.js → canvas-logger-27d3180d.js} +2 -2
- package/dist/{canvas-logger-fa8cef5b.js.map → canvas-logger-27d3180d.js.map} +1 -1
- package/dist/{canvas-logger-3459dfc2.js → canvas-logger-bb537fb3.js} +2 -2
- package/dist/{canvas-logger-3459dfc2.js.map → canvas-logger-bb537fb3.js.map} +1 -1
- package/dist/common-canvas-4ae99af6.js +2 -0
- package/dist/common-canvas-4ae99af6.js.map +1 -0
- package/dist/common-canvas-86633e44.js +2 -0
- package/dist/common-canvas-86633e44.js.map +1 -0
- package/dist/common-canvas.es.js +1 -1
- package/dist/common-canvas.js +1 -1
- package/dist/common-properties-2bc0b14a.js +2 -0
- package/dist/common-properties-2bc0b14a.js.map +1 -0
- package/dist/common-properties-56bf68a6.js +2 -0
- package/dist/common-properties-56bf68a6.js.map +1 -0
- package/dist/createClass-826941b3.js +2 -0
- package/dist/createClass-826941b3.js.map +1 -0
- package/dist/createClass-be661622.js +2 -0
- package/dist/createClass-be661622.js.map +1 -0
- package/dist/{datarecord-metadata-v3-schema-03db5d5d.js → datarecord-metadata-v3-schema-3323a91e.js} +2 -2
- package/dist/{datarecord-metadata-v3-schema-03db5d5d.js.map → datarecord-metadata-v3-schema-3323a91e.js.map} +1 -1
- package/dist/{datarecord-metadata-v3-schema-07d7682c.js → datarecord-metadata-v3-schema-93ec5562.js} +2 -2
- package/dist/{datarecord-metadata-v3-schema-07d7682c.js.map → datarecord-metadata-v3-schema-93ec5562.js.map} +1 -1
- package/dist/en-7201b548.js +2 -0
- package/dist/{en-8647c347.js.map → en-7201b548.js.map} +1 -1
- package/dist/en-a08356c8.js +2 -0
- package/dist/{en-7a0f1db1.js.map → en-a08356c8.js.map} +1 -1
- package/dist/extends-11efb86b.js +7 -0
- package/dist/extends-11efb86b.js.map +1 -0
- package/dist/extends-bb395e42.js +7 -0
- package/dist/extends-bb395e42.js.map +1 -0
- package/dist/flexible-table-989859ec.js +2 -0
- package/dist/flexible-table-989859ec.js.map +1 -0
- package/dist/flexible-table-d51a7d72.js +2 -0
- package/dist/flexible-table-d51a7d72.js.map +1 -0
- package/dist/getPrototypeOf-1e698126.js +2 -0
- package/dist/getPrototypeOf-1e698126.js.map +1 -0
- package/dist/getPrototypeOf-3751add9.js +2 -0
- package/dist/getPrototypeOf-3751add9.js.map +1 -0
- package/dist/icon-037ad6d1.js +2 -0
- package/dist/{icon-816af0e7.js.map → icon-037ad6d1.js.map} +1 -1
- package/dist/icon-b619470c.js +2 -0
- package/dist/{icon-2c16236a.js.map → icon-b619470c.js.map} +1 -1
- package/dist/{index-2f6be19d.js → index-46a80c08.js} +2 -2
- package/dist/{index-2f6be19d.js.map → index-46a80c08.js.map} +1 -1
- package/dist/index-b527a82d.js +2 -0
- package/dist/{index-6f739fa1.js.map → index-b527a82d.js.map} +1 -1
- package/dist/isArrayLikeObject-a9c7973b.js +1 -1
- package/dist/isArrayLikeObject-a9c7973b.js.map +1 -1
- package/dist/isArrayLikeObject-f3b27f64.js +1 -1
- package/dist/isArrayLikeObject-f3b27f64.js.map +1 -1
- package/dist/lib/canvas-controller.es.js +1 -1
- package/dist/lib/canvas-controller.js +1 -1
- package/dist/lib/canvas.es.js +1 -1
- package/dist/lib/canvas.js +1 -1
- package/dist/lib/command-stack.es.js +1 -1
- package/dist/lib/command-stack.js +1 -1
- package/dist/lib/context-menu.es.js +1 -1
- package/dist/lib/context-menu.js +1 -1
- package/dist/lib/properties/field-picker.es.js +1 -1
- package/dist/lib/properties/field-picker.js +1 -1
- package/dist/lib/properties/flexible-table.es.js +1 -1
- package/dist/lib/properties/flexible-table.js +1 -1
- package/dist/lib/properties.es.js +1 -1
- package/dist/lib/properties.js +1 -1
- package/dist/lib/tooltip.es.js +1 -1
- package/dist/lib/tooltip.js +1 -1
- package/dist/styles/common-canvas.min.css +1 -1
- package/dist/styles/common-canvas.min.css.map +1 -1
- package/dist/toolbar-3f93ec4b.js +2 -0
- package/dist/toolbar-3f93ec4b.js.map +1 -0
- package/dist/toolbar-e4c551ae.js +2 -0
- package/dist/toolbar-e4c551ae.js.map +1 -0
- package/locales/command-actions/locales/en.json +1 -1
- package/locales/command-actions/locales/eo.json +41 -41
- package/locales/common-canvas/locales/en.json +1 -0
- package/locales/common-canvas/locales/eo.json +1 -0
- package/locales/common-properties/locales/de.json +10 -1
- package/locales/common-properties/locales/en.json +4 -1
- package/locales/common-properties/locales/eo.json +23 -18
- package/locales/common-properties/locales/es.json +10 -1
- package/locales/common-properties/locales/fr.json +10 -1
- package/locales/common-properties/locales/it.json +10 -1
- package/locales/common-properties/locales/ja.json +10 -1
- package/locales/common-properties/locales/ko.json +10 -1
- package/locales/common-properties/locales/pt-br.json +10 -1
- package/locales/common-properties/locales/sv.json +10 -1
- package/locales/common-properties/locales/zh-CN.json +10 -1
- package/locales/common-properties/locales/zh-TW.json +10 -1
- package/package.json +1 -1
- package/src/common-canvas/canvas-controller.js +38 -4
- package/src/common-canvas/svg-canvas-d3.js +12 -0
- package/src/common-canvas/svg-canvas-renderer.js +244 -66
- package/src/common-canvas/svg-canvas-utils-links.js +37 -7
- package/src/common-canvas/svg-canvas-utils-markdown.js +0 -2
- package/src/common-canvas/svg-canvas-utils-textarea.js +56 -43
- package/src/common-properties/components/editor-form/editor-form.jsx +19 -5
- package/src/common-properties/components/editor-form/editor-form.scss +30 -3
- package/src/common-properties/components/field-picker/field-picker.jsx +18 -59
- package/src/common-properties/components/field-picker/field-picker.scss +15 -24
- package/src/common-properties/components/flexible-table/flexible-table.jsx +32 -16
- package/src/common-properties/components/flexible-table/flexible-table.scss +6 -12
- package/src/common-properties/components/properties-modal/properties-modal.jsx +3 -1
- package/src/common-properties/components/properties-modal/properties-modal.scss +1 -0
- package/src/common-properties/components/table-buttons/table-buttons.jsx +1 -0
- package/src/common-properties/components/table-buttons/table-buttons.scss +4 -26
- package/src/common-properties/components/virtualized-table/virtualized-table.jsx +6 -5
- package/src/common-properties/constants/constants.js +11 -2
- package/src/common-properties/controls/abstract-table.jsx +12 -4
- package/src/common-properties/controls/datefield/datefield.jsx +1 -1
- package/src/common-properties/controls/dropdown/dropdown.jsx +3 -3
- package/src/common-properties/controls/expression/expression-builder/expression-select-field-function.jsx +11 -2
- package/src/common-properties/controls/expression/expression-toggle/expression-toggle.jsx +5 -6
- package/src/common-properties/controls/expression/expression.jsx +3 -1
- package/src/common-properties/controls/expression/expression.scss +1 -2
- package/src/common-properties/controls/list/list.jsx +1 -1
- package/src/common-properties/controls/multiselect/multiselect.jsx +2 -2
- package/src/common-properties/controls/numberfield/numberfield.jsx +30 -6
- package/src/common-properties/controls/passwordfield/passwordfield.jsx +13 -2
- package/src/common-properties/controls/radioset/radioset.scss +1 -5
- package/src/common-properties/controls/selectcolumns/selectcolumns.jsx +1 -1
- package/src/common-properties/controls/someofselect/someofselect.jsx +1 -1
- package/src/common-properties/controls/textarea/textarea.jsx +2 -2
- package/src/common-properties/controls/textfield/textfield.jsx +1 -1
- package/src/common-properties/controls/timefield/timefield.jsx +1 -1
- package/src/common-properties/form/ControlInfo.js +3 -1
- package/src/common-properties/form/EditorForm.js +11 -11
- package/src/common-properties/index.scss +2 -4
- package/src/common-properties/panels/control/control.jsx +1 -0
- package/src/common-properties/panels/control/control.scss +12 -0
- package/src/common-properties/panels/sub-panel/invoker.jsx +2 -0
- package/src/common-properties/panels/sub-panel/sub-panel.scss +6 -0
- package/src/common-properties/panels/subtabs/subtabs.jsx +13 -3
- package/src/common-properties/panels/subtabs/subtabs.scss +62 -0
- package/src/common-properties/panels/tearsheet/tearsheet.jsx +64 -7
- package/src/common-properties/panels/tearsheet/tearsheet.scss +84 -18
- package/src/common-properties/properties-controller.js +4 -0
- package/src/common-properties/properties-main/properties-main.jsx +17 -1
- package/src/object-model/api-pipeline.js +1 -6
- package/src/object-model/canvas-in-handler.js +6 -3
- package/src/object-model/layout-dimensions.js +12 -0
- package/src/object-model/object-model.js +7 -39
- package/src/object-model/redux/canvas-store.js +55 -0
- package/src/toolbar/toolbar-action-item.jsx +3 -1
- package/src/toolbar/toolbar-overflow-item.jsx +3 -1
- package/src/toolbar/toolbar.jsx +6 -2
- package/src/toolbar/toolbar.scss +21 -0
- package/stats.html +1 -1
- package/dist/canvas-constants-09ffa4d4.js +0 -2
- package/dist/canvas-constants-09ffa4d4.js.map +0 -1
- package/dist/canvas-constants-ab55d0fd.js +0 -2
- package/dist/canvas-controller-3a399ae6.js +0 -2
- package/dist/canvas-controller-3a399ae6.js.map +0 -1
- package/dist/canvas-controller-c046093c.js +0 -2
- package/dist/canvas-controller-c046093c.js.map +0 -1
- package/dist/common-canvas-088c1a4b.js +0 -2
- package/dist/common-canvas-088c1a4b.js.map +0 -1
- package/dist/common-canvas-7676cc1b.js +0 -2
- package/dist/common-canvas-7676cc1b.js.map +0 -1
- package/dist/common-properties-9d77f8e1.js +0 -2
- package/dist/common-properties-9d77f8e1.js.map +0 -1
- package/dist/common-properties-a31de521.js +0 -2
- package/dist/common-properties-a31de521.js.map +0 -1
- package/dist/createClass-72b049bc.js +0 -2
- package/dist/createClass-72b049bc.js.map +0 -1
- package/dist/createClass-d5cac0b7.js +0 -2
- package/dist/createClass-d5cac0b7.js.map +0 -1
- package/dist/en-7a0f1db1.js +0 -2
- package/dist/en-8647c347.js +0 -2
- package/dist/extends-87da7df3.js +0 -7
- package/dist/extends-87da7df3.js.map +0 -1
- package/dist/extends-dc95dba8.js +0 -7
- package/dist/extends-dc95dba8.js.map +0 -1
- package/dist/flexible-table-59ad2c83.js +0 -2
- package/dist/flexible-table-59ad2c83.js.map +0 -1
- package/dist/flexible-table-5c4fbb7b.js +0 -2
- package/dist/flexible-table-5c4fbb7b.js.map +0 -1
- package/dist/getPrototypeOf-4e282dd3.js +0 -2
- package/dist/getPrototypeOf-4e282dd3.js.map +0 -1
- package/dist/getPrototypeOf-b3806813.js +0 -2
- package/dist/getPrototypeOf-b3806813.js.map +0 -1
- package/dist/icon-2c16236a.js +0 -2
- package/dist/icon-816af0e7.js +0 -2
- package/dist/index-6f739fa1.js +0 -2
- package/dist/toolbar-2ef99bd8.js +0 -2
- package/dist/toolbar-2ef99bd8.js.map +0 -1
- package/dist/toolbar-cb967e26.js +0 -2
- package/dist/toolbar-cb967e26.js.map +0 -1
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
.properties-radioset-tooltip {
|
|
51
51
|
display: flex;
|
|
52
52
|
align-items: center;
|
|
53
|
-
margin: 2.5px 0 1.5px
|
|
53
|
+
margin: 2.5px 0 1.5px 0;
|
|
54
54
|
}
|
|
55
55
|
.properties-control-nested-panel{
|
|
56
56
|
flex-basis: 100%;
|
|
@@ -59,10 +59,6 @@
|
|
|
59
59
|
&:last-of-type {
|
|
60
60
|
margin-bottom: 0; // don't want margin when last radio button in group
|
|
61
61
|
}
|
|
62
|
-
.bx--radio-button-wrapper > label {
|
|
63
|
-
justify-content: left; // override carbon style to center justify radio-button labels
|
|
64
|
-
align-items: center;
|
|
65
|
-
}
|
|
66
62
|
}
|
|
67
63
|
&.error:not([disabled]) {
|
|
68
64
|
padding-bottom: $spacing-02;
|
|
@@ -137,7 +137,7 @@ class SelectColumnsControl extends AbstractTable {
|
|
|
137
137
|
selectedRows={this.props.selectedRows}
|
|
138
138
|
rowSelection={this.props.control.rowSelection}
|
|
139
139
|
updateRowSelections={this.updateRowSelections}
|
|
140
|
-
light={this.props.controller.getLight() &&
|
|
140
|
+
light={this.props.controller.getLight() && this.props.control.light && !this.props.controller.isTearsheetContainer()}
|
|
141
141
|
emptyTablePlaceholder={this.props.control.additionalText}
|
|
142
142
|
/>);
|
|
143
143
|
|
|
@@ -109,7 +109,7 @@ class SomeofselectControl extends React.Component {
|
|
|
109
109
|
updateRowSelections={this.updateSelections}
|
|
110
110
|
selectable
|
|
111
111
|
showHeader={false}
|
|
112
|
-
light={this.props.controller.getLight() &&
|
|
112
|
+
light={this.props.controller.getLight() && this.props.control.light && !this.props.controller.isTearsheetContainer()}
|
|
113
113
|
emptyTablePlaceholder={this.props.control.additionalText}
|
|
114
114
|
/>
|
|
115
115
|
<ValidationMessage state={this.props.state} messageInfo={this.props.messageInfo} inTable={this.props.tableControl} />
|
|
@@ -78,7 +78,7 @@ class TextareaControl extends React.Component {
|
|
|
78
78
|
value={value}
|
|
79
79
|
labelText={this.props.controlItem}
|
|
80
80
|
hideLabel={this.props.tableControl}
|
|
81
|
-
light={this.props.controller.getLight() &&
|
|
81
|
+
light={this.props.controller.getLight() && this.props.control.light}
|
|
82
82
|
/>
|
|
83
83
|
<ValidationMessage inTable={this.props.tableControl} tableOnly={!showValidationMessage} state={""} messageInfo={errorMessage} />
|
|
84
84
|
</div>);
|
|
@@ -92,7 +92,7 @@ class TextareaControl extends React.Component {
|
|
|
92
92
|
value={value}
|
|
93
93
|
labelText={this.props.controlItem}
|
|
94
94
|
hideLabel={this.props.tableControl}
|
|
95
|
-
light={this.props.controller.getLight() &&
|
|
95
|
+
light={this.props.controller.getLight() && this.props.control.light}
|
|
96
96
|
/>);
|
|
97
97
|
}
|
|
98
98
|
|
|
@@ -103,7 +103,7 @@ class TextfieldControl extends React.Component {
|
|
|
103
103
|
value={value}
|
|
104
104
|
labelText={this.props.controlItem}
|
|
105
105
|
hideLabel={this.props.tableControl}
|
|
106
|
-
light={this.props.controller.getLight() &&
|
|
106
|
+
light={this.props.controller.getLight() && this.props.control.light}
|
|
107
107
|
/>);
|
|
108
108
|
}
|
|
109
109
|
|
|
@@ -81,7 +81,7 @@ class TimefieldControl extends React.Component {
|
|
|
81
81
|
value={this.value}
|
|
82
82
|
labelText={this.props.controlItem}
|
|
83
83
|
hideLabel={this.props.tableControl}
|
|
84
|
-
light={this.props.controller.getLight() &&
|
|
84
|
+
light={this.props.controller.getLight() && this.props.control.light}
|
|
85
85
|
/>
|
|
86
86
|
<ValidationMessage inTable={this.props.tableControl} tableOnly state={this.props.state} messageInfo={this.props.messageInfo} />
|
|
87
87
|
</div>
|
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
+
import { get } from "lodash";
|
|
18
|
+
|
|
17
19
|
import { EditStyle } from "../constants/form-constants";
|
|
18
20
|
|
|
19
21
|
|
|
@@ -184,6 +186,6 @@ export class Control {
|
|
|
184
186
|
if (settings.buttons) {
|
|
185
187
|
this.buttons = settings.buttons;
|
|
186
188
|
}
|
|
187
|
-
this.light = settings
|
|
189
|
+
this.light = get(settings, "light", true);
|
|
188
190
|
}
|
|
189
191
|
}
|
|
@@ -135,7 +135,7 @@ function makePrimaryTab(propertyDef, group, l10nProvider) {
|
|
|
135
135
|
return new EditorTab(label, group.name, _makeUIItem(propertyDef.parameterMetadata, propertyDef.actionMetadata, group, propertyDef.structureMetadata, l10nProvider));
|
|
136
136
|
}
|
|
137
137
|
|
|
138
|
-
function _makeUIItem(parameterMetadata, actionMetadata, group, structureMetadata, l10nProvider, light =
|
|
138
|
+
function _makeUIItem(parameterMetadata, actionMetadata, group, structureMetadata, l10nProvider, light = true) {
|
|
139
139
|
const groupName = group.name;
|
|
140
140
|
let groupItem = null;
|
|
141
141
|
let groupLabel = null;
|
|
@@ -147,10 +147,10 @@ function _makeUIItem(parameterMetadata, actionMetadata, group, structureMetadata
|
|
|
147
147
|
_makeControls(parameterMetadata, actionMetadata, group, structureMetadata, l10nProvider, light)));
|
|
148
148
|
case GroupType.COLUMN_SELECTION:
|
|
149
149
|
return UIItem.makePanel(new ControlPanel(groupName, PanelType.COLUMN_SELECTION, groupClassName, nestedPanel,
|
|
150
|
-
_makeControls(parameterMetadata, actionMetadata, group, structureMetadata, l10nProvider)));
|
|
150
|
+
_makeControls(parameterMetadata, actionMetadata, group, structureMetadata, l10nProvider, light)));
|
|
151
151
|
case GroupType.ADDITIONAL: {
|
|
152
152
|
const panel = new ControlPanel(groupName, PanelType.GENERAL, groupClassName, nestedPanel,
|
|
153
|
-
_makeControls(parameterMetadata, actionMetadata, group, structureMetadata, l10nProvider));
|
|
153
|
+
_makeControls(parameterMetadata, actionMetadata, group, structureMetadata, l10nProvider, light));
|
|
154
154
|
groupLabel = l10nProvider.l10nLabel(group, group.name);
|
|
155
155
|
return UIItem.makeAdditionalLink(groupLabel, groupLabel, panel);
|
|
156
156
|
}
|
|
@@ -160,7 +160,7 @@ function _makeUIItem(parameterMetadata, actionMetadata, group, structureMetadata
|
|
|
160
160
|
if (Array.isArray(group.subGroups)) {
|
|
161
161
|
group.subGroups.forEach(function(subGroup) {
|
|
162
162
|
const subGroupName = subGroup.name;
|
|
163
|
-
groupItem = _makeUIItem(parameterMetadata, actionMetadata, subGroup, structureMetadata, l10nProvider);
|
|
163
|
+
groupItem = _makeUIItem(parameterMetadata, actionMetadata, subGroup, structureMetadata, l10nProvider, light);
|
|
164
164
|
groupLabel = l10nProvider.l10nLabel(subGroup, subGroup.name);
|
|
165
165
|
subTabItems.push(new EditorTab(groupLabel, subGroupName, groupItem));
|
|
166
166
|
});
|
|
@@ -176,7 +176,7 @@ function _makeUIItem(parameterMetadata, actionMetadata, group, structureMetadata
|
|
|
176
176
|
const panSubItems = [];
|
|
177
177
|
if (Array.isArray(group.subGroups)) {
|
|
178
178
|
group.subGroups.forEach(function(subGroup) {
|
|
179
|
-
groupItem = _makeUIItem(parameterMetadata, actionMetadata, subGroup, structureMetadata, l10nProvider);
|
|
179
|
+
groupItem = _makeUIItem(parameterMetadata, actionMetadata, subGroup, structureMetadata, l10nProvider, light);
|
|
180
180
|
panSubItems.push(groupItem);
|
|
181
181
|
});
|
|
182
182
|
}
|
|
@@ -186,7 +186,7 @@ function _makeUIItem(parameterMetadata, actionMetadata, group, structureMetadata
|
|
|
186
186
|
const panSubItems = [];
|
|
187
187
|
if (Array.isArray(group.subGroups)) {
|
|
188
188
|
group.subGroups.forEach(function(subGroup) {
|
|
189
|
-
groupItem = _makeUIItem(parameterMetadata, actionMetadata, subGroup, structureMetadata, l10nProvider);
|
|
189
|
+
groupItem = _makeUIItem(parameterMetadata, actionMetadata, subGroup, structureMetadata, l10nProvider, light);
|
|
190
190
|
panSubItems.push(groupItem);
|
|
191
191
|
});
|
|
192
192
|
}
|
|
@@ -200,7 +200,7 @@ function _makeUIItem(parameterMetadata, actionMetadata, group, structureMetadata
|
|
|
200
200
|
const panSubItems = [];
|
|
201
201
|
if (Array.isArray(group.subGroups)) {
|
|
202
202
|
group.subGroups.forEach(function(subGroup) {
|
|
203
|
-
groupItem = _makeUIItem(parameterMetadata, actionMetadata, subGroup, structureMetadata, l10nProvider);
|
|
203
|
+
groupItem = _makeUIItem(parameterMetadata, actionMetadata, subGroup, structureMetadata, l10nProvider, light);
|
|
204
204
|
panSubItems.push(groupItem);
|
|
205
205
|
});
|
|
206
206
|
}
|
|
@@ -232,7 +232,7 @@ function _makeUIItem(parameterMetadata, actionMetadata, group, structureMetadata
|
|
|
232
232
|
const panSubItems = [];
|
|
233
233
|
if (Array.isArray(group.subGroups)) {
|
|
234
234
|
group.subGroups.forEach(function(subGroup) {
|
|
235
|
-
groupItem = _makeUIItem(parameterMetadata, actionMetadata, subGroup, structureMetadata, l10nProvider);
|
|
235
|
+
groupItem = _makeUIItem(parameterMetadata, actionMetadata, subGroup, structureMetadata, l10nProvider, light);
|
|
236
236
|
panSubItems.push(groupItem);
|
|
237
237
|
});
|
|
238
238
|
}
|
|
@@ -247,7 +247,7 @@ function _makeUIItem(parameterMetadata, actionMetadata, group, structureMetadata
|
|
|
247
247
|
const panSubItems = [];
|
|
248
248
|
if (Array.isArray(group.subGroups)) {
|
|
249
249
|
group.subGroups.forEach(function(subGroup) {
|
|
250
|
-
groupItem = _makeUIItem(parameterMetadata, actionMetadata, subGroup, structureMetadata, l10nProvider,
|
|
250
|
+
groupItem = _makeUIItem(parameterMetadata, actionMetadata, subGroup, structureMetadata, l10nProvider, false);
|
|
251
251
|
panSubItems.push(groupItem);
|
|
252
252
|
});
|
|
253
253
|
}
|
|
@@ -262,7 +262,7 @@ function _makeUIItem(parameterMetadata, actionMetadata, group, structureMetadata
|
|
|
262
262
|
/**
|
|
263
263
|
* Called on a base property group.
|
|
264
264
|
*/
|
|
265
|
-
function _makeControls(parameterMetadata, actionMetadata, group, structureMetadata, l10nProvider, light =
|
|
265
|
+
function _makeControls(parameterMetadata, actionMetadata, group, structureMetadata, l10nProvider, light = true) {
|
|
266
266
|
const uiItems = [];
|
|
267
267
|
const panelInsertedFor = [];
|
|
268
268
|
if (!Array.isArray(group.parameterNames())) {
|
|
@@ -415,7 +415,7 @@ function _makeStringControl(parameter, isSubControl) {
|
|
|
415
415
|
/**
|
|
416
416
|
* Creates a control for the supplied property.
|
|
417
417
|
*/
|
|
418
|
-
function _makeControl(parameterMetadata, paramName, group, structureDefinition, l10nProvider, actionMetadata, structureMetadata, subControl, light =
|
|
418
|
+
function _makeControl(parameterMetadata, paramName, group, structureDefinition, l10nProvider, actionMetadata, structureMetadata, subControl, light = true) {
|
|
419
419
|
const isSubControl = typeof subControl !== "undefined" && subControl;
|
|
420
420
|
|
|
421
421
|
// Assume the property is defined
|
|
@@ -33,6 +33,7 @@ class ControlPanel extends React.Component {
|
|
|
33
33
|
"properties-control-panel",
|
|
34
34
|
{ "hide": this.props.panelState === STATES.HIDDEN },
|
|
35
35
|
{ "properties-control-nested-panel": this.props.panel.nestedPanel },
|
|
36
|
+
{ "tearsheet-container": this.props.controller.isTearsheetContainer() },
|
|
36
37
|
className
|
|
37
38
|
)}
|
|
38
39
|
disabled={this.props.panelState === STATES.DISABLED} data-id={ControlUtils.getDataId({ name: this.props.panel.id })}
|
|
@@ -47,3 +47,15 @@
|
|
|
47
47
|
.properties-control-nested-panel .properties-control-nested-panel {
|
|
48
48
|
border-left: 1px solid $ui-03;
|
|
49
49
|
}
|
|
50
|
+
|
|
51
|
+
// Set the height of the very first panel to be full width inside a tearsheet
|
|
52
|
+
.properties-control-panel.tearsheet-container {
|
|
53
|
+
display: flex;
|
|
54
|
+
flex-direction: column;
|
|
55
|
+
height: 100%;
|
|
56
|
+
flex-shrink: 10;
|
|
57
|
+
|
|
58
|
+
.properties-control-panel.tearsheet-container {
|
|
59
|
+
height: unset;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -57,12 +57,14 @@ export default class SubPanelInvoker extends React.Component {
|
|
|
57
57
|
render() {
|
|
58
58
|
let propertiesDialog = [];
|
|
59
59
|
if (this.state.subPanelVisible && !this.props.rightFlyout) {
|
|
60
|
+
const className = this.props.controller.isTearsheetContainer() ? "properties-subpanel-modal-in-tearsheet" : "";
|
|
60
61
|
propertiesDialog = (<PropertiesModal
|
|
61
62
|
title={this.state.title}
|
|
62
63
|
okHandler={this.hideSubDialog.bind(this, true)}
|
|
63
64
|
cancelHandler={this.hideSubDialog.bind(this, false)}
|
|
64
65
|
applyLabel={this.props.applyLabel}
|
|
65
66
|
rejectLabel={this.props.rejectLabel}
|
|
67
|
+
classNames={className}
|
|
66
68
|
>
|
|
67
69
|
{this.state.panel}
|
|
68
70
|
</PropertiesModal>);
|
|
@@ -52,9 +52,10 @@ class Subtabs extends React.Component {
|
|
|
52
52
|
<Tab
|
|
53
53
|
key={"subtabs.tab." + i}
|
|
54
54
|
disabled={panelState === STATES.DISABLED}
|
|
55
|
-
className="properties-subtab"
|
|
55
|
+
className={classNames("properties-subtab", { "properties-leftnav-subtab-item": this.props.leftnav })}
|
|
56
56
|
tabIndex={tabIdx}
|
|
57
57
|
label={tab.text}
|
|
58
|
+
title={tab.text}
|
|
58
59
|
onClick={this.onClick.bind(this, tab.group)}
|
|
59
60
|
data-id={getDataId({ name: tab.group })}
|
|
60
61
|
>
|
|
@@ -70,10 +71,14 @@ class Subtabs extends React.Component {
|
|
|
70
71
|
"properties-sub-tab-container",
|
|
71
72
|
{ vertical: !this.props.rightFlyout },
|
|
72
73
|
{ "properties-control-nested-panel": this.props.nestedPanel },
|
|
74
|
+
{ "properties-leftnav-container": this.props.leftnav },
|
|
73
75
|
className
|
|
74
76
|
)}
|
|
75
77
|
>
|
|
76
|
-
<Tabs className="properties-subtabs"
|
|
78
|
+
<Tabs className={classNames("properties-subtabs", { "properties-leftnav-subtabs": this.props.leftnav })}
|
|
79
|
+
selected={activeTab}
|
|
80
|
+
light={this.props.controller.getLight()}
|
|
81
|
+
>
|
|
77
82
|
{subTabs}
|
|
78
83
|
</Tabs>
|
|
79
84
|
</div>
|
|
@@ -87,7 +92,12 @@ Subtabs.propTypes = {
|
|
|
87
92
|
rightFlyout: PropTypes.bool,
|
|
88
93
|
genUIItem: PropTypes.func.isRequired,
|
|
89
94
|
className: PropTypes.string,
|
|
90
|
-
nestedPanel: PropTypes.bool
|
|
95
|
+
nestedPanel: PropTypes.bool,
|
|
96
|
+
leftnav: PropTypes.bool
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
Subtabs.defaultProps = {
|
|
100
|
+
leftnav: false
|
|
91
101
|
};
|
|
92
102
|
|
|
93
103
|
export default Subtabs;
|
|
@@ -21,3 +21,65 @@
|
|
|
21
21
|
padding-right: 0;
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
+
|
|
25
|
+
// The below styles are required to override the Carbon "Tab" component to look like a leftnav
|
|
26
|
+
$parent-padding: calc(#{$spacing-05} + #{$spacing-05});
|
|
27
|
+
$selected-tab-width: 3px;
|
|
28
|
+
|
|
29
|
+
.properties-leftnav-container {
|
|
30
|
+
display: flex;
|
|
31
|
+
border-top: px solid $ui-03;
|
|
32
|
+
height: calc(100% + #{$parent-padding}); // Include padding from parent
|
|
33
|
+
margin-top: -$spacing-05;
|
|
34
|
+
margin-left: -$spacing-05;
|
|
35
|
+
margin-bottom: calc(-1 * #{$parent-padding});
|
|
36
|
+
|
|
37
|
+
.properties-leftnav-subtabs {
|
|
38
|
+
width: 282px;
|
|
39
|
+
background-color: $ui-01;
|
|
40
|
+
border-right: 1px solid $ui-03;
|
|
41
|
+
padding-top: $spacing-02;
|
|
42
|
+
height: 100%;
|
|
43
|
+
|
|
44
|
+
ul.bx--tabs--scrollable__nav {
|
|
45
|
+
flex-direction: column;
|
|
46
|
+
width: 282px;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
li.bx--tabs--scrollable__nav-item--selected {
|
|
50
|
+
border-left: $selected-tab-width solid $interactive-04;
|
|
51
|
+
border-bottom: 0;
|
|
52
|
+
background-color: $selected-ui;
|
|
53
|
+
|
|
54
|
+
&:hover {
|
|
55
|
+
background-color: $hover-row;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
&.properties-leftnav-subtab-item button {
|
|
59
|
+
border-left: 0;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
li.properties-leftnav-subtab-item {
|
|
64
|
+
&:hover button {
|
|
65
|
+
border-bottom: 0;
|
|
66
|
+
}
|
|
67
|
+
button {
|
|
68
|
+
border-left: $selected-tab-width solid transparent;
|
|
69
|
+
border-bottom: 0;
|
|
70
|
+
transition: none; // Prevent border/outline from flickering
|
|
71
|
+
|
|
72
|
+
&:focus, &:active {
|
|
73
|
+
outline: 0;
|
|
74
|
+
border-bottom: 0;
|
|
75
|
+
transition: none; // Prevent border/outline from flickering
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
div.bx--tab-content {
|
|
82
|
+
width: 100%;
|
|
83
|
+
padding: $spacing-05; // Override padding set by subtab
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -1,13 +1,46 @@
|
|
|
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
|
+
|
|
1
17
|
import React, { Component } from "react";
|
|
2
18
|
import PropTypes from "prop-types";
|
|
19
|
+
import classNames from "classnames";
|
|
20
|
+
|
|
3
21
|
import { ComposedModal, ModalHeader, ModalBody } from "carbon-components-react";
|
|
4
22
|
import { Portal } from "react-portal";
|
|
5
23
|
|
|
24
|
+
import PropertiesButtons from "../../components/properties-buttons";
|
|
25
|
+
|
|
6
26
|
class TearSheet extends Component {
|
|
7
27
|
render() {
|
|
8
28
|
const title = this.props.tearsheet ? this.props.tearsheet.title : null;
|
|
9
29
|
const description = this.props.tearsheet ? this.props.tearsheet.description : null;
|
|
10
30
|
const content = this.props.tearsheet ? this.props.tearsheet.content : null;
|
|
31
|
+
const displayFooterButtons = this.props.showPropertiesButtons && !this.props.applyOnBlur;
|
|
32
|
+
const displayTabs = !Array.isArray(content);
|
|
33
|
+
|
|
34
|
+
const buttons = this.props.applyOnBlur
|
|
35
|
+
? null
|
|
36
|
+
: (<PropertiesButtons
|
|
37
|
+
okHandler={this.props.okHandler}
|
|
38
|
+
cancelHandler={this.props.cancelHandler}
|
|
39
|
+
applyLabel={this.props.applyLabel}
|
|
40
|
+
rejectLabel={this.props.rejectLabel}
|
|
41
|
+
showPropertiesButtons={this.props.showPropertiesButtons}
|
|
42
|
+
/>);
|
|
43
|
+
|
|
11
44
|
return (
|
|
12
45
|
<Portal>
|
|
13
46
|
<ComposedModal
|
|
@@ -17,25 +50,49 @@ class TearSheet extends Component {
|
|
|
17
50
|
preventCloseOnClickOutside
|
|
18
51
|
>
|
|
19
52
|
<ModalHeader
|
|
53
|
+
className={classNames("properties-tearsheet-header",
|
|
54
|
+
{ "with-buttons": displayFooterButtons },
|
|
55
|
+
{ "with-tabs": displayTabs },
|
|
56
|
+
{ "hide-close-button": typeof this.props.onCloseCallback !== "function" })}
|
|
20
57
|
title={title}
|
|
21
|
-
buttonOnClick={
|
|
22
|
-
this.props.controller.clearActiveTearsheet();
|
|
23
|
-
}}
|
|
58
|
+
buttonOnClick={this.props.onCloseCallback}
|
|
24
59
|
>
|
|
25
60
|
{description ? (<p>{description}</p>) : null}
|
|
26
61
|
</ModalHeader>
|
|
27
|
-
<ModalBody
|
|
62
|
+
<ModalBody className={classNames("properties-tearsheet-body",
|
|
63
|
+
{ "with-buttons": displayFooterButtons },
|
|
64
|
+
{ "with-tabs": displayTabs })}
|
|
65
|
+
>
|
|
28
66
|
{content}
|
|
29
67
|
</ModalBody>
|
|
68
|
+
{buttons}
|
|
30
69
|
</ComposedModal>
|
|
31
70
|
</Portal>);
|
|
32
71
|
}
|
|
33
72
|
}
|
|
34
73
|
TearSheet.propTypes = {
|
|
35
74
|
open: PropTypes.bool,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
75
|
+
onCloseCallback: PropTypes.func,
|
|
76
|
+
tearsheet: PropTypes.shape({
|
|
77
|
+
title: PropTypes.string.isRequired,
|
|
78
|
+
description: PropTypes.string,
|
|
79
|
+
content: PropTypes.oneOfType([
|
|
80
|
+
PropTypes.array,
|
|
81
|
+
PropTypes.object
|
|
82
|
+
])
|
|
83
|
+
}),
|
|
84
|
+
showPropertiesButtons: PropTypes.bool,
|
|
85
|
+
applyLabel: PropTypes.string, // Required if showPropertiesButtons is true
|
|
86
|
+
rejectLabel: PropTypes.string, // Required if showPropertiesButtons is true
|
|
87
|
+
okHandler: PropTypes.func, // Required if showPropertiesButtons is true
|
|
88
|
+
cancelHandler: PropTypes.func, // Required if showPropertiesButtons is true
|
|
89
|
+
applyOnBlur: PropTypes.bool.isRequired
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
TearSheet.defaultProps = {
|
|
93
|
+
open: false,
|
|
94
|
+
showPropertiesButtons: false,
|
|
95
|
+
applyOnBlur: false
|
|
39
96
|
};
|
|
40
97
|
|
|
41
98
|
export default TearSheet;
|
|
@@ -1,3 +1,21 @@
|
|
|
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-buttons-height: $spacing-10;
|
|
18
|
+
|
|
1
19
|
.properties-tearsheet-panel.bx--modal {
|
|
2
20
|
align-items: flex-end;
|
|
3
21
|
&.is-visible {
|
|
@@ -12,26 +30,74 @@
|
|
|
12
30
|
width: calc(100% - 128px);
|
|
13
31
|
transform: translate3d(0, 500px, 0);
|
|
14
32
|
transition: transform 240ms cubic-bezier(0, 0, 0.3, 1);
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
33
|
+
background-color: $ui-background;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Start:: These styles are to display only parameters in a Tearsheet
|
|
37
|
+
.properties-tearsheet-header {
|
|
38
|
+
padding: $spacing-06 $spacing-07;
|
|
39
|
+
border-bottom: 1px solid $ui-03;
|
|
40
|
+
margin-bottom: 0;
|
|
41
|
+
h3 {
|
|
42
|
+
@include carbon--type-style("productive-heading-04");
|
|
26
43
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
44
|
+
p {
|
|
45
|
+
margin-top: $spacing-03;
|
|
46
|
+
@include carbon--type-style("body-short-01");
|
|
47
|
+
}
|
|
48
|
+
background-color: $ui-01;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.properties-tearsheet-body {
|
|
52
|
+
padding: $spacing-06 $spacing-07;
|
|
53
|
+
margin-bottom: 0;
|
|
54
|
+
.bx--multi-select, .bx--dropdown, .bx--number input[type=number], .bx--text-input, .bx--text-area { // override carbon's modal
|
|
55
|
+
background-color: $ui-01;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// End:: These styles are to display only parameters in a Tearsheet
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// These styles are to display editor-form in a Tearsheet
|
|
62
|
+
.properties-tearsheet-panel.bx--modal {
|
|
63
|
+
.properties-tearsheet-header.with-tabs {
|
|
64
|
+
border-bottom: 0;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.properties-tearsheet-header.hide-close-button {
|
|
68
|
+
button.bx--modal-close {
|
|
69
|
+
display: none;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.properties-tearsheet-body {
|
|
74
|
+
// Display the tabs in the Tearsheet header
|
|
75
|
+
.properties-editor-form {
|
|
76
|
+
// styling when there is only 1 tab
|
|
77
|
+
.properties-single-category {
|
|
78
|
+
padding: $spacing-05;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.properties-primaryTabs {
|
|
32
82
|
background-color: $ui-01;
|
|
83
|
+
border-bottom: 1px solid $ui-03;
|
|
84
|
+
margin-bottom: $spacing-05;
|
|
33
85
|
}
|
|
34
|
-
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.properties-tearsheet-body.with-buttons {
|
|
90
|
+
height: calc(100% - #{$properties-buttons-height});
|
|
91
|
+
border-bottom: 1px solid $ui-03;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.properties-tearsheet-body.with-tabs {
|
|
95
|
+
padding: 0;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.properties-modal-buttons {
|
|
99
|
+
width: 50%;
|
|
100
|
+
right: 0;
|
|
101
|
+
left: unset;
|
|
35
102
|
}
|
|
36
|
-
|
|
37
103
|
}
|
|
@@ -126,6 +126,10 @@ export default class PropertiesController {
|
|
|
126
126
|
return this.propertiesConfig;
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
+
isTearsheetContainer() {
|
|
130
|
+
return this.propertiesConfig.containerType === "Tearsheet";
|
|
131
|
+
}
|
|
132
|
+
|
|
129
133
|
setParamDef(paramDef) {
|
|
130
134
|
const rightFlyout = get(this.getPropertiesConfig(), "rightFlyout", true);
|
|
131
135
|
const formData = Form.makeForm(paramDef, !rightFlyout);
|
|
@@ -18,6 +18,7 @@ import React from "react";
|
|
|
18
18
|
import PropTypes from "prop-types";
|
|
19
19
|
import PropertiesModal from "./../components/properties-modal";
|
|
20
20
|
import PropertiesEditor from "./../components/properties-editor";
|
|
21
|
+
import TearSheet from "../panels/tearsheet";
|
|
21
22
|
import MainEditorPropertiesButtons from "./../components/main-editor-properties-buttons";
|
|
22
23
|
import EditorForm from "./../components/editor-form";
|
|
23
24
|
import Form from "./../form/Form";
|
|
@@ -187,7 +188,7 @@ class PropertiesMain extends React.Component {
|
|
|
187
188
|
return label;
|
|
188
189
|
}
|
|
189
190
|
}
|
|
190
|
-
return PropertyUtils.formatMessage(this.props.intl, MESSAGE_KEYS.PROPERTIES_ACTION_LABEL);
|
|
191
|
+
return PropertyUtils.formatMessage(this.props.intl, MESSAGE_KEYS.PROPERTIES_ACTION_LABEL, { node_label: this.propertiesController.getTitle() });
|
|
191
192
|
}
|
|
192
193
|
|
|
193
194
|
getEditorSize() {
|
|
@@ -493,6 +494,21 @@ class PropertiesMain extends React.Component {
|
|
|
493
494
|
>
|
|
494
495
|
{editorForm}
|
|
495
496
|
</div>);
|
|
497
|
+
} else if (this.props.propertiesConfig.containerType === "Tearsheet") {
|
|
498
|
+
propertiesDialog = (<TearSheet
|
|
499
|
+
open
|
|
500
|
+
onCloseCallback={this.props.propertiesConfig.applyOnBlur ? this.applyPropertiesEditing.bind(this, true) : null}
|
|
501
|
+
tearsheet={{
|
|
502
|
+
title: this.propertiesController.getTitle(),
|
|
503
|
+
content: editorForm
|
|
504
|
+
}}
|
|
505
|
+
applyLabel={applyLabel}
|
|
506
|
+
rejectLabel={rejectLabel}
|
|
507
|
+
okHandler={this.applyPropertiesEditing.bind(this, true)}
|
|
508
|
+
cancelHandler={cancelHandler}
|
|
509
|
+
showPropertiesButtons={this.state.showPropertiesButtons}
|
|
510
|
+
applyOnBlur={this.props.propertiesConfig.applyOnBlur}
|
|
511
|
+
/>);
|
|
496
512
|
} else { // Modal
|
|
497
513
|
propertiesDialog = (<PropertiesModal
|
|
498
514
|
onHide={this.props.callbacks.closePropertiesDialog}
|
|
@@ -155,12 +155,7 @@ export default class APIPipeline {
|
|
|
155
155
|
}
|
|
156
156
|
|
|
157
157
|
isEmpty() {
|
|
158
|
-
|
|
159
|
-
this.getComments() && this.getComments().length === 0 &&
|
|
160
|
-
this.getLinks() && this.getLinks().length === 0) {
|
|
161
|
-
return true;
|
|
162
|
-
}
|
|
163
|
-
return false;
|
|
158
|
+
return this.store.isEmpty(this.pipelineId);
|
|
164
159
|
}
|
|
165
160
|
|
|
166
161
|
getObject(objId) {
|