@atlaskit/link-datasource 3.12.1 → 3.13.0
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/CHANGELOG.md +15 -0
- package/dist/cjs/hooks/useLoadOptions.js +100 -0
- package/dist/cjs/ui/issue-like-table/edit-type/icon/index.js +16 -106
- package/dist/cjs/ui/issue-like-table/edit-type/index.js +26 -9
- package/dist/cjs/ui/issue-like-table/edit-type/status/index.js +10 -112
- package/dist/cjs/ui/issue-like-table/edit-type/text/index.js +4 -6
- package/dist/cjs/ui/issue-like-table/edit-type/user/index.js +97 -0
- package/dist/cjs/ui/issue-like-table/table-cell-content/inline-edit.js +5 -2
- package/dist/es2019/hooks/useLoadOptions.js +63 -0
- package/dist/es2019/ui/issue-like-table/edit-type/icon/index.js +13 -74
- package/dist/es2019/ui/issue-like-table/edit-type/index.js +24 -5
- package/dist/es2019/ui/issue-like-table/edit-type/status/index.js +8 -76
- package/dist/es2019/ui/issue-like-table/edit-type/text/index.js +5 -5
- package/dist/es2019/ui/issue-like-table/edit-type/user/index.js +74 -0
- package/dist/es2019/ui/issue-like-table/table-cell-content/inline-edit.js +5 -2
- package/dist/esm/hooks/useLoadOptions.js +93 -0
- package/dist/esm/ui/issue-like-table/edit-type/icon/index.js +18 -107
- package/dist/esm/ui/issue-like-table/edit-type/index.js +25 -5
- package/dist/esm/ui/issue-like-table/edit-type/status/index.js +11 -113
- package/dist/esm/ui/issue-like-table/edit-type/text/index.js +3 -5
- package/dist/esm/ui/issue-like-table/edit-type/user/index.js +87 -0
- package/dist/esm/ui/issue-like-table/table-cell-content/inline-edit.js +5 -2
- package/dist/types/hooks/useLoadOptions.d.ts +11 -0
- package/dist/types/ui/issue-like-table/edit-type/icon/index.d.ts +2 -2
- package/dist/types/ui/issue-like-table/edit-type/index.d.ts +1 -0
- package/dist/types/ui/issue-like-table/edit-type/status/index.d.ts +4 -4
- package/dist/types/ui/issue-like-table/edit-type/text/index.d.ts +2 -3
- package/dist/types/ui/issue-like-table/edit-type/user/index.d.ts +11 -0
- package/dist/types/ui/issue-like-table/types.d.ts +3 -0
- package/dist/types-ts4.5/hooks/useLoadOptions.d.ts +11 -0
- package/dist/types-ts4.5/ui/issue-like-table/edit-type/icon/index.d.ts +2 -2
- package/dist/types-ts4.5/ui/issue-like-table/edit-type/index.d.ts +1 -0
- package/dist/types-ts4.5/ui/issue-like-table/edit-type/status/index.d.ts +4 -4
- package/dist/types-ts4.5/ui/issue-like-table/edit-type/text/index.d.ts +2 -3
- package/dist/types-ts4.5/ui/issue-like-table/edit-type/user/index.d.ts +11 -0
- package/dist/types-ts4.5/ui/issue-like-table/types.d.ts +3 -0
- package/package.json +7 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @atlaskit/link-datasource
|
|
2
2
|
|
|
3
|
+
## 3.13.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#165646](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/165646)
|
|
8
|
+
[`4f3ffed207bd9`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/4f3ffed207bd9) -
|
|
9
|
+
[ux] Add assignee inline edit component for datasource
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#166191](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/166191)
|
|
14
|
+
[`4a75bbe263f85`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/4a75bbe263f85) -
|
|
15
|
+
Internal refactor behind ff - Make loadOptions reusable for all inline edit dropdown fields
|
|
16
|
+
- Updated dependencies
|
|
17
|
+
|
|
3
18
|
## 3.12.1
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useLoadOptions = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
+
var _react = require("react");
|
|
12
|
+
var _linkingTypes = require("@atlaskit/linking-types");
|
|
13
|
+
var _useDatasourceTableFlag = require("./useDatasourceTableFlag");
|
|
14
|
+
var loadOptions = /*#__PURE__*/function () {
|
|
15
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
16
|
+
var fetchInputs,
|
|
17
|
+
executeFetch,
|
|
18
|
+
result,
|
|
19
|
+
operationStatus,
|
|
20
|
+
entities,
|
|
21
|
+
_args = arguments;
|
|
22
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
23
|
+
while (1) switch (_context.prev = _context.next) {
|
|
24
|
+
case 0:
|
|
25
|
+
fetchInputs = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
|
|
26
|
+
executeFetch = _args.length > 1 ? _args[1] : undefined;
|
|
27
|
+
if (executeFetch) {
|
|
28
|
+
_context.next = 4;
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
return _context.abrupt("return", []);
|
|
32
|
+
case 4:
|
|
33
|
+
_context.next = 6;
|
|
34
|
+
return executeFetch(fetchInputs);
|
|
35
|
+
case 6:
|
|
36
|
+
result = _context.sent;
|
|
37
|
+
operationStatus = result.operationStatus, entities = result.entities;
|
|
38
|
+
if (!(operationStatus === _linkingTypes.ActionOperationStatus.FAILURE)) {
|
|
39
|
+
_context.next = 10;
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
throw new Error('Failed to fetch status options');
|
|
43
|
+
case 10:
|
|
44
|
+
return _context.abrupt("return", entities !== null && entities !== void 0 ? entities : []);
|
|
45
|
+
case 11:
|
|
46
|
+
case "end":
|
|
47
|
+
return _context.stop();
|
|
48
|
+
}
|
|
49
|
+
}, _callee);
|
|
50
|
+
}));
|
|
51
|
+
return function loadOptions() {
|
|
52
|
+
return _ref.apply(this, arguments);
|
|
53
|
+
};
|
|
54
|
+
}();
|
|
55
|
+
var useLoadOptions = exports.useLoadOptions = function useLoadOptions(_ref2) {
|
|
56
|
+
var fetchInputs = _ref2.fetchInputs,
|
|
57
|
+
executeFetch = _ref2.executeFetch;
|
|
58
|
+
var _useState = (0, _react.useState)({
|
|
59
|
+
isLoading: true,
|
|
60
|
+
options: [],
|
|
61
|
+
hasFailed: false
|
|
62
|
+
}),
|
|
63
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
64
|
+
_useState2$ = _useState2[0],
|
|
65
|
+
options = _useState2$.options,
|
|
66
|
+
isLoading = _useState2$.isLoading,
|
|
67
|
+
hasFailed = _useState2$.hasFailed,
|
|
68
|
+
setOptions = _useState2[1];
|
|
69
|
+
var _useDatasourceTableFl = (0, _useDatasourceTableFlag.useDatasourceTableFlag)({
|
|
70
|
+
isFetchAction: true
|
|
71
|
+
}),
|
|
72
|
+
showErrorFlag = _useDatasourceTableFl.showErrorFlag;
|
|
73
|
+
(0, _react.useEffect)(function () {
|
|
74
|
+
var isMounted = true;
|
|
75
|
+
loadOptions(fetchInputs, executeFetch).then(function (options) {
|
|
76
|
+
if (isMounted) {
|
|
77
|
+
setOptions({
|
|
78
|
+
isLoading: false,
|
|
79
|
+
options: options,
|
|
80
|
+
hasFailed: false
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}).catch(function (err) {
|
|
84
|
+
showErrorFlag();
|
|
85
|
+
setOptions({
|
|
86
|
+
isLoading: false,
|
|
87
|
+
options: [],
|
|
88
|
+
hasFailed: true
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
return function () {
|
|
92
|
+
isMounted = false;
|
|
93
|
+
};
|
|
94
|
+
}, [fetchInputs, executeFetch, showErrorFlag]);
|
|
95
|
+
return {
|
|
96
|
+
options: options,
|
|
97
|
+
isLoading: isLoading,
|
|
98
|
+
hasFailed: hasFailed
|
|
99
|
+
};
|
|
100
|
+
};
|
|
@@ -6,16 +6,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
14
|
-
var _linkingTypes = require("@atlaskit/linking-types");
|
|
15
11
|
var _select = _interopRequireDefault(require("@atlaskit/select"));
|
|
16
12
|
var _ufoExperiences = require("../../../../analytics/ufoExperiences");
|
|
17
13
|
var _datasourceExperienceId = require("../../../../contexts/datasource-experience-id");
|
|
18
|
-
var
|
|
14
|
+
var _useLoadOptions2 = require("../../../../hooks/useLoadOptions");
|
|
19
15
|
var _icon = require("../../shared-components/icon");
|
|
20
16
|
var _inlineEdit = require("../../table-cell-content/inline-edit");
|
|
21
17
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
@@ -30,10 +26,12 @@ var IconEditType = function IconEditType(props) {
|
|
|
30
26
|
var _currentValue$values;
|
|
31
27
|
var currentValue = props.currentValue,
|
|
32
28
|
executeFetch = props.executeFetch;
|
|
33
|
-
var
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
29
|
+
var _useLoadOptions = (0, _useLoadOptions2.useLoadOptions)({
|
|
30
|
+
executeFetch: executeFetch
|
|
31
|
+
}),
|
|
32
|
+
options = _useLoadOptions.options,
|
|
33
|
+
isLoading = _useLoadOptions.isLoading,
|
|
34
|
+
hasFailed = _useLoadOptions.hasFailed;
|
|
37
35
|
var experienceId = (0, _datasourceExperienceId.useDatasourceExperienceId)();
|
|
38
36
|
(0, _react.useEffect)(function () {
|
|
39
37
|
if (!experienceId) {
|
|
@@ -49,18 +47,19 @@ var IconEditType = function IconEditType(props) {
|
|
|
49
47
|
}, experienceId);
|
|
50
48
|
}
|
|
51
49
|
}, [experienceId, isLoading, hasFailed]);
|
|
52
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
53
|
-
testId: "inline-edit-priority",
|
|
50
|
+
return /*#__PURE__*/_react.default.createElement(_select.default, (0, _extends2.default)({}, props, {
|
|
54
51
|
autoFocus: true,
|
|
55
|
-
defaultMenuIsOpen: true,
|
|
56
52
|
blurInputOnSelect: true,
|
|
57
|
-
|
|
58
|
-
return option.text || '';
|
|
59
|
-
},
|
|
53
|
+
defaultMenuIsOpen: true,
|
|
60
54
|
options: options,
|
|
55
|
+
menuPlacement: "auto",
|
|
61
56
|
isLoading: isLoading,
|
|
62
|
-
defaultValue: currentValue === null || currentValue === void 0 || (_currentValue$values = currentValue.values) === null || _currentValue$values === void 0 ? void 0 : _currentValue$values[0],
|
|
63
57
|
filterOption: filterOption,
|
|
58
|
+
testId: "inline-edit-priority",
|
|
59
|
+
defaultValue: currentValue === null || currentValue === void 0 || (_currentValue$values = currentValue.values) === null || _currentValue$values === void 0 ? void 0 : _currentValue$values[0],
|
|
60
|
+
getOptionValue: function getOptionValue(option) {
|
|
61
|
+
return option.text || '';
|
|
62
|
+
},
|
|
64
63
|
formatOptionLabel: function formatOptionLabel(_ref) {
|
|
65
64
|
var source = _ref.source,
|
|
66
65
|
label = _ref.label,
|
|
@@ -78,98 +77,9 @@ var IconEditType = function IconEditType(props) {
|
|
|
78
77
|
values: e ? [e] : []
|
|
79
78
|
});
|
|
80
79
|
}
|
|
81
|
-
}))
|
|
80
|
+
}));
|
|
82
81
|
};
|
|
83
82
|
var filterOption = function filterOption(option, inputValue) {
|
|
84
83
|
return option.label.toLowerCase().includes(inputValue.toLowerCase());
|
|
85
84
|
};
|
|
86
|
-
var usePriorityOptions = function usePriorityOptions(currentValue, executeFetch) {
|
|
87
|
-
var _useState = (0, _react.useState)({
|
|
88
|
-
isLoading: true,
|
|
89
|
-
options: [],
|
|
90
|
-
hasFailed: false
|
|
91
|
-
}),
|
|
92
|
-
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
93
|
-
_useState2$ = _useState2[0],
|
|
94
|
-
options = _useState2$.options,
|
|
95
|
-
isLoading = _useState2$.isLoading,
|
|
96
|
-
hasFailed = _useState2$.hasFailed,
|
|
97
|
-
setOptions = _useState2[1];
|
|
98
|
-
var _useDatasourceTableFl = (0, _useDatasourceTableFlag.useDatasourceTableFlag)({
|
|
99
|
-
isFetchAction: true
|
|
100
|
-
}),
|
|
101
|
-
showErrorFlag = _useDatasourceTableFl.showErrorFlag;
|
|
102
|
-
(0, _react.useEffect)(function () {
|
|
103
|
-
var isMounted = true;
|
|
104
|
-
loadOptions(currentValue, executeFetch).then(function (options) {
|
|
105
|
-
if (isMounted) {
|
|
106
|
-
setOptions({
|
|
107
|
-
isLoading: false,
|
|
108
|
-
options: options,
|
|
109
|
-
hasFailed: false
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
}).catch(function (err) {
|
|
113
|
-
showErrorFlag();
|
|
114
|
-
setOptions({
|
|
115
|
-
isLoading: false,
|
|
116
|
-
options: [],
|
|
117
|
-
hasFailed: true
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
|
-
return function () {
|
|
121
|
-
isMounted = false;
|
|
122
|
-
};
|
|
123
|
-
}, [currentValue, executeFetch, showErrorFlag]);
|
|
124
|
-
return {
|
|
125
|
-
options: options,
|
|
126
|
-
isLoading: isLoading,
|
|
127
|
-
hasFailed: hasFailed
|
|
128
|
-
};
|
|
129
|
-
};
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Load options for the select
|
|
133
|
-
*/
|
|
134
|
-
var loadOptions = /*#__PURE__*/function () {
|
|
135
|
-
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_currentValue, executeFetch) {
|
|
136
|
-
var _yield$executeFetch, operationStatus, entities;
|
|
137
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
138
|
-
while (1) switch (_context.prev = _context.next) {
|
|
139
|
-
case 0:
|
|
140
|
-
if (executeFetch) {
|
|
141
|
-
_context.next = 2;
|
|
142
|
-
break;
|
|
143
|
-
}
|
|
144
|
-
return _context.abrupt("return", []);
|
|
145
|
-
case 2:
|
|
146
|
-
_context.next = 4;
|
|
147
|
-
return executeFetch({});
|
|
148
|
-
case 4:
|
|
149
|
-
_yield$executeFetch = _context.sent;
|
|
150
|
-
operationStatus = _yield$executeFetch.operationStatus;
|
|
151
|
-
entities = _yield$executeFetch.entities;
|
|
152
|
-
if (!(operationStatus === _linkingTypes.ActionOperationStatus.FAILURE)) {
|
|
153
|
-
_context.next = 9;
|
|
154
|
-
break;
|
|
155
|
-
}
|
|
156
|
-
throw new Error('Failed to fetch icon options');
|
|
157
|
-
case 9:
|
|
158
|
-
if (!(operationStatus === _linkingTypes.ActionOperationStatus.SUCCESS && entities)) {
|
|
159
|
-
_context.next = 11;
|
|
160
|
-
break;
|
|
161
|
-
}
|
|
162
|
-
return _context.abrupt("return", entities);
|
|
163
|
-
case 11:
|
|
164
|
-
return _context.abrupt("return", []);
|
|
165
|
-
case 12:
|
|
166
|
-
case "end":
|
|
167
|
-
return _context.stop();
|
|
168
|
-
}
|
|
169
|
-
}, _callee);
|
|
170
|
-
}));
|
|
171
|
-
return function loadOptions(_x, _x2) {
|
|
172
|
-
return _ref2.apply(this, arguments);
|
|
173
|
-
};
|
|
174
|
-
}();
|
|
175
85
|
var _default = exports.default = IconEditType;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
|
-
exports.isEditTypeSupported = exports.isEditTypeSelectable = exports.editType = void 0;
|
|
7
|
+
exports.toValueType = exports.isEditTypeSupported = exports.isEditTypeSelectable = exports.editType = void 0;
|
|
9
8
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
9
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
11
10
|
var _objectDestructuringEmpty2 = _interopRequireDefault(require("@babel/runtime/helpers/objectDestructuringEmpty"));
|
|
@@ -14,13 +13,13 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
14
13
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
15
14
|
var _icon = _interopRequireDefault(require("./icon"));
|
|
16
15
|
var _status = _interopRequireDefault(require("./status"));
|
|
17
|
-
var _text =
|
|
16
|
+
var _text = _interopRequireDefault(require("./text"));
|
|
17
|
+
var _user = _interopRequireDefault(require("./user"));
|
|
18
18
|
var _excluded = ["value"];
|
|
19
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
20
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
21
19
|
// This is used in editor-card-plugin to identify if any type of inline edit is active.
|
|
22
20
|
var ACTIVE_INLINE_EDIT_ID = 'sllv-active-inline-edit';
|
|
23
21
|
var editType = exports.editType = function editType(_ref) {
|
|
22
|
+
var _toValueType, _value$atlassianUserI;
|
|
24
23
|
var defaultValue = _ref.defaultValue,
|
|
25
24
|
currentValue = _ref.currentValue,
|
|
26
25
|
setEditValues = _ref.setEditValues,
|
|
@@ -28,7 +27,7 @@ var editType = exports.editType = function editType(_ref) {
|
|
|
28
27
|
switch (defaultValue.type) {
|
|
29
28
|
case 'string':
|
|
30
29
|
return {
|
|
31
|
-
defaultValue: (
|
|
30
|
+
defaultValue: (_toValueType = toValueType(defaultValue)) !== null && _toValueType !== void 0 ? _toValueType : '',
|
|
32
31
|
editView: function editView(_ref2) {
|
|
33
32
|
var fieldProps = (0, _extends2.default)({}, ((0, _objectDestructuringEmpty2.default)(_ref2), _ref2));
|
|
34
33
|
return /*#__PURE__*/_react.default.createElement(_text.default, (0, _extends2.default)({}, fieldProps, {
|
|
@@ -40,7 +39,7 @@ var editType = exports.editType = function editType(_ref) {
|
|
|
40
39
|
};
|
|
41
40
|
case 'icon':
|
|
42
41
|
return {
|
|
43
|
-
defaultValue: (
|
|
42
|
+
defaultValue: toValueType(defaultValue),
|
|
44
43
|
editView: function editView(_ref3) {
|
|
45
44
|
var value = _ref3.value,
|
|
46
45
|
fieldProps = (0, _objectWithoutProperties2.default)(_ref3, _excluded);
|
|
@@ -54,7 +53,7 @@ var editType = exports.editType = function editType(_ref) {
|
|
|
54
53
|
};
|
|
55
54
|
case 'status':
|
|
56
55
|
return {
|
|
57
|
-
defaultValue: (
|
|
56
|
+
defaultValue: toValueType(defaultValue),
|
|
58
57
|
editView: function editView(_ref4) {
|
|
59
58
|
var fieldProps = (0, _extends2.default)({}, ((0, _objectDestructuringEmpty2.default)(_ref4), _ref4));
|
|
60
59
|
return /*#__PURE__*/_react.default.createElement(_status.default, (0, _extends2.default)({}, fieldProps, {
|
|
@@ -65,6 +64,20 @@ var editType = exports.editType = function editType(_ref) {
|
|
|
65
64
|
}));
|
|
66
65
|
}
|
|
67
66
|
};
|
|
67
|
+
case 'user':
|
|
68
|
+
var value = toValueType(defaultValue);
|
|
69
|
+
return {
|
|
70
|
+
defaultValue: (_value$atlassianUserI = value === null || value === void 0 ? void 0 : value.atlassianUserId) !== null && _value$atlassianUserI !== void 0 ? _value$atlassianUserI : '',
|
|
71
|
+
editView: function editView(_ref5) {
|
|
72
|
+
var fieldProps = (0, _extends2.default)({}, ((0, _objectDestructuringEmpty2.default)(_ref5), _ref5));
|
|
73
|
+
return /*#__PURE__*/_react.default.createElement(_user.default, (0, _extends2.default)({}, fieldProps, {
|
|
74
|
+
currentValue: currentValue,
|
|
75
|
+
setEditValues: setEditValues,
|
|
76
|
+
id: ACTIVE_INLINE_EDIT_ID,
|
|
77
|
+
executeFetch: executeFetch
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
};
|
|
68
81
|
}
|
|
69
82
|
return {
|
|
70
83
|
defaultValue: '',
|
|
@@ -74,10 +87,14 @@ var editType = exports.editType = function editType(_ref) {
|
|
|
74
87
|
};
|
|
75
88
|
};
|
|
76
89
|
var isEditTypeSupported = exports.isEditTypeSupported = function isEditTypeSupported(type) {
|
|
77
|
-
var supportedEditType = ['string'].concat((0, _toConsumableArray2.default)((0, _platformFeatureFlags.fg)('platform-datasources-enable-two-way-sync-statuses') ? ['status'] : []), (0, _toConsumableArray2.default)((0, _platformFeatureFlags.fg)('platform-datasources-enable-two-way-sync-priority') ? ['icon'] : []));
|
|
90
|
+
var supportedEditType = ['string'].concat((0, _toConsumableArray2.default)((0, _platformFeatureFlags.fg)('platform-datasources-enable-two-way-sync-statuses') ? ['status'] : []), (0, _toConsumableArray2.default)((0, _platformFeatureFlags.fg)('platform-datasources-enable-two-way-sync-priority') ? ['icon'] : []), (0, _toConsumableArray2.default)((0, _platformFeatureFlags.fg)('platform-datasources-enable-two-way-sync-assignee') ? ['user'] : []));
|
|
78
91
|
return supportedEditType.includes(type);
|
|
79
92
|
};
|
|
80
93
|
var isEditTypeSelectable = exports.isEditTypeSelectable = function isEditTypeSelectable(type) {
|
|
81
94
|
var selectEditTypes = ['status', 'icon', 'user'];
|
|
82
95
|
return selectEditTypes.includes(type);
|
|
96
|
+
};
|
|
97
|
+
var toValueType = exports.toValueType = function toValueType(typeWithValues) {
|
|
98
|
+
var _typeWithValues$value;
|
|
99
|
+
return (_typeWithValues$value = typeWithValues.values) === null || _typeWithValues$value === void 0 ? void 0 : _typeWithValues$value[0];
|
|
83
100
|
};
|
|
@@ -6,17 +6,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
14
|
-
var _linkingTypes = require("@atlaskit/linking-types");
|
|
15
11
|
var _lozenge = _interopRequireDefault(require("@atlaskit/lozenge"));
|
|
16
12
|
var _select = _interopRequireDefault(require("@atlaskit/select"));
|
|
17
13
|
var _ufoExperiences = require("../../../../analytics/ufoExperiences");
|
|
18
14
|
var _datasourceExperienceId = require("../../../../contexts/datasource-experience-id");
|
|
19
|
-
var
|
|
15
|
+
var _useLoadOptions2 = require("../../../../hooks/useLoadOptions");
|
|
20
16
|
var _inlineEdit = require("../../table-cell-content/inline-edit");
|
|
21
17
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
22
18
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -24,12 +20,12 @@ var StatusEditType = function StatusEditType(props) {
|
|
|
24
20
|
var _currentValue$values;
|
|
25
21
|
var currentValue = props.currentValue,
|
|
26
22
|
executeFetch = props.executeFetch;
|
|
27
|
-
var
|
|
23
|
+
var _useLoadOptions = (0, _useLoadOptions2.useLoadOptions)({
|
|
28
24
|
executeFetch: executeFetch
|
|
29
25
|
}),
|
|
30
|
-
options =
|
|
31
|
-
isLoading =
|
|
32
|
-
hasFailed =
|
|
26
|
+
options = _useLoadOptions.options,
|
|
27
|
+
isLoading = _useLoadOptions.isLoading,
|
|
28
|
+
hasFailed = _useLoadOptions.hasFailed;
|
|
33
29
|
var experienceId = (0, _datasourceExperienceId.useDatasourceExperienceId)();
|
|
34
30
|
(0, _react.useEffect)(function () {
|
|
35
31
|
if (!experienceId) {
|
|
@@ -46,18 +42,18 @@ var StatusEditType = function StatusEditType(props) {
|
|
|
46
42
|
}
|
|
47
43
|
}, [experienceId, isLoading, hasFailed]);
|
|
48
44
|
return /*#__PURE__*/_react.default.createElement(_select.default, (0, _extends2.default)({}, props, {
|
|
49
|
-
testId: "inline-edit-status",
|
|
50
45
|
autoFocus: true,
|
|
46
|
+
options: options,
|
|
51
47
|
defaultMenuIsOpen: true,
|
|
52
48
|
blurInputOnSelect: true,
|
|
49
|
+
menuPlacement: "auto",
|
|
50
|
+
isLoading: isLoading,
|
|
51
|
+
filterOption: filterOption,
|
|
52
|
+
testId: "inline-edit-status",
|
|
53
53
|
getOptionValue: function getOptionValue(option) {
|
|
54
54
|
return option.text;
|
|
55
55
|
},
|
|
56
|
-
options: options,
|
|
57
|
-
isLoading: isLoading,
|
|
58
56
|
defaultValue: currentValue === null || currentValue === void 0 || (_currentValue$values = currentValue.values) === null || _currentValue$values === void 0 ? void 0 : _currentValue$values[0],
|
|
59
|
-
filterOption: filterOption,
|
|
60
|
-
menuPlacement: "auto",
|
|
61
57
|
formatOptionLabel: function formatOptionLabel(option) {
|
|
62
58
|
return /*#__PURE__*/_react.default.createElement(_lozenge.default, (0, _extends2.default)({
|
|
63
59
|
testId: "inline-edit-status-option-".concat(option.text)
|
|
@@ -74,102 +70,4 @@ var StatusEditType = function StatusEditType(props) {
|
|
|
74
70
|
var filterOption = function filterOption(option, inputValue) {
|
|
75
71
|
return option.data.text.toLowerCase().includes(inputValue.toLowerCase());
|
|
76
72
|
};
|
|
77
|
-
var useStatusOptions = function useStatusOptions(_ref) {
|
|
78
|
-
var fetchInputs = _ref.fetchInputs,
|
|
79
|
-
executeFetch = _ref.executeFetch;
|
|
80
|
-
var _useState = (0, _react.useState)({
|
|
81
|
-
isLoading: true,
|
|
82
|
-
options: [],
|
|
83
|
-
hasFailed: false
|
|
84
|
-
}),
|
|
85
|
-
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
86
|
-
_useState2$ = _useState2[0],
|
|
87
|
-
options = _useState2$.options,
|
|
88
|
-
isLoading = _useState2$.isLoading,
|
|
89
|
-
hasFailed = _useState2$.hasFailed,
|
|
90
|
-
setOptions = _useState2[1];
|
|
91
|
-
var _useDatasourceTableFl = (0, _useDatasourceTableFlag.useDatasourceTableFlag)({
|
|
92
|
-
isFetchAction: true
|
|
93
|
-
}),
|
|
94
|
-
showErrorFlag = _useDatasourceTableFl.showErrorFlag;
|
|
95
|
-
(0, _react.useEffect)(function () {
|
|
96
|
-
var isMounted = true;
|
|
97
|
-
loadOptions(fetchInputs, executeFetch).then(function (options) {
|
|
98
|
-
if (isMounted) {
|
|
99
|
-
setOptions({
|
|
100
|
-
isLoading: false,
|
|
101
|
-
options: options,
|
|
102
|
-
hasFailed: false
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
}).catch(function (err) {
|
|
106
|
-
showErrorFlag();
|
|
107
|
-
setOptions({
|
|
108
|
-
isLoading: false,
|
|
109
|
-
options: [],
|
|
110
|
-
hasFailed: true
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
return function () {
|
|
114
|
-
isMounted = false;
|
|
115
|
-
};
|
|
116
|
-
}, [fetchInputs, executeFetch, showErrorFlag]);
|
|
117
|
-
return {
|
|
118
|
-
options: options,
|
|
119
|
-
isLoading: isLoading,
|
|
120
|
-
hasFailed: hasFailed
|
|
121
|
-
};
|
|
122
|
-
};
|
|
123
|
-
var loadOptions = /*#__PURE__*/function () {
|
|
124
|
-
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
125
|
-
var fetchInputs,
|
|
126
|
-
executeFetch,
|
|
127
|
-
result,
|
|
128
|
-
operationStatus,
|
|
129
|
-
entities,
|
|
130
|
-
_args = arguments;
|
|
131
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
132
|
-
while (1) switch (_context.prev = _context.next) {
|
|
133
|
-
case 0:
|
|
134
|
-
fetchInputs = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
|
|
135
|
-
executeFetch = _args.length > 1 ? _args[1] : undefined;
|
|
136
|
-
if (!executeFetch) {
|
|
137
|
-
_context.next = 11;
|
|
138
|
-
break;
|
|
139
|
-
}
|
|
140
|
-
_context.next = 5;
|
|
141
|
-
return executeFetch(fetchInputs);
|
|
142
|
-
case 5:
|
|
143
|
-
result = _context.sent;
|
|
144
|
-
operationStatus = result.operationStatus, entities = result.entities;
|
|
145
|
-
if (!(operationStatus === _linkingTypes.ActionOperationStatus.FAILURE)) {
|
|
146
|
-
_context.next = 9;
|
|
147
|
-
break;
|
|
148
|
-
}
|
|
149
|
-
throw new Error('Failed to fetch status options');
|
|
150
|
-
case 9:
|
|
151
|
-
if (!entities) {
|
|
152
|
-
_context.next = 11;
|
|
153
|
-
break;
|
|
154
|
-
}
|
|
155
|
-
return _context.abrupt("return", entities.map(function (entity) {
|
|
156
|
-
return {
|
|
157
|
-
id: entity.id,
|
|
158
|
-
text: entity.text,
|
|
159
|
-
style: entity.style,
|
|
160
|
-
transitionId: entity.transitionId
|
|
161
|
-
};
|
|
162
|
-
}));
|
|
163
|
-
case 11:
|
|
164
|
-
return _context.abrupt("return", []);
|
|
165
|
-
case 12:
|
|
166
|
-
case "end":
|
|
167
|
-
return _context.stop();
|
|
168
|
-
}
|
|
169
|
-
}, _callee);
|
|
170
|
-
}));
|
|
171
|
-
return function loadOptions() {
|
|
172
|
-
return _ref2.apply(this, arguments);
|
|
173
|
-
};
|
|
174
|
-
}();
|
|
175
73
|
var _default = exports.default = StatusEditType;
|
|
@@ -5,7 +5,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
8
|
+
exports.default = void 0;
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _layering = require("@atlaskit/layering");
|
|
@@ -14,12 +14,10 @@ var _ufoExperiences = require("../../../../analytics/ufoExperiences");
|
|
|
14
14
|
var _datasourceExperienceId = require("../../../../contexts/datasource-experience-id");
|
|
15
15
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
16
16
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
17
|
-
var toTextValue = exports.toTextValue = function toTextValue(typeWithValues) {
|
|
18
|
-
var _ref, _typeWithValues$value;
|
|
19
|
-
return (_ref = (_typeWithValues$value = typeWithValues.values) === null || _typeWithValues$value === void 0 ? void 0 : _typeWithValues$value[0]) !== null && _ref !== void 0 ? _ref : '';
|
|
20
|
-
};
|
|
21
17
|
var TextEditType = function TextEditType(props) {
|
|
18
|
+
var _currentValue$values$, _currentValue$values;
|
|
22
19
|
var experienceId = (0, _datasourceExperienceId.useDatasourceExperienceId)();
|
|
20
|
+
var currentValue = props.currentValue;
|
|
23
21
|
(0, _react.useEffect)(function () {
|
|
24
22
|
if (experienceId) {
|
|
25
23
|
(0, _ufoExperiences.succeedUfoExperience)({
|
|
@@ -37,7 +35,7 @@ var TextEditType = function TextEditType(props) {
|
|
|
37
35
|
// We need 8px left padding to match read only version, but there is already 1px of border
|
|
38
36
|
padding: "var(--ds-space-100, 8px)".concat(" calc(", "var(--ds-space-100, 8px)", " - 1px)")
|
|
39
37
|
},
|
|
40
|
-
value:
|
|
38
|
+
value: (_currentValue$values$ = currentValue === null || currentValue === void 0 || (_currentValue$values = currentValue.values) === null || _currentValue$values === void 0 ? void 0 : _currentValue$values[0]) !== null && _currentValue$values$ !== void 0 ? _currentValue$values$ : '',
|
|
41
39
|
onChange: function onChange(e) {
|
|
42
40
|
return props.setEditValues({
|
|
43
41
|
type: 'string',
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _useDebounce = require("use-debounce");
|
|
13
|
+
var _avatar = _interopRequireWildcard(require("@atlaskit/avatar"));
|
|
14
|
+
var _select = _interopRequireDefault(require("@atlaskit/select"));
|
|
15
|
+
var _ufoExperiences = require("../../../../analytics/ufoExperiences");
|
|
16
|
+
var _datasourceExperienceId = require("../../../../contexts/datasource-experience-id");
|
|
17
|
+
var _useLoadOptions2 = require("../../../../hooks/useLoadOptions");
|
|
18
|
+
var _constants = require("../../../common/modal/popup-select/constants");
|
|
19
|
+
var _user = require("../../render-type/user");
|
|
20
|
+
var _inlineEdit = require("../../table-cell-content/inline-edit");
|
|
21
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
22
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
23
|
+
var UserEditType = function UserEditType(props) {
|
|
24
|
+
var _currentValue$values;
|
|
25
|
+
var currentValue = props.currentValue,
|
|
26
|
+
executeFetch = props.executeFetch;
|
|
27
|
+
var _useState = (0, _react.useState)({
|
|
28
|
+
query: ''
|
|
29
|
+
}),
|
|
30
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
31
|
+
fetchInputs = _useState2[0],
|
|
32
|
+
setFetchInputs = _useState2[1];
|
|
33
|
+
var _useDebouncedCallback = (0, _useDebounce.useDebouncedCallback)(function (query) {
|
|
34
|
+
return setFetchInputs({
|
|
35
|
+
query: query
|
|
36
|
+
});
|
|
37
|
+
}, _constants.SEARCH_DEBOUNCE_MS),
|
|
38
|
+
_useDebouncedCallback2 = (0, _slicedToArray2.default)(_useDebouncedCallback, 1),
|
|
39
|
+
handleUserInputDebounced = _useDebouncedCallback2[0];
|
|
40
|
+
var _useLoadOptions = (0, _useLoadOptions2.useLoadOptions)({
|
|
41
|
+
executeFetch: executeFetch,
|
|
42
|
+
fetchInputs: fetchInputs
|
|
43
|
+
}),
|
|
44
|
+
options = _useLoadOptions.options,
|
|
45
|
+
isLoading = _useLoadOptions.isLoading,
|
|
46
|
+
hasFailed = _useLoadOptions.hasFailed;
|
|
47
|
+
var experienceId = (0, _datasourceExperienceId.useDatasourceExperienceId)();
|
|
48
|
+
(0, _react.useEffect)(function () {
|
|
49
|
+
if (!experienceId) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (hasFailed) {
|
|
53
|
+
(0, _ufoExperiences.failUfoExperience)({
|
|
54
|
+
name: _inlineEdit.InlineEditUFOExperience
|
|
55
|
+
}, experienceId);
|
|
56
|
+
} else if (!isLoading) {
|
|
57
|
+
(0, _ufoExperiences.succeedUfoExperience)({
|
|
58
|
+
name: _inlineEdit.InlineEditUFOExperience
|
|
59
|
+
}, experienceId);
|
|
60
|
+
}
|
|
61
|
+
}, [experienceId, isLoading, hasFailed]);
|
|
62
|
+
return /*#__PURE__*/_react.default.createElement(_select.default, (0, _extends2.default)({}, props, {
|
|
63
|
+
autoFocus: true,
|
|
64
|
+
defaultMenuIsOpen: true,
|
|
65
|
+
blurInputOnSelect: true,
|
|
66
|
+
options: options,
|
|
67
|
+
isLoading: isLoading,
|
|
68
|
+
testId: "inline-edit-user",
|
|
69
|
+
filterOption: function filterOption() {
|
|
70
|
+
return true;
|
|
71
|
+
} // necessary, otherwise by default all options will be filtered out on user input
|
|
72
|
+
,
|
|
73
|
+
onInputChange: handleUserInputDebounced,
|
|
74
|
+
defaultValue: currentValue === null || currentValue === void 0 || (_currentValue$values = currentValue.values) === null || _currentValue$values === void 0 ? void 0 : _currentValue$values[0],
|
|
75
|
+
getOptionValue: function getOptionValue(option) {
|
|
76
|
+
return option.atlassianUserId;
|
|
77
|
+
},
|
|
78
|
+
formatOptionLabel: function formatOptionLabel(option) {
|
|
79
|
+
return /*#__PURE__*/_react.default.createElement(_avatar.AvatarItem, {
|
|
80
|
+
avatar: /*#__PURE__*/_react.default.createElement(_avatar.default, {
|
|
81
|
+
appearance: "circle",
|
|
82
|
+
size: 'small',
|
|
83
|
+
src: option.avatarSource,
|
|
84
|
+
testId: "".concat(_user.USER_TYPE_TEST_ID, "--avatar--").concat(option.atlassianUserId)
|
|
85
|
+
}),
|
|
86
|
+
primaryText: option.displayName
|
|
87
|
+
});
|
|
88
|
+
},
|
|
89
|
+
onChange: function onChange(e) {
|
|
90
|
+
return props.setEditValues({
|
|
91
|
+
type: 'user',
|
|
92
|
+
values: e ? [e] : []
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}));
|
|
96
|
+
};
|
|
97
|
+
var _default = exports.default = UserEditType;
|