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