@reltio/components 1.4.2321 → 1.4.2322

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.
@@ -6,6 +6,7 @@ type NodeTitleProps = {
6
6
  anchorEl?: HTMLElement;
7
7
  withEntityDetails?: boolean;
8
8
  classNames?: string;
9
+ onOpenEntity?: (entityUri: string) => void;
9
10
  };
10
- export declare const HierarchyNodeTitle: ({ title, isSelected, entityUri, anchorEl, withEntityDetails, classNames }: NodeTitleProps) => React.JSX.Element;
11
+ export declare const HierarchyNodeTitle: ({ title, isSelected, entityUri, anchorEl, withEntityDetails, classNames, onOpenEntity }: NodeTitleProps) => React.JSX.Element;
11
12
  export {};
@@ -9,7 +9,7 @@ import { useEntityDetails } from './useEntityDetails';
9
9
  import { useStyles } from './styles';
10
10
  export var HierarchyNodeTitle = function (_a) {
11
11
  var _b;
12
- var title = _a.title, isSelected = _a.isSelected, entityUri = _a.entityUri, anchorEl = _a.anchorEl, _c = _a.withEntityDetails, withEntityDetails = _c === void 0 ? true : _c, classNames = _a.classNames;
12
+ var title = _a.title, isSelected = _a.isSelected, entityUri = _a.entityUri, anchorEl = _a.anchorEl, _c = _a.withEntityDetails, withEntityDetails = _c === void 0 ? true : _c, classNames = _a.classNames, onOpenEntity = _a.onOpenEntity;
13
13
  var styles = useStyles();
14
14
  var generateEntityUrl = useContext(UrlGeneratorsContext).generateEntityUrl;
15
15
  var openEntity = useMdmAction('openEntity');
@@ -18,11 +18,15 @@ export var HierarchyNodeTitle = function (_a) {
18
18
  var link = generateEntityUrl({ uiPath: uiPath, uri: entityUri });
19
19
  var showPopper = Boolean(anchorEl) && (Boolean(entityDetails) || isLoading);
20
20
  var handleClick = useCallback(function () {
21
+ if (onOpenEntity) {
22
+ onOpenEntity(entityUri);
23
+ return;
24
+ }
21
25
  openEntity({ uri: entityUri });
22
- }, [openEntity, entityUri]);
26
+ }, [onOpenEntity, openEntity, entityUri]);
23
27
  return (React.createElement(React.Fragment, null,
24
28
  React.createElement("span", { "data-reltio-id": "reltio-hierarchy-node-title", className: classnames(styles.link, (_b = {}, _b[styles.selected] = isSelected, _b), classNames), onMouseEnter: withEntityDetails ? showEntityDetails : undefined, onMouseLeave: withEntityDetails ? hideEntityDetails : undefined },
25
29
  React.createElement(Link, { to: link, onClick: handleClick }, title)),
26
30
  React.createElement(Popper, { anchorEl: anchorEl, className: styles.popper, open: showPopper, modal: false, placement: "top-start" },
27
- React.createElement(ProfileCard, { entity: entityDetails, variant: isLoading ? 'loading' : 'normal' }))));
31
+ React.createElement(ProfileCard, { entity: entityDetails, variant: isLoading ? 'loading' : 'normal', disableEntityLink: Boolean(onOpenEntity) }))));
28
32
  };
@@ -126,6 +126,37 @@ describe('Hierarchy node title tests', function () {
126
126
  }
127
127
  });
128
128
  }); });
129
+ it('should call "onOpenEntity" instead of the mdm action and disable the profile card link', function () { return __awaiter(void 0, void 0, void 0, function () {
130
+ var onOpenEntity, user, tooltip;
131
+ return __generator(this, function (_a) {
132
+ switch (_a.label) {
133
+ case 0:
134
+ onOpenEntity = jest.fn();
135
+ user = setUp({ props: __assign(__assign({}, defaultProps), { onOpenEntity: onOpenEntity }) }).user;
136
+ return [4 /*yield*/, user.click(screen.getByText('Title'))];
137
+ case 1:
138
+ _a.sent();
139
+ expect(onOpenEntity).toHaveBeenCalledWith('entities/123');
140
+ expect(defaultMdmActions.openEntity).not.toHaveBeenCalled();
141
+ return [4 /*yield*/, act(function () { return __awaiter(void 0, void 0, void 0, function () {
142
+ return __generator(this, function (_a) {
143
+ switch (_a.label) {
144
+ case 0: return [4 /*yield*/, resolveGetEntity(entity)];
145
+ case 1:
146
+ _a.sent();
147
+ return [2 /*return*/];
148
+ }
149
+ });
150
+ }); })];
151
+ case 2:
152
+ _a.sent();
153
+ tooltip = screen.getByRole('tooltip');
154
+ within(tooltip).getByText('perfect entity');
155
+ expect(within(tooltip).queryByRole('link')).not.toBeInTheDocument();
156
+ return [2 /*return*/];
157
+ }
158
+ });
159
+ }); });
129
160
  it('should show and hide entity details correctly on node hover', function () { return __awaiter(void 0, void 0, void 0, function () {
130
161
  var user, tooltip;
131
162
  return __generator(this, function (_a) {
@@ -6,6 +6,7 @@ type NodeTitleProps = {
6
6
  anchorEl?: HTMLElement;
7
7
  withEntityDetails?: boolean;
8
8
  classNames?: string;
9
+ onOpenEntity?: (entityUri: string) => void;
9
10
  };
10
- export declare const HierarchyNodeTitle: ({ title, isSelected, entityUri, anchorEl, withEntityDetails, classNames }: NodeTitleProps) => React.JSX.Element;
11
+ export declare const HierarchyNodeTitle: ({ title, isSelected, entityUri, anchorEl, withEntityDetails, classNames, onOpenEntity }: NodeTitleProps) => React.JSX.Element;
11
12
  export {};
@@ -38,7 +38,7 @@ var useEntityDetails_1 = require("./useEntityDetails");
38
38
  var styles_1 = require("./styles");
39
39
  var HierarchyNodeTitle = function (_a) {
40
40
  var _b;
41
- var title = _a.title, isSelected = _a.isSelected, entityUri = _a.entityUri, anchorEl = _a.anchorEl, _c = _a.withEntityDetails, withEntityDetails = _c === void 0 ? true : _c, classNames = _a.classNames;
41
+ var title = _a.title, isSelected = _a.isSelected, entityUri = _a.entityUri, anchorEl = _a.anchorEl, _c = _a.withEntityDetails, withEntityDetails = _c === void 0 ? true : _c, classNames = _a.classNames, onOpenEntity = _a.onOpenEntity;
42
42
  var styles = (0, styles_1.useStyles)();
43
43
  var generateEntityUrl = (0, react_1.useContext)(UrlGeneratorsContext_1.UrlGeneratorsContext).generateEntityUrl;
44
44
  var openEntity = (0, MdmModuleContext_1.useMdmAction)('openEntity');
@@ -47,12 +47,16 @@ var HierarchyNodeTitle = function (_a) {
47
47
  var link = generateEntityUrl({ uiPath: uiPath, uri: entityUri });
48
48
  var showPopper = Boolean(anchorEl) && (Boolean(entityDetails) || isLoading);
49
49
  var handleClick = (0, react_1.useCallback)(function () {
50
+ if (onOpenEntity) {
51
+ onOpenEntity(entityUri);
52
+ return;
53
+ }
50
54
  openEntity({ uri: entityUri });
51
- }, [openEntity, entityUri]);
55
+ }, [onOpenEntity, openEntity, entityUri]);
52
56
  return (react_1.default.createElement(react_1.default.Fragment, null,
53
57
  react_1.default.createElement("span", { "data-reltio-id": "reltio-hierarchy-node-title", className: (0, classnames_1.default)(styles.link, (_b = {}, _b[styles.selected] = isSelected, _b), classNames), onMouseEnter: withEntityDetails ? showEntityDetails : undefined, onMouseLeave: withEntityDetails ? hideEntityDetails : undefined },
54
58
  react_1.default.createElement(Link_1.Link, { to: link, onClick: handleClick }, title)),
55
59
  react_1.default.createElement(Popper_1.Popper, { anchorEl: anchorEl, className: styles.popper, open: showPopper, modal: false, placement: "top-start" },
56
- react_1.default.createElement(ProfileCard_1.ProfileCard, { entity: entityDetails, variant: isLoading ? 'loading' : 'normal' }))));
60
+ react_1.default.createElement(ProfileCard_1.ProfileCard, { entity: entityDetails, variant: isLoading ? 'loading' : 'normal', disableEntityLink: Boolean(onOpenEntity) }))));
57
61
  };
58
62
  exports.HierarchyNodeTitle = HierarchyNodeTitle;
@@ -131,6 +131,37 @@ describe('Hierarchy node title tests', function () {
131
131
  }
132
132
  });
133
133
  }); });
134
+ it('should call "onOpenEntity" instead of the mdm action and disable the profile card link', function () { return __awaiter(void 0, void 0, void 0, function () {
135
+ var onOpenEntity, user, tooltip;
136
+ return __generator(this, function (_a) {
137
+ switch (_a.label) {
138
+ case 0:
139
+ onOpenEntity = jest.fn();
140
+ user = setUp({ props: __assign(__assign({}, defaultProps), { onOpenEntity: onOpenEntity }) }).user;
141
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Title'))];
142
+ case 1:
143
+ _a.sent();
144
+ expect(onOpenEntity).toHaveBeenCalledWith('entities/123');
145
+ expect(defaultMdmActions.openEntity).not.toHaveBeenCalled();
146
+ return [4 /*yield*/, (0, react_2.act)(function () { return __awaiter(void 0, void 0, void 0, function () {
147
+ return __generator(this, function (_a) {
148
+ switch (_a.label) {
149
+ case 0: return [4 /*yield*/, resolveGetEntity(entity)];
150
+ case 1:
151
+ _a.sent();
152
+ return [2 /*return*/];
153
+ }
154
+ });
155
+ }); })];
156
+ case 2:
157
+ _a.sent();
158
+ tooltip = react_2.screen.getByRole('tooltip');
159
+ (0, react_2.within)(tooltip).getByText('perfect entity');
160
+ expect((0, react_2.within)(tooltip).queryByRole('link')).not.toBeInTheDocument();
161
+ return [2 /*return*/];
162
+ }
163
+ });
164
+ }); });
134
165
  it('should show and hide entity details correctly on node hover', function () { return __awaiter(void 0, void 0, void 0, function () {
135
166
  var user, tooltip;
136
167
  return __generator(this, function (_a) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reltio/components",
3
- "version": "1.4.2321",
3
+ "version": "1.4.2322",
4
4
  "license": "SEE LICENSE IN LICENSE FILE",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./index.js",