@atlaskit/link-datasource 2.5.11 → 2.5.12

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
+ ## 2.5.12
4
+
5
+ ### Patch Changes
6
+
7
+ - [`5b2c27d787675`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/5b2c27d787675) -
8
+ Extract ADF creation related code and move into InsertButton
9
+
3
10
  ## 2.5.11
4
11
 
5
12
  ### Patch Changes
@@ -22,7 +22,8 @@ var DatasourceContextProvider = exports.DatasourceContextProvider = function Dat
22
22
  initialParameters = _ref.initialParameters,
23
23
  initialVisibleColumnKeys = _ref.initialVisibleColumnKeys,
24
24
  initialColumnCustomSizes = _ref.initialColumnCustomSizes,
25
- initialWrappedColumnKeys = _ref.initialWrappedColumnKeys;
25
+ initialWrappedColumnKeys = _ref.initialWrappedColumnKeys,
26
+ onInsert = _ref.onInsert;
26
27
  var _useState = (0, _react.useState)(initialParameters),
27
28
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
28
29
  parameters = _useState2[0],
@@ -52,6 +53,8 @@ var DatasourceContextProvider = exports.DatasourceContextProvider = function Dat
52
53
  visibleColumnCount = _useColumnVisibility.visibleColumnCount;
53
54
  var contextValue = (0, _react.useMemo)(function () {
54
55
  return {
56
+ datasourceId: datasourceId,
57
+ isValidParameters: isValidParameters,
55
58
  tableState: tableState,
56
59
  visibleColumnCount: visibleColumnCount,
57
60
  visibleColumnKeys: visibleColumnKeys,
@@ -61,9 +64,10 @@ var DatasourceContextProvider = exports.DatasourceContextProvider = function Dat
61
64
  wrappedColumnKeys: wrappedColumnKeys,
62
65
  onWrappedColumnChange: onWrappedColumnChange,
63
66
  parameters: parameters,
64
- setParameters: setParameters
67
+ setParameters: setParameters,
68
+ onInsert: onInsert
65
69
  };
66
- }, [tableState, visibleColumnCount, visibleColumnKeys, onVisibleColumnKeysChange, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange, parameters]);
70
+ }, [datasourceId, isValidParameters, tableState, visibleColumnCount, visibleColumnKeys, onVisibleColumnKeysChange, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange, parameters, onInsert]);
67
71
  return /*#__PURE__*/_react.default.createElement(DatasourceContext.Provider, {
68
72
  value: contextValue
69
73
  }, children);
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.InsertButton = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _react = require("react");
10
+ var _react2 = require("@emotion/react");
11
+ var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
12
+ var _analytics = require("../../../../analytics");
13
+ var _types = require("../../../../analytics/types");
14
+ var _adf = require("../../../../common/utils/adf");
15
+ var _userInteractions = require("../../../../contexts/user-interactions");
16
+ var _datasourceContext = require("../datasource-context");
17
+ var _useViewModeContext2 = require("../mode-switcher/useViewModeContext");
18
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
19
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /** @jsx jsx */ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
20
+ var InsertButton = exports.InsertButton = function InsertButton(_ref) {
21
+ var testId = _ref.testId,
22
+ url = _ref.url,
23
+ getAnalyticsPayload = _ref.getAnalyticsPayload,
24
+ children = _ref.children;
25
+ var _useDatasourceContext = (0, _datasourceContext.useDatasourceContext)(),
26
+ datasourceId = _useDatasourceContext.datasourceId,
27
+ parameters = _useDatasourceContext.parameters,
28
+ _useDatasourceContext2 = _useDatasourceContext.tableState,
29
+ status = _useDatasourceContext2.status,
30
+ totalCount = _useDatasourceContext2.totalCount,
31
+ isValidParameters = _useDatasourceContext.isValidParameters,
32
+ visibleColumnCount = _useDatasourceContext.visibleColumnCount,
33
+ visibleColumnKeys = _useDatasourceContext.visibleColumnKeys,
34
+ columnCustomSizes = _useDatasourceContext.columnCustomSizes,
35
+ wrappedColumnKeys = _useDatasourceContext.wrappedColumnKeys,
36
+ onInsert = _useDatasourceContext.onInsert;
37
+ var userInteractions = (0, _userInteractions.useUserInteractions)();
38
+ var _useViewModeContext = (0, _useViewModeContext2.useViewModeContext)(),
39
+ currentViewMode = _useViewModeContext.currentViewMode;
40
+ var isInsertDisabled = !isValidParameters(parameters) || status === 'rejected' || status === 'unauthorized' || status === 'loading';
41
+ var onInsertPressed = (0, _react.useCallback)(function (e, analyticsEvent) {
42
+ var _insertButtonClickedE;
43
+ if (!parameters || !isValidParameters(parameters) || !url) {
44
+ return;
45
+ }
46
+ var insertButtonClickedEvent = analyticsEvent.update({
47
+ actionSubjectId: 'insert',
48
+ attributes: _objectSpread(_objectSpread({}, getAnalyticsPayload()), {}, {
49
+ totalItemCount: totalCount || 0,
50
+ displayedColumnCount: visibleColumnCount.current,
51
+ display: currentViewMode === 'inline' ? _types.DatasourceDisplay.DATASOURCE_INLINE : _types.DatasourceDisplay.DATASOURCE_TABLE,
52
+ searchMethod: _types.DatasourceSearchMethod.DATASOURCE_SEARCH_QUERY,
53
+ actions: userInteractions.get()
54
+ }),
55
+ eventType: 'ui'
56
+ });
57
+ var consumerEvent = (_insertButtonClickedE = insertButtonClickedEvent.clone()) !== null && _insertButtonClickedE !== void 0 ? _insertButtonClickedE : undefined;
58
+ insertButtonClickedEvent.fire(_analytics.EVENT_CHANNEL);
59
+ if (currentViewMode === 'inline') {
60
+ onInsert({
61
+ type: 'inlineCard',
62
+ attrs: {
63
+ url: url
64
+ }
65
+ }, consumerEvent);
66
+ } else {
67
+ onInsert((0, _adf.buildDatasourceAdf)({
68
+ id: datasourceId,
69
+ parameters: parameters,
70
+ views: [{
71
+ type: 'table',
72
+ properties: {
73
+ columns: (visibleColumnKeys || []).map(function (key) {
74
+ var width = columnCustomSizes === null || columnCustomSizes === void 0 ? void 0 : columnCustomSizes[key];
75
+ var isWrapped = wrappedColumnKeys === null || wrappedColumnKeys === void 0 ? void 0 : wrappedColumnKeys.includes(key);
76
+ return _objectSpread(_objectSpread({
77
+ key: key
78
+ }, width ? {
79
+ width: width
80
+ } : {}), isWrapped ? {
81
+ isWrapped: isWrapped
82
+ } : {});
83
+ })
84
+ }
85
+ }]
86
+ }, url), consumerEvent);
87
+ }
88
+ }, [isValidParameters, parameters, url, getAnalyticsPayload, totalCount, visibleColumnCount, currentViewMode, userInteractions, onInsert, datasourceId, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys]);
89
+ return (0, _react2.jsx)(_standardButton.default, {
90
+ appearance: "primary",
91
+ onClick: onInsertPressed,
92
+ isDisabled: isInsertDisabled,
93
+ testId: testId
94
+ }, children);
95
+ };
@@ -11,7 +11,6 @@ var _react = require("react");
11
11
  var _react2 = require("@emotion/react");
12
12
  var _reactIntlNext = require("react-intl-next");
13
13
  var _analyticsNext = require("@atlaskit/analytics-next");
14
- var _button = _interopRequireDefault(require("@atlaskit/button"));
15
14
  var _intlMessagesProvider = require("@atlaskit/intl-messages-provider");
16
15
  var _modalDialog = require("@atlaskit/modal-dialog");
17
16
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
@@ -19,7 +18,6 @@ var _primitives = require("@atlaskit/primitives");
19
18
  var _analytics = require("../../../analytics");
20
19
  var _constants = require("../../../analytics/constants");
21
20
  var _types = require("../../../analytics/types");
22
- var _adf = require("../../../common/utils/adf");
23
21
  var _fetchMessagesForLocale = require("../../../common/utils/locale/fetch-messages-for-locale");
24
22
  var _datasourceExperienceId = require("../../../contexts/datasource-experience-id");
25
23
  var _userInteractions = require("../../../contexts/user-interactions");
@@ -36,6 +34,7 @@ var _countViewSmartLink = require("../../common/modal/count-view-smart-link");
36
34
  var _datasourceContext = require("../../common/modal/datasource-context");
37
35
  var _datasourceModal = require("../../common/modal/datasource-modal");
38
36
  var _datasourcesTableInModalPreview = _interopRequireDefault(require("../../common/modal/datasources-table-in-modal-preview"));
37
+ var _insertButton = require("../../common/modal/insert-button");
39
38
  var _modeSwitcher = require("../../common/modal/mode-switcher");
40
39
  var _useViewModeContext2 = require("../../common/modal/mode-switcher/useViewModeContext");
41
40
  var _searchCount = _interopRequireDefault(require("../../common/modal/search-count"));
@@ -74,9 +73,7 @@ var useUpdateParametersOnFormUpdate = function useUpdateParametersOnFormUpdate(c
74
73
  }, [cloudId, searchString, lastModified, contributorAccountIds, setParameters, overrideParameters]);
75
74
  };
76
75
  var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal = function PlainConfluenceSearchConfigModal(props) {
77
- var datasourceId = props.datasourceId,
78
- onCancel = props.onCancel,
79
- onInsert = props.onInsert,
76
+ var onCancel = props.onCancel,
80
77
  initialParameters = props.parameters,
81
78
  urlBeingEdited = props.url,
82
79
  _props$disableDisplay = props.disableDisplayDropdown,
@@ -263,58 +260,6 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
263
260
  }
264
261
  }, [confluenceSearchUrl, selectedConfluenceSiteUrl, status, urlBeingEdited]);
265
262
  var shouldShowResultsCount = !!totalCount && currentViewMode === 'table';
266
- var _useDatasourceContext5 = (0, _datasourceContext.useDatasourceContext)(),
267
- columnCustomSizes = _useDatasourceContext5.columnCustomSizes,
268
- wrappedColumnKeys = _useDatasourceContext5.wrappedColumnKeys;
269
- var onInsertPressed = (0, _react.useCallback)(function (e, analyticsEvent) {
270
- var _insertButtonClickedE;
271
- if (!parameters || !isValidParameters(parameters) || !confluenceSearchUrl) {
272
- return;
273
- }
274
- var insertButtonClickedEvent = analyticsEvent.update({
275
- actionSubjectId: 'insert',
276
- attributes: _objectSpread(_objectSpread({}, analyticsPayload), {}, {
277
- totalItemCount: totalCount || 0,
278
- displayedColumnCount: visibleColumnCount.current,
279
- display: currentViewMode === 'inline' ? _types.DatasourceDisplay.DATASOURCE_INLINE : _types.DatasourceDisplay.DATASOURCE_TABLE,
280
- searchCount: searchCount.current,
281
- searchMethod: _types.DatasourceSearchMethod.DATASOURCE_SEARCH_QUERY,
282
- actions: userInteractions.get()
283
- }),
284
- eventType: 'ui'
285
- });
286
- var consumerEvent = (_insertButtonClickedE = insertButtonClickedEvent.clone()) !== null && _insertButtonClickedE !== void 0 ? _insertButtonClickedE : undefined;
287
- insertButtonClickedEvent.fire(_analytics.EVENT_CHANNEL);
288
- if (currentViewMode === 'inline') {
289
- onInsert({
290
- type: 'inlineCard',
291
- attrs: {
292
- url: confluenceSearchUrl
293
- }
294
- }, consumerEvent);
295
- } else {
296
- onInsert((0, _adf.buildDatasourceAdf)({
297
- id: datasourceId,
298
- parameters: parameters,
299
- views: [{
300
- type: 'table',
301
- properties: {
302
- columns: (visibleColumnKeys || []).map(function (key) {
303
- var width = columnCustomSizes === null || columnCustomSizes === void 0 ? void 0 : columnCustomSizes[key];
304
- var isWrapped = wrappedColumnKeys === null || wrappedColumnKeys === void 0 ? void 0 : wrappedColumnKeys.includes(key);
305
- return _objectSpread(_objectSpread({
306
- key: key
307
- }, width ? {
308
- width: width
309
- } : {}), isWrapped ? {
310
- isWrapped: isWrapped
311
- } : {});
312
- })
313
- }
314
- }]
315
- }, confluenceSearchUrl), consumerEvent);
316
- }
317
- }, [parameters, confluenceSearchUrl, analyticsPayload, totalCount, visibleColumnCount, currentViewMode, userInteractions, onInsert, datasourceId, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys]);
318
263
  var onSearch = (0, _react.useCallback)(function (newSearchString, filters) {
319
264
  searchCount.current++;
320
265
  userInteractions.add(_types.DatasourceAction.QUERY_UPDATED);
@@ -345,8 +290,7 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
345
290
  shouldForceRequest: true
346
291
  });
347
292
  }, [reset, userInteractions]);
348
- var isInsertDisabled = !isValidParameters(parameters) || status === 'rejected' || status === 'unauthorized' || status === 'loading';
349
- var getCancelButtonAnalyticsPayload = (0, _react.useCallback)(function () {
293
+ var getButtonAnalyticsPayload = (0, _react.useCallback)(function () {
350
294
  return {
351
295
  extensionKey: extensionKey,
352
296
  destinationObjectTypes: destinationObjectTypes,
@@ -385,13 +329,12 @@ var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal
385
329
  testId: "confluence-search-datasource-modal-total-results-count"
386
330
  }), (0, _react2.jsx)(_cancelButton.CancelButton, {
387
331
  onCancel: onCancel,
388
- getAnalyticsPayload: getCancelButtonAnalyticsPayload,
332
+ getAnalyticsPayload: getButtonAnalyticsPayload,
389
333
  testId: "confluence-search-modal--cancel-button"
390
- }), !hasNoConfluenceSites && (0, _react2.jsx)(_button.default, {
391
- appearance: "primary",
392
- onClick: onInsertPressed,
393
- isDisabled: isInsertDisabled,
394
- testId: "confluence-search-datasource-modal--insert-button"
334
+ }), !hasNoConfluenceSites && (0, _react2.jsx)(_insertButton.InsertButton, {
335
+ testId: "confluence-search-datasource-modal--insert-button",
336
+ url: confluenceSearchUrl,
337
+ getAnalyticsPayload: getButtonAnalyticsPayload
395
338
  }, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.confluenceSearchModalMessages.insertResultsButtonText)))));
396
339
  };
397
340
  var analyticsContextAttributes = {
@@ -411,7 +354,8 @@ var ConfluenceSearchConfigModal = exports.ConfluenceSearchConfigModal = (0, _ana
411
354
  initialColumnCustomSizes: props.columnCustomSizes,
412
355
  initialWrappedColumnKeys: props.wrappedColumnKeys,
413
356
  initialParameters: props.parameters,
414
- isValidParameters: isValidParameters
357
+ isValidParameters: isValidParameters,
358
+ onInsert: props.onInsert
415
359
  }, (0, _react2.jsx)(_useViewModeContext2.DatasourceViewModeProvider, {
416
360
  viewMode: (_props$viewMode = props.viewMode) !== null && _props$viewMode !== void 0 ? _props$viewMode : DEFAULT_VIEW_MODE
417
361
  }, (0, _react2.jsx)(PlainConfluenceSearchConfigModal, props))) :
@@ -11,7 +11,8 @@ export const DatasourceContextProvider = ({
11
11
  initialParameters,
12
12
  initialVisibleColumnKeys,
13
13
  initialColumnCustomSizes,
14
- initialWrappedColumnKeys
14
+ initialWrappedColumnKeys,
15
+ onInsert
15
16
  }) => {
16
17
  const [parameters, setParameters] = useState(initialParameters);
17
18
  const [visibleColumnKeys, setVisibleColumnKeys] = useState(initialVisibleColumnKeys);
@@ -38,6 +39,8 @@ export const DatasourceContextProvider = ({
38
39
  initialVisibleColumnKeys
39
40
  });
40
41
  const contextValue = useMemo(() => ({
42
+ datasourceId,
43
+ isValidParameters,
41
44
  tableState,
42
45
  visibleColumnCount,
43
46
  visibleColumnKeys,
@@ -47,8 +50,9 @@ export const DatasourceContextProvider = ({
47
50
  wrappedColumnKeys,
48
51
  onWrappedColumnChange,
49
52
  parameters,
50
- setParameters
51
- }), [tableState, visibleColumnCount, visibleColumnKeys, onVisibleColumnKeysChange, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange, parameters]);
53
+ setParameters,
54
+ onInsert
55
+ }), [datasourceId, isValidParameters, tableState, visibleColumnCount, visibleColumnKeys, onVisibleColumnKeysChange, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange, parameters, onInsert]);
52
56
  return /*#__PURE__*/React.createElement(DatasourceContext.Provider, {
53
57
  value: contextValue
54
58
  }, children);
@@ -0,0 +1,96 @@
1
+ /** @jsx jsx */
2
+
3
+ import { useCallback } from 'react';
4
+
5
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
6
+ import { jsx } from '@emotion/react';
7
+ import Button from '@atlaskit/button/standard-button';
8
+ import { EVENT_CHANNEL } from '../../../../analytics';
9
+ import { DatasourceDisplay, DatasourceSearchMethod } from '../../../../analytics/types';
10
+ import { buildDatasourceAdf } from '../../../../common/utils/adf';
11
+ import { useUserInteractions } from '../../../../contexts/user-interactions';
12
+ import { useDatasourceContext } from '../datasource-context';
13
+ import { useViewModeContext } from '../mode-switcher/useViewModeContext';
14
+ export const InsertButton = ({
15
+ testId,
16
+ url,
17
+ getAnalyticsPayload,
18
+ children
19
+ }) => {
20
+ const {
21
+ datasourceId,
22
+ parameters,
23
+ tableState: {
24
+ status,
25
+ totalCount
26
+ },
27
+ isValidParameters,
28
+ visibleColumnCount,
29
+ visibleColumnKeys,
30
+ columnCustomSizes,
31
+ wrappedColumnKeys,
32
+ onInsert
33
+ } = useDatasourceContext();
34
+ const userInteractions = useUserInteractions();
35
+ const {
36
+ currentViewMode
37
+ } = useViewModeContext();
38
+ const isInsertDisabled = !isValidParameters(parameters) || status === 'rejected' || status === 'unauthorized' || status === 'loading';
39
+ const onInsertPressed = useCallback((e, analyticsEvent) => {
40
+ var _insertButtonClickedE;
41
+ if (!parameters || !isValidParameters(parameters) || !url) {
42
+ return;
43
+ }
44
+ const insertButtonClickedEvent = analyticsEvent.update({
45
+ actionSubjectId: 'insert',
46
+ attributes: {
47
+ ...getAnalyticsPayload(),
48
+ totalItemCount: totalCount || 0,
49
+ displayedColumnCount: visibleColumnCount.current,
50
+ display: currentViewMode === 'inline' ? DatasourceDisplay.DATASOURCE_INLINE : DatasourceDisplay.DATASOURCE_TABLE,
51
+ searchMethod: DatasourceSearchMethod.DATASOURCE_SEARCH_QUERY,
52
+ actions: userInteractions.get()
53
+ },
54
+ eventType: 'ui'
55
+ });
56
+ const consumerEvent = (_insertButtonClickedE = insertButtonClickedEvent.clone()) !== null && _insertButtonClickedE !== void 0 ? _insertButtonClickedE : undefined;
57
+ insertButtonClickedEvent.fire(EVENT_CHANNEL);
58
+ if (currentViewMode === 'inline') {
59
+ onInsert({
60
+ type: 'inlineCard',
61
+ attrs: {
62
+ url
63
+ }
64
+ }, consumerEvent);
65
+ } else {
66
+ onInsert(buildDatasourceAdf({
67
+ id: datasourceId,
68
+ parameters: parameters,
69
+ views: [{
70
+ type: 'table',
71
+ properties: {
72
+ columns: (visibleColumnKeys || []).map(key => {
73
+ const width = columnCustomSizes === null || columnCustomSizes === void 0 ? void 0 : columnCustomSizes[key];
74
+ const isWrapped = wrappedColumnKeys === null || wrappedColumnKeys === void 0 ? void 0 : wrappedColumnKeys.includes(key);
75
+ return {
76
+ key,
77
+ ...(width ? {
78
+ width
79
+ } : {}),
80
+ ...(isWrapped ? {
81
+ isWrapped
82
+ } : {})
83
+ };
84
+ })
85
+ }
86
+ }]
87
+ }, url), consumerEvent);
88
+ }
89
+ }, [isValidParameters, parameters, url, getAnalyticsPayload, totalCount, visibleColumnCount, currentViewMode, userInteractions, onInsert, datasourceId, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys]);
90
+ return jsx(Button, {
91
+ appearance: "primary",
92
+ onClick: onInsertPressed,
93
+ isDisabled: isInsertDisabled,
94
+ testId: testId
95
+ }, children);
96
+ };
@@ -6,15 +6,13 @@ import { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'rea
6
6
  import { jsx } from '@emotion/react';
7
7
  import { FormattedMessage } from 'react-intl-next';
8
8
  import { withAnalyticsContext } from '@atlaskit/analytics-next';
9
- import Button from '@atlaskit/button';
10
9
  import { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
11
10
  import { ModalBody, ModalFooter, ModalHeader, ModalTitle } from '@atlaskit/modal-dialog';
12
11
  import { fg } from '@atlaskit/platform-feature-flags';
13
12
  import { Box, xcss } from '@atlaskit/primitives';
14
- import { EVENT_CHANNEL, useDatasourceAnalyticsEvents } from '../../../analytics';
13
+ import { useDatasourceAnalyticsEvents } from '../../../analytics';
15
14
  import { componentMetadata } from '../../../analytics/constants';
16
- import { DatasourceAction, DatasourceDisplay, DatasourceSearchMethod } from '../../../analytics/types';
17
- import { buildDatasourceAdf } from '../../../common/utils/adf';
15
+ import { DatasourceAction, DatasourceSearchMethod } from '../../../analytics/types';
18
16
  import { fetchMessagesForLocale } from '../../../common/utils/locale/fetch-messages-for-locale';
19
17
  import { DatasourceExperienceIdProvider } from '../../../contexts/datasource-experience-id';
20
18
  import { UserInteractionsProvider, useUserInteractions } from '../../../contexts/user-interactions';
@@ -31,6 +29,7 @@ import { SmartCardPlaceholder, SmartLink } from '../../common/modal/count-view-s
31
29
  import { DatasourceContextProvider, useDatasourceContext } from '../../common/modal/datasource-context';
32
30
  import { DatasourceModal } from '../../common/modal/datasource-modal';
33
31
  import DatasourcesTableInModalPreview from '../../common/modal/datasources-table-in-modal-preview';
32
+ import { InsertButton } from '../../common/modal/insert-button';
34
33
  import { DatasourceViewModeDropDown } from '../../common/modal/mode-switcher';
35
34
  import { DatasourceViewModeProvider, useViewModeContext } from '../../common/modal/mode-switcher/useViewModeContext';
36
35
  import TableSearchCount from '../../common/modal/search-count';
@@ -71,9 +70,7 @@ const useUpdateParametersOnFormUpdate = (cloudId, searchString, lastModified, co
71
70
  };
72
71
  export const PlainConfluenceSearchConfigModal = props => {
73
72
  const {
74
- datasourceId,
75
73
  onCancel,
76
- onInsert,
77
74
  parameters: initialParameters,
78
75
  url: urlBeingEdited,
79
76
  disableDisplayDropdown = false,
@@ -252,62 +249,6 @@ export const PlainConfluenceSearchConfigModal = props => {
252
249
  }
253
250
  }, [confluenceSearchUrl, selectedConfluenceSiteUrl, status, urlBeingEdited]);
254
251
  const shouldShowResultsCount = !!totalCount && currentViewMode === 'table';
255
- const {
256
- columnCustomSizes,
257
- wrappedColumnKeys
258
- } = useDatasourceContext();
259
- const onInsertPressed = useCallback((e, analyticsEvent) => {
260
- var _insertButtonClickedE;
261
- if (!parameters || !isValidParameters(parameters) || !confluenceSearchUrl) {
262
- return;
263
- }
264
- const insertButtonClickedEvent = analyticsEvent.update({
265
- actionSubjectId: 'insert',
266
- attributes: {
267
- ...analyticsPayload,
268
- totalItemCount: totalCount || 0,
269
- displayedColumnCount: visibleColumnCount.current,
270
- display: currentViewMode === 'inline' ? DatasourceDisplay.DATASOURCE_INLINE : DatasourceDisplay.DATASOURCE_TABLE,
271
- searchCount: searchCount.current,
272
- searchMethod: DatasourceSearchMethod.DATASOURCE_SEARCH_QUERY,
273
- actions: userInteractions.get()
274
- },
275
- eventType: 'ui'
276
- });
277
- const consumerEvent = (_insertButtonClickedE = insertButtonClickedEvent.clone()) !== null && _insertButtonClickedE !== void 0 ? _insertButtonClickedE : undefined;
278
- insertButtonClickedEvent.fire(EVENT_CHANNEL);
279
- if (currentViewMode === 'inline') {
280
- onInsert({
281
- type: 'inlineCard',
282
- attrs: {
283
- url: confluenceSearchUrl
284
- }
285
- }, consumerEvent);
286
- } else {
287
- onInsert(buildDatasourceAdf({
288
- id: datasourceId,
289
- parameters: parameters,
290
- views: [{
291
- type: 'table',
292
- properties: {
293
- columns: (visibleColumnKeys || []).map(key => {
294
- const width = columnCustomSizes === null || columnCustomSizes === void 0 ? void 0 : columnCustomSizes[key];
295
- const isWrapped = wrappedColumnKeys === null || wrappedColumnKeys === void 0 ? void 0 : wrappedColumnKeys.includes(key);
296
- return {
297
- key,
298
- ...(width ? {
299
- width
300
- } : {}),
301
- ...(isWrapped ? {
302
- isWrapped
303
- } : {})
304
- };
305
- })
306
- }
307
- }]
308
- }, confluenceSearchUrl), consumerEvent);
309
- }
310
- }, [parameters, confluenceSearchUrl, analyticsPayload, totalCount, visibleColumnCount, currentViewMode, userInteractions, onInsert, datasourceId, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys]);
311
252
  const onSearch = useCallback((newSearchString, filters) => {
312
253
  searchCount.current++;
313
254
  userInteractions.add(DatasourceAction.QUERY_UPDATED);
@@ -336,8 +277,7 @@ export const PlainConfluenceSearchConfigModal = props => {
336
277
  shouldForceRequest: true
337
278
  });
338
279
  }, [reset, userInteractions]);
339
- const isInsertDisabled = !isValidParameters(parameters) || status === 'rejected' || status === 'unauthorized' || status === 'loading';
340
- const getCancelButtonAnalyticsPayload = useCallback(() => {
280
+ const getButtonAnalyticsPayload = useCallback(() => {
341
281
  return {
342
282
  extensionKey,
343
283
  destinationObjectTypes,
@@ -376,13 +316,12 @@ export const PlainConfluenceSearchConfigModal = props => {
376
316
  testId: "confluence-search-datasource-modal-total-results-count"
377
317
  }), jsx(CancelButton, {
378
318
  onCancel: onCancel,
379
- getAnalyticsPayload: getCancelButtonAnalyticsPayload,
319
+ getAnalyticsPayload: getButtonAnalyticsPayload,
380
320
  testId: "confluence-search-modal--cancel-button"
381
- }), !hasNoConfluenceSites && jsx(Button, {
382
- appearance: "primary",
383
- onClick: onInsertPressed,
384
- isDisabled: isInsertDisabled,
385
- testId: "confluence-search-datasource-modal--insert-button"
321
+ }), !hasNoConfluenceSites && jsx(InsertButton, {
322
+ testId: "confluence-search-datasource-modal--insert-button",
323
+ url: confluenceSearchUrl,
324
+ getAnalyticsPayload: getButtonAnalyticsPayload
386
325
  }, jsx(FormattedMessage, confluenceSearchModalMessages.insertResultsButtonText)))));
387
326
  };
388
327
  const analyticsContextAttributes = {
@@ -406,7 +345,8 @@ export const ConfluenceSearchConfigModal = withAnalyticsContext(contextData)(pro
406
345
  initialColumnCustomSizes: props.columnCustomSizes,
407
346
  initialWrappedColumnKeys: props.wrappedColumnKeys,
408
347
  initialParameters: props.parameters,
409
- isValidParameters: isValidParameters
348
+ isValidParameters: isValidParameters,
349
+ onInsert: props.onInsert
410
350
  }, jsx(DatasourceViewModeProvider, {
411
351
  viewMode: (_props$viewMode = props.viewMode) !== null && _props$viewMode !== void 0 ? _props$viewMode : DEFAULT_VIEW_MODE
412
352
  }, jsx(PlainConfluenceSearchConfigModal, props))) :
@@ -12,7 +12,8 @@ export var DatasourceContextProvider = function DatasourceContextProvider(_ref)
12
12
  initialParameters = _ref.initialParameters,
13
13
  initialVisibleColumnKeys = _ref.initialVisibleColumnKeys,
14
14
  initialColumnCustomSizes = _ref.initialColumnCustomSizes,
15
- initialWrappedColumnKeys = _ref.initialWrappedColumnKeys;
15
+ initialWrappedColumnKeys = _ref.initialWrappedColumnKeys,
16
+ onInsert = _ref.onInsert;
16
17
  var _useState = useState(initialParameters),
17
18
  _useState2 = _slicedToArray(_useState, 2),
18
19
  parameters = _useState2[0],
@@ -42,6 +43,8 @@ export var DatasourceContextProvider = function DatasourceContextProvider(_ref)
42
43
  visibleColumnCount = _useColumnVisibility.visibleColumnCount;
43
44
  var contextValue = useMemo(function () {
44
45
  return {
46
+ datasourceId: datasourceId,
47
+ isValidParameters: isValidParameters,
45
48
  tableState: tableState,
46
49
  visibleColumnCount: visibleColumnCount,
47
50
  visibleColumnKeys: visibleColumnKeys,
@@ -51,9 +54,10 @@ export var DatasourceContextProvider = function DatasourceContextProvider(_ref)
51
54
  wrappedColumnKeys: wrappedColumnKeys,
52
55
  onWrappedColumnChange: onWrappedColumnChange,
53
56
  parameters: parameters,
54
- setParameters: setParameters
57
+ setParameters: setParameters,
58
+ onInsert: onInsert
55
59
  };
56
- }, [tableState, visibleColumnCount, visibleColumnKeys, onVisibleColumnKeysChange, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange, parameters]);
60
+ }, [datasourceId, isValidParameters, tableState, visibleColumnCount, visibleColumnKeys, onVisibleColumnKeysChange, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange, parameters, onInsert]);
57
61
  return /*#__PURE__*/React.createElement(DatasourceContext.Provider, {
58
62
  value: contextValue
59
63
  }, children);
@@ -0,0 +1,92 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ /** @jsx jsx */
5
+
6
+ import { useCallback } 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 Button from '@atlaskit/button/standard-button';
11
+ import { EVENT_CHANNEL } from '../../../../analytics';
12
+ import { DatasourceDisplay, DatasourceSearchMethod } from '../../../../analytics/types';
13
+ import { buildDatasourceAdf } from '../../../../common/utils/adf';
14
+ import { useUserInteractions } from '../../../../contexts/user-interactions';
15
+ import { useDatasourceContext } from '../datasource-context';
16
+ import { useViewModeContext } from '../mode-switcher/useViewModeContext';
17
+ export var InsertButton = function InsertButton(_ref) {
18
+ var testId = _ref.testId,
19
+ url = _ref.url,
20
+ getAnalyticsPayload = _ref.getAnalyticsPayload,
21
+ children = _ref.children;
22
+ var _useDatasourceContext = useDatasourceContext(),
23
+ datasourceId = _useDatasourceContext.datasourceId,
24
+ parameters = _useDatasourceContext.parameters,
25
+ _useDatasourceContext2 = _useDatasourceContext.tableState,
26
+ status = _useDatasourceContext2.status,
27
+ totalCount = _useDatasourceContext2.totalCount,
28
+ isValidParameters = _useDatasourceContext.isValidParameters,
29
+ visibleColumnCount = _useDatasourceContext.visibleColumnCount,
30
+ visibleColumnKeys = _useDatasourceContext.visibleColumnKeys,
31
+ columnCustomSizes = _useDatasourceContext.columnCustomSizes,
32
+ wrappedColumnKeys = _useDatasourceContext.wrappedColumnKeys,
33
+ onInsert = _useDatasourceContext.onInsert;
34
+ var userInteractions = useUserInteractions();
35
+ var _useViewModeContext = useViewModeContext(),
36
+ currentViewMode = _useViewModeContext.currentViewMode;
37
+ var isInsertDisabled = !isValidParameters(parameters) || status === 'rejected' || status === 'unauthorized' || status === 'loading';
38
+ var onInsertPressed = useCallback(function (e, analyticsEvent) {
39
+ var _insertButtonClickedE;
40
+ if (!parameters || !isValidParameters(parameters) || !url) {
41
+ return;
42
+ }
43
+ var insertButtonClickedEvent = analyticsEvent.update({
44
+ actionSubjectId: 'insert',
45
+ attributes: _objectSpread(_objectSpread({}, getAnalyticsPayload()), {}, {
46
+ totalItemCount: totalCount || 0,
47
+ displayedColumnCount: visibleColumnCount.current,
48
+ display: currentViewMode === 'inline' ? DatasourceDisplay.DATASOURCE_INLINE : DatasourceDisplay.DATASOURCE_TABLE,
49
+ searchMethod: DatasourceSearchMethod.DATASOURCE_SEARCH_QUERY,
50
+ actions: userInteractions.get()
51
+ }),
52
+ eventType: 'ui'
53
+ });
54
+ var consumerEvent = (_insertButtonClickedE = insertButtonClickedEvent.clone()) !== null && _insertButtonClickedE !== void 0 ? _insertButtonClickedE : undefined;
55
+ insertButtonClickedEvent.fire(EVENT_CHANNEL);
56
+ if (currentViewMode === 'inline') {
57
+ onInsert({
58
+ type: 'inlineCard',
59
+ attrs: {
60
+ url: url
61
+ }
62
+ }, consumerEvent);
63
+ } else {
64
+ onInsert(buildDatasourceAdf({
65
+ id: datasourceId,
66
+ parameters: parameters,
67
+ views: [{
68
+ type: 'table',
69
+ properties: {
70
+ columns: (visibleColumnKeys || []).map(function (key) {
71
+ var width = columnCustomSizes === null || columnCustomSizes === void 0 ? void 0 : columnCustomSizes[key];
72
+ var isWrapped = wrappedColumnKeys === null || wrappedColumnKeys === void 0 ? void 0 : wrappedColumnKeys.includes(key);
73
+ return _objectSpread(_objectSpread({
74
+ key: key
75
+ }, width ? {
76
+ width: width
77
+ } : {}), isWrapped ? {
78
+ isWrapped: isWrapped
79
+ } : {});
80
+ })
81
+ }
82
+ }]
83
+ }, url), consumerEvent);
84
+ }
85
+ }, [isValidParameters, parameters, url, getAnalyticsPayload, totalCount, visibleColumnCount, currentViewMode, userInteractions, onInsert, datasourceId, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys]);
86
+ return jsx(Button, {
87
+ appearance: "primary",
88
+ onClick: onInsertPressed,
89
+ isDisabled: isInsertDisabled,
90
+ testId: testId
91
+ }, children);
92
+ };
@@ -10,15 +10,13 @@ import { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'rea
10
10
  import { jsx } from '@emotion/react';
11
11
  import { FormattedMessage } from 'react-intl-next';
12
12
  import { withAnalyticsContext } from '@atlaskit/analytics-next';
13
- import Button from '@atlaskit/button';
14
13
  import { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
15
14
  import { ModalBody, ModalFooter, ModalHeader, ModalTitle } from '@atlaskit/modal-dialog';
16
15
  import { fg } from '@atlaskit/platform-feature-flags';
17
16
  import { Box, xcss } from '@atlaskit/primitives';
18
- import { EVENT_CHANNEL, useDatasourceAnalyticsEvents } from '../../../analytics';
17
+ import { useDatasourceAnalyticsEvents } from '../../../analytics';
19
18
  import { componentMetadata } from '../../../analytics/constants';
20
- import { DatasourceAction, DatasourceDisplay, DatasourceSearchMethod } from '../../../analytics/types';
21
- import { buildDatasourceAdf } from '../../../common/utils/adf';
19
+ import { DatasourceAction, DatasourceSearchMethod } from '../../../analytics/types';
22
20
  import { fetchMessagesForLocale } from '../../../common/utils/locale/fetch-messages-for-locale';
23
21
  import { DatasourceExperienceIdProvider } from '../../../contexts/datasource-experience-id';
24
22
  import { UserInteractionsProvider, useUserInteractions } from '../../../contexts/user-interactions';
@@ -35,6 +33,7 @@ import { SmartCardPlaceholder, SmartLink } from '../../common/modal/count-view-s
35
33
  import { DatasourceContextProvider, useDatasourceContext } from '../../common/modal/datasource-context';
36
34
  import { DatasourceModal } from '../../common/modal/datasource-modal';
37
35
  import DatasourcesTableInModalPreview from '../../common/modal/datasources-table-in-modal-preview';
36
+ import { InsertButton } from '../../common/modal/insert-button';
38
37
  import { DatasourceViewModeDropDown } from '../../common/modal/mode-switcher';
39
38
  import { DatasourceViewModeProvider, useViewModeContext } from '../../common/modal/mode-switcher/useViewModeContext';
40
39
  import TableSearchCount from '../../common/modal/search-count';
@@ -71,9 +70,7 @@ var useUpdateParametersOnFormUpdate = function useUpdateParametersOnFormUpdate(c
71
70
  }, [cloudId, searchString, lastModified, contributorAccountIds, setParameters, overrideParameters]);
72
71
  };
73
72
  export var PlainConfluenceSearchConfigModal = function PlainConfluenceSearchConfigModal(props) {
74
- var datasourceId = props.datasourceId,
75
- onCancel = props.onCancel,
76
- onInsert = props.onInsert,
73
+ var onCancel = props.onCancel,
77
74
  initialParameters = props.parameters,
78
75
  urlBeingEdited = props.url,
79
76
  _props$disableDisplay = props.disableDisplayDropdown,
@@ -260,58 +257,6 @@ export var PlainConfluenceSearchConfigModal = function PlainConfluenceSearchConf
260
257
  }
261
258
  }, [confluenceSearchUrl, selectedConfluenceSiteUrl, status, urlBeingEdited]);
262
259
  var shouldShowResultsCount = !!totalCount && currentViewMode === 'table';
263
- var _useDatasourceContext5 = useDatasourceContext(),
264
- columnCustomSizes = _useDatasourceContext5.columnCustomSizes,
265
- wrappedColumnKeys = _useDatasourceContext5.wrappedColumnKeys;
266
- var onInsertPressed = useCallback(function (e, analyticsEvent) {
267
- var _insertButtonClickedE;
268
- if (!parameters || !isValidParameters(parameters) || !confluenceSearchUrl) {
269
- return;
270
- }
271
- var insertButtonClickedEvent = analyticsEvent.update({
272
- actionSubjectId: 'insert',
273
- attributes: _objectSpread(_objectSpread({}, analyticsPayload), {}, {
274
- totalItemCount: totalCount || 0,
275
- displayedColumnCount: visibleColumnCount.current,
276
- display: currentViewMode === 'inline' ? DatasourceDisplay.DATASOURCE_INLINE : DatasourceDisplay.DATASOURCE_TABLE,
277
- searchCount: searchCount.current,
278
- searchMethod: DatasourceSearchMethod.DATASOURCE_SEARCH_QUERY,
279
- actions: userInteractions.get()
280
- }),
281
- eventType: 'ui'
282
- });
283
- var consumerEvent = (_insertButtonClickedE = insertButtonClickedEvent.clone()) !== null && _insertButtonClickedE !== void 0 ? _insertButtonClickedE : undefined;
284
- insertButtonClickedEvent.fire(EVENT_CHANNEL);
285
- if (currentViewMode === 'inline') {
286
- onInsert({
287
- type: 'inlineCard',
288
- attrs: {
289
- url: confluenceSearchUrl
290
- }
291
- }, consumerEvent);
292
- } else {
293
- onInsert(buildDatasourceAdf({
294
- id: datasourceId,
295
- parameters: parameters,
296
- views: [{
297
- type: 'table',
298
- properties: {
299
- columns: (visibleColumnKeys || []).map(function (key) {
300
- var width = columnCustomSizes === null || columnCustomSizes === void 0 ? void 0 : columnCustomSizes[key];
301
- var isWrapped = wrappedColumnKeys === null || wrappedColumnKeys === void 0 ? void 0 : wrappedColumnKeys.includes(key);
302
- return _objectSpread(_objectSpread({
303
- key: key
304
- }, width ? {
305
- width: width
306
- } : {}), isWrapped ? {
307
- isWrapped: isWrapped
308
- } : {});
309
- })
310
- }
311
- }]
312
- }, confluenceSearchUrl), consumerEvent);
313
- }
314
- }, [parameters, confluenceSearchUrl, analyticsPayload, totalCount, visibleColumnCount, currentViewMode, userInteractions, onInsert, datasourceId, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys]);
315
260
  var onSearch = useCallback(function (newSearchString, filters) {
316
261
  searchCount.current++;
317
262
  userInteractions.add(DatasourceAction.QUERY_UPDATED);
@@ -342,8 +287,7 @@ export var PlainConfluenceSearchConfigModal = function PlainConfluenceSearchConf
342
287
  shouldForceRequest: true
343
288
  });
344
289
  }, [reset, userInteractions]);
345
- var isInsertDisabled = !isValidParameters(parameters) || status === 'rejected' || status === 'unauthorized' || status === 'loading';
346
- var getCancelButtonAnalyticsPayload = useCallback(function () {
290
+ var getButtonAnalyticsPayload = useCallback(function () {
347
291
  return {
348
292
  extensionKey: extensionKey,
349
293
  destinationObjectTypes: destinationObjectTypes,
@@ -382,13 +326,12 @@ export var PlainConfluenceSearchConfigModal = function PlainConfluenceSearchConf
382
326
  testId: "confluence-search-datasource-modal-total-results-count"
383
327
  }), jsx(CancelButton, {
384
328
  onCancel: onCancel,
385
- getAnalyticsPayload: getCancelButtonAnalyticsPayload,
329
+ getAnalyticsPayload: getButtonAnalyticsPayload,
386
330
  testId: "confluence-search-modal--cancel-button"
387
- }), !hasNoConfluenceSites && jsx(Button, {
388
- appearance: "primary",
389
- onClick: onInsertPressed,
390
- isDisabled: isInsertDisabled,
391
- testId: "confluence-search-datasource-modal--insert-button"
331
+ }), !hasNoConfluenceSites && jsx(InsertButton, {
332
+ testId: "confluence-search-datasource-modal--insert-button",
333
+ url: confluenceSearchUrl,
334
+ getAnalyticsPayload: getButtonAnalyticsPayload
392
335
  }, jsx(FormattedMessage, confluenceSearchModalMessages.insertResultsButtonText)))));
393
336
  };
394
337
  var analyticsContextAttributes = {
@@ -408,7 +351,8 @@ export var ConfluenceSearchConfigModal = withAnalyticsContext(contextData)(funct
408
351
  initialColumnCustomSizes: props.columnCustomSizes,
409
352
  initialWrappedColumnKeys: props.wrappedColumnKeys,
410
353
  initialParameters: props.parameters,
411
- isValidParameters: isValidParameters
354
+ isValidParameters: isValidParameters,
355
+ onInsert: props.onInsert
412
356
  }, jsx(DatasourceViewModeProvider, {
413
357
  viewMode: (_props$viewMode = props.viewMode) !== null && _props$viewMode !== void 0 ? _props$viewMode : DEFAULT_VIEW_MODE
414
358
  }, jsx(PlainConfluenceSearchConfigModal, props))) :
@@ -1,4 +1,6 @@
1
1
  import React, { type PropsWithChildren } from 'react';
2
+ import { type UIAnalyticsEvent } from '@atlaskit/analytics-next';
3
+ import { type DatasourceAdf, type InlineCardAdf } from '@atlaskit/linking-common';
2
4
  import type { DatasourceParameters } from '@atlaskit/linking-types';
3
5
  import { type DatasourceTableState } from '../../../../hooks/useDatasourceTableState';
4
6
  import type { ColumnSizesMap } from '../../../issue-like-table/types';
@@ -6,10 +8,13 @@ import { type ColumnResizeProps } from '../datasources-table-in-modal-preview/us
6
8
  import { type ColumnVisibilityProps } from '../datasources-table-in-modal-preview/use-column-visibility';
7
9
  import { type ColumnWrappingProps } from '../datasources-table-in-modal-preview/use-column-wrapping';
8
10
  type DatasourceContextStore = ColumnVisibilityProps & ColumnWrappingProps & ColumnResizeProps & {
11
+ datasourceId: string;
12
+ isValidParameters: (params: DatasourceParameters | undefined) => boolean;
9
13
  tableState: DatasourceTableState;
10
14
  visibleColumnKeys?: string[];
11
15
  parameters: DatasourceParameters | undefined;
12
16
  setParameters: React.Dispatch<React.SetStateAction<DatasourceParameters | undefined>>;
17
+ onInsert: (adf: InlineCardAdf | DatasourceAdf<any>, analyticsEvent?: UIAnalyticsEvent) => void;
13
18
  };
14
19
  export type Props = PropsWithChildren<{
15
20
  datasourceId: string;
@@ -18,7 +23,8 @@ export type Props = PropsWithChildren<{
18
23
  initialVisibleColumnKeys?: string[] | undefined;
19
24
  initialWrappedColumnKeys?: string[] | undefined;
20
25
  initialColumnCustomSizes?: ColumnSizesMap | undefined;
26
+ onInsert: (adf: InlineCardAdf | DatasourceAdf<any>, analyticsEvent?: UIAnalyticsEvent) => void;
21
27
  }>;
22
- export declare const DatasourceContextProvider: ({ children, datasourceId, isValidParameters, initialParameters, initialVisibleColumnKeys, initialColumnCustomSizes, initialWrappedColumnKeys, }: Props) => JSX.Element;
28
+ export declare const DatasourceContextProvider: ({ children, datasourceId, isValidParameters, initialParameters, initialVisibleColumnKeys, initialColumnCustomSizes, initialWrappedColumnKeys, onInsert, }: Props) => JSX.Element;
23
29
  export declare const useDatasourceContext: () => DatasourceContextStore;
24
30
  export {};
@@ -0,0 +1,9 @@
1
+ /** @jsx jsx */
2
+ import { type PropsWithChildren } from 'react';
3
+ import { jsx } from '@emotion/react';
4
+ export type InsertButtonProps = PropsWithChildren<{
5
+ testId: string;
6
+ url: string | undefined;
7
+ getAnalyticsPayload: () => Record<string, any>;
8
+ }>;
9
+ export declare const InsertButton: ({ testId, url, getAnalyticsPayload, children }: InsertButtonProps) => jsx.JSX.Element;
@@ -1,4 +1,6 @@
1
1
  import React, { type PropsWithChildren } from 'react';
2
+ import { type UIAnalyticsEvent } from '@atlaskit/analytics-next';
3
+ import { type DatasourceAdf, type InlineCardAdf } from '@atlaskit/linking-common';
2
4
  import type { DatasourceParameters } from '@atlaskit/linking-types';
3
5
  import { type DatasourceTableState } from '../../../../hooks/useDatasourceTableState';
4
6
  import type { ColumnSizesMap } from '../../../issue-like-table/types';
@@ -6,10 +8,13 @@ import { type ColumnResizeProps } from '../datasources-table-in-modal-preview/us
6
8
  import { type ColumnVisibilityProps } from '../datasources-table-in-modal-preview/use-column-visibility';
7
9
  import { type ColumnWrappingProps } from '../datasources-table-in-modal-preview/use-column-wrapping';
8
10
  type DatasourceContextStore = ColumnVisibilityProps & ColumnWrappingProps & ColumnResizeProps & {
11
+ datasourceId: string;
12
+ isValidParameters: (params: DatasourceParameters | undefined) => boolean;
9
13
  tableState: DatasourceTableState;
10
14
  visibleColumnKeys?: string[];
11
15
  parameters: DatasourceParameters | undefined;
12
16
  setParameters: React.Dispatch<React.SetStateAction<DatasourceParameters | undefined>>;
17
+ onInsert: (adf: InlineCardAdf | DatasourceAdf<any>, analyticsEvent?: UIAnalyticsEvent) => void;
13
18
  };
14
19
  export type Props = PropsWithChildren<{
15
20
  datasourceId: string;
@@ -18,7 +23,8 @@ export type Props = PropsWithChildren<{
18
23
  initialVisibleColumnKeys?: string[] | undefined;
19
24
  initialWrappedColumnKeys?: string[] | undefined;
20
25
  initialColumnCustomSizes?: ColumnSizesMap | undefined;
26
+ onInsert: (adf: InlineCardAdf | DatasourceAdf<any>, analyticsEvent?: UIAnalyticsEvent) => void;
21
27
  }>;
22
- export declare const DatasourceContextProvider: ({ children, datasourceId, isValidParameters, initialParameters, initialVisibleColumnKeys, initialColumnCustomSizes, initialWrappedColumnKeys, }: Props) => JSX.Element;
28
+ export declare const DatasourceContextProvider: ({ children, datasourceId, isValidParameters, initialParameters, initialVisibleColumnKeys, initialColumnCustomSizes, initialWrappedColumnKeys, onInsert, }: Props) => JSX.Element;
23
29
  export declare const useDatasourceContext: () => DatasourceContextStore;
24
30
  export {};
@@ -0,0 +1,9 @@
1
+ /** @jsx jsx */
2
+ import { type PropsWithChildren } from 'react';
3
+ import { jsx } from '@emotion/react';
4
+ export type InsertButtonProps = PropsWithChildren<{
5
+ testId: string;
6
+ url: string | undefined;
7
+ getAnalyticsPayload: () => Record<string, any>;
8
+ }>;
9
+ export declare const InsertButton: ({ testId, url, getAnalyticsPayload, children }: InsertButtonProps) => jsx.JSX.Element;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/link-datasource",
3
- "version": "2.5.11",
3
+ "version": "2.5.12",
4
4
  "description": "UI Components to support linking platform dataset feature",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",