@atlaskit/link-datasource 2.9.0 → 2.9.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 (34) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/cjs/ui/common/modal/datasource-modal/createDatasourceModal.js +55 -0
  3. package/dist/cjs/ui/common/modal/datasources-table-in-modal-preview/index.js +13 -2
  4. package/dist/cjs/ui/common/modal/insert-button/index.js +5 -4
  5. package/dist/cjs/ui/confluence-search-modal/modal/index.js +35 -39
  6. package/dist/cjs/ui/jira-issues-modal/modal/index.js +141 -211
  7. package/dist/es2019/ui/common/modal/datasource-context/index.js +1 -1
  8. package/dist/es2019/ui/common/modal/datasource-modal/createDatasourceModal.js +51 -0
  9. package/dist/es2019/ui/common/modal/datasources-table-in-modal-preview/index.js +9 -2
  10. package/dist/es2019/ui/common/modal/insert-button/index.js +5 -4
  11. package/dist/es2019/ui/confluence-search-modal/modal/index.js +35 -39
  12. package/dist/es2019/ui/jira-issues-modal/modal/index.js +133 -202
  13. package/dist/esm/ui/common/modal/datasource-modal/createDatasourceModal.js +48 -0
  14. package/dist/esm/ui/common/modal/datasources-table-in-modal-preview/index.js +10 -2
  15. package/dist/esm/ui/common/modal/insert-button/index.js +5 -4
  16. package/dist/esm/ui/confluence-search-modal/modal/index.js +38 -42
  17. package/dist/esm/ui/jira-issues-modal/modal/index.js +146 -216
  18. package/dist/types/common/types.d.ts +2 -1
  19. package/dist/types/ui/common/modal/datasource-context/index.d.ts +9 -12
  20. package/dist/types/ui/common/modal/datasource-modal/createDatasourceModal.d.ts +15 -0
  21. package/dist/types/ui/common/modal/insert-button/index.d.ts +4 -2
  22. package/dist/types/ui/confluence-search-modal/modal/index.d.ts +3 -4
  23. package/dist/types/ui/confluence-search-modal/types.d.ts +6 -1
  24. package/dist/types/ui/jira-issues-modal/modal/index.d.ts +3 -3
  25. package/dist/types/ui/jira-issues-modal/types.d.ts +3 -0
  26. package/dist/types-ts4.5/common/types.d.ts +2 -1
  27. package/dist/types-ts4.5/ui/common/modal/datasource-context/index.d.ts +9 -12
  28. package/dist/types-ts4.5/ui/common/modal/datasource-modal/createDatasourceModal.d.ts +15 -0
  29. package/dist/types-ts4.5/ui/common/modal/insert-button/index.d.ts +4 -2
  30. package/dist/types-ts4.5/ui/confluence-search-modal/modal/index.d.ts +3 -4
  31. package/dist/types-ts4.5/ui/confluence-search-modal/types.d.ts +6 -1
  32. package/dist/types-ts4.5/ui/jira-issues-modal/modal/index.d.ts +3 -3
  33. package/dist/types-ts4.5/ui/jira-issues-modal/types.d.ts +3 -0
  34. package/package.json +1 -1
@@ -12,7 +12,6 @@ var _react = require("react");
12
12
  var _react2 = require("@emotion/react");
13
13
  var _reactIntlNext = require("react-intl-next");
14
14
  var _analyticsNext = require("@atlaskit/analytics-next");
15
- var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
16
15
  var _intlMessagesProvider = require("@atlaskit/intl-messages-provider");
17
16
  var _modalDialog = require("@atlaskit/modal-dialog");
18
17
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
@@ -23,11 +22,9 @@ var _ufoExperiences = require("../../../analytics/ufoExperiences");
23
22
  var _useColumnPickerRenderedFailedUfoExperience = require("../../../analytics/ufoExperiences/hooks/useColumnPickerRenderedFailedUfoExperience");
24
23
  var _useDataRenderedUfoExperience = require("../../../analytics/ufoExperiences/hooks/useDataRenderedUfoExperience");
25
24
  var _utils = require("../../../analytics/utils");
26
- var _adf = require("../../../common/utils/adf");
27
25
  var _fetchMessagesForLocale = require("../../../common/utils/locale/fetch-messages-for-locale");
28
26
  var _datasourceExperienceId = require("../../../contexts/datasource-experience-id");
29
27
  var _userInteractions = require("../../../contexts/user-interactions");
30
- var _useDatasourceTableState = require("../../../hooks/useDatasourceTableState");
31
28
  var _en = _interopRequireDefault(require("../../../i18n/en"));
32
29
  var _useAvailableSites2 = require("../../../services/useAvailableSites");
33
30
  var _state = require("../../../state");
@@ -41,15 +38,16 @@ var _messages2 = require("../../common/initial-state-view/messages");
41
38
  var _cancelButton = require("../../common/modal/cancel-button");
42
39
  var _contentContainer = require("../../common/modal/content-container");
43
40
  var _countViewSmartLink = require("../../common/modal/count-view-smart-link");
41
+ var _datasourceContext = require("../../common/modal/datasource-context");
44
42
  var _datasourceModal = require("../../common/modal/datasource-modal");
45
- var _useColumnResize2 = require("../../common/modal/datasources-table-in-modal-preview/use-column-resize");
46
- var _useColumnWrapping2 = require("../../common/modal/datasources-table-in-modal-preview/use-column-wrapping");
43
+ var _createDatasourceModal = require("../../common/modal/datasource-modal/createDatasourceModal");
44
+ var _datasourcesTableInModalPreview = _interopRequireDefault(require("../../common/modal/datasources-table-in-modal-preview"));
45
+ var _insertButton = require("../../common/modal/insert-button");
47
46
  var _modeSwitcher = require("../../common/modal/mode-switcher");
48
47
  var _useViewModeContext2 = require("../../common/modal/mode-switcher/useViewModeContext");
49
48
  var _searchCount = _interopRequireDefault(require("../../common/modal/search-count"));
50
49
  var _siteSelector = require("../../common/modal/site-selector");
51
50
  var _issueLikeTable = require("../../issue-like-table");
52
- var _utils2 = require("../../issue-like-table/utils");
53
51
  var _ui = require("../basic-filters/ui");
54
52
  var _isQueryTooComplex = require("../basic-filters/utils/isQueryTooComplex");
55
53
  var _jiraSearchContainer = require("../jira-search-container");
@@ -61,7 +59,6 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
61
59
  * @jsxRuntime classic
62
60
  * @jsx jsx
63
61
  */ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
64
- var DEFAULT_VIEW_MODE = 'table';
65
62
  var getDisplayValue = function getDisplayValue(currentViewMode, itemCount) {
66
63
  if (currentViewMode === 'table') {
67
64
  return _types.DatasourceDisplay.DATASOURCE_TABLE;
@@ -69,81 +66,55 @@ var getDisplayValue = function getDisplayValue(currentViewMode, itemCount) {
69
66
  return itemCount === 1 ? _types.DatasourceDisplay.INLINE : _types.DatasourceDisplay.DATASOURCE_INLINE;
70
67
  };
71
68
  var jqlSupportDocumentLink = 'https://support.atlassian.com/jira-service-management-cloud/docs/use-advanced-search-with-jira-query-language-jql/';
69
+ var isValidParameters = function isValidParameters(parameters) {
70
+ return typeof (parameters === null || parameters === void 0 ? void 0 : parameters.jql) === 'string' && parameters.jql.length > 0 && typeof (parameters === null || parameters === void 0 ? void 0 : parameters.cloudId) === 'string' && parameters.cloudId.length > 0;
71
+ };
72
72
  var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
73
- var datasourceId = props.datasourceId,
74
- initialColumnCustomSizes = props.columnCustomSizes,
75
- initialWrappedColumnKeys = props.wrappedColumnKeys,
76
- onCancel = props.onCancel,
77
- onInsert = props.onInsert,
78
- initialParameters = props.parameters,
79
- urlBeingEdited = props.url,
80
- initialVisibleColumnKeys = props.visibleColumnKeys;
73
+ var onCancel = props.onCancel,
74
+ urlBeingEdited = props.url;
75
+ var _useDatasourceContext = (0, _datasourceContext.useDatasourceContext)(),
76
+ visibleColumnCount = _useDatasourceContext.visibleColumnCount,
77
+ visibleColumnKeys = _useDatasourceContext.visibleColumnKeys,
78
+ parameters = _useDatasourceContext.parameters,
79
+ setParameters = _useDatasourceContext.setParameters,
80
+ tableState = _useDatasourceContext.tableState;
81
+ var reset = tableState.reset,
82
+ status = tableState.status,
83
+ responseItems = tableState.responseItems,
84
+ columns = tableState.columns,
85
+ totalCount = tableState.totalCount,
86
+ _tableState$extension = tableState.extensionKey,
87
+ extensionKey = _tableState$extension === void 0 ? null : _tableState$extension,
88
+ destinationObjectTypes = tableState.destinationObjectTypes;
89
+ var _ref = parameters !== null && parameters !== void 0 ? parameters : {},
90
+ cloudId = _ref.cloudId,
91
+ jql = _ref.jql;
92
+ var _useState = (0, _react.useState)(jql),
93
+ _useState2 = (0, _slicedToArray2.default)(_useState, 1),
94
+ initialJql = _useState2[0];
81
95
  var _useViewModeContext = (0, _useViewModeContext2.useViewModeContext)(),
82
96
  currentViewMode = _useViewModeContext.currentViewMode;
83
- var _useState = (0, _react.useState)(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.cloudId),
84
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
85
- cloudId = _useState2[0],
86
- setCloudId = _useState2[1];
87
97
  var _useAvailableSites = (0, _useAvailableSites2.useAvailableSites)('jira', cloudId),
88
98
  availableSites = _useAvailableSites.availableSites,
89
99
  selectedJiraSite = _useAvailableSites.selectedSite;
90
- var _useState3 = (0, _react.useState)(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.jql),
100
+ var _useState3 = (0, _react.useState)(jql),
91
101
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
92
- jql = _useState4[0],
93
- setJql = _useState4[1];
94
- var _useState5 = (0, _react.useState)(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.jql),
95
- _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
96
- searchBarJql = _useState6[0],
97
- setSearchBarJql = _useState6[1];
98
- var _useState7 = (0, _react.useState)(initialVisibleColumnKeys),
99
- _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
100
- visibleColumnKeys = _useState8[0],
101
- setVisibleColumnKeys = _useState8[1];
102
+ searchBarJql = _useState4[0],
103
+ setSearchBarJql = _useState4[1];
102
104
 
103
105
  // analytics related parameters
104
106
  var searchCount = (0, _react.useRef)(0);
105
107
  var userInteractions = (0, _userInteractions.useUserInteractions)();
106
108
  var initialSearchMethod =
107
109
  // eslint-disable-next-line @atlaskit/platform/no-preconditioning
108
- (0, _platformFeatureFlags.fg)('platform.linking-platform.datasource.show-jlol-basic-filters') && !(0, _isQueryTooComplex.isQueryTooComplex)((initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.jql) || '') ? 'basic' : 'jql';
109
- var _useState9 = (0, _react.useState)(initialSearchMethod),
110
- _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
111
- currentSearchMethod = _useState10[0],
112
- setCurrentSearchMethod = _useState10[1];
110
+ (0, _platformFeatureFlags.fg)('platform.linking-platform.datasource.show-jlol-basic-filters') && !(0, _isQueryTooComplex.isQueryTooComplex)(initialJql || '') ? 'basic' : 'jql';
111
+ var _useState5 = (0, _react.useState)(initialSearchMethod),
112
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
113
+ currentSearchMethod = _useState6[0],
114
+ setCurrentSearchMethod = _useState6[1];
113
115
  var searchMethodSearchedWith = (0, _react.useRef)(null);
114
- var visibleColumnCount = (0, _react.useRef)((visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.length) || 0);
115
116
  var basicFilterSelectionsSearchedWith = (0, _react.useRef)({});
116
117
  var isSearchedWithComplexQuery = (0, _react.useRef)(false);
117
- var parameters = (0, _react.useMemo)(function () {
118
- return !!cloudId ? {
119
- cloudId: cloudId,
120
- jql: jql || ''
121
- } : undefined;
122
- }, [cloudId, jql]);
123
- var isParametersSet = !!(jql && cloudId);
124
- var _useColumnResize = (0, _useColumnResize2.useColumnResize)(initialColumnCustomSizes),
125
- columnCustomSizes = _useColumnResize.columnCustomSizes,
126
- onColumnResize = _useColumnResize.onColumnResize;
127
- var _useColumnWrapping = (0, _useColumnWrapping2.useColumnWrapping)(initialWrappedColumnKeys),
128
- wrappedColumnKeys = _useColumnWrapping.wrappedColumnKeys,
129
- onWrappedColumnChange = _useColumnWrapping.onWrappedColumnChange;
130
- var _useDatasourceTableSt = (0, _useDatasourceTableState.useDatasourceTableState)({
131
- datasourceId: datasourceId,
132
- parameters: isParametersSet ? parameters : undefined,
133
- fieldKeys: visibleColumnKeys
134
- }),
135
- reset = _useDatasourceTableSt.reset,
136
- status = _useDatasourceTableSt.status,
137
- onNextPage = _useDatasourceTableSt.onNextPage,
138
- responseItems = _useDatasourceTableSt.responseItems,
139
- hasNextPage = _useDatasourceTableSt.hasNextPage,
140
- columns = _useDatasourceTableSt.columns,
141
- defaultVisibleColumnKeys = _useDatasourceTableSt.defaultVisibleColumnKeys,
142
- loadDatasourceDetails = _useDatasourceTableSt.loadDatasourceDetails,
143
- totalCount = _useDatasourceTableSt.totalCount,
144
- _useDatasourceTableSt2 = _useDatasourceTableSt.extensionKey,
145
- extensionKey = _useDatasourceTableSt2 === void 0 ? null : _useDatasourceTableSt2,
146
- destinationObjectTypes = _useDatasourceTableSt.destinationObjectTypes;
147
118
  var _useDatasourceAnalyti = (0, _analytics.useDatasourceAnalyticsEvents)(),
148
119
  fireEvent = _useDatasourceAnalyti.fireEvent;
149
120
  var experienceId = (0, _datasourceExperienceId.useDatasourceExperienceId)();
@@ -155,7 +126,6 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
155
126
  }, [destinationObjectTypes, extensionKey]);
156
127
  var resolvedWithNoResults = status === 'resolved' && !responseItems.length;
157
128
  var jqlUrl = selectedJiraSite && jql && "".concat(selectedJiraSite.url, "/issues/?jql=").concat(encodeURI(jql));
158
- var isInsertDisabled = !isParametersSet || status === 'rejected' || status === 'unauthorized' || status === 'loading';
159
129
  var shouldShowIssueCount = !!totalCount && totalCount !== 1 && currentViewMode === 'table';
160
130
  var isDataReady = (visibleColumnKeys || []).length > 0;
161
131
  var hasNoJiraSites = availableSites && availableSites.length === 0;
@@ -182,16 +152,21 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
182
152
  canBeLink: currentViewMode === 'inline',
183
153
  extensionKey: extensionKey
184
154
  });
185
- (0, _react.useEffect)(function () {
186
- var newVisibleColumnKeys = !initialVisibleColumnKeys || (initialVisibleColumnKeys || []).length === 0 ? defaultVisibleColumnKeys : initialVisibleColumnKeys;
187
- visibleColumnCount.current = newVisibleColumnKeys.length;
188
- setVisibleColumnKeys(newVisibleColumnKeys);
189
- }, [initialVisibleColumnKeys, defaultVisibleColumnKeys]);
155
+
156
+ /**
157
+ * If the selected Jira site changes, update the cloudId in the parameters
158
+ * This is mainly useful for setting the initial cloudId after the site selection loads
159
+ */
190
160
  (0, _react.useEffect)(function () {
191
161
  if (selectedJiraSite && (!cloudId || cloudId !== selectedJiraSite.cloudId)) {
192
- setCloudId(selectedJiraSite.cloudId);
162
+ setParameters(function () {
163
+ return {
164
+ jql: '',
165
+ cloudId: selectedJiraSite.cloudId
166
+ };
167
+ });
193
168
  }
194
- }, [cloudId, selectedJiraSite]);
169
+ }, [cloudId, selectedJiraSite, setParameters]);
195
170
  var fireSingleItemViewedEvent = (0, _react.useCallback)(function () {
196
171
  fireEvent('ui.link.viewed.singleItem', _objectSpread(_objectSpread({}, analyticsPayload), {}, {
197
172
  searchMethod: (0, _utils.mapSearchMethod)(searchMethodSearchedWith.current)
@@ -211,7 +186,7 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
211
186
  displayedColumnCount: visibleColumnCount.current
212
187
  }));
213
188
  }
214
- }, [analyticsPayload, fireEvent, totalCount, isDataReady]);
189
+ }, [isDataReady, fireEvent, analyticsPayload, totalCount, visibleColumnCount]);
215
190
  var fireIssueViewAnalytics = (0, _react.useCallback)(function () {
216
191
  if (!totalCount) {
217
192
  return;
@@ -236,10 +211,10 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
236
211
  }
237
212
  }, [currentViewMode, status, fireIssueViewAnalytics, fireCountViewedEvent]);
238
213
  (0, _useColumnPickerRenderedFailedUfoExperience.useColumnPickerRenderedFailedUfoExperience)(status, experienceId);
239
- var onSearch = (0, _react.useCallback)(function (newParameters, _ref) {
240
- var searchMethod = _ref.searchMethod,
241
- basicFilterSelections = _ref.basicFilterSelections,
242
- isQueryComplex = _ref.isQueryComplex;
214
+ var onSearch = (0, _react.useCallback)(function (newParameters, _ref2) {
215
+ var searchMethod = _ref2.searchMethod,
216
+ basicFilterSelections = _ref2.basicFilterSelections,
217
+ isQueryComplex = _ref2.isQueryComplex;
243
218
  searchCount.current++;
244
219
  searchMethodSearchedWith.current = searchMethod;
245
220
  basicFilterSelectionsSearchedWith.current = basicFilterSelections;
@@ -247,19 +222,26 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
247
222
  if (jql !== newParameters.jql) {
248
223
  userInteractions.add(_types.DatasourceAction.QUERY_UPDATED);
249
224
  }
250
- setJql(newParameters.jql);
225
+ setParameters(function (state) {
226
+ return state && newParameters.jql ? {
227
+ cloudId: state.cloudId,
228
+ jql: newParameters.jql
229
+ } : undefined;
230
+ });
251
231
  reset({
252
232
  shouldForceRequest: true
253
233
  });
254
- }, [jql, reset, userInteractions]);
234
+ }, [jql, reset, userInteractions, setParameters]);
255
235
  var onSiteSelection = (0, _react.useCallback)(function (site) {
256
236
  userInteractions.add(_types.DatasourceAction.INSTANCE_UPDATED);
257
- setJql('');
258
- setCloudId(site.cloudId);
237
+ setParameters({
238
+ jql: '',
239
+ cloudId: site.cloudId
240
+ });
259
241
  reset({
260
242
  shouldForceRequest: true
261
243
  });
262
- }, [reset, userInteractions]);
244
+ }, [reset, userInteractions, setParameters]);
263
245
  var retrieveUrlForSmartCardRender = (0, _react.useCallback)(function () {
264
246
  var _data$key;
265
247
  var _responseItems = (0, _slicedToArray2.default)(responseItems, 1),
@@ -267,120 +249,6 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
267
249
  // agreement with BE that we will use `key` for rendering smartlink
268
250
  return data === null || data === void 0 || (_data$key = data.key) === null || _data$key === void 0 || (_data$key = _data$key.data) === null || _data$key === void 0 ? void 0 : _data$key.url;
269
251
  }, [responseItems]);
270
- var onInsertPressed = (0, _react.useCallback)(function (e, analyticsEvent) {
271
- var _insertButtonClickedE;
272
- if (!isParametersSet || !jql || !selectedJiraSite) {
273
- return;
274
- }
275
-
276
- // During insertion, we want the JQL of the datasource to be whatever is in the search bar,
277
- // even if the user didn't previously click search
278
- var upToDateJql = searchBarJql !== null && searchBarJql !== void 0 ? searchBarJql : jql;
279
- var upToDateJqlUrl = selectedJiraSite && jql && "".concat(selectedJiraSite.url, "/issues/?jql=").concat(encodeURIComponent(upToDateJql));
280
- var filterSelectionCount = _ui.availableBasicFilterTypes.reduce(function (current, filter) {
281
- var _basicFilterSelection;
282
- return _objectSpread(_objectSpread({}, current), {}, (0, _defineProperty2.default)({}, "".concat(filter, "BasicFilterSelectionCount"), ((_basicFilterSelection = basicFilterSelectionsSearchedWith.current[filter]) === null || _basicFilterSelection === void 0 ? void 0 : _basicFilterSelection.length) || 0));
283
- }, {});
284
- var insertButtonClickedEvent = analyticsEvent.update({
285
- actionSubjectId: 'insert',
286
- attributes: _objectSpread(_objectSpread({}, analyticsPayload), {}, {
287
- totalItemCount: totalCount || 0,
288
- displayedColumnCount: visibleColumnCount.current,
289
- display: getDisplayValue(currentViewMode, totalCount || 0),
290
- searchCount: searchCount.current,
291
- searchMethod: (0, _utils.mapSearchMethod)(searchMethodSearchedWith.current),
292
- actions: userInteractions.get(),
293
- isQueryComplex: isSearchedWithComplexQuery.current
294
- }, searchMethodSearchedWith.current === 'basic' ? _objectSpread({}, filterSelectionCount) : {}),
295
- eventType: 'ui'
296
- });
297
-
298
- // additional event for tracking in confluence against JIM
299
- var macroInsertedEvent = analyticsEvent.clone();
300
- macroInsertedEvent === null || macroInsertedEvent === void 0 || macroInsertedEvent.update({
301
- eventType: 'track',
302
- action: 'inserted',
303
- actionSubject: 'macro',
304
- actionSubjectId: 'jlol',
305
- attributes: _objectSpread(_objectSpread({}, analyticsPayload), {}, {
306
- totalItemCount: totalCount || 0,
307
- displayedColumnCount: visibleColumnCount.current,
308
- display: getDisplayValue(currentViewMode, totalCount || 0),
309
- searchCount: searchCount.current,
310
- searchMethod: (0, _utils.mapSearchMethod)(searchMethodSearchedWith.current),
311
- actions: userInteractions.get()
312
- })
313
- });
314
- var consumerEvent = (_insertButtonClickedE = insertButtonClickedEvent.clone()) !== null && _insertButtonClickedE !== void 0 ? _insertButtonClickedE : undefined;
315
- insertButtonClickedEvent.fire(_analytics.EVENT_CHANNEL);
316
- var firstIssueUrl = retrieveUrlForSmartCardRender();
317
- if (currentViewMode === 'inline') {
318
- macroInsertedEvent === null || macroInsertedEvent === void 0 || macroInsertedEvent.fire(_analytics.EVENT_CHANNEL);
319
- var url = responseItems.length === 1 ? firstIssueUrl : upToDateJqlUrl;
320
- onInsert({
321
- type: 'inlineCard',
322
- attrs: {
323
- url: url
324
- }
325
- }, consumerEvent);
326
- } else {
327
- onInsert((0, _adf.buildDatasourceAdf)({
328
- id: datasourceId,
329
- parameters: {
330
- cloudId: cloudId,
331
- jql: upToDateJql // TODO support non JQL type
332
- },
333
- views: [{
334
- type: 'table',
335
- properties: {
336
- columns: (visibleColumnKeys || []).map(function (key) {
337
- var width = columnCustomSizes === null || columnCustomSizes === void 0 ? void 0 : columnCustomSizes[key];
338
- var isWrapped = wrappedColumnKeys === null || wrappedColumnKeys === void 0 ? void 0 : wrappedColumnKeys.includes(key);
339
- return _objectSpread(_objectSpread({
340
- key: key
341
- }, width ? {
342
- width: width
343
- } : {}), isWrapped ? {
344
- isWrapped: isWrapped
345
- } : {});
346
- })
347
- }
348
- }]
349
- }, upToDateJqlUrl), consumerEvent);
350
- }
351
- }, [isParametersSet, jql, selectedJiraSite, searchBarJql, analyticsPayload, totalCount, currentViewMode, retrieveUrlForSmartCardRender, responseItems.length, onInsert, datasourceId, cloudId, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys, userInteractions]);
352
- var handleOnNextPage = (0, _react.useCallback)(function () {
353
- var onNextPageProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
354
- userInteractions.add(_types.DatasourceAction.NEXT_PAGE_SCROLLED);
355
- onNextPage(onNextPageProps);
356
- }, [onNextPage, userInteractions]);
357
- var handleVisibleColumnKeysChange = (0, _react.useCallback)(function () {
358
- var newVisibleColumnKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
359
- var columnAction = (0, _utils2.getColumnAction)(visibleColumnKeys || [], newVisibleColumnKeys);
360
- userInteractions.add(columnAction);
361
- visibleColumnCount.current = newVisibleColumnKeys.length;
362
- setVisibleColumnKeys(newVisibleColumnKeys);
363
- }, [visibleColumnKeys, userInteractions]);
364
- var issueLikeDataTableView = (0, _react.useMemo)(function () {
365
- return (0, _react2.jsx)(_contentContainer.ContentContainer, {
366
- withTableBorder: true
367
- }, (0, _react2.jsx)(_issueLikeTable.IssueLikeDataTableView, {
368
- testId: "jira-datasource-table",
369
- status: status,
370
- columns: columns,
371
- items: responseItems,
372
- hasNextPage: hasNextPage,
373
- visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
374
- onNextPage: handleOnNextPage,
375
- onLoadDatasourceDetails: loadDatasourceDetails,
376
- onVisibleColumnKeysChange: handleVisibleColumnKeysChange,
377
- extensionKey: extensionKey,
378
- columnCustomSizes: columnCustomSizes,
379
- onColumnResize: onColumnResize,
380
- wrappedColumnKeys: wrappedColumnKeys,
381
- onWrappedColumnChange: (0, _platformFeatureFlags.fg)('platform.linking-platform.datasource-word_wrap') ? onWrappedColumnChange : undefined
382
- }));
383
- }, [status, columns, responseItems, hasNextPage, visibleColumnKeys, defaultVisibleColumnKeys, handleOnNextPage, loadDatasourceDetails, handleVisibleColumnKeysChange, extensionKey, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange]);
384
252
  var renderCountModeContent = (0, _react.useCallback)(function () {
385
253
  var selectedJiraSiteUrl = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
386
254
  if (status === 'unauthorized') {
@@ -440,8 +308,12 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
440
308
  } : undefined
441
309
  }));
442
310
  }
443
- return issueLikeDataTableView;
444
- }, [columns.length, currentSearchMethod, issueLikeDataTableView, jql, jqlUrl, resolvedWithNoResults, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited]);
311
+ return (0, _react2.jsx)(_contentContainer.ContentContainer, {
312
+ withTableBorder: true
313
+ }, (0, _react2.jsx)(_datasourcesTableInModalPreview.default, {
314
+ testId: "jira-datasource-table"
315
+ }));
316
+ }, [columns.length, currentSearchMethod, jql, jqlUrl, resolvedWithNoResults, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited]);
445
317
  var siteSelectorLabel = availableSites && availableSites.length > 1 ? _messages3.modalMessages.insertIssuesTitleManySites : _messages3.modalMessages.insertIssuesTitle;
446
318
  var getCancelButtonAnalyticsPayload = (0, _react.useCallback)(function () {
447
319
  return _objectSpread(_objectSpread({}, analyticsPayload), {}, {
@@ -449,6 +321,38 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
449
321
  actions: userInteractions.get()
450
322
  });
451
323
  }, [analyticsPayload, userInteractions]);
324
+ var filterSelectionCount = _ui.availableBasicFilterTypes.reduce(function (current, filter) {
325
+ var _basicFilterSelection;
326
+ return _objectSpread(_objectSpread({}, current), {}, (0, _defineProperty2.default)({}, "".concat(filter, "BasicFilterSelectionCount"), ((_basicFilterSelection = basicFilterSelectionsSearchedWith.current[filter]) === null || _basicFilterSelection === void 0 ? void 0 : _basicFilterSelection.length) || 0));
327
+ }, {});
328
+ var getInsertButtonAnalyticsPayload = (0, _react.useCallback)(function () {
329
+ return _objectSpread(_objectSpread({}, analyticsPayload), {}, {
330
+ display: getDisplayValue(currentViewMode, totalCount || 0),
331
+ isQueryComplex: isSearchedWithComplexQuery.current,
332
+ searchMethod: (0, _utils.mapSearchMethod)(searchMethodSearchedWith.current),
333
+ searchCount: searchCount.current,
334
+ actions: userInteractions.get()
335
+ }, searchMethodSearchedWith.current === 'basic' ? _objectSpread({}, filterSelectionCount) : {});
336
+ }, [analyticsPayload, currentViewMode, filterSelectionCount, totalCount, userInteractions]);
337
+ var urlToInsert = (0, _react.useMemo)(function () {
338
+ var jql = parameters === null || parameters === void 0 ? void 0 : parameters.jql;
339
+ if (!jql || !(selectedJiraSite !== null && selectedJiraSite !== void 0 && selectedJiraSite.url)) {
340
+ return;
341
+ }
342
+ // During insertion, we want the JQL of the datasource to be whatever is in the search bar,
343
+ // even if the user didn't previously click search
344
+ var upToDateJql = searchBarJql !== null && searchBarJql !== void 0 ? searchBarJql : jql;
345
+ var upToDateJqlUrl = "".concat(selectedJiraSite.url, "/issues/?jql=").concat(encodeURIComponent(upToDateJql));
346
+ return currentViewMode === 'inline' && responseItems.length === 1 ? retrieveUrlForSmartCardRender() : upToDateJqlUrl;
347
+ }, [currentViewMode, parameters === null || parameters === void 0 ? void 0 : parameters.jql, responseItems, retrieveUrlForSmartCardRender, searchBarJql, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url]);
348
+ var updateParametersBeforeInsert = function updateParametersBeforeInsert(parameters) {
349
+ return {
350
+ cloudId: parameters.cloudId,
351
+ // searchBarJql will not be null at this point, since this function is only called when user press insert button
352
+ //
353
+ jql: searchBarJql || ''
354
+ };
355
+ };
452
356
  return (0, _react2.jsx)(_intlMessagesProvider.IntlMessagesProvider, {
453
357
  defaultMessages: _en.default,
454
358
  loaderFn: _fetchMessagesForLocale.fetchMessagesForLocale
@@ -483,11 +387,11 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
483
387
  onCancel: onCancel,
484
388
  getAnalyticsPayload: getCancelButtonAnalyticsPayload,
485
389
  testId: "jira-datasource-modal--cancel-button"
486
- }), !hasNoJiraSites && (0, _react2.jsx)(_standardButton.default, {
487
- appearance: "primary",
488
- onClick: onInsertPressed,
489
- isDisabled: isInsertDisabled,
490
- testId: "jira-datasource-modal--insert-button"
390
+ }), !hasNoJiraSites && (0, _react2.jsx)(_insertButton.InsertButton, {
391
+ testId: "jira-datasource-modal--insert-button",
392
+ url: urlToInsert,
393
+ overwriteParameters: updateParametersBeforeInsert,
394
+ getAnalyticsPayload: getInsertButtonAnalyticsPayload
491
395
  }, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages3.modalMessages.insertIssuesButtonText))))));
492
396
  };
493
397
  var analyticsContextAttributes = {
@@ -499,9 +403,35 @@ var analyticsContextData = _objectSpread(_objectSpread({}, _constants.componentM
499
403
  var contextData = _objectSpread(_objectSpread({}, analyticsContextData), {}, {
500
404
  attributes: _objectSpread({}, analyticsContextAttributes)
501
405
  });
502
- var JiraIssuesConfigModal = exports.JiraIssuesConfigModal = (0, _analyticsNext.withAnalyticsContext)(contextData)(function (props) {
503
- var _props$viewMode;
504
- return (0, _react2.jsx)(_state.StoreContainer, null, (0, _react2.jsx)(_datasourceExperienceId.DatasourceExperienceIdProvider, null, (0, _react2.jsx)(_userInteractions.UserInteractionsProvider, null, (0, _platformFeatureFlags.fg)('platform-datasources-use-refactored-config-modal') ? (0, _react2.jsx)(_useViewModeContext2.DatasourceViewModeProvider, {
505
- viewMode: (_props$viewMode = props.viewMode) !== null && _props$viewMode !== void 0 ? _props$viewMode : DEFAULT_VIEW_MODE
506
- }, (0, _react2.jsx)(PlainJiraIssuesConfigModal, props)) : (0, _react2.jsx)(_ModalOld.PlainJiraIssuesConfigModalOld, props))));
507
- });
406
+ var ConnectedJiraIssueConfigModal = (0, _createDatasourceModal.createDatasourceModal)({
407
+ isValidParameters: isValidParameters,
408
+ dataProvider: 'jira-issues',
409
+ component: PlainJiraIssuesConfigModal
410
+ });
411
+ var JiraIssuesConfigModalWithExtraAnalyticsOnInsert = function JiraIssuesConfigModalWithExtraAnalyticsOnInsert(props) {
412
+ var onInsert = props.onInsert;
413
+ var onInsertWithMacroAnalytics = (0, _react.useCallback)(function (adf, analyticsEvent) {
414
+ if (analyticsEvent && adf.type === 'inlineCard') {
415
+ var macroInsertedEvent = analyticsEvent.clone();
416
+ macroInsertedEvent === null || macroInsertedEvent === void 0 || macroInsertedEvent.update({
417
+ eventType: 'track',
418
+ action: 'inserted',
419
+ actionSubject: 'macro',
420
+ actionSubjectId: 'jlol'
421
+ });
422
+ macroInsertedEvent === null || macroInsertedEvent === void 0 || macroInsertedEvent.fire(_constants.EVENT_CHANNEL);
423
+ }
424
+ onInsert(adf, analyticsEvent);
425
+ }, [onInsert]);
426
+ return (0, _react2.jsx)(_state.StoreContainer, null, (0, _react2.jsx)(ConnectedJiraIssueConfigModal, (0, _extends2.default)({}, props, {
427
+ onInsert: onInsertWithMacroAnalytics
428
+ })));
429
+ };
430
+ var JiraIssuesConfigModal = exports.JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
431
+ if ((0, _platformFeatureFlags.fg)('platform-datasources-use-refactored-config-modal')) {
432
+ return (0, _react2.jsx)(JiraIssuesConfigModalWithExtraAnalyticsOnInsert, props);
433
+ }
434
+ return (0, _react2.jsx)(_state.StoreContainer, null, (0, _react2.jsx)(_analyticsNext.AnalyticsContext, {
435
+ data: contextData
436
+ }, (0, _react2.jsx)(_datasourceExperienceId.DatasourceExperienceIdProvider, null, (0, _react2.jsx)(_userInteractions.UserInteractionsProvider, null, (0, _react2.jsx)(_ModalOld.PlainJiraIssuesConfigModalOld, props)))));
437
+ };
@@ -51,7 +51,7 @@ export const DatasourceContextProvider = ({
51
51
  onWrappedColumnChange,
52
52
  parameters,
53
53
  setParameters,
54
- onInsert
54
+ onInsert: onInsert
55
55
  }), [datasourceId, isValidParameters, tableState, visibleColumnCount, visibleColumnKeys, onVisibleColumnKeysChange, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange, parameters, onInsert]);
56
56
  return /*#__PURE__*/React.createElement(DatasourceContext.Provider, {
57
57
  value: contextValue
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
5
+
6
+ import React 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 { AnalyticsContext } from '@atlaskit/analytics-next';
11
+ import { DatasourceExperienceIdProvider } from '../../../../contexts/datasource-experience-id';
12
+ import { UserInteractionsProvider } from '../../../../contexts/user-interactions';
13
+ import { DatasourceContextProvider } from '../datasource-context';
14
+ import { DatasourceViewModeProvider } from '../mode-switcher/useViewModeContext';
15
+ const DEFAULT_VIEW_MODE = 'table';
16
+ export const createDatasourceModal = ({
17
+ isValidParameters,
18
+ dataProvider,
19
+ component: ModalContent
20
+ }) => {
21
+ return props => {
22
+ const {
23
+ datasourceId,
24
+ visibleColumnKeys,
25
+ columnCustomSizes,
26
+ wrappedColumnKeys,
27
+ parameters,
28
+ onInsert,
29
+ viewMode
30
+ } = props;
31
+ return jsx(AnalyticsContext, {
32
+ data: {
33
+ source: 'datasourceConfigModal',
34
+ component: 'datasourceConfigModal',
35
+ attributes: {
36
+ dataProvider
37
+ }
38
+ }
39
+ }, jsx(DatasourceExperienceIdProvider, null, jsx(UserInteractionsProvider, null, jsx(DatasourceContextProvider, {
40
+ datasourceId: datasourceId,
41
+ initialVisibleColumnKeys: visibleColumnKeys,
42
+ initialColumnCustomSizes: columnCustomSizes,
43
+ initialWrappedColumnKeys: wrappedColumnKeys,
44
+ initialParameters: parameters,
45
+ isValidParameters: isValidParameters,
46
+ onInsert: onInsert
47
+ }, jsx(DatasourceViewModeProvider, {
48
+ viewMode: viewMode !== null && viewMode !== void 0 ? viewMode : DEFAULT_VIEW_MODE
49
+ }, jsx(ModalContent, props))))));
50
+ };
51
+ };
@@ -1,6 +1,8 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import React from 'react';
2
+ import React, { useCallback } from 'react';
3
3
  import { fg } from '@atlaskit/platform-feature-flags';
4
+ import { DatasourceAction } from '../../../../analytics/types';
5
+ import { useUserInteractions } from '../../../../contexts/user-interactions';
4
6
  import { IssueLikeDataTableView } from '../../../issue-like-table';
5
7
  import { useDatasourceContext } from '../datasource-context';
6
8
  const Table = props => {
@@ -22,13 +24,18 @@ const Table = props => {
22
24
  extensionKey = null
23
25
  }
24
26
  } = useDatasourceContext();
27
+ const userInteractions = useUserInteractions();
28
+ const handleOnNextPage = useCallback((onNextPageProps = {}) => {
29
+ userInteractions.add(DatasourceAction.NEXT_PAGE_SCROLLED);
30
+ onNextPage(onNextPageProps);
31
+ }, [onNextPage, userInteractions]);
25
32
  return /*#__PURE__*/React.createElement(IssueLikeDataTableView, _extends({}, props, {
26
33
  status: status,
27
34
  columns: columns,
28
35
  items: responseItems,
29
36
  hasNextPage: hasNextPage,
30
37
  visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
31
- onNextPage: onNextPage,
38
+ onNextPage: handleOnNextPage,
32
39
  onLoadDatasourceDetails: loadDatasourceDetails,
33
40
  onVisibleColumnKeysChange: onVisibleColumnKeysChange,
34
41
  extensionKey: extensionKey,
@@ -18,6 +18,7 @@ export const InsertButton = ({
18
18
  testId,
19
19
  url,
20
20
  getAnalyticsPayload,
21
+ overwriteParameters,
21
22
  children
22
23
  }) => {
23
24
  const {
@@ -47,12 +48,12 @@ export const InsertButton = ({
47
48
  const insertButtonClickedEvent = analyticsEvent.update({
48
49
  actionSubjectId: 'insert',
49
50
  attributes: {
50
- ...getAnalyticsPayload(),
51
51
  totalItemCount: totalCount || 0,
52
52
  displayedColumnCount: visibleColumnCount.current,
53
53
  display: currentViewMode === 'inline' ? DatasourceDisplay.DATASOURCE_INLINE : DatasourceDisplay.DATASOURCE_TABLE,
54
54
  searchMethod: DatasourceSearchMethod.DATASOURCE_SEARCH_QUERY,
55
- actions: userInteractions.get()
55
+ actions: userInteractions.get(),
56
+ ...getAnalyticsPayload()
56
57
  },
57
58
  eventType: 'ui'
58
59
  });
@@ -68,7 +69,7 @@ export const InsertButton = ({
68
69
  } else {
69
70
  onInsert(buildDatasourceAdf({
70
71
  id: datasourceId,
71
- parameters: parameters,
72
+ parameters: overwriteParameters ? overwriteParameters(parameters) : parameters,
72
73
  views: [{
73
74
  type: 'table',
74
75
  properties: {
@@ -89,7 +90,7 @@ export const InsertButton = ({
89
90
  }]
90
91
  }, url), consumerEvent);
91
92
  }
92
- }, [isValidParameters, parameters, url, getAnalyticsPayload, totalCount, visibleColumnCount, currentViewMode, userInteractions, onInsert, datasourceId, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys]);
93
+ }, [columnCustomSizes, currentViewMode, datasourceId, getAnalyticsPayload, isValidParameters, onInsert, overwriteParameters, parameters, totalCount, url, userInteractions, visibleColumnCount, visibleColumnKeys, wrappedColumnKeys]);
93
94
  return jsx(Button, {
94
95
  appearance: "primary",
95
96
  onClick: onInsertPressed,