@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
@@ -0,0 +1,109 @@
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 { slicedToArray as _slicedToArray } from '../../../../_virtual/_rollupPluginBabelHelpers.js';
9
+ import React__default, { useContext, useRef, useState, useEffect } from 'react';
10
+ import { Search } from '@carbon/react';
11
+ import { Checkmark } from '@carbon/react/icons';
12
+ import PropTypes from '../../../../node_modules/prop-types/index.js';
13
+ import { ConditionBuilderContext } from '../../ConditionBuilderContext/ConditionBuilderProvider.js';
14
+ import { blockClass, translateWithId } from '../../ConditionBuilderContext/DataConfigs.js';
15
+
16
+ var ItemOption = function ItemOption(_ref) {
17
+ var _ref$conditionState = _ref.conditionState,
18
+ conditionState = _ref$conditionState === void 0 ? {} : _ref$conditionState,
19
+ _ref$config = _ref.config,
20
+ config = _ref$config === void 0 ? {} : _ref$config,
21
+ onChange = _ref.onChange;
22
+ var _useContext = useContext(ConditionBuilderContext),
23
+ popOverSearchThreshold = _useContext.popOverSearchThreshold;
24
+ var contentRef = useRef();
25
+ var allOptions = config.options;
26
+ var _useState = useState(''),
27
+ _useState2 = _slicedToArray(_useState, 2),
28
+ searchValue = _useState2[0],
29
+ setSearchValue = _useState2[1];
30
+ var selection = conditionState.value;
31
+ var filteredItems = allOptions === null || allOptions === void 0 ? void 0 : allOptions.filter(function (opt) {
32
+ return opt.label.toLowerCase().includes(searchValue.toLowerCase());
33
+ });
34
+ useEffect(function () {
35
+ //this will focus the first input field in the popover
36
+
37
+ if (contentRef.current) {
38
+ var firstFocusableElement = contentRef.current.querySelector('input, button,li');
39
+ if (firstFocusableElement) {
40
+ firstFocusableElement.focus();
41
+ }
42
+ }
43
+ }, [allOptions]);
44
+ var onClickHandler = function onClickHandler(evt, option) {
45
+ onChange(option.id, evt);
46
+ };
47
+ var onSearchChangeHandler = function onSearchChangeHandler(evt) {
48
+ var value = evt.target.value;
49
+ setSearchValue(value);
50
+ };
51
+ var getAriaLabel = function getAriaLabel() {
52
+ return conditionState.label ? conditionState.label : conditionState.property ? conditionState.property : translateWithId('property');
53
+ };
54
+ if (!allOptions) {
55
+ return;
56
+ }
57
+ return /*#__PURE__*/React__default.createElement("div", {
58
+ className: "".concat(blockClass, "__item-option"),
59
+ ref: contentRef
60
+ }, allOptions.length > popOverSearchThreshold && /*#__PURE__*/React__default.createElement("div", {
61
+ className: "".concat(blockClass, "__item-option__search")
62
+ }, /*#__PURE__*/React__default.createElement(Search, {
63
+ size: "sm",
64
+ labelText: translateWithId('clear_search'),
65
+ closeButtonLabelText: translateWithId('clear_search'),
66
+ onChange: onSearchChangeHandler
67
+ })), /*#__PURE__*/React__default.createElement("ul", {
68
+ "aria-label": getAriaLabel(),
69
+ role: "listbox"
70
+ }, filteredItems === null || filteredItems === void 0 ? void 0 : filteredItems.map(function (option) {
71
+ var isSelected = selection === option.id;
72
+ var Icon = option.icon;
73
+ return /*#__PURE__*/React__default.createElement("li", {
74
+ tabIndex: 0,
75
+ key: option.id,
76
+ role: "option",
77
+ "aria-selected": isSelected,
78
+ className: "".concat(blockClass, "__item-option__option"),
79
+ onKeyUp: function onKeyUp() {
80
+ return false;
81
+ },
82
+ onClick: function onClick(evt) {
83
+ return onClickHandler(evt, option);
84
+ }
85
+ }, /*#__PURE__*/React__default.createElement("div", {
86
+ className: "".concat(blockClass, "__item-option__option-content")
87
+ }, /*#__PURE__*/React__default.createElement("span", {
88
+ className: "".concat(blockClass, "__item-option__option-label")
89
+ }, Icon && /*#__PURE__*/React__default.createElement(Icon, null), option.label), isSelected && /*#__PURE__*/React__default.createElement(Checkmark, {
90
+ className: "".concat(blockClass, "__checkmark")
91
+ })));
92
+ })));
93
+ };
94
+ ItemOption.propTypes = {
95
+ /**
96
+ * current condition object
97
+ */
98
+ conditionState: PropTypes.object,
99
+ /**
100
+ * current config object that this property is part of
101
+ */
102
+ config: PropTypes.object,
103
+ /**
104
+ * callback to update state oin date change
105
+ */
106
+ onChange: PropTypes.func
107
+ };
108
+
109
+ export { ItemOption };
@@ -1,9 +1,9 @@
1
- export function ConditionBuilderItemOption({ conditionState, config, onChange, }: {
1
+ export function ItemOptionForValueField({ conditionState, config, onChange, }: {
2
2
  conditionState?: {} | undefined;
3
3
  config?: {} | undefined;
4
4
  onChange: any;
5
5
  }): import("react/jsx-runtime").JSX.Element;
6
- export namespace ConditionBuilderItemOption {
6
+ export namespace ItemOptionForValueField {
7
7
  namespace propTypes {
8
8
  let conditionState: PropTypes.Requireable<object>;
9
9
  let config: PropTypes.Requireable<object>;
@@ -6,35 +6,58 @@
6
6
  */
7
7
 
8
8
  import { slicedToArray as _slicedToArray, toConsumableArray as _toConsumableArray, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime } from '../../../../_virtual/_rollupPluginBabelHelpers.js';
9
- import React__default, { useContext, useState, useRef, useEffect } from 'react';
10
- import { Search, Button, SelectSkeleton } from '@carbon/react';
9
+ import React__default, { useContext, useRef, useState, useEffect } from 'react';
10
+ 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
14
  import { blockClass, translateWithId } from '../../ConditionBuilderContext/DataConfigs.js';
15
15
 
16
- var _CheckboxCheckedFille, _Checkbox, _SelectSkeleton;
17
- var ConditionBuilderItemOption = function ConditionBuilderItemOption(_ref) {
16
+ var _SelectSkeleton, _CheckboxCheckedFille, _Checkbox;
17
+ var ItemOptionForValueField = function ItemOptionForValueField(_ref) {
18
18
  var _ref$conditionState = _ref.conditionState,
19
19
  conditionState = _ref$conditionState === void 0 ? {} : _ref$conditionState,
20
20
  _ref$config = _ref.config,
21
21
  config = _ref$config === void 0 ? {} : _ref$config,
22
22
  onChange = _ref.onChange;
23
- var multiSelectable = conditionState.operator === 'one-of';
23
+ var multiSelectable = conditionState.operator === 'one_of';
24
24
  var _useContext = useContext(ConditionBuilderContext),
25
25
  popOverSearchThreshold = _useContext.popOverSearchThreshold,
26
- getOptions = _useContext.getOptions;
26
+ getOptions = _useContext.getOptions,
27
+ rootState = _useContext.rootState;
28
+ var contentRef = useRef();
27
29
  var _useState = useState(config.options),
28
30
  _useState2 = _slicedToArray(_useState, 2),
29
31
  allOptions = _useState2[0],
30
32
  setAllOptions = _useState2[1];
31
- var _useState3 = useState(config.options),
33
+ var _useState3 = useState(''),
32
34
  _useState4 = _slicedToArray(_useState3, 2),
33
- filteredItems = _useState4[0],
34
- setFilteredItems = _useState4[1];
35
+ searchValue = _useState4[0],
36
+ setSearchValue = _useState4[1];
37
+ var filteredItems = allOptions === null || allOptions === void 0 ? void 0 : allOptions.filter(function (opt) {
38
+ return opt.label.toLowerCase().includes(searchValue.toLowerCase());
39
+ });
35
40
  var selection = Array.isArray(conditionState.value) ? conditionState.value : conditionState.value !== undefined ? [conditionState.value] : [];
36
- var contentRef = useRef();
37
41
  useEffect(function () {
42
+ // if(rest['data-name'] == 'valueField'){
43
+ // const fetchData = async () => {
44
+ // const response = await config.options(conditionState);
45
+ // if (
46
+ // response?.length > 0 &&
47
+ // Object.keys(response[0]).includes('label') &&
48
+ // Object.keys(response[0]).includes('id')
49
+ // ) {
50
+ // setAllOptions(response);
51
+ // setFilteredItems(response);
52
+ // }
53
+ // };
54
+
55
+ // fetchData(); // Call the async method
56
+ // }else{
57
+ // setAllOptions(config.options);
58
+ // setFilteredItems(config.options);
59
+ // }
60
+
38
61
  if (!allOptions && getOptions) {
39
62
  var fetchData = /*#__PURE__*/function () {
40
63
  var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
@@ -43,12 +66,11 @@ var ConditionBuilderItemOption = function ConditionBuilderItemOption(_ref) {
43
66
  while (1) switch (_context.prev = _context.next) {
44
67
  case 0:
45
68
  _context.next = 2;
46
- return getOptions(conditionState);
69
+ return getOptions(rootState, conditionState);
47
70
  case 2:
48
71
  response = _context.sent;
49
72
  if ((response === null || response === void 0 ? void 0 : response.length) > 0 && Object.keys(response[0]).includes('label') && Object.keys(response[0]).includes('id')) {
50
73
  setAllOptions(response);
51
- setFilteredItems(response);
52
74
  }
53
75
  case 4:
54
76
  case "end":
@@ -68,46 +90,47 @@ var ConditionBuilderItemOption = function ConditionBuilderItemOption(_ref) {
68
90
  //this will focus the first input field in the popover
69
91
 
70
92
  if (contentRef.current) {
71
- var _contentRef$current;
72
- var firstFocusableElement = (_contentRef$current = contentRef.current) === null || _contentRef$current === void 0 ? void 0 : _contentRef$current.querySelector('input, button,li');
73
- firstFocusableElement === null || firstFocusableElement === void 0 || firstFocusableElement.focus();
93
+ var firstFocusableElement = contentRef.current.querySelector('input, button,li');
94
+ if (firstFocusableElement) {
95
+ firstFocusableElement.focus();
96
+ }
74
97
  }
75
- // eslint-disable-next-line react-hooks/exhaustive-deps
76
98
  }, [allOptions]);
77
99
  var handleSelectAll = function handleSelectAll(evt) {
78
100
  if (evt.currentTarget.dataset.selectedAll == 'false') {
79
101
  onChange(undefined);
80
102
  } else {
81
- onChange(allOptions.map(function (op) {
82
- return op.id;
83
- }));
103
+ onChange(allOptions);
84
104
  }
85
105
  };
86
106
  var onSearchChangeHandler = function onSearchChangeHandler(evt) {
87
107
  var value = evt.target.value;
88
- var _filteredItems = allOptions.filter(function (opt) {
89
- return opt.label.toLowerCase().includes(value.toLowerCase());
90
- });
91
- setFilteredItems(_filteredItems);
108
+ setSearchValue(value);
92
109
  };
93
110
  var onClickHandler = function onClickHandler(evt, option, isSelected) {
94
111
  if (multiSelectable) {
95
112
  if (isSelected) {
96
113
  var items = selection.filter(function (v) {
97
- return v !== option.id;
114
+ return v.id !== option.id;
98
115
  });
99
116
  onChange(items.length > 0 ? items : undefined, evt);
100
117
  } else {
101
- onChange([].concat(_toConsumableArray(selection), [option.id]), evt);
118
+ onChange([].concat(_toConsumableArray(selection), [option]), evt);
102
119
  }
103
120
  } else {
104
- onChange(option.id, evt);
121
+ onChange(option, evt);
105
122
  }
106
123
  };
107
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, allOptions && /*#__PURE__*/React__default.createElement("div", {
124
+ var getAriaLabel = function getAriaLabel() {
125
+ return conditionState.label ? conditionState.label : conditionState.property ? conditionState.property : translateWithId('property');
126
+ };
127
+ if (!allOptions) {
128
+ return _SelectSkeleton || (_SelectSkeleton = /*#__PURE__*/React__default.createElement(SelectSkeleton, null));
129
+ }
130
+ return /*#__PURE__*/React__default.createElement("div", {
108
131
  className: "".concat(blockClass, "__item-option"),
109
132
  ref: contentRef
110
- }, (config.includeSearch || allOptions.length > popOverSearchThreshold) && /*#__PURE__*/React__default.createElement("div", {
133
+ }, allOptions.length > popOverSearchThreshold && /*#__PURE__*/React__default.createElement("div", {
111
134
  className: "".concat(blockClass, "__item-option__search")
112
135
  }, /*#__PURE__*/React__default.createElement(Search, {
113
136
  size: "sm",
@@ -123,11 +146,13 @@ var ConditionBuilderItemOption = function ConditionBuilderItemOption(_ref) {
123
146
  onClick: handleSelectAll,
124
147
  className: "".concat(blockClass, "__selectAll-button")
125
148
  }, selection.length == 0 ? 'Select all' : 'Deselect all')), /*#__PURE__*/React__default.createElement("ul", {
126
- "aria-label": conditionState.label ? conditionState.label : conditionState.property ? conditionState.property : translateWithId('property'),
149
+ "aria-label": getAriaLabel(),
127
150
  role: "listbox",
128
151
  "data-multi-select": multiSelectable
129
152
  }, filteredItems === null || filteredItems === void 0 ? void 0 : filteredItems.map(function (option) {
130
- var isSelected = selection.includes(option.id);
153
+ var isSelected = selection.map(function (option) {
154
+ return option.id;
155
+ }).includes(option.id);
131
156
  var Icon = option.icon;
132
157
  return /*#__PURE__*/React__default.createElement("li", {
133
158
  tabIndex: 0,
@@ -154,9 +179,9 @@ var ConditionBuilderItemOption = function ConditionBuilderItemOption(_ref) {
154
179
  }, Icon && /*#__PURE__*/React__default.createElement(Icon, null), option.label), isSelected && /*#__PURE__*/React__default.createElement(Checkmark, {
155
180
  className: "".concat(blockClass, "__checkmark")
156
181
  }))));
157
- }))), !allOptions && (_SelectSkeleton || (_SelectSkeleton = /*#__PURE__*/React__default.createElement(SelectSkeleton, null))));
182
+ })));
158
183
  };
159
- ConditionBuilderItemOption.propTypes = {
184
+ ItemOptionForValueField.propTypes = {
160
185
  /**
161
186
  * current condition object
162
187
  */
@@ -171,4 +196,4 @@ ConditionBuilderItemOption.propTypes = {
171
196
  onChange: PropTypes.func
172
197
  };
173
198
 
174
- export { ConditionBuilderItemOption };
199
+ export { ItemOptionForValueField };
@@ -12,15 +12,14 @@ import PropTypes from '../../../node_modules/prop-types/index.js';
12
12
  import cx from 'classnames';
13
13
  import { blockClass, translateWithId, statementConfig } from '../ConditionBuilderContext/DataConfigs.js';
14
14
  import { ConditionBuilderItem } from '../ConditionBuilderItem/ConditionBuilderItem.js';
15
- import { ConditionBuilderItemOption } from '../ConditionBuilderItem/ConditionBuilderItemOption/ConditionBuilderItemOption.js';
16
15
  import { focusThisField } from '../utils/util.js';
17
16
  import ConditionConnector from '../ConditionBuilderConnector/ConditionConnector.js';
18
17
  import { ConditionBuilderContext } from '../ConditionBuilderContext/ConditionBuilderProvider.js';
19
18
  import uuidv4 from '../../../global/js/utils/uuidv4.js';
20
19
  import ConditionPreview from '../ConditionPreview/ConditionPreview.js';
20
+ import { ItemOption } from '../ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.js';
21
21
 
22
22
  var _ConditionPreview, _ConditionPreview2;
23
-
24
23
  /**
25
24
  *
26
25
  * state - this is the current group that is being rendered . This can be a inner group or outer group
@@ -85,7 +84,6 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
85
84
  var addConditionSubGroupHandler = function addConditionSubGroupHandler(conditionIndex) {
86
85
  onChange(_objectSpread2(_objectSpread2({}, group), {}, {
87
86
  conditions: [].concat(_toConsumableArray(group.conditions.slice(0, conditionIndex + 1)), [{
88
- groupSeparateOperator: null,
89
87
  groupOperator: 'and',
90
88
  statement: 'if',
91
89
  conditions: [{
@@ -178,7 +176,7 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
178
176
  "data-name": "connectorField",
179
177
  popOverClassName: "".concat(blockClass, "__gap"),
180
178
  className: "".concat(blockClass, "__statement-button")
181
- }, /*#__PURE__*/React__default.createElement(ConditionBuilderItemOption, {
179
+ }, /*#__PURE__*/React__default.createElement(ItemOption, {
182
180
  conditionState: {
183
181
  value: group.statement,
184
182
  label: translateWithId('condition')
@@ -214,7 +212,7 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
214
212
  onRemoveHandler(eachCondition.id, e);
215
213
  },
216
214
  conditionBuilderRef: conditionBuilderRef
217
- })) : /*#__PURE__*/React__default.createElement(ConditionBlock, {
215
+ })) : /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement(ConditionBlock, {
218
216
  conjunction: conditionIndex > 0 ? group.groupOperator : undefined,
219
217
  aria: {
220
218
  level: aria.level + 1,
@@ -244,7 +242,7 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
244
242
  },
245
243
  hideConditionPreviewHandler: hideConditionPreviewHandler,
246
244
  isLastCondition: isLastCondition
247
- }), conditionIndex == showConditionSubGroupPreview && (_ConditionPreview || (_ConditionPreview = /*#__PURE__*/React__default.createElement(ConditionPreview, {
245
+ })), conditionIndex == showConditionSubGroupPreview && (_ConditionPreview || (_ConditionPreview = /*#__PURE__*/React__default.createElement(ConditionPreview, {
248
246
  previewType: "subGroup"
249
247
  }))), conditionIndex == showConditionPreview && (_ConditionPreview2 || (_ConditionPreview2 = /*#__PURE__*/React__default.createElement(ConditionPreview, {
250
248
  previewType: "condition"
@@ -5,7 +5,9 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
 
8
- import React__default from 'react';
8
+ import { slicedToArray as _slicedToArray, defineProperty as _defineProperty } from '../../../_virtual/_rollupPluginBabelHelpers.js';
9
+ import React__default, { useState, useEffect } from 'react';
10
+ import cx from 'classnames';
9
11
  import PropTypes from '../../../node_modules/prop-types/index.js';
10
12
  import { blockClass, translateWithId } from '../ConditionBuilderContext/DataConfigs.js';
11
13
  import { ConditionBuilderItem } from '../ConditionBuilderItem/ConditionBuilderItem.js';
@@ -13,6 +15,13 @@ import ConditionConnector from '../ConditionBuilderConnector/ConditionConnector.
13
15
 
14
16
  var ConditionPreview = function ConditionPreview(_ref) {
15
17
  var previewType = _ref.previewType;
18
+ var _useState = useState(false),
19
+ _useState2 = _slicedToArray(_useState, 2),
20
+ animate = _useState2[0],
21
+ setAnimate = _useState2[1];
22
+ useEffect(function () {
23
+ setAnimate(true);
24
+ }, []);
16
25
  var getConditionSection = function getConditionSection() {
17
26
  return /*#__PURE__*/React__default.createElement("div", null, /*#__PURE__*/React__default.createElement(ConditionBuilderItem, {
18
27
  label: translateWithId('property')
@@ -23,20 +32,20 @@ var ConditionPreview = function ConditionPreview(_ref) {
23
32
  }));
24
33
  };
25
34
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, previewType == 'newGroup' && /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
26
- className: "".concat(blockClass, "__group__row ").concat(blockClass, "__group-preview ")
35
+ className: cx(["".concat(blockClass, "__group__row ").concat(blockClass, "__group-preview "), _defineProperty({}, "".concat(blockClass, "__group-preview-animate"), animate)])
27
36
  }, /*#__PURE__*/React__default.createElement(ConditionBuilderItem, {
28
37
  className: "".concat(blockClass, "__statement-button"),
29
38
  label: translateWithId('and')
30
39
  })), /*#__PURE__*/React__default.createElement("div", {
31
40
  "aria-hidden": true,
32
- className: "".concat(blockClass, "__group ").concat(blockClass, "__condition-wrapper ").concat(blockClass, "__group-preview ").concat(blockClass, "__group-wrapper")
41
+ className: cx(["".concat(blockClass, "__group ").concat(blockClass, "__condition-wrapper ").concat(blockClass, "__group-preview ").concat(blockClass, "__group-wrapper "), _defineProperty({}, "".concat(blockClass, "__group-preview-animate"), animate)])
33
42
  }, /*#__PURE__*/React__default.createElement("div", {
34
43
  className: "".concat(blockClass, "__gap")
35
44
  }, /*#__PURE__*/React__default.createElement(ConditionBuilderItem, {
36
45
  className: "".concat(blockClass, "__statement-button"),
37
46
  label: translateWithId('if')
38
47
  })), getConditionSection())), previewType == 'subGroup' && /*#__PURE__*/React__default.createElement("div", {
39
- className: "".concat(blockClass, "__group-preview")
48
+ className: cx(["".concat(blockClass, "__group__row ").concat(blockClass, "__group-preview "), _defineProperty({}, "".concat(blockClass, "__group-preview-animate"), animate)])
40
49
  }, /*#__PURE__*/React__default.createElement("div", {
41
50
  className: "".concat(blockClass, "__condition-block ").concat(blockClass, "__gap")
42
51
  }, /*#__PURE__*/React__default.createElement(ConditionBuilderItem, {
@@ -49,7 +58,7 @@ var ConditionPreview = function ConditionPreview(_ref) {
49
58
  className: "".concat(blockClass, "__gap ").concat(blockClass, "__groupConnector"),
50
59
  operator: translateWithId('if')
51
60
  }), getConditionSection()))), previewType == 'condition' && /*#__PURE__*/React__default.createElement("div", {
52
- className: "".concat(blockClass, "__group-preview")
61
+ className: cx(["".concat(blockClass, "__group__row ").concat(blockClass, "__group-preview "), _defineProperty({}, "".concat(blockClass, "__group-preview-animate"), animate)])
53
62
  }, /*#__PURE__*/React__default.createElement("div", {
54
63
  className: "".concat(blockClass, "__condition-block ").concat(blockClass, "__gap")
55
64
  }, /*#__PURE__*/React__default.createElement(ConditionBuilderItem, {
@@ -7,8 +7,7 @@
7
7
 
8
8
  import { toConsumableArray as _toConsumableArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
9
9
  import { blockClass } from '../ConditionBuilderContext/DataConfigs.js';
10
- import { checkForHoldingKey } from './checkForHoldingKey.js';
11
- import { focusThisField, traverseReverse, traverseClockVise } from './util.js';
10
+ import { checkForHoldingKey, focusThisField, traverseReverse, traverseClockVise } from './util.js';
12
11
 
13
12
  var handleKeyDown = function handleKeyDown(evt, conditionBuilderRef) {
14
13
  var activeElement = document.activeElement;
@@ -3,3 +3,4 @@ export function focusThisItem(currentElement: any): void;
3
3
  export function traverseClockVise(eachElem: any, index: any, allElements: any, rotate: any, trapFocus: any): void;
4
4
  export function traverseReverse(eachElem: any, index: any, allElements: any, rotate: any, trapFocus: any): void;
5
5
  export function checkForHoldingKey(evt: any, key: any): any;
6
+ export function checkDuplicateAction(actionState: any, selectedId: any, currentActionId: any): boolean;
@@ -41,5 +41,20 @@ var traverseReverse = function traverseReverse(eachElem, index, allElements, rot
41
41
  focusThisItem(allElements[allElements.length - 1]);
42
42
  }
43
43
  };
44
+ var checkForHoldingKey = function checkForHoldingKey(evt, key) {
45
+ // possible key inputs: altKey,ctrlKey,metaKey,shiftKey
46
+ if (key === 'cmd') {
47
+ return evt.metaKey || evt.ctrlKey;
48
+ }
49
+ return evt[key];
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
+ };
44
59
 
45
- export { focusThisField, focusThisItem, traverseClockVise, traverseReverse };
60
+ export { checkDuplicateAction, checkForHoldingKey, focusThisField, focusThisItem, traverseClockVise, traverseReverse };
@@ -15,7 +15,6 @@ var icons = require('@carbon/react/icons');
15
15
  var ConditionBuilderItem = require('../ConditionBuilderItem/ConditionBuilderItem.js');
16
16
  var index = require('../../../node_modules/prop-types/index.js');
17
17
  var DataConfigs = require('../ConditionBuilderContext/DataConfigs.js');
18
- var ConditionBuilderItemOption = require('../ConditionBuilderItem/ConditionBuilderItemOption/ConditionBuilderItemOption.js');
19
18
  var cx = require('classnames');
20
19
  var ConditionConnector = require('../ConditionBuilderConnector/ConditionConnector.js');
21
20
  var ConditionBuilderItemNumber = require('../ConditionBuilderItem/ConditionBuilderItemNumber/ConditionBuilderItemNumber.js');
@@ -26,6 +25,8 @@ var ConditionBuilderButton = require('../ConditionBuilderButton/ConditionBuilder
26
25
  var util = require('../utils/util.js');
27
26
  var ConditionBuilderItemTime = require('../ConditionBuilderItem/ConditionBuilderItemTime/ConditionBuilderItemTime.js');
28
27
  var ConditionBuilderAdd = require('../ConditionBuilderAdd/ConditionBuilderAdd.js');
28
+ var ItemOption = require('../ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.js');
29
+ var ItemOptionForValueField = require('../ConditionBuilderItem/ConditionBuilderItemOption/ItemOptionForValueField.js');
29
30
 
30
31
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
31
32
 
@@ -33,6 +34,7 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
33
34
  var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
34
35
 
35
36
  var _div;
37
+
36
38
  /**
37
39
  * This component build each block of condition consisting of property, operator value and close button.
38
40
  */
@@ -62,14 +64,6 @@ var ConditionBlock = function ConditionBlock(props) {
62
64
  var _useContext = React.useContext(ConditionBuilderProvider.ConditionBuilderContext),
63
65
  inputConfig = _useContext.inputConfig,
64
66
  variant = _useContext.variant;
65
- //Below possible input types expected for value field.
66
- var itemComponents = {
67
- option: ConditionBuilderItemOption.ConditionBuilderItemOption,
68
- text: ConditionBuilderItemText.ConditionBuilderItemText,
69
- number: ConditionBuilderItemNumber.ConditionBuilderItemNumber,
70
- date: ConditionBuilderItemDate.ConditionBuilderItemDate,
71
- time: ConditionBuilderItemTime.ConditionBuilderItemTime
72
- };
73
67
  var _useState = React.useState(false),
74
68
  _useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
75
69
  showDeletionPreview = _useState2[0],
@@ -87,13 +81,17 @@ var ConditionBlock = function ConditionBlock(props) {
87
81
  type = _getCurrentConfig.type,
88
82
  config = _getCurrentConfig.config,
89
83
  label = _getCurrentConfig.label;
90
- var ItemComponent;
91
- // if (type == 'custom') {
92
- // ItemComponent = config.component;
93
- // } else {
94
- ItemComponent = property ? itemComponents[type] : null;
95
- //}
96
84
 
85
+ //Below possible input types expected for value field.
86
+ var itemComponents = {
87
+ text: ConditionBuilderItemText.ConditionBuilderItemText,
88
+ number: ConditionBuilderItemNumber.ConditionBuilderItemNumber,
89
+ date: ConditionBuilderItemDate.ConditionBuilderItemDate,
90
+ time: ConditionBuilderItemTime.ConditionBuilderItemTime,
91
+ option: ItemOptionForValueField.ItemOptionForValueField,
92
+ custom: config === null || config === void 0 ? void 0 : config.component
93
+ };
94
+ var ItemComponent = property ? itemComponents[type] : null;
97
95
  var onStatementChangeHandler = function onStatementChangeHandler(v, evt) {
98
96
  util.focusThisField(evt);
99
97
  onStatementChange(v);
@@ -114,9 +112,10 @@ var ConditionBlock = function ConditionBlock(props) {
114
112
  }));
115
113
  };
116
114
  var onValueChangeHandler = function onValueChangeHandler(newValue) {
117
- onChange(_rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, condition), {}, {
118
- value: newValue,
119
- popoverToOpen: ''
115
+ var currentCondition = _rollupPluginBabelHelpers.objectSpread2({}, condition);
116
+ delete currentCondition.popoverToOpen;
117
+ onChange(_rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, currentCondition), {}, {
118
+ value: newValue
120
119
  }));
121
120
  };
122
121
  var handleShowDeletionPreview = function handleShowDeletionPreview() {
@@ -126,6 +125,9 @@ var ConditionBlock = function ConditionBlock(props) {
126
125
  setShowDeletionPreview(false);
127
126
  };
128
127
  var getOperators = function getOperators() {
128
+ if (config !== null && config !== void 0 && config.operators) {
129
+ return config.operators;
130
+ }
129
131
  return DataConfigs.operatorConfig.filter(function (operator) {
130
132
  return operator.type.indexOf(type) != -1 || operator.type == 'all';
131
133
  });
@@ -156,7 +158,7 @@ var ConditionBlock = function ConditionBlock(props) {
156
158
  "data-name": "connectorField",
157
159
  popOverClassName: "".concat(DataConfigs.blockClass, "__gap"),
158
160
  className: "".concat(DataConfigs.blockClass, "__statement-button")
159
- }, /*#__PURE__*/React__default["default"].createElement(ConditionBuilderItemOption.ConditionBuilderItemOption, {
161
+ }, /*#__PURE__*/React__default["default"].createElement(ItemOption.ItemOption, {
160
162
  conditionState: {
161
163
  value: group.statement,
162
164
  label: DataConfigs.translateWithId('condition')
@@ -173,7 +175,7 @@ var ConditionBlock = function ConditionBlock(props) {
173
175
  "data-name": "propertyField",
174
176
  condition: condition,
175
177
  type: type
176
- }, /*#__PURE__*/React__default["default"].createElement(ConditionBuilderItemOption.ConditionBuilderItemOption, {
178
+ }, /*#__PURE__*/React__default["default"].createElement(ItemOption.ItemOption, {
177
179
  conditionState: {
178
180
  value: property,
179
181
  label: DataConfigs.translateWithId('property')
@@ -188,7 +190,7 @@ var ConditionBlock = function ConditionBlock(props) {
188
190
  "data-name": "operatorField",
189
191
  condition: condition,
190
192
  type: type
191
- }, /*#__PURE__*/React__default["default"].createElement(ConditionBuilderItemOption.ConditionBuilderItemOption, {
193
+ }, /*#__PURE__*/React__default["default"].createElement(ItemOption.ItemOption, {
192
194
  config: {
193
195
  options: getOperators()
194
196
  },