box-ui-elements 15.0.0-beta.7 → 15.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 +3 -1
- package/dist/explorer.css +1 -1
- package/dist/explorer.js +58 -26
- package/dist/openwith.css +1 -1
- package/dist/openwith.js +10 -17
- package/dist/picker.css +1 -1
- package/dist/picker.js +12 -19
- package/dist/preview.css +1 -1
- package/dist/preview.js +56 -24
- package/dist/sharing.css +1 -1
- package/dist/sharing.js +54 -22
- package/dist/sidebar.css +1 -1
- package/dist/sidebar.js +56 -24
- package/dist/uploader.css +1 -1
- package/dist/uploader.js +12 -19
- package/es/api/uploads/UploadsReachability.js.flow +2 -2
- package/es/api/uploads/UploadsReachability.js.map +1 -1
- package/es/common/messages.js +4 -0
- package/es/common/messages.js.flow +5 -0
- package/es/common/messages.js.map +1 -1
- package/es/common/types/core.js.flow +2 -0
- package/es/common/types/core.js.map +1 -1
- package/es/components/avatar/UnknownUserAvatar.js +6 -9
- package/es/components/avatar/UnknownUserAvatar.js.map +1 -1
- package/es/components/close-button/CloseButton.js +24 -0
- package/es/components/close-button/CloseButton.js.flow +26 -0
- package/es/components/close-button/CloseButton.js.map +1 -0
- package/es/components/close-button/CloseButton.scss +10 -0
- package/es/components/close-button/CloseButton.stories.js +14 -0
- package/es/components/close-button/CloseButton.stories.js.map +1 -0
- package/es/components/close-button/index.js +2 -0
- package/es/components/close-button/index.js.flow +2 -0
- package/es/components/close-button/index.js.map +1 -0
- package/es/components/date-picker/AccessiblePikaday.js +113 -0
- package/es/components/date-picker/AccessiblePikaday.js.map +1 -0
- package/es/components/date-picker/DatePicker.js +426 -106
- package/es/components/date-picker/DatePicker.js.map +1 -1
- package/es/components/date-picker/DatePicker.scss +32 -22
- package/es/components/date-picker/DatePicker.stories.js +10 -0
- package/es/components/date-picker/DatePicker.stories.js.map +1 -1
- package/es/components/date-picker/_pikaday.scss +8 -2
- package/es/components/flyout/Flyout.js +13 -3
- package/es/components/flyout/Flyout.js.flow +14 -3
- package/es/components/flyout/Flyout.js.map +1 -1
- package/es/components/flyout/Flyout.scss +40 -0
- package/es/components/flyout/FlyoutContext.js +6 -0
- package/es/components/flyout/FlyoutContext.js.flow +9 -0
- package/es/components/flyout/FlyoutContext.js.map +1 -0
- package/es/components/flyout/OverlayHeader.js +33 -0
- package/es/components/flyout/OverlayHeader.js.map +1 -0
- package/es/components/flyout/OverlayHeader.scss +9 -0
- package/es/components/flyout/_variables.scss +1 -0
- package/es/components/flyout/index.js +2 -0
- package/es/components/flyout/index.js.flow +2 -0
- package/es/components/flyout/index.js.map +1 -1
- package/es/components/image-tooltip/ImageTooltip.js +1 -2
- package/es/components/image-tooltip/ImageTooltip.js.map +1 -1
- package/es/components/media-query/constants.js +26 -0
- package/es/components/media-query/constants.js.flow +32 -0
- package/es/components/media-query/constants.js.map +1 -0
- package/es/components/media-query/index.js +3 -0
- package/es/components/media-query/index.js.flow +4 -0
- package/es/components/media-query/index.js.map +1 -0
- package/es/components/media-query/stories/MediaQuery.stories.js +37 -0
- package/es/components/media-query/stories/MediaQuery.stories.js.flow +80 -0
- package/es/components/media-query/stories/MediaQuery.stories.js.map +1 -0
- package/es/components/media-query/types.js +2 -0
- package/es/components/media-query/types.js.flow +29 -0
- package/es/components/media-query/types.js.map +1 -0
- package/es/components/media-query/useMediaQuery.js +91 -0
- package/es/components/media-query/useMediaQuery.js.flow +97 -0
- package/es/components/media-query/useMediaQuery.js.map +1 -0
- package/es/components/media-query/withMediaQuery.js +21 -0
- package/es/components/media-query/withMediaQuery.js.flow +23 -0
- package/es/components/media-query/withMediaQuery.js.map +1 -0
- package/es/components/modal/Modal.scss +27 -0
- package/es/components/preview/previewIcons.js +4 -0
- package/es/components/preview/previewIcons.js.map +1 -1
- package/es/components/search-form/SearchForm.scss +0 -5
- package/es/components/selector-dropdown/SelectorDropdown.js +5 -3
- package/es/components/selector-dropdown/SelectorDropdown.js.flow +3 -3
- package/es/components/selector-dropdown/SelectorDropdown.js.map +1 -1
- package/es/components/tab-view/Tabs.scss +0 -4
- package/es/components/tooltip/Tooltip.js +21 -4
- package/es/components/tooltip/Tooltip.js.map +1 -1
- package/es/constants.js +1 -0
- package/es/constants.js.flow +1 -0
- package/es/constants.js.map +1 -1
- package/es/elements/content-open-with/IconFileMap.js +0 -2
- package/es/elements/content-open-with/IconFileMap.js.flow +0 -2
- package/es/elements/content-open-with/IconFileMap.js.map +1 -1
- package/es/elements/content-sidebar/Sidebar.js +2 -1
- package/es/elements/content-sidebar/Sidebar.js.flow +1 -1
- package/es/elements/content-sidebar/Sidebar.js.map +1 -1
- package/es/elements/content-sidebar/activity-feed/common/delete-confirmation/DeleteConfirmation.scss +3 -3
- package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js +14 -4
- package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js.flow +18 -5
- package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js.map +1 -1
- package/es/elements/content-sidebar/versions/StaticVersionSidebar.js +78 -0
- package/es/elements/content-sidebar/versions/StaticVersionSidebar.js.flow +97 -0
- package/es/elements/content-sidebar/versions/StaticVersionSidebar.js.map +1 -0
- package/es/elements/content-sidebar/versions/StaticVersionsSidebar.scss +67 -0
- package/es/elements/content-sidebar/versions/VersionsSidebar.js +12 -4
- package/es/elements/content-sidebar/versions/VersionsSidebar.js.flow +16 -3
- package/es/elements/content-sidebar/versions/VersionsSidebar.js.map +1 -1
- package/es/elements/content-sidebar/versions/VersionsSidebar.scss +5 -0
- package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js +42 -10
- package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.flow +42 -7
- package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.map +1 -1
- package/es/elements/content-sidebar/versions/flowTypes.js.flow +1 -0
- package/es/elements/content-sidebar/versions/messages.js +20 -0
- package/es/elements/content-sidebar/versions/messages.js.flow +28 -0
- package/es/elements/content-sidebar/versions/messages.js.map +1 -1
- package/es/features/classification/constants.js +2 -1
- package/es/features/classification/constants.js.flow +2 -0
- package/es/features/classification/constants.js.map +1 -1
- package/es/features/classification/flowTypes.js +1 -0
- package/es/features/classification/flowTypes.js.flow +7 -1
- package/es/features/classification/flowTypes.js.map +1 -1
- package/es/features/classification/security-controls/SecurityControls.js +3 -4
- package/es/features/classification/security-controls/SecurityControls.js.flow +3 -4
- package/es/features/classification/security-controls/SecurityControls.js.map +1 -1
- package/es/features/classification/security-controls/SecurityControlsItem.js +1 -1
- package/es/features/classification/security-controls/SecurityControlsItem.js.flow +20 -17
- package/es/features/classification/security-controls/SecurityControlsItem.js.map +1 -1
- package/es/features/classification/security-controls/SecurityControlsItem.scss +4 -0
- package/es/features/classification/security-controls/SecurityControlsModal.js +2 -2
- package/es/features/classification/security-controls/SecurityControlsModal.js.flow +2 -2
- package/es/features/classification/security-controls/SecurityControlsModal.js.map +1 -1
- package/es/features/classification/security-controls/messages.js +4 -0
- package/es/features/classification/security-controls/messages.js.flow +5 -0
- package/es/features/classification/security-controls/messages.js.map +1 -1
- package/es/features/classification/security-controls/utils.js +56 -35
- package/es/features/classification/security-controls/utils.js.flow +51 -27
- package/es/features/classification/security-controls/utils.js.map +1 -1
- package/es/features/collapsible-sidebar/CollapsibleSidebar.js +9 -3
- package/es/features/collapsible-sidebar/CollapsibleSidebar.js.flow +13 -5
- package/es/features/collapsible-sidebar/CollapsibleSidebar.js.map +1 -1
- package/es/features/collapsible-sidebar/CollapsibleSidebar.scss +35 -3
- package/es/features/content-explorer/content-explorer/ContentExplorer.scss +1 -1
- package/es/features/content-explorer/item-list/ItemList.js +1 -0
- package/es/features/content-explorer/item-list/ItemList.js.flow +1 -0
- package/es/features/content-explorer/item-list/ItemList.js.map +1 -1
- package/es/features/content-explorer/item-list/ItemListName.js +13 -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/header-flyout/HeaderFlyout.js +8 -10
- package/es/features/header-flyout/HeaderFlyout.js.flow +4 -8
- package/es/features/header-flyout/HeaderFlyout.js.map +1 -1
- package/es/features/header-flyout/styles/HeaderFlyout.scss +54 -15
- package/es/features/header-flyout/styles/_variables.scss +4 -0
- package/es/features/message-center/components/message-center-modal/MessageCenterModal.js +1 -0
- package/es/features/message-center/components/message-center-modal/MessageCenterModal.js.flow +1 -0
- package/es/features/message-center/components/message-center-modal/MessageCenterModal.js.map +1 -1
- package/es/features/presence/PresenceCollaborator.js +90 -0
- package/es/features/presence/PresenceCollaborator.js.flow +81 -0
- package/es/features/presence/PresenceCollaborator.js.map +1 -0
- package/es/features/presence/PresenceCollaborator.scss +28 -0
- package/es/features/presence/PresenceCollaboratorsList.js +9 -57
- package/es/features/presence/PresenceCollaboratorsList.js.flow +7 -58
- package/es/features/presence/PresenceCollaboratorsList.js.map +1 -1
- package/es/features/presence/PresenceCollaboratorsList.scss +8 -35
- package/es/features/quick-search/QuickSearch.js +4 -2
- package/es/features/quick-search/QuickSearch.js.flow +13 -1
- package/es/features/quick-search/QuickSearch.js.map +1 -1
- package/es/features/unified-share-modal/SharedLinkSection.js +9 -20
- package/es/features/unified-share-modal/SharedLinkSection.js.flow +6 -27
- package/es/features/unified-share-modal/SharedLinkSection.js.map +1 -1
- package/es/features/unified-share-modal/UnifiedShareForm.js +95 -53
- package/es/features/unified-share-modal/UnifiedShareForm.js.flow +70 -14
- package/es/features/unified-share-modal/UnifiedShareForm.js.map +1 -1
- package/es/features/unified-share-modal/UnifiedShareModal.scss +3 -0
- package/es/features/unified-share-modal/flowTypes.js.flow +6 -0
- package/es/features/unified-share-modal/flowTypes.js.map +1 -1
- package/es/features/unified-share-modal/messages.js +8 -0
- package/es/features/unified-share-modal/messages.js.flow +10 -0
- package/es/features/unified-share-modal/messages.js.map +1 -1
- package/es/features/unified-share-modal/utils/mergeContacts.js +13 -10
- package/es/features/unified-share-modal/utils/mergeContacts.js.flow +4 -2
- package/es/features/unified-share-modal/utils/mergeContacts.js.map +1 -1
- package/es/icon/content/FileXbd32.js +39 -0
- package/es/icon/content/FileXbd32.js.flow +38 -0
- package/es/icon/content/FileXbd32.js.map +1 -0
- package/es/icon/content/FileXbd32.stories.js +13 -0
- package/es/icon/content/FileXbd32.stories.js.map +1 -0
- package/es/icon/content/FileXdw32.js +39 -0
- package/es/icon/content/FileXdw32.js.flow +38 -0
- package/es/icon/content/FileXdw32.js.map +1 -0
- package/es/icon/content/FileXdw32.stories.js +13 -0
- package/es/icon/content/FileXdw32.stories.js.map +1 -0
- package/es/icon/content/RetentionPolicyModifiable32.js +36 -0
- package/es/icon/content/RetentionPolicyModifiable32.js.flow +31 -0
- package/es/icon/content/RetentionPolicyModifiable32.js.map +1 -0
- package/es/icon/content/RetentionPolicyModifiable32.stories.js +13 -0
- package/es/icon/content/RetentionPolicyModifiable32.stories.js.map +1 -0
- package/es/icon/content/RetentionPolicyNonModifiable32.js +36 -0
- package/es/icon/content/RetentionPolicyNonModifiable32.js.flow +31 -0
- package/es/icon/content/RetentionPolicyNonModifiable32.js.map +1 -0
- package/es/icon/content/RetentionPolicyNonModifiable32.stories.js +13 -0
- package/es/icon/content/RetentionPolicyNonModifiable32.stories.js.map +1 -0
- package/es/icons/avatars/UnknownUserAvatar.js +10 -34
- package/es/icons/avatars/UnknownUserAvatar.js.map +1 -1
- package/es/icons/file-icon/FileIcon.js +8 -2
- package/es/icons/file-icon/FileIcon.js.flow +2 -2
- package/es/icons/file-icon/FileIcon.js.map +1 -1
- package/es/icons/general/IconSearch.js +1 -1
- package/es/icons/general/IconSearch.js.flow +1 -1
- package/es/icons/general/IconSearch.js.map +1 -1
- package/es/icons/general/IconSearchJuicy.js +30 -0
- package/es/icons/general/IconSearchJuicy.js.flow +26 -0
- package/es/icons/general/IconSearchJuicy.js.map +1 -0
- package/es/icons/google-docs/IconGoogle.js +89 -0
- package/es/icons/google-docs/IconGoogle.js.flow +57 -0
- package/es/icons/google-docs/IconGoogle.js.map +1 -0
- package/es/icons/item-icon/ItemIcon.js +4 -0
- package/es/icons/item-icon/ItemIcon.js.map +1 -1
- package/es/icons/microsoft-office/IconOffice.js +80 -0
- package/es/icons/microsoft-office/IconOffice.js.flow +45 -0
- package/es/icons/microsoft-office/IconOffice.js.map +1 -0
- package/es/illustration/EmailVerification140.js +111 -0
- package/es/illustration/EmailVerification140.js.flow +102 -0
- package/es/illustration/EmailVerification140.js.map +1 -0
- package/es/illustration/EmailVerification140.stories.js +13 -0
- package/es/illustration/EmailVerification140.stories.js.map +1 -0
- package/es/src/components/close-button/CloseButton.d.ts +9 -0
- package/es/src/components/close-button/CloseButton.stories.d.ts +9 -0
- package/es/src/components/close-button/__tests__/CloseButton.stories.test.d.ts +0 -0
- package/es/src/components/close-button/__tests__/CloseButton.test.d.ts +1 -0
- package/es/src/components/close-button/index.d.ts +1 -0
- package/es/src/components/date-picker/AccessiblePikaday.d.ts +16 -0
- package/es/src/components/date-picker/DatePicker.d.ts +33 -6
- package/es/src/components/date-picker/DatePicker.stories.d.ts +2 -1
- package/es/src/components/flyout/OverlayHeader.d.ts +10 -0
- package/es/src/components/tooltip/Tooltip.d.ts +4 -3
- package/es/src/icon/content/FileXbd32.d.ts +13 -0
- package/es/src/icon/content/FileXbd32.stories.d.ts +9 -0
- package/es/src/icon/content/FileXdw32.d.ts +13 -0
- package/es/src/icon/content/FileXdw32.stories.d.ts +9 -0
- package/es/src/icon/content/RetentionPolicyModifiable32.d.ts +13 -0
- package/es/src/icon/content/RetentionPolicyModifiable32.stories.d.ts +9 -0
- package/es/src/icon/content/RetentionPolicyNonModifiable32.d.ts +13 -0
- package/es/src/icon/content/RetentionPolicyNonModifiable32.stories.d.ts +9 -0
- package/es/src/icons/avatars/UnknownUserAvatar.d.ts +0 -1
- package/es/src/icons/general/IconSearchJuicy.d.ts +3 -0
- package/es/src/icons/general/__tests__/IconSearchJuicy.test.d.ts +1 -0
- package/es/src/icons/google-docs/IconGoogle.d.ts +12 -0
- package/es/src/icons/google-docs/__tests__/IconGoogle.test.d.ts +1 -0
- package/es/src/icons/item-icon/ItemIcon.d.ts +2 -0
- package/es/src/icons/microsoft-office/IconOffice.d.ts +12 -0
- package/es/src/icons/microsoft-office/__tests__/IconOffice.test.d.ts +1 -0
- package/es/src/illustration/EmailVerification140.d.ts +13 -0
- package/es/src/illustration/EmailVerification140.stories.d.ts +9 -0
- package/es/src/styles/variables.d.ts +9 -0
- package/es/styles/_variables.scss +1 -0
- package/es/styles/common/_forms.scss +6 -0
- package/es/styles/constants/_layout.scss +3 -0
- package/es/styles/constants/_media-queries.scss +15 -0
- package/es/styles/variables.js +18 -0
- package/es/styles/variables.js.flow +10 -1
- package/es/styles/variables.js.map +1 -1
- package/es/utils/Browser.js +12 -0
- package/es/utils/Browser.js.flow +10 -0
- package/es/utils/Browser.js.map +1 -1
- package/es/utils/validators.js +26 -4
- package/es/utils/validators.js.flow +25 -3
- package/es/utils/validators.js.map +1 -1
- package/i18n/bn-IN.js +12 -0
- package/i18n/bn-IN.properties +24 -0
- package/i18n/da-DK.js +12 -0
- package/i18n/da-DK.properties +24 -0
- package/i18n/de-DE.js +12 -0
- package/i18n/de-DE.properties +24 -0
- package/i18n/en-AU.js +12 -0
- package/i18n/en-AU.properties +24 -0
- package/i18n/en-CA.js +12 -0
- package/i18n/en-CA.properties +24 -0
- package/i18n/en-GB.js +12 -0
- package/i18n/en-GB.properties +24 -0
- package/i18n/en-US.js +12 -0
- package/i18n/en-US.properties +24 -0
- package/i18n/en-x-pseudo.js +12 -0
- package/i18n/es-419.js +12 -0
- package/i18n/es-419.properties +24 -0
- package/i18n/es-ES.js +12 -0
- package/i18n/es-ES.properties +24 -0
- package/i18n/fi-FI.js +12 -0
- package/i18n/fi-FI.properties +24 -0
- package/i18n/fr-CA.js +12 -0
- package/i18n/fr-CA.properties +24 -0
- package/i18n/fr-FR.js +12 -0
- package/i18n/fr-FR.properties +24 -0
- package/i18n/hi-IN.js +12 -0
- package/i18n/hi-IN.properties +24 -0
- package/i18n/it-IT.js +12 -0
- package/i18n/it-IT.properties +24 -0
- package/i18n/ja-JP.js +25 -13
- package/i18n/ja-JP.properties +37 -13
- package/i18n/ko-KR.js +12 -0
- package/i18n/ko-KR.properties +24 -0
- package/i18n/nb-NO.js +12 -0
- package/i18n/nb-NO.properties +24 -0
- package/i18n/nl-NL.js +12 -0
- package/i18n/nl-NL.properties +24 -0
- package/i18n/pl-PL.js +12 -0
- package/i18n/pl-PL.properties +24 -0
- package/i18n/pt-BR.js +12 -0
- package/i18n/pt-BR.properties +24 -0
- package/i18n/ru-RU.js +12 -0
- package/i18n/ru-RU.properties +24 -0
- package/i18n/sv-SE.js +12 -0
- package/i18n/sv-SE.properties +24 -0
- package/i18n/tr-TR.js +12 -0
- package/i18n/tr-TR.properties +24 -0
- package/i18n/zh-CN.js +12 -0
- package/i18n/zh-CN.properties +24 -0
- package/i18n/zh-TW.js +12 -0
- package/i18n/zh-TW.properties +24 -0
- package/package.json +8 -5
- package/src/__mocks__/pikaday.js +1 -0
- package/src/api/__tests__/MockOpenWithData.json +2 -25
- package/src/api/uploads/UploadsReachability.js +2 -2
- package/src/common/messages.js +5 -0
- package/src/common/types/core.js +2 -0
- package/src/components/avatar/UnknownUserAvatar.tsx +5 -4
- package/src/components/close-button/CloseButton.js.flow +26 -0
- package/src/components/close-button/CloseButton.scss +10 -0
- package/src/components/close-button/CloseButton.stories.md +1 -0
- package/src/components/close-button/CloseButton.stories.tsx +14 -0
- package/src/components/close-button/CloseButton.tsx +30 -0
- package/src/components/close-button/__tests__/CloseButton.stories.test.tsx +6 -0
- package/src/components/close-button/__tests__/CloseButton.test.tsx +40 -0
- package/src/components/close-button/__tests__/__image_snapshots__/close-button-stories-test-tsx-components-close-button-close-button-looks-visually-correct-when-using-story-components-buttons-closebutton-regular-1-snap.png +0 -0
- package/src/components/close-button/index.js.flow +2 -0
- package/src/components/close-button/index.ts +1 -0
- package/src/components/date-picker/AccessiblePikaday.ts +79 -0
- package/src/components/date-picker/DatePicker.scss +32 -22
- package/src/components/date-picker/DatePicker.stories.tsx +6 -0
- package/src/components/date-picker/DatePicker.tsx +350 -64
- package/src/components/date-picker/__tests__/DatePicker.test.tsx +44 -2
- package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-allows-editing-in-story-components-datepicker-manually-editable-1-snap.png +0 -0
- package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-allows-keyboard-selection-in-components-datepicker-always-visible-with-custom-input-field-1-snap.png +0 -0
- package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-closes-calendar-and-clears-date-for-components-datepicker-basic-1-snap.png +0 -0
- package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-always-visible-with-custom-input-field-1-snap.png +0 -0
- package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-basic-1-snap.png +0 -0
- package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-custom-error-tooltip-position-1-snap.png +0 -0
- package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-disabled-with-error-message-1-snap.png +0 -0
- package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-manually-editable-1-snap.png +0 -0
- package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-with-description-1-snap.png +0 -0
- package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-with-limited-date-range-1-snap.png +0 -0
- package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-with-range-1-snap.png +0 -0
- package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-reflects-changes-in-components-datepicker-always-visible-with-custom-input-field-1-snap.png +0 -0
- package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-shows-calendar-and-date-for-components-datepicker-basic-1-snap.png +0 -0
- package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-shows-limited-range-in-components-datepicker-with-limited-date-range-1-snap.png +0 -0
- package/src/components/date-picker/_pikaday.scss +8 -2
- package/src/components/flyout/Flyout.js +14 -3
- package/src/components/flyout/Flyout.scss +40 -0
- package/src/components/flyout/FlyoutContext.js +9 -0
- package/src/components/flyout/OverlayHeader.scss +9 -0
- package/src/components/flyout/OverlayHeader.tsx +38 -0
- package/src/components/flyout/__tests__/Flyout.test.js +15 -0
- package/src/components/flyout/__tests__/OverlayHeader.test.js +56 -0
- package/src/components/flyout/_variables.scss +1 -0
- package/src/components/flyout/index.js +2 -0
- package/src/components/image-tooltip/ImageTooltip.tsx +1 -2
- package/src/components/media-query/__tests__/useMediaQuery.test.js +48 -0
- package/src/components/media-query/__tests__/withMediaQuery.test.js +29 -0
- package/src/components/media-query/constants.js +32 -0
- package/src/components/media-query/index.js +4 -0
- package/src/components/media-query/stories/MediaQuery.stories.js +80 -0
- package/src/components/media-query/stories/MediaQuery.stories.md +29 -0
- package/src/components/media-query/types.js +29 -0
- package/src/components/media-query/useMediaQuery.js +97 -0
- package/src/components/media-query/withMediaQuery.js +23 -0
- package/src/components/modal/Modal.scss +27 -0
- package/src/components/modal/__tests__/Modal.stories.test.js +10 -0
- package/src/components/modal/__tests__/__image_snapshots__/modal-stories-test-js-components-modal-modal-looks-visually-correct-for-small-screens-when-button-is-clicked-in-story-components-modal-basic-1-snap.png +0 -0
- package/src/components/modal/__tests__/__image_snapshots__/modal-stories-test-js-components-modal-modal-looks-visually-correct-for-small-screens-when-button-is-clicked-in-story-components-modal-with-custom-backdrop-click-handler-1-snap.png +0 -0
- package/src/components/preview/previewIcons.ts +4 -0
- package/src/components/search-form/SearchForm.scss +0 -5
- package/src/components/selector-dropdown/SelectorDropdown.js +3 -3
- package/src/components/selector-dropdown/__tests__/SelectorDropdown.test.js +5 -1
- package/src/components/sidebar-toggle-button/__tests__/__snapshots__/SidebarToggleButton.test.js.snap +0 -8
- package/src/components/tab-view/Tabs.scss +0 -4
- package/src/components/tooltip/Tooltip.tsx +20 -5
- package/src/components/tooltip/__tests__/Tooltip.test.tsx +17 -4
- package/src/components/tooltip/__tests__/__snapshots__/Tooltip.test.tsx.snap +0 -2
- package/src/constants.js +1 -0
- package/src/elements/content-open-with/IconFileMap.js +0 -2
- package/src/elements/content-open-with/__tests__/ContentOpenWith.test.js +13 -13
- package/src/elements/content-open-with/__tests__/OpenWithButton.test.js +1 -1
- package/src/elements/content-open-with/__tests__/OpenWithDropdownMenu.test.js +1 -5
- package/src/elements/content-open-with/__tests__/OpenWithDropdownMenuItem.test.js +2 -2
- package/src/elements/content-open-with/__tests__/__snapshots__/ContentOpenWith.test.js.snap +5 -5
- package/src/elements/content-open-with/__tests__/__snapshots__/OpenWithButton.test.js.snap +1 -1
- package/src/elements/content-open-with/__tests__/__snapshots__/OpenWithDropdownMenu.test.js.snap +1 -11
- package/src/elements/content-open-with/__tests__/__snapshots__/OpenWithDropdownMenuItem.test.js.snap +4 -3
- package/src/elements/content-sidebar/Sidebar.js +1 -1
- package/src/elements/content-sidebar/__tests__/AddTaskButton.test.js +15 -0
- package/src/elements/content-sidebar/activity-feed/common/delete-confirmation/DeleteConfirmation.scss +3 -3
- package/src/elements/content-sidebar/activity-feed/task-form/TaskForm.js +18 -5
- package/src/elements/content-sidebar/versions/StaticVersionSidebar.js +97 -0
- package/src/elements/content-sidebar/versions/StaticVersionsSidebar.scss +67 -0
- package/src/elements/content-sidebar/versions/VersionsSidebar.js +16 -3
- package/src/elements/content-sidebar/versions/VersionsSidebar.scss +5 -0
- package/src/elements/content-sidebar/versions/VersionsSidebarContainer.js +42 -7
- package/src/elements/content-sidebar/versions/__tests__/VersionsSidebar.test.js +18 -1
- package/src/elements/content-sidebar/versions/__tests__/VersionsSidebarContainer.test.js +51 -2
- package/src/elements/content-sidebar/versions/__tests__/__snapshots__/VersionsSidebarContainer.test.js.snap +75 -0
- package/src/elements/content-sidebar/versions/flowTypes.js +1 -0
- package/src/elements/content-sidebar/versions/messages.js +28 -0
- package/src/features/classification/constants.js +2 -0
- package/src/features/classification/flowTypes.js +7 -1
- package/src/features/classification/security-controls/SecurityControls.js +3 -4
- package/src/features/classification/security-controls/SecurityControlsItem.js +20 -17
- package/src/features/classification/security-controls/SecurityControlsItem.scss +4 -0
- package/src/features/classification/security-controls/SecurityControlsModal.js +2 -2
- package/src/features/classification/security-controls/__tests__/SecurityControlsItem.test.js +10 -0
- package/src/features/classification/security-controls/__tests__/__snapshots__/SecurityControls.test.js.snap +6 -6
- package/src/features/classification/security-controls/__tests__/__snapshots__/SecurityControlsItem.test.js.snap +35 -0
- package/src/features/classification/security-controls/__tests__/__snapshots__/SecurityControlsModal.test.js.snap +2 -2
- package/src/features/classification/security-controls/__tests__/__snapshots__/utils.test.js.snap +20 -0
- package/src/features/classification/security-controls/__tests__/utils.test.js +38 -18
- package/src/features/classification/security-controls/messages.js +5 -0
- package/src/features/classification/security-controls/utils.js +51 -27
- package/src/features/collapsible-sidebar/CollapsibleSidebar.js +13 -5
- package/src/features/collapsible-sidebar/CollapsibleSidebar.scss +35 -3
- package/src/features/collapsible-sidebar/__tests__/CollapsibleSidebar.test.js +35 -0
- package/src/features/collapsible-sidebar/__tests__/__snapshots__/CollapsibleSidebar.test.js.snap +1 -0
- package/src/features/content-explorer/content-explorer/ContentExplorer.scss +1 -1
- package/src/features/content-explorer/item-list/ItemList.js +1 -0
- package/src/features/content-explorer/item-list/ItemListName.js +3 -2
- package/src/features/content-explorer/item-list/__tests__/ItemListName.test.js +16 -2
- package/src/features/header-flyout/HeaderFlyout.js +4 -8
- package/src/features/header-flyout/__tests__/__snapshots__/HeaderFlyout.test.js.snap +14 -11
- package/src/features/header-flyout/styles/HeaderFlyout.scss +54 -15
- package/src/features/header-flyout/styles/_variables.scss +4 -0
- package/src/features/message-center/components/message-center-modal/MessageCenterModal.js +1 -0
- package/src/features/metadata-instance-editor/__tests__/__snapshots__/TemplateDropdown.test.js.snap +7 -0
- package/src/features/pagination/__tests__/__snapshots__/MarkerBasedPagination.test.js.snap +0 -8
- package/src/features/pagination/__tests__/__snapshots__/OffsetBasedPagination.test.js.snap +0 -16
- package/src/features/presence/PresenceCollaborator.js +81 -0
- package/src/features/presence/PresenceCollaborator.scss +28 -0
- package/src/features/presence/PresenceCollaboratorsList.js +7 -58
- package/src/features/presence/PresenceCollaboratorsList.scss +8 -35
- package/src/features/presence/__tests__/PresenceCollaborator.test.js +36 -0
- package/src/features/presence/__tests__/PresenceCollaboratorsList.test.js +13 -57
- package/src/features/presence/__tests__/__snapshots__/Presence.test.js.snap +5 -0
- package/src/features/presence/__tests__/__snapshots__/PresenceLink.test.js.snap +3 -0
- package/src/features/query-bar/__tests__/__snapshots__/ColumnButton.test.js.snap +3 -0
- package/src/features/quick-search/QuickSearch.js +13 -1
- package/src/features/quick-search/__tests__/QuickSearch.test.js +17 -0
- package/src/features/unified-share-modal/SharedLinkSection.js +6 -27
- package/src/features/unified-share-modal/UnifiedShareForm.js +70 -14
- package/src/features/unified-share-modal/UnifiedShareModal.scss +3 -0
- package/src/features/unified-share-modal/__tests__/EmailForm.test.js +9 -0
- package/src/features/unified-share-modal/__tests__/SharedLinkSection.test.js +14 -4
- package/src/features/unified-share-modal/__tests__/UnifiedShareForm.test.js +53 -4
- package/src/features/unified-share-modal/__tests__/__snapshots__/SharedLinkSection.test.js.snap +9 -0
- package/src/features/unified-share-modal/__tests__/__snapshots__/UnifiedShareForm.test.js.snap +0 -159
- package/src/features/unified-share-modal/flowTypes.js +6 -0
- package/src/features/unified-share-modal/messages.js +10 -0
- package/src/features/unified-share-modal/utils/__tests__/mergeContacts.test.js +23 -0
- package/src/features/unified-share-modal/utils/mergeContacts.js +4 -2
- package/src/icon/content/FileXbd32.js.flow +38 -0
- package/src/icon/content/FileXbd32.stories.tsx +13 -0
- package/src/icon/content/FileXbd32.tsx +37 -0
- package/src/icon/content/FileXdw32.js.flow +38 -0
- package/src/icon/content/FileXdw32.stories.tsx +13 -0
- package/src/icon/content/FileXdw32.tsx +37 -0
- package/src/icon/content/RetentionPolicyModifiable32.js.flow +31 -0
- package/src/icon/content/RetentionPolicyModifiable32.stories.tsx +14 -0
- package/src/icon/content/RetentionPolicyModifiable32.tsx +29 -0
- package/src/icon/content/RetentionPolicyNonModifiable32.js.flow +31 -0
- package/src/icon/content/RetentionPolicyNonModifiable32.stories.tsx +14 -0
- package/src/icon/content/RetentionPolicyNonModifiable32.tsx +29 -0
- package/src/icons/adobe-sign/README.md +1 -1
- package/src/icons/avatars/UnknownUserAvatar.tsx +7 -15
- package/src/icons/file-icon/FileIcon.js.flow +2 -2
- package/src/icons/file-icon/FileIcon.tsx +8 -2
- package/src/icons/file-icon/__tests__/FileIcon.test.tsx +28 -69
- package/src/icons/file-icon/__tests__/__snapshots__/FileIcon.test.tsx.snap +48 -34
- package/src/icons/general/IconSearch.js.flow +1 -1
- package/src/icons/general/IconSearch.tsx +1 -1
- package/src/icons/general/IconSearchJuicy.js.flow +26 -0
- package/src/icons/general/IconSearchJuicy.tsx +25 -0
- package/src/icons/general/README.md +5 -0
- package/src/icons/general/__tests__/IconSearchJuicy.test.tsx +38 -0
- package/src/icons/google-docs/IconGoogle.js.flow +57 -0
- package/src/icons/google-docs/IconGoogle.tsx +50 -0
- package/src/icons/google-docs/__tests__/IconGoogle.test.tsx +44 -0
- package/src/icons/item-icon/ItemIcon.tsx +4 -0
- package/src/icons/item-icon/__tests__/ItemIcon.test.tsx +47 -115
- package/src/icons/item-icon/__tests__/__snapshots__/ItemIcon.test.tsx.snap +229 -229
- package/src/icons/microsoft-office/IconOffice.js.flow +45 -0
- package/src/icons/microsoft-office/IconOffice.tsx +38 -0
- package/src/icons/microsoft-office/__tests__/IconOffice.test.tsx +44 -0
- package/src/illustration/EmailVerification140.js.flow +102 -0
- package/src/illustration/EmailVerification140.stories.tsx +13 -0
- package/src/illustration/EmailVerification140.tsx +100 -0
- package/src/styles/_variables.scss +1 -0
- package/src/styles/common/_forms.scss +6 -0
- package/src/styles/constants/_layout.scss +3 -0
- package/src/styles/constants/_media-queries.scss +15 -0
- package/src/styles/variables.js +10 -1
- package/src/styles/variables.json +10 -1
- package/src/styles/variables.ts +9 -0
- package/src/utils/Browser.js +10 -0
- package/src/utils/validators.js +25 -3
|
@@ -69,6 +69,19 @@ describe('elements/content-sidebar/versions/VersionsSidebarContainer', () => {
|
|
|
69
69
|
});
|
|
70
70
|
});
|
|
71
71
|
|
|
72
|
+
describe('componentDidMount', () => {
|
|
73
|
+
test('should call onLoad after a successful fetchData() call', async () => {
|
|
74
|
+
const onLoad = jest.fn();
|
|
75
|
+
const fetchData = jest.fn(() => Promise.resolve());
|
|
76
|
+
const instance = getWrapper({ onLoad }).instance();
|
|
77
|
+
|
|
78
|
+
instance.fetchData = fetchData;
|
|
79
|
+
|
|
80
|
+
await instance.componentDidMount();
|
|
81
|
+
expect(onLoad).toHaveBeenCalled();
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
|
|
72
85
|
describe('handleActionDelete', () => {
|
|
73
86
|
test('should call api endpoint helpers', () => {
|
|
74
87
|
const handleDelete = jest.fn();
|
|
@@ -191,16 +204,52 @@ describe('elements/content-sidebar/versions/VersionsSidebarContainer', () => {
|
|
|
191
204
|
test('should set state to default values with error message', () => {
|
|
192
205
|
const wrapper = getWrapper();
|
|
193
206
|
|
|
194
|
-
wrapper.instance().handleFetchError();
|
|
207
|
+
wrapper.instance().handleFetchError({ status: 500 });
|
|
195
208
|
|
|
196
|
-
expect(wrapper.state()).
|
|
209
|
+
expect(wrapper.state()).toMatchObject({
|
|
197
210
|
error: messages.versionFetchError,
|
|
211
|
+
errorTitle: messages.versionServerError,
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
test('should set state to default values with error upsell message if onUpgradeClick is set', () => {
|
|
215
|
+
const wrapper = getWrapper({
|
|
216
|
+
onUpgradeClick: () => {},
|
|
217
|
+
versionUpsellExperience: 'STATIC_VERSION_HISTORY',
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
wrapper.instance().handleFetchError({ status: 403 });
|
|
221
|
+
|
|
222
|
+
expect(wrapper.state()).toEqual({
|
|
223
|
+
error: messages.versionNotAvailable,
|
|
224
|
+
errorTitle: messages.versionAccessError,
|
|
198
225
|
isLoading: false,
|
|
199
226
|
isWatermarked: false,
|
|
200
227
|
versionCount: 0,
|
|
201
228
|
versionLimit: Infinity,
|
|
202
229
|
versions: [],
|
|
203
230
|
});
|
|
231
|
+
|
|
232
|
+
expect(wrapper).toMatchSnapshot();
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
test('should create StaticVersionSidebar if versionUpsellExperience is STATIC_VERSION_HISTORY', () => {
|
|
236
|
+
const wrapper = getWrapper({
|
|
237
|
+
onUpgradeClick: () => {},
|
|
238
|
+
versionUpsellExperience: 'STATIC_VERSION_HISTORY',
|
|
239
|
+
});
|
|
240
|
+
wrapper.instance().handleFetchError({ status: 403 });
|
|
241
|
+
|
|
242
|
+
expect(wrapper).toMatchSnapshot();
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
test('should create StaticVersionSidebar if versionUpsellExperience is STATIC_VERSION_HISTORY_WITH_PICTURE', () => {
|
|
246
|
+
const wrapper = getWrapper({
|
|
247
|
+
onUpgradeClick: () => {},
|
|
248
|
+
versionUpsellExperience: 'STATIC_VERSION_HISTORY_WITH_PICTURE',
|
|
249
|
+
});
|
|
250
|
+
wrapper.instance().handleFetchError({ status: 403 });
|
|
251
|
+
|
|
252
|
+
expect(wrapper).toMatchSnapshot();
|
|
204
253
|
});
|
|
205
254
|
});
|
|
206
255
|
|
|
@@ -1,5 +1,80 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
+
exports[`elements/content-sidebar/versions/VersionsSidebarContainer handleFetchError should create StaticVersionSidebar if versionUpsellExperience is STATIC_VERSION_HISTORY 1`] = `
|
|
4
|
+
<StaticVersionsSidebar
|
|
5
|
+
error={
|
|
6
|
+
Object {
|
|
7
|
+
"defaultMessage": "Sorry, version history is not available with your current account plan. To access versioning, select from one of our paid plans.",
|
|
8
|
+
"id": "be.sidebarVersions.notAvailable",
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
errorTitle={
|
|
12
|
+
Object {
|
|
13
|
+
"defaultMessage": "You don't have access to versioning",
|
|
14
|
+
"id": "be.sidebarVersions.accessError",
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
isLoading={false}
|
|
18
|
+
isWatermarked={false}
|
|
19
|
+
onUpgradeClick={[Function]}
|
|
20
|
+
parentName=""
|
|
21
|
+
showUpsellWithPicture={false}
|
|
22
|
+
versionCount={0}
|
|
23
|
+
versionLimit={Infinity}
|
|
24
|
+
versions={Array []}
|
|
25
|
+
/>
|
|
26
|
+
`;
|
|
27
|
+
|
|
28
|
+
exports[`elements/content-sidebar/versions/VersionsSidebarContainer handleFetchError should create StaticVersionSidebar if versionUpsellExperience is STATIC_VERSION_HISTORY_WITH_PICTURE 1`] = `
|
|
29
|
+
<StaticVersionsSidebar
|
|
30
|
+
error={
|
|
31
|
+
Object {
|
|
32
|
+
"defaultMessage": "Sorry, version history is not available with your current account plan. To access versioning, select from one of our paid plans.",
|
|
33
|
+
"id": "be.sidebarVersions.notAvailable",
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
errorTitle={
|
|
37
|
+
Object {
|
|
38
|
+
"defaultMessage": "You don't have access to versioning",
|
|
39
|
+
"id": "be.sidebarVersions.accessError",
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
isLoading={false}
|
|
43
|
+
isWatermarked={false}
|
|
44
|
+
onUpgradeClick={[Function]}
|
|
45
|
+
parentName=""
|
|
46
|
+
showUpsellWithPicture={true}
|
|
47
|
+
versionCount={0}
|
|
48
|
+
versionLimit={Infinity}
|
|
49
|
+
versions={Array []}
|
|
50
|
+
/>
|
|
51
|
+
`;
|
|
52
|
+
|
|
53
|
+
exports[`elements/content-sidebar/versions/VersionsSidebarContainer handleFetchError should set state to default values with error upsell message if onUpgradeClick is set 1`] = `
|
|
54
|
+
<StaticVersionsSidebar
|
|
55
|
+
error={
|
|
56
|
+
Object {
|
|
57
|
+
"defaultMessage": "Sorry, version history is not available with your current account plan. To access versioning, select from one of our paid plans.",
|
|
58
|
+
"id": "be.sidebarVersions.notAvailable",
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
errorTitle={
|
|
62
|
+
Object {
|
|
63
|
+
"defaultMessage": "You don't have access to versioning",
|
|
64
|
+
"id": "be.sidebarVersions.accessError",
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
isLoading={false}
|
|
68
|
+
isWatermarked={false}
|
|
69
|
+
onUpgradeClick={[Function]}
|
|
70
|
+
parentName=""
|
|
71
|
+
showUpsellWithPicture={false}
|
|
72
|
+
versionCount={0}
|
|
73
|
+
versionLimit={Infinity}
|
|
74
|
+
versions={Array []}
|
|
75
|
+
/>
|
|
76
|
+
`;
|
|
77
|
+
|
|
3
78
|
exports[`elements/content-sidebar/versions/VersionsSidebarContainer render should match its snapshot 1`] = `
|
|
4
79
|
<VersionsSidebar
|
|
5
80
|
fileId="12345"
|
|
@@ -4,3 +4,4 @@ import type { BoxItemVersion } from '../../../common/types/core';
|
|
|
4
4
|
|
|
5
5
|
export type VersionActionCallback = (versionId: string) => void;
|
|
6
6
|
export type VersionChangeCallback = (version: ?BoxItemVersion, additionalVersionInfo: ?AdditionalVersionInfo) => void;
|
|
7
|
+
export type SidebarLoadCallback = (data: Object) => void;
|
|
@@ -109,6 +109,13 @@ const messages = defineMessages({
|
|
|
109
109
|
defaultMessage: 'File versions could not be retrieved.',
|
|
110
110
|
description: 'Error message for the versions fetch call.',
|
|
111
111
|
},
|
|
112
|
+
versionNotAvailable: {
|
|
113
|
+
id: 'be.sidebarVersions.notAvailable',
|
|
114
|
+
defaultMessage:
|
|
115
|
+
'Sorry, version history is not available with your current account plan. To access versioning, select from one of our paid plans.',
|
|
116
|
+
description:
|
|
117
|
+
'Error message with upsell for the versions fetch call for users who dont have the version feature.',
|
|
118
|
+
},
|
|
112
119
|
versionLimitExceeded: {
|
|
113
120
|
id: 'be.sidebarVersions.versionLimitExceeded',
|
|
114
121
|
defaultMessage:
|
|
@@ -140,6 +147,16 @@ const messages = defineMessages({
|
|
|
140
147
|
defaultMessage: 'Server Error',
|
|
141
148
|
description: 'Heading for inline error messages displayed due to a remote server issue.',
|
|
142
149
|
},
|
|
150
|
+
versionAccessError: {
|
|
151
|
+
id: 'be.sidebarVersions.accessError',
|
|
152
|
+
defaultMessage: "You don't have access to versioning",
|
|
153
|
+
description: 'Heading for inline error messages with upsell.',
|
|
154
|
+
},
|
|
155
|
+
versionUpgradeLink: {
|
|
156
|
+
id: 'be.sidebarVersions.upgradeLink',
|
|
157
|
+
defaultMessage: 'Upgrade Now',
|
|
158
|
+
description: 'Text on the upgrade button shown when user does not have access to Version History',
|
|
159
|
+
},
|
|
143
160
|
versionUploadedBy: {
|
|
144
161
|
id: 'be.sidebarVersions.uploadedBy',
|
|
145
162
|
defaultMessage: 'Uploaded by {name}',
|
|
@@ -170,6 +187,17 @@ const messages = defineMessages({
|
|
|
170
187
|
defaultMessage: 'Retention policy expires on {time}.',
|
|
171
188
|
description: 'Message describing when the version retention policy will expire.',
|
|
172
189
|
},
|
|
190
|
+
versionUpsell: {
|
|
191
|
+
defaultMessage:
|
|
192
|
+
'Sorry, version history is not available with your current account plan. To access versioning, select from one of our paid plans.',
|
|
193
|
+
description: 'Upgrade message shown when user does not have access to Version History',
|
|
194
|
+
id: 'be.sidebarVersions.versionUpsell',
|
|
195
|
+
},
|
|
196
|
+
upgradeButton: {
|
|
197
|
+
defaultMessage: 'Upgrade',
|
|
198
|
+
description: 'Text on the upgrade button shown when user does not have access to Version History',
|
|
199
|
+
id: 'be.sidebarVersions.upgradeButton',
|
|
200
|
+
},
|
|
173
201
|
});
|
|
174
202
|
|
|
175
203
|
export default messages;
|
|
@@ -17,12 +17,14 @@ const ACCESS_POLICY_RESTRICTION: {
|
|
|
17
17
|
EXTERNAL_COLLAB: 'externalCollab',
|
|
18
18
|
FTP: 'ftp',
|
|
19
19
|
SHARED_LINK: 'sharedLink',
|
|
20
|
+
WATERMARK: 'watermark',
|
|
20
21
|
} = {
|
|
21
22
|
SHARED_LINK: 'sharedLink',
|
|
22
23
|
DOWNLOAD: 'download',
|
|
23
24
|
EXTERNAL_COLLAB: 'externalCollab',
|
|
24
25
|
APP: 'app',
|
|
25
26
|
FTP: 'ftp',
|
|
27
|
+
WATERMARK: 'watermark',
|
|
26
28
|
};
|
|
27
29
|
|
|
28
30
|
const DOWNLOAD_CONTROL: {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// @flow
|
|
2
|
+
import * as React from 'react';
|
|
2
3
|
import type { MessageDescriptor } from 'react-intl';
|
|
3
4
|
|
|
4
5
|
import {
|
|
@@ -44,17 +45,22 @@ type SharedLinkRestrictions = {
|
|
|
44
45
|
accessLevel: SharedLinkAccessLevel,
|
|
45
46
|
};
|
|
46
47
|
|
|
48
|
+
type watermarkApplied = {
|
|
49
|
+
enabled?: boolean,
|
|
50
|
+
};
|
|
51
|
+
|
|
47
52
|
type Controls = {
|
|
48
53
|
app?: ApplicationRestriction,
|
|
49
54
|
download?: DownloadRestrictions,
|
|
50
55
|
externalCollab?: ExternalCollabRestriction,
|
|
51
56
|
sharedLink?: SharedLinkRestrictions,
|
|
57
|
+
watermark?: watermarkApplied,
|
|
52
58
|
};
|
|
53
59
|
|
|
54
60
|
type ControlsFormat = $Values<typeof SECURITY_CONTROLS_FORMAT>;
|
|
55
61
|
|
|
56
62
|
type MessageItem = {
|
|
57
|
-
message: MessageDescriptor,
|
|
63
|
+
message: MessageDescriptor | React.Node,
|
|
58
64
|
tooltipMessage?: MessageDescriptor,
|
|
59
65
|
};
|
|
60
66
|
|
|
@@ -67,8 +67,7 @@ class SecurityControls extends React.Component<Props, State> {
|
|
|
67
67
|
if (controlsFormat === FULL) {
|
|
68
68
|
items = getFullSecurityControlsMessages(controls, maxAppCount);
|
|
69
69
|
} else {
|
|
70
|
-
|
|
71
|
-
items = shortMessage ? [shortMessage] : [];
|
|
70
|
+
items = getShortSecurityControlsMessage(controls);
|
|
72
71
|
|
|
73
72
|
if (items.length && controlsFormat === SHORT_WITH_BTN) {
|
|
74
73
|
modalItems = getFullSecurityControlsMessages(controls, maxAppCount);
|
|
@@ -85,8 +84,8 @@ class SecurityControls extends React.Component<Props, State> {
|
|
|
85
84
|
|
|
86
85
|
let itemsList = (
|
|
87
86
|
<ul className="bdl-SecurityControls">
|
|
88
|
-
{items.map(({ message, tooltipMessage }) => (
|
|
89
|
-
<SecurityControlsItem key={
|
|
87
|
+
{items.map(({ message, tooltipMessage }, index) => (
|
|
88
|
+
<SecurityControlsItem key={index} message={message} tooltipMessage={tooltipMessage} />
|
|
90
89
|
))}
|
|
91
90
|
</ul>
|
|
92
91
|
);
|
|
@@ -13,22 +13,25 @@ type Props = MessageItem;
|
|
|
13
13
|
|
|
14
14
|
const ICON_SIZE = 13;
|
|
15
15
|
|
|
16
|
-
const SecurityControlsItem = ({ message, tooltipMessage }: Props) =>
|
|
17
|
-
|
|
18
|
-
<
|
|
19
|
-
|
|
20
|
-
<
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
)
|
|
16
|
+
const SecurityControlsItem = ({ message, tooltipMessage }: Props) => {
|
|
17
|
+
return (
|
|
18
|
+
<li className="bdl-SecurityControlsItem">
|
|
19
|
+
{/* $FlowFixMe */}
|
|
20
|
+
{React.isValidElement(message) ? message : <FormattedMessage {...message} />}
|
|
21
|
+
{tooltipMessage && (
|
|
22
|
+
<Tooltip
|
|
23
|
+
className="bdl-SecurityControlsItem-tooltip"
|
|
24
|
+
text={<FormattedMessage {...tooltipMessage} />}
|
|
25
|
+
position="middle-right"
|
|
26
|
+
isTabbable={false}
|
|
27
|
+
>
|
|
28
|
+
<span className="bdl-SecurityControlsItem-tooltipIcon">
|
|
29
|
+
<IconInfo color={bdlBoxBlue} width={ICON_SIZE} height={ICON_SIZE} />
|
|
30
|
+
</span>
|
|
31
|
+
</Tooltip>
|
|
32
|
+
)}
|
|
33
|
+
</li>
|
|
34
|
+
);
|
|
35
|
+
};
|
|
33
36
|
|
|
34
37
|
export default SecurityControlsItem;
|
|
@@ -53,8 +53,8 @@ const SecurityControlsModal = ({
|
|
|
53
53
|
<p className="bdl-SecurityControlsModal-definition">{definition}</p>
|
|
54
54
|
</Label>
|
|
55
55
|
<ul className="bdl-SecurityControlsModal-controlsItemList">
|
|
56
|
-
{modalItems.map(({ message, tooltipMessage }) => (
|
|
57
|
-
<SecurityControlsItem key={
|
|
56
|
+
{modalItems.map(({ message, tooltipMessage }, index) => (
|
|
57
|
+
<SecurityControlsItem key={index} message={message} tooltipMessage={tooltipMessage} />
|
|
58
58
|
))}
|
|
59
59
|
</ul>
|
|
60
60
|
<ModalActions>
|
package/src/features/classification/security-controls/__tests__/SecurityControlsItem.test.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { FormattedMessage } from 'react-intl';
|
|
3
|
+
|
|
2
4
|
import SecurityControlsItem from '../SecurityControlsItem';
|
|
3
5
|
import Tooltip from '../../../../components/tooltip';
|
|
4
6
|
import IconInfo from '../../../../icons/general/IconInfo';
|
|
@@ -33,4 +35,12 @@ describe('features/classification/security-controls/SecurityControlsItem', () =>
|
|
|
33
35
|
expect(wrapper.find(Tooltip).length).toBe(0);
|
|
34
36
|
expect(wrapper.find(IconInfo).length).toBe(0);
|
|
35
37
|
});
|
|
38
|
+
|
|
39
|
+
test('should render message as if it is a valid element and not render FormattedMessage', () => {
|
|
40
|
+
const messageElement = <div>Test Element</div>;
|
|
41
|
+
wrapper.setProps({ message: messageElement });
|
|
42
|
+
|
|
43
|
+
expect(wrapper).toMatchSnapshot();
|
|
44
|
+
expect(wrapper.find(FormattedMessage).length).toBe(0);
|
|
45
|
+
});
|
|
36
46
|
});
|
|
@@ -6,7 +6,7 @@ exports[`features/classification/security-controls/SecurityControls should rende
|
|
|
6
6
|
className="bdl-SecurityControls"
|
|
7
7
|
>
|
|
8
8
|
<SecurityControlsItem
|
|
9
|
-
key="
|
|
9
|
+
key="0"
|
|
10
10
|
message={
|
|
11
11
|
Object {
|
|
12
12
|
"defaultMessage": "Shared links allowed for collaborators only.",
|
|
@@ -15,7 +15,7 @@ exports[`features/classification/security-controls/SecurityControls should rende
|
|
|
15
15
|
}
|
|
16
16
|
/>
|
|
17
17
|
<SecurityControlsItem
|
|
18
|
-
key="
|
|
18
|
+
key="1"
|
|
19
19
|
message={
|
|
20
20
|
Object {
|
|
21
21
|
"defaultMessage": "External collaboration limited to approved domains.",
|
|
@@ -24,7 +24,7 @@ exports[`features/classification/security-controls/SecurityControls should rende
|
|
|
24
24
|
}
|
|
25
25
|
/>
|
|
26
26
|
<SecurityControlsItem
|
|
27
|
-
key="
|
|
27
|
+
key="2"
|
|
28
28
|
message={
|
|
29
29
|
Object {
|
|
30
30
|
"defaultMessage": "Download restricted on Box Drive, except Owners/Co-Owners.",
|
|
@@ -33,7 +33,7 @@ exports[`features/classification/security-controls/SecurityControls should rende
|
|
|
33
33
|
}
|
|
34
34
|
/>
|
|
35
35
|
<SecurityControlsItem
|
|
36
|
-
key="
|
|
36
|
+
key="3"
|
|
37
37
|
message={
|
|
38
38
|
Object {
|
|
39
39
|
"defaultMessage": "Only select applications are allowed: {appNames}",
|
|
@@ -54,7 +54,7 @@ exports[`features/classification/security-controls/SecurityControls should rende
|
|
|
54
54
|
className="bdl-SecurityControls"
|
|
55
55
|
>
|
|
56
56
|
<SecurityControlsItem
|
|
57
|
-
key="
|
|
57
|
+
key="0"
|
|
58
58
|
message={
|
|
59
59
|
Object {
|
|
60
60
|
"defaultMessage": "Sharing, download and app restrictions apply",
|
|
@@ -120,7 +120,7 @@ exports[`features/classification/security-controls/SecurityControls should rende
|
|
|
120
120
|
className="bdl-SecurityControls"
|
|
121
121
|
>
|
|
122
122
|
<SecurityControlsItem
|
|
123
|
-
key="
|
|
123
|
+
key="0"
|
|
124
124
|
message={
|
|
125
125
|
Object {
|
|
126
126
|
"defaultMessage": "Sharing, download and app restrictions apply",
|
|
@@ -35,3 +35,38 @@ exports[`features/classification/security-controls/SecurityControlsItem should r
|
|
|
35
35
|
</Tooltip>
|
|
36
36
|
</li>
|
|
37
37
|
`;
|
|
38
|
+
|
|
39
|
+
exports[`features/classification/security-controls/SecurityControlsItem should render message as if it is a valid element and not render FormattedMessage 1`] = `
|
|
40
|
+
<li
|
|
41
|
+
className="bdl-SecurityControlsItem"
|
|
42
|
+
>
|
|
43
|
+
<div>
|
|
44
|
+
Test Element
|
|
45
|
+
</div>
|
|
46
|
+
<Tooltip
|
|
47
|
+
className="bdl-SecurityControlsItem-tooltip"
|
|
48
|
+
constrainToScrollParent={false}
|
|
49
|
+
constrainToWindow={true}
|
|
50
|
+
isDisabled={false}
|
|
51
|
+
isTabbable={false}
|
|
52
|
+
position="middle-right"
|
|
53
|
+
text={
|
|
54
|
+
<FormattedMessage
|
|
55
|
+
defaultMessage="message2"
|
|
56
|
+
id="id2"
|
|
57
|
+
/>
|
|
58
|
+
}
|
|
59
|
+
theme="default"
|
|
60
|
+
>
|
|
61
|
+
<span
|
|
62
|
+
className="bdl-SecurityControlsItem-tooltipIcon"
|
|
63
|
+
>
|
|
64
|
+
<IconInfo
|
|
65
|
+
color="#0061d5"
|
|
66
|
+
height={13}
|
|
67
|
+
width={13}
|
|
68
|
+
/>
|
|
69
|
+
</span>
|
|
70
|
+
</Tooltip>
|
|
71
|
+
</li>
|
|
72
|
+
`;
|
|
@@ -51,7 +51,7 @@ exports[`features/classification/security-controls/SecurityControlsModal should
|
|
|
51
51
|
className="bdl-SecurityControlsModal-controlsItemList"
|
|
52
52
|
>
|
|
53
53
|
<SecurityControlsItem
|
|
54
|
-
key="
|
|
54
|
+
key="0"
|
|
55
55
|
message={
|
|
56
56
|
Object {
|
|
57
57
|
"defaultMessage": "message1",
|
|
@@ -60,7 +60,7 @@ exports[`features/classification/security-controls/SecurityControlsModal should
|
|
|
60
60
|
}
|
|
61
61
|
/>
|
|
62
62
|
<SecurityControlsItem
|
|
63
|
-
key="
|
|
63
|
+
key="1"
|
|
64
64
|
message={
|
|
65
65
|
Object {
|
|
66
66
|
"defaultMessage": "message2",
|
package/src/features/classification/security-controls/__tests__/__snapshots__/utils.test.js.snap
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`features/classification/security-controls/utils getFullSecurityControlsMessages() should include correct message when watermark is applied 1`] = `
|
|
4
|
+
<FormattedCompMessage
|
|
5
|
+
description="Bullet point that summarizes watermarking applied to classification"
|
|
6
|
+
id="boxui.securityControls.watermarkingAppliedWithLink"
|
|
7
|
+
>
|
|
8
|
+
Watermarking will be applied, click
|
|
9
|
+
|
|
10
|
+
<Link
|
|
11
|
+
className="support-link"
|
|
12
|
+
href="https://support.box.com/hc/en-us/articles/360044195253"
|
|
13
|
+
target="_blank"
|
|
14
|
+
>
|
|
15
|
+
here
|
|
16
|
+
</Link>
|
|
17
|
+
|
|
18
|
+
more details on Watermarking
|
|
19
|
+
</FormattedCompMessage>
|
|
20
|
+
`;
|
|
@@ -25,69 +25,75 @@ describe('features/classification/security-controls/utils', () => {
|
|
|
25
25
|
|
|
26
26
|
describe('getShortSecurityControlsMessage()', () => {
|
|
27
27
|
test('should return null when there are no restrictions', () => {
|
|
28
|
-
expect(getShortSecurityControlsMessage({})).
|
|
28
|
+
expect(getShortSecurityControlsMessage({})).toEqual([]);
|
|
29
29
|
});
|
|
30
30
|
|
|
31
31
|
test('should not return messages when shared link restriction has a "public" access level', () => {
|
|
32
32
|
accessPolicy = { sharedLink: { accessLevel: PUBLIC } };
|
|
33
|
-
expect(getShortSecurityControlsMessage(accessPolicy)).
|
|
33
|
+
expect(getShortSecurityControlsMessage(accessPolicy)).toEqual([]);
|
|
34
34
|
});
|
|
35
35
|
|
|
36
|
-
test('should return
|
|
37
|
-
accessPolicy = { sharedLink: {}, download: {}, externalCollab: {}, app: {} };
|
|
38
|
-
expect(getShortSecurityControlsMessage(accessPolicy).message).toBe(messages.shortAllRestrictions);
|
|
36
|
+
test('should return correct message when all restrictions are present', () => {
|
|
37
|
+
accessPolicy = { sharedLink: {}, download: {}, externalCollab: {}, app: {}, watermark: {} };
|
|
38
|
+
expect(getShortSecurityControlsMessage(accessPolicy)[0].message).toBe(messages.shortAllRestrictions);
|
|
39
|
+
expect(getShortSecurityControlsMessage(accessPolicy)[1].message).toBe(messages.shortWatermarking);
|
|
39
40
|
});
|
|
40
41
|
|
|
41
42
|
test('should return all restrictions message when download, app and either shared link, or external collab restrictions are present', () => {
|
|
42
43
|
accessPolicy = { sharedLink: {}, download: {}, app: {} };
|
|
43
|
-
expect(getShortSecurityControlsMessage(accessPolicy).message).toBe(messages.shortAllRestrictions);
|
|
44
|
+
expect(getShortSecurityControlsMessage(accessPolicy)[0].message).toBe(messages.shortAllRestrictions);
|
|
44
45
|
accessPolicy = { externalCollab: {}, download: {}, app: {} };
|
|
45
|
-
expect(getShortSecurityControlsMessage(accessPolicy).message).toBe(messages.shortAllRestrictions);
|
|
46
|
+
expect(getShortSecurityControlsMessage(accessPolicy)[0].message).toBe(messages.shortAllRestrictions);
|
|
46
47
|
});
|
|
47
48
|
|
|
48
49
|
test('should return correct message when download and either shared link, or external collab restrictions are present', () => {
|
|
49
50
|
accessPolicy = { sharedLink: {}, download: {} };
|
|
50
|
-
expect(getShortSecurityControlsMessage(accessPolicy).message).toBe(messages.shortSharingDownload);
|
|
51
|
+
expect(getShortSecurityControlsMessage(accessPolicy)[0].message).toBe(messages.shortSharingDownload);
|
|
51
52
|
accessPolicy = { externalCollab: {}, download: {} };
|
|
52
|
-
expect(getShortSecurityControlsMessage(accessPolicy).message).toBe(messages.shortSharingDownload);
|
|
53
|
+
expect(getShortSecurityControlsMessage(accessPolicy)[0].message).toBe(messages.shortSharingDownload);
|
|
53
54
|
});
|
|
54
55
|
|
|
55
56
|
test('should return correct message when app and either shared link, or external collab restrictions are present', () => {
|
|
56
57
|
accessPolicy = { sharedLink: {}, app: {} };
|
|
57
|
-
expect(getShortSecurityControlsMessage(accessPolicy).message).toBe(messages.shortSharingApp);
|
|
58
|
+
expect(getShortSecurityControlsMessage(accessPolicy)[0].message).toBe(messages.shortSharingApp);
|
|
58
59
|
accessPolicy = { externalCollab: {}, app: {} };
|
|
59
|
-
expect(getShortSecurityControlsMessage(accessPolicy).message).toBe(messages.shortSharingApp);
|
|
60
|
+
expect(getShortSecurityControlsMessage(accessPolicy)[0].message).toBe(messages.shortSharingApp);
|
|
60
61
|
});
|
|
61
62
|
|
|
62
63
|
test('should return correct message when app and download restrictions are present', () => {
|
|
63
64
|
accessPolicy = { download: {}, app: {} };
|
|
64
|
-
expect(getShortSecurityControlsMessage(accessPolicy).message).toBe(messages.shortDownloadApp);
|
|
65
|
+
expect(getShortSecurityControlsMessage(accessPolicy)[0].message).toBe(messages.shortDownloadApp);
|
|
65
66
|
});
|
|
66
67
|
|
|
67
68
|
test('should return correct message when there are shared link or external collab restrictions', () => {
|
|
68
69
|
accessPolicy = { sharedLink: {}, externalCollab: {} };
|
|
69
|
-
expect(getShortSecurityControlsMessage(accessPolicy).message).toBe(messages.shortSharing);
|
|
70
|
+
expect(getShortSecurityControlsMessage(accessPolicy)[0].message).toBe(messages.shortSharing);
|
|
70
71
|
|
|
71
72
|
accessPolicy = { sharedLink: {} };
|
|
72
|
-
expect(getShortSecurityControlsMessage(accessPolicy).message).toBe(messages.shortSharing);
|
|
73
|
+
expect(getShortSecurityControlsMessage(accessPolicy)[0].message).toBe(messages.shortSharing);
|
|
73
74
|
|
|
74
75
|
accessPolicy = { externalCollab: {} };
|
|
75
|
-
expect(getShortSecurityControlsMessage(accessPolicy).message).toBe(messages.shortSharing);
|
|
76
|
+
expect(getShortSecurityControlsMessage(accessPolicy)[0].message).toBe(messages.shortSharing);
|
|
76
77
|
});
|
|
77
78
|
|
|
78
79
|
test('should return correct message when there is a download restriction', () => {
|
|
79
80
|
accessPolicy = { download: {} };
|
|
80
|
-
expect(getShortSecurityControlsMessage(accessPolicy).message).toBe(messages.shortDownload);
|
|
81
|
+
expect(getShortSecurityControlsMessage(accessPolicy)[0].message).toBe(messages.shortDownload);
|
|
81
82
|
});
|
|
82
83
|
|
|
83
84
|
test('should return correct message when there is a download restriction', () => {
|
|
84
85
|
accessPolicy = { app: {} };
|
|
85
|
-
expect(getShortSecurityControlsMessage(accessPolicy).message).toBe(messages.shortApp);
|
|
86
|
+
expect(getShortSecurityControlsMessage(accessPolicy)[0].message).toBe(messages.shortApp);
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
test('should return correct message when there is a watermark restriction', () => {
|
|
90
|
+
accessPolicy = { watermark: {} };
|
|
91
|
+
expect(getShortSecurityControlsMessage(accessPolicy)[0].message).toBe(messages.shortWatermarking);
|
|
86
92
|
});
|
|
87
93
|
|
|
88
94
|
test('should not return tooltipMessage', () => {
|
|
89
95
|
accessPolicy = { sharedLink: {}, download: {}, externalCollab: {}, app: {} };
|
|
90
|
-
expect(getShortSecurityControlsMessage(accessPolicy).tooltipMessage).toBeUndefined();
|
|
96
|
+
expect(getShortSecurityControlsMessage(accessPolicy)[0].tooltipMessage).toBeUndefined();
|
|
91
97
|
});
|
|
92
98
|
});
|
|
93
99
|
|
|
@@ -112,6 +118,20 @@ describe('features/classification/security-controls/utils', () => {
|
|
|
112
118
|
]);
|
|
113
119
|
});
|
|
114
120
|
|
|
121
|
+
test('should include correct message when watermark is applied', () => {
|
|
122
|
+
accessPolicy = {
|
|
123
|
+
watermark: {
|
|
124
|
+
enabled: true,
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
const { message: formattedCompMessage } = getFullSecurityControlsMessages(accessPolicy)[0];
|
|
128
|
+
const { props: formattedCompMessageProps = {} } = formattedCompMessage;
|
|
129
|
+
const expectedMessageId = 'boxui.securityControls.watermarkingAppliedWithLink';
|
|
130
|
+
|
|
131
|
+
expect(formattedCompMessageProps.id).toEqual(expectedMessageId);
|
|
132
|
+
expect(formattedCompMessage).toMatchSnapshot();
|
|
133
|
+
});
|
|
134
|
+
|
|
115
135
|
test('should include correct message when external collab is blocked', () => {
|
|
116
136
|
accessPolicy = {
|
|
117
137
|
externalCollab: {
|
|
@@ -24,6 +24,11 @@ const messages = defineMessages({
|
|
|
24
24
|
'Short summary displayed for classification when an application download restriction is applied to it',
|
|
25
25
|
id: 'boxui.securityControls.shortApp',
|
|
26
26
|
},
|
|
27
|
+
shortWatermarking: {
|
|
28
|
+
defaultMessage: 'Watermarking applies',
|
|
29
|
+
description: 'Short summary displayed for classification when watermarking is applied to it',
|
|
30
|
+
id: 'boxui.securityControls.shortWatermarking',
|
|
31
|
+
},
|
|
27
32
|
shortSharingDownload: {
|
|
28
33
|
defaultMessage: 'Sharing and download restrictions apply',
|
|
29
34
|
description:
|