@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.
- package/CHANGELOG.md +12 -0
- package/dist/cjs/common/analytics/context.js +1 -1
- package/dist/cjs/common/analytics/input-field-tracking.js +3 -3
- package/dist/cjs/common/constants.js +6 -2
- package/dist/cjs/common/utils/handleNavKeyDown.js +29 -0
- package/dist/cjs/i18n/en.js +2 -1
- package/dist/cjs/i18n/en_GB.js +2 -1
- package/dist/cjs/i18n/en_ZZ.js +2 -1
- package/dist/cjs/services/use-plugins/index.js +7 -8
- package/dist/cjs/ui/error-boundary/error-boundary-fallback/index.js +3 -1
- package/dist/cjs/ui/error-boundary/index.js +3 -3
- package/dist/cjs/ui/index.js +2 -2
- package/dist/cjs/ui/link-picker/form-footer/index.js +10 -10
- package/dist/cjs/ui/link-picker/index.js +38 -81
- package/dist/cjs/ui/link-picker/search-results/index.js +90 -0
- package/dist/cjs/ui/link-picker/{link-search-error → search-results/link-search-error}/index.js +1 -1
- package/dist/cjs/ui/link-picker/{link-search-list → search-results/link-search-list}/index.js +11 -11
- package/dist/cjs/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/index.js +1 -1
- package/dist/cjs/ui/link-picker/{list-item → search-results/link-search-list/list-item}/index.js +3 -2
- package/dist/cjs/ui/link-picker/{list-item → search-results/link-search-list/list-item}/styled.js +7 -5
- package/dist/cjs/ui/link-picker/{link-search-list → search-results/link-search-list}/styled.js +1 -1
- package/dist/cjs/ui/link-picker/{link-search-list → search-results/link-search-list}/use-track-results-shown/index.js +2 -2
- package/dist/cjs/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/index.js +3 -0
- package/dist/cjs/ui/link-picker/search-results/styled.js +16 -0
- package/dist/cjs/ui/link-picker/{track-tab-viewed → search-results/track-tab-viewed}/index.js +2 -2
- package/dist/cjs/ui/link-picker/styled.js +5 -23
- package/dist/cjs/ui/link-picker/text-input/index.js +4 -4
- package/dist/cjs/ui/link-picker/text-input/utils.js +28 -0
- package/dist/cjs/ui/link-picker/track-mount/index.js +1 -1
- package/dist/cjs/ui/link-picker/transformTimeStamp.js +2 -2
- package/dist/cjs/ui/link-picker/utils.js +1 -48
- package/dist/cjs/ui/loader-fallback/index.js +1 -1
- package/dist/cjs/ui/loader-fallback/styled.js +21 -0
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/common/analytics/context.js +1 -1
- package/dist/es2019/common/analytics/input-field-tracking.js +2 -2
- package/dist/es2019/common/constants.js +3 -1
- package/dist/es2019/common/utils/handleNavKeyDown.js +22 -0
- package/dist/es2019/i18n/en.js +2 -1
- package/dist/es2019/i18n/en_GB.js +2 -1
- package/dist/es2019/i18n/en_ZZ.js +2 -1
- package/dist/es2019/services/use-plugins/index.js +5 -6
- package/dist/es2019/ui/error-boundary/error-boundary-fallback/index.js +2 -1
- package/dist/es2019/ui/error-boundary/index.js +3 -3
- package/dist/es2019/ui/index.js +3 -3
- package/dist/es2019/ui/link-picker/announcer.js +1 -1
- package/dist/es2019/ui/link-picker/form-footer/index.js +4 -4
- package/dist/es2019/ui/link-picker/index.js +32 -69
- package/dist/es2019/ui/link-picker/search-results/index.js +77 -0
- package/dist/es2019/ui/link-picker/{link-search-error → search-results/link-search-error}/index.js +2 -2
- package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/index.js +5 -5
- package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/index.js +1 -1
- package/dist/es2019/ui/link-picker/{list-item → search-results/link-search-list/list-item}/index.js +3 -3
- package/dist/es2019/ui/link-picker/{list-item → search-results/link-search-list/list-item}/styled.js +4 -4
- package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/styled.js +2 -1
- package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/use-track-results-shown/index.js +2 -2
- package/dist/es2019/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/index.js +6 -3
- package/dist/es2019/ui/link-picker/search-results/styled.js +17 -0
- package/dist/es2019/ui/link-picker/{track-tab-viewed → search-results/track-tab-viewed}/index.js +2 -2
- package/dist/es2019/ui/link-picker/styled.js +0 -30
- package/dist/es2019/ui/link-picker/text-input/index.js +5 -5
- package/dist/es2019/ui/link-picker/text-input/utils.js +22 -0
- package/dist/es2019/ui/link-picker/track-mount/index.js +1 -1
- package/dist/es2019/ui/link-picker/transformTimeStamp.js +2 -2
- package/dist/es2019/ui/link-picker/utils.js +1 -45
- package/dist/es2019/ui/loader-fallback/index.js +1 -1
- package/dist/es2019/ui/loader-fallback/styled.js +25 -0
- package/dist/es2019/version.json +1 -1
- package/dist/esm/common/analytics/context.js +1 -1
- package/dist/esm/common/analytics/input-field-tracking.js +2 -2
- package/dist/esm/common/constants.js +3 -1
- package/dist/esm/common/utils/handleNavKeyDown.js +22 -0
- package/dist/esm/i18n/en.js +2 -1
- package/dist/esm/i18n/en_GB.js +2 -1
- package/dist/esm/i18n/en_ZZ.js +2 -1
- package/dist/esm/services/use-plugins/index.js +5 -6
- package/dist/esm/ui/error-boundary/error-boundary-fallback/index.js +2 -1
- package/dist/esm/ui/error-boundary/index.js +3 -3
- package/dist/esm/ui/index.js +3 -3
- package/dist/esm/ui/link-picker/announcer.js +1 -1
- package/dist/esm/ui/link-picker/form-footer/index.js +4 -4
- package/dist/esm/ui/link-picker/index.js +33 -72
- package/dist/esm/ui/link-picker/search-results/index.js +79 -0
- package/dist/esm/ui/link-picker/{link-search-error → search-results/link-search-error}/index.js +2 -2
- package/dist/esm/ui/link-picker/{link-search-list → search-results/link-search-list}/index.js +5 -5
- package/dist/esm/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/index.js +1 -1
- package/dist/esm/ui/link-picker/{list-item → search-results/link-search-list/list-item}/index.js +3 -3
- package/dist/esm/ui/link-picker/{list-item → search-results/link-search-list/list-item}/styled.js +4 -4
- package/dist/esm/ui/link-picker/{link-search-list → search-results/link-search-list}/styled.js +2 -1
- package/dist/esm/ui/link-picker/{link-search-list → search-results/link-search-list}/use-track-results-shown/index.js +2 -2
- package/dist/esm/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/index.js +6 -3
- package/dist/esm/ui/link-picker/search-results/styled.js +6 -0
- package/dist/esm/ui/link-picker/{track-tab-viewed → search-results/track-tab-viewed}/index.js +2 -2
- package/dist/esm/ui/link-picker/styled.js +4 -19
- package/dist/esm/ui/link-picker/text-input/index.js +5 -5
- package/dist/esm/ui/link-picker/text-input/utils.js +20 -0
- package/dist/esm/ui/link-picker/track-mount/index.js +1 -1
- package/dist/esm/ui/link-picker/transformTimeStamp.js +2 -2
- package/dist/esm/ui/link-picker/utils.js +1 -43
- package/dist/esm/ui/loader-fallback/index.js +1 -1
- package/dist/esm/ui/loader-fallback/styled.js +16 -0
- package/dist/esm/version.json +1 -1
- package/dist/types/common/analytics/context.d.ts +1 -1
- package/dist/types/common/constants.d.ts +2 -0
- package/dist/{types-ts4.5/ui → types/common}/types.d.ts +10 -0
- package/dist/types/common/utils/handleNavKeyDown.d.ts +2 -0
- package/dist/types/i18n/en.d.ts +1 -0
- package/dist/types/i18n/en_GB.d.ts +1 -0
- package/dist/types/i18n/en_ZZ.d.ts +1 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/services/use-plugins/index.d.ts +1 -1
- package/dist/types/services/use-plugins/reducer.d.ts +1 -1
- package/dist/types/services/use-plugins/utils.d.ts +1 -1
- package/dist/types/services/use-search-query/index.d.ts +1 -2
- package/dist/types/ui/link-picker/form-footer/index.d.ts +1 -2
- package/dist/types/ui/link-picker/form-footer/utils.d.ts +1 -1
- package/dist/types/ui/link-picker/index.d.ts +7 -19
- package/dist/types/ui/link-picker/search-results/index.d.ts +40 -0
- package/dist/types/ui/link-picker/{link-search-list → search-results/link-search-list}/index.d.ts +1 -1
- package/dist/types/ui/link-picker/{list-item → search-results/link-search-list/list-item}/index.d.ts +1 -1
- package/dist/types/ui/link-picker/{link-search-list → search-results/link-search-list}/use-track-results-shown/index.d.ts +1 -1
- package/dist/types/ui/link-picker/search-results/styled.d.ts +3 -0
- package/dist/types/ui/link-picker/{track-tab-viewed → search-results/track-tab-viewed}/index.d.ts +1 -1
- package/dist/types/ui/link-picker/styled.d.ts +0 -5
- package/dist/types/ui/link-picker/{conditional-spotlight-target-wrapper → text-input/conditional-spotlight-target-wrapper}/index.d.ts +1 -2
- package/dist/types/ui/link-picker/text-input/index.d.ts +1 -1
- package/dist/types/ui/link-picker/text-input/utils.d.ts +3 -0
- package/dist/types/ui/link-picker/utils.d.ts +1 -5
- package/dist/types/ui/loader-fallback/styled.d.ts +3 -0
- package/dist/types-ts4.5/common/analytics/context.d.ts +1 -1
- package/dist/types-ts4.5/common/constants.d.ts +2 -0
- package/dist/{types/ui → types-ts4.5/common}/types.d.ts +10 -0
- package/dist/types-ts4.5/common/utils/handleNavKeyDown.d.ts +2 -0
- package/dist/types-ts4.5/i18n/en.d.ts +1 -0
- package/dist/types-ts4.5/i18n/en_GB.d.ts +1 -0
- package/dist/types-ts4.5/i18n/en_ZZ.d.ts +1 -0
- package/dist/types-ts4.5/index.d.ts +1 -1
- package/dist/types-ts4.5/services/use-plugins/index.d.ts +1 -1
- package/dist/types-ts4.5/services/use-plugins/reducer.d.ts +1 -1
- package/dist/types-ts4.5/services/use-plugins/utils.d.ts +1 -1
- package/dist/types-ts4.5/services/use-search-query/index.d.ts +1 -2
- package/dist/types-ts4.5/ui/link-picker/form-footer/index.d.ts +1 -2
- package/dist/types-ts4.5/ui/link-picker/form-footer/utils.d.ts +1 -1
- package/dist/types-ts4.5/ui/link-picker/index.d.ts +7 -19
- package/dist/types-ts4.5/ui/link-picker/search-results/index.d.ts +40 -0
- package/dist/types-ts4.5/ui/link-picker/{link-search-list → search-results/link-search-list}/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/link-picker/{list-item → search-results/link-search-list/list-item}/index.d.ts +1 -1
- 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
- package/dist/types-ts4.5/ui/link-picker/search-results/styled.d.ts +3 -0
- package/dist/types-ts4.5/ui/link-picker/{track-tab-viewed → search-results/track-tab-viewed}/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/link-picker/styled.d.ts +0 -5
- package/dist/types-ts4.5/ui/link-picker/{conditional-spotlight-target-wrapper → text-input/conditional-spotlight-target-wrapper}/index.d.ts +1 -2
- package/dist/types-ts4.5/ui/link-picker/text-input/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/link-picker/text-input/utils.d.ts +3 -0
- package/dist/types-ts4.5/ui/link-picker/utils.d.ts +1 -5
- package/dist/types-ts4.5/ui/loader-fallback/styled.d.ts +3 -0
- package/package.json +27 -6
- /package/dist/cjs/{ui → common}/types.js +0 -0
- /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
- /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
- /package/dist/cjs/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/styled.js +0 -0
- /package/dist/cjs/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/scrolling-tabs.js +0 -0
- /package/dist/cjs/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/styles.js +0 -0
- /package/dist/cjs/ui/link-picker/{conditional-spotlight-target-wrapper → text-input/conditional-spotlight-target-wrapper}/index.js +0 -0
- /package/dist/es2019/{ui → common}/types.js +0 -0
- /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
- /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
- /package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/styled.js +0 -0
- /package/dist/es2019/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/scrolling-tabs.js +0 -0
- /package/dist/es2019/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/styles.js +0 -0
- /package/dist/es2019/ui/link-picker/{conditional-spotlight-target-wrapper → text-input/conditional-spotlight-target-wrapper}/index.js +0 -0
- /package/dist/esm/{ui → common}/types.js +0 -0
- /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
- /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
- /package/dist/esm/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/styled.js +0 -0
- /package/dist/esm/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/scrolling-tabs.js +0 -0
- /package/dist/esm/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/styles.js +0 -0
- /package/dist/esm/ui/link-picker/{conditional-spotlight-target-wrapper → text-input/conditional-spotlight-target-wrapper}/index.js +0 -0
- /package/dist/types/ui/link-picker/{link-search-error → search-results/link-search-error}/index.d.ts +0 -0
- /package/dist/types/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/index.d.ts +0 -0
- /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
- /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
- /package/dist/types/ui/link-picker/{link-search-list → search-results/link-search-list}/link-search-no-results/styled.d.ts +0 -0
- /package/dist/types/ui/link-picker/{list-item → search-results/link-search-list/list-item}/styled.d.ts +0 -0
- /package/dist/types/ui/link-picker/{link-search-list → search-results/link-search-list}/styled.d.ts +0 -0
- /package/dist/types/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/index.d.ts +0 -0
- /package/dist/types/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/scrolling-tabs.d.ts +0 -0
- /package/dist/types/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/styles.d.ts +0 -0
- /package/dist/types-ts4.5/ui/link-picker/{link-search-error → search-results/link-search-error}/index.d.ts +0 -0
- /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
- /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
- /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
- /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
- /package/dist/types-ts4.5/ui/link-picker/{list-item → search-results/link-search-list/list-item}/styled.d.ts +0 -0
- /package/dist/types-ts4.5/ui/link-picker/{link-search-list → search-results/link-search-list}/styled.d.ts +0 -0
- /package/dist/types-ts4.5/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/index.d.ts +0 -0
- /package/dist/types-ts4.5/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/scrolling-tabs.d.ts +0 -0
- /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 {
|
|
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 {
|
|
2
|
+
import { memo, useCallback, useLayoutEffect, useReducer } from 'react';
|
|
4
3
|
import { jsx } from '@emotion/react';
|
|
5
|
-
import {
|
|
4
|
+
import { FormattedMessage, useIntl } from 'react-intl-next';
|
|
6
5
|
import { useAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
7
|
-
import
|
|
8
|
-
import
|
|
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 {
|
|
15
|
-
import
|
|
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 {
|
|
28
|
-
import {
|
|
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 {
|
|
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
|
-
|
|
28
|
+
...searchTestIds,
|
|
38
29
|
...formFooterTestIds,
|
|
39
|
-
...
|
|
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
|
-
}),
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
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
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
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
|
+
};
|
package/dist/es2019/ui/link-picker/{link-search-error → search-results/link-search-error}/index.js
RENAMED
|
@@ -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 {
|
|
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 '
|
|
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: {
|
package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/index.js
RENAMED
|
@@ -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 {
|
|
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({
|
package/dist/es2019/ui/link-picker/{list-item → search-results/link-search-list/list-item}/index.js
RENAMED
|
@@ -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
|
-
|
|
6
|
-
import {
|
|
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,
|
package/dist/es2019/ui/link-picker/{list-item → search-results/link-search-list/list-item}/styled.js
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { css } from '@emotion/react';
|
|
2
|
-
import {
|
|
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
|
|
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
|
|
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;
|
package/dist/es2019/ui/link-picker/{link-search-list → search-results/link-search-list}/styled.js
RENAMED
|
@@ -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 '
|
|
5
|
-
import createEventPayload from '
|
|
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 {
|
package/dist/es2019/ui/{scrolling-tabs → link-picker/search-results/scrolling-tabs}/index.js
RENAMED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
/** @jsx jsx */
|
|
3
|
-
import 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 {
|
|
9
|
-
import {
|
|
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
|
+
`;
|
package/dist/es2019/ui/link-picker/{track-tab-viewed → search-results/track-tab-viewed}/index.js
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/** @jsx jsx */
|
|
2
2
|
import { useLayoutEffect } from 'react';
|
|
3
3
|
import { useAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
4
|
-
import
|
|
5
|
-
import
|
|
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
|
|
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
|
|
10
|
-
import
|
|
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
|
|
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
|
|
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 '
|
|
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
|
+
`;
|