@atlaskit/link-datasource 0.14.4
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 +233 -0
- package/README.md +3 -0
- package/dist/cjs/hooks/useDatasourceTableState.js +133 -0
- package/dist/cjs/index.js +19 -0
- package/dist/cjs/services/getAvailableJiraSites.js +65 -0
- package/dist/cjs/services/makeGetJqlAutocompleteData.js +66 -0
- package/dist/cjs/services/makeGetJqlSuggestionsData.js +55 -0
- package/dist/cjs/ui/issue-like-table/column-picker/index.js +93 -0
- package/dist/cjs/ui/issue-like-table/column-picker/types.js +5 -0
- package/dist/cjs/ui/issue-like-table/draggable-table-heading.js +182 -0
- package/dist/cjs/ui/issue-like-table/empty-state/index.js +127 -0
- package/dist/cjs/ui/issue-like-table/empty-state/priority.js +28 -0
- package/dist/cjs/ui/issue-like-table/empty-state/type.js +51 -0
- package/dist/cjs/ui/issue-like-table/empty-state/types.js +5 -0
- package/dist/cjs/ui/issue-like-table/index.js +300 -0
- package/dist/cjs/ui/issue-like-table/render-type/boolean/index.js +30 -0
- package/dist/cjs/ui/issue-like-table/render-type/boolean/messages.js +20 -0
- package/dist/cjs/ui/issue-like-table/render-type/date-time/index.js +47 -0
- package/dist/cjs/ui/issue-like-table/render-type/icon/index.js +34 -0
- package/dist/cjs/ui/issue-like-table/render-type/index.js +63 -0
- package/dist/cjs/ui/issue-like-table/render-type/link/index.js +56 -0
- package/dist/cjs/ui/issue-like-table/render-type/number/index.js +24 -0
- package/dist/cjs/ui/issue-like-table/render-type/status/index.js +28 -0
- package/dist/cjs/ui/issue-like-table/render-type/tag/index.js +27 -0
- package/dist/cjs/ui/issue-like-table/render-type/text/index.js +23 -0
- package/dist/cjs/ui/issue-like-table/render-type/user/index.js +36 -0
- package/dist/cjs/ui/issue-like-table/render-type/user/messages.js +15 -0
- package/dist/cjs/ui/issue-like-table/styled.js +12 -0
- package/dist/cjs/ui/issue-like-table/types.js +5 -0
- package/dist/cjs/ui/issue-like-table/useIsOnScreen.js +32 -0
- package/dist/cjs/ui/jira-issues/modal/basic-search-input/index.js +52 -0
- package/dist/cjs/ui/jira-issues/modal/basic-search-input/messages.js +15 -0
- package/dist/cjs/ui/jira-issues/modal/index.js +267 -0
- package/dist/cjs/ui/jira-issues/modal/jira-search-container/buildJQL.js +27 -0
- package/dist/cjs/ui/jira-issues/modal/jira-search-container/index.js +116 -0
- package/dist/cjs/ui/jira-issues/modal/jira-search-container/messages.js +15 -0
- package/dist/cjs/ui/jira-issues/modal/jql-editor/index.js +41 -0
- package/dist/cjs/ui/jira-issues/modal/messages.js +45 -0
- package/dist/cjs/ui/jira-issues/modal/mode-switcher/index.js +97 -0
- package/dist/cjs/ui/jira-issues/modal/site-selector/index.js +55 -0
- package/dist/cjs/ui/jira-issues/modal/site-selector/messages.js +20 -0
- package/dist/cjs/ui/jira-issues/table-footer/index.js +68 -0
- package/dist/cjs/ui/jira-issues/table-footer/messages.js +25 -0
- package/dist/cjs/ui/jira-issues/table-footer/sync-info/index.js +79 -0
- package/dist/cjs/ui/jira-issues/table-footer/sync-info/messages.js +20 -0
- package/dist/cjs/ui/jira-issues/tableView.js +64 -0
- package/dist/cjs/ui/jira-issues/types.js +5 -0
- package/dist/cjs/version.json +5 -0
- package/dist/es2019/hooks/useDatasourceTableState.js +77 -0
- package/dist/es2019/index.js +2 -0
- package/dist/es2019/services/getAvailableJiraSites.js +20 -0
- package/dist/es2019/services/makeGetJqlAutocompleteData.js +19 -0
- package/dist/es2019/services/makeGetJqlSuggestionsData.js +11 -0
- package/dist/es2019/ui/issue-like-table/column-picker/index.js +77 -0
- package/dist/es2019/ui/issue-like-table/column-picker/types.js +1 -0
- package/dist/es2019/ui/issue-like-table/draggable-table-heading.js +166 -0
- package/dist/es2019/ui/issue-like-table/empty-state/index.js +113 -0
- package/dist/es2019/ui/issue-like-table/empty-state/priority.js +32 -0
- package/dist/es2019/ui/issue-like-table/empty-state/type.js +46 -0
- package/dist/es2019/ui/issue-like-table/empty-state/types.js +1 -0
- package/dist/es2019/ui/issue-like-table/index.js +259 -0
- package/dist/es2019/ui/issue-like-table/render-type/boolean/index.js +21 -0
- package/dist/es2019/ui/issue-like-table/render-type/boolean/messages.js +13 -0
- package/dist/es2019/ui/issue-like-table/render-type/date-time/index.js +37 -0
- package/dist/es2019/ui/issue-like-table/render-type/icon/index.js +27 -0
- package/dist/es2019/ui/issue-like-table/render-type/index.js +55 -0
- package/dist/es2019/ui/issue-like-table/render-type/link/index.js +38 -0
- package/dist/es2019/ui/issue-like-table/render-type/number/index.js +15 -0
- package/dist/es2019/ui/issue-like-table/render-type/status/index.js +19 -0
- package/dist/es2019/ui/issue-like-table/render-type/tag/index.js +18 -0
- package/dist/es2019/ui/issue-like-table/render-type/text/index.js +14 -0
- package/dist/es2019/ui/issue-like-table/render-type/user/index.js +29 -0
- package/dist/es2019/ui/issue-like-table/render-type/user/messages.js +8 -0
- package/dist/es2019/ui/issue-like-table/styled.js +6 -0
- package/dist/es2019/ui/issue-like-table/types.js +1 -0
- package/dist/es2019/ui/issue-like-table/useIsOnScreen.js +17 -0
- package/dist/es2019/ui/jira-issues/modal/basic-search-input/index.js +42 -0
- package/dist/es2019/ui/jira-issues/modal/basic-search-input/messages.js +8 -0
- package/dist/es2019/ui/jira-issues/modal/index.js +227 -0
- package/dist/es2019/ui/jira-issues/modal/jira-search-container/buildJQL.js +20 -0
- package/dist/es2019/ui/jira-issues/modal/jira-search-container/index.js +90 -0
- package/dist/es2019/ui/jira-issues/modal/jira-search-container/messages.js +8 -0
- package/dist/es2019/ui/jira-issues/modal/jql-editor/index.js +33 -0
- package/dist/es2019/ui/jira-issues/modal/messages.js +38 -0
- package/dist/es2019/ui/jira-issues/modal/mode-switcher/index.js +90 -0
- package/dist/es2019/ui/jira-issues/modal/site-selector/index.js +43 -0
- package/dist/es2019/ui/jira-issues/modal/site-selector/messages.js +13 -0
- package/dist/es2019/ui/jira-issues/table-footer/index.js +78 -0
- package/dist/es2019/ui/jira-issues/table-footer/messages.js +18 -0
- package/dist/es2019/ui/jira-issues/table-footer/sync-info/index.js +59 -0
- package/dist/es2019/ui/jira-issues/table-footer/sync-info/messages.js +13 -0
- package/dist/es2019/ui/jira-issues/tableView.js +57 -0
- package/dist/es2019/ui/jira-issues/types.js +1 -0
- package/dist/es2019/version.json +5 -0
- package/dist/esm/hooks/useDatasourceTableState.js +125 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/services/getAvailableJiraSites.js +57 -0
- package/dist/esm/services/makeGetJqlAutocompleteData.js +58 -0
- package/dist/esm/services/makeGetJqlSuggestionsData.js +47 -0
- package/dist/esm/ui/issue-like-table/column-picker/index.js +85 -0
- package/dist/esm/ui/issue-like-table/column-picker/types.js +1 -0
- package/dist/esm/ui/issue-like-table/draggable-table-heading.js +173 -0
- package/dist/esm/ui/issue-like-table/empty-state/index.js +118 -0
- package/dist/esm/ui/issue-like-table/empty-state/priority.js +20 -0
- package/dist/esm/ui/issue-like-table/empty-state/type.js +43 -0
- package/dist/esm/ui/issue-like-table/empty-state/types.js +1 -0
- package/dist/esm/ui/issue-like-table/index.js +292 -0
- package/dist/esm/ui/issue-like-table/render-type/boolean/index.js +21 -0
- package/dist/esm/ui/issue-like-table/render-type/boolean/messages.js +13 -0
- package/dist/esm/ui/issue-like-table/render-type/date-time/index.js +38 -0
- package/dist/esm/ui/issue-like-table/render-type/icon/index.js +25 -0
- package/dist/esm/ui/issue-like-table/render-type/index.js +55 -0
- package/dist/esm/ui/issue-like-table/render-type/link/index.js +44 -0
- package/dist/esm/ui/issue-like-table/render-type/number/index.js +15 -0
- package/dist/esm/ui/issue-like-table/render-type/status/index.js +19 -0
- package/dist/esm/ui/issue-like-table/render-type/tag/index.js +18 -0
- package/dist/esm/ui/issue-like-table/render-type/text/index.js +14 -0
- package/dist/esm/ui/issue-like-table/render-type/user/index.js +27 -0
- package/dist/esm/ui/issue-like-table/render-type/user/messages.js +8 -0
- package/dist/esm/ui/issue-like-table/styled.js +4 -0
- package/dist/esm/ui/issue-like-table/types.js +1 -0
- package/dist/esm/ui/issue-like-table/useIsOnScreen.js +25 -0
- package/dist/esm/ui/jira-issues/modal/basic-search-input/index.js +43 -0
- package/dist/esm/ui/jira-issues/modal/basic-search-input/messages.js +8 -0
- package/dist/esm/ui/jira-issues/modal/index.js +255 -0
- package/dist/esm/ui/jira-issues/modal/jira-search-container/buildJQL.js +20 -0
- package/dist/esm/ui/jira-issues/modal/jira-search-container/index.js +104 -0
- package/dist/esm/ui/jira-issues/modal/jira-search-container/messages.js +8 -0
- package/dist/esm/ui/jira-issues/modal/jql-editor/index.js +31 -0
- package/dist/esm/ui/jira-issues/modal/messages.js +38 -0
- package/dist/esm/ui/jira-issues/modal/mode-switcher/index.js +88 -0
- package/dist/esm/ui/jira-issues/modal/site-selector/index.js +44 -0
- package/dist/esm/ui/jira-issues/modal/site-selector/messages.js +13 -0
- package/dist/esm/ui/jira-issues/table-footer/index.js +60 -0
- package/dist/esm/ui/jira-issues/table-footer/messages.js +18 -0
- package/dist/esm/ui/jira-issues/table-footer/sync-info/index.js +68 -0
- package/dist/esm/ui/jira-issues/table-footer/sync-info/messages.js +13 -0
- package/dist/esm/ui/jira-issues/tableView.js +55 -0
- package/dist/esm/ui/jira-issues/types.js +1 -0
- package/dist/esm/version.json +5 -0
- package/dist/types/hooks/useDatasourceTableState.d.ts +13 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/services/getAvailableJiraSites.d.ts +6 -0
- package/dist/types/services/makeGetJqlAutocompleteData.d.ts +6 -0
- package/dist/types/services/makeGetJqlSuggestionsData.d.ts +5 -0
- package/dist/types/ui/issue-like-table/column-picker/index.d.ts +3 -0
- package/dist/types/ui/issue-like-table/column-picker/types.d.ts +6 -0
- package/dist/types/ui/issue-like-table/draggable-table-heading.d.ts +12 -0
- package/dist/types/ui/issue-like-table/empty-state/index.d.ts +6 -0
- package/dist/types/ui/issue-like-table/empty-state/priority.d.ts +6 -0
- package/dist/types/ui/issue-like-table/empty-state/type.d.ts +6 -0
- package/dist/types/ui/issue-like-table/empty-state/types.d.ts +2 -0
- package/dist/types/ui/issue-like-table/index.d.ts +15 -0
- package/dist/types/ui/issue-like-table/render-type/boolean/index.d.ts +8 -0
- package/dist/types/ui/issue-like-table/render-type/boolean/messages.d.ts +12 -0
- package/dist/types/ui/issue-like-table/render-type/date-time/index.d.ts +10 -0
- package/dist/types/ui/issue-like-table/render-type/icon/index.d.ts +8 -0
- package/dist/types/ui/issue-like-table/render-type/index.d.ts +2 -0
- package/dist/types/ui/issue-like-table/render-type/link/index.d.ts +8 -0
- package/dist/types/ui/issue-like-table/render-type/number/index.d.ts +8 -0
- package/dist/types/ui/issue-like-table/render-type/status/index.d.ts +8 -0
- package/dist/types/ui/issue-like-table/render-type/tag/index.d.ts +9 -0
- package/dist/types/ui/issue-like-table/render-type/text/index.d.ts +8 -0
- package/dist/types/ui/issue-like-table/render-type/user/index.d.ts +11 -0
- package/dist/types/ui/issue-like-table/render-type/user/messages.d.ts +7 -0
- package/dist/types/ui/issue-like-table/styled.d.ts +5 -0
- package/dist/types/ui/issue-like-table/types.d.ts +38 -0
- package/dist/types/ui/issue-like-table/useIsOnScreen.d.ts +1 -0
- package/dist/types/ui/jira-issues/modal/basic-search-input/index.d.ts +12 -0
- package/dist/types/ui/jira-issues/modal/basic-search-input/messages.d.ts +7 -0
- package/dist/types/ui/jira-issues/modal/index.d.ts +13 -0
- package/dist/types/ui/jira-issues/modal/jira-search-container/buildJQL.d.ts +7 -0
- package/dist/types/ui/jira-issues/modal/jira-search-container/index.d.ts +7 -0
- package/dist/types/ui/jira-issues/modal/jira-search-container/messages.d.ts +7 -0
- package/dist/types/ui/jira-issues/modal/jql-editor/index.d.ts +8 -0
- package/dist/types/ui/jira-issues/modal/messages.d.ts +37 -0
- package/dist/types/ui/jira-issues/modal/mode-switcher/index.d.ts +12 -0
- package/dist/types/ui/jira-issues/modal/site-selector/index.d.ts +10 -0
- package/dist/types/ui/jira-issues/modal/site-selector/messages.d.ts +12 -0
- package/dist/types/ui/jira-issues/table-footer/index.d.ts +7 -0
- package/dist/types/ui/jira-issues/table-footer/messages.d.ts +17 -0
- package/dist/types/ui/jira-issues/table-footer/sync-info/index.d.ts +4 -0
- package/dist/types/ui/jira-issues/table-footer/sync-info/messages.d.ts +12 -0
- package/dist/types/ui/jira-issues/tableView.d.ts +3 -0
- package/dist/types/ui/jira-issues/types.d.ts +14 -0
- package/dist/types-ts4.5/hooks/useDatasourceTableState.d.ts +13 -0
- package/dist/types-ts4.5/index.d.ts +2 -0
- package/dist/types-ts4.5/services/getAvailableJiraSites.d.ts +6 -0
- package/dist/types-ts4.5/services/makeGetJqlAutocompleteData.d.ts +6 -0
- package/dist/types-ts4.5/services/makeGetJqlSuggestionsData.d.ts +5 -0
- package/dist/types-ts4.5/ui/issue-like-table/column-picker/index.d.ts +3 -0
- package/dist/types-ts4.5/ui/issue-like-table/column-picker/types.d.ts +6 -0
- package/dist/types-ts4.5/ui/issue-like-table/draggable-table-heading.d.ts +12 -0
- package/dist/types-ts4.5/ui/issue-like-table/empty-state/index.d.ts +6 -0
- package/dist/types-ts4.5/ui/issue-like-table/empty-state/priority.d.ts +6 -0
- package/dist/types-ts4.5/ui/issue-like-table/empty-state/type.d.ts +6 -0
- package/dist/types-ts4.5/ui/issue-like-table/empty-state/types.d.ts +2 -0
- package/dist/types-ts4.5/ui/issue-like-table/index.d.ts +15 -0
- package/dist/types-ts4.5/ui/issue-like-table/render-type/boolean/index.d.ts +8 -0
- package/dist/types-ts4.5/ui/issue-like-table/render-type/boolean/messages.d.ts +12 -0
- package/dist/types-ts4.5/ui/issue-like-table/render-type/date-time/index.d.ts +10 -0
- package/dist/types-ts4.5/ui/issue-like-table/render-type/icon/index.d.ts +8 -0
- package/dist/types-ts4.5/ui/issue-like-table/render-type/index.d.ts +2 -0
- package/dist/types-ts4.5/ui/issue-like-table/render-type/link/index.d.ts +8 -0
- package/dist/types-ts4.5/ui/issue-like-table/render-type/number/index.d.ts +8 -0
- package/dist/types-ts4.5/ui/issue-like-table/render-type/status/index.d.ts +8 -0
- package/dist/types-ts4.5/ui/issue-like-table/render-type/tag/index.d.ts +9 -0
- package/dist/types-ts4.5/ui/issue-like-table/render-type/text/index.d.ts +8 -0
- package/dist/types-ts4.5/ui/issue-like-table/render-type/user/index.d.ts +11 -0
- package/dist/types-ts4.5/ui/issue-like-table/render-type/user/messages.d.ts +7 -0
- package/dist/types-ts4.5/ui/issue-like-table/styled.d.ts +5 -0
- package/dist/types-ts4.5/ui/issue-like-table/types.d.ts +38 -0
- package/dist/types-ts4.5/ui/issue-like-table/useIsOnScreen.d.ts +1 -0
- package/dist/types-ts4.5/ui/jira-issues/modal/basic-search-input/index.d.ts +12 -0
- package/dist/types-ts4.5/ui/jira-issues/modal/basic-search-input/messages.d.ts +7 -0
- package/dist/types-ts4.5/ui/jira-issues/modal/index.d.ts +13 -0
- package/dist/types-ts4.5/ui/jira-issues/modal/jira-search-container/buildJQL.d.ts +7 -0
- package/dist/types-ts4.5/ui/jira-issues/modal/jira-search-container/index.d.ts +7 -0
- package/dist/types-ts4.5/ui/jira-issues/modal/jira-search-container/messages.d.ts +7 -0
- package/dist/types-ts4.5/ui/jira-issues/modal/jql-editor/index.d.ts +8 -0
- package/dist/types-ts4.5/ui/jira-issues/modal/messages.d.ts +37 -0
- package/dist/types-ts4.5/ui/jira-issues/modal/mode-switcher/index.d.ts +12 -0
- package/dist/types-ts4.5/ui/jira-issues/modal/site-selector/index.d.ts +10 -0
- package/dist/types-ts4.5/ui/jira-issues/modal/site-selector/messages.d.ts +12 -0
- package/dist/types-ts4.5/ui/jira-issues/table-footer/index.d.ts +7 -0
- package/dist/types-ts4.5/ui/jira-issues/table-footer/messages.d.ts +17 -0
- package/dist/types-ts4.5/ui/jira-issues/table-footer/sync-info/index.d.ts +4 -0
- package/dist/types-ts4.5/ui/jira-issues/table-footer/sync-info/messages.d.ts +12 -0
- package/dist/types-ts4.5/ui/jira-issues/tableView.d.ts +3 -0
- package/dist/types-ts4.5/ui/jira-issues/types.d.ts +14 -0
- package/examples-helpers/buildIssueLikeTable.tsx +88 -0
- package/examples-helpers/buildJiraIssuesTable.tsx +31 -0
- package/examples-helpers/images.json +4 -0
- package/examples-helpers/mockAutocompleteData.ts +54 -0
- package/examples-helpers/mockJiraAvailableSites.ts +27 -0
- package/examples-helpers/mockJiraData.ts +546 -0
- package/examples-helpers/mockJqlSmartLinkData.ts +72 -0
- package/examples-helpers/mockSmartLinkData.ts +67 -0
- package/examples-helpers/mockSuggestionData.ts +17 -0
- package/examples-helpers/setupDatasourcesMocks.ts +199 -0
- package/examples-helpers/setupModalExampleMocks.ts +32 -0
- package/examples-helpers/smartLinkCustomClient.ts +26 -0
- package/package.json +118 -0
- package/report.api.md +98 -0
- package/tmp/api-report-tmp.d.ts +64 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = exports.USER_TYPE_TEST_ID = void 0;
|
|
8
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
11
|
+
var _reactIntlNext = require("react-intl-next");
|
|
12
|
+
var _avatar = _interopRequireDefault(require("@atlaskit/avatar"));
|
|
13
|
+
var _messages = require("./messages");
|
|
14
|
+
var _templateObject, _templateObject2;
|
|
15
|
+
var UserWrapper = _styled.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n align-items: center;\n"])));
|
|
16
|
+
var AvatarWrapper = _styled.default.div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n margin-right: 5px;\n"])));
|
|
17
|
+
var USER_TYPE_TEST_ID = 'link-datasource-render-type--user';
|
|
18
|
+
exports.USER_TYPE_TEST_ID = USER_TYPE_TEST_ID;
|
|
19
|
+
var UserType = function UserType(_ref) {
|
|
20
|
+
var avatarSource = _ref.avatarSource,
|
|
21
|
+
_ref$avatarSize = _ref.avatarSize,
|
|
22
|
+
avatarSize = _ref$avatarSize === void 0 ? 'small' : _ref$avatarSize,
|
|
23
|
+
displayName = _ref.displayName,
|
|
24
|
+
_ref$testId = _ref.testId,
|
|
25
|
+
testId = _ref$testId === void 0 ? USER_TYPE_TEST_ID : _ref$testId,
|
|
26
|
+
children = _ref.children;
|
|
27
|
+
return /*#__PURE__*/_react.default.createElement(UserWrapper, {
|
|
28
|
+
"data-testid": testId
|
|
29
|
+
}, /*#__PURE__*/_react.default.createElement(AvatarWrapper, null, /*#__PURE__*/_react.default.createElement(_avatar.default, {
|
|
30
|
+
appearance: "circle",
|
|
31
|
+
size: avatarSize,
|
|
32
|
+
src: avatarSource
|
|
33
|
+
})), children || displayName || /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.userTypeMessages.userDefaultdisplayNameValue));
|
|
34
|
+
};
|
|
35
|
+
var _default = UserType;
|
|
36
|
+
exports.default = _default;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.userTypeMessages = void 0;
|
|
7
|
+
var _reactIntlNext = require("react-intl-next");
|
|
8
|
+
var userTypeMessages = (0, _reactIntlNext.defineMessages)({
|
|
9
|
+
userDefaultdisplayNameValue: {
|
|
10
|
+
id: 'linkDataSource.render-type.user.default.display.name',
|
|
11
|
+
description: 'Text to display for the user type when no display value is provided',
|
|
12
|
+
defaultMessage: 'Unassigned'
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
exports.userTypeMessages = userTypeMessages;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.TableHeading = void 0;
|
|
8
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
9
|
+
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
10
|
+
var _templateObject;
|
|
11
|
+
var TableHeading = _styled.default.th(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n position: relative;\n padding-block: ", ";\n line-height: ", ";\n"])), "var(--ds-space-100, 8px)", "var(--ds-font-lineHeight-300, 24px)");
|
|
12
|
+
exports.TableHeading = TableHeading;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useIsOnScreen = void 0;
|
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
// Hook which tracks if a ref is visible or not. Taken from: https://stackoverflow.com/a/65008608
|
|
11
|
+
var useIsOnScreen = function useIsOnScreen(el) {
|
|
12
|
+
var _useState = (0, _react.useState)(false),
|
|
13
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
14
|
+
isIntersecting = _useState2[0],
|
|
15
|
+
setIntersecting = _useState2[1];
|
|
16
|
+
var observer = (0, _react.useMemo)(function () {
|
|
17
|
+
return new IntersectionObserver(function (_ref) {
|
|
18
|
+
var _ref2 = (0, _slicedToArray2.default)(_ref, 1),
|
|
19
|
+
entry = _ref2[0];
|
|
20
|
+
return setIntersecting(entry.isIntersecting);
|
|
21
|
+
});
|
|
22
|
+
}, []);
|
|
23
|
+
(0, _react.useEffect)(function () {
|
|
24
|
+
el && observer.observe(el);
|
|
25
|
+
return function () {
|
|
26
|
+
setIntersecting(false);
|
|
27
|
+
return observer.disconnect();
|
|
28
|
+
};
|
|
29
|
+
}, [observer, el]);
|
|
30
|
+
return isIntersecting;
|
|
31
|
+
};
|
|
32
|
+
exports.useIsOnScreen = useIsOnScreen;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.BasicSearchInput = void 0;
|
|
8
|
+
var _react = require("@emotion/react");
|
|
9
|
+
var _reactIntlNext = require("react-intl-next");
|
|
10
|
+
var _button = require("@atlaskit/button");
|
|
11
|
+
var _search = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/search"));
|
|
12
|
+
var _textfield = _interopRequireDefault(require("@atlaskit/textfield"));
|
|
13
|
+
var _messages = require("./messages");
|
|
14
|
+
/** @jsx jsx */
|
|
15
|
+
|
|
16
|
+
var searchButtonStyles = (0, _react.css)({
|
|
17
|
+
marginRight: "var(--ds-space-075, 6px)"
|
|
18
|
+
});
|
|
19
|
+
var BasicSearchInput = function BasicSearchInput(_ref) {
|
|
20
|
+
var isDisabled = _ref.isDisabled,
|
|
21
|
+
isSearching = _ref.isSearching,
|
|
22
|
+
onChange = _ref.onChange,
|
|
23
|
+
onSearch = _ref.onSearch,
|
|
24
|
+
searchTerm = _ref.searchTerm,
|
|
25
|
+
_ref$testId = _ref.testId,
|
|
26
|
+
testId = _ref$testId === void 0 ? 'jira-jql-datasource-modal--basic-search-input' : _ref$testId;
|
|
27
|
+
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
28
|
+
formatMessage = _useIntl.formatMessage;
|
|
29
|
+
return (0, _react.jsx)(_textfield.default, {
|
|
30
|
+
elemAfterInput: (0, _react.jsx)(_button.LoadingButton, {
|
|
31
|
+
appearance: "primary",
|
|
32
|
+
css: searchButtonStyles,
|
|
33
|
+
iconBefore: (0, _react.jsx)(_search.default, {
|
|
34
|
+
label: formatMessage(_messages.basicSearchInputMessages.basicTextSearchLabel),
|
|
35
|
+
size: "medium"
|
|
36
|
+
}),
|
|
37
|
+
isDisabled: isDisabled,
|
|
38
|
+
isLoading: isSearching,
|
|
39
|
+
onClick: function onClick() {
|
|
40
|
+
return onSearch(searchTerm);
|
|
41
|
+
},
|
|
42
|
+
spacing: "none",
|
|
43
|
+
testId: "jira-jql-datasource-modal--basic-search-button"
|
|
44
|
+
}),
|
|
45
|
+
autoFocus: true,
|
|
46
|
+
onChange: onChange,
|
|
47
|
+
placeholder: formatMessage(_messages.basicSearchInputMessages.basicTextSearchLabel),
|
|
48
|
+
testId: testId,
|
|
49
|
+
value: searchTerm
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
exports.BasicSearchInput = BasicSearchInput;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.basicSearchInputMessages = void 0;
|
|
7
|
+
var _reactIntlNext = require("react-intl-next");
|
|
8
|
+
var basicSearchInputMessages = (0, _reactIntlNext.defineMessages)({
|
|
9
|
+
basicTextSearchLabel: {
|
|
10
|
+
id: 'linkDataSource.jira-issues.configmodal.basicTextSearchPlaceholder',
|
|
11
|
+
description: 'Placeholder text for the search input box',
|
|
12
|
+
defaultMessage: 'Search'
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
exports.basicSearchInputMessages = basicSearchInputMessages;
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.JiraIssuesConfigModal = void 0;
|
|
9
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
var _react = require("react");
|
|
14
|
+
var _react2 = require("@emotion/react");
|
|
15
|
+
var _reactIntlNext = require("react-intl-next");
|
|
16
|
+
var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
|
|
17
|
+
var _modalDialog = _interopRequireWildcard(require("@atlaskit/modal-dialog"));
|
|
18
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
19
|
+
var _useDatasourceTableState = require("../../../hooks/useDatasourceTableState");
|
|
20
|
+
var _getAvailableJiraSites = require("../../../services/getAvailableJiraSites");
|
|
21
|
+
var _issueLikeTable = require("../../issue-like-table");
|
|
22
|
+
var _link = _interopRequireDefault(require("../../issue-like-table/render-type/link"));
|
|
23
|
+
var _jiraSearchContainer = require("./jira-search-container");
|
|
24
|
+
var _messages = require("./messages");
|
|
25
|
+
var _modeSwitcher = require("./mode-switcher");
|
|
26
|
+
var _siteSelector = require("./site-selector");
|
|
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); }
|
|
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; }
|
|
29
|
+
/** @jsx jsx */
|
|
30
|
+
|
|
31
|
+
var dropdownContainerStyles = (0, _react2.css)({
|
|
32
|
+
display: 'flex',
|
|
33
|
+
gap: "var(--ds-space-100, 0.5rem)"
|
|
34
|
+
});
|
|
35
|
+
var contentContainerStyles = (0, _react2.css)({
|
|
36
|
+
height: '420px',
|
|
37
|
+
overflow: 'auto'
|
|
38
|
+
});
|
|
39
|
+
var placeholderSmartLinkStyles = (0, _react2.css)({
|
|
40
|
+
backgroundColor: "var(--ds-surface-raised, ".concat(_colors.N0, ")"),
|
|
41
|
+
borderRadius: '3px',
|
|
42
|
+
boxShadow: '0px 1px 1px rgba(9, 30, 66, 0.25), 0px 0px 1px rgba(9, 30, 66, 0.31)',
|
|
43
|
+
color: "var(--ds-text-brand, ".concat(_colors.B400, ")"),
|
|
44
|
+
padding: '0px 2px'
|
|
45
|
+
});
|
|
46
|
+
var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
|
|
47
|
+
var _useState = (0, _react.useState)([]),
|
|
48
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
49
|
+
availableSites = _useState2[0],
|
|
50
|
+
setAvailableSites = _useState2[1];
|
|
51
|
+
var _useState3 = (0, _react.useState)('issue'),
|
|
52
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
53
|
+
currentViewMode = _useState4[0],
|
|
54
|
+
setCurrentViewMode = _useState4[1];
|
|
55
|
+
var datasourceId = props.datasourceId,
|
|
56
|
+
parameters = props.parameters,
|
|
57
|
+
visibleColumnKeys = props.visibleColumnKeys,
|
|
58
|
+
onCancel = props.onCancel,
|
|
59
|
+
onInsert = props.onInsert,
|
|
60
|
+
onUpdateParameters = props.onUpdateParameters,
|
|
61
|
+
onVisibleColumnKeysChange = props.onVisibleColumnKeysChange;
|
|
62
|
+
var isParametersSet = !!(parameters && parameters.value && parameters.cloudId);
|
|
63
|
+
var _ref = parameters || {},
|
|
64
|
+
cloudId = _ref.cloudId,
|
|
65
|
+
jql = _ref.value;
|
|
66
|
+
var _useDatasourceTableSt = (0, _useDatasourceTableState.useDatasourceTableState)(datasourceId, parameters, ['key']),
|
|
67
|
+
reset = _useDatasourceTableSt.reset,
|
|
68
|
+
status = _useDatasourceTableSt.status,
|
|
69
|
+
onNextPage = _useDatasourceTableSt.onNextPage,
|
|
70
|
+
responseItems = _useDatasourceTableSt.responseItems,
|
|
71
|
+
hasNextPage = _useDatasourceTableSt.hasNextPage,
|
|
72
|
+
columns = _useDatasourceTableSt.columns,
|
|
73
|
+
defaultVisibleColumnKeys = _useDatasourceTableSt.defaultVisibleColumnKeys;
|
|
74
|
+
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
75
|
+
formatMessage = _useIntl.formatMessage;
|
|
76
|
+
(0, _react.useEffect)(function () {
|
|
77
|
+
var fetchSiteDisplayNames = /*#__PURE__*/function () {
|
|
78
|
+
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
79
|
+
var jiraSites;
|
|
80
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
81
|
+
while (1) switch (_context.prev = _context.next) {
|
|
82
|
+
case 0:
|
|
83
|
+
_context.next = 2;
|
|
84
|
+
return (0, _getAvailableJiraSites.getAvailableJiraSites)();
|
|
85
|
+
case 2:
|
|
86
|
+
jiraSites = _context.sent;
|
|
87
|
+
setAvailableSites(jiraSites);
|
|
88
|
+
case 4:
|
|
89
|
+
case "end":
|
|
90
|
+
return _context.stop();
|
|
91
|
+
}
|
|
92
|
+
}, _callee);
|
|
93
|
+
}));
|
|
94
|
+
return function fetchSiteDisplayNames() {
|
|
95
|
+
return _ref2.apply(this, arguments);
|
|
96
|
+
};
|
|
97
|
+
}();
|
|
98
|
+
void fetchSiteDisplayNames();
|
|
99
|
+
}, []);
|
|
100
|
+
var onSearch = (0, _react.useCallback)(function (parameters) {
|
|
101
|
+
onUpdateParameters(parameters);
|
|
102
|
+
reset();
|
|
103
|
+
}, [reset, onUpdateParameters]);
|
|
104
|
+
var onSiteSelection = (0, _react.useCallback)(function (site) {
|
|
105
|
+
onUpdateParameters({
|
|
106
|
+
cloudId: site.cloudId
|
|
107
|
+
});
|
|
108
|
+
reset();
|
|
109
|
+
}, [reset, onUpdateParameters]);
|
|
110
|
+
var selectedJiraSite = (0, _react.useMemo)(function () {
|
|
111
|
+
return availableSites.find(function (jiraSite) {
|
|
112
|
+
return jiraSite.cloudId === cloudId;
|
|
113
|
+
}) || availableSites[0];
|
|
114
|
+
}, [availableSites, cloudId]);
|
|
115
|
+
(0, _react.useEffect)(function () {
|
|
116
|
+
if (!cloudId && selectedJiraSite) {
|
|
117
|
+
onUpdateParameters({
|
|
118
|
+
cloudId: selectedJiraSite.cloudId
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}, [cloudId, onUpdateParameters, selectedJiraSite]);
|
|
122
|
+
(0, _react.useEffect)(function () {
|
|
123
|
+
if ((visibleColumnKeys || []).length === 0 && defaultVisibleColumnKeys.length > 0) {
|
|
124
|
+
onVisibleColumnKeysChange(defaultVisibleColumnKeys);
|
|
125
|
+
}
|
|
126
|
+
}, [visibleColumnKeys, defaultVisibleColumnKeys, onVisibleColumnKeysChange]);
|
|
127
|
+
var retrieveUrlForSmartCardRender = (0, _react.useCallback)(function () {
|
|
128
|
+
var _data$key;
|
|
129
|
+
var _responseItems = (0, _slicedToArray2.default)(responseItems, 1),
|
|
130
|
+
data = _responseItems[0];
|
|
131
|
+
// agrement with BE that we will use `key` for rendering smartlink
|
|
132
|
+
return data === null || data === void 0 ? void 0 : (_data$key = data.key) === null || _data$key === void 0 ? void 0 : _data$key.url;
|
|
133
|
+
}, [responseItems]);
|
|
134
|
+
var onInsertPressed = (0, _react.useCallback)(function () {
|
|
135
|
+
if (!isParametersSet || !jql || !selectedJiraSite) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
var firstIssueUrl = retrieveUrlForSmartCardRender();
|
|
139
|
+
if (currentViewMode === 'count') {
|
|
140
|
+
onInsert({
|
|
141
|
+
type: 'inlineCard',
|
|
142
|
+
attrs: {
|
|
143
|
+
url: "".concat(selectedJiraSite.url, "/issues/").concat(encodeURI(jql))
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
} else if (responseItems.length === 1 && firstIssueUrl) {
|
|
147
|
+
onInsert({
|
|
148
|
+
type: 'inlineCard',
|
|
149
|
+
attrs: {
|
|
150
|
+
url: firstIssueUrl
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
} else {
|
|
154
|
+
onInsert({
|
|
155
|
+
type: 'blockCard',
|
|
156
|
+
attrs: {
|
|
157
|
+
datasource: {
|
|
158
|
+
id: datasourceId,
|
|
159
|
+
parameters: {
|
|
160
|
+
cloudId: cloudId,
|
|
161
|
+
jql: jql // TODO support non JQL type
|
|
162
|
+
},
|
|
163
|
+
|
|
164
|
+
views: [{
|
|
165
|
+
type: 'table',
|
|
166
|
+
properties: {
|
|
167
|
+
columnKeys: visibleColumnKeys
|
|
168
|
+
}
|
|
169
|
+
}]
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
}, [isParametersSet, jql, selectedJiraSite, retrieveUrlForSmartCardRender, currentViewMode, responseItems.length, onInsert, datasourceId, cloudId, visibleColumnKeys]);
|
|
175
|
+
var handleViewModeChange = function handleViewModeChange(selectedMode) {
|
|
176
|
+
setCurrentViewMode(selectedMode);
|
|
177
|
+
};
|
|
178
|
+
(0, _react.useEffect)(function () {
|
|
179
|
+
if (status === 'empty' && isParametersSet) {
|
|
180
|
+
void onNextPage();
|
|
181
|
+
}
|
|
182
|
+
}, [status, isParametersSet, onNextPage, reset]);
|
|
183
|
+
var issueLikeDataTableView = (0, _react.useMemo)(function () {
|
|
184
|
+
return (0, _react2.jsx)(_issueLikeTable.IssueLikeDataTableView, {
|
|
185
|
+
testId: "jira-jql-datasource-table",
|
|
186
|
+
status: status,
|
|
187
|
+
columns: columns,
|
|
188
|
+
items: responseItems,
|
|
189
|
+
hasNextPage: hasNextPage,
|
|
190
|
+
visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
|
|
191
|
+
onNextPage: onNextPage,
|
|
192
|
+
onVisibleColumnKeysChange: onVisibleColumnKeysChange
|
|
193
|
+
});
|
|
194
|
+
}, [columns, defaultVisibleColumnKeys, hasNextPage, onNextPage, onVisibleColumnKeysChange, responseItems, status, visibleColumnKeys]);
|
|
195
|
+
var renderCountModeContent = (0, _react.useCallback)(function () {
|
|
196
|
+
var url = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
|
|
197
|
+
if (status === 'empty' || !jql || !url) {
|
|
198
|
+
return (0, _react2.jsx)("span", {
|
|
199
|
+
"data-testid": "jira-jql-datasource-modal--smart-card-placeholder",
|
|
200
|
+
css: placeholderSmartLinkStyles
|
|
201
|
+
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.issuesCountSmartCardPlaceholderText));
|
|
202
|
+
} else {
|
|
203
|
+
var urlWithEncodedJql = "".concat(url, "/issues/?jql=").concat(encodeURI(jql));
|
|
204
|
+
return (0, _react2.jsx)(_link.default, {
|
|
205
|
+
url: urlWithEncodedJql
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
}, [jql, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status]);
|
|
209
|
+
var renderIssuesModeContent = (0, _react.useCallback)(function () {
|
|
210
|
+
if (status === 'empty' || columns.length === 0) {
|
|
211
|
+
return (0, _react2.jsx)(_issueLikeTable.EmptyState, {
|
|
212
|
+
testId: "jira-jql-datasource-modal--empty-state"
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
var firstIssueUrl = retrieveUrlForSmartCardRender();
|
|
216
|
+
if (responseItems.length === 1 && firstIssueUrl) {
|
|
217
|
+
return (0, _react2.jsx)(_link.default, {
|
|
218
|
+
url: firstIssueUrl
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
return issueLikeDataTableView;
|
|
222
|
+
}, [columns.length, issueLikeDataTableView, responseItems.length, retrieveUrlForSmartCardRender, status]);
|
|
223
|
+
return (0, _react2.jsx)(_reactIntlNext.IntlProvider, {
|
|
224
|
+
locale: "en"
|
|
225
|
+
}, (0, _react2.jsx)(_modalDialog.ModalTransition, null, (0, _react2.jsx)(_modalDialog.default, {
|
|
226
|
+
testId: 'jira-jql-datasource-modal',
|
|
227
|
+
onClose: onCancel,
|
|
228
|
+
width: "x-large",
|
|
229
|
+
shouldScrollInViewport: true
|
|
230
|
+
}, (0, _react2.jsx)(_modalDialog.ModalHeader, null, (0, _react2.jsx)(_modalDialog.ModalTitle, null, availableSites.length < 2 ? (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.insertIssuesTitle) : (0, _react2.jsx)("div", {
|
|
231
|
+
css: dropdownContainerStyles
|
|
232
|
+
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, _messages.modalMessages.insertIssuesTitleManySites, {
|
|
233
|
+
values: {
|
|
234
|
+
siteName: selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.displayName
|
|
235
|
+
}
|
|
236
|
+
})), (0, _react2.jsx)(_siteSelector.JiraSiteSelector, {
|
|
237
|
+
testId: "jira-jql-datasource-modal--site-selector",
|
|
238
|
+
availableSites: availableSites,
|
|
239
|
+
onSiteSelection: onSiteSelection,
|
|
240
|
+
selectedJiraSite: selectedJiraSite
|
|
241
|
+
}))), (0, _react2.jsx)(_modeSwitcher.ModeSwitcher, {
|
|
242
|
+
isCompact: true,
|
|
243
|
+
options: [{
|
|
244
|
+
label: formatMessage(_messages.modalMessages.issueViewModeLabel),
|
|
245
|
+
value: 'issue'
|
|
246
|
+
}, {
|
|
247
|
+
label: formatMessage(_messages.modalMessages.countViewModeLabel),
|
|
248
|
+
value: 'count'
|
|
249
|
+
}],
|
|
250
|
+
onOptionValueChange: handleViewModeChange,
|
|
251
|
+
selectedOptionValue: currentViewMode
|
|
252
|
+
})), (0, _react2.jsx)(_modalDialog.ModalBody, null, (0, _react2.jsx)(_jiraSearchContainer.JiraSearchContainer, {
|
|
253
|
+
parameters: parameters,
|
|
254
|
+
onSearch: onSearch
|
|
255
|
+
}), (0, _react2.jsx)("div", {
|
|
256
|
+
css: contentContainerStyles
|
|
257
|
+
}, currentViewMode === 'count' ? renderCountModeContent() : renderIssuesModeContent())), (0, _react2.jsx)(_modalDialog.ModalFooter, null, (0, _react2.jsx)(_standardButton.default, {
|
|
258
|
+
appearance: "default",
|
|
259
|
+
onClick: onCancel
|
|
260
|
+
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.cancelButtonText)), (0, _react2.jsx)(_standardButton.default, {
|
|
261
|
+
appearance: "primary",
|
|
262
|
+
onClick: onInsertPressed,
|
|
263
|
+
isDisabled: !isParametersSet,
|
|
264
|
+
testId: 'jira-jql-datasource-modal--insert-button'
|
|
265
|
+
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.insertIssuesButtonText))))));
|
|
266
|
+
};
|
|
267
|
+
exports.JiraIssuesConfigModal = JiraIssuesConfigModal;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.buildJQL = void 0;
|
|
7
|
+
var fuzzySearchRegExp = /^"(.+)"$/;
|
|
8
|
+
var jiraIssueKeyRegExp = /[A-Z]+-\d+/;
|
|
9
|
+
var buildJQL = function buildJQL(input) {
|
|
10
|
+
var rawSearch = input.rawSearch,
|
|
11
|
+
_input$orderDirection = input.orderDirection,
|
|
12
|
+
orderDirection = _input$orderDirection === void 0 ? 'DESC' : _input$orderDirection,
|
|
13
|
+
_input$orderKey = input.orderKey,
|
|
14
|
+
orderKey = _input$orderKey === void 0 ? 'created' : _input$orderKey;
|
|
15
|
+
var fuzzy = !rawSearch.match(fuzzySearchRegExp) ? '*' : '';
|
|
16
|
+
var basicSearch = rawSearch.replace(/['"?*]+/g, '');
|
|
17
|
+
var baseQueryParts = rawSearch.trim() ? ["text ~ \"".concat(basicSearch).concat(fuzzy, "\""), "summary ~ \"".concat(basicSearch).concat(fuzzy, "\"")] : [];
|
|
18
|
+
if (jiraIssueKeyRegExp.test(rawSearch)) {
|
|
19
|
+
baseQueryParts.push("key = \"".concat(basicSearch, "\""));
|
|
20
|
+
}
|
|
21
|
+
var baseQueryContent = baseQueryParts.join(' OR ');
|
|
22
|
+
var baseQuery = baseQueryContent ? "(".concat(baseQueryContent, ")") : '';
|
|
23
|
+
var limiter = rawSearch !== null && rawSearch !== void 0 && rawSearch.trim() ? '' : "created >= -30d";
|
|
24
|
+
var query = [baseQuery, limiter].filter(Boolean).join(' AND ');
|
|
25
|
+
return "".concat(query, " order by ").concat(orderKey, " ").concat(orderDirection.toUpperCase());
|
|
26
|
+
};
|
|
27
|
+
exports.buildJQL = buildJQL;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.JiraSearchContainer = void 0;
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _react2 = require("@emotion/react");
|
|
12
|
+
var _reactIntlNext = require("react-intl-next");
|
|
13
|
+
var _basicSearchInput = require("../basic-search-input");
|
|
14
|
+
var _jqlEditor = require("../jql-editor");
|
|
15
|
+
var _modeSwitcher = require("../mode-switcher");
|
|
16
|
+
var _buildJQL = require("./buildJQL");
|
|
17
|
+
var _messages = require("./messages");
|
|
18
|
+
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); }
|
|
19
|
+
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; }
|
|
20
|
+
/** @jsx jsx */
|
|
21
|
+
|
|
22
|
+
var inputContainerStyles = (0, _react2.css)({
|
|
23
|
+
alignItems: 'baseline',
|
|
24
|
+
display: 'flex',
|
|
25
|
+
gap: "var(--ds-space-250, 20px)",
|
|
26
|
+
minHeight: '60px'
|
|
27
|
+
});
|
|
28
|
+
var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
29
|
+
var parameters = props.parameters,
|
|
30
|
+
onSearch = props.onSearch;
|
|
31
|
+
var _ref = parameters || {},
|
|
32
|
+
cloudId = _ref.cloudId,
|
|
33
|
+
initialJql = _ref.value;
|
|
34
|
+
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
35
|
+
formatMessage = _useIntl.formatMessage;
|
|
36
|
+
var basicModeValue = 'basic';
|
|
37
|
+
var jqlModeValue = 'jql';
|
|
38
|
+
var _useState = (0, _react.useState)(''),
|
|
39
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
40
|
+
basicSearchTerm = _useState2[0],
|
|
41
|
+
setBasicSearchTerm = _useState2[1];
|
|
42
|
+
var _useState3 = (0, _react.useState)(initialJql ? jqlModeValue : basicModeValue),
|
|
43
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
44
|
+
currentSearchMode = _useState4[0],
|
|
45
|
+
setCurrentSearchMode = _useState4[1];
|
|
46
|
+
var _useState5 = (0, _react.useState)(initialJql || ''),
|
|
47
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
48
|
+
jql = _useState6[0],
|
|
49
|
+
setJql = _useState6[1];
|
|
50
|
+
var _useState7 = (0, _react.useState)(),
|
|
51
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
52
|
+
orderKey = _useState8[0],
|
|
53
|
+
setOrderKey = _useState8[1];
|
|
54
|
+
var _useState9 = (0, _react.useState)(),
|
|
55
|
+
_useState10 = (0, _slicedToArray2.default)(_useState9, 2),
|
|
56
|
+
orderDirection = _useState10[0],
|
|
57
|
+
setOrderDirection = _useState10[1];
|
|
58
|
+
var onSearchModeChange = function onSearchModeChange(searchMode) {
|
|
59
|
+
setCurrentSearchMode(searchMode);
|
|
60
|
+
};
|
|
61
|
+
var handleBasicSearchChange = function handleBasicSearchChange(e) {
|
|
62
|
+
var rawSearch = e.currentTarget.value;
|
|
63
|
+
setBasicSearchTerm(rawSearch);
|
|
64
|
+
setJql((0, _buildJQL.buildJQL)({
|
|
65
|
+
rawSearch: rawSearch,
|
|
66
|
+
orderDirection: orderDirection,
|
|
67
|
+
orderKey: orderKey
|
|
68
|
+
}));
|
|
69
|
+
};
|
|
70
|
+
var onQueryChange = function onQueryChange(query) {
|
|
71
|
+
var _query$split$map$filt, _fragments$at, _fragments$at2, _fragments$at3;
|
|
72
|
+
// determine if order keys have been set so they can be saved and persisted when changes occur in basic search
|
|
73
|
+
var fragments = (_query$split$map$filt = query === null || query === void 0 ? void 0 : query.split(/(^| )(order by)( |$)/i).map(function (item) {
|
|
74
|
+
return item.trim();
|
|
75
|
+
}).filter(Boolean)) !== null && _query$split$map$filt !== void 0 ? _query$split$map$filt : [];
|
|
76
|
+
var hasOrder = ((_fragments$at = fragments.at(-2)) === null || _fragments$at === void 0 ? void 0 : _fragments$at.toLowerCase()) === 'order by';
|
|
77
|
+
var key = hasOrder ? (_fragments$at2 = fragments.at(-1)) === null || _fragments$at2 === void 0 ? void 0 : _fragments$at2.split(' ').at(-2) : undefined;
|
|
78
|
+
var order = hasOrder ? (_fragments$at3 = fragments.at(-1)) === null || _fragments$at3 === void 0 ? void 0 : _fragments$at3.split(' ').at(-1) : undefined;
|
|
79
|
+
|
|
80
|
+
// TODO: confirm if these are the only order keys we want to preserve - existing whiteboard logic
|
|
81
|
+
if (key && ['key', 'summary', 'assignee', 'status'].includes(key)) {
|
|
82
|
+
setOrderKey(key);
|
|
83
|
+
setOrderDirection(order);
|
|
84
|
+
}
|
|
85
|
+
setJql(query);
|
|
86
|
+
};
|
|
87
|
+
var handleSearch = function handleSearch() {
|
|
88
|
+
onSearch({
|
|
89
|
+
value: jql,
|
|
90
|
+
type: 'jql'
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
return (0, _react2.jsx)("div", {
|
|
94
|
+
css: inputContainerStyles
|
|
95
|
+
}, currentSearchMode === basicModeValue && (0, _react2.jsx)(_basicSearchInput.BasicSearchInput, {
|
|
96
|
+
onChange: handleBasicSearchChange,
|
|
97
|
+
onSearch: handleSearch,
|
|
98
|
+
searchTerm: basicSearchTerm
|
|
99
|
+
}), currentSearchMode === jqlModeValue && (0, _react2.jsx)(_jqlEditor.JiraJQLEditor, {
|
|
100
|
+
cloudId: cloudId || '',
|
|
101
|
+
onChange: onQueryChange,
|
|
102
|
+
onSearch: handleSearch,
|
|
103
|
+
query: jql
|
|
104
|
+
}), (0, _react2.jsx)(_modeSwitcher.ModeSwitcher, {
|
|
105
|
+
onOptionValueChange: onSearchModeChange,
|
|
106
|
+
selectedOptionValue: currentSearchMode,
|
|
107
|
+
options: [{
|
|
108
|
+
label: formatMessage(_messages.modeSwitcherMessages.basicTextSearchLabel),
|
|
109
|
+
value: basicModeValue
|
|
110
|
+
}, {
|
|
111
|
+
label: 'JQL',
|
|
112
|
+
value: jqlModeValue
|
|
113
|
+
}]
|
|
114
|
+
}));
|
|
115
|
+
};
|
|
116
|
+
exports.JiraSearchContainer = JiraSearchContainer;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.modeSwitcherMessages = void 0;
|
|
7
|
+
var _reactIntlNext = require("react-intl-next");
|
|
8
|
+
var modeSwitcherMessages = (0, _reactIntlNext.defineMessages)({
|
|
9
|
+
basicTextSearchLabel: {
|
|
10
|
+
id: 'linkDataSource.jira-issues.configmodal.basicModeText',
|
|
11
|
+
description: 'Display text for basic text search toggle button',
|
|
12
|
+
defaultMessage: 'Basic'
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
exports.modeSwitcherMessages = modeSwitcherMessages;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.JiraJQLEditor = void 0;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _jqlEditor = require("@atlassianlabs/jql-editor");
|
|
10
|
+
var _jqlEditorAutocompleteRest = require("@atlassianlabs/jql-editor-autocomplete-rest");
|
|
11
|
+
var _makeGetJqlAutocompleteData = require("../../../../services/makeGetJqlAutocompleteData");
|
|
12
|
+
var _makeGetJqlSuggestionsData = require("../../../../services/makeGetJqlSuggestionsData");
|
|
13
|
+
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); }
|
|
14
|
+
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; }
|
|
15
|
+
var JiraJQLEditor = function JiraJQLEditor(props) {
|
|
16
|
+
var cloudId = props.cloudId,
|
|
17
|
+
onChange = props.onChange,
|
|
18
|
+
onSearch = props.onSearch,
|
|
19
|
+
query = props.query;
|
|
20
|
+
var autocompleteProvider = (0, _jqlEditorAutocompleteRest.useAutocompleteProvider)('link-datasource', (0, _makeGetJqlAutocompleteData.makeGetJqlAutocompleteData)(cloudId), (0, _makeGetJqlSuggestionsData.makeGetJqlSuggestionsData)(cloudId));
|
|
21
|
+
|
|
22
|
+
// This is an expected (pretty strange imo) way of making sure text field is in focus when rendered
|
|
23
|
+
var inputRef = (0, _react.useRef)({
|
|
24
|
+
focus: function focus() {}
|
|
25
|
+
});
|
|
26
|
+
(0, _react.useEffect)(function () {
|
|
27
|
+
requestAnimationFrame(function () {
|
|
28
|
+
var _inputRef$current;
|
|
29
|
+
(_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
|
|
30
|
+
});
|
|
31
|
+
}, []);
|
|
32
|
+
return /*#__PURE__*/_react.default.createElement(_jqlEditor.JQLEditor, {
|
|
33
|
+
analyticsSource: "link-datasource",
|
|
34
|
+
autocompleteProvider: autocompleteProvider,
|
|
35
|
+
onSearch: onSearch,
|
|
36
|
+
onUpdate: onChange,
|
|
37
|
+
inputRef: inputRef,
|
|
38
|
+
query: query
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
exports.JiraJQLEditor = JiraJQLEditor;
|