@atlaskit/link-datasource 1.19.7 → 1.19.9
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/assets-modal/modal/index.js +6 -1
- package/dist/cjs/ui/issue-like-table/empty-state/index.js +6 -4
- package/dist/cjs/ui/issue-like-table/index.js +137 -62
- package/dist/cjs/ui/issue-like-table/styled.js +3 -1
- package/dist/cjs/ui/jira-issues-modal/basic-filters/hooks/messages.js +14 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/hooks/useFilterOptions.js +34 -10
- package/dist/cjs/ui/jira-issues-modal/basic-filters/hooks/useHydrateJqlQuery.js +24 -9
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/messages.js +3 -2
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/menu-list/messages.js +3 -2
- package/dist/cjs/ui/jira-issues-modal/basic-filters/utils/extractValuesFromNonComplexJQL.js +11 -3
- package/dist/cjs/ui/jira-issues-modal/modal/index.js +5 -1
- package/dist/cjs/ui/table-footer/index.js +2 -2
- package/dist/es2019/analytics/constants.js +1 -1
- package/dist/es2019/ui/assets-modal/modal/index.js +6 -1
- package/dist/es2019/ui/issue-like-table/empty-state/index.js +6 -4
- package/dist/es2019/ui/issue-like-table/index.js +123 -11
- package/dist/es2019/ui/issue-like-table/styled.js +7 -5
- package/dist/es2019/ui/jira-issues-modal/basic-filters/hooks/messages.js +8 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/hooks/useFilterOptions.js +25 -4
- package/dist/es2019/ui/jira-issues-modal/basic-filters/hooks/useHydrateJqlQuery.js +21 -3
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/messages.js +3 -2
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/menu-list/messages.js +3 -2
- package/dist/es2019/ui/jira-issues-modal/basic-filters/utils/extractValuesFromNonComplexJQL.js +11 -1
- package/dist/es2019/ui/jira-issues-modal/modal/index.js +6 -2
- package/dist/es2019/ui/table-footer/index.js +3 -1
- package/dist/esm/analytics/constants.js +1 -1
- package/dist/esm/ui/assets-modal/modal/index.js +6 -1
- package/dist/esm/ui/issue-like-table/empty-state/index.js +6 -4
- package/dist/esm/ui/issue-like-table/index.js +136 -61
- package/dist/esm/ui/issue-like-table/styled.js +3 -1
- package/dist/esm/ui/jira-issues-modal/basic-filters/hooks/messages.js +8 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/hooks/useFilterOptions.js +33 -9
- package/dist/esm/ui/jira-issues-modal/basic-filters/hooks/useHydrateJqlQuery.js +24 -9
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/messages.js +3 -2
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/menu-list/messages.js +3 -2
- package/dist/esm/ui/jira-issues-modal/basic-filters/utils/extractValuesFromNonComplexJQL.js +11 -3
- package/dist/esm/ui/jira-issues-modal/modal/index.js +6 -2
- package/dist/esm/ui/table-footer/index.js +2 -2
- package/dist/types/ui/issue-like-table/index.d.ts +6 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/hooks/messages.d.ts +7 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/hooks/useFilterOptions.d.ts +3 -1
- package/dist/types-ts4.5/ui/issue-like-table/index.d.ts +6 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/hooks/messages.d.ts +7 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/hooks/useFilterOptions.d.ts +3 -1
- package/package.json +1 -1
|
@@ -32,12 +32,12 @@ import { Table, TableHeading } from './styled';
|
|
|
32
32
|
import { useIsOnScreen } from './useIsOnScreen';
|
|
33
33
|
var tableSidePadding = "var(--ds-space-200, 16px)";
|
|
34
34
|
var tableHeadStyles = css({
|
|
35
|
-
background: "var(--ds-surface, #FFF)",
|
|
35
|
+
background: "var(--ds-elevation-surface-current, #FFF)",
|
|
36
36
|
position: 'sticky',
|
|
37
37
|
top: 0,
|
|
38
38
|
zIndex: stickyTableHeadersIndex
|
|
39
39
|
});
|
|
40
|
-
var ColumnPickerHeader = styled.th(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: 56px;\n z-index: 10;\n position: sticky;\n right: calc(-1 * ", ");\n background-color: ", ";\n border-bottom: 2px solid ", "; /* It is required to have solid (not half-transparent) color because of this gradient business below */\n\n padding-right: ", ";\n\n background: linear-gradient(\n 90deg,\n rgba(255, 255, 255, 0) 0%,\n ", " 10%\n );\n vertical-align: middle; /* Keeps dropdown button in the middle */\n &:last-of-type {\n padding-right: ", ";\n }\n text-align: right; /* In case when TH itself is bigger we want to keep picker at the right side */\n"])), tableSidePadding, "var(--ds-surface, #FFF)", "var(--ds-border, ".concat(N40, ")"), "var(--ds-space-100, 4px)", "var(--ds-surface, #FFF)", tableSidePadding);
|
|
40
|
+
var ColumnPickerHeader = styled.th(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: 56px;\n z-index: 10;\n position: sticky;\n right: calc(-1 * ", ");\n background-color: ", ";\n border-bottom: 2px solid ", "; /* It is required to have solid (not half-transparent) color because of this gradient business below */\n\n padding-right: ", ";\n\n background: linear-gradient(\n 90deg,\n rgba(255, 255, 255, 0) 0%,\n ", " 10%\n );\n vertical-align: middle; /* Keeps dropdown button in the middle */\n &:last-of-type {\n padding-right: ", ";\n }\n text-align: right; /* In case when TH itself is bigger we want to keep picker at the right side */\n"])), tableSidePadding, "var(--ds-elevation-surface-current, #FFF)", "var(--ds-border, ".concat(N40, ")"), "var(--ds-space-100, 4px)", "var(--ds-elevation-surface-current, #FFF)", tableSidePadding);
|
|
41
41
|
var truncatedCellStyles = css({
|
|
42
42
|
overflow: 'hidden',
|
|
43
43
|
textOverflow: 'ellipsis',
|
|
@@ -45,19 +45,94 @@ var truncatedCellStyles = css({
|
|
|
45
45
|
borderRight: "0.5px solid ".concat("var(--ds-border, ".concat(N40, ")")),
|
|
46
46
|
borderBottom: "0.5px solid ".concat("var(--ds-border, ".concat(N40, ")")),
|
|
47
47
|
'&:first-child': {
|
|
48
|
-
paddingLeft: "var(--ds-space-100,
|
|
48
|
+
paddingLeft: "var(--ds-space-100, 8px)"
|
|
49
49
|
},
|
|
50
50
|
'&:last-child': {
|
|
51
51
|
borderRight: 0,
|
|
52
|
-
paddingRight: "var(--ds-space-100,
|
|
52
|
+
paddingRight: "var(--ds-space-100, 8px)"
|
|
53
53
|
}
|
|
54
54
|
});
|
|
55
55
|
var tableContainerStyles = css({
|
|
56
|
-
borderRadius: 'inherit'
|
|
56
|
+
borderRadius: 'inherit',
|
|
57
|
+
borderBottomLeftRadius: 0,
|
|
58
|
+
borderBottomRightRadius: 0
|
|
57
59
|
});
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Following section deals with slight gradient shadows that we add
|
|
63
|
+
* on all four sides when there is more content in that direction.
|
|
64
|
+
*
|
|
65
|
+
* We do that by applying two gradients to the background -
|
|
66
|
+
* one is "static" ('local') and other is "sticky" ('scroll'). \
|
|
67
|
+
* "Static" one makes a white color gradient, that when window is at the end of scrollable area goes on top
|
|
68
|
+
* of "sticky" (gray) one, dominating and hence disabling sticky one.
|
|
69
|
+
*/
|
|
70
|
+
|
|
71
|
+
var shadowColor = "var(--ds-shadow-overflow-perimeter, rgba(0, 0, 0, 0.1))";
|
|
72
|
+
var shadowColorLight = "var(--ds-shadow-overflow-perimeter, rgba(0, 0, 0, 0.05))";
|
|
73
|
+
var leftWhiteOverrideGradient = {
|
|
74
|
+
background: "\n linear-gradient(\n 90deg,\n ".concat("var(--ds-elevation-surface-current, #FFF)", " 30%,\n rgba(255, 255, 255, 0)\n ) left center"),
|
|
75
|
+
size: "40px 100%",
|
|
76
|
+
attachment: "local"
|
|
77
|
+
};
|
|
78
|
+
var topWhiteOverrideGradient = {
|
|
79
|
+
background: "\n linear-gradient(\n 0deg,\n rgba(255, 255, 255, 0),\n ".concat("var(--ds-elevation-surface-current, #FFF)", " 30%\n ) top center"),
|
|
80
|
+
size: "100% 100px",
|
|
81
|
+
attachment: "local"
|
|
82
|
+
};
|
|
83
|
+
var rightWhiteOverrideGradient = {
|
|
84
|
+
background: "\n linear-gradient(\n 90deg,\n rgba(255, 255, 255, 0),\n ".concat("var(--ds-elevation-surface-current, #FFF)", " 70%\n ) right center"),
|
|
85
|
+
size: "40px 100%",
|
|
86
|
+
attachment: "local"
|
|
87
|
+
};
|
|
88
|
+
var bottomWhiteOverride = {
|
|
89
|
+
background: "\n linear-gradient(\n 0deg,\n ".concat("var(--ds-elevation-surface-current, #FFF)", " 30%,\n rgba(255, 255, 255, 0)\n ) bottom center"),
|
|
90
|
+
size: "100% 40px",
|
|
91
|
+
attachment: "local"
|
|
92
|
+
};
|
|
93
|
+
var leftShadowGradient = {
|
|
94
|
+
background: "\n linear-gradient(\n 90deg,\n ".concat(shadowColor, ",\n rgba(0, 0, 0, 0)\n ) left center"),
|
|
95
|
+
size: "14px 100%",
|
|
96
|
+
attachment: "scroll"
|
|
97
|
+
};
|
|
98
|
+
var topShadowGradient = {
|
|
99
|
+
background: "\n linear-gradient(\n 0deg,\n rgba(0, 0, 0, 0),\n ".concat(shadowColorLight, "\n ) 0 52px"),
|
|
100
|
+
size: "100% 14px",
|
|
101
|
+
attachment: "scroll"
|
|
102
|
+
};
|
|
103
|
+
var rightShadowGradient = {
|
|
104
|
+
background: "\n linear-gradient(\n 90deg,\n rgba(0, 0, 0, 0),\n ".concat(shadowColor, "\n ) right center"),
|
|
105
|
+
size: "14px 100%",
|
|
106
|
+
attachment: "scroll"
|
|
107
|
+
};
|
|
108
|
+
var bottomShadowGradient = {
|
|
109
|
+
background: "\n linear-gradient(\n 0deg,\n ".concat(shadowColorLight, ",\n rgba(0, 0, 0, 0)\n ) bottom center"),
|
|
110
|
+
size: "100% 10px",
|
|
111
|
+
attachment: "scroll"
|
|
112
|
+
};
|
|
113
|
+
var shadows = [leftWhiteOverrideGradient, leftShadowGradient, rightWhiteOverrideGradient, rightShadowGradient, topWhiteOverrideGradient, topShadowGradient, bottomWhiteOverride, bottomShadowGradient];
|
|
114
|
+
export var scrollableContainerShadowsCssComponents = {
|
|
115
|
+
background: shadows.map(function (_ref) {
|
|
116
|
+
var background = _ref.background;
|
|
117
|
+
return background;
|
|
118
|
+
}).join(','),
|
|
119
|
+
backgroundRepeat: 'no-repeat',
|
|
120
|
+
backgroundSize: shadows.map(function (_ref2) {
|
|
121
|
+
var size = _ref2.size;
|
|
122
|
+
return size;
|
|
123
|
+
}).join(','),
|
|
124
|
+
backgroundAttachment: shadows.map(function (_ref3) {
|
|
125
|
+
var attachment = _ref3.attachment;
|
|
126
|
+
return attachment;
|
|
127
|
+
}).join(',')
|
|
128
|
+
};
|
|
58
129
|
var scrollableContainerStyles = css({
|
|
59
130
|
overflow: 'auto',
|
|
60
|
-
boxSizing: 'border-box'
|
|
131
|
+
boxSizing: 'border-box',
|
|
132
|
+
background: scrollableContainerShadowsCssComponents.background,
|
|
133
|
+
backgroundRepeat: scrollableContainerShadowsCssComponents.backgroundRepeat,
|
|
134
|
+
backgroundSize: scrollableContainerShadowsCssComponents.backgroundSize,
|
|
135
|
+
backgroundAttachment: scrollableContainerShadowsCssComponents.backgroundAttachment
|
|
61
136
|
});
|
|
62
137
|
var tableStyles = css({
|
|
63
138
|
// These styles are needed to prevent thead bottom border from scrolling away.
|
|
@@ -93,11 +168,11 @@ var BASE_WIDTH = 8;
|
|
|
93
168
|
var DEFAULT_WIDTH = BASE_WIDTH * 22;
|
|
94
169
|
export var COLUMN_MIN_WIDTH = BASE_WIDTH * 3;
|
|
95
170
|
var keyBasedWidthMap = {
|
|
96
|
-
priority: BASE_WIDTH *
|
|
171
|
+
priority: BASE_WIDTH * 5,
|
|
97
172
|
status: BASE_WIDTH * 18,
|
|
98
173
|
summary: BASE_WIDTH * 45,
|
|
99
174
|
description: BASE_WIDTH * 31.25,
|
|
100
|
-
type: BASE_WIDTH *
|
|
175
|
+
type: BASE_WIDTH * 5,
|
|
101
176
|
key: BASE_WIDTH * 13
|
|
102
177
|
};
|
|
103
178
|
function getDefaultColumnWidth(key, type) {
|
|
@@ -109,28 +184,28 @@ function getDefaultColumnWidth(key, type) {
|
|
|
109
184
|
case 'date':
|
|
110
185
|
return BASE_WIDTH * 14;
|
|
111
186
|
case 'icon':
|
|
112
|
-
return BASE_WIDTH *
|
|
187
|
+
return BASE_WIDTH * 5;
|
|
113
188
|
default:
|
|
114
189
|
return DEFAULT_WIDTH;
|
|
115
190
|
}
|
|
116
191
|
}
|
|
117
|
-
export var IssueLikeDataTableView = function IssueLikeDataTableView(
|
|
118
|
-
var testId =
|
|
119
|
-
onNextPage =
|
|
120
|
-
onLoadDatasourceDetails =
|
|
121
|
-
items =
|
|
122
|
-
columns =
|
|
123
|
-
|
|
124
|
-
renderItem =
|
|
125
|
-
visibleColumnKeys =
|
|
126
|
-
onVisibleColumnKeysChange =
|
|
127
|
-
columnCustomSizes =
|
|
128
|
-
onColumnResize =
|
|
129
|
-
status =
|
|
130
|
-
hasNextPage =
|
|
131
|
-
scrollableContainerHeight =
|
|
132
|
-
parentContainerRenderInstanceId =
|
|
133
|
-
extensionKey =
|
|
192
|
+
export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref4) {
|
|
193
|
+
var testId = _ref4.testId,
|
|
194
|
+
onNextPage = _ref4.onNextPage,
|
|
195
|
+
onLoadDatasourceDetails = _ref4.onLoadDatasourceDetails,
|
|
196
|
+
items = _ref4.items,
|
|
197
|
+
columns = _ref4.columns,
|
|
198
|
+
_ref4$renderItem = _ref4.renderItem,
|
|
199
|
+
renderItem = _ref4$renderItem === void 0 ? fallbackRenderType : _ref4$renderItem,
|
|
200
|
+
visibleColumnKeys = _ref4.visibleColumnKeys,
|
|
201
|
+
onVisibleColumnKeysChange = _ref4.onVisibleColumnKeysChange,
|
|
202
|
+
columnCustomSizes = _ref4.columnCustomSizes,
|
|
203
|
+
onColumnResize = _ref4.onColumnResize,
|
|
204
|
+
status = _ref4.status,
|
|
205
|
+
hasNextPage = _ref4.hasNextPage,
|
|
206
|
+
scrollableContainerHeight = _ref4.scrollableContainerHeight,
|
|
207
|
+
parentContainerRenderInstanceId = _ref4.parentContainerRenderInstanceId,
|
|
208
|
+
extensionKey = _ref4.extensionKey;
|
|
134
209
|
var tableId = useMemo(function () {
|
|
135
210
|
return Symbol('unique-id');
|
|
136
211
|
}, []);
|
|
@@ -165,8 +240,8 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
|
|
|
165
240
|
}, [parentContainerRenderInstanceId, status]);
|
|
166
241
|
var visibleSortedColumns = useMemo(function () {
|
|
167
242
|
return visibleColumnKeys.map(function (visibleKey) {
|
|
168
|
-
return orderedColumns.find(function (
|
|
169
|
-
var key =
|
|
243
|
+
return orderedColumns.find(function (_ref5) {
|
|
244
|
+
var key = _ref5.key;
|
|
170
245
|
return visibleKey === key;
|
|
171
246
|
});
|
|
172
247
|
}).filter(Boolean);
|
|
@@ -181,10 +256,10 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
|
|
|
181
256
|
return (columnCustomSizes === null || columnCustomSizes === void 0 ? void 0 : columnCustomSizes[key]) || getDefaultColumnWidth(key, type);
|
|
182
257
|
}, [columnCustomSizes]);
|
|
183
258
|
var headerColumns = useMemo(function () {
|
|
184
|
-
return visibleSortedColumns.map(function (
|
|
185
|
-
var key =
|
|
186
|
-
title =
|
|
187
|
-
type =
|
|
259
|
+
return visibleSortedColumns.map(function (_ref6) {
|
|
260
|
+
var key = _ref6.key,
|
|
261
|
+
title = _ref6.title,
|
|
262
|
+
type = _ref6.type;
|
|
188
263
|
return {
|
|
189
264
|
key: key,
|
|
190
265
|
content: title,
|
|
@@ -226,9 +301,9 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
|
|
|
226
301
|
return;
|
|
227
302
|
}
|
|
228
303
|
return combine(monitorForElements({
|
|
229
|
-
onDragStart: function onDragStart(
|
|
230
|
-
var location =
|
|
231
|
-
source =
|
|
304
|
+
onDragStart: function onDragStart(_ref7) {
|
|
305
|
+
var location = _ref7.location,
|
|
306
|
+
source = _ref7.source;
|
|
232
307
|
initialAutoScrollerClientY.current = location.current.input.clientY;
|
|
233
308
|
if (source.data.type === 'table-header') {
|
|
234
309
|
var _containerRef$current;
|
|
@@ -244,9 +319,9 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
|
|
|
244
319
|
});
|
|
245
320
|
}
|
|
246
321
|
},
|
|
247
|
-
onDrag: function onDrag(
|
|
248
|
-
var location =
|
|
249
|
-
source =
|
|
322
|
+
onDrag: function onDrag(_ref8) {
|
|
323
|
+
var location = _ref8.location,
|
|
324
|
+
source = _ref8.source;
|
|
250
325
|
if (source.data.type === 'table-header') {
|
|
251
326
|
var _containerRef$current2;
|
|
252
327
|
autoScroller.updateInput({
|
|
@@ -256,9 +331,9 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
|
|
|
256
331
|
});
|
|
257
332
|
}
|
|
258
333
|
},
|
|
259
|
-
onDrop: function onDrop(
|
|
260
|
-
var source =
|
|
261
|
-
location =
|
|
334
|
+
onDrop: function onDrop(_ref9) {
|
|
335
|
+
var source = _ref9.source,
|
|
336
|
+
location = _ref9.location;
|
|
262
337
|
autoScroller.stop();
|
|
263
338
|
if (location.current.dropTargets.length === 0) {
|
|
264
339
|
return;
|
|
@@ -293,10 +368,10 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
|
|
|
293
368
|
return items.map(function (newRowData, rowIndex) {
|
|
294
369
|
return {
|
|
295
370
|
key: "".concat(identityColumnKey && newRowData[identityColumnKey] && newRowData[identityColumnKey].data || rowIndex),
|
|
296
|
-
cells: visibleSortedColumns.map(function (
|
|
371
|
+
cells: visibleSortedColumns.map(function (_ref10) {
|
|
297
372
|
var _newRowData$key;
|
|
298
|
-
var key =
|
|
299
|
-
type =
|
|
373
|
+
var key = _ref10.key,
|
|
374
|
+
type = _ref10.type;
|
|
300
375
|
var value = ((_newRowData$key = newRowData[key]) === null || _newRowData$key === void 0 ? void 0 : _newRowData$key.data) || newRowData[key];
|
|
301
376
|
var values = Array.isArray(value) ? value : [value];
|
|
302
377
|
var content = values.map(function (value) {
|
|
@@ -397,10 +472,10 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
|
|
|
397
472
|
css: [noDefaultBorderStyles, tableHeadStyles]
|
|
398
473
|
}, jsx("tr", {
|
|
399
474
|
ref: tableHeaderRowRef
|
|
400
|
-
}, headerColumns.map(function (
|
|
401
|
-
var key =
|
|
402
|
-
content =
|
|
403
|
-
width =
|
|
475
|
+
}, headerColumns.map(function (_ref12, cellIndex) {
|
|
476
|
+
var key = _ref12.key,
|
|
477
|
+
content = _ref12.content,
|
|
478
|
+
width = _ref12.width;
|
|
404
479
|
var heading = jsx(Tooltip, {
|
|
405
480
|
content: content,
|
|
406
481
|
tag: "span",
|
|
@@ -411,10 +486,10 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
|
|
|
411
486
|
}, content));
|
|
412
487
|
if (onVisibleColumnKeysChange && hasData) {
|
|
413
488
|
var _containerRef$current3;
|
|
414
|
-
var previewRows = tableRows.map(function (
|
|
415
|
-
var cells =
|
|
416
|
-
var cell = cells.find(function (
|
|
417
|
-
var cellKey =
|
|
489
|
+
var previewRows = tableRows.map(function (_ref13) {
|
|
490
|
+
var cells = _ref13.cells;
|
|
491
|
+
var cell = cells.find(function (_ref14) {
|
|
492
|
+
var cellKey = _ref14.key;
|
|
418
493
|
return cellKey === key;
|
|
419
494
|
});
|
|
420
495
|
if (cell) {
|
|
@@ -456,18 +531,18 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
|
|
|
456
531
|
})))), jsx("tbody", {
|
|
457
532
|
css: noDefaultBorderStyles,
|
|
458
533
|
"data-testid": testId && "".concat(testId, "--body")
|
|
459
|
-
}, rows.map(function (
|
|
460
|
-
var key =
|
|
461
|
-
cells =
|
|
462
|
-
ref =
|
|
534
|
+
}, rows.map(function (_ref15) {
|
|
535
|
+
var key = _ref15.key,
|
|
536
|
+
cells = _ref15.cells,
|
|
537
|
+
ref = _ref15.ref;
|
|
463
538
|
return jsx("tr", {
|
|
464
539
|
key: key,
|
|
465
540
|
"data-testid": testId && "".concat(testId, "--row-").concat(key),
|
|
466
541
|
ref: ref
|
|
467
|
-
}, cells.map(function (
|
|
468
|
-
var cellKey =
|
|
469
|
-
content =
|
|
470
|
-
width =
|
|
542
|
+
}, cells.map(function (_ref16, cellIndex) {
|
|
543
|
+
var cellKey = _ref16.key,
|
|
544
|
+
content = _ref16.content,
|
|
545
|
+
width = _ref16.width;
|
|
471
546
|
var loadingRowStyle = shouldUseWidth ? {
|
|
472
547
|
width: width
|
|
473
548
|
} : {
|
|
@@ -476,7 +551,7 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
|
|
|
476
551
|
// extra padding is required around skeleton loader to avoid vertical jumps when data loads
|
|
477
552
|
if (key !== null && key !== void 0 && key.includes('loading')) {
|
|
478
553
|
loadingRowStyle = _objectSpread(_objectSpread({}, loadingRowStyle), {}, {
|
|
479
|
-
paddingBlock: "var(--ds-space-100,
|
|
554
|
+
paddingBlock: "var(--ds-space-100, 8px)"
|
|
480
555
|
});
|
|
481
556
|
}
|
|
482
557
|
return jsx("td", {
|
|
@@ -5,4 +5,6 @@ import { N40 } from '@atlaskit/theme/colors';
|
|
|
5
5
|
export var ScrollableContainerHeight = 590;
|
|
6
6
|
export var FieldTextFontSize = '14px';
|
|
7
7
|
export var Table = styled.table(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: 100%;\n"])));
|
|
8
|
-
|
|
8
|
+
var lineHeight = "var(--ds-font-lineHeight-300, 24px)";
|
|
9
|
+
var verticalPadding = "var(--ds-space-025, 2px)";
|
|
10
|
+
export var TableHeading = styled.th(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n position: relative;\n line-height: ", ";\n padding: ", " ", ";\n border-right: 0.5px solid ", ";\n border-bottom: 2px solid ", ";\n height: calc(", " * 2 + ", " * 2);\n vertical-align: bottom;\n\n &.has-column-picker:nth-last-of-type(2) {\n border-right: 0;\n }\n\n &:first-child {\n padding-left: ", ";\n }\n\n &:last-child {\n border-right: 0;\n }\n\n & [data-testid='datasource-header-content--container'] {\n width: 100%;\n padding: ", " ", ";\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n white-space: normal;\n overflow: hidden;\n word-wrap: break-word;\n\n &:hover {\n background: ", ";\n border-radius: 3px;\n }\n }\n"])), lineHeight, verticalPadding, "var(--ds-space-050, 4px)", "var(--ds-border, ".concat(N40, ")"), "var(--ds-border, ".concat(N40, ")"), lineHeight, verticalPadding, "var(--ds-space-050, 4px)", verticalPadding, "var(--ds-space-050, 4px)", "var(--ds-background-input-hovered, #F7F8F9)");
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { defineMessages } from 'react-intl-next';
|
|
2
|
+
export var filterOptionMessages = defineMessages({
|
|
3
|
+
assigneeUnassignedFilterOption: {
|
|
4
|
+
id: 'linkDataSource.basic-filter.dropdown.select.assignee.unassigned',
|
|
5
|
+
description: 'Text to display for Unassigned assignee filter option.',
|
|
6
|
+
defaultMessage: 'Unassigned'
|
|
7
|
+
}
|
|
8
|
+
});
|
|
@@ -3,11 +3,22 @@ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
|
3
3
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
4
4
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
5
5
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
6
|
+
import { useIntl } from 'react-intl-next';
|
|
6
7
|
import { useBasicFilterAGG } from '../../../../services/useBasicFilterAGG';
|
|
7
8
|
import { mapFieldValuesToFilterOptions, mapFieldValuesToPageCursor, mapFieldValuesToTotalCount } from '../utils/transformers';
|
|
9
|
+
import { filterOptionMessages } from './messages';
|
|
10
|
+
export var getAssigneeUnassignedFilterOption = function getAssigneeUnassignedFilterOption(formatMessage) {
|
|
11
|
+
return {
|
|
12
|
+
label: formatMessage(filterOptionMessages.assigneeUnassignedFilterOption),
|
|
13
|
+
optionType: 'avatarLabel',
|
|
14
|
+
value: 'empty'
|
|
15
|
+
};
|
|
16
|
+
};
|
|
8
17
|
export var useFilterOptions = function useFilterOptions(_ref) {
|
|
9
18
|
var filterType = _ref.filterType,
|
|
10
19
|
cloudId = _ref.cloudId;
|
|
20
|
+
var _useIntl = useIntl(),
|
|
21
|
+
formatMessage = _useIntl.formatMessage;
|
|
11
22
|
var _useState = useState([]),
|
|
12
23
|
_useState2 = _slicedToArray(_useState, 2),
|
|
13
24
|
filterOptions = _useState2[0],
|
|
@@ -39,6 +50,8 @@ export var useFilterOptions = function useFilterOptions(_ref) {
|
|
|
39
50
|
isRequestLikeInitialSearch,
|
|
40
51
|
initialResponseData,
|
|
41
52
|
response,
|
|
53
|
+
mappedResponse,
|
|
54
|
+
mappedTotalCount,
|
|
42
55
|
_args = arguments;
|
|
43
56
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
44
57
|
while (1) switch (_context.prev = _context.next) {
|
|
@@ -77,34 +90,45 @@ export var useFilterOptions = function useFilterOptions(_ref) {
|
|
|
77
90
|
setErrors(response.errors);
|
|
78
91
|
return _context.abrupt("return");
|
|
79
92
|
case 18:
|
|
93
|
+
mappedResponse = mapFieldValuesToFilterOptions(response);
|
|
94
|
+
mappedTotalCount = mapFieldValuesToTotalCount(response);
|
|
80
95
|
if (isNewSearch) {
|
|
81
|
-
setFilterOptions(mapFieldValuesToFilterOptions(response));
|
|
82
96
|
if (isRequestLikeInitialSearch) {
|
|
83
97
|
/**
|
|
84
98
|
* The initial dataset is used in couple of paths, eg: when a user searches and clears the search text.
|
|
85
99
|
* During these times, we dont want to fetch data again and again, hence a mini cache setup to store and provide the initial dataset
|
|
86
100
|
*/
|
|
87
101
|
initialData.current = response;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* For assignee filter option, we want `Unassigned` as an option.
|
|
105
|
+
* Since `Unassigned/EMPTY` is not returned by the API, we add it manually, but only for the initial list
|
|
106
|
+
*/
|
|
107
|
+
if (filterType === 'assignee') {
|
|
108
|
+
mappedResponse.unshift(getAssigneeUnassignedFilterOption(formatMessage));
|
|
109
|
+
mappedTotalCount += 1;
|
|
110
|
+
}
|
|
88
111
|
}
|
|
112
|
+
setFilterOptions(mappedResponse);
|
|
89
113
|
} else {
|
|
90
|
-
setFilterOptions([].concat(_toConsumableArray(filterOptions), _toConsumableArray(
|
|
114
|
+
setFilterOptions([].concat(_toConsumableArray(filterOptions), _toConsumableArray(mappedResponse)));
|
|
91
115
|
}
|
|
92
|
-
setTotalCount(
|
|
116
|
+
setTotalCount(mappedTotalCount);
|
|
93
117
|
setNextPageCursor(mapFieldValuesToPageCursor(response));
|
|
94
118
|
setStatus('resolved');
|
|
95
|
-
_context.next =
|
|
119
|
+
_context.next = 30;
|
|
96
120
|
break;
|
|
97
|
-
case
|
|
98
|
-
_context.prev =
|
|
121
|
+
case 26:
|
|
122
|
+
_context.prev = 26;
|
|
99
123
|
_context.t1 = _context["catch"](5);
|
|
100
124
|
setStatus('rejected');
|
|
101
125
|
setErrors([_context.t1]);
|
|
102
|
-
case
|
|
126
|
+
case 30:
|
|
103
127
|
case "end":
|
|
104
128
|
return _context.stop();
|
|
105
129
|
}
|
|
106
|
-
}, _callee, null, [[5,
|
|
107
|
-
})), [cloudId, filterOptions, filterType, getFieldValues]);
|
|
130
|
+
}, _callee, null, [[5, 26]]);
|
|
131
|
+
})), [cloudId, filterOptions, filterType, formatMessage, getFieldValues]);
|
|
108
132
|
useEffect(function () {
|
|
109
133
|
if (status !== 'rejected' && errors.length !== 0) {
|
|
110
134
|
setErrors([]);
|
|
@@ -1,19 +1,27 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
1
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
2
4
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
3
5
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
6
|
+
var _excluded = ["assignee"];
|
|
4
7
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
5
8
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
6
9
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
7
10
|
import { useCallback, useEffect, useState } from 'react';
|
|
11
|
+
import { useIntl } from 'react-intl-next';
|
|
12
|
+
import { OPERAND_EMPTY } from '@atlaskit/jql-ast';
|
|
8
13
|
import { useBasicFilterAGG } from '../../../../services/useBasicFilterAGG';
|
|
9
14
|
import { extractValuesFromNonComplexJQL } from '../utils/extractValuesFromNonComplexJQL';
|
|
10
15
|
import { removeFuzzyCharacter } from '../utils/isClauseTooComplex';
|
|
11
16
|
import { mapHydrateResponseData } from '../utils/transformers';
|
|
17
|
+
import { getAssigneeUnassignedFilterOption } from './useFilterOptions';
|
|
12
18
|
export var useHydrateJqlQuery = function useHydrateJqlQuery(cloudId, jql) {
|
|
13
19
|
var _useState = useState({}),
|
|
14
20
|
_useState2 = _slicedToArray(_useState, 2),
|
|
15
21
|
hydratedOptions = _useState2[0],
|
|
16
22
|
setHydratedOptions = _useState2[1];
|
|
23
|
+
var _useIntl = useIntl(),
|
|
24
|
+
formatMessage = _useIntl.formatMessage;
|
|
17
25
|
var _useState3 = useState('empty'),
|
|
18
26
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
19
27
|
status = _useState4[0],
|
|
@@ -25,7 +33,7 @@ export var useHydrateJqlQuery = function useHydrateJqlQuery(cloudId, jql) {
|
|
|
25
33
|
var _useBasicFilterAGG = useBasicFilterAGG(),
|
|
26
34
|
getHydratedJQL = _useBasicFilterAGG.getHydratedJQL;
|
|
27
35
|
var fetchHydratedJqlOptions = useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
28
|
-
var response, _extractValuesFromNon, text, summary, key, _ref2, _ref3, textFieldValue, mappedValues;
|
|
36
|
+
var response, _mapHydrateResponseDa, mappedHydratedAssigneeValue, restOfMappedHydratedResponse, _extractValuesFromNon, text, summary, key, extractedAssigneeValue, _ref2, _ref3, textFieldValue, mappedValues;
|
|
29
37
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
30
38
|
while (1) switch (_context.prev = _context.next) {
|
|
31
39
|
case 0:
|
|
@@ -43,29 +51,36 @@ export var useHydrateJqlQuery = function useHydrateJqlQuery(cloudId, jql) {
|
|
|
43
51
|
setErrors(response.errors);
|
|
44
52
|
return _context.abrupt("return");
|
|
45
53
|
case 9:
|
|
54
|
+
_mapHydrateResponseDa = mapHydrateResponseData(response), mappedHydratedAssigneeValue = _mapHydrateResponseDa.assignee, restOfMappedHydratedResponse = _objectWithoutProperties(_mapHydrateResponseDa, _excluded);
|
|
46
55
|
/**
|
|
47
56
|
* Hydrate logic does not return text field, hence we parse and extract value from jql
|
|
48
57
|
*/
|
|
49
|
-
_extractValuesFromNon = extractValuesFromNonComplexJQL(jql), text = _extractValuesFromNon.text, summary = _extractValuesFromNon.summary, key = _extractValuesFromNon.key;
|
|
58
|
+
_extractValuesFromNon = extractValuesFromNonComplexJQL(jql), text = _extractValuesFromNon.text, summary = _extractValuesFromNon.summary, key = _extractValuesFromNon.key, extractedAssigneeValue = _extractValuesFromNon.assignee;
|
|
50
59
|
_ref2 = text || summary || key || [], _ref3 = _slicedToArray(_ref2, 1), textFieldValue = _ref3[0];
|
|
51
|
-
mappedValues = _objectSpread(_objectSpread({},
|
|
60
|
+
mappedValues = _objectSpread(_objectSpread({}, restOfMappedHydratedResponse), {}, {
|
|
61
|
+
/**
|
|
62
|
+
* Special handling for assignee as we need to inject Unassigned value if JQL contains EMPTY keyword for assignee
|
|
63
|
+
*/
|
|
64
|
+
assignee: [].concat(_toConsumableArray(mappedHydratedAssigneeValue || []), _toConsumableArray(extractedAssigneeValue !== null && extractedAssigneeValue !== void 0 && extractedAssigneeValue.includes(OPERAND_EMPTY) // checks and adds EMPTY filter option if extracted assignee values from jql contains EMPTY
|
|
65
|
+
? [getAssigneeUnassignedFilterOption(formatMessage)] : []))
|
|
66
|
+
}, textFieldValue ? {
|
|
52
67
|
basicInputTextValue: removeFuzzyCharacter(textFieldValue)
|
|
53
68
|
} : {});
|
|
54
69
|
setHydratedOptions(mappedValues);
|
|
55
70
|
setStatus('resolved');
|
|
56
|
-
_context.next =
|
|
71
|
+
_context.next = 21;
|
|
57
72
|
break;
|
|
58
|
-
case
|
|
59
|
-
_context.prev =
|
|
73
|
+
case 17:
|
|
74
|
+
_context.prev = 17;
|
|
60
75
|
_context.t0 = _context["catch"](0);
|
|
61
76
|
setErrors([_context.t0]);
|
|
62
77
|
setStatus('rejected');
|
|
63
|
-
case
|
|
78
|
+
case 21:
|
|
64
79
|
case "end":
|
|
65
80
|
return _context.stop();
|
|
66
81
|
}
|
|
67
|
-
}, _callee, null, [[0,
|
|
68
|
-
})), [cloudId, getHydratedJQL, jql]);
|
|
82
|
+
}, _callee, null, [[0, 17]]);
|
|
83
|
+
})), [cloudId, formatMessage, getHydratedJQL, jql]);
|
|
69
84
|
useEffect(function () {
|
|
70
85
|
if (status !== 'rejected' && errors.length !== 0) {
|
|
71
86
|
setErrors([]);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import { defineMessages } from 'react-intl-next';
|
|
2
|
+
export var asyncPopupSelectMessages = defineMessages({
|
|
2
3
|
selectPlaceholder: {
|
|
3
4
|
id: 'linkDataSource.basic-filter.dropdown.select.placeholder',
|
|
4
5
|
description: 'Placeholder text to be displayed for the search input box.',
|
|
@@ -34,4 +35,4 @@ export var asyncPopupSelectMessages = {
|
|
|
34
35
|
defaultMessage: 'Show more',
|
|
35
36
|
description: 'The text to show more options in dropdown'
|
|
36
37
|
}
|
|
37
|
-
};
|
|
38
|
+
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import { defineMessages } from 'react-intl-next';
|
|
2
|
+
export var asyncPopupSelectMessages = defineMessages({
|
|
2
3
|
loadingMessage: {
|
|
3
4
|
id: 'linkDataSource.basic-filter.loading-message',
|
|
4
5
|
defaultMessage: 'Loading...',
|
|
@@ -14,4 +15,4 @@ export var asyncPopupSelectMessages = {
|
|
|
14
15
|
defaultMessage: 'Something went wrong',
|
|
15
16
|
description: 'The text for when an error occurs when loading options'
|
|
16
17
|
}
|
|
17
|
-
};
|
|
18
|
+
});
|
|
@@ -14,11 +14,19 @@ import { isQueryTooComplex } from './isQueryTooComplex';
|
|
|
14
14
|
// Map of field keys to their respective clauses in the Jast
|
|
15
15
|
|
|
16
16
|
var getFieldValues = function getFieldValues(operand) {
|
|
17
|
+
var mapValuesFromList = function mapValuesFromList(value) {
|
|
18
|
+
if (value.operandType === OPERAND_TYPE_VALUE) {
|
|
19
|
+
return value.value;
|
|
20
|
+
}
|
|
21
|
+
// we only support EMPTY keyword atm, hence making sure if operandType is a KEYWORD, then its an EMPTY keyword
|
|
22
|
+
if (value.operandType === OPERAND_TYPE_KEYWORD && value.value === OPERAND_EMPTY) {
|
|
23
|
+
return value.value;
|
|
24
|
+
}
|
|
25
|
+
return undefined;
|
|
26
|
+
};
|
|
17
27
|
switch (operand.operandType) {
|
|
18
28
|
case OPERAND_TYPE_LIST:
|
|
19
|
-
return operand.values.map(function (value) {
|
|
20
|
-
return value.operandType === OPERAND_TYPE_VALUE && value.value || undefined;
|
|
21
|
-
}).filter(function (value) {
|
|
29
|
+
return operand.values.map(mapValuesFromList).filter(function (value) {
|
|
22
30
|
return !!value;
|
|
23
31
|
});
|
|
24
32
|
case OPERAND_TYPE_VALUE:
|
|
@@ -29,7 +29,7 @@ import { AccessRequired } from '../../common/error-state/access-required';
|
|
|
29
29
|
import { ModalLoadingError } from '../../common/error-state/modal-loading-error';
|
|
30
30
|
import { NoInstancesView } from '../../common/error-state/no-instances';
|
|
31
31
|
import { NoResults } from '../../common/error-state/no-results';
|
|
32
|
-
import { EmptyState, IssueLikeDataTableView } from '../../issue-like-table';
|
|
32
|
+
import { EmptyState, IssueLikeDataTableView, scrollableContainerShadowsCssComponents } from '../../issue-like-table';
|
|
33
33
|
import LinkRenderType from '../../issue-like-table/render-type/link';
|
|
34
34
|
import { availableBasicFilterTypes } from '../basic-filters/ui';
|
|
35
35
|
import { InitialStateView } from '../initial-state-view';
|
|
@@ -53,7 +53,11 @@ var contentContainerStyles = css({
|
|
|
53
53
|
display: 'grid',
|
|
54
54
|
maxHeight: '420px',
|
|
55
55
|
overflow: 'auto',
|
|
56
|
-
borderBottom: "2px solid ".concat("var(--ds-background-accent-gray-subtler, ".concat(N40, ")"))
|
|
56
|
+
borderBottom: "2px solid ".concat("var(--ds-background-accent-gray-subtler, ".concat(N40, ")")),
|
|
57
|
+
background: scrollableContainerShadowsCssComponents.background,
|
|
58
|
+
backgroundRepeat: scrollableContainerShadowsCssComponents.backgroundRepeat,
|
|
59
|
+
backgroundSize: scrollableContainerShadowsCssComponents.backgroundSize,
|
|
60
|
+
backgroundAttachment: scrollableContainerShadowsCssComponents.backgroundAttachment
|
|
57
61
|
});
|
|
58
62
|
var placeholderSmartLinkStyles = css({
|
|
59
63
|
backgroundColor: "var(--ds-surface-raised, ".concat(N0, ")"),
|
|
@@ -14,8 +14,8 @@ import LinkUrl from '@atlaskit/smart-card/link-url';
|
|
|
14
14
|
import { N0, N40, N800, N90 } from '@atlaskit/theme/colors';
|
|
15
15
|
import { footerMessages } from './messages';
|
|
16
16
|
import { SyncInfo } from './sync-info';
|
|
17
|
-
var FooterWrapper = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding: 0 ", ";\n box-sizing: border-box;\n border-radius: inherit;\n background: ", ";\n"])), "var(--ds-space-200, 16px)", "var(--ds-background-input, ".concat(N0, ")"));
|
|
18
|
-
var TopBorderWrapper = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n box-sizing: border-box;\n justify-content: space-between;\n padding: ", " 0;\n
|
|
17
|
+
var FooterWrapper = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n padding: 0 ", ";\n box-sizing: border-box;\n border-radius: inherit;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n background: ", ";\n border-top: 2px solid ", ";\n"])), "var(--ds-space-200, 16px)", "var(--ds-background-input, ".concat(N0, ")"), "var(--ds-background-accent-gray-subtler, ".concat(N40, ")"));
|
|
18
|
+
var TopBorderWrapper = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n box-sizing: border-box;\n justify-content: space-between;\n padding: ", " 0;\n"])), "var(--ds-space-250, 20px)");
|
|
19
19
|
var ItemCounterWrapper = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n display: flex;\n align-self: center;\n"])));
|
|
20
20
|
var SyncWrapper = styled.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n color: ", ";\n"])), "var(--ds-text-accent-gray, ".concat(N90, ")"));
|
|
21
21
|
var SyncTextWrapper = styled.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n margin-right: 5px;\n font-size: 12px;\n"])));
|
|
@@ -3,6 +3,12 @@ import { Ref } from 'react';
|
|
|
3
3
|
import { jsx } from '@emotion/react';
|
|
4
4
|
import { DatasourceResponseSchemaProperty } from '@atlaskit/linking-types/datasource';
|
|
5
5
|
import { IssueLikeDataTableViewProps } from './types';
|
|
6
|
+
export declare const scrollableContainerShadowsCssComponents: {
|
|
7
|
+
background: string;
|
|
8
|
+
backgroundRepeat: string;
|
|
9
|
+
backgroundSize: string;
|
|
10
|
+
backgroundAttachment: string;
|
|
11
|
+
};
|
|
6
12
|
export interface RowType {
|
|
7
13
|
cells: Array<RowCellType>;
|
|
8
14
|
key?: string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IntlShape } from 'react-intl-next';
|
|
2
|
+
import { AvatarLabelOption, BasicFilterFieldType, SelectOption } from '../types';
|
|
2
3
|
interface FilterOptionsProps {
|
|
3
4
|
filterType: BasicFilterFieldType;
|
|
4
5
|
cloudId: string;
|
|
@@ -16,5 +17,6 @@ export interface FilterOptionsState {
|
|
|
16
17
|
status: 'empty' | 'loading' | 'resolved' | 'rejected' | 'loadingMore';
|
|
17
18
|
errors: unknown[];
|
|
18
19
|
}
|
|
20
|
+
export declare const getAssigneeUnassignedFilterOption: (formatMessage: IntlShape['formatMessage']) => AvatarLabelOption;
|
|
19
21
|
export declare const useFilterOptions: ({ filterType, cloudId, }: FilterOptionsProps) => FilterOptionsState;
|
|
20
22
|
export {};
|