@reltio/components 1.4.2071 → 1.4.2072
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/AttributesView/AttributesView.js +1 -1
- package/ColumnsSettings/components/ColumnsSettingsPopup/ColumnsSettingsPopup.d.ts +2 -3
- package/ColumnsSettings/helpers.d.ts +3 -1
- package/ColumnsSettings/types.d.ts +8 -0
- package/CommentsContainer/CommentsContainer.js +1 -1
- package/ConfigureColumnsPopup/ConfigureColumnsPopup.d.ts +23 -40
- package/ConfigureColumnsPopup/ConfigureColumnsPopup.js +6 -26
- package/EditModeAttributesList/EditModeAttributesList.js +1 -1
- package/EditModeAttributesPager/EditModeAttributesPager.test.js +1 -1
- package/EditModeAttributesPager/components/AttributeRenderer/AttributeRenderer.js +1 -1
- package/MetadataTypesSelector/MetadataTypesSelector.d.ts +2 -1
- package/MetadataTypesSelector/components/SelectMetadataTypesList/SelectMetadataTypesList.d.ts +5 -6
- package/MoreAttributesButton/useMoreAttributesItems.d.ts +1 -1
- package/ReadOnlyAttributesList/ReadOnlyAttributesList.js +1 -1
- package/ReadOnlyAttributesPager/ReadOnlyAttributesPager.js +1 -1
- package/ReadOnlyAttributesView/ReadOnlyAttributesView.js +1 -1
- package/ScrollableTabs/ScrollableTabs.test.js +69 -19
- package/SearchHighlighter/SearchHighlighter.test.js +18 -7
- package/SelectAttributesList/SelectAttributesList.d.ts +11 -6
- package/SelectAttributesList/SelectAttributesList.js +5 -2
- package/SelectorWithOnlyOptionAutoSelect/SelectorWithOnlyOptionAutoSelect.test.js +109 -60
- package/SidePanelContentHeader/SidePanelContentHeader.js +2 -2
- package/SidePanelContentHeader/SidePanelContentHeader.test.js +104 -0
- package/SidePanelEmptyState/SidePanelEmptyState.js +1 -1
- package/SidePanelEmptyState/SidePanelEmptyState.test.js +24 -0
- package/SimpleAttribute/SimpleAttribute.js +1 -1
- package/SimpleAttribute/SimpleAttribute.test.js +155 -80
- package/SimpleAttributeEditor/SimpleAttributeEditor.test.js +339 -330
- package/SimpleAttributeEditor/useAttributeValuePermissions.js +1 -1
- package/SimpleDropDownSelector/SimpleDropDownSelector.test.js +86 -10
- package/SimpleDropDownSelector/components/DropDownPlaceholder/DropDownPlaceholder.js +1 -1
- package/SimpleDropDownSelector/components/DropDownValue/DropDownValue.js +1 -1
- package/SimpleMatchRulesBlock/SimpleMatchRulesBlock.test.js +128 -32
- package/SmallIconButton/SmallIconButton.test.js +98 -25
- package/TableWithBars/TableWithBars.test.js +98 -60
- package/TableWithBars/components/AttributeCellRenderer/AttributeCellRenderer.js +1 -1
- package/TableWithBars/components/HeadCellRenderer/HeadCellRenderer.js +1 -1
- package/Tags/Tags.d.ts +0 -1
- package/Tags/Tags.test.js +8 -7
- package/TransitiveMatchBlock/TransitiveMatchBlock.test.js +78 -22
- package/TransitiveMatchRule/TransitiveMatchRule.test.js +78 -37
- package/TransitiveMatchRulesTooltip/TransitiveMatchRulesTooltip.js +1 -1
- package/TransitiveMatchRulesTooltip/TransitiveMatchRulesTooltip.test.js +12 -18
- package/UploadFileButton/UploadFileButton.d.ts +2 -2
- package/UploadFileButton/UploadFileButton.test.js +199 -0
- package/UploadImageDialog/UploadImageDialog.test.js +1 -0
- package/UploadImageDialog/components/DividerWithText/DividerWithText.js +1 -1
- package/UploadImageDialog/components/ErrorSnackbar/ErrorSnackbar.test.js +80 -22
- package/UploadImageDialog/components/ImageByUrlField/ImageByUrlField.js +1 -1
- package/UploadImageDialog/components/ImageByUrlField/ImageByUrlField.test.js +162 -49
- package/ValueChip/ValueChip.test.js +7 -23
- package/VirtualGroupedList/VirtualGroupedList.d.ts +19 -31
- package/VirtualGroupedList/VirtualGroupedList.js +11 -36
- package/VirtualGroupedList/VirtualGroupedList.test.js +224 -0
- package/VirtualGroupedList/helpers.d.ts +7 -2
- package/VirtualGroupedList/helpers.js +3 -1
- package/VirtualGroupedList/index.d.ts +1 -1
- package/VirtualGroupedList/types.d.ts +10 -6
- package/VirtualGroupedList/useScrollToFocusItem.d.ts +8 -5
- package/WhiteSearchInput/{WhiteSearchInput.spec.js → WhiteSearchInput.test.js} +3 -8
- package/cjs/AttributesView/AttributesView.js +2 -2
- package/cjs/ColumnsSettings/components/ColumnsSettingsPopup/ColumnsSettingsPopup.d.ts +2 -3
- package/cjs/ColumnsSettings/helpers.d.ts +3 -1
- package/cjs/ColumnsSettings/types.d.ts +8 -0
- package/cjs/ColumnsSettings/types.js +2 -0
- package/cjs/CommentsContainer/CommentsContainer.js +1 -1
- package/cjs/ConfigureColumnsPopup/ConfigureColumnsPopup.d.ts +23 -40
- package/cjs/ConfigureColumnsPopup/ConfigureColumnsPopup.js +6 -26
- package/cjs/EditModeAttributesList/EditModeAttributesList.js +2 -2
- package/cjs/EditModeAttributesPager/EditModeAttributesPager.test.js +2 -2
- package/cjs/EditModeAttributesPager/components/AttributeRenderer/AttributeRenderer.js +2 -2
- package/cjs/MetadataTypesSelector/MetadataTypesSelector.d.ts +2 -1
- package/cjs/MetadataTypesSelector/components/SelectMetadataTypesList/SelectMetadataTypesList.d.ts +5 -6
- package/cjs/MoreAttributesButton/useMoreAttributesItems.d.ts +1 -1
- package/cjs/ReadOnlyAttributesList/ReadOnlyAttributesList.js +2 -2
- package/cjs/ReadOnlyAttributesPager/ReadOnlyAttributesPager.js +2 -2
- package/cjs/ReadOnlyAttributesView/ReadOnlyAttributesView.js +2 -2
- package/cjs/ScrollableTabs/ScrollableTabs.test.js +69 -19
- package/cjs/SearchHighlighter/SearchHighlighter.test.js +18 -7
- package/cjs/SelectAttributesList/SelectAttributesList.d.ts +11 -6
- package/cjs/SelectAttributesList/SelectAttributesList.js +5 -2
- package/cjs/SelectorWithOnlyOptionAutoSelect/SelectorWithOnlyOptionAutoSelect.test.js +109 -60
- package/cjs/SidePanelContentHeader/SidePanelContentHeader.js +2 -2
- package/cjs/SidePanelContentHeader/SidePanelContentHeader.test.js +109 -0
- package/cjs/SidePanelEmptyState/SidePanelEmptyState.js +1 -1
- package/cjs/SidePanelEmptyState/SidePanelEmptyState.test.js +29 -0
- package/cjs/SimpleAttribute/SimpleAttribute.js +1 -1
- package/cjs/SimpleAttribute/SimpleAttribute.test.js +155 -80
- package/cjs/SimpleAttributeEditor/SimpleAttributeEditor.test.js +338 -352
- package/cjs/SimpleAttributeEditor/useAttributeValuePermissions.js +2 -2
- package/cjs/SimpleDropDownSelector/SimpleDropDownSelector.test.js +86 -10
- package/cjs/SimpleDropDownSelector/components/DropDownPlaceholder/DropDownPlaceholder.js +1 -1
- package/cjs/SimpleDropDownSelector/components/DropDownValue/DropDownValue.js +1 -1
- package/cjs/SimpleMatchRulesBlock/SimpleMatchRulesBlock.test.js +127 -31
- package/cjs/SmallIconButton/SmallIconButton.test.js +98 -25
- package/cjs/TableWithBars/TableWithBars.test.js +98 -60
- package/cjs/TableWithBars/components/AttributeCellRenderer/AttributeCellRenderer.js +1 -1
- package/cjs/TableWithBars/components/HeadCellRenderer/HeadCellRenderer.js +1 -1
- package/cjs/Tags/Tags.d.ts +0 -1
- package/cjs/Tags/Tags.test.js +8 -7
- package/cjs/TransitiveMatchBlock/TransitiveMatchBlock.test.js +77 -21
- package/cjs/TransitiveMatchRule/TransitiveMatchRule.test.js +78 -37
- package/cjs/TransitiveMatchRulesTooltip/TransitiveMatchRulesTooltip.js +1 -1
- package/cjs/TransitiveMatchRulesTooltip/TransitiveMatchRulesTooltip.test.js +12 -18
- package/cjs/UploadFileButton/UploadFileButton.d.ts +2 -2
- package/cjs/UploadFileButton/UploadFileButton.test.js +204 -0
- package/cjs/UploadImageDialog/UploadImageDialog.test.js +1 -0
- package/cjs/UploadImageDialog/components/DividerWithText/DividerWithText.js +1 -1
- package/cjs/UploadImageDialog/components/ErrorSnackbar/ErrorSnackbar.test.js +80 -22
- package/cjs/UploadImageDialog/components/ImageByUrlField/ImageByUrlField.js +1 -1
- package/cjs/UploadImageDialog/components/ImageByUrlField/ImageByUrlField.test.js +162 -49
- package/cjs/ValueChip/ValueChip.test.js +7 -23
- package/cjs/VirtualGroupedList/VirtualGroupedList.d.ts +19 -31
- package/cjs/VirtualGroupedList/VirtualGroupedList.js +11 -36
- package/cjs/VirtualGroupedList/VirtualGroupedList.test.js +252 -0
- package/cjs/VirtualGroupedList/helpers.d.ts +7 -2
- package/cjs/VirtualGroupedList/helpers.js +3 -1
- package/cjs/VirtualGroupedList/index.d.ts +1 -1
- package/cjs/VirtualGroupedList/types.d.ts +10 -6
- package/cjs/VirtualGroupedList/useScrollToFocusItem.d.ts +8 -5
- package/cjs/WhiteSearchInput/{WhiteSearchInput.spec.js → WhiteSearchInput.test.js} +3 -8
- package/cjs/features/crosswalks/hooks/useAttributeActions.test.js +24 -25
- package/cjs/features/crosswalks/hooks/useCrosswalkActions.test.js +10 -11
- package/cjs/features/workflow/hooks/useChangeRequest.test.js +5 -6
- package/cjs/hooks/useCommentsEntitiesMap/useCommentsEntitiesMap.test.js +8 -9
- package/cjs/hooks/useKeyboardNavigation/useKeyboardNavigation.d.ts +9 -13
- package/features/crosswalks/hooks/useAttributeActions.test.js +1 -2
- package/features/crosswalks/hooks/useCrosswalkActions.test.js +1 -2
- package/features/workflow/hooks/useChangeRequest.test.js +1 -2
- package/hooks/useCommentsEntitiesMap/useCommentsEntitiesMap.test.js +1 -2
- package/hooks/useKeyboardNavigation/useKeyboardNavigation.d.ts +9 -13
- package/package.json +1 -1
- package/SidePanelContentHeader/SidePanelContentHeader.spec.js +0 -49
- package/SidePanelEmptyState/SidePanelEmptyState.spec.js +0 -24
- package/SimpleAttributeEditor/SimpleAttributeEditorWithoutPermissions.test.js +0 -103
- package/SimpleDropDownSelector/components/DropDownPlaceholder/DropDownPlaceholder.test.js +0 -13
- package/TableWithBars/components/AttributeCellRenderer/AttributeCellRenderer.test.js +0 -21
- package/TableWithBars/components/HeadCellRenderer/HeadCellRenderer.test.js +0 -20
- package/UploadFileButton/UploadFileButton.spec.js +0 -219
- package/UploadImageDialog/components/DividerWithText/DividerWithText.test.js +0 -9
- package/VirtualGroupedList/VirtualGroupedList.spec.js +0 -282
- package/cjs/SidePanelContentHeader/SidePanelContentHeader.spec.js +0 -54
- package/cjs/SidePanelEmptyState/SidePanelEmptyState.spec.d.ts +0 -1
- package/cjs/SidePanelEmptyState/SidePanelEmptyState.spec.js +0 -29
- package/cjs/SimpleAttributeEditor/SimpleAttributeEditorWithoutPermissions.test.d.ts +0 -1
- package/cjs/SimpleAttributeEditor/SimpleAttributeEditorWithoutPermissions.test.js +0 -108
- package/cjs/SimpleDropDownSelector/components/DropDownPlaceholder/DropDownPlaceholder.test.d.ts +0 -1
- package/cjs/SimpleDropDownSelector/components/DropDownPlaceholder/DropDownPlaceholder.test.js +0 -18
- package/cjs/TableWithBars/components/AttributeCellRenderer/AttributeCellRenderer.test.d.ts +0 -1
- package/cjs/TableWithBars/components/AttributeCellRenderer/AttributeCellRenderer.test.js +0 -26
- package/cjs/TableWithBars/components/HeadCellRenderer/HeadCellRenderer.test.d.ts +0 -1
- package/cjs/TableWithBars/components/HeadCellRenderer/HeadCellRenderer.test.js +0 -25
- package/cjs/UploadFileButton/UploadFileButton.spec.d.ts +0 -1
- package/cjs/UploadFileButton/UploadFileButton.spec.js +0 -224
- package/cjs/UploadImageDialog/components/DividerWithText/DividerWithText.test.d.ts +0 -1
- package/cjs/UploadImageDialog/components/DividerWithText/DividerWithText.test.js +0 -14
- package/cjs/VirtualGroupedList/VirtualGroupedList.spec.d.ts +0 -1
- package/cjs/VirtualGroupedList/VirtualGroupedList.spec.js +0 -287
- package/cjs/WhiteSearchInput/WhiteSearchInput.spec.d.ts +0 -1
- /package/{SidePanelContentHeader/SidePanelContentHeader.spec.d.ts → ColumnsSettings/types.js} +0 -0
- /package/{SidePanelEmptyState/SidePanelEmptyState.spec.d.ts → SidePanelContentHeader/SidePanelContentHeader.test.d.ts} +0 -0
- /package/{SimpleAttributeEditor/SimpleAttributeEditorWithoutPermissions.test.d.ts → SidePanelEmptyState/SidePanelEmptyState.test.d.ts} +0 -0
- /package/{SimpleDropDownSelector/components/DropDownPlaceholder/DropDownPlaceholder.test.d.ts → UploadFileButton/UploadFileButton.test.d.ts} +0 -0
- /package/{TableWithBars/components/AttributeCellRenderer/AttributeCellRenderer.test.d.ts → VirtualGroupedList/VirtualGroupedList.test.d.ts} +0 -0
- /package/{TableWithBars/components/HeadCellRenderer/HeadCellRenderer.test.d.ts → WhiteSearchInput/WhiteSearchInput.test.d.ts} +0 -0
- /package/{UploadFileButton/UploadFileButton.spec.d.ts → cjs/SidePanelContentHeader/SidePanelContentHeader.test.d.ts} +0 -0
- /package/{UploadImageDialog/components/DividerWithText/DividerWithText.test.d.ts → cjs/SidePanelEmptyState/SidePanelEmptyState.test.d.ts} +0 -0
- /package/{VirtualGroupedList/VirtualGroupedList.spec.d.ts → cjs/UploadFileButton/UploadFileButton.test.d.ts} +0 -0
- /package/{WhiteSearchInput/WhiteSearchInput.spec.d.ts → cjs/VirtualGroupedList/VirtualGroupedList.test.d.ts} +0 -0
- /package/cjs/{SidePanelContentHeader/SidePanelContentHeader.spec.d.ts → WhiteSearchInput/WhiteSearchInput.test.d.ts} +0 -0
- /package/cjs/contexts/{AllwaysVisibleAttributesContext → AlwaysVisibleAttributesContext}/index.d.ts +0 -0
- /package/cjs/contexts/{AllwaysVisibleAttributesContext → AlwaysVisibleAttributesContext}/index.js +0 -0
- /package/contexts/{AllwaysVisibleAttributesContext → AlwaysVisibleAttributesContext}/index.d.ts +0 -0
- /package/contexts/{AllwaysVisibleAttributesContext → AlwaysVisibleAttributesContext}/index.js +0 -0
|
@@ -1,30 +1,88 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
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 = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
23
|
+
return g.next = verb(0), g["throw"] = verb(1), g["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
|
+
};
|
|
1
48
|
import React from 'react';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
49
|
+
import { render, screen } from '@testing-library/react';
|
|
50
|
+
import userEvent from '@testing-library/user-event';
|
|
4
51
|
import { ErrorSnackbar } from './ErrorSnackbar';
|
|
5
52
|
describe('ErrorSnackbar tests', function () {
|
|
53
|
+
var setUp = function (props) {
|
|
54
|
+
if (props === void 0) { props = {}; }
|
|
55
|
+
var user = userEvent.setup();
|
|
56
|
+
return __assign({ user: user }, render(React.createElement(ErrorSnackbar, __assign({ error: null }, props))));
|
|
57
|
+
};
|
|
6
58
|
it('should render correctly with error is "null"', function () {
|
|
7
|
-
var
|
|
8
|
-
expect(
|
|
9
|
-
open: false,
|
|
10
|
-
message: null
|
|
11
|
-
});
|
|
59
|
+
var container = setUp({ error: null }).container;
|
|
60
|
+
expect(container).toBeEmptyDOMElement();
|
|
12
61
|
});
|
|
13
62
|
it('should render correctly with error is not "null"', function () {
|
|
14
|
-
|
|
15
|
-
expect(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
it('onClose handler work correctly', function () {
|
|
21
|
-
var onClose = jest.fn();
|
|
22
|
-
var component = shallow(React.createElement(ErrorSnackbar, { error: "Some error", onClose: onClose }));
|
|
23
|
-
var closeEvent = {};
|
|
24
|
-
component.find(Snackbar).prop('onClose')(closeEvent, 'clickaway');
|
|
25
|
-
expect(onClose).toHaveBeenCalledTimes(1);
|
|
26
|
-
var action = component.find(Snackbar).prop('action');
|
|
27
|
-
action.props.onClick();
|
|
28
|
-
expect(onClose).toHaveBeenCalledTimes(2);
|
|
63
|
+
setUp({ error: 'Some error' });
|
|
64
|
+
expect(screen.getByRole('alert')).toBeInTheDocument();
|
|
65
|
+
expect(screen.getByText('Some error')).toBeInTheDocument();
|
|
66
|
+
expect(screen.getByRole('button', { name: 'Close' })).toBeInTheDocument();
|
|
29
67
|
});
|
|
68
|
+
it('onClose handler work correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
69
|
+
var onClose, user;
|
|
70
|
+
return __generator(this, function (_a) {
|
|
71
|
+
switch (_a.label) {
|
|
72
|
+
case 0:
|
|
73
|
+
onClose = jest.fn();
|
|
74
|
+
user = setUp({ error: 'Some error', onClose: onClose }).user;
|
|
75
|
+
expect(onClose).toHaveBeenCalledTimes(0);
|
|
76
|
+
return [4 /*yield*/, user.click(screen.getByRole('button', { name: 'Close' }))];
|
|
77
|
+
case 1:
|
|
78
|
+
_a.sent();
|
|
79
|
+
expect(onClose).toHaveBeenCalledTimes(1);
|
|
80
|
+
return [4 /*yield*/, user.click(screen.getByRole('presentation').parentElement)];
|
|
81
|
+
case 2:
|
|
82
|
+
_a.sent();
|
|
83
|
+
expect(onClose).toHaveBeenCalledTimes(2);
|
|
84
|
+
return [2 /*return*/];
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}); });
|
|
30
88
|
});
|
|
@@ -33,5 +33,5 @@ export var ImageByUrlField = function (_a) {
|
|
|
33
33
|
React.createElement(Paper, { className: styles.paper },
|
|
34
34
|
React.createElement(InputBase, { value: value, onChange: handleChange, classes: { root: styles.inputRoot, input: styles.input }, placeholder: i18n.text('Paste an image URL here') }),
|
|
35
35
|
React.createElement(Button, { disabled: Boolean(error) || isEmptyField(value), variant: "outlined", color: "primary", onClick: handleSend }, i18n.text('Send'))),
|
|
36
|
-
error && React.createElement(Typography, { className: styles.errorMessage }, error)));
|
|
36
|
+
error && (React.createElement(Typography, { "data-reltio-id": "url-error-message", className: styles.errorMessage }, error))));
|
|
37
37
|
};
|
|
@@ -1,59 +1,172 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
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 = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
23
|
+
return g.next = verb(0), g["throw"] = verb(1), g["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
|
+
};
|
|
1
48
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import Button from '@mui/material/Button';
|
|
49
|
+
import { render, screen } from '@testing-library/react';
|
|
50
|
+
import userEvent from '@testing-library/user-event';
|
|
5
51
|
import { ImageByUrlField } from './ImageByUrlField';
|
|
6
52
|
describe('ImageByUrlField tests', function () {
|
|
7
|
-
var onSend;
|
|
53
|
+
var defaultProps = { onSend: jest.fn() };
|
|
8
54
|
beforeEach(function () {
|
|
9
|
-
|
|
55
|
+
jest.clearAllMocks();
|
|
10
56
|
});
|
|
57
|
+
var setUp = function (props) {
|
|
58
|
+
if (props === void 0) { props = {}; }
|
|
59
|
+
var user = userEvent.setup();
|
|
60
|
+
return __assign({ user: user }, render(React.createElement(ImageByUrlField, __assign({}, defaultProps, props))));
|
|
61
|
+
};
|
|
11
62
|
it('should not render error message if error is null', function () {
|
|
12
|
-
|
|
13
|
-
expect(
|
|
14
|
-
});
|
|
15
|
-
it('should not render error message if value is correct', function () {
|
|
16
|
-
var component = shallow(React.createElement(ImageByUrlField, { onSend: onSend }));
|
|
17
|
-
component.find(InputBase).simulate('change', { target: { value: 'https://reltio.com' } });
|
|
18
|
-
expect(component.find('.errorMessage')).toHaveLength(0);
|
|
19
|
-
});
|
|
20
|
-
it('should not render error message if value is empty string', function () {
|
|
21
|
-
var component = shallow(React.createElement(ImageByUrlField, { onSend: onSend }));
|
|
22
|
-
component.find(InputBase).simulate('change', { target: { value: '' } });
|
|
23
|
-
expect(component.find('.errorMessage')).toHaveLength(0);
|
|
24
|
-
});
|
|
25
|
-
it('should render error message if value is not correct', function () {
|
|
26
|
-
var component = shallow(React.createElement(ImageByUrlField, { onSend: onSend }));
|
|
27
|
-
component.find(InputBase).simulate('change', { target: { value: 'wrong url' } });
|
|
28
|
-
expect(component.find('.errorMessage').text()).toBe('URL is not correct');
|
|
29
|
-
});
|
|
30
|
-
it('should update input value', function () {
|
|
31
|
-
var component = shallow(React.createElement(ImageByUrlField, { onSend: onSend }));
|
|
32
|
-
expect(component.find(InputBase).prop('value')).toBe('');
|
|
33
|
-
component.find(InputBase).simulate('change', { target: { value: 'value' } });
|
|
34
|
-
expect(component.find(InputBase).prop('value')).toBe('value');
|
|
63
|
+
setUp();
|
|
64
|
+
expect(screen.queryByTestId('url-error-message')).not.toBeInTheDocument();
|
|
35
65
|
});
|
|
66
|
+
it('should not render error message if value is correct', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
67
|
+
var user;
|
|
68
|
+
return __generator(this, function (_a) {
|
|
69
|
+
switch (_a.label) {
|
|
70
|
+
case 0:
|
|
71
|
+
user = setUp().user;
|
|
72
|
+
return [4 /*yield*/, user.type(screen.getByRole('textbox'), 'https://reltio.com')];
|
|
73
|
+
case 1:
|
|
74
|
+
_a.sent();
|
|
75
|
+
expect(screen.queryByTestId('url-error-message')).not.toBeInTheDocument();
|
|
76
|
+
return [2 /*return*/];
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}); });
|
|
80
|
+
it('should not render error message if value is empty string', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
81
|
+
var user;
|
|
82
|
+
return __generator(this, function (_a) {
|
|
83
|
+
switch (_a.label) {
|
|
84
|
+
case 0:
|
|
85
|
+
user = setUp().user;
|
|
86
|
+
return [4 /*yield*/, user.clear(screen.getByRole('textbox'))];
|
|
87
|
+
case 1:
|
|
88
|
+
_a.sent();
|
|
89
|
+
expect(screen.queryByTestId('url-error-message')).not.toBeInTheDocument();
|
|
90
|
+
return [2 /*return*/];
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}); });
|
|
94
|
+
it('should render error message if value is not correct', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
95
|
+
var user;
|
|
96
|
+
return __generator(this, function (_a) {
|
|
97
|
+
switch (_a.label) {
|
|
98
|
+
case 0:
|
|
99
|
+
user = setUp().user;
|
|
100
|
+
return [4 /*yield*/, user.type(screen.getByRole('textbox'), 'wrong url')];
|
|
101
|
+
case 1:
|
|
102
|
+
_a.sent();
|
|
103
|
+
expect(screen.getByTestId('url-error-message')).toHaveTextContent('URL is not correct');
|
|
104
|
+
return [2 /*return*/];
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}); });
|
|
108
|
+
it('should update input value', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
109
|
+
var user;
|
|
110
|
+
return __generator(this, function (_a) {
|
|
111
|
+
switch (_a.label) {
|
|
112
|
+
case 0:
|
|
113
|
+
user = setUp().user;
|
|
114
|
+
return [4 /*yield*/, user.type(screen.getByRole('textbox'), 'value')];
|
|
115
|
+
case 1:
|
|
116
|
+
_a.sent();
|
|
117
|
+
expect(screen.getByRole('textbox')).toHaveValue('value');
|
|
118
|
+
return [2 /*return*/];
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
}); });
|
|
36
122
|
it('should disable Send button if value is empty string', function () {
|
|
37
|
-
|
|
38
|
-
expect(
|
|
39
|
-
expect(
|
|
40
|
-
});
|
|
41
|
-
it('should disable Send button if value is incorrect url', function () {
|
|
42
|
-
var component = shallow(React.createElement(ImageByUrlField, { onSend: onSend }));
|
|
43
|
-
component.find(InputBase).simulate('change', { target: { value: 'wrong url' } });
|
|
44
|
-
expect(component.find(Button).prop('disabled')).toBe(true);
|
|
45
|
-
});
|
|
46
|
-
it('should not disable Send button if value is correct url', function () {
|
|
47
|
-
var component = shallow(React.createElement(ImageByUrlField, { onSend: onSend }));
|
|
48
|
-
component.find(InputBase).simulate('change', { target: { value: 'https://reltio.com' } });
|
|
49
|
-
expect(component.find(Button).prop('disabled')).toBe(false);
|
|
50
|
-
});
|
|
51
|
-
it('onSend handler should work correctly', function () {
|
|
52
|
-
var component = shallow(React.createElement(ImageByUrlField, { onSend: onSend }));
|
|
53
|
-
component.find(InputBase).simulate('change', { target: { value: 'https://reltio.com' } });
|
|
54
|
-
expect(component.find(InputBase).prop('value')).toBe('https://reltio.com');
|
|
55
|
-
component.find(Button).simulate('click');
|
|
56
|
-
expect(onSend).toHaveBeenCalledWith('https://reltio.com');
|
|
57
|
-
expect(component.find(InputBase).prop('value')).toBe('');
|
|
123
|
+
setUp();
|
|
124
|
+
expect(screen.getByRole('textbox')).toHaveValue('');
|
|
125
|
+
expect(screen.getByRole('button', { name: 'Send' })).toBeDisabled();
|
|
58
126
|
});
|
|
127
|
+
it('should disable Send button if value is incorrect url', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
128
|
+
var user;
|
|
129
|
+
return __generator(this, function (_a) {
|
|
130
|
+
switch (_a.label) {
|
|
131
|
+
case 0:
|
|
132
|
+
user = setUp().user;
|
|
133
|
+
return [4 /*yield*/, user.type(screen.getByRole('textbox'), 'wrong url')];
|
|
134
|
+
case 1:
|
|
135
|
+
_a.sent();
|
|
136
|
+
expect(screen.getByRole('button', { name: 'Send' })).toBeDisabled();
|
|
137
|
+
return [2 /*return*/];
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
}); });
|
|
141
|
+
it('should not disable Send button if value is correct url', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
142
|
+
var user;
|
|
143
|
+
return __generator(this, function (_a) {
|
|
144
|
+
switch (_a.label) {
|
|
145
|
+
case 0:
|
|
146
|
+
user = setUp().user;
|
|
147
|
+
return [4 /*yield*/, user.type(screen.getByRole('textbox'), 'https://reltio.com')];
|
|
148
|
+
case 1:
|
|
149
|
+
_a.sent();
|
|
150
|
+
expect(screen.getByRole('button', { name: 'Send' })).not.toBeDisabled();
|
|
151
|
+
return [2 /*return*/];
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}); });
|
|
155
|
+
it('onSend handler should work correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
156
|
+
var user;
|
|
157
|
+
return __generator(this, function (_a) {
|
|
158
|
+
switch (_a.label) {
|
|
159
|
+
case 0:
|
|
160
|
+
user = setUp().user;
|
|
161
|
+
return [4 /*yield*/, user.type(screen.getByRole('textbox'), 'https://reltio.com')];
|
|
162
|
+
case 1:
|
|
163
|
+
_a.sent();
|
|
164
|
+
return [4 /*yield*/, user.click(screen.getByRole('button', { name: 'Send' }))];
|
|
165
|
+
case 2:
|
|
166
|
+
_a.sent();
|
|
167
|
+
expect(defaultProps.onSend).toHaveBeenCalledWith('https://reltio.com');
|
|
168
|
+
return [2 /*return*/];
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
}); });
|
|
59
172
|
});
|
|
@@ -1,34 +1,18 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
import Chip from '@mui/material/Chip';
|
|
4
|
-
import { ExpandedValueTooltip } from '../ExpandedValueTooltip';
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
5
3
|
import { ValueChip } from './ValueChip';
|
|
6
4
|
describe('ValueChip tests', function () {
|
|
7
5
|
it('should render main parts', function () {
|
|
8
6
|
var label = '123';
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
expect(
|
|
12
|
-
var chipLabel = new ReactWrapper(chip.prop('label'));
|
|
13
|
-
var valueTooltip = chipLabel.find(ExpandedValueTooltip);
|
|
14
|
-
expect(valueTooltip.length).toBe(1);
|
|
15
|
-
expect(valueTooltip.prop('value')).toBe(label);
|
|
16
|
-
expect(valueTooltip.text()).toBe(label);
|
|
17
|
-
expect(chipLabel.find('.count')).toHaveLength(0);
|
|
7
|
+
var container = render(React.createElement(ValueChip, { label: label })).container;
|
|
8
|
+
expect(screen.getByText('123')).toBeInTheDocument();
|
|
9
|
+
expect(container.querySelector('.count')).toBeNull();
|
|
18
10
|
});
|
|
19
11
|
it('should render main parts with count', function () {
|
|
20
12
|
var label = '123';
|
|
21
13
|
var count = '15K';
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
expect(
|
|
25
|
-
var chipLabel = new ReactWrapper(chip.prop('label'));
|
|
26
|
-
var valueTooltip = chipLabel.find(ExpandedValueTooltip);
|
|
27
|
-
expect(valueTooltip.length).toBe(1);
|
|
28
|
-
expect(valueTooltip.prop('value')).toBe(label);
|
|
29
|
-
expect(valueTooltip.text()).toBe(label);
|
|
30
|
-
var countComponent = chipLabel.find('.count');
|
|
31
|
-
expect(countComponent).toHaveLength(1);
|
|
32
|
-
expect(countComponent.text()).toBe(count);
|
|
14
|
+
render(React.createElement(ValueChip, { label: label, count: count }));
|
|
15
|
+
expect(screen.getByText('123')).toBeInTheDocument();
|
|
16
|
+
expect(screen.getByText('15K')).toHaveClass('count');
|
|
33
17
|
});
|
|
34
18
|
});
|
|
@@ -1,32 +1,20 @@
|
|
|
1
|
-
export function VirtualGroupedList({ items, getItemSize, renderItem, renderGroupTitle, width, height, fixedTitle, itemKey, disableHorizontalScrollbar, hideSubtitles, focusIndex, onInnerContainerResize }: {
|
|
2
|
-
items: any;
|
|
3
|
-
getItemSize: any;
|
|
4
|
-
renderItem: any;
|
|
5
|
-
renderGroupTitle: any;
|
|
6
|
-
width?: string;
|
|
7
|
-
height: any;
|
|
8
|
-
fixedTitle?: boolean;
|
|
9
|
-
itemKey?: (i: any) => any;
|
|
10
|
-
disableHorizontalScrollbar: any;
|
|
11
|
-
hideSubtitles: any;
|
|
12
|
-
focusIndex?: any;
|
|
13
|
-
onInnerContainerResize: any;
|
|
14
|
-
}): React.JSX.Element;
|
|
15
|
-
export namespace VirtualGroupedList {
|
|
16
|
-
namespace propTypes {
|
|
17
|
-
let items: PropTypes.Validator<object[]>;
|
|
18
|
-
let getItemSize: PropTypes.Validator<(...args: any[]) => any>;
|
|
19
|
-
let renderItem: PropTypes.Validator<(...args: any[]) => any>;
|
|
20
|
-
let width: PropTypes.Requireable<NonNullable<string | number>>;
|
|
21
|
-
let height: PropTypes.Validator<number>;
|
|
22
|
-
let renderGroupTitle: PropTypes.Requireable<(...args: any[]) => any>;
|
|
23
|
-
let fixedTitle: PropTypes.Requireable<boolean>;
|
|
24
|
-
let hideSubtitles: PropTypes.Requireable<boolean>;
|
|
25
|
-
let itemKey: PropTypes.Requireable<(...args: any[]) => any>;
|
|
26
|
-
let disableHorizontalScrollbar: PropTypes.Requireable<boolean>;
|
|
27
|
-
let focusIndex: PropTypes.Requireable<number>;
|
|
28
|
-
let onInnerContainerResize: PropTypes.Requireable<(...args: any[]) => any>;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
1
|
import React from 'react';
|
|
32
|
-
import
|
|
2
|
+
import { VariableSizeList as List } from 'react-window';
|
|
3
|
+
import { OnResizeCallback } from 'react-resize-detector/build/types/types';
|
|
4
|
+
import { VirtualGroupedListItem, VirtualGroupedListMainItem, VirtualGroupedListRenderGroupTitle, VirtualGroupedListRenderItem } from './types';
|
|
5
|
+
type Props<T> = {
|
|
6
|
+
items: VirtualGroupedListMainItem<T>[];
|
|
7
|
+
getItemSize: (index: number, item: VirtualGroupedListItem<T>) => number;
|
|
8
|
+
renderItem: VirtualGroupedListRenderItem<T>;
|
|
9
|
+
renderGroupTitle?: VirtualGroupedListRenderGroupTitle<T>;
|
|
10
|
+
width?: string | number;
|
|
11
|
+
height: number;
|
|
12
|
+
fixedTitle?: boolean;
|
|
13
|
+
itemKey?: React.ComponentProps<typeof List>['itemKey'];
|
|
14
|
+
disableHorizontalScrollbar?: boolean;
|
|
15
|
+
hideSubtitles?: boolean;
|
|
16
|
+
focusIndex?: number;
|
|
17
|
+
onInnerContainerResize?: OnResizeCallback;
|
|
18
|
+
};
|
|
19
|
+
export declare const VirtualGroupedList: <Data>({ items, getItemSize, renderItem, renderGroupTitle, width, height, fixedTitle, itemKey, disableHorizontalScrollbar, hideSubtitles, focusIndex, onInnerContainerResize }: Props<Data>) => React.JSX.Element;
|
|
20
|
+
export {};
|
|
@@ -8,27 +8,11 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
8
8
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
9
9
|
};
|
|
10
10
|
import React, { useCallback, useEffect, useRef, useMemo } from 'react';
|
|
11
|
-
import PropTypes from 'prop-types';
|
|
12
11
|
import { VariableSizeList as List } from 'react-window';
|
|
13
12
|
import ReactResizeDetector from 'react-resize-detector';
|
|
14
13
|
import { useScrollToFocusItem } from './useScrollToFocusItem';
|
|
15
14
|
import { isTitleListItem } from './helpers';
|
|
16
15
|
import { useStyles } from './styles';
|
|
17
|
-
/*
|
|
18
|
-
items = [
|
|
19
|
-
{
|
|
20
|
-
item: {
|
|
21
|
-
item: {},
|
|
22
|
-
level: number
|
|
23
|
-
},
|
|
24
|
-
titleItemIndex: number,
|
|
25
|
-
index: number,
|
|
26
|
-
moveTo: true|false,
|
|
27
|
-
items: [...]
|
|
28
|
-
...
|
|
29
|
-
}
|
|
30
|
-
]
|
|
31
|
-
*/
|
|
32
16
|
var OVERSCAN_COUNT = 5;
|
|
33
17
|
export var VirtualGroupedList = function (_a) {
|
|
34
18
|
var items = _a.items, getItemSize = _a.getItemSize, renderItem = _a.renderItem, renderGroupTitle = _a.renderGroupTitle, _b = _a.width, width = _b === void 0 ? '100%' : _b, height = _a.height, _c = _a.fixedTitle, fixedTitle = _c === void 0 ? true : _c, _d = _a.itemKey, itemKey = _d === void 0 ? function (i) { return i; } : _d, disableHorizontalScrollbar = _a.disableHorizontalScrollbar, hideSubtitles = _a.hideSubtitles, _e = _a.focusIndex, focusIndex = _e === void 0 ? null : _e, onInnerContainerResize = _a.onInnerContainerResize;
|
|
@@ -40,9 +24,12 @@ export var VirtualGroupedList = function (_a) {
|
|
|
40
24
|
var stepCalcOffset = 10;
|
|
41
25
|
var stickyItemClass = 'stickyTitleItem';
|
|
42
26
|
var currentTitleParams = {
|
|
43
|
-
topMargin: 0
|
|
27
|
+
topMargin: 0,
|
|
28
|
+
index: undefined
|
|
29
|
+
};
|
|
30
|
+
var isGroupHasSubTitles = function (groupedItems) {
|
|
31
|
+
return (groupedItems || []).some(function (item) { return item.titleItemIndex !== null; });
|
|
44
32
|
};
|
|
45
|
-
var isGroupHasSubTitles = function (groupedItems) { return (groupedItems || []).some(function (item) { return item.titleItemIndex !== null; }); };
|
|
46
33
|
var hasSubTitles = useMemo(function () { return !hideSubtitles || isGroupHasSubTitles(items); }, [items, hideSubtitles]);
|
|
47
34
|
var calcOffsetsToIndex = useCallback(function (index) {
|
|
48
35
|
var curItemsLength = itemOffsets.current.length;
|
|
@@ -176,9 +163,11 @@ export var VirtualGroupedList = function (_a) {
|
|
|
176
163
|
var render = useCallback(function (_a) {
|
|
177
164
|
var index = _a.index, style = _a.style, data = _a.data;
|
|
178
165
|
var listItem = getItemByIndex(index);
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
166
|
+
if (!listItem.item)
|
|
167
|
+
return null;
|
|
168
|
+
return isTitleListItem(listItem)
|
|
169
|
+
? renderGroupTitle(style, listItem.item)
|
|
170
|
+
: renderItem(style, listItem.item, index, data);
|
|
182
171
|
}, [getItemByIndex, renderGroupTitle, renderItem]);
|
|
183
172
|
var handleOnItemsRendered = useScrollToFocusItem({ items: items, focusIndex: focusIndex, listRef: listRef }).handleOnItemsRendered;
|
|
184
173
|
var renderTitles = useCallback(function () {
|
|
@@ -186,21 +175,7 @@ export var VirtualGroupedList = function (_a) {
|
|
|
186
175
|
return items.filter(function (listItem) { return isTitleListItem(listItem); }).map(function (listItem) { return renderTitle(listItem); });
|
|
187
176
|
}, [getItemSize, items, renderGroupTitle]);
|
|
188
177
|
return (React.createElement(React.Fragment, null,
|
|
189
|
-
React.createElement("div", { ref: titlesRef, className: styles.stickyTitlesWrapper }, fixedTitle && renderTitles()),
|
|
178
|
+
React.createElement("div", { ref: titlesRef, "data-reltio-id": "grouped-list-sticky-titles", className: styles.stickyTitlesWrapper }, fixedTitle && renderTitles()),
|
|
190
179
|
onInnerContainerResize && itemsRef.current && (React.createElement(ReactResizeDetector, { handleHeight: true, onResize: onInnerContainerResize, targetRef: itemsRef })),
|
|
191
180
|
React.createElement(List, { ref: listRef, itemCount: items.length, itemSize: _getItemSize, width: width, height: height, itemKey: itemKey, innerRef: itemsRef, onScroll: onScroll, style: disableHorizontalScrollbar ? { overflowX: 'hidden' } : undefined, overscanCount: OVERSCAN_COUNT, onItemsRendered: handleOnItemsRendered }, render)));
|
|
192
181
|
};
|
|
193
|
-
VirtualGroupedList.propTypes = {
|
|
194
|
-
items: PropTypes.arrayOf(PropTypes.object).isRequired,
|
|
195
|
-
getItemSize: PropTypes.func.isRequired,
|
|
196
|
-
renderItem: PropTypes.func.isRequired,
|
|
197
|
-
width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
|
|
198
|
-
height: PropTypes.number.isRequired,
|
|
199
|
-
renderGroupTitle: PropTypes.func,
|
|
200
|
-
fixedTitle: PropTypes.bool,
|
|
201
|
-
hideSubtitles: PropTypes.bool,
|
|
202
|
-
itemKey: PropTypes.func,
|
|
203
|
-
disableHorizontalScrollbar: PropTypes.bool,
|
|
204
|
-
focusIndex: PropTypes.number,
|
|
205
|
-
onInnerContainerResize: PropTypes.func
|
|
206
|
-
};
|