@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
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @atlaskit/link-datasource
|
|
2
2
|
|
|
3
|
+
## 0.21.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`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
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies
|
|
12
|
+
|
|
13
|
+
## 0.20.0
|
|
14
|
+
|
|
15
|
+
### Minor Changes
|
|
16
|
+
|
|
17
|
+
- [`0407e628d5b`](https://bitbucket.org/atlassian/atlassian-frontend/commits/0407e628d5b) - [ux] Fix some table bugs
|
|
18
|
+
|
|
3
19
|
## 0.19.1
|
|
4
20
|
|
|
5
21
|
### Patch 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(
|
|
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)(
|
|
23
|
+
var _useState3 = (0, _react.useState)([]),
|
|
20
24
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
var _useState7 = (0, _react.useState)(
|
|
29
|
+
status = _useState6[0],
|
|
30
|
+
setStatus = _useState6[1];
|
|
31
|
+
var _useState7 = (0, _react.useState)([]),
|
|
28
32
|
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
var _useState9 = (0, _react.useState)(
|
|
33
|
+
responseItems = _useState8[0],
|
|
34
|
+
setResponseItems = _useState8[1];
|
|
35
|
+
var _useState9 = (0, _react.useState)(true),
|
|
32
36
|
_useState10 = (0, _slicedToArray2.default)(_useState9, 2),
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
var _useState13 = (0, _react.useState)(
|
|
41
|
+
nextCursor = _useState12[0],
|
|
42
|
+
setNextCursor = _useState12[1];
|
|
43
|
+
var _useState13 = (0, _react.useState)([]),
|
|
40
44
|
_useState14 = (0, _slicedToArray2.default)(_useState13, 2),
|
|
41
|
-
|
|
42
|
-
|
|
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
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
-
|
|
54
|
-
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
}, [
|
|
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
|
|
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 =
|
|
119
|
+
_context2.next = 3;
|
|
82
120
|
break;
|
|
83
121
|
}
|
|
84
122
|
return _context2.abrupt("return");
|
|
85
|
-
case
|
|
86
|
-
|
|
87
|
-
|
|
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
|
-
pageSize:
|
|
91
|
-
pageCursor: nextCursor,
|
|
92
|
-
fields:
|
|
93
|
-
|
|
94
|
-
|
|
127
|
+
pageSize: 20,
|
|
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
|
-
|
|
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,
|
|
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)(
|
|
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,
|
|
@@ -11,16 +11,21 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
|
|
|
11
11
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
12
|
var _react = require("react");
|
|
13
13
|
var _react2 = require("@emotion/react");
|
|
14
|
+
var _reactIntlNext = require("react-intl-next");
|
|
14
15
|
var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
|
|
15
16
|
var _board = _interopRequireDefault(require("@atlaskit/icon/glyph/board"));
|
|
16
17
|
var _chevronDown = _interopRequireDefault(require("@atlaskit/icon/glyph/chevron-down"));
|
|
17
18
|
var _select = require("@atlaskit/select");
|
|
19
|
+
var _messages = require("./messages");
|
|
18
20
|
var _excluded = ["isOpen"];
|
|
19
21
|
/** @jsx jsx */
|
|
20
22
|
var ColumnPicker = function ColumnPicker(_ref) {
|
|
21
|
-
var
|
|
23
|
+
var isDatasourceLoading = _ref.isDatasourceLoading,
|
|
24
|
+
columns = _ref.columns,
|
|
22
25
|
selectedColumnKeys = _ref.selectedColumnKeys,
|
|
23
|
-
onSelectedColumnKeysChange = _ref.onSelectedColumnKeysChange
|
|
26
|
+
onSelectedColumnKeysChange = _ref.onSelectedColumnKeysChange,
|
|
27
|
+
onOpen = _ref.onOpen;
|
|
28
|
+
var intl = (0, _reactIntlNext.useIntl)();
|
|
24
29
|
var _useState = (0, _react.useState)([]),
|
|
25
30
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
26
31
|
allOptions = _useState2[0],
|
|
@@ -61,7 +66,7 @@ var ColumnPicker = function ColumnPicker(_ref) {
|
|
|
61
66
|
});
|
|
62
67
|
onSelectedColumnKeysChange(selectedValues);
|
|
63
68
|
}, [columns, onSelectedColumnKeysChange]);
|
|
64
|
-
var
|
|
69
|
+
var sortSelectedColumnsTop = (0, _react.useCallback)(function () {
|
|
65
70
|
if (!allOptions.length) {
|
|
66
71
|
return;
|
|
67
72
|
}
|
|
@@ -73,6 +78,10 @@ var ColumnPicker = function ColumnPicker(_ref) {
|
|
|
73
78
|
var sortedOptions = [].concat((0, _toConsumableArray2.default)(selectedOptions), (0, _toConsumableArray2.default)(nonSelectedOptions));
|
|
74
79
|
sortedOptions.length > 0 && setAllOptions(sortedOptions);
|
|
75
80
|
}, [allOptions, selectedOptions]);
|
|
81
|
+
var handleOpen = (0, _react.useCallback)(function () {
|
|
82
|
+
onOpen && void onOpen();
|
|
83
|
+
void sortSelectedColumnsTop();
|
|
84
|
+
}, [onOpen, sortSelectedColumnsTop]);
|
|
76
85
|
return (0, _react2.jsx)(_select.PopupSelect, {
|
|
77
86
|
classNamePrefix: 'column-picker-popup',
|
|
78
87
|
testId: 'column-picker-popup',
|
|
@@ -81,14 +90,14 @@ var ColumnPicker = function ColumnPicker(_ref) {
|
|
|
81
90
|
},
|
|
82
91
|
options: allOptions,
|
|
83
92
|
value: selectedOptions,
|
|
84
|
-
onOpen:
|
|
93
|
+
onOpen: handleOpen,
|
|
85
94
|
closeMenuOnSelect: false,
|
|
86
95
|
hideSelectedOptions: false,
|
|
87
96
|
isMulti: true,
|
|
88
|
-
placeholder:
|
|
89
|
-
,
|
|
97
|
+
placeholder: intl.formatMessage(_messages.columnPickerMessages.search),
|
|
90
98
|
"aria-label": "Search for fields",
|
|
91
99
|
onChange: handleChange,
|
|
100
|
+
isLoading: allOptions.length === 0,
|
|
92
101
|
target: function target(_ref8) {
|
|
93
102
|
var isOpen = _ref8.isOpen,
|
|
94
103
|
triggerProps = (0, _objectWithoutProperties2.default)(_ref8, _excluded);
|
|
@@ -103,7 +112,8 @@ var ColumnPicker = function ColumnPicker(_ref) {
|
|
|
103
112
|
})),
|
|
104
113
|
spacing: "compact",
|
|
105
114
|
appearance: "subtle",
|
|
106
|
-
testId: "column-picker-trigger-button"
|
|
115
|
+
testId: "column-picker-trigger-button",
|
|
116
|
+
isDisabled: isDatasourceLoading
|
|
107
117
|
}));
|
|
108
118
|
}
|
|
109
119
|
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.columnPickerMessages = void 0;
|
|
7
|
+
var _reactIntlNext = require("react-intl-next");
|
|
8
|
+
var columnPickerMessages = (0, _reactIntlNext.defineMessages)({
|
|
9
|
+
search: {
|
|
10
|
+
id: 'linkDataSource.column-picker.search',
|
|
11
|
+
description: 'Search bar message to look for more fields',
|
|
12
|
+
defaultMessage: 'Search for fields'
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
exports.columnPickerMessages = columnPickerMessages;
|
|
@@ -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"));
|
|
@@ -87,12 +89,13 @@ function getColumnWidth(key, type) {
|
|
|
87
89
|
case 'string':
|
|
88
90
|
return BASE_WIDTH * 22;
|
|
89
91
|
default:
|
|
90
|
-
undefined;
|
|
92
|
+
return undefined;
|
|
91
93
|
}
|
|
92
94
|
}
|
|
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
|
|
124
|
+
var _useState7 = (0, _react.useState)(function () {
|
|
118
125
|
return orderColumns((0, _toConsumableArray2.default)(columns), (0, _toConsumableArray2.default)(visibleColumnKeys));
|
|
119
126
|
}),
|
|
120
|
-
|
|
121
|
-
orderedColumns =
|
|
122
|
-
setOrderedColumns =
|
|
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) {
|
|
@@ -129,7 +139,7 @@ var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
|
|
|
129
139
|
}).filter(Boolean);
|
|
130
140
|
}, [orderedColumns, visibleColumnKeys]);
|
|
131
141
|
|
|
132
|
-
// TODO seems like this component can't handle some combination of incremental data
|
|
142
|
+
// TODO seems like this component can't handle some combination of incremental data retrieval.
|
|
133
143
|
// If data comes first, then columns and then visibleColumnKeys it blows up,
|
|
134
144
|
// or some other combination.
|
|
135
145
|
|
|
@@ -163,8 +173,10 @@ var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
|
|
|
163
173
|
};
|
|
164
174
|
});
|
|
165
175
|
(0, _react.useEffect)(function () {
|
|
166
|
-
if (
|
|
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,16 +318,16 @@ 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 (
|
|
283
|
-
var key =
|
|
284
|
-
content =
|
|
285
|
-
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
|
|
289
328
|
}, content);
|
|
290
329
|
};
|
|
291
|
-
if (onVisibleColumnKeysChange) {
|
|
330
|
+
if (onVisibleColumnKeysChange && status !== 'loading') {
|
|
292
331
|
return (0, _react2.jsx)(_draggableTableHeading.DraggableTableHeading, {
|
|
293
332
|
tableId: tableId,
|
|
294
333
|
key: key,
|
|
@@ -311,23 +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, {
|
|
314
|
-
columns: orderedColumns,
|
|
315
|
-
selectedColumnKeys: visibleColumnKeys,
|
|
316
|
-
|
|
353
|
+
columns: hasFullSchema ? orderedColumns : [],
|
|
354
|
+
selectedColumnKeys: hasFullSchema ? visibleColumnKeys : [],
|
|
355
|
+
isDatasourceLoading: status === 'loading',
|
|
356
|
+
onSelectedColumnKeysChange: onSelectedColumnKeysChange,
|
|
357
|
+
onOpen: handlePickerOpen
|
|
317
358
|
})))), (0, _react2.jsx)("tbody", {
|
|
318
359
|
"data-testid": testId && "".concat(testId, "--body")
|
|
319
|
-
}, rows.map(function (
|
|
320
|
-
var key =
|
|
321
|
-
cells =
|
|
322
|
-
ref =
|
|
360
|
+
}, rows.map(function (_ref12) {
|
|
361
|
+
var key = _ref12.key,
|
|
362
|
+
cells = _ref12.cells,
|
|
363
|
+
ref = _ref12.ref;
|
|
323
364
|
return (0, _react2.jsx)("tr", {
|
|
324
365
|
key: key,
|
|
325
366
|
"data-testid": testId && "".concat(testId, "--row-").concat(key),
|
|
326
367
|
ref: ref
|
|
327
|
-
}, cells.map(function (
|
|
328
|
-
var key =
|
|
329
|
-
content =
|
|
330
|
-
maxWidth =
|
|
368
|
+
}, cells.map(function (_ref13, cellIndex) {
|
|
369
|
+
var key = _ref13.key,
|
|
370
|
+
content = _ref13.content,
|
|
371
|
+
maxWidth = _ref13.maxWidth;
|
|
331
372
|
return (0, _react2.jsx)("td", {
|
|
332
373
|
key: key,
|
|
333
374
|
"data-testid": testId && "".concat(testId, "--cell-").concat(cellIndex),
|
|
@@ -8,7 +8,7 @@ exports.TableHeading = exports.Table = void 0;
|
|
|
8
8
|
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
9
9
|
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
10
10
|
var _templateObject, _templateObject2;
|
|
11
|
-
var Table = _styled.default.table(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n width:
|
|
11
|
+
var Table = _styled.default.table(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n width: 100%;\n"])));
|
|
12
12
|
exports.Table = Table;
|
|
13
13
|
var TableHeading = _styled.default.th(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n position: relative;\n padding-block: ", ";\n line-height: ", ";\n"])), "var(--ds-space-100, 8px)", "var(--ds-font-lineHeight-300, 24px)");
|
|
14
14
|
exports.TableHeading = TableHeading;
|
|
@@ -72,18 +72,23 @@ var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
|
|
|
72
72
|
jql: jql || ''
|
|
73
73
|
} : undefined;
|
|
74
74
|
}, [cloudId, jql]);
|
|
75
|
-
var
|
|
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
|
-
|
|
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) {
|
|
@@ -268,7 +269,7 @@ var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
|
|
|
268
269
|
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.cancelButtonText)), (0, _react2.jsx)(_standardButton.default, {
|
|
269
270
|
appearance: "primary",
|
|
270
271
|
onClick: onInsertPressed,
|
|
271
|
-
isDisabled: !isParametersSet,
|
|
272
|
+
isDisabled: !isParametersSet || status === 'loading',
|
|
272
273
|
testId: 'jira-jql-datasource-modal--insert-button'
|
|
273
274
|
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.insertIssuesButtonText))))));
|
|
274
275
|
};
|
package/dist/cjs/version.json
CHANGED