@atlaskit/link-datasource 1.6.0 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @atlaskit/link-datasource
2
2
 
3
+ ## 1.6.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#40759](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/40759) [`2e42297cee1`](https://bitbucket.org/atlassian/atlassian-frontend/commits/2e42297cee1) - Reset default visible column keys when `shouldResetColumns` is `true`
8
+
9
+ ## 1.6.1
10
+
11
+ ### Patch Changes
12
+
13
+ - [#40923](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/40923) [`1eaceeae0b0`](https://bitbucket.org/atlassian/atlassian-frontend/commits/1eaceeae0b0) - Use jql-ast to build jql
14
+
3
15
  ## 1.6.0
4
16
 
5
17
  ### Minor Changes
@@ -7,5 +7,5 @@ exports.packageMetaData = exports.EVENT_CHANNEL = void 0;
7
7
  var EVENT_CHANNEL = exports.EVENT_CHANNEL = 'media';
8
8
  var packageMetaData = exports.packageMetaData = {
9
9
  packageName: "@atlaskit/link-datasource",
10
- packageVersion: "1.6.0"
10
+ packageVersion: "1.6.2"
11
11
  };
@@ -246,6 +246,7 @@ var useDatasourceTableState = exports.useDatasourceTableState = function useData
246
246
  setShouldForceRequest((options === null || options === void 0 ? void 0 : options.shouldForceRequest) || false);
247
247
  if (options !== null && options !== void 0 && options.shouldResetColumns) {
248
248
  setColumns([]);
249
+ setDefaultVisibleColumnKeys([]);
249
250
  }
250
251
  }, []);
251
252
 
@@ -6,8 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.AssetsConfigModal = void 0;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
11
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
13
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
14
  var _react = require("react");
13
15
  var _react2 = require("@emotion/react");
@@ -94,24 +96,18 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
94
96
  setVisibleColumnKeys(newVisibleColumnKeys);
95
97
  }, [initialVisibleColumnKeys, defaultVisibleColumnKeys]);
96
98
  (0, _react.useEffect)(function () {
97
- var _responseItems = (0, _slicedToArray2.default)(responseItems, 1),
98
- data = _responseItems[0];
99
- if (data && isNewSearch) {
100
- setVisibleColumnKeys(Object.keys(data));
101
- } else if (data && (visibleColumnKeys || []).length) {
102
- setVisibleColumnKeys(visibleColumnKeys);
99
+ if (isNewSearch) {
100
+ setVisibleColumnKeys(defaultVisibleColumnKeys);
103
101
  }
104
- // Purposely not included 'visibleColumnKeys' as a dependency to prevent infinite loop
105
- // eslint-disable-next-line react-hooks/exhaustive-deps
106
- }, [responseItems, isNewSearch]);
102
+ }, [defaultVisibleColumnKeys, isNewSearch]);
107
103
  (0, _react.useEffect)(function () {
108
104
  fireEvent('screen.datasourceModalDialog.viewed', {});
109
105
  }, [fireEvent]);
110
106
  var isDisabled = !!workspaceError || status === 'rejected' || status === 'loading' || status === 'empty' || !!workspaceError || assetsClientLoading || !aql || !schemaId;
111
107
  var retrieveUrlForSmartCardRender = (0, _react.useCallback)(function () {
112
108
  var _data$key;
113
- var _responseItems2 = (0, _slicedToArray2.default)(responseItems, 1),
114
- data = _responseItems2[0];
109
+ var _responseItems = (0, _slicedToArray2.default)(responseItems, 1),
110
+ data = _responseItems[0];
115
111
  // agreement with BE that we will use `key` for rendering smartlink
116
112
  return data === null || data === void 0 || (_data$key = data.key) === null || _data$key === void 0 || (_data$key = _data$key.data) === null || _data$key === void 0 ? void 0 : _data$key.url;
117
113
  }, [responseItems]);
@@ -153,22 +149,29 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
153
149
  });
154
150
  }
155
151
  }, [aql, schemaId, workspaceId, retrieveUrlForSmartCardRender, responseItems.length, onInsert, datasourceId, visibleColumnKeys]);
156
- var handleOnSearch = (0, _react.useCallback)(function (searchAql, searchSchemaId) {
157
- if (schemaId !== searchSchemaId) {
158
- reset({
159
- shouldResetColumns: true
160
- });
161
- setAql(searchAql);
162
- setSchemaId(searchSchemaId);
163
- setIsNewSearch(true);
164
- loadDatasourceDetails();
165
- }
166
- if (aql !== searchAql) {
167
- reset();
168
- setAql(searchAql);
169
- setSchemaId(searchSchemaId);
170
- }
171
- }, [aql, loadDatasourceDetails, reset, schemaId]);
152
+ var handleOnSearch = (0, _react.useCallback)( /*#__PURE__*/function () {
153
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(searchAql, searchSchemaId) {
154
+ return _regenerator.default.wrap(function _callee$(_context) {
155
+ while (1) switch (_context.prev = _context.next) {
156
+ case 0:
157
+ if (schemaId !== searchSchemaId || aql !== searchAql) {
158
+ reset({
159
+ shouldResetColumns: true
160
+ });
161
+ setAql(searchAql);
162
+ setSchemaId(searchSchemaId);
163
+ setIsNewSearch(true);
164
+ }
165
+ case 1:
166
+ case "end":
167
+ return _context.stop();
168
+ }
169
+ }, _callee);
170
+ }));
171
+ return function (_x, _x2) {
172
+ return _ref.apply(this, arguments);
173
+ };
174
+ }(), [aql, reset, schemaId]);
172
175
  var renderModalTitleContent = (0, _react.useCallback)(function () {
173
176
  if (workspaceError) {
174
177
  return undefined;
@@ -231,7 +234,7 @@ var analyticsContextAttributes = {
231
234
  };
232
235
  var analyticsContextData = {
233
236
  packageName: "@atlaskit/link-datasource",
234
- packageVersion: "1.6.0",
237
+ packageVersion: "1.6.2",
235
238
  source: 'datasourceConfigModal'
236
239
  };
237
240
  var contextData = _objectSpread(_objectSpread({}, analyticsContextData), {}, {
@@ -4,23 +4,46 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.buildJQL = void 0;
7
+ var _jqlAst = require("@atlaskit/jql-ast");
7
8
  var fuzzySearchRegExp = /^"(.+)"$/;
8
9
  var jiraIssueKeyRegExp = /[A-Z]+-\d+/;
10
+ var constructTerminalClause = function constructTerminalClause(field, operator, value) {
11
+ return _jqlAst.creators.terminalClause(_jqlAst.creators.field(field), _jqlAst.creators.operator(operator), _jqlAst.creators.valueOperand(value));
12
+ };
9
13
  var buildJQL = exports.buildJQL = function buildJQL(input) {
14
+ /**
15
+ * Jql ast - Transforming the ast
16
+ * https://atlaskit.atlassian.com/packages/jql/jql-ast/docs/transforming-the-ast
17
+ */
18
+ var jast = new _jqlAst.JastBuilder().build('');
19
+ var query = jast.query;
10
20
  var rawSearch = input.rawSearch,
11
21
  _input$orderDirection = input.orderDirection,
12
- orderDirection = _input$orderDirection === void 0 ? 'DESC' : _input$orderDirection,
22
+ orderDirection = _input$orderDirection === void 0 ? _jqlAst.ORDER_BY_DIRECTION_DESC : _input$orderDirection,
13
23
  _input$orderKey = input.orderKey,
14
24
  orderKey = _input$orderKey === void 0 ? 'created' : _input$orderKey;
15
- var fuzzy = !rawSearch.match(fuzzySearchRegExp) ? '*' : '';
16
- var basicSearch = rawSearch.replace(/['"?*]+/g, '');
17
- var baseQueryParts = rawSearch.trim() ? ["text ~ \"".concat(basicSearch).concat(fuzzy, "\""), "summary ~ \"".concat(basicSearch).concat(fuzzy, "\"")] : [];
18
- if (jiraIssueKeyRegExp.test(rawSearch)) {
19
- baseQueryParts.push("key = \"".concat(basicSearch, "\""));
25
+ var trimmedRawSearch = rawSearch.trim();
26
+ if (!query) {
27
+ return '';
20
28
  }
21
- var baseQueryContent = baseQueryParts.join(' OR ');
22
- var baseQuery = baseQueryContent ? "(".concat(baseQueryContent, ")") : '';
23
- var limiter = rawSearch !== null && rawSearch !== void 0 && rawSearch.trim() ? '' : "created >= -30d";
24
- var query = [baseQuery, limiter].filter(Boolean).join(' AND ');
25
- return "".concat(query, " order by ").concat(orderKey, " ").concat(orderDirection.toUpperCase());
29
+ if (trimmedRawSearch) {
30
+ var fuzzy = !trimmedRawSearch.match(fuzzySearchRegExp) ? '*' : '';
31
+ var basicSearch = trimmedRawSearch.replace(/['"?*]+/g, '');
32
+ var text = constructTerminalClause('text', _jqlAst.OPERATOR_LIKE, "".concat(basicSearch).concat(fuzzy));
33
+ var summary = constructTerminalClause('summary', _jqlAst.OPERATOR_LIKE, "".concat(basicSearch).concat(fuzzy));
34
+ var orClauseFields = [text, summary];
35
+ if (jiraIssueKeyRegExp.test(trimmedRawSearch)) {
36
+ var key = constructTerminalClause('key', _jqlAst.OPERATOR_EQUALS, basicSearch);
37
+ orClauseFields.push(key);
38
+ }
39
+ var orClause = _jqlAst.creators.compoundClause(_jqlAst.creators.compoundOperator(_jqlAst.COMPOUND_OPERATOR_OR), orClauseFields);
40
+ query.appendClause(orClause, _jqlAst.COMPOUND_OPERATOR_AND);
41
+ } else {
42
+ var created = constructTerminalClause('created', _jqlAst.OPERATOR_GT_EQUALS, '-30d');
43
+ query.appendClause(created, _jqlAst.COMPOUND_OPERATOR_AND);
44
+ }
45
+ var orderField = _jqlAst.creators.orderByField(_jqlAst.creators.field(orderKey));
46
+ query.prependOrderField(orderField);
47
+ query.setOrderDirection(_jqlAst.creators.orderByDirection(orderDirection.toLowerCase() === 'asc' ? _jqlAst.ORDER_BY_DIRECTION_ASC : _jqlAst.ORDER_BY_DIRECTION_DESC));
48
+ return (0, _jqlAst.print)(jast);
26
49
  };
@@ -1,5 +1,5 @@
1
1
  export const EVENT_CHANNEL = 'media';
2
2
  export const packageMetaData = {
3
3
  packageName: "@atlaskit/link-datasource",
4
- packageVersion: "1.6.0"
4
+ packageVersion: "1.6.2"
5
5
  };
@@ -147,6 +147,7 @@ export const useDatasourceTableState = ({
147
147
  setShouldForceRequest((options === null || options === void 0 ? void 0 : options.shouldForceRequest) || false);
148
148
  if (options !== null && options !== void 0 && options.shouldResetColumns) {
149
149
  setColumns([]);
150
+ setDefaultVisibleColumnKeys([]);
150
151
  }
151
152
  }, []);
152
153
 
@@ -72,15 +72,10 @@ const PlainAssetsConfigModal = props => {
72
72
  setVisibleColumnKeys(newVisibleColumnKeys);
73
73
  }, [initialVisibleColumnKeys, defaultVisibleColumnKeys]);
74
74
  useEffect(() => {
75
- const [data] = responseItems;
76
- if (data && isNewSearch) {
77
- setVisibleColumnKeys(Object.keys(data));
78
- } else if (data && (visibleColumnKeys || []).length) {
79
- setVisibleColumnKeys(visibleColumnKeys);
75
+ if (isNewSearch) {
76
+ setVisibleColumnKeys(defaultVisibleColumnKeys);
80
77
  }
81
- // Purposely not included 'visibleColumnKeys' as a dependency to prevent infinite loop
82
- // eslint-disable-next-line react-hooks/exhaustive-deps
83
- }, [responseItems, isNewSearch]);
78
+ }, [defaultVisibleColumnKeys, isNewSearch]);
84
79
  useEffect(() => {
85
80
  fireEvent('screen.datasourceModalDialog.viewed', {});
86
81
  }, [fireEvent]);
@@ -127,22 +122,16 @@ const PlainAssetsConfigModal = props => {
127
122
  });
128
123
  }
129
124
  }, [aql, schemaId, workspaceId, retrieveUrlForSmartCardRender, responseItems.length, onInsert, datasourceId, visibleColumnKeys]);
130
- const handleOnSearch = useCallback((searchAql, searchSchemaId) => {
131
- if (schemaId !== searchSchemaId) {
125
+ const handleOnSearch = useCallback(async (searchAql, searchSchemaId) => {
126
+ if (schemaId !== searchSchemaId || aql !== searchAql) {
132
127
  reset({
133
128
  shouldResetColumns: true
134
129
  });
135
130
  setAql(searchAql);
136
131
  setSchemaId(searchSchemaId);
137
132
  setIsNewSearch(true);
138
- loadDatasourceDetails();
139
- }
140
- if (aql !== searchAql) {
141
- reset();
142
- setAql(searchAql);
143
- setSchemaId(searchSchemaId);
144
133
  }
145
- }, [aql, loadDatasourceDetails, reset, schemaId]);
134
+ }, [aql, reset, schemaId]);
146
135
  const renderModalTitleContent = useCallback(() => {
147
136
  if (workspaceError) {
148
137
  return undefined;
@@ -205,7 +194,7 @@ const analyticsContextAttributes = {
205
194
  };
206
195
  const analyticsContextData = {
207
196
  packageName: "@atlaskit/link-datasource",
208
- packageVersion: "1.6.0",
197
+ packageVersion: "1.6.2",
209
198
  source: 'datasourceConfigModal'
210
199
  };
211
200
  const contextData = {
@@ -1,20 +1,43 @@
1
+ import { COMPOUND_OPERATOR_AND, COMPOUND_OPERATOR_OR, creators, JastBuilder, OPERATOR_EQUALS, OPERATOR_GT_EQUALS, OPERATOR_LIKE, ORDER_BY_DIRECTION_ASC, ORDER_BY_DIRECTION_DESC, print } from '@atlaskit/jql-ast';
1
2
  const fuzzySearchRegExp = /^"(.+)"$/;
2
3
  const jiraIssueKeyRegExp = /[A-Z]+-\d+/;
4
+ const constructTerminalClause = (field, operator, value) => creators.terminalClause(creators.field(field), creators.operator(operator), creators.valueOperand(value));
3
5
  export const buildJQL = input => {
6
+ /**
7
+ * Jql ast - Transforming the ast
8
+ * https://atlaskit.atlassian.com/packages/jql/jql-ast/docs/transforming-the-ast
9
+ */
10
+ const jast = new JastBuilder().build('');
11
+ const {
12
+ query
13
+ } = jast;
4
14
  const {
5
15
  rawSearch,
6
- orderDirection = 'DESC',
16
+ orderDirection = ORDER_BY_DIRECTION_DESC,
7
17
  orderKey = 'created'
8
18
  } = input;
9
- const fuzzy = !rawSearch.match(fuzzySearchRegExp) ? '*' : '';
10
- const basicSearch = rawSearch.replace(/['"?*]+/g, '');
11
- const baseQueryParts = rawSearch.trim() ? [`text ~ "${basicSearch}${fuzzy}"`, `summary ~ "${basicSearch}${fuzzy}"`] : [];
12
- if (jiraIssueKeyRegExp.test(rawSearch)) {
13
- baseQueryParts.push(`key = "${basicSearch}"`);
19
+ const trimmedRawSearch = rawSearch.trim();
20
+ if (!query) {
21
+ return '';
22
+ }
23
+ if (trimmedRawSearch) {
24
+ const fuzzy = !trimmedRawSearch.match(fuzzySearchRegExp) ? '*' : '';
25
+ const basicSearch = trimmedRawSearch.replace(/['"?*]+/g, '');
26
+ const text = constructTerminalClause('text', OPERATOR_LIKE, `${basicSearch}${fuzzy}`);
27
+ const summary = constructTerminalClause('summary', OPERATOR_LIKE, `${basicSearch}${fuzzy}`);
28
+ const orClauseFields = [text, summary];
29
+ if (jiraIssueKeyRegExp.test(trimmedRawSearch)) {
30
+ const key = constructTerminalClause('key', OPERATOR_EQUALS, basicSearch);
31
+ orClauseFields.push(key);
32
+ }
33
+ const orClause = creators.compoundClause(creators.compoundOperator(COMPOUND_OPERATOR_OR), orClauseFields);
34
+ query.appendClause(orClause, COMPOUND_OPERATOR_AND);
35
+ } else {
36
+ const created = constructTerminalClause('created', OPERATOR_GT_EQUALS, '-30d');
37
+ query.appendClause(created, COMPOUND_OPERATOR_AND);
14
38
  }
15
- const baseQueryContent = baseQueryParts.join(' OR ');
16
- const baseQuery = baseQueryContent ? `(${baseQueryContent})` : '';
17
- const limiter = rawSearch !== null && rawSearch !== void 0 && rawSearch.trim() ? '' : `created >= -30d`;
18
- const query = [baseQuery, limiter].filter(Boolean).join(' AND ');
19
- return `${query} order by ${orderKey} ${orderDirection.toUpperCase()}`;
39
+ const orderField = creators.orderByField(creators.field(orderKey));
40
+ query.prependOrderField(orderField);
41
+ query.setOrderDirection(creators.orderByDirection(orderDirection.toLowerCase() === 'asc' ? ORDER_BY_DIRECTION_ASC : ORDER_BY_DIRECTION_DESC));
42
+ return print(jast);
20
43
  };
@@ -1,5 +1,5 @@
1
1
  export var EVENT_CHANNEL = 'media';
2
2
  export var packageMetaData = {
3
3
  packageName: "@atlaskit/link-datasource",
4
- packageVersion: "1.6.0"
4
+ packageVersion: "1.6.2"
5
5
  };
@@ -239,6 +239,7 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
239
239
  setShouldForceRequest((options === null || options === void 0 ? void 0 : options.shouldForceRequest) || false);
240
240
  if (options !== null && options !== void 0 && options.shouldResetColumns) {
241
241
  setColumns([]);
242
+ setDefaultVisibleColumnKeys([]);
242
243
  }
243
244
  }, []);
244
245
 
@@ -1,8 +1,10 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import _extends from "@babel/runtime/helpers/extends";
3
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
4
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
5
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
6
  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; }
7
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
6
8
  /** @jsx jsx */
7
9
  import { useCallback, useEffect, useMemo, useState } from 'react';
8
10
  import { css, jsx } from '@emotion/react';
@@ -85,24 +87,18 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
85
87
  setVisibleColumnKeys(newVisibleColumnKeys);
86
88
  }, [initialVisibleColumnKeys, defaultVisibleColumnKeys]);
87
89
  useEffect(function () {
88
- var _responseItems = _slicedToArray(responseItems, 1),
89
- data = _responseItems[0];
90
- if (data && isNewSearch) {
91
- setVisibleColumnKeys(Object.keys(data));
92
- } else if (data && (visibleColumnKeys || []).length) {
93
- setVisibleColumnKeys(visibleColumnKeys);
90
+ if (isNewSearch) {
91
+ setVisibleColumnKeys(defaultVisibleColumnKeys);
94
92
  }
95
- // Purposely not included 'visibleColumnKeys' as a dependency to prevent infinite loop
96
- // eslint-disable-next-line react-hooks/exhaustive-deps
97
- }, [responseItems, isNewSearch]);
93
+ }, [defaultVisibleColumnKeys, isNewSearch]);
98
94
  useEffect(function () {
99
95
  fireEvent('screen.datasourceModalDialog.viewed', {});
100
96
  }, [fireEvent]);
101
97
  var isDisabled = !!workspaceError || status === 'rejected' || status === 'loading' || status === 'empty' || !!workspaceError || assetsClientLoading || !aql || !schemaId;
102
98
  var retrieveUrlForSmartCardRender = useCallback(function () {
103
99
  var _data$key;
104
- var _responseItems2 = _slicedToArray(responseItems, 1),
105
- data = _responseItems2[0];
100
+ var _responseItems = _slicedToArray(responseItems, 1),
101
+ data = _responseItems[0];
106
102
  // agreement with BE that we will use `key` for rendering smartlink
107
103
  return data === null || data === void 0 || (_data$key = data.key) === null || _data$key === void 0 || (_data$key = _data$key.data) === null || _data$key === void 0 ? void 0 : _data$key.url;
108
104
  }, [responseItems]);
@@ -144,22 +140,29 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
144
140
  });
145
141
  }
146
142
  }, [aql, schemaId, workspaceId, retrieveUrlForSmartCardRender, responseItems.length, onInsert, datasourceId, visibleColumnKeys]);
147
- var handleOnSearch = useCallback(function (searchAql, searchSchemaId) {
148
- if (schemaId !== searchSchemaId) {
149
- reset({
150
- shouldResetColumns: true
151
- });
152
- setAql(searchAql);
153
- setSchemaId(searchSchemaId);
154
- setIsNewSearch(true);
155
- loadDatasourceDetails();
156
- }
157
- if (aql !== searchAql) {
158
- reset();
159
- setAql(searchAql);
160
- setSchemaId(searchSchemaId);
161
- }
162
- }, [aql, loadDatasourceDetails, reset, schemaId]);
143
+ var handleOnSearch = useCallback( /*#__PURE__*/function () {
144
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(searchAql, searchSchemaId) {
145
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
146
+ while (1) switch (_context.prev = _context.next) {
147
+ case 0:
148
+ if (schemaId !== searchSchemaId || aql !== searchAql) {
149
+ reset({
150
+ shouldResetColumns: true
151
+ });
152
+ setAql(searchAql);
153
+ setSchemaId(searchSchemaId);
154
+ setIsNewSearch(true);
155
+ }
156
+ case 1:
157
+ case "end":
158
+ return _context.stop();
159
+ }
160
+ }, _callee);
161
+ }));
162
+ return function (_x, _x2) {
163
+ return _ref.apply(this, arguments);
164
+ };
165
+ }(), [aql, reset, schemaId]);
163
166
  var renderModalTitleContent = useCallback(function () {
164
167
  if (workspaceError) {
165
168
  return undefined;
@@ -222,7 +225,7 @@ var analyticsContextAttributes = {
222
225
  };
223
226
  var analyticsContextData = {
224
227
  packageName: "@atlaskit/link-datasource",
225
- packageVersion: "1.6.0",
228
+ packageVersion: "1.6.2",
226
229
  source: 'datasourceConfigModal'
227
230
  };
228
231
  var contextData = _objectSpread(_objectSpread({}, analyticsContextData), {}, {
@@ -1,20 +1,43 @@
1
+ import { COMPOUND_OPERATOR_AND, COMPOUND_OPERATOR_OR, creators, JastBuilder, OPERATOR_EQUALS, OPERATOR_GT_EQUALS, OPERATOR_LIKE, ORDER_BY_DIRECTION_ASC, ORDER_BY_DIRECTION_DESC, print } from '@atlaskit/jql-ast';
1
2
  var fuzzySearchRegExp = /^"(.+)"$/;
2
3
  var jiraIssueKeyRegExp = /[A-Z]+-\d+/;
4
+ var constructTerminalClause = function constructTerminalClause(field, operator, value) {
5
+ return creators.terminalClause(creators.field(field), creators.operator(operator), creators.valueOperand(value));
6
+ };
3
7
  export var buildJQL = function buildJQL(input) {
8
+ /**
9
+ * Jql ast - Transforming the ast
10
+ * https://atlaskit.atlassian.com/packages/jql/jql-ast/docs/transforming-the-ast
11
+ */
12
+ var jast = new JastBuilder().build('');
13
+ var query = jast.query;
4
14
  var rawSearch = input.rawSearch,
5
15
  _input$orderDirection = input.orderDirection,
6
- orderDirection = _input$orderDirection === void 0 ? 'DESC' : _input$orderDirection,
16
+ orderDirection = _input$orderDirection === void 0 ? ORDER_BY_DIRECTION_DESC : _input$orderDirection,
7
17
  _input$orderKey = input.orderKey,
8
18
  orderKey = _input$orderKey === void 0 ? 'created' : _input$orderKey;
9
- var fuzzy = !rawSearch.match(fuzzySearchRegExp) ? '*' : '';
10
- var basicSearch = rawSearch.replace(/['"?*]+/g, '');
11
- var baseQueryParts = rawSearch.trim() ? ["text ~ \"".concat(basicSearch).concat(fuzzy, "\""), "summary ~ \"".concat(basicSearch).concat(fuzzy, "\"")] : [];
12
- if (jiraIssueKeyRegExp.test(rawSearch)) {
13
- baseQueryParts.push("key = \"".concat(basicSearch, "\""));
19
+ var trimmedRawSearch = rawSearch.trim();
20
+ if (!query) {
21
+ return '';
14
22
  }
15
- var baseQueryContent = baseQueryParts.join(' OR ');
16
- var baseQuery = baseQueryContent ? "(".concat(baseQueryContent, ")") : '';
17
- var limiter = rawSearch !== null && rawSearch !== void 0 && rawSearch.trim() ? '' : "created >= -30d";
18
- var query = [baseQuery, limiter].filter(Boolean).join(' AND ');
19
- return "".concat(query, " order by ").concat(orderKey, " ").concat(orderDirection.toUpperCase());
23
+ if (trimmedRawSearch) {
24
+ var fuzzy = !trimmedRawSearch.match(fuzzySearchRegExp) ? '*' : '';
25
+ var basicSearch = trimmedRawSearch.replace(/['"?*]+/g, '');
26
+ var text = constructTerminalClause('text', OPERATOR_LIKE, "".concat(basicSearch).concat(fuzzy));
27
+ var summary = constructTerminalClause('summary', OPERATOR_LIKE, "".concat(basicSearch).concat(fuzzy));
28
+ var orClauseFields = [text, summary];
29
+ if (jiraIssueKeyRegExp.test(trimmedRawSearch)) {
30
+ var key = constructTerminalClause('key', OPERATOR_EQUALS, basicSearch);
31
+ orClauseFields.push(key);
32
+ }
33
+ var orClause = creators.compoundClause(creators.compoundOperator(COMPOUND_OPERATOR_OR), orClauseFields);
34
+ query.appendClause(orClause, COMPOUND_OPERATOR_AND);
35
+ } else {
36
+ var created = constructTerminalClause('created', OPERATOR_GT_EQUALS, '-30d');
37
+ query.appendClause(created, COMPOUND_OPERATOR_AND);
38
+ }
39
+ var orderField = creators.orderByField(creators.field(orderKey));
40
+ query.prependOrderField(orderField);
41
+ query.setOrderDirection(creators.orderByDirection(orderDirection.toLowerCase() === 'asc' ? ORDER_BY_DIRECTION_ASC : ORDER_BY_DIRECTION_DESC));
42
+ return print(jast);
20
43
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/link-datasource",
3
- "version": "1.6.0",
3
+ "version": "1.6.2",
4
4
  "description": "UI Components to support linking platform dataset feature",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -42,12 +42,13 @@
42
42
  "@atlaskit/icon": "^21.12.0",
43
43
  "@atlaskit/icon-object": "^6.3.0",
44
44
  "@atlaskit/image": "^1.1.0",
45
+ "@atlaskit/jql-ast": "^3.0.0",
45
46
  "@atlaskit/jql-editor-autocomplete-rest": "^2.0.0",
46
47
  "@atlaskit/link-client-extension": "^1.7.0",
47
- "@atlaskit/linking-common": "^4.10.0",
48
+ "@atlaskit/linking-common": "^4.11.0",
48
49
  "@atlaskit/linking-types": "^8.4.0",
49
50
  "@atlaskit/lozenge": "^11.4.0",
50
- "@atlaskit/modal-dialog": "^12.7.0",
51
+ "@atlaskit/modal-dialog": "^12.8.0",
51
52
  "@atlaskit/platform-feature-flags": "^0.2.4",
52
53
  "@atlaskit/pragmatic-drag-and-drop": "^0.23.0",
53
54
  "@atlaskit/pragmatic-drag-and-drop-hitbox": "^0.11.0",