@reltio/components 1.4.913 → 1.4.917

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.
Files changed (67) hide show
  1. package/cjs/components/MergeButton/MergeButton.d.ts +1 -0
  2. package/cjs/components/MergeButton/MergeButton.js +3 -2
  3. package/cjs/components/SideIconPanel/SideButtonsPanel.d.ts +3 -3
  4. package/cjs/components/SideIconPanel/SideButtonsPanel.js +3 -3
  5. package/cjs/components/SidePanel/SidePanelContentHeader/SidePanelContentHeader.d.ts +3 -2
  6. package/cjs/components/SidePanel/SidePanelContentHeader/SidePanelContentHeader.js +6 -5
  7. package/cjs/components/attributes/AttributesView/index.js +1 -1
  8. package/cjs/components/attributes/ImageAttributesLine/ImageAttributesLine.d.ts +7 -2
  9. package/cjs/components/attributes/ImageAttributesLine/ImageAttributesLine.js +15 -1
  10. package/cjs/components/attributes/editMode/AttributesPager/AttributesPager.js +1 -1
  11. package/cjs/components/attributes/editMode/ImageAttributesLine/ImageAttributesLine.d.ts +8 -2
  12. package/cjs/components/attributes/editMode/ImageAttributesLine/ImageAttributesLine.js +5 -5
  13. package/cjs/components/attributes/editMode/SimpleAttributeEditor/selectors/helpers/parents.js +3 -1
  14. package/cjs/components/attributes/readMode/AttributesPager/AttributesPager.js +1 -1
  15. package/cjs/components/attributes/readMode/ImageAttributesLine/ImageAttributesLine.d.ts +7 -2
  16. package/cjs/components/attributes/readMode/ImageAttributesLine/ImageAttributesLine.js +2 -2
  17. package/cjs/components/history/HistoryFilterButton/HistoryFilterButton.js +7 -1
  18. package/cjs/components/history/HistoryTree/HistoryTree.js +11 -1
  19. package/cjs/components/history/hooks/useHistory.d.ts +2 -2
  20. package/cjs/components/history/hooks/useHistory.js +20 -6
  21. package/cjs/components/history/hooks/useHistoryDiff.d.ts +2 -0
  22. package/cjs/components/history/hooks/useHistoryDiff.js +62 -0
  23. package/cjs/components/history/hooks/useHistoryWithTotal.d.ts +3 -2
  24. package/cjs/components/history/hooks/useHistoryWithTotal.js +6 -6
  25. package/cjs/components/history/index.d.ts +1 -0
  26. package/cjs/components/history/index.js +3 -1
  27. package/cjs/components/history/utils/filters.d.ts +3 -0
  28. package/cjs/components/history/utils/filters.js +67 -0
  29. package/cjs/components/index.d.ts +1 -0
  30. package/cjs/components/index.js +5 -3
  31. package/cjs/contexts/HistoryAppearanceContext/index.js +3 -1
  32. package/cjs/hooks/useMergeAllRequest.d.ts +2 -1
  33. package/cjs/hooks/useMergeAllRequest.js +6 -3
  34. package/esm/components/MergeButton/MergeButton.d.ts +1 -0
  35. package/esm/components/MergeButton/MergeButton.js +3 -2
  36. package/esm/components/SideIconPanel/SideButtonsPanel.d.ts +3 -3
  37. package/esm/components/SideIconPanel/SideButtonsPanel.js +3 -3
  38. package/esm/components/SidePanel/SidePanelContentHeader/SidePanelContentHeader.d.ts +3 -2
  39. package/esm/components/SidePanel/SidePanelContentHeader/SidePanelContentHeader.js +6 -5
  40. package/esm/components/attributes/AttributesView/index.js +1 -1
  41. package/esm/components/attributes/ImageAttributesLine/ImageAttributesLine.d.ts +7 -2
  42. package/esm/components/attributes/ImageAttributesLine/ImageAttributesLine.js +15 -1
  43. package/esm/components/attributes/editMode/AttributesPager/AttributesPager.js +1 -1
  44. package/esm/components/attributes/editMode/ImageAttributesLine/ImageAttributesLine.d.ts +8 -2
  45. package/esm/components/attributes/editMode/ImageAttributesLine/ImageAttributesLine.js +6 -6
  46. package/esm/components/attributes/editMode/SimpleAttributeEditor/selectors/helpers/parents.js +3 -1
  47. package/esm/components/attributes/readMode/AttributesPager/AttributesPager.js +1 -1
  48. package/esm/components/attributes/readMode/ImageAttributesLine/ImageAttributesLine.d.ts +7 -2
  49. package/esm/components/attributes/readMode/ImageAttributesLine/ImageAttributesLine.js +2 -2
  50. package/esm/components/history/HistoryFilterButton/HistoryFilterButton.js +8 -2
  51. package/esm/components/history/HistoryTree/HistoryTree.js +12 -2
  52. package/esm/components/history/hooks/useHistory.d.ts +2 -2
  53. package/esm/components/history/hooks/useHistory.js +20 -6
  54. package/esm/components/history/hooks/useHistoryDiff.d.ts +2 -0
  55. package/esm/components/history/hooks/useHistoryDiff.js +39 -0
  56. package/esm/components/history/hooks/useHistoryWithTotal.d.ts +3 -2
  57. package/esm/components/history/hooks/useHistoryWithTotal.js +6 -6
  58. package/esm/components/history/index.d.ts +1 -0
  59. package/esm/components/history/index.js +1 -0
  60. package/esm/components/history/utils/filters.d.ts +3 -0
  61. package/esm/components/history/utils/filters.js +60 -0
  62. package/esm/components/index.d.ts +1 -0
  63. package/esm/components/index.js +1 -0
  64. package/esm/contexts/HistoryAppearanceContext/index.js +3 -1
  65. package/esm/hooks/useMergeAllRequest.d.ts +2 -1
  66. package/esm/hooks/useMergeAllRequest.js +6 -3
  67. package/package.json +3 -3
@@ -0,0 +1,67 @@
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.isDateRangeValid = exports.buildHistoryFilterString = void 0;
7
+ var moment_1 = __importDefault(require("moment"));
8
+ var ramda_1 = require("ramda");
9
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
10
+ var HistoryFilter_1 = require("../types/HistoryFilter");
11
+ var ActivityTypes_1 = require("../../activityLog/types/ActivityTypes");
12
+ var types_1 = require("../../../types");
13
+ var wrapInBrackets = function (str) { return "(" + str + ")"; };
14
+ var multiValueFilter = function (filterClauseFn) { return ramda_1.pipe(ramda_1.map(filterClauseFn), ramda_1.join(' or ')); };
15
+ var durationToTimestamp = function (period) {
16
+ var amount = period[0], unit = period[1];
17
+ return moment_1.default().subtract(amount, unit).valueOf();
18
+ };
19
+ var convertHistoryTypes = ramda_1.chain(ramda_1.cond([
20
+ [
21
+ ramda_1.equals(HistoryFilter_1.HistoryActivityType.MERGE),
22
+ function () { return [
23
+ ActivityTypes_1.ActivityTypes.ENTITIES_MERGED,
24
+ ActivityTypes_1.ActivityTypes.ENTITIES_MERGED_MANUALLY,
25
+ ActivityTypes_1.ActivityTypes.ENTITIES_MERGED_ON_THE_FLY
26
+ ]; }
27
+ ],
28
+ [ramda_1.equals(HistoryFilter_1.HistoryActivityType.UNMERGE), function () { return [ActivityTypes_1.ActivityTypes.ENTITIES_SPLITTED]; }],
29
+ [ramda_1.equals(HistoryFilter_1.HistoryActivityType.UPDATE), function () { return [ActivityTypes_1.ActivityTypes.ENTITY_CHANGED]; }]
30
+ ]));
31
+ var buildActivityFilterClause = ramda_1.pipe(ramda_1.defaultTo([]), convertHistoryTypes, ramda_1.concat([ActivityTypes_1.ActivityTypes.ENTITY_CREATED, ActivityTypes_1.ActivityTypes.ENTITY_REMOVED, ActivityTypes_1.ActivityTypes.ENTITY_LOST_MERGE]), multiValueFilter(function (value) { return "equals(type, '" + value + "')"; }));
32
+ var buildUserFilterClause = function (user) { return "equals(user, '" + mdm_sdk_1.escapeQueryValue(user) + "')"; };
33
+ var buildAttributeFilterClause = function (attribute) { return "changes(" + mdm_sdk_1.escapeQueryValue(attribute.value) + ")"; };
34
+ var buildDateRangeFilterClause = function (_a) {
35
+ var type = _a.type, period = _a.period;
36
+ switch (type) {
37
+ case types_1.DateRangeTypes.WITHIN: {
38
+ return "gte(timestamp, " + durationToTimestamp(period) + ")";
39
+ }
40
+ case types_1.DateRangeTypes.AGO: {
41
+ return "lte(timestamp, " + durationToTimestamp(period) + ")";
42
+ }
43
+ case types_1.DateRangeTypes.BETWEEN: {
44
+ var start = period[0], end = period[1];
45
+ return "gte(timestamp, " + start.valueOf() + ") and lte(timestamp, " + moment_1.default(end).endOf('date').valueOf() + ")";
46
+ }
47
+ default: {
48
+ return '';
49
+ }
50
+ }
51
+ };
52
+ exports.buildHistoryFilterString = ramda_1.pipe(ramda_1.defaultTo({}), ramda_1.reject(mdm_sdk_1.isEmptyValue), ramda_1.evolve({
53
+ users: multiValueFilter(buildUserFilterClause),
54
+ attributes: multiValueFilter(buildAttributeFilterClause),
55
+ dateRange: buildDateRangeFilterClause
56
+ }), ramda_1.over(ramda_1.lensProp('activities'), buildActivityFilterClause), ramda_1.values, ramda_1.reject(mdm_sdk_1.isEmptyValue), ramda_1.append("not equals(user, 'collaboration-service')"), ramda_1.map(wrapInBrackets), ramda_1.join(' and '));
57
+ var isDateRangeValid = function (value) {
58
+ if (value.type === types_1.DateRangeTypes.AGO || value.type === types_1.DateRangeTypes.WITHIN) {
59
+ var _a = value.period, amount = _a[0], unit = _a[1];
60
+ return ramda_1.type(amount) === 'Number' && ramda_1.type(unit) === 'String' && amount > 0;
61
+ }
62
+ else if (value.type === types_1.DateRangeTypes.BETWEEN) {
63
+ var _b = value.period, startDate = _b[0], endDate = _b[1];
64
+ return startDate instanceof Date && endDate instanceof Date;
65
+ }
66
+ };
67
+ exports.isDateRangeValid = isDateRangeValid;
@@ -17,6 +17,7 @@ export { default as EditableAttribute } from './attributes/editMode/AttributesFa
17
17
  export { default as ReadOnlyAttributeValuesBlock } from './attributes/readMode/AttributeValuesBlock/AttributeValuesBlock';
18
18
  export { default as ReadOnlyAttributesList } from './attributes/readMode/AttributesList';
19
19
  export { default as ImageAttributesLine } from './attributes/readMode/ImageAttributesLine';
20
+ export { default as EditableImageAttributesLine } from './attributes/editMode/ImageAttributesLine';
20
21
  export { default as NestedAttribute } from './attributes/readMode/NestedAttribute';
21
22
  export { default as ReferenceAttribute } from './attributes/readMode/ReferenceAttribute';
22
23
  export { default as SimpleAttribute } from './attributes/readMode/SimpleAttribute';
@@ -13,9 +13,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  return (mod && mod.__esModule) ? mod : { "default": mod };
14
14
  };
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.EntityTypeIcon = exports.EntityTypeBadge = exports.EntityAvatar = exports.EMPTY_STATE_VARIANTS = exports.EMPTY_STATE_ICONS = exports.EmptyState = exports.NoResults = exports.NoData = exports.DropDownSelector = exports.DropDownMenuButton = exports.Drawer = exports.DataTypeValue = exports.ConnectionRelationTypeSelector = exports.ConfigureColumnsPopup = exports.MenuWithPopper = exports.DropdownIndicatorWithIconButton = exports.DropdownIndicator = exports.CommentsContainer = exports.ColorBar = exports.CollapseButton = exports.CollaborationItem = exports.ClickAwayProvider = exports.BasicViewHeader = exports.BasicViewContent = exports.BasicView = exports.ProfileBandNavigation = exports.AvatarWithFallback = exports.AutoSizeList = exports.ReadOnlyAttributesPager = exports.SimpleAttribute = exports.ReferenceAttribute = exports.NestedAttribute = exports.ImageAttributesLine = exports.ReadOnlyAttributesList = exports.ReadOnlyAttributeValuesBlock = exports.EditableAttribute = exports.ReadOnlyAttribute = exports.CardinalityMessage = exports.AttributesPager = exports.SimpleAttributeEditor = exports.RelationTypeSelector = exports.ReferenceAttributeEditor = exports.NestedAttributeEditor = exports.MoreAttributesButton = exports.EntitySelector = exports.EntityCreator = exports.AttributesList = exports.BranchDecorator = exports.AttributesView = exports.AttributeListItem = void 0;
17
- exports.SimpleDropDownSelector = exports.SidePanelContentHeader = exports.SidePanel = exports.SideButtonsPanel = exports.SelectorWithOnlyOptionAutoSelect = exports.SelectionPopupPopper = exports.SelectionPopup = exports.useKeyboardNavigation = exports.WhiteSearchInput = exports.SearchInput = exports.ScoreLabel = exports.Score = exports.ResizablePanes = exports.ReltioGridLayout = exports.ReactSortableTreeUtils = exports.ReactSortableTreeHandlers = exports.ReactSortableTree = exports.ReactSelectOptionFilters = exports.MultiSelect = exports.QueryBuilderRowsGroup = exports.QueryBuilderRow = exports.ProfileCard = exports.ProfileBand = exports.PotentialMatchReviewCard = exports.PopupWithArrow = exports.Popper = exports.MultipleInput = exports.ModeSwitcherSelect = exports.ModeSwitcher = exports.TransitiveMatchBlock = exports.SimpleMatchRulesBuilder = exports.SimpleMatchRulesBlock = exports.MatchRulesBlock = exports.LoadingSpinner = exports.Link = exports.LinearLoadIndicator = exports.ImportModes = exports.ImportButton = exports.ImageGalleryDialog = exports.Highlighter = exports.HierarchicalAttributeTooltip = exports.HideOnShrink = exports.FlipCard = exports.FacetViewHeader = exports.ExpandedValueTooltip = exports.ErrorWrapper = exports.ErrorPopup = exports.ErrorBoundary = exports.EntityUriLink = exports.EntityTypesSelector = void 0;
18
- exports.ActionButtonMode = exports.ActionButton = exports.NotMatchButton = exports.MergeButton = exports.ProfileMatchCard = exports.RelationEditor = exports.OvIcon = exports.ErrorMessage = exports.ReltioMap = exports.ConfirmDeleteDialog = exports.ConfirmationDialog = exports.Marginator = exports.LightArrowTooltip = exports.ArrowExpandButton = exports.ScrollableTabs = exports.ExpandableSearchInput = exports.VirtualGroupedList = exports.ViewMoreToggle = exports.VerticalHeadingsTable = exports.VerticalDivider = exports.AttributeTitle = exports.Spacer = exports.SourceIcon = exports.SmallIconButtonWithTooltip = exports.SmallIconButton = void 0;
16
+ exports.EntityTypeBadge = exports.EntityAvatar = exports.EMPTY_STATE_VARIANTS = exports.EMPTY_STATE_ICONS = exports.EmptyState = exports.NoResults = exports.NoData = exports.DropDownSelector = exports.DropDownMenuButton = exports.Drawer = exports.DataTypeValue = exports.ConnectionRelationTypeSelector = exports.ConfigureColumnsPopup = exports.MenuWithPopper = exports.DropdownIndicatorWithIconButton = exports.DropdownIndicator = exports.CommentsContainer = exports.ColorBar = exports.CollapseButton = exports.CollaborationItem = exports.ClickAwayProvider = exports.BasicViewHeader = exports.BasicViewContent = exports.BasicView = exports.ProfileBandNavigation = exports.AvatarWithFallback = exports.AutoSizeList = exports.ReadOnlyAttributesPager = exports.SimpleAttribute = exports.ReferenceAttribute = exports.NestedAttribute = exports.EditableImageAttributesLine = exports.ImageAttributesLine = exports.ReadOnlyAttributesList = exports.ReadOnlyAttributeValuesBlock = exports.EditableAttribute = exports.ReadOnlyAttribute = exports.CardinalityMessage = exports.AttributesPager = exports.SimpleAttributeEditor = exports.RelationTypeSelector = exports.ReferenceAttributeEditor = exports.NestedAttributeEditor = exports.MoreAttributesButton = exports.EntitySelector = exports.EntityCreator = exports.AttributesList = exports.BranchDecorator = exports.AttributesView = exports.AttributeListItem = void 0;
17
+ exports.SidePanelContentHeader = exports.SidePanel = exports.SideButtonsPanel = exports.SelectorWithOnlyOptionAutoSelect = exports.SelectionPopupPopper = exports.SelectionPopup = exports.useKeyboardNavigation = exports.WhiteSearchInput = exports.SearchInput = exports.ScoreLabel = exports.Score = exports.ResizablePanes = exports.ReltioGridLayout = exports.ReactSortableTreeUtils = exports.ReactSortableTreeHandlers = exports.ReactSortableTree = exports.ReactSelectOptionFilters = exports.MultiSelect = exports.QueryBuilderRowsGroup = exports.QueryBuilderRow = exports.ProfileCard = exports.ProfileBand = exports.PotentialMatchReviewCard = exports.PopupWithArrow = exports.Popper = exports.MultipleInput = exports.ModeSwitcherSelect = exports.ModeSwitcher = exports.TransitiveMatchBlock = exports.SimpleMatchRulesBuilder = exports.SimpleMatchRulesBlock = exports.MatchRulesBlock = exports.LoadingSpinner = exports.Link = exports.LinearLoadIndicator = exports.ImportModes = exports.ImportButton = exports.ImageGalleryDialog = exports.Highlighter = exports.HierarchicalAttributeTooltip = exports.HideOnShrink = exports.FlipCard = exports.FacetViewHeader = exports.ExpandedValueTooltip = exports.ErrorWrapper = exports.ErrorPopup = exports.ErrorBoundary = exports.EntityUriLink = exports.EntityTypesSelector = exports.EntityTypeIcon = void 0;
18
+ exports.ActionButtonMode = exports.ActionButton = exports.NotMatchButton = exports.MergeButton = exports.ProfileMatchCard = exports.RelationEditor = exports.OvIcon = exports.ErrorMessage = exports.ReltioMap = exports.ConfirmDeleteDialog = exports.ConfirmationDialog = exports.Marginator = exports.LightArrowTooltip = exports.ArrowExpandButton = exports.ScrollableTabs = exports.ExpandableSearchInput = exports.VirtualGroupedList = exports.ViewMoreToggle = exports.VerticalHeadingsTable = exports.VerticalDivider = exports.AttributeTitle = exports.Spacer = exports.SourceIcon = exports.SmallIconButtonWithTooltip = exports.SmallIconButton = exports.SimpleDropDownSelector = void 0;
19
19
  __exportStar(require("./activityLog"), exports);
20
20
  var AttributeListItem_1 = require("./AttributeListItem/AttributeListItem");
21
21
  Object.defineProperty(exports, "AttributeListItem", { enumerable: true, get: function () { return __importDefault(AttributeListItem_1).default; } });
@@ -52,6 +52,8 @@ var AttributesList_2 = require("./attributes/readMode/AttributesList");
52
52
  Object.defineProperty(exports, "ReadOnlyAttributesList", { enumerable: true, get: function () { return __importDefault(AttributesList_2).default; } });
53
53
  var ImageAttributesLine_1 = require("./attributes/readMode/ImageAttributesLine");
54
54
  Object.defineProperty(exports, "ImageAttributesLine", { enumerable: true, get: function () { return __importDefault(ImageAttributesLine_1).default; } });
55
+ var ImageAttributesLine_2 = require("./attributes/editMode/ImageAttributesLine");
56
+ Object.defineProperty(exports, "EditableImageAttributesLine", { enumerable: true, get: function () { return __importDefault(ImageAttributesLine_2).default; } });
55
57
  var NestedAttribute_2 = require("./attributes/readMode/NestedAttribute");
56
58
  Object.defineProperty(exports, "NestedAttribute", { enumerable: true, get: function () { return __importDefault(NestedAttribute_2).default; } });
57
59
  var ReferenceAttribute_2 = require("./attributes/readMode/ReferenceAttribute");
@@ -7,6 +7,8 @@ exports.HistoryDiffContext = void 0;
7
7
  var react_1 = __importDefault(require("react"));
8
8
  exports.HistoryDiffContext = react_1.default.createContext({
9
9
  appearance: undefined,
10
- attributes: undefined
10
+ attributes: undefined,
11
+ roles: undefined,
12
+ tags: undefined
11
13
  });
12
14
  exports.HistoryDiffContext.displayName = 'HistoryDiffContext';
@@ -4,8 +4,9 @@ declare type Props = {
4
4
  entity: Entity;
5
5
  onFinishRequest?: () => void;
6
6
  onStartRequest?: () => void;
7
+ onError?: () => void;
7
8
  };
8
- export declare const useMergeAllRequest: ({ entities, entity, onFinishRequest, onStartRequest }: Props) => {
9
+ export declare const useMergeAllRequest: ({ entities, entity, onFinishRequest, onStartRequest, onError }: Props) => {
9
10
  isPending: boolean;
10
11
  sendMergeAllRequest: () => void;
11
12
  };
@@ -8,18 +8,21 @@ var react_1 = require("react");
8
8
  var react_redux_1 = require("react-redux");
9
9
  var mdm_module_1 = __importDefault(require("@reltio/mdm-module"));
10
10
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
11
+ var core_1 = require("../core");
11
12
  var useMergeAllRequest = function (_a) {
12
- var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest;
13
+ var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest, _b = _a.onError, onError = _b === void 0 ? core_1.noop : _b;
13
14
  var tenant = react_redux_1.useSelector(mdm_module_1.default.selectors.getTenant);
14
15
  var dtssPath = react_redux_1.useSelector(mdm_module_1.default.selectors.getDtssPath);
15
- var _b = react_1.useState(false), isPending = _b[0], setIsPending = _b[1];
16
+ var _c = react_1.useState(false), isPending = _c[0], setIsPending = _c[1];
16
17
  var sendMergeAllRequest = react_1.useCallback(function () {
17
18
  onStartRequest === null || onStartRequest === void 0 ? void 0 : onStartRequest();
18
19
  setIsPending(true);
19
20
  var params = { dtssPath: dtssPath, customerTenant: tenant, entity: entity, entities: entities };
20
21
  (mdm_sdk_1.isDataTenantEntity(entity)
21
22
  ? mdm_sdk_1.mergeDataTenantEntity(params)
22
- : mdm_sdk_1.mergeCustomerTenantEntityWithMixedEntities(params)).finally(function () {
23
+ : mdm_sdk_1.mergeCustomerTenantEntityWithMixedEntities(params))
24
+ .catch(onError)
25
+ .finally(function () {
23
26
  onFinishRequest === null || onFinishRequest === void 0 ? void 0 : onFinishRequest();
24
27
  setIsPending(false);
25
28
  });
@@ -10,6 +10,7 @@ declare type Props = {
10
10
  disabled?: boolean;
11
11
  onStartRequest?: () => void;
12
12
  onFinishRequest?: () => void;
13
+ onError?: () => void;
13
14
  };
14
15
  export declare const MergeButton: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLLIElement>>;
15
16
  export {};
@@ -27,12 +27,13 @@ import { noop } from '../../core';
27
27
  import { ActionButton, ActionButtonMode } from '../ActionButton/ActionButton';
28
28
  import { useMergeAllRequest } from '../../hooks';
29
29
  export var MergeButton = forwardRef(function (_a, ref) {
30
- var className = _a.className, _b = _a.mode, mode = _b === void 0 ? ActionButtonMode.iconButton : _b, _c = _a.onMenuClose, onMenuClose = _c === void 0 ? noop : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, entity = _a.entity, entities = _a.entities, onStartRequest = _a.onStartRequest, onFinishRequest = _a.onFinishRequest, otherProps = __rest(_a, ["className", "mode", "onMenuClose", "disabled", "entity", "entities", "onStartRequest", "onFinishRequest"]);
30
+ var className = _a.className, _b = _a.mode, mode = _b === void 0 ? ActionButtonMode.iconButton : _b, _c = _a.onMenuClose, onMenuClose = _c === void 0 ? noop : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, entity = _a.entity, entities = _a.entities, onStartRequest = _a.onStartRequest, onFinishRequest = _a.onFinishRequest, onError = _a.onError, otherProps = __rest(_a, ["className", "mode", "onMenuClose", "disabled", "entity", "entities", "onStartRequest", "onFinishRequest", "onError"]);
31
31
  var sendMergeAllRequest = useMergeAllRequest({
32
32
  entity: entity,
33
33
  entities: entities,
34
34
  onStartRequest: onStartRequest,
35
- onFinishRequest: onFinishRequest
35
+ onFinishRequest: onFinishRequest,
36
+ onError: onError
36
37
  }).sendMergeAllRequest;
37
38
  return (React.createElement(ActionButton, __assign({ className: className, disabled: disabled, mode: mode, label: i18n.text('Merge'), icon: MergeIcon, onClick: sendMergeAllRequest, onMenuClose: onMenuClose, ref: ref }, otherProps)));
38
39
  });
@@ -3,11 +3,11 @@ declare type Props = {
3
3
  buttonsProps: {
4
4
  icon: ElementType;
5
5
  tooltipTitle: string;
6
- id: string;
6
+ id: number;
7
7
  }[];
8
- activeIndex: number;
8
+ activeIndexId: number;
9
9
  className?: string;
10
- onButtonClick: (index: number) => void;
10
+ onButtonClick: (id: number) => void;
11
11
  };
12
12
  export declare const SideButtonsPanel: VFC<Props>;
13
13
  export {};
@@ -25,11 +25,11 @@ import classnames from 'classnames';
25
25
  import { SmallIconButtonWithTooltip } from '../SmallIconButton';
26
26
  import { useStyles } from './styles';
27
27
  export var SideButtonsPanel = function (_a) {
28
- var buttonsProps = _a.buttonsProps, activeIndex = _a.activeIndex, className = _a.className, onButtonClick = _a.onButtonClick;
28
+ var buttonsProps = _a.buttonsProps, activeIndexId = _a.activeIndexId, className = _a.className, onButtonClick = _a.onButtonClick;
29
29
  var styles = useStyles();
30
- return (React.createElement("div", { className: classnames(styles.container, className) }, buttonsProps.map(function (_a, index) {
30
+ return (React.createElement("div", { className: classnames(styles.container, className) }, buttonsProps.map(function (_a) {
31
31
  var _b;
32
32
  var id = _a.id, buttonProps = __rest(_a, ["id"]);
33
- return (React.createElement(SmallIconButtonWithTooltip, __assign({}, buttonProps, { size: "S", key: id, className: classnames((_b = {}, _b[styles.active] = activeIndex === index, _b), styles.buttonWrapper), onClick: function () { return onButtonClick(index); }, "data-reltio-id": "reltio-profile-right-side-button-" + id })));
33
+ return (React.createElement(SmallIconButtonWithTooltip, __assign({}, buttonProps, { size: "S", key: id, className: classnames((_b = {}, _b[styles.active] = activeIndexId === id, _b), styles.buttonWrapper), onClick: function () { return onButtonClick(id); }, "data-reltio-id": "reltio-profile-right-side-button-" + id })));
34
34
  })));
35
35
  };
@@ -1,7 +1,8 @@
1
1
  import { ReactNode, VFC } from 'react';
2
2
  declare type HeaderProps = {
3
- mainTitle: string;
4
- secondTitle: string;
3
+ mainTitle?: string;
4
+ secondTitle?: string;
5
+ content?: ReactNode;
5
6
  rightContent?: ReactNode;
6
7
  };
7
8
  declare type Props = HeaderProps & {
@@ -6,12 +6,13 @@ import Divider from '@material-ui/core/Divider';
6
6
  import i18n from 'ui-i18n';
7
7
  import { SmallIconButtonWithTooltip } from '../../SmallIconButton';
8
8
  export var SidePanelContentHeader = function (_a) {
9
- var onClose = _a.onClose, mainTitle = _a.mainTitle, secondTitle = _a.secondTitle, rightContent = _a.rightContent;
9
+ var onClose = _a.onClose, mainTitle = _a.mainTitle, secondTitle = _a.secondTitle, content = _a.content, rightContent = _a.rightContent;
10
10
  var styles = useStyles();
11
11
  return (React.createElement("div", { className: styles.container },
12
12
  React.createElement(SmallIconButtonWithTooltip, { size: "S", icon: CloseIcon, onClick: onClose, className: styles.icon, tooltipTitle: i18n.text('Close') }),
13
- React.createElement(Typography, { variant: "h6" }, mainTitle),
14
- React.createElement(Divider, { orientation: "vertical", flexItem: true, className: styles.divider }),
15
- React.createElement(Typography, { variant: "body1", color: "textSecondary", className: styles.secondTitle }, secondTitle),
16
- rightContent));
13
+ content || (React.createElement(React.Fragment, null,
14
+ React.createElement(Typography, { variant: "h6" }, mainTitle),
15
+ React.createElement(Divider, { orientation: "vertical", flexItem: true, className: styles.divider }),
16
+ React.createElement(Typography, { variant: "body1", color: "textSecondary", className: styles.secondTitle }, secondTitle),
17
+ rightContent))));
17
18
  };
@@ -2,7 +2,7 @@ import { connect } from 'react-redux';
2
2
  import mdm from '@reltio/mdm-module';
3
3
  import AttributesView from './AttributesView';
4
4
  var mapStateToProps = function (state, ownProps) { return ({
5
- entity: ownProps.entity || mdm.selectors.getEntity(state),
5
+ entity: ownProps.entity || mdm.selectors.getEntityWithDiff(state),
6
6
  mode: ownProps.mode || mdm.selectors.getMode(state)
7
7
  }); };
8
8
  export { AttributesView };
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- import { AttributeType, ImageAttributeValue } from '@reltio/mdm-sdk';
2
+ import { RequestNextPageOfAttributeValuesPayload } from '@reltio/mdm-module';
3
+ import { AttributeType, ImageAttributeValue, Paging } from '@reltio/mdm-sdk';
3
4
  import { AttributeItem } from '../editMode/AttributesPager';
4
5
  import { SIZES_TYPE } from './styles';
5
6
  export declare type ImageRenderProps = {
@@ -19,6 +20,10 @@ declare type Props = {
19
20
  onUpload?: () => void;
20
21
  onDeleteAttribute?: (param: AttributeItem) => void;
21
22
  imageSize?: SIZES_TYPE;
23
+ paging?: Paging;
24
+ requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;
25
+ parentUri?: string;
26
+ showNonOv?: boolean;
22
27
  };
23
- declare const ImageAttributesLine: ({ attributeType, attributeValues, renderImage, overlay, countFixedItems, children, onUpload, onDeleteAttribute, imageSize }: Props) => JSX.Element;
28
+ declare const ImageAttributesLine: ({ attributeType, attributeValues, renderImage, overlay, countFixedItems, children, onUpload, onDeleteAttribute, imageSize, paging, parentUri, showNonOv, requestNextPageOfAttributeValues }: Props) => JSX.Element;
24
29
  export default ImageAttributesLine;
@@ -21,11 +21,25 @@ import { downloadImagesByURLs } from '../helpers/imageAttributes';
21
21
  import { DEFAULT_IMAGE_SIZE, IMAGE_MIN_VISIBLE_WIDTH } from './constants';
22
22
  import { useStyles } from './styles';
23
23
  var ImageAttributesLine = function (_a) {
24
- var attributeType = _a.attributeType, _b = _a.attributeValues, attributeValues = _b === void 0 ? [] : _b, renderImage = _a.renderImage, _c = _a.overlay, overlay = _c === void 0 ? false : _c, _d = _a.countFixedItems, countFixedItems = _d === void 0 ? 0 : _d, children = _a.children, onUpload = _a.onUpload, onDeleteAttribute = _a.onDeleteAttribute, _e = _a.imageSize, imageSize = _e === void 0 ? DEFAULT_IMAGE_SIZE : _e;
24
+ var attributeType = _a.attributeType, _b = _a.attributeValues, attributeValues = _b === void 0 ? [] : _b, renderImage = _a.renderImage, _c = _a.overlay, overlay = _c === void 0 ? false : _c, _d = _a.countFixedItems, countFixedItems = _d === void 0 ? 0 : _d, children = _a.children, onUpload = _a.onUpload, onDeleteAttribute = _a.onDeleteAttribute, _e = _a.imageSize, imageSize = _e === void 0 ? DEFAULT_IMAGE_SIZE : _e, paging = _a.paging, parentUri = _a.parentUri, showNonOv = _a.showNonOv, requestNextPageOfAttributeValues = _a.requestNextPageOfAttributeValues;
25
25
  var entity = useSelector(mdm.selectors.getEntity) || {};
26
26
  var isViewMode = useSelector(mdm.selectors.getIsViewMode);
27
27
  var dispatch = useDispatch();
28
28
  var styles = useStyles(imageSize);
29
+ useEffect(function () {
30
+ if (paging && requestNextPageOfAttributeValues) {
31
+ var totalVisibleValues = showNonOv ? paging.totalOvValues : paging.totalValues;
32
+ if (totalVisibleValues > attributeValues.length) {
33
+ requestNextPageOfAttributeValues({
34
+ parentUri: parentUri,
35
+ attributeTypeUri: attributeType.uri,
36
+ attributeTypeName: attributeType.name,
37
+ values: [],
38
+ defaultMaxValues: totalVisibleValues
39
+ });
40
+ }
41
+ }
42
+ }, [paging, requestNextPageOfAttributeValues, attributeType, parentUri, attributeValues.length, showNonOv]);
29
43
  var lastWidth = useRef();
30
44
  var _f = useState(0), maxItems = _f[0], setMaxItems = _f[1];
31
45
  var _g = useState(0), hiddenItemsLength = _g[0], setHiddenItemsLength = _g[1];
@@ -56,7 +56,7 @@ var AttributesPager = function (_a) {
56
56
  return (React.createElement(BranchDecorator, { enabled: drawLines },
57
57
  React.createElement("div", { className: styles.wrapper },
58
58
  React.createElement(Title, { label: attributeType === null || attributeType === void 0 ? void 0 : attributeType.label, attributeType: attributeType }),
59
- React.createElement(ImageAttributesLine, { attributeValues: visibleValues, attributeType: attributeType, onDeleteAttribute: onDeleteAttribute, parentUri: parentUri, onChangeAttribute: onChangeAttribute }))));
59
+ React.createElement(ImageAttributesLine, { attributeValues: visibleValues, attributeType: attributeType, paging: paging, onDeleteAttribute: onDeleteAttribute, parentUri: parentUri, onChangeAttribute: onChangeAttribute, requestNextPageOfAttributeValues: requestNextPageOfAttributeValues, showNonOv: showNonOv }))));
60
60
  default:
61
61
  return (React.createElement(AttributeRenderer, __assign({ values: visibleValues, attributeType: attributeType, max: max, paging: paging, crosswalks: crosswalks, showEmptyEditors: showEmptyEditors, drawLines: drawLines, requestNextPageOfAttributeValues: requestNextPageOfAttributeValues, showNonOv: showNonOv }, commonProps)));
62
62
  }
@@ -1,12 +1,18 @@
1
1
  /// <reference types="react" />
2
- import { AttributeType, ImageAttributeValue } from '@reltio/mdm-sdk';
2
+ import { RequestNextPageOfAttributeValuesPayload } from '@reltio/mdm-module';
3
+ import { AttributeType, ImageAttributeValue, Paging } from '@reltio/mdm-sdk';
3
4
  import { AttributeItem } from '../AttributesPager';
5
+ import { SIZES_TYPE } from '../../ImageAttributesLine/styles';
4
6
  declare type Props = {
5
7
  attributeType: AttributeType;
6
8
  attributeValues: ImageAttributeValue[];
7
9
  onDeleteAttribute: (param: AttributeItem) => void;
8
10
  onChangeAttribute: (param: AttributeItem) => void;
9
11
  parentUri: string;
12
+ imageSize?: SIZES_TYPE;
13
+ paging?: Paging;
14
+ requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;
15
+ showNonOv?: boolean;
10
16
  };
11
- declare const ImageAttributesLine: ({ attributeType, attributeValues, onDeleteAttribute, onChangeAttribute, parentUri }: Props) => JSX.Element;
17
+ declare const ImageAttributesLine: ({ attributeType, attributeValues, onDeleteAttribute, onChangeAttribute, requestNextPageOfAttributeValues, parentUri, paging, showNonOv, imageSize }: Props) => JSX.Element;
12
18
  export default ImageAttributesLine;
@@ -8,17 +8,17 @@ import ImageActionsOverlay from '../../../Image/ImageActionsOverlay/ImageActions
8
8
  import { SmallIconButton } from '../../../SmallIconButton';
9
9
  import { UploadImageDialog } from '../../../UploadImageDialog/UploadImageDialog';
10
10
  import ImageAttributesLineCommon from '../../ImageAttributesLine';
11
- import { IMAGE_HEIGHT, IMAGE_MARGIN, IMAGE_WIDTH } from '../../ImageAttributesLine/constants';
11
+ import { DEFAULT_IMAGE_SIZE } from '../../ImageAttributesLine/constants';
12
12
  import { useStyles } from './styles';
13
13
  var ImageAttributesLine = function (_a) {
14
- var _b = _a.attributeType, attributeType = _b === void 0 ? {} : _b, _c = _a.attributeValues, attributeValues = _c === void 0 ? [] : _c, onDeleteAttribute = _a.onDeleteAttribute, onChangeAttribute = _a.onChangeAttribute, parentUri = _a.parentUri;
15
- var styles = useStyles({ imageMargin: IMAGE_MARGIN, imageWidth: IMAGE_WIDTH, imageHeight: IMAGE_HEIGHT });
14
+ var _b = _a.attributeType, attributeType = _b === void 0 ? {} : _b, _c = _a.attributeValues, attributeValues = _c === void 0 ? [] : _c, onDeleteAttribute = _a.onDeleteAttribute, onChangeAttribute = _a.onChangeAttribute, requestNextPageOfAttributeValues = _a.requestNextPageOfAttributeValues, parentUri = _a.parentUri, paging = _a.paging, showNonOv = _a.showNonOv, _d = _a.imageSize, imageSize = _d === void 0 ? DEFAULT_IMAGE_SIZE : _d;
15
+ var styles = useStyles(imageSize);
16
16
  var entity = useSelector(mdmModule.selectors.getEntity) || {};
17
17
  var defaultProfilePic = useSelector(function (state) {
18
18
  return mdmModule.selectors.getModifiedEntityDefaultProfilePic(state, entity.uri);
19
19
  });
20
20
  var dispatch = useDispatch();
21
- var _d = useState(false), isVisibleUploadDialog = _d[0], setIsVisibleUploadDialog = _d[1];
21
+ var _e = useState(false), isVisibleUploadDialog = _e[0], setIsVisibleUploadDialog = _e[1];
22
22
  var toggleVisibilityUploadDialog = useCallback(function () {
23
23
  setIsVisibleUploadDialog(function (visible) { return !visible; });
24
24
  }, []);
@@ -70,12 +70,12 @@ var ImageAttributesLine = function (_a) {
70
70
  var uri = attribute.uri;
71
71
  var onOpenImageGalleryDialog = methods.onOpenImageGalleryDialog;
72
72
  return (React.createElement("div", { className: styles.image, key: uri },
73
- React.createElement(Image, { src: src, overlay: renderImageActionsOverlay(methods, attribute), onClick: function () { return onOpenImageGalleryDialog(uri); } })));
73
+ React.createElement(Image, { src: src, overlay: renderImageActionsOverlay(methods, attribute), onClick: function () { return onOpenImageGalleryDialog(uri); }, size: { imageWidth: imageSize.imageWidth, imageHeight: imageSize.imageHeight } })));
74
74
  };
75
75
  return renderImage;
76
76
  };
77
77
  return (React.createElement("div", { className: styles.root },
78
- React.createElement(ImageAttributesLineCommon, { attributeValues: attributeValues, attributeType: attributeType, renderImage: renderImage, overlay: true, countFixedItems: 1, onUpload: toggleVisibilityUploadDialog, onDeleteAttribute: handleDeleteAttribute },
78
+ React.createElement(ImageAttributesLineCommon, { attributeValues: attributeValues, attributeType: attributeType, renderImage: renderImage, overlay: true, countFixedItems: 1, onUpload: toggleVisibilityUploadDialog, onDeleteAttribute: handleDeleteAttribute, imageSize: imageSize, requestNextPageOfAttributeValues: requestNextPageOfAttributeValues, paging: paging, parentUri: parentUri, showNonOv: showNonOv },
79
79
  React.createElement("div", { className: styles.uploadContainer, onClick: toggleVisibilityUploadDialog },
80
80
  React.createElement(SmallIconButton, { className: styles.uploadButton, iconClassName: styles.uploadIcon, icon: CloudUploadIcon }))),
81
81
  React.createElement(UploadImageDialog, { open: isVisibleUploadDialog, onUpload: handleAddAttributes, onClose: toggleVisibilityUploadDialog })));
@@ -24,11 +24,13 @@ export var getParents = function (state, valueUri, node) {
24
24
  });
25
25
  var modifiedEntities = mdmModule.selectors.getModifiedEntities(state);
26
26
  var entityUri = mdmModule.selectors.getEntityUri(state);
27
+ var connections = mdmModule.selectors.getAllRelationsToAddAndEdit(state);
27
28
  var ownParentNodesValues = filterRelatedParentValuesForDependentLookupValueUri({
28
29
  parentValues: parentNodesValues,
29
30
  valueUri: valueUri,
30
31
  entityUri: entityUri,
31
- modifiedEntities: modifiedEntities
32
+ modifiedEntities: modifiedEntities,
33
+ connections: connections
32
34
  });
33
35
  var neededParentsAttributeTypes = node.parents.map(function (type) {
34
36
  var parentNode = mdmModule.selectors.getDependentLookupsStructureNode(state, type);
@@ -47,7 +47,7 @@ var AttributesPager = function (_a) {
47
47
  case RENDERER_TYPES.imageLine:
48
48
  return (React.createElement(React.Fragment, null,
49
49
  showTitle && React.createElement(Title, { label: attributeType === null || attributeType === void 0 ? void 0 : attributeType.label, attributeType: attributeType }),
50
- React.createElement(ImageAttributesLine, { attributeValues: visibleValues, attributeType: attributeType })));
50
+ React.createElement(ImageAttributesLine, { attributeValues: visibleValues, attributeType: attributeType, paging: paging, parentUri: parentUri, requestNextPageOfAttributeValues: requestNextPageOfAttributeValues, showNonOv: showNonOv })));
51
51
  case RENDERER_TYPES.special:
52
52
  return React.createElement(SpecialRenderer, { values: visibleValues, attributeType: attributeType, showTitle: showTitle });
53
53
  }
@@ -1,10 +1,15 @@
1
1
  /// <reference types="react" />
2
- import { AttributeType, ImageAttributeValue } from '@reltio/mdm-sdk';
2
+ import { AttributeType, ImageAttributeValue, Paging } from '@reltio/mdm-sdk';
3
+ import { RequestNextPageOfAttributeValuesPayload } from '@reltio/mdm-module';
3
4
  import { SIZES_TYPE } from '../../ImageAttributesLine/styles';
4
5
  declare type Props = {
5
6
  attributeValues: ImageAttributeValue[];
6
7
  attributeType: AttributeType;
7
8
  imageSize?: SIZES_TYPE;
9
+ paging?: Paging;
10
+ parentUri?: string;
11
+ showNonOv?: boolean;
12
+ requestNextPageOfAttributeValues?: (payload: RequestNextPageOfAttributeValuesPayload) => void;
8
13
  };
9
- declare const ImageAttributesLine: ({ attributeType, attributeValues, imageSize }: Props) => JSX.Element;
14
+ declare const ImageAttributesLine: ({ attributeType, attributeValues, paging, parentUri, requestNextPageOfAttributeValues, showNonOv, imageSize }: Props) => JSX.Element;
10
15
  export default ImageAttributesLine;
@@ -8,7 +8,7 @@ import { DEFAULT_IMAGE_SIZE } from '../../ImageAttributesLine/constants';
8
8
  import { getHistoryAppearanceByUri, getHistoryAttributeClassName } from '../helpers/historyAppearance';
9
9
  import { useStyles } from './styles';
10
10
  var ImageAttributesLine = function (_a) {
11
- var attributeType = _a.attributeType, _b = _a.attributeValues, attributeValues = _b === void 0 ? [] : _b, _c = _a.imageSize, imageSize = _c === void 0 ? DEFAULT_IMAGE_SIZE : _c;
11
+ var attributeType = _a.attributeType, _b = _a.attributeValues, attributeValues = _b === void 0 ? [] : _b, paging = _a.paging, parentUri = _a.parentUri, requestNextPageOfAttributeValues = _a.requestNextPageOfAttributeValues, showNonOv = _a.showNonOv, _c = _a.imageSize, imageSize = _c === void 0 ? DEFAULT_IMAGE_SIZE : _c;
12
12
  var styles = useStyles(imageSize);
13
13
  var appearance = useContext(HistoryDiffContext).appearance;
14
14
  var renderImage = function (_a) {
@@ -26,6 +26,6 @@ var ImageAttributesLine = function (_a) {
26
26
  };
27
27
  return renderImage;
28
28
  };
29
- return (React.createElement(ImageAttributesLineCommon, { attributeValues: attributeValues, attributeType: attributeType, renderImage: renderImage, imageSize: imageSize }));
29
+ return (React.createElement(ImageAttributesLineCommon, { attributeValues: attributeValues, attributeType: attributeType, renderImage: renderImage, imageSize: imageSize, requestNextPageOfAttributeValues: requestNextPageOfAttributeValues, paging: paging, parentUri: parentUri, showNonOv: showNonOv }));
30
30
  };
31
31
  export default ImageAttributesLine;
@@ -11,12 +11,13 @@ var __assign = (this && this.__assign) || function () {
11
11
  };
12
12
  import React, { useState } from 'react';
13
13
  import i18n from 'ui-i18n';
14
- import { curry } from 'ramda';
14
+ import { curry, dissoc } from 'ramda';
15
15
  import FilterListIcon from '@material-ui/icons/FilterList';
16
16
  import Button from '@material-ui/core/Button';
17
17
  import Popover from '@material-ui/core/Popover';
18
18
  import Typography from '@material-ui/core/Typography';
19
19
  import { SmallIconButton } from '../../SmallIconButton';
20
+ import { isDateRangeValid } from '../utils/filters';
20
21
  import UserSelector from '../../UserSelector/UserSelector';
21
22
  import AttributeSelector from '../../AttributeSelector/AttributeSelector';
22
23
  import DateRangeSelector from '../DateRangeSelector/DateRangeSelector';
@@ -56,7 +57,12 @@ var HistoryFilterButton = function (_a) {
56
57
  React.createElement(Button, { onClick: clearCurrentValue, className: styles.clearButton }, i18n.text('Clear all')),
57
58
  React.createElement(Button, { onClick: closePopup }, i18n.text('Cancel')),
58
59
  React.createElement(Button, { color: "primary", onClick: function () {
59
- onApplyFilter(currentValue);
60
+ if (dateRange && isDateRangeValid(dateRange)) {
61
+ onApplyFilter(currentValue);
62
+ }
63
+ else {
64
+ onApplyFilter(dissoc('dateRange', currentValue));
65
+ }
60
66
  closePopup();
61
67
  } }, i18n.text('Apply'))))));
62
68
  };
@@ -10,12 +10,13 @@ var __assign = (this && this.__assign) || function () {
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
12
  import React, { useCallback, useEffect, useRef, useState } from 'react';
13
- import { useDispatch } from 'react-redux';
13
+ import { useDispatch, useSelector } from 'react-redux';
14
14
  import ReactResizeDetector from 'react-resize-detector';
15
15
  import i18n from 'ui-i18n';
16
16
  import { isNil } from 'ramda';
17
17
  import classnames from 'classnames';
18
- import { profile } from '@reltio/mdm-module';
18
+ import { Mode } from '@reltio/mdm-sdk';
19
+ import mdm, { profile } from '@reltio/mdm-module';
19
20
  import Button from '@material-ui/core/Button';
20
21
  import HistoryRow from '../HistoryRow/HistoryRow';
21
22
  import HistoryGraph from '../HistoryGraph/HistoryGraph';
@@ -26,6 +27,7 @@ var HistoryTree = function (_a) {
26
27
  var historyData = _a.historyData, isLoading = _a.isLoading, canLoadMore = _a.canLoadMore, onLoadMore = _a.onLoadMore, entityUri = _a.entityUri, historyEvent = _a.historyEvent, findPreviousChange = _a.findPreviousChange;
27
28
  var styles = useStyles();
28
29
  var dispatch = useDispatch();
30
+ var isEditableMode = useSelector(mdm.selectors.getIsEditableMode);
29
31
  var _c = useState({ historyLanes: {}, rows: [] }), graphData = _c[0], setGraphData = _c[1];
30
32
  var _d = useState(false), isScrollable = _d[0], setIsScrollable = _d[1];
31
33
  var _e = useState(-1), selectedIndex = _e[0], setSelectedIndex = _e[1];
@@ -54,6 +56,14 @@ var HistoryTree = function (_a) {
54
56
  setIsScrollable(scrollLeft < scrollWidth - clientWidth);
55
57
  };
56
58
  var handleHistoryRowClick = function (index, change, isSelected, isCurrent) {
59
+ if (isEditableMode) {
60
+ if (window.confirm(i18n.text('Are you sure you want to go in history mode? All your changes will be lost.'))) {
61
+ dispatch(profile.mode.actions.modeUpdated(Mode.Viewing));
62
+ }
63
+ else {
64
+ return;
65
+ }
66
+ }
57
67
  if ((isCurrent && !isSelected) || (!isCurrent && isSelected)) {
58
68
  dispatch(profile.history.actions.clearHistoryEvent());
59
69
  setSelectedIndex(0);
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { HistoryFilter } from '../types';
3
2
  declare type Props = {
4
3
  entityUri: string;
@@ -8,9 +7,10 @@ export declare const useHistory: ({ entityUri, enabled }: Props) => {
8
7
  isLoading: boolean;
9
8
  canLoadMore: boolean;
10
9
  onLoadMore: () => void;
10
+ onApplyFilter: (filter: HistoryFilter) => void;
11
11
  historicUris: string[];
12
12
  historyWithTotal: import("@reltio/mdm-sdk").HistoryWithTotal;
13
13
  historyFilter: HistoryFilter;
14
- setHistoryFilter: import("react").Dispatch<import("react").SetStateAction<HistoryFilter>>;
14
+ reloadHistory: () => void;
15
15
  };
16
16
  export {};
@@ -1,11 +1,16 @@
1
1
  import { useState, useMemo, useCallback } from 'react';
2
2
  import { useHistoricUris } from './useHistoricUris';
3
3
  import { useHistoryWithTotal } from './useHistoryWithTotal';
4
+ import { HistoryActivityType } from '../types';
5
+ import { buildHistoryFilterString } from '../utils/filters';
4
6
  var MAX_HISTORY_ROWS = 32;
5
7
  export var useHistory = function (_a) {
6
8
  var entityUri = _a.entityUri, enabled = _a.enabled;
7
- var _b = useState(null), historyFilter = _b[0], setHistoryFilter = _b[1];
9
+ var _b = useState({
10
+ activities: [HistoryActivityType.MERGE, HistoryActivityType.UNMERGE, HistoryActivityType.UPDATE]
11
+ }), historyFilter = _b[0], setHistoryFilter = _b[1];
8
12
  var _c = useState(0), historyPage = _c[0], setHistoryPage = _c[1];
13
+ var historyFilterString = useMemo(function () { return buildHistoryFilterString(historyFilter); }, [historyFilter]);
9
14
  var _d = useHistoricUris({
10
15
  entityUri: entityUri,
11
16
  enabled: enabled
@@ -13,29 +18,38 @@ export var useHistory = function (_a) {
13
18
  var _e = useHistoryWithTotal({
14
19
  entityUri: entityUri,
15
20
  enabled: enabled && !!historicUris,
21
+ filter: historyFilterString,
16
22
  historicUris: historicUris,
17
23
  max: MAX_HISTORY_ROWS,
18
24
  offset: historyPage * MAX_HISTORY_ROWS,
19
- order: 'desc',
20
- showAll: true
21
- }), isHistoryLoading = _e.isLoading, historyWithTotal = _e.historyWithTotal, loadMore = _e.loadMore;
22
- var canLoadMore = useMemo(function () { return (historyPage + 1) * MAX_HISTORY_ROWS <= (historyWithTotal === null || historyWithTotal === void 0 ? void 0 : historyWithTotal.total); }, [
25
+ order: 'desc'
26
+ }), isHistoryLoading = _e.isLoading, historyWithTotal = _e.historyWithTotal, loadMore = _e.loadMore, loadData = _e.loadData;
27
+ var canLoadMore = useMemo(function () { return (historyPage + 1) * MAX_HISTORY_ROWS < (historyWithTotal === null || historyWithTotal === void 0 ? void 0 : historyWithTotal.total); }, [
23
28
  historyWithTotal,
24
29
  historyPage
25
30
  ]);
31
+ var onApplyFilter = useCallback(function (filter) {
32
+ setHistoryPage(0);
33
+ setHistoryFilter(filter);
34
+ }, []);
26
35
  var onLoadMore = useCallback(function () {
27
36
  if (!canLoadMore)
28
37
  return;
29
38
  loadMore((historyPage + 1) * MAX_HISTORY_ROWS);
30
39
  setHistoryPage(historyPage + 1);
31
40
  }, [loadMore, historyPage, canLoadMore]);
41
+ var reloadHistory = useCallback(function () {
42
+ loadData();
43
+ setHistoryPage(0);
44
+ }, [loadData]);
32
45
  return {
33
46
  isLoading: isHistoryLoading || isHistoricUrisLoading,
34
47
  canLoadMore: canLoadMore,
35
48
  onLoadMore: onLoadMore,
49
+ onApplyFilter: onApplyFilter,
36
50
  historicUris: historicUris,
37
51
  historyWithTotal: historyWithTotal,
38
52
  historyFilter: historyFilter,
39
- setHistoryFilter: setHistoryFilter
53
+ reloadHistory: reloadHistory
40
54
  };
41
55
  };
@@ -0,0 +1,2 @@
1
+ import { HistoryDiff } from '@reltio/mdm-sdk';
2
+ export declare const useHistoryDiff: () => HistoryDiff;