@atlaskit/link-datasource 1.12.4 → 1.13.1
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 +12 -0
- package/dist/cjs/analytics/constants.js +1 -1
- package/dist/cjs/ui/jira-issues-modal/basic-filters/hooks/useFilterOptions.js +34 -12
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/dropdownIndicator.js +39 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.js +51 -20
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.js +2 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/index.js +1 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/utils/isClauseTooComplex.js +93 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/utils/isQueryTooComplex.js +146 -0
- package/dist/cjs/ui/jira-issues-modal/jira-search-container/buildJQL.js +3 -2
- package/dist/cjs/ui/jira-issues-modal/jira-search-container/index.js +21 -8
- package/dist/cjs/ui/jira-issues-modal/jira-search-container/messages.js +5 -0
- package/dist/cjs/ui/jira-issues-modal/mode-switcher/index.js +28 -16
- package/dist/es2019/analytics/constants.js +1 -1
- package/dist/es2019/ui/jira-issues-modal/basic-filters/hooks/useFilterOptions.js +14 -2
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/dropdownIndicator.js +34 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.js +25 -10
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.js +2 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/index.js +1 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/utils/isClauseTooComplex.js +77 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/utils/isQueryTooComplex.js +105 -0
- package/dist/es2019/ui/jira-issues-modal/jira-search-container/buildJQL.js +2 -1
- package/dist/es2019/ui/jira-issues-modal/jira-search-container/index.js +13 -3
- package/dist/es2019/ui/jira-issues-modal/jira-search-container/messages.js +5 -0
- package/dist/es2019/ui/jira-issues-modal/mode-switcher/index.js +19 -9
- package/dist/esm/analytics/constants.js +1 -1
- package/dist/esm/ui/jira-issues-modal/basic-filters/hooks/useFilterOptions.js +35 -13
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/dropdownIndicator.js +32 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.js +52 -21
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.js +2 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/index.js +1 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/utils/isClauseTooComplex.js +86 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/utils/isQueryTooComplex.js +140 -0
- package/dist/esm/ui/jira-issues-modal/jira-search-container/buildJQL.js +2 -1
- package/dist/esm/ui/jira-issues-modal/jira-search-container/index.js +21 -8
- package/dist/esm/ui/jira-issues-modal/jira-search-container/messages.js +5 -0
- package/dist/esm/ui/jira-issues-modal/mode-switcher/index.js +29 -17
- package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/dropdownIndicator.d.ts +5 -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/async-popup-select/trigger.d.ts +1 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/utils/isClauseTooComplex.d.ts +2 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/utils/isQueryTooComplex.d.ts +1 -0
- package/dist/types/ui/jira-issues-modal/jira-search-container/buildJQL.d.ts +1 -0
- package/dist/types/ui/jira-issues-modal/jira-search-container/index.d.ts +1 -0
- package/dist/types/ui/jira-issues-modal/jira-search-container/messages.d.ts +5 -0
- package/dist/types/ui/jira-issues-modal/mode-switcher/index.d.ts +2 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/dropdownIndicator.d.ts +5 -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/async-popup-select/trigger.d.ts +1 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/utils/isClauseTooComplex.d.ts +2 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/utils/isQueryTooComplex.d.ts +1 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/jira-search-container/buildJQL.d.ts +1 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/jira-search-container/index.d.ts +1 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/jira-search-container/messages.d.ts +5 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/mode-switcher/index.d.ts +2 -0
- package/package.json +1 -2
- package/dist/cjs/ui/jira-issues-modal/basic-filters/hooks/useIsComplexQuery.js +0 -12
- package/dist/es2019/ui/jira-issues-modal/basic-filters/hooks/useIsComplexQuery.js +0 -6
- package/dist/esm/ui/jira-issues-modal/basic-filters/hooks/useIsComplexQuery.js +0 -6
- package/dist/types/ui/jira-issues-modal/basic-filters/hooks/useIsComplexQuery.d.ts +0 -3
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/hooks/useIsComplexQuery.d.ts +0 -3
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
2
|
/** @jsx jsx */
|
|
3
|
-
import React, { useCallback, useMemo, useState } from 'react';
|
|
3
|
+
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
4
4
|
import { css, jsx } from '@emotion/react';
|
|
5
5
|
import { useIntl } from 'react-intl-next';
|
|
6
6
|
import { getBooleanFF } from '@atlaskit/platform-feature-flags';
|
|
7
7
|
import { useDatasourceAnalyticsEvents } from '../../../analytics';
|
|
8
8
|
import { BasicFilters } from '../basic-filters';
|
|
9
|
+
import { isQueryTooComplex } from '../basic-filters/utils/isQueryTooComplex';
|
|
9
10
|
import { BasicSearchInput } from '../basic-search-input';
|
|
10
11
|
import { JiraJQLEditor } from '../jql-editor';
|
|
11
12
|
import { ModeSwitcher } from '../mode-switcher';
|
|
@@ -18,6 +19,7 @@ var inputContainerStyles = css({
|
|
|
18
19
|
minHeight: '60px'
|
|
19
20
|
});
|
|
20
21
|
var DEFAULT_JQL_QUERY = 'created >= -30d order by created DESC';
|
|
22
|
+
export var ALLOWED_ORDER_BY_KEYS = ['key', 'summary', 'assignee', 'status', 'created'];
|
|
21
23
|
var JiraSearchMethodSwitcher = ModeSwitcher;
|
|
22
24
|
export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
23
25
|
var isSearching = props.isSearching,
|
|
@@ -42,14 +44,18 @@ export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
42
44
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
43
45
|
jql = _useState6[0],
|
|
44
46
|
setJql = _useState6[1];
|
|
45
|
-
var _useState7 = useState(),
|
|
47
|
+
var _useState7 = useState(false),
|
|
46
48
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
isComplexQuery = _useState8[0],
|
|
50
|
+
setIsComplexQuery = _useState8[1];
|
|
49
51
|
var _useState9 = useState(),
|
|
50
52
|
_useState10 = _slicedToArray(_useState9, 2),
|
|
51
|
-
|
|
52
|
-
|
|
53
|
+
orderKey = _useState10[0],
|
|
54
|
+
setOrderKey = _useState10[1];
|
|
55
|
+
var _useState11 = useState(),
|
|
56
|
+
_useState12 = _slicedToArray(_useState11, 2),
|
|
57
|
+
orderDirection = _useState12[0],
|
|
58
|
+
setOrderDirection = _useState12[1];
|
|
53
59
|
var _useDatasourceAnalyti = useDatasourceAnalyticsEvents(),
|
|
54
60
|
fireEvent = _useDatasourceAnalyti.fireEvent;
|
|
55
61
|
var onSearchMethodChange = useCallback(function (searchMethod) {
|
|
@@ -76,7 +82,7 @@ export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
76
82
|
var order = hasOrder ? (_fragments$at3 = fragments.at(-1)) === null || _fragments$at3 === void 0 ? void 0 : _fragments$at3.split(' ').at(-1) : undefined;
|
|
77
83
|
|
|
78
84
|
// TODO: confirm if these are the only order keys we want to preserve - existing whiteboard logic
|
|
79
|
-
if (key &&
|
|
85
|
+
if (key && ALLOWED_ORDER_BY_KEYS.includes(key)) {
|
|
80
86
|
setOrderKey(key);
|
|
81
87
|
setOrderDirection(order);
|
|
82
88
|
}
|
|
@@ -86,6 +92,7 @@ export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
86
92
|
onSearch({
|
|
87
93
|
jql: jql
|
|
88
94
|
}, currentSearchMethod);
|
|
95
|
+
setIsComplexQuery(isQueryTooComplex(jql));
|
|
89
96
|
if (currentSearchMethod === 'basic') {
|
|
90
97
|
fireEvent('ui.form.submitted.basicSearch', {});
|
|
91
98
|
} else if (currentSearchMethod === 'jql') {
|
|
@@ -98,6 +105,10 @@ export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
98
105
|
}
|
|
99
106
|
return false;
|
|
100
107
|
}, []);
|
|
108
|
+
useEffect(function () {
|
|
109
|
+
setIsComplexQuery(isQueryTooComplex(jql));
|
|
110
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
111
|
+
}, []);
|
|
101
112
|
return jsx("div", {
|
|
102
113
|
css: inputContainerStyles
|
|
103
114
|
}, currentSearchMethod === 'basic' && jsx(React.Fragment, null, jsx(BasicSearchInput, {
|
|
@@ -122,7 +133,9 @@ export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
122
133
|
value: 'jql'
|
|
123
134
|
}, {
|
|
124
135
|
label: formatMessage(modeSwitcherMessages.basicTextSearchLabel),
|
|
125
|
-
value: 'basic'
|
|
136
|
+
value: 'basic',
|
|
137
|
+
disabled: isComplexQuery,
|
|
138
|
+
tooltipText: isComplexQuery ? formatMessage(modeSwitcherMessages.basicModeSwitchDisabledTooltipText) : ''
|
|
126
139
|
}]
|
|
127
140
|
}));
|
|
128
141
|
};
|
|
@@ -4,5 +4,10 @@ export var modeSwitcherMessages = defineMessages({
|
|
|
4
4
|
id: 'linkDataSource.jira-issues.configmodal.basicModeText',
|
|
5
5
|
description: 'Display text for basic text search toggle button',
|
|
6
6
|
defaultMessage: 'Basic'
|
|
7
|
+
},
|
|
8
|
+
basicModeSwitchDisabledTooltipText: {
|
|
9
|
+
id: 'linkDataSource.jira-issues.configmodal.basicModeSwitchDisabledTooltipText',
|
|
10
|
+
description: 'Display tooltip text when basic mode switch is disabled',
|
|
11
|
+
defaultMessage: "You can't switch to basic for this query."
|
|
7
12
|
}
|
|
8
13
|
});
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
1
2
|
/** @jsx jsx */
|
|
2
3
|
import React from 'react';
|
|
3
4
|
import { css, jsx } from '@emotion/react';
|
|
4
|
-
import { N0, N20, N30A, N700 } from '@atlaskit/theme/colors';
|
|
5
|
+
import { N0, N20, N30A, N60, N700 } from '@atlaskit/theme/colors';
|
|
6
|
+
import Tooltip from '@atlaskit/tooltip';
|
|
5
7
|
var modeSwitcherStyles = css({
|
|
6
8
|
alignItems: 'center',
|
|
7
9
|
background: "var(--ds-background-neutral, ".concat(N20, ")"),
|
|
@@ -44,8 +46,12 @@ var modeSwitcherLabelSelectedStyles = css({
|
|
|
44
46
|
}
|
|
45
47
|
});
|
|
46
48
|
var modeSwitcherLabelDisabledStyles = css({
|
|
49
|
+
color: "var(--ds-text-disabled, ".concat(N60, ")")
|
|
50
|
+
});
|
|
51
|
+
var modeSwitcherDisabledStyles = css({
|
|
47
52
|
':hover': {
|
|
48
|
-
cursor: 'not-allowed'
|
|
53
|
+
cursor: 'not-allowed',
|
|
54
|
+
background: 'transparent'
|
|
49
55
|
}
|
|
50
56
|
});
|
|
51
57
|
var compactModeSwitcherLabelStyles = css({
|
|
@@ -68,21 +74,27 @@ export var ModeSwitcher = function ModeSwitcher(props) {
|
|
|
68
74
|
disabled: isDisabled
|
|
69
75
|
}, options.map(function (_ref) {
|
|
70
76
|
var value = _ref.value,
|
|
71
|
-
label = _ref.label
|
|
77
|
+
label = _ref.label,
|
|
78
|
+
isOptionDisabled = _ref.disabled,
|
|
79
|
+
tooltipText = _ref.tooltipText;
|
|
72
80
|
var isSelected = value === selectedOptionValue;
|
|
73
|
-
return jsx(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
"
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
81
|
+
return jsx(Tooltip, {
|
|
82
|
+
content: tooltipText
|
|
83
|
+
}, function (tooltipProps) {
|
|
84
|
+
return jsx("label", _extends({}, tooltipProps, {
|
|
85
|
+
key: value,
|
|
86
|
+
css: [modeSwitcherLabelStyles, isCompact && compactModeSwitcherLabelStyles, isSelected && modeSwitcherLabelSelectedStyles, isDisabled && modeSwitcherDisabledStyles, isOptionDisabled && [modeSwitcherLabelDisabledStyles, modeSwitcherDisabledStyles]],
|
|
87
|
+
"data-testid": "mode-toggle-".concat(value)
|
|
88
|
+
}), label, jsx("input", {
|
|
89
|
+
"aria-checked": isSelected,
|
|
90
|
+
"aria-disabled": isOptionDisabled,
|
|
91
|
+
checked: isSelected,
|
|
92
|
+
css: modeInputStyles,
|
|
93
|
+
disabled: isOptionDisabled,
|
|
94
|
+
onChange: handleModeChange,
|
|
95
|
+
type: "radio",
|
|
96
|
+
value: value
|
|
97
|
+
}));
|
|
98
|
+
});
|
|
87
99
|
})) : null;
|
|
88
100
|
};
|
package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/dropdownIndicator.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { DropdownIndicatorProps } from '@atlaskit/select';
|
|
3
|
+
import { SelectOption } from '../../types';
|
|
4
|
+
declare const CustomDropdownIndicator: (props: DropdownIndicatorProps<SelectOption, true>) => JSX.Element;
|
|
5
|
+
export default CustomDropdownIndicator;
|
|
@@ -5,6 +5,7 @@ export interface AsyncPopupSelectProps {
|
|
|
5
5
|
cloudId: string;
|
|
6
6
|
selection: SelectOption[];
|
|
7
7
|
onSelectionChange?: (selection: SelectOption[]) => void;
|
|
8
|
+
isDisabled?: boolean;
|
|
8
9
|
}
|
|
9
|
-
declare const AsyncPopupSelect: ({ filterType, cloudId, selection, onSelectionChange, }: AsyncPopupSelectProps) => JSX.Element;
|
|
10
|
+
declare const AsyncPopupSelect: ({ filterType, cloudId, selection, onSelectionChange, isDisabled, }: AsyncPopupSelectProps) => JSX.Element;
|
|
10
11
|
export default AsyncPopupSelect;
|
|
@@ -3,6 +3,7 @@ import { BasicFilterFieldType } from '../../types';
|
|
|
3
3
|
export interface PopupTriggerProps {
|
|
4
4
|
filterType: BasicFilterFieldType;
|
|
5
5
|
isSelected?: boolean;
|
|
6
|
+
isDisabled?: boolean;
|
|
6
7
|
onClick?: () => void;
|
|
7
8
|
}
|
|
8
9
|
declare const PopupTrigger: React.ForwardRefExoticComponent<PopupTriggerProps & React.RefAttributes<HTMLElement>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isQueryTooComplex: (jql: string) => boolean;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx } from '@emotion/react';
|
|
2
2
|
import type { JiraSearchMethod } from '../../../common/types';
|
|
3
3
|
import { JiraIssueDatasourceParameters, JiraIssueDatasourceParametersQuery } from '../types';
|
|
4
|
+
export declare const ALLOWED_ORDER_BY_KEYS: string[];
|
|
4
5
|
export interface SearchContainerProps {
|
|
5
6
|
isSearching?: boolean;
|
|
6
7
|
onSearch: (query: JiraIssueDatasourceParametersQuery, searchMethod: JiraSearchMethod) => void;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { DropdownIndicatorProps } from '@atlaskit/select';
|
|
3
|
+
import { SelectOption } from '../../types';
|
|
4
|
+
declare const CustomDropdownIndicator: (props: DropdownIndicatorProps<SelectOption, true>) => JSX.Element;
|
|
5
|
+
export default CustomDropdownIndicator;
|
package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export interface AsyncPopupSelectProps {
|
|
|
5
5
|
cloudId: string;
|
|
6
6
|
selection: SelectOption[];
|
|
7
7
|
onSelectionChange?: (selection: SelectOption[]) => void;
|
|
8
|
+
isDisabled?: boolean;
|
|
8
9
|
}
|
|
9
|
-
declare const AsyncPopupSelect: ({ filterType, cloudId, selection, onSelectionChange, }: AsyncPopupSelectProps) => JSX.Element;
|
|
10
|
+
declare const AsyncPopupSelect: ({ filterType, cloudId, selection, onSelectionChange, isDisabled, }: AsyncPopupSelectProps) => JSX.Element;
|
|
10
11
|
export default AsyncPopupSelect;
|
package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { BasicFilterFieldType } from '../../types';
|
|
|
3
3
|
export interface PopupTriggerProps {
|
|
4
4
|
filterType: BasicFilterFieldType;
|
|
5
5
|
isSelected?: boolean;
|
|
6
|
+
isDisabled?: boolean;
|
|
6
7
|
onClick?: () => void;
|
|
7
8
|
}
|
|
8
9
|
declare const PopupTrigger: React.ForwardRefExoticComponent<PopupTriggerProps & React.RefAttributes<HTMLElement>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isQueryTooComplex: (jql: string) => boolean;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx } from '@emotion/react';
|
|
2
2
|
import type { JiraSearchMethod } from '../../../common/types';
|
|
3
3
|
import { JiraIssueDatasourceParameters, JiraIssueDatasourceParametersQuery } from '../types';
|
|
4
|
+
export declare const ALLOWED_ORDER_BY_KEYS: string[];
|
|
4
5
|
export interface SearchContainerProps {
|
|
5
6
|
isSearching?: boolean;
|
|
6
7
|
onSearch: (query: JiraIssueDatasourceParametersQuery, searchMethod: JiraSearchMethod) => void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/link-datasource",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.13.1",
|
|
4
4
|
"description": "UI Components to support linking platform dataset feature",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -65,7 +65,6 @@
|
|
|
65
65
|
"@atlaskit/tokens": "^1.28.0",
|
|
66
66
|
"@atlaskit/tooltip": "^17.8.0",
|
|
67
67
|
"@atlaskit/ufo": "^0.2.4",
|
|
68
|
-
"@atlassianlabs/jql-ast": "^2.1.0",
|
|
69
68
|
"@atlassianlabs/jql-editor": "^2.0.1",
|
|
70
69
|
"@babel/runtime": "^7.0.0",
|
|
71
70
|
"@emotion/react": "^11.7.1",
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.useIsComplexQuery = void 0;
|
|
7
|
-
var useIsComplexQuery = exports.useIsComplexQuery = function useIsComplexQuery() {
|
|
8
|
-
return {
|
|
9
|
-
// https://product-fabric.atlassian.net/browse/EDM-8103
|
|
10
|
-
isComplexQuery: false
|
|
11
|
-
};
|
|
12
|
-
};
|