@atlaskit/editor-common 74.19.1 → 74.20.0
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/link/LinkPicker/EditorLinkPicker/index.js +86 -0
- package/dist/cjs/link/LinkPicker/EditorLinkPicker/useEscapeClickaway.js +32 -0
- package/dist/cjs/link/LinkPicker/HyperlinkAddToolbar/HyperlinkAddToolbar.js +939 -0
- package/dist/cjs/link/LinkPicker/HyperlinkAddToolbar/index.js +79 -0
- package/dist/cjs/link/LinkPicker/HyperlinkAddToolbar/messages.js +40 -0
- package/dist/cjs/link/LinkPicker/HyperlinkAddToolbar/utils.js +84 -0
- package/dist/cjs/link/LinkSearch/LinkSearchList.js +83 -0
- package/dist/cjs/link/LinkSearch/LinkSearchListItem.js +146 -0
- package/dist/cjs/link/LinkSearch/ToolbarComponents.js +17 -0
- package/dist/cjs/link/LinkSearch/index.js +328 -0
- package/dist/cjs/link/LinkSearch/listItemAlts.js +70 -0
- package/dist/cjs/link/LinkSearch/transformTimeStamp.js +42 -0
- package/dist/cjs/link/LinkSearch/types.js +5 -0
- package/dist/cjs/link/LinkSearch/withActivityProvider.js +59 -0
- package/dist/cjs/link/index.js +122 -0
- package/dist/cjs/link/types.js +22 -0
- package/dist/cjs/link/utils.js +19 -0
- package/dist/cjs/monitoring/error.js +1 -1
- package/dist/cjs/quick-insert/assets/action.js +43 -0
- package/dist/cjs/quick-insert/assets/code.js +115 -0
- package/dist/cjs/quick-insert/assets/custom-panel.js +55 -0
- package/dist/cjs/quick-insert/assets/date.js +93 -0
- package/dist/cjs/quick-insert/assets/decision.js +34 -0
- package/dist/cjs/quick-insert/assets/divider.js +74 -0
- package/dist/cjs/quick-insert/assets/emoji.js +37 -0
- package/dist/cjs/quick-insert/assets/expand.js +47 -0
- package/dist/cjs/quick-insert/assets/fallback.js +55 -0
- package/dist/cjs/quick-insert/assets/feedback.js +70 -0
- package/dist/cjs/quick-insert/assets/heading1.js +50 -0
- package/dist/cjs/quick-insert/assets/heading2.js +50 -0
- package/dist/cjs/quick-insert/assets/heading3.js +50 -0
- package/dist/cjs/quick-insert/assets/heading4.js +50 -0
- package/dist/cjs/quick-insert/assets/heading5.js +50 -0
- package/dist/cjs/quick-insert/assets/heading6.js +50 -0
- package/dist/cjs/quick-insert/assets/images.js +92 -0
- package/dist/cjs/quick-insert/assets/index.js +372 -0
- package/dist/cjs/quick-insert/assets/layout.js +71 -0
- package/dist/cjs/quick-insert/assets/link.js +35 -0
- package/dist/cjs/quick-insert/assets/list-number.js +51 -0
- package/dist/cjs/quick-insert/assets/list.js +65 -0
- package/dist/cjs/quick-insert/assets/mention.js +56 -0
- package/dist/cjs/quick-insert/assets/panel-error.js +35 -0
- package/dist/cjs/quick-insert/assets/panel-note.js +35 -0
- package/dist/cjs/quick-insert/assets/panel-success.js +35 -0
- package/dist/cjs/quick-insert/assets/panel-warning.js +35 -0
- package/dist/cjs/quick-insert/assets/panel.js +50 -0
- package/dist/cjs/quick-insert/assets/quote.js +35 -0
- package/dist/cjs/quick-insert/assets/status.js +109 -0
- package/dist/cjs/quick-insert/index.js +150 -0
- package/dist/cjs/types/block-type.js +5 -0
- package/dist/cjs/types/image-upload-reference-event.js +5 -0
- package/dist/cjs/ui/Announcer/announcer.js +62 -0
- package/dist/cjs/ui/DropList/index.js +1 -1
- package/dist/cjs/ui/PanelTextInput/index.js +174 -0
- package/dist/cjs/ui/PanelTextInput/styles.js +19 -0
- package/dist/cjs/ui/index.js +21 -0
- package/dist/cjs/utils/commands.js +20 -0
- package/dist/cjs/utils/hyperlink.js +25 -2
- package/dist/cjs/utils/index.js +24 -1
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/link/LinkPicker/EditorLinkPicker/index.js +74 -0
- package/dist/es2019/link/LinkPicker/EditorLinkPicker/useEscapeClickaway.js +25 -0
- package/dist/es2019/link/LinkPicker/HyperlinkAddToolbar/HyperlinkAddToolbar.js +789 -0
- package/dist/es2019/link/LinkPicker/HyperlinkAddToolbar/index.js +74 -0
- package/dist/es2019/link/LinkPicker/HyperlinkAddToolbar/messages.js +33 -0
- package/dist/es2019/link/LinkPicker/HyperlinkAddToolbar/utils.js +83 -0
- package/dist/es2019/link/LinkSearch/LinkSearchList.js +63 -0
- package/dist/es2019/link/LinkSearch/LinkSearchListItem.js +141 -0
- package/dist/es2019/link/LinkSearch/ToolbarComponents.js +20 -0
- package/dist/es2019/link/LinkSearch/index.js +213 -0
- package/dist/es2019/link/LinkSearch/listItemAlts.js +63 -0
- package/dist/es2019/link/LinkSearch/transformTimeStamp.js +34 -0
- package/dist/es2019/link/LinkSearch/types.js +1 -0
- package/dist/es2019/link/LinkSearch/withActivityProvider.js +35 -0
- package/dist/es2019/link/index.js +11 -0
- package/dist/es2019/link/types.js +14 -0
- package/dist/es2019/link/utils.js +12 -0
- package/dist/es2019/monitoring/error.js +1 -1
- package/dist/es2019/quick-insert/assets/action.js +35 -0
- package/dist/es2019/quick-insert/assets/code.js +107 -0
- package/dist/es2019/quick-insert/assets/custom-panel.js +47 -0
- package/dist/es2019/quick-insert/assets/date.js +85 -0
- package/dist/es2019/quick-insert/assets/decision.js +26 -0
- package/dist/es2019/quick-insert/assets/divider.js +66 -0
- package/dist/es2019/quick-insert/assets/emoji.js +29 -0
- package/dist/es2019/quick-insert/assets/expand.js +39 -0
- package/dist/es2019/quick-insert/assets/fallback.js +47 -0
- package/dist/es2019/quick-insert/assets/feedback.js +62 -0
- package/dist/es2019/quick-insert/assets/heading1.js +42 -0
- package/dist/es2019/quick-insert/assets/heading2.js +42 -0
- package/dist/es2019/quick-insert/assets/heading3.js +42 -0
- package/dist/es2019/quick-insert/assets/heading4.js +42 -0
- package/dist/es2019/quick-insert/assets/heading5.js +42 -0
- package/dist/es2019/quick-insert/assets/heading6.js +42 -0
- package/dist/es2019/quick-insert/assets/images.js +84 -0
- package/dist/es2019/quick-insert/assets/index.js +115 -0
- package/dist/es2019/quick-insert/assets/layout.js +63 -0
- package/dist/es2019/quick-insert/assets/link.js +27 -0
- package/dist/es2019/quick-insert/assets/list-number.js +43 -0
- package/dist/es2019/quick-insert/assets/list.js +57 -0
- package/dist/es2019/quick-insert/assets/mention.js +48 -0
- package/dist/es2019/quick-insert/assets/panel-error.js +27 -0
- package/dist/es2019/quick-insert/assets/panel-note.js +27 -0
- package/dist/es2019/quick-insert/assets/panel-success.js +27 -0
- package/dist/es2019/quick-insert/assets/panel-warning.js +27 -0
- package/dist/es2019/quick-insert/assets/panel.js +42 -0
- package/dist/es2019/quick-insert/assets/quote.js +27 -0
- package/dist/es2019/quick-insert/assets/status.js +101 -0
- package/dist/es2019/quick-insert/index.js +1 -0
- package/dist/es2019/types/block-type.js +1 -0
- package/dist/es2019/types/image-upload-reference-event.js +1 -0
- package/dist/es2019/ui/Announcer/announcer.js +41 -0
- package/dist/es2019/ui/DropList/index.js +1 -1
- package/dist/es2019/ui/PanelTextInput/index.js +149 -0
- package/dist/es2019/ui/PanelTextInput/styles.js +36 -0
- package/dist/es2019/ui/index.js +4 -1
- package/dist/es2019/utils/commands.js +11 -0
- package/dist/es2019/utils/hyperlink.js +19 -1
- package/dist/es2019/utils/index.js +8 -2
- package/dist/es2019/version.json +1 -1
- package/dist/esm/link/LinkPicker/EditorLinkPicker/index.js +76 -0
- package/dist/esm/link/LinkPicker/EditorLinkPicker/useEscapeClickaway.js +25 -0
- package/dist/esm/link/LinkPicker/HyperlinkAddToolbar/HyperlinkAddToolbar.js +924 -0
- package/dist/esm/link/LinkPicker/HyperlinkAddToolbar/index.js +72 -0
- package/dist/esm/link/LinkPicker/HyperlinkAddToolbar/messages.js +33 -0
- package/dist/esm/link/LinkPicker/HyperlinkAddToolbar/utils.js +73 -0
- package/dist/esm/link/LinkSearch/LinkSearchList.js +75 -0
- package/dist/esm/link/LinkSearch/LinkSearchListItem.js +131 -0
- package/dist/esm/link/LinkSearch/ToolbarComponents.js +7 -0
- package/dist/esm/link/LinkSearch/index.js +320 -0
- package/dist/esm/link/LinkSearch/listItemAlts.js +63 -0
- package/dist/esm/link/LinkSearch/transformTimeStamp.js +34 -0
- package/dist/esm/link/LinkSearch/types.js +1 -0
- package/dist/esm/link/LinkSearch/withActivityProvider.js +52 -0
- package/dist/esm/link/index.js +11 -0
- package/dist/esm/link/types.js +14 -0
- package/dist/esm/link/utils.js +12 -0
- package/dist/esm/monitoring/error.js +1 -1
- package/dist/esm/quick-insert/assets/action.js +35 -0
- package/dist/esm/quick-insert/assets/code.js +107 -0
- package/dist/esm/quick-insert/assets/custom-panel.js +47 -0
- package/dist/esm/quick-insert/assets/date.js +85 -0
- package/dist/esm/quick-insert/assets/decision.js +26 -0
- package/dist/esm/quick-insert/assets/divider.js +66 -0
- package/dist/esm/quick-insert/assets/emoji.js +29 -0
- package/dist/esm/quick-insert/assets/expand.js +39 -0
- package/dist/esm/quick-insert/assets/fallback.js +47 -0
- package/dist/esm/quick-insert/assets/feedback.js +62 -0
- package/dist/esm/quick-insert/assets/heading1.js +42 -0
- package/dist/esm/quick-insert/assets/heading2.js +42 -0
- package/dist/esm/quick-insert/assets/heading3.js +42 -0
- package/dist/esm/quick-insert/assets/heading4.js +42 -0
- package/dist/esm/quick-insert/assets/heading5.js +42 -0
- package/dist/esm/quick-insert/assets/heading6.js +42 -0
- package/dist/esm/quick-insert/assets/images.js +84 -0
- package/dist/esm/quick-insert/assets/index.js +248 -0
- package/dist/esm/quick-insert/assets/layout.js +63 -0
- package/dist/esm/quick-insert/assets/link.js +27 -0
- package/dist/esm/quick-insert/assets/list-number.js +43 -0
- package/dist/esm/quick-insert/assets/list.js +57 -0
- package/dist/esm/quick-insert/assets/mention.js +48 -0
- package/dist/esm/quick-insert/assets/panel-error.js +27 -0
- package/dist/esm/quick-insert/assets/panel-note.js +27 -0
- package/dist/esm/quick-insert/assets/panel-success.js +27 -0
- package/dist/esm/quick-insert/assets/panel-warning.js +27 -0
- package/dist/esm/quick-insert/assets/panel.js +42 -0
- package/dist/esm/quick-insert/assets/quote.js +27 -0
- package/dist/esm/quick-insert/assets/status.js +101 -0
- package/dist/esm/quick-insert/index.js +1 -0
- package/dist/esm/types/block-type.js +1 -0
- package/dist/esm/types/image-upload-reference-event.js +1 -0
- package/dist/esm/ui/Announcer/announcer.js +52 -0
- package/dist/esm/ui/DropList/index.js +1 -1
- package/dist/esm/ui/PanelTextInput/index.js +168 -0
- package/dist/esm/ui/PanelTextInput/styles.js +10 -0
- package/dist/esm/ui/index.js +4 -1
- package/dist/esm/utils/commands.js +13 -0
- package/dist/esm/utils/hyperlink.js +23 -1
- package/dist/esm/utils/index.js +12 -2
- package/dist/esm/version.json +1 -1
- package/dist/types/link/LinkPicker/EditorLinkPicker/index.d.ts +23 -0
- package/dist/types/link/LinkPicker/EditorLinkPicker/useEscapeClickaway.d.ts +2 -0
- package/dist/types/link/LinkPicker/HyperlinkAddToolbar/HyperlinkAddToolbar.d.ts +115 -0
- package/dist/types/link/LinkPicker/HyperlinkAddToolbar/index.d.ts +21 -0
- package/dist/types/link/LinkPicker/HyperlinkAddToolbar/messages.d.ts +32 -0
- package/dist/types/link/LinkPicker/HyperlinkAddToolbar/utils.d.ts +8 -0
- package/dist/types/link/LinkSearch/LinkSearchList.d.ts +20 -0
- package/dist/types/link/LinkSearch/LinkSearchListItem.d.ts +22 -0
- package/dist/types/link/LinkSearch/ToolbarComponents.d.ts +3 -0
- package/dist/types/link/LinkSearch/index.d.ts +59 -0
- package/dist/types/link/LinkSearch/listItemAlts.d.ts +2 -0
- package/dist/types/link/LinkSearch/transformTimeStamp.d.ts +10 -0
- package/dist/types/link/LinkSearch/types.d.ts +49 -0
- package/dist/types/link/LinkSearch/withActivityProvider.d.ts +66 -0
- package/dist/types/link/index.d.ts +16 -0
- package/dist/types/link/types.d.ts +40 -0
- package/dist/types/link/utils.d.ts +3 -0
- package/dist/types/provider-factory/image-upload-provider.d.ts +2 -1
- package/dist/types/quick-insert/assets/action.d.ts +2 -0
- package/dist/types/quick-insert/assets/code.d.ts +2 -0
- package/dist/types/quick-insert/assets/custom-panel.d.ts +2 -0
- package/dist/types/quick-insert/assets/date.d.ts +2 -0
- package/dist/types/quick-insert/assets/decision.d.ts +2 -0
- package/dist/types/quick-insert/assets/divider.d.ts +2 -0
- package/dist/types/quick-insert/assets/emoji.d.ts +2 -0
- package/dist/types/quick-insert/assets/expand.d.ts +2 -0
- package/dist/types/quick-insert/assets/fallback.d.ts +2 -0
- package/dist/types/quick-insert/assets/feedback.d.ts +2 -0
- package/dist/types/quick-insert/assets/heading1.d.ts +2 -0
- package/dist/types/quick-insert/assets/heading2.d.ts +2 -0
- package/dist/types/quick-insert/assets/heading3.d.ts +2 -0
- package/dist/types/quick-insert/assets/heading4.d.ts +2 -0
- package/dist/types/quick-insert/assets/heading5.d.ts +2 -0
- package/dist/types/quick-insert/assets/heading6.d.ts +2 -0
- package/dist/types/quick-insert/assets/images.d.ts +2 -0
- package/dist/types/quick-insert/assets/index.d.ts +30 -0
- package/dist/types/quick-insert/assets/layout.d.ts +2 -0
- package/dist/types/quick-insert/assets/link.d.ts +2 -0
- package/dist/types/quick-insert/assets/list-number.d.ts +2 -0
- package/dist/types/quick-insert/assets/list.d.ts +2 -0
- package/dist/types/quick-insert/assets/mention.d.ts +2 -0
- package/dist/types/quick-insert/assets/panel-error.d.ts +2 -0
- package/dist/types/quick-insert/assets/panel-note.d.ts +2 -0
- package/dist/types/quick-insert/assets/panel-success.d.ts +2 -0
- package/dist/types/quick-insert/assets/panel-warning.d.ts +2 -0
- package/dist/types/quick-insert/assets/panel.d.ts +2 -0
- package/dist/types/quick-insert/assets/quote.d.ts +2 -0
- package/dist/types/quick-insert/assets/status.d.ts +2 -0
- package/dist/types/quick-insert/index.d.ts +1 -0
- package/dist/types/react-node-view/index.d.ts +2 -2
- package/dist/types/types/block-type.d.ts +3 -0
- package/dist/types/types/command.d.ts +1 -0
- package/dist/types/types/image-upload-reference-event.d.ts +10 -0
- package/dist/types/types/index.d.ts +3 -1
- package/dist/types/ui/Announcer/announcer.d.ts +22 -0
- package/dist/types/ui/DropList/index.d.ts +1 -1
- package/dist/types/ui/PanelTextInput/index.d.ts +45 -0
- package/dist/types/ui/PanelTextInput/styles.d.ts +2 -0
- package/dist/types/ui/index.d.ts +3 -0
- package/dist/types/ui-menu/ToolbarButton/index.d.ts +1 -1
- package/dist/types/utils/commands.d.ts +2 -0
- package/dist/types/utils/hyperlink.d.ts +2 -0
- package/dist/types/utils/index.d.ts +3 -1
- package/dist/types-ts4.5/link/LinkPicker/EditorLinkPicker/index.d.ts +23 -0
- package/dist/types-ts4.5/link/LinkPicker/EditorLinkPicker/useEscapeClickaway.d.ts +2 -0
- package/dist/types-ts4.5/link/LinkPicker/HyperlinkAddToolbar/HyperlinkAddToolbar.d.ts +115 -0
- package/dist/types-ts4.5/link/LinkPicker/HyperlinkAddToolbar/index.d.ts +21 -0
- package/dist/types-ts4.5/link/LinkPicker/HyperlinkAddToolbar/messages.d.ts +32 -0
- package/dist/types-ts4.5/link/LinkPicker/HyperlinkAddToolbar/utils.d.ts +8 -0
- package/dist/types-ts4.5/link/LinkSearch/LinkSearchList.d.ts +20 -0
- package/dist/types-ts4.5/link/LinkSearch/LinkSearchListItem.d.ts +22 -0
- package/dist/types-ts4.5/link/LinkSearch/ToolbarComponents.d.ts +3 -0
- package/dist/types-ts4.5/link/LinkSearch/index.d.ts +59 -0
- package/dist/types-ts4.5/link/LinkSearch/listItemAlts.d.ts +2 -0
- package/dist/types-ts4.5/link/LinkSearch/transformTimeStamp.d.ts +10 -0
- package/dist/types-ts4.5/link/LinkSearch/types.d.ts +49 -0
- package/dist/types-ts4.5/link/LinkSearch/withActivityProvider.d.ts +66 -0
- package/dist/types-ts4.5/link/index.d.ts +16 -0
- package/dist/types-ts4.5/link/types.d.ts +40 -0
- package/dist/types-ts4.5/link/utils.d.ts +3 -0
- package/dist/types-ts4.5/provider-factory/image-upload-provider.d.ts +2 -1
- package/dist/types-ts4.5/quick-insert/assets/action.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/code.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/custom-panel.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/date.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/decision.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/divider.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/emoji.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/expand.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/fallback.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/feedback.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/heading1.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/heading2.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/heading3.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/heading4.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/heading5.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/heading6.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/images.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/index.d.ts +30 -0
- package/dist/types-ts4.5/quick-insert/assets/layout.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/link.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/list-number.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/list.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/mention.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/panel-error.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/panel-note.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/panel-success.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/panel-warning.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/panel.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/quote.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/assets/status.d.ts +2 -0
- package/dist/types-ts4.5/quick-insert/index.d.ts +1 -0
- package/dist/types-ts4.5/react-node-view/index.d.ts +2 -2
- package/dist/types-ts4.5/types/block-type.d.ts +3 -0
- package/dist/types-ts4.5/types/command.d.ts +1 -0
- package/dist/types-ts4.5/types/image-upload-reference-event.d.ts +10 -0
- package/dist/types-ts4.5/types/index.d.ts +3 -1
- package/dist/types-ts4.5/ui/Announcer/announcer.d.ts +22 -0
- package/dist/types-ts4.5/ui/DropList/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/PanelTextInput/index.d.ts +45 -0
- package/dist/types-ts4.5/ui/PanelTextInput/styles.d.ts +2 -0
- package/dist/types-ts4.5/ui/index.d.ts +3 -0
- package/dist/types-ts4.5/ui-menu/ToolbarButton/index.d.ts +1 -1
- package/dist/types-ts4.5/utils/commands.d.ts +2 -0
- package/dist/types-ts4.5/utils/hyperlink.d.ts +2 -0
- package/dist/types-ts4.5/utils/index.d.ts +3 -1
- package/link/package.json +15 -0
- package/package.json +13 -5
- package/quick-insert/package.json +15 -0
- package/tmp/api-report-tmp.d.ts +0 -9
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { INPUT_METHOD } from '../../../analytics';
|
|
4
|
+
import { WithProviders } from '../../../provider-factory';
|
|
5
|
+
import { EditorLinkPicker } from '../EditorLinkPicker';
|
|
6
|
+
import HyperlinkAddToolbarComp from './HyperlinkAddToolbar';
|
|
7
|
+
/**
|
|
8
|
+
* Wraps around the editor's onSubmit handler so that the plugin can interface with the link picker
|
|
9
|
+
*/
|
|
10
|
+
const onSubmitInterface = onSubmit => ({
|
|
11
|
+
url,
|
|
12
|
+
title,
|
|
13
|
+
displayText,
|
|
14
|
+
rawUrl,
|
|
15
|
+
meta
|
|
16
|
+
}, analytic) => {
|
|
17
|
+
onSubmit(url, title !== null && title !== void 0 ? title : rawUrl, displayText || undefined, meta.inputMethod === 'manual' ? INPUT_METHOD.MANUAL : INPUT_METHOD.TYPEAHEAD, analytic);
|
|
18
|
+
};
|
|
19
|
+
export function HyperlinkAddToolbar({
|
|
20
|
+
linkPickerOptions = {},
|
|
21
|
+
onSubmit,
|
|
22
|
+
displayText,
|
|
23
|
+
displayUrl,
|
|
24
|
+
providerFactory,
|
|
25
|
+
view,
|
|
26
|
+
onCancel,
|
|
27
|
+
invokeMethod,
|
|
28
|
+
featureFlags,
|
|
29
|
+
onClose,
|
|
30
|
+
onEscapeCallback,
|
|
31
|
+
onClickAwayCallback,
|
|
32
|
+
hyperlinkPluginState
|
|
33
|
+
}) {
|
|
34
|
+
return /*#__PURE__*/React.createElement(WithProviders, {
|
|
35
|
+
providers: ['activityProvider', 'searchProvider'],
|
|
36
|
+
providerFactory: providerFactory,
|
|
37
|
+
renderNode: ({
|
|
38
|
+
activityProvider,
|
|
39
|
+
searchProvider
|
|
40
|
+
}) => {
|
|
41
|
+
const {
|
|
42
|
+
lpLinkPicker
|
|
43
|
+
} = featureFlags;
|
|
44
|
+
if (lpLinkPicker) {
|
|
45
|
+
return /*#__PURE__*/React.createElement(EditorLinkPicker, _extends({
|
|
46
|
+
view: view,
|
|
47
|
+
invokeMethod: // Provide `invokeMethod` prop as preferred value (card plugin passes as prop) otherwise assume this
|
|
48
|
+
// is being used from inside the hyperlink plugin and use inputMethod from plugin state
|
|
49
|
+
invokeMethod !== null && invokeMethod !== void 0 ? invokeMethod : hyperlinkPluginState === null || hyperlinkPluginState === void 0 ? void 0 : hyperlinkPluginState.inputMethod,
|
|
50
|
+
editorAppearance: hyperlinkPluginState === null || hyperlinkPluginState === void 0 ? void 0 : hyperlinkPluginState.editorAppearance
|
|
51
|
+
}, linkPickerOptions, {
|
|
52
|
+
url: displayUrl,
|
|
53
|
+
displayText: displayText,
|
|
54
|
+
onSubmit: onSubmitInterface(onSubmit),
|
|
55
|
+
onCancel: onCancel,
|
|
56
|
+
onClose: onClose,
|
|
57
|
+
onEscapeCallback: onEscapeCallback,
|
|
58
|
+
onClickAwayCallback: onClickAwayCallback
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
return /*#__PURE__*/React.createElement(HyperlinkAddToolbarComp, {
|
|
62
|
+
activityProvider: activityProvider,
|
|
63
|
+
searchProvider: searchProvider,
|
|
64
|
+
onSubmit: onSubmit,
|
|
65
|
+
displayText: displayText,
|
|
66
|
+
displayUrl: displayUrl,
|
|
67
|
+
pluginState: hyperlinkPluginState,
|
|
68
|
+
view: view,
|
|
69
|
+
onEscapeCallback: onEscapeCallback,
|
|
70
|
+
onClickAwayCallback: onClickAwayCallback
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { defineMessages } from 'react-intl-next';
|
|
2
|
+
export const utilMessages = defineMessages({
|
|
3
|
+
hyperlinkIconIssueLabel: {
|
|
4
|
+
id: 'fabric.editor.headingLink.hyperlinkIconIssueLabel',
|
|
5
|
+
defaultMessage: 'Issue',
|
|
6
|
+
description: 'icon label for a jira issue'
|
|
7
|
+
},
|
|
8
|
+
hyperlinkIconBugLabel: {
|
|
9
|
+
id: 'fabric.editor.headingLink.hyperlinkIconBugLabel',
|
|
10
|
+
defaultMessage: 'Bug',
|
|
11
|
+
description: 'icon label for a jira bug'
|
|
12
|
+
},
|
|
13
|
+
hyperlinkIconStoryLabel: {
|
|
14
|
+
id: 'fabric.editor.headingLink.hyperlinkIconStoryLabel',
|
|
15
|
+
defaultMessage: 'Story',
|
|
16
|
+
description: 'icon label for a jira story'
|
|
17
|
+
},
|
|
18
|
+
hyperlinkIconTaskLabel: {
|
|
19
|
+
id: 'fabric.editor.headingLink.hyperlinkIconTaskLabel',
|
|
20
|
+
defaultMessage: 'Task',
|
|
21
|
+
description: 'icon label for a jira task'
|
|
22
|
+
},
|
|
23
|
+
hyperlinkIconPageLabel: {
|
|
24
|
+
id: 'fabric.editor.headingLink.hyperlinkIconPageLabel',
|
|
25
|
+
defaultMessage: 'Page',
|
|
26
|
+
description: 'icon label for a confluence page'
|
|
27
|
+
},
|
|
28
|
+
hyperlinkIconBlogLabel: {
|
|
29
|
+
id: 'fabric.editor.headingLink.hyperlinkIconBlogLabel',
|
|
30
|
+
defaultMessage: 'Blog',
|
|
31
|
+
description: 'icon label for a confluence blog'
|
|
32
|
+
}
|
|
33
|
+
});
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { injectIntl } from 'react-intl-next';
|
|
3
|
+
import Rusha from 'rusha';
|
|
4
|
+
import Blog16Icon from '@atlaskit/icon-object/glyph/blog/16';
|
|
5
|
+
import Bug16Icon from '@atlaskit/icon-object/glyph/bug/16';
|
|
6
|
+
import Issue16Icon from '@atlaskit/icon-object/glyph/issue/16';
|
|
7
|
+
import Page16Icon from '@atlaskit/icon-object/glyph/page/16';
|
|
8
|
+
import Story16Icon from '@atlaskit/icon-object/glyph/story/16';
|
|
9
|
+
import Task16Icon from '@atlaskit/icon-object/glyph/task/16';
|
|
10
|
+
import { utilMessages } from './messages';
|
|
11
|
+
export function filterUniqueItems(arr, comparator) {
|
|
12
|
+
return arr.filter((firstItem, index, self) => {
|
|
13
|
+
return self.findIndex(secondItem => comparator ? comparator(firstItem, secondItem) : firstItem === secondItem) === index;
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
const Issue16 = props => {
|
|
17
|
+
const {
|
|
18
|
+
intl
|
|
19
|
+
} = props;
|
|
20
|
+
return /*#__PURE__*/React.createElement(Issue16Icon, {
|
|
21
|
+
label: intl.formatMessage(utilMessages.hyperlinkIconIssueLabel)
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
const Bug16 = props => {
|
|
25
|
+
const {
|
|
26
|
+
intl
|
|
27
|
+
} = props;
|
|
28
|
+
return /*#__PURE__*/React.createElement(Bug16Icon, {
|
|
29
|
+
label: intl.formatMessage(utilMessages.hyperlinkIconBugLabel)
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
const Story16 = props => {
|
|
33
|
+
const {
|
|
34
|
+
intl
|
|
35
|
+
} = props;
|
|
36
|
+
return /*#__PURE__*/React.createElement(Story16Icon, {
|
|
37
|
+
label: intl.formatMessage(utilMessages.hyperlinkIconStoryLabel)
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
const Task16 = props => {
|
|
41
|
+
const {
|
|
42
|
+
intl
|
|
43
|
+
} = props;
|
|
44
|
+
return /*#__PURE__*/React.createElement(Task16Icon, {
|
|
45
|
+
label: intl.formatMessage(utilMessages.hyperlinkIconTaskLabel)
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
const Page16 = props => {
|
|
49
|
+
const {
|
|
50
|
+
intl
|
|
51
|
+
} = props;
|
|
52
|
+
return /*#__PURE__*/React.createElement(Page16Icon, {
|
|
53
|
+
label: intl.formatMessage(utilMessages.hyperlinkIconPageLabel)
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
const Blog16 = props => {
|
|
57
|
+
const {
|
|
58
|
+
intl
|
|
59
|
+
} = props;
|
|
60
|
+
return /*#__PURE__*/React.createElement(Blog16Icon, {
|
|
61
|
+
label: intl.formatMessage(utilMessages.hyperlinkIconBlogLabel)
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
const IntlIssue16Icon = injectIntl(Issue16);
|
|
65
|
+
const IntlBug16Icon = injectIntl(Bug16);
|
|
66
|
+
const IntlStory16Icon = injectIntl(Story16);
|
|
67
|
+
const IntlTask16Icon = injectIntl(Task16);
|
|
68
|
+
const IntlPage16Icon = injectIntl(Page16);
|
|
69
|
+
const IntlBlog16Icon = injectIntl(Blog16);
|
|
70
|
+
export const mapContentTypeToIcon = {
|
|
71
|
+
'jira.issue': /*#__PURE__*/React.createElement(IntlIssue16Icon, null),
|
|
72
|
+
'jira.issue.bug': /*#__PURE__*/React.createElement(IntlBug16Icon, null),
|
|
73
|
+
'jira.issue.story': /*#__PURE__*/React.createElement(IntlStory16Icon, null),
|
|
74
|
+
'jira.issue.task': /*#__PURE__*/React.createElement(IntlTask16Icon, null),
|
|
75
|
+
'confluence.page': /*#__PURE__*/React.createElement(IntlPage16Icon, null),
|
|
76
|
+
'confluence.blogpost': /*#__PURE__*/React.createElement(IntlBlog16Icon, null)
|
|
77
|
+
};
|
|
78
|
+
export const sha1 = input => {
|
|
79
|
+
return Rusha.createHash().update(input).digest('hex');
|
|
80
|
+
};
|
|
81
|
+
export const wordCount = input => {
|
|
82
|
+
return input.split(' ').length;
|
|
83
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { PureComponent } from 'react';
|
|
3
|
+
import { css, jsx } from '@emotion/react';
|
|
4
|
+
import Spinner from '@atlaskit/spinner';
|
|
5
|
+
import LinkSearchListItem from './LinkSearchListItem';
|
|
6
|
+
const listContainer = css`
|
|
7
|
+
padding-top: 0;
|
|
8
|
+
`;
|
|
9
|
+
const spinnerContainer = css`
|
|
10
|
+
text-align: center;
|
|
11
|
+
min-height: 80px;
|
|
12
|
+
margin-top: 30px;
|
|
13
|
+
`;
|
|
14
|
+
export const linkSearchList = css`
|
|
15
|
+
padding: 0;
|
|
16
|
+
list-style: none;
|
|
17
|
+
`;
|
|
18
|
+
export default class LinkSearchList extends PureComponent {
|
|
19
|
+
render() {
|
|
20
|
+
const {
|
|
21
|
+
onSelect,
|
|
22
|
+
onMouseMove,
|
|
23
|
+
onMouseEnter,
|
|
24
|
+
onMouseLeave,
|
|
25
|
+
items,
|
|
26
|
+
selectedIndex,
|
|
27
|
+
isLoading,
|
|
28
|
+
ariaControls,
|
|
29
|
+
role,
|
|
30
|
+
id
|
|
31
|
+
} = this.props;
|
|
32
|
+
let itemsContent;
|
|
33
|
+
let loadingContent;
|
|
34
|
+
if (items && items.length > 0) {
|
|
35
|
+
itemsContent = jsx("ul", {
|
|
36
|
+
css: linkSearchList,
|
|
37
|
+
id: id,
|
|
38
|
+
role: role,
|
|
39
|
+
"aria-controls": ariaControls
|
|
40
|
+
}, items.map((item, index) => jsx(LinkSearchListItem, {
|
|
41
|
+
id: `link-search-list-item-${index}`,
|
|
42
|
+
role: role && 'option',
|
|
43
|
+
item: item,
|
|
44
|
+
selected: selectedIndex === index,
|
|
45
|
+
onMouseMove: onMouseMove,
|
|
46
|
+
onMouseEnter: onMouseEnter,
|
|
47
|
+
onMouseLeave: onMouseLeave,
|
|
48
|
+
onSelect: onSelect,
|
|
49
|
+
key: item.objectId
|
|
50
|
+
})));
|
|
51
|
+
}
|
|
52
|
+
if (isLoading) {
|
|
53
|
+
loadingContent = jsx("div", {
|
|
54
|
+
css: spinnerContainer
|
|
55
|
+
}, jsx(Spinner, {
|
|
56
|
+
size: "medium"
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
return jsx("div", {
|
|
60
|
+
css: listContainer
|
|
61
|
+
}, itemsContent, loadingContent);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
/** @jsx jsx */
|
|
3
|
+
import React, { Fragment } from 'react';
|
|
4
|
+
import { css, jsx } from '@emotion/react';
|
|
5
|
+
// AFP-2532 TODO: Fix automatic suppressions below
|
|
6
|
+
// eslint-disable-next-line @atlassian/tangerine/import/entry-points
|
|
7
|
+
import { injectIntl } from 'react-intl-next';
|
|
8
|
+
import { relativeFontSizeToBase16 } from '@atlaskit/editor-shared-styles';
|
|
9
|
+
import { N20, N300, N800 } from '@atlaskit/theme/colors';
|
|
10
|
+
import { fontSizeSmall } from '@atlaskit/theme/constants';
|
|
11
|
+
import { getCorrectAltByIconUrl } from './listItemAlts';
|
|
12
|
+
import { transformTimeStamp } from './transformTimeStamp';
|
|
13
|
+
export const container = css`
|
|
14
|
+
background-color: transparent;
|
|
15
|
+
padding: 8px 12px;
|
|
16
|
+
cursor: pointer;
|
|
17
|
+
display: flex;
|
|
18
|
+
margin-top: 0;
|
|
19
|
+
`;
|
|
20
|
+
export const containerSelected = css`
|
|
21
|
+
background-color: ${`var(--ds-background-neutral-subtle-hovered, ${N20})`};
|
|
22
|
+
`;
|
|
23
|
+
const nameWrapper = css`
|
|
24
|
+
overflow: hidden;
|
|
25
|
+
`;
|
|
26
|
+
export const nameStyle = css`
|
|
27
|
+
color: ${`var(--ds-text, ${N800})`};
|
|
28
|
+
overflow: hidden;
|
|
29
|
+
text-overflow: ellipsis;
|
|
30
|
+
white-space: nowrap;
|
|
31
|
+
line-height: 20px;
|
|
32
|
+
`;
|
|
33
|
+
export const containerName = css`
|
|
34
|
+
color: ${`var(--ds-text-subtlest, ${N300})`};
|
|
35
|
+
line-height: 14px;
|
|
36
|
+
font-size: ${relativeFontSizeToBase16(fontSizeSmall())};
|
|
37
|
+
`;
|
|
38
|
+
const iconStyle = css`
|
|
39
|
+
min-width: 16px;
|
|
40
|
+
margin-top: 3px;
|
|
41
|
+
margin-right: 12px;
|
|
42
|
+
|
|
43
|
+
img {
|
|
44
|
+
max-width: 16px;
|
|
45
|
+
}
|
|
46
|
+
`;
|
|
47
|
+
class LinkSearchListItem extends React.PureComponent {
|
|
48
|
+
constructor(...args) {
|
|
49
|
+
super(...args);
|
|
50
|
+
_defineProperty(this, "handleSelect", e => {
|
|
51
|
+
e.preventDefault(); // don't let editor lose focus
|
|
52
|
+
const {
|
|
53
|
+
item,
|
|
54
|
+
onSelect
|
|
55
|
+
} = this.props;
|
|
56
|
+
onSelect(item.url, item.name);
|
|
57
|
+
});
|
|
58
|
+
_defineProperty(this, "handleMouseMove", () => {
|
|
59
|
+
const {
|
|
60
|
+
onMouseMove,
|
|
61
|
+
item
|
|
62
|
+
} = this.props;
|
|
63
|
+
onMouseMove && onMouseMove(item.objectId);
|
|
64
|
+
});
|
|
65
|
+
_defineProperty(this, "handleMouseEnter", () => {
|
|
66
|
+
const {
|
|
67
|
+
onMouseEnter,
|
|
68
|
+
item
|
|
69
|
+
} = this.props;
|
|
70
|
+
onMouseEnter && onMouseEnter(item.objectId);
|
|
71
|
+
});
|
|
72
|
+
_defineProperty(this, "handleMouseLeave", () => {
|
|
73
|
+
const {
|
|
74
|
+
onMouseLeave,
|
|
75
|
+
item
|
|
76
|
+
} = this.props;
|
|
77
|
+
onMouseLeave && onMouseLeave(item.objectId);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
renderIcon() {
|
|
81
|
+
const {
|
|
82
|
+
item: {
|
|
83
|
+
icon,
|
|
84
|
+
iconUrl
|
|
85
|
+
},
|
|
86
|
+
intl
|
|
87
|
+
} = this.props;
|
|
88
|
+
if (icon) {
|
|
89
|
+
return jsx("span", {
|
|
90
|
+
css: iconStyle
|
|
91
|
+
}, icon);
|
|
92
|
+
}
|
|
93
|
+
if (iconUrl) {
|
|
94
|
+
return jsx("span", {
|
|
95
|
+
css: iconStyle
|
|
96
|
+
}, jsx("img", {
|
|
97
|
+
src: iconUrl,
|
|
98
|
+
alt: getCorrectAltByIconUrl(iconUrl, intl)
|
|
99
|
+
}));
|
|
100
|
+
}
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
renderTimeStamp() {
|
|
104
|
+
const {
|
|
105
|
+
item,
|
|
106
|
+
intl
|
|
107
|
+
} = this.props;
|
|
108
|
+
const date = transformTimeStamp(intl, item.lastViewedDate, item.lastUpdatedDate);
|
|
109
|
+
return date && jsx(Fragment, null, "\xA0 \u2022", jsx("span", {
|
|
110
|
+
className: "link-search-timestamp",
|
|
111
|
+
"data-test-id": "link-search-timestamp"
|
|
112
|
+
}, "\xA0 ", date.pageAction, " ", date.dateString, " ", date.timeSince || ''));
|
|
113
|
+
}
|
|
114
|
+
render() {
|
|
115
|
+
const {
|
|
116
|
+
item,
|
|
117
|
+
selected,
|
|
118
|
+
id,
|
|
119
|
+
role
|
|
120
|
+
} = this.props;
|
|
121
|
+
return jsx("li", {
|
|
122
|
+
css: [container, selected && containerSelected],
|
|
123
|
+
role: role,
|
|
124
|
+
id: id,
|
|
125
|
+
"aria-selected": selected,
|
|
126
|
+
"data-testid": "link-search-list-item",
|
|
127
|
+
onMouseMove: this.handleMouseMove,
|
|
128
|
+
onMouseEnter: this.handleMouseEnter,
|
|
129
|
+
onMouseLeave: this.handleMouseLeave,
|
|
130
|
+
onClick: this.handleSelect
|
|
131
|
+
}, this.renderIcon(), jsx("span", {
|
|
132
|
+
css: nameWrapper
|
|
133
|
+
}, jsx("div", {
|
|
134
|
+
css: nameStyle
|
|
135
|
+
}, item.name), jsx("div", {
|
|
136
|
+
"data-testid": "link-search-list-item-container",
|
|
137
|
+
css: containerName
|
|
138
|
+
}, item.container, this.renderTimeStamp())));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
export default injectIntl(LinkSearchListItem);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { css } from '@emotion/react';
|
|
2
|
+
import { RECENT_SEARCH_WIDTH_IN_PX, RECENT_SEARCH_WIDTH_WITHOUT_ITEMS_IN_PX } from '../../ui';
|
|
3
|
+
export const inputWrapper = css`
|
|
4
|
+
display: flex;
|
|
5
|
+
line-height: 0;
|
|
6
|
+
padding: 5px 0;
|
|
7
|
+
align-items: center;
|
|
8
|
+
`;
|
|
9
|
+
export const container = css`
|
|
10
|
+
display: flex;
|
|
11
|
+
flex-direction: column;
|
|
12
|
+
overflow: auto;
|
|
13
|
+
padding: 0;
|
|
14
|
+
|
|
15
|
+
width: ${RECENT_SEARCH_WIDTH_WITHOUT_ITEMS_IN_PX}px;
|
|
16
|
+
line-height: initial;
|
|
17
|
+
`;
|
|
18
|
+
export const containerWithProvider = css`
|
|
19
|
+
width: ${RECENT_SEARCH_WIDTH_IN_PX}px;
|
|
20
|
+
`;
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { injectIntl } from 'react-intl-next';
|
|
4
|
+
import { INPUT_METHOD } from '../../analytics';
|
|
5
|
+
import LinkSearchList from './LinkSearchList';
|
|
6
|
+
import withActivityProvider from './withActivityProvider';
|
|
7
|
+
const DEFAULT_ITEMS_LIMIT = 5;
|
|
8
|
+
const limit = (items, max) => {
|
|
9
|
+
return items.slice(0, max);
|
|
10
|
+
};
|
|
11
|
+
class RecentLink extends React.Component {
|
|
12
|
+
constructor(props) {
|
|
13
|
+
super(props);
|
|
14
|
+
_defineProperty(this, "activityProvider", null);
|
|
15
|
+
_defineProperty(this, "handleSubmit", () => {
|
|
16
|
+
const {
|
|
17
|
+
items,
|
|
18
|
+
url,
|
|
19
|
+
selectedIndex
|
|
20
|
+
} = this.state;
|
|
21
|
+
const inputMethod = this.getCurrentInputMethod();
|
|
22
|
+
if (!inputMethod) {
|
|
23
|
+
return; // No call submit, if there is nothing to submit
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
switch (inputMethod) {
|
|
27
|
+
case INPUT_METHOD.MANUAL:
|
|
28
|
+
{
|
|
29
|
+
this.props.onSubmit({
|
|
30
|
+
url,
|
|
31
|
+
text: url,
|
|
32
|
+
inputMethod: INPUT_METHOD.MANUAL
|
|
33
|
+
});
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
case INPUT_METHOD.TYPEAHEAD:
|
|
37
|
+
{
|
|
38
|
+
const item = items[selectedIndex];
|
|
39
|
+
this.setState(() => ({
|
|
40
|
+
url: item.url
|
|
41
|
+
}));
|
|
42
|
+
if (this.props.onSubmit) {
|
|
43
|
+
this.props.onSubmit({
|
|
44
|
+
url: item.url,
|
|
45
|
+
text: item.name,
|
|
46
|
+
inputMethod: INPUT_METHOD.TYPEAHEAD
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
_defineProperty(this, "handleSelected", (href, text) => {
|
|
54
|
+
if (this.props.onSubmit) {
|
|
55
|
+
this.setState(() => ({
|
|
56
|
+
url: href
|
|
57
|
+
}));
|
|
58
|
+
this.props.onSubmit({
|
|
59
|
+
text,
|
|
60
|
+
url: href,
|
|
61
|
+
inputMethod: INPUT_METHOD.TYPEAHEAD
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
_defineProperty(this, "handleChange", async input => {
|
|
66
|
+
this.setState({
|
|
67
|
+
url: input
|
|
68
|
+
});
|
|
69
|
+
if (this.activityProvider) {
|
|
70
|
+
if (input.length === 0) {
|
|
71
|
+
this.setState({
|
|
72
|
+
items: limit(await this.activityProvider.getRecentItems(), this.props.limit),
|
|
73
|
+
selectedIndex: -1
|
|
74
|
+
});
|
|
75
|
+
} else {
|
|
76
|
+
this.setState({
|
|
77
|
+
items: limit(await this.activityProvider.searchRecent(input), this.props.limit),
|
|
78
|
+
selectedIndex: 0
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
_defineProperty(this, "handleKeyDown", e => {
|
|
84
|
+
const {
|
|
85
|
+
items,
|
|
86
|
+
selectedIndex
|
|
87
|
+
} = this.state;
|
|
88
|
+
if (!items || !items.length) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (e.key === 'ArrowDown') {
|
|
92
|
+
// down
|
|
93
|
+
e.preventDefault();
|
|
94
|
+
this.setState({
|
|
95
|
+
selectedIndex: (selectedIndex + 1) % items.length
|
|
96
|
+
});
|
|
97
|
+
} else if (e.key === 'ArrowUp') {
|
|
98
|
+
// up
|
|
99
|
+
e.preventDefault();
|
|
100
|
+
this.setState({
|
|
101
|
+
selectedIndex: selectedIndex > 0 ? selectedIndex - 1 : items.length - 1
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
_defineProperty(this, "handleMouseMove", objectId => {
|
|
106
|
+
const {
|
|
107
|
+
items
|
|
108
|
+
} = this.state;
|
|
109
|
+
if (items) {
|
|
110
|
+
const index = items.findIndex(item => item.objectId === objectId);
|
|
111
|
+
this.setState({
|
|
112
|
+
selectedIndex: index
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
_defineProperty(this, "renderRecentList", () => {
|
|
117
|
+
const {
|
|
118
|
+
items,
|
|
119
|
+
isLoading,
|
|
120
|
+
selectedIndex
|
|
121
|
+
} = this.state;
|
|
122
|
+
return /*#__PURE__*/React.createElement(LinkSearchList, {
|
|
123
|
+
items: items,
|
|
124
|
+
isLoading: isLoading,
|
|
125
|
+
selectedIndex: selectedIndex,
|
|
126
|
+
onSelect: this.handleSelected,
|
|
127
|
+
onMouseMove: this.handleMouseMove
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
_defineProperty(this, "clearValue", () => {
|
|
131
|
+
this.setState({
|
|
132
|
+
url: ''
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
this.state = {
|
|
136
|
+
selectedIndex: -1,
|
|
137
|
+
isLoading: false,
|
|
138
|
+
items: [],
|
|
139
|
+
url: props.defaultUrl || ''
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
UNSAFE_componentWillReceiveProps(nextProps) {
|
|
143
|
+
if (this.props.defaultUrl !== nextProps.defaultUrl) {
|
|
144
|
+
this.setState(state => {
|
|
145
|
+
if (state.url !== nextProps.defaultUrl) {
|
|
146
|
+
return {
|
|
147
|
+
items: [],
|
|
148
|
+
selectedIndex: -1,
|
|
149
|
+
url: nextProps.defaultUrl || ''
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
return null;
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
async componentDidMount() {
|
|
157
|
+
if (this.props.activityProvider) {
|
|
158
|
+
this.activityProvider = await this.props.activityProvider;
|
|
159
|
+
await this.loadRecentItems(this.activityProvider);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
async loadRecentItems(activityProvider) {
|
|
163
|
+
try {
|
|
164
|
+
if (!this.state.url) {
|
|
165
|
+
this.setState({
|
|
166
|
+
isLoading: true,
|
|
167
|
+
items: limit(await activityProvider.getRecentItems(), this.props.limit) // defaultProps assure that limit always contains a value
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
} finally {
|
|
171
|
+
this.setState({
|
|
172
|
+
isLoading: false
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
getCurrentInputMethod() {
|
|
177
|
+
const {
|
|
178
|
+
items,
|
|
179
|
+
url,
|
|
180
|
+
selectedIndex
|
|
181
|
+
} = this.state;
|
|
182
|
+
if (items && items.length > 0 && selectedIndex > -1) {
|
|
183
|
+
return INPUT_METHOD.TYPEAHEAD;
|
|
184
|
+
} else if (url && url.length > 0) {
|
|
185
|
+
return INPUT_METHOD.MANUAL;
|
|
186
|
+
}
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
render() {
|
|
190
|
+
const {
|
|
191
|
+
render
|
|
192
|
+
} = this.props;
|
|
193
|
+
const {
|
|
194
|
+
url
|
|
195
|
+
} = this.state;
|
|
196
|
+
return render({
|
|
197
|
+
activityProvider: this.activityProvider,
|
|
198
|
+
inputProps: {
|
|
199
|
+
onChange: this.handleChange,
|
|
200
|
+
onKeyDown: this.handleKeyDown,
|
|
201
|
+
onSubmit: this.handleSubmit,
|
|
202
|
+
value: url
|
|
203
|
+
},
|
|
204
|
+
clearValue: this.clearValue,
|
|
205
|
+
currentInputMethod: this.getCurrentInputMethod(),
|
|
206
|
+
renderRecentList: this.renderRecentList
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
_defineProperty(RecentLink, "defaultProps", {
|
|
211
|
+
limit: DEFAULT_ITEMS_LIMIT
|
|
212
|
+
});
|
|
213
|
+
export default withActivityProvider(injectIntl(RecentLink));
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { defineMessages } from 'react-intl-next';
|
|
2
|
+
const messages = defineMessages({
|
|
3
|
+
story: {
|
|
4
|
+
id: 'fabric.editor.story',
|
|
5
|
+
defaultMessage: 'Story',
|
|
6
|
+
description: 'Alt text for Story'
|
|
7
|
+
},
|
|
8
|
+
epic: {
|
|
9
|
+
id: 'fabric.editor.epic',
|
|
10
|
+
defaultMessage: 'Epic',
|
|
11
|
+
description: 'Alt text for Epic'
|
|
12
|
+
},
|
|
13
|
+
task: {
|
|
14
|
+
id: 'fabric.editor.task',
|
|
15
|
+
defaultMessage: 'Task',
|
|
16
|
+
description: 'Alt text for Task'
|
|
17
|
+
},
|
|
18
|
+
bug: {
|
|
19
|
+
id: 'fabric.editor.bug',
|
|
20
|
+
defaultMessage: 'Bug',
|
|
21
|
+
description: 'Alt text for Bug'
|
|
22
|
+
},
|
|
23
|
+
subTask: {
|
|
24
|
+
id: 'fabric.editor.subTask',
|
|
25
|
+
defaultMessage: 'Sub-task',
|
|
26
|
+
description: 'Alt text for Sub-task'
|
|
27
|
+
},
|
|
28
|
+
improvement: {
|
|
29
|
+
id: 'fabric.editor.improvement',
|
|
30
|
+
defaultMessage: 'Improvement',
|
|
31
|
+
description: 'Alt text for Improvement'
|
|
32
|
+
},
|
|
33
|
+
defaultAltText: {
|
|
34
|
+
id: 'fabric.editor.defaultAltText',
|
|
35
|
+
defaultMessage: 'List item',
|
|
36
|
+
description: 'Default alt text for ListItem image'
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// Workaround to get alt text for images from url
|
|
41
|
+
// Can be removed when alt={iconAlt} will be available from GraphQL
|
|
42
|
+
export const getCorrectAltByIconUrl = (iconUrl, intl) => {
|
|
43
|
+
let alt = intl.formatMessage(messages.defaultAltText);
|
|
44
|
+
if (iconUrl.includes('story.svg')) {
|
|
45
|
+
alt = intl.formatMessage(messages.story);
|
|
46
|
+
}
|
|
47
|
+
if (iconUrl.includes('epic.svg')) {
|
|
48
|
+
alt = intl.formatMessage(messages.epic);
|
|
49
|
+
}
|
|
50
|
+
if (iconUrl.includes('avatarId=10318')) {
|
|
51
|
+
alt = intl.formatMessage(messages.task);
|
|
52
|
+
}
|
|
53
|
+
if (iconUrl.includes('avatarId=10303')) {
|
|
54
|
+
alt = intl.formatMessage(messages.bug);
|
|
55
|
+
}
|
|
56
|
+
if (iconUrl.includes('avatarId=10518')) {
|
|
57
|
+
alt = intl.formatMessage(messages.subTask);
|
|
58
|
+
}
|
|
59
|
+
if (iconUrl.includes('avatarId=10310')) {
|
|
60
|
+
alt = intl.formatMessage(messages.improvement);
|
|
61
|
+
}
|
|
62
|
+
return alt;
|
|
63
|
+
};
|