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