@reltio/components 1.4.1106 → 1.4.1109

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 (35) hide show
  1. package/cjs/components/AttributesFiltersButton/AttributesFiltersButton.js +2 -4
  2. package/cjs/components/MergeButton/MergeButton.d.ts +1 -0
  3. package/cjs/components/MergeButton/MergeButton.js +3 -2
  4. package/cjs/components/NotMatchButton/NotMatchButton.d.ts +1 -0
  5. package/cjs/components/NotMatchButton/NotMatchButton.js +3 -2
  6. package/cjs/contexts/SnackbarContext/index.d.ts +2 -0
  7. package/cjs/contexts/SnackbarContext/index.js +9 -0
  8. package/cjs/contexts/index.d.ts +1 -0
  9. package/cjs/contexts/index.js +3 -1
  10. package/cjs/hooks/index.d.ts +1 -0
  11. package/cjs/hooks/index.js +3 -1
  12. package/cjs/hooks/useMarkAsNotMatchRequest.d.ts +2 -1
  13. package/cjs/hooks/useMarkAsNotMatchRequest.js +7 -5
  14. package/cjs/hooks/useMergeAllRequest.d.ts +2 -1
  15. package/cjs/hooks/useMergeAllRequest.js +5 -2
  16. package/cjs/hooks/useSnackbar.d.ts +5 -0
  17. package/cjs/hooks/useSnackbar.js +46 -0
  18. package/esm/components/AttributesFiltersButton/AttributesFiltersButton.js +2 -4
  19. package/esm/components/MergeButton/MergeButton.d.ts +1 -0
  20. package/esm/components/MergeButton/MergeButton.js +3 -2
  21. package/esm/components/NotMatchButton/NotMatchButton.d.ts +1 -0
  22. package/esm/components/NotMatchButton/NotMatchButton.js +3 -2
  23. package/esm/contexts/SnackbarContext/index.d.ts +2 -0
  24. package/esm/contexts/SnackbarContext/index.js +3 -0
  25. package/esm/contexts/index.d.ts +1 -0
  26. package/esm/contexts/index.js +1 -0
  27. package/esm/hooks/index.d.ts +1 -0
  28. package/esm/hooks/index.js +1 -0
  29. package/esm/hooks/useMarkAsNotMatchRequest.d.ts +2 -1
  30. package/esm/hooks/useMarkAsNotMatchRequest.js +7 -5
  31. package/esm/hooks/useMergeAllRequest.d.ts +2 -1
  32. package/esm/hooks/useMergeAllRequest.js +5 -2
  33. package/esm/hooks/useSnackbar.d.ts +5 -0
  34. package/esm/hooks/useSnackbar.js +20 -0
  35. package/package.json +3 -3
@@ -29,6 +29,7 @@ var Button_1 = __importDefault(require("@material-ui/core/Button"));
29
29
  var FilterList_1 = __importDefault(require("@material-ui/icons/FilterList"));
30
30
  var Typography_1 = __importDefault(require("@material-ui/core/Typography"));
31
31
  var Divider_1 = __importDefault(require("@material-ui/core/Divider"));
32
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
32
33
  var AttributesFiltersBuilder_1 = __importDefault(require("../AttributesFiltersBuilder/AttributesFiltersBuilder"));
33
34
  var ActionButtons_1 = __importDefault(require("./ActionButtons/ActionButtons"));
34
35
  var styles_1 = require("./styles");
@@ -38,10 +39,7 @@ var AttributesFiltersButton = function (_a) {
38
39
  var buttonRef = react_1.useRef();
39
40
  var _b = react_1.useState(false), isOpen = _b[0], setIsOpen = _b[1];
40
41
  var _c = react_1.useState([]), filters = _c[0], setFilters = _c[1];
41
- var isFiltersApplied = filtersProp.some(function (_a) {
42
- var fieldName = _a.fieldName, filter = _a.filter, values = _a.values;
43
- return fieldName && filter && values.length;
44
- });
42
+ var isFiltersApplied = !!mdm_sdk_1.buildFilterQueryString()(filtersProp);
45
43
  var buttonColor = isFiltersApplied ? 'primary' : 'inherit';
46
44
  var togglePopup = function () { return setIsOpen(function (open) { return !open; }); };
47
45
  react_1.useEffect(function () {
@@ -11,6 +11,7 @@ declare type Props = {
11
11
  disabled?: boolean;
12
12
  onStartRequest?: () => void;
13
13
  onFinishRequest?: () => void;
14
+ onSuccess?: () => void;
14
15
  onError?: (error?: ApiError) => void;
15
16
  };
16
17
  export declare const MergeButton: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLLIElement>>;
@@ -52,13 +52,14 @@ var core_1 = require("../../core");
52
52
  var ActionButton_1 = require("../ActionButton/ActionButton");
53
53
  var hooks_1 = require("../../hooks");
54
54
  exports.MergeButton = react_1.forwardRef(function (_a, ref) {
55
- var className = _a.className, _b = _a.mode, mode = _b === void 0 ? ActionButton_1.ActionButtonMode.iconButton : _b, _c = _a.onMenuClose, onMenuClose = _c === void 0 ? core_1.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"]);
55
+ var className = _a.className, _b = _a.mode, mode = _b === void 0 ? ActionButton_1.ActionButtonMode.iconButton : _b, _c = _a.onMenuClose, onMenuClose = _c === void 0 ? core_1.noop : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, entity = _a.entity, entities = _a.entities, onStartRequest = _a.onStartRequest, onFinishRequest = _a.onFinishRequest, onSuccess = _a.onSuccess, onError = _a.onError, otherProps = __rest(_a, ["className", "mode", "onMenuClose", "disabled", "entity", "entities", "onStartRequest", "onFinishRequest", "onSuccess", "onError"]);
56
56
  var sendMergeAllRequest = hooks_1.useMergeAllRequest({
57
57
  entity: entity,
58
58
  entities: entities,
59
59
  onStartRequest: onStartRequest,
60
60
  onFinishRequest: onFinishRequest,
61
- onError: onError
61
+ onError: onError,
62
+ onSuccess: onSuccess
62
63
  }).sendMergeAllRequest;
63
64
  return (react_1.default.createElement(ActionButton_1.ActionButton, __assign({ className: className, disabled: disabled, mode: mode, label: ui_i18n_1.default.text('Merge'), icon: MergeDark_1.default, onClick: sendMergeAllRequest, onMenuClose: onMenuClose, ref: ref }, otherProps)));
64
65
  });
@@ -11,6 +11,7 @@ declare type Props = {
11
11
  disabled?: boolean;
12
12
  onStartRequest?: () => void;
13
13
  onFinishRequest?: () => void;
14
+ onSuccess?: () => void;
14
15
  };
15
16
  export declare const NotMatchButton: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLLIElement>>;
16
17
  export {};
@@ -52,12 +52,13 @@ var core_1 = require("../../core");
52
52
  var ui_i18n_1 = __importDefault(require("ui-i18n"));
53
53
  var useMarkAsNotMatchRequest_1 = require("../../hooks/useMarkAsNotMatchRequest");
54
54
  exports.NotMatchButton = react_1.forwardRef(function (_a, ref) {
55
- var className = _a.className, _b = _a.mode, mode = _b === void 0 ? ActionButton_1.ActionButtonMode.iconButton : _b, _c = _a.onMenuClose, onMenuClose = _c === void 0 ? core_1.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"]);
55
+ var className = _a.className, _b = _a.mode, mode = _b === void 0 ? ActionButton_1.ActionButtonMode.iconButton : _b, _c = _a.onMenuClose, onMenuClose = _c === void 0 ? core_1.noop : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, entity = _a.entity, entities = _a.entities, onStartRequest = _a.onStartRequest, onFinishRequest = _a.onFinishRequest, onSuccess = _a.onSuccess, otherProps = __rest(_a, ["className", "mode", "onMenuClose", "disabled", "entity", "entities", "onStartRequest", "onFinishRequest", "onSuccess"]);
56
56
  var sendMarkAsNotMatchRequest = useMarkAsNotMatchRequest_1.useMarkAsNotMatchRequest({
57
57
  entity: entity,
58
58
  entities: entities,
59
59
  onStartRequest: onStartRequest,
60
- onFinishRequest: onFinishRequest
60
+ onFinishRequest: onFinishRequest,
61
+ onSuccess: onSuccess
61
62
  }).sendMarkAsNotMatchRequest;
62
63
  return (react_1.default.createElement(ActionButton_1.ActionButton, __assign({ className: className, disabled: disabled, mode: mode, label: ui_i18n_1.default.text('Not a match'), icon: NotMatchDark_1.default, onClick: sendMarkAsNotMatchRequest, onMenuClose: onMenuClose, ref: ref }, otherProps)));
63
64
  });
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const SnackbarContext: React.Context<(message: string) => void>;
@@ -0,0 +1,9 @@
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.SnackbarContext = void 0;
7
+ var react_1 = __importDefault(require("react"));
8
+ exports.SnackbarContext = react_1.default.createContext(function () { });
9
+ exports.SnackbarContext.displayName = 'SnackbarContext';
@@ -18,3 +18,4 @@ export { EntityContext } from './EntityContext';
18
18
  export { SandboxAPIContext } from './SandboxAPIContext';
19
19
  export { useReloadAllFacets, ReloadFacetProvider, useReloadFacet } from './ReloadFacetContext';
20
20
  export { SearchFiltersContext } from './SearchFiltersContext';
21
+ export { SnackbarContext } from './SnackbarContext';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SearchFiltersContext = exports.useReloadFacet = exports.ReloadFacetProvider = exports.useReloadAllFacets = exports.SandboxAPIContext = exports.EntityContext = exports.RelatedObjectUrisContext = exports.WorkflowTasksContext = exports.EntityMarkerContext = exports.useAttributeExpanded = exports.ExpandedAttributesProvider = exports.useHighlightedCrosswalks = exports.useCrosswalkHighlight = exports.useCrosswalkFocus = exports.useCrosswalkColor = exports.CrosswalksDisplayProvider = exports.EntitiesMapContext = exports.IdContext = exports.ProfilePerspectiveViewContext = exports.PivotingAttributeContext = exports.UsersContext = exports.CollaborationContext = exports.BlockImageGalleryDialogContext = exports.ViewIdContext = exports.PopupBoundariesContext = exports.HistoryDiffContext = exports.AsyncMountContext = void 0;
3
+ exports.SnackbarContext = exports.SearchFiltersContext = exports.useReloadFacet = exports.ReloadFacetProvider = exports.useReloadAllFacets = exports.SandboxAPIContext = exports.EntityContext = exports.RelatedObjectUrisContext = exports.WorkflowTasksContext = exports.EntityMarkerContext = exports.useAttributeExpanded = exports.ExpandedAttributesProvider = exports.useHighlightedCrosswalks = exports.useCrosswalkHighlight = exports.useCrosswalkFocus = exports.useCrosswalkColor = exports.CrosswalksDisplayProvider = exports.EntitiesMapContext = exports.IdContext = exports.ProfilePerspectiveViewContext = exports.PivotingAttributeContext = exports.UsersContext = exports.CollaborationContext = exports.BlockImageGalleryDialogContext = exports.ViewIdContext = exports.PopupBoundariesContext = exports.HistoryDiffContext = exports.AsyncMountContext = void 0;
4
4
  var AsyncMountContext_1 = require("./AsyncMountContext");
5
5
  Object.defineProperty(exports, "AsyncMountContext", { enumerable: true, get: function () { return AsyncMountContext_1.AsyncMountContext; } });
6
6
  var HistoryAppearanceContext_1 = require("./HistoryAppearanceContext");
@@ -48,3 +48,5 @@ Object.defineProperty(exports, "ReloadFacetProvider", { enumerable: true, get: f
48
48
  Object.defineProperty(exports, "useReloadFacet", { enumerable: true, get: function () { return ReloadFacetContext_1.useReloadFacet; } });
49
49
  var SearchFiltersContext_1 = require("./SearchFiltersContext");
50
50
  Object.defineProperty(exports, "SearchFiltersContext", { enumerable: true, get: function () { return SearchFiltersContext_1.SearchFiltersContext; } });
51
+ var SnackbarContext_1 = require("./SnackbarContext");
52
+ Object.defineProperty(exports, "SnackbarContext", { enumerable: true, get: function () { return SnackbarContext_1.SnackbarContext; } });
@@ -21,3 +21,4 @@ export { useMarkAsNotMatchRequest } from './useMarkAsNotMatchRequest';
21
21
  export { useCustomScripts } from './useCustomScripts';
22
22
  export { useEditableConnection } from './useEditableConnection';
23
23
  export { useReadableSearchState } from './useReadableSearchState';
24
+ export { useSnackbar } from './useSnackbar';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useReadableSearchState = exports.useEditableConnection = exports.useCustomScripts = exports.useMarkAsNotMatchRequest = exports.useMergeAllRequest = exports.usePagingSimulator = exports.useMatchesLoader = exports.useConfigPermissions = exports.useWhyDidYouUpdate = exports.useUsers = exports.useSavedState = exports.useSafePromise = exports.useRunOnceAfterValueInitialization = exports.useRelationsLoader = exports.useRelationTypeSelector = exports.usePrevious = exports.useDidUpdateEffect = exports.useCommentsEntitiesMap = exports.useCollaboration = exports.useAsyncMount = exports.CustomAction = exports.useAPI = exports.useActions = void 0;
3
+ exports.useSnackbar = exports.useReadableSearchState = exports.useEditableConnection = exports.useCustomScripts = exports.useMarkAsNotMatchRequest = exports.useMergeAllRequest = exports.usePagingSimulator = exports.useMatchesLoader = exports.useConfigPermissions = exports.useWhyDidYouUpdate = exports.useUsers = exports.useSavedState = exports.useSafePromise = exports.useRunOnceAfterValueInitialization = exports.useRelationsLoader = exports.useRelationTypeSelector = exports.usePrevious = exports.useDidUpdateEffect = exports.useCommentsEntitiesMap = exports.useCollaboration = exports.useAsyncMount = exports.CustomAction = exports.useAPI = exports.useActions = void 0;
4
4
  var useActions_1 = require("./useActions");
5
5
  Object.defineProperty(exports, "useActions", { enumerable: true, get: function () { return useActions_1.useActions; } });
6
6
  var useAPI_1 = require("./useAPI");
@@ -46,3 +46,5 @@ var useEditableConnection_1 = require("./useEditableConnection");
46
46
  Object.defineProperty(exports, "useEditableConnection", { enumerable: true, get: function () { return useEditableConnection_1.useEditableConnection; } });
47
47
  var useReadableSearchState_1 = require("./useReadableSearchState");
48
48
  Object.defineProperty(exports, "useReadableSearchState", { enumerable: true, get: function () { return useReadableSearchState_1.useReadableSearchState; } });
49
+ var useSnackbar_1 = require("./useSnackbar");
50
+ Object.defineProperty(exports, "useSnackbar", { enumerable: true, get: function () { return useSnackbar_1.useSnackbar; } });
@@ -4,8 +4,9 @@ declare type Props = {
4
4
  entity: Entity;
5
5
  onFinishRequest?: () => void;
6
6
  onStartRequest?: () => void;
7
+ onSuccess?: () => void;
7
8
  };
8
- export declare const useMarkAsNotMatchRequest: ({ entities, entity, onFinishRequest, onStartRequest }: Props) => {
9
+ export declare const useMarkAsNotMatchRequest: ({ entities, entity, onFinishRequest, onStartRequest, onSuccess }: Props) => {
9
10
  isPending: boolean;
10
11
  sendMarkAsNotMatchRequest: () => void;
11
12
  };
@@ -9,7 +9,7 @@ var react_redux_1 = require("react-redux");
9
9
  var mdm_module_1 = __importDefault(require("@reltio/mdm-module"));
10
10
  var react_1 = require("react");
11
11
  var useMarkAsNotMatchRequest = function (_a) {
12
- var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest;
12
+ var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest, onSuccess = _a.onSuccess;
13
13
  var tenant = react_redux_1.useSelector(mdm_module_1.default.selectors.getTenant);
14
14
  var dtssPath = react_redux_1.useSelector(mdm_module_1.default.selectors.getDtssPath);
15
15
  var _b = react_1.useState(false), isPending = _b[0], setIsPending = _b[1];
@@ -17,13 +17,15 @@ var useMarkAsNotMatchRequest = function (_a) {
17
17
  onStartRequest === null || onStartRequest === void 0 ? void 0 : onStartRequest();
18
18
  setIsPending(true);
19
19
  var params = { dtssPath: dtssPath, customerTenant: tenant, entity: entity, entities: entities };
20
- (mdm_sdk_1.isDataTenantEntity(entity)
21
- ? mdm_sdk_1.markDataTenantEntityAsNotMatch(params)
22
- : mdm_sdk_1.markMixedEntitiesAsNotMatches(params)).finally(function () {
20
+ (mdm_sdk_1.isDataTenantEntity(entity) ? mdm_sdk_1.markDataTenantEntityAsNotMatch(params) : mdm_sdk_1.markMixedEntitiesAsNotMatches(params))
21
+ .then(function () {
22
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess();
23
+ })
24
+ .finally(function () {
23
25
  onFinishRequest === null || onFinishRequest === void 0 ? void 0 : onFinishRequest();
24
26
  setIsPending(false);
25
27
  });
26
- }, [dtssPath, entities, entity, onFinishRequest, onStartRequest, tenant]);
28
+ }, [dtssPath, entities, entity, onFinishRequest, onStartRequest, onSuccess, tenant]);
27
29
  return { isPending: isPending, sendMarkAsNotMatchRequest: sendMarkAsNotMatchRequest };
28
30
  };
29
31
  exports.useMarkAsNotMatchRequest = useMarkAsNotMatchRequest;
@@ -4,9 +4,10 @@ declare type Props = {
4
4
  entity: Entity;
5
5
  onFinishRequest?: () => void;
6
6
  onStartRequest?: () => void;
7
+ onSuccess?: () => void;
7
8
  onError?: () => void;
8
9
  };
9
- export declare const useMergeAllRequest: ({ entities, entity, onFinishRequest, onStartRequest, onError }: Props) => {
10
+ export declare const useMergeAllRequest: ({ entities, entity, onFinishRequest, onStartRequest, onSuccess, onError }: Props) => {
10
11
  isPending: boolean;
11
12
  sendMergeAllRequest: () => void;
12
13
  };
@@ -10,7 +10,7 @@ var mdm_module_1 = __importDefault(require("@reltio/mdm-module"));
10
10
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
11
11
  var core_1 = require("../core");
12
12
  var useMergeAllRequest = function (_a) {
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
+ var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest, onSuccess = _a.onSuccess, _b = _a.onError, onError = _b === void 0 ? core_1.noop : _b;
14
14
  var tenant = react_redux_1.useSelector(mdm_module_1.default.selectors.getTenant);
15
15
  var dtssPath = react_redux_1.useSelector(mdm_module_1.default.selectors.getDtssPath);
16
16
  var _c = react_1.useState(false), isPending = _c[0], setIsPending = _c[1];
@@ -21,12 +21,15 @@ var useMergeAllRequest = function (_a) {
21
21
  (mdm_sdk_1.isDataTenantEntity(entity)
22
22
  ? mdm_sdk_1.mergeDataTenantEntity(params)
23
23
  : mdm_sdk_1.mergeCustomerTenantEntityWithMixedEntities(params))
24
+ .then(function () {
25
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess();
26
+ })
24
27
  .catch(onError)
25
28
  .finally(function () {
26
29
  onFinishRequest === null || onFinishRequest === void 0 ? void 0 : onFinishRequest();
27
30
  setIsPending(false);
28
31
  });
29
- }, [dtssPath, entities, entity, onFinishRequest, onStartRequest, tenant]);
32
+ }, [dtssPath, entities, entity, onError, onFinishRequest, onStartRequest, onSuccess, tenant]);
30
33
  return { isPending: isPending, sendMergeAllRequest: sendMergeAllRequest };
31
34
  };
32
35
  exports.useMergeAllRequest = useMergeAllRequest;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export declare const useSnackbar: () => {
3
+ SnackbarRenderer: () => JSX.Element;
4
+ showSnackbarMessage: (message: any) => void;
5
+ };
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.useSnackbar = void 0;
26
+ var react_1 = __importStar(require("react"));
27
+ var Portal_1 = __importDefault(require("@material-ui/core/Portal"));
28
+ var Snackbar_1 = __importDefault(require("@material-ui/core/Snackbar"));
29
+ var useSnackbar = function () {
30
+ var _a = react_1.useState(false), isOpenSnackbar = _a[0], setIsOpenSnackbar = _a[1];
31
+ var _b = react_1.useState(''), snackbarMessage = _b[0], setSnackbarMessage = _b[1];
32
+ var closeSnackbar = react_1.useCallback(function () {
33
+ setIsOpenSnackbar(false);
34
+ setSnackbarMessage('');
35
+ }, []);
36
+ var showSnackbarMessage = react_1.useCallback(function (message) {
37
+ setIsOpenSnackbar(true);
38
+ setSnackbarMessage(message);
39
+ }, []);
40
+ var SnackbarRenderer = react_1.useCallback(function () {
41
+ return (react_1.default.createElement(Portal_1.default, { container: document.body },
42
+ react_1.default.createElement(Snackbar_1.default, { open: isOpenSnackbar, autoHideDuration: 5000, onClose: closeSnackbar, message: snackbarMessage })));
43
+ }, [isOpenSnackbar, closeSnackbar, snackbarMessage]);
44
+ return { SnackbarRenderer: SnackbarRenderer, showSnackbarMessage: showSnackbarMessage };
45
+ };
46
+ exports.useSnackbar = useSnackbar;
@@ -5,6 +5,7 @@ import Button from '@material-ui/core/Button';
5
5
  import FilterIcon from '@material-ui/icons/FilterList';
6
6
  import Typography from '@material-ui/core/Typography';
7
7
  import Divider from '@material-ui/core/Divider';
8
+ import { buildFilterQueryString } from '@reltio/mdm-sdk';
8
9
  import AttributesFiltersBuilder from '../AttributesFiltersBuilder/AttributesFiltersBuilder';
9
10
  import ActionButtons from './ActionButtons/ActionButtons';
10
11
  import { useStyles } from './styles';
@@ -14,10 +15,7 @@ var AttributesFiltersButton = function (_a) {
14
15
  var buttonRef = useRef();
15
16
  var _b = useState(false), isOpen = _b[0], setIsOpen = _b[1];
16
17
  var _c = useState([]), filters = _c[0], setFilters = _c[1];
17
- var isFiltersApplied = filtersProp.some(function (_a) {
18
- var fieldName = _a.fieldName, filter = _a.filter, values = _a.values;
19
- return fieldName && filter && values.length;
20
- });
18
+ var isFiltersApplied = !!buildFilterQueryString()(filtersProp);
21
19
  var buttonColor = isFiltersApplied ? 'primary' : 'inherit';
22
20
  var togglePopup = function () { return setIsOpen(function (open) { return !open; }); };
23
21
  useEffect(function () {
@@ -11,6 +11,7 @@ declare type Props = {
11
11
  disabled?: boolean;
12
12
  onStartRequest?: () => void;
13
13
  onFinishRequest?: () => void;
14
+ onSuccess?: () => void;
14
15
  onError?: (error?: ApiError) => void;
15
16
  };
16
17
  export declare const MergeButton: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLLIElement>>;
@@ -27,13 +27,14 @@ 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, onError = _a.onError, otherProps = __rest(_a, ["className", "mode", "onMenuClose", "disabled", "entity", "entities", "onStartRequest", "onFinishRequest", "onError"]);
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, onSuccess = _a.onSuccess, onError = _a.onError, otherProps = __rest(_a, ["className", "mode", "onMenuClose", "disabled", "entity", "entities", "onStartRequest", "onFinishRequest", "onSuccess", "onError"]);
31
31
  var sendMergeAllRequest = useMergeAllRequest({
32
32
  entity: entity,
33
33
  entities: entities,
34
34
  onStartRequest: onStartRequest,
35
35
  onFinishRequest: onFinishRequest,
36
- onError: onError
36
+ onError: onError,
37
+ onSuccess: onSuccess
37
38
  }).sendMergeAllRequest;
38
39
  return (React.createElement(ActionButton, __assign({ className: className, disabled: disabled, mode: mode, label: i18n.text('Merge'), icon: MergeIcon, onClick: sendMergeAllRequest, onMenuClose: onMenuClose, ref: ref }, otherProps)));
39
40
  });
@@ -11,6 +11,7 @@ declare type Props = {
11
11
  disabled?: boolean;
12
12
  onStartRequest?: () => void;
13
13
  onFinishRequest?: () => void;
14
+ onSuccess?: () => void;
14
15
  };
15
16
  export declare const NotMatchButton: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLLIElement>>;
16
17
  export {};
@@ -27,12 +27,13 @@ import { noop } from '../../core';
27
27
  import i18n from 'ui-i18n';
28
28
  import { useMarkAsNotMatchRequest } from '../../hooks/useMarkAsNotMatchRequest';
29
29
  export var NotMatchButton = 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, onSuccess = _a.onSuccess, otherProps = __rest(_a, ["className", "mode", "onMenuClose", "disabled", "entity", "entities", "onStartRequest", "onFinishRequest", "onSuccess"]);
31
31
  var sendMarkAsNotMatchRequest = useMarkAsNotMatchRequest({
32
32
  entity: entity,
33
33
  entities: entities,
34
34
  onStartRequest: onStartRequest,
35
- onFinishRequest: onFinishRequest
35
+ onFinishRequest: onFinishRequest,
36
+ onSuccess: onSuccess
36
37
  }).sendMarkAsNotMatchRequest;
37
38
  return (React.createElement(ActionButton, __assign({ className: className, disabled: disabled, mode: mode, label: i18n.text('Not a match'), icon: NotMatchIcon, onClick: sendMarkAsNotMatchRequest, onMenuClose: onMenuClose, ref: ref }, otherProps)));
38
39
  });
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const SnackbarContext: React.Context<(message: string) => void>;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export var SnackbarContext = React.createContext(function () { });
3
+ SnackbarContext.displayName = 'SnackbarContext';
@@ -18,3 +18,4 @@ export { EntityContext } from './EntityContext';
18
18
  export { SandboxAPIContext } from './SandboxAPIContext';
19
19
  export { useReloadAllFacets, ReloadFacetProvider, useReloadFacet } from './ReloadFacetContext';
20
20
  export { SearchFiltersContext } from './SearchFiltersContext';
21
+ export { SnackbarContext } from './SnackbarContext';
@@ -18,3 +18,4 @@ export { EntityContext } from './EntityContext';
18
18
  export { SandboxAPIContext } from './SandboxAPIContext';
19
19
  export { useReloadAllFacets, ReloadFacetProvider, useReloadFacet } from './ReloadFacetContext';
20
20
  export { SearchFiltersContext } from './SearchFiltersContext';
21
+ export { SnackbarContext } from './SnackbarContext';
@@ -21,3 +21,4 @@ export { useMarkAsNotMatchRequest } from './useMarkAsNotMatchRequest';
21
21
  export { useCustomScripts } from './useCustomScripts';
22
22
  export { useEditableConnection } from './useEditableConnection';
23
23
  export { useReadableSearchState } from './useReadableSearchState';
24
+ export { useSnackbar } from './useSnackbar';
@@ -20,3 +20,4 @@ export { useMarkAsNotMatchRequest } from './useMarkAsNotMatchRequest';
20
20
  export { useCustomScripts } from './useCustomScripts';
21
21
  export { useEditableConnection } from './useEditableConnection';
22
22
  export { useReadableSearchState } from './useReadableSearchState';
23
+ export { useSnackbar } from './useSnackbar';
@@ -4,8 +4,9 @@ declare type Props = {
4
4
  entity: Entity;
5
5
  onFinishRequest?: () => void;
6
6
  onStartRequest?: () => void;
7
+ onSuccess?: () => void;
7
8
  };
8
- export declare const useMarkAsNotMatchRequest: ({ entities, entity, onFinishRequest, onStartRequest }: Props) => {
9
+ export declare const useMarkAsNotMatchRequest: ({ entities, entity, onFinishRequest, onStartRequest, onSuccess }: Props) => {
9
10
  isPending: boolean;
10
11
  sendMarkAsNotMatchRequest: () => void;
11
12
  };
@@ -3,7 +3,7 @@ import { useSelector } from 'react-redux';
3
3
  import mdmModule from '@reltio/mdm-module';
4
4
  import { useCallback, useState } from 'react';
5
5
  export var useMarkAsNotMatchRequest = function (_a) {
6
- var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest;
6
+ var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest, onSuccess = _a.onSuccess;
7
7
  var tenant = useSelector(mdmModule.selectors.getTenant);
8
8
  var dtssPath = useSelector(mdmModule.selectors.getDtssPath);
9
9
  var _b = useState(false), isPending = _b[0], setIsPending = _b[1];
@@ -11,12 +11,14 @@ export var useMarkAsNotMatchRequest = function (_a) {
11
11
  onStartRequest === null || onStartRequest === void 0 ? void 0 : onStartRequest();
12
12
  setIsPending(true);
13
13
  var params = { dtssPath: dtssPath, customerTenant: tenant, entity: entity, entities: entities };
14
- (isDataTenantEntity(entity)
15
- ? markDataTenantEntityAsNotMatch(params)
16
- : markMixedEntitiesAsNotMatches(params)).finally(function () {
14
+ (isDataTenantEntity(entity) ? markDataTenantEntityAsNotMatch(params) : markMixedEntitiesAsNotMatches(params))
15
+ .then(function () {
16
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess();
17
+ })
18
+ .finally(function () {
17
19
  onFinishRequest === null || onFinishRequest === void 0 ? void 0 : onFinishRequest();
18
20
  setIsPending(false);
19
21
  });
20
- }, [dtssPath, entities, entity, onFinishRequest, onStartRequest, tenant]);
22
+ }, [dtssPath, entities, entity, onFinishRequest, onStartRequest, onSuccess, tenant]);
21
23
  return { isPending: isPending, sendMarkAsNotMatchRequest: sendMarkAsNotMatchRequest };
22
24
  };
@@ -4,9 +4,10 @@ declare type Props = {
4
4
  entity: Entity;
5
5
  onFinishRequest?: () => void;
6
6
  onStartRequest?: () => void;
7
+ onSuccess?: () => void;
7
8
  onError?: () => void;
8
9
  };
9
- export declare const useMergeAllRequest: ({ entities, entity, onFinishRequest, onStartRequest, onError }: Props) => {
10
+ export declare const useMergeAllRequest: ({ entities, entity, onFinishRequest, onStartRequest, onSuccess, onError }: Props) => {
10
11
  isPending: boolean;
11
12
  sendMergeAllRequest: () => void;
12
13
  };
@@ -4,7 +4,7 @@ import mdmModule from '@reltio/mdm-module';
4
4
  import { isDataTenantEntity, mergeCustomerTenantEntityWithMixedEntities, mergeDataTenantEntity } from '@reltio/mdm-sdk';
5
5
  import { noop } from '../core';
6
6
  export var useMergeAllRequest = function (_a) {
7
- var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest, _b = _a.onError, onError = _b === void 0 ? noop : _b;
7
+ var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest, onSuccess = _a.onSuccess, _b = _a.onError, onError = _b === void 0 ? noop : _b;
8
8
  var tenant = useSelector(mdmModule.selectors.getTenant);
9
9
  var dtssPath = useSelector(mdmModule.selectors.getDtssPath);
10
10
  var _c = useState(false), isPending = _c[0], setIsPending = _c[1];
@@ -15,11 +15,14 @@ export var useMergeAllRequest = function (_a) {
15
15
  (isDataTenantEntity(entity)
16
16
  ? mergeDataTenantEntity(params)
17
17
  : mergeCustomerTenantEntityWithMixedEntities(params))
18
+ .then(function () {
19
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess();
20
+ })
18
21
  .catch(onError)
19
22
  .finally(function () {
20
23
  onFinishRequest === null || onFinishRequest === void 0 ? void 0 : onFinishRequest();
21
24
  setIsPending(false);
22
25
  });
23
- }, [dtssPath, entities, entity, onFinishRequest, onStartRequest, tenant]);
26
+ }, [dtssPath, entities, entity, onError, onFinishRequest, onStartRequest, onSuccess, tenant]);
24
27
  return { isPending: isPending, sendMergeAllRequest: sendMergeAllRequest };
25
28
  };
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export declare const useSnackbar: () => {
3
+ SnackbarRenderer: () => JSX.Element;
4
+ showSnackbarMessage: (message: any) => void;
5
+ };
@@ -0,0 +1,20 @@
1
+ import React, { useCallback, useState } from 'react';
2
+ import Portal from '@material-ui/core/Portal';
3
+ import Snackbar from '@material-ui/core/Snackbar';
4
+ export var useSnackbar = function () {
5
+ var _a = useState(false), isOpenSnackbar = _a[0], setIsOpenSnackbar = _a[1];
6
+ var _b = useState(''), snackbarMessage = _b[0], setSnackbarMessage = _b[1];
7
+ var closeSnackbar = useCallback(function () {
8
+ setIsOpenSnackbar(false);
9
+ setSnackbarMessage('');
10
+ }, []);
11
+ var showSnackbarMessage = useCallback(function (message) {
12
+ setIsOpenSnackbar(true);
13
+ setSnackbarMessage(message);
14
+ }, []);
15
+ var SnackbarRenderer = useCallback(function () {
16
+ return (React.createElement(Portal, { container: document.body },
17
+ React.createElement(Snackbar, { open: isOpenSnackbar, autoHideDuration: 5000, onClose: closeSnackbar, message: snackbarMessage })));
18
+ }, [isOpenSnackbar, closeSnackbar, snackbarMessage]);
19
+ return { SnackbarRenderer: SnackbarRenderer, showSnackbarMessage: showSnackbarMessage };
20
+ };
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@reltio/components",
3
- "version": "1.4.1106",
3
+ "version": "1.4.1109",
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.1106",
11
- "@reltio/mdm-sdk": "^1.4.1106",
10
+ "@reltio/mdm-module": "^1.4.1109",
11
+ "@reltio/mdm-sdk": "^1.4.1109",
12
12
  "classnames": "^2.2.5",
13
13
  "d3-cloud": "^1.2.5",
14
14
  "d3-geo": "^2.0.1",