@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.
- package/CHANGELOG.md +16 -0
- package/dist/cjs/hooks/useDatasourceTableState.js +138 -58
- package/dist/cjs/ui/datasource-table-view/datasourceTableView.js +8 -2
- package/dist/cjs/ui/issue-like-table/column-picker/index.js +17 -7
- package/dist/cjs/ui/issue-like-table/column-picker/messages.js +15 -0
- package/dist/cjs/ui/issue-like-table/index.js +65 -24
- package/dist/cjs/ui/issue-like-table/styled.js +1 -1
- package/dist/cjs/ui/jira-issues-modal/modal/index.js +14 -13
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/hooks/useDatasourceTableState.js +84 -19
- package/dist/es2019/ui/datasource-table-view/datasourceTableView.js +8 -2
- package/dist/es2019/ui/issue-like-table/column-picker/index.js +16 -6
- package/dist/es2019/ui/issue-like-table/column-picker/messages.js +8 -0
- package/dist/es2019/ui/issue-like-table/index.js +28 -8
- package/dist/es2019/ui/issue-like-table/styled.js +1 -1
- package/dist/es2019/ui/jira-issues-modal/modal/index.js +11 -10
- package/dist/es2019/version.json +1 -1
- package/dist/esm/hooks/useDatasourceTableState.js +138 -58
- package/dist/esm/ui/datasource-table-view/datasourceTableView.js +8 -2
- package/dist/esm/ui/issue-like-table/column-picker/index.js +17 -7
- package/dist/esm/ui/issue-like-table/column-picker/messages.js +8 -0
- package/dist/esm/ui/issue-like-table/index.js +65 -24
- package/dist/esm/ui/issue-like-table/styled.js +1 -1
- package/dist/esm/ui/jira-issues-modal/modal/index.js +14 -13
- package/dist/esm/version.json +1 -1
- package/dist/types/hooks/useDatasourceTableState.d.ts +14 -3
- package/dist/types/ui/issue-like-table/column-picker/index.d.ts +1 -1
- package/dist/types/ui/issue-like-table/column-picker/messages.d.ts +7 -0
- package/dist/types/ui/issue-like-table/column-picker/types.d.ts +2 -0
- package/dist/types/ui/issue-like-table/index.d.ts +1 -1
- package/dist/types/ui/issue-like-table/types.d.ts +3 -1
- package/dist/types-ts4.5/hooks/useDatasourceTableState.d.ts +14 -3
- package/dist/types-ts4.5/ui/issue-like-table/column-picker/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/issue-like-table/column-picker/messages.d.ts +7 -0
- package/dist/types-ts4.5/ui/issue-like-table/column-picker/types.d.ts +2 -0
- package/dist/types-ts4.5/ui/issue-like-table/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/issue-like-table/types.d.ts +3 -1
- package/examples-helpers/buildIssueLikeTable.tsx +11 -3
- package/examples-helpers/buildJiraIssuesTable.tsx +7 -2
- 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(
|
|
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
|
|
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
|
|
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:
|
|
86
|
+
onOpen: handleOpen,
|
|
78
87
|
closeMenuOnSelect: false,
|
|
79
88
|
hideSelectedOptions: false,
|
|
80
89
|
isMulti: true,
|
|
81
|
-
placeholder:
|
|
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
|
|
118
|
+
var _useState7 = useState(function () {
|
|
112
119
|
return orderColumns(_toConsumableArray(columns), _toConsumableArray(visibleColumnKeys));
|
|
113
120
|
}),
|
|
114
|
-
|
|
115
|
-
orderedColumns =
|
|
116
|
-
setOrderedColumns =
|
|
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
|
|
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 (
|
|
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 (
|
|
277
|
-
var key =
|
|
278
|
-
content =
|
|
279
|
-
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
|
-
|
|
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 (
|
|
314
|
-
var key =
|
|
315
|
-
cells =
|
|
316
|
-
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 (
|
|
322
|
-
var key =
|
|
323
|
-
content =
|
|
324
|
-
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:
|
|
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
|
|
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
|
-
|
|
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
|
};
|
package/dist/esm/version.json
CHANGED
|
@@ -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:
|
|
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
|
|
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;
|
|
@@ -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:
|
|
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:
|
|
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
|
|
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;
|
|
@@ -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:
|
|
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 {
|
|
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
|
-
|
|
50
|
+
loadDatasourceDetails,
|
|
51
|
+
} = useDatasourceTableState({
|
|
52
|
+
datasourceId: 'some-datasource-id',
|
|
53
|
+
parameters,
|
|
54
|
+
});
|
|
48
55
|
|
|
49
56
|
const [visibleColumnKeys, setVisibleColumnKeys] = useState<string[]>(
|
|
50
|
-
|
|
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 {
|
|
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.
|
|
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.
|
|
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",
|