@atlaskit/link-datasource 0.21.1 → 0.21.2
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 +7 -0
- package/dist/cjs/hooks/useDatasourceTableState.js +7 -7
- package/dist/cjs/ui/datasource-table-view/datasourceTableView.js +2 -2
- package/dist/cjs/ui/issue-like-table/column-picker/index.js +6 -0
- package/dist/cjs/ui/jira-issues-modal/index.js +0 -2
- package/dist/cjs/ui/jira-issues-modal/jira-search-container/index.js +2 -1
- package/dist/cjs/ui/jira-issues-modal/modal/index.js +18 -3
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/hooks/useDatasourceTableState.js +5 -5
- package/dist/es2019/ui/datasource-table-view/datasourceTableView.js +2 -2
- package/dist/es2019/ui/issue-like-table/column-picker/index.js +6 -0
- package/dist/es2019/ui/jira-issues-modal/index.js +0 -2
- package/dist/es2019/ui/jira-issues-modal/jira-search-container/index.js +2 -1
- package/dist/es2019/ui/jira-issues-modal/modal/index.js +20 -5
- package/dist/es2019/version.json +1 -1
- package/dist/esm/hooks/useDatasourceTableState.js +7 -7
- package/dist/esm/ui/datasource-table-view/datasourceTableView.js +2 -2
- package/dist/esm/ui/issue-like-table/column-picker/index.js +6 -0
- package/dist/esm/ui/jira-issues-modal/index.js +0 -2
- package/dist/esm/ui/jira-issues-modal/jira-search-container/index.js +2 -1
- package/dist/esm/ui/jira-issues-modal/modal/index.js +20 -5
- package/dist/esm/version.json +1 -1
- package/dist/types/hooks/useDatasourceTableState.d.ts +1 -1
- package/dist/types-ts4.5/hooks/useDatasourceTableState.d.ts +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @atlaskit/link-datasource
|
|
2
2
|
|
|
3
|
+
## 0.21.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`105f0c7291b`](https://bitbucket.org/atlassian/atlassian-frontend/commits/105f0c7291b) - [ux] Various bug fixes to jira issue modal
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
|
|
3
10
|
## 0.21.1
|
|
4
11
|
|
|
5
12
|
### Patch Changes
|
|
@@ -46,8 +46,8 @@ var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
46
46
|
setColumns = _useState14[1];
|
|
47
47
|
var _useState15 = (0, _react.useState)(undefined),
|
|
48
48
|
_useState16 = (0, _slicedToArray2.default)(_useState15, 2),
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
totalCount = _useState16[0],
|
|
50
|
+
setTotalCount = _useState16[1];
|
|
51
51
|
var _useDatasourceClientE = (0, _linkClientExtension.useDatasourceClientExtension)(),
|
|
52
52
|
getDatasourceData = _useDatasourceClientE.getDatasourceData,
|
|
53
53
|
getDatasourceDetails = _useDatasourceClientE.getDatasourceDetails;
|
|
@@ -108,7 +108,7 @@ var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
108
108
|
_yield$getDatasourceD,
|
|
109
109
|
data,
|
|
110
110
|
nextPageCursor,
|
|
111
|
-
|
|
111
|
+
totalCount,
|
|
112
112
|
schema,
|
|
113
113
|
_args2 = arguments;
|
|
114
114
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
@@ -136,9 +136,9 @@ var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
136
136
|
_yield$getDatasourceD = _context2.sent;
|
|
137
137
|
data = _yield$getDatasourceD.data;
|
|
138
138
|
nextPageCursor = _yield$getDatasourceD.nextPageCursor;
|
|
139
|
-
|
|
139
|
+
totalCount = _yield$getDatasourceD.totalCount;
|
|
140
140
|
schema = _yield$getDatasourceD.schema;
|
|
141
|
-
|
|
141
|
+
setTotalCount(totalCount);
|
|
142
142
|
setNextCursor(nextPageCursor);
|
|
143
143
|
setResponseItems(function (currentResponseItems) {
|
|
144
144
|
if (shouldRequestFirstPage) {
|
|
@@ -165,7 +165,7 @@ var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
165
165
|
setResponseItems([]);
|
|
166
166
|
setHasNextPage(true);
|
|
167
167
|
setNextCursor(undefined);
|
|
168
|
-
|
|
168
|
+
setTotalCount(undefined);
|
|
169
169
|
setLastRequestedFieldKeys([]);
|
|
170
170
|
}, []);
|
|
171
171
|
|
|
@@ -204,7 +204,7 @@ var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
204
204
|
hasNextPage: hasNextPage,
|
|
205
205
|
columns: columns,
|
|
206
206
|
defaultVisibleColumnKeys: defaultVisibleColumnKeys,
|
|
207
|
-
|
|
207
|
+
totalCount: totalCount
|
|
208
208
|
};
|
|
209
209
|
};
|
|
210
210
|
exports.useDatasourceTableState = useDatasourceTableState;
|
|
@@ -40,7 +40,7 @@ var DatasourceTableView = function DatasourceTableView(_ref) {
|
|
|
40
40
|
hasNextPage = _useDatasourceTableSt.hasNextPage,
|
|
41
41
|
columns = _useDatasourceTableSt.columns,
|
|
42
42
|
defaultVisibleColumnKeys = _useDatasourceTableSt.defaultVisibleColumnKeys,
|
|
43
|
-
|
|
43
|
+
totalCount = _useDatasourceTableSt.totalCount,
|
|
44
44
|
loadDatasourceDetails = _useDatasourceTableSt.loadDatasourceDetails;
|
|
45
45
|
(0, _react.useEffect)(function () {
|
|
46
46
|
if (onVisibleColumnKeysChange && (visibleColumnKeys || []).length === 0 && defaultVisibleColumnKeys.length > 0) {
|
|
@@ -60,7 +60,7 @@ var DatasourceTableView = function DatasourceTableView(_ref) {
|
|
|
60
60
|
visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
|
|
61
61
|
onVisibleColumnKeysChange: onVisibleColumnKeysChange
|
|
62
62
|
}), (0, _react2.jsx)(_tableFooter.TableFooter, {
|
|
63
|
-
issueCount:
|
|
63
|
+
issueCount: totalCount,
|
|
64
64
|
onRefresh: reset,
|
|
65
65
|
isLoading: status === 'loading'
|
|
66
66
|
})) : (0, _react2.jsx)(_spinner.default, {
|
|
@@ -78,6 +78,11 @@ var ColumnPicker = function ColumnPicker(_ref) {
|
|
|
78
78
|
var sortedOptions = [].concat((0, _toConsumableArray2.default)(selectedOptions), (0, _toConsumableArray2.default)(nonSelectedOptions));
|
|
79
79
|
sortedOptions.length > 0 && setAllOptions(sortedOptions);
|
|
80
80
|
}, [allOptions, selectedOptions]);
|
|
81
|
+
var stopEscapePropagationWhenOpen = function stopEscapePropagationWhenOpen(e) {
|
|
82
|
+
if (e.key === 'Escape') {
|
|
83
|
+
e.stopPropagation();
|
|
84
|
+
}
|
|
85
|
+
};
|
|
81
86
|
var handleOpen = (0, _react.useCallback)(function () {
|
|
82
87
|
onOpen && void onOpen();
|
|
83
88
|
void sortSelectedColumnsTop();
|
|
@@ -95,6 +100,7 @@ var ColumnPicker = function ColumnPicker(_ref) {
|
|
|
95
100
|
hideSelectedOptions: false,
|
|
96
101
|
isMulti: true,
|
|
97
102
|
placeholder: intl.formatMessage(_messages.columnPickerMessages.search),
|
|
103
|
+
onKeyDown: stopEscapePropagationWhenOpen,
|
|
98
104
|
"aria-label": "Search for fields",
|
|
99
105
|
onChange: handleChange,
|
|
100
106
|
isLoading: allOptions.length === 0,
|
|
@@ -20,8 +20,6 @@ var LazyJiraIssuesConfigModal = /*#__PURE__*/(0, _react.lazy)(function () {
|
|
|
20
20
|
};
|
|
21
21
|
});
|
|
22
22
|
});
|
|
23
|
-
|
|
24
|
-
//
|
|
25
23
|
var JiraIssuesConfigModalWithWrappers = function JiraIssuesConfigModalWithWrappers(props) {
|
|
26
24
|
return /*#__PURE__*/_react.default.createElement(_react.Suspense, {
|
|
27
25
|
fallback: /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -25,6 +25,7 @@ var inputContainerStyles = (0, _react2.css)({
|
|
|
25
25
|
gap: "var(--ds-space-250, 20px)",
|
|
26
26
|
minHeight: '60px'
|
|
27
27
|
});
|
|
28
|
+
var DEFAULT_JQL_QUERY = 'created >= -30d order by created DESC';
|
|
28
29
|
var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
29
30
|
var parameters = props.parameters,
|
|
30
31
|
onSearch = props.onSearch;
|
|
@@ -43,7 +44,7 @@ var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
43
44
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
44
45
|
currentSearchMode = _useState4[0],
|
|
45
46
|
setCurrentSearchMode = _useState4[1];
|
|
46
|
-
var _useState5 = (0, _react.useState)(initialJql ||
|
|
47
|
+
var _useState5 = (0, _react.useState)(initialJql || DEFAULT_JQL_QUERY),
|
|
47
48
|
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
48
49
|
jql = _useState6[0],
|
|
49
50
|
setJql = _useState6[1];
|
|
@@ -43,6 +43,11 @@ var placeholderSmartLinkStyles = (0, _react2.css)({
|
|
|
43
43
|
color: "var(--ds-text-brand, ".concat(_colors.B400, ")"),
|
|
44
44
|
padding: '0px 2px'
|
|
45
45
|
});
|
|
46
|
+
var issueCountStyles = (0, _react2.css)({
|
|
47
|
+
color: "var(--ds-text-accent-gray, ".concat(_colors.N800, ")"),
|
|
48
|
+
flex: 1,
|
|
49
|
+
fontWeight: 600
|
|
50
|
+
});
|
|
46
51
|
var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
|
|
47
52
|
var datasourceId = props.datasourceId,
|
|
48
53
|
initialParameters = props.parameters,
|
|
@@ -88,7 +93,8 @@ var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
|
|
|
88
93
|
hasNextPage = _useDatasourceTableSt.hasNextPage,
|
|
89
94
|
columns = _useDatasourceTableSt.columns,
|
|
90
95
|
defaultVisibleColumnKeys = _useDatasourceTableSt.defaultVisibleColumnKeys,
|
|
91
|
-
loadDatasourceDetails = _useDatasourceTableSt.loadDatasourceDetails
|
|
96
|
+
loadDatasourceDetails = _useDatasourceTableSt.loadDatasourceDetails,
|
|
97
|
+
totalCount = _useDatasourceTableSt.totalCount;
|
|
92
98
|
(0, _react.useEffect)(function () {
|
|
93
99
|
var newVisibleColumnKeys = !initialVisibleColumnKeys || (initialVisibleColumnKeys || []).length === 0 ? defaultVisibleColumnKeys : initialVisibleColumnKeys;
|
|
94
100
|
setVisibleColumnKeys(newVisibleColumnKeys);
|
|
@@ -153,7 +159,7 @@ var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
|
|
|
153
159
|
onInsert({
|
|
154
160
|
type: 'inlineCard',
|
|
155
161
|
attrs: {
|
|
156
|
-
url: "".concat(selectedJiraSite.url, "/issues
|
|
162
|
+
url: "".concat(selectedJiraSite.url, "/issues/?jql=").concat(encodeURI(jql))
|
|
157
163
|
}
|
|
158
164
|
});
|
|
159
165
|
} else if (responseItems.length === 1 && firstIssueUrl) {
|
|
@@ -263,7 +269,16 @@ var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
|
|
|
263
269
|
onSearch: onSearch
|
|
264
270
|
}), (0, _react2.jsx)("div", {
|
|
265
271
|
css: contentContainerStyles
|
|
266
|
-
}, currentViewMode === 'count' ? renderCountModeContent() : renderIssuesModeContent())), (0, _react2.jsx)(_modalDialog.ModalFooter, null, (0, _react2.jsx)(
|
|
272
|
+
}, currentViewMode === 'count' ? renderCountModeContent() : renderIssuesModeContent())), (0, _react2.jsx)(_modalDialog.ModalFooter, null, !!totalCount && currentViewMode === 'issue' && (0, _react2.jsx)("div", {
|
|
273
|
+
"data-testid": "jira-jql-datasource-modal-total-issues-count",
|
|
274
|
+
css: issueCountStyles
|
|
275
|
+
}, (0, _react2.jsx)(_reactIntlNext.FormattedNumber, {
|
|
276
|
+
value: totalCount
|
|
277
|
+
}), ' ', (0, _react2.jsx)(_reactIntlNext.FormattedPlural, {
|
|
278
|
+
one: "issue",
|
|
279
|
+
other: "issues",
|
|
280
|
+
value: totalCount
|
|
281
|
+
})), (0, _react2.jsx)(_standardButton.default, {
|
|
267
282
|
appearance: "default",
|
|
268
283
|
onClick: onCancel
|
|
269
284
|
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.cancelButtonText)), (0, _react2.jsx)(_standardButton.default, {
|
package/dist/cjs/version.json
CHANGED
|
@@ -12,7 +12,7 @@ export const useDatasourceTableState = ({
|
|
|
12
12
|
const [hasNextPage, setHasNextPage] = useState(true);
|
|
13
13
|
const [nextCursor, setNextCursor] = useState(undefined);
|
|
14
14
|
const [columns, setColumns] = useState([]);
|
|
15
|
-
const [
|
|
15
|
+
const [totalCount, setTotalCount] = useState(undefined);
|
|
16
16
|
const {
|
|
17
17
|
getDatasourceData,
|
|
18
18
|
getDatasourceDetails
|
|
@@ -63,10 +63,10 @@ export const useDatasourceTableState = ({
|
|
|
63
63
|
const {
|
|
64
64
|
data,
|
|
65
65
|
nextPageCursor,
|
|
66
|
-
|
|
66
|
+
totalCount,
|
|
67
67
|
schema
|
|
68
68
|
} = await getDatasourceData(datasourceId, datasourceDataRequest);
|
|
69
|
-
|
|
69
|
+
setTotalCount(totalCount);
|
|
70
70
|
setNextCursor(nextPageCursor);
|
|
71
71
|
setResponseItems(currentResponseItems => {
|
|
72
72
|
if (shouldRequestFirstPage) {
|
|
@@ -88,7 +88,7 @@ export const useDatasourceTableState = ({
|
|
|
88
88
|
setResponseItems([]);
|
|
89
89
|
setHasNextPage(true);
|
|
90
90
|
setNextCursor(undefined);
|
|
91
|
-
|
|
91
|
+
setTotalCount(undefined);
|
|
92
92
|
setLastRequestedFieldKeys([]);
|
|
93
93
|
}, []);
|
|
94
94
|
|
|
@@ -125,6 +125,6 @@ export const useDatasourceTableState = ({
|
|
|
125
125
|
hasNextPage,
|
|
126
126
|
columns,
|
|
127
127
|
defaultVisibleColumnKeys,
|
|
128
|
-
|
|
128
|
+
totalCount
|
|
129
129
|
};
|
|
130
130
|
};
|
|
@@ -29,7 +29,7 @@ export const DatasourceTableView = ({
|
|
|
29
29
|
hasNextPage,
|
|
30
30
|
columns,
|
|
31
31
|
defaultVisibleColumnKeys,
|
|
32
|
-
|
|
32
|
+
totalCount,
|
|
33
33
|
loadDatasourceDetails
|
|
34
34
|
} = useDatasourceTableState({
|
|
35
35
|
datasourceId,
|
|
@@ -54,7 +54,7 @@ export const DatasourceTableView = ({
|
|
|
54
54
|
visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
|
|
55
55
|
onVisibleColumnKeysChange: onVisibleColumnKeysChange
|
|
56
56
|
}), jsx(TableFooter, {
|
|
57
|
-
issueCount:
|
|
57
|
+
issueCount: totalCount,
|
|
58
58
|
onRefresh: reset,
|
|
59
59
|
isLoading: status === 'loading'
|
|
60
60
|
})) : jsx(Spinner, {
|
|
@@ -55,6 +55,11 @@ export const ColumnPicker = ({
|
|
|
55
55
|
const sortedOptions = [...selectedOptions, ...nonSelectedOptions];
|
|
56
56
|
sortedOptions.length > 0 && setAllOptions(sortedOptions);
|
|
57
57
|
}, [allOptions, selectedOptions]);
|
|
58
|
+
const stopEscapePropagationWhenOpen = e => {
|
|
59
|
+
if (e.key === 'Escape') {
|
|
60
|
+
e.stopPropagation();
|
|
61
|
+
}
|
|
62
|
+
};
|
|
58
63
|
const handleOpen = useCallback(() => {
|
|
59
64
|
onOpen && void onOpen();
|
|
60
65
|
void sortSelectedColumnsTop();
|
|
@@ -72,6 +77,7 @@ export const ColumnPicker = ({
|
|
|
72
77
|
hideSelectedOptions: false,
|
|
73
78
|
isMulti: true,
|
|
74
79
|
placeholder: intl.formatMessage(columnPickerMessages.search),
|
|
80
|
+
onKeyDown: stopEscapePropagationWhenOpen,
|
|
75
81
|
"aria-label": "Search for fields",
|
|
76
82
|
onChange: handleChange,
|
|
77
83
|
isLoading: allOptions.length === 0,
|
|
@@ -3,8 +3,6 @@ export const JIRA_LIST_OF_LINKS_DATASOURCE_ID = 'd8b75300-dfda-4519-b6cd-e49abbd
|
|
|
3
3
|
const LazyJiraIssuesConfigModal = /*#__PURE__*/lazy(() => import( /* webpackChunkName: "@atlaskit-internal_linkdatasource-jiraissuesmodal" */'./modal').then(module => ({
|
|
4
4
|
default: module.JiraIssuesConfigModal
|
|
5
5
|
})));
|
|
6
|
-
|
|
7
|
-
//
|
|
8
6
|
const JiraIssuesConfigModalWithWrappers = props => {
|
|
9
7
|
return /*#__PURE__*/React.createElement(Suspense, {
|
|
10
8
|
fallback: /*#__PURE__*/React.createElement("div", {
|
|
@@ -13,6 +13,7 @@ const inputContainerStyles = css({
|
|
|
13
13
|
gap: "var(--ds-space-250, 20px)",
|
|
14
14
|
minHeight: '60px'
|
|
15
15
|
});
|
|
16
|
+
const DEFAULT_JQL_QUERY = 'created >= -30d order by created DESC';
|
|
16
17
|
export const JiraSearchContainer = props => {
|
|
17
18
|
const {
|
|
18
19
|
parameters,
|
|
@@ -29,7 +30,7 @@ export const JiraSearchContainer = props => {
|
|
|
29
30
|
const jqlModeValue = 'jql';
|
|
30
31
|
const [basicSearchTerm, setBasicSearchTerm] = useState('');
|
|
31
32
|
const [currentSearchMode, setCurrentSearchMode] = useState(initialJql ? jqlModeValue : basicModeValue);
|
|
32
|
-
const [jql, setJql] = useState(initialJql ||
|
|
33
|
+
const [jql, setJql] = useState(initialJql || DEFAULT_JQL_QUERY);
|
|
33
34
|
const [orderKey, setOrderKey] = useState();
|
|
34
35
|
const [orderDirection, setOrderDirection] = useState();
|
|
35
36
|
const onSearchModeChange = searchMode => {
|
|
@@ -2,10 +2,10 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
|
2
2
|
/** @jsx jsx */
|
|
3
3
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
4
4
|
import { css, jsx } from '@emotion/react';
|
|
5
|
-
import { FormattedMessage, IntlProvider, useIntl } from 'react-intl-next';
|
|
5
|
+
import { FormattedMessage, FormattedNumber, FormattedPlural, IntlProvider, useIntl } from 'react-intl-next';
|
|
6
6
|
import Button from '@atlaskit/button/standard-button';
|
|
7
7
|
import Modal, { ModalBody, ModalFooter, ModalHeader, ModalTitle, ModalTransition } from '@atlaskit/modal-dialog';
|
|
8
|
-
import { B400, N0 } from '@atlaskit/theme/colors';
|
|
8
|
+
import { B400, N0, N800 } from '@atlaskit/theme/colors';
|
|
9
9
|
import { useDatasourceTableState } from '../../../hooks/useDatasourceTableState';
|
|
10
10
|
import { getAvailableJiraSites } from '../../../services/getAvailableJiraSites';
|
|
11
11
|
import { EmptyState, IssueLikeDataTableView } from '../../issue-like-table';
|
|
@@ -29,6 +29,11 @@ const placeholderSmartLinkStyles = css({
|
|
|
29
29
|
color: `var(--ds-text-brand, ${B400})`,
|
|
30
30
|
padding: '0px 2px'
|
|
31
31
|
});
|
|
32
|
+
const issueCountStyles = css({
|
|
33
|
+
color: `var(--ds-text-accent-gray, ${N800})`,
|
|
34
|
+
flex: 1,
|
|
35
|
+
fontWeight: 600
|
|
36
|
+
});
|
|
32
37
|
export const JiraIssuesConfigModal = props => {
|
|
33
38
|
const {
|
|
34
39
|
datasourceId,
|
|
@@ -55,7 +60,8 @@ export const JiraIssuesConfigModal = props => {
|
|
|
55
60
|
hasNextPage,
|
|
56
61
|
columns,
|
|
57
62
|
defaultVisibleColumnKeys,
|
|
58
|
-
loadDatasourceDetails
|
|
63
|
+
loadDatasourceDetails,
|
|
64
|
+
totalCount
|
|
59
65
|
} = useDatasourceTableState({
|
|
60
66
|
datasourceId,
|
|
61
67
|
parameters: isParametersSet ? parameters : undefined,
|
|
@@ -104,7 +110,7 @@ export const JiraIssuesConfigModal = props => {
|
|
|
104
110
|
onInsert({
|
|
105
111
|
type: 'inlineCard',
|
|
106
112
|
attrs: {
|
|
107
|
-
url: `${selectedJiraSite.url}/issues
|
|
113
|
+
url: `${selectedJiraSite.url}/issues/?jql=${encodeURI(jql)}`
|
|
108
114
|
}
|
|
109
115
|
});
|
|
110
116
|
} else if (responseItems.length === 1 && firstIssueUrl) {
|
|
@@ -212,7 +218,16 @@ export const JiraIssuesConfigModal = props => {
|
|
|
212
218
|
onSearch: onSearch
|
|
213
219
|
}), jsx("div", {
|
|
214
220
|
css: contentContainerStyles
|
|
215
|
-
}, currentViewMode === 'count' ? renderCountModeContent() : renderIssuesModeContent())), jsx(ModalFooter, null, jsx(
|
|
221
|
+
}, currentViewMode === 'count' ? renderCountModeContent() : renderIssuesModeContent())), jsx(ModalFooter, null, !!totalCount && currentViewMode === 'issue' && jsx("div", {
|
|
222
|
+
"data-testid": "jira-jql-datasource-modal-total-issues-count",
|
|
223
|
+
css: issueCountStyles
|
|
224
|
+
}, jsx(FormattedNumber, {
|
|
225
|
+
value: totalCount
|
|
226
|
+
}), ' ', jsx(FormattedPlural, {
|
|
227
|
+
one: "issue",
|
|
228
|
+
other: "issues",
|
|
229
|
+
value: totalCount
|
|
230
|
+
})), jsx(Button, {
|
|
216
231
|
appearance: "default",
|
|
217
232
|
onClick: onCancel
|
|
218
233
|
}, jsx(FormattedMessage, modalMessages.cancelButtonText)), jsx(Button, {
|
package/dist/es2019/version.json
CHANGED
|
@@ -39,8 +39,8 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
39
39
|
setColumns = _useState14[1];
|
|
40
40
|
var _useState15 = useState(undefined),
|
|
41
41
|
_useState16 = _slicedToArray(_useState15, 2),
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
totalCount = _useState16[0],
|
|
43
|
+
setTotalCount = _useState16[1];
|
|
44
44
|
var _useDatasourceClientE = useDatasourceClientExtension(),
|
|
45
45
|
getDatasourceData = _useDatasourceClientE.getDatasourceData,
|
|
46
46
|
getDatasourceDetails = _useDatasourceClientE.getDatasourceDetails;
|
|
@@ -101,7 +101,7 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
101
101
|
_yield$getDatasourceD,
|
|
102
102
|
data,
|
|
103
103
|
nextPageCursor,
|
|
104
|
-
|
|
104
|
+
totalCount,
|
|
105
105
|
schema,
|
|
106
106
|
_args2 = arguments;
|
|
107
107
|
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
@@ -129,9 +129,9 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
129
129
|
_yield$getDatasourceD = _context2.sent;
|
|
130
130
|
data = _yield$getDatasourceD.data;
|
|
131
131
|
nextPageCursor = _yield$getDatasourceD.nextPageCursor;
|
|
132
|
-
|
|
132
|
+
totalCount = _yield$getDatasourceD.totalCount;
|
|
133
133
|
schema = _yield$getDatasourceD.schema;
|
|
134
|
-
|
|
134
|
+
setTotalCount(totalCount);
|
|
135
135
|
setNextCursor(nextPageCursor);
|
|
136
136
|
setResponseItems(function (currentResponseItems) {
|
|
137
137
|
if (shouldRequestFirstPage) {
|
|
@@ -158,7 +158,7 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
158
158
|
setResponseItems([]);
|
|
159
159
|
setHasNextPage(true);
|
|
160
160
|
setNextCursor(undefined);
|
|
161
|
-
|
|
161
|
+
setTotalCount(undefined);
|
|
162
162
|
setLastRequestedFieldKeys([]);
|
|
163
163
|
}, []);
|
|
164
164
|
|
|
@@ -197,6 +197,6 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
197
197
|
hasNextPage: hasNextPage,
|
|
198
198
|
columns: columns,
|
|
199
199
|
defaultVisibleColumnKeys: defaultVisibleColumnKeys,
|
|
200
|
-
|
|
200
|
+
totalCount: totalCount
|
|
201
201
|
};
|
|
202
202
|
};
|
|
@@ -32,7 +32,7 @@ export var DatasourceTableView = function DatasourceTableView(_ref) {
|
|
|
32
32
|
hasNextPage = _useDatasourceTableSt.hasNextPage,
|
|
33
33
|
columns = _useDatasourceTableSt.columns,
|
|
34
34
|
defaultVisibleColumnKeys = _useDatasourceTableSt.defaultVisibleColumnKeys,
|
|
35
|
-
|
|
35
|
+
totalCount = _useDatasourceTableSt.totalCount,
|
|
36
36
|
loadDatasourceDetails = _useDatasourceTableSt.loadDatasourceDetails;
|
|
37
37
|
useEffect(function () {
|
|
38
38
|
if (onVisibleColumnKeysChange && (visibleColumnKeys || []).length === 0 && defaultVisibleColumnKeys.length > 0) {
|
|
@@ -52,7 +52,7 @@ export var DatasourceTableView = function DatasourceTableView(_ref) {
|
|
|
52
52
|
visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
|
|
53
53
|
onVisibleColumnKeysChange: onVisibleColumnKeysChange
|
|
54
54
|
}), jsx(TableFooter, {
|
|
55
|
-
issueCount:
|
|
55
|
+
issueCount: totalCount,
|
|
56
56
|
onRefresh: reset,
|
|
57
57
|
isLoading: status === 'loading'
|
|
58
58
|
})) : jsx(Spinner, {
|
|
@@ -71,6 +71,11 @@ export var ColumnPicker = function ColumnPicker(_ref) {
|
|
|
71
71
|
var sortedOptions = [].concat(_toConsumableArray(selectedOptions), _toConsumableArray(nonSelectedOptions));
|
|
72
72
|
sortedOptions.length > 0 && setAllOptions(sortedOptions);
|
|
73
73
|
}, [allOptions, selectedOptions]);
|
|
74
|
+
var stopEscapePropagationWhenOpen = function stopEscapePropagationWhenOpen(e) {
|
|
75
|
+
if (e.key === 'Escape') {
|
|
76
|
+
e.stopPropagation();
|
|
77
|
+
}
|
|
78
|
+
};
|
|
74
79
|
var handleOpen = useCallback(function () {
|
|
75
80
|
onOpen && void onOpen();
|
|
76
81
|
void sortSelectedColumnsTop();
|
|
@@ -88,6 +93,7 @@ export var ColumnPicker = function ColumnPicker(_ref) {
|
|
|
88
93
|
hideSelectedOptions: false,
|
|
89
94
|
isMulti: true,
|
|
90
95
|
placeholder: intl.formatMessage(columnPickerMessages.search),
|
|
96
|
+
onKeyDown: stopEscapePropagationWhenOpen,
|
|
91
97
|
"aria-label": "Search for fields",
|
|
92
98
|
onChange: handleChange,
|
|
93
99
|
isLoading: allOptions.length === 0,
|
|
@@ -7,8 +7,6 @@ var LazyJiraIssuesConfigModal = /*#__PURE__*/lazy(function () {
|
|
|
7
7
|
};
|
|
8
8
|
});
|
|
9
9
|
});
|
|
10
|
-
|
|
11
|
-
//
|
|
12
10
|
var JiraIssuesConfigModalWithWrappers = function JiraIssuesConfigModalWithWrappers(props) {
|
|
13
11
|
return /*#__PURE__*/React.createElement(Suspense, {
|
|
14
12
|
fallback: /*#__PURE__*/React.createElement("div", {
|
|
@@ -14,6 +14,7 @@ var inputContainerStyles = css({
|
|
|
14
14
|
gap: "var(--ds-space-250, 20px)",
|
|
15
15
|
minHeight: '60px'
|
|
16
16
|
});
|
|
17
|
+
var DEFAULT_JQL_QUERY = 'created >= -30d order by created DESC';
|
|
17
18
|
export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
18
19
|
var parameters = props.parameters,
|
|
19
20
|
onSearch = props.onSearch;
|
|
@@ -32,7 +33,7 @@ export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
32
33
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
33
34
|
currentSearchMode = _useState4[0],
|
|
34
35
|
setCurrentSearchMode = _useState4[1];
|
|
35
|
-
var _useState5 = useState(initialJql ||
|
|
36
|
+
var _useState5 = useState(initialJql || DEFAULT_JQL_QUERY),
|
|
36
37
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
37
38
|
jql = _useState6[0],
|
|
38
39
|
setJql = _useState6[1];
|
|
@@ -5,10 +5,10 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
|
5
5
|
/** @jsx jsx */
|
|
6
6
|
import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
7
7
|
import { css, jsx } from '@emotion/react';
|
|
8
|
-
import { FormattedMessage, IntlProvider, useIntl } from 'react-intl-next';
|
|
8
|
+
import { FormattedMessage, FormattedNumber, FormattedPlural, IntlProvider, useIntl } from 'react-intl-next';
|
|
9
9
|
import Button from '@atlaskit/button/standard-button';
|
|
10
10
|
import Modal, { ModalBody, ModalFooter, ModalHeader, ModalTitle, ModalTransition } from '@atlaskit/modal-dialog';
|
|
11
|
-
import { B400, N0 } from '@atlaskit/theme/colors';
|
|
11
|
+
import { B400, N0, N800 } from '@atlaskit/theme/colors';
|
|
12
12
|
import { useDatasourceTableState } from '../../../hooks/useDatasourceTableState';
|
|
13
13
|
import { getAvailableJiraSites } from '../../../services/getAvailableJiraSites';
|
|
14
14
|
import { EmptyState, IssueLikeDataTableView } from '../../issue-like-table';
|
|
@@ -32,6 +32,11 @@ var placeholderSmartLinkStyles = css({
|
|
|
32
32
|
color: "var(--ds-text-brand, ".concat(B400, ")"),
|
|
33
33
|
padding: '0px 2px'
|
|
34
34
|
});
|
|
35
|
+
var issueCountStyles = css({
|
|
36
|
+
color: "var(--ds-text-accent-gray, ".concat(N800, ")"),
|
|
37
|
+
flex: 1,
|
|
38
|
+
fontWeight: 600
|
|
39
|
+
});
|
|
35
40
|
export var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
|
|
36
41
|
var datasourceId = props.datasourceId,
|
|
37
42
|
initialParameters = props.parameters,
|
|
@@ -77,7 +82,8 @@ export var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
|
|
|
77
82
|
hasNextPage = _useDatasourceTableSt.hasNextPage,
|
|
78
83
|
columns = _useDatasourceTableSt.columns,
|
|
79
84
|
defaultVisibleColumnKeys = _useDatasourceTableSt.defaultVisibleColumnKeys,
|
|
80
|
-
loadDatasourceDetails = _useDatasourceTableSt.loadDatasourceDetails
|
|
85
|
+
loadDatasourceDetails = _useDatasourceTableSt.loadDatasourceDetails,
|
|
86
|
+
totalCount = _useDatasourceTableSt.totalCount;
|
|
81
87
|
useEffect(function () {
|
|
82
88
|
var newVisibleColumnKeys = !initialVisibleColumnKeys || (initialVisibleColumnKeys || []).length === 0 ? defaultVisibleColumnKeys : initialVisibleColumnKeys;
|
|
83
89
|
setVisibleColumnKeys(newVisibleColumnKeys);
|
|
@@ -142,7 +148,7 @@ export var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
|
|
|
142
148
|
onInsert({
|
|
143
149
|
type: 'inlineCard',
|
|
144
150
|
attrs: {
|
|
145
|
-
url: "".concat(selectedJiraSite.url, "/issues
|
|
151
|
+
url: "".concat(selectedJiraSite.url, "/issues/?jql=").concat(encodeURI(jql))
|
|
146
152
|
}
|
|
147
153
|
});
|
|
148
154
|
} else if (responseItems.length === 1 && firstIssueUrl) {
|
|
@@ -252,7 +258,16 @@ export var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
|
|
|
252
258
|
onSearch: onSearch
|
|
253
259
|
}), jsx("div", {
|
|
254
260
|
css: contentContainerStyles
|
|
255
|
-
}, currentViewMode === 'count' ? renderCountModeContent() : renderIssuesModeContent())), jsx(ModalFooter, null, jsx(
|
|
261
|
+
}, currentViewMode === 'count' ? renderCountModeContent() : renderIssuesModeContent())), jsx(ModalFooter, null, !!totalCount && currentViewMode === 'issue' && jsx("div", {
|
|
262
|
+
"data-testid": "jira-jql-datasource-modal-total-issues-count",
|
|
263
|
+
css: issueCountStyles
|
|
264
|
+
}, jsx(FormattedNumber, {
|
|
265
|
+
value: totalCount
|
|
266
|
+
}), ' ', jsx(FormattedPlural, {
|
|
267
|
+
one: "issue",
|
|
268
|
+
other: "issues",
|
|
269
|
+
value: totalCount
|
|
270
|
+
})), jsx(Button, {
|
|
256
271
|
appearance: "default",
|
|
257
272
|
onClick: onCancel
|
|
258
273
|
}, jsx(FormattedMessage, modalMessages.cancelButtonText)), jsx(Button, {
|
package/dist/esm/version.json
CHANGED
|
@@ -13,7 +13,7 @@ export interface DatasourceTableState {
|
|
|
13
13
|
hasNextPage: boolean;
|
|
14
14
|
columns: DatasourceResponseSchemaProperty[];
|
|
15
15
|
defaultVisibleColumnKeys: string[];
|
|
16
|
-
|
|
16
|
+
totalCount?: number;
|
|
17
17
|
}
|
|
18
18
|
export interface DatasourceTableStateProps {
|
|
19
19
|
datasourceId: string;
|
|
@@ -13,7 +13,7 @@ export interface DatasourceTableState {
|
|
|
13
13
|
hasNextPage: boolean;
|
|
14
14
|
columns: DatasourceResponseSchemaProperty[];
|
|
15
15
|
defaultVisibleColumnKeys: string[];
|
|
16
|
-
|
|
16
|
+
totalCount?: number;
|
|
17
17
|
}
|
|
18
18
|
export interface DatasourceTableStateProps {
|
|
19
19
|
datasourceId: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/link-datasource",
|
|
3
|
-
"version": "0.21.
|
|
3
|
+
"version": "0.21.2",
|
|
4
4
|
"description": "UI Components to support linking platform dataset feature",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@atlaskit/image": "^1.1.0",
|
|
37
37
|
"@atlaskit/link-client-extension": "^1.2.0",
|
|
38
38
|
"@atlaskit/linking-common": "^2.14.0",
|
|
39
|
-
"@atlaskit/linking-types": "^
|
|
39
|
+
"@atlaskit/linking-types": "^6.0.0",
|
|
40
40
|
"@atlaskit/lozenge": "^11.4.0",
|
|
41
41
|
"@atlaskit/modal-dialog": "^12.6.0",
|
|
42
42
|
"@atlaskit/pragmatic-drag-and-drop": "^0.18.0",
|