@atlaskit/link-datasource 1.7.4 → 1.7.6
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 +12 -0
- package/dist/cjs/analytics/constants.js +1 -1
- package/dist/cjs/hooks/useDatasourceTableState.js +12 -15
- package/dist/cjs/ui/assets-modal/modal/index.js +1 -1
- package/dist/cjs/ui/jira-issues-modal/basic-search-input/messages.js +1 -1
- package/dist/cjs/ui/jira-issues-modal/initial-state-view/index.js +39 -10
- package/dist/cjs/ui/jira-issues-modal/initial-state-view/messages.js +14 -4
- package/dist/cjs/ui/jira-issues-modal/jira-search-container/index.js +19 -19
- package/dist/cjs/ui/jira-issues-modal/modal/index.js +20 -10
- package/dist/es2019/analytics/constants.js +1 -1
- package/dist/es2019/hooks/useDatasourceTableState.js +1 -4
- package/dist/es2019/ui/assets-modal/modal/index.js +1 -1
- package/dist/es2019/ui/jira-issues-modal/basic-search-input/messages.js +1 -1
- package/dist/es2019/ui/jira-issues-modal/initial-state-view/index.js +47 -21
- package/dist/es2019/ui/jira-issues-modal/initial-state-view/messages.js +14 -4
- package/dist/es2019/ui/jira-issues-modal/jira-search-container/index.js +19 -19
- package/dist/es2019/ui/jira-issues-modal/modal/index.js +17 -11
- package/dist/esm/analytics/constants.js +1 -1
- package/dist/esm/hooks/useDatasourceTableState.js +12 -15
- package/dist/esm/ui/assets-modal/modal/index.js +1 -1
- package/dist/esm/ui/jira-issues-modal/basic-search-input/messages.js +1 -1
- package/dist/esm/ui/jira-issues-modal/initial-state-view/index.js +39 -11
- package/dist/esm/ui/jira-issues-modal/initial-state-view/messages.js +14 -4
- package/dist/esm/ui/jira-issues-modal/jira-search-container/index.js +19 -19
- package/dist/esm/ui/jira-issues-modal/modal/index.js +20 -10
- package/dist/types/ui/jira-issues-modal/initial-state-view/index.d.ts +6 -1
- package/dist/types/ui/jira-issues-modal/initial-state-view/messages.d.ts +11 -1
- package/dist/types/ui/jira-issues-modal/jira-search-container/index.d.ts +2 -1
- package/dist/types-ts4.5/ui/jira-issues-modal/initial-state-view/index.d.ts +6 -1
- package/dist/types-ts4.5/ui/jira-issues-modal/initial-state-view/messages.d.ts +11 -1
- package/dist/types-ts4.5/ui/jira-issues-modal/jira-search-container/index.d.ts +2 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @atlaskit/link-datasource
|
|
2
2
|
|
|
3
|
+
## 1.7.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#41377](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/41377) [`6191c789222`](https://bitbucket.org/atlassian/atlassian-frontend/commits/6191c789222) - Fix bug where on next page load sorts the column in alphabetical order.
|
|
8
|
+
|
|
9
|
+
## 1.7.5
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#40232](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/40232) [`b8c29cec088`](https://bitbucket.org/atlassian/atlassian-frontend/commits/b8c29cec088) - [ux] Make JQL mode to be selected by default
|
|
14
|
+
|
|
3
15
|
## 1.7.4
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
@@ -138,7 +138,6 @@ var useDatasourceTableState = exports.useDatasourceTableState = function useData
|
|
|
138
138
|
shouldRequestFirstPage,
|
|
139
139
|
_requestInfo$shouldFo,
|
|
140
140
|
shouldForceRequest,
|
|
141
|
-
sortedFieldKeys,
|
|
142
141
|
datasourceDataRequest,
|
|
143
142
|
_yield$getDatasourceD2,
|
|
144
143
|
_yield$getDatasourceD3,
|
|
@@ -165,20 +164,18 @@ var useDatasourceTableState = exports.useDatasourceTableState = function useData
|
|
|
165
164
|
return _context2.abrupt("return");
|
|
166
165
|
case 3:
|
|
167
166
|
_requestInfo$isSchema = requestInfo.isSchemaFromData, isSchemaFromData = _requestInfo$isSchema === void 0 ? true : _requestInfo$isSchema, shouldRequestFirstPage = requestInfo.shouldRequestFirstPage, _requestInfo$shouldFo = requestInfo.shouldForceRequest, shouldForceRequest = _requestInfo$shouldFo === void 0 ? false : _requestInfo$shouldFo;
|
|
168
|
-
sortedFieldKeys = (0, _toConsumableArray2.default)(fieldKeys); // Sort keys to use cached version of response regardless of the order
|
|
169
|
-
sortedFieldKeys.sort();
|
|
170
167
|
datasourceDataRequest = {
|
|
171
168
|
parameters: parameters,
|
|
172
169
|
pageSize: _linkClientExtension.DEFAULT_GET_DATASOURCE_DATA_PAGE_SIZE,
|
|
173
170
|
pageCursor: shouldRequestFirstPage ? undefined : nextCursor,
|
|
174
|
-
fields:
|
|
171
|
+
fields: fieldKeys,
|
|
175
172
|
includeSchema: isSchemaFromData
|
|
176
173
|
};
|
|
177
174
|
setStatus('loading');
|
|
178
|
-
_context2.prev =
|
|
179
|
-
_context2.next =
|
|
175
|
+
_context2.prev = 6;
|
|
176
|
+
_context2.next = 9;
|
|
180
177
|
return getDatasourceData(datasourceId, datasourceDataRequest, shouldForceRequest);
|
|
181
|
-
case
|
|
178
|
+
case 9:
|
|
182
179
|
_yield$getDatasourceD2 = _context2.sent;
|
|
183
180
|
_yield$getDatasourceD3 = _yield$getDatasourceD2.meta;
|
|
184
181
|
access = _yield$getDatasourceD3.access;
|
|
@@ -190,12 +187,12 @@ var useDatasourceTableState = exports.useDatasourceTableState = function useData
|
|
|
190
187
|
_totalCount = _yield$getDatasourceD4.totalCount;
|
|
191
188
|
schema = _yield$getDatasourceD4.schema;
|
|
192
189
|
if (!(access === 'forbidden' || access === 'unauthorized')) {
|
|
193
|
-
_context2.next =
|
|
190
|
+
_context2.next = 22;
|
|
194
191
|
break;
|
|
195
192
|
}
|
|
196
193
|
setStatus('unauthorized');
|
|
197
194
|
return _context2.abrupt("return");
|
|
198
|
-
case
|
|
195
|
+
case 22:
|
|
199
196
|
setExtensionKey(_extensionKey);
|
|
200
197
|
setDestinationObjectTypes(_destinationObjectTypes);
|
|
201
198
|
setTotalCount(_totalCount);
|
|
@@ -224,17 +221,17 @@ var useDatasourceTableState = exports.useDatasourceTableState = function useData
|
|
|
224
221
|
});
|
|
225
222
|
}
|
|
226
223
|
setStatus('resolved');
|
|
227
|
-
_context2.next =
|
|
224
|
+
_context2.next = 38;
|
|
228
225
|
break;
|
|
229
|
-
case
|
|
230
|
-
_context2.prev =
|
|
231
|
-
_context2.t0 = _context2["catch"](
|
|
226
|
+
case 35:
|
|
227
|
+
_context2.prev = 35;
|
|
228
|
+
_context2.t0 = _context2["catch"](6);
|
|
232
229
|
setStatus('rejected');
|
|
233
|
-
case
|
|
230
|
+
case 38:
|
|
234
231
|
case "end":
|
|
235
232
|
return _context2.stop();
|
|
236
233
|
}
|
|
237
|
-
}, _callee2, null, [[
|
|
234
|
+
}, _callee2, null, [[6, 35]]);
|
|
238
235
|
})), [parameters, fieldKeys, nextCursor, getDatasourceData, datasourceId, responseItems === null || responseItems === void 0 ? void 0 : responseItems.length, applySchemaProperties, fireEvent]);
|
|
239
236
|
var reset = (0, _react.useCallback)(function (options) {
|
|
240
237
|
setStatus('empty');
|
|
@@ -234,7 +234,7 @@ var analyticsContextAttributes = {
|
|
|
234
234
|
};
|
|
235
235
|
var analyticsContextData = {
|
|
236
236
|
packageName: "@atlaskit/link-datasource",
|
|
237
|
-
packageVersion: "1.7.
|
|
237
|
+
packageVersion: "1.7.6",
|
|
238
238
|
source: 'datasourceConfigModal'
|
|
239
239
|
};
|
|
240
240
|
var contextData = _objectSpread(_objectSpread({}, analyticsContextData), {}, {
|
|
@@ -9,6 +9,6 @@ var basicSearchInputMessages = exports.basicSearchInputMessages = (0, _reactIntl
|
|
|
9
9
|
basicTextSearchLabel: {
|
|
10
10
|
id: 'linkDataSource.jira-issues.configmodal.basicTextSearchPlaceholder',
|
|
11
11
|
description: 'Placeholder text for the search input box',
|
|
12
|
-
defaultMessage: 'Search'
|
|
12
|
+
defaultMessage: 'Search for issues by keyword'
|
|
13
13
|
}
|
|
14
14
|
});
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
6
7
|
exports.InitialStateView = void 0;
|
|
7
8
|
var _react = require("@emotion/react");
|
|
8
9
|
var _reactIntlNext = require("react-intl-next");
|
|
10
|
+
var _lozenge = _interopRequireDefault(require("@atlaskit/lozenge"));
|
|
11
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
9
12
|
var _initialStateSvg = require("./assets/initial-state-svg");
|
|
10
13
|
var _messages = require("./messages");
|
|
11
14
|
/** @jsx jsx */
|
|
@@ -19,19 +22,38 @@ var svgAndTextsWrapperStyles = (0, _react.css)({
|
|
|
19
22
|
textAlign: 'center',
|
|
20
23
|
alignSelf: 'center',
|
|
21
24
|
paddingTop: "var(--ds-space-600, 48px)",
|
|
22
|
-
paddingBottom: "var(--ds-space-600, 48px)"
|
|
25
|
+
paddingBottom: "var(--ds-space-600, 48px)",
|
|
26
|
+
width: '260px'
|
|
27
|
+
});
|
|
28
|
+
var betaTagStyles = (0, _react.css)({
|
|
29
|
+
display: 'flex'
|
|
23
30
|
});
|
|
24
31
|
var searchTitleStyles = (0, _react.css)({
|
|
25
|
-
|
|
26
|
-
|
|
32
|
+
color: "var(--ds-text-subtlest, ".concat(_colors.N300, ")"),
|
|
33
|
+
fontWeight: "var(--ds-font-weight-medium, 500)",
|
|
34
|
+
fontSize: "var(--ds-font-size-300, 20px)",
|
|
27
35
|
lineHeight: "var(--ds-font-lineHeight-300, 24px)",
|
|
28
36
|
paddingTop: "var(--ds-space-200, 16px)",
|
|
29
|
-
paddingBottom: "var(--ds-space-100, 8px)"
|
|
37
|
+
paddingBottom: "var(--ds-space-100, 8px)",
|
|
38
|
+
display: 'flex',
|
|
39
|
+
justifyContent: 'center',
|
|
40
|
+
alignItems: 'center',
|
|
41
|
+
gap: "var(--ds-space-100, 8px)"
|
|
42
|
+
});
|
|
43
|
+
var mainTextStyles = (0, _react.css)({
|
|
44
|
+
color: "var(--ds-text-subtlest, ".concat(_colors.N300, ")")
|
|
30
45
|
});
|
|
46
|
+
var learnMoreLinkStyles = (0, _react.css)({
|
|
47
|
+
paddingTop: "var(--ds-space-200, 16px)",
|
|
48
|
+
display: 'inline-block'
|
|
49
|
+
});
|
|
50
|
+
var methodToDescriptionMessage = {
|
|
51
|
+
basic: _messages.initialStateViewMessages.searchDescriptionForBasicSearch,
|
|
52
|
+
jql: _messages.initialStateViewMessages.searchDescriptionForJQLSearch
|
|
53
|
+
};
|
|
31
54
|
var jqlSupportDocumentLink = 'https://support.atlassian.com/jira-service-management-cloud/docs/use-advanced-search-with-jira-query-language-jql/';
|
|
32
|
-
var InitialStateView = exports.InitialStateView = function InitialStateView() {
|
|
33
|
-
var
|
|
34
|
-
formatMessage = _useIntl.formatMessage;
|
|
55
|
+
var InitialStateView = exports.InitialStateView = function InitialStateView(_ref) {
|
|
56
|
+
var searchMethod = _ref.searchMethod;
|
|
35
57
|
return (0, _react.jsx)("div", {
|
|
36
58
|
css: initialStateViewContainerStyles,
|
|
37
59
|
"data-testid": "jlol-datasource-modal--initial-state-view"
|
|
@@ -39,8 +61,15 @@ var InitialStateView = exports.InitialStateView = function InitialStateView() {
|
|
|
39
61
|
css: svgAndTextsWrapperStyles
|
|
40
62
|
}, (0, _react.jsx)(_initialStateSvg.InitialStateSVG, null), (0, _react.jsx)("div", {
|
|
41
63
|
css: searchTitleStyles
|
|
42
|
-
},
|
|
64
|
+
}, (0, _react.jsx)("div", {
|
|
65
|
+
css: betaTagStyles
|
|
66
|
+
}, (0, _react.jsx)(_lozenge.default, {
|
|
67
|
+
appearance: "new"
|
|
68
|
+
}, (0, _react.jsx)(_reactIntlNext.FormattedMessage, _messages.initialStateViewMessages.beta))), (0, _react.jsx)(_reactIntlNext.FormattedMessage, _messages.initialStateViewMessages.searchTitle)), (0, _react.jsx)("div", {
|
|
69
|
+
css: mainTextStyles
|
|
70
|
+
}, (0, _react.jsx)(_reactIntlNext.FormattedMessage, methodToDescriptionMessage[searchMethod])), searchMethod === 'jql' ? (0, _react.jsx)("a", {
|
|
43
71
|
href: jqlSupportDocumentLink,
|
|
44
|
-
target: "_blank"
|
|
45
|
-
|
|
72
|
+
target: "_blank",
|
|
73
|
+
css: learnMoreLinkStyles
|
|
74
|
+
}, (0, _react.jsx)(_reactIntlNext.FormattedMessage, _messages.initialStateViewMessages.learnMoreLink)) : null));
|
|
46
75
|
};
|
|
@@ -11,14 +11,24 @@ var initialStateViewMessages = exports.initialStateViewMessages = (0, _reactIntl
|
|
|
11
11
|
description: 'The initial modal search state title that gives the user some idea about how to get information',
|
|
12
12
|
defaultMessage: 'Search for Jira issues'
|
|
13
13
|
},
|
|
14
|
-
|
|
14
|
+
beta: {
|
|
15
|
+
id: 'linkDataSource.modal-initial-state.beta',
|
|
16
|
+
description: 'Beta lozenge',
|
|
17
|
+
defaultMessage: 'Beta'
|
|
18
|
+
},
|
|
19
|
+
searchDescriptionForBasicSearch: {
|
|
20
|
+
id: 'linkDataSource.modal-initial-state.searchDescription',
|
|
21
|
+
description: 'The initial modal search state helper message displayed under the search title when basic search mode is selected',
|
|
22
|
+
defaultMessage: 'Search by keyword for issues to insert.'
|
|
23
|
+
},
|
|
24
|
+
searchDescriptionForJQLSearch: {
|
|
15
25
|
id: 'linkDataSource.modal-initial-state.searchDescription',
|
|
16
|
-
description: 'The initial modal search state helper message displayed under the search title',
|
|
17
|
-
defaultMessage: '
|
|
26
|
+
description: 'The initial modal search state helper message displayed under the search title when JQL search mode is selected',
|
|
27
|
+
defaultMessage: 'Use JQL (Jira Query Language) to search for issues.'
|
|
18
28
|
},
|
|
19
29
|
learnMoreLink: {
|
|
20
30
|
id: 'linkDataSource.modal-initial-state.learnMoreLink',
|
|
21
31
|
description: 'The link that displays under the search description to help people know more about JQL',
|
|
22
|
-
defaultMessage: 'Learn
|
|
32
|
+
defaultMessage: 'Learn how to search with JQL'
|
|
23
33
|
}
|
|
24
34
|
});
|
|
@@ -5,7 +5,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
8
|
+
exports.JiraSearchContainer = void 0;
|
|
9
9
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _react2 = require("@emotion/react");
|
|
@@ -30,13 +30,12 @@ var inputContainerStyles = (0, _react2.css)({
|
|
|
30
30
|
});
|
|
31
31
|
var DEFAULT_JQL_QUERY = 'created >= -30d order by created DESC';
|
|
32
32
|
var JiraSearchMethodSwitcher = _modeSwitcher.ModeSwitcher;
|
|
33
|
-
var getInitialSearchMethod = exports.getInitialSearchMethod = function getInitialSearchMethod(initialJql) {
|
|
34
|
-
return initialJql ? 'jql' : 'basic';
|
|
35
|
-
};
|
|
36
33
|
var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchContainer(props) {
|
|
37
34
|
var isSearching = props.isSearching,
|
|
38
35
|
parameters = props.parameters,
|
|
39
|
-
onSearch = props.onSearch
|
|
36
|
+
onSearch = props.onSearch,
|
|
37
|
+
onSearchMethodChangeCallback = props.onSearchMethodChange,
|
|
38
|
+
initialSearchMethod = props.initialSearchMethod;
|
|
40
39
|
var _ref = parameters || {},
|
|
41
40
|
cloudId = _ref.cloudId,
|
|
42
41
|
initialJql = _ref.jql;
|
|
@@ -46,7 +45,7 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
46
45
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
47
46
|
basicSearchTerm = _useState2[0],
|
|
48
47
|
setBasicSearchTerm = _useState2[1];
|
|
49
|
-
var _useState3 = (0, _react.useState)(
|
|
48
|
+
var _useState3 = (0, _react.useState)(initialSearchMethod),
|
|
50
49
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
51
50
|
currentSearchMethod = _useState4[0],
|
|
52
51
|
setCurrentSearchMethod = _useState4[1];
|
|
@@ -64,10 +63,11 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
64
63
|
setOrderDirection = _useState10[1];
|
|
65
64
|
var _useDatasourceAnalyti = (0, _analytics.useDatasourceAnalyticsEvents)(),
|
|
66
65
|
fireEvent = _useDatasourceAnalyti.fireEvent;
|
|
67
|
-
var
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
var onSearchMethodChange = (0, _react.useCallback)(function (searchMethod) {
|
|
67
|
+
onSearchMethodChangeCallback(searchMethod);
|
|
68
|
+
setCurrentSearchMethod(searchMethod);
|
|
69
|
+
}, [onSearchMethodChangeCallback]);
|
|
70
|
+
var handleBasicSearchChange = (0, _react.useCallback)(function (e) {
|
|
71
71
|
var rawSearch = e.currentTarget.value;
|
|
72
72
|
setBasicSearchTerm(rawSearch);
|
|
73
73
|
setJql((0, _buildJQL.buildJQL)({
|
|
@@ -75,8 +75,8 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
75
75
|
orderDirection: orderDirection,
|
|
76
76
|
orderKey: orderKey
|
|
77
77
|
}));
|
|
78
|
-
};
|
|
79
|
-
var onQueryChange = function
|
|
78
|
+
}, [orderDirection, orderKey]);
|
|
79
|
+
var onQueryChange = (0, _react.useCallback)(function (query) {
|
|
80
80
|
var _query$split$map$filt, _fragments$at, _fragments$at2, _fragments$at3;
|
|
81
81
|
// determine if order keys have been set so they can be saved and persisted when changes occur in basic search
|
|
82
82
|
var fragments = (_query$split$map$filt = query === null || query === void 0 ? void 0 : query.split(/(^| )(order by)( |$)/i).map(function (item) {
|
|
@@ -92,8 +92,8 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
92
92
|
setOrderDirection(order);
|
|
93
93
|
}
|
|
94
94
|
setJql(query);
|
|
95
|
-
};
|
|
96
|
-
var handleSearch = function
|
|
95
|
+
}, []);
|
|
96
|
+
var handleSearch = (0, _react.useCallback)(function () {
|
|
97
97
|
onSearch({
|
|
98
98
|
jql: jql
|
|
99
99
|
}, currentSearchMethod);
|
|
@@ -102,7 +102,7 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
102
102
|
} else if (currentSearchMethod === 'jql') {
|
|
103
103
|
fireEvent('ui.jqlEditor.searched', {});
|
|
104
104
|
}
|
|
105
|
-
};
|
|
105
|
+
}, [currentSearchMethod, fireEvent, jql, onSearch]);
|
|
106
106
|
var showBasicFilters = (0, _react.useMemo)(function () {
|
|
107
107
|
if ((0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.datasource.show-jlol-basic-filters')) {
|
|
108
108
|
return true;
|
|
@@ -123,14 +123,14 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
123
123
|
onSearch: handleSearch,
|
|
124
124
|
query: jql
|
|
125
125
|
}), (0, _react2.jsx)(JiraSearchMethodSwitcher, {
|
|
126
|
-
onOptionValueChange:
|
|
126
|
+
onOptionValueChange: onSearchMethodChange,
|
|
127
127
|
selectedOptionValue: currentSearchMethod,
|
|
128
128
|
options: [{
|
|
129
|
-
label: formatMessage(_messages.modeSwitcherMessages.basicTextSearchLabel),
|
|
130
|
-
value: 'basic'
|
|
131
|
-
}, {
|
|
132
129
|
label: 'JQL',
|
|
133
130
|
value: 'jql'
|
|
131
|
+
}, {
|
|
132
|
+
label: formatMessage(_messages.modeSwitcherMessages.basicTextSearchLabel),
|
|
133
|
+
value: 'basic'
|
|
134
134
|
}]
|
|
135
135
|
}));
|
|
136
136
|
};
|
|
@@ -122,7 +122,12 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
122
122
|
// analytics related parameters
|
|
123
123
|
var searchCount = (0, _react.useRef)(0);
|
|
124
124
|
var userInteractionActions = (0, _react.useRef)(new Set());
|
|
125
|
-
var
|
|
125
|
+
var initialSearchMethod = 'jql'; // TODO EDM-7688 This where we can add feature that decides if it's basic or jql based on JQL content (Regexp)
|
|
126
|
+
var _useState11 = (0, _react.useState)(initialSearchMethod),
|
|
127
|
+
_useState12 = (0, _slicedToArray2.default)(_useState11, 2),
|
|
128
|
+
currentSearchMethod = _useState12[0],
|
|
129
|
+
setCurrentSearchMethod = _useState12[1];
|
|
130
|
+
var searchMethodSearchedWith = (0, _react.useRef)(null);
|
|
126
131
|
var visibleColumnCount = (0, _react.useRef)((visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.length) || 0);
|
|
127
132
|
var parameters = (0, _react.useMemo)(function () {
|
|
128
133
|
return !!cloudId ? {
|
|
@@ -239,12 +244,12 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
239
244
|
}, [cloudId, selectedJiraSite]);
|
|
240
245
|
var fireSingleItemViewedEvent = (0, _react.useCallback)(function () {
|
|
241
246
|
fireEvent('ui.link.viewed.singleItem', _objectSpread(_objectSpread({}, analyticsPayload), {}, {
|
|
242
|
-
searchMethod: (0, _utils.mapSearchMethod)(
|
|
247
|
+
searchMethod: (0, _utils.mapSearchMethod)(searchMethodSearchedWith.current)
|
|
243
248
|
}));
|
|
244
249
|
}, [analyticsPayload, fireEvent]);
|
|
245
250
|
var fireCountViewedEvent = (0, _react.useCallback)(function () {
|
|
246
251
|
fireEvent('ui.link.viewed.count', _objectSpread(_objectSpread({}, analyticsPayload), {}, {
|
|
247
|
-
searchMethod: (0, _utils.mapSearchMethod)(
|
|
252
|
+
searchMethod: (0, _utils.mapSearchMethod)(searchMethodSearchedWith.current),
|
|
248
253
|
totalItemCount: totalCount || 0
|
|
249
254
|
}));
|
|
250
255
|
}, [analyticsPayload, fireEvent, totalCount]);
|
|
@@ -252,7 +257,7 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
252
257
|
if (isDataReady) {
|
|
253
258
|
fireEvent('ui.table.viewed.datasourceConfigModal', _objectSpread(_objectSpread({}, analyticsPayload), {}, {
|
|
254
259
|
totalItemCount: totalCount || 0,
|
|
255
|
-
searchMethod: (0, _utils.mapSearchMethod)(
|
|
260
|
+
searchMethod: (0, _utils.mapSearchMethod)(searchMethodSearchedWith.current),
|
|
256
261
|
displayedColumnCount: visibleColumnCount.current
|
|
257
262
|
}));
|
|
258
263
|
}
|
|
@@ -283,7 +288,7 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
283
288
|
(0, _useColumnPickerRenderedFailedUfoExperience.useColumnPickerRenderedFailedUfoExperience)(status, modalRenderInstanceId);
|
|
284
289
|
var onSearch = (0, _react.useCallback)(function (newParameters, searchMethod) {
|
|
285
290
|
searchCount.current++;
|
|
286
|
-
|
|
291
|
+
searchMethodSearchedWith.current = searchMethod;
|
|
287
292
|
if (jql !== newParameters.jql) {
|
|
288
293
|
userInteractionActions.current.add(_types.DatasourceAction.QUERY_UPDATED);
|
|
289
294
|
}
|
|
@@ -329,7 +334,7 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
329
334
|
displayedColumnCount: visibleColumnCount.current,
|
|
330
335
|
display: getDisplayValue(currentViewMode, totalCount || 0),
|
|
331
336
|
searchCount: searchCount.current,
|
|
332
|
-
searchMethod: (0, _utils.mapSearchMethod)(
|
|
337
|
+
searchMethod: (0, _utils.mapSearchMethod)(searchMethodSearchedWith.current),
|
|
333
338
|
actions: Array.from(userInteractionActions.current)
|
|
334
339
|
}),
|
|
335
340
|
eventType: 'ui'
|
|
@@ -383,8 +388,9 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
383
388
|
setCurrentViewMode(selectedMode);
|
|
384
389
|
};
|
|
385
390
|
var handleOnNextPage = (0, _react.useCallback)(function () {
|
|
391
|
+
var onNextPageProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
386
392
|
userInteractionActions.current.add(_types.DatasourceAction.NEXT_PAGE_SCROLLED);
|
|
387
|
-
onNextPage();
|
|
393
|
+
onNextPage(onNextPageProps);
|
|
388
394
|
}, [onNextPage]);
|
|
389
395
|
var handleVisibleColumnKeysChange = (0, _react.useCallback)(function () {
|
|
390
396
|
var newVisibleColumnKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
@@ -450,7 +456,9 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
450
456
|
}, !!jql ? (0, _react2.jsx)(_issueLikeTable.EmptyState, {
|
|
451
457
|
testId: "jira-jql-datasource-modal--empty-state",
|
|
452
458
|
isLoading: true
|
|
453
|
-
}) : (0, _react2.jsx)(_initialStateView.InitialStateView,
|
|
459
|
+
}) : (0, _react2.jsx)(_initialStateView.InitialStateView, {
|
|
460
|
+
searchMethod: currentSearchMethod
|
|
461
|
+
}));
|
|
454
462
|
}
|
|
455
463
|
var firstIssueUrl = retrieveUrlForSmartCardRender();
|
|
456
464
|
if (responseItems.length === 1 && firstIssueUrl) {
|
|
@@ -461,7 +469,7 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
461
469
|
}));
|
|
462
470
|
}
|
|
463
471
|
return issueLikeDataTableView;
|
|
464
|
-
}, [status, jqlUrl, resolvedWithNoResults, columns.length, retrieveUrlForSmartCardRender, responseItems.length, issueLikeDataTableView, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.displayName, jql]);
|
|
472
|
+
}, [status, jqlUrl, resolvedWithNoResults, columns.length, retrieveUrlForSmartCardRender, responseItems.length, issueLikeDataTableView, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.displayName, jql, currentSearchMethod]);
|
|
465
473
|
return (0, _react2.jsx)(_modalDialog.ModalTransition, null, (0, _react2.jsx)(_modalDialog.default, {
|
|
466
474
|
testId: 'jira-jql-datasource-modal',
|
|
467
475
|
onClose: onCancel,
|
|
@@ -492,7 +500,9 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
492
500
|
})), (0, _react2.jsx)(_modalDialog.ModalBody, null, (0, _react2.jsx)(_jiraSearchContainer.JiraSearchContainer, {
|
|
493
501
|
isSearching: status === 'loading',
|
|
494
502
|
parameters: parameters,
|
|
495
|
-
onSearch: onSearch
|
|
503
|
+
onSearch: onSearch,
|
|
504
|
+
initialSearchMethod: initialSearchMethod,
|
|
505
|
+
onSearchMethodChange: setCurrentSearchMethod
|
|
496
506
|
}), currentViewMode === 'count' ? renderCountModeContent() : renderIssuesModeContent()), (0, _react2.jsx)(_modalDialog.ModalFooter, null, shouldShowIssueCount && (0, _react2.jsx)("div", {
|
|
497
507
|
"data-testid": "jira-jql-datasource-modal-total-issues-count",
|
|
498
508
|
css: issueCountStyles
|
|
@@ -76,14 +76,11 @@ export const useDatasourceTableState = ({
|
|
|
76
76
|
shouldRequestFirstPage,
|
|
77
77
|
shouldForceRequest = false
|
|
78
78
|
} = requestInfo;
|
|
79
|
-
const sortedFieldKeys = [...fieldKeys];
|
|
80
|
-
// Sort keys to use cached version of response regardless of the order
|
|
81
|
-
sortedFieldKeys.sort();
|
|
82
79
|
const datasourceDataRequest = {
|
|
83
80
|
parameters,
|
|
84
81
|
pageSize: DEFAULT_GET_DATASOURCE_DATA_PAGE_SIZE,
|
|
85
82
|
pageCursor: shouldRequestFirstPage ? undefined : nextCursor,
|
|
86
|
-
fields:
|
|
83
|
+
fields: fieldKeys,
|
|
87
84
|
includeSchema: isSchemaFromData
|
|
88
85
|
};
|
|
89
86
|
setStatus('loading');
|
|
@@ -3,6 +3,6 @@ export const basicSearchInputMessages = defineMessages({
|
|
|
3
3
|
basicTextSearchLabel: {
|
|
4
4
|
id: 'linkDataSource.jira-issues.configmodal.basicTextSearchPlaceholder',
|
|
5
5
|
description: 'Placeholder text for the search input box',
|
|
6
|
-
defaultMessage: 'Search'
|
|
6
|
+
defaultMessage: 'Search for issues by keyword'
|
|
7
7
|
}
|
|
8
8
|
});
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/** @jsx jsx */
|
|
2
2
|
|
|
3
3
|
import { css, jsx } from '@emotion/react';
|
|
4
|
-
import {
|
|
4
|
+
import { FormattedMessage } from 'react-intl-next';
|
|
5
|
+
import Lozenge from '@atlaskit/lozenge';
|
|
6
|
+
import { N300 } from '@atlaskit/theme/colors';
|
|
5
7
|
import { InitialStateSVG } from './assets/initial-state-svg';
|
|
6
8
|
import { initialStateViewMessages } from './messages';
|
|
7
9
|
const initialStateViewContainerStyles = css({
|
|
@@ -13,29 +15,53 @@ const svgAndTextsWrapperStyles = css({
|
|
|
13
15
|
textAlign: 'center',
|
|
14
16
|
alignSelf: 'center',
|
|
15
17
|
paddingTop: "var(--ds-space-600, 48px)",
|
|
16
|
-
paddingBottom: "var(--ds-space-600, 48px)"
|
|
18
|
+
paddingBottom: "var(--ds-space-600, 48px)",
|
|
19
|
+
width: '260px'
|
|
20
|
+
});
|
|
21
|
+
const betaTagStyles = css({
|
|
22
|
+
display: 'flex'
|
|
17
23
|
});
|
|
18
24
|
const searchTitleStyles = css({
|
|
19
|
-
|
|
20
|
-
|
|
25
|
+
color: `var(--ds-text-subtlest, ${N300})`,
|
|
26
|
+
fontWeight: "var(--ds-font-weight-medium, 500)",
|
|
27
|
+
fontSize: "var(--ds-font-size-300, 20px)",
|
|
21
28
|
lineHeight: "var(--ds-font-lineHeight-300, 24px)",
|
|
22
29
|
paddingTop: "var(--ds-space-200, 16px)",
|
|
23
|
-
paddingBottom: "var(--ds-space-100, 8px)"
|
|
30
|
+
paddingBottom: "var(--ds-space-100, 8px)",
|
|
31
|
+
display: 'flex',
|
|
32
|
+
justifyContent: 'center',
|
|
33
|
+
alignItems: 'center',
|
|
34
|
+
gap: "var(--ds-space-100, 8px)"
|
|
35
|
+
});
|
|
36
|
+
const mainTextStyles = css({
|
|
37
|
+
color: `var(--ds-text-subtlest, ${N300})`
|
|
38
|
+
});
|
|
39
|
+
const learnMoreLinkStyles = css({
|
|
40
|
+
paddingTop: "var(--ds-space-200, 16px)",
|
|
41
|
+
display: 'inline-block'
|
|
24
42
|
});
|
|
43
|
+
const methodToDescriptionMessage = {
|
|
44
|
+
basic: initialStateViewMessages.searchDescriptionForBasicSearch,
|
|
45
|
+
jql: initialStateViewMessages.searchDescriptionForJQLSearch
|
|
46
|
+
};
|
|
25
47
|
const jqlSupportDocumentLink = 'https://support.atlassian.com/jira-service-management-cloud/docs/use-advanced-search-with-jira-query-language-jql/';
|
|
26
|
-
export const InitialStateView = (
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
48
|
+
export const InitialStateView = ({
|
|
49
|
+
searchMethod
|
|
50
|
+
}) => jsx("div", {
|
|
51
|
+
css: initialStateViewContainerStyles,
|
|
52
|
+
"data-testid": "jlol-datasource-modal--initial-state-view"
|
|
53
|
+
}, jsx("div", {
|
|
54
|
+
css: svgAndTextsWrapperStyles
|
|
55
|
+
}, jsx(InitialStateSVG, null), jsx("div", {
|
|
56
|
+
css: searchTitleStyles
|
|
57
|
+
}, jsx("div", {
|
|
58
|
+
css: betaTagStyles
|
|
59
|
+
}, jsx(Lozenge, {
|
|
60
|
+
appearance: "new"
|
|
61
|
+
}, jsx(FormattedMessage, initialStateViewMessages.beta))), jsx(FormattedMessage, initialStateViewMessages.searchTitle)), jsx("div", {
|
|
62
|
+
css: mainTextStyles
|
|
63
|
+
}, jsx(FormattedMessage, methodToDescriptionMessage[searchMethod])), searchMethod === 'jql' ? jsx("a", {
|
|
64
|
+
href: jqlSupportDocumentLink,
|
|
65
|
+
target: "_blank",
|
|
66
|
+
css: learnMoreLinkStyles
|
|
67
|
+
}, jsx(FormattedMessage, initialStateViewMessages.learnMoreLink)) : null));
|
|
@@ -5,14 +5,24 @@ export const initialStateViewMessages = defineMessages({
|
|
|
5
5
|
description: 'The initial modal search state title that gives the user some idea about how to get information',
|
|
6
6
|
defaultMessage: 'Search for Jira issues'
|
|
7
7
|
},
|
|
8
|
-
|
|
8
|
+
beta: {
|
|
9
|
+
id: 'linkDataSource.modal-initial-state.beta',
|
|
10
|
+
description: 'Beta lozenge',
|
|
11
|
+
defaultMessage: 'Beta'
|
|
12
|
+
},
|
|
13
|
+
searchDescriptionForBasicSearch: {
|
|
14
|
+
id: 'linkDataSource.modal-initial-state.searchDescription',
|
|
15
|
+
description: 'The initial modal search state helper message displayed under the search title when basic search mode is selected',
|
|
16
|
+
defaultMessage: 'Search by keyword for issues to insert.'
|
|
17
|
+
},
|
|
18
|
+
searchDescriptionForJQLSearch: {
|
|
9
19
|
id: 'linkDataSource.modal-initial-state.searchDescription',
|
|
10
|
-
description: 'The initial modal search state helper message displayed under the search title',
|
|
11
|
-
defaultMessage: '
|
|
20
|
+
description: 'The initial modal search state helper message displayed under the search title when JQL search mode is selected',
|
|
21
|
+
defaultMessage: 'Use JQL (Jira Query Language) to search for issues.'
|
|
12
22
|
},
|
|
13
23
|
learnMoreLink: {
|
|
14
24
|
id: 'linkDataSource.modal-initial-state.learnMoreLink',
|
|
15
25
|
description: 'The link that displays under the search description to help people know more about JQL',
|
|
16
|
-
defaultMessage: 'Learn
|
|
26
|
+
defaultMessage: 'Learn how to search with JQL'
|
|
17
27
|
}
|
|
18
28
|
});
|