@atlaskit/link-picker 1.25.4 → 1.25.6

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 (110) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/common/constants.js +4 -2
  3. package/dist/cjs/i18n/en.js +2 -1
  4. package/dist/cjs/i18n/en_GB.js +2 -1
  5. package/dist/cjs/i18n/en_ZZ.js +2 -1
  6. package/dist/cjs/ui/link-picker/index.js +24 -56
  7. package/dist/cjs/ui/link-picker/search-results/index.js +90 -0
  8. package/dist/cjs/ui/link-picker/{link-search-error → search-results/link-search-error}/index.js +1 -1
  9. package/dist/cjs/ui/link-picker/{link-search-list → search-results/link-search-list}/index.js +5 -10
  10. package/dist/cjs/ui/link-picker/{link-search-list → search-results/link-search-list}/list-item/index.js +1 -2
  11. package/dist/cjs/ui/link-picker/{link-search-list → search-results/link-search-list}/list-item/styled.js +2 -2
  12. package/dist/cjs/ui/link-picker/{link-search-list → search-results/link-search-list}/styled.js +1 -1
  13. package/dist/cjs/ui/link-picker/{link-search-list → search-results/link-search-list}/use-track-results-shown/index.js +2 -2
  14. package/dist/cjs/ui/link-picker/search-results/styled.js +16 -0
  15. package/dist/cjs/ui/link-picker/{track-tab-viewed → search-results/track-tab-viewed}/index.js +2 -2
  16. package/dist/cjs/version.json +1 -1
  17. package/dist/es2019/common/constants.js +2 -1
  18. package/dist/es2019/i18n/en.js +2 -1
  19. package/dist/es2019/i18n/en_GB.js +2 -1
  20. package/dist/es2019/i18n/en_ZZ.js +2 -1
  21. package/dist/es2019/ui/link-picker/index.js +23 -50
  22. package/dist/es2019/ui/link-picker/search-results/index.js +77 -0
  23. package/dist/es2019/ui/link-picker/{link-search-error → search-results/link-search-error}/index.js +1 -1
  24. package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/index.js +3 -10
  25. package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/list-item/index.js +1 -2
  26. package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/list-item/styled.js +2 -2
  27. package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/styled.js +1 -1
  28. package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/use-track-results-shown/index.js +2 -2
  29. package/dist/es2019/ui/link-picker/search-results/styled.js +17 -0
  30. package/dist/es2019/ui/link-picker/{track-tab-viewed → search-results/track-tab-viewed}/index.js +2 -2
  31. package/dist/es2019/version.json +1 -1
  32. package/dist/esm/common/constants.js +2 -1
  33. package/dist/esm/i18n/en.js +2 -1
  34. package/dist/esm/i18n/en_GB.js +2 -1
  35. package/dist/esm/i18n/en_ZZ.js +2 -1
  36. package/dist/esm/ui/link-picker/index.js +23 -52
  37. package/dist/esm/ui/link-picker/search-results/index.js +79 -0
  38. package/dist/esm/ui/link-picker/{link-search-error → search-results/link-search-error}/index.js +1 -1
  39. package/dist/esm/ui/link-picker/{link-search-list → search-results/link-search-list}/index.js +5 -10
  40. package/dist/esm/ui/link-picker/{link-search-list → search-results/link-search-list}/list-item/index.js +1 -2
  41. package/dist/esm/ui/link-picker/{link-search-list → search-results/link-search-list}/list-item/styled.js +2 -2
  42. package/dist/esm/ui/link-picker/{link-search-list → search-results/link-search-list}/styled.js +1 -1
  43. package/dist/esm/ui/link-picker/{link-search-list → search-results/link-search-list}/use-track-results-shown/index.js +2 -2
  44. package/dist/esm/ui/link-picker/search-results/styled.js +6 -0
  45. package/dist/esm/ui/link-picker/{track-tab-viewed → search-results/track-tab-viewed}/index.js +2 -2
  46. package/dist/esm/version.json +1 -1
  47. package/dist/types/common/constants.d.ts +1 -0
  48. package/dist/types/i18n/en.d.ts +1 -0
  49. package/dist/types/i18n/en_GB.d.ts +1 -0
  50. package/dist/types/i18n/en_ZZ.d.ts +1 -0
  51. package/dist/types/ui/link-picker/index.d.ts +6 -6
  52. package/dist/types/ui/link-picker/search-results/index.d.ts +40 -0
  53. package/dist/{types-ts4.5/ui/link-picker → types/ui/link-picker/search-results}/link-search-list/index.d.ts +1 -1
  54. package/dist/{types-ts4.5/ui/link-picker → types/ui/link-picker/search-results}/link-search-list/list-item/index.d.ts +1 -1
  55. package/dist/types/ui/link-picker/{link-search-list → search-results/link-search-list}/use-track-results-shown/index.d.ts +1 -1
  56. package/dist/types/ui/link-picker/search-results/styled.d.ts +3 -0
  57. package/dist/types/ui/link-picker/{track-tab-viewed → search-results/track-tab-viewed}/index.d.ts +1 -1
  58. package/dist/types-ts4.5/common/constants.d.ts +1 -0
  59. package/dist/types-ts4.5/i18n/en.d.ts +1 -0
  60. package/dist/types-ts4.5/i18n/en_GB.d.ts +1 -0
  61. package/dist/types-ts4.5/i18n/en_ZZ.d.ts +1 -0
  62. package/dist/types-ts4.5/ui/link-picker/index.d.ts +6 -6
  63. package/dist/types-ts4.5/ui/link-picker/search-results/index.d.ts +40 -0
  64. package/dist/{types/ui/link-picker → types-ts4.5/ui/link-picker/search-results}/link-search-list/index.d.ts +1 -1
  65. package/dist/{types/ui/link-picker → types-ts4.5/ui/link-picker/search-results}/link-search-list/list-item/index.d.ts +1 -1
  66. 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
  67. package/dist/types-ts4.5/ui/link-picker/search-results/styled.d.ts +3 -0
  68. package/dist/types-ts4.5/ui/link-picker/{track-tab-viewed → search-results/track-tab-viewed}/index.d.ts +1 -1
  69. package/package.json +6 -5
  70. /package/dist/cjs/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/index.js +0 -0
  71. /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
  72. /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
  73. /package/dist/cjs/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/styled.js +0 -0
  74. /package/dist/cjs/ui/link-picker/{scrolling-tabs → search-results/scrolling-tabs}/index.js +0 -0
  75. /package/dist/cjs/ui/link-picker/{scrolling-tabs → search-results/scrolling-tabs}/scrolling-tabs.js +0 -0
  76. /package/dist/cjs/ui/link-picker/{scrolling-tabs → search-results/scrolling-tabs}/styles.js +0 -0
  77. /package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/index.js +0 -0
  78. /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
  79. /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
  80. /package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/styled.js +0 -0
  81. /package/dist/es2019/ui/link-picker/{scrolling-tabs → search-results/scrolling-tabs}/index.js +0 -0
  82. /package/dist/es2019/ui/link-picker/{scrolling-tabs → search-results/scrolling-tabs}/scrolling-tabs.js +0 -0
  83. /package/dist/es2019/ui/link-picker/{scrolling-tabs → search-results/scrolling-tabs}/styles.js +0 -0
  84. /package/dist/esm/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/index.js +0 -0
  85. /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
  86. /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
  87. /package/dist/esm/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/styled.js +0 -0
  88. /package/dist/esm/ui/link-picker/{scrolling-tabs → search-results/scrolling-tabs}/index.js +0 -0
  89. /package/dist/esm/ui/link-picker/{scrolling-tabs → search-results/scrolling-tabs}/scrolling-tabs.js +0 -0
  90. /package/dist/esm/ui/link-picker/{scrolling-tabs → search-results/scrolling-tabs}/styles.js +0 -0
  91. /package/dist/types/ui/link-picker/{link-search-error → search-results/link-search-error}/index.d.ts +0 -0
  92. /package/dist/types/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/index.d.ts +0 -0
  93. /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
  94. /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
  95. /package/dist/types/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/styled.d.ts +0 -0
  96. /package/dist/types/ui/link-picker/{link-search-list → search-results/link-search-list}/list-item/styled.d.ts +0 -0
  97. /package/dist/types/ui/link-picker/{link-search-list → search-results/link-search-list}/styled.d.ts +0 -0
  98. /package/dist/types/ui/link-picker/{scrolling-tabs → search-results/scrolling-tabs}/index.d.ts +0 -0
  99. /package/dist/types/ui/link-picker/{scrolling-tabs → search-results/scrolling-tabs}/scrolling-tabs.d.ts +0 -0
  100. /package/dist/types/ui/link-picker/{scrolling-tabs → search-results/scrolling-tabs}/styles.d.ts +0 -0
  101. /package/dist/types-ts4.5/ui/link-picker/{link-search-error → search-results/link-search-error}/index.d.ts +0 -0
  102. /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
  103. /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
  104. /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
  105. /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
  106. /package/dist/types-ts4.5/ui/link-picker/{link-search-list → search-results/link-search-list}/list-item/styled.d.ts +0 -0
  107. /package/dist/types-ts4.5/ui/link-picker/{link-search-list → search-results/link-search-list}/styled.d.ts +0 -0
  108. /package/dist/types-ts4.5/ui/link-picker/{scrolling-tabs → search-results/scrolling-tabs}/index.d.ts +0 -0
  109. /package/dist/types-ts4.5/ui/link-picker/{scrolling-tabs → search-results/scrolling-tabs}/scrolling-tabs.d.ts +0 -0
  110. /package/dist/types-ts4.5/ui/link-picker/{scrolling-tabs → search-results/scrolling-tabs}/styles.d.ts +0 -0
@@ -1,44 +1,33 @@
1
- import _extends from "@babel/runtime/helpers/extends";
2
1
  /** @jsx jsx */
3
- import { Fragment, memo, useCallback, useLayoutEffect, useReducer } from 'react';
2
+ import { memo, useCallback, useLayoutEffect, useReducer } from 'react';
4
3
  import { jsx } from '@emotion/react';
5
4
  import { FormattedMessage, useIntl } from 'react-intl-next';
6
5
  import { useAnalyticsEvents } from '@atlaskit/analytics-next';
7
6
  import { isSafeUrl, normalizeUrl } from '@atlaskit/linking-common/url';
8
7
  import { browser } from '@atlaskit/linking-common/user-agent';
9
- import Spinner from '@atlaskit/spinner/spinner';
10
- import Tabs, { Tab, TabList } from '@atlaskit/tabs';
11
8
  import VisuallyHidden from '@atlaskit/visually-hidden';
12
9
  import { useLinkPickerAnalytics, withInputFieldTracking, withLinkPickerAnalyticsContext } from '../../common/analytics';
13
10
  import { ANALYTICS_CHANNEL } from '../../common/constants';
14
11
  import createEventPayload from '../../common/utils/analytics/analytics.codegen';
15
12
  import { handleNavKeyDown } from '../../common/utils/handleNavKeyDown';
16
- import { useFixHeight } from '../../controllers/use-fix-height';
17
13
  import { usePlugins } from '../../services/use-plugins';
18
14
  import { useSearchQuery } from '../../services/use-search-query';
19
15
  import { Announcer } from './announcer';
20
16
  import { FormFooter, testIds as formFooterTestIds } from './form-footer';
21
- import { LinkSearchError, testIds as searchErrorTestIds } from './link-search-error';
22
- import { LinkSearchList, testIds as listTestIds } from './link-search-list';
23
- import { spinnerContainerStyles } from './link-search-list/styled';
24
17
  import { formMessages, linkMessages, linkTextMessages, searchMessages } from './messages';
25
- import { ScrollingTabList } from './scrolling-tabs';
26
- import { flexColumnStyles, formFooterMargin, rootContainerStyles, tabsWrapperStyles } from './styled';
18
+ import { SearchResults, testIds as searchTestIds } from './search-results';
19
+ import { formFooterMargin, rootContainerStyles } from './styled';
27
20
  import { testIds as textFieldTestIds, TextInput } from './text-input';
28
21
  import { TrackMount } from './track-mount';
29
- import { TrackTabViewed } from './track-tab-viewed';
30
22
  import { getDataSource, getScreenReaderText } from './utils';
31
23
  export const testIds = {
32
24
  linkPickerRoot: 'link-picker-root',
33
25
  linkPicker: 'link-picker',
34
26
  urlInputField: 'link-url',
35
27
  textInputField: 'link-text',
28
+ ...searchTestIds,
36
29
  ...formFooterTestIds,
37
- ...searchErrorTestIds,
38
- ...listTestIds,
39
- ...textFieldTestIds,
40
- tabList: 'link-picker-tabs',
41
- tabItem: 'link-picker-tab'
30
+ ...textFieldTestIds
42
31
  };
43
32
  const initState = {
44
33
  url: '',
@@ -90,7 +79,6 @@ export const LinkPicker = withLinkPickerAnalyticsContext( /*#__PURE__*/memo(({
90
79
  hideDisplayText,
91
80
  featureFlags
92
81
  }) => {
93
- var _activePlugin$errorFa, _activePlugin$errorFa2;
94
82
  const {
95
83
  createAnalyticsEvent
96
84
  } = useAnalyticsEvents();
@@ -119,7 +107,6 @@ export const LinkPicker = withLinkPickerAnalyticsContext( /*#__PURE__*/memo(({
119
107
  retry,
120
108
  pluginAction
121
109
  } = usePlugins(queryState, activeTab, plugins);
122
- const fixListHeightProps = useFixHeight(isLoadingResults);
123
110
  const isEditing = !!initUrl;
124
111
  const selectedItem = items === null || items === void 0 ? void 0 : items[selectedIndex];
125
112
  const isSelectedItem = (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.url) === url;
@@ -287,10 +274,6 @@ export const LinkPicker = withLinkPickerAnalyticsContext( /*#__PURE__*/memo(({
287
274
  // as the Aria design pattern for combobox does not work in this case
288
275
  // for details: https://a11y-internal.atlassian.net/browse/AK-740
289
276
  const screenReaderText = browser().safari && getScreenReaderText(items !== null && items !== void 0 ? items : [], selectedIndex, intl);
290
- const tabList = jsx(TabList, null, tabs.map(tab => jsx(Tab, {
291
- key: tab.tabTitle,
292
- testId: testIds.tabItem
293
- }, tab.tabTitle)));
294
277
  return jsx("form", {
295
278
  "data-testid": testIds.linkPicker,
296
279
  css: rootContainerStyles,
@@ -333,35 +316,25 @@ export const LinkPicker = withLinkPickerAnalyticsContext( /*#__PURE__*/memo(({
333
316
  "aria-label": intl.formatMessage(linkTextMessages.linkTextAriaLabel),
334
317
  onClear: handleClear,
335
318
  onChange: handleChangeText
336
- }), isLoadingPlugins && !!queryState && jsx("div", {
337
- css: spinnerContainerStyles
338
- }, jsx(Spinner, {
339
- testId: testIds.tabsLoadingIndicator,
340
- size: "medium"
341
- })), !isLoadingPlugins && isActivePlugin && !!queryState && jsx(Fragment, null, tabs.length > 0 && jsx("div", {
342
- css: tabsWrapperStyles
343
- }, jsx(Tabs, {
344
- id: testIds.tabList,
345
- testId: testIds.tabList,
346
- selected: activeTab,
347
- onChange: handleTabChange
348
- }, featureFlags !== null && featureFlags !== void 0 && featureFlags.scrollingTabs ? jsx(ScrollingTabList, null, tabList) : tabList), jsx(TrackTabViewed, {
349
- activePlugin: activePlugin
350
- })), jsx("div", _extends({
351
- css: flexColumnStyles
352
- }, fixListHeightProps), !error && jsx(LinkSearchList, {
353
- id: linkSearchListId,
354
- role: "listbox",
355
- items: items,
356
- isLoading: isLoadingResults,
357
- 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,
358
328
  activeIndex: activeIndex,
359
- onSelect: handleSelected,
360
- onChange: handleSearchListOnChange,
361
- onKeyDown: handleKeyDown,
362
- hasSearchTerm: !!(queryState !== null && queryState !== void 0 && queryState.query.length),
363
- activePlugin: activePlugin
364
- }), 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, {
365
338
  error: error,
366
339
  items: items
367
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
+ };
@@ -4,7 +4,7 @@ import { jsx } from '@emotion/react';
4
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: {
@@ -6,7 +6,7 @@ import { defineMessages, FormattedMessage } from 'react-intl-next';
6
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 { handleNavKeyDown } from '../../../common/utils/handleNavKeyDown';
9
+ import { handleNavKeyDown } from '../../../../common/utils/handleNavKeyDown';
10
10
  import { NoResults, testIds as noResultsTestIds } from './link-search-no-results';
11
11
  import { emptyStateNoResultsWrapper } from './link-search-no-results/styled';
12
12
  import { LinkSearchListItem, testIds as searchResultItemTestIds } from './list-item';
@@ -74,12 +74,6 @@ export const LinkSearchList = /*#__PURE__*/forwardRef(({
74
74
  }
75
75
  return -1;
76
76
  }, [selectedIndex]);
77
- const handleOnFocus = () => {
78
- if (items && items.length > 0 && selectedIndex === -1) {
79
- const item = items[0];
80
- onChange(item.objectId);
81
- }
82
- };
83
77
  const handleKeyDown = useCallback(event => {
84
78
  let updatedIndex = activeIndex;
85
79
  if (onKeyDown) {
@@ -91,13 +85,12 @@ export const LinkSearchList = /*#__PURE__*/forwardRef(({
91
85
  updatedIndex = handleNavKeyDown(event, items.length, activeIndex);
92
86
  const item = items === null || items === void 0 ? void 0 : items[updatedIndex];
93
87
  if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key) && item) {
94
- onChange(item.objectId);
95
88
  if (itemRefs.current) {
96
89
  var _itemRefs$current$ite;
97
90
  (_itemRefs$current$ite = itemRefs.current[item.objectId]) === null || _itemRefs$current$ite === void 0 ? void 0 : _itemRefs$current$ite.focus();
98
91
  }
99
92
  }
100
- }, [activeIndex, items, onChange, onKeyDown]);
93
+ }, [activeIndex, items, onKeyDown]);
101
94
  if ((items === null || items === void 0 ? void 0 : items.length) === 0) {
102
95
  if (getBooleanFF('platform.linking-platform.link-picker.enable-empty-state')) {
103
96
  if (hasSearchTerm) {
@@ -137,7 +130,7 @@ export const LinkSearchList = /*#__PURE__*/forwardRef(({
137
130
  item: item,
138
131
  selected: selectedIndex === index,
139
132
  active: activeIndex === index,
140
- onFocus: handleOnFocus,
133
+ onFocus: () => onChange(item.objectId),
141
134
  onKeyDown: handleKeyDown,
142
135
  onSelect: onSelect,
143
136
  key: item.objectId,
@@ -3,7 +3,7 @@ import { forwardRef, Fragment } from 'react';
3
3
  import { jsx } from '@emotion/react';
4
4
  import { useIntl } from 'react-intl-next';
5
5
  /* eslint-disable-next-line @atlassian/tangerine/import/no-parent-imports */
6
- import { transformTimeStamp } from '../../transformTimeStamp';
6
+ import { transformTimeStamp } from '../../../transformTimeStamp';
7
7
  import { composeListItemStyles, imgStyles, itemIconStyles, itemNameStyles, listItemContainerInnerStyles, listItemContainerStyles, listItemContextStyles, listItemNameStyles } from './styled';
8
8
  export const testIds = {
9
9
  searchResultItem: 'link-search-list-item',
@@ -45,7 +45,6 @@ const ListItemIcon = props => {
45
45
  export const LinkSearchListItem = /*#__PURE__*/forwardRef(({
46
46
  item,
47
47
  selected,
48
- active,
49
48
  id,
50
49
  role,
51
50
  onSelect,
@@ -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;
@@ -22,7 +22,7 @@ export const spinnerContainerStyles = css`
22
22
  `;
23
23
  export const listStyles = css`
24
24
  padding: 0;
25
- margin: 0;
25
+ margin: 0 calc(-1 * ${"var(--ds-space-200, 16px)"});
26
26
  list-style: none;
27
27
  `;
28
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 {
@@ -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 { 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
  export function TrackTabViewed({
7
7
  activePlugin
8
8
  }) {
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/link-picker",
3
- "version": "1.25.4",
3
+ "version": "1.25.6",
4
4
  "sideEffects": false
5
5
  }
@@ -1,3 +1,4 @@
1
1
  export var ANALYTICS_CHANNEL = 'media';
2
2
  export var COMPONENT_NAME = 'linkPicker';
3
- export var RECENT_SEARCH_LIST_SIZE = 5;
3
+ export var RECENT_SEARCH_LIST_SIZE = 5;
4
+ export var LINK_PICKER_WIDTH_IN_PX = 342;
@@ -32,5 +32,6 @@ export default {
32
32
  'fabric.linkPicker.time.message.updated': 'Updated {time}',
33
33
  'fabric.linkPicker.time.message.viewed': 'Viewed {time}',
34
34
  'fabric.linkPicker.unhandledError.description': 'Try reloading the page.',
35
- 'fabric.linkPicker.unhandledError.heading': 'Something went wrong!'
35
+ 'fabric.linkPicker.unhandledError.heading': 'Something went wrong!',
36
+ foo: 'Default string'
36
37
  };
@@ -32,5 +32,6 @@ export default {
32
32
  'fabric.linkPicker.time.message.updated': 'Updated {time}',
33
33
  'fabric.linkPicker.time.message.viewed': 'Viewed {time}',
34
34
  'fabric.linkPicker.unhandledError.description': 'Try reloading the page.',
35
- 'fabric.linkPicker.unhandledError.heading': 'Something went wrong!'
35
+ 'fabric.linkPicker.unhandledError.heading': 'Something went wrong!',
36
+ foo: 'Default string'
36
37
  };
@@ -32,5 +32,6 @@ export default {
32
32
  'fabric.linkPicker.time.message.updated': '⁣⁢Updated {time}‌‍⁡؜؜⁠‌⁣⁤',
33
33
  'fabric.linkPicker.time.message.viewed': '⁣⁢Viewed {time}‌⁡؜‌‍‍؜؜⁠‍‍‌⁣⁤',
34
34
  'fabric.linkPicker.unhandledError.description': '⁣⁢Try reloading the page.‌‍⁡‌⁠‍⁠‍⁠⁠؜؜‍⁣⁤',
35
- 'fabric.linkPicker.unhandledError.heading': '⁣⁢Something went wrong!؜⁠‌⁠⁠‍⁠⁡⁠⁣⁤'
35
+ 'fabric.linkPicker.unhandledError.heading': '⁣⁢Something went wrong!؜⁠‌⁠⁠‍⁠⁡⁠⁣⁤',
36
+ foo: '⁣⁢Default string⁡‍⁡⁠‍‍⁡‌⁠⁡⁡‌⁠⁣⁤'
36
37
  };
@@ -1,46 +1,35 @@
1
- import _extends from "@babel/runtime/helpers/extends";
2
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
3
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5
4
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
5
  /** @jsx jsx */
7
- import { Fragment, memo, useCallback, useLayoutEffect, useReducer } from 'react';
6
+ import { memo, useCallback, useLayoutEffect, useReducer } from 'react';
8
7
  import { jsx } from '@emotion/react';
9
8
  import { FormattedMessage, useIntl } from 'react-intl-next';
10
9
  import { useAnalyticsEvents } from '@atlaskit/analytics-next';
11
10
  import { isSafeUrl, normalizeUrl } from '@atlaskit/linking-common/url';
12
11
  import { browser } from '@atlaskit/linking-common/user-agent';
13
- import Spinner from '@atlaskit/spinner/spinner';
14
- import Tabs, { Tab, TabList } from '@atlaskit/tabs';
15
12
  import VisuallyHidden from '@atlaskit/visually-hidden';
16
13
  import { useLinkPickerAnalytics, withInputFieldTracking, withLinkPickerAnalyticsContext } from '../../common/analytics';
17
14
  import { ANALYTICS_CHANNEL } from '../../common/constants';
18
15
  import createEventPayload from '../../common/utils/analytics/analytics.codegen';
19
16
  import { handleNavKeyDown } from '../../common/utils/handleNavKeyDown';
20
- import { useFixHeight } from '../../controllers/use-fix-height';
21
17
  import { usePlugins } from '../../services/use-plugins';
22
18
  import { useSearchQuery } from '../../services/use-search-query';
23
19
  import { Announcer } from './announcer';
24
20
  import { FormFooter, testIds as formFooterTestIds } from './form-footer';
25
- import { LinkSearchError, testIds as searchErrorTestIds } from './link-search-error';
26
- import { LinkSearchList, testIds as listTestIds } from './link-search-list';
27
- import { spinnerContainerStyles } from './link-search-list/styled';
28
21
  import { formMessages, linkMessages, linkTextMessages, searchMessages } from './messages';
29
- import { ScrollingTabList } from './scrolling-tabs';
30
- import { flexColumnStyles, formFooterMargin, rootContainerStyles, tabsWrapperStyles } from './styled';
22
+ import { SearchResults, testIds as searchTestIds } from './search-results';
23
+ import { formFooterMargin, rootContainerStyles } from './styled';
31
24
  import { testIds as textFieldTestIds, TextInput } from './text-input';
32
25
  import { TrackMount } from './track-mount';
33
- import { TrackTabViewed } from './track-tab-viewed';
34
26
  import { getDataSource, getScreenReaderText } from './utils';
35
- export var testIds = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
27
+ export var testIds = _objectSpread(_objectSpread(_objectSpread({
36
28
  linkPickerRoot: 'link-picker-root',
37
29
  linkPicker: 'link-picker',
38
30
  urlInputField: 'link-url',
39
31
  textInputField: 'link-text'
40
- }, formFooterTestIds), searchErrorTestIds), listTestIds), textFieldTestIds), {}, {
41
- tabList: 'link-picker-tabs',
42
- tabItem: 'link-picker-tab'
43
- });
32
+ }, searchTestIds), formFooterTestIds), textFieldTestIds);
44
33
  var initState = {
45
34
  url: '',
46
35
  displayText: '',
@@ -77,7 +66,6 @@ var LinkInputField = withInputFieldTracking(TextInput, 'link', function (event,
77
66
  });
78
67
  var DisplayTextInputField = withInputFieldTracking(TextInput, 'displayText');
79
68
  export var LinkPicker = withLinkPickerAnalyticsContext( /*#__PURE__*/memo(function (_ref) {
80
- var _activePlugin$errorFa, _activePlugin$errorFa2;
81
69
  var onSubmit = _ref.onSubmit,
82
70
  onCancel = _ref.onCancel,
83
71
  onContentResize = _ref.onContentResize,
@@ -113,7 +101,6 @@ export var LinkPicker = withLinkPickerAnalyticsContext( /*#__PURE__*/memo(functi
113
101
  error = _usePlugins.error,
114
102
  retry = _usePlugins.retry,
115
103
  pluginAction = _usePlugins.pluginAction;
116
- var fixListHeightProps = useFixHeight(isLoadingResults);
117
104
  var isEditing = !!initUrl;
118
105
  var selectedItem = items === null || items === void 0 ? void 0 : items[selectedIndex];
119
106
  var isSelectedItem = (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.url) === url;
@@ -280,12 +267,6 @@ export var LinkPicker = withLinkPickerAnalyticsContext( /*#__PURE__*/memo(functi
280
267
  // as the Aria design pattern for combobox does not work in this case
281
268
  // for details: https://a11y-internal.atlassian.net/browse/AK-740
282
269
  var screenReaderText = browser().safari && getScreenReaderText(items !== null && items !== void 0 ? items : [], selectedIndex, intl);
283
- var tabList = jsx(TabList, null, tabs.map(function (tab) {
284
- return jsx(Tab, {
285
- key: tab.tabTitle,
286
- testId: testIds.tabItem
287
- }, tab.tabTitle);
288
- }));
289
270
  return jsx("form", {
290
271
  "data-testid": testIds.linkPicker,
291
272
  css: rootContainerStyles,
@@ -328,35 +309,25 @@ export var LinkPicker = withLinkPickerAnalyticsContext( /*#__PURE__*/memo(functi
328
309
  "aria-label": intl.formatMessage(linkTextMessages.linkTextAriaLabel),
329
310
  onClear: handleClear,
330
311
  onChange: handleChangeText
331
- }), isLoadingPlugins && !!queryState && jsx("div", {
332
- css: spinnerContainerStyles
333
- }, jsx(Spinner, {
334
- testId: testIds.tabsLoadingIndicator,
335
- size: "medium"
336
- })), !isLoadingPlugins && isActivePlugin && !!queryState && jsx(Fragment, null, tabs.length > 0 && jsx("div", {
337
- css: tabsWrapperStyles
338
- }, jsx(Tabs, {
339
- id: testIds.tabList,
340
- testId: testIds.tabList,
341
- selected: activeTab,
342
- onChange: handleTabChange
343
- }, featureFlags !== null && featureFlags !== void 0 && featureFlags.scrollingTabs ? jsx(ScrollingTabList, null, tabList) : tabList), jsx(TrackTabViewed, {
344
- activePlugin: activePlugin
345
- })), jsx("div", _extends({
346
- css: flexColumnStyles
347
- }, fixListHeightProps), !error && jsx(LinkSearchList, {
348
- id: linkSearchListId,
349
- role: "listbox",
350
- items: items,
351
- isLoading: isLoadingResults,
352
- selectedIndex: selectedIndex,
312
+ }), !!queryState && jsx(SearchResults, {
313
+ activeTab: activeTab,
314
+ tabs: tabs,
315
+ activePlugin: activePlugin,
316
+ isLoadingResults: isLoadingResults,
317
+ isLoadingPlugins: isLoadingPlugins,
318
+ linkSearchListId: linkSearchListId,
319
+ error: error,
320
+ featureFlags: featureFlags,
353
321
  activeIndex: activeIndex,
354
- onSelect: handleSelected,
355
- onChange: handleSearchListOnChange,
356
- onKeyDown: handleKeyDown,
357
- hasSearchTerm: !!(queryState !== null && queryState !== void 0 && queryState.query.length),
358
- activePlugin: activePlugin
359
- }), 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, {
322
+ selectedIndex: selectedIndex,
323
+ items: items,
324
+ queryState: queryState,
325
+ handleKeyDown: handleKeyDown,
326
+ handleSelected: handleSelected,
327
+ handleTabChange: handleTabChange,
328
+ handleSearchListOnChange: handleSearchListOnChange,
329
+ retry: retry
330
+ }), jsx(FormFooter, {
360
331
  error: error,
361
332
  items: items
362
333
  /** If the results section appears to be loading, impact whether the submit button is disabled */,
@@ -0,0 +1,79 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5
+ /** @jsx jsx */
6
+ import { Fragment } from 'react';
7
+ import { jsx } from '@emotion/react';
8
+ import Spinner from '@atlaskit/spinner/spinner';
9
+ import Tabs, { Tab, TabList } from '@atlaskit/tabs';
10
+ import { useFixHeight } from '../../../controllers/use-fix-height';
11
+ import { LinkSearchError, testIds as searchErrorTestIds } from './link-search-error';
12
+ import { LinkSearchList, testIds as listTestIds } from './link-search-list';
13
+ import { ScrollingTabList } from './scrolling-tabs';
14
+ import { flexColumnStyles, spinnerContainerStyles, tabsWrapperStyles } from './styled';
15
+ import { TrackTabViewed } from './track-tab-viewed';
16
+ export var testIds = _objectSpread(_objectSpread(_objectSpread({}, searchErrorTestIds), listTestIds), {}, {
17
+ tabsLoadingIndicator: 'link-picker.tabs-loading-indicator',
18
+ tabList: 'link-picker-tabs',
19
+ tabItem: 'link-picker-tab'
20
+ });
21
+ export var SearchResults = function SearchResults(_ref) {
22
+ var _activePlugin$errorFa, _activePlugin$errorFa2;
23
+ var tabs = _ref.tabs,
24
+ activeTab = _ref.activeTab,
25
+ activePlugin = _ref.activePlugin,
26
+ isLoadingPlugins = _ref.isLoadingPlugins,
27
+ isLoadingResults = _ref.isLoadingResults,
28
+ handleTabChange = _ref.handleTabChange,
29
+ handleSearchListOnChange = _ref.handleSearchListOnChange,
30
+ featureFlags = _ref.featureFlags,
31
+ linkSearchListId = _ref.linkSearchListId,
32
+ error = _ref.error,
33
+ queryState = _ref.queryState,
34
+ items = _ref.items,
35
+ activeIndex = _ref.activeIndex,
36
+ selectedIndex = _ref.selectedIndex,
37
+ handleSelected = _ref.handleSelected,
38
+ handleKeyDown = _ref.handleKeyDown,
39
+ retry = _ref.retry;
40
+ var isActivePlugin = !!activePlugin;
41
+
42
+ // This will be redundant if we move towards fixed height search results section
43
+ var fixListHeightProps = useFixHeight(isLoadingResults);
44
+ var tabList = jsx(TabList, null, tabs.map(function (tab) {
45
+ return jsx(Tab, {
46
+ key: tab.tabTitle,
47
+ testId: testIds.tabItem
48
+ }, tab.tabTitle);
49
+ }));
50
+ return jsx(Fragment, null, isLoadingPlugins && !!queryState && jsx("div", {
51
+ css: spinnerContainerStyles
52
+ }, jsx(Spinner, {
53
+ testId: testIds.tabsLoadingIndicator,
54
+ size: "medium"
55
+ })), !isLoadingPlugins && isActivePlugin && !!queryState && jsx(Fragment, null, tabs.length > 0 && jsx("div", {
56
+ css: tabsWrapperStyles
57
+ }, jsx(Tabs, {
58
+ id: testIds.tabList,
59
+ testId: testIds.tabList,
60
+ selected: activeTab,
61
+ onChange: handleTabChange
62
+ }, featureFlags !== null && featureFlags !== void 0 && featureFlags.scrollingTabs ? jsx(ScrollingTabList, null, tabList) : tabList), jsx(TrackTabViewed, {
63
+ activePlugin: activePlugin
64
+ })), jsx("div", _extends({
65
+ css: flexColumnStyles
66
+ }, fixListHeightProps), !error && jsx(LinkSearchList, {
67
+ id: linkSearchListId,
68
+ role: "listbox",
69
+ items: items,
70
+ isLoading: isLoadingResults,
71
+ selectedIndex: selectedIndex,
72
+ activeIndex: activeIndex,
73
+ onSelect: handleSelected,
74
+ onChange: handleSearchListOnChange,
75
+ onKeyDown: handleKeyDown,
76
+ hasSearchTerm: !!(queryState !== null && queryState !== void 0 && queryState.query.length),
77
+ activePlugin: activePlugin
78
+ }), 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)))));
79
+ };
@@ -4,7 +4,7 @@ import { jsx } from '@emotion/react';
4
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 var CONTACT_SUPPORT_LINK = 'https://support.atlassian.com/contact/';
9
9
  export var messages = defineMessages({
10
10
  searchErrorHeader: {