@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.
Files changed (37) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/cjs/hooks/useLoadOptions.js +100 -0
  3. package/dist/cjs/ui/issue-like-table/edit-type/icon/index.js +16 -106
  4. package/dist/cjs/ui/issue-like-table/edit-type/index.js +26 -9
  5. package/dist/cjs/ui/issue-like-table/edit-type/status/index.js +10 -112
  6. package/dist/cjs/ui/issue-like-table/edit-type/text/index.js +4 -6
  7. package/dist/cjs/ui/issue-like-table/edit-type/user/index.js +97 -0
  8. package/dist/cjs/ui/issue-like-table/table-cell-content/inline-edit.js +5 -2
  9. package/dist/es2019/hooks/useLoadOptions.js +63 -0
  10. package/dist/es2019/ui/issue-like-table/edit-type/icon/index.js +13 -74
  11. package/dist/es2019/ui/issue-like-table/edit-type/index.js +24 -5
  12. package/dist/es2019/ui/issue-like-table/edit-type/status/index.js +8 -76
  13. package/dist/es2019/ui/issue-like-table/edit-type/text/index.js +5 -5
  14. package/dist/es2019/ui/issue-like-table/edit-type/user/index.js +74 -0
  15. package/dist/es2019/ui/issue-like-table/table-cell-content/inline-edit.js +5 -2
  16. package/dist/esm/hooks/useLoadOptions.js +93 -0
  17. package/dist/esm/ui/issue-like-table/edit-type/icon/index.js +18 -107
  18. package/dist/esm/ui/issue-like-table/edit-type/index.js +25 -5
  19. package/dist/esm/ui/issue-like-table/edit-type/status/index.js +11 -113
  20. package/dist/esm/ui/issue-like-table/edit-type/text/index.js +3 -5
  21. package/dist/esm/ui/issue-like-table/edit-type/user/index.js +87 -0
  22. package/dist/esm/ui/issue-like-table/table-cell-content/inline-edit.js +5 -2
  23. package/dist/types/hooks/useLoadOptions.d.ts +11 -0
  24. package/dist/types/ui/issue-like-table/edit-type/icon/index.d.ts +2 -2
  25. package/dist/types/ui/issue-like-table/edit-type/index.d.ts +1 -0
  26. package/dist/types/ui/issue-like-table/edit-type/status/index.d.ts +4 -4
  27. package/dist/types/ui/issue-like-table/edit-type/text/index.d.ts +2 -3
  28. package/dist/types/ui/issue-like-table/edit-type/user/index.d.ts +11 -0
  29. package/dist/types/ui/issue-like-table/types.d.ts +3 -0
  30. package/dist/types-ts4.5/hooks/useLoadOptions.d.ts +11 -0
  31. package/dist/types-ts4.5/ui/issue-like-table/edit-type/icon/index.d.ts +2 -2
  32. package/dist/types-ts4.5/ui/issue-like-table/edit-type/index.d.ts +1 -0
  33. package/dist/types-ts4.5/ui/issue-like-table/edit-type/status/index.d.ts +4 -4
  34. package/dist/types-ts4.5/ui/issue-like-table/edit-type/text/index.d.ts +2 -3
  35. package/dist/types-ts4.5/ui/issue-like-table/edit-type/user/index.d.ts +11 -0
  36. package/dist/types-ts4.5/ui/issue-like-table/types.d.ts +3 -0
  37. 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 _useDatasourceTableFlag = require("../../../../hooks/useDatasourceTableFlag");
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 _usePriorityOptions = usePriorityOptions(currentValue, executeFetch),
34
- options = _usePriorityOptions.options,
35
- isLoading = _usePriorityOptions.isLoading,
36
- hasFailed = _usePriorityOptions.hasFailed;
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("div", null, /*#__PURE__*/_react.default.createElement(_select.default, (0, _extends2.default)({}, props, {
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
- getOptionValue: function getOptionValue(option) {
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 = _interopRequireWildcard(require("./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: (0, _text.toTextValue)(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: (0, _text.toTextValue)(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: (0, _text.toTextValue)(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 _useDatasourceTableFlag = require("../../../../hooks/useDatasourceTableFlag");
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 _useStatusOptions = useStatusOptions({
23
+ var _useLoadOptions = (0, _useLoadOptions2.useLoadOptions)({
28
24
  executeFetch: executeFetch
29
25
  }),
30
- options = _useStatusOptions.options,
31
- isLoading = _useStatusOptions.isLoading,
32
- hasFailed = _useStatusOptions.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.toTextValue = exports.default = void 0;
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: toTextValue(props.currentValue),
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;