@elyra/canvas 12.21.0 → 12.23.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 (159) hide show
  1. package/dist/canvas-constants-09ffa4d4.js +2 -0
  2. package/dist/canvas-constants-09ffa4d4.js.map +1 -0
  3. package/dist/canvas-constants-ab55d0fd.js +2 -0
  4. package/dist/canvas-constants-ab55d0fd.js.map +1 -0
  5. package/dist/canvas-controller-017926a9.js +2 -0
  6. package/dist/canvas-controller-017926a9.js.map +1 -0
  7. package/dist/canvas-controller-51626884.js +2 -0
  8. package/dist/canvas-controller-51626884.js.map +1 -0
  9. package/dist/{canvas-logger-a0f1beaa.js → canvas-logger-3459dfc2.js} +2 -2
  10. package/dist/{canvas-logger-a0f1beaa.js.map → canvas-logger-3459dfc2.js.map} +1 -1
  11. package/dist/{canvas-logger-815781bb.js → canvas-logger-fa8cef5b.js} +2 -2
  12. package/dist/{canvas-logger-815781bb.js.map → canvas-logger-fa8cef5b.js.map} +1 -1
  13. package/dist/common-canvas-3330e83f.js +2 -0
  14. package/dist/common-canvas-3330e83f.js.map +1 -0
  15. package/dist/common-canvas-b2956514.js +2 -0
  16. package/dist/common-canvas-b2956514.js.map +1 -0
  17. package/dist/common-canvas.es.js +1 -1
  18. package/dist/common-canvas.es.js.map +1 -1
  19. package/dist/common-canvas.js +1 -1
  20. package/dist/common-canvas.js.map +1 -1
  21. package/dist/common-properties-9d77f8e1.js +2 -0
  22. package/dist/common-properties-9d77f8e1.js.map +1 -0
  23. package/dist/common-properties-a31de521.js +2 -0
  24. package/dist/common-properties-a31de521.js.map +1 -0
  25. package/dist/{createClass-6db89a23.js → createClass-72b049bc.js} +1 -1
  26. package/dist/createClass-72b049bc.js.map +1 -0
  27. package/dist/{createClass-32a0cf0f.js → createClass-d5cac0b7.js} +1 -1
  28. package/dist/createClass-d5cac0b7.js.map +1 -0
  29. package/dist/{datarecord-metadata-v3-schema-6b6384ff.js → datarecord-metadata-v3-schema-03db5d5d.js} +2 -2
  30. package/dist/{datarecord-metadata-v3-schema-6b6384ff.js.map → datarecord-metadata-v3-schema-03db5d5d.js.map} +1 -1
  31. package/dist/{datarecord-metadata-v3-schema-81228a9a.js → datarecord-metadata-v3-schema-07d7682c.js} +2 -2
  32. package/dist/{datarecord-metadata-v3-schema-81228a9a.js.map → datarecord-metadata-v3-schema-07d7682c.js.map} +1 -1
  33. package/dist/extends-87da7df3.js +7 -0
  34. package/dist/extends-87da7df3.js.map +1 -0
  35. package/dist/{extends-12382a72.js → extends-dc95dba8.js} +2 -2
  36. package/dist/extends-dc95dba8.js.map +1 -0
  37. package/dist/flexible-table-59ad2c83.js +2 -0
  38. package/dist/flexible-table-59ad2c83.js.map +1 -0
  39. package/dist/flexible-table-5c4fbb7b.js +2 -0
  40. package/dist/flexible-table-5c4fbb7b.js.map +1 -0
  41. package/dist/{getPrototypeOf-bf88242f.js → getPrototypeOf-4e282dd3.js} +1 -1
  42. package/dist/getPrototypeOf-4e282dd3.js.map +1 -0
  43. package/dist/{getPrototypeOf-a1c3fe64.js → getPrototypeOf-b3806813.js} +1 -1
  44. package/dist/getPrototypeOf-b3806813.js.map +1 -0
  45. package/dist/{icon-1ef0f3b9.js → icon-2c16236a.js} +2 -2
  46. package/dist/{icon-162ec1ee.js.map → icon-2c16236a.js.map} +1 -1
  47. package/dist/{icon-162ec1ee.js → icon-816af0e7.js} +2 -2
  48. package/dist/{icon-1ef0f3b9.js.map → icon-816af0e7.js.map} +1 -1
  49. package/dist/index-2f6be19d.js +2 -0
  50. package/dist/index-2f6be19d.js.map +1 -0
  51. package/dist/index-6f739fa1.js +2 -0
  52. package/dist/index-6f739fa1.js.map +1 -0
  53. package/dist/lib/canvas-controller.es.js +1 -1
  54. package/dist/lib/canvas-controller.js +1 -1
  55. package/dist/lib/canvas.es.js +1 -1
  56. package/dist/lib/canvas.js +1 -1
  57. package/dist/lib/command-stack.es.js +1 -1
  58. package/dist/lib/command-stack.es.js.map +1 -1
  59. package/dist/lib/command-stack.js +1 -1
  60. package/dist/lib/command-stack.js.map +1 -1
  61. package/dist/lib/context-menu.es.js +1 -1
  62. package/dist/lib/context-menu.es.js.map +1 -1
  63. package/dist/lib/context-menu.js +1 -1
  64. package/dist/lib/context-menu.js.map +1 -1
  65. package/dist/lib/properties/field-picker.es.js +1 -1
  66. package/dist/lib/properties/field-picker.js +1 -1
  67. package/dist/lib/properties/flexible-table.es.js +1 -1
  68. package/dist/lib/properties/flexible-table.js +1 -1
  69. package/dist/lib/properties.es.js +1 -1
  70. package/dist/lib/properties.js +1 -1
  71. package/dist/lib/tooltip.es.js +1 -1
  72. package/dist/lib/tooltip.es.js.map +1 -1
  73. package/dist/lib/tooltip.js +1 -1
  74. package/dist/lib/tooltip.js.map +1 -1
  75. package/dist/styles/common-canvas.min.css +1 -1
  76. package/dist/styles/common-canvas.min.css.map +1 -1
  77. package/dist/{toolbar-bb5bee87.js → toolbar-2ef99bd8.js} +2 -2
  78. package/dist/{toolbar-59ce5251.js.map → toolbar-2ef99bd8.js.map} +1 -1
  79. package/dist/{toolbar-59ce5251.js → toolbar-cb967e26.js} +2 -2
  80. package/dist/{toolbar-bb5bee87.js.map → toolbar-cb967e26.js.map} +1 -1
  81. package/locales/common-properties/locales/en.json +2 -0
  82. package/package.json +1 -1
  83. package/src/common-canvas/cc-contents.jsx +14 -2
  84. package/src/common-canvas/constants/canvas-constants.js +1 -0
  85. package/src/common-canvas/svg-canvas-d3.js +8 -0
  86. package/src/common-canvas/svg-canvas-d3.scss +1 -1
  87. package/src/common-canvas/svg-canvas-renderer.js +165 -130
  88. package/src/common-canvas/svg-canvas-utils-decs.js +3 -2
  89. package/src/common-canvas/svg-canvas-utils-textarea.js +19 -5
  90. package/src/common-properties/components/editor-form/editor-form.jsx +52 -21
  91. package/src/common-properties/components/flexible-table/flexible-table.scss +3 -2
  92. package/src/common-properties/components/virtualized-table/virtualized-table.jsx +38 -34
  93. package/src/common-properties/components/virtualized-table/virtualized-table.scss +17 -0
  94. package/src/common-properties/constants/constants.js +3 -0
  95. package/src/common-properties/controls/datefield/datefield.jsx +1 -1
  96. package/src/common-properties/controls/dropdown/dropdown.jsx +3 -3
  97. package/src/common-properties/controls/expression/expression-builder/expression-select-field-function.jsx +25 -18
  98. package/src/common-properties/controls/expression/expression.jsx +1 -1
  99. package/src/common-properties/controls/expression/expressionInfo-parser.js +11 -0
  100. package/src/common-properties/controls/list/list.jsx +1 -1
  101. package/src/common-properties/controls/multiselect/multiselect.jsx +2 -2
  102. package/src/common-properties/controls/numberfield/numberfield.jsx +1 -1
  103. package/src/common-properties/controls/passwordfield/passwordfield.jsx +3 -3
  104. package/src/common-properties/controls/selectcolumns/selectcolumns.jsx +1 -1
  105. package/src/common-properties/controls/someofselect/someofselect.jsx +1 -1
  106. package/src/common-properties/controls/textarea/textarea.jsx +2 -2
  107. package/src/common-properties/controls/textfield/textfield.jsx +1 -1
  108. package/src/common-properties/controls/timefield/timefield.jsx +1 -1
  109. package/src/common-properties/controls/toggle/toggle.jsx +1 -3
  110. package/src/common-properties/controls/toggle/toggle.scss +7 -4
  111. package/src/common-properties/form/ControlInfo.js +1 -0
  112. package/src/common-properties/form/EditorForm.js +18 -11
  113. package/src/common-properties/index.scss +5 -0
  114. package/src/common-properties/panels/tearsheet/tearsheet.jsx +9 -22
  115. package/src/common-properties/panels/tearsheet/tearsheet.scss +7 -1
  116. package/src/common-properties/properties-controller.js +6 -2
  117. package/src/common-properties/ui-conditions/ui-conditions-parser.js +1 -0
  118. package/src/common-properties/ui-conditions/ui-groups-parser.js +1 -0
  119. package/src/common-properties/util/property-utils.js +3 -0
  120. package/src/context-menu/common-context-menu.jsx +7 -0
  121. package/src/context-menu/context-menu-wrapper.jsx +30 -15
  122. package/src/object-model/api-pipeline.js +6 -9
  123. package/src/object-model/layout-dimensions.js +2 -2
  124. package/src/object-model/pipeline-out-handler.js +1 -1
  125. package/src/object-model/redux/reducers/canvasinfo.js +0 -1
  126. package/src/object-model/redux/reducers/nodes.js +0 -9
  127. package/src/palette/palette.scss +1 -1
  128. package/stats.html +1 -1
  129. package/dist/canvas-constants-34cdb7df.js +0 -2
  130. package/dist/canvas-constants-34cdb7df.js.map +0 -1
  131. package/dist/canvas-constants-3c09c7f6.js +0 -2
  132. package/dist/canvas-constants-3c09c7f6.js.map +0 -1
  133. package/dist/canvas-controller-ccb05f9f.js +0 -2
  134. package/dist/canvas-controller-ccb05f9f.js.map +0 -1
  135. package/dist/canvas-controller-feabad26.js +0 -2
  136. package/dist/canvas-controller-feabad26.js.map +0 -1
  137. package/dist/common-canvas-bcfe04ef.js +0 -2
  138. package/dist/common-canvas-bcfe04ef.js.map +0 -1
  139. package/dist/common-canvas-c4f77878.js +0 -2
  140. package/dist/common-canvas-c4f77878.js.map +0 -1
  141. package/dist/common-properties-267a9a6c.js +0 -2
  142. package/dist/common-properties-267a9a6c.js.map +0 -1
  143. package/dist/common-properties-6520f90b.js +0 -2
  144. package/dist/common-properties-6520f90b.js.map +0 -1
  145. package/dist/createClass-32a0cf0f.js.map +0 -1
  146. package/dist/createClass-6db89a23.js.map +0 -1
  147. package/dist/extends-12382a72.js.map +0 -1
  148. package/dist/extends-195c6b49.js +0 -7
  149. package/dist/extends-195c6b49.js.map +0 -1
  150. package/dist/flexible-table-056c538e.js +0 -2
  151. package/dist/flexible-table-056c538e.js.map +0 -1
  152. package/dist/flexible-table-7fb8a62e.js +0 -2
  153. package/dist/flexible-table-7fb8a62e.js.map +0 -1
  154. package/dist/getPrototypeOf-a1c3fe64.js.map +0 -1
  155. package/dist/getPrototypeOf-bf88242f.js.map +0 -1
  156. package/dist/index-61be3509.js +0 -2
  157. package/dist/index-61be3509.js.map +0 -1
  158. package/dist/index-8076376e.js +0 -2
  159. package/dist/index-8076376e.js.map +0 -1
@@ -40,7 +40,7 @@ $row-left-padding: $spacing-02;
40
40
  }
41
41
 
42
42
  .properties-ft-container-panel {
43
- height: calc(100% - $spacing-07); // adjust height for table header
43
+ height: calc(100% - #{$spacing-07}); // adjust height for table header
44
44
  }
45
45
 
46
46
  .properties-ft-control-container {
@@ -130,10 +130,11 @@ $row-left-padding: $spacing-02;
130
130
  }
131
131
 
132
132
  .properties-ft-empty-table {
133
- height: calc($spacing-11 + $spacing-08);
133
+ height: calc(#{$spacing-11} + #{$spacing-08});
134
134
  display: flex;
135
135
  justify-content: center;
136
136
  align-items: center;
137
+ padding: 0 $spacing-05;
137
138
  @include carbon--type-style("body-long-01");
138
139
  }
139
140
 
@@ -17,7 +17,7 @@
17
17
  import { Column, Table, AutoSizer } from "react-virtualized";
18
18
  import Draggable from "react-draggable";
19
19
  import { Checkbox, Loading } from "carbon-components-react";
20
- import { ArrowUp16, ArrowDown16, ArrowsVertical16 } from "@carbon/icons-react";
20
+ import { ArrowUp16, ArrowDown16, ArrowsVertical16, Information16 } from "@carbon/icons-react";
21
21
  import Tooltip from "./../../../tooltip/tooltip.jsx";
22
22
  import { SORT_DIRECTION, STATES, ROW_SELECTION, MINIMUM_COLUMN_WIDTH, MINIMUM_COLUMN_WIDTH_WITHOUT_LABEL } from "./../../constants/constants";
23
23
  import { injectIntl } from "react-intl";
@@ -234,28 +234,25 @@ class VirtualizedTable extends React.Component {
234
234
  </span>);
235
235
  }
236
236
 
237
- let tooltip = null;
238
- if (columnData.description && columnData.headerLabel) {
239
- tooltip = (
240
- <div className="properties-tooltips">
241
- <span style= {{ fontWeight: "bold" }}>{columnData.headerLabel}</span>
242
- <br />
243
- {columnData.description}
244
- </div>
245
- );
246
- } else if (columnData.description) {
247
- tooltip = (
248
- <div className="properties-tooltips">
249
- {columnData.description}
250
- </div>
251
- );
252
- } else if (columnData.headerLabel) {
253
- tooltip = (
254
- <div className="properties-tooltips">
255
- <span style= {{ fontWeight: "bold" }}>{columnData.headerLabel}</span>
256
- </div>
257
- );
258
- }
237
+ const tooltip = columnData.headerLabel
238
+ ? (<div className="properties-tooltips">
239
+ <span style= {{ fontWeight: "bold" }}>{columnData.headerLabel}</span>
240
+ </div>)
241
+ : null;
242
+
243
+ const infoIcon = isEmpty(columnData.description)
244
+ ? null
245
+ : (<div className="properties-vt-info-icon-tip">
246
+ <Tooltip
247
+ id={`properties-tooltip-${columnData.headerLabel}-info`}
248
+ tip={columnData.description}
249
+ direction="bottom"
250
+ className="properties-tooltips"
251
+ showToolTipOnClick
252
+ >
253
+ <Information16 className="properties-vt-info-icon" />
254
+ </Tooltip>
255
+ </div>);
259
256
 
260
257
  const tooltipId = uuid4() + "-tooltip-column-" + dataKey;
261
258
 
@@ -279,20 +276,27 @@ class VirtualizedTable extends React.Component {
279
276
  </Draggable>)
280
277
  : "";
281
278
 
279
+ const header = isEmpty(tooltip)
280
+ ? (<div className="properties-vt-label-icon">
281
+ {label}
282
+ {infoIcon}
283
+ </div>)
284
+ : (<div className="properties-vt-label-tip-icon">
285
+ <Tooltip
286
+ id={tooltipId}
287
+ tip={tooltip}
288
+ direction="bottom"
289
+ className="properties-tooltips"
290
+ >
291
+ {label}
292
+ </Tooltip>
293
+ {infoIcon}
294
+ </div>);
295
+
282
296
  return (
283
297
  <div className={classNames({ "properties-vt-column-with-resize": resizeElem !== "", "properties-vt-column-without-resize": resizeElem === "" })}>
284
298
  <div className={classNames("properties-vt-column properties-tooltips-container", { "sort-column-active": dataKey === this.props.sortBy })}>
285
- { isEmpty(tooltip)
286
- ? label
287
- : <Tooltip
288
- id={tooltipId}
289
- tip={tooltip}
290
- direction="bottom"
291
- className="properties-tooltips"
292
- >
293
- {label}
294
- </Tooltip>
295
- }
299
+ {header}
296
300
  {disableSort === false && sortIcon}
297
301
  </div>
298
302
  { resizeElem }
@@ -100,6 +100,23 @@
100
100
  }
101
101
  }
102
102
 
103
+ .properties-vt-label-tip-icon {
104
+ width: inherit;
105
+ display: flex;
106
+ align-items: center;
107
+
108
+ .properties-vt-info-icon-tip {
109
+ height: $spacing-05;
110
+ margin-left: $spacing-03;
111
+
112
+ .properties-vt-info-icon {
113
+ &:hover {
114
+ cursor: pointer;
115
+ }
116
+ }
117
+ }
118
+ }
119
+
103
120
  .properties-vt-row-checkbox {
104
121
  height: $spacing-07;
105
122
  margin-left: $spacing-05;
@@ -72,11 +72,14 @@ export const MESSAGE_KEYS = {
72
72
  EXPRESSION_FIELDS_TITLE: "expression.fields.title",
73
73
  EXPRESSION_VALUES_TITLE: "expression.values.title",
74
74
  EXPRESSION_FIELD_COLUMN: "expression.field.column",
75
+ EXPRESSION_FIELD_COLUMN_DESCRIPTION: "expression.field.column.description",
75
76
  EXPRESSION_STORAGE_COLUMN: "expression.storage.column",
76
77
  EXPRESSION_VALUE_COLUMN: "expression.value.column",
78
+ EXPRESSION_VALUE_COLUMN_DESCRIPTION: "expression.value.column.description",
77
79
  EXPRESSION_FUNCTION_COLUMN: "expression.function.column",
78
80
  EXPRESSION_RETURN_COLUMN: "expression.return.column",
79
81
  EXPRESSION_RECENTLY_USED_COLUMN: "expression.recently.used.column",
82
+ EXPRESSION_RECENTLY_USED_COLUMN_DESCRIPTION: "expression.recently.used.column.description",
80
83
  EXPRESSION_FIELD_TAB: "expression.field.tab",
81
84
  EXPRESSION_FUNCTIONS_TAB: "expression.functions.tab",
82
85
  EXPRESSION_RECENTLY_USED: "expression.recently.used",
@@ -83,7 +83,7 @@ class DatefieldControl extends React.Component {
83
83
  value={this.value}
84
84
  labelText={this.props.controlItem}
85
85
  hideLabel={this.props.tableControl}
86
- light={this.props.controller.getLight()}
86
+ light={this.props.controller.getLight() && !this.props.control.light}
87
87
  />
88
88
  <ValidationMessage inTable={this.props.tableControl} tableOnly state={this.props.state} messageInfo={this.props.messageInfo} />
89
89
  </div>
@@ -208,7 +208,7 @@ class DropDown extends React.Component {
208
208
  disabled={this.props.state === STATES.DISABLED}
209
209
  onChange={this.handleChange}
210
210
  value={selection}
211
- light={this.props.controller.getLight()}
211
+ light={this.props.controller.getLight() && !this.props.control.light}
212
212
  >
213
213
  { options }
214
214
  </Select>);
@@ -223,7 +223,7 @@ class DropDown extends React.Component {
223
223
  items={dropDown.options}
224
224
  onChange={this.handleComboOnChange}
225
225
  onInputChange={this.handleOnInputChange}
226
- light={this.props.controller.getLight()}
226
+ light={this.props.controller.getLight() && !this.props.control.light}
227
227
  translateWithId={(id) => listBoxMenuIconTranslationIds[id]}
228
228
  titleText={this.props.controlItem}
229
229
  />);
@@ -237,7 +237,7 @@ class DropDown extends React.Component {
237
237
  onChange={this.handleChange}
238
238
  selectedItem={dropDown.selectedOption}
239
239
  label={this.emptyLabel}
240
- light={this.props.controller.getLight()}
240
+ light={this.props.controller.getLight() && !this.props.control.light}
241
241
  translateWithId={(id) => listBoxMenuIconTranslationIds[id]}
242
242
  titleText={this.props.controlItem}
243
243
  />);
@@ -29,19 +29,19 @@ export default class ExpressionSelectFieldOrFunction extends React.Component {
29
29
  constructor(props) {
30
30
  super(props);
31
31
  this.reactIntl = props.controller.getReactIntl();
32
- this.recentUseCat = formatMessage(this.reactIntl,
33
- MESSAGE_KEYS.EXPRESSION_RECENTLY_USED);
32
+ this.valueColumn = formatMessage(this.reactIntl, MESSAGE_KEYS.EXPRESSION_VALUE_COLUMN);
33
+ this.valueColumnDesc = formatMessage(this.reactIntl, MESSAGE_KEYS.EXPRESSION_VALUE_COLUMN_DESCRIPTION);
34
+ this.recentUseCat = formatMessage(this.reactIntl, MESSAGE_KEYS.EXPRESSION_RECENTLY_USED);
34
35
  this.recentUseCatInfo = {
35
36
  id: this.recentUseCat,
36
37
  locLabel: this.recentUseCat,
37
38
  field_columns: {
38
39
  field_column_info: {
39
- locLabel: formatMessage(this.reactIntl,
40
- MESSAGE_KEYS.EXPRESSION_RECENTLY_USED_COLUMN)
40
+ locLabel: formatMessage(this.reactIntl, MESSAGE_KEYS.EXPRESSION_RECENTLY_USED_COLUMN)
41
41
  },
42
42
  value_column_info: {
43
- locLabel: formatMessage(this.reactIntl,
44
- MESSAGE_KEYS.EXPRESSION_VALUE_COLUMN)
43
+ locLabel: this.valueColumn,
44
+ descLabel: this.valueColumnDesc
45
45
  }
46
46
  }
47
47
  };
@@ -256,23 +256,21 @@ export default class ExpressionSelectFieldOrFunction extends React.Component {
256
256
  }
257
257
 
258
258
  _makeDatasetFields(dataset, fieldDataset) {
259
- const fieldColumn = formatMessage(this.reactIntl,
260
- MESSAGE_KEYS.EXPRESSION_FIELD_COLUMN);
261
- const storageColumn = formatMessage(this.reactIntl,
262
- MESSAGE_KEYS.EXPRESSION_STORAGE_COLUMN);
263
- const valueColumn = formatMessage(this.reactIntl,
264
- MESSAGE_KEYS.EXPRESSION_VALUE_COLUMN);
265
- const dropdownLabel = formatMessage(this.reactIntl,
266
- MESSAGE_KEYS.EXPRESSION_FIELDS_DROPDOWN_TITLE);
259
+ const fieldColumn = formatMessage(this.reactIntl, MESSAGE_KEYS.EXPRESSION_FIELD_COLUMN);
260
+ const fieldColumnDesc = formatMessage(this.reactIntl, MESSAGE_KEYS.EXPRESSION_FIELD_COLUMN_DESCRIPTION);
261
+ const storageColumn = formatMessage(this.reactIntl, MESSAGE_KEYS.EXPRESSION_STORAGE_COLUMN);
262
+ const dropdownLabel = formatMessage(this.reactIntl, MESSAGE_KEYS.EXPRESSION_FIELDS_DROPDOWN_TITLE);
267
263
  const fieldsCatInfo = {
268
264
  id: "fields",
269
265
  locLabel: dropdownLabel,
270
266
  field_columns: {
271
267
  field_column_info: {
272
- locLabel: fieldColumn
268
+ locLabel: fieldColumn,
269
+ descLabel: fieldColumnDesc
273
270
  },
274
271
  value_column_info: {
275
- locLabel: valueColumn
272
+ locLabel: this.valueColumn,
273
+ descLabel: this.valueColumnDesc
276
274
  },
277
275
  additional_column_info: [
278
276
  {
@@ -369,8 +367,17 @@ export default class ExpressionSelectFieldOrFunction extends React.Component {
369
367
  }
370
368
 
371
369
  if (categoryInfo) {
372
- fieldHeaders.push({ key: "fieldName", label: categoryInfo.field_columns.field_column_info.locLabel, resizable: true });
373
- valueHeader.push({ key: "values", label: categoryInfo.field_columns.value_column_info.locLabel });
370
+ fieldHeaders.push({
371
+ key: "fieldName",
372
+ label: categoryInfo.field_columns.field_column_info.locLabel,
373
+ description: categoryInfo.field_columns.field_column_info.descLabel,
374
+ resizable: true
375
+ });
376
+ valueHeader.push({
377
+ key: "values",
378
+ label: categoryInfo.field_columns.value_column_info.locLabel,
379
+ description: categoryInfo.field_columns.value_column_info.descLabel
380
+ });
374
381
  if (categoryInfo.field_columns.additional_column_info) {
375
382
  for (let i = 0; i < categoryInfo.field_columns.additional_column_info.length; i++) {
376
383
  sortable.push(categoryInfo.field_columns.additional_column_info[i].id);
@@ -339,7 +339,7 @@ class ExpressionControl extends React.Component {
339
339
  </div>
340
340
  </WideFlyout>) : null;
341
341
 
342
- const className = classNames(`properties-expression-editor ${messageType}`, { "properties-light-disabled": !this.props.controller.getLight() });
342
+ const className = classNames(`properties-expression-editor ${messageType}`, { "properties-light-disabled": this.props.control.light || !this.props.controller.getLight() });
343
343
 
344
344
  const expressionLink = (<div className="properties-expression-link-container" >
345
345
  {button}
@@ -57,8 +57,19 @@ function setExpressionInfo(inExpressionInfo) {
57
57
  if (inExpressionInfo.fields.field_categories) {
58
58
  inExpressionInfo.fields.field_categories.forEach((fieldCat) => {
59
59
  fieldCat.locLabel = l10nProvider.l10nLabel(fieldCat, fieldCat.id);
60
+
60
61
  fieldCat.field_columns.field_column_info.locLabel = l10nProvider.l10nLabel(fieldCat.field_columns.field_column_info, fieldCat.id + ".field_column_info");
61
62
  fieldCat.field_columns.value_column_info.locLabel = l10nProvider.l10nLabel(fieldCat.field_columns.value_column_info, fieldCat.id + ".value_column_info");
63
+
64
+ const fieldColInfoDesc = l10nProvider.l10nDesc(fieldCat.field_columns.field_column_info, fieldCat.id + ".field_column_info");
65
+ if (fieldColInfoDesc !== fieldCat.id + ".field_column_info") {
66
+ fieldCat.field_columns.field_column_info.descLabel = fieldColInfoDesc;
67
+ }
68
+ const valueColInfoDesc = l10nProvider.l10nDesc(fieldCat.field_columns.value_column_info, fieldCat.id + ".value_column_info");
69
+ if (valueColInfoDesc !== fieldCat.id + ".value_column_info") {
70
+ fieldCat.field_columns.value_column_info.descLabel = valueColInfoDesc;
71
+ }
72
+
62
73
  if (fieldCat.field_columns.additional_column_info) {
63
74
  fieldCat.field_columns.additional_column_info.forEach((col) => {
64
75
  col.locLabel = l10nProvider.l10nLabel(col, fieldCat.id + ".additional_column_info." + col.id);
@@ -150,7 +150,7 @@ class ListControl extends AbstractTable {
150
150
  selectedRows={this.props.selectedRows}
151
151
  rowSelection={this.props.control.rowSelection}
152
152
  updateRowSelections={this.updateRowSelections}
153
- light={this.props.controller.getLight()}
153
+ light={this.props.controller.getLight() && !this.props.control.light}
154
154
  emptyTablePlaceholder={this.props.control.additionalText}
155
155
  />);
156
156
 
@@ -154,7 +154,7 @@ class MultiSelectControl extends React.Component {
154
154
  onChange={this.handleOnChange}
155
155
  placeholder={label}
156
156
  titleText={this.props.tableControl ? null : this.props.controlItem}
157
- light={this.props.controller.getLight()}
157
+ light={this.props.controller.getLight() && !this.props.control.light}
158
158
  />);
159
159
  } else {
160
160
  dropdownComponent = (<MultiSelect
@@ -167,7 +167,7 @@ class MultiSelectControl extends React.Component {
167
167
  onChange={this.handleOnChange}
168
168
  label={label}
169
169
  titleText={this.props.tableControl ? null : this.props.controlItem}
170
- light={this.props.controller.getLight()}
170
+ light={this.props.controller.getLight() && !this.props.control.light}
171
171
  />);
172
172
  }
173
173
 
@@ -125,7 +125,7 @@ class NumberfieldControl extends React.Component {
125
125
  label={this.props.controlItem}
126
126
  hideLabel={this.props.tableControl}
127
127
  allowEmpty
128
- light={this.props.controller.getLight()}
128
+ light={this.props.controller.getLight() && !this.props.control.light}
129
129
  hideSteppers={this.props.tableControl || (this.props.control.controlType === ControlType.NUMBERFIELD)}
130
130
  />
131
131
  {numberGenerator}
@@ -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, Form } from "carbon-components-react";
20
+ import { PasswordInput, 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";
@@ -41,7 +41,7 @@ class PasswordControl extends React.Component {
41
41
  return (
42
42
  <div className={className} data-id={ControlUtils.getDataId(this.props.propertyId)}>
43
43
  <Form>
44
- <TextInput.PasswordInput
44
+ <PasswordInput
45
45
  {...validationProps}
46
46
  autoComplete="off"
47
47
  id={this.id}
@@ -51,7 +51,7 @@ class PasswordControl extends React.Component {
51
51
  value={value}
52
52
  labelText={this.props.controlItem}
53
53
  hideLabel={this.props.tableControl}
54
- light={this.props.controller.getLight()}
54
+ light={this.props.controller.getLight() && !this.props.control.light}
55
55
  tooltipAlignment="end"
56
56
  />
57
57
  </Form>
@@ -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}
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}
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>
@@ -54,10 +54,8 @@ class ToggleControl extends React.Component {
54
54
  labelB={labelOn}
55
55
  labelA={labelOff}
56
56
  onToggle={this.handleChange.bind(this)}
57
- labelText={this.props.controlItem}
57
+ labelText={this.props.tableControl ? null : this.props.controlItem}
58
58
  />);
59
-
60
-
61
59
  const className = classNames("properties-toggle", { "hide": this.props.state === STATES.HIDDEN }, this.props.messageInfo ? this.props.messageInfo.type : null);
62
60
  return (
63
61
  <div className={className} data-id={ControlUtils.getDataId(this.props.propertyId)}>
@@ -14,10 +14,13 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
+ .properties-toggle {
18
+ .properties-label-container {
19
+ padding-bottom: 0;
20
+ }
21
+ }
17
22
  .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
- }
23
+ .bx--toggle__switch { // override carbon when inside a table
24
+ margin-bottom: $spacing-05;
22
25
  }
23
26
  }
@@ -184,5 +184,6 @@ export class Control {
184
184
  if (settings.buttons) {
185
185
  this.buttons = settings.buttons;
186
186
  }
187
+ this.light = settings.light || false;
187
188
  }
188
189
  }
@@ -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) {
138
+ function _makeUIItem(parameterMetadata, actionMetadata, group, structureMetadata, l10nProvider, light = false) {
139
139
  const groupName = group.name;
140
140
  let groupItem = null;
141
141
  let groupLabel = null;
@@ -144,7 +144,7 @@ function _makeUIItem(parameterMetadata, actionMetadata, group, structureMetadata
144
144
  switch (group.groupType()) {
145
145
  case GroupType.CONTROLS:
146
146
  return UIItem.makePanel(new ControlPanel(groupName, PanelType.GENERAL, groupClassName, nestedPanel,
147
- _makeControls(parameterMetadata, actionMetadata, group, structureMetadata, l10nProvider)));
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
150
  _makeControls(parameterMetadata, actionMetadata, group, structureMetadata, l10nProvider)));
@@ -240,14 +240,18 @@ function _makeUIItem(parameterMetadata, actionMetadata, group, structureMetadata
240
240
  }
241
241
  case GroupType.TEARSHEET_PANEL: {
242
242
  groupLabel = l10nProvider.l10nLabel(group, group.name);
243
+ let groupDesc;
244
+ if (group.description) {
245
+ groupDesc = new Description(l10nProvider.l10nResource(group.description));
246
+ }
243
247
  const panSubItems = [];
244
248
  if (Array.isArray(group.subGroups)) {
245
249
  group.subGroups.forEach(function(subGroup) {
246
- groupItem = _makeUIItem(parameterMetadata, actionMetadata, subGroup, structureMetadata, l10nProvider);
250
+ groupItem = _makeUIItem(parameterMetadata, actionMetadata, subGroup, structureMetadata, l10nProvider, true);
247
251
  panSubItems.push(groupItem);
248
252
  });
249
253
  }
250
- return UIItem.makeTearsheetPanel(new ControlPanel(groupName, PanelType.TEARSHEET, groupClassName, nestedPanel, panSubItems, groupLabel, false), group.description);
254
+ return UIItem.makeTearsheetPanel(new ControlPanel(groupName, PanelType.TEARSHEET, groupClassName, nestedPanel, panSubItems, groupLabel, false), groupDesc);
251
255
  }
252
256
  default:
253
257
  logger.warn("(Unknown group type '" + group.groupType() + "')");
@@ -258,7 +262,7 @@ function _makeUIItem(parameterMetadata, actionMetadata, group, structureMetadata
258
262
  /**
259
263
  * Called on a base property group.
260
264
  */
261
- function _makeControls(parameterMetadata, actionMetadata, group, structureMetadata, l10nProvider) {
265
+ function _makeControls(parameterMetadata, actionMetadata, group, structureMetadata, l10nProvider, light = false) {
262
266
  const uiItems = [];
263
267
  const panelInsertedFor = [];
264
268
  if (!Array.isArray(group.parameterNames())) {
@@ -272,7 +276,7 @@ function _makeControls(parameterMetadata, actionMetadata, group, structureMetada
272
276
  structureDef = structureMetadata.getStructure(prop.baseType());
273
277
  }
274
278
  if (!(group instanceof StructureDef) || (group instanceof StructureDef && prop.isSubPanelEdit())) {
275
- const ctrl = _makeControl(parameterMetadata, paramName, group, structureDef, l10nProvider, actionMetadata, structureMetadata);
279
+ const ctrl = _makeControl(parameterMetadata, paramName, group, structureDef, l10nProvider, actionMetadata, structureMetadata, null, light);
276
280
  const control = UIItem.makeControl(ctrl);
277
281
  if (prop.separatorBefore()) {
278
282
  uiItems.push(UIItem.makeHSeparator());
@@ -316,7 +320,7 @@ function _makeControls(parameterMetadata, actionMetadata, group, structureMetada
316
320
  if (Array.isArray(group.subGroups)) {
317
321
  group.subGroups.forEach(function(subGroup) {
318
322
  if (!_hasPanelBeenInserted(panelInsertedFor, subGroup.dependsOn)) {
319
- const uiItem = _makeUIItem(parameterMetadata, actionMetadata, subGroup, structureMetadata, l10nProvider);
323
+ const uiItem = _makeUIItem(parameterMetadata, actionMetadata, subGroup, structureMetadata, l10nProvider, light);
320
324
  uiItems.push(uiItem);
321
325
  }
322
326
  });
@@ -411,8 +415,8 @@ function _makeStringControl(parameter, isSubControl) {
411
415
  /**
412
416
  * Creates a control for the supplied property.
413
417
  */
414
- function _makeControl(parameterMetadata, paramName, group, structureDefinition, l10nProvider, actionMetadata, structureMetadata, subControl) {
415
- const isSubControl = typeof subControl !== "undefined";
418
+ function _makeControl(parameterMetadata, paramName, group, structureDefinition, l10nProvider, actionMetadata, structureMetadata, subControl, light = false) {
419
+ const isSubControl = typeof subControl !== "undefined" && subControl;
416
420
 
417
421
  // Assume the property is defined
418
422
  const parameter = isSubControl ? subControl : parameterMetadata.getParameter(paramName);
@@ -463,8 +467,10 @@ function _makeControl(parameterMetadata, paramName, group, structureDefinition,
463
467
  controlType = ControlType.PASSWORDFIELD;
464
468
  break;
465
469
  case Type.BOOLEAN:
466
- labelVisible = false;
467
- controlType = ControlType.CHECKBOX;
470
+ if (!parameter.control || parameter.control === ControlType.CHECKBOX) {
471
+ labelVisible = false;
472
+ controlType = ControlType.CHECKBOX;
473
+ }
468
474
  break;
469
475
  case Type.INTEGER:
470
476
  case Type.LONG:
@@ -637,6 +643,7 @@ function _makeControl(parameterMetadata, paramName, group, structureDefinition,
637
643
  settings.customValueAllowed = parameter.customValueAllowed;
638
644
  settings.className = parameter.className;
639
645
  settings.buttons = buttons;
646
+ settings.light = light;
640
647
  if (isSubControl) {
641
648
  settings.visible = parameter.visible;
642
649
  settings.width = parameter.columns(8);
@@ -49,6 +49,11 @@
49
49
  align-items: left;
50
50
  }
51
51
 
52
+ .bx--tabs--scrollable .bx--tabs--scrollable__nav-item.properties-hidden-container,
53
+ .properties-hidden-container {
54
+ display: none;
55
+ }
56
+
52
57
  .properties-modal-error {
53
58
  button:first-of-type { // hides the secondary button
54
59
  display: none;
@@ -4,51 +4,38 @@ import { ComposedModal, ModalHeader, ModalBody } from "carbon-components-react";
4
4
  import { Portal } from "react-portal";
5
5
 
6
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
7
  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;
8
+ const title = this.props.tearsheet ? this.props.tearsheet.title : null;
9
+ const description = this.props.tearsheet ? this.props.tearsheet.description : null;
10
+ const content = this.props.tearsheet ? this.props.tearsheet.content : null;
23
11
  return (
24
12
  <Portal>
25
13
  <ComposedModal
26
14
  className="properties-tearsheet-panel"
27
- open={this.state.open}
15
+ open={this.props.open}
28
16
  size="lg"
29
17
  preventCloseOnClickOutside
30
18
  >
31
19
  <ModalHeader
32
20
  title={title}
33
21
  buttonOnClick={() => {
34
- setTimeout(() => {
35
- this.props.controller.clearActiveTearsheet();
36
- }, 500);
22
+ this.props.controller.clearActiveTearsheet();
37
23
  }}
38
24
  >
39
25
  {description ? (<p>{description}</p>) : null}
40
26
  </ModalHeader>
41
27
  <ModalBody>
42
- {this.props.children}
28
+ {content}
43
29
  </ModalBody>
44
30
  </ComposedModal>
45
31
  </Portal>);
46
32
  }
47
33
  }
48
34
  TearSheet.propTypes = {
49
- panel: PropTypes.object.isRequired,
35
+ open: PropTypes.bool,
50
36
  controller: PropTypes.object.isRequired,
51
- children: PropTypes.array
37
+ children: PropTypes.array,
38
+ tearsheet: PropTypes.object
52
39
  };
53
40
 
54
41
  export default TearSheet;