@reltio/components 1.4.1147 → 1.4.1148

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.
@@ -45,27 +45,42 @@ var constants_1 = require("../../../../constants");
45
45
  var attributesView_1 = require("../../helpers/attributesView");
46
46
  var helpers_1 = require("./helpers");
47
47
  var PinnedAttributesContext_1 = require("../contexts/PinnedAttributesContext");
48
+ var HasDeletionsContext_1 = require("../contexts/HasDeletionsContext");
48
49
  var AttributesList = function (_a) {
49
50
  var attrTypes = _a.attrTypes, entity = _a.entity, parentUri = _a.parentUri, showEmptyEditors = _a.showEmptyEditors, mode = _a.mode, crosswalks = _a.crosswalks, drawLines = _a.drawLines, children = _a.children, className = _a.className, _b = _a.alwaysVisibleTypeUris, alwaysVisibleTypeUris = _b === void 0 ? constants_1.ALWAYS_VISIBLE_TYPE_URIS : _b, onAddAttributes = _a.onAddAttributes, onChangeAttribute = _a.onChangeAttribute, onDeleteAttribute = _a.onDeleteAttribute, additionalControlsRenderer = _a.additionalControlsRenderer, showNonOv = _a.showNonOv;
50
51
  var _c = entity.attributes, attributes = _c === void 0 ? {} : _c;
52
+ var _d = react_1.useState({}), hasDeletionsMap = _d[0], setHasDeletionsMap = _d[1];
53
+ var setHasDeletions = react_1.useCallback(function (attrTypeUri, value) {
54
+ setHasDeletionsMap(function (prevMap) {
55
+ var _a;
56
+ return (__assign(__assign({}, prevMap), (_a = {}, _a[attrTypeUri] = value, _a)));
57
+ });
58
+ }, []);
59
+ react_1.useEffect(function () {
60
+ setHasDeletionsMap({});
61
+ }, [parentUri]);
51
62
  var creatableAttrTypes = react_1.useMemo(function () { return mdm_sdk_1.getCreatableAttributeTypes(mode, attrTypes); }, [attrTypes, mode]);
52
- var moreAttrTypes = helpers_1.getMoreAttrTypes(creatableAttrTypes, entity);
63
+ var moreAttrTypes = helpers_1.getMoreAttrTypes(creatableAttrTypes, entity, showEmptyEditors, hasDeletionsMap);
53
64
  var pinnedAttributes = react_1.useContext(PinnedAttributesContext_1.PinnedAttributesContext);
54
65
  var pagersData = react_1.useMemo(function () { return mdm_sdk_1.getAttributesListForEditMode(attrTypes, mode, entity, showEmptyEditors, showNonOv, pinnedAttributes); }, [attrTypes, mode, entity, showEmptyEditors, showNonOv, pinnedAttributes]);
55
- var _d = react_1.useMemo(function () { return attributesView_1.splitPagersData(alwaysVisibleTypeUris, pagersData); }, [pagersData, alwaysVisibleTypeUris]), alwaysVisiblePagersData = _d[0], regularPagersData = _d[1];
66
+ var _e = react_1.useMemo(function () { return attributesView_1.splitPagersData(alwaysVisibleTypeUris, pagersData); }, [pagersData, alwaysVisibleTypeUris]), alwaysVisiblePagersData = _e[0], regularPagersData = _e[1];
56
67
  var onAddMoreAttributes = react_1.useCallback(function (attributeTypes) {
57
68
  onAddAttributes(attributeTypes.map(function (attributeType) { return ({ attributeType: attributeType, parentUri: parentUri }); }));
58
69
  }, [onAddAttributes, parentUri]);
59
70
  var decoratorProps = {
60
71
  enabled: drawLines
61
72
  };
73
+ var hasDeletionsContextValue = react_1.useMemo(function () { return ({
74
+ hasDeletionsMap: hasDeletionsMap,
75
+ setHasDeletions: setHasDeletions
76
+ }); }, [hasDeletionsMap, setHasDeletions]);
62
77
  return (react_1.default.createElement("div", { className: className },
63
78
  children && react_1.default.createElement(BranchDecorator_1.default, __assign({}, decoratorProps), children),
64
- react_1.default.createElement(BranchDecorator_1.default, __assign({}, decoratorProps, { plain: true }), creatableAttrTypes.length > 0 && (react_1.default.createElement(MoreAttributesButton_1.default, { label: ui_i18n_1.default.text('More attributes'), onApply: onAddMoreAttributes, dense: drawLines, data: moreAttrTypes }))),
65
- regularPagersData.concat(alwaysVisiblePagersData).map(function (_a) {
79
+ react_1.default.createElement(BranchDecorator_1.default, __assign({}, decoratorProps, { plain: true }), moreAttrTypes.length > 0 && (react_1.default.createElement(MoreAttributesButton_1.default, { label: ui_i18n_1.default.text('More attributes'), onApply: onAddMoreAttributes, dense: drawLines, data: moreAttrTypes }))),
80
+ react_1.default.createElement(HasDeletionsContext_1.HasDeletionsContext.Provider, { value: hasDeletionsContextValue }, regularPagersData.concat(alwaysVisiblePagersData).map(function (_a) {
66
81
  var attrType = _a.attrType, values = _a.values;
67
82
  return (react_1.default.createElement(AttributesPager_1.default, { key: attrType.uri, attributeType: attrType, drawLines: drawLines, values: values, paging: ramda_1.path(['paging', attrType.uri], attributes), parentUri: parentUri, showEmptyEditors: showEmptyEditors, mode: mode, crosswalks: crosswalks, onAddAttributes: onAddAttributes, onChangeAttribute: onChangeAttribute, onDeleteAttribute: onDeleteAttribute, additionalControlsRenderer: additionalControlsRenderer, showNonOv: showNonOv }));
68
- })));
83
+ }))));
69
84
  };
70
85
  AttributesList.propTypes = {
71
86
  attrTypes: prop_types_1.default.array,
@@ -1,2 +1,4 @@
1
1
  import { AttributeType, Entity } from '@reltio/mdm-sdk';
2
- export declare const getMoreAttrTypes: (attrTypes: AttributeType[], entity: Entity) => AttributeType[];
2
+ export declare const getMoreAttrTypes: (attrTypes: AttributeType[], entity: Entity, showEmptyEditors?: boolean, hasDeletionsMap?: {
3
+ [attrTypeUri: string]: boolean;
4
+ }) => AttributeType[];
@@ -14,12 +14,12 @@ var getSource = function (attrType, entity) {
14
14
  var getNameProp = function (attrType) {
15
15
  return mdm_sdk_1.isSpecialAttribute(attrType) ? 'uri' : 'name';
16
16
  };
17
- var getMoreAttrTypes = function (attrTypes, entity) {
17
+ var getMoreAttrTypes = function (attrTypes, entity, showEmptyEditors, hasDeletionsMap) {
18
18
  return attrTypes.filter(function (attrType) {
19
19
  var source = getSource(attrType, entity);
20
20
  var nameProp = getNameProp(attrType);
21
21
  return !((attrType.singleValue || mdm_sdk_1.isRoleAttrType(attrType) || mdm_sdk_1.isTagAttrType(attrType)) &&
22
- ramda_1.has(attrType[nameProp])(source));
22
+ (ramda_1.has(attrType[nameProp])(source) || (showEmptyEditors && !(hasDeletionsMap === null || hasDeletionsMap === void 0 ? void 0 : hasDeletionsMap[attrType.uri]))));
23
23
  });
24
24
  };
25
25
  exports.getMoreAttrTypes = getMoreAttrTypes;
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { AttributeType, Mode, AttributeItem } from '@reltio/mdm-sdk';
3
3
  declare type Props = {
4
4
  values: string[] | number[];
@@ -9,6 +9,9 @@ declare type Props = {
9
9
  onDeleteAttribute: (param: AttributeItem) => void;
10
10
  onChangeAttribute: (param: AttributeItem) => void;
11
11
  showEmptyEditors?: boolean;
12
+ hasDeletions?: boolean;
13
+ setHasDeletions?: (attrTypeUri: string, value: boolean) => void;
12
14
  };
13
- declare const SpecialRenderer: ({ values, attributeType, parentUri, mode, errorMessage, onDeleteAttribute, onChangeAttribute, showEmptyEditors, ...otherProps }: Props) => JSX.Element;
14
- export default SpecialRenderer;
15
+ export declare const SpecialRenderer: ({ values, attributeType, parentUri, mode, errorMessage, onDeleteAttribute, onChangeAttribute, showEmptyEditors, hasDeletions: hasDeletionsProp, setHasDeletions, ...otherProps }: Props) => JSX.Element;
16
+ declare const _default: React.ComponentType<Props> | ((props: any) => JSX.Element);
17
+ export default _default;
@@ -44,6 +44,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
44
44
  return (mod && mod.__esModule) ? mod : { "default": mod };
45
45
  };
46
46
  Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.SpecialRenderer = void 0;
47
48
  var react_1 = __importStar(require("react"));
48
49
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
49
50
  var ramda_1 = require("ramda");
@@ -55,16 +56,26 @@ var Attribute_1 = __importDefault(require("../AttributesFactory/Attribute"));
55
56
  var Roles_1 = require("../Roles/Roles");
56
57
  var Tags_1 = __importDefault(require("../Tags"));
57
58
  var styles_1 = require("./styles");
59
+ var HasDeletionsContext_1 = require("../contexts/HasDeletionsContext");
60
+ var HOCs_1 = require("../../../../HOCs");
58
61
  var SpecialRenderer = function (_a) {
59
- var values = _a.values, attributeType = _a.attributeType, parentUri = _a.parentUri, mode = _a.mode, errorMessage = _a.errorMessage, onDeleteAttribute = _a.onDeleteAttribute, onChangeAttribute = _a.onChangeAttribute, showEmptyEditors = _a.showEmptyEditors, otherProps = __rest(_a, ["values", "attributeType", "parentUri", "mode", "errorMessage", "onDeleteAttribute", "onChangeAttribute", "showEmptyEditors"]);
62
+ var values = _a.values, attributeType = _a.attributeType, parentUri = _a.parentUri, mode = _a.mode, errorMessage = _a.errorMessage, onDeleteAttribute = _a.onDeleteAttribute, onChangeAttribute = _a.onChangeAttribute, showEmptyEditors = _a.showEmptyEditors, hasDeletionsProp = _a.hasDeletions, setHasDeletions = _a.setHasDeletions, otherProps = __rest(_a, ["values", "attributeType", "parentUri", "mode", "errorMessage", "onDeleteAttribute", "onChangeAttribute", "showEmptyEditors", "hasDeletions", "setHasDeletions"]);
60
63
  var styles = styles_1.useStyles();
61
64
  var label = attributeType.label, isRequired = attributeType.required, cardinality = attributeType.cardinality;
62
65
  var isEditableMode = mdm_sdk_1.isEditableMode(mode);
63
- var _b = react_1.useState(false), hadDeletions = _b[0], setHadDeletions = _b[1];
66
+ var _b = react_1.useState(false), hasDeletionsState = _b[0], setHasDeletionsState = _b[1];
67
+ var updateHasDeletions = react_1.useCallback(function (value) {
68
+ setHasDeletionsState(value);
69
+ setHasDeletions === null || setHasDeletions === void 0 ? void 0 : setHasDeletions(attributeType.uri, value);
70
+ }, [attributeType.uri, setHasDeletions]);
71
+ var hasDeletions = hasDeletionsProp !== undefined ? hasDeletionsProp : hasDeletionsState;
64
72
  // eslint-disable-next-line react-hooks/exhaustive-deps
65
- var onDelete = react_1.useCallback(ramda_1.pipe(onDeleteAttribute, ramda_1.T, setHadDeletions), [onDeleteAttribute, setHadDeletions]);
73
+ var onDelete = react_1.useCallback(ramda_1.pipe(onDeleteAttribute, ramda_1.T, updateHasDeletions), [
74
+ onDeleteAttribute,
75
+ updateHasDeletions
76
+ ]);
66
77
  var isEmptyValues = mdm_sdk_1.isEmptyValue(values);
67
- var showEmpty = !hadDeletions && showEmptyEditors && isEmptyValues;
78
+ var showEmpty = !hasDeletions && showEmptyEditors && isEmptyValues;
68
79
  var emptyEditorValue = react_1.useRef(mdm_sdk_1.createNewAttribute({
69
80
  parentUri: parentUri,
70
81
  attributeType: attributeType
@@ -91,4 +102,12 @@ var SpecialRenderer = function (_a) {
91
102
  isEditableMode && react_1.default.createElement(ErrorMessage_1.default, { message: errorMessage }),
92
103
  react_1.default.createElement(Box_1.default, { className: styles.attributesWrapper }, renderValue())));
93
104
  };
94
- exports.default = SpecialRenderer;
105
+ exports.SpecialRenderer = SpecialRenderer;
106
+ exports.default = HOCs_1.withContext(HasDeletionsContext_1.HasDeletionsContext, function (contextValue, _a) {
107
+ var attributeType = _a.attributeType;
108
+ var _b = contextValue || {}, hasDeletionsMap = _b.hasDeletionsMap, setHasDeletions = _b.setHasDeletions;
109
+ return {
110
+ hasDeletions: hasDeletionsMap ? Boolean(hasDeletionsMap[attributeType === null || attributeType === void 0 ? void 0 : attributeType.uri]) : undefined,
111
+ setHasDeletions: setHasDeletions
112
+ };
113
+ }, exports.SpecialRenderer);
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ export declare const HasDeletionsContext: React.Context<{
3
+ hasDeletionsMap: {
4
+ [attrTypeUri: string]: boolean;
5
+ };
6
+ setHasDeletions: (attrTypeUri: string, value: boolean) => void;
7
+ }>;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.HasDeletionsContext = void 0;
7
+ var react_1 = __importDefault(require("react"));
8
+ exports.HasDeletionsContext = react_1.default.createContext(null);
@@ -9,7 +9,7 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
- import React, { memo, useCallback, useContext, useMemo } from 'react';
12
+ import React, { memo, useCallback, useContext, useMemo, useState, useEffect } from 'react';
13
13
  import PropTypes from 'prop-types';
14
14
  import i18n from 'ui-i18n';
15
15
  import { getCreatableAttributeTypes, getAttributesListForEditMode, ModeType } from '@reltio/mdm-sdk';
@@ -21,27 +21,42 @@ import { ALWAYS_VISIBLE_TYPE_URIS } from '../../../../constants';
21
21
  import { splitPagersData } from '../../helpers/attributesView';
22
22
  import { getMoreAttrTypes } from './helpers';
23
23
  import { PinnedAttributesContext } from '../contexts/PinnedAttributesContext';
24
+ import { HasDeletionsContext } from '../contexts/HasDeletionsContext';
24
25
  var AttributesList = function (_a) {
25
26
  var attrTypes = _a.attrTypes, entity = _a.entity, parentUri = _a.parentUri, showEmptyEditors = _a.showEmptyEditors, mode = _a.mode, crosswalks = _a.crosswalks, drawLines = _a.drawLines, children = _a.children, className = _a.className, _b = _a.alwaysVisibleTypeUris, alwaysVisibleTypeUris = _b === void 0 ? ALWAYS_VISIBLE_TYPE_URIS : _b, onAddAttributes = _a.onAddAttributes, onChangeAttribute = _a.onChangeAttribute, onDeleteAttribute = _a.onDeleteAttribute, additionalControlsRenderer = _a.additionalControlsRenderer, showNonOv = _a.showNonOv;
26
27
  var _c = entity.attributes, attributes = _c === void 0 ? {} : _c;
28
+ var _d = useState({}), hasDeletionsMap = _d[0], setHasDeletionsMap = _d[1];
29
+ var setHasDeletions = useCallback(function (attrTypeUri, value) {
30
+ setHasDeletionsMap(function (prevMap) {
31
+ var _a;
32
+ return (__assign(__assign({}, prevMap), (_a = {}, _a[attrTypeUri] = value, _a)));
33
+ });
34
+ }, []);
35
+ useEffect(function () {
36
+ setHasDeletionsMap({});
37
+ }, [parentUri]);
27
38
  var creatableAttrTypes = useMemo(function () { return getCreatableAttributeTypes(mode, attrTypes); }, [attrTypes, mode]);
28
- var moreAttrTypes = getMoreAttrTypes(creatableAttrTypes, entity);
39
+ var moreAttrTypes = getMoreAttrTypes(creatableAttrTypes, entity, showEmptyEditors, hasDeletionsMap);
29
40
  var pinnedAttributes = useContext(PinnedAttributesContext);
30
41
  var pagersData = useMemo(function () { return getAttributesListForEditMode(attrTypes, mode, entity, showEmptyEditors, showNonOv, pinnedAttributes); }, [attrTypes, mode, entity, showEmptyEditors, showNonOv, pinnedAttributes]);
31
- var _d = useMemo(function () { return splitPagersData(alwaysVisibleTypeUris, pagersData); }, [pagersData, alwaysVisibleTypeUris]), alwaysVisiblePagersData = _d[0], regularPagersData = _d[1];
42
+ var _e = useMemo(function () { return splitPagersData(alwaysVisibleTypeUris, pagersData); }, [pagersData, alwaysVisibleTypeUris]), alwaysVisiblePagersData = _e[0], regularPagersData = _e[1];
32
43
  var onAddMoreAttributes = useCallback(function (attributeTypes) {
33
44
  onAddAttributes(attributeTypes.map(function (attributeType) { return ({ attributeType: attributeType, parentUri: parentUri }); }));
34
45
  }, [onAddAttributes, parentUri]);
35
46
  var decoratorProps = {
36
47
  enabled: drawLines
37
48
  };
49
+ var hasDeletionsContextValue = useMemo(function () { return ({
50
+ hasDeletionsMap: hasDeletionsMap,
51
+ setHasDeletions: setHasDeletions
52
+ }); }, [hasDeletionsMap, setHasDeletions]);
38
53
  return (React.createElement("div", { className: className },
39
54
  children && React.createElement(BranchDecorator, __assign({}, decoratorProps), children),
40
- React.createElement(BranchDecorator, __assign({}, decoratorProps, { plain: true }), creatableAttrTypes.length > 0 && (React.createElement(MoreAttributesButton, { label: i18n.text('More attributes'), onApply: onAddMoreAttributes, dense: drawLines, data: moreAttrTypes }))),
41
- regularPagersData.concat(alwaysVisiblePagersData).map(function (_a) {
55
+ React.createElement(BranchDecorator, __assign({}, decoratorProps, { plain: true }), moreAttrTypes.length > 0 && (React.createElement(MoreAttributesButton, { label: i18n.text('More attributes'), onApply: onAddMoreAttributes, dense: drawLines, data: moreAttrTypes }))),
56
+ React.createElement(HasDeletionsContext.Provider, { value: hasDeletionsContextValue }, regularPagersData.concat(alwaysVisiblePagersData).map(function (_a) {
42
57
  var attrType = _a.attrType, values = _a.values;
43
58
  return (React.createElement(AttributesPager, { key: attrType.uri, attributeType: attrType, drawLines: drawLines, values: values, paging: path(['paging', attrType.uri], attributes), parentUri: parentUri, showEmptyEditors: showEmptyEditors, mode: mode, crosswalks: crosswalks, onAddAttributes: onAddAttributes, onChangeAttribute: onChangeAttribute, onDeleteAttribute: onDeleteAttribute, additionalControlsRenderer: additionalControlsRenderer, showNonOv: showNonOv }));
44
- })));
59
+ }))));
45
60
  };
46
61
  AttributesList.propTypes = {
47
62
  attrTypes: PropTypes.array,
@@ -1,2 +1,4 @@
1
1
  import { AttributeType, Entity } from '@reltio/mdm-sdk';
2
- export declare const getMoreAttrTypes: (attrTypes: AttributeType[], entity: Entity) => AttributeType[];
2
+ export declare const getMoreAttrTypes: (attrTypes: AttributeType[], entity: Entity, showEmptyEditors?: boolean, hasDeletionsMap?: {
3
+ [attrTypeUri: string]: boolean;
4
+ }) => AttributeType[];
@@ -11,11 +11,11 @@ var getSource = function (attrType, entity) {
11
11
  var getNameProp = function (attrType) {
12
12
  return isSpecialAttribute(attrType) ? 'uri' : 'name';
13
13
  };
14
- export var getMoreAttrTypes = function (attrTypes, entity) {
14
+ export var getMoreAttrTypes = function (attrTypes, entity, showEmptyEditors, hasDeletionsMap) {
15
15
  return attrTypes.filter(function (attrType) {
16
16
  var source = getSource(attrType, entity);
17
17
  var nameProp = getNameProp(attrType);
18
18
  return !((attrType.singleValue || isRoleAttrType(attrType) || isTagAttrType(attrType)) &&
19
- has(attrType[nameProp])(source));
19
+ (has(attrType[nameProp])(source) || (showEmptyEditors && !(hasDeletionsMap === null || hasDeletionsMap === void 0 ? void 0 : hasDeletionsMap[attrType.uri]))));
20
20
  });
21
21
  };
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { AttributeType, Mode, AttributeItem } from '@reltio/mdm-sdk';
3
3
  declare type Props = {
4
4
  values: string[] | number[];
@@ -9,6 +9,9 @@ declare type Props = {
9
9
  onDeleteAttribute: (param: AttributeItem) => void;
10
10
  onChangeAttribute: (param: AttributeItem) => void;
11
11
  showEmptyEditors?: boolean;
12
+ hasDeletions?: boolean;
13
+ setHasDeletions?: (attrTypeUri: string, value: boolean) => void;
12
14
  };
13
- declare const SpecialRenderer: ({ values, attributeType, parentUri, mode, errorMessage, onDeleteAttribute, onChangeAttribute, showEmptyEditors, ...otherProps }: Props) => JSX.Element;
14
- export default SpecialRenderer;
15
+ export declare const SpecialRenderer: ({ values, attributeType, parentUri, mode, errorMessage, onDeleteAttribute, onChangeAttribute, showEmptyEditors, hasDeletions: hasDeletionsProp, setHasDeletions, ...otherProps }: Props) => JSX.Element;
16
+ declare const _default: React.ComponentType<Props> | ((props: any) => JSX.Element);
17
+ export default _default;
@@ -31,16 +31,26 @@ import Attribute from '../AttributesFactory/Attribute';
31
31
  import { Roles } from '../Roles/Roles';
32
32
  import Tags from '../Tags';
33
33
  import { useStyles } from './styles';
34
- var SpecialRenderer = function (_a) {
35
- var values = _a.values, attributeType = _a.attributeType, parentUri = _a.parentUri, mode = _a.mode, errorMessage = _a.errorMessage, onDeleteAttribute = _a.onDeleteAttribute, onChangeAttribute = _a.onChangeAttribute, showEmptyEditors = _a.showEmptyEditors, otherProps = __rest(_a, ["values", "attributeType", "parentUri", "mode", "errorMessage", "onDeleteAttribute", "onChangeAttribute", "showEmptyEditors"]);
34
+ import { HasDeletionsContext } from '../contexts/HasDeletionsContext';
35
+ import { withContext } from '../../../../HOCs';
36
+ export var SpecialRenderer = function (_a) {
37
+ var values = _a.values, attributeType = _a.attributeType, parentUri = _a.parentUri, mode = _a.mode, errorMessage = _a.errorMessage, onDeleteAttribute = _a.onDeleteAttribute, onChangeAttribute = _a.onChangeAttribute, showEmptyEditors = _a.showEmptyEditors, hasDeletionsProp = _a.hasDeletions, setHasDeletions = _a.setHasDeletions, otherProps = __rest(_a, ["values", "attributeType", "parentUri", "mode", "errorMessage", "onDeleteAttribute", "onChangeAttribute", "showEmptyEditors", "hasDeletions", "setHasDeletions"]);
36
38
  var styles = useStyles();
37
39
  var label = attributeType.label, isRequired = attributeType.required, cardinality = attributeType.cardinality;
38
40
  var isEditableMode = checkIsEditableMode(mode);
39
- var _b = useState(false), hadDeletions = _b[0], setHadDeletions = _b[1];
41
+ var _b = useState(false), hasDeletionsState = _b[0], setHasDeletionsState = _b[1];
42
+ var updateHasDeletions = useCallback(function (value) {
43
+ setHasDeletionsState(value);
44
+ setHasDeletions === null || setHasDeletions === void 0 ? void 0 : setHasDeletions(attributeType.uri, value);
45
+ }, [attributeType.uri, setHasDeletions]);
46
+ var hasDeletions = hasDeletionsProp !== undefined ? hasDeletionsProp : hasDeletionsState;
40
47
  // eslint-disable-next-line react-hooks/exhaustive-deps
41
- var onDelete = useCallback(pipe(onDeleteAttribute, T, setHadDeletions), [onDeleteAttribute, setHadDeletions]);
48
+ var onDelete = useCallback(pipe(onDeleteAttribute, T, updateHasDeletions), [
49
+ onDeleteAttribute,
50
+ updateHasDeletions
51
+ ]);
42
52
  var isEmptyValues = isEmptyValue(values);
43
- var showEmpty = !hadDeletions && showEmptyEditors && isEmptyValues;
53
+ var showEmpty = !hasDeletions && showEmptyEditors && isEmptyValues;
44
54
  var emptyEditorValue = useRef(createNewAttribute({
45
55
  parentUri: parentUri,
46
56
  attributeType: attributeType
@@ -67,4 +77,11 @@ var SpecialRenderer = function (_a) {
67
77
  isEditableMode && React.createElement(ErrorMessage, { message: errorMessage }),
68
78
  React.createElement(Box, { className: styles.attributesWrapper }, renderValue())));
69
79
  };
70
- export default SpecialRenderer;
80
+ export default withContext(HasDeletionsContext, function (contextValue, _a) {
81
+ var attributeType = _a.attributeType;
82
+ var _b = contextValue || {}, hasDeletionsMap = _b.hasDeletionsMap, setHasDeletions = _b.setHasDeletions;
83
+ return {
84
+ hasDeletions: hasDeletionsMap ? Boolean(hasDeletionsMap[attributeType === null || attributeType === void 0 ? void 0 : attributeType.uri]) : undefined,
85
+ setHasDeletions: setHasDeletions
86
+ };
87
+ }, SpecialRenderer);
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ export declare const HasDeletionsContext: React.Context<{
3
+ hasDeletionsMap: {
4
+ [attrTypeUri: string]: boolean;
5
+ };
6
+ setHasDeletions: (attrTypeUri: string, value: boolean) => void;
7
+ }>;
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export var HasDeletionsContext = React.createContext(null);
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@reltio/components",
3
- "version": "1.4.1147",
3
+ "version": "1.4.1148",
4
4
  "license": "SEE LICENSE IN LICENSE FILE",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./esm/index.js",
7
7
  "dependencies": {
8
8
  "@date-io/moment": "^1.3.5",
9
9
  "@react-google-maps/api": "2.7.0",
10
- "@reltio/mdm-module": "^1.4.1147",
11
- "@reltio/mdm-sdk": "^1.4.1147",
10
+ "@reltio/mdm-module": "^1.4.1148",
11
+ "@reltio/mdm-sdk": "^1.4.1148",
12
12
  "classnames": "^2.2.5",
13
13
  "d3-cloud": "^1.2.5",
14
14
  "d3-geo": "^2.0.1",