@reltio/components 1.4.2188 → 1.4.2190

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/AdvancedSearchFabButton/AdvancedSearchFabButton.d.ts +1 -0
  2. package/AdvancedSearchFabButton/AdvancedSearchFabButton.js +2 -2
  3. package/AttributesFiltersButton/AttributesFiltersButton.d.ts +4 -1
  4. package/AttributesFiltersButton/AttributesFiltersButton.js +4 -4
  5. package/Drawer/Drawer.d.ts +1 -6
  6. package/Drawer/Drawer.js +4 -4
  7. package/FacetGroup/FacetGroup.d.ts +2 -1
  8. package/FacetGroup/FacetGroup.js +2 -2
  9. package/FacetsSelector/helpers.d.ts +1 -4
  10. package/QuickFiltersDrawer/QuickFiltersDrawer.d.ts +2 -2
  11. package/QuickFiltersDrawer/QuickFiltersDrawer.js +23 -7
  12. package/QuickFiltersDrawer/QuickFiltersDrawer.module.css.js +2 -2
  13. package/cjs/AdvancedSearchFabButton/AdvancedSearchFabButton.d.ts +1 -0
  14. package/cjs/AdvancedSearchFabButton/AdvancedSearchFabButton.js +2 -2
  15. package/cjs/AttributesFiltersButton/AttributesFiltersButton.d.ts +4 -1
  16. package/cjs/AttributesFiltersButton/AttributesFiltersButton.js +4 -4
  17. package/cjs/Drawer/Drawer.d.ts +1 -6
  18. package/cjs/Drawer/Drawer.js +3 -4
  19. package/cjs/FacetGroup/FacetGroup.d.ts +2 -1
  20. package/cjs/FacetGroup/FacetGroup.js +2 -2
  21. package/cjs/FacetsSelector/helpers.d.ts +1 -4
  22. package/cjs/QuickFiltersDrawer/QuickFiltersDrawer.d.ts +2 -2
  23. package/cjs/QuickFiltersDrawer/QuickFiltersDrawer.js +46 -7
  24. package/cjs/QuickFiltersDrawer/QuickFiltersDrawer.module.css.js +2 -2
  25. package/cjs/features/workflow/AddWorkflowDialog/AddWorkflowDialog.spec.js +67 -0
  26. package/cjs/features/workflow/TaskActionButtons/TaskActionButtons.spec.js +1 -1
  27. package/cjs/features/workflow/WorkflowTaskCard/components/DataChangeRequestTaskCard/DataChangeRequestTaskCard.spec.js +80 -5
  28. package/cjs/features/workflow/WorkflowTaskCard/components/GenericWorkflowTaskCard/GenericWorkflowTaskCard.spec.js +104 -0
  29. package/cjs/features/workflow/WorkflowTaskCard/components/PotentialMatchTaskCard/PotentialMatchTaskCard.spec.js +69 -3
  30. package/features/workflow/AddWorkflowDialog/AddWorkflowDialog.spec.js +67 -0
  31. package/features/workflow/TaskActionButtons/TaskActionButtons.spec.js +1 -1
  32. package/features/workflow/WorkflowTaskCard/components/DataChangeRequestTaskCard/DataChangeRequestTaskCard.spec.js +82 -7
  33. package/features/workflow/WorkflowTaskCard/components/GenericWorkflowTaskCard/GenericWorkflowTaskCard.spec.js +105 -1
  34. package/features/workflow/WorkflowTaskCard/components/PotentialMatchTaskCard/PotentialMatchTaskCard.spec.js +71 -5
  35. package/package.json +1 -1
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  type Props = {
3
3
  tooltipTitle?: string;
4
+ dataReltioId?: string;
4
5
  onClick: () => void;
5
6
  };
6
7
  export declare const AdvancedSearchFabButton: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
@@ -29,8 +29,8 @@ import { withTooltip } from '../HOCs/withTooltip';
29
29
  import styles from './AdvancedSearchFabButton.module.css';
30
30
  var FabButtonWithTooltip = withTooltip(Fab);
31
31
  export var AdvancedSearchFabButton = forwardRef(function (_a, ref) {
32
- var tooltipTitle = _a.tooltipTitle, onClick = _a.onClick, otherProps = __rest(_a, ["tooltipTitle", "onClick"]);
33
- return (React.createElement(FabButtonWithTooltip, __assign({ tooltipTitle: tooltipTitle || i18n.text('Open advanced search'), tooltipPlacement: "bottom-end", variant: "extended", classes: { root: styles.buttonRoot, extended: styles.buttonExtended }, onClick: onClick, "data-reltio-id": "reltio-advanced-search-fab-button", ref: ref }, otherProps),
32
+ var tooltipTitle = _a.tooltipTitle, dataReltioId = _a.dataReltioId, onClick = _a.onClick, otherProps = __rest(_a, ["tooltipTitle", "dataReltioId", "onClick"]);
33
+ return (React.createElement(FabButtonWithTooltip, __assign({ tooltipTitle: tooltipTitle || i18n.text('Open advanced search'), tooltipPlacement: "bottom-end", variant: "extended", classes: { root: styles.buttonRoot, extended: styles.buttonExtended }, onClick: onClick, "data-reltio-id": dataReltioId || 'reltio-advanced-search-fab-button', ref: ref }, otherProps),
34
34
  React.createElement(TuneIcon, { color: "primary", className: styles.menuIcon }),
35
35
  React.createElement("span", { className: styles.buttonLabel }, i18n.text('Advanced search')),
36
36
  React.createElement(RightArrowIcon, { color: "action", className: styles.goToActionIcon })));
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { PopoverOrigin } from '@mui/material/Popover';
2
3
  import { SearchFilter } from '@reltio/mdm-sdk';
3
4
  import { AttributeSelectionInfo, AttributeSelectorItemsGroup, AttributesFilterComponentsClasses, AttributesTypesGroup } from '../types';
4
5
  type Props = {
@@ -16,6 +17,7 @@ type Props = {
16
17
  onTogglePopup?: (open: boolean) => void;
17
18
  isFiltersApplied?: boolean;
18
19
  dataReltioId?: string;
20
+ FilterButton?: React.ElementType;
19
21
  ButtonIcon?: React.ElementType;
20
22
  onFilterAttributeChange?: (attrSelectInfo: AttributeSelectionInfo) => void;
21
23
  onClear?: () => void;
@@ -23,6 +25,7 @@ type Props = {
23
25
  onApply?: () => void;
24
26
  popoverAnchorRef?: React.MutableRefObject<HTMLDivElement>;
25
27
  title?: string;
28
+ anchorOrigin?: PopoverOrigin;
26
29
  };
27
- declare const _default: React.MemoExoticComponent<({ filters: filtersProp, classes, attributesTypesGroups, attributesTypesGroupFilter, onChange, components, children, onTogglePopup, isFiltersApplied: isFiltersAppliedProp, dataReltioId, onFilterAttributeChange, onCancel, onClear, onApply, ButtonIcon, popoverAnchorRef, title }: Props) => React.JSX.Element>;
30
+ declare const _default: React.MemoExoticComponent<({ filters: filtersProp, classes, attributesTypesGroups, attributesTypesGroupFilter, onChange, components, children, onTogglePopup, isFiltersApplied: isFiltersAppliedProp, dataReltioId, onFilterAttributeChange, onCancel, onClear, onApply, FilterButton, ButtonIcon, popoverAnchorRef, title, anchorOrigin }: Props) => React.JSX.Element>;
28
31
  export default _default;
@@ -12,7 +12,7 @@ import { ActionButtons } from './components/ActionButtons/';
12
12
  import { useStyles } from './styles';
13
13
  var AttributesFiltersButton = function (_a) {
14
14
  var _b;
15
- var filtersProp = _a.filters, classes = _a.classes, attributesTypesGroups = _a.attributesTypesGroups, attributesTypesGroupFilter = _a.attributesTypesGroupFilter, onChange = _a.onChange, components = _a.components, children = _a.children, onTogglePopup = _a.onTogglePopup, isFiltersAppliedProp = _a.isFiltersApplied, dataReltioId = _a.dataReltioId, onFilterAttributeChange = _a.onFilterAttributeChange, onCancel = _a.onCancel, onClear = _a.onClear, onApply = _a.onApply, _c = _a.ButtonIcon, ButtonIcon = _c === void 0 ? FilterIcon : _c, popoverAnchorRef = _a.popoverAnchorRef, title = _a.title;
15
+ var filtersProp = _a.filters, classes = _a.classes, attributesTypesGroups = _a.attributesTypesGroups, attributesTypesGroupFilter = _a.attributesTypesGroupFilter, onChange = _a.onChange, components = _a.components, children = _a.children, onTogglePopup = _a.onTogglePopup, isFiltersAppliedProp = _a.isFiltersApplied, dataReltioId = _a.dataReltioId, onFilterAttributeChange = _a.onFilterAttributeChange, onCancel = _a.onCancel, onClear = _a.onClear, onApply = _a.onApply, FilterButton = _a.FilterButton, _c = _a.ButtonIcon, ButtonIcon = _c === void 0 ? FilterIcon : _c, popoverAnchorRef = _a.popoverAnchorRef, title = _a.title, anchorOrigin = _a.anchorOrigin;
16
16
  var styles = useStyles();
17
17
  var buttonRef = useRef();
18
18
  var _d = useState(false), isOpen = _d[0], setIsOpen = _d[1];
@@ -46,12 +46,12 @@ var AttributesFiltersButton = function (_a) {
46
46
  setFilters([]);
47
47
  }, [onClear]);
48
48
  return (React.createElement(React.Fragment, null,
49
- React.createElement(Button, { "data-reltio-id": dataReltioId, ref: buttonRef, color: buttonColor, classes: {
49
+ FilterButton ? (React.createElement(FilterButton, { onClick: togglePopup, ref: buttonRef, dataReltioId: dataReltioId })) : (React.createElement(Button, { "data-reltio-id": dataReltioId, ref: buttonRef, color: buttonColor, classes: {
50
50
  root: classNames(styles.triggerButton, classes === null || classes === void 0 ? void 0 : classes.triggerButton),
51
51
  textPrimary: styles.changedFiltersIndicator
52
52
  }, onClick: togglePopup },
53
- React.createElement(ButtonIcon, { color: buttonColor })),
54
- React.createElement(Popover, { open: isOpen, classes: { paper: classNames(styles.popupContent, classes === null || classes === void 0 ? void 0 : classes.filterPopup) }, anchorEl: (_b = popoverAnchorRef === null || popoverAnchorRef === void 0 ? void 0 : popoverAnchorRef.current) !== null && _b !== void 0 ? _b : buttonRef.current, onClose: togglePopup, anchorOrigin: {
53
+ React.createElement(ButtonIcon, { color: buttonColor }))),
54
+ React.createElement(Popover, { open: isOpen, classes: { paper: classNames(styles.popupContent, classes === null || classes === void 0 ? void 0 : classes.filterPopup) }, anchorEl: (_b = popoverAnchorRef === null || popoverAnchorRef === void 0 ? void 0 : popoverAnchorRef.current) !== null && _b !== void 0 ? _b : buttonRef.current, onClose: togglePopup, anchorOrigin: anchorOrigin !== null && anchorOrigin !== void 0 ? anchorOrigin : {
55
55
  vertical: 'bottom',
56
56
  horizontal: (popoverAnchorRef === null || popoverAnchorRef === void 0 ? void 0 : popoverAnchorRef.current) ? 'left' : 'right'
57
57
  }, transformOrigin: {
@@ -1,8 +1,3 @@
1
1
  import React from 'react';
2
2
  import { DrawerProps } from '@mui/material/Drawer';
3
- type Props = DrawerProps;
4
- export declare const Drawer: {
5
- ({ open, children, ...otherProps }: Props): React.JSX.Element;
6
- displayName: string;
7
- };
8
- export {};
3
+ export declare const Drawer: React.ForwardRefExoticComponent<Omit<DrawerProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
package/Drawer/Drawer.js CHANGED
@@ -20,10 +20,10 @@ var __rest = (this && this.__rest) || function (s, e) {
20
20
  }
21
21
  return t;
22
22
  };
23
- import React, { useState, useEffect } from 'react';
23
+ import React, { useState, useEffect, forwardRef } from 'react';
24
24
  import MUIDrawer from '@mui/material/Drawer';
25
25
  import { useTheme } from '@mui/material/styles';
26
- export var Drawer = function (_a) {
26
+ export var Drawer = forwardRef(function (_a, ref) {
27
27
  var _b = _a.open, open = _b === void 0 ? true : _b, children = _a.children, otherProps = __rest(_a, ["open", "children"]);
28
28
  var _c = useState(open), drawerContentsVisible = _c[0], setDrawerContentVisible = _c[1];
29
29
  var hideDelay = useTheme().transitions.duration.leavingScreen;
@@ -42,6 +42,6 @@ export var Drawer = function (_a) {
42
42
  }
43
43
  }
44
44
  }, [open, hideDelay, drawerContentsVisible]);
45
- return (React.createElement(MUIDrawer, __assign({ open: open }, otherProps), drawerContentsVisible && children));
46
- };
45
+ return (React.createElement(MUIDrawer, __assign({ open: open }, otherProps, { ref: ref }), drawerContentsVisible && children));
46
+ });
47
47
  Drawer.displayName = 'Drawer';
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  type Props = {
3
3
  children?: React.ReactNode;
4
4
  title?: string;
5
+ dataReltioId?: string;
5
6
  };
6
- export declare const FacetGroup: ({ children, title }: Props) => React.JSX.Element;
7
+ export declare const FacetGroup: ({ children, title, dataReltioId }: Props) => React.JSX.Element;
7
8
  export {};
@@ -2,8 +2,8 @@ import React from 'react';
2
2
  import { FacetGroupTitle } from '../FacetGroupTitle';
3
3
  import styles from './FacetGroup.module.css';
4
4
  export var FacetGroup = function (_a) {
5
- var children = _a.children, _b = _a.title, title = _b === void 0 ? '' : _b;
6
- return (React.createElement("div", { className: styles.facetGroupContainer },
5
+ var children = _a.children, _b = _a.title, title = _b === void 0 ? '' : _b, dataReltioId = _a.dataReltioId;
6
+ return (React.createElement("div", { className: styles.facetGroupContainer, "data-reltio-id": dataReltioId },
7
7
  React.createElement(FacetGroupTitle, { title: title }),
8
8
  children));
9
9
  };
@@ -9,8 +9,5 @@ declare const isSelectedFacet: ({ facet, selectedFacetsFieldNames }: {
9
9
  facet: any;
10
10
  selectedFacetsFieldNames: any;
11
11
  }) => boolean;
12
- declare const constructPopoverOrigin: (verticalOrigin: PopoverOrigin["vertical"], horizontalOrigin?: PopoverOrigin["horizontal"]) => {
13
- vertical: number | "bottom" | "top" | "center";
14
- horizontal: number | "left" | "right" | "center";
15
- };
12
+ declare const constructPopoverOrigin: (verticalOrigin: PopoverOrigin["vertical"], horizontalOrigin?: PopoverOrigin["horizontal"]) => PopoverOrigin;
16
13
  export { adjustVerticalPopupLayout, filterItemsInGroups, isSelectedFacet, constructPopoverOrigin };
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  type Props = {
3
3
  children: React.ReactNode;
4
- isOpen?: boolean;
4
+ showDrawer?: boolean;
5
5
  };
6
- export declare const QuickFiltersDrawer: ({ children, isOpen, ...otherProps }: Props) => React.JSX.Element;
6
+ export declare const QuickFiltersDrawer: ({ children, showDrawer, ...otherProps }: Props) => React.JSX.Element;
7
7
  export {};
@@ -20,14 +20,30 @@ var __rest = (this && this.__rest) || function (s, e) {
20
20
  }
21
21
  return t;
22
22
  };
23
- import React from 'react';
23
+ import React, { useState } from 'react';
24
+ import classnames from 'classnames';
25
+ import ChevronLeftIcon from '@mui/icons-material/ChevronLeft';
26
+ import Collapse from '@mui/material/Collapse';
27
+ import Fade from '@mui/material/Fade';
24
28
  import { Drawer } from '../Drawer';
29
+ import { SmallIconButton } from '../SmallIconButton';
25
30
  import styles from './QuickFiltersDrawer.module.css';
26
31
  export var QuickFiltersDrawer = function (_a) {
27
- var children = _a.children, _b = _a.isOpen, isOpen = _b === void 0 ? true : _b, otherProps = __rest(_a, ["children", "isOpen"]);
28
- return (React.createElement(Drawer, __assign({ variant: 'persistent', anchor: 'left', open: isOpen, classes: {
29
- root: styles.drawer,
30
- paper: styles.drawerPaper,
31
- docked: styles.docked
32
- } }, otherProps), children));
32
+ var _b, _c;
33
+ var children = _a.children, _d = _a.showDrawer, showDrawer = _d === void 0 ? true : _d, otherProps = __rest(_a, ["children", "showDrawer"]);
34
+ var _e = useState(true), isExpanded = _e[0], setIsExpanded = _e[1];
35
+ var handleToggleDrawer = function () {
36
+ setIsExpanded(!isExpanded);
37
+ };
38
+ return (React.createElement("div", { className: classnames(styles.drawerContainer, (_b = {}, _b[styles.drawerCollapsed] = !isExpanded, _b)) },
39
+ React.createElement(Collapse, { in: isExpanded, orientation: "horizontal", timeout: isExpanded ? 200 : 400, unmountOnExit: true },
40
+ React.createElement(Fade, { in: isExpanded, timeout: isExpanded ? 400 : 200 },
41
+ React.createElement(Drawer, __assign({ variant: 'persistent', anchor: 'left', open: showDrawer, classes: {
42
+ root: styles.drawer,
43
+ paper: styles.drawerPaper,
44
+ docked: styles.docked
45
+ } }, otherProps), children))),
46
+ showDrawer && (React.createElement("div", { className: styles.drawerTrigger },
47
+ React.createElement("div", { className: styles.drawerTriggerIconWrapper },
48
+ React.createElement(SmallIconButton, { className: styles.drawerTriggerIcon, iconClassName: classnames((_c = {}, _c[styles.drawerCollapsedIcon] = !isExpanded, _c)), icon: ChevronLeftIcon, size: "M", onClick: handleToggleDrawer }))))));
33
49
  };
@@ -1,9 +1,9 @@
1
- const styles = {"drawer":"QuickFiltersDrawer-drawer--NXZwq","docked":"QuickFiltersDrawer-docked--xMI4g","drawerPaper":"QuickFiltersDrawer-drawerPaper--OkbOT"};
1
+ const styles = {"drawerContainer":"QuickFiltersDrawer-drawerContainer--MqIvN","drawerTriggerIconWrapper":"QuickFiltersDrawer-drawerTriggerIconWrapper--9ziQU","drawer":"QuickFiltersDrawer-drawer--NXZwq","docked":"QuickFiltersDrawer-docked--xMI4g","drawerPaper":"QuickFiltersDrawer-drawerPaper--OkbOT","drawerTrigger":"QuickFiltersDrawer-drawerTrigger--2O2ev","drawerCollapsed":"QuickFiltersDrawer-drawerCollapsed--VoNFo","drawerTriggerIcon":"QuickFiltersDrawer-drawerTriggerIcon--sc8lb","drawerCollapsedIcon":"QuickFiltersDrawer-drawerCollapsedIcon--o7My2"};
2
2
  if (typeof document !== 'undefined') {
3
3
  const head = document.head || document.getElementsByTagName('head')[0]
4
4
  const style = document.createElement('style');
5
5
  style.type = 'text/css'
6
- style.innerHTML = `.QuickFiltersDrawer-drawer--NXZwq{flex:0 0 288px!important}.QuickFiltersDrawer-docked--xMI4g{flex:0 0 288px}.QuickFiltersDrawer-drawerPaper--OkbOT{border-right:1px solid rgba(0,0,0,.33);display:flex;flex-direction:column;position:relative;width:288px}`;
6
+ style.innerHTML = `.QuickFiltersDrawer-drawerContainer--MqIvN{background-color:#fff;display:flex;flex-direction:row}.QuickFiltersDrawer-drawerContainer--MqIvN:hover .QuickFiltersDrawer-drawerTriggerIconWrapper--9ziQU{display:block}.QuickFiltersDrawer-drawer--NXZwq{flex:0 0 288px!important;height:100%}.QuickFiltersDrawer-docked--xMI4g{flex:0 0 288px}.QuickFiltersDrawer-drawerPaper--OkbOT{border-right:1px solid rgba(0,0,0,.33);display:flex;flex-direction:column;position:relative;width:288px}.QuickFiltersDrawer-drawerTrigger--2O2ev{background-color:#fff;position:relative}.QuickFiltersDrawer-drawerCollapsed--VoNFo .QuickFiltersDrawer-drawerTrigger--2O2ev{border-right:1px solid rgba(0,0,0,.12);width:28px}.QuickFiltersDrawer-drawerCollapsed--VoNFo .QuickFiltersDrawer-drawerTriggerIconWrapper--9ziQU{display:block;left:auto;right:-15px}.QuickFiltersDrawer-drawerTriggerIconWrapper--9ziQU{background-color:#fff;display:none;left:-15px;position:absolute;top:18px;z-index:var(--mui-zIndex-drawer)}.QuickFiltersDrawer-drawerTriggerIcon--sc8lb{border:1px solid rgba(0,0,0,.12)}.QuickFiltersDrawer-drawerTriggerIcon--sc8lb:hover{background-color:var(--mui-palette-action-hover)}.QuickFiltersDrawer-drawerCollapsedIcon--o7My2{transform:rotate(180deg)}`;
7
7
  head.appendChild(style);
8
8
  }
9
9
  export default styles;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  type Props = {
3
3
  tooltipTitle?: string;
4
+ dataReltioId?: string;
4
5
  onClick: () => void;
5
6
  };
6
7
  export declare const AdvancedSearchFabButton: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
@@ -58,8 +58,8 @@ var withTooltip_1 = require("../HOCs/withTooltip");
58
58
  var AdvancedSearchFabButton_module_css_1 = __importDefault(require("./AdvancedSearchFabButton.module.css"));
59
59
  var FabButtonWithTooltip = (0, withTooltip_1.withTooltip)(Fab_1.default);
60
60
  exports.AdvancedSearchFabButton = (0, react_1.forwardRef)(function (_a, ref) {
61
- var tooltipTitle = _a.tooltipTitle, onClick = _a.onClick, otherProps = __rest(_a, ["tooltipTitle", "onClick"]);
62
- return (react_1.default.createElement(FabButtonWithTooltip, __assign({ tooltipTitle: tooltipTitle || ui_i18n_1.default.text('Open advanced search'), tooltipPlacement: "bottom-end", variant: "extended", classes: { root: AdvancedSearchFabButton_module_css_1.default.buttonRoot, extended: AdvancedSearchFabButton_module_css_1.default.buttonExtended }, onClick: onClick, "data-reltio-id": "reltio-advanced-search-fab-button", ref: ref }, otherProps),
61
+ var tooltipTitle = _a.tooltipTitle, dataReltioId = _a.dataReltioId, onClick = _a.onClick, otherProps = __rest(_a, ["tooltipTitle", "dataReltioId", "onClick"]);
62
+ return (react_1.default.createElement(FabButtonWithTooltip, __assign({ tooltipTitle: tooltipTitle || ui_i18n_1.default.text('Open advanced search'), tooltipPlacement: "bottom-end", variant: "extended", classes: { root: AdvancedSearchFabButton_module_css_1.default.buttonRoot, extended: AdvancedSearchFabButton_module_css_1.default.buttonExtended }, onClick: onClick, "data-reltio-id": dataReltioId || 'reltio-advanced-search-fab-button', ref: ref }, otherProps),
63
63
  react_1.default.createElement(Tune_1.default, { color: "primary", className: AdvancedSearchFabButton_module_css_1.default.menuIcon }),
64
64
  react_1.default.createElement("span", { className: AdvancedSearchFabButton_module_css_1.default.buttonLabel }, ui_i18n_1.default.text('Advanced search')),
65
65
  react_1.default.createElement(ChevronRight_1.default, { color: "action", className: AdvancedSearchFabButton_module_css_1.default.goToActionIcon })));
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { PopoverOrigin } from '@mui/material/Popover';
2
3
  import { SearchFilter } from '@reltio/mdm-sdk';
3
4
  import { AttributeSelectionInfo, AttributeSelectorItemsGroup, AttributesFilterComponentsClasses, AttributesTypesGroup } from '../types';
4
5
  type Props = {
@@ -16,6 +17,7 @@ type Props = {
16
17
  onTogglePopup?: (open: boolean) => void;
17
18
  isFiltersApplied?: boolean;
18
19
  dataReltioId?: string;
20
+ FilterButton?: React.ElementType;
19
21
  ButtonIcon?: React.ElementType;
20
22
  onFilterAttributeChange?: (attrSelectInfo: AttributeSelectionInfo) => void;
21
23
  onClear?: () => void;
@@ -23,6 +25,7 @@ type Props = {
23
25
  onApply?: () => void;
24
26
  popoverAnchorRef?: React.MutableRefObject<HTMLDivElement>;
25
27
  title?: string;
28
+ anchorOrigin?: PopoverOrigin;
26
29
  };
27
- declare const _default: React.MemoExoticComponent<({ filters: filtersProp, classes, attributesTypesGroups, attributesTypesGroupFilter, onChange, components, children, onTogglePopup, isFiltersApplied: isFiltersAppliedProp, dataReltioId, onFilterAttributeChange, onCancel, onClear, onApply, ButtonIcon, popoverAnchorRef, title }: Props) => React.JSX.Element>;
30
+ declare const _default: React.MemoExoticComponent<({ filters: filtersProp, classes, attributesTypesGroups, attributesTypesGroupFilter, onChange, components, children, onTogglePopup, isFiltersApplied: isFiltersAppliedProp, dataReltioId, onFilterAttributeChange, onCancel, onClear, onApply, FilterButton, ButtonIcon, popoverAnchorRef, title, anchorOrigin }: Props) => React.JSX.Element>;
28
31
  export default _default;
@@ -40,7 +40,7 @@ var ActionButtons_1 = require("./components/ActionButtons/");
40
40
  var styles_1 = require("./styles");
41
41
  var AttributesFiltersButton = function (_a) {
42
42
  var _b;
43
- var filtersProp = _a.filters, classes = _a.classes, attributesTypesGroups = _a.attributesTypesGroups, attributesTypesGroupFilter = _a.attributesTypesGroupFilter, onChange = _a.onChange, components = _a.components, children = _a.children, onTogglePopup = _a.onTogglePopup, isFiltersAppliedProp = _a.isFiltersApplied, dataReltioId = _a.dataReltioId, onFilterAttributeChange = _a.onFilterAttributeChange, onCancel = _a.onCancel, onClear = _a.onClear, onApply = _a.onApply, _c = _a.ButtonIcon, ButtonIcon = _c === void 0 ? FilterList_1.default : _c, popoverAnchorRef = _a.popoverAnchorRef, title = _a.title;
43
+ var filtersProp = _a.filters, classes = _a.classes, attributesTypesGroups = _a.attributesTypesGroups, attributesTypesGroupFilter = _a.attributesTypesGroupFilter, onChange = _a.onChange, components = _a.components, children = _a.children, onTogglePopup = _a.onTogglePopup, isFiltersAppliedProp = _a.isFiltersApplied, dataReltioId = _a.dataReltioId, onFilterAttributeChange = _a.onFilterAttributeChange, onCancel = _a.onCancel, onClear = _a.onClear, onApply = _a.onApply, FilterButton = _a.FilterButton, _c = _a.ButtonIcon, ButtonIcon = _c === void 0 ? FilterList_1.default : _c, popoverAnchorRef = _a.popoverAnchorRef, title = _a.title, anchorOrigin = _a.anchorOrigin;
44
44
  var styles = (0, styles_1.useStyles)();
45
45
  var buttonRef = (0, react_1.useRef)();
46
46
  var _d = (0, react_1.useState)(false), isOpen = _d[0], setIsOpen = _d[1];
@@ -74,12 +74,12 @@ var AttributesFiltersButton = function (_a) {
74
74
  setFilters([]);
75
75
  }, [onClear]);
76
76
  return (react_1.default.createElement(react_1.default.Fragment, null,
77
- react_1.default.createElement(Button_1.default, { "data-reltio-id": dataReltioId, ref: buttonRef, color: buttonColor, classes: {
77
+ FilterButton ? (react_1.default.createElement(FilterButton, { onClick: togglePopup, ref: buttonRef, dataReltioId: dataReltioId })) : (react_1.default.createElement(Button_1.default, { "data-reltio-id": dataReltioId, ref: buttonRef, color: buttonColor, classes: {
78
78
  root: (0, classnames_1.default)(styles.triggerButton, classes === null || classes === void 0 ? void 0 : classes.triggerButton),
79
79
  textPrimary: styles.changedFiltersIndicator
80
80
  }, onClick: togglePopup },
81
- react_1.default.createElement(ButtonIcon, { color: buttonColor })),
82
- react_1.default.createElement(Popover_1.default, { open: isOpen, classes: { paper: (0, classnames_1.default)(styles.popupContent, classes === null || classes === void 0 ? void 0 : classes.filterPopup) }, anchorEl: (_b = popoverAnchorRef === null || popoverAnchorRef === void 0 ? void 0 : popoverAnchorRef.current) !== null && _b !== void 0 ? _b : buttonRef.current, onClose: togglePopup, anchorOrigin: {
81
+ react_1.default.createElement(ButtonIcon, { color: buttonColor }))),
82
+ react_1.default.createElement(Popover_1.default, { open: isOpen, classes: { paper: (0, classnames_1.default)(styles.popupContent, classes === null || classes === void 0 ? void 0 : classes.filterPopup) }, anchorEl: (_b = popoverAnchorRef === null || popoverAnchorRef === void 0 ? void 0 : popoverAnchorRef.current) !== null && _b !== void 0 ? _b : buttonRef.current, onClose: togglePopup, anchorOrigin: anchorOrigin !== null && anchorOrigin !== void 0 ? anchorOrigin : {
83
83
  vertical: 'bottom',
84
84
  horizontal: (popoverAnchorRef === null || popoverAnchorRef === void 0 ? void 0 : popoverAnchorRef.current) ? 'left' : 'right'
85
85
  }, transformOrigin: {
@@ -1,8 +1,3 @@
1
1
  import React from 'react';
2
2
  import { DrawerProps } from '@mui/material/Drawer';
3
- type Props = DrawerProps;
4
- export declare const Drawer: {
5
- ({ open, children, ...otherProps }: Props): React.JSX.Element;
6
- displayName: string;
7
- };
8
- export {};
3
+ export declare const Drawer: React.ForwardRefExoticComponent<Omit<DrawerProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
@@ -52,7 +52,7 @@ exports.Drawer = void 0;
52
52
  var react_1 = __importStar(require("react"));
53
53
  var Drawer_1 = __importDefault(require("@mui/material/Drawer"));
54
54
  var styles_1 = require("@mui/material/styles");
55
- var Drawer = function (_a) {
55
+ exports.Drawer = (0, react_1.forwardRef)(function (_a, ref) {
56
56
  var _b = _a.open, open = _b === void 0 ? true : _b, children = _a.children, otherProps = __rest(_a, ["open", "children"]);
57
57
  var _c = (0, react_1.useState)(open), drawerContentsVisible = _c[0], setDrawerContentVisible = _c[1];
58
58
  var hideDelay = (0, styles_1.useTheme)().transitions.duration.leavingScreen;
@@ -71,7 +71,6 @@ var Drawer = function (_a) {
71
71
  }
72
72
  }
73
73
  }, [open, hideDelay, drawerContentsVisible]);
74
- return (react_1.default.createElement(Drawer_1.default, __assign({ open: open }, otherProps), drawerContentsVisible && children));
75
- };
76
- exports.Drawer = Drawer;
74
+ return (react_1.default.createElement(Drawer_1.default, __assign({ open: open }, otherProps, { ref: ref }), drawerContentsVisible && children));
75
+ });
77
76
  exports.Drawer.displayName = 'Drawer';
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  type Props = {
3
3
  children?: React.ReactNode;
4
4
  title?: string;
5
+ dataReltioId?: string;
5
6
  };
6
- export declare const FacetGroup: ({ children, title }: Props) => React.JSX.Element;
7
+ export declare const FacetGroup: ({ children, title, dataReltioId }: Props) => React.JSX.Element;
7
8
  export {};
@@ -8,8 +8,8 @@ var react_1 = __importDefault(require("react"));
8
8
  var FacetGroupTitle_1 = require("../FacetGroupTitle");
9
9
  var FacetGroup_module_css_1 = __importDefault(require("./FacetGroup.module.css"));
10
10
  var FacetGroup = function (_a) {
11
- var children = _a.children, _b = _a.title, title = _b === void 0 ? '' : _b;
12
- return (react_1.default.createElement("div", { className: FacetGroup_module_css_1.default.facetGroupContainer },
11
+ var children = _a.children, _b = _a.title, title = _b === void 0 ? '' : _b, dataReltioId = _a.dataReltioId;
12
+ return (react_1.default.createElement("div", { className: FacetGroup_module_css_1.default.facetGroupContainer, "data-reltio-id": dataReltioId },
13
13
  react_1.default.createElement(FacetGroupTitle_1.FacetGroupTitle, { title: title }),
14
14
  children));
15
15
  };
@@ -9,8 +9,5 @@ declare const isSelectedFacet: ({ facet, selectedFacetsFieldNames }: {
9
9
  facet: any;
10
10
  selectedFacetsFieldNames: any;
11
11
  }) => boolean;
12
- declare const constructPopoverOrigin: (verticalOrigin: PopoverOrigin["vertical"], horizontalOrigin?: PopoverOrigin["horizontal"]) => {
13
- vertical: number | "bottom" | "top" | "center";
14
- horizontal: number | "left" | "right" | "center";
15
- };
12
+ declare const constructPopoverOrigin: (verticalOrigin: PopoverOrigin["vertical"], horizontalOrigin?: PopoverOrigin["horizontal"]) => PopoverOrigin;
16
13
  export { adjustVerticalPopupLayout, filterItemsInGroups, isSelectedFacet, constructPopoverOrigin };
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  type Props = {
3
3
  children: React.ReactNode;
4
- isOpen?: boolean;
4
+ showDrawer?: boolean;
5
5
  };
6
- export declare const QuickFiltersDrawer: ({ children, isOpen, ...otherProps }: Props) => React.JSX.Element;
6
+ export declare const QuickFiltersDrawer: ({ children, showDrawer, ...otherProps }: Props) => React.JSX.Element;
7
7
  export {};
@@ -10,6 +10,29 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
13
36
  var __rest = (this && this.__rest) || function (s, e) {
14
37
  var t = {};
15
38
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -26,15 +49,31 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
49
  };
27
50
  Object.defineProperty(exports, "__esModule", { value: true });
28
51
  exports.QuickFiltersDrawer = void 0;
29
- var react_1 = __importDefault(require("react"));
52
+ var react_1 = __importStar(require("react"));
53
+ var classnames_1 = __importDefault(require("classnames"));
54
+ var ChevronLeft_1 = __importDefault(require("@mui/icons-material/ChevronLeft"));
55
+ var Collapse_1 = __importDefault(require("@mui/material/Collapse"));
56
+ var Fade_1 = __importDefault(require("@mui/material/Fade"));
30
57
  var Drawer_1 = require("../Drawer");
58
+ var SmallIconButton_1 = require("../SmallIconButton");
31
59
  var QuickFiltersDrawer_module_css_1 = __importDefault(require("./QuickFiltersDrawer.module.css"));
32
60
  var QuickFiltersDrawer = function (_a) {
33
- var children = _a.children, _b = _a.isOpen, isOpen = _b === void 0 ? true : _b, otherProps = __rest(_a, ["children", "isOpen"]);
34
- return (react_1.default.createElement(Drawer_1.Drawer, __assign({ variant: 'persistent', anchor: 'left', open: isOpen, classes: {
35
- root: QuickFiltersDrawer_module_css_1.default.drawer,
36
- paper: QuickFiltersDrawer_module_css_1.default.drawerPaper,
37
- docked: QuickFiltersDrawer_module_css_1.default.docked
38
- } }, otherProps), children));
61
+ var _b, _c;
62
+ var children = _a.children, _d = _a.showDrawer, showDrawer = _d === void 0 ? true : _d, otherProps = __rest(_a, ["children", "showDrawer"]);
63
+ var _e = (0, react_1.useState)(true), isExpanded = _e[0], setIsExpanded = _e[1];
64
+ var handleToggleDrawer = function () {
65
+ setIsExpanded(!isExpanded);
66
+ };
67
+ return (react_1.default.createElement("div", { className: (0, classnames_1.default)(QuickFiltersDrawer_module_css_1.default.drawerContainer, (_b = {}, _b[QuickFiltersDrawer_module_css_1.default.drawerCollapsed] = !isExpanded, _b)) },
68
+ react_1.default.createElement(Collapse_1.default, { in: isExpanded, orientation: "horizontal", timeout: isExpanded ? 200 : 400, unmountOnExit: true },
69
+ react_1.default.createElement(Fade_1.default, { in: isExpanded, timeout: isExpanded ? 400 : 200 },
70
+ react_1.default.createElement(Drawer_1.Drawer, __assign({ variant: 'persistent', anchor: 'left', open: showDrawer, classes: {
71
+ root: QuickFiltersDrawer_module_css_1.default.drawer,
72
+ paper: QuickFiltersDrawer_module_css_1.default.drawerPaper,
73
+ docked: QuickFiltersDrawer_module_css_1.default.docked
74
+ } }, otherProps), children))),
75
+ showDrawer && (react_1.default.createElement("div", { className: QuickFiltersDrawer_module_css_1.default.drawerTrigger },
76
+ react_1.default.createElement("div", { className: QuickFiltersDrawer_module_css_1.default.drawerTriggerIconWrapper },
77
+ react_1.default.createElement(SmallIconButton_1.SmallIconButton, { className: QuickFiltersDrawer_module_css_1.default.drawerTriggerIcon, iconClassName: (0, classnames_1.default)((_c = {}, _c[QuickFiltersDrawer_module_css_1.default.drawerCollapsedIcon] = !isExpanded, _c)), icon: ChevronLeft_1.default, size: "M", onClick: handleToggleDrawer }))))));
39
78
  };
40
79
  exports.QuickFiltersDrawer = QuickFiltersDrawer;
@@ -1,9 +1,9 @@
1
- const styles = {"drawer":"QuickFiltersDrawer-drawer--NXZwq","docked":"QuickFiltersDrawer-docked--xMI4g","drawerPaper":"QuickFiltersDrawer-drawerPaper--OkbOT"};
1
+ const styles = {"drawerContainer":"QuickFiltersDrawer-drawerContainer--MqIvN","drawerTriggerIconWrapper":"QuickFiltersDrawer-drawerTriggerIconWrapper--9ziQU","drawer":"QuickFiltersDrawer-drawer--NXZwq","docked":"QuickFiltersDrawer-docked--xMI4g","drawerPaper":"QuickFiltersDrawer-drawerPaper--OkbOT","drawerTrigger":"QuickFiltersDrawer-drawerTrigger--2O2ev","drawerCollapsed":"QuickFiltersDrawer-drawerCollapsed--VoNFo","drawerTriggerIcon":"QuickFiltersDrawer-drawerTriggerIcon--sc8lb","drawerCollapsedIcon":"QuickFiltersDrawer-drawerCollapsedIcon--o7My2"};
2
2
  if (typeof document !== 'undefined') {
3
3
  const head = document.head || document.getElementsByTagName('head')[0]
4
4
  const style = document.createElement('style');
5
5
  style.type = 'text/css'
6
- style.innerHTML = `.QuickFiltersDrawer-drawer--NXZwq{flex:0 0 288px!important}.QuickFiltersDrawer-docked--xMI4g{flex:0 0 288px}.QuickFiltersDrawer-drawerPaper--OkbOT{border-right:1px solid rgba(0,0,0,.33);display:flex;flex-direction:column;position:relative;width:288px}`;
6
+ style.innerHTML = `.QuickFiltersDrawer-drawerContainer--MqIvN{background-color:#fff;display:flex;flex-direction:row}.QuickFiltersDrawer-drawerContainer--MqIvN:hover .QuickFiltersDrawer-drawerTriggerIconWrapper--9ziQU{display:block}.QuickFiltersDrawer-drawer--NXZwq{flex:0 0 288px!important;height:100%}.QuickFiltersDrawer-docked--xMI4g{flex:0 0 288px}.QuickFiltersDrawer-drawerPaper--OkbOT{border-right:1px solid rgba(0,0,0,.33);display:flex;flex-direction:column;position:relative;width:288px}.QuickFiltersDrawer-drawerTrigger--2O2ev{background-color:#fff;position:relative}.QuickFiltersDrawer-drawerCollapsed--VoNFo .QuickFiltersDrawer-drawerTrigger--2O2ev{border-right:1px solid rgba(0,0,0,.12);width:28px}.QuickFiltersDrawer-drawerCollapsed--VoNFo .QuickFiltersDrawer-drawerTriggerIconWrapper--9ziQU{display:block;left:auto;right:-15px}.QuickFiltersDrawer-drawerTriggerIconWrapper--9ziQU{background-color:#fff;display:none;left:-15px;position:absolute;top:18px;z-index:var(--mui-zIndex-drawer)}.QuickFiltersDrawer-drawerTriggerIcon--sc8lb{border:1px solid rgba(0,0,0,.12)}.QuickFiltersDrawer-drawerTriggerIcon--sc8lb:hover{background-color:var(--mui-palette-action-hover)}.QuickFiltersDrawer-drawerCollapsedIcon--o7My2{transform:rotate(180deg)}`;
7
7
  head.appendChild(style);
8
8
  }
9
9
  module.exports = styles;
@@ -46,6 +46,15 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
46
46
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
47
  }
48
48
  };
49
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
50
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
51
+ if (ar || !(i in from)) {
52
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
53
+ ar[i] = from[i];
54
+ }
55
+ }
56
+ return to.concat(ar || Array.prototype.slice.call(from));
57
+ };
49
58
  var __importDefault = (this && this.__importDefault) || function (mod) {
50
59
  return (mod && mod.__esModule) ? mod : { "default": mod };
51
60
  };
@@ -265,4 +274,62 @@ describe('AddWorkflowDialog tests', function () {
265
274
  }
266
275
  });
267
276
  }); });
277
+ describe('Required comments', function () {
278
+ it('should not allow to start workflow if comment is required with empty comment', function () { return __awaiter(void 0, void 0, void 0, function () {
279
+ var definitionsWithRequiredComment, mockAnchorEl, props, user, commentField, startButton, comment;
280
+ return __generator(this, function (_a) {
281
+ switch (_a.label) {
282
+ case 0:
283
+ mdm_sdk_1.startProcessInstance.mockResolvedValue(null);
284
+ definitionsWithRequiredComment = __spreadArray(__spreadArray([], definitions, true), [
285
+ {
286
+ type: 'workflowWithRequiredComment',
287
+ displayName: 'Workflow With Required Comment',
288
+ manualStart: true,
289
+ requiresCommentOnStart: true,
290
+ objectTypes: ['configuration/entityTypes/HCO']
291
+ }
292
+ ], false);
293
+ mdm_sdk_1.processDefinitions.mockReturnValue(Promise.resolve({
294
+ data: definitionsWithRequiredComment
295
+ }));
296
+ mockAnchorEl = document.createElement('div');
297
+ props = {
298
+ onClose: jest.fn(),
299
+ anchorEl: mockAnchorEl
300
+ };
301
+ user = setUp(props).user;
302
+ expect(react_2.screen.getByText('Add new workflow')).toBeInTheDocument();
303
+ return [4 /*yield*/, user.click(react_2.screen.getByRole('combobox'))];
304
+ case 1:
305
+ _a.sent();
306
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Workflow With Required Comment'))];
307
+ case 2:
308
+ _a.sent();
309
+ commentField = react_2.screen.getByRole('textbox', { name: /type a comment/i });
310
+ expect(commentField).toBeRequired();
311
+ startButton = react_2.screen.getByText('Start');
312
+ expect(startButton).toBeDisabled();
313
+ comment = 'Some comment';
314
+ return [4 /*yield*/, user.type(commentField, comment)];
315
+ case 3:
316
+ _a.sent();
317
+ expect(startButton).not.toBeDisabled();
318
+ return [4 /*yield*/, user.click(startButton)];
319
+ case 4:
320
+ _a.sent();
321
+ expect(mdm_sdk_1.startProcessInstance).toHaveBeenCalledWith({
322
+ workflowPath: workflowPath,
323
+ environment: workflowEnvironmentUrl,
324
+ tenant: tenant.id,
325
+ processType: 'workflowWithRequiredComment',
326
+ comment: comment,
327
+ objectURIs: ['entities/uri1']
328
+ });
329
+ expect(react_2.screen.getByText('A new workflow has started')).toBeInTheDocument();
330
+ return [2 /*return*/];
331
+ }
332
+ });
333
+ }); });
334
+ });
268
335
  });
@@ -139,7 +139,7 @@ describe('TaskActionButtons tests', function () {
139
139
  }
140
140
  });
141
141
  }); });
142
- describe('required comments', function () {
142
+ describe('Required comments', function () {
143
143
  it('should show comment dialog if commentRequired is true', function () { return __awaiter(void 0, void 0, void 0, function () {
144
144
  var task, user, dialog, textfield;
145
145
  return __generator(this, function (_a) {