@atlaskit/link-datasource 0.29.4 → 0.29.5

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 (91) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/cjs/hooks/useAssetsClient.js +50 -31
  3. package/dist/cjs/hooks/useObjectSchemas.js +74 -0
  4. package/dist/cjs/hooks/useValidateAqlText.js +42 -13
  5. package/dist/cjs/services/cmdbService.js +17 -8
  6. package/dist/cjs/types/assets/types.js +7 -1
  7. package/dist/cjs/ui/assets-modal/modal/index.js +46 -10
  8. package/dist/cjs/ui/assets-modal/modal/messages.js +5 -0
  9. package/dist/cjs/ui/assets-modal/modal/styled.js +1 -1
  10. package/dist/cjs/ui/assets-modal/search-container/aql-search-input/index.js +161 -0
  11. package/dist/cjs/ui/assets-modal/search-container/aql-search-input/loading-state.js +18 -0
  12. package/dist/cjs/ui/assets-modal/search-container/aql-search-input/messages.js +15 -0
  13. package/dist/cjs/ui/assets-modal/search-container/index.js +50 -0
  14. package/dist/cjs/ui/assets-modal/search-container/loading-state.js +21 -0
  15. package/dist/cjs/ui/assets-modal/search-container/object-schema-select/index.js +103 -0
  16. package/dist/cjs/ui/assets-modal/search-container/object-schema-select/loading-state.js +18 -0
  17. package/dist/cjs/ui/assets-modal/search-container/object-schema-select/messages.js +25 -0
  18. package/dist/cjs/ui/assets-modal/search-container/object-schema-select/utils.js +13 -0
  19. package/dist/cjs/ui/assets-modal/search-container/styled.js +22 -0
  20. package/dist/cjs/version.json +1 -1
  21. package/dist/es2019/hooks/useAssetsClient.js +22 -13
  22. package/dist/es2019/hooks/useObjectSchemas.js +32 -0
  23. package/dist/es2019/hooks/useValidateAqlText.js +26 -9
  24. package/dist/es2019/services/cmdbService.js +14 -6
  25. package/dist/es2019/types/assets/types.js +3 -1
  26. package/dist/es2019/ui/assets-modal/modal/index.js +42 -8
  27. package/dist/es2019/ui/assets-modal/modal/messages.js +5 -0
  28. package/dist/es2019/ui/assets-modal/modal/styled.js +3 -3
  29. package/dist/es2019/ui/assets-modal/search-container/aql-search-input/index.js +129 -0
  30. package/dist/es2019/ui/assets-modal/search-container/aql-search-input/loading-state.js +8 -0
  31. package/dist/es2019/ui/assets-modal/search-container/aql-search-input/messages.js +8 -0
  32. package/dist/es2019/ui/assets-modal/search-container/index.js +46 -0
  33. package/dist/es2019/ui/assets-modal/search-container/loading-state.js +14 -0
  34. package/dist/es2019/ui/assets-modal/search-container/object-schema-select/index.js +65 -0
  35. package/dist/es2019/ui/assets-modal/search-container/object-schema-select/loading-state.js +8 -0
  36. package/dist/es2019/ui/assets-modal/search-container/object-schema-select/messages.js +18 -0
  37. package/dist/es2019/ui/assets-modal/search-container/object-schema-select/utils.js +4 -0
  38. package/dist/es2019/ui/assets-modal/search-container/styled.js +22 -0
  39. package/dist/es2019/version.json +1 -1
  40. package/dist/esm/hooks/useAssetsClient.js +51 -32
  41. package/dist/esm/hooks/useObjectSchemas.js +66 -0
  42. package/dist/esm/hooks/useValidateAqlText.js +42 -13
  43. package/dist/esm/services/cmdbService.js +15 -7
  44. package/dist/esm/types/assets/types.js +3 -1
  45. package/dist/esm/ui/assets-modal/modal/index.js +46 -10
  46. package/dist/esm/ui/assets-modal/modal/messages.js +5 -0
  47. package/dist/esm/ui/assets-modal/modal/styled.js +1 -1
  48. package/dist/esm/ui/assets-modal/search-container/aql-search-input/index.js +152 -0
  49. package/dist/esm/ui/assets-modal/search-container/aql-search-input/loading-state.js +10 -0
  50. package/dist/esm/ui/assets-modal/search-container/aql-search-input/messages.js +8 -0
  51. package/dist/esm/ui/assets-modal/search-container/index.js +41 -0
  52. package/dist/esm/ui/assets-modal/search-container/loading-state.js +13 -0
  53. package/dist/esm/ui/assets-modal/search-container/object-schema-select/index.js +94 -0
  54. package/dist/esm/ui/assets-modal/search-container/object-schema-select/loading-state.js +10 -0
  55. package/dist/esm/ui/assets-modal/search-container/object-schema-select/messages.js +18 -0
  56. package/dist/esm/ui/assets-modal/search-container/object-schema-select/utils.js +6 -0
  57. package/dist/esm/ui/assets-modal/search-container/styled.js +11 -0
  58. package/dist/esm/version.json +1 -1
  59. package/dist/types/hooks/useAssetsClient.d.ts +8 -6
  60. package/dist/types/hooks/useObjectSchemas.d.ts +8 -0
  61. package/dist/types/hooks/useValidateAqlText.d.ts +5 -2
  62. package/dist/types/services/cmdbService.d.ts +4 -3
  63. package/dist/types/types/assets/types.d.ts +21 -10
  64. package/dist/types/ui/assets-modal/modal/messages.d.ts +5 -0
  65. package/dist/types/ui/assets-modal/search-container/aql-search-input/index.d.ts +8 -0
  66. package/dist/types/ui/assets-modal/search-container/aql-search-input/loading-state.d.ts +3 -0
  67. package/dist/types/ui/assets-modal/search-container/aql-search-input/messages.d.ts +7 -0
  68. package/dist/types/ui/assets-modal/search-container/index.d.ts +16 -0
  69. package/dist/types/ui/assets-modal/search-container/loading-state.d.ts +8 -0
  70. package/dist/types/ui/assets-modal/search-container/object-schema-select/index.d.ts +10 -0
  71. package/dist/types/ui/assets-modal/search-container/object-schema-select/loading-state.d.ts +3 -0
  72. package/dist/types/ui/assets-modal/search-container/object-schema-select/messages.d.ts +17 -0
  73. package/dist/types/ui/assets-modal/search-container/object-schema-select/utils.d.ts +2 -0
  74. package/dist/types/ui/assets-modal/search-container/styled.d.ts +19 -0
  75. package/dist/types-ts4.5/hooks/useAssetsClient.d.ts +8 -6
  76. package/dist/types-ts4.5/hooks/useObjectSchemas.d.ts +8 -0
  77. package/dist/types-ts4.5/hooks/useValidateAqlText.d.ts +5 -2
  78. package/dist/types-ts4.5/services/cmdbService.d.ts +4 -3
  79. package/dist/types-ts4.5/types/assets/types.d.ts +21 -10
  80. package/dist/types-ts4.5/ui/assets-modal/modal/messages.d.ts +5 -0
  81. package/dist/types-ts4.5/ui/assets-modal/search-container/aql-search-input/index.d.ts +8 -0
  82. package/dist/types-ts4.5/ui/assets-modal/search-container/aql-search-input/loading-state.d.ts +3 -0
  83. package/dist/types-ts4.5/ui/assets-modal/search-container/aql-search-input/messages.d.ts +7 -0
  84. package/dist/types-ts4.5/ui/assets-modal/search-container/index.d.ts +16 -0
  85. package/dist/types-ts4.5/ui/assets-modal/search-container/loading-state.d.ts +8 -0
  86. package/dist/types-ts4.5/ui/assets-modal/search-container/object-schema-select/index.d.ts +10 -0
  87. package/dist/types-ts4.5/ui/assets-modal/search-container/object-schema-select/loading-state.d.ts +3 -0
  88. package/dist/types-ts4.5/ui/assets-modal/search-container/object-schema-select/messages.d.ts +17 -0
  89. package/dist/types-ts4.5/ui/assets-modal/search-container/object-schema-select/utils.d.ts +2 -0
  90. package/dist/types-ts4.5/ui/assets-modal/search-container/styled.d.ts +19 -0
  91. package/package.json +4 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @atlaskit/link-datasource
2
2
 
3
+ ## 0.29.5
4
+
5
+ ### Patch Changes
6
+
7
+ - [`2cb283138ce`](https://bitbucket.org/atlassian/atlassian-frontend/commits/2cb283138ce) - Added Search Functionality to Assets Config Modal and added endpoints for Assets fetch mocks
8
+ - Updated dependencies
9
+
3
10
  ## 0.29.4
4
11
 
5
12
  ### Patch Changes
@@ -10,61 +10,80 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
10
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
11
  var _react = require("react");
12
12
  var _cmdbService = require("../services/cmdbService");
13
- // TODO: Pass in localhost:3000 for testing locally - remember to remove this code after
14
- // You must also have a proxy server running to forward requests from http://localhost:3000 to a JSM premium url
15
- var useAssetsClient = function useAssetsClient(hostname) {
16
- var _useState = (0, _react.useState)(),
13
+ var useAssetsClient = function useAssetsClient(initialParameters) {
14
+ var _useState = (0, _react.useState)(false),
17
15
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
18
- objectSchemas = _useState2[0],
19
- setObjectSchemas = _useState2[1];
16
+ loading = _useState2[0],
17
+ setLoading = _useState2[1];
20
18
  var _useState3 = (0, _react.useState)(),
21
19
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
22
20
  workspaceId = _useState4[0],
23
21
  setWorkspaceId = _useState4[1];
24
22
  var _useState5 = (0, _react.useState)(),
25
23
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
26
- error = _useState6[0],
27
- setError = _useState6[1];
24
+ objectSchema = _useState6[0],
25
+ setObjectSchema = _useState6[1];
26
+ var _useState7 = (0, _react.useState)(),
27
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
28
+ error = _useState8[0],
29
+ setError = _useState8[1];
28
30
  (0, _react.useEffect)(function () {
29
31
  (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
30
- var _workspaceId, objectSchemasResponse;
32
+ var _workspaceId, fetchedObjectSchema;
31
33
  return _regenerator.default.wrap(function _callee$(_context) {
32
34
  while (1) switch (_context.prev = _context.next) {
33
35
  case 0:
34
- _context.prev = 0;
35
- _context.next = 3;
36
- return (0, _cmdbService.getWorkspaceId)(hostname);
37
- case 3:
36
+ setLoading(true);
37
+ setError(undefined);
38
+ _context.prev = 2;
39
+ _context.next = 5;
40
+ return (0, _cmdbService.getWorkspaceId)();
41
+ case 5:
38
42
  _workspaceId = _context.sent;
39
- _context.next = 6;
40
- return (0, _cmdbService.fetchObjectSchemas)(_workspaceId, hostname);
41
- case 6:
42
- objectSchemasResponse = _context.sent;
43
43
  setWorkspaceId(_workspaceId);
44
- setObjectSchemas(objectSchemasResponse.values);
45
- _context.next = 14;
46
- break;
44
+ // Check schema from initial parameters still exists and fetch name for schema select
45
+ if (!(initialParameters !== null && initialParameters !== void 0 && initialParameters.schemaId)) {
46
+ _context.next = 17;
47
+ break;
48
+ }
49
+ _context.prev = 8;
50
+ _context.next = 11;
51
+ return (0, _cmdbService.fetchObjectSchema)(_workspaceId, initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.schemaId);
47
52
  case 11:
48
- _context.prev = 11;
49
- _context.t0 = _context["catch"](0);
50
- if (_context.t0 instanceof Error) {
51
- setError(_context.t0);
53
+ fetchedObjectSchema = _context.sent;
54
+ setObjectSchema(fetchedObjectSchema);
55
+ _context.next = 17;
56
+ break;
57
+ case 15:
58
+ _context.prev = 15;
59
+ _context.t0 = _context["catch"](8);
60
+ case 17:
61
+ _context.next = 22;
62
+ break;
63
+ case 19:
64
+ _context.prev = 19;
65
+ _context.t1 = _context["catch"](2);
66
+ if (_context.t1 instanceof Error) {
67
+ setError(_context.t1);
52
68
  } else {
53
69
  setError(new Error('Unexpected error occured'));
54
- // eslint-disable-next-line no-console
55
- console.error(_context.t0);
56
70
  }
57
- case 14:
71
+ case 22:
72
+ _context.prev = 22;
73
+ setLoading(false);
74
+ return _context.finish(22);
75
+ case 25:
58
76
  case "end":
59
77
  return _context.stop();
60
78
  }
61
- }, _callee, null, [[0, 11]]);
79
+ }, _callee, null, [[2, 19, 22, 25], [8, 15]]);
62
80
  }))();
63
- }, [hostname]);
81
+ }, [initialParameters]);
64
82
  return {
65
83
  workspaceId: workspaceId,
66
- objectSchemas: objectSchemas,
67
- error: error
84
+ workspaceError: error,
85
+ objectSchema: objectSchema,
86
+ assetsClientLoading: loading
68
87
  };
69
88
  };
70
89
  exports.useAssetsClient = useAssetsClient;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useObjectSchemas = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _react = require("react");
12
+ var _cmdbService = require("../services/cmdbService");
13
+ var useObjectSchemas = function useObjectSchemas(workspaceId) {
14
+ var _useState = (0, _react.useState)(false),
15
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
16
+ loading = _useState2[0],
17
+ setLoading = _useState2[1];
18
+ var _useState3 = (0, _react.useState)(),
19
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
20
+ objectSchemas = _useState4[0],
21
+ setObjectSchemas = _useState4[1];
22
+ var _useState5 = (0, _react.useState)(),
23
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
24
+ error = _useState6[0],
25
+ setError = _useState6[1];
26
+ var request = (0, _react.useCallback)( /*#__PURE__*/function () {
27
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(query) {
28
+ var fetchedObjectSchemas, fetchedObjectSchemasResponse;
29
+ return _regenerator.default.wrap(function _callee$(_context) {
30
+ while (1) switch (_context.prev = _context.next) {
31
+ case 0:
32
+ setLoading(true);
33
+ setError(undefined);
34
+ _context.prev = 2;
35
+ _context.next = 5;
36
+ return (0, _cmdbService.fetchObjectSchemas)(workspaceId, query);
37
+ case 5:
38
+ fetchedObjectSchemasResponse = _context.sent;
39
+ setObjectSchemas(fetchedObjectSchemasResponse.values);
40
+ fetchedObjectSchemas = fetchedObjectSchemasResponse.values;
41
+ _context.next = 13;
42
+ break;
43
+ case 10:
44
+ _context.prev = 10;
45
+ _context.t0 = _context["catch"](2);
46
+ if (_context.t0 instanceof Error) {
47
+ setError(_context.t0);
48
+ } else {
49
+ setError(new Error('Unexpected error occured'));
50
+ }
51
+ case 13:
52
+ _context.prev = 13;
53
+ setLoading(false);
54
+ return _context.finish(13);
55
+ case 16:
56
+ return _context.abrupt("return", fetchedObjectSchemas);
57
+ case 17:
58
+ case "end":
59
+ return _context.stop();
60
+ }
61
+ }, _callee, null, [[2, 10, 13, 16]]);
62
+ }));
63
+ return function (_x) {
64
+ return _ref.apply(this, arguments);
65
+ };
66
+ }(), [workspaceId]);
67
+ return {
68
+ objectSchemasLoading: loading,
69
+ objectSchemasError: error,
70
+ objectSchemas: objectSchemas,
71
+ fetchObjectSchemas: request
72
+ };
73
+ };
74
+ exports.useObjectSchemas = useObjectSchemas;
@@ -13,36 +13,65 @@ var _cmdbService = require("../services/cmdbService");
13
13
  var useValidateAqlText = function useValidateAqlText(workspaceId, hostname) {
14
14
  var _useState = (0, _react.useState)(false),
15
15
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
16
- isLoading = _useState2[0],
17
- setIsLoading = _useState2[1];
16
+ loading = _useState2[0],
17
+ setLoading = _useState2[1];
18
+ var _useState3 = (0, _react.useState)(false),
19
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
20
+ isValidAqlText = _useState4[0],
21
+ setIsValidAqlText = _useState4[1];
22
+ var _useState5 = (0, _react.useState)(),
23
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
24
+ error = _useState6[0],
25
+ setError = _useState6[1];
18
26
  var validateAqlText = (0, _react.useCallback)( /*#__PURE__*/function () {
19
27
  var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(aql) {
20
- var validateAqlResponse;
28
+ var isValid, validateAqlResponse;
21
29
  return _regenerator.default.wrap(function _callee$(_context) {
22
30
  while (1) switch (_context.prev = _context.next) {
23
31
  case 0:
24
- setIsLoading(true);
25
- _context.next = 3;
32
+ setLoading(true);
33
+ setError(undefined);
34
+ isValid = false;
35
+ _context.prev = 3;
36
+ _context.next = 6;
26
37
  return (0, _cmdbService.validateAql)(workspaceId, {
27
38
  qlQuery: aql
28
- }, hostname);
29
- case 3:
30
- validateAqlResponse = _context.sent;
31
- setIsLoading(false);
32
- return _context.abrupt("return", validateAqlResponse.isValid);
39
+ });
33
40
  case 6:
41
+ validateAqlResponse = _context.sent;
42
+ setIsValidAqlText(validateAqlResponse.isValid);
43
+ isValid = validateAqlResponse.isValid;
44
+ _context.next = 14;
45
+ break;
46
+ case 11:
47
+ _context.prev = 11;
48
+ _context.t0 = _context["catch"](3);
49
+ if (_context.t0 instanceof Error) {
50
+ setError(_context.t0);
51
+ } else {
52
+ setError(new Error('Unexpected error occured'));
53
+ }
54
+ case 14:
55
+ _context.prev = 14;
56
+ setLoading(false);
57
+ return _context.finish(14);
58
+ case 17:
59
+ return _context.abrupt("return", isValid);
60
+ case 18:
34
61
  case "end":
35
62
  return _context.stop();
36
63
  }
37
- }, _callee);
64
+ }, _callee, null, [[3, 11, 14, 17]]);
38
65
  }));
39
66
  return function (_x) {
40
67
  return _ref.apply(this, arguments);
41
68
  };
42
- }(), [hostname, workspaceId]);
69
+ }(), [workspaceId]);
43
70
  return {
71
+ isValidAqlText: isValidAqlText,
44
72
  validateAqlText: validateAqlText,
45
- isLoading: isLoading
73
+ validateAqlTextLoading: loading,
74
+ validateAqlTextError: error
46
75
  };
47
76
  };
48
77
  exports.useValidateAqlText = useValidateAqlText;
@@ -4,18 +4,18 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.validateAql = exports.getWorkspaceId = exports.fetchObjectSchemas = void 0;
7
+ exports.validateAql = exports.getWorkspaceId = exports.fetchObjectSchemas = exports.fetchObjectSchema = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _linkingCommon = require("@atlaskit/linking-common");
11
11
  var getWorkspaceId = /*#__PURE__*/function () {
12
- var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(hostname) {
12
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
13
13
  var _workspaceDetailsResp;
14
14
  var url, workspaceDetailsResponse;
15
15
  return _regenerator.default.wrap(function _callee$(_context) {
16
16
  while (1) switch (_context.prev = _context.next) {
17
17
  case 0:
18
- url = "".concat(hostname || '', "/rest/servicedesk/cmdb/latest/workspace");
18
+ url = '/rest/servicedesk/cmdb/latest/workspace';
19
19
  _context.next = 3;
20
20
  return (0, _linkingCommon.request)('get', url, undefined, undefined, [200, 201, 202, 203, 204]);
21
21
  case 3:
@@ -33,21 +33,30 @@ var getWorkspaceId = /*#__PURE__*/function () {
33
33
  }
34
34
  }, _callee);
35
35
  }));
36
- return function getWorkspaceId(_x) {
36
+ return function getWorkspaceId() {
37
37
  return _ref.apply(this, arguments);
38
38
  };
39
39
  }();
40
40
  exports.getWorkspaceId = getWorkspaceId;
41
- var validateAql = function validateAql(workspaceId, data, hostname) {
42
- var url = "".concat(hostname || '', "/gateway/api/jsm/assets/workspace/").concat(workspaceId, "/v1/aql/validate");
41
+ var validateAql = function validateAql(workspaceId, data) {
42
+ var url = "/gateway/api/jsm/assets/workspace/".concat(workspaceId, "/v1/aql/validate");
43
43
  return (0, _linkingCommon.request)('post', url, {
44
44
  qlQuery: data.qlQuery,
45
45
  context: 'SMART_LINKS'
46
46
  }, undefined, [200, 201, 202, 203, 204]);
47
47
  };
48
48
  exports.validateAql = validateAql;
49
- var fetchObjectSchemas = function fetchObjectSchemas(workspaceId, hostname) {
50
- var url = "".concat(hostname || '', "/gateway/api/jsm/assets/workspace/").concat(workspaceId, "/v1/objectschema/list?maxResults=100");
49
+ var fetchObjectSchema = function fetchObjectSchema(workspaceId, schemaId) {
50
+ var url = "/gateway/api/jsm/assets/workspace/".concat(workspaceId, "/v1/objectschema/").concat(schemaId);
51
+ return (0, _linkingCommon.request)('get', url, undefined, undefined, [200, 201, 202, 203, 204]);
52
+ };
53
+ exports.fetchObjectSchema = fetchObjectSchema;
54
+ var fetchObjectSchemas = function fetchObjectSchemas(workspaceId, query) {
55
+ var queryParams = new URLSearchParams();
56
+ queryParams.set('maxResults', '20');
57
+ queryParams.set('includeCounts', 'false');
58
+ query && queryParams.set('query', query);
59
+ var url = "/gateway/api/jsm/assets/workspace/".concat(workspaceId, "/v1/objectschema/list?").concat(queryParams);
51
60
  return (0, _linkingCommon.request)('get', url, undefined, undefined, [200, 201, 202, 203, 204]);
52
61
  };
53
62
  exports.fetchObjectSchemas = fetchObjectSchemas;
@@ -2,4 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
- });
5
+ });
6
+ exports.objectSchemaKey = exports.aqlKey = void 0;
7
+ // These are to enforce the field "name" property and keep everything typed
8
+ var objectSchemaKey = 'objectSchema';
9
+ exports.objectSchemaKey = objectSchemaKey;
10
+ var aqlKey = 'aql';
11
+ exports.aqlKey = aqlKey;
@@ -14,6 +14,9 @@ var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-
14
14
  var _modalDialog = _interopRequireWildcard(require("@atlaskit/modal-dialog"));
15
15
  var _useAssetsClient2 = require("../../../hooks/useAssetsClient");
16
16
  var _useDatasourceTableState = require("../../../hooks/useDatasourceTableState");
17
+ var _modalLoadingError = require("../../common/error-state/modal-loading-error");
18
+ var _searchContainer = require("../search-container");
19
+ var _loadingState = require("../search-container/loading-state");
17
20
  var _messages = require("./messages");
18
21
  var _renderAssetsContent = require("./render-assets-content");
19
22
  var _styled = require("./styled");
@@ -21,6 +24,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
21
24
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
22
25
  /** @jsx jsx */
23
26
 
27
+ var AssetsModalTitle = (0, _react2.jsx)(_modalDialog.ModalTitle, null, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.insertObjectsTitle));
24
28
  var AssetsConfigModal = function AssetsConfigModal(props) {
25
29
  var datasourceId = props.datasourceId,
26
30
  initialParameters = props.parameters,
@@ -28,22 +32,30 @@ var AssetsConfigModal = function AssetsConfigModal(props) {
28
32
  onInsert = props.onInsert,
29
33
  initialVisibleColumnKeys = props.visibleColumnKeys;
30
34
  var _useState = (0, _react.useState)(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.aql),
31
- _useState2 = (0, _slicedToArray2.default)(_useState, 1),
32
- aql = _useState2[0];
35
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
36
+ aql = _useState2[0],
37
+ setAql = _useState2[1];
33
38
  var _useState3 = (0, _react.useState)(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.schemaId),
34
- _useState4 = (0, _slicedToArray2.default)(_useState3, 1),
35
- schemaId = _useState4[0];
39
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
40
+ schemaId = _useState4[0],
41
+ setSchemaId = _useState4[1];
36
42
  var _useState5 = (0, _react.useState)(initialVisibleColumnKeys),
37
43
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
38
44
  visibleColumnKeys = _useState6[0],
39
45
  setVisibleColumnKeys = _useState6[1];
40
- var _useAssetsClient = (0, _useAssetsClient2.useAssetsClient)(),
41
- workspaceId = _useAssetsClient.workspaceId;
46
+
47
+ // If a workspaceError occurs this is a critical error
48
+ var _useAssetsClient = (0, _useAssetsClient2.useAssetsClient)(initialParameters),
49
+ workspaceId = _useAssetsClient.workspaceId,
50
+ workspaceError = _useAssetsClient.workspaceError,
51
+ objectSchema = _useAssetsClient.objectSchema,
52
+ assetsClientLoading = _useAssetsClient.assetsClientLoading;
42
53
  var parameters = (0, _react.useMemo)(function () {
43
54
  return {
44
55
  aql: aql || '',
45
56
  schemaId: schemaId || '',
46
- workspaceId: '' /* TODO FLY-1240: Add workspace Id */
57
+ workspaceId: '',
58
+ cloudId: ''
47
59
  };
48
60
  }, [aql, schemaId]);
49
61
  var _useDatasourceTableSt = (0, _useDatasourceTableState.useDatasourceTableState)({
@@ -57,7 +69,7 @@ var AssetsConfigModal = function AssetsConfigModal(props) {
57
69
  var newVisibleColumnKeys = !initialVisibleColumnKeys || (initialVisibleColumnKeys || []).length === 0 ? defaultVisibleColumnKeys : initialVisibleColumnKeys;
58
70
  setVisibleColumnKeys(newVisibleColumnKeys);
59
71
  }, [initialVisibleColumnKeys, defaultVisibleColumnKeys]);
60
- var isDisabled = status === 'rejected' || status === 'loading' || status === 'empty' || !aql || !workspaceId || !schemaId;
72
+ var isDisabled = status === 'rejected' || status === 'loading' || status === 'empty' || !!workspaceError || assetsClientLoading || !aql || !schemaId;
61
73
  var retrieveUrlForSmartCardRender = (0, _react.useCallback)(function () {
62
74
  var _data$key, _data$key$data;
63
75
  var _responseItems = (0, _slicedToArray2.default)(responseItems, 1),
@@ -66,7 +78,7 @@ var AssetsConfigModal = function AssetsConfigModal(props) {
66
78
  return data === null || data === void 0 ? void 0 : (_data$key = data.key) === null || _data$key === void 0 ? void 0 : (_data$key$data = _data$key.data) === null || _data$key$data === void 0 ? void 0 : _data$key$data.url;
67
79
  }, [responseItems]);
68
80
  var onInsertPressed = (0, _react.useCallback)(function () {
69
- if (!aql) {
81
+ if (!aql || !schemaId) {
70
82
  return;
71
83
  }
72
84
  var firstAssetUrl = retrieveUrlForSmartCardRender();
@@ -104,12 +116,36 @@ var AssetsConfigModal = function AssetsConfigModal(props) {
104
116
  });
105
117
  }
106
118
  }, [aql, datasourceId, onInsert, responseItems.length, retrieveUrlForSmartCardRender, schemaId, visibleColumnKeys]);
119
+ var handleOnSearch = (0, _react.useCallback)(function (aql, schemaId) {
120
+ setAql(aql);
121
+ setSchemaId(schemaId);
122
+ }, []);
123
+ var renderModalTitleContent = (0, _react.useCallback)(function () {
124
+ if (workspaceError) {
125
+ return undefined;
126
+ } else {
127
+ if (!workspaceId || assetsClientLoading) {
128
+ return (0, _react2.jsx)(_loadingState.AssetsSearchContainerLoading, {
129
+ modalTitle: AssetsModalTitle
130
+ });
131
+ }
132
+ return (0, _react2.jsx)(_searchContainer.AssetsSearchContainer, {
133
+ workspaceId: workspaceId,
134
+ initialSearchData: {
135
+ aql: aql,
136
+ objectSchema: objectSchema
137
+ },
138
+ onSearch: handleOnSearch,
139
+ modalTitle: AssetsModalTitle
140
+ });
141
+ }
142
+ }, [aql, assetsClientLoading, handleOnSearch, objectSchema, workspaceError, workspaceId]);
107
143
  return (0, _react2.jsx)(_modalDialog.ModalTransition, null, (0, _react2.jsx)(_modalDialog.default, {
108
144
  testId: 'asset-datasource-modal',
109
145
  onClose: onCancel,
110
146
  width: "x-large",
111
147
  shouldScrollInViewport: true
112
- }, (0, _react2.jsx)(_modalDialog.ModalHeader, null, (0, _react2.jsx)(_modalDialog.ModalTitle, null)), (0, _react2.jsx)(_modalDialog.ModalBody, null, (0, _react2.jsx)(_styled.ModalContentContainer, null, (0, _react2.jsx)(_renderAssetsContent.RenderAssetsContent, {
148
+ }, (0, _react2.jsx)(_modalDialog.ModalHeader, null, renderModalTitleContent()), (0, _react2.jsx)(_modalDialog.ModalBody, null, (0, _react2.jsx)(_styled.ModalContentContainer, null, workspaceError ? (0, _react2.jsx)(_modalLoadingError.ModalLoadingError, null) : (0, _react2.jsx)(_renderAssetsContent.RenderAssetsContent, {
113
149
  status: status,
114
150
  responseItems: responseItems
115
151
  }))), (0, _react2.jsx)(_modalDialog.ModalFooter, null, (0, _react2.jsx)(_standardButton.default, {
@@ -15,6 +15,11 @@ var modalMessages = (0, _reactIntlNext.defineMessages)({
15
15
  id: 'linkDataSource.assets.configmodal.insertIssuesButtonText',
16
16
  description: 'Button text to insert the displayed content',
17
17
  defaultMessage: 'Insert objects'
18
+ },
19
+ insertObjectsTitle: {
20
+ id: 'linkDataSource.assets.configmodal.insertObjectsTitle',
21
+ description: 'Title for the Assets Objects Datasource config modal which prefixes a select picker',
22
+ defaultMessage: 'Insert objects from'
18
23
  }
19
24
  });
20
25
  exports.modalMessages = modalMessages;
@@ -8,5 +8,5 @@ exports.ModalContentContainer = void 0;
8
8
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
9
  var _styled = _interopRequireDefault(require("@emotion/styled"));
10
10
  var _templateObject;
11
- var ModalContentContainer = _styled.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: 'grid';\n height: '420px';\n overflow: 'auto';\n"])));
11
+ var ModalContentContainer = _styled.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: grid;\n height: 420px;\n overflow: auto;\n"])));
12
12
  exports.ModalContentContainer = ModalContentContainer;
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.SEARCH_DEBOUNCE_MS = exports.AqlSearchInput = void 0;
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
+ var _react = require("react");
12
+ var _react2 = require("@emotion/react");
13
+ var _reactIntlNext = require("react-intl-next");
14
+ var _button = _interopRequireDefault(require("@atlaskit/button"));
15
+ var _form = require("@atlaskit/form");
16
+ var _checkCircle = _interopRequireDefault(require("@atlaskit/icon/glyph/check-circle"));
17
+ var _crossCircle = _interopRequireDefault(require("@atlaskit/icon/glyph/cross-circle"));
18
+ var _search = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/search"));
19
+ var _spinner = _interopRequireDefault(require("@atlaskit/spinner"));
20
+ var _textfield = _interopRequireDefault(require("@atlaskit/textfield"));
21
+ var _useValidateAqlText2 = require("../../../../hooks/useValidateAqlText");
22
+ var _types = require("../../../../types/assets/types");
23
+ var _styled = require("../styled");
24
+ var _messages = require("./messages");
25
+ /** @jsx jsx */
26
+
27
+ /* Meta isn't exported in @atlaskit/form
28
+ Taken from packages/design-system/form/src/field.tsx */
29
+
30
+ var searchButtonStyles = (0, _react2.css)({
31
+ marginRight: "var(--ds-space-075, 6px)"
32
+ });
33
+ var SEARCH_DEBOUNCE_MS = 350;
34
+ exports.SEARCH_DEBOUNCE_MS = SEARCH_DEBOUNCE_MS;
35
+ var renderValidatorIcon = function renderValidatorIcon(value, error, meta) {
36
+ if (value && meta !== null && meta !== void 0 && meta.validating) {
37
+ return (0, _react2.jsx)(_spinner.default, {
38
+ size: "medium",
39
+ testId: "assets-datasource-modal--aql-validating"
40
+ });
41
+ }
42
+ if (value && error) {
43
+ return (0, _react2.jsx)(_crossCircle.default, {
44
+ label: "label",
45
+ primaryColor: "red",
46
+ size: "medium",
47
+ testId: "assets-datasource-modal--aql-invalid"
48
+ });
49
+ }
50
+ if (value && meta.valid) {
51
+ return (0, _react2.jsx)(_checkCircle.default, {
52
+ label: "label",
53
+ primaryColor: "green",
54
+ size: "medium",
55
+ testId: "assets-datasource-modal--aql-valid"
56
+ });
57
+ }
58
+ return (0, _react2.jsx)(_search.default, {
59
+ label: "label",
60
+ size: "medium",
61
+ testId: "assets-datasource-modal--aql-idle"
62
+ });
63
+ };
64
+ var AqlSearchInput = function AqlSearchInput(_ref) {
65
+ var value = _ref.value,
66
+ workspaceId = _ref.workspaceId,
67
+ _ref$testId = _ref.testId,
68
+ testId = _ref$testId === void 0 ? 'assets-datasource-modal--aql-search-input' : _ref$testId;
69
+ var _useIntl = (0, _reactIntlNext.useIntl)(),
70
+ formatMessage = _useIntl.formatMessage;
71
+ var timeout = (0, _react.useRef)();
72
+ var lastValue = (0, _react.useRef)(value);
73
+ var lastResult = (0, _react.useRef)(Promise.resolve(undefined));
74
+ var _useValidateAqlText = (0, _useValidateAqlText2.useValidateAqlText)(workspaceId),
75
+ validateAqlText = _useValidateAqlText.validateAqlText;
76
+
77
+ // Validation expects undefined when valid and a string as an error message when invalid
78
+ var handleValidation = (0, _react.useCallback)( /*#__PURE__*/function () {
79
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(newUnvalidatedQlQuery) {
80
+ var isValid;
81
+ return _regenerator.default.wrap(function _callee$(_context) {
82
+ while (1) switch (_context.prev = _context.next) {
83
+ case 0:
84
+ if (newUnvalidatedQlQuery) {
85
+ _context.next = 2;
86
+ break;
87
+ }
88
+ return _context.abrupt("return", undefined);
89
+ case 2:
90
+ _context.next = 4;
91
+ return validateAqlText(newUnvalidatedQlQuery);
92
+ case 4:
93
+ isValid = _context.sent;
94
+ return _context.abrupt("return", isValid ? undefined : 'invalid');
95
+ case 6:
96
+ case "end":
97
+ return _context.stop();
98
+ }
99
+ }, _callee);
100
+ }));
101
+ return function (_x) {
102
+ return _ref2.apply(this, arguments);
103
+ };
104
+ }(), [validateAqlText]);
105
+
106
+ /* Debounce async validation for input, validation is also called on every field change
107
+ in a form so we need to also memoize. The async validate function is expected to either:
108
+ Immediately return a promise (which is then collected into an array, every single time validation is run),
109
+ or immediately return either undefined or an error message */
110
+ var debouncedMemoizedValidation = function debouncedMemoizedValidation(value) {
111
+ return new Promise(function (resolve) {
112
+ if (timeout.current) {
113
+ timeout.current();
114
+ }
115
+ if (value !== lastValue.current) {
116
+ var timerId = setTimeout(function () {
117
+ lastValue.current = value;
118
+ lastResult.current = handleValidation(value);
119
+ resolve(lastResult.current);
120
+ }, SEARCH_DEBOUNCE_MS);
121
+ timeout.current = function () {
122
+ clearTimeout(timerId);
123
+ resolve('debouncing');
124
+ };
125
+ } else {
126
+ resolve(lastResult.current);
127
+ }
128
+ });
129
+ };
130
+ return (0, _react2.jsx)(_styled.FieldContainer, null, (0, _react2.jsx)(_form.Field, {
131
+ name: _types.aqlKey,
132
+ defaultValue: value,
133
+ validate: debouncedMemoizedValidation
134
+ }, function (_ref3) {
135
+ var fieldProps = _ref3.fieldProps,
136
+ meta = _ref3.meta,
137
+ error = _ref3.error;
138
+ return (0, _react2.jsx)(_textfield.default, (0, _extends2.default)({}, fieldProps, {
139
+ elemBeforeInput: (0, _react2.jsx)("span", {
140
+ style: {
141
+ paddingLeft: 6,
142
+ width: 24
143
+ }
144
+ }, renderValidatorIcon(fieldProps.value, error, meta)),
145
+ elemAfterInput: (0, _react2.jsx)(_button.default, {
146
+ appearance: "primary",
147
+ css: searchButtonStyles,
148
+ iconBefore: (0, _react2.jsx)(_search.default, {
149
+ label: formatMessage(_messages.searchInputMessages.placeholder),
150
+ size: "medium"
151
+ }),
152
+ spacing: "none",
153
+ testId: "assets-datasource-modal--aql-search-button",
154
+ type: "submit"
155
+ }),
156
+ placeholder: formatMessage(_messages.searchInputMessages.placeholder),
157
+ testId: testId
158
+ }));
159
+ }));
160
+ };
161
+ exports.AqlSearchInput = AqlSearchInput;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AssetsAqlSearchInputSkeleton = void 0;
7
+ var _react = require("@emotion/react");
8
+ var _linkingCommon = require("@atlaskit/linking-common");
9
+ /** @jsx jsx */
10
+
11
+ var AssetsAqlSearchInputSkeleton = function AssetsAqlSearchInputSkeleton() {
12
+ return (0, _react.jsx)(_linkingCommon.Skeleton, {
13
+ width: "100%",
14
+ height: "40px",
15
+ testId: "assets-datasource-modal--aql-search-input-skeleton"
16
+ });
17
+ };
18
+ exports.AssetsAqlSearchInputSkeleton = AssetsAqlSearchInputSkeleton;