@atlaskit/link-datasource 1.11.0 → 1.12.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 +20 -0
- package/dist/cjs/analytics/constants.js +1 -1
- package/dist/cjs/services/mocks.js +134 -0
- package/dist/cjs/services/useBasicFilterAGG.js +119 -0
- package/dist/cjs/services/utils.js +8 -0
- package/dist/cjs/ui/assets-modal/modal/index.js +2 -2
- package/dist/cjs/ui/datasource-table-view/datasourceTableView.js +5 -1
- package/dist/cjs/ui/issue-like-table/draggable-table-heading.js +109 -5
- package/dist/cjs/ui/issue-like-table/index.js +109 -95
- package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/fieldValuesEmptyResponse.js +20 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/fieldValuesExpectedResponseForAssignees.js +155 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForProjects.js +82 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForStatuses.js +87 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForTypes.js +97 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlEmptyResponse.js +18 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlStandardResponse.js +111 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/types.js +15 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/formatOptionLabel.js +0 -1
- package/dist/cjs/ui/jira-issues-modal/basic-filters/utils/transformers.js +97 -0
- package/dist/cjs/ui/jira-issues-modal/jira-search-container/buildJQL.js +23 -3
- package/dist/cjs/ui/jira-issues-modal/modal/index.js +16 -5
- package/dist/es2019/analytics/constants.js +1 -1
- package/dist/es2019/services/mocks.js +128 -0
- package/dist/es2019/services/useBasicFilterAGG.js +72 -0
- package/dist/es2019/services/utils.js +113 -0
- package/dist/es2019/ui/assets-modal/modal/index.js +2 -2
- package/dist/es2019/ui/datasource-table-view/datasourceTableView.js +5 -1
- package/dist/es2019/ui/issue-like-table/draggable-table-heading.js +113 -5
- package/dist/es2019/ui/issue-like-table/index.js +82 -72
- package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/fieldValuesEmptyResponse.js +14 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/fieldValuesExpectedResponseForAssignees.js +149 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForProjects.js +76 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForStatuses.js +81 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForTypes.js +91 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlEmptyResponse.js +12 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlStandardResponse.js +105 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/types.js +9 -0
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/formatOptionLabel.js +0 -1
- package/dist/es2019/ui/jira-issues-modal/basic-filters/utils/transformers.js +91 -0
- package/dist/es2019/ui/jira-issues-modal/jira-search-container/buildJQL.js +17 -4
- package/dist/es2019/ui/jira-issues-modal/modal/index.js +15 -4
- package/dist/esm/analytics/constants.js +1 -1
- package/dist/esm/services/mocks.js +128 -0
- package/dist/esm/services/useBasicFilterAGG.js +112 -0
- package/dist/esm/services/utils.js +2 -0
- package/dist/esm/ui/assets-modal/modal/index.js +2 -2
- package/dist/esm/ui/datasource-table-view/datasourceTableView.js +5 -1
- package/dist/esm/ui/issue-like-table/draggable-table-heading.js +109 -5
- package/dist/esm/ui/issue-like-table/index.js +108 -94
- package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/fieldValuesEmptyResponse.js +14 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/fieldValuesExpectedResponseForAssignees.js +149 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForProjects.js +76 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForStatuses.js +81 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForTypes.js +91 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlEmptyResponse.js +12 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlStandardResponse.js +105 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/types.js +9 -0
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/formatOptionLabel.js +0 -1
- package/dist/esm/ui/jira-issues-modal/basic-filters/utils/transformers.js +89 -0
- package/dist/esm/ui/jira-issues-modal/jira-search-container/buildJQL.js +23 -4
- package/dist/esm/ui/jira-issues-modal/modal/index.js +17 -6
- package/dist/types/services/mocks.d.ts +3 -0
- package/dist/types/services/useBasicFilterAGG.d.ts +5 -0
- package/dist/types/services/utils.d.ts +2 -0
- package/dist/types/ui/datasource-table-view/types.d.ts +4 -0
- package/dist/types/ui/issue-like-table/draggable-table-heading.d.ts +3 -2
- package/dist/types/ui/issue-like-table/index.d.ts +5 -3
- package/dist/types/ui/issue-like-table/types.d.ts +5 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/hooks/useFieldValues.d.ts +1 -1
- package/dist/types/ui/jira-issues-modal/basic-filters/mocks/fieldValuesEmptyResponse.d.ts +3 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/mocks/fieldValuesExpectedResponseForAssignees.d.ts +17 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForProjects.d.ts +8 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForStatuses.d.ts +8 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForTypes.d.ts +8 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlEmptyResponse.d.ts +3 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlStandardResponse.d.ts +29 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/types.d.ts +93 -0
- package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/control.d.ts +1 -1
- package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/formatOptionLabel.d.ts +1 -1
- package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.d.ts +1 -1
- package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.d.ts +1 -1
- package/dist/types/ui/jira-issues-modal/basic-filters/utils/transformers.d.ts +8 -0
- package/dist/types/ui/jira-issues-modal/jira-search-container/buildJQL.d.ts +4 -0
- package/dist/types/ui/jira-issues-modal/types.d.ts +4 -0
- package/dist/types-ts4.5/services/mocks.d.ts +3 -0
- package/dist/types-ts4.5/services/useBasicFilterAGG.d.ts +5 -0
- package/dist/types-ts4.5/services/utils.d.ts +2 -0
- package/dist/types-ts4.5/ui/datasource-table-view/types.d.ts +4 -0
- package/dist/types-ts4.5/ui/issue-like-table/draggable-table-heading.d.ts +3 -2
- package/dist/types-ts4.5/ui/issue-like-table/index.d.ts +5 -3
- package/dist/types-ts4.5/ui/issue-like-table/types.d.ts +5 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/hooks/useFieldValues.d.ts +1 -1
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/fieldValuesEmptyResponse.d.ts +3 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/fieldValuesExpectedResponseForAssignees.d.ts +17 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForProjects.d.ts +8 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForStatuses.d.ts +8 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForTypes.d.ts +8 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlEmptyResponse.d.ts +3 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlStandardResponse.d.ts +29 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/types.d.ts +93 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/control.d.ts +1 -1
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/formatOptionLabel.d.ts +1 -1
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.d.ts +1 -1
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/utils/transformers.d.ts +8 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/jira-search-container/buildJQL.d.ts +4 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/types.d.ts +4 -0
- package/examples-helpers/buildIssueLikeTable.tsx +15 -1
- package/examples-helpers/buildJiraIssuesTable.tsx +15 -1
- package/package.json +5 -5
- package/report.api.md +11 -0
- package/tmp/api-report-tmp.d.ts +11 -0
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/types.js +0 -5
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/types.js +0 -1
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/types.js +0 -1
- package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/types.d.ts +0 -23
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/types.d.ts +0 -23
|
@@ -29,7 +29,8 @@ const tableHeadStyles = css({
|
|
|
29
29
|
zIndex: stickyTableHeadersIndex
|
|
30
30
|
});
|
|
31
31
|
const ColumnPickerHeader = styled.th`
|
|
32
|
-
width:
|
|
32
|
+
width: 56px;
|
|
33
|
+
z-index: 10;
|
|
33
34
|
position: sticky;
|
|
34
35
|
right: calc(-1 * ${tableSidePadding});
|
|
35
36
|
background-color: ${"var(--ds-surface, #FFF)"};
|
|
@@ -43,6 +44,7 @@ const ColumnPickerHeader = styled.th`
|
|
|
43
44
|
&:last-of-type {
|
|
44
45
|
padding-right: ${tableSidePadding};
|
|
45
46
|
}
|
|
47
|
+
text-align: right; /* In case when TH itself is bigger we want to keep picker at the right side */
|
|
46
48
|
`;
|
|
47
49
|
const truncatedCellStyles = css({
|
|
48
50
|
overflow: 'hidden',
|
|
@@ -56,6 +58,7 @@ const scrollableContainerStyles = css({
|
|
|
56
58
|
borderRadius: "var(--ds-border-radius-100, 3px)"
|
|
57
59
|
});
|
|
58
60
|
const tableStyles = css({
|
|
61
|
+
tableLayout: 'fixed',
|
|
59
62
|
// These styles are needed to prevent thead bottom border from scrolling away.
|
|
60
63
|
// This happens because it is sticky. https://stackoverflow.com/questions/50361698/border-style-do-not-work-with-sticky-position-element
|
|
61
64
|
borderCollapse: 'separate',
|
|
@@ -74,7 +77,7 @@ function extractIndex(data) {
|
|
|
74
77
|
invariant(typeof index === 'number');
|
|
75
78
|
return index;
|
|
76
79
|
}
|
|
77
|
-
export const
|
|
80
|
+
export const getOrderedColumns = (columns, visibleColumnKeys) => {
|
|
78
81
|
const visibleColumns = columns.filter(column => visibleColumnKeys.includes(column.key)).sort((a, b) => {
|
|
79
82
|
const indexB = visibleColumnKeys.indexOf(b.key);
|
|
80
83
|
const indexA = visibleColumnKeys.indexOf(a.key);
|
|
@@ -84,25 +87,28 @@ export const orderColumns = (columns, visibleColumnKeys) => {
|
|
|
84
87
|
return [...visibleColumns, ...invisibleColumns];
|
|
85
88
|
};
|
|
86
89
|
const BASE_WIDTH = 8;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
90
|
+
const DEFAULT_WIDTH = BASE_WIDTH * 22;
|
|
91
|
+
export const COLUMN_MIN_WIDTH = BASE_WIDTH * 3;
|
|
92
|
+
const keyBasedWidthMap = {
|
|
93
|
+
priority: BASE_WIDTH * 4,
|
|
94
|
+
status: BASE_WIDTH * 18,
|
|
95
|
+
summary: BASE_WIDTH * 45,
|
|
96
|
+
description: BASE_WIDTH * 31.25,
|
|
97
|
+
type: BASE_WIDTH * 4,
|
|
98
|
+
key: BASE_WIDTH * 13
|
|
99
|
+
};
|
|
100
|
+
function getDefaultColumnWidth(key, type) {
|
|
101
|
+
const keyBasedWidth = keyBasedWidthMap[key];
|
|
102
|
+
if (keyBasedWidth) {
|
|
103
|
+
return keyBasedWidth;
|
|
98
104
|
}
|
|
99
105
|
switch (type) {
|
|
100
106
|
case 'date':
|
|
101
107
|
return BASE_WIDTH * 14;
|
|
102
|
-
case '
|
|
103
|
-
return BASE_WIDTH *
|
|
108
|
+
case 'icon':
|
|
109
|
+
return BASE_WIDTH * 4;
|
|
104
110
|
default:
|
|
105
|
-
return
|
|
111
|
+
return DEFAULT_WIDTH;
|
|
106
112
|
}
|
|
107
113
|
}
|
|
108
114
|
export const IssueLikeDataTableView = ({
|
|
@@ -114,6 +120,8 @@ export const IssueLikeDataTableView = ({
|
|
|
114
120
|
renderItem = fallbackRenderType,
|
|
115
121
|
visibleColumnKeys,
|
|
116
122
|
onVisibleColumnKeysChange,
|
|
123
|
+
columnCustomSizes,
|
|
124
|
+
onColumnResize,
|
|
117
125
|
status,
|
|
118
126
|
hasNextPage,
|
|
119
127
|
scrollableContainerHeight,
|
|
@@ -121,14 +129,15 @@ export const IssueLikeDataTableView = ({
|
|
|
121
129
|
extensionKey
|
|
122
130
|
}) => {
|
|
123
131
|
const tableId = useMemo(() => Symbol('unique-id'), []);
|
|
132
|
+
const tableHeaderRowRef = useRef(null);
|
|
124
133
|
const [lastRowElement, setLastRowElement] = useState(null);
|
|
125
134
|
const [hasFullSchema, setHasFullSchema] = useState(false);
|
|
126
135
|
const isBottomOfTableVisibleRaw = useIsOnScreen(lastRowElement);
|
|
127
136
|
const containerRef = useRef(null);
|
|
128
|
-
const [orderedColumns, setOrderedColumns] = useState(() =>
|
|
137
|
+
const [orderedColumns, setOrderedColumns] = useState(() => getOrderedColumns([...columns], [...visibleColumnKeys]));
|
|
129
138
|
useEffect(() => {
|
|
130
139
|
if (!hasFullSchema) {
|
|
131
|
-
setOrderedColumns(
|
|
140
|
+
setOrderedColumns(getOrderedColumns([...columns], [...visibleColumnKeys]));
|
|
132
141
|
}
|
|
133
142
|
}, [columns, visibleColumnKeys, hasFullSchema]);
|
|
134
143
|
useEffect(() => {
|
|
@@ -147,24 +156,8 @@ export const IssueLikeDataTableView = ({
|
|
|
147
156
|
// or some other combination.
|
|
148
157
|
|
|
149
158
|
const identityColumnKey = 'id';
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
cells: visibleSortedColumns.map(({
|
|
153
|
-
key
|
|
154
|
-
}) => {
|
|
155
|
-
const content = jsx(Skeleton, {
|
|
156
|
-
borderRadius: 8,
|
|
157
|
-
width: "100%",
|
|
158
|
-
height: 14,
|
|
159
|
-
testId: "issues-table-row-loading"
|
|
160
|
-
});
|
|
161
|
-
return {
|
|
162
|
-
key,
|
|
163
|
-
content
|
|
164
|
-
};
|
|
165
|
-
})
|
|
166
|
-
}), [visibleSortedColumns]);
|
|
167
|
-
const headColumns = useMemo(() => visibleSortedColumns.map(({
|
|
159
|
+
const getColumnWidth = useCallback((key, type) => (columnCustomSizes === null || columnCustomSizes === void 0 ? void 0 : columnCustomSizes[key]) || getDefaultColumnWidth(key, type), [columnCustomSizes]);
|
|
160
|
+
const headerColumns = useMemo(() => visibleSortedColumns.map(({
|
|
168
161
|
key,
|
|
169
162
|
title,
|
|
170
163
|
type
|
|
@@ -172,8 +165,20 @@ export const IssueLikeDataTableView = ({
|
|
|
172
165
|
key,
|
|
173
166
|
content: title,
|
|
174
167
|
shouldTruncate: true,
|
|
175
|
-
|
|
176
|
-
})), [visibleSortedColumns]);
|
|
168
|
+
width: getColumnWidth(key, type)
|
|
169
|
+
})), [getColumnWidth, visibleSortedColumns]);
|
|
170
|
+
const loadingRow = useMemo(() => ({
|
|
171
|
+
key: 'loading',
|
|
172
|
+
cells: headerColumns.map(column => ({
|
|
173
|
+
...column,
|
|
174
|
+
content: jsx(Skeleton, {
|
|
175
|
+
borderRadius: 8,
|
|
176
|
+
width: "100%",
|
|
177
|
+
height: 14,
|
|
178
|
+
testId: "issues-table-row-loading"
|
|
179
|
+
})
|
|
180
|
+
}))
|
|
181
|
+
}), [headerColumns]);
|
|
177
182
|
useEffect(() => {
|
|
178
183
|
if (isBottomOfTableVisibleRaw && hasNextPage && status === 'resolved') {
|
|
179
184
|
void onNextPage({
|
|
@@ -193,32 +198,38 @@ export const IssueLikeDataTableView = ({
|
|
|
193
198
|
}
|
|
194
199
|
return combine(monitorForElements({
|
|
195
200
|
onDragStart: ({
|
|
196
|
-
location
|
|
201
|
+
location,
|
|
202
|
+
source
|
|
197
203
|
}) => {
|
|
198
|
-
var _containerRef$current;
|
|
199
204
|
initialAutoScrollerClientY.current = location.current.input.clientY;
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
205
|
+
if (source.data.type === 'table-header') {
|
|
206
|
+
var _containerRef$current;
|
|
207
|
+
autoScroller.start({
|
|
208
|
+
input: {
|
|
209
|
+
...location.current.input,
|
|
210
|
+
clientY:
|
|
211
|
+
// The goal is to have clientY the same and in the middle of the scrollable area
|
|
212
|
+
// Since clientY is taken from to of the viewport we need to plus that in order to get
|
|
213
|
+
// middle of the scrollable area in reference to the viewport
|
|
214
|
+
(initialAutoScrollerClientY.current || 0) + (((_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.offsetHeight) || 0) / 2
|
|
215
|
+
},
|
|
216
|
+
behavior: 'container-only'
|
|
217
|
+
});
|
|
218
|
+
}
|
|
211
219
|
},
|
|
212
220
|
onDrag: ({
|
|
213
|
-
location
|
|
221
|
+
location,
|
|
222
|
+
source
|
|
214
223
|
}) => {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
224
|
+
if (source.data.type === 'table-header') {
|
|
225
|
+
var _containerRef$current2;
|
|
226
|
+
autoScroller.updateInput({
|
|
227
|
+
input: {
|
|
228
|
+
...location.current.input,
|
|
229
|
+
clientY: (initialAutoScrollerClientY.current || 0) + (((_containerRef$current2 = containerRef.current) === null || _containerRef$current2 === void 0 ? void 0 : _containerRef$current2.offsetHeight) || 0) / 2
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
}
|
|
222
233
|
},
|
|
223
234
|
onDrop({
|
|
224
235
|
source,
|
|
@@ -247,9 +258,7 @@ export const IssueLikeDataTableView = ({
|
|
|
247
258
|
onVisibleColumnKeysChange === null || onVisibleColumnKeysChange === void 0 ? void 0 : onVisibleColumnKeysChange([...newColumnKeyOrder]);
|
|
248
259
|
|
|
249
260
|
// We sort columns (whole objects) according to their key order presented in newColumnKeyOrder
|
|
250
|
-
setOrderedColumns(columns =>
|
|
251
|
-
return orderColumns([...columns], [...newColumnKeyOrder]);
|
|
252
|
-
});
|
|
261
|
+
setOrderedColumns(columns => getOrderedColumns([...columns], [...newColumnKeyOrder]));
|
|
253
262
|
}
|
|
254
263
|
}
|
|
255
264
|
}));
|
|
@@ -270,11 +279,11 @@ export const IssueLikeDataTableView = ({
|
|
|
270
279
|
return {
|
|
271
280
|
key,
|
|
272
281
|
content: content.length === 1 ? content[0] : content,
|
|
273
|
-
|
|
282
|
+
width: getColumnWidth(key, type)
|
|
274
283
|
};
|
|
275
284
|
}),
|
|
276
285
|
ref: rowIndex === items.length - 1 ? el => setLastRowElement(el) : undefined
|
|
277
|
-
})), [
|
|
286
|
+
})), [items, visibleSortedColumns, getColumnWidth, renderItem]);
|
|
278
287
|
const rows = useMemo(() => {
|
|
279
288
|
if (status !== 'loading') {
|
|
280
289
|
return tableRows;
|
|
@@ -328,10 +337,12 @@ export const IssueLikeDataTableView = ({
|
|
|
328
337
|
}, jsx("thead", {
|
|
329
338
|
"data-testid": testId && `${testId}--head`,
|
|
330
339
|
css: [noDefaultBorderStyles, tableHeadStyles]
|
|
331
|
-
}, jsx("tr",
|
|
340
|
+
}, jsx("tr", {
|
|
341
|
+
ref: tableHeaderRowRef
|
|
342
|
+
}, headerColumns.map(({
|
|
332
343
|
key,
|
|
333
344
|
content,
|
|
334
|
-
|
|
345
|
+
width
|
|
335
346
|
}, cellIndex) => {
|
|
336
347
|
const heading = jsx(Tooltip, {
|
|
337
348
|
content: content,
|
|
@@ -362,7 +373,8 @@ export const IssueLikeDataTableView = ({
|
|
|
362
373
|
key: key,
|
|
363
374
|
id: key,
|
|
364
375
|
index: cellIndex,
|
|
365
|
-
|
|
376
|
+
width: width,
|
|
377
|
+
onWidthChange: onColumnResize === null || onColumnResize === void 0 ? void 0 : onColumnResize.bind(null, key),
|
|
366
378
|
dndPreviewHeight: ((_containerRef$current3 = containerRef.current) === null || _containerRef$current3 === void 0 ? void 0 : _containerRef$current3.offsetHeight) || 0,
|
|
367
379
|
dragPreview: dragPreview
|
|
368
380
|
}, heading);
|
|
@@ -371,9 +383,7 @@ export const IssueLikeDataTableView = ({
|
|
|
371
383
|
key: key,
|
|
372
384
|
"data-testid": `${key}-column-heading`,
|
|
373
385
|
style: {
|
|
374
|
-
|
|
375
|
-
minWidth: maxWidth,
|
|
376
|
-
maxWidth
|
|
386
|
+
width
|
|
377
387
|
}
|
|
378
388
|
}, heading);
|
|
379
389
|
}
|
|
@@ -397,10 +407,10 @@ export const IssueLikeDataTableView = ({
|
|
|
397
407
|
}, cells.map(({
|
|
398
408
|
key: cellKey,
|
|
399
409
|
content,
|
|
400
|
-
|
|
410
|
+
width
|
|
401
411
|
}, cellIndex) => {
|
|
402
412
|
let loadingRowStyle = {
|
|
403
|
-
|
|
413
|
+
width
|
|
404
414
|
};
|
|
405
415
|
// extra padding is required around skeleton loader to avoid vertical jumps when data loads
|
|
406
416
|
if (key !== null && key !== void 0 && key.includes('loading')) {
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
export const fieldValuesResponseForAssignees = {
|
|
2
|
+
data: {
|
|
3
|
+
jira: {
|
|
4
|
+
jqlBuilder: {
|
|
5
|
+
fieldValues: {
|
|
6
|
+
totalCount: 21,
|
|
7
|
+
pageInfo: {
|
|
8
|
+
endCursor: 'YXJyYXljb25uZWN0aW9uOjk='
|
|
9
|
+
},
|
|
10
|
+
edges: [{
|
|
11
|
+
node: {
|
|
12
|
+
jqlTerm: 'membersOf(administrators)',
|
|
13
|
+
displayName: 'administrators',
|
|
14
|
+
group: {
|
|
15
|
+
name: 'administrators'
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}, {
|
|
19
|
+
node: {
|
|
20
|
+
jqlTerm: '62df272c3aaeedcae755c533',
|
|
21
|
+
displayName: 'Atlas for Jira (staging)',
|
|
22
|
+
user: {
|
|
23
|
+
picture: 'https://secure.gravatar.com/avatar/1c65adef3d88d3eb97507f4952523df0?d=https%3A%2F%2Favatar-management--avatars.us-west-2.staging.public.atl-paas.net%2Fdefault-avatar-2.png'
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}, {
|
|
27
|
+
node: {
|
|
28
|
+
jqlTerm: 'membersOf(atlassian-addons-admin)',
|
|
29
|
+
displayName: 'atlassian-addons-admin',
|
|
30
|
+
group: {
|
|
31
|
+
name: 'atlassian-addons-admin'
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}, {
|
|
35
|
+
node: {
|
|
36
|
+
jqlTerm: 'membersOf(confluence-admins-nmccormick2)',
|
|
37
|
+
displayName: 'confluence-admins-nmccormick2',
|
|
38
|
+
group: {
|
|
39
|
+
name: 'confluence-admins-nmccormick2'
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}, {
|
|
43
|
+
node: {
|
|
44
|
+
jqlTerm: 'membersOf(confluence-guests-nmccormick2)',
|
|
45
|
+
displayName: 'confluence-guests-nmccormick2',
|
|
46
|
+
group: {
|
|
47
|
+
name: 'confluence-guests-nmccormick2'
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}, {
|
|
51
|
+
node: {
|
|
52
|
+
jqlTerm: 'membersOf(confluence-user-access-admins-nmccormick2)',
|
|
53
|
+
displayName: 'confluence-user-access-admins-nmccormick2',
|
|
54
|
+
group: {
|
|
55
|
+
name: 'confluence-user-access-admins-nmccormick2'
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}, {
|
|
59
|
+
node: {
|
|
60
|
+
jqlTerm: 'membersOf(confluence-users-nmccormick2)',
|
|
61
|
+
displayName: 'confluence-users-nmccormick2',
|
|
62
|
+
group: {
|
|
63
|
+
name: 'confluence-users-nmccormick2'
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}, {
|
|
67
|
+
node: {
|
|
68
|
+
jqlTerm: '63d708e8c3eb74ad8e949fef',
|
|
69
|
+
displayName: 'eu-test',
|
|
70
|
+
user: {
|
|
71
|
+
picture: 'https://secure.gravatar.com/avatar/587a67c5b8494943560a3a24ada6408d?d=https%3A%2F%2Favatar-management--avatars.us-west-2.staging.public.atl-paas.net%2Finitials%2FE-4.png'
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}, {
|
|
75
|
+
node: {
|
|
76
|
+
jqlTerm: '5d959053ede9300dd30c304d',
|
|
77
|
+
displayName: 'GitLab for Jira (gitlab.com)',
|
|
78
|
+
user: {
|
|
79
|
+
picture: 'https://secure.gravatar.com/avatar/38baf1356a59e6822365c81b245ba811?d=https%3A%2F%2Favatar-management--avatars.us-west-2.staging.public.atl-paas.net%2Fdefault-avatar-5.png'
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}, {
|
|
83
|
+
node: {
|
|
84
|
+
jqlTerm: 'membersOf(jira-admins-nmccormick2)',
|
|
85
|
+
displayName: 'jira-admins-nmccormick2',
|
|
86
|
+
group: {
|
|
87
|
+
name: 'jira-admins-nmccormick2'
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}]
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
export const fieldValuesResponseForAssigneesMapped = [{
|
|
97
|
+
isGroup: true,
|
|
98
|
+
label: 'administrators',
|
|
99
|
+
optionType: 'avatarLabel',
|
|
100
|
+
value: 'membersOf(administrators)'
|
|
101
|
+
}, {
|
|
102
|
+
avatar: 'https://secure.gravatar.com/avatar/1c65adef3d88d3eb97507f4952523df0?d=https%3A%2F%2Favatar-management--avatars.us-west-2.staging.public.atl-paas.net%2Fdefault-avatar-2.png',
|
|
103
|
+
isSquare: true,
|
|
104
|
+
label: 'Atlas for Jira (staging)',
|
|
105
|
+
optionType: 'avatarLabel',
|
|
106
|
+
value: '62df272c3aaeedcae755c533'
|
|
107
|
+
}, {
|
|
108
|
+
isGroup: true,
|
|
109
|
+
label: 'atlassian-addons-admin',
|
|
110
|
+
optionType: 'avatarLabel',
|
|
111
|
+
value: 'membersOf(atlassian-addons-admin)'
|
|
112
|
+
}, {
|
|
113
|
+
isGroup: true,
|
|
114
|
+
label: 'confluence-admins-nmccormick2',
|
|
115
|
+
optionType: 'avatarLabel',
|
|
116
|
+
value: 'membersOf(confluence-admins-nmccormick2)'
|
|
117
|
+
}, {
|
|
118
|
+
isGroup: true,
|
|
119
|
+
label: 'confluence-guests-nmccormick2',
|
|
120
|
+
optionType: 'avatarLabel',
|
|
121
|
+
value: 'membersOf(confluence-guests-nmccormick2)'
|
|
122
|
+
}, {
|
|
123
|
+
isGroup: true,
|
|
124
|
+
label: 'confluence-user-access-admins-nmccormick2',
|
|
125
|
+
optionType: 'avatarLabel',
|
|
126
|
+
value: 'membersOf(confluence-user-access-admins-nmccormick2)'
|
|
127
|
+
}, {
|
|
128
|
+
isGroup: true,
|
|
129
|
+
label: 'confluence-users-nmccormick2',
|
|
130
|
+
optionType: 'avatarLabel',
|
|
131
|
+
value: 'membersOf(confluence-users-nmccormick2)'
|
|
132
|
+
}, {
|
|
133
|
+
avatar: 'https://secure.gravatar.com/avatar/587a67c5b8494943560a3a24ada6408d?d=https%3A%2F%2Favatar-management--avatars.us-west-2.staging.public.atl-paas.net%2Finitials%2FE-4.png',
|
|
134
|
+
isSquare: true,
|
|
135
|
+
label: 'eu-test',
|
|
136
|
+
optionType: 'avatarLabel',
|
|
137
|
+
value: '63d708e8c3eb74ad8e949fef'
|
|
138
|
+
}, {
|
|
139
|
+
avatar: 'https://secure.gravatar.com/avatar/38baf1356a59e6822365c81b245ba811?d=https%3A%2F%2Favatar-management--avatars.us-west-2.staging.public.atl-paas.net%2Fdefault-avatar-5.png',
|
|
140
|
+
isSquare: true,
|
|
141
|
+
label: 'GitLab for Jira (gitlab.com)',
|
|
142
|
+
optionType: 'avatarLabel',
|
|
143
|
+
value: '5d959053ede9300dd30c304d'
|
|
144
|
+
}, {
|
|
145
|
+
isGroup: true,
|
|
146
|
+
label: 'jira-admins-nmccormick2',
|
|
147
|
+
optionType: 'avatarLabel',
|
|
148
|
+
value: 'membersOf(jira-admins-nmccormick2)'
|
|
149
|
+
}];
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export const fieldValuesResponseForProjects = {
|
|
2
|
+
data: {
|
|
3
|
+
jira: {
|
|
4
|
+
jqlBuilder: {
|
|
5
|
+
fieldValues: {
|
|
6
|
+
totalCount: 4,
|
|
7
|
+
pageInfo: {
|
|
8
|
+
endCursor: 'YXJyYXljb25uZWN0aW9uOjM='
|
|
9
|
+
},
|
|
10
|
+
edges: [{
|
|
11
|
+
node: {
|
|
12
|
+
jqlTerm: '"My IT TEST"',
|
|
13
|
+
displayName: 'My IT TEST',
|
|
14
|
+
project: {
|
|
15
|
+
avatar: {
|
|
16
|
+
small: 'https://nmccormick2.jira-dev.com/rest/api/2/universal_avatar/view/type/project/avatar/10403?size=small'
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}, {
|
|
21
|
+
node: {
|
|
22
|
+
jqlTerm: 'Test',
|
|
23
|
+
displayName: 'Test',
|
|
24
|
+
project: {
|
|
25
|
+
avatar: {
|
|
26
|
+
small: 'https://nmccormick2.jira-dev.com/rest/api/2/universal_avatar/view/type/project/avatar/10411?size=small'
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}, {
|
|
31
|
+
node: {
|
|
32
|
+
jqlTerm: '"Test rights"',
|
|
33
|
+
displayName: 'Test rights',
|
|
34
|
+
project: {
|
|
35
|
+
avatar: {
|
|
36
|
+
small: 'https://nmccormick2.jira-dev.com/rest/api/2/universal_avatar/view/type/project/avatar/10405?size=small'
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}, {
|
|
41
|
+
node: {
|
|
42
|
+
jqlTerm: 'Test2',
|
|
43
|
+
displayName: 'Test2',
|
|
44
|
+
project: {
|
|
45
|
+
avatar: {
|
|
46
|
+
small: 'https://nmccormick2.jira-dev.com/rest/api/2/universal_avatar/view/type/project/avatar/10410?size=small'
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
export const fieldValuesResponseForProjectsMapped = [{
|
|
57
|
+
icon: 'https://nmccormick2.jira-dev.com/rest/api/2/universal_avatar/view/type/project/avatar/10403?size=small',
|
|
58
|
+
label: 'My IT TEST',
|
|
59
|
+
optionType: 'iconLabel',
|
|
60
|
+
value: '"My IT TEST"'
|
|
61
|
+
}, {
|
|
62
|
+
icon: 'https://nmccormick2.jira-dev.com/rest/api/2/universal_avatar/view/type/project/avatar/10411?size=small',
|
|
63
|
+
label: 'Test',
|
|
64
|
+
optionType: 'iconLabel',
|
|
65
|
+
value: 'Test'
|
|
66
|
+
}, {
|
|
67
|
+
icon: 'https://nmccormick2.jira-dev.com/rest/api/2/universal_avatar/view/type/project/avatar/10405?size=small',
|
|
68
|
+
label: 'Test rights',
|
|
69
|
+
optionType: 'iconLabel',
|
|
70
|
+
value: '"Test rights"'
|
|
71
|
+
}, {
|
|
72
|
+
icon: 'https://nmccormick2.jira-dev.com/rest/api/2/universal_avatar/view/type/project/avatar/10410?size=small',
|
|
73
|
+
label: 'Test2',
|
|
74
|
+
optionType: 'iconLabel',
|
|
75
|
+
value: 'Test2'
|
|
76
|
+
}];
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
export const fieldValuesResponseForStatuses = {
|
|
2
|
+
data: {
|
|
3
|
+
jira: {
|
|
4
|
+
jqlBuilder: {
|
|
5
|
+
fieldValues: {
|
|
6
|
+
totalCount: 27,
|
|
7
|
+
pageInfo: {
|
|
8
|
+
endCursor: 'YXJyYXljb25uZWN0aW9uOjQ='
|
|
9
|
+
},
|
|
10
|
+
edges: [{
|
|
11
|
+
node: {
|
|
12
|
+
jqlTerm: 'Authorize',
|
|
13
|
+
displayName: 'Authorize',
|
|
14
|
+
statusCategory: {
|
|
15
|
+
colorName: 'YELLOW'
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}, {
|
|
19
|
+
node: {
|
|
20
|
+
jqlTerm: '"Awaiting approval"',
|
|
21
|
+
displayName: 'Awaiting approval',
|
|
22
|
+
statusCategory: {
|
|
23
|
+
colorName: 'YELLOW'
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}, {
|
|
27
|
+
node: {
|
|
28
|
+
jqlTerm: '"Awaiting implementation"',
|
|
29
|
+
displayName: 'Awaiting implementation',
|
|
30
|
+
statusCategory: {
|
|
31
|
+
colorName: 'YELLOW'
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}, {
|
|
35
|
+
node: {
|
|
36
|
+
jqlTerm: 'Canceled',
|
|
37
|
+
displayName: 'Canceled',
|
|
38
|
+
statusCategory: {
|
|
39
|
+
colorName: 'GREEN'
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}, {
|
|
43
|
+
node: {
|
|
44
|
+
jqlTerm: 'Closed',
|
|
45
|
+
displayName: 'Closed',
|
|
46
|
+
statusCategory: {
|
|
47
|
+
colorName: 'GREEN'
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
export const fieldValuesResponseForStatusesMapped = [{
|
|
57
|
+
appearance: 'inprogress',
|
|
58
|
+
label: 'Authorize',
|
|
59
|
+
optionType: 'lozengeLabel',
|
|
60
|
+
value: 'Authorize'
|
|
61
|
+
}, {
|
|
62
|
+
appearance: 'inprogress',
|
|
63
|
+
label: 'Awaiting approval',
|
|
64
|
+
optionType: 'lozengeLabel',
|
|
65
|
+
value: '"Awaiting approval"'
|
|
66
|
+
}, {
|
|
67
|
+
appearance: 'inprogress',
|
|
68
|
+
label: 'Awaiting implementation',
|
|
69
|
+
optionType: 'lozengeLabel',
|
|
70
|
+
value: '"Awaiting implementation"'
|
|
71
|
+
}, {
|
|
72
|
+
appearance: 'success',
|
|
73
|
+
label: 'Canceled',
|
|
74
|
+
optionType: 'lozengeLabel',
|
|
75
|
+
value: 'Canceled'
|
|
76
|
+
}, {
|
|
77
|
+
appearance: 'success',
|
|
78
|
+
label: 'Closed',
|
|
79
|
+
optionType: 'lozengeLabel',
|
|
80
|
+
value: 'Closed'
|
|
81
|
+
}];
|