@atlaskit/link-datasource 4.32.5 → 4.33.1
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 +20 -0
- package/dist/cjs/hooks/useDatasourceTableState.js +1 -5
- package/dist/cjs/ui/common/modal/insert-button/index.js +11 -3
- package/dist/cjs/ui/datasource-table-view/datasourceTableView.js +1 -5
- package/dist/cjs/ui/issue-like-table/index.js +1 -4
- package/dist/cjs/ui/jira-issues-modal/jira-search-container/index.js +8 -3
- package/dist/cjs/ui/jira-issues-modal/modal/index.js +23 -10
- package/dist/es2019/hooks/useDatasourceTableState.js +1 -5
- package/dist/es2019/ui/common/modal/insert-button/index.js +11 -3
- package/dist/es2019/ui/datasource-table-view/datasourceTableView.js +1 -5
- package/dist/es2019/ui/issue-like-table/index.compiled.css +1 -1
- package/dist/es2019/ui/issue-like-table/index.js +2 -5
- package/dist/es2019/ui/jira-issues-modal/jira-search-container/index.js +8 -3
- package/dist/es2019/ui/jira-issues-modal/modal/index.js +12 -2
- package/dist/esm/hooks/useDatasourceTableState.js +1 -5
- package/dist/esm/ui/common/modal/insert-button/index.js +11 -3
- package/dist/esm/ui/datasource-table-view/datasourceTableView.js +1 -5
- package/dist/esm/ui/issue-like-table/index.js +1 -4
- package/dist/esm/ui/jira-issues-modal/jira-search-container/index.js +8 -3
- package/dist/esm/ui/jira-issues-modal/modal/index.js +23 -10
- package/dist/types/ui/common/modal/insert-button/index.d.ts +4 -2
- package/dist/types/ui/jira-issues-modal/jira-search-container/index.d.ts +1 -0
- package/dist/types/ui/jira-issues-modal/jql-editor/index.d.ts +2 -1
- package/dist/types-ts4.5/ui/common/modal/insert-button/index.d.ts +4 -2
- package/dist/types-ts4.5/ui/jira-issues-modal/jira-search-container/index.d.ts +1 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/jql-editor/index.d.ts +2 -1
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @atlaskit/link-datasource
|
|
2
2
|
|
|
3
|
+
## 4.33.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`ea409a683cd48`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/ea409a683cd48) -
|
|
8
|
+
fg cleanup: lp_disable_datasource_table_max_height_restriction
|
|
9
|
+
|
|
10
|
+
## 4.33.0
|
|
11
|
+
|
|
12
|
+
### Minor Changes
|
|
13
|
+
|
|
14
|
+
- [`52e8d22762662`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/52e8d22762662) -
|
|
15
|
+
Adding functionality to update JQL search with latest JQL query input (if valid) before inserting
|
|
16
|
+
using Jira Work Items Modal in confluence - Insert button remains disabled until search input is
|
|
17
|
+
valid/well-formed. Gated behind navx-1345-issues-modal-jql-submit-fix
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- Updated dependencies
|
|
22
|
+
|
|
3
23
|
## 4.32.5
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
|
@@ -13,7 +13,6 @@ var _react = require("react");
|
|
|
13
13
|
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
14
14
|
var _atlassianContext = require("@atlaskit/atlassian-context");
|
|
15
15
|
var _linkClientExtension = require("@atlaskit/link-client-extension");
|
|
16
|
-
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
17
16
|
var _analytics = require("../analytics");
|
|
18
17
|
var _state = require("../state");
|
|
19
18
|
var _actions = require("../state/actions");
|
|
@@ -38,10 +37,7 @@ var useDatasourceTableState = exports.useDatasourceTableState = function useData
|
|
|
38
37
|
fireEvent: fireEvent
|
|
39
38
|
}),
|
|
40
39
|
discoverActions = _useDiscoverActions.discoverActions;
|
|
41
|
-
|
|
42
|
-
var isInPDFRender = (0, _platformFeatureFlags.fg)('lp_disable_datasource_table_max_height_restriction') ?
|
|
43
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
44
|
-
(0, _useIsInPDFRender.useIsInPDFRender)() : false;
|
|
40
|
+
var isInPDFRender = (0, _useIsInPDFRender.useIsInPDFRender)();
|
|
45
41
|
var idFieldCount = 1;
|
|
46
42
|
var keyFieldCount = 1;
|
|
47
43
|
var _useState = (0, _react.useState)([]),
|
|
@@ -9,6 +9,7 @@ exports.InsertButton = void 0;
|
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
|
|
12
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
12
13
|
var _analytics = require("../../../../analytics");
|
|
13
14
|
var _types = require("../../../../analytics/types");
|
|
14
15
|
var _schemaUtils = require("../../../../common/utils/schema-utils");
|
|
@@ -22,7 +23,9 @@ var InsertButton = exports.InsertButton = function InsertButton(_ref) {
|
|
|
22
23
|
var testId = _ref.testId,
|
|
23
24
|
url = _ref.url,
|
|
24
25
|
getAnalyticsPayload = _ref.getAnalyticsPayload,
|
|
25
|
-
children = _ref.children
|
|
26
|
+
children = _ref.children,
|
|
27
|
+
onBeforeInsert = _ref.onBeforeInsert,
|
|
28
|
+
hasErrors = _ref.hasErrors;
|
|
26
29
|
var _useDatasourceContext = (0, _datasourceContext.useDatasourceContext)(),
|
|
27
30
|
datasourceId = _useDatasourceContext.datasourceId,
|
|
28
31
|
parameters = _useDatasourceContext.parameters,
|
|
@@ -38,12 +41,17 @@ var InsertButton = exports.InsertButton = function InsertButton(_ref) {
|
|
|
38
41
|
var userInteractions = (0, _userInteractions.useUserInteractions)();
|
|
39
42
|
var _useViewModeContext = (0, _useViewModeContext2.useViewModeContext)(),
|
|
40
43
|
currentViewMode = _useViewModeContext.currentViewMode;
|
|
41
|
-
var
|
|
44
|
+
var isJqlSubmitFixEnabled = (0, _platformFeatureFlags.fg)('navx-1345-issues-modal-jql-submit-fix');
|
|
45
|
+
var isInsertDisabled = (isJqlSubmitFixEnabled ? hasErrors : false) || !isValidParameters(parameters) || status === 'rejected' || status === 'unauthorized' || status === 'loading';
|
|
42
46
|
var onInsertPressed = (0, _react.useCallback)(function (_e, analyticsEvent) {
|
|
43
47
|
var _insertButtonClickedE;
|
|
44
48
|
if (!parameters || !isValidParameters(parameters) || !url) {
|
|
45
49
|
return;
|
|
46
50
|
}
|
|
51
|
+
if (isJqlSubmitFixEnabled) {
|
|
52
|
+
onBeforeInsert === null || onBeforeInsert === void 0 || onBeforeInsert(parameters);
|
|
53
|
+
}
|
|
54
|
+
;
|
|
47
55
|
var insertButtonClickedEvent = analyticsEvent.update({
|
|
48
56
|
actionSubjectId: 'insert',
|
|
49
57
|
attributes: _objectSpread({
|
|
@@ -86,7 +94,7 @@ var InsertButton = exports.InsertButton = function InsertButton(_ref) {
|
|
|
86
94
|
}]
|
|
87
95
|
}, url), consumerEvent);
|
|
88
96
|
}
|
|
89
|
-
}, [columnCustomSizes, currentViewMode, datasourceId, getAnalyticsPayload, isValidParameters, onInsert, parameters, totalCount, url, userInteractions, visibleColumnCount, visibleColumnKeys, wrappedColumnKeys]);
|
|
97
|
+
}, [columnCustomSizes, currentViewMode, datasourceId, getAnalyticsPayload, isValidParameters, onInsert, parameters, totalCount, url, userInteractions, visibleColumnCount, visibleColumnKeys, wrappedColumnKeys, isJqlSubmitFixEnabled, onBeforeInsert]);
|
|
90
98
|
return /*#__PURE__*/_react.default.createElement(_standardButton.default, {
|
|
91
99
|
appearance: "primary",
|
|
92
100
|
onClick: onInsertPressed,
|
|
@@ -69,11 +69,7 @@ var DatasourceTableViewWithoutAnalytics = function DatasourceTableViewWithoutAna
|
|
|
69
69
|
providerName = _useDatasourceTableSt.providerName,
|
|
70
70
|
destinationObjectTypes = _useDatasourceTableSt.destinationObjectTypes,
|
|
71
71
|
authDetails = _useDatasourceTableSt.authDetails;
|
|
72
|
-
|
|
73
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
74
|
-
var isInPDFRender = (0, _platformFeatureFlags.fg)('lp_disable_datasource_table_max_height_restriction') ?
|
|
75
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
76
|
-
(0, _useIsInPDFRender.useIsInPDFRender)() : false;
|
|
72
|
+
var isInPDFRender = (0, _useIsInPDFRender.useIsInPDFRender)();
|
|
77
73
|
var _useDatasourceAnalyti = (0, _analytics.useDatasourceAnalyticsEvents)(),
|
|
78
74
|
fireEvent = _useDatasourceAnalyti.fireEvent;
|
|
79
75
|
var experienceId = (0, _datasourceExperienceId.useDatasourceExperienceId)();
|
|
@@ -21,7 +21,6 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
|
|
|
21
21
|
var _tinyInvariant = _interopRequireDefault(require("tiny-invariant"));
|
|
22
22
|
var _flag = require("@atlaskit/flag");
|
|
23
23
|
var _linkingCommon = require("@atlaskit/linking-common");
|
|
24
|
-
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
25
24
|
var _closestEdge = require("@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge");
|
|
26
25
|
var _reorderWithEdge = require("@atlaskit/pragmatic-drag-and-drop-hitbox/util/reorder-with-edge");
|
|
27
26
|
var _pragmaticDragAndDropReactBeautifulDndAutoscroll = require("@atlaskit/pragmatic-drag-and-drop-react-beautiful-dnd-autoscroll");
|
|
@@ -215,9 +214,7 @@ var IssueLikeDataTableView = exports.IssueLikeDataTableView = function IssueLike
|
|
|
215
214
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
216
215
|
hasFullSchema = _useState4[0],
|
|
217
216
|
setHasFullSchema = _useState4[1];
|
|
218
|
-
var isInPDFRender = (0,
|
|
219
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
220
|
-
(0, _useIsInPDFRender.useIsInPDFRender)() : false;
|
|
217
|
+
var isInPDFRender = (0, _useIsInPDFRender.useIsInPDFRender)();
|
|
221
218
|
var isBottomOfTableVisibleRaw = (0, _useIsOnScreen.useIsOnScreen)(lastRowElement) && !isInPDFRender;
|
|
222
219
|
var containerRef = (0, _react.useRef)(null);
|
|
223
220
|
var _useState5 = (0, _react.useState)(function () {
|
|
@@ -15,6 +15,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
15
15
|
var _react = _interopRequireWildcard(require("react"));
|
|
16
16
|
var _reactIntlNext = require("react-intl-next");
|
|
17
17
|
var _useDebounce = require("use-debounce");
|
|
18
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
18
19
|
var _compiled = require("@atlaskit/primitives/compiled");
|
|
19
20
|
var _analytics = require("../../../analytics");
|
|
20
21
|
var _basicSearchInput = require("../../common/modal/basic-search-input");
|
|
@@ -48,7 +49,8 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
48
49
|
setSearchBarJql = props.setSearchBarJql,
|
|
49
50
|
_props$searchBarJql = props.searchBarJql,
|
|
50
51
|
searchBarJql = _props$searchBarJql === void 0 ? DEFAULT_JQL_QUERY : _props$searchBarJql,
|
|
51
|
-
site = props.site
|
|
52
|
+
site = props.site,
|
|
53
|
+
setHasJqlSyntaxErrors = props.setHasJqlSyntaxErrors;
|
|
52
54
|
var _ref = parameters || {},
|
|
53
55
|
currentCloudId = _ref.cloudId;
|
|
54
56
|
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
@@ -118,8 +120,11 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
118
120
|
orderKey: orderKey
|
|
119
121
|
}));
|
|
120
122
|
}, [setSearchBarJql, filterSelections, orderDirection, orderKey]);
|
|
121
|
-
var onQueryChange = (0, _react.useCallback)(function (query) {
|
|
123
|
+
var onQueryChange = (0, _react.useCallback)(function (query, jast) {
|
|
122
124
|
var _query$split$map$filt, _fragments$at, _fragments$at2, _fragments$at3;
|
|
125
|
+
if ((0, _platformFeatureFlags.fg)('navx-1345-issues-modal-jql-submit-fix')) {
|
|
126
|
+
setHasJqlSyntaxErrors === null || setHasJqlSyntaxErrors === void 0 || setHasJqlSyntaxErrors(jast.errors.length > 0);
|
|
127
|
+
}
|
|
123
128
|
// determine if order keys have been set so they can be saved and persisted when changes occur in basic search
|
|
124
129
|
var fragments = (_query$split$map$filt = query === null || query === void 0 ? void 0 : query.split(/(^| )(order by)( |$)/i).map(function (item) {
|
|
125
130
|
return item.trim();
|
|
@@ -134,7 +139,7 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
134
139
|
setOrderDirection(order);
|
|
135
140
|
}
|
|
136
141
|
setSearchBarJql(query);
|
|
137
|
-
}, [setSearchBarJql]);
|
|
142
|
+
}, [setSearchBarJql, setHasJqlSyntaxErrors]);
|
|
138
143
|
var handleSearch = (0, _react.useCallback)(function () {
|
|
139
144
|
var isCurrentQueryComplex = (0, _isQueryTooComplex.isQueryTooComplex)(searchBarJql);
|
|
140
145
|
onSearch({
|
|
@@ -100,24 +100,30 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
|
100
100
|
var _useState = (0, _react.useState)(jql),
|
|
101
101
|
_useState2 = (0, _slicedToArray2.default)(_useState, 1),
|
|
102
102
|
initialJql = _useState2[0];
|
|
103
|
+
var isJqlSubmitFixEnabled = (0, _platformFeatureFlags.fg)('navx-1345-issues-modal-jql-submit-fix');
|
|
104
|
+
var _useState3 = (0, _react.useState)(false),
|
|
105
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
106
|
+
hasJqlSyntaxErrors = _useState4[0],
|
|
107
|
+
setHasJqlSyntaxErrors = _useState4[1]; // Tracks if current jql input has syntax errors
|
|
108
|
+
|
|
103
109
|
var _useViewModeContext = (0, _useViewModeContext2.useViewModeContext)(),
|
|
104
110
|
currentViewMode = _useViewModeContext.currentViewMode;
|
|
105
111
|
var _useAvailableSites = (0, _useAvailableSites2.useAvailableSites)('jira', cloudId),
|
|
106
112
|
availableSites = _useAvailableSites.availableSites,
|
|
107
113
|
selectedJiraSite = _useAvailableSites.selectedSite;
|
|
108
|
-
var
|
|
109
|
-
|
|
110
|
-
searchBarJql =
|
|
111
|
-
setSearchBarJql =
|
|
114
|
+
var _useState5 = (0, _react.useState)(jql),
|
|
115
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
116
|
+
searchBarJql = _useState6[0],
|
|
117
|
+
setSearchBarJql = _useState6[1];
|
|
112
118
|
|
|
113
119
|
// analytics related parameters
|
|
114
120
|
var searchCount = (0, _react.useRef)(0);
|
|
115
121
|
var userInteractions = (0, _userInteractions.useUserInteractions)();
|
|
116
122
|
var initialSearchMethod = !(0, _isQueryTooComplex.isQueryTooComplex)(initialJql || '') ? 'basic' : 'jql';
|
|
117
|
-
var
|
|
118
|
-
|
|
119
|
-
currentSearchMethod =
|
|
120
|
-
setCurrentSearchMethod =
|
|
123
|
+
var _useState7 = (0, _react.useState)(initialSearchMethod),
|
|
124
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
125
|
+
currentSearchMethod = _useState8[0],
|
|
126
|
+
setCurrentSearchMethod = _useState8[1];
|
|
121
127
|
var searchMethodSearchedWith = (0, _react.useRef)(null);
|
|
122
128
|
var basicFilterSelectionsSearchedWith = (0, _react.useRef)({});
|
|
123
129
|
var isSearchedWithComplexQuery = (0, _react.useRef)(false);
|
|
@@ -374,6 +380,9 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
|
374
380
|
var upToDateJqlUrl = "".concat(selectedJiraSite.url, "/issues/?jql=").concat(encodeURIComponent(jql));
|
|
375
381
|
return currentViewMode === 'inline' && responseItems.length === 1 ? retrieveUrlForSmartCardRender() : upToDateJqlUrl;
|
|
376
382
|
}, [currentViewMode, parameters === null || parameters === void 0 ? void 0 : parameters.jql, responseItems, retrieveUrlForSmartCardRender, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url]);
|
|
383
|
+
var updateParametersJql = (0, _react.useCallback)(function (parameters) {
|
|
384
|
+
parameters.jql = searchBarJql;
|
|
385
|
+
}, [searchBarJql]);
|
|
377
386
|
return /*#__PURE__*/_react.default.createElement(_intlMessagesProvider.IntlMessagesProvider, {
|
|
378
387
|
defaultMessages: _en.default,
|
|
379
388
|
loaderFn: _fetchMessagesForLocale.fetchMessagesForLocale
|
|
@@ -402,6 +411,7 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
|
402
411
|
}))))), /*#__PURE__*/_react.default.createElement(_modalDialog.ModalBody, null, !hasNoJiraSites ? /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_jiraSearchContainer.JiraSearchContainer, {
|
|
403
412
|
setSearchBarJql: setSearchBarJql,
|
|
404
413
|
searchBarJql: searchBarJql,
|
|
414
|
+
setHasJqlSyntaxErrors: isJqlSubmitFixEnabled ? setHasJqlSyntaxErrors : undefined,
|
|
405
415
|
isSearching: status === 'loading',
|
|
406
416
|
parameters: parameters,
|
|
407
417
|
onSearch: onSearch,
|
|
@@ -425,11 +435,14 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
|
425
435
|
onCancel: onCancel,
|
|
426
436
|
getAnalyticsPayload: getCancelButtonAnalyticsPayload,
|
|
427
437
|
testId: "jira-datasource-modal--cancel-button"
|
|
428
|
-
}), !hasNoJiraSites && /*#__PURE__*/_react.default.createElement(_insertButton.InsertButton, {
|
|
438
|
+
}), !hasNoJiraSites && /*#__PURE__*/_react.default.createElement(_insertButton.InsertButton, (0, _extends2.default)({
|
|
429
439
|
testId: "jira-datasource-modal--insert-button",
|
|
430
440
|
url: urlToInsert,
|
|
431
441
|
getAnalyticsPayload: getInsertButtonAnalyticsPayload
|
|
432
|
-
},
|
|
442
|
+
}, isJqlSubmitFixEnabled ? {
|
|
443
|
+
onBeforeInsert: updateParametersJql,
|
|
444
|
+
hasErrors: hasJqlSyntaxErrors
|
|
445
|
+
} : {}), /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages3.modalMessages.insertIssuesButtonTextIssueTermSllv))))));
|
|
433
446
|
};
|
|
434
447
|
var ConnectedJiraIssueConfigModal = (0, _createDatasourceModal.createDatasourceModal)({
|
|
435
448
|
isValidParameters: isValidParameters,
|
|
@@ -2,7 +2,6 @@ import { useCallback, useEffect, useRef, useState } from 'react';
|
|
|
2
2
|
import isEqual from 'lodash/isEqual';
|
|
3
3
|
import { isFedRamp } from '@atlaskit/atlassian-context';
|
|
4
4
|
import { DEFAULT_GET_DATASOURCE_DATA_PAGE_SIZE, useDatasourceClientExtension } from '@atlaskit/link-client-extension';
|
|
5
|
-
import { fg } from '@atlaskit/platform-feature-flags';
|
|
6
5
|
import { useDatasourceAnalyticsEvents } from '../analytics';
|
|
7
6
|
import { useDatasourceActions } from '../state';
|
|
8
7
|
import { useDiscoverActions } from '../state/actions';
|
|
@@ -31,10 +30,7 @@ export const useDatasourceTableState = ({
|
|
|
31
30
|
captureError,
|
|
32
31
|
fireEvent
|
|
33
32
|
});
|
|
34
|
-
|
|
35
|
-
const isInPDFRender = fg('lp_disable_datasource_table_max_height_restriction') ?
|
|
36
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
37
|
-
useIsInPDFRender() : false;
|
|
33
|
+
const isInPDFRender = useIsInPDFRender();
|
|
38
34
|
const idFieldCount = 1;
|
|
39
35
|
const keyFieldCount = 1;
|
|
40
36
|
const [initialEmptyArray] = useState([]);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { useCallback } from 'react';
|
|
2
2
|
import Button from '@atlaskit/button/standard-button';
|
|
3
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
4
|
import { EVENT_CHANNEL } from '../../../../analytics';
|
|
4
5
|
import { DatasourceDisplay, DatasourceSearchMethod } from '../../../../analytics/types';
|
|
5
6
|
import { buildDatasourceAdf } from '../../../../common/utils/schema-utils';
|
|
@@ -10,7 +11,9 @@ export const InsertButton = ({
|
|
|
10
11
|
testId,
|
|
11
12
|
url,
|
|
12
13
|
getAnalyticsPayload,
|
|
13
|
-
children
|
|
14
|
+
children,
|
|
15
|
+
onBeforeInsert,
|
|
16
|
+
hasErrors
|
|
14
17
|
}) => {
|
|
15
18
|
const {
|
|
16
19
|
datasourceId,
|
|
@@ -30,12 +33,17 @@ export const InsertButton = ({
|
|
|
30
33
|
const {
|
|
31
34
|
currentViewMode
|
|
32
35
|
} = useViewModeContext();
|
|
33
|
-
const
|
|
36
|
+
const isJqlSubmitFixEnabled = fg('navx-1345-issues-modal-jql-submit-fix');
|
|
37
|
+
const isInsertDisabled = (isJqlSubmitFixEnabled ? hasErrors : false) || !isValidParameters(parameters) || status === 'rejected' || status === 'unauthorized' || status === 'loading';
|
|
34
38
|
const onInsertPressed = useCallback((_e, analyticsEvent) => {
|
|
35
39
|
var _insertButtonClickedE;
|
|
36
40
|
if (!parameters || !isValidParameters(parameters) || !url) {
|
|
37
41
|
return;
|
|
38
42
|
}
|
|
43
|
+
if (isJqlSubmitFixEnabled) {
|
|
44
|
+
onBeforeInsert === null || onBeforeInsert === void 0 ? void 0 : onBeforeInsert(parameters);
|
|
45
|
+
}
|
|
46
|
+
;
|
|
39
47
|
const insertButtonClickedEvent = analyticsEvent.update({
|
|
40
48
|
actionSubjectId: 'insert',
|
|
41
49
|
attributes: {
|
|
@@ -81,7 +89,7 @@ export const InsertButton = ({
|
|
|
81
89
|
}]
|
|
82
90
|
}, url), consumerEvent);
|
|
83
91
|
}
|
|
84
|
-
}, [columnCustomSizes, currentViewMode, datasourceId, getAnalyticsPayload, isValidParameters, onInsert, parameters, totalCount, url, userInteractions, visibleColumnCount, visibleColumnKeys, wrappedColumnKeys]);
|
|
92
|
+
}, [columnCustomSizes, currentViewMode, datasourceId, getAnalyticsPayload, isValidParameters, onInsert, parameters, totalCount, url, userInteractions, visibleColumnCount, visibleColumnKeys, wrappedColumnKeys, isJqlSubmitFixEnabled, onBeforeInsert]);
|
|
85
93
|
return /*#__PURE__*/React.createElement(Button, {
|
|
86
94
|
appearance: "primary",
|
|
87
95
|
onClick: onInsertPressed,
|
|
@@ -60,11 +60,7 @@ const DatasourceTableViewWithoutAnalytics = ({
|
|
|
60
60
|
parameters,
|
|
61
61
|
fieldKeys: visibleColumnKeys
|
|
62
62
|
});
|
|
63
|
-
|
|
64
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
65
|
-
const isInPDFRender = fg('lp_disable_datasource_table_max_height_restriction') ?
|
|
66
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
67
|
-
useIsInPDFRender() : false;
|
|
63
|
+
const isInPDFRender = useIsInPDFRender();
|
|
68
64
|
const {
|
|
69
65
|
fireEvent
|
|
70
66
|
} = useDatasourceAnalyticsEvents();
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
.ProseMirror .pm-table-wrapper>table thead ._19xw13hi:last-of-type{background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,var(--ds-elevation-surface-current,#fff) 10%)}
|
|
5
5
|
.ProseMirror .pm-table-wrapper>table thead ._2eacidpf:last-of-type{border:0}
|
|
6
6
|
.ProseMirror .pm-table-wrapper>table thead ._aks5idpf{border:0}
|
|
7
|
-
._11c8dcr7{font:var(--ds-font-body-UNSAFE_small,normal 400 9pt/1pc ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Ubuntu,"Helvetica Neue",sans-serif)}
|
|
8
7
|
._11c8fhey{font:var(--ds-font-body,normal 400 14px/20px "Atlassian Sans",ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Ubuntu,"Helvetica Neue",sans-serif)}
|
|
8
|
+
._11c8rpcx{font:var(--ds-font-body-small,normal 400 9pt/1pc ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Ubuntu,"Helvetica Neue",sans-serif)}
|
|
9
9
|
._13xs13hi:last-of-type{background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,var(--ds-elevation-surface-current,#fff) 10%)}
|
|
10
10
|
._19itidpf{border:0}
|
|
11
11
|
._1bqmidpf:last-of-type{border:0}
|
|
@@ -10,7 +10,6 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
|
10
10
|
import invariant from 'tiny-invariant';
|
|
11
11
|
import { FlagsProvider } from '@atlaskit/flag';
|
|
12
12
|
import { Skeleton } from '@atlaskit/linking-common';
|
|
13
|
-
import { fg } from '@atlaskit/platform-feature-flags';
|
|
14
13
|
import { extractClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
|
|
15
14
|
import { reorderWithEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/util/reorder-with-edge';
|
|
16
15
|
import { autoScroller } from '@atlaskit/pragmatic-drag-and-drop-react-beautiful-dnd-autoscroll';
|
|
@@ -186,9 +185,7 @@ export const IssueLikeDataTableView = ({
|
|
|
186
185
|
const tableHeaderRowRef = useRef(null);
|
|
187
186
|
const [lastRowElement, setLastRowElement] = useState(null);
|
|
188
187
|
const [hasFullSchema, setHasFullSchema] = useState(false);
|
|
189
|
-
const isInPDFRender =
|
|
190
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
191
|
-
useIsInPDFRender() : false;
|
|
188
|
+
const isInPDFRender = useIsInPDFRender();
|
|
192
189
|
const isBottomOfTableVisibleRaw = useIsOnScreen(lastRowElement) && !isInPDFRender;
|
|
193
190
|
const containerRef = useRef(null);
|
|
194
191
|
const [orderedColumns, setOrderedColumns] = useState(() => getOrderedColumns([...columns], [...visibleColumnKeys]));
|
|
@@ -450,7 +447,7 @@ export const IssueLikeDataTableView = ({
|
|
|
450
447
|
testId: 'datasource-header-content'
|
|
451
448
|
}, /*#__PURE__*/React.createElement("span", {
|
|
452
449
|
id: getFieldLabelById(key),
|
|
453
|
-
className: ax(["
|
|
450
|
+
className: ax(["_11c8rpcx _k48p1wq8"])
|
|
454
451
|
}, content));
|
|
455
452
|
const isHeadingOutsideButton = !isEditable || !onWrappedColumnChange;
|
|
456
453
|
if (isHeadingOutsideButton) {
|
|
@@ -4,6 +4,7 @@ import { ax, ix } from "@compiled/react/runtime";
|
|
|
4
4
|
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
5
5
|
import { useIntl } from 'react-intl-next';
|
|
6
6
|
import { useDebouncedCallback } from 'use-debounce';
|
|
7
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
7
8
|
import { Box, Flex, Text } from '@atlaskit/primitives/compiled';
|
|
8
9
|
import { useDatasourceAnalyticsEvents } from '../../../analytics';
|
|
9
10
|
import { BasicSearchInput } from '../../common/modal/basic-search-input';
|
|
@@ -33,7 +34,8 @@ export const JiraSearchContainer = props => {
|
|
|
33
34
|
initialSearchMethod,
|
|
34
35
|
setSearchBarJql,
|
|
35
36
|
searchBarJql = DEFAULT_JQL_QUERY,
|
|
36
|
-
site
|
|
37
|
+
site,
|
|
38
|
+
setHasJqlSyntaxErrors
|
|
37
39
|
} = props;
|
|
38
40
|
const {
|
|
39
41
|
cloudId: currentCloudId
|
|
@@ -83,8 +85,11 @@ export const JiraSearchContainer = props => {
|
|
|
83
85
|
orderKey
|
|
84
86
|
}));
|
|
85
87
|
}, [setSearchBarJql, filterSelections, orderDirection, orderKey]);
|
|
86
|
-
const onQueryChange = useCallback(query => {
|
|
88
|
+
const onQueryChange = useCallback((query, jast) => {
|
|
87
89
|
var _query$split$map$filt, _fragments$at, _fragments$at2, _fragments$at3;
|
|
90
|
+
if (fg('navx-1345-issues-modal-jql-submit-fix')) {
|
|
91
|
+
setHasJqlSyntaxErrors === null || setHasJqlSyntaxErrors === void 0 ? void 0 : setHasJqlSyntaxErrors(jast.errors.length > 0);
|
|
92
|
+
}
|
|
88
93
|
// determine if order keys have been set so they can be saved and persisted when changes occur in basic search
|
|
89
94
|
const fragments = (_query$split$map$filt = query === null || query === void 0 ? void 0 : query.split(/(^| )(order by)( |$)/i).map(item => item.trim()).filter(Boolean)) !== null && _query$split$map$filt !== void 0 ? _query$split$map$filt : [];
|
|
90
95
|
const hasOrder = ((_fragments$at = fragments.at(-2)) === null || _fragments$at === void 0 ? void 0 : _fragments$at.toLowerCase()) === 'order by';
|
|
@@ -97,7 +102,7 @@ export const JiraSearchContainer = props => {
|
|
|
97
102
|
setOrderDirection(order);
|
|
98
103
|
}
|
|
99
104
|
setSearchBarJql(query);
|
|
100
|
-
}, [setSearchBarJql]);
|
|
105
|
+
}, [setSearchBarJql, setHasJqlSyntaxErrors]);
|
|
101
106
|
const handleSearch = useCallback(() => {
|
|
102
107
|
const isCurrentQueryComplex = isQueryTooComplex(searchBarJql);
|
|
103
108
|
onSearch({
|
|
@@ -89,6 +89,9 @@ const PlainJiraIssuesConfigModal = props => {
|
|
|
89
89
|
jql
|
|
90
90
|
} = parameters !== null && parameters !== void 0 ? parameters : {};
|
|
91
91
|
const [initialJql] = useState(jql);
|
|
92
|
+
const isJqlSubmitFixEnabled = fg('navx-1345-issues-modal-jql-submit-fix');
|
|
93
|
+
const [hasJqlSyntaxErrors, setHasJqlSyntaxErrors] = useState(false); // Tracks if current jql input has syntax errors
|
|
94
|
+
|
|
92
95
|
const {
|
|
93
96
|
currentViewMode
|
|
94
97
|
} = useViewModeContext();
|
|
@@ -360,6 +363,9 @@ const PlainJiraIssuesConfigModal = props => {
|
|
|
360
363
|
const upToDateJqlUrl = `${selectedJiraSite.url}/issues/?jql=${encodeURIComponent(jql)}`;
|
|
361
364
|
return currentViewMode === 'inline' && responseItems.length === 1 ? retrieveUrlForSmartCardRender() : upToDateJqlUrl;
|
|
362
365
|
}, [currentViewMode, parameters === null || parameters === void 0 ? void 0 : parameters.jql, responseItems, retrieveUrlForSmartCardRender, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url]);
|
|
366
|
+
const updateParametersJql = useCallback(parameters => {
|
|
367
|
+
parameters.jql = searchBarJql;
|
|
368
|
+
}, [searchBarJql]);
|
|
363
369
|
return /*#__PURE__*/React.createElement(IntlMessagesProvider, {
|
|
364
370
|
defaultMessages: i18nEN,
|
|
365
371
|
loaderFn: fetchMessagesForLocale
|
|
@@ -388,6 +394,7 @@ const PlainJiraIssuesConfigModal = props => {
|
|
|
388
394
|
}))))), /*#__PURE__*/React.createElement(ModalBody, null, !hasNoJiraSites ? /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(JiraSearchContainer, {
|
|
389
395
|
setSearchBarJql: setSearchBarJql,
|
|
390
396
|
searchBarJql: searchBarJql,
|
|
397
|
+
setHasJqlSyntaxErrors: isJqlSubmitFixEnabled ? setHasJqlSyntaxErrors : undefined,
|
|
391
398
|
isSearching: status === 'loading',
|
|
392
399
|
parameters: parameters,
|
|
393
400
|
onSearch: onSearch,
|
|
@@ -411,11 +418,14 @@ const PlainJiraIssuesConfigModal = props => {
|
|
|
411
418
|
onCancel: onCancel,
|
|
412
419
|
getAnalyticsPayload: getCancelButtonAnalyticsPayload,
|
|
413
420
|
testId: "jira-datasource-modal--cancel-button"
|
|
414
|
-
}), !hasNoJiraSites && /*#__PURE__*/React.createElement(InsertButton, {
|
|
421
|
+
}), !hasNoJiraSites && /*#__PURE__*/React.createElement(InsertButton, _extends({
|
|
415
422
|
testId: "jira-datasource-modal--insert-button",
|
|
416
423
|
url: urlToInsert,
|
|
417
424
|
getAnalyticsPayload: getInsertButtonAnalyticsPayload
|
|
418
|
-
},
|
|
425
|
+
}, isJqlSubmitFixEnabled ? {
|
|
426
|
+
onBeforeInsert: updateParametersJql,
|
|
427
|
+
hasErrors: hasJqlSyntaxErrors
|
|
428
|
+
} : {}), /*#__PURE__*/React.createElement(FormattedMessage, modalMessages.insertIssuesButtonTextIssueTermSllv))))));
|
|
419
429
|
};
|
|
420
430
|
const ConnectedJiraIssueConfigModal = createDatasourceModal({
|
|
421
431
|
isValidParameters,
|
|
@@ -6,7 +6,6 @@ import { useCallback, useEffect, useRef, useState } from 'react';
|
|
|
6
6
|
import isEqual from 'lodash/isEqual';
|
|
7
7
|
import { isFedRamp } from '@atlaskit/atlassian-context';
|
|
8
8
|
import { DEFAULT_GET_DATASOURCE_DATA_PAGE_SIZE, useDatasourceClientExtension } from '@atlaskit/link-client-extension';
|
|
9
|
-
import { fg } from '@atlaskit/platform-feature-flags';
|
|
10
9
|
import { useDatasourceAnalyticsEvents } from '../analytics';
|
|
11
10
|
import { useDatasourceActions } from '../state';
|
|
12
11
|
import { useDiscoverActions } from '../state/actions';
|
|
@@ -31,10 +30,7 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
31
30
|
fireEvent: fireEvent
|
|
32
31
|
}),
|
|
33
32
|
discoverActions = _useDiscoverActions.discoverActions;
|
|
34
|
-
|
|
35
|
-
var isInPDFRender = fg('lp_disable_datasource_table_max_height_restriction') ?
|
|
36
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
37
|
-
useIsInPDFRender() : false;
|
|
33
|
+
var isInPDFRender = useIsInPDFRender();
|
|
38
34
|
var idFieldCount = 1;
|
|
39
35
|
var keyFieldCount = 1;
|
|
40
36
|
var _useState = useState([]),
|
|
@@ -3,6 +3,7 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
|
|
|
3
3
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
4
|
import React, { useCallback } from 'react';
|
|
5
5
|
import Button from '@atlaskit/button/standard-button';
|
|
6
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
6
7
|
import { EVENT_CHANNEL } from '../../../../analytics';
|
|
7
8
|
import { DatasourceDisplay, DatasourceSearchMethod } from '../../../../analytics/types';
|
|
8
9
|
import { buildDatasourceAdf } from '../../../../common/utils/schema-utils';
|
|
@@ -13,7 +14,9 @@ export var InsertButton = function InsertButton(_ref) {
|
|
|
13
14
|
var testId = _ref.testId,
|
|
14
15
|
url = _ref.url,
|
|
15
16
|
getAnalyticsPayload = _ref.getAnalyticsPayload,
|
|
16
|
-
children = _ref.children
|
|
17
|
+
children = _ref.children,
|
|
18
|
+
onBeforeInsert = _ref.onBeforeInsert,
|
|
19
|
+
hasErrors = _ref.hasErrors;
|
|
17
20
|
var _useDatasourceContext = useDatasourceContext(),
|
|
18
21
|
datasourceId = _useDatasourceContext.datasourceId,
|
|
19
22
|
parameters = _useDatasourceContext.parameters,
|
|
@@ -29,12 +32,17 @@ export var InsertButton = function InsertButton(_ref) {
|
|
|
29
32
|
var userInteractions = useUserInteractions();
|
|
30
33
|
var _useViewModeContext = useViewModeContext(),
|
|
31
34
|
currentViewMode = _useViewModeContext.currentViewMode;
|
|
32
|
-
var
|
|
35
|
+
var isJqlSubmitFixEnabled = fg('navx-1345-issues-modal-jql-submit-fix');
|
|
36
|
+
var isInsertDisabled = (isJqlSubmitFixEnabled ? hasErrors : false) || !isValidParameters(parameters) || status === 'rejected' || status === 'unauthorized' || status === 'loading';
|
|
33
37
|
var onInsertPressed = useCallback(function (_e, analyticsEvent) {
|
|
34
38
|
var _insertButtonClickedE;
|
|
35
39
|
if (!parameters || !isValidParameters(parameters) || !url) {
|
|
36
40
|
return;
|
|
37
41
|
}
|
|
42
|
+
if (isJqlSubmitFixEnabled) {
|
|
43
|
+
onBeforeInsert === null || onBeforeInsert === void 0 || onBeforeInsert(parameters);
|
|
44
|
+
}
|
|
45
|
+
;
|
|
38
46
|
var insertButtonClickedEvent = analyticsEvent.update({
|
|
39
47
|
actionSubjectId: 'insert',
|
|
40
48
|
attributes: _objectSpread({
|
|
@@ -77,7 +85,7 @@ export var InsertButton = function InsertButton(_ref) {
|
|
|
77
85
|
}]
|
|
78
86
|
}, url), consumerEvent);
|
|
79
87
|
}
|
|
80
|
-
}, [columnCustomSizes, currentViewMode, datasourceId, getAnalyticsPayload, isValidParameters, onInsert, parameters, totalCount, url, userInteractions, visibleColumnCount, visibleColumnKeys, wrappedColumnKeys]);
|
|
88
|
+
}, [columnCustomSizes, currentViewMode, datasourceId, getAnalyticsPayload, isValidParameters, onInsert, parameters, totalCount, url, userInteractions, visibleColumnCount, visibleColumnKeys, wrappedColumnKeys, isJqlSubmitFixEnabled, onBeforeInsert]);
|
|
81
89
|
return /*#__PURE__*/React.createElement(Button, {
|
|
82
90
|
appearance: "primary",
|
|
83
91
|
onClick: onInsertPressed,
|
|
@@ -60,11 +60,7 @@ var DatasourceTableViewWithoutAnalytics = function DatasourceTableViewWithoutAna
|
|
|
60
60
|
providerName = _useDatasourceTableSt.providerName,
|
|
61
61
|
destinationObjectTypes = _useDatasourceTableSt.destinationObjectTypes,
|
|
62
62
|
authDetails = _useDatasourceTableSt.authDetails;
|
|
63
|
-
|
|
64
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
65
|
-
var isInPDFRender = fg('lp_disable_datasource_table_max_height_restriction') ?
|
|
66
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
67
|
-
useIsInPDFRender() : false;
|
|
63
|
+
var isInPDFRender = useIsInPDFRender();
|
|
68
64
|
var _useDatasourceAnalyti = useDatasourceAnalyticsEvents(),
|
|
69
65
|
fireEvent = _useDatasourceAnalyti.fireEvent;
|
|
70
66
|
var experienceId = useDatasourceExperienceId();
|
|
@@ -22,7 +22,6 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
|
22
22
|
import invariant from 'tiny-invariant';
|
|
23
23
|
import { FlagsProvider } from '@atlaskit/flag';
|
|
24
24
|
import { Skeleton } from '@atlaskit/linking-common';
|
|
25
|
-
import { fg } from '@atlaskit/platform-feature-flags';
|
|
26
25
|
import { extractClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
|
|
27
26
|
import { reorderWithEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/util/reorder-with-edge';
|
|
28
27
|
import { autoScroller } from '@atlaskit/pragmatic-drag-and-drop-react-beautiful-dnd-autoscroll';
|
|
@@ -208,9 +207,7 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref5) {
|
|
|
208
207
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
209
208
|
hasFullSchema = _useState4[0],
|
|
210
209
|
setHasFullSchema = _useState4[1];
|
|
211
|
-
var isInPDFRender =
|
|
212
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
213
|
-
useIsInPDFRender() : false;
|
|
210
|
+
var isInPDFRender = useIsInPDFRender();
|
|
214
211
|
var isBottomOfTableVisibleRaw = useIsOnScreen(lastRowElement) && !isInPDFRender;
|
|
215
212
|
var containerRef = useRef(null);
|
|
216
213
|
var _useState5 = useState(function () {
|
|
@@ -10,6 +10,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
10
10
|
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
11
11
|
import { useIntl } from 'react-intl-next';
|
|
12
12
|
import { useDebouncedCallback } from 'use-debounce';
|
|
13
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
13
14
|
import { Box, Flex, Text } from '@atlaskit/primitives/compiled';
|
|
14
15
|
import { useDatasourceAnalyticsEvents } from '../../../analytics';
|
|
15
16
|
import { BasicSearchInput } from '../../common/modal/basic-search-input';
|
|
@@ -39,7 +40,8 @@ export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
39
40
|
setSearchBarJql = props.setSearchBarJql,
|
|
40
41
|
_props$searchBarJql = props.searchBarJql,
|
|
41
42
|
searchBarJql = _props$searchBarJql === void 0 ? DEFAULT_JQL_QUERY : _props$searchBarJql,
|
|
42
|
-
site = props.site
|
|
43
|
+
site = props.site,
|
|
44
|
+
setHasJqlSyntaxErrors = props.setHasJqlSyntaxErrors;
|
|
43
45
|
var _ref = parameters || {},
|
|
44
46
|
currentCloudId = _ref.cloudId;
|
|
45
47
|
var _useIntl = useIntl(),
|
|
@@ -109,8 +111,11 @@ export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
109
111
|
orderKey: orderKey
|
|
110
112
|
}));
|
|
111
113
|
}, [setSearchBarJql, filterSelections, orderDirection, orderKey]);
|
|
112
|
-
var onQueryChange = useCallback(function (query) {
|
|
114
|
+
var onQueryChange = useCallback(function (query, jast) {
|
|
113
115
|
var _query$split$map$filt, _fragments$at, _fragments$at2, _fragments$at3;
|
|
116
|
+
if (fg('navx-1345-issues-modal-jql-submit-fix')) {
|
|
117
|
+
setHasJqlSyntaxErrors === null || setHasJqlSyntaxErrors === void 0 || setHasJqlSyntaxErrors(jast.errors.length > 0);
|
|
118
|
+
}
|
|
114
119
|
// determine if order keys have been set so they can be saved and persisted when changes occur in basic search
|
|
115
120
|
var fragments = (_query$split$map$filt = query === null || query === void 0 ? void 0 : query.split(/(^| )(order by)( |$)/i).map(function (item) {
|
|
116
121
|
return item.trim();
|
|
@@ -125,7 +130,7 @@ export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
125
130
|
setOrderDirection(order);
|
|
126
131
|
}
|
|
127
132
|
setSearchBarJql(query);
|
|
128
|
-
}, [setSearchBarJql]);
|
|
133
|
+
}, [setSearchBarJql, setHasJqlSyntaxErrors]);
|
|
129
134
|
var handleSearch = useCallback(function () {
|
|
130
135
|
var isCurrentQueryComplex = isQueryTooComplex(searchBarJql);
|
|
131
136
|
onSearch({
|
|
@@ -92,24 +92,30 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
|
92
92
|
var _useState = useState(jql),
|
|
93
93
|
_useState2 = _slicedToArray(_useState, 1),
|
|
94
94
|
initialJql = _useState2[0];
|
|
95
|
+
var isJqlSubmitFixEnabled = fg('navx-1345-issues-modal-jql-submit-fix');
|
|
96
|
+
var _useState3 = useState(false),
|
|
97
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
98
|
+
hasJqlSyntaxErrors = _useState4[0],
|
|
99
|
+
setHasJqlSyntaxErrors = _useState4[1]; // Tracks if current jql input has syntax errors
|
|
100
|
+
|
|
95
101
|
var _useViewModeContext = useViewModeContext(),
|
|
96
102
|
currentViewMode = _useViewModeContext.currentViewMode;
|
|
97
103
|
var _useAvailableSites = useAvailableSites('jira', cloudId),
|
|
98
104
|
availableSites = _useAvailableSites.availableSites,
|
|
99
105
|
selectedJiraSite = _useAvailableSites.selectedSite;
|
|
100
|
-
var
|
|
101
|
-
|
|
102
|
-
searchBarJql =
|
|
103
|
-
setSearchBarJql =
|
|
106
|
+
var _useState5 = useState(jql),
|
|
107
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
108
|
+
searchBarJql = _useState6[0],
|
|
109
|
+
setSearchBarJql = _useState6[1];
|
|
104
110
|
|
|
105
111
|
// analytics related parameters
|
|
106
112
|
var searchCount = useRef(0);
|
|
107
113
|
var userInteractions = useUserInteractions();
|
|
108
114
|
var initialSearchMethod = !isQueryTooComplex(initialJql || '') ? 'basic' : 'jql';
|
|
109
|
-
var
|
|
110
|
-
|
|
111
|
-
currentSearchMethod =
|
|
112
|
-
setCurrentSearchMethod =
|
|
115
|
+
var _useState7 = useState(initialSearchMethod),
|
|
116
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
117
|
+
currentSearchMethod = _useState8[0],
|
|
118
|
+
setCurrentSearchMethod = _useState8[1];
|
|
113
119
|
var searchMethodSearchedWith = useRef(null);
|
|
114
120
|
var basicFilterSelectionsSearchedWith = useRef({});
|
|
115
121
|
var isSearchedWithComplexQuery = useRef(false);
|
|
@@ -366,6 +372,9 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
|
366
372
|
var upToDateJqlUrl = "".concat(selectedJiraSite.url, "/issues/?jql=").concat(encodeURIComponent(jql));
|
|
367
373
|
return currentViewMode === 'inline' && responseItems.length === 1 ? retrieveUrlForSmartCardRender() : upToDateJqlUrl;
|
|
368
374
|
}, [currentViewMode, parameters === null || parameters === void 0 ? void 0 : parameters.jql, responseItems, retrieveUrlForSmartCardRender, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url]);
|
|
375
|
+
var updateParametersJql = useCallback(function (parameters) {
|
|
376
|
+
parameters.jql = searchBarJql;
|
|
377
|
+
}, [searchBarJql]);
|
|
369
378
|
return /*#__PURE__*/React.createElement(IntlMessagesProvider, {
|
|
370
379
|
defaultMessages: i18nEN,
|
|
371
380
|
loaderFn: fetchMessagesForLocale
|
|
@@ -394,6 +403,7 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
|
394
403
|
}))))), /*#__PURE__*/React.createElement(ModalBody, null, !hasNoJiraSites ? /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(JiraSearchContainer, {
|
|
395
404
|
setSearchBarJql: setSearchBarJql,
|
|
396
405
|
searchBarJql: searchBarJql,
|
|
406
|
+
setHasJqlSyntaxErrors: isJqlSubmitFixEnabled ? setHasJqlSyntaxErrors : undefined,
|
|
397
407
|
isSearching: status === 'loading',
|
|
398
408
|
parameters: parameters,
|
|
399
409
|
onSearch: onSearch,
|
|
@@ -417,11 +427,14 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
|
417
427
|
onCancel: onCancel,
|
|
418
428
|
getAnalyticsPayload: getCancelButtonAnalyticsPayload,
|
|
419
429
|
testId: "jira-datasource-modal--cancel-button"
|
|
420
|
-
}), !hasNoJiraSites && /*#__PURE__*/React.createElement(InsertButton, {
|
|
430
|
+
}), !hasNoJiraSites && /*#__PURE__*/React.createElement(InsertButton, _extends({
|
|
421
431
|
testId: "jira-datasource-modal--insert-button",
|
|
422
432
|
url: urlToInsert,
|
|
423
433
|
getAnalyticsPayload: getInsertButtonAnalyticsPayload
|
|
424
|
-
},
|
|
434
|
+
}, isJqlSubmitFixEnabled ? {
|
|
435
|
+
onBeforeInsert: updateParametersJql,
|
|
436
|
+
hasErrors: hasJqlSyntaxErrors
|
|
437
|
+
} : {}), /*#__PURE__*/React.createElement(FormattedMessage, modalMessages.insertIssuesButtonTextIssueTermSllv))))));
|
|
425
438
|
};
|
|
426
439
|
var ConnectedJiraIssueConfigModal = createDatasourceModal({
|
|
427
440
|
isValidParameters: isValidParameters,
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import React, { type PropsWithChildren } from 'react';
|
|
2
2
|
import { type DatasourceParameters } from '@atlaskit/linking-types';
|
|
3
|
-
export type InsertButtonProps<
|
|
3
|
+
export type InsertButtonProps<Parameters extends DatasourceParameters> = PropsWithChildren<{
|
|
4
4
|
getAnalyticsPayload: () => Record<string, any>;
|
|
5
|
+
hasErrors?: boolean;
|
|
6
|
+
onBeforeInsert?: (parameters: Parameters) => void;
|
|
5
7
|
testId?: string;
|
|
6
8
|
url: string | undefined;
|
|
7
9
|
}>;
|
|
8
|
-
export declare const InsertButton: <Parameters extends DatasourceParameters>({ testId, url, getAnalyticsPayload, children, }: InsertButtonProps<Parameters>) => React.JSX.Element;
|
|
10
|
+
export declare const InsertButton: <Parameters extends DatasourceParameters>({ testId, url, getAnalyticsPayload, children, onBeforeInsert, hasErrors, }: InsertButtonProps<Parameters>) => React.JSX.Element;
|
|
@@ -14,6 +14,7 @@ export interface SearchContainerProps {
|
|
|
14
14
|
onSearchMethodChange: (searchMethod: JiraSearchMethod) => void;
|
|
15
15
|
parameters?: JiraIssueDatasourceParameters;
|
|
16
16
|
searchBarJql?: string;
|
|
17
|
+
setHasJqlSyntaxErrors?: (hasErrors: boolean) => void;
|
|
17
18
|
setSearchBarJql: (jql: string) => void;
|
|
18
19
|
site?: Site;
|
|
19
20
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { type Jast } from '@atlaskit/jql-ast';
|
|
2
3
|
export interface JiraJQLEditorProps {
|
|
3
4
|
cloudId: string;
|
|
4
5
|
isSearching?: boolean;
|
|
5
|
-
onChange?: (query: string) => void;
|
|
6
|
+
onChange?: (query: string, jast: Jast) => void;
|
|
6
7
|
onSearch: () => void;
|
|
7
8
|
query: string;
|
|
8
9
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import React, { type PropsWithChildren } from 'react';
|
|
2
2
|
import { type DatasourceParameters } from '@atlaskit/linking-types';
|
|
3
|
-
export type InsertButtonProps<
|
|
3
|
+
export type InsertButtonProps<Parameters extends DatasourceParameters> = PropsWithChildren<{
|
|
4
4
|
getAnalyticsPayload: () => Record<string, any>;
|
|
5
|
+
hasErrors?: boolean;
|
|
6
|
+
onBeforeInsert?: (parameters: Parameters) => void;
|
|
5
7
|
testId?: string;
|
|
6
8
|
url: string | undefined;
|
|
7
9
|
}>;
|
|
8
|
-
export declare const InsertButton: <Parameters extends DatasourceParameters>({ testId, url, getAnalyticsPayload, children, }: InsertButtonProps<Parameters>) => React.JSX.Element;
|
|
10
|
+
export declare const InsertButton: <Parameters extends DatasourceParameters>({ testId, url, getAnalyticsPayload, children, onBeforeInsert, hasErrors, }: InsertButtonProps<Parameters>) => React.JSX.Element;
|
|
@@ -14,6 +14,7 @@ export interface SearchContainerProps {
|
|
|
14
14
|
onSearchMethodChange: (searchMethod: JiraSearchMethod) => void;
|
|
15
15
|
parameters?: JiraIssueDatasourceParameters;
|
|
16
16
|
searchBarJql?: string;
|
|
17
|
+
setHasJqlSyntaxErrors?: (hasErrors: boolean) => void;
|
|
17
18
|
setSearchBarJql: (jql: string) => void;
|
|
18
19
|
site?: Site;
|
|
19
20
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { type Jast } from '@atlaskit/jql-ast';
|
|
2
3
|
export interface JiraJQLEditorProps {
|
|
3
4
|
cloudId: string;
|
|
4
5
|
isSearching?: boolean;
|
|
5
|
-
onChange?: (query: string) => void;
|
|
6
|
+
onChange?: (query: string, jast: Jast) => void;
|
|
6
7
|
onSearch: () => void;
|
|
7
8
|
query: string;
|
|
8
9
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/link-datasource",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.33.1",
|
|
4
4
|
"description": "UI Components to support linking platform dataset feature",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -80,10 +80,10 @@
|
|
|
80
80
|
"@atlaskit/primitives": "^17.1.0",
|
|
81
81
|
"@atlaskit/react-select": "^3.13.0",
|
|
82
82
|
"@atlaskit/select": "^21.7.0",
|
|
83
|
-
"@atlaskit/smart-card": "^43.
|
|
83
|
+
"@atlaskit/smart-card": "^43.23.0",
|
|
84
84
|
"@atlaskit/smart-user-picker": "^8.9.0",
|
|
85
85
|
"@atlaskit/spinner": "^19.0.0",
|
|
86
|
-
"@atlaskit/tag": "^14.
|
|
86
|
+
"@atlaskit/tag": "^14.3.0",
|
|
87
87
|
"@atlaskit/textfield": "^8.2.0",
|
|
88
88
|
"@atlaskit/theme": "^21.0.0",
|
|
89
89
|
"@atlaskit/tokens": "^10.1.0",
|
|
@@ -176,13 +176,13 @@
|
|
|
176
176
|
"navx-1895-new-logo-design": {
|
|
177
177
|
"type": "boolean"
|
|
178
178
|
},
|
|
179
|
-
"
|
|
179
|
+
"navx-1345-issues-modal-jql-submit-fix": {
|
|
180
180
|
"type": "boolean"
|
|
181
181
|
},
|
|
182
|
-
"
|
|
182
|
+
"platform_navx_jira_sllv_rich_text_gate": {
|
|
183
183
|
"type": "boolean"
|
|
184
184
|
},
|
|
185
|
-
"
|
|
185
|
+
"jpd_confluence_date_fields_improvements": {
|
|
186
186
|
"type": "boolean"
|
|
187
187
|
},
|
|
188
188
|
"platform_navx_sllv_dropdown_escape_and_focus_fix": {
|