@atlaskit/link-datasource 1.25.0 → 1.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/cjs/ui/assets-modal/modal/index.js +11 -15
- package/dist/cjs/ui/assets-modal/modal/messages.js +0 -5
- package/dist/cjs/ui/common/modal/cancel-button/index.js +31 -0
- package/dist/cjs/ui/common/modal/cancel-button/messages.js +14 -0
- package/dist/cjs/ui/confluence-search-modal/modal/index.js +39 -9
- package/dist/cjs/ui/jira-issues-modal/modal/index.js +12 -15
- package/dist/cjs/ui/jira-issues-modal/modal/messages.js +0 -5
- package/dist/es2019/ui/assets-modal/modal/index.js +12 -16
- package/dist/es2019/ui/assets-modal/modal/messages.js +0 -5
- package/dist/es2019/ui/common/modal/cancel-button/index.js +25 -0
- package/dist/es2019/ui/common/modal/cancel-button/messages.js +8 -0
- package/dist/es2019/ui/confluence-search-modal/modal/index.js +42 -8
- package/dist/es2019/ui/jira-issues-modal/modal/index.js +17 -22
- package/dist/es2019/ui/jira-issues-modal/modal/messages.js +0 -5
- package/dist/esm/ui/assets-modal/modal/index.js +11 -15
- package/dist/esm/ui/assets-modal/modal/messages.js +0 -5
- package/dist/esm/ui/common/modal/cancel-button/index.js +23 -0
- package/dist/esm/ui/common/modal/cancel-button/messages.js +8 -0
- package/dist/esm/ui/confluence-search-modal/modal/index.js +38 -8
- package/dist/esm/ui/jira-issues-modal/modal/index.js +12 -15
- package/dist/esm/ui/jira-issues-modal/modal/messages.js +0 -5
- package/dist/types/analytics/generated/analytics.types.d.ts +1 -1
- package/dist/types/ui/assets-modal/modal/messages.d.ts +0 -5
- package/dist/types/ui/common/modal/cancel-button/index.d.ts +8 -0
- package/dist/types/ui/common/modal/cancel-button/messages.d.ts +7 -0
- package/dist/types/ui/confluence-search-modal/modal/index.d.ts +3 -1
- package/dist/types/ui/jira-issues-modal/modal/messages.d.ts +0 -5
- package/dist/types-ts4.5/analytics/generated/analytics.types.d.ts +1 -1
- package/dist/types-ts4.5/ui/assets-modal/modal/messages.d.ts +0 -5
- package/dist/types-ts4.5/ui/common/modal/cancel-button/index.d.ts +8 -0
- package/dist/types-ts4.5/ui/common/modal/cancel-button/messages.d.ts +7 -0
- package/dist/types-ts4.5/ui/confluence-search-modal/modal/index.d.ts +3 -1
- package/dist/types-ts4.5/ui/jira-issues-modal/modal/messages.d.ts +0 -5
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @atlaskit/link-datasource
|
|
2
2
|
|
|
3
|
+
## 1.25.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#86770](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/86770) [`67209c8f2921`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/67209c8f2921) - Adds cancel button click analytics event and tests to confluence-search config modal.
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
|
|
3
10
|
## 1.25.0
|
|
4
11
|
|
|
5
12
|
### Minor Changes
|
|
@@ -31,6 +31,7 @@ var _en = _interopRequireDefault(require("../../../i18n/en"));
|
|
|
31
31
|
var _cmdbService = require("../../../services/cmdbService.utils");
|
|
32
32
|
var _accessRequired = require("../../../ui/common/error-state/access-required");
|
|
33
33
|
var _modalLoadingError = require("../../common/error-state/modal-loading-error");
|
|
34
|
+
var _cancelButton = require("../../common/modal/cancel-button");
|
|
34
35
|
var _searchContainer = require("../search-container");
|
|
35
36
|
var _loadingState = require("../search-container/loading-state");
|
|
36
37
|
var _messages = require("./messages");
|
|
@@ -272,17 +273,6 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
|
|
|
272
273
|
}), consumerEvent);
|
|
273
274
|
}
|
|
274
275
|
}, [aql, schemaId, workspaceId, analyticsPayload, totalCount, retrieveUrlForSmartCardRender, responseItems.length, onInsert, datasourceId, visibleColumnKeys]);
|
|
275
|
-
var onCancelClick = (0, _react.useCallback)(function (e, analyticEvent) {
|
|
276
|
-
analyticEvent.update({
|
|
277
|
-
eventType: 'ui',
|
|
278
|
-
actionSubjectId: 'cancel',
|
|
279
|
-
attributes: _objectSpread(_objectSpread({}, analyticsPayload), {}, {
|
|
280
|
-
searchCount: searchCount.current,
|
|
281
|
-
actions: Array.from(userInteractionActions.current)
|
|
282
|
-
})
|
|
283
|
-
}).fire(_analytics.EVENT_CHANNEL);
|
|
284
|
-
onCancel();
|
|
285
|
-
}, [analyticsPayload, onCancel]);
|
|
286
276
|
var handleOnSearch = (0, _react.useCallback)(function (searchAql, searchSchemaId) {
|
|
287
277
|
if (schemaId !== searchSchemaId || aql !== searchAql || status === 'rejected') {
|
|
288
278
|
searchCount.current++;
|
|
@@ -336,6 +326,12 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
|
|
|
336
326
|
});
|
|
337
327
|
}
|
|
338
328
|
}, [errorState, workspaceId, assetsClientLoading, initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.aql, existingObjectSchema, objectSchemas, handleOnSearch, status]);
|
|
329
|
+
var getCancelButtonAnalyticsPayload = (0, _react.useCallback)(function () {
|
|
330
|
+
return _objectSpread(_objectSpread({}, analyticsPayload), {}, {
|
|
331
|
+
searchCount: searchCount.current,
|
|
332
|
+
actions: Array.from(userInteractionActions.current)
|
|
333
|
+
});
|
|
334
|
+
}, [analyticsPayload]);
|
|
339
335
|
return (0, _react2.jsx)(_intlMessagesProvider.IntlMessagesProvider, {
|
|
340
336
|
defaultMessages: _en.default,
|
|
341
337
|
loaderFn: _fetchMessagesForLocale.fetchMessagesForLocale
|
|
@@ -362,11 +358,11 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
|
|
|
362
358
|
columns: columns,
|
|
363
359
|
defaultVisibleColumnKeys: defaultVisibleColumnKeys,
|
|
364
360
|
modalRenderInstanceId: modalRenderInstanceId
|
|
365
|
-
})), (0, _react2.jsx)(_modalDialog.ModalFooter, null, (0, _react2.jsx)(
|
|
366
|
-
|
|
367
|
-
|
|
361
|
+
})), (0, _react2.jsx)(_modalDialog.ModalFooter, null, (0, _react2.jsx)(_cancelButton.CancelButton, {
|
|
362
|
+
onCancel: onCancel,
|
|
363
|
+
getAnalyticsPayload: getCancelButtonAnalyticsPayload,
|
|
368
364
|
testId: 'asset-datasource-modal--cancel-button'
|
|
369
|
-
}
|
|
365
|
+
}), (0, _react2.jsx)(_standardButton.default, {
|
|
370
366
|
appearance: "primary",
|
|
371
367
|
onClick: onInsertPressed,
|
|
372
368
|
isDisabled: isDisabled,
|
|
@@ -6,11 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.modalMessages = void 0;
|
|
7
7
|
var _reactIntlNext = require("react-intl-next");
|
|
8
8
|
var modalMessages = exports.modalMessages = (0, _reactIntlNext.defineMessages)({
|
|
9
|
-
cancelButtonText: {
|
|
10
|
-
id: 'linkDataSource.assets.configmodal.cancelButtonText',
|
|
11
|
-
description: 'Button text to close the modal with no changes being made',
|
|
12
|
-
defaultMessage: 'Cancel'
|
|
13
|
-
},
|
|
14
9
|
updateObjectsButtonText: {
|
|
15
10
|
id: 'linkDataSource.assets.configmodal.updateObjectsButtonText',
|
|
16
11
|
description: 'Button text to update the displayed content',
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.CancelButton = void 0;
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
var _react2 = require("@emotion/react");
|
|
10
|
+
var _reactIntlNext = require("react-intl-next");
|
|
11
|
+
var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
|
|
12
|
+
var _analytics = require("../../../../analytics");
|
|
13
|
+
var _messages = require("./messages");
|
|
14
|
+
/** @jsx jsx */
|
|
15
|
+
|
|
16
|
+
var CancelButton = exports.CancelButton = function CancelButton(_ref) {
|
|
17
|
+
var getAnalyticsPayload = _ref.getAnalyticsPayload,
|
|
18
|
+
onCancel = _ref.onCancel,
|
|
19
|
+
testId = _ref.testId;
|
|
20
|
+
var _useDatasourceAnalyti = (0, _analytics.useDatasourceAnalyticsEvents)(),
|
|
21
|
+
fireEvent = _useDatasourceAnalyti.fireEvent;
|
|
22
|
+
var onCancelClick = (0, _react.useCallback)(function () {
|
|
23
|
+
fireEvent('ui.button.clicked.cancel', getAnalyticsPayload());
|
|
24
|
+
onCancel();
|
|
25
|
+
}, [getAnalyticsPayload, fireEvent, onCancel]);
|
|
26
|
+
return (0, _react2.jsx)(_standardButton.default, {
|
|
27
|
+
appearance: "default",
|
|
28
|
+
onClick: onCancelClick,
|
|
29
|
+
testId: testId
|
|
30
|
+
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.cancelButtonMessages.cancelButtonText));
|
|
31
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.cancelButtonMessages = void 0;
|
|
7
|
+
var _reactIntlNext = require("react-intl-next");
|
|
8
|
+
var cancelButtonMessages = exports.cancelButtonMessages = (0, _reactIntlNext.defineMessages)({
|
|
9
|
+
cancelButtonText: {
|
|
10
|
+
id: 'linkDataSource.configmodal.cancelButtonText',
|
|
11
|
+
description: 'Button text to close the modal with no changes being made',
|
|
12
|
+
defaultMessage: 'Cancel'
|
|
13
|
+
}
|
|
14
|
+
});
|
|
@@ -5,7 +5,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.ConfluenceSearchConfigModal = void 0;
|
|
8
|
+
exports.PlainConfluenceSearchConfigModal = exports.ConfluenceSearchConfigModal = void 0;
|
|
9
9
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
@@ -16,6 +16,7 @@ var _react = require("react");
|
|
|
16
16
|
var _react2 = require("@emotion/react");
|
|
17
17
|
var _reactIntlNext = require("react-intl-next");
|
|
18
18
|
var _uuid = require("uuid");
|
|
19
|
+
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
19
20
|
var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
|
|
20
21
|
var _intlMessagesProvider = require("@atlaskit/intl-messages-provider");
|
|
21
22
|
var _modalDialog = _interopRequireWildcard(require("@atlaskit/modal-dialog"));
|
|
@@ -23,6 +24,8 @@ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
|
23
24
|
var _primitives = require("@atlaskit/primitives");
|
|
24
25
|
var _linkUrl = _interopRequireDefault(require("@atlaskit/smart-card/link-url"));
|
|
25
26
|
var _colors = require("@atlaskit/theme/colors");
|
|
27
|
+
var _constants = require("../../../analytics/constants");
|
|
28
|
+
var _types = require("../../../analytics/types");
|
|
26
29
|
var _adf = require("../../../common/utils/adf");
|
|
27
30
|
var _fetchMessagesForLocale = require("../../../common/utils/locale/fetch-messages-for-locale");
|
|
28
31
|
var _useDatasourceTableState = require("../../../hooks/useDatasourceTableState");
|
|
@@ -33,6 +36,7 @@ var _modalLoadingError = require("../../common/error-state/modal-loading-error")
|
|
|
33
36
|
var _noInstances = require("../../common/error-state/no-instances");
|
|
34
37
|
var _noResults = require("../../common/error-state/no-results");
|
|
35
38
|
var _initialStateView = require("../../common/initial-state-view");
|
|
39
|
+
var _cancelButton = require("../../common/modal/cancel-button");
|
|
36
40
|
var _contentContainer = require("../../common/modal/content-container");
|
|
37
41
|
var _siteSelector = require("../../common/modal/site-selector");
|
|
38
42
|
var _issueLikeTable = require("../../issue-like-table");
|
|
@@ -52,7 +56,7 @@ var searchCountStyles = (0, _primitives.xcss)({
|
|
|
52
56
|
flex: 1,
|
|
53
57
|
fontWeight: 600
|
|
54
58
|
});
|
|
55
|
-
var
|
|
59
|
+
var PlainConfluenceSearchConfigModal = exports.PlainConfluenceSearchConfigModal = function PlainConfluenceSearchConfigModal(props) {
|
|
56
60
|
var _useRef = (0, _react.useRef)((0, _uuid.v4)()),
|
|
57
61
|
modalRenderInstanceId = _useRef.current;
|
|
58
62
|
var datasourceId = props.datasourceId,
|
|
@@ -80,6 +84,10 @@ var ConfluenceSearchConfigModal = exports.ConfluenceSearchConfigModal = function
|
|
|
80
84
|
visibleColumnKeys = _useState8[0],
|
|
81
85
|
setVisibleColumnKeys = _useState8[1];
|
|
82
86
|
|
|
87
|
+
// analytics related parameters
|
|
88
|
+
var searchCount = (0, _react.useRef)(0);
|
|
89
|
+
var userInteractionActions = (0, _react.useRef)(new Set());
|
|
90
|
+
|
|
83
91
|
// TODO: further refactoring in EDM-9573
|
|
84
92
|
// https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/pull-requests/82725/overview?commentId=6829210
|
|
85
93
|
var parameters = (0, _react.useMemo)(function () {
|
|
@@ -106,9 +114,10 @@ var ConfluenceSearchConfigModal = exports.ConfluenceSearchConfigModal = function
|
|
|
106
114
|
columns = _useDatasourceTableSt.columns,
|
|
107
115
|
defaultVisibleColumnKeys = _useDatasourceTableSt.defaultVisibleColumnKeys,
|
|
108
116
|
loadDatasourceDetails = _useDatasourceTableSt.loadDatasourceDetails,
|
|
117
|
+
totalCount = _useDatasourceTableSt.totalCount,
|
|
109
118
|
_useDatasourceTableSt2 = _useDatasourceTableSt.extensionKey,
|
|
110
119
|
extensionKey = _useDatasourceTableSt2 === void 0 ? null : _useDatasourceTableSt2,
|
|
111
|
-
|
|
120
|
+
destinationObjectTypes = _useDatasourceTableSt.destinationObjectTypes;
|
|
112
121
|
var hasNoConfluenceSites = availableSites && availableSites.length === 0;
|
|
113
122
|
var selectedConfluenceSite = (0, _react.useMemo)(function () {
|
|
114
123
|
if (cloudId) {
|
|
@@ -270,14 +279,24 @@ var ConfluenceSearchConfigModal = exports.ConfluenceSearchConfigModal = function
|
|
|
270
279
|
}
|
|
271
280
|
}]
|
|
272
281
|
}));
|
|
273
|
-
}, [
|
|
282
|
+
}, [isParametersSet, cloudId, onInsert, datasourceId, parameters, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys]);
|
|
274
283
|
var onSearch = (0, _react.useCallback)(function (newSearchString) {
|
|
284
|
+
searchCount.current++;
|
|
285
|
+
userInteractionActions.current.add(_types.DatasourceAction.QUERY_UPDATED);
|
|
275
286
|
setSearchString(newSearchString);
|
|
276
287
|
reset({
|
|
277
288
|
shouldForceRequest: true
|
|
278
289
|
});
|
|
279
290
|
}, [reset]);
|
|
280
291
|
var isInsertDisabled = !isParametersSet || status === 'rejected' || status === 'unauthorized' || status === 'loading';
|
|
292
|
+
var getCancelButtonAnalyticsPayload = (0, _react.useCallback)(function () {
|
|
293
|
+
return {
|
|
294
|
+
extensionKey: extensionKey,
|
|
295
|
+
destinationObjectTypes: destinationObjectTypes,
|
|
296
|
+
searchCount: searchCount.current,
|
|
297
|
+
actions: Array.from(userInteractionActions.current)
|
|
298
|
+
};
|
|
299
|
+
}, [destinationObjectTypes, extensionKey]);
|
|
281
300
|
return (0, _react2.jsx)(_intlMessagesProvider.IntlMessagesProvider, {
|
|
282
301
|
defaultMessages: _en.default,
|
|
283
302
|
loaderFn: _fetchMessagesForLocale.fetchMessagesForLocale
|
|
@@ -319,13 +338,24 @@ var ConfluenceSearchConfigModal = exports.ConfluenceSearchConfigModal = function
|
|
|
319
338
|
values: {
|
|
320
339
|
totalCount: totalCount
|
|
321
340
|
}
|
|
322
|
-
})))), (0, _react2.jsx)(
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
341
|
+
})))), (0, _react2.jsx)(_cancelButton.CancelButton, {
|
|
342
|
+
onCancel: onCancel,
|
|
343
|
+
getAnalyticsPayload: getCancelButtonAnalyticsPayload,
|
|
344
|
+
testId: "confluence-search-modal--cancel-button"
|
|
345
|
+
}), !hasNoConfluenceSites && (0, _react2.jsx)(_standardButton.default, {
|
|
326
346
|
appearance: "primary",
|
|
327
347
|
onClick: onInsertPressed,
|
|
328
348
|
isDisabled: isInsertDisabled,
|
|
329
349
|
testId: "confluence-search-datasource-modal--insert-button"
|
|
330
350
|
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.confluenceSearchModalMessages.insertResultsButtonText)))));
|
|
331
|
-
};
|
|
351
|
+
};
|
|
352
|
+
var analyticsContextAttributes = {
|
|
353
|
+
dataProvider: 'confluence-search'
|
|
354
|
+
};
|
|
355
|
+
var analyticsContextData = _objectSpread(_objectSpread({}, _constants.componentMetadata.configModal), {}, {
|
|
356
|
+
source: 'datasourceConfigModal'
|
|
357
|
+
});
|
|
358
|
+
var contextData = _objectSpread(_objectSpread({}, analyticsContextData), {}, {
|
|
359
|
+
attributes: _objectSpread({}, analyticsContextAttributes)
|
|
360
|
+
});
|
|
361
|
+
var ConfluenceSearchConfigModal = exports.ConfluenceSearchConfigModal = (0, _analyticsNext.withAnalyticsContext)(contextData)(PlainConfluenceSearchConfigModal);
|
|
@@ -42,6 +42,7 @@ var _noInstances = require("../../common/error-state/no-instances");
|
|
|
42
42
|
var _noResults = require("../../common/error-state/no-results");
|
|
43
43
|
var _initialStateView = require("../../common/initial-state-view");
|
|
44
44
|
var _messages2 = require("../../common/initial-state-view/messages");
|
|
45
|
+
var _cancelButton = require("../../common/modal/cancel-button");
|
|
45
46
|
var _contentContainer = require("../../common/modal/content-container");
|
|
46
47
|
var _siteSelector = require("../../common/modal/site-selector");
|
|
47
48
|
var _issueLikeTable = require("../../issue-like-table");
|
|
@@ -335,17 +336,6 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
335
336
|
shouldForceRequest: true
|
|
336
337
|
});
|
|
337
338
|
}, [jql, reset]);
|
|
338
|
-
var onCancelClick = (0, _react.useCallback)(function (e, analyticEvent) {
|
|
339
|
-
analyticEvent.update({
|
|
340
|
-
eventType: 'ui',
|
|
341
|
-
actionSubjectId: 'cancel',
|
|
342
|
-
attributes: _objectSpread(_objectSpread({}, analyticsPayload), {}, {
|
|
343
|
-
searchCount: searchCount.current,
|
|
344
|
-
actions: Array.from(userInteractionActions.current)
|
|
345
|
-
})
|
|
346
|
-
}).fire(_analytics.EVENT_CHANNEL);
|
|
347
|
-
onCancel();
|
|
348
|
-
}, [analyticsPayload, onCancel]);
|
|
349
339
|
var onSiteSelection = (0, _react.useCallback)(function (site) {
|
|
350
340
|
userInteractionActions.current.add(_types.DatasourceAction.INSTANCE_UPDATED);
|
|
351
341
|
setJql('');
|
|
@@ -547,6 +537,12 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
547
537
|
return issueLikeDataTableView;
|
|
548
538
|
}, [columns.length, currentSearchMethod, issueLikeDataTableView, jql, jqlUrl, resolvedWithNoResults, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited]);
|
|
549
539
|
var siteSelectorLabel = availableSites && availableSites.length > 1 ? _messages3.modalMessages.insertIssuesTitleManySites : _messages3.modalMessages.insertIssuesTitle;
|
|
540
|
+
var getCancelButtonAnalyticsPayload = (0, _react.useCallback)(function () {
|
|
541
|
+
return _objectSpread(_objectSpread({}, analyticsPayload), {}, {
|
|
542
|
+
searchCount: searchCount.current,
|
|
543
|
+
actions: Array.from(userInteractionActions.current)
|
|
544
|
+
});
|
|
545
|
+
}, [analyticsPayload]);
|
|
550
546
|
return (0, _react2.jsx)(_intlMessagesProvider.IntlMessagesProvider, {
|
|
551
547
|
defaultMessages: _en.default,
|
|
552
548
|
loaderFn: _fetchMessagesForLocale.fetchMessagesForLocale
|
|
@@ -593,10 +589,11 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
593
589
|
values: {
|
|
594
590
|
totalCount: totalCount
|
|
595
591
|
}
|
|
596
|
-
})))), (0, _react2.jsx)(
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
592
|
+
})))), (0, _react2.jsx)(_cancelButton.CancelButton, {
|
|
593
|
+
onCancel: onCancel,
|
|
594
|
+
getAnalyticsPayload: getCancelButtonAnalyticsPayload,
|
|
595
|
+
testId: "jira-datasource-modal--cancel-button"
|
|
596
|
+
}), !hasNoJiraSites && (0, _react2.jsx)(_standardButton.default, {
|
|
600
597
|
appearance: "primary",
|
|
601
598
|
onClick: onInsertPressed,
|
|
602
599
|
isDisabled: isInsertDisabled,
|
|
@@ -6,11 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.modalMessages = void 0;
|
|
7
7
|
var _reactIntlNext = require("react-intl-next");
|
|
8
8
|
var modalMessages = exports.modalMessages = (0, _reactIntlNext.defineMessages)({
|
|
9
|
-
cancelButtonText: {
|
|
10
|
-
id: 'linkDataSource.jira-issues.configmodal.cancelButtonText',
|
|
11
|
-
description: 'Button text to close the modal with no changes being made',
|
|
12
|
-
defaultMessage: 'Cancel'
|
|
13
|
-
},
|
|
14
9
|
insertIssuesButtonText: {
|
|
15
10
|
id: 'linkDataSource.jira-issues.configmodal.insertIssuesButtonText',
|
|
16
11
|
description: 'Button text to insert the displayed content',
|
|
@@ -22,6 +22,7 @@ import i18nEN from '../../../i18n/en';
|
|
|
22
22
|
import { PermissionError } from '../../../services/cmdbService.utils';
|
|
23
23
|
import { AccessRequired } from '../../../ui/common/error-state/access-required';
|
|
24
24
|
import { ModalLoadingError } from '../../common/error-state/modal-loading-error';
|
|
25
|
+
import { CancelButton } from '../../common/modal/cancel-button';
|
|
25
26
|
import { AssetsSearchContainer } from '../search-container';
|
|
26
27
|
import { AssetsSearchContainerLoading } from '../search-container/loading-state';
|
|
27
28
|
import { modalMessages } from './messages';
|
|
@@ -246,18 +247,6 @@ const PlainAssetsConfigModal = props => {
|
|
|
246
247
|
}), consumerEvent);
|
|
247
248
|
}
|
|
248
249
|
}, [aql, schemaId, workspaceId, analyticsPayload, totalCount, retrieveUrlForSmartCardRender, responseItems.length, onInsert, datasourceId, visibleColumnKeys]);
|
|
249
|
-
const onCancelClick = useCallback((e, analyticEvent) => {
|
|
250
|
-
analyticEvent.update({
|
|
251
|
-
eventType: 'ui',
|
|
252
|
-
actionSubjectId: 'cancel',
|
|
253
|
-
attributes: {
|
|
254
|
-
...analyticsPayload,
|
|
255
|
-
searchCount: searchCount.current,
|
|
256
|
-
actions: Array.from(userInteractionActions.current)
|
|
257
|
-
}
|
|
258
|
-
}).fire(EVENT_CHANNEL);
|
|
259
|
-
onCancel();
|
|
260
|
-
}, [analyticsPayload, onCancel]);
|
|
261
250
|
const handleOnSearch = useCallback((searchAql, searchSchemaId) => {
|
|
262
251
|
if (schemaId !== searchSchemaId || aql !== searchAql || status === 'rejected') {
|
|
263
252
|
searchCount.current++;
|
|
@@ -311,6 +300,13 @@ const PlainAssetsConfigModal = props => {
|
|
|
311
300
|
});
|
|
312
301
|
}
|
|
313
302
|
}, [errorState, workspaceId, assetsClientLoading, initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.aql, existingObjectSchema, objectSchemas, handleOnSearch, status]);
|
|
303
|
+
const getCancelButtonAnalyticsPayload = useCallback(() => {
|
|
304
|
+
return {
|
|
305
|
+
...analyticsPayload,
|
|
306
|
+
searchCount: searchCount.current,
|
|
307
|
+
actions: Array.from(userInteractionActions.current)
|
|
308
|
+
};
|
|
309
|
+
}, [analyticsPayload]);
|
|
314
310
|
return jsx(IntlMessagesProvider, {
|
|
315
311
|
defaultMessages: i18nEN,
|
|
316
312
|
loaderFn: fetchMessagesForLocale
|
|
@@ -337,11 +333,11 @@ const PlainAssetsConfigModal = props => {
|
|
|
337
333
|
columns: columns,
|
|
338
334
|
defaultVisibleColumnKeys: defaultVisibleColumnKeys,
|
|
339
335
|
modalRenderInstanceId: modalRenderInstanceId
|
|
340
|
-
})), jsx(ModalFooter, null, jsx(
|
|
341
|
-
|
|
342
|
-
|
|
336
|
+
})), jsx(ModalFooter, null, jsx(CancelButton, {
|
|
337
|
+
onCancel: onCancel,
|
|
338
|
+
getAnalyticsPayload: getCancelButtonAnalyticsPayload,
|
|
343
339
|
testId: 'asset-datasource-modal--cancel-button'
|
|
344
|
-
}
|
|
340
|
+
}), jsx(Button, {
|
|
345
341
|
appearance: "primary",
|
|
346
342
|
onClick: onInsertPressed,
|
|
347
343
|
isDisabled: isDisabled,
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import { defineMessages } from 'react-intl-next';
|
|
2
2
|
export const modalMessages = defineMessages({
|
|
3
|
-
cancelButtonText: {
|
|
4
|
-
id: 'linkDataSource.assets.configmodal.cancelButtonText',
|
|
5
|
-
description: 'Button text to close the modal with no changes being made',
|
|
6
|
-
defaultMessage: 'Cancel'
|
|
7
|
-
},
|
|
8
3
|
updateObjectsButtonText: {
|
|
9
4
|
id: 'linkDataSource.assets.configmodal.updateObjectsButtonText',
|
|
10
5
|
description: 'Button text to update the displayed content',
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { useCallback } from 'react';
|
|
3
|
+
import { jsx } from '@emotion/react';
|
|
4
|
+
import { FormattedMessage } from 'react-intl-next';
|
|
5
|
+
import Button from '@atlaskit/button/standard-button';
|
|
6
|
+
import { useDatasourceAnalyticsEvents } from '../../../../analytics';
|
|
7
|
+
import { cancelButtonMessages } from './messages';
|
|
8
|
+
export const CancelButton = ({
|
|
9
|
+
getAnalyticsPayload,
|
|
10
|
+
onCancel,
|
|
11
|
+
testId
|
|
12
|
+
}) => {
|
|
13
|
+
const {
|
|
14
|
+
fireEvent
|
|
15
|
+
} = useDatasourceAnalyticsEvents();
|
|
16
|
+
const onCancelClick = useCallback(() => {
|
|
17
|
+
fireEvent('ui.button.clicked.cancel', getAnalyticsPayload());
|
|
18
|
+
onCancel();
|
|
19
|
+
}, [getAnalyticsPayload, fireEvent, onCancel]);
|
|
20
|
+
return jsx(Button, {
|
|
21
|
+
appearance: "default",
|
|
22
|
+
onClick: onCancelClick,
|
|
23
|
+
testId: testId
|
|
24
|
+
}, jsx(FormattedMessage, cancelButtonMessages.cancelButtonText));
|
|
25
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { defineMessages } from 'react-intl-next';
|
|
2
|
+
export const cancelButtonMessages = defineMessages({
|
|
3
|
+
cancelButtonText: {
|
|
4
|
+
id: 'linkDataSource.configmodal.cancelButtonText',
|
|
5
|
+
description: 'Button text to close the modal with no changes being made',
|
|
6
|
+
defaultMessage: 'Cancel'
|
|
7
|
+
}
|
|
8
|
+
});
|
|
@@ -4,6 +4,7 @@ import { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'rea
|
|
|
4
4
|
import { jsx } from '@emotion/react';
|
|
5
5
|
import { FormattedMessage, FormattedNumber } from 'react-intl-next';
|
|
6
6
|
import { v4 as uuidv4 } from 'uuid';
|
|
7
|
+
import { withAnalyticsContext } from '@atlaskit/analytics-next';
|
|
7
8
|
import Button from '@atlaskit/button/standard-button';
|
|
8
9
|
import { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
|
|
9
10
|
import Modal, { ModalBody, ModalFooter, ModalHeader, ModalTitle } from '@atlaskit/modal-dialog';
|
|
@@ -11,6 +12,8 @@ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
|
|
|
11
12
|
import { Box, xcss } from '@atlaskit/primitives';
|
|
12
13
|
import LinkUrl from '@atlaskit/smart-card/link-url';
|
|
13
14
|
import { N800 } from '@atlaskit/theme/colors';
|
|
15
|
+
import { componentMetadata } from '../../../analytics/constants';
|
|
16
|
+
import { DatasourceAction } from '../../../analytics/types';
|
|
14
17
|
import { buildDatasourceAdf } from '../../../common/utils/adf';
|
|
15
18
|
import { fetchMessagesForLocale } from '../../../common/utils/locale/fetch-messages-for-locale';
|
|
16
19
|
import { useDatasourceTableState } from '../../../hooks/useDatasourceTableState';
|
|
@@ -21,6 +24,7 @@ import { ModalLoadingError } from '../../common/error-state/modal-loading-error'
|
|
|
21
24
|
import { NoInstancesView } from '../../common/error-state/no-instances';
|
|
22
25
|
import { NoResults } from '../../common/error-state/no-results';
|
|
23
26
|
import { InitialStateView } from '../../common/initial-state-view';
|
|
27
|
+
import { CancelButton } from '../../common/modal/cancel-button';
|
|
24
28
|
import { ContentContainer } from '../../common/modal/content-container';
|
|
25
29
|
import { SiteSelector } from '../../common/modal/site-selector';
|
|
26
30
|
import { EmptyState, IssueLikeDataTableView } from '../../issue-like-table';
|
|
@@ -36,7 +40,7 @@ const searchCountStyles = xcss({
|
|
|
36
40
|
flex: 1,
|
|
37
41
|
fontWeight: 600
|
|
38
42
|
});
|
|
39
|
-
export const
|
|
43
|
+
export const PlainConfluenceSearchConfigModal = props => {
|
|
40
44
|
const {
|
|
41
45
|
current: modalRenderInstanceId
|
|
42
46
|
} = useRef(uuidv4());
|
|
@@ -55,6 +59,10 @@ export const ConfluenceSearchConfigModal = props => {
|
|
|
55
59
|
const [searchString, setSearchString] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.searchString);
|
|
56
60
|
const [visibleColumnKeys, setVisibleColumnKeys] = useState(initialVisibleColumnKeys);
|
|
57
61
|
|
|
62
|
+
// analytics related parameters
|
|
63
|
+
const searchCount = useRef(0);
|
|
64
|
+
const userInteractionActions = useRef(new Set());
|
|
65
|
+
|
|
58
66
|
// TODO: further refactoring in EDM-9573
|
|
59
67
|
// https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/pull-requests/82725/overview?commentId=6829210
|
|
60
68
|
const parameters = useMemo(() => ({
|
|
@@ -72,8 +80,9 @@ export const ConfluenceSearchConfigModal = props => {
|
|
|
72
80
|
columns,
|
|
73
81
|
defaultVisibleColumnKeys,
|
|
74
82
|
loadDatasourceDetails,
|
|
83
|
+
totalCount,
|
|
75
84
|
extensionKey = null,
|
|
76
|
-
|
|
85
|
+
destinationObjectTypes
|
|
77
86
|
} = useDatasourceTableState({
|
|
78
87
|
datasourceId,
|
|
79
88
|
parameters: isParametersSet ? parameters : undefined,
|
|
@@ -215,14 +224,24 @@ export const ConfluenceSearchConfigModal = props => {
|
|
|
215
224
|
}
|
|
216
225
|
}]
|
|
217
226
|
}));
|
|
218
|
-
}, [
|
|
227
|
+
}, [isParametersSet, cloudId, onInsert, datasourceId, parameters, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys]);
|
|
219
228
|
const onSearch = useCallback(newSearchString => {
|
|
229
|
+
searchCount.current++;
|
|
230
|
+
userInteractionActions.current.add(DatasourceAction.QUERY_UPDATED);
|
|
220
231
|
setSearchString(newSearchString);
|
|
221
232
|
reset({
|
|
222
233
|
shouldForceRequest: true
|
|
223
234
|
});
|
|
224
235
|
}, [reset]);
|
|
225
236
|
const isInsertDisabled = !isParametersSet || status === 'rejected' || status === 'unauthorized' || status === 'loading';
|
|
237
|
+
const getCancelButtonAnalyticsPayload = useCallback(() => {
|
|
238
|
+
return {
|
|
239
|
+
extensionKey,
|
|
240
|
+
destinationObjectTypes,
|
|
241
|
+
searchCount: searchCount.current,
|
|
242
|
+
actions: Array.from(userInteractionActions.current)
|
|
243
|
+
};
|
|
244
|
+
}, [destinationObjectTypes, extensionKey]);
|
|
226
245
|
return jsx(IntlMessagesProvider, {
|
|
227
246
|
defaultMessages: i18nEN,
|
|
228
247
|
loaderFn: fetchMessagesForLocale
|
|
@@ -264,13 +283,28 @@ export const ConfluenceSearchConfigModal = props => {
|
|
|
264
283
|
values: {
|
|
265
284
|
totalCount
|
|
266
285
|
}
|
|
267
|
-
})))), jsx(
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
286
|
+
})))), jsx(CancelButton, {
|
|
287
|
+
onCancel: onCancel,
|
|
288
|
+
getAnalyticsPayload: getCancelButtonAnalyticsPayload,
|
|
289
|
+
testId: "confluence-search-modal--cancel-button"
|
|
290
|
+
}), !hasNoConfluenceSites && jsx(Button, {
|
|
271
291
|
appearance: "primary",
|
|
272
292
|
onClick: onInsertPressed,
|
|
273
293
|
isDisabled: isInsertDisabled,
|
|
274
294
|
testId: "confluence-search-datasource-modal--insert-button"
|
|
275
295
|
}, jsx(FormattedMessage, confluenceSearchModalMessages.insertResultsButtonText)))));
|
|
276
|
-
};
|
|
296
|
+
};
|
|
297
|
+
const analyticsContextAttributes = {
|
|
298
|
+
dataProvider: 'confluence-search'
|
|
299
|
+
};
|
|
300
|
+
const analyticsContextData = {
|
|
301
|
+
...componentMetadata.configModal,
|
|
302
|
+
source: 'datasourceConfigModal'
|
|
303
|
+
};
|
|
304
|
+
const contextData = {
|
|
305
|
+
...analyticsContextData,
|
|
306
|
+
attributes: {
|
|
307
|
+
...analyticsContextAttributes
|
|
308
|
+
}
|
|
309
|
+
};
|
|
310
|
+
export const ConfluenceSearchConfigModal = withAnalyticsContext(contextData)(PlainConfluenceSearchConfigModal);
|
|
@@ -30,6 +30,7 @@ import { NoInstancesView } from '../../common/error-state/no-instances';
|
|
|
30
30
|
import { NoResults } from '../../common/error-state/no-results';
|
|
31
31
|
import { InitialStateView } from '../../common/initial-state-view';
|
|
32
32
|
import { initialStateViewMessages } from '../../common/initial-state-view/messages';
|
|
33
|
+
import { CancelButton } from '../../common/modal/cancel-button';
|
|
33
34
|
import { ContentContainer } from '../../common/modal/content-container';
|
|
34
35
|
import { SiteSelector } from '../../common/modal/site-selector';
|
|
35
36
|
import { EmptyState, IssueLikeDataTableView } from '../../issue-like-table';
|
|
@@ -161,12 +162,10 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
161
162
|
return (availableSites === null || availableSites === void 0 ? void 0 : availableSites.find(jiraSite => jiraSite.url === currentlyLoggedInSiteUrl)) || (availableSites === null || availableSites === void 0 ? void 0 : availableSites[0]);
|
|
162
163
|
}
|
|
163
164
|
}, [availableSites, cloudId]);
|
|
164
|
-
const analyticsPayload = useMemo(() => {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
};
|
|
169
|
-
}, [destinationObjectTypes, extensionKey]);
|
|
165
|
+
const analyticsPayload = useMemo(() => ({
|
|
166
|
+
extensionKey,
|
|
167
|
+
destinationObjectTypes
|
|
168
|
+
}), [destinationObjectTypes, extensionKey]);
|
|
170
169
|
const resolvedWithNoResults = status === 'resolved' && !responseItems.length;
|
|
171
170
|
const jqlUrl = selectedJiraSite && jql && `${selectedJiraSite.url}/issues/?jql=${encodeURI(jql)}`;
|
|
172
171
|
const isInsertDisabled = !isParametersSet || status === 'rejected' || status === 'unauthorized' || status === 'loading';
|
|
@@ -277,18 +276,6 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
277
276
|
shouldForceRequest: true
|
|
278
277
|
});
|
|
279
278
|
}, [jql, reset]);
|
|
280
|
-
const onCancelClick = useCallback((e, analyticEvent) => {
|
|
281
|
-
analyticEvent.update({
|
|
282
|
-
eventType: 'ui',
|
|
283
|
-
actionSubjectId: 'cancel',
|
|
284
|
-
attributes: {
|
|
285
|
-
...analyticsPayload,
|
|
286
|
-
searchCount: searchCount.current,
|
|
287
|
-
actions: Array.from(userInteractionActions.current)
|
|
288
|
-
}
|
|
289
|
-
}).fire(EVENT_CHANNEL);
|
|
290
|
-
onCancel();
|
|
291
|
-
}, [analyticsPayload, onCancel]);
|
|
292
279
|
const onSiteSelection = useCallback(site => {
|
|
293
280
|
userInteractionActions.current.add(DatasourceAction.INSTANCE_UPDATED);
|
|
294
281
|
setJql('');
|
|
@@ -493,6 +480,13 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
493
480
|
return issueLikeDataTableView;
|
|
494
481
|
}, [columns.length, currentSearchMethod, issueLikeDataTableView, jql, jqlUrl, resolvedWithNoResults, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited]);
|
|
495
482
|
const siteSelectorLabel = availableSites && availableSites.length > 1 ? modalMessages.insertIssuesTitleManySites : modalMessages.insertIssuesTitle;
|
|
483
|
+
const getCancelButtonAnalyticsPayload = useCallback(() => {
|
|
484
|
+
return {
|
|
485
|
+
...analyticsPayload,
|
|
486
|
+
searchCount: searchCount.current,
|
|
487
|
+
actions: Array.from(userInteractionActions.current)
|
|
488
|
+
};
|
|
489
|
+
}, [analyticsPayload]);
|
|
496
490
|
return jsx(IntlMessagesProvider, {
|
|
497
491
|
defaultMessages: i18nEN,
|
|
498
492
|
loaderFn: fetchMessagesForLocale
|
|
@@ -539,10 +533,11 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
539
533
|
values: {
|
|
540
534
|
totalCount
|
|
541
535
|
}
|
|
542
|
-
})))), jsx(
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
536
|
+
})))), jsx(CancelButton, {
|
|
537
|
+
onCancel: onCancel,
|
|
538
|
+
getAnalyticsPayload: getCancelButtonAnalyticsPayload,
|
|
539
|
+
testId: "jira-datasource-modal--cancel-button"
|
|
540
|
+
}), !hasNoJiraSites && jsx(Button, {
|
|
546
541
|
appearance: "primary",
|
|
547
542
|
onClick: onInsertPressed,
|
|
548
543
|
isDisabled: isInsertDisabled,
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import { defineMessages } from 'react-intl-next';
|
|
2
2
|
export const modalMessages = defineMessages({
|
|
3
|
-
cancelButtonText: {
|
|
4
|
-
id: 'linkDataSource.jira-issues.configmodal.cancelButtonText',
|
|
5
|
-
description: 'Button text to close the modal with no changes being made',
|
|
6
|
-
defaultMessage: 'Cancel'
|
|
7
|
-
},
|
|
8
3
|
insertIssuesButtonText: {
|
|
9
4
|
id: 'linkDataSource.jira-issues.configmodal.insertIssuesButtonText',
|
|
10
5
|
description: 'Button text to insert the displayed content',
|
|
@@ -26,6 +26,7 @@ import i18nEN from '../../../i18n/en';
|
|
|
26
26
|
import { PermissionError } from '../../../services/cmdbService.utils';
|
|
27
27
|
import { AccessRequired } from '../../../ui/common/error-state/access-required';
|
|
28
28
|
import { ModalLoadingError } from '../../common/error-state/modal-loading-error';
|
|
29
|
+
import { CancelButton } from '../../common/modal/cancel-button';
|
|
29
30
|
import { AssetsSearchContainer } from '../search-container';
|
|
30
31
|
import { AssetsSearchContainerLoading } from '../search-container/loading-state';
|
|
31
32
|
import { modalMessages } from './messages';
|
|
@@ -263,17 +264,6 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
|
|
|
263
264
|
}), consumerEvent);
|
|
264
265
|
}
|
|
265
266
|
}, [aql, schemaId, workspaceId, analyticsPayload, totalCount, retrieveUrlForSmartCardRender, responseItems.length, onInsert, datasourceId, visibleColumnKeys]);
|
|
266
|
-
var onCancelClick = useCallback(function (e, analyticEvent) {
|
|
267
|
-
analyticEvent.update({
|
|
268
|
-
eventType: 'ui',
|
|
269
|
-
actionSubjectId: 'cancel',
|
|
270
|
-
attributes: _objectSpread(_objectSpread({}, analyticsPayload), {}, {
|
|
271
|
-
searchCount: searchCount.current,
|
|
272
|
-
actions: Array.from(userInteractionActions.current)
|
|
273
|
-
})
|
|
274
|
-
}).fire(EVENT_CHANNEL);
|
|
275
|
-
onCancel();
|
|
276
|
-
}, [analyticsPayload, onCancel]);
|
|
277
267
|
var handleOnSearch = useCallback(function (searchAql, searchSchemaId) {
|
|
278
268
|
if (schemaId !== searchSchemaId || aql !== searchAql || status === 'rejected') {
|
|
279
269
|
searchCount.current++;
|
|
@@ -327,6 +317,12 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
|
|
|
327
317
|
});
|
|
328
318
|
}
|
|
329
319
|
}, [errorState, workspaceId, assetsClientLoading, initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.aql, existingObjectSchema, objectSchemas, handleOnSearch, status]);
|
|
320
|
+
var getCancelButtonAnalyticsPayload = useCallback(function () {
|
|
321
|
+
return _objectSpread(_objectSpread({}, analyticsPayload), {}, {
|
|
322
|
+
searchCount: searchCount.current,
|
|
323
|
+
actions: Array.from(userInteractionActions.current)
|
|
324
|
+
});
|
|
325
|
+
}, [analyticsPayload]);
|
|
330
326
|
return jsx(IntlMessagesProvider, {
|
|
331
327
|
defaultMessages: i18nEN,
|
|
332
328
|
loaderFn: fetchMessagesForLocale
|
|
@@ -353,11 +349,11 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
|
|
|
353
349
|
columns: columns,
|
|
354
350
|
defaultVisibleColumnKeys: defaultVisibleColumnKeys,
|
|
355
351
|
modalRenderInstanceId: modalRenderInstanceId
|
|
356
|
-
})), jsx(ModalFooter, null, jsx(
|
|
357
|
-
|
|
358
|
-
|
|
352
|
+
})), jsx(ModalFooter, null, jsx(CancelButton, {
|
|
353
|
+
onCancel: onCancel,
|
|
354
|
+
getAnalyticsPayload: getCancelButtonAnalyticsPayload,
|
|
359
355
|
testId: 'asset-datasource-modal--cancel-button'
|
|
360
|
-
}
|
|
356
|
+
}), jsx(Button, {
|
|
361
357
|
appearance: "primary",
|
|
362
358
|
onClick: onInsertPressed,
|
|
363
359
|
isDisabled: isDisabled,
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import { defineMessages } from 'react-intl-next';
|
|
2
2
|
export var modalMessages = defineMessages({
|
|
3
|
-
cancelButtonText: {
|
|
4
|
-
id: 'linkDataSource.assets.configmodal.cancelButtonText',
|
|
5
|
-
description: 'Button text to close the modal with no changes being made',
|
|
6
|
-
defaultMessage: 'Cancel'
|
|
7
|
-
},
|
|
8
3
|
updateObjectsButtonText: {
|
|
9
4
|
id: 'linkDataSource.assets.configmodal.updateObjectsButtonText',
|
|
10
5
|
description: 'Button text to update the displayed content',
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { useCallback } from 'react';
|
|
3
|
+
import { jsx } from '@emotion/react';
|
|
4
|
+
import { FormattedMessage } from 'react-intl-next';
|
|
5
|
+
import Button from '@atlaskit/button/standard-button';
|
|
6
|
+
import { useDatasourceAnalyticsEvents } from '../../../../analytics';
|
|
7
|
+
import { cancelButtonMessages } from './messages';
|
|
8
|
+
export var CancelButton = function CancelButton(_ref) {
|
|
9
|
+
var getAnalyticsPayload = _ref.getAnalyticsPayload,
|
|
10
|
+
onCancel = _ref.onCancel,
|
|
11
|
+
testId = _ref.testId;
|
|
12
|
+
var _useDatasourceAnalyti = useDatasourceAnalyticsEvents(),
|
|
13
|
+
fireEvent = _useDatasourceAnalyti.fireEvent;
|
|
14
|
+
var onCancelClick = useCallback(function () {
|
|
15
|
+
fireEvent('ui.button.clicked.cancel', getAnalyticsPayload());
|
|
16
|
+
onCancel();
|
|
17
|
+
}, [getAnalyticsPayload, fireEvent, onCancel]);
|
|
18
|
+
return jsx(Button, {
|
|
19
|
+
appearance: "default",
|
|
20
|
+
onClick: onCancelClick,
|
|
21
|
+
testId: testId
|
|
22
|
+
}, jsx(FormattedMessage, cancelButtonMessages.cancelButtonText));
|
|
23
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { defineMessages } from 'react-intl-next';
|
|
2
|
+
export var cancelButtonMessages = defineMessages({
|
|
3
|
+
cancelButtonText: {
|
|
4
|
+
id: 'linkDataSource.configmodal.cancelButtonText',
|
|
5
|
+
description: 'Button text to close the modal with no changes being made',
|
|
6
|
+
defaultMessage: 'Cancel'
|
|
7
|
+
}
|
|
8
|
+
});
|
|
@@ -11,6 +11,7 @@ import { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'rea
|
|
|
11
11
|
import { jsx } from '@emotion/react';
|
|
12
12
|
import { FormattedMessage, FormattedNumber } from 'react-intl-next';
|
|
13
13
|
import { v4 as uuidv4 } from 'uuid';
|
|
14
|
+
import { withAnalyticsContext } from '@atlaskit/analytics-next';
|
|
14
15
|
import Button from '@atlaskit/button/standard-button';
|
|
15
16
|
import { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
|
|
16
17
|
import Modal, { ModalBody, ModalFooter, ModalHeader, ModalTitle } from '@atlaskit/modal-dialog';
|
|
@@ -18,6 +19,8 @@ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
|
|
|
18
19
|
import { Box, xcss } from '@atlaskit/primitives';
|
|
19
20
|
import LinkUrl from '@atlaskit/smart-card/link-url';
|
|
20
21
|
import { N800 } from '@atlaskit/theme/colors';
|
|
22
|
+
import { componentMetadata } from '../../../analytics/constants';
|
|
23
|
+
import { DatasourceAction } from '../../../analytics/types';
|
|
21
24
|
import { buildDatasourceAdf } from '../../../common/utils/adf';
|
|
22
25
|
import { fetchMessagesForLocale } from '../../../common/utils/locale/fetch-messages-for-locale';
|
|
23
26
|
import { useDatasourceTableState } from '../../../hooks/useDatasourceTableState';
|
|
@@ -28,6 +31,7 @@ import { ModalLoadingError } from '../../common/error-state/modal-loading-error'
|
|
|
28
31
|
import { NoInstancesView } from '../../common/error-state/no-instances';
|
|
29
32
|
import { NoResults } from '../../common/error-state/no-results';
|
|
30
33
|
import { InitialStateView } from '../../common/initial-state-view';
|
|
34
|
+
import { CancelButton } from '../../common/modal/cancel-button';
|
|
31
35
|
import { ContentContainer } from '../../common/modal/content-container';
|
|
32
36
|
import { SiteSelector } from '../../common/modal/site-selector';
|
|
33
37
|
import { EmptyState, IssueLikeDataTableView } from '../../issue-like-table';
|
|
@@ -43,7 +47,7 @@ var searchCountStyles = xcss({
|
|
|
43
47
|
flex: 1,
|
|
44
48
|
fontWeight: 600
|
|
45
49
|
});
|
|
46
|
-
export var
|
|
50
|
+
export var PlainConfluenceSearchConfigModal = function PlainConfluenceSearchConfigModal(props) {
|
|
47
51
|
var _useRef = useRef(uuidv4()),
|
|
48
52
|
modalRenderInstanceId = _useRef.current;
|
|
49
53
|
var datasourceId = props.datasourceId,
|
|
@@ -71,6 +75,10 @@ export var ConfluenceSearchConfigModal = function ConfluenceSearchConfigModal(pr
|
|
|
71
75
|
visibleColumnKeys = _useState8[0],
|
|
72
76
|
setVisibleColumnKeys = _useState8[1];
|
|
73
77
|
|
|
78
|
+
// analytics related parameters
|
|
79
|
+
var searchCount = useRef(0);
|
|
80
|
+
var userInteractionActions = useRef(new Set());
|
|
81
|
+
|
|
74
82
|
// TODO: further refactoring in EDM-9573
|
|
75
83
|
// https://stash.atlassian.com/projects/ATLASSIAN/repos/atlassian-frontend-monorepo/pull-requests/82725/overview?commentId=6829210
|
|
76
84
|
var parameters = useMemo(function () {
|
|
@@ -97,9 +105,10 @@ export var ConfluenceSearchConfigModal = function ConfluenceSearchConfigModal(pr
|
|
|
97
105
|
columns = _useDatasourceTableSt.columns,
|
|
98
106
|
defaultVisibleColumnKeys = _useDatasourceTableSt.defaultVisibleColumnKeys,
|
|
99
107
|
loadDatasourceDetails = _useDatasourceTableSt.loadDatasourceDetails,
|
|
108
|
+
totalCount = _useDatasourceTableSt.totalCount,
|
|
100
109
|
_useDatasourceTableSt2 = _useDatasourceTableSt.extensionKey,
|
|
101
110
|
extensionKey = _useDatasourceTableSt2 === void 0 ? null : _useDatasourceTableSt2,
|
|
102
|
-
|
|
111
|
+
destinationObjectTypes = _useDatasourceTableSt.destinationObjectTypes;
|
|
103
112
|
var hasNoConfluenceSites = availableSites && availableSites.length === 0;
|
|
104
113
|
var selectedConfluenceSite = useMemo(function () {
|
|
105
114
|
if (cloudId) {
|
|
@@ -261,14 +270,24 @@ export var ConfluenceSearchConfigModal = function ConfluenceSearchConfigModal(pr
|
|
|
261
270
|
}
|
|
262
271
|
}]
|
|
263
272
|
}));
|
|
264
|
-
}, [
|
|
273
|
+
}, [isParametersSet, cloudId, onInsert, datasourceId, parameters, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys]);
|
|
265
274
|
var onSearch = useCallback(function (newSearchString) {
|
|
275
|
+
searchCount.current++;
|
|
276
|
+
userInteractionActions.current.add(DatasourceAction.QUERY_UPDATED);
|
|
266
277
|
setSearchString(newSearchString);
|
|
267
278
|
reset({
|
|
268
279
|
shouldForceRequest: true
|
|
269
280
|
});
|
|
270
281
|
}, [reset]);
|
|
271
282
|
var isInsertDisabled = !isParametersSet || status === 'rejected' || status === 'unauthorized' || status === 'loading';
|
|
283
|
+
var getCancelButtonAnalyticsPayload = useCallback(function () {
|
|
284
|
+
return {
|
|
285
|
+
extensionKey: extensionKey,
|
|
286
|
+
destinationObjectTypes: destinationObjectTypes,
|
|
287
|
+
searchCount: searchCount.current,
|
|
288
|
+
actions: Array.from(userInteractionActions.current)
|
|
289
|
+
};
|
|
290
|
+
}, [destinationObjectTypes, extensionKey]);
|
|
272
291
|
return jsx(IntlMessagesProvider, {
|
|
273
292
|
defaultMessages: i18nEN,
|
|
274
293
|
loaderFn: fetchMessagesForLocale
|
|
@@ -310,13 +329,24 @@ export var ConfluenceSearchConfigModal = function ConfluenceSearchConfigModal(pr
|
|
|
310
329
|
values: {
|
|
311
330
|
totalCount: totalCount
|
|
312
331
|
}
|
|
313
|
-
})))), jsx(
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
332
|
+
})))), jsx(CancelButton, {
|
|
333
|
+
onCancel: onCancel,
|
|
334
|
+
getAnalyticsPayload: getCancelButtonAnalyticsPayload,
|
|
335
|
+
testId: "confluence-search-modal--cancel-button"
|
|
336
|
+
}), !hasNoConfluenceSites && jsx(Button, {
|
|
317
337
|
appearance: "primary",
|
|
318
338
|
onClick: onInsertPressed,
|
|
319
339
|
isDisabled: isInsertDisabled,
|
|
320
340
|
testId: "confluence-search-datasource-modal--insert-button"
|
|
321
341
|
}, jsx(FormattedMessage, confluenceSearchModalMessages.insertResultsButtonText)))));
|
|
322
|
-
};
|
|
342
|
+
};
|
|
343
|
+
var analyticsContextAttributes = {
|
|
344
|
+
dataProvider: 'confluence-search'
|
|
345
|
+
};
|
|
346
|
+
var analyticsContextData = _objectSpread(_objectSpread({}, componentMetadata.configModal), {}, {
|
|
347
|
+
source: 'datasourceConfigModal'
|
|
348
|
+
});
|
|
349
|
+
var contextData = _objectSpread(_objectSpread({}, analyticsContextData), {}, {
|
|
350
|
+
attributes: _objectSpread({}, analyticsContextAttributes)
|
|
351
|
+
});
|
|
352
|
+
export var ConfluenceSearchConfigModal = withAnalyticsContext(contextData)(PlainConfluenceSearchConfigModal);
|
|
@@ -37,6 +37,7 @@ import { NoInstancesView } from '../../common/error-state/no-instances';
|
|
|
37
37
|
import { NoResults } from '../../common/error-state/no-results';
|
|
38
38
|
import { InitialStateView } from '../../common/initial-state-view';
|
|
39
39
|
import { initialStateViewMessages } from '../../common/initial-state-view/messages';
|
|
40
|
+
import { CancelButton } from '../../common/modal/cancel-button';
|
|
40
41
|
import { ContentContainer } from '../../common/modal/content-container';
|
|
41
42
|
import { SiteSelector } from '../../common/modal/site-selector';
|
|
42
43
|
import { EmptyState, IssueLikeDataTableView } from '../../issue-like-table';
|
|
@@ -326,17 +327,6 @@ export var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(prop
|
|
|
326
327
|
shouldForceRequest: true
|
|
327
328
|
});
|
|
328
329
|
}, [jql, reset]);
|
|
329
|
-
var onCancelClick = useCallback(function (e, analyticEvent) {
|
|
330
|
-
analyticEvent.update({
|
|
331
|
-
eventType: 'ui',
|
|
332
|
-
actionSubjectId: 'cancel',
|
|
333
|
-
attributes: _objectSpread(_objectSpread({}, analyticsPayload), {}, {
|
|
334
|
-
searchCount: searchCount.current,
|
|
335
|
-
actions: Array.from(userInteractionActions.current)
|
|
336
|
-
})
|
|
337
|
-
}).fire(EVENT_CHANNEL);
|
|
338
|
-
onCancel();
|
|
339
|
-
}, [analyticsPayload, onCancel]);
|
|
340
330
|
var onSiteSelection = useCallback(function (site) {
|
|
341
331
|
userInteractionActions.current.add(DatasourceAction.INSTANCE_UPDATED);
|
|
342
332
|
setJql('');
|
|
@@ -538,6 +528,12 @@ export var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(prop
|
|
|
538
528
|
return issueLikeDataTableView;
|
|
539
529
|
}, [columns.length, currentSearchMethod, issueLikeDataTableView, jql, jqlUrl, resolvedWithNoResults, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited]);
|
|
540
530
|
var siteSelectorLabel = availableSites && availableSites.length > 1 ? modalMessages.insertIssuesTitleManySites : modalMessages.insertIssuesTitle;
|
|
531
|
+
var getCancelButtonAnalyticsPayload = useCallback(function () {
|
|
532
|
+
return _objectSpread(_objectSpread({}, analyticsPayload), {}, {
|
|
533
|
+
searchCount: searchCount.current,
|
|
534
|
+
actions: Array.from(userInteractionActions.current)
|
|
535
|
+
});
|
|
536
|
+
}, [analyticsPayload]);
|
|
541
537
|
return jsx(IntlMessagesProvider, {
|
|
542
538
|
defaultMessages: i18nEN,
|
|
543
539
|
loaderFn: fetchMessagesForLocale
|
|
@@ -584,10 +580,11 @@ export var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(prop
|
|
|
584
580
|
values: {
|
|
585
581
|
totalCount: totalCount
|
|
586
582
|
}
|
|
587
|
-
})))), jsx(
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
583
|
+
})))), jsx(CancelButton, {
|
|
584
|
+
onCancel: onCancel,
|
|
585
|
+
getAnalyticsPayload: getCancelButtonAnalyticsPayload,
|
|
586
|
+
testId: "jira-datasource-modal--cancel-button"
|
|
587
|
+
}), !hasNoJiraSites && jsx(Button, {
|
|
591
588
|
appearance: "primary",
|
|
592
589
|
onClick: onInsertPressed,
|
|
593
590
|
isDisabled: isInsertDisabled,
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import { defineMessages } from 'react-intl-next';
|
|
2
2
|
export var modalMessages = defineMessages({
|
|
3
|
-
cancelButtonText: {
|
|
4
|
-
id: 'linkDataSource.jira-issues.configmodal.cancelButtonText',
|
|
5
|
-
description: 'Button text to close the modal with no changes being made',
|
|
6
|
-
defaultMessage: 'Cancel'
|
|
7
|
-
},
|
|
8
3
|
insertIssuesButtonText: {
|
|
9
4
|
id: 'linkDataSource.jira-issues.configmodal.insertIssuesButtonText',
|
|
10
5
|
description: 'Button text to insert the displayed content',
|
|
@@ -13,7 +13,7 @@ export type AnalyticsContextType = {
|
|
|
13
13
|
source: 'datasourceConfigModal';
|
|
14
14
|
};
|
|
15
15
|
export type AnalyticsContextAttributesType = {
|
|
16
|
-
dataProvider: 'jira-issues' | 'jsm-assets';
|
|
16
|
+
dataProvider: 'jira-issues' | 'jsm-assets' | 'confluence-search';
|
|
17
17
|
};
|
|
18
18
|
export type DatasourceModalDialogViewedAttributesType = {};
|
|
19
19
|
export type ModalReadyDatasourceAttributesType = {
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx } from '@emotion/react';
|
|
2
|
+
import { ButtonClickedCancelAttributesType } from '../../../../analytics/generated/analytics.types';
|
|
3
|
+
export interface CancelButtonProps {
|
|
4
|
+
getAnalyticsPayload: () => ButtonClickedCancelAttributesType;
|
|
5
|
+
onCancel: () => void;
|
|
6
|
+
testId: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const CancelButton: ({ getAnalyticsPayload, onCancel, testId, }: CancelButtonProps) => jsx.JSX.Element;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import { jsx } from '@emotion/react';
|
|
2
3
|
import { ConfluenceSearchConfigModalProps } from '../types';
|
|
3
|
-
export declare const
|
|
4
|
+
export declare const PlainConfluenceSearchConfigModal: (props: ConfluenceSearchConfigModalProps) => jsx.JSX.Element;
|
|
5
|
+
export declare const ConfluenceSearchConfigModal: import("react").ForwardRefExoticComponent<ConfluenceSearchConfigModalProps & import("@atlaskit/analytics-next").WithContextProps & import("react").RefAttributes<any>>;
|
|
@@ -13,7 +13,7 @@ export type AnalyticsContextType = {
|
|
|
13
13
|
source: 'datasourceConfigModal';
|
|
14
14
|
};
|
|
15
15
|
export type AnalyticsContextAttributesType = {
|
|
16
|
-
dataProvider: 'jira-issues' | 'jsm-assets';
|
|
16
|
+
dataProvider: 'jira-issues' | 'jsm-assets' | 'confluence-search';
|
|
17
17
|
};
|
|
18
18
|
export type DatasourceModalDialogViewedAttributesType = {};
|
|
19
19
|
export type ModalReadyDatasourceAttributesType = {
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx } from '@emotion/react';
|
|
2
|
+
import { ButtonClickedCancelAttributesType } from '../../../../analytics/generated/analytics.types';
|
|
3
|
+
export interface CancelButtonProps {
|
|
4
|
+
getAnalyticsPayload: () => ButtonClickedCancelAttributesType;
|
|
5
|
+
onCancel: () => void;
|
|
6
|
+
testId: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const CancelButton: ({ getAnalyticsPayload, onCancel, testId, }: CancelButtonProps) => jsx.JSX.Element;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
1
2
|
import { jsx } from '@emotion/react';
|
|
2
3
|
import { ConfluenceSearchConfigModalProps } from '../types';
|
|
3
|
-
export declare const
|
|
4
|
+
export declare const PlainConfluenceSearchConfigModal: (props: ConfluenceSearchConfigModalProps) => jsx.JSX.Element;
|
|
5
|
+
export declare const ConfluenceSearchConfigModal: import("react").ForwardRefExoticComponent<ConfluenceSearchConfigModalProps & import("@atlaskit/analytics-next").WithContextProps & import("react").RefAttributes<any>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/link-datasource",
|
|
3
|
-
"version": "1.25.
|
|
3
|
+
"version": "1.25.1",
|
|
4
4
|
"description": "UI Components to support linking platform dataset feature",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@atlaskit/avatar": "^21.5.0",
|
|
37
37
|
"@atlaskit/avatar-group": "^9.5.0",
|
|
38
38
|
"@atlaskit/badge": "^15.3.0",
|
|
39
|
-
"@atlaskit/button": "^17.
|
|
39
|
+
"@atlaskit/button": "^17.9.0",
|
|
40
40
|
"@atlaskit/dropdown-menu": "^12.8.0",
|
|
41
41
|
"@atlaskit/editor-prosemirror": "3.0.0",
|
|
42
42
|
"@atlaskit/empty-state": "^7.7.0",
|
|
@@ -58,8 +58,8 @@
|
|
|
58
58
|
"@atlaskit/platform-feature-flags": "^0.2.4",
|
|
59
59
|
"@atlaskit/pragmatic-drag-and-drop": "^1.1.0",
|
|
60
60
|
"@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.0.0",
|
|
61
|
-
"@atlaskit/pragmatic-drag-and-drop-react-beautiful-dnd-autoscroll": "^1.
|
|
62
|
-
"@atlaskit/pragmatic-drag-and-drop-react-drop-indicator": "^1.
|
|
61
|
+
"@atlaskit/pragmatic-drag-and-drop-react-beautiful-dnd-autoscroll": "^1.1.0",
|
|
62
|
+
"@atlaskit/pragmatic-drag-and-drop-react-drop-indicator": "^1.1.0",
|
|
63
63
|
"@atlaskit/primitives": "^5.5.0",
|
|
64
64
|
"@atlaskit/select": "^17.5.0",
|
|
65
65
|
"@atlaskit/smart-card": "^26.52.0",
|