box-ui-elements 16.1.0-beta.9 → 17.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/CONTRIBUTING.md +4 -0
- package/README.md +7 -1
- package/dist/explorer.css +1 -1
- package/dist/explorer.js +19 -19
- 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 -17
- package/dist/sharing.css +1 -1
- package/dist/sharing.js +16 -55
- package/dist/sidebar.css +1 -1
- package/dist/sidebar.js +17 -17
- package/dist/uploader.css +1 -1
- package/dist/uploader.js +12 -12
- package/es/api/Feed.js +85 -38
- package/es/api/Feed.js.flow +46 -1
- package/es/api/Feed.js.map +1 -1
- package/es/api/Item.js +16 -10
- package/es/api/Item.js.flow +7 -4
- package/es/api/Item.js.map +1 -1
- package/es/api/ThreadedComments.js +58 -23
- package/es/api/ThreadedComments.js.flow +40 -0
- package/es/api/ThreadedComments.js.map +1 -1
- package/es/common/types/feed.js +1 -1
- package/es/common/types/feed.js.flow +34 -0
- package/es/common/types/feed.js.map +1 -1
- package/es/components/avatar/Avatar.js +22 -5
- package/es/components/avatar/Avatar.js.flow +24 -7
- package/es/components/avatar/Avatar.js.map +1 -1
- package/es/components/avatar/Avatar.scss +42 -0
- package/es/components/avatar/Avatar.stories.js +58 -0
- package/es/components/avatar/Avatar.stories.js.map +1 -1
- package/es/components/avatar/messages.js +9 -0
- package/es/components/avatar/messages.js.map +1 -0
- package/es/components/badgeable/Badgeable.scss +1 -1
- package/es/components/breadcrumb/Breadcrumb.js +1 -1
- package/es/components/breadcrumb/Breadcrumb.js.flow +1 -1
- package/es/components/breadcrumb/Breadcrumb.js.map +1 -1
- package/es/components/button-group/ButtonGroup.scss +2 -2
- package/es/components/checkbox/Checkbox.js +5 -1
- package/es/components/checkbox/Checkbox.js.flow +7 -0
- package/es/components/checkbox/Checkbox.js.map +1 -1
- package/es/components/checkbox/Checkbox.scss +2 -2
- package/es/components/close-button/CloseButton.js +2 -2
- package/es/components/close-button/CloseButton.js.flow +2 -2
- package/es/components/close-button/CloseButton.js.map +1 -1
- package/es/components/contact-datalist-item/ContactDatalistItem.scss +1 -1
- package/es/components/date-picker/DatePicker.js +2 -2
- package/es/components/date-picker/DatePicker.js.map +1 -1
- package/es/components/date-picker/DatePicker.scss +1 -1
- package/es/components/draft-js-editor/DraftJSEditor.scss +1 -1
- package/es/components/dropdown-menu/DropdownMenu.js +5 -3
- package/es/components/dropdown-menu/DropdownMenu.js.flow +8 -2
- package/es/components/dropdown-menu/DropdownMenu.js.map +1 -1
- package/es/components/dropdown-menu/DropdownMenu.scss +6 -4
- package/es/components/error-mask/ErrorMask.scss +1 -1
- package/es/components/flyout/Flyout.js +9 -0
- package/es/components/flyout/Flyout.js.flow +13 -0
- package/es/components/flyout/Flyout.js.map +1 -1
- package/es/components/flyout/Flyout.scss +1 -1
- package/es/components/flyout/Overlay.js +2 -1
- package/es/components/flyout/Overlay.js.flow +2 -1
- package/es/components/flyout/Overlay.js.map +1 -1
- package/es/components/grid-view/GridView.js +3 -1
- package/es/components/grid-view/GridView.js.flow +3 -2
- package/es/components/grid-view/GridView.js.map +1 -1
- package/es/components/grid-view/GridViewSlider.js +5 -2
- package/es/components/grid-view/GridViewSlider.js.flow +5 -2
- package/es/components/grid-view/GridViewSlider.js.map +1 -1
- package/es/components/grid-view/GridViewSlider.scss +0 -10
- package/es/components/inline-error/InlineError.stories.js +12 -0
- package/es/components/inline-error/InlineError.stories.js.flow +9 -0
- package/es/components/inline-error/InlineError.stories.js.map +1 -0
- package/es/components/inline-notice/InlineNotice.stories.js +42 -0
- package/es/components/inline-notice/InlineNotice.stories.js.flow +59 -0
- package/es/components/inline-notice/InlineNotice.stories.js.map +1 -0
- package/es/components/label/InfoIconWithTooltip.js +2 -2
- package/es/components/label/InfoIconWithTooltip.js.map +1 -1
- package/es/components/label/Label.scss +1 -1
- package/es/components/media-query/stories/MediaQuery.stories.js +4 -2
- package/es/components/media-query/stories/MediaQuery.stories.js.flow +11 -2
- package/es/components/media-query/stories/MediaQuery.stories.js.map +1 -1
- package/es/components/media-query/types.js.flow +1 -0
- package/es/components/media-query/types.js.map +1 -1
- package/es/components/media-query/useMediaQuery.js +3 -1
- package/es/components/media-query/useMediaQuery.js.flow +3 -0
- package/es/components/media-query/useMediaQuery.js.map +1 -1
- package/es/components/menu/MenuHeader.scss +1 -1
- package/es/components/menu/SubmenuItem.js +3 -1
- package/es/components/menu/SubmenuItem.js.map +1 -1
- package/es/components/modal/Modal.scss +15 -0
- package/es/components/modal/ModalDialog.js +40 -10
- package/es/components/modal/ModalDialog.js.flow +44 -5
- package/es/components/modal/ModalDialog.js.map +1 -1
- package/es/components/nav-sidebar/NavSidebar.scss +1 -1
- package/es/components/nav-sidebar/NavSidebar.stories.js +37 -0
- package/es/components/nav-sidebar/NavSidebar.stories.js.flow +54 -0
- package/es/components/nav-sidebar/NavSidebar.stories.js.map +1 -0
- package/es/components/pill-cloud/PillCloud.stories.js +88 -0
- package/es/components/pill-cloud/PillCloud.stories.js.flow +48 -0
- package/es/components/pill-cloud/PillCloud.stories.js.map +1 -0
- package/es/components/pill-selector-dropdown/PillSelector.js +20 -11
- package/es/components/pill-selector-dropdown/PillSelector.js.flow +26 -4
- package/es/components/pill-selector-dropdown/PillSelector.js.map +1 -1
- package/es/components/pill-selector-dropdown/PillSelector.scss +4 -0
- package/es/components/pill-selector-dropdown/PillSelectorDropdown.js +1 -0
- package/es/components/pill-selector-dropdown/PillSelectorDropdown.js.flow +1 -0
- package/es/components/pill-selector-dropdown/PillSelectorDropdown.js.map +1 -1
- package/es/components/pill-selector-dropdown/_mixins.scss +1 -1
- package/es/components/popper/PopperComponent.js +3 -1
- package/es/components/popper/PopperComponent.js.flow +3 -2
- package/es/components/popper/PopperComponent.js.map +1 -1
- package/es/components/radio/RadioButton.scss +1 -1
- package/es/components/search-form/SearchForm.js +21 -11
- package/es/components/search-form/SearchForm.js.flow +30 -6
- package/es/components/search-form/SearchForm.js.map +1 -1
- package/es/components/select-button/SelectButton.js +6 -2
- package/es/components/select-button/SelectButton.js.flow +23 -2
- package/es/components/select-button/SelectButton.js.map +1 -1
- package/es/components/select-field/BaseSelectField.js +6 -2
- package/es/components/select-field/BaseSelectField.js.flow +19 -2
- package/es/components/select-field/BaseSelectField.js.map +1 -1
- package/es/components/select-field/SelectField.scss +8 -1
- package/es/components/selector-dropdown/SelectorDropdown.js +11 -3
- package/es/components/selector-dropdown/SelectorDropdown.js.flow +22 -5
- package/es/components/selector-dropdown/SelectorDropdown.js.map +1 -1
- package/es/components/selector-dropdown/SelectorDropdown.scss +2 -2
- package/es/components/table/makeSelectable.js +38 -7
- package/es/components/table/makeSelectable.js.flow +33 -6
- package/es/components/table/makeSelectable.js.map +1 -1
- package/es/components/text-area/TextArea.scss +1 -1
- package/es/components/text-input/TextInput.scss +1 -1
- package/es/components/text-input-with-copy-button/TextInputWithCopyButton.js +3 -2
- package/es/components/text-input-with-copy-button/TextInputWithCopyButton.js.flow +4 -1
- package/es/components/text-input-with-copy-button/TextInputWithCopyButton.js.map +1 -1
- package/es/components/text-input-with-copy-button/TextInputWithCopyButton.scss +11 -7
- package/es/components/thumbnail-card/ThumbnailCard.scss +1 -1
- package/es/components/time/ReadableTime.stories.js +46 -0
- package/es/components/time/ReadableTime.stories.js.flow +56 -0
- package/es/components/time/ReadableTime.stories.js.map +1 -0
- package/es/components/toggle/Toggle.js +11 -4
- package/es/components/toggle/Toggle.js.flow +16 -5
- package/es/components/toggle/Toggle.js.map +1 -1
- package/es/components/toggle/Toggle.scss +3 -3
- package/es/components/tooltip/CloseButton.js +24 -0
- package/es/components/tooltip/CloseButton.js.map +1 -0
- package/es/components/tooltip/Tooltip.js +4 -10
- package/es/components/tooltip/Tooltip.js.map +1 -1
- package/es/constants.js +7 -0
- package/es/constants.js.flow +7 -0
- package/es/constants.js.map +1 -1
- package/es/elements/common/_variables.scss +7 -2
- package/es/elements/common/base.scss +14 -0
- package/es/elements/common/breadcrumbs/Breadcrumb.scss +1 -1
- package/es/elements/common/breadcrumbs/BreadcrumbDropdown.scss +1 -1
- package/es/elements/common/breadcrumbs/InlineBreadcrumbs.scss +2 -2
- package/es/elements/common/header/Header.js +6 -2
- package/es/elements/common/header/Header.js.flow +7 -2
- package/es/elements/common/header/Header.js.map +1 -1
- package/es/elements/common/header/Logo.js +2 -1
- package/es/elements/common/header/Logo.js.flow +5 -1
- package/es/elements/common/header/Logo.js.map +1 -1
- package/es/elements/common/item/IconCell.js +68 -0
- package/es/elements/common/item/IconCell.js.flow +55 -0
- package/es/elements/common/item/IconCell.js.map +1 -0
- package/es/elements/common/item/ItemDetails.scss +1 -1
- package/es/elements/common/item/iconCellRenderer.js +5 -36
- package/es/elements/common/item/iconCellRenderer.js.flow +6 -22
- package/es/elements/common/item/iconCellRenderer.js.map +1 -1
- package/es/elements/common/messages.js +28 -0
- package/es/elements/common/messages.js.flow +35 -0
- package/es/elements/common/messages.js.map +1 -1
- package/es/elements/common/modal.scss +0 -2
- package/es/elements/common/share-access-select/ShareAccessSelect.scss +1 -1
- package/es/elements/common/sub-header/AddButton.js +4 -1
- package/es/elements/common/sub-header/AddButton.js.flow +2 -1
- package/es/elements/common/sub-header/AddButton.js.map +1 -1
- package/es/elements/common/sub-header/Sort.js +4 -10
- package/es/elements/common/sub-header/Sort.js.flow +7 -6
- package/es/elements/common/sub-header/Sort.js.map +1 -1
- package/es/elements/common/sub-header/SortButton.js +19 -6
- package/es/elements/common/sub-header/SortButton.js.flow +23 -10
- package/es/elements/common/sub-header/SortButton.js.map +1 -1
- package/es/elements/common/sub-header/ViewModeChangeButton.js +3 -3
- package/es/elements/common/sub-header/ViewModeChangeButton.js.flow +3 -3
- package/es/elements/common/sub-header/ViewModeChangeButton.js.map +1 -1
- package/es/elements/content-explorer/Content.js.flow +2 -1
- package/es/elements/content-explorer/Content.js.map +1 -1
- package/es/elements/content-explorer/ContentExplorer.js +63 -20
- package/es/elements/content-explorer/ContentExplorer.js.flow +50 -13
- package/es/elements/content-explorer/ContentExplorer.js.map +1 -1
- package/es/elements/content-explorer/ItemGrid.js +55 -7
- package/es/elements/content-explorer/ItemGrid.js.flow +60 -9
- package/es/elements/content-explorer/ItemGrid.js.map +1 -1
- package/es/elements/content-explorer/ItemGridThumbnail.js +5 -2
- package/es/elements/content-explorer/ItemGridThumbnail.js.flow +5 -2
- package/es/elements/content-explorer/ItemGridThumbnail.js.map +1 -1
- package/es/elements/content-explorer/ItemList.js +4 -2
- package/es/elements/content-explorer/ItemList.js.flow +4 -2
- package/es/elements/content-explorer/ItemList.js.map +1 -1
- package/es/elements/content-explorer/ItemList.scss +16 -8
- package/es/elements/content-explorer/MoreOptions.js +6 -4
- package/es/elements/content-explorer/MoreOptions.js.flow +11 -4
- package/es/elements/content-explorer/MoreOptions.js.map +1 -1
- package/es/elements/content-open-with/ContentOpenWith.scss +1 -1
- package/es/elements/content-picker/Footer.js +15 -6
- package/es/elements/content-picker/Footer.js.flow +62 -51
- package/es/elements/content-picker/Footer.js.map +1 -1
- package/es/elements/content-picker/ItemList.scss +1 -1
- package/es/elements/content-preview/ContentPreview.js +44 -12
- package/es/elements/content-preview/ContentPreview.js.flow +43 -6
- package/es/elements/content-preview/ContentPreview.js.map +1 -1
- package/es/elements/content-preview/preview-header/PreviewHeader.scss +1 -1
- package/es/elements/content-sharing/ContentSharing.js +2 -2
- package/es/elements/content-sharing/ContentSharing.js.flow +2 -2
- package/es/elements/content-sharing/ContentSharing.js.map +1 -1
- package/es/elements/content-sidebar/ActivitySidebar.js +291 -62
- package/es/elements/content-sidebar/ActivitySidebar.js.flow +262 -17
- package/es/elements/content-sidebar/ActivitySidebar.js.map +1 -1
- package/es/elements/content-sidebar/ActivitySidebar.scss +7 -0
- package/es/elements/content-sidebar/ActivitySidebarFilter.js +36 -18
- package/es/elements/content-sidebar/ActivitySidebarFilter.js.flow +64 -23
- package/es/elements/content-sidebar/ActivitySidebarFilter.js.map +1 -1
- package/es/elements/content-sidebar/AddTaskMenu.scss +1 -1
- package/es/elements/content-sidebar/SidebarContent.js +2 -2
- package/es/elements/content-sidebar/SidebarContent.js.flow +1 -1
- package/es/elements/content-sidebar/SidebarContent.js.map +1 -1
- package/es/elements/content-sidebar/SidebarContent.scss +3 -3
- package/es/elements/content-sidebar/SidebarNav.js +3 -17
- package/es/elements/content-sidebar/SidebarNav.js.flow +3 -15
- package/es/elements/content-sidebar/SidebarNav.js.map +1 -1
- package/es/elements/content-sidebar/SidebarNavSign.js +48 -69
- package/es/elements/content-sidebar/SidebarNavSign.js.map +1 -1
- package/es/elements/content-sidebar/SidebarNavSign.scss +3 -25
- package/es/elements/content-sidebar/SidebarNavSignButton.js +79 -0
- package/es/elements/content-sidebar/SidebarNavSignButton.js.map +1 -0
- package/es/elements/content-sidebar/SidebarNavSignButton.scss +27 -0
- package/es/elements/content-sidebar/activity-feed/Avatar.js +4 -2
- package/es/elements/content-sidebar/activity-feed/Avatar.js.flow +5 -2
- package/es/elements/content-sidebar/activity-feed/Avatar.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js +61 -15
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js.flow +73 -28
- 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 +122 -53
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js.flow +80 -13
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.scss +11 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.js +9 -2
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.scss +28 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js +27 -7
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js.flow +48 -29
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.scss +69 -6
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js +35 -4
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js.flow +42 -5
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.scss +15 -0
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js +21 -8
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js.flow +30 -5
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.scss +4 -7
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js +45 -15
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js.flow +43 -13
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.scss +26 -3
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js +29 -48
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js.flow +67 -56
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.scss +1 -1
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js +14 -53
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js.flow +16 -51
- package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js +3 -2
- package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js.flow +5 -4
- package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotation-thread/types.js +2 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/types.js.flow +7 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/types.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js +29 -17
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js.flow +32 -10
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationThread.js +317 -63
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationThread.js.flow +249 -55
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationThread.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js +27 -93
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js.flow +42 -83
- package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js +15 -6
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js.flow +27 -12
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.scss +11 -8
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityLink.scss +1 -1
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js +3 -1
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js.flow +3 -1
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.scss +5 -0
- package/es/elements/content-sidebar/activity-feed/comment/BaseComment.js +385 -0
- package/es/elements/content-sidebar/activity-feed/comment/BaseComment.js.flow +456 -0
- package/es/elements/content-sidebar/activity-feed/comment/BaseComment.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/comment/BaseComment.scss +30 -0
- package/es/elements/content-sidebar/activity-feed/comment/Comment.js +53 -9
- package/es/elements/content-sidebar/activity-feed/comment/Comment.js.flow +42 -5
- package/es/elements/content-sidebar/activity-feed/comment/Comment.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/comment/Comment.scss +10 -0
- package/es/elements/content-sidebar/activity-feed/comment/CreateReply.js +54 -0
- package/es/elements/content-sidebar/activity-feed/comment/CreateReply.js.flow +72 -0
- package/es/elements/content-sidebar/activity-feed/comment/CreateReply.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/comment/CreateReply.scss +21 -0
- package/es/elements/content-sidebar/activity-feed/comment/Replies.scss +41 -0
- package/es/elements/content-sidebar/activity-feed/comment/RepliesToggle.js +44 -0
- package/es/elements/content-sidebar/activity-feed/comment/RepliesToggle.js.flow +41 -0
- package/es/elements/content-sidebar/activity-feed/comment/RepliesToggle.js.map +1 -0
- package/es/elements/content-sidebar/activity-feed/comment/RepliesToggle.scss +6 -0
- package/es/elements/content-sidebar/activity-feed/comment/messages.js +16 -0
- package/es/elements/content-sidebar/activity-feed/comment/messages.js.flow +20 -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 +1 -1
- package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js.flow +3 -3
- package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.scss +1 -1
- package/es/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.scss +1 -1
- package/es/elements/content-sidebar/activity-feed/common/activity-message/messages.js +1 -1
- package/es/elements/content-sidebar/activity-feed/common/activity-message/messages.js.flow +2 -2
- 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.scss +1 -1
- package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js +1 -0
- package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js.flow +1 -0
- package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/task-new/AssigneeDetails.scss +1 -1
- package/es/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.js +7 -8
- package/es/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.js.flow +11 -7
- package/es/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.scss +1 -5
- package/es/elements/content-sidebar/activity-feed/task-new/Task.js +2 -5
- package/es/elements/content-sidebar/activity-feed/task-new/Task.js.flow +1 -2
- package/es/elements/content-sidebar/activity-feed/task-new/Task.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/task-new/Task.scss +1 -8
- package/es/elements/content-sidebar/messages.js +22 -2
- package/es/elements/content-sidebar/messages.js.flow +29 -4
- package/es/elements/content-sidebar/messages.js.map +1 -1
- package/es/elements/content-sidebar/skills/timeline/Timeline.scss +1 -1
- package/es/elements/content-sidebar/skills/transcript/Transcript.scss +1 -1
- package/es/elements/content-sidebar/versions/VersionsGroup.scss +1 -1
- package/es/elements/content-sidebar/versions/VersionsItem.scss +3 -3
- package/es/elements/content-uploader/Footer.js +9 -3
- package/es/elements/content-uploader/Footer.js.flow +23 -3
- package/es/elements/content-uploader/Footer.js.map +1 -1
- package/es/elements/content-uploader/Footer.scss +0 -1
- package/es/elements/content-uploader/ItemAction.js +8 -4
- package/es/elements/content-uploader/ItemAction.js.flow +6 -3
- package/es/elements/content-uploader/ItemAction.js.map +1 -1
- package/es/elements/content-uploader/ItemRemove.js +11 -6
- package/es/elements/content-uploader/ItemRemove.js.flow +18 -6
- package/es/elements/content-uploader/ItemRemove.js.map +1 -1
- package/es/elements/content-uploader/UploadInput.js +21 -9
- package/es/elements/content-uploader/UploadInput.js.flow +19 -9
- package/es/elements/content-uploader/UploadInput.js.map +1 -1
- package/es/features/advanced-content-insights/AdvancedContentInsightsToggle.js +44 -0
- package/es/features/advanced-content-insights/AdvancedContentInsightsToggle.js.map +1 -0
- package/es/features/advanced-content-insights/AdvancedContentInsightsToggle.scss +19 -0
- package/es/features/advanced-content-insights/messages.js +17 -0
- package/es/features/advanced-content-insights/messages.js.map +1 -0
- package/es/features/classification/classificationColorsMap.js +1 -1
- package/es/features/classification/classificationColorsMap.js.flow +1 -1
- package/es/features/classification/classificationColorsMap.js.map +1 -1
- package/es/features/collaborator-avatars/CollaboratorAvatarItem.js +13 -9
- package/es/features/collaborator-avatars/CollaboratorAvatarItem.js.flow +11 -8
- package/es/features/collaborator-avatars/CollaboratorAvatarItem.js.map +1 -1
- package/es/features/collaborator-avatars/CollaboratorAvatars.scss +1 -1
- package/es/features/collaborator-avatars/CollaboratorList.js +4 -5
- package/es/features/collaborator-avatars/CollaboratorList.js.flow +3 -4
- package/es/features/collaborator-avatars/CollaboratorList.js.map +1 -1
- package/es/features/collaborator-avatars/CollaboratorListItem.js +7 -9
- package/es/features/collaborator-avatars/CollaboratorListItem.js.flow +7 -13
- package/es/features/collaborator-avatars/CollaboratorListItem.js.map +1 -1
- package/es/features/collaborator-avatars/CollaboratorListItem.scss +7 -3
- package/es/features/collapsible-sidebar/CollapsibleSidebar.js +3 -2
- package/es/features/collapsible-sidebar/CollapsibleSidebar.js.flow +5 -2
- package/es/features/collapsible-sidebar/CollapsibleSidebar.js.map +1 -1
- package/es/features/collapsible-sidebar/CollapsibleSidebar.scss +4 -7
- package/es/features/collapsible-sidebar/CollapsibleSidebarLogo.js +3 -1
- package/es/features/collapsible-sidebar/CollapsibleSidebarLogo.js.flow +15 -11
- package/es/features/collapsible-sidebar/CollapsibleSidebarLogo.js.map +1 -1
- package/es/features/content-explorer/content-explorer/ContentExplorer.js +146 -58
- package/es/features/content-explorer/content-explorer/ContentExplorer.js.flow +97 -20
- package/es/features/content-explorer/content-explorer/ContentExplorer.js.map +1 -1
- package/es/features/content-explorer/content-explorer/ContentExplorer.scss +67 -8
- package/es/features/content-explorer/content-explorer/ContentExplorerActionButtons.js +58 -11
- package/es/features/content-explorer/content-explorer/ContentExplorerActionButtons.js.flow +53 -13
- package/es/features/content-explorer/content-explorer/ContentExplorerActionButtons.js.map +1 -1
- package/es/features/content-explorer/content-explorer/ContentExplorerFolderTreeBreadcrumbs.js +68 -0
- package/es/features/content-explorer/content-explorer/ContentExplorerFolderTreeBreadcrumbs.js.flow +82 -0
- package/es/features/content-explorer/content-explorer/ContentExplorerFolderTreeBreadcrumbs.js.map +1 -0
- package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js +13 -2
- package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js.flow +22 -7
- package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js.map +1 -1
- package/es/features/content-explorer/content-explorer/ContentExplorerIncludeSubfolders.js +33 -0
- package/es/features/content-explorer/content-explorer/ContentExplorerIncludeSubfolders.js.flow +30 -0
- package/es/features/content-explorer/content-explorer/ContentExplorerIncludeSubfolders.js.map +1 -0
- package/es/features/content-explorer/content-explorer/ContentExplorerSelectAll.js +16 -10
- package/es/features/content-explorer/content-explorer/ContentExplorerSelectAll.js.flow +34 -20
- package/es/features/content-explorer/content-explorer/ContentExplorerSelectAll.js.map +1 -1
- package/es/features/content-explorer/content-explorer/constants.js +7 -0
- package/es/features/content-explorer/content-explorer/constants.js.flow +6 -0
- package/es/features/content-explorer/content-explorer/constants.js.map +1 -0
- package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js +1 -0
- package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js.flow +13 -0
- package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js.map +1 -1
- package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js +42 -0
- package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js.flow +31 -0
- package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js.map +1 -1
- package/es/features/content-explorer/item-list/ItemList.js +20 -5
- package/es/features/content-explorer/item-list/ItemList.js.flow +17 -1
- package/es/features/content-explorer/item-list/ItemList.js.map +1 -1
- package/es/features/content-explorer/item-list/ItemList.scss +1 -1
- package/es/features/content-explorer/item-list/ItemListButton.js +4 -1
- package/es/features/content-explorer/item-list/ItemListButton.js.flow +10 -2
- package/es/features/content-explorer/item-list/ItemListButton.js.map +1 -1
- package/es/features/content-explorer/item-list/ItemListIcon.js +12 -45
- package/es/features/content-explorer/item-list/ItemListIcon.js.flow +5 -33
- package/es/features/content-explorer/item-list/ItemListIcon.js.map +1 -1
- package/es/features/content-explorer/item-list/ItemListName.js +2 -2
- package/es/features/content-explorer/item-list/ItemListName.js.flow +3 -2
- package/es/features/content-explorer/item-list/ItemListName.js.map +1 -1
- package/es/features/content-explorer/messages.js +23 -19
- package/es/features/content-explorer/messages.js.flow +41 -24
- package/es/features/content-explorer/messages.js.map +1 -1
- package/es/features/content-explorer/prop-types.js +2 -2
- package/es/features/content-explorer/prop-types.js.flow +2 -2
- package/es/features/content-explorer/prop-types.js.map +1 -1
- package/es/features/content-insights/_mixins.scss +1 -1
- package/es/features/content-insights/charts/bar/Bar.js +21 -2
- package/es/features/content-insights/charts/bar/Bar.js.map +1 -1
- package/es/features/content-insights/charts/bar/BarChart.js +6 -3
- package/es/features/content-insights/charts/bar/BarChart.js.map +1 -1
- package/es/features/invite-collaborators-modal/InviteCollaboratorsModal.scss +1 -1
- package/es/features/message-center/components/templates/common/styles/MessageFooter.scss +1 -1
- package/es/features/metadata-based-view/IconWithTooltip.js +4 -4
- package/es/features/metadata-based-view/IconWithTooltip.js.flow +4 -4
- package/es/features/metadata-based-view/IconWithTooltip.js.map +1 -1
- package/es/features/metadata-based-view/MetadataBasedItemList.scss +1 -1
- package/es/features/metadata-instance-editor/CascadePolicy.scss +1 -1
- package/es/features/metadata-instance-editor/TemplateDropdown.js +9 -21
- package/es/features/metadata-instance-editor/TemplateDropdown.js.flow +4 -10
- package/es/features/metadata-instance-editor/TemplateDropdown.js.map +1 -1
- package/es/features/metadata-instance-editor/TemplateDropdown.scss +2 -2
- package/es/features/metadata-instance-fields/EnumMetadataField.scss +2 -2
- package/es/features/metadata-instance-fields/MultiSelectMetadataField.scss +1 -1
- package/es/features/metadata-instance-fields/ReadOnlyMetadataField.scss +2 -2
- package/es/features/presence/PresenceAvatarList.scss +1 -1
- package/es/features/presence/PresenceCollaborator.scss +1 -1
- package/es/features/query-bar/styles/Condition.scss +2 -2
- package/es/features/quick-search/QuickSearchItem.js +4 -3
- package/es/features/quick-search/QuickSearchItem.js.flow +4 -3
- package/es/features/quick-search/QuickSearchItem.js.map +1 -1
- package/es/features/shared-link-settings-modal/ExpirationSection.js +5 -0
- package/es/features/shared-link-settings-modal/ExpirationSection.js.flow +4 -0
- package/es/features/shared-link-settings-modal/ExpirationSection.js.map +1 -1
- package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js +9 -3
- package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js.flow +9 -5
- package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js.map +1 -1
- package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.scss +3 -3
- package/es/features/shared-link-settings-modal/VanityNameSection.js +2 -2
- package/es/features/shared-link-settings-modal/VanityNameSection.js.flow +2 -2
- package/es/features/shared-link-settings-modal/VanityNameSection.js.map +1 -1
- package/es/features/unified-share-modal/InviteePermissionsMenu.js +2 -1
- package/es/features/unified-share-modal/InviteePermissionsMenu.js.flow +1 -0
- package/es/features/unified-share-modal/InviteePermissionsMenu.js.map +1 -1
- package/es/features/unified-share-modal/SharedLinkAccessMenu.js +2 -1
- package/es/features/unified-share-modal/SharedLinkAccessMenu.js.flow +1 -0
- package/es/features/unified-share-modal/SharedLinkAccessMenu.js.map +1 -1
- package/es/features/unified-share-modal/SharedLinkPermissionMenu.js +2 -1
- package/es/features/unified-share-modal/SharedLinkPermissionMenu.js.flow +1 -0
- package/es/features/unified-share-modal/SharedLinkPermissionMenu.js.map +1 -1
- package/es/features/unified-share-modal/SharedLinkSection.js +18 -18
- package/es/features/unified-share-modal/SharedLinkSection.js.flow +30 -38
- package/es/features/unified-share-modal/SharedLinkSection.js.map +1 -1
- package/es/features/unified-share-modal/UnifiedShareForm.js +27 -16
- package/es/features/unified-share-modal/UnifiedShareForm.js.flow +38 -25
- package/es/features/unified-share-modal/UnifiedShareForm.js.map +1 -1
- package/es/features/unified-share-modal/UnifiedShareModal.js +10 -1
- package/es/features/unified-share-modal/UnifiedShareModal.js.flow +9 -1
- package/es/features/unified-share-modal/UnifiedShareModal.js.map +1 -1
- package/es/features/unified-share-modal/UnifiedShareModal.scss +24 -13
- package/es/features/unified-share-modal/flowTypes.js.flow +10 -2
- package/es/features/unified-share-modal/flowTypes.js.map +1 -1
- package/es/features/unified-share-modal/messages.js +12 -4
- package/es/features/unified-share-modal/messages.js.flow +17 -5
- package/es/features/unified-share-modal/messages.js.map +1 -1
- package/es/features/virtualized-table/VirtualizedTable.scss +1 -1
- package/es/features/virtualized-table-renderers/_mixins.scss +1 -1
- package/es/icons/badges/MetadataDefaultBadge.js +3 -3
- package/es/icons/badges/MetadataDefaultBadge.js.flow +3 -3
- package/es/icons/badges/MetadataDefaultBadge.js.map +1 -1
- package/es/icons/general/IconAnyTask.js +2 -2
- package/es/icons/general/IconAnyTask.js.flow +2 -2
- package/es/icons/general/IconAnyTask.js.map +1 -1
- package/es/icons/general/IconEdit.js +2 -1
- package/es/icons/general/IconEdit.js.flow +2 -1
- package/es/icons/general/IconEdit.js.map +1 -1
- package/es/icons/metadata-view/IconMetadataView.js +2 -1
- package/es/icons/metadata-view/IconMetadataView.js.flow +2 -1
- package/es/icons/metadata-view/IconMetadataView.js.map +1 -1
- package/es/icons/two-toned/IconAnnotation.js +36 -0
- package/es/icons/two-toned/IconAnnotation.js.flow +27 -0
- package/es/icons/two-toned/IconAnnotation.js.map +1 -0
- package/es/icons/two-toned/_IconAnnotation.mixins.scss +9 -0
- package/es/src/components/avatar/Avatar.d.ts +18 -2
- package/es/src/components/avatar/Avatar.stories.d.ts +7 -2
- package/es/src/components/avatar/messages.d.ts +8 -0
- package/es/src/components/checkbox/Checkbox.d.ts +4 -1
- package/es/src/components/checkbox/Checkbox.stories.d.ts +1 -1
- package/es/src/components/tooltip/CloseButton.d.ts +14 -0
- package/es/src/components/tooltip/__tests__/CloseButton.test.d.ts +1 -0
- package/es/src/elements/content-sidebar/SidebarNavSign.d.ts +2 -24
- package/es/src/elements/content-sidebar/SidebarNavSignButton.d.ts +25 -0
- package/es/src/elements/content-sidebar/__tests__/SidebarNavSignButton.test.d.ts +1 -0
- package/es/src/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.d.ts +3 -0
- package/es/src/features/advanced-content-insights/AdvancedContentInsightsToggle.d.ts +10 -0
- package/es/src/features/advanced-content-insights/__tests__/AdvancedContentInsightsToggle.test.d.ts +1 -0
- package/es/src/features/advanced-content-insights/messages.d.ts +18 -0
- package/es/src/features/content-insights/charts/bar/Bar.d.ts +6 -2
- package/es/src/features/content-insights/charts/bar/BarChart.d.ts +7 -2
- package/es/src/icons/two-toned/IconAnnotation.d.ts +3 -0
- package/es/src/icons/two-toned/__tests__/IconAnnotation.test.d.ts +1 -0
- package/es/src/styles/typography.stories.d.ts +8 -0
- package/es/src/styles/variables.d.ts +1 -1
- package/es/styles/_deprecated.scss +1 -0
- package/es/styles/_inputs.scss +2 -3
- package/es/styles/common/_buttons.scss +2 -2
- package/es/styles/common/_forms.scss +2 -0
- package/es/styles/common/_links.scss +1 -1
- package/es/styles/constants/_colors.scss +1 -1
- package/es/styles/constants/_themes.scss +1 -1
- package/es/styles/typography.stories.js +55 -0
- package/es/styles/typography.stories.js.map +1 -0
- package/es/styles/typography.stories.scss +60 -0
- package/es/styles/variables.js +2 -2
- package/es/styles/variables.js.flow +2 -2
- package/es/styles/variables.js.map +1 -1
- package/es/utils/createTheme.js +2 -2
- package/es/utils/createTheme.js.flow +2 -2
- package/es/utils/createTheme.js.map +1 -1
- package/i18n/bn-IN.js +46 -22
- package/i18n/bn-IN.properties +79 -31
- package/i18n/da-DK.js +46 -22
- package/i18n/da-DK.properties +79 -31
- package/i18n/de-DE.js +45 -21
- package/i18n/de-DE.properties +78 -30
- package/i18n/en-AU.js +33 -9
- package/i18n/en-AU.properties +66 -18
- package/i18n/en-CA.js +32 -8
- package/i18n/en-CA.properties +65 -17
- package/i18n/en-GB.js +33 -9
- package/i18n/en-GB.properties +66 -18
- package/i18n/en-US.js +32 -8
- package/i18n/en-US.properties +65 -17
- package/i18n/en-x-pseudo.js +39 -8
- package/i18n/es-419.js +46 -22
- package/i18n/es-419.properties +79 -31
- package/i18n/es-ES.js +46 -22
- package/i18n/es-ES.properties +79 -31
- package/i18n/fi-FI.js +45 -21
- package/i18n/fi-FI.properties +78 -30
- package/i18n/fr-CA.js +44 -20
- package/i18n/fr-CA.properties +78 -30
- package/i18n/fr-FR.js +44 -20
- package/i18n/fr-FR.properties +78 -30
- package/i18n/hi-IN.js +46 -22
- package/i18n/hi-IN.properties +79 -31
- package/i18n/it-IT.js +45 -21
- package/i18n/it-IT.properties +78 -30
- package/i18n/ja-JP.js +55 -31
- package/i18n/ja-JP.properties +88 -40
- package/i18n/ko-KR.js +44 -20
- package/i18n/ko-KR.properties +78 -30
- package/i18n/nb-NO.js +45 -21
- package/i18n/nb-NO.properties +78 -30
- package/i18n/nl-NL.js +46 -22
- package/i18n/nl-NL.properties +79 -31
- package/i18n/pl-PL.js +45 -21
- package/i18n/pl-PL.properties +78 -30
- package/i18n/pt-BR.js +45 -21
- package/i18n/pt-BR.properties +78 -30
- package/i18n/ru-RU.js +45 -21
- package/i18n/ru-RU.properties +78 -30
- package/i18n/sv-SE.js +46 -22
- package/i18n/sv-SE.properties +79 -31
- package/i18n/tr-TR.js +45 -21
- package/i18n/tr-TR.properties +78 -30
- package/i18n/zh-CN.js +45 -21
- package/i18n/zh-CN.properties +78 -30
- package/i18n/zh-TW.js +45 -21
- package/i18n/zh-TW.properties +78 -30
- package/package.json +3 -3
- package/src/api/Feed.js +46 -1
- package/src/api/Item.js +7 -4
- package/src/api/ThreadedComments.js +40 -0
- package/src/api/__tests__/Feed.test.js +48 -0
- package/src/api/__tests__/Item.test.js +14 -0
- package/src/api/__tests__/ThreadedComments.test.js +46 -0
- package/src/common/types/feed.js +34 -0
- package/src/components/avatar/Avatar.js.flow +24 -7
- package/src/components/avatar/Avatar.scss +42 -0
- package/src/components/avatar/Avatar.stories.tsx +45 -0
- package/src/components/avatar/Avatar.tsx +39 -9
- package/src/components/avatar/__tests__/Avatar.test.tsx +39 -29
- package/src/components/avatar/messages.ts +11 -0
- package/src/components/badgeable/Badgeable.scss +1 -1
- package/src/components/breadcrumb/Breadcrumb.js +1 -1
- package/src/components/breadcrumb/__tests__/Breadcrumb.test.js +1 -1
- package/src/components/button-group/ButtonGroup.scss +2 -2
- package/src/components/checkbox/Checkbox.js.flow +7 -0
- package/src/components/checkbox/Checkbox.scss +2 -2
- package/src/components/checkbox/Checkbox.tsx +7 -0
- package/src/components/checkbox/__tests__/Checkbox.test.tsx +19 -2
- package/src/components/close-button/CloseButton.js.flow +2 -2
- package/src/components/close-button/CloseButton.tsx +2 -2
- package/src/components/contact-datalist-item/ContactDatalistItem.scss +1 -1
- package/src/components/date-picker/DatePicker.scss +1 -1
- package/src/components/date-picker/DatePicker.tsx +2 -2
- package/src/components/date-picker/__tests__/DatePicker.test.tsx +4 -4
- package/src/components/draft-js-editor/DraftJSEditor.scss +1 -1
- package/src/components/dropdown-menu/DropdownMenu.js +8 -2
- package/src/components/dropdown-menu/DropdownMenu.scss +6 -4
- package/src/components/dropdown-menu/__tests__/DropdownMenu.test.js +18 -0
- package/src/components/error-mask/ErrorMask.scss +1 -1
- package/src/components/flyout/Flyout.js +13 -0
- package/src/components/flyout/Flyout.scss +1 -1
- package/src/components/flyout/Overlay.js +2 -1
- package/src/components/flyout/__tests__/Flyout.test.js +22 -1
- package/src/components/flyout/__tests__/Overlay.test.js +1 -1
- package/src/components/grid-view/GridView.js +3 -2
- package/src/components/grid-view/GridViewSlider.js +5 -2
- package/src/components/grid-view/GridViewSlider.scss +0 -10
- package/src/components/grid-view/__tests__/GridViewSlider.test.js +35 -2
- package/src/components/grid-view/__tests__/__snapshots__/GridView.test.js.snap +2 -0
- package/src/components/grid-view/__tests__/__snapshots__/GridViewSlider.test.js.snap +38 -13
- package/src/components/inline-error/InlineError.stories.js +9 -0
- package/src/components/inline-error/InlineError.stories.md +3 -0
- package/src/components/inline-notice/InlineNotice.stories.js +59 -0
- package/src/components/inline-notice/InlineNotice.stories.md +1 -0
- package/src/components/label/InfoIconWithTooltip.tsx +2 -2
- package/src/components/label/Label.scss +1 -1
- package/src/components/label/__tests__/__snapshots__/InfoIconWithTooltip.test.tsx.snap +1 -1
- package/src/components/media-query/__tests__/withMediaQuery.test.js +1 -0
- package/src/components/media-query/stories/MediaQuery.stories.js +11 -2
- package/src/components/media-query/stories/MediaQuery.stories.md +10 -9
- package/src/components/media-query/types.js +1 -0
- package/src/components/media-query/useMediaQuery.js +3 -0
- package/src/components/menu/MenuHeader.scss +1 -1
- package/src/components/menu/SubmenuItem.tsx +4 -1
- package/src/components/modal/Modal.scss +15 -0
- package/src/components/modal/ModalDialog.js +44 -5
- package/src/components/modal/__tests__/ModalDialog.test.js +22 -1
- package/src/components/nav-sidebar/NavSidebar.scss +1 -1
- package/src/components/nav-sidebar/NavSidebar.stories.js +54 -0
- package/src/components/nav-sidebar/NavSidebar.stories.md +1 -0
- package/src/components/pill-cloud/PillCloud.stories.js +48 -0
- package/src/components/pill-cloud/PillCloud.stories.md +1 -0
- package/src/components/pill-selector-dropdown/PillSelector.js +26 -4
- package/src/components/pill-selector-dropdown/PillSelector.scss +4 -0
- package/src/components/pill-selector-dropdown/PillSelectorDropdown.js +1 -0
- package/src/components/pill-selector-dropdown/__tests__/PillSelector.test.js +1 -1
- package/src/components/pill-selector-dropdown/__tests__/PillSelectorDropdown.test.js +4 -4
- package/src/components/pill-selector-dropdown/__tests__/__snapshots__/PillSelector.test.js.snap +1 -1
- package/src/components/pill-selector-dropdown/__tests__/__snapshots__/PillSelectorDropdown.test.js.snap +1 -1
- package/src/components/pill-selector-dropdown/_mixins.scss +1 -1
- package/src/components/popper/PopperComponent.js +3 -2
- package/src/components/radio/RadioButton.scss +1 -1
- package/src/components/search-form/SearchForm.js +30 -6
- package/src/components/search-form/__tests__/SearchForm.test.js +1 -1
- package/src/components/select-button/SelectButton.js +23 -2
- package/src/components/select-button/__tests__/SelectButton.test.js +8 -0
- package/src/components/select-field/BaseSelectField.js +19 -2
- package/src/components/select-field/SelectField.scss +8 -1
- package/src/components/select-field/__tests__/BaseSelectField.test.js +9 -0
- package/src/components/selector-dropdown/SelectorDropdown.js +22 -5
- package/src/components/selector-dropdown/SelectorDropdown.scss +2 -2
- package/src/components/selector-dropdown/__tests__/SelectorDropdown.test.js +2 -1
- package/src/components/table/__tests__/makeSelectable.test.js +65 -3
- package/src/components/table/makeSelectable.js +33 -6
- package/src/components/text-area/TextArea.scss +1 -1
- package/src/components/text-input/TextInput.scss +1 -1
- package/src/components/text-input-with-copy-button/TextInputWithCopyButton.js +4 -1
- package/src/components/text-input-with-copy-button/TextInputWithCopyButton.scss +11 -7
- package/src/components/thumbnail-card/ThumbnailCard.scss +1 -1
- package/src/components/time/ReadableTime.stories.js +56 -0
- package/src/components/time/ReadableTime.stories.md +1 -0
- package/src/components/toggle/Toggle.js +16 -5
- package/src/components/toggle/Toggle.scss +3 -3
- package/src/components/toggle/__tests__/__snapshots__/Toggle.test.js.snap +2 -0
- package/src/components/tooltip/CloseButton.tsx +22 -0
- package/src/components/tooltip/Tooltip.tsx +3 -8
- package/src/components/tooltip/__tests__/CloseButton.test.tsx +32 -0
- package/src/components/tooltip/__tests__/Tooltip.test.tsx +21 -0
- package/src/components/tooltip/__tests__/__snapshots__/Tooltip.test.tsx.snap +3 -10
- package/src/constants.js +7 -0
- package/src/elements/common/_variables.scss +7 -2
- package/src/elements/common/base.scss +14 -0
- package/src/elements/common/breadcrumbs/Breadcrumb.scss +1 -1
- package/src/elements/common/breadcrumbs/BreadcrumbDropdown.scss +1 -1
- package/src/elements/common/breadcrumbs/InlineBreadcrumbs.scss +2 -2
- package/src/elements/common/header/Header.js +7 -2
- package/src/elements/common/header/Logo.js +5 -1
- package/src/elements/common/header/__tests__/Header.test.js +40 -0
- package/src/elements/common/item/IconCell.js +55 -0
- package/src/elements/common/item/ItemDetails.scss +1 -1
- package/src/elements/common/item/__tests__/IconCell.test.js +88 -0
- package/src/elements/common/item/iconCellRenderer.js +6 -22
- package/src/elements/common/messages.js +35 -0
- package/src/elements/common/modal.scss +0 -2
- package/src/elements/common/share-access-select/ShareAccessSelect.scss +1 -1
- package/src/elements/common/sub-header/AddButton.js +2 -1
- package/src/elements/common/sub-header/Sort.js +7 -6
- package/src/elements/common/sub-header/SortButton.js +23 -10
- package/src/elements/common/sub-header/ViewModeChangeButton.js +3 -3
- package/src/elements/common/sub-header/__tests__/Sort.test.js +12 -62
- package/src/elements/common/sub-header/__tests__/SortButton.test.js +24 -0
- package/src/elements/common/sub-header/__tests__/SubHeaderRight.test.js +1 -1
- package/src/elements/content-explorer/Content.js +2 -1
- package/src/elements/content-explorer/ContentExplorer.js +50 -13
- package/src/elements/content-explorer/ItemGrid.js +60 -9
- package/src/elements/content-explorer/ItemGridThumbnail.js +5 -2
- package/src/elements/content-explorer/ItemList.js +4 -2
- package/src/elements/content-explorer/ItemList.scss +16 -8
- package/src/elements/content-explorer/MoreOptions.js +11 -4
- package/src/elements/content-explorer/__tests__/ContentExplorer.test.js +44 -0
- package/src/elements/content-explorer/__tests__/MoreOptions.test.js +30 -0
- package/src/elements/content-open-with/ContentOpenWith.scss +1 -1
- package/src/elements/content-picker/Footer.js +62 -51
- package/src/elements/content-picker/ItemList.scss +1 -1
- package/src/elements/content-picker/__tests__/Footer.test.js +17 -0
- package/src/elements/content-preview/ContentPreview.js +43 -6
- package/src/elements/content-preview/__tests__/ContentPreview.test.js +96 -0
- package/src/elements/content-preview/preview-header/PreviewHeader.scss +1 -1
- package/src/elements/content-sharing/ContentSharing.js +2 -2
- package/src/elements/content-sidebar/ActivitySidebar.js +262 -17
- package/src/elements/content-sidebar/ActivitySidebar.scss +7 -0
- package/src/elements/content-sidebar/ActivitySidebarFilter.js +64 -23
- package/src/elements/content-sidebar/AddTaskMenu.scss +1 -1
- package/src/elements/content-sidebar/SidebarContent.js +1 -1
- package/src/elements/content-sidebar/SidebarContent.scss +3 -3
- package/src/elements/content-sidebar/SidebarNav.js +3 -15
- package/src/elements/content-sidebar/SidebarNavSign.scss +3 -25
- package/src/elements/content-sidebar/SidebarNavSign.tsx +53 -55
- package/src/elements/content-sidebar/SidebarNavSignButton.scss +27 -0
- package/src/elements/content-sidebar/SidebarNavSignButton.tsx +73 -0
- package/src/elements/content-sidebar/__tests__/ActivitySidebar.test.js +545 -16
- package/src/elements/content-sidebar/__tests__/ActivitySidebarFilter.test.js +47 -18
- package/src/elements/content-sidebar/__tests__/SidebarNav.test.js +3 -3
- package/src/elements/content-sidebar/__tests__/SidebarNavSign.test.tsx +72 -52
- package/src/elements/content-sidebar/__tests__/SidebarNavSignButton.test.tsx +60 -0
- package/src/elements/content-sidebar/__tests__/__snapshots__/ActivitySidebar.test.js.snap +2 -0
- package/src/elements/content-sidebar/activity-feed/Avatar.js +5 -2
- package/src/elements/content-sidebar/activity-feed/__tests__/Avatar.test.js +0 -10
- package/src/elements/content-sidebar/activity-feed/__tests__/__snapshots__/Avatar.test.js.snap +13 -10
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js +73 -28
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js +80 -13
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.scss +11 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.scss +28 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.tsx +16 -2
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js +48 -29
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.scss +69 -6
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js +42 -5
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.scss +15 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js +30 -5
- package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.scss +4 -7
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActiveState.test.js +11 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityFeed.test.js +74 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityItem.test.tsx +20 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThread.test.js +8 -3
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThreadReplies.test.js +12 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThreadRepliesForm.test.js +20 -5
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/__snapshots__/ActiveState.test.js.snap +7 -0
- package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/__snapshots__/ActivityFeed.test.js.snap +3 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js +43 -13
- package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.scss +26 -3
- package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js +67 -56
- package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.scss +1 -1
- package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js +16 -51
- package/src/elements/content-sidebar/activity-feed/annotation-thread/__mocks__/useAnnotationThread.js +19 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThread.test.js +12 -1
- package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThreadContent.test.js +18 -52
- package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThreadCreate.test.js +23 -54
- package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/useAnnotationAPI.test.js +40 -3
- package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/useAnnotationThread.test.js +429 -25
- package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/useRepliesAPI.test.js +15 -13
- package/src/elements/content-sidebar/activity-feed/annotation-thread/errors.js +5 -4
- package/src/elements/content-sidebar/activity-feed/annotation-thread/types.js +7 -0
- package/src/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js +32 -10
- package/src/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationThread.js +249 -55
- package/src/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js +42 -83
- package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js +27 -12
- package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.scss +11 -8
- package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivityLink.scss +1 -1
- package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js +3 -1
- package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.scss +5 -0
- package/src/elements/content-sidebar/activity-feed/annotations/__tests__/AnnotationActivity.test.js +26 -0
- package/src/elements/content-sidebar/activity-feed/comment/BaseComment.js +456 -0
- package/src/elements/content-sidebar/activity-feed/comment/BaseComment.scss +30 -0
- package/src/elements/content-sidebar/activity-feed/comment/Comment.js +42 -5
- package/src/elements/content-sidebar/activity-feed/comment/Comment.scss +10 -0
- package/src/elements/content-sidebar/activity-feed/comment/CreateReply.js +72 -0
- package/src/elements/content-sidebar/activity-feed/comment/CreateReply.scss +21 -0
- package/src/elements/content-sidebar/activity-feed/comment/Replies.scss +41 -0
- package/src/elements/content-sidebar/activity-feed/comment/RepliesToggle.js +41 -0
- package/src/elements/content-sidebar/activity-feed/comment/RepliesToggle.scss +6 -0
- package/src/elements/content-sidebar/activity-feed/comment/__tests__/BaseComment.test.js +373 -0
- package/src/elements/content-sidebar/activity-feed/comment/__tests__/Comment.test.js +14 -6
- package/src/elements/content-sidebar/activity-feed/comment/__tests__/CreateReply.test.js +127 -0
- package/src/elements/content-sidebar/activity-feed/comment/__tests__/Replies.test.js +219 -0
- package/src/elements/content-sidebar/activity-feed/comment/__tests__/RepliesToggle.test.js +82 -0
- package/src/elements/content-sidebar/activity-feed/comment/__tests__/__snapshots__/Comment.test.js.snap +18 -4
- package/src/elements/content-sidebar/activity-feed/comment/messages.js +20 -0
- package/src/elements/content-sidebar/activity-feed/comment-form/CommentForm.js +3 -3
- package/src/elements/content-sidebar/activity-feed/comment-form/CommentForm.scss +1 -1
- package/src/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.scss +1 -1
- package/src/elements/content-sidebar/activity-feed/common/activity-message/messages.js +2 -2
- package/src/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.scss +1 -1
- package/src/elements/content-sidebar/activity-feed/task-form/TaskForm.js +1 -0
- package/src/elements/content-sidebar/activity-feed/task-new/AssigneeDetails.scss +1 -1
- package/src/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.js +11 -7
- package/src/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.scss +1 -5
- package/src/elements/content-sidebar/activity-feed/task-new/Task.js +1 -2
- package/src/elements/content-sidebar/activity-feed/task-new/Task.scss +1 -8
- package/src/elements/content-sidebar/activity-feed/task-new/__tests__/__snapshots__/Task.test.js.snap +1 -5
- package/src/elements/content-sidebar/messages.js +29 -4
- package/src/elements/content-sidebar/skills/keywords/__tests__/__snapshots__/EditableKeywords.test.js.snap +0 -6
- package/src/elements/content-sidebar/skills/timeline/Timeline.scss +1 -1
- package/src/elements/content-sidebar/skills/transcript/Transcript.scss +1 -1
- package/src/elements/content-sidebar/versions/VersionsGroup.scss +1 -1
- package/src/elements/content-sidebar/versions/VersionsItem.scss +3 -3
- package/src/elements/content-uploader/Footer.js +23 -3
- package/src/elements/content-uploader/Footer.scss +0 -1
- package/src/elements/content-uploader/ItemAction.js +6 -3
- package/src/elements/content-uploader/ItemRemove.js +18 -6
- package/src/elements/content-uploader/UploadInput.js +19 -9
- package/src/elements/content-uploader/__tests__/Footer.test.js +59 -0
- package/src/elements/content-uploader/__tests__/ItemAction.test.js +11 -1
- package/src/elements/content-uploader/__tests__/ItemRemove.test.js +22 -0
- package/src/elements/content-uploader/__tests__/__snapshots__/ItemAction.test.js.snap +36 -0
- package/src/elements/content-uploader/__tests__/__snapshots__/UploadInput.test.js.snap +4 -0
- package/src/features/advanced-content-insights/AdvancedContentInsightsToggle.scss +19 -0
- package/src/features/advanced-content-insights/AdvancedContentInsightsToggle.tsx +59 -0
- package/src/features/advanced-content-insights/__tests__/AdvancedContentInsightsToggle.test.tsx +33 -0
- package/src/features/advanced-content-insights/__tests__/__snapshots__/AdvancedContentInsightsToggle.test.tsx.snap +42 -0
- package/src/features/advanced-content-insights/messages.ts +22 -0
- package/src/features/classification/classificationColorsMap.js +1 -1
- package/src/features/collaborator-avatars/CollaboratorAvatarItem.js +11 -8
- package/src/features/collaborator-avatars/CollaboratorAvatars.scss +1 -1
- package/src/features/collaborator-avatars/CollaboratorList.js +3 -4
- package/src/features/collaborator-avatars/CollaboratorListItem.js +7 -13
- package/src/features/collaborator-avatars/CollaboratorListItem.scss +7 -3
- package/src/features/collaborator-avatars/__tests__/CollaboratorAvatarItem.test.js +6 -2
- package/src/features/collaborator-avatars/__tests__/__snapshots__/CollaboratorAvatarItem.test.js.snap +5 -12
- package/src/features/collaborator-avatars/__tests__/__snapshots__/CollaboratorList.test.js.snap +6 -8
- package/src/features/collaborator-avatars/__tests__/__snapshots__/CollaboratorListItem.test.js.snap +36 -40
- package/src/features/collapsible-sidebar/CollapsibleSidebar.js +5 -2
- package/src/features/collapsible-sidebar/CollapsibleSidebar.scss +4 -7
- package/src/features/collapsible-sidebar/CollapsibleSidebarLogo.js +15 -11
- package/src/features/collapsible-sidebar/__tests__/CollapsibleSidebar.test.js +1 -0
- package/src/features/collapsible-sidebar/__tests__/CollapsibleSidebarLogo.test.js +14 -0
- package/src/features/collapsible-sidebar/__tests__/__snapshots__/CollapsibleSidebar.test.js.snap +1 -1
- package/src/features/content-explorer/content-explorer/ContentExplorer.js +97 -20
- package/src/features/content-explorer/content-explorer/ContentExplorer.scss +67 -8
- package/src/features/content-explorer/content-explorer/ContentExplorerActionButtons.js +53 -13
- package/src/features/content-explorer/content-explorer/ContentExplorerFolderTreeBreadcrumbs.js +82 -0
- package/src/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js +22 -7
- package/src/features/content-explorer/content-explorer/ContentExplorerIncludeSubfolders.js +30 -0
- package/src/features/content-explorer/content-explorer/ContentExplorerSelectAll.js +34 -20
- package/src/features/content-explorer/content-explorer/__tests__/ContentExplorer.test.js +28 -0
- package/src/features/content-explorer/content-explorer/__tests__/ContentExplorerActionButtons.test.js +96 -8
- package/src/features/content-explorer/content-explorer/__tests__/ContentExplorerFolderTreeBreadcrumbs.test.js +91 -0
- package/src/features/content-explorer/content-explorer/__tests__/ContentExplorerHeaderActions.test.js +8 -0
- package/src/features/content-explorer/content-explorer/__tests__/ContentExplorerIncludeSubfolders.test.js +50 -0
- package/src/features/content-explorer/content-explorer/__tests__/__snapshots__/ContentExplorer.test.js.snap +4 -0
- package/src/features/content-explorer/content-explorer/constants.js +6 -0
- package/src/features/content-explorer/content-explorer-modal/ContentExplorerModal.js +13 -0
- package/src/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js +31 -0
- package/src/features/content-explorer/item-list/ItemList.js +17 -1
- package/src/features/content-explorer/item-list/ItemList.scss +1 -1
- package/src/features/content-explorer/item-list/ItemListButton.js +10 -2
- package/src/features/content-explorer/item-list/ItemListIcon.js +5 -33
- package/src/features/content-explorer/item-list/ItemListName.js +3 -2
- package/src/features/content-explorer/item-list/__tests__/ItemList.test.js +72 -0
- package/src/features/content-explorer/item-list/__tests__/ItemListButton.test.js +8 -0
- package/src/features/content-explorer/item-list/__tests__/ItemListIcon.test.js +24 -18
- package/src/features/content-explorer/item-list/__tests__/__snapshots__/ItemListIcon.test.js.snap +37 -24
- package/src/features/content-explorer/messages.js +41 -24
- package/src/features/content-explorer/prop-types.js +2 -2
- package/src/features/content-insights/_mixins.scss +1 -1
- package/src/features/content-insights/charts/bar/Bar.tsx +24 -3
- package/src/features/content-insights/charts/bar/BarChart.tsx +10 -3
- package/src/features/content-insights/charts/bar/__tests__/Bar.test.tsx +51 -0
- package/src/features/content-insights/charts/bar/__tests__/BarChart.test.tsx +7 -1
- package/src/features/invite-collaborators-modal/InviteCollaboratorsModal.scss +1 -1
- package/src/features/message-center/components/templates/common/styles/MessageFooter.scss +1 -1
- package/src/features/metadata-based-view/IconWithTooltip.js +4 -4
- package/src/features/metadata-based-view/MetadataBasedItemList.scss +1 -1
- package/src/features/metadata-based-view/__tests__/__snapshots__/IconWithTooltip.test.js.snap +3 -3
- package/src/features/metadata-instance-editor/CascadePolicy.scss +1 -1
- package/src/features/metadata-instance-editor/TemplateDropdown.js +4 -10
- package/src/features/metadata-instance-editor/TemplateDropdown.scss +2 -2
- package/src/features/metadata-instance-editor/__tests__/__snapshots__/TemplateDropdown.test.js.snap +28 -7
- package/src/features/metadata-instance-fields/EnumMetadataField.scss +2 -2
- package/src/features/metadata-instance-fields/MultiSelectMetadataField.scss +1 -1
- package/src/features/metadata-instance-fields/ReadOnlyMetadataField.scss +2 -2
- package/src/features/presence/PresenceAvatarList.scss +1 -1
- package/src/features/presence/PresenceCollaborator.scss +1 -1
- package/src/features/query-bar/styles/Condition.scss +2 -2
- package/src/features/quick-search/QuickSearchItem.js +4 -3
- package/src/features/shared-link-settings-modal/ExpirationSection.js +4 -0
- package/src/features/shared-link-settings-modal/SharedLinkSettingsModal.js +9 -5
- package/src/features/shared-link-settings-modal/SharedLinkSettingsModal.scss +3 -3
- package/src/features/shared-link-settings-modal/VanityNameSection.js +2 -2
- package/src/features/shared-link-settings-modal/__tests__/ExpirationSection.test.js +9 -0
- package/src/features/shared-link-settings-modal/__tests__/SharedLinkSettingsModal.test.js +9 -4
- package/src/features/unified-share-modal/InviteePermissionsMenu.js +1 -0
- package/src/features/unified-share-modal/SharedLinkAccessMenu.js +1 -0
- package/src/features/unified-share-modal/SharedLinkPermissionMenu.js +1 -0
- package/src/features/unified-share-modal/SharedLinkSection.js +30 -38
- package/src/features/unified-share-modal/UnifiedShareForm.js +38 -25
- package/src/features/unified-share-modal/UnifiedShareModal.js +9 -1
- package/src/features/unified-share-modal/UnifiedShareModal.scss +24 -13
- package/src/features/unified-share-modal/__tests__/SharedLinkSection.test.js +19 -3
- package/src/features/unified-share-modal/__tests__/UnifiedShareForm.test.js +10 -0
- package/src/features/unified-share-modal/__tests__/UnifiedShareModal.test.js +9 -0
- package/src/features/unified-share-modal/__tests__/__snapshots__/InviteePermissionsMenu.test.js.snap +16 -0
- package/src/features/unified-share-modal/__tests__/__snapshots__/SharedLinkAccessMenu.test.js.snap +6 -0
- package/src/features/unified-share-modal/__tests__/__snapshots__/SharedLinkPermissionMenu.test.js.snap +6 -0
- package/src/features/unified-share-modal/__tests__/__snapshots__/SharedLinkSection.test.js.snap +211 -313
- package/src/features/unified-share-modal/flowTypes.js +10 -2
- package/src/features/unified-share-modal/messages.js +17 -5
- package/src/features/virtualized-table/VirtualizedTable.scss +1 -1
- package/src/features/virtualized-table/__tests__/__snapshots__/BaseVirtualizedTable.test.js.snap +3 -0
- package/src/features/virtualized-table/__tests__/__snapshots__/DraggableVirtualizedTable.test.js.snap +3 -0
- package/src/features/virtualized-table/__tests__/__snapshots__/VirtualizedTable.test.js.snap +8 -0
- package/src/features/virtualized-table-renderers/_mixins.scss +1 -1
- package/src/icons/badges/MetadataDefaultBadge.js.flow +3 -3
- package/src/icons/badges/MetadataDefaultBadge.tsx +3 -3
- package/src/icons/badges/__tests__/__snapshots__/MetadataDefaultBadge.test.tsx.snap +2 -2
- package/src/icons/general/IconAnyTask.js.flow +2 -2
- package/src/icons/general/IconAnyTask.tsx +2 -2
- package/src/icons/general/IconEdit.js.flow +2 -1
- package/src/icons/general/IconEdit.tsx +2 -1
- package/src/icons/general/__tests__/__snapshots__/IconAnyTask.test.tsx.snap +1 -1
- package/src/icons/general/__tests__/__snapshots__/IconEdit.test.tsx.snap +2 -2
- package/src/icons/metadata-view/IconMetadataView.js.flow +2 -1
- package/src/icons/metadata-view/IconMetadataView.tsx +3 -1
- package/src/icons/metadata-view/__tests__/__snapshots__/IconMetadataView.test.tsx.snap +1 -1
- package/src/icons/two-toned/IconAnnotation.js.flow +27 -0
- package/src/icons/two-toned/IconAnnotation.tsx +26 -0
- package/src/icons/two-toned/_IconAnnotation.mixins.scss +9 -0
- package/src/icons/two-toned/__tests__/IconAnnotation.test.tsx +28 -0
- package/src/icons/two-toned/__tests__/__snapshots__/IconAnnotation.test.tsx.snap +28 -0
- package/src/styles/_deprecated.scss +1 -0
- package/src/styles/_inputs.scss +2 -3
- package/src/styles/colors.md +1 -1
- package/src/styles/common/_buttons.scss +2 -2
- package/src/styles/common/_forms.scss +2 -0
- package/src/styles/common/_links.scss +1 -1
- package/src/styles/constants/_colors.scss +1 -1
- package/src/styles/constants/_themes.scss +1 -1
- package/src/styles/typography.stories.scss +60 -0
- package/src/styles/typography.stories.tsx +70 -0
- package/src/styles/variables.js +2 -2
- package/src/styles/variables.json +2 -2
- package/src/styles/variables.ts +2 -2
- package/src/utils/__tests__/__snapshots__/createTheme.test.js.snap +4 -4
- package/src/utils/createTheme.js +2 -2
- package/es/elements/common/sub-header/Sort.scss +0 -8
- package/es/elements/content-sidebar/activity-feed/task-new/_mixins.scss +0 -10
- package/es/features/content-explorer/item-types.js +0 -6
- package/es/features/content-explorer/item-types.js.flow +0 -5
- package/es/features/content-explorer/item-types.js.map +0 -1
- package/src/components/inline-error/README.md +0 -10
- package/src/components/inline-notice/README.md +0 -57
- package/src/components/nav-sidebar/README.md +0 -57
- package/src/components/pill-cloud/README.md +0 -39
- package/src/components/time/README.md +0 -58
- package/src/elements/common/sub-header/Sort.scss +0 -8
- package/src/elements/content-sidebar/activity-feed/task-new/_mixins.scss +0 -10
- package/src/features/content-explorer/item-types.js +0 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/table/makeSelectable.js"],"names":["PropTypes","React","Component","Set","ImmutablePropTypes","classNames","FormattedMessage","Hotkeys","HotkeyRecord","messages","shiftSelect","SEARCH_TIMER_DURATION","makeSelectable","BaseTable","originalDisplayName","displayName","name","props","focusedIndex","undefined","selectedItems","newFocusedIndex","onSelect","previousIndex","state","setState","isSet","toJS","hotkeyType","key","description","shiftXDescription","handler","selectToggle","type","selectAllDescription","event","data","preventDefault","deselectAllDescription","downDescription","Math","min","length","upDescription","max","shiftDownDescription","handleShiftKeyDown","shiftUpDescription","gridColumnCount","handleShiftKeyDownForGrid","enableHotkeys","isGridView","hotkeys","viewSpecificHotKeyConfigs","getGridViewHotKeyConfigs","getListViewHotKeyConfigs","getSharedHotkeyConfigs","loadedData","rowIndex","getProcessedProps","has","delete","add","anchorIndex","selectedRows","reduce","rows","item","i","push","newSelectedRows","newSelectedItems","map","size","index","metaKey","ctrlKey","shiftKey","selectRange","selectOne","blurTimerID","setTimeout","clearFocus","clearTimeout","boundary","selectedItemIndecies","sourceIndex","targetIndex","dataSize","isSourceSelected","isTargetSelected","selectedItemIndices","isContiguousSelection","newSelectedItemIndices","searchStrings","target","hasAttribute","nodeName","which","searchTimeout","searchString","findIndex","string","trim","toLowerCase","indexOf","nativeEvent","document","addEventListener","handleKeyboardSearch","prevProps","prevState","onFocus","removeEventListener","className","focusedItem","getHotkeyConfigs","handleCheckboxClick","handleRowClick","handleRowFocus","handleTableBlur","handleTableFocus","array","isRequired","number","bool","func","oneOfType","set"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { Set } from 'immutable';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport classNames from 'classnames';\nimport { FormattedMessage } from 'react-intl';\n\nimport { Hotkeys, HotkeyRecord } from '../hotkeys';\nimport messages from './messages';\nimport shiftSelect from './shiftSelect';\n\nconst SEARCH_TIMER_DURATION = 1000;\n\nfunction makeSelectable(BaseTable) {\n const originalDisplayName = BaseTable.displayName || BaseTable.name || 'Table';\n\n return class SelectableTable extends Component {\n static displayName = `Selectable(${originalDisplayName})`;\n\n static propTypes = {\n className: PropTypes.string,\n /** Array of unique IDs of the items in the table. Each item should be a string or number, in the order they appear in the table. */\n data: PropTypes.array.isRequired,\n gridColumnCount: PropTypes.number,\n isGridView: PropTypes.bool,\n /** Called when focus changes. `(focusedIndex: number) => void` */\n onFocus: PropTypes.func,\n /** Called when selection changes. `(selectedItems: Array<string> | Array<number> | Set<string> | Set<number>) => void` */\n onSelect: PropTypes.func.isRequired,\n /**\n * Array of strings for keyboard search corresponding to the data prop. If not provided, keyboard search won't work.\n * Example: data = ['f_123', 'f_456'], and corresponding searchStrings = ['file.png', 'another file.pdf']\n */\n searchStrings: PropTypes.array,\n /**\n * Array of IDs that are currently selected, in any order.\n * If you pass a native JS array, then your onSelect function will be called with a native JS array;\n * likewise, if you pass an ImmutableJS Set, then your onSelect function will be called\n * with an ImmutableJS Set.\n */\n selectedItems: PropTypes.oneOfType([PropTypes.array, ImmutablePropTypes.set]),\n /** Array of unique IDs of the items in the table that are loaded and accessible. If not provided, this will default to all data */\n loadedData: PropTypes.array,\n enableHotkeys: PropTypes.bool,\n /** Translated type for hotkeys. If not provided, then the hotkeys will not appear in the help modal. */\n hotkeyType: PropTypes.string,\n };\n\n static defaultProps = {\n selectedItems: new Set(),\n };\n\n constructor(props) {\n super(props);\n\n this.anchorIndex = 0;\n\n this.searchString = '';\n this.searchTimeout = null;\n\n // we have to store the previously focused index because a focus event\n // will be fired before the click event; thus, in the click handler,\n // the focusedItem will already be the new item\n this.previousIndex = 0;\n\n this.blurTimerID = null;\n }\n\n state = {\n focusedIndex: undefined,\n };\n\n componentDidMount() {\n document.addEventListener('keypress', this.handleKeyboardSearch);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.focusedIndex !== this.state.focusedIndex && this.props.onFocus) {\n this.props.onFocus(this.state.focusedIndex);\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener('keypress', this.handleKeyboardSearch);\n clearTimeout(this.blurTimerID);\n }\n\n onSelect = (selectedItems, newFocusedIndex) => {\n const { onSelect } = this.props;\n\n this.previousIndex = this.state.focusedIndex || 0;\n\n this.setState({\n focusedIndex: newFocusedIndex,\n });\n\n if (onSelect) {\n // If selectedItems were given as an Immutable Set, they should also be returned as one,\n // and vice versa if they were given as a native JS array\n onSelect(Set.isSet(this.props.selectedItems) ? selectedItems : selectedItems.toJS());\n }\n };\n\n getSharedHotkeyConfigs = () => {\n const { hotkeyType } = this.props;\n return [\n new HotkeyRecord({\n key: 'shift+x',\n description: <FormattedMessage {...messages.shiftXDescription} />,\n handler: () => {\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n this.selectToggle(focusedIndex);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: ['meta+a', 'ctrl+a'],\n description: <FormattedMessage {...messages.selectAllDescription} />,\n handler: event => {\n const { data } = this.props;\n\n event.preventDefault();\n\n this.onSelect(new Set(data), this.state.focusedIndex);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'esc',\n description: <FormattedMessage {...messages.deselectAllDescription} />,\n handler: () => {\n this.onSelect(new Set(), this.state.focusedIndex);\n },\n type: hotkeyType,\n }),\n ];\n };\n\n getListViewHotKeyConfigs = () => {\n const { hotkeyType } = this.props;\n return [\n new HotkeyRecord({\n key: 'down',\n description: <FormattedMessage {...messages.downDescription} />,\n handler: event => {\n const { data } = this.props;\n const { focusedIndex } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex =\n focusedIndex !== undefined ? Math.min(focusedIndex + 1, data.length - 1) : 0;\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'up',\n description: <FormattedMessage {...messages.upDescription} />,\n handler: event => {\n const { focusedIndex = 0 } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex = Math.max(focusedIndex - 1, 0);\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+down',\n description: <FormattedMessage {...messages.shiftDownDescription} />,\n handler: () => {\n const { data } = this.props;\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.min(focusedIndex + 1, data.length - 1);\n this.handleShiftKeyDown(newFocusedIndex, data.length - 1);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+up',\n description: <FormattedMessage {...messages.shiftUpDescription} />,\n handler: () => {\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.max(focusedIndex - 1, 0);\n this.handleShiftKeyDown(newFocusedIndex, 0);\n },\n type: hotkeyType,\n }),\n ];\n };\n\n getGridViewHotKeyConfigs = () => {\n const { hotkeyType } = this.props;\n return [\n new HotkeyRecord({\n key: 'right',\n description: <FormattedMessage {...messages.downDescription} />,\n handler: event => {\n const { data } = this.props;\n const { focusedIndex } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex =\n focusedIndex !== undefined ? Math.min(focusedIndex + 1, data.length - 1) : 0;\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'left',\n description: <FormattedMessage {...messages.upDescription} />,\n handler: event => {\n const { focusedIndex = 0 } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex = Math.max(focusedIndex - 1, 0);\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'down',\n description: <FormattedMessage {...messages.downDescription} />,\n handler: event => {\n const { data, gridColumnCount } = this.props;\n const { focusedIndex } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex =\n focusedIndex !== undefined ? Math.min(focusedIndex + gridColumnCount, data.length - 1) : 0;\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'up',\n description: <FormattedMessage {...messages.upDescription} />,\n handler: event => {\n const { gridColumnCount } = this.props;\n const { focusedIndex = 0 } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex = Math.max(focusedIndex - gridColumnCount, 0);\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+right',\n description: <FormattedMessage {...messages.shiftDownDescription} />,\n handler: () => {\n const { data } = this.props;\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.min(focusedIndex + 1, data.length - 1);\n this.handleShiftKeyDownForGrid(newFocusedIndex, data.length - 1);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+left',\n description: <FormattedMessage {...messages.shiftUpDescription} />,\n handler: () => {\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.max(focusedIndex - 1, 0);\n this.handleShiftKeyDownForGrid(newFocusedIndex, 0);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+down',\n description: <FormattedMessage {...messages.shiftDownDescription} />,\n handler: () => {\n const { data, gridColumnCount } = this.props;\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.min(focusedIndex + gridColumnCount, data.length - 1);\n this.handleShiftKeyDownForGrid(newFocusedIndex, data.length - 1);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+up',\n description: <FormattedMessage {...messages.shiftUpDescription} />,\n handler: () => {\n const { gridColumnCount } = this.props;\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.max(focusedIndex - gridColumnCount, 0);\n this.handleShiftKeyDownForGrid(newFocusedIndex, 0);\n },\n type: hotkeyType,\n }),\n ];\n };\n\n getHotkeyConfigs = () => {\n const { enableHotkeys, isGridView, gridColumnCount } = this.props;\n\n if (!enableHotkeys && !this.hotkeys) {\n this.hotkeys = [];\n }\n\n if (!this.hotkeys) {\n const viewSpecificHotKeyConfigs =\n isGridView && gridColumnCount !== undefined\n ? this.getGridViewHotKeyConfigs()\n : this.getListViewHotKeyConfigs();\n\n this.hotkeys = [...this.getSharedHotkeyConfigs(), ...viewSpecificHotKeyConfigs];\n }\n\n return this.hotkeys;\n };\n\n getProcessedProps = () => {\n const { data, loadedData, selectedItems } = this.props;\n return {\n ...this.props,\n loadedData: loadedData ? Set(loadedData) : Set(data),\n selectedItems: Set.isSet(selectedItems) ? selectedItems : new Set(selectedItems),\n };\n };\n\n hotkeys = null;\n\n selectToggle = rowIndex => {\n const { data, selectedItems } = this.getProcessedProps();\n\n if (selectedItems.has(data[rowIndex])) {\n this.onSelect(selectedItems.delete(data[rowIndex]), rowIndex);\n } else {\n this.onSelect(selectedItems.add(data[rowIndex]), rowIndex);\n }\n\n this.anchorIndex = rowIndex;\n };\n\n selectRange = rowIndex => {\n const { data, selectedItems } = this.getProcessedProps();\n\n // Don't change selection if we're shift-clicking the same row\n if (rowIndex === this.previousIndex) {\n return;\n }\n\n // Converts set of items to set of indices to do some slicing magic\n const selectedRows = new Set(\n data.reduce((rows, item, i) => {\n if (selectedItems.has(item)) {\n rows.push(i);\n }\n return rows;\n }, []),\n );\n\n const newSelectedRows = shiftSelect(selectedRows, this.previousIndex, rowIndex, this.anchorIndex);\n\n // Converts set back to set of items\n const newSelectedItems = newSelectedRows.map(i => data[i]);\n\n this.onSelect(newSelectedItems, rowIndex);\n };\n\n selectOne = rowIndex => {\n const { data, selectedItems } = this.getProcessedProps();\n\n // Don't change selection if we're clicking on a row that we've already selected\n // This allows us to use the native onDoubleClick handler because we're referencing the\n // same DOM node on double-click.\n if (selectedItems.has(data[rowIndex]) && selectedItems.size === 1) {\n return;\n }\n\n this.onSelect(new Set([data[rowIndex]]), rowIndex);\n this.anchorIndex = rowIndex;\n };\n\n clearFocus = () => {\n this.setState({\n focusedIndex: undefined,\n });\n };\n\n handleRowClick = (event, index) => {\n if (event.metaKey || event.ctrlKey) {\n this.selectToggle(index);\n } else if (event.shiftKey) {\n this.selectRange(index);\n } else {\n this.selectOne(index);\n }\n };\n\n handleRowFocus = (event, index) => {\n const { selectedItems } = this.getProcessedProps();\n this.onSelect(selectedItems, index);\n };\n\n handleTableBlur = () => {\n const { focusedIndex } = this.state;\n if (focusedIndex !== undefined) {\n // table may get focus back right away in the same tick, in which case we shouldn't clear focus\n this.blurTimerID = setTimeout(this.clearFocus);\n }\n };\n\n handleTableFocus = () => {\n clearTimeout(this.blurTimerID);\n };\n\n handleShiftKeyDown = (newFocusedIndex, boundary) => {\n const { data, selectedItems } = this.getProcessedProps();\n const { focusedIndex } = this.state;\n\n // if we're at a boundary of the table and the row is selected, no-op\n if (focusedIndex === boundary && selectedItems.has(data[focusedIndex])) {\n return;\n }\n\n // if target is not selected, select it\n if (!selectedItems.has(data[newFocusedIndex])) {\n this.onSelect(selectedItems.add(data[newFocusedIndex]), newFocusedIndex);\n return;\n }\n\n // if both source and target are selected, deselect source\n if (selectedItems.has(data[newFocusedIndex]) && selectedItems.has(data[focusedIndex])) {\n this.onSelect(selectedItems.delete(data[focusedIndex]), newFocusedIndex);\n return;\n }\n\n // if target is selected and source is not, select source\n this.onSelect(selectedItems.add(data[focusedIndex]), newFocusedIndex);\n };\n\n isContiguousSelection = (selectedItemIndecies, sourceIndex, targetIndex) => {\n if (sourceIndex < targetIndex && selectedItemIndecies.has(sourceIndex - 1)) {\n return true;\n }\n if (targetIndex < sourceIndex && selectedItemIndecies.has(sourceIndex + 1)) {\n return true;\n }\n return false;\n };\n\n handleShiftKeyDownForGrid = newFocusedIndex => {\n const { data, loadedData, selectedItems } = this.getProcessedProps();\n const { focusedIndex } = this.state;\n\n const dataSize = data.length;\n const targetIndex = newFocusedIndex < 0 ? 0 : Math.min(newFocusedIndex, dataSize - 1);\n const isSourceSelected = selectedItems.has(data[focusedIndex]);\n const isTargetSelected = selectedItems.has(data[targetIndex]);\n\n // if data is not loaded, we don't want it to be able to be selected\n if (!loadedData.has(data[targetIndex])) {\n return;\n }\n\n const selectedItemIndices = new Set(\n data.reduce((rows, item, i) => {\n if (selectedItems.has(item)) {\n rows.push(i);\n }\n return rows;\n }, []),\n );\n\n // reset the anchor on a new selection block\n if (\n !isSourceSelected &&\n !isTargetSelected &&\n // if we are starting a new mass selection adjacent selected block, we want to connect them\n !this.isContiguousSelection(selectedItemIndices, focusedIndex, targetIndex)\n ) {\n this.anchorIndex = focusedIndex;\n }\n\n const newSelectedItemIndices = shiftSelect(\n selectedItemIndices,\n focusedIndex,\n targetIndex,\n this.anchorIndex,\n );\n\n const newSelectedItems = newSelectedItemIndices.map(i => data[i]);\n\n this.onSelect(newSelectedItems, targetIndex);\n };\n\n handleKeyboardSearch = event => {\n const { searchStrings } = this.props;\n\n if (!searchStrings) {\n return;\n }\n\n if (\n event.target.hasAttribute('contenteditable') ||\n event.target.nodeName === 'INPUT' ||\n event.target.nodeName === 'TEXTAREA'\n ) {\n return;\n }\n\n // character keys have a value for event.which\n if (event.which === 0) {\n return;\n }\n\n if (this.searchTimeout) {\n clearTimeout(this.searchTimeout);\n }\n\n this.searchString += event.key;\n this.searchTimeout = setTimeout(() => {\n this.searchString = '';\n }, SEARCH_TIMER_DURATION);\n\n const index = searchStrings.findIndex(\n string =>\n string\n .trim()\n .toLowerCase()\n .indexOf(this.searchString) === 0,\n );\n\n if (index !== -1) {\n this.setState({ focusedIndex: index });\n }\n };\n\n handleCheckboxClick = (event, index) => {\n if (event.nativeEvent.shiftKey) {\n this.selectRange(index);\n } else {\n this.selectToggle(index);\n }\n };\n\n render() {\n const { className, data } = this.props;\n const { focusedIndex } = this.state;\n const focusedItem = data[focusedIndex];\n\n return (\n <Hotkeys configs={this.getHotkeyConfigs()}>\n <BaseTable\n {...this.props}\n className={classNames(className, 'is-selectable')}\n focusedIndex={focusedIndex}\n focusedItem={focusedItem}\n onCheckboxClick={this.handleCheckboxClick}\n onRowClick={this.handleRowClick}\n onRowFocus={this.handleRowFocus}\n onTableBlur={this.handleTableBlur}\n onTableFocus={this.handleTableFocus}\n />\n </Hotkeys>\n );\n }\n };\n}\n\nexport default makeSelectable;\n"],"file":"makeSelectable.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/table/makeSelectable.js"],"names":["PropTypes","React","Component","Set","ImmutablePropTypes","classNames","FormattedMessage","Hotkeys","HotkeyRecord","messages","shiftSelect","SEARCH_TIMER_DURATION","makeSelectable","BaseTable","originalDisplayName","displayName","name","props","focusedIndex","undefined","selectedItems","newFocusedIndex","onSelect","previousIndex","state","setState","isSet","toJS","hotkeyType","key","description","shiftXDescription","handler","selectToggle","type","selectAllDescription","event","data","preventDefault","deselectAllDescription","downDescription","Math","min","length","upDescription","max","shiftDownDescription","handleShiftKeyDown","shiftUpDescription","isTargetSlider","gridColumnCount","handleShiftKeyDownForGrid","enableHotkeys","isGridView","hotkeys","viewSpecificHotKeyConfigs","getGridViewHotKeyConfigs","getListViewHotKeyConfigs","getSharedHotkeyConfigs","loadedData","rowIndex","getProcessedProps","has","delete","add","anchorIndex","selectedRows","reduce","rows","item","i","push","newSelectedRows","newSelectedItems","map","size","index","metaKey","ctrlKey","shiftKey","selectRange","selectOne","blurTimerID","setTimeout","clearFocus","clearTimeout","boundary","focusedIndexData","newFocusedIndexData","union","selectedItemIndecies","sourceIndex","targetIndex","dataSize","isSourceSelected","isTargetSelected","selectedItemIndices","isContiguousSelection","newSelectedItemIndices","searchStrings","target","hasAttribute","nodeName","which","searchTimeout","searchString","findIndex","string","trim","toLowerCase","indexOf","nativeEvent","role","document","addEventListener","handleKeyboardSearch","prevProps","prevState","onFocus","removeEventListener","className","focusedItem","getHotkeyConfigs","handleCheckboxClick","handleRowClick","handleRowFocus","handleTableBlur","handleTableFocus","array","isRequired","number","bool","func","oneOfType","set"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { Set } from 'immutable';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport classNames from 'classnames';\nimport { FormattedMessage } from 'react-intl';\n\nimport { Hotkeys, HotkeyRecord } from '../hotkeys';\nimport messages from './messages';\nimport shiftSelect from './shiftSelect';\n\nconst SEARCH_TIMER_DURATION = 1000;\n\nfunction makeSelectable(BaseTable) {\n const originalDisplayName = BaseTable.displayName || BaseTable.name || 'Table';\n\n return class SelectableTable extends Component {\n static displayName = `Selectable(${originalDisplayName})`;\n\n static propTypes = {\n className: PropTypes.string,\n /** Array of unique IDs of the items in the table. Each item should be a string or number, in the order they appear in the table. */\n data: PropTypes.array.isRequired,\n gridColumnCount: PropTypes.number,\n isGridView: PropTypes.bool,\n /** Called when focus changes. `(focusedIndex: number) => void` */\n onFocus: PropTypes.func,\n /** Called when selection changes. `(selectedItems: Array<string> | Array<number> | Set<string> | Set<number>) => void` */\n onSelect: PropTypes.func.isRequired,\n /**\n * Array of strings for keyboard search corresponding to the data prop. If not provided, keyboard search won't work.\n * Example: data = ['f_123', 'f_456'], and corresponding searchStrings = ['file.png', 'another file.pdf']\n */\n searchStrings: PropTypes.array,\n /**\n * Array of IDs that are currently selected, in any order.\n * If you pass a native JS array, then your onSelect function will be called with a native JS array;\n * likewise, if you pass an ImmutableJS Set, then your onSelect function will be called\n * with an ImmutableJS Set.\n */\n selectedItems: PropTypes.oneOfType([PropTypes.array, ImmutablePropTypes.set]),\n /** Array of unique IDs of the items in the table that are loaded and accessible. If not provided, this will default to all data */\n loadedData: PropTypes.array,\n enableHotkeys: PropTypes.bool,\n /** Translated type for hotkeys. If not provided, then the hotkeys will not appear in the help modal. */\n hotkeyType: PropTypes.string,\n };\n\n static defaultProps = {\n selectedItems: new Set(),\n };\n\n constructor(props) {\n super(props);\n\n this.anchorIndex = 0;\n\n this.searchString = '';\n this.searchTimeout = null;\n\n // we have to store the previously focused index because a focus event\n // will be fired before the click event; thus, in the click handler,\n // the focusedItem will already be the new item\n this.previousIndex = 0;\n\n this.blurTimerID = null;\n }\n\n state = {\n focusedIndex: undefined,\n };\n\n componentDidMount() {\n document.addEventListener('keypress', this.handleKeyboardSearch);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.focusedIndex !== this.state.focusedIndex && this.props.onFocus) {\n this.props.onFocus(this.state.focusedIndex);\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener('keypress', this.handleKeyboardSearch);\n clearTimeout(this.blurTimerID);\n }\n\n onSelect = (selectedItems, newFocusedIndex) => {\n const { onSelect } = this.props;\n\n this.previousIndex = this.state.focusedIndex || 0;\n\n this.setState({\n focusedIndex: newFocusedIndex,\n });\n\n if (onSelect) {\n // If selectedItems were given as an Immutable Set, they should also be returned as one,\n // and vice versa if they were given as a native JS array\n onSelect(Set.isSet(this.props.selectedItems) ? selectedItems : selectedItems.toJS());\n }\n };\n\n getSharedHotkeyConfigs = () => {\n const { hotkeyType } = this.props;\n return [\n new HotkeyRecord({\n key: 'shift+x',\n description: <FormattedMessage {...messages.shiftXDescription} />,\n handler: () => {\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n this.selectToggle(focusedIndex);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: ['meta+a', 'ctrl+a'],\n description: <FormattedMessage {...messages.selectAllDescription} />,\n handler: event => {\n const { data } = this.props;\n\n event.preventDefault();\n\n this.onSelect(new Set(data), this.state.focusedIndex);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'esc',\n description: <FormattedMessage {...messages.deselectAllDescription} />,\n handler: () => {\n this.onSelect(new Set(), this.state.focusedIndex);\n },\n type: hotkeyType,\n }),\n ];\n };\n\n getListViewHotKeyConfigs = () => {\n const { hotkeyType } = this.props;\n return [\n new HotkeyRecord({\n key: 'down',\n description: <FormattedMessage {...messages.downDescription} />,\n handler: event => {\n const { data } = this.props;\n const { focusedIndex } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex =\n focusedIndex !== undefined ? Math.min(focusedIndex + 1, data.length - 1) : 0;\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'up',\n description: <FormattedMessage {...messages.upDescription} />,\n handler: event => {\n const { focusedIndex = 0 } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex = Math.max(focusedIndex - 1, 0);\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+down',\n description: <FormattedMessage {...messages.shiftDownDescription} />,\n handler: () => {\n const { data } = this.props;\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.min(focusedIndex + 1, data.length - 1);\n this.handleShiftKeyDown(newFocusedIndex, data.length - 1);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+up',\n description: <FormattedMessage {...messages.shiftUpDescription} />,\n handler: () => {\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.max(focusedIndex - 1, 0);\n this.handleShiftKeyDown(newFocusedIndex, 0);\n },\n type: hotkeyType,\n }),\n ];\n };\n\n getGridViewHotKeyConfigs = () => {\n const { hotkeyType } = this.props;\n return [\n new HotkeyRecord({\n key: 'right',\n description: <FormattedMessage {...messages.downDescription} />,\n handler: event => {\n if (this.isTargetSlider(event)) {\n return;\n }\n\n const { data } = this.props;\n const { focusedIndex } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex =\n focusedIndex !== undefined ? Math.min(focusedIndex + 1, data.length - 1) : 0;\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'left',\n description: <FormattedMessage {...messages.upDescription} />,\n handler: event => {\n if (this.isTargetSlider(event)) {\n return;\n }\n\n const { focusedIndex = 0 } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex = Math.max(focusedIndex - 1, 0);\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'down',\n description: <FormattedMessage {...messages.downDescription} />,\n handler: event => {\n if (this.isTargetSlider(event)) {\n return;\n }\n\n const { data, gridColumnCount } = this.props;\n const { focusedIndex } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex =\n focusedIndex !== undefined ? Math.min(focusedIndex + gridColumnCount, data.length - 1) : 0;\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'up',\n description: <FormattedMessage {...messages.upDescription} />,\n handler: event => {\n if (this.isTargetSlider(event)) {\n return;\n }\n\n const { gridColumnCount } = this.props;\n const { focusedIndex = 0 } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex = Math.max(focusedIndex - gridColumnCount, 0);\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+right',\n description: <FormattedMessage {...messages.shiftDownDescription} />,\n handler: () => {\n const { data } = this.props;\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.min(focusedIndex + 1, data.length - 1);\n this.handleShiftKeyDownForGrid(newFocusedIndex, data.length - 1);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+left',\n description: <FormattedMessage {...messages.shiftUpDescription} />,\n handler: () => {\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.max(focusedIndex - 1, 0);\n this.handleShiftKeyDownForGrid(newFocusedIndex, 0);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+down',\n description: <FormattedMessage {...messages.shiftDownDescription} />,\n handler: () => {\n const { data, gridColumnCount } = this.props;\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.min(focusedIndex + gridColumnCount, data.length - 1);\n this.handleShiftKeyDownForGrid(newFocusedIndex, data.length - 1);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+up',\n description: <FormattedMessage {...messages.shiftUpDescription} />,\n handler: () => {\n const { gridColumnCount } = this.props;\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.max(focusedIndex - gridColumnCount, 0);\n this.handleShiftKeyDownForGrid(newFocusedIndex, 0);\n },\n type: hotkeyType,\n }),\n ];\n };\n\n getHotkeyConfigs = () => {\n const { enableHotkeys, isGridView, gridColumnCount } = this.props;\n\n if (!enableHotkeys && !this.hotkeys) {\n this.hotkeys = [];\n }\n\n if (!this.hotkeys) {\n const viewSpecificHotKeyConfigs =\n isGridView && gridColumnCount !== undefined\n ? this.getGridViewHotKeyConfigs()\n : this.getListViewHotKeyConfigs();\n\n this.hotkeys = [...this.getSharedHotkeyConfigs(), ...viewSpecificHotKeyConfigs];\n }\n\n return this.hotkeys;\n };\n\n getProcessedProps = () => {\n const { data, loadedData, selectedItems } = this.props;\n return {\n ...this.props,\n loadedData: loadedData ? Set(loadedData) : Set(data),\n selectedItems: Set.isSet(selectedItems) ? selectedItems : new Set(selectedItems),\n };\n };\n\n hotkeys = null;\n\n selectToggle = rowIndex => {\n const { data, selectedItems } = this.getProcessedProps();\n\n if (selectedItems.has(data[rowIndex])) {\n this.onSelect(selectedItems.delete(data[rowIndex]), rowIndex);\n } else {\n this.onSelect(selectedItems.add(data[rowIndex]), rowIndex);\n }\n\n this.anchorIndex = rowIndex;\n };\n\n selectRange = rowIndex => {\n const { data, selectedItems } = this.getProcessedProps();\n\n // Don't change selection if we're shift-clicking the same row\n if (rowIndex === this.previousIndex) {\n return;\n }\n\n // Converts set of items to set of indices to do some slicing magic\n const selectedRows = new Set(\n data.reduce((rows, item, i) => {\n if (selectedItems.has(item)) {\n rows.push(i);\n }\n return rows;\n }, []),\n );\n\n const newSelectedRows = shiftSelect(selectedRows, this.previousIndex, rowIndex, this.anchorIndex);\n\n // Converts set back to set of items\n const newSelectedItems = newSelectedRows.map(i => data[i]);\n\n this.onSelect(newSelectedItems, rowIndex);\n };\n\n selectOne = rowIndex => {\n const { data, selectedItems } = this.getProcessedProps();\n\n // Don't change selection if we're clicking on a row that we've already selected\n // This allows us to use the native onDoubleClick handler because we're referencing the\n // same DOM node on double-click.\n if (selectedItems.has(data[rowIndex]) && selectedItems.size === 1) {\n return;\n }\n\n this.onSelect(new Set([data[rowIndex]]), rowIndex);\n this.anchorIndex = rowIndex;\n };\n\n clearFocus = () => {\n this.setState({\n focusedIndex: undefined,\n });\n };\n\n handleRowClick = (event, index) => {\n if (event.metaKey || event.ctrlKey) {\n this.selectToggle(index);\n } else if (event.shiftKey) {\n this.selectRange(index);\n } else {\n this.selectOne(index);\n }\n };\n\n handleRowFocus = (event, index) => {\n const { selectedItems } = this.getProcessedProps();\n this.onSelect(selectedItems, index);\n };\n\n handleTableBlur = () => {\n const { focusedIndex } = this.state;\n if (focusedIndex !== undefined) {\n // table may get focus back right away in the same tick, in which case we shouldn't clear focus\n this.blurTimerID = setTimeout(this.clearFocus);\n }\n };\n\n handleTableFocus = () => {\n clearTimeout(this.blurTimerID);\n };\n\n handleShiftKeyDown = (newFocusedIndex, boundary) => {\n const { data, selectedItems } = this.getProcessedProps();\n const { focusedIndex } = this.state;\n\n const focusedIndexData = data[focusedIndex];\n const newFocusedIndexData = data[newFocusedIndex];\n\n // if we're at a boundary of the table and the row is selected, no-op\n if (focusedIndex === boundary && selectedItems.has(focusedIndexData)) {\n return;\n }\n\n // if both the target and source are not selected, select them both\n if (!selectedItems.has(focusedIndexData) && !selectedItems.has(newFocusedIndexData)) {\n this.onSelect(selectedItems.union([focusedIndexData, newFocusedIndexData]), newFocusedIndex);\n return;\n }\n\n // if target is not selected, select it\n if (!selectedItems.has(newFocusedIndexData)) {\n this.onSelect(selectedItems.add(newFocusedIndexData), newFocusedIndex);\n return;\n }\n\n // if both source and target are selected, deselect source\n if (selectedItems.has(newFocusedIndexData) && selectedItems.has(focusedIndexData)) {\n this.onSelect(selectedItems.delete(focusedIndexData), newFocusedIndex);\n return;\n }\n\n // if target is selected and source is not, select source\n this.onSelect(selectedItems.add(focusedIndexData), newFocusedIndex);\n };\n\n isContiguousSelection = (selectedItemIndecies, sourceIndex, targetIndex) => {\n if (sourceIndex < targetIndex && selectedItemIndecies.has(sourceIndex - 1)) {\n return true;\n }\n if (targetIndex < sourceIndex && selectedItemIndecies.has(sourceIndex + 1)) {\n return true;\n }\n return false;\n };\n\n handleShiftKeyDownForGrid = newFocusedIndex => {\n const { data, loadedData, selectedItems } = this.getProcessedProps();\n const { focusedIndex } = this.state;\n\n const dataSize = data.length;\n const targetIndex = newFocusedIndex < 0 ? 0 : Math.min(newFocusedIndex, dataSize - 1);\n const isSourceSelected = selectedItems.has(data[focusedIndex]);\n const isTargetSelected = selectedItems.has(data[targetIndex]);\n\n // if data is not loaded, we don't want it to be able to be selected\n if (!loadedData.has(data[targetIndex])) {\n return;\n }\n\n const selectedItemIndices = new Set(\n data.reduce((rows, item, i) => {\n if (selectedItems.has(item)) {\n rows.push(i);\n }\n return rows;\n }, []),\n );\n\n // reset the anchor on a new selection block\n if (\n !isSourceSelected &&\n !isTargetSelected &&\n // if we are starting a new mass selection adjacent selected block, we want to connect them\n !this.isContiguousSelection(selectedItemIndices, focusedIndex, targetIndex)\n ) {\n this.anchorIndex = focusedIndex;\n }\n\n const newSelectedItemIndices = shiftSelect(\n selectedItemIndices,\n focusedIndex,\n targetIndex,\n this.anchorIndex,\n );\n\n const newSelectedItems = newSelectedItemIndices.map(i => data[i]);\n\n this.onSelect(newSelectedItems, targetIndex);\n };\n\n handleKeyboardSearch = event => {\n const { searchStrings } = this.props;\n\n if (!searchStrings) {\n return;\n }\n\n if (\n event.target.hasAttribute('contenteditable') ||\n event.target.nodeName === 'INPUT' ||\n event.target.nodeName === 'TEXTAREA'\n ) {\n return;\n }\n\n // character keys have a value for event.which\n if (event.which === 0) {\n return;\n }\n\n if (this.searchTimeout) {\n clearTimeout(this.searchTimeout);\n }\n\n this.searchString += event.key;\n this.searchTimeout = setTimeout(() => {\n this.searchString = '';\n }, SEARCH_TIMER_DURATION);\n\n const index = searchStrings.findIndex(\n string =>\n string\n .trim()\n .toLowerCase()\n .indexOf(this.searchString) === 0,\n );\n\n if (index !== -1) {\n this.setState({ focusedIndex: index });\n }\n };\n\n handleCheckboxClick = (event, index) => {\n if (event.nativeEvent.shiftKey) {\n this.selectRange(index);\n } else {\n this.selectToggle(index);\n }\n };\n\n isTargetSlider = event => event.target?.role === 'slider';\n\n render() {\n const { className, data } = this.props;\n const { focusedIndex } = this.state;\n const focusedItem = data[focusedIndex];\n\n return (\n <Hotkeys configs={this.getHotkeyConfigs()}>\n <BaseTable\n {...this.props}\n className={classNames(className, 'is-selectable')}\n focusedIndex={focusedIndex}\n focusedItem={focusedItem}\n onCheckboxClick={this.handleCheckboxClick}\n onRowClick={this.handleRowClick}\n onRowFocus={this.handleRowFocus}\n onTableBlur={this.handleTableBlur}\n onTableFocus={this.handleTableFocus}\n />\n </Hotkeys>\n );\n }\n };\n}\n\nexport default makeSelectable;\n"],"file":"makeSelectable.js"}
|
|
@@ -185,8 +185,9 @@ function (_React$PureComponent) {
|
|
|
185
185
|
var _this3 = this;
|
|
186
186
|
|
|
187
187
|
var _this$props4 = this.props,
|
|
188
|
+
additionalButtons = _this$props4.additionalButtons,
|
|
188
189
|
className = _this$props4.className,
|
|
189
|
-
rest = _objectWithoutProperties(_this$props4, ["className"]);
|
|
190
|
+
rest = _objectWithoutProperties(_this$props4, ["additionalButtons", "className"]);
|
|
190
191
|
|
|
191
192
|
var copySuccess = this.state.copySuccess;
|
|
192
193
|
var isCopyCommandSupported = this.isCopyCommandSupported;
|
|
@@ -209,7 +210,7 @@ function (_React$PureComponent) {
|
|
|
209
210
|
className: wrapperClasses
|
|
210
211
|
}, copyEvent), React.createElement(TextInput, _extends({}, inputProps, {
|
|
211
212
|
onFocus: this.handleFocus
|
|
212
|
-
})), this.renderCopyButton());
|
|
213
|
+
})), additionalButtons, this.renderCopyButton());
|
|
213
214
|
}
|
|
214
215
|
}]);
|
|
215
216
|
|
|
@@ -16,6 +16,8 @@ const defaultCopyText = <FormattedMessage {...messages.copy} />;
|
|
|
16
16
|
const defaultCopiedText = <FormattedMessage {...messages.copied} />;
|
|
17
17
|
|
|
18
18
|
type Props = {
|
|
19
|
+
/** Array of nodes for additional buttons */
|
|
20
|
+
additionalButtons?: Array<React.Node>,
|
|
19
21
|
/** Set the focus to input when component loads */
|
|
20
22
|
autofocus?: boolean,
|
|
21
23
|
/** Default copy button text */
|
|
@@ -186,7 +188,7 @@ class TextInputWithCopyButton extends React.PureComponent<Props, State> {
|
|
|
186
188
|
) : null;
|
|
187
189
|
|
|
188
190
|
render() {
|
|
189
|
-
const { className, ...rest } = this.props;
|
|
191
|
+
const { additionalButtons, className, ...rest } = this.props;
|
|
190
192
|
const { copySuccess } = this.state;
|
|
191
193
|
const { isCopyCommandSupported } = this;
|
|
192
194
|
|
|
@@ -216,6 +218,7 @@ class TextInputWithCopyButton extends React.PureComponent<Props, State> {
|
|
|
216
218
|
return (
|
|
217
219
|
<div className={wrapperClasses} {...copyEvent}>
|
|
218
220
|
<TextInput {...inputProps} onFocus={this.handleFocus} />
|
|
221
|
+
{additionalButtons}
|
|
219
222
|
{this.renderCopyButton()}
|
|
220
223
|
</div>
|
|
221
224
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/text-input-with-copy-button/TextInputWithCopyButton.js"],"names":["React","classNames","omit","FormattedMessage","messages","TextInput","Button","DEFAULT_SUCCESS_STATE_DURATION","defaultCopyText","copy","defaultCopiedText","copied","TextInputWithCopyButton","props","document","execCommand","setState","copySuccess","buttonText","buttonDefaultText","performAutofocus","copySelectedText","animateCopyButton","event","copyInputRef","onFocus","onCopySuccess","select","scrollLeft","isCopyCommandSupported","disabled","handleCopyButtonClick","buttonProps","state","queryCommandSupported","hasFocused","autofocus","value","triggerCopyOnLoad","clearCopySuccessTimeout","successStateDuration","buttonSuccessText","copySuccessTimeout","setTimeout","restoreCopyButton","clearTimeout","className","rest","inputProps","inputRef","ref","wrapperClasses","copyEvent","onCopy","handleCopyEvent","handleFocus","renderCopyButton","PureComponent","hideOptionalLabel","readOnly","type"],"mappings":"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","sourcesContent":["// @flow\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport omit from 'lodash/omit';\nimport { FormattedMessage } from 'react-intl';\n\nimport messages from '../../common/messages';\nimport TextInput from '../text-input';\nimport Button from '../button';\n\nimport './TextInputWithCopyButton.scss';\n\nconst DEFAULT_SUCCESS_STATE_DURATION = 3000;\n\nconst defaultCopyText = <FormattedMessage {...messages.copy} />;\nconst defaultCopiedText = <FormattedMessage {...messages.copied} />;\n\ntype Props = {\n /** Set the focus to input when component loads */\n autofocus?: boolean,\n /** Default copy button text */\n buttonDefaultText: string | React.Node,\n /** Copy button text when copy is successful */\n buttonProps?: Object,\n buttonSuccessText?: string | React.Node,\n className: string,\n disabled?: boolean,\n /** Label displayed for the text input */\n // TODO: Make label required\n label?: React.Node,\n /** onFocus handler for the input el */\n onCopySuccess?: Function,\n /** Function called when link is copied by keyboard or button */\n onFocus?: Function,\n /** Duration (milliseconds) in which to show the copy success state */\n successStateDuration: number,\n /** trigger the copy animation when the component loads (used to simulate a click on copy button) */\n triggerCopyOnLoad?: boolean,\n /** html input types (email, url, text, number), defaults to 'text' */\n type: string,\n /** Value of the text input */\n value: React.Node,\n};\n\ntype State = {\n buttonText: string | React.Node,\n copySuccess: boolean,\n hasFocused: boolean,\n};\n\nclass TextInputWithCopyButton extends React.PureComponent<Props, State> {\n static defaultProps = {\n buttonDefaultText: defaultCopyText,\n buttonProps: {},\n buttonSuccessText: defaultCopiedText,\n className: '',\n hideOptionalLabel: true,\n readOnly: true,\n successStateDuration: DEFAULT_SUCCESS_STATE_DURATION,\n type: 'text',\n };\n\n constructor(props: Props) {\n super(props);\n\n this.isCopyCommandSupported = document.queryCommandSupported('copy');\n\n this.state = {\n copySuccess: false,\n buttonText: props.buttonDefaultText,\n hasFocused: false,\n };\n }\n\n componentDidMount() {\n const { autofocus, value } = this.props;\n\n if (autofocus && value) {\n this.performAutofocus();\n }\n }\n\n componentDidUpdate() {\n const { autofocus, value, triggerCopyOnLoad } = this.props;\n const { copySuccess, hasFocused } = this.state;\n\n // if we've set focus before, and should auto focus on update, make sure to\n // focus after component update\n if (autofocus && value) {\n this.performAutofocus();\n }\n\n if (triggerCopyOnLoad && !copySuccess && !hasFocused) {\n this.animateCopyButton();\n }\n }\n\n componentWillUnmount() {\n this.clearCopySuccessTimeout();\n }\n\n copyInputRef: ?HTMLInputElement;\n\n copySuccessTimeout: ?TimeoutID;\n\n isCopyCommandSupported: boolean;\n\n animateCopyButton() {\n const { successStateDuration, buttonSuccessText } = this.props;\n this.clearCopySuccessTimeout();\n\n this.setState(\n {\n copySuccess: true,\n buttonText: buttonSuccessText,\n hasFocused: true,\n },\n () => {\n this.copySuccessTimeout = setTimeout(() => {\n this.restoreCopyButton();\n }, successStateDuration);\n },\n );\n }\n\n clearCopySuccessTimeout() {\n if (!this.copySuccessTimeout) {\n return;\n }\n clearTimeout(this.copySuccessTimeout);\n this.copySuccessTimeout = null;\n }\n\n copySelectedText = () => document.execCommand('copy');\n\n restoreCopyButton = () => {\n this.setState({\n copySuccess: false,\n buttonText: this.props.buttonDefaultText,\n });\n };\n\n handleCopyButtonClick = () => {\n this.performAutofocus();\n this.copySelectedText();\n this.animateCopyButton();\n };\n\n handleFocus = (event: SyntheticEvent<>) => {\n if (this.copyInputRef) {\n this.performAutofocus();\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n handleCopyEvent = (event: SyntheticEvent<>) => {\n this.animateCopyButton();\n\n const { onCopySuccess } = this.props;\n if (onCopySuccess) {\n onCopySuccess(event);\n }\n };\n\n performAutofocus = () => {\n const { copyInputRef } = this;\n if (copyInputRef) {\n copyInputRef.select();\n copyInputRef.scrollLeft = 0;\n }\n };\n\n renderCopyButton = () =>\n this.isCopyCommandSupported ? (\n <Button\n isDisabled={this.props.disabled}\n onClick={this.handleCopyButtonClick}\n type=\"button\"\n {...this.props.buttonProps}\n >\n {this.state.buttonText}\n </Button>\n ) : null;\n\n render() {\n const { className, ...rest } = this.props;\n const { copySuccess } = this.state;\n const { isCopyCommandSupported } = this;\n\n const inputProps = omit(rest, [\n 'autofocus',\n 'buttonDefaultText',\n 'buttonSuccessText',\n 'buttonProps',\n 'onCopySuccess',\n 'successStateDuration',\n 'triggerCopyOnLoad',\n ]);\n\n if (isCopyCommandSupported) {\n inputProps.inputRef = ref => {\n this.copyInputRef = ref;\n };\n }\n\n const wrapperClasses = classNames(className, {\n 'copy-success': copySuccess,\n 'text-input-with-copy-button-container': isCopyCommandSupported,\n });\n\n const copyEvent = isCopyCommandSupported ? { onCopy: this.handleCopyEvent } : {};\n\n return (\n <div className={wrapperClasses} {...copyEvent}>\n <TextInput {...inputProps} onFocus={this.handleFocus} />\n {this.renderCopyButton()}\n </div>\n );\n }\n}\n\nexport default TextInputWithCopyButton;\n"],"file":"TextInputWithCopyButton.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/text-input-with-copy-button/TextInputWithCopyButton.js"],"names":["React","classNames","omit","FormattedMessage","messages","TextInput","Button","DEFAULT_SUCCESS_STATE_DURATION","defaultCopyText","copy","defaultCopiedText","copied","TextInputWithCopyButton","props","document","execCommand","setState","copySuccess","buttonText","buttonDefaultText","performAutofocus","copySelectedText","animateCopyButton","event","copyInputRef","onFocus","onCopySuccess","select","scrollLeft","isCopyCommandSupported","disabled","handleCopyButtonClick","buttonProps","state","queryCommandSupported","hasFocused","autofocus","value","triggerCopyOnLoad","clearCopySuccessTimeout","successStateDuration","buttonSuccessText","copySuccessTimeout","setTimeout","restoreCopyButton","clearTimeout","additionalButtons","className","rest","inputProps","inputRef","ref","wrapperClasses","copyEvent","onCopy","handleCopyEvent","handleFocus","renderCopyButton","PureComponent","hideOptionalLabel","readOnly","type"],"mappings":"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","sourcesContent":["// @flow\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport omit from 'lodash/omit';\nimport { FormattedMessage } from 'react-intl';\n\nimport messages from '../../common/messages';\nimport TextInput from '../text-input';\nimport Button from '../button';\n\nimport './TextInputWithCopyButton.scss';\n\nconst DEFAULT_SUCCESS_STATE_DURATION = 3000;\n\nconst defaultCopyText = <FormattedMessage {...messages.copy} />;\nconst defaultCopiedText = <FormattedMessage {...messages.copied} />;\n\ntype Props = {\n /** Array of nodes for additional buttons */\n additionalButtons?: Array<React.Node>,\n /** Set the focus to input when component loads */\n autofocus?: boolean,\n /** Default copy button text */\n buttonDefaultText: string | React.Node,\n /** Copy button text when copy is successful */\n buttonProps?: Object,\n buttonSuccessText?: string | React.Node,\n className: string,\n disabled?: boolean,\n /** Label displayed for the text input */\n // TODO: Make label required\n label?: React.Node,\n /** onFocus handler for the input el */\n onCopySuccess?: Function,\n /** Function called when link is copied by keyboard or button */\n onFocus?: Function,\n /** Duration (milliseconds) in which to show the copy success state */\n successStateDuration: number,\n /** trigger the copy animation when the component loads (used to simulate a click on copy button) */\n triggerCopyOnLoad?: boolean,\n /** html input types (email, url, text, number), defaults to 'text' */\n type: string,\n /** Value of the text input */\n value: React.Node,\n};\n\ntype State = {\n buttonText: string | React.Node,\n copySuccess: boolean,\n hasFocused: boolean,\n};\n\nclass TextInputWithCopyButton extends React.PureComponent<Props, State> {\n static defaultProps = {\n buttonDefaultText: defaultCopyText,\n buttonProps: {},\n buttonSuccessText: defaultCopiedText,\n className: '',\n hideOptionalLabel: true,\n readOnly: true,\n successStateDuration: DEFAULT_SUCCESS_STATE_DURATION,\n type: 'text',\n };\n\n constructor(props: Props) {\n super(props);\n\n this.isCopyCommandSupported = document.queryCommandSupported('copy');\n\n this.state = {\n copySuccess: false,\n buttonText: props.buttonDefaultText,\n hasFocused: false,\n };\n }\n\n componentDidMount() {\n const { autofocus, value } = this.props;\n\n if (autofocus && value) {\n this.performAutofocus();\n }\n }\n\n componentDidUpdate() {\n const { autofocus, value, triggerCopyOnLoad } = this.props;\n const { copySuccess, hasFocused } = this.state;\n\n // if we've set focus before, and should auto focus on update, make sure to\n // focus after component update\n if (autofocus && value) {\n this.performAutofocus();\n }\n\n if (triggerCopyOnLoad && !copySuccess && !hasFocused) {\n this.animateCopyButton();\n }\n }\n\n componentWillUnmount() {\n this.clearCopySuccessTimeout();\n }\n\n copyInputRef: ?HTMLInputElement;\n\n copySuccessTimeout: ?TimeoutID;\n\n isCopyCommandSupported: boolean;\n\n animateCopyButton() {\n const { successStateDuration, buttonSuccessText } = this.props;\n this.clearCopySuccessTimeout();\n\n this.setState(\n {\n copySuccess: true,\n buttonText: buttonSuccessText,\n hasFocused: true,\n },\n () => {\n this.copySuccessTimeout = setTimeout(() => {\n this.restoreCopyButton();\n }, successStateDuration);\n },\n );\n }\n\n clearCopySuccessTimeout() {\n if (!this.copySuccessTimeout) {\n return;\n }\n clearTimeout(this.copySuccessTimeout);\n this.copySuccessTimeout = null;\n }\n\n copySelectedText = () => document.execCommand('copy');\n\n restoreCopyButton = () => {\n this.setState({\n copySuccess: false,\n buttonText: this.props.buttonDefaultText,\n });\n };\n\n handleCopyButtonClick = () => {\n this.performAutofocus();\n this.copySelectedText();\n this.animateCopyButton();\n };\n\n handleFocus = (event: SyntheticEvent<>) => {\n if (this.copyInputRef) {\n this.performAutofocus();\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n handleCopyEvent = (event: SyntheticEvent<>) => {\n this.animateCopyButton();\n\n const { onCopySuccess } = this.props;\n if (onCopySuccess) {\n onCopySuccess(event);\n }\n };\n\n performAutofocus = () => {\n const { copyInputRef } = this;\n if (copyInputRef) {\n copyInputRef.select();\n copyInputRef.scrollLeft = 0;\n }\n };\n\n renderCopyButton = () =>\n this.isCopyCommandSupported ? (\n <Button\n isDisabled={this.props.disabled}\n onClick={this.handleCopyButtonClick}\n type=\"button\"\n {...this.props.buttonProps}\n >\n {this.state.buttonText}\n </Button>\n ) : null;\n\n render() {\n const { additionalButtons, className, ...rest } = this.props;\n const { copySuccess } = this.state;\n const { isCopyCommandSupported } = this;\n\n const inputProps = omit(rest, [\n 'autofocus',\n 'buttonDefaultText',\n 'buttonSuccessText',\n 'buttonProps',\n 'onCopySuccess',\n 'successStateDuration',\n 'triggerCopyOnLoad',\n ]);\n\n if (isCopyCommandSupported) {\n inputProps.inputRef = ref => {\n this.copyInputRef = ref;\n };\n }\n\n const wrapperClasses = classNames(className, {\n 'copy-success': copySuccess,\n 'text-input-with-copy-button-container': isCopyCommandSupported,\n });\n\n const copyEvent = isCopyCommandSupported ? { onCopy: this.handleCopyEvent } : {};\n\n return (\n <div className={wrapperClasses} {...copyEvent}>\n <TextInput {...inputProps} onFocus={this.handleFocus} />\n {additionalButtons}\n {this.renderCopyButton()}\n </div>\n );\n }\n}\n\nexport default TextInputWithCopyButton;\n"],"file":"TextInputWithCopyButton.js"}
|
|
@@ -19,19 +19,23 @@
|
|
|
19
19
|
|
|
20
20
|
.bdl-Button,
|
|
21
21
|
.btn {
|
|
22
|
-
min-width: 80px;
|
|
23
22
|
margin: 0;
|
|
24
23
|
border-left: 0;
|
|
25
|
-
border-
|
|
26
|
-
|
|
24
|
+
border-radius: 0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.bdl-Button:last-child,
|
|
28
|
+
.btn:last-child {
|
|
29
|
+
min-width: 80px;
|
|
30
|
+
border-top-right-radius: $bdl-border-radius-size-med;
|
|
31
|
+
border-bottom-right-radius: $bdl-border-radius-size-med;
|
|
27
32
|
transition: background-color .5s ease, border-color .5s ease;
|
|
28
33
|
}
|
|
29
34
|
|
|
30
35
|
&.copy-success {
|
|
31
|
-
.btn,
|
|
32
|
-
.btn:hover,
|
|
33
|
-
.btn:active
|
|
34
|
-
.btn:active:hover {
|
|
36
|
+
.btn:last-child,
|
|
37
|
+
.btn:last-child:hover,
|
|
38
|
+
.btn:last-child:active {
|
|
35
39
|
color: $white;
|
|
36
40
|
background-color: $bdl-green-light;
|
|
37
41
|
border-color: $bdl-green-light;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import ReadableTime from './ReadableTime';
|
|
3
|
+
import notes from './ReadableTime.stories.md';
|
|
4
|
+
var MILLISECONDS_PER_HOUR = 60 * 60 * 1000;
|
|
5
|
+
var MILLISECONDS_PER_DAY = MILLISECONDS_PER_HOUR * 24;
|
|
6
|
+
var MILLISECONDS_PER_WEEK = MILLISECONDS_PER_DAY * 7;
|
|
7
|
+
export var relativeTimestamps = function relativeTimestamps() {
|
|
8
|
+
return React.createElement("div", null, React.createElement("div", null, React.createElement(ReadableTime, {
|
|
9
|
+
timestamp: Date.now() - MILLISECONDS_PER_HOUR + 30 * 60 * 1000,
|
|
10
|
+
relativeThreshold: MILLISECONDS_PER_HOUR
|
|
11
|
+
})), React.createElement("div", null, React.createElement(ReadableTime, {
|
|
12
|
+
timestamp: Date.now() - 2 * MILLISECONDS_PER_HOUR,
|
|
13
|
+
relativeThreshold: MILLISECONDS_PER_HOUR
|
|
14
|
+
})), React.createElement("div", null, React.createElement(ReadableTime, {
|
|
15
|
+
timestamp: Date.now() - MILLISECONDS_PER_DAY,
|
|
16
|
+
relativeThreshold: MILLISECONDS_PER_HOUR
|
|
17
|
+
})));
|
|
18
|
+
};
|
|
19
|
+
export var dateWithoutTime = function dateWithoutTime() {
|
|
20
|
+
return React.createElement(ReadableTime, {
|
|
21
|
+
timestamp: Date.now() - MILLISECONDS_PER_WEEK,
|
|
22
|
+
relativeThreshold: MILLISECONDS_PER_HOUR
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
export var dateWithTime = function dateWithTime() {
|
|
26
|
+
return React.createElement(ReadableTime, {
|
|
27
|
+
timestamp: Date.now() - MILLISECONDS_PER_WEEK,
|
|
28
|
+
relativeThreshold: MILLISECONDS_PER_HOUR,
|
|
29
|
+
alwaysShowTime: true
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
export var dateInTheFutureWhenNotAllowed = function dateInTheFutureWhenNotAllowed() {
|
|
33
|
+
return React.createElement(ReadableTime, {
|
|
34
|
+
timestamp: Date.now() + 70 * MILLISECONDS_PER_DAY,
|
|
35
|
+
relativeThreshold: MILLISECONDS_PER_HOUR,
|
|
36
|
+
allowFutureTimestamps: false
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
export default {
|
|
40
|
+
title: 'Components|ReadableTime',
|
|
41
|
+
component: ReadableTime,
|
|
42
|
+
parameters: {
|
|
43
|
+
notes: notes
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=ReadableTime.stories.js.map
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
import ReadableTime from './ReadableTime';
|
|
4
|
+
import notes from './ReadableTime.stories.md';
|
|
5
|
+
|
|
6
|
+
const MILLISECONDS_PER_HOUR = 60 * 60 * 1000;
|
|
7
|
+
const MILLISECONDS_PER_DAY = MILLISECONDS_PER_HOUR * 24;
|
|
8
|
+
const MILLISECONDS_PER_WEEK = MILLISECONDS_PER_DAY * 7;
|
|
9
|
+
|
|
10
|
+
export const relativeTimestamps = () => (
|
|
11
|
+
<div>
|
|
12
|
+
<div>
|
|
13
|
+
<ReadableTime
|
|
14
|
+
timestamp={Date.now() - MILLISECONDS_PER_HOUR + 30 * 60 * 1000}
|
|
15
|
+
relativeThreshold={MILLISECONDS_PER_HOUR}
|
|
16
|
+
/>
|
|
17
|
+
</div>
|
|
18
|
+
<div>
|
|
19
|
+
<ReadableTime
|
|
20
|
+
timestamp={Date.now() - 2 * MILLISECONDS_PER_HOUR}
|
|
21
|
+
relativeThreshold={MILLISECONDS_PER_HOUR}
|
|
22
|
+
/>
|
|
23
|
+
</div>
|
|
24
|
+
<div>
|
|
25
|
+
<ReadableTime timestamp={Date.now() - MILLISECONDS_PER_DAY} relativeThreshold={MILLISECONDS_PER_HOUR} />
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
export const dateWithoutTime = () => (
|
|
31
|
+
<ReadableTime timestamp={Date.now() - MILLISECONDS_PER_WEEK} relativeThreshold={MILLISECONDS_PER_HOUR} />
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
export const dateWithTime = () => (
|
|
35
|
+
<ReadableTime
|
|
36
|
+
timestamp={Date.now() - MILLISECONDS_PER_WEEK}
|
|
37
|
+
relativeThreshold={MILLISECONDS_PER_HOUR}
|
|
38
|
+
alwaysShowTime
|
|
39
|
+
/>
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
export const dateInTheFutureWhenNotAllowed = () => (
|
|
43
|
+
<ReadableTime
|
|
44
|
+
timestamp={Date.now() + 70 * MILLISECONDS_PER_DAY}
|
|
45
|
+
relativeThreshold={MILLISECONDS_PER_HOUR}
|
|
46
|
+
allowFutureTimestamps={false}
|
|
47
|
+
/>
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
export default {
|
|
51
|
+
title: 'Components|ReadableTime',
|
|
52
|
+
component: ReadableTime,
|
|
53
|
+
parameters: {
|
|
54
|
+
notes,
|
|
55
|
+
},
|
|
56
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/components/time/ReadableTime.stories.js"],"names":["React","ReadableTime","notes","MILLISECONDS_PER_HOUR","MILLISECONDS_PER_DAY","MILLISECONDS_PER_WEEK","relativeTimestamps","Date","now","dateWithoutTime","dateWithTime","dateInTheFutureWhenNotAllowed","title","component","parameters"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,OAAOC,YAAP,MAAyB,gBAAzB;AACA,OAAOC,KAAP,MAAkB,2BAAlB;AAEA,IAAMC,qBAAqB,GAAG,KAAK,EAAL,GAAU,IAAxC;AACA,IAAMC,oBAAoB,GAAGD,qBAAqB,GAAG,EAArD;AACA,IAAME,qBAAqB,GAAGD,oBAAoB,GAAG,CAArD;AAEA,OAAO,IAAME,kBAAkB,GAAG,SAArBA,kBAAqB;AAAA,SAC9B,iCACI,iCACI,oBAAC,YAAD;AACI,IAAA,SAAS,EAAEC,IAAI,CAACC,GAAL,KAAaL,qBAAb,GAAqC,KAAK,EAAL,GAAU,IAD9D;AAEI,IAAA,iBAAiB,EAAEA;AAFvB,IADJ,CADJ,EAOI,iCACI,oBAAC,YAAD;AACI,IAAA,SAAS,EAAEI,IAAI,CAACC,GAAL,KAAa,IAAIL,qBADhC;AAEI,IAAA,iBAAiB,EAAEA;AAFvB,IADJ,CAPJ,EAaI,iCACI,oBAAC,YAAD;AAAc,IAAA,SAAS,EAAEI,IAAI,CAACC,GAAL,KAAaJ,oBAAtC;AAA4D,IAAA,iBAAiB,EAAED;AAA/E,IADJ,CAbJ,CAD8B;AAAA,CAA3B;AAoBP,OAAO,IAAMM,eAAe,GAAG,SAAlBA,eAAkB;AAAA,SAC3B,oBAAC,YAAD;AAAc,IAAA,SAAS,EAAEF,IAAI,CAACC,GAAL,KAAaH,qBAAtC;AAA6D,IAAA,iBAAiB,EAAEF;AAAhF,IAD2B;AAAA,CAAxB;AAIP,OAAO,IAAMO,YAAY,GAAG,SAAfA,YAAe;AAAA,SACxB,oBAAC,YAAD;AACI,IAAA,SAAS,EAAEH,IAAI,CAACC,GAAL,KAAaH,qBAD5B;AAEI,IAAA,iBAAiB,EAAEF,qBAFvB;AAGI,IAAA,cAAc;AAHlB,IADwB;AAAA,CAArB;AAQP,OAAO,IAAMQ,6BAA6B,GAAG,SAAhCA,6BAAgC;AAAA,SACzC,oBAAC,YAAD;AACI,IAAA,SAAS,EAAEJ,IAAI,CAACC,GAAL,KAAa,KAAKJ,oBADjC;AAEI,IAAA,iBAAiB,EAAED,qBAFvB;AAGI,IAAA,qBAAqB,EAAE;AAH3B,IADyC;AAAA,CAAtC;AAQP,eAAe;AACXS,EAAAA,KAAK,EAAE,yBADI;AAEXC,EAAAA,SAAS,EAAEZ,YAFA;AAGXa,EAAAA,UAAU,EAAE;AACRZ,IAAAA,KAAK,EAALA;AADQ;AAHD,CAAf","sourcesContent":["import * as React from 'react';\n\nimport ReadableTime from './ReadableTime';\nimport notes from './ReadableTime.stories.md';\n\nconst MILLISECONDS_PER_HOUR = 60 * 60 * 1000;\nconst MILLISECONDS_PER_DAY = MILLISECONDS_PER_HOUR * 24;\nconst MILLISECONDS_PER_WEEK = MILLISECONDS_PER_DAY * 7;\n\nexport const relativeTimestamps = () => (\n <div>\n <div>\n <ReadableTime\n timestamp={Date.now() - MILLISECONDS_PER_HOUR + 30 * 60 * 1000}\n relativeThreshold={MILLISECONDS_PER_HOUR}\n />\n </div>\n <div>\n <ReadableTime\n timestamp={Date.now() - 2 * MILLISECONDS_PER_HOUR}\n relativeThreshold={MILLISECONDS_PER_HOUR}\n />\n </div>\n <div>\n <ReadableTime timestamp={Date.now() - MILLISECONDS_PER_DAY} relativeThreshold={MILLISECONDS_PER_HOUR} />\n </div>\n </div>\n);\n\nexport const dateWithoutTime = () => (\n <ReadableTime timestamp={Date.now() - MILLISECONDS_PER_WEEK} relativeThreshold={MILLISECONDS_PER_HOUR} />\n);\n\nexport const dateWithTime = () => (\n <ReadableTime\n timestamp={Date.now() - MILLISECONDS_PER_WEEK}\n relativeThreshold={MILLISECONDS_PER_HOUR}\n alwaysShowTime\n />\n);\n\nexport const dateInTheFutureWhenNotAllowed = () => (\n <ReadableTime\n timestamp={Date.now() + 70 * MILLISECONDS_PER_DAY}\n relativeThreshold={MILLISECONDS_PER_HOUR}\n allowFutureTimestamps={false}\n />\n);\n\nexport default {\n title: 'Components|ReadableTime',\n component: ReadableTime,\n parameters: {\n notes,\n },\n};\n"],"file":"ReadableTime.stories.js"}
|
|
@@ -19,7 +19,10 @@ var Toggle = React.forwardRef(function (_ref, ref) {
|
|
|
19
19
|
name = _ref.name,
|
|
20
20
|
onBlur = _ref.onBlur,
|
|
21
21
|
onChange = _ref.onChange,
|
|
22
|
-
|
|
22
|
+
onFocus = _ref.onFocus,
|
|
23
|
+
onMouseEnter = _ref.onMouseEnter,
|
|
24
|
+
onMouseLeave = _ref.onMouseLeave,
|
|
25
|
+
rest = _objectWithoutProperties(_ref, ["className", "description", "isDisabled", "isOn", "isToggleRightAligned", "label", "name", "onBlur", "onChange", "onFocus", "onMouseEnter", "onMouseLeave"]);
|
|
23
26
|
|
|
24
27
|
var classes = classNames('toggle-container', className, {
|
|
25
28
|
'is-toggle-right-aligned': isToggleRightAligned
|
|
@@ -33,21 +36,25 @@ var Toggle = React.forwardRef(function (_ref, ref) {
|
|
|
33
36
|
}, label)];
|
|
34
37
|
|
|
35
38
|
if (isToggleRightAligned) {
|
|
36
|
-
toggleElements
|
|
39
|
+
toggleElements.reverse();
|
|
37
40
|
}
|
|
38
41
|
|
|
39
42
|
return React.createElement("div", {
|
|
40
|
-
className: classes
|
|
43
|
+
className: classes,
|
|
44
|
+
onMouseEnter: onMouseEnter,
|
|
45
|
+
onMouseLeave: onMouseLeave
|
|
41
46
|
}, React.createElement("label", {
|
|
42
47
|
className: "toggle-simple"
|
|
43
48
|
}, React.createElement("input", _extends({
|
|
44
49
|
checked: isOn,
|
|
45
50
|
className: "toggle-simple-input",
|
|
46
51
|
disabled: isDisabled,
|
|
47
|
-
ref: ref,
|
|
48
52
|
name: name,
|
|
49
53
|
onBlur: onBlur,
|
|
50
54
|
onChange: onChange,
|
|
55
|
+
onFocus: onFocus,
|
|
56
|
+
ref: ref,
|
|
57
|
+
role: "switch",
|
|
51
58
|
type: "checkbox"
|
|
52
59
|
}, rest)), toggleElements), description ? React.createElement("div", {
|
|
53
60
|
className: "toggle-simple-description"
|
|
@@ -21,6 +21,12 @@ type Props = {
|
|
|
21
21
|
onBlur?: (e: SyntheticInputEvent<HTMLInputElement>) => any,
|
|
22
22
|
/** change callback function called with event as the argument */
|
|
23
23
|
onChange?: (e: SyntheticInputEvent<HTMLInputElement>) => any,
|
|
24
|
+
/** focus callback function called with event as the argument */
|
|
25
|
+
onFocus?: (e: SyntheticInputEvent<HTMLInputElement>) => any,
|
|
26
|
+
/** mouse enter callback function called with event as the argument */
|
|
27
|
+
onMouseEnter?: (e: SyntheticInputEvent<HTMLDivElement>) => any,
|
|
28
|
+
/** mouse leave callback function called with event as the argument */
|
|
29
|
+
onMouseLeave?: (e: SyntheticInputEvent<HTMLDivElement>) => any,
|
|
24
30
|
/** optional value for the toggles checkbox */
|
|
25
31
|
value?: any,
|
|
26
32
|
};
|
|
@@ -37,6 +43,9 @@ const Toggle = React.forwardRef<Props, HTMLInputElement>(
|
|
|
37
43
|
name,
|
|
38
44
|
onBlur,
|
|
39
45
|
onChange,
|
|
46
|
+
onFocus,
|
|
47
|
+
onMouseEnter,
|
|
48
|
+
onMouseLeave,
|
|
40
49
|
...rest
|
|
41
50
|
}: Props,
|
|
42
51
|
ref,
|
|
@@ -44,29 +53,31 @@ const Toggle = React.forwardRef<Props, HTMLInputElement>(
|
|
|
44
53
|
const classes = classNames('toggle-container', className, {
|
|
45
54
|
'is-toggle-right-aligned': isToggleRightAligned,
|
|
46
55
|
});
|
|
47
|
-
|
|
56
|
+
|
|
57
|
+
const toggleElements = [
|
|
48
58
|
<div key="toggle-simple-switch" className="toggle-simple-switch" />,
|
|
49
59
|
<div key="toggle-simple-label" className="toggle-simple-label">
|
|
50
60
|
{label}
|
|
51
61
|
</div>,
|
|
52
62
|
];
|
|
53
|
-
|
|
54
63
|
if (isToggleRightAligned) {
|
|
55
|
-
toggleElements
|
|
64
|
+
toggleElements.reverse();
|
|
56
65
|
}
|
|
57
66
|
|
|
58
67
|
return (
|
|
59
|
-
<div className={classes}>
|
|
68
|
+
<div className={classes} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>
|
|
60
69
|
{/* eslint-disable-next-line jsx-a11y/label-has-for */}
|
|
61
70
|
<label className="toggle-simple">
|
|
62
71
|
<input
|
|
63
72
|
checked={isOn}
|
|
64
73
|
className="toggle-simple-input"
|
|
65
74
|
disabled={isDisabled}
|
|
66
|
-
ref={ref}
|
|
67
75
|
name={name}
|
|
68
76
|
onBlur={onBlur}
|
|
69
77
|
onChange={onChange}
|
|
78
|
+
onFocus={onFocus}
|
|
79
|
+
ref={ref}
|
|
80
|
+
role="switch"
|
|
70
81
|
type="checkbox"
|
|
71
82
|
{...rest}
|
|
72
83
|
/>
|