@reltio/components 1.4.1037 → 1.4.1041

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 (75) hide show
  1. package/cjs/components/EntityTypesSelector/EntityTypesSelector.d.ts +17 -55
  2. package/cjs/components/EntityTypesSelector/EntityTypesSelector.js +8 -118
  3. package/cjs/components/MetadataTypesSelector/ListLabel/ListLabel.d.ts +7 -0
  4. package/cjs/components/{EntityTypesSelector → MetadataTypesSelector}/ListLabel/ListLabel.js +2 -6
  5. package/cjs/components/MetadataTypesSelector/ListLabel/helpers.d.ts +4 -0
  6. package/cjs/components/{EntityTypesSelector → MetadataTypesSelector}/ListLabel/helpers.js +1 -1
  7. package/cjs/components/MetadataTypesSelector/ListLabel/styles.d.ts +1 -0
  8. package/cjs/components/{EntityTypesSelector → MetadataTypesSelector}/ListLabel/styles.js +0 -0
  9. package/cjs/components/MetadataTypesSelector/MetadataTypesSelector.d.ts +26 -0
  10. package/cjs/components/MetadataTypesSelector/MetadataTypesSelector.js +123 -0
  11. package/cjs/components/MetadataTypesSelector/SelectMetadataTypesList.d.ts +20 -0
  12. package/cjs/components/{EntityTypesSelector/SelectEntityTypesList.js → MetadataTypesSelector/SelectMetadataTypesList.js} +7 -12
  13. package/cjs/components/MetadataTypesSelector/styles.d.ts +1 -0
  14. package/cjs/components/{EntityTypesSelector → MetadataTypesSelector}/styles.js +0 -0
  15. package/cjs/components/RelationTypesSelector/RelationTypesSelector.d.ts +17 -0
  16. package/cjs/components/RelationTypesSelector/RelationTypesSelector.js +35 -0
  17. package/cjs/components/SearchInput/SearchInput.d.ts +3 -2
  18. package/cjs/components/SearchInput/SearchInput.js +3 -3
  19. package/cjs/components/SelectionPopup/SelectionPopup.d.ts +17 -44
  20. package/cjs/components/SelectionPopup/SelectionPopup.js +8 -26
  21. package/cjs/components/SelectionPopup/SelectionPopupPopper/SelectionPopupPopper.d.ts +17 -35
  22. package/cjs/components/SelectionPopup/SelectionPopupPopper/SelectionPopupPopper.js +0 -21
  23. package/cjs/components/SelectionPopup/helpers.d.ts +23 -9
  24. package/cjs/components/attributes/PivotingAttributes/PivotingTooltip.js +10 -3
  25. package/cjs/components/attributes/PivotingAttributes/PivotingTooltipContent.d.ts +4 -3
  26. package/cjs/components/attributes/PivotingAttributes/PivotingTooltipContent.js +4 -11
  27. package/cjs/components/attributes/PivotingAttributes/helpers.d.ts +5 -5
  28. package/cjs/components/attributes/PivotingAttributes/styles.js +2 -1
  29. package/cjs/components/attributes/editMode/AttributesPager/index.d.ts +2 -2
  30. package/cjs/components/index.d.ts +2 -1
  31. package/cjs/components/index.js +5 -3
  32. package/cjs/components/workflow/types/dcrTypes.d.ts +2 -2
  33. package/esm/components/EntityTypesSelector/EntityTypesSelector.d.ts +17 -55
  34. package/esm/components/EntityTypesSelector/EntityTypesSelector.js +9 -120
  35. package/esm/components/MetadataTypesSelector/ListLabel/ListLabel.d.ts +7 -0
  36. package/esm/components/{EntityTypesSelector → MetadataTypesSelector}/ListLabel/ListLabel.js +1 -7
  37. package/esm/components/MetadataTypesSelector/ListLabel/helpers.d.ts +4 -0
  38. package/esm/components/{EntityTypesSelector → MetadataTypesSelector}/ListLabel/helpers.js +1 -1
  39. package/esm/components/MetadataTypesSelector/ListLabel/styles.d.ts +1 -0
  40. package/esm/components/{EntityTypesSelector → MetadataTypesSelector}/ListLabel/styles.js +0 -0
  41. package/esm/components/MetadataTypesSelector/MetadataTypesSelector.d.ts +26 -0
  42. package/esm/components/MetadataTypesSelector/MetadataTypesSelector.js +98 -0
  43. package/esm/components/MetadataTypesSelector/SelectMetadataTypesList.d.ts +20 -0
  44. package/esm/components/{EntityTypesSelector/SelectEntityTypesList.js → MetadataTypesSelector/SelectMetadataTypesList.js} +6 -12
  45. package/esm/components/MetadataTypesSelector/styles.d.ts +1 -0
  46. package/esm/components/{EntityTypesSelector → MetadataTypesSelector}/styles.js +0 -0
  47. package/esm/components/RelationTypesSelector/RelationTypesSelector.d.ts +17 -0
  48. package/esm/components/RelationTypesSelector/RelationTypesSelector.js +10 -0
  49. package/esm/components/SearchInput/SearchInput.d.ts +3 -2
  50. package/esm/components/SearchInput/SearchInput.js +3 -3
  51. package/esm/components/SelectionPopup/SelectionPopup.d.ts +17 -44
  52. package/esm/components/SelectionPopup/SelectionPopup.js +8 -26
  53. package/esm/components/SelectionPopup/SelectionPopupPopper/SelectionPopupPopper.d.ts +17 -35
  54. package/esm/components/SelectionPopup/SelectionPopupPopper/SelectionPopupPopper.js +0 -21
  55. package/esm/components/SelectionPopup/helpers.d.ts +23 -9
  56. package/esm/components/attributes/PivotingAttributes/PivotingTooltip.js +12 -5
  57. package/esm/components/attributes/PivotingAttributes/PivotingTooltipContent.d.ts +4 -3
  58. package/esm/components/attributes/PivotingAttributes/PivotingTooltipContent.js +6 -13
  59. package/esm/components/attributes/PivotingAttributes/helpers.d.ts +5 -5
  60. package/esm/components/attributes/PivotingAttributes/styles.js +2 -1
  61. package/esm/components/attributes/editMode/AttributesPager/index.d.ts +2 -2
  62. package/esm/components/index.d.ts +2 -1
  63. package/esm/components/index.js +2 -1
  64. package/esm/components/workflow/types/dcrTypes.d.ts +2 -2
  65. package/package.json +5 -5
  66. package/cjs/components/EntityTypesSelector/ListLabel/ListLabel.d.ts +0 -12
  67. package/cjs/components/EntityTypesSelector/ListLabel/helpers.d.ts +0 -3
  68. package/cjs/components/EntityTypesSelector/ListLabel/styles.d.ts +0 -1
  69. package/cjs/components/EntityTypesSelector/SelectEntityTypesList.d.ts +0 -16
  70. package/cjs/components/EntityTypesSelector/styles.d.ts +0 -1
  71. package/esm/components/EntityTypesSelector/ListLabel/ListLabel.d.ts +0 -12
  72. package/esm/components/EntityTypesSelector/ListLabel/helpers.d.ts +0 -3
  73. package/esm/components/EntityTypesSelector/ListLabel/styles.d.ts +0 -1
  74. package/esm/components/EntityTypesSelector/SelectEntityTypesList.d.ts +0 -16
  75. package/esm/components/EntityTypesSelector/styles.d.ts +0 -1
@@ -20,7 +20,7 @@ var countOverflowItems = function (list, labelEl) {
20
20
  var findFirstOverflowItemIndex = function (list, labelEl) {
21
21
  var childNodes = labelEl.childNodes, clientLeft = labelEl.clientLeft, clientWidth = labelEl.clientWidth;
22
22
  if (childNodes.length > 0) {
23
- var textNode = childNodes[0];
23
+ var textNode = Array.from(childNodes)[0];
24
24
  var range = document.createRange();
25
25
  range.setStart(textNode, 0);
26
26
  for (var index = 0; index < list.length; index++) {
@@ -0,0 +1 @@
1
+ export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"listLabelContainer" | "listLabel" | "visibleItemsLabel" | "hiddenCount">;
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import { TEntityType, TRelationType } from '@reltio/mdm-sdk';
3
+ import { ListLabel } from './ListLabel/ListLabel';
4
+ declare type ListLabelProps = React.ComponentPropsWithoutRef<typeof ListLabel>;
5
+ declare type Classes = {
6
+ inputText?: string;
7
+ input?: string;
8
+ root?: string;
9
+ label?: string;
10
+ };
11
+ declare type Props = {
12
+ items: (TEntityType | TRelationType)[];
13
+ selectedItemsUris: string[];
14
+ onChange: (values: string[]) => void;
15
+ label: string;
16
+ dataReltioId: string;
17
+ selectionPopupTitle: string;
18
+ classes?: Classes;
19
+ placeholder?: string;
20
+ ListLabelProps?: Omit<ListLabelProps, 'list'>;
21
+ disabled?: boolean;
22
+ enableEmptyValueUnderline?: boolean;
23
+ single?: boolean;
24
+ };
25
+ export declare const MetadataTypesSelector: React.MemoExoticComponent<({ placeholder, classes, items, selectedItemsUris, onChange, ListLabelProps, disabled, enableEmptyValueUnderline, single, label, dataReltioId, selectionPopupTitle }: Props) => JSX.Element>;
26
+ export {};
@@ -0,0 +1,98 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import React, { useRef, useState, useCallback, useMemo, memo } from 'react';
13
+ import classnames from 'classnames';
14
+ import { pipe, propEq, prop } from 'ramda';
15
+ import { utils } from '@reltio/mdm-sdk';
16
+ import TextField from '@material-ui/core/TextField';
17
+ import ArrowDropDown from '@material-ui/icons/ArrowDropDown';
18
+ import { ListLabel } from './ListLabel/ListLabel';
19
+ import { SmallIconButton } from '../SmallIconButton';
20
+ import SelectionPopup from '../SelectionPopup/SelectionPopup';
21
+ import { useKeyboardNavigation } from '../SelectionPopup/helpers';
22
+ import { SelectMetadataTypesList } from './SelectMetadataTypesList';
23
+ import { useStyles } from './styles';
24
+ var MIN_CONTAINER_WIDTH = 255;
25
+ var LIST_HEIGHT = 245;
26
+ var POPUP_HEIGHT = 355;
27
+ export var MetadataTypesSelector = memo(function (_a) {
28
+ var _b, _c, _d, _e;
29
+ var placeholder = _a.placeholder, _f = _a.classes, classes = _f === void 0 ? {} : _f, items = _a.items, selectedItemsUris = _a.selectedItemsUris, onChange = _a.onChange, _g = _a.ListLabelProps, ListLabelProps = _g === void 0 ? {} : _g, disabled = _a.disabled, enableEmptyValueUnderline = _a.enableEmptyValueUnderline, single = _a.single, label = _a.label, dataReltioId = _a.dataReltioId, selectionPopupTitle = _a.selectionPopupTitle;
30
+ var styles = useStyles();
31
+ var _h = useState(false), isPopupOpen = _h[0], setIsPopupOpen = _h[1];
32
+ var openPopup = useCallback(function () { return setIsPopupOpen(true); }, []);
33
+ var closePopup = useCallback(function () { return setIsPopupOpen(false); }, []);
34
+ var _j = useState(''), filterText = _j[0], setFilterText = _j[1];
35
+ var clearFilterText = useCallback(function () { return setFilterText(''); }, []);
36
+ var handleClose = useCallback(pipe(clearFilterText, closePopup), [closePopup, clearFilterText]);
37
+ var filteredItems = items
38
+ .filter(function (_a) {
39
+ var label = _a.label;
40
+ return utils.strings.search(label, filterText);
41
+ })
42
+ .map(function (item, index) { return ({ item: { item: __assign(__assign({}, item), { filterText: filterText }) }, index: index }); });
43
+ var selectedLabels = useMemo(function () { return selectedItemsUris.map(function (uri) { return items.find(propEq('uri', uri)); }).map(prop('label')); }, [selectedItemsUris, items]);
44
+ var handleListItemClick = useCallback(function (item, checked) {
45
+ if (single) {
46
+ onChange(checked ? [item.uri] : []);
47
+ handleClose();
48
+ }
49
+ else {
50
+ onChange(checked
51
+ ? selectedItemsUris.concat(item.uri)
52
+ : selectedItemsUris.filter(function (uri) { return uri !== item.uri; }));
53
+ }
54
+ }, [selectedItemsUris, onChange, single, handleClose]);
55
+ var handleSearchOnEnter = useCallback(function (_a) {
56
+ var item = _a.item;
57
+ var checked = !selectedItemsUris.includes(item.uri);
58
+ handleListItemClick(item, checked);
59
+ }, [selectedItemsUris, handleListItemClick]);
60
+ var _k = useKeyboardNavigation({
61
+ items: filteredItems,
62
+ open: isPopupOpen,
63
+ onSelectFocusedItem: handleSearchOnEnter,
64
+ selectedItems: selectedItemsUris,
65
+ onClose: handleClose
66
+ }), focusIndex = _k.focusIndex, handleKeyDown = _k.handleKeyDown;
67
+ var rootRef = useRef();
68
+ var rootWidth = rootRef.current ? rootRef.current.getBoundingClientRect().width : 0;
69
+ var containerWidth = Math.max(rootWidth, MIN_CONTAINER_WIDTH);
70
+ var noTypesSelected = selectedItemsUris.length === 0;
71
+ return (React.createElement(React.Fragment, null,
72
+ React.createElement(TextField, { label: label, ref: rootRef, InputProps: {
73
+ startAdornment: noTypesSelected && !placeholder ? null : (React.createElement("div", { className: classnames(styles.inputText, classes.inputText) }, noTypesSelected ? (React.createElement("div", null, placeholder)) : (React.createElement(ListLabel, __assign({}, ListLabelProps, { list: selectedLabels }))))),
74
+ classes: {
75
+ root: styles.inputRoot,
76
+ input: classnames(styles.input, classes.input, (_b = {},
77
+ _b[styles.emptyInput] = noTypesSelected && !placeholder,
78
+ _b)),
79
+ disabled: classnames(styles.disabledInput, (_c = {}, _c[styles.disabledPointer] = disabled, _c)),
80
+ underline: styles.disabledUnderline
81
+ },
82
+ endAdornment: (React.createElement(SmallIconButton, { size: 'L', icon: ArrowDropDown, iconClassName: classnames(styles.icon, (_d = {},
83
+ _d[styles['popup-opened-icon']] = isPopupOpen,
84
+ _d)), disabled: disabled })),
85
+ readOnly: true,
86
+ disabled: true,
87
+ disableUnderline: noTypesSelected && !enableEmptyValueUnderline
88
+ }, inputProps: {
89
+ tabIndex: -1
90
+ }, InputLabelProps: {
91
+ classes: {
92
+ root: classnames(styles.inputLabel, classes.label)
93
+ }
94
+ }, value: "", onClick: disabled ? undefined : openPopup, classes: { root: classnames(styles.root, classes.root) }, margin: "dense", variant: "filled", disabled: disabled, "data-reltio-id": dataReltioId }),
95
+ React.createElement(SelectionPopup, { open: isPopupOpen, anchorEl: rootRef.current, onClose: handleClose, onSearch: setFilterText, title: selectionPopupTitle, containerWidth: containerWidth, containerHeight: POPUP_HEIGHT, searchInputOnKeyDown: handleKeyDown, transformOrigin: { horizontal: 'left', vertical: 'top' }, anchorOrigin: { horizontal: 'left', vertical: 'bottom' }, PaperProps: (_e = {}, _e['data-reltio-id'] = dataReltioId + "-popup", _e) },
96
+ React.createElement(SelectMetadataTypesList, { items: filteredItems, onItemClick: handleListItemClick, selectedItems: selectedItemsUris, width: containerWidth, height: LIST_HEIGHT, focusIndex: focusIndex }))));
97
+ });
98
+ MetadataTypesSelector.displayName = 'MetadataTypesSelector';
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import { TEntityType, TRelationType } from '@reltio/mdm-sdk';
3
+ import AttributeListItem from '../AttributeListItem/AttributeListItem';
4
+ declare type AttributeListItemProps = React.ComponentPropsWithoutRef<typeof AttributeListItem>;
5
+ declare type Item = {
6
+ item: {
7
+ item: TEntityType | TRelationType;
8
+ };
9
+ index: number;
10
+ };
11
+ declare type Props = {
12
+ selectedItems: string[];
13
+ onItemClick: AttributeListItemProps['onClick'];
14
+ focusIndex: number;
15
+ items: Item[];
16
+ width: number;
17
+ height: number;
18
+ };
19
+ export declare const SelectMetadataTypesList: React.MemoExoticComponent<({ selectedItems, onItemClick, focusIndex, width, height, ...otherProps }: Props) => JSX.Element>;
20
+ export {};
@@ -21,26 +21,20 @@ var __rest = (this && this.__rest) || function (s, e) {
21
21
  return t;
22
22
  };
23
23
  import React, { memo } from 'react';
24
- import PropTypes from 'prop-types';
25
24
  import { always } from 'ramda';
26
25
  import AttributeListItem from '../AttributeListItem/AttributeListItem';
27
26
  import Highlighter from '../Highlighter/Highlighter';
28
27
  import VirtualGroupedList from '../VirtualGroupedList/VirtualGroupedList';
29
28
  var ITEM_HEIGHT = 32;
30
29
  var getItemSize = always(ITEM_HEIGHT);
31
- var SelectEntityTypesList = function (_a) {
32
- var selectedEntityTypes = _a.selectedEntityTypes, onItemClick = _a.onItemClick, focusIndex = _a.focusIndex, otherProps = __rest(_a, ["selectedEntityTypes", "onItemClick", "focusIndex"]);
30
+ export var SelectMetadataTypesList = memo(function (_a) {
31
+ var selectedItems = _a.selectedItems, onItemClick = _a.onItemClick, focusIndex = _a.focusIndex, width = _a.width, height = _a.height, otherProps = __rest(_a, ["selectedItems", "onItemClick", "focusIndex", "width", "height"]);
33
32
  var renderItem = function (style, _a, index) {
34
33
  var item = _a.item;
35
- var isSelected = !!selectedEntityTypes.find(function (uri) { return item.uri === uri; });
34
+ var isSelected = !!selectedItems.find(function (uri) { return item.uri === uri; });
36
35
  var isFocused = index === focusIndex;
37
36
  return (React.createElement(AttributeListItem, { key: item.uri, onClick: onItemClick, checked: isSelected, data: item, label: React.createElement(Highlighter, { text: item.label, highlight: item.filterText }), labelInText: item.label, style: style, isFocused: isFocused, hideIcon: true, LogoIcon: item.LogoIcon }));
38
37
  };
39
- return (React.createElement(VirtualGroupedList, __assign({ getItemSize: getItemSize, renderItem: renderItem, focusIndex: focusIndex, fixedTitle: false, disableHorizontalScrollbar: true }, otherProps)));
40
- };
41
- SelectEntityTypesList.propTypes = {
42
- selectedEntityTypes: PropTypes.array,
43
- onItemClick: PropTypes.func,
44
- focusIndex: PropTypes.number
45
- };
46
- export default memo(SelectEntityTypesList);
38
+ return (React.createElement(VirtualGroupedList, __assign({ getItemSize: getItemSize, renderItem: renderItem, focusIndex: focusIndex, fixedTitle: false, disableHorizontalScrollbar: true, width: width, height: height }, otherProps)));
39
+ });
40
+ SelectMetadataTypesList.displayName = 'SelectMetadataTypesList';
@@ -0,0 +1 @@
1
+ export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"icon" | "input" | "root" | "inputLabel" | "inputRoot" | "inputText" | "emptyInput" | "disabledInput" | "disabledPointer" | "disabledUnderline" | "popup-opened-icon">;
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { TRelationType } from '@reltio/mdm-sdk';
3
+ import { MetadataTypesSelector } from '../MetadataTypesSelector/MetadataTypesSelector';
4
+ declare type MetadataTypesSelectorProps = React.ComponentProps<typeof MetadataTypesSelector>;
5
+ declare type Props = {
6
+ relationTypes: TRelationType[];
7
+ selectedRelationTypes: string[];
8
+ enableEmptyValueUnderline?: boolean;
9
+ onChange: (values: string[]) => void;
10
+ single?: boolean;
11
+ placeholder?: string;
12
+ classes?: MetadataTypesSelectorProps['classes'];
13
+ ListLabelProps?: MetadataTypesSelectorProps['ListLabelProps'];
14
+ disabled?: boolean;
15
+ };
16
+ export declare const RelationTypesSelector: React.MemoExoticComponent<({ relationTypes, selectedRelationTypes, single, placeholder, enableEmptyValueUnderline, onChange, classes, ListLabelProps, disabled }: Props) => JSX.Element>;
17
+ export {};
@@ -0,0 +1,10 @@
1
+ import React, { useMemo, memo } from 'react';
2
+ import i18n from 'ui-i18n';
3
+ import { isAvailableRelationType } from '@reltio/mdm-sdk';
4
+ import { MetadataTypesSelector } from '../MetadataTypesSelector/MetadataTypesSelector';
5
+ export var RelationTypesSelector = memo(function (_a) {
6
+ var relationTypes = _a.relationTypes, selectedRelationTypes = _a.selectedRelationTypes, single = _a.single, placeholder = _a.placeholder, enableEmptyValueUnderline = _a.enableEmptyValueUnderline, onChange = _a.onChange, _b = _a.classes, classes = _b === void 0 ? {} : _b, _c = _a.ListLabelProps, ListLabelProps = _c === void 0 ? {} : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d;
7
+ var items = useMemo(function () { return relationTypes.filter(isAvailableRelationType); }, [relationTypes]);
8
+ return (React.createElement(MetadataTypesSelector, { items: items, selectedItemsUris: selectedRelationTypes, single: single, placeholder: placeholder, enableEmptyValueUnderline: enableEmptyValueUnderline, onChange: onChange, classes: classes, ListLabelProps: ListLabelProps, disabled: disabled, label: i18n.text('Relation type'), dataReltioId: "relation-type-selector", selectionPopupTitle: i18n.text('Select relation types') }));
9
+ });
10
+ RelationTypesSelector.displayName = 'RelationTypesSelector';
@@ -1,11 +1,12 @@
1
1
  import React from 'react';
2
2
  import { InputProps } from '@material-ui/core/Input';
3
3
  export declare type SearchInputProps = InputProps & {
4
- value: string;
4
+ value?: string;
5
5
  autofocus: boolean;
6
6
  onSearch: (value?: string) => void;
7
7
  rootRef?: React.MutableRefObject<HTMLInputElement>;
8
8
  height: number;
9
+ placeholder?: string;
9
10
  };
10
- declare const _default: React.MemoExoticComponent<({ value, autofocus, onSearch, rootRef, classes, height, ...otherProps }: SearchInputProps) => JSX.Element>;
11
+ declare const _default: React.MemoExoticComponent<({ value, autofocus, onSearch, rootRef, classes, height, placeholder, ...otherProps }: SearchInputProps) => JSX.Element>;
11
12
  export default _default;
@@ -32,13 +32,13 @@ import { getValue, noop } from '../../core';
32
32
  import SmallIconButton from '../SmallIconButton/SmallIconButton';
33
33
  import { useStyles } from './styles';
34
34
  var SearchInput = function (_a) {
35
- var value = _a.value, autofocus = _a.autofocus, _b = _a.onSearch, onSearch = _b === void 0 ? noop : _b, rootRef = _a.rootRef, _c = _a.classes, classes = _c === void 0 ? {} : _c, height = _a.height, otherProps = __rest(_a, ["value", "autofocus", "onSearch", "rootRef", "classes", "height"]);
35
+ var value = _a.value, autofocus = _a.autofocus, _b = _a.onSearch, onSearch = _b === void 0 ? noop : _b, rootRef = _a.rootRef, _c = _a.classes, classes = _c === void 0 ? {} : _c, height = _a.height, _d = _a.placeholder, placeholder = _d === void 0 ? i18n.text('Search') : _d, otherProps = __rest(_a, ["value", "autofocus", "onSearch", "rootRef", "classes", "height", "placeholder"]);
36
36
  var styles = useStyles({ height: height });
37
- var _d = useState(''), localValue = _d[0], setLocalValue = _d[1];
37
+ var _e = useState(''), localValue = _e[0], setLocalValue = _e[1];
38
38
  var updateValue = pipe(tap(onSearch), setLocalValue);
39
39
  var clearValue = function () { return updateValue(''); };
40
40
  var inputValue = isNil(value) ? localValue : value;
41
41
  return (React.createElement(Input, __assign({ startAdornment: React.createElement(InputAdornment, { position: "start" },
42
- React.createElement(SearchIcon, { className: styles.icon })), endAdornment: React.createElement(InputAdornment, { position: "end" }, inputValue.length > 0 && (React.createElement(SmallIconButton, { icon: CloseIcon, className: styles.clearButton, onClick: clearValue }))), autoFocus: autofocus, classes: __assign(__assign({}, classes), { input: classNames(styles.input, classes.input), root: classNames(styles.container, classes.root) }), placeholder: i18n.text('Search'), value: inputValue, onChange: pipe(getValue, updateValue), disableUnderline: true, ref: rootRef }, otherProps)));
42
+ React.createElement(SearchIcon, { className: styles.icon })), endAdornment: React.createElement(InputAdornment, { position: "end" }, inputValue.length > 0 && (React.createElement(SmallIconButton, { icon: CloseIcon, className: styles.clearButton, onClick: clearValue }))), autoFocus: autofocus, classes: __assign(__assign({}, classes), { input: classNames(styles.input, classes.input), root: classNames(styles.container, classes.root) }), placeholder: placeholder, value: inputValue, onChange: pipe(getValue, updateValue), disableUnderline: true, ref: rootRef }, otherProps)));
43
43
  };
44
44
  export default memo(SearchInput);
@@ -1,45 +1,18 @@
1
+ import React from 'react';
2
+ import { PopoverProps } from '@material-ui/core/Popover';
3
+ declare type Props = {
4
+ title: string;
5
+ containerWidth: number;
6
+ containerHeight: number;
7
+ children: React.ReactNode;
8
+ PaperProps: Record<string, unknown>;
9
+ searchInputOnKeyDown: (event: React.KeyboardEvent) => void;
10
+ onSearch: (value?: string) => void;
11
+ className?: string;
12
+ hideTitle?: boolean;
13
+ hideSearchInput?: boolean;
14
+ headerPlacement?: 'top' | 'bottom';
15
+ searchInputRef?: React.Ref<unknown>;
16
+ } & PopoverProps;
17
+ declare const SelectionPopup: ({ title, className, onSearch, hideTitle, hideSearchInput, headerPlacement, containerWidth, containerHeight, searchInputOnKeyDown, children, searchInputRef, anchorOrigin, transformOrigin, ...otherProps }: Props) => JSX.Element;
1
18
  export default SelectionPopup;
2
- declare function SelectionPopup({ title, className, onSearch, hideTitle, hideSearchInput, headerPlacement, containerWidth, containerHeight, searchInputOnKeyDown, children, searchInputRef, ...otherProps }: {
3
- [x: string]: any;
4
- title: any;
5
- className: any;
6
- onSearch: any;
7
- hideTitle: any;
8
- hideSearchInput: any;
9
- headerPlacement?: string;
10
- containerWidth: any;
11
- containerHeight: any;
12
- searchInputOnKeyDown: any;
13
- children: any;
14
- searchInputRef: any;
15
- }): JSX.Element;
16
- declare namespace SelectionPopup {
17
- namespace propTypes {
18
- const className: PropTypes.Requireable<string>;
19
- const title: PropTypes.Requireable<string>;
20
- const headerPlacement: PropTypes.Requireable<string>;
21
- const onSearch: PropTypes.Requireable<(...args: any[]) => any>;
22
- const searchInputOnKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
23
- const containerWidth: PropTypes.Requireable<number>;
24
- const containerHeight: PropTypes.Requireable<number>;
25
- const hideTitle: PropTypes.Requireable<boolean>;
26
- const hideSearchInput: PropTypes.Requireable<boolean>;
27
- const searchInputRef: PropTypes.Requireable<PropTypes.InferProps<{
28
- current: PropTypes.Requireable<Element>;
29
- }>>;
30
- const children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
31
- }
32
- namespace defaultProps {
33
- namespace anchorOrigin {
34
- const vertical: string;
35
- const horizontal: string;
36
- }
37
- namespace transformOrigin {
38
- const vertical_1: string;
39
- export { vertical_1 as vertical };
40
- const horizontal_1: string;
41
- export { horizontal_1 as horizontal };
42
- }
43
- }
44
- }
45
- import PropTypes from "prop-types";
@@ -21,45 +21,27 @@ var __rest = (this && this.__rest) || function (s, e) {
21
21
  return t;
22
22
  };
23
23
  import React from 'react';
24
- import PropTypes from 'prop-types';
25
24
  import classnames from 'classnames';
26
25
  import i18n from 'ui-i18n';
27
26
  import Popover from '@material-ui/core/Popover';
28
27
  import useStyles from './styles.js';
29
28
  import SearchInput from '../SearchInput/SearchInput';
30
29
  var SelectionPopup = function (_a) {
31
- var title = _a.title, className = _a.className, onSearch = _a.onSearch, hideTitle = _a.hideTitle, hideSearchInput = _a.hideSearchInput, _b = _a.headerPlacement, headerPlacement = _b === void 0 ? 'top' : _b, containerWidth = _a.containerWidth, containerHeight = _a.containerHeight, searchInputOnKeyDown = _a.searchInputOnKeyDown, children = _a.children, searchInputRef = _a.searchInputRef, otherProps = __rest(_a, ["title", "className", "onSearch", "hideTitle", "hideSearchInput", "headerPlacement", "containerWidth", "containerHeight", "searchInputOnKeyDown", "children", "searchInputRef"]);
30
+ var title = _a.title, className = _a.className, onSearch = _a.onSearch, hideTitle = _a.hideTitle, hideSearchInput = _a.hideSearchInput, _b = _a.headerPlacement, headerPlacement = _b === void 0 ? 'top' : _b, containerWidth = _a.containerWidth, containerHeight = _a.containerHeight, searchInputOnKeyDown = _a.searchInputOnKeyDown, children = _a.children, searchInputRef = _a.searchInputRef, _c = _a.anchorOrigin, anchorOrigin = _c === void 0 ? {
31
+ vertical: 'top',
32
+ horizontal: 'right'
33
+ } : _c, _d = _a.transformOrigin, transformOrigin = _d === void 0 ? {
34
+ vertical: 'top',
35
+ horizontal: 'right'
36
+ } : _d, otherProps = __rest(_a, ["title", "className", "onSearch", "hideTitle", "hideSearchInput", "headerPlacement", "containerWidth", "containerHeight", "searchInputOnKeyDown", "children", "searchInputRef", "anchorOrigin", "transformOrigin"]);
32
37
  var classes = useStyles({ containerWidth: containerWidth, containerHeight: containerHeight });
33
38
  var header = (React.createElement(React.Fragment, null,
34
39
  !hideTitle && React.createElement("div", { className: classes.header }, title),
35
40
  !hideSearchInput && (React.createElement(SearchInput, { onSearch: onSearch, autofocus: true, onKeyDown: searchInputOnKeyDown, inputRef: searchInputRef, classes: { root: classes.searchInputContainer }, placeholder: i18n.text('Search & add attributes'), height: 40 }))));
36
- return (React.createElement(Popover, __assign({}, otherProps),
41
+ return (React.createElement(Popover, __assign({ anchorOrigin: anchorOrigin, transformOrigin: transformOrigin }, otherProps),
37
42
  React.createElement("div", { className: classnames(classes.container, className), style: { width: containerWidth } },
38
43
  headerPlacement === 'top' && header,
39
44
  React.createElement("div", { className: classes.list }, children),
40
45
  headerPlacement === 'bottom' && header)));
41
46
  };
42
- SelectionPopup.propTypes = {
43
- className: PropTypes.string,
44
- title: PropTypes.string,
45
- headerPlacement: PropTypes.oneOf(['top', 'bottom']),
46
- onSearch: PropTypes.func,
47
- searchInputOnKeyDown: PropTypes.func,
48
- containerWidth: PropTypes.number,
49
- containerHeight: PropTypes.number,
50
- hideTitle: PropTypes.bool,
51
- hideSearchInput: PropTypes.bool,
52
- searchInputRef: PropTypes.shape({ current: PropTypes.instanceOf(Element) }),
53
- children: PropTypes.node
54
- };
55
- SelectionPopup.defaultProps = {
56
- anchorOrigin: {
57
- vertical: 'top',
58
- horizontal: 'right'
59
- },
60
- transformOrigin: {
61
- vertical: 'top',
62
- horizontal: 'right'
63
- }
64
- };
65
47
  export default SelectionPopup;
@@ -1,36 +1,18 @@
1
+ import React from 'react';
2
+ import { PaperProps } from '@material-ui/core/Paper';
3
+ declare type Props = {
4
+ open: boolean;
5
+ anchorEl: HTMLElement;
6
+ className?: string;
7
+ onClose: () => void;
8
+ containerWidth: number;
9
+ containerHeight: number;
10
+ paperProps: Omit<PaperProps, 'evelation'>;
11
+ listContent?: React.ReactNode;
12
+ externalInputField?: React.ReactNode;
13
+ classes?: {
14
+ root?: string;
15
+ };
16
+ };
17
+ declare const SelectionPopupPopper: ({ open, anchorEl, className, onClose, containerWidth, containerHeight, paperProps, listContent, externalInputField, classes }: Props) => JSX.Element;
1
18
  export default SelectionPopupPopper;
2
- declare function SelectionPopupPopper({ open, anchorEl, className, onClose, containerWidth, containerHeight, paperProps, listContent, externalInputField, classes }: {
3
- open: any;
4
- anchorEl: any;
5
- className: any;
6
- onClose: any;
7
- containerWidth: any;
8
- containerHeight: any;
9
- paperProps: any;
10
- listContent: any;
11
- externalInputField: any;
12
- classes?: {};
13
- }): JSX.Element;
14
- declare namespace SelectionPopupPopper {
15
- namespace propTypes {
16
- const open: PropTypes.Requireable<boolean>;
17
- const anchorEl: PropTypes.Requireable<object>;
18
- const className: PropTypes.Requireable<string>;
19
- const onClose: PropTypes.Requireable<(...args: any[]) => any>;
20
- const containerWidth: PropTypes.Requireable<number>;
21
- const containerHeight: PropTypes.Requireable<number>;
22
- const paperProps: PropTypes.Requireable<object>;
23
- const listContent: PropTypes.Requireable<PropTypes.ReactElementLike>;
24
- const externalInputField: PropTypes.Requireable<PropTypes.ReactElementLike>;
25
- const classes: PropTypes.Requireable<PropTypes.InferProps<{
26
- root: PropTypes.Requireable<string>;
27
- }>>;
28
- }
29
- namespace defaultProps {
30
- namespace popoverAnchorOrigin {
31
- const vertical: string;
32
- const horizontal: string;
33
- }
34
- }
35
- }
36
- import PropTypes from "prop-types";
@@ -10,7 +10,6 @@ var __assign = (this && this.__assign) || function () {
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
12
  import React from 'react';
13
- import PropTypes from 'prop-types';
14
13
  import classnames from 'classnames';
15
14
  import useCommonStyles from '../styles.js';
16
15
  import Popper from '../../Popper/Popper';
@@ -32,24 +31,4 @@ var SelectionPopupPopper = function (_a) {
32
31
  React.createElement("div", { className: commonStyles.list }, listContent)))));
33
32
  })));
34
33
  };
35
- SelectionPopupPopper.propTypes = {
36
- open: PropTypes.bool,
37
- anchorEl: PropTypes.object,
38
- className: PropTypes.string,
39
- onClose: PropTypes.func,
40
- containerWidth: PropTypes.number,
41
- containerHeight: PropTypes.number,
42
- paperProps: PropTypes.object,
43
- listContent: PropTypes.element,
44
- externalInputField: PropTypes.element,
45
- classes: PropTypes.shape({
46
- root: PropTypes.string
47
- })
48
- };
49
- SelectionPopupPopper.defaultProps = {
50
- popoverAnchorOrigin: {
51
- vertical: 'top',
52
- horizontal: 'right'
53
- }
54
- };
55
34
  export default SelectionPopupPopper;
@@ -1,10 +1,24 @@
1
- export function useKeyboardNavigation({ items, open, onSelectFocusedItem, selectedItems, onClose }: {
2
- items: any;
3
- open: any;
4
- onSelectFocusedItem: any;
5
- selectedItems: any;
6
- onClose: any;
7
- }): {
8
- focusIndex: any;
9
- handleKeyDown: (event: any) => boolean;
1
+ import React from 'react';
2
+ declare type Item = {
3
+ titleItemIndex?: number;
4
+ index: number;
5
+ item: {
6
+ item: Record<string, unknown>;
7
+ moveTo?: number;
8
+ };
10
9
  };
10
+ declare type Props = {
11
+ items: Item[];
12
+ open: boolean;
13
+ onSelectFocusedItem: (item: {
14
+ item: Item['item']['item'];
15
+ groupData: Item['item'];
16
+ }) => void;
17
+ selectedItems: string[];
18
+ onClose: (event: React.KeyboardEvent) => void;
19
+ };
20
+ declare const useKeyboardNavigation: ({ items, open, onSelectFocusedItem, selectedItems, onClose }: Props) => {
21
+ focusIndex: number;
22
+ handleKeyDown: (event: React.KeyboardEvent) => boolean;
23
+ };
24
+ export { useKeyboardNavigation };
@@ -1,11 +1,11 @@
1
1
  import React, { useContext } from 'react';
2
- import { useSelector } from 'react-redux';
2
+ import { useDispatch, useSelector } from 'react-redux';
3
3
  import Tooltip from '@material-ui/core/Tooltip';
4
- import mdm from '@reltio/mdm-module';
4
+ import mdm, { ui as mdmModuleUi } from '@reltio/mdm-module';
5
5
  import { isNested } from '@reltio/mdm-sdk';
6
6
  import { isNil } from 'ramda';
7
7
  import { PivotingAttributeContext } from '../../../contexts';
8
- import { generatePivotingValue, preparePivotingAttributeValue } from './helpers';
8
+ import { convertNestedAttributePivotingValue, convertSimpleAttributePivotingValue, generatePivotingValue, preparePivotingAttributeValue } from './helpers';
9
9
  import PivotingIcon from '../../../icons/PivotingIcon';
10
10
  import { PivotingTooltipContent } from './PivotingTooltipContent';
11
11
  import { usePivotingTooltipStyles, useStyles } from './styles';
@@ -13,6 +13,7 @@ export var PivotingTooltip = function (_a) {
13
13
  var value = _a.value, attributeType = _a.attributeType, children = _a.children, className = _a.className;
14
14
  var styles = usePivotingTooltipStyles();
15
15
  var contentStyles = useStyles();
16
+ var dispatch = useDispatch();
16
17
  var pivotingAttributesList = useContext(PivotingAttributeContext) || [];
17
18
  var isNestedAttribute = isNested(attributeType);
18
19
  var metadata = useSelector(mdm.selectors.getMetadata) || {};
@@ -29,8 +30,14 @@ export var PivotingTooltip = function (_a) {
29
30
  var uri = _a.uri;
30
31
  return uri === attributeType.uri;
31
32
  });
32
- return isPivotingAttribute ? (React.createElement(Tooltip, { interactive: true, arrow: true, placement: "right-start", classes: styles, title: React.createElement(PivotingTooltipContent, { value: pivotingValue, attributeType: attributeType, config: pivotingAttribute.popup }) },
33
+ var handleSeeAllClick = function () {
34
+ var generatedValue = Array.isArray(pivotingValue)
35
+ ? convertNestedAttributePivotingValue(pivotingValue)
36
+ : convertSimpleAttributePivotingValue(attributeType, pivotingValue);
37
+ dispatch(mdmModuleUi.actions.openPivotingPerspective({ value: generatedValue, attributeType: attributeType }));
38
+ };
39
+ return isPivotingAttribute ? (React.createElement(Tooltip, { interactive: true, arrow: true, placement: "right-start", classes: styles, title: React.createElement(PivotingTooltipContent, { value: pivotingValue, attributeType: attributeType, config: pivotingAttribute.popup, onSeeAllClick: handleSeeAllClick }) },
33
40
  React.createElement("span", { className: className },
34
41
  React.createElement(PivotingIcon, { className: contentStyles.icon }),
35
- React.createElement("span", { className: contentStyles.content }, children)))) : (React.createElement(React.Fragment, null, children));
42
+ React.createElement("span", { className: contentStyles.content, onClick: handleSeeAllClick }, children)))) : (React.createElement(React.Fragment, null, children));
36
43
  };
@@ -1,12 +1,13 @@
1
1
  /// <reference types="react" />
2
- import { AttributeType } from '@reltio/mdm-sdk';
2
+ import { AttributeType, PrimitiveValue } from '@reltio/mdm-sdk';
3
3
  import { PivotingValue } from './helpers';
4
4
  export declare type Props = {
5
- value: PivotingValue[] | string | number | boolean;
5
+ value: PivotingValue[] | PrimitiveValue;
6
6
  attributeType: AttributeType;
7
7
  config: {
8
8
  label?: string;
9
9
  entityType?: string;
10
10
  };
11
+ onSeeAllClick: () => void;
11
12
  };
12
- export declare const PivotingTooltipContent: ({ value, attributeType, config }: Props) => JSX.Element;
13
+ export declare const PivotingTooltipContent: ({ value, attributeType, config, onSeeAllClick }: Props) => JSX.Element;
@@ -10,23 +10,22 @@ var __assign = (this && this.__assign) || function () {
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
12
  import React, { useEffect, useState } from 'react';
13
- import { useDispatch, useSelector } from 'react-redux';
13
+ import { useSelector } from 'react-redux';
14
14
  import i18n from 'ui-i18n';
15
- import mdm, { ui as mdmModuleUi } from '@reltio/mdm-module';
15
+ import mdm from '@reltio/mdm-module';
16
16
  import { getEntityUriForLink, getFilteredEntities, getLabel, getTotals } from '@reltio/mdm-sdk';
17
17
  import EntityAvatar from '../../EntityAvatar/EntityAvatar';
18
18
  import EntityUriLink from '../../EntityUriLink/EntityUriLink';
19
- import { useStyles } from './styles';
20
- import { convertNestedAttributePivotingValue, convertSimpleAttributePivotingValue, getParamsFilteringEntities } from './helpers';
19
+ import { getParamsFilteringEntities } from './helpers';
21
20
  import { useSafePromise } from '../../../hooks';
21
+ import { useStyles } from './styles';
22
22
  var MAX_ENTITIES_PIVOTING_TOOLTIP = 6;
23
23
  export var PivotingTooltipContent = function (_a) {
24
- var value = _a.value, attributeType = _a.attributeType, _b = _a.config, config = _b === void 0 ? {} : _b;
24
+ var value = _a.value, attributeType = _a.attributeType, _b = _a.config, config = _b === void 0 ? {} : _b, onSeeAllClick = _a.onSeeAllClick;
25
25
  var _c = useState([]), entities = _c[0], setEntities = _c[1];
26
26
  var _d = useState(0), total = _d[0], setTotal = _d[1];
27
27
  var entity = useSelector(mdm.selectors.getEntity) || {};
28
28
  var safePromise = useSafePromise();
29
- var dispatch = useDispatch();
30
29
  var styles = useStyles();
31
30
  var globalSearchRequestOptions = useSelector(mdm.selectors.getGlobalSearchRequestOptions) || {};
32
31
  var entityType = config.entityType || entity.type;
@@ -45,12 +44,6 @@ export var PivotingTooltipContent = function (_a) {
45
44
  setTotal(0);
46
45
  });
47
46
  }, []);
48
- var handleClickSeeAll = function () {
49
- var generatedValue = Array.isArray(value)
50
- ? convertNestedAttributePivotingValue(value)
51
- : convertSimpleAttributePivotingValue(attributeType, value);
52
- dispatch(mdmModuleUi.actions.openPivotingPerspective({ value: generatedValue, attributeType: attributeType }));
53
- };
54
47
  var hasEntityTypeLabel = Boolean(config.label);
55
48
  return (React.createElement("div", { className: styles.container },
56
49
  React.createElement("div", { className: styles.header },
@@ -62,5 +55,5 @@ export var PivotingTooltipContent = function (_a) {
62
55
  React.createElement(EntityAvatar, { entity: visibleEntity, avatarClassName: styles.profileIcon }),
63
56
  React.createElement(EntityUriLink, { className: styles.entityLabel, value: getEntityUriForLink(visibleEntity) }, getLabel(visibleEntity.label)))); })),
64
57
  shouldShowSeeAllButton && (React.createElement("div", { className: styles.footer },
65
- React.createElement("a", { className: styles.seeAllButton, onClick: handleClickSeeAll }, i18n.text('See all'))))));
58
+ React.createElement("a", { className: styles.seeAllButton, onClick: onSeeAllClick }, i18n.text('See all'))))));
66
59
  };
@@ -1,11 +1,11 @@
1
- import { AttributeType, SearchFilter, Metadata, PivotingAttribute, RecordAttributesType } from '@reltio/mdm-sdk';
1
+ import { AttributeType, SearchFilter, Metadata, PivotingAttribute, RecordAttributesType, PrimitiveValue } from '@reltio/mdm-sdk';
2
2
  export declare type PivotingValue = {
3
3
  [uri: string]: string[] | PivotingValue[];
4
4
  };
5
- export declare const getParamsFilteringEntities: (values: string | number | boolean | PivotingValue[], attributeType: AttributeType, entityType?: string) => SearchFilter[];
5
+ export declare const getParamsFilteringEntities: (values: PrimitiveValue | PivotingValue[], attributeType: AttributeType, entityType?: string) => SearchFilter[];
6
6
  export declare const generatePivotingValue: (attributeType: AttributeType, value: RecordAttributesType, pivotingAttributes: PivotingAttribute[], metadata: Metadata) => PivotingValue[];
7
- export declare const convertSimpleAttributePivotingValue: (attrType: AttributeType, value: string | number | boolean) => {
8
- [x: string]: string | number | boolean;
7
+ export declare const convertSimpleAttributePivotingValue: (attrType: AttributeType, value: PrimitiveValue) => {
8
+ [x: string]: PrimitiveValue;
9
9
  }[];
10
10
  export declare const convertNestedAttributePivotingValue: (values: PivotingValue[]) => any[];
11
- export declare const preparePivotingAttributeValue: (value: any, attributeType: any) => any;
11
+ export declare const preparePivotingAttributeValue: (value: PrimitiveValue, attributeType: AttributeType) => PrimitiveValue;