@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.
Files changed (117) 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/jira-search-container/buildJQL.js +23 -3
  21. package/dist/cjs/ui/jira-issues-modal/modal/index.js +16 -5
  22. package/dist/es2019/analytics/constants.js +1 -1
  23. package/dist/es2019/services/mocks.js +128 -0
  24. package/dist/es2019/services/useBasicFilterAGG.js +72 -0
  25. package/dist/es2019/services/utils.js +113 -0
  26. package/dist/es2019/ui/assets-modal/modal/index.js +2 -2
  27. package/dist/es2019/ui/datasource-table-view/datasourceTableView.js +5 -1
  28. package/dist/es2019/ui/issue-like-table/draggable-table-heading.js +113 -5
  29. package/dist/es2019/ui/issue-like-table/index.js +82 -72
  30. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/fieldValuesEmptyResponse.js +14 -0
  31. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/fieldValuesExpectedResponseForAssignees.js +149 -0
  32. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForProjects.js +76 -0
  33. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForStatuses.js +81 -0
  34. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForTypes.js +91 -0
  35. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlEmptyResponse.js +12 -0
  36. package/dist/es2019/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlStandardResponse.js +105 -0
  37. package/dist/es2019/ui/jira-issues-modal/basic-filters/types.js +9 -0
  38. package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/formatOptionLabel.js +0 -1
  39. package/dist/es2019/ui/jira-issues-modal/basic-filters/utils/transformers.js +91 -0
  40. package/dist/es2019/ui/jira-issues-modal/jira-search-container/buildJQL.js +17 -4
  41. package/dist/es2019/ui/jira-issues-modal/modal/index.js +15 -4
  42. package/dist/esm/analytics/constants.js +1 -1
  43. package/dist/esm/services/mocks.js +128 -0
  44. package/dist/esm/services/useBasicFilterAGG.js +112 -0
  45. package/dist/esm/services/utils.js +2 -0
  46. package/dist/esm/ui/assets-modal/modal/index.js +2 -2
  47. package/dist/esm/ui/datasource-table-view/datasourceTableView.js +5 -1
  48. package/dist/esm/ui/issue-like-table/draggable-table-heading.js +109 -5
  49. package/dist/esm/ui/issue-like-table/index.js +108 -94
  50. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/fieldValuesEmptyResponse.js +14 -0
  51. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/fieldValuesExpectedResponseForAssignees.js +149 -0
  52. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForProjects.js +76 -0
  53. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForStatuses.js +81 -0
  54. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForTypes.js +91 -0
  55. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlEmptyResponse.js +12 -0
  56. package/dist/esm/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlStandardResponse.js +105 -0
  57. package/dist/esm/ui/jira-issues-modal/basic-filters/types.js +9 -0
  58. package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/formatOptionLabel.js +0 -1
  59. package/dist/esm/ui/jira-issues-modal/basic-filters/utils/transformers.js +89 -0
  60. package/dist/esm/ui/jira-issues-modal/jira-search-container/buildJQL.js +23 -4
  61. package/dist/esm/ui/jira-issues-modal/modal/index.js +17 -6
  62. package/dist/types/services/mocks.d.ts +3 -0
  63. package/dist/types/services/useBasicFilterAGG.d.ts +5 -0
  64. package/dist/types/services/utils.d.ts +2 -0
  65. package/dist/types/ui/datasource-table-view/types.d.ts +4 -0
  66. package/dist/types/ui/issue-like-table/draggable-table-heading.d.ts +3 -2
  67. package/dist/types/ui/issue-like-table/index.d.ts +5 -3
  68. package/dist/types/ui/issue-like-table/types.d.ts +5 -0
  69. package/dist/types/ui/jira-issues-modal/basic-filters/hooks/useFieldValues.d.ts +1 -1
  70. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/fieldValuesEmptyResponse.d.ts +3 -0
  71. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/fieldValuesExpectedResponseForAssignees.d.ts +17 -0
  72. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForProjects.d.ts +8 -0
  73. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForStatuses.d.ts +8 -0
  74. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForTypes.d.ts +8 -0
  75. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlEmptyResponse.d.ts +3 -0
  76. package/dist/types/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlStandardResponse.d.ts +29 -0
  77. package/dist/types/ui/jira-issues-modal/basic-filters/types.d.ts +93 -0
  78. package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/control.d.ts +1 -1
  79. package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/formatOptionLabel.d.ts +1 -1
  80. package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.d.ts +1 -1
  81. package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.d.ts +1 -1
  82. package/dist/types/ui/jira-issues-modal/basic-filters/utils/transformers.d.ts +8 -0
  83. package/dist/types/ui/jira-issues-modal/jira-search-container/buildJQL.d.ts +4 -0
  84. package/dist/types/ui/jira-issues-modal/types.d.ts +4 -0
  85. package/dist/types-ts4.5/services/mocks.d.ts +3 -0
  86. package/dist/types-ts4.5/services/useBasicFilterAGG.d.ts +5 -0
  87. package/dist/types-ts4.5/services/utils.d.ts +2 -0
  88. package/dist/types-ts4.5/ui/datasource-table-view/types.d.ts +4 -0
  89. package/dist/types-ts4.5/ui/issue-like-table/draggable-table-heading.d.ts +3 -2
  90. package/dist/types-ts4.5/ui/issue-like-table/index.d.ts +5 -3
  91. package/dist/types-ts4.5/ui/issue-like-table/types.d.ts +5 -0
  92. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/hooks/useFieldValues.d.ts +1 -1
  93. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/fieldValuesEmptyResponse.d.ts +3 -0
  94. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/fieldValuesExpectedResponseForAssignees.d.ts +17 -0
  95. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForProjects.d.ts +8 -0
  96. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForStatuses.d.ts +8 -0
  97. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/fieldValuesStandardResponseForTypes.d.ts +8 -0
  98. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlEmptyResponse.d.ts +3 -0
  99. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/mocks/hydrateJqlStandardResponse.d.ts +29 -0
  100. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/types.d.ts +93 -0
  101. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/control.d.ts +1 -1
  102. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/formatOptionLabel.d.ts +1 -1
  103. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.d.ts +1 -1
  104. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.d.ts +1 -1
  105. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/utils/transformers.d.ts +8 -0
  106. package/dist/types-ts4.5/ui/jira-issues-modal/jira-search-container/buildJQL.d.ts +4 -0
  107. package/dist/types-ts4.5/ui/jira-issues-modal/types.d.ts +4 -0
  108. package/examples-helpers/buildIssueLikeTable.tsx +15 -1
  109. package/examples-helpers/buildJiraIssuesTable.tsx +15 -1
  110. package/package.json +5 -5
  111. package/report.api.md +11 -0
  112. package/tmp/api-report-tmp.d.ts +11 -0
  113. package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/types.js +0 -5
  114. package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/types.js +0 -1
  115. package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/types.js +0 -1
  116. package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/types.d.ts +0 -23
  117. package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/types.d.ts +0 -23
@@ -0,0 +1,91 @@
1
+ export const fieldValuesResponseForTypes = {
2
+ data: {
3
+ jira: {
4
+ jqlBuilder: {
5
+ fieldValues: {
6
+ totalCount: 12,
7
+ pageInfo: {
8
+ endCursor: 'YXJyYXljb25uZWN0aW9uOjQ='
9
+ },
10
+ edges: [{
11
+ node: {
12
+ jqlTerm: '"[System] Change"',
13
+ displayName: '[System] Change',
14
+ issueTypes: [{
15
+ avatar: {
16
+ small: '/rest/api/2/universal_avatar/view/type/issuetype/avatar/10555?size=medium'
17
+ }
18
+ }]
19
+ }
20
+ }, {
21
+ node: {
22
+ jqlTerm: '"[System] Incident"',
23
+ displayName: '[System] Incident',
24
+ issueTypes: [{
25
+ avatar: {
26
+ small: '/rest/api/2/universal_avatar/view/type/issuetype/avatar/10551?size=medium'
27
+ }
28
+ }]
29
+ }
30
+ }, {
31
+ node: {
32
+ jqlTerm: '"[System] Post-incident review"',
33
+ displayName: '[System] Post-incident review',
34
+ issueTypes: [{
35
+ avatar: {
36
+ small: '/rest/api/2/universal_avatar/view/type/issuetype/avatar/10552?size=medium'
37
+ }
38
+ }]
39
+ }
40
+ }, {
41
+ node: {
42
+ jqlTerm: '"[System] Problem"',
43
+ displayName: '[System] Problem',
44
+ issueTypes: [{
45
+ avatar: {
46
+ small: '/rest/api/2/universal_avatar/view/type/issuetype/avatar/10556?size=medium'
47
+ }
48
+ }]
49
+ }
50
+ }, {
51
+ node: {
52
+ jqlTerm: '"[System] Service request"',
53
+ displayName: '[System] Service request',
54
+ issueTypes: [{
55
+ avatar: {
56
+ small: '/rest/api/2/universal_avatar/view/type/issuetype/avatar/10553?size=medium'
57
+ }
58
+ }]
59
+ }
60
+ }]
61
+ }
62
+ }
63
+ }
64
+ }
65
+ };
66
+ export const fieldValuesResponseForTypesMapped = [{
67
+ icon: '/rest/api/2/universal_avatar/view/type/issuetype/avatar/10555?size=medium',
68
+ label: '[System] Change',
69
+ optionType: 'iconLabel',
70
+ value: '"[System] Change"'
71
+ }, {
72
+ icon: '/rest/api/2/universal_avatar/view/type/issuetype/avatar/10551?size=medium',
73
+ label: '[System] Incident',
74
+ optionType: 'iconLabel',
75
+ value: '"[System] Incident"'
76
+ }, {
77
+ icon: '/rest/api/2/universal_avatar/view/type/issuetype/avatar/10552?size=medium',
78
+ label: '[System] Post-incident review',
79
+ optionType: 'iconLabel',
80
+ value: '"[System] Post-incident review"'
81
+ }, {
82
+ icon: '/rest/api/2/universal_avatar/view/type/issuetype/avatar/10556?size=medium',
83
+ label: '[System] Problem',
84
+ optionType: 'iconLabel',
85
+ value: '"[System] Problem"'
86
+ }, {
87
+ icon: '/rest/api/2/universal_avatar/view/type/issuetype/avatar/10553?size=medium',
88
+ label: '[System] Service request',
89
+ optionType: 'iconLabel',
90
+ value: '"[System] Service request"'
91
+ }];
@@ -0,0 +1,12 @@
1
+ export const hydrateJqlEmptyResponse = {
2
+ data: {
3
+ jira: {
4
+ jqlBuilder: {
5
+ hydrateJqlQuery: {
6
+ fields: []
7
+ }
8
+ }
9
+ }
10
+ }
11
+ };
12
+ export const hydrateJqlEmptyResponseMapped = {};
@@ -0,0 +1,105 @@
1
+ export const hydrateJqlStandardResponse = {
2
+ data: {
3
+ jira: {
4
+ jqlBuilder: {
5
+ hydrateJqlQuery: {
6
+ fields: [{
7
+ jqlTerm: 'issuetype',
8
+ values: [{
9
+ values: [{
10
+ displayName: 'Category',
11
+ jqlTerm: 'Category',
12
+ issueTypes: [{
13
+ avatar: {
14
+ small: '/rest/api/2/universal_avatar/view/type/issuetype/avatar/16627?size=medium'
15
+ }
16
+ }]
17
+ }]
18
+ }, {
19
+ values: [{
20
+ displayName: '!disturbed',
21
+ jqlTerm: '"!disturbed"',
22
+ issueTypes: [{
23
+ avatar: {
24
+ small: '/rest/api/2/universal_avatar/view/type/issuetype/avatar/16640?size=medium'
25
+ }
26
+ }, {
27
+ avatar: {
28
+ small: '/rest/api/2/universal_avatar/view/type/issuetype/avatar/16628?size=medium'
29
+ }
30
+ }]
31
+ }]
32
+ }]
33
+ }, {
34
+ jqlTerm: 'project',
35
+ values: [{
36
+ values: [{
37
+ displayName: '(Deprecated) Koopa Troopas',
38
+ jqlTerm: '"(Deprecated) Koopa Troopas"',
39
+ project: {
40
+ avatar: {
41
+ small: 'https://hello.atlassian.net/rest/api/2/universal_avatar/view/type/project/avatar/36328?size=small'
42
+ }
43
+ }
44
+ }]
45
+ }]
46
+ }, {
47
+ jqlTerm: 'assignee',
48
+ values: [{
49
+ values: [{
50
+ displayName: 'Nidhin Joseph',
51
+ jqlTerm: '70121:97052100-1513-42bc-a2f0-d77e71f0b7eb',
52
+ user: {
53
+ picture: 'https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/70121:97052100-1513-42bc-a2f0-d77e71f0b7eb/3d737224-7e8f-4e0c-888c-d5ff6044d484/128'
54
+ }
55
+ }]
56
+ }]
57
+ }, {
58
+ jqlTerm: 'status',
59
+ values: [{
60
+ values: [{
61
+ displayName: 'Done',
62
+ jqlTerm: 'Done',
63
+ statusCategory: {
64
+ colorName: 'GREEN'
65
+ }
66
+ }]
67
+ }]
68
+ }]
69
+ }
70
+ }
71
+ }
72
+ }
73
+ };
74
+ export const hydrateJqlStandardResponseMapped = {
75
+ issuetype: [{
76
+ icon: '/rest/api/2/universal_avatar/view/type/issuetype/avatar/16627?size=medium',
77
+ label: 'Category',
78
+ optionType: 'iconLabel',
79
+ value: 'Category'
80
+ }, {
81
+ icon: '/rest/api/2/universal_avatar/view/type/issuetype/avatar/16640?size=medium',
82
+ label: '!disturbed',
83
+ optionType: 'iconLabel',
84
+ value: '"!disturbed"'
85
+ }],
86
+ project: [{
87
+ icon: 'https://hello.atlassian.net/rest/api/2/universal_avatar/view/type/project/avatar/36328?size=small',
88
+ label: '(Deprecated) Koopa Troopas',
89
+ optionType: 'iconLabel',
90
+ value: '"(Deprecated) Koopa Troopas"'
91
+ }],
92
+ assignee: [{
93
+ avatar: 'https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/70121:97052100-1513-42bc-a2f0-d77e71f0b7eb/3d737224-7e8f-4e0c-888c-d5ff6044d484/128',
94
+ isSquare: true,
95
+ label: 'Nidhin Joseph',
96
+ optionType: 'avatarLabel',
97
+ value: '70121:97052100-1513-42bc-a2f0-d77e71f0b7eb'
98
+ }],
99
+ status: [{
100
+ appearance: 'success',
101
+ label: 'Done',
102
+ optionType: 'lozengeLabel',
103
+ value: 'Done'
104
+ }]
105
+ };
@@ -0,0 +1,9 @@
1
+ // these types have been taken from jira-frontend to ensure the colour data return gets mapped correctly for the lozenge
2
+ export const appearanceMap = {
3
+ BLUE_GRAY: 'default',
4
+ MEDIUM_GRAY: 'default',
5
+ BROWN: 'default',
6
+ GREEN: 'success',
7
+ YELLOW: 'inprogress',
8
+ WARM_RED: 'removed'
9
+ };
@@ -33,7 +33,6 @@ const LozengeOptionLabel = ({
33
33
  data
34
34
  }) => {
35
35
  return /*#__PURE__*/React.createElement(Lozenge, {
36
- isBold: data.isBold,
37
36
  appearance: data.appearance,
38
37
  testId: "jlol-basic-filter-popup-select-option--lozenge"
39
38
  }, /*#__PURE__*/React.createElement(Box, {
@@ -0,0 +1,91 @@
1
+ import { appearanceMap } from '../types';
2
+ function isNonNullSelectOption(edge) {
3
+ return edge !== null;
4
+ }
5
+ function isColorName(colorName) {
6
+ return Object.keys(appearanceMap).includes(colorName);
7
+ }
8
+ const getLozengeAppearance = colorName => {
9
+ if (isColorName(colorName)) {
10
+ return appearanceMap[colorName];
11
+ }
12
+ };
13
+ function mapNodeToOption({
14
+ displayName,
15
+ jqlTerm,
16
+ group,
17
+ issueTypes,
18
+ project,
19
+ statusCategory,
20
+ user
21
+ }) {
22
+ try {
23
+ const baseProps = {
24
+ label: displayName,
25
+ value: jqlTerm
26
+ };
27
+ if (user) {
28
+ return {
29
+ ...baseProps,
30
+ optionType: 'avatarLabel',
31
+ avatar: user.picture,
32
+ isSquare: true
33
+ };
34
+ }
35
+ if (group) {
36
+ return {
37
+ ...baseProps,
38
+ optionType: 'avatarLabel',
39
+ isGroup: true
40
+ };
41
+ }
42
+ if (project) {
43
+ var _project$avatar;
44
+ return {
45
+ ...baseProps,
46
+ optionType: 'iconLabel',
47
+ icon: (_project$avatar = project.avatar) === null || _project$avatar === void 0 ? void 0 : _project$avatar.small
48
+ };
49
+ }
50
+ if (issueTypes) {
51
+ var _issueTypes$;
52
+ return {
53
+ ...baseProps,
54
+ optionType: 'iconLabel',
55
+ icon: (_issueTypes$ = issueTypes[0]) === null || _issueTypes$ === void 0 ? void 0 : _issueTypes$.avatar.small
56
+ };
57
+ }
58
+ if (statusCategory) {
59
+ return {
60
+ ...baseProps,
61
+ optionType: 'lozengeLabel',
62
+ appearance: getLozengeAppearance(statusCategory.colorName)
63
+ };
64
+ }
65
+ return null;
66
+ } catch (error) {
67
+ return null;
68
+ }
69
+ }
70
+ export function mapHydrateResponseData({
71
+ data
72
+ }) {
73
+ var _data$jira, _data$jira$jqlBuilder, _data$jira$jqlBuilder2, _data$jira$jqlBuilder3;
74
+ const transformedHydrateResponseData = {};
75
+ data === null || data === void 0 ? void 0 : (_data$jira = data.jira) === null || _data$jira === void 0 ? void 0 : (_data$jira$jqlBuilder = _data$jira.jqlBuilder) === null || _data$jira$jqlBuilder === void 0 ? void 0 : (_data$jira$jqlBuilder2 = _data$jira$jqlBuilder.hydrateJqlQuery) === null || _data$jira$jqlBuilder2 === void 0 ? void 0 : (_data$jira$jqlBuilder3 = _data$jira$jqlBuilder2.fields) === null || _data$jira$jqlBuilder3 === void 0 ? void 0 : _data$jira$jqlBuilder3.forEach(({
76
+ jqlTerm,
77
+ values = []
78
+ }) => {
79
+ const options = values.map(({
80
+ values
81
+ }) => values && values[0] ? mapNodeToOption(values[0]) : null).filter(isNonNullSelectOption) || [];
82
+ transformedHydrateResponseData[jqlTerm] = options;
83
+ });
84
+ return transformedHydrateResponseData;
85
+ }
86
+ export function mapFieldValuesResponseData({
87
+ data
88
+ }) {
89
+ var _data$jira2, _data$jira2$jqlBuilde, _data$jira2$jqlBuilde2, _data$jira2$jqlBuilde3;
90
+ return (data === null || data === void 0 ? void 0 : (_data$jira2 = data.jira) === null || _data$jira2 === void 0 ? void 0 : (_data$jira2$jqlBuilde = _data$jira2.jqlBuilder) === null || _data$jira2$jqlBuilde === void 0 ? void 0 : (_data$jira2$jqlBuilde2 = _data$jira2$jqlBuilde.fieldValues) === null || _data$jira2$jqlBuilde2 === void 0 ? void 0 : (_data$jira2$jqlBuilde3 = _data$jira2$jqlBuilde2.edges) === null || _data$jira2$jqlBuilde3 === void 0 ? void 0 : _data$jira2$jqlBuilde3.map(edge => edge.node ? mapNodeToOption(edge.node) : null).filter(isNonNullSelectOption)) || [];
91
+ }
@@ -1,4 +1,4 @@
1
- import { COMPOUND_OPERATOR_AND, COMPOUND_OPERATOR_OR, creators, JastBuilder, OPERATOR_EQUALS, OPERATOR_GT_EQUALS, OPERATOR_LIKE, ORDER_BY_DIRECTION_ASC, ORDER_BY_DIRECTION_DESC, print } from '@atlaskit/jql-ast';
1
+ import { COMPOUND_OPERATOR_AND, COMPOUND_OPERATOR_OR, creators, JastBuilder, OPERATOR_EQUALS, OPERATOR_GT_EQUALS, OPERATOR_IN, OPERATOR_LIKE, ORDER_BY_DIRECTION_ASC, ORDER_BY_DIRECTION_DESC, print } from '@atlaskit/jql-ast';
2
2
  const fuzzySearchRegExp = /^"(.+)"$/;
3
3
  const jiraIssueKeyRegExp = /[A-Z]+-\d+/;
4
4
  const constructTerminalClause = (field, operator, value) => creators.terminalClause(creators.field(field), creators.operator(operator), creators.valueOperand(value));
@@ -14,7 +14,8 @@ export const buildJQL = input => {
14
14
  const {
15
15
  rawSearch,
16
16
  orderDirection = ORDER_BY_DIRECTION_DESC,
17
- orderKey = 'created'
17
+ orderKey = 'created',
18
+ filterValues
18
19
  } = input;
19
20
  const trimmedRawSearch = rawSearch.trim();
20
21
  if (!query) {
@@ -32,12 +33,24 @@ export const buildJQL = input => {
32
33
  }
33
34
  const orClause = creators.compoundClause(creators.compoundOperator(COMPOUND_OPERATOR_OR), orClauseFields);
34
35
  query.appendClause(orClause, COMPOUND_OPERATOR_AND);
35
- } else {
36
+ }
37
+ if (filterValues) {
38
+ Object.entries(filterValues).forEach(([key, filterFieldValues]) => {
39
+ if (!key || filterFieldValues.length === 0) {
40
+ return;
41
+ }
42
+ const filterInClause = creators.terminalClause(creators.field(key), creators.operator(OPERATOR_IN), creators.listOperand(filterFieldValues.map(filterFieldValue => creators.valueOperand(filterFieldValue.value))));
43
+ query.appendClause(filterInClause, COMPOUND_OPERATOR_AND);
44
+ });
45
+ }
46
+ if (!trimmedRawSearch) {
36
47
  const created = constructTerminalClause('created', OPERATOR_GT_EQUALS, '-30d');
37
48
  query.appendClause(created, COMPOUND_OPERATOR_AND);
38
49
  }
39
50
  const orderField = creators.orderByField(creators.field(orderKey));
40
51
  query.prependOrderField(orderField);
41
52
  query.setOrderDirection(creators.orderByDirection(orderDirection.toLowerCase() === 'asc' ? ORDER_BY_DIRECTION_ASC : ORDER_BY_DIRECTION_DESC));
42
- return print(jast);
53
+ return print(jast, {
54
+ printWidth: null // this ensures jql string is not broken to new line
55
+ });
43
56
  };
@@ -80,6 +80,7 @@ export const getColumnAction = (oldVisibleColumnKeys, newVisibleColumnKeys) => {
80
80
  export const PlainJiraIssuesConfigModal = props => {
81
81
  const {
82
82
  datasourceId,
83
+ columnCustomSizes: initialColumnCustomSizes,
83
84
  onCancel,
84
85
  onInsert,
85
86
  viewMode = 'issue',
@@ -105,6 +106,13 @@ export const PlainJiraIssuesConfigModal = props => {
105
106
  jql: jql || ''
106
107
  } : undefined, [cloudId, jql]);
107
108
  const isParametersSet = !!(jql && cloudId);
109
+ const [columnCustomSizes, setColumnCustomSizes] = useState(initialColumnCustomSizes);
110
+ const onColumnResize = useCallback((key, width) => {
111
+ setColumnCustomSizes({
112
+ ...columnCustomSizes,
113
+ [key]: width
114
+ });
115
+ }, [columnCustomSizes]);
108
116
  const {
109
117
  reset,
110
118
  status,
@@ -324,7 +332,8 @@ export const PlainJiraIssuesConfigModal = props => {
324
332
  type: 'table',
325
333
  properties: {
326
334
  columns: visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.map(key => ({
327
- key
335
+ key,
336
+ width: columnCustomSizes === null || columnCustomSizes === void 0 ? void 0 : columnCustomSizes[key]
328
337
  }))
329
338
  }
330
339
  }]
@@ -332,7 +341,7 @@ export const PlainJiraIssuesConfigModal = props => {
332
341
  }
333
342
  }, consumerEvent);
334
343
  }
335
- }, [isParametersSet, jql, selectedJiraSite, analyticsPayload, totalCount, visibleColumnKeys, currentViewMode, retrieveUrlForSmartCardRender, responseItems.length, onInsert, jqlUrl, datasourceId, cloudId]);
344
+ }, [isParametersSet, jql, selectedJiraSite, analyticsPayload, totalCount, visibleColumnKeys, currentViewMode, retrieveUrlForSmartCardRender, responseItems.length, onInsert, jqlUrl, datasourceId, cloudId, columnCustomSizes]);
336
345
  const handleViewModeChange = selectedMode => {
337
346
  userInteractionActions.current.add(DatasourceAction.DISPLAY_VIEW_CHANGED);
338
347
  setCurrentViewMode(selectedMode);
@@ -360,8 +369,10 @@ export const PlainJiraIssuesConfigModal = props => {
360
369
  onLoadDatasourceDetails: loadDatasourceDetails,
361
370
  onVisibleColumnKeysChange: handleVisibleColumnKeysChange,
362
371
  parentContainerRenderInstanceId: modalRenderInstanceId,
363
- extensionKey: extensionKey
364
- })), [columns, defaultVisibleColumnKeys, handleOnNextPage, handleVisibleColumnKeysChange, hasNextPage, loadDatasourceDetails, modalRenderInstanceId, responseItems, status, visibleColumnKeys, extensionKey]);
372
+ extensionKey: extensionKey,
373
+ columnCustomSizes: columnCustomSizes,
374
+ onColumnResize: onColumnResize
375
+ })), [columns, defaultVisibleColumnKeys, handleOnNextPage, handleVisibleColumnKeysChange, hasNextPage, loadDatasourceDetails, modalRenderInstanceId, responseItems, status, visibleColumnKeys, extensionKey, columnCustomSizes, onColumnResize]);
365
376
  const renderCountModeContent = useCallback(() => {
366
377
  const selectedJiraSiteUrl = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
367
378
  if (status === 'unauthorized') {
@@ -1,5 +1,5 @@
1
1
  export var EVENT_CHANNEL = 'media';
2
2
  export var packageMetaData = {
3
3
  packageName: "@atlaskit/link-datasource",
4
- packageVersion: "1.11.0"
4
+ packageVersion: "1.12.0"
5
5
  };
@@ -0,0 +1,128 @@
1
+ export var mockHydrateJqlResponse = {
2
+ data: {
3
+ jira: {
4
+ jqlBuilder: {
5
+ hydrateJqlQuery: {
6
+ fields: [{
7
+ jqlTerm: 'issuetype',
8
+ values: [{
9
+ values: [{
10
+ displayName: 'Category',
11
+ jqlTerm: 'Category',
12
+ issueTypes: [{
13
+ avatar: {
14
+ small: '/rest/api/2/universal_avatar/view/type/issuetype/avatar/16627?size=medium'
15
+ }
16
+ }]
17
+ }]
18
+ }, {
19
+ values: [{
20
+ displayName: '!disturbed',
21
+ jqlTerm: '"!disturbed"',
22
+ issueTypes: [{
23
+ avatar: {
24
+ small: '/rest/api/2/universal_avatar/view/type/issuetype/avatar/16640?size=medium'
25
+ }
26
+ }, {
27
+ avatar: {
28
+ small: '/rest/api/2/universal_avatar/view/type/issuetype/avatar/16628?size=medium'
29
+ }
30
+ }]
31
+ }]
32
+ }]
33
+ }, {
34
+ jqlTerm: 'project',
35
+ values: [{
36
+ values: [{
37
+ displayName: '(Deprecated) Koopa Troopas',
38
+ jqlTerm: '"(Deprecated) Koopa Troopas"',
39
+ project: {
40
+ avatar: {
41
+ small: 'https://hello.atlassian.net/rest/api/2/universal_avatar/view/type/project/avatar/36328?size=small'
42
+ }
43
+ }
44
+ }]
45
+ }]
46
+ }, {
47
+ jqlTerm: 'assignee',
48
+ values: [{
49
+ values: [{
50
+ displayName: 'Nidhin Joseph',
51
+ jqlTerm: '70121:97052100-1513-42bc-a2f0-d77e71f0b7eb',
52
+ user: {
53
+ picture: 'https://avatar-management--avatars.us-west-2.prod.public.atl-paas.net/70121:97052100-1513-42bc-a2f0-d77e71f0b7eb/3d737224-7e8f-4e0c-888c-d5ff6044d484/128'
54
+ }
55
+ }]
56
+ }]
57
+ }, {
58
+ jqlTerm: 'status',
59
+ values: [{
60
+ values: [{
61
+ displayName: 'Done',
62
+ jqlTerm: 'Done',
63
+ statusCategory: {
64
+ colorName: 'GREEN'
65
+ }
66
+ }]
67
+ }]
68
+ }]
69
+ }
70
+ }
71
+ }
72
+ }
73
+ };
74
+ export var mockFieldValuesResponse = {
75
+ data: {
76
+ jira: {
77
+ jqlBuilder: {
78
+ fieldValues: {
79
+ totalCount: 4,
80
+ pageInfo: {
81
+ endCursor: 'YXJyYXljb25uZWN0aW9uOjM='
82
+ },
83
+ edges: [{
84
+ node: {
85
+ jqlTerm: '"My IT TEST"',
86
+ displayName: 'My IT TEST',
87
+ project: {
88
+ avatar: {
89
+ small: 'https://nmccormick2.jira-dev.com/rest/api/2/universal_avatar/view/type/project/avatar/10403?size=small'
90
+ }
91
+ }
92
+ }
93
+ }, {
94
+ node: {
95
+ jqlTerm: 'Test',
96
+ displayName: 'Test',
97
+ project: {
98
+ avatar: {
99
+ small: 'https://nmccormick2.jira-dev.com/rest/api/2/universal_avatar/view/type/project/avatar/10411?size=small'
100
+ }
101
+ }
102
+ }
103
+ }, {
104
+ node: {
105
+ jqlTerm: '"Test rights"',
106
+ displayName: 'Test rights',
107
+ project: {
108
+ avatar: {
109
+ small: 'https://nmccormick2.jira-dev.com/rest/api/2/universal_avatar/view/type/project/avatar/10405?size=small'
110
+ }
111
+ }
112
+ }
113
+ }, {
114
+ node: {
115
+ jqlTerm: 'Test2',
116
+ displayName: 'Test2',
117
+ project: {
118
+ avatar: {
119
+ small: 'https://nmccormick2.jira-dev.com/rest/api/2/universal_avatar/view/type/project/avatar/10410?size=small'
120
+ }
121
+ }
122
+ }
123
+ }]
124
+ }
125
+ }
126
+ }
127
+ }
128
+ };
@@ -0,0 +1,112 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
3
+ import { useCallback, useMemo } from 'react';
4
+ import { useSmartLinkContext } from '@atlaskit/link-provider';
5
+ import { getBaseUrl } from '@atlaskit/linking-common';
6
+ import { fieldValuesQuery, hydrateJQLQuery } from './utils';
7
+ var getGraphqlUrl = function getGraphqlUrl(envKey, baseUrlOverride) {
8
+ var baseUrl = baseUrlOverride || getBaseUrl(envKey);
9
+ return baseUrl ? "".concat(baseUrl, "/graphql") : '/gateway/api/graphql';
10
+ };
11
+ export var useBasicFilterAGG = function useBasicFilterAGG() {
12
+ var _useSmartLinkContext = useSmartLinkContext(),
13
+ client = _useSmartLinkContext.connections.client;
14
+ var gatewayGraphqlUrl = getGraphqlUrl(client.envKey, client.baseUrlOverride);
15
+ var aggHeaders = useMemo(function () {
16
+ return new Headers({
17
+ 'Content-Type': 'application/json',
18
+ 'X-ExperimentalApi': 'JiraJqlBuilder'
19
+ });
20
+ }, []);
21
+ var getHydratedJQL = useCallback( /*#__PURE__*/function () {
22
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(cloudId, jql) {
23
+ var body, request, response;
24
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
25
+ while (1) switch (_context.prev = _context.next) {
26
+ case 0:
27
+ body = JSON.stringify({
28
+ variables: {
29
+ cloudId: cloudId,
30
+ jql: jql
31
+ },
32
+ operationName: 'hydrate',
33
+ query: hydrateJQLQuery
34
+ });
35
+ request = new Request(gatewayGraphqlUrl, {
36
+ method: 'POST',
37
+ headers: aggHeaders,
38
+ body: body
39
+ });
40
+ _context.prev = 2;
41
+ _context.next = 5;
42
+ return fetch(request);
43
+ case 5:
44
+ response = _context.sent;
45
+ return _context.abrupt("return", response.json());
46
+ case 9:
47
+ _context.prev = 9;
48
+ _context.t0 = _context["catch"](2);
49
+ throw new Error(_context.t0);
50
+ case 12:
51
+ case "end":
52
+ return _context.stop();
53
+ }
54
+ }, _callee, null, [[2, 9]]);
55
+ }));
56
+ return function (_x, _x2) {
57
+ return _ref.apply(this, arguments);
58
+ };
59
+ }(), [gatewayGraphqlUrl, aggHeaders]);
60
+ var getFieldValues = useCallback( /*#__PURE__*/function () {
61
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(cloudId, jql, jqlTerm, searchString, pageCursor) {
62
+ var body, request, response;
63
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
64
+ while (1) switch (_context2.prev = _context2.next) {
65
+ case 0:
66
+ body = JSON.stringify({
67
+ variables: {
68
+ cloudId: cloudId,
69
+ jql: jql,
70
+ first: 10,
71
+ jqlTerm: jqlTerm,
72
+ searchString: searchString,
73
+ after: pageCursor
74
+ },
75
+ operationName: 'fieldValues',
76
+ query: fieldValuesQuery
77
+ });
78
+ request = new Request(gatewayGraphqlUrl, {
79
+ method: 'POST',
80
+ headers: aggHeaders,
81
+ body: body
82
+ });
83
+ _context2.prev = 2;
84
+ _context2.next = 5;
85
+ return fetch(request);
86
+ case 5:
87
+ response = _context2.sent;
88
+ _context2.next = 8;
89
+ return response.json();
90
+ case 8:
91
+ return _context2.abrupt("return", _context2.sent);
92
+ case 11:
93
+ _context2.prev = 11;
94
+ _context2.t0 = _context2["catch"](2);
95
+ throw new Error(_context2.t0);
96
+ case 14:
97
+ case "end":
98
+ return _context2.stop();
99
+ }
100
+ }, _callee2, null, [[2, 11]]);
101
+ }));
102
+ return function (_x3, _x4, _x5, _x6, _x7) {
103
+ return _ref2.apply(this, arguments);
104
+ };
105
+ }(), [gatewayGraphqlUrl, aggHeaders]);
106
+ return useMemo(function () {
107
+ return {
108
+ getHydratedJQL: getHydratedJQL,
109
+ getFieldValues: getFieldValues
110
+ };
111
+ }, [getHydratedJQL, getFieldValues]);
112
+ };
@@ -0,0 +1,2 @@
1
+ export var hydrateJQLQuery = "query hydrate($cloudId: ID!, $jql: String!) {\n jira {\n jqlBuilder(cloudId: $cloudId) {\n hydrateJqlQuery(query: $jql) {\n ... on JiraJqlHydratedQuery {\n fields {\n ... on JiraJqlQueryHydratedField {\n jqlTerm\n values {\n ... on JiraJqlQueryHydratedValue {\n values {\n ... on JiraJqlProjectFieldValue {\n jqlTerm\n displayName\n project {\n avatar {\n small\n }\n }\n }\n ... on JiraJqlStatusFieldValue {\n jqlTerm\n displayName\n statusCategory {\n colorName\n }\n }\n ... on JiraJqlIssueTypeFieldValue {\n jqlTerm\n displayName\n issueTypes {\n avatar {\n small\n }\n }\n }\n ... on JiraJqlUserFieldValue {\n jqlTerm\n displayName\n user {\n picture\n }\n }\n ... on JiraJqlGroupFieldValue {\n jqlTerm\n displayName\n group {\n name\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n}";
2
+ export var fieldValuesQuery = "query fieldValues($cloudId: ID!, $first: Int = 10, $jqlTerm: String!, $jql: String!, $searchString: String!, $after: String, $projectOptions: JiraProjectOptions) {\n jira {\n jqlBuilder(cloudId: $cloudId) {\n fieldValues(\n first: $first\n jqlTerm: $jqlTerm\n jqlContext: $jql\n searchString: $searchString\n after: $after\n ) {\n totalCount\n pageInfo {\n endCursor\n }\n edges {\n node {\n jqlTerm\n displayName\n ... on JiraJqlProjectFieldValue {\n project {\n avatar {\n small\n }\n }\n }\n ... on JiraJqlIssueTypeFieldValue {\n issueTypes {\n avatar {\n small\n }\n }\n }\n ... on JiraJqlStatusFieldValue {\n statusCategory {\n colorName\n }\n }\n ... on JiraJqlUserFieldValue {\n user {\n picture\n }\n }\n ... on JiraJqlGroupFieldValue {\n group {\n name\n }\n }\n }\n }\n }\n }\n }\n}";