@atlaskit/link-datasource 0.19.1 → 0.21.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 (40) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/hooks/useDatasourceTableState.js +138 -58
  3. package/dist/cjs/ui/datasource-table-view/datasourceTableView.js +8 -2
  4. package/dist/cjs/ui/issue-like-table/column-picker/index.js +17 -7
  5. package/dist/cjs/ui/issue-like-table/column-picker/messages.js +15 -0
  6. package/dist/cjs/ui/issue-like-table/index.js +65 -24
  7. package/dist/cjs/ui/issue-like-table/styled.js +1 -1
  8. package/dist/cjs/ui/jira-issues-modal/modal/index.js +14 -13
  9. package/dist/cjs/version.json +1 -1
  10. package/dist/es2019/hooks/useDatasourceTableState.js +84 -19
  11. package/dist/es2019/ui/datasource-table-view/datasourceTableView.js +8 -2
  12. package/dist/es2019/ui/issue-like-table/column-picker/index.js +16 -6
  13. package/dist/es2019/ui/issue-like-table/column-picker/messages.js +8 -0
  14. package/dist/es2019/ui/issue-like-table/index.js +28 -8
  15. package/dist/es2019/ui/issue-like-table/styled.js +1 -1
  16. package/dist/es2019/ui/jira-issues-modal/modal/index.js +11 -10
  17. package/dist/es2019/version.json +1 -1
  18. package/dist/esm/hooks/useDatasourceTableState.js +138 -58
  19. package/dist/esm/ui/datasource-table-view/datasourceTableView.js +8 -2
  20. package/dist/esm/ui/issue-like-table/column-picker/index.js +17 -7
  21. package/dist/esm/ui/issue-like-table/column-picker/messages.js +8 -0
  22. package/dist/esm/ui/issue-like-table/index.js +65 -24
  23. package/dist/esm/ui/issue-like-table/styled.js +1 -1
  24. package/dist/esm/ui/jira-issues-modal/modal/index.js +14 -13
  25. package/dist/esm/version.json +1 -1
  26. package/dist/types/hooks/useDatasourceTableState.d.ts +14 -3
  27. package/dist/types/ui/issue-like-table/column-picker/index.d.ts +1 -1
  28. package/dist/types/ui/issue-like-table/column-picker/messages.d.ts +7 -0
  29. package/dist/types/ui/issue-like-table/column-picker/types.d.ts +2 -0
  30. package/dist/types/ui/issue-like-table/index.d.ts +1 -1
  31. package/dist/types/ui/issue-like-table/types.d.ts +3 -1
  32. package/dist/types-ts4.5/hooks/useDatasourceTableState.d.ts +14 -3
  33. package/dist/types-ts4.5/ui/issue-like-table/column-picker/index.d.ts +1 -1
  34. package/dist/types-ts4.5/ui/issue-like-table/column-picker/messages.d.ts +7 -0
  35. package/dist/types-ts4.5/ui/issue-like-table/column-picker/types.d.ts +2 -0
  36. package/dist/types-ts4.5/ui/issue-like-table/index.d.ts +1 -1
  37. package/dist/types-ts4.5/ui/issue-like-table/types.d.ts +3 -1
  38. package/examples-helpers/buildIssueLikeTable.tsx +11 -3
  39. package/examples-helpers/buildJiraIssuesTable.tsx +7 -2
  40. package/package.json +2 -2
@@ -20,7 +20,11 @@ export var DatasourceTableView = function DatasourceTableView(_ref) {
20
20
  parameters = _ref.parameters,
21
21
  visibleColumnKeys = _ref.visibleColumnKeys,
22
22
  onVisibleColumnKeysChange = _ref.onVisibleColumnKeysChange;
23
- var _useDatasourceTableSt = useDatasourceTableState(datasourceId, parameters),
23
+ var _useDatasourceTableSt = useDatasourceTableState({
24
+ datasourceId: datasourceId,
25
+ parameters: parameters,
26
+ fieldKeys: visibleColumnKeys
27
+ }),
24
28
  reset = _useDatasourceTableSt.reset,
25
29
  status = _useDatasourceTableSt.status,
26
30
  onNextPage = _useDatasourceTableSt.onNextPage,
@@ -28,7 +32,8 @@ export var DatasourceTableView = function DatasourceTableView(_ref) {
28
32
  hasNextPage = _useDatasourceTableSt.hasNextPage,
29
33
  columns = _useDatasourceTableSt.columns,
30
34
  defaultVisibleColumnKeys = _useDatasourceTableSt.defaultVisibleColumnKeys,
31
- totalIssueCount = _useDatasourceTableSt.totalIssueCount;
35
+ totalIssueCount = _useDatasourceTableSt.totalIssueCount,
36
+ loadDatasourceDetails = _useDatasourceTableSt.loadDatasourceDetails;
32
37
  useEffect(function () {
33
38
  if (onVisibleColumnKeysChange && (visibleColumnKeys || []).length === 0 && defaultVisibleColumnKeys.length > 0) {
34
39
  onVisibleColumnKeysChange(defaultVisibleColumnKeys);
@@ -41,6 +46,7 @@ export var DatasourceTableView = function DatasourceTableView(_ref) {
41
46
  hasNextPage: hasNextPage,
42
47
  items: responseItems,
43
48
  onNextPage: onNextPage,
49
+ onLoadDatasourceDetails: loadDatasourceDetails,
44
50
  status: status,
45
51
  columns: columns,
46
52
  visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
@@ -6,14 +6,19 @@ var _excluded = ["isOpen"];
6
6
  /** @jsx jsx */
7
7
  import { useCallback, useEffect, useState } from 'react';
8
8
  import { jsx } from '@emotion/react';
9
+ import { useIntl } from 'react-intl-next';
9
10
  import Button from '@atlaskit/button/standard-button';
10
11
  import BoardIcon from '@atlaskit/icon/glyph/board';
11
12
  import ChevronDownIcon from '@atlaskit/icon/glyph/chevron-down';
12
13
  import { CheckboxOption, PopupSelect } from '@atlaskit/select';
14
+ import { columnPickerMessages } from './messages';
13
15
  export var ColumnPicker = function ColumnPicker(_ref) {
14
- var columns = _ref.columns,
16
+ var isDatasourceLoading = _ref.isDatasourceLoading,
17
+ columns = _ref.columns,
15
18
  selectedColumnKeys = _ref.selectedColumnKeys,
16
- onSelectedColumnKeysChange = _ref.onSelectedColumnKeysChange;
19
+ onSelectedColumnKeysChange = _ref.onSelectedColumnKeysChange,
20
+ onOpen = _ref.onOpen;
21
+ var intl = useIntl();
17
22
  var _useState = useState([]),
18
23
  _useState2 = _slicedToArray(_useState, 2),
19
24
  allOptions = _useState2[0],
@@ -54,7 +59,7 @@ export var ColumnPicker = function ColumnPicker(_ref) {
54
59
  });
55
60
  onSelectedColumnKeysChange(selectedValues);
56
61
  }, [columns, onSelectedColumnKeysChange]);
57
- var onPopupOpen = useCallback(function () {
62
+ var sortSelectedColumnsTop = useCallback(function () {
58
63
  if (!allOptions.length) {
59
64
  return;
60
65
  }
@@ -66,6 +71,10 @@ export var ColumnPicker = function ColumnPicker(_ref) {
66
71
  var sortedOptions = [].concat(_toConsumableArray(selectedOptions), _toConsumableArray(nonSelectedOptions));
67
72
  sortedOptions.length > 0 && setAllOptions(sortedOptions);
68
73
  }, [allOptions, selectedOptions]);
74
+ var handleOpen = useCallback(function () {
75
+ onOpen && void onOpen();
76
+ void sortSelectedColumnsTop();
77
+ }, [onOpen, sortSelectedColumnsTop]);
69
78
  return jsx(PopupSelect, {
70
79
  classNamePrefix: 'column-picker-popup',
71
80
  testId: 'column-picker-popup',
@@ -74,14 +83,14 @@ export var ColumnPicker = function ColumnPicker(_ref) {
74
83
  },
75
84
  options: allOptions,
76
85
  value: selectedOptions,
77
- onOpen: onPopupOpen,
86
+ onOpen: handleOpen,
78
87
  closeMenuOnSelect: false,
79
88
  hideSelectedOptions: false,
80
89
  isMulti: true,
81
- placeholder: "Search for fields" // TODO Translate
82
- ,
90
+ placeholder: intl.formatMessage(columnPickerMessages.search),
83
91
  "aria-label": "Search for fields",
84
92
  onChange: handleChange,
93
+ isLoading: allOptions.length === 0,
85
94
  target: function target(_ref8) {
86
95
  var isOpen = _ref8.isOpen,
87
96
  triggerProps = _objectWithoutProperties(_ref8, _excluded);
@@ -96,7 +105,8 @@ export var ColumnPicker = function ColumnPicker(_ref) {
96
105
  })),
97
106
  spacing: "compact",
98
107
  appearance: "subtle",
99
- testId: "column-picker-trigger-button"
108
+ testId: "column-picker-trigger-button",
109
+ isDisabled: isDatasourceLoading
100
110
  }));
101
111
  }
102
112
  });
@@ -0,0 +1,8 @@
1
+ import { defineMessages } from 'react-intl-next';
2
+ export var columnPickerMessages = defineMessages({
3
+ search: {
4
+ id: 'linkDataSource.column-picker.search',
5
+ description: 'Search bar message to look for more fields',
6
+ defaultMessage: 'Search for fields'
7
+ }
8
+ });
@@ -1,6 +1,8 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
1
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
3
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
4
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
5
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
4
6
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5
7
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
8
  /** @jsx jsx */
@@ -81,12 +83,13 @@ function getColumnWidth(key, type) {
81
83
  case 'string':
82
84
  return BASE_WIDTH * 22;
83
85
  default:
84
- undefined;
86
+ return undefined;
85
87
  }
86
88
  }
87
89
  export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
88
90
  var testId = _ref2.testId,
89
91
  onNextPage = _ref2.onNextPage,
92
+ onLoadDatasourceDetails = _ref2.onLoadDatasourceDetails,
90
93
  items = _ref2.items,
91
94
  columns = _ref2.columns,
92
95
  _ref2$renderItem = _ref2.renderItem,
@@ -106,14 +109,21 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
106
109
  _useState4 = _slicedToArray(_useState3, 2),
107
110
  isDragPreview = _useState4[0],
108
111
  setIsDragPreview = _useState4[1];
112
+ var _useState5 = useState(false),
113
+ _useState6 = _slicedToArray(_useState5, 2),
114
+ hasFullSchema = _useState6[0],
115
+ setHasFullSchema = _useState6[1];
109
116
  var isBottomOfTableVisibleRaw = useIsOnScreen(lastRowElement);
110
117
  var containerRef = useRef(null);
111
- var _useState5 = useState(function () {
118
+ var _useState7 = useState(function () {
112
119
  return orderColumns(_toConsumableArray(columns), _toConsumableArray(visibleColumnKeys));
113
120
  }),
114
- _useState6 = _slicedToArray(_useState5, 2),
115
- orderedColumns = _useState6[0],
116
- setOrderedColumns = _useState6[1];
121
+ _useState8 = _slicedToArray(_useState7, 2),
122
+ orderedColumns = _useState8[0],
123
+ setOrderedColumns = _useState8[1];
124
+ useEffect(function () {
125
+ setOrderedColumns(orderColumns(_toConsumableArray(columns), _toConsumableArray(visibleColumnKeys)));
126
+ }, [columns, visibleColumnKeys]);
117
127
  var visibleSortedColumns = useMemo(function () {
118
128
  return visibleColumnKeys.map(function (visibleKey) {
119
129
  return orderedColumns.find(function (_ref3) {
@@ -123,7 +133,7 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
123
133
  }).filter(Boolean);
124
134
  }, [orderedColumns, visibleColumnKeys]);
125
135
 
126
- // TODO seems like this component can't handle some combination of incremental data retreaval.
136
+ // TODO seems like this component can't handle some combination of incremental data retrieval.
127
137
  // If data comes first, then columns and then visibleColumnKeys it blows up,
128
138
  // or some other combination.
129
139
 
@@ -157,8 +167,10 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
157
167
  };
158
168
  });
159
169
  useEffect(function () {
160
- if (status === 'empty' || isBottomOfTableVisibleRaw && hasNextPage && status !== 'loading') {
161
- void onNextPage();
170
+ if (isBottomOfTableVisibleRaw && hasNextPage && status === 'resolved') {
171
+ void onNextPage({
172
+ isSchemaFromData: false
173
+ });
162
174
  }
163
175
  }, [isBottomOfTableVisibleRaw, status, hasNextPage, onNextPage]);
164
176
  var dndPreviewHeight = 0;
@@ -264,6 +276,33 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
264
276
  var onSelectedColumnKeysChange = useCallback(function (newSelectedColumnKeys) {
265
277
  onVisibleColumnKeysChange === null || onVisibleColumnKeysChange === void 0 ? void 0 : onVisibleColumnKeysChange(newSelectedColumnKeys);
266
278
  }, [onVisibleColumnKeysChange]);
279
+ var handlePickerOpen = useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
280
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
281
+ while (1) switch (_context.prev = _context.next) {
282
+ case 0:
283
+ if (!hasFullSchema) {
284
+ _context.next = 2;
285
+ break;
286
+ }
287
+ return _context.abrupt("return");
288
+ case 2:
289
+ _context.prev = 2;
290
+ _context.next = 5;
291
+ return onLoadDatasourceDetails();
292
+ case 5:
293
+ setHasFullSchema(true);
294
+ _context.next = 11;
295
+ break;
296
+ case 8:
297
+ _context.prev = 8;
298
+ _context.t0 = _context["catch"](2);
299
+ setHasFullSchema(false);
300
+ case 11:
301
+ case "end":
302
+ return _context.stop();
303
+ }
304
+ }, _callee, null, [[2, 8]]);
305
+ })), [hasFullSchema, onLoadDatasourceDetails]);
267
306
  return jsx("div", {
268
307
  ref: containerRef,
269
308
  css: isDragPreview ? containerDragPreviewStyles : null
@@ -273,16 +312,16 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
273
312
  }, jsx("thead", {
274
313
  "data-testid": testId && "".concat(testId, "--head"),
275
314
  css: tableHeadStyles
276
- }, jsx("tr", null, headColumns.map(function (_ref10, cellIndex) {
277
- var key = _ref10.key,
278
- content = _ref10.content,
279
- maxWidth = _ref10.maxWidth;
315
+ }, jsx("tr", null, headColumns.map(function (_ref11, cellIndex) {
316
+ var key = _ref11.key,
317
+ content = _ref11.content,
318
+ maxWidth = _ref11.maxWidth;
280
319
  var TruncatedContent = function TruncatedContent() {
281
320
  return jsx("div", {
282
321
  css: truncatedCellStyles
283
322
  }, content);
284
323
  };
285
- if (onVisibleColumnKeysChange) {
324
+ if (onVisibleColumnKeysChange && status !== 'loading') {
286
325
  return jsx(DraggableTableHeading, {
287
326
  tableId: tableId,
288
327
  key: key,
@@ -305,23 +344,25 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
305
344
  }), onVisibleColumnKeysChange && jsx("th", {
306
345
  css: columnPickerHeaderStyles
307
346
  }, jsx(ColumnPicker, {
308
- columns: orderedColumns,
309
- selectedColumnKeys: visibleColumnKeys,
310
- onSelectedColumnKeysChange: onSelectedColumnKeysChange
347
+ columns: hasFullSchema ? orderedColumns : [],
348
+ selectedColumnKeys: hasFullSchema ? visibleColumnKeys : [],
349
+ isDatasourceLoading: status === 'loading',
350
+ onSelectedColumnKeysChange: onSelectedColumnKeysChange,
351
+ onOpen: handlePickerOpen
311
352
  })))), jsx("tbody", {
312
353
  "data-testid": testId && "".concat(testId, "--body")
313
- }, rows.map(function (_ref11) {
314
- var key = _ref11.key,
315
- cells = _ref11.cells,
316
- ref = _ref11.ref;
354
+ }, rows.map(function (_ref12) {
355
+ var key = _ref12.key,
356
+ cells = _ref12.cells,
357
+ ref = _ref12.ref;
317
358
  return jsx("tr", {
318
359
  key: key,
319
360
  "data-testid": testId && "".concat(testId, "--row-").concat(key),
320
361
  ref: ref
321
- }, cells.map(function (_ref12, cellIndex) {
322
- var key = _ref12.key,
323
- content = _ref12.content,
324
- maxWidth = _ref12.maxWidth;
362
+ }, cells.map(function (_ref13, cellIndex) {
363
+ var key = _ref13.key,
364
+ content = _ref13.content,
365
+ maxWidth = _ref13.maxWidth;
325
366
  return jsx("td", {
326
367
  key: key,
327
368
  "data-testid": testId && "".concat(testId, "--cell-").concat(cellIndex),
@@ -1,5 +1,5 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
2
  var _templateObject, _templateObject2;
3
3
  import styled from '@emotion/styled';
4
- export var Table = styled.table(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: auto;\n"])));
4
+ export var Table = styled.table(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: 100%;\n"])));
5
5
  export var TableHeading = styled.th(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n position: relative;\n padding-block: ", ";\n line-height: ", ";\n"])), "var(--ds-space-100, 8px)", "var(--ds-font-lineHeight-300, 24px)");
@@ -61,18 +61,23 @@ export var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
61
61
  jql: jql || ''
62
62
  } : undefined;
63
63
  }, [cloudId, jql]);
64
- var _useDatasourceTableSt = useDatasourceTableState(datasourceId, parameters),
64
+ var _useState9 = useState(initialVisibleColumnKeys),
65
+ _useState10 = _slicedToArray(_useState9, 2),
66
+ visibleColumnKeys = _useState10[0],
67
+ setVisibleColumnKeys = _useState10[1];
68
+ var _useDatasourceTableSt = useDatasourceTableState({
69
+ datasourceId: datasourceId,
70
+ parameters: isParametersSet ? parameters : undefined,
71
+ fieldKeys: visibleColumnKeys
72
+ }),
65
73
  reset = _useDatasourceTableSt.reset,
66
74
  status = _useDatasourceTableSt.status,
67
75
  onNextPage = _useDatasourceTableSt.onNextPage,
68
76
  responseItems = _useDatasourceTableSt.responseItems,
69
77
  hasNextPage = _useDatasourceTableSt.hasNextPage,
70
78
  columns = _useDatasourceTableSt.columns,
71
- defaultVisibleColumnKeys = _useDatasourceTableSt.defaultVisibleColumnKeys;
72
- var _useState9 = useState(initialVisibleColumnKeys || defaultVisibleColumnKeys),
73
- _useState10 = _slicedToArray(_useState9, 2),
74
- visibleColumnKeys = _useState10[0],
75
- setVisibleColumnKeys = _useState10[1];
79
+ defaultVisibleColumnKeys = _useDatasourceTableSt.defaultVisibleColumnKeys,
80
+ loadDatasourceDetails = _useDatasourceTableSt.loadDatasourceDetails;
76
81
  useEffect(function () {
77
82
  var newVisibleColumnKeys = !initialVisibleColumnKeys || (initialVisibleColumnKeys || []).length === 0 ? defaultVisibleColumnKeys : initialVisibleColumnKeys;
78
83
  setVisibleColumnKeys(newVisibleColumnKeys);
@@ -172,11 +177,6 @@ export var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
172
177
  var handleViewModeChange = function handleViewModeChange(selectedMode) {
173
178
  setCurrentViewMode(selectedMode);
174
179
  };
175
- useEffect(function () {
176
- if (status === 'empty' && isParametersSet) {
177
- void onNextPage();
178
- }
179
- }, [status, isParametersSet, onNextPage, reset]);
180
180
  var issueLikeDataTableView = useMemo(function () {
181
181
  return jsx(IssueLikeDataTableView, {
182
182
  testId: "jira-jql-datasource-table",
@@ -186,9 +186,10 @@ export var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
186
186
  hasNextPage: hasNextPage,
187
187
  visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
188
188
  onNextPage: onNextPage,
189
+ onLoadDatasourceDetails: loadDatasourceDetails,
189
190
  onVisibleColumnKeysChange: setVisibleColumnKeys
190
191
  });
191
- }, [columns, defaultVisibleColumnKeys, hasNextPage, onNextPage, responseItems, status, visibleColumnKeys]);
192
+ }, [columns, defaultVisibleColumnKeys, hasNextPage, loadDatasourceDetails, onNextPage, responseItems, status, visibleColumnKeys]);
192
193
  var renderCountModeContent = useCallback(function () {
193
194
  var url = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
194
195
  if (status === 'empty' || !jql || !url) {
@@ -257,7 +258,7 @@ export var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
257
258
  }, jsx(FormattedMessage, modalMessages.cancelButtonText)), jsx(Button, {
258
259
  appearance: "primary",
259
260
  onClick: onInsertPressed,
260
- isDisabled: !isParametersSet,
261
+ isDisabled: !isParametersSet || status === 'loading',
261
262
  testId: 'jira-jql-datasource-modal--insert-button'
262
263
  }, jsx(FormattedMessage, modalMessages.insertIssuesButtonText))))));
263
264
  };
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/link-datasource",
3
- "version": "0.19.1",
3
+ "version": "0.21.0",
4
4
  "sideEffects": false
5
5
  }
@@ -1,12 +1,23 @@
1
- import { DatasourceDataResponseItem, DatasourceResponseSchemaProperty, DatasourceTableStatusType } from '@atlaskit/linking-types';
1
+ import { DatasourceDataResponseItem, DatasourceParameters, DatasourceResponseSchemaProperty, DatasourceTableStatusType } from '@atlaskit/linking-types';
2
+ export interface onNextPageProps {
3
+ isSchemaFromData?: boolean;
4
+ shouldRequestFirstPage?: boolean;
5
+ }
6
+ export type NextPageType = (requestInfo?: onNextPageProps) => void;
2
7
  export interface DatasourceTableState {
3
8
  status: DatasourceTableStatusType;
4
- onNextPage: () => void;
9
+ onNextPage: NextPageType;
5
10
  reset: () => void;
11
+ loadDatasourceDetails: () => void;
6
12
  responseItems: DatasourceDataResponseItem[];
7
13
  hasNextPage: boolean;
8
14
  columns: DatasourceResponseSchemaProperty[];
9
15
  defaultVisibleColumnKeys: string[];
10
16
  totalIssueCount?: number;
11
17
  }
12
- export declare const useDatasourceTableState: (datasourceId: string, parameters?: object, fields?: string[]) => DatasourceTableState;
18
+ export interface DatasourceTableStateProps {
19
+ datasourceId: string;
20
+ parameters?: DatasourceParameters;
21
+ fieldKeys?: string[];
22
+ }
23
+ export declare const useDatasourceTableState: ({ datasourceId, parameters, fieldKeys, }: DatasourceTableStateProps) => DatasourceTableState;
@@ -1,3 +1,3 @@
1
1
  import { jsx } from '@emotion/react';
2
2
  import { ColumnPickerProps } from './types';
3
- export declare const ColumnPicker: ({ columns, selectedColumnKeys, onSelectedColumnKeysChange, }: ColumnPickerProps) => jsx.JSX.Element;
3
+ export declare const ColumnPicker: ({ isDatasourceLoading, columns, selectedColumnKeys, onSelectedColumnKeysChange, onOpen, }: ColumnPickerProps) => jsx.JSX.Element;
@@ -0,0 +1,7 @@
1
+ export declare const columnPickerMessages: {
2
+ search: {
3
+ id: string;
4
+ description: string;
5
+ defaultMessage: string;
6
+ };
7
+ };
@@ -1,6 +1,8 @@
1
1
  import { DatasourceResponseSchemaProperty } from '@atlaskit/linking-types';
2
2
  export type ColumnPickerProps = {
3
+ isDatasourceLoading: boolean;
3
4
  columns: DatasourceResponseSchemaProperty[];
4
5
  selectedColumnKeys: string[];
5
6
  onSelectedColumnKeysChange: (selectedColumnKeys: string[]) => void;
7
+ onOpen?: () => void;
6
8
  };
@@ -12,5 +12,5 @@ export interface RowCellType {
12
12
  content?: React.ReactNode | string;
13
13
  maxWidth?: number;
14
14
  }
15
- export declare const IssueLikeDataTableView: ({ testId, onNextPage, items, columns, renderItem, visibleColumnKeys, onVisibleColumnKeysChange, status, hasNextPage, }: IssueLikeDataTableViewProps) => jsx.JSX.Element;
15
+ export declare const IssueLikeDataTableView: ({ testId, onNextPage, onLoadDatasourceDetails, items, columns, renderItem, visibleColumnKeys, onVisibleColumnKeysChange, status, hasNextPage, }: IssueLikeDataTableViewProps) => jsx.JSX.Element;
16
16
  export declare const EmptyState: (props: import("./empty-state").Props) => jsx.JSX.Element;
@@ -1,5 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { DatasourceDataResponseItem, DatasourceResponseSchemaProperty, DatasourceTableStatusType, DatasourceType } from '@atlaskit/linking-types';
3
+ import { NextPageType } from '../../hooks/useDatasourceTableState';
3
4
  export type TableViewPropsRenderType = (item: DatasourceType) => React.ReactNode;
4
5
  export interface IssueLikeDataTableViewProps {
5
6
  testId?: string;
@@ -16,7 +17,8 @@ export interface IssueLikeDataTableViewProps {
16
17
  hasNextPage: boolean;
17
18
  status: DatasourceTableStatusType;
18
19
  items: DatasourceDataResponseItem[];
19
- onNextPage: () => void;
20
+ onNextPage: NextPageType;
21
+ onLoadDatasourceDetails: () => void;
20
22
  /**
21
23
  * A function to define new or override existing render components.
22
24
  * eg:
@@ -1,12 +1,23 @@
1
- import { DatasourceDataResponseItem, DatasourceResponseSchemaProperty, DatasourceTableStatusType } from '@atlaskit/linking-types';
1
+ import { DatasourceDataResponseItem, DatasourceParameters, DatasourceResponseSchemaProperty, DatasourceTableStatusType } from '@atlaskit/linking-types';
2
+ export interface onNextPageProps {
3
+ isSchemaFromData?: boolean;
4
+ shouldRequestFirstPage?: boolean;
5
+ }
6
+ export type NextPageType = (requestInfo?: onNextPageProps) => void;
2
7
  export interface DatasourceTableState {
3
8
  status: DatasourceTableStatusType;
4
- onNextPage: () => void;
9
+ onNextPage: NextPageType;
5
10
  reset: () => void;
11
+ loadDatasourceDetails: () => void;
6
12
  responseItems: DatasourceDataResponseItem[];
7
13
  hasNextPage: boolean;
8
14
  columns: DatasourceResponseSchemaProperty[];
9
15
  defaultVisibleColumnKeys: string[];
10
16
  totalIssueCount?: number;
11
17
  }
12
- export declare const useDatasourceTableState: (datasourceId: string, parameters?: object, fields?: string[]) => DatasourceTableState;
18
+ export interface DatasourceTableStateProps {
19
+ datasourceId: string;
20
+ parameters?: DatasourceParameters;
21
+ fieldKeys?: string[];
22
+ }
23
+ export declare const useDatasourceTableState: ({ datasourceId, parameters, fieldKeys, }: DatasourceTableStateProps) => DatasourceTableState;
@@ -1,3 +1,3 @@
1
1
  import { jsx } from '@emotion/react';
2
2
  import { ColumnPickerProps } from './types';
3
- export declare const ColumnPicker: ({ columns, selectedColumnKeys, onSelectedColumnKeysChange, }: ColumnPickerProps) => jsx.JSX.Element;
3
+ export declare const ColumnPicker: ({ isDatasourceLoading, columns, selectedColumnKeys, onSelectedColumnKeysChange, onOpen, }: ColumnPickerProps) => jsx.JSX.Element;
@@ -0,0 +1,7 @@
1
+ export declare const columnPickerMessages: {
2
+ search: {
3
+ id: string;
4
+ description: string;
5
+ defaultMessage: string;
6
+ };
7
+ };
@@ -1,6 +1,8 @@
1
1
  import { DatasourceResponseSchemaProperty } from '@atlaskit/linking-types';
2
2
  export type ColumnPickerProps = {
3
+ isDatasourceLoading: boolean;
3
4
  columns: DatasourceResponseSchemaProperty[];
4
5
  selectedColumnKeys: string[];
5
6
  onSelectedColumnKeysChange: (selectedColumnKeys: string[]) => void;
7
+ onOpen?: () => void;
6
8
  };
@@ -12,5 +12,5 @@ export interface RowCellType {
12
12
  content?: React.ReactNode | string;
13
13
  maxWidth?: number;
14
14
  }
15
- export declare const IssueLikeDataTableView: ({ testId, onNextPage, items, columns, renderItem, visibleColumnKeys, onVisibleColumnKeysChange, status, hasNextPage, }: IssueLikeDataTableViewProps) => jsx.JSX.Element;
15
+ export declare const IssueLikeDataTableView: ({ testId, onNextPage, onLoadDatasourceDetails, items, columns, renderItem, visibleColumnKeys, onVisibleColumnKeysChange, status, hasNextPage, }: IssueLikeDataTableViewProps) => jsx.JSX.Element;
16
16
  export declare const EmptyState: (props: import("./empty-state").Props) => jsx.JSX.Element;
@@ -1,5 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { DatasourceDataResponseItem, DatasourceResponseSchemaProperty, DatasourceTableStatusType, DatasourceType } from '@atlaskit/linking-types';
3
+ import { NextPageType } from '../../hooks/useDatasourceTableState';
3
4
  export type TableViewPropsRenderType = (item: DatasourceType) => React.ReactNode;
4
5
  export interface IssueLikeDataTableViewProps {
5
6
  testId?: string;
@@ -16,7 +17,8 @@ export interface IssueLikeDataTableViewProps {
16
17
  hasNextPage: boolean;
17
18
  status: DatasourceTableStatusType;
18
19
  items: DatasourceDataResponseItem[];
19
- onNextPage: () => void;
20
+ onNextPage: NextPageType;
21
+ onLoadDatasourceDetails: () => void;
20
22
  /**
21
23
  * A function to define new or override existing render components.
22
24
  * eg:
@@ -6,7 +6,10 @@ import styled from '@emotion/styled';
6
6
  import { IntlProvider } from 'react-intl-next';
7
7
 
8
8
  import { SmartCardProvider } from '@atlaskit/link-provider';
9
- import { mockDatasourceFetchRequests } from '@atlaskit/link-test-helpers/datasource';
9
+ import {
10
+ initialVisibleColumnKeys,
11
+ mockDatasourceFetchRequests,
12
+ } from '@atlaskit/link-test-helpers/datasource';
10
13
 
11
14
  import { useDatasourceTableState } from '../src/hooks/useDatasourceTableState';
12
15
  import { IssueLikeDataTableView } from '../src/ui/issue-like-table';
@@ -44,10 +47,14 @@ const ExampleBody = ({ isReadonly }: Props) => {
44
47
  hasNextPage,
45
48
  defaultVisibleColumnKeys,
46
49
  columns,
47
- } = useDatasourceTableState('some-datasource-id', parameters);
50
+ loadDatasourceDetails,
51
+ } = useDatasourceTableState({
52
+ datasourceId: 'some-datasource-id',
53
+ parameters,
54
+ });
48
55
 
49
56
  const [visibleColumnKeys, setVisibleColumnKeys] = useState<string[]>(
50
- defaultVisibleColumnKeys,
57
+ initialVisibleColumnKeys,
51
58
  );
52
59
 
53
60
  useEffect(() => {
@@ -63,6 +70,7 @@ const ExampleBody = ({ isReadonly }: Props) => {
63
70
  testId="link-datasource"
64
71
  items={responseItems}
65
72
  onNextPage={onNextPage}
73
+ onLoadDatasourceDetails={loadDatasourceDetails}
66
74
  hasNextPage={hasNextPage}
67
75
  status={status}
68
76
  columns={columns}
@@ -1,6 +1,9 @@
1
1
  import React, { useMemo, useState } from 'react';
2
2
 
3
- import { mockDatasourceFetchRequests } from '@atlaskit/link-test-helpers/datasource';
3
+ import {
4
+ initialVisibleColumnKeys,
5
+ mockDatasourceFetchRequests,
6
+ } from '@atlaskit/link-test-helpers/datasource';
4
7
 
5
8
  import { DatasourceTableView } from '../src';
6
9
  import { JiraIssueDatasourceParameters } from '../src/ui/jira-issues-modal/types';
@@ -10,7 +13,9 @@ mockDatasourceFetchRequests();
10
13
  export const ExampleJiraIssuesTableView = () => {
11
14
  const cloudId = 'some-cloud-id';
12
15
 
13
- const [visibleColumnKeys, setVisibleColumnKeys] = useState<string[]>([]);
16
+ const [visibleColumnKeys, setVisibleColumnKeys] = useState<string[]>(
17
+ initialVisibleColumnKeys,
18
+ );
14
19
 
15
20
  const parameters = useMemo<JiraIssueDatasourceParameters>(
16
21
  () => ({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/link-datasource",
3
- "version": "0.19.1",
3
+ "version": "0.21.0",
4
4
  "description": "UI Components to support linking platform dataset feature",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -34,7 +34,7 @@
34
34
  "@atlaskit/icon": "^21.12.0",
35
35
  "@atlaskit/icon-object": "^6.3.0",
36
36
  "@atlaskit/image": "^1.1.0",
37
- "@atlaskit/link-client-extension": "^1.1.0",
37
+ "@atlaskit/link-client-extension": "^1.2.0",
38
38
  "@atlaskit/linking-common": "^2.14.0",
39
39
  "@atlaskit/linking-types": "^5.0.0",
40
40
  "@atlaskit/lozenge": "^11.4.0",