@reltio/components 1.4.1069 → 1.4.1072
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.
- package/cjs/components/AttributeGroupIcon/AttributeGroupIcon.d.ts +11 -0
- package/cjs/components/AttributeGroupIcon/AttributeGroupIcon.js +20 -0
- package/cjs/components/AttributeGroupIcon/styles.d.ts +1 -0
- package/cjs/components/AttributeGroupIcon/styles.js +11 -0
- package/cjs/components/AttributesFiltersBuilder/AttributesFiltersBuilder.d.ts +9 -0
- package/cjs/components/AttributesFiltersBuilder/AttributesFiltersBuilder.js +112 -0
- package/cjs/components/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.d.ts +9 -0
- package/cjs/components/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.js +53 -0
- package/cjs/components/AttributesFiltersBuilder/components/FilterSelector/FilterSelector.d.ts +7 -0
- package/cjs/components/AttributesFiltersBuilder/components/FilterSelector/FilterSelector.js +56 -0
- package/cjs/components/AttributesFiltersBuilder/components/FilterSelector/styles.d.ts +2 -0
- package/cjs/components/AttributesFiltersBuilder/components/FilterSelector/styles.js +9 -0
- package/cjs/components/AttributesFiltersBuilder/components/RowActions/RowActions.d.ts +4 -0
- package/cjs/components/AttributesFiltersBuilder/components/RowActions/RowActions.js +51 -0
- package/cjs/components/AttributesFiltersBuilder/components/RowActions/styles.d.ts +1 -0
- package/cjs/components/AttributesFiltersBuilder/components/RowActions/styles.js +23 -0
- package/cjs/components/AttributesFiltersBuilder/components/ValueEditor/ValueEditor.d.ts +4 -0
- package/cjs/components/AttributesFiltersBuilder/components/ValueEditor/ValueEditor.js +60 -0
- package/cjs/components/AttributesFiltersBuilder/components/ValueEditor/styles.d.ts +1 -0
- package/cjs/components/AttributesFiltersBuilder/components/ValueEditor/styles.js +25 -0
- package/cjs/components/AttributesFiltersBuilder/helpers.d.ts +12 -0
- package/cjs/components/AttributesFiltersBuilder/helpers.js +77 -0
- package/cjs/components/AttributesFiltersBuilder/styles.d.ts +1 -0
- package/cjs/components/AttributesFiltersBuilder/styles.js +21 -0
- package/cjs/components/AttributesFiltersBuilder/types.d.ts +24 -0
- package/cjs/components/AttributesFiltersBuilder/types.js +2 -0
- package/cjs/components/AttributesFiltersButton/ActionButtons/ActionButtons.d.ts +8 -0
- package/cjs/components/AttributesFiltersButton/ActionButtons/ActionButtons.js +18 -0
- package/cjs/components/AttributesFiltersButton/ActionButtons/styles.d.ts +1 -0
- package/cjs/components/AttributesFiltersButton/ActionButtons/styles.js +26 -0
- package/cjs/components/AttributesFiltersButton/AttributesFiltersButton.d.ts +9 -0
- package/cjs/components/AttributesFiltersButton/AttributesFiltersButton.js +82 -0
- package/cjs/components/AttributesFiltersButton/styles.d.ts +1 -0
- package/cjs/components/AttributesFiltersButton/styles.js +30 -0
- package/cjs/components/BasicAttributeSelector/AttributeTitle/AttributeTitle.d.ts +14 -0
- package/cjs/components/BasicAttributeSelector/AttributeTitle/AttributeTitle.js +27 -0
- package/cjs/components/BasicAttributeSelector/AttributeTitle/styles.d.ts +2 -0
- package/cjs/components/BasicAttributeSelector/AttributeTitle/styles.js +44 -0
- package/cjs/components/BasicAttributeSelector/BasicAttributeSelector.d.ts +4 -0
- package/cjs/components/BasicAttributeSelector/BasicAttributeSelector.js +99 -0
- package/cjs/components/BasicAttributeSelector/helpers.d.ts +22 -0
- package/cjs/components/BasicAttributeSelector/helpers.js +80 -0
- package/cjs/components/BasicAttributeSelector/styles.d.ts +2 -0
- package/cjs/components/BasicAttributeSelector/styles.js +14 -0
- package/cjs/components/ConnectionEditor/ConnectionEditor.d.ts +12 -3
- package/cjs/components/ConnectionEditor/ConnectionEditor.js +72 -5
- package/cjs/components/ConnectionEditor/styles.d.ts +1 -0
- package/cjs/components/ConnectionEditor/styles.js +12 -0
- package/cjs/components/ConnectionRelationTypeSelector/ConnectionRelationTypeSelector.js +3 -2
- package/cjs/components/QueryBuilderRow/QueryBuilderRow.d.ts +2 -2
- package/cjs/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.d.ts +2 -2
- package/cjs/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.js +1 -1
- package/cjs/components/SelectAttributesList/SelectAttributesList.d.ts +14 -0
- package/cjs/components/SelectAttributesList/SelectAttributesList.js +75 -0
- package/cjs/components/SelectAttributesList/styles.d.ts +1 -0
- package/cjs/components/SelectAttributesList/styles.js +16 -0
- package/cjs/components/SelectionPopup/SelectionPopup.d.ts +1 -1
- package/cjs/components/SidePanel/SidePanelContentHeader/SidePanelContentHeader.d.ts +2 -2
- package/cjs/components/attributes/editMode/EntitySelector/EntitySelector.d.ts +1 -1
- package/cjs/components/attributes/editMode/EntitySelector/EntitySelector.js +13 -6
- package/cjs/components/index.d.ts +4 -0
- package/cjs/components/index.js +9 -1
- package/cjs/components/workflow/hooks/useWorkflowAssignee.d.ts +1 -1
- package/cjs/components/workflow/hooks/useWorkflowAssignee.js +2 -2
- package/cjs/constants/prop-types.d.ts +1 -1
- package/cjs/constants/prop-types.js +1 -1
- package/cjs/hooks/useEditableConnection.d.ts +10 -4
- package/cjs/hooks/useEditableConnection.js +27 -3
- package/cjs/icons/Duplicate.d.ts +3 -0
- package/cjs/icons/Duplicate.js +28 -0
- package/cjs/icons/index.d.ts +6 -3
- package/cjs/icons/index.js +14 -7
- package/cjs/types/index.d.ts +40 -0
- package/esm/components/AttributeGroupIcon/AttributeGroupIcon.d.ts +11 -0
- package/esm/components/AttributeGroupIcon/AttributeGroupIcon.js +15 -0
- package/esm/components/AttributeGroupIcon/styles.d.ts +1 -0
- package/esm/components/AttributeGroupIcon/styles.js +8 -0
- package/esm/components/AttributesFiltersBuilder/AttributesFiltersBuilder.d.ts +9 -0
- package/esm/components/AttributesFiltersBuilder/AttributesFiltersBuilder.js +88 -0
- package/esm/components/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.d.ts +9 -0
- package/esm/components/AttributesFiltersBuilder/components/AttributeSelector/AttributeSelector.js +29 -0
- package/esm/components/AttributesFiltersBuilder/components/FilterSelector/FilterSelector.d.ts +7 -0
- package/esm/components/AttributesFiltersBuilder/components/FilterSelector/FilterSelector.js +32 -0
- package/esm/components/AttributesFiltersBuilder/components/FilterSelector/styles.d.ts +2 -0
- package/esm/components/AttributesFiltersBuilder/components/FilterSelector/styles.js +7 -0
- package/esm/components/AttributesFiltersBuilder/components/RowActions/RowActions.d.ts +4 -0
- package/esm/components/AttributesFiltersBuilder/components/RowActions/RowActions.js +27 -0
- package/esm/components/AttributesFiltersBuilder/components/RowActions/styles.d.ts +1 -0
- package/esm/components/AttributesFiltersBuilder/components/RowActions/styles.js +20 -0
- package/esm/components/AttributesFiltersBuilder/components/ValueEditor/ValueEditor.d.ts +4 -0
- package/esm/components/AttributesFiltersBuilder/components/ValueEditor/ValueEditor.js +36 -0
- package/esm/components/AttributesFiltersBuilder/components/ValueEditor/styles.d.ts +1 -0
- package/esm/components/AttributesFiltersBuilder/components/ValueEditor/styles.js +22 -0
- package/esm/components/AttributesFiltersBuilder/helpers.d.ts +12 -0
- package/esm/components/AttributesFiltersBuilder/helpers.js +70 -0
- package/esm/components/AttributesFiltersBuilder/styles.d.ts +1 -0
- package/esm/components/AttributesFiltersBuilder/styles.js +18 -0
- package/esm/components/AttributesFiltersBuilder/types.d.ts +24 -0
- package/esm/components/AttributesFiltersBuilder/types.js +1 -0
- package/esm/components/AttributesFiltersButton/ActionButtons/ActionButtons.d.ts +8 -0
- package/esm/components/AttributesFiltersButton/ActionButtons/ActionButtons.js +13 -0
- package/esm/components/AttributesFiltersButton/ActionButtons/styles.d.ts +1 -0
- package/esm/components/AttributesFiltersButton/ActionButtons/styles.js +23 -0
- package/esm/components/AttributesFiltersButton/AttributesFiltersButton.d.ts +9 -0
- package/esm/components/AttributesFiltersButton/AttributesFiltersButton.js +58 -0
- package/esm/components/AttributesFiltersButton/styles.d.ts +1 -0
- package/esm/components/AttributesFiltersButton/styles.js +27 -0
- package/esm/components/BasicAttributeSelector/AttributeTitle/AttributeTitle.d.ts +14 -0
- package/esm/components/BasicAttributeSelector/AttributeTitle/AttributeTitle.js +22 -0
- package/esm/components/BasicAttributeSelector/AttributeTitle/styles.d.ts +2 -0
- package/esm/components/BasicAttributeSelector/AttributeTitle/styles.js +42 -0
- package/esm/components/BasicAttributeSelector/BasicAttributeSelector.d.ts +4 -0
- package/esm/components/BasicAttributeSelector/BasicAttributeSelector.js +75 -0
- package/esm/components/BasicAttributeSelector/helpers.d.ts +22 -0
- package/esm/components/BasicAttributeSelector/helpers.js +72 -0
- package/esm/components/BasicAttributeSelector/styles.d.ts +2 -0
- package/esm/components/BasicAttributeSelector/styles.js +12 -0
- package/esm/components/ConnectionEditor/ConnectionEditor.d.ts +12 -3
- package/esm/components/ConnectionEditor/ConnectionEditor.js +74 -7
- package/esm/components/ConnectionEditor/styles.d.ts +1 -0
- package/esm/components/ConnectionEditor/styles.js +9 -0
- package/esm/components/ConnectionRelationTypeSelector/ConnectionRelationTypeSelector.js +3 -2
- package/esm/components/QueryBuilderRow/QueryBuilderRow.d.ts +2 -2
- package/esm/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.d.ts +2 -2
- package/esm/components/QueryBuilderRowsGroup/QueryBuilderRowsGroup.js +1 -1
- package/esm/components/SelectAttributesList/SelectAttributesList.d.ts +14 -0
- package/esm/components/SelectAttributesList/SelectAttributesList.js +51 -0
- package/esm/components/SelectAttributesList/styles.d.ts +1 -0
- package/esm/components/SelectAttributesList/styles.js +13 -0
- package/esm/components/SelectionPopup/SelectionPopup.d.ts +1 -1
- package/esm/components/SidePanel/SidePanelContentHeader/SidePanelContentHeader.d.ts +2 -2
- package/esm/components/attributes/editMode/EntitySelector/EntitySelector.d.ts +1 -1
- package/esm/components/attributes/editMode/EntitySelector/EntitySelector.js +13 -6
- package/esm/components/index.d.ts +4 -0
- package/esm/components/index.js +4 -0
- package/esm/components/workflow/hooks/useWorkflowAssignee.d.ts +1 -1
- package/esm/components/workflow/hooks/useWorkflowAssignee.js +1 -1
- package/esm/constants/prop-types.d.ts +1 -1
- package/esm/constants/prop-types.js +1 -1
- package/esm/hooks/useEditableConnection.d.ts +10 -4
- package/esm/hooks/useEditableConnection.js +24 -3
- package/esm/icons/Duplicate.d.ts +3 -0
- package/esm/icons/Duplicate.js +23 -0
- package/esm/icons/index.d.ts +6 -3
- package/esm/icons/index.js +6 -3
- package/esm/types/index.d.ts +40 -0
- package/package.json +3 -3
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { AttributeSelectorItem } from '../../../types';
|
|
3
|
+
declare type Value = {
|
|
4
|
+
fieldName: string;
|
|
5
|
+
title: string;
|
|
6
|
+
};
|
|
7
|
+
declare type Props = {
|
|
8
|
+
value: AttributeSelectorItem;
|
|
9
|
+
disabled: boolean;
|
|
10
|
+
getLabel: (value: Value) => string;
|
|
11
|
+
onSelectAttributeClick: (event: any) => void;
|
|
12
|
+
};
|
|
13
|
+
declare const AttributeTitle: ({ value, getLabel, onSelectAttributeClick, disabled }: Props) => JSX.Element;
|
|
14
|
+
export default AttributeTitle;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import i18n from 'ui-i18n';
|
|
3
|
+
import classnames from 'classnames';
|
|
4
|
+
import { either, prop } from 'ramda';
|
|
5
|
+
import { ArrowDropDown } from '@material-ui/icons';
|
|
6
|
+
import ExpandedValueTooltip from '../../ExpandedValueTooltip/ExpandedValueTooltip';
|
|
7
|
+
import SmallIconButton from '../../SmallIconButton/SmallIconButton';
|
|
8
|
+
import useStyles from './styles';
|
|
9
|
+
var defaultGetLabel = either(prop('title'), prop('fieldName'));
|
|
10
|
+
var AttributeTitle = function (_a) {
|
|
11
|
+
var _b, _c, _d;
|
|
12
|
+
var value = _a.value, _e = _a.getLabel, getLabel = _e === void 0 ? defaultGetLabel : _e, onSelectAttributeClick = _a.onSelectAttributeClick, _f = _a.disabled, disabled = _f === void 0 ? false : _f;
|
|
13
|
+
var styles = useStyles();
|
|
14
|
+
var label = value && getLabel(value);
|
|
15
|
+
return (React.createElement("div", { onClick: disabled ? undefined : onSelectAttributeClick, className: classnames(styles.attribute, (_b = {},
|
|
16
|
+
_b[styles.attributeWithValue] = !!label,
|
|
17
|
+
_b), (_c = {}, _c[styles.disabled] = disabled, _c)) },
|
|
18
|
+
React.createElement(ExpandedValueTooltip, { value: label },
|
|
19
|
+
React.createElement("div", { className: classnames(styles.name, (_d = {}, _d[styles.disabled] = disabled, _d)) }, label || React.createElement("span", { className: styles.noSelect }, i18n.text('Select attribute')))),
|
|
20
|
+
React.createElement(SmallIconButton, { size: 'M', icon: ArrowDropDown, disabled: disabled })));
|
|
21
|
+
};
|
|
22
|
+
export default AttributeTitle;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { makeStyles } from '@material-ui/core/styles';
|
|
2
|
+
var useStyles = makeStyles({
|
|
3
|
+
attribute: {
|
|
4
|
+
cursor: 'pointer',
|
|
5
|
+
lineHeight: '16px',
|
|
6
|
+
flexBasis: '100%',
|
|
7
|
+
display: 'flex',
|
|
8
|
+
alignItems: 'center',
|
|
9
|
+
padding: '0 10px 0 16px',
|
|
10
|
+
width: 'calc(100% - 32px)',
|
|
11
|
+
'&$attributeWithValue': {
|
|
12
|
+
borderBottom: '1px solid rgba(0,0,0,0.38)'
|
|
13
|
+
},
|
|
14
|
+
'&$disabled': {
|
|
15
|
+
cursor: 'default'
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
disabled: {},
|
|
19
|
+
attributeWithValue: {},
|
|
20
|
+
noSelect: {},
|
|
21
|
+
name: {
|
|
22
|
+
fontSize: '14px',
|
|
23
|
+
color: 'rgba(0,0,0,0.87)',
|
|
24
|
+
overflow: 'hidden',
|
|
25
|
+
whiteSpace: 'nowrap',
|
|
26
|
+
textOverflow: 'ellipsis',
|
|
27
|
+
direction: 'rtl',
|
|
28
|
+
textAlign: 'left',
|
|
29
|
+
flex: '1 0',
|
|
30
|
+
width: '0',
|
|
31
|
+
'& $noSelect': {
|
|
32
|
+
color: 'rgba(0,0,0,0.38)'
|
|
33
|
+
},
|
|
34
|
+
'&$disabled': {
|
|
35
|
+
color: 'rgba(0,0,0,0.26)',
|
|
36
|
+
'& $noSelect': {
|
|
37
|
+
color: 'rgba(0,0,0,0.26)'
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
export default useStyles;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { BasicAttributeSelectorProps } from '../../types';
|
|
3
|
+
declare const _default: React.MemoExoticComponent<({ className, itemsGroups, value, getLabel, onSelect, onRestoreFocus, onOpenPopup, disableRestoreFocus, disableEnforceFocus, single, ungroup, disabled, hideCheckBox }: BasicAttributeSelectorProps) => JSX.Element>;
|
|
4
|
+
export default _default;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import React, { memo, useCallback, useMemo, useRef, useState } from 'react';
|
|
2
|
+
import i18n from 'ui-i18n';
|
|
3
|
+
import classnames from 'classnames';
|
|
4
|
+
import { identity, pipe, tap, prop, flatten, pick, map, chain, when, always } from 'ramda';
|
|
5
|
+
import SelectionPopup from '../SelectionPopup/SelectionPopup';
|
|
6
|
+
import { useKeyboardNavigation } from '../SelectionPopup/helpers';
|
|
7
|
+
import AttributeTitle from './AttributeTitle/AttributeTitle';
|
|
8
|
+
import { filterSelectedAttributes, getAttributeIndex, getContainerWidth, getOnEnterHandler, prepareGroupsForSelectAttributeList } from './helpers';
|
|
9
|
+
import SelectAttributesList from '../SelectAttributesList/SelectAttributesList';
|
|
10
|
+
import { flattenGroupedItemsData } from '../VirtualGroupedList/helpers';
|
|
11
|
+
import useStyles from './styles';
|
|
12
|
+
var ATTRIBUTES_LIST_HEIGHT = 400;
|
|
13
|
+
var ATTRIBUTES_LIST_WIDTH = 308;
|
|
14
|
+
var ATTRIBUTES_POPUP_HEIGHT = 507;
|
|
15
|
+
var BasicAttributeSelector = function (_a) {
|
|
16
|
+
var className = _a.className, itemsGroups = _a.itemsGroups, value = _a.value, getLabel = _a.getLabel, onSelect = _a.onSelect, _b = _a.onRestoreFocus, onRestoreFocus = _b === void 0 ? identity : _b, _c = _a.onOpenPopup, onOpenPopup = _c === void 0 ? identity : _c, _d = _a.disableRestoreFocus, disableRestoreFocus = _d === void 0 ? false : _d, _e = _a.disableEnforceFocus, disableEnforceFocus = _e === void 0 ? false : _e, _f = _a.single, single = _f === void 0 ? false : _f, _g = _a.ungroup, ungroup = _g === void 0 ? false : _g, _h = _a.disabled, disabled = _h === void 0 ? false : _h, _j = _a.hideCheckBox, hideCheckBox = _j === void 0 ? false : _j;
|
|
17
|
+
var styles = useStyles();
|
|
18
|
+
var _k = useState(null), selectAnchor = _k[0], setSelectAnchor = _k[1];
|
|
19
|
+
var openPopup = function (event) {
|
|
20
|
+
onOpenPopup();
|
|
21
|
+
setSelectAnchor(event.currentTarget);
|
|
22
|
+
};
|
|
23
|
+
var closePopup = useCallback(function () { return setSelectAnchor(null); }, []);
|
|
24
|
+
var isPopupOpen = !!selectAnchor;
|
|
25
|
+
var _l = useState(''), filterText = _l[0], setFilterText = _l[1];
|
|
26
|
+
var clearFilterText = useCallback(function () { return setFilterText(''); }, []);
|
|
27
|
+
var _m = useState([]), selectedAttributes = _m[0], setSelectedAttributes = _m[1];
|
|
28
|
+
var clearSelectedAttributes = useCallback(function () { return setSelectedAttributes([]); }, []);
|
|
29
|
+
var filteredItemsGroups = useMemo(function () { return prepareGroupsForSelectAttributeList(filterText, itemsGroups); }, [
|
|
30
|
+
itemsGroups,
|
|
31
|
+
filterText
|
|
32
|
+
]);
|
|
33
|
+
var items = useMemo(function () {
|
|
34
|
+
return pipe(when(always(ungroup), chain(pipe(prop('items'), flatten, map(pick(['item', 'level']))))), flattenGroupedItemsData)(filteredItemsGroups);
|
|
35
|
+
}, [ungroup, filteredItemsGroups]);
|
|
36
|
+
var containerWidth = useMemo(function () { return Math.max(getContainerWidth(filteredItemsGroups), ATTRIBUTES_LIST_WIDTH); }, [
|
|
37
|
+
filteredItemsGroups
|
|
38
|
+
]);
|
|
39
|
+
var handleOnClose = pipe(tap(pipe(clearSelectedAttributes, clearFilterText, closePopup)), onRestoreFocus);
|
|
40
|
+
var searchInputRef = useRef();
|
|
41
|
+
var onListItemClick = useCallback(function (attribute, checked) {
|
|
42
|
+
onSelect({
|
|
43
|
+
checked: checked,
|
|
44
|
+
attribute: attribute,
|
|
45
|
+
index: checked ? selectedAttributes.length : getAttributeIndex(selectedAttributes, attribute),
|
|
46
|
+
selectedAttributes: selectedAttributes
|
|
47
|
+
});
|
|
48
|
+
if (single) {
|
|
49
|
+
setSelectedAttributes(checked ? [attribute] : []);
|
|
50
|
+
handleOnClose({});
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
setSelectedAttributes(filterSelectedAttributes({ selectedAttributes: selectedAttributes, attribute: attribute, checked: checked }));
|
|
54
|
+
if (searchInputRef.current) {
|
|
55
|
+
searchInputRef.current.focus();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}, [selectedAttributes, onSelect, single, handleOnClose, searchInputRef]);
|
|
59
|
+
var handleSearchOnEnter = useCallback(getOnEnterHandler({ onListItemClick: onListItemClick, selectedAttributes: selectedAttributes }), [
|
|
60
|
+
onListItemClick,
|
|
61
|
+
selectedAttributes
|
|
62
|
+
]);
|
|
63
|
+
var _o = useKeyboardNavigation({
|
|
64
|
+
items: items,
|
|
65
|
+
open: isPopupOpen,
|
|
66
|
+
onSelectFocusedItem: handleSearchOnEnter,
|
|
67
|
+
selectedItems: selectedAttributes,
|
|
68
|
+
onClose: handleOnClose
|
|
69
|
+
}), focusIndex = _o.focusIndex, handleKeyDown = _o.handleKeyDown;
|
|
70
|
+
return (React.createElement("div", { className: classnames(styles.selector, className), "data-reltio-id": "attribute-selector" },
|
|
71
|
+
React.createElement(AttributeTitle, { value: value, getLabel: getLabel, onSelectAttributeClick: openPopup, disabled: disabled }),
|
|
72
|
+
React.createElement(SelectionPopup, { open: isPopupOpen, anchorEl: selectAnchor, onClose: handleOnClose, onSearch: setFilterText, title: i18n.text('Select attribute'), containerWidth: containerWidth, containerHeight: ATTRIBUTES_POPUP_HEIGHT, searchInputOnKeyDown: handleKeyDown, anchorOrigin: { horizontal: 'right', vertical: 'bottom' }, searchInputRef: searchInputRef, disableRestoreFocus: disableRestoreFocus, disableEnforceFocus: disableEnforceFocus },
|
|
73
|
+
React.createElement(SelectAttributesList, { items: items, onItemClick: onListItemClick, selectedAttributes: selectedAttributes, width: containerWidth, height: ATTRIBUTES_LIST_HEIGHT, focusIndex: focusIndex, hideCheckBox: hideCheckBox }))));
|
|
74
|
+
};
|
|
75
|
+
export default memo(BasicAttributeSelector);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AttributeSelectorItem, AttributeSelectorItemsGroup } from '../../types';
|
|
2
|
+
export declare const isEqualAttributes: any;
|
|
3
|
+
export declare const checkAttributeIncludes: (attribute: AttributeSelectorItem, selectedAttributes: AttributeSelectorItem[]) => boolean;
|
|
4
|
+
export declare const filterItemsTree: (item: AttributeSelectorItem, filterText: string) => boolean;
|
|
5
|
+
export declare const filterSelectedAttributes: ({ attribute, selectedAttributes, checked }: {
|
|
6
|
+
attribute: AttributeSelectorItem;
|
|
7
|
+
selectedAttributes: AttributeSelectorItem[];
|
|
8
|
+
checked: boolean;
|
|
9
|
+
}) => AttributeSelectorItem[];
|
|
10
|
+
export declare const getAttributeIndex: (selectedAttributes: AttributeSelectorItem[], attribute: AttributeSelectorItem) => number;
|
|
11
|
+
export declare const getContainerWidth: (items: any) => any;
|
|
12
|
+
export declare const getOnEnterHandler: ({ onListItemClick, selectedAttributes }: {
|
|
13
|
+
selectedAttributes: AttributeSelectorItem[];
|
|
14
|
+
onListItemClick: (attribute: AttributeSelectorItem, checked: boolean) => void;
|
|
15
|
+
}) => ({ item, groupData }: {
|
|
16
|
+
item: any;
|
|
17
|
+
groupData: any;
|
|
18
|
+
}) => void;
|
|
19
|
+
export declare const prepareGroupsForSelectAttributeList: (filterText: string, groups: AttributeSelectorItemsGroup[]) => {
|
|
20
|
+
item: AttributeSelectorItemsGroup[];
|
|
21
|
+
items: AttributeSelectorItem[];
|
|
22
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
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 { eqBy, pick, curry } from 'ramda';
|
|
13
|
+
import { getMaxItemWidth } from '@reltio/mdm-sdk';
|
|
14
|
+
export var isEqualAttributes = eqBy(pick(['fieldName', 'uri', 'entityTypeUri']));
|
|
15
|
+
export var checkAttributeIncludes = function (attribute, selectedAttributes) {
|
|
16
|
+
return selectedAttributes && !!selectedAttributes.find(isEqualAttributes(attribute));
|
|
17
|
+
};
|
|
18
|
+
var filterItem = function (item, filterText) {
|
|
19
|
+
return item.title.toLowerCase().includes(filterText.toLowerCase());
|
|
20
|
+
};
|
|
21
|
+
export var filterItemsTree = function (item, filterText) {
|
|
22
|
+
return filterItem(item, filterText) || (item.children || []).some(function (item) { return filterItemsTree(item, filterText); });
|
|
23
|
+
};
|
|
24
|
+
export var filterSelectedAttributes = function (_a) {
|
|
25
|
+
var attribute = _a.attribute, selectedAttributes = _a.selectedAttributes, checked = _a.checked;
|
|
26
|
+
return checked
|
|
27
|
+
? selectedAttributes.concat(attribute)
|
|
28
|
+
: selectedAttributes.filter(function (selectedAttribute) { return !isEqualAttributes(attribute, selectedAttribute); });
|
|
29
|
+
};
|
|
30
|
+
export var getAttributeIndex = function (selectedAttributes, attribute) {
|
|
31
|
+
return selectedAttributes.findIndex(isEqualAttributes(attribute));
|
|
32
|
+
};
|
|
33
|
+
export var getContainerWidth = getMaxItemWidth('title');
|
|
34
|
+
export var getOnEnterHandler = function (_a) {
|
|
35
|
+
var onListItemClick = _a.onListItemClick, selectedAttributes = _a.selectedAttributes;
|
|
36
|
+
return function (_a) {
|
|
37
|
+
var item = _a.item, groupData = _a.groupData;
|
|
38
|
+
var checked = checkAttributeIncludes(item, selectedAttributes);
|
|
39
|
+
onListItemClick(__assign(__assign({}, item), { groupName: groupData.groupName }), !checked);
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
var getAttributeGroupData = function (item, groupId, groupName, filterText, level, noFilter) {
|
|
43
|
+
if (level === void 0) { level = 0; }
|
|
44
|
+
if (noFilter === void 0) { noFilter = false; }
|
|
45
|
+
var isItemFiltered = filterItem(item, filterText);
|
|
46
|
+
return [
|
|
47
|
+
{
|
|
48
|
+
item: filterText ? __assign(__assign({}, item), { filterText: filterText }) : item,
|
|
49
|
+
level: level,
|
|
50
|
+
groupId: groupId,
|
|
51
|
+
groupName: groupName
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
.concat(item.children
|
|
55
|
+
? item.children
|
|
56
|
+
.filter(function (subItem) { return noFilter || isItemFiltered || filterItemsTree(subItem, filterText); })
|
|
57
|
+
.flatMap(function (subItem) {
|
|
58
|
+
return getAttributeGroupData(subItem, groupId, groupName, filterText, level + 1, noFilter || isItemFiltered);
|
|
59
|
+
})
|
|
60
|
+
: [])
|
|
61
|
+
.flat();
|
|
62
|
+
};
|
|
63
|
+
export var prepareGroupsForSelectAttributeList = curry(function (filterText, groups) {
|
|
64
|
+
return groups
|
|
65
|
+
.map(function (group) { return ({
|
|
66
|
+
item: group,
|
|
67
|
+
items: group.attributes
|
|
68
|
+
.filter(function (attribute) { return filterItemsTree(attribute, filterText); })
|
|
69
|
+
.map(function (item) { return getAttributeGroupData(item, group.id, group.title, filterText); })
|
|
70
|
+
}); })
|
|
71
|
+
.filter(function (group) { return group.items.length; });
|
|
72
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { makeStyles } from '@material-ui/core/styles';
|
|
2
|
+
var useStyles = makeStyles({
|
|
3
|
+
selector: {
|
|
4
|
+
minWidth: '200px',
|
|
5
|
+
alignItems: 'stretch',
|
|
6
|
+
background: 'rgba(0,0,0, 0.0267)',
|
|
7
|
+
boxSizing: 'border-box',
|
|
8
|
+
borderRadius: '4px',
|
|
9
|
+
display: 'flex'
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
export default useStyles;
|
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { EditingConnection,
|
|
2
|
+
import { AttributeItem, EditingConnection, Entity, TRelationType } from '@reltio/mdm-sdk';
|
|
3
3
|
declare type Props = {
|
|
4
4
|
connection: EditingConnection;
|
|
5
5
|
showEmptyEditors?: boolean;
|
|
6
6
|
onChangeAttribute: (attribute: AttributeItem) => void;
|
|
7
7
|
onAddAttributes: (attributes: AttributeItem[]) => void;
|
|
8
|
-
onRemoveAttribute: (
|
|
8
|
+
onRemoveAttribute: (attributes: AttributeItem) => void;
|
|
9
|
+
onChangeRelationType?: (value: {
|
|
10
|
+
type: string;
|
|
11
|
+
direction: string;
|
|
12
|
+
}) => void;
|
|
13
|
+
onChangeEntity?: (entity: Entity) => void;
|
|
14
|
+
relatedEntity?: Entity;
|
|
15
|
+
inRelationTypes?: TRelationType[];
|
|
16
|
+
outRelationTypes?: TRelationType[];
|
|
17
|
+
entityErrorMessage?: string;
|
|
9
18
|
};
|
|
10
|
-
export declare const ConnectionEditor: ({ connection, onChangeAttribute, onRemoveAttribute, onAddAttributes,
|
|
19
|
+
export declare const ConnectionEditor: ({ connection, relatedEntity, inRelationTypes, outRelationTypes, showEmptyEditors, entityErrorMessage, onChangeAttribute, onRemoveAttribute, onAddAttributes, onChangeRelationType, onChangeEntity }: Props) => JSX.Element;
|
|
11
20
|
export {};
|
|
@@ -9,20 +9,87 @@ var __assign = (this && this.__assign) || function () {
|
|
|
9
9
|
};
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
|
-
import
|
|
12
|
+
import { useStyles } from './styles';
|
|
13
|
+
import { useDidUpdateEffect } from '../../hooks';
|
|
14
|
+
import React, { useCallback, useEffect, useMemo } from 'react';
|
|
13
15
|
import { useSelector } from 'react-redux';
|
|
14
16
|
import mdmModule from '@reltio/mdm-module';
|
|
15
|
-
import { getActivenessAttributes, getRelationAttributesList, ModeTypes } from '@reltio/mdm-sdk';
|
|
17
|
+
import { Directions, getActivenessAttributes, getSuitableEntityTypeUrisForRelationTypes, getDefaultRelationTypeObject, getLabel, getRelationAttributesList, getRelationType, isAvailableRelationBetweenEntities, ModeTypes } from '@reltio/mdm-sdk';
|
|
16
18
|
import AttributesList from '../attributes/editMode/AttributesList';
|
|
19
|
+
import classnames from 'classnames';
|
|
20
|
+
import { uniq } from 'ramda';
|
|
21
|
+
import ConnectionRelationTypeSelector from '../ConnectionRelationTypeSelector/ConnectionRelationTypeSelector';
|
|
22
|
+
import ErrorWrapper from '../ErrorWrapper/ErrorWrapper';
|
|
23
|
+
import EntitySelector from '../attributes/editMode/EntitySelector/EntitySelector';
|
|
17
24
|
export var ConnectionEditor = function (_a) {
|
|
18
|
-
var
|
|
19
|
-
var
|
|
20
|
-
var
|
|
25
|
+
var _b;
|
|
26
|
+
var connection = _a.connection, relatedEntity = _a.relatedEntity, _c = _a.inRelationTypes, inRelationTypes = _c === void 0 ? [] : _c, _d = _a.outRelationTypes, outRelationTypes = _d === void 0 ? [] : _d, showEmptyEditors = _a.showEmptyEditors, entityErrorMessage = _a.entityErrorMessage, onChangeAttribute = _a.onChangeAttribute, onRemoveAttribute = _a.onRemoveAttribute, onAddAttributes = _a.onAddAttributes, onChangeRelationType = _a.onChangeRelationType, onChangeEntity = _a.onChangeEntity;
|
|
27
|
+
var styles = useStyles();
|
|
28
|
+
var relation = connection.relation, entity = connection.entity;
|
|
29
|
+
var _e = relation || {}, attributes = _e.attributes, relationUri = _e.uri, _f = _e.type, relationTypeUri = _f === void 0 ? '' : _f, direction = _e.direction;
|
|
30
|
+
var isRelationTypeSelected = Boolean(relationTypeUri);
|
|
21
31
|
var metadata = useSelector(mdmModule.selectors.getMetadata);
|
|
22
|
-
var attributeListEntity = useMemo(function () {
|
|
32
|
+
var attributeListEntity = useMemo(function () {
|
|
33
|
+
return relation && __assign({ attributes: attributes }, getActivenessAttributes(relation));
|
|
34
|
+
}, [relation, attributes]);
|
|
23
35
|
var relationAttrTypes = useMemo(function () { return getRelationAttributesList(metadata, relationTypeUri); }, [
|
|
24
36
|
relationTypeUri,
|
|
25
37
|
metadata
|
|
26
38
|
]);
|
|
27
|
-
|
|
39
|
+
var availableEntityTypeUris = useMemo(function () {
|
|
40
|
+
return isRelationTypeSelected
|
|
41
|
+
? getSuitableEntityTypeUrisForRelationTypes(direction === Directions.OUT, metadata, [
|
|
42
|
+
getRelationType(metadata, relationTypeUri)
|
|
43
|
+
])
|
|
44
|
+
: uniq(getSuitableEntityTypeUrisForRelationTypes(true, metadata, outRelationTypes).concat(getSuitableEntityTypeUrisForRelationTypes(false, metadata, inRelationTypes)));
|
|
45
|
+
}, [isRelationTypeSelected, relationTypeUri, metadata, inRelationTypes, outRelationTypes]);
|
|
46
|
+
var globalSearchRequestOptions = useSelector(function (state) {
|
|
47
|
+
return mdmModule.selectors.getGlobalSearchRequestOptions(state, ['ovOnly']);
|
|
48
|
+
});
|
|
49
|
+
var selectorCompatibleRelation = useMemo(function () {
|
|
50
|
+
return relation && {
|
|
51
|
+
relationType: relation.type,
|
|
52
|
+
direction: relation.direction
|
|
53
|
+
};
|
|
54
|
+
}, [relation]);
|
|
55
|
+
var selectorCompatibleEntity = useMemo(function () {
|
|
56
|
+
return entity && {
|
|
57
|
+
entityUri: entity.uri,
|
|
58
|
+
entityType: entity.type,
|
|
59
|
+
entityLabel: getLabel(entity.label)
|
|
60
|
+
};
|
|
61
|
+
}, [entity]);
|
|
62
|
+
var availableInRelationTypes = useMemo(function () {
|
|
63
|
+
return entity && entity.uri
|
|
64
|
+
? inRelationTypes.filter(isAvailableRelationBetweenEntities(false, entity, relatedEntity, metadata))
|
|
65
|
+
: inRelationTypes;
|
|
66
|
+
}, [entity, inRelationTypes, relatedEntity, metadata]);
|
|
67
|
+
var availableOutRelationTypes = useMemo(function () {
|
|
68
|
+
return entity && entity.uri
|
|
69
|
+
? outRelationTypes.filter(isAvailableRelationBetweenEntities(true, entity, relatedEntity, metadata))
|
|
70
|
+
: outRelationTypes;
|
|
71
|
+
}, [entity, outRelationTypes, relatedEntity, metadata]);
|
|
72
|
+
useEffect(function () {
|
|
73
|
+
// autoselecting relation type on mount
|
|
74
|
+
var _a = getDefaultRelationTypeObject(inRelationTypes, outRelationTypes) || {}, type = _a.type, direction = _a.direction;
|
|
75
|
+
if (!relationTypeUri && type && onChangeRelationType) {
|
|
76
|
+
onChangeRelationType({ type: type.uri, direction: direction });
|
|
77
|
+
}
|
|
78
|
+
}, [relationTypeUri, inRelationTypes, outRelationTypes, onChangeRelationType]);
|
|
79
|
+
useDidUpdateEffect(function () {
|
|
80
|
+
// autoselecting relation type on entity change
|
|
81
|
+
var _a = getDefaultRelationTypeObject(availableInRelationTypes, availableOutRelationTypes) || {}, type = _a.type, direction = _a.direction;
|
|
82
|
+
if (!relationTypeUri && type) {
|
|
83
|
+
onChangeRelationType({ type: type.uri, direction: direction });
|
|
84
|
+
}
|
|
85
|
+
}, [relationTypeUri, entity, availableInRelationTypes, availableOutRelationTypes, onChangeEntity]);
|
|
86
|
+
var handleChangeRelationType = useCallback(function (_a) {
|
|
87
|
+
var type = _a.type, direction = _a.direction;
|
|
88
|
+
onChangeRelationType({ type: type.uri, direction: direction });
|
|
89
|
+
}, [onChangeRelationType]);
|
|
90
|
+
return (React.createElement(React.Fragment, null,
|
|
91
|
+
onChangeRelationType && (React.createElement(ConnectionRelationTypeSelector, { className: styles.item, relation: selectorCompatibleRelation, metadata: metadata, inRelationTypes: inRelationTypes, outRelationTypes: outRelationTypes, onChange: handleChangeRelationType })),
|
|
92
|
+
onChangeEntity && (React.createElement(ErrorWrapper, { errorMessage: entityErrorMessage, className: styles.item },
|
|
93
|
+
React.createElement(EntitySelector, { key: relationTypeUri, className: classnames((_b = {}, _b[styles.dense] = entityErrorMessage, _b)), entity: selectorCompatibleEntity || {}, entityTypesUris: availableEntityTypeUris, max: 20, globalSearchRequestOptions: globalSearchRequestOptions, mode: ModeTypes.EDITING, onChange: onChangeEntity, onCreate: undefined, metadata: metadata, attributeTypesSelectionStrategy: undefined }))),
|
|
94
|
+
relationTypeUri && (React.createElement(AttributesList, { attrTypes: relationAttrTypes, entity: attributeListEntity, showEmptyEditors: showEmptyEditors, mode: ModeTypes.EDITING, parentUri: relationUri, onAddAttributes: onAddAttributes, onChangeAttribute: onChangeAttribute, onDeleteAttribute: onRemoveAttribute }))));
|
|
28
95
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"item" | "dense">;
|
|
@@ -40,11 +40,12 @@ var ConnectionRelationTypeSelector = function (_a) {
|
|
|
40
40
|
outRelationTypes,
|
|
41
41
|
onChange
|
|
42
42
|
]);
|
|
43
|
+
var hasValue = !!relation.relationType;
|
|
43
44
|
useEffect(function () {
|
|
44
|
-
if (applyFirstByDefault && relationsTypesOptions.length) {
|
|
45
|
+
if (applyFirstByDefault && relationsTypesOptions.length && !hasValue) {
|
|
45
46
|
handleChange(relationsTypesOptions[0]);
|
|
46
47
|
}
|
|
47
|
-
}, [relationsTypesOptions, applyFirstByDefault, handleChange]);
|
|
48
|
+
}, [relationsTypesOptions, applyFirstByDefault, handleChange, hasValue]);
|
|
48
49
|
return (React.createElement(RelationTypeSelector, __assign({ value: toEditorValue(relation, relationsTypesOptions), options: relationsTypesOptions, onChange: handleChange }, otherProps)));
|
|
49
50
|
};
|
|
50
51
|
ConnectionRelationTypeSelector.propTypes = {
|
|
@@ -40,7 +40,7 @@ declare var _default: React.MemoExoticComponent<{
|
|
|
40
40
|
actionsContainer: PropTypes.Requireable<string>;
|
|
41
41
|
}>>;
|
|
42
42
|
rowData: PropTypes.Requireable<PropTypes.InferProps<{
|
|
43
|
-
id: PropTypes.Requireable<string>;
|
|
43
|
+
id: PropTypes.Requireable<string | number>;
|
|
44
44
|
values: PropTypes.Requireable<any[]>;
|
|
45
45
|
data: PropTypes.Requireable<PropTypes.InferProps<{
|
|
46
46
|
title: PropTypes.Requireable<string>;
|
|
@@ -69,7 +69,7 @@ declare var _default: React.MemoExoticComponent<{
|
|
|
69
69
|
operator: PropTypes.Requireable<string>;
|
|
70
70
|
}>>;
|
|
71
71
|
previousRowData: PropTypes.Requireable<PropTypes.InferProps<{
|
|
72
|
-
id: PropTypes.Requireable<string>;
|
|
72
|
+
id: PropTypes.Requireable<string | number>;
|
|
73
73
|
values: PropTypes.Requireable<any[]>;
|
|
74
74
|
data: PropTypes.Requireable<PropTypes.InferProps<{
|
|
75
75
|
title: PropTypes.Requireable<string>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
declare var _default: React.MemoExoticComponent<{
|
|
2
2
|
({ className, rowClasses, rowsData, lastRowAttributeSelectorProps, filterSelectorRef, filterSelectorRefIndex, ...rowProps }: {
|
|
3
3
|
[x: string]: any;
|
|
4
|
-
className
|
|
4
|
+
className?: any;
|
|
5
5
|
rowClasses: any;
|
|
6
6
|
rowsData: any;
|
|
7
7
|
lastRowAttributeSelectorProps: any;
|
|
@@ -19,7 +19,7 @@ declare var _default: React.MemoExoticComponent<{
|
|
|
19
19
|
actionsContainer: PropTypes.Requireable<string>;
|
|
20
20
|
}>>;
|
|
21
21
|
rowsData: PropTypes.Requireable<PropTypes.InferProps<{
|
|
22
|
-
id: PropTypes.Requireable<string>;
|
|
22
|
+
id: PropTypes.Requireable<string | number>;
|
|
23
23
|
values: PropTypes.Requireable<any[]>;
|
|
24
24
|
data: PropTypes.Requireable<PropTypes.InferProps<{
|
|
25
25
|
title: PropTypes.Requireable<string>;
|
|
@@ -26,7 +26,7 @@ import { path } from 'ramda';
|
|
|
26
26
|
import QueryBuilderRow from '../QueryBuilderRow/QueryBuilderRow';
|
|
27
27
|
import { QueryBuilderAttributeType } from '../../constants';
|
|
28
28
|
var QueryBuilderRowsGroup = function (_a) {
|
|
29
|
-
var
|
|
29
|
+
var _b = _a.className, className = _b === void 0 ? undefined : _b, rowClasses = _a.rowClasses, rowsData = _a.rowsData, lastRowAttributeSelectorProps = _a.lastRowAttributeSelectorProps, filterSelectorRef = _a.filterSelectorRef, filterSelectorRefIndex = _a.filterSelectorRefIndex, rowProps = __rest(_a, ["className", "rowClasses", "rowsData", "lastRowAttributeSelectorProps", "filterSelectorRef", "filterSelectorRefIndex"]);
|
|
30
30
|
var renderRow = function (rowData, index, rowsData) {
|
|
31
31
|
var previousRow = index > 0 ? path([index - 1], rowsData) : null;
|
|
32
32
|
var lastRowProps = index === rowsData.length
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { AttributeType } from '@reltio/mdm-sdk';
|
|
3
|
+
import { AttributeSelectorItem } from '../../types';
|
|
4
|
+
declare type Data = {
|
|
5
|
+
attrType?: AttributeType;
|
|
6
|
+
};
|
|
7
|
+
declare type Props = {
|
|
8
|
+
selectedAttributes: AttributeSelectorItem[];
|
|
9
|
+
focusIndex: number;
|
|
10
|
+
hideCheckBox: boolean;
|
|
11
|
+
onItemClick: (data: Data, checked: boolean, groupId: string) => void;
|
|
12
|
+
} & Record<string, unknown>;
|
|
13
|
+
declare const _default: React.MemoExoticComponent<({ selectedAttributes, onItemClick, focusIndex, hideCheckBox, ...otherProps }: Props) => JSX.Element>;
|
|
14
|
+
export default _default;
|
|
@@ -0,0 +1,51 @@
|
|
|
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
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
+
var t = {};
|
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
+
t[p] = s[p];
|
|
16
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
+
t[p[i]] = s[p[i]];
|
|
20
|
+
}
|
|
21
|
+
return t;
|
|
22
|
+
};
|
|
23
|
+
import React, { memo } from 'react';
|
|
24
|
+
import { useSelector } from 'react-redux';
|
|
25
|
+
import ListItem from '@material-ui/core/ListItem';
|
|
26
|
+
import mdmModule from '@reltio/mdm-module';
|
|
27
|
+
import AttributeListItem from '../AttributeListItem/AttributeListItem';
|
|
28
|
+
import VirtualGroupedList from '../VirtualGroupedList/VirtualGroupedList';
|
|
29
|
+
import Highlighter from '../Highlighter/Highlighter';
|
|
30
|
+
import AttributeGroupIcon from '../AttributeGroupIcon/AttributeGroupIcon';
|
|
31
|
+
import { checkAttributeIncludes } from '../BasicAttributeSelector/helpers';
|
|
32
|
+
import { useStyles } from './styles';
|
|
33
|
+
var ITEM_HEIGHT = 28;
|
|
34
|
+
var ITEM_GROUP_TITLE_HEIGHT = 40;
|
|
35
|
+
var SelectAttributesList = function (_a) {
|
|
36
|
+
var selectedAttributes = _a.selectedAttributes, onItemClick = _a.onItemClick, focusIndex = _a.focusIndex, hideCheckBox = _a.hideCheckBox, otherProps = __rest(_a, ["selectedAttributes", "onItemClick", "focusIndex", "hideCheckBox"]);
|
|
37
|
+
var styles = useStyles();
|
|
38
|
+
var metadata = useSelector(mdmModule.selectors.getMetadata);
|
|
39
|
+
var getItemSize = function (i, item) { return (item.items ? ITEM_GROUP_TITLE_HEIGHT : ITEM_HEIGHT); };
|
|
40
|
+
var renderGroupTitle = function (style, item) { return (React.createElement(ListItem, { component: 'div', className: styles.subHeader, style: style, key: "group-" + item.item.id },
|
|
41
|
+
item.item.needGroupIcon && React.createElement(AttributeGroupIcon, { group: item.item, metadata: metadata }),
|
|
42
|
+
item.item.title)); };
|
|
43
|
+
var renderItem = function (style, _a, index) {
|
|
44
|
+
var item = _a.item, level = _a.level, groupId = _a.groupId, groupName = _a.groupName;
|
|
45
|
+
var checked = checkAttributeIncludes(item, selectedAttributes);
|
|
46
|
+
var isFocused = index === focusIndex;
|
|
47
|
+
return (React.createElement(AttributeListItem, { key: "item-" + groupId + "-" + item.fieldName, onClick: onItemClick, checked: checked, data: __assign(__assign({}, item), { groupName: groupName }), notSelectable: item.notSelectable, hideCheckBox: hideCheckBox, label: React.createElement(Highlighter, { text: item.title, highlight: item.filterText }), labelInText: item.title, level: level, style: style, isFocused: isFocused, groupId: groupId, LogoIcon: item.LogoIcon }));
|
|
48
|
+
};
|
|
49
|
+
return (React.createElement(VirtualGroupedList, __assign({ getItemSize: getItemSize, renderItem: renderItem, renderGroupTitle: renderGroupTitle, focusIndex: focusIndex }, otherProps)));
|
|
50
|
+
};
|
|
51
|
+
export default memo(SelectAttributesList);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"subHeader">;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { makeStyles } from '@material-ui/core/styles';
|
|
2
|
+
export var useStyles = makeStyles({
|
|
3
|
+
subHeader: {
|
|
4
|
+
backgroundColor: '#f5f5f5',
|
|
5
|
+
padding: '0 16px',
|
|
6
|
+
margin: 0,
|
|
7
|
+
display: 'flex',
|
|
8
|
+
alignItems: 'center',
|
|
9
|
+
color: 'rgba(0,0,0,0.84)',
|
|
10
|
+
fontSize: '14px',
|
|
11
|
+
fontWeight: 500
|
|
12
|
+
}
|
|
13
|
+
});
|
|
@@ -5,7 +5,7 @@ declare type Props = {
|
|
|
5
5
|
containerWidth: number;
|
|
6
6
|
containerHeight: number;
|
|
7
7
|
children: React.ReactNode;
|
|
8
|
-
PaperProps
|
|
8
|
+
PaperProps?: Record<string, unknown>;
|
|
9
9
|
searchInputOnKeyDown: (event: React.KeyboardEvent) => void;
|
|
10
10
|
onSearch: (value?: string) => void;
|
|
11
11
|
className?: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ReactNode
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
2
|
declare type HeaderProps = {
|
|
3
3
|
mainTitle?: string;
|
|
4
4
|
secondTitle?: string;
|
|
@@ -8,5 +8,5 @@ declare type HeaderProps = {
|
|
|
8
8
|
declare type Props = HeaderProps & {
|
|
9
9
|
onClose: () => void;
|
|
10
10
|
};
|
|
11
|
-
export declare const SidePanelContentHeader:
|
|
11
|
+
export declare const SidePanelContentHeader: ({ onClose, mainTitle, secondTitle, content, rightContent }: Props) => JSX.Element;
|
|
12
12
|
export {};
|
|
@@ -10,7 +10,7 @@ declare function EntitySelector({ entity, entityTypesUris, mode, max, onChange,
|
|
|
10
10
|
metadata: any;
|
|
11
11
|
globalSearchRequestOptions: any;
|
|
12
12
|
attributeTypesSelectionStrategy: any;
|
|
13
|
-
disableLinkClick
|
|
13
|
+
disableLinkClick?: boolean;
|
|
14
14
|
}): JSX.Element;
|
|
15
15
|
declare namespace EntitySelector {
|
|
16
16
|
namespace propTypes {
|