@atlaskit/link-datasource 1.8.0 → 1.9.0
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/analytics/constants.js +1 -1
- package/dist/cjs/common/zindex.js +8 -0
- package/dist/cjs/ui/assets-modal/modal/index.js +1 -1
- package/dist/cjs/ui/common/error-state/access-required.js +42 -8
- package/dist/cjs/ui/common/error-state/messages.js +4 -4
- package/dist/cjs/ui/datasource-table-view/datasourceTableView.js +3 -1
- package/dist/cjs/ui/issue-like-table/index.js +2 -1
- package/dist/cjs/ui/jira-issues-modal/modal/index.js +24 -25
- package/dist/cjs/ui/jira-issues-modal/modal/messages.js +2 -2
- package/dist/cjs/ui/jira-issues-modal/site-selector/index.js +59 -37
- package/dist/cjs/ui/jira-issues-modal/site-selector/messages.js +4 -9
- package/dist/es2019/analytics/constants.js +1 -1
- package/dist/es2019/common/zindex.js +2 -0
- package/dist/es2019/ui/assets-modal/modal/index.js +1 -1
- package/dist/es2019/ui/common/error-state/access-required.js +41 -6
- package/dist/es2019/ui/common/error-state/messages.js +4 -4
- package/dist/es2019/ui/datasource-table-view/datasourceTableView.js +3 -1
- package/dist/es2019/ui/issue-like-table/index.js +2 -1
- package/dist/es2019/ui/jira-issues-modal/modal/index.js +25 -26
- package/dist/es2019/ui/jira-issues-modal/modal/messages.js +2 -2
- package/dist/es2019/ui/jira-issues-modal/site-selector/index.js +50 -32
- package/dist/es2019/ui/jira-issues-modal/site-selector/messages.js +4 -9
- package/dist/esm/analytics/constants.js +1 -1
- package/dist/esm/common/zindex.js +2 -0
- package/dist/esm/ui/assets-modal/modal/index.js +1 -1
- package/dist/esm/ui/common/error-state/access-required.js +43 -9
- package/dist/esm/ui/common/error-state/messages.js +4 -4
- package/dist/esm/ui/datasource-table-view/datasourceTableView.js +3 -1
- package/dist/esm/ui/issue-like-table/index.js +2 -1
- package/dist/esm/ui/jira-issues-modal/modal/index.js +25 -26
- package/dist/esm/ui/jira-issues-modal/modal/messages.js +2 -2
- package/dist/esm/ui/jira-issues-modal/site-selector/index.js +59 -34
- package/dist/esm/ui/jira-issues-modal/site-selector/messages.js +4 -9
- package/dist/types/common/zindex.d.ts +2 -0
- package/dist/types/ui/common/error-state/access-required.d.ts +2 -2
- package/dist/types/ui/jira-issues-modal/site-selector/index.d.ts +0 -1
- package/dist/types/ui/jira-issues-modal/site-selector/messages.d.ts +1 -6
- package/dist/types/ui/jira-issues-modal/types.d.ts +2 -0
- package/dist/types-ts4.5/common/zindex.d.ts +2 -0
- package/dist/types-ts4.5/ui/common/error-state/access-required.d.ts +2 -2
- package/dist/types-ts4.5/ui/jira-issues-modal/site-selector/index.d.ts +0 -1
- package/dist/types-ts4.5/ui/jira-issues-modal/site-selector/messages.d.ts +1 -6
- package/dist/types-ts4.5/ui/jira-issues-modal/types.d.ts +2 -0
- package/package.json +2 -3
- package/report.api.md +1 -0
- package/tmp/api-report-tmp.d.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @atlaskit/link-datasource
|
|
2
2
|
|
|
3
|
+
## 1.9.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#41407](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/41407) [`2e336273b6e`](https://bitbucket.org/atlassian/atlassian-frontend/commits/2e336273b6e) - [ux] Added an optional url prop for JiraConfigModal
|
|
8
|
+
|
|
3
9
|
## 1.8.0
|
|
4
10
|
|
|
5
11
|
### Minor Changes
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.stickyTableHeadersIndex = exports.siteSelectorIndex = void 0;
|
|
7
|
+
var stickyTableHeadersIndex = exports.stickyTableHeadersIndex = 10;
|
|
8
|
+
var siteSelectorIndex = exports.siteSelectorIndex = stickyTableHeadersIndex + 1;
|
|
@@ -234,7 +234,7 @@ var analyticsContextAttributes = {
|
|
|
234
234
|
};
|
|
235
235
|
var analyticsContextData = {
|
|
236
236
|
packageName: "@atlaskit/link-datasource",
|
|
237
|
-
packageVersion: "1.
|
|
237
|
+
packageVersion: "1.9.0",
|
|
238
238
|
source: 'datasourceConfigModal'
|
|
239
239
|
};
|
|
240
240
|
var contextData = _objectSpread(_objectSpread({}, analyticsContextData), {}, {
|
|
@@ -9,13 +9,41 @@ var _react = require("react");
|
|
|
9
9
|
var _react2 = require("@emotion/react");
|
|
10
10
|
var _reactIntlNext = require("react-intl-next");
|
|
11
11
|
var _emptyState = _interopRequireDefault(require("@atlaskit/empty-state"));
|
|
12
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
12
13
|
var _analytics = require("../../../analytics");
|
|
13
14
|
var _accessRequiredSvg = require("./access-required-svg");
|
|
14
15
|
var _messages = require("./messages");
|
|
15
16
|
/** @jsx jsx */
|
|
16
17
|
|
|
17
|
-
var
|
|
18
|
-
var
|
|
18
|
+
var urlStyles = (0, _react2.css)({
|
|
19
|
+
color: "var(--ds-text-subtlest, ".concat(_colors.N400, ")"),
|
|
20
|
+
fontSize: "var(--ds-font-size-100, 14px)",
|
|
21
|
+
lineHeight: "var(--ds-font-lineHeight-200, 20px)"
|
|
22
|
+
});
|
|
23
|
+
var descriptionMessageStyles = (0, _react2.css)({
|
|
24
|
+
display: 'flex',
|
|
25
|
+
flexDirection: 'column',
|
|
26
|
+
gap: "var(--ds-space-200, 16px)"
|
|
27
|
+
});
|
|
28
|
+
var iconContainerStyles = (0, _react2.css)({
|
|
29
|
+
marginBottom: "var(--ds-space-200, 16px)"
|
|
30
|
+
});
|
|
31
|
+
var Description = function Description(_ref) {
|
|
32
|
+
var message = _ref.message,
|
|
33
|
+
url = _ref.url;
|
|
34
|
+
return (0, _react2.jsx)("div", {
|
|
35
|
+
css: descriptionMessageStyles
|
|
36
|
+
}, (0, _react2.jsx)("span", {
|
|
37
|
+
css: urlStyles
|
|
38
|
+
}, url), (0, _react2.jsx)("span", null, message));
|
|
39
|
+
};
|
|
40
|
+
var IconContainer = function IconContainer() {
|
|
41
|
+
return (0, _react2.jsx)("div", {
|
|
42
|
+
css: iconContainerStyles
|
|
43
|
+
}, (0, _react2.jsx)(_accessRequiredSvg.AccessRequiredSVG, null));
|
|
44
|
+
};
|
|
45
|
+
var AccessRequired = exports.AccessRequired = function AccessRequired(_ref2) {
|
|
46
|
+
var url = _ref2.url;
|
|
19
47
|
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
20
48
|
formatMessage = _useIntl.formatMessage;
|
|
21
49
|
var _useDatasourceAnalyti = (0, _analytics.useDatasourceAnalyticsEvents)(),
|
|
@@ -25,13 +53,19 @@ var AccessRequired = exports.AccessRequired = function AccessRequired(_ref) {
|
|
|
25
53
|
reason: 'access'
|
|
26
54
|
});
|
|
27
55
|
}, [fireEvent]);
|
|
56
|
+
if (url) {
|
|
57
|
+
return (0, _react2.jsx)(_emptyState.default, {
|
|
58
|
+
header: formatMessage(_messages.loadingErrorMessages.accessRequiredWithSite),
|
|
59
|
+
description: (0, _react2.jsx)(Description, {
|
|
60
|
+
message: formatMessage(_messages.loadingErrorMessages.accessInstructions),
|
|
61
|
+
url: url
|
|
62
|
+
}),
|
|
63
|
+
renderImage: IconContainer
|
|
64
|
+
});
|
|
65
|
+
}
|
|
28
66
|
return (0, _react2.jsx)(_emptyState.default, {
|
|
29
|
-
header:
|
|
30
|
-
siteName: siteName
|
|
31
|
-
}) : formatMessage(_messages.loadingErrorMessages.accessRequired),
|
|
67
|
+
header: formatMessage(_messages.loadingErrorMessages.accessRequired),
|
|
32
68
|
description: formatMessage(_messages.loadingErrorMessages.accessInstructions),
|
|
33
|
-
renderImage:
|
|
34
|
-
return (0, _react2.jsx)(_accessRequiredSvg.AccessRequiredSVG, null);
|
|
35
|
-
}
|
|
69
|
+
renderImage: IconContainer
|
|
36
70
|
});
|
|
37
71
|
};
|
|
@@ -8,8 +8,8 @@ var _reactIntlNext = require("react-intl-next");
|
|
|
8
8
|
var loadingErrorMessages = exports.loadingErrorMessages = (0, _reactIntlNext.defineMessages)({
|
|
9
9
|
accessInstructions: {
|
|
10
10
|
id: 'linkDataSource.jira-issues.accessInstructions',
|
|
11
|
-
description: "Instructions to let the user know they must contact
|
|
12
|
-
defaultMessage: 'To request access, contact your
|
|
11
|
+
description: "Instructions to let the user know they must contact their site administrator in order to access this site's content",
|
|
12
|
+
defaultMessage: 'To request access, contact your site administrator.'
|
|
13
13
|
},
|
|
14
14
|
accessRequired: {
|
|
15
15
|
id: 'linkDataSource.jira-issues.accessRequired',
|
|
@@ -18,8 +18,8 @@ var loadingErrorMessages = exports.loadingErrorMessages = (0, _reactIntlNext.def
|
|
|
18
18
|
},
|
|
19
19
|
accessRequiredWithSite: {
|
|
20
20
|
id: 'linkDataSource.jira-issues.accessRequiredWithSite',
|
|
21
|
-
description: 'Message letting user know that they do not have access to the site
|
|
22
|
-
defaultMessage: "You don't have access to
|
|
21
|
+
description: 'Message letting user know that they do not have access to the site that will be listed below this message',
|
|
22
|
+
defaultMessage: "You don't have access to the following site:"
|
|
23
23
|
},
|
|
24
24
|
checkConnection: {
|
|
25
25
|
id: 'linkDataSource.jira-issues.checkConnection',
|
|
@@ -114,7 +114,9 @@ var DatasourceTableViewWithoutAnalytics = function DatasourceTableViewWithoutAna
|
|
|
114
114
|
});
|
|
115
115
|
}
|
|
116
116
|
if (status === 'unauthorized') {
|
|
117
|
-
return (0, _react2.jsx)(_accessRequired.AccessRequired,
|
|
117
|
+
return (0, _react2.jsx)(_accessRequired.AccessRequired, {
|
|
118
|
+
url: url
|
|
119
|
+
});
|
|
118
120
|
}
|
|
119
121
|
if (status === 'rejected') {
|
|
120
122
|
return (0, _react2.jsx)(_loadingError.LoadingError, {
|
|
@@ -25,6 +25,7 @@ var _combine = require("@atlaskit/pragmatic-drag-and-drop/util/combine");
|
|
|
25
25
|
var _colors = require("@atlaskit/theme/colors");
|
|
26
26
|
var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
|
|
27
27
|
var _ufoExperiences = require("../../analytics/ufoExperiences");
|
|
28
|
+
var _zindex = require("../../common/zindex");
|
|
28
29
|
var _columnPicker = require("./column-picker");
|
|
29
30
|
var _dragColumnPreview = require("./drag-column-preview");
|
|
30
31
|
var _draggableTableHeading = require("./draggable-table-heading");
|
|
@@ -41,7 +42,7 @@ var tableHeadStyles = (0, _react2.css)({
|
|
|
41
42
|
background: "var(--ds-surface, #FFF)",
|
|
42
43
|
position: 'sticky',
|
|
43
44
|
top: 0,
|
|
44
|
-
zIndex:
|
|
45
|
+
zIndex: _zindex.stickyTableHeadersIndex
|
|
45
46
|
});
|
|
46
47
|
var ColumnPickerHeader = _styled.default.th(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n width: 40px;\n position: sticky;\n right: calc(-1 * ", ");\n background-color: ", ";\n border-bottom: 2px solid ", "; /* It is required to have solid (not half-transparent) color because of this gradient business bellow */\n background: linear-gradient(\n 90deg,\n rgba(255, 255, 255, 0) 0%,\n ", " 10%\n );\n vertical-align: middle; /* Keeps dropdown button in the middle */\n &:last-of-type {\n padding-right: ", ";\n }\n"])), tableSidePadding, "var(--ds-surface, #FFF)", "var(--ds-background-accent-gray-subtler, ".concat(_colors.N40, ")"), "var(--ds-surface, #FFF)", tableSidePadding);
|
|
47
48
|
var truncatedCellStyles = (0, _react2.css)({
|
|
@@ -46,8 +46,11 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
|
|
|
46
46
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /** @jsx jsx */
|
|
47
47
|
var dropdownContainerStyles = (0, _react2.css)({
|
|
48
48
|
display: 'flex',
|
|
49
|
-
|
|
49
|
+
alignItems: 'center',
|
|
50
|
+
gap: "var(--ds-space-100, 0.5rem)",
|
|
51
|
+
minHeight: '40px' // to prevent vertical shifting when site selector pops in
|
|
50
52
|
});
|
|
53
|
+
|
|
51
54
|
var contentContainerStyles = (0, _react2.css)({
|
|
52
55
|
display: 'grid',
|
|
53
56
|
maxHeight: '420px',
|
|
@@ -92,12 +95,13 @@ var getColumnAction = exports.getColumnAction = function getColumnAction(oldVisi
|
|
|
92
95
|
};
|
|
93
96
|
var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
94
97
|
var datasourceId = props.datasourceId,
|
|
95
|
-
initialParameters = props.parameters,
|
|
96
|
-
initialVisibleColumnKeys = props.visibleColumnKeys,
|
|
97
98
|
onCancel = props.onCancel,
|
|
98
99
|
onInsert = props.onInsert,
|
|
99
100
|
_props$viewMode = props.viewMode,
|
|
100
|
-
viewMode = _props$viewMode === void 0 ? 'issue' : _props$viewMode
|
|
101
|
+
viewMode = _props$viewMode === void 0 ? 'issue' : _props$viewMode,
|
|
102
|
+
initialParameters = props.parameters,
|
|
103
|
+
urlBeingEdited = props.url,
|
|
104
|
+
initialVisibleColumnKeys = props.visibleColumnKeys;
|
|
101
105
|
var _useState = (0, _react.useState)([]),
|
|
102
106
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
103
107
|
availableSites = _useState2[0],
|
|
@@ -161,11 +165,9 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
161
165
|
modalRenderInstanceId = _useRef.current;
|
|
162
166
|
var selectedJiraSite = (0, _react.useMemo)(function () {
|
|
163
167
|
if (cloudId) {
|
|
164
|
-
// if the cloud id we're editing isn't in available sites then user is likely unauthorized for that site
|
|
165
|
-
// TODO: unauthorized to edit flow https://product-fabric.atlassian.net/browse/EDM-7216
|
|
166
168
|
return availableSites.find(function (jiraSite) {
|
|
167
169
|
return jiraSite.cloudId === cloudId;
|
|
168
|
-
})
|
|
170
|
+
});
|
|
169
171
|
} else {
|
|
170
172
|
var currentlyLoggedInSiteUrl = window.location.origin;
|
|
171
173
|
return availableSites.find(function (jiraSite) {
|
|
@@ -417,12 +419,12 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
417
419
|
}));
|
|
418
420
|
}, [columns, defaultVisibleColumnKeys, handleOnNextPage, handleVisibleColumnKeysChange, hasNextPage, loadDatasourceDetails, modalRenderInstanceId, responseItems, status, visibleColumnKeys, extensionKey]);
|
|
419
421
|
var renderCountModeContent = (0, _react.useCallback)(function () {
|
|
420
|
-
var
|
|
422
|
+
var selectedJiraSiteUrl = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
|
|
421
423
|
if (status === 'unauthorized') {
|
|
422
424
|
return (0, _react2.jsx)(_accessRequired.AccessRequired, {
|
|
423
|
-
|
|
425
|
+
url: selectedJiraSiteUrl || urlBeingEdited
|
|
424
426
|
});
|
|
425
|
-
} else if (status === 'empty' || !jql || !
|
|
427
|
+
} else if (status === 'empty' || !jql || !selectedJiraSiteUrl) {
|
|
426
428
|
return (0, _react2.jsx)("div", {
|
|
427
429
|
css: smartLinkContainerStyles
|
|
428
430
|
}, (0, _react2.jsx)("span", {
|
|
@@ -430,22 +432,23 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
430
432
|
css: placeholderSmartLinkStyles
|
|
431
433
|
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.issuesCountSmartCardPlaceholderText)));
|
|
432
434
|
} else {
|
|
433
|
-
var urlWithEncodedJql = "".concat(
|
|
435
|
+
var urlWithEncodedJql = "".concat(selectedJiraSiteUrl, "/issues/?jql=").concat(encodeURI(jql));
|
|
434
436
|
return (0, _react2.jsx)("div", {
|
|
435
437
|
css: smartLinkContainerStyles
|
|
436
438
|
}, (0, _react2.jsx)(_link.default, {
|
|
437
439
|
url: urlWithEncodedJql
|
|
438
440
|
}));
|
|
439
441
|
}
|
|
440
|
-
}, [jql, selectedJiraSite, status]);
|
|
442
|
+
}, [jql, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited]);
|
|
441
443
|
var renderIssuesModeContent = (0, _react.useCallback)(function () {
|
|
444
|
+
var selectedJiraSiteUrl = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
|
|
442
445
|
if (status === 'rejected' && jqlUrl) {
|
|
443
446
|
return (0, _react2.jsx)(_modalLoadingError.ModalLoadingError, {
|
|
444
447
|
url: jqlUrl
|
|
445
448
|
});
|
|
446
449
|
} else if (status === 'unauthorized') {
|
|
447
450
|
return (0, _react2.jsx)(_accessRequired.AccessRequired, {
|
|
448
|
-
|
|
451
|
+
url: selectedJiraSiteUrl || urlBeingEdited
|
|
449
452
|
});
|
|
450
453
|
} else if (resolvedWithNoResults) {
|
|
451
454
|
return (0, _react2.jsx)(_noResults.NoResults, null);
|
|
@@ -468,24 +471,20 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
468
471
|
}));
|
|
469
472
|
}
|
|
470
473
|
return issueLikeDataTableView;
|
|
471
|
-
}, [
|
|
474
|
+
}, [columns.length, currentSearchMethod, issueLikeDataTableView, jql, jqlUrl, resolvedWithNoResults, responseItems.length, retrieveUrlForSmartCardRender, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited]);
|
|
472
475
|
return (0, _react2.jsx)(_modalDialog.ModalTransition, null, (0, _react2.jsx)(_modalDialog.default, {
|
|
473
|
-
testId:
|
|
476
|
+
testId: "jira-jql-datasource-modal",
|
|
474
477
|
onClose: onCancel,
|
|
475
478
|
width: "calc(100% - 80px)",
|
|
476
479
|
shouldScrollInViewport: true
|
|
477
|
-
}, (0, _react2.jsx)(_modalDialog.ModalHeader, null, (0, _react2.jsx)(_modalDialog.ModalTitle, null,
|
|
480
|
+
}, (0, _react2.jsx)(_modalDialog.ModalHeader, null, (0, _react2.jsx)(_modalDialog.ModalTitle, null, (0, _react2.jsx)("div", {
|
|
478
481
|
css: dropdownContainerStyles
|
|
479
|
-
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, (0,
|
|
480
|
-
values: {
|
|
481
|
-
siteName: selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.displayName
|
|
482
|
-
}
|
|
483
|
-
})), (0, _react2.jsx)(_siteSelector.JiraSiteSelector, {
|
|
484
|
-
testId: "jira-jql-datasource-modal--site-selector",
|
|
482
|
+
}, availableSites.length < 2 ? (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.insertIssuesTitle) : (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.insertIssuesTitleManySites), (0, _react2.jsx)(_siteSelector.JiraSiteSelector, {
|
|
485
483
|
availableSites: availableSites,
|
|
486
484
|
onSiteSelection: onSiteSelection,
|
|
487
|
-
selectedJiraSite: selectedJiraSite
|
|
488
|
-
|
|
485
|
+
selectedJiraSite: selectedJiraSite,
|
|
486
|
+
testId: "jira-jql-datasource-modal--site-selector"
|
|
487
|
+
})))), (0, _react2.jsx)(_modeSwitcher.ModeSwitcher, {
|
|
489
488
|
isCompact: true,
|
|
490
489
|
options: [{
|
|
491
490
|
label: formatMessage(_messages.modalMessages.issueViewModeLabel),
|
|
@@ -525,7 +524,7 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
525
524
|
appearance: "primary",
|
|
526
525
|
onClick: onInsertPressed,
|
|
527
526
|
isDisabled: isInsertDisabled,
|
|
528
|
-
testId:
|
|
527
|
+
testId: "jira-jql-datasource-modal--insert-button"
|
|
529
528
|
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.insertIssuesButtonText)))));
|
|
530
529
|
};
|
|
531
530
|
var analyticsContextAttributes = {
|
|
@@ -23,8 +23,8 @@ var modalMessages = exports.modalMessages = (0, _reactIntlNext.defineMessages)({
|
|
|
23
23
|
},
|
|
24
24
|
insertIssuesTitleManySites: {
|
|
25
25
|
id: 'linkDataSource.jira-issues.configmodal.insertIssuesTitleManySites',
|
|
26
|
-
description: 'Title for the Jira Issues
|
|
27
|
-
defaultMessage: 'Insert Jira issues from
|
|
26
|
+
description: 'Title for the Jira Issues modal when a user has to select a site to inserting issues from',
|
|
27
|
+
defaultMessage: 'Insert Jira issues from'
|
|
28
28
|
},
|
|
29
29
|
issueViewModeLabel: {
|
|
30
30
|
id: 'linkDataSource.jira-issues.configmodal.issueViewModeLabel',
|
|
@@ -1,55 +1,77 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.JiraSiteSelector = void 0;
|
|
9
|
-
var
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
9
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
11
|
-
var _react = require("
|
|
10
|
+
var _react = require("react");
|
|
11
|
+
var _react2 = require("@emotion/react");
|
|
12
12
|
var _reactIntlNext = require("react-intl-next");
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
var _chevronDown = _interopRequireDefault(require("@atlaskit/icon/glyph/chevron-down"));
|
|
13
|
+
var _select = _interopRequireDefault(require("@atlaskit/select"));
|
|
14
|
+
var _zindex = require("../../../common/zindex");
|
|
16
15
|
var _messages = require("./messages");
|
|
17
|
-
var _excluded = ["
|
|
16
|
+
var _excluded = ["width"];
|
|
18
17
|
/** @jsx jsx */
|
|
19
|
-
function
|
|
20
|
-
function
|
|
18
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
19
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
20
|
+
var selectStyles = (0, _react2.css)({
|
|
21
|
+
fontSize: "var(--ds-font-size-100, 14px)",
|
|
22
|
+
fontWeight: "var(--ds-font-weight-medium, 500)",
|
|
23
|
+
lineHeight: "var(--ds-font-lineHeight-200, 20px)",
|
|
24
|
+
zIndex: _zindex.siteSelectorIndex
|
|
25
|
+
});
|
|
21
26
|
var JiraSiteSelector = exports.JiraSiteSelector = function JiraSiteSelector(props) {
|
|
22
27
|
var availableSites = props.availableSites,
|
|
23
28
|
onSiteSelection = props.onSiteSelection,
|
|
24
29
|
selectedJiraSite = props.selectedJiraSite,
|
|
25
30
|
testId = props.testId;
|
|
26
|
-
var
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
testId: "".concat(testId, "--trigger"),
|
|
35
|
-
spacing: "none",
|
|
36
|
-
iconBefore: (0, _react.jsx)(_chevronDown.default, {
|
|
37
|
-
label: intl.formatMessage(_messages.siteSelectorMessages.dropdownChevronLabel)
|
|
38
|
-
}),
|
|
39
|
-
ref: triggerRef
|
|
40
|
-
}));
|
|
31
|
+
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
32
|
+
formatMessage = _useIntl.formatMessage;
|
|
33
|
+
var onChange = function onChange(newValue) {
|
|
34
|
+
var selectedSite = availableSites.find(function (site) {
|
|
35
|
+
return site.cloudId === (newValue === null || newValue === void 0 ? void 0 : newValue.value);
|
|
36
|
+
});
|
|
37
|
+
if (selectedSite) {
|
|
38
|
+
onSiteSelection(selectedSite);
|
|
41
39
|
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
40
|
+
};
|
|
41
|
+
var availableSitesOptions = (0, _react.useMemo)(function () {
|
|
42
|
+
return availableSites.map(function (site) {
|
|
43
|
+
return {
|
|
44
|
+
label: site.displayName,
|
|
45
|
+
value: site.cloudId
|
|
46
|
+
};
|
|
47
|
+
});
|
|
48
|
+
}, [availableSites]);
|
|
49
|
+
var selectedSiteOption = selectedJiraSite && {
|
|
50
|
+
label: selectedJiraSite.displayName,
|
|
51
|
+
value: selectedJiraSite.cloudId
|
|
52
|
+
};
|
|
53
|
+
return (0, _react2.jsx)("span", {
|
|
54
|
+
"data-testid": "".concat(testId, "--trigger")
|
|
55
|
+
}, (0, _react2.jsx)(_select.default, {
|
|
56
|
+
css: selectStyles,
|
|
57
|
+
classNamePrefix: testId,
|
|
58
|
+
isLoading: availableSites.length === 0,
|
|
59
|
+
onChange: onChange,
|
|
60
|
+
options: availableSitesOptions,
|
|
61
|
+
placeholder: formatMessage(_messages.siteSelectorMessages.chooseSite),
|
|
62
|
+
styles: {
|
|
63
|
+
// prevents the popup menu with available sites from being too narrow
|
|
64
|
+
// if the selected site is much shorter than the other options
|
|
65
|
+
menu: function menu(_ref) {
|
|
66
|
+
var width = _ref.width,
|
|
67
|
+
css = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
68
|
+
return _objectSpread(_objectSpread({}, css), {}, {
|
|
69
|
+
minWidth: '100%',
|
|
70
|
+
width: 'max-content'
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
testId: testId,
|
|
75
|
+
value: selectedSiteOption
|
|
76
|
+
}));
|
|
55
77
|
};
|
|
@@ -6,14 +6,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.siteSelectorMessages = void 0;
|
|
7
7
|
var _reactIntlNext = require("react-intl-next");
|
|
8
8
|
var siteSelectorMessages = exports.siteSelectorMessages = (0, _reactIntlNext.defineMessages)({
|
|
9
|
-
|
|
10
|
-
id: 'linkDataSource.jira-issues.configmodal.
|
|
11
|
-
description: 'Label for
|
|
12
|
-
defaultMessage: '
|
|
13
|
-
},
|
|
14
|
-
selectedJiraSiteLabel: {
|
|
15
|
-
id: 'linkDataSource.jira-issues.configmodal.selectedJiraSiteLabel',
|
|
16
|
-
description: 'Label for a check icon declaring which option is selected',
|
|
17
|
-
defaultMessage: '{siteName} is selected'
|
|
9
|
+
chooseSite: {
|
|
10
|
+
id: 'linkDataSource.jira-issues.configmodal.chooseSite',
|
|
11
|
+
description: 'Label for input letting user know they have to choose a site',
|
|
12
|
+
defaultMessage: 'Choose site'
|
|
18
13
|
}
|
|
19
14
|
});
|
|
@@ -1,13 +1,40 @@
|
|
|
1
1
|
/** @jsx jsx */
|
|
2
2
|
import { useEffect } from 'react';
|
|
3
|
-
import { jsx } from '@emotion/react';
|
|
3
|
+
import { css, jsx } from '@emotion/react';
|
|
4
4
|
import { useIntl } from 'react-intl-next';
|
|
5
5
|
import EmptyState from '@atlaskit/empty-state';
|
|
6
|
+
import { N400 } from '@atlaskit/theme/colors';
|
|
6
7
|
import { useDatasourceAnalyticsEvents } from '../../../analytics';
|
|
7
8
|
import { AccessRequiredSVG } from './access-required-svg';
|
|
8
9
|
import { loadingErrorMessages } from './messages';
|
|
10
|
+
const urlStyles = css({
|
|
11
|
+
color: `var(--ds-text-subtlest, ${N400})`,
|
|
12
|
+
fontSize: "var(--ds-font-size-100, 14px)",
|
|
13
|
+
lineHeight: "var(--ds-font-lineHeight-200, 20px)"
|
|
14
|
+
});
|
|
15
|
+
const descriptionMessageStyles = css({
|
|
16
|
+
display: 'flex',
|
|
17
|
+
flexDirection: 'column',
|
|
18
|
+
gap: "var(--ds-space-200, 16px)"
|
|
19
|
+
});
|
|
20
|
+
const iconContainerStyles = css({
|
|
21
|
+
marginBottom: "var(--ds-space-200, 16px)"
|
|
22
|
+
});
|
|
23
|
+
const Description = ({
|
|
24
|
+
message,
|
|
25
|
+
url
|
|
26
|
+
}) => {
|
|
27
|
+
return jsx("div", {
|
|
28
|
+
css: descriptionMessageStyles
|
|
29
|
+
}, jsx("span", {
|
|
30
|
+
css: urlStyles
|
|
31
|
+
}, url), jsx("span", null, message));
|
|
32
|
+
};
|
|
33
|
+
const IconContainer = () => jsx("div", {
|
|
34
|
+
css: iconContainerStyles
|
|
35
|
+
}, jsx(AccessRequiredSVG, null));
|
|
9
36
|
export const AccessRequired = ({
|
|
10
|
-
|
|
37
|
+
url
|
|
11
38
|
}) => {
|
|
12
39
|
const {
|
|
13
40
|
formatMessage
|
|
@@ -20,11 +47,19 @@ export const AccessRequired = ({
|
|
|
20
47
|
reason: 'access'
|
|
21
48
|
});
|
|
22
49
|
}, [fireEvent]);
|
|
50
|
+
if (url) {
|
|
51
|
+
return jsx(EmptyState, {
|
|
52
|
+
header: formatMessage(loadingErrorMessages.accessRequiredWithSite),
|
|
53
|
+
description: jsx(Description, {
|
|
54
|
+
message: formatMessage(loadingErrorMessages.accessInstructions),
|
|
55
|
+
url: url
|
|
56
|
+
}),
|
|
57
|
+
renderImage: IconContainer
|
|
58
|
+
});
|
|
59
|
+
}
|
|
23
60
|
return jsx(EmptyState, {
|
|
24
|
-
header:
|
|
25
|
-
siteName
|
|
26
|
-
}) : formatMessage(loadingErrorMessages.accessRequired),
|
|
61
|
+
header: formatMessage(loadingErrorMessages.accessRequired),
|
|
27
62
|
description: formatMessage(loadingErrorMessages.accessInstructions),
|
|
28
|
-
renderImage:
|
|
63
|
+
renderImage: IconContainer
|
|
29
64
|
});
|
|
30
65
|
};
|
|
@@ -2,8 +2,8 @@ import { defineMessages } from 'react-intl-next';
|
|
|
2
2
|
export const loadingErrorMessages = defineMessages({
|
|
3
3
|
accessInstructions: {
|
|
4
4
|
id: 'linkDataSource.jira-issues.accessInstructions',
|
|
5
|
-
description: "Instructions to let the user know they must contact
|
|
6
|
-
defaultMessage: 'To request access, contact your
|
|
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
7
|
},
|
|
8
8
|
accessRequired: {
|
|
9
9
|
id: 'linkDataSource.jira-issues.accessRequired',
|
|
@@ -12,8 +12,8 @@ export const loadingErrorMessages = defineMessages({
|
|
|
12
12
|
},
|
|
13
13
|
accessRequiredWithSite: {
|
|
14
14
|
id: 'linkDataSource.jira-issues.accessRequiredWithSite',
|
|
15
|
-
description: 'Message letting user know that they do not have access to the site
|
|
16
|
-
defaultMessage: "You don't have access to
|
|
15
|
+
description: 'Message letting user know that they do not have access to the site that will be listed below this message',
|
|
16
|
+
defaultMessage: "You don't have access to the following site:"
|
|
17
17
|
},
|
|
18
18
|
checkConnection: {
|
|
19
19
|
id: 'linkDataSource.jira-issues.checkConnection',
|
|
@@ -109,7 +109,9 @@ const DatasourceTableViewWithoutAnalytics = ({
|
|
|
109
109
|
});
|
|
110
110
|
}
|
|
111
111
|
if (status === 'unauthorized') {
|
|
112
|
-
return jsx(AccessRequired,
|
|
112
|
+
return jsx(AccessRequired, {
|
|
113
|
+
url: url
|
|
114
|
+
});
|
|
113
115
|
}
|
|
114
116
|
if (status === 'rejected') {
|
|
115
117
|
return jsx(LoadingError, {
|
|
@@ -13,6 +13,7 @@ import { combine } from '@atlaskit/pragmatic-drag-and-drop/util/combine';
|
|
|
13
13
|
import { N40 } from '@atlaskit/theme/colors';
|
|
14
14
|
import Tooltip from '@atlaskit/tooltip';
|
|
15
15
|
import { startUfoExperience, succeedUfoExperience } from '../../analytics/ufoExperiences';
|
|
16
|
+
import { stickyTableHeadersIndex } from '../../common/zindex';
|
|
16
17
|
import { ColumnPicker } from './column-picker';
|
|
17
18
|
import { DragColumnPreview } from './drag-column-preview';
|
|
18
19
|
import { DraggableTableHeading } from './draggable-table-heading';
|
|
@@ -25,7 +26,7 @@ const tableHeadStyles = css({
|
|
|
25
26
|
background: "var(--ds-surface, #FFF)",
|
|
26
27
|
position: 'sticky',
|
|
27
28
|
top: 0,
|
|
28
|
-
zIndex:
|
|
29
|
+
zIndex: stickyTableHeadersIndex
|
|
29
30
|
});
|
|
30
31
|
const ColumnPickerHeader = styled.th`
|
|
31
32
|
width: 40px;
|