@atlaskit/link-datasource 2.3.3 → 2.3.4

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 (42) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/cjs/contexts/datasource-experience-id/index.js +28 -0
  3. package/dist/cjs/ui/assets-modal/modal/index.js +11 -10
  4. package/dist/cjs/ui/assets-modal/modal/render-assets-content/index.js +2 -4
  5. package/dist/cjs/ui/confluence-search-modal/modal/index.js +8 -7
  6. package/dist/cjs/ui/datasource-table-view/datasourceTableView.js +9 -9
  7. package/dist/cjs/ui/issue-like-table/column-picker/index.js +6 -5
  8. package/dist/cjs/ui/issue-like-table/index.js +9 -9
  9. package/dist/cjs/ui/jira-issues-modal/modal/index.js +15 -13
  10. package/dist/es2019/contexts/datasource-experience-id/index.js +19 -0
  11. package/dist/es2019/ui/assets-modal/modal/index.js +9 -11
  12. package/dist/es2019/ui/assets-modal/modal/render-assets-content/index.js +2 -4
  13. package/dist/es2019/ui/confluence-search-modal/modal/index.js +6 -8
  14. package/dist/es2019/ui/datasource-table-view/datasourceTableView.js +7 -10
  15. package/dist/es2019/ui/issue-like-table/column-picker/index.js +6 -5
  16. package/dist/es2019/ui/issue-like-table/index.js +9 -9
  17. package/dist/es2019/ui/jira-issues-modal/modal/index.js +12 -13
  18. package/dist/esm/contexts/datasource-experience-id/index.js +20 -0
  19. package/dist/esm/ui/assets-modal/modal/index.js +11 -10
  20. package/dist/esm/ui/assets-modal/modal/render-assets-content/index.js +2 -4
  21. package/dist/esm/ui/confluence-search-modal/modal/index.js +8 -7
  22. package/dist/esm/ui/datasource-table-view/datasourceTableView.js +9 -9
  23. package/dist/esm/ui/issue-like-table/column-picker/index.js +6 -5
  24. package/dist/esm/ui/issue-like-table/index.js +9 -9
  25. package/dist/esm/ui/jira-issues-modal/modal/index.js +14 -12
  26. package/dist/types/contexts/datasource-experience-id/index.d.ts +4 -0
  27. package/dist/types/ui/assets-modal/modal/render-assets-content/index.d.ts +0 -1
  28. package/dist/types/ui/issue-like-table/column-picker/index.d.ts +1 -1
  29. package/dist/types/ui/issue-like-table/column-picker/types.d.ts +0 -1
  30. package/dist/types/ui/issue-like-table/index.d.ts +1 -1
  31. package/dist/types/ui/issue-like-table/types.d.ts +0 -4
  32. package/dist/types/ui/jira-issues-modal/modal/index.d.ts +0 -2
  33. package/dist/types-ts4.5/contexts/datasource-experience-id/index.d.ts +4 -0
  34. package/dist/types-ts4.5/ui/assets-modal/modal/render-assets-content/index.d.ts +0 -1
  35. package/dist/types-ts4.5/ui/issue-like-table/column-picker/index.d.ts +1 -1
  36. package/dist/types-ts4.5/ui/issue-like-table/column-picker/types.d.ts +0 -1
  37. package/dist/types-ts4.5/ui/issue-like-table/index.d.ts +1 -1
  38. package/dist/types-ts4.5/ui/issue-like-table/types.d.ts +0 -4
  39. package/dist/types-ts4.5/ui/jira-issues-modal/modal/index.d.ts +0 -2
  40. package/examples-helpers/buildIssueLikeTable.tsx +12 -9
  41. package/examples-helpers/buildJiraIssuesTable.tsx +8 -5
  42. package/package.json +2 -2
@@ -1,7 +1,6 @@
1
1
  /** @jsx jsx */
2
2
  import { useCallback, useEffect, useRef } from 'react';
3
3
  import { css, jsx } from '@emotion/react';
4
- import { v4 as uuidv4 } from 'uuid';
5
4
  import { withAnalyticsContext } from '@atlaskit/analytics-next';
6
5
  import { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
7
6
  import { useDatasourceAnalyticsEvents } from '../../analytics';
@@ -10,6 +9,7 @@ import { startUfoExperience } from '../../analytics/ufoExperiences';
10
9
  import { useColumnPickerRenderedFailedUfoExperience } from '../../analytics/ufoExperiences/hooks/useColumnPickerRenderedFailedUfoExperience';
11
10
  import { useDataRenderedUfoExperience } from '../../analytics/ufoExperiences/hooks/useDataRenderedUfoExperience';
12
11
  import { fetchMessagesForLocale } from '../../common/utils/locale/fetch-messages-for-locale';
12
+ import { DatasourceExperienceIdProvider, useDatasourceExperienceId } from '../../contexts/datasource-experience-id';
13
13
  import { useDatasourceTableState } from '../../hooks/useDatasourceTableState';
14
14
  import i18nEN from '../../i18n/en';
15
15
  import { ScrollableContainerHeight } from '../../ui/issue-like-table/styled';
@@ -56,9 +56,7 @@ const DatasourceTableViewWithoutAnalytics = ({
56
56
  const {
57
57
  fireEvent
58
58
  } = useDatasourceAnalyticsEvents();
59
- const {
60
- current: tableRenderInstanceId
61
- } = useRef(uuidv4());
59
+ const experienceId = useDatasourceExperienceId();
62
60
  const visibleColumnCount = useRef((visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.length) || 0);
63
61
 
64
62
  /* Need this to make sure that the datasource in the editor gets updated new info if any edits are made in the modal
@@ -97,13 +95,13 @@ const DatasourceTableViewWithoutAnalytics = ({
97
95
  if (shouldStartUfoExperience) {
98
96
  startUfoExperience({
99
97
  name: 'datasource-rendered'
100
- }, tableRenderInstanceId);
98
+ }, experienceId);
101
99
  }
102
- }, [datasourceId, parameters, status, tableRenderInstanceId, visibleColumnKeys]);
103
- useColumnPickerRenderedFailedUfoExperience(status, tableRenderInstanceId);
100
+ }, [datasourceId, parameters, status, experienceId, visibleColumnKeys]);
101
+ useColumnPickerRenderedFailedUfoExperience(status, experienceId);
104
102
  useDataRenderedUfoExperience({
105
103
  status,
106
- experienceId: tableRenderInstanceId,
104
+ experienceId: experienceId,
107
105
  itemCount: responseItems.length,
108
106
  extensionKey
109
107
  });
@@ -167,7 +165,6 @@ const DatasourceTableViewWithoutAnalytics = ({
167
165
  wrappedColumnKeys: wrappedColumnKeys,
168
166
  onWrappedColumnChange: onWrappedColumnChange,
169
167
  scrollableContainerHeight: ScrollableContainerHeight,
170
- parentContainerRenderInstanceId: tableRenderInstanceId,
171
168
  extensionKey: extensionKey
172
169
  }) : jsx(EmptyState, {
173
170
  testId: "datasource-table-view-skeleton",
@@ -180,4 +177,4 @@ const DatasourceTableViewWithoutAnalytics = ({
180
177
  url: url
181
178
  })));
182
179
  };
183
- export const DatasourceTableView = withAnalyticsContext(componentMetadata.tableView)(DatasourceTableViewWithoutAnalytics);
180
+ export const DatasourceTableView = withAnalyticsContext(componentMetadata.tableView)(props => jsx(DatasourceExperienceIdProvider, null, jsx(DatasourceTableViewWithoutAnalytics, props)));
@@ -9,16 +9,17 @@ import ChevronDownIcon from '@atlaskit/icon/glyph/chevron-down';
9
9
  import { CheckboxOption, createFilter, PopupSelect } from '@atlaskit/select';
10
10
  import Tooltip from '@atlaskit/tooltip';
11
11
  import { succeedUfoExperience } from '../../../analytics/ufoExperiences';
12
+ import { useDatasourceExperienceId } from '../../../contexts/datasource-experience-id';
12
13
  import { ConcatenatedMenuList } from './concatenated-menu-list';
13
14
  import { columnPickerMessages } from './messages';
14
15
  export const ColumnPicker = ({
15
16
  columns,
16
17
  selectedColumnKeys,
17
18
  onSelectedColumnKeysChange,
18
- onOpen,
19
- parentContainerRenderInstanceId
19
+ onOpen
20
20
  }) => {
21
21
  const intl = useIntl();
22
+ const experienceId = useDatasourceExperienceId();
22
23
  const [allOptions, setAllOptions] = useState([]);
23
24
  const pickerRef = useRef(null);
24
25
  const mapColumnToOption = useCallback(({
@@ -82,13 +83,13 @@ export const ColumnPicker = ({
82
83
  }, [allOptions]);
83
84
  useEffect(() => {
84
85
  if (allOptions.length) {
85
- if (parentContainerRenderInstanceId) {
86
+ if (experienceId) {
86
87
  succeedUfoExperience({
87
88
  name: 'column-picker-rendered'
88
- }, parentContainerRenderInstanceId);
89
+ }, experienceId);
89
90
  }
90
91
  }
91
- }, [allOptions, parentContainerRenderInstanceId]);
92
+ }, [allOptions, experienceId]);
92
93
  return jsx(PopupSelect, {
93
94
  classNamePrefix: 'column-picker-popup',
94
95
  testId: 'column-picker-popup',
@@ -18,6 +18,7 @@ import Tooltip from '@atlaskit/tooltip';
18
18
  import { WidthObserver } from '@atlaskit/width-detector';
19
19
  import { startUfoExperience, succeedUfoExperience } from '../../analytics/ufoExperiences';
20
20
  import { stickyTableHeadersIndex } from '../../common/zindex';
21
+ import { useDatasourceExperienceId } from '../../contexts/datasource-experience-id';
21
22
  import { ColumnPicker } from './column-picker';
22
23
  import { DragColumnPreview } from './drag-column-preview';
23
24
  import { DraggableTableHeading } from './draggable-table-heading';
@@ -317,11 +318,11 @@ export const IssueLikeDataTableView = ({
317
318
  status,
318
319
  hasNextPage,
319
320
  scrollableContainerHeight,
320
- parentContainerRenderInstanceId,
321
321
  extensionKey
322
322
  }) => {
323
323
  const tableId = useMemo(() => Symbol('unique-id'), []);
324
324
  const intl = useIntl();
325
+ const experienceId = useDatasourceExperienceId();
325
326
  const tableHeaderRowRef = useRef(null);
326
327
  const [lastRowElement, setLastRowElement] = useState(null);
327
328
  const [hasFullSchema, setHasFullSchema] = useState(false);
@@ -346,12 +347,12 @@ export const IssueLikeDataTableView = ({
346
347
  }
347
348
  }, [columns, visibleColumnKeys, hasFullSchema]);
348
349
  useEffect(() => {
349
- if (parentContainerRenderInstanceId && status === 'resolved') {
350
+ if (experienceId && status === 'resolved') {
350
351
  succeedUfoExperience({
351
352
  name: 'datasource-rendered'
352
- }, parentContainerRenderInstanceId);
353
+ }, experienceId);
353
354
  }
354
- }, [parentContainerRenderInstanceId, status]);
355
+ }, [experienceId, status]);
355
356
  const visibleSortedColumns = useMemo(() => visibleColumnKeys.map(visibleKey => orderedColumns.find(({
356
357
  key
357
358
  }) => visibleKey === key)).filter(Boolean), [orderedColumns, visibleColumnKeys]);
@@ -536,13 +537,13 @@ export const IssueLikeDataTableView = ({
536
537
  if (hasFullSchema) {
537
538
  return;
538
539
  }
539
- if (parentContainerRenderInstanceId) {
540
+ if (experienceId) {
540
541
  startUfoExperience({
541
542
  name: 'column-picker-rendered',
542
543
  metadata: {
543
544
  extensionKey: extensionKey !== null && extensionKey !== void 0 ? extensionKey : undefined
544
545
  }
545
- }, parentContainerRenderInstanceId);
546
+ }, experienceId);
546
547
  }
547
548
  try {
548
549
  await onLoadDatasourceDetails();
@@ -550,7 +551,7 @@ export const IssueLikeDataTableView = ({
550
551
  } catch (e) {
551
552
  setHasFullSchema(false);
552
553
  }
553
- }, [parentContainerRenderInstanceId, extensionKey, hasFullSchema, onLoadDatasourceDetails]);
554
+ }, [experienceId, extensionKey, hasFullSchema, onLoadDatasourceDetails]);
554
555
  const isEditable = onVisibleColumnKeysChange && hasData;
555
556
  return jsx("div", {
556
557
  /* There is required contentEditable={true} in editor-card-plugin
@@ -639,8 +640,7 @@ export const IssueLikeDataTableView = ({
639
640
  columns: hasFullSchema ? orderedColumns : [],
640
641
  selectedColumnKeys: hasFullSchema ? visibleColumnKeys : [],
641
642
  onSelectedColumnKeysChange: onSelectedColumnKeysChange,
642
- onOpen: handlePickerOpen,
643
- parentContainerRenderInstanceId: parentContainerRenderInstanceId
643
+ onOpen: handlePickerOpen
644
644
  })))), jsx("tbody", {
645
645
  css: noDefaultBorderStyles,
646
646
  "data-testid": testId && `${testId}--body`
@@ -3,7 +3,6 @@ import _extends from "@babel/runtime/helpers/extends";
3
3
  import { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
4
  import { css, jsx } from '@emotion/react';
5
5
  import { FormattedMessage, FormattedNumber } from 'react-intl-next';
6
- import { v4 as uuidv4 } from 'uuid';
7
6
  import { withAnalyticsContext } from '@atlaskit/analytics-next';
8
7
  import Button from '@atlaskit/button/standard-button';
9
8
  import { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
@@ -20,6 +19,7 @@ import { useDataRenderedUfoExperience } from '../../../analytics/ufoExperiences/
20
19
  import { mapSearchMethod } from '../../../analytics/utils';
21
20
  import { buildDatasourceAdf } from '../../../common/utils/adf';
22
21
  import { fetchMessagesForLocale } from '../../../common/utils/locale/fetch-messages-for-locale';
22
+ import { DatasourceExperienceIdProvider, useDatasourceExperienceId } from '../../../contexts/datasource-experience-id';
23
23
  import { useDatasourceTableState } from '../../../hooks/useDatasourceTableState';
24
24
  import i18nEN from '../../../i18n/en';
25
25
  import { useAvailableSites } from '../../../services/useAvailableSites';
@@ -56,7 +56,7 @@ const getDisplayValue = (currentViewMode, itemCount) => {
56
56
  return itemCount === 1 ? DatasourceDisplay.INLINE : DatasourceDisplay.DATASOURCE_INLINE;
57
57
  };
58
58
  const jqlSupportDocumentLink = 'https://support.atlassian.com/jira-service-management-cloud/docs/use-advanced-search-with-jira-query-language-jql/';
59
- export const PlainJiraIssuesConfigModal = props => {
59
+ const PlainJiraIssuesConfigModal = props => {
60
60
  const {
61
61
  datasourceId,
62
62
  columnCustomSizes: initialColumnCustomSizes,
@@ -120,9 +120,7 @@ export const PlainJiraIssuesConfigModal = props => {
120
120
  const {
121
121
  fireEvent
122
122
  } = useDatasourceAnalyticsEvents();
123
- const {
124
- current: modalRenderInstanceId
125
- } = useRef(uuidv4());
123
+ const experienceId = useDatasourceExperienceId();
126
124
  const analyticsPayload = useMemo(() => ({
127
125
  extensionKey,
128
126
  destinationObjectTypes
@@ -146,12 +144,12 @@ export const PlainJiraIssuesConfigModal = props => {
146
144
  if (shouldStartUfoExperience) {
147
145
  startUfoExperience({
148
146
  name: 'datasource-rendered'
149
- }, modalRenderInstanceId);
147
+ }, experienceId);
150
148
  }
151
- }, [modalRenderInstanceId, status]);
149
+ }, [experienceId, status]);
152
150
  useDataRenderedUfoExperience({
153
151
  status,
154
- experienceId: modalRenderInstanceId,
152
+ experienceId: experienceId,
155
153
  itemCount: responseItems.length,
156
154
  canBeLink: currentViewMode === 'inline',
157
155
  extensionKey
@@ -212,7 +210,7 @@ export const PlainJiraIssuesConfigModal = props => {
212
210
  fireCountViewedEvent();
213
211
  }
214
212
  }, [currentViewMode, status, fireIssueViewAnalytics, fireCountViewedEvent]);
215
- useColumnPickerRenderedFailedUfoExperience(status, modalRenderInstanceId);
213
+ useColumnPickerRenderedFailedUfoExperience(status, experienceId);
216
214
  const onSearch = useCallback((newParameters, {
217
215
  searchMethod,
218
216
  basicFilterSelections,
@@ -362,13 +360,12 @@ export const PlainJiraIssuesConfigModal = props => {
362
360
  onNextPage: handleOnNextPage,
363
361
  onLoadDatasourceDetails: loadDatasourceDetails,
364
362
  onVisibleColumnKeysChange: handleVisibleColumnKeysChange,
365
- parentContainerRenderInstanceId: modalRenderInstanceId,
366
363
  extensionKey: extensionKey,
367
364
  columnCustomSizes: columnCustomSizes,
368
365
  onColumnResize: onColumnResize,
369
366
  wrappedColumnKeys: wrappedColumnKeys,
370
367
  onWrappedColumnChange: getBooleanFF('platform.linking-platform.datasource-word_wrap') ? onWrappedColumnChange : undefined
371
- })), [status, columns, responseItems, hasNextPage, visibleColumnKeys, defaultVisibleColumnKeys, handleOnNextPage, loadDatasourceDetails, handleVisibleColumnKeysChange, modalRenderInstanceId, extensionKey, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange]);
368
+ })), [status, columns, responseItems, hasNextPage, visibleColumnKeys, defaultVisibleColumnKeys, handleOnNextPage, loadDatasourceDetails, handleVisibleColumnKeysChange, extensionKey, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange]);
372
369
  const renderCountModeContent = useCallback(() => {
373
370
  const selectedJiraSiteUrl = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
374
371
  if (status === 'unauthorized') {
@@ -470,7 +467,9 @@ export const PlainJiraIssuesConfigModal = props => {
470
467
  }, jsx(LinkUrl, {
471
468
  href: jqlUrl,
472
469
  target: "_blank",
473
- testId: "item-count-url",
470
+ testId: "item-count-url"
471
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
472
+ ,
474
473
  style: {
475
474
  color: `var(--ds-text-accent-gray, ${N800})`
476
475
  }
@@ -504,4 +503,4 @@ const contextData = {
504
503
  ...analyticsContextAttributes
505
504
  }
506
505
  };
507
- export const JiraIssuesConfigModal = withAnalyticsContext(contextData)(PlainJiraIssuesConfigModal);
506
+ export const JiraIssuesConfigModal = withAnalyticsContext(contextData)(props => jsx(DatasourceExperienceIdProvider, null, jsx(PlainJiraIssuesConfigModal, props)));
@@ -0,0 +1,20 @@
1
+ import React, { useContext, useMemo } from 'react';
2
+ import { v4 as uuidv4 } from 'uuid';
3
+ var DatasourceExperienceIdContext = /*#__PURE__*/React.createContext(undefined);
4
+ var DatasourceExperienceIdProvider = function DatasourceExperienceIdProvider(_ref) {
5
+ var children = _ref.children;
6
+ var value = useMemo(function () {
7
+ return uuidv4();
8
+ }, []);
9
+ return /*#__PURE__*/React.createElement(DatasourceExperienceIdContext.Provider, {
10
+ value: value
11
+ }, children);
12
+ };
13
+ var useDatasourceExperienceId = function useDatasourceExperienceId() {
14
+ var context = useContext(DatasourceExperienceIdContext);
15
+ if (!context) {
16
+ throw Error('useDatasourceExperienceId() must be wrapped in <DatasourceExperienceIdProvider>');
17
+ }
18
+ return context;
19
+ };
20
+ export { DatasourceExperienceIdProvider, useDatasourceExperienceId };
@@ -7,7 +7,6 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
7
7
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
8
8
  import { css, jsx } from '@emotion/react';
9
9
  import { FormattedMessage } from 'react-intl-next';
10
- import { v4 as uuidv4 } from 'uuid';
11
10
  import { withAnalyticsContext } from '@atlaskit/analytics-next';
12
11
  import Button from '@atlaskit/button/standard-button';
13
12
  import { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
@@ -20,6 +19,7 @@ import { useColumnPickerRenderedFailedUfoExperience } from '../../../analytics/u
20
19
  import { useDataRenderedUfoExperience } from '../../../analytics/ufoExperiences/hooks/useDataRenderedUfoExperience';
21
20
  import { buildDatasourceAdf } from '../../../common/utils/adf';
22
21
  import { fetchMessagesForLocale } from '../../../common/utils/locale/fetch-messages-for-locale';
22
+ import { DatasourceExperienceIdProvider, useDatasourceExperienceId } from '../../../contexts/datasource-experience-id';
23
23
  import { useAssetsClient } from '../../../hooks/useAssetsClient';
24
24
  import { useDatasourceTableState } from '../../../hooks/useDatasourceTableState';
25
25
  import i18nEN from '../../../i18n/en';
@@ -35,6 +35,7 @@ import { MODAL_HEIGHT, RenderAssetsContent } from './render-assets-content';
35
35
  var modalBodyErrorWrapperStyles = css({
36
36
  alignItems: 'center',
37
37
  display: 'grid',
38
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/ui-styling-standard/no-unsafe-values
38
39
  height: MODAL_HEIGHT
39
40
  });
40
41
  var AssetsModalTitle = jsx(ModalTitle, null, jsx(FormattedMessage, modalMessages.insertObjectsTitle));
@@ -66,8 +67,7 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
66
67
  setErrorState = _useState10[1];
67
68
  var _useDatasourceAnalyti = useDatasourceAnalyticsEvents(),
68
69
  fireEvent = _useDatasourceAnalyti.fireEvent;
69
- var _useRef = useRef(uuidv4()),
70
- modalRenderInstanceId = _useRef.current;
70
+ var experienceId = useDatasourceExperienceId();
71
71
  var _useAssetsClient = useAssetsClient(initialParameters),
72
72
  workspaceId = _useAssetsClient.workspaceId,
73
73
  workspaceError = _useAssetsClient.workspaceError,
@@ -176,17 +176,17 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
176
176
  if (shouldStartUfoExperience) {
177
177
  startUfoExperience({
178
178
  name: 'datasource-rendered'
179
- }, modalRenderInstanceId);
179
+ }, experienceId);
180
180
  }
181
- }, [modalRenderInstanceId, status]);
181
+ }, [experienceId, status]);
182
182
  useDataRenderedUfoExperience({
183
183
  status: status,
184
- experienceId: modalRenderInstanceId,
184
+ experienceId: experienceId,
185
185
  itemCount: responseItems.length,
186
186
  canBeLink: false,
187
187
  extensionKey: extensionKey
188
188
  });
189
- useColumnPickerRenderedFailedUfoExperience(status, modalRenderInstanceId);
189
+ useColumnPickerRenderedFailedUfoExperience(status, experienceId);
190
190
  /* ------------------------------ END OBSERVABILITY ------------------------------ */
191
191
 
192
192
  var onVisibleColumnKeysChange = useCallback(function (visibleColumnKeys) {
@@ -343,8 +343,7 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
343
343
  hasNextPage: hasNextPage,
344
344
  loadDatasourceDetails: loadDatasourceDetails,
345
345
  columns: columns,
346
- defaultVisibleColumnKeys: defaultVisibleColumnKeys,
347
- modalRenderInstanceId: modalRenderInstanceId
346
+ defaultVisibleColumnKeys: defaultVisibleColumnKeys
348
347
  })), jsx(ModalFooter, null, jsx(CancelButton, {
349
348
  onCancel: onCancel,
350
349
  getAnalyticsPayload: getCancelButtonAnalyticsPayload,
@@ -369,4 +368,6 @@ var analyticsContextData = _objectSpread(_objectSpread({}, componentMetadata.con
369
368
  var contextData = _objectSpread(_objectSpread({}, analyticsContextData), {}, {
370
369
  attributes: _objectSpread({}, analyticsContextAttributes)
371
370
  });
372
- export var AssetsConfigModal = withAnalyticsContext(contextData)(PlainAssetsConfigModal);
371
+ export var AssetsConfigModal = withAnalyticsContext(contextData)(function (props) {
372
+ return jsx(DatasourceExperienceIdProvider, null, jsx(PlainAssetsConfigModal, props));
373
+ });
@@ -65,7 +65,6 @@ export var RenderAssetsContent = function RenderAssetsContent(props) {
65
65
  columns = props.columns,
66
66
  defaultVisibleColumnKeys = props.defaultVisibleColumnKeys,
67
67
  onVisibleColumnKeysChange = props.onVisibleColumnKeysChange,
68
- modalRenderInstanceId = props.modalRenderInstanceId,
69
68
  isFetchingInitialData = props.isFetchingInitialData;
70
69
  var resolvedWithNoResults = status === 'resolved' && !responseItems.length;
71
70
  var issueLikeDataTableView = useMemo(function () {
@@ -80,10 +79,9 @@ export var RenderAssetsContent = function RenderAssetsContent(props) {
80
79
  visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
81
80
  onNextPage: onNextPage,
82
81
  onLoadDatasourceDetails: loadDatasourceDetails,
83
- onVisibleColumnKeysChange: onVisibleColumnKeysChange,
84
- parentContainerRenderInstanceId: modalRenderInstanceId
82
+ onVisibleColumnKeysChange: onVisibleColumnKeysChange
85
83
  }));
86
- }, [columns, defaultVisibleColumnKeys, hasNextPage, loadDatasourceDetails, onNextPage, onVisibleColumnKeysChange, responseItems, status, visibleColumnKeys, modalRenderInstanceId]);
84
+ }, [columns, defaultVisibleColumnKeys, hasNextPage, loadDatasourceDetails, onNextPage, onVisibleColumnKeysChange, responseItems, status, visibleColumnKeys]);
87
85
  var renderAssetsContentView = useCallback(function () {
88
86
  if (isFetchingInitialData) {
89
87
  // Placing this check first as it's a priority before all others
@@ -7,7 +7,6 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
7
7
  import { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react';
8
8
  import { jsx } from '@emotion/react';
9
9
  import { FormattedMessage, FormattedNumber } from 'react-intl-next';
10
- import { v4 as uuidv4 } from 'uuid';
11
10
  import { withAnalyticsContext } from '@atlaskit/analytics-next';
12
11
  import Button from '@atlaskit/button/standard-button';
13
12
  import { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
@@ -21,6 +20,7 @@ import { componentMetadata } from '../../../analytics/constants';
21
20
  import { DatasourceAction, DatasourceDisplay, DatasourceSearchMethod } from '../../../analytics/types';
22
21
  import { buildDatasourceAdf } from '../../../common/utils/adf';
23
22
  import { fetchMessagesForLocale } from '../../../common/utils/locale/fetch-messages-for-locale';
23
+ import { DatasourceExperienceIdProvider } from '../../../contexts/datasource-experience-id';
24
24
  import { useDatasourceTableState } from '../../../hooks/useDatasourceTableState';
25
25
  import i18nEN from '../../../i18n/en';
26
26
  import { useAvailableSites } from '../../../services/useAvailableSites';
@@ -52,8 +52,6 @@ var searchCountStyles = xcss({
52
52
  fontWeight: 600
53
53
  });
54
54
  export var PlainConfluenceSearchConfigModal = function PlainConfluenceSearchConfigModal(props) {
55
- var _useRef = useRef(uuidv4()),
56
- modalRenderInstanceId = _useRef.current;
57
55
  var datasourceId = props.datasourceId,
58
56
  initialColumnCustomSizes = props.columnCustomSizes,
59
57
  initialWrappedColumnKeys = props.wrappedColumnKeys,
@@ -210,14 +208,13 @@ export var PlainConfluenceSearchConfigModal = function PlainConfluenceSearchConf
210
208
  onNextPage: onNextPage,
211
209
  onLoadDatasourceDetails: loadDatasourceDetails,
212
210
  onVisibleColumnKeysChange: handleVisibleColumnKeysChange,
213
- parentContainerRenderInstanceId: modalRenderInstanceId,
214
211
  extensionKey: extensionKey,
215
212
  columnCustomSizes: columnCustomSizes,
216
213
  onColumnResize: onColumnResize,
217
214
  wrappedColumnKeys: wrappedColumnKeys,
218
215
  onWrappedColumnChange: getBooleanFF('platform.linking-platform.datasource-word_wrap') ? onWrappedColumnChange : undefined
219
216
  }));
220
- }, [status, columns, responseItems, hasNextPage, visibleColumnKeys, defaultVisibleColumnKeys, onNextPage, loadDatasourceDetails, handleVisibleColumnKeysChange, modalRenderInstanceId, extensionKey, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange]);
217
+ }, [status, columns, responseItems, hasNextPage, visibleColumnKeys, defaultVisibleColumnKeys, onNextPage, loadDatasourceDetails, handleVisibleColumnKeysChange, extensionKey, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange]);
221
218
  var resolvedWithNoResults = status === 'resolved' && !responseItems.length;
222
219
  var hasConfluenceSearchParams = selectedConfluenceSite && searchString;
223
220
  var selectedConfluenceSiteUrl = selectedConfluenceSite === null || selectedConfluenceSite === void 0 ? void 0 : selectedConfluenceSite.url;
@@ -444,7 +441,9 @@ export var PlainConfluenceSearchConfigModal = function PlainConfluenceSearchConf
444
441
  }, jsx(LinkUrl, {
445
442
  href: confluenceSearchUrl,
446
443
  target: "_blank",
447
- testId: "item-count-url",
444
+ testId: "item-count-url"
445
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop
446
+ ,
448
447
  style: {
449
448
  color: "var(--ds-text-accent-gray, ".concat(N800, ")")
450
449
  }
@@ -474,4 +473,6 @@ var analyticsContextData = _objectSpread(_objectSpread({}, componentMetadata.con
474
473
  var contextData = _objectSpread(_objectSpread({}, analyticsContextData), {}, {
475
474
  attributes: _objectSpread({}, analyticsContextAttributes)
476
475
  });
477
- export var ConfluenceSearchConfigModal = withAnalyticsContext(contextData)(PlainConfluenceSearchConfigModal);
476
+ export var ConfluenceSearchConfigModal = withAnalyticsContext(contextData)(function (props) {
477
+ return jsx(DatasourceExperienceIdProvider, null, jsx(PlainConfluenceSearchConfigModal, props));
478
+ });
@@ -1,7 +1,6 @@
1
1
  /** @jsx jsx */
2
2
  import { useCallback, useEffect, useRef } from 'react';
3
3
  import { css, jsx } from '@emotion/react';
4
- import { v4 as uuidv4 } from 'uuid';
5
4
  import { withAnalyticsContext } from '@atlaskit/analytics-next';
6
5
  import { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
7
6
  import { useDatasourceAnalyticsEvents } from '../../analytics';
@@ -10,6 +9,7 @@ import { startUfoExperience } from '../../analytics/ufoExperiences';
10
9
  import { useColumnPickerRenderedFailedUfoExperience } from '../../analytics/ufoExperiences/hooks/useColumnPickerRenderedFailedUfoExperience';
11
10
  import { useDataRenderedUfoExperience } from '../../analytics/ufoExperiences/hooks/useDataRenderedUfoExperience';
12
11
  import { fetchMessagesForLocale } from '../../common/utils/locale/fetch-messages-for-locale';
12
+ import { DatasourceExperienceIdProvider, useDatasourceExperienceId } from '../../contexts/datasource-experience-id';
13
13
  import { useDatasourceTableState } from '../../hooks/useDatasourceTableState';
14
14
  import i18nEN from '../../i18n/en';
15
15
  import { ScrollableContainerHeight } from '../../ui/issue-like-table/styled';
@@ -54,8 +54,7 @@ var DatasourceTableViewWithoutAnalytics = function DatasourceTableViewWithoutAna
54
54
  authDetails = _useDatasourceTableSt.authDetails;
55
55
  var _useDatasourceAnalyti = useDatasourceAnalyticsEvents(),
56
56
  fireEvent = _useDatasourceAnalyti.fireEvent;
57
- var _useRef = useRef(uuidv4()),
58
- tableRenderInstanceId = _useRef.current;
57
+ var experienceId = useDatasourceExperienceId();
59
58
  var visibleColumnCount = useRef((visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.length) || 0);
60
59
 
61
60
  /* Need this to make sure that the datasource in the editor gets updated new info if any edits are made in the modal
@@ -94,13 +93,13 @@ var DatasourceTableViewWithoutAnalytics = function DatasourceTableViewWithoutAna
94
93
  if (shouldStartUfoExperience) {
95
94
  startUfoExperience({
96
95
  name: 'datasource-rendered'
97
- }, tableRenderInstanceId);
96
+ }, experienceId);
98
97
  }
99
- }, [datasourceId, parameters, status, tableRenderInstanceId, visibleColumnKeys]);
100
- useColumnPickerRenderedFailedUfoExperience(status, tableRenderInstanceId);
98
+ }, [datasourceId, parameters, status, experienceId, visibleColumnKeys]);
99
+ useColumnPickerRenderedFailedUfoExperience(status, experienceId);
101
100
  useDataRenderedUfoExperience({
102
101
  status: status,
103
- experienceId: tableRenderInstanceId,
102
+ experienceId: experienceId,
104
103
  itemCount: responseItems.length,
105
104
  extensionKey: extensionKey
106
105
  });
@@ -164,7 +163,6 @@ var DatasourceTableViewWithoutAnalytics = function DatasourceTableViewWithoutAna
164
163
  wrappedColumnKeys: wrappedColumnKeys,
165
164
  onWrappedColumnChange: onWrappedColumnChange,
166
165
  scrollableContainerHeight: ScrollableContainerHeight,
167
- parentContainerRenderInstanceId: tableRenderInstanceId,
168
166
  extensionKey: extensionKey
169
167
  }) : jsx(EmptyState, {
170
168
  testId: "datasource-table-view-skeleton",
@@ -177,4 +175,6 @@ var DatasourceTableViewWithoutAnalytics = function DatasourceTableViewWithoutAna
177
175
  url: url
178
176
  })));
179
177
  };
180
- export var DatasourceTableView = withAnalyticsContext(componentMetadata.tableView)(DatasourceTableViewWithoutAnalytics);
178
+ export var DatasourceTableView = withAnalyticsContext(componentMetadata.tableView)(function (props) {
179
+ return jsx(DatasourceExperienceIdProvider, null, jsx(DatasourceTableViewWithoutAnalytics, props));
180
+ });
@@ -13,15 +13,16 @@ import ChevronDownIcon from '@atlaskit/icon/glyph/chevron-down';
13
13
  import { CheckboxOption, createFilter, PopupSelect } from '@atlaskit/select';
14
14
  import Tooltip from '@atlaskit/tooltip';
15
15
  import { succeedUfoExperience } from '../../../analytics/ufoExperiences';
16
+ import { useDatasourceExperienceId } from '../../../contexts/datasource-experience-id';
16
17
  import { ConcatenatedMenuList } from './concatenated-menu-list';
17
18
  import { columnPickerMessages } from './messages';
18
19
  export var ColumnPicker = function ColumnPicker(_ref) {
19
20
  var columns = _ref.columns,
20
21
  selectedColumnKeys = _ref.selectedColumnKeys,
21
22
  onSelectedColumnKeysChange = _ref.onSelectedColumnKeysChange,
22
- onOpen = _ref.onOpen,
23
- parentContainerRenderInstanceId = _ref.parentContainerRenderInstanceId;
23
+ onOpen = _ref.onOpen;
24
24
  var intl = useIntl();
25
+ var experienceId = useDatasourceExperienceId();
25
26
  var _useState = useState([]),
26
27
  _useState2 = _slicedToArray(_useState, 2),
27
28
  allOptions = _useState2[0],
@@ -100,13 +101,13 @@ export var ColumnPicker = function ColumnPicker(_ref) {
100
101
  }, [allOptions]);
101
102
  useEffect(function () {
102
103
  if (allOptions.length) {
103
- if (parentContainerRenderInstanceId) {
104
+ if (experienceId) {
104
105
  succeedUfoExperience({
105
106
  name: 'column-picker-rendered'
106
- }, parentContainerRenderInstanceId);
107
+ }, experienceId);
107
108
  }
108
109
  }
109
- }, [allOptions, parentContainerRenderInstanceId]);
110
+ }, [allOptions, experienceId]);
110
111
  return jsx(PopupSelect, {
111
112
  classNamePrefix: 'column-picker-popup',
112
113
  testId: 'column-picker-popup',
@@ -26,6 +26,7 @@ import Tooltip from '@atlaskit/tooltip';
26
26
  import { WidthObserver } from '@atlaskit/width-detector';
27
27
  import { startUfoExperience, succeedUfoExperience } from '../../analytics/ufoExperiences';
28
28
  import { stickyTableHeadersIndex } from '../../common/zindex';
29
+ import { useDatasourceExperienceId } from '../../contexts/datasource-experience-id';
29
30
  import { ColumnPicker } from './column-picker';
30
31
  import { DragColumnPreview } from './drag-column-preview';
31
32
  import { DraggableTableHeading } from './draggable-table-heading';
@@ -283,12 +284,12 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref5) {
283
284
  status = _ref5.status,
284
285
  hasNextPage = _ref5.hasNextPage,
285
286
  scrollableContainerHeight = _ref5.scrollableContainerHeight,
286
- parentContainerRenderInstanceId = _ref5.parentContainerRenderInstanceId,
287
287
  extensionKey = _ref5.extensionKey;
288
288
  var tableId = useMemo(function () {
289
289
  return Symbol('unique-id');
290
290
  }, []);
291
291
  var intl = useIntl();
292
+ var experienceId = useDatasourceExperienceId();
292
293
  var tableHeaderRowRef = useRef(null);
293
294
  var _useState = useState(null),
294
295
  _useState2 = _slicedToArray(_useState, 2),
@@ -325,12 +326,12 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref5) {
325
326
  }
326
327
  }, [columns, visibleColumnKeys, hasFullSchema]);
327
328
  useEffect(function () {
328
- if (parentContainerRenderInstanceId && status === 'resolved') {
329
+ if (experienceId && status === 'resolved') {
329
330
  succeedUfoExperience({
330
331
  name: 'datasource-rendered'
331
- }, parentContainerRenderInstanceId);
332
+ }, experienceId);
332
333
  }
333
- }, [parentContainerRenderInstanceId, status]);
334
+ }, [experienceId, status]);
334
335
  var visibleSortedColumns = useMemo(function () {
335
336
  return visibleColumnKeys.map(function (visibleKey) {
336
337
  return orderedColumns.find(function (_ref6) {
@@ -543,13 +544,13 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref5) {
543
544
  }
544
545
  return _context.abrupt("return");
545
546
  case 2:
546
- if (parentContainerRenderInstanceId) {
547
+ if (experienceId) {
547
548
  startUfoExperience({
548
549
  name: 'column-picker-rendered',
549
550
  metadata: {
550
551
  extensionKey: extensionKey !== null && extensionKey !== void 0 ? extensionKey : undefined
551
552
  }
552
- }, parentContainerRenderInstanceId);
553
+ }, experienceId);
553
554
  }
554
555
  _context.prev = 3;
555
556
  _context.next = 6;
@@ -567,7 +568,7 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref5) {
567
568
  return _context.stop();
568
569
  }
569
570
  }, _callee, null, [[3, 9]]);
570
- })), [parentContainerRenderInstanceId, extensionKey, hasFullSchema, onLoadDatasourceDetails]);
571
+ })), [experienceId, extensionKey, hasFullSchema, onLoadDatasourceDetails]);
571
572
  var isEditable = onVisibleColumnKeysChange && hasData;
572
573
  return jsx("div", {
573
574
  /* There is required contentEditable={true} in editor-card-plugin
@@ -655,8 +656,7 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref5) {
655
656
  columns: hasFullSchema ? orderedColumns : [],
656
657
  selectedColumnKeys: hasFullSchema ? visibleColumnKeys : [],
657
658
  onSelectedColumnKeysChange: onSelectedColumnKeysChange,
658
- onOpen: handlePickerOpen,
659
- parentContainerRenderInstanceId: parentContainerRenderInstanceId
659
+ onOpen: handlePickerOpen
660
660
  })))), jsx("tbody", {
661
661
  css: noDefaultBorderStyles,
662
662
  "data-testid": testId && "".concat(testId, "--body")