@atlaskit/link-datasource 3.13.16 → 3.13.18

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 (69) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/cjs/hooks/useLoadOptions.js +20 -9
  3. package/dist/cjs/ui/confluence-search-modal/modal/index.js +8 -27
  4. package/dist/cjs/ui/issue-like-table/edit-type/icon/index.js +4 -1
  5. package/dist/cjs/ui/issue-like-table/edit-type/index.js +9 -4
  6. package/dist/cjs/ui/issue-like-table/edit-type/status/index.js +7 -1
  7. package/dist/cjs/ui/issue-like-table/edit-type/text/index.js +3 -1
  8. package/dist/cjs/ui/issue-like-table/edit-type/user/index.js +7 -1
  9. package/dist/cjs/ui/issue-like-table/index.js +6 -2
  10. package/dist/cjs/ui/issue-like-table/table-cell-content/index.js +5 -0
  11. package/dist/cjs/ui/issue-like-table/table-cell-content/inline-edit.js +31 -2
  12. package/dist/cjs/ui/issue-like-table/table-cell-content/messages.js +14 -0
  13. package/dist/cjs/ui/issue-like-table/utils.js +21 -1
  14. package/dist/cjs/ui/jira-issues-modal/modal/index.js +1 -18
  15. package/dist/es2019/hooks/useLoadOptions.js +15 -4
  16. package/dist/es2019/ui/confluence-search-modal/modal/index.js +12 -35
  17. package/dist/es2019/ui/issue-like-table/edit-type/icon/index.js +4 -1
  18. package/dist/es2019/ui/issue-like-table/edit-type/index.js +9 -4
  19. package/dist/es2019/ui/issue-like-table/edit-type/status/index.js +5 -1
  20. package/dist/es2019/ui/issue-like-table/edit-type/text/index.js +3 -1
  21. package/dist/es2019/ui/issue-like-table/edit-type/user/index.js +5 -1
  22. package/dist/es2019/ui/issue-like-table/index.js +7 -3
  23. package/dist/es2019/ui/issue-like-table/table-cell-content/index.js +5 -0
  24. package/dist/es2019/ui/issue-like-table/table-cell-content/inline-edit.js +33 -3
  25. package/dist/es2019/ui/issue-like-table/table-cell-content/messages.js +8 -0
  26. package/dist/es2019/ui/issue-like-table/utils.js +18 -1
  27. package/dist/es2019/ui/jira-issues-modal/modal/index.js +4 -25
  28. package/dist/esm/hooks/useLoadOptions.js +21 -10
  29. package/dist/esm/ui/confluence-search-modal/modal/index.js +9 -28
  30. package/dist/esm/ui/issue-like-table/edit-type/icon/index.js +4 -1
  31. package/dist/esm/ui/issue-like-table/edit-type/index.js +9 -4
  32. package/dist/esm/ui/issue-like-table/edit-type/status/index.js +7 -1
  33. package/dist/esm/ui/issue-like-table/edit-type/text/index.js +3 -1
  34. package/dist/esm/ui/issue-like-table/edit-type/user/index.js +7 -1
  35. package/dist/esm/ui/issue-like-table/index.js +7 -3
  36. package/dist/esm/ui/issue-like-table/table-cell-content/index.js +5 -0
  37. package/dist/esm/ui/issue-like-table/table-cell-content/inline-edit.js +32 -3
  38. package/dist/esm/ui/issue-like-table/table-cell-content/messages.js +8 -0
  39. package/dist/esm/ui/issue-like-table/utils.js +19 -0
  40. package/dist/esm/ui/jira-issues-modal/modal/index.js +4 -21
  41. package/dist/types/ui/issue-like-table/edit-type/icon/index.d.ts +1 -0
  42. package/dist/types/ui/issue-like-table/edit-type/index.d.ts +2 -1
  43. package/dist/types/ui/issue-like-table/edit-type/status/index.d.ts +1 -0
  44. package/dist/types/ui/issue-like-table/edit-type/text/index.d.ts +1 -0
  45. package/dist/types/ui/issue-like-table/edit-type/user/index.d.ts +1 -0
  46. package/dist/types/ui/issue-like-table/table-cell-content/index.d.ts +2 -1
  47. package/dist/types/ui/issue-like-table/table-cell-content/inline-edit.d.ts +2 -1
  48. package/dist/types/ui/issue-like-table/table-cell-content/messages.d.ts +7 -0
  49. package/dist/types/ui/issue-like-table/utils.d.ts +20 -0
  50. package/dist/types-ts4.5/ui/issue-like-table/edit-type/icon/index.d.ts +1 -0
  51. package/dist/types-ts4.5/ui/issue-like-table/edit-type/index.d.ts +2 -1
  52. package/dist/types-ts4.5/ui/issue-like-table/edit-type/status/index.d.ts +1 -0
  53. package/dist/types-ts4.5/ui/issue-like-table/edit-type/text/index.d.ts +1 -0
  54. package/dist/types-ts4.5/ui/issue-like-table/edit-type/user/index.d.ts +1 -0
  55. package/dist/types-ts4.5/ui/issue-like-table/table-cell-content/index.d.ts +2 -1
  56. package/dist/types-ts4.5/ui/issue-like-table/table-cell-content/inline-edit.d.ts +2 -1
  57. package/dist/types-ts4.5/ui/issue-like-table/table-cell-content/messages.d.ts +7 -0
  58. package/dist/types-ts4.5/ui/issue-like-table/utils.d.ts +20 -0
  59. package/package.json +3 -6
  60. package/dist/cjs/ui/confluence-search-modal/modal/ModalOld.js +0 -455
  61. package/dist/cjs/ui/jira-issues-modal/modal/ModalOld.js +0 -493
  62. package/dist/es2019/ui/confluence-search-modal/modal/ModalOld.js +0 -430
  63. package/dist/es2019/ui/jira-issues-modal/modal/ModalOld.js +0 -476
  64. package/dist/esm/ui/confluence-search-modal/modal/ModalOld.js +0 -451
  65. package/dist/esm/ui/jira-issues-modal/modal/ModalOld.js +0 -490
  66. package/dist/types/ui/confluence-search-modal/modal/ModalOld.d.ts +0 -3
  67. package/dist/types/ui/jira-issues-modal/modal/ModalOld.d.ts +0 -3
  68. package/dist/types-ts4.5/ui/confluence-search-modal/modal/ModalOld.d.ts +0 -3
  69. package/dist/types-ts4.5/ui/jira-issues-modal/modal/ModalOld.d.ts +0 -3
@@ -1,430 +0,0 @@
1
- /**
2
- * @jsxRuntime classic
3
- * @jsx jsx
4
- */
5
- import { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react';
6
-
7
- // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
8
- import { jsx } from '@emotion/react';
9
- import { FormattedMessage } from 'react-intl-next';
10
- import Button from '@atlaskit/button/standard-button';
11
- import { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
12
- import { ModalBody, ModalFooter, ModalHeader, ModalTitle } from '@atlaskit/modal-dialog';
13
- import { Box, xcss } from '@atlaskit/primitives';
14
- import { EVENT_CHANNEL, useDatasourceAnalyticsEvents } from '../../../analytics';
15
- import { DatasourceAction, DatasourceDisplay, DatasourceSearchMethod } from '../../../analytics/types';
16
- import { buildDatasourceAdf } from '../../../common/utils/adf';
17
- import { fetchMessagesForLocale } from '../../../common/utils/locale/fetch-messages-for-locale';
18
- import { useUserInteractions } from '../../../contexts/user-interactions';
19
- import { useDatasourceTableState } from '../../../hooks/useDatasourceTableState';
20
- import i18nEN from '../../../i18n/en';
21
- import { useAvailableSites } from '../../../services/useAvailableSites';
22
- import { AccessRequired } from '../../common/error-state/access-required';
23
- import { ModalLoadingError } from '../../common/error-state/modal-loading-error';
24
- import { NoInstancesView } from '../../common/error-state/no-instances';
25
- import { NoResults } from '../../common/error-state/no-results';
26
- import { InitialStateView } from '../../common/initial-state-view';
27
- import { CancelButton } from '../../common/modal/cancel-button';
28
- import { ContentContainer } from '../../common/modal/content-container';
29
- import { SmartCardPlaceholder, SmartLink } from '../../common/modal/count-view-smart-link';
30
- import { DatasourceModal } from '../../common/modal/datasource-modal';
31
- import { useColumnResize } from '../../common/modal/datasources-table-in-modal-preview/use-column-resize';
32
- import { useColumnWrapping } from '../../common/modal/datasources-table-in-modal-preview/use-column-wrapping';
33
- import { DisplayViewDropDown } from '../../common/modal/display-view-dropdown/display-view-drop-down';
34
- import TableSearchCount from '../../common/modal/search-count';
35
- import { SiteSelector } from '../../common/modal/site-selector';
36
- import { EmptyState, IssueLikeDataTableView } from '../../issue-like-table';
37
- import { getColumnAction } from '../../issue-like-table/utils';
38
- import ConfluenceSearchContainer from '../confluence-search-container';
39
- import { ConfluenceSearchInitialStateSVG } from './confluence-search-initial-state-svg';
40
- import { confluenceSearchModalMessages } from './messages';
41
- const inputContainerStyles = xcss({
42
- alignItems: 'baseline',
43
- display: 'flex',
44
- minHeight: '72px'
45
- });
46
- export const PlainConfluenceSearchConfigModal = props => {
47
- const {
48
- datasourceId,
49
- columnCustomSizes: initialColumnCustomSizes,
50
- wrappedColumnKeys: initialWrappedColumnKeys,
51
- onCancel,
52
- onInsert,
53
- viewMode = 'table',
54
- parameters: initialParameters,
55
- url: urlBeingEdited,
56
- visibleColumnKeys: initialVisibleColumnKeys,
57
- disableDisplayDropdown = false,
58
- overrideParameters
59
- } = props;
60
- const [currentViewMode, setCurrentViewMode] = useState(viewMode);
61
- const [cloudId, setCloudId] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.cloudId);
62
- const {
63
- availableSites,
64
- selectedSite: selectedConfluenceSite
65
- } = useAvailableSites('confluence', cloudId);
66
- const [searchString, setSearchString] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.searchString);
67
- const [visibleColumnKeys, setVisibleColumnKeys] = useState(initialVisibleColumnKeys);
68
- const [contributorAccountIds, setContributorAccountIds] = useState((initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.contributorAccountIds) || []);
69
- const [lastModified, setLastModified] = useState(initialParameters !== null && initialParameters !== void 0 && initialParameters.lastModified ? {
70
- value: initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.lastModified,
71
- from: initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.lastModifiedFrom,
72
- to: initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.lastModifiedTo
73
- } : undefined);
74
-
75
- // analytics related parameters
76
- const searchCount = useRef(0);
77
- const userInteractions = useUserInteractions();
78
- const visibleColumnCount = useRef((visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.length) || 0);
79
- const parameters = useMemo(() => ({
80
- ...initialParameters,
81
- cloudId: cloudId || '',
82
- searchString,
83
- lastModified: lastModified === null || lastModified === void 0 ? void 0 : lastModified.value,
84
- lastModifiedFrom: lastModified === null || lastModified === void 0 ? void 0 : lastModified.from,
85
- lastModifiedTo: lastModified === null || lastModified === void 0 ? void 0 : lastModified.to,
86
- contributorAccountIds: (contributorAccountIds === null || contributorAccountIds === void 0 ? void 0 : contributorAccountIds.length) > 0 ? contributorAccountIds : undefined
87
- }), [initialParameters, cloudId, searchString, lastModified, contributorAccountIds]);
88
- const isParametersSet = useMemo(() => !!cloudId && Object.values(parameters !== null && parameters !== void 0 ? parameters : {}).filter(v => v !== undefined).length > 1, [cloudId, parameters]);
89
- const parametersToSend = useMemo(() => {
90
- if (!isParametersSet) {
91
- return undefined;
92
- }
93
- return {
94
- ...parameters,
95
- ...(overrideParameters !== null && overrideParameters !== void 0 ? overrideParameters : {})
96
- };
97
- }, [parameters, overrideParameters, isParametersSet]);
98
- const {
99
- reset,
100
- status,
101
- onNextPage,
102
- responseItems,
103
- responseItemIds,
104
- hasNextPage,
105
- columns,
106
- defaultVisibleColumnKeys,
107
- loadDatasourceDetails,
108
- totalCount,
109
- extensionKey = null,
110
- destinationObjectTypes
111
- } = useDatasourceTableState({
112
- datasourceId,
113
- parameters: parametersToSend,
114
- fieldKeys: visibleColumnKeys
115
- });
116
- const {
117
- fireEvent
118
- } = useDatasourceAnalyticsEvents();
119
- const hasNoConfluenceSites = availableSites && availableSites.length === 0;
120
- useEffect(() => {
121
- if (availableSites) {
122
- fireEvent('ui.modal.ready.datasource', {
123
- instancesCount: availableSites.length,
124
- schemasCount: null
125
- });
126
- }
127
- }, [fireEvent, availableSites]);
128
-
129
- // TODO: further refactoring in EDM-9573
130
- // https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/pull-requests/82725/overview?commentId=6828283
131
- useEffect(() => {
132
- if (selectedConfluenceSite && (!cloudId || cloudId !== selectedConfluenceSite.cloudId)) {
133
- setCloudId(selectedConfluenceSite.cloudId);
134
- }
135
- }, [cloudId, selectedConfluenceSite]);
136
-
137
- // TODO: further refactoring in EDM-9573
138
- // https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/pull-requests/82725/overview?commentId=6829171
139
- const onSiteSelection = useCallback(site => {
140
- userInteractions.add(DatasourceAction.INSTANCE_UPDATED);
141
- setSearchString(undefined);
142
- setLastModified(undefined);
143
- setContributorAccountIds([]);
144
- setCloudId(site.cloudId);
145
- reset({
146
- shouldForceRequest: true
147
- });
148
- }, [reset, userInteractions]);
149
- useEffect(() => {
150
- const newVisibleColumnKeys = !initialVisibleColumnKeys || (initialVisibleColumnKeys || []).length === 0 ? defaultVisibleColumnKeys : initialVisibleColumnKeys;
151
- visibleColumnCount.current = newVisibleColumnKeys.length;
152
- setVisibleColumnKeys(newVisibleColumnKeys);
153
- }, [initialVisibleColumnKeys, defaultVisibleColumnKeys]);
154
- const siteSelectorLabel = availableSites && availableSites.length > 1 ? confluenceSearchModalMessages.insertIssuesTitleManySites : confluenceSearchModalMessages.insertIssuesTitle;
155
- const {
156
- columnCustomSizes,
157
- onColumnResize
158
- } = useColumnResize(initialColumnCustomSizes);
159
- const {
160
- wrappedColumnKeys,
161
- onWrappedColumnChange
162
- } = useColumnWrapping(initialWrappedColumnKeys);
163
-
164
- // TODO: common functionality of all modals refactor in EDM-9573
165
- const handleVisibleColumnKeysChange = useCallback((newVisibleColumnKeys = []) => {
166
- const columnAction = getColumnAction(visibleColumnKeys || [], newVisibleColumnKeys);
167
- userInteractions.add(columnAction);
168
- visibleColumnCount.current = newVisibleColumnKeys.length;
169
- setVisibleColumnKeys(newVisibleColumnKeys);
170
- }, [visibleColumnKeys, userInteractions]);
171
-
172
- // TODO: further refactoring in EDM-9573
173
- // https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/pull-requests/82725/overview?commentId=6798258
174
- const confluenceSearchTable = useMemo(() => jsx(ContentContainer, {
175
- withTableBorder: true
176
- }, jsx(IssueLikeDataTableView, {
177
- testId: "confluence-search-datasource-table",
178
- status: status,
179
- columns: columns,
180
- items: responseItems,
181
- itemIds: responseItemIds,
182
- hasNextPage: hasNextPage,
183
- visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
184
- onNextPage: onNextPage,
185
- onLoadDatasourceDetails: loadDatasourceDetails,
186
- onVisibleColumnKeysChange: handleVisibleColumnKeysChange,
187
- extensionKey: extensionKey,
188
- columnCustomSizes: columnCustomSizes,
189
- onColumnResize: onColumnResize,
190
- wrappedColumnKeys: wrappedColumnKeys,
191
- onWrappedColumnChange: onWrappedColumnChange
192
- })), [status, columns, responseItems, responseItemIds, hasNextPage, visibleColumnKeys, defaultVisibleColumnKeys, onNextPage, loadDatasourceDetails, handleVisibleColumnKeysChange, extensionKey, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange]);
193
- const resolvedWithNoResults = status === 'resolved' && !responseItems.length;
194
- const hasConfluenceSearchParams = selectedConfluenceSite && searchString;
195
- const selectedConfluenceSiteUrl = selectedConfluenceSite === null || selectedConfluenceSite === void 0 ? void 0 : selectedConfluenceSite.url;
196
- const confluenceSearchUrl = useMemo(() => {
197
- if (!selectedConfluenceSiteUrl || searchString === undefined) {
198
- return undefined;
199
- }
200
- const params = new URLSearchParams();
201
- // we are appending "text" without checking searchString as we need the url to have "text" when a user does an empty search
202
- params.append('text', searchString);
203
- if (contributorAccountIds.length > 0) {
204
- params.append('contributors', contributorAccountIds.join(','));
205
- }
206
- if (lastModified !== null && lastModified !== void 0 && lastModified.value) {
207
- params.append('lastModified', lastModified.value);
208
- }
209
- if (lastModified !== null && lastModified !== void 0 && lastModified.from) {
210
- params.append('from', lastModified === null || lastModified === void 0 ? void 0 : lastModified.from);
211
- }
212
- if (lastModified !== null && lastModified !== void 0 && lastModified.to) {
213
- params.append('to', lastModified === null || lastModified === void 0 ? void 0 : lastModified.to);
214
- }
215
- return `${selectedConfluenceSiteUrl}/wiki/search?${params.toString()}`;
216
- }, [contributorAccountIds, lastModified, searchString, selectedConfluenceSiteUrl]);
217
- const analyticsPayload = useMemo(() => ({
218
- extensionKey,
219
- destinationObjectTypes,
220
- searchCount: searchCount.current,
221
- actions: userInteractions.get()
222
- }), [destinationObjectTypes, extensionKey, userInteractions]);
223
- const isDataReady = (visibleColumnKeys || []).length > 0;
224
- const fireInlineViewedEvent = useCallback(() => {
225
- fireEvent('ui.link.viewed.count', {
226
- ...analyticsPayload,
227
- searchMethod: DatasourceSearchMethod.DATASOURCE_SEARCH_QUERY,
228
- totalItemCount: totalCount || 0
229
- });
230
- }, [analyticsPayload, fireEvent, totalCount]);
231
- const fireTableViewedEvent = useCallback(() => {
232
- if (isDataReady) {
233
- fireEvent('ui.table.viewed.datasourceConfigModal', {
234
- ...analyticsPayload,
235
- totalItemCount: totalCount || 0,
236
- searchMethod: DatasourceSearchMethod.DATASOURCE_SEARCH_QUERY,
237
- displayedColumnCount: visibleColumnCount.current
238
- });
239
- }
240
- }, [analyticsPayload, fireEvent, totalCount, isDataReady]);
241
- useEffect(() => {
242
- const isResolved = status === 'resolved';
243
- const isTableViewMode = currentViewMode === 'table';
244
- const isInlineViewMode = currentViewMode === 'inline';
245
- if (!isResolved) {
246
- return;
247
- }
248
- if (isTableViewMode) {
249
- fireTableViewedEvent();
250
- } else if (isInlineViewMode) {
251
- fireInlineViewedEvent();
252
- }
253
- }, [currentViewMode, fireInlineViewedEvent, fireTableViewedEvent, status]);
254
- const renderTableModalContent = useCallback(() => {
255
- if (status === 'rejected') {
256
- return jsx(ModalLoadingError, null);
257
- } else if (status === 'unauthorized') {
258
- return jsx(AccessRequired, {
259
- url: selectedConfluenceSiteUrl || urlBeingEdited
260
- });
261
- } else if (resolvedWithNoResults || status === 'forbidden') {
262
- return jsx(NoResults, null);
263
- } else if (status === 'empty' || !columns.length) {
264
- // persist the empty state when making the initial /data request which contains the columns
265
- if (hasConfluenceSearchParams !== undefined) {
266
- return jsx(EmptyState, {
267
- testId: `confluence-search-datasource-modal--empty-state`
268
- });
269
- }
270
- return jsx(ContentContainer, null, jsx(InitialStateView, {
271
- icon: jsx(ConfluenceSearchInitialStateSVG, null),
272
- title: confluenceSearchModalMessages.initialViewSearchTitle,
273
- description: confluenceSearchModalMessages.initialViewSearchDescription
274
- }));
275
- }
276
- return confluenceSearchTable;
277
- }, [columns.length, selectedConfluenceSiteUrl, confluenceSearchTable, resolvedWithNoResults, status, urlBeingEdited, hasConfluenceSearchParams]);
278
- const renderInlineLinkModalContent = useCallback(() => {
279
- if (status === 'unauthorized') {
280
- return jsx(AccessRequired, {
281
- url: selectedConfluenceSiteUrl || urlBeingEdited
282
- });
283
- } else if (status === 'empty' || !selectedConfluenceSiteUrl) {
284
- return jsx(SmartCardPlaceholder, {
285
- placeholderText: confluenceSearchModalMessages.resultsCountSmartCardPlaceholderText
286
- });
287
- } else {
288
- return confluenceSearchUrl && jsx(SmartLink, {
289
- url: confluenceSearchUrl
290
- });
291
- }
292
- }, [confluenceSearchUrl, selectedConfluenceSiteUrl, status, urlBeingEdited]);
293
- const shouldShowResultsCount = !!totalCount && currentViewMode === 'table';
294
- const onInsertPressed = useCallback((e, analyticsEvent) => {
295
- var _insertButtonClickedE;
296
- if (!isParametersSet || !cloudId || !confluenceSearchUrl) {
297
- return;
298
- }
299
- const insertButtonClickedEvent = analyticsEvent.update({
300
- actionSubjectId: 'insert',
301
- attributes: {
302
- ...analyticsPayload,
303
- totalItemCount: totalCount || 0,
304
- displayedColumnCount: visibleColumnCount.current,
305
- display: currentViewMode === 'inline' ? DatasourceDisplay.DATASOURCE_INLINE : DatasourceDisplay.DATASOURCE_TABLE,
306
- searchCount: searchCount.current,
307
- searchMethod: DatasourceSearchMethod.DATASOURCE_SEARCH_QUERY,
308
- actions: userInteractions.get()
309
- },
310
- eventType: 'ui'
311
- });
312
- const consumerEvent = (_insertButtonClickedE = insertButtonClickedEvent.clone()) !== null && _insertButtonClickedE !== void 0 ? _insertButtonClickedE : undefined;
313
- insertButtonClickedEvent.fire(EVENT_CHANNEL);
314
- if (currentViewMode === 'inline') {
315
- onInsert({
316
- type: 'inlineCard',
317
- attrs: {
318
- url: confluenceSearchUrl
319
- }
320
- }, consumerEvent);
321
- } else {
322
- onInsert(buildDatasourceAdf({
323
- id: datasourceId,
324
- parameters: {
325
- ...parametersToSend,
326
- cloudId
327
- },
328
- views: [{
329
- type: 'table',
330
- properties: {
331
- columns: (visibleColumnKeys || []).map(key => {
332
- const width = columnCustomSizes === null || columnCustomSizes === void 0 ? void 0 : columnCustomSizes[key];
333
- const isWrapped = wrappedColumnKeys === null || wrappedColumnKeys === void 0 ? void 0 : wrappedColumnKeys.includes(key);
334
- return {
335
- key,
336
- ...(width ? {
337
- width
338
- } : {}),
339
- ...(isWrapped ? {
340
- isWrapped
341
- } : {})
342
- };
343
- })
344
- }
345
- }]
346
- }, confluenceSearchUrl), consumerEvent);
347
- }
348
- }, [isParametersSet, cloudId, analyticsPayload, totalCount, currentViewMode, onInsert, confluenceSearchUrl, datasourceId, parametersToSend, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys, userInteractions]);
349
- const handleViewModeChange = selectedMode => {
350
- userInteractions.add(DatasourceAction.DISPLAY_VIEW_CHANGED);
351
- setCurrentViewMode(selectedMode);
352
- };
353
- const onSearch = useCallback((newSearchString, filters) => {
354
- searchCount.current++;
355
- userInteractions.add(DatasourceAction.QUERY_UPDATED);
356
- if (filters) {
357
- const {
358
- editedOrCreatedBy,
359
- lastModified: lastModifiedList
360
- } = filters;
361
- if (lastModifiedList) {
362
- const updatedDateRangeOption = lastModifiedList.find(range => range.value);
363
- if ((updatedDateRangeOption === null || updatedDateRangeOption === void 0 ? void 0 : updatedDateRangeOption.optionType) === 'dateRange') {
364
- setLastModified({
365
- value: updatedDateRangeOption.value,
366
- from: updatedDateRangeOption.from,
367
- to: updatedDateRangeOption.to
368
- });
369
- }
370
- }
371
- if (editedOrCreatedBy) {
372
- const accountIds = editedOrCreatedBy.map(user => user.value);
373
- setContributorAccountIds(accountIds);
374
- }
375
- }
376
- setSearchString(newSearchString);
377
- reset({
378
- shouldForceRequest: true
379
- });
380
- }, [reset, userInteractions]);
381
- const isInsertDisabled = !isParametersSet || status === 'rejected' || status === 'unauthorized' || status === 'loading';
382
- const getCancelButtonAnalyticsPayload = useCallback(() => {
383
- return {
384
- extensionKey,
385
- destinationObjectTypes,
386
- searchCount: searchCount.current,
387
- actions: userInteractions.get()
388
- };
389
- }, [destinationObjectTypes, extensionKey, userInteractions]);
390
- return jsx(IntlMessagesProvider, {
391
- defaultMessages: i18nEN,
392
- loaderFn: fetchMessagesForLocale
393
- }, jsx(DatasourceModal, {
394
- testId: "confluence-search-datasource-modal",
395
- onClose: onCancel
396
- }, jsx(ModalHeader, null, jsx(ModalTitle, null, jsx(SiteSelector, {
397
- availableSites: availableSites,
398
- onSiteSelection: onSiteSelection,
399
- selectedSite: selectedConfluenceSite,
400
- testId: "confluence-search-datasource-modal--site-selector",
401
- label: siteSelectorLabel
402
- })), !hasNoConfluenceSites && !disableDisplayDropdown && jsx(DisplayViewDropDown, {
403
- onViewModeChange: handleViewModeChange,
404
- viewMode: currentViewMode
405
- })), jsx(ModalBody, null, !hasNoConfluenceSites ? jsx(Fragment, null, jsx(Box, {
406
- xcss: inputContainerStyles
407
- }, jsx(ConfluenceSearchContainer, {
408
- isSearching: status === 'loading',
409
- onSearch: onSearch,
410
- parameters: parameters
411
- })), currentViewMode === 'inline' ? renderInlineLinkModalContent() : renderTableModalContent()) : jsx(NoInstancesView, {
412
- title: confluenceSearchModalMessages.noAccessToConfluenceSitesTitle,
413
- description: confluenceSearchModalMessages.noAccessToConfluenceSitesDescription,
414
- testId: 'no-confluence-instances-content'
415
- })), jsx(ModalFooter, null, shouldShowResultsCount && confluenceSearchUrl && jsx(TableSearchCount, {
416
- searchCount: totalCount,
417
- url: confluenceSearchUrl,
418
- prefixTextType: "result",
419
- testId: "confluence-search-datasource-modal-total-results-count"
420
- }), jsx(CancelButton, {
421
- onCancel: onCancel,
422
- getAnalyticsPayload: getCancelButtonAnalyticsPayload,
423
- testId: "confluence-search-modal--cancel-button"
424
- }), !hasNoConfluenceSites && jsx(Button, {
425
- appearance: "primary",
426
- onClick: onInsertPressed,
427
- isDisabled: isInsertDisabled,
428
- testId: "confluence-search-datasource-modal--insert-button"
429
- }, jsx(FormattedMessage, confluenceSearchModalMessages.insertResultsButtonText)))));
430
- };