@atlaskit/link-datasource 0.29.4 → 0.30.0

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 (113) hide show
  1. package/CHANGELOG.md +13 -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 +82 -16
  8. package/dist/cjs/ui/assets-modal/modal/messages.js +5 -0
  9. package/dist/cjs/ui/assets-modal/modal/render-assets-content/index.js +31 -6
  10. package/dist/cjs/ui/assets-modal/modal/render-assets-content/initial-state-view/assets/crystal-ball-svg.js +528 -0
  11. package/dist/cjs/ui/assets-modal/modal/render-assets-content/initial-state-view/index.js +41 -0
  12. package/dist/cjs/ui/assets-modal/modal/render-assets-content/initial-state-view/messages.js +25 -0
  13. package/dist/cjs/ui/assets-modal/search-container/aql-search-input/index.js +163 -0
  14. package/dist/cjs/ui/assets-modal/search-container/aql-search-input/loading-state.js +18 -0
  15. package/dist/cjs/ui/assets-modal/search-container/aql-search-input/messages.js +15 -0
  16. package/dist/cjs/ui/assets-modal/search-container/index.js +52 -0
  17. package/dist/cjs/ui/assets-modal/search-container/loading-state.js +21 -0
  18. package/dist/cjs/ui/assets-modal/search-container/object-schema-select/index.js +103 -0
  19. package/dist/cjs/ui/assets-modal/search-container/object-schema-select/loading-state.js +18 -0
  20. package/dist/cjs/ui/assets-modal/search-container/object-schema-select/messages.js +25 -0
  21. package/dist/cjs/ui/assets-modal/search-container/object-schema-select/utils.js +13 -0
  22. package/dist/cjs/ui/assets-modal/search-container/styled.js +22 -0
  23. package/dist/cjs/version.json +1 -1
  24. package/dist/es2019/hooks/useAssetsClient.js +22 -13
  25. package/dist/es2019/hooks/useObjectSchemas.js +32 -0
  26. package/dist/es2019/hooks/useValidateAqlText.js +26 -9
  27. package/dist/es2019/services/cmdbService.js +14 -6
  28. package/dist/es2019/types/assets/types.js +3 -1
  29. package/dist/es2019/ui/assets-modal/modal/index.js +79 -15
  30. package/dist/es2019/ui/assets-modal/modal/messages.js +5 -0
  31. package/dist/es2019/ui/assets-modal/modal/render-assets-content/index.js +27 -6
  32. package/dist/es2019/ui/assets-modal/modal/render-assets-content/initial-state-view/assets/crystal-ball-svg.js +518 -0
  33. package/dist/es2019/ui/assets-modal/modal/render-assets-content/initial-state-view/index.js +35 -0
  34. package/dist/es2019/ui/assets-modal/modal/render-assets-content/initial-state-view/messages.js +18 -0
  35. package/dist/es2019/ui/assets-modal/search-container/aql-search-input/index.js +131 -0
  36. package/dist/es2019/ui/assets-modal/search-container/aql-search-input/loading-state.js +8 -0
  37. package/dist/es2019/ui/assets-modal/search-container/aql-search-input/messages.js +8 -0
  38. package/dist/es2019/ui/assets-modal/search-container/index.js +48 -0
  39. package/dist/es2019/ui/assets-modal/search-container/loading-state.js +14 -0
  40. package/dist/es2019/ui/assets-modal/search-container/object-schema-select/index.js +65 -0
  41. package/dist/es2019/ui/assets-modal/search-container/object-schema-select/loading-state.js +8 -0
  42. package/dist/es2019/ui/assets-modal/search-container/object-schema-select/messages.js +18 -0
  43. package/dist/es2019/ui/assets-modal/search-container/object-schema-select/utils.js +4 -0
  44. package/dist/es2019/ui/assets-modal/search-container/styled.js +22 -0
  45. package/dist/es2019/version.json +1 -1
  46. package/dist/esm/hooks/useAssetsClient.js +51 -32
  47. package/dist/esm/hooks/useObjectSchemas.js +66 -0
  48. package/dist/esm/hooks/useValidateAqlText.js +42 -13
  49. package/dist/esm/services/cmdbService.js +15 -7
  50. package/dist/esm/types/assets/types.js +3 -1
  51. package/dist/esm/ui/assets-modal/modal/index.js +83 -17
  52. package/dist/esm/ui/assets-modal/modal/messages.js +5 -0
  53. package/dist/esm/ui/assets-modal/modal/render-assets-content/index.js +29 -6
  54. package/dist/esm/ui/assets-modal/modal/render-assets-content/initial-state-view/assets/crystal-ball-svg.js +520 -0
  55. package/dist/esm/ui/assets-modal/modal/render-assets-content/initial-state-view/index.js +34 -0
  56. package/dist/esm/ui/assets-modal/modal/render-assets-content/initial-state-view/messages.js +18 -0
  57. package/dist/esm/ui/assets-modal/search-container/aql-search-input/index.js +154 -0
  58. package/dist/esm/ui/assets-modal/search-container/aql-search-input/loading-state.js +10 -0
  59. package/dist/esm/ui/assets-modal/search-container/aql-search-input/messages.js +8 -0
  60. package/dist/esm/ui/assets-modal/search-container/index.js +43 -0
  61. package/dist/esm/ui/assets-modal/search-container/loading-state.js +13 -0
  62. package/dist/esm/ui/assets-modal/search-container/object-schema-select/index.js +94 -0
  63. package/dist/esm/ui/assets-modal/search-container/object-schema-select/loading-state.js +10 -0
  64. package/dist/esm/ui/assets-modal/search-container/object-schema-select/messages.js +18 -0
  65. package/dist/esm/ui/assets-modal/search-container/object-schema-select/utils.js +6 -0
  66. package/dist/esm/ui/assets-modal/search-container/styled.js +11 -0
  67. package/dist/esm/version.json +1 -1
  68. package/dist/types/hooks/useAssetsClient.d.ts +8 -6
  69. package/dist/types/hooks/useObjectSchemas.d.ts +8 -0
  70. package/dist/types/hooks/useValidateAqlText.d.ts +5 -2
  71. package/dist/types/services/cmdbService.d.ts +4 -3
  72. package/dist/types/types/assets/types.d.ts +21 -10
  73. package/dist/types/ui/assets-modal/modal/messages.d.ts +5 -0
  74. package/dist/types/ui/assets-modal/modal/render-assets-content/index.d.ts +12 -3
  75. package/dist/types/ui/assets-modal/modal/render-assets-content/initial-state-view/assets/crystal-ball-svg.d.ts +2 -0
  76. package/dist/types/ui/assets-modal/modal/render-assets-content/initial-state-view/index.d.ts +3 -0
  77. package/dist/types/ui/assets-modal/modal/render-assets-content/initial-state-view/messages.d.ts +17 -0
  78. package/dist/types/ui/assets-modal/search-container/aql-search-input/index.d.ts +9 -0
  79. package/dist/types/ui/assets-modal/search-container/aql-search-input/loading-state.d.ts +3 -0
  80. package/dist/types/ui/assets-modal/search-container/aql-search-input/messages.d.ts +7 -0
  81. package/dist/types/ui/assets-modal/search-container/index.d.ts +17 -0
  82. package/dist/types/ui/assets-modal/search-container/loading-state.d.ts +8 -0
  83. package/dist/types/ui/assets-modal/search-container/object-schema-select/index.d.ts +10 -0
  84. package/dist/types/ui/assets-modal/search-container/object-schema-select/loading-state.d.ts +3 -0
  85. package/dist/types/ui/assets-modal/search-container/object-schema-select/messages.d.ts +17 -0
  86. package/dist/types/ui/assets-modal/search-container/object-schema-select/utils.d.ts +2 -0
  87. package/dist/types/ui/assets-modal/search-container/styled.d.ts +19 -0
  88. package/dist/types-ts4.5/hooks/useAssetsClient.d.ts +8 -6
  89. package/dist/types-ts4.5/hooks/useObjectSchemas.d.ts +8 -0
  90. package/dist/types-ts4.5/hooks/useValidateAqlText.d.ts +5 -2
  91. package/dist/types-ts4.5/services/cmdbService.d.ts +4 -3
  92. package/dist/types-ts4.5/types/assets/types.d.ts +21 -10
  93. package/dist/types-ts4.5/ui/assets-modal/modal/messages.d.ts +5 -0
  94. package/dist/types-ts4.5/ui/assets-modal/modal/render-assets-content/index.d.ts +12 -3
  95. package/dist/types-ts4.5/ui/assets-modal/modal/render-assets-content/initial-state-view/assets/crystal-ball-svg.d.ts +2 -0
  96. package/dist/types-ts4.5/ui/assets-modal/modal/render-assets-content/initial-state-view/index.d.ts +3 -0
  97. package/dist/types-ts4.5/ui/assets-modal/modal/render-assets-content/initial-state-view/messages.d.ts +17 -0
  98. package/dist/types-ts4.5/ui/assets-modal/search-container/aql-search-input/index.d.ts +9 -0
  99. package/dist/types-ts4.5/ui/assets-modal/search-container/aql-search-input/loading-state.d.ts +3 -0
  100. package/dist/types-ts4.5/ui/assets-modal/search-container/aql-search-input/messages.d.ts +7 -0
  101. package/dist/types-ts4.5/ui/assets-modal/search-container/index.d.ts +17 -0
  102. package/dist/types-ts4.5/ui/assets-modal/search-container/loading-state.d.ts +8 -0
  103. package/dist/types-ts4.5/ui/assets-modal/search-container/object-schema-select/index.d.ts +10 -0
  104. package/dist/types-ts4.5/ui/assets-modal/search-container/object-schema-select/loading-state.d.ts +3 -0
  105. package/dist/types-ts4.5/ui/assets-modal/search-container/object-schema-select/messages.d.ts +17 -0
  106. package/dist/types-ts4.5/ui/assets-modal/search-container/object-schema-select/utils.d.ts +2 -0
  107. package/dist/types-ts4.5/ui/assets-modal/search-container/styled.d.ts +19 -0
  108. package/package.json +5 -3
  109. package/dist/cjs/ui/assets-modal/modal/styled.js +0 -12
  110. package/dist/es2019/ui/assets-modal/modal/styled.js +0 -6
  111. package/dist/esm/ui/assets-modal/modal/styled.js +0 -4
  112. package/dist/types/ui/assets-modal/modal/styled.d.ts +0 -5
  113. package/dist/types-ts4.5/ui/assets-modal/modal/styled.d.ts +0 -5
@@ -1,15 +1,23 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  /** @jsx jsx */
3
3
  import { useCallback, useEffect, useMemo, useState } from 'react';
4
- import { jsx } from '@emotion/react';
4
+ import { css, jsx } from '@emotion/react';
5
5
  import { FormattedMessage } from 'react-intl-next';
6
6
  import Button from '@atlaskit/button/standard-button';
7
7
  import Modal, { ModalBody, ModalFooter, ModalHeader, ModalTitle, ModalTransition } from '@atlaskit/modal-dialog';
8
8
  import { useAssetsClient } from '../../../hooks/useAssetsClient';
9
9
  import { useDatasourceTableState } from '../../../hooks/useDatasourceTableState';
10
+ import { ModalLoadingError } from '../../common/error-state/modal-loading-error';
11
+ import { AssetsSearchContainer } from '../search-container';
12
+ import { AssetsSearchContainerLoading } from '../search-container/loading-state';
10
13
  import { modalMessages } from './messages';
11
14
  import { RenderAssetsContent } from './render-assets-content';
12
- import { ModalContentContainer } from './styled';
15
+ var modalBodyWrapperStyles = css({
16
+ display: 'grid',
17
+ height: '420px',
18
+ overflow: 'auto'
19
+ });
20
+ var AssetsModalTitle = jsx(ModalTitle, null, jsx(FormattedMessage, modalMessages.insertObjectsTitle));
13
21
  export var AssetsConfigModal = function AssetsConfigModal(props) {
14
22
  var datasourceId = props.datasourceId,
15
23
  initialParameters = props.parameters,
@@ -17,36 +25,54 @@ export var AssetsConfigModal = function AssetsConfigModal(props) {
17
25
  onInsert = props.onInsert,
18
26
  initialVisibleColumnKeys = props.visibleColumnKeys;
19
27
  var _useState = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.aql),
20
- _useState2 = _slicedToArray(_useState, 1),
21
- aql = _useState2[0];
28
+ _useState2 = _slicedToArray(_useState, 2),
29
+ aql = _useState2[0],
30
+ setAql = _useState2[1];
22
31
  var _useState3 = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.schemaId),
23
- _useState4 = _slicedToArray(_useState3, 1),
24
- schemaId = _useState4[0];
32
+ _useState4 = _slicedToArray(_useState3, 2),
33
+ schemaId = _useState4[0],
34
+ setSchemaId = _useState4[1];
25
35
  var _useState5 = useState(initialVisibleColumnKeys),
26
36
  _useState6 = _slicedToArray(_useState5, 2),
27
37
  visibleColumnKeys = _useState6[0],
28
38
  setVisibleColumnKeys = _useState6[1];
29
- var _useAssetsClient = useAssetsClient(),
30
- workspaceId = _useAssetsClient.workspaceId;
39
+
40
+ // If a workspaceError occurs this is a critical error
41
+ var _useAssetsClient = useAssetsClient(initialParameters),
42
+ workspaceId = _useAssetsClient.workspaceId,
43
+ workspaceError = _useAssetsClient.workspaceError,
44
+ objectSchema = _useAssetsClient.objectSchema,
45
+ assetsClientLoading = _useAssetsClient.assetsClientLoading;
31
46
  var parameters = useMemo(function () {
32
47
  return {
33
48
  aql: aql || '',
34
49
  schemaId: schemaId || '',
35
- workspaceId: '' /* TODO FLY-1240: Add workspace Id */
50
+ workspaceId: workspaceId || '',
51
+ cloudId: ''
36
52
  };
37
- }, [aql, schemaId]);
53
+ }, [aql, schemaId, workspaceId]);
54
+ var isParametersSet = !!(aql && workspaceId && schemaId);
38
55
  var _useDatasourceTableSt = useDatasourceTableState({
39
56
  datasourceId: datasourceId,
40
- parameters: parameters
57
+ parameters: isParametersSet ? parameters : undefined,
58
+ fieldKeys: visibleColumnKeys
41
59
  }),
42
60
  status = _useDatasourceTableSt.status,
61
+ onNextPage = _useDatasourceTableSt.onNextPage,
43
62
  responseItems = _useDatasourceTableSt.responseItems,
63
+ reset = _useDatasourceTableSt.reset,
64
+ loadDatasourceDetails = _useDatasourceTableSt.loadDatasourceDetails,
65
+ hasNextPage = _useDatasourceTableSt.hasNextPage,
66
+ columns = _useDatasourceTableSt.columns,
44
67
  defaultVisibleColumnKeys = _useDatasourceTableSt.defaultVisibleColumnKeys;
68
+ var onVisibleColumnKeysChange = useCallback(function (visibleColumnKeys) {
69
+ setVisibleColumnKeys(visibleColumnKeys);
70
+ }, []);
45
71
  useEffect(function () {
46
72
  var newVisibleColumnKeys = !initialVisibleColumnKeys || (initialVisibleColumnKeys || []).length === 0 ? defaultVisibleColumnKeys : initialVisibleColumnKeys;
47
73
  setVisibleColumnKeys(newVisibleColumnKeys);
48
74
  }, [initialVisibleColumnKeys, defaultVisibleColumnKeys]);
49
- var isDisabled = status === 'rejected' || status === 'loading' || status === 'empty' || !aql || !workspaceId || !schemaId;
75
+ var isDisabled = !!workspaceError || status === 'rejected' || status === 'loading' || status === 'empty' || !!workspaceError || assetsClientLoading || !aql || !schemaId;
50
76
  var retrieveUrlForSmartCardRender = useCallback(function () {
51
77
  var _data$key, _data$key$data;
52
78
  var _responseItems = _slicedToArray(responseItems, 1),
@@ -55,7 +81,7 @@ export var AssetsConfigModal = function AssetsConfigModal(props) {
55
81
  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;
56
82
  }, [responseItems]);
57
83
  var onInsertPressed = useCallback(function () {
58
- if (!aql) {
84
+ if (!aql || !schemaId) {
59
85
  return;
60
86
  }
61
87
  var firstAssetUrl = retrieveUrlForSmartCardRender();
@@ -93,17 +119,57 @@ export var AssetsConfigModal = function AssetsConfigModal(props) {
93
119
  });
94
120
  }
95
121
  }, [aql, datasourceId, onInsert, responseItems.length, retrieveUrlForSmartCardRender, schemaId, visibleColumnKeys]);
122
+ var handleOnSearch = useCallback(function (aql, schemaId) {
123
+ reset();
124
+ setAql(aql);
125
+ setSchemaId(schemaId);
126
+ }, [reset]);
127
+ var renderModalTitleContent = useCallback(function () {
128
+ if (workspaceError) {
129
+ return undefined;
130
+ } else {
131
+ if (!workspaceId || assetsClientLoading) {
132
+ return jsx(AssetsSearchContainerLoading, {
133
+ modalTitle: AssetsModalTitle
134
+ });
135
+ }
136
+ return jsx(AssetsSearchContainer, {
137
+ workspaceId: workspaceId,
138
+ initialSearchData: {
139
+ aql: aql,
140
+ objectSchema: objectSchema
141
+ },
142
+ onSearch: handleOnSearch,
143
+ modalTitle: AssetsModalTitle,
144
+ isSearching: status === 'loading'
145
+ });
146
+ }
147
+ }, [aql, assetsClientLoading, handleOnSearch, objectSchema, status, workspaceError, workspaceId]);
96
148
  return jsx(ModalTransition, null, jsx(Modal, {
97
149
  testId: 'asset-datasource-modal',
98
150
  onClose: onCancel,
99
151
  width: "x-large",
100
- shouldScrollInViewport: true
101
- }, jsx(ModalHeader, null, jsx(ModalTitle, null)), jsx(ModalBody, null, jsx(ModalContentContainer, null, jsx(RenderAssetsContent, {
152
+ shouldScrollInViewport: true,
153
+ shouldCloseOnOverlayClick: false
154
+ }, jsx(ModalHeader, null, renderModalTitleContent()), jsx(ModalBody, null, jsx("div", {
155
+ css: modalBodyWrapperStyles
156
+ }, workspaceError ? jsx(ModalLoadingError, null) : jsx(RenderAssetsContent, {
102
157
  status: status,
103
- responseItems: responseItems
158
+ responseItems: responseItems,
159
+ visibleColumnKeys: visibleColumnKeys,
160
+ onVisibleColumnKeysChange: onVisibleColumnKeysChange,
161
+ datasourceId: datasourceId,
162
+ aql: aql,
163
+ schemaId: schemaId,
164
+ onNextPage: onNextPage,
165
+ hasNextPage: hasNextPage,
166
+ loadDatasourceDetails: loadDatasourceDetails,
167
+ columns: columns,
168
+ defaultVisibleColumnKeys: defaultVisibleColumnKeys
104
169
  }))), jsx(ModalFooter, null, jsx(Button, {
105
170
  appearance: "default",
106
- onClick: onCancel
171
+ onClick: onCancel,
172
+ testId: 'asset-datasource-modal--cancel-button'
107
173
  }, jsx(FormattedMessage, modalMessages.cancelButtonText)), jsx(Button, {
108
174
  appearance: "primary",
109
175
  onClick: onInsertPressed,
@@ -9,5 +9,10 @@ export var modalMessages = defineMessages({
9
9
  id: 'linkDataSource.assets.configmodal.insertIssuesButtonText',
10
10
  description: 'Button text to insert the displayed content',
11
11
  defaultMessage: 'Insert objects'
12
+ },
13
+ insertObjectsTitle: {
14
+ id: 'linkDataSource.assets.configmodal.insertObjectsTitle',
15
+ description: 'Title for the Assets Objects Datasource config modal which prefixes a select picker',
16
+ defaultMessage: 'Insert objects from'
12
17
  }
13
18
  });
@@ -1,19 +1,42 @@
1
- import React from 'react';
1
+ import React, { useMemo } from 'react';
2
2
  import { ModalLoadingError } from '../../../common/error-state/modal-loading-error';
3
3
  import { NoResults } from '../../../common/error-state/no-results';
4
- import { EmptyState } from '../../../issue-like-table';
4
+ import { EmptyState, IssueLikeDataTableView } from '../../../issue-like-table';
5
+ import { InitialStateView } from './initial-state-view';
5
6
  export var RenderAssetsContent = function RenderAssetsContent(props) {
6
7
  var status = props.status,
7
- responseItems = props.responseItems;
8
+ responseItems = props.responseItems,
9
+ visibleColumnKeys = props.visibleColumnKeys,
10
+ onNextPage = props.onNextPage,
11
+ hasNextPage = props.hasNextPage,
12
+ loadDatasourceDetails = props.loadDatasourceDetails,
13
+ columns = props.columns,
14
+ defaultVisibleColumnKeys = props.defaultVisibleColumnKeys,
15
+ onVisibleColumnKeysChange = props.onVisibleColumnKeysChange;
8
16
  var resolvedWithNoResults = status === 'resolved' && !responseItems.length;
17
+ var issueLikeDataTableView = useMemo(function () {
18
+ return /*#__PURE__*/React.createElement(IssueLikeDataTableView, {
19
+ testId: "asset-datasource-table",
20
+ status: status,
21
+ columns: columns,
22
+ items: responseItems,
23
+ hasNextPage: hasNextPage,
24
+ visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
25
+ onNextPage: onNextPage,
26
+ onLoadDatasourceDetails: loadDatasourceDetails,
27
+ onVisibleColumnKeysChange: onVisibleColumnKeysChange
28
+ });
29
+ }, [columns, defaultVisibleColumnKeys, hasNextPage, loadDatasourceDetails, onNextPage, onVisibleColumnKeysChange, responseItems, status, visibleColumnKeys]);
9
30
  if (status === 'rejected') {
10
31
  return /*#__PURE__*/React.createElement(ModalLoadingError, null);
32
+ } else if (status === 'empty') {
33
+ return /*#__PURE__*/React.createElement(InitialStateView, null);
11
34
  } else if (resolvedWithNoResults) {
12
35
  return /*#__PURE__*/React.createElement(NoResults, null);
13
- } else if (status === 'empty') {
36
+ } else if (status === 'loading' && !columns.length) {
14
37
  return /*#__PURE__*/React.createElement(EmptyState, {
15
- testId: "assets-aql-datasource-modal--empty-state"
38
+ testId: "assets-aql-datasource-modal--loading-state"
16
39
  });
17
40
  }
18
- return /*#__PURE__*/React.createElement("p", null, "TODO add IssueLikeDataTableView component.");
41
+ return issueLikeDataTableView;
19
42
  };