@redhat-cloud-services/frontend-components 3.4.13 → 3.4.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ConditionalFilter/GroupFilter.js +58 -39
- package/ConditionalFilter/group-filter.css +19 -0
- package/ConditionalFilter/group-filter.scss +23 -0
- package/ConditionalFilter/groupFilterConstants.js +99 -12
- package/ConditionalFilter/groupType.js +1 -0
- package/esm/ConditionalFilter/GroupFilter.js +57 -40
- package/esm/ConditionalFilter/groupFilterConstants.js +89 -10
- package/esm/ConditionalFilter/groupType.js +1 -0
- package/package.json +1 -1
|
@@ -43,10 +43,14 @@ var _Popper = require("@patternfly/react-core/dist/js/helpers/Popper/Popper.js")
|
|
|
43
43
|
|
|
44
44
|
var _Radio = require("@patternfly/react-core/dist/js/components/Radio/Radio.js");
|
|
45
45
|
|
|
46
|
+
var _TreeView = require("@patternfly/react-core/dist/js/components/TreeView/TreeView.js");
|
|
47
|
+
|
|
46
48
|
var _groupFilterConstants = require("./groupFilterConstants");
|
|
47
49
|
|
|
48
50
|
var _groupType = _interopRequireDefault(require("./groupType"));
|
|
49
51
|
|
|
52
|
+
require("./group-filter.css");
|
|
53
|
+
|
|
50
54
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
51
55
|
|
|
52
56
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -126,50 +130,65 @@ var Group = function Group(_ref) {
|
|
|
126
130
|
setIsOpen(!isOpen);
|
|
127
131
|
};
|
|
128
132
|
|
|
133
|
+
var menuItems = (0, _groupFilterConstants.getMenuItems)(items === null || items === void 0 ? void 0 : items.map(function (item) {
|
|
134
|
+
return item.type === _groupType["default"].treeView ? (0, _groupFilterConstants.convertTreeItem)(item) : item;
|
|
135
|
+
}), onChange, (0, _groupFilterConstants.calculateSelected)(selected));
|
|
129
136
|
var groupMenuItems = (0, _groupFilterConstants.getGroupMenuItems)(groups, onChange, (0, _groupFilterConstants.calculateSelected)(selected));
|
|
130
|
-
|
|
137
|
+
|
|
138
|
+
var renderItem = function renderItem(item, key, type, groupKey) {
|
|
139
|
+
return /*#__PURE__*/_react["default"].createElement(_MenuItem.MenuItem, {
|
|
140
|
+
itemId: key,
|
|
141
|
+
key: "".concat(item.value, "-").concat(key, "-item"),
|
|
142
|
+
className: item === null || item === void 0 ? void 0 : item.className,
|
|
143
|
+
onClick: item.onClick && (type || item.type) === _groupType["default"].checkbox ? function (e) {
|
|
144
|
+
item.onClick();
|
|
145
|
+
e.preventDefault();
|
|
146
|
+
} : undefined
|
|
147
|
+
}, (type || item.type) === _groupType["default"].treeView ? /*#__PURE__*/_react["default"].createElement(_TreeView.TreeView, {
|
|
148
|
+
data: [(0, _groupFilterConstants.mapTree)(item, groupKey, stateSelected, selected)],
|
|
149
|
+
onCheck: function onCheck(e, value) {
|
|
150
|
+
return (0, _groupFilterConstants.onTreeCheck)(e, value, [item]);
|
|
151
|
+
},
|
|
152
|
+
hasChecks: true
|
|
153
|
+
}) : (type || item.type) === _groupType["default"].checkbox ? /*#__PURE__*/_react["default"].createElement(_Checkbox.Checkbox, (0, _extends2["default"])({}, item, {
|
|
154
|
+
label: item === null || item === void 0 ? void 0 : item.label,
|
|
155
|
+
isChecked: (item === null || item === void 0 ? void 0 : item.isChecked) || (0, _groupFilterConstants.isChecked)(groupKey, (item === null || item === void 0 ? void 0 : item.value) || key, item === null || item === void 0 ? void 0 : item.id, item === null || item === void 0 ? void 0 : item.tagValue, stateSelected, selected) || false,
|
|
156
|
+
onChange: function onChange(value, event) {
|
|
157
|
+
var _item$onChange;
|
|
158
|
+
|
|
159
|
+
item === null || item === void 0 ? void 0 : (_item$onChange = item.onChange) === null || _item$onChange === void 0 ? void 0 : _item$onChange.call(item, value, event);
|
|
160
|
+
},
|
|
161
|
+
onClick: item.onClick ? function (e) {
|
|
162
|
+
item.onClick();
|
|
163
|
+
e.stopPropagation();
|
|
164
|
+
} : undefined,
|
|
165
|
+
name: (item === null || item === void 0 ? void 0 : item.name) || (item === null || item === void 0 ? void 0 : item.value) || "".concat(groupKey, "-").concat(key),
|
|
166
|
+
id: (item === null || item === void 0 ? void 0 : item.id) || (item === null || item === void 0 ? void 0 : item.value) || "".concat(groupKey, "-").concat(key)
|
|
167
|
+
})) : (type || item.type) === _groupType["default"].radio ? /*#__PURE__*/_react["default"].createElement(_Radio.Radio, (0, _extends2["default"])({}, item, {
|
|
168
|
+
isChecked: (item === null || item === void 0 ? void 0 : item.isChecked) || (0, _groupFilterConstants.isChecked)((groups === null || groups === void 0 ? void 0 : groups.value) || groupKey, (item === null || item === void 0 ? void 0 : item.value) || key, item === null || item === void 0 ? void 0 : item.id, item === null || item === void 0 ? void 0 : item.tagValue, stateSelected, selected) || false,
|
|
169
|
+
onChange: function onChange(value, event) {
|
|
170
|
+
var _item$onChange2;
|
|
171
|
+
|
|
172
|
+
item === null || item === void 0 ? void 0 : (_item$onChange2 = item.onChange) === null || _item$onChange2 === void 0 ? void 0 : _item$onChange2.call(item, value, event);
|
|
173
|
+
},
|
|
174
|
+
value: (item === null || item === void 0 ? void 0 : item.value) || key,
|
|
175
|
+
name: (item === null || item === void 0 ? void 0 : item.name) || (item === null || item === void 0 ? void 0 : item.value) || "".concat(groupKey, "-").concat(key),
|
|
176
|
+
label: (item === null || item === void 0 ? void 0 : item.label) || '',
|
|
177
|
+
id: (item === null || item === void 0 ? void 0 : item.id) || (item === null || item === void 0 ? void 0 : item.value) || "".concat(groupKey, "-").concat(key)
|
|
178
|
+
})) : (type || item.type) === _groupType["default"].button ? /*#__PURE__*/_react["default"].createElement(_Button.Button, (0, _extends2["default"])({}, item, {
|
|
179
|
+
className: "pf-c-select__option-button ".concat((item === null || item === void 0 ? void 0 : item.className) || ''),
|
|
180
|
+
variant: item === null || item === void 0 ? void 0 : item.variant,
|
|
181
|
+
onClick: item.onClick
|
|
182
|
+
}), item === null || item === void 0 ? void 0 : item.label) : (item === null || item === void 0 ? void 0 : item.label) || '');
|
|
183
|
+
};
|
|
131
184
|
|
|
132
185
|
var renderItems = function renderItems(items, type) {
|
|
133
186
|
var groupKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
134
187
|
return items.map(function (item, key) {
|
|
135
|
-
return /*#__PURE__*/_react["default"].createElement(
|
|
136
|
-
itemId: key,
|
|
188
|
+
return (type || item.type) === _groupType["default"].treeView ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
137
189
|
key: "".concat(item.value, "-").concat(key, "-item"),
|
|
138
|
-
className:
|
|
139
|
-
|
|
140
|
-
item.onClick();
|
|
141
|
-
e.preventDefault();
|
|
142
|
-
} : undefined
|
|
143
|
-
}, (type || item.type) === _groupType["default"].checkbox ? /*#__PURE__*/_react["default"].createElement(_Checkbox.Checkbox, (0, _extends2["default"])({}, item, {
|
|
144
|
-
label: item === null || item === void 0 ? void 0 : item.label,
|
|
145
|
-
isChecked: (item === null || item === void 0 ? void 0 : item.isChecked) || (0, _groupFilterConstants.isChecked)(groupKey, (item === null || item === void 0 ? void 0 : item.value) || key, item === null || item === void 0 ? void 0 : item.id, item === null || item === void 0 ? void 0 : item.tagValue, stateSelected, selected) || false,
|
|
146
|
-
onChange: function onChange(value, event) {
|
|
147
|
-
var _item$onChange;
|
|
148
|
-
|
|
149
|
-
item === null || item === void 0 ? void 0 : (_item$onChange = item.onChange) === null || _item$onChange === void 0 ? void 0 : _item$onChange.call(item, value, event);
|
|
150
|
-
},
|
|
151
|
-
onClick: item.onClick ? function (e) {
|
|
152
|
-
item.onClick();
|
|
153
|
-
e.stopPropagation();
|
|
154
|
-
} : undefined,
|
|
155
|
-
name: (item === null || item === void 0 ? void 0 : item.name) || (item === null || item === void 0 ? void 0 : item.value) || "".concat(groupKey, "-").concat(key),
|
|
156
|
-
id: (item === null || item === void 0 ? void 0 : item.id) || (item === null || item === void 0 ? void 0 : item.value) || "".concat(groupKey, "-").concat(key)
|
|
157
|
-
})) : (type || item.type) === _groupType["default"].radio ? /*#__PURE__*/_react["default"].createElement(_Radio.Radio, (0, _extends2["default"])({}, item, {
|
|
158
|
-
isChecked: (item === null || item === void 0 ? void 0 : item.isChecked) || (0, _groupFilterConstants.isChecked)((groups === null || groups === void 0 ? void 0 : groups.value) || groupKey, (item === null || item === void 0 ? void 0 : item.value) || key, item === null || item === void 0 ? void 0 : item.id, item === null || item === void 0 ? void 0 : item.tagValue, stateSelected, selected) || false,
|
|
159
|
-
onChange: function onChange(value, event) {
|
|
160
|
-
var _item$onChange2;
|
|
161
|
-
|
|
162
|
-
item === null || item === void 0 ? void 0 : (_item$onChange2 = item.onChange) === null || _item$onChange2 === void 0 ? void 0 : _item$onChange2.call(item, value, event);
|
|
163
|
-
},
|
|
164
|
-
value: (item === null || item === void 0 ? void 0 : item.value) || key,
|
|
165
|
-
name: (item === null || item === void 0 ? void 0 : item.name) || (item === null || item === void 0 ? void 0 : item.value) || "".concat(groupKey, "-").concat(key),
|
|
166
|
-
label: (item === null || item === void 0 ? void 0 : item.label) || '',
|
|
167
|
-
id: (item === null || item === void 0 ? void 0 : item.id) || (item === null || item === void 0 ? void 0 : item.value) || "".concat(groupKey, "-").concat(key)
|
|
168
|
-
})) : (type || item.type) === _groupType["default"].button ? /*#__PURE__*/_react["default"].createElement(_Button.Button, (0, _extends2["default"])({}, item, {
|
|
169
|
-
className: "pf-c-select__option-button ".concat((item === null || item === void 0 ? void 0 : item.className) || ''),
|
|
170
|
-
variant: item === null || item === void 0 ? void 0 : item.variant,
|
|
171
|
-
onClick: item.onClick
|
|
172
|
-
}), item === null || item === void 0 ? void 0 : item.label) : (item === null || item === void 0 ? void 0 : item.label) || '');
|
|
190
|
+
className: "ins-c-tree-view"
|
|
191
|
+
}, renderItem(item, key, type, groupKey)) : renderItem(item, key, type, groupKey);
|
|
173
192
|
});
|
|
174
193
|
};
|
|
175
194
|
|
|
@@ -198,7 +217,7 @@ var Group = function Group(_ref) {
|
|
|
198
217
|
className: (0, _classnames["default"])('ins-c-menu__scrollable', className, {
|
|
199
218
|
'pf-m-expanded': isOpen
|
|
200
219
|
})
|
|
201
|
-
}, /*#__PURE__*/_react["default"].createElement(_MenuContent.MenuContent, null, /*#__PURE__*/_react["default"].createElement(_MenuList.MenuList, null, menuItems.length > 0 && /*#__PURE__*/_react["default"].createElement(_MenuGroup.MenuGroup, null, renderItems(
|
|
220
|
+
}, /*#__PURE__*/_react["default"].createElement(_MenuContent.MenuContent, null, /*#__PURE__*/_react["default"].createElement(_MenuList.MenuList, null, menuItems.length > 0 && /*#__PURE__*/_react["default"].createElement(_MenuGroup.MenuGroup, null, renderItems(menuItems)), groupMenuItems.map(function (group, groupKey) {
|
|
202
221
|
return /*#__PURE__*/_react["default"].createElement(_MenuGroup.MenuGroup, {
|
|
203
222
|
label: group.label,
|
|
204
223
|
key: "".concat(group.label, "-").concat(groupKey, "-group")
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--ins-color--orange: #ec7a08;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.ins-c-tree-view .pf-c-tree-view {
|
|
6
|
+
padding: 0;
|
|
7
|
+
}
|
|
8
|
+
.ins-c-tree-view .pf-c-menu__list-item {
|
|
9
|
+
background: none;
|
|
10
|
+
}
|
|
11
|
+
.ins-c-tree-view .pf-c-menu__list-item .pf-c-menu__item {
|
|
12
|
+
padding: 0;
|
|
13
|
+
}
|
|
14
|
+
.ins-c-tree-view .pf-c-menu__list-item .pf-c-menu__item .pf-c-tree-view__content {
|
|
15
|
+
background: none;
|
|
16
|
+
}
|
|
17
|
+
.ins-c-tree-view .pf-c-menu__list-item .pf-c-menu__item .pf-c-tree-view__node {
|
|
18
|
+
background: none;
|
|
19
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
@import '~@redhat-cloud-services/frontend-components-utilities/styles/_all.scss';
|
|
2
|
+
|
|
3
|
+
.ins-c-tree-view {
|
|
4
|
+
.pf-c-tree-view {
|
|
5
|
+
padding: 0;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.pf-c-menu__list-item {
|
|
9
|
+
background: none;
|
|
10
|
+
|
|
11
|
+
.pf-c-menu__item {
|
|
12
|
+
padding: 0;
|
|
13
|
+
|
|
14
|
+
.pf-c-tree-view__content {
|
|
15
|
+
background: none;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.pf-c-tree-view__node {
|
|
19
|
+
background: none;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.calculateSelected = exports.getGroupMenuItems = exports.getMenuItems = exports.isChecked = void 0;
|
|
8
|
+
exports.onTreeCheck = exports.mapTree = exports.calculateSelected = exports.getGroupMenuItems = exports.convertTreeItem = exports.getMenuItems = exports.isChecked = void 0;
|
|
9
9
|
|
|
10
10
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
11
11
|
|
|
@@ -56,10 +56,10 @@ var getMenuItems = function getMenuItems(items, onChange, calculateSelected, gro
|
|
|
56
56
|
return _objectSpread(_objectSpread({}, item), {}, {
|
|
57
57
|
key: item.id || item.value || index,
|
|
58
58
|
value: String(item.value || item.id || index),
|
|
59
|
-
onClick: function onClick(event) {
|
|
59
|
+
onClick: function onClick(event, treeViewItem, checked) {
|
|
60
60
|
var _item$onClick;
|
|
61
61
|
|
|
62
|
-
var params = [event, calculateSelected(groupType || item.type, groupValue, item.value), _objectSpread({
|
|
62
|
+
var params = [event, calculateSelected(groupType || item.type, groupValue, (groupType || item.type) === _groupType["default"].treeView ? treeViewItem : item.value, checked), _objectSpread({
|
|
63
63
|
value: groupValue,
|
|
64
64
|
label: groupLabel || item.label,
|
|
65
65
|
id: groupId || item.id,
|
|
@@ -79,6 +79,20 @@ var getMenuItems = function getMenuItems(items, onChange, calculateSelected, gro
|
|
|
79
79
|
|
|
80
80
|
exports.getMenuItems = getMenuItems;
|
|
81
81
|
|
|
82
|
+
var convertTreeItem = function convertTreeItem(item) {
|
|
83
|
+
item.id = item.id || item.value;
|
|
84
|
+
item.name = item.label || item.name;
|
|
85
|
+
item.value = item.id;
|
|
86
|
+
item.label = item.name;
|
|
87
|
+
return item.children ? _objectSpread(_objectSpread({}, item), {}, {
|
|
88
|
+
children: item.children.map(function (child) {
|
|
89
|
+
return convertTreeItem(child);
|
|
90
|
+
})
|
|
91
|
+
}) : item;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
exports.convertTreeItem = convertTreeItem;
|
|
95
|
+
|
|
82
96
|
var getGroupMenuItems = function getGroupMenuItems(groups, onChange, calculateSelected) {
|
|
83
97
|
var result = groups.map(function (_ref2) {
|
|
84
98
|
var value = _ref2.value,
|
|
@@ -87,11 +101,14 @@ var getGroupMenuItems = function getGroupMenuItems(groups, onChange, calculateSe
|
|
|
87
101
|
type = _ref2.type,
|
|
88
102
|
items = _ref2.items,
|
|
89
103
|
group = (0, _objectWithoutProperties2["default"])(_ref2, ["value", "label", "id", "type", "items"]);
|
|
104
|
+
var converted = type === _groupType["default"].treeView ? items.map(function (item) {
|
|
105
|
+
return convertTreeItem(item);
|
|
106
|
+
}) : items;
|
|
90
107
|
return {
|
|
91
108
|
label: label,
|
|
92
109
|
value: value,
|
|
93
110
|
type: type,
|
|
94
|
-
items: getMenuItems(
|
|
111
|
+
items: getMenuItems(converted, onChange, calculateSelected, type, value, label, id, group)
|
|
95
112
|
};
|
|
96
113
|
});
|
|
97
114
|
return result.filter(function (_ref3) {
|
|
@@ -105,19 +122,89 @@ var getGroupMenuItems = function getGroupMenuItems(groups, onChange, calculateSe
|
|
|
105
122
|
exports.getGroupMenuItems = getGroupMenuItems;
|
|
106
123
|
|
|
107
124
|
var calculateSelected = function calculateSelected(selectedTags) {
|
|
108
|
-
return function (type, groupKey,
|
|
125
|
+
return function (type, groupKey, value, checked) {
|
|
109
126
|
var activeGroup = selectedTags === null || selectedTags === void 0 ? void 0 : selectedTags[groupKey];
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
return _objectSpread(_objectSpread({}, selectedTags), {}, (0, _defineProperty2["default"])({}, groupKey, _objectSpread(_objectSpread({}, activeGroup || {}), {}, (0, _defineProperty2["default"])({}, itemKey, false))));
|
|
127
|
+
var children = type === _groupType["default"].treeView && [value].reduce(function iter(r, a) {
|
|
128
|
+
if (Array.isArray(a.children)) {
|
|
129
|
+
return a.children.reduce(iter, r);
|
|
114
130
|
}
|
|
115
131
|
|
|
116
|
-
|
|
132
|
+
r.push(a);
|
|
133
|
+
return r;
|
|
134
|
+
}, []);
|
|
135
|
+
var itemKeys = type === _groupType["default"].treeView ? children.map(function (item) {
|
|
136
|
+
return item.id;
|
|
137
|
+
}) : [value];
|
|
138
|
+
|
|
139
|
+
if (activeGroup) {
|
|
140
|
+
var result = selectedTags;
|
|
141
|
+
itemKeys.map(function (itemKey) {
|
|
142
|
+
var activeGroup = result[groupKey];
|
|
143
|
+
|
|
144
|
+
if (type !== _groupType["default"].radio && (activeGroup[itemKey] instanceof Object ? activeGroup[itemKey].isSelected : Boolean(activeGroup[itemKey]))) {
|
|
145
|
+
result = _objectSpread(_objectSpread({}, result), {}, (0, _defineProperty2["default"])({}, groupKey, _objectSpread(_objectSpread({}, activeGroup || {}), {}, (0, _defineProperty2["default"])({}, itemKey, type === _groupType["default"].treeView && checked))));
|
|
146
|
+
} else {
|
|
147
|
+
result = _objectSpread(_objectSpread({}, result), {}, (0, _defineProperty2["default"])({}, groupKey, _objectSpread(_objectSpread({}, type !== _groupType["default"].radio ? activeGroup || {} : {}), {}, (0, _defineProperty2["default"])({}, itemKey, true))));
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
return result;
|
|
117
151
|
}
|
|
118
152
|
|
|
119
|
-
return
|
|
153
|
+
return itemKeys.reduce(function (acc, curr) {
|
|
154
|
+
return _objectSpread(_objectSpread({}, acc), {}, (0, _defineProperty2["default"])({}, groupKey, _objectSpread(_objectSpread({}, acc === null || acc === void 0 ? void 0 : acc[groupKey]), {}, (0, _defineProperty2["default"])({}, curr, true))));
|
|
155
|
+
}, selectedTags);
|
|
156
|
+
};
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
exports.calculateSelected = calculateSelected;
|
|
160
|
+
|
|
161
|
+
var areAllChildrenChecked = function areAllChildrenChecked(dataItem, groupKey, stateSelected, selected) {
|
|
162
|
+
return dataItem.children ? dataItem.children.every(function (child) {
|
|
163
|
+
return areAllChildrenChecked(child, groupKey, stateSelected, selected);
|
|
164
|
+
}) : isChecked(groupKey, dataItem.id, undefined, undefined, stateSelected, selected);
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
var areSomeChildrenChecked = function areSomeChildrenChecked(dataItem, groupKey, stateSelected, selected) {
|
|
168
|
+
return dataItem.children ? dataItem.children.some(function (child) {
|
|
169
|
+
return areSomeChildrenChecked(child, groupKey, stateSelected, selected);
|
|
170
|
+
}) : isChecked(groupKey, dataItem.id, undefined, undefined, stateSelected, selected);
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
var mapTree = function mapTree(item, groupKey, stateSelected, selected) {
|
|
174
|
+
var hasCheck = areAllChildrenChecked(item, groupKey, stateSelected, selected);
|
|
175
|
+
item.checkProps = {
|
|
176
|
+
checked: false
|
|
120
177
|
};
|
|
178
|
+
|
|
179
|
+
if (hasCheck) {
|
|
180
|
+
item.checkProps.checked = true;
|
|
181
|
+
} else {
|
|
182
|
+
var hasPartialCheck = areSomeChildrenChecked(item, groupKey, stateSelected, selected);
|
|
183
|
+
|
|
184
|
+
if (hasPartialCheck) {
|
|
185
|
+
item.checkProps = {
|
|
186
|
+
checked: null
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if (item.children) {
|
|
192
|
+
return _objectSpread(_objectSpread({}, item), {}, {
|
|
193
|
+
children: item.children.map(function (child) {
|
|
194
|
+
return mapTree(child, groupKey, stateSelected, selected);
|
|
195
|
+
})
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
return item;
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
exports.mapTree = mapTree;
|
|
203
|
+
|
|
204
|
+
var onTreeCheck = function onTreeCheck(e, treeViewItem, tree) {
|
|
205
|
+
var _e$target;
|
|
206
|
+
|
|
207
|
+
return tree[0].onClick(e, treeViewItem, e === null || e === void 0 ? void 0 : (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.checked);
|
|
121
208
|
};
|
|
122
209
|
|
|
123
|
-
exports.
|
|
210
|
+
exports.onTreeCheck = onTreeCheck;
|
|
@@ -15,8 +15,10 @@ import { Menu } from "@patternfly/react-core/dist/esm/components/Menu/Menu.js";
|
|
|
15
15
|
import { MenuContent } from "@patternfly/react-core/dist/esm/components/Menu/MenuContent.js";
|
|
16
16
|
import { Popper } from "@patternfly/react-core/dist/esm/helpers/Popper/Popper.js";
|
|
17
17
|
import { Radio } from "@patternfly/react-core/dist/esm/components/Radio/Radio.js";
|
|
18
|
-
import {
|
|
18
|
+
import { TreeView } from "@patternfly/react-core/dist/esm/components/TreeView/TreeView.js";
|
|
19
|
+
import { isChecked, calculateSelected, getGroupMenuItems, getMenuItems, convertTreeItem, mapTree, onTreeCheck } from './groupFilterConstants';
|
|
19
20
|
import groupType from './groupType';
|
|
21
|
+
import "../../ConditionalFilter/./group-filter.css";
|
|
20
22
|
|
|
21
23
|
var Group = function Group(_ref) {
|
|
22
24
|
var placeholder = _ref.placeholder,
|
|
@@ -93,50 +95,65 @@ var Group = function Group(_ref) {
|
|
|
93
95
|
setIsOpen(!isOpen);
|
|
94
96
|
};
|
|
95
97
|
|
|
98
|
+
var menuItems = getMenuItems(items === null || items === void 0 ? void 0 : items.map(function (item) {
|
|
99
|
+
return item.type === groupType.treeView ? convertTreeItem(item) : item;
|
|
100
|
+
}), onChange, calculateSelected(selected));
|
|
96
101
|
var groupMenuItems = getGroupMenuItems(groups, onChange, calculateSelected(selected));
|
|
97
|
-
|
|
102
|
+
|
|
103
|
+
var renderItem = function renderItem(item, key, type, groupKey) {
|
|
104
|
+
return /*#__PURE__*/React.createElement(MenuItem, {
|
|
105
|
+
itemId: key,
|
|
106
|
+
key: "".concat(item.value, "-").concat(key, "-item"),
|
|
107
|
+
className: item === null || item === void 0 ? void 0 : item.className,
|
|
108
|
+
onClick: item.onClick && (type || item.type) === groupType.checkbox ? function (e) {
|
|
109
|
+
item.onClick();
|
|
110
|
+
e.preventDefault();
|
|
111
|
+
} : undefined
|
|
112
|
+
}, (type || item.type) === groupType.treeView ? /*#__PURE__*/React.createElement(TreeView, {
|
|
113
|
+
data: [mapTree(item, groupKey, stateSelected, selected)],
|
|
114
|
+
onCheck: function onCheck(e, value) {
|
|
115
|
+
return onTreeCheck(e, value, [item]);
|
|
116
|
+
},
|
|
117
|
+
hasChecks: true
|
|
118
|
+
}) : (type || item.type) === groupType.checkbox ? /*#__PURE__*/React.createElement(Checkbox, _extends({}, item, {
|
|
119
|
+
label: item === null || item === void 0 ? void 0 : item.label,
|
|
120
|
+
isChecked: (item === null || item === void 0 ? void 0 : item.isChecked) || isChecked(groupKey, (item === null || item === void 0 ? void 0 : item.value) || key, item === null || item === void 0 ? void 0 : item.id, item === null || item === void 0 ? void 0 : item.tagValue, stateSelected, selected) || false,
|
|
121
|
+
onChange: function onChange(value, event) {
|
|
122
|
+
var _item$onChange;
|
|
123
|
+
|
|
124
|
+
item === null || item === void 0 ? void 0 : (_item$onChange = item.onChange) === null || _item$onChange === void 0 ? void 0 : _item$onChange.call(item, value, event);
|
|
125
|
+
},
|
|
126
|
+
onClick: item.onClick ? function (e) {
|
|
127
|
+
item.onClick();
|
|
128
|
+
e.stopPropagation();
|
|
129
|
+
} : undefined,
|
|
130
|
+
name: (item === null || item === void 0 ? void 0 : item.name) || (item === null || item === void 0 ? void 0 : item.value) || "".concat(groupKey, "-").concat(key),
|
|
131
|
+
id: (item === null || item === void 0 ? void 0 : item.id) || (item === null || item === void 0 ? void 0 : item.value) || "".concat(groupKey, "-").concat(key)
|
|
132
|
+
})) : (type || item.type) === groupType.radio ? /*#__PURE__*/React.createElement(Radio, _extends({}, item, {
|
|
133
|
+
isChecked: (item === null || item === void 0 ? void 0 : item.isChecked) || isChecked((groups === null || groups === void 0 ? void 0 : groups.value) || groupKey, (item === null || item === void 0 ? void 0 : item.value) || key, item === null || item === void 0 ? void 0 : item.id, item === null || item === void 0 ? void 0 : item.tagValue, stateSelected, selected) || false,
|
|
134
|
+
onChange: function onChange(value, event) {
|
|
135
|
+
var _item$onChange2;
|
|
136
|
+
|
|
137
|
+
item === null || item === void 0 ? void 0 : (_item$onChange2 = item.onChange) === null || _item$onChange2 === void 0 ? void 0 : _item$onChange2.call(item, value, event);
|
|
138
|
+
},
|
|
139
|
+
value: (item === null || item === void 0 ? void 0 : item.value) || key,
|
|
140
|
+
name: (item === null || item === void 0 ? void 0 : item.name) || (item === null || item === void 0 ? void 0 : item.value) || "".concat(groupKey, "-").concat(key),
|
|
141
|
+
label: (item === null || item === void 0 ? void 0 : item.label) || '',
|
|
142
|
+
id: (item === null || item === void 0 ? void 0 : item.id) || (item === null || item === void 0 ? void 0 : item.value) || "".concat(groupKey, "-").concat(key)
|
|
143
|
+
})) : (type || item.type) === groupType.button ? /*#__PURE__*/React.createElement(Button, _extends({}, item, {
|
|
144
|
+
className: "pf-c-select__option-button ".concat((item === null || item === void 0 ? void 0 : item.className) || ''),
|
|
145
|
+
variant: item === null || item === void 0 ? void 0 : item.variant,
|
|
146
|
+
onClick: item.onClick
|
|
147
|
+
}), item === null || item === void 0 ? void 0 : item.label) : (item === null || item === void 0 ? void 0 : item.label) || '');
|
|
148
|
+
};
|
|
98
149
|
|
|
99
150
|
var renderItems = function renderItems(items, type) {
|
|
100
151
|
var groupKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
101
152
|
return items.map(function (item, key) {
|
|
102
|
-
return /*#__PURE__*/React.createElement(
|
|
103
|
-
itemId: key,
|
|
153
|
+
return (type || item.type) === groupType.treeView ? /*#__PURE__*/React.createElement("div", {
|
|
104
154
|
key: "".concat(item.value, "-").concat(key, "-item"),
|
|
105
|
-
className:
|
|
106
|
-
|
|
107
|
-
item.onClick();
|
|
108
|
-
e.preventDefault();
|
|
109
|
-
} : undefined
|
|
110
|
-
}, (type || item.type) === groupType.checkbox ? /*#__PURE__*/React.createElement(Checkbox, _extends({}, item, {
|
|
111
|
-
label: item === null || item === void 0 ? void 0 : item.label,
|
|
112
|
-
isChecked: (item === null || item === void 0 ? void 0 : item.isChecked) || isChecked(groupKey, (item === null || item === void 0 ? void 0 : item.value) || key, item === null || item === void 0 ? void 0 : item.id, item === null || item === void 0 ? void 0 : item.tagValue, stateSelected, selected) || false,
|
|
113
|
-
onChange: function onChange(value, event) {
|
|
114
|
-
var _item$onChange;
|
|
115
|
-
|
|
116
|
-
item === null || item === void 0 ? void 0 : (_item$onChange = item.onChange) === null || _item$onChange === void 0 ? void 0 : _item$onChange.call(item, value, event);
|
|
117
|
-
},
|
|
118
|
-
onClick: item.onClick ? function (e) {
|
|
119
|
-
item.onClick();
|
|
120
|
-
e.stopPropagation();
|
|
121
|
-
} : undefined,
|
|
122
|
-
name: (item === null || item === void 0 ? void 0 : item.name) || (item === null || item === void 0 ? void 0 : item.value) || "".concat(groupKey, "-").concat(key),
|
|
123
|
-
id: (item === null || item === void 0 ? void 0 : item.id) || (item === null || item === void 0 ? void 0 : item.value) || "".concat(groupKey, "-").concat(key)
|
|
124
|
-
})) : (type || item.type) === groupType.radio ? /*#__PURE__*/React.createElement(Radio, _extends({}, item, {
|
|
125
|
-
isChecked: (item === null || item === void 0 ? void 0 : item.isChecked) || isChecked((groups === null || groups === void 0 ? void 0 : groups.value) || groupKey, (item === null || item === void 0 ? void 0 : item.value) || key, item === null || item === void 0 ? void 0 : item.id, item === null || item === void 0 ? void 0 : item.tagValue, stateSelected, selected) || false,
|
|
126
|
-
onChange: function onChange(value, event) {
|
|
127
|
-
var _item$onChange2;
|
|
128
|
-
|
|
129
|
-
item === null || item === void 0 ? void 0 : (_item$onChange2 = item.onChange) === null || _item$onChange2 === void 0 ? void 0 : _item$onChange2.call(item, value, event);
|
|
130
|
-
},
|
|
131
|
-
value: (item === null || item === void 0 ? void 0 : item.value) || key,
|
|
132
|
-
name: (item === null || item === void 0 ? void 0 : item.name) || (item === null || item === void 0 ? void 0 : item.value) || "".concat(groupKey, "-").concat(key),
|
|
133
|
-
label: (item === null || item === void 0 ? void 0 : item.label) || '',
|
|
134
|
-
id: (item === null || item === void 0 ? void 0 : item.id) || (item === null || item === void 0 ? void 0 : item.value) || "".concat(groupKey, "-").concat(key)
|
|
135
|
-
})) : (type || item.type) === groupType.button ? /*#__PURE__*/React.createElement(Button, _extends({}, item, {
|
|
136
|
-
className: "pf-c-select__option-button ".concat((item === null || item === void 0 ? void 0 : item.className) || ''),
|
|
137
|
-
variant: item === null || item === void 0 ? void 0 : item.variant,
|
|
138
|
-
onClick: item.onClick
|
|
139
|
-
}), item === null || item === void 0 ? void 0 : item.label) : (item === null || item === void 0 ? void 0 : item.label) || '');
|
|
155
|
+
className: "ins-c-tree-view"
|
|
156
|
+
}, renderItem(item, key, type, groupKey)) : renderItem(item, key, type, groupKey);
|
|
140
157
|
});
|
|
141
158
|
};
|
|
142
159
|
|
|
@@ -165,7 +182,7 @@ var Group = function Group(_ref) {
|
|
|
165
182
|
className: classNames('ins-c-menu__scrollable', className, {
|
|
166
183
|
'pf-m-expanded': isOpen
|
|
167
184
|
})
|
|
168
|
-
}, /*#__PURE__*/React.createElement(MenuContent, null, /*#__PURE__*/React.createElement(MenuList, null, menuItems.length > 0 && /*#__PURE__*/React.createElement(MenuGroup, null, renderItems(
|
|
185
|
+
}, /*#__PURE__*/React.createElement(MenuContent, null, /*#__PURE__*/React.createElement(MenuList, null, menuItems.length > 0 && /*#__PURE__*/React.createElement(MenuGroup, null, renderItems(menuItems)), groupMenuItems.map(function (group, groupKey) {
|
|
169
186
|
return /*#__PURE__*/React.createElement(MenuGroup, {
|
|
170
187
|
label: group.label,
|
|
171
188
|
key: "".concat(group.label, "-").concat(groupKey, "-group")
|
|
@@ -5,7 +5,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
5
5
|
|
|
6
6
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
7
7
|
|
|
8
|
-
import
|
|
8
|
+
import groupTypes from './groupType';
|
|
9
9
|
export var isChecked = function isChecked(groupValue, itemValue, id, tagValue, stateSelected, propSelected) {
|
|
10
10
|
var selected = _objectSpread(_objectSpread({}, propSelected), stateSelected);
|
|
11
11
|
|
|
@@ -42,10 +42,10 @@ export var getMenuItems = function getMenuItems(items, onChange, calculateSelect
|
|
|
42
42
|
return _objectSpread(_objectSpread({}, item), {}, {
|
|
43
43
|
key: item.id || item.value || index,
|
|
44
44
|
value: String(item.value || item.id || index),
|
|
45
|
-
onClick: function onClick(event) {
|
|
45
|
+
onClick: function onClick(event, treeViewItem, checked) {
|
|
46
46
|
var _item$onClick;
|
|
47
47
|
|
|
48
|
-
var params = [event, calculateSelected(groupType || item.type, groupValue, item.value), _objectSpread({
|
|
48
|
+
var params = [event, calculateSelected(groupType || item.type, groupValue, (groupType || item.type) === groupTypes.treeView ? treeViewItem : item.value, checked), _objectSpread({
|
|
49
49
|
value: groupValue,
|
|
50
50
|
label: groupLabel || item.label,
|
|
51
51
|
id: groupId || item.id,
|
|
@@ -62,6 +62,17 @@ export var getMenuItems = function getMenuItems(items, onChange, calculateSelect
|
|
|
62
62
|
return !noFilter;
|
|
63
63
|
});
|
|
64
64
|
};
|
|
65
|
+
export var convertTreeItem = function convertTreeItem(item) {
|
|
66
|
+
item.id = item.id || item.value;
|
|
67
|
+
item.name = item.label || item.name;
|
|
68
|
+
item.value = item.id;
|
|
69
|
+
item.label = item.name;
|
|
70
|
+
return item.children ? _objectSpread(_objectSpread({}, item), {}, {
|
|
71
|
+
children: item.children.map(function (child) {
|
|
72
|
+
return convertTreeItem(child);
|
|
73
|
+
})
|
|
74
|
+
}) : item;
|
|
75
|
+
};
|
|
65
76
|
export var getGroupMenuItems = function getGroupMenuItems(groups, onChange, calculateSelected) {
|
|
66
77
|
var result = groups.map(function (_ref2) {
|
|
67
78
|
var value = _ref2.value,
|
|
@@ -71,11 +82,14 @@ export var getGroupMenuItems = function getGroupMenuItems(groups, onChange, calc
|
|
|
71
82
|
items = _ref2.items,
|
|
72
83
|
group = _objectWithoutProperties(_ref2, ["value", "label", "id", "type", "items"]);
|
|
73
84
|
|
|
85
|
+
var converted = type === groupTypes.treeView ? items.map(function (item) {
|
|
86
|
+
return convertTreeItem(item);
|
|
87
|
+
}) : items;
|
|
74
88
|
return {
|
|
75
89
|
label: label,
|
|
76
90
|
value: value,
|
|
77
91
|
type: type,
|
|
78
|
-
items: getMenuItems(
|
|
92
|
+
items: getMenuItems(converted, onChange, calculateSelected, type, value, label, id, group)
|
|
79
93
|
};
|
|
80
94
|
});
|
|
81
95
|
return result.filter(function (_ref3) {
|
|
@@ -86,17 +100,82 @@ export var getGroupMenuItems = function getGroupMenuItems(groups, onChange, calc
|
|
|
86
100
|
});
|
|
87
101
|
};
|
|
88
102
|
export var calculateSelected = function calculateSelected(selectedTags) {
|
|
89
|
-
return function (type, groupKey,
|
|
103
|
+
return function (type, groupKey, value, checked) {
|
|
90
104
|
var activeGroup = selectedTags === null || selectedTags === void 0 ? void 0 : selectedTags[groupKey];
|
|
105
|
+
var children = type === groupTypes.treeView && [value].reduce(function iter(r, a) {
|
|
106
|
+
if (Array.isArray(a.children)) {
|
|
107
|
+
return a.children.reduce(iter, r);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
r.push(a);
|
|
111
|
+
return r;
|
|
112
|
+
}, []);
|
|
113
|
+
var itemKeys = type === groupTypes.treeView ? children.map(function (item) {
|
|
114
|
+
return item.id;
|
|
115
|
+
}) : [value];
|
|
91
116
|
|
|
92
117
|
if (activeGroup) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
118
|
+
var result = selectedTags;
|
|
119
|
+
itemKeys.map(function (itemKey) {
|
|
120
|
+
var activeGroup = result[groupKey];
|
|
96
121
|
|
|
97
|
-
|
|
122
|
+
if (type !== groupTypes.radio && (activeGroup[itemKey] instanceof Object ? activeGroup[itemKey].isSelected : Boolean(activeGroup[itemKey]))) {
|
|
123
|
+
result = _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, groupKey, _objectSpread(_objectSpread({}, activeGroup || {}), {}, _defineProperty({}, itemKey, type === groupTypes.treeView && checked))));
|
|
124
|
+
} else {
|
|
125
|
+
result = _objectSpread(_objectSpread({}, result), {}, _defineProperty({}, groupKey, _objectSpread(_objectSpread({}, type !== groupTypes.radio ? activeGroup || {} : {}), {}, _defineProperty({}, itemKey, true))));
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
return result;
|
|
98
129
|
}
|
|
99
130
|
|
|
100
|
-
return
|
|
131
|
+
return itemKeys.reduce(function (acc, curr) {
|
|
132
|
+
return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, groupKey, _objectSpread(_objectSpread({}, acc === null || acc === void 0 ? void 0 : acc[groupKey]), {}, _defineProperty({}, curr, true))));
|
|
133
|
+
}, selectedTags);
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
var areAllChildrenChecked = function areAllChildrenChecked(dataItem, groupKey, stateSelected, selected) {
|
|
138
|
+
return dataItem.children ? dataItem.children.every(function (child) {
|
|
139
|
+
return areAllChildrenChecked(child, groupKey, stateSelected, selected);
|
|
140
|
+
}) : isChecked(groupKey, dataItem.id, undefined, undefined, stateSelected, selected);
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
var areSomeChildrenChecked = function areSomeChildrenChecked(dataItem, groupKey, stateSelected, selected) {
|
|
144
|
+
return dataItem.children ? dataItem.children.some(function (child) {
|
|
145
|
+
return areSomeChildrenChecked(child, groupKey, stateSelected, selected);
|
|
146
|
+
}) : isChecked(groupKey, dataItem.id, undefined, undefined, stateSelected, selected);
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
export var mapTree = function mapTree(item, groupKey, stateSelected, selected) {
|
|
150
|
+
var hasCheck = areAllChildrenChecked(item, groupKey, stateSelected, selected);
|
|
151
|
+
item.checkProps = {
|
|
152
|
+
checked: false
|
|
101
153
|
};
|
|
154
|
+
|
|
155
|
+
if (hasCheck) {
|
|
156
|
+
item.checkProps.checked = true;
|
|
157
|
+
} else {
|
|
158
|
+
var hasPartialCheck = areSomeChildrenChecked(item, groupKey, stateSelected, selected);
|
|
159
|
+
|
|
160
|
+
if (hasPartialCheck) {
|
|
161
|
+
item.checkProps = {
|
|
162
|
+
checked: null
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if (item.children) {
|
|
168
|
+
return _objectSpread(_objectSpread({}, item), {}, {
|
|
169
|
+
children: item.children.map(function (child) {
|
|
170
|
+
return mapTree(child, groupKey, stateSelected, selected);
|
|
171
|
+
})
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
return item;
|
|
176
|
+
};
|
|
177
|
+
export var onTreeCheck = function onTreeCheck(e, treeViewItem, tree) {
|
|
178
|
+
var _e$target;
|
|
179
|
+
|
|
180
|
+
return tree[0].onClick(e, treeViewItem, e === null || e === void 0 ? void 0 : (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.checked);
|
|
102
181
|
};
|