@atlaskit/link-datasource 1.25.1 → 1.25.2

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 CHANGED
@@ -1,5 +1,12 @@
1
1
  # @atlaskit/link-datasource
2
2
 
3
+ ## 1.25.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#87128](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/87128) [`2b6b715884a0`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/2b6b715884a0) - Adds Insert button click analytics event and tests to confluence-search config modal.
8
+ - Updated dependencies
9
+
3
10
  ## 1.25.1
4
11
 
5
12
  ### Patch Changes
@@ -5,7 +5,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.PlainConfluenceSearchConfigModal = exports.ConfluenceSearchConfigModal = void 0;
8
+ exports.getColumnAction = exports.PlainConfluenceSearchConfigModal = exports.ConfluenceSearchConfigModal = void 0;
9
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
@@ -24,6 +24,7 @@ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
24
24
  var _primitives = require("@atlaskit/primitives");
25
25
  var _linkUrl = _interopRequireDefault(require("@atlaskit/smart-card/link-url"));
26
26
  var _colors = require("@atlaskit/theme/colors");
27
+ var _analytics = require("../../../analytics");
27
28
  var _constants = require("../../../analytics/constants");
28
29
  var _types = require("../../../analytics/types");
29
30
  var _adf = require("../../../common/utils/adf");
@@ -56,6 +57,19 @@ var searchCountStyles = (0, _primitives.xcss)({
56
57
  flex: 1,
57
58
  fontWeight: 600
58
59
  });
60
+
61
+ // TODO: common functionality of all modals refactor in EDM-9573
62
+ var getColumnAction = exports.getColumnAction = function getColumnAction(oldVisibleColumnKeys, newVisibleColumnKeys) {
63
+ var newColumnSize = newVisibleColumnKeys.length;
64
+ var oldColumnSize = oldVisibleColumnKeys.length;
65
+ if (newColumnSize > oldColumnSize) {
66
+ return _types.DatasourceAction.COLUMN_ADDED;
67
+ } else if (newColumnSize < oldColumnSize) {
68
+ return _types.DatasourceAction.COLUMN_REMOVED;
69
+ } else {
70
+ return _types.DatasourceAction.COLUMN_REORDERED;
71
+ }
72
+ };
59
73
  var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal = function PlainConfluenceSearchConfigModal(props) {
60
74
  var _useRef = (0, _react.useRef)((0, _uuid.v4)()),
61
75
  modalRenderInstanceId = _useRef.current;
@@ -87,6 +101,7 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
87
101
  // analytics related parameters
88
102
  var searchCount = (0, _react.useRef)(0);
89
103
  var userInteractionActions = (0, _react.useRef)(new Set());
104
+ var visibleColumnCount = (0, _react.useRef)((visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.length) || 0);
90
105
 
91
106
  // TODO: further refactoring in EDM-9573
92
107
  // https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/pull-requests/82725/overview?commentId=6829210
@@ -179,6 +194,11 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
179
194
  }();
180
195
  void fetchSiteDisplayNames();
181
196
  }, []);
197
+ (0, _react.useEffect)(function () {
198
+ var newVisibleColumnKeys = !initialVisibleColumnKeys || (initialVisibleColumnKeys || []).length === 0 ? defaultVisibleColumnKeys : initialVisibleColumnKeys;
199
+ visibleColumnCount.current = newVisibleColumnKeys.length;
200
+ setVisibleColumnKeys(newVisibleColumnKeys);
201
+ }, [initialVisibleColumnKeys, defaultVisibleColumnKeys]);
182
202
  var siteSelectorLabel = availableSites && availableSites.length > 1 ? _messages.confluenceSearchModalMessages.insertIssuesTitleManySites : _messages.confluenceSearchModalMessages.insertIssuesTitle;
183
203
  var _useState9 = (0, _react.useState)(initialColumnCustomSizes),
184
204
  _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
@@ -201,6 +221,15 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
201
221
  setWrappedColumnKeys(Array.from(set));
202
222
  }, [wrappedColumnKeys]);
203
223
 
224
+ // TODO: common functionality of all modals refactor in EDM-9573
225
+ var handleVisibleColumnKeysChange = (0, _react.useCallback)(function () {
226
+ var newVisibleColumnKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
227
+ var columnAction = getColumnAction(visibleColumnKeys || [], newVisibleColumnKeys);
228
+ userInteractionActions.current.add(columnAction);
229
+ visibleColumnCount.current = newVisibleColumnKeys.length;
230
+ setVisibleColumnKeys(newVisibleColumnKeys);
231
+ }, [visibleColumnKeys]);
232
+
204
233
  // TODO: further refactoring in EDM-9573
205
234
  // https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/pull-requests/82725/overview?commentId=6798258
206
235
  var confluenceSearchTable = (0, _react.useMemo)(function () {
@@ -215,7 +244,7 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
215
244
  visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
216
245
  onNextPage: onNextPage,
217
246
  onLoadDatasourceDetails: loadDatasourceDetails,
218
- onVisibleColumnKeysChange: setVisibleColumnKeys,
247
+ onVisibleColumnKeysChange: handleVisibleColumnKeysChange,
219
248
  parentContainerRenderInstanceId: modalRenderInstanceId,
220
249
  extensionKey: extensionKey,
221
250
  columnCustomSizes: columnCustomSizes,
@@ -223,11 +252,19 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
223
252
  wrappedColumnKeys: wrappedColumnKeys,
224
253
  onWrappedColumnChange: (0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.datasource-word_wrap') ? onWrappedColumnChange : undefined
225
254
  }));
226
- }, [status, columns, responseItems, hasNextPage, visibleColumnKeys, defaultVisibleColumnKeys, onNextPage, loadDatasourceDetails, setVisibleColumnKeys, modalRenderInstanceId, extensionKey, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange]);
255
+ }, [status, columns, responseItems, hasNextPage, visibleColumnKeys, defaultVisibleColumnKeys, onNextPage, loadDatasourceDetails, handleVisibleColumnKeysChange, modalRenderInstanceId, extensionKey, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange]);
227
256
  var resolvedWithNoResults = status === 'resolved' && !responseItems.length;
228
257
  var hasConfluenceSearchParams = selectedConfluenceSite && searchString;
229
258
  var selectedConfluenceSiteUrl = selectedConfluenceSite === null || selectedConfluenceSite === void 0 ? void 0 : selectedConfluenceSite.url;
230
259
  var confluenceSearchUrl = selectedConfluenceSiteUrl && searchString !== undefined && "".concat(selectedConfluenceSiteUrl, "/wiki/search/?text=").concat(encodeURI(searchString));
260
+ var analyticsPayload = (0, _react.useMemo)(function () {
261
+ return {
262
+ extensionKey: extensionKey,
263
+ destinationObjectTypes: destinationObjectTypes,
264
+ searchCount: searchCount.current,
265
+ actions: Array.from(userInteractionActions.current)
266
+ };
267
+ }, [destinationObjectTypes, extensionKey]);
231
268
  var renderModalContent = (0, _react.useCallback)(function () {
232
269
  if (status === 'rejected') {
233
270
  return (0, _react2.jsx)(_modalLoadingError.ModalLoadingError, null);
@@ -253,10 +290,25 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
253
290
  return confluenceSearchTable;
254
291
  }, [columns.length, selectedConfluenceSiteUrl, confluenceSearchTable, resolvedWithNoResults, status, urlBeingEdited, hasConfluenceSearchParams]);
255
292
  var shouldShowResultsCount = !!totalCount && totalCount !== 1;
256
- var onInsertPressed = (0, _react.useCallback)(function () {
293
+ var onInsertPressed = (0, _react.useCallback)(function (e, analyticsEvent) {
294
+ var _insertButtonClickedE;
257
295
  if (!isParametersSet || !cloudId) {
258
296
  return;
259
297
  }
298
+ var insertButtonClickedEvent = analyticsEvent.update({
299
+ actionSubjectId: 'insert',
300
+ attributes: _objectSpread(_objectSpread({}, analyticsPayload), {}, {
301
+ totalItemCount: totalCount || 0,
302
+ displayedColumnCount: visibleColumnCount.current,
303
+ display: _types.DatasourceDisplay.DATASOURCE_TABLE,
304
+ searchCount: searchCount.current,
305
+ searchMethod: _types.DatasourceSearchMethod.DATASOURCE_SEARCH_QUERY,
306
+ actions: Array.from(userInteractionActions.current)
307
+ }),
308
+ eventType: 'ui'
309
+ });
310
+ var consumerEvent = (_insertButtonClickedE = insertButtonClickedEvent.clone()) !== null && _insertButtonClickedE !== void 0 ? _insertButtonClickedE : undefined;
311
+ insertButtonClickedEvent.fire(_analytics.EVENT_CHANNEL);
260
312
  onInsert((0, _adf.buildDatasourceAdf)({
261
313
  id: datasourceId,
262
314
  parameters: _objectSpread(_objectSpread({}, parameters), {}, {
@@ -278,8 +330,8 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
278
330
  })
279
331
  }
280
332
  }]
281
- }));
282
- }, [isParametersSet, cloudId, onInsert, datasourceId, parameters, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys]);
333
+ }), consumerEvent);
334
+ }, [isParametersSet, cloudId, analyticsPayload, totalCount, onInsert, datasourceId, parameters, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys]);
283
335
  var onSearch = (0, _react.useCallback)(function (newSearchString) {
284
336
  searchCount.current++;
285
337
  userInteractionActions.current.add(_types.DatasourceAction.QUERY_UPDATED);
@@ -12,8 +12,9 @@ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
12
12
  import { Box, xcss } from '@atlaskit/primitives';
13
13
  import LinkUrl from '@atlaskit/smart-card/link-url';
14
14
  import { N800 } from '@atlaskit/theme/colors';
15
+ import { EVENT_CHANNEL } from '../../../analytics';
15
16
  import { componentMetadata } from '../../../analytics/constants';
16
- import { DatasourceAction } from '../../../analytics/types';
17
+ import { DatasourceAction, DatasourceDisplay, DatasourceSearchMethod } from '../../../analytics/types';
17
18
  import { buildDatasourceAdf } from '../../../common/utils/adf';
18
19
  import { fetchMessagesForLocale } from '../../../common/utils/locale/fetch-messages-for-locale';
19
20
  import { useDatasourceTableState } from '../../../hooks/useDatasourceTableState';
@@ -40,6 +41,19 @@ const searchCountStyles = xcss({
40
41
  flex: 1,
41
42
  fontWeight: 600
42
43
  });
44
+
45
+ // TODO: common functionality of all modals refactor in EDM-9573
46
+ export const getColumnAction = (oldVisibleColumnKeys, newVisibleColumnKeys) => {
47
+ const newColumnSize = newVisibleColumnKeys.length;
48
+ const oldColumnSize = oldVisibleColumnKeys.length;
49
+ if (newColumnSize > oldColumnSize) {
50
+ return DatasourceAction.COLUMN_ADDED;
51
+ } else if (newColumnSize < oldColumnSize) {
52
+ return DatasourceAction.COLUMN_REMOVED;
53
+ } else {
54
+ return DatasourceAction.COLUMN_REORDERED;
55
+ }
56
+ };
43
57
  export const PlainConfluenceSearchConfigModal = props => {
44
58
  const {
45
59
  current: modalRenderInstanceId
@@ -62,6 +76,7 @@ export const PlainConfluenceSearchConfigModal = props => {
62
76
  // analytics related parameters
63
77
  const searchCount = useRef(0);
64
78
  const userInteractionActions = useRef(new Set());
79
+ const visibleColumnCount = useRef((visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.length) || 0);
65
80
 
66
81
  // TODO: further refactoring in EDM-9573
67
82
  // https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/pull-requests/82725/overview?commentId=6829210
@@ -126,6 +141,11 @@ export const PlainConfluenceSearchConfigModal = props => {
126
141
  };
127
142
  void fetchSiteDisplayNames();
128
143
  }, []);
144
+ useEffect(() => {
145
+ const newVisibleColumnKeys = !initialVisibleColumnKeys || (initialVisibleColumnKeys || []).length === 0 ? defaultVisibleColumnKeys : initialVisibleColumnKeys;
146
+ visibleColumnCount.current = newVisibleColumnKeys.length;
147
+ setVisibleColumnKeys(newVisibleColumnKeys);
148
+ }, [initialVisibleColumnKeys, defaultVisibleColumnKeys]);
129
149
  const siteSelectorLabel = availableSites && availableSites.length > 1 ? confluenceSearchModalMessages.insertIssuesTitleManySites : confluenceSearchModalMessages.insertIssuesTitle;
130
150
  const [columnCustomSizes, setColumnCustomSizes] = useState(initialColumnCustomSizes);
131
151
  const onColumnResize = useCallback((key, width) => {
@@ -145,6 +165,14 @@ export const PlainConfluenceSearchConfigModal = props => {
145
165
  setWrappedColumnKeys(Array.from(set));
146
166
  }, [wrappedColumnKeys]);
147
167
 
168
+ // TODO: common functionality of all modals refactor in EDM-9573
169
+ const handleVisibleColumnKeysChange = useCallback((newVisibleColumnKeys = []) => {
170
+ const columnAction = getColumnAction(visibleColumnKeys || [], newVisibleColumnKeys);
171
+ userInteractionActions.current.add(columnAction);
172
+ visibleColumnCount.current = newVisibleColumnKeys.length;
173
+ setVisibleColumnKeys(newVisibleColumnKeys);
174
+ }, [visibleColumnKeys]);
175
+
148
176
  // TODO: further refactoring in EDM-9573
149
177
  // https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/pull-requests/82725/overview?commentId=6798258
150
178
  const confluenceSearchTable = useMemo(() => jsx(ContentContainer, {
@@ -158,18 +186,24 @@ export const PlainConfluenceSearchConfigModal = props => {
158
186
  visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
159
187
  onNextPage: onNextPage,
160
188
  onLoadDatasourceDetails: loadDatasourceDetails,
161
- onVisibleColumnKeysChange: setVisibleColumnKeys,
189
+ onVisibleColumnKeysChange: handleVisibleColumnKeysChange,
162
190
  parentContainerRenderInstanceId: modalRenderInstanceId,
163
191
  extensionKey: extensionKey,
164
192
  columnCustomSizes: columnCustomSizes,
165
193
  onColumnResize: onColumnResize,
166
194
  wrappedColumnKeys: wrappedColumnKeys,
167
195
  onWrappedColumnChange: getBooleanFF('platform.linking-platform.datasource-word_wrap') ? onWrappedColumnChange : undefined
168
- })), [status, columns, responseItems, hasNextPage, visibleColumnKeys, defaultVisibleColumnKeys, onNextPage, loadDatasourceDetails, setVisibleColumnKeys, modalRenderInstanceId, extensionKey, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange]);
196
+ })), [status, columns, responseItems, hasNextPage, visibleColumnKeys, defaultVisibleColumnKeys, onNextPage, loadDatasourceDetails, handleVisibleColumnKeysChange, modalRenderInstanceId, extensionKey, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange]);
169
197
  const resolvedWithNoResults = status === 'resolved' && !responseItems.length;
170
198
  const hasConfluenceSearchParams = selectedConfluenceSite && searchString;
171
199
  const selectedConfluenceSiteUrl = selectedConfluenceSite === null || selectedConfluenceSite === void 0 ? void 0 : selectedConfluenceSite.url;
172
200
  const confluenceSearchUrl = selectedConfluenceSiteUrl && searchString !== undefined && `${selectedConfluenceSiteUrl}/wiki/search/?text=${encodeURI(searchString)}`;
201
+ const analyticsPayload = useMemo(() => ({
202
+ extensionKey,
203
+ destinationObjectTypes,
204
+ searchCount: searchCount.current,
205
+ actions: Array.from(userInteractionActions.current)
206
+ }), [destinationObjectTypes, extensionKey]);
173
207
  const renderModalContent = useCallback(() => {
174
208
  if (status === 'rejected') {
175
209
  return jsx(ModalLoadingError, null);
@@ -195,10 +229,26 @@ export const PlainConfluenceSearchConfigModal = props => {
195
229
  return confluenceSearchTable;
196
230
  }, [columns.length, selectedConfluenceSiteUrl, confluenceSearchTable, resolvedWithNoResults, status, urlBeingEdited, hasConfluenceSearchParams]);
197
231
  const shouldShowResultsCount = !!totalCount && totalCount !== 1;
198
- const onInsertPressed = useCallback(() => {
232
+ const onInsertPressed = useCallback((e, analyticsEvent) => {
233
+ var _insertButtonClickedE;
199
234
  if (!isParametersSet || !cloudId) {
200
235
  return;
201
236
  }
237
+ const insertButtonClickedEvent = analyticsEvent.update({
238
+ actionSubjectId: 'insert',
239
+ attributes: {
240
+ ...analyticsPayload,
241
+ totalItemCount: totalCount || 0,
242
+ displayedColumnCount: visibleColumnCount.current,
243
+ display: DatasourceDisplay.DATASOURCE_TABLE,
244
+ searchCount: searchCount.current,
245
+ searchMethod: DatasourceSearchMethod.DATASOURCE_SEARCH_QUERY,
246
+ actions: Array.from(userInteractionActions.current)
247
+ },
248
+ eventType: 'ui'
249
+ });
250
+ const consumerEvent = (_insertButtonClickedE = insertButtonClickedEvent.clone()) !== null && _insertButtonClickedE !== void 0 ? _insertButtonClickedE : undefined;
251
+ insertButtonClickedEvent.fire(EVENT_CHANNEL);
202
252
  onInsert(buildDatasourceAdf({
203
253
  id: datasourceId,
204
254
  parameters: {
@@ -223,8 +273,8 @@ export const PlainConfluenceSearchConfigModal = props => {
223
273
  })
224
274
  }
225
275
  }]
226
- }));
227
- }, [isParametersSet, cloudId, onInsert, datasourceId, parameters, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys]);
276
+ }), consumerEvent);
277
+ }, [isParametersSet, cloudId, analyticsPayload, totalCount, onInsert, datasourceId, parameters, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys]);
228
278
  const onSearch = useCallback(newSearchString => {
229
279
  searchCount.current++;
230
280
  userInteractionActions.current.add(DatasourceAction.QUERY_UPDATED);
@@ -19,8 +19,9 @@ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
19
19
  import { Box, xcss } from '@atlaskit/primitives';
20
20
  import LinkUrl from '@atlaskit/smart-card/link-url';
21
21
  import { N800 } from '@atlaskit/theme/colors';
22
+ import { EVENT_CHANNEL } from '../../../analytics';
22
23
  import { componentMetadata } from '../../../analytics/constants';
23
- import { DatasourceAction } from '../../../analytics/types';
24
+ import { DatasourceAction, DatasourceDisplay, DatasourceSearchMethod } from '../../../analytics/types';
24
25
  import { buildDatasourceAdf } from '../../../common/utils/adf';
25
26
  import { fetchMessagesForLocale } from '../../../common/utils/locale/fetch-messages-for-locale';
26
27
  import { useDatasourceTableState } from '../../../hooks/useDatasourceTableState';
@@ -47,6 +48,19 @@ var searchCountStyles = xcss({
47
48
  flex: 1,
48
49
  fontWeight: 600
49
50
  });
51
+
52
+ // TODO: common functionality of all modals refactor in EDM-9573
53
+ export var getColumnAction = function getColumnAction(oldVisibleColumnKeys, newVisibleColumnKeys) {
54
+ var newColumnSize = newVisibleColumnKeys.length;
55
+ var oldColumnSize = oldVisibleColumnKeys.length;
56
+ if (newColumnSize > oldColumnSize) {
57
+ return DatasourceAction.COLUMN_ADDED;
58
+ } else if (newColumnSize < oldColumnSize) {
59
+ return DatasourceAction.COLUMN_REMOVED;
60
+ } else {
61
+ return DatasourceAction.COLUMN_REORDERED;
62
+ }
63
+ };
50
64
  export var PlainConfluenceSearchConfigModal = function PlainConfluenceSearchConfigModal(props) {
51
65
  var _useRef = useRef(uuidv4()),
52
66
  modalRenderInstanceId = _useRef.current;
@@ -78,6 +92,7 @@ export var PlainConfluenceSearchConfigModal = function PlainConfluenceSearchConf
78
92
  // analytics related parameters
79
93
  var searchCount = useRef(0);
80
94
  var userInteractionActions = useRef(new Set());
95
+ var visibleColumnCount = useRef((visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.length) || 0);
81
96
 
82
97
  // TODO: further refactoring in EDM-9573
83
98
  // https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/pull-requests/82725/overview?commentId=6829210
@@ -170,6 +185,11 @@ export var PlainConfluenceSearchConfigModal = function PlainConfluenceSearchConf
170
185
  }();
171
186
  void fetchSiteDisplayNames();
172
187
  }, []);
188
+ useEffect(function () {
189
+ var newVisibleColumnKeys = !initialVisibleColumnKeys || (initialVisibleColumnKeys || []).length === 0 ? defaultVisibleColumnKeys : initialVisibleColumnKeys;
190
+ visibleColumnCount.current = newVisibleColumnKeys.length;
191
+ setVisibleColumnKeys(newVisibleColumnKeys);
192
+ }, [initialVisibleColumnKeys, defaultVisibleColumnKeys]);
173
193
  var siteSelectorLabel = availableSites && availableSites.length > 1 ? confluenceSearchModalMessages.insertIssuesTitleManySites : confluenceSearchModalMessages.insertIssuesTitle;
174
194
  var _useState9 = useState(initialColumnCustomSizes),
175
195
  _useState10 = _slicedToArray(_useState9, 2),
@@ -192,6 +212,15 @@ export var PlainConfluenceSearchConfigModal = function PlainConfluenceSearchConf
192
212
  setWrappedColumnKeys(Array.from(set));
193
213
  }, [wrappedColumnKeys]);
194
214
 
215
+ // TODO: common functionality of all modals refactor in EDM-9573
216
+ var handleVisibleColumnKeysChange = useCallback(function () {
217
+ var newVisibleColumnKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
218
+ var columnAction = getColumnAction(visibleColumnKeys || [], newVisibleColumnKeys);
219
+ userInteractionActions.current.add(columnAction);
220
+ visibleColumnCount.current = newVisibleColumnKeys.length;
221
+ setVisibleColumnKeys(newVisibleColumnKeys);
222
+ }, [visibleColumnKeys]);
223
+
195
224
  // TODO: further refactoring in EDM-9573
196
225
  // https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/pull-requests/82725/overview?commentId=6798258
197
226
  var confluenceSearchTable = useMemo(function () {
@@ -206,7 +235,7 @@ export var PlainConfluenceSearchConfigModal = function PlainConfluenceSearchConf
206
235
  visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
207
236
  onNextPage: onNextPage,
208
237
  onLoadDatasourceDetails: loadDatasourceDetails,
209
- onVisibleColumnKeysChange: setVisibleColumnKeys,
238
+ onVisibleColumnKeysChange: handleVisibleColumnKeysChange,
210
239
  parentContainerRenderInstanceId: modalRenderInstanceId,
211
240
  extensionKey: extensionKey,
212
241
  columnCustomSizes: columnCustomSizes,
@@ -214,11 +243,19 @@ export var PlainConfluenceSearchConfigModal = function PlainConfluenceSearchConf
214
243
  wrappedColumnKeys: wrappedColumnKeys,
215
244
  onWrappedColumnChange: getBooleanFF('platform.linking-platform.datasource-word_wrap') ? onWrappedColumnChange : undefined
216
245
  }));
217
- }, [status, columns, responseItems, hasNextPage, visibleColumnKeys, defaultVisibleColumnKeys, onNextPage, loadDatasourceDetails, setVisibleColumnKeys, modalRenderInstanceId, extensionKey, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange]);
246
+ }, [status, columns, responseItems, hasNextPage, visibleColumnKeys, defaultVisibleColumnKeys, onNextPage, loadDatasourceDetails, handleVisibleColumnKeysChange, modalRenderInstanceId, extensionKey, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange]);
218
247
  var resolvedWithNoResults = status === 'resolved' && !responseItems.length;
219
248
  var hasConfluenceSearchParams = selectedConfluenceSite && searchString;
220
249
  var selectedConfluenceSiteUrl = selectedConfluenceSite === null || selectedConfluenceSite === void 0 ? void 0 : selectedConfluenceSite.url;
221
250
  var confluenceSearchUrl = selectedConfluenceSiteUrl && searchString !== undefined && "".concat(selectedConfluenceSiteUrl, "/wiki/search/?text=").concat(encodeURI(searchString));
251
+ var analyticsPayload = useMemo(function () {
252
+ return {
253
+ extensionKey: extensionKey,
254
+ destinationObjectTypes: destinationObjectTypes,
255
+ searchCount: searchCount.current,
256
+ actions: Array.from(userInteractionActions.current)
257
+ };
258
+ }, [destinationObjectTypes, extensionKey]);
222
259
  var renderModalContent = useCallback(function () {
223
260
  if (status === 'rejected') {
224
261
  return jsx(ModalLoadingError, null);
@@ -244,10 +281,25 @@ export var PlainConfluenceSearchConfigModal = function PlainConfluenceSearchConf
244
281
  return confluenceSearchTable;
245
282
  }, [columns.length, selectedConfluenceSiteUrl, confluenceSearchTable, resolvedWithNoResults, status, urlBeingEdited, hasConfluenceSearchParams]);
246
283
  var shouldShowResultsCount = !!totalCount && totalCount !== 1;
247
- var onInsertPressed = useCallback(function () {
284
+ var onInsertPressed = useCallback(function (e, analyticsEvent) {
285
+ var _insertButtonClickedE;
248
286
  if (!isParametersSet || !cloudId) {
249
287
  return;
250
288
  }
289
+ var insertButtonClickedEvent = analyticsEvent.update({
290
+ actionSubjectId: 'insert',
291
+ attributes: _objectSpread(_objectSpread({}, analyticsPayload), {}, {
292
+ totalItemCount: totalCount || 0,
293
+ displayedColumnCount: visibleColumnCount.current,
294
+ display: DatasourceDisplay.DATASOURCE_TABLE,
295
+ searchCount: searchCount.current,
296
+ searchMethod: DatasourceSearchMethod.DATASOURCE_SEARCH_QUERY,
297
+ actions: Array.from(userInteractionActions.current)
298
+ }),
299
+ eventType: 'ui'
300
+ });
301
+ var consumerEvent = (_insertButtonClickedE = insertButtonClickedEvent.clone()) !== null && _insertButtonClickedE !== void 0 ? _insertButtonClickedE : undefined;
302
+ insertButtonClickedEvent.fire(EVENT_CHANNEL);
251
303
  onInsert(buildDatasourceAdf({
252
304
  id: datasourceId,
253
305
  parameters: _objectSpread(_objectSpread({}, parameters), {}, {
@@ -269,8 +321,8 @@ export var PlainConfluenceSearchConfigModal = function PlainConfluenceSearchConf
269
321
  })
270
322
  }
271
323
  }]
272
- }));
273
- }, [isParametersSet, cloudId, onInsert, datasourceId, parameters, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys]);
324
+ }), consumerEvent);
325
+ }, [isParametersSet, cloudId, analyticsPayload, totalCount, onInsert, datasourceId, parameters, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys]);
274
326
  var onSearch = useCallback(function (newSearchString) {
275
327
  searchCount.current++;
276
328
  userInteractionActions.current.add(DatasourceAction.QUERY_UPDATED);
@@ -1,5 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { jsx } from '@emotion/react';
3
+ import { DatasourceAction } from '../../../analytics/types';
3
4
  import { ConfluenceSearchConfigModalProps } from '../types';
5
+ export declare const getColumnAction: (oldVisibleColumnKeys: string[], newVisibleColumnKeys: string[]) => DatasourceAction;
4
6
  export declare const PlainConfluenceSearchConfigModal: (props: ConfluenceSearchConfigModalProps) => jsx.JSX.Element;
5
7
  export declare const ConfluenceSearchConfigModal: import("react").ForwardRefExoticComponent<ConfluenceSearchConfigModalProps & import("@atlaskit/analytics-next").WithContextProps & import("react").RefAttributes<any>>;
@@ -1,5 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { jsx } from '@emotion/react';
3
+ import { DatasourceAction } from '../../../analytics/types';
3
4
  import { ConfluenceSearchConfigModalProps } from '../types';
5
+ export declare const getColumnAction: (oldVisibleColumnKeys: string[], newVisibleColumnKeys: string[]) => DatasourceAction;
4
6
  export declare const PlainConfluenceSearchConfigModal: (props: ConfluenceSearchConfigModalProps) => jsx.JSX.Element;
5
7
  export declare const ConfluenceSearchConfigModal: import("react").ForwardRefExoticComponent<ConfluenceSearchConfigModalProps & import("@atlaskit/analytics-next").WithContextProps & import("react").RefAttributes<any>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/link-datasource",
3
- "version": "1.25.1",
3
+ "version": "1.25.2",
4
4
  "description": "UI Components to support linking platform dataset feature",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -36,7 +36,7 @@
36
36
  "@atlaskit/avatar": "^21.5.0",
37
37
  "@atlaskit/avatar-group": "^9.5.0",
38
38
  "@atlaskit/badge": "^15.3.0",
39
- "@atlaskit/button": "^17.9.0",
39
+ "@atlaskit/button": "^17.10.0",
40
40
  "@atlaskit/dropdown-menu": "^12.8.0",
41
41
  "@atlaskit/editor-prosemirror": "3.0.0",
42
42
  "@atlaskit/empty-state": "^7.7.0",