box-ui-elements 16.0.0-beta.9 → 16.0.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/dist/explorer.css +1 -1
- package/dist/explorer.js +19 -58
- package/dist/openwith.css +1 -1
- package/dist/openwith.js +10 -10
- package/dist/picker.css +1 -1
- package/dist/picker.js +12 -12
- package/dist/preview.css +1 -1
- package/dist/preview.js +17 -56
- package/dist/sharing.css +1 -1
- package/dist/sharing.js +34 -34
- package/dist/sidebar.css +1 -1
- package/dist/sidebar.js +17 -56
- package/dist/uploader.css +1 -1
- package/dist/uploader.js +12 -12
- package/es/api/APIFactory.js +27 -0
- package/es/api/APIFactory.js.flow +26 -0
- package/es/api/APIFactory.js.map +1 -1
- package/es/api/Annotations.js +84 -8
- package/es/api/Annotations.js.flow +60 -6
- package/es/api/Annotations.js.map +1 -1
- package/es/api/Comments.js +2 -2
- package/es/api/Comments.js.flow +5 -4
- package/es/api/Comments.js.map +1 -1
- package/es/api/Feed.js +578 -71
- package/es/api/Feed.js.flow +677 -17
- package/es/api/Feed.js.map +1 -1
- package/es/api/FileCollaborators.js +29 -0
- package/es/api/FileCollaborators.js.flow +30 -0
- package/es/api/FileCollaborators.js.map +1 -1
- package/es/api/ThreadedComments.js +64 -27
- package/es/api/ThreadedComments.js.flow +54 -29
- package/es/api/ThreadedComments.js.map +1 -1
- package/es/api/fixtures.js +381 -0
- package/es/api/fixtures.js.flow +401 -0
- package/es/api/fixtures.js.map +1 -0
- package/es/api/messages.js +4 -0
- package/es/api/messages.js.flow +5 -0
- package/es/api/messages.js.map +1 -1
- package/es/api/utils.js +33 -0
- package/es/api/utils.js.flow +30 -0
- package/es/api/utils.js.map +1 -0
- package/es/common/types/annotations.js.flow +18 -12
- package/es/common/types/feed.js +1 -1
- package/es/common/types/feed.js.flow +40 -4
- package/es/common/types/feed.js.map +1 -1
- package/es/components/accessible-svg/AccessibleSVG.stories.js +20 -0
- package/es/components/accessible-svg/AccessibleSVG.stories.js.map +1 -0
- package/es/components/badge/Badge.stories.js +1 -13
- package/es/components/badge/Badge.stories.js.map +1 -1
- package/es/components/badge/BetaBadge.stories.js +10 -0
- package/es/components/badge/BetaBadge.stories.js.map +1 -0
- package/es/components/badge/TrialBadge.stories.js +10 -0
- package/es/components/badge/TrialBadge.stories.js.map +1 -0
- package/es/components/badge/UpgradeBadge.stories.js +10 -0
- package/es/components/badge/UpgradeBadge.stories.js.map +1 -0
- package/es/components/breadcrumb/Breadcrumb.js +48 -35
- package/es/components/breadcrumb/Breadcrumb.js.flow +68 -42
- package/es/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/es/components/breadcrumb/EllipsisCrumb.js +5 -3
- package/es/components/breadcrumb/EllipsisCrumb.js.flow +10 -6
- package/es/components/breadcrumb/EllipsisCrumb.js.map +1 -1
- package/es/components/count-badge/CountBadge.stories.js +1 -1
- package/es/components/count-badge/CountBadge.stories.js.map +1 -1
- package/es/components/draggable-list/DraggableList.stories.js +119 -5
- package/es/components/draggable-list/DraggableList.stories.js.map +1 -1
- package/es/components/dropdown-menu/DropdownMenu.js +9 -0
- package/es/components/dropdown-menu/DropdownMenu.js.flow +11 -0
- package/es/components/dropdown-menu/DropdownMenu.js.map +1 -1
- package/es/components/dropdown-menu/DropdownMenu.scss +3 -3
- package/es/components/infinite-scroll/InfiniteScroll.js +4 -2
- package/es/components/infinite-scroll/InfiniteScroll.js.map +1 -1
- package/es/components/modal/Modal.scss +5 -1
- package/es/components/search-form/SearchForm.js +1 -1
- package/es/components/search-form/SearchForm.js.flow +1 -1
- package/es/components/search-form/SearchForm.js.map +1 -1
- package/es/components/table/makeSelectable.js +304 -97
- package/es/components/table/makeSelectable.js.flow +299 -98
- package/es/components/table/makeSelectable.js.map +1 -1
- package/es/components/tooltip/Tooltip.js +3 -2
- package/es/components/tooltip/Tooltip.js.map +1 -1
- package/es/constants.js +11 -0
- package/es/constants.js.flow +11 -0
- package/es/constants.js.map +1 -1
- package/es/elements/common/annotator-context/index.js +1 -0
- package/es/elements/common/annotator-context/index.js.flow +4 -0
- package/es/elements/common/annotator-context/index.js.map +1 -1
- package/es/elements/common/annotator-context/types.js +12 -0
- package/es/elements/common/annotator-context/types.js.flow +77 -35
- package/es/elements/common/annotator-context/types.js.map +1 -1
- package/es/elements/common/annotator-context/useAnnotatorEvents.js +205 -0
- package/es/elements/common/annotator-context/useAnnotatorEvents.js.flow +52 -0
- package/es/elements/common/annotator-context/useAnnotatorEvents.js.map +1 -0
- package/es/elements/common/annotator-context/withAnnotations.js +224 -5
- package/es/elements/common/annotator-context/withAnnotations.js.flow +73 -36
- package/es/elements/common/annotator-context/withAnnotations.js.map +1 -1
- package/es/elements/common/annotator-context/withAnnotatorContext.js +12 -4
- package/es/elements/common/annotator-context/withAnnotatorContext.js.flow +29 -9
- package/es/elements/common/annotator-context/withAnnotatorContext.js.map +1 -1
- package/es/elements/common/current-user/index.js +3 -0
- package/es/elements/common/current-user/index.js.flow +8 -0
- package/es/elements/common/current-user/index.js.map +1 -0
- package/es/elements/common/current-user/withCurrentUser.js +139 -0
- package/es/elements/common/current-user/withCurrentUser.js.flow +40 -0
- package/es/elements/common/current-user/withCurrentUser.js.map +1 -0
- package/es/elements/common/flowTypes.js.flow +22 -4
- package/es/elements/common/flowTypes.js.map +1 -1
- package/es/elements/common/interactionTargets.js +2 -0
- package/es/elements/common/interactionTargets.js.flow +2 -0
- package/es/elements/common/interactionTargets.js.map +1 -1
- package/es/elements/common/logger/Logger.js +1 -1
- package/es/elements/common/logger/Logger.js.flow +1 -1
- package/es/elements/common/logger/Logger.js.map +1 -1
- package/es/elements/common/messages.js +4 -0
- package/es/elements/common/messages.js.flow +5 -0
- package/es/elements/common/messages.js.map +1 -1
- package/es/elements/content-explorer/DeleteConfirmationDialog.js +2 -1
- package/es/elements/content-explorer/DeleteConfirmationDialog.js.flow +3 -1
- package/es/elements/content-explorer/DeleteConfirmationDialog.js.map +1 -1
- package/es/elements/content-explorer/DeleteConfirmationDialog.scss +5 -0
- package/es/elements/content-explorer/stories/DeleteConfirmationDialog.stories.js +58 -0
- package/es/elements/content-explorer/stories/DeleteConfirmationDialog.stories.js.flow +60 -0
- package/es/elements/content-explorer/stories/DeleteConfirmationDialog.stories.js.map +1 -0
- package/es/elements/content-sidebar/ActivitySidebar.js +323 -197
- package/es/elements/content-sidebar/ActivitySidebar.js.flow +381 -154
- package/es/elements/content-sidebar/ActivitySidebar.js.map +1 -1
- package/es/elements/content-sidebar/ActivitySidebarFilter.js +52 -0
- package/es/elements/content-sidebar/ActivitySidebarFilter.js.flow +59 -0
- package/es/elements/content-sidebar/ActivitySidebarFilter.js.map +1 -0
- package/es/elements/content-sidebar/ActivitySidebarFilter.scss +4 -0
- package/es/elements/content-sidebar/DetailsSidebar.js +50 -25
- package/es/elements/content-sidebar/DetailsSidebar.js.flow +32 -4
- package/es/elements/content-sidebar/DetailsSidebar.js.map +1 -1
- package/es/elements/content-sidebar/Sidebar.js +4 -1
- package/es/elements/content-sidebar/Sidebar.js.flow +6 -1
- package/es/elements/content-sidebar/Sidebar.js.map +1 -1
- package/es/elements/content-sidebar/SidebarContentInsights.js +45 -0
- package/es/elements/content-sidebar/SidebarContentInsights.js.map +1 -0
- package/es/elements/content-sidebar/SidebarContentInsights.scss +6 -0
- package/es/elements/content-sidebar/SidebarPanels.js +2 -0
- package/es/elements/content-sidebar/SidebarPanels.js.flow +4 -0
- package/es/elements/content-sidebar/SidebarPanels.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js +91 -10
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js.flow +122 -24
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js +27 -15
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js.flow +59 -18
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js +101 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js.flow +126 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.scss +17 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js +69 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js.flow +85 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.scss +16 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js +62 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js.flow +59 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.scss +22 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/activityFeedUtils.js +2 -2
- package/es/elements/content-sidebar/activity-feed/activity-feed/activityFeedUtils.js.flow +2 -2
- package/es/elements/content-sidebar/activity-feed/activity-feed/activityFeedUtils.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/activity-feed/fixtures.js +55 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/fixtures.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/messages.js +16 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/messages.js.flow +20 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/messages.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js +121 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js.flow +117 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.scss +7 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js +75 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js.flow +105 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.scss +5 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js +77 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js.flow +86 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.scss +3 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js +11 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js.flow +26 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/index.js +2 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/index.js.flow +1 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/index.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/messages.js +17 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/messages.js.flow +21 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/messages.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js +180 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js.flow +203 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js +124 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js.flow +121 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js +19 -5
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js.flow +24 -4
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js +25 -4
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js.flow +36 -2
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotations/messages.js +8 -0
- package/es/elements/content-sidebar/activity-feed/annotations/messages.js.flow +10 -0
- package/es/elements/content-sidebar/activity-feed/annotations/messages.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/comment/Comment.js +61 -28
- package/es/elements/content-sidebar/activity-feed/comment/Comment.js.flow +54 -10
- package/es/elements/content-sidebar/activity-feed/comment/Comment.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/comment/messages.js +8 -0
- package/es/elements/content-sidebar/activity-feed/comment/messages.js.flow +10 -0
- package/es/elements/content-sidebar/activity-feed/comment/messages.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js +4 -2
- package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js.flow +3 -1
- package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.js +16 -5
- package/es/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.js.flow +34 -4
- package/es/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.scss +40 -3
- package/es/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessage.js +49 -0
- package/es/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessage.js.flow +42 -0
- package/es/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessage.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessageToggle.js +21 -0
- package/es/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessageToggle.js.flow +24 -0
- package/es/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessageToggle.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/common/activity-message/messages.js +12 -0
- package/es/elements/content-sidebar/activity-feed/common/activity-message/messages.js.flow +15 -0
- package/es/elements/content-sidebar/activity-feed/common/activity-message/messages.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.js +24 -0
- package/es/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.js.flow +30 -0
- package/es/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.scss +6 -0
- package/es/elements/content-sidebar/activity-feed/common/activity-status/index.js +2 -0
- package/es/elements/content-sidebar/activity-feed/common/activity-status/index.js.flow +2 -0
- package/es/elements/content-sidebar/activity-feed/common/activity-status/index.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/common/activity-status/messages.js +9 -0
- package/es/elements/content-sidebar/activity-feed/common/activity-status/messages.js.flow +13 -0
- package/es/elements/content-sidebar/activity-feed/common/activity-status/messages.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/common/activity-timestamp/ActivityTimestamp.scss +1 -1
- package/es/elements/content-sidebar/fixtures.js +181 -0
- package/es/elements/content-sidebar/fixtures.js.flow +185 -0
- package/es/elements/content-sidebar/fixtures.js.map +1 -0
- package/es/elements/content-sidebar/flowTypes.js.flow +9 -25
- package/es/elements/content-sidebar/messages.js +8 -0
- package/es/elements/content-sidebar/messages.js.flow +10 -0
- package/es/elements/content-sidebar/messages.js.map +1 -1
- package/es/elements/content-sidebar/withErrorHandling.js.flow +1 -1
- package/es/elements/content-sidebar/withErrorHandling.js.map +1 -1
- package/es/elements/content-sidebar/withSidebarAnnotations.js +215 -30
- package/es/elements/content-sidebar/withSidebarAnnotations.js.flow +162 -11
- package/es/elements/content-sidebar/withSidebarAnnotations.js.map +1 -1
- package/es/elements/content-uploader/OverallUploadsProgressBar.js +10 -8
- package/es/elements/content-uploader/OverallUploadsProgressBar.js.flow +11 -12
- package/es/elements/content-uploader/OverallUploadsProgressBar.js.map +1 -1
- package/es/features/classification/Classification.scss +1 -1
- package/es/features/classification/security-controls/SecurityControlsItem.scss +1 -0
- package/es/features/classification/security-controls/messages.js +8 -0
- package/es/features/classification/security-controls/messages.js.flow +10 -0
- package/es/features/classification/security-controls/messages.js.map +1 -1
- package/es/features/classification/security-controls/utils.js +4 -7
- package/es/features/classification/security-controls/utils.js.flow +8 -12
- package/es/features/classification/security-controls/utils.js.map +1 -1
- package/es/features/content-explorer/content-explorer/ContentExplorer.js +6 -1
- package/es/features/content-explorer/content-explorer/ContentExplorer.js.flow +4 -0
- package/es/features/content-explorer/content-explorer/ContentExplorer.js.map +1 -1
- package/es/features/content-explorer/content-explorer/ContentExplorer.scss +4 -0
- package/es/features/content-explorer/content-explorer/ContentExplorerBreadcrumbs.js +15 -9
- package/es/features/content-explorer/content-explorer/ContentExplorerBreadcrumbs.js.flow +14 -11
- package/es/features/content-explorer/content-explorer/ContentExplorerBreadcrumbs.js.map +1 -1
- package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js +4 -1
- package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js.flow +4 -1
- package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js.map +1 -1
- package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js +6 -3
- package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js.flow +5 -1
- package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js.map +1 -1
- package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js +6 -1
- package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js.flow +5 -1
- package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js.map +1 -1
- package/es/features/content-explorer/prop-types.js +7 -1
- package/es/features/content-explorer/prop-types.js.flow +8 -0
- package/es/features/content-explorer/prop-types.js.map +1 -1
- package/es/features/content-insights/CompactCount.js +24 -0
- package/es/features/content-insights/CompactCount.js.map +1 -0
- package/es/features/content-insights/ContentAnalyticsErrorState.js +35 -0
- package/es/features/content-insights/ContentAnalyticsErrorState.js.map +1 -0
- package/es/features/content-insights/ContentAnalyticsErrorState.scss +17 -0
- package/es/features/content-insights/ContentInsightsSummary.js +42 -0
- package/es/features/content-insights/ContentInsightsSummary.js.map +1 -0
- package/es/features/content-insights/ContentInsightsSummary.scss +12 -0
- package/es/features/content-insights/ContentInsightsSummaryGhostState.js +19 -0
- package/es/features/content-insights/ContentInsightsSummaryGhostState.js.map +1 -0
- package/es/features/content-insights/ContentInsightsSummaryGhostState.scss +9 -0
- package/es/features/content-insights/GraphCardGhostState.js +25 -0
- package/es/features/content-insights/GraphCardGhostState.js.map +1 -0
- package/es/features/content-insights/GraphCardGhostState.scss +18 -0
- package/es/features/content-insights/GraphCardPreviewsSummary.js +30 -0
- package/es/features/content-insights/GraphCardPreviewsSummary.js.map +1 -0
- package/es/features/content-insights/GraphCardPreviewsSummary.scss +10 -0
- package/es/features/content-insights/GraphGhostState.js +21 -0
- package/es/features/content-insights/GraphGhostState.js.map +1 -0
- package/es/features/content-insights/GraphGhostState.scss +11 -0
- package/es/features/content-insights/HeaderWithCount.js +23 -0
- package/es/features/content-insights/HeaderWithCount.js.map +1 -0
- package/es/features/content-insights/HeaderWithCount.scss +10 -0
- package/es/features/content-insights/MetricSummary.js +85 -0
- package/es/features/content-insights/MetricSummary.js.map +1 -0
- package/es/features/content-insights/MetricSummary.scss +14 -0
- package/es/features/content-insights/OpenContentInsightsButton.js +16 -0
- package/es/features/content-insights/OpenContentInsightsButton.js.map +1 -0
- package/es/features/content-insights/TrendPill.js +61 -0
- package/es/features/content-insights/TrendPill.js.map +1 -0
- package/es/features/content-insights/TrendPill.scss +33 -0
- package/es/features/content-insights/_mixins.scss +7 -0
- package/es/features/content-insights/_variables.scss +4 -0
- package/es/features/content-insights/charts/bar/Bar.js +57 -0
- package/es/features/content-insights/charts/bar/Bar.js.map +1 -0
- package/es/features/content-insights/charts/bar/Bar.scss +27 -0
- package/es/features/content-insights/charts/bar/BarChart.js +70 -0
- package/es/features/content-insights/charts/bar/BarChart.js.map +1 -0
- package/es/features/content-insights/charts/bar/BarChart.scss +56 -0
- package/es/features/content-insights/charts/types.js +2 -0
- package/es/{common/types/threadedComments.js.map → features/content-insights/charts/types.js.map} +1 -1
- package/es/features/content-insights/constants.js +54 -0
- package/es/features/content-insights/constants.js.map +1 -0
- package/es/features/content-insights/messages.js +69 -0
- package/es/features/content-insights/messages.js.map +1 -0
- package/es/features/content-insights/numberUtils.js +10 -0
- package/es/features/content-insights/numberUtils.js.map +1 -0
- package/es/features/content-insights/types.js +2 -0
- package/es/features/content-insights/types.js.map +1 -0
- package/es/features/item-details/ItemProperties.scss +1 -1
- package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js +5 -3
- package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js.flow +4 -2
- package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js.map +1 -1
- package/es/features/unified-share-modal/ContactRestrictionNotice.js +34 -8
- package/es/features/unified-share-modal/ContactRestrictionNotice.js.flow +36 -6
- package/es/features/unified-share-modal/ContactRestrictionNotice.js.map +1 -1
- package/es/features/unified-share-modal/EmailForm.js +59 -47
- package/es/features/unified-share-modal/EmailForm.js.flow +31 -13
- package/es/features/unified-share-modal/EmailForm.js.map +1 -1
- package/es/features/unified-share-modal/UnifiedShareForm.js +112 -103
- package/es/features/unified-share-modal/UnifiedShareForm.js.flow +25 -8
- package/es/features/unified-share-modal/UnifiedShareForm.js.map +1 -1
- package/es/features/unified-share-modal/UnifiedShareModal.js +1 -0
- package/es/features/unified-share-modal/UnifiedShareModal.js.flow +1 -0
- package/es/features/unified-share-modal/UnifiedShareModal.js.map +1 -1
- package/es/features/unified-share-modal/flowTypes.js.flow +4 -2
- package/es/features/unified-share-modal/flowTypes.js.map +1 -1
- package/es/features/unified-share-modal/messages.js +12 -8
- package/es/features/unified-share-modal/messages.js.flow +14 -8
- package/es/features/unified-share-modal/messages.js.map +1 -1
- package/es/features/unified-share-modal/utils/hasRestrictedContacts.js +9 -4
- package/es/features/unified-share-modal/utils/hasRestrictedContacts.js.flow +10 -3
- package/es/features/unified-share-modal/utils/hasRestrictedContacts.js.map +1 -1
- package/es/features/unified-share-modal/utils/isRestrictedContact.js +15 -0
- package/es/features/unified-share-modal/utils/isRestrictedContact.js.flow +21 -0
- package/es/features/unified-share-modal/utils/isRestrictedContact.js.map +1 -0
- package/es/icon/fill/Alert16.js +3 -2
- package/es/icon/fill/Alert16.js.flow +3 -2
- package/es/icon/fill/Alert16.js.map +1 -1
- package/es/icon/fill/AlertBadge16.js +31 -0
- package/es/icon/fill/AlertBadge16.js.flow +29 -0
- package/es/icon/fill/AlertBadge16.js.map +1 -0
- package/es/icon/fill/AlertBadge16.stories.js +13 -0
- package/es/icon/fill/AlertBadge16.stories.js.map +1 -0
- package/es/icon/fill/Info16.js +2 -2
- package/es/icon/fill/Info16.js.flow +1 -1
- package/es/icon/fill/Info16.js.map +1 -1
- package/es/icon/fill/InfoBadge16.js +30 -0
- package/es/icon/fill/InfoBadge16.js.flow +28 -0
- package/es/icon/fill/InfoBadge16.js.map +1 -0
- package/es/icon/fill/InfoBadge16.stories.js +13 -0
- package/es/icon/fill/InfoBadge16.stories.js.map +1 -0
- package/es/icon/line/AlertBubble16.js +31 -0
- package/es/icon/line/AlertBubble16.js.flow +29 -0
- package/es/icon/line/AlertBubble16.js.map +1 -0
- package/es/icon/line/AlertBubble16.stories.js +13 -0
- package/es/icon/line/AlertBubble16.stories.js.map +1 -0
- package/es/icon/line/AvatarXBadge16.js +45 -0
- package/es/icon/line/AvatarXBadge16.js.flow +39 -0
- package/es/icon/line/AvatarXBadge16.js.map +1 -0
- package/es/icon/line/AvatarXBadge16.stories.js +13 -0
- package/es/icon/line/AvatarXBadge16.stories.js.map +1 -0
- package/es/icon/line/CoEdit16.js +32 -0
- package/es/icon/line/CoEdit16.js.flow +30 -0
- package/es/icon/line/CoEdit16.js.map +1 -0
- package/es/icon/line/CoEdit16.stories.js +13 -0
- package/es/icon/line/CoEdit16.stories.js.map +1 -0
- package/es/icon/line/Collaborations16.js +32 -0
- package/es/icon/line/Collaborations16.js.flow +30 -0
- package/es/icon/line/Collaborations16.js.map +1 -0
- package/es/icon/line/Collaborations16.stories.js +13 -0
- package/es/icon/line/Collaborations16.stories.js.map +1 -0
- package/es/icon/line/CommentBubble16.js +35 -0
- package/es/icon/line/CommentBubble16.js.flow +34 -0
- package/es/icon/line/CommentBubble16.js.map +1 -0
- package/es/icon/line/CommentBubble16.stories.js +13 -0
- package/es/icon/line/CommentBubble16.stories.js.map +1 -0
- package/es/src/components/accessible-svg/AccessibleSVG.stories.d.ts +7 -0
- package/es/src/components/badge/Badge.stories.d.ts +0 -3
- package/es/src/components/badge/BetaBadge.stories.d.ts +6 -0
- package/es/src/components/badge/TrialBadge.stories.d.ts +6 -0
- package/es/src/components/badge/UpgradeBadge.stories.d.ts +6 -0
- package/es/src/components/draggable-list/DraggableList.stories.d.ts +3 -3
- package/es/src/components/infinite-scroll/InfiniteScroll.d.ts +1 -1
- package/es/src/components/tooltip/Tooltip.d.ts +2 -0
- package/es/src/elements/common/annotator-context/__tests__/useAnnotatorEvents.test.d.ts +1 -0
- package/es/src/elements/common/annotator-context/index.d.ts +1 -0
- package/es/src/elements/common/annotator-context/types.d.ts +28 -6
- package/es/src/elements/common/annotator-context/useAnnotatorEvents.d.ts +52 -0
- package/es/src/elements/common/annotator-context/withAnnotations.d.ts +11 -2
- package/es/src/elements/common/annotator-context/withAnnotatorContext.d.ts +6 -2
- package/es/src/elements/common/current-user/__tests__/withCurrentUser.test.d.ts +1 -0
- package/es/src/elements/common/current-user/index.d.ts +2 -0
- package/es/src/elements/common/current-user/withCurrentUser.d.ts +20 -0
- package/es/src/elements/content-sidebar/SidebarContentInsights.d.ts +15 -0
- package/es/src/elements/content-sidebar/__tests__/SidebarContentInsights.test.d.ts +1 -0
- package/es/src/elements/content-sidebar/activity-feed/activity-feed/fixtures.d.ts +55 -0
- package/es/src/features/content-insights/CompactCount.d.ts +15 -0
- package/es/src/features/content-insights/ContentAnalyticsErrorState.d.ts +7 -0
- package/es/src/features/content-insights/ContentInsightsSummary.d.ts +12 -0
- package/es/src/features/content-insights/ContentInsightsSummaryGhostState.d.ts +3 -0
- package/es/src/features/content-insights/GraphCardGhostState.d.ts +3 -0
- package/es/src/features/content-insights/GraphCardPreviewsSummary.d.ts +16 -0
- package/es/src/features/content-insights/GraphGhostState.d.ts +3 -0
- package/es/src/features/content-insights/HeaderWithCount.d.ts +7 -0
- package/es/src/features/content-insights/MetricSummary.d.ts +18 -0
- package/es/src/features/content-insights/OpenContentInsightsButton.d.ts +5 -0
- package/es/src/features/content-insights/TrendPill.d.ts +15 -0
- package/es/src/features/content-insights/__tests__/CompactCount.test.d.ts +1 -0
- package/es/src/features/content-insights/__tests__/ContentAnalyticsErrorState.test.d.ts +1 -0
- package/es/src/features/content-insights/__tests__/ContentInsightsSummary.test.d.ts +1 -0
- package/es/src/features/content-insights/__tests__/GraphCardPreviewsSummary.test.d.ts +1 -0
- package/es/src/features/content-insights/__tests__/HeaderWithCount.test.d.ts +1 -0
- package/es/src/features/content-insights/__tests__/MetricSummary.test.d.ts +1 -0
- package/es/src/features/content-insights/charts/bar/Bar.d.ts +11 -0
- package/es/src/features/content-insights/charts/bar/BarChart.d.ts +19 -0
- package/es/src/features/content-insights/charts/bar/__tests__/Bar.test.d.ts +1 -0
- package/es/src/features/content-insights/charts/bar/__tests__/BarChart.test.d.ts +1 -0
- package/es/src/features/content-insights/charts/types.d.ts +2 -0
- package/es/src/features/content-insights/constants.d.ts +27 -0
- package/es/src/features/content-insights/messages.d.ts +83 -0
- package/es/src/features/content-insights/numberUtils.d.ts +3 -0
- package/es/src/features/content-insights/types.d.ts +24 -0
- package/es/src/icon/fill/AlertBadge16.d.ts +13 -0
- package/es/src/icon/fill/AlertBadge16.stories.d.ts +9 -0
- package/es/src/icon/fill/InfoBadge16.d.ts +13 -0
- package/es/src/icon/fill/InfoBadge16.stories.d.ts +9 -0
- package/es/src/icon/line/AlertBubble16.d.ts +13 -0
- package/es/src/icon/line/AlertBubble16.stories.d.ts +9 -0
- package/es/src/icon/line/AvatarXBadge16.d.ts +13 -0
- package/es/src/icon/line/AvatarXBadge16.stories.d.ts +9 -0
- package/es/src/icon/line/CoEdit16.d.ts +13 -0
- package/es/src/icon/line/CoEdit16.stories.d.ts +9 -0
- package/es/src/icon/line/Collaborations16.d.ts +13 -0
- package/es/src/icon/line/Collaborations16.stories.d.ts +9 -0
- package/es/src/icon/line/CommentBubble16.d.ts +13 -0
- package/es/src/icon/line/CommentBubble16.stories.d.ts +9 -0
- package/es/src/styles/variables.d.ts +3 -1
- package/es/styles/constants/_layout.scss +1 -1
- package/es/styles/constants/_media-queries.scss +2 -0
- package/es/styles/variables.js +6 -2
- package/es/styles/variables.js.flow +4 -2
- package/es/styles/variables.js.map +1 -1
- package/es/utils/error.js +5 -1
- package/es/utils/error.js.flow +5 -1
- package/es/utils/error.js.map +1 -1
- package/es/utils/fields.js +8 -3
- package/es/utils/fields.js.flow +21 -3
- package/es/utils/fields.js.map +1 -1
- package/es/utils/sorter.js.flow +2 -2
- package/es/utils/sorter.js.map +1 -1
- package/i18n/bn-IN.js +45 -7
- package/i18n/bn-IN.properties +83 -7
- package/i18n/da-DK.js +45 -7
- package/i18n/da-DK.properties +83 -7
- package/i18n/de-DE.js +45 -7
- package/i18n/de-DE.properties +83 -7
- package/i18n/en-AU.js +45 -7
- package/i18n/en-AU.properties +83 -7
- package/i18n/en-CA.js +45 -7
- package/i18n/en-CA.properties +83 -7
- package/i18n/en-GB.js +45 -7
- package/i18n/en-GB.properties +83 -7
- package/i18n/en-US.js +45 -7
- package/i18n/en-US.properties +83 -7
- package/i18n/en-x-pseudo.js +891 -854
- package/i18n/en-x-pseudo.properties +941 -843
- package/i18n/es-419.js +45 -7
- package/i18n/es-419.properties +83 -7
- package/i18n/es-ES.js +45 -7
- package/i18n/es-ES.properties +83 -7
- package/i18n/fi-FI.js +45 -7
- package/i18n/fi-FI.properties +83 -7
- package/i18n/fr-CA.js +45 -7
- package/i18n/fr-CA.properties +83 -7
- package/i18n/fr-FR.js +45 -7
- package/i18n/fr-FR.properties +83 -7
- package/i18n/hi-IN.js +45 -7
- package/i18n/hi-IN.properties +83 -7
- package/i18n/it-IT.js +45 -7
- package/i18n/it-IT.properties +83 -7
- package/i18n/ja-JP.js +47 -9
- package/i18n/ja-JP.properties +85 -9
- package/i18n/ko-KR.js +45 -7
- package/i18n/ko-KR.properties +83 -7
- package/i18n/nb-NO.js +45 -7
- package/i18n/nb-NO.properties +83 -7
- package/i18n/nl-NL.js +45 -7
- package/i18n/nl-NL.properties +83 -7
- package/i18n/pl-PL.js +45 -7
- package/i18n/pl-PL.properties +83 -7
- package/i18n/pt-BR.js +45 -7
- package/i18n/pt-BR.properties +83 -7
- package/i18n/ru-RU.js +45 -7
- package/i18n/ru-RU.properties +83 -7
- package/i18n/sv-SE.js +45 -7
- package/i18n/sv-SE.properties +83 -7
- package/i18n/tr-TR.js +45 -7
- package/i18n/tr-TR.properties +83 -7
- package/i18n/zh-CN.js +45 -7
- package/i18n/zh-CN.properties +83 -7
- package/i18n/zh-TW.js +45 -7
- package/i18n/zh-TW.properties +83 -7
- package/package.json +7 -8
- package/src/__mocks__/react-intl.js +4 -0
- package/src/api/APIFactory.js +26 -0
- package/src/api/Annotations.js +60 -6
- package/src/api/Comments.js +5 -4
- package/src/api/Feed.js +677 -17
- package/src/api/FileCollaborators.js +30 -0
- package/src/api/ThreadedComments.js +54 -29
- package/src/api/__tests__/Annotations.test.js +77 -3
- package/src/api/__tests__/Feed.test.js +698 -85
- package/src/api/__tests__/FileCollaborators.test.js +41 -0
- package/src/api/__tests__/ThreadedComments.test.js +47 -10
- package/src/api/__tests__/utils.test.js +11 -0
- package/src/api/fixtures.js +401 -0
- package/src/api/messages.js +5 -0
- package/src/api/utils.js +30 -0
- package/src/common/types/annotations.js +18 -12
- package/src/common/types/feed.js +40 -4
- package/src/components/accessible-svg/AccessibleSVG.stories.tsx +18 -0
- package/src/components/badge/Badge.stories.md +1 -7
- package/src/components/badge/Badge.stories.tsx +1 -10
- package/src/components/badge/BetaBadge.stories.tsx +9 -0
- package/src/components/badge/TrialBadge.stories.tsx +9 -0
- package/src/components/badge/UpgradeBadge.stories.tsx +9 -0
- package/src/components/breadcrumb/Breadcrumb.js +68 -42
- package/src/components/breadcrumb/EllipsisCrumb.js +10 -6
- package/src/components/count-badge/CountBadge.stories.tsx +1 -1
- package/src/components/draggable-list/DraggableList.stories.tsx +72 -5
- package/src/components/dropdown-menu/DropdownMenu.js +11 -0
- package/src/components/dropdown-menu/DropdownMenu.scss +3 -3
- package/src/components/dropdown-menu/__tests__/DropdownMenu.test.js +38 -0
- package/src/components/grid-view/__tests__/__snapshots__/GridViewSlider.test.js.snap +1 -0
- package/src/components/infinite-scroll/InfiniteScroll.md +1 -1
- package/src/components/infinite-scroll/InfiniteScroll.tsx +5 -2
- package/src/components/infinite-scroll/__tests__/InfiniteScroll.test.tsx +115 -127
- package/src/components/modal/Modal.scss +5 -1
- package/src/components/search-form/SearchForm.js +1 -1
- package/src/components/search-form/__tests__/SearchForm.test.js +25 -6
- package/src/components/sidebar-toggle-button/__tests__/__snapshots__/SidebarToggleButton.test.js.snap +4 -0
- package/src/components/table/__tests__/makeSelectable.test.js +654 -144
- package/src/components/table/makeSelectable.js +299 -98
- package/src/components/time/__tests__/ReadableTime.test.js +0 -1
- package/src/components/tooltip/Tooltip.tsx +5 -2
- package/src/components/tooltip/__tests__/Tooltip.test.tsx +10 -0
- package/src/components/tooltip/__tests__/__snapshots__/Tooltip.test.tsx.snap +1 -1
- package/src/constants.js +11 -0
- package/src/elements/common/annotator-context/__tests__/useAnnotatorEvents.test.tsx +509 -0
- package/src/elements/common/annotator-context/__tests__/withAnnotations.test.tsx +275 -12
- package/src/elements/common/annotator-context/__tests__/withAnnotatorContext.test.tsx +18 -6
- package/src/elements/common/annotator-context/index.js.flow +4 -0
- package/src/elements/common/annotator-context/index.ts +1 -0
- package/src/elements/common/annotator-context/types.js.flow +77 -35
- package/src/elements/common/annotator-context/types.ts +28 -6
- package/src/elements/common/annotator-context/useAnnotatorEvents.js.flow +52 -0
- package/src/elements/common/annotator-context/useAnnotatorEvents.ts +190 -0
- package/src/elements/common/annotator-context/withAnnotations.js.flow +73 -36
- package/src/elements/common/annotator-context/withAnnotations.tsx +170 -7
- package/src/elements/common/annotator-context/withAnnotatorContext.js.flow +29 -9
- package/src/elements/common/annotator-context/withAnnotatorContext.tsx +28 -5
- package/src/elements/common/current-user/__tests__/withCurrentUser.test.tsx +108 -0
- package/src/elements/common/current-user/index.js.flow +8 -0
- package/src/elements/common/current-user/index.ts +2 -0
- package/src/elements/common/current-user/withCurrentUser.js.flow +40 -0
- package/src/elements/common/current-user/withCurrentUser.tsx +139 -0
- package/src/elements/common/flowTypes.js +22 -4
- package/src/elements/common/interactionTargets.js +2 -0
- package/src/elements/common/logger/Logger.js +1 -1
- package/src/elements/common/messages.js +5 -0
- package/src/elements/content-explorer/DeleteConfirmationDialog.js +3 -1
- package/src/elements/content-explorer/DeleteConfirmationDialog.scss +5 -0
- package/src/elements/content-explorer/stories/DeleteConfirmationDialog.stories.js +60 -0
- package/src/elements/content-explorer/stories/DeleteConfirmationDialog.stories.md +1 -0
- package/src/elements/content-sidebar/ActivitySidebar.js +381 -154
- package/src/elements/content-sidebar/ActivitySidebarFilter.js +59 -0
- package/src/elements/content-sidebar/ActivitySidebarFilter.scss +4 -0
- package/src/elements/content-sidebar/DetailsSidebar.js +32 -4
- package/src/elements/content-sidebar/Sidebar.js +6 -1
- package/src/elements/content-sidebar/SidebarContentInsights.scss +6 -0
- package/src/elements/content-sidebar/SidebarContentInsights.tsx +57 -0
- package/src/elements/content-sidebar/SidebarPanels.js +4 -0
- package/src/elements/content-sidebar/__tests__/ActivitySidebar.test.js +533 -243
- package/src/elements/content-sidebar/__tests__/ActivitySidebarFilter.test.js +54 -0
- package/src/elements/content-sidebar/__tests__/DetailsSidebar.test.js +45 -0
- package/src/elements/content-sidebar/__tests__/Sidebar.test.js +1 -1
- package/src/elements/content-sidebar/__tests__/SidebarContentInsights.test.tsx +56 -0
- package/src/elements/content-sidebar/__tests__/SidebarPanels.test.js +4 -3
- package/src/elements/content-sidebar/__tests__/__snapshots__/ActivitySidebar.test.js.snap +29 -15
- package/src/elements/content-sidebar/__tests__/__snapshots__/SidebarFileProperties.test.js.snap +1 -0
- package/src/elements/content-sidebar/__tests__/withSidebarAnnotations.test.js +325 -32
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js +122 -24
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js +59 -18
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js +126 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.scss +17 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js +85 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.scss +16 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js +59 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.scss +22 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActiveState.test.js +19 -5
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityFeed.test.js +22 -16
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThread.test.js +80 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThreadReplies.test.js +24 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThreadRepliesForm.test.js +47 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/__snapshots__/ActiveState.test.js.snap +74 -43
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/activityFeedUtils.test.js +8 -8
- package/src/elements/content-sidebar/activity-feed/activity-feed/activityFeedUtils.js +2 -2
- package/src/elements/content-sidebar/activity-feed/activity-feed/fixtures.ts +56 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/messages.js +20 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js +117 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.scss +7 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js +105 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.scss +5 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js +86 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.scss +3 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThread.test.js +28 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThreadContent.test.js +89 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThreadCreate.test.js +103 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/useAnnotationAPI.test.js +202 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/useRepliesAPI.test.js +99 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/errors.js +26 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/index.js +1 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/messages.js +21 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js +203 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js +121 -0
- package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js +24 -4
- package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js +36 -2
- package/src/elements/content-sidebar/activity-feed/annotations/__tests__/AnnotationActivity.test.js +14 -10
- package/src/elements/content-sidebar/activity-feed/annotations/__tests__/AnnotationActivityMenu.test.js +35 -1
- package/src/elements/content-sidebar/activity-feed/annotations/messages.js +10 -0
- package/src/elements/content-sidebar/activity-feed/comment/Comment.js +54 -10
- package/src/elements/content-sidebar/activity-feed/comment/__tests__/Comment.test.js +152 -7
- package/src/elements/content-sidebar/activity-feed/comment/__tests__/__snapshots__/Comment.test.js.snap +12 -7
- package/src/elements/content-sidebar/activity-feed/comment/messages.js +10 -0
- package/src/elements/content-sidebar/activity-feed/comment-form/CommentForm.js +3 -1
- package/src/elements/content-sidebar/activity-feed/comment-form/__tests__/CommentForm.test.js +11 -0
- package/src/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.js +34 -4
- package/src/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.scss +40 -3
- package/src/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessage.js +42 -0
- package/src/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessageToggle.js +24 -0
- package/src/elements/content-sidebar/activity-feed/common/activity-message/__tests__/ActivityMessage.test.js +48 -1
- package/src/elements/content-sidebar/activity-feed/common/activity-message/messages.js +15 -0
- package/src/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.js +30 -0
- package/src/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.scss +6 -0
- package/src/elements/content-sidebar/activity-feed/common/activity-status/__tests__/ActivityStatus.test.js +19 -0
- package/src/elements/content-sidebar/activity-feed/common/activity-status/index.js +2 -0
- package/src/elements/content-sidebar/activity-feed/common/activity-status/messages.js +13 -0
- package/src/elements/content-sidebar/activity-feed/common/activity-timestamp/ActivityTimestamp.scss +1 -1
- package/src/elements/content-sidebar/activity-feed/task-new/__tests__/Task.test.js +4 -3
- package/src/elements/content-sidebar/activity-feed/task-new/__tests__/__snapshots__/Task.test.js.snap +1 -2
- package/src/elements/content-sidebar/fixtures.js +185 -0
- package/src/elements/content-sidebar/flowTypes.js +9 -25
- package/src/elements/content-sidebar/messages.js +10 -0
- package/src/elements/content-sidebar/withErrorHandling.js +1 -1
- package/src/elements/content-sidebar/withSidebarAnnotations.js +162 -11
- package/src/elements/content-uploader/OverallUploadsProgressBar.js +11 -12
- package/src/features/classification/Classification.scss +1 -1
- package/src/features/classification/security-controls/SecurityControlsItem.scss +1 -0
- package/src/features/classification/security-controls/__tests__/__snapshots__/utils.test.js.snap +18 -16
- package/src/features/classification/security-controls/__tests__/utils.test.js +13 -5
- package/src/features/classification/security-controls/messages.js +10 -0
- package/src/features/classification/security-controls/utils.js +8 -12
- package/src/features/collapsible-sidebar/__tests__/__snapshots__/CollapsibleSidebarLogo.test.js.snap +2 -0
- package/src/features/content-explorer/content-explorer/ContentExplorer.js +4 -0
- package/src/features/content-explorer/content-explorer/ContentExplorer.scss +4 -0
- package/src/features/content-explorer/content-explorer/ContentExplorerBreadcrumbs.js +14 -11
- package/src/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js +4 -1
- package/src/features/content-explorer/content-explorer/__tests__/ContentExplorerBreadcrumbs.test.js +2 -2
- package/src/features/content-explorer/content-explorer-modal/ContentExplorerModal.js +5 -1
- package/src/features/content-explorer/content-explorer-modal/__tests__/__snapshots__/ContentExplorerModal.test.js.snap +1 -0
- package/src/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js +5 -1
- package/src/features/content-explorer/prop-types.js +8 -0
- package/src/features/content-insights/CompactCount.tsx +23 -0
- package/src/features/content-insights/ContentAnalyticsErrorState.scss +17 -0
- package/src/features/content-insights/ContentAnalyticsErrorState.tsx +44 -0
- package/src/features/content-insights/ContentInsightsSummary.scss +12 -0
- package/src/features/content-insights/ContentInsightsSummary.tsx +45 -0
- package/src/features/content-insights/ContentInsightsSummaryGhostState.scss +9 -0
- package/src/features/content-insights/ContentInsightsSummaryGhostState.tsx +18 -0
- package/src/features/content-insights/GraphCardGhostState.scss +18 -0
- package/src/features/content-insights/GraphCardGhostState.tsx +18 -0
- package/src/features/content-insights/GraphCardPreviewsSummary.scss +10 -0
- package/src/features/content-insights/GraphCardPreviewsSummary.tsx +40 -0
- package/src/features/content-insights/GraphGhostState.scss +11 -0
- package/src/features/content-insights/GraphGhostState.tsx +17 -0
- package/src/features/content-insights/HeaderWithCount.scss +10 -0
- package/src/features/content-insights/HeaderWithCount.tsx +24 -0
- package/src/features/content-insights/MetricSummary.scss +14 -0
- package/src/features/content-insights/MetricSummary.tsx +65 -0
- package/src/features/content-insights/OpenContentInsightsButton.tsx +20 -0
- package/src/features/content-insights/TrendPill.scss +33 -0
- package/src/features/content-insights/TrendPill.tsx +70 -0
- package/src/features/content-insights/__tests__/CompactCount.test.tsx +57 -0
- package/src/features/content-insights/__tests__/ContentAnalyticsErrorState.test.tsx +33 -0
- package/src/features/content-insights/__tests__/ContentInsightsSummary.test.tsx +81 -0
- package/src/features/content-insights/__tests__/GraphCardPreviewsSummary.test.tsx +35 -0
- package/src/features/content-insights/__tests__/HeaderWithCount.test.tsx +26 -0
- package/src/features/content-insights/__tests__/MetricSummary.test.tsx +88 -0
- package/src/features/content-insights/_mixins.scss +7 -0
- package/src/features/content-insights/_variables.scss +4 -0
- package/src/features/content-insights/charts/bar/Bar.scss +27 -0
- package/src/features/content-insights/charts/bar/Bar.tsx +48 -0
- package/src/features/content-insights/charts/bar/BarChart.scss +56 -0
- package/src/features/content-insights/charts/bar/BarChart.tsx +78 -0
- package/src/features/content-insights/charts/bar/__tests__/Bar.test.tsx +74 -0
- package/src/features/content-insights/charts/bar/__tests__/BarChart.test.tsx +110 -0
- package/src/features/content-insights/charts/types.ts +3 -0
- package/src/features/content-insights/constants.ts +60 -0
- package/src/features/content-insights/messages.ts +90 -0
- package/src/features/content-insights/numberUtils.ts +9 -0
- package/src/features/content-insights/types.ts +33 -0
- package/src/features/item-details/ItemProperties.scss +1 -1
- package/src/features/shared-link-settings-modal/SharedLinkSettingsModal.js +4 -2
- package/src/features/shared-link-settings-modal/__tests__/SharedLinkSettingsModal.test.js +22 -3
- package/src/features/shared-link-settings-modal/__tests__/__snapshots__/SharedLinkSettingsModal.test.js.snap +2 -1
- package/src/features/unified-share-modal/ContactRestrictionNotice.js +36 -6
- package/src/features/unified-share-modal/EmailForm.js +31 -13
- package/src/features/unified-share-modal/UnifiedShareForm.js +25 -8
- package/src/features/unified-share-modal/UnifiedShareModal.js +1 -0
- package/src/features/unified-share-modal/__tests__/ContactRestrictionNotice.test.js +55 -6
- package/src/features/unified-share-modal/__tests__/EmailForm.test.js +131 -24
- package/src/features/unified-share-modal/__tests__/UnifiedShareForm.test.js +89 -35
- package/src/features/unified-share-modal/__tests__/__snapshots__/UnifiedShareForm.test.js.snap +16 -0
- package/src/features/unified-share-modal/__tests__/__snapshots__/UnifiedShareModal.test.js.snap +17 -0
- package/src/features/unified-share-modal/flowTypes.js +4 -2
- package/src/features/unified-share-modal/messages.js +14 -8
- package/src/features/unified-share-modal/utils/__tests__/hasRestrictedContacts.test.js +24 -10
- package/src/features/unified-share-modal/utils/__tests__/isRestrictedContact.test.js +33 -0
- package/src/features/unified-share-modal/utils/hasRestrictedContacts.js +10 -3
- package/src/features/unified-share-modal/utils/isRestrictedContact.js +21 -0
- package/src/features/virtualized-table/__tests__/__snapshots__/VirtualizedTable.test.js.snap +1 -0
- package/src/icon/fill/Alert16.js.flow +3 -2
- package/src/icon/fill/Alert16.tsx +3 -2
- package/src/icon/fill/AlertBadge16.js.flow +29 -0
- package/src/icon/fill/AlertBadge16.stories.tsx +13 -0
- package/src/icon/fill/AlertBadge16.tsx +27 -0
- package/src/icon/fill/Info16.js.flow +1 -1
- package/src/icon/fill/Info16.tsx +1 -1
- package/src/icon/fill/InfoBadge16.js.flow +28 -0
- package/src/icon/fill/InfoBadge16.stories.tsx +13 -0
- package/src/icon/fill/InfoBadge16.tsx +26 -0
- package/src/icon/line/AlertBubble16.js.flow +29 -0
- package/src/icon/line/AlertBubble16.stories.tsx +13 -0
- package/src/icon/line/AlertBubble16.tsx +27 -0
- package/src/icon/line/AvatarXBadge16.js.flow +39 -0
- package/src/icon/line/AvatarXBadge16.stories.tsx +13 -0
- package/src/icon/line/AvatarXBadge16.tsx +37 -0
- package/src/icon/line/CoEdit16.js.flow +30 -0
- package/src/icon/line/CoEdit16.stories.tsx +13 -0
- package/src/icon/line/CoEdit16.tsx +28 -0
- package/src/icon/line/Collaborations16.js.flow +30 -0
- package/src/icon/line/Collaborations16.stories.tsx +13 -0
- package/src/icon/line/Collaborations16.tsx +28 -0
- package/src/icon/line/CommentBubble16.js.flow +34 -0
- package/src/icon/line/CommentBubble16.stories.tsx +13 -0
- package/src/icon/line/CommentBubble16.tsx +32 -0
- package/src/styles/constants/_layout.scss +1 -1
- package/src/styles/constants/_media-queries.scss +2 -0
- package/src/styles/variables.js +4 -2
- package/src/styles/variables.json +4 -2
- package/src/styles/variables.ts +3 -1
- package/src/utils/__tests__/fields.test.js +23 -4
- package/src/utils/__tests__/sorter.test.js +3 -3
- package/src/utils/error.js +5 -1
- package/src/utils/fields.js +21 -3
- package/src/utils/sorter.js +2 -2
- package/es/common/types/threadedComments.js +0 -2
- package/es/common/types/threadedComments.js.flow +0 -9
- package/src/common/types/threadedComments.js +0 -9
|
@@ -1,73 +1,26 @@
|
|
|
1
|
+
import cloneDeep from 'lodash/cloneDeep';
|
|
1
2
|
import commonMessages from '../../elements/common/messages';
|
|
2
3
|
import messages from '../messages';
|
|
3
4
|
import * as sorter from '../../utils/sorter';
|
|
4
5
|
import * as error from '../../utils/error';
|
|
5
|
-
import {
|
|
6
|
+
import { FEED_FILE_VERSIONS_FIELDS_TO_FETCH } from '../../utils/fields';
|
|
7
|
+
import {
|
|
8
|
+
FEED_ITEM_TYPE_APP_ACTIVITY,
|
|
9
|
+
FEED_ITEM_TYPE_ANNOTATION,
|
|
10
|
+
FEED_ITEM_TYPE_COMMENT,
|
|
11
|
+
FEED_ITEM_TYPE_VERSION,
|
|
12
|
+
IS_ERROR_DISPLAYED,
|
|
13
|
+
TASK_MAX_GROUP_ASSIGNEES,
|
|
14
|
+
} from '../../constants';
|
|
6
15
|
import Feed from '../Feed';
|
|
7
16
|
import { annotation as mockAnnotation } from '../../__mocks__/annotations';
|
|
8
|
-
|
|
9
|
-
const mockTask = {
|
|
10
|
-
created_by: {
|
|
11
|
-
type: 'task_collaborator',
|
|
12
|
-
target: { name: 'Jay-Z', id: '100' },
|
|
13
|
-
id: '000',
|
|
14
|
-
role: 'CREATOR',
|
|
15
|
-
status: TASK_NEW_NOT_STARTED,
|
|
16
|
-
},
|
|
17
|
-
created_at: '2019-01-01',
|
|
18
|
-
due_at: '2019-02-02',
|
|
19
|
-
id: '0',
|
|
20
|
-
name: 'task message',
|
|
21
|
-
type: 'task',
|
|
22
|
-
assigned_to: {
|
|
23
|
-
entries: [
|
|
24
|
-
{
|
|
25
|
-
id: '1',
|
|
26
|
-
target: { name: 'Beyonce', id: '2', avatar_url: '', type: 'user' },
|
|
27
|
-
status: TASK_NEW_NOT_STARTED,
|
|
28
|
-
permissions: {
|
|
29
|
-
can_delete: false,
|
|
30
|
-
can_update: false,
|
|
31
|
-
},
|
|
32
|
-
role: 'ASSIGNEE',
|
|
33
|
-
type: 'task_collaborator',
|
|
34
|
-
},
|
|
35
|
-
],
|
|
36
|
-
limit: 10,
|
|
37
|
-
next_marker: null,
|
|
38
|
-
},
|
|
39
|
-
permissions: {
|
|
40
|
-
can_update: false,
|
|
41
|
-
can_delete: false,
|
|
42
|
-
can_create_task_collaborator: false,
|
|
43
|
-
can_create_task_link: false,
|
|
44
|
-
},
|
|
45
|
-
task_links: {
|
|
46
|
-
entries: [
|
|
47
|
-
{
|
|
48
|
-
id: '03',
|
|
49
|
-
type: 'task_link',
|
|
50
|
-
target: {
|
|
51
|
-
type: 'file',
|
|
52
|
-
id: '4',
|
|
53
|
-
},
|
|
54
|
-
permissions: {
|
|
55
|
-
can_delete: false,
|
|
56
|
-
can_update: false,
|
|
57
|
-
},
|
|
58
|
-
},
|
|
59
|
-
],
|
|
60
|
-
limit: 1,
|
|
61
|
-
next_marker: null,
|
|
62
|
-
},
|
|
63
|
-
status: TASK_NEW_NOT_STARTED,
|
|
64
|
-
};
|
|
17
|
+
import { task as mockTask, threadedComments as mockThreadedComments, threadedCommentsFormatted } from '../fixtures';
|
|
65
18
|
|
|
66
19
|
const mockErrors = [{ code: 'error_code_0' }, { code: 'error_code_1' }];
|
|
67
20
|
|
|
68
21
|
const mockFirstVersion = {
|
|
69
22
|
action: 'upload',
|
|
70
|
-
type:
|
|
23
|
+
type: FEED_ITEM_TYPE_VERSION,
|
|
71
24
|
id: 123,
|
|
72
25
|
created_at: 'Thu Sep 20 33658 19:45:39 GMT-0600 (CST)',
|
|
73
26
|
trashed_at: 1234567891,
|
|
@@ -77,13 +30,13 @@ const mockFirstVersion = {
|
|
|
77
30
|
|
|
78
31
|
const mockCurrentVersion = {
|
|
79
32
|
action: 'restore',
|
|
80
|
-
type:
|
|
33
|
+
type: FEED_ITEM_TYPE_VERSION,
|
|
81
34
|
id: '123',
|
|
82
35
|
};
|
|
83
36
|
|
|
84
37
|
const deleted_version = {
|
|
85
38
|
action: 'delete',
|
|
86
|
-
type:
|
|
39
|
+
type: FEED_ITEM_TYPE_VERSION,
|
|
87
40
|
id: 234,
|
|
88
41
|
created_at: 'Thu Sep 20 33658 19:45:39 GMT-0600 (CST)',
|
|
89
42
|
trashed_at: 1234567891,
|
|
@@ -107,6 +60,12 @@ const annotations = {
|
|
|
107
60
|
next_marker: null,
|
|
108
61
|
};
|
|
109
62
|
|
|
63
|
+
const threadedComments = {
|
|
64
|
+
entries: mockThreadedComments,
|
|
65
|
+
limit: 1000,
|
|
66
|
+
next_marker: null,
|
|
67
|
+
};
|
|
68
|
+
|
|
110
69
|
jest.mock('lodash/uniqueId', () => () => 'uniqueId');
|
|
111
70
|
|
|
112
71
|
const mockCreateTaskWithDeps = jest.fn().mockImplementation(({ successCallback }) => {
|
|
@@ -114,7 +73,6 @@ const mockCreateTaskWithDeps = jest.fn().mockImplementation(({ successCallback }
|
|
|
114
73
|
});
|
|
115
74
|
|
|
116
75
|
jest.mock('../tasks/TasksNew', () => {
|
|
117
|
-
const task = mockTask;
|
|
118
76
|
return jest.fn().mockImplementation(() => ({
|
|
119
77
|
createTaskWithDeps: mockCreateTaskWithDeps,
|
|
120
78
|
updateTaskWithDeps: jest.fn().mockImplementation(({ successCallback }) => {
|
|
@@ -123,9 +81,9 @@ jest.mock('../tasks/TasksNew', () => {
|
|
|
123
81
|
deleteTask: jest.fn().mockImplementation(({ successCallback }) => {
|
|
124
82
|
successCallback();
|
|
125
83
|
}),
|
|
126
|
-
getTasksForFile: jest.fn().mockReturnValue({ entries: [
|
|
84
|
+
getTasksForFile: jest.fn().mockReturnValue({ entries: [mockTask], next_marker: null, limit: 1000 }),
|
|
127
85
|
getTask: jest.fn(({ successCallback }) => {
|
|
128
|
-
successCallback(
|
|
86
|
+
successCallback(mockTask);
|
|
129
87
|
}),
|
|
130
88
|
}));
|
|
131
89
|
});
|
|
@@ -239,6 +197,35 @@ jest.mock('../Comments', () =>
|
|
|
239
197
|
})),
|
|
240
198
|
);
|
|
241
199
|
|
|
200
|
+
jest.mock('../ThreadedComments', () =>
|
|
201
|
+
jest.fn().mockImplementation(() => ({
|
|
202
|
+
getComments: jest.fn().mockReturnValue({
|
|
203
|
+
entries: mockThreadedComments,
|
|
204
|
+
limit: 1000,
|
|
205
|
+
next_marker: null,
|
|
206
|
+
}),
|
|
207
|
+
getCommentReplies: jest.fn().mockImplementation(({ successCallback }) => {
|
|
208
|
+
successCallback({
|
|
209
|
+
entries: mockThreadedComments,
|
|
210
|
+
limit: 1000,
|
|
211
|
+
next_marker: null,
|
|
212
|
+
});
|
|
213
|
+
}),
|
|
214
|
+
deleteComment: jest.fn().mockImplementation(({ successCallback }) => {
|
|
215
|
+
successCallback();
|
|
216
|
+
}),
|
|
217
|
+
updateComment: jest.fn().mockImplementation(({ successCallback }) => {
|
|
218
|
+
successCallback();
|
|
219
|
+
}),
|
|
220
|
+
createComment: jest.fn().mockImplementation(({ successCallback }) => {
|
|
221
|
+
successCallback();
|
|
222
|
+
}),
|
|
223
|
+
createCommentReply: jest.fn().mockImplementation(({ successCallback }) => {
|
|
224
|
+
successCallback();
|
|
225
|
+
}),
|
|
226
|
+
})),
|
|
227
|
+
);
|
|
228
|
+
|
|
242
229
|
jest.mock('../Versions', () => {
|
|
243
230
|
return jest.fn().mockImplementation(() => ({
|
|
244
231
|
getVersions: jest.fn(() => mockFirstVersion),
|
|
@@ -255,6 +242,18 @@ jest.mock('../Annotations', () =>
|
|
|
255
242
|
successCallback();
|
|
256
243
|
}),
|
|
257
244
|
getAnnotations: jest.fn(),
|
|
245
|
+
getAnnotationReplies: jest.fn().mockImplementation((fileId, annotationId, permissions, successCallback) => {
|
|
246
|
+
successCallback({
|
|
247
|
+
entries: mockThreadedComments,
|
|
248
|
+
limit: 1000,
|
|
249
|
+
next_marker: null,
|
|
250
|
+
});
|
|
251
|
+
}),
|
|
252
|
+
createAnnotationReply: jest
|
|
253
|
+
.fn()
|
|
254
|
+
.mockImplementation((fileId, annotationId, permissions, message, successCallback) => {
|
|
255
|
+
successCallback();
|
|
256
|
+
}),
|
|
258
257
|
})),
|
|
259
258
|
);
|
|
260
259
|
|
|
@@ -278,7 +277,7 @@ const MOCK_APP_ACTIVITY_ITEM = {
|
|
|
278
277
|
id: '3782',
|
|
279
278
|
occurred_at: '2019-02-21T04:00:00Z',
|
|
280
279
|
rendered_text: 'You shared this file in <a href="https://some-app.com" rel="noreferrer noopener">Some App</a>',
|
|
281
|
-
type:
|
|
280
|
+
type: FEED_ITEM_TYPE_APP_ACTIVITY,
|
|
282
281
|
};
|
|
283
282
|
|
|
284
283
|
jest.mock('../AppActivity', () =>
|
|
@@ -299,7 +298,7 @@ describe('api/Feed', () => {
|
|
|
299
298
|
total_count: 1,
|
|
300
299
|
entries: [
|
|
301
300
|
{
|
|
302
|
-
type:
|
|
301
|
+
type: FEED_ITEM_TYPE_COMMENT,
|
|
303
302
|
id: '123',
|
|
304
303
|
created_at: 'Thu Sep 26 33658 19:46:39 GMT-0600 (CST)',
|
|
305
304
|
tagged_message: 'test @[123:Jeezy] @[10:Kanye West]',
|
|
@@ -414,6 +413,7 @@ describe('api/Feed', () => {
|
|
|
414
413
|
feed.fetchCurrentVersion = jest.fn().mockResolvedValue(mockCurrentVersion);
|
|
415
414
|
feed.fetchTasksNew = jest.fn().mockResolvedValue(tasks);
|
|
416
415
|
feed.fetchComments = jest.fn().mockResolvedValue(comments);
|
|
416
|
+
feed.fetchThreadedComments = jest.fn().mockResolvedValue(threadedComments);
|
|
417
417
|
feed.fetchAppActivity = jest.fn().mockReturnValue(appActivities);
|
|
418
418
|
feed.fetchAnnotations = jest.fn().mockReturnValue(annotations);
|
|
419
419
|
feed.setCachedItems = jest.fn();
|
|
@@ -488,6 +488,22 @@ describe('api/Feed', () => {
|
|
|
488
488
|
});
|
|
489
489
|
});
|
|
490
490
|
|
|
491
|
+
test.each`
|
|
492
|
+
shouldShowReplies | expected
|
|
493
|
+
${undefined} | ${false}
|
|
494
|
+
${false} | ${false}
|
|
495
|
+
${true} | ${true}
|
|
496
|
+
`(
|
|
497
|
+
'should pass $expected as shouldShowReplies when calling fetchAnnotations when $shouldShowReplies is given as shouldShowReplies',
|
|
498
|
+
({ shouldShowReplies, expected }) => {
|
|
499
|
+
feed.feedItems(file, false, successCb, errorCb, errorCb, {
|
|
500
|
+
shouldShowAnnotations: true,
|
|
501
|
+
shouldShowReplies,
|
|
502
|
+
});
|
|
503
|
+
expect(feed.fetchAnnotations).toBeCalledWith(expect.anything(), expected);
|
|
504
|
+
},
|
|
505
|
+
);
|
|
506
|
+
|
|
491
507
|
test('should not use the annotations api if shouldShowannotations is false', done => {
|
|
492
508
|
feed.feedItems(file, false, successCb, errorCb, errorCb, { shouldShowAnnotations: false });
|
|
493
509
|
setImmediate(() => {
|
|
@@ -496,6 +512,14 @@ describe('api/Feed', () => {
|
|
|
496
512
|
});
|
|
497
513
|
});
|
|
498
514
|
|
|
515
|
+
test('should use the threaded comments api if shouldShowReplies is true', done => {
|
|
516
|
+
feed.feedItems(file, false, successCb, errorCb, errorCb, { shouldShowReplies: true });
|
|
517
|
+
setImmediate(() => {
|
|
518
|
+
expect(feed.fetchThreadedComments).toBeCalledWith(file.permissions);
|
|
519
|
+
done();
|
|
520
|
+
});
|
|
521
|
+
});
|
|
522
|
+
|
|
499
523
|
test('should not call success or error callback if it is destroyed', done => {
|
|
500
524
|
feed.isDestroyed = jest.fn().mockReturnValue(true);
|
|
501
525
|
feed.feedItems(file, false, successCb, errorCb);
|
|
@@ -569,6 +593,21 @@ describe('api/Feed', () => {
|
|
|
569
593
|
expect(annotationItems instanceof Promise).toBeTruthy();
|
|
570
594
|
expect(feed.annotationsAPI.getAnnotations).toBeCalled();
|
|
571
595
|
});
|
|
596
|
+
|
|
597
|
+
test('when called with shouldFetchReplies = true, should return a promise and call the annotations api with shouldFetchReplies param as true', () => {
|
|
598
|
+
const annotationItems = feed.fetchAnnotations({ can_edit: true }, true);
|
|
599
|
+
expect(annotationItems instanceof Promise).toBeTruthy();
|
|
600
|
+
expect(feed.annotationsAPI.getAnnotations).toBeCalledWith(
|
|
601
|
+
feed.file.id,
|
|
602
|
+
undefined,
|
|
603
|
+
{ can_edit: true },
|
|
604
|
+
expect.any(Function),
|
|
605
|
+
expect.any(Function),
|
|
606
|
+
undefined,
|
|
607
|
+
undefined,
|
|
608
|
+
true,
|
|
609
|
+
);
|
|
610
|
+
});
|
|
572
611
|
});
|
|
573
612
|
|
|
574
613
|
describe('fetchComments()', () => {
|
|
@@ -584,6 +623,72 @@ describe('api/Feed', () => {
|
|
|
584
623
|
});
|
|
585
624
|
});
|
|
586
625
|
|
|
626
|
+
describe('fetchThreadedComments()', () => {
|
|
627
|
+
beforeEach(() => {
|
|
628
|
+
feed.file = file;
|
|
629
|
+
feed.fetchFeedItemErrorCallback = jest.fn();
|
|
630
|
+
});
|
|
631
|
+
|
|
632
|
+
test('should return a promise and call the threaded comments api', () => {
|
|
633
|
+
const permissions = { can_edit: true, can_delete: true, can_resolve: true };
|
|
634
|
+
const commentItems = feed.fetchThreadedComments(permissions);
|
|
635
|
+
expect(commentItems instanceof Promise).toBeTruthy();
|
|
636
|
+
expect(feed.threadedCommentsAPI.getComments).toBeCalledWith({
|
|
637
|
+
errorCallback: expect.any(Function),
|
|
638
|
+
fileId: feed.file.id,
|
|
639
|
+
permissions,
|
|
640
|
+
successCallback: expect.any(Function),
|
|
641
|
+
});
|
|
642
|
+
});
|
|
643
|
+
});
|
|
644
|
+
|
|
645
|
+
describe('fetchReplies()', () => {
|
|
646
|
+
beforeEach(() => {
|
|
647
|
+
feed.file = file;
|
|
648
|
+
feed.updateFeedItem = jest.fn();
|
|
649
|
+
});
|
|
650
|
+
|
|
651
|
+
test('should throw if no file id', () => {
|
|
652
|
+
expect(() => feed.fetchReplies({ permissions: { can_comment: true } })).toThrow(fileError);
|
|
653
|
+
});
|
|
654
|
+
|
|
655
|
+
test('should throw if no file permissions', () => {
|
|
656
|
+
expect(() => feed.fetchReplies({ id: '1234' })).toThrow(fileError);
|
|
657
|
+
});
|
|
658
|
+
|
|
659
|
+
test('should call the threaded comments api and call passed successCallback if itemType is comment', () => {
|
|
660
|
+
const commentId = '123';
|
|
661
|
+
const successCallback = jest.fn();
|
|
662
|
+
const errorCallback = jest.fn();
|
|
663
|
+
feed.fetchReplies(file, commentId, FEED_ITEM_TYPE_COMMENT, successCallback, errorCallback);
|
|
664
|
+
expect(feed.updateFeedItem).toBeCalledWith({ isRepliesLoading: true }, commentId);
|
|
665
|
+
expect(feed.threadedCommentsAPI.getCommentReplies).toBeCalledWith({
|
|
666
|
+
fileId: feed.file.id,
|
|
667
|
+
commentId,
|
|
668
|
+
permissions: feed.file.permissions,
|
|
669
|
+
successCallback: expect.any(Function),
|
|
670
|
+
errorCallback: expect.any(Function),
|
|
671
|
+
});
|
|
672
|
+
expect(successCallback).toBeCalled();
|
|
673
|
+
});
|
|
674
|
+
|
|
675
|
+
test('should call the annotations api and call passed successCallback if itemType is annotation', () => {
|
|
676
|
+
const annotationId = '1234';
|
|
677
|
+
const successCallback = jest.fn();
|
|
678
|
+
const errorCallback = jest.fn();
|
|
679
|
+
feed.fetchReplies(file, annotationId, FEED_ITEM_TYPE_ANNOTATION, successCallback, errorCallback);
|
|
680
|
+
expect(feed.updateFeedItem).toBeCalledWith({ isRepliesLoading: true }, annotationId);
|
|
681
|
+
expect(feed.annotationsAPI.getAnnotationReplies).toBeCalledWith(
|
|
682
|
+
feed.file.id,
|
|
683
|
+
annotationId,
|
|
684
|
+
feed.file.permissions,
|
|
685
|
+
expect.any(Function),
|
|
686
|
+
expect.any(Function),
|
|
687
|
+
);
|
|
688
|
+
expect(successCallback).toBeCalled();
|
|
689
|
+
});
|
|
690
|
+
});
|
|
691
|
+
|
|
587
692
|
describe('Fetching Base Items', () => {
|
|
588
693
|
beforeEach(() => {
|
|
589
694
|
feed.file = file;
|
|
@@ -596,6 +701,18 @@ describe('api/Feed', () => {
|
|
|
596
701
|
expect(versionItems instanceof Promise).toBeTruthy();
|
|
597
702
|
expect(feed.versionsAPI.getVersions).toBeCalled();
|
|
598
703
|
});
|
|
704
|
+
|
|
705
|
+
test('should call the versions api with the correct fields', () => {
|
|
706
|
+
feed.fetchVersions();
|
|
707
|
+
expect(feed.versionsAPI.getVersions).toBeCalledWith(
|
|
708
|
+
file.id,
|
|
709
|
+
expect.any(Function),
|
|
710
|
+
expect.any(Function),
|
|
711
|
+
undefined,
|
|
712
|
+
undefined,
|
|
713
|
+
FEED_FILE_VERSIONS_FIELDS_TO_FETCH,
|
|
714
|
+
);
|
|
715
|
+
});
|
|
599
716
|
});
|
|
600
717
|
|
|
601
718
|
describe('fetchCurrentVersion()', () => {
|
|
@@ -663,7 +780,7 @@ describe('api/Feed', () => {
|
|
|
663
780
|
successCb,
|
|
664
781
|
);
|
|
665
782
|
expect(feed.tasksNewAPI.getTask).toBeCalled();
|
|
666
|
-
expect(feed.updateFeedItem).toBeCalledWith({ isPending: false }, taskId);
|
|
783
|
+
expect(feed.updateFeedItem).toBeCalledWith({ ...mockTask, isPending: false }, taskId);
|
|
667
784
|
expect(successCb).toBeCalled();
|
|
668
785
|
});
|
|
669
786
|
});
|
|
@@ -919,6 +1036,96 @@ describe('api/Feed', () => {
|
|
|
919
1036
|
});
|
|
920
1037
|
});
|
|
921
1038
|
|
|
1039
|
+
describe('updateThreadedComment()', () => {
|
|
1040
|
+
beforeEach(() => {
|
|
1041
|
+
feed.updateFeedItem = jest.fn();
|
|
1042
|
+
});
|
|
1043
|
+
|
|
1044
|
+
test('should throw if no file id', () => {
|
|
1045
|
+
expect(() => feed.updateThreadedComment({})).toThrow(fileError);
|
|
1046
|
+
});
|
|
1047
|
+
|
|
1048
|
+
test('should throw if no text or status', () => {
|
|
1049
|
+
expect(() =>
|
|
1050
|
+
feed.updateThreadedComment(
|
|
1051
|
+
file,
|
|
1052
|
+
'123',
|
|
1053
|
+
undefined,
|
|
1054
|
+
undefined,
|
|
1055
|
+
{ can_delete: true },
|
|
1056
|
+
undefined,
|
|
1057
|
+
jest.fn(),
|
|
1058
|
+
jest.fn(),
|
|
1059
|
+
),
|
|
1060
|
+
).toThrowError();
|
|
1061
|
+
});
|
|
1062
|
+
|
|
1063
|
+
describe('should call the threaded comments api and update the feed items', () => {
|
|
1064
|
+
test.each`
|
|
1065
|
+
testText | testStatus | expected
|
|
1066
|
+
${'hello'} | ${undefined} | ${{ message: 'hello' }}
|
|
1067
|
+
${undefined} | ${'open'} | ${{ status: 'open' }}
|
|
1068
|
+
${'hello'} | ${'open'} | ${{ message: 'hello', status: 'open' }}
|
|
1069
|
+
`('given text=$testText and status=$testStatus', ({ testText, testStatus, expected }) => {
|
|
1070
|
+
const successCallback = jest.fn();
|
|
1071
|
+
const errorCallback = jest.fn();
|
|
1072
|
+
const comment = {
|
|
1073
|
+
id: '1',
|
|
1074
|
+
permissions: { can_edit: true },
|
|
1075
|
+
};
|
|
1076
|
+
feed.updateThreadedComment(
|
|
1077
|
+
file,
|
|
1078
|
+
comment.id,
|
|
1079
|
+
testText,
|
|
1080
|
+
testStatus,
|
|
1081
|
+
comment.permissions,
|
|
1082
|
+
successCallback,
|
|
1083
|
+
errorCallback,
|
|
1084
|
+
);
|
|
1085
|
+
expect(feed.threadedCommentsAPI.updateComment).toBeCalledWith({
|
|
1086
|
+
fileId: file.id,
|
|
1087
|
+
commentId: comment.id,
|
|
1088
|
+
permissions: comment.permissions,
|
|
1089
|
+
...expected,
|
|
1090
|
+
successCallback: expect.any(Function),
|
|
1091
|
+
errorCallback: expect.any(Function),
|
|
1092
|
+
});
|
|
1093
|
+
expect(feed.updateFeedItem).toBeCalled();
|
|
1094
|
+
expect(successCallback).toBeCalled();
|
|
1095
|
+
});
|
|
1096
|
+
});
|
|
1097
|
+
});
|
|
1098
|
+
|
|
1099
|
+
describe('updateReply()', () => {
|
|
1100
|
+
test('should throw if no file id', () => {
|
|
1101
|
+
expect(() => feed.updateReply({})).toThrow(fileError);
|
|
1102
|
+
});
|
|
1103
|
+
|
|
1104
|
+
test('should call the threaded comments api and update the feed items', () => {
|
|
1105
|
+
feed.updateReplyItem = jest.fn();
|
|
1106
|
+
const successCallback = jest.fn();
|
|
1107
|
+
const errorCallback = jest.fn();
|
|
1108
|
+
const parentId = '123';
|
|
1109
|
+
const text = 'abc';
|
|
1110
|
+
const reply = {
|
|
1111
|
+
id: '1',
|
|
1112
|
+
permissions: { can_edit: true },
|
|
1113
|
+
};
|
|
1114
|
+
feed.updateReply(file, reply.id, parentId, text, reply.permissions, successCallback, errorCallback);
|
|
1115
|
+
expect(feed.threadedCommentsAPI.updateComment).toBeCalledWith({
|
|
1116
|
+
fileId: file.id,
|
|
1117
|
+
commentId: reply.id,
|
|
1118
|
+
permissions: reply.permissions,
|
|
1119
|
+
message: text,
|
|
1120
|
+
status: undefined,
|
|
1121
|
+
successCallback: expect.any(Function),
|
|
1122
|
+
errorCallback: expect.any(Function),
|
|
1123
|
+
});
|
|
1124
|
+
expect(feed.updateReplyItem).toBeCalled();
|
|
1125
|
+
expect(successCallback).toBeCalled();
|
|
1126
|
+
});
|
|
1127
|
+
});
|
|
1128
|
+
|
|
922
1129
|
describe('deleteComment()', () => {
|
|
923
1130
|
beforeEach(() => {
|
|
924
1131
|
feed.updateFeedItem = jest.fn();
|
|
@@ -930,12 +1137,87 @@ describe('api/Feed', () => {
|
|
|
930
1137
|
});
|
|
931
1138
|
|
|
932
1139
|
test('should call the comments api and if successful, the success callback', () => {
|
|
933
|
-
|
|
934
|
-
|
|
1140
|
+
const successCallback = jest.fn();
|
|
1141
|
+
const errorCallback = jest.fn();
|
|
1142
|
+
const comment = {
|
|
1143
|
+
id: '1',
|
|
1144
|
+
permissions: { can_edit: true },
|
|
1145
|
+
};
|
|
1146
|
+
|
|
1147
|
+
feed.deleteComment(file, comment.id, comment.permissions, successCallback, errorCallback);
|
|
1148
|
+
expect(feed.commentsAPI.deleteComment).toBeCalledWith({
|
|
1149
|
+
file,
|
|
1150
|
+
commentId: comment.id,
|
|
1151
|
+
permissions: comment.permissions,
|
|
1152
|
+
successCallback: expect.any(Function),
|
|
1153
|
+
errorCallback: expect.any(Function),
|
|
1154
|
+
});
|
|
935
1155
|
expect(feed.deleteFeedItem).toBeCalled();
|
|
936
1156
|
});
|
|
937
1157
|
});
|
|
938
1158
|
|
|
1159
|
+
describe('deleteThreadedComment()', () => {
|
|
1160
|
+
beforeEach(() => {
|
|
1161
|
+
feed.updateFeedItem = jest.fn();
|
|
1162
|
+
feed.deleteFeedItem = jest.fn();
|
|
1163
|
+
});
|
|
1164
|
+
|
|
1165
|
+
test('should throw if no file id', () => {
|
|
1166
|
+
expect(() => feed.deleteComment({})).toThrow(fileError);
|
|
1167
|
+
});
|
|
1168
|
+
|
|
1169
|
+
test('should call the threaded comments api and if successful, the success callback', () => {
|
|
1170
|
+
const successCallback = jest.fn();
|
|
1171
|
+
const errorCallback = jest.fn();
|
|
1172
|
+
const comment = {
|
|
1173
|
+
id: '1',
|
|
1174
|
+
permissions: { can_edit: true },
|
|
1175
|
+
};
|
|
1176
|
+
|
|
1177
|
+
feed.deleteThreadedComment(file, comment.id, comment.permissions, true, successCallback, errorCallback);
|
|
1178
|
+
expect(feed.threadedCommentsAPI.deleteComment).toBeCalledWith({
|
|
1179
|
+
fileId: file.id,
|
|
1180
|
+
commentId: comment.id,
|
|
1181
|
+
permissions: comment.permissions,
|
|
1182
|
+
successCallback: expect.any(Function),
|
|
1183
|
+
errorCallback: expect.any(Function),
|
|
1184
|
+
});
|
|
1185
|
+
expect(feed.deleteFeedItem).toBeCalled();
|
|
1186
|
+
});
|
|
1187
|
+
});
|
|
1188
|
+
|
|
1189
|
+
describe('deleteReply()', () => {
|
|
1190
|
+
beforeEach(() => {
|
|
1191
|
+
feed.updateReplyItem = jest.fn();
|
|
1192
|
+
feed.deleteReplyItem = jest.fn();
|
|
1193
|
+
});
|
|
1194
|
+
|
|
1195
|
+
test('should throw if no file id', () => {
|
|
1196
|
+
expect(() => feed.deleteReply({})).toThrow(fileError);
|
|
1197
|
+
});
|
|
1198
|
+
|
|
1199
|
+
test('should call the threaded comments api and if successful, the success callback', () => {
|
|
1200
|
+
const successCallback = jest.fn();
|
|
1201
|
+
const errorCallback = jest.fn();
|
|
1202
|
+
const reply = {
|
|
1203
|
+
id: '1',
|
|
1204
|
+
permissions: { can_edit: true },
|
|
1205
|
+
};
|
|
1206
|
+
const parentId = '123';
|
|
1207
|
+
|
|
1208
|
+
feed.deleteReply(file, reply.id, parentId, reply.permissions, true, successCallback, errorCallback);
|
|
1209
|
+
expect(feed.updateReplyItem).toBeCalledWith({ isPending: true }, parentId, reply.id);
|
|
1210
|
+
expect(feed.threadedCommentsAPI.deleteComment).toBeCalledWith({
|
|
1211
|
+
fileId: file.id,
|
|
1212
|
+
commentId: reply.id,
|
|
1213
|
+
permissions: reply.permissions,
|
|
1214
|
+
successCallback: expect.any(Function),
|
|
1215
|
+
errorCallback: expect.any(Function),
|
|
1216
|
+
});
|
|
1217
|
+
expect(feed.deleteReplyItem).toBeCalled();
|
|
1218
|
+
});
|
|
1219
|
+
});
|
|
1220
|
+
|
|
939
1221
|
describe('deleteCommentErrorCallback()', () => {
|
|
940
1222
|
const e = new Error('foo');
|
|
941
1223
|
|
|
@@ -953,6 +1235,20 @@ describe('api/Feed', () => {
|
|
|
953
1235
|
});
|
|
954
1236
|
});
|
|
955
1237
|
|
|
1238
|
+
describe('deleteReplyErrorCallback()', () => {
|
|
1239
|
+
test('should update the reply item and call the error callback', () => {
|
|
1240
|
+
feed.updateReplyItem = jest.fn();
|
|
1241
|
+
feed.createFeedError = jest.fn().mockReturnValue(error);
|
|
1242
|
+
feed.feedErrorCallback = jest.fn();
|
|
1243
|
+
const e = new Error('foo');
|
|
1244
|
+
const replyId = '12';
|
|
1245
|
+
const parentId = '123';
|
|
1246
|
+
feed.deleteReplyErrorCallback(e, errorCode, replyId, parentId);
|
|
1247
|
+
expect(feed.updateReplyItem).toBeCalledWith(error, parentId, replyId);
|
|
1248
|
+
expect(feed.feedErrorCallback).toBeCalledWith(true, e, errorCode);
|
|
1249
|
+
});
|
|
1250
|
+
});
|
|
1251
|
+
|
|
956
1252
|
describe('deleteAppActivity()', () => {
|
|
957
1253
|
beforeEach(() => {
|
|
958
1254
|
feed.updateFeedItem = jest.fn();
|
|
@@ -1015,6 +1311,37 @@ describe('api/Feed', () => {
|
|
|
1015
1311
|
});
|
|
1016
1312
|
});
|
|
1017
1313
|
|
|
1314
|
+
describe('deleteReplyItem()', () => {
|
|
1315
|
+
beforeEach(() => {
|
|
1316
|
+
feed.file = file;
|
|
1317
|
+
feed.getCachedItems = jest.fn().mockReturnValue({
|
|
1318
|
+
errors: [],
|
|
1319
|
+
items: cloneDeep(mockThreadedComments),
|
|
1320
|
+
});
|
|
1321
|
+
});
|
|
1322
|
+
|
|
1323
|
+
test('should delete the feed item and call success callback', () => {
|
|
1324
|
+
const replyId = '21';
|
|
1325
|
+
const parentId = '20';
|
|
1326
|
+
const successCallback = jest.fn();
|
|
1327
|
+
feed.setCachedItems = jest.fn();
|
|
1328
|
+
feed.deleteReplyItem(replyId, parentId, successCallback);
|
|
1329
|
+
const expectedFeedItems = cloneDeep(mockThreadedComments);
|
|
1330
|
+
expectedFeedItems[0].replies = [];
|
|
1331
|
+
expect(feed.setCachedItems).toBeCalledWith(feed.file.id, expectedFeedItems);
|
|
1332
|
+
expect(successCallback).toBeCalledWith(replyId, parentId);
|
|
1333
|
+
});
|
|
1334
|
+
|
|
1335
|
+
test('not call the success callback if Feed is destroyed', () => {
|
|
1336
|
+
const replyId = '1234';
|
|
1337
|
+
const parentId = '123';
|
|
1338
|
+
const successCallback = jest.fn();
|
|
1339
|
+
feed.isDestroyed = jest.fn().mockReturnValue(true);
|
|
1340
|
+
feed.deleteReplyItem(replyId, parentId, successCallback);
|
|
1341
|
+
expect(successCallback).not.toBeCalled();
|
|
1342
|
+
});
|
|
1343
|
+
});
|
|
1344
|
+
|
|
1018
1345
|
describe('feedErrorCallback()', () => {
|
|
1019
1346
|
const code = 'foo';
|
|
1020
1347
|
const e = new Error('bar');
|
|
@@ -1089,6 +1416,36 @@ describe('api/Feed', () => {
|
|
|
1089
1416
|
});
|
|
1090
1417
|
});
|
|
1091
1418
|
|
|
1419
|
+
describe('addPendingReply()', () => {
|
|
1420
|
+
test('should create a comment and add it to the replies array of the parent item in feed with populated cache', () => {
|
|
1421
|
+
const feedComments = cloneDeep(threadedCommentsFormatted);
|
|
1422
|
+
const { id: parentId } = feedComments[0];
|
|
1423
|
+
const commentBase = {
|
|
1424
|
+
id: '1234',
|
|
1425
|
+
tagged_message: 'abc',
|
|
1426
|
+
type: FEED_ITEM_TYPE_COMMENT,
|
|
1427
|
+
};
|
|
1428
|
+
|
|
1429
|
+
feed.file = file;
|
|
1430
|
+
feed.setCachedItems = jest.fn();
|
|
1431
|
+
feed.getCachedItems = jest.fn().mockReturnValue({
|
|
1432
|
+
errors: [],
|
|
1433
|
+
items: feedComments,
|
|
1434
|
+
});
|
|
1435
|
+
|
|
1436
|
+
const reply = feed.addPendingReply(parentId, user, commentBase);
|
|
1437
|
+
|
|
1438
|
+
const updatedFeedComments = cloneDeep(threadedCommentsFormatted);
|
|
1439
|
+
updatedFeedComments[0].replies = [...updatedFeedComments[0].replies, reply];
|
|
1440
|
+
|
|
1441
|
+
expect(typeof reply.created_at).toBe('string');
|
|
1442
|
+
expect(reply.created_by).toBe(user);
|
|
1443
|
+
expect(typeof reply.modified_at).toBe('string');
|
|
1444
|
+
expect(reply.isPending).toBe(true);
|
|
1445
|
+
expect(feed.setCachedItems).toBeCalledWith(file.id, updatedFeedComments);
|
|
1446
|
+
});
|
|
1447
|
+
});
|
|
1448
|
+
|
|
1092
1449
|
describe('createCommentSuccessCallback()', () => {
|
|
1093
1450
|
let successCb;
|
|
1094
1451
|
beforeEach(() => {
|
|
@@ -1182,6 +1539,36 @@ describe('api/Feed', () => {
|
|
|
1182
1539
|
});
|
|
1183
1540
|
});
|
|
1184
1541
|
|
|
1542
|
+
describe('updateReplyItem()', () => {
|
|
1543
|
+
test('should throw if no file id', () => {
|
|
1544
|
+
feed.file = {};
|
|
1545
|
+
expect(() => feed.updateReplyItem({}, '123', '456')).toThrow(fileError);
|
|
1546
|
+
});
|
|
1547
|
+
|
|
1548
|
+
test('should update the cache with the updated reply', () => {
|
|
1549
|
+
const feedComments = cloneDeep(threadedCommentsFormatted);
|
|
1550
|
+
const { id: parentId, replies } = feedComments[0];
|
|
1551
|
+
const updates = {
|
|
1552
|
+
tagged_message: 'updated',
|
|
1553
|
+
isPending: true,
|
|
1554
|
+
};
|
|
1555
|
+
const { id } = replies[0];
|
|
1556
|
+
|
|
1557
|
+
feed.setCachedItems = jest.fn();
|
|
1558
|
+
feed.getCachedItems = jest.fn().mockReturnValue({
|
|
1559
|
+
errors: [],
|
|
1560
|
+
items: feedComments,
|
|
1561
|
+
});
|
|
1562
|
+
|
|
1563
|
+
const updatedFeedComments = cloneDeep(feedComments);
|
|
1564
|
+
updatedFeedComments[0].replies[0] = { ...updatedFeedComments[0].replies[0], ...updates };
|
|
1565
|
+
|
|
1566
|
+
feed.file = file;
|
|
1567
|
+
feed.updateReplyItem(updates, parentId, id);
|
|
1568
|
+
expect(feed.setCachedItems).toBeCalledWith(file.id, updatedFeedComments);
|
|
1569
|
+
});
|
|
1570
|
+
});
|
|
1571
|
+
|
|
1185
1572
|
describe('createComment()', () => {
|
|
1186
1573
|
let successCb;
|
|
1187
1574
|
let errorCb;
|
|
@@ -1210,14 +1597,66 @@ describe('api/Feed', () => {
|
|
|
1210
1597
|
expect(feed.addPendingItem).toBeCalledWith(file.id, currentUser, {
|
|
1211
1598
|
id: 'uniqueId',
|
|
1212
1599
|
tagged_message: text,
|
|
1213
|
-
type:
|
|
1600
|
+
type: FEED_ITEM_TYPE_COMMENT,
|
|
1214
1601
|
});
|
|
1215
1602
|
});
|
|
1216
1603
|
|
|
1217
1604
|
test('should create the comment and invoke the success callback', done => {
|
|
1218
1605
|
feed.createComment(file, currentUser, text, hasMention, successCb, errorCb);
|
|
1219
1606
|
setImmediate(() => {
|
|
1220
|
-
expect(feed.commentsAPI.createComment).
|
|
1607
|
+
expect(feed.commentsAPI.createComment).toBeCalledWith({
|
|
1608
|
+
file,
|
|
1609
|
+
taggedMessage: text,
|
|
1610
|
+
successCallback: expect.any(Function),
|
|
1611
|
+
errorCallback: expect.any(Function),
|
|
1612
|
+
});
|
|
1613
|
+
expect(feed.createCommentSuccessCallback).toBeCalled();
|
|
1614
|
+
expect(feed.createCommentErrorCallback).not.toBeCalled();
|
|
1615
|
+
done();
|
|
1616
|
+
});
|
|
1617
|
+
});
|
|
1618
|
+
});
|
|
1619
|
+
|
|
1620
|
+
describe('createThreadedComment()', () => {
|
|
1621
|
+
let successCb;
|
|
1622
|
+
let errorCb;
|
|
1623
|
+
const currentUser = {
|
|
1624
|
+
id: 'bar',
|
|
1625
|
+
};
|
|
1626
|
+
const text = 'textfoo';
|
|
1627
|
+
|
|
1628
|
+
beforeEach(() => {
|
|
1629
|
+
successCb = jest.fn();
|
|
1630
|
+
errorCb = jest.fn();
|
|
1631
|
+
feed.addPendingItem = jest.fn();
|
|
1632
|
+
feed.createCommentSuccessCallback = jest.fn();
|
|
1633
|
+
feed.createCommentErrorCallback = jest.fn();
|
|
1634
|
+
feed.createFeedError = jest.fn().mockReturnValue('foo');
|
|
1635
|
+
});
|
|
1636
|
+
|
|
1637
|
+
test('should throw if no file id', () => {
|
|
1638
|
+
expect(() => feed.createComment({}, currentUser, text, true, successCb, errorCb)).toThrow(fileError);
|
|
1639
|
+
});
|
|
1640
|
+
|
|
1641
|
+
test('should create a pending item', () => {
|
|
1642
|
+
feed.createComment(file, currentUser, text, true, successCb, errorCb);
|
|
1643
|
+
|
|
1644
|
+
expect(feed.addPendingItem).toBeCalledWith(file.id, currentUser, {
|
|
1645
|
+
id: 'uniqueId',
|
|
1646
|
+
tagged_message: text,
|
|
1647
|
+
type: FEED_ITEM_TYPE_COMMENT,
|
|
1648
|
+
});
|
|
1649
|
+
});
|
|
1650
|
+
|
|
1651
|
+
test('should create the comment using threaded comments api and invoke the success callback', done => {
|
|
1652
|
+
feed.createThreadedComment(file, currentUser, text, true, successCb, errorCb);
|
|
1653
|
+
setImmediate(() => {
|
|
1654
|
+
expect(feed.threadedCommentsAPI.createComment).toBeCalledWith({
|
|
1655
|
+
file,
|
|
1656
|
+
message: text,
|
|
1657
|
+
successCallback: expect.any(Function),
|
|
1658
|
+
errorCallback: expect.any(Function),
|
|
1659
|
+
});
|
|
1221
1660
|
expect(feed.createCommentSuccessCallback).toBeCalled();
|
|
1222
1661
|
expect(feed.createCommentErrorCallback).not.toBeCalled();
|
|
1223
1662
|
done();
|
|
@@ -1225,6 +1664,94 @@ describe('api/Feed', () => {
|
|
|
1225
1664
|
});
|
|
1226
1665
|
});
|
|
1227
1666
|
|
|
1667
|
+
describe('createReply()', () => {
|
|
1668
|
+
test('should throw if no file id', () => {
|
|
1669
|
+
const currentUser = {
|
|
1670
|
+
id: '123',
|
|
1671
|
+
};
|
|
1672
|
+
|
|
1673
|
+
expect(() =>
|
|
1674
|
+
feed.createReply({}, currentUser, '123', FEED_ITEM_TYPE_COMMENT, 'abc', jest.fn(), jest.fn()),
|
|
1675
|
+
).toThrow(fileError);
|
|
1676
|
+
});
|
|
1677
|
+
|
|
1678
|
+
test('should create a pending reply', () => {
|
|
1679
|
+
feed.addPendingReply = jest.fn();
|
|
1680
|
+
const successCb = jest.fn();
|
|
1681
|
+
const errorCb = jest.fn();
|
|
1682
|
+
const parentId = '123';
|
|
1683
|
+
const parentType = FEED_ITEM_TYPE_COMMENT;
|
|
1684
|
+
const text = 'abc';
|
|
1685
|
+
const currentUser = {
|
|
1686
|
+
id: '123',
|
|
1687
|
+
};
|
|
1688
|
+
|
|
1689
|
+
feed.createReply(file, currentUser, parentId, parentType, text, successCb, errorCb);
|
|
1690
|
+
|
|
1691
|
+
expect(feed.addPendingReply).toBeCalledWith(parentId, currentUser, {
|
|
1692
|
+
id: 'uniqueId',
|
|
1693
|
+
tagged_message: text,
|
|
1694
|
+
type: FEED_ITEM_TYPE_COMMENT,
|
|
1695
|
+
});
|
|
1696
|
+
});
|
|
1697
|
+
|
|
1698
|
+
test('given parentType=annotation, should create the reply using annotationsAPI and invoke the success callback', done => {
|
|
1699
|
+
feed.createReplySuccessCallback = jest.fn();
|
|
1700
|
+
feed.createReplyErrorCallback = jest.fn();
|
|
1701
|
+
const successCb = jest.fn();
|
|
1702
|
+
const errorCb = jest.fn();
|
|
1703
|
+
const annotationId = '123';
|
|
1704
|
+
const parentType = FEED_ITEM_TYPE_ANNOTATION;
|
|
1705
|
+
const text = 'abc';
|
|
1706
|
+
const currentUser = {
|
|
1707
|
+
id: '123',
|
|
1708
|
+
};
|
|
1709
|
+
|
|
1710
|
+
feed.createReply(file, currentUser, annotationId, parentType, text, successCb, errorCb);
|
|
1711
|
+
setImmediate(() => {
|
|
1712
|
+
expect(feed.annotationsAPI.createAnnotationReply).toBeCalledWith(
|
|
1713
|
+
file.id,
|
|
1714
|
+
annotationId,
|
|
1715
|
+
file.permissions,
|
|
1716
|
+
text,
|
|
1717
|
+
expect.any(Function),
|
|
1718
|
+
expect.any(Function),
|
|
1719
|
+
);
|
|
1720
|
+
expect(feed.createReplySuccessCallback).toBeCalled();
|
|
1721
|
+
expect(feed.createReplyErrorCallback).not.toBeCalled();
|
|
1722
|
+
done();
|
|
1723
|
+
});
|
|
1724
|
+
});
|
|
1725
|
+
|
|
1726
|
+
test('given parentType=comment, should create the reply using threadedCommentsAPI and invoke the success callback', done => {
|
|
1727
|
+
feed.createReplySuccessCallback = jest.fn();
|
|
1728
|
+
feed.createReplyErrorCallback = jest.fn();
|
|
1729
|
+
const successCb = jest.fn();
|
|
1730
|
+
const errorCb = jest.fn();
|
|
1731
|
+
const commentId = '123';
|
|
1732
|
+
const parentType = FEED_ITEM_TYPE_COMMENT;
|
|
1733
|
+
const text = 'abc';
|
|
1734
|
+
const currentUser = {
|
|
1735
|
+
id: '123',
|
|
1736
|
+
};
|
|
1737
|
+
|
|
1738
|
+
feed.createReply(file, currentUser, commentId, parentType, text, successCb, errorCb);
|
|
1739
|
+
setImmediate(() => {
|
|
1740
|
+
expect(feed.threadedCommentsAPI.createCommentReply).toBeCalledWith({
|
|
1741
|
+
fileId: file.id,
|
|
1742
|
+
commentId,
|
|
1743
|
+
permissions: file.permissions,
|
|
1744
|
+
message: text,
|
|
1745
|
+
successCallback: expect.any(Function),
|
|
1746
|
+
errorCallback: expect.any(Function),
|
|
1747
|
+
});
|
|
1748
|
+
expect(feed.createReplySuccessCallback).toBeCalled();
|
|
1749
|
+
expect(feed.createReplyErrorCallback).not.toBeCalled();
|
|
1750
|
+
done();
|
|
1751
|
+
});
|
|
1752
|
+
});
|
|
1753
|
+
});
|
|
1754
|
+
|
|
1228
1755
|
describe('createCommentErrorCallback()', () => {
|
|
1229
1756
|
const message = 'foo';
|
|
1230
1757
|
const id = 'uniqueId';
|
|
@@ -1254,12 +1781,14 @@ describe('api/Feed', () => {
|
|
|
1254
1781
|
describe('destroy()', () => {
|
|
1255
1782
|
let annotationFn;
|
|
1256
1783
|
let commentFn;
|
|
1784
|
+
let theadedCommentFn;
|
|
1257
1785
|
let versionFn;
|
|
1258
1786
|
let taskFn;
|
|
1259
1787
|
|
|
1260
1788
|
beforeEach(() => {
|
|
1261
1789
|
annotationFn = jest.fn();
|
|
1262
1790
|
commentFn = jest.fn();
|
|
1791
|
+
theadedCommentFn = jest.fn();
|
|
1263
1792
|
versionFn = jest.fn();
|
|
1264
1793
|
taskFn = jest.fn();
|
|
1265
1794
|
|
|
@@ -1275,6 +1804,9 @@ describe('api/Feed', () => {
|
|
|
1275
1804
|
feed.commentsAPI = {
|
|
1276
1805
|
destroy: commentFn,
|
|
1277
1806
|
};
|
|
1807
|
+
feed.threadedCommentsAPI = {
|
|
1808
|
+
destroy: theadedCommentFn,
|
|
1809
|
+
};
|
|
1278
1810
|
});
|
|
1279
1811
|
|
|
1280
1812
|
test('should destroy the APIs', () => {
|
|
@@ -1333,7 +1865,7 @@ describe('api/Feed', () => {
|
|
|
1333
1865
|
const expectedAnnotation = {
|
|
1334
1866
|
created_by: user,
|
|
1335
1867
|
id: '123',
|
|
1336
|
-
type:
|
|
1868
|
+
type: FEED_ITEM_TYPE_ANNOTATION,
|
|
1337
1869
|
};
|
|
1338
1870
|
|
|
1339
1871
|
feed.addAnnotation(file, user, {}, '123', true);
|
|
@@ -1367,31 +1899,81 @@ describe('api/Feed', () => {
|
|
|
1367
1899
|
|
|
1368
1900
|
test('should throw if file does not have an id', () => {
|
|
1369
1901
|
expect(() =>
|
|
1370
|
-
feed.updateAnnotation({}, annotationId, text, permissions, successCallback, errorCallback),
|
|
1902
|
+
feed.updateAnnotation({}, annotationId, text, undefined, permissions, successCallback, errorCallback),
|
|
1371
1903
|
).toThrow(fileError);
|
|
1372
1904
|
});
|
|
1373
1905
|
|
|
1906
|
+
test('should throw if no text or status', () => {
|
|
1907
|
+
expect(() =>
|
|
1908
|
+
feed.updateAnnotation(
|
|
1909
|
+
file,
|
|
1910
|
+
annotationId,
|
|
1911
|
+
undefined,
|
|
1912
|
+
undefined,
|
|
1913
|
+
permissions,
|
|
1914
|
+
successCallback,
|
|
1915
|
+
errorCallback,
|
|
1916
|
+
),
|
|
1917
|
+
).toThrowError();
|
|
1918
|
+
});
|
|
1919
|
+
|
|
1374
1920
|
test('should set error callback and file', () => {
|
|
1375
|
-
feed.updateAnnotation(file, annotationId, text, permissions, successCallback, errorCallback);
|
|
1921
|
+
feed.updateAnnotation(file, annotationId, text, undefined, permissions, successCallback, errorCallback);
|
|
1376
1922
|
|
|
1377
1923
|
expect(feed.errorCallback).toEqual(errorCallback);
|
|
1378
1924
|
expect(feed.file).toEqual(file);
|
|
1379
1925
|
});
|
|
1380
1926
|
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1927
|
+
describe('should updateFeedItem with isPending set to true', () => {
|
|
1928
|
+
test.each`
|
|
1929
|
+
testText | testStatus | expected
|
|
1930
|
+
${'hello'} | ${undefined} | ${{ message: 'hello', isPending: true }}
|
|
1931
|
+
${undefined} | ${'open'} | ${{ status: 'open', isPending: true }}
|
|
1932
|
+
${'hello'} | ${'open'} | ${{ message: 'hello', status: 'open', isPending: true }}
|
|
1933
|
+
`('given text=$testText and status=$testStatus', ({ testText, testStatus, expected }) => {
|
|
1934
|
+
feed.updateFeedItem = jest.fn();
|
|
1935
|
+
feed.updateAnnotation(
|
|
1936
|
+
file,
|
|
1937
|
+
annotationId,
|
|
1938
|
+
testText,
|
|
1939
|
+
testStatus,
|
|
1940
|
+
permissions,
|
|
1941
|
+
successCallback,
|
|
1942
|
+
errorCallback,
|
|
1943
|
+
);
|
|
1384
1944
|
|
|
1385
|
-
|
|
1945
|
+
expect(feed.updateFeedItem).toBeCalledWith(expected, annotationId);
|
|
1946
|
+
});
|
|
1386
1947
|
});
|
|
1387
1948
|
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1949
|
+
describe('should call the updateAnnotation API and call updateFeedItem on success', () => {
|
|
1950
|
+
test.each`
|
|
1951
|
+
testText | testStatus | expected
|
|
1952
|
+
${'hello'} | ${undefined} | ${{ message: 'hello' }}
|
|
1953
|
+
${undefined} | ${'open'} | ${{ status: 'open' }}
|
|
1954
|
+
${'hello'} | ${'open'} | ${{ message: 'hello', status: 'open' }}
|
|
1955
|
+
`('given text=$testText and status=$testStatus', ({ testText, testStatus, expected }) => {
|
|
1956
|
+
feed.updateFeedItem = jest.fn();
|
|
1957
|
+
feed.updateAnnotation(
|
|
1958
|
+
file,
|
|
1959
|
+
annotationId,
|
|
1960
|
+
testText,
|
|
1961
|
+
testStatus,
|
|
1962
|
+
permissions,
|
|
1963
|
+
successCallback,
|
|
1964
|
+
errorCallback,
|
|
1965
|
+
);
|
|
1966
|
+
expect(feed.annotationsAPI.updateAnnotation).toBeCalledWith(
|
|
1967
|
+
file.id,
|
|
1968
|
+
annotationId,
|
|
1969
|
+
permissions,
|
|
1970
|
+
expected,
|
|
1971
|
+
expect.any(Function),
|
|
1972
|
+
expect.any(Function),
|
|
1973
|
+
);
|
|
1974
|
+
expect(feed.updateFeedItem).toBeCalled();
|
|
1975
|
+
expect(successCallback).toBeCalled();
|
|
1976
|
+
});
|
|
1395
1977
|
});
|
|
1396
1978
|
});
|
|
1397
1979
|
|
|
@@ -1413,6 +1995,37 @@ describe('api/Feed', () => {
|
|
|
1413
1995
|
});
|
|
1414
1996
|
});
|
|
1415
1997
|
|
|
1998
|
+
describe('updateReplyErrorCallback()', () => {
|
|
1999
|
+
test('should update the reply item and call the error callback', () => {
|
|
2000
|
+
feed.updateReplyItem = jest.fn();
|
|
2001
|
+
feed.createFeedError = jest.fn().mockReturnValue(error);
|
|
2002
|
+
feed.feedErrorCallback = jest.fn();
|
|
2003
|
+
const e = new Error('foo');
|
|
2004
|
+
const id = '1';
|
|
2005
|
+
const parentId = '123';
|
|
2006
|
+
feed.updateReplyErrorCallback(e, errorCode, id, parentId);
|
|
2007
|
+
|
|
2008
|
+
expect(feed.createFeedError).toBeCalledWith(messages.commentUpdateErrorMessage);
|
|
2009
|
+
expect(feed.updateReplyItem).toBeCalledWith(error, parentId, id);
|
|
2010
|
+
expect(feed.feedErrorCallback).toBeCalledWith(true, e, errorCode);
|
|
2011
|
+
});
|
|
2012
|
+
});
|
|
2013
|
+
|
|
2014
|
+
describe('fetchRepliesErrorCallback()', () => {
|
|
2015
|
+
test('should update the parent item and call the error callback', () => {
|
|
2016
|
+
feed.updateFeedItem = jest.fn();
|
|
2017
|
+
feed.createFeedError = jest.fn().mockReturnValue(error);
|
|
2018
|
+
feed.feedErrorCallback = jest.fn();
|
|
2019
|
+
const e = new Error('foo');
|
|
2020
|
+
const id = '1';
|
|
2021
|
+
feed.fetchRepliesErrorCallback(e, errorCode, id);
|
|
2022
|
+
|
|
2023
|
+
expect(feed.createFeedError).toBeCalledWith(messages.repliesFetchErrorMessage);
|
|
2024
|
+
expect(feed.updateFeedItem).toBeCalledWith(error, id);
|
|
2025
|
+
expect(feed.feedErrorCallback).toBeCalledWith(true, e, errorCode);
|
|
2026
|
+
});
|
|
2027
|
+
});
|
|
2028
|
+
|
|
1416
2029
|
describe('deleteAnnotation()', () => {
|
|
1417
2030
|
const annotationId = '123';
|
|
1418
2031
|
let successCallback;
|