@atlaskit/link-datasource 1.18.0 → 1.19.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 +18 -0
- package/dist/cjs/analytics/constants.js +1 -1
- package/dist/cjs/hooks/useDatasourceTableState.js +15 -10
- package/dist/cjs/hooks/useErrorLogger.js +48 -0
- package/dist/cjs/ui/common/error-state/messages.js +10 -0
- package/dist/cjs/ui/common/error-state/no-instances-svg.js +154 -0
- package/dist/cjs/ui/common/error-state/no-instances.js +36 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.js +1 -1
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.js +28 -21
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/index.js +10 -34
- package/dist/cjs/ui/jira-issues-modal/jira-search-container/index.js +50 -18
- package/dist/cjs/ui/jira-issues-modal/modal/index.js +11 -9
- package/dist/cjs/ui/jira-issues-modal/site-selector/index.js +3 -3
- package/dist/es2019/analytics/constants.js +1 -1
- package/dist/es2019/hooks/useDatasourceTableState.js +8 -2
- package/dist/es2019/hooks/useErrorLogger.js +44 -0
- package/dist/es2019/ui/common/error-state/messages.js +10 -0
- package/dist/es2019/ui/common/error-state/no-instances-svg.js +147 -0
- package/dist/es2019/ui/common/error-state/no-instances.js +27 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.js +1 -1
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.js +17 -14
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/index.js +17 -32
- package/dist/es2019/ui/jira-issues-modal/jira-search-container/index.js +50 -15
- package/dist/es2019/ui/jira-issues-modal/modal/index.js +10 -8
- package/dist/es2019/ui/jira-issues-modal/site-selector/index.js +3 -3
- package/dist/esm/analytics/constants.js +1 -1
- package/dist/esm/hooks/useDatasourceTableState.js +15 -10
- package/dist/esm/hooks/useErrorLogger.js +42 -0
- package/dist/esm/ui/common/error-state/messages.js +10 -0
- package/dist/esm/ui/common/error-state/no-instances-svg.js +147 -0
- package/dist/esm/ui/common/error-state/no-instances.js +29 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.js +1 -1
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.js +29 -22
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/index.js +10 -31
- package/dist/esm/ui/jira-issues-modal/jira-search-container/index.js +50 -16
- package/dist/esm/ui/jira-issues-modal/modal/index.js +11 -9
- package/dist/esm/ui/jira-issues-modal/site-selector/index.js +3 -3
- package/dist/types/analytics/generated/analytics.types.d.ts +9 -1
- package/dist/types/hooks/useErrorLogger.d.ts +4 -0
- package/dist/types/ui/common/error-state/messages.d.ts +10 -0
- package/dist/types/ui/common/error-state/no-instances-svg.d.ts +2 -0
- package/dist/types/ui/common/error-state/no-instances.d.ts +3 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.d.ts +2 -1
- package/dist/types/ui/jira-issues-modal/basic-filters/ui/index.d.ts +6 -4
- package/dist/types/ui/jira-issues-modal/site-selector/index.d.ts +1 -1
- package/dist/types-ts4.5/analytics/generated/analytics.types.d.ts +9 -1
- package/dist/types-ts4.5/hooks/useErrorLogger.d.ts +4 -0
- package/dist/types-ts4.5/ui/common/error-state/messages.d.ts +10 -0
- package/dist/types-ts4.5/ui/common/error-state/no-instances-svg.d.ts +2 -0
- package/dist/types-ts4.5/ui/common/error-state/no-instances.d.ts +3 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.d.ts +2 -1
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/index.d.ts +6 -4
- package/dist/types-ts4.5/ui/jira-issues-modal/site-selector/index.d.ts +1 -1
- package/package.json +6 -3
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.JiraSearchContainer = exports.ALLOWED_ORDER_BY_KEYS = void 0;
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
10
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
12
|
var _react2 = require("@emotion/react");
|
|
@@ -15,6 +16,7 @@ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
|
15
16
|
var _primitives = require("@atlaskit/primitives");
|
|
16
17
|
var _analytics = require("../../../analytics");
|
|
17
18
|
var _basicFilters = require("../basic-filters");
|
|
19
|
+
var _useHydrateJqlQuery2 = require("../basic-filters/hooks/useHydrateJqlQuery");
|
|
18
20
|
var _asyncPopupSelect = require("../basic-filters/ui/async-popup-select");
|
|
19
21
|
var _isQueryTooComplex = require("../basic-filters/utils/isQueryTooComplex");
|
|
20
22
|
var _basicSearchInput = require("../basic-search-input");
|
|
@@ -24,8 +26,8 @@ var _buildJQL = require("./buildJQL");
|
|
|
24
26
|
var _messages = require("./messages");
|
|
25
27
|
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); }
|
|
26
28
|
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; }
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
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; }
|
|
30
|
+
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 */
|
|
29
31
|
var inputContainerStyles = (0, _react2.css)({
|
|
30
32
|
alignItems: 'baseline',
|
|
31
33
|
display: 'flex',
|
|
@@ -76,8 +78,18 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
76
78
|
setOrderDirection = _useState12[1];
|
|
77
79
|
var _useState13 = (0, _react.useState)({}),
|
|
78
80
|
_useState14 = (0, _slicedToArray2.default)(_useState13, 2),
|
|
79
|
-
|
|
80
|
-
|
|
81
|
+
filterSelections = _useState14[0],
|
|
82
|
+
setFilterSelections = _useState14[1];
|
|
83
|
+
var showBasicFilters = (0, _react.useMemo)(function () {
|
|
84
|
+
if ((0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.datasource.show-jlol-basic-filters')) {
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
return false;
|
|
88
|
+
}, []);
|
|
89
|
+
var _useHydrateJqlQuery = (0, _useHydrateJqlQuery2.useHydrateJqlQuery)(cloudId || '', jql),
|
|
90
|
+
hydratedOptions = _useHydrateJqlQuery.hydratedOptions,
|
|
91
|
+
fetchHydratedJqlOptions = _useHydrateJqlQuery.fetchHydratedJqlOptions,
|
|
92
|
+
basicFilterHydrationStatus = _useHydrateJqlQuery.status;
|
|
81
93
|
var onSearchMethodChange = (0, _react.useCallback)(function (searchMethod) {
|
|
82
94
|
onSearchMethodChangeCallback(searchMethod);
|
|
83
95
|
setCurrentSearchMethod(searchMethod);
|
|
@@ -87,11 +99,11 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
87
99
|
setBasicSearchTerm(rawSearch);
|
|
88
100
|
setJql((0, _buildJQL.buildJQL)({
|
|
89
101
|
rawSearch: rawSearch,
|
|
90
|
-
filterValues:
|
|
102
|
+
filterValues: filterSelections,
|
|
91
103
|
orderDirection: orderDirection,
|
|
92
104
|
orderKey: orderKey
|
|
93
105
|
}));
|
|
94
|
-
}, [
|
|
106
|
+
}, [filterSelections, orderDirection, orderKey]);
|
|
95
107
|
var onQueryChange = (0, _react.useCallback)(function (query) {
|
|
96
108
|
var _query$split$map$filt, _fragments$at, _fragments$at2, _fragments$at3;
|
|
97
109
|
// determine if order keys have been set so they can be saved and persisted when changes occur in basic search
|
|
@@ -113,13 +125,17 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
113
125
|
onSearch({
|
|
114
126
|
jql: jql
|
|
115
127
|
}, currentSearchMethod);
|
|
116
|
-
setIsComplexQuery((0, _isQueryTooComplex.isQueryTooComplex)(jql));
|
|
117
128
|
if (currentSearchMethod === 'basic') {
|
|
118
129
|
fireEvent('ui.form.submitted.basicSearch', {});
|
|
119
130
|
} else if (currentSearchMethod === 'jql') {
|
|
120
131
|
fireEvent('ui.jqlEditor.searched', {});
|
|
132
|
+
var isCurrentQueryComplex = (0, _isQueryTooComplex.isQueryTooComplex)(jql);
|
|
133
|
+
setIsComplexQuery(isCurrentQueryComplex);
|
|
134
|
+
if (showBasicFilters && !isCurrentQueryComplex) {
|
|
135
|
+
fetchHydratedJqlOptions();
|
|
136
|
+
}
|
|
121
137
|
}
|
|
122
|
-
}, [currentSearchMethod, fireEvent, jql, onSearch]);
|
|
138
|
+
}, [currentSearchMethod, fetchHydratedJqlOptions, fireEvent, jql, onSearch, showBasicFilters]);
|
|
123
139
|
var _useDebouncedCallback = (0, _useDebounce.useDebouncedCallback)(function (filterValues) {
|
|
124
140
|
var jqlWithFilterValues = (0, _buildJQL.buildJQL)({
|
|
125
141
|
rawSearch: basicSearchTerm,
|
|
@@ -135,21 +151,35 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
135
151
|
_useDebouncedCallback2 = (0, _slicedToArray2.default)(_useDebouncedCallback, 1),
|
|
136
152
|
debouncedBasicFilterSelectionChange = _useDebouncedCallback2[0];
|
|
137
153
|
var handleBasicFilterSelectionChange = (0, _react.useCallback)(function (filterValues) {
|
|
138
|
-
|
|
154
|
+
setFilterSelections(filterValues);
|
|
139
155
|
debouncedBasicFilterSelectionChange(filterValues);
|
|
140
156
|
}, [debouncedBasicFilterSelectionChange]);
|
|
141
157
|
(0, _react.useEffect)(function () {
|
|
142
|
-
|
|
158
|
+
var isCurrentQueryComplex = (0, _isQueryTooComplex.isQueryTooComplex)(jql);
|
|
159
|
+
setIsComplexQuery(isCurrentQueryComplex);
|
|
160
|
+
if (showBasicFilters && !isCurrentQueryComplex && jql !== DEFAULT_JQL_QUERY) {
|
|
161
|
+
fetchHydratedJqlOptions();
|
|
162
|
+
}
|
|
143
163
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
144
164
|
}, []);
|
|
145
|
-
|
|
146
|
-
if (
|
|
147
|
-
|
|
165
|
+
(0, _react.useEffect)(function () {
|
|
166
|
+
if (basicFilterHydrationStatus === 'resolved') {
|
|
167
|
+
setFilterSelections(hydratedOptions);
|
|
148
168
|
}
|
|
149
|
-
|
|
150
|
-
|
|
169
|
+
}, [hydratedOptions, basicFilterHydrationStatus]);
|
|
170
|
+
var handleSelectionChange = (0, _react.useCallback)(function (filterType, options) {
|
|
171
|
+
var updatedSelection = _objectSpread(_objectSpread({}, filterSelections), {}, (0, _defineProperty2.default)({}, filterType, options));
|
|
172
|
+
setFilterSelections(updatedSelection);
|
|
173
|
+
handleBasicFilterSelectionChange(updatedSelection);
|
|
174
|
+
}, [handleBasicFilterSelectionChange, filterSelections]);
|
|
175
|
+
var handleBasicFiltersReset = (0, _react.useCallback)(function () {
|
|
176
|
+
if (Object.keys(filterSelections).length > 0) {
|
|
177
|
+
setFilterSelections({});
|
|
178
|
+
}
|
|
179
|
+
}, [filterSelections]);
|
|
151
180
|
return (0, _react2.jsx)("div", {
|
|
152
|
-
css: inputContainerStyles
|
|
181
|
+
css: inputContainerStyles,
|
|
182
|
+
"data-testid": "jira-search-container"
|
|
153
183
|
}, currentSearchMethod === 'basic' && (0, _react2.jsx)(_primitives.Flex, {
|
|
154
184
|
alignItems: "center",
|
|
155
185
|
xcss: basicSearchInputContainerStyles
|
|
@@ -159,9 +189,11 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
159
189
|
onSearch: handleSearch,
|
|
160
190
|
searchTerm: basicSearchTerm
|
|
161
191
|
}), showBasicFilters && (0, _react2.jsx)(_basicFilters.BasicFilters, {
|
|
162
|
-
jql: jql,
|
|
163
192
|
cloudId: cloudId || '',
|
|
164
|
-
onChange:
|
|
193
|
+
onChange: handleSelectionChange,
|
|
194
|
+
selections: filterSelections,
|
|
195
|
+
onReset: handleBasicFiltersReset,
|
|
196
|
+
isJQLHydrating: basicFilterHydrationStatus === 'loading'
|
|
165
197
|
})), currentSearchMethod === 'jql' && (0, _react2.jsx)(_jqlEditor.JiraJQLEditor, {
|
|
166
198
|
cloudId: cloudId || '',
|
|
167
199
|
isSearching: isSearching,
|
|
@@ -32,6 +32,7 @@ var _useDatasourceTableState = require("../../../hooks/useDatasourceTableState")
|
|
|
32
32
|
var _getAvailableJiraSites = require("../../../services/getAvailableJiraSites");
|
|
33
33
|
var _accessRequired = require("../../common/error-state/access-required");
|
|
34
34
|
var _modalLoadingError = require("../../common/error-state/modal-loading-error");
|
|
35
|
+
var _noInstances = require("../../common/error-state/no-instances");
|
|
35
36
|
var _noResults = require("../../common/error-state/no-results");
|
|
36
37
|
var _issueLikeTable = require("../../issue-like-table");
|
|
37
38
|
var _link = _interopRequireDefault(require("../../issue-like-table/render-type/link"));
|
|
@@ -108,7 +109,7 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
108
109
|
initialParameters = props.parameters,
|
|
109
110
|
urlBeingEdited = props.url,
|
|
110
111
|
initialVisibleColumnKeys = props.visibleColumnKeys;
|
|
111
|
-
var _useState = (0, _react.useState)(
|
|
112
|
+
var _useState = (0, _react.useState)(undefined),
|
|
112
113
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
113
114
|
availableSites = _useState2[0],
|
|
114
115
|
setAvailableSites = _useState2[1];
|
|
@@ -178,14 +179,14 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
178
179
|
modalRenderInstanceId = _useRef.current;
|
|
179
180
|
var selectedJiraSite = (0, _react.useMemo)(function () {
|
|
180
181
|
if (cloudId) {
|
|
181
|
-
return availableSites.find(function (jiraSite) {
|
|
182
|
+
return availableSites === null || availableSites === void 0 ? void 0 : availableSites.find(function (jiraSite) {
|
|
182
183
|
return jiraSite.cloudId === cloudId;
|
|
183
184
|
});
|
|
184
185
|
} else {
|
|
185
186
|
var currentlyLoggedInSiteUrl = window.location.origin;
|
|
186
|
-
return availableSites.find(function (jiraSite) {
|
|
187
|
+
return (availableSites === null || availableSites === void 0 ? void 0 : availableSites.find(function (jiraSite) {
|
|
187
188
|
return jiraSite.url === currentlyLoggedInSiteUrl;
|
|
188
|
-
}) || availableSites[0];
|
|
189
|
+
})) || (availableSites === null || availableSites === void 0 ? void 0 : availableSites[0]);
|
|
189
190
|
}
|
|
190
191
|
}, [availableSites, cloudId]);
|
|
191
192
|
var analyticsPayload = (0, _react.useMemo)(function () {
|
|
@@ -199,6 +200,7 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
199
200
|
var isInsertDisabled = !isParametersSet || status === 'rejected' || status === 'unauthorized' || status === 'loading';
|
|
200
201
|
var shouldShowIssueCount = !!totalCount && totalCount !== 1 && currentViewMode === 'issue';
|
|
201
202
|
var isDataReady = (visibleColumnKeys || []).length > 0;
|
|
203
|
+
var hasNoJiraSites = availableSites && availableSites.length === 0;
|
|
202
204
|
(0, _react.useEffect)(function () {
|
|
203
205
|
var shouldStartUfoExperience = status === 'loading';
|
|
204
206
|
if (shouldStartUfoExperience) {
|
|
@@ -515,12 +517,12 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
515
517
|
shouldScrollInViewport: true
|
|
516
518
|
}, (0, _react2.jsx)(_modalDialog.ModalHeader, null, (0, _react2.jsx)(_modalDialog.ModalTitle, null, (0, _react2.jsx)("div", {
|
|
517
519
|
css: dropdownContainerStyles
|
|
518
|
-
}, availableSites.length
|
|
520
|
+
}, availableSites && availableSites.length > 1 ? (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.insertIssuesTitleManySites), (0, _react2.jsx)(_siteSelector.JiraSiteSelector, {
|
|
519
521
|
availableSites: availableSites,
|
|
520
522
|
onSiteSelection: onSiteSelection,
|
|
521
523
|
selectedJiraSite: selectedJiraSite,
|
|
522
524
|
testId: "jira-jql-datasource-modal--site-selector"
|
|
523
|
-
})))), (0, _react2.jsx)(_modeSwitcher.ModeSwitcher, {
|
|
525
|
+
})) : (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.insertIssuesTitle))), !hasNoJiraSites && (0, _react2.jsx)(_modeSwitcher.ModeSwitcher, {
|
|
524
526
|
isCompact: true,
|
|
525
527
|
options: [{
|
|
526
528
|
label: formatMessage(_messages.modalMessages.issueViewModeLabel),
|
|
@@ -531,13 +533,13 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
531
533
|
}],
|
|
532
534
|
onOptionValueChange: handleViewModeChange,
|
|
533
535
|
selectedOptionValue: currentViewMode
|
|
534
|
-
})), (0, _react2.jsx)(_modalDialog.ModalBody, null, (0, _react2.jsx)(_jiraSearchContainer.JiraSearchContainer, {
|
|
536
|
+
})), (0, _react2.jsx)(_modalDialog.ModalBody, null, !hasNoJiraSites ? (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)(_jiraSearchContainer.JiraSearchContainer, {
|
|
535
537
|
isSearching: status === 'loading',
|
|
536
538
|
parameters: parameters,
|
|
537
539
|
onSearch: onSearch,
|
|
538
540
|
initialSearchMethod: initialSearchMethod,
|
|
539
541
|
onSearchMethodChange: setCurrentSearchMethod
|
|
540
|
-
}), currentViewMode === 'count' ? renderCountModeContent() : renderIssuesModeContent()), (0, _react2.jsx)(_modalDialog.ModalFooter, null, shouldShowIssueCount && (0, _react2.jsx)("div", {
|
|
542
|
+
}), currentViewMode === 'count' ? renderCountModeContent() : renderIssuesModeContent()) : (0, _react2.jsx)(_noInstances.NoInstancesView, null)), (0, _react2.jsx)(_modalDialog.ModalFooter, null, shouldShowIssueCount && (0, _react2.jsx)("div", {
|
|
541
543
|
"data-testid": "jira-jql-datasource-modal-total-issues-count",
|
|
542
544
|
css: issueCountStyles
|
|
543
545
|
}, (0, _react2.jsx)(_linkUrl.default, {
|
|
@@ -556,7 +558,7 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
556
558
|
})))), (0, _react2.jsx)(_standardButton.default, {
|
|
557
559
|
appearance: "default",
|
|
558
560
|
onClick: onCancelClick
|
|
559
|
-
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.cancelButtonText)), (0, _react2.jsx)(_standardButton.default, {
|
|
561
|
+
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.cancelButtonText)), !hasNoJiraSites && (0, _react2.jsx)(_standardButton.default, {
|
|
560
562
|
appearance: "primary",
|
|
561
563
|
onClick: onInsertPressed,
|
|
562
564
|
isDisabled: isInsertDisabled,
|
|
@@ -31,7 +31,7 @@ var JiraSiteSelector = exports.JiraSiteSelector = function JiraSiteSelector(prop
|
|
|
31
31
|
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
32
32
|
formatMessage = _useIntl.formatMessage;
|
|
33
33
|
var onChange = function onChange(newValue) {
|
|
34
|
-
var selectedSite = availableSites.find(function (site) {
|
|
34
|
+
var selectedSite = availableSites === null || availableSites === void 0 ? void 0 : availableSites.find(function (site) {
|
|
35
35
|
return site.cloudId === (newValue === null || newValue === void 0 ? void 0 : newValue.value);
|
|
36
36
|
});
|
|
37
37
|
if (selectedSite) {
|
|
@@ -39,7 +39,7 @@ var JiraSiteSelector = exports.JiraSiteSelector = function JiraSiteSelector(prop
|
|
|
39
39
|
}
|
|
40
40
|
};
|
|
41
41
|
var availableSitesOptions = (0, _react.useMemo)(function () {
|
|
42
|
-
return availableSites.map(function (site) {
|
|
42
|
+
return availableSites === null || availableSites === void 0 ? void 0 : availableSites.map(function (site) {
|
|
43
43
|
return {
|
|
44
44
|
label: site.displayName,
|
|
45
45
|
value: site.cloudId
|
|
@@ -55,7 +55,7 @@ var JiraSiteSelector = exports.JiraSiteSelector = function JiraSiteSelector(prop
|
|
|
55
55
|
}, (0, _react2.jsx)(_select.default, {
|
|
56
56
|
css: selectStyles,
|
|
57
57
|
classNamePrefix: testId,
|
|
58
|
-
isLoading: availableSites
|
|
58
|
+
isLoading: !availableSites,
|
|
59
59
|
onChange: onChange,
|
|
60
60
|
options: availableSitesOptions,
|
|
61
61
|
placeholder: formatMessage(_messages.siteSelectorMessages.chooseSite),
|
|
@@ -2,6 +2,7 @@ import { useCallback, useEffect, useState } from 'react';
|
|
|
2
2
|
import isEqual from 'lodash/isEqual';
|
|
3
3
|
import { DEFAULT_GET_DATASOURCE_DATA_PAGE_SIZE, useDatasourceClientExtension } from '@atlaskit/link-client-extension';
|
|
4
4
|
import { useDatasourceAnalyticsEvents } from '../analytics';
|
|
5
|
+
import useErrorLogger from './useErrorLogger';
|
|
5
6
|
export const useDatasourceTableState = ({
|
|
6
7
|
datasourceId,
|
|
7
8
|
parameters,
|
|
@@ -10,6 +11,9 @@ export const useDatasourceTableState = ({
|
|
|
10
11
|
const {
|
|
11
12
|
fireEvent
|
|
12
13
|
} = useDatasourceAnalyticsEvents();
|
|
14
|
+
const {
|
|
15
|
+
captureError
|
|
16
|
+
} = useErrorLogger();
|
|
13
17
|
const idFieldCount = 1;
|
|
14
18
|
const keyFieldCount = 1;
|
|
15
19
|
const [defaultVisibleColumnKeys, setDefaultVisibleColumnKeys] = useState([]);
|
|
@@ -54,13 +58,14 @@ export const useDatasourceTableState = ({
|
|
|
54
58
|
const newColumns = allColumns.filter(isColumnNotPresentInCurrentColumnsList);
|
|
55
59
|
newColumns.length > 0 && setColumns([...columns, ...newColumns]);
|
|
56
60
|
} catch (e) {
|
|
61
|
+
captureError('loadDatasourceDetails', e);
|
|
57
62
|
if (e instanceof Response && (e.status === 401 || e.status === 403)) {
|
|
58
63
|
setStatus('unauthorized');
|
|
59
64
|
return;
|
|
60
65
|
}
|
|
61
66
|
setStatus('rejected');
|
|
62
67
|
}
|
|
63
|
-
}, [columns, datasourceId, getDatasourceDetails, parameters]);
|
|
68
|
+
}, [captureError, columns, datasourceId, getDatasourceDetails, parameters]);
|
|
64
69
|
const applySchemaProperties = useCallback((schema, fieldKeys) => {
|
|
65
70
|
let {
|
|
66
71
|
properties,
|
|
@@ -160,13 +165,14 @@ export const useDatasourceTableState = ({
|
|
|
160
165
|
}
|
|
161
166
|
setStatus('resolved');
|
|
162
167
|
} catch (e) {
|
|
168
|
+
captureError('onNextPage', e);
|
|
163
169
|
if (e instanceof Response && (e.status === 401 || e.status === 403)) {
|
|
164
170
|
setStatus('unauthorized');
|
|
165
171
|
return;
|
|
166
172
|
}
|
|
167
173
|
setStatus('rejected');
|
|
168
174
|
}
|
|
169
|
-
}, [parameters, fieldKeys, nextCursor, getDatasourceData, datasourceId, responseItems === null || responseItems === void 0 ? void 0 : responseItems.length, applySchemaProperties, fireEvent, fullSchema]);
|
|
175
|
+
}, [captureError, parameters, fieldKeys, nextCursor, getDatasourceData, datasourceId, responseItems === null || responseItems === void 0 ? void 0 : responseItems.length, applySchemaProperties, fireEvent, fullSchema]);
|
|
170
176
|
const reset = useCallback(options => {
|
|
171
177
|
setStatus('empty');
|
|
172
178
|
setResponseItems([]);
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
import { captureException } from '@atlaskit/linking-common/sentry';
|
|
3
|
+
import { getTraceId } from '@atlaskit/linking-common/utils';
|
|
4
|
+
import { getBooleanFF } from '@atlaskit/platform-feature-flags';
|
|
5
|
+
import { useDatasourceAnalyticsEvents } from '../analytics';
|
|
6
|
+
const getNetworkFields = error => {
|
|
7
|
+
return error instanceof Response ? {
|
|
8
|
+
traceId: getTraceId(error),
|
|
9
|
+
status: error.status
|
|
10
|
+
} : {
|
|
11
|
+
traceId: null,
|
|
12
|
+
status: null
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
const useErrorLogger = () => {
|
|
16
|
+
const {
|
|
17
|
+
fireEvent
|
|
18
|
+
} = useDatasourceAnalyticsEvents();
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Sentry is good because it can retrieve name, message, stacktrace of an Error. That's why we will send to Sentry only
|
|
22
|
+
* if an error is instance of `Error`. Sentry is also capable of some PII scrubbing of these risky fields.
|
|
23
|
+
*
|
|
24
|
+
* We will send to Splunk every single time, though, but we won't send PII risky fields.
|
|
25
|
+
*/
|
|
26
|
+
const captureError = useCallback((errorLocation, error) => {
|
|
27
|
+
const {
|
|
28
|
+
traceId,
|
|
29
|
+
status
|
|
30
|
+
} = getNetworkFields(error);
|
|
31
|
+
fireEvent('operational.datasource.operationFailed', {
|
|
32
|
+
errorLocation,
|
|
33
|
+
traceId,
|
|
34
|
+
status
|
|
35
|
+
});
|
|
36
|
+
if (getBooleanFF('platform.linking-platform.datasources.enable-sentry-client') && error instanceof Error) {
|
|
37
|
+
captureException(error, 'link-datasource');
|
|
38
|
+
}
|
|
39
|
+
}, [fireEvent]);
|
|
40
|
+
return {
|
|
41
|
+
captureError
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
export default useErrorLogger;
|
|
@@ -44,5 +44,15 @@ export const loadingErrorMessages = defineMessages({
|
|
|
44
44
|
id: 'linkDataSource.jira-issues.unableToLoadResults',
|
|
45
45
|
description: 'Error state message letting the user know we were unable the load the requested list of results',
|
|
46
46
|
defaultMessage: 'Unable to load results'
|
|
47
|
+
},
|
|
48
|
+
noAccessToJiraSitesTitle: {
|
|
49
|
+
id: 'linkDataSource.jira-issues.no.jira.sites.access.title',
|
|
50
|
+
description: 'Title that shows in the modal when user has no access to any Jira sites',
|
|
51
|
+
defaultMessage: "You don't have access to any Jira sites"
|
|
52
|
+
},
|
|
53
|
+
noAccessToJiraSitesDescription: {
|
|
54
|
+
id: 'linkDataSource.jira-issues.no.jira.sites.access.description',
|
|
55
|
+
description: 'Description that shows in the modal when user has no access to any Jira sites',
|
|
56
|
+
defaultMessage: 'To request access, contact your admin.'
|
|
47
57
|
}
|
|
48
58
|
});
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export const NoInstancesSvg = () => {
|
|
3
|
+
return /*#__PURE__*/React.createElement("svg", {
|
|
4
|
+
width: "147",
|
|
5
|
+
height: "171",
|
|
6
|
+
viewBox: "0 0 147 171",
|
|
7
|
+
fill: "none",
|
|
8
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
9
|
+
}, /*#__PURE__*/React.createElement("g", {
|
|
10
|
+
clipPath: "url(#clip0_1442_1679)"
|
|
11
|
+
}, /*#__PURE__*/React.createElement("rect", {
|
|
12
|
+
width: "146.22",
|
|
13
|
+
height: "169.36",
|
|
14
|
+
transform: "translate(0.0300293 0.875)",
|
|
15
|
+
fill: "white",
|
|
16
|
+
fillOpacity: "0.01"
|
|
17
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
18
|
+
opacity: "0.3",
|
|
19
|
+
d: "M110.62 170.234H97.46C96.31 170.234 95.38 169.304 95.38 168.154C95.38 167.004 96.31 166.074 97.46 166.074H110.62C111.77 166.074 112.7 167.004 112.7 168.154C112.7 169.304 111.77 170.234 110.62 170.234Z",
|
|
20
|
+
fill: "#B3BAC5"
|
|
21
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
22
|
+
opacity: "0.3",
|
|
23
|
+
d: "M85.24 170.234H72.08C70.93 170.234 70 169.304 70 168.154C70 167.004 70.93 166.074 72.08 166.074H85.24C86.39 166.074 87.32 167.004 87.32 168.154C87.32 169.304 86.39 170.234 85.24 170.234Z",
|
|
24
|
+
fill: "#B3BAC5"
|
|
25
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
26
|
+
opacity: "0.3",
|
|
27
|
+
d: "M59.86 170.234H46.71C45.56 170.234 44.63 169.304 44.63 168.154C44.63 167.004 45.56 166.074 46.71 166.074H59.87C61.02 166.074 61.95 167.004 61.95 168.154C61.95 169.304 61.01 170.234 59.86 170.234Z",
|
|
28
|
+
fill: "#B3BAC5"
|
|
29
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
30
|
+
opacity: "0.3",
|
|
31
|
+
d: "M34.49 170.234H21.33C20.18 170.234 19.25 169.304 19.25 168.154C19.25 167.004 20.18 166.074 21.33 166.074H34.49C35.64 166.074 36.57 167.004 36.57 168.154C36.57 169.304 35.64 170.234 34.49 170.234Z",
|
|
32
|
+
fill: "#B3BAC5"
|
|
33
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
34
|
+
opacity: "0.3",
|
|
35
|
+
d: "M9.11003 170.234H2.11003C0.960029 170.234 0.0300293 169.304 0.0300293 168.154V161.154C0.0300293 160.004 0.960029 159.074 2.11003 159.074C3.26003 159.074 4.19003 160.004 4.19003 161.154V166.074H9.11003C10.26 166.074 11.19 167.004 11.19 168.154C11.19 169.304 10.26 170.234 9.11003 170.234Z",
|
|
36
|
+
fill: "#B3BAC5"
|
|
37
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
38
|
+
opacity: "0.3",
|
|
39
|
+
d: "M2.11003 149.954C0.960029 149.954 0.0300293 149.024 0.0300293 147.874V133.574C0.0300293 132.424 0.960029 131.494 2.11003 131.494C3.26003 131.494 4.19003 132.424 4.19003 133.574V147.874C4.19003 149.024 3.26003 149.954 2.11003 149.954Z",
|
|
40
|
+
fill: "#B3BAC5"
|
|
41
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
42
|
+
opacity: "0.3",
|
|
43
|
+
d: "M2.11003 122.374C0.960029 122.374 0.0300293 121.444 0.0300293 120.294V105.994C0.0300293 104.844 0.960029 103.914 2.11003 103.914C3.26003 103.914 4.19003 104.844 4.19003 105.994V120.294C4.19003 121.444 3.26003 122.374 2.11003 122.374Z",
|
|
44
|
+
fill: "#B3BAC5"
|
|
45
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
46
|
+
opacity: "0.3",
|
|
47
|
+
d: "M2.11003 94.7942C0.960029 94.7942 0.0300293 93.8542 0.0300293 92.7042V78.4042C0.0300293 77.2542 0.960029 76.3242 2.11003 76.3242C3.26003 76.3242 4.19003 77.2542 4.19003 78.4042V92.7042C4.19003 93.8542 3.26003 94.7942 2.11003 94.7942Z",
|
|
48
|
+
fill: "#B3BAC5"
|
|
49
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
50
|
+
opacity: "0.3",
|
|
51
|
+
d: "M2.11003 67.2041C0.960029 67.2041 0.0300293 66.2741 0.0300293 65.1241V50.8241C0.0300293 49.6741 0.960029 48.7441 2.11003 48.7441C3.26003 48.7441 4.19003 49.6741 4.19003 50.8241V65.1241C4.19003 66.2741 3.26003 67.2041 2.11003 67.2041Z",
|
|
52
|
+
fill: "#B3BAC5"
|
|
53
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
54
|
+
opacity: "0.3",
|
|
55
|
+
d: "M2.11003 39.6241C0.960029 39.6241 0.0300293 38.6841 0.0300293 37.5441V23.2441C0.0300293 22.0941 0.960029 21.1641 2.11003 21.1641C3.26003 21.1641 4.19003 22.0941 4.19003 23.2441V37.5441C4.19003 38.6841 3.26003 39.6241 2.11003 39.6241Z",
|
|
56
|
+
fill: "#B3BAC5"
|
|
57
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
58
|
+
opacity: "0.3",
|
|
59
|
+
d: "M2.11003 12.035C0.960029 12.035 0.0300293 11.105 0.0300293 9.955V2.955C0.0300293 1.805 0.960029 0.875 2.11003 0.875H9.11003C10.26 0.875 11.19 1.805 11.19 2.955C11.19 4.105 10.26 5.035 9.11003 5.035H4.19003V9.955C4.19003 11.105 3.26003 12.035 2.11003 12.035Z",
|
|
60
|
+
fill: "#B3BAC5"
|
|
61
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
62
|
+
opacity: "0.3",
|
|
63
|
+
d: "M110.6 5.035H97.44C96.29 5.035 95.36 4.105 95.36 2.955C95.36 1.805 96.29 0.875 97.44 0.875H110.6C111.75 0.875 112.68 1.805 112.68 2.955C112.68 4.105 111.74 5.035 110.6 5.035Z",
|
|
64
|
+
fill: "#B3BAC5"
|
|
65
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
66
|
+
opacity: "0.3",
|
|
67
|
+
d: "M85.22 5.035H72.07C70.92 5.035 69.99 4.105 69.99 2.955C69.99 1.805 70.92 0.875 72.07 0.875H85.23C86.38 0.875 87.31 1.805 87.31 2.955C87.31 4.105 86.37 5.035 85.22 5.035Z",
|
|
68
|
+
fill: "#B3BAC5"
|
|
69
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
70
|
+
opacity: "0.3",
|
|
71
|
+
d: "M59.85 5.035H46.7C45.55 5.035 44.62 4.105 44.62 2.955C44.62 1.805 45.55 0.875 46.7 0.875H59.86C61.01 0.875 61.94 1.805 61.94 2.955C61.94 4.105 61 5.035 59.85 5.035Z",
|
|
72
|
+
fill: "#B3BAC5"
|
|
73
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
74
|
+
opacity: "0.3",
|
|
75
|
+
d: "M34.48 5.035H21.33C20.18 5.035 19.25 4.105 19.25 2.955C19.25 1.805 20.18 0.875 21.33 0.875H34.49C35.64 0.875 36.57 1.805 36.57 2.955C36.57 4.105 35.63 5.035 34.48 5.035Z",
|
|
76
|
+
fill: "#B3BAC5"
|
|
77
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
78
|
+
opacity: "0.3",
|
|
79
|
+
d: "M129.81 12.035C128.66 12.035 127.73 11.105 127.73 9.955V5.035H122.81C121.66 5.035 120.73 4.105 120.73 2.955C120.73 1.805 121.66 0.875 122.81 0.875H129.81C130.96 0.875 131.89 1.805 131.89 2.955V9.955C131.89 11.105 130.96 12.035 129.81 12.035Z",
|
|
80
|
+
fill: "#B3BAC5"
|
|
81
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
82
|
+
opacity: "0.3",
|
|
83
|
+
d: "M129.83 122.374C128.68 122.374 127.75 121.444 127.75 120.294V105.994C127.75 104.844 128.68 103.914 129.83 103.914C130.98 103.914 131.91 104.844 131.91 105.994V120.294C131.91 121.444 130.98 122.374 129.83 122.374Z",
|
|
84
|
+
fill: "#B3BAC5"
|
|
85
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
86
|
+
opacity: "0.3",
|
|
87
|
+
d: "M129.82 94.7842C128.67 94.7842 127.74 93.8542 127.74 92.7042V78.4042C127.74 77.2542 128.67 76.3242 129.82 76.3242C130.97 76.3242 131.9 77.2542 131.9 78.4042V92.7042C131.91 93.8542 130.97 94.7842 129.82 94.7842Z",
|
|
88
|
+
fill: "#B3BAC5"
|
|
89
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
90
|
+
opacity: "0.3",
|
|
91
|
+
d: "M129.82 67.2041C128.67 67.2041 127.74 66.2741 127.74 65.1241V50.8241C127.74 49.6741 128.67 48.7441 129.82 48.7441C130.97 48.7441 131.9 49.6741 131.9 50.8241V65.1241C131.9 66.2741 130.97 67.2041 129.82 67.2041Z",
|
|
92
|
+
fill: "#B3BAC5"
|
|
93
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
94
|
+
opacity: "0.3",
|
|
95
|
+
d: "M129.82 39.6241C128.67 39.6241 127.74 38.6941 127.74 37.5441V23.2441C127.74 22.0941 128.67 21.1641 129.82 21.1641C130.97 21.1641 131.9 22.0941 131.9 23.2441V37.5441C131.9 38.6841 130.96 39.6241 129.82 39.6241Z",
|
|
96
|
+
fill: "#B3BAC5"
|
|
97
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
98
|
+
d: "M107.63 118.355L101.57 112.375L93.26 120.795L99.32 126.775C100.87 128.305 101.95 130.235 102.44 132.345C102.93 134.465 104.01 136.395 105.56 137.915L130.13 162.155C133.85 165.825 139.85 165.785 143.52 162.065C147.19 158.345 147.15 152.345 143.43 148.675L118.86 124.435C117.31 122.905 115.37 121.855 113.24 121.385C111.13 120.935 109.18 119.885 107.63 118.355Z",
|
|
99
|
+
fill: "#CFD4DB"
|
|
100
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
101
|
+
d: "M107.63 118.355L105.79 116.535C103.46 114.235 99.72 114.265 97.42 116.595C95.12 118.925 95.15 122.665 97.48 124.965L99.32 126.785C100.87 128.315 101.95 130.245 102.44 132.355C102.93 134.475 104.01 136.405 105.56 137.925L130.13 162.165C133.85 165.835 139.85 165.795 143.52 162.075C147.19 158.355 147.15 152.355 143.43 148.685L118.86 124.445C117.31 122.915 115.37 121.865 113.24 121.395C111.13 120.935 109.18 119.885 107.63 118.355Z",
|
|
102
|
+
fill: "url(#paint0_linear_1442_1679)"
|
|
103
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
104
|
+
d: "M113 121.335C110.98 120.845 109.12 119.815 107.63 118.355L105.79 116.535C103.46 114.235 99.72 114.265 97.42 116.595C95.12 118.925 95.15 122.665 97.48 124.965L99.32 126.785C100.8 128.245 101.85 130.085 102.37 132.105C104.39 130.605 106.31 128.935 108.11 127.115C109.9 125.295 111.53 123.365 113 121.335Z",
|
|
105
|
+
fill: "#B3BAC5"
|
|
106
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
107
|
+
d: "M66.94 137.126C53.72 137.216 41.26 132.146 31.85 122.866C12.44 103.696 12.23 72.3057 31.39 52.8757C40.67 43.4657 53.07 38.2357 66.28 38.1457C79.5 38.0557 91.96 43.1257 101.37 52.4057C110.78 61.6857 116.01 74.0857 116.1 87.2957C116.19 100.506 111.12 112.976 101.84 122.386C92.55 131.806 80.16 137.036 66.94 137.126ZM39.8 61.1757C32.73 68.3357 28.88 77.8257 28.94 87.8857C29.08 108.656 46.09 125.446 66.87 125.316C76.93 125.246 86.37 121.266 93.44 114.106C100.51 106.946 104.37 97.4557 104.3 87.3957C104.23 77.3357 100.25 67.8957 93.09 60.8257C85.93 53.7557 76.44 49.8957 66.38 49.9657C56.3 50.0357 46.87 54.0157 39.8 61.1757Z",
|
|
108
|
+
fill: "url(#paint1_linear_1442_1679)"
|
|
109
|
+
}), /*#__PURE__*/React.createElement("path", {
|
|
110
|
+
d: "M84.27 75.5345L79.11 70.3345C78.35 69.5645 77.11 69.5645 76.34 70.3245L66.64 79.9545L57.03 70.2545C56.27 69.4845 55.03 69.4845 54.26 70.2445L49.06 75.4045C48.29 76.1645 48.29 77.4045 49.05 78.1745L58.68 87.8745L48.98 97.5045C48.21 98.2645 48.21 99.5045 48.97 100.275L54.13 105.475C54.89 106.245 56.13 106.245 56.9 105.485L66.6 95.8545L76.23 105.555C76.99 106.325 78.23 106.325 79 105.565L84.2 100.405C84.97 99.6445 84.97 98.4045 84.21 97.6345L74.58 87.9345L84.28 78.3045C85.03 77.5345 85.04 76.2945 84.27 75.5345Z",
|
|
111
|
+
fill: "#C1C7D0"
|
|
112
|
+
})), /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("linearGradient", {
|
|
113
|
+
id: "paint0_linear_1442_1679",
|
|
114
|
+
x1: "95.4796",
|
|
115
|
+
y1: "139.562",
|
|
116
|
+
x2: "146.445",
|
|
117
|
+
y2: "140.204",
|
|
118
|
+
gradientUnits: "userSpaceOnUse"
|
|
119
|
+
}, /*#__PURE__*/React.createElement("stop", {
|
|
120
|
+
stopColor: "#B3BAC5"
|
|
121
|
+
}), /*#__PURE__*/React.createElement("stop", {
|
|
122
|
+
offset: "1",
|
|
123
|
+
stopColor: "#DFE1E5",
|
|
124
|
+
stopOpacity: "0.5"
|
|
125
|
+
})), /*#__PURE__*/React.createElement("linearGradient", {
|
|
126
|
+
id: "paint1_linear_1442_1679",
|
|
127
|
+
x1: "31.1877",
|
|
128
|
+
y1: "122.181",
|
|
129
|
+
x2: "102.046",
|
|
130
|
+
y2: "53.0865",
|
|
131
|
+
gradientUnits: "userSpaceOnUse"
|
|
132
|
+
}, /*#__PURE__*/React.createElement("stop", {
|
|
133
|
+
offset: "0.5572",
|
|
134
|
+
stopColor: "#C1C7D0"
|
|
135
|
+
}), /*#__PURE__*/React.createElement("stop", {
|
|
136
|
+
offset: "0.966",
|
|
137
|
+
stopColor: "#E9EBEF",
|
|
138
|
+
stopOpacity: "0.5"
|
|
139
|
+
})), /*#__PURE__*/React.createElement("clipPath", {
|
|
140
|
+
id: "clip0_1442_1679"
|
|
141
|
+
}, /*#__PURE__*/React.createElement("rect", {
|
|
142
|
+
width: "146.22",
|
|
143
|
+
height: "169.36",
|
|
144
|
+
fill: "white",
|
|
145
|
+
transform: "translate(0.0300293 0.875)"
|
|
146
|
+
}))));
|
|
147
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { css, jsx } from '@emotion/react';
|
|
3
|
+
import { FormattedMessage } from 'react-intl-next';
|
|
4
|
+
import { Flex, xcss } from '@atlaskit/primitives';
|
|
5
|
+
import { loadingErrorMessages } from './messages';
|
|
6
|
+
import { NoInstancesSvg } from './no-instances-svg';
|
|
7
|
+
const titleStyles = css({
|
|
8
|
+
fontWeight: "var(--ds-font-weight-semibold, 600)",
|
|
9
|
+
fontSize: "var(--ds-font-size-200, 16px)",
|
|
10
|
+
marginTop: "var(--ds-space-200, 16px)"
|
|
11
|
+
});
|
|
12
|
+
const descriptionStyles = css({
|
|
13
|
+
marginTop: "var(--ds-space-100, 8px)"
|
|
14
|
+
});
|
|
15
|
+
const containerStyles = xcss({
|
|
16
|
+
marginTop: '60px'
|
|
17
|
+
});
|
|
18
|
+
export const NoInstancesView = () => jsx(Flex, {
|
|
19
|
+
testId: "no-jira-instances-content",
|
|
20
|
+
direction: "column",
|
|
21
|
+
alignItems: "center",
|
|
22
|
+
xcss: containerStyles
|
|
23
|
+
}, jsx(NoInstancesSvg, null), jsx("span", {
|
|
24
|
+
css: titleStyles
|
|
25
|
+
}, jsx(FormattedMessage, loadingErrorMessages.noAccessToJiraSitesTitle)), jsx("span", {
|
|
26
|
+
css: descriptionStyles
|
|
27
|
+
}, jsx(FormattedMessage, loadingErrorMessages.noAccessToJiraSitesDescription)));
|
|
@@ -20,6 +20,7 @@ const AsyncPopupSelect = ({
|
|
|
20
20
|
filterType,
|
|
21
21
|
cloudId,
|
|
22
22
|
selection,
|
|
23
|
+
isJQLHydrating,
|
|
23
24
|
onSelectionChange = () => {},
|
|
24
25
|
onReset: resetSelection = () => {},
|
|
25
26
|
isDisabled = false
|
|
@@ -151,7 +152,6 @@ const AsyncPopupSelect = ({
|
|
|
151
152
|
}
|
|
152
153
|
}, [selectedOptions, selection]);
|
|
153
154
|
const filterOptionsLength = filterOptions.length;
|
|
154
|
-
const isJQLHydrating = false;
|
|
155
155
|
const isError = status === 'rejected';
|
|
156
156
|
const isLoading = status === 'loading' || status === 'empty';
|
|
157
157
|
const isLoadingMore = status === 'loadingMore';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { forwardRef } from 'react';
|
|
1
|
+
import React, { forwardRef, useCallback } from 'react';
|
|
2
2
|
import styled from '@emotion/styled';
|
|
3
3
|
import { FormattedMessage } from 'react-intl-next';
|
|
4
4
|
import Badge from '@atlaskit/badge';
|
|
@@ -38,23 +38,17 @@ const PopupTrigger = /*#__PURE__*/forwardRef(({
|
|
|
38
38
|
selectedOptions
|
|
39
39
|
}, ref) => {
|
|
40
40
|
const [firstOption] = selectedOptions || [];
|
|
41
|
-
const testId = `jlol-basic-filter-${filterType}-trigger`;
|
|
42
41
|
const hasOptions = selectedOptions && selectedOptions.length > 0;
|
|
43
42
|
const showButtonLoading = !isDisabled && isLoading;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}, /*#__PURE__*/React.createElement(FormattedMessage, asyncPopupSelectMessages[`${filterType}Label`])));
|
|
51
|
-
}
|
|
52
|
-
return /*#__PURE__*/React.createElement(Button, {
|
|
53
|
-
ref: ref,
|
|
43
|
+
const LoadingButton = useCallback(() => /*#__PURE__*/React.createElement(LoadingStateAnimationWrapper, null, /*#__PURE__*/React.createElement(Button, {
|
|
44
|
+
iconAfter: /*#__PURE__*/React.createElement(Spinner, {
|
|
45
|
+
size: 'xsmall'
|
|
46
|
+
})
|
|
47
|
+
}, /*#__PURE__*/React.createElement(FormattedMessage, asyncPopupSelectMessages[`${filterType}Label`]))), [filterType]);
|
|
48
|
+
const DefaultButton = useCallback(() => /*#__PURE__*/React.createElement(Button, {
|
|
54
49
|
appearance: "default",
|
|
55
50
|
isSelected: isSelected || hasOptions,
|
|
56
51
|
isDisabled: isDisabled,
|
|
57
|
-
testId: testId,
|
|
58
52
|
iconAfter: /*#__PURE__*/React.createElement(ChevronDownIcon, {
|
|
59
53
|
label: ""
|
|
60
54
|
})
|
|
@@ -65,6 +59,15 @@ const PopupTrigger = /*#__PURE__*/forwardRef(({
|
|
|
65
59
|
alignItems: "center"
|
|
66
60
|
}, /*#__PURE__*/React.createElement(Badge, {
|
|
67
61
|
appearance: "primary"
|
|
68
|
-
}, "+", selectedOptions.length - 1))));
|
|
62
|
+
}, "+", selectedOptions.length - 1)))), [filterType, firstOption, hasOptions, isDisabled, isSelected, selectedOptions]);
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* We had an issue with the popup component referencing a stale DOM ref for the trigger button.
|
|
66
|
+
* Hence introducing a Box to make sure ref is always the same and only content is refreshed on re-renders
|
|
67
|
+
*/
|
|
68
|
+
return /*#__PURE__*/React.createElement(Box, {
|
|
69
|
+
ref: ref,
|
|
70
|
+
testId: `jlol-basic-filter-${filterType}-trigger`
|
|
71
|
+
}, showButtonLoading ? /*#__PURE__*/React.createElement(LoadingButton, null) : /*#__PURE__*/React.createElement(DefaultButton, null));
|
|
69
72
|
});
|
|
70
73
|
export default PopupTrigger;
|