@reltio/components 1.4.1974 → 1.4.1976
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/cjs/MetadataTypesSelector/MetadataTypesSelector.js +2 -1
- package/cjs/MetadataTypesSelector/MetadataTypesSelector.test.js +108 -0
- package/cjs/MetadataTypesSelector/components/SelectMetadataTypesList/SelectMetadataTypesList.js +2 -1
- package/cjs/MetadataTypesSelector/helpers.d.ts +3 -0
- package/cjs/MetadataTypesSelector/helpers.js +8 -0
- package/esm/MetadataTypesSelector/MetadataTypesSelector.js +3 -2
- package/esm/MetadataTypesSelector/MetadataTypesSelector.test.js +108 -0
- package/esm/MetadataTypesSelector/components/SelectMetadataTypesList/SelectMetadataTypesList.js +2 -1
- package/esm/MetadataTypesSelector/helpers.d.ts +3 -0
- package/esm/MetadataTypesSelector/helpers.js +3 -0
- package/package.json +2 -2
|
@@ -49,6 +49,7 @@ var SmallIconButton_1 = require("../SmallIconButton");
|
|
|
49
49
|
var SelectionPopup_1 = require("../SelectionPopup");
|
|
50
50
|
var useKeyboardNavigation_1 = require("../hooks/useKeyboardNavigation");
|
|
51
51
|
var SelectMetadataTypesList_1 = require("./components/SelectMetadataTypesList");
|
|
52
|
+
var helpers_1 = require("./helpers");
|
|
52
53
|
var styles_1 = require("./styles");
|
|
53
54
|
var MIN_CONTAINER_WIDTH = 255;
|
|
54
55
|
var LIST_HEIGHT = 245;
|
|
@@ -70,7 +71,7 @@ exports.MetadataTypesSelector = (0, react_1.memo)(function (_a) {
|
|
|
70
71
|
})
|
|
71
72
|
.map(function (item, index) { return ({ item: { item: __assign(__assign({}, item), { filterText: filterText }) }, index: index }); });
|
|
72
73
|
var selectedLabels = (0, react_1.useMemo)(function () {
|
|
73
|
-
return (0, ramda_1.pipe)((0, ramda_1.map)(function (uri) { return items.find((0, ramda_1.propEq)('uri', uri)); }), (0, ramda_1.reject)(ramda_1.isNil),
|
|
74
|
+
return (0, ramda_1.pipe)((0, ramda_1.map)(function (uri) { return items.find((0, ramda_1.propEq)('uri', uri)); }), (0, ramda_1.reject)(ramda_1.isNil), helpers_1.getItemLabels)(selectedItemsUris);
|
|
74
75
|
}, [selectedItemsUris, items]);
|
|
75
76
|
var handleListItemClick = (0, react_1.useCallback)(function (item, checked) {
|
|
76
77
|
if (single) {
|
|
@@ -10,12 +10,59 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
};
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
+
function step(op) {
|
|
27
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
+
switch (op[0]) {
|
|
32
|
+
case 0: case 1: t = op; break;
|
|
33
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
+
default:
|
|
37
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
+
if (t[2]) _.ops.pop();
|
|
42
|
+
_.trys.pop(); continue;
|
|
43
|
+
}
|
|
44
|
+
op = body.call(thisArg, _);
|
|
45
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
50
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
51
|
+
if (ar || !(i in from)) {
|
|
52
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
53
|
+
ar[i] = from[i];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
57
|
+
};
|
|
13
58
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
59
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
60
|
};
|
|
16
61
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
62
|
var react_1 = __importDefault(require("react"));
|
|
18
63
|
var enzyme_1 = require("enzyme");
|
|
64
|
+
var react_2 = require("@testing-library/react");
|
|
65
|
+
var user_event_1 = __importDefault(require("@testing-library/user-event"));
|
|
19
66
|
var test_utils_1 = require("react-dom/test-utils");
|
|
20
67
|
var TextField_1 = __importDefault(require("@mui/material/TextField"));
|
|
21
68
|
var AttributeListItem_1 = require("../AttributeListItem");
|
|
@@ -42,6 +89,19 @@ var setUp = function (method, _a) {
|
|
|
42
89
|
var _b = _a === void 0 ? {} : _a, _c = _b.selectedItemsUris, selectedItemsUris = _c === void 0 ? [] : _c, _d = _b.onChange, onChange = _d === void 0 ? jest.fn() : _d, single = _b.single, placeholder = _b.placeholder, enableEmptyValueUnderline = _b.enableEmptyValueUnderline;
|
|
43
90
|
return method(react_1.default.createElement(MetadataTypesSelector_1.MetadataTypesSelector, { items: items, selectedItemsUris: selectedItemsUris, onChange: onChange, single: single, placeholder: placeholder, enableEmptyValueUnderline: enableEmptyValueUnderline, label: "Entity Type", dataReltioId: "entity-type-selector", selectionPopupTitle: 'Select entity types' }));
|
|
44
91
|
};
|
|
92
|
+
var defaultProps = {
|
|
93
|
+
items: items,
|
|
94
|
+
selectedItemsUris: [],
|
|
95
|
+
onChange: jest.fn(),
|
|
96
|
+
label: 'Entity Type',
|
|
97
|
+
dataReltioId: 'entity-type-selector',
|
|
98
|
+
selectionPopupTitle: 'Select entity types'
|
|
99
|
+
};
|
|
100
|
+
var setUpRTL = function (props) {
|
|
101
|
+
if (props === void 0) { props = {}; }
|
|
102
|
+
var user = user_event_1.default.setup();
|
|
103
|
+
return __assign({ user: user }, (0, react_2.render)(react_1.default.createElement(MetadataTypesSelector_1.MetadataTypesSelector, __assign({}, defaultProps, props))));
|
|
104
|
+
};
|
|
45
105
|
describe('MetadataTypesSelector tests', function () {
|
|
46
106
|
it('should render correctly', function () {
|
|
47
107
|
var selectedItemsUris = ['configuration/entityTypes/HCP'];
|
|
@@ -170,4 +230,52 @@ describe('MetadataTypesSelector tests', function () {
|
|
|
170
230
|
wrapper.find(SelectMetadataTypesList_1.SelectMetadataTypesList).prop('onItemClick')(items[0], false);
|
|
171
231
|
expect(onChange).toHaveBeenCalledWith([]);
|
|
172
232
|
});
|
|
233
|
+
describe('MetadataTypesSelector behavior with RTL', function () {
|
|
234
|
+
var originalRange = document.createRange;
|
|
235
|
+
beforeEach(function () {
|
|
236
|
+
document.createRange = function () {
|
|
237
|
+
var range = new Range();
|
|
238
|
+
range.getBoundingClientRect = jest.fn(function () {
|
|
239
|
+
return { width: 0 };
|
|
240
|
+
});
|
|
241
|
+
return range;
|
|
242
|
+
};
|
|
243
|
+
});
|
|
244
|
+
afterEach(function () {
|
|
245
|
+
document.createRange = originalRange;
|
|
246
|
+
});
|
|
247
|
+
it('should not throw an error on clicking list item if entity does not have a label', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
248
|
+
var itemWithoutLabel, selectedItemsUris, user, button, popover, blankListItem, checkbox;
|
|
249
|
+
return __generator(this, function (_a) {
|
|
250
|
+
switch (_a.label) {
|
|
251
|
+
case 0:
|
|
252
|
+
itemWithoutLabel = {
|
|
253
|
+
uri: 'configuration/entityTypes/CompanyUri',
|
|
254
|
+
attributes: []
|
|
255
|
+
};
|
|
256
|
+
selectedItemsUris = [itemWithoutLabel.uri];
|
|
257
|
+
user = setUpRTL({ selectedItemsUris: selectedItemsUris, items: __spreadArray(__spreadArray([], items, true), [itemWithoutLabel], false) }).user;
|
|
258
|
+
expect(react_2.screen.getAllByText('CompanyUri')[0]).toBeInTheDocument();
|
|
259
|
+
button = react_2.screen.getByRole('button');
|
|
260
|
+
return [4 /*yield*/, user.click(button)];
|
|
261
|
+
case 1:
|
|
262
|
+
_a.sent();
|
|
263
|
+
popover = react_2.screen.getByRole('presentation');
|
|
264
|
+
expect(popover).toBeInTheDocument();
|
|
265
|
+
expect((0, react_2.within)(popover).getByText('Select entity types')).toBeInTheDocument();
|
|
266
|
+
blankListItem = react_2.screen.getAllByRole('menuitem')[2];
|
|
267
|
+
expect(blankListItem).toHaveTextContent('CompanyUri');
|
|
268
|
+
checkbox = (0, react_2.within)(blankListItem).getByRole('checkbox');
|
|
269
|
+
return [4 /*yield*/, user.click(checkbox)];
|
|
270
|
+
case 2:
|
|
271
|
+
_a.sent();
|
|
272
|
+
return [4 /*yield*/, user.keyboard('[Escape]')];
|
|
273
|
+
case 3:
|
|
274
|
+
_a.sent();
|
|
275
|
+
expect(popover).not.toBeInTheDocument();
|
|
276
|
+
return [2 /*return*/];
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
}); });
|
|
280
|
+
});
|
|
173
281
|
});
|
package/cjs/MetadataTypesSelector/components/SelectMetadataTypesList/SelectMetadataTypesList.js
CHANGED
|
@@ -51,6 +51,7 @@ var ramda_1 = require("ramda");
|
|
|
51
51
|
var AttributeListItem_1 = require("../../../AttributeListItem");
|
|
52
52
|
var Highlighter_1 = require("../../../Highlighter");
|
|
53
53
|
var VirtualGroupedList_1 = require("../../../VirtualGroupedList");
|
|
54
|
+
var helpers_1 = require("../../helpers");
|
|
54
55
|
var ITEM_HEIGHT = 32;
|
|
55
56
|
var getItemSize = (0, ramda_1.always)(ITEM_HEIGHT);
|
|
56
57
|
exports.SelectMetadataTypesList = (0, react_1.memo)(function (_a) {
|
|
@@ -59,7 +60,7 @@ exports.SelectMetadataTypesList = (0, react_1.memo)(function (_a) {
|
|
|
59
60
|
var item = _a.item;
|
|
60
61
|
var isSelected = !!selectedItems.find(function (uri) { return item.uri === uri; });
|
|
61
62
|
var isFocused = index === focusIndex;
|
|
62
|
-
return (react_1.default.createElement(AttributeListItem_1.AttributeListItem, { key: item.uri, onClick: onItemClick, checked: isSelected, data: item, label: react_1.default.createElement(Highlighter_1.Highlighter, { text: item
|
|
63
|
+
return (react_1.default.createElement(AttributeListItem_1.AttributeListItem, { key: item.uri, onClick: onItemClick, checked: isSelected, data: item, label: react_1.default.createElement(Highlighter_1.Highlighter, { text: (0, helpers_1.getItemLabel)(item), highlight: item.filterText }), labelInText: item.label, style: style, isFocused: isFocused, hideIcon: true, LogoIcon: item.LogoIcon }));
|
|
63
64
|
};
|
|
64
65
|
return (react_1.default.createElement(VirtualGroupedList_1.VirtualGroupedList, __assign({ getItemSize: getItemSize, renderItem: renderItem, focusIndex: focusIndex, fixedTitle: false, disableHorizontalScrollbar: true, width: width, height: height }, otherProps)));
|
|
65
66
|
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getItemLabel = exports.getItemLabels = void 0;
|
|
4
|
+
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
5
|
+
var getItemLabels = function (items) { return items.map(exports.getItemLabel); };
|
|
6
|
+
exports.getItemLabels = getItemLabels;
|
|
7
|
+
var getItemLabel = function (item) { return item.label || (0, mdm_sdk_1.getLastUriPart)(item.uri); };
|
|
8
|
+
exports.getItemLabel = getItemLabel;
|
|
@@ -11,7 +11,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
11
11
|
};
|
|
12
12
|
import React, { useRef, useState, useCallback, useMemo, memo } from 'react';
|
|
13
13
|
import classnames from 'classnames';
|
|
14
|
-
import { isNil, map, pipe,
|
|
14
|
+
import { isNil, map, pipe, propEq, reject } from 'ramda';
|
|
15
15
|
import { utils } from '@reltio/mdm-sdk';
|
|
16
16
|
import TextField from '@mui/material/TextField';
|
|
17
17
|
import ArrowDropDown from '@mui/icons-material/ArrowDropDown';
|
|
@@ -20,6 +20,7 @@ import { SmallIconButton } from '../SmallIconButton';
|
|
|
20
20
|
import { SelectionPopup } from '../SelectionPopup';
|
|
21
21
|
import { useKeyboardNavigation } from '../hooks/useKeyboardNavigation';
|
|
22
22
|
import { SelectMetadataTypesList } from './components/SelectMetadataTypesList';
|
|
23
|
+
import { getItemLabels } from './helpers';
|
|
23
24
|
import { useStyles } from './styles';
|
|
24
25
|
var MIN_CONTAINER_WIDTH = 255;
|
|
25
26
|
var LIST_HEIGHT = 245;
|
|
@@ -41,7 +42,7 @@ export var MetadataTypesSelector = memo(function (_a) {
|
|
|
41
42
|
})
|
|
42
43
|
.map(function (item, index) { return ({ item: { item: __assign(__assign({}, item), { filterText: filterText }) }, index: index }); });
|
|
43
44
|
var selectedLabels = useMemo(function () {
|
|
44
|
-
return pipe(map(function (uri) { return items.find(propEq('uri', uri)); }), reject(isNil),
|
|
45
|
+
return pipe(map(function (uri) { return items.find(propEq('uri', uri)); }), reject(isNil), getItemLabels)(selectedItemsUris);
|
|
45
46
|
}, [selectedItemsUris, items]);
|
|
46
47
|
var handleListItemClick = useCallback(function (item, checked) {
|
|
47
48
|
if (single) {
|
|
@@ -9,8 +9,55 @@ var __assign = (this && this.__assign) || function () {
|
|
|
9
9
|
};
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
22
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
23
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
24
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
25
|
+
function step(op) {
|
|
26
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
27
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
28
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
29
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
30
|
+
switch (op[0]) {
|
|
31
|
+
case 0: case 1: t = op; break;
|
|
32
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
33
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
34
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
35
|
+
default:
|
|
36
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
37
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
38
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
39
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
40
|
+
if (t[2]) _.ops.pop();
|
|
41
|
+
_.trys.pop(); continue;
|
|
42
|
+
}
|
|
43
|
+
op = body.call(thisArg, _);
|
|
44
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
45
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
49
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
50
|
+
if (ar || !(i in from)) {
|
|
51
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
52
|
+
ar[i] = from[i];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
56
|
+
};
|
|
12
57
|
import React from 'react';
|
|
13
58
|
import { shallow, mount } from 'enzyme';
|
|
59
|
+
import { screen, render, within } from '@testing-library/react';
|
|
60
|
+
import userEvent from '@testing-library/user-event';
|
|
14
61
|
import { act } from 'react-dom/test-utils';
|
|
15
62
|
import TextField from '@mui/material/TextField';
|
|
16
63
|
import { AttributeListItem } from '../AttributeListItem';
|
|
@@ -37,6 +84,19 @@ var setUp = function (method, _a) {
|
|
|
37
84
|
var _b = _a === void 0 ? {} : _a, _c = _b.selectedItemsUris, selectedItemsUris = _c === void 0 ? [] : _c, _d = _b.onChange, onChange = _d === void 0 ? jest.fn() : _d, single = _b.single, placeholder = _b.placeholder, enableEmptyValueUnderline = _b.enableEmptyValueUnderline;
|
|
38
85
|
return method(React.createElement(MetadataTypesSelector, { items: items, selectedItemsUris: selectedItemsUris, onChange: onChange, single: single, placeholder: placeholder, enableEmptyValueUnderline: enableEmptyValueUnderline, label: "Entity Type", dataReltioId: "entity-type-selector", selectionPopupTitle: 'Select entity types' }));
|
|
39
86
|
};
|
|
87
|
+
var defaultProps = {
|
|
88
|
+
items: items,
|
|
89
|
+
selectedItemsUris: [],
|
|
90
|
+
onChange: jest.fn(),
|
|
91
|
+
label: 'Entity Type',
|
|
92
|
+
dataReltioId: 'entity-type-selector',
|
|
93
|
+
selectionPopupTitle: 'Select entity types'
|
|
94
|
+
};
|
|
95
|
+
var setUpRTL = function (props) {
|
|
96
|
+
if (props === void 0) { props = {}; }
|
|
97
|
+
var user = userEvent.setup();
|
|
98
|
+
return __assign({ user: user }, render(React.createElement(MetadataTypesSelector, __assign({}, defaultProps, props))));
|
|
99
|
+
};
|
|
40
100
|
describe('MetadataTypesSelector tests', function () {
|
|
41
101
|
it('should render correctly', function () {
|
|
42
102
|
var selectedItemsUris = ['configuration/entityTypes/HCP'];
|
|
@@ -165,4 +225,52 @@ describe('MetadataTypesSelector tests', function () {
|
|
|
165
225
|
wrapper.find(SelectMetadataTypesList).prop('onItemClick')(items[0], false);
|
|
166
226
|
expect(onChange).toHaveBeenCalledWith([]);
|
|
167
227
|
});
|
|
228
|
+
describe('MetadataTypesSelector behavior with RTL', function () {
|
|
229
|
+
var originalRange = document.createRange;
|
|
230
|
+
beforeEach(function () {
|
|
231
|
+
document.createRange = function () {
|
|
232
|
+
var range = new Range();
|
|
233
|
+
range.getBoundingClientRect = jest.fn(function () {
|
|
234
|
+
return { width: 0 };
|
|
235
|
+
});
|
|
236
|
+
return range;
|
|
237
|
+
};
|
|
238
|
+
});
|
|
239
|
+
afterEach(function () {
|
|
240
|
+
document.createRange = originalRange;
|
|
241
|
+
});
|
|
242
|
+
it('should not throw an error on clicking list item if entity does not have a label', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
243
|
+
var itemWithoutLabel, selectedItemsUris, user, button, popover, blankListItem, checkbox;
|
|
244
|
+
return __generator(this, function (_a) {
|
|
245
|
+
switch (_a.label) {
|
|
246
|
+
case 0:
|
|
247
|
+
itemWithoutLabel = {
|
|
248
|
+
uri: 'configuration/entityTypes/CompanyUri',
|
|
249
|
+
attributes: []
|
|
250
|
+
};
|
|
251
|
+
selectedItemsUris = [itemWithoutLabel.uri];
|
|
252
|
+
user = setUpRTL({ selectedItemsUris: selectedItemsUris, items: __spreadArray(__spreadArray([], items, true), [itemWithoutLabel], false) }).user;
|
|
253
|
+
expect(screen.getAllByText('CompanyUri')[0]).toBeInTheDocument();
|
|
254
|
+
button = screen.getByRole('button');
|
|
255
|
+
return [4 /*yield*/, user.click(button)];
|
|
256
|
+
case 1:
|
|
257
|
+
_a.sent();
|
|
258
|
+
popover = screen.getByRole('presentation');
|
|
259
|
+
expect(popover).toBeInTheDocument();
|
|
260
|
+
expect(within(popover).getByText('Select entity types')).toBeInTheDocument();
|
|
261
|
+
blankListItem = screen.getAllByRole('menuitem')[2];
|
|
262
|
+
expect(blankListItem).toHaveTextContent('CompanyUri');
|
|
263
|
+
checkbox = within(blankListItem).getByRole('checkbox');
|
|
264
|
+
return [4 /*yield*/, user.click(checkbox)];
|
|
265
|
+
case 2:
|
|
266
|
+
_a.sent();
|
|
267
|
+
return [4 /*yield*/, user.keyboard('[Escape]')];
|
|
268
|
+
case 3:
|
|
269
|
+
_a.sent();
|
|
270
|
+
expect(popover).not.toBeInTheDocument();
|
|
271
|
+
return [2 /*return*/];
|
|
272
|
+
}
|
|
273
|
+
});
|
|
274
|
+
}); });
|
|
275
|
+
});
|
|
168
276
|
});
|
package/esm/MetadataTypesSelector/components/SelectMetadataTypesList/SelectMetadataTypesList.js
CHANGED
|
@@ -25,6 +25,7 @@ import { always } from 'ramda';
|
|
|
25
25
|
import { AttributeListItem } from '../../../AttributeListItem';
|
|
26
26
|
import { Highlighter } from '../../../Highlighter';
|
|
27
27
|
import { VirtualGroupedList } from '../../../VirtualGroupedList';
|
|
28
|
+
import { getItemLabel } from '../../helpers';
|
|
28
29
|
var ITEM_HEIGHT = 32;
|
|
29
30
|
var getItemSize = always(ITEM_HEIGHT);
|
|
30
31
|
export var SelectMetadataTypesList = memo(function (_a) {
|
|
@@ -33,7 +34,7 @@ export var SelectMetadataTypesList = memo(function (_a) {
|
|
|
33
34
|
var item = _a.item;
|
|
34
35
|
var isSelected = !!selectedItems.find(function (uri) { return item.uri === uri; });
|
|
35
36
|
var isFocused = index === focusIndex;
|
|
36
|
-
return (React.createElement(AttributeListItem, { key: item.uri, onClick: onItemClick, checked: isSelected, data: item, label: React.createElement(Highlighter, { text: item
|
|
37
|
+
return (React.createElement(AttributeListItem, { key: item.uri, onClick: onItemClick, checked: isSelected, data: item, label: React.createElement(Highlighter, { text: getItemLabel(item), highlight: item.filterText }), labelInText: item.label, style: style, isFocused: isFocused, hideIcon: true, LogoIcon: item.LogoIcon }));
|
|
37
38
|
};
|
|
38
39
|
return (React.createElement(VirtualGroupedList, __assign({ getItemSize: getItemSize, renderItem: renderItem, focusIndex: focusIndex, fixedTitle: false, disableHorizontalScrollbar: true, width: width, height: height }, otherProps)));
|
|
39
40
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reltio/components",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.1976",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE FILE",
|
|
5
5
|
"main": "./cjs/index.js",
|
|
6
6
|
"module": "./esm/index.js",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"@fluentui/react-context-selector": "^9.1.26",
|
|
9
9
|
"@react-google-maps/api": "2.7.0",
|
|
10
10
|
"@react-sigma/core": "3.4.0",
|
|
11
|
-
"@reltio/mdm-sdk": "^1.4.
|
|
11
|
+
"@reltio/mdm-sdk": "^1.4.1877",
|
|
12
12
|
"d3-cloud": "^1.2.5",
|
|
13
13
|
"d3-geo": "^2.0.1",
|
|
14
14
|
"d3-hierarchy": "^2.0.0",
|