@atlaskit/link-datasource 1.24.5 → 1.24.6
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 +6 -0
- package/dist/cjs/common/types.js +5 -1
- package/dist/cjs/services/{getAvailableJiraSites.js → getAvailableSites.js} +5 -5
- package/dist/cjs/ui/common/error-state/loading-error.js +1 -1
- package/dist/cjs/ui/common/error-state/messages.js +56 -0
- package/dist/cjs/ui/common/error-state/modal-loading-error.js +1 -1
- package/dist/cjs/ui/common/error-state/no-instances.js +9 -5
- package/dist/cjs/ui/common/error-state/no-results.js +1 -1
- package/dist/cjs/ui/common/initial-state-view/index.js +73 -0
- package/dist/cjs/ui/{jira-issues-modal → common}/initial-state-view/messages.js +9 -2
- package/dist/cjs/ui/{jira-issues-modal → common/modal}/basic-search-input/index.js +8 -6
- package/dist/cjs/ui/{jira-issues-modal → common/modal}/basic-search-input/messages.js +5 -0
- package/dist/cjs/ui/{jira-issues-modal → common/modal}/site-selector/index.js +21 -10
- package/dist/cjs/ui/{jira-issues-modal → common/modal}/site-selector/messages.js +6 -0
- package/dist/cjs/ui/confluence-search-modal/index.js +29 -0
- package/dist/cjs/ui/confluence-search-modal/modal/confluence-search-initial-state-svg.js +152 -0
- package/dist/cjs/ui/confluence-search-modal/modal/index.js +153 -0
- package/dist/cjs/ui/confluence-search-modal/modal/messages.js +54 -0
- package/dist/cjs/ui/jira-issues-modal/index.js +1 -1
- package/dist/cjs/ui/jira-issues-modal/jira-search-container/index.js +8 -5
- package/dist/cjs/ui/jira-issues-modal/modal/index.js +41 -32
- package/dist/cjs/ui/jira-issues-modal/modal/{display-view-dropdown/display-view-drop-down.js → jira-display-view-dropdown/jira-display-view-drop-down.js} +3 -3
- package/dist/cjs/ui/jira-issues-modal/{initial-state-view/assets/initial-state-svg.js → modal/jira-issues-initial-state-svg.js} +2 -2
- package/dist/cjs/ui/jira-issues-modal/modal/messages.js +66 -0
- package/dist/es2019/common/types.js +1 -0
- package/dist/es2019/services/{getAvailableJiraSites.js → getAvailableSites.js} +2 -2
- package/dist/es2019/ui/common/error-state/loading-error.js +1 -1
- package/dist/es2019/ui/common/error-state/messages.js +56 -0
- package/dist/es2019/ui/common/error-state/modal-loading-error.js +1 -1
- package/dist/es2019/ui/common/error-state/no-instances.js +20 -12
- package/dist/es2019/ui/common/error-state/no-results.js +1 -1
- package/dist/es2019/ui/{jira-issues-modal → common}/initial-state-view/index.js +17 -26
- package/dist/es2019/ui/{jira-issues-modal → common}/initial-state-view/messages.js +9 -2
- package/dist/es2019/ui/{jira-issues-modal → common/modal}/basic-search-input/index.js +8 -5
- package/dist/es2019/ui/{jira-issues-modal → common/modal}/basic-search-input/messages.js +5 -0
- package/dist/es2019/ui/{jira-issues-modal → common/modal}/site-selector/index.js +20 -9
- package/dist/es2019/ui/{jira-issues-modal → common/modal}/site-selector/messages.js +6 -0
- package/dist/es2019/ui/confluence-search-modal/index.js +13 -0
- package/dist/es2019/ui/confluence-search-modal/modal/confluence-search-initial-state-svg.js +143 -0
- package/dist/es2019/ui/confluence-search-modal/modal/index.js +108 -0
- package/dist/es2019/ui/confluence-search-modal/modal/messages.js +48 -0
- package/dist/es2019/ui/jira-issues-modal/index.js +1 -1
- package/dist/es2019/ui/jira-issues-modal/jira-search-container/index.js +5 -2
- package/dist/es2019/ui/jira-issues-modal/modal/index.js +36 -27
- package/dist/es2019/ui/jira-issues-modal/modal/{display-view-dropdown/display-view-drop-down.js → jira-display-view-dropdown/jira-display-view-drop-down.js} +2 -2
- package/dist/es2019/ui/jira-issues-modal/{initial-state-view/assets/initial-state-svg.js → modal/jira-issues-initial-state-svg.js} +1 -1
- package/dist/es2019/ui/jira-issues-modal/modal/messages.js +66 -0
- package/dist/esm/common/types.js +1 -0
- package/dist/esm/services/{getAvailableJiraSites.js → getAvailableSites.js} +4 -4
- package/dist/esm/ui/common/error-state/loading-error.js +1 -1
- package/dist/esm/ui/common/error-state/messages.js +56 -0
- package/dist/esm/ui/common/error-state/modal-loading-error.js +1 -1
- package/dist/esm/ui/common/error-state/no-instances.js +10 -6
- package/dist/esm/ui/common/error-state/no-results.js +1 -1
- package/dist/esm/ui/{jira-issues-modal → common}/initial-state-view/index.js +17 -26
- package/dist/esm/ui/{jira-issues-modal → common}/initial-state-view/messages.js +9 -2
- package/dist/esm/ui/{jira-issues-modal → common/modal}/basic-search-input/index.js +8 -6
- package/dist/esm/ui/{jira-issues-modal → common/modal}/basic-search-input/messages.js +5 -0
- package/dist/esm/ui/{jira-issues-modal → common/modal}/site-selector/index.js +20 -9
- package/dist/esm/ui/{jira-issues-modal → common/modal}/site-selector/messages.js +6 -0
- package/dist/esm/ui/confluence-search-modal/index.js +17 -0
- package/dist/esm/ui/confluence-search-modal/modal/confluence-search-initial-state-svg.js +145 -0
- package/dist/esm/ui/confluence-search-modal/modal/index.js +142 -0
- package/dist/esm/ui/confluence-search-modal/modal/messages.js +48 -0
- package/dist/esm/ui/jira-issues-modal/index.js +1 -1
- package/dist/esm/ui/jira-issues-modal/jira-search-container/index.js +5 -2
- package/dist/esm/ui/jira-issues-modal/modal/index.js +36 -27
- package/dist/esm/ui/jira-issues-modal/modal/{display-view-dropdown/display-view-drop-down.js → jira-display-view-dropdown/jira-display-view-drop-down.js} +2 -2
- package/dist/esm/ui/jira-issues-modal/{initial-state-view/assets/initial-state-svg.js → modal/jira-issues-initial-state-svg.js} +1 -1
- package/dist/esm/ui/jira-issues-modal/modal/messages.js +66 -0
- package/dist/types/common/types.d.ts +30 -0
- package/dist/types/services/getAvailableSites.d.ts +2 -0
- package/dist/types/ui/common/error-state/messages.d.ts +45 -0
- package/dist/types/ui/common/error-state/no-instances.d.ts +8 -1
- package/dist/types/ui/common/initial-state-view/index.d.ts +16 -0
- package/dist/{types-ts4.5/ui/jira-issues-modal → types/ui/common}/initial-state-view/messages.d.ts +6 -1
- package/dist/types/ui/{jira-issues-modal → common/modal}/basic-search-input/index.d.ts +5 -2
- package/dist/types/ui/{jira-issues-modal → common/modal}/basic-search-input/messages.d.ts +5 -0
- package/dist/types/ui/common/modal/site-selector/index.d.ts +11 -0
- package/dist/{types-ts4.5/ui/jira-issues-modal → types/ui/common/modal}/site-selector/messages.d.ts +5 -0
- package/dist/types/ui/confluence-search-modal/index.d.ts +5 -0
- package/dist/types/ui/confluence-search-modal/modal/confluence-search-initial-state-svg.d.ts +2 -0
- package/dist/types/ui/confluence-search-modal/modal/index.d.ts +3 -0
- package/dist/types/ui/confluence-search-modal/modal/messages.d.ts +47 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/hooks/useFilterOptions.d.ts +1 -1
- package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.d.ts +1 -1
- package/dist/types/ui/jira-issues-modal/basic-filters/ui/index.d.ts +1 -1
- package/dist/types/ui/jira-issues-modal/index.d.ts +2 -2
- package/dist/types/ui/jira-issues-modal/jira-search-container/index.d.ts +2 -2
- package/dist/types/ui/jira-issues-modal/modal/index.d.ts +6 -5
- package/dist/types/ui/jira-issues-modal/modal/jira-display-view-dropdown/jira-display-view-drop-down.d.ts +8 -0
- package/dist/types/ui/jira-issues-modal/modal/jira-issues-initial-state-svg.d.ts +2 -0
- package/dist/types/ui/jira-issues-modal/modal/messages.d.ts +60 -0
- package/dist/types/ui/jira-issues-modal/types.d.ts +1 -28
- package/dist/types-ts4.5/common/types.d.ts +30 -0
- package/dist/types-ts4.5/services/getAvailableSites.d.ts +2 -0
- package/dist/types-ts4.5/ui/common/error-state/messages.d.ts +45 -0
- package/dist/types-ts4.5/ui/common/error-state/no-instances.d.ts +8 -1
- package/dist/types-ts4.5/ui/common/initial-state-view/index.d.ts +16 -0
- package/dist/{types/ui/jira-issues-modal → types-ts4.5/ui/common}/initial-state-view/messages.d.ts +6 -1
- package/dist/types-ts4.5/ui/{jira-issues-modal → common/modal}/basic-search-input/index.d.ts +5 -2
- package/dist/types-ts4.5/ui/{jira-issues-modal → common/modal}/basic-search-input/messages.d.ts +5 -0
- package/dist/types-ts4.5/ui/common/modal/site-selector/index.d.ts +11 -0
- package/dist/{types/ui/jira-issues-modal → types-ts4.5/ui/common/modal}/site-selector/messages.d.ts +5 -0
- package/dist/types-ts4.5/ui/confluence-search-modal/index.d.ts +5 -0
- package/dist/types-ts4.5/ui/confluence-search-modal/modal/confluence-search-initial-state-svg.d.ts +2 -0
- package/dist/types-ts4.5/ui/confluence-search-modal/modal/index.d.ts +3 -0
- package/dist/types-ts4.5/ui/confluence-search-modal/modal/messages.d.ts +47 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/hooks/useFilterOptions.d.ts +1 -1
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/jira-issues-modal/index.d.ts +2 -2
- package/dist/types-ts4.5/ui/jira-issues-modal/jira-search-container/index.d.ts +2 -2
- package/dist/types-ts4.5/ui/jira-issues-modal/modal/index.d.ts +6 -5
- package/dist/types-ts4.5/ui/jira-issues-modal/modal/jira-display-view-dropdown/jira-display-view-drop-down.d.ts +8 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/modal/jira-issues-initial-state-svg.d.ts +2 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/modal/messages.d.ts +60 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/types.d.ts +1 -28
- package/package.json +5 -2
- package/dist/cjs/ui/jira-issues-modal/initial-state-view/index.js +0 -81
- package/dist/types/services/getAvailableJiraSites.d.ts +0 -2
- package/dist/types/ui/jira-issues-modal/initial-state-view/assets/initial-state-svg.d.ts +0 -2
- package/dist/types/ui/jira-issues-modal/initial-state-view/index.d.ts +0 -8
- package/dist/types/ui/jira-issues-modal/modal/display-view-dropdown/display-view-drop-down.d.ts +0 -8
- package/dist/types/ui/jira-issues-modal/site-selector/index.d.ts +0 -9
- package/dist/types-ts4.5/services/getAvailableJiraSites.d.ts +0 -2
- package/dist/types-ts4.5/ui/jira-issues-modal/initial-state-view/assets/initial-state-svg.d.ts +0 -2
- package/dist/types-ts4.5/ui/jira-issues-modal/initial-state-view/index.d.ts +0 -8
- package/dist/types-ts4.5/ui/jira-issues-modal/modal/display-view-dropdown/display-view-drop-down.d.ts +0 -8
- package/dist/types-ts4.5/ui/jira-issues-modal/site-selector/index.d.ts +0 -9
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { Fragment, useCallback, useEffect, useMemo, useState } 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 { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
|
|
7
|
+
import Modal, { ModalBody, ModalFooter, ModalHeader, ModalTitle } from '@atlaskit/modal-dialog';
|
|
8
|
+
import { Box, xcss } from '@atlaskit/primitives';
|
|
9
|
+
import { N40 } from '@atlaskit/theme/colors';
|
|
10
|
+
import { fetchMessagesForLocale } from '../../../common/utils/locale/fetch-messages-for-locale';
|
|
11
|
+
import i18nEN from '../../../i18n/en';
|
|
12
|
+
import { getAvailableSites } from '../../../services/getAvailableSites';
|
|
13
|
+
import { NoInstancesView } from '../../common/error-state/no-instances';
|
|
14
|
+
import { InitialStateView } from '../../common/initial-state-view';
|
|
15
|
+
import { BasicSearchInput } from '../../common/modal/basic-search-input';
|
|
16
|
+
import { SiteSelector } from '../../common/modal/site-selector';
|
|
17
|
+
import { scrollableContainerShadowsCssComponents } from '../../issue-like-table';
|
|
18
|
+
import { ConfluenceSearchInitialStateSVG } from './confluence-search-initial-state-svg';
|
|
19
|
+
import { confluenceSearchModalMessages } from './messages';
|
|
20
|
+
const contentContainerStyles = xcss({
|
|
21
|
+
display: 'grid',
|
|
22
|
+
maxHeight: '420px',
|
|
23
|
+
overflow: 'auto',
|
|
24
|
+
borderBottom: `2px solid ${`var(--ds-background-accent-gray-subtler, ${N40})`}`,
|
|
25
|
+
backgroundImage: scrollableContainerShadowsCssComponents.backgroundImage,
|
|
26
|
+
backgroundPosition: scrollableContainerShadowsCssComponents.backgroundPosition,
|
|
27
|
+
backgroundRepeat: scrollableContainerShadowsCssComponents.backgroundRepeat,
|
|
28
|
+
backgroundSize: scrollableContainerShadowsCssComponents.backgroundSize,
|
|
29
|
+
backgroundAttachment: scrollableContainerShadowsCssComponents.backgroundAttachment
|
|
30
|
+
});
|
|
31
|
+
export const ConfluenceSearchConfigModal = props => {
|
|
32
|
+
const {
|
|
33
|
+
parameters: initialParameters,
|
|
34
|
+
onCancel
|
|
35
|
+
} = props;
|
|
36
|
+
const [availableSites, setAvailableSites] = useState(undefined);
|
|
37
|
+
const [cloudId, setCloudId] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.cloudId);
|
|
38
|
+
const [searchTerm, setSearchTerm] = useState('');
|
|
39
|
+
const onSiteSelection = useCallback(site => {
|
|
40
|
+
setCloudId(site.cloudId);
|
|
41
|
+
}, [setCloudId]);
|
|
42
|
+
const hasNoConfluenceSites = availableSites && availableSites.length === 0;
|
|
43
|
+
const selectedConfluenceSite = useMemo(() => {
|
|
44
|
+
if (cloudId) {
|
|
45
|
+
return availableSites === null || availableSites === void 0 ? void 0 : availableSites.find(confluenceSite => confluenceSite.cloudId === cloudId);
|
|
46
|
+
} else {
|
|
47
|
+
let currentlyLoggedInSiteUrl;
|
|
48
|
+
if (typeof window.location !== 'undefined') {
|
|
49
|
+
currentlyLoggedInSiteUrl = window.location.origin;
|
|
50
|
+
}
|
|
51
|
+
return (availableSites === null || availableSites === void 0 ? void 0 : availableSites.find(confluenceSite => confluenceSite.url === currentlyLoggedInSiteUrl)) || (availableSites === null || availableSites === void 0 ? void 0 : availableSites[0]);
|
|
52
|
+
}
|
|
53
|
+
}, [availableSites, cloudId]);
|
|
54
|
+
const handleSearchChange = useCallback(e => {
|
|
55
|
+
const rawSearch = e.currentTarget.value;
|
|
56
|
+
setSearchTerm(rawSearch);
|
|
57
|
+
}, [setSearchTerm]);
|
|
58
|
+
useEffect(() => {
|
|
59
|
+
const fetchSiteDisplayNames = async () => {
|
|
60
|
+
const confluenceSites = await getAvailableSites('confluence');
|
|
61
|
+
const sortedAvailableSites = [...confluenceSites].sort((a, b) => a.displayName.localeCompare(b.displayName));
|
|
62
|
+
setAvailableSites(sortedAvailableSites);
|
|
63
|
+
};
|
|
64
|
+
void fetchSiteDisplayNames();
|
|
65
|
+
}, []);
|
|
66
|
+
const siteSelectorLabel = availableSites && availableSites.length > 1 ? confluenceSearchModalMessages.insertIssuesTitleManySites : confluenceSearchModalMessages.insertIssuesTitle;
|
|
67
|
+
return jsx(IntlMessagesProvider, {
|
|
68
|
+
defaultMessages: i18nEN,
|
|
69
|
+
loaderFn: fetchMessagesForLocale
|
|
70
|
+
}, jsx(Modal, {
|
|
71
|
+
testId: "confluence-search-datasource-modal",
|
|
72
|
+
onClose: onCancel,
|
|
73
|
+
width: "calc(100% - 80px)",
|
|
74
|
+
shouldScrollInViewport: true
|
|
75
|
+
}, jsx(ModalHeader, null, jsx(ModalTitle, null, jsx(SiteSelector, {
|
|
76
|
+
availableSites: availableSites,
|
|
77
|
+
onSiteSelection: onSiteSelection,
|
|
78
|
+
selectedSite: selectedConfluenceSite,
|
|
79
|
+
testId: "confluence-search-datasource-modal--site-selector",
|
|
80
|
+
label: siteSelectorLabel
|
|
81
|
+
}))), jsx(ModalBody, null, !hasNoConfluenceSites ? jsx(Fragment, null, jsx(BasicSearchInput, {
|
|
82
|
+
testId: "confluence-search-datasource-modal",
|
|
83
|
+
isSearching: status === 'loading',
|
|
84
|
+
onChange: handleSearchChange,
|
|
85
|
+
onSearch: () => {},
|
|
86
|
+
searchTerm: searchTerm,
|
|
87
|
+
placeholder: confluenceSearchModalMessages.searchLabel,
|
|
88
|
+
fullWidth: true
|
|
89
|
+
}), jsx(Box, {
|
|
90
|
+
xcss: contentContainerStyles
|
|
91
|
+
}, jsx(InitialStateView, {
|
|
92
|
+
icon: jsx(ConfluenceSearchInitialStateSVG, null),
|
|
93
|
+
title: confluenceSearchModalMessages.initialViewSearchTitle,
|
|
94
|
+
description: confluenceSearchModalMessages.initialViewSearchDescription
|
|
95
|
+
}))) : jsx(NoInstancesView, {
|
|
96
|
+
title: confluenceSearchModalMessages.noAccessToConfluenceSitesTitle,
|
|
97
|
+
description: confluenceSearchModalMessages.noAccessToConfluenceSitesDescription,
|
|
98
|
+
testId: 'no-confluence-instances-content'
|
|
99
|
+
})), jsx(ModalFooter, null, jsx(Button, {
|
|
100
|
+
appearance: "default",
|
|
101
|
+
onClick: onCancel
|
|
102
|
+
}, jsx(FormattedMessage, confluenceSearchModalMessages.cancelButtonText)), !hasNoConfluenceSites && jsx(Button, {
|
|
103
|
+
appearance: "primary",
|
|
104
|
+
onClick: () => {},
|
|
105
|
+
isDisabled: true,
|
|
106
|
+
testId: "confluence-search-datasource-modal--insert-button"
|
|
107
|
+
}, jsx(FormattedMessage, confluenceSearchModalMessages.insertResultsButtonText)))));
|
|
108
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { defineMessages } from 'react-intl-next';
|
|
2
|
+
export const confluenceSearchModalMessages = defineMessages({
|
|
3
|
+
cancelButtonText: {
|
|
4
|
+
id: 'linkDataSource.confluence-search.configmodal.cancelButtonText',
|
|
5
|
+
description: 'Button text to close the modal with no changes being made',
|
|
6
|
+
defaultMessage: 'Cancel'
|
|
7
|
+
},
|
|
8
|
+
insertResultsButtonText: {
|
|
9
|
+
id: 'linkDataSource.confluence-search.configmodal.insertResultsButtonText',
|
|
10
|
+
description: 'Button text to insert the displayed content',
|
|
11
|
+
defaultMessage: 'Insert results'
|
|
12
|
+
},
|
|
13
|
+
searchLabel: {
|
|
14
|
+
id: 'linkDataSource.confluence-search.configmodal.searchLabel',
|
|
15
|
+
description: 'Placeholder text for the search input box',
|
|
16
|
+
defaultMessage: 'Enter keywords to find pages, attachments, and more'
|
|
17
|
+
},
|
|
18
|
+
insertIssuesTitle: {
|
|
19
|
+
id: 'linkDataSource.confluence-search.configmodal.insertConfluenceTitle',
|
|
20
|
+
description: 'Title for the Confluence Search Datasource Confluence Search config modal',
|
|
21
|
+
defaultMessage: 'Insert Confluence list'
|
|
22
|
+
},
|
|
23
|
+
insertIssuesTitleManySites: {
|
|
24
|
+
id: 'linkDataSource.confluence-search.configmodal.insertConfluenceTitleManySites',
|
|
25
|
+
description: 'Title for the Confluence Search config modal when a user has to select a site to insert issues from',
|
|
26
|
+
defaultMessage: 'Insert Confluence list from'
|
|
27
|
+
},
|
|
28
|
+
initialViewSearchTitle: {
|
|
29
|
+
id: 'linkDataSource.modal-initial-state.confluenceSearchTitle',
|
|
30
|
+
description: 'The initial modal search state title explains to user how to get information',
|
|
31
|
+
defaultMessage: 'Search for Confluence pages'
|
|
32
|
+
},
|
|
33
|
+
initialViewSearchDescription: {
|
|
34
|
+
id: 'linkDataSource.modal-initial-state.searchDescription-confluence',
|
|
35
|
+
description: 'The initial modal search state helper message for confluence search displayed under the search title',
|
|
36
|
+
defaultMessage: 'Search by keyword for pages to insert.'
|
|
37
|
+
},
|
|
38
|
+
noAccessToConfluenceSitesTitle: {
|
|
39
|
+
id: 'linkDataSource.confluence-search.no.confluence.sites.access.title',
|
|
40
|
+
description: 'Title that shows in the modal when user has no access to any Confluence sites',
|
|
41
|
+
defaultMessage: "You don't have access to any Confluence sites"
|
|
42
|
+
},
|
|
43
|
+
noAccessToConfluenceSitesDescription: {
|
|
44
|
+
id: 'linkDataSource.confluence-search.no.confluence.sites.access.description',
|
|
45
|
+
description: 'Description that shows in the modal when user has no access to any Confluence sites',
|
|
46
|
+
defaultMessage: 'To request access, contact your admin.'
|
|
47
|
+
}
|
|
48
|
+
});
|
|
@@ -6,7 +6,7 @@ const LazyJiraIssuesConfigModal = /*#__PURE__*/lazy(() => import( /* webpackChun
|
|
|
6
6
|
const JiraIssuesConfigModalWithWrappers = props => {
|
|
7
7
|
return /*#__PURE__*/React.createElement(Suspense, {
|
|
8
8
|
fallback: /*#__PURE__*/React.createElement("div", {
|
|
9
|
-
"data-testid": 'jira-
|
|
9
|
+
"data-testid": 'jira-datasource-table-suspense'
|
|
10
10
|
})
|
|
11
11
|
}, /*#__PURE__*/React.createElement(LazyJiraIssuesConfigModal, props));
|
|
12
12
|
};
|
|
@@ -6,10 +6,11 @@ import { useDebouncedCallback } from 'use-debounce';
|
|
|
6
6
|
import { getBooleanFF } from '@atlaskit/platform-feature-flags';
|
|
7
7
|
import { Flex, xcss } from '@atlaskit/primitives';
|
|
8
8
|
import { useDatasourceAnalyticsEvents } from '../../../analytics';
|
|
9
|
+
import { BasicSearchInput } from '../../common/modal/basic-search-input';
|
|
10
|
+
import { basicSearchInputMessages } from '../../common/modal/basic-search-input/messages';
|
|
9
11
|
import { BasicFilters } from '../basic-filters';
|
|
10
12
|
import { useHydrateJqlQuery } from '../basic-filters/hooks/useHydrateJqlQuery';
|
|
11
13
|
import { isQueryTooComplex } from '../basic-filters/utils/isQueryTooComplex';
|
|
12
|
-
import { BasicSearchInput } from '../basic-search-input';
|
|
13
14
|
import { JiraJQLEditor } from '../jql-editor';
|
|
14
15
|
import { ModeSwitcher } from '../mode-switcher';
|
|
15
16
|
import { buildJQL } from './buildJQL';
|
|
@@ -192,7 +193,9 @@ export const JiraSearchContainer = props => {
|
|
|
192
193
|
isSearching: isSearching,
|
|
193
194
|
onChange: handleBasicSearchChange,
|
|
194
195
|
onSearch: handleSearch,
|
|
195
|
-
searchTerm: basicSearchTerm
|
|
196
|
+
searchTerm: basicSearchTerm,
|
|
197
|
+
placeholder: basicSearchInputMessages.basicTextSearchLabel,
|
|
198
|
+
testId: "jira-datasource-modal"
|
|
196
199
|
}), showBasicFilters && jsx(BasicFilters, {
|
|
197
200
|
jql: searchBarJql,
|
|
198
201
|
site: site,
|
|
@@ -22,26 +22,23 @@ import { buildDatasourceAdf } from '../../../common/utils/adf';
|
|
|
22
22
|
import { fetchMessagesForLocale } from '../../../common/utils/locale/fetch-messages-for-locale';
|
|
23
23
|
import { useDatasourceTableState } from '../../../hooks/useDatasourceTableState';
|
|
24
24
|
import i18nEN from '../../../i18n/en';
|
|
25
|
-
import {
|
|
25
|
+
import { getAvailableSites } from '../../../services/getAvailableSites';
|
|
26
26
|
import { AccessRequired } from '../../common/error-state/access-required';
|
|
27
|
+
import { loadingErrorMessages } from '../../common/error-state/messages';
|
|
27
28
|
import { ModalLoadingError } from '../../common/error-state/modal-loading-error';
|
|
28
29
|
import { NoInstancesView } from '../../common/error-state/no-instances';
|
|
29
30
|
import { NoResults } from '../../common/error-state/no-results';
|
|
31
|
+
import { InitialStateView } from '../../common/initial-state-view';
|
|
32
|
+
import { initialStateViewMessages } from '../../common/initial-state-view/messages';
|
|
33
|
+
import { SiteSelector } from '../../common/modal/site-selector';
|
|
30
34
|
import { EmptyState, IssueLikeDataTableView, scrollableContainerShadowsCssComponents } from '../../issue-like-table';
|
|
31
35
|
import LinkRenderType from '../../issue-like-table/render-type/link';
|
|
32
36
|
import { availableBasicFilterTypes } from '../basic-filters/ui';
|
|
33
37
|
import { isQueryTooComplex } from '../basic-filters/utils/isQueryTooComplex';
|
|
34
|
-
import { InitialStateView } from '../initial-state-view';
|
|
35
38
|
import { JiraSearchContainer } from '../jira-search-container';
|
|
36
|
-
import {
|
|
37
|
-
import {
|
|
39
|
+
import { JiraDisplayViewDropDown } from './jira-display-view-dropdown/jira-display-view-drop-down';
|
|
40
|
+
import { JiraInitialStateSVG } from './jira-issues-initial-state-svg';
|
|
38
41
|
import { modalMessages } from './messages';
|
|
39
|
-
const dropdownContainerStyles = css({
|
|
40
|
-
display: 'flex',
|
|
41
|
-
alignItems: 'center',
|
|
42
|
-
gap: "var(--ds-space-100, 0.5rem)",
|
|
43
|
-
minHeight: '40px' // to prevent vertical shifting when site selector pops in
|
|
44
|
-
});
|
|
45
42
|
const tableContainerStyles = css({
|
|
46
43
|
borderTopLeftRadius: "var(--ds-border-radius-200, 8px)",
|
|
47
44
|
borderTopRightRadius: "var(--ds-border-radius-200, 8px)",
|
|
@@ -78,6 +75,7 @@ const getDisplayValue = (currentViewMode, itemCount) => {
|
|
|
78
75
|
}
|
|
79
76
|
return itemCount === 1 ? DatasourceDisplay.INLINE : DatasourceDisplay.DATASOURCE_INLINE;
|
|
80
77
|
};
|
|
78
|
+
const jqlSupportDocumentLink = 'https://support.atlassian.com/jira-service-management-cloud/docs/use-advanced-search-with-jira-query-language-jql/';
|
|
81
79
|
|
|
82
80
|
/**
|
|
83
81
|
* This method should be called when one atomic action is performed on columns: adding new item, removing one item, changing items order.
|
|
@@ -215,7 +213,7 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
215
213
|
}, [initialVisibleColumnKeys, defaultVisibleColumnKeys]);
|
|
216
214
|
useEffect(() => {
|
|
217
215
|
const fetchSiteDisplayNames = async () => {
|
|
218
|
-
const jiraSites = await
|
|
216
|
+
const jiraSites = await getAvailableSites('jira');
|
|
219
217
|
const sortedAvailableSites = [...jiraSites].sort((a, b) => a.displayName.localeCompare(b.displayName));
|
|
220
218
|
setAvailableSites(sortedAvailableSites);
|
|
221
219
|
fireEvent('ui.modal.ready.datasource', {
|
|
@@ -329,7 +327,7 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
329
327
|
// During insertion, we want the JQL of the datasource to be whatever is in the search bar,
|
|
330
328
|
// even if the user didn't previously click search
|
|
331
329
|
const upToDateJql = searchBarJql !== null && searchBarJql !== void 0 ? searchBarJql : jql;
|
|
332
|
-
const upToDateJqlUrl = selectedJiraSite && jql && `${selectedJiraSite.url}/issues/?jql=${encodeURI(upToDateJql)}`;
|
|
330
|
+
const upToDateJqlUrl = selectedJiraSite && jql && `${selectedJiraSite.url}/issues/?jql=${getBooleanFF('platform.linking-platform.datasource.enable-stricter-jql-encoding') ? encodeURIComponent(upToDateJql) : encodeURI(upToDateJql)}`;
|
|
333
331
|
const filterSelectionCount = availableBasicFilterTypes.reduce((current, filter) => {
|
|
334
332
|
var _basicFilterSelection;
|
|
335
333
|
return {
|
|
@@ -429,7 +427,7 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
429
427
|
const issueLikeDataTableView = useMemo(() => jsx("div", {
|
|
430
428
|
css: [tableContainerStyles, contentContainerStyles]
|
|
431
429
|
}, jsx(IssueLikeDataTableView, {
|
|
432
|
-
testId: "jira-
|
|
430
|
+
testId: "jira-datasource-table",
|
|
433
431
|
status: status,
|
|
434
432
|
columns: columns,
|
|
435
433
|
items: responseItems,
|
|
@@ -455,7 +453,7 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
455
453
|
return jsx("div", {
|
|
456
454
|
css: smartLinkContainerStyles
|
|
457
455
|
}, jsx("span", {
|
|
458
|
-
"data-testid": `jira-
|
|
456
|
+
"data-testid": `jira-datasource-modal--smart-card-placeholder`,
|
|
459
457
|
css: placeholderSmartLinkStyles
|
|
460
458
|
}, jsx(FormattedMessage, modalMessages.issuesCountSmartCardPlaceholderText)));
|
|
461
459
|
} else {
|
|
@@ -463,7 +461,7 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
463
461
|
if (responseItems.length === 1 && retrieveUrlForSmartCardRender()) {
|
|
464
462
|
url = retrieveUrlForSmartCardRender();
|
|
465
463
|
} else {
|
|
466
|
-
url = `${selectedJiraSiteUrl}/issues/?jql=${encodeURI(jql)}`;
|
|
464
|
+
url = `${selectedJiraSiteUrl}/issues/?jql=${getBooleanFF('platform.linking-platform.datasource.enable-stricter-jql-encoding') ? encodeURIComponent(jql) : encodeURI(jql)}`;
|
|
467
465
|
}
|
|
468
466
|
return jsx("div", {
|
|
469
467
|
css: smartLinkContainerStyles
|
|
@@ -489,29 +487,36 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
489
487
|
return jsx("div", {
|
|
490
488
|
css: [contentContainerStyles, !!jql && tableContainerStyles]
|
|
491
489
|
}, !!jql ? jsx(EmptyState, {
|
|
492
|
-
testId: `jira-
|
|
490
|
+
testId: `jira-datasource-modal--empty-state`
|
|
493
491
|
}) : jsx(InitialStateView, {
|
|
494
|
-
|
|
492
|
+
showBeta: !getBooleanFF('platform.linking-platform.datasource.show-jlol-basic-filters'),
|
|
493
|
+
icon: jsx(JiraInitialStateSVG, null),
|
|
494
|
+
title: modalMessages.searchJiraTitle,
|
|
495
|
+
description: currentSearchMethod === 'jql' ? initialStateViewMessages.searchDescriptionForJQLSearch : initialStateViewMessages.searchDescriptionForBasicSearch,
|
|
496
|
+
learnMoreLink: currentSearchMethod === 'jql' ? {
|
|
497
|
+
href: jqlSupportDocumentLink,
|
|
498
|
+
text: initialStateViewMessages.learnMoreLink
|
|
499
|
+
} : undefined
|
|
495
500
|
}));
|
|
496
501
|
}
|
|
497
502
|
return issueLikeDataTableView;
|
|
498
503
|
}, [columns.length, currentSearchMethod, issueLikeDataTableView, jql, jqlUrl, resolvedWithNoResults, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited]);
|
|
504
|
+
const siteSelectorLabel = availableSites && availableSites.length > 1 ? modalMessages.insertIssuesTitleManySites : modalMessages.insertIssuesTitle;
|
|
499
505
|
return jsx(IntlMessagesProvider, {
|
|
500
506
|
defaultMessages: i18nEN,
|
|
501
507
|
loaderFn: fetchMessagesForLocale
|
|
502
508
|
}, jsx(ModalTransition, null, jsx(Modal, {
|
|
503
|
-
testId: "jira-
|
|
509
|
+
testId: "jira-datasource-modal",
|
|
504
510
|
onClose: onCancel,
|
|
505
511
|
width: "calc(100% - 80px)",
|
|
506
512
|
shouldScrollInViewport: true
|
|
507
|
-
}, jsx(ModalHeader, null, jsx(ModalTitle, null, jsx(
|
|
508
|
-
css: dropdownContainerStyles
|
|
509
|
-
}, availableSites && availableSites.length > 1 ? jsx(Fragment, null, jsx(FormattedMessage, modalMessages.insertIssuesTitleManySites), jsx(JiraSiteSelector, {
|
|
513
|
+
}, jsx(ModalHeader, null, jsx(ModalTitle, null, jsx(SiteSelector, {
|
|
510
514
|
availableSites: availableSites,
|
|
511
515
|
onSiteSelection: onSiteSelection,
|
|
512
|
-
|
|
513
|
-
testId: "jira-
|
|
514
|
-
|
|
516
|
+
selectedSite: selectedJiraSite,
|
|
517
|
+
testId: "jira-datasource-modal--site-selector",
|
|
518
|
+
label: siteSelectorLabel
|
|
519
|
+
})), !hasNoJiraSites && jsx(JiraDisplayViewDropDown, {
|
|
515
520
|
onViewModeChange: handleViewModeChange,
|
|
516
521
|
viewMode: currentViewMode
|
|
517
522
|
})), jsx(ModalBody, null, !hasNoJiraSites ? jsx(Fragment, null, jsx(JiraSearchContainer, {
|
|
@@ -523,8 +528,12 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
523
528
|
initialSearchMethod: initialSearchMethod,
|
|
524
529
|
onSearchMethodChange: setCurrentSearchMethod,
|
|
525
530
|
site: selectedJiraSite
|
|
526
|
-
}), currentViewMode === 'count' ? renderCountModeContent() : renderIssuesModeContent()) : jsx(NoInstancesView,
|
|
527
|
-
|
|
531
|
+
}), currentViewMode === 'count' ? renderCountModeContent() : renderIssuesModeContent()) : jsx(NoInstancesView, {
|
|
532
|
+
title: loadingErrorMessages.noAccessToJiraSitesTitle,
|
|
533
|
+
description: loadingErrorMessages.noAccessToJiraSitesDescription,
|
|
534
|
+
testId: `no-jira-instances-content`
|
|
535
|
+
})), jsx(ModalFooter, null, shouldShowIssueCount && jsx("div", {
|
|
536
|
+
"data-testid": "jira-datasource-modal-total-issues-count",
|
|
528
537
|
css: issueCountStyles
|
|
529
538
|
}, jsx(LinkUrl, {
|
|
530
539
|
href: jqlUrl,
|
|
@@ -546,7 +555,7 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
546
555
|
appearance: "primary",
|
|
547
556
|
onClick: onInsertPressed,
|
|
548
557
|
isDisabled: isInsertDisabled,
|
|
549
|
-
testId: "jira-
|
|
558
|
+
testId: "jira-datasource-modal--insert-button"
|
|
550
559
|
}, jsx(FormattedMessage, modalMessages.insertIssuesButtonText))))));
|
|
551
560
|
};
|
|
552
561
|
const analyticsContextAttributes = {
|
|
@@ -24,7 +24,7 @@ const InlineIcon = jsx("svg", {
|
|
|
24
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
25
|
fill: 'currentColor'
|
|
26
26
|
}));
|
|
27
|
-
export const
|
|
27
|
+
export const JiraDisplayViewDropDown = ({
|
|
28
28
|
onViewModeChange,
|
|
29
29
|
viewMode
|
|
30
30
|
}) => {
|
|
@@ -34,7 +34,7 @@ export const DisplayViewDropDown = ({
|
|
|
34
34
|
const triggerText = viewMode === 'issue' ? formatMessage(modalMessages.tableViewModeLabel) : formatMessage(modalMessages.inlineLinkViewModeLabel);
|
|
35
35
|
return jsx(DropdownMenu, {
|
|
36
36
|
trigger: triggerText,
|
|
37
|
-
testId: "jira-
|
|
37
|
+
testId: "jira-datasource-modal--view-drop-down"
|
|
38
38
|
}, jsx(Box, {
|
|
39
39
|
xcss: dropDownItemGroupStyles
|
|
40
40
|
}, jsx(DropdownItemGroup, null, jsx(DropdownItem, {
|
|
@@ -49,5 +49,71 @@ export const modalMessages = defineMessages({
|
|
|
49
49
|
id: 'linkDataSource.jira-issues.configmodal.issue',
|
|
50
50
|
description: 'Text that appears after issue count number.',
|
|
51
51
|
defaultMessage: '{totalCount, plural, one {issue} other {issues}}'
|
|
52
|
+
},
|
|
53
|
+
searchJiraTitleDuplicate: {
|
|
54
|
+
id: 'linkDataSource.jira-issues.searchJiraTitle',
|
|
55
|
+
description: 'The initial modal search state title that gives the user some idea about how to get information',
|
|
56
|
+
defaultMessage: 'Search for Jira issues'
|
|
57
|
+
},
|
|
58
|
+
// delete and remove duplicate from title above once EDM-9407 is merged
|
|
59
|
+
searchJiraTitle: {
|
|
60
|
+
id: 'linkDataSource.modal-initial-state.searchTitle',
|
|
61
|
+
description: 'The initial modal search state title that gives the user some idea about how to get information',
|
|
62
|
+
defaultMessage: 'Search for Jira issues'
|
|
63
|
+
},
|
|
64
|
+
searchDescriptionForJiraBasicSearchDuplicate: {
|
|
65
|
+
id: 'linkDataSource.jira-issues.searchDescription-basic',
|
|
66
|
+
description: 'The initial modal search state helper message displayed under the search title when basic search mode is selected',
|
|
67
|
+
defaultMessage: 'Search by keyword for issues to insert.'
|
|
68
|
+
},
|
|
69
|
+
// delete and remove duplicate from title above once EDM-9407 is merged
|
|
70
|
+
searchDescriptionForJiraBasicSearch: {
|
|
71
|
+
id: 'linkDataSource.modal-initial-state.searchDescription-basic',
|
|
72
|
+
description: 'The initial modal search state helper message displayed under the search title when basic search mode is selected',
|
|
73
|
+
defaultMessage: 'Search by keyword for issues to insert.'
|
|
74
|
+
},
|
|
75
|
+
searchDescriptionForJiraJQLSearchDuplicate: {
|
|
76
|
+
id: 'linkDataSource.jira-issues.searchDescription-jql',
|
|
77
|
+
description: 'The initial modal search state helper message displayed under the search title when JQL search mode is selected',
|
|
78
|
+
defaultMessage: 'Use JQL (Jira Query Language) to search for issues.'
|
|
79
|
+
},
|
|
80
|
+
// delete and remove duplicate from title above once EDM-9407 is merged
|
|
81
|
+
searchDescriptionForJiraJQLSearch: {
|
|
82
|
+
id: 'linkDataSource.modal-initial-state.searchDescription-jql',
|
|
83
|
+
description: 'The initial modal search state helper message displayed under the search title when JQL search mode is selected',
|
|
84
|
+
defaultMessage: 'Use JQL (Jira Query Language) to search for issues.'
|
|
85
|
+
},
|
|
86
|
+
learnMoreLinkDuplicate: {
|
|
87
|
+
id: 'linkDataSource.jira-issues.learnMoreLink',
|
|
88
|
+
description: 'The link that displays under the search description to help people know more about JQL',
|
|
89
|
+
defaultMessage: 'Learn how to search with JQL'
|
|
90
|
+
},
|
|
91
|
+
// delete and remove duplicate from title above once EDM-9407 is merged
|
|
92
|
+
learnMoreLink: {
|
|
93
|
+
id: 'linkDataSource.modal-initial-state.learnMoreLink',
|
|
94
|
+
description: 'The link that displays under the search description to help people know more about JQL',
|
|
95
|
+
defaultMessage: 'Learn how to search with JQL'
|
|
96
|
+
},
|
|
97
|
+
noAccessToJiraSitesTitleDuplicate: {
|
|
98
|
+
id: 'linkDataSource.no.jira.sites.access.title',
|
|
99
|
+
description: 'Title that shows in the modal when user has no access to any Jira sites',
|
|
100
|
+
defaultMessage: "You don't have access to any Jira sites"
|
|
101
|
+
},
|
|
102
|
+
// delete and remove duplicate from title above once EDM-9407 is merged
|
|
103
|
+
noAccessToJiraSitesTitle: {
|
|
104
|
+
id: 'linkDataSource.jira-issues.no.jira.sites.access.title',
|
|
105
|
+
description: 'Title that shows in the modal when user has no access to any Jira sites',
|
|
106
|
+
defaultMessage: "You don't have access to any Jira sites"
|
|
107
|
+
},
|
|
108
|
+
noAccessToJiraSitesDescriptionDuplicate: {
|
|
109
|
+
id: 'linkDataSource.no.jira.sites.access.description',
|
|
110
|
+
description: 'Description that shows in the modal when user has no access to any Jira sites',
|
|
111
|
+
defaultMessage: 'To request access, contact your admin.'
|
|
112
|
+
},
|
|
113
|
+
// delete and remove duplicate from title above once EDM-9407 is merged
|
|
114
|
+
noAccessToJiraSitesDescription: {
|
|
115
|
+
id: 'linkDataSource.jira-issues.no.jira.sites.access.description',
|
|
116
|
+
description: 'Description that shows in the modal when user has no access to any Jira sites',
|
|
117
|
+
defaultMessage: 'To request access, contact your admin.'
|
|
52
118
|
}
|
|
53
119
|
});
|
package/dist/esm/common/types.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
2
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
3
|
-
export var
|
|
4
|
-
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
3
|
+
export var getAvailableSites = /*#__PURE__*/function () {
|
|
4
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(product) {
|
|
5
5
|
var requestConfig, response, res;
|
|
6
6
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
7
7
|
while (1) switch (_context.prev = _context.next) {
|
|
@@ -15,7 +15,7 @@ export var getAvailableJiraSites = /*#__PURE__*/function () {
|
|
|
15
15
|
'Content-Type': 'application/json'
|
|
16
16
|
},
|
|
17
17
|
body: JSON.stringify({
|
|
18
|
-
products: ['jira-software.ondemand', 'jira-core.ondemand', 'jira-incident-manager.ondemand', 'jira-product-discovery', 'jira-servicedesk.ondemand']
|
|
18
|
+
products: product === 'confluence' ? ['confluence.ondemand'] : ['jira-software.ondemand', 'jira-core.ondemand', 'jira-incident-manager.ondemand', 'jira-product-discovery', 'jira-servicedesk.ondemand']
|
|
19
19
|
})
|
|
20
20
|
};
|
|
21
21
|
_context.next = 3;
|
|
@@ -51,7 +51,7 @@ export var getAvailableJiraSites = /*#__PURE__*/function () {
|
|
|
51
51
|
}
|
|
52
52
|
}, _callee);
|
|
53
53
|
}));
|
|
54
|
-
return function
|
|
54
|
+
return function getAvailableSites(_x) {
|
|
55
55
|
return _ref.apply(this, arguments);
|
|
56
56
|
};
|
|
57
57
|
}();
|
|
@@ -34,7 +34,7 @@ export var LoadingError = function LoadingError(_ref) {
|
|
|
34
34
|
}, [fireEvent]);
|
|
35
35
|
return jsx("div", {
|
|
36
36
|
css: errorContainerStyles,
|
|
37
|
-
"data-testid": "
|
|
37
|
+
"data-testid": "datasource--loading-error"
|
|
38
38
|
}, jsx(LoadingErrorSVG, null), jsx("div", {
|
|
39
39
|
css: errorMessageContainerStyles
|
|
40
40
|
}, jsx("span", {
|
|
@@ -1,55 +1,111 @@
|
|
|
1
1
|
import { defineMessages } from 'react-intl-next';
|
|
2
2
|
export var loadingErrorMessages = defineMessages({
|
|
3
|
+
accessInstructionsDuplicate: {
|
|
4
|
+
id: 'linkDataSource.accessInstructions',
|
|
5
|
+
description: "Instructions to let the user know they must contact their site administrator in order to access this site's content",
|
|
6
|
+
defaultMessage: 'To request access, contact your site administrator.'
|
|
7
|
+
},
|
|
8
|
+
//delete and remove duplicate from title above
|
|
3
9
|
accessInstructions: {
|
|
4
10
|
id: 'linkDataSource.jira-issues.accessInstructions',
|
|
5
11
|
description: "Instructions to let the user know they must contact their site administrator in order to access this site's content",
|
|
6
12
|
defaultMessage: 'To request access, contact your site administrator.'
|
|
7
13
|
},
|
|
14
|
+
accessRequiredDuplicate: {
|
|
15
|
+
id: 'linkDataSource.accessRequired',
|
|
16
|
+
description: 'Message letting user know that they do not have access to this content',
|
|
17
|
+
defaultMessage: "You don't have access to this content"
|
|
18
|
+
},
|
|
19
|
+
//delete and remove duplicate from title above
|
|
8
20
|
accessRequired: {
|
|
9
21
|
id: 'linkDataSource.jira-issues.accessRequired',
|
|
10
22
|
description: 'Message letting user know that they do not have access to this content',
|
|
11
23
|
defaultMessage: "You don't have access to this content"
|
|
12
24
|
},
|
|
25
|
+
accessRequiredWithSiteDuplicate: {
|
|
26
|
+
id: 'linkDataSource.accessRequiredWithSite',
|
|
27
|
+
description: 'Message letting user know that they do not have access to the site that will be listed below this message',
|
|
28
|
+
defaultMessage: "You don't have access to the following site:"
|
|
29
|
+
},
|
|
30
|
+
//delete and remove duplicate from title above
|
|
13
31
|
accessRequiredWithSite: {
|
|
14
32
|
id: 'linkDataSource.jira-issues.accessRequiredWithSite',
|
|
15
33
|
description: 'Message letting user know that they do not have access to the site that will be listed below this message',
|
|
16
34
|
defaultMessage: "You don't have access to the following site:"
|
|
17
35
|
},
|
|
36
|
+
checkConnectionDuplicate: {
|
|
37
|
+
id: 'linkDataSource.checkConnection',
|
|
38
|
+
description: 'Instructions to let the user know how to resolve the network error that occurred or to try again at a different time',
|
|
39
|
+
defaultMessage: 'Check your connection and refresh, or try again later.'
|
|
40
|
+
},
|
|
41
|
+
//delete and remove duplicate from title above
|
|
18
42
|
checkConnection: {
|
|
19
43
|
id: 'linkDataSource.jira-issues.checkConnection',
|
|
20
44
|
description: 'Instructions to let the user know how to resolve the network error that occurred or to try again at a different time',
|
|
21
45
|
defaultMessage: 'Check your connection and refresh, or try again later.'
|
|
22
46
|
},
|
|
47
|
+
checkConnectionWithSourceDuplicate: {
|
|
48
|
+
id: 'linkDataSource.checkConnectionWithSource',
|
|
49
|
+
description: 'Instructions to let the user know how to resolve the error that occured, or click the link provided to open the query in Jira',
|
|
50
|
+
defaultMessage: 'Check your connection and refresh, or <a>open this query in Jira</a> to review.'
|
|
51
|
+
},
|
|
52
|
+
//delete and remove duplicate from title above
|
|
23
53
|
checkConnectionWithSource: {
|
|
24
54
|
id: 'linkDataSource.jira-issues.checkConnectionWithSource',
|
|
25
55
|
description: 'Instructions to let the user know how to resolve the error that occured, or click the link provided to open the query in Jira',
|
|
26
56
|
defaultMessage: 'Check your connection and refresh, or <a>open this query in Jira</a> to review.'
|
|
27
57
|
},
|
|
58
|
+
noResultsFoundDuplicate: {
|
|
59
|
+
id: 'linkDataSource.noResultsFound',
|
|
60
|
+
description: 'Status message letting the user know their query did not have any results',
|
|
61
|
+
defaultMessage: 'No results found'
|
|
62
|
+
},
|
|
63
|
+
//delete and remove duplicate from title above
|
|
28
64
|
noResultsFound: {
|
|
29
65
|
id: 'linkDataSource.jira-issues.noResultsFound',
|
|
30
66
|
description: 'Status message letting the user know their query did not have any results',
|
|
31
67
|
defaultMessage: 'No results found'
|
|
32
68
|
},
|
|
69
|
+
refreshDuplicate: {
|
|
70
|
+
id: 'linkDataSource.refresh',
|
|
71
|
+
description: 'Button text to allow the user to refresh the table to see results',
|
|
72
|
+
defaultMessage: 'Refresh'
|
|
73
|
+
},
|
|
74
|
+
//delete and remove duplicate from title above
|
|
33
75
|
refresh: {
|
|
34
76
|
id: 'linkDataSource.jira-issues.refresh',
|
|
35
77
|
description: 'Button text to allow the user to refresh the table to see results',
|
|
36
78
|
defaultMessage: 'Refresh'
|
|
37
79
|
},
|
|
80
|
+
unableToLoadItemsDuplicate: {
|
|
81
|
+
id: 'linkDataSource.unableToLoadItems',
|
|
82
|
+
description: 'Error state message letting the user know we were unable the load the requested list of items',
|
|
83
|
+
defaultMessage: 'Unable to load items'
|
|
84
|
+
},
|
|
85
|
+
//delete and remove duplicate from title above
|
|
38
86
|
unableToLoadItems: {
|
|
39
87
|
id: 'linkDataSource.jira-issues.unableToLoadItems',
|
|
40
88
|
description: 'Error state message letting the user know we were unable the load the requested list of items',
|
|
41
89
|
defaultMessage: 'Unable to load items'
|
|
42
90
|
},
|
|
91
|
+
unableToLoadResultsDuplicate: {
|
|
92
|
+
id: 'linkDataSource.unableToLoadResults',
|
|
93
|
+
description: 'Error state message letting the user know we were unable the load the requested list of results',
|
|
94
|
+
defaultMessage: 'Unable to load results'
|
|
95
|
+
},
|
|
96
|
+
//delete and remove duplicate from title above
|
|
43
97
|
unableToLoadResults: {
|
|
44
98
|
id: 'linkDataSource.jira-issues.unableToLoadResults',
|
|
45
99
|
description: 'Error state message letting the user know we were unable the load the requested list of results',
|
|
46
100
|
defaultMessage: 'Unable to load results'
|
|
47
101
|
},
|
|
102
|
+
// delete once EDM-9407 is merged
|
|
48
103
|
noAccessToJiraSitesTitle: {
|
|
49
104
|
id: 'linkDataSource.jira-issues.no.jira.sites.access.title',
|
|
50
105
|
description: 'Title that shows in the modal when user has no access to any Jira sites',
|
|
51
106
|
defaultMessage: "You don't have access to any Jira sites"
|
|
52
107
|
},
|
|
108
|
+
// delete once EDM-9407 is merged
|
|
53
109
|
noAccessToJiraSitesDescription: {
|
|
54
110
|
id: 'linkDataSource.jira-issues.no.jira.sites.access.description',
|
|
55
111
|
description: 'Description that shows in the modal when user has no access to any Jira sites',
|
|
@@ -34,7 +34,7 @@ export var ModalLoadingError = function ModalLoadingError(_ref) {
|
|
|
34
34
|
}, [fireEvent]);
|
|
35
35
|
return jsx("div", {
|
|
36
36
|
css: errorContainerStyles,
|
|
37
|
-
"data-testid": "
|
|
37
|
+
"data-testid": "datasource-modal--loading-error"
|
|
38
38
|
}, jsx(LoadingErrorSVG, null), jsx("div", {
|
|
39
39
|
css: errorMessageContainerStyles
|
|
40
40
|
}, jsx("span", {
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/** @jsx jsx */
|
|
2
2
|
import { css, jsx } from '@emotion/react';
|
|
3
|
-
import {
|
|
3
|
+
import { useIntl } from 'react-intl-next';
|
|
4
4
|
import { Flex, xcss } from '@atlaskit/primitives';
|
|
5
|
-
import { loadingErrorMessages } from './messages';
|
|
6
5
|
import { NoInstancesSvg } from './no-instances-svg';
|
|
7
6
|
var titleStyles = css({
|
|
8
7
|
font: "var(--ds-font-heading-small, normal 600 16px/20px ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Ubuntu, system-ui, \"Helvetica Neue\", sans-serif)",
|
|
@@ -14,15 +13,20 @@ var descriptionStyles = css({
|
|
|
14
13
|
var containerStyles = xcss({
|
|
15
14
|
marginTop: '60px'
|
|
16
15
|
});
|
|
17
|
-
export var NoInstancesView = function NoInstancesView() {
|
|
16
|
+
export var NoInstancesView = function NoInstancesView(_ref) {
|
|
17
|
+
var title = _ref.title,
|
|
18
|
+
description = _ref.description,
|
|
19
|
+
testId = _ref.testId;
|
|
20
|
+
var _useIntl = useIntl(),
|
|
21
|
+
formatMessage = _useIntl.formatMessage;
|
|
18
22
|
return jsx(Flex, {
|
|
19
|
-
testId:
|
|
23
|
+
testId: testId,
|
|
20
24
|
direction: "column",
|
|
21
25
|
alignItems: "center",
|
|
22
26
|
xcss: containerStyles
|
|
23
27
|
}, jsx(NoInstancesSvg, null), jsx("span", {
|
|
24
28
|
css: titleStyles
|
|
25
|
-
},
|
|
29
|
+
}, formatMessage(title)), jsx("span", {
|
|
26
30
|
css: descriptionStyles
|
|
27
|
-
},
|
|
31
|
+
}, formatMessage(description)));
|
|
28
32
|
};
|