@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.
Files changed (27) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/hooks/useDatasourceTableState.js +1 -5
  3. package/dist/cjs/ui/common/modal/insert-button/index.js +11 -3
  4. package/dist/cjs/ui/datasource-table-view/datasourceTableView.js +1 -5
  5. package/dist/cjs/ui/issue-like-table/index.js +1 -4
  6. package/dist/cjs/ui/jira-issues-modal/jira-search-container/index.js +8 -3
  7. package/dist/cjs/ui/jira-issues-modal/modal/index.js +23 -10
  8. package/dist/es2019/hooks/useDatasourceTableState.js +1 -5
  9. package/dist/es2019/ui/common/modal/insert-button/index.js +11 -3
  10. package/dist/es2019/ui/datasource-table-view/datasourceTableView.js +1 -5
  11. package/dist/es2019/ui/issue-like-table/index.compiled.css +1 -1
  12. package/dist/es2019/ui/issue-like-table/index.js +2 -5
  13. package/dist/es2019/ui/jira-issues-modal/jira-search-container/index.js +8 -3
  14. package/dist/es2019/ui/jira-issues-modal/modal/index.js +12 -2
  15. package/dist/esm/hooks/useDatasourceTableState.js +1 -5
  16. package/dist/esm/ui/common/modal/insert-button/index.js +11 -3
  17. package/dist/esm/ui/datasource-table-view/datasourceTableView.js +1 -5
  18. package/dist/esm/ui/issue-like-table/index.js +1 -4
  19. package/dist/esm/ui/jira-issues-modal/jira-search-container/index.js +8 -3
  20. package/dist/esm/ui/jira-issues-modal/modal/index.js +23 -10
  21. package/dist/types/ui/common/modal/insert-button/index.d.ts +4 -2
  22. package/dist/types/ui/jira-issues-modal/jira-search-container/index.d.ts +1 -0
  23. package/dist/types/ui/jira-issues-modal/jql-editor/index.d.ts +2 -1
  24. package/dist/types-ts4.5/ui/common/modal/insert-button/index.d.ts +4 -2
  25. package/dist/types-ts4.5/ui/jira-issues-modal/jira-search-container/index.d.ts +1 -0
  26. package/dist/types-ts4.5/ui/jira-issues-modal/jql-editor/index.d.ts +2 -1
  27. 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
- // eslint-disable-next-line react-hooks/rules-of-hooks
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 isInsertDisabled = !isValidParameters(parameters) || status === 'rejected' || status === 'unauthorized' || status === 'loading';
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, _platformFeatureFlags.fg)('lp_disable_datasource_table_max_height_restriction') ?
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 _useState3 = (0, _react.useState)(jql),
109
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
110
- searchBarJql = _useState4[0],
111
- setSearchBarJql = _useState4[1];
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 _useState5 = (0, _react.useState)(initialSearchMethod),
118
- _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
119
- currentSearchMethod = _useState6[0],
120
- setCurrentSearchMethod = _useState6[1];
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
- }, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages3.modalMessages.insertIssuesButtonTextIssueTermSllv))))));
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
- // eslint-disable-next-line react-hooks/rules-of-hooks
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 isInsertDisabled = !isValidParameters(parameters) || status === 'rejected' || status === 'unauthorized' || status === 'loading';
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 = fg('lp_disable_datasource_table_max_height_restriction') ?
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(["_11c8dcr7 _k48p1wq8"])
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
- }, /*#__PURE__*/React.createElement(FormattedMessage, modalMessages.insertIssuesButtonTextIssueTermSllv))))));
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
- // eslint-disable-next-line react-hooks/rules-of-hooks
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 isInsertDisabled = !isValidParameters(parameters) || status === 'rejected' || status === 'unauthorized' || status === 'loading';
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 = fg('lp_disable_datasource_table_max_height_restriction') ?
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 _useState3 = useState(jql),
101
- _useState4 = _slicedToArray(_useState3, 2),
102
- searchBarJql = _useState4[0],
103
- setSearchBarJql = _useState4[1];
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 _useState5 = useState(initialSearchMethod),
110
- _useState6 = _slicedToArray(_useState5, 2),
111
- currentSearchMethod = _useState6[0],
112
- setCurrentSearchMethod = _useState6[1];
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
- }, /*#__PURE__*/React.createElement(FormattedMessage, modalMessages.insertIssuesButtonTextIssueTermSllv))))));
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<_Parameters extends DatasourceParameters> = PropsWithChildren<{
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<_Parameters extends DatasourceParameters> = PropsWithChildren<{
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.32.5",
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.22.0",
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.2.0",
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
- "platform_navx_jira_sllv_rich_text_gate": {
179
+ "navx-1345-issues-modal-jql-submit-fix": {
180
180
  "type": "boolean"
181
181
  },
182
- "jpd_confluence_date_fields_improvements": {
182
+ "platform_navx_jira_sllv_rich_text_gate": {
183
183
  "type": "boolean"
184
184
  },
185
- "lp_disable_datasource_table_max_height_restriction": {
185
+ "jpd_confluence_date_fields_improvements": {
186
186
  "type": "boolean"
187
187
  },
188
188
  "platform_navx_sllv_dropdown_escape_and_focus_fix": {