@carbon/ibm-products 2.43.2-canary.161 → 2.43.2-canary.162
Sign up to get free protection for your applications and to get access to all the features.
- package/css/index-full-carbon.css +5 -5
- package/css/index-full-carbon.min.css +1 -1
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon.css +5 -5
- package/css/index-without-carbon.min.css +1 -1
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +5 -5
- package/css/index.min.css +1 -1
- package/css/index.min.css.map +1 -1
- package/es/components/ConditionBuilder/ConditionBlock/ConditionBlock.js +5 -5
- package/es/components/ConditionBuilder/ConditionBuilder.js +4 -4
- package/es/components/ConditionBuilder/ConditionBuilder.types.d.ts +1 -1
- package/es/components/ConditionBuilder/ConditionBuilderConnector/ConditionConnector.js +2 -2
- package/es/components/ConditionBuilder/ConditionBuilderContent/ConditionBuilderContent.js +7 -6
- package/es/components/ConditionBuilder/ConditionBuilderContext/ConditionBuilderProvider.js +1 -1
- package/es/components/ConditionBuilder/ConditionBuilderContext/DataConfigs.d.ts +2 -0
- package/es/components/ConditionBuilder/ConditionBuilderContext/DataConfigs.js +3 -1
- package/es/components/ConditionBuilder/ConditionBuilderContext/translationObject.d.ts +1 -0
- package/es/components/ConditionBuilder/ConditionBuilderContext/translationObject.js +2 -1
- package/es/components/ConditionBuilder/ConditionGroupBuilder/ConditionGroupBuilder.js +6 -6
- package/es/components/ConditionBuilder/utils/handleKeyboardEvents.js +8 -8
- package/lib/components/ConditionBuilder/ConditionBlock/ConditionBlock.js +4 -4
- package/lib/components/ConditionBuilder/ConditionBuilder.js +3 -3
- package/lib/components/ConditionBuilder/ConditionBuilder.types.d.ts +1 -1
- package/lib/components/ConditionBuilder/ConditionBuilderConnector/ConditionConnector.js +1 -1
- package/lib/components/ConditionBuilder/ConditionBuilderContent/ConditionBuilderContent.js +6 -5
- package/lib/components/ConditionBuilder/ConditionBuilderContext/ConditionBuilderProvider.js +1 -1
- package/lib/components/ConditionBuilder/ConditionBuilderContext/DataConfigs.d.ts +2 -0
- package/lib/components/ConditionBuilder/ConditionBuilderContext/DataConfigs.js +4 -0
- package/lib/components/ConditionBuilder/ConditionBuilderContext/translationObject.d.ts +1 -0
- package/lib/components/ConditionBuilder/ConditionBuilderContext/translationObject.js +2 -1
- package/lib/components/ConditionBuilder/ConditionGroupBuilder/ConditionGroupBuilder.js +5 -5
- package/lib/components/ConditionBuilder/utils/handleKeyboardEvents.js +7 -7
- package/package.json +3 -3
- package/scss/components/ConditionBuilder/_condition-builder.scss +1 -1
- package/scss/components/ConditionBuilder/styles/_conditionBuilderItem.scss +1 -1
@@ -14,7 +14,7 @@ import { getDevtoolsProps } from '../../global/js/utils/devtools.js';
|
|
14
14
|
import ConditionBuilderContent from './ConditionBuilderContent/ConditionBuilderContent.js';
|
15
15
|
import { ConditionBuilderProvider } from './ConditionBuilderContext/ConditionBuilderProvider.js';
|
16
16
|
import { pkg } from '../../settings.js';
|
17
|
-
import { blockClass } from './ConditionBuilderContext/DataConfigs.js';
|
17
|
+
import { blockClass, NON_HIERARCHICAL_VARIANT } from './ConditionBuilderContext/DataConfigs.js';
|
18
18
|
import { handleKeyDown } from './utils/handleKeyboardEvents.js';
|
19
19
|
|
20
20
|
var _excluded = ["className", "inputConfig", "startConditionLabel", "popOverSearchThreshold", "getOptions", "initialState", "getConditionState", "getActionsState", "variant", "actions", "translateWithId"];
|
@@ -53,7 +53,7 @@ var ConditionBuilder = /*#__PURE__*/React__default.forwardRef(function (_ref, re
|
|
53
53
|
getConditionState = _ref.getConditionState,
|
54
54
|
getActionsState = _ref.getActionsState,
|
55
55
|
_ref$variant = _ref.variant,
|
56
|
-
variant = _ref$variant === void 0 ?
|
56
|
+
variant = _ref$variant === void 0 ? NON_HIERARCHICAL_VARIANT : _ref$variant,
|
57
57
|
actions = _ref.actions,
|
58
58
|
translateWithId = _ref.translateWithId,
|
59
59
|
rest = _objectWithoutProperties(_ref, _excluded);
|
@@ -211,9 +211,9 @@ ConditionBuilder.propTypes = {
|
|
211
211
|
translateWithId: PropTypes.func,
|
212
212
|
/* TODO: add types and DocGen for all props. */
|
213
213
|
/**
|
214
|
-
* Provide the condition builder variant:
|
214
|
+
* Provide the condition builder variant: Non-Hierarchical/ Hierarchical
|
215
215
|
*/
|
216
|
-
variant: PropTypes.oneOf(['
|
216
|
+
variant: PropTypes.oneOf(['Non-Hierarchical', 'Hierarchical'])
|
217
217
|
};
|
218
218
|
|
219
219
|
export { ConditionBuilder };
|
@@ -129,7 +129,7 @@ export type ConditionBuilderProps = {
|
|
129
129
|
className?: string;
|
130
130
|
popOverSearchThreshold: number;
|
131
131
|
startConditionLabel: string;
|
132
|
-
variant?: '
|
132
|
+
variant?: 'Non-Hierarchical' | 'Hierarchical';
|
133
133
|
translateWithId: (id: string) => string;
|
134
134
|
};
|
135
135
|
export interface ConditionBuilderContextInputProps extends PropsWithChildren {
|
@@ -9,7 +9,7 @@ import { objectWithoutProperties as _objectWithoutProperties, slicedToArray as _
|
|
9
9
|
import React__default, { useContext, useCallback } from 'react';
|
10
10
|
import { ConditionBuilderItem } from '../ConditionBuilderItem/ConditionBuilderItem.js';
|
11
11
|
import { ItemOption } from '../ConditionBuilderItem/ConditionBuilderItemOption/ItemOption.js';
|
12
|
-
import { blockClass, connectorConfig } from '../ConditionBuilderContext/DataConfigs.js';
|
12
|
+
import { HIERARCHICAL_VARIANT, blockClass, connectorConfig } from '../ConditionBuilderContext/DataConfigs.js';
|
13
13
|
import PropTypes from '../../../node_modules/prop-types/index.js';
|
14
14
|
import { focusThisField } from '../utils/util.js';
|
15
15
|
import { ConditionBuilderContext } from '../ConditionBuilderContext/ConditionBuilderProvider.js';
|
@@ -47,7 +47,7 @@ var ConditionConnector = function ConditionConnector(_ref) {
|
|
47
47
|
onChange === null || onChange === void 0 || onChange(op);
|
48
48
|
focusThisField(evt, conditionBuilderRef);
|
49
49
|
};
|
50
|
-
return variant ==
|
50
|
+
return variant == HIERARCHICAL_VARIANT ? /*#__PURE__*/React__default.createElement("span", {
|
51
51
|
className: "".concat(className, " ").concat(blockClass, "__connector--disabled")
|
52
52
|
}, /*#__PURE__*/React__default.createElement(ConditionBuilderButton, {
|
53
53
|
label: operator
|
@@ -12,7 +12,7 @@ import { Button, Section, Heading } from '@carbon/react';
|
|
12
12
|
import { Add, TextNewLine } from '@carbon/react/icons';
|
13
13
|
import ConditionGroupBuilder from '../ConditionGroupBuilder/ConditionGroupBuilder.js';
|
14
14
|
import { ConditionBuilderContext, emptyState } from '../ConditionBuilderContext/ConditionBuilderProvider.js';
|
15
|
-
import { blockClass } from '../ConditionBuilderContext/DataConfigs.js';
|
15
|
+
import { blockClass, HIERARCHICAL_VARIANT } from '../ConditionBuilderContext/DataConfigs.js';
|
16
16
|
import { ConditionBuilderButton } from '../ConditionBuilderButton/ConditionBuilderButton.js';
|
17
17
|
import uuidv4 from '../../../global/js/utils/uuidv4.js';
|
18
18
|
import ConditionPreview from '../ConditionPreview/ConditionPreview.js';
|
@@ -41,10 +41,11 @@ var ConditionBuilderContent = function ConditionBuilderContent(_ref) {
|
|
41
41
|
_useState4 = _slicedToArray(_useState3, 2),
|
42
42
|
showConditionGroupPreview = _useState4[0],
|
43
43
|
setShowConditionGroupPreview = _useState4[1];
|
44
|
-
var _useTranslations = useTranslations(['addConditionGroupText', 'conditionHeadingText']),
|
45
|
-
_useTranslations2 = _slicedToArray(_useTranslations,
|
44
|
+
var _useTranslations = useTranslations(['addConditionGroupText', 'conditionHeadingText', 'conditionBuilderHierarchicalText']),
|
45
|
+
_useTranslations2 = _slicedToArray(_useTranslations, 3),
|
46
46
|
addConditionGroupText = _useTranslations2[0],
|
47
|
-
conditionHeadingText = _useTranslations2[1]
|
47
|
+
conditionHeadingText = _useTranslations2[1],
|
48
|
+
conditionBuilderHierarchicalText = _useTranslations2[2];
|
48
49
|
var showConditionGroupPreviewHandler = function showConditionGroupPreviewHandler() {
|
49
50
|
setShowConditionGroupPreview(true);
|
50
51
|
};
|
@@ -135,7 +136,7 @@ var ConditionBuilderContent = function ConditionBuilderContent(_ref) {
|
|
135
136
|
}, /*#__PURE__*/React__default.createElement(Heading, null, conditionHeadingText)), /*#__PURE__*/React__default.createElement("div", {
|
136
137
|
className: "".concat(blockClass, "__content-container"),
|
137
138
|
role: "treegrid",
|
138
|
-
"aria-label":
|
139
|
+
"aria-label": conditionBuilderHierarchicalText
|
139
140
|
}, rootState && (rootState === null || rootState === void 0 || (_rootState$groups4 = rootState.groups) === null || _rootState$groups4 === void 0 ? void 0 : _rootState$groups4.map(function (eachGroup, groupIndex) {
|
140
141
|
var _ref2;
|
141
142
|
return /*#__PURE__*/React__default.createElement("div", {
|
@@ -156,7 +157,7 @@ var ConditionBuilderContent = function ConditionBuilderContent(_ref) {
|
|
156
157
|
onChangeHandler(updatedGroup, groupIndex);
|
157
158
|
}
|
158
159
|
}), rootState.groups && groupIndex < rootState.groups.length - 1 && (_GroupConnector || (_GroupConnector = /*#__PURE__*/React__default.createElement(GroupConnector, null))));
|
159
|
-
})), variant ==
|
160
|
+
})), variant == HIERARCHICAL_VARIANT && /*#__PURE__*/React__default.createElement("div", {
|
160
161
|
role: "row",
|
161
162
|
tabIndex: -1,
|
162
163
|
"aria-level": 1,
|
@@ -117,7 +117,7 @@ ConditionBuilderProvider.propTypes = {
|
|
117
117
|
*/
|
118
118
|
translateWithId: PropTypes.func,
|
119
119
|
/**
|
120
|
-
* Provide the condition builder variant:
|
120
|
+
* Provide the condition builder variant: Non-Hierarchical/ Hierarchical
|
121
121
|
*/
|
122
122
|
variant: PropTypes.string.isRequired
|
123
123
|
};
|
@@ -16,6 +16,8 @@ export const operatorConfig: {
|
|
16
16
|
id: string;
|
17
17
|
type: string;
|
18
18
|
}[];
|
19
|
+
export const NON_HIERARCHICAL_VARIANT: "Non-Hierarchical";
|
20
|
+
export const HIERARCHICAL_VARIANT: "Hierarchical";
|
19
21
|
export const blockClass: string;
|
20
22
|
export namespace valueRenderers {
|
21
23
|
function text(val: any): any;
|
@@ -72,6 +72,8 @@ var operatorConfig = [{
|
|
72
72
|
id: 'between',
|
73
73
|
type: 'date'
|
74
74
|
}];
|
75
|
+
var NON_HIERARCHICAL_VARIANT = 'Non-Hierarchical';
|
76
|
+
var HIERARCHICAL_VARIANT = 'Hierarchical';
|
75
77
|
// The block part of our conventional BEM class names (blockClass__E--M).
|
76
78
|
var blockClass = "".concat(pkg.prefix, "--condition-builder");
|
77
79
|
var formatDate = function formatDate(date) {
|
@@ -120,4 +122,4 @@ var valueRenderers = {
|
|
120
122
|
}
|
121
123
|
};
|
122
124
|
|
123
|
-
export { blockClass, connectorConfig, operatorConfig, statementConfig, valueRenderers };
|
125
|
+
export { HIERARCHICAL_VARIANT, NON_HIERARCHICAL_VARIANT, blockClass, connectorConfig, operatorConfig, statementConfig, valueRenderers };
|
@@ -48,7 +48,8 @@ var translationsObject = {
|
|
48
48
|
conditionHeadingText: 'Condition',
|
49
49
|
addPropertyText: 'Add property',
|
50
50
|
addOperatorText: 'Add operator',
|
51
|
-
addValueText: 'Add value'
|
51
|
+
addValueText: 'Add value',
|
52
|
+
conditionBuilderHierarchicalText: 'Condition Builder Hierarchical'
|
52
53
|
};
|
53
54
|
|
54
55
|
export { translationsObject };
|
@@ -10,7 +10,7 @@ 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, statementConfig } from '../ConditionBuilderContext/DataConfigs.js';
|
13
|
+
import { HIERARCHICAL_VARIANT, NON_HIERARCHICAL_VARIANT, blockClass, statementConfig } from '../ConditionBuilderContext/DataConfigs.js';
|
14
14
|
import { ConditionBuilderItem } from '../ConditionBuilderItem/ConditionBuilderItem.js';
|
15
15
|
import { focusThisField, manageTabIndexAndFocus } from '../utils/util.js';
|
16
16
|
import ConditionConnector from '../ConditionBuilderConnector/ConditionConnector.js';
|
@@ -54,7 +54,7 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
|
|
54
54
|
var conditionBuilderContentRef = useRef(null);
|
55
55
|
var onRemoveHandler = function onRemoveHandler(conditionId, evt, conditionIndex) {
|
56
56
|
if (group && group.conditions && group.conditions.length > 1) {
|
57
|
-
variant ==
|
57
|
+
variant == HIERARCHICAL_VARIANT ? handleFocusOnCloseHierarchical(evt) : handleFocusOnClose(evt, conditionIndex);
|
58
58
|
if (!checkGroupHaveCondition(group.conditions, conditionId)) {
|
59
59
|
var _group$conditions;
|
60
60
|
//when we delete the last condition of a group without deleting the subgroup, we need to restructure the group.
|
@@ -129,7 +129,7 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
|
|
129
129
|
manageTabIndexAndFocus(currentGroupCloseButtons[conditionIndex + 1], conditionBuilderRef);
|
130
130
|
}
|
131
131
|
};
|
132
|
-
var
|
132
|
+
var handleFocusOnCloseHierarchical = function handleFocusOnCloseHierarchical(evt) {
|
133
133
|
var _evt$currentTarget, _evt$currentTarget2, _conditionBuilderCont, _conditionBuilderCont2;
|
134
134
|
//getting the current aria-level and aria-posinset.
|
135
135
|
var currentLevel = (_evt$currentTarget = evt.currentTarget) === null || _evt$currentTarget === void 0 || (_evt$currentTarget = _evt$currentTarget.closest('[role="row"]')) === null || _evt$currentTarget === void 0 ? void 0 : _evt$currentTarget.getAttribute('aria-level');
|
@@ -215,7 +215,7 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
|
|
215
215
|
groupOperator: op
|
216
216
|
}));
|
217
217
|
};
|
218
|
-
var
|
218
|
+
var getNonHierarchicalVariant = function getNonHierarchicalVariant() {
|
219
219
|
var _group$conditions2;
|
220
220
|
return /*#__PURE__*/React__default.createElement("div", {
|
221
221
|
className: "".concat(className, " eachGroup")
|
@@ -252,7 +252,7 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
|
|
252
252
|
}));
|
253
253
|
})));
|
254
254
|
};
|
255
|
-
var
|
255
|
+
var getHierarchicalVariant = function getHierarchicalVariant() {
|
256
256
|
var _group$conditions4;
|
257
257
|
return /*#__PURE__*/React__default.createElement("div", {
|
258
258
|
className: "".concat(className, " ").concat(blockClass, "__condition-wrapper"),
|
@@ -346,7 +346,7 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
|
|
346
346
|
}))));
|
347
347
|
}));
|
348
348
|
};
|
349
|
-
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, variant ==
|
349
|
+
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, variant == HIERARCHICAL_VARIANT && getHierarchicalVariant(), variant == NON_HIERARCHICAL_VARIANT && getNonHierarchicalVariant());
|
350
350
|
};
|
351
351
|
ConditionGroupBuilder.propTypes = {
|
352
352
|
/**
|
@@ -6,7 +6,7 @@
|
|
6
6
|
*/
|
7
7
|
|
8
8
|
import { toConsumableArray as _toConsumableArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
9
|
-
import { blockClass } from '../ConditionBuilderContext/DataConfigs.js';
|
9
|
+
import { blockClass, HIERARCHICAL_VARIANT } from '../ConditionBuilderContext/DataConfigs.js';
|
10
10
|
import { focusThisItem, manageTabIndexAndFocus, traverseClockVise, traverseReverse, checkForHoldingKey, focusThisField } from './util.js';
|
11
11
|
|
12
12
|
var handleKeyDown = function handleKeyDown(evt, conditionBuilderRef, variant) {
|
@@ -101,12 +101,12 @@ var handleKeyPressForMainContent = function handleKeyPressForMainContent(evt, co
|
|
101
101
|
switch (evt.key) {
|
102
102
|
case 'ArrowRight':
|
103
103
|
evt.preventDefault();
|
104
|
-
if (variant ==
|
104
|
+
if (variant == HIERARCHICAL_VARIANT) {
|
105
105
|
var _evt$target$closest;
|
106
106
|
var allCellsInRow = Array.from((_evt$target$closest = evt.target.closest('[role="row"]')) === null || _evt$target$closest === void 0 ? void 0 : _evt$target$closest.querySelectorAll('[role="gridcell"] button'));
|
107
107
|
if (allCellsInRow.length === 1) {
|
108
108
|
evt.target = evt.target.closest('[role="row"]');
|
109
|
-
|
109
|
+
handleRowNavigationHierarchical(evt, conditionBuilderRef, variant);
|
110
110
|
//focus next row
|
111
111
|
} else if (evt.target.getAttribute('role') == 'row') {
|
112
112
|
//when current focus is on a row, then we need to enter inside and focus the first cell of that row
|
@@ -128,7 +128,7 @@ var handleKeyPressForMainContent = function handleKeyPressForMainContent(evt, co
|
|
128
128
|
break;
|
129
129
|
case 'ArrowLeft':
|
130
130
|
evt.preventDefault();
|
131
|
-
if (variant ==
|
131
|
+
if (variant == HIERARCHICAL_VARIANT) {
|
132
132
|
if (evt.target.getAttribute('role') !== 'row') {
|
133
133
|
var _evt$target$closest2;
|
134
134
|
//when any cell is focussed, arrow left will select the previous cell or current row
|
@@ -150,8 +150,8 @@ var handleKeyPressForMainContent = function handleKeyPressForMainContent(evt, co
|
|
150
150
|
case 'ArrowUp':
|
151
151
|
case 'ArrowDown':
|
152
152
|
evt.preventDefault();
|
153
|
-
if (variant ==
|
154
|
-
|
153
|
+
if (variant == HIERARCHICAL_VARIANT) {
|
154
|
+
handleRowNavigationHierarchical(evt, conditionBuilderRef, variant);
|
155
155
|
} else {
|
156
156
|
handleRowNavigation(evt, conditionBuilderRef, variant);
|
157
157
|
}
|
@@ -179,7 +179,7 @@ var handleRowNavigation = function handleRowNavigation(evt, conditionBuilderRef,
|
|
179
179
|
var currentRowIndex = getRowIndex(evt.target, conditionBuilderRef);
|
180
180
|
navigateToNextRowCell(evt, currentRowIndex, rows, variant, conditionBuilderRef);
|
181
181
|
};
|
182
|
-
var
|
182
|
+
var handleRowNavigationHierarchical = function handleRowNavigationHierarchical(evt, conditionBuilderRef, variant) {
|
183
183
|
var rows = getRows(conditionBuilderRef);
|
184
184
|
var currentRowIndex = getRowIndex(evt.target, conditionBuilderRef);
|
185
185
|
var nextRowIndex = currentRowIndex;
|
@@ -217,7 +217,7 @@ var navigateToNextRowCell = function navigateToNextRowCell(evt, currentRowIndex,
|
|
217
217
|
var itemName = evt.target.dataset.name;
|
218
218
|
if (nextRow !== null && nextRow !== void 0 && nextRow.querySelector("[data-name=\"".concat(itemName, "\"]"))) {
|
219
219
|
manageTabIndexAndFocus(nextRow === null || nextRow === void 0 ? void 0 : nextRow.querySelector("[data-name=\"".concat(itemName, "\"]")), conditionBuilderRef);
|
220
|
-
} else if (variant ===
|
220
|
+
} else if (variant === HIERARCHICAL_VARIANT) {
|
221
221
|
//when the next row is a if statement , then that row is focused. From any cell of last row of an group , arrow down select the next row (if)
|
222
222
|
manageTabIndexAndFocus(nextRow, conditionBuilderRef);
|
223
223
|
}
|
@@ -145,7 +145,7 @@ var ConditionBlock = function ConditionBlock(props) {
|
|
145
145
|
setShowDeletionPreview(false);
|
146
146
|
};
|
147
147
|
var manageActionButtons = function manageActionButtons(conditionIndex, conditions) {
|
148
|
-
if (variant ===
|
148
|
+
if (variant === DataConfigs.HIERARCHICAL_VARIANT) {
|
149
149
|
return true;
|
150
150
|
}
|
151
151
|
return isLastCondition(conditionIndex, conditions);
|
@@ -159,7 +159,7 @@ var ConditionBlock = function ConditionBlock(props) {
|
|
159
159
|
});
|
160
160
|
};
|
161
161
|
var getAriaAttributes = function getAriaAttributes() {
|
162
|
-
return variant ==
|
162
|
+
return variant == DataConfigs.HIERARCHICAL_VARIANT ? {
|
163
163
|
'aria-level': aria.level,
|
164
164
|
'aria-posinset': aria.posinset,
|
165
165
|
'aria-setsize': aria.setsize
|
@@ -180,7 +180,7 @@ var ConditionBlock = function ConditionBlock(props) {
|
|
180
180
|
});
|
181
181
|
};
|
182
182
|
return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
|
183
|
-
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 ==
|
183
|
+
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 == DataConfigs.HIERARCHICAL_VARIANT), _rollupPluginBabelHelpers.defineProperty({}, "".concat(DataConfigs.blockClass, "__gap ").concat(DataConfigs.blockClass, "__gap-bottom"), variant == DataConfigs.NON_HIERARCHICAL_VARIANT), _rollupPluginBabelHelpers.defineProperty({}, "".concat(DataConfigs.blockClass, "__condition--interacting"), showAllActions)),
|
184
184
|
role: "row",
|
185
185
|
"aria-label": conditionRowText
|
186
186
|
}, getAriaAttributes(), {
|
@@ -279,7 +279,7 @@ var ConditionBlock = function ConditionBlock(props) {
|
|
279
279
|
},
|
280
280
|
showConditionSubGroupPreviewHandler: showConditionSubGroupPreviewHandler,
|
281
281
|
hideConditionSubGroupPreviewHandler: hideConditionSubGroupPreviewHandler,
|
282
|
-
enableSubGroup: variant ==
|
282
|
+
enableSubGroup: variant == DataConfigs.HIERARCHICAL_VARIANT,
|
283
283
|
showConditionPreviewHandler: showConditionPreviewHandler,
|
284
284
|
hideConditionPreviewHandler: hideConditionPreviewHandler,
|
285
285
|
className: "".concat(DataConfigs.blockClass, "__gap ").concat(DataConfigs.blockClass, "__gap-left")
|
@@ -62,7 +62,7 @@ exports.ConditionBuilder = /*#__PURE__*/React__default["default"].forwardRef(fun
|
|
62
62
|
getConditionState = _ref.getConditionState,
|
63
63
|
getActionsState = _ref.getActionsState,
|
64
64
|
_ref$variant = _ref.variant,
|
65
|
-
variant = _ref$variant === void 0 ?
|
65
|
+
variant = _ref$variant === void 0 ? DataConfigs.NON_HIERARCHICAL_VARIANT : _ref$variant,
|
66
66
|
actions = _ref.actions,
|
67
67
|
translateWithId = _ref.translateWithId,
|
68
68
|
rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
|
@@ -220,7 +220,7 @@ exports.ConditionBuilder.propTypes = {
|
|
220
220
|
translateWithId: index["default"].func,
|
221
221
|
/* TODO: add types and DocGen for all props. */
|
222
222
|
/**
|
223
|
-
* Provide the condition builder variant:
|
223
|
+
* Provide the condition builder variant: Non-Hierarchical/ Hierarchical
|
224
224
|
*/
|
225
|
-
variant: index["default"].oneOf(['
|
225
|
+
variant: index["default"].oneOf(['Non-Hierarchical', 'Hierarchical'])
|
226
226
|
};
|
@@ -129,7 +129,7 @@ export type ConditionBuilderProps = {
|
|
129
129
|
className?: string;
|
130
130
|
popOverSearchThreshold: number;
|
131
131
|
startConditionLabel: string;
|
132
|
-
variant?: '
|
132
|
+
variant?: 'Non-Hierarchical' | 'Hierarchical';
|
133
133
|
translateWithId: (id: string) => string;
|
134
134
|
};
|
135
135
|
export interface ConditionBuilderContextInputProps extends PropsWithChildren {
|
@@ -55,7 +55,7 @@ var ConditionConnector = function ConditionConnector(_ref) {
|
|
55
55
|
onChange === null || onChange === void 0 || onChange(op);
|
56
56
|
util.focusThisField(evt, conditionBuilderRef);
|
57
57
|
};
|
58
|
-
return variant ==
|
58
|
+
return variant == DataConfigs.HIERARCHICAL_VARIANT ? /*#__PURE__*/React__default["default"].createElement("span", {
|
59
59
|
className: "".concat(className, " ").concat(DataConfigs.blockClass, "__connector--disabled")
|
60
60
|
}, /*#__PURE__*/React__default["default"].createElement(ConditionBuilderButton.ConditionBuilderButton, {
|
61
61
|
label: operator
|
@@ -49,10 +49,11 @@ var ConditionBuilderContent = function ConditionBuilderContent(_ref) {
|
|
49
49
|
_useState4 = _rollupPluginBabelHelpers.slicedToArray(_useState3, 2),
|
50
50
|
showConditionGroupPreview = _useState4[0],
|
51
51
|
setShowConditionGroupPreview = _useState4[1];
|
52
|
-
var _useTranslations = useTranslations.useTranslations(['addConditionGroupText', 'conditionHeadingText']),
|
53
|
-
_useTranslations2 = _rollupPluginBabelHelpers.slicedToArray(_useTranslations,
|
52
|
+
var _useTranslations = useTranslations.useTranslations(['addConditionGroupText', 'conditionHeadingText', 'conditionBuilderHierarchicalText']),
|
53
|
+
_useTranslations2 = _rollupPluginBabelHelpers.slicedToArray(_useTranslations, 3),
|
54
54
|
addConditionGroupText = _useTranslations2[0],
|
55
|
-
conditionHeadingText = _useTranslations2[1]
|
55
|
+
conditionHeadingText = _useTranslations2[1],
|
56
|
+
conditionBuilderHierarchicalText = _useTranslations2[2];
|
56
57
|
var showConditionGroupPreviewHandler = function showConditionGroupPreviewHandler() {
|
57
58
|
setShowConditionGroupPreview(true);
|
58
59
|
};
|
@@ -143,7 +144,7 @@ var ConditionBuilderContent = function ConditionBuilderContent(_ref) {
|
|
143
144
|
}, /*#__PURE__*/React__default["default"].createElement(react.Heading, null, conditionHeadingText)), /*#__PURE__*/React__default["default"].createElement("div", {
|
144
145
|
className: "".concat(DataConfigs.blockClass, "__content-container"),
|
145
146
|
role: "treegrid",
|
146
|
-
"aria-label":
|
147
|
+
"aria-label": conditionBuilderHierarchicalText
|
147
148
|
}, rootState && (rootState === null || rootState === void 0 || (_rootState$groups4 = rootState.groups) === null || _rootState$groups4 === void 0 ? void 0 : _rootState$groups4.map(function (eachGroup, groupIndex) {
|
148
149
|
var _ref2;
|
149
150
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
@@ -164,7 +165,7 @@ var ConditionBuilderContent = function ConditionBuilderContent(_ref) {
|
|
164
165
|
onChangeHandler(updatedGroup, groupIndex);
|
165
166
|
}
|
166
167
|
}), rootState.groups && groupIndex < rootState.groups.length - 1 && (_GroupConnector || (_GroupConnector = /*#__PURE__*/React__default["default"].createElement(GroupConnector["default"], null))));
|
167
|
-
})), variant ==
|
168
|
+
})), variant == DataConfigs.HIERARCHICAL_VARIANT && /*#__PURE__*/React__default["default"].createElement("div", {
|
168
169
|
role: "row",
|
169
170
|
tabIndex: -1,
|
170
171
|
"aria-level": 1,
|
@@ -125,7 +125,7 @@ ConditionBuilderProvider.propTypes = {
|
|
125
125
|
*/
|
126
126
|
translateWithId: index["default"].func,
|
127
127
|
/**
|
128
|
-
* Provide the condition builder variant:
|
128
|
+
* Provide the condition builder variant: Non-Hierarchical/ Hierarchical
|
129
129
|
*/
|
130
130
|
variant: index["default"].string.isRequired
|
131
131
|
};
|
@@ -16,6 +16,8 @@ export const operatorConfig: {
|
|
16
16
|
id: string;
|
17
17
|
type: string;
|
18
18
|
}[];
|
19
|
+
export const NON_HIERARCHICAL_VARIANT: "Non-Hierarchical";
|
20
|
+
export const HIERARCHICAL_VARIANT: "Hierarchical";
|
19
21
|
export const blockClass: string;
|
20
22
|
export namespace valueRenderers {
|
21
23
|
function text(val: any): any;
|
@@ -76,6 +76,8 @@ var operatorConfig = [{
|
|
76
76
|
id: 'between',
|
77
77
|
type: 'date'
|
78
78
|
}];
|
79
|
+
var NON_HIERARCHICAL_VARIANT = 'Non-Hierarchical';
|
80
|
+
var HIERARCHICAL_VARIANT = 'Hierarchical';
|
79
81
|
// The block part of our conventional BEM class names (blockClass__E--M).
|
80
82
|
var blockClass = "".concat(settings.pkg.prefix, "--condition-builder");
|
81
83
|
var formatDate = function formatDate(date) {
|
@@ -124,6 +126,8 @@ var valueRenderers = {
|
|
124
126
|
}
|
125
127
|
};
|
126
128
|
|
129
|
+
exports.HIERARCHICAL_VARIANT = HIERARCHICAL_VARIANT;
|
130
|
+
exports.NON_HIERARCHICAL_VARIANT = NON_HIERARCHICAL_VARIANT;
|
127
131
|
exports.blockClass = blockClass;
|
128
132
|
exports.connectorConfig = connectorConfig;
|
129
133
|
exports.operatorConfig = operatorConfig;
|
@@ -52,7 +52,8 @@ var translationsObject = {
|
|
52
52
|
conditionHeadingText: 'Condition',
|
53
53
|
addPropertyText: 'Add property',
|
54
54
|
addOperatorText: 'Add operator',
|
55
|
-
addValueText: 'Add value'
|
55
|
+
addValueText: 'Add value',
|
56
|
+
conditionBuilderHierarchicalText: 'Condition Builder Hierarchical'
|
56
57
|
};
|
57
58
|
|
58
59
|
exports.translationsObject = translationsObject;
|
@@ -63,7 +63,7 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
|
|
63
63
|
var conditionBuilderContentRef = React.useRef(null);
|
64
64
|
var onRemoveHandler = function onRemoveHandler(conditionId, evt, conditionIndex) {
|
65
65
|
if (group && group.conditions && group.conditions.length > 1) {
|
66
|
-
variant ==
|
66
|
+
variant == DataConfigs.HIERARCHICAL_VARIANT ? handleFocusOnCloseHierarchical(evt) : handleFocusOnClose(evt, conditionIndex);
|
67
67
|
if (!checkGroupHaveCondition(group.conditions, conditionId)) {
|
68
68
|
var _group$conditions;
|
69
69
|
//when we delete the last condition of a group without deleting the subgroup, we need to restructure the group.
|
@@ -138,7 +138,7 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
|
|
138
138
|
util.manageTabIndexAndFocus(currentGroupCloseButtons[conditionIndex + 1], conditionBuilderRef);
|
139
139
|
}
|
140
140
|
};
|
141
|
-
var
|
141
|
+
var handleFocusOnCloseHierarchical = function handleFocusOnCloseHierarchical(evt) {
|
142
142
|
var _evt$currentTarget, _evt$currentTarget2, _conditionBuilderCont, _conditionBuilderCont2;
|
143
143
|
//getting the current aria-level and aria-posinset.
|
144
144
|
var currentLevel = (_evt$currentTarget = evt.currentTarget) === null || _evt$currentTarget === void 0 || (_evt$currentTarget = _evt$currentTarget.closest('[role="row"]')) === null || _evt$currentTarget === void 0 ? void 0 : _evt$currentTarget.getAttribute('aria-level');
|
@@ -224,7 +224,7 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
|
|
224
224
|
groupOperator: op
|
225
225
|
}));
|
226
226
|
};
|
227
|
-
var
|
227
|
+
var getNonHierarchicalVariant = function getNonHierarchicalVariant() {
|
228
228
|
var _group$conditions2;
|
229
229
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
230
230
|
className: "".concat(className, " eachGroup")
|
@@ -261,7 +261,7 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
|
|
261
261
|
}));
|
262
262
|
})));
|
263
263
|
};
|
264
|
-
var
|
264
|
+
var getHierarchicalVariant = function getHierarchicalVariant() {
|
265
265
|
var _group$conditions4;
|
266
266
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
267
267
|
className: "".concat(className, " ").concat(DataConfigs.blockClass, "__condition-wrapper"),
|
@@ -355,7 +355,7 @@ var ConditionGroupBuilder = function ConditionGroupBuilder(_ref) {
|
|
355
355
|
}))));
|
356
356
|
}));
|
357
357
|
};
|
358
|
-
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, variant ==
|
358
|
+
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, variant == DataConfigs.HIERARCHICAL_VARIANT && getHierarchicalVariant(), variant == DataConfigs.NON_HIERARCHICAL_VARIANT && getNonHierarchicalVariant());
|
359
359
|
};
|
360
360
|
ConditionGroupBuilder.propTypes = {
|
361
361
|
/**
|
@@ -105,12 +105,12 @@ var handleKeyPressForMainContent = function handleKeyPressForMainContent(evt, co
|
|
105
105
|
switch (evt.key) {
|
106
106
|
case 'ArrowRight':
|
107
107
|
evt.preventDefault();
|
108
|
-
if (variant ==
|
108
|
+
if (variant == DataConfigs.HIERARCHICAL_VARIANT) {
|
109
109
|
var _evt$target$closest;
|
110
110
|
var allCellsInRow = Array.from((_evt$target$closest = evt.target.closest('[role="row"]')) === null || _evt$target$closest === void 0 ? void 0 : _evt$target$closest.querySelectorAll('[role="gridcell"] button'));
|
111
111
|
if (allCellsInRow.length === 1) {
|
112
112
|
evt.target = evt.target.closest('[role="row"]');
|
113
|
-
|
113
|
+
handleRowNavigationHierarchical(evt, conditionBuilderRef, variant);
|
114
114
|
//focus next row
|
115
115
|
} else if (evt.target.getAttribute('role') == 'row') {
|
116
116
|
//when current focus is on a row, then we need to enter inside and focus the first cell of that row
|
@@ -132,7 +132,7 @@ var handleKeyPressForMainContent = function handleKeyPressForMainContent(evt, co
|
|
132
132
|
break;
|
133
133
|
case 'ArrowLeft':
|
134
134
|
evt.preventDefault();
|
135
|
-
if (variant ==
|
135
|
+
if (variant == DataConfigs.HIERARCHICAL_VARIANT) {
|
136
136
|
if (evt.target.getAttribute('role') !== 'row') {
|
137
137
|
var _evt$target$closest2;
|
138
138
|
//when any cell is focussed, arrow left will select the previous cell or current row
|
@@ -154,8 +154,8 @@ var handleKeyPressForMainContent = function handleKeyPressForMainContent(evt, co
|
|
154
154
|
case 'ArrowUp':
|
155
155
|
case 'ArrowDown':
|
156
156
|
evt.preventDefault();
|
157
|
-
if (variant ==
|
158
|
-
|
157
|
+
if (variant == DataConfigs.HIERARCHICAL_VARIANT) {
|
158
|
+
handleRowNavigationHierarchical(evt, conditionBuilderRef, variant);
|
159
159
|
} else {
|
160
160
|
handleRowNavigation(evt, conditionBuilderRef, variant);
|
161
161
|
}
|
@@ -183,7 +183,7 @@ var handleRowNavigation = function handleRowNavigation(evt, conditionBuilderRef,
|
|
183
183
|
var currentRowIndex = getRowIndex(evt.target, conditionBuilderRef);
|
184
184
|
navigateToNextRowCell(evt, currentRowIndex, rows, variant, conditionBuilderRef);
|
185
185
|
};
|
186
|
-
var
|
186
|
+
var handleRowNavigationHierarchical = function handleRowNavigationHierarchical(evt, conditionBuilderRef, variant) {
|
187
187
|
var rows = getRows(conditionBuilderRef);
|
188
188
|
var currentRowIndex = getRowIndex(evt.target, conditionBuilderRef);
|
189
189
|
var nextRowIndex = currentRowIndex;
|
@@ -221,7 +221,7 @@ var navigateToNextRowCell = function navigateToNextRowCell(evt, currentRowIndex,
|
|
221
221
|
var itemName = evt.target.dataset.name;
|
222
222
|
if (nextRow !== null && nextRow !== void 0 && nextRow.querySelector("[data-name=\"".concat(itemName, "\"]"))) {
|
223
223
|
util.manageTabIndexAndFocus(nextRow === null || nextRow === void 0 ? void 0 : nextRow.querySelector("[data-name=\"".concat(itemName, "\"]")), conditionBuilderRef);
|
224
|
-
} else if (variant ===
|
224
|
+
} else if (variant === DataConfigs.HIERARCHICAL_VARIANT) {
|
225
225
|
//when the next row is a if statement , then that row is focused. From any cell of last row of an group , arrow down select the next row (if)
|
226
226
|
util.manageTabIndexAndFocus(nextRow, conditionBuilderRef);
|
227
227
|
}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@carbon/ibm-products",
|
3
3
|
"description": "Carbon for IBM Products",
|
4
|
-
"version": "2.43.2-canary.
|
4
|
+
"version": "2.43.2-canary.162+791e2b315",
|
5
5
|
"license": "Apache-2.0",
|
6
6
|
"main": "lib/index.js",
|
7
7
|
"module": "es/index.js",
|
@@ -96,7 +96,7 @@
|
|
96
96
|
"dependencies": {
|
97
97
|
"@babel/runtime": "^7.23.9",
|
98
98
|
"@carbon/feature-flags": "^0.20.0",
|
99
|
-
"@carbon/ibm-products-styles": "^2.
|
99
|
+
"@carbon/ibm-products-styles": "^2.39.1-canary.172+791e2b315",
|
100
100
|
"@carbon/telemetry": "^0.1.0",
|
101
101
|
"@dnd-kit/core": "^6.0.8",
|
102
102
|
"@dnd-kit/modifiers": "^7.0.0",
|
@@ -120,5 +120,5 @@
|
|
120
120
|
"react": "^16.8.6 || ^17.0.1 || ^18.2.0",
|
121
121
|
"react-dom": "^16.8.6 || ^17.0.1 || ^18.2.0"
|
122
122
|
},
|
123
|
-
"gitHead": "
|
123
|
+
"gitHead": "791e2b31549f3f4480cac2fc142e550b5e12ea31"
|
124
124
|
}
|
@@ -61,7 +61,7 @@ $block-class: #{c4p-settings.$pkg-prefix}--condition-builder;
|
|
61
61
|
margin-top: $spacing-03;
|
62
62
|
margin-bottom: $spacing-03;
|
63
63
|
}
|
64
|
-
.#{$block-class}
|
64
|
+
.#{$block-class}__Hierarchical
|
65
65
|
.#{$block-class}__actions-container
|
66
66
|
.#{$block-class}__condition-wrapper {
|
67
67
|
flex-direction: column;
|