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
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import { toQuery, useMediaQuery as _useMediaQuery } from 'react-responsive';
|
|
4
|
+
import {
|
|
5
|
+
ANY_HOVER,
|
|
6
|
+
ANY_POINTER_COARSE,
|
|
7
|
+
ANY_POINTER_FINE,
|
|
8
|
+
HOVER,
|
|
9
|
+
HOVER_TYPE,
|
|
10
|
+
POINTER_COARSE,
|
|
11
|
+
POINTER_FINE,
|
|
12
|
+
POINTER_TYPE,
|
|
13
|
+
SIZE_LARGE,
|
|
14
|
+
SIZE_MEDIUM,
|
|
15
|
+
SIZE_SMALL,
|
|
16
|
+
VIEW_SIZE_TYPE,
|
|
17
|
+
} from './constants';
|
|
18
|
+
import type { MediaQuery, MediaShape } from './types';
|
|
19
|
+
|
|
20
|
+
const getPointerCapabilities = (isFine: boolean, isCoarse: boolean) => {
|
|
21
|
+
if (!isFine && !isCoarse) return POINTER_TYPE.none;
|
|
22
|
+
if (isFine) return POINTER_TYPE.fine;
|
|
23
|
+
return POINTER_TYPE.coarse;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const getViewDimensions = () => {
|
|
27
|
+
return { viewWidth: window.innerWidth, viewHeight: window.innerHeight };
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Formats the media query either as a MediaQuery object or string
|
|
32
|
+
* @param query
|
|
33
|
+
* @returns {string}
|
|
34
|
+
*/
|
|
35
|
+
function formatQuery(query: MediaQuery): string {
|
|
36
|
+
return typeof query === 'string' ? query : toQuery(query);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Executes media query
|
|
41
|
+
* @param query
|
|
42
|
+
* @param onQueryChange
|
|
43
|
+
* @returns {boolean}
|
|
44
|
+
*/
|
|
45
|
+
function useQuery(query: MediaQuery, onQueryChange?: (_: boolean) => void): boolean {
|
|
46
|
+
return _useMediaQuery({ query: formatQuery(query) }, null, onQueryChange);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Determines device capabilities for hover and pointer features
|
|
51
|
+
* @returns {{anyPointer: *, hover: (string), pointer: *, anyHover: (string)}}
|
|
52
|
+
*/
|
|
53
|
+
function useDeviceCapabilities() {
|
|
54
|
+
const isHover: boolean = useQuery(HOVER);
|
|
55
|
+
const isAnyHover: boolean = useQuery(ANY_HOVER);
|
|
56
|
+
|
|
57
|
+
const anyHover = isAnyHover ? HOVER_TYPE.hover : HOVER_TYPE.none;
|
|
58
|
+
const hover = isHover ? HOVER_TYPE.hover : HOVER_TYPE.none;
|
|
59
|
+
const pointer = getPointerCapabilities(useQuery(POINTER_FINE), useQuery(POINTER_COARSE));
|
|
60
|
+
const anyPointer = getPointerCapabilities(useQuery(ANY_POINTER_FINE), useQuery(ANY_POINTER_COARSE));
|
|
61
|
+
|
|
62
|
+
return {
|
|
63
|
+
anyHover,
|
|
64
|
+
hover,
|
|
65
|
+
anyPointer,
|
|
66
|
+
pointer,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Determines device size using media queries
|
|
72
|
+
* @returns {string}
|
|
73
|
+
*/
|
|
74
|
+
function useDeviceSize() {
|
|
75
|
+
const isSmall: boolean = useQuery(SIZE_SMALL);
|
|
76
|
+
const isMedium: boolean = useQuery(SIZE_MEDIUM);
|
|
77
|
+
const isLarge: boolean = useQuery(SIZE_LARGE);
|
|
78
|
+
|
|
79
|
+
if (isSmall) return VIEW_SIZE_TYPE.small;
|
|
80
|
+
if (isMedium) return VIEW_SIZE_TYPE.medium;
|
|
81
|
+
if (isLarge) return VIEW_SIZE_TYPE.large;
|
|
82
|
+
|
|
83
|
+
return VIEW_SIZE_TYPE.xlarge;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function useMediaQuery(): MediaShape {
|
|
87
|
+
const deviceCapabilities = useDeviceCapabilities();
|
|
88
|
+
const deviceSize = useDeviceSize();
|
|
89
|
+
const viewDimensions = getViewDimensions();
|
|
90
|
+
return {
|
|
91
|
+
...deviceCapabilities,
|
|
92
|
+
...viewDimensions,
|
|
93
|
+
size: deviceSize,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export default useMediaQuery;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import useMediaQuery from './useMediaQuery';
|
|
5
|
+
import type { MediaShape } from './types';
|
|
6
|
+
|
|
7
|
+
type PropsShape = {
|
|
8
|
+
children: React.Node,
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
function withMediaQuery<Props: PropsShape>(WrappedComponent: React.ComponentType<any>): React.ComponentType<any> {
|
|
12
|
+
return ({ children, ...rest }: Props) => {
|
|
13
|
+
const mediaProps: MediaShape = useMediaQuery();
|
|
14
|
+
|
|
15
|
+
return (
|
|
16
|
+
<WrappedComponent {...rest} {...mediaProps}>
|
|
17
|
+
{children}
|
|
18
|
+
</WrappedComponent>
|
|
19
|
+
);
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export default withMediaQuery;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
@import '../../styles/variables';
|
|
2
2
|
@import '../../styles/mixins/buttons';
|
|
3
|
+
@import '../../styles/constants/media-queries';
|
|
3
4
|
|
|
4
5
|
/**************************************
|
|
5
6
|
* Modal
|
|
@@ -56,6 +57,7 @@
|
|
|
56
57
|
display: flex;
|
|
57
58
|
flex-direction: column;
|
|
58
59
|
width: 460px;
|
|
60
|
+
max-width: 100%;
|
|
59
61
|
margin: auto;
|
|
60
62
|
padding: 30px;
|
|
61
63
|
background-color: $white;
|
|
@@ -133,3 +135,28 @@
|
|
|
133
135
|
z-index: 89;
|
|
134
136
|
display: flex;
|
|
135
137
|
}
|
|
138
|
+
|
|
139
|
+
//Responsive support - triggers fullscreen mode after reaching $small-medium-screen width
|
|
140
|
+
.is-responsive-web {
|
|
141
|
+
@include breakpoint($small-medium-screen) {
|
|
142
|
+
.modal {
|
|
143
|
+
flex-direction: column;
|
|
144
|
+
padding: 0;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.modal-dialog {
|
|
148
|
+
min-height: 100%;
|
|
149
|
+
padding: 22px 16px 12px 16px;
|
|
150
|
+
border-radius: 0;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.modal-close-button {
|
|
154
|
+
right: 10px;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.modal-dialog-container {
|
|
159
|
+
flex-basis: 100%;
|
|
160
|
+
width: 100%;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { sizeSmallMax } from '../../../styles/variables';
|
|
2
|
+
|
|
1
3
|
describe('components/modal/Modal', () => {
|
|
2
4
|
const MODAL_STORIES = ['components-modal--basic', 'components-modal--with-custom-backdrop-click-handler'];
|
|
3
5
|
|
|
@@ -10,4 +12,12 @@ describe('components/modal/Modal', () => {
|
|
|
10
12
|
const image = await BoxVisualTestUtils.takeModalScreenshot(id);
|
|
11
13
|
return expect(image).toMatchImageSnapshot();
|
|
12
14
|
});
|
|
15
|
+
|
|
16
|
+
test.each(MODAL_STORIES)(
|
|
17
|
+
'looks visually correct for small screens when button is clicked in story %s',
|
|
18
|
+
async id => {
|
|
19
|
+
const image = await BoxVisualTestUtils.takeModalScreenshot(id, parseInt(sizeSmallMax, 10));
|
|
20
|
+
return expect(image).toMatchImageSnapshot();
|
|
21
|
+
},
|
|
22
|
+
);
|
|
13
23
|
});
|
|
@@ -29,6 +29,8 @@ import IconFileThreeD from '../../icon/content/FileThreeD32';
|
|
|
29
29
|
import IconFileVector from '../../icon/content/FileVector32';
|
|
30
30
|
import IconFileVideo from '../../icon/content/FileVideo32';
|
|
31
31
|
import IconFileWord from '../../icon/content/FileWord32';
|
|
32
|
+
import IconFileXbd from '../../icon/content/FileXbd32';
|
|
33
|
+
import IconFileXdw from '../../icon/content/FileXdw32';
|
|
32
34
|
import IconFileZip from '../../icon/content/FileZip32';
|
|
33
35
|
import { SVGProps } from '../accessible-svg/AccessibleSVG';
|
|
34
36
|
|
|
@@ -168,6 +170,8 @@ register(IconFileVideo, '#009AED', [
|
|
|
168
170
|
'wmv',
|
|
169
171
|
]);
|
|
170
172
|
register(IconFileWord, '#185ABD', ['doc', 'docx']);
|
|
173
|
+
register(IconFileXbd, '#00838D', ['xbd']);
|
|
174
|
+
register(IconFileXdw, '#00838D', ['xdw']);
|
|
171
175
|
register(IconFileZip, vars.bdlGray20, ['tgz', 'zip']);
|
|
172
176
|
|
|
173
177
|
export const getColor = (extension?: string): Config['color'] => {
|
|
@@ -204,7 +204,8 @@ class SelectorDropdown extends React.Component<Props, State> {
|
|
|
204
204
|
this.resetActiveItem();
|
|
205
205
|
}
|
|
206
206
|
break;
|
|
207
|
-
|
|
207
|
+
default:
|
|
208
|
+
this.handleInput();
|
|
208
209
|
}
|
|
209
210
|
};
|
|
210
211
|
|
|
@@ -296,7 +297,7 @@ class SelectorDropdown extends React.Component<Props, State> {
|
|
|
296
297
|
</ul>
|
|
297
298
|
);
|
|
298
299
|
|
|
299
|
-
// change
|
|
300
|
+
// change onPaste back to onInput when React fixes this IE11 bug: https://github.com/facebook/react/issues/7280
|
|
300
301
|
|
|
301
302
|
// We're simulating the blur event with the tab key listener and the
|
|
302
303
|
// click listener as a proxy because IE will trigger a blur when
|
|
@@ -307,7 +308,6 @@ class SelectorDropdown extends React.Component<Props, State> {
|
|
|
307
308
|
className={classNames('SelectorDropdown', className)}
|
|
308
309
|
onFocus={this.handleFocus}
|
|
309
310
|
onKeyDown={this.handleKeyDown}
|
|
310
|
-
onKeyPress={this.handleInput}
|
|
311
311
|
onPaste={this.handleInput}
|
|
312
312
|
ref={this.selectorDropdownRef}
|
|
313
313
|
>
|
|
@@ -172,12 +172,16 @@ describe('components/selector-dropdown/SelectorDropdown', () => {
|
|
|
172
172
|
|
|
173
173
|
describe('handleInput()', () => {
|
|
174
174
|
test('should call openDropdown() when key is pressed', () => {
|
|
175
|
+
const event = {
|
|
176
|
+
key: 'a',
|
|
177
|
+
};
|
|
178
|
+
|
|
175
179
|
const wrapper = renderEmptyDropdown();
|
|
176
180
|
const instance = wrapper.instance();
|
|
177
181
|
|
|
178
182
|
sandbox.mock(instance).expects('openDropdown');
|
|
179
183
|
|
|
180
|
-
wrapper.simulate('
|
|
184
|
+
wrapper.simulate('keyDown', event);
|
|
181
185
|
});
|
|
182
186
|
|
|
183
187
|
test('should call openDropdown() when text is pasted', () => {
|
|
@@ -45,7 +45,6 @@ exports[`components/sidebar-toggle-button/SidebarToggleButton should render corr
|
|
|
45
45
|
key=".0"
|
|
46
46
|
onBlur={[Function]}
|
|
47
47
|
onFocus={[Function]}
|
|
48
|
-
onKeyDown={[Function]}
|
|
49
48
|
onMouseEnter={[Function]}
|
|
50
49
|
onMouseLeave={[Function]}
|
|
51
50
|
tabIndex="0"
|
|
@@ -56,7 +55,6 @@ exports[`components/sidebar-toggle-button/SidebarToggleButton should render corr
|
|
|
56
55
|
className="btn-plain bdl-SidebarToggleButton bdl-is-collapsed"
|
|
57
56
|
onBlur={[Function]}
|
|
58
57
|
onFocus={[Function]}
|
|
59
|
-
onKeyDown={[Function]}
|
|
60
58
|
onMouseEnter={[Function]}
|
|
61
59
|
onMouseLeave={[Function]}
|
|
62
60
|
tabIndex="0"
|
|
@@ -144,7 +142,6 @@ exports[`components/sidebar-toggle-button/SidebarToggleButton should render corr
|
|
|
144
142
|
key=".0"
|
|
145
143
|
onBlur={[Function]}
|
|
146
144
|
onFocus={[Function]}
|
|
147
|
-
onKeyDown={[Function]}
|
|
148
145
|
onMouseEnter={[Function]}
|
|
149
146
|
onMouseLeave={[Function]}
|
|
150
147
|
tabIndex="0"
|
|
@@ -155,7 +152,6 @@ exports[`components/sidebar-toggle-button/SidebarToggleButton should render corr
|
|
|
155
152
|
className="btn-plain bdl-SidebarToggleButton bdl-is-collapsed"
|
|
156
153
|
onBlur={[Function]}
|
|
157
154
|
onFocus={[Function]}
|
|
158
|
-
onKeyDown={[Function]}
|
|
159
155
|
onMouseEnter={[Function]}
|
|
160
156
|
onMouseLeave={[Function]}
|
|
161
157
|
tabIndex="0"
|
|
@@ -243,7 +239,6 @@ exports[`components/sidebar-toggle-button/SidebarToggleButton should render corr
|
|
|
243
239
|
key=".0"
|
|
244
240
|
onBlur={[Function]}
|
|
245
241
|
onFocus={[Function]}
|
|
246
|
-
onKeyDown={[Function]}
|
|
247
242
|
onMouseEnter={[Function]}
|
|
248
243
|
onMouseLeave={[Function]}
|
|
249
244
|
tabIndex="0"
|
|
@@ -254,7 +249,6 @@ exports[`components/sidebar-toggle-button/SidebarToggleButton should render corr
|
|
|
254
249
|
className="btn-plain bdl-SidebarToggleButton"
|
|
255
250
|
onBlur={[Function]}
|
|
256
251
|
onFocus={[Function]}
|
|
257
|
-
onKeyDown={[Function]}
|
|
258
252
|
onMouseEnter={[Function]}
|
|
259
253
|
onMouseLeave={[Function]}
|
|
260
254
|
tabIndex="0"
|
|
@@ -340,7 +334,6 @@ exports[`components/sidebar-toggle-button/SidebarToggleButton should render corr
|
|
|
340
334
|
key=".0"
|
|
341
335
|
onBlur={[Function]}
|
|
342
336
|
onFocus={[Function]}
|
|
343
|
-
onKeyDown={[Function]}
|
|
344
337
|
onMouseEnter={[Function]}
|
|
345
338
|
onMouseLeave={[Function]}
|
|
346
339
|
tabIndex="0"
|
|
@@ -351,7 +344,6 @@ exports[`components/sidebar-toggle-button/SidebarToggleButton should render corr
|
|
|
351
344
|
className="btn-plain bdl-SidebarToggleButton"
|
|
352
345
|
onBlur={[Function]}
|
|
353
346
|
onFocus={[Function]}
|
|
354
|
-
onKeyDown={[Function]}
|
|
355
347
|
onMouseEnter={[Function]}
|
|
356
348
|
onMouseLeave={[Function]}
|
|
357
349
|
tabIndex="0"
|
|
@@ -130,15 +130,30 @@ class Tooltip extends React.Component<TooltipProps, State> {
|
|
|
130
130
|
this.setState({ hasRendered: true });
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
componentDidUpdate(prevProps: TooltipProps) {
|
|
133
|
+
componentDidUpdate(prevProps: TooltipProps, prevState: State) {
|
|
134
|
+
const isControlled = this.isControlled();
|
|
135
|
+
|
|
134
136
|
// Reset wasClosedByUser state when isShown transitions from false to true
|
|
135
|
-
if (
|
|
137
|
+
if (isControlled) {
|
|
136
138
|
if (!prevProps.isShown && this.props.isShown) {
|
|
137
139
|
this.setState({ wasClosedByUser: false });
|
|
138
140
|
}
|
|
141
|
+
} else {
|
|
142
|
+
if (!prevState.isShown && this.state.isShown) {
|
|
143
|
+
// capture event so that tooltip closes before any other floating components that can be closed by
|
|
144
|
+
// "Escape" key(e.g. Modal, Menu, etc.)
|
|
145
|
+
document.addEventListener('keydown', this.handleKeyDown, true);
|
|
146
|
+
}
|
|
147
|
+
if (prevState.isShown && !this.state.isShown) {
|
|
148
|
+
document.removeEventListener('keydown', this.handleKeyDown, true);
|
|
149
|
+
}
|
|
139
150
|
}
|
|
140
151
|
}
|
|
141
152
|
|
|
153
|
+
componentWillUnmount() {
|
|
154
|
+
document.removeEventListener('keydown', this.handleKeyDown, true);
|
|
155
|
+
}
|
|
156
|
+
|
|
142
157
|
tooltipID = uniqueId('tooltip');
|
|
143
158
|
|
|
144
159
|
tetherRef = React.createRef<TetherComponent>();
|
|
@@ -158,7 +173,7 @@ class Tooltip extends React.Component<TooltipProps, State> {
|
|
|
158
173
|
}
|
|
159
174
|
};
|
|
160
175
|
|
|
161
|
-
fireChildEvent = (type: string, event: React.SyntheticEvent<HTMLElement>) => {
|
|
176
|
+
fireChildEvent = (type: string, event: React.SyntheticEvent<HTMLElement> | Event) => {
|
|
162
177
|
const { children } = this.props;
|
|
163
178
|
const handler = (children as React.ReactElement).props[type];
|
|
164
179
|
if (handler) {
|
|
@@ -196,8 +211,9 @@ class Tooltip extends React.Component<TooltipProps, State> {
|
|
|
196
211
|
return typeof isShownProp !== 'undefined';
|
|
197
212
|
};
|
|
198
213
|
|
|
199
|
-
handleKeyDown = (event:
|
|
214
|
+
handleKeyDown = (event: KeyboardEvent) => {
|
|
200
215
|
if (event.key === 'Escape') {
|
|
216
|
+
event.stopPropagation();
|
|
201
217
|
this.setState({ isShown: false });
|
|
202
218
|
}
|
|
203
219
|
this.fireChildEvent('onKeyDown', event);
|
|
@@ -278,7 +294,6 @@ class Tooltip extends React.Component<TooltipProps, State> {
|
|
|
278
294
|
if (!isControlled) {
|
|
279
295
|
componentProps.onBlur = this.handleBlur;
|
|
280
296
|
componentProps.onFocus = this.handleFocus;
|
|
281
|
-
componentProps.onKeyDown = this.handleKeyDown;
|
|
282
297
|
componentProps.onMouseEnter = this.handleMouseEnter;
|
|
283
298
|
componentProps.onMouseLeave = this.handleMouseLeave;
|
|
284
299
|
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import sinon from 'sinon';
|
|
5
5
|
import { shallow } from 'enzyme';
|
|
6
|
+
import noop from 'lodash/noop';
|
|
7
|
+
|
|
6
8
|
import Tooltip, { TooltipPosition, TooltipTheme } from '../Tooltip';
|
|
7
9
|
import TetherPosition from '../../../common/tether-positions';
|
|
8
10
|
|
|
@@ -89,7 +91,6 @@ describe('components/tooltip/Tooltip', () => {
|
|
|
89
91
|
expect(component.is('button')).toBe(true);
|
|
90
92
|
expect(component.prop('onBlur')).toBeTruthy();
|
|
91
93
|
expect(component.prop('onFocus')).toBeTruthy();
|
|
92
|
-
expect(component.prop('onKeyDown')).toBeTruthy();
|
|
93
94
|
expect(component.prop('onMouseEnter')).toBeTruthy();
|
|
94
95
|
expect(component.prop('onMouseLeave')).toBeTruthy();
|
|
95
96
|
expect(component.prop('tabIndex')).toEqual('0');
|
|
@@ -477,18 +478,29 @@ describe('components/tooltip/Tooltip', () => {
|
|
|
477
478
|
|
|
478
479
|
describe('handleKeyDown()', () => {
|
|
479
480
|
test('should update isShown state only when escape key is pressed', () => {
|
|
481
|
+
const map: { [key: string]: Function } = {};
|
|
482
|
+
document.addEventListener = jest.fn().mockImplementationOnce((event, cb) => {
|
|
483
|
+
map[event] = cb;
|
|
484
|
+
});
|
|
480
485
|
const wrapper = shallow(
|
|
481
486
|
<Tooltip text="hi">
|
|
482
487
|
<button />
|
|
483
488
|
</Tooltip>,
|
|
484
489
|
);
|
|
485
490
|
wrapper.setState({ isShown: true });
|
|
486
|
-
|
|
487
|
-
|
|
491
|
+
map.keydown({
|
|
492
|
+
key: 'Escape',
|
|
493
|
+
stopPropagation: noop,
|
|
494
|
+
});
|
|
495
|
+
expect(document.addEventListener).toHaveBeenCalledWith('keydown', expect.anything(), true);
|
|
488
496
|
expect(wrapper.state('isShown')).toBe(false);
|
|
489
497
|
});
|
|
490
498
|
|
|
491
499
|
test('should not update isShown state only when some other key is pressed', () => {
|
|
500
|
+
const map: { [key: string]: Function } = {};
|
|
501
|
+
document.addEventListener = jest.fn().mockImplementationOnce((event, cb) => {
|
|
502
|
+
map[event] = cb;
|
|
503
|
+
});
|
|
492
504
|
const wrapper = shallow(
|
|
493
505
|
<Tooltip text="hi">
|
|
494
506
|
<button />
|
|
@@ -496,7 +508,8 @@ describe('components/tooltip/Tooltip', () => {
|
|
|
496
508
|
);
|
|
497
509
|
wrapper.setState({ isShown: true });
|
|
498
510
|
|
|
499
|
-
|
|
511
|
+
map.keydown({ key: 'Space' });
|
|
512
|
+
expect(document.addEventListener).toHaveBeenCalledWith('keydown', expect.anything(), true);
|
|
500
513
|
expect(wrapper.state('isShown')).toBe(true);
|
|
501
514
|
});
|
|
502
515
|
|
|
@@ -135,7 +135,6 @@ exports[`components/tooltip/Tooltip render() should render children wrapped in t
|
|
|
135
135
|
<div
|
|
136
136
|
onBlur={[Function]}
|
|
137
137
|
onFocus={[Function]}
|
|
138
|
-
onKeyDown={[Function]}
|
|
139
138
|
onMouseEnter={[Function]}
|
|
140
139
|
onMouseLeave={[Function]}
|
|
141
140
|
tabIndex="0"
|
|
@@ -205,7 +204,6 @@ exports[`components/tooltip/Tooltip render() should render correctly with tether
|
|
|
205
204
|
<div
|
|
206
205
|
onBlur={[Function]}
|
|
207
206
|
onFocus={[Function]}
|
|
208
|
-
onKeyDown={[Function]}
|
|
209
207
|
onMouseEnter={[Function]}
|
|
210
208
|
onMouseLeave={[Function]}
|
|
211
209
|
tabIndex="0"
|
package/src/constants.js
CHANGED
|
@@ -304,6 +304,7 @@ export const ORIGIN_METADATA_SIDEBAR: 'metadata_sidebar' = 'metadata_sidebar';
|
|
|
304
304
|
export const ORIGIN_SKILLS_SIDEBAR: 'skills_sidebar' = 'skills_sidebar';
|
|
305
305
|
export const ORIGIN_VERSIONS_SIDEBAR: 'versions_sidebar' = 'versions_sidebar';
|
|
306
306
|
export const ORIGIN_PREVIEW: 'preview' = 'preview';
|
|
307
|
+
export const ORIGIN_PREVIEW_SIDEBAR: 'preview_sidebar' = 'preview_sidebar';
|
|
307
308
|
export const ORIGIN_CONTENT_EXPLORER: 'content_explorer' = 'content_explorer';
|
|
308
309
|
export const ORIGIN_OPEN_WITH: 'open_with' = 'open_with';
|
|
309
310
|
|
|
@@ -4,14 +4,12 @@
|
|
|
4
4
|
* @author Box
|
|
5
5
|
*/
|
|
6
6
|
import * as React from 'react';
|
|
7
|
-
import IconAdobeSign from '../../icons/adobe-sign/IconAdobeSign';
|
|
8
7
|
import IconGoogleDocs from '../../icons/google-docs/IconGoogleDocs';
|
|
9
8
|
import IconGoogleSheets from '../../icons/google-docs/IconGoogleSheets';
|
|
10
9
|
import IconGoogleSlides from '../../icons/google-docs/IconGoogleSlides';
|
|
11
10
|
import FileIcon from '../../icons/file-icon/FileIcon';
|
|
12
11
|
|
|
13
12
|
const ICON_FILE_MAP = {
|
|
14
|
-
'Adobe Sign': IconAdobeSign,
|
|
15
13
|
'Google Docs': IconGoogleDocs,
|
|
16
14
|
'Google Docs (beta)': IconGoogleDocs,
|
|
17
15
|
'Google Sheets': IconGoogleSheets,
|
|
@@ -8,7 +8,7 @@ import BoxToolsInstallMessage from '../BoxToolsInstallMessage';
|
|
|
8
8
|
|
|
9
9
|
jest.mock('lodash/uniqueId', () => () => 'uniqueId');
|
|
10
10
|
|
|
11
|
-
const
|
|
11
|
+
const ABCD_INTEGRATION_ID = '1234';
|
|
12
12
|
const BLACKLISTED_ERROR_MESSAGE_KEY = 'boxToolsBlacklistedError';
|
|
13
13
|
const BOX_TOOLS_INSTALL_ERROR_MESSAGE_KEY = 'boxToolsInstallErrorMessage';
|
|
14
14
|
|
|
@@ -51,7 +51,7 @@ describe('elements/content-open-with/ContentOpenWith', () => {
|
|
|
51
51
|
|
|
52
52
|
describe('isBoxEditIntegration()', () => {
|
|
53
53
|
test('should determine if the integration is a Box Edit integration', () => {
|
|
54
|
-
expect(instance.isBoxEditIntegration(
|
|
54
|
+
expect(instance.isBoxEditIntegration(ABCD_INTEGRATION_ID)).toBe(false);
|
|
55
55
|
expect(instance.isBoxEditIntegration(BOX_EDIT_INTEGRATION_ID)).toBe(true);
|
|
56
56
|
expect(instance.isBoxEditIntegration(BOX_EDIT_SFC_INTEGRATION_ID)).toBe(true);
|
|
57
57
|
});
|
|
@@ -59,7 +59,7 @@ describe('elements/content-open-with/ContentOpenWith', () => {
|
|
|
59
59
|
|
|
60
60
|
describe('isBoxEditSFCIntegration()', () => {
|
|
61
61
|
test('should determine if the integration is a Box Edit SFC integration', () => {
|
|
62
|
-
expect(instance.isBoxEditSFCIntegration(
|
|
62
|
+
expect(instance.isBoxEditSFCIntegration(ABCD_INTEGRATION_ID)).toBe(false);
|
|
63
63
|
expect(instance.isBoxEditSFCIntegration(BOX_EDIT_INTEGRATION_ID)).toBe(false);
|
|
64
64
|
expect(instance.isBoxEditSFCIntegration(BOX_EDIT_SFC_INTEGRATION_ID)).toBe(true);
|
|
65
65
|
});
|
|
@@ -100,7 +100,7 @@ describe('elements/content-open-with/ContentOpenWith', () => {
|
|
|
100
100
|
mockIntegrations = [
|
|
101
101
|
{
|
|
102
102
|
isDisabled: false,
|
|
103
|
-
name: '
|
|
103
|
+
name: 'ABCD',
|
|
104
104
|
appIntegrationId: '2',
|
|
105
105
|
disabledReasons: [],
|
|
106
106
|
},
|
|
@@ -299,7 +299,7 @@ describe('elements/content-open-with/ContentOpenWith', () => {
|
|
|
299
299
|
|
|
300
300
|
displayIntegration = {
|
|
301
301
|
appIntegrationId: '1',
|
|
302
|
-
displayName: '
|
|
302
|
+
displayName: 'Google Docs',
|
|
303
303
|
};
|
|
304
304
|
|
|
305
305
|
instance.setState = jest.fn();
|
|
@@ -523,7 +523,7 @@ describe('elements/content-open-with/ContentOpenWith', () => {
|
|
|
523
523
|
const result = instance.getDisplayIntegration();
|
|
524
524
|
expect(result).toEqual(null);
|
|
525
525
|
|
|
526
|
-
instance.setState({ integrations: ['
|
|
526
|
+
instance.setState({ integrations: ['ABCD', 'Google'] });
|
|
527
527
|
const multipleResult = instance.getDisplayIntegration();
|
|
528
528
|
expect(multipleResult).toEqual(null);
|
|
529
529
|
|
|
@@ -534,9 +534,9 @@ describe('elements/content-open-with/ContentOpenWith', () => {
|
|
|
534
534
|
|
|
535
535
|
test('should return the sole integration as the display integration', () => {
|
|
536
536
|
instance = getWrapper({ fileId }).instance();
|
|
537
|
-
instance.setState({ integrations: ['
|
|
537
|
+
instance.setState({ integrations: ['ABCD'] });
|
|
538
538
|
const result = instance.getDisplayIntegration();
|
|
539
|
-
expect(result).toEqual('
|
|
539
|
+
expect(result).toEqual('ABCD');
|
|
540
540
|
});
|
|
541
541
|
});
|
|
542
542
|
|
|
@@ -547,7 +547,7 @@ describe('elements/content-open-with/ContentOpenWith', () => {
|
|
|
547
547
|
|
|
548
548
|
test('should render the Open With button if there is one or fewer integrations', () => {
|
|
549
549
|
instance.setState({
|
|
550
|
-
integrations: ['
|
|
550
|
+
integrations: ['ABCD'],
|
|
551
551
|
isLoading: false,
|
|
552
552
|
});
|
|
553
553
|
expect(wrapper).toMatchSnapshot();
|
|
@@ -555,7 +555,7 @@ describe('elements/content-open-with/ContentOpenWith', () => {
|
|
|
555
555
|
|
|
556
556
|
test('should render the Open With dropdown if there is more than one integration', () => {
|
|
557
557
|
instance.setState({
|
|
558
|
-
integrations: ['
|
|
558
|
+
integrations: ['ABCD', 'Google Suite'],
|
|
559
559
|
isLoading: false,
|
|
560
560
|
});
|
|
561
561
|
expect(wrapper).toMatchSnapshot();
|
|
@@ -563,7 +563,7 @@ describe('elements/content-open-with/ContentOpenWith', () => {
|
|
|
563
563
|
|
|
564
564
|
test('should render the PortalContainer if the integration is loading', () => {
|
|
565
565
|
instance.setState({
|
|
566
|
-
integrations: ['
|
|
566
|
+
integrations: ['ABCD', 'Google Suite'],
|
|
567
567
|
shouldRenderLoadingIntegrationPortal: true,
|
|
568
568
|
});
|
|
569
569
|
expect(wrapper).toMatchSnapshot();
|
|
@@ -571,7 +571,7 @@ describe('elements/content-open-with/ContentOpenWith', () => {
|
|
|
571
571
|
|
|
572
572
|
test('should render the PortalContainer if the integration is errored', () => {
|
|
573
573
|
instance.setState({
|
|
574
|
-
integrations: ['
|
|
574
|
+
integrations: ['ABCD', 'Google Suite'],
|
|
575
575
|
shouldRenderErrorIntegrationPortal: true,
|
|
576
576
|
});
|
|
577
577
|
expect(wrapper).toMatchSnapshot();
|
|
@@ -579,7 +579,7 @@ describe('elements/content-open-with/ContentOpenWith', () => {
|
|
|
579
579
|
|
|
580
580
|
test('should render the ExecuteForm if we have data to post', () => {
|
|
581
581
|
instance.setState({
|
|
582
|
-
integrations: ['
|
|
582
|
+
integrations: ['ABCD'],
|
|
583
583
|
executePostData: {
|
|
584
584
|
url: 'foo.com',
|
|
585
585
|
params: [{ foo: 'bar' }],
|
|
@@ -39,7 +39,7 @@ describe('elements/content-open-with/OpenWithButton', () => {
|
|
|
39
39
|
|
|
40
40
|
test('should render as disabled if the integration is disabled', () => {
|
|
41
41
|
const wrapper = getWrapper({
|
|
42
|
-
displayIntegration: { isDisabled: true, displayName: '
|
|
42
|
+
displayIntegration: { isDisabled: true, displayName: 'Google Docs' },
|
|
43
43
|
onClick: noop,
|
|
44
44
|
});
|
|
45
45
|
expect(wrapper).toMatchSnapshot();
|
|
@@ -11,10 +11,6 @@ describe('elements/content-open-with/OpenWithDropdownMenu', () => {
|
|
|
11
11
|
const integrations = [
|
|
12
12
|
{
|
|
13
13
|
appIntegrationId: 1,
|
|
14
|
-
displayName: 'Adobe Sign',
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
appIntegrationId: 2,
|
|
18
14
|
displayName: 'Google Docs',
|
|
19
15
|
},
|
|
20
16
|
];
|
|
@@ -23,7 +19,7 @@ describe('elements/content-open-with/OpenWithDropdownMenu', () => {
|
|
|
23
19
|
integrations,
|
|
24
20
|
onClick: noop,
|
|
25
21
|
});
|
|
26
|
-
expect(wrapper.find(Menu).children()).toHaveLength(
|
|
22
|
+
expect(wrapper.find(Menu).children()).toHaveLength(1);
|
|
27
23
|
|
|
28
24
|
expect(wrapper).toMatchSnapshot();
|
|
29
25
|
});
|
|
@@ -10,8 +10,8 @@ describe('elements/content-open-with/OpenWithDropdownMenuItem', () => {
|
|
|
10
10
|
test('should render the description and correct icon', () => {
|
|
11
11
|
const props = {
|
|
12
12
|
integration: {
|
|
13
|
-
displayName: '
|
|
14
|
-
displayDescription: 'Open With
|
|
13
|
+
displayName: 'Google Docs',
|
|
14
|
+
displayDescription: 'Open With Google Docs',
|
|
15
15
|
appIntegrationId: '1',
|
|
16
16
|
disabledReasons: [],
|
|
17
17
|
},
|