@atlaskit/link-datasource 0.18.1 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/cjs/index.js +8 -4
  3. package/dist/cjs/ui/{datasourceTableView.js → datasource-table-view/datasourceTableView.js} +3 -3
  4. package/dist/cjs/ui/datasource-table-view/index.js +29 -0
  5. package/dist/cjs/ui/datasource-table-view/types.js +5 -0
  6. package/dist/cjs/ui/jira-issues-modal/index.js +22 -266
  7. package/dist/cjs/ui/jira-issues-modal/modal/index.js +275 -0
  8. package/dist/cjs/version.json +1 -1
  9. package/dist/es2019/index.js +2 -2
  10. package/dist/es2019/ui/{datasourceTableView.js → datasource-table-view/datasourceTableView.js} +3 -3
  11. package/dist/es2019/ui/datasource-table-view/index.js +12 -0
  12. package/dist/es2019/ui/datasource-table-view/types.js +1 -0
  13. package/dist/es2019/ui/jira-issues-modal/index.js +13 -222
  14. package/dist/es2019/ui/jira-issues-modal/modal/index.js +223 -0
  15. package/dist/es2019/version.json +1 -1
  16. package/dist/esm/index.js +2 -2
  17. package/dist/esm/ui/{datasourceTableView.js → datasource-table-view/datasourceTableView.js} +3 -3
  18. package/dist/esm/ui/datasource-table-view/index.js +16 -0
  19. package/dist/esm/ui/datasource-table-view/types.js +1 -0
  20. package/dist/esm/ui/jira-issues-modal/index.js +17 -262
  21. package/dist/esm/ui/jira-issues-modal/modal/index.js +263 -0
  22. package/dist/esm/version.json +1 -1
  23. package/dist/types/index.d.ts +3 -2
  24. package/dist/types/ui/datasource-table-view/datasourceTableView.d.ts +3 -0
  25. package/dist/types/ui/datasource-table-view/index.d.ts +4 -0
  26. package/dist/types/ui/{datasourceTableView.d.ts → datasource-table-view/types.d.ts} +0 -2
  27. package/dist/types/ui/jira-issues-modal/index.d.ts +4 -11
  28. package/dist/types/ui/jira-issues-modal/modal/index.d.ts +3 -0
  29. package/dist/types/ui/jira-issues-modal/types.d.ts +8 -1
  30. package/dist/types-ts4.5/index.d.ts +3 -2
  31. package/dist/types-ts4.5/ui/datasource-table-view/datasourceTableView.d.ts +3 -0
  32. package/dist/types-ts4.5/ui/datasource-table-view/index.d.ts +4 -0
  33. package/dist/types-ts4.5/ui/{datasourceTableView.d.ts → datasource-table-view/types.d.ts} +0 -2
  34. package/dist/types-ts4.5/ui/jira-issues-modal/index.d.ts +4 -11
  35. package/dist/types-ts4.5/ui/jira-issues-modal/modal/index.d.ts +3 -0
  36. package/dist/types-ts4.5/ui/jira-issues-modal/types.d.ts +8 -1
  37. package/examples-helpers/buildJiraIssuesTable.tsx +1 -1
  38. package/package.json +3 -3
  39. package/report.api.md +14 -8
  40. package/tmp/api-report-tmp.d.ts +12 -3
  41. /package/dist/cjs/ui/jira-issues-modal/{messages.js → modal/messages.js} +0 -0
  42. /package/dist/es2019/ui/jira-issues-modal/{messages.js → modal/messages.js} +0 -0
  43. /package/dist/esm/ui/jira-issues-modal/{messages.js → modal/messages.js} +0 -0
  44. /package/dist/types/ui/jira-issues-modal/{messages.d.ts → modal/messages.d.ts} +0 -0
  45. /package/dist/types-ts4.5/ui/jira-issues-modal/{messages.d.ts → modal/messages.d.ts} +0 -0
@@ -0,0 +1,223 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ /** @jsx jsx */
3
+ import { useCallback, useEffect, useMemo, useState } from 'react';
4
+ import { css, jsx } from '@emotion/react';
5
+ import { FormattedMessage, IntlProvider, useIntl } from 'react-intl-next';
6
+ import Button from '@atlaskit/button/standard-button';
7
+ import Modal, { ModalBody, ModalFooter, ModalHeader, ModalTitle, ModalTransition } from '@atlaskit/modal-dialog';
8
+ import { B400, N0 } from '@atlaskit/theme/colors';
9
+ import { useDatasourceTableState } from '../../../hooks/useDatasourceTableState';
10
+ import { getAvailableJiraSites } from '../../../services/getAvailableJiraSites';
11
+ import { EmptyState, IssueLikeDataTableView } from '../../issue-like-table';
12
+ import LinkRenderType from '../../issue-like-table/render-type/link';
13
+ import { JiraSearchContainer } from '../jira-search-container';
14
+ import { ModeSwitcher } from '../mode-switcher';
15
+ import { JiraSiteSelector } from '../site-selector';
16
+ import { modalMessages } from './messages';
17
+ const dropdownContainerStyles = css({
18
+ display: 'flex',
19
+ gap: "var(--ds-space-100, 0.5rem)"
20
+ });
21
+ const contentContainerStyles = css({
22
+ height: '420px',
23
+ overflow: 'auto'
24
+ });
25
+ const placeholderSmartLinkStyles = css({
26
+ backgroundColor: `var(--ds-surface-raised, ${N0})`,
27
+ borderRadius: '3px',
28
+ boxShadow: '0px 1px 1px rgba(9, 30, 66, 0.25), 0px 0px 1px rgba(9, 30, 66, 0.31)',
29
+ color: `var(--ds-text-brand, ${B400})`,
30
+ padding: '0px 2px'
31
+ });
32
+ export const JiraIssuesConfigModal = props => {
33
+ const {
34
+ datasourceId,
35
+ parameters: initialParameters,
36
+ visibleColumnKeys: initialVisibleColumnKeys,
37
+ onCancel,
38
+ onInsert
39
+ } = props;
40
+ const [availableSites, setAvailableSites] = useState([]);
41
+ const [currentViewMode, setCurrentViewMode] = useState('issue');
42
+ const [cloudId, setCloudId] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.cloudId);
43
+ const [jql, setJql] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.jql);
44
+ const isParametersSet = !!(jql && cloudId);
45
+ const parameters = useMemo(() => !!cloudId ? {
46
+ cloudId,
47
+ jql: jql || ''
48
+ } : undefined, [cloudId, jql]);
49
+ const {
50
+ reset,
51
+ status,
52
+ onNextPage,
53
+ responseItems,
54
+ hasNextPage,
55
+ columns,
56
+ defaultVisibleColumnKeys
57
+ } = useDatasourceTableState(datasourceId, parameters);
58
+ const [visibleColumnKeys, setVisibleColumnKeys] = useState(initialVisibleColumnKeys || defaultVisibleColumnKeys);
59
+ useEffect(() => {
60
+ const newVisibleColumnKeys = !initialVisibleColumnKeys || (initialVisibleColumnKeys || []).length === 0 ? defaultVisibleColumnKeys : initialVisibleColumnKeys;
61
+ setVisibleColumnKeys(newVisibleColumnKeys);
62
+ }, [initialVisibleColumnKeys, defaultVisibleColumnKeys]);
63
+ const {
64
+ formatMessage
65
+ } = useIntl();
66
+ useEffect(() => {
67
+ const fetchSiteDisplayNames = async () => {
68
+ const jiraSites = await getAvailableJiraSites();
69
+ setAvailableSites(jiraSites);
70
+ };
71
+ void fetchSiteDisplayNames();
72
+ }, []);
73
+ const onSearch = useCallback(newParameters => {
74
+ setJql(newParameters.jql);
75
+ reset();
76
+ }, [reset]);
77
+ const onSiteSelection = useCallback(site => {
78
+ setCloudId(site.cloudId);
79
+ reset();
80
+ }, [reset]);
81
+ const selectedJiraSite = useMemo(() => availableSites.find(jiraSite => jiraSite.cloudId === cloudId) || availableSites[0], [availableSites, cloudId]);
82
+ useEffect(() => {
83
+ if (!cloudId && selectedJiraSite) {
84
+ setCloudId(selectedJiraSite.cloudId);
85
+ }
86
+ }, [cloudId, selectedJiraSite]);
87
+ const retrieveUrlForSmartCardRender = useCallback(() => {
88
+ var _data$key, _data$key$data;
89
+ const [data] = responseItems;
90
+ // agrement with BE that we will use `key` for rendering smartlink
91
+ 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;
92
+ }, [responseItems]);
93
+ const onInsertPressed = useCallback(() => {
94
+ if (!isParametersSet || !jql || !selectedJiraSite) {
95
+ return;
96
+ }
97
+ const firstIssueUrl = retrieveUrlForSmartCardRender();
98
+ if (currentViewMode === 'count') {
99
+ onInsert({
100
+ type: 'inlineCard',
101
+ attrs: {
102
+ url: `${selectedJiraSite.url}/issues/${encodeURI(jql)}`
103
+ }
104
+ });
105
+ } else if (responseItems.length === 1 && firstIssueUrl) {
106
+ onInsert({
107
+ type: 'inlineCard',
108
+ attrs: {
109
+ url: firstIssueUrl
110
+ }
111
+ });
112
+ } else {
113
+ onInsert({
114
+ type: 'blockCard',
115
+ attrs: {
116
+ datasource: {
117
+ id: datasourceId,
118
+ parameters: {
119
+ cloudId,
120
+ jql // TODO support non JQL type
121
+ },
122
+
123
+ views: [{
124
+ type: 'table',
125
+ properties: {
126
+ columnKeys: visibleColumnKeys
127
+ }
128
+ }]
129
+ }
130
+ }
131
+ });
132
+ }
133
+ }, [isParametersSet, jql, selectedJiraSite, retrieveUrlForSmartCardRender, currentViewMode, responseItems.length, onInsert, datasourceId, cloudId, visibleColumnKeys]);
134
+ const handleViewModeChange = selectedMode => {
135
+ setCurrentViewMode(selectedMode);
136
+ };
137
+ useEffect(() => {
138
+ if (status === 'empty' && isParametersSet) {
139
+ void onNextPage();
140
+ }
141
+ }, [status, isParametersSet, onNextPage, reset]);
142
+ const issueLikeDataTableView = useMemo(() => jsx(IssueLikeDataTableView, {
143
+ testId: "jira-jql-datasource-table",
144
+ status: status,
145
+ columns: columns,
146
+ items: responseItems,
147
+ hasNextPage: hasNextPage,
148
+ visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
149
+ onNextPage: onNextPage,
150
+ onVisibleColumnKeysChange: setVisibleColumnKeys
151
+ }), [columns, defaultVisibleColumnKeys, hasNextPage, onNextPage, responseItems, status, visibleColumnKeys]);
152
+ const renderCountModeContent = useCallback(() => {
153
+ const url = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
154
+ if (status === 'empty' || !jql || !url) {
155
+ return jsx("span", {
156
+ "data-testid": `jira-jql-datasource-modal--smart-card-placeholder`,
157
+ css: placeholderSmartLinkStyles
158
+ }, jsx(FormattedMessage, modalMessages.issuesCountSmartCardPlaceholderText));
159
+ } else {
160
+ const urlWithEncodedJql = `${url}/issues/?jql=${encodeURI(jql)}`;
161
+ return jsx(LinkRenderType, {
162
+ url: urlWithEncodedJql
163
+ });
164
+ }
165
+ }, [jql, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status]);
166
+ const renderIssuesModeContent = useCallback(() => {
167
+ if (status === 'empty' || columns.length === 0) {
168
+ return jsx(EmptyState, {
169
+ testId: `jira-jql-datasource-modal--empty-state`
170
+ });
171
+ }
172
+ const firstIssueUrl = retrieveUrlForSmartCardRender();
173
+ if (responseItems.length === 1 && firstIssueUrl) {
174
+ return jsx(LinkRenderType, {
175
+ url: firstIssueUrl
176
+ });
177
+ }
178
+ return issueLikeDataTableView;
179
+ }, [columns.length, issueLikeDataTableView, responseItems.length, retrieveUrlForSmartCardRender, status]);
180
+ return jsx(IntlProvider, {
181
+ locale: "en"
182
+ }, jsx(ModalTransition, null, jsx(Modal, {
183
+ testId: 'jira-jql-datasource-modal',
184
+ onClose: onCancel,
185
+ width: "x-large",
186
+ shouldScrollInViewport: true
187
+ }, jsx(ModalHeader, null, jsx(ModalTitle, null, availableSites.length < 2 ? jsx(FormattedMessage, modalMessages.insertIssuesTitle) : jsx("div", {
188
+ css: dropdownContainerStyles
189
+ }, jsx(FormattedMessage, _extends({}, modalMessages.insertIssuesTitleManySites, {
190
+ values: {
191
+ siteName: selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.displayName
192
+ }
193
+ })), jsx(JiraSiteSelector, {
194
+ testId: `jira-jql-datasource-modal--site-selector`,
195
+ availableSites: availableSites,
196
+ onSiteSelection: onSiteSelection,
197
+ selectedJiraSite: selectedJiraSite
198
+ }))), jsx(ModeSwitcher, {
199
+ isCompact: true,
200
+ options: [{
201
+ label: formatMessage(modalMessages.issueViewModeLabel),
202
+ value: 'issue'
203
+ }, {
204
+ label: formatMessage(modalMessages.countViewModeLabel),
205
+ value: 'count'
206
+ }],
207
+ onOptionValueChange: handleViewModeChange,
208
+ selectedOptionValue: currentViewMode
209
+ })), jsx(ModalBody, null, jsx(JiraSearchContainer, {
210
+ parameters: parameters,
211
+ onSearch: onSearch
212
+ }), jsx("div", {
213
+ css: contentContainerStyles
214
+ }, currentViewMode === 'count' ? renderCountModeContent() : renderIssuesModeContent())), jsx(ModalFooter, null, jsx(Button, {
215
+ appearance: "default",
216
+ onClick: onCancel
217
+ }, jsx(FormattedMessage, modalMessages.cancelButtonText)), jsx(Button, {
218
+ appearance: "primary",
219
+ onClick: onInsertPressed,
220
+ isDisabled: !isParametersSet,
221
+ testId: 'jira-jql-datasource-modal--insert-button'
222
+ }, jsx(FormattedMessage, modalMessages.insertIssuesButtonText))))));
223
+ };
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/link-datasource",
3
- "version": "0.18.1",
3
+ "version": "0.19.1",
4
4
  "sideEffects": false
5
5
  }
package/dist/esm/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export { JiraIssuesConfigModal } from './ui/jira-issues-modal';
2
- export { DatasourceTableView } from './ui/datasourceTableView';
1
+ export { default as JiraIssuesConfigModal } from './ui/jira-issues-modal';
2
+ export { default as DatasourceTableView } from './ui/datasource-table-view';
3
3
  export { JIRA_LIST_OF_LINKS_DATASOURCE_ID } from './ui/jira-issues-modal';
@@ -2,9 +2,9 @@
2
2
  import { useEffect } from 'react';
3
3
  import { css, jsx } from '@emotion/react';
4
4
  import Spinner from '@atlaskit/spinner';
5
- import { useDatasourceTableState } from '../hooks/useDatasourceTableState';
6
- import { IssueLikeDataTableView } from './issue-like-table';
7
- import { TableFooter } from './table-footer';
5
+ import { useDatasourceTableState } from '../../hooks/useDatasourceTableState';
6
+ import { IssueLikeDataTableView } from '../issue-like-table';
7
+ import { TableFooter } from '../table-footer';
8
8
  var TableViewWrapperStyles = css({
9
9
  display: 'flex',
10
10
  flexDirection: 'column',
@@ -0,0 +1,16 @@
1
+ import React, { lazy, Suspense } from 'react';
2
+ var LazyDatasourceTableView = /*#__PURE__*/lazy(function () {
3
+ return import( /* webpackChunkName: "@atlaskit-internal_linkdatasource-tableview" */'./datasourceTableView').then(function (module) {
4
+ return {
5
+ default: module.DatasourceTableView
6
+ };
7
+ });
8
+ });
9
+ var DatasourceTableViewWithWrappers = function DatasourceTableViewWithWrappers(props) {
10
+ return /*#__PURE__*/React.createElement(Suspense, {
11
+ fallback: /*#__PURE__*/React.createElement("div", {
12
+ "data-testid": 'datasource-table-view-suspense'
13
+ })
14
+ }, /*#__PURE__*/React.createElement(LazyDatasourceTableView, props));
15
+ };
16
+ export default DatasourceTableViewWithWrappers;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,264 +1,19 @@
1
- import _extends from "@babel/runtime/helpers/extends";
2
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
- import _regeneratorRuntime from "@babel/runtime/regenerator";
5
- /** @jsx jsx */
6
- import { useCallback, useEffect, useMemo, useState } from 'react';
7
- import { css, jsx } from '@emotion/react';
8
- import { FormattedMessage, IntlProvider, useIntl } from 'react-intl-next';
9
- import Button from '@atlaskit/button/standard-button';
10
- import Modal, { ModalBody, ModalFooter, ModalHeader, ModalTitle, ModalTransition } from '@atlaskit/modal-dialog';
11
- import { B400, N0 } from '@atlaskit/theme/colors';
12
- import { useDatasourceTableState } from '../../hooks/useDatasourceTableState';
13
- import { getAvailableJiraSites } from '../../services/getAvailableJiraSites';
14
- import { EmptyState, IssueLikeDataTableView } from '../issue-like-table';
15
- import LinkRenderType from '../issue-like-table/render-type/link';
16
- import { JiraSearchContainer } from './jira-search-container';
17
- import { modalMessages } from './messages';
18
- import { ModeSwitcher } from './mode-switcher';
19
- import { JiraSiteSelector } from './site-selector';
20
- var dropdownContainerStyles = css({
21
- display: 'flex',
22
- gap: "var(--ds-space-100, 0.5rem)"
23
- });
24
- var contentContainerStyles = css({
25
- height: '420px',
26
- overflow: 'auto'
27
- });
28
- var placeholderSmartLinkStyles = css({
29
- backgroundColor: "var(--ds-surface-raised, ".concat(N0, ")"),
30
- borderRadius: '3px',
31
- boxShadow: '0px 1px 1px rgba(9, 30, 66, 0.25), 0px 0px 1px rgba(9, 30, 66, 0.31)',
32
- color: "var(--ds-text-brand, ".concat(B400, ")"),
33
- padding: '0px 2px'
34
- });
1
+ import React, { lazy, Suspense } from 'react';
35
2
  export var JIRA_LIST_OF_LINKS_DATASOURCE_ID = 'd8b75300-dfda-4519-b6cd-e49abbd50401';
36
- export var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
37
- var datasourceId = props.datasourceId,
38
- initialParameters = props.parameters,
39
- initialVisibleColumnKeys = props.visibleColumnKeys,
40
- onCancel = props.onCancel,
41
- onInsert = props.onInsert;
42
- var _useState = useState([]),
43
- _useState2 = _slicedToArray(_useState, 2),
44
- availableSites = _useState2[0],
45
- setAvailableSites = _useState2[1];
46
- var _useState3 = useState('issue'),
47
- _useState4 = _slicedToArray(_useState3, 2),
48
- currentViewMode = _useState4[0],
49
- setCurrentViewMode = _useState4[1];
50
- var _useState5 = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.cloudId),
51
- _useState6 = _slicedToArray(_useState5, 2),
52
- cloudId = _useState6[0],
53
- setCloudId = _useState6[1];
54
- var _useState7 = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.jql),
55
- _useState8 = _slicedToArray(_useState7, 2),
56
- jql = _useState8[0],
57
- setJql = _useState8[1];
58
- var isParametersSet = !!(jql && cloudId);
59
- var parameters = useMemo(function () {
60
- return !!cloudId ? {
61
- cloudId: cloudId,
62
- jql: jql || ''
63
- } : undefined;
64
- }, [cloudId, jql]);
65
- var _useDatasourceTableSt = useDatasourceTableState(datasourceId, parameters),
66
- reset = _useDatasourceTableSt.reset,
67
- status = _useDatasourceTableSt.status,
68
- onNextPage = _useDatasourceTableSt.onNextPage,
69
- responseItems = _useDatasourceTableSt.responseItems,
70
- hasNextPage = _useDatasourceTableSt.hasNextPage,
71
- columns = _useDatasourceTableSt.columns,
72
- defaultVisibleColumnKeys = _useDatasourceTableSt.defaultVisibleColumnKeys;
73
- var _useState9 = useState(initialVisibleColumnKeys || defaultVisibleColumnKeys),
74
- _useState10 = _slicedToArray(_useState9, 2),
75
- visibleColumnKeys = _useState10[0],
76
- setVisibleColumnKeys = _useState10[1];
77
- useEffect(function () {
78
- var newVisibleColumnKeys = !initialVisibleColumnKeys || (initialVisibleColumnKeys || []).length === 0 ? defaultVisibleColumnKeys : initialVisibleColumnKeys;
79
- setVisibleColumnKeys(newVisibleColumnKeys);
80
- }, [initialVisibleColumnKeys, defaultVisibleColumnKeys]);
81
- var _useIntl = useIntl(),
82
- formatMessage = _useIntl.formatMessage;
83
- useEffect(function () {
84
- var fetchSiteDisplayNames = /*#__PURE__*/function () {
85
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
86
- var jiraSites;
87
- return _regeneratorRuntime.wrap(function _callee$(_context) {
88
- while (1) switch (_context.prev = _context.next) {
89
- case 0:
90
- _context.next = 2;
91
- return getAvailableJiraSites();
92
- case 2:
93
- jiraSites = _context.sent;
94
- setAvailableSites(jiraSites);
95
- case 4:
96
- case "end":
97
- return _context.stop();
98
- }
99
- }, _callee);
100
- }));
101
- return function fetchSiteDisplayNames() {
102
- return _ref.apply(this, arguments);
103
- };
104
- }();
105
- void fetchSiteDisplayNames();
106
- }, []);
107
- var onSearch = useCallback(function (newParameters) {
108
- setJql(newParameters.jql);
109
- reset();
110
- }, [reset]);
111
- var onSiteSelection = useCallback(function (site) {
112
- setCloudId(site.cloudId);
113
- reset();
114
- }, [reset]);
115
- var selectedJiraSite = useMemo(function () {
116
- return availableSites.find(function (jiraSite) {
117
- return jiraSite.cloudId === cloudId;
118
- }) || availableSites[0];
119
- }, [availableSites, cloudId]);
120
- useEffect(function () {
121
- if (!cloudId && selectedJiraSite) {
122
- setCloudId(selectedJiraSite.cloudId);
123
- }
124
- }, [cloudId, selectedJiraSite]);
125
- var retrieveUrlForSmartCardRender = useCallback(function () {
126
- var _data$key, _data$key$data;
127
- var _responseItems = _slicedToArray(responseItems, 1),
128
- data = _responseItems[0];
129
- // agrement with BE that we will use `key` for rendering smartlink
130
- 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;
131
- }, [responseItems]);
132
- var onInsertPressed = useCallback(function () {
133
- if (!isParametersSet || !jql || !selectedJiraSite) {
134
- return;
135
- }
136
- var firstIssueUrl = retrieveUrlForSmartCardRender();
137
- if (currentViewMode === 'count') {
138
- onInsert({
139
- type: 'inlineCard',
140
- attrs: {
141
- url: "".concat(selectedJiraSite.url, "/issues/").concat(encodeURI(jql))
142
- }
143
- });
144
- } else if (responseItems.length === 1 && firstIssueUrl) {
145
- onInsert({
146
- type: 'inlineCard',
147
- attrs: {
148
- url: firstIssueUrl
149
- }
150
- });
151
- } else {
152
- onInsert({
153
- type: 'blockCard',
154
- attrs: {
155
- datasource: {
156
- id: datasourceId,
157
- parameters: {
158
- cloudId: cloudId,
159
- jql: jql // TODO support non JQL type
160
- },
3
+ var LazyJiraIssuesConfigModal = /*#__PURE__*/lazy(function () {
4
+ return import( /* webpackChunkName: "@atlaskit-internal_linkdatasource-jiraissuesmodal" */'./modal').then(function (module) {
5
+ return {
6
+ default: module.JiraIssuesConfigModal
7
+ };
8
+ });
9
+ });
161
10
 
162
- views: [{
163
- type: 'table',
164
- properties: {
165
- columnKeys: visibleColumnKeys
166
- }
167
- }]
168
- }
169
- }
170
- });
171
- }
172
- }, [isParametersSet, jql, selectedJiraSite, retrieveUrlForSmartCardRender, currentViewMode, responseItems.length, onInsert, datasourceId, cloudId, visibleColumnKeys]);
173
- var handleViewModeChange = function handleViewModeChange(selectedMode) {
174
- setCurrentViewMode(selectedMode);
175
- };
176
- useEffect(function () {
177
- if (status === 'empty' && isParametersSet) {
178
- void onNextPage();
179
- }
180
- }, [status, isParametersSet, onNextPage, reset]);
181
- var issueLikeDataTableView = useMemo(function () {
182
- return jsx(IssueLikeDataTableView, {
183
- testId: "jira-jql-datasource-table",
184
- status: status,
185
- columns: columns,
186
- items: responseItems,
187
- hasNextPage: hasNextPage,
188
- visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
189
- onNextPage: onNextPage,
190
- onVisibleColumnKeysChange: setVisibleColumnKeys
191
- });
192
- }, [columns, defaultVisibleColumnKeys, hasNextPage, onNextPage, responseItems, status, visibleColumnKeys]);
193
- var renderCountModeContent = useCallback(function () {
194
- var url = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
195
- if (status === 'empty' || !jql || !url) {
196
- return jsx("span", {
197
- "data-testid": "jira-jql-datasource-modal--smart-card-placeholder",
198
- css: placeholderSmartLinkStyles
199
- }, jsx(FormattedMessage, modalMessages.issuesCountSmartCardPlaceholderText));
200
- } else {
201
- var urlWithEncodedJql = "".concat(url, "/issues/?jql=").concat(encodeURI(jql));
202
- return jsx(LinkRenderType, {
203
- url: urlWithEncodedJql
204
- });
205
- }
206
- }, [jql, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status]);
207
- var renderIssuesModeContent = useCallback(function () {
208
- if (status === 'empty' || columns.length === 0) {
209
- return jsx(EmptyState, {
210
- testId: "jira-jql-datasource-modal--empty-state"
211
- });
212
- }
213
- var firstIssueUrl = retrieveUrlForSmartCardRender();
214
- if (responseItems.length === 1 && firstIssueUrl) {
215
- return jsx(LinkRenderType, {
216
- url: firstIssueUrl
217
- });
218
- }
219
- return issueLikeDataTableView;
220
- }, [columns.length, issueLikeDataTableView, responseItems.length, retrieveUrlForSmartCardRender, status]);
221
- return jsx(IntlProvider, {
222
- locale: "en"
223
- }, jsx(ModalTransition, null, jsx(Modal, {
224
- testId: 'jira-jql-datasource-modal',
225
- onClose: onCancel,
226
- width: "x-large",
227
- shouldScrollInViewport: true
228
- }, jsx(ModalHeader, null, jsx(ModalTitle, null, availableSites.length < 2 ? jsx(FormattedMessage, modalMessages.insertIssuesTitle) : jsx("div", {
229
- css: dropdownContainerStyles
230
- }, jsx(FormattedMessage, _extends({}, modalMessages.insertIssuesTitleManySites, {
231
- values: {
232
- siteName: selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.displayName
233
- }
234
- })), jsx(JiraSiteSelector, {
235
- testId: "jira-jql-datasource-modal--site-selector",
236
- availableSites: availableSites,
237
- onSiteSelection: onSiteSelection,
238
- selectedJiraSite: selectedJiraSite
239
- }))), jsx(ModeSwitcher, {
240
- isCompact: true,
241
- options: [{
242
- label: formatMessage(modalMessages.issueViewModeLabel),
243
- value: 'issue'
244
- }, {
245
- label: formatMessage(modalMessages.countViewModeLabel),
246
- value: 'count'
247
- }],
248
- onOptionValueChange: handleViewModeChange,
249
- selectedOptionValue: currentViewMode
250
- })), jsx(ModalBody, null, jsx(JiraSearchContainer, {
251
- parameters: parameters,
252
- onSearch: onSearch
253
- }), jsx("div", {
254
- css: contentContainerStyles
255
- }, currentViewMode === 'count' ? renderCountModeContent() : renderIssuesModeContent())), jsx(ModalFooter, null, jsx(Button, {
256
- appearance: "default",
257
- onClick: onCancel
258
- }, jsx(FormattedMessage, modalMessages.cancelButtonText)), jsx(Button, {
259
- appearance: "primary",
260
- onClick: onInsertPressed,
261
- isDisabled: !isParametersSet,
262
- testId: 'jira-jql-datasource-modal--insert-button'
263
- }, jsx(FormattedMessage, modalMessages.insertIssuesButtonText))))));
264
- };
11
+ //
12
+ var JiraIssuesConfigModalWithWrappers = function JiraIssuesConfigModalWithWrappers(props) {
13
+ return /*#__PURE__*/React.createElement(Suspense, {
14
+ fallback: /*#__PURE__*/React.createElement("div", {
15
+ "data-testid": 'jira-jql-datasource-table-suspense'
16
+ })
17
+ }, /*#__PURE__*/React.createElement(LazyJiraIssuesConfigModal, props));
18
+ };
19
+ export default JiraIssuesConfigModalWithWrappers;