@atlaskit/link-datasource 2.5.9 → 2.5.11

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 (221) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +1 -1
  3. package/dist/cjs/i18n/cs.js +0 -2
  4. package/dist/cjs/i18n/da.js +0 -2
  5. package/dist/cjs/i18n/de.js +0 -2
  6. package/dist/cjs/i18n/en.js +0 -2
  7. package/dist/cjs/i18n/en_GB.js +0 -2
  8. package/dist/cjs/i18n/en_ZZ.js +0 -2
  9. package/dist/cjs/i18n/es.js +0 -2
  10. package/dist/cjs/i18n/fi.js +0 -2
  11. package/dist/cjs/i18n/fr.js +0 -2
  12. package/dist/cjs/i18n/hu.js +0 -2
  13. package/dist/cjs/i18n/it.js +0 -2
  14. package/dist/cjs/i18n/ja.js +0 -2
  15. package/dist/cjs/i18n/ko.js +0 -2
  16. package/dist/cjs/i18n/nb.js +0 -2
  17. package/dist/cjs/i18n/nl.js +0 -2
  18. package/dist/cjs/i18n/pl.js +0 -2
  19. package/dist/cjs/i18n/pt_BR.js +0 -2
  20. package/dist/cjs/i18n/ru.js +0 -2
  21. package/dist/cjs/i18n/sv.js +0 -2
  22. package/dist/cjs/i18n/th.js +0 -2
  23. package/dist/cjs/i18n/tr.js +0 -2
  24. package/dist/cjs/i18n/uk.js +0 -2
  25. package/dist/cjs/i18n/vi.js +0 -2
  26. package/dist/cjs/i18n/zh.js +0 -2
  27. package/dist/cjs/i18n/zh_TW.js +0 -2
  28. package/dist/cjs/ui/common/modal/datasource-context/index.js +77 -0
  29. package/dist/cjs/ui/common/modal/datasources-table-in-modal-preview/index.js +47 -0
  30. package/dist/cjs/ui/common/modal/datasources-table-in-modal-preview/use-column-visibility/index.js +33 -0
  31. package/dist/cjs/ui/{jira-issues-modal → common/modal}/mode-switcher/index.js +19 -1
  32. package/dist/cjs/ui/common/modal/mode-switcher/useViewModeContext.js +42 -0
  33. package/dist/cjs/ui/common/modal/search-count/index.js +30 -51
  34. package/dist/cjs/ui/confluence-search-modal/modal/ModalOld.js +2 -2
  35. package/dist/cjs/ui/confluence-search-modal/modal/index.js +85 -126
  36. package/dist/cjs/ui/confluence-search-modal/modal/messages.js +0 -5
  37. package/dist/cjs/ui/jira-issues-modal/basic-filters/types.js +1 -1
  38. package/dist/cjs/ui/jira-issues-modal/basic-filters/utils/isQueryTooComplex.js +1 -1
  39. package/dist/cjs/ui/jira-issues-modal/jira-search-container/index.js +2 -2
  40. package/dist/cjs/ui/jira-issues-modal/modal/ModalOld.js +492 -0
  41. package/dist/cjs/ui/jira-issues-modal/modal/index.js +35 -38
  42. package/dist/cjs/ui/jira-issues-modal/modal/messages.js +0 -5
  43. package/dist/es2019/i18n/cs.js +0 -2
  44. package/dist/es2019/i18n/da.js +0 -2
  45. package/dist/es2019/i18n/de.js +0 -2
  46. package/dist/es2019/i18n/en.js +0 -2
  47. package/dist/es2019/i18n/en_GB.js +0 -2
  48. package/dist/es2019/i18n/en_ZZ.js +0 -2
  49. package/dist/es2019/i18n/es.js +0 -2
  50. package/dist/es2019/i18n/fi.js +0 -2
  51. package/dist/es2019/i18n/fr.js +0 -2
  52. package/dist/es2019/i18n/hu.js +0 -2
  53. package/dist/es2019/i18n/it.js +0 -2
  54. package/dist/es2019/i18n/ja.js +0 -2
  55. package/dist/es2019/i18n/ko.js +0 -2
  56. package/dist/es2019/i18n/nb.js +0 -2
  57. package/dist/es2019/i18n/nl.js +0 -2
  58. package/dist/es2019/i18n/pl.js +0 -2
  59. package/dist/es2019/i18n/pt_BR.js +0 -2
  60. package/dist/es2019/i18n/ru.js +0 -2
  61. package/dist/es2019/i18n/sv.js +0 -2
  62. package/dist/es2019/i18n/th.js +0 -2
  63. package/dist/es2019/i18n/tr.js +0 -2
  64. package/dist/es2019/i18n/uk.js +0 -2
  65. package/dist/es2019/i18n/vi.js +0 -2
  66. package/dist/es2019/i18n/zh.js +0 -2
  67. package/dist/es2019/i18n/zh_TW.js +0 -2
  68. package/dist/es2019/ui/common/modal/datasource-context/index.js +62 -0
  69. package/dist/es2019/ui/common/modal/datasources-table-in-modal-preview/index.js +41 -0
  70. package/dist/es2019/ui/common/modal/datasources-table-in-modal-preview/use-column-visibility/index.js +27 -0
  71. package/dist/es2019/ui/{jira-issues-modal → common/modal}/mode-switcher/index.js +19 -0
  72. package/dist/es2019/ui/common/modal/mode-switcher/useViewModeContext.js +26 -0
  73. package/dist/es2019/ui/common/modal/search-count/index.js +28 -50
  74. package/dist/es2019/ui/confluence-search-modal/modal/ModalOld.js +2 -2
  75. package/dist/es2019/ui/confluence-search-modal/modal/index.js +76 -100
  76. package/dist/es2019/ui/confluence-search-modal/modal/messages.js +0 -5
  77. package/dist/es2019/ui/jira-issues-modal/basic-filters/types.js +1 -1
  78. package/dist/es2019/ui/jira-issues-modal/basic-filters/utils/isQueryTooComplex.js +2 -2
  79. package/dist/es2019/ui/jira-issues-modal/jira-search-container/index.js +3 -3
  80. package/dist/es2019/ui/jira-issues-modal/modal/ModalOld.js +476 -0
  81. package/dist/es2019/ui/jira-issues-modal/modal/index.js +24 -18
  82. package/dist/es2019/ui/jira-issues-modal/modal/messages.js +0 -5
  83. package/dist/esm/i18n/cs.js +0 -2
  84. package/dist/esm/i18n/da.js +0 -2
  85. package/dist/esm/i18n/de.js +0 -2
  86. package/dist/esm/i18n/en.js +0 -2
  87. package/dist/esm/i18n/en_GB.js +0 -2
  88. package/dist/esm/i18n/en_ZZ.js +0 -2
  89. package/dist/esm/i18n/es.js +0 -2
  90. package/dist/esm/i18n/fi.js +0 -2
  91. package/dist/esm/i18n/fr.js +0 -2
  92. package/dist/esm/i18n/hu.js +0 -2
  93. package/dist/esm/i18n/it.js +0 -2
  94. package/dist/esm/i18n/ja.js +0 -2
  95. package/dist/esm/i18n/ko.js +0 -2
  96. package/dist/esm/i18n/nb.js +0 -2
  97. package/dist/esm/i18n/nl.js +0 -2
  98. package/dist/esm/i18n/pl.js +0 -2
  99. package/dist/esm/i18n/pt_BR.js +0 -2
  100. package/dist/esm/i18n/ru.js +0 -2
  101. package/dist/esm/i18n/sv.js +0 -2
  102. package/dist/esm/i18n/th.js +0 -2
  103. package/dist/esm/i18n/tr.js +0 -2
  104. package/dist/esm/i18n/uk.js +0 -2
  105. package/dist/esm/i18n/vi.js +0 -2
  106. package/dist/esm/i18n/zh.js +0 -2
  107. package/dist/esm/i18n/zh_TW.js +0 -2
  108. package/dist/esm/ui/common/modal/datasource-context/index.js +67 -0
  109. package/dist/esm/ui/common/modal/datasources-table-in-modal-preview/index.js +40 -0
  110. package/dist/esm/ui/common/modal/datasources-table-in-modal-preview/use-column-visibility/index.js +27 -0
  111. package/dist/esm/ui/{jira-issues-modal → common/modal}/mode-switcher/index.js +18 -0
  112. package/dist/esm/ui/common/modal/mode-switcher/useViewModeContext.js +31 -0
  113. package/dist/esm/ui/common/modal/search-count/index.js +27 -48
  114. package/dist/esm/ui/confluence-search-modal/modal/ModalOld.js +2 -2
  115. package/dist/esm/ui/confluence-search-modal/modal/index.js +85 -125
  116. package/dist/esm/ui/confluence-search-modal/modal/messages.js +0 -5
  117. package/dist/esm/ui/jira-issues-modal/basic-filters/types.js +1 -1
  118. package/dist/esm/ui/jira-issues-modal/basic-filters/utils/isQueryTooComplex.js +2 -2
  119. package/dist/esm/ui/jira-issues-modal/jira-search-container/index.js +3 -3
  120. package/dist/esm/ui/jira-issues-modal/modal/ModalOld.js +489 -0
  121. package/dist/esm/ui/jira-issues-modal/modal/index.js +37 -38
  122. package/dist/esm/ui/jira-issues-modal/modal/messages.js +0 -5
  123. package/dist/types/i18n/cs.d.ts +0 -2
  124. package/dist/types/i18n/da.d.ts +0 -2
  125. package/dist/types/i18n/de.d.ts +0 -2
  126. package/dist/types/i18n/en.d.ts +0 -2
  127. package/dist/types/i18n/en_GB.d.ts +0 -2
  128. package/dist/types/i18n/en_ZZ.d.ts +0 -2
  129. package/dist/types/i18n/es.d.ts +0 -2
  130. package/dist/types/i18n/fi.d.ts +0 -2
  131. package/dist/types/i18n/fr.d.ts +0 -2
  132. package/dist/types/i18n/hu.d.ts +0 -2
  133. package/dist/types/i18n/it.d.ts +0 -2
  134. package/dist/types/i18n/ja.d.ts +0 -2
  135. package/dist/types/i18n/ko.d.ts +0 -2
  136. package/dist/types/i18n/nb.d.ts +0 -2
  137. package/dist/types/i18n/nl.d.ts +0 -2
  138. package/dist/types/i18n/pl.d.ts +0 -2
  139. package/dist/types/i18n/pt_BR.d.ts +0 -2
  140. package/dist/types/i18n/ru.d.ts +0 -2
  141. package/dist/types/i18n/sv.d.ts +0 -2
  142. package/dist/types/i18n/th.d.ts +0 -2
  143. package/dist/types/i18n/tr.d.ts +0 -2
  144. package/dist/types/i18n/uk.d.ts +0 -2
  145. package/dist/types/i18n/vi.d.ts +0 -2
  146. package/dist/types/i18n/zh.d.ts +0 -2
  147. package/dist/types/i18n/zh_TW.d.ts +0 -2
  148. package/dist/types/ui/common/modal/datasource-context/index.d.ts +24 -0
  149. package/dist/types/ui/common/modal/datasources-table-in-modal-preview/index.d.ts +5 -0
  150. package/dist/types/ui/common/modal/datasources-table-in-modal-preview/use-column-resize/index.d.ts +3 -0
  151. package/dist/types/ui/common/modal/datasources-table-in-modal-preview/use-column-visibility/index.d.ts +11 -0
  152. package/dist/types/ui/common/modal/datasources-table-in-modal-preview/use-column-wrapping/index.d.ts +3 -0
  153. package/dist/{types-ts4.5/ui/jira-issues-modal → types/ui/common/modal}/mode-switcher/index.d.ts +1 -0
  154. package/dist/types/ui/common/modal/mode-switcher/useViewModeContext.d.ts +14 -0
  155. package/dist/types/ui/common/modal/search-count/index.d.ts +1 -5
  156. package/dist/types/ui/confluence-search-modal/modal/messages.d.ts +0 -5
  157. package/dist/types/ui/jira-issues-modal/modal/ModalOld.d.ts +3 -0
  158. package/dist/types/ui/jira-issues-modal/modal/messages.d.ts +0 -5
  159. package/dist/types-ts4.5/i18n/cs.d.ts +0 -2
  160. package/dist/types-ts4.5/i18n/da.d.ts +0 -2
  161. package/dist/types-ts4.5/i18n/de.d.ts +0 -2
  162. package/dist/types-ts4.5/i18n/en.d.ts +0 -2
  163. package/dist/types-ts4.5/i18n/en_GB.d.ts +0 -2
  164. package/dist/types-ts4.5/i18n/en_ZZ.d.ts +0 -2
  165. package/dist/types-ts4.5/i18n/es.d.ts +0 -2
  166. package/dist/types-ts4.5/i18n/fi.d.ts +0 -2
  167. package/dist/types-ts4.5/i18n/fr.d.ts +0 -2
  168. package/dist/types-ts4.5/i18n/hu.d.ts +0 -2
  169. package/dist/types-ts4.5/i18n/it.d.ts +0 -2
  170. package/dist/types-ts4.5/i18n/ja.d.ts +0 -2
  171. package/dist/types-ts4.5/i18n/ko.d.ts +0 -2
  172. package/dist/types-ts4.5/i18n/nb.d.ts +0 -2
  173. package/dist/types-ts4.5/i18n/nl.d.ts +0 -2
  174. package/dist/types-ts4.5/i18n/pl.d.ts +0 -2
  175. package/dist/types-ts4.5/i18n/pt_BR.d.ts +0 -2
  176. package/dist/types-ts4.5/i18n/ru.d.ts +0 -2
  177. package/dist/types-ts4.5/i18n/sv.d.ts +0 -2
  178. package/dist/types-ts4.5/i18n/th.d.ts +0 -2
  179. package/dist/types-ts4.5/i18n/tr.d.ts +0 -2
  180. package/dist/types-ts4.5/i18n/uk.d.ts +0 -2
  181. package/dist/types-ts4.5/i18n/vi.d.ts +0 -2
  182. package/dist/types-ts4.5/i18n/zh.d.ts +0 -2
  183. package/dist/types-ts4.5/i18n/zh_TW.d.ts +0 -2
  184. package/dist/types-ts4.5/ui/common/modal/datasource-context/index.d.ts +24 -0
  185. package/dist/types-ts4.5/ui/common/modal/datasources-table-in-modal-preview/index.d.ts +5 -0
  186. package/dist/types-ts4.5/ui/common/modal/datasources-table-in-modal-preview/use-column-resize/index.d.ts +3 -0
  187. package/dist/types-ts4.5/ui/common/modal/datasources-table-in-modal-preview/use-column-visibility/index.d.ts +11 -0
  188. package/dist/types-ts4.5/ui/common/modal/datasources-table-in-modal-preview/use-column-wrapping/index.d.ts +3 -0
  189. package/dist/{types/ui/jira-issues-modal → types-ts4.5/ui/common/modal}/mode-switcher/index.d.ts +1 -0
  190. package/dist/types-ts4.5/ui/common/modal/mode-switcher/useViewModeContext.d.ts +14 -0
  191. package/dist/types-ts4.5/ui/common/modal/search-count/index.d.ts +1 -5
  192. package/dist/types-ts4.5/ui/confluence-search-modal/modal/messages.d.ts +0 -5
  193. package/dist/types-ts4.5/ui/jira-issues-modal/modal/ModalOld.d.ts +3 -0
  194. package/dist/types-ts4.5/ui/jira-issues-modal/modal/messages.d.ts +0 -5
  195. package/examples-helpers/useCommonTableProps.tsx +2 -2
  196. package/package.json +9 -12
  197. package/dist/cjs/ui/common/modal/datasource-context/DatasourceContext.js +0 -18
  198. package/dist/cjs/ui/common/modal/datasource-context/DatasourceContextProvider.js +0 -35
  199. package/dist/cjs/ui/datasources-table-in-modal-preview/index.js +0 -26
  200. package/dist/es2019/ui/common/modal/datasource-context/DatasourceContext.js +0 -9
  201. package/dist/es2019/ui/common/modal/datasource-context/DatasourceContextProvider.js +0 -27
  202. package/dist/es2019/ui/datasources-table-in-modal-preview/index.js +0 -20
  203. package/dist/esm/ui/common/modal/datasource-context/DatasourceContext.js +0 -9
  204. package/dist/esm/ui/common/modal/datasource-context/DatasourceContextProvider.js +0 -26
  205. package/dist/esm/ui/datasources-table-in-modal-preview/index.js +0 -19
  206. package/dist/types/ui/common/modal/datasource-context/DatasourceContext.d.ts +0 -11
  207. package/dist/types/ui/common/modal/datasource-context/DatasourceContextProvider.d.ts +0 -10
  208. package/dist/types/ui/datasources-table-in-modal-preview/index.d.ts +0 -20
  209. package/dist/types/ui/issue-like-table/use-column-resize/index.d.ts +0 -5
  210. package/dist/types/ui/issue-like-table/use-column-wrapping/index.d.ts +0 -4
  211. package/dist/types-ts4.5/ui/common/modal/datasource-context/DatasourceContext.d.ts +0 -11
  212. package/dist/types-ts4.5/ui/common/modal/datasource-context/DatasourceContextProvider.d.ts +0 -10
  213. package/dist/types-ts4.5/ui/datasources-table-in-modal-preview/index.d.ts +0 -20
  214. package/dist/types-ts4.5/ui/issue-like-table/use-column-resize/index.d.ts +0 -5
  215. package/dist/types-ts4.5/ui/issue-like-table/use-column-wrapping/index.d.ts +0 -4
  216. /package/dist/cjs/ui/{issue-like-table → common/modal/datasources-table-in-modal-preview}/use-column-resize/index.js +0 -0
  217. /package/dist/cjs/ui/{issue-like-table → common/modal/datasources-table-in-modal-preview}/use-column-wrapping/index.js +0 -0
  218. /package/dist/es2019/ui/{issue-like-table → common/modal/datasources-table-in-modal-preview}/use-column-resize/index.js +0 -0
  219. /package/dist/es2019/ui/{issue-like-table → common/modal/datasources-table-in-modal-preview}/use-column-wrapping/index.js +0 -0
  220. /package/dist/esm/ui/{issue-like-table → common/modal/datasources-table-in-modal-preview}/use-column-resize/index.js +0 -0
  221. /package/dist/esm/ui/{issue-like-table → common/modal/datasources-table-in-modal-preview}/use-column-wrapping/index.js +0 -0
@@ -1,7 +1,7 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import mergeWith from 'lodash/mergeWith';
3
3
  import { AbstractJastVisitor, COMPOUND_OPERATOR_AND, COMPOUND_OPERATOR_OR, JastBuilder, OPERATOR_EQUALS, OPERATOR_IN, OPERATOR_LIKE } from '@atlaskit/jql-ast';
4
- import { getBooleanFF } from '@atlaskit/platform-feature-flags';
4
+ import { fg } from '@atlaskit/platform-feature-flags';
5
5
  import { ALLOWED_ORDER_BY_KEYS } from '../../jira-search-container';
6
6
  import { isClauseTooComplex } from './isClauseTooComplex';
7
7
  import { isValidJql } from './index';
@@ -83,7 +83,7 @@ class JqlClauseCollectingVisitor extends AbstractJastVisitor {
83
83
  }
84
84
  }
85
85
  export const isQueryTooComplex = jql => {
86
- if (!getBooleanFF('platform.linking-platform.datasource.show-jlol-basic-filters') || !jql) {
86
+ if (!fg('platform.linking-platform.datasource.show-jlol-basic-filters') || !jql) {
87
87
  return false;
88
88
  }
89
89
  if (!isValidJql(jql)) {
@@ -5,17 +5,17 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react';
5
5
  import { css, jsx } from '@emotion/react';
6
6
  import { useIntl } from 'react-intl-next';
7
7
  import { useDebouncedCallback } from 'use-debounce';
8
- import { getBooleanFF } from '@atlaskit/platform-feature-flags';
8
+ import { fg } from '@atlaskit/platform-feature-flags';
9
9
  import { Flex, xcss } from '@atlaskit/primitives';
10
10
  import { useDatasourceAnalyticsEvents } from '../../../analytics';
11
11
  import { BasicSearchInput } from '../../common/modal/basic-search-input';
12
12
  import { basicSearchInputMessages } from '../../common/modal/basic-search-input/messages';
13
+ import { ModeSwitcher } from '../../common/modal/mode-switcher';
13
14
  import { FILTER_SELECTION_DEBOUNCE_MS } from '../../common/modal/popup-select/constants';
14
15
  import { BasicFilters } from '../basic-filters';
15
16
  import { useHydrateJqlQuery } from '../basic-filters/hooks/useHydrateJqlQuery';
16
17
  import { isQueryTooComplex } from '../basic-filters/utils/isQueryTooComplex';
17
18
  import { JiraJQLEditor } from '../jql-editor';
18
- import { ModeSwitcher } from '../mode-switcher';
19
19
  import { buildJQL } from './buildJQL';
20
20
  import { modeSwitcherMessages } from './messages';
21
21
  const inputContainerStyles = css({
@@ -56,7 +56,7 @@ export const JiraSearchContainer = props => {
56
56
  const [orderDirection, setOrderDirection] = useState();
57
57
  const [filterSelections, setFilterSelections] = useState({});
58
58
  const showBasicFilters = useMemo(() => {
59
- if (getBooleanFF('platform.linking-platform.datasource.show-jlol-basic-filters')) {
59
+ if (fg('platform.linking-platform.datasource.show-jlol-basic-filters')) {
60
60
  return true;
61
61
  }
62
62
  return false;
@@ -0,0 +1,476 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ /* eslint-disable @atlaskit/platform/no-preconditioning */
3
+ /** @jsx jsx */
4
+ import { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react';
5
+
6
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
7
+ import { jsx } from '@emotion/react';
8
+ import { FormattedMessage } from 'react-intl-next';
9
+ import Button from '@atlaskit/button/standard-button';
10
+ import { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
11
+ import { ModalBody, ModalFooter, ModalHeader, ModalTitle, ModalTransition } from '@atlaskit/modal-dialog';
12
+ import { fg } from '@atlaskit/platform-feature-flags';
13
+ import { EVENT_CHANNEL, useDatasourceAnalyticsEvents } from '../../../analytics';
14
+ import { DatasourceAction, DatasourceDisplay } from '../../../analytics/types';
15
+ import { startUfoExperience } from '../../../analytics/ufoExperiences';
16
+ import { useColumnPickerRenderedFailedUfoExperience } from '../../../analytics/ufoExperiences/hooks/useColumnPickerRenderedFailedUfoExperience';
17
+ import { useDataRenderedUfoExperience } from '../../../analytics/ufoExperiences/hooks/useDataRenderedUfoExperience';
18
+ import { mapSearchMethod } from '../../../analytics/utils';
19
+ import { buildDatasourceAdf } from '../../../common/utils/adf';
20
+ import { fetchMessagesForLocale } from '../../../common/utils/locale/fetch-messages-for-locale';
21
+ import { useDatasourceExperienceId } from '../../../contexts/datasource-experience-id';
22
+ import { useUserInteractions } from '../../../contexts/user-interactions';
23
+ import { useDatasourceTableState } from '../../../hooks/useDatasourceTableState';
24
+ import i18nEN from '../../../i18n/en';
25
+ import { useAvailableSites } from '../../../services/useAvailableSites';
26
+ import { AccessRequired } from '../../common/error-state/access-required';
27
+ import { loadingErrorMessages } from '../../common/error-state/messages';
28
+ import { ModalLoadingError } from '../../common/error-state/modal-loading-error';
29
+ import { NoInstancesView } from '../../common/error-state/no-instances';
30
+ import { NoResults } from '../../common/error-state/no-results';
31
+ import { InitialStateView } from '../../common/initial-state-view';
32
+ import { initialStateViewMessages } from '../../common/initial-state-view/messages';
33
+ import { CancelButton } from '../../common/modal/cancel-button';
34
+ import { ContentContainer } from '../../common/modal/content-container';
35
+ import { SmartCardPlaceholder, SmartLink } from '../../common/modal/count-view-smart-link';
36
+ import { DatasourceModal } from '../../common/modal/datasource-modal';
37
+ import { useColumnResize } from '../../common/modal/datasources-table-in-modal-preview/use-column-resize';
38
+ import { useColumnWrapping } from '../../common/modal/datasources-table-in-modal-preview/use-column-wrapping';
39
+ import { DisplayViewDropDown } from '../../common/modal/display-view-dropdown/display-view-drop-down';
40
+ import TableSearchCount from '../../common/modal/search-count';
41
+ import { SiteSelector } from '../../common/modal/site-selector';
42
+ import { EmptyState, IssueLikeDataTableView } from '../../issue-like-table';
43
+ import { getColumnAction } from '../../issue-like-table/utils';
44
+ import { availableBasicFilterTypes } from '../basic-filters/ui';
45
+ import { isQueryTooComplex } from '../basic-filters/utils/isQueryTooComplex';
46
+ import { JiraSearchContainer } from '../jira-search-container';
47
+ import { JiraInitialStateSVG } from './jira-issues-initial-state-svg';
48
+ import { modalMessages } from './messages';
49
+ const getDisplayValue = (currentViewMode, itemCount) => {
50
+ if (currentViewMode === 'table') {
51
+ return DatasourceDisplay.DATASOURCE_TABLE;
52
+ }
53
+ return itemCount === 1 ? DatasourceDisplay.INLINE : DatasourceDisplay.DATASOURCE_INLINE;
54
+ };
55
+ const jqlSupportDocumentLink = 'https://support.atlassian.com/jira-service-management-cloud/docs/use-advanced-search-with-jira-query-language-jql/';
56
+ export const PlainJiraIssuesConfigModalOld = props => {
57
+ const {
58
+ datasourceId,
59
+ columnCustomSizes: initialColumnCustomSizes,
60
+ wrappedColumnKeys: initialWrappedColumnKeys,
61
+ onCancel,
62
+ onInsert,
63
+ viewMode = 'table',
64
+ parameters: initialParameters,
65
+ url: urlBeingEdited,
66
+ visibleColumnKeys: initialVisibleColumnKeys
67
+ } = props;
68
+ const [currentViewMode, setCurrentViewMode] = useState(viewMode);
69
+ const [cloudId, setCloudId] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.cloudId);
70
+ const {
71
+ availableSites,
72
+ selectedSite: selectedJiraSite
73
+ } = useAvailableSites('jira', cloudId);
74
+ const [jql, setJql] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.jql);
75
+ const [searchBarJql, setSearchBarJql] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.jql);
76
+ const [visibleColumnKeys, setVisibleColumnKeys] = useState(initialVisibleColumnKeys);
77
+
78
+ // analytics related parameters
79
+ const searchCount = useRef(0);
80
+ const userInteractions = useUserInteractions();
81
+ const initialSearchMethod = fg('platform.linking-platform.datasource.show-jlol-basic-filters') && !isQueryTooComplex((initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.jql) || '') ? 'basic' : 'jql';
82
+ const [currentSearchMethod, setCurrentSearchMethod] = useState(initialSearchMethod);
83
+ const searchMethodSearchedWith = useRef(null);
84
+ const visibleColumnCount = useRef((visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.length) || 0);
85
+ const basicFilterSelectionsSearchedWith = useRef({});
86
+ const isSearchedWithComplexQuery = useRef(false);
87
+ const parameters = useMemo(() => !!cloudId ? {
88
+ cloudId,
89
+ jql: jql || ''
90
+ } : undefined, [cloudId, jql]);
91
+ const isParametersSet = !!(jql && cloudId);
92
+ const {
93
+ columnCustomSizes,
94
+ onColumnResize
95
+ } = useColumnResize(initialColumnCustomSizes);
96
+ const {
97
+ wrappedColumnKeys,
98
+ onWrappedColumnChange
99
+ } = useColumnWrapping(initialWrappedColumnKeys);
100
+ const {
101
+ reset,
102
+ status,
103
+ onNextPage,
104
+ responseItems,
105
+ hasNextPage,
106
+ columns,
107
+ defaultVisibleColumnKeys,
108
+ loadDatasourceDetails,
109
+ totalCount,
110
+ extensionKey = null,
111
+ destinationObjectTypes
112
+ } = useDatasourceTableState({
113
+ datasourceId,
114
+ parameters: isParametersSet ? parameters : undefined,
115
+ fieldKeys: visibleColumnKeys
116
+ });
117
+ const {
118
+ fireEvent
119
+ } = useDatasourceAnalyticsEvents();
120
+ const experienceId = useDatasourceExperienceId();
121
+ const analyticsPayload = useMemo(() => ({
122
+ extensionKey,
123
+ destinationObjectTypes
124
+ }), [destinationObjectTypes, extensionKey]);
125
+ const resolvedWithNoResults = status === 'resolved' && !responseItems.length;
126
+ const jqlUrl = selectedJiraSite && jql && `${selectedJiraSite.url}/issues/?jql=${encodeURI(jql)}`;
127
+ const isInsertDisabled = !isParametersSet || status === 'rejected' || status === 'unauthorized' || status === 'loading';
128
+ const shouldShowIssueCount = !!totalCount && totalCount !== 1 && currentViewMode === 'table';
129
+ const isDataReady = (visibleColumnKeys || []).length > 0;
130
+ const hasNoJiraSites = availableSites && availableSites.length === 0;
131
+ useEffect(() => {
132
+ if (availableSites) {
133
+ fireEvent('ui.modal.ready.datasource', {
134
+ instancesCount: availableSites.length,
135
+ schemasCount: null
136
+ });
137
+ }
138
+ }, [fireEvent, availableSites]);
139
+ useEffect(() => {
140
+ const shouldStartUfoExperience = status === 'loading';
141
+ if (shouldStartUfoExperience) {
142
+ startUfoExperience({
143
+ name: 'datasource-rendered'
144
+ }, experienceId);
145
+ }
146
+ }, [experienceId, status]);
147
+ useDataRenderedUfoExperience({
148
+ status,
149
+ experienceId: experienceId,
150
+ itemCount: responseItems.length,
151
+ canBeLink: currentViewMode === 'inline',
152
+ extensionKey
153
+ });
154
+ useEffect(() => {
155
+ const newVisibleColumnKeys = !initialVisibleColumnKeys || (initialVisibleColumnKeys || []).length === 0 ? defaultVisibleColumnKeys : initialVisibleColumnKeys;
156
+ visibleColumnCount.current = newVisibleColumnKeys.length;
157
+ setVisibleColumnKeys(newVisibleColumnKeys);
158
+ }, [initialVisibleColumnKeys, defaultVisibleColumnKeys]);
159
+ useEffect(() => {
160
+ if (selectedJiraSite && (!cloudId || cloudId !== selectedJiraSite.cloudId)) {
161
+ setCloudId(selectedJiraSite.cloudId);
162
+ }
163
+ }, [cloudId, selectedJiraSite]);
164
+ const fireSingleItemViewedEvent = useCallback(() => {
165
+ fireEvent('ui.link.viewed.singleItem', {
166
+ ...analyticsPayload,
167
+ searchMethod: mapSearchMethod(searchMethodSearchedWith.current)
168
+ });
169
+ }, [analyticsPayload, fireEvent]);
170
+ const fireCountViewedEvent = useCallback(() => {
171
+ fireEvent('ui.link.viewed.count', {
172
+ ...analyticsPayload,
173
+ searchMethod: mapSearchMethod(searchMethodSearchedWith.current),
174
+ totalItemCount: totalCount || 0
175
+ });
176
+ }, [analyticsPayload, fireEvent, totalCount]);
177
+ const fireTableViewedEvent = useCallback(() => {
178
+ if (isDataReady) {
179
+ fireEvent('ui.table.viewed.datasourceConfigModal', {
180
+ ...analyticsPayload,
181
+ totalItemCount: totalCount || 0,
182
+ searchMethod: mapSearchMethod(searchMethodSearchedWith.current),
183
+ displayedColumnCount: visibleColumnCount.current
184
+ });
185
+ }
186
+ }, [analyticsPayload, fireEvent, totalCount, isDataReady]);
187
+ const fireIssueViewAnalytics = useCallback(() => {
188
+ if (!totalCount) {
189
+ return;
190
+ }
191
+ if (totalCount > 1) {
192
+ fireTableViewedEvent();
193
+ } else if (totalCount === 1) {
194
+ fireSingleItemViewedEvent();
195
+ }
196
+ }, [fireSingleItemViewedEvent, fireTableViewedEvent, totalCount]);
197
+ useEffect(() => {
198
+ const isResolved = status === 'resolved';
199
+ const isIssueViewMode = currentViewMode === 'table';
200
+ const isCountViewMode = currentViewMode === 'inline';
201
+ if (!isResolved) {
202
+ return;
203
+ }
204
+ if (isIssueViewMode) {
205
+ fireIssueViewAnalytics();
206
+ } else if (isCountViewMode) {
207
+ fireCountViewedEvent();
208
+ }
209
+ }, [currentViewMode, status, fireIssueViewAnalytics, fireCountViewedEvent]);
210
+ useColumnPickerRenderedFailedUfoExperience(status, experienceId);
211
+ const onSearch = useCallback((newParameters, {
212
+ searchMethod,
213
+ basicFilterSelections,
214
+ isQueryComplex
215
+ }) => {
216
+ searchCount.current++;
217
+ searchMethodSearchedWith.current = searchMethod;
218
+ basicFilterSelectionsSearchedWith.current = basicFilterSelections;
219
+ isSearchedWithComplexQuery.current = isQueryComplex;
220
+ if (jql !== newParameters.jql) {
221
+ userInteractions.add(DatasourceAction.QUERY_UPDATED);
222
+ }
223
+ setJql(newParameters.jql);
224
+ reset({
225
+ shouldForceRequest: true
226
+ });
227
+ }, [jql, reset, userInteractions]);
228
+ const onSiteSelection = useCallback(site => {
229
+ userInteractions.add(DatasourceAction.INSTANCE_UPDATED);
230
+ setJql('');
231
+ setCloudId(site.cloudId);
232
+ reset({
233
+ shouldForceRequest: true
234
+ });
235
+ }, [reset, userInteractions]);
236
+ const retrieveUrlForSmartCardRender = useCallback(() => {
237
+ var _data$key, _data$key$data;
238
+ const [data] = responseItems;
239
+ // agreement with BE that we will use `key` for rendering smartlink
240
+ return data === null || data === void 0 ? void 0 : (_data$key = data.key) === null || _data$key === void 0 ? void 0 : (_data$key$data = _data$key.data) === null || _data$key$data === void 0 ? void 0 : _data$key$data.url;
241
+ }, [responseItems]);
242
+ const onInsertPressed = useCallback((e, analyticsEvent) => {
243
+ var _insertButtonClickedE;
244
+ if (!isParametersSet || !jql || !selectedJiraSite) {
245
+ return;
246
+ }
247
+
248
+ // During insertion, we want the JQL of the datasource to be whatever is in the search bar,
249
+ // even if the user didn't previously click search
250
+ const upToDateJql = searchBarJql !== null && searchBarJql !== void 0 ? searchBarJql : jql;
251
+ const upToDateJqlUrl = selectedJiraSite && jql && `${selectedJiraSite.url}/issues/?jql=${encodeURIComponent(upToDateJql)}`;
252
+ const filterSelectionCount = availableBasicFilterTypes.reduce((current, filter) => {
253
+ var _basicFilterSelection;
254
+ return {
255
+ ...current,
256
+ [`${filter}BasicFilterSelectionCount`]: ((_basicFilterSelection = basicFilterSelectionsSearchedWith.current[filter]) === null || _basicFilterSelection === void 0 ? void 0 : _basicFilterSelection.length) || 0
257
+ };
258
+ }, {});
259
+ const insertButtonClickedEvent = analyticsEvent.update({
260
+ actionSubjectId: 'insert',
261
+ attributes: {
262
+ ...analyticsPayload,
263
+ totalItemCount: totalCount || 0,
264
+ displayedColumnCount: visibleColumnCount.current,
265
+ display: getDisplayValue(currentViewMode, totalCount || 0),
266
+ searchCount: searchCount.current,
267
+ searchMethod: mapSearchMethod(searchMethodSearchedWith.current),
268
+ actions: userInteractions.get(),
269
+ isQueryComplex: isSearchedWithComplexQuery.current,
270
+ ...(searchMethodSearchedWith.current === 'basic' ? {
271
+ ...filterSelectionCount
272
+ } : {})
273
+ },
274
+ eventType: 'ui'
275
+ });
276
+
277
+ // additional event for tracking in confluence against JIM
278
+ const macroInsertedEvent = analyticsEvent.clone();
279
+ macroInsertedEvent === null || macroInsertedEvent === void 0 ? void 0 : macroInsertedEvent.update({
280
+ eventType: 'track',
281
+ action: 'inserted',
282
+ actionSubject: 'macro',
283
+ actionSubjectId: 'jlol',
284
+ attributes: {
285
+ ...analyticsPayload,
286
+ totalItemCount: totalCount || 0,
287
+ displayedColumnCount: visibleColumnCount.current,
288
+ display: getDisplayValue(currentViewMode, totalCount || 0),
289
+ searchCount: searchCount.current,
290
+ searchMethod: mapSearchMethod(searchMethodSearchedWith.current),
291
+ actions: userInteractions.get()
292
+ }
293
+ });
294
+ const consumerEvent = (_insertButtonClickedE = insertButtonClickedEvent.clone()) !== null && _insertButtonClickedE !== void 0 ? _insertButtonClickedE : undefined;
295
+ insertButtonClickedEvent.fire(EVENT_CHANNEL);
296
+ const firstIssueUrl = retrieveUrlForSmartCardRender();
297
+ if (currentViewMode === 'inline') {
298
+ macroInsertedEvent === null || macroInsertedEvent === void 0 ? void 0 : macroInsertedEvent.fire(EVENT_CHANNEL);
299
+ const url = responseItems.length === 1 ? firstIssueUrl : upToDateJqlUrl;
300
+ onInsert({
301
+ type: 'inlineCard',
302
+ attrs: {
303
+ url
304
+ }
305
+ }, consumerEvent);
306
+ } else {
307
+ onInsert(buildDatasourceAdf({
308
+ id: datasourceId,
309
+ parameters: {
310
+ cloudId,
311
+ jql: upToDateJql // TODO support non JQL type
312
+ },
313
+ views: [{
314
+ type: 'table',
315
+ properties: {
316
+ columns: (visibleColumnKeys || []).map(key => {
317
+ const width = columnCustomSizes === null || columnCustomSizes === void 0 ? void 0 : columnCustomSizes[key];
318
+ const isWrapped = wrappedColumnKeys === null || wrappedColumnKeys === void 0 ? void 0 : wrappedColumnKeys.includes(key);
319
+ return {
320
+ key,
321
+ ...(width ? {
322
+ width
323
+ } : {}),
324
+ ...(isWrapped ? {
325
+ isWrapped
326
+ } : {})
327
+ };
328
+ })
329
+ }
330
+ }]
331
+ }, upToDateJqlUrl), consumerEvent);
332
+ }
333
+ }, [isParametersSet, jql, selectedJiraSite, searchBarJql, analyticsPayload, totalCount, currentViewMode, retrieveUrlForSmartCardRender, responseItems.length, onInsert, datasourceId, cloudId, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys, userInteractions]);
334
+ const handleViewModeChange = selectedMode => {
335
+ userInteractions.add(DatasourceAction.DISPLAY_VIEW_CHANGED);
336
+ setCurrentViewMode(selectedMode);
337
+ };
338
+ const handleOnNextPage = useCallback((onNextPageProps = {}) => {
339
+ userInteractions.add(DatasourceAction.NEXT_PAGE_SCROLLED);
340
+ onNextPage(onNextPageProps);
341
+ }, [onNextPage, userInteractions]);
342
+ const handleVisibleColumnKeysChange = useCallback((newVisibleColumnKeys = []) => {
343
+ const columnAction = getColumnAction(visibleColumnKeys || [], newVisibleColumnKeys);
344
+ userInteractions.add(columnAction);
345
+ visibleColumnCount.current = newVisibleColumnKeys.length;
346
+ setVisibleColumnKeys(newVisibleColumnKeys);
347
+ }, [visibleColumnKeys, userInteractions]);
348
+ const issueLikeDataTableView = useMemo(() => jsx(ContentContainer, {
349
+ withTableBorder: true
350
+ }, jsx(IssueLikeDataTableView, {
351
+ testId: "jira-datasource-table",
352
+ status: status,
353
+ columns: columns,
354
+ items: responseItems,
355
+ hasNextPage: hasNextPage,
356
+ visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
357
+ onNextPage: handleOnNextPage,
358
+ onLoadDatasourceDetails: loadDatasourceDetails,
359
+ onVisibleColumnKeysChange: handleVisibleColumnKeysChange,
360
+ extensionKey: extensionKey,
361
+ columnCustomSizes: columnCustomSizes,
362
+ onColumnResize: onColumnResize,
363
+ wrappedColumnKeys: wrappedColumnKeys,
364
+ onWrappedColumnChange: fg('platform.linking-platform.datasource-word_wrap') ? onWrappedColumnChange : undefined
365
+ })), [status, columns, responseItems, hasNextPage, visibleColumnKeys, defaultVisibleColumnKeys, handleOnNextPage, loadDatasourceDetails, handleVisibleColumnKeysChange, extensionKey, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange]);
366
+ const renderCountModeContent = useCallback(() => {
367
+ const selectedJiraSiteUrl = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
368
+ if (status === 'unauthorized') {
369
+ return jsx(AccessRequired, {
370
+ url: selectedJiraSiteUrl || urlBeingEdited
371
+ });
372
+ } else if (status === 'empty' || !jql || !selectedJiraSiteUrl) {
373
+ return jsx(SmartCardPlaceholder, {
374
+ placeholderText: modalMessages.issuesCountSmartCardPlaceholderText
375
+ });
376
+ } else {
377
+ let url;
378
+ if (responseItems.length === 1 && retrieveUrlForSmartCardRender()) {
379
+ url = retrieveUrlForSmartCardRender();
380
+ } else {
381
+ url = `${selectedJiraSiteUrl}/issues/?jql=${encodeURIComponent(jql)}`;
382
+ }
383
+ return jsx(SmartLink, {
384
+ url: url
385
+ });
386
+ }
387
+ }, [jql, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited, responseItems, retrieveUrlForSmartCardRender]);
388
+ const renderIssuesModeContent = useCallback(() => {
389
+ const selectedJiraSiteUrl = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
390
+ if (status === 'rejected' && jqlUrl) {
391
+ return jsx(ModalLoadingError, {
392
+ errorMessage: jqlUrl ? jsx(FormattedMessage, _extends({}, modalMessages.checkConnectionWithSource, {
393
+ values: {
394
+ a: urlText => jsx("a", {
395
+ href: jqlUrl
396
+ }, urlText)
397
+ }
398
+ })) : undefined
399
+ });
400
+ } else if (status === 'unauthorized') {
401
+ return jsx(AccessRequired, {
402
+ url: selectedJiraSiteUrl || urlBeingEdited
403
+ });
404
+ } else if (resolvedWithNoResults || status === 'forbidden') {
405
+ return jsx(NoResults, null);
406
+ } else if (status === 'empty' || !columns.length) {
407
+ // persist the empty state when making the initial /data request which contains the columns
408
+ return jsx(ContentContainer, {
409
+ withTableBorder: !!jql
410
+ }, !!jql ? jsx(EmptyState, {
411
+ testId: `jira-datasource-modal--empty-state`
412
+ }) : jsx(InitialStateView, {
413
+ showBeta: !fg('platform.linking-platform.datasource.show-jlol-basic-filters'),
414
+ icon: jsx(JiraInitialStateSVG, null),
415
+ title: modalMessages.searchJiraTitle,
416
+ description: currentSearchMethod === 'jql' ? initialStateViewMessages.searchDescriptionForJQLSearch : initialStateViewMessages.searchDescriptionForBasicSearch,
417
+ learnMoreLink: currentSearchMethod === 'jql' ? {
418
+ href: jqlSupportDocumentLink,
419
+ text: initialStateViewMessages.learnMoreLink
420
+ } : undefined
421
+ }));
422
+ }
423
+ return issueLikeDataTableView;
424
+ }, [columns.length, currentSearchMethod, issueLikeDataTableView, jql, jqlUrl, resolvedWithNoResults, selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url, status, urlBeingEdited]);
425
+ const siteSelectorLabel = availableSites && availableSites.length > 1 ? modalMessages.insertIssuesTitleManySites : modalMessages.insertIssuesTitle;
426
+ const getCancelButtonAnalyticsPayload = useCallback(() => {
427
+ return {
428
+ ...analyticsPayload,
429
+ searchCount: searchCount.current,
430
+ actions: userInteractions.get()
431
+ };
432
+ }, [analyticsPayload, userInteractions]);
433
+ return jsx(IntlMessagesProvider, {
434
+ defaultMessages: i18nEN,
435
+ loaderFn: fetchMessagesForLocale
436
+ }, jsx(ModalTransition, null, jsx(DatasourceModal, {
437
+ testId: "jira-datasource-modal",
438
+ onClose: onCancel
439
+ }, jsx(ModalHeader, null, jsx(ModalTitle, null, jsx(SiteSelector, {
440
+ availableSites: availableSites,
441
+ onSiteSelection: onSiteSelection,
442
+ selectedSite: selectedJiraSite,
443
+ testId: "jira-datasource-modal--site-selector",
444
+ label: siteSelectorLabel
445
+ })), !hasNoJiraSites && jsx(DisplayViewDropDown, {
446
+ onViewModeChange: handleViewModeChange,
447
+ viewMode: currentViewMode
448
+ })), jsx(ModalBody, null, !hasNoJiraSites ? jsx(Fragment, null, jsx(JiraSearchContainer, {
449
+ setSearchBarJql: setSearchBarJql,
450
+ searchBarJql: searchBarJql,
451
+ isSearching: status === 'loading',
452
+ parameters: parameters,
453
+ onSearch: onSearch,
454
+ initialSearchMethod: initialSearchMethod,
455
+ onSearchMethodChange: setCurrentSearchMethod,
456
+ site: selectedJiraSite
457
+ }), currentViewMode === 'inline' ? renderCountModeContent() : renderIssuesModeContent()) : jsx(NoInstancesView, {
458
+ title: loadingErrorMessages.noAccessToJiraSitesTitle,
459
+ description: loadingErrorMessages.noAccessToJiraSitesDescription,
460
+ testId: `no-jira-instances-content`
461
+ })), jsx(ModalFooter, null, shouldShowIssueCount && jsx(TableSearchCount, {
462
+ searchCount: totalCount,
463
+ url: jqlUrl,
464
+ prefixTextType: "issue",
465
+ testId: "jira-datasource-modal-total-issues-count"
466
+ }), jsx(CancelButton, {
467
+ onCancel: onCancel,
468
+ getAnalyticsPayload: getCancelButtonAnalyticsPayload,
469
+ testId: "jira-datasource-modal--cancel-button"
470
+ }), !hasNoJiraSites && jsx(Button, {
471
+ appearance: "primary",
472
+ onClick: onInsertPressed,
473
+ isDisabled: isInsertDisabled,
474
+ testId: "jira-datasource-modal--insert-button"
475
+ }, jsx(FormattedMessage, modalMessages.insertIssuesButtonText))))));
476
+ };
@@ -1,4 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
+ /* eslint-disable @atlaskit/platform/no-preconditioning */
3
+ /* eslint-disable @atlaskit/platform/ensure-feature-flag-prefix */
2
4
  /** @jsx jsx */
3
5
  import { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
6
 
@@ -9,7 +11,7 @@ import { withAnalyticsContext } from '@atlaskit/analytics-next';
9
11
  import Button from '@atlaskit/button/standard-button';
10
12
  import { IntlMessagesProvider } from '@atlaskit/intl-messages-provider';
11
13
  import { ModalBody, ModalFooter, ModalHeader, ModalTitle, ModalTransition } from '@atlaskit/modal-dialog';
12
- import { getBooleanFF } from '@atlaskit/platform-feature-flags';
14
+ import { fg } from '@atlaskit/platform-feature-flags';
13
15
  import { EVENT_CHANNEL, useDatasourceAnalyticsEvents } from '../../../analytics';
14
16
  import { componentMetadata } from '../../../analytics/constants';
15
17
  import { DatasourceAction, DatasourceDisplay } from '../../../analytics/types';
@@ -35,18 +37,21 @@ import { CancelButton } from '../../common/modal/cancel-button';
35
37
  import { ContentContainer } from '../../common/modal/content-container';
36
38
  import { SmartCardPlaceholder, SmartLink } from '../../common/modal/count-view-smart-link';
37
39
  import { DatasourceModal } from '../../common/modal/datasource-modal';
38
- import { DisplayViewDropDown } from '../../common/modal/display-view-dropdown/display-view-drop-down';
40
+ import { useColumnResize } from '../../common/modal/datasources-table-in-modal-preview/use-column-resize';
41
+ import { useColumnWrapping } from '../../common/modal/datasources-table-in-modal-preview/use-column-wrapping';
42
+ import { DatasourceViewModeDropDown } from '../../common/modal/mode-switcher';
43
+ import { DatasourceViewModeProvider, useViewModeContext } from '../../common/modal/mode-switcher/useViewModeContext';
39
44
  import TableSearchCount from '../../common/modal/search-count';
40
45
  import { SiteSelector } from '../../common/modal/site-selector';
41
46
  import { EmptyState, IssueLikeDataTableView } from '../../issue-like-table';
42
- import { useColumnResize } from '../../issue-like-table/use-column-resize';
43
- import { useColumnWrapping } from '../../issue-like-table/use-column-wrapping';
44
47
  import { getColumnAction } from '../../issue-like-table/utils';
45
48
  import { availableBasicFilterTypes } from '../basic-filters/ui';
46
49
  import { isQueryTooComplex } from '../basic-filters/utils/isQueryTooComplex';
47
50
  import { JiraSearchContainer } from '../jira-search-container';
48
51
  import { JiraInitialStateSVG } from './jira-issues-initial-state-svg';
49
52
  import { modalMessages } from './messages';
53
+ import { PlainJiraIssuesConfigModalOld } from './ModalOld';
54
+ const DEFAULT_VIEW_MODE = 'table';
50
55
  const getDisplayValue = (currentViewMode, itemCount) => {
51
56
  if (currentViewMode === 'table') {
52
57
  return DatasourceDisplay.DATASOURCE_TABLE;
@@ -61,12 +66,13 @@ const PlainJiraIssuesConfigModal = props => {
61
66
  wrappedColumnKeys: initialWrappedColumnKeys,
62
67
  onCancel,
63
68
  onInsert,
64
- viewMode = 'table',
65
69
  parameters: initialParameters,
66
70
  url: urlBeingEdited,
67
71
  visibleColumnKeys: initialVisibleColumnKeys
68
72
  } = props;
69
- const [currentViewMode, setCurrentViewMode] = useState(viewMode);
73
+ const {
74
+ currentViewMode
75
+ } = useViewModeContext();
70
76
  const [cloudId, setCloudId] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.cloudId);
71
77
  const {
72
78
  availableSites,
@@ -79,7 +85,9 @@ const PlainJiraIssuesConfigModal = props => {
79
85
  // analytics related parameters
80
86
  const searchCount = useRef(0);
81
87
  const userInteractions = useUserInteractions();
82
- const initialSearchMethod = getBooleanFF('platform.linking-platform.datasource.show-jlol-basic-filters') && !isQueryTooComplex((initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.jql) || '') ? 'basic' : 'jql';
88
+ const initialSearchMethod =
89
+ // eslint-disable-next-line @atlaskit/platform/no-preconditioning
90
+ fg('platform.linking-platform.datasource.show-jlol-basic-filters') && !isQueryTooComplex((initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.jql) || '') ? 'basic' : 'jql';
83
91
  const [currentSearchMethod, setCurrentSearchMethod] = useState(initialSearchMethod);
84
92
  const searchMethodSearchedWith = useRef(null);
85
93
  const visibleColumnCount = useRef((visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.length) || 0);
@@ -332,10 +340,6 @@ const PlainJiraIssuesConfigModal = props => {
332
340
  }, upToDateJqlUrl), consumerEvent);
333
341
  }
334
342
  }, [isParametersSet, jql, selectedJiraSite, searchBarJql, analyticsPayload, totalCount, currentViewMode, retrieveUrlForSmartCardRender, responseItems.length, onInsert, datasourceId, cloudId, visibleColumnKeys, columnCustomSizes, wrappedColumnKeys, userInteractions]);
335
- const handleViewModeChange = selectedMode => {
336
- userInteractions.add(DatasourceAction.DISPLAY_VIEW_CHANGED);
337
- setCurrentViewMode(selectedMode);
338
- };
339
343
  const handleOnNextPage = useCallback((onNextPageProps = {}) => {
340
344
  userInteractions.add(DatasourceAction.NEXT_PAGE_SCROLLED);
341
345
  onNextPage(onNextPageProps);
@@ -362,7 +366,7 @@ const PlainJiraIssuesConfigModal = props => {
362
366
  columnCustomSizes: columnCustomSizes,
363
367
  onColumnResize: onColumnResize,
364
368
  wrappedColumnKeys: wrappedColumnKeys,
365
- onWrappedColumnChange: getBooleanFF('platform.linking-platform.datasource-word_wrap') ? onWrappedColumnChange : undefined
369
+ onWrappedColumnChange: fg('platform.linking-platform.datasource-word_wrap') ? onWrappedColumnChange : undefined
366
370
  })), [status, columns, responseItems, hasNextPage, visibleColumnKeys, defaultVisibleColumnKeys, handleOnNextPage, loadDatasourceDetails, handleVisibleColumnKeysChange, extensionKey, columnCustomSizes, onColumnResize, wrappedColumnKeys, onWrappedColumnChange]);
367
371
  const renderCountModeContent = useCallback(() => {
368
372
  const selectedJiraSiteUrl = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
@@ -411,7 +415,7 @@ const PlainJiraIssuesConfigModal = props => {
411
415
  }, !!jql ? jsx(EmptyState, {
412
416
  testId: `jira-datasource-modal--empty-state`
413
417
  }) : jsx(InitialStateView, {
414
- showBeta: !getBooleanFF('platform.linking-platform.datasource.show-jlol-basic-filters'),
418
+ showBeta: !fg('platform.linking-platform.datasource.show-jlol-basic-filters'),
415
419
  icon: jsx(JiraInitialStateSVG, null),
416
420
  title: modalMessages.searchJiraTitle,
417
421
  description: currentSearchMethod === 'jql' ? initialStateViewMessages.searchDescriptionForJQLSearch : initialStateViewMessages.searchDescriptionForBasicSearch,
@@ -443,10 +447,7 @@ const PlainJiraIssuesConfigModal = props => {
443
447
  selectedSite: selectedJiraSite,
444
448
  testId: "jira-datasource-modal--site-selector",
445
449
  label: siteSelectorLabel
446
- })), !hasNoJiraSites && jsx(DisplayViewDropDown, {
447
- onViewModeChange: handleViewModeChange,
448
- viewMode: currentViewMode
449
- })), jsx(ModalBody, null, !hasNoJiraSites ? jsx(Fragment, null, jsx(JiraSearchContainer, {
450
+ })), !hasNoJiraSites && jsx(DatasourceViewModeDropDown, null)), jsx(ModalBody, null, !hasNoJiraSites ? jsx(Fragment, null, jsx(JiraSearchContainer, {
450
451
  setSearchBarJql: setSearchBarJql,
451
452
  searchBarJql: searchBarJql,
452
453
  isSearching: status === 'loading',
@@ -488,4 +489,9 @@ const contextData = {
488
489
  ...analyticsContextAttributes
489
490
  }
490
491
  };
491
- export const JiraIssuesConfigModal = withAnalyticsContext(contextData)(props => jsx(DatasourceExperienceIdProvider, null, jsx(UserInteractionsProvider, null, jsx(PlainJiraIssuesConfigModal, props))));
492
+ export const JiraIssuesConfigModal = withAnalyticsContext(contextData)(props => {
493
+ var _props$viewMode;
494
+ return jsx(DatasourceExperienceIdProvider, null, jsx(UserInteractionsProvider, null, fg('platform-datasources-use-refactored-config-modal') ? jsx(DatasourceViewModeProvider, {
495
+ viewMode: (_props$viewMode = props.viewMode) !== null && _props$viewMode !== void 0 ? _props$viewMode : DEFAULT_VIEW_MODE
496
+ }, jsx(PlainJiraIssuesConfigModal, props)) : jsx(PlainJiraIssuesConfigModalOld, props)));
497
+ });
@@ -20,11 +20,6 @@ export const modalMessages = defineMessages({
20
20
  description: 'Placeholder text that will be placed next to a count of jira issues',
21
21
  defaultMessage: '### Issues'
22
22
  },
23
- issueText: {
24
- id: 'linkDataSource.jira-issues.configmodal.issue',
25
- description: 'Text that appears after issue count number.',
26
- defaultMessage: '{totalCount, plural, one {issue} other {issues}}'
27
- },
28
23
  searchJiraTitleDuplicate: {
29
24
  id: 'linkDataSource.jira-issues.searchJiraTitle',
30
25
  description: 'The initial modal search state title that gives the user some idea about how to get information',