@reltio/components 1.4.1381 → 1.4.1383
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/editors/DependentLookupEditor/DependentLookupEditor.js +59 -14
- package/cjs/components/editors/DependentLookupEditor/helpers.d.ts +1 -4
- package/cjs/components/editors/DependentLookupEditor/helpers.js +4 -2
- package/cjs/components/workflow/hooks/useWorkflowActions.js +5 -4
- package/cjs/components/workflow/hooks/useWorkflowProcessInstance.js +3 -3
- package/cjs/components/workflow/hooks/useWorkflowTasks.d.ts +1 -1
- package/cjs/components/workflow/hooks/useWorkflowTasks.js +5 -21
- package/cjs/components/workflow/index.d.ts +2 -0
- package/cjs/components/workflow/index.js +5 -1
- package/cjs/contexts/WorkflowTasksContext/index.d.ts +2 -1
- package/esm/components/editors/DependentLookupEditor/DependentLookupEditor.js +61 -16
- package/esm/components/editors/DependentLookupEditor/helpers.d.ts +1 -4
- package/esm/components/editors/DependentLookupEditor/helpers.js +4 -2
- package/esm/components/workflow/hooks/useWorkflowActions.js +5 -4
- package/esm/components/workflow/hooks/useWorkflowProcessInstance.js +3 -3
- package/esm/components/workflow/hooks/useWorkflowTasks.d.ts +1 -1
- package/esm/components/workflow/hooks/useWorkflowTasks.js +6 -22
- package/esm/components/workflow/index.d.ts +2 -0
- package/esm/components/workflow/index.js +2 -0
- package/esm/contexts/WorkflowTasksContext/index.d.ts +2 -1
- package/package.json +3 -3
|
@@ -50,6 +50,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
50
50
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
51
|
exports.DEBOUNCE_INTERVAL = void 0;
|
|
52
52
|
var react_1 = __importStar(require("react"));
|
|
53
|
+
var react_select_1 = require("react-select");
|
|
53
54
|
var prop_types_1 = __importDefault(require("prop-types"));
|
|
54
55
|
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
55
56
|
var Select_1 = __importDefault(require("../../ReactSelect/Select"));
|
|
@@ -69,6 +70,7 @@ var useAutopopulation_1 = __importDefault(require("./useAutopopulation"));
|
|
|
69
70
|
var useSavingFocus_1 = __importDefault(require("./useSavingFocus"));
|
|
70
71
|
var LoadMoreButton_1 = __importDefault(require("../../commonReactSelectComponents/LoadMoreButton"));
|
|
71
72
|
var hooks_1 = require("../../../hooks");
|
|
73
|
+
var Input = function (props) { return react_1.default.createElement(react_select_1.components.Input, __assign({}, props, { isHidden: false })); };
|
|
72
74
|
var SelectComponents = {
|
|
73
75
|
IndicatorSeparator: utils_1.EmptyStub,
|
|
74
76
|
LoadingIndicator: utils_1.EmptyStub,
|
|
@@ -76,7 +78,8 @@ var SelectComponents = {
|
|
|
76
78
|
DropdownIndicator: DropdownIndicator_1.default,
|
|
77
79
|
Menu: MenuWithPopper_1.default,
|
|
78
80
|
MenuList: MenuList_1.default,
|
|
79
|
-
MultiValue: MultiValueChip_1.default
|
|
81
|
+
MultiValue: MultiValueChip_1.default,
|
|
82
|
+
Input: Input
|
|
80
83
|
};
|
|
81
84
|
exports.DEBOUNCE_INTERVAL = 400;
|
|
82
85
|
var MAX_DEPENDENT_LOOKUP_VALUES = 50;
|
|
@@ -85,6 +88,10 @@ var DependentLookupEditor = function (_a) {
|
|
|
85
88
|
var inputRef = (0, react_1.useRef)(null);
|
|
86
89
|
var selectRef = (0, react_1.useRef)(null);
|
|
87
90
|
var styles = (0, styles_1.useStyles)();
|
|
91
|
+
var _d = (0, react_1.useState)(''), inputValue = _d[0], setInputValue = _d[1];
|
|
92
|
+
var _e = (0, react_1.useState)([]), options = _e[0], setOptions = _e[1];
|
|
93
|
+
var _f = (0, react_1.useState)(1), pageNumber = _f[0], setPageNumber = _f[1];
|
|
94
|
+
var _g = (0, react_1.useState)(false), optionsAreLoading = _g[0], setOptionsAreLoading = _g[1];
|
|
88
95
|
(0, useLookupsResolver_1.default)({
|
|
89
96
|
lookups: value,
|
|
90
97
|
resolvedValues: lookups[lookupTypeCode],
|
|
@@ -92,15 +99,55 @@ var DependentLookupEditor = function (_a) {
|
|
|
92
99
|
onLookupsResolve: function (lookups) { return onChange(multiple ? lookups : lookups[0]); }
|
|
93
100
|
});
|
|
94
101
|
(0, useSavingFocus_1.default)(selectRef, inputRef, disabled);
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
var handleInputChange = function (value) {
|
|
100
|
-
if (value !== inputValue) {
|
|
101
|
-
setInputValue(value);
|
|
102
|
+
(0, react_1.useEffect)(function () {
|
|
103
|
+
if (!multiple) {
|
|
104
|
+
setInputValue((0, helpers_1.getOptionLabel)(value));
|
|
105
|
+
setOptions(defaultOptions);
|
|
102
106
|
setPageNumber(1);
|
|
103
|
-
|
|
107
|
+
}
|
|
108
|
+
}, [value]);
|
|
109
|
+
var handleChange = function (value) {
|
|
110
|
+
markAsTouched();
|
|
111
|
+
onChange(value);
|
|
112
|
+
};
|
|
113
|
+
var handleFocus = function () {
|
|
114
|
+
value && selectRef.current.select.inputRef.select();
|
|
115
|
+
};
|
|
116
|
+
var resetOptions = function () {
|
|
117
|
+
setPageNumber(1);
|
|
118
|
+
debouncedLoadOptions('', setOptions);
|
|
119
|
+
};
|
|
120
|
+
var restoreSelectedOption = function () {
|
|
121
|
+
if (!multiple && inputValue && inputValue !== (0, helpers_1.getOptionLabel)(value)) {
|
|
122
|
+
setInputValue((0, helpers_1.getOptionLabel)(value));
|
|
123
|
+
resetOptions();
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
var handleInputChange = function (newValue, _a) {
|
|
127
|
+
var action = _a.action;
|
|
128
|
+
switch (action) {
|
|
129
|
+
case 'menu-close': {
|
|
130
|
+
restoreSelectedOption();
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
case 'input-blur': {
|
|
134
|
+
if (multiple && inputValue) {
|
|
135
|
+
setInputValue('');
|
|
136
|
+
resetOptions();
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
restoreSelectedOption();
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
case 'input-change': {
|
|
143
|
+
setInputValue(newValue);
|
|
144
|
+
setPageNumber(1);
|
|
145
|
+
debouncedLoadOptions(newValue, setOptions);
|
|
146
|
+
if (!multiple && newValue === '') {
|
|
147
|
+
handleChange('');
|
|
148
|
+
}
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
104
151
|
}
|
|
105
152
|
};
|
|
106
153
|
var loadOptions = (0, react_1.useCallback)(function (value, pageNumber) {
|
|
@@ -120,7 +167,8 @@ var DependentLookupEditor = function (_a) {
|
|
|
120
167
|
.finally(function () { return setOptionsAreLoading(false); });
|
|
121
168
|
}, [max, lookupTypeCode, parents]);
|
|
122
169
|
var loadMoreOptions = (0, react_1.useCallback)(function () {
|
|
123
|
-
|
|
170
|
+
var filterValue = inputValue !== (0, helpers_1.getOptionLabel)(value) ? inputValue : '';
|
|
171
|
+
loadOptions(multiple ? inputValue : filterValue, pageNumber + 1).then(function (buildOptions) {
|
|
124
172
|
setOptions(function (options) { return (0, ramda_1.concat)(options.slice(0, pageNumber * max), buildOptions); });
|
|
125
173
|
setPageNumber(function (page) { return page + 1; });
|
|
126
174
|
});
|
|
@@ -150,10 +198,7 @@ var DependentLookupEditor = function (_a) {
|
|
|
150
198
|
container: function (base) { return (__assign(__assign({}, base), (fullWidth ? { width: '100%' } : {}))); }
|
|
151
199
|
}, noOptionsMessage: function () {
|
|
152
200
|
return optionsAreLoading && !showMoreButton ? ui_i18n_1.default.text('Loading...') : ui_i18n_1.default.text('No results found');
|
|
153
|
-
}, components: SelectComponents, isClearable: true, isSearchable: true, inputValue: inputValue, onInputChange: handleInputChange, loadingMessage: function () { return ui_i18n_1.default.text('Loading...'); }, isLoading: !inputValue && isLoadingDefaultOptions, hideSelectedOptions: false, placeholder: placeholder || '', isDisabled: disabled, options: displayedOptions, getOptionValue: (0, ramda_1.either)((0, ramda_1.prop)('value'), (0, ramda_1.prop)('lookupCode')), getOptionLabel: helpers_1.getOptionLabel, onChange:
|
|
154
|
-
markAsTouched();
|
|
155
|
-
onChange(value);
|
|
156
|
-
}, value: (0, ramda_1.defaultTo)(multiple ? [] : null, value), menuListFooter: showMoreButton && react_1.default.createElement(LoadMoreButton_1.default, { loading: optionsAreLoading, onClick: loadMoreOptions }) })));
|
|
201
|
+
}, components: SelectComponents, isClearable: true, isSearchable: true, controlShouldRenderValue: multiple, inputValue: inputValue, filterOption: multiple ? undefined : ramda_1.T, onInputChange: handleInputChange, loadingMessage: function () { return ui_i18n_1.default.text('Loading...'); }, isLoading: !inputValue && isLoadingDefaultOptions, hideSelectedOptions: false, placeholder: placeholder || '', isDisabled: disabled, options: displayedOptions, getOptionValue: (0, ramda_1.either)((0, ramda_1.prop)('value'), (0, ramda_1.prop)('lookupCode')), getOptionLabel: helpers_1.getOptionLabel, onChange: handleChange, onFocus: multiple ? undefined : handleFocus, value: (0, ramda_1.defaultTo)(multiple ? [] : null, value), menuListFooter: showMoreButton && react_1.default.createElement(LoadMoreButton_1.default, { loading: optionsAreLoading, onClick: loadMoreOptions }) })));
|
|
157
202
|
};
|
|
158
203
|
DependentLookupEditor.propTypes = {
|
|
159
204
|
multiple: prop_types_1.default.bool,
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.buildLookupOptions = exports.getOptionLabel = void 0;
|
|
4
4
|
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
5
|
-
var getOptionLabel = function (
|
|
6
|
-
|
|
5
|
+
var getOptionLabel = function (obj) {
|
|
6
|
+
if (!obj)
|
|
7
|
+
return '';
|
|
8
|
+
var lookupCode = obj.lookupCode, value = obj.value;
|
|
7
9
|
return (0, mdm_sdk_1.getLookupLabel)(lookupCode, value);
|
|
8
10
|
};
|
|
9
11
|
exports.getOptionLabel = getOptionLabel;
|
|
@@ -34,13 +34,13 @@ var WorkflowTasksContext_1 = require("../../../contexts/WorkflowTasksContext");
|
|
|
34
34
|
var helpers_1 = require("../helpers");
|
|
35
35
|
var useWorkflowActions = function (_a) {
|
|
36
36
|
var possibleActions = _a.possibleActions, assignee = _a.assignee, taskId = _a.taskId, isOpen = _a.isOpen;
|
|
37
|
-
var
|
|
37
|
+
var _b = (0, react_1.useContext)(WorkflowTasksContext_1.WorkflowTasksContext) || {}, loadTasks = _b.loadTasks, onActionSuccess = _b.onActionSuccess;
|
|
38
38
|
var workflowPath = (0, react_redux_1.useSelector)(mdm_module_1.default.selectors.getWorkflowPath);
|
|
39
39
|
var environment = (0, react_redux_1.useSelector)(mdm_module_1.default.selectors.getWorkflowEnvironmentUrl);
|
|
40
40
|
var tenant = (0, react_redux_1.useSelector)(mdm_module_1.default.selectors.getTenant);
|
|
41
41
|
var username = (0, react_redux_1.useSelector)(mdm_module_1.default.selectors.getUserName);
|
|
42
42
|
var entityUri = (0, react_redux_1.useSelector)(mdm_module_1.default.selectors.getEntityUri);
|
|
43
|
-
var
|
|
43
|
+
var _c = (0, react_1.useState)(false), actionRequestIsInProgress = _c[0], setActionRequestIsInProgress = _c[1];
|
|
44
44
|
var viewId = (0, react_1.useContext)(ViewIdContext_1.ViewIdContext);
|
|
45
45
|
var dispatch = (0, react_redux_1.useDispatch)();
|
|
46
46
|
var performTaskAction = (0, react_1.useCallback)(function (action) { return function () {
|
|
@@ -60,15 +60,16 @@ var useWorkflowActions = function (_a) {
|
|
|
60
60
|
else {
|
|
61
61
|
// entity refreshing
|
|
62
62
|
dispatch(mdm_module_1.profile.entity.actions.loadEntity({ viewId: viewId, uri: entityUri }));
|
|
63
|
-
|
|
63
|
+
loadTasks === null || loadTasks === void 0 ? void 0 : loadTasks();
|
|
64
64
|
}
|
|
65
|
+
onActionSuccess === null || onActionSuccess === void 0 ? void 0 : onActionSuccess(action);
|
|
65
66
|
})
|
|
66
67
|
.catch(errors_1.showWorkflowError)
|
|
67
68
|
.finally(function () {
|
|
68
69
|
setActionRequestIsInProgress(false);
|
|
69
70
|
});
|
|
70
71
|
}
|
|
71
|
-
}; }, [workflowPath, taskId, environment, tenant, dispatch, entityUri, viewId,
|
|
72
|
+
}; }, [workflowPath, taskId, environment, tenant, dispatch, entityUri, viewId, loadTasks]);
|
|
72
73
|
var actions = (0, react_1.useMemo)(function () {
|
|
73
74
|
return username === assignee && (0, helpers_1.isOpenTask)(isOpen)
|
|
74
75
|
? (possibleActions || []).map(function (_a) {
|
|
@@ -11,7 +11,7 @@ var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
|
11
11
|
var WorkflowTasksContext_1 = require("../../../contexts/WorkflowTasksContext");
|
|
12
12
|
var errors_1 = require("../helpers/errors");
|
|
13
13
|
var useWorkflowProcessInstance = function () {
|
|
14
|
-
var
|
|
14
|
+
var loadTasks = (0, react_1.useContext)(WorkflowTasksContext_1.WorkflowTasksContext).loadTasks;
|
|
15
15
|
var workflowPath = (0, react_redux_1.useSelector)(mdm_module_1.default.selectors.getWorkflowPath);
|
|
16
16
|
var environment = (0, react_redux_1.useSelector)(mdm_module_1.default.selectors.getWorkflowEnvironmentUrl);
|
|
17
17
|
var tenant = (0, react_redux_1.useSelector)(mdm_module_1.default.selectors.getTenant);
|
|
@@ -29,7 +29,7 @@ var useWorkflowProcessInstance = function () {
|
|
|
29
29
|
objectURIs: [entityUri]
|
|
30
30
|
})
|
|
31
31
|
.then(function () {
|
|
32
|
-
|
|
32
|
+
loadTasks();
|
|
33
33
|
})
|
|
34
34
|
.catch(function (error) {
|
|
35
35
|
(0, errors_1.showWorkflowError)(error);
|
|
@@ -38,7 +38,7 @@ var useWorkflowProcessInstance = function () {
|
|
|
38
38
|
.finally(function () {
|
|
39
39
|
setLoading(false);
|
|
40
40
|
});
|
|
41
|
-
}, [entityUri, environment,
|
|
41
|
+
}, [entityUri, environment, loadTasks, tenant, workflowPath]);
|
|
42
42
|
return { processInstance: processInstance, loading: loading };
|
|
43
43
|
};
|
|
44
44
|
exports.useWorkflowProcessInstance = useWorkflowProcessInstance;
|
|
@@ -9,6 +9,6 @@ export declare const useWorkflowTasks: (config?: Config) => {
|
|
|
9
9
|
total: number;
|
|
10
10
|
loading: boolean;
|
|
11
11
|
updateTaskState: (taskId: WorkflowTaskData['taskId'], payload: Partial<WorkflowTaskData>) => void;
|
|
12
|
-
|
|
12
|
+
loadTasks: () => void;
|
|
13
13
|
};
|
|
14
14
|
export {};
|
|
@@ -1,15 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
4
|
};
|
|
@@ -37,7 +26,7 @@ var useWorkflowTasks = function (config) {
|
|
|
37
26
|
var _b = (0, react_1.useState)(null), tasks = _b[0], setTasks = _b[1];
|
|
38
27
|
var _c = (0, react_1.useState)(0), total = _c[0], setTotal = _c[1];
|
|
39
28
|
var _d = (0, react_1.useState)(false), loading = _d[0], setLoading = _d[1];
|
|
40
|
-
var
|
|
29
|
+
var loadTasks = (0, react_1.useCallback)(function () {
|
|
41
30
|
setLoading(true);
|
|
42
31
|
var parsedProcessTypes = !Array.isArray(processTypes) || processTypes.includes('*') ? null : processTypes;
|
|
43
32
|
var requests = (parsedProcessTypes || [null]).map(function (processType) {
|
|
@@ -65,22 +54,17 @@ var useWorkflowTasks = function (config) {
|
|
|
65
54
|
}, [entityUri, environment, safePromise, tenant, workflowPath, assignee, showClosedTasks, processTypes]);
|
|
66
55
|
(0, react_1.useEffect)(function () {
|
|
67
56
|
if (entityUri && enabled && !(0, mdm_sdk_1.isTempUri)(entityUri)) {
|
|
68
|
-
|
|
57
|
+
loadTasks();
|
|
69
58
|
}
|
|
70
59
|
else {
|
|
71
60
|
setTasks(null);
|
|
72
61
|
setTotal(0);
|
|
73
62
|
}
|
|
74
|
-
}, [enabled, entityUri,
|
|
63
|
+
}, [enabled, entityUri, loadTasks, isEditableMode]);
|
|
75
64
|
var updateTaskState = (0, react_1.useCallback)(function (taskId, payload) {
|
|
76
|
-
setTasks(
|
|
77
|
-
return tasks.map(function (task) {
|
|
78
|
-
return task.taskId === taskId
|
|
79
|
-
? __assign(__assign({}, task), payload) : task;
|
|
80
|
-
});
|
|
81
|
-
});
|
|
65
|
+
setTasks((0, ramda_1.map)((0, ramda_1.when)((0, ramda_1.propEq)('taskId', taskId), (0, ramda_1.mergeLeft)(payload))));
|
|
82
66
|
}, []);
|
|
83
|
-
return { tasks: tasks, total: total, loading: loading, updateTaskState: updateTaskState,
|
|
67
|
+
return { tasks: tasks, total: total, loading: loading, updateTaskState: updateTaskState, loadTasks: loadTasks };
|
|
84
68
|
};
|
|
85
69
|
exports.useWorkflowTasks = useWorkflowTasks;
|
|
86
70
|
var isRequestedTask = function (processTypes, assignee) { return function (task) {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { WorkflowTaskCard } from './cards/WorkflowTaskCard';
|
|
2
2
|
export { AddWorkflowButton } from './components/AddWorkflowButton/AddWorkflowButton';
|
|
3
|
+
export { default as TaskActions } from './components/TaskActions/TaskActions';
|
|
4
|
+
export { default as AssigneeSelector } from './components/AssigneeSelector/AssigneeSelector';
|
|
3
5
|
export { default as WorkflowComments } from './components/WorkflowComments';
|
|
4
6
|
export { useWorkflowAssignee } from './hooks/useWorkflowAssignee';
|
|
5
7
|
export { useWorkflowComments } from './hooks/useWorkflowComments';
|
|
@@ -3,11 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.useWorkflowTasks = exports.useWorkflowCheckPermission = exports.useWorkflowComments = exports.useWorkflowAssignee = exports.WorkflowComments = exports.AddWorkflowButton = exports.WorkflowTaskCard = void 0;
|
|
6
|
+
exports.useWorkflowTasks = exports.useWorkflowCheckPermission = exports.useWorkflowComments = exports.useWorkflowAssignee = exports.WorkflowComments = exports.AssigneeSelector = exports.TaskActions = exports.AddWorkflowButton = exports.WorkflowTaskCard = void 0;
|
|
7
7
|
var WorkflowTaskCard_1 = require("./cards/WorkflowTaskCard");
|
|
8
8
|
Object.defineProperty(exports, "WorkflowTaskCard", { enumerable: true, get: function () { return WorkflowTaskCard_1.WorkflowTaskCard; } });
|
|
9
9
|
var AddWorkflowButton_1 = require("./components/AddWorkflowButton/AddWorkflowButton");
|
|
10
10
|
Object.defineProperty(exports, "AddWorkflowButton", { enumerable: true, get: function () { return AddWorkflowButton_1.AddWorkflowButton; } });
|
|
11
|
+
var TaskActions_1 = require("./components/TaskActions/TaskActions");
|
|
12
|
+
Object.defineProperty(exports, "TaskActions", { enumerable: true, get: function () { return __importDefault(TaskActions_1).default; } });
|
|
13
|
+
var AssigneeSelector_1 = require("./components/AssigneeSelector/AssigneeSelector");
|
|
14
|
+
Object.defineProperty(exports, "AssigneeSelector", { enumerable: true, get: function () { return __importDefault(AssigneeSelector_1).default; } });
|
|
11
15
|
var WorkflowComments_1 = require("./components/WorkflowComments");
|
|
12
16
|
Object.defineProperty(exports, "WorkflowComments", { enumerable: true, get: function () { return __importDefault(WorkflowComments_1).default; } });
|
|
13
17
|
var useWorkflowAssignee_1 = require("./hooks/useWorkflowAssignee");
|
|
@@ -5,5 +5,6 @@ export declare const WorkflowTasksContext: React.Context<{
|
|
|
5
5
|
total: WorkflowTasksResponse['total'];
|
|
6
6
|
loading: boolean;
|
|
7
7
|
updateTaskState: (taskId: WorkflowTaskData['taskId'], payload: Partial<WorkflowTaskData>) => void;
|
|
8
|
-
|
|
8
|
+
loadTasks: () => void;
|
|
9
|
+
onActionSuccess?: (action: string) => void;
|
|
9
10
|
}>;
|
|
@@ -20,11 +20,12 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
20
20
|
}
|
|
21
21
|
return t;
|
|
22
22
|
};
|
|
23
|
-
import React, { useCallback,
|
|
23
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
24
|
+
import { components } from 'react-select';
|
|
24
25
|
import PropTypes from 'prop-types';
|
|
25
26
|
import { debounce, LookupValueType } from '@reltio/mdm-sdk';
|
|
26
27
|
import Select from '../../ReactSelect/Select';
|
|
27
|
-
import { concat, defaultTo, either, isEmpty, prop } from 'ramda';
|
|
28
|
+
import { concat, defaultTo, either, isEmpty, prop, T } from 'ramda';
|
|
28
29
|
import { buildLookupOptions, getOptionLabel } from './helpers';
|
|
29
30
|
import i18n from 'ui-i18n';
|
|
30
31
|
import { EmptyStub } from '../../../core/utils';
|
|
@@ -40,6 +41,7 @@ import useAutopopulation from './useAutopopulation';
|
|
|
40
41
|
import useSavingFocus from './useSavingFocus';
|
|
41
42
|
import LoadMoreButton from '../../commonReactSelectComponents/LoadMoreButton';
|
|
42
43
|
import { useDidUpdateEffect } from '../../../hooks';
|
|
44
|
+
var Input = function (props) { return React.createElement(components.Input, __assign({}, props, { isHidden: false })); };
|
|
43
45
|
var SelectComponents = {
|
|
44
46
|
IndicatorSeparator: EmptyStub,
|
|
45
47
|
LoadingIndicator: EmptyStub,
|
|
@@ -47,7 +49,8 @@ var SelectComponents = {
|
|
|
47
49
|
DropdownIndicator: DropdownIndicator,
|
|
48
50
|
Menu: MenuWithPopper,
|
|
49
51
|
MenuList: MenuList,
|
|
50
|
-
MultiValue: MultiValueChip
|
|
52
|
+
MultiValue: MultiValueChip,
|
|
53
|
+
Input: Input
|
|
51
54
|
};
|
|
52
55
|
export var DEBOUNCE_INTERVAL = 400;
|
|
53
56
|
var MAX_DEPENDENT_LOOKUP_VALUES = 50;
|
|
@@ -56,6 +59,10 @@ var DependentLookupEditor = function (_a) {
|
|
|
56
59
|
var inputRef = useRef(null);
|
|
57
60
|
var selectRef = useRef(null);
|
|
58
61
|
var styles = useStyles();
|
|
62
|
+
var _d = useState(''), inputValue = _d[0], setInputValue = _d[1];
|
|
63
|
+
var _e = useState([]), options = _e[0], setOptions = _e[1];
|
|
64
|
+
var _f = useState(1), pageNumber = _f[0], setPageNumber = _f[1];
|
|
65
|
+
var _g = useState(false), optionsAreLoading = _g[0], setOptionsAreLoading = _g[1];
|
|
59
66
|
useLookupsResolver({
|
|
60
67
|
lookups: value,
|
|
61
68
|
resolvedValues: lookups[lookupTypeCode],
|
|
@@ -63,15 +70,55 @@ var DependentLookupEditor = function (_a) {
|
|
|
63
70
|
onLookupsResolve: function (lookups) { return onChange(multiple ? lookups : lookups[0]); }
|
|
64
71
|
});
|
|
65
72
|
useSavingFocus(selectRef, inputRef, disabled);
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
var handleInputChange = function (value) {
|
|
71
|
-
if (value !== inputValue) {
|
|
72
|
-
setInputValue(value);
|
|
73
|
+
useEffect(function () {
|
|
74
|
+
if (!multiple) {
|
|
75
|
+
setInputValue(getOptionLabel(value));
|
|
76
|
+
setOptions(defaultOptions);
|
|
73
77
|
setPageNumber(1);
|
|
74
|
-
|
|
78
|
+
}
|
|
79
|
+
}, [value]);
|
|
80
|
+
var handleChange = function (value) {
|
|
81
|
+
markAsTouched();
|
|
82
|
+
onChange(value);
|
|
83
|
+
};
|
|
84
|
+
var handleFocus = function () {
|
|
85
|
+
value && selectRef.current.select.inputRef.select();
|
|
86
|
+
};
|
|
87
|
+
var resetOptions = function () {
|
|
88
|
+
setPageNumber(1);
|
|
89
|
+
debouncedLoadOptions('', setOptions);
|
|
90
|
+
};
|
|
91
|
+
var restoreSelectedOption = function () {
|
|
92
|
+
if (!multiple && inputValue && inputValue !== getOptionLabel(value)) {
|
|
93
|
+
setInputValue(getOptionLabel(value));
|
|
94
|
+
resetOptions();
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
var handleInputChange = function (newValue, _a) {
|
|
98
|
+
var action = _a.action;
|
|
99
|
+
switch (action) {
|
|
100
|
+
case 'menu-close': {
|
|
101
|
+
restoreSelectedOption();
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
case 'input-blur': {
|
|
105
|
+
if (multiple && inputValue) {
|
|
106
|
+
setInputValue('');
|
|
107
|
+
resetOptions();
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
restoreSelectedOption();
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
case 'input-change': {
|
|
114
|
+
setInputValue(newValue);
|
|
115
|
+
setPageNumber(1);
|
|
116
|
+
debouncedLoadOptions(newValue, setOptions);
|
|
117
|
+
if (!multiple && newValue === '') {
|
|
118
|
+
handleChange('');
|
|
119
|
+
}
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
75
122
|
}
|
|
76
123
|
};
|
|
77
124
|
var loadOptions = useCallback(function (value, pageNumber) {
|
|
@@ -91,7 +138,8 @@ var DependentLookupEditor = function (_a) {
|
|
|
91
138
|
.finally(function () { return setOptionsAreLoading(false); });
|
|
92
139
|
}, [max, lookupTypeCode, parents]);
|
|
93
140
|
var loadMoreOptions = useCallback(function () {
|
|
94
|
-
|
|
141
|
+
var filterValue = inputValue !== getOptionLabel(value) ? inputValue : '';
|
|
142
|
+
loadOptions(multiple ? inputValue : filterValue, pageNumber + 1).then(function (buildOptions) {
|
|
95
143
|
setOptions(function (options) { return concat(options.slice(0, pageNumber * max), buildOptions); });
|
|
96
144
|
setPageNumber(function (page) { return page + 1; });
|
|
97
145
|
});
|
|
@@ -121,10 +169,7 @@ var DependentLookupEditor = function (_a) {
|
|
|
121
169
|
container: function (base) { return (__assign(__assign({}, base), (fullWidth ? { width: '100%' } : {}))); }
|
|
122
170
|
}, noOptionsMessage: function () {
|
|
123
171
|
return optionsAreLoading && !showMoreButton ? i18n.text('Loading...') : i18n.text('No results found');
|
|
124
|
-
}, components: SelectComponents, isClearable: true, isSearchable: true, inputValue: inputValue, onInputChange: handleInputChange, loadingMessage: function () { return i18n.text('Loading...'); }, isLoading: !inputValue && isLoadingDefaultOptions, hideSelectedOptions: false, placeholder: placeholder || '', isDisabled: disabled, options: displayedOptions, getOptionValue: either(prop('value'), prop('lookupCode')), getOptionLabel: getOptionLabel, onChange:
|
|
125
|
-
markAsTouched();
|
|
126
|
-
onChange(value);
|
|
127
|
-
}, value: defaultTo(multiple ? [] : null, value), menuListFooter: showMoreButton && React.createElement(LoadMoreButton, { loading: optionsAreLoading, onClick: loadMoreOptions }) })));
|
|
172
|
+
}, components: SelectComponents, isClearable: true, isSearchable: true, controlShouldRenderValue: multiple, inputValue: inputValue, filterOption: multiple ? undefined : T, onInputChange: handleInputChange, loadingMessage: function () { return i18n.text('Loading...'); }, isLoading: !inputValue && isLoadingDefaultOptions, hideSelectedOptions: false, placeholder: placeholder || '', isDisabled: disabled, options: displayedOptions, getOptionValue: either(prop('value'), prop('lookupCode')), getOptionLabel: getOptionLabel, onChange: handleChange, onFocus: multiple ? undefined : handleFocus, value: defaultTo(multiple ? [] : null, value), menuListFooter: showMoreButton && React.createElement(LoadMoreButton, { loading: optionsAreLoading, onClick: loadMoreOptions }) })));
|
|
128
173
|
};
|
|
129
174
|
DependentLookupEditor.propTypes = {
|
|
130
175
|
multiple: PropTypes.bool,
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { getLookupLabel, utils } from '@reltio/mdm-sdk';
|
|
2
|
-
var getOptionLabel = function (
|
|
3
|
-
|
|
2
|
+
var getOptionLabel = function (obj) {
|
|
3
|
+
if (!obj)
|
|
4
|
+
return '';
|
|
5
|
+
var lookupCode = obj.lookupCode, value = obj.value;
|
|
4
6
|
return getLookupLabel(lookupCode, value);
|
|
5
7
|
};
|
|
6
8
|
var buildLookupOptions = function (lookups) {
|
|
@@ -8,13 +8,13 @@ import { WorkflowTasksContext } from '../../../contexts/WorkflowTasksContext';
|
|
|
8
8
|
import { isOpenTask } from '../helpers';
|
|
9
9
|
export var useWorkflowActions = function (_a) {
|
|
10
10
|
var possibleActions = _a.possibleActions, assignee = _a.assignee, taskId = _a.taskId, isOpen = _a.isOpen;
|
|
11
|
-
var
|
|
11
|
+
var _b = useContext(WorkflowTasksContext) || {}, loadTasks = _b.loadTasks, onActionSuccess = _b.onActionSuccess;
|
|
12
12
|
var workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);
|
|
13
13
|
var environment = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);
|
|
14
14
|
var tenant = useSelector(mdmModule.selectors.getTenant);
|
|
15
15
|
var username = useSelector(mdmModule.selectors.getUserName);
|
|
16
16
|
var entityUri = useSelector(mdmModule.selectors.getEntityUri);
|
|
17
|
-
var
|
|
17
|
+
var _c = useState(false), actionRequestIsInProgress = _c[0], setActionRequestIsInProgress = _c[1];
|
|
18
18
|
var viewId = useContext(ViewIdContext);
|
|
19
19
|
var dispatch = useDispatch();
|
|
20
20
|
var performTaskAction = useCallback(function (action) { return function () {
|
|
@@ -34,15 +34,16 @@ export var useWorkflowActions = function (_a) {
|
|
|
34
34
|
else {
|
|
35
35
|
// entity refreshing
|
|
36
36
|
dispatch(profile.entity.actions.loadEntity({ viewId: viewId, uri: entityUri }));
|
|
37
|
-
|
|
37
|
+
loadTasks === null || loadTasks === void 0 ? void 0 : loadTasks();
|
|
38
38
|
}
|
|
39
|
+
onActionSuccess === null || onActionSuccess === void 0 ? void 0 : onActionSuccess(action);
|
|
39
40
|
})
|
|
40
41
|
.catch(showWorkflowError)
|
|
41
42
|
.finally(function () {
|
|
42
43
|
setActionRequestIsInProgress(false);
|
|
43
44
|
});
|
|
44
45
|
}
|
|
45
|
-
}; }, [workflowPath, taskId, environment, tenant, dispatch, entityUri, viewId,
|
|
46
|
+
}; }, [workflowPath, taskId, environment, tenant, dispatch, entityUri, viewId, loadTasks]);
|
|
46
47
|
var actions = useMemo(function () {
|
|
47
48
|
return username === assignee && isOpenTask(isOpen)
|
|
48
49
|
? (possibleActions || []).map(function (_a) {
|
|
@@ -5,7 +5,7 @@ import { startProcessInstance } from '@reltio/mdm-sdk';
|
|
|
5
5
|
import { WorkflowTasksContext } from '../../../contexts/WorkflowTasksContext';
|
|
6
6
|
import { showWorkflowError } from '../helpers/errors';
|
|
7
7
|
export var useWorkflowProcessInstance = function () {
|
|
8
|
-
var
|
|
8
|
+
var loadTasks = useContext(WorkflowTasksContext).loadTasks;
|
|
9
9
|
var workflowPath = useSelector(mdmModule.selectors.getWorkflowPath);
|
|
10
10
|
var environment = useSelector(mdmModule.selectors.getWorkflowEnvironmentUrl);
|
|
11
11
|
var tenant = useSelector(mdmModule.selectors.getTenant);
|
|
@@ -23,7 +23,7 @@ export var useWorkflowProcessInstance = function () {
|
|
|
23
23
|
objectURIs: [entityUri]
|
|
24
24
|
})
|
|
25
25
|
.then(function () {
|
|
26
|
-
|
|
26
|
+
loadTasks();
|
|
27
27
|
})
|
|
28
28
|
.catch(function (error) {
|
|
29
29
|
showWorkflowError(error);
|
|
@@ -32,6 +32,6 @@ export var useWorkflowProcessInstance = function () {
|
|
|
32
32
|
.finally(function () {
|
|
33
33
|
setLoading(false);
|
|
34
34
|
});
|
|
35
|
-
}, [entityUri, environment,
|
|
35
|
+
}, [entityUri, environment, loadTasks, tenant, workflowPath]);
|
|
36
36
|
return { processInstance: processInstance, loading: loading };
|
|
37
37
|
};
|
|
@@ -9,6 +9,6 @@ export declare const useWorkflowTasks: (config?: Config) => {
|
|
|
9
9
|
total: number;
|
|
10
10
|
loading: boolean;
|
|
11
11
|
updateTaskState: (taskId: WorkflowTaskData['taskId'], payload: Partial<WorkflowTaskData>) => void;
|
|
12
|
-
|
|
12
|
+
loadTasks: () => void;
|
|
13
13
|
};
|
|
14
14
|
export {};
|
|
@@ -1,17 +1,6 @@
|
|
|
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
1
|
import { useCallback, useEffect, useState } from 'react';
|
|
13
2
|
import { useSelector } from 'react-redux';
|
|
14
|
-
import { filter, flatten, isNil, map, pipe, prop, reject, uniqBy } from 'ramda';
|
|
3
|
+
import { filter, flatten, isNil, map, mergeLeft, pipe, prop, propEq, reject, uniqBy, when } from 'ramda';
|
|
15
4
|
import mdmModule from '@reltio/mdm-module';
|
|
16
5
|
import { getTasksForEntity, isTempUri } from '@reltio/mdm-sdk';
|
|
17
6
|
import { useSafePromise } from '../../../hooks/useSafePromise';
|
|
@@ -31,7 +20,7 @@ export var useWorkflowTasks = function (config) {
|
|
|
31
20
|
var _b = useState(null), tasks = _b[0], setTasks = _b[1];
|
|
32
21
|
var _c = useState(0), total = _c[0], setTotal = _c[1];
|
|
33
22
|
var _d = useState(false), loading = _d[0], setLoading = _d[1];
|
|
34
|
-
var
|
|
23
|
+
var loadTasks = useCallback(function () {
|
|
35
24
|
setLoading(true);
|
|
36
25
|
var parsedProcessTypes = !Array.isArray(processTypes) || processTypes.includes('*') ? null : processTypes;
|
|
37
26
|
var requests = (parsedProcessTypes || [null]).map(function (processType) {
|
|
@@ -59,22 +48,17 @@ export var useWorkflowTasks = function (config) {
|
|
|
59
48
|
}, [entityUri, environment, safePromise, tenant, workflowPath, assignee, showClosedTasks, processTypes]);
|
|
60
49
|
useEffect(function () {
|
|
61
50
|
if (entityUri && enabled && !isTempUri(entityUri)) {
|
|
62
|
-
|
|
51
|
+
loadTasks();
|
|
63
52
|
}
|
|
64
53
|
else {
|
|
65
54
|
setTasks(null);
|
|
66
55
|
setTotal(0);
|
|
67
56
|
}
|
|
68
|
-
}, [enabled, entityUri,
|
|
57
|
+
}, [enabled, entityUri, loadTasks, isEditableMode]);
|
|
69
58
|
var updateTaskState = useCallback(function (taskId, payload) {
|
|
70
|
-
setTasks(
|
|
71
|
-
return tasks.map(function (task) {
|
|
72
|
-
return task.taskId === taskId
|
|
73
|
-
? __assign(__assign({}, task), payload) : task;
|
|
74
|
-
});
|
|
75
|
-
});
|
|
59
|
+
setTasks(map(when(propEq('taskId', taskId), mergeLeft(payload))));
|
|
76
60
|
}, []);
|
|
77
|
-
return { tasks: tasks, total: total, loading: loading, updateTaskState: updateTaskState,
|
|
61
|
+
return { tasks: tasks, total: total, loading: loading, updateTaskState: updateTaskState, loadTasks: loadTasks };
|
|
78
62
|
};
|
|
79
63
|
var isRequestedTask = function (processTypes, assignee) { return function (task) {
|
|
80
64
|
return (!processTypes || processTypes.includes(task.processType)) && (!assignee || assignee === task.assignee);
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { WorkflowTaskCard } from './cards/WorkflowTaskCard';
|
|
2
2
|
export { AddWorkflowButton } from './components/AddWorkflowButton/AddWorkflowButton';
|
|
3
|
+
export { default as TaskActions } from './components/TaskActions/TaskActions';
|
|
4
|
+
export { default as AssigneeSelector } from './components/AssigneeSelector/AssigneeSelector';
|
|
3
5
|
export { default as WorkflowComments } from './components/WorkflowComments';
|
|
4
6
|
export { useWorkflowAssignee } from './hooks/useWorkflowAssignee';
|
|
5
7
|
export { useWorkflowComments } from './hooks/useWorkflowComments';
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { WorkflowTaskCard } from './cards/WorkflowTaskCard';
|
|
2
2
|
export { AddWorkflowButton } from './components/AddWorkflowButton/AddWorkflowButton';
|
|
3
|
+
export { default as TaskActions } from './components/TaskActions/TaskActions';
|
|
4
|
+
export { default as AssigneeSelector } from './components/AssigneeSelector/AssigneeSelector';
|
|
3
5
|
export { default as WorkflowComments } from './components/WorkflowComments';
|
|
4
6
|
export { useWorkflowAssignee } from './hooks/useWorkflowAssignee';
|
|
5
7
|
export { useWorkflowComments } from './hooks/useWorkflowComments';
|
|
@@ -5,5 +5,6 @@ export declare const WorkflowTasksContext: React.Context<{
|
|
|
5
5
|
total: WorkflowTasksResponse['total'];
|
|
6
6
|
loading: boolean;
|
|
7
7
|
updateTaskState: (taskId: WorkflowTaskData['taskId'], payload: Partial<WorkflowTaskData>) => void;
|
|
8
|
-
|
|
8
|
+
loadTasks: () => void;
|
|
9
|
+
onActionSuccess?: (action: string) => void;
|
|
9
10
|
}>;
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reltio/components",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.1383",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE FILE",
|
|
5
5
|
"main": "./cjs/index.js",
|
|
6
6
|
"module": "./esm/index.js",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"@date-io/moment": "^1.3.5",
|
|
9
9
|
"@react-google-maps/api": "2.7.0",
|
|
10
|
-
"@reltio/mdm-module": "^1.4.
|
|
11
|
-
"@reltio/mdm-sdk": "^1.4.
|
|
10
|
+
"@reltio/mdm-module": "^1.4.1383",
|
|
11
|
+
"@reltio/mdm-sdk": "^1.4.1383",
|
|
12
12
|
"classnames": "^2.2.5",
|
|
13
13
|
"d3-cloud": "^1.2.5",
|
|
14
14
|
"d3-geo": "^2.0.1",
|