@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 +7 -0
- package/dist/cjs/ui/common/modal/datasource-context/index.js +7 -3
- package/dist/cjs/ui/common/modal/insert-button/index.js +95 -0
- package/dist/cjs/ui/confluence-search-modal/modal/index.js +10 -66
- package/dist/es2019/ui/common/modal/datasource-context/index.js +7 -3
- package/dist/es2019/ui/common/modal/insert-button/index.js +96 -0
- package/dist/es2019/ui/confluence-search-modal/modal/index.js +11 -71
- package/dist/esm/ui/common/modal/datasource-context/index.js +7 -3
- package/dist/esm/ui/common/modal/insert-button/index.js +92 -0
- package/dist/esm/ui/confluence-search-modal/modal/index.js +12 -68
- package/dist/types/ui/common/modal/datasource-context/index.d.ts +7 -1
- package/dist/types/ui/common/modal/insert-button/index.d.ts +9 -0
- package/dist/types-ts4.5/ui/common/modal/datasource-context/index.d.ts +7 -1
- package/dist/types-ts4.5/ui/common/modal/insert-button/index.d.ts +9 -0
- package/package.json +1 -1
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
|
|
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
|
|
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:
|
|
332
|
+
getAnalyticsPayload: getButtonAnalyticsPayload,
|
|
389
333
|
testId: "confluence-search-modal--cancel-button"
|
|
390
|
-
}), !hasNoConfluenceSites && (0, _react2.jsx)(
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
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
|
-
|
|
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 {
|
|
13
|
+
import { useDatasourceAnalyticsEvents } from '../../../analytics';
|
|
15
14
|
import { componentMetadata } from '../../../analytics/constants';
|
|
16
|
-
import { DatasourceAction,
|
|
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
|
|
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:
|
|
319
|
+
getAnalyticsPayload: getButtonAnalyticsPayload,
|
|
380
320
|
testId: "confluence-search-modal--cancel-button"
|
|
381
|
-
}), !hasNoConfluenceSites && jsx(
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
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 {
|
|
17
|
+
import { useDatasourceAnalyticsEvents } from '../../../analytics';
|
|
19
18
|
import { componentMetadata } from '../../../analytics/constants';
|
|
20
|
-
import { DatasourceAction,
|
|
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
|
|
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
|
|
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:
|
|
329
|
+
getAnalyticsPayload: getButtonAnalyticsPayload,
|
|
386
330
|
testId: "confluence-search-modal--cancel-button"
|
|
387
|
-
}), !hasNoConfluenceSites && jsx(
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
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;
|