@atlaskit/link-picker 1.25.3 → 1.25.5

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 (198) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/common/analytics/context.js +1 -1
  3. package/dist/cjs/common/analytics/input-field-tracking.js +3 -3
  4. package/dist/cjs/common/constants.js +6 -2
  5. package/dist/cjs/common/utils/handleNavKeyDown.js +29 -0
  6. package/dist/cjs/i18n/en.js +2 -1
  7. package/dist/cjs/i18n/en_GB.js +2 -1
  8. package/dist/cjs/i18n/en_ZZ.js +2 -1
  9. package/dist/cjs/services/use-plugins/index.js +7 -8
  10. package/dist/cjs/ui/error-boundary/error-boundary-fallback/index.js +3 -1
  11. package/dist/cjs/ui/error-boundary/index.js +3 -3
  12. package/dist/cjs/ui/index.js +2 -2
  13. package/dist/cjs/ui/link-picker/form-footer/index.js +10 -10
  14. package/dist/cjs/ui/link-picker/index.js +38 -81
  15. package/dist/cjs/ui/link-picker/search-results/index.js +90 -0
  16. package/dist/cjs/ui/link-picker/{link-search-error → search-results/link-search-error}/index.js +1 -1
  17. package/dist/cjs/ui/link-picker/{link-search-list → search-results/link-search-list}/index.js +11 -11
  18. package/dist/cjs/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/index.js +1 -1
  19. package/dist/cjs/ui/link-picker/{list-item → search-results/link-search-list/list-item}/index.js +3 -2
  20. package/dist/cjs/ui/link-picker/{list-item → search-results/link-search-list/list-item}/styled.js +7 -5
  21. package/dist/cjs/ui/link-picker/{link-search-list → search-results/link-search-list}/styled.js +1 -1
  22. package/dist/cjs/ui/link-picker/{link-search-list → search-results/link-search-list}/use-track-results-shown/index.js +2 -2
  23. package/dist/cjs/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/index.js +3 -0
  24. package/dist/cjs/ui/link-picker/search-results/styled.js +16 -0
  25. package/dist/cjs/ui/link-picker/{track-tab-viewed → search-results/track-tab-viewed}/index.js +2 -2
  26. package/dist/cjs/ui/link-picker/styled.js +5 -23
  27. package/dist/cjs/ui/link-picker/text-input/index.js +4 -4
  28. package/dist/cjs/ui/link-picker/text-input/utils.js +28 -0
  29. package/dist/cjs/ui/link-picker/track-mount/index.js +1 -1
  30. package/dist/cjs/ui/link-picker/transformTimeStamp.js +2 -2
  31. package/dist/cjs/ui/link-picker/utils.js +1 -48
  32. package/dist/cjs/ui/loader-fallback/index.js +1 -1
  33. package/dist/cjs/ui/loader-fallback/styled.js +21 -0
  34. package/dist/cjs/version.json +1 -1
  35. package/dist/es2019/common/analytics/context.js +1 -1
  36. package/dist/es2019/common/analytics/input-field-tracking.js +2 -2
  37. package/dist/es2019/common/constants.js +3 -1
  38. package/dist/es2019/common/utils/handleNavKeyDown.js +22 -0
  39. package/dist/es2019/i18n/en.js +2 -1
  40. package/dist/es2019/i18n/en_GB.js +2 -1
  41. package/dist/es2019/i18n/en_ZZ.js +2 -1
  42. package/dist/es2019/services/use-plugins/index.js +5 -6
  43. package/dist/es2019/ui/error-boundary/error-boundary-fallback/index.js +2 -1
  44. package/dist/es2019/ui/error-boundary/index.js +3 -3
  45. package/dist/es2019/ui/index.js +3 -3
  46. package/dist/es2019/ui/link-picker/announcer.js +1 -1
  47. package/dist/es2019/ui/link-picker/form-footer/index.js +4 -4
  48. package/dist/es2019/ui/link-picker/index.js +32 -69
  49. package/dist/es2019/ui/link-picker/search-results/index.js +77 -0
  50. package/dist/es2019/ui/link-picker/{link-search-error → search-results/link-search-error}/index.js +2 -2
  51. package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/index.js +5 -5
  52. package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/index.js +1 -1
  53. package/dist/es2019/ui/link-picker/{list-item → search-results/link-search-list/list-item}/index.js +3 -3
  54. package/dist/es2019/ui/link-picker/{list-item → search-results/link-search-list/list-item}/styled.js +4 -4
  55. package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/styled.js +2 -1
  56. package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/use-track-results-shown/index.js +2 -2
  57. package/dist/es2019/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/index.js +6 -3
  58. package/dist/es2019/ui/link-picker/search-results/styled.js +17 -0
  59. package/dist/es2019/ui/link-picker/{track-tab-viewed → search-results/track-tab-viewed}/index.js +2 -2
  60. package/dist/es2019/ui/link-picker/styled.js +0 -30
  61. package/dist/es2019/ui/link-picker/text-input/index.js +5 -5
  62. package/dist/es2019/ui/link-picker/text-input/utils.js +22 -0
  63. package/dist/es2019/ui/link-picker/track-mount/index.js +1 -1
  64. package/dist/es2019/ui/link-picker/transformTimeStamp.js +2 -2
  65. package/dist/es2019/ui/link-picker/utils.js +1 -45
  66. package/dist/es2019/ui/loader-fallback/index.js +1 -1
  67. package/dist/es2019/ui/loader-fallback/styled.js +25 -0
  68. package/dist/es2019/version.json +1 -1
  69. package/dist/esm/common/analytics/context.js +1 -1
  70. package/dist/esm/common/analytics/input-field-tracking.js +2 -2
  71. package/dist/esm/common/constants.js +3 -1
  72. package/dist/esm/common/utils/handleNavKeyDown.js +22 -0
  73. package/dist/esm/i18n/en.js +2 -1
  74. package/dist/esm/i18n/en_GB.js +2 -1
  75. package/dist/esm/i18n/en_ZZ.js +2 -1
  76. package/dist/esm/services/use-plugins/index.js +5 -6
  77. package/dist/esm/ui/error-boundary/error-boundary-fallback/index.js +2 -1
  78. package/dist/esm/ui/error-boundary/index.js +3 -3
  79. package/dist/esm/ui/index.js +3 -3
  80. package/dist/esm/ui/link-picker/announcer.js +1 -1
  81. package/dist/esm/ui/link-picker/form-footer/index.js +4 -4
  82. package/dist/esm/ui/link-picker/index.js +33 -72
  83. package/dist/esm/ui/link-picker/search-results/index.js +79 -0
  84. package/dist/esm/ui/link-picker/{link-search-error → search-results/link-search-error}/index.js +2 -2
  85. package/dist/esm/ui/link-picker/{link-search-list → search-results/link-search-list}/index.js +5 -5
  86. package/dist/esm/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/index.js +1 -1
  87. package/dist/esm/ui/link-picker/{list-item → search-results/link-search-list/list-item}/index.js +3 -3
  88. package/dist/esm/ui/link-picker/{list-item → search-results/link-search-list/list-item}/styled.js +4 -4
  89. package/dist/esm/ui/link-picker/{link-search-list → search-results/link-search-list}/styled.js +2 -1
  90. package/dist/esm/ui/link-picker/{link-search-list → search-results/link-search-list}/use-track-results-shown/index.js +2 -2
  91. package/dist/esm/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/index.js +6 -3
  92. package/dist/esm/ui/link-picker/search-results/styled.js +6 -0
  93. package/dist/esm/ui/link-picker/{track-tab-viewed → search-results/track-tab-viewed}/index.js +2 -2
  94. package/dist/esm/ui/link-picker/styled.js +4 -19
  95. package/dist/esm/ui/link-picker/text-input/index.js +5 -5
  96. package/dist/esm/ui/link-picker/text-input/utils.js +20 -0
  97. package/dist/esm/ui/link-picker/track-mount/index.js +1 -1
  98. package/dist/esm/ui/link-picker/transformTimeStamp.js +2 -2
  99. package/dist/esm/ui/link-picker/utils.js +1 -43
  100. package/dist/esm/ui/loader-fallback/index.js +1 -1
  101. package/dist/esm/ui/loader-fallback/styled.js +16 -0
  102. package/dist/esm/version.json +1 -1
  103. package/dist/types/common/analytics/context.d.ts +1 -1
  104. package/dist/types/common/constants.d.ts +2 -0
  105. package/dist/{types-ts4.5/ui → types/common}/types.d.ts +10 -0
  106. package/dist/types/common/utils/handleNavKeyDown.d.ts +2 -0
  107. package/dist/types/i18n/en.d.ts +1 -0
  108. package/dist/types/i18n/en_GB.d.ts +1 -0
  109. package/dist/types/i18n/en_ZZ.d.ts +1 -0
  110. package/dist/types/index.d.ts +1 -1
  111. package/dist/types/services/use-plugins/index.d.ts +1 -1
  112. package/dist/types/services/use-plugins/reducer.d.ts +1 -1
  113. package/dist/types/services/use-plugins/utils.d.ts +1 -1
  114. package/dist/types/services/use-search-query/index.d.ts +1 -2
  115. package/dist/types/ui/link-picker/form-footer/index.d.ts +1 -2
  116. package/dist/types/ui/link-picker/form-footer/utils.d.ts +1 -1
  117. package/dist/types/ui/link-picker/index.d.ts +7 -19
  118. package/dist/types/ui/link-picker/search-results/index.d.ts +40 -0
  119. package/dist/types/ui/link-picker/{link-search-list → search-results/link-search-list}/index.d.ts +1 -1
  120. package/dist/types/ui/link-picker/{list-item → search-results/link-search-list/list-item}/index.d.ts +1 -1
  121. package/dist/types/ui/link-picker/{link-search-list → search-results/link-search-list}/use-track-results-shown/index.d.ts +1 -1
  122. package/dist/types/ui/link-picker/search-results/styled.d.ts +3 -0
  123. package/dist/types/ui/link-picker/{track-tab-viewed → search-results/track-tab-viewed}/index.d.ts +1 -1
  124. package/dist/types/ui/link-picker/styled.d.ts +0 -5
  125. package/dist/types/ui/link-picker/{conditional-spotlight-target-wrapper → text-input/conditional-spotlight-target-wrapper}/index.d.ts +1 -2
  126. package/dist/types/ui/link-picker/text-input/index.d.ts +1 -1
  127. package/dist/types/ui/link-picker/text-input/utils.d.ts +3 -0
  128. package/dist/types/ui/link-picker/utils.d.ts +1 -5
  129. package/dist/types/ui/loader-fallback/styled.d.ts +3 -0
  130. package/dist/types-ts4.5/common/analytics/context.d.ts +1 -1
  131. package/dist/types-ts4.5/common/constants.d.ts +2 -0
  132. package/dist/{types/ui → types-ts4.5/common}/types.d.ts +10 -0
  133. package/dist/types-ts4.5/common/utils/handleNavKeyDown.d.ts +2 -0
  134. package/dist/types-ts4.5/i18n/en.d.ts +1 -0
  135. package/dist/types-ts4.5/i18n/en_GB.d.ts +1 -0
  136. package/dist/types-ts4.5/i18n/en_ZZ.d.ts +1 -0
  137. package/dist/types-ts4.5/index.d.ts +1 -1
  138. package/dist/types-ts4.5/services/use-plugins/index.d.ts +1 -1
  139. package/dist/types-ts4.5/services/use-plugins/reducer.d.ts +1 -1
  140. package/dist/types-ts4.5/services/use-plugins/utils.d.ts +1 -1
  141. package/dist/types-ts4.5/services/use-search-query/index.d.ts +1 -2
  142. package/dist/types-ts4.5/ui/link-picker/form-footer/index.d.ts +1 -2
  143. package/dist/types-ts4.5/ui/link-picker/form-footer/utils.d.ts +1 -1
  144. package/dist/types-ts4.5/ui/link-picker/index.d.ts +7 -19
  145. package/dist/types-ts4.5/ui/link-picker/search-results/index.d.ts +40 -0
  146. package/dist/types-ts4.5/ui/link-picker/{link-search-list → search-results/link-search-list}/index.d.ts +1 -1
  147. package/dist/types-ts4.5/ui/link-picker/{list-item → search-results/link-search-list/list-item}/index.d.ts +1 -1
  148. package/dist/types-ts4.5/ui/link-picker/{link-search-list → search-results/link-search-list}/use-track-results-shown/index.d.ts +1 -1
  149. package/dist/types-ts4.5/ui/link-picker/search-results/styled.d.ts +3 -0
  150. package/dist/types-ts4.5/ui/link-picker/{track-tab-viewed → search-results/track-tab-viewed}/index.d.ts +1 -1
  151. package/dist/types-ts4.5/ui/link-picker/styled.d.ts +0 -5
  152. package/dist/types-ts4.5/ui/link-picker/{conditional-spotlight-target-wrapper → text-input/conditional-spotlight-target-wrapper}/index.d.ts +1 -2
  153. package/dist/types-ts4.5/ui/link-picker/text-input/index.d.ts +1 -1
  154. package/dist/types-ts4.5/ui/link-picker/text-input/utils.d.ts +3 -0
  155. package/dist/types-ts4.5/ui/link-picker/utils.d.ts +1 -5
  156. package/dist/types-ts4.5/ui/loader-fallback/styled.d.ts +3 -0
  157. package/package.json +27 -6
  158. /package/dist/cjs/{ui → common}/types.js +0 -0
  159. /package/dist/cjs/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/no-results-svg/index.js +0 -0
  160. /package/dist/cjs/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/no-results-svg/styled.js +0 -0
  161. /package/dist/cjs/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/styled.js +0 -0
  162. /package/dist/cjs/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/scrolling-tabs.js +0 -0
  163. /package/dist/cjs/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/styles.js +0 -0
  164. /package/dist/cjs/ui/link-picker/{conditional-spotlight-target-wrapper → text-input/conditional-spotlight-target-wrapper}/index.js +0 -0
  165. /package/dist/es2019/{ui → common}/types.js +0 -0
  166. /package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/no-results-svg/index.js +0 -0
  167. /package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/no-results-svg/styled.js +0 -0
  168. /package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/styled.js +0 -0
  169. /package/dist/es2019/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/scrolling-tabs.js +0 -0
  170. /package/dist/es2019/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/styles.js +0 -0
  171. /package/dist/es2019/ui/link-picker/{conditional-spotlight-target-wrapper → text-input/conditional-spotlight-target-wrapper}/index.js +0 -0
  172. /package/dist/esm/{ui → common}/types.js +0 -0
  173. /package/dist/esm/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/no-results-svg/index.js +0 -0
  174. /package/dist/esm/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/no-results-svg/styled.js +0 -0
  175. /package/dist/esm/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/styled.js +0 -0
  176. /package/dist/esm/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/scrolling-tabs.js +0 -0
  177. /package/dist/esm/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/styles.js +0 -0
  178. /package/dist/esm/ui/link-picker/{conditional-spotlight-target-wrapper → text-input/conditional-spotlight-target-wrapper}/index.js +0 -0
  179. /package/dist/types/ui/link-picker/{link-search-error → search-results/link-search-error}/index.d.ts +0 -0
  180. /package/dist/types/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/index.d.ts +0 -0
  181. /package/dist/types/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/no-results-svg/index.d.ts +0 -0
  182. /package/dist/types/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/no-results-svg/styled.d.ts +0 -0
  183. /package/dist/types/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/styled.d.ts +0 -0
  184. /package/dist/types/ui/link-picker/{list-item → search-results/link-search-list/list-item}/styled.d.ts +0 -0
  185. /package/dist/types/ui/link-picker/{link-search-list → search-results/link-search-list}/styled.d.ts +0 -0
  186. /package/dist/types/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/index.d.ts +0 -0
  187. /package/dist/types/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/scrolling-tabs.d.ts +0 -0
  188. /package/dist/types/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/styles.d.ts +0 -0
  189. /package/dist/types-ts4.5/ui/link-picker/{link-search-error → search-results/link-search-error}/index.d.ts +0 -0
  190. /package/dist/types-ts4.5/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/index.d.ts +0 -0
  191. /package/dist/types-ts4.5/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/no-results-svg/index.d.ts +0 -0
  192. /package/dist/types-ts4.5/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/no-results-svg/styled.d.ts +0 -0
  193. /package/dist/types-ts4.5/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/styled.d.ts +0 -0
  194. /package/dist/types-ts4.5/ui/link-picker/{list-item → search-results/link-search-list/list-item}/styled.d.ts +0 -0
  195. /package/dist/types-ts4.5/ui/link-picker/{link-search-list → search-results/link-search-list}/styled.d.ts +0 -0
  196. /package/dist/types-ts4.5/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/index.d.ts +0 -0
  197. /package/dist/types-ts4.5/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/scrolling-tabs.d.ts +0 -0
  198. /package/dist/types-ts4.5/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/styles.d.ts +0 -0
@@ -1,13 +1,13 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  /** @jsx jsx */
3
- import { jsx } from '@emotion/react';
4
3
  import { memo } from 'react';
5
- import { useIntl, defineMessages } from 'react-intl-next';
4
+ import { jsx } from '@emotion/react';
5
+ import { defineMessages, useIntl } from 'react-intl-next';
6
6
  import Button, { ButtonGroup } from '@atlaskit/button';
7
7
  import EditorAddIcon from '@atlaskit/icon/glyph/editor/add';
8
- import { formFooterStyles, formFooterActionStyles } from './styled';
9
- import { checkSubmitDisabled } from './utils';
10
8
  import { UnauthenticatedError } from '../../../common/utils/errors';
9
+ import { formFooterActionStyles, formFooterStyles } from './styled';
10
+ import { checkSubmitDisabled } from './utils';
11
11
  const messages = defineMessages({
12
12
  cancelButton: {
13
13
  id: 'fabric.linkPicker.button.cancel',
@@ -1,46 +1,33 @@
1
- import _extends from "@babel/runtime/helpers/extends";
2
1
  /** @jsx jsx */
3
- import { Fragment, useCallback, useLayoutEffect, useReducer, memo } from 'react';
2
+ import { memo, useCallback, useLayoutEffect, useReducer } from 'react';
4
3
  import { jsx } from '@emotion/react';
5
- import { useIntl, FormattedMessage } from 'react-intl-next';
4
+ import { FormattedMessage, useIntl } from 'react-intl-next';
6
5
  import { useAnalyticsEvents } from '@atlaskit/analytics-next';
7
- import EditorSearchIcon from '@atlaskit/icon/glyph/editor/search';
8
- import Tabs, { Tab, TabList } from '@atlaskit/tabs';
6
+ import { isSafeUrl, normalizeUrl } from '@atlaskit/linking-common/url';
7
+ import { browser } from '@atlaskit/linking-common/user-agent';
9
8
  import VisuallyHidden from '@atlaskit/visually-hidden';
10
- import Spinner from '@atlaskit/spinner/spinner';
11
- import createEventPayload from '../../common/utils/analytics/analytics.codegen';
12
- import { ANALYTICS_CHANNEL } from '../../common/constants';
13
9
  import { useLinkPickerAnalytics, withInputFieldTracking, withLinkPickerAnalyticsContext } from '../../common/analytics';
14
- import { normalizeUrl, isSafeUrl } from '@atlaskit/linking-common/url';
15
- import { browser } from '@atlaskit/linking-common/user-agent';
10
+ import { ANALYTICS_CHANNEL } from '../../common/constants';
11
+ import createEventPayload from '../../common/utils/analytics/analytics.codegen';
12
+ import { handleNavKeyDown } from '../../common/utils/handleNavKeyDown';
16
13
  import { usePlugins } from '../../services/use-plugins';
17
14
  import { useSearchQuery } from '../../services/use-search-query';
18
- import { useFixHeight } from '../../controllers/use-fix-height';
19
- import { searchMessages, linkMessages, formMessages, linkTextMessages } from './messages';
20
- import { TextInput, testIds as textFieldTestIds } from './text-input';
21
- import { rootContainerStyles, searchIconStyles, tabsWrapperStyles, flexColumnStyles, formFooterMargin } from './styled';
22
15
  import { Announcer } from './announcer';
23
- import { ScrollingTabList } from '../scrolling-tabs';
24
- import { LinkSearchList, testIds as listTestIds } from './link-search-list';
25
- import { LinkSearchError, testIds as searchErrorTestIds } from './link-search-error';
26
16
  import { FormFooter, testIds as formFooterTestIds } from './form-footer';
27
- import { getDataSource, getScreenReaderText, handleNavKeyDown } from './utils';
28
- import { TrackTabViewed } from './track-tab-viewed';
17
+ import { formMessages, linkMessages, linkTextMessages, searchMessages } from './messages';
18
+ import { SearchResults, testIds as searchTestIds } from './search-results';
19
+ import { formFooterMargin, rootContainerStyles } from './styled';
20
+ import { testIds as textFieldTestIds, TextInput } from './text-input';
29
21
  import { TrackMount } from './track-mount';
30
- import { spinnerContainerStyles } from './link-search-list/styled';
31
- export const RECENT_SEARCH_LIST_SIZE = 5;
22
+ import { getDataSource, getScreenReaderText } from './utils';
32
23
  export const testIds = {
33
24
  linkPickerRoot: 'link-picker-root',
34
25
  linkPicker: 'link-picker',
35
26
  urlInputField: 'link-url',
36
27
  textInputField: 'link-text',
37
- searchIcon: 'link-picker-search-icon',
28
+ ...searchTestIds,
38
29
  ...formFooterTestIds,
39
- ...searchErrorTestIds,
40
- ...listTestIds,
41
- ...textFieldTestIds,
42
- tabList: 'link-picker-tabs',
43
- tabItem: 'link-picker-tab'
30
+ ...textFieldTestIds
44
31
  };
45
32
  const initState = {
46
33
  url: '',
@@ -92,7 +79,6 @@ export const LinkPicker = withLinkPickerAnalyticsContext( /*#__PURE__*/memo(({
92
79
  hideDisplayText,
93
80
  featureFlags
94
81
  }) => {
95
- var _activePlugin$errorFa, _activePlugin$errorFa2;
96
82
  const {
97
83
  createAnalyticsEvent
98
84
  } = useAnalyticsEvents();
@@ -121,7 +107,6 @@ export const LinkPicker = withLinkPickerAnalyticsContext( /*#__PURE__*/memo(({
121
107
  retry,
122
108
  pluginAction
123
109
  } = usePlugins(queryState, activeTab, plugins);
124
- const fixListHeightProps = useFixHeight(isLoadingResults);
125
110
  const isEditing = !!initUrl;
126
111
  const selectedItem = items === null || items === void 0 ? void 0 : items[selectedIndex];
127
112
  const isSelectedItem = (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.url) === url;
@@ -289,17 +274,6 @@ export const LinkPicker = withLinkPickerAnalyticsContext( /*#__PURE__*/memo(({
289
274
  // as the Aria design pattern for combobox does not work in this case
290
275
  // for details: https://a11y-internal.atlassian.net/browse/AK-740
291
276
  const screenReaderText = browser().safari && getScreenReaderText(items !== null && items !== void 0 ? items : [], selectedIndex, intl);
292
- const searchIcon = isActivePlugin && jsx("span", {
293
- css: searchIconStyles,
294
- "data-testid": testIds.searchIcon
295
- }, jsx(EditorSearchIcon, {
296
- size: "medium",
297
- label: ''
298
- }));
299
- const tabList = jsx(TabList, null, tabs.map(tab => jsx(Tab, {
300
- key: tab.tabTitle,
301
- testId: testIds.tabItem
302
- }, tab.tabTitle)));
303
277
  return jsx("form", {
304
278
  "data-testid": testIds.linkPicker,
305
279
  css: rootContainerStyles,
@@ -320,7 +294,6 @@ export const LinkPicker = withLinkPickerAnalyticsContext( /*#__PURE__*/memo(({
320
294
  placeholder: intl.formatMessage(messages.linkPlaceholder),
321
295
  value: url,
322
296
  autoFocus: true,
323
- elemBeforeInput: searchIcon,
324
297
  clearLabel: intl.formatMessage(formMessages.clearLink),
325
298
  "aria-expanded": true,
326
299
  "aria-autocomplete": "list",
@@ -343,35 +316,25 @@ export const LinkPicker = withLinkPickerAnalyticsContext( /*#__PURE__*/memo(({
343
316
  "aria-label": intl.formatMessage(linkTextMessages.linkTextAriaLabel),
344
317
  onClear: handleClear,
345
318
  onChange: handleChangeText
346
- }), isLoadingPlugins && !!queryState && jsx("div", {
347
- css: spinnerContainerStyles
348
- }, jsx(Spinner, {
349
- testId: testIds.tabsLoadingIndicator,
350
- size: "medium"
351
- })), !isLoadingPlugins && isActivePlugin && !!queryState && jsx(Fragment, null, tabs.length > 0 && jsx("div", {
352
- css: tabsWrapperStyles
353
- }, jsx(Tabs, {
354
- id: testIds.tabList,
355
- testId: testIds.tabList,
356
- selected: activeTab,
357
- onChange: handleTabChange
358
- }, featureFlags !== null && featureFlags !== void 0 && featureFlags.scrollingTabs ? jsx(ScrollingTabList, null, tabList) : tabList), jsx(TrackTabViewed, {
359
- activePlugin: activePlugin
360
- })), jsx("div", _extends({
361
- css: flexColumnStyles
362
- }, fixListHeightProps), !error && jsx(LinkSearchList, {
363
- id: linkSearchListId,
364
- role: "listbox",
365
- items: items,
366
- isLoading: isLoadingResults,
367
- selectedIndex: selectedIndex,
319
+ }), !!queryState && jsx(SearchResults, {
320
+ activeTab: activeTab,
321
+ tabs: tabs,
322
+ activePlugin: activePlugin,
323
+ isLoadingResults: isLoadingResults,
324
+ isLoadingPlugins: isLoadingPlugins,
325
+ linkSearchListId: linkSearchListId,
326
+ error: error,
327
+ featureFlags: featureFlags,
368
328
  activeIndex: activeIndex,
369
- onSelect: handleSelected,
370
- onChange: handleSearchListOnChange,
371
- onKeyDown: handleKeyDown,
372
- hasSearchTerm: !!(queryState !== null && queryState !== void 0 && queryState.query.length),
373
- activePlugin: activePlugin
374
- }), error && ((_activePlugin$errorFa = activePlugin === null || activePlugin === void 0 ? void 0 : (_activePlugin$errorFa2 = activePlugin.errorFallback) === null || _activePlugin$errorFa2 === void 0 ? void 0 : _activePlugin$errorFa2.call(activePlugin, error, retry)) !== null && _activePlugin$errorFa !== void 0 ? _activePlugin$errorFa : jsx(LinkSearchError, null)))), jsx(FormFooter, {
329
+ selectedIndex: selectedIndex,
330
+ items: items,
331
+ queryState: queryState,
332
+ handleKeyDown: handleKeyDown,
333
+ handleSelected: handleSelected,
334
+ handleTabChange: handleTabChange,
335
+ handleSearchListOnChange: handleSearchListOnChange,
336
+ retry: retry
337
+ }), jsx(FormFooter, {
375
338
  error: error,
376
339
  items: items
377
340
  /** If the results section appears to be loading, impact whether the submit button is disabled */,
@@ -0,0 +1,77 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ /** @jsx jsx */
3
+ import { Fragment } from 'react';
4
+ import { jsx } from '@emotion/react';
5
+ import Spinner from '@atlaskit/spinner/spinner';
6
+ import Tabs, { Tab, TabList } from '@atlaskit/tabs';
7
+ import { useFixHeight } from '../../../controllers/use-fix-height';
8
+ import { LinkSearchError, testIds as searchErrorTestIds } from './link-search-error';
9
+ import { LinkSearchList, testIds as listTestIds } from './link-search-list';
10
+ import { ScrollingTabList } from './scrolling-tabs';
11
+ import { flexColumnStyles, spinnerContainerStyles, tabsWrapperStyles } from './styled';
12
+ import { TrackTabViewed } from './track-tab-viewed';
13
+ export const testIds = {
14
+ ...searchErrorTestIds,
15
+ ...listTestIds,
16
+ tabsLoadingIndicator: 'link-picker.tabs-loading-indicator',
17
+ tabList: 'link-picker-tabs',
18
+ tabItem: 'link-picker-tab'
19
+ };
20
+ export const SearchResults = ({
21
+ tabs,
22
+ activeTab,
23
+ activePlugin,
24
+ isLoadingPlugins,
25
+ isLoadingResults,
26
+ handleTabChange,
27
+ handleSearchListOnChange,
28
+ featureFlags,
29
+ linkSearchListId,
30
+ error,
31
+ queryState,
32
+ items,
33
+ activeIndex,
34
+ selectedIndex,
35
+ handleSelected,
36
+ handleKeyDown,
37
+ retry
38
+ }) => {
39
+ var _activePlugin$errorFa, _activePlugin$errorFa2;
40
+ const isActivePlugin = !!activePlugin;
41
+
42
+ // This will be redundant if we move towards fixed height search results section
43
+ const fixListHeightProps = useFixHeight(isLoadingResults);
44
+ const tabList = jsx(TabList, null, tabs.map(tab => jsx(Tab, {
45
+ key: tab.tabTitle,
46
+ testId: testIds.tabItem
47
+ }, tab.tabTitle)));
48
+ return jsx(Fragment, null, isLoadingPlugins && !!queryState && jsx("div", {
49
+ css: spinnerContainerStyles
50
+ }, jsx(Spinner, {
51
+ testId: testIds.tabsLoadingIndicator,
52
+ size: "medium"
53
+ })), !isLoadingPlugins && isActivePlugin && !!queryState && jsx(Fragment, null, tabs.length > 0 && jsx("div", {
54
+ css: tabsWrapperStyles
55
+ }, jsx(Tabs, {
56
+ id: testIds.tabList,
57
+ testId: testIds.tabList,
58
+ selected: activeTab,
59
+ onChange: handleTabChange
60
+ }, featureFlags !== null && featureFlags !== void 0 && featureFlags.scrollingTabs ? jsx(ScrollingTabList, null, tabList) : tabList), jsx(TrackTabViewed, {
61
+ activePlugin: activePlugin
62
+ })), jsx("div", _extends({
63
+ css: flexColumnStyles
64
+ }, fixListHeightProps), !error && jsx(LinkSearchList, {
65
+ id: linkSearchListId,
66
+ role: "listbox",
67
+ items: items,
68
+ isLoading: isLoadingResults,
69
+ selectedIndex: selectedIndex,
70
+ activeIndex: activeIndex,
71
+ onSelect: handleSelected,
72
+ onChange: handleSearchListOnChange,
73
+ onKeyDown: handleKeyDown,
74
+ hasSearchTerm: !!(queryState !== null && queryState !== void 0 && queryState.query.length),
75
+ activePlugin: activePlugin
76
+ }), error && ((_activePlugin$errorFa = activePlugin === null || activePlugin === void 0 ? void 0 : (_activePlugin$errorFa2 = activePlugin.errorFallback) === null || _activePlugin$errorFa2 === void 0 ? void 0 : _activePlugin$errorFa2.call(activePlugin, error, retry)) !== null && _activePlugin$errorFa !== void 0 ? _activePlugin$errorFa : jsx(LinkSearchError, null)))));
77
+ };
@@ -1,10 +1,10 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  /** @jsx jsx */
3
3
  import { jsx } from '@emotion/react';
4
- import { useIntl, FormattedMessage, defineMessages } from 'react-intl-next';
4
+ import { defineMessages, FormattedMessage, useIntl } from 'react-intl-next';
5
5
  import Button from '@atlaskit/button';
6
6
  import EmptyState from '@atlaskit/empty-state';
7
- import { GenericErrorSVG } from '../../../common/generic-error-svg';
7
+ import { GenericErrorSVG } from '../../../../common/generic-error-svg';
8
8
  export const CONTACT_SUPPORT_LINK = 'https://support.atlassian.com/contact/';
9
9
  export const messages = defineMessages({
10
10
  searchErrorHeader: {
@@ -2,16 +2,16 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
  /** @jsx jsx */
3
3
  import { forwardRef, Fragment, useCallback, useRef } from 'react';
4
4
  import { jsx } from '@emotion/react';
5
- import { getBooleanFF } from '@atlaskit/platform-feature-flags';
6
5
  import { defineMessages, FormattedMessage } from 'react-intl-next';
6
+ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
7
7
  import Spinner from '@atlaskit/spinner';
8
8
  import VisuallyHidden from '@atlaskit/visually-hidden';
9
- import { LinkSearchListItem, testIds as searchResultItemTestIds } from '../list-item';
10
- import { listContainerStyles, spinnerContainerStyles, listStyles, listTitleStyles } from './styled';
9
+ import { handleNavKeyDown } from '../../../../common/utils/handleNavKeyDown';
11
10
  import { NoResults, testIds as noResultsTestIds } from './link-search-no-results';
12
- import { useTrackResultsShown } from './use-track-results-shown';
13
- import { handleNavKeyDown } from '../utils';
14
11
  import { emptyStateNoResultsWrapper } from './link-search-no-results/styled';
12
+ import { LinkSearchListItem, testIds as searchResultItemTestIds } from './list-item';
13
+ import { listContainerStyles, listStyles, listTitleStyles, spinnerContainerStyles } from './styled';
14
+ import { useTrackResultsShown } from './use-track-results-shown';
15
15
  export const messages = defineMessages({
16
16
  titleRecentlyViewed: {
17
17
  id: 'fabric.linkPicker.listTitle.recentlyViewed',
@@ -1,7 +1,7 @@
1
1
  /** @jsx jsx */
2
2
  import { jsx } from '@emotion/react';
3
+ import { defineMessages, useIntl } from 'react-intl-next';
3
4
  import EmptyState from '@atlaskit/empty-state';
4
- import { useIntl, defineMessages } from 'react-intl-next';
5
5
  import { NoResultsSVG } from './no-results-svg';
6
6
  import { emptyStateWrapperStyles } from './styled';
7
7
  export const messages = defineMessages({
@@ -2,8 +2,9 @@
2
2
  import { forwardRef, Fragment } from 'react';
3
3
  import { jsx } from '@emotion/react';
4
4
  import { useIntl } from 'react-intl-next';
5
- import { transformTimeStamp } from '../transformTimeStamp';
6
- import { itemNameStyles, itemIconStyles, listItemContextStyles, listItemNameStyles, composeListItemStyles, imgStyles, listItemContainerStyles, listItemContainerInnerStyles } from './styled';
5
+ /* eslint-disable-next-line @atlassian/tangerine/import/no-parent-imports */
6
+ import { transformTimeStamp } from '../../../transformTimeStamp';
7
+ import { composeListItemStyles, imgStyles, itemIconStyles, itemNameStyles, listItemContainerInnerStyles, listItemContainerStyles, listItemContextStyles, listItemNameStyles } from './styled';
7
8
  export const testIds = {
8
9
  searchResultItem: 'link-search-list-item',
9
10
  searchResultIcon: 'link-search-list-item-icon'
@@ -44,7 +45,6 @@ const ListItemIcon = props => {
44
45
  export const LinkSearchListItem = /*#__PURE__*/forwardRef(({
45
46
  item,
46
47
  selected,
47
- active,
48
48
  id,
49
49
  role,
50
50
  onSelect,
@@ -1,8 +1,8 @@
1
1
  import { css } from '@emotion/react';
2
- import { B50, N300, N800, N20, N200, B400, B100 } from '@atlaskit/theme/colors';
2
+ import { B100, B400, B50, N20, N200, N300, N800 } from '@atlaskit/theme/colors';
3
+ import { fontSize, fontSizeSmall } from '@atlaskit/theme/constants';
3
4
  // AFP-2532 TODO: Fix automatic suppressions below
4
5
  // eslint-disable-next-line @atlassian/tangerine/import/entry-points
5
- import { fontSizeSmall, fontSize } from '@atlaskit/theme';
6
6
  export const relativeFontSizeToBase16 = px => {
7
7
  if (typeof px === 'string') {
8
8
  px = parseInt(px);
@@ -15,7 +15,7 @@ export const relativeFontSizeToBase16 = px => {
15
15
  const listItemBaseStyles = css`
16
16
  display: flex;
17
17
  padding: ${"var(--ds-space-100, 8px)"} ${"var(--ds-space-200, 16px)"};
18
- margin: 0 calc(-1 * ${"var(--ds-space-200, 16px)"});
18
+ margin: 0;
19
19
  cursor: pointer;
20
20
  `;
21
21
  const listItemFocusStyles = css`
@@ -71,7 +71,7 @@ export const listItemContainerInnerStyles = css`
71
71
  white-space: nowrap;
72
72
  `;
73
73
 
74
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage-spacing
74
+ // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
75
75
  export const itemIconStyles = css`
76
76
  min-width: ${"var(--ds-space-200, 16px)"};
77
77
  margin-top: 3px;
@@ -1,4 +1,5 @@
1
1
  import { css } from '@emotion/react';
2
+
2
3
  // AFP-2532 TODO: Fix automatic suppressions below
3
4
  // eslint-disable-next-line @atlassian/tangerine/import/entry-points
4
5
  import { typography } from '@atlaskit/theme';
@@ -21,7 +22,7 @@ export const spinnerContainerStyles = css`
21
22
  `;
22
23
  export const listStyles = css`
23
24
  padding: 0;
24
- margin: 0;
25
+ margin: 0 calc(-1 * ${"var(--ds-space-200, 16px)"});
25
26
  list-style: none;
26
27
  `;
27
28
  export const listTitleStyles = css`
@@ -1,8 +1,8 @@
1
1
  import { useEffect, useMemo, useRef } from 'react';
2
2
  import { useDebounce } from 'use-debounce';
3
3
  import { useAnalyticsEvents } from '@atlaskit/analytics-next';
4
- import { ANALYTICS_CHANNEL } from '../../../../common/constants';
5
- import createEventPayload from '../../../../common/utils/analytics/analytics.codegen';
4
+ import { ANALYTICS_CHANNEL } from '../../../../../common/constants';
5
+ import createEventPayload from '../../../../../common/utils/analytics/analytics.codegen';
6
6
  const DEBOUNCE_MS = 400;
7
7
  export const useTrackResultsShown = (isLoading, items, hasSearchTerm) => {
8
8
  const {
@@ -1,12 +1,12 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  /** @jsx jsx */
3
- import React, { useRef, useMemo, useState, useCallback } from 'react';
3
+ import React, { useCallback, useMemo, useRef, useState } from 'react';
4
4
  import { jsx } from '@emotion/react';
5
5
  import Button from '@atlaskit/button';
6
6
  import ChevronLeftIcon from '@atlaskit/icon/glyph/chevron-left';
7
7
  import ChevronRightIcon from '@atlaskit/icon/glyph/chevron-right';
8
- import { scrollBack, scrollForward, calculateConditionalButtons, getTabList, createGhost } from './scrolling-tabs';
9
- import { containerStyles, scrollingContainerStyles, nextButtonStyles, backButtonStyles } from './styles';
8
+ import { calculateConditionalButtons, createGhost, getTabList, scrollBack, scrollForward } from './scrolling-tabs';
9
+ import { backButtonStyles, containerStyles, nextButtonStyles, scrollingContainerStyles } from './styles';
10
10
  function isTouchDevice() {
11
11
  return 'ontouchstart' in window ||
12
12
  // eslint-disable-next-line compat/compat
@@ -16,6 +16,8 @@ const initialConditionalButtonsState = {
16
16
  back: false,
17
17
  forward: false
18
18
  };
19
+
20
+ /* eslint-disable @repo/internal/dom-events/no-unsafe-event-listeners */
19
21
  export const ScrollingTabList = props => {
20
22
  const ref = useRef(null);
21
23
  const [conditionalButtons, setConditionalButtons] = useState(initialConditionalButtonsState);
@@ -75,6 +77,7 @@ export const ScrollingTabList = props => {
75
77
  }
76
78
  return () => {
77
79
  if (scrollingContainer) {
80
+ // eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
78
81
  scrollingContainer.removeEventListener('scroll', handleConditionalButtonsChange);
79
82
  }
80
83
  if (tabs.length) {
@@ -0,0 +1,17 @@
1
+ import { css } from '@emotion/react';
2
+ export const tabsWrapperStyles = css`
3
+ margin-top: ${"var(--ds-space-150, 12px)"};
4
+ margin-left: calc(-1 * ${"var(--ds-space-100, 8px)"});
5
+ margin-right: calc(-1 * ${"var(--ds-space-100, 8px)"});
6
+ `;
7
+ export const spinnerContainerStyles = css`
8
+ min-height: 80px;
9
+ display: flex;
10
+ align-items: center;
11
+ justify-content: center;
12
+ flex-grow: 1;
13
+ `;
14
+ export const flexColumnStyles = css`
15
+ display: flex;
16
+ flex-direction: column;
17
+ `;
@@ -1,8 +1,8 @@
1
1
  /** @jsx jsx */
2
2
  import { useLayoutEffect } from 'react';
3
3
  import { useAnalyticsEvents } from '@atlaskit/analytics-next';
4
- import createEventPayload from '../../../common/utils/analytics/analytics.codegen';
5
- import { ANALYTICS_CHANNEL } from '../../../common/constants';
4
+ import { ANALYTICS_CHANNEL } from '../../../../common/constants';
5
+ import createEventPayload from '../../../../common/utils/analytics/analytics.codegen';
6
6
  export function TrackTabViewed({
7
7
  activePlugin
8
8
  }) {
@@ -1,11 +1,6 @@
1
1
  import { css } from '@emotion/react';
2
- import { N500 } from '@atlaskit/theme/colors';
3
2
  const LINK_PICKER_WIDTH_IN_PX = 342;
4
3
 
5
- // See lazy-load-height example to verify these
6
- const LINK_PICKER_MIN_HEIGHT_IN_PX_WITHOUT_DISPLAYTEXT = 142;
7
- const LINK_PICKER_MIN_HEIGHT_IN_PX_WITH_DISPLAYTEXT = 220;
8
-
9
4
  /**
10
5
  * Half padding on the top as the form field has a `gridSize()` margin top that cannot be overridden
11
6
  */
@@ -16,31 +11,6 @@ export const rootContainerStyles = css`
16
11
  box-sizing: border-box;
17
12
  line-height: initial;
18
13
  `;
19
-
20
- /** Styles for skeleton element when Link Picker loading */
21
- const rootContainerStylesForLoader = css`
22
- ${rootContainerStyles}
23
- display: flex;
24
- align-items: center;
25
- justify-content: center;
26
- `;
27
-
28
- /** Link Picker loader / skeleton will be taller in height when displayText field is shown */
29
- export const rootContainerStylesForLoaderWithDisplaytext = css`
30
- ${rootContainerStylesForLoader}
31
- min-height: ${LINK_PICKER_MIN_HEIGHT_IN_PX_WITH_DISPLAYTEXT}px;
32
- `;
33
-
34
- /** Link Picker loader / skeleton will be shorter in height when displayText field isn't shown */
35
- export const rootContainerStylesForLoaderWithoutDisplaytext = css`
36
- ${rootContainerStylesForLoader}
37
- min-height: ${LINK_PICKER_MIN_HEIGHT_IN_PX_WITHOUT_DISPLAYTEXT}px;
38
- `;
39
- export const searchIconStyles = css`
40
- margin-left: ${"var(--ds-space-050, 4px)"};
41
- color: ${`var(--ds-icon, ${N500})`};
42
- cursor: default;
43
- `;
44
14
  export const tabsWrapperStyles = css`
45
15
  margin-top: ${"var(--ds-space-150, 12px)"};
46
16
  margin-left: calc(-1 * ${"var(--ds-space-100, 8px)"});
@@ -1,14 +1,14 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  /** @jsx jsx */
3
- import { useCallback, useRef, Fragment } from 'react';
3
+ import { Fragment, useCallback, useRef } from 'react';
4
4
  import { jsx } from '@emotion/react';
5
5
  import { ErrorMessage, Field } from '@atlaskit/form';
6
- import Tooltip from '@atlaskit/tooltip';
7
- import Textfield from '@atlaskit/textfield';
8
6
  import Selectclear from '@atlaskit/icon/glyph/select-clear';
9
- import { ConditionalSpotlightTargetWrapper } from '../conditional-spotlight-target-wrapper';
10
- import { isRedoEvent, isUndoEvent } from '../utils';
7
+ import Textfield from '@atlaskit/textfield';
8
+ import Tooltip from '@atlaskit/tooltip';
9
+ import { ConditionalSpotlightTargetWrapper } from './conditional-spotlight-target-wrapper';
11
10
  import { clearTextButtonStyles, fieldStyles } from './styled';
11
+ import { isRedoEvent, isUndoEvent } from './utils';
12
12
  export const testIds = {
13
13
  urlError: 'link-error',
14
14
  clearUrlButton: 'clear-text'
@@ -0,0 +1,22 @@
1
+ import { browser } from '@atlaskit/linking-common/user-agent';
2
+ const KeyZCode = 90;
3
+ const KeyYCode = 89;
4
+ export const isUndoEvent = e => {
5
+ const {
6
+ mac
7
+ } = browser();
8
+ return e.keyCode === KeyZCode && (
9
+ // cmd + z for mac
10
+ mac && e.metaKey && !e.shiftKey ||
11
+ // ctrl + z for non-mac
12
+ !mac && e.ctrlKey);
13
+ };
14
+ export const isRedoEvent = e => {
15
+ const {
16
+ mac
17
+ } = browser();
18
+ return (
19
+ // ctrl + y for non-mac
20
+ !mac && e.ctrlKey && e.keyCode === KeyYCode || mac && e.metaKey && e.shiftKey && e.keyCode === KeyZCode || e.ctrlKey && e.shiftKey && e.keyCode === KeyZCode
21
+ );
22
+ };
@@ -2,8 +2,8 @@
2
2
  import { useLayoutEffect } from 'react';
3
3
  import { useAnalyticsEvents } from '@atlaskit/analytics-next';
4
4
  import { succeedUfoExperience, ufoExperience } from '../../../common/analytics/experiences';
5
- import createEventPayload from '../../../common/utils/analytics/analytics.codegen';
6
5
  import { ANALYTICS_CHANNEL } from '../../../common/constants';
6
+ import createEventPayload from '../../../common/utils/analytics/analytics.codegen';
7
7
  import { useLinkPickerSessionId } from '../../../controllers/session-provider';
8
8
 
9
9
  /**
@@ -1,7 +1,7 @@
1
- import { timeMessages } from './messages';
1
+ import isYesterday from 'date-fns/isYesterday';
2
2
  import { isMoreThanOneWeekAgo } from '../../common/utils/date';
3
3
  import { selectUnit } from '../../common/utils/dateUtils';
4
- import isYesterday from 'date-fns/isYesterday';
4
+ import { timeMessages } from './messages';
5
5
  const formatTime = (timeStamp, intl) => {
6
6
  const isAbsolute = isMoreThanOneWeekAgo(timeStamp);
7
7
  if (isAbsolute) {
@@ -1,26 +1,4 @@
1
- import { browser } from '@atlaskit/linking-common/user-agent';
2
1
  import { transformTimeStamp } from './transformTimeStamp';
3
- const KeyZCode = 90;
4
- const KeyYCode = 89;
5
- export const isUndoEvent = e => {
6
- const {
7
- mac
8
- } = browser();
9
- return e.keyCode === KeyZCode && (
10
- // cmd + z for mac
11
- mac && e.metaKey && !e.shiftKey ||
12
- // ctrl + z for non-mac
13
- !mac && e.ctrlKey);
14
- };
15
- export const isRedoEvent = e => {
16
- const {
17
- mac
18
- } = browser();
19
- return (
20
- // ctrl + y for non-mac
21
- !mac && e.ctrlKey && e.keyCode === KeyYCode || mac && e.metaKey && e.shiftKey && e.keyCode === KeyZCode || e.ctrlKey && e.shiftKey && e.keyCode === KeyZCode
22
- );
23
- };
24
2
 
25
3
  /**
26
4
  * Retrieve the data source for a link given the item and the plugin that resolved it
@@ -40,26 +18,4 @@ export function getScreenReaderText(items, selectedIndex, intl) {
40
18
  const date = transformTimeStamp(intl, lastViewedDate, lastUpdatedDate);
41
19
  return [name, container, date].filter(Boolean).join(', ');
42
20
  }
43
- }
44
- export const handleNavKeyDown = (event, itemsLength, activeIndex) => {
45
- let updatedIndex = activeIndex;
46
- switch (event.key) {
47
- case 'ArrowDown':
48
- event.preventDefault();
49
- updatedIndex = (activeIndex + 1) % itemsLength;
50
- break;
51
- case 'ArrowUp':
52
- event.preventDefault();
53
- updatedIndex = activeIndex > 0 ? activeIndex - 1 : itemsLength - 1;
54
- break;
55
- case 'Home':
56
- event.preventDefault();
57
- updatedIndex = 0;
58
- break;
59
- case 'End':
60
- event.preventDefault();
61
- updatedIndex = itemsLength - 1;
62
- break;
63
- }
64
- return updatedIndex;
65
- };
21
+ }
@@ -1,7 +1,7 @@
1
1
  /** @jsx jsx */
2
2
  import { jsx } from '@emotion/react';
3
3
  import Spinner from '@atlaskit/spinner';
4
- import { rootContainerStylesForLoaderWithDisplaytext, rootContainerStylesForLoaderWithoutDisplaytext } from '../link-picker/styled';
4
+ import { rootContainerStylesForLoaderWithDisplaytext, rootContainerStylesForLoaderWithoutDisplaytext } from './styled';
5
5
 
6
6
  /**
7
7
  * Loader / skeleton for the Link Picker. Takes displayText prop - when no displayText is given the height of the skeleton
@@ -0,0 +1,25 @@
1
+ import { css } from '@emotion/react';
2
+
3
+ // eslint-disable-next-line @atlassian/tangerine/import/no-parent-imports
4
+ import { rootContainerStyles } from '../link-picker/styled';
5
+
6
+ /** Link Picker loader / skeleton will be taller in height when displayText field is shown */
7
+ // See lazy-load-height example to verify these
8
+ const LINK_PICKER_MIN_HEIGHT_IN_PX_WITHOUT_DISPLAYTEXT = 142;
9
+ const LINK_PICKER_MIN_HEIGHT_IN_PX_WITH_DISPLAYTEXT = 220;
10
+ const rootContainerStylesForLoader = css`
11
+ ${rootContainerStyles}
12
+ display: flex;
13
+ align-items: center;
14
+ justify-content: center;
15
+ `;
16
+ export const rootContainerStylesForLoaderWithDisplaytext = css`
17
+ ${rootContainerStylesForLoader}
18
+ min-height: ${LINK_PICKER_MIN_HEIGHT_IN_PX_WITH_DISPLAYTEXT}px;
19
+ `;
20
+
21
+ /** Link Picker loader / skeleton will be shorter in height when displayText field isn't shown */
22
+ export const rootContainerStylesForLoaderWithoutDisplaytext = css`
23
+ ${rootContainerStylesForLoader}
24
+ min-height: ${LINK_PICKER_MIN_HEIGHT_IN_PX_WITHOUT_DISPLAYTEXT}px;
25
+ `;