box-ui-elements 16.0.0-beta.8 → 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 +180 -27
- package/es/api/Annotations.js.flow +150 -14
- 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 -69
- 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 -10
- 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/fill/UserSettings16.js +38 -0
- package/es/icon/fill/UserSettings16.js.flow +38 -0
- package/es/icon/fill/UserSettings16.js.map +1 -0
- package/es/icon/fill/UserSettings16.stories.js +13 -0
- package/es/icon/fill/UserSettings16.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/fill/UserSettings16.d.ts +13 -0
- package/es/src/icon/fill/UserSettings16.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 +150 -14
- 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 +217 -11
- package/src/api/__tests__/Feed.test.js +699 -86
- 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 -10
- 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/fill/UserSettings16.js.flow +38 -0
- package/src/icon/fill/UserSettings16.stories.tsx +13 -0
- package/src/icon/fill/UserSettings16.tsx +36 -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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/content-sidebar/ActivitySidebar.js"],"names":["React","debounce","flow","getProp","noop","FormattedMessage","ActivityFeed","AddTaskButton","API","messages","SidebarContent","WithAnnotatorContextProps","withAnnotatorContext","EVENT_DATA_READY","EVENT_JS_READY","getBadUserError","getBadItemError","mark","withAPIContext","withErrorBoundary","withFeatureConsumer","isFeatureEnabled","withLogger","withRouterAndRef","DEFAULT_COLLAB_DEBOUNCE","ERROR_CODE_FETCH_ACTIVITY","ORIGIN_ACTIVITY_SIDEBAR","SIDEBAR_VIEW_ACTIVITY","TASK_COMPLETION_RULE_ALL","activityFeedInlineError","inlineError","title","errorOccured","content","activityFeedItemApiError","MARK_NAME_DATA_LOADING","MARK_NAME_DATA_READY","MARK_NAME_JS_READY","ActivitySidebar","props","id","permissions","api","file","getFeedAPI","deleteAnnotation","deleteAnnotationSuccess","bind","feedErrorCallback","fetchFeedItems","text","updateAnnotation","feedSuccessCallback","e","code","contextInfo","errorCallback","message","assignees","taskType","dueAt","completionRule","onSuccess","onError","currentUser","state","successCallback","createTaskNew","task","onTaskDelete","deleteTaskNew","taskId","onTaskUpdate","updateTaskNew","taskAssignmentId","status","onTaskAssignmentUpdate","updateTaskCollaborator","onCommentDelete","deleteComment","comment","hasMention","onCommentUpdate","updateComment","onCommentCreate","createComment","deleteAppActivity","feedItems","fileId","logger","length","onDataReadyMetric","endMarkName","startMarkName","setState","activityFeedError","undefined","errors","Array","isArray","Error","showNotification","map","error","console","currentUserError","collaborators","entries","approverSelectorContacts","contactsLoaded","mentionSelectorContacts","searchStr","getCollaborators","getApproverContactsSuccessCallback","includeGroups","getMentionContactsSuccessCallback","maskError","errorHeader","currentUserErrorHeaderMessage","errorSubHeader","defaultErrorMaskSubHeaderMessage","userId","getUsersAPI","getAvatarUrlWithAccessToken","annotation","file_version","nextActiveAnnotationId","emitAnnotatorActiveChangeEvent","getAnnotationsMatchPath","getAnnotationsPath","history","location","onAnnotationSelect","annotationFileVersionId","currentFileVersionId","match","selectedFileVersionId","push","isDisabled","hasTasks","getApproverWithQuery","getAvatarUrl","createTask","onTaskModalClose","approvers","onReadyMetric","fetchCurrentUser","emitRemoveEvent","user","shouldDestroy","getUser","fetchCurrentUserSuccessCallback","fetchCurrentUserErrorCallback","shouldRefreshCache","features","shouldShowTasks","shouldShowVersions","hasVersions","shouldShowAppActivity","shouldShowAnnotations","fetchFeedItemsSuccessCallback","fetchFeedItemsErrorCallback","trim","getFileCollaboratorsAPI","getFileCollaborators","filter_term","include_groups","include_uploader_collabs","elementId","onVersionHistoryClick","getUserProfileUrl","activeFeedEntryId","activeFeedEntryType","onTaskView","renderAddTaskButton","sidebarActivityTitle","getMentionWithQuery","handleAnnotationDelete","handleAnnotationEdit","handleAnnotationSelect","updateTaskAssignment","deleteTask","updateTask","PureComponent","annotatorState","hasReplies","onTaskCreate","onVersionChange","ActivitySidebarComponent"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Activity feed sidebar component\n * @author Box\n */\n\nimport * as React from 'react';\nimport debounce from 'lodash/debounce';\nimport flow from 'lodash/flow';\nimport getProp from 'lodash/get';\nimport noop from 'lodash/noop';\nimport { FormattedMessage } from 'react-intl';\nimport { type ContextRouter } from 'react-router-dom';\nimport ActivityFeed from './activity-feed';\nimport AddTaskButton from './AddTaskButton';\nimport API from '../../api';\nimport messages from '../common/messages';\nimport SidebarContent from './SidebarContent';\nimport { WithAnnotatorContextProps, withAnnotatorContext } from '../common/annotator-context';\nimport { EVENT_DATA_READY, EVENT_JS_READY } from '../common/logger/constants';\nimport { getBadUserError, getBadItemError } from '../../utils/error';\nimport { mark } from '../../utils/performance';\nimport { withAPIContext } from '../common/api-context';\nimport { withErrorBoundary } from '../common/error-boundary';\nimport { withFeatureConsumer, isFeatureEnabled } from '../common/feature-checking';\nimport { withLogger } from '../common/logger';\nimport { withRouterAndRef } from '../common/routing';\nimport {\n DEFAULT_COLLAB_DEBOUNCE,\n ERROR_CODE_FETCH_ACTIVITY,\n ORIGIN_ACTIVITY_SIDEBAR,\n SIDEBAR_VIEW_ACTIVITY,\n TASK_COMPLETION_RULE_ALL,\n} from '../../constants';\nimport type {\n TaskCompletionRule,\n TaskType,\n TaskNew,\n TaskUpdatePayload,\n TaskCollabStatus,\n} from '../../common/types/tasks';\nimport type { Annotation, AnnotationPermission, FocusableFeedItemType, FeedItems } from '../../common/types/feed';\nimport type { ElementsErrorCallback, ErrorContextProps, ElementsXhrError } from '../../common/types/api';\nimport type { WithLoggerProps } from '../../common/types/logging';\nimport type { SelectorItems, User, UserMini, GroupMini, BoxItem, BoxItemPermission } from '../../common/types/core';\nimport type { GetProfileUrlCallback } from '../common/flowTypes';\nimport type { Translations, Collaborators, Errors } from './flowTypes';\nimport type { FeatureConfig } from '../common/feature-checking';\nimport './ActivitySidebar.scss';\n\ntype ExternalProps = {\n activeFeedEntryId?: string,\n activeFeedEntryType?: FocusableFeedItemType,\n currentUser?: User,\n getUserProfileUrl?: GetProfileUrlCallback,\n hasReplies?: boolean,\n hasTasks?: boolean,\n hasVersions?: boolean,\n onCommentCreate: Function,\n onCommentDelete: (comment: Comment) => any,\n onCommentUpdate: () => any,\n onTaskAssignmentUpdate: Function,\n onTaskCreate: Function,\n onTaskDelete: (id: string) => any,\n onTaskUpdate: () => any,\n onTaskView: (id: string, isCreator: boolean) => any,\n} & ErrorContextProps &\n WithAnnotatorContextProps;\n\ntype PropsWithoutContext = {\n elementId: string,\n file: BoxItem,\n hasSidebarInitialized?: boolean,\n isDisabled: boolean,\n onAnnotationSelect: Function,\n onVersionChange: Function,\n onVersionHistoryClick?: Function,\n translations?: Translations,\n} & ExternalProps &\n WithLoggerProps &\n ContextRouter;\n\ntype Props = {\n api: API,\n features: FeatureConfig,\n} & PropsWithoutContext;\n\ntype State = {\n activityFeedError?: Errors,\n approverSelectorContacts: SelectorItems<UserMini | GroupMini>,\n contactsLoaded?: boolean,\n currentUser?: User,\n currentUserError?: Errors,\n feedItems?: FeedItems,\n mentionSelectorContacts?: SelectorItems<UserMini>,\n};\n\nexport const activityFeedInlineError: Errors = {\n inlineError: {\n title: messages.errorOccured,\n content: messages.activityFeedItemApiError,\n },\n};\n\nconst MARK_NAME_DATA_LOADING = `${ORIGIN_ACTIVITY_SIDEBAR}_data_loading`;\nconst MARK_NAME_DATA_READY = `${ORIGIN_ACTIVITY_SIDEBAR}_${EVENT_DATA_READY}`;\nconst MARK_NAME_JS_READY = `${ORIGIN_ACTIVITY_SIDEBAR}_${EVENT_JS_READY}`;\n\nmark(MARK_NAME_JS_READY);\n\nclass ActivitySidebar extends React.PureComponent<Props, State> {\n static defaultProps = {\n annotatorState: {},\n emitAnnotatorActiveChangeEvent: noop,\n getAnnotationsMatchPath: noop,\n getAnnotationsPath: noop,\n hasReplies: false,\n hasTasks: true,\n hasVersions: true,\n isDisabled: false,\n onAnnotationSelect: noop,\n onCommentCreate: noop,\n onCommentDelete: noop,\n onCommentUpdate: noop,\n onTaskAssignmentUpdate: noop,\n onTaskCreate: noop,\n onTaskDelete: noop,\n onTaskUpdate: noop,\n onVersionChange: noop,\n onVersionHistoryClick: noop,\n };\n\n constructor(props: Props) {\n super(props);\n // eslint-disable-next-line react/prop-types\n const { logger } = this.props;\n\n mark(MARK_NAME_DATA_LOADING);\n\n logger.onReadyMetric({\n endMarkName: MARK_NAME_JS_READY,\n });\n this.state = {};\n }\n\n componentDidMount() {\n const { currentUser } = this.props;\n\n this.fetchFeedItems(true);\n this.fetchCurrentUser(currentUser);\n }\n\n handleAnnotationDelete = ({ id, permissions }: { id: string, permissions: AnnotationPermission }) => {\n const { api, file } = this.props;\n\n api.getFeedAPI(false).deleteAnnotation(\n file,\n id,\n permissions,\n this.deleteAnnotationSuccess.bind(this, id),\n this.feedErrorCallback,\n );\n\n this.fetchFeedItems();\n };\n\n handleAnnotationEdit = (id: string, text: string, permissions: AnnotationPermission) => {\n const { api, file } = this.props;\n\n api.getFeedAPI(false).updateAnnotation(\n file,\n id,\n text,\n permissions,\n this.feedSuccessCallback,\n this.feedErrorCallback,\n );\n\n this.fetchFeedItems();\n };\n\n deleteAnnotationSuccess(id: string) {\n const { emitRemoveEvent } = this.props;\n\n this.feedSuccessCallback();\n emitRemoveEvent(id);\n }\n\n /**\n * Fetches a Users info\n *\n * @private\n * @param {User} [user] - Box User. If missing, gets user that the current token was generated for.\n * @param {boolean} shouldDestroy\n * @return {void}\n */\n fetchCurrentUser(user?: User, shouldDestroy: boolean = false): void {\n const { api, file } = this.props;\n\n if (!file) {\n throw getBadItemError();\n }\n\n if (typeof user === 'undefined') {\n api.getUsersAPI(shouldDestroy).getUser(\n file.id,\n this.fetchCurrentUserSuccessCallback,\n this.fetchCurrentUserErrorCallback,\n );\n } else {\n this.setState({ currentUser: user, currentUserError: undefined });\n }\n }\n\n /**\n * Success callback for fetching feed items\n */\n feedSuccessCallback = (): void => {\n this.fetchFeedItems();\n };\n\n /**\n * Error callback for fetching feed items\n *\n * @param {Error} e - the error which occured\n * @param {Error} code - the code for the error\n * @param {Object} contextInfo - the context info for the error\n */\n feedErrorCallback = (e: ElementsXhrError, code: string, contextInfo?: Object) => {\n this.errorCallback(e, code, contextInfo);\n this.fetchFeedItems();\n };\n\n createTask = (\n message: string,\n assignees: SelectorItems<>,\n taskType: TaskType,\n dueAt: ?string,\n completionRule: TaskCompletionRule,\n onSuccess: ?Function,\n onError: ?Function,\n ): void => {\n const { currentUser } = this.state;\n const { file, api } = this.props;\n\n if (!currentUser) {\n throw getBadUserError();\n }\n const errorCallback = (e, code, contextInfo) => {\n if (onError) {\n onError(e, code, contextInfo);\n }\n this.feedErrorCallback(e, code, contextInfo);\n };\n const successCallback = () => {\n if (onSuccess) {\n onSuccess();\n }\n this.feedSuccessCallback();\n };\n\n api.getFeedAPI(false).createTaskNew(\n file,\n currentUser,\n message,\n assignees,\n taskType,\n dueAt,\n completionRule,\n successCallback,\n errorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n deleteTask = (task: TaskNew): void => {\n const { file, api, onTaskDelete } = this.props;\n api.getFeedAPI(false).deleteTaskNew(\n file,\n task,\n (taskId: string) => {\n this.feedSuccessCallback();\n onTaskDelete(taskId);\n },\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n updateTask = (task: TaskUpdatePayload, onSuccess: ?Function, onError: ?Function): void => {\n const { file, api, onTaskUpdate } = this.props;\n const errorCallback = (e, code) => {\n if (onError) {\n onError(e, code);\n }\n this.feedErrorCallback(e, code);\n };\n const successCallback = () => {\n this.feedSuccessCallback();\n\n if (onSuccess) {\n onSuccess();\n }\n\n onTaskUpdate();\n };\n\n api.getFeedAPI(false).updateTaskNew(file, task, successCallback, errorCallback);\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n updateTaskAssignment = (taskId: string, taskAssignmentId: string, status: TaskCollabStatus): void => {\n const { file, api, onTaskAssignmentUpdate } = this.props;\n const { currentUser = {} } = this.state;\n\n const successCallback = () => {\n this.feedSuccessCallback();\n onTaskAssignmentUpdate(taskId, taskAssignmentId, status, currentUser.id);\n };\n\n api.getFeedAPI(false).updateTaskCollaborator(\n file,\n taskId,\n taskAssignmentId,\n status,\n successCallback,\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Deletes a comment via the API.\n *\n * @param {Object} args - A subset of the comment\n * @return void\n */\n deleteComment = ({ id, permissions }: { id: string, permissions: BoxItemPermission }): void => {\n const { file, api, onCommentDelete } = this.props;\n\n api.getFeedAPI(false).deleteComment(\n file,\n id,\n permissions,\n (comment: Comment) => {\n this.feedSuccessCallback();\n onCommentDelete(comment);\n },\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n updateComment = (\n id: string,\n text: string,\n hasMention: boolean,\n permissions: BoxItemPermission,\n onSuccess: ?Function,\n onError: ?Function,\n ): void => {\n const { file, api, onCommentUpdate } = this.props;\n\n const errorCallback = (e, code) => {\n if (onError) {\n onError(e, code);\n }\n this.feedErrorCallback(e, code);\n };\n\n const successCallback = () => {\n this.feedSuccessCallback();\n if (onSuccess) {\n onSuccess();\n }\n onCommentUpdate();\n };\n\n api.getFeedAPI(false).updateComment(file, id, text, hasMention, permissions, successCallback, errorCallback);\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Posts a new comment to the API\n *\n * @param {string} text - The comment's text\n * @param {boolean} hasMention - The comment's text\n * @return {void}\n */\n createComment = (text: string, hasMention: boolean): void => {\n const { file, api, onCommentCreate } = this.props;\n const { currentUser } = this.state;\n\n if (!currentUser) {\n throw getBadUserError();\n }\n\n api.getFeedAPI(false).createComment(\n file,\n currentUser,\n text,\n hasMention,\n (comment: Comment) => {\n onCommentCreate(comment);\n this.feedSuccessCallback();\n },\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Deletes an app activity item via the API.\n *\n * @param {Object} args - A subset of the app activity\n * @return void\n */\n deleteAppActivity = ({ id }: { id: string }): void => {\n const { file, api } = this.props;\n\n api.getFeedAPI(false).deleteAppActivity(file, id, this.feedSuccessCallback, this.feedErrorCallback);\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Fetches the feed items for the sidebar\n *\n * @param {boolean} shouldRefreshCache true if the cache should be refreshed\n * @param {boolean} shouldDestroy true if the api factory should be destroyed\n */\n fetchFeedItems(shouldRefreshCache: boolean = false, shouldDestroy: boolean = false) {\n const { file, api, features, hasTasks: shouldShowTasks, hasVersions: shouldShowVersions } = this.props;\n const shouldShowAppActivity = isFeatureEnabled(features, 'activityFeed.appActivity.enabled');\n const shouldShowAnnotations = isFeatureEnabled(features, 'activityFeed.annotations.enabled');\n\n api.getFeedAPI(shouldDestroy).feedItems(\n file,\n shouldRefreshCache,\n this.fetchFeedItemsSuccessCallback,\n this.fetchFeedItemsErrorCallback,\n this.errorCallback,\n { shouldShowAnnotations, shouldShowAppActivity, shouldShowTasks, shouldShowVersions },\n );\n }\n\n /**\n * Handles a successful feed API fetch\n *\n * @private\n * @param {Array} feedItems - the feed items\n * @return {void}\n */\n fetchFeedItemsSuccessCallback = (feedItems: FeedItems): void => {\n const {\n file: { id: fileId },\n logger,\n } = this.props;\n\n mark(MARK_NAME_DATA_READY);\n\n // Only emit metric if has >1 activity feed items (there should always at least be the current version)\n if (feedItems.length > 1) {\n logger.onDataReadyMetric(\n {\n endMarkName: MARK_NAME_DATA_READY,\n startMarkName: MARK_NAME_DATA_LOADING,\n },\n fileId,\n );\n }\n\n this.setState({ feedItems, activityFeedError: undefined });\n };\n\n /**\n * Handles a failed feed item fetch\n *\n * @private\n * @param {Error} e - API error\n * @return {void}\n */\n fetchFeedItemsErrorCallback = (feedItems: FeedItems, errors: ElementsXhrError[]): void => {\n const { onError } = this.props;\n\n this.setState({\n feedItems,\n activityFeedError: activityFeedInlineError,\n });\n\n if (Array.isArray(errors) && errors.length) {\n onError(new Error('Fetch feed items error'), ERROR_CODE_FETCH_ACTIVITY, {\n showNotification: true,\n errors: errors.map(({ code }) => code),\n });\n }\n };\n\n /**\n * Network error callback\n *\n * @private\n * @param {Error} error - Error object\n * @param {Error} code - the code for the error\n * @param {Object} contextInfo - the context info for the error\n * @return {void}\n */\n errorCallback = (error: ElementsXhrError, code: string, contextInfo: Object = {}): void => {\n /* eslint-disable no-console */\n console.error(error);\n /* eslint-enable no-console */\n\n // eslint-disable-next-line react/prop-types\n this.props.onError(error, code, contextInfo);\n };\n\n /**\n * User fetch success callback\n *\n * @private\n * @param {Object} currentUser - User info object\n * @return {void}\n */\n fetchCurrentUserSuccessCallback = (currentUser: User): void => {\n this.setState({ currentUser, currentUserError: undefined });\n };\n\n /**\n * File approver contacts fetch success callback\n *\n * @private\n * @param {BoxItemCollection} collaborators - Collaborators response data\n * @return {void}\n */\n getApproverContactsSuccessCallback = (collaborators: { entries: SelectorItems<> }): void => {\n const { entries } = collaborators;\n this.setState({ approverSelectorContacts: entries });\n };\n\n /**\n * File @mention contacts fetch success callback\n *\n * @private\n * @param {BoxItemCollection} collaborators - Collaborators response data\n * @return {void}\n */\n getMentionContactsSuccessCallback = (collaborators: { entries: SelectorItems<> }): void => {\n const { entries } = collaborators;\n this.setState({ contactsLoaded: false }, () =>\n this.setState({\n contactsLoaded: true,\n mentionSelectorContacts: entries,\n }),\n );\n };\n\n /**\n * File @mention contacts fetch success callback\n *\n * @private\n * @param {string} searchStr - Search string to filter file collaborators by\n * @return {void}\n */\n getApproverWithQuery = debounce(\n (searchStr: string) =>\n this.getCollaborators(this.getApproverContactsSuccessCallback, this.errorCallback, searchStr, {\n includeGroups: true,\n }),\n DEFAULT_COLLAB_DEBOUNCE,\n );\n\n /**\n * Fetches file @mention's\n *\n * @private\n * @param {string} searchStr - Search string to filter file collaborators by\n * @return {void}\n */\n getMentionWithQuery = debounce(\n (searchStr: string) =>\n this.getCollaborators(this.getMentionContactsSuccessCallback, this.errorCallback, searchStr),\n DEFAULT_COLLAB_DEBOUNCE,\n );\n\n /**\n * Fetches file collaborators\n *\n * @param {Function} successCallback - the success callback\n * @param {Function} errorCallback - the error callback\n * @param {string} searchStr - the search string\n * @param {Object} [options]\n * @param {boolean} [options.includeGroups] - return groups as well as users\n * @return {void}\n */\n getCollaborators(\n successCallback: Collaborators => void,\n errorCallback: ElementsErrorCallback,\n searchStr: string,\n { includeGroups = false }: { includeGroups: boolean } = {},\n ): void {\n // Do not fetch without filter\n const { file, api } = this.props;\n if (!searchStr || searchStr.trim() === '') {\n return;\n }\n\n api.getFileCollaboratorsAPI(true).getFileCollaborators(file.id, successCallback, errorCallback, {\n filter_term: searchStr,\n include_groups: includeGroups,\n include_uploader_collabs: false,\n });\n }\n\n /**\n * Handles a failed file user info fetch\n *\n * @private\n * @param {ElementsXhrError} e - API error\n * @return {void}\n */\n fetchCurrentUserErrorCallback = (e: ElementsXhrError, code: string) => {\n this.setState({\n currentUser: undefined,\n currentUserError: {\n maskError: {\n errorHeader: messages.currentUserErrorHeaderMessage,\n errorSubHeader: messages.defaultErrorMaskSubHeaderMessage,\n },\n },\n });\n\n this.errorCallback(e, code, {\n error: e,\n });\n };\n\n /**\n * Gets the user avatar URL\n *\n * @param {string} userId the user id\n * @param {string} fileId the file id\n * @return the user avatar URL string for a given user with access token attached\n */\n getAvatarUrl = async (userId: string): Promise<?string> => {\n const { file, api } = this.props;\n\n return api.getUsersAPI(false).getAvatarUrlWithAccessToken(userId, file.id);\n };\n\n handleAnnotationSelect = (annotation: Annotation): void => {\n const { file_version, id: nextActiveAnnotationId } = annotation;\n const {\n emitAnnotatorActiveChangeEvent,\n file,\n getAnnotationsMatchPath,\n getAnnotationsPath,\n history,\n location,\n onAnnotationSelect,\n } = this.props;\n const annotationFileVersionId = getProp(file_version, 'id');\n const currentFileVersionId = getProp(file, 'file_version.id');\n const match = getAnnotationsMatchPath(location);\n const selectedFileVersionId = getProp(match, 'params.fileVersionId', currentFileVersionId);\n\n emitAnnotatorActiveChangeEvent(nextActiveAnnotationId);\n\n if (annotationFileVersionId && annotationFileVersionId !== selectedFileVersionId) {\n history.push(getAnnotationsPath(annotationFileVersionId, nextActiveAnnotationId));\n }\n\n onAnnotationSelect(annotation);\n };\n\n onTaskModalClose = () => {\n this.setState({\n approverSelectorContacts: [],\n });\n };\n\n refresh(shouldRefreshCache: boolean = true): void {\n this.fetchFeedItems(shouldRefreshCache);\n }\n\n renderAddTaskButton = () => {\n const { isDisabled, hasTasks } = this.props;\n const { approverSelectorContacts } = this.state;\n const { getApproverWithQuery, getAvatarUrl, createTask, onTaskModalClose } = this;\n\n if (!hasTasks) {\n return null;\n }\n\n return (\n <AddTaskButton\n isDisabled={isDisabled}\n onTaskModalClose={onTaskModalClose}\n taskFormProps={{\n approvers: [],\n approverSelectorContacts,\n completionRule: TASK_COMPLETION_RULE_ALL,\n createTask,\n getApproverWithQuery,\n getAvatarUrl,\n id: '',\n message: '',\n }}\n />\n );\n };\n\n render() {\n const {\n elementId,\n file,\n isDisabled = false,\n onVersionHistoryClick,\n getUserProfileUrl,\n activeFeedEntryId,\n activeFeedEntryType,\n onTaskView,\n } = this.props;\n const {\n currentUser,\n approverSelectorContacts,\n mentionSelectorContacts,\n contactsLoaded,\n feedItems,\n activityFeedError,\n currentUserError,\n } = this.state;\n\n return (\n <SidebarContent\n actions={this.renderAddTaskButton()}\n className=\"bcs-activity\"\n elementId={elementId}\n sidebarView={SIDEBAR_VIEW_ACTIVITY}\n title={<FormattedMessage {...messages.sidebarActivityTitle} />}\n >\n <ActivityFeed\n activeFeedEntryId={activeFeedEntryId}\n activeFeedEntryType={activeFeedEntryType}\n activityFeedError={activityFeedError}\n approverSelectorContacts={approverSelectorContacts}\n currentUser={currentUser}\n currentUserError={currentUserError}\n feedItems={feedItems}\n file={file}\n getApproverWithQuery={this.getApproverWithQuery}\n getAvatarUrl={this.getAvatarUrl}\n getMentionWithQuery={this.getMentionWithQuery}\n getUserProfileUrl={getUserProfileUrl}\n isDisabled={isDisabled}\n mentionSelectorContacts={mentionSelectorContacts}\n contactsLoaded={contactsLoaded}\n onAnnotationDelete={this.handleAnnotationDelete}\n onAnnotationEdit={this.handleAnnotationEdit}\n onAnnotationSelect={this.handleAnnotationSelect}\n onAppActivityDelete={this.deleteAppActivity}\n onCommentCreate={this.createComment}\n onCommentDelete={this.deleteComment}\n onCommentUpdate={this.updateComment}\n onTaskAssignmentUpdate={this.updateTaskAssignment}\n onTaskCreate={this.createTask}\n onTaskDelete={this.deleteTask}\n onTaskModalClose={this.onTaskModalClose}\n onTaskUpdate={this.updateTask}\n onTaskView={onTaskView}\n onVersionHistoryClick={onVersionHistoryClick}\n />\n </SidebarContent>\n );\n }\n}\n\nexport type ActivitySidebarProps = ExternalProps;\nexport { ActivitySidebar as ActivitySidebarComponent };\nexport default flow([\n withLogger(ORIGIN_ACTIVITY_SIDEBAR),\n withErrorBoundary(ORIGIN_ACTIVITY_SIDEBAR),\n withAPIContext,\n withFeatureConsumer,\n withAnnotatorContext,\n withRouterAndRef,\n])(ActivitySidebar);\n"],"file":"ActivitySidebar.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/content-sidebar/ActivitySidebar.js"],"names":["React","debounce","flow","getProp","noop","uniqueId","FormattedMessage","ActivityFeed","AddTaskButton","API","messages","SidebarContent","WithAnnotatorContextProps","withAnnotatorContext","EVENT_DATA_READY","EVENT_JS_READY","getBadUserError","mark","withAPIContext","withErrorBoundary","withFeatureConsumer","isFeatureEnabled","withLogger","withRouterAndRef","ActivitySidebarFilter","DEFAULT_COLLAB_DEBOUNCE","ERROR_CODE_FETCH_ACTIVITY","FEED_ITEM_TYPE_VERSION","ORIGIN_ACTIVITY_SIDEBAR","SIDEBAR_VIEW_ACTIVITY","TASK_COMPLETION_RULE_ALL","activityFeedInlineError","inlineError","title","errorOccured","content","activityFeedItemApiError","MARK_NAME_DATA_LOADING","MARK_NAME_DATA_READY","MARK_NAME_JS_READY","ActivitySidebar","props","id","permissions","api","emitAnnotationRemoveEvent","file","getFeedAPI","deleteAnnotation","deleteAnnotationSuccess","bind","feedErrorCallback","fetchFeedItems","text","emitAnnotationUpdateEvent","description","message","updateAnnotation","undefined","annotation","feedSuccessCallback","status","e","code","contextInfo","errorCallback","assignees","taskType","dueAt","completionRule","onSuccess","onError","currentUser","successCallback","createTaskNew","task","onTaskDelete","deleteTaskNew","taskId","onTaskUpdate","updateTaskNew","taskAssignmentId","onTaskAssignmentUpdate","updateTaskCollaborator","hasReplies","onCommentDelete","comment","deleteThreadedComment","deleteComment","parentId","emitAnnotationReplyDeleteEvent","deleteReply","deleteReplySuccessCallback","hasMention","onCommentUpdate","updateThreadedComment","updateComment","emitAnnotationReplyUpdateEvent","tagged_message","updateReply","updateReplySuccessCallback","error","reply","onCommentCreate","createThreadedComment","createComment","parentType","emitAnnotationReplyCreateEvent","eventRequestId","createReply","createReplySuccessCallback","deleteAppActivity","feedItems","fileId","logger","length","onDataReadyMetric","endMarkName","startMarkName","setState","activityFeedError","errors","Array","isArray","Error","showNotification","map","console","collaborators","entries","approverSelectorContacts","contactsLoaded","mentionSelectorContacts","searchStr","getFileCollaboratorsAPI","getCollaboratorsWithQuery","getApproverContactsSuccessCallback","includeGroups","getMentionContactsSuccessCallback","type","fetchReplies","userId","getUsersAPI","getAvatarUrlWithAccessToken","file_version","nextActiveAnnotationId","emitActiveAnnotationChangeEvent","getAnnotationsMatchPath","getAnnotationsPath","history","location","onAnnotationSelect","annotationFileVersionId","currentFileVersionId","match","selectedFileVersionId","push","onFilterChange","feedItemsStatusFilter","state","filter","item","isDisabled","hasTasks","getApprover","getAvatarUrl","createTask","onTaskModalClose","approvers","getApproverWithQuery","features","shouldShowActivityFeedFilter","selectedStatus","handleItemsFiltered","renderActivitySidebarFilter","renderAddTaskButton","sidebarActivityTitle","onReadyMetric","shouldRefreshCache","shouldDestroy","shouldShowReplies","shouldShowTasks","shouldShowVersions","hasVersions","shouldShowAppActivity","shouldShowAnnotations","fetchFeedItemsSuccessCallback","fetchFeedItemsErrorCallback","currentUserError","elementId","onVersionHistoryClick","getUserProfileUrl","activeFeedEntryId","activeFeedEntryType","onTaskView","renderActions","renderTitle","getFilteredFeedItems","getMention","handleAnnotationDelete","handleAnnotationEdit","handleAnnotationSelect","handleAnnotationStatusChange","getReplies","updateTaskAssignment","deleteTask","updateTask","PureComponent","annotatorState","onTaskCreate","onVersionChange","ActivitySidebarComponent"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Activity feed sidebar component\n * @author Box\n */\n\nimport * as React from 'react';\nimport debounce from 'lodash/debounce';\nimport flow from 'lodash/flow';\nimport getProp from 'lodash/get';\nimport noop from 'lodash/noop';\nimport uniqueId from 'lodash/uniqueId';\nimport { FormattedMessage } from 'react-intl';\nimport { type ContextRouter } from 'react-router-dom';\nimport ActivityFeed from './activity-feed';\nimport AddTaskButton from './AddTaskButton';\nimport API from '../../api';\nimport messages from '../common/messages';\nimport SidebarContent from './SidebarContent';\nimport { WithAnnotatorContextProps, withAnnotatorContext } from '../common/annotator-context';\nimport { EVENT_DATA_READY, EVENT_JS_READY } from '../common/logger/constants';\nimport { getBadUserError } from '../../utils/error';\nimport { mark } from '../../utils/performance';\nimport { withAPIContext } from '../common/api-context';\nimport { withErrorBoundary } from '../common/error-boundary';\nimport { withFeatureConsumer, isFeatureEnabled } from '../common/feature-checking';\nimport { withLogger } from '../common/logger';\nimport { withRouterAndRef } from '../common/routing';\nimport ActivitySidebarFilter from './ActivitySidebarFilter';\nimport {\n DEFAULT_COLLAB_DEBOUNCE,\n ERROR_CODE_FETCH_ACTIVITY,\n FEED_ITEM_TYPE_VERSION,\n ORIGIN_ACTIVITY_SIDEBAR,\n SIDEBAR_VIEW_ACTIVITY,\n TASK_COMPLETION_RULE_ALL,\n} from '../../constants';\nimport type {\n TaskCompletionRule,\n TaskType,\n TaskNew,\n TaskUpdatePayload,\n TaskCollabStatus,\n} from '../../common/types/tasks';\nimport type {\n Annotation,\n AnnotationPermission,\n BoxCommentPermission,\n Comment,\n CommentFeedItemType,\n FocusableFeedItemType,\n FeedItems,\n FeedItemStatus,\n} from '../../common/types/feed';\nimport type { ErrorContextProps, ElementsXhrError } from '../../common/types/api';\nimport type { WithLoggerProps } from '../../common/types/logging';\nimport type { SelectorItems, User, UserMini, GroupMini, BoxItem } from '../../common/types/core';\nimport type { Errors, GetProfileUrlCallback } from '../common/flowTypes';\nimport type { Translations } from './flowTypes';\nimport type { FeatureConfig } from '../common/feature-checking';\nimport './ActivitySidebar.scss';\n\ntype ExternalProps = {\n activeFeedEntryId?: string,\n activeFeedEntryType?: FocusableFeedItemType,\n currentUser?: User,\n currentUserError?: Errors,\n getUserProfileUrl?: GetProfileUrlCallback,\n hasReplies?: boolean,\n hasTasks?: boolean,\n hasVersions?: boolean,\n onCommentCreate: Function,\n onCommentDelete: (comment: Comment) => any,\n onCommentUpdate: () => any,\n onTaskAssignmentUpdate: Function,\n onTaskCreate: Function,\n onTaskDelete: (id: string) => any,\n onTaskUpdate: () => any,\n onTaskView: (id: string, isCreator: boolean) => any,\n} & ErrorContextProps &\n WithAnnotatorContextProps;\n\ntype PropsWithoutContext = {\n elementId: string,\n file: BoxItem,\n hasSidebarInitialized?: boolean,\n isDisabled: boolean,\n onAnnotationSelect: Function,\n onFilterChange: (status?: FeedItemStatus) => void,\n onVersionChange: Function,\n onVersionHistoryClick?: Function,\n translations?: Translations,\n} & ExternalProps &\n WithLoggerProps &\n ContextRouter;\n\ntype Props = {\n api: API,\n features: FeatureConfig,\n} & PropsWithoutContext;\n\ntype State = {\n activityFeedError?: Errors,\n approverSelectorContacts: SelectorItems<UserMini | GroupMini>,\n contactsLoaded?: boolean,\n feedItems?: FeedItems,\n feedItemsStatusFilter?: FeedItemStatus,\n mentionSelectorContacts?: SelectorItems<UserMini>,\n};\n\nexport const activityFeedInlineError: Errors = {\n inlineError: {\n title: messages.errorOccured,\n content: messages.activityFeedItemApiError,\n },\n};\n\nconst MARK_NAME_DATA_LOADING = `${ORIGIN_ACTIVITY_SIDEBAR}_data_loading`;\nconst MARK_NAME_DATA_READY = `${ORIGIN_ACTIVITY_SIDEBAR}_${EVENT_DATA_READY}`;\nconst MARK_NAME_JS_READY = `${ORIGIN_ACTIVITY_SIDEBAR}_${EVENT_JS_READY}`;\n\nmark(MARK_NAME_JS_READY);\n\nclass ActivitySidebar extends React.PureComponent<Props, State> {\n static defaultProps = {\n annotatorState: {},\n emitActiveAnnotationChangeEvent: noop,\n emitAnnotationRemoveEvent: noop,\n emitAnnotationReplyCreateEvent: noop,\n emitAnnotationReplyDeleteEvent: noop,\n emitAnnotationReplyUpdateEvent: noop,\n emitAnnotationUpdateEvent: noop,\n getAnnotationsMatchPath: noop,\n getAnnotationsPath: noop,\n hasReplies: false,\n hasTasks: true,\n hasVersions: true,\n isDisabled: false,\n onAnnotationSelect: noop,\n onCommentCreate: noop,\n onCommentDelete: noop,\n onCommentUpdate: noop,\n onFilterChange: noop,\n onTaskAssignmentUpdate: noop,\n onTaskCreate: noop,\n onTaskDelete: noop,\n onTaskUpdate: noop,\n onVersionChange: noop,\n onVersionHistoryClick: noop,\n };\n\n constructor(props: Props) {\n super(props);\n // eslint-disable-next-line react/prop-types\n const { logger } = this.props;\n\n mark(MARK_NAME_DATA_LOADING);\n\n logger.onReadyMetric({\n endMarkName: MARK_NAME_JS_READY,\n });\n this.state = {};\n }\n\n componentDidMount() {\n this.fetchFeedItems(true);\n }\n\n handleAnnotationDelete = ({ id, permissions }: { id: string, permissions: AnnotationPermission }) => {\n const { api, emitAnnotationRemoveEvent, file } = this.props;\n\n emitAnnotationRemoveEvent(id, true);\n api.getFeedAPI(false).deleteAnnotation(\n file,\n id,\n permissions,\n this.deleteAnnotationSuccess.bind(this, id),\n this.feedErrorCallback,\n );\n\n this.fetchFeedItems();\n };\n\n handleAnnotationEdit = (id: string, text: string, permissions: AnnotationPermission) => {\n const { api, emitAnnotationUpdateEvent, file } = this.props;\n\n emitAnnotationUpdateEvent(\n {\n id,\n description: {\n message: text,\n },\n },\n true,\n );\n api.getFeedAPI(false).updateAnnotation(\n file,\n id,\n text,\n undefined,\n permissions,\n (annotation: Annotation) => {\n emitAnnotationUpdateEvent(annotation);\n this.feedSuccessCallback();\n },\n this.feedErrorCallback,\n );\n\n this.fetchFeedItems();\n };\n\n handleAnnotationStatusChange = (id: string, status: FeedItemStatus, permissions: AnnotationPermission) => {\n const { api, emitAnnotationUpdateEvent, file } = this.props;\n\n emitAnnotationUpdateEvent({ id, status }, true);\n api.getFeedAPI(false).updateAnnotation(\n file,\n id,\n undefined,\n status,\n permissions,\n (annotation: Annotation) => {\n emitAnnotationUpdateEvent(annotation);\n this.feedSuccessCallback();\n },\n this.feedErrorCallback,\n );\n\n this.fetchFeedItems();\n };\n\n deleteAnnotationSuccess(id: string) {\n const { emitAnnotationRemoveEvent } = this.props;\n\n this.feedSuccessCallback();\n emitAnnotationRemoveEvent(id);\n }\n\n /**\n * Success callback for fetching feed items\n */\n feedSuccessCallback = (): void => {\n this.fetchFeedItems();\n };\n\n /**\n * Error callback for fetching feed items\n *\n * @param {Error} e - the error which occured\n * @param {Error} code - the code for the error\n * @param {Object} contextInfo - the context info for the error\n */\n feedErrorCallback = (e: ElementsXhrError, code: string, contextInfo?: Object) => {\n this.errorCallback(e, code, contextInfo);\n this.fetchFeedItems();\n };\n\n createTask = (\n message: string,\n assignees: SelectorItems<>,\n taskType: TaskType,\n dueAt: ?string,\n completionRule: TaskCompletionRule,\n onSuccess: ?Function,\n onError: ?Function,\n ): void => {\n const { api, currentUser, file } = this.props;\n\n if (!currentUser) {\n throw getBadUserError();\n }\n const errorCallback = (e, code, contextInfo) => {\n if (onError) {\n onError(e, code, contextInfo);\n }\n this.feedErrorCallback(e, code, contextInfo);\n };\n const successCallback = () => {\n if (onSuccess) {\n onSuccess();\n }\n this.feedSuccessCallback();\n };\n\n api.getFeedAPI(false).createTaskNew(\n file,\n currentUser,\n message,\n assignees,\n taskType,\n dueAt,\n completionRule,\n successCallback,\n errorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n deleteTask = (task: TaskNew): void => {\n const { file, api, onTaskDelete } = this.props;\n api.getFeedAPI(false).deleteTaskNew(\n file,\n task,\n (taskId: string) => {\n this.feedSuccessCallback();\n onTaskDelete(taskId);\n },\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n updateTask = (task: TaskUpdatePayload, onSuccess: ?Function, onError: ?Function): void => {\n const { api, file, onTaskUpdate } = this.props;\n const errorCallback = (e, code) => {\n if (onError) {\n onError(e, code);\n }\n this.feedErrorCallback(e, code);\n };\n const successCallback = () => {\n this.feedSuccessCallback();\n\n if (onSuccess) {\n onSuccess();\n }\n\n onTaskUpdate();\n };\n\n api.getFeedAPI(false).updateTaskNew(file, task, successCallback, errorCallback);\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n updateTaskAssignment = (taskId: string, taskAssignmentId: string, status: TaskCollabStatus): void => {\n const { api, currentUser = {}, file, onTaskAssignmentUpdate } = this.props;\n\n const successCallback = () => {\n this.feedSuccessCallback();\n onTaskAssignmentUpdate(taskId, taskAssignmentId, status, currentUser.id);\n };\n\n api.getFeedAPI(false).updateTaskCollaborator(\n file,\n taskId,\n taskAssignmentId,\n status,\n successCallback,\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Deletes a comment via the API.\n *\n * @param {Object} args - A subset of the comment\n * @return void\n */\n deleteComment = ({ id, permissions }: { id: string, permissions: BoxCommentPermission }): void => {\n const { api, file, hasReplies, onCommentDelete } = this.props;\n\n const successCallback = (comment: Comment) => {\n this.feedSuccessCallback();\n onCommentDelete(comment);\n };\n\n if (hasReplies) {\n api.getFeedAPI(false).deleteThreadedComment(file, id, permissions, successCallback, this.feedErrorCallback);\n } else {\n api.getFeedAPI(false).deleteComment(file, id, permissions, successCallback, this.feedErrorCallback);\n }\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Deletes a reply via the API.\n *\n * @param {Object} args - A subset of the comment\n * @return void\n */\n deleteReply = ({\n id,\n parentId,\n permissions,\n }: {\n id: string,\n parentId: string,\n permissions: BoxCommentPermission,\n }): void => {\n const { api, emitAnnotationReplyDeleteEvent, file } = this.props;\n\n emitAnnotationReplyDeleteEvent(id, parentId, true);\n api.getFeedAPI(false).deleteReply(\n file,\n id,\n parentId,\n permissions,\n this.deleteReplySuccessCallback.bind(this, id, parentId),\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Handles a successful deletion of a reply\n *\n * @private\n * @param {string} id - The id of the reply\n * @param {string} parentId - The id of the reply's parent item\n * @return {void}\n */\n deleteReplySuccessCallback = (id: string, parentId: string) => {\n const { emitAnnotationReplyDeleteEvent } = this.props;\n\n this.feedSuccessCallback();\n emitAnnotationReplyDeleteEvent(id, parentId);\n };\n\n updateComment = (\n id: string,\n text?: string,\n status?: FeedItemStatus,\n hasMention: boolean,\n permissions: BoxCommentPermission,\n onSuccess: ?Function,\n onError: ?Function,\n ): void => {\n const { api, file, hasReplies, onCommentUpdate } = this.props;\n\n const errorCallback = (e, code) => {\n if (onError) {\n onError(e, code);\n }\n this.feedErrorCallback(e, code);\n };\n\n const successCallback = () => {\n this.feedSuccessCallback();\n if (onSuccess) {\n onSuccess();\n }\n onCommentUpdate();\n };\n\n if (hasReplies) {\n api.getFeedAPI(false).updateThreadedComment(\n file,\n id,\n text,\n status,\n permissions,\n successCallback,\n errorCallback,\n );\n } else {\n api.getFeedAPI(false).updateComment(\n file,\n id,\n text || '',\n hasMention,\n permissions,\n successCallback,\n errorCallback,\n );\n }\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Updates a reply\n *\n * @param {string} id - id of the reply\n * @param {string} parentId - id of the parent item\n * @param {string} text - the reply updated text\n * @param {BoxCommentPermission} permissions - permissions associated with the reply\n * @param {Function} onSuccess - the success callback\n * @param {Function} onError - the error callback\n * @return {void}\n */\n updateReply = (\n id: string,\n parentId: string,\n text: string,\n permissions: BoxCommentPermission,\n onSuccess: ?Function,\n onError: ?Function,\n ): void => {\n const { api, emitAnnotationReplyUpdateEvent, file } = this.props;\n\n emitAnnotationReplyUpdateEvent({ id, tagged_message: text }, parentId, true);\n api.getFeedAPI(false).updateReply(\n file,\n id,\n parentId,\n text,\n permissions,\n this.updateReplySuccessCallback.bind(this, parentId, onSuccess),\n (error, code) => {\n if (onError) {\n onError(error, code);\n }\n this.feedErrorCallback(error, code);\n },\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Handles a successful update of a reply\n *\n * @private\n * @param {string} parentId - The id of the reply's parent item\n * @param {Function} onSuccess - the success callback\n * @param {Comment} reply - The reply comment object\n * @return {void}\n */\n updateReplySuccessCallback = (parentId: string, onSuccess: ?Function, reply: Comment) => {\n const { emitAnnotationReplyUpdateEvent } = this.props;\n\n this.feedSuccessCallback();\n emitAnnotationReplyUpdateEvent(reply, parentId);\n if (onSuccess) {\n onSuccess();\n }\n };\n\n /**\n * Posts a new comment to the API\n *\n * @param {string} text - The comment's text\n * @param {boolean} hasMention - The comment's text\n * @return {void}\n */\n createComment = (text: string, hasMention: boolean): void => {\n const { api, currentUser, file, hasReplies, onCommentCreate } = this.props;\n\n if (!currentUser) {\n throw getBadUserError();\n }\n\n const successCallback = (comment: Comment) => {\n onCommentCreate(comment);\n this.feedSuccessCallback();\n };\n\n if (hasReplies) {\n api.getFeedAPI(false).createThreadedComment(\n file,\n currentUser,\n text,\n successCallback,\n this.feedErrorCallback,\n );\n } else {\n api.getFeedAPI(false).createComment(\n file,\n currentUser,\n text,\n hasMention,\n successCallback,\n this.feedErrorCallback,\n );\n }\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Posts a new reply to the API\n *\n * @param {string} parentId - The id of the parent item\n * @param {CommentFeedItemType} parentType - The type of the parent item\n * @param {string} text - The text of reply\n * @return {void}\n */\n createReply = (parentId: string, parentType: CommentFeedItemType, text: string): void => {\n const { api, currentUser, emitAnnotationReplyCreateEvent, file } = this.props;\n\n if (!currentUser) {\n throw getBadUserError();\n }\n\n const eventRequestId = uniqueId('comment_');\n emitAnnotationReplyCreateEvent({ tagged_message: text }, eventRequestId, parentId, true);\n api.getFeedAPI(false).createReply(\n file,\n currentUser,\n parentId,\n parentType,\n text,\n this.createReplySuccessCallback.bind(this, eventRequestId, parentId),\n this.feedErrorCallback,\n );\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Handles a successful creation of a reply\n *\n * @private\n * @param {string} eventRequestId - The id of the parent item\n * @param {string} parentId - The id of the reply's parent item\n * @param {Comment} reply - The reply comment object\n * @return {void}\n */\n createReplySuccessCallback = (eventRequestId: string, parentId: string, reply: Comment) => {\n const { emitAnnotationReplyCreateEvent } = this.props;\n\n this.feedSuccessCallback();\n emitAnnotationReplyCreateEvent(reply, eventRequestId, parentId);\n };\n\n /**\n * Deletes an app activity item via the API.\n *\n * @param {Object} args - A subset of the app activity\n * @return void\n */\n deleteAppActivity = ({ id }: { id: string }): void => {\n const { api, file } = this.props;\n\n api.getFeedAPI(false).deleteAppActivity(file, id, this.feedSuccessCallback, this.feedErrorCallback);\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Fetches the feed items for the sidebar\n *\n * @param {boolean} shouldRefreshCache true if the cache should be refreshed\n * @param {boolean} shouldDestroy true if the api factory should be destroyed\n */\n fetchFeedItems(shouldRefreshCache: boolean = false, shouldDestroy: boolean = false) {\n const {\n api,\n file,\n features,\n hasReplies: shouldShowReplies,\n hasTasks: shouldShowTasks,\n hasVersions: shouldShowVersions,\n } = this.props;\n const shouldShowAppActivity = isFeatureEnabled(features, 'activityFeed.appActivity.enabled');\n const shouldShowAnnotations = isFeatureEnabled(features, 'activityFeed.annotations.enabled');\n\n api.getFeedAPI(shouldDestroy).feedItems(\n file,\n shouldRefreshCache,\n this.fetchFeedItemsSuccessCallback,\n this.fetchFeedItemsErrorCallback,\n this.errorCallback,\n { shouldShowAnnotations, shouldShowAppActivity, shouldShowReplies, shouldShowTasks, shouldShowVersions },\n );\n }\n\n /**\n * Handles a successful feed API fetch\n *\n * @private\n * @param {Array} feedItems - the feed items\n * @return {void}\n */\n fetchFeedItemsSuccessCallback = (feedItems: FeedItems): void => {\n const {\n file: { id: fileId },\n logger,\n } = this.props;\n\n mark(MARK_NAME_DATA_READY);\n\n // Only emit metric if has >1 activity feed items (there should always at least be the current version)\n if (feedItems.length > 1) {\n logger.onDataReadyMetric(\n {\n endMarkName: MARK_NAME_DATA_READY,\n startMarkName: MARK_NAME_DATA_LOADING,\n },\n fileId,\n );\n }\n\n this.setState({ feedItems, activityFeedError: undefined });\n };\n\n /**\n * Handles a failed feed item fetch\n *\n * @private\n * @param {Error} e - API error\n * @return {void}\n */\n fetchFeedItemsErrorCallback = (feedItems: FeedItems, errors: ElementsXhrError[]): void => {\n const { onError } = this.props;\n\n this.setState({\n feedItems,\n activityFeedError: activityFeedInlineError,\n });\n\n if (Array.isArray(errors) && errors.length) {\n onError(new Error('Fetch feed items error'), ERROR_CODE_FETCH_ACTIVITY, {\n showNotification: true,\n errors: errors.map(({ code }) => code),\n });\n }\n };\n\n /**\n * Network error callback\n *\n * @private\n * @param {Error} error - Error object\n * @param {Error} code - the code for the error\n * @param {Object} contextInfo - the context info for the error\n * @return {void}\n */\n errorCallback = (error: ElementsXhrError, code: string, contextInfo: Object = {}): void => {\n /* eslint-disable no-console */\n console.error(error);\n /* eslint-enable no-console */\n\n // eslint-disable-next-line react/prop-types\n this.props.onError(error, code, contextInfo);\n };\n\n /**\n * File approver contacts fetch success callback\n *\n * @private\n * @param {BoxItemCollection} collaborators - Collaborators response data\n * @return {void}\n */\n getApproverContactsSuccessCallback = (collaborators: { entries: SelectorItems<> }): void => {\n const { entries } = collaborators;\n this.setState({ approverSelectorContacts: entries });\n };\n\n /**\n * File @mention contacts fetch success callback\n *\n * @private\n * @param {BoxItemCollection} collaborators - Collaborators response data\n * @return {void}\n */\n getMentionContactsSuccessCallback = (collaborators: { entries: SelectorItems<> }): void => {\n const { entries } = collaborators;\n this.setState({ contactsLoaded: false }, () =>\n this.setState({\n contactsLoaded: true,\n mentionSelectorContacts: entries,\n }),\n );\n };\n\n /**\n * Fetches file @mention's with groups\n *\n * @private\n * @param {string} searchStr - Search string to filter file collaborators by\n * @return {void}\n */\n getApprover = debounce((searchStr: string) => {\n const { file, api } = this.props;\n api.getFileCollaboratorsAPI(false).getCollaboratorsWithQuery(\n file.id,\n this.getApproverContactsSuccessCallback,\n this.errorCallback,\n searchStr,\n {\n includeGroups: true,\n },\n );\n }, DEFAULT_COLLAB_DEBOUNCE);\n\n /**\n * Fetches file @mention's\n *\n * @private\n * @param {string} searchStr - Search string to filter file collaborators by\n * @return {void}\n */\n getMention = debounce((searchStr: string) => {\n const { file, api } = this.props;\n api.getFileCollaboratorsAPI(false).getCollaboratorsWithQuery(\n file.id,\n this.getMentionContactsSuccessCallback,\n this.errorCallback,\n searchStr,\n );\n }, DEFAULT_COLLAB_DEBOUNCE);\n\n /**\n * Fetches replies (comments) of a comment or annotation\n *\n * @param {string} id - id of the feed item\n * @param {CommentFeedItemType} type - type of the feed item\n * @return {void}\n */\n getReplies = (id: string, type: CommentFeedItemType): void => {\n const { api, file } = this.props;\n\n api.getFeedAPI(false).fetchReplies(file, id, type, this.feedSuccessCallback, this.feedErrorCallback);\n\n // need to load the pending item\n this.fetchFeedItems();\n };\n\n /**\n * Gets the user avatar URL\n *\n * @param {string} userId the user id\n * @param {string} fileId the file id\n * @return the user avatar URL string for a given user with access token attached\n */\n getAvatarUrl = async (userId: string): Promise<?string> => {\n const { file, api } = this.props;\n\n return api.getUsersAPI(false).getAvatarUrlWithAccessToken(userId, file.id);\n };\n\n handleAnnotationSelect = (annotation: Annotation): void => {\n const { file_version, id: nextActiveAnnotationId } = annotation;\n const {\n emitActiveAnnotationChangeEvent,\n file,\n getAnnotationsMatchPath,\n getAnnotationsPath,\n history,\n location,\n onAnnotationSelect,\n } = this.props;\n const annotationFileVersionId = getProp(file_version, 'id');\n const currentFileVersionId = getProp(file, 'file_version.id');\n const match = getAnnotationsMatchPath(location);\n const selectedFileVersionId = getProp(match, 'params.fileVersionId', currentFileVersionId);\n\n emitActiveAnnotationChangeEvent(nextActiveAnnotationId);\n\n if (annotationFileVersionId && annotationFileVersionId !== selectedFileVersionId) {\n history.push(getAnnotationsPath(annotationFileVersionId, nextActiveAnnotationId));\n }\n\n onAnnotationSelect(annotation);\n };\n\n handleItemsFiltered = (status?: FeedItemStatus) => {\n const { onFilterChange } = this.props;\n\n this.setState({ feedItemsStatusFilter: status });\n onFilterChange(status);\n };\n\n getFilteredFeedItems = (): FeedItems | typeof undefined => {\n const { feedItems, feedItemsStatusFilter } = this.state;\n if (!feedItems || !feedItemsStatusFilter) {\n return feedItems;\n }\n return feedItems.filter(item => {\n return item.status === feedItemsStatusFilter || item.type === FEED_ITEM_TYPE_VERSION;\n });\n };\n\n onTaskModalClose = () => {\n this.setState({\n approverSelectorContacts: [],\n });\n };\n\n refresh(shouldRefreshCache: boolean = true): void {\n this.fetchFeedItems(shouldRefreshCache);\n }\n\n renderAddTaskButton = () => {\n const { isDisabled, hasTasks } = this.props;\n const { approverSelectorContacts } = this.state;\n const { getApprover, getAvatarUrl, createTask, onTaskModalClose } = this;\n\n if (!hasTasks) {\n return null;\n }\n\n return (\n <AddTaskButton\n isDisabled={isDisabled}\n onTaskModalClose={onTaskModalClose}\n taskFormProps={{\n approvers: [],\n approverSelectorContacts,\n completionRule: TASK_COMPLETION_RULE_ALL,\n createTask,\n getApproverWithQuery: getApprover,\n getAvatarUrl,\n id: '',\n message: '',\n }}\n />\n );\n };\n\n renderActivitySidebarFilter = () => {\n const { features } = this.props;\n const { feedItemsStatusFilter } = this.state;\n const shouldShowActivityFeedFilter = isFeatureEnabled(features, 'activityFeed.filter.enabled');\n\n if (!shouldShowActivityFeedFilter) {\n return null;\n }\n return (\n <ActivitySidebarFilter\n feedItemStatus={feedItemsStatusFilter}\n onFeedItemStatusClick={selectedStatus => {\n this.handleItemsFiltered(selectedStatus);\n }}\n />\n );\n };\n\n renderActions = () => (\n <>\n {this.renderActivitySidebarFilter()}\n {this.renderAddTaskButton()}\n </>\n );\n\n renderTitle = () => {\n const { features } = this.props;\n if (isFeatureEnabled(features, 'activityFeed.filter.enabled')) {\n return undefined;\n }\n return <FormattedMessage {...messages.sidebarActivityTitle} />;\n };\n\n render() {\n const {\n currentUser,\n currentUserError,\n elementId,\n file,\n hasReplies,\n isDisabled = false,\n onVersionHistoryClick,\n getUserProfileUrl,\n activeFeedEntryId,\n activeFeedEntryType,\n onTaskView,\n } = this.props;\n const { activityFeedError, approverSelectorContacts, contactsLoaded, mentionSelectorContacts } = this.state;\n\n return (\n <SidebarContent\n actions={this.renderActions()}\n className=\"bcs-activity\"\n elementId={elementId}\n sidebarView={SIDEBAR_VIEW_ACTIVITY}\n title={this.renderTitle()}\n >\n <ActivityFeed\n activeFeedEntryId={activeFeedEntryId}\n activeFeedEntryType={activeFeedEntryType}\n activityFeedError={activityFeedError}\n approverSelectorContacts={approverSelectorContacts}\n currentUser={currentUser}\n currentUserError={currentUserError}\n feedItems={this.getFilteredFeedItems()}\n file={file}\n getApproverWithQuery={this.getApprover}\n getAvatarUrl={this.getAvatarUrl}\n getMentionWithQuery={this.getMention}\n getUserProfileUrl={getUserProfileUrl}\n hasReplies={hasReplies}\n isDisabled={isDisabled}\n mentionSelectorContacts={mentionSelectorContacts}\n contactsLoaded={contactsLoaded}\n onAnnotationDelete={this.handleAnnotationDelete}\n onAnnotationEdit={this.handleAnnotationEdit}\n onAnnotationSelect={this.handleAnnotationSelect}\n onAnnotationStatusChange={this.handleAnnotationStatusChange}\n onAppActivityDelete={this.deleteAppActivity}\n onCommentCreate={this.createComment}\n onCommentDelete={this.deleteComment}\n onCommentUpdate={this.updateComment}\n onReplyCreate={this.createReply}\n onReplyDelete={this.deleteReply}\n onReplyUpdate={this.updateReply}\n onShowReplies={this.getReplies}\n onTaskAssignmentUpdate={this.updateTaskAssignment}\n onTaskCreate={this.createTask}\n onTaskDelete={this.deleteTask}\n onTaskModalClose={this.onTaskModalClose}\n onTaskUpdate={this.updateTask}\n onTaskView={onTaskView}\n onVersionHistoryClick={onVersionHistoryClick}\n />\n </SidebarContent>\n );\n }\n}\n\nexport type ActivitySidebarProps = ExternalProps;\nexport { ActivitySidebar as ActivitySidebarComponent };\nexport default flow([\n withLogger(ORIGIN_ACTIVITY_SIDEBAR),\n withErrorBoundary(ORIGIN_ACTIVITY_SIDEBAR),\n withAPIContext,\n withFeatureConsumer,\n withAnnotatorContext,\n withRouterAndRef,\n])(ActivitySidebar);\n"],"file":"ActivitySidebar.js"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
var _statusMap;
|
|
2
|
+
|
|
3
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* @file Activity feed sidebar filter component
|
|
8
|
+
* @author Box
|
|
9
|
+
*/
|
|
10
|
+
import * as React from 'react';
|
|
11
|
+
import { FormattedMessage } from 'react-intl';
|
|
12
|
+
import DropdownMenu, { MenuToggle } from '../../components/dropdown-menu';
|
|
13
|
+
import PlainButton from '../../components/plain-button';
|
|
14
|
+
import messages from './messages';
|
|
15
|
+
import { COMMENT_STATUS_OPEN } from '../../constants';
|
|
16
|
+
import { Menu, SelectMenuItem } from '../../components/menu';
|
|
17
|
+
import './ActivitySidebarFilter.scss';
|
|
18
|
+
var ACTIVITY_FEED_ITEM_ALL = 'all';
|
|
19
|
+
var ACTIVITY_FEED_ITEM_OPEN = COMMENT_STATUS_OPEN;
|
|
20
|
+
var statuses = [ACTIVITY_FEED_ITEM_ALL, ACTIVITY_FEED_ITEM_OPEN];
|
|
21
|
+
var statusMap = (_statusMap = {}, _defineProperty(_statusMap, ACTIVITY_FEED_ITEM_ALL, {
|
|
22
|
+
msg: messages.activitySidebarFilterOptionAll,
|
|
23
|
+
val: undefined
|
|
24
|
+
}), _defineProperty(_statusMap, ACTIVITY_FEED_ITEM_OPEN, {
|
|
25
|
+
msg: messages.activitySidebarFilterOptionOpen,
|
|
26
|
+
val: COMMENT_STATUS_OPEN
|
|
27
|
+
}), _statusMap);
|
|
28
|
+
|
|
29
|
+
function ActivitySidebarFilter(_ref) {
|
|
30
|
+
var _ref$feedItemStatus = _ref.feedItemStatus,
|
|
31
|
+
feedItemStatus = _ref$feedItemStatus === void 0 ? ACTIVITY_FEED_ITEM_ALL : _ref$feedItemStatus,
|
|
32
|
+
onFeedItemStatusClick = _ref.onFeedItemStatusClick;
|
|
33
|
+
return React.createElement("div", {
|
|
34
|
+
className: "bcs-ActivitySidebarFilter"
|
|
35
|
+
}, React.createElement(DropdownMenu, {
|
|
36
|
+
className: "bcs-ActivitySidebarFilter-dropdownMenu",
|
|
37
|
+
constrainToWindow: true
|
|
38
|
+
}, React.createElement(PlainButton, {
|
|
39
|
+
type: "button"
|
|
40
|
+
}, React.createElement(MenuToggle, null, React.createElement(FormattedMessage, statusMap[feedItemStatus].msg))), React.createElement(Menu, null, statuses.map(function (status) {
|
|
41
|
+
return React.createElement(SelectMenuItem, {
|
|
42
|
+
key: status,
|
|
43
|
+
isSelected: status === feedItemStatus,
|
|
44
|
+
onClick: function onClick() {
|
|
45
|
+
return onFeedItemStatusClick(statusMap[status].val);
|
|
46
|
+
}
|
|
47
|
+
}, React.createElement(FormattedMessage, statusMap[status].msg));
|
|
48
|
+
}))));
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export default ActivitySidebarFilter;
|
|
52
|
+
//# sourceMappingURL=ActivitySidebarFilter.js.map
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @flow
|
|
3
|
+
* @file Activity feed sidebar filter component
|
|
4
|
+
* @author Box
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import * as React from 'react';
|
|
8
|
+
import { FormattedMessage } from 'react-intl';
|
|
9
|
+
import DropdownMenu, { MenuToggle } from '../../components/dropdown-menu';
|
|
10
|
+
import PlainButton from '../../components/plain-button';
|
|
11
|
+
import messages from './messages';
|
|
12
|
+
import { COMMENT_STATUS_OPEN } from '../../constants';
|
|
13
|
+
import { Menu, SelectMenuItem } from '../../components/menu';
|
|
14
|
+
import type { FeedItemStatus } from '../../common/types/feed';
|
|
15
|
+
import './ActivitySidebarFilter.scss';
|
|
16
|
+
|
|
17
|
+
type ActivitySidebarFilterProps = {
|
|
18
|
+
feedItemStatus?: FeedItemStatus,
|
|
19
|
+
onFeedItemStatusClick: (status?: FeedItemStatus) => void,
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const ACTIVITY_FEED_ITEM_ALL = 'all';
|
|
23
|
+
const ACTIVITY_FEED_ITEM_OPEN = COMMENT_STATUS_OPEN;
|
|
24
|
+
|
|
25
|
+
const statuses = [ACTIVITY_FEED_ITEM_ALL, ACTIVITY_FEED_ITEM_OPEN];
|
|
26
|
+
const statusMap = {
|
|
27
|
+
[ACTIVITY_FEED_ITEM_ALL]: { msg: messages.activitySidebarFilterOptionAll, val: undefined },
|
|
28
|
+
[ACTIVITY_FEED_ITEM_OPEN]: { msg: messages.activitySidebarFilterOptionOpen, val: COMMENT_STATUS_OPEN },
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
function ActivitySidebarFilter({
|
|
32
|
+
feedItemStatus = ACTIVITY_FEED_ITEM_ALL,
|
|
33
|
+
onFeedItemStatusClick,
|
|
34
|
+
}: ActivitySidebarFilterProps) {
|
|
35
|
+
return (
|
|
36
|
+
<div className="bcs-ActivitySidebarFilter">
|
|
37
|
+
<DropdownMenu className="bcs-ActivitySidebarFilter-dropdownMenu" constrainToWindow>
|
|
38
|
+
<PlainButton type="button">
|
|
39
|
+
<MenuToggle>
|
|
40
|
+
<FormattedMessage {...statusMap[feedItemStatus].msg} />
|
|
41
|
+
</MenuToggle>
|
|
42
|
+
</PlainButton>
|
|
43
|
+
<Menu>
|
|
44
|
+
{statuses.map(status => (
|
|
45
|
+
<SelectMenuItem
|
|
46
|
+
key={status}
|
|
47
|
+
isSelected={status === feedItemStatus}
|
|
48
|
+
onClick={() => onFeedItemStatusClick(statusMap[status].val)}
|
|
49
|
+
>
|
|
50
|
+
<FormattedMessage {...statusMap[status].msg} />
|
|
51
|
+
</SelectMenuItem>
|
|
52
|
+
))}
|
|
53
|
+
</Menu>
|
|
54
|
+
</DropdownMenu>
|
|
55
|
+
</div>
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export default ActivitySidebarFilter;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/content-sidebar/ActivitySidebarFilter.js"],"names":["React","FormattedMessage","DropdownMenu","MenuToggle","PlainButton","messages","COMMENT_STATUS_OPEN","Menu","SelectMenuItem","ACTIVITY_FEED_ITEM_ALL","ACTIVITY_FEED_ITEM_OPEN","statuses","statusMap","msg","activitySidebarFilterOptionAll","val","undefined","activitySidebarFilterOptionOpen","ActivitySidebarFilter","feedItemStatus","onFeedItemStatusClick","map","status"],"mappings":";;;;AAAA;;;;;AAMA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,gBAAT,QAAiC,YAAjC;AACA,OAAOC,YAAP,IAAuBC,UAAvB,QAAyC,gCAAzC;AACA,OAAOC,WAAP,MAAwB,+BAAxB;AACA,OAAOC,QAAP,MAAqB,YAArB;AACA,SAASC,mBAAT,QAAoC,iBAApC;AACA,SAASC,IAAT,EAAeC,cAAf,QAAqC,uBAArC;AAEA,OAAO,8BAAP;AAOA,IAAMC,sBAAsB,GAAG,KAA/B;AACA,IAAMC,uBAAuB,GAAGJ,mBAAhC;AAEA,IAAMK,QAAQ,GAAG,CAACF,sBAAD,EAAyBC,uBAAzB,CAAjB;AACA,IAAME,SAAS,iDACVH,sBADU,EACe;AAAEI,EAAAA,GAAG,EAAER,QAAQ,CAACS,8BAAhB;AAAgDC,EAAAA,GAAG,EAAEC;AAArD,CADf,+BAEVN,uBAFU,EAEgB;AAAEG,EAAAA,GAAG,EAAER,QAAQ,CAACY,+BAAhB;AAAiDF,EAAAA,GAAG,EAAET;AAAtD,CAFhB,cAAf;;AAKA,SAASY,qBAAT,OAG+B;AAAA,iCAF3BC,cAE2B;AAAA,MAF3BA,cAE2B,oCAFVV,sBAEU;AAAA,MAD3BW,qBAC2B,QAD3BA,qBAC2B;AAC3B,SACI;AAAK,IAAA,SAAS,EAAC;AAAf,KACI,oBAAC,YAAD;AAAc,IAAA,SAAS,EAAC,wCAAxB;AAAiE,IAAA,iBAAiB;AAAlF,KACI,oBAAC,WAAD;AAAa,IAAA,IAAI,EAAC;AAAlB,KACI,oBAAC,UAAD,QACI,oBAAC,gBAAD,EAAsBR,SAAS,CAACO,cAAD,CAAT,CAA0BN,GAAhD,CADJ,CADJ,CADJ,EAMI,oBAAC,IAAD,QACKF,QAAQ,CAACU,GAAT,CAAa,UAAAC,MAAM;AAAA,WAChB,oBAAC,cAAD;AACI,MAAA,GAAG,EAAEA,MADT;AAEI,MAAA,UAAU,EAAEA,MAAM,KAAKH,cAF3B;AAGI,MAAA,OAAO,EAAE;AAAA,eAAMC,qBAAqB,CAACR,SAAS,CAACU,MAAD,CAAT,CAAkBP,GAAnB,CAA3B;AAAA;AAHb,OAKI,oBAAC,gBAAD,EAAsBH,SAAS,CAACU,MAAD,CAAT,CAAkBT,GAAxC,CALJ,CADgB;AAAA,GAAnB,CADL,CANJ,CADJ,CADJ;AAsBH;;AAED,eAAeK,qBAAf","sourcesContent":["/**\n * @flow\n * @file Activity feed sidebar filter component\n * @author Box\n */\n\nimport * as React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport DropdownMenu, { MenuToggle } from '../../components/dropdown-menu';\nimport PlainButton from '../../components/plain-button';\nimport messages from './messages';\nimport { COMMENT_STATUS_OPEN } from '../../constants';\nimport { Menu, SelectMenuItem } from '../../components/menu';\nimport type { FeedItemStatus } from '../../common/types/feed';\nimport './ActivitySidebarFilter.scss';\n\ntype ActivitySidebarFilterProps = {\n feedItemStatus?: FeedItemStatus,\n onFeedItemStatusClick: (status?: FeedItemStatus) => void,\n};\n\nconst ACTIVITY_FEED_ITEM_ALL = 'all';\nconst ACTIVITY_FEED_ITEM_OPEN = COMMENT_STATUS_OPEN;\n\nconst statuses = [ACTIVITY_FEED_ITEM_ALL, ACTIVITY_FEED_ITEM_OPEN];\nconst statusMap = {\n [ACTIVITY_FEED_ITEM_ALL]: { msg: messages.activitySidebarFilterOptionAll, val: undefined },\n [ACTIVITY_FEED_ITEM_OPEN]: { msg: messages.activitySidebarFilterOptionOpen, val: COMMENT_STATUS_OPEN },\n};\n\nfunction ActivitySidebarFilter({\n feedItemStatus = ACTIVITY_FEED_ITEM_ALL,\n onFeedItemStatusClick,\n}: ActivitySidebarFilterProps) {\n return (\n <div className=\"bcs-ActivitySidebarFilter\">\n <DropdownMenu className=\"bcs-ActivitySidebarFilter-dropdownMenu\" constrainToWindow>\n <PlainButton type=\"button\">\n <MenuToggle>\n <FormattedMessage {...statusMap[feedItemStatus].msg} />\n </MenuToggle>\n </PlainButton>\n <Menu>\n {statuses.map(status => (\n <SelectMenuItem\n key={status}\n isSelected={status === feedItemStatus}\n onClick={() => onFeedItemStatusClick(statusMap[status].val)}\n >\n <FormattedMessage {...statusMap[status].msg} />\n </SelectMenuItem>\n ))}\n </Menu>\n </DropdownMenu>\n </div>\n );\n}\n\nexport default ActivitySidebarFilter;\n"],"file":"ActivitySidebarFilter.js"}
|
|
@@ -33,7 +33,9 @@ import { FormattedMessage } from 'react-intl';
|
|
|
33
33
|
import API from '../../api';
|
|
34
34
|
import messages from '../common/messages';
|
|
35
35
|
import SidebarAccessStats from './SidebarAccessStats';
|
|
36
|
-
import SidebarClassification from './SidebarClassification';
|
|
36
|
+
import SidebarClassification from './SidebarClassification'; // $FlowFixMe typescript component
|
|
37
|
+
|
|
38
|
+
import SidebarContentInsights from './SidebarContentInsights';
|
|
37
39
|
import SidebarContent from './SidebarContent';
|
|
38
40
|
import SidebarFileProperties from './SidebarFileProperties';
|
|
39
41
|
import SidebarNotices from './SidebarNotices';
|
|
@@ -176,19 +178,32 @@ function (_React$PureComponent) {
|
|
|
176
178
|
_createClass(DetailsSidebar, [{
|
|
177
179
|
key: "componentDidMount",
|
|
178
180
|
value: function componentDidMount() {
|
|
181
|
+
var _this$props = this.props,
|
|
182
|
+
hasAccessStats = _this$props.hasAccessStats,
|
|
183
|
+
hasContentInsights = _this$props.hasContentInsights,
|
|
184
|
+
fetchContentInsights = _this$props.fetchContentInsights;
|
|
179
185
|
this.fetchFile();
|
|
180
186
|
|
|
181
|
-
if (
|
|
187
|
+
if (hasAccessStats) {
|
|
182
188
|
this.fetchAccessStats();
|
|
183
189
|
}
|
|
190
|
+
|
|
191
|
+
if (hasContentInsights && fetchContentInsights) {
|
|
192
|
+
fetchContentInsights();
|
|
193
|
+
}
|
|
184
194
|
}
|
|
185
195
|
}, {
|
|
186
196
|
key: "componentDidUpdate",
|
|
187
197
|
value: function componentDidUpdate(_ref) {
|
|
188
|
-
var prevHasAccessStats = _ref.hasAccessStats
|
|
189
|
-
|
|
198
|
+
var prevHasAccessStats = _ref.hasAccessStats,
|
|
199
|
+
prevHasContentInsights = _ref.hasContentInsights;
|
|
200
|
+
var _this$props2 = this.props,
|
|
201
|
+
hasAccessStats = _this$props2.hasAccessStats,
|
|
202
|
+
hasContentInsights = _this$props2.hasContentInsights,
|
|
203
|
+
fetchContentInsights = _this$props2.fetchContentInsights; // Component visibility props such as hasAccessStats can sometimes be flipped after an async call
|
|
190
204
|
|
|
191
205
|
var hasAccessStatsChanged = prevHasAccessStats !== hasAccessStats;
|
|
206
|
+
var hasContentInsightsChanged = prevHasContentInsights !== hasContentInsights;
|
|
192
207
|
|
|
193
208
|
if (hasAccessStatsChanged) {
|
|
194
209
|
if (hasAccessStats) {
|
|
@@ -201,6 +216,10 @@ function (_React$PureComponent) {
|
|
|
201
216
|
});
|
|
202
217
|
}
|
|
203
218
|
}
|
|
219
|
+
|
|
220
|
+
if (hasContentInsightsChanged && hasContentInsights && fetchContentInsights) {
|
|
221
|
+
fetchContentInsights();
|
|
222
|
+
}
|
|
204
223
|
}
|
|
205
224
|
/**
|
|
206
225
|
* File description update callback
|
|
@@ -223,9 +242,9 @@ function (_React$PureComponent) {
|
|
|
223
242
|
value: function fetchFile() {
|
|
224
243
|
var successCallback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.fetchFileSuccessCallback;
|
|
225
244
|
var errorCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.fetchFileErrorCallback;
|
|
226
|
-
var _this$
|
|
227
|
-
api = _this$
|
|
228
|
-
fileId = _this$
|
|
245
|
+
var _this$props3 = this.props,
|
|
246
|
+
api = _this$props3.api,
|
|
247
|
+
fileId = _this$props3.fileId;
|
|
229
248
|
api.getFileAPI().getFile(fileId, successCallback, errorCallback, {
|
|
230
249
|
fields: SIDEBAR_FIELDS_TO_FETCH // TODO: replace this with DETAILS_SIDEBAR_FIELDS_TO_FETCH as we do not need all the sidebar fields
|
|
231
250
|
|
|
@@ -248,9 +267,9 @@ function (_React$PureComponent) {
|
|
|
248
267
|
* @return {void}
|
|
249
268
|
*/
|
|
250
269
|
value: function fetchAccessStats() {
|
|
251
|
-
var _this$
|
|
252
|
-
api = _this$
|
|
253
|
-
fileId = _this$
|
|
270
|
+
var _this$props4 = this.props,
|
|
271
|
+
api = _this$props4.api,
|
|
272
|
+
fileId = _this$props4.fileId;
|
|
254
273
|
var isLoadingAccessStats = this.state.isLoadingAccessStats;
|
|
255
274
|
|
|
256
275
|
if (isLoadingAccessStats) {
|
|
@@ -270,20 +289,23 @@ function (_React$PureComponent) {
|
|
|
270
289
|
}, {
|
|
271
290
|
key: "render",
|
|
272
291
|
value: function render() {
|
|
273
|
-
var _this$
|
|
274
|
-
classification = _this$
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
292
|
+
var _this$props5 = this.props,
|
|
293
|
+
classification = _this$props5.classification,
|
|
294
|
+
contentInsights = _this$props5.contentInsights,
|
|
295
|
+
elementId = _this$props5.elementId,
|
|
296
|
+
hasProperties = _this$props5.hasProperties,
|
|
297
|
+
hasNotices = _this$props5.hasNotices,
|
|
298
|
+
hasAccessStats = _this$props5.hasAccessStats,
|
|
299
|
+
hasClassification = _this$props5.hasClassification,
|
|
300
|
+
hasContentInsights = _this$props5.hasContentInsights,
|
|
301
|
+
hasRetentionPolicy = _this$props5.hasRetentionPolicy,
|
|
302
|
+
hasVersions = _this$props5.hasVersions,
|
|
303
|
+
onAccessStatsClick = _this$props5.onAccessStatsClick,
|
|
304
|
+
onVersionHistoryClick = _this$props5.onVersionHistoryClick,
|
|
305
|
+
onClassificationClick = _this$props5.onClassificationClick,
|
|
306
|
+
onContentInsightsClick = _this$props5.onContentInsightsClick,
|
|
307
|
+
onRetentionPolicyExtendClick = _this$props5.onRetentionPolicyExtendClick,
|
|
308
|
+
retentionPolicy = _this$props5.retentionPolicy;
|
|
287
309
|
var _this$state = this.state,
|
|
288
310
|
accessStats = _this$state.accessStats,
|
|
289
311
|
accessStatsError = _this$state.accessStatsError,
|
|
@@ -308,7 +330,10 @@ function (_React$PureComponent) {
|
|
|
308
330
|
accessStats: accessStats,
|
|
309
331
|
file: file,
|
|
310
332
|
onAccessStatsClick: onAccessStatsClick
|
|
311
|
-
}, accessStatsError)), file &&
|
|
333
|
+
}, accessStatsError)), file && hasContentInsights && React.createElement(SidebarContentInsights, {
|
|
334
|
+
contentInsights: contentInsights,
|
|
335
|
+
onContentInsightsClick: onContentInsightsClick
|
|
336
|
+
}), file && hasProperties && React.createElement(SidebarSection, {
|
|
312
337
|
interactionTarget: SECTION_TARGETS.FILE_PROPERTIES,
|
|
313
338
|
title: React.createElement(FormattedMessage, messages.sidebarProperties)
|
|
314
339
|
}, hasVersions && React.createElement(SidebarVersions, {
|
|
@@ -13,6 +13,8 @@ import API from '../../api';
|
|
|
13
13
|
import messages from '../common/messages';
|
|
14
14
|
import SidebarAccessStats from './SidebarAccessStats';
|
|
15
15
|
import SidebarClassification from './SidebarClassification';
|
|
16
|
+
// $FlowFixMe typescript component
|
|
17
|
+
import SidebarContentInsights from './SidebarContentInsights';
|
|
16
18
|
import SidebarContent from './SidebarContent';
|
|
17
19
|
import SidebarFileProperties from './SidebarFileProperties';
|
|
18
20
|
import SidebarNotices from './SidebarNotices';
|
|
@@ -32,7 +34,8 @@ import {
|
|
|
32
34
|
IS_ERROR_DISPLAYED,
|
|
33
35
|
SIDEBAR_VIEW_DETAILS,
|
|
34
36
|
} from '../../constants';
|
|
35
|
-
import type {
|
|
37
|
+
import type { Errors } from '../common/flowTypes';
|
|
38
|
+
import type { ClassificationInfo, ContentInsights, FileAccessStats } from './flowTypes';
|
|
36
39
|
import type { WithLoggerProps } from '../../common/types/logging';
|
|
37
40
|
import type { ElementsErrorCallback, ErrorContextProps, ElementsXhrError } from '../../common/types/api';
|
|
38
41
|
import type { BoxItem } from '../../common/types/core';
|
|
@@ -40,10 +43,13 @@ import './DetailsSidebar.scss';
|
|
|
40
43
|
|
|
41
44
|
type ExternalProps = {
|
|
42
45
|
classification?: ClassificationInfo,
|
|
46
|
+
contentInsights?: ContentInsights,
|
|
43
47
|
elementId: string,
|
|
48
|
+
fetchContentInsights?: () => void,
|
|
44
49
|
fileId: string,
|
|
45
50
|
hasAccessStats?: boolean,
|
|
46
51
|
hasClassification?: boolean,
|
|
52
|
+
hasContentInsights?: boolean,
|
|
47
53
|
hasNotices?: boolean,
|
|
48
54
|
hasProperties?: boolean,
|
|
49
55
|
hasRetentionPolicy?: boolean,
|
|
@@ -51,6 +57,7 @@ type ExternalProps = {
|
|
|
51
57
|
hasVersions?: boolean,
|
|
52
58
|
onAccessStatsClick?: Function,
|
|
53
59
|
onClassificationClick?: (e: SyntheticEvent<HTMLButtonElement>) => void,
|
|
60
|
+
onContentInsightsClick?: () => void,
|
|
54
61
|
onRetentionPolicyExtendClick?: Function,
|
|
55
62
|
onVersionHistoryClick?: Function,
|
|
56
63
|
retentionPolicy?: Object,
|
|
@@ -97,16 +104,24 @@ class DetailsSidebar extends React.PureComponent<Props, State> {
|
|
|
97
104
|
}
|
|
98
105
|
|
|
99
106
|
componentDidMount() {
|
|
107
|
+
const { hasAccessStats, hasContentInsights, fetchContentInsights } = this.props;
|
|
108
|
+
|
|
100
109
|
this.fetchFile();
|
|
101
|
-
if (
|
|
110
|
+
if (hasAccessStats) {
|
|
102
111
|
this.fetchAccessStats();
|
|
103
112
|
}
|
|
113
|
+
|
|
114
|
+
if (hasContentInsights && fetchContentInsights) {
|
|
115
|
+
fetchContentInsights();
|
|
116
|
+
}
|
|
104
117
|
}
|
|
105
118
|
|
|
106
|
-
componentDidUpdate({ hasAccessStats: prevHasAccessStats }: Props) {
|
|
107
|
-
const { hasAccessStats } = this.props;
|
|
119
|
+
componentDidUpdate({ hasAccessStats: prevHasAccessStats, hasContentInsights: prevHasContentInsights }: Props) {
|
|
120
|
+
const { hasAccessStats, hasContentInsights, fetchContentInsights } = this.props;
|
|
108
121
|
// Component visibility props such as hasAccessStats can sometimes be flipped after an async call
|
|
109
122
|
const hasAccessStatsChanged = prevHasAccessStats !== hasAccessStats;
|
|
123
|
+
const hasContentInsightsChanged = prevHasContentInsights !== hasContentInsights;
|
|
124
|
+
|
|
110
125
|
if (hasAccessStatsChanged) {
|
|
111
126
|
if (hasAccessStats) {
|
|
112
127
|
this.fetchAccessStats();
|
|
@@ -118,6 +133,10 @@ class DetailsSidebar extends React.PureComponent<Props, State> {
|
|
|
118
133
|
});
|
|
119
134
|
}
|
|
120
135
|
}
|
|
136
|
+
|
|
137
|
+
if (hasContentInsightsChanged && hasContentInsights && fetchContentInsights) {
|
|
138
|
+
fetchContentInsights();
|
|
139
|
+
}
|
|
121
140
|
}
|
|
122
141
|
|
|
123
142
|
/**
|
|
@@ -316,16 +335,19 @@ class DetailsSidebar extends React.PureComponent<Props, State> {
|
|
|
316
335
|
render() {
|
|
317
336
|
const {
|
|
318
337
|
classification,
|
|
338
|
+
contentInsights,
|
|
319
339
|
elementId,
|
|
320
340
|
hasProperties,
|
|
321
341
|
hasNotices,
|
|
322
342
|
hasAccessStats,
|
|
323
343
|
hasClassification,
|
|
344
|
+
hasContentInsights,
|
|
324
345
|
hasRetentionPolicy,
|
|
325
346
|
hasVersions,
|
|
326
347
|
onAccessStatsClick,
|
|
327
348
|
onVersionHistoryClick,
|
|
328
349
|
onClassificationClick,
|
|
350
|
+
onContentInsightsClick,
|
|
329
351
|
onRetentionPolicyExtendClick,
|
|
330
352
|
retentionPolicy,
|
|
331
353
|
}: Props = this.props;
|
|
@@ -356,6 +378,12 @@ class DetailsSidebar extends React.PureComponent<Props, State> {
|
|
|
356
378
|
{...accessStatsError}
|
|
357
379
|
/>
|
|
358
380
|
)}
|
|
381
|
+
{file && hasContentInsights && (
|
|
382
|
+
<SidebarContentInsights
|
|
383
|
+
contentInsights={contentInsights}
|
|
384
|
+
onContentInsightsClick={onContentInsightsClick}
|
|
385
|
+
/>
|
|
386
|
+
)}
|
|
359
387
|
{file && hasProperties && (
|
|
360
388
|
<SidebarSection
|
|
361
389
|
interactionTarget={SECTION_TARGETS.FILE_PROPERTIES}
|