@atlaskit/link-datasource 3.8.7 → 3.8.9

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 (30) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/cjs/analytics/ufoExperiences/index.js +9 -1
  3. package/dist/cjs/state/actions/index.js +1 -1
  4. package/dist/cjs/ui/issue-like-table/edit-type/status/index.js +45 -12
  5. package/dist/cjs/ui/issue-like-table/edit-type/text/index.js +14 -1
  6. package/dist/cjs/ui/issue-like-table/index.js +6 -4
  7. package/dist/cjs/ui/issue-like-table/table-cell-content/inline-edit.js +11 -2
  8. package/dist/es2019/analytics/ufoExperiences/index.js +9 -1
  9. package/dist/es2019/state/actions/index.js +2 -2
  10. package/dist/es2019/ui/issue-like-table/edit-type/status/index.js +40 -10
  11. package/dist/es2019/ui/issue-like-table/edit-type/text/index.js +11 -1
  12. package/dist/es2019/ui/issue-like-table/index.js +6 -4
  13. package/dist/es2019/ui/issue-like-table/table-cell-content/inline-edit.js +10 -1
  14. package/dist/esm/analytics/ufoExperiences/index.js +9 -1
  15. package/dist/esm/state/actions/index.js +1 -1
  16. package/dist/esm/ui/issue-like-table/edit-type/status/index.js +45 -12
  17. package/dist/esm/ui/issue-like-table/edit-type/text/index.js +11 -1
  18. package/dist/esm/ui/issue-like-table/index.js +6 -4
  19. package/dist/esm/ui/issue-like-table/table-cell-content/inline-edit.js +10 -1
  20. package/dist/types/analytics/ufoExperiences/types.d.ts +7 -1
  21. package/dist/types/hooks/useDatasourceTableState.d.ts +1 -1
  22. package/dist/types/ui/assets-modal/modal/render-assets-content/index.d.ts +1 -1
  23. package/dist/types/ui/issue-like-table/table-cell-content/inline-edit.d.ts +1 -0
  24. package/dist/types/ui/issue-like-table/types.d.ts +1 -1
  25. package/dist/types-ts4.5/analytics/ufoExperiences/types.d.ts +7 -1
  26. package/dist/types-ts4.5/hooks/useDatasourceTableState.d.ts +1 -1
  27. package/dist/types-ts4.5/ui/assets-modal/modal/render-assets-content/index.d.ts +1 -1
  28. package/dist/types-ts4.5/ui/issue-like-table/table-cell-content/inline-edit.d.ts +1 -0
  29. package/dist/types-ts4.5/ui/issue-like-table/types.d.ts +1 -1
  30. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @atlaskit/link-datasource
2
2
 
3
+ ## 3.8.9
4
+
5
+ ### Patch Changes
6
+
7
+ - [`e7175d6f8d396`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/e7175d6f8d396) -
8
+ Adding UFO analytics to inline editable fields for J2WS
9
+
10
+ ## 3.8.8
11
+
12
+ ### Patch Changes
13
+
14
+ - [#163413](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/163413)
15
+ [`85d906a810a1d`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/85d906a810a1d) -
16
+ Fix an issue where all columns don't load from server when picker is opened with React18
17
+
3
18
  ## 3.8.7
4
19
 
5
20
  ### Patch Changes
@@ -19,9 +19,17 @@ var columnPickerCustomExperienceConfig = {
19
19
  type: _ufo.ExperienceTypes.Operation,
20
20
  performanceType: _ufo.ExperiencePerformanceTypes.Custom
21
21
  };
22
+ var inlineEditCustomExperienceConfig = {
23
+ platform: {
24
+ component: 'datasource'
25
+ },
26
+ type: _ufo.ExperienceTypes.Load,
27
+ performanceType: _ufo.ExperiencePerformanceTypes.InlineResult
28
+ };
22
29
  var ufoExperiences = {
23
30
  'datasource-rendered': new _ufo.ConcurrentExperience('datasource-rendered', datasourcePageSegmentLoadExperienceConfig),
24
- 'column-picker-rendered': new _ufo.ConcurrentExperience('column-picker-rendered', columnPickerCustomExperienceConfig)
31
+ 'column-picker-rendered': new _ufo.ConcurrentExperience('column-picker-rendered', columnPickerCustomExperienceConfig),
32
+ 'inline-edit-rendered': new _ufo.ConcurrentExperience('inline-edit-rendered', inlineEditCustomExperienceConfig)
25
33
  };
26
34
  var startUfoExperience = exports.startUfoExperience = function startUfoExperience(_ref, id) {
27
35
  var name = _ref.name,
@@ -169,7 +169,7 @@ var getFieldUpdateActionByAri = function getFieldUpdateActionByAri(state, _ref4)
169
169
  }
170
170
  return {
171
171
  schema: (_state$actionsByInteg = state.actionsByIntegration[integrationKey]) === null || _state$actionsByInteg === void 0 ? void 0 : _state$actionsByInteg[fieldKey],
172
- fetchSchema: (_state$actionsByInteg2 = state.actionsByIntegration[integrationKey]) === null || _state$actionsByInteg2 === void 0 ? void 0 : _state$actionsByInteg2[fieldKey].fetchAction
172
+ fetchSchema: (_state$actionsByInteg2 = state.actionsByIntegration[integrationKey]) === null || _state$actionsByInteg2 === void 0 || (_state$actionsByInteg2 = _state$actionsByInteg2[fieldKey]) === null || _state$actionsByInteg2 === void 0 ? void 0 : _state$actionsByInteg2.fetchAction
173
173
  };
174
174
  };
175
175
 
@@ -14,6 +14,9 @@ var _react = _interopRequireWildcard(require("react"));
14
14
  var _linkingTypes = require("@atlaskit/linking-types");
15
15
  var _lozenge = _interopRequireDefault(require("@atlaskit/lozenge"));
16
16
  var _select = _interopRequireDefault(require("@atlaskit/select"));
17
+ var _ufoExperiences = require("../../../../analytics/ufoExperiences");
18
+ var _datasourceExperienceId = require("../../../../contexts/datasource-experience-id");
19
+ var _inlineEdit = require("../../table-cell-content/inline-edit");
17
20
  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); }
18
21
  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; }
19
22
  var StatusEditType = function StatusEditType(props) {
@@ -22,10 +25,24 @@ var StatusEditType = function StatusEditType(props) {
22
25
  executeFetch = props.executeFetch;
23
26
  var _useStatusOptions = useStatusOptions(currentValue, executeFetch),
24
27
  options = _useStatusOptions.options,
25
- isLoading = _useStatusOptions.isLoading;
26
- return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_select.default, (0, _extends2.default)({}, props, {
27
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/design-system/no-unsafe-style-overrides -- Ignored via go/DSP-18766
28
- className: "single-select",
28
+ isLoading = _useStatusOptions.isLoading,
29
+ hasFailed = _useStatusOptions.hasFailed;
30
+ var experienceId = (0, _datasourceExperienceId.useDatasourceExperienceId)();
31
+ (0, _react.useEffect)(function () {
32
+ if (!experienceId) {
33
+ return;
34
+ }
35
+ if (hasFailed) {
36
+ (0, _ufoExperiences.failUfoExperience)({
37
+ name: _inlineEdit.InlineEditUFOExperience
38
+ }, experienceId);
39
+ } else if (!isLoading) {
40
+ (0, _ufoExperiences.succeedUfoExperience)({
41
+ name: _inlineEdit.InlineEditUFOExperience
42
+ }, experienceId);
43
+ }
44
+ }, [experienceId, isLoading, hasFailed]);
45
+ return /*#__PURE__*/_react.default.createElement(_select.default, (0, _extends2.default)({}, props, {
29
46
  testId: "inline-edit-status",
30
47
  autoFocus: true,
31
48
  defaultMenuIsOpen: true,
@@ -48,7 +65,7 @@ var StatusEditType = function StatusEditType(props) {
48
65
  values: e ? [e] : []
49
66
  });
50
67
  }
51
- })));
68
+ }));
52
69
  };
53
70
  var filterOption = function filterOption(option, inputValue) {
54
71
  return option.data.text.toLowerCase().includes(inputValue.toLowerCase());
@@ -56,12 +73,14 @@ var filterOption = function filterOption(option, inputValue) {
56
73
  var useStatusOptions = function useStatusOptions(currentValue, executeFetch) {
57
74
  var _useState = (0, _react.useState)({
58
75
  isLoading: true,
59
- options: []
76
+ options: [],
77
+ hasFailed: false
60
78
  }),
61
79
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
62
80
  _useState2$ = _useState2[0],
63
81
  options = _useState2$.options,
64
82
  isLoading = _useState2$.isLoading,
83
+ hasFailed = _useState2$.hasFailed,
65
84
  setOptions = _useState2[1];
66
85
  (0, _react.useEffect)(function () {
67
86
  var isMounted = true;
@@ -69,9 +88,16 @@ var useStatusOptions = function useStatusOptions(currentValue, executeFetch) {
69
88
  if (isMounted) {
70
89
  setOptions({
71
90
  isLoading: false,
72
- options: options
91
+ options: options,
92
+ hasFailed: false
73
93
  });
74
94
  }
95
+ }).catch(function (err) {
96
+ setOptions({
97
+ isLoading: false,
98
+ options: [],
99
+ hasFailed: true
100
+ });
75
101
  });
76
102
  return function () {
77
103
  isMounted = false;
@@ -79,7 +105,8 @@ var useStatusOptions = function useStatusOptions(currentValue, executeFetch) {
79
105
  }, [currentValue, executeFetch]);
80
106
  return {
81
107
  options: options,
82
- isLoading: isLoading
108
+ isLoading: isLoading,
109
+ hasFailed: hasFailed
83
110
  };
84
111
  };
85
112
  var loadOptions = /*#__PURE__*/function () {
@@ -89,7 +116,7 @@ var loadOptions = /*#__PURE__*/function () {
89
116
  while (1) switch (_context.prev = _context.next) {
90
117
  case 0:
91
118
  if (!executeFetch) {
92
- _context.next = 7;
119
+ _context.next = 9;
93
120
  break;
94
121
  }
95
122
  _context.next = 3;
@@ -97,10 +124,16 @@ var loadOptions = /*#__PURE__*/function () {
97
124
  case 3:
98
125
  result = _context.sent;
99
126
  operationStatus = result.operationStatus, entities = result.entities;
100
- if (!(operationStatus === _linkingTypes.ActionOperationStatus.SUCCESS && entities)) {
127
+ if (!(operationStatus === _linkingTypes.ActionOperationStatus.FAILURE)) {
101
128
  _context.next = 7;
102
129
  break;
103
130
  }
131
+ throw new Error('Failed to fetch status options');
132
+ case 7:
133
+ if (!entities) {
134
+ _context.next = 9;
135
+ break;
136
+ }
104
137
  return _context.abrupt("return", entities.map(function (entity) {
105
138
  return {
106
139
  id: entity.id,
@@ -109,9 +142,9 @@ var loadOptions = /*#__PURE__*/function () {
109
142
  transitionId: entity.transitionId
110
143
  };
111
144
  }));
112
- case 7:
145
+ case 9:
113
146
  return _context.abrupt("return", []);
114
- case 8:
147
+ case 10:
115
148
  case "end":
116
149
  return _context.stop();
117
150
  }
@@ -1,19 +1,32 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.toTextValue = exports.default = void 0;
8
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
- var _react = _interopRequireDefault(require("react"));
10
+ var _react = _interopRequireWildcard(require("react"));
10
11
  var _layering = require("@atlaskit/layering");
11
12
  var _textfield = _interopRequireDefault(require("@atlaskit/textfield"));
13
+ var _ufoExperiences = require("../../../../analytics/ufoExperiences");
14
+ var _datasourceExperienceId = require("../../../../contexts/datasource-experience-id");
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
+ 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; }
12
17
  var toTextValue = exports.toTextValue = function toTextValue(typeWithValues) {
13
18
  var _ref, _typeWithValues$value;
14
19
  return (_ref = (_typeWithValues$value = typeWithValues.values) === null || _typeWithValues$value === void 0 ? void 0 : _typeWithValues$value[0]) !== null && _ref !== void 0 ? _ref : '';
15
20
  };
16
21
  var TextEditType = function TextEditType(props) {
22
+ var experienceId = (0, _datasourceExperienceId.useDatasourceExperienceId)();
23
+ (0, _react.useEffect)(function () {
24
+ if (experienceId) {
25
+ (0, _ufoExperiences.succeedUfoExperience)({
26
+ name: 'inline-edit-rendered'
27
+ }, experienceId);
28
+ }
29
+ }, [experienceId]);
17
30
  return /*#__PURE__*/_react.default.createElement(_layering.Layering, {
18
31
  isDisabled: false
19
32
  }, /*#__PURE__*/_react.default.createElement(_textfield.default, (0, _extends2.default)({}, props, {
@@ -310,10 +310,10 @@ var IssueLikeDataTableView = exports.IssueLikeDataTableView = function IssueLike
310
310
  }
311
311
  }, [containerRef]);
312
312
  (0, _react.useEffect)(function () {
313
- if (!hasFullSchema) {
313
+ if (orderedColumns.length !== columns.length) {
314
314
  setOrderedColumns(getOrderedColumns((0, _toConsumableArray2.default)(columns), (0, _toConsumableArray2.default)(visibleColumnKeys)));
315
315
  }
316
- }, [columns, visibleColumnKeys, hasFullSchema]);
316
+ }, [columns, visibleColumnKeys, orderedColumns]);
317
317
  (0, _react.useEffect)(function () {
318
318
  if (experienceId && status === 'resolved') {
319
319
  (0, _ufoExperiences.succeedUfoExperience)({
@@ -602,6 +602,8 @@ var IssueLikeDataTableView = exports.IssueLikeDataTableView = function IssueLike
602
602
  }, _callee, null, [[3, 9]]);
603
603
  })), [experienceId, extensionKey, hasFullSchema, onLoadDatasourceDetails]);
604
604
  var isEditable = onVisibleColumnKeysChange && hasData;
605
+ var orderedColumnsAreUpToDate = orderedColumns.length === columns.length;
606
+ var shouldDisplayColumnsInPicker = hasFullSchema && orderedColumnsAreUpToDate;
605
607
  var view = (0, _react2.jsx)("div", {
606
608
  /* There is required contentEditable={true} in editor-card-plugin
607
609
  * But this brakes how DND works. We set contentEditable={false} to allow DND to work
@@ -693,8 +695,8 @@ var IssueLikeDataTableView = exports.IssueLikeDataTableView = function IssueLike
693
695
  }, heading);
694
696
  }
695
697
  }), onVisibleColumnKeysChange && (0, _react2.jsx)(ColumnPickerHeader, null, (0, _react2.jsx)(_columnPicker.ColumnPicker, {
696
- columns: hasFullSchema ? orderedColumns : [],
697
- selectedColumnKeys: hasFullSchema ? visibleColumnKeys : [],
698
+ columns: shouldDisplayColumnsInPicker ? orderedColumns : [],
699
+ selectedColumnKeys: shouldDisplayColumnsInPicker ? visibleColumnKeys : [],
698
700
  onSelectedColumnKeysChange: onSelectedColumnKeysChange,
699
701
  onOpen: handlePickerOpen
700
702
  })))), (0, _react2.jsx)("tbody", {
@@ -5,7 +5,7 @@ var _typeof3 = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.InlineEdit = void 0;
8
+ exports.InlineEditUFOExperience = exports.InlineEdit = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
@@ -15,6 +15,8 @@ var _inlineEdit = _interopRequireDefault(require("@atlaskit/inline-edit"));
15
15
  var _primitives = require("@atlaskit/primitives");
16
16
  var _hooks = require("@atlaskit/smart-card/hooks");
17
17
  var _analytics = require("../../../analytics");
18
+ var _ufoExperiences = require("../../../analytics/ufoExperiences");
19
+ var _datasourceExperienceId = require("../../../contexts/datasource-experience-id");
18
20
  var _useDatasourceTableFlag = require("../../../hooks/useDatasourceTableFlag");
19
21
  var _state = require("../../../state");
20
22
  var _editType = require("../edit-type");
@@ -22,6 +24,7 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
22
24
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(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
25
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
24
26
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
27
+ var InlineEditUFOExperience = exports.InlineEditUFOExperience = 'inline-edit-rendered';
25
28
  var editContainerStyles = (0, _primitives.xcss)({
26
29
  marginBlockStart: 'space.negative.100'
27
30
  });
@@ -94,6 +97,7 @@ var InlineEdit = exports.InlineEdit = function InlineEdit(_ref) {
94
97
  var _useDatasourceAnalyti = (0, _analytics.useDatasourceAnalyticsEvents)(),
95
98
  fireEvent = _useDatasourceAnalyti.fireEvent;
96
99
  var refreshDatasourceItem = useRefreshDatasourceItem(item);
100
+ var experienceId = (0, _datasourceExperienceId.useDatasourceExperienceId)();
97
101
  var onCommitUpdate = (0, _react.useCallback)(function (newValue) {
98
102
  if (!item) {
99
103
  setIsEditing(false);
@@ -118,6 +122,11 @@ var InlineEdit = exports.InlineEdit = function InlineEdit(_ref) {
118
122
  }, [item, columnKey, onUpdateItem, ari, refreshDatasourceItem, fireEvent, execute, showErrorFlag]);
119
123
  var onEdit = (0, _react.useCallback)(function () {
120
124
  setIsEditing(true);
125
+ if (experienceId) {
126
+ (0, _ufoExperiences.startUfoExperience)({
127
+ name: InlineEditUFOExperience
128
+ }, experienceId);
129
+ }
121
130
  if (integrationKey && entityType) {
122
131
  fireEvent('ui.inlineEdit.clicked.datasource', {
123
132
  integrationKey: integrationKey,
@@ -125,7 +134,7 @@ var InlineEdit = exports.InlineEdit = function InlineEdit(_ref) {
125
134
  fieldKey: columnKey
126
135
  });
127
136
  }
128
- }, [columnKey, entityType, fireEvent, integrationKey]);
137
+ }, [columnKey, entityType, experienceId, fireEvent, integrationKey]);
129
138
  var onCancelEdit = (0, _react.useCallback)(function () {
130
139
  setIsEditing(false);
131
140
  if (integrationKey && entityType) {
@@ -13,9 +13,17 @@ const columnPickerCustomExperienceConfig = {
13
13
  type: ExperienceTypes.Operation,
14
14
  performanceType: ExperiencePerformanceTypes.Custom
15
15
  };
16
+ const inlineEditCustomExperienceConfig = {
17
+ platform: {
18
+ component: 'datasource'
19
+ },
20
+ type: ExperienceTypes.Load,
21
+ performanceType: ExperiencePerformanceTypes.InlineResult
22
+ };
16
23
  const ufoExperiences = {
17
24
  'datasource-rendered': new ConcurrentExperience('datasource-rendered', datasourcePageSegmentLoadExperienceConfig),
18
- 'column-picker-rendered': new ConcurrentExperience('column-picker-rendered', columnPickerCustomExperienceConfig)
25
+ 'column-picker-rendered': new ConcurrentExperience('column-picker-rendered', columnPickerCustomExperienceConfig),
26
+ 'inline-edit-rendered': new ConcurrentExperience('inline-edit-rendered', inlineEditCustomExperienceConfig)
19
27
  };
20
28
  export const startUfoExperience = ({
21
29
  name,
@@ -144,14 +144,14 @@ const getFieldUpdateActionByAri = (state, {
144
144
  fieldKey,
145
145
  integrationKey
146
146
  }) => {
147
- var _state$permissions$ar, _state$permissions$ar2, _state$actionsByInteg, _state$actionsByInteg2;
147
+ var _state$permissions$ar, _state$permissions$ar2, _state$actionsByInteg, _state$actionsByInteg2, _state$actionsByInteg3;
148
148
  const isEditable = (_state$permissions$ar = state.permissions[ari]) === null || _state$permissions$ar === void 0 ? void 0 : (_state$permissions$ar2 = _state$permissions$ar[fieldKey]) === null || _state$permissions$ar2 === void 0 ? void 0 : _state$permissions$ar2.isEditable;
149
149
  if (!isEditable) {
150
150
  return {};
151
151
  }
152
152
  return {
153
153
  schema: (_state$actionsByInteg = state.actionsByIntegration[integrationKey]) === null || _state$actionsByInteg === void 0 ? void 0 : _state$actionsByInteg[fieldKey],
154
- fetchSchema: (_state$actionsByInteg2 = state.actionsByIntegration[integrationKey]) === null || _state$actionsByInteg2 === void 0 ? void 0 : _state$actionsByInteg2[fieldKey].fetchAction
154
+ fetchSchema: (_state$actionsByInteg2 = state.actionsByIntegration[integrationKey]) === null || _state$actionsByInteg2 === void 0 ? void 0 : (_state$actionsByInteg3 = _state$actionsByInteg2[fieldKey]) === null || _state$actionsByInteg3 === void 0 ? void 0 : _state$actionsByInteg3.fetchAction
155
155
  };
156
156
  };
157
157
 
@@ -3,6 +3,9 @@ import React, { useEffect, useState } from 'react';
3
3
  import { ActionOperationStatus } from '@atlaskit/linking-types';
4
4
  import Lozenge from '@atlaskit/lozenge';
5
5
  import Select from '@atlaskit/select';
6
+ import { failUfoExperience, succeedUfoExperience } from "../../../../analytics/ufoExperiences";
7
+ import { useDatasourceExperienceId } from "../../../../contexts/datasource-experience-id";
8
+ import { InlineEditUFOExperience } from "../../table-cell-content/inline-edit";
6
9
  const StatusEditType = props => {
7
10
  var _currentValue$values;
8
11
  const {
@@ -11,11 +14,25 @@ const StatusEditType = props => {
11
14
  } = props;
12
15
  const {
13
16
  options,
14
- isLoading
17
+ isLoading,
18
+ hasFailed
15
19
  } = useStatusOptions(currentValue, executeFetch);
16
- return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Select, _extends({}, props, {
17
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/design-system/no-unsafe-style-overrides -- Ignored via go/DSP-18766
18
- className: "single-select",
20
+ const experienceId = useDatasourceExperienceId();
21
+ useEffect(() => {
22
+ if (!experienceId) {
23
+ return;
24
+ }
25
+ if (hasFailed) {
26
+ failUfoExperience({
27
+ name: InlineEditUFOExperience
28
+ }, experienceId);
29
+ } else if (!isLoading) {
30
+ succeedUfoExperience({
31
+ name: InlineEditUFOExperience
32
+ }, experienceId);
33
+ }
34
+ }, [experienceId, isLoading, hasFailed]);
35
+ return /*#__PURE__*/React.createElement(Select, _extends({}, props, {
19
36
  testId: "inline-edit-status",
20
37
  autoFocus: true,
21
38
  defaultMenuIsOpen: true,
@@ -32,16 +49,18 @@ const StatusEditType = props => {
32
49
  type: 'status',
33
50
  values: e ? [e] : []
34
51
  })
35
- })));
52
+ }));
36
53
  };
37
54
  const filterOption = (option, inputValue) => option.data.text.toLowerCase().includes(inputValue.toLowerCase());
38
55
  const useStatusOptions = (currentValue, executeFetch) => {
39
56
  const [{
40
57
  options,
41
- isLoading
58
+ isLoading,
59
+ hasFailed
42
60
  }, setOptions] = useState({
43
61
  isLoading: true,
44
- options: []
62
+ options: [],
63
+ hasFailed: false
45
64
  });
46
65
  useEffect(() => {
47
66
  let isMounted = true;
@@ -49,9 +68,16 @@ const useStatusOptions = (currentValue, executeFetch) => {
49
68
  if (isMounted) {
50
69
  setOptions({
51
70
  isLoading: false,
52
- options
71
+ options,
72
+ hasFailed: false
53
73
  });
54
74
  }
75
+ }).catch(err => {
76
+ setOptions({
77
+ isLoading: false,
78
+ options: [],
79
+ hasFailed: true
80
+ });
55
81
  });
56
82
  return () => {
57
83
  isMounted = false;
@@ -59,7 +85,8 @@ const useStatusOptions = (currentValue, executeFetch) => {
59
85
  }, [currentValue, executeFetch]);
60
86
  return {
61
87
  options,
62
- isLoading
88
+ isLoading,
89
+ hasFailed
63
90
  };
64
91
  };
65
92
  const loadOptions = async (currentValue, executeFetch) => {
@@ -69,7 +96,10 @@ const loadOptions = async (currentValue, executeFetch) => {
69
96
  operationStatus,
70
97
  entities
71
98
  } = result;
72
- if (operationStatus === ActionOperationStatus.SUCCESS && entities) {
99
+ if (operationStatus === ActionOperationStatus.FAILURE) {
100
+ throw new Error('Failed to fetch status options');
101
+ }
102
+ if (entities) {
73
103
  return entities.map(entity => ({
74
104
  id: entity.id,
75
105
  text: entity.text,
@@ -1,12 +1,22 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import React from 'react';
2
+ import React, { useEffect } from 'react';
3
3
  import { Layering } from '@atlaskit/layering';
4
4
  import Textfield from '@atlaskit/textfield';
5
+ import { succeedUfoExperience } from "../../../../analytics/ufoExperiences";
6
+ import { useDatasourceExperienceId } from "../../../../contexts/datasource-experience-id";
5
7
  export const toTextValue = typeWithValues => {
6
8
  var _ref, _typeWithValues$value;
7
9
  return (_ref = (_typeWithValues$value = typeWithValues.values) === null || _typeWithValues$value === void 0 ? void 0 : _typeWithValues$value[0]) !== null && _ref !== void 0 ? _ref : '';
8
10
  };
9
11
  const TextEditType = props => {
12
+ const experienceId = useDatasourceExperienceId();
13
+ useEffect(() => {
14
+ if (experienceId) {
15
+ succeedUfoExperience({
16
+ name: 'inline-edit-rendered'
17
+ }, experienceId);
18
+ }
19
+ }, [experienceId]);
10
20
  return /*#__PURE__*/React.createElement(Layering, {
11
21
  isDisabled: false
12
22
  }, /*#__PURE__*/React.createElement(Textfield, _extends({}, props, {
@@ -322,10 +322,10 @@ export const IssueLikeDataTableView = ({
322
322
  }
323
323
  }, [containerRef]);
324
324
  useEffect(() => {
325
- if (!hasFullSchema) {
325
+ if (orderedColumns.length !== columns.length) {
326
326
  setOrderedColumns(getOrderedColumns([...columns], [...visibleColumnKeys]));
327
327
  }
328
- }, [columns, visibleColumnKeys, hasFullSchema]);
328
+ }, [columns, visibleColumnKeys, orderedColumns]);
329
329
  useEffect(() => {
330
330
  if (experienceId && status === 'resolved') {
331
331
  succeedUfoExperience({
@@ -573,6 +573,8 @@ export const IssueLikeDataTableView = ({
573
573
  }
574
574
  }, [experienceId, extensionKey, hasFullSchema, onLoadDatasourceDetails]);
575
575
  const isEditable = onVisibleColumnKeysChange && hasData;
576
+ const orderedColumnsAreUpToDate = orderedColumns.length === columns.length;
577
+ const shouldDisplayColumnsInPicker = hasFullSchema && orderedColumnsAreUpToDate;
576
578
  const view = jsx("div", {
577
579
  /* There is required contentEditable={true} in editor-card-plugin
578
580
  * But this brakes how DND works. We set contentEditable={false} to allow DND to work
@@ -665,8 +667,8 @@ export const IssueLikeDataTableView = ({
665
667
  }, heading);
666
668
  }
667
669
  }), onVisibleColumnKeysChange && jsx(ColumnPickerHeader, null, jsx(ColumnPicker, {
668
- columns: hasFullSchema ? orderedColumns : [],
669
- selectedColumnKeys: hasFullSchema ? visibleColumnKeys : [],
670
+ columns: shouldDisplayColumnsInPicker ? orderedColumns : [],
671
+ selectedColumnKeys: shouldDisplayColumnsInPicker ? visibleColumnKeys : [],
670
672
  onSelectedColumnKeysChange: onSelectedColumnKeysChange,
671
673
  onOpen: handlePickerOpen
672
674
  })))), jsx("tbody", {
@@ -4,9 +4,12 @@ import AKInlineEdit from '@atlaskit/inline-edit';
4
4
  import { Box, xcss } from '@atlaskit/primitives';
5
5
  import { useSmartLinkReload } from '@atlaskit/smart-card/hooks';
6
6
  import { useDatasourceAnalyticsEvents } from '../../../analytics';
7
+ import { startUfoExperience } from "../../../analytics/ufoExperiences";
8
+ import { useDatasourceExperienceId } from "../../../contexts/datasource-experience-id";
7
9
  import { useDatasourceTableFlag } from '../../../hooks/useDatasourceTableFlag';
8
10
  import { useDatasourceActions, useDatasourceItem } from '../../../state';
9
11
  import { editType } from '../edit-type';
12
+ export const InlineEditUFOExperience = 'inline-edit-rendered';
10
13
  const editContainerStyles = xcss({
11
14
  marginBlockStart: 'space.negative.100'
12
15
  });
@@ -84,6 +87,7 @@ export const InlineEdit = ({
84
87
  fireEvent
85
88
  } = useDatasourceAnalyticsEvents();
86
89
  const refreshDatasourceItem = useRefreshDatasourceItem(item);
90
+ const experienceId = useDatasourceExperienceId();
87
91
  const onCommitUpdate = useCallback(newValue => {
88
92
  if (!item) {
89
93
  setIsEditing(false);
@@ -108,6 +112,11 @@ export const InlineEdit = ({
108
112
  }, [item, columnKey, onUpdateItem, ari, refreshDatasourceItem, fireEvent, execute, showErrorFlag]);
109
113
  const onEdit = useCallback(() => {
110
114
  setIsEditing(true);
115
+ if (experienceId) {
116
+ startUfoExperience({
117
+ name: InlineEditUFOExperience
118
+ }, experienceId);
119
+ }
111
120
  if (integrationKey && entityType) {
112
121
  fireEvent('ui.inlineEdit.clicked.datasource', {
113
122
  integrationKey,
@@ -115,7 +124,7 @@ export const InlineEdit = ({
115
124
  fieldKey: columnKey
116
125
  });
117
126
  }
118
- }, [columnKey, entityType, fireEvent, integrationKey]);
127
+ }, [columnKey, entityType, experienceId, fireEvent, integrationKey]);
119
128
  const onCancelEdit = useCallback(() => {
120
129
  setIsEditing(false);
121
130
  if (integrationKey && entityType) {
@@ -13,9 +13,17 @@ var columnPickerCustomExperienceConfig = {
13
13
  type: ExperienceTypes.Operation,
14
14
  performanceType: ExperiencePerformanceTypes.Custom
15
15
  };
16
+ var inlineEditCustomExperienceConfig = {
17
+ platform: {
18
+ component: 'datasource'
19
+ },
20
+ type: ExperienceTypes.Load,
21
+ performanceType: ExperiencePerformanceTypes.InlineResult
22
+ };
16
23
  var ufoExperiences = {
17
24
  'datasource-rendered': new ConcurrentExperience('datasource-rendered', datasourcePageSegmentLoadExperienceConfig),
18
- 'column-picker-rendered': new ConcurrentExperience('column-picker-rendered', columnPickerCustomExperienceConfig)
25
+ 'column-picker-rendered': new ConcurrentExperience('column-picker-rendered', columnPickerCustomExperienceConfig),
26
+ 'inline-edit-rendered': new ConcurrentExperience('inline-edit-rendered', inlineEditCustomExperienceConfig)
19
27
  };
20
28
  export var startUfoExperience = function startUfoExperience(_ref, id) {
21
29
  var name = _ref.name,
@@ -163,7 +163,7 @@ var getFieldUpdateActionByAri = function getFieldUpdateActionByAri(state, _ref4)
163
163
  }
164
164
  return {
165
165
  schema: (_state$actionsByInteg = state.actionsByIntegration[integrationKey]) === null || _state$actionsByInteg === void 0 ? void 0 : _state$actionsByInteg[fieldKey],
166
- fetchSchema: (_state$actionsByInteg2 = state.actionsByIntegration[integrationKey]) === null || _state$actionsByInteg2 === void 0 ? void 0 : _state$actionsByInteg2[fieldKey].fetchAction
166
+ fetchSchema: (_state$actionsByInteg2 = state.actionsByIntegration[integrationKey]) === null || _state$actionsByInteg2 === void 0 || (_state$actionsByInteg2 = _state$actionsByInteg2[fieldKey]) === null || _state$actionsByInteg2 === void 0 ? void 0 : _state$actionsByInteg2.fetchAction
167
167
  };
168
168
  };
169
169
 
@@ -6,16 +6,33 @@ import React, { useEffect, useState } from 'react';
6
6
  import { ActionOperationStatus } from '@atlaskit/linking-types';
7
7
  import Lozenge from '@atlaskit/lozenge';
8
8
  import Select from '@atlaskit/select';
9
+ import { failUfoExperience, succeedUfoExperience } from "../../../../analytics/ufoExperiences";
10
+ import { useDatasourceExperienceId } from "../../../../contexts/datasource-experience-id";
11
+ import { InlineEditUFOExperience } from "../../table-cell-content/inline-edit";
9
12
  var StatusEditType = function StatusEditType(props) {
10
13
  var _currentValue$values;
11
14
  var currentValue = props.currentValue,
12
15
  executeFetch = props.executeFetch;
13
16
  var _useStatusOptions = useStatusOptions(currentValue, executeFetch),
14
17
  options = _useStatusOptions.options,
15
- isLoading = _useStatusOptions.isLoading;
16
- return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Select, _extends({}, props, {
17
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop, @atlaskit/design-system/no-unsafe-style-overrides -- Ignored via go/DSP-18766
18
- className: "single-select",
18
+ isLoading = _useStatusOptions.isLoading,
19
+ hasFailed = _useStatusOptions.hasFailed;
20
+ var experienceId = useDatasourceExperienceId();
21
+ useEffect(function () {
22
+ if (!experienceId) {
23
+ return;
24
+ }
25
+ if (hasFailed) {
26
+ failUfoExperience({
27
+ name: InlineEditUFOExperience
28
+ }, experienceId);
29
+ } else if (!isLoading) {
30
+ succeedUfoExperience({
31
+ name: InlineEditUFOExperience
32
+ }, experienceId);
33
+ }
34
+ }, [experienceId, isLoading, hasFailed]);
35
+ return /*#__PURE__*/React.createElement(Select, _extends({}, props, {
19
36
  testId: "inline-edit-status",
20
37
  autoFocus: true,
21
38
  defaultMenuIsOpen: true,
@@ -38,7 +55,7 @@ var StatusEditType = function StatusEditType(props) {
38
55
  values: e ? [e] : []
39
56
  });
40
57
  }
41
- })));
58
+ }));
42
59
  };
43
60
  var filterOption = function filterOption(option, inputValue) {
44
61
  return option.data.text.toLowerCase().includes(inputValue.toLowerCase());
@@ -46,12 +63,14 @@ var filterOption = function filterOption(option, inputValue) {
46
63
  var useStatusOptions = function useStatusOptions(currentValue, executeFetch) {
47
64
  var _useState = useState({
48
65
  isLoading: true,
49
- options: []
66
+ options: [],
67
+ hasFailed: false
50
68
  }),
51
69
  _useState2 = _slicedToArray(_useState, 2),
52
70
  _useState2$ = _useState2[0],
53
71
  options = _useState2$.options,
54
72
  isLoading = _useState2$.isLoading,
73
+ hasFailed = _useState2$.hasFailed,
55
74
  setOptions = _useState2[1];
56
75
  useEffect(function () {
57
76
  var isMounted = true;
@@ -59,9 +78,16 @@ var useStatusOptions = function useStatusOptions(currentValue, executeFetch) {
59
78
  if (isMounted) {
60
79
  setOptions({
61
80
  isLoading: false,
62
- options: options
81
+ options: options,
82
+ hasFailed: false
63
83
  });
64
84
  }
85
+ }).catch(function (err) {
86
+ setOptions({
87
+ isLoading: false,
88
+ options: [],
89
+ hasFailed: true
90
+ });
65
91
  });
66
92
  return function () {
67
93
  isMounted = false;
@@ -69,7 +95,8 @@ var useStatusOptions = function useStatusOptions(currentValue, executeFetch) {
69
95
  }, [currentValue, executeFetch]);
70
96
  return {
71
97
  options: options,
72
- isLoading: isLoading
98
+ isLoading: isLoading,
99
+ hasFailed: hasFailed
73
100
  };
74
101
  };
75
102
  var loadOptions = /*#__PURE__*/function () {
@@ -79,7 +106,7 @@ var loadOptions = /*#__PURE__*/function () {
79
106
  while (1) switch (_context.prev = _context.next) {
80
107
  case 0:
81
108
  if (!executeFetch) {
82
- _context.next = 7;
109
+ _context.next = 9;
83
110
  break;
84
111
  }
85
112
  _context.next = 3;
@@ -87,10 +114,16 @@ var loadOptions = /*#__PURE__*/function () {
87
114
  case 3:
88
115
  result = _context.sent;
89
116
  operationStatus = result.operationStatus, entities = result.entities;
90
- if (!(operationStatus === ActionOperationStatus.SUCCESS && entities)) {
117
+ if (!(operationStatus === ActionOperationStatus.FAILURE)) {
91
118
  _context.next = 7;
92
119
  break;
93
120
  }
121
+ throw new Error('Failed to fetch status options');
122
+ case 7:
123
+ if (!entities) {
124
+ _context.next = 9;
125
+ break;
126
+ }
94
127
  return _context.abrupt("return", entities.map(function (entity) {
95
128
  return {
96
129
  id: entity.id,
@@ -99,9 +132,9 @@ var loadOptions = /*#__PURE__*/function () {
99
132
  transitionId: entity.transitionId
100
133
  };
101
134
  }));
102
- case 7:
135
+ case 9:
103
136
  return _context.abrupt("return", []);
104
- case 8:
137
+ case 10:
105
138
  case "end":
106
139
  return _context.stop();
107
140
  }
@@ -1,12 +1,22 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import React from 'react';
2
+ import React, { useEffect } from 'react';
3
3
  import { Layering } from '@atlaskit/layering';
4
4
  import Textfield from '@atlaskit/textfield';
5
+ import { succeedUfoExperience } from "../../../../analytics/ufoExperiences";
6
+ import { useDatasourceExperienceId } from "../../../../contexts/datasource-experience-id";
5
7
  export var toTextValue = function toTextValue(typeWithValues) {
6
8
  var _ref, _typeWithValues$value;
7
9
  return (_ref = (_typeWithValues$value = typeWithValues.values) === null || _typeWithValues$value === void 0 ? void 0 : _typeWithValues$value[0]) !== null && _ref !== void 0 ? _ref : '';
8
10
  };
9
11
  var TextEditType = function TextEditType(props) {
12
+ var experienceId = useDatasourceExperienceId();
13
+ useEffect(function () {
14
+ if (experienceId) {
15
+ succeedUfoExperience({
16
+ name: 'inline-edit-rendered'
17
+ }, experienceId);
18
+ }
19
+ }, [experienceId]);
10
20
  return /*#__PURE__*/React.createElement(Layering, {
11
21
  isDisabled: false
12
22
  }, /*#__PURE__*/React.createElement(Textfield, _extends({}, props, {
@@ -306,10 +306,10 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref5) {
306
306
  }
307
307
  }, [containerRef]);
308
308
  useEffect(function () {
309
- if (!hasFullSchema) {
309
+ if (orderedColumns.length !== columns.length) {
310
310
  setOrderedColumns(getOrderedColumns(_toConsumableArray(columns), _toConsumableArray(visibleColumnKeys)));
311
311
  }
312
- }, [columns, visibleColumnKeys, hasFullSchema]);
312
+ }, [columns, visibleColumnKeys, orderedColumns]);
313
313
  useEffect(function () {
314
314
  if (experienceId && status === 'resolved') {
315
315
  succeedUfoExperience({
@@ -598,6 +598,8 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref5) {
598
598
  }, _callee, null, [[3, 9]]);
599
599
  })), [experienceId, extensionKey, hasFullSchema, onLoadDatasourceDetails]);
600
600
  var isEditable = onVisibleColumnKeysChange && hasData;
601
+ var orderedColumnsAreUpToDate = orderedColumns.length === columns.length;
602
+ var shouldDisplayColumnsInPicker = hasFullSchema && orderedColumnsAreUpToDate;
601
603
  var view = jsx("div", {
602
604
  /* There is required contentEditable={true} in editor-card-plugin
603
605
  * But this brakes how DND works. We set contentEditable={false} to allow DND to work
@@ -689,8 +691,8 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref5) {
689
691
  }, heading);
690
692
  }
691
693
  }), onVisibleColumnKeysChange && jsx(ColumnPickerHeader, null, jsx(ColumnPicker, {
692
- columns: hasFullSchema ? orderedColumns : [],
693
- selectedColumnKeys: hasFullSchema ? visibleColumnKeys : [],
694
+ columns: shouldDisplayColumnsInPicker ? orderedColumns : [],
695
+ selectedColumnKeys: shouldDisplayColumnsInPicker ? visibleColumnKeys : [],
694
696
  onSelectedColumnKeysChange: onSelectedColumnKeysChange,
695
697
  onOpen: handlePickerOpen
696
698
  })))), jsx("tbody", {
@@ -9,9 +9,12 @@ import AKInlineEdit from '@atlaskit/inline-edit';
9
9
  import { Box, xcss } from '@atlaskit/primitives';
10
10
  import { useSmartLinkReload } from '@atlaskit/smart-card/hooks';
11
11
  import { useDatasourceAnalyticsEvents } from '../../../analytics';
12
+ import { startUfoExperience } from "../../../analytics/ufoExperiences";
13
+ import { useDatasourceExperienceId } from "../../../contexts/datasource-experience-id";
12
14
  import { useDatasourceTableFlag } from '../../../hooks/useDatasourceTableFlag';
13
15
  import { useDatasourceActions, useDatasourceItem } from '../../../state';
14
16
  import { editType } from '../edit-type';
17
+ export var InlineEditUFOExperience = 'inline-edit-rendered';
15
18
  var editContainerStyles = xcss({
16
19
  marginBlockStart: 'space.negative.100'
17
20
  });
@@ -84,6 +87,7 @@ export var InlineEdit = function InlineEdit(_ref) {
84
87
  var _useDatasourceAnalyti = useDatasourceAnalyticsEvents(),
85
88
  fireEvent = _useDatasourceAnalyti.fireEvent;
86
89
  var refreshDatasourceItem = useRefreshDatasourceItem(item);
90
+ var experienceId = useDatasourceExperienceId();
87
91
  var onCommitUpdate = useCallback(function (newValue) {
88
92
  if (!item) {
89
93
  setIsEditing(false);
@@ -108,6 +112,11 @@ export var InlineEdit = function InlineEdit(_ref) {
108
112
  }, [item, columnKey, onUpdateItem, ari, refreshDatasourceItem, fireEvent, execute, showErrorFlag]);
109
113
  var onEdit = useCallback(function () {
110
114
  setIsEditing(true);
115
+ if (experienceId) {
116
+ startUfoExperience({
117
+ name: InlineEditUFOExperience
118
+ }, experienceId);
119
+ }
111
120
  if (integrationKey && entityType) {
112
121
  fireEvent('ui.inlineEdit.clicked.datasource', {
113
122
  integrationKey: integrationKey,
@@ -115,7 +124,7 @@ export var InlineEdit = function InlineEdit(_ref) {
115
124
  fieldKey: columnKey
116
125
  });
117
126
  }
118
- }, [columnKey, entityType, fireEvent, integrationKey]);
127
+ }, [columnKey, entityType, experienceId, fireEvent, integrationKey]);
119
128
  var onCancelEdit = useCallback(function () {
120
129
  setIsEditing(false);
121
130
  if (integrationKey && entityType) {
@@ -10,5 +10,11 @@ interface ColumnPickerRendered {
10
10
  extensionKey?: string;
11
11
  };
12
12
  }
13
- export type UfoExperience = DatasourceRendered | ColumnPickerRendered;
13
+ interface InlineEditRendered {
14
+ name: 'inline-edit-rendered';
15
+ metadata?: {
16
+ extensionKey?: string;
17
+ };
18
+ }
19
+ export type UfoExperience = DatasourceRendered | ColumnPickerRendered | InlineEditRendered;
14
20
  export {};
@@ -19,7 +19,7 @@ export interface DatasourceTableState {
19
19
  /** Resets state of the hook to be as if it is a first time it is being called. */
20
20
  reset: (options?: ResetOptions) => void;
21
21
  /** Requests the available column schemas that can be displayed within the table */
22
- loadDatasourceDetails: () => void;
22
+ loadDatasourceDetails: () => Promise<void>;
23
23
  /** Item ids to be hydrated from a store by consumers [NOTE: They must be in the same order as responseItems] */
24
24
  responseItemIds: string[];
25
25
  /** Items to be rendered within the table */
@@ -11,7 +11,7 @@ export interface RenderAssetsContentProps {
11
11
  schemaId?: string;
12
12
  onNextPage: () => void;
13
13
  hasNextPage: boolean;
14
- loadDatasourceDetails: () => void;
14
+ loadDatasourceDetails: () => Promise<void>;
15
15
  columns: DatasourceResponseSchemaProperty[];
16
16
  defaultVisibleColumnKeys: string[];
17
17
  onVisibleColumnKeysChange: (visibleColumnKeys: string[]) => void;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { type AtomicActionExecuteResponse } from '@atlaskit/linking-types';
3
3
  import type { DatasourceTypeWithOnlyValues } from '../types';
4
+ export declare const InlineEditUFOExperience = "inline-edit-rendered";
4
5
  interface InlineEditProps {
5
6
  ari: string;
6
7
  columnKey: string;
@@ -34,7 +34,7 @@ export interface IssueLikeDataTableViewProps {
34
34
  items: DatasourceDataResponseItem[];
35
35
  itemIds: string[];
36
36
  onNextPage: NextPageType;
37
- onLoadDatasourceDetails: () => void;
37
+ onLoadDatasourceDetails: () => Promise<void>;
38
38
  /**
39
39
  * A function to define new or override existing render components.
40
40
  * eg:
@@ -10,5 +10,11 @@ interface ColumnPickerRendered {
10
10
  extensionKey?: string;
11
11
  };
12
12
  }
13
- export type UfoExperience = DatasourceRendered | ColumnPickerRendered;
13
+ interface InlineEditRendered {
14
+ name: 'inline-edit-rendered';
15
+ metadata?: {
16
+ extensionKey?: string;
17
+ };
18
+ }
19
+ export type UfoExperience = DatasourceRendered | ColumnPickerRendered | InlineEditRendered;
14
20
  export {};
@@ -19,7 +19,7 @@ export interface DatasourceTableState {
19
19
  /** Resets state of the hook to be as if it is a first time it is being called. */
20
20
  reset: (options?: ResetOptions) => void;
21
21
  /** Requests the available column schemas that can be displayed within the table */
22
- loadDatasourceDetails: () => void;
22
+ loadDatasourceDetails: () => Promise<void>;
23
23
  /** Item ids to be hydrated from a store by consumers [NOTE: They must be in the same order as responseItems] */
24
24
  responseItemIds: string[];
25
25
  /** Items to be rendered within the table */
@@ -11,7 +11,7 @@ export interface RenderAssetsContentProps {
11
11
  schemaId?: string;
12
12
  onNextPage: () => void;
13
13
  hasNextPage: boolean;
14
- loadDatasourceDetails: () => void;
14
+ loadDatasourceDetails: () => Promise<void>;
15
15
  columns: DatasourceResponseSchemaProperty[];
16
16
  defaultVisibleColumnKeys: string[];
17
17
  onVisibleColumnKeysChange: (visibleColumnKeys: string[]) => void;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { type AtomicActionExecuteResponse } from '@atlaskit/linking-types';
3
3
  import type { DatasourceTypeWithOnlyValues } from '../types';
4
+ export declare const InlineEditUFOExperience = "inline-edit-rendered";
4
5
  interface InlineEditProps {
5
6
  ari: string;
6
7
  columnKey: string;
@@ -34,7 +34,7 @@ export interface IssueLikeDataTableViewProps {
34
34
  items: DatasourceDataResponseItem[];
35
35
  itemIds: string[];
36
36
  onNextPage: NextPageType;
37
- onLoadDatasourceDetails: () => void;
37
+ onLoadDatasourceDetails: () => Promise<void>;
38
38
  /**
39
39
  * A function to define new or override existing render components.
40
40
  * eg:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/link-datasource",
3
- "version": "3.8.7",
3
+ "version": "3.8.9",
4
4
  "description": "UI Components to support linking platform dataset feature",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -56,7 +56,7 @@
56
56
  "@atlaskit/jql-ast": "^3.3.0",
57
57
  "@atlaskit/jql-editor": "^4.10.0",
58
58
  "@atlaskit/jql-editor-autocomplete-rest": "^2.1.0",
59
- "@atlaskit/layering": "^0.7.0",
59
+ "@atlaskit/layering": "^0.7.3",
60
60
  "@atlaskit/link-client-extension": "^2.4.0",
61
61
  "@atlaskit/linking-common": "^6.0.0",
62
62
  "@atlaskit/linking-types": "^9.5.0",