@atlaskit/link-datasource 1.9.1 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/cjs/analytics/constants.js +1 -1
- package/dist/cjs/common/zindex.js +4 -2
- package/dist/cjs/ui/assets-modal/modal/index.js +1 -1
- package/dist/cjs/ui/jira-issues-modal/basic-filters/hooks/useFieldValues.js +75 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/hooks/useHydrateJqlQuery.js +12 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/hooks/useIsComplexQuery.js +12 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/control.js +28 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/footer.js +42 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/formatOptionLabel.js +76 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.js +121 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/messages.js +38 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.js +31 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/types.js +5 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/index.js +40 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/utils/index.js +11 -0
- package/dist/cjs/ui/jira-issues-modal/jira-search-container/index.js +4 -2
- package/dist/es2019/analytics/constants.js +1 -1
- package/dist/es2019/common/zindex.js +3 -1
- package/dist/es2019/ui/assets-modal/modal/index.js +1 -1
- package/dist/es2019/ui/jira-issues-modal/basic-filters/hooks/useFieldValues.js +39 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/hooks/useHydrateJqlQuery.js +6 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/hooks/useIsComplexQuery.js +6 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/control.js +16 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/footer.js +36 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/formatOptionLabel.js +74 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.js +91 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/messages.js +32 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.js +22 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/types.js +1 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/index.js +26 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/utils/index.js +5 -0
- package/dist/es2019/ui/jira-issues-modal/jira-search-container/index.js +4 -2
- package/dist/esm/analytics/constants.js +1 -1
- package/dist/esm/common/zindex.js +3 -1
- package/dist/esm/ui/assets-modal/modal/index.js +1 -1
- package/dist/esm/ui/jira-issues-modal/basic-filters/hooks/useFieldValues.js +68 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/hooks/useHydrateJqlQuery.js +6 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/hooks/useIsComplexQuery.js +6 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/control.js +21 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/footer.js +35 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/formatOptionLabel.js +69 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.js +111 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/messages.js +32 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.js +21 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/types.js +1 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/index.js +30 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/utils/index.js +5 -0
- package/dist/esm/ui/jira-issues-modal/jira-search-container/index.js +4 -2
- package/dist/types/common/zindex.d.ts +1 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/hooks/useFieldValues.d.ts +12 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/hooks/useHydrateJqlQuery.d.ts +3 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/hooks/useIsComplexQuery.d.ts +3 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/control.d.ts +5 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/footer.d.ts +7 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/formatOptionLabel.d.ts +3 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.d.ts +9 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/messages.d.ts +32 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.d.ts +9 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/types.d.ts +23 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/ui/index.d.ts +6 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/utils/index.d.ts +1 -0
- package/dist/types-ts4.5/common/zindex.d.ts +1 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/hooks/useFieldValues.d.ts +12 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/hooks/useHydrateJqlQuery.d.ts +3 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/hooks/useIsComplexQuery.d.ts +3 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/control.d.ts +5 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/footer.d.ts +7 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/formatOptionLabel.d.ts +3 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.d.ts +9 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/messages.d.ts +32 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.d.ts +9 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/types.d.ts +23 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/index.d.ts +6 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/utils/index.d.ts +1 -0
- package/package.json +5 -4
- package/dist/cjs/ui/jira-issues-modal/jira-search-container/basic-filters/hooks/useBasicFilterHook.js +0 -17
- package/dist/cjs/ui/jira-issues-modal/jira-search-container/basic-filters/ui/common/dropdown/index.js +0 -15
- package/dist/cjs/ui/jira-issues-modal/jira-search-container/basic-filters/ui/containers/project/index.js +0 -13
- package/dist/cjs/ui/jira-issues-modal/jira-search-container/basic-filters/ui/index.js +0 -15
- package/dist/es2019/ui/jira-issues-modal/jira-search-container/basic-filters/hooks/useBasicFilterHook.js +0 -11
- package/dist/es2019/ui/jira-issues-modal/jira-search-container/basic-filters/ui/common/dropdown/index.js +0 -8
- package/dist/es2019/ui/jira-issues-modal/jira-search-container/basic-filters/ui/containers/project/index.js +0 -6
- package/dist/es2019/ui/jira-issues-modal/jira-search-container/basic-filters/ui/index.js +0 -8
- package/dist/esm/ui/jira-issues-modal/jira-search-container/basic-filters/hooks/useBasicFilterHook.js +0 -11
- package/dist/esm/ui/jira-issues-modal/jira-search-container/basic-filters/ui/common/dropdown/index.js +0 -8
- package/dist/esm/ui/jira-issues-modal/jira-search-container/basic-filters/ui/containers/project/index.js +0 -6
- package/dist/esm/ui/jira-issues-modal/jira-search-container/basic-filters/ui/index.js +0 -8
- package/dist/types/ui/jira-issues-modal/jira-search-container/basic-filters/hooks/useBasicFilterHook.d.ts +0 -4
- package/dist/types/ui/jira-issues-modal/jira-search-container/basic-filters/ui/common/dropdown/index.d.ts +0 -3
- package/dist/types/ui/jira-issues-modal/jira-search-container/basic-filters/ui/containers/project/index.d.ts +0 -3
- package/dist/types/ui/jira-issues-modal/jira-search-container/basic-filters/ui/index.d.ts +0 -3
- package/dist/types-ts4.5/ui/jira-issues-modal/jira-search-container/basic-filters/hooks/useBasicFilterHook.d.ts +0 -4
- package/dist/types-ts4.5/ui/jira-issues-modal/jira-search-container/basic-filters/ui/common/dropdown/index.d.ts +0 -3
- package/dist/types-ts4.5/ui/jira-issues-modal/jira-search-container/basic-filters/ui/containers/project/index.d.ts +0 -3
- package/dist/types-ts4.5/ui/jira-issues-modal/jira-search-container/basic-filters/ui/index.d.ts +0 -3
- /package/dist/cjs/ui/jira-issues-modal/{jira-search-container/basic-filters → basic-filters}/index.js +0 -0
- /package/dist/es2019/ui/jira-issues-modal/{jira-search-container/basic-filters → basic-filters}/index.js +0 -0
- /package/dist/esm/ui/jira-issues-modal/{jira-search-container/basic-filters → basic-filters}/index.js +0 -0
- /package/dist/types/ui/jira-issues-modal/{jira-search-container/basic-filters → basic-filters}/index.d.ts +0 -0
- /package/dist/types-ts4.5/ui/jira-issues-modal/{jira-search-container/basic-filters → basic-filters}/index.d.ts +0 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
4
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
5
|
+
var _excluded = ["isOpen"];
|
|
6
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
7
|
+
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
8
|
+
import { useIntl } from 'react-intl-next';
|
|
9
|
+
import { CheckboxOption, PopupSelect } from '@atlaskit/select';
|
|
10
|
+
import { useFieldValues } from '../../hooks/useFieldValues';
|
|
11
|
+
import CustomControl from './control';
|
|
12
|
+
import PopupFooter from './footer';
|
|
13
|
+
import formatOptionLabel from './formatOptionLabel';
|
|
14
|
+
import { asyncPopupSelectMessages } from './messages';
|
|
15
|
+
import PopupTrigger from './trigger';
|
|
16
|
+
// Needed to disable filtering from react-select
|
|
17
|
+
var noFilterOptions = function noFilterOptions() {
|
|
18
|
+
return true;
|
|
19
|
+
};
|
|
20
|
+
var AsyncPopupSelect = function AsyncPopupSelect(_ref) {
|
|
21
|
+
var filterType = _ref.filterType,
|
|
22
|
+
selection = _ref.selection,
|
|
23
|
+
_ref$onSelectionChang = _ref.onSelectionChange,
|
|
24
|
+
onSelectionChange = _ref$onSelectionChang === void 0 ? function () {} : _ref$onSelectionChang;
|
|
25
|
+
var _useIntl = useIntl(),
|
|
26
|
+
formatMessage = _useIntl.formatMessage;
|
|
27
|
+
var pickerRef = useRef(null);
|
|
28
|
+
var _useState = useState(''),
|
|
29
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
30
|
+
searchTerm = _useState2[0],
|
|
31
|
+
setSearchTerm = _useState2[1];
|
|
32
|
+
var _useState3 = useState(selection),
|
|
33
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
34
|
+
selectedOptions = _useState4[0],
|
|
35
|
+
setSelectedOptions = _useState4[1];
|
|
36
|
+
var _useFieldValues = useFieldValues({
|
|
37
|
+
filterType: filterType
|
|
38
|
+
}),
|
|
39
|
+
filterOptions = _useFieldValues.filterOptions,
|
|
40
|
+
fetchFilterOptions = _useFieldValues.fetchFilterOptions,
|
|
41
|
+
totalCount = _useFieldValues.totalCount,
|
|
42
|
+
status = _useFieldValues.status;
|
|
43
|
+
var handleInputChange = useCallback(function (searchString, actionMeta) {
|
|
44
|
+
if (actionMeta.action === 'input-change' && searchString !== searchTerm) {
|
|
45
|
+
setSearchTerm(searchString);
|
|
46
|
+
}
|
|
47
|
+
}, [searchTerm]);
|
|
48
|
+
var handleOptionSelection = function handleOptionSelection(newValue) {
|
|
49
|
+
setSelectedOptions(newValue);
|
|
50
|
+
onSelectionChange(newValue);
|
|
51
|
+
};
|
|
52
|
+
var handleOpenPopup = useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
53
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
54
|
+
while (1) switch (_context.prev = _context.next) {
|
|
55
|
+
case 0:
|
|
56
|
+
if (status === 'empty') {
|
|
57
|
+
fetchFilterOptions();
|
|
58
|
+
}
|
|
59
|
+
case 1:
|
|
60
|
+
case "end":
|
|
61
|
+
return _context.stop();
|
|
62
|
+
}
|
|
63
|
+
}, _callee);
|
|
64
|
+
})), [fetchFilterOptions, status]);
|
|
65
|
+
useEffect(function () {
|
|
66
|
+
if (status === 'resolved') {
|
|
67
|
+
var _pickerRef$current;
|
|
68
|
+
// necessary to refocus the search input after the loading state
|
|
69
|
+
pickerRef === null || pickerRef === void 0 || (_pickerRef$current = pickerRef.current) === null || _pickerRef$current === void 0 || (_pickerRef$current = _pickerRef$current.selectRef) === null || _pickerRef$current === void 0 || (_pickerRef$current = _pickerRef$current.inputRef) === null || _pickerRef$current === void 0 || _pickerRef$current.focus();
|
|
70
|
+
}
|
|
71
|
+
}, [status]);
|
|
72
|
+
return /*#__PURE__*/React.createElement(PopupSelect, {
|
|
73
|
+
isMulti: true,
|
|
74
|
+
maxMenuWidth: 300,
|
|
75
|
+
minMenuWidth: 300,
|
|
76
|
+
ref: pickerRef,
|
|
77
|
+
testId: "jlol-basic-filter-popup-select",
|
|
78
|
+
inputId: "jlol-basic-filter-popup-select--input",
|
|
79
|
+
searchThreshold: 0,
|
|
80
|
+
inputValue: searchTerm,
|
|
81
|
+
closeMenuOnSelect: false,
|
|
82
|
+
hideSelectedOptions: false,
|
|
83
|
+
isLoading: status === 'loading',
|
|
84
|
+
placeholder: formatMessage(asyncPopupSelectMessages.selectPlaceholder),
|
|
85
|
+
components: {
|
|
86
|
+
/* @ts-expect-error - This component has stricter OptionType, hence a temp setup untill its made generic */
|
|
87
|
+
Option: CheckboxOption,
|
|
88
|
+
Control: CustomControl
|
|
89
|
+
},
|
|
90
|
+
options: filterOptions,
|
|
91
|
+
value: selectedOptions,
|
|
92
|
+
filterOption: noFilterOptions,
|
|
93
|
+
formatOptionLabel: formatOptionLabel,
|
|
94
|
+
onChange: handleOptionSelection,
|
|
95
|
+
onInputChange: handleInputChange,
|
|
96
|
+
target: function target(_ref3) {
|
|
97
|
+
var isOpen = _ref3.isOpen,
|
|
98
|
+
triggerProps = _objectWithoutProperties(_ref3, _excluded);
|
|
99
|
+
return /*#__PURE__*/React.createElement(PopupTrigger, _extends({}, triggerProps, {
|
|
100
|
+
filterType: filterType,
|
|
101
|
+
isSelected: isOpen,
|
|
102
|
+
onClick: handleOpenPopup
|
|
103
|
+
}));
|
|
104
|
+
},
|
|
105
|
+
footer: /*#__PURE__*/React.createElement(PopupFooter, {
|
|
106
|
+
currentDisplayCount: filterOptions.length,
|
|
107
|
+
totalCount: totalCount
|
|
108
|
+
})
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
export default AsyncPopupSelect;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export var asyncPopupSelectMessages = {
|
|
2
|
+
selectPlaceholder: {
|
|
3
|
+
id: 'linkDataSource.basic-filter.dropdown.select.placeholder',
|
|
4
|
+
description: 'Placeholder text to be displayed for the search input box.',
|
|
5
|
+
defaultMessage: 'Search'
|
|
6
|
+
},
|
|
7
|
+
paginationDetails: {
|
|
8
|
+
id: 'linkDataSource.basic-filter.footer.pagination-details',
|
|
9
|
+
description: 'Text to indicate page count and total count information.',
|
|
10
|
+
defaultMessage: '{currentDisplayCount} of {totalCount}'
|
|
11
|
+
},
|
|
12
|
+
projectLabel: {
|
|
13
|
+
id: 'linkDataSource.basic-filter.project.label',
|
|
14
|
+
description: 'Label to be displayed for project filter dropdown button.',
|
|
15
|
+
defaultMessage: 'Project'
|
|
16
|
+
},
|
|
17
|
+
statusLabel: {
|
|
18
|
+
id: 'linkDataSource.basic-filter.status.label',
|
|
19
|
+
description: 'Label to be displayed for status filter dropdown button.',
|
|
20
|
+
defaultMessage: 'Status'
|
|
21
|
+
},
|
|
22
|
+
issuetypeLabel: {
|
|
23
|
+
id: 'linkDataSource.basic-filter.issuetype.label',
|
|
24
|
+
description: 'Label to be displayed for issuetype filter dropdown button.',
|
|
25
|
+
defaultMessage: 'Type'
|
|
26
|
+
},
|
|
27
|
+
assigneeLabel: {
|
|
28
|
+
id: 'linkDataSource.basic-filter.assignee.label',
|
|
29
|
+
description: 'Label to be displayed for assignee filter dropdown button.',
|
|
30
|
+
defaultMessage: 'Assignee'
|
|
31
|
+
}
|
|
32
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { FormattedMessage } from 'react-intl-next';
|
|
3
|
+
import Button from '@atlaskit/button/standard-button';
|
|
4
|
+
import ChevronDownIcon from '@atlaskit/icon/glyph/chevron-down';
|
|
5
|
+
import { asyncPopupSelectMessages } from './messages';
|
|
6
|
+
var PopupTrigger = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
7
|
+
var filterType = _ref.filterType,
|
|
8
|
+
isSelected = _ref.isSelected,
|
|
9
|
+
onClick = _ref.onClick;
|
|
10
|
+
return /*#__PURE__*/React.createElement(Button, {
|
|
11
|
+
ref: ref,
|
|
12
|
+
appearance: "default",
|
|
13
|
+
isSelected: isSelected,
|
|
14
|
+
onClick: onClick,
|
|
15
|
+
testId: "jlol-basic-filter-".concat(filterType, "-trigger"),
|
|
16
|
+
iconAfter: /*#__PURE__*/React.createElement(ChevronDownIcon, {
|
|
17
|
+
label: ""
|
|
18
|
+
})
|
|
19
|
+
}, /*#__PURE__*/React.createElement(FormattedMessage, asyncPopupSelectMessages["".concat(filterType, "Label")]));
|
|
20
|
+
});
|
|
21
|
+
export default PopupTrigger;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
+
import React, { useEffect, useState } from 'react';
|
|
3
|
+
import { Flex } from '@atlaskit/primitives';
|
|
4
|
+
import { isValidJql } from '../utils';
|
|
5
|
+
import AsyncPopupSelect from './async-popup-select';
|
|
6
|
+
var availableBasicFilterTypes = ['project', 'issuetype', 'status', 'assignee'];
|
|
7
|
+
var BasicFilterContainer = function BasicFilterContainer(_ref) {
|
|
8
|
+
var jql = _ref.jql;
|
|
9
|
+
var _useState = useState([]),
|
|
10
|
+
_useState2 = _slicedToArray(_useState, 1),
|
|
11
|
+
selection = _useState2[0];
|
|
12
|
+
useEffect(function () {
|
|
13
|
+
if (isValidJql(jql)) {
|
|
14
|
+
// hydrate hook call goes in here
|
|
15
|
+
}
|
|
16
|
+
}, [jql]);
|
|
17
|
+
var handleSelectionChange = function handleSelectionChange() {};
|
|
18
|
+
return /*#__PURE__*/React.createElement(Flex, {
|
|
19
|
+
gap: "space.100",
|
|
20
|
+
testId: "jlol-basic-filter-container"
|
|
21
|
+
}, availableBasicFilterTypes.map(function (filter) {
|
|
22
|
+
return /*#__PURE__*/React.createElement(AsyncPopupSelect, {
|
|
23
|
+
filterType: filter,
|
|
24
|
+
key: filter,
|
|
25
|
+
selection: selection,
|
|
26
|
+
onSelectionChange: handleSelectionChange
|
|
27
|
+
});
|
|
28
|
+
}));
|
|
29
|
+
};
|
|
30
|
+
export default BasicFilterContainer;
|
|
@@ -5,10 +5,10 @@ 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
|
+
import { BasicFilters } from '../basic-filters';
|
|
8
9
|
import { BasicSearchInput } from '../basic-search-input';
|
|
9
10
|
import { JiraJQLEditor } from '../jql-editor';
|
|
10
11
|
import { ModeSwitcher } from '../mode-switcher';
|
|
11
|
-
import { BasicFilters } from './basic-filters';
|
|
12
12
|
import { buildJQL } from './buildJQL';
|
|
13
13
|
import { modeSwitcherMessages } from './messages';
|
|
14
14
|
var inputContainerStyles = css({
|
|
@@ -105,7 +105,9 @@ export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
105
105
|
onChange: handleBasicSearchChange,
|
|
106
106
|
onSearch: handleSearch,
|
|
107
107
|
searchTerm: basicSearchTerm
|
|
108
|
-
}), showBasicFilters && jsx(BasicFilters,
|
|
108
|
+
}), showBasicFilters && jsx(BasicFilters, {
|
|
109
|
+
jql: jql
|
|
110
|
+
})), currentSearchMethod === 'jql' && jsx(JiraJQLEditor, {
|
|
109
111
|
cloudId: cloudId || '',
|
|
110
112
|
isSearching: isSearching,
|
|
111
113
|
onChange: onQueryChange,
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BasicFilterFieldType, SelectOption } from '../ui/async-popup-select/types';
|
|
2
|
+
interface FieldValuesProps {
|
|
3
|
+
filterType: BasicFilterFieldType;
|
|
4
|
+
}
|
|
5
|
+
export interface FieldValuesState {
|
|
6
|
+
filterOptions: SelectOption[];
|
|
7
|
+
fetchFilterOptions: () => void;
|
|
8
|
+
totalCount: number;
|
|
9
|
+
status: 'empty' | 'loading' | 'resolved' | 'error';
|
|
10
|
+
}
|
|
11
|
+
export declare const useFieldValues: ({ filterType, }: FieldValuesProps) => FieldValuesState;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ControlProps } from '@atlaskit/select';
|
|
3
|
+
import { SelectOption } from './types';
|
|
4
|
+
export declare const CustomControl: ({ children, ...innerProps }: ControlProps<SelectOption, true>) => JSX.Element;
|
|
5
|
+
export default CustomControl;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BasicFilterFieldType, SelectOption } from './types';
|
|
3
|
+
export interface AsyncPopupSelectProps {
|
|
4
|
+
filterType: BasicFilterFieldType;
|
|
5
|
+
selection: SelectOption[];
|
|
6
|
+
onSelectionChange?: (selection: SelectOption[]) => void;
|
|
7
|
+
}
|
|
8
|
+
declare const AsyncPopupSelect: ({ filterType, selection, onSelectionChange, }: AsyncPopupSelectProps) => JSX.Element;
|
|
9
|
+
export default AsyncPopupSelect;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export declare const asyncPopupSelectMessages: {
|
|
2
|
+
selectPlaceholder: {
|
|
3
|
+
id: string;
|
|
4
|
+
description: string;
|
|
5
|
+
defaultMessage: string;
|
|
6
|
+
};
|
|
7
|
+
paginationDetails: {
|
|
8
|
+
id: string;
|
|
9
|
+
description: string;
|
|
10
|
+
defaultMessage: string;
|
|
11
|
+
};
|
|
12
|
+
projectLabel: {
|
|
13
|
+
id: string;
|
|
14
|
+
description: string;
|
|
15
|
+
defaultMessage: string;
|
|
16
|
+
};
|
|
17
|
+
statusLabel: {
|
|
18
|
+
id: string;
|
|
19
|
+
description: string;
|
|
20
|
+
defaultMessage: string;
|
|
21
|
+
};
|
|
22
|
+
issuetypeLabel: {
|
|
23
|
+
id: string;
|
|
24
|
+
description: string;
|
|
25
|
+
defaultMessage: string;
|
|
26
|
+
};
|
|
27
|
+
assigneeLabel: {
|
|
28
|
+
id: string;
|
|
29
|
+
description: string;
|
|
30
|
+
defaultMessage: string;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { BasicFilterFieldType } from './types';
|
|
3
|
+
export interface PopupTriggerProps {
|
|
4
|
+
filterType: BasicFilterFieldType;
|
|
5
|
+
isSelected?: boolean;
|
|
6
|
+
onClick?: () => void;
|
|
7
|
+
}
|
|
8
|
+
declare const PopupTrigger: React.ForwardRefExoticComponent<PopupTriggerProps & React.RefAttributes<HTMLElement>>;
|
|
9
|
+
export default PopupTrigger;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type BasicFilterFieldType = 'project' | 'assignee' | 'issuetype' | 'status';
|
|
2
|
+
import { ReactElement } from 'react';
|
|
3
|
+
interface OptionBase {
|
|
4
|
+
label: string;
|
|
5
|
+
value: string;
|
|
6
|
+
}
|
|
7
|
+
export type IconLabelOption = OptionBase & {
|
|
8
|
+
optionType: 'iconLabel';
|
|
9
|
+
icon: string;
|
|
10
|
+
};
|
|
11
|
+
export type LozengeLabelOption = OptionBase & {
|
|
12
|
+
optionType: 'lozengeLabel';
|
|
13
|
+
appearance?: 'default' | 'inprogress' | 'moved' | 'new' | 'removed' | 'success';
|
|
14
|
+
isBold?: boolean;
|
|
15
|
+
};
|
|
16
|
+
export type AvatarLabelOption = OptionBase & {
|
|
17
|
+
optionType: 'avatarLabel';
|
|
18
|
+
avatar?: string;
|
|
19
|
+
isSquare?: boolean;
|
|
20
|
+
};
|
|
21
|
+
export type SelectOption = IconLabelOption | LozengeLabelOption | AvatarLabelOption;
|
|
22
|
+
export type FormatOptionLabel = (option: SelectOption) => ReactElement;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isValidJql: (jql: string) => boolean;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BasicFilterFieldType, SelectOption } from '../ui/async-popup-select/types';
|
|
2
|
+
interface FieldValuesProps {
|
|
3
|
+
filterType: BasicFilterFieldType;
|
|
4
|
+
}
|
|
5
|
+
export interface FieldValuesState {
|
|
6
|
+
filterOptions: SelectOption[];
|
|
7
|
+
fetchFilterOptions: () => void;
|
|
8
|
+
totalCount: number;
|
|
9
|
+
status: 'empty' | 'loading' | 'resolved' | 'error';
|
|
10
|
+
}
|
|
11
|
+
export declare const useFieldValues: ({ filterType, }: FieldValuesProps) => FieldValuesState;
|
|
12
|
+
export {};
|
package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/control.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ControlProps } from '@atlaskit/select';
|
|
3
|
+
import { SelectOption } from './types';
|
|
4
|
+
export declare const CustomControl: ({ children, ...innerProps }: ControlProps<SelectOption, true>) => JSX.Element;
|
|
5
|
+
export default CustomControl;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BasicFilterFieldType, SelectOption } from './types';
|
|
3
|
+
export interface AsyncPopupSelectProps {
|
|
4
|
+
filterType: BasicFilterFieldType;
|
|
5
|
+
selection: SelectOption[];
|
|
6
|
+
onSelectionChange?: (selection: SelectOption[]) => void;
|
|
7
|
+
}
|
|
8
|
+
declare const AsyncPopupSelect: ({ filterType, selection, onSelectionChange, }: AsyncPopupSelectProps) => JSX.Element;
|
|
9
|
+
export default AsyncPopupSelect;
|
package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/messages.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export declare const asyncPopupSelectMessages: {
|
|
2
|
+
selectPlaceholder: {
|
|
3
|
+
id: string;
|
|
4
|
+
description: string;
|
|
5
|
+
defaultMessage: string;
|
|
6
|
+
};
|
|
7
|
+
paginationDetails: {
|
|
8
|
+
id: string;
|
|
9
|
+
description: string;
|
|
10
|
+
defaultMessage: string;
|
|
11
|
+
};
|
|
12
|
+
projectLabel: {
|
|
13
|
+
id: string;
|
|
14
|
+
description: string;
|
|
15
|
+
defaultMessage: string;
|
|
16
|
+
};
|
|
17
|
+
statusLabel: {
|
|
18
|
+
id: string;
|
|
19
|
+
description: string;
|
|
20
|
+
defaultMessage: string;
|
|
21
|
+
};
|
|
22
|
+
issuetypeLabel: {
|
|
23
|
+
id: string;
|
|
24
|
+
description: string;
|
|
25
|
+
defaultMessage: string;
|
|
26
|
+
};
|
|
27
|
+
assigneeLabel: {
|
|
28
|
+
id: string;
|
|
29
|
+
description: string;
|
|
30
|
+
defaultMessage: string;
|
|
31
|
+
};
|
|
32
|
+
};
|
package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { BasicFilterFieldType } from './types';
|
|
3
|
+
export interface PopupTriggerProps {
|
|
4
|
+
filterType: BasicFilterFieldType;
|
|
5
|
+
isSelected?: boolean;
|
|
6
|
+
onClick?: () => void;
|
|
7
|
+
}
|
|
8
|
+
declare const PopupTrigger: React.ForwardRefExoticComponent<PopupTriggerProps & React.RefAttributes<HTMLElement>>;
|
|
9
|
+
export default PopupTrigger;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type BasicFilterFieldType = 'project' | 'assignee' | 'issuetype' | 'status';
|
|
2
|
+
import { ReactElement } from 'react';
|
|
3
|
+
interface OptionBase {
|
|
4
|
+
label: string;
|
|
5
|
+
value: string;
|
|
6
|
+
}
|
|
7
|
+
export type IconLabelOption = OptionBase & {
|
|
8
|
+
optionType: 'iconLabel';
|
|
9
|
+
icon: string;
|
|
10
|
+
};
|
|
11
|
+
export type LozengeLabelOption = OptionBase & {
|
|
12
|
+
optionType: 'lozengeLabel';
|
|
13
|
+
appearance?: 'default' | 'inprogress' | 'moved' | 'new' | 'removed' | 'success';
|
|
14
|
+
isBold?: boolean;
|
|
15
|
+
};
|
|
16
|
+
export type AvatarLabelOption = OptionBase & {
|
|
17
|
+
optionType: 'avatarLabel';
|
|
18
|
+
avatar?: string;
|
|
19
|
+
isSquare?: boolean;
|
|
20
|
+
};
|
|
21
|
+
export type SelectOption = IconLabelOption | LozengeLabelOption | AvatarLabelOption;
|
|
22
|
+
export type FormatOptionLabel = (option: SelectOption) => ReactElement;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isValidJql: (jql: string) => boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/link-datasource",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.0",
|
|
4
4
|
"description": "UI Components to support linking platform dataset feature",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"@atlaskit/adf-schema": "^32.0.0",
|
|
34
34
|
"@atlaskit/analytics-next": "^9.1.3",
|
|
35
35
|
"@atlaskit/avatar": "^21.4.0",
|
|
36
|
-
"@atlaskit/button": "^16.
|
|
36
|
+
"@atlaskit/button": "^16.11.0",
|
|
37
37
|
"@atlaskit/editor-prosemirror": "1.1.0",
|
|
38
38
|
"@atlaskit/empty-state": "^7.5.0",
|
|
39
39
|
"@atlaskit/form": "^8.11.0",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"@atlaskit/jql-ast": "^3.0.0",
|
|
45
45
|
"@atlaskit/jql-editor-autocomplete-rest": "^2.0.0",
|
|
46
46
|
"@atlaskit/link-client-extension": "^1.7.0",
|
|
47
|
-
"@atlaskit/linking-common": "^4.
|
|
47
|
+
"@atlaskit/linking-common": "^4.12.0",
|
|
48
48
|
"@atlaskit/linking-types": "^8.4.0",
|
|
49
49
|
"@atlaskit/lozenge": "^11.4.0",
|
|
50
50
|
"@atlaskit/modal-dialog": "^12.8.0",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"@atlaskit/pragmatic-drag-and-drop-hitbox": "^0.11.0",
|
|
54
54
|
"@atlaskit/pragmatic-drag-and-drop-react-beautiful-dnd-autoscroll": "^0.6.0",
|
|
55
55
|
"@atlaskit/pragmatic-drag-and-drop-react-indicator": "^0.16.0",
|
|
56
|
+
"@atlaskit/primitives": "^1.6.7",
|
|
56
57
|
"@atlaskit/select": "^16.7.0",
|
|
57
58
|
"@atlaskit/smart-card": "^26.37.0",
|
|
58
59
|
"@atlaskit/spinner": "^15.6.0",
|
|
@@ -81,7 +82,7 @@
|
|
|
81
82
|
"@af/integration-testing": "*",
|
|
82
83
|
"@af/visual-regression": "*",
|
|
83
84
|
"@atlaskit/link-provider": "^1.6.0",
|
|
84
|
-
"@atlaskit/link-test-helpers": "^6.
|
|
85
|
+
"@atlaskit/link-test-helpers": "^6.2.0",
|
|
85
86
|
"@atlaskit/ssr": "*",
|
|
86
87
|
"@atlaskit/visual-regression": "*",
|
|
87
88
|
"@atlassian/atlassian-frontend-prettier-config-1.0.0": "npm:@atlassian/atlassian-frontend-prettier-config@1.0.0",
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.useBasicFilterHook = void 0;
|
|
7
|
-
var useBasicFilterHook = exports.useBasicFilterHook = function useBasicFilterHook() {
|
|
8
|
-
// TODO: https://product-fabric.atlassian.net/browse/EDM-8118
|
|
9
|
-
var fetchFilterOptions = function fetchFilterOptions() {};
|
|
10
|
-
|
|
11
|
-
// TODO: https://product-fabric.atlassian.net/browse/EDM-8119
|
|
12
|
-
var hydrateFilterValues = function hydrateFilterValues() {};
|
|
13
|
-
return {
|
|
14
|
-
fetchFilterOptions: fetchFilterOptions,
|
|
15
|
-
hydrateFilterValues: hydrateFilterValues
|
|
16
|
-
};
|
|
17
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
var BasicFilterDropdown = function BasicFilterDropdown() {
|
|
10
|
-
// TODO: https://product-fabric.atlassian.net/browse/EDM-8115
|
|
11
|
-
return /*#__PURE__*/_react.default.createElement("div", {
|
|
12
|
-
"data-testid": "jlol-datasource-basic-filter-dropdown"
|
|
13
|
-
});
|
|
14
|
-
};
|
|
15
|
-
var _default = exports.default = BasicFilterDropdown;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
var _dropdown = _interopRequireDefault(require("../../common/dropdown"));
|
|
10
|
-
var ProjectFilterContainer = function ProjectFilterContainer() {
|
|
11
|
-
return /*#__PURE__*/_react.default.createElement(_dropdown.default, null);
|
|
12
|
-
};
|
|
13
|
-
var _default = exports.default = ProjectFilterContainer;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
var _project = _interopRequireDefault(require("./containers/project"));
|
|
10
|
-
var BasicFilterContainer = function BasicFilterContainer() {
|
|
11
|
-
return /*#__PURE__*/_react.default.createElement("div", {
|
|
12
|
-
"data-testid": "jlol-datasource-basic-filter-container"
|
|
13
|
-
}, /*#__PURE__*/_react.default.createElement(_project.default, null));
|
|
14
|
-
};
|
|
15
|
-
var _default = exports.default = BasicFilterContainer;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export const useBasicFilterHook = () => {
|
|
2
|
-
// TODO: https://product-fabric.atlassian.net/browse/EDM-8118
|
|
3
|
-
const fetchFilterOptions = () => {};
|
|
4
|
-
|
|
5
|
-
// TODO: https://product-fabric.atlassian.net/browse/EDM-8119
|
|
6
|
-
const hydrateFilterValues = () => {};
|
|
7
|
-
return {
|
|
8
|
-
fetchFilterOptions,
|
|
9
|
-
hydrateFilterValues
|
|
10
|
-
};
|
|
11
|
-
};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
const BasicFilterDropdown = () => {
|
|
3
|
-
// TODO: https://product-fabric.atlassian.net/browse/EDM-8115
|
|
4
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
5
|
-
"data-testid": "jlol-datasource-basic-filter-dropdown"
|
|
6
|
-
});
|
|
7
|
-
};
|
|
8
|
-
export default BasicFilterDropdown;
|