@atlaskit/link-datasource 1.19.41 → 1.19.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/cjs/ui/assets-modal/modal/index.js +2 -1
  3. package/dist/cjs/ui/assets-modal/modal/messages.js +5 -0
  4. package/dist/cjs/ui/jira-issues-modal/modal/display-view-dropdown/display-view-drop-down.js +68 -0
  5. package/dist/cjs/ui/jira-issues-modal/modal/index.js +19 -39
  6. package/dist/cjs/ui/jira-issues-modal/modal/messages.js +19 -9
  7. package/dist/es2019/ui/assets-modal/modal/index.js +2 -1
  8. package/dist/es2019/ui/assets-modal/modal/messages.js +5 -0
  9. package/dist/es2019/ui/jira-issues-modal/modal/display-view-dropdown/display-view-drop-down.js +55 -0
  10. package/dist/es2019/ui/jira-issues-modal/modal/index.js +20 -41
  11. package/dist/es2019/ui/jira-issues-modal/modal/messages.js +19 -9
  12. package/dist/esm/ui/assets-modal/modal/index.js +2 -1
  13. package/dist/esm/ui/assets-modal/modal/messages.js +5 -0
  14. package/dist/esm/ui/jira-issues-modal/modal/display-view-dropdown/display-view-drop-down.js +57 -0
  15. package/dist/esm/ui/jira-issues-modal/modal/index.js +20 -40
  16. package/dist/esm/ui/jira-issues-modal/modal/messages.js +19 -9
  17. package/dist/types/ui/assets-modal/modal/messages.d.ts +5 -0
  18. package/dist/types/ui/jira-issues-modal/modal/display-view-dropdown/display-view-drop-down.d.ts +8 -0
  19. package/dist/types/ui/jira-issues-modal/modal/messages.d.ts +12 -2
  20. package/dist/types-ts4.5/ui/assets-modal/modal/messages.d.ts +5 -0
  21. package/dist/types-ts4.5/ui/jira-issues-modal/modal/display-view-dropdown/display-view-drop-down.d.ts +8 -0
  22. package/dist/types-ts4.5/ui/jira-issues-modal/modal/messages.d.ts +12 -2
  23. package/package.json +3 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @atlaskit/link-datasource
2
2
 
3
+ ## 1.19.42
4
+
5
+ ### Patch Changes
6
+
7
+ - [#67168](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/67168) [`aa400684d082`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/aa400684d082) - [ux] Updating modal insert button to show 'Update table' when editing existing table
8
+ - [#63918](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/63918) [`ab7df781854a`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/ab7df781854a) - Updating mode switcher toggle with drop down for issue/count view
9
+
3
10
  ## 1.19.41
4
11
 
5
12
  ### Patch Changes
@@ -213,6 +213,7 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
213
213
  }
214
214
  }, [defaultVisibleColumnKeys, isNewSearch]);
215
215
  var isDisabled = !!errorState || status !== 'resolved' || assetsClientLoading || !aql || !schemaId;
216
+ var isEditingExistingTable = !!(initialParameters !== null && initialParameters !== void 0 && initialParameters.aql && initialParameters !== null && initialParameters !== void 0 && initialParameters.schemaId && initialParameters !== null && initialParameters !== void 0 && initialParameters.workspaceId);
216
217
  var retrieveUrlForSmartCardRender = (0, _react.useCallback)(function () {
217
218
  var _data$key;
218
219
  var _responseItems = (0, _slicedToArray2.default)(responseItems, 1),
@@ -371,7 +372,7 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
371
372
  onClick: onInsertPressed,
372
373
  isDisabled: isDisabled,
373
374
  testId: 'assets-datasource-modal--insert-button'
374
- }, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, _messages.modalMessages.insertIssuesButtonText, {
375
+ }, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, isEditingExistingTable ? _messages.modalMessages.updateObjectsButtonText : _messages.modalMessages.insertIssuesButtonText, {
375
376
  values: {
376
377
  objectsCount: responseItems.length
377
378
  }
@@ -11,6 +11,11 @@ var modalMessages = exports.modalMessages = (0, _reactIntlNext.defineMessages)({
11
11
  description: 'Button text to close the modal with no changes being made',
12
12
  defaultMessage: 'Cancel'
13
13
  },
14
+ updateObjectsButtonText: {
15
+ id: 'linkDataSource.assets.configmodal.updateObjectsButtonText',
16
+ description: 'Button text to update the displayed content',
17
+ defaultMessage: 'Update table'
18
+ },
14
19
  insertIssuesButtonText: {
15
20
  id: 'linkDataSource.assets.configmodal.insertIssuesButtonText',
16
21
  description: 'Button text to insert the displayed content',
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.DisplayViewDropDown = void 0;
9
+ var _react = require("@emotion/react");
10
+ var _reactIntlNext = require("react-intl-next");
11
+ var _dropdownMenu = _interopRequireWildcard(require("@atlaskit/dropdown-menu"));
12
+ var _table = _interopRequireDefault(require("@atlaskit/icon/glyph/table"));
13
+ var _primitives = require("@atlaskit/primitives");
14
+ var _messages = require("../messages");
15
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
+ /** @jsx jsx */
18
+
19
+ var dropDownItemGroupStyles = (0, _primitives.xcss)({
20
+ width: '320px',
21
+ height: '140px',
22
+ paddingTop: "var(--ds-space-050, 4px)",
23
+ paddingBottom: "var(--ds-space-050, 4px)",
24
+ borderRadius: 'border.radius'
25
+ });
26
+ var InlineIcon = (0, _react.jsx)("svg", {
27
+ xmlns: "http://www.w3.org/2000/svg",
28
+ width: "24",
29
+ height: "24",
30
+ viewBox: "0 0 24 24",
31
+ fill: "none"
32
+ }, (0, _react.jsx)("path", {
33
+ fillRule: "evenodd",
34
+ clipRule: "evenodd",
35
+ d: "M4 9C2.89543 9 2 9.67155 2 10.5V13.5C2 14.3285 2.89543 15 4 15H20C21.1046 15 22 14.3285 22 13.5V10.5C22 9.67155 21.1046 9 20 9H4ZM4.22222 11.25C4.22222 10.5 4.22222 10.5 5 10.5H7C7.55556 10.5 7.55556 10.5 7.55556 11.25V13C7.55556 13.5 7.55556 13.5 7 13.5H5C4.22222 13.5 4.22222 13.5 4.22222 13V11.25ZM9 12C9 11.7929 9.2239 11.625 9.5 11.625H19.5C19.7761 11.625 20 11.7929 20 12C20 12.2071 19.7761 12.375 19.5 12.375H9.5C9.2239 12.375 9 12.2071 9 12Z",
36
+ fill: 'currentColor'
37
+ }));
38
+ var DisplayViewDropDown = exports.DisplayViewDropDown = function DisplayViewDropDown(_ref) {
39
+ var onViewModeChange = _ref.onViewModeChange,
40
+ viewMode = _ref.viewMode;
41
+ var _useIntl = (0, _reactIntlNext.useIntl)(),
42
+ formatMessage = _useIntl.formatMessage;
43
+ var triggerText = viewMode === 'issue' ? formatMessage(_messages.modalMessages.tableViewModeLabel) : formatMessage(_messages.modalMessages.inlineLinkViewModeLabel);
44
+ return (0, _react.jsx)(_dropdownMenu.default, {
45
+ trigger: triggerText,
46
+ testId: "jira-jql-datasource-modal--view-drop-down"
47
+ }, (0, _react.jsx)(_primitives.Box, {
48
+ xcss: dropDownItemGroupStyles
49
+ }, (0, _react.jsx)(_dropdownMenu.DropdownItemGroup, null, (0, _react.jsx)(_dropdownMenu.DropdownItem, {
50
+ testId: "dropdown-item-table",
51
+ onClick: function onClick() {
52
+ return onViewModeChange('issue');
53
+ },
54
+ isSelected: viewMode === 'issue',
55
+ description: formatMessage(_messages.modalMessages.tableViewModeDescription),
56
+ elemBefore: (0, _react.jsx)(_table.default, {
57
+ label: "table icon"
58
+ })
59
+ }, (0, _react.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.tableViewModeLabel)), (0, _react.jsx)(_dropdownMenu.DropdownItem, {
60
+ testId: "dropdown-item-inline-link",
61
+ onClick: function onClick() {
62
+ return onViewModeChange('count');
63
+ },
64
+ isSelected: viewMode === 'count',
65
+ description: formatMessage(_messages.modalMessages.inlineLinkViewModeDescription),
66
+ elemBefore: InlineIcon
67
+ }, (0, _react.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.inlineLinkViewModeLabel)))));
68
+ };
@@ -44,8 +44,8 @@ var _ui = require("../basic-filters/ui");
44
44
  var _isQueryTooComplex = require("../basic-filters/utils/isQueryTooComplex");
45
45
  var _initialStateView = require("../initial-state-view");
46
46
  var _jiraSearchContainer = require("../jira-search-container");
47
- var _modeSwitcher = require("../mode-switcher");
48
47
  var _siteSelector = require("../site-selector");
48
+ var _displayViewDropDown = require("./display-view-dropdown/display-view-drop-down");
49
49
  var _messages = require("./messages");
50
50
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
51
51
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -89,10 +89,10 @@ var smartLinkContainerStyles = (0, _react2.css)({
89
89
  paddingLeft: '1px'
90
90
  });
91
91
  var getDisplayValue = function getDisplayValue(currentViewMode, itemCount) {
92
- if (currentViewMode === 'count') {
93
- return _types.DatasourceDisplay.DATASOURCE_INLINE;
92
+ if (currentViewMode === 'issue') {
93
+ return _types.DatasourceDisplay.DATASOURCE_TABLE;
94
94
  }
95
- return itemCount > 1 ? _types.DatasourceDisplay.DATASOURCE_TABLE : _types.DatasourceDisplay.INLINE;
95
+ return itemCount === 1 ? _types.DatasourceDisplay.INLINE : _types.DatasourceDisplay.DATASOURCE_INLINE;
96
96
  };
97
97
 
98
98
  /**
@@ -188,8 +188,6 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
188
188
  _useDatasourceTableSt2 = _useDatasourceTableSt.extensionKey,
189
189
  extensionKey = _useDatasourceTableSt2 === void 0 ? null : _useDatasourceTableSt2,
190
190
  destinationObjectTypes = _useDatasourceTableSt.destinationObjectTypes;
191
- var _useIntl = (0, _reactIntlNext.useIntl)(),
192
- formatMessage = _useIntl.formatMessage;
193
191
  var _useDatasourceAnalyti = (0, _analytics.useDatasourceAnalyticsEvents)(),
194
192
  fireEvent = _useDatasourceAnalyti.fireEvent;
195
193
  var _useRef = (0, _react.useRef)((0, _uuid.v4)()),
@@ -412,18 +410,11 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
412
410
  var firstIssueUrl = retrieveUrlForSmartCardRender();
413
411
  if (currentViewMode === 'count') {
414
412
  macroInsertedEvent === null || macroInsertedEvent === void 0 || macroInsertedEvent.fire(_analytics.EVENT_CHANNEL);
413
+ var url = responseItems.length === 1 ? firstIssueUrl : upToDateJqlUrl;
415
414
  onInsert({
416
415
  type: 'inlineCard',
417
416
  attrs: {
418
- url: upToDateJqlUrl
419
- }
420
- }, consumerEvent);
421
- } else if (responseItems.length === 1 && firstIssueUrl) {
422
- macroInsertedEvent === null || macroInsertedEvent === void 0 || macroInsertedEvent.fire(_analytics.EVENT_CHANNEL);
423
- onInsert({
424
- type: 'inlineCard',
425
- attrs: {
426
- url: firstIssueUrl
417
+ url: url
427
418
  }
428
419
  }, consumerEvent);
429
420
  } else {
@@ -453,7 +444,7 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
453
444
  }
454
445
  }, consumerEvent);
455
446
  }
456
- }, [isParametersSet, jql, selectedJiraSite, analyticsPayload, totalCount, visibleColumnKeys, currentViewMode, retrieveUrlForSmartCardRender, responseItems.length, onInsert, datasourceId, cloudId, columnCustomSizes, searchBarJql]);
447
+ }, [isParametersSet, jql, selectedJiraSite, analyticsPayload, totalCount, visibleColumnKeys, currentViewMode, retrieveUrlForSmartCardRender, onInsert, datasourceId, cloudId, columnCustomSizes, searchBarJql, responseItems]);
457
448
  var handleViewModeChange = function handleViewModeChange(selectedMode) {
458
449
  userInteractionActions.current.add(_types.DatasourceAction.DISPLAY_VIEW_CHANGED);
459
450
  setCurrentViewMode(selectedMode);
@@ -503,14 +494,19 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
503
494
  css: placeholderSmartLinkStyles
504
495
  }, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.issuesCountSmartCardPlaceholderText)));
505
496
  } else {
506
- var urlWithEncodedJql = "".concat(selectedJiraSiteUrl, "/issues/?jql=").concat(encodeURI(jql));
497
+ var url;
498
+ if (responseItems.length === 1 && retrieveUrlForSmartCardRender()) {
499
+ url = retrieveUrlForSmartCardRender();
500
+ } else {
501
+ url = "".concat(selectedJiraSiteUrl, "/issues/?jql=").concat(encodeURI(jql));
502
+ }
507
503
  return (0, _react2.jsx)("div", {
508
504
  css: smartLinkContainerStyles
509
505
  }, (0, _react2.jsx)(_link.default, {
510
- url: urlWithEncodedJql
506
+ url: url
511
507
  }));
512
508
  }
513
- }, [jql, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited]);
509
+ }, [jql, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited, responseItems, retrieveUrlForSmartCardRender]);
514
510
  var renderIssuesModeContent = (0, _react.useCallback)(function () {
515
511
  var selectedJiraSiteUrl = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
516
512
  if (status === 'rejected' && jqlUrl) {
@@ -533,16 +529,8 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
533
529
  searchMethod: currentSearchMethod
534
530
  }));
535
531
  }
536
- var firstIssueUrl = retrieveUrlForSmartCardRender();
537
- if (responseItems.length === 1 && firstIssueUrl) {
538
- return (0, _react2.jsx)("div", {
539
- css: smartLinkContainerStyles
540
- }, (0, _react2.jsx)(_link.default, {
541
- url: firstIssueUrl
542
- }));
543
- }
544
532
  return issueLikeDataTableView;
545
- }, [columns.length, currentSearchMethod, issueLikeDataTableView, jql, jqlUrl, resolvedWithNoResults, responseItems.length, retrieveUrlForSmartCardRender, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited]);
533
+ }, [columns.length, currentSearchMethod, issueLikeDataTableView, jql, jqlUrl, resolvedWithNoResults, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited]);
546
534
  return (0, _react2.jsx)(_intlMessagesProvider.IntlMessagesProvider, {
547
535
  defaultMessages: _en.default,
548
536
  loaderFn: _fetchMessagesForLocale.fetchMessagesForLocale
@@ -558,17 +546,9 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
558
546
  onSiteSelection: onSiteSelection,
559
547
  selectedJiraSite: selectedJiraSite,
560
548
  testId: "jira-jql-datasource-modal--site-selector"
561
- })) : (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.insertIssuesTitle))), !hasNoJiraSites && (0, _react2.jsx)(_modeSwitcher.ModeSwitcher, {
562
- isCompact: true,
563
- options: [{
564
- label: formatMessage(_messages.modalMessages.issueViewModeLabel),
565
- value: 'issue'
566
- }, {
567
- label: formatMessage(_messages.modalMessages.countViewModeLabel),
568
- value: 'count'
569
- }],
570
- onOptionValueChange: handleViewModeChange,
571
- selectedOptionValue: currentViewMode
549
+ })) : (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.insertIssuesTitle))), !hasNoJiraSites && (0, _react2.jsx)(_displayViewDropDown.DisplayViewDropDown, {
550
+ onViewModeChange: handleViewModeChange,
551
+ viewMode: currentViewMode
572
552
  })), (0, _react2.jsx)(_modalDialog.ModalBody, null, !hasNoJiraSites ? (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)(_jiraSearchContainer.JiraSearchContainer, {
573
553
  setSearchBarJql: setSearchBarJql,
574
554
  searchBarJql: searchBarJql,
@@ -26,15 +26,25 @@ var modalMessages = exports.modalMessages = (0, _reactIntlNext.defineMessages)({
26
26
  description: 'Title for the Jira Issues modal when a user has to select a site to inserting issues from',
27
27
  defaultMessage: 'Insert Jira issues from'
28
28
  },
29
- issueViewModeLabel: {
30
- id: 'linkDataSource.jira-issues.configmodal.issueViewModeLabel',
31
- description: 'Label for toggle to enable a view mode showing issues in a table list view',
32
- defaultMessage: 'Issue view'
33
- },
34
- countViewModeLabel: {
35
- id: 'linkDataSource.jira-issues.configmodal.countViewModeLabel',
36
- description: 'Label for toggle to enable a view mode showing issues in as a total count',
37
- defaultMessage: 'Count view'
29
+ tableViewModeLabel: {
30
+ id: 'linkDataSource.jira-issues.configmodal.tableViewModeLabel',
31
+ description: 'Display Jira search results as a table',
32
+ defaultMessage: 'Table'
33
+ },
34
+ tableViewModeDescription: {
35
+ id: 'linkDataSource.jira-issues.configmodal.tableViewModeDescription',
36
+ description: 'Description for table view mode',
37
+ defaultMessage: 'Display Jira search results as a table'
38
+ },
39
+ inlineLinkViewModeLabel: {
40
+ id: 'linkDataSource.jira-issues.configmodal.inlineLinkViewModeLabel',
41
+ description: 'Display the number of search results as an inline smart link',
42
+ defaultMessage: 'Inline link'
43
+ },
44
+ inlineLinkViewModeDescription: {
45
+ id: 'linkDataSource.jira-issues.configmodal.inlineLinkViewModeDescription',
46
+ description: 'Description for inline link view mode',
47
+ defaultMessage: 'Display the number of search results or as an inline smart link'
38
48
  },
39
49
  issuesCountSmartCardPlaceholderText: {
40
50
  id: 'linkDataSource.jira-issues.configmodal.placeholder.issues',
@@ -189,6 +189,7 @@ const PlainAssetsConfigModal = props => {
189
189
  }
190
190
  }, [defaultVisibleColumnKeys, isNewSearch]);
191
191
  const isDisabled = !!errorState || status !== 'resolved' || assetsClientLoading || !aql || !schemaId;
192
+ const isEditingExistingTable = !!(initialParameters !== null && initialParameters !== void 0 && initialParameters.aql && initialParameters !== null && initialParameters !== void 0 && initialParameters.schemaId && initialParameters !== null && initialParameters !== void 0 && initialParameters.workspaceId);
192
193
  const retrieveUrlForSmartCardRender = useCallback(() => {
193
194
  var _data$key, _data$key$data;
194
195
  const [data] = responseItems;
@@ -346,7 +347,7 @@ const PlainAssetsConfigModal = props => {
346
347
  onClick: onInsertPressed,
347
348
  isDisabled: isDisabled,
348
349
  testId: 'assets-datasource-modal--insert-button'
349
- }, jsx(FormattedMessage, _extends({}, modalMessages.insertIssuesButtonText, {
350
+ }, jsx(FormattedMessage, _extends({}, isEditingExistingTable ? modalMessages.updateObjectsButtonText : modalMessages.insertIssuesButtonText, {
350
351
  values: {
351
352
  objectsCount: responseItems.length
352
353
  }
@@ -5,6 +5,11 @@ export const modalMessages = defineMessages({
5
5
  description: 'Button text to close the modal with no changes being made',
6
6
  defaultMessage: 'Cancel'
7
7
  },
8
+ updateObjectsButtonText: {
9
+ id: 'linkDataSource.assets.configmodal.updateObjectsButtonText',
10
+ description: 'Button text to update the displayed content',
11
+ defaultMessage: 'Update table'
12
+ },
8
13
  insertIssuesButtonText: {
9
14
  id: 'linkDataSource.assets.configmodal.insertIssuesButtonText',
10
15
  description: 'Button text to insert the displayed content',
@@ -0,0 +1,55 @@
1
+ /** @jsx jsx */
2
+ import { jsx } from '@emotion/react';
3
+ import { FormattedMessage, useIntl } from 'react-intl-next';
4
+ import DropdownMenu, { DropdownItem, DropdownItemGroup } from '@atlaskit/dropdown-menu';
5
+ import TableIcon from '@atlaskit/icon/glyph/table';
6
+ import { Box, xcss } from '@atlaskit/primitives';
7
+ import { modalMessages } from '../messages';
8
+ const dropDownItemGroupStyles = xcss({
9
+ width: '320px',
10
+ height: '140px',
11
+ paddingTop: "var(--ds-space-050, 4px)",
12
+ paddingBottom: "var(--ds-space-050, 4px)",
13
+ borderRadius: 'border.radius'
14
+ });
15
+ const InlineIcon = jsx("svg", {
16
+ xmlns: "http://www.w3.org/2000/svg",
17
+ width: "24",
18
+ height: "24",
19
+ viewBox: "0 0 24 24",
20
+ fill: "none"
21
+ }, jsx("path", {
22
+ fillRule: "evenodd",
23
+ clipRule: "evenodd",
24
+ d: "M4 9C2.89543 9 2 9.67155 2 10.5V13.5C2 14.3285 2.89543 15 4 15H20C21.1046 15 22 14.3285 22 13.5V10.5C22 9.67155 21.1046 9 20 9H4ZM4.22222 11.25C4.22222 10.5 4.22222 10.5 5 10.5H7C7.55556 10.5 7.55556 10.5 7.55556 11.25V13C7.55556 13.5 7.55556 13.5 7 13.5H5C4.22222 13.5 4.22222 13.5 4.22222 13V11.25ZM9 12C9 11.7929 9.2239 11.625 9.5 11.625H19.5C19.7761 11.625 20 11.7929 20 12C20 12.2071 19.7761 12.375 19.5 12.375H9.5C9.2239 12.375 9 12.2071 9 12Z",
25
+ fill: 'currentColor'
26
+ }));
27
+ export const DisplayViewDropDown = ({
28
+ onViewModeChange,
29
+ viewMode
30
+ }) => {
31
+ const {
32
+ formatMessage
33
+ } = useIntl();
34
+ const triggerText = viewMode === 'issue' ? formatMessage(modalMessages.tableViewModeLabel) : formatMessage(modalMessages.inlineLinkViewModeLabel);
35
+ return jsx(DropdownMenu, {
36
+ trigger: triggerText,
37
+ testId: "jira-jql-datasource-modal--view-drop-down"
38
+ }, jsx(Box, {
39
+ xcss: dropDownItemGroupStyles
40
+ }, jsx(DropdownItemGroup, null, jsx(DropdownItem, {
41
+ testId: "dropdown-item-table",
42
+ onClick: () => onViewModeChange('issue'),
43
+ isSelected: viewMode === 'issue',
44
+ description: formatMessage(modalMessages.tableViewModeDescription),
45
+ elemBefore: jsx(TableIcon, {
46
+ label: "table icon"
47
+ })
48
+ }, jsx(FormattedMessage, modalMessages.tableViewModeLabel)), jsx(DropdownItem, {
49
+ testId: "dropdown-item-inline-link",
50
+ onClick: () => onViewModeChange('count'),
51
+ isSelected: viewMode === 'count',
52
+ description: formatMessage(modalMessages.inlineLinkViewModeDescription),
53
+ elemBefore: InlineIcon
54
+ }, jsx(FormattedMessage, modalMessages.inlineLinkViewModeLabel)))));
55
+ };
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
  /** @jsx jsx */
3
3
  import { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
4
  import { css, jsx } from '@emotion/react';
5
- import { FormattedMessage, FormattedNumber, useIntl } from 'react-intl-next';
5
+ import { FormattedMessage, FormattedNumber } from 'react-intl-next';
6
6
  import { v4 as uuidv4 } from 'uuid';
7
7
  import { withAnalyticsContext } from '@atlaskit/analytics-next';
8
8
  import Button from '@atlaskit/button/standard-button';
@@ -32,8 +32,8 @@ import { availableBasicFilterTypes } from '../basic-filters/ui';
32
32
  import { isQueryTooComplex } from '../basic-filters/utils/isQueryTooComplex';
33
33
  import { InitialStateView } from '../initial-state-view';
34
34
  import { JiraSearchContainer } from '../jira-search-container';
35
- import { ModeSwitcher } from '../mode-switcher';
36
35
  import { JiraSiteSelector } from '../site-selector';
36
+ import { DisplayViewDropDown } from './display-view-dropdown/display-view-drop-down';
37
37
  import { modalMessages } from './messages';
38
38
  const dropdownContainerStyles = css({
39
39
  display: 'flex',
@@ -73,10 +73,10 @@ const smartLinkContainerStyles = css({
73
73
  paddingLeft: '1px'
74
74
  });
75
75
  const getDisplayValue = (currentViewMode, itemCount) => {
76
- if (currentViewMode === 'count') {
77
- return DatasourceDisplay.DATASOURCE_INLINE;
76
+ if (currentViewMode === 'issue') {
77
+ return DatasourceDisplay.DATASOURCE_TABLE;
78
78
  }
79
- return itemCount > 1 ? DatasourceDisplay.DATASOURCE_TABLE : DatasourceDisplay.INLINE;
79
+ return itemCount === 1 ? DatasourceDisplay.INLINE : DatasourceDisplay.DATASOURCE_INLINE;
80
80
  };
81
81
 
82
82
  /**
@@ -150,9 +150,6 @@ export const PlainJiraIssuesConfigModal = props => {
150
150
  parameters: isParametersSet ? parameters : undefined,
151
151
  fieldKeys: visibleColumnKeys
152
152
  });
153
- const {
154
- formatMessage
155
- } = useIntl();
156
153
  const {
157
154
  fireEvent
158
155
  } = useDatasourceAnalyticsEvents();
@@ -366,18 +363,11 @@ export const PlainJiraIssuesConfigModal = props => {
366
363
  const firstIssueUrl = retrieveUrlForSmartCardRender();
367
364
  if (currentViewMode === 'count') {
368
365
  macroInsertedEvent === null || macroInsertedEvent === void 0 ? void 0 : macroInsertedEvent.fire(EVENT_CHANNEL);
366
+ const url = responseItems.length === 1 ? firstIssueUrl : upToDateJqlUrl;
369
367
  onInsert({
370
368
  type: 'inlineCard',
371
369
  attrs: {
372
- url: upToDateJqlUrl
373
- }
374
- }, consumerEvent);
375
- } else if (responseItems.length === 1 && firstIssueUrl) {
376
- macroInsertedEvent === null || macroInsertedEvent === void 0 ? void 0 : macroInsertedEvent.fire(EVENT_CHANNEL);
377
- onInsert({
378
- type: 'inlineCard',
379
- attrs: {
380
- url: firstIssueUrl
370
+ url
381
371
  }
382
372
  }, consumerEvent);
383
373
  } else {
@@ -405,7 +395,7 @@ export const PlainJiraIssuesConfigModal = props => {
405
395
  }
406
396
  }, consumerEvent);
407
397
  }
408
- }, [isParametersSet, jql, selectedJiraSite, analyticsPayload, totalCount, visibleColumnKeys, currentViewMode, retrieveUrlForSmartCardRender, responseItems.length, onInsert, datasourceId, cloudId, columnCustomSizes, searchBarJql]);
398
+ }, [isParametersSet, jql, selectedJiraSite, analyticsPayload, totalCount, visibleColumnKeys, currentViewMode, retrieveUrlForSmartCardRender, onInsert, datasourceId, cloudId, columnCustomSizes, searchBarJql, responseItems]);
409
399
  const handleViewModeChange = selectedMode => {
410
400
  userInteractionActions.current.add(DatasourceAction.DISPLAY_VIEW_CHANGED);
411
401
  setCurrentViewMode(selectedMode);
@@ -451,14 +441,19 @@ export const PlainJiraIssuesConfigModal = props => {
451
441
  css: placeholderSmartLinkStyles
452
442
  }, jsx(FormattedMessage, modalMessages.issuesCountSmartCardPlaceholderText)));
453
443
  } else {
454
- const urlWithEncodedJql = `${selectedJiraSiteUrl}/issues/?jql=${encodeURI(jql)}`;
444
+ let url;
445
+ if (responseItems.length === 1 && retrieveUrlForSmartCardRender()) {
446
+ url = retrieveUrlForSmartCardRender();
447
+ } else {
448
+ url = `${selectedJiraSiteUrl}/issues/?jql=${encodeURI(jql)}`;
449
+ }
455
450
  return jsx("div", {
456
451
  css: smartLinkContainerStyles
457
452
  }, jsx(LinkRenderType, {
458
- url: urlWithEncodedJql
453
+ url: url
459
454
  }));
460
455
  }
461
- }, [jql, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited]);
456
+ }, [jql, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited, responseItems, retrieveUrlForSmartCardRender]);
462
457
  const renderIssuesModeContent = useCallback(() => {
463
458
  const selectedJiraSiteUrl = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
464
459
  if (status === 'rejected' && jqlUrl) {
@@ -481,16 +476,8 @@ export const PlainJiraIssuesConfigModal = props => {
481
476
  searchMethod: currentSearchMethod
482
477
  }));
483
478
  }
484
- const firstIssueUrl = retrieveUrlForSmartCardRender();
485
- if (responseItems.length === 1 && firstIssueUrl) {
486
- return jsx("div", {
487
- css: smartLinkContainerStyles
488
- }, jsx(LinkRenderType, {
489
- url: firstIssueUrl
490
- }));
491
- }
492
479
  return issueLikeDataTableView;
493
- }, [columns.length, currentSearchMethod, issueLikeDataTableView, jql, jqlUrl, resolvedWithNoResults, responseItems.length, retrieveUrlForSmartCardRender, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited]);
480
+ }, [columns.length, currentSearchMethod, issueLikeDataTableView, jql, jqlUrl, resolvedWithNoResults, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited]);
494
481
  return jsx(IntlMessagesProvider, {
495
482
  defaultMessages: i18nEN,
496
483
  loaderFn: fetchMessagesForLocale
@@ -506,17 +493,9 @@ export const PlainJiraIssuesConfigModal = props => {
506
493
  onSiteSelection: onSiteSelection,
507
494
  selectedJiraSite: selectedJiraSite,
508
495
  testId: "jira-jql-datasource-modal--site-selector"
509
- })) : jsx(FormattedMessage, modalMessages.insertIssuesTitle))), !hasNoJiraSites && jsx(ModeSwitcher, {
510
- isCompact: true,
511
- options: [{
512
- label: formatMessage(modalMessages.issueViewModeLabel),
513
- value: 'issue'
514
- }, {
515
- label: formatMessage(modalMessages.countViewModeLabel),
516
- value: 'count'
517
- }],
518
- onOptionValueChange: handleViewModeChange,
519
- selectedOptionValue: currentViewMode
496
+ })) : jsx(FormattedMessage, modalMessages.insertIssuesTitle))), !hasNoJiraSites && jsx(DisplayViewDropDown, {
497
+ onViewModeChange: handleViewModeChange,
498
+ viewMode: currentViewMode
520
499
  })), jsx(ModalBody, null, !hasNoJiraSites ? jsx(Fragment, null, jsx(JiraSearchContainer, {
521
500
  setSearchBarJql: setSearchBarJql,
522
501
  searchBarJql: searchBarJql,
@@ -20,15 +20,25 @@ export const modalMessages = defineMessages({
20
20
  description: 'Title for the Jira Issues modal when a user has to select a site to inserting issues from',
21
21
  defaultMessage: 'Insert Jira issues from'
22
22
  },
23
- issueViewModeLabel: {
24
- id: 'linkDataSource.jira-issues.configmodal.issueViewModeLabel',
25
- description: 'Label for toggle to enable a view mode showing issues in a table list view',
26
- defaultMessage: 'Issue view'
27
- },
28
- countViewModeLabel: {
29
- id: 'linkDataSource.jira-issues.configmodal.countViewModeLabel',
30
- description: 'Label for toggle to enable a view mode showing issues in as a total count',
31
- defaultMessage: 'Count view'
23
+ tableViewModeLabel: {
24
+ id: 'linkDataSource.jira-issues.configmodal.tableViewModeLabel',
25
+ description: 'Display Jira search results as a table',
26
+ defaultMessage: 'Table'
27
+ },
28
+ tableViewModeDescription: {
29
+ id: 'linkDataSource.jira-issues.configmodal.tableViewModeDescription',
30
+ description: 'Description for table view mode',
31
+ defaultMessage: 'Display Jira search results as a table'
32
+ },
33
+ inlineLinkViewModeLabel: {
34
+ id: 'linkDataSource.jira-issues.configmodal.inlineLinkViewModeLabel',
35
+ description: 'Display the number of search results as an inline smart link',
36
+ defaultMessage: 'Inline link'
37
+ },
38
+ inlineLinkViewModeDescription: {
39
+ id: 'linkDataSource.jira-issues.configmodal.inlineLinkViewModeDescription',
40
+ description: 'Description for inline link view mode',
41
+ defaultMessage: 'Display the number of search results or as an inline smart link'
32
42
  },
33
43
  issuesCountSmartCardPlaceholderText: {
34
44
  id: 'linkDataSource.jira-issues.configmodal.placeholder.issues',
@@ -204,6 +204,7 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
204
204
  }
205
205
  }, [defaultVisibleColumnKeys, isNewSearch]);
206
206
  var isDisabled = !!errorState || status !== 'resolved' || assetsClientLoading || !aql || !schemaId;
207
+ var isEditingExistingTable = !!(initialParameters !== null && initialParameters !== void 0 && initialParameters.aql && initialParameters !== null && initialParameters !== void 0 && initialParameters.schemaId && initialParameters !== null && initialParameters !== void 0 && initialParameters.workspaceId);
207
208
  var retrieveUrlForSmartCardRender = useCallback(function () {
208
209
  var _data$key;
209
210
  var _responseItems = _slicedToArray(responseItems, 1),
@@ -362,7 +363,7 @@ var PlainAssetsConfigModal = function PlainAssetsConfigModal(props) {
362
363
  onClick: onInsertPressed,
363
364
  isDisabled: isDisabled,
364
365
  testId: 'assets-datasource-modal--insert-button'
365
- }, jsx(FormattedMessage, _extends({}, modalMessages.insertIssuesButtonText, {
366
+ }, jsx(FormattedMessage, _extends({}, isEditingExistingTable ? modalMessages.updateObjectsButtonText : modalMessages.insertIssuesButtonText, {
366
367
  values: {
367
368
  objectsCount: responseItems.length
368
369
  }
@@ -5,6 +5,11 @@ export var modalMessages = defineMessages({
5
5
  description: 'Button text to close the modal with no changes being made',
6
6
  defaultMessage: 'Cancel'
7
7
  },
8
+ updateObjectsButtonText: {
9
+ id: 'linkDataSource.assets.configmodal.updateObjectsButtonText',
10
+ description: 'Button text to update the displayed content',
11
+ defaultMessage: 'Update table'
12
+ },
8
13
  insertIssuesButtonText: {
9
14
  id: 'linkDataSource.assets.configmodal.insertIssuesButtonText',
10
15
  description: 'Button text to insert the displayed content',
@@ -0,0 +1,57 @@
1
+ /** @jsx jsx */
2
+ import { jsx } from '@emotion/react';
3
+ import { FormattedMessage, useIntl } from 'react-intl-next';
4
+ import DropdownMenu, { DropdownItem, DropdownItemGroup } from '@atlaskit/dropdown-menu';
5
+ import TableIcon from '@atlaskit/icon/glyph/table';
6
+ import { Box, xcss } from '@atlaskit/primitives';
7
+ import { modalMessages } from '../messages';
8
+ var dropDownItemGroupStyles = xcss({
9
+ width: '320px',
10
+ height: '140px',
11
+ paddingTop: "var(--ds-space-050, 4px)",
12
+ paddingBottom: "var(--ds-space-050, 4px)",
13
+ borderRadius: 'border.radius'
14
+ });
15
+ var InlineIcon = jsx("svg", {
16
+ xmlns: "http://www.w3.org/2000/svg",
17
+ width: "24",
18
+ height: "24",
19
+ viewBox: "0 0 24 24",
20
+ fill: "none"
21
+ }, jsx("path", {
22
+ fillRule: "evenodd",
23
+ clipRule: "evenodd",
24
+ d: "M4 9C2.89543 9 2 9.67155 2 10.5V13.5C2 14.3285 2.89543 15 4 15H20C21.1046 15 22 14.3285 22 13.5V10.5C22 9.67155 21.1046 9 20 9H4ZM4.22222 11.25C4.22222 10.5 4.22222 10.5 5 10.5H7C7.55556 10.5 7.55556 10.5 7.55556 11.25V13C7.55556 13.5 7.55556 13.5 7 13.5H5C4.22222 13.5 4.22222 13.5 4.22222 13V11.25ZM9 12C9 11.7929 9.2239 11.625 9.5 11.625H19.5C19.7761 11.625 20 11.7929 20 12C20 12.2071 19.7761 12.375 19.5 12.375H9.5C9.2239 12.375 9 12.2071 9 12Z",
25
+ fill: 'currentColor'
26
+ }));
27
+ export var DisplayViewDropDown = function DisplayViewDropDown(_ref) {
28
+ var onViewModeChange = _ref.onViewModeChange,
29
+ viewMode = _ref.viewMode;
30
+ var _useIntl = useIntl(),
31
+ formatMessage = _useIntl.formatMessage;
32
+ var triggerText = viewMode === 'issue' ? formatMessage(modalMessages.tableViewModeLabel) : formatMessage(modalMessages.inlineLinkViewModeLabel);
33
+ return jsx(DropdownMenu, {
34
+ trigger: triggerText,
35
+ testId: "jira-jql-datasource-modal--view-drop-down"
36
+ }, jsx(Box, {
37
+ xcss: dropDownItemGroupStyles
38
+ }, jsx(DropdownItemGroup, null, jsx(DropdownItem, {
39
+ testId: "dropdown-item-table",
40
+ onClick: function onClick() {
41
+ return onViewModeChange('issue');
42
+ },
43
+ isSelected: viewMode === 'issue',
44
+ description: formatMessage(modalMessages.tableViewModeDescription),
45
+ elemBefore: jsx(TableIcon, {
46
+ label: "table icon"
47
+ })
48
+ }, jsx(FormattedMessage, modalMessages.tableViewModeLabel)), jsx(DropdownItem, {
49
+ testId: "dropdown-item-inline-link",
50
+ onClick: function onClick() {
51
+ return onViewModeChange('count');
52
+ },
53
+ isSelected: viewMode === 'count',
54
+ description: formatMessage(modalMessages.inlineLinkViewModeDescription),
55
+ elemBefore: InlineIcon
56
+ }, jsx(FormattedMessage, modalMessages.inlineLinkViewModeLabel)))));
57
+ };
@@ -9,7 +9,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
9
9
  /** @jsx jsx */
10
10
  import { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react';
11
11
  import { css, jsx } from '@emotion/react';
12
- import { FormattedMessage, FormattedNumber, useIntl } from 'react-intl-next';
12
+ import { FormattedMessage, FormattedNumber } from 'react-intl-next';
13
13
  import { v4 as uuidv4 } from 'uuid';
14
14
  import { withAnalyticsContext } from '@atlaskit/analytics-next';
15
15
  import Button from '@atlaskit/button/standard-button';
@@ -39,8 +39,8 @@ import { availableBasicFilterTypes } from '../basic-filters/ui';
39
39
  import { isQueryTooComplex } from '../basic-filters/utils/isQueryTooComplex';
40
40
  import { InitialStateView } from '../initial-state-view';
41
41
  import { JiraSearchContainer } from '../jira-search-container';
42
- import { ModeSwitcher } from '../mode-switcher';
43
42
  import { JiraSiteSelector } from '../site-selector';
43
+ import { DisplayViewDropDown } from './display-view-dropdown/display-view-drop-down';
44
44
  import { modalMessages } from './messages';
45
45
  var dropdownContainerStyles = css({
46
46
  display: 'flex',
@@ -80,10 +80,10 @@ var smartLinkContainerStyles = css({
80
80
  paddingLeft: '1px'
81
81
  });
82
82
  var getDisplayValue = function getDisplayValue(currentViewMode, itemCount) {
83
- if (currentViewMode === 'count') {
84
- return DatasourceDisplay.DATASOURCE_INLINE;
83
+ if (currentViewMode === 'issue') {
84
+ return DatasourceDisplay.DATASOURCE_TABLE;
85
85
  }
86
- return itemCount > 1 ? DatasourceDisplay.DATASOURCE_TABLE : DatasourceDisplay.INLINE;
86
+ return itemCount === 1 ? DatasourceDisplay.INLINE : DatasourceDisplay.DATASOURCE_INLINE;
87
87
  };
88
88
 
89
89
  /**
@@ -179,8 +179,6 @@ export var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(prop
179
179
  _useDatasourceTableSt2 = _useDatasourceTableSt.extensionKey,
180
180
  extensionKey = _useDatasourceTableSt2 === void 0 ? null : _useDatasourceTableSt2,
181
181
  destinationObjectTypes = _useDatasourceTableSt.destinationObjectTypes;
182
- var _useIntl = useIntl(),
183
- formatMessage = _useIntl.formatMessage;
184
182
  var _useDatasourceAnalyti = useDatasourceAnalyticsEvents(),
185
183
  fireEvent = _useDatasourceAnalyti.fireEvent;
186
184
  var _useRef = useRef(uuidv4()),
@@ -403,18 +401,11 @@ export var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(prop
403
401
  var firstIssueUrl = retrieveUrlForSmartCardRender();
404
402
  if (currentViewMode === 'count') {
405
403
  macroInsertedEvent === null || macroInsertedEvent === void 0 || macroInsertedEvent.fire(EVENT_CHANNEL);
404
+ var url = responseItems.length === 1 ? firstIssueUrl : upToDateJqlUrl;
406
405
  onInsert({
407
406
  type: 'inlineCard',
408
407
  attrs: {
409
- url: upToDateJqlUrl
410
- }
411
- }, consumerEvent);
412
- } else if (responseItems.length === 1 && firstIssueUrl) {
413
- macroInsertedEvent === null || macroInsertedEvent === void 0 || macroInsertedEvent.fire(EVENT_CHANNEL);
414
- onInsert({
415
- type: 'inlineCard',
416
- attrs: {
417
- url: firstIssueUrl
408
+ url: url
418
409
  }
419
410
  }, consumerEvent);
420
411
  } else {
@@ -444,7 +435,7 @@ export var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(prop
444
435
  }
445
436
  }, consumerEvent);
446
437
  }
447
- }, [isParametersSet, jql, selectedJiraSite, analyticsPayload, totalCount, visibleColumnKeys, currentViewMode, retrieveUrlForSmartCardRender, responseItems.length, onInsert, datasourceId, cloudId, columnCustomSizes, searchBarJql]);
438
+ }, [isParametersSet, jql, selectedJiraSite, analyticsPayload, totalCount, visibleColumnKeys, currentViewMode, retrieveUrlForSmartCardRender, onInsert, datasourceId, cloudId, columnCustomSizes, searchBarJql, responseItems]);
448
439
  var handleViewModeChange = function handleViewModeChange(selectedMode) {
449
440
  userInteractionActions.current.add(DatasourceAction.DISPLAY_VIEW_CHANGED);
450
441
  setCurrentViewMode(selectedMode);
@@ -494,14 +485,19 @@ export var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(prop
494
485
  css: placeholderSmartLinkStyles
495
486
  }, jsx(FormattedMessage, modalMessages.issuesCountSmartCardPlaceholderText)));
496
487
  } else {
497
- var urlWithEncodedJql = "".concat(selectedJiraSiteUrl, "/issues/?jql=").concat(encodeURI(jql));
488
+ var url;
489
+ if (responseItems.length === 1 && retrieveUrlForSmartCardRender()) {
490
+ url = retrieveUrlForSmartCardRender();
491
+ } else {
492
+ url = "".concat(selectedJiraSiteUrl, "/issues/?jql=").concat(encodeURI(jql));
493
+ }
498
494
  return jsx("div", {
499
495
  css: smartLinkContainerStyles
500
496
  }, jsx(LinkRenderType, {
501
- url: urlWithEncodedJql
497
+ url: url
502
498
  }));
503
499
  }
504
- }, [jql, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited]);
500
+ }, [jql, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited, responseItems, retrieveUrlForSmartCardRender]);
505
501
  var renderIssuesModeContent = useCallback(function () {
506
502
  var selectedJiraSiteUrl = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
507
503
  if (status === 'rejected' && jqlUrl) {
@@ -524,16 +520,8 @@ export var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(prop
524
520
  searchMethod: currentSearchMethod
525
521
  }));
526
522
  }
527
- var firstIssueUrl = retrieveUrlForSmartCardRender();
528
- if (responseItems.length === 1 && firstIssueUrl) {
529
- return jsx("div", {
530
- css: smartLinkContainerStyles
531
- }, jsx(LinkRenderType, {
532
- url: firstIssueUrl
533
- }));
534
- }
535
523
  return issueLikeDataTableView;
536
- }, [columns.length, currentSearchMethod, issueLikeDataTableView, jql, jqlUrl, resolvedWithNoResults, responseItems.length, retrieveUrlForSmartCardRender, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited]);
524
+ }, [columns.length, currentSearchMethod, issueLikeDataTableView, jql, jqlUrl, resolvedWithNoResults, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited]);
537
525
  return jsx(IntlMessagesProvider, {
538
526
  defaultMessages: i18nEN,
539
527
  loaderFn: fetchMessagesForLocale
@@ -549,17 +537,9 @@ export var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(prop
549
537
  onSiteSelection: onSiteSelection,
550
538
  selectedJiraSite: selectedJiraSite,
551
539
  testId: "jira-jql-datasource-modal--site-selector"
552
- })) : jsx(FormattedMessage, modalMessages.insertIssuesTitle))), !hasNoJiraSites && jsx(ModeSwitcher, {
553
- isCompact: true,
554
- options: [{
555
- label: formatMessage(modalMessages.issueViewModeLabel),
556
- value: 'issue'
557
- }, {
558
- label: formatMessage(modalMessages.countViewModeLabel),
559
- value: 'count'
560
- }],
561
- onOptionValueChange: handleViewModeChange,
562
- selectedOptionValue: currentViewMode
540
+ })) : jsx(FormattedMessage, modalMessages.insertIssuesTitle))), !hasNoJiraSites && jsx(DisplayViewDropDown, {
541
+ onViewModeChange: handleViewModeChange,
542
+ viewMode: currentViewMode
563
543
  })), jsx(ModalBody, null, !hasNoJiraSites ? jsx(Fragment, null, jsx(JiraSearchContainer, {
564
544
  setSearchBarJql: setSearchBarJql,
565
545
  searchBarJql: searchBarJql,
@@ -20,15 +20,25 @@ export var modalMessages = defineMessages({
20
20
  description: 'Title for the Jira Issues modal when a user has to select a site to inserting issues from',
21
21
  defaultMessage: 'Insert Jira issues from'
22
22
  },
23
- issueViewModeLabel: {
24
- id: 'linkDataSource.jira-issues.configmodal.issueViewModeLabel',
25
- description: 'Label for toggle to enable a view mode showing issues in a table list view',
26
- defaultMessage: 'Issue view'
27
- },
28
- countViewModeLabel: {
29
- id: 'linkDataSource.jira-issues.configmodal.countViewModeLabel',
30
- description: 'Label for toggle to enable a view mode showing issues in as a total count',
31
- defaultMessage: 'Count view'
23
+ tableViewModeLabel: {
24
+ id: 'linkDataSource.jira-issues.configmodal.tableViewModeLabel',
25
+ description: 'Display Jira search results as a table',
26
+ defaultMessage: 'Table'
27
+ },
28
+ tableViewModeDescription: {
29
+ id: 'linkDataSource.jira-issues.configmodal.tableViewModeDescription',
30
+ description: 'Description for table view mode',
31
+ defaultMessage: 'Display Jira search results as a table'
32
+ },
33
+ inlineLinkViewModeLabel: {
34
+ id: 'linkDataSource.jira-issues.configmodal.inlineLinkViewModeLabel',
35
+ description: 'Display the number of search results as an inline smart link',
36
+ defaultMessage: 'Inline link'
37
+ },
38
+ inlineLinkViewModeDescription: {
39
+ id: 'linkDataSource.jira-issues.configmodal.inlineLinkViewModeDescription',
40
+ description: 'Description for inline link view mode',
41
+ defaultMessage: 'Display the number of search results or as an inline smart link'
32
42
  },
33
43
  issuesCountSmartCardPlaceholderText: {
34
44
  id: 'linkDataSource.jira-issues.configmodal.placeholder.issues',
@@ -4,6 +4,11 @@ export declare const modalMessages: {
4
4
  description: string;
5
5
  defaultMessage: string;
6
6
  };
7
+ updateObjectsButtonText: {
8
+ id: string;
9
+ description: string;
10
+ defaultMessage: string;
11
+ };
7
12
  insertIssuesButtonText: {
8
13
  id: string;
9
14
  description: string;
@@ -0,0 +1,8 @@
1
+ /** @jsx jsx */
2
+ import { jsx } from '@emotion/react';
3
+ import { JiraIssueViewModes } from '../../types';
4
+ export type DisplayViewDropDownProps = {
5
+ onViewModeChange: (value: JiraIssueViewModes) => void;
6
+ viewMode: JiraIssueViewModes;
7
+ };
8
+ export declare const DisplayViewDropDown: ({ onViewModeChange, viewMode, }: DisplayViewDropDownProps) => jsx.JSX.Element;
@@ -19,12 +19,22 @@ export declare const modalMessages: {
19
19
  description: string;
20
20
  defaultMessage: string;
21
21
  };
22
- issueViewModeLabel: {
22
+ tableViewModeLabel: {
23
23
  id: string;
24
24
  description: string;
25
25
  defaultMessage: string;
26
26
  };
27
- countViewModeLabel: {
27
+ tableViewModeDescription: {
28
+ id: string;
29
+ description: string;
30
+ defaultMessage: string;
31
+ };
32
+ inlineLinkViewModeLabel: {
33
+ id: string;
34
+ description: string;
35
+ defaultMessage: string;
36
+ };
37
+ inlineLinkViewModeDescription: {
28
38
  id: string;
29
39
  description: string;
30
40
  defaultMessage: string;
@@ -4,6 +4,11 @@ export declare const modalMessages: {
4
4
  description: string;
5
5
  defaultMessage: string;
6
6
  };
7
+ updateObjectsButtonText: {
8
+ id: string;
9
+ description: string;
10
+ defaultMessage: string;
11
+ };
7
12
  insertIssuesButtonText: {
8
13
  id: string;
9
14
  description: string;
@@ -0,0 +1,8 @@
1
+ /** @jsx jsx */
2
+ import { jsx } from '@emotion/react';
3
+ import { JiraIssueViewModes } from '../../types';
4
+ export type DisplayViewDropDownProps = {
5
+ onViewModeChange: (value: JiraIssueViewModes) => void;
6
+ viewMode: JiraIssueViewModes;
7
+ };
8
+ export declare const DisplayViewDropDown: ({ onViewModeChange, viewMode, }: DisplayViewDropDownProps) => jsx.JSX.Element;
@@ -19,12 +19,22 @@ export declare const modalMessages: {
19
19
  description: string;
20
20
  defaultMessage: string;
21
21
  };
22
- issueViewModeLabel: {
22
+ tableViewModeLabel: {
23
23
  id: string;
24
24
  description: string;
25
25
  defaultMessage: string;
26
26
  };
27
- countViewModeLabel: {
27
+ tableViewModeDescription: {
28
+ id: string;
29
+ description: string;
30
+ defaultMessage: string;
31
+ };
32
+ inlineLinkViewModeLabel: {
33
+ id: string;
34
+ description: string;
35
+ defaultMessage: string;
36
+ };
37
+ inlineLinkViewModeDescription: {
28
38
  id: string;
29
39
  description: string;
30
40
  defaultMessage: string;
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@atlaskit/link-datasource",
3
- "version": "1.19.41",
3
+ "version": "1.19.42",
4
4
  "description": "UI Components to support linking platform dataset feature",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
7
7
  },
8
- "repository": "https://bitbucket.org/atlassian/atlassian-frontend",
8
+ "repository": "https://bitbucket.org/atlassian/atlassian-frontend-mirror",
9
9
  "author": "Atlassian Pty Ltd",
10
10
  "main": "dist/cjs/index.js",
11
11
  "module": "dist/esm/index.js",
@@ -35,6 +35,7 @@
35
35
  "@atlaskit/avatar": "^21.4.0",
36
36
  "@atlaskit/badge": "^15.2.0",
37
37
  "@atlaskit/button": "^17.2.0",
38
+ "@atlaskit/dropdown-menu": "^12.1.10",
38
39
  "@atlaskit/editor-prosemirror": "1.1.0",
39
40
  "@atlaskit/empty-state": "^7.5.0",
40
41
  "@atlaskit/form": "^9.0.3",