@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,14 +1,22 @@
1
1
  /** @jsx jsx */
2
2
  import { useCallback, useEffect, useMemo, useState } from 'react';
3
- import { jsx } from '@emotion/react';
3
+ import { css, jsx } from '@emotion/react';
4
4
  import { FormattedMessage } from 'react-intl-next';
5
5
  import Button from '@atlaskit/button/standard-button';
6
6
  import Modal, { ModalBody, ModalFooter, ModalHeader, ModalTitle, ModalTransition } from '@atlaskit/modal-dialog';
7
7
  import { useAssetsClient } from '../../../hooks/useAssetsClient';
8
8
  import { useDatasourceTableState } from '../../../hooks/useDatasourceTableState';
9
+ import { ModalLoadingError } from '../../common/error-state/modal-loading-error';
10
+ import { AssetsSearchContainer } from '../search-container';
11
+ import { AssetsSearchContainerLoading } from '../search-container/loading-state';
9
12
  import { modalMessages } from './messages';
10
13
  import { RenderAssetsContent } from './render-assets-content';
11
- import { ModalContentContainer } from './styled';
14
+ const modalBodyWrapperStyles = css({
15
+ display: 'grid',
16
+ height: '420px',
17
+ overflow: 'auto'
18
+ });
19
+ const AssetsModalTitle = jsx(ModalTitle, null, jsx(FormattedMessage, modalMessages.insertObjectsTitle));
12
20
  export const AssetsConfigModal = props => {
13
21
  const {
14
22
  datasourceId,
@@ -17,30 +25,46 @@ export const AssetsConfigModal = props => {
17
25
  onInsert,
18
26
  visibleColumnKeys: initialVisibleColumnKeys
19
27
  } = props;
20
- const [aql] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.aql);
21
- const [schemaId] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.schemaId);
28
+ const [aql, setAql] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.aql);
29
+ const [schemaId, setSchemaId] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.schemaId);
22
30
  const [visibleColumnKeys, setVisibleColumnKeys] = useState(initialVisibleColumnKeys);
31
+
32
+ // If a workspaceError occurs this is a critical error
23
33
  const {
24
- workspaceId
25
- } = useAssetsClient();
34
+ workspaceId,
35
+ workspaceError,
36
+ objectSchema,
37
+ assetsClientLoading
38
+ } = useAssetsClient(initialParameters);
26
39
  const parameters = useMemo(() => ({
27
40
  aql: aql || '',
28
41
  schemaId: schemaId || '',
29
- workspaceId: '' /* TODO FLY-1240: Add workspace Id */
30
- }), [aql, schemaId]);
42
+ workspaceId: workspaceId || '',
43
+ cloudId: ''
44
+ }), [aql, schemaId, workspaceId]);
45
+ const isParametersSet = !!(aql && workspaceId && schemaId);
31
46
  const {
32
47
  status,
48
+ onNextPage,
33
49
  responseItems,
50
+ reset,
51
+ loadDatasourceDetails,
52
+ hasNextPage,
53
+ columns,
34
54
  defaultVisibleColumnKeys
35
55
  } = useDatasourceTableState({
36
56
  datasourceId,
37
- parameters
57
+ parameters: isParametersSet ? parameters : undefined,
58
+ fieldKeys: visibleColumnKeys
38
59
  });
60
+ const onVisibleColumnKeysChange = useCallback(visibleColumnKeys => {
61
+ setVisibleColumnKeys(visibleColumnKeys);
62
+ }, []);
39
63
  useEffect(() => {
40
64
  const newVisibleColumnKeys = !initialVisibleColumnKeys || (initialVisibleColumnKeys || []).length === 0 ? defaultVisibleColumnKeys : initialVisibleColumnKeys;
41
65
  setVisibleColumnKeys(newVisibleColumnKeys);
42
66
  }, [initialVisibleColumnKeys, defaultVisibleColumnKeys]);
43
- const isDisabled = status === 'rejected' || status === 'loading' || status === 'empty' || !aql || !workspaceId || !schemaId;
67
+ const isDisabled = !!workspaceError || status === 'rejected' || status === 'loading' || status === 'empty' || !!workspaceError || assetsClientLoading || !aql || !schemaId;
44
68
  const retrieveUrlForSmartCardRender = useCallback(() => {
45
69
  var _data$key, _data$key$data;
46
70
  const [data] = responseItems;
@@ -48,7 +72,7 @@ export const AssetsConfigModal = props => {
48
72
  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;
49
73
  }, [responseItems]);
50
74
  const onInsertPressed = useCallback(() => {
51
- if (!aql) {
75
+ if (!aql || !schemaId) {
52
76
  return;
53
77
  }
54
78
  const firstAssetUrl = retrieveUrlForSmartCardRender();
@@ -84,17 +108,57 @@ export const AssetsConfigModal = props => {
84
108
  });
85
109
  }
86
110
  }, [aql, datasourceId, onInsert, responseItems.length, retrieveUrlForSmartCardRender, schemaId, visibleColumnKeys]);
111
+ const handleOnSearch = useCallback((aql, schemaId) => {
112
+ reset();
113
+ setAql(aql);
114
+ setSchemaId(schemaId);
115
+ }, [reset]);
116
+ const renderModalTitleContent = useCallback(() => {
117
+ if (workspaceError) {
118
+ return undefined;
119
+ } else {
120
+ if (!workspaceId || assetsClientLoading) {
121
+ return jsx(AssetsSearchContainerLoading, {
122
+ modalTitle: AssetsModalTitle
123
+ });
124
+ }
125
+ return jsx(AssetsSearchContainer, {
126
+ workspaceId: workspaceId,
127
+ initialSearchData: {
128
+ aql,
129
+ objectSchema
130
+ },
131
+ onSearch: handleOnSearch,
132
+ modalTitle: AssetsModalTitle,
133
+ isSearching: status === 'loading'
134
+ });
135
+ }
136
+ }, [aql, assetsClientLoading, handleOnSearch, objectSchema, status, workspaceError, workspaceId]);
87
137
  return jsx(ModalTransition, null, jsx(Modal, {
88
138
  testId: 'asset-datasource-modal',
89
139
  onClose: onCancel,
90
140
  width: "x-large",
91
- shouldScrollInViewport: true
92
- }, jsx(ModalHeader, null, jsx(ModalTitle, null)), jsx(ModalBody, null, jsx(ModalContentContainer, null, jsx(RenderAssetsContent, {
141
+ shouldScrollInViewport: true,
142
+ shouldCloseOnOverlayClick: false
143
+ }, jsx(ModalHeader, null, renderModalTitleContent()), jsx(ModalBody, null, jsx("div", {
144
+ css: modalBodyWrapperStyles
145
+ }, workspaceError ? jsx(ModalLoadingError, null) : jsx(RenderAssetsContent, {
93
146
  status: status,
94
- responseItems: responseItems
147
+ responseItems: responseItems,
148
+ visibleColumnKeys: visibleColumnKeys,
149
+ onVisibleColumnKeysChange: onVisibleColumnKeysChange,
150
+ datasourceId: datasourceId,
151
+ aql: aql,
152
+ schemaId: schemaId,
153
+ onNextPage: onNextPage,
154
+ hasNextPage: hasNextPage,
155
+ loadDatasourceDetails: loadDatasourceDetails,
156
+ columns: columns,
157
+ defaultVisibleColumnKeys: defaultVisibleColumnKeys
95
158
  }))), jsx(ModalFooter, null, jsx(Button, {
96
159
  appearance: "default",
97
- onClick: onCancel
160
+ onClick: onCancel,
161
+ testId: 'asset-datasource-modal--cancel-button'
98
162
  }, jsx(FormattedMessage, modalMessages.cancelButtonText)), jsx(Button, {
99
163
  appearance: "primary",
100
164
  onClick: onInsertPressed,
@@ -9,5 +9,10 @@ export const 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,21 +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 const RenderAssetsContent = props => {
6
7
  const {
7
8
  status,
8
- responseItems
9
+ responseItems,
10
+ visibleColumnKeys,
11
+ onNextPage,
12
+ hasNextPage,
13
+ loadDatasourceDetails,
14
+ columns,
15
+ defaultVisibleColumnKeys,
16
+ onVisibleColumnKeysChange
9
17
  } = props;
10
18
  const resolvedWithNoResults = status === 'resolved' && !responseItems.length;
19
+ const issueLikeDataTableView = useMemo(() => /*#__PURE__*/React.createElement(IssueLikeDataTableView, {
20
+ testId: "asset-datasource-table",
21
+ status: status,
22
+ columns: columns,
23
+ items: responseItems,
24
+ hasNextPage: hasNextPage,
25
+ visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
26
+ onNextPage: onNextPage,
27
+ onLoadDatasourceDetails: loadDatasourceDetails,
28
+ onVisibleColumnKeysChange: onVisibleColumnKeysChange
29
+ }), [columns, defaultVisibleColumnKeys, hasNextPage, loadDatasourceDetails, onNextPage, onVisibleColumnKeysChange, responseItems, status, visibleColumnKeys]);
11
30
  if (status === 'rejected') {
12
31
  return /*#__PURE__*/React.createElement(ModalLoadingError, null);
32
+ } else if (status === 'empty') {
33
+ return /*#__PURE__*/React.createElement(InitialStateView, null);
13
34
  } else if (resolvedWithNoResults) {
14
35
  return /*#__PURE__*/React.createElement(NoResults, null);
15
- } else if (status === 'empty') {
36
+ } else if (status === 'loading' && !columns.length) {
16
37
  return /*#__PURE__*/React.createElement(EmptyState, {
17
- testId: "assets-aql-datasource-modal--empty-state"
38
+ testId: "assets-aql-datasource-modal--loading-state"
18
39
  });
19
40
  }
20
- return /*#__PURE__*/React.createElement("p", null, "TODO add IssueLikeDataTableView component.");
41
+ return issueLikeDataTableView;
21
42
  };