@carbon/ibm-products 2.43.2-canary.54 → 2.43.2-canary.55

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 (75) hide show
  1. package/css/index-full-carbon.css +8 -2
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +1 -1
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon.css +8 -2
  6. package/css/index-without-carbon.css.map +1 -1
  7. package/css/index-without-carbon.min.css +1 -1
  8. package/css/index-without-carbon.min.css.map +1 -1
  9. package/css/index.css +8 -2
  10. package/css/index.css.map +1 -1
  11. package/css/index.min.css +1 -1
  12. package/css/index.min.css.map +1 -1
  13. package/es/components/ConditionBuilder/ConditionBlock/ConditionBlock.js +21 -11
  14. package/es/components/ConditionBuilder/ConditionBuilder.js +15 -5
  15. package/es/components/ConditionBuilder/ConditionBuilderActions/ConditionBuilderActions.d.ts +2 -2
  16. package/es/components/ConditionBuilder/ConditionBuilderActions/ConditionBuilderActions.js +58 -36
  17. package/es/components/ConditionBuilder/ConditionBuilderAdd/ConditionBuilderAdd.d.ts +3 -1
  18. package/es/components/ConditionBuilder/ConditionBuilderAdd/ConditionBuilderAdd.js +21 -9
  19. package/es/components/ConditionBuilder/ConditionBuilderButton/ConditionBuilderButton.d.ts +4 -1
  20. package/es/components/ConditionBuilder/ConditionBuilderButton/ConditionBuilderButton.js +14 -4
  21. package/es/components/ConditionBuilder/ConditionBuilderConnector/ConditionConnector.js +8 -4
  22. package/es/components/ConditionBuilder/ConditionBuilderConnector/GroupConnector.js +17 -9
  23. package/es/components/ConditionBuilder/ConditionBuilderContent/ConditionBuilderContent.js +19 -10
  24. package/es/components/ConditionBuilder/ConditionBuilderContext/ConditionBuilderProvider.d.ts +12 -6
  25. package/es/components/ConditionBuilder/ConditionBuilderContext/ConditionBuilderProvider.js +20 -7
  26. package/es/components/ConditionBuilder/ConditionBuilderContext/DataConfigs.d.ts +2 -1
  27. package/es/components/ConditionBuilder/ConditionBuilderContext/DataConfigs.js +18 -17
  28. package/es/components/ConditionBuilder/ConditionBuilderContext/translationObject.d.ts +36 -39
  29. package/es/components/ConditionBuilder/ConditionBuilderContext/translationObject.js +36 -38
  30. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItem.js +20 -12
  31. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemDate/ConditionBuilderItemDate.js +8 -3
  32. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemNumber/ConditionBuilderItemNumber.js +9 -7
  33. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.js +9 -4
  34. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/ItemOptionForValueField.js +10 -5
  35. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemText/ConditionBuilderItemText.d.ts +5 -1
  36. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemText/ConditionBuilderItemText.js +19 -7
  37. package/es/components/ConditionBuilder/ConditionGroupBuilder/ConditionGroupBuilder.js +23 -17
  38. package/es/components/ConditionBuilder/ConditionPreview/ConditionPreview.d.ts +3 -1
  39. package/es/components/ConditionBuilder/ConditionPreview/ConditionPreview.js +31 -14
  40. package/es/components/ConditionBuilder/utils/useTranslations.d.ts +1 -0
  41. package/es/components/ConditionBuilder/utils/useTranslations.js +26 -0
  42. package/es/components/ConditionBuilder/utils/util.js +1 -9
  43. package/lib/components/ConditionBuilder/ConditionBlock/ConditionBlock.js +20 -10
  44. package/lib/components/ConditionBuilder/ConditionBuilder.js +15 -5
  45. package/lib/components/ConditionBuilder/ConditionBuilderActions/ConditionBuilderActions.d.ts +2 -2
  46. package/lib/components/ConditionBuilder/ConditionBuilderActions/ConditionBuilderActions.js +56 -33
  47. package/lib/components/ConditionBuilder/ConditionBuilderAdd/ConditionBuilderAdd.d.ts +3 -1
  48. package/lib/components/ConditionBuilder/ConditionBuilderAdd/ConditionBuilderAdd.js +20 -8
  49. package/lib/components/ConditionBuilder/ConditionBuilderButton/ConditionBuilderButton.d.ts +4 -1
  50. package/lib/components/ConditionBuilder/ConditionBuilderButton/ConditionBuilderButton.js +13 -3
  51. package/lib/components/ConditionBuilder/ConditionBuilderConnector/ConditionConnector.js +6 -2
  52. package/lib/components/ConditionBuilder/ConditionBuilderConnector/GroupConnector.js +16 -8
  53. package/lib/components/ConditionBuilder/ConditionBuilderContent/ConditionBuilderContent.js +18 -9
  54. package/lib/components/ConditionBuilder/ConditionBuilderContext/ConditionBuilderProvider.d.ts +12 -6
  55. package/lib/components/ConditionBuilder/ConditionBuilderContext/ConditionBuilderProvider.js +20 -7
  56. package/lib/components/ConditionBuilder/ConditionBuilderContext/DataConfigs.d.ts +2 -1
  57. package/lib/components/ConditionBuilder/ConditionBuilderContext/DataConfigs.js +17 -17
  58. package/lib/components/ConditionBuilder/ConditionBuilderContext/translationObject.d.ts +36 -39
  59. package/lib/components/ConditionBuilder/ConditionBuilderContext/translationObject.js +36 -38
  60. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItem.js +19 -11
  61. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemDate/ConditionBuilderItemDate.js +8 -3
  62. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemNumber/ConditionBuilderItemNumber.js +8 -6
  63. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.js +8 -3
  64. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/ItemOptionForValueField.js +9 -4
  65. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemText/ConditionBuilderItemText.d.ts +5 -1
  66. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemText/ConditionBuilderItemText.js +18 -6
  67. package/lib/components/ConditionBuilder/ConditionGroupBuilder/ConditionGroupBuilder.js +21 -15
  68. package/lib/components/ConditionBuilder/ConditionPreview/ConditionPreview.d.ts +3 -1
  69. package/lib/components/ConditionBuilder/ConditionPreview/ConditionPreview.js +30 -13
  70. package/lib/components/ConditionBuilder/utils/useTranslations.d.ts +1 -0
  71. package/lib/components/ConditionBuilder/utils/useTranslations.js +30 -0
  72. package/lib/components/ConditionBuilder/utils/util.js +0 -9
  73. package/package.json +3 -3
  74. package/scss/components/ConditionBuilder/styles/_conditionBuilderCondition.scss +5 -1
  75. package/scss/components/ConditionBuilder/styles/_conditionBuilderItem.scss +3 -1
@@ -11,7 +11,8 @@ import { Search } from '@carbon/react';
11
11
  import { Checkmark } from '@carbon/react/icons';
12
12
  import PropTypes from '../../../../node_modules/prop-types/index.js';
13
13
  import { ConditionBuilderContext } from '../../ConditionBuilderContext/ConditionBuilderProvider.js';
14
- import { blockClass, translateWithId } from '../../ConditionBuilderContext/DataConfigs.js';
14
+ import { blockClass } from '../../ConditionBuilderContext/DataConfigs.js';
15
+ import { useTranslations } from '../../utils/useTranslations.js';
15
16
 
16
17
  var ItemOption = function ItemOption(_ref) {
17
18
  var _ref$conditionState = _ref.conditionState,
@@ -22,6 +23,10 @@ var ItemOption = function ItemOption(_ref) {
22
23
  var _useContext = useContext(ConditionBuilderContext),
23
24
  popOverSearchThreshold = _useContext.popOverSearchThreshold;
24
25
  var contentRef = useRef();
26
+ var _useTranslations = useTranslations(['propertyText', 'clearSearchText']),
27
+ _useTranslations2 = _slicedToArray(_useTranslations, 2),
28
+ propertyText = _useTranslations2[0],
29
+ clearSearchText = _useTranslations2[1];
25
30
  var allOptions = config.options;
26
31
  var _useState = useState(''),
27
32
  _useState2 = _slicedToArray(_useState, 2),
@@ -49,7 +54,7 @@ var ItemOption = function ItemOption(_ref) {
49
54
  setSearchValue(value);
50
55
  };
51
56
  var getAriaLabel = function getAriaLabel() {
52
- return conditionState.label ? conditionState.label : conditionState.property ? conditionState.property : translateWithId('property');
57
+ return conditionState.label ? conditionState.label : conditionState.property ? conditionState.property : propertyText;
53
58
  };
54
59
  if (!allOptions) {
55
60
  return;
@@ -61,8 +66,8 @@ var ItemOption = function ItemOption(_ref) {
61
66
  className: "".concat(blockClass, "__item-option__search")
62
67
  }, /*#__PURE__*/React__default.createElement(Search, {
63
68
  size: "sm",
64
- labelText: translateWithId('clear_search'),
65
- closeButtonLabelText: translateWithId('clear_search'),
69
+ labelText: clearSearchText,
70
+ closeButtonLabelText: clearSearchText,
66
71
  onChange: onSearchChangeHandler
67
72
  })), /*#__PURE__*/React__default.createElement("ul", {
68
73
  "aria-label": getAriaLabel(),
@@ -11,7 +11,8 @@ import { SelectSkeleton, Search, Button } from '@carbon/react';
11
11
  import { CheckboxCheckedFilled, Checkbox, Checkmark } from '@carbon/react/icons';
12
12
  import PropTypes from '../../../../node_modules/prop-types/index.js';
13
13
  import { ConditionBuilderContext } from '../../ConditionBuilderContext/ConditionBuilderProvider.js';
14
- import { blockClass, translateWithId } from '../../ConditionBuilderContext/DataConfigs.js';
14
+ import { blockClass } from '../../ConditionBuilderContext/DataConfigs.js';
15
+ import { useTranslations } from '../../utils/useTranslations.js';
15
16
 
16
17
  var _SelectSkeleton, _CheckboxCheckedFille, _Checkbox;
17
18
  var ItemOptionForValueField = function ItemOptionForValueField(_ref) {
@@ -20,11 +21,15 @@ var ItemOptionForValueField = function ItemOptionForValueField(_ref) {
20
21
  _ref$config = _ref.config,
21
22
  config = _ref$config === void 0 ? {} : _ref$config,
22
23
  onChange = _ref.onChange;
23
- var multiSelectable = conditionState.operator === 'one_of';
24
+ var multiSelectable = conditionState.operator === 'oneOf';
24
25
  var _useContext = useContext(ConditionBuilderContext),
25
26
  popOverSearchThreshold = _useContext.popOverSearchThreshold,
26
27
  getOptions = _useContext.getOptions,
27
28
  rootState = _useContext.rootState;
29
+ var _useTranslations = useTranslations(['propertyText', 'clearSearchText']),
30
+ _useTranslations2 = _slicedToArray(_useTranslations, 2),
31
+ propertyText = _useTranslations2[0],
32
+ clearSearchText = _useTranslations2[1];
28
33
  var contentRef = useRef();
29
34
  var _useState = useState(config.options),
30
35
  _useState2 = _slicedToArray(_useState, 2),
@@ -122,7 +127,7 @@ var ItemOptionForValueField = function ItemOptionForValueField(_ref) {
122
127
  }
123
128
  };
124
129
  var getAriaLabel = function getAriaLabel() {
125
- return conditionState.label ? conditionState.label : conditionState.property ? conditionState.property : translateWithId('property');
130
+ return conditionState.label ? conditionState.label : conditionState.property ? conditionState.property : propertyText;
126
131
  };
127
132
  if (!allOptions) {
128
133
  return _SelectSkeleton || (_SelectSkeleton = /*#__PURE__*/React__default.createElement(SelectSkeleton, null));
@@ -134,8 +139,8 @@ var ItemOptionForValueField = function ItemOptionForValueField(_ref) {
134
139
  className: "".concat(blockClass, "__item-option__search")
135
140
  }, /*#__PURE__*/React__default.createElement(Search, {
136
141
  size: "sm",
137
- labelText: translateWithId('clear_search'),
138
- closeButtonLabelText: translateWithId('clear_search'),
142
+ labelText: clearSearchText,
143
+ closeButtonLabelText: clearSearchText,
139
144
  onChange: onSearchChangeHandler
140
145
  })), multiSelectable && /*#__PURE__*/React__default.createElement("div", {
141
146
  className: "".concat(blockClass, "__multiselectSelectionStatusContainer")
@@ -1,11 +1,15 @@
1
- export function ConditionBuilderItemText({ conditionState, onChange }: {
1
+ export function ConditionBuilderItemText({ conditionState, onChange, config, type, }: {
2
2
  conditionState: any;
3
3
  onChange: any;
4
+ config: any;
5
+ type: any;
4
6
  }): import("react/jsx-runtime").JSX.Element;
5
7
  export namespace ConditionBuilderItemText {
6
8
  namespace propTypes {
7
9
  let conditionState: PropTypes.Requireable<object>;
10
+ let config: PropTypes.Requireable<object>;
8
11
  let onChange: PropTypes.Requireable<(...args: any[]) => any>;
12
+ let type: PropTypes.Requireable<object>;
9
13
  }
10
14
  }
11
15
  import PropTypes from 'prop-types';
@@ -5,18 +5,19 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
+ import { objectSpread2 as _objectSpread2 } from '../../../../_virtual/_rollupPluginBabelHelpers.js';
8
9
  import React__default from 'react';
9
- import { TextInput } from '@carbon/react';
10
+ import { TextArea, TextInput } from '@carbon/react';
10
11
  import PropTypes from '../../../../node_modules/prop-types/index.js';
11
12
  import { blockClass } from '../../ConditionBuilderContext/DataConfigs.js';
12
13
 
13
14
  var ConditionBuilderItemText = function ConditionBuilderItemText(_ref) {
14
15
  var _conditionState$value, _conditionState$prope;
15
16
  var conditionState = _ref.conditionState,
16
- _onChange = _ref.onChange;
17
- return /*#__PURE__*/React__default.createElement("div", {
18
- className: "".concat(blockClass, "__item-text")
19
- }, /*#__PURE__*/React__default.createElement(TextInput, {
17
+ _onChange = _ref.onChange,
18
+ config = _ref.config,
19
+ type = _ref.type;
20
+ var inputProps = _objectSpread2({
20
21
  labelText: conditionState.property,
21
22
  hideLabel: true,
22
23
  value: (_conditionState$value = conditionState.value) !== null && _conditionState$value !== void 0 ? _conditionState$value : '',
@@ -24,17 +25,28 @@ var ConditionBuilderItemText = function ConditionBuilderItemText(_ref) {
24
25
  onChange: function onChange(evt) {
25
26
  _onChange(evt.target.value);
26
27
  }
27
- }));
28
+ }, config);
29
+ return /*#__PURE__*/React__default.createElement("div", {
30
+ className: "".concat(blockClass, "__item-text")
31
+ }, type == 'textarea' ? /*#__PURE__*/React__default.createElement(TextArea, inputProps) : /*#__PURE__*/React__default.createElement(TextInput, inputProps));
28
32
  };
29
33
  ConditionBuilderItemText.propTypes = {
30
34
  /**
31
35
  * current condition object
32
36
  */
33
37
  conditionState: PropTypes.object,
38
+ /**
39
+ * config of the current property
40
+ */
41
+ config: PropTypes.object,
34
42
  /**
35
43
  * callback to update state oin date change
36
44
  */
37
- onChange: PropTypes.func
45
+ onChange: PropTypes.func,
46
+ /**
47
+ * current input type
48
+ */
49
+ type: PropTypes.object
38
50
  };
39
51
 
40
52
  export { ConditionBuilderItemText };
@@ -6,11 +6,11 @@
6
6
  */
7
7
 
8
8
  import { slicedToArray as _slicedToArray, defineProperty as _defineProperty, objectSpread2 as _objectSpread2, toConsumableArray as _toConsumableArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
9
- import React__default, { useContext, useState, Fragment } from 'react';
9
+ import React__default, { useContext, useState, useRef, Fragment } from 'react';
10
10
  import ConditionBlock from '../ConditionBlock/ConditionBlock.js';
11
11
  import PropTypes from '../../../node_modules/prop-types/index.js';
12
12
  import cx from 'classnames';
13
- import { blockClass, translateWithId, statementConfig } from '../ConditionBuilderContext/DataConfigs.js';
13
+ import { blockClass, statementConfig } from '../ConditionBuilderContext/DataConfigs.js';
14
14
  import { ConditionBuilderItem } from '../ConditionBuilderItem/ConditionBuilderItem.js';
15
15
  import { focusThisField } from '../utils/util.js';
16
16
  import ConditionConnector from '../ConditionBuilderConnector/ConditionConnector.js';
@@ -18,8 +18,8 @@ import { ConditionBuilderContext } from '../ConditionBuilderContext/ConditionBui
18
18
  import uuidv4 from '../../../global/js/utils/uuidv4.js';
19
19
  import ConditionPreview from '../ConditionPreview/ConditionPreview.js';
20
20
  import { ItemOption } from '../ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.js';
21
+ import { useTranslations } from '../utils/useTranslations.js';
21
22
 
22
- var _ConditionPreview, _ConditionPreview2;
23
23
  /**
24
24
  *
25
25
  * state - this is the current group that is being rendered . This can be a inner group or outer group
@@ -28,12 +28,17 @@ var _ConditionPreview, _ConditionPreview2;
28
28
  */
29
29
 
30
30
  var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
31
+ var _ConditionPreview, _ConditionPreview2;
31
32
  var group = _ref.group,
32
33
  aria = _ref.aria,
33
34
  onRemove = _ref.onRemove,
34
35
  onChange = _ref.onChange,
35
36
  conditionBuilderRef = _ref.conditionBuilderRef,
36
37
  className = _ref.className;
38
+ var _useTranslations = useTranslations(['condition_builder_group', 'conditionText']),
39
+ _useTranslations2 = _slicedToArray(_useTranslations, 2),
40
+ conditionBuilderGroupText = _useTranslations2[0],
41
+ conditionText = _useTranslations2[1];
37
42
  var _useContext = useContext(ConditionBuilderContext),
38
43
  variant = _useContext.variant;
39
44
  var _useState = useState(-1),
@@ -44,6 +49,7 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
44
49
  _useState4 = _slicedToArray(_useState3, 2),
45
50
  showConditionSubGroupPreview = _useState4[0],
46
51
  setShowConditionSubGroupPreview = _useState4[1];
52
+ var conditionBuilderContentRef = useRef();
47
53
  var onRemoveHandler = function onRemoveHandler(conditionId, evt) {
48
54
  if (group.conditions.length > 1) {
49
55
  onChange(_objectSpread2(_objectSpread2({}, group), {}, {
@@ -51,7 +57,6 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
51
57
  return conditionId !== condition.id;
52
58
  })
53
59
  }));
54
- handleFocusOnClose(evt);
55
60
  } else {
56
61
  onRemove(evt);
57
62
  }
@@ -74,13 +79,6 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
74
79
  conditions: [].concat(_toConsumableArray(group.conditions.slice(0, conditionIndex + 1)), [newCondition], _toConsumableArray(group.conditions.slice(conditionIndex + 1)))
75
80
  }));
76
81
  };
77
- var handleFocusOnClose = function handleFocusOnClose(e) {
78
- var _e$currentTarget;
79
- var previousClose = (_e$currentTarget = e.currentTarget) === null || _e$currentTarget === void 0 || (_e$currentTarget = _e$currentTarget.closest('[role="row"]')) === null || _e$currentTarget === void 0 || (_e$currentTarget = _e$currentTarget.previousSibling) === null || _e$currentTarget === void 0 ? void 0 : _e$currentTarget.querySelector('[data-name="closeCondition"]');
80
- if (previousClose) {
81
- previousClose.focus();
82
- }
83
- };
84
82
  var addConditionSubGroupHandler = function addConditionSubGroupHandler(conditionIndex) {
85
83
  onChange(_objectSpread2(_objectSpread2({}, group), {}, {
86
84
  conditions: [].concat(_toConsumableArray(group.conditions.slice(0, conditionIndex + 1)), [{
@@ -113,7 +111,12 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
113
111
  setShowConditionPreview(-1);
114
112
  };
115
113
  var onStatementChangeHandler = function onStatementChangeHandler(updatedStatement) {
114
+ var _statementConfig$find;
115
+ var groupOperator = (_statementConfig$find = statementConfig.find(function (statement) {
116
+ return statement.id == updatedStatement;
117
+ })) === null || _statementConfig$find === void 0 ? void 0 : _statementConfig$find.connector;
116
118
  onChange(_objectSpread2(_objectSpread2({}, group), {}, {
119
+ groupOperator: groupOperator,
117
120
  statement: updatedStatement
118
121
  }));
119
122
  };
@@ -129,7 +132,7 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
129
132
  }, /*#__PURE__*/React__default.createElement("div", {
130
133
  className: "".concat(blockClass, "__condition-wrapper"),
131
134
  role: "grid",
132
- "aria-label": translateWithId('condition_builder_group')
135
+ "aria-label": conditionBuilderGroupText
133
136
  }, group === null || group === void 0 || (_group$conditions = group.conditions) === null || _group$conditions === void 0 ? void 0 : _group$conditions.map(function (eachCondition, conditionIndex) {
134
137
  return /*#__PURE__*/React__default.createElement("div", {
135
138
  key: eachCondition.id,
@@ -163,7 +166,8 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
163
166
  return /*#__PURE__*/React__default.createElement("div", {
164
167
  className: "".concat(className, " ").concat(blockClass, "__condition-wrapper"),
165
168
  role: aria.level === 1 ? 'rowgroup' : undefined,
166
- "aria-label": aria.level == 1 ? translateWithId('condition_builder_group') : undefined
169
+ "aria-label": aria.level == 1 ? conditionBuilderGroupText : undefined,
170
+ ref: conditionBuilderContentRef
167
171
  }, /*#__PURE__*/React__default.createElement("div", {
168
172
  tabIndex: 0,
169
173
  role: "row",
@@ -172,14 +176,14 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
172
176
  "aria-setsize": aria.setsize
173
177
  }, /*#__PURE__*/React__default.createElement(ConditionBuilderItem, {
174
178
  label: group.statement,
175
- title: translateWithId('condition'),
179
+ title: conditionText,
176
180
  "data-name": "connectorField",
177
181
  popOverClassName: "".concat(blockClass, "__gap"),
178
182
  className: "".concat(blockClass, "__statement-button")
179
183
  }, /*#__PURE__*/React__default.createElement(ItemOption, {
180
184
  conditionState: {
181
185
  value: group.statement,
182
- label: translateWithId('condition')
186
+ label: conditionText
183
187
  },
184
188
  onChange: function onChange(v, evt) {
185
189
  focusThisField(evt);
@@ -243,9 +247,11 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
243
247
  hideConditionPreviewHandler: hideConditionPreviewHandler,
244
248
  isLastCondition: isLastCondition
245
249
  })), conditionIndex == showConditionSubGroupPreview && (_ConditionPreview || (_ConditionPreview = /*#__PURE__*/React__default.createElement(ConditionPreview, {
246
- previewType: "subGroup"
250
+ previewType: "subGroup",
251
+ group: group
247
252
  }))), conditionIndex == showConditionPreview && (_ConditionPreview2 || (_ConditionPreview2 = /*#__PURE__*/React__default.createElement(ConditionPreview, {
248
- previewType: "condition"
253
+ previewType: "condition",
254
+ group: group
249
255
  }))));
250
256
  }));
251
257
  };
@@ -1,9 +1,11 @@
1
1
  export default ConditionPreview;
2
- declare function ConditionPreview({ previewType }: {
2
+ declare function ConditionPreview({ previewType, group }: {
3
3
  previewType: any;
4
+ group: any;
4
5
  }): import("react/jsx-runtime").JSX.Element;
5
6
  declare namespace ConditionPreview {
6
7
  namespace propTypes {
8
+ let group: PropTypes.Requireable<object>;
7
9
  let previewType: PropTypes.Requireable<string>;
8
10
  }
9
11
  }
@@ -9,33 +9,46 @@ import { slicedToArray as _slicedToArray, defineProperty as _defineProperty } fr
9
9
  import React__default, { useState, useEffect } from 'react';
10
10
  import cx from 'classnames';
11
11
  import PropTypes from '../../../node_modules/prop-types/index.js';
12
- import { blockClass, translateWithId } from '../ConditionBuilderContext/DataConfigs.js';
12
+ import { blockClass } from '../ConditionBuilderContext/DataConfigs.js';
13
13
  import { ConditionBuilderItem } from '../ConditionBuilderItem/ConditionBuilderItem.js';
14
14
  import ConditionConnector from '../ConditionBuilderConnector/ConditionConnector.js';
15
+ import { useTranslations } from '../utils/useTranslations.js';
16
+ import { Bee } from '@carbon/react/icons';
15
17
 
16
18
  var ConditionPreview = function ConditionPreview(_ref) {
17
- var previewType = _ref.previewType;
19
+ var _ConditionBuilderItem, _ConditionBuilderItem2, _ConditionBuilderItem3;
20
+ var previewType = _ref.previewType,
21
+ group = _ref.group;
18
22
  var _useState = useState(false),
19
23
  _useState2 = _slicedToArray(_useState, 2),
20
24
  animate = _useState2[0],
21
25
  setAnimate = _useState2[1];
26
+ var _useTranslations = useTranslations(['valueText', 'operatorText', 'propertyText', 'ifText']),
27
+ _useTranslations2 = _slicedToArray(_useTranslations, 4),
28
+ propertyText = _useTranslations2[0],
29
+ operatorText = _useTranslations2[1],
30
+ valueText = _useTranslations2[2],
31
+ ifText = _useTranslations2[3];
22
32
  useEffect(function () {
23
33
  setAnimate(true);
24
34
  }, []);
25
35
  var getConditionSection = function getConditionSection() {
26
- return /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement(ConditionBuilderItem, {
27
- label: translateWithId('property')
28
- }), /*#__PURE__*/React__default.createElement(ConditionBuilderItem, {
29
- label: translateWithId('operator')
30
- }), /*#__PURE__*/React__default.createElement(ConditionBuilderItem, {
31
- label: translateWithId('value')
32
- }));
36
+ return /*#__PURE__*/React__default.createElement("div", {
37
+ className: "".concat(blockClass, "__preview-condition")
38
+ }, _ConditionBuilderItem || (_ConditionBuilderItem = /*#__PURE__*/React__default.createElement(ConditionBuilderItem, {
39
+ label: propertyText,
40
+ renderIcon: Bee
41
+ })), _ConditionBuilderItem2 || (_ConditionBuilderItem2 = /*#__PURE__*/React__default.createElement(ConditionBuilderItem, {
42
+ label: operatorText
43
+ })), _ConditionBuilderItem3 || (_ConditionBuilderItem3 = /*#__PURE__*/React__default.createElement(ConditionBuilderItem, {
44
+ label: valueText
45
+ })));
33
46
  };
34
47
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, previewType == 'newGroup' && /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
35
48
  className: cx(["".concat(blockClass, "__group__row ").concat(blockClass, "__group-preview "), _defineProperty({}, "".concat(blockClass, "__group-preview-animate"), animate)])
36
49
  }, /*#__PURE__*/React__default.createElement(ConditionBuilderItem, {
37
50
  className: "".concat(blockClass, "__statement-button"),
38
- label: translateWithId('and')
51
+ label: group.groupOperator
39
52
  })), /*#__PURE__*/React__default.createElement("div", {
40
53
  "aria-hidden": true,
41
54
  className: cx(["".concat(blockClass, "__group ").concat(blockClass, "__condition-wrapper ").concat(blockClass, "__group-preview ").concat(blockClass, "__group-wrapper "), _defineProperty({}, "".concat(blockClass, "__group-preview-animate"), animate)])
@@ -43,32 +56,36 @@ var ConditionPreview = function ConditionPreview(_ref) {
43
56
  className: "".concat(blockClass, "__gap")
44
57
  }, /*#__PURE__*/React__default.createElement(ConditionBuilderItem, {
45
58
  className: "".concat(blockClass, "__statement-button"),
46
- label: translateWithId('if')
59
+ label: ifText
47
60
  })), getConditionSection())), previewType == 'subGroup' && /*#__PURE__*/React__default.createElement("div", {
48
61
  className: cx(["".concat(blockClass, "__group__row ").concat(blockClass, "__group-preview "), _defineProperty({}, "".concat(blockClass, "__group-preview-animate"), animate)])
49
62
  }, /*#__PURE__*/React__default.createElement("div", {
50
63
  className: "".concat(blockClass, "__condition-block ").concat(blockClass, "__gap")
51
64
  }, /*#__PURE__*/React__default.createElement(ConditionBuilderItem, {
52
- label: translateWithId('and'),
65
+ label: group.groupOperator,
53
66
  className: "".concat(blockClass, "__statement-button"),
54
67
  popOverClassName: "".concat(blockClass, "__gap")
55
68
  }), /*#__PURE__*/React__default.createElement("div", {
56
69
  className: "".concat(blockClass, "__group ").concat(blockClass, "__condition-wrapper")
57
70
  }, /*#__PURE__*/React__default.createElement(ConditionConnector, {
58
71
  className: "".concat(blockClass, "__gap ").concat(blockClass, "__groupConnector"),
59
- operator: translateWithId('if')
72
+ operator: ifText
60
73
  }), getConditionSection()))), previewType == 'condition' && /*#__PURE__*/React__default.createElement("div", {
61
74
  className: cx(["".concat(blockClass, "__group__row ").concat(blockClass, "__group-preview "), _defineProperty({}, "".concat(blockClass, "__group-preview-animate"), animate)])
62
75
  }, /*#__PURE__*/React__default.createElement("div", {
63
76
  className: "".concat(blockClass, "__condition-block ").concat(blockClass, "__gap")
64
77
  }, /*#__PURE__*/React__default.createElement(ConditionBuilderItem, {
65
- label: translateWithId('and'),
78
+ label: group.groupOperator,
66
79
  className: "".concat(blockClass, "__statement-button"),
67
80
  popOverClassName: "".concat(blockClass, "__gap")
68
81
  }), getConditionSection())));
69
82
  };
70
83
  var ConditionPreview$1 = ConditionPreview;
71
84
  ConditionPreview.propTypes = {
85
+ /**
86
+ * current conditional group
87
+ */
88
+ group: PropTypes.object,
72
89
  /**
73
90
  * type of review to be displayed
74
91
  */
@@ -0,0 +1 @@
1
+ export function useTranslations(translationKeys: any): any;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Copyright IBM Corp. 2020, 2024
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import { useContext } from 'react';
9
+ import { ConditionBuilderContext } from '../ConditionBuilderContext/ConditionBuilderProvider.js';
10
+ import { translationsObject } from '../ConditionBuilderContext/translationObject.js';
11
+
12
+ var useTranslations = function useTranslations(translationKeys) {
13
+ var _useContext = useContext(ConditionBuilderContext),
14
+ translateWithId = _useContext.translateWithId;
15
+ return translationKeys.map(function (translationKey) {
16
+ if (translateWithId !== null && translateWithId !== void 0 && translateWithId(translationKey)) {
17
+ return translateWithId(translationKey);
18
+ } else if (translationsObject[translationKey]) {
19
+ return translationsObject[translationKey];
20
+ } else {
21
+ return translationKey;
22
+ }
23
+ });
24
+ };
25
+
26
+ export { useTranslations };
@@ -48,13 +48,5 @@ var checkForHoldingKey = function checkForHoldingKey(evt, key) {
48
48
  }
49
49
  return evt[key];
50
50
  };
51
- var checkDuplicateAction = function checkDuplicateAction(actionState, selectedId, currentActionId) {
52
- if (selectedId !== currentActionId && actionState.find(function (eachAction) {
53
- return eachAction.id === selectedId;
54
- })) {
55
- return true;
56
- }
57
- return false;
58
- };
59
51
 
60
- export { checkDuplicateAction, checkForHoldingKey, focusThisField, focusThisItem, traverseClockVise, traverseReverse };
52
+ export { checkForHoldingKey, focusThisField, focusThisItem, traverseClockVise, traverseReverse };
@@ -27,6 +27,7 @@ var ConditionBuilderItemTime = require('../ConditionBuilderItem/ConditionBuilder
27
27
  var ConditionBuilderAdd = require('../ConditionBuilderAdd/ConditionBuilderAdd.js');
28
28
  var ItemOption = require('../ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.js');
29
29
  var ItemOptionForValueField = require('../ConditionBuilderItem/ConditionBuilderItemOption/ItemOptionForValueField.js');
30
+ var useTranslations = require('../utils/useTranslations.js');
30
31
 
31
32
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
32
33
 
@@ -68,6 +69,13 @@ var ConditionBlock = function ConditionBlock(props) {
68
69
  _useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
69
70
  showDeletionPreview = _useState2[0],
70
71
  setShowDeletionPreview = _useState2[1];
72
+ var _useTranslations = useTranslations.useTranslations(['conditionRowText', 'conditionText', 'propertyText', 'operatorText', 'removeConditionText']),
73
+ _useTranslations2 = _rollupPluginBabelHelpers.slicedToArray(_useTranslations, 5),
74
+ conditionRowText = _useTranslations2[0],
75
+ conditionText = _useTranslations2[1],
76
+ propertyText = _useTranslations2[2],
77
+ operatorText = _useTranslations2[3],
78
+ removeConditionText = _useTranslations2[4];
71
79
 
72
80
  //filtering the current property to access its properties and config options
73
81
  var getCurrentConfig = function getCurrentConfig(property) {
@@ -89,7 +97,8 @@ var ConditionBlock = function ConditionBlock(props) {
89
97
  date: ConditionBuilderItemDate.ConditionBuilderItemDate,
90
98
  time: ConditionBuilderItemTime.ConditionBuilderItemTime,
91
99
  option: ItemOptionForValueField.ItemOptionForValueField,
92
- custom: config === null || config === void 0 ? void 0 : config.component
100
+ custom: config === null || config === void 0 ? void 0 : config.component,
101
+ textarea: ConditionBuilderItemText.ConditionBuilderItemText
93
102
  };
94
103
  var ItemComponent = property ? itemComponents[type] : null;
95
104
  var onStatementChangeHandler = function onStatementChangeHandler(v, evt) {
@@ -142,7 +151,7 @@ var ConditionBlock = function ConditionBlock(props) {
142
151
  return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
143
152
  className: cx__default["default"]("".concat(DataConfigs.blockClass, "__condition-block"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(DataConfigs.blockClass, "__condition__deletion-preview"), showDeletionPreview), _rollupPluginBabelHelpers.defineProperty({}, "".concat(DataConfigs.blockClass, "__gap-bottom"), variant == 'tree' && !(conditionIndex + 1 >= group.conditions.length)), _rollupPluginBabelHelpers.defineProperty({}, "".concat(DataConfigs.blockClass, "__gap ").concat(DataConfigs.blockClass, "__gap-bottom"), variant == 'sentence')),
144
153
  role: "row",
145
- "aria-label": DataConfigs.translateWithId('condition_row'),
154
+ "aria-label": conditionRowText,
146
155
  tabIndex: -1
147
156
  }, getAriaAttributes()), conjunction ? /*#__PURE__*/React__default["default"].createElement(ConditionConnector["default"], {
148
157
  className: "".concat(DataConfigs.blockClass, "__gap"),
@@ -154,14 +163,14 @@ var ConditionBlock = function ConditionBlock(props) {
154
163
  role: "gridcell"
155
164
  })), isStatement && /*#__PURE__*/React__default["default"].createElement(ConditionBuilderItem.ConditionBuilderItem, {
156
165
  label: group.statement,
157
- title: DataConfigs.translateWithId('condition'),
166
+ title: conditionText,
158
167
  "data-name": "connectorField",
159
168
  popOverClassName: "".concat(DataConfigs.blockClass, "__gap"),
160
169
  className: "".concat(DataConfigs.blockClass, "__statement-button")
161
170
  }, /*#__PURE__*/React__default["default"].createElement(ItemOption.ItemOption, {
162
171
  conditionState: {
163
172
  value: group.statement,
164
- label: DataConfigs.translateWithId('condition')
173
+ label: conditionText
165
174
  },
166
175
  onChange: onStatementChangeHandler,
167
176
  config: {
@@ -169,7 +178,7 @@ var ConditionBlock = function ConditionBlock(props) {
169
178
  }
170
179
  })), /*#__PURE__*/React__default["default"].createElement(ConditionBuilderItem.ConditionBuilderItem, {
171
180
  label: label,
172
- title: DataConfigs.translateWithId('property'),
181
+ title: propertyText,
173
182
  renderIcon: icon !== null && icon !== void 0 ? icon : null,
174
183
  className: "".concat(DataConfigs.blockClass, "__property-field"),
175
184
  "data-name": "propertyField",
@@ -178,7 +187,7 @@ var ConditionBlock = function ConditionBlock(props) {
178
187
  }, /*#__PURE__*/React__default["default"].createElement(ItemOption.ItemOption, {
179
188
  conditionState: {
180
189
  value: property,
181
- label: DataConfigs.translateWithId('property')
190
+ label: propertyText
182
191
  },
183
192
  onChange: onPropertyChangeHandler,
184
193
  config: {
@@ -186,7 +195,7 @@ var ConditionBlock = function ConditionBlock(props) {
186
195
  }
187
196
  })), property && /*#__PURE__*/React__default["default"].createElement(ConditionBuilderItem.ConditionBuilderItem, {
188
197
  label: operator,
189
- title: DataConfigs.translateWithId('operator'),
198
+ title: operatorText,
190
199
  "data-name": "operatorField",
191
200
  condition: condition,
192
201
  type: type
@@ -196,7 +205,7 @@ var ConditionBlock = function ConditionBlock(props) {
196
205
  },
197
206
  conditionState: {
198
207
  value: operator,
199
- label: DataConfigs.translateWithId('operator')
208
+ label: operatorText
200
209
  },
201
210
  onChange: onOperatorChangeHandler
202
211
  })), property && operator && /*#__PURE__*/React__default["default"].createElement(ConditionBuilderItem.ConditionBuilderItem, {
@@ -215,13 +224,14 @@ var ConditionBlock = function ConditionBlock(props) {
215
224
  },
216
225
  onChange: onValueChangeHandler,
217
226
  config: config,
227
+ type: type,
218
228
  "data-name": "valueField"
219
229
  })), /*#__PURE__*/React__default["default"].createElement("span", {
220
230
  role: "gridcell",
221
- "aria-label": DataConfigs.translateWithId('remove_condition')
231
+ "aria-label": removeConditionText
222
232
  }, /*#__PURE__*/React__default["default"].createElement(ConditionBuilderButton.ConditionBuilderButton, {
223
233
  hideLabel: true,
224
- label: DataConfigs.translateWithId('remove_condition'),
234
+ label: removeConditionText,
225
235
  onClick: onRemove,
226
236
  onMouseEnter: handleShowDeletionPreview,
227
237
  onMouseLeave: handleHideDeletionPreview,
@@ -26,7 +26,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
26
26
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
27
27
  var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
28
28
 
29
- var _excluded = ["className", "inputConfig", "startConditionLabel", "popOverSearchThreshold", "getOptions", "initialState", "getConditionState", "getActionsState", "variant", "actions"];
29
+ var _excluded = ["className", "inputConfig", "startConditionLabel", "popOverSearchThreshold", "getOptions", "initialState", "getConditionState", "getActionsState", "variant", "actions", "translateWithId"];
30
30
 
31
31
  // Carbon and package components we use.
32
32
  /* TODO: @import(s) of carbon components and other package components. */
@@ -62,8 +62,10 @@ exports.ConditionBuilder = /*#__PURE__*/React__default["default"].forwardRef(fun
62
62
  initialState = _ref.initialState,
63
63
  getConditionState = _ref.getConditionState,
64
64
  getActionsState = _ref.getActionsState,
65
- variant = _ref.variant,
65
+ _ref$variant = _ref.variant,
66
+ variant = _ref$variant === void 0 ? 'sentence' : _ref$variant,
66
67
  actions = _ref.actions,
68
+ translateWithId = _ref.translateWithId,
67
69
  rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
68
70
  var localRef = React.useRef();
69
71
  var conditionBuilderRef = ref || localRef;
@@ -74,7 +76,8 @@ exports.ConditionBuilder = /*#__PURE__*/React__default["default"].forwardRef(fun
74
76
  inputConfig: inputConfig,
75
77
  popOverSearchThreshold: popOverSearchThreshold,
76
78
  getOptions: getOptions,
77
- variant: variant
79
+ variant: variant,
80
+ translateWithId: translateWithId
78
81
  }, /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({}, rest, {
79
82
  className: cx__default["default"](DataConfigs.blockClass,
80
83
  // Apply the block class to the main HTML element
@@ -182,7 +185,7 @@ exports.ConditionBuilder.propTypes = {
182
185
  id: index["default"].string.isRequired,
183
186
  label: index["default"].string.isRequired,
184
187
  icon: index["default"].oneOfType([index["default"].func, index["default"].object]),
185
- type: index["default"].oneOf(['text', 'number', 'date', 'option', 'time', 'custom']).isRequired,
188
+ type: index["default"].oneOf(['text', 'textarea', 'number', 'date', 'option', 'time', 'custom']).isRequired,
186
189
  config: index["default"].shape({
187
190
  options: index["default"].arrayOf(index["default"].shape({
188
191
  id: index["default"].string.isRequired,
@@ -205,9 +208,16 @@ exports.ConditionBuilder.propTypes = {
205
208
  * Provide a label to the button that starts condition builder
206
209
  */
207
210
  startConditionLabel: index["default"].string.isRequired,
211
+ /**
212
+ * Optional prop, if you need to pass translations to the texts on the component instead of the defined defaults.
213
+ * This callback function will receive the message id and you need to return the corresponding text for that id.
214
+ * The message id will be one of [ "ifText","addConditionText", "addConditionGroupText", "addSubgroupText", "conditionText", "propertyText", "operatorText", "valueText", "connectorText", "conditionRowText", "removeConditionText", "addConditionRowText", "startText", "endText", "clearSearchText", "actionsText", "then", "removeActionText", "addActionText", "invalidText", "invalidNumberWarnText"]
215
+ ]
216
+ */
217
+ translateWithId: index["default"].func,
208
218
  /* TODO: add types and DocGen for all props. */
209
219
  /**
210
220
  * Provide the condition builder variant: sentence/ tree
211
221
  */
212
- variant: index["default"].string.isRequired
222
+ variant: index["default"].oneOf(['tree', 'sentence'])
213
223
  };
@@ -6,8 +6,8 @@ declare function ConditionBuilderActions({ actions, className }: {
6
6
  declare namespace ConditionBuilderActions {
7
7
  namespace propTypes {
8
8
  let actions: PropTypes.Requireable<(PropTypes.InferProps<{
9
- id: PropTypes.Requireable<number>;
10
- label: PropTypes.Requireable<string>;
9
+ id: PropTypes.Validator<NonNullable<NonNullable<string | number | null | undefined>>>;
10
+ label: PropTypes.Validator<string>;
11
11
  }> | null | undefined)[]>;
12
12
  let className: PropTypes.Requireable<string>;
13
13
  }