@atlaskit/link-datasource 1.11.1 → 1.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/analytics/constants.js +1 -1
  3. package/dist/cjs/services/mocks.js +134 -0
  4. package/dist/cjs/services/useBasicFilterAGG.js +119 -0
  5. package/dist/cjs/services/utils.js +8 -0
  6. package/dist/cjs/ui/assets-modal/modal/index.js +2 -2
  7. package/dist/cjs/ui/datasource-table-view/datasourceTableView.js +5 -1
  8. package/dist/cjs/ui/issue-like-table/draggable-table-heading.js +109 -5
  9. package/dist/cjs/ui/issue-like-table/index.js +109 -95
  10. package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/fieldValuesEmptyResponse.js +20 -0
  11. package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/fieldValuesExpectedResponseForAssignees.js +155 -0
  12. package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForProjects.js +82 -0
  13. package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForStatuses.js +87 -0
  14. package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForTypes.js +97 -0
  15. package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlEmptyResponse.js +18 -0
  16. package/dist/cjs/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlStandardResponse.js +111 -0
  17. package/dist/cjs/ui/jira-issues-modal/basic-filters/types.js +15 -0
  18. package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/formatOptionLabel.js +0 -1
  19. package/dist/cjs/ui/jira-issues-modal/basic-filters/utils/transformers.js +97 -0
  20. package/dist/cjs/ui/jira-issues-modal/modal/index.js +16 -5
  21. package/dist/es2019/analytics/constants.js +1 -1
  22. package/dist/es2019/services/mocks.js +128 -0
  23. package/dist/es2019/services/useBasicFilterAGG.js +72 -0
  24. package/dist/es2019/services/utils.js +113 -0
  25. package/dist/es2019/ui/assets-modal/modal/index.js +2 -2
  26. package/dist/es2019/ui/datasource-table-view/datasourceTableView.js +5 -1
  27. package/dist/es2019/ui/issue-like-table/draggable-table-heading.js +113 -5
  28. package/dist/es2019/ui/issue-like-table/index.js +82 -72
  29. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/fieldValuesEmptyResponse.js +14 -0
  30. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/fieldValuesExpectedResponseForAssignees.js +149 -0
  31. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForProjects.js +76 -0
  32. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForStatuses.js +81 -0
  33. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForTypes.js +91 -0
  34. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlEmptyResponse.js +12 -0
  35. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlStandardResponse.js +105 -0
  36. package/dist/es2019/ui/jira-issues-modal/basic-filters/types.js +9 -0
  37. package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/formatOptionLabel.js +0 -1
  38. package/dist/es2019/ui/jira-issues-modal/basic-filters/utils/transformers.js +91 -0
  39. package/dist/es2019/ui/jira-issues-modal/modal/index.js +15 -4
  40. package/dist/esm/analytics/constants.js +1 -1
  41. package/dist/esm/services/mocks.js +128 -0
  42. package/dist/esm/services/useBasicFilterAGG.js +112 -0
  43. package/dist/esm/services/utils.js +2 -0
  44. package/dist/esm/ui/assets-modal/modal/index.js +2 -2
  45. package/dist/esm/ui/datasource-table-view/datasourceTableView.js +5 -1
  46. package/dist/esm/ui/issue-like-table/draggable-table-heading.js +109 -5
  47. package/dist/esm/ui/issue-like-table/index.js +108 -94
  48. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/fieldValuesEmptyResponse.js +14 -0
  49. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/fieldValuesExpectedResponseForAssignees.js +149 -0
  50. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForProjects.js +76 -0
  51. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForStatuses.js +81 -0
  52. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForTypes.js +91 -0
  53. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlEmptyResponse.js +12 -0
  54. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlStandardResponse.js +105 -0
  55. package/dist/esm/ui/jira-issues-modal/basic-filters/types.js +9 -0
  56. package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/formatOptionLabel.js +0 -1
  57. package/dist/esm/ui/jira-issues-modal/basic-filters/utils/transformers.js +89 -0
  58. package/dist/esm/ui/jira-issues-modal/modal/index.js +17 -6
  59. package/dist/types/services/mocks.d.ts +3 -0
  60. package/dist/types/services/useBasicFilterAGG.d.ts +5 -0
  61. package/dist/types/services/utils.d.ts +2 -0
  62. package/dist/types/ui/datasource-table-view/types.d.ts +4 -0
  63. package/dist/types/ui/issue-like-table/draggable-table-heading.d.ts +3 -2
  64. package/dist/types/ui/issue-like-table/index.d.ts +5 -3
  65. package/dist/types/ui/issue-like-table/types.d.ts +5 -0
  66. package/dist/types/ui/jira-issues-modal/basic-filters/hooks/useFieldValues.d.ts +1 -1
  67. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/fieldValuesEmptyResponse.d.ts +3 -0
  68. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/fieldValuesExpectedResponseForAssignees.d.ts +17 -0
  69. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForProjects.d.ts +8 -0
  70. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForStatuses.d.ts +8 -0
  71. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForTypes.d.ts +8 -0
  72. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlEmptyResponse.d.ts +3 -0
  73. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlStandardResponse.d.ts +29 -0
  74. package/dist/types/ui/jira-issues-modal/basic-filters/types.d.ts +93 -0
  75. package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/control.d.ts +1 -1
  76. package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/formatOptionLabel.d.ts +1 -1
  77. package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.d.ts +1 -1
  78. package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.d.ts +1 -1
  79. package/dist/types/ui/jira-issues-modal/basic-filters/utils/transformers.d.ts +8 -0
  80. package/dist/types/ui/jira-issues-modal/jira-search-container/buildJQL.d.ts +1 -1
  81. package/dist/types/ui/jira-issues-modal/types.d.ts +4 -0
  82. package/dist/types-ts4.5/services/mocks.d.ts +3 -0
  83. package/dist/types-ts4.5/services/useBasicFilterAGG.d.ts +5 -0
  84. package/dist/types-ts4.5/services/utils.d.ts +2 -0
  85. package/dist/types-ts4.5/ui/datasource-table-view/types.d.ts +4 -0
  86. package/dist/types-ts4.5/ui/issue-like-table/draggable-table-heading.d.ts +3 -2
  87. package/dist/types-ts4.5/ui/issue-like-table/index.d.ts +5 -3
  88. package/dist/types-ts4.5/ui/issue-like-table/types.d.ts +5 -0
  89. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/hooks/useFieldValues.d.ts +1 -1
  90. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/fieldValuesEmptyResponse.d.ts +3 -0
  91. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/fieldValuesExpectedResponseForAssignees.d.ts +17 -0
  92. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForProjects.d.ts +8 -0
  93. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForStatuses.d.ts +8 -0
  94. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForTypes.d.ts +8 -0
  95. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlEmptyResponse.d.ts +3 -0
  96. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlStandardResponse.d.ts +29 -0
  97. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/types.d.ts +93 -0
  98. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/control.d.ts +1 -1
  99. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/formatOptionLabel.d.ts +1 -1
  100. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.d.ts +1 -1
  101. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.d.ts +1 -1
  102. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/utils/transformers.d.ts +8 -0
  103. package/dist/types-ts4.5/ui/jira-issues-modal/jira-search-container/buildJQL.d.ts +1 -1
  104. package/dist/types-ts4.5/ui/jira-issues-modal/types.d.ts +4 -0
  105. package/examples-helpers/buildIssueLikeTable.tsx +15 -1
  106. package/examples-helpers/buildJiraIssuesTable.tsx +15 -1
  107. package/package.json +6 -6
  108. package/report.api.md +11 -0
  109. package/tmp/api-report-tmp.d.ts +11 -0
  110. package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/types.js +0 -5
  111. package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/types.js +0 -1
  112. package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/types.js +0 -1
  113. package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/types.d.ts +0 -23
  114. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/types.d.ts +0 -23
@@ -37,7 +37,7 @@ var tableHeadStyles = css({
37
37
  top: 0,
38
38
  zIndex: stickyTableHeadersIndex
39
39
  });
40
- var ColumnPickerHeader = styled.th(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: 40px;\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 bellow */\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"])), tableSidePadding, "var(--ds-surface, #FFF)", "var(--ds-background-accent-gray-subtler, ".concat(N40, ")"), "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 bellow */\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-background-accent-gray-subtler, ".concat(N40, ")"), "var(--ds-surface, #FFF)", tableSidePadding);
41
41
  var truncatedCellStyles = css({
42
42
  overflow: 'hidden',
43
43
  textOverflow: 'ellipsis',
@@ -50,6 +50,7 @@ var scrollableContainerStyles = css({
50
50
  borderRadius: "var(--ds-border-radius-100, 3px)"
51
51
  });
52
52
  var tableStyles = css({
53
+ tableLayout: 'fixed',
53
54
  // These styles are needed to prevent thead bottom border from scrolling away.
54
55
  // This happens because it is sticky. https://stackoverflow.com/questions/50361698/border-style-do-not-work-with-sticky-position-element
55
56
  borderCollapse: 'separate',
@@ -66,7 +67,7 @@ function extractIndex(data) {
66
67
  invariant(typeof index === 'number');
67
68
  return index;
68
69
  }
69
- export var orderColumns = function orderColumns(columns, visibleColumnKeys) {
70
+ export var getOrderedColumns = function getOrderedColumns(columns, visibleColumnKeys) {
70
71
  var visibleColumns = columns.filter(function (column) {
71
72
  return visibleColumnKeys.includes(column.key);
72
73
  }).sort(function (a, b) {
@@ -80,25 +81,28 @@ export var orderColumns = function orderColumns(columns, visibleColumnKeys) {
80
81
  return [].concat(_toConsumableArray(visibleColumns), _toConsumableArray(invisibleColumns));
81
82
  };
82
83
  var BASE_WIDTH = 8;
83
- function getColumnWidth(key, type) {
84
- var keyBasedWidth = {
85
- assignee: BASE_WIDTH * 22,
86
- labels: BASE_WIDTH * 22,
87
- priority: BASE_WIDTH * 8,
88
- status: BASE_WIDTH * 18,
89
- summary: BASE_WIDTH * 45,
90
- description: BASE_WIDTH * 31.25
91
- };
92
- if (keyBasedWidth[key]) {
93
- return keyBasedWidth[key];
84
+ var DEFAULT_WIDTH = BASE_WIDTH * 22;
85
+ export var COLUMN_MIN_WIDTH = BASE_WIDTH * 3;
86
+ var keyBasedWidthMap = {
87
+ priority: BASE_WIDTH * 4,
88
+ status: BASE_WIDTH * 18,
89
+ summary: BASE_WIDTH * 45,
90
+ description: BASE_WIDTH * 31.25,
91
+ type: BASE_WIDTH * 4,
92
+ key: BASE_WIDTH * 13
93
+ };
94
+ function getDefaultColumnWidth(key, type) {
95
+ var keyBasedWidth = keyBasedWidthMap[key];
96
+ if (keyBasedWidth) {
97
+ return keyBasedWidth;
94
98
  }
95
99
  switch (type) {
96
100
  case 'date':
97
101
  return BASE_WIDTH * 14;
98
- case 'string':
99
- return BASE_WIDTH * 22;
102
+ case 'icon':
103
+ return BASE_WIDTH * 4;
100
104
  default:
101
- return undefined;
105
+ return DEFAULT_WIDTH;
102
106
  }
103
107
  }
104
108
  export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
@@ -111,6 +115,8 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
111
115
  renderItem = _ref$renderItem === void 0 ? fallbackRenderType : _ref$renderItem,
112
116
  visibleColumnKeys = _ref.visibleColumnKeys,
113
117
  onVisibleColumnKeysChange = _ref.onVisibleColumnKeysChange,
118
+ columnCustomSizes = _ref.columnCustomSizes,
119
+ onColumnResize = _ref.onColumnResize,
114
120
  status = _ref.status,
115
121
  hasNextPage = _ref.hasNextPage,
116
122
  scrollableContainerHeight = _ref.scrollableContainerHeight,
@@ -119,6 +125,7 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
119
125
  var tableId = useMemo(function () {
120
126
  return Symbol('unique-id');
121
127
  }, []);
128
+ var tableHeaderRowRef = useRef(null);
122
129
  var _useState = useState(null),
123
130
  _useState2 = _slicedToArray(_useState, 2),
124
131
  lastRowElement = _useState2[0],
@@ -130,14 +137,14 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
130
137
  var isBottomOfTableVisibleRaw = useIsOnScreen(lastRowElement);
131
138
  var containerRef = useRef(null);
132
139
  var _useState5 = useState(function () {
133
- return orderColumns(_toConsumableArray(columns), _toConsumableArray(visibleColumnKeys));
140
+ return getOrderedColumns(_toConsumableArray(columns), _toConsumableArray(visibleColumnKeys));
134
141
  }),
135
142
  _useState6 = _slicedToArray(_useState5, 2),
136
143
  orderedColumns = _useState6[0],
137
144
  setOrderedColumns = _useState6[1];
138
145
  useEffect(function () {
139
146
  if (!hasFullSchema) {
140
- setOrderedColumns(orderColumns(_toConsumableArray(columns), _toConsumableArray(visibleColumnKeys)));
147
+ setOrderedColumns(getOrderedColumns(_toConsumableArray(columns), _toConsumableArray(visibleColumnKeys)));
141
148
  }
142
149
  }, [columns, visibleColumnKeys, hasFullSchema]);
143
150
  useEffect(function () {
@@ -161,37 +168,37 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
161
168
  // or some other combination.
162
169
 
163
170
  var identityColumnKey = 'id';
164
- var loadingRow = useMemo(function () {
165
- return {
166
- key: 'loading',
167
- cells: visibleSortedColumns.map(function (_ref3) {
168
- var key = _ref3.key;
169
- var content = jsx(Skeleton, {
170
- borderRadius: 8,
171
- width: "100%",
172
- height: 14,
173
- testId: "issues-table-row-loading"
174
- });
175
- return {
176
- key: key,
177
- content: content
178
- };
179
- })
180
- };
181
- }, [visibleSortedColumns]);
182
- var headColumns = useMemo(function () {
183
- return visibleSortedColumns.map(function (_ref4) {
184
- var key = _ref4.key,
185
- title = _ref4.title,
186
- type = _ref4.type;
171
+ var getColumnWidth = useCallback(function (key, type) {
172
+ return (columnCustomSizes === null || columnCustomSizes === void 0 ? void 0 : columnCustomSizes[key]) || getDefaultColumnWidth(key, type);
173
+ }, [columnCustomSizes]);
174
+ var headerColumns = useMemo(function () {
175
+ return visibleSortedColumns.map(function (_ref3) {
176
+ var key = _ref3.key,
177
+ title = _ref3.title,
178
+ type = _ref3.type;
187
179
  return {
188
180
  key: key,
189
181
  content: title,
190
182
  shouldTruncate: true,
191
- maxWidth: getColumnWidth(key, type)
183
+ width: getColumnWidth(key, type)
192
184
  };
193
185
  });
194
- }, [visibleSortedColumns]);
186
+ }, [getColumnWidth, visibleSortedColumns]);
187
+ var loadingRow = useMemo(function () {
188
+ return {
189
+ key: 'loading',
190
+ cells: headerColumns.map(function (column) {
191
+ return _objectSpread(_objectSpread({}, column), {}, {
192
+ content: jsx(Skeleton, {
193
+ borderRadius: 8,
194
+ width: "100%",
195
+ height: 14,
196
+ testId: "issues-table-row-loading"
197
+ })
198
+ });
199
+ })
200
+ };
201
+ }, [headerColumns]);
195
202
  useEffect(function () {
196
203
  if (isBottomOfTableVisibleRaw && hasNextPage && status === 'resolved') {
197
204
  void onNextPage({
@@ -210,33 +217,39 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
210
217
  return;
211
218
  }
212
219
  return combine(monitorForElements({
213
- onDragStart: function onDragStart(_ref5) {
214
- var _containerRef$current;
215
- var location = _ref5.location;
220
+ onDragStart: function onDragStart(_ref4) {
221
+ var location = _ref4.location,
222
+ source = _ref4.source;
216
223
  initialAutoScrollerClientY.current = location.current.input.clientY;
217
- autoScroller.start({
218
- input: _objectSpread(_objectSpread({}, location.current.input), {}, {
219
- clientY:
220
- // The goal is to have clientY the same and in the middle of the scrollable area
221
- // Since clientY is taken from to of the viewport we need to plus that in order to get
222
- // middle of the scrollable area in reference to the viewport
223
- (initialAutoScrollerClientY.current || 0) + (((_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.offsetHeight) || 0) / 2
224
- }),
225
- behavior: 'container-only'
226
- });
224
+ if (source.data.type === 'table-header') {
225
+ var _containerRef$current;
226
+ autoScroller.start({
227
+ input: _objectSpread(_objectSpread({}, location.current.input), {}, {
228
+ clientY:
229
+ // The goal is to have clientY the same and in the middle of the scrollable area
230
+ // Since clientY is taken from to of the viewport we need to plus that in order to get
231
+ // middle of the scrollable area in reference to the viewport
232
+ (initialAutoScrollerClientY.current || 0) + (((_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.offsetHeight) || 0) / 2
233
+ }),
234
+ behavior: 'container-only'
235
+ });
236
+ }
227
237
  },
228
- onDrag: function onDrag(_ref6) {
229
- var _containerRef$current2;
230
- var location = _ref6.location;
231
- autoScroller.updateInput({
232
- input: _objectSpread(_objectSpread({}, location.current.input), {}, {
233
- clientY: (initialAutoScrollerClientY.current || 0) + (((_containerRef$current2 = containerRef.current) === null || _containerRef$current2 === void 0 ? void 0 : _containerRef$current2.offsetHeight) || 0) / 2
234
- })
235
- });
238
+ onDrag: function onDrag(_ref5) {
239
+ var location = _ref5.location,
240
+ source = _ref5.source;
241
+ if (source.data.type === 'table-header') {
242
+ var _containerRef$current2;
243
+ autoScroller.updateInput({
244
+ input: _objectSpread(_objectSpread({}, location.current.input), {}, {
245
+ clientY: (initialAutoScrollerClientY.current || 0) + (((_containerRef$current2 = containerRef.current) === null || _containerRef$current2 === void 0 ? void 0 : _containerRef$current2.offsetHeight) || 0) / 2
246
+ })
247
+ });
248
+ }
236
249
  },
237
- onDrop: function onDrop(_ref7) {
238
- var source = _ref7.source,
239
- location = _ref7.location;
250
+ onDrop: function onDrop(_ref6) {
251
+ var source = _ref6.source,
252
+ location = _ref6.location;
240
253
  autoScroller.stop();
241
254
  if (location.current.dropTargets.length === 0) {
242
255
  return;
@@ -261,7 +274,7 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
261
274
 
262
275
  // We sort columns (whole objects) according to their key order presented in newColumnKeyOrder
263
276
  setOrderedColumns(function (columns) {
264
- return orderColumns(_toConsumableArray(columns), _toConsumableArray(newColumnKeyOrder));
277
+ return getOrderedColumns(_toConsumableArray(columns), _toConsumableArray(newColumnKeyOrder));
265
278
  });
266
279
  }
267
280
  }
@@ -271,10 +284,10 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
271
284
  return items.map(function (newRowData, rowIndex) {
272
285
  return {
273
286
  key: "".concat(identityColumnKey && newRowData[identityColumnKey] && newRowData[identityColumnKey].data || rowIndex),
274
- cells: visibleSortedColumns.map(function (_ref8) {
287
+ cells: visibleSortedColumns.map(function (_ref7) {
275
288
  var _newRowData$key;
276
- var key = _ref8.key,
277
- type = _ref8.type;
289
+ var key = _ref7.key,
290
+ type = _ref7.type;
278
291
  var value = ((_newRowData$key = newRowData[key]) === null || _newRowData$key === void 0 ? void 0 : _newRowData$key.data) || newRowData[key];
279
292
  var values = Array.isArray(value) ? value : [value];
280
293
  var content = values.map(function (value) {
@@ -286,7 +299,7 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
286
299
  return {
287
300
  key: key,
288
301
  content: content.length === 1 ? content[0] : content,
289
- maxWidth: getColumnWidth(key, type)
302
+ width: getColumnWidth(key, type)
290
303
  };
291
304
  }),
292
305
  ref: rowIndex === items.length - 1 ? function (el) {
@@ -294,7 +307,7 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
294
307
  } : undefined
295
308
  };
296
309
  });
297
- }, [identityColumnKey, renderItem, items, visibleSortedColumns]);
310
+ }, [items, visibleSortedColumns, getColumnWidth, renderItem]);
298
311
  var rows = useMemo(function () {
299
312
  if (status !== 'loading') {
300
313
  return tableRows;
@@ -364,10 +377,12 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
364
377
  }, jsx("thead", {
365
378
  "data-testid": testId && "".concat(testId, "--head"),
366
379
  css: [noDefaultBorderStyles, tableHeadStyles]
367
- }, jsx("tr", null, headColumns.map(function (_ref10, cellIndex) {
368
- var key = _ref10.key,
369
- content = _ref10.content,
370
- maxWidth = _ref10.maxWidth;
380
+ }, jsx("tr", {
381
+ ref: tableHeaderRowRef
382
+ }, headerColumns.map(function (_ref9, cellIndex) {
383
+ var key = _ref9.key,
384
+ content = _ref9.content,
385
+ width = _ref9.width;
371
386
  var heading = jsx(Tooltip, {
372
387
  content: content,
373
388
  tag: "span",
@@ -378,10 +393,10 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
378
393
  }, content));
379
394
  if (onVisibleColumnKeysChange && hasData) {
380
395
  var _containerRef$current3;
381
- var previewRows = tableRows.map(function (_ref11) {
382
- var cells = _ref11.cells;
383
- var cell = cells.find(function (_ref12) {
384
- var cellKey = _ref12.key;
396
+ var previewRows = tableRows.map(function (_ref10) {
397
+ var cells = _ref10.cells;
398
+ var cell = cells.find(function (_ref11) {
399
+ var cellKey = _ref11.key;
385
400
  return cellKey === key;
386
401
  });
387
402
  if (cell) {
@@ -397,7 +412,8 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
397
412
  key: key,
398
413
  id: key,
399
414
  index: cellIndex,
400
- maxWidth: maxWidth,
415
+ width: width,
416
+ onWidthChange: onColumnResize === null || onColumnResize === void 0 ? void 0 : onColumnResize.bind(null, key),
401
417
  dndPreviewHeight: ((_containerRef$current3 = containerRef.current) === null || _containerRef$current3 === void 0 ? void 0 : _containerRef$current3.offsetHeight) || 0,
402
418
  dragPreview: dragPreview
403
419
  }, heading);
@@ -406,9 +422,7 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
406
422
  key: key,
407
423
  "data-testid": "".concat(key, "-column-heading"),
408
424
  style: {
409
- // this keeps the column headers from collapsing horizontally during loading states
410
- minWidth: maxWidth,
411
- maxWidth: maxWidth
425
+ width: width
412
426
  }
413
427
  }, heading);
414
428
  }
@@ -421,20 +435,20 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref) {
421
435
  })))), jsx("tbody", {
422
436
  css: noDefaultBorderStyles,
423
437
  "data-testid": testId && "".concat(testId, "--body")
424
- }, rows.map(function (_ref13) {
425
- var key = _ref13.key,
426
- cells = _ref13.cells,
427
- ref = _ref13.ref;
438
+ }, rows.map(function (_ref12) {
439
+ var key = _ref12.key,
440
+ cells = _ref12.cells,
441
+ ref = _ref12.ref;
428
442
  return jsx("tr", {
429
443
  key: key,
430
444
  "data-testid": testId && "".concat(testId, "--row-").concat(key),
431
445
  ref: ref
432
- }, cells.map(function (_ref14, cellIndex) {
433
- var cellKey = _ref14.key,
434
- content = _ref14.content,
435
- maxWidth = _ref14.maxWidth;
446
+ }, cells.map(function (_ref13, cellIndex) {
447
+ var cellKey = _ref13.key,
448
+ content = _ref13.content,
449
+ width = _ref13.width;
436
450
  var loadingRowStyle = {
437
- maxWidth: maxWidth
451
+ width: width
438
452
  };
439
453
  // extra padding is required around skeleton loader to avoid vertical jumps when data loads
440
454
  if (key !== null && key !== void 0 && key.includes('loading')) {
@@ -0,0 +1,14 @@
1
+ export var fieldValuesEmptyResponse = {
2
+ data: {
3
+ jira: {
4
+ jqlBuilder: {
5
+ fieldValues: {
6
+ totalCount: 0,
7
+ pageInfo: {},
8
+ edges: []
9
+ }
10
+ }
11
+ }
12
+ }
13
+ };
14
+ export var fieldValuesEmptyResponseMapped = [];
@@ -0,0 +1,149 @@
1
+ export var 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 var 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 var 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 var 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 var 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 var 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
+ }];