@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 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
- totalIssueCount = _useState16[0],
50
- setTotalIssueCount = _useState16[1];
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
- totalIssues,
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
- totalIssues = _yield$getDatasourceD.totalIssues;
139
+ totalCount = _yield$getDatasourceD.totalCount;
140
140
  schema = _yield$getDatasourceD.schema;
141
- setTotalIssueCount(totalIssues);
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
- setTotalIssueCount(undefined);
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
- totalIssueCount: totalIssueCount
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
- totalIssueCount = _useDatasourceTableSt.totalIssueCount,
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: totalIssueCount,
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/").concat(encodeURI(jql))
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)(_standardButton.default, {
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, {
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/link-datasource",
3
- "version": "0.21.1",
3
+ "version": "0.21.2",
4
4
  "sideEffects": false
5
5
  }
@@ -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 [totalIssueCount, setTotalIssueCount] = useState(undefined);
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
- totalIssues,
66
+ totalCount,
67
67
  schema
68
68
  } = await getDatasourceData(datasourceId, datasourceDataRequest);
69
- setTotalIssueCount(totalIssues);
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
- setTotalIssueCount(undefined);
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
- totalIssueCount
128
+ totalCount
129
129
  };
130
130
  };
@@ -29,7 +29,7 @@ export const DatasourceTableView = ({
29
29
  hasNextPage,
30
30
  columns,
31
31
  defaultVisibleColumnKeys,
32
- totalIssueCount,
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: totalIssueCount,
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/${encodeURI(jql)}`
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(Button, {
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, {
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/link-datasource",
3
- "version": "0.21.1",
3
+ "version": "0.21.2",
4
4
  "sideEffects": false
5
5
  }
@@ -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
- totalIssueCount = _useState16[0],
43
- setTotalIssueCount = _useState16[1];
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
- totalIssues,
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
- totalIssues = _yield$getDatasourceD.totalIssues;
132
+ totalCount = _yield$getDatasourceD.totalCount;
133
133
  schema = _yield$getDatasourceD.schema;
134
- setTotalIssueCount(totalIssues);
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
- setTotalIssueCount(undefined);
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
- totalIssueCount: totalIssueCount
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
- totalIssueCount = _useDatasourceTableSt.totalIssueCount,
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: totalIssueCount,
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/").concat(encodeURI(jql))
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(Button, {
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, {
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/link-datasource",
3
- "version": "0.21.1",
3
+ "version": "0.21.2",
4
4
  "sideEffects": false
5
5
  }
@@ -13,7 +13,7 @@ export interface DatasourceTableState {
13
13
  hasNextPage: boolean;
14
14
  columns: DatasourceResponseSchemaProperty[];
15
15
  defaultVisibleColumnKeys: string[];
16
- totalIssueCount?: number;
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
- totalIssueCount?: number;
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.1",
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": "^5.0.0",
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",