@atlaskit/link-datasource 0.20.0 → 0.21.1

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 (32) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/hooks/useDatasourceTableState.js +137 -57
  3. package/dist/cjs/ui/datasource-table-view/datasourceTableView.js +8 -2
  4. package/dist/cjs/ui/issue-like-table/column-picker/index.js +9 -3
  5. package/dist/cjs/ui/issue-like-table/index.js +61 -21
  6. package/dist/cjs/ui/jira-issues-modal/modal/index.js +13 -12
  7. package/dist/cjs/version.json +1 -1
  8. package/dist/es2019/hooks/useDatasourceTableState.js +84 -19
  9. package/dist/es2019/ui/datasource-table-view/datasourceTableView.js +8 -2
  10. package/dist/es2019/ui/issue-like-table/column-picker/index.js +9 -3
  11. package/dist/es2019/ui/issue-like-table/index.js +24 -5
  12. package/dist/es2019/ui/jira-issues-modal/modal/index.js +10 -9
  13. package/dist/es2019/version.json +1 -1
  14. package/dist/esm/hooks/useDatasourceTableState.js +137 -57
  15. package/dist/esm/ui/datasource-table-view/datasourceTableView.js +8 -2
  16. package/dist/esm/ui/issue-like-table/column-picker/index.js +9 -3
  17. package/dist/esm/ui/issue-like-table/index.js +61 -21
  18. package/dist/esm/ui/jira-issues-modal/modal/index.js +13 -12
  19. package/dist/esm/version.json +1 -1
  20. package/dist/types/hooks/useDatasourceTableState.d.ts +14 -3
  21. package/dist/types/ui/issue-like-table/column-picker/index.d.ts +1 -1
  22. package/dist/types/ui/issue-like-table/column-picker/types.d.ts +1 -0
  23. package/dist/types/ui/issue-like-table/index.d.ts +1 -1
  24. package/dist/types/ui/issue-like-table/types.d.ts +3 -1
  25. package/dist/types-ts4.5/hooks/useDatasourceTableState.d.ts +14 -3
  26. package/dist/types-ts4.5/ui/issue-like-table/column-picker/index.d.ts +1 -1
  27. package/dist/types-ts4.5/ui/issue-like-table/column-picker/types.d.ts +1 -0
  28. package/dist/types-ts4.5/ui/issue-like-table/index.d.ts +1 -1
  29. package/dist/types-ts4.5/ui/issue-like-table/types.d.ts +3 -1
  30. package/examples-helpers/buildIssueLikeTable.tsx +11 -3
  31. package/examples-helpers/buildJiraIssuesTable.tsx +7 -2
  32. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @atlaskit/link-datasource
2
2
 
3
+ ## 0.21.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+
9
+ ## 0.21.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [`0b68480a270`](https://bitbucket.org/atlassian/atlassian-frontend/commits/0b68480a270) - Update logic to call `/details` only when full schema is required and added field list, includeSchema flag to `/data` call
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies
18
+
3
19
  ## 0.20.0
4
20
 
5
21
  ### Minor Changes
@@ -11,116 +11,196 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
11
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
12
  var _react = require("react");
13
13
  var _linkClientExtension = require("@atlaskit/link-client-extension");
14
- var useDatasourceTableState = function useDatasourceTableState(datasourceId, parameters, fields) {
14
+ var useDatasourceTableState = function useDatasourceTableState(_ref) {
15
+ var datasourceId = _ref.datasourceId,
16
+ parameters = _ref.parameters,
17
+ _ref$fieldKeys = _ref.fieldKeys,
18
+ fieldKeys = _ref$fieldKeys === void 0 ? [] : _ref$fieldKeys;
15
19
  var _useState = (0, _react.useState)([]),
16
20
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
17
21
  defaultVisibleColumnKeys = _useState2[0],
18
22
  setDefaultVisibleColumnKeys = _useState2[1];
19
- var _useState3 = (0, _react.useState)('empty'),
23
+ var _useState3 = (0, _react.useState)([]),
20
24
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
21
- status = _useState4[0],
22
- setStatus = _useState4[1];
23
- var _useState5 = (0, _react.useState)([]),
25
+ lastRequestedFieldKeys = _useState4[0],
26
+ setLastRequestedFieldKeys = _useState4[1];
27
+ var _useState5 = (0, _react.useState)('empty'),
24
28
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
25
- responseItems = _useState6[0],
26
- setResponseItems = _useState6[1];
27
- var _useState7 = (0, _react.useState)(true),
29
+ status = _useState6[0],
30
+ setStatus = _useState6[1];
31
+ var _useState7 = (0, _react.useState)([]),
28
32
  _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
29
- hasNextPage = _useState8[0],
30
- setHasNextPage = _useState8[1];
31
- var _useState9 = (0, _react.useState)(undefined),
33
+ responseItems = _useState8[0],
34
+ setResponseItems = _useState8[1];
35
+ var _useState9 = (0, _react.useState)(true),
32
36
  _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
33
- nextCursor = _useState10[0],
34
- setNextCursor = _useState10[1];
35
- var _useState11 = (0, _react.useState)([]),
37
+ hasNextPage = _useState10[0],
38
+ setHasNextPage = _useState10[1];
39
+ var _useState11 = (0, _react.useState)(undefined),
36
40
  _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
37
- columns = _useState12[0],
38
- setColumns = _useState12[1];
39
- var _useState13 = (0, _react.useState)(undefined),
41
+ nextCursor = _useState12[0],
42
+ setNextCursor = _useState12[1];
43
+ var _useState13 = (0, _react.useState)([]),
40
44
  _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
41
- totalIssueCount = _useState14[0],
42
- setTotalIssueCount = _useState14[1];
45
+ columns = _useState14[0],
46
+ setColumns = _useState14[1];
47
+ var _useState15 = (0, _react.useState)(undefined),
48
+ _useState16 = (0, _slicedToArray2.default)(_useState15, 2),
49
+ totalIssueCount = _useState16[0],
50
+ setTotalIssueCount = _useState16[1];
43
51
  var _useDatasourceClientE = (0, _linkClientExtension.useDatasourceClientExtension)(),
44
52
  getDatasourceData = _useDatasourceClientE.getDatasourceData,
45
53
  getDatasourceDetails = _useDatasourceClientE.getDatasourceDetails;
46
- var loadDatasourceDetails = (0, _react.useCallback)( /*#__PURE__*/function () {
47
- var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(parameters) {
48
- var result;
49
- return _regenerator.default.wrap(function _callee$(_context) {
50
- while (1) switch (_context.prev = _context.next) {
51
- case 0:
54
+ var loadDatasourceDetails = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
55
+ var result, isColumnNotPresentInCurrentColumnsList, allColumns, newColumns;
56
+ return _regenerator.default.wrap(function _callee$(_context) {
57
+ while (1) switch (_context.prev = _context.next) {
58
+ case 0:
59
+ if (parameters) {
52
60
  _context.next = 2;
53
- return getDatasourceDetails(datasourceId, {
54
- parameters: parameters
61
+ break;
62
+ }
63
+ return _context.abrupt("return");
64
+ case 2:
65
+ _context.next = 4;
66
+ return getDatasourceDetails(datasourceId, {
67
+ parameters: parameters
68
+ });
69
+ case 4:
70
+ result = _context.sent;
71
+ isColumnNotPresentInCurrentColumnsList = function isColumnNotPresentInCurrentColumnsList(col) {
72
+ return !columns.find(function (column) {
73
+ return column.key === col.key;
55
74
  });
56
- case 2:
57
- result = _context.sent;
58
- setColumns(result.schema.properties);
59
- setDefaultVisibleColumnKeys(result.schema.defaultProperties);
60
- case 5:
61
- case "end":
62
- return _context.stop();
63
- }
64
- }, _callee);
65
- }));
66
- return function (_x) {
67
- return _ref.apply(this, arguments);
68
- };
69
- }(), [datasourceId, getDatasourceDetails]);
70
- (0, _react.useEffect)(function () {
71
- if (parameters) {
72
- void loadDatasourceDetails(parameters);
75
+ };
76
+ allColumns = result.schema.properties;
77
+ newColumns = allColumns.filter(isColumnNotPresentInCurrentColumnsList);
78
+ newColumns.length > 0 && setColumns([].concat((0, _toConsumableArray2.default)(columns), (0, _toConsumableArray2.default)(newColumns)));
79
+ case 9:
80
+ case "end":
81
+ return _context.stop();
82
+ }
83
+ }, _callee);
84
+ })), [columns, datasourceId, getDatasourceDetails, parameters]);
85
+ var applySchemaProperties = (0, _react.useCallback)(function (properties) {
86
+ if (columns.length === 0) {
87
+ setColumns(properties);
88
+ }
89
+ var defaultProperties = properties.map(function (prop) {
90
+ return prop.key;
91
+ });
92
+
93
+ // when loading for the first time, we will need to set default visible props as /data does not give you that info
94
+ // also, since we dont pass any fields, we will need to set this info as lastRequestedFieldKeys
95
+ if (defaultVisibleColumnKeys.length === 0) {
96
+ setDefaultVisibleColumnKeys(defaultProperties);
97
+ }
98
+ if (lastRequestedFieldKeys.length === 0) {
99
+ setLastRequestedFieldKeys(defaultProperties);
73
100
  }
74
- }, [loadDatasourceDetails, parameters]);
101
+ }, [columns.length, defaultVisibleColumnKeys.length, lastRequestedFieldKeys === null || lastRequestedFieldKeys === void 0 ? void 0 : lastRequestedFieldKeys.length]);
75
102
  var onNextPage = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
76
- var _yield$getDatasourceD, data, nextPageCursor, totalIssues;
103
+ var requestInfo,
104
+ _requestInfo$isSchema,
105
+ isSchemaFromData,
106
+ shouldRequestFirstPage,
107
+ datasourceDataRequest,
108
+ _yield$getDatasourceD,
109
+ data,
110
+ nextPageCursor,
111
+ totalIssues,
112
+ schema,
113
+ _args2 = arguments;
77
114
  return _regenerator.default.wrap(function _callee2$(_context2) {
78
115
  while (1) switch (_context2.prev = _context2.next) {
79
116
  case 0:
117
+ requestInfo = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {};
80
118
  if (parameters) {
81
- _context2.next = 2;
119
+ _context2.next = 3;
82
120
  break;
83
121
  }
84
122
  return _context2.abrupt("return");
85
- case 2:
86
- setStatus('loading');
87
- _context2.next = 5;
88
- return getDatasourceData(datasourceId, {
123
+ case 3:
124
+ _requestInfo$isSchema = requestInfo.isSchemaFromData, isSchemaFromData = _requestInfo$isSchema === void 0 ? true : _requestInfo$isSchema, shouldRequestFirstPage = requestInfo.shouldRequestFirstPage;
125
+ datasourceDataRequest = {
89
126
  parameters: parameters,
90
127
  pageSize: 20,
91
- pageCursor: nextCursor,
92
- fields: fields
93
- });
94
- case 5:
128
+ pageCursor: shouldRequestFirstPage ? undefined : nextCursor,
129
+ fields: fieldKeys,
130
+ includeSchema: isSchemaFromData
131
+ };
132
+ setStatus('loading');
133
+ _context2.next = 8;
134
+ return getDatasourceData(datasourceId, datasourceDataRequest);
135
+ case 8:
95
136
  _yield$getDatasourceD = _context2.sent;
96
137
  data = _yield$getDatasourceD.data;
97
138
  nextPageCursor = _yield$getDatasourceD.nextPageCursor;
98
139
  totalIssues = _yield$getDatasourceD.totalIssues;
140
+ schema = _yield$getDatasourceD.schema;
99
141
  setTotalIssueCount(totalIssues);
100
142
  setNextCursor(nextPageCursor);
101
143
  setResponseItems(function (currentResponseItems) {
144
+ if (shouldRequestFirstPage) {
145
+ return data;
146
+ }
102
147
  return [].concat((0, _toConsumableArray2.default)(currentResponseItems), (0, _toConsumableArray2.default)(data));
103
148
  });
104
149
  setStatus('resolved');
105
150
  setHasNextPage(Boolean(nextPageCursor));
106
- case 14:
151
+ if (fieldKeys.length > 0) {
152
+ setLastRequestedFieldKeys(fieldKeys);
153
+ }
154
+ if (isSchemaFromData && schema) {
155
+ applySchemaProperties(schema.properties);
156
+ }
157
+ case 20:
107
158
  case "end":
108
159
  return _context2.stop();
109
160
  }
110
161
  }, _callee2);
111
- })), [parameters, getDatasourceData, datasourceId, nextCursor, fields]);
162
+ })), [parameters, fieldKeys, getDatasourceData, datasourceId, nextCursor, applySchemaProperties]);
112
163
  var reset = (0, _react.useCallback)(function () {
113
164
  setStatus('empty');
114
165
  setResponseItems([]);
115
166
  setHasNextPage(true);
116
167
  setNextCursor(undefined);
117
168
  setTotalIssueCount(undefined);
169
+ setLastRequestedFieldKeys([]);
118
170
  }, []);
171
+
172
+ // this takes care of requesting /data initally
173
+ (0, _react.useEffect)(function () {
174
+ var isEmptyState = Object.keys(parameters || {}).length > 0 && lastRequestedFieldKeys.length === 0 && status === 'empty';
175
+ if (isEmptyState) {
176
+ void onNextPage();
177
+ }
178
+ }, [lastRequestedFieldKeys, loadDatasourceDetails, onNextPage, parameters, status]);
179
+
180
+ // this takes care of requesting /data when user selects/unselects a column
181
+ (0, _react.useEffect)(function () {
182
+ var canHaveNewColumns = fieldKeys.length > 0 && lastRequestedFieldKeys.length > 0;
183
+ if (canHaveNewColumns) {
184
+ var hasNewColumns = fieldKeys.some(function (key) {
185
+ return !lastRequestedFieldKeys.includes(key);
186
+ });
187
+ if (!hasNewColumns) {
188
+ return;
189
+ }
190
+ reset();
191
+ void onNextPage({
192
+ isSchemaFromData: false,
193
+ // since this is not inital load, we will already have schema
194
+ shouldRequestFirstPage: true
195
+ });
196
+ }
197
+ }, [fieldKeys, lastRequestedFieldKeys, onNextPage, reset]);
119
198
  return {
120
199
  status: status,
121
200
  onNextPage: onNextPage,
122
201
  responseItems: responseItems,
123
202
  reset: reset,
203
+ loadDatasourceDetails: loadDatasourceDetails,
124
204
  hasNextPage: hasNextPage,
125
205
  columns: columns,
126
206
  defaultVisibleColumnKeys: defaultVisibleColumnKeys,
@@ -28,7 +28,11 @@ var DatasourceTableView = function DatasourceTableView(_ref) {
28
28
  parameters = _ref.parameters,
29
29
  visibleColumnKeys = _ref.visibleColumnKeys,
30
30
  onVisibleColumnKeysChange = _ref.onVisibleColumnKeysChange;
31
- var _useDatasourceTableSt = (0, _useDatasourceTableState.useDatasourceTableState)(datasourceId, parameters),
31
+ var _useDatasourceTableSt = (0, _useDatasourceTableState.useDatasourceTableState)({
32
+ datasourceId: datasourceId,
33
+ parameters: parameters,
34
+ fieldKeys: visibleColumnKeys
35
+ }),
32
36
  reset = _useDatasourceTableSt.reset,
33
37
  status = _useDatasourceTableSt.status,
34
38
  onNextPage = _useDatasourceTableSt.onNextPage,
@@ -36,7 +40,8 @@ var DatasourceTableView = function DatasourceTableView(_ref) {
36
40
  hasNextPage = _useDatasourceTableSt.hasNextPage,
37
41
  columns = _useDatasourceTableSt.columns,
38
42
  defaultVisibleColumnKeys = _useDatasourceTableSt.defaultVisibleColumnKeys,
39
- totalIssueCount = _useDatasourceTableSt.totalIssueCount;
43
+ totalIssueCount = _useDatasourceTableSt.totalIssueCount,
44
+ loadDatasourceDetails = _useDatasourceTableSt.loadDatasourceDetails;
40
45
  (0, _react.useEffect)(function () {
41
46
  if (onVisibleColumnKeysChange && (visibleColumnKeys || []).length === 0 && defaultVisibleColumnKeys.length > 0) {
42
47
  onVisibleColumnKeysChange(defaultVisibleColumnKeys);
@@ -49,6 +54,7 @@ var DatasourceTableView = function DatasourceTableView(_ref) {
49
54
  hasNextPage: hasNextPage,
50
55
  items: responseItems,
51
56
  onNextPage: onNextPage,
57
+ onLoadDatasourceDetails: loadDatasourceDetails,
52
58
  status: status,
53
59
  columns: columns,
54
60
  visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
@@ -23,7 +23,8 @@ var ColumnPicker = function ColumnPicker(_ref) {
23
23
  var isDatasourceLoading = _ref.isDatasourceLoading,
24
24
  columns = _ref.columns,
25
25
  selectedColumnKeys = _ref.selectedColumnKeys,
26
- onSelectedColumnKeysChange = _ref.onSelectedColumnKeysChange;
26
+ onSelectedColumnKeysChange = _ref.onSelectedColumnKeysChange,
27
+ onOpen = _ref.onOpen;
27
28
  var intl = (0, _reactIntlNext.useIntl)();
28
29
  var _useState = (0, _react.useState)([]),
29
30
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -65,7 +66,7 @@ var ColumnPicker = function ColumnPicker(_ref) {
65
66
  });
66
67
  onSelectedColumnKeysChange(selectedValues);
67
68
  }, [columns, onSelectedColumnKeysChange]);
68
- var onPopupOpen = (0, _react.useCallback)(function () {
69
+ var sortSelectedColumnsTop = (0, _react.useCallback)(function () {
69
70
  if (!allOptions.length) {
70
71
  return;
71
72
  }
@@ -77,6 +78,10 @@ var ColumnPicker = function ColumnPicker(_ref) {
77
78
  var sortedOptions = [].concat((0, _toConsumableArray2.default)(selectedOptions), (0, _toConsumableArray2.default)(nonSelectedOptions));
78
79
  sortedOptions.length > 0 && setAllOptions(sortedOptions);
79
80
  }, [allOptions, selectedOptions]);
81
+ var handleOpen = (0, _react.useCallback)(function () {
82
+ onOpen && void onOpen();
83
+ void sortSelectedColumnsTop();
84
+ }, [onOpen, sortSelectedColumnsTop]);
80
85
  return (0, _react2.jsx)(_select.PopupSelect, {
81
86
  classNamePrefix: 'column-picker-popup',
82
87
  testId: 'column-picker-popup',
@@ -85,13 +90,14 @@ var ColumnPicker = function ColumnPicker(_ref) {
85
90
  },
86
91
  options: allOptions,
87
92
  value: selectedOptions,
88
- onOpen: onPopupOpen,
93
+ onOpen: handleOpen,
89
94
  closeMenuOnSelect: false,
90
95
  hideSelectedOptions: false,
91
96
  isMulti: true,
92
97
  placeholder: intl.formatMessage(_messages.columnPickerMessages.search),
93
98
  "aria-label": "Search for fields",
94
99
  onChange: handleChange,
100
+ isLoading: allOptions.length === 0,
95
101
  target: function target(_ref8) {
96
102
  var isOpen = _ref8.isOpen,
97
103
  triggerProps = (0, _objectWithoutProperties2.default)(_ref8, _excluded);
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.IssueLikeDataTableView = exports.EmptyState = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
12
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
@@ -93,6 +95,7 @@ function getColumnWidth(key, type) {
93
95
  var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
94
96
  var testId = _ref2.testId,
95
97
  onNextPage = _ref2.onNextPage,
98
+ onLoadDatasourceDetails = _ref2.onLoadDatasourceDetails,
96
99
  items = _ref2.items,
97
100
  columns = _ref2.columns,
98
101
  _ref2$renderItem = _ref2.renderItem,
@@ -112,14 +115,21 @@ var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
112
115
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
113
116
  isDragPreview = _useState4[0],
114
117
  setIsDragPreview = _useState4[1];
118
+ var _useState5 = (0, _react.useState)(false),
119
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
120
+ hasFullSchema = _useState6[0],
121
+ setHasFullSchema = _useState6[1];
115
122
  var isBottomOfTableVisibleRaw = (0, _useIsOnScreen.useIsOnScreen)(lastRowElement);
116
123
  var containerRef = (0, _react.useRef)(null);
117
- var _useState5 = (0, _react.useState)(function () {
124
+ var _useState7 = (0, _react.useState)(function () {
118
125
  return orderColumns((0, _toConsumableArray2.default)(columns), (0, _toConsumableArray2.default)(visibleColumnKeys));
119
126
  }),
120
- _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
121
- orderedColumns = _useState6[0],
122
- setOrderedColumns = _useState6[1];
127
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
128
+ orderedColumns = _useState8[0],
129
+ setOrderedColumns = _useState8[1];
130
+ (0, _react.useEffect)(function () {
131
+ setOrderedColumns(orderColumns((0, _toConsumableArray2.default)(columns), (0, _toConsumableArray2.default)(visibleColumnKeys)));
132
+ }, [columns, visibleColumnKeys]);
123
133
  var visibleSortedColumns = (0, _react.useMemo)(function () {
124
134
  return visibleColumnKeys.map(function (visibleKey) {
125
135
  return orderedColumns.find(function (_ref3) {
@@ -163,8 +173,10 @@ var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
163
173
  };
164
174
  });
165
175
  (0, _react.useEffect)(function () {
166
- if (status === 'empty' || isBottomOfTableVisibleRaw && hasNextPage && status !== 'loading') {
167
- void onNextPage();
176
+ if (isBottomOfTableVisibleRaw && hasNextPage && status === 'resolved') {
177
+ void onNextPage({
178
+ isSchemaFromData: false
179
+ });
168
180
  }
169
181
  }, [isBottomOfTableVisibleRaw, status, hasNextPage, onNextPage]);
170
182
  var dndPreviewHeight = 0;
@@ -270,6 +282,33 @@ var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
270
282
  var onSelectedColumnKeysChange = (0, _react.useCallback)(function (newSelectedColumnKeys) {
271
283
  onVisibleColumnKeysChange === null || onVisibleColumnKeysChange === void 0 ? void 0 : onVisibleColumnKeysChange(newSelectedColumnKeys);
272
284
  }, [onVisibleColumnKeysChange]);
285
+ var handlePickerOpen = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
286
+ return _regenerator.default.wrap(function _callee$(_context) {
287
+ while (1) switch (_context.prev = _context.next) {
288
+ case 0:
289
+ if (!hasFullSchema) {
290
+ _context.next = 2;
291
+ break;
292
+ }
293
+ return _context.abrupt("return");
294
+ case 2:
295
+ _context.prev = 2;
296
+ _context.next = 5;
297
+ return onLoadDatasourceDetails();
298
+ case 5:
299
+ setHasFullSchema(true);
300
+ _context.next = 11;
301
+ break;
302
+ case 8:
303
+ _context.prev = 8;
304
+ _context.t0 = _context["catch"](2);
305
+ setHasFullSchema(false);
306
+ case 11:
307
+ case "end":
308
+ return _context.stop();
309
+ }
310
+ }, _callee, null, [[2, 8]]);
311
+ })), [hasFullSchema, onLoadDatasourceDetails]);
273
312
  return (0, _react2.jsx)("div", {
274
313
  ref: containerRef,
275
314
  css: isDragPreview ? containerDragPreviewStyles : null
@@ -279,10 +318,10 @@ var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
279
318
  }, (0, _react2.jsx)("thead", {
280
319
  "data-testid": testId && "".concat(testId, "--head"),
281
320
  css: tableHeadStyles
282
- }, (0, _react2.jsx)("tr", null, headColumns.map(function (_ref10, cellIndex) {
283
- var key = _ref10.key,
284
- content = _ref10.content,
285
- maxWidth = _ref10.maxWidth;
321
+ }, (0, _react2.jsx)("tr", null, headColumns.map(function (_ref11, cellIndex) {
322
+ var key = _ref11.key,
323
+ content = _ref11.content,
324
+ maxWidth = _ref11.maxWidth;
286
325
  var TruncatedContent = function TruncatedContent() {
287
326
  return (0, _react2.jsx)("div", {
288
327
  css: truncatedCellStyles
@@ -311,24 +350,25 @@ var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
311
350
  }), onVisibleColumnKeysChange && (0, _react2.jsx)("th", {
312
351
  css: columnPickerHeaderStyles
313
352
  }, (0, _react2.jsx)(_columnPicker.ColumnPicker, {
353
+ columns: hasFullSchema ? orderedColumns : [],
354
+ selectedColumnKeys: hasFullSchema ? visibleColumnKeys : [],
314
355
  isDatasourceLoading: status === 'loading',
315
- columns: orderedColumns,
316
- selectedColumnKeys: visibleColumnKeys,
317
- onSelectedColumnKeysChange: onSelectedColumnKeysChange
356
+ onSelectedColumnKeysChange: onSelectedColumnKeysChange,
357
+ onOpen: handlePickerOpen
318
358
  })))), (0, _react2.jsx)("tbody", {
319
359
  "data-testid": testId && "".concat(testId, "--body")
320
- }, rows.map(function (_ref11) {
321
- var key = _ref11.key,
322
- cells = _ref11.cells,
323
- ref = _ref11.ref;
360
+ }, rows.map(function (_ref12) {
361
+ var key = _ref12.key,
362
+ cells = _ref12.cells,
363
+ ref = _ref12.ref;
324
364
  return (0, _react2.jsx)("tr", {
325
365
  key: key,
326
366
  "data-testid": testId && "".concat(testId, "--row-").concat(key),
327
367
  ref: ref
328
- }, cells.map(function (_ref12, cellIndex) {
329
- var key = _ref12.key,
330
- content = _ref12.content,
331
- maxWidth = _ref12.maxWidth;
368
+ }, cells.map(function (_ref13, cellIndex) {
369
+ var key = _ref13.key,
370
+ content = _ref13.content,
371
+ maxWidth = _ref13.maxWidth;
332
372
  return (0, _react2.jsx)("td", {
333
373
  key: key,
334
374
  "data-testid": testId && "".concat(testId, "--cell-").concat(cellIndex),
@@ -72,18 +72,23 @@ var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
72
72
  jql: jql || ''
73
73
  } : undefined;
74
74
  }, [cloudId, jql]);
75
- var _useDatasourceTableSt = (0, _useDatasourceTableState.useDatasourceTableState)(datasourceId, parameters),
75
+ var _useState9 = (0, _react.useState)(initialVisibleColumnKeys),
76
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
77
+ visibleColumnKeys = _useState10[0],
78
+ setVisibleColumnKeys = _useState10[1];
79
+ var _useDatasourceTableSt = (0, _useDatasourceTableState.useDatasourceTableState)({
80
+ datasourceId: datasourceId,
81
+ parameters: isParametersSet ? parameters : undefined,
82
+ fieldKeys: visibleColumnKeys
83
+ }),
76
84
  reset = _useDatasourceTableSt.reset,
77
85
  status = _useDatasourceTableSt.status,
78
86
  onNextPage = _useDatasourceTableSt.onNextPage,
79
87
  responseItems = _useDatasourceTableSt.responseItems,
80
88
  hasNextPage = _useDatasourceTableSt.hasNextPage,
81
89
  columns = _useDatasourceTableSt.columns,
82
- defaultVisibleColumnKeys = _useDatasourceTableSt.defaultVisibleColumnKeys;
83
- var _useState9 = (0, _react.useState)(initialVisibleColumnKeys || defaultVisibleColumnKeys),
84
- _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
85
- visibleColumnKeys = _useState10[0],
86
- setVisibleColumnKeys = _useState10[1];
90
+ defaultVisibleColumnKeys = _useDatasourceTableSt.defaultVisibleColumnKeys,
91
+ loadDatasourceDetails = _useDatasourceTableSt.loadDatasourceDetails;
87
92
  (0, _react.useEffect)(function () {
88
93
  var newVisibleColumnKeys = !initialVisibleColumnKeys || (initialVisibleColumnKeys || []).length === 0 ? defaultVisibleColumnKeys : initialVisibleColumnKeys;
89
94
  setVisibleColumnKeys(newVisibleColumnKeys);
@@ -183,11 +188,6 @@ var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
183
188
  var handleViewModeChange = function handleViewModeChange(selectedMode) {
184
189
  setCurrentViewMode(selectedMode);
185
190
  };
186
- (0, _react.useEffect)(function () {
187
- if (status === 'empty' && isParametersSet) {
188
- void onNextPage();
189
- }
190
- }, [status, isParametersSet, onNextPage, reset]);
191
191
  var issueLikeDataTableView = (0, _react.useMemo)(function () {
192
192
  return (0, _react2.jsx)(_issueLikeTable.IssueLikeDataTableView, {
193
193
  testId: "jira-jql-datasource-table",
@@ -197,9 +197,10 @@ var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
197
197
  hasNextPage: hasNextPage,
198
198
  visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
199
199
  onNextPage: onNextPage,
200
+ onLoadDatasourceDetails: loadDatasourceDetails,
200
201
  onVisibleColumnKeysChange: setVisibleColumnKeys
201
202
  });
202
- }, [columns, defaultVisibleColumnKeys, hasNextPage, onNextPage, responseItems, status, visibleColumnKeys]);
203
+ }, [columns, defaultVisibleColumnKeys, hasNextPage, loadDatasourceDetails, onNextPage, responseItems, status, visibleColumnKeys]);
203
204
  var renderCountModeContent = (0, _react.useCallback)(function () {
204
205
  var url = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
205
206
  if (status === 'empty' || !jql || !url) {
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/link-datasource",
3
- "version": "0.20.0",
3
+ "version": "0.21.1",
4
4
  "sideEffects": false
5
5
  }