@atlaskit/link-datasource 0.14.4

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 (245) hide show
  1. package/CHANGELOG.md +233 -0
  2. package/README.md +3 -0
  3. package/dist/cjs/hooks/useDatasourceTableState.js +133 -0
  4. package/dist/cjs/index.js +19 -0
  5. package/dist/cjs/services/getAvailableJiraSites.js +65 -0
  6. package/dist/cjs/services/makeGetJqlAutocompleteData.js +66 -0
  7. package/dist/cjs/services/makeGetJqlSuggestionsData.js +55 -0
  8. package/dist/cjs/ui/issue-like-table/column-picker/index.js +93 -0
  9. package/dist/cjs/ui/issue-like-table/column-picker/types.js +5 -0
  10. package/dist/cjs/ui/issue-like-table/draggable-table-heading.js +182 -0
  11. package/dist/cjs/ui/issue-like-table/empty-state/index.js +127 -0
  12. package/dist/cjs/ui/issue-like-table/empty-state/priority.js +28 -0
  13. package/dist/cjs/ui/issue-like-table/empty-state/type.js +51 -0
  14. package/dist/cjs/ui/issue-like-table/empty-state/types.js +5 -0
  15. package/dist/cjs/ui/issue-like-table/index.js +300 -0
  16. package/dist/cjs/ui/issue-like-table/render-type/boolean/index.js +30 -0
  17. package/dist/cjs/ui/issue-like-table/render-type/boolean/messages.js +20 -0
  18. package/dist/cjs/ui/issue-like-table/render-type/date-time/index.js +47 -0
  19. package/dist/cjs/ui/issue-like-table/render-type/icon/index.js +34 -0
  20. package/dist/cjs/ui/issue-like-table/render-type/index.js +63 -0
  21. package/dist/cjs/ui/issue-like-table/render-type/link/index.js +56 -0
  22. package/dist/cjs/ui/issue-like-table/render-type/number/index.js +24 -0
  23. package/dist/cjs/ui/issue-like-table/render-type/status/index.js +28 -0
  24. package/dist/cjs/ui/issue-like-table/render-type/tag/index.js +27 -0
  25. package/dist/cjs/ui/issue-like-table/render-type/text/index.js +23 -0
  26. package/dist/cjs/ui/issue-like-table/render-type/user/index.js +36 -0
  27. package/dist/cjs/ui/issue-like-table/render-type/user/messages.js +15 -0
  28. package/dist/cjs/ui/issue-like-table/styled.js +12 -0
  29. package/dist/cjs/ui/issue-like-table/types.js +5 -0
  30. package/dist/cjs/ui/issue-like-table/useIsOnScreen.js +32 -0
  31. package/dist/cjs/ui/jira-issues/modal/basic-search-input/index.js +52 -0
  32. package/dist/cjs/ui/jira-issues/modal/basic-search-input/messages.js +15 -0
  33. package/dist/cjs/ui/jira-issues/modal/index.js +267 -0
  34. package/dist/cjs/ui/jira-issues/modal/jira-search-container/buildJQL.js +27 -0
  35. package/dist/cjs/ui/jira-issues/modal/jira-search-container/index.js +116 -0
  36. package/dist/cjs/ui/jira-issues/modal/jira-search-container/messages.js +15 -0
  37. package/dist/cjs/ui/jira-issues/modal/jql-editor/index.js +41 -0
  38. package/dist/cjs/ui/jira-issues/modal/messages.js +45 -0
  39. package/dist/cjs/ui/jira-issues/modal/mode-switcher/index.js +97 -0
  40. package/dist/cjs/ui/jira-issues/modal/site-selector/index.js +55 -0
  41. package/dist/cjs/ui/jira-issues/modal/site-selector/messages.js +20 -0
  42. package/dist/cjs/ui/jira-issues/table-footer/index.js +68 -0
  43. package/dist/cjs/ui/jira-issues/table-footer/messages.js +25 -0
  44. package/dist/cjs/ui/jira-issues/table-footer/sync-info/index.js +79 -0
  45. package/dist/cjs/ui/jira-issues/table-footer/sync-info/messages.js +20 -0
  46. package/dist/cjs/ui/jira-issues/tableView.js +64 -0
  47. package/dist/cjs/ui/jira-issues/types.js +5 -0
  48. package/dist/cjs/version.json +5 -0
  49. package/dist/es2019/hooks/useDatasourceTableState.js +77 -0
  50. package/dist/es2019/index.js +2 -0
  51. package/dist/es2019/services/getAvailableJiraSites.js +20 -0
  52. package/dist/es2019/services/makeGetJqlAutocompleteData.js +19 -0
  53. package/dist/es2019/services/makeGetJqlSuggestionsData.js +11 -0
  54. package/dist/es2019/ui/issue-like-table/column-picker/index.js +77 -0
  55. package/dist/es2019/ui/issue-like-table/column-picker/types.js +1 -0
  56. package/dist/es2019/ui/issue-like-table/draggable-table-heading.js +166 -0
  57. package/dist/es2019/ui/issue-like-table/empty-state/index.js +113 -0
  58. package/dist/es2019/ui/issue-like-table/empty-state/priority.js +32 -0
  59. package/dist/es2019/ui/issue-like-table/empty-state/type.js +46 -0
  60. package/dist/es2019/ui/issue-like-table/empty-state/types.js +1 -0
  61. package/dist/es2019/ui/issue-like-table/index.js +259 -0
  62. package/dist/es2019/ui/issue-like-table/render-type/boolean/index.js +21 -0
  63. package/dist/es2019/ui/issue-like-table/render-type/boolean/messages.js +13 -0
  64. package/dist/es2019/ui/issue-like-table/render-type/date-time/index.js +37 -0
  65. package/dist/es2019/ui/issue-like-table/render-type/icon/index.js +27 -0
  66. package/dist/es2019/ui/issue-like-table/render-type/index.js +55 -0
  67. package/dist/es2019/ui/issue-like-table/render-type/link/index.js +38 -0
  68. package/dist/es2019/ui/issue-like-table/render-type/number/index.js +15 -0
  69. package/dist/es2019/ui/issue-like-table/render-type/status/index.js +19 -0
  70. package/dist/es2019/ui/issue-like-table/render-type/tag/index.js +18 -0
  71. package/dist/es2019/ui/issue-like-table/render-type/text/index.js +14 -0
  72. package/dist/es2019/ui/issue-like-table/render-type/user/index.js +29 -0
  73. package/dist/es2019/ui/issue-like-table/render-type/user/messages.js +8 -0
  74. package/dist/es2019/ui/issue-like-table/styled.js +6 -0
  75. package/dist/es2019/ui/issue-like-table/types.js +1 -0
  76. package/dist/es2019/ui/issue-like-table/useIsOnScreen.js +17 -0
  77. package/dist/es2019/ui/jira-issues/modal/basic-search-input/index.js +42 -0
  78. package/dist/es2019/ui/jira-issues/modal/basic-search-input/messages.js +8 -0
  79. package/dist/es2019/ui/jira-issues/modal/index.js +227 -0
  80. package/dist/es2019/ui/jira-issues/modal/jira-search-container/buildJQL.js +20 -0
  81. package/dist/es2019/ui/jira-issues/modal/jira-search-container/index.js +90 -0
  82. package/dist/es2019/ui/jira-issues/modal/jira-search-container/messages.js +8 -0
  83. package/dist/es2019/ui/jira-issues/modal/jql-editor/index.js +33 -0
  84. package/dist/es2019/ui/jira-issues/modal/messages.js +38 -0
  85. package/dist/es2019/ui/jira-issues/modal/mode-switcher/index.js +90 -0
  86. package/dist/es2019/ui/jira-issues/modal/site-selector/index.js +43 -0
  87. package/dist/es2019/ui/jira-issues/modal/site-selector/messages.js +13 -0
  88. package/dist/es2019/ui/jira-issues/table-footer/index.js +78 -0
  89. package/dist/es2019/ui/jira-issues/table-footer/messages.js +18 -0
  90. package/dist/es2019/ui/jira-issues/table-footer/sync-info/index.js +59 -0
  91. package/dist/es2019/ui/jira-issues/table-footer/sync-info/messages.js +13 -0
  92. package/dist/es2019/ui/jira-issues/tableView.js +57 -0
  93. package/dist/es2019/ui/jira-issues/types.js +1 -0
  94. package/dist/es2019/version.json +5 -0
  95. package/dist/esm/hooks/useDatasourceTableState.js +125 -0
  96. package/dist/esm/index.js +2 -0
  97. package/dist/esm/services/getAvailableJiraSites.js +57 -0
  98. package/dist/esm/services/makeGetJqlAutocompleteData.js +58 -0
  99. package/dist/esm/services/makeGetJqlSuggestionsData.js +47 -0
  100. package/dist/esm/ui/issue-like-table/column-picker/index.js +85 -0
  101. package/dist/esm/ui/issue-like-table/column-picker/types.js +1 -0
  102. package/dist/esm/ui/issue-like-table/draggable-table-heading.js +173 -0
  103. package/dist/esm/ui/issue-like-table/empty-state/index.js +118 -0
  104. package/dist/esm/ui/issue-like-table/empty-state/priority.js +20 -0
  105. package/dist/esm/ui/issue-like-table/empty-state/type.js +43 -0
  106. package/dist/esm/ui/issue-like-table/empty-state/types.js +1 -0
  107. package/dist/esm/ui/issue-like-table/index.js +292 -0
  108. package/dist/esm/ui/issue-like-table/render-type/boolean/index.js +21 -0
  109. package/dist/esm/ui/issue-like-table/render-type/boolean/messages.js +13 -0
  110. package/dist/esm/ui/issue-like-table/render-type/date-time/index.js +38 -0
  111. package/dist/esm/ui/issue-like-table/render-type/icon/index.js +25 -0
  112. package/dist/esm/ui/issue-like-table/render-type/index.js +55 -0
  113. package/dist/esm/ui/issue-like-table/render-type/link/index.js +44 -0
  114. package/dist/esm/ui/issue-like-table/render-type/number/index.js +15 -0
  115. package/dist/esm/ui/issue-like-table/render-type/status/index.js +19 -0
  116. package/dist/esm/ui/issue-like-table/render-type/tag/index.js +18 -0
  117. package/dist/esm/ui/issue-like-table/render-type/text/index.js +14 -0
  118. package/dist/esm/ui/issue-like-table/render-type/user/index.js +27 -0
  119. package/dist/esm/ui/issue-like-table/render-type/user/messages.js +8 -0
  120. package/dist/esm/ui/issue-like-table/styled.js +4 -0
  121. package/dist/esm/ui/issue-like-table/types.js +1 -0
  122. package/dist/esm/ui/issue-like-table/useIsOnScreen.js +25 -0
  123. package/dist/esm/ui/jira-issues/modal/basic-search-input/index.js +43 -0
  124. package/dist/esm/ui/jira-issues/modal/basic-search-input/messages.js +8 -0
  125. package/dist/esm/ui/jira-issues/modal/index.js +255 -0
  126. package/dist/esm/ui/jira-issues/modal/jira-search-container/buildJQL.js +20 -0
  127. package/dist/esm/ui/jira-issues/modal/jira-search-container/index.js +104 -0
  128. package/dist/esm/ui/jira-issues/modal/jira-search-container/messages.js +8 -0
  129. package/dist/esm/ui/jira-issues/modal/jql-editor/index.js +31 -0
  130. package/dist/esm/ui/jira-issues/modal/messages.js +38 -0
  131. package/dist/esm/ui/jira-issues/modal/mode-switcher/index.js +88 -0
  132. package/dist/esm/ui/jira-issues/modal/site-selector/index.js +44 -0
  133. package/dist/esm/ui/jira-issues/modal/site-selector/messages.js +13 -0
  134. package/dist/esm/ui/jira-issues/table-footer/index.js +60 -0
  135. package/dist/esm/ui/jira-issues/table-footer/messages.js +18 -0
  136. package/dist/esm/ui/jira-issues/table-footer/sync-info/index.js +68 -0
  137. package/dist/esm/ui/jira-issues/table-footer/sync-info/messages.js +13 -0
  138. package/dist/esm/ui/jira-issues/tableView.js +55 -0
  139. package/dist/esm/ui/jira-issues/types.js +1 -0
  140. package/dist/esm/version.json +5 -0
  141. package/dist/types/hooks/useDatasourceTableState.d.ts +13 -0
  142. package/dist/types/index.d.ts +2 -0
  143. package/dist/types/services/getAvailableJiraSites.d.ts +6 -0
  144. package/dist/types/services/makeGetJqlAutocompleteData.d.ts +6 -0
  145. package/dist/types/services/makeGetJqlSuggestionsData.d.ts +5 -0
  146. package/dist/types/ui/issue-like-table/column-picker/index.d.ts +3 -0
  147. package/dist/types/ui/issue-like-table/column-picker/types.d.ts +6 -0
  148. package/dist/types/ui/issue-like-table/draggable-table-heading.d.ts +12 -0
  149. package/dist/types/ui/issue-like-table/empty-state/index.d.ts +6 -0
  150. package/dist/types/ui/issue-like-table/empty-state/priority.d.ts +6 -0
  151. package/dist/types/ui/issue-like-table/empty-state/type.d.ts +6 -0
  152. package/dist/types/ui/issue-like-table/empty-state/types.d.ts +2 -0
  153. package/dist/types/ui/issue-like-table/index.d.ts +15 -0
  154. package/dist/types/ui/issue-like-table/render-type/boolean/index.d.ts +8 -0
  155. package/dist/types/ui/issue-like-table/render-type/boolean/messages.d.ts +12 -0
  156. package/dist/types/ui/issue-like-table/render-type/date-time/index.d.ts +10 -0
  157. package/dist/types/ui/issue-like-table/render-type/icon/index.d.ts +8 -0
  158. package/dist/types/ui/issue-like-table/render-type/index.d.ts +2 -0
  159. package/dist/types/ui/issue-like-table/render-type/link/index.d.ts +8 -0
  160. package/dist/types/ui/issue-like-table/render-type/number/index.d.ts +8 -0
  161. package/dist/types/ui/issue-like-table/render-type/status/index.d.ts +8 -0
  162. package/dist/types/ui/issue-like-table/render-type/tag/index.d.ts +9 -0
  163. package/dist/types/ui/issue-like-table/render-type/text/index.d.ts +8 -0
  164. package/dist/types/ui/issue-like-table/render-type/user/index.d.ts +11 -0
  165. package/dist/types/ui/issue-like-table/render-type/user/messages.d.ts +7 -0
  166. package/dist/types/ui/issue-like-table/styled.d.ts +5 -0
  167. package/dist/types/ui/issue-like-table/types.d.ts +38 -0
  168. package/dist/types/ui/issue-like-table/useIsOnScreen.d.ts +1 -0
  169. package/dist/types/ui/jira-issues/modal/basic-search-input/index.d.ts +12 -0
  170. package/dist/types/ui/jira-issues/modal/basic-search-input/messages.d.ts +7 -0
  171. package/dist/types/ui/jira-issues/modal/index.d.ts +13 -0
  172. package/dist/types/ui/jira-issues/modal/jira-search-container/buildJQL.d.ts +7 -0
  173. package/dist/types/ui/jira-issues/modal/jira-search-container/index.d.ts +7 -0
  174. package/dist/types/ui/jira-issues/modal/jira-search-container/messages.d.ts +7 -0
  175. package/dist/types/ui/jira-issues/modal/jql-editor/index.d.ts +8 -0
  176. package/dist/types/ui/jira-issues/modal/messages.d.ts +37 -0
  177. package/dist/types/ui/jira-issues/modal/mode-switcher/index.d.ts +12 -0
  178. package/dist/types/ui/jira-issues/modal/site-selector/index.d.ts +10 -0
  179. package/dist/types/ui/jira-issues/modal/site-selector/messages.d.ts +12 -0
  180. package/dist/types/ui/jira-issues/table-footer/index.d.ts +7 -0
  181. package/dist/types/ui/jira-issues/table-footer/messages.d.ts +17 -0
  182. package/dist/types/ui/jira-issues/table-footer/sync-info/index.d.ts +4 -0
  183. package/dist/types/ui/jira-issues/table-footer/sync-info/messages.d.ts +12 -0
  184. package/dist/types/ui/jira-issues/tableView.d.ts +3 -0
  185. package/dist/types/ui/jira-issues/types.d.ts +14 -0
  186. package/dist/types-ts4.5/hooks/useDatasourceTableState.d.ts +13 -0
  187. package/dist/types-ts4.5/index.d.ts +2 -0
  188. package/dist/types-ts4.5/services/getAvailableJiraSites.d.ts +6 -0
  189. package/dist/types-ts4.5/services/makeGetJqlAutocompleteData.d.ts +6 -0
  190. package/dist/types-ts4.5/services/makeGetJqlSuggestionsData.d.ts +5 -0
  191. package/dist/types-ts4.5/ui/issue-like-table/column-picker/index.d.ts +3 -0
  192. package/dist/types-ts4.5/ui/issue-like-table/column-picker/types.d.ts +6 -0
  193. package/dist/types-ts4.5/ui/issue-like-table/draggable-table-heading.d.ts +12 -0
  194. package/dist/types-ts4.5/ui/issue-like-table/empty-state/index.d.ts +6 -0
  195. package/dist/types-ts4.5/ui/issue-like-table/empty-state/priority.d.ts +6 -0
  196. package/dist/types-ts4.5/ui/issue-like-table/empty-state/type.d.ts +6 -0
  197. package/dist/types-ts4.5/ui/issue-like-table/empty-state/types.d.ts +2 -0
  198. package/dist/types-ts4.5/ui/issue-like-table/index.d.ts +15 -0
  199. package/dist/types-ts4.5/ui/issue-like-table/render-type/boolean/index.d.ts +8 -0
  200. package/dist/types-ts4.5/ui/issue-like-table/render-type/boolean/messages.d.ts +12 -0
  201. package/dist/types-ts4.5/ui/issue-like-table/render-type/date-time/index.d.ts +10 -0
  202. package/dist/types-ts4.5/ui/issue-like-table/render-type/icon/index.d.ts +8 -0
  203. package/dist/types-ts4.5/ui/issue-like-table/render-type/index.d.ts +2 -0
  204. package/dist/types-ts4.5/ui/issue-like-table/render-type/link/index.d.ts +8 -0
  205. package/dist/types-ts4.5/ui/issue-like-table/render-type/number/index.d.ts +8 -0
  206. package/dist/types-ts4.5/ui/issue-like-table/render-type/status/index.d.ts +8 -0
  207. package/dist/types-ts4.5/ui/issue-like-table/render-type/tag/index.d.ts +9 -0
  208. package/dist/types-ts4.5/ui/issue-like-table/render-type/text/index.d.ts +8 -0
  209. package/dist/types-ts4.5/ui/issue-like-table/render-type/user/index.d.ts +11 -0
  210. package/dist/types-ts4.5/ui/issue-like-table/render-type/user/messages.d.ts +7 -0
  211. package/dist/types-ts4.5/ui/issue-like-table/styled.d.ts +5 -0
  212. package/dist/types-ts4.5/ui/issue-like-table/types.d.ts +38 -0
  213. package/dist/types-ts4.5/ui/issue-like-table/useIsOnScreen.d.ts +1 -0
  214. package/dist/types-ts4.5/ui/jira-issues/modal/basic-search-input/index.d.ts +12 -0
  215. package/dist/types-ts4.5/ui/jira-issues/modal/basic-search-input/messages.d.ts +7 -0
  216. package/dist/types-ts4.5/ui/jira-issues/modal/index.d.ts +13 -0
  217. package/dist/types-ts4.5/ui/jira-issues/modal/jira-search-container/buildJQL.d.ts +7 -0
  218. package/dist/types-ts4.5/ui/jira-issues/modal/jira-search-container/index.d.ts +7 -0
  219. package/dist/types-ts4.5/ui/jira-issues/modal/jira-search-container/messages.d.ts +7 -0
  220. package/dist/types-ts4.5/ui/jira-issues/modal/jql-editor/index.d.ts +8 -0
  221. package/dist/types-ts4.5/ui/jira-issues/modal/messages.d.ts +37 -0
  222. package/dist/types-ts4.5/ui/jira-issues/modal/mode-switcher/index.d.ts +12 -0
  223. package/dist/types-ts4.5/ui/jira-issues/modal/site-selector/index.d.ts +10 -0
  224. package/dist/types-ts4.5/ui/jira-issues/modal/site-selector/messages.d.ts +12 -0
  225. package/dist/types-ts4.5/ui/jira-issues/table-footer/index.d.ts +7 -0
  226. package/dist/types-ts4.5/ui/jira-issues/table-footer/messages.d.ts +17 -0
  227. package/dist/types-ts4.5/ui/jira-issues/table-footer/sync-info/index.d.ts +4 -0
  228. package/dist/types-ts4.5/ui/jira-issues/table-footer/sync-info/messages.d.ts +12 -0
  229. package/dist/types-ts4.5/ui/jira-issues/tableView.d.ts +3 -0
  230. package/dist/types-ts4.5/ui/jira-issues/types.d.ts +14 -0
  231. package/examples-helpers/buildIssueLikeTable.tsx +88 -0
  232. package/examples-helpers/buildJiraIssuesTable.tsx +31 -0
  233. package/examples-helpers/images.json +4 -0
  234. package/examples-helpers/mockAutocompleteData.ts +54 -0
  235. package/examples-helpers/mockJiraAvailableSites.ts +27 -0
  236. package/examples-helpers/mockJiraData.ts +546 -0
  237. package/examples-helpers/mockJqlSmartLinkData.ts +72 -0
  238. package/examples-helpers/mockSmartLinkData.ts +67 -0
  239. package/examples-helpers/mockSuggestionData.ts +17 -0
  240. package/examples-helpers/setupDatasourcesMocks.ts +199 -0
  241. package/examples-helpers/setupModalExampleMocks.ts +32 -0
  242. package/examples-helpers/smartLinkCustomClient.ts +26 -0
  243. package/package.json +118 -0
  244. package/report.api.md +98 -0
  245. package/tmp/api-report-tmp.d.ts +64 -0
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = exports.USER_TYPE_TEST_ID = void 0;
8
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
11
+ var _reactIntlNext = require("react-intl-next");
12
+ var _avatar = _interopRequireDefault(require("@atlaskit/avatar"));
13
+ var _messages = require("./messages");
14
+ var _templateObject, _templateObject2;
15
+ var UserWrapper = _styled.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n align-items: center;\n"])));
16
+ var AvatarWrapper = _styled.default.div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n margin-right: 5px;\n"])));
17
+ var USER_TYPE_TEST_ID = 'link-datasource-render-type--user';
18
+ exports.USER_TYPE_TEST_ID = USER_TYPE_TEST_ID;
19
+ var UserType = function UserType(_ref) {
20
+ var avatarSource = _ref.avatarSource,
21
+ _ref$avatarSize = _ref.avatarSize,
22
+ avatarSize = _ref$avatarSize === void 0 ? 'small' : _ref$avatarSize,
23
+ displayName = _ref.displayName,
24
+ _ref$testId = _ref.testId,
25
+ testId = _ref$testId === void 0 ? USER_TYPE_TEST_ID : _ref$testId,
26
+ children = _ref.children;
27
+ return /*#__PURE__*/_react.default.createElement(UserWrapper, {
28
+ "data-testid": testId
29
+ }, /*#__PURE__*/_react.default.createElement(AvatarWrapper, null, /*#__PURE__*/_react.default.createElement(_avatar.default, {
30
+ appearance: "circle",
31
+ size: avatarSize,
32
+ src: avatarSource
33
+ })), children || displayName || /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.userTypeMessages.userDefaultdisplayNameValue));
34
+ };
35
+ var _default = UserType;
36
+ exports.default = _default;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.userTypeMessages = void 0;
7
+ var _reactIntlNext = require("react-intl-next");
8
+ var userTypeMessages = (0, _reactIntlNext.defineMessages)({
9
+ userDefaultdisplayNameValue: {
10
+ id: 'linkDataSource.render-type.user.default.display.name',
11
+ description: 'Text to display for the user type when no display value is provided',
12
+ defaultMessage: 'Unassigned'
13
+ }
14
+ });
15
+ exports.userTypeMessages = userTypeMessages;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.TableHeading = void 0;
8
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
10
+ var _templateObject;
11
+ var TableHeading = _styled.default.th(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n position: relative;\n padding-block: ", ";\n line-height: ", ";\n"])), "var(--ds-space-100, 8px)", "var(--ds-font-lineHeight-300, 24px)");
12
+ exports.TableHeading = TableHeading;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useIsOnScreen = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _react = require("react");
10
+ // Hook which tracks if a ref is visible or not. Taken from: https://stackoverflow.com/a/65008608
11
+ var useIsOnScreen = function useIsOnScreen(el) {
12
+ var _useState = (0, _react.useState)(false),
13
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
14
+ isIntersecting = _useState2[0],
15
+ setIntersecting = _useState2[1];
16
+ var observer = (0, _react.useMemo)(function () {
17
+ return new IntersectionObserver(function (_ref) {
18
+ var _ref2 = (0, _slicedToArray2.default)(_ref, 1),
19
+ entry = _ref2[0];
20
+ return setIntersecting(entry.isIntersecting);
21
+ });
22
+ }, []);
23
+ (0, _react.useEffect)(function () {
24
+ el && observer.observe(el);
25
+ return function () {
26
+ setIntersecting(false);
27
+ return observer.disconnect();
28
+ };
29
+ }, [observer, el]);
30
+ return isIntersecting;
31
+ };
32
+ exports.useIsOnScreen = useIsOnScreen;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.BasicSearchInput = void 0;
8
+ var _react = require("@emotion/react");
9
+ var _reactIntlNext = require("react-intl-next");
10
+ var _button = require("@atlaskit/button");
11
+ var _search = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/search"));
12
+ var _textfield = _interopRequireDefault(require("@atlaskit/textfield"));
13
+ var _messages = require("./messages");
14
+ /** @jsx jsx */
15
+
16
+ var searchButtonStyles = (0, _react.css)({
17
+ marginRight: "var(--ds-space-075, 6px)"
18
+ });
19
+ var BasicSearchInput = function BasicSearchInput(_ref) {
20
+ var isDisabled = _ref.isDisabled,
21
+ isSearching = _ref.isSearching,
22
+ onChange = _ref.onChange,
23
+ onSearch = _ref.onSearch,
24
+ searchTerm = _ref.searchTerm,
25
+ _ref$testId = _ref.testId,
26
+ testId = _ref$testId === void 0 ? 'jira-jql-datasource-modal--basic-search-input' : _ref$testId;
27
+ var _useIntl = (0, _reactIntlNext.useIntl)(),
28
+ formatMessage = _useIntl.formatMessage;
29
+ return (0, _react.jsx)(_textfield.default, {
30
+ elemAfterInput: (0, _react.jsx)(_button.LoadingButton, {
31
+ appearance: "primary",
32
+ css: searchButtonStyles,
33
+ iconBefore: (0, _react.jsx)(_search.default, {
34
+ label: formatMessage(_messages.basicSearchInputMessages.basicTextSearchLabel),
35
+ size: "medium"
36
+ }),
37
+ isDisabled: isDisabled,
38
+ isLoading: isSearching,
39
+ onClick: function onClick() {
40
+ return onSearch(searchTerm);
41
+ },
42
+ spacing: "none",
43
+ testId: "jira-jql-datasource-modal--basic-search-button"
44
+ }),
45
+ autoFocus: true,
46
+ onChange: onChange,
47
+ placeholder: formatMessage(_messages.basicSearchInputMessages.basicTextSearchLabel),
48
+ testId: testId,
49
+ value: searchTerm
50
+ });
51
+ };
52
+ exports.BasicSearchInput = BasicSearchInput;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.basicSearchInputMessages = void 0;
7
+ var _reactIntlNext = require("react-intl-next");
8
+ var basicSearchInputMessages = (0, _reactIntlNext.defineMessages)({
9
+ basicTextSearchLabel: {
10
+ id: 'linkDataSource.jira-issues.configmodal.basicTextSearchPlaceholder',
11
+ description: 'Placeholder text for the search input box',
12
+ defaultMessage: 'Search'
13
+ }
14
+ });
15
+ exports.basicSearchInputMessages = basicSearchInputMessages;
@@ -0,0 +1,267 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.JiraIssuesConfigModal = void 0;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+ var _react = require("react");
14
+ var _react2 = require("@emotion/react");
15
+ var _reactIntlNext = require("react-intl-next");
16
+ var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
17
+ var _modalDialog = _interopRequireWildcard(require("@atlaskit/modal-dialog"));
18
+ var _colors = require("@atlaskit/theme/colors");
19
+ var _useDatasourceTableState = require("../../../hooks/useDatasourceTableState");
20
+ var _getAvailableJiraSites = require("../../../services/getAvailableJiraSites");
21
+ var _issueLikeTable = require("../../issue-like-table");
22
+ var _link = _interopRequireDefault(require("../../issue-like-table/render-type/link"));
23
+ var _jiraSearchContainer = require("./jira-search-container");
24
+ var _messages = require("./messages");
25
+ var _modeSwitcher = require("./mode-switcher");
26
+ var _siteSelector = require("./site-selector");
27
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
28
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
+ /** @jsx jsx */
30
+
31
+ var dropdownContainerStyles = (0, _react2.css)({
32
+ display: 'flex',
33
+ gap: "var(--ds-space-100, 0.5rem)"
34
+ });
35
+ var contentContainerStyles = (0, _react2.css)({
36
+ height: '420px',
37
+ overflow: 'auto'
38
+ });
39
+ var placeholderSmartLinkStyles = (0, _react2.css)({
40
+ backgroundColor: "var(--ds-surface-raised, ".concat(_colors.N0, ")"),
41
+ borderRadius: '3px',
42
+ boxShadow: '0px 1px 1px rgba(9, 30, 66, 0.25), 0px 0px 1px rgba(9, 30, 66, 0.31)',
43
+ color: "var(--ds-text-brand, ".concat(_colors.B400, ")"),
44
+ padding: '0px 2px'
45
+ });
46
+ var JiraIssuesConfigModal = function JiraIssuesConfigModal(props) {
47
+ var _useState = (0, _react.useState)([]),
48
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
49
+ availableSites = _useState2[0],
50
+ setAvailableSites = _useState2[1];
51
+ var _useState3 = (0, _react.useState)('issue'),
52
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
53
+ currentViewMode = _useState4[0],
54
+ setCurrentViewMode = _useState4[1];
55
+ var datasourceId = props.datasourceId,
56
+ parameters = props.parameters,
57
+ visibleColumnKeys = props.visibleColumnKeys,
58
+ onCancel = props.onCancel,
59
+ onInsert = props.onInsert,
60
+ onUpdateParameters = props.onUpdateParameters,
61
+ onVisibleColumnKeysChange = props.onVisibleColumnKeysChange;
62
+ var isParametersSet = !!(parameters && parameters.value && parameters.cloudId);
63
+ var _ref = parameters || {},
64
+ cloudId = _ref.cloudId,
65
+ jql = _ref.value;
66
+ var _useDatasourceTableSt = (0, _useDatasourceTableState.useDatasourceTableState)(datasourceId, parameters, ['key']),
67
+ reset = _useDatasourceTableSt.reset,
68
+ status = _useDatasourceTableSt.status,
69
+ onNextPage = _useDatasourceTableSt.onNextPage,
70
+ responseItems = _useDatasourceTableSt.responseItems,
71
+ hasNextPage = _useDatasourceTableSt.hasNextPage,
72
+ columns = _useDatasourceTableSt.columns,
73
+ defaultVisibleColumnKeys = _useDatasourceTableSt.defaultVisibleColumnKeys;
74
+ var _useIntl = (0, _reactIntlNext.useIntl)(),
75
+ formatMessage = _useIntl.formatMessage;
76
+ (0, _react.useEffect)(function () {
77
+ var fetchSiteDisplayNames = /*#__PURE__*/function () {
78
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
79
+ var jiraSites;
80
+ return _regenerator.default.wrap(function _callee$(_context) {
81
+ while (1) switch (_context.prev = _context.next) {
82
+ case 0:
83
+ _context.next = 2;
84
+ return (0, _getAvailableJiraSites.getAvailableJiraSites)();
85
+ case 2:
86
+ jiraSites = _context.sent;
87
+ setAvailableSites(jiraSites);
88
+ case 4:
89
+ case "end":
90
+ return _context.stop();
91
+ }
92
+ }, _callee);
93
+ }));
94
+ return function fetchSiteDisplayNames() {
95
+ return _ref2.apply(this, arguments);
96
+ };
97
+ }();
98
+ void fetchSiteDisplayNames();
99
+ }, []);
100
+ var onSearch = (0, _react.useCallback)(function (parameters) {
101
+ onUpdateParameters(parameters);
102
+ reset();
103
+ }, [reset, onUpdateParameters]);
104
+ var onSiteSelection = (0, _react.useCallback)(function (site) {
105
+ onUpdateParameters({
106
+ cloudId: site.cloudId
107
+ });
108
+ reset();
109
+ }, [reset, onUpdateParameters]);
110
+ var selectedJiraSite = (0, _react.useMemo)(function () {
111
+ return availableSites.find(function (jiraSite) {
112
+ return jiraSite.cloudId === cloudId;
113
+ }) || availableSites[0];
114
+ }, [availableSites, cloudId]);
115
+ (0, _react.useEffect)(function () {
116
+ if (!cloudId && selectedJiraSite) {
117
+ onUpdateParameters({
118
+ cloudId: selectedJiraSite.cloudId
119
+ });
120
+ }
121
+ }, [cloudId, onUpdateParameters, selectedJiraSite]);
122
+ (0, _react.useEffect)(function () {
123
+ if ((visibleColumnKeys || []).length === 0 && defaultVisibleColumnKeys.length > 0) {
124
+ onVisibleColumnKeysChange(defaultVisibleColumnKeys);
125
+ }
126
+ }, [visibleColumnKeys, defaultVisibleColumnKeys, onVisibleColumnKeysChange]);
127
+ var retrieveUrlForSmartCardRender = (0, _react.useCallback)(function () {
128
+ var _data$key;
129
+ var _responseItems = (0, _slicedToArray2.default)(responseItems, 1),
130
+ data = _responseItems[0];
131
+ // agrement with BE that we will use `key` for rendering smartlink
132
+ return data === null || data === void 0 ? void 0 : (_data$key = data.key) === null || _data$key === void 0 ? void 0 : _data$key.url;
133
+ }, [responseItems]);
134
+ var onInsertPressed = (0, _react.useCallback)(function () {
135
+ if (!isParametersSet || !jql || !selectedJiraSite) {
136
+ return;
137
+ }
138
+ var firstIssueUrl = retrieveUrlForSmartCardRender();
139
+ if (currentViewMode === 'count') {
140
+ onInsert({
141
+ type: 'inlineCard',
142
+ attrs: {
143
+ url: "".concat(selectedJiraSite.url, "/issues/").concat(encodeURI(jql))
144
+ }
145
+ });
146
+ } else if (responseItems.length === 1 && firstIssueUrl) {
147
+ onInsert({
148
+ type: 'inlineCard',
149
+ attrs: {
150
+ url: firstIssueUrl
151
+ }
152
+ });
153
+ } else {
154
+ onInsert({
155
+ type: 'blockCard',
156
+ attrs: {
157
+ datasource: {
158
+ id: datasourceId,
159
+ parameters: {
160
+ cloudId: cloudId,
161
+ jql: jql // TODO support non JQL type
162
+ },
163
+
164
+ views: [{
165
+ type: 'table',
166
+ properties: {
167
+ columnKeys: visibleColumnKeys
168
+ }
169
+ }]
170
+ }
171
+ }
172
+ });
173
+ }
174
+ }, [isParametersSet, jql, selectedJiraSite, retrieveUrlForSmartCardRender, currentViewMode, responseItems.length, onInsert, datasourceId, cloudId, visibleColumnKeys]);
175
+ var handleViewModeChange = function handleViewModeChange(selectedMode) {
176
+ setCurrentViewMode(selectedMode);
177
+ };
178
+ (0, _react.useEffect)(function () {
179
+ if (status === 'empty' && isParametersSet) {
180
+ void onNextPage();
181
+ }
182
+ }, [status, isParametersSet, onNextPage, reset]);
183
+ var issueLikeDataTableView = (0, _react.useMemo)(function () {
184
+ return (0, _react2.jsx)(_issueLikeTable.IssueLikeDataTableView, {
185
+ testId: "jira-jql-datasource-table",
186
+ status: status,
187
+ columns: columns,
188
+ items: responseItems,
189
+ hasNextPage: hasNextPage,
190
+ visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
191
+ onNextPage: onNextPage,
192
+ onVisibleColumnKeysChange: onVisibleColumnKeysChange
193
+ });
194
+ }, [columns, defaultVisibleColumnKeys, hasNextPage, onNextPage, onVisibleColumnKeysChange, responseItems, status, visibleColumnKeys]);
195
+ var renderCountModeContent = (0, _react.useCallback)(function () {
196
+ var url = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
197
+ if (status === 'empty' || !jql || !url) {
198
+ return (0, _react2.jsx)("span", {
199
+ "data-testid": "jira-jql-datasource-modal--smart-card-placeholder",
200
+ css: placeholderSmartLinkStyles
201
+ }, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.issuesCountSmartCardPlaceholderText));
202
+ } else {
203
+ var urlWithEncodedJql = "".concat(url, "/issues/?jql=").concat(encodeURI(jql));
204
+ return (0, _react2.jsx)(_link.default, {
205
+ url: urlWithEncodedJql
206
+ });
207
+ }
208
+ }, [jql, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status]);
209
+ var renderIssuesModeContent = (0, _react.useCallback)(function () {
210
+ if (status === 'empty' || columns.length === 0) {
211
+ return (0, _react2.jsx)(_issueLikeTable.EmptyState, {
212
+ testId: "jira-jql-datasource-modal--empty-state"
213
+ });
214
+ }
215
+ var firstIssueUrl = retrieveUrlForSmartCardRender();
216
+ if (responseItems.length === 1 && firstIssueUrl) {
217
+ return (0, _react2.jsx)(_link.default, {
218
+ url: firstIssueUrl
219
+ });
220
+ }
221
+ return issueLikeDataTableView;
222
+ }, [columns.length, issueLikeDataTableView, responseItems.length, retrieveUrlForSmartCardRender, status]);
223
+ return (0, _react2.jsx)(_reactIntlNext.IntlProvider, {
224
+ locale: "en"
225
+ }, (0, _react2.jsx)(_modalDialog.ModalTransition, null, (0, _react2.jsx)(_modalDialog.default, {
226
+ testId: 'jira-jql-datasource-modal',
227
+ onClose: onCancel,
228
+ width: "x-large",
229
+ shouldScrollInViewport: true
230
+ }, (0, _react2.jsx)(_modalDialog.ModalHeader, null, (0, _react2.jsx)(_modalDialog.ModalTitle, null, availableSites.length < 2 ? (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.insertIssuesTitle) : (0, _react2.jsx)("div", {
231
+ css: dropdownContainerStyles
232
+ }, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, _messages.modalMessages.insertIssuesTitleManySites, {
233
+ values: {
234
+ siteName: selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.displayName
235
+ }
236
+ })), (0, _react2.jsx)(_siteSelector.JiraSiteSelector, {
237
+ testId: "jira-jql-datasource-modal--site-selector",
238
+ availableSites: availableSites,
239
+ onSiteSelection: onSiteSelection,
240
+ selectedJiraSite: selectedJiraSite
241
+ }))), (0, _react2.jsx)(_modeSwitcher.ModeSwitcher, {
242
+ isCompact: true,
243
+ options: [{
244
+ label: formatMessage(_messages.modalMessages.issueViewModeLabel),
245
+ value: 'issue'
246
+ }, {
247
+ label: formatMessage(_messages.modalMessages.countViewModeLabel),
248
+ value: 'count'
249
+ }],
250
+ onOptionValueChange: handleViewModeChange,
251
+ selectedOptionValue: currentViewMode
252
+ })), (0, _react2.jsx)(_modalDialog.ModalBody, null, (0, _react2.jsx)(_jiraSearchContainer.JiraSearchContainer, {
253
+ parameters: parameters,
254
+ onSearch: onSearch
255
+ }), (0, _react2.jsx)("div", {
256
+ css: contentContainerStyles
257
+ }, currentViewMode === 'count' ? renderCountModeContent() : renderIssuesModeContent())), (0, _react2.jsx)(_modalDialog.ModalFooter, null, (0, _react2.jsx)(_standardButton.default, {
258
+ appearance: "default",
259
+ onClick: onCancel
260
+ }, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.cancelButtonText)), (0, _react2.jsx)(_standardButton.default, {
261
+ appearance: "primary",
262
+ onClick: onInsertPressed,
263
+ isDisabled: !isParametersSet,
264
+ testId: 'jira-jql-datasource-modal--insert-button'
265
+ }, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _messages.modalMessages.insertIssuesButtonText))))));
266
+ };
267
+ exports.JiraIssuesConfigModal = JiraIssuesConfigModal;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.buildJQL = void 0;
7
+ var fuzzySearchRegExp = /^"(.+)"$/;
8
+ var jiraIssueKeyRegExp = /[A-Z]+-\d+/;
9
+ var buildJQL = function buildJQL(input) {
10
+ var rawSearch = input.rawSearch,
11
+ _input$orderDirection = input.orderDirection,
12
+ orderDirection = _input$orderDirection === void 0 ? 'DESC' : _input$orderDirection,
13
+ _input$orderKey = input.orderKey,
14
+ orderKey = _input$orderKey === void 0 ? 'created' : _input$orderKey;
15
+ var fuzzy = !rawSearch.match(fuzzySearchRegExp) ? '*' : '';
16
+ var basicSearch = rawSearch.replace(/['"?*]+/g, '');
17
+ var baseQueryParts = rawSearch.trim() ? ["text ~ \"".concat(basicSearch).concat(fuzzy, "\""), "summary ~ \"".concat(basicSearch).concat(fuzzy, "\"")] : [];
18
+ if (jiraIssueKeyRegExp.test(rawSearch)) {
19
+ baseQueryParts.push("key = \"".concat(basicSearch, "\""));
20
+ }
21
+ var baseQueryContent = baseQueryParts.join(' OR ');
22
+ var baseQuery = baseQueryContent ? "(".concat(baseQueryContent, ")") : '';
23
+ var limiter = rawSearch !== null && rawSearch !== void 0 && rawSearch.trim() ? '' : "created >= -30d";
24
+ var query = [baseQuery, limiter].filter(Boolean).join(' AND ');
25
+ return "".concat(query, " order by ").concat(orderKey, " ").concat(orderDirection.toUpperCase());
26
+ };
27
+ exports.buildJQL = buildJQL;
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.JiraSearchContainer = void 0;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _react2 = require("@emotion/react");
12
+ var _reactIntlNext = require("react-intl-next");
13
+ var _basicSearchInput = require("../basic-search-input");
14
+ var _jqlEditor = require("../jql-editor");
15
+ var _modeSwitcher = require("../mode-switcher");
16
+ var _buildJQL = require("./buildJQL");
17
+ var _messages = require("./messages");
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
20
+ /** @jsx jsx */
21
+
22
+ var inputContainerStyles = (0, _react2.css)({
23
+ alignItems: 'baseline',
24
+ display: 'flex',
25
+ gap: "var(--ds-space-250, 20px)",
26
+ minHeight: '60px'
27
+ });
28
+ var JiraSearchContainer = function JiraSearchContainer(props) {
29
+ var parameters = props.parameters,
30
+ onSearch = props.onSearch;
31
+ var _ref = parameters || {},
32
+ cloudId = _ref.cloudId,
33
+ initialJql = _ref.value;
34
+ var _useIntl = (0, _reactIntlNext.useIntl)(),
35
+ formatMessage = _useIntl.formatMessage;
36
+ var basicModeValue = 'basic';
37
+ var jqlModeValue = 'jql';
38
+ var _useState = (0, _react.useState)(''),
39
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
40
+ basicSearchTerm = _useState2[0],
41
+ setBasicSearchTerm = _useState2[1];
42
+ var _useState3 = (0, _react.useState)(initialJql ? jqlModeValue : basicModeValue),
43
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
44
+ currentSearchMode = _useState4[0],
45
+ setCurrentSearchMode = _useState4[1];
46
+ var _useState5 = (0, _react.useState)(initialJql || ''),
47
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
48
+ jql = _useState6[0],
49
+ setJql = _useState6[1];
50
+ var _useState7 = (0, _react.useState)(),
51
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
52
+ orderKey = _useState8[0],
53
+ setOrderKey = _useState8[1];
54
+ var _useState9 = (0, _react.useState)(),
55
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
56
+ orderDirection = _useState10[0],
57
+ setOrderDirection = _useState10[1];
58
+ var onSearchModeChange = function onSearchModeChange(searchMode) {
59
+ setCurrentSearchMode(searchMode);
60
+ };
61
+ var handleBasicSearchChange = function handleBasicSearchChange(e) {
62
+ var rawSearch = e.currentTarget.value;
63
+ setBasicSearchTerm(rawSearch);
64
+ setJql((0, _buildJQL.buildJQL)({
65
+ rawSearch: rawSearch,
66
+ orderDirection: orderDirection,
67
+ orderKey: orderKey
68
+ }));
69
+ };
70
+ var onQueryChange = function onQueryChange(query) {
71
+ var _query$split$map$filt, _fragments$at, _fragments$at2, _fragments$at3;
72
+ // determine if order keys have been set so they can be saved and persisted when changes occur in basic search
73
+ var fragments = (_query$split$map$filt = query === null || query === void 0 ? void 0 : query.split(/(^| )(order by)( |$)/i).map(function (item) {
74
+ return item.trim();
75
+ }).filter(Boolean)) !== null && _query$split$map$filt !== void 0 ? _query$split$map$filt : [];
76
+ var hasOrder = ((_fragments$at = fragments.at(-2)) === null || _fragments$at === void 0 ? void 0 : _fragments$at.toLowerCase()) === 'order by';
77
+ var key = hasOrder ? (_fragments$at2 = fragments.at(-1)) === null || _fragments$at2 === void 0 ? void 0 : _fragments$at2.split(' ').at(-2) : undefined;
78
+ var order = hasOrder ? (_fragments$at3 = fragments.at(-1)) === null || _fragments$at3 === void 0 ? void 0 : _fragments$at3.split(' ').at(-1) : undefined;
79
+
80
+ // TODO: confirm if these are the only order keys we want to preserve - existing whiteboard logic
81
+ if (key && ['key', 'summary', 'assignee', 'status'].includes(key)) {
82
+ setOrderKey(key);
83
+ setOrderDirection(order);
84
+ }
85
+ setJql(query);
86
+ };
87
+ var handleSearch = function handleSearch() {
88
+ onSearch({
89
+ value: jql,
90
+ type: 'jql'
91
+ });
92
+ };
93
+ return (0, _react2.jsx)("div", {
94
+ css: inputContainerStyles
95
+ }, currentSearchMode === basicModeValue && (0, _react2.jsx)(_basicSearchInput.BasicSearchInput, {
96
+ onChange: handleBasicSearchChange,
97
+ onSearch: handleSearch,
98
+ searchTerm: basicSearchTerm
99
+ }), currentSearchMode === jqlModeValue && (0, _react2.jsx)(_jqlEditor.JiraJQLEditor, {
100
+ cloudId: cloudId || '',
101
+ onChange: onQueryChange,
102
+ onSearch: handleSearch,
103
+ query: jql
104
+ }), (0, _react2.jsx)(_modeSwitcher.ModeSwitcher, {
105
+ onOptionValueChange: onSearchModeChange,
106
+ selectedOptionValue: currentSearchMode,
107
+ options: [{
108
+ label: formatMessage(_messages.modeSwitcherMessages.basicTextSearchLabel),
109
+ value: basicModeValue
110
+ }, {
111
+ label: 'JQL',
112
+ value: jqlModeValue
113
+ }]
114
+ }));
115
+ };
116
+ exports.JiraSearchContainer = JiraSearchContainer;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.modeSwitcherMessages = void 0;
7
+ var _reactIntlNext = require("react-intl-next");
8
+ var modeSwitcherMessages = (0, _reactIntlNext.defineMessages)({
9
+ basicTextSearchLabel: {
10
+ id: 'linkDataSource.jira-issues.configmodal.basicModeText',
11
+ description: 'Display text for basic text search toggle button',
12
+ defaultMessage: 'Basic'
13
+ }
14
+ });
15
+ exports.modeSwitcherMessages = modeSwitcherMessages;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.JiraJQLEditor = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _jqlEditor = require("@atlassianlabs/jql-editor");
10
+ var _jqlEditorAutocompleteRest = require("@atlassianlabs/jql-editor-autocomplete-rest");
11
+ var _makeGetJqlAutocompleteData = require("../../../../services/makeGetJqlAutocompleteData");
12
+ var _makeGetJqlSuggestionsData = require("../../../../services/makeGetJqlSuggestionsData");
13
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
+ var JiraJQLEditor = function JiraJQLEditor(props) {
16
+ var cloudId = props.cloudId,
17
+ onChange = props.onChange,
18
+ onSearch = props.onSearch,
19
+ query = props.query;
20
+ var autocompleteProvider = (0, _jqlEditorAutocompleteRest.useAutocompleteProvider)('link-datasource', (0, _makeGetJqlAutocompleteData.makeGetJqlAutocompleteData)(cloudId), (0, _makeGetJqlSuggestionsData.makeGetJqlSuggestionsData)(cloudId));
21
+
22
+ // This is an expected (pretty strange imo) way of making sure text field is in focus when rendered
23
+ var inputRef = (0, _react.useRef)({
24
+ focus: function focus() {}
25
+ });
26
+ (0, _react.useEffect)(function () {
27
+ requestAnimationFrame(function () {
28
+ var _inputRef$current;
29
+ (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
30
+ });
31
+ }, []);
32
+ return /*#__PURE__*/_react.default.createElement(_jqlEditor.JQLEditor, {
33
+ analyticsSource: "link-datasource",
34
+ autocompleteProvider: autocompleteProvider,
35
+ onSearch: onSearch,
36
+ onUpdate: onChange,
37
+ inputRef: inputRef,
38
+ query: query
39
+ });
40
+ };
41
+ exports.JiraJQLEditor = JiraJQLEditor;