@carbon/ibm-products 2.43.2-canary.19 → 2.43.2-canary.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. package/css/index-full-carbon.css +32 -1
  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 +32 -1
  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 +32 -1
  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 +23 -21
  14. package/es/components/ConditionBuilder/ConditionBuilder.js +67 -20
  15. package/es/components/ConditionBuilder/ConditionBuilderActions/ConditionBuilderActions.d.ts +15 -0
  16. package/es/components/ConditionBuilder/ConditionBuilderActions/ConditionBuilderActions.js +129 -0
  17. package/es/components/ConditionBuilder/ConditionBuilderAdd/ConditionBuilderAdd.js +6 -4
  18. package/es/components/ConditionBuilder/ConditionBuilderButton/ConditionBuilderButton.d.ts +5 -1
  19. package/es/components/ConditionBuilder/ConditionBuilderButton/ConditionBuilderButton.js +16 -4
  20. package/es/components/ConditionBuilder/ConditionBuilderConnector/ConditionConnector.js +2 -2
  21. package/es/components/ConditionBuilder/ConditionBuilderConnector/GroupConnector.js +2 -2
  22. package/es/components/ConditionBuilder/ConditionBuilderContent/ConditionBuilderContent.d.ts +9 -11
  23. package/es/components/ConditionBuilder/ConditionBuilderContent/ConditionBuilderContent.js +36 -32
  24. package/es/components/ConditionBuilder/ConditionBuilderContext/ConditionBuilderProvider.d.ts +0 -1
  25. package/es/components/ConditionBuilder/ConditionBuilderContext/ConditionBuilderProvider.js +7 -2
  26. package/es/components/ConditionBuilder/ConditionBuilderContext/DataConfigs.d.ts +6 -1
  27. package/es/components/ConditionBuilder/ConditionBuilderContext/DataConfigs.js +18 -10
  28. package/es/components/ConditionBuilder/ConditionBuilderContext/translationObject.d.ts +39 -36
  29. package/es/components/ConditionBuilder/ConditionBuilderContext/translationObject.js +12 -10
  30. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItem.d.ts +1 -1
  31. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItem.js +24 -16
  32. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemNumber/ConditionBuilderItemNumber.js +19 -4
  33. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.d.ts +13 -0
  34. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.js +109 -0
  35. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/{ConditionBuilderItemOption.d.ts → ItemOptionForValueField.d.ts} +2 -2
  36. package/es/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/{ConditionBuilderItemOption.js → ItemOptionForValueField.js} +58 -33
  37. package/es/components/ConditionBuilder/ConditionGroupBuilder/ConditionGroupBuilder.js +4 -6
  38. package/es/components/ConditionBuilder/ConditionPreview/ConditionPreview.js +14 -5
  39. package/es/components/ConditionBuilder/utils/handleKeyboardEvents.js +1 -2
  40. package/es/components/ConditionBuilder/utils/util.d.ts +1 -0
  41. package/es/components/ConditionBuilder/utils/util.js +16 -1
  42. package/lib/components/ConditionBuilder/ConditionBlock/ConditionBlock.js +23 -21
  43. package/lib/components/ConditionBuilder/ConditionBuilder.js +67 -20
  44. package/lib/components/ConditionBuilder/ConditionBuilderActions/ConditionBuilderActions.d.ts +15 -0
  45. package/lib/components/ConditionBuilder/ConditionBuilderActions/ConditionBuilderActions.js +137 -0
  46. package/lib/components/ConditionBuilder/ConditionBuilderAdd/ConditionBuilderAdd.js +6 -3
  47. package/lib/components/ConditionBuilder/ConditionBuilderButton/ConditionBuilderButton.d.ts +5 -1
  48. package/lib/components/ConditionBuilder/ConditionBuilderButton/ConditionBuilderButton.js +16 -4
  49. package/lib/components/ConditionBuilder/ConditionBuilderConnector/ConditionConnector.js +2 -2
  50. package/lib/components/ConditionBuilder/ConditionBuilderConnector/GroupConnector.js +2 -2
  51. package/lib/components/ConditionBuilder/ConditionBuilderContent/ConditionBuilderContent.d.ts +9 -11
  52. package/lib/components/ConditionBuilder/ConditionBuilderContent/ConditionBuilderContent.js +36 -32
  53. package/lib/components/ConditionBuilder/ConditionBuilderContext/ConditionBuilderProvider.d.ts +0 -1
  54. package/lib/components/ConditionBuilder/ConditionBuilderContext/ConditionBuilderProvider.js +7 -2
  55. package/lib/components/ConditionBuilder/ConditionBuilderContext/DataConfigs.d.ts +6 -1
  56. package/lib/components/ConditionBuilder/ConditionBuilderContext/DataConfigs.js +18 -10
  57. package/lib/components/ConditionBuilder/ConditionBuilderContext/translationObject.d.ts +39 -36
  58. package/lib/components/ConditionBuilder/ConditionBuilderContext/translationObject.js +12 -10
  59. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItem.d.ts +1 -1
  60. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItem.js +23 -15
  61. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemNumber/ConditionBuilderItemNumber.js +20 -5
  62. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.d.ts +13 -0
  63. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.js +117 -0
  64. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/{ConditionBuilderItemOption.d.ts → ItemOptionForValueField.d.ts} +2 -2
  65. package/lib/components/ConditionBuilder/ConditionBuilderItem/ConditionBuilderItemOption/{ConditionBuilderItemOption.js → ItemOptionForValueField.js} +56 -31
  66. package/lib/components/ConditionBuilder/ConditionGroupBuilder/ConditionGroupBuilder.js +4 -6
  67. package/lib/components/ConditionBuilder/ConditionPreview/ConditionPreview.js +14 -4
  68. package/lib/components/ConditionBuilder/utils/handleKeyboardEvents.js +1 -2
  69. package/lib/components/ConditionBuilder/utils/util.d.ts +1 -0
  70. package/lib/components/ConditionBuilder/utils/util.js +17 -0
  71. package/package.json +3 -3
  72. package/scss/components/ConditionBuilder/styles/_conditionBuilderCondition.scss +9 -1
  73. package/scss/components/ConditionBuilder/styles/_conditionBuilderItem.scss +26 -1
  74. package/es/components/ConditionBuilder/utils/checkForHoldingKey.d.ts +0 -1
  75. package/es/components/ConditionBuilder/utils/checkForHoldingKey.js +0 -16
  76. package/lib/components/ConditionBuilder/utils/checkForHoldingKey.d.ts +0 -1
  77. package/lib/components/ConditionBuilder/utils/checkForHoldingKey.js +0 -20
@@ -11,7 +11,6 @@ import { Close } from '@carbon/react/icons';
11
11
  import { ConditionBuilderItem } from '../ConditionBuilderItem/ConditionBuilderItem.js';
12
12
  import PropTypes from '../../../node_modules/prop-types/index.js';
13
13
  import { blockClass, translateWithId, statementConfig, operatorConfig } from '../ConditionBuilderContext/DataConfigs.js';
14
- import { ConditionBuilderItemOption } from '../ConditionBuilderItem/ConditionBuilderItemOption/ConditionBuilderItemOption.js';
15
14
  import cx from 'classnames';
16
15
  import ConditionConnector from '../ConditionBuilderConnector/ConditionConnector.js';
17
16
  import { ConditionBuilderItemNumber } from '../ConditionBuilderItem/ConditionBuilderItemNumber/ConditionBuilderItemNumber.js';
@@ -22,8 +21,11 @@ import { ConditionBuilderButton } from '../ConditionBuilderButton/ConditionBuild
22
21
  import { focusThisField } from '../utils/util.js';
23
22
  import { ConditionBuilderItemTime } from '../ConditionBuilderItem/ConditionBuilderItemTime/ConditionBuilderItemTime.js';
24
23
  import ConditionBuilderAdd from '../ConditionBuilderAdd/ConditionBuilderAdd.js';
24
+ import { ItemOption } from '../ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.js';
25
+ import { ItemOptionForValueField } from '../ConditionBuilderItem/ConditionBuilderItemOption/ItemOptionForValueField.js';
25
26
 
26
27
  var _div;
28
+
27
29
  /**
28
30
  * This component build each block of condition consisting of property, operator value and close button.
29
31
  */
@@ -53,14 +55,6 @@ var ConditionBlock = function ConditionBlock(props) {
53
55
  var _useContext = useContext(ConditionBuilderContext),
54
56
  inputConfig = _useContext.inputConfig,
55
57
  variant = _useContext.variant;
56
- //Below possible input types expected for value field.
57
- var itemComponents = {
58
- option: ConditionBuilderItemOption,
59
- text: ConditionBuilderItemText,
60
- number: ConditionBuilderItemNumber,
61
- date: ConditionBuilderItemDate,
62
- time: ConditionBuilderItemTime
63
- };
64
58
  var _useState = useState(false),
65
59
  _useState2 = _slicedToArray(_useState, 2),
66
60
  showDeletionPreview = _useState2[0],
@@ -78,13 +72,17 @@ var ConditionBlock = function ConditionBlock(props) {
78
72
  type = _getCurrentConfig.type,
79
73
  config = _getCurrentConfig.config,
80
74
  label = _getCurrentConfig.label;
81
- var ItemComponent;
82
- // if (type == 'custom') {
83
- // ItemComponent = config.component;
84
- // } else {
85
- ItemComponent = property ? itemComponents[type] : null;
86
- //}
87
75
 
76
+ //Below possible input types expected for value field.
77
+ var itemComponents = {
78
+ text: ConditionBuilderItemText,
79
+ number: ConditionBuilderItemNumber,
80
+ date: ConditionBuilderItemDate,
81
+ time: ConditionBuilderItemTime,
82
+ option: ItemOptionForValueField,
83
+ custom: config === null || config === void 0 ? void 0 : config.component
84
+ };
85
+ var ItemComponent = property ? itemComponents[type] : null;
88
86
  var onStatementChangeHandler = function onStatementChangeHandler(v, evt) {
89
87
  focusThisField(evt);
90
88
  onStatementChange(v);
@@ -105,9 +103,10 @@ var ConditionBlock = function ConditionBlock(props) {
105
103
  }));
106
104
  };
107
105
  var onValueChangeHandler = function onValueChangeHandler(newValue) {
108
- onChange(_objectSpread2(_objectSpread2({}, condition), {}, {
109
- value: newValue,
110
- popoverToOpen: ''
106
+ var currentCondition = _objectSpread2({}, condition);
107
+ delete currentCondition.popoverToOpen;
108
+ onChange(_objectSpread2(_objectSpread2({}, currentCondition), {}, {
109
+ value: newValue
111
110
  }));
112
111
  };
113
112
  var handleShowDeletionPreview = function handleShowDeletionPreview() {
@@ -117,6 +116,9 @@ var ConditionBlock = function ConditionBlock(props) {
117
116
  setShowDeletionPreview(false);
118
117
  };
119
118
  var getOperators = function getOperators() {
119
+ if (config !== null && config !== void 0 && config.operators) {
120
+ return config.operators;
121
+ }
120
122
  return operatorConfig.filter(function (operator) {
121
123
  return operator.type.indexOf(type) != -1 || operator.type == 'all';
122
124
  });
@@ -147,7 +149,7 @@ var ConditionBlock = function ConditionBlock(props) {
147
149
  "data-name": "connectorField",
148
150
  popOverClassName: "".concat(blockClass, "__gap"),
149
151
  className: "".concat(blockClass, "__statement-button")
150
- }, /*#__PURE__*/React__default.createElement(ConditionBuilderItemOption, {
152
+ }, /*#__PURE__*/React__default.createElement(ItemOption, {
151
153
  conditionState: {
152
154
  value: group.statement,
153
155
  label: translateWithId('condition')
@@ -164,7 +166,7 @@ var ConditionBlock = function ConditionBlock(props) {
164
166
  "data-name": "propertyField",
165
167
  condition: condition,
166
168
  type: type
167
- }, /*#__PURE__*/React__default.createElement(ConditionBuilderItemOption, {
169
+ }, /*#__PURE__*/React__default.createElement(ItemOption, {
168
170
  conditionState: {
169
171
  value: property,
170
172
  label: translateWithId('property')
@@ -179,7 +181,7 @@ var ConditionBlock = function ConditionBlock(props) {
179
181
  "data-name": "operatorField",
180
182
  condition: condition,
181
183
  type: type
182
- }, /*#__PURE__*/React__default.createElement(ConditionBuilderItemOption, {
184
+ }, /*#__PURE__*/React__default.createElement(ItemOption, {
183
185
  config: {
184
186
  options: getOperators()
185
187
  },
@@ -17,7 +17,7 @@ import { pkg } from '../../settings.js';
17
17
  import { blockClass } from './ConditionBuilderContext/DataConfigs.js';
18
18
  import { handleKeyDown } from './utils/handleKeyboardEvents.js';
19
19
 
20
- var _excluded = ["className", "inputConfig", "startConditionLabel", "popOverSearchThreshold", "getOptions", "initialState", "getConditionState", "variant"];
20
+ var _excluded = ["className", "inputConfig", "startConditionLabel", "popOverSearchThreshold", "getOptions", "initialState", "getConditionState", "getActionsState", "variant", "actions"];
21
21
 
22
22
  // Carbon and package components we use.
23
23
  /* TODO: @import(s) of carbon components and other package components. */
@@ -52,7 +52,9 @@ var ConditionBuilder = /*#__PURE__*/React__default.forwardRef(function (_ref, re
52
52
  getOptions = _ref.getOptions,
53
53
  initialState = _ref.initialState,
54
54
  getConditionState = _ref.getConditionState,
55
+ getActionsState = _ref.getActionsState,
55
56
  variant = _ref.variant,
57
+ actions = _ref.actions,
56
58
  rest = _objectWithoutProperties(_ref, _excluded);
57
59
  var localRef = useRef();
58
60
  var conditionBuilderRef = ref || localRef;
@@ -83,7 +85,9 @@ var ConditionBuilder = /*#__PURE__*/React__default.forwardRef(function (_ref, re
83
85
  startConditionLabel: startConditionLabel,
84
86
  conditionBuilderRef: conditionBuilderRef,
85
87
  getConditionState: getConditionState,
86
- initialState: initialState
88
+ getActionsState: getActionsState,
89
+ initialState: initialState,
90
+ actions: actions
87
91
  }))));
88
92
  });
89
93
 
@@ -99,27 +103,66 @@ ConditionBuilder.displayName = componentName;
99
103
  // See https://www.npmjs.com/package/prop-types#usage.
100
104
  ConditionBuilder.propTypes = {
101
105
  /**
102
- * Provide the contents of the ConditionBuilder.
106
+ * optional array of actions
103
107
  */
104
- //children: PropTypes.node.isRequired,
105
-
108
+ actions: PropTypes.arrayOf(PropTypes.shape({
109
+ id: PropTypes.oneOfType([PropTypes.string | PropTypes.number]).isRequired,
110
+ label: PropTypes.string.isRequired
111
+ })),
106
112
  /**
107
113
  * Provide an optional class to be applied to the containing node.
108
114
  */
109
115
  className: PropTypes.string,
116
+ /**
117
+ * This is a callback that gives back the updated action state
118
+ */
119
+ getActionsState: PropTypes.func,
120
+ /**
121
+ * This is a callback that gives back updated condition state
122
+ */
110
123
  getConditionState: PropTypes.func.isRequired,
124
+ /**
125
+ * This is a callback that get triggered when you want to dynamically fetch options.
126
+ * Component call this when the option array is not passed against a property with type as option in the input config.
127
+ * This is an asynchronous callback that can return a promise , and you need to resolve the promise with options array in the valid format.
128
+ * You will receive the root condition state and current condition as the 2 arguments.
129
+ * eg: const getOptions = async (conditionState,condition) => {
130
+ switch (condition.property) {
131
+ case 'continent':
132
+ return new Promise((resolve) => {
133
+ const continents=[{
134
+ label: 'Africa',
135
+ id: 'Africa',
136
+ },...]
137
+ resolve(continents);
138
+ });
139
+ default:
140
+ return [];
141
+ }
142
+ };
143
+ */
111
144
  getOptions: PropTypes.func,
145
+ /**
146
+ * Optional prop if you want to pass a saved condition state.
147
+ * This object should respect the structure of condition state that is available in getConditionState callback
148
+ */
112
149
  initialState: PropTypes.shape({
113
150
  groups: PropTypes.arrayOf(PropTypes.shape({
114
- groupSeparateOperator: PropTypes.string,
115
- groupOperator: PropTypes.string,
116
- statement: PropTypes.string,
117
- conditions: PropTypes.arrayOf(PropTypes.shape({
118
- property: PropTypes.string,
119
- operator: PropTypes.string,
120
- value: PropTypes.string
121
- }))
122
- }))
151
+ groupOperator: PropTypes.string.isRequired,
152
+ statement: PropTypes.string.isRequired,
153
+ conditions: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.shape({
154
+ property: PropTypes.string.isRequired,
155
+ operator: PropTypes.string.isRequired,
156
+ value: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.shape({
157
+ id: PropTypes.string,
158
+ label: PropTypes.string
159
+ })), PropTypes.shape({
160
+ id: PropTypes.string,
161
+ label: PropTypes.string
162
+ })])
163
+ }), PropTypes.object]))
164
+ })),
165
+ operator: PropTypes.string
123
166
  }),
124
167
  /**
125
168
  * This is a mandatory prop that defines the input to the condition builder.
@@ -127,17 +170,21 @@ ConditionBuilder.propTypes = {
127
170
  */
128
171
  inputConfig: PropTypes.shape({
129
172
  properties: PropTypes.arrayOf(PropTypes.shape({
130
- id: PropTypes.string,
131
- label: PropTypes.string,
173
+ id: PropTypes.string.isRequired,
174
+ label: PropTypes.string.isRequired,
132
175
  icon: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
133
- type: PropTypes.oneOf(['text', 'number', 'date', 'option', 'time']),
176
+ type: PropTypes.oneOf(['text', 'number', 'date', 'option', 'time', 'custom']).isRequired,
134
177
  config: PropTypes.shape({
135
178
  options: PropTypes.arrayOf(PropTypes.shape({
136
- id: PropTypes.string,
137
- label: PropTypes.string,
179
+ id: PropTypes.string.isRequired,
180
+ label: PropTypes.string.isRequired,
138
181
  icon: PropTypes.oneOfType([PropTypes.func, PropTypes.object])
139
182
  })),
140
- includeSearch: PropTypes.bool
183
+ component: PropTypes.func,
184
+ operators: PropTypes.arrayOf(PropTypes.shape({
185
+ id: PropTypes.string.isRequired,
186
+ label: PropTypes.string.isRequired
187
+ }))
141
188
  })
142
189
  }))
143
190
  }).isRequired,
@@ -0,0 +1,15 @@
1
+ export default ConditionBuilderActions;
2
+ declare function ConditionBuilderActions({ actions, className }: {
3
+ actions: any;
4
+ className: any;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ declare namespace ConditionBuilderActions {
7
+ namespace propTypes {
8
+ let actions: PropTypes.Requireable<(PropTypes.InferProps<{
9
+ id: PropTypes.Requireable<number>;
10
+ label: PropTypes.Requireable<string>;
11
+ }> | null | undefined)[]>;
12
+ let className: PropTypes.Requireable<string>;
13
+ }
14
+ }
15
+ import PropTypes from 'prop-types';
@@ -0,0 +1,129 @@
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 { toConsumableArray as _toConsumableArray, objectSpread2 as _objectSpread2 } from '../../../_virtual/_rollupPluginBabelHelpers.js';
9
+ import React__default, { useContext } from 'react';
10
+ import PropTypes from '../../../node_modules/prop-types/index.js';
11
+ import { Close } from '@carbon/react/icons';
12
+ import { Section, Heading } from '@carbon/react';
13
+ import { ConditionBuilderItem } from '../ConditionBuilderItem/ConditionBuilderItem.js';
14
+ import { blockClass, translateWithId } from '../ConditionBuilderContext/DataConfigs.js';
15
+ import { ItemOption } from '../ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.js';
16
+ import { ConditionBuilderContext } from '../ConditionBuilderContext/ConditionBuilderProvider.js';
17
+ import ConditionBuilderAdd from '../ConditionBuilderAdd/ConditionBuilderAdd.js';
18
+ import uuidv4 from '../../../global/js/utils/uuidv4.js';
19
+ import { ConditionBuilderButton } from '../ConditionBuilderButton/ConditionBuilderButton.js';
20
+ import { checkDuplicateAction, focusThisField } from '../utils/util.js';
21
+
22
+ var ConditionBuilderActions = function ConditionBuilderActions(_ref) {
23
+ var actions = _ref.actions,
24
+ className = _ref.className;
25
+ var _useContext = useContext(ConditionBuilderContext),
26
+ actionState = _useContext.actionState,
27
+ setActionState = _useContext.setActionState;
28
+ var addActionHandler = function addActionHandler() {
29
+ var action = {
30
+ id: uuidv4(),
31
+ label: undefined,
32
+ popoverToOpen: 'actionField'
33
+ };
34
+ setActionState([].concat(_toConsumableArray(actionState), [action]));
35
+ };
36
+ var onchangeHandler = function onchangeHandler(evt, selectedId, actionIndex, currentAction) {
37
+ var action = actions.find(function (action) {
38
+ return action.id === selectedId;
39
+ }); //fetch the selected action from the input action array
40
+
41
+ //if the action is duplicate, that action is added with a new id, else the same action is used.
42
+ // same actions can be added multiple times
43
+ var newAction = checkDuplicateAction(actionState, selectedId, currentAction.id) ? _objectSpread2(_objectSpread2({}, action), {}, {
44
+ id: uuidv4()
45
+ }) : action;
46
+ setActionState([].concat(_toConsumableArray(actionState.slice(0, actionIndex)), [newAction], _toConsumableArray(actionState.slice(actionIndex + 1))));
47
+ focusThisField(evt);
48
+ };
49
+ var onRemove = function onRemove(selectedId) {
50
+ setActionState(actionState.filter(function (action) {
51
+ return action.id !== selectedId;
52
+ }));
53
+ };
54
+ return /*#__PURE__*/React__default.createElement("div", {
55
+ className: "".concat(className)
56
+ }, /*#__PURE__*/React__default.createElement(Section, {
57
+ className: "".concat(blockClass, "__heading"),
58
+ level: 4
59
+ }, /*#__PURE__*/React__default.createElement(Heading, null, translateWithId('actions'))), /*#__PURE__*/React__default.createElement("div", {
60
+ className: "".concat(blockClass, "__condition-wrapper")
61
+ }, actionState === null || actionState === void 0 ? void 0 : actionState.map(function (action, index) {
62
+ return /*#__PURE__*/React__default.createElement("div", {
63
+ key: action.id,
64
+ "aria-hidden": true,
65
+ className: "".concat(blockClass, "__condition-block conditionBlockWrapper ").concat(blockClass, "__gap ").concat(blockClass, "__gap-bottom ")
66
+ }, /*#__PURE__*/React__default.createElement(ConditionBuilderItem, {
67
+ className: "".concat(blockClass, "__statement-button"),
68
+ popOverClassName: "".concat(blockClass, "__gap"),
69
+ label: index === 0 ? translateWithId('then') : translateWithId('and')
70
+ }), /*#__PURE__*/React__default.createElement(ConditionBuilderItem, {
71
+ label: action.label,
72
+ title: translateWithId('actions'),
73
+ popOverClassName: "".concat(blockClass, "__gap"),
74
+ condition: action,
75
+ "data-name": "actionField"
76
+ }, /*#__PURE__*/React__default.createElement(ItemOption, {
77
+ conditionState: {
78
+ value: action.label
79
+ },
80
+ onChange: function onChange(selectedId, evt) {
81
+ return onchangeHandler(evt, selectedId, index, action);
82
+ },
83
+ config: {
84
+ options: actions
85
+ }
86
+ })), /*#__PURE__*/React__default.createElement("span", {
87
+ role: "gridcell",
88
+ "aria-label": translateWithId('remove_action')
89
+ }, /*#__PURE__*/React__default.createElement(ConditionBuilderButton, {
90
+ hideLabel: true,
91
+ label: translateWithId('remove_action'),
92
+ onClick: function onClick() {
93
+ return onRemove(action.id);
94
+ }
95
+ // onMouseEnter={handleShowDeletionPreview}
96
+ // onMouseLeave={handleHideDeletionPreview}
97
+ // onFocus={handleShowDeletionPreview}
98
+ // onBlur={handleHideDeletionPreview}
99
+ ,
100
+ renderIcon: Close,
101
+ className: "".concat(blockClass, "__close-condition"),
102
+ "data-name": "closeCondition"
103
+ })), actionState.length === index + 1 && /*#__PURE__*/React__default.createElement(ConditionBuilderAdd, {
104
+ onClick: addActionHandler,
105
+ className: "".concat(blockClass, "__gap ").concat(blockClass, "__gap-left"),
106
+ buttonLabel: translateWithId('add_action')
107
+ }));
108
+ }), actionState.length === 0 && /*#__PURE__*/React__default.createElement(ConditionBuilderAdd, {
109
+ onClick: addActionHandler,
110
+ className: "".concat(blockClass, "__gap ").concat(blockClass, "__gap-left"),
111
+ buttonLabel: translateWithId('add_action')
112
+ })));
113
+ };
114
+ var ConditionBuilderActions$1 = ConditionBuilderActions;
115
+ ConditionBuilderActions.propTypes = {
116
+ /**
117
+ * optional array of object that give the list of actions.
118
+ */
119
+ actions: PropTypes.arrayOf(PropTypes.shape({
120
+ id: PropTypes.number,
121
+ label: PropTypes.string
122
+ })),
123
+ /**
124
+ * Provide an optional class to be applied to the containing node.
125
+ */
126
+ className: PropTypes.string
127
+ };
128
+
129
+ export { ConditionBuilderActions$1 as default };
@@ -5,8 +5,9 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- import { slicedToArray as _slicedToArray, extends as _extends } from '../../../_virtual/_rollupPluginBabelHelpers.js';
8
+ import { slicedToArray as _slicedToArray, extends as _extends, defineProperty as _defineProperty } from '../../../_virtual/_rollupPluginBabelHelpers.js';
9
9
  import React__default, { useState } from 'react';
10
+ import cx from 'classnames';
10
11
  import { AddAlt, TextNewLine } from '@carbon/react/icons';
11
12
  import { ConditionBuilderButton } from '../ConditionBuilderButton/ConditionBuilderButton.js';
12
13
  import PropTypes from '../../../node_modules/prop-types/index.js';
@@ -73,13 +74,14 @@ var ConditionBuilderAdd = function ConditionBuilderAdd(_ref) {
73
74
  "data-name": "addButton",
74
75
  label: buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel : translateWithId('add-condition'),
75
76
  wrapperProps: wrapperProps
76
- })), isAddSubgroup && enableSubGroup && /*#__PURE__*/React__default.createElement(ConditionBuilderButton, _extends({
77
+ })), enableSubGroup && /*#__PURE__*/React__default.createElement(ConditionBuilderButton, _extends({
77
78
  renderIcon: TextNewLine,
78
79
  onClick: addConditionSubGroupHandler,
79
- className: "".concat(blockClass, "__add-condition-group ").concat(blockClass, "__gap-left"),
80
+ className: cx("".concat(blockClass, "__add_condition_group ").concat(blockClass, "__gap-left")),
80
81
  hideLabel: true,
81
82
  label: translateWithId('add-condition'),
82
- wrapperProps: wrapperProps
83
+ wrapperProps: wrapperProps,
84
+ wrapperClassName: cx("".concat(blockClass, "__add_condition_group-wrapper"), _defineProperty({}, "".concat(blockClass, "__add_condition_group-wrapper--show"), isAddSubgroup))
83
85
  }, previewHandlersForSubgroup())));
84
86
  };
85
87
  var ConditionBuilderAdd$1 = ConditionBuilderAdd;
@@ -1,4 +1,4 @@
1
- export function ConditionBuilderButton({ className, label, hideLabel, tooltipAlign, renderIcon: Icon, onClick, showToolTip, wrapperProps, onBlur, onFocus, onMouseEnter, onMouseLeave, }: {
1
+ export function ConditionBuilderButton({ className, label, hideLabel, tooltipAlign, renderIcon: Icon, onClick, showToolTip, wrapperProps, onBlur, onFocus, onMouseEnter, onMouseLeave, isInvalid, wrapperClassName, }: {
2
2
  className: any;
3
3
  label: any;
4
4
  hideLabel: any;
@@ -11,11 +11,14 @@ export function ConditionBuilderButton({ className, label, hideLabel, tooltipAli
11
11
  onFocus: any;
12
12
  onMouseEnter: any;
13
13
  onMouseLeave: any;
14
+ isInvalid: any;
15
+ wrapperClassName: any;
14
16
  }): import("react/jsx-runtime").JSX.Element;
15
17
  export namespace ConditionBuilderButton {
16
18
  namespace propTypes {
17
19
  let className: PropTypes.Requireable<string>;
18
20
  let hideLabel: PropTypes.Requireable<boolean>;
21
+ let isInvalid: PropTypes.Requireable<boolean>;
19
22
  let label: PropTypes.Requireable<string>;
20
23
  let onBlur: PropTypes.Requireable<(...args: any[]) => any>;
21
24
  let onClick: PropTypes.Requireable<(...args: any[]) => any>;
@@ -25,6 +28,7 @@ export namespace ConditionBuilderButton {
25
28
  let renderIcon: PropTypes.Requireable<object>;
26
29
  let showToolTip: PropTypes.Requireable<boolean>;
27
30
  let tooltipAlign: PropTypes.Requireable<string>;
31
+ let wrapperClassName: PropTypes.Requireable<string>;
28
32
  let wrapperProps: PropTypes.Requireable<object>;
29
33
  }
30
34
  }
@@ -11,7 +11,9 @@ import cx from 'classnames';
11
11
  import PropTypes from '../../../node_modules/prop-types/index.js';
12
12
  import { Tooltip } from '@carbon/react';
13
13
  import { blockClass } from '../ConditionBuilderContext/DataConfigs.js';
14
+ import { WarningAltFilled } from '@carbon/react/icons';
14
15
 
16
+ var _WarningAltFilled;
15
17
  var ConditionBuilderButton = function ConditionBuilderButton(_ref) {
16
18
  var _Icon, _span;
17
19
  var className = _ref.className,
@@ -25,24 +27,26 @@ var ConditionBuilderButton = function ConditionBuilderButton(_ref) {
25
27
  onBlur = _ref.onBlur,
26
28
  onFocus = _ref.onFocus,
27
29
  onMouseEnter = _ref.onMouseEnter,
28
- onMouseLeave = _ref.onMouseLeave;
30
+ onMouseLeave = _ref.onMouseLeave,
31
+ isInvalid = _ref.isInvalid,
32
+ wrapperClassName = _ref.wrapperClassName;
29
33
  var Button = function Button() {
30
34
  return /*#__PURE__*/React__default.createElement("button", {
31
35
  // role={'gridcell'}
32
36
  tabIndex: -1,
33
- className: cx([className, "".concat(blockClass, "__button"), _defineProperty({}, "".concat(blockClass, "__text-ellipsis"), showToolTip && !hideLabel)]),
37
+ className: cx([className, "".concat(blockClass, "__button"), _defineProperty({}, "".concat(blockClass, "__text-ellipsis"), showToolTip && !hideLabel && !isInvalid), _defineProperty({}, "".concat(blockClass, "__invalid-input"), isInvalid)]),
34
38
  type: "button",
35
39
  onClick: onClick,
36
40
  onBlur: onBlur,
37
41
  onFocus: onFocus,
38
42
  onMouseEnter: onMouseEnter,
39
43
  onMouseLeave: onMouseLeave
40
- }, Icon && (_Icon || (_Icon = /*#__PURE__*/React__default.createElement(Icon, null))), !hideLabel && (_span || (_span = /*#__PURE__*/React__default.createElement("span", null, label))));
44
+ }, Icon && (_Icon || (_Icon = /*#__PURE__*/React__default.createElement(Icon, null))), !hideLabel && (_span || (_span = /*#__PURE__*/React__default.createElement("span", null, label))), isInvalid && (_WarningAltFilled || (_WarningAltFilled = /*#__PURE__*/React__default.createElement(WarningAltFilled, null))));
41
45
  };
42
46
  return hideLabel || showToolTip ? /*#__PURE__*/React__default.createElement(Tooltip, _extends({
43
47
  label: label,
44
48
  align: tooltipAlign,
45
- className: "".concat(blockClass, "__con-tooltip")
49
+ className: "".concat(wrapperClassName)
46
50
  }, wrapperProps), Button()) : /*#__PURE__*/React__default.createElement(React__default.Fragment, null, Button());
47
51
  };
48
52
  ConditionBuilderButton.propTypes = {
@@ -54,6 +58,10 @@ ConditionBuilderButton.propTypes = {
54
58
  * decides if label and tooltip to be hidden
55
59
  */
56
60
  hideLabel: PropTypes.bool,
61
+ /**
62
+ * boolean to know the updated value in not valid
63
+ */
64
+ isInvalid: PropTypes.bool,
57
65
  /**
58
66
  * label of the button
59
67
  */
@@ -83,6 +91,10 @@ ConditionBuilderButton.propTypes = {
83
91
  * tooltip position
84
92
  */
85
93
  tooltipAlign: PropTypes.string,
94
+ /**
95
+ * classname applies to the wrapper of popover
96
+ */
97
+ wrapperClassName: PropTypes.string,
86
98
  /**
87
99
  * optional props for tree grid to add role and aria-label to wrapper span
88
100
  */
@@ -8,7 +8,7 @@
8
8
  import { objectWithoutProperties as _objectWithoutProperties, extends as _extends } from '../../../_virtual/_rollupPluginBabelHelpers.js';
9
9
  import React__default, { useContext, useCallback } from 'react';
10
10
  import { ConditionBuilderItem } from '../ConditionBuilderItem/ConditionBuilderItem.js';
11
- import { ConditionBuilderItemOption } from '../ConditionBuilderItem/ConditionBuilderItemOption/ConditionBuilderItemOption.js';
11
+ import { ItemOption } from '../ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.js';
12
12
  import { blockClass, translateWithId, connectorConfig } from '../ConditionBuilderContext/DataConfigs.js';
13
13
  import PropTypes from '../../../node_modules/prop-types/index.js';
14
14
  import { focusThisField } from '../utils/util.js';
@@ -57,7 +57,7 @@ var ConditionConnector = function ConditionConnector(_ref) {
57
57
  }, rest, {
58
58
  popOverClassName: className,
59
59
  className: "".concat(blockClass, "__connector-button ")
60
- }), /*#__PURE__*/React__default.createElement(ConditionBuilderItemOption, {
60
+ }), /*#__PURE__*/React__default.createElement(ItemOption, {
61
61
  config: {
62
62
  options: connectorConfig
63
63
  },
@@ -8,7 +8,7 @@
8
8
  import React__default, { useContext } from 'react';
9
9
  import { ConditionBuilderItem } from '../ConditionBuilderItem/ConditionBuilderItem.js';
10
10
  import { blockClass, translateWithId, connectorConfig } from '../ConditionBuilderContext/DataConfigs.js';
11
- import { ConditionBuilderItemOption } from '../ConditionBuilderItem/ConditionBuilderItemOption/ConditionBuilderItemOption.js';
11
+ import { ItemOption } from '../ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.js';
12
12
  import { focusThisField } from '../utils/util.js';
13
13
  import { ConditionBuilderContext } from '../ConditionBuilderContext/ConditionBuilderProvider.js';
14
14
 
@@ -26,7 +26,7 @@ var GroupConnector = function GroupConnector() {
26
26
  "data-name": "connectorField",
27
27
  popOverClassName: "".concat(blockClass, "__gap"),
28
28
  className: "".concat(blockClass, "__statement-button")
29
- }, /*#__PURE__*/React__default.createElement(ConditionBuilderItemOption, {
29
+ }, /*#__PURE__*/React__default.createElement(ItemOption, {
30
30
  conditionState: {
31
31
  value: rootState.operator,
32
32
  label: translateWithId('condition')
@@ -1,30 +1,28 @@
1
1
  export default ConditionBuilderContent;
2
- declare function ConditionBuilderContent({ startConditionLabel, conditionBuilderRef, getConditionState, initialState, }: {
2
+ declare function ConditionBuilderContent({ startConditionLabel, conditionBuilderRef, getConditionState, getActionsState, initialState, actions, }: {
3
3
  startConditionLabel: any;
4
4
  conditionBuilderRef: any;
5
5
  getConditionState: any;
6
+ getActionsState: any;
6
7
  initialState: any;
8
+ actions: any;
7
9
  }): import("react/jsx-runtime").JSX.Element;
8
10
  declare namespace ConditionBuilderContent {
9
11
  namespace propTypes {
10
12
  let actions: PropTypes.Requireable<(PropTypes.InferProps<{
11
- id: PropTypes.Requireable<number>;
12
- label: PropTypes.Requireable<string>;
13
+ id: PropTypes.Validator<NonNullable<NonNullable<string | number | null | undefined>>>;
14
+ label: PropTypes.Validator<string>;
13
15
  }> | null | undefined)[]>;
14
16
  let conditionBuilderRef: PropTypes.Requireable<object>;
15
17
  let getActionsState: PropTypes.Requireable<(...args: any[]) => any>;
16
18
  let getConditionState: PropTypes.Validator<(...args: any[]) => any>;
17
19
  let initialState: PropTypes.Requireable<PropTypes.InferProps<{
18
20
  groups: PropTypes.Requireable<(PropTypes.InferProps<{
19
- groupSeparateOperator: PropTypes.Requireable<string>;
20
- groupOperator: PropTypes.Requireable<string>;
21
- statement: PropTypes.Requireable<string>;
22
- conditions: PropTypes.Requireable<(PropTypes.InferProps<{
23
- property: PropTypes.Requireable<string>;
24
- operator: PropTypes.Requireable<string>;
25
- value: PropTypes.Requireable<string>;
26
- }> | null | undefined)[]>;
21
+ groupOperator: PropTypes.Validator<string>;
22
+ statement: PropTypes.Validator<string>;
23
+ conditions: PropTypes.Requireable<(object | null | undefined)[]>;
27
24
  }> | null | undefined)[]>;
25
+ operator: PropTypes.Requireable<string>;
28
26
  }>>;
29
27
  let startConditionLabel: PropTypes.Validator<string>;
30
28
  }