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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/date-picker/DatePicker.tsx"],"names":["React","defineMessages","injectIntl","FormattedMessage","classNames","Pikaday","noop","range","uniqueId","RESIN_TAG_TARGET","IconAlert","IconCalendar","IconClear","ButtonType","Label","PlainButton","Tooltip","TooltipPosition","TooltipTheme","convertDateToUnixMidnightTime","messages","previousMonth","nextMonth","iconAlertText","dateClearButton","chooseDate","TOGGLE_DELAY_MS","ENTER_KEY","ESCAPE_KEY","TAB_KEY","DateFormat","convertUTCToLocal","date","dateString","toUTCString","dateStringWithoutTimeZone","slice","Date","getFormattedDate","format","utcDate","ISO_STRING_DATE_FORMAT","toISOString","UTC_TIME_DATE_FORMAT","UTC_ISO_STRING_DATE_FORMAT","getTime","localesWhereWeekStartsOnSunday","DatePicker","onChange","props","formattedDate","formatValue","dateInputEl","focus","event","isKeyboardInputAllowed","isTextInputAllowed","datePicker","isVisible","stopPropagation","key","preventDefault","hide","onBlur","nextActiveElement","relatedTarget","document","activeElement","datePickerButtonEl","shouldStayClosed","setTimeout","inputDate","value","getDate","onSelectHandler","focusDatePicker","displayFormat","intl","formatDate","dateFormat","setDate","customInput","isAlwaysVisible","maxDate","minDate","yearRange","formatMessage","defaultValue","year","getFullYear","i18n","months","map","month","weekdays","weekday","weekdaysShort","bound","blurFieldOnSelect","setDefaultDate","defaultDate","undefined","field","firstDay","includes","locale","position","showDaysInNextAndPreviousMonths","onSelect","toString","formatDisplay","updateDateInputValue","show","nextProps","nextValue","nextMinDate","nextMaxDate","selectedDate","setMinDate","gotoDate","setMaxDate","destroy","className","description","error","errorTooltipPosition","hideLabel","hideOptionalLabel","inputProps","isClearable","isDisabled","isRequired","label","name","onFocus","placeholder","resinTarget","classes","hasError","ariaAttrs","errorMessageID","descriptionID","resinTargetAttr","valueAttr","onChangeAttr","ERROR","cloneElement","disabled","ref","required","handleInputBlur","handleInputKeyDown","clearDate","BUTTON","handleButtonClick","Component","UNIX_TIME_DATE_FORMAT","BOTTOM_LEFT","DatePickerBase"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { defineMessages, injectIntl, FormattedMessage, WrappedComponentProps } from 'react-intl';\n\nimport classNames from 'classnames';\nimport Pikaday from 'pikaday';\nimport noop from 'lodash/noop';\nimport range from 'lodash/range';\nimport uniqueId from 'lodash/uniqueId';\n\n// @ts-ignore flow import\nimport { RESIN_TAG_TARGET } from '../../common/variables';\nimport IconAlert from '../../icons/general/IconAlert';\nimport IconCalendar from '../../icons/general/IconCalendar';\nimport IconClear from '../../icons/general/IconClear';\n\nimport { ButtonType } from '../button';\nimport Label from '../label';\nimport PlainButton from '../plain-button';\nimport Tooltip, { TooltipPosition, TooltipTheme } from '../tooltip';\n\n// @ts-ignore flow import\nimport { convertDateToUnixMidnightTime } from '../../utils/datetime';\n\nimport './DatePicker.scss';\n\nconst messages = defineMessages({\n previousMonth: {\n defaultMessage: 'Previous Month',\n description: 'Previous month button for a date picker calendar',\n id: 'boxui.base.previousMonth',\n },\n nextMonth: {\n defaultMessage: 'Next Month',\n description: 'Next month button for a date picker calendar',\n id: 'boxui.base.nextMonth',\n },\n iconAlertText: {\n defaultMessage: 'Invalid Date',\n description: 'Date entered is invalid',\n id: 'boxui.datePicker.iconAlertText',\n },\n dateClearButton: {\n defaultMessage: 'Clear Date',\n description: 'Button for clearing date picker',\n id: 'boxui.datePicker.dateClearButton',\n },\n chooseDate: {\n defaultMessage: 'Choose Date',\n description: 'Button for opening date picker',\n id: 'boxui.datePicker.chooseDate',\n },\n});\n\nconst TOGGLE_DELAY_MS = 300;\nconst ENTER_KEY = 'Enter';\nconst ESCAPE_KEY = 'Escape';\nconst TAB_KEY = 'Tab';\n\nexport enum DateFormat {\n ISO_STRING_DATE_FORMAT = 'isoString',\n UTC_TIME_DATE_FORMAT = 'utcTime',\n UNIX_TIME_DATE_FORMAT = 'unixTime',\n UTC_ISO_STRING_DATE_FORMAT = 'utcISOString',\n}\n\n/**\n * Converts date from being relative to GMT, to being relative to browser\n * timezone. E.g., Thu Jun 29 2017 00:00:00 GMT =>\n * Thu Jun 29 2017 00:00:00 GMT-0700 (PDT)\n * @param {Date} date UTC date\n * @returns {Date} date Local date\n */\nfunction convertUTCToLocal(date: Date) {\n const dateString = date.toUTCString();\n // Remove ` GMT` from the timestamp string\n const dateStringWithoutTimeZone = dateString.slice(0, -4);\n return new Date(dateStringWithoutTimeZone);\n}\n\nfunction getFormattedDate(date: Date | null, format: DateFormat) {\n if (!date) {\n return '';\n }\n\n let utcDate;\n\n switch (format) {\n case DateFormat.ISO_STRING_DATE_FORMAT:\n return date.toISOString();\n case DateFormat.UTC_TIME_DATE_FORMAT:\n return convertDateToUnixMidnightTime(date);\n case DateFormat.UTC_ISO_STRING_DATE_FORMAT:\n utcDate = new Date(convertDateToUnixMidnightTime(date));\n return utcDate.toISOString();\n default:\n return date.getTime();\n }\n}\n\nconst localesWhereWeekStartsOnSunday = ['en-US', 'en-CA', 'jp-JP'];\n\nexport interface DatePickerProps extends WrappedComponentProps {\n /** Add a css class to the component */\n className?: string;\n /** Custom input field */\n customInput?: React.ReactElement;\n /** The format of the date value for form submit */\n dateFormat?: DateFormat;\n /** Some optional description */\n description?: React.ReactNode;\n /** The format of the date displayed in the input field */\n displayFormat?: Object;\n /** Error message */\n error?: React.ReactNode;\n /** Position of error message tooltip */\n errorTooltipPosition?: TooltipPosition;\n /** Whether to show or hide the field's label */\n hideLabel?: boolean;\n /** Whether show or hide the 'Optional' label */\n hideOptionalLabel?: boolean;\n /** Props that will be applied on the input element */\n inputProps?: Object;\n /** Is the calendar always visible */\n isAlwaysVisible?: boolean;\n /** Is input clearable */\n isClearable?: boolean;\n /** Is input disabled */\n isDisabled?: boolean;\n /** Is input required */\n isRequired?: boolean;\n /** Enables pikaday's default keyboard input support */\n isKeyboardInputAllowed?: boolean;\n /** Is user allowed to manually input a value (WARNING: this doesn't work with internationalization) */\n isTextInputAllowed?: boolean;\n /** Label displayed for the text input */\n label: React.ReactNode;\n /** The maximum date allowed to be selected */\n maxDate?: Date;\n /** The minimum date allowed to be selected */\n minDate?: Date;\n /** Name of the text input */\n name?: string;\n /** Called when input loses focus */\n onBlur?: ((event: React.FocusEvent<HTMLInputElement>) => void) | undefined;\n /** Called when input is changed, passed the selected Date */\n onChange?: Function;\n /** Called when input receives focus */\n onFocus?: ((event: React.FocusEvent<HTMLInputElement>) => void) | undefined;\n /** Placeholder for the text input */\n placeholder?: string;\n /** Resin tag */\n resinTarget?: string;\n /** Date to set the input */\n value?: Date | null;\n /** Number of years, or an array containing an upper and lower range */\n yearRange?: number | Array<number>;\n}\n\nclass DatePicker extends React.Component<DatePickerProps> {\n static defaultProps = {\n className: '',\n dateFormat: DateFormat.UNIX_TIME_DATE_FORMAT,\n displayFormat: {},\n error: '',\n errorTooltipPosition: TooltipPosition.BOTTOM_LEFT,\n inputProps: {},\n isClearable: true,\n isKeyboardInputAllowed: false,\n isTextInputAllowed: false,\n yearRange: 10,\n };\n\n errorMessageID = uniqueId('errorMessage');\n\n descriptionID = uniqueId('description');\n\n componentDidMount() {\n const {\n customInput,\n dateFormat,\n intl,\n isAlwaysVisible,\n isTextInputAllowed,\n maxDate,\n minDate,\n value,\n yearRange,\n } = this.props;\n const { formatDate, formatMessage } = intl;\n const { nextMonth, previousMonth } = messages;\n let defaultValue = value;\n // When date format is utcTime, initial date needs to be converted from being relative to GMT to being\n // relative to browser timezone\n if (dateFormat === DateFormat.UTC_TIME_DATE_FORMAT && value) {\n defaultValue = convertUTCToLocal(value);\n }\n // Make sure the DST detection algorithm in browsers is up-to-date\n const year = new Date().getFullYear();\n\n const i18n = {\n previousMonth: formatMessage(previousMonth),\n nextMonth: formatMessage(nextMonth),\n months: range(12).map(month => formatDate(new Date(year, month, 15), { month: 'long' })),\n // weekdays must start with Sunday, so array of dates below is May 1st-8th, 2016\n weekdays: range(1, 8).map(date => formatDate(new Date(2016, 4, date), { weekday: 'long' })),\n weekdaysShort: range(1, 8).map(date => formatDate(new Date(2016, 4, date), { weekday: 'narrow' })),\n };\n\n // If \"bound\" is true (default), the DatePicker will be appended at the end of the document, with absolute positioning\n // If \"bound\" is false, the DatePicker will be appended to the DOM right after the input, with relative positioning\n this.datePicker = new Pikaday({\n bound: !customInput,\n blurFieldOnSelect: false, // Available in pikaday > 1.5.1\n setDefaultDate: true,\n defaultDate: defaultValue === null ? undefined : defaultValue,\n field: this.dateInputEl,\n firstDay: localesWhereWeekStartsOnSunday.includes(intl.locale) ? 0 : 1,\n maxDate,\n minDate,\n position: 'bottom left',\n i18n,\n showDaysInNextAndPreviousMonths: true,\n onSelect: this.onSelectHandler,\n yearRange,\n toString: this.formatDisplay,\n });\n\n if (isTextInputAllowed) {\n this.updateDateInputValue(this.formatDisplay(defaultValue));\n }\n\n if (isAlwaysVisible) {\n this.datePicker.show();\n this.datePicker.hide = noop;\n }\n }\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillReceiveProps(nextProps: DatePickerProps) {\n if (!this.datePicker) return;\n\n const { value: nextValue = null, minDate: nextMinDate = null, maxDate: nextMaxDate = null } = nextProps;\n const { value, minDate, maxDate, isTextInputAllowed } = this.props;\n const selectedDate = this.datePicker && this.datePicker.getDate();\n\n // only set date when props change\n if (\n (nextValue && !value) ||\n (!nextValue && value) ||\n (nextValue && value && nextValue.getTime() !== value.getTime())\n ) {\n this.datePicker.setDate(nextValue);\n }\n // If text input is allowed the dateInputEl will act as an uncontrolled input and\n // we need to set formatted value manually.\n if (isTextInputAllowed) {\n this.updateDateInputValue(this.formatDisplay(nextValue));\n }\n if (\n (nextMinDate && !minDate) ||\n (nextMinDate && minDate) ||\n (nextMinDate && minDate && nextMinDate.getTime() !== minDate.getTime())\n ) {\n this.datePicker.setMinDate(nextMinDate);\n\n if (selectedDate && selectedDate < nextMinDate) {\n this.datePicker.gotoDate(nextMinDate);\n }\n }\n if (\n (nextMaxDate && !maxDate) ||\n (!nextMaxDate && maxDate) ||\n (nextMaxDate && maxDate && nextMaxDate.getTime() !== maxDate.getTime())\n ) {\n this.datePicker.setMaxDate(nextMaxDate);\n\n if (selectedDate && nextMaxDate && selectedDate > nextMaxDate) {\n this.datePicker.gotoDate(nextMaxDate);\n }\n }\n }\n\n componentWillUnmount() {\n if (this.datePicker) {\n this.datePicker.destroy();\n }\n }\n\n onSelectHandler = (date: Date | null = null) => {\n const { onChange } = this.props;\n if (onChange) {\n const formattedDate = this.formatValue(date);\n onChange(date, formattedDate);\n }\n };\n\n updateDateInputValue(value: string) {\n if (this.dateInputEl) {\n this.dateInputEl.value = value;\n }\n }\n\n dateInputEl: HTMLInputElement | null | undefined;\n\n datePicker: Pikaday | null = null;\n\n datePickerButtonEl: HTMLButtonElement | null | undefined;\n\n // Used to prevent bad sequences of hide/show when toggling the datepicker button\n shouldStayClosed = false;\n\n focusDatePicker = () => {\n // By default, this will open the datepicker too\n if (this.dateInputEl) {\n this.dateInputEl.focus();\n }\n };\n\n handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const { isKeyboardInputAllowed, isTextInputAllowed } = this.props;\n\n if (!isKeyboardInputAllowed && this.datePicker && this.datePicker.isVisible()) {\n event.stopPropagation();\n }\n\n // Stops up/down arrow & spacebar from moving page scroll position since pikaday does not preventDefault correctly\n if (!isTextInputAllowed && event.key !== TAB_KEY) {\n event.preventDefault();\n }\n\n if (isTextInputAllowed && event.key === ENTER_KEY) {\n event.preventDefault();\n }\n\n if (event.key === ENTER_KEY || event.key === ESCAPE_KEY || event.key === ' ') {\n // Since pikaday auto-selects when you move the select box, enter/space don't do anything but close the date picker\n if (this.datePicker && this.datePicker.isVisible()) {\n this.datePicker.hide();\n }\n }\n };\n\n handleInputBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const { onBlur, isTextInputAllowed } = this.props;\n\n const nextActiveElement = event.relatedTarget || document.activeElement;\n\n // This is mostly here to cancel out the pikaday hide() on blur\n if (\n this.datePicker &&\n this.datePicker.isVisible() &&\n nextActiveElement &&\n nextActiveElement === this.datePickerButtonEl\n ) {\n this.shouldStayClosed = true;\n setTimeout(() => {\n this.shouldStayClosed = false;\n }, TOGGLE_DELAY_MS);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n\n // Since we Fire parent onChange event if isTextInputAllowed\n // fire it on blur if the user typed a correct date format\n let inputDate: Date | null | undefined = null;\n\n if (this.dateInputEl) {\n inputDate = new Date(this.dateInputEl.value);\n }\n\n if (isTextInputAllowed && inputDate && inputDate.getDate()) {\n this.onSelectHandler(inputDate);\n }\n };\n\n handleButtonClick = (event: React.SyntheticEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.shouldStayClosed) {\n this.focusDatePicker();\n }\n };\n\n formatDisplay = (date?: Date | null): string => {\n const { displayFormat, intl } = this.props;\n return date ? intl.formatDate(date, displayFormat) : '';\n };\n\n formatValue = (date: Date | null): string | number => {\n const { dateFormat } = this.props;\n return dateFormat ? getFormattedDate(date, dateFormat) : '';\n };\n\n clearDate = (event: React.SyntheticEvent<HTMLButtonElement>) => {\n event.preventDefault(); // so datepicker doesn't open after clearing\n if (this.datePicker) {\n this.datePicker.setDate(null);\n }\n this.onSelectHandler(null);\n };\n\n render() {\n const {\n className,\n customInput,\n description,\n error,\n errorTooltipPosition,\n hideLabel,\n hideOptionalLabel,\n inputProps,\n intl,\n isAlwaysVisible,\n isClearable,\n isDisabled,\n isRequired,\n isTextInputAllowed,\n label,\n name,\n onFocus,\n placeholder,\n resinTarget,\n value,\n } = this.props;\n\n const { formatMessage } = intl;\n const classes = classNames(className, 'date-picker-wrapper', {\n 'show-clear-btn': !!value,\n 'show-error': !!error,\n });\n\n const hasError = !!error;\n\n const ariaAttrs = {\n 'aria-invalid': hasError,\n 'aria-required': isRequired,\n 'aria-errormessage': this.errorMessageID,\n 'aria-describedby': description ? this.descriptionID : undefined,\n };\n\n const resinTargetAttr = resinTarget ? { [RESIN_TAG_TARGET]: resinTarget } : {};\n\n const valueAttr = isTextInputAllowed\n ? { defaultValue: this.formatDisplay(value) }\n : { value: this.formatDisplay(value) };\n\n const onChangeAttr = isTextInputAllowed\n ? {}\n : {\n onChange: noop,\n };\n /* fixes proptype error about readonly field (not adding readonly so constraint validation works) */\n\n return (\n <div className={classes}>\n <span className=\"date-picker-icon-holder\">\n <Label hideLabel={hideLabel} showOptionalText={!hideOptionalLabel && !isRequired} text={label}>\n <>\n {!!description && (\n <div id={this.descriptionID} className=\"date-picker-description\">\n {description}\n </div>\n )}\n <Tooltip\n className=\"date-picker-error-tooltip\"\n isShown={!!error}\n position={errorTooltipPosition}\n text={error || ''}\n theme={TooltipTheme.ERROR}\n >\n {customInput ? (\n React.cloneElement(customInput, {\n disabled: isDisabled,\n ref: (ref: HTMLInputElement) => {\n this.dateInputEl = ref;\n },\n required: isRequired,\n ...resinTargetAttr,\n ...ariaAttrs,\n })\n ) : (\n <input\n ref={ref => {\n this.dateInputEl = ref;\n }}\n className=\"date-picker-input\"\n disabled={isDisabled}\n onBlur={this.handleInputBlur}\n placeholder={placeholder || formatMessage(messages.chooseDate)}\n required={isRequired}\n type=\"text\"\n {...onChangeAttr}\n onFocus={onFocus}\n onKeyDown={this.handleInputKeyDown}\n {...resinTargetAttr}\n {...ariaAttrs}\n {...inputProps}\n {...valueAttr}\n />\n )}\n </Tooltip>\n <span id={this.errorMessageID} className=\"accessibility-hidden\" role=\"alert\">\n {error}\n </span>\n </>\n </Label>\n {isClearable && !!value && !isDisabled ? (\n <PlainButton\n aria-label={formatMessage(messages.dateClearButton)}\n className=\"date-picker-clear-btn\"\n onClick={this.clearDate}\n type={ButtonType.BUTTON}\n >\n <IconClear height={12} width={12} />\n </PlainButton>\n ) : null}\n {error ? (\n <IconAlert\n className=\"date-picker-icon-alert\"\n height={13}\n title={<FormattedMessage {...messages.iconAlertText} />}\n width={13}\n />\n ) : null}\n {!isAlwaysVisible && (\n <PlainButton\n aria-label={formatMessage(messages.chooseDate)}\n className=\"date-picker-open-btn\"\n getDOMRef={ref => {\n this.datePickerButtonEl = ref;\n }}\n isDisabled={isDisabled}\n onClick={this.handleButtonClick}\n type={ButtonType.BUTTON}\n >\n <IconCalendar height={17} width={16} />\n </PlainButton>\n )}\n <input\n className=\"date-picker-unix-time-input\"\n name={name}\n readOnly\n type=\"hidden\"\n value={value ? this.formatValue(value) : ''}\n />\n </span>\n </div>\n );\n }\n}\n\nexport { DatePicker as DatePickerBase };\nexport default injectIntl(DatePicker);\n"],"file":"DatePicker.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/date-picker/DatePicker.tsx"],"names":["React","defineMessages","injectIntl","FormattedMessage","classNames","noop","range","uniqueId","RESIN_TAG_TARGET","Alert16","Calendar16","ClearBadge16","AccessiblePikaday","ButtonType","Label","PlainButton","Tooltip","TooltipPosition","TooltipTheme","convertDateToUnixMidnightTime","messages","previousMonth","nextMonth","iconAlertText","dateClearButton","chooseDate","dateInputRangeError","dateInputMaxError","dateInputMinError","TOGGLE_DELAY_MS","ENTER_KEY","ESCAPE_KEY","TAB_KEY","ISO_DATE_FORMAT_PATTERN","DateFormat","convertUTCToLocal","date","dateString","toUTCString","dateStringWithoutTimeZone","slice","Date","getFormattedDate","format","utcDate","ISO_STRING_DATE_FORMAT","toISOString","LOCALE_DATE_STRING_DATE_FORMAT","toLocaleDateString","UTC_TIME_DATE_FORMAT","UTC_ISO_STRING_DATE_FORMAT","getTime","localesWhereWeekStartsOnSunday","DatePicker","isDateInputInvalid","showDateInputError","props","onChange","isAccessible","state","formattedDate","formatValue","dateInputEl","datePicker","value","toString","isVisible","hide","focusDatePicker","setState","focus","intl","maxDate","minDate","formatMessage","dateInputError","maxLocaleDate","minLocaleDate","event","isKeyboardInputAllowed","isTextInputAllowed","stopPropagation","key","preventDefault","canUseDateInputType","target","parsedDate","parseDisplayDateType","setDate","onBlur","nextActiveElement","relatedTarget","document","activeElement","datePickerButtonEl","shouldStayClosed","setTimeout","inputDate","dateInputElVal","getDate","onSelectHandler","isDisabled","show","displayFormat","formatDate","test","dateFormat","createElement","type","e","isAlwaysVisible","accessibleAttrs","tabIndex","ref","handleButtonClick","BUTTON","customInput","yearRange","defaultValue","shouldUseAccessibleFallback","year","getFullYear","timeZone","i18n","months","map","month","weekdays","weekday","weekdaysShort","datePickerConfig","bound","blurFieldOnSelect","setDefaultDate","defaultDate","undefined","field","firstDay","includes","locale","position","showDaysInNextAndPreviousMonths","onSelect","formatDisplay","trigger","accessibleFieldEl","parse","formatDisplayDateType","keyboardInput","updateDateInputValue","nextProps","nextValue","nextMinDate","nextMaxDate","selectedDate","setMinDate","gotoDate","setMaxDate","destroy","className","description","error","errorTooltipPosition","hideLabel","hideOptionalLabel","inputProps","isClearable","isRequired","label","name","onFocus","placeholder","resinTarget","errorMessage","getDateInputError","hasError","hasValue","classes","ariaAttrs","errorMessageID","descriptionID","resinTargetAttr","valueAttr","onChangeAttr","handleOnChange","additionalAttrs","max","min","pattern","source","title","ERROR","cloneElement","disabled","required","handleInputBlur","handleOnClick","handleInputKeyDown","clearDate","renderCalendarButton","Component","UNIX_TIME_DATE_FORMAT","BOTTOM_LEFT","DatePickerBase"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { defineMessages, injectIntl, FormattedMessage, WrappedComponentProps } from 'react-intl';\n\nimport classNames from 'classnames';\nimport noop from 'lodash/noop';\nimport range from 'lodash/range';\nimport uniqueId from 'lodash/uniqueId';\n\n// @ts-ignore flow import\nimport { RESIN_TAG_TARGET } from '../../common/variables';\nimport Alert16 from '../../icon/fill/Alert16';\nimport Calendar16 from '../../icon/fill/Calendar16';\nimport ClearBadge16 from '../../icon/fill/ClearBadge16';\n\nimport AccessiblePikaday, { AccessiblePikadayOptions } from './AccessiblePikaday';\nimport { ButtonType } from '../button';\nimport Label from '../label';\nimport PlainButton from '../plain-button';\nimport Tooltip, { TooltipPosition, TooltipTheme } from '../tooltip';\n\n// @ts-ignore flow import\nimport { convertDateToUnixMidnightTime } from '../../utils/datetime';\n\nimport './DatePicker.scss';\n\nconst messages = defineMessages({\n previousMonth: {\n defaultMessage: 'Previous Month',\n description: 'Previous month button for a date picker calendar',\n id: 'boxui.base.previousMonth',\n },\n nextMonth: {\n defaultMessage: 'Next Month',\n description: 'Next month button for a date picker calendar',\n id: 'boxui.base.nextMonth',\n },\n iconAlertText: {\n defaultMessage: 'Invalid Date',\n description: 'Date entered is invalid',\n id: 'boxui.datePicker.iconAlertText',\n },\n dateClearButton: {\n defaultMessage: 'Clear Date',\n description: 'Button for clearing date picker',\n id: 'boxui.datePicker.dateClearButton',\n },\n chooseDate: {\n defaultMessage: 'Choose Date',\n description: 'Button for opening date picker',\n id: 'boxui.datePicker.chooseDate',\n },\n dateInputRangeError: {\n defaultMessage: 'Please enter a date between {minLocaleDate} and {maxLocaleDate}',\n description: 'Error message when date is out of the minimum and maximum range',\n id: 'boxui.datePicker.dateInputRangeError',\n },\n dateInputMaxError: {\n defaultMessage: 'Please enter a date before {maxLocaleDate}',\n description: 'Error message when date is later than the maximum date',\n id: 'boxui.datePicker.dateInputMaxError',\n },\n dateInputMinError: {\n defaultMessage: 'Please enter a date after {minLocaleDate}',\n description: 'Error message when date is earlier than the minimum date',\n id: 'boxui.datePicker.dateInputMinError',\n },\n});\n\nconst TOGGLE_DELAY_MS = 300;\nconst ENTER_KEY = 'Enter';\nconst ESCAPE_KEY = 'Escape';\nconst TAB_KEY = 'Tab';\n\nconst ISO_DATE_FORMAT_PATTERN = /^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/;\n\nexport enum DateFormat {\n ISO_STRING_DATE_FORMAT = 'isoString',\n LOCALE_DATE_STRING_DATE_FORMAT = 'localeDateString',\n UTC_TIME_DATE_FORMAT = 'utcTime',\n UNIX_TIME_DATE_FORMAT = 'unixTime',\n UTC_ISO_STRING_DATE_FORMAT = 'utcISOString',\n}\n\n/**\n * Converts date from being relative to GMT, to being relative to browser\n * timezone. E.g., Thu Jun 29 2017 00:00:00 GMT =>\n * Thu Jun 29 2017 00:00:00 GMT-0700 (PDT)\n * @param {Date} date UTC date\n * @returns {Date} date Local date\n */\nfunction convertUTCToLocal(date: Date) {\n const dateString = date.toUTCString();\n // Remove ` GMT` from the timestamp string\n const dateStringWithoutTimeZone = dateString.slice(0, -4);\n return new Date(dateStringWithoutTimeZone);\n}\n\nfunction getFormattedDate(date: Date | null, format: DateFormat) {\n if (!date) {\n return '';\n }\n\n let utcDate;\n\n switch (format) {\n case DateFormat.ISO_STRING_DATE_FORMAT:\n return date.toISOString();\n case DateFormat.LOCALE_DATE_STRING_DATE_FORMAT:\n return date.toLocaleDateString();\n case DateFormat.UTC_TIME_DATE_FORMAT:\n return convertDateToUnixMidnightTime(date);\n case DateFormat.UTC_ISO_STRING_DATE_FORMAT:\n utcDate = new Date(convertDateToUnixMidnightTime(date));\n return utcDate.toISOString();\n default:\n return date.getTime();\n }\n}\n\nconst localesWhereWeekStartsOnSunday = ['en-US', 'en-CA', 'jp-JP'];\n\nexport interface DatePickerProps extends WrappedComponentProps {\n /** Add a css class to the component */\n className?: string;\n /** Custom input field */\n customInput?: React.ReactElement;\n /** The format of the date value for form submit */\n dateFormat?: DateFormat;\n /** Some optional description */\n description?: React.ReactNode;\n /**\n * The format of the date displayed in the input field\n * @deprecated, will no longer be supported with accessible mode enabled (isAccessible = true)\n */\n displayFormat?: {\n [key: string]: string;\n };\n /** Error message */\n error?: React.ReactNode;\n /** Position of error message tooltip */\n errorTooltipPosition?: TooltipPosition;\n /** Whether to show or hide the field's label */\n hideLabel?: boolean;\n /** Whether show or hide the 'Optional' label */\n hideOptionalLabel?: boolean;\n /** Props that will be applied on the input element */\n inputProps?: Object;\n /** Does the date input meet accessibility standards */\n isAccessible?: boolean;\n /** Is the calendar always visible */\n isAlwaysVisible?: boolean;\n /** Is input clearable */\n isClearable?: boolean;\n /** Is input disabled */\n isDisabled?: boolean;\n /** Is input required */\n isRequired?: boolean;\n /** Enables pikaday's default keyboard input support */\n isKeyboardInputAllowed?: boolean;\n /** Is user allowed to manually input a value (WARNING: this doesn't work with internationalization) */\n isTextInputAllowed?: boolean;\n /** Label displayed for the text input */\n label: React.ReactNode;\n /** The maximum date allowed to be selected */\n maxDate?: Date;\n /** The minimum date allowed to be selected */\n minDate?: Date;\n /** Name of the text input */\n name?: string;\n /** Called when input loses focus */\n onBlur?: ((event: React.FocusEvent<HTMLInputElement>) => void) | undefined;\n /** Called when input is changed, passed the selected Date */\n onChange?: Function;\n /** Called when input receives focus */\n onFocus?: ((event: React.FocusEvent<HTMLInputElement>) => void) | undefined;\n /** Placeholder for the text input */\n placeholder?: string;\n /** Resin tag */\n resinTarget?: string;\n /** Date to set the input */\n value?: Date | null;\n /** Number of years, or an array containing an upper and lower range */\n yearRange?: number | Array<number>;\n}\n\ninterface DatePickerState {\n /** Is the date input invalid */\n isDateInputInvalid: boolean;\n /** Shows error message tooltip for invalid date input */\n showDateInputError: boolean;\n}\n\nclass DatePicker extends React.Component<DatePickerProps, DatePickerState> {\n static defaultProps = {\n className: '',\n dateFormat: DateFormat.UNIX_TIME_DATE_FORMAT,\n displayFormat: {},\n error: '',\n errorTooltipPosition: TooltipPosition.BOTTOM_LEFT,\n inputProps: {},\n isClearable: true,\n isKeyboardInputAllowed: false,\n isTextInputAllowed: false,\n yearRange: 10,\n };\n\n state = {\n isDateInputInvalid: false,\n showDateInputError: false,\n };\n\n errorMessageID = uniqueId('errorMessage');\n\n descriptionID = uniqueId('description');\n\n componentDidMount() {\n const {\n customInput,\n dateFormat,\n displayFormat,\n intl,\n isAccessible,\n isAlwaysVisible,\n isTextInputAllowed,\n maxDate,\n minDate,\n onChange,\n value,\n yearRange,\n } = this.props;\n const { formatDate, formatMessage } = intl;\n const { nextMonth, previousMonth } = messages;\n let defaultValue = value;\n\n if (isAccessible && this.shouldUseAccessibleFallback()) {\n this.canUseDateInputType = false;\n }\n\n // When date format is utcTime, initial date needs to be converted from being relative to GMT to being\n // relative to browser timezone\n if (dateFormat === DateFormat.UTC_TIME_DATE_FORMAT && value) {\n defaultValue = convertUTCToLocal(value);\n\n if (onChange) {\n const formattedDate = this.formatValue(defaultValue);\n onChange(defaultValue, formattedDate);\n }\n }\n // Make sure the DST detection algorithm in browsers is up-to-date\n const year = new Date().getFullYear();\n const { timeZone } = displayFormat || {};\n const i18n = {\n previousMonth: formatMessage(previousMonth),\n nextMonth: formatMessage(nextMonth),\n months: range(12).map(month =>\n formatDate(new Date(year, month, 15), {\n month: 'long',\n timeZone,\n }),\n ),\n // weekdays must start with Sunday, so array of dates below is May 1st-8th, 2016\n weekdays: range(1, 8).map(date =>\n formatDate(new Date(2016, 4, date), {\n weekday: 'long',\n timeZone,\n }),\n ),\n weekdaysShort: range(1, 8).map(date =>\n formatDate(new Date(2016, 4, date), {\n weekday: 'narrow',\n timeZone,\n }),\n ),\n };\n\n // If \"bound\" is true (default), the DatePicker will be appended at the end of the document, with absolute positioning\n // If \"bound\" is false, the DatePicker will be appended to the DOM right after the input, with relative positioning\n const datePickerConfig: AccessiblePikadayOptions = {\n bound: !customInput,\n blurFieldOnSelect: false, // Available in pikaday > 1.5.1\n setDefaultDate: true,\n defaultDate: defaultValue === null ? undefined : defaultValue,\n field: this.dateInputEl,\n firstDay: localesWhereWeekStartsOnSunday.includes(intl.locale) ? 0 : 1,\n maxDate,\n minDate,\n position: 'bottom left',\n i18n,\n showDaysInNextAndPreviousMonths: true,\n onSelect: this.onSelectHandler,\n yearRange,\n toString: this.formatDisplay,\n };\n\n if (isAccessible) {\n if (this.canUseDateInputType) {\n delete datePickerConfig.field;\n datePickerConfig.trigger = this.dateInputEl;\n datePickerConfig.accessibleFieldEl = this.dateInputEl;\n datePickerConfig.datePickerButtonEl = this.datePickerButtonEl;\n }\n\n datePickerConfig.parse = this.parseDisplayDateType;\n datePickerConfig.toString = this.formatDisplayDateType;\n datePickerConfig.keyboardInput = false;\n }\n\n this.datePicker = new AccessiblePikaday(datePickerConfig);\n\n if (isTextInputAllowed) {\n this.updateDateInputValue(this.formatDisplay(defaultValue));\n }\n\n if (isAlwaysVisible) {\n this.datePicker.show();\n this.datePicker.hide = noop;\n }\n }\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillReceiveProps(nextProps: DatePickerProps) {\n if (!this.datePicker) return;\n\n const { value: nextValue = null, minDate: nextMinDate = null, maxDate: nextMaxDate = null } = nextProps;\n const { value, minDate, maxDate, isTextInputAllowed } = this.props;\n const selectedDate = this.datePicker && this.datePicker.getDate();\n\n // only set date when props change\n if (\n (nextValue && !value) ||\n (!nextValue && value) ||\n (nextValue && value && nextValue.getTime() !== value.getTime())\n ) {\n this.datePicker.setDate(nextValue);\n }\n // If text input is allowed the dateInputEl will act as an uncontrolled input and\n // we need to set formatted value manually.\n if (isTextInputAllowed) {\n this.updateDateInputValue(this.formatDisplay(nextValue));\n }\n if (\n (nextMinDate && !minDate) ||\n (nextMinDate && minDate) ||\n (nextMinDate && minDate && nextMinDate.getTime() !== minDate.getTime())\n ) {\n this.datePicker.setMinDate(nextMinDate);\n\n if (selectedDate && selectedDate < nextMinDate) {\n this.datePicker.gotoDate(nextMinDate);\n }\n }\n if (\n (nextMaxDate && !maxDate) ||\n (!nextMaxDate && maxDate) ||\n (nextMaxDate && maxDate && nextMaxDate.getTime() !== maxDate.getTime())\n ) {\n this.datePicker.setMaxDate(nextMaxDate);\n\n if (selectedDate && nextMaxDate && selectedDate > nextMaxDate) {\n this.datePicker.gotoDate(nextMaxDate);\n }\n }\n }\n\n componentWillUnmount() {\n if (this.datePicker) {\n this.datePicker.destroy();\n }\n }\n\n onSelectHandler = (date: Date | null = null) => {\n const { onChange, isAccessible } = this.props;\n const { isDateInputInvalid } = this.state;\n\n if (onChange) {\n const formattedDate = this.formatValue(date);\n onChange(date, formattedDate);\n }\n\n if (isAccessible) {\n if (this.dateInputEl && this.datePicker) {\n // Required because Pikaday instance is unbound\n // See https://github.com/Pikaday/Pikaday#usage\n this.dateInputEl.value = this.datePicker.toString();\n }\n if (this.datePicker && this.datePicker.isVisible()) {\n this.datePicker.hide();\n this.focusDatePicker();\n }\n }\n\n if (isDateInputInvalid) {\n this.setState({ isDateInputInvalid: false, showDateInputError: false });\n }\n };\n\n updateDateInputValue(value: string) {\n if (this.dateInputEl) {\n this.dateInputEl.value = value;\n }\n }\n\n dateInputEl: HTMLInputElement | null | undefined;\n\n datePicker: Pikaday | null = null;\n\n datePickerButtonEl: HTMLButtonElement | HTMLDivElement | null | undefined;\n\n // Used to detect when a fallback is necessary when isAccessible is enabled\n canUseDateInputType = true;\n\n // Used to prevent bad sequences of hide/show when toggling the datepicker button\n shouldStayClosed = false;\n\n focusDatePicker = () => {\n // This also opens the date picker when isAccessible is disabled\n if (this.dateInputEl) {\n this.dateInputEl.focus();\n }\n };\n\n getDateInputError = () => {\n const { intl, maxDate = null, minDate = null } = this.props;\n const { showDateInputError } = this.state;\n const { formatMessage } = intl;\n\n if (!showDateInputError) return '';\n\n let dateInputError = '';\n const maxLocaleDate = getFormattedDate(maxDate, DateFormat.LOCALE_DATE_STRING_DATE_FORMAT);\n const minLocaleDate = getFormattedDate(minDate, DateFormat.LOCALE_DATE_STRING_DATE_FORMAT);\n\n if (maxLocaleDate && minLocaleDate) {\n dateInputError = formatMessage(messages.dateInputRangeError, { maxLocaleDate, minLocaleDate });\n } else if (maxLocaleDate) {\n dateInputError = formatMessage(messages.dateInputMaxError, { maxLocaleDate });\n } else if (minLocaleDate) {\n dateInputError = formatMessage(messages.dateInputMinError, { minLocaleDate });\n }\n\n return dateInputError;\n };\n\n handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const { isKeyboardInputAllowed, isTextInputAllowed, isAccessible } = this.props;\n\n if (!isKeyboardInputAllowed && this.datePicker && this.datePicker.isVisible()) {\n event.stopPropagation();\n }\n\n // Stops up/down arrow & spacebar from moving page scroll position since pikaday does not preventDefault correctly\n if (!(isTextInputAllowed || isAccessible) && event.key !== TAB_KEY) {\n event.preventDefault();\n }\n\n if ((isTextInputAllowed || (isAccessible && !this.canUseDateInputType)) && event.key === ENTER_KEY) {\n event.preventDefault();\n }\n\n // Stops enter & spacebar from opening up the browser's default date picker\n if (isAccessible && (event.key === ENTER_KEY || event.key === ' ')) {\n event.preventDefault();\n }\n\n if (event.key === ENTER_KEY || event.key === ESCAPE_KEY || event.key === ' ') {\n // Since pikaday auto-selects when you move the select box, enter/space don't do anything but close the date picker\n if (this.datePicker && this.datePicker.isVisible()) {\n this.datePicker.hide();\n }\n }\n };\n\n handleOnChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { isAccessible, maxDate, minDate, onChange } = this.props;\n const { isDateInputInvalid } = this.state;\n\n if (!isAccessible || !this.canUseDateInputType) {\n return;\n }\n\n if (this.datePicker && this.datePicker.isVisible()) {\n event.stopPropagation();\n }\n\n const { value } = event.target;\n if (this.datePicker && value) {\n const parsedDate = this.parseDisplayDateType(value);\n\n if (parsedDate) {\n if ((minDate && parsedDate < minDate) || (maxDate && parsedDate > maxDate)) {\n this.datePicker.setDate(null);\n this.setState({ isDateInputInvalid: true });\n return;\n }\n // Reset the error styling on valid date input\n if (isDateInputInvalid) {\n this.setState({ isDateInputInvalid: false, showDateInputError: false });\n }\n } else {\n this.setState({ isDateInputInvalid: true });\n }\n\n // Set date so Pikaday date picker value stays in sync with input\n this.datePicker.setDate(parsedDate, true);\n\n if (onChange) {\n const formattedDate = this.formatValue(parsedDate);\n onChange(parsedDate, formattedDate);\n }\n } else if (isDateInputInvalid) {\n this.setState({ isDateInputInvalid: false, showDateInputError: false });\n }\n };\n\n handleInputBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const { isAccessible, isTextInputAllowed, onBlur } = this.props;\n const { isDateInputInvalid } = this.state;\n const nextActiveElement = event.relatedTarget || document.activeElement;\n\n // This is mostly here to cancel out the pikaday hide() on blur\n if (\n this.datePicker &&\n this.datePicker.isVisible() &&\n nextActiveElement &&\n nextActiveElement === this.datePickerButtonEl\n ) {\n this.shouldStayClosed = true;\n setTimeout(() => {\n this.shouldStayClosed = false;\n }, TOGGLE_DELAY_MS);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n\n // Since we fire parent onChange event if isTextInputAllowed,\n // fire it on blur if the user typed a correct date format\n let inputDate: Date | null | undefined = null;\n\n if (this.dateInputEl) {\n let dateInputElVal = null;\n if (isAccessible && !this.canUseDateInputType) {\n dateInputElVal = this.parseDisplayDateType(this.dateInputEl.value);\n }\n inputDate = new Date(dateInputElVal || this.dateInputEl.value);\n }\n\n if ((isTextInputAllowed || (isAccessible && !this.canUseDateInputType)) && inputDate && inputDate.getDate()) {\n this.onSelectHandler(inputDate);\n }\n\n if (isAccessible && isDateInputInvalid) this.setState({ showDateInputError: true });\n };\n\n handleButtonClick = (event: React.SyntheticEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n const { isAccessible, isDisabled } = this.props;\n\n if (isAccessible) {\n if (isDisabled || !this.datePicker) {\n return;\n }\n\n if (this.datePicker.isVisible()) {\n this.datePicker.hide();\n this.focusDatePicker();\n } else {\n this.datePicker.show();\n }\n return;\n }\n\n if (!this.shouldStayClosed) {\n this.focusDatePicker();\n }\n };\n\n handleOnClick = (event: React.SyntheticEvent<HTMLInputElement>) => {\n const { isAccessible } = this.props;\n\n if (isAccessible) {\n // Suppress Firefox default behavior: clicking on input type \"date\"\n // opens the browser date picker.\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n formatDisplay = (date?: Date | null): string => {\n const { displayFormat, intl } = this.props;\n return date ? intl.formatDate(date, displayFormat) : '';\n };\n\n formatDisplayDateType = (date?: Date | null): string => {\n // Input type \"date\" only accepts the format YYYY-MM-DD\n return date ? getFormattedDate(date, DateFormat.UTC_ISO_STRING_DATE_FORMAT).slice(0, 10) : '';\n };\n\n parseDisplayDateType = (dateString?: string | null): Date | null => {\n if (dateString && ISO_DATE_FORMAT_PATTERN.test(dateString)) {\n // Calling new Date('YYYY-MM-DD') without 'T00:00:00' yields undesired results:\n // E.g. new Date('2017-06-01') => May 31 2017\n // E.g. new Date('2017-06-01T00:00:00') => June 01 2017\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date#parameters\n return new Date(`${dateString}T00:00:00`);\n }\n return null;\n };\n\n formatValue = (date: Date | null): string | number => {\n const { dateFormat } = this.props;\n return dateFormat ? getFormattedDate(date, dateFormat) : '';\n };\n\n clearDate = (event: React.SyntheticEvent<HTMLButtonElement>) => {\n // Prevents the date picker from opening after clearing\n event.preventDefault();\n const { isAccessible } = this.props;\n\n if (this.datePicker) {\n this.datePicker.setDate(null);\n }\n this.onSelectHandler(null);\n\n if (isAccessible) {\n this.focusDatePicker();\n }\n };\n\n /** Determines whether a new date input falls back to a text input or not */\n shouldUseAccessibleFallback = (): boolean => {\n const test = document.createElement('input');\n\n try {\n test.type = 'date';\n } catch (e) {\n // no-op\n }\n\n // If date input falls back to text input, show the fallback\n return test.type === 'text';\n };\n\n renderCalendarButton = () => {\n const { intl, isAccessible, isAlwaysVisible, isDisabled } = this.props;\n const { formatMessage } = intl;\n\n if (isAlwaysVisible) {\n return null;\n }\n\n // De-emphasizing the Pikaday date picker because it does not meet accessibility standards\n // Screenreaders & navigating via keyboard will no longer pick up on this element\n const accessibleAttrs = isAccessible ? { 'aria-hidden': true, tabIndex: -1 } : {};\n\n return (\n <PlainButton\n aria-label={formatMessage(messages.chooseDate)}\n className=\"date-picker-open-btn\"\n getDOMRef={ref => {\n this.datePickerButtonEl = ref;\n }}\n isDisabled={isDisabled}\n onClick={this.handleButtonClick}\n type={ButtonType.BUTTON}\n {...accessibleAttrs}\n >\n <Calendar16 />\n </PlainButton>\n );\n };\n\n render() {\n const {\n className,\n customInput,\n description,\n error,\n errorTooltipPosition,\n hideLabel,\n hideOptionalLabel,\n inputProps,\n intl,\n isAccessible,\n isClearable,\n isDisabled,\n isRequired,\n isTextInputAllowed,\n label,\n maxDate,\n minDate,\n name,\n onFocus,\n placeholder,\n resinTarget,\n value,\n } = this.props;\n const { isDateInputInvalid } = this.state;\n const { formatMessage } = intl;\n\n const errorMessage = error || this.getDateInputError();\n const hasError = !!errorMessage || isDateInputInvalid;\n const hasValue = !!value || isDateInputInvalid;\n\n const classes = classNames(className, 'date-picker-wrapper', {\n 'show-clear-btn': isClearable && hasValue && !isDisabled,\n 'show-error': hasError,\n });\n\n const ariaAttrs = {\n 'aria-invalid': hasError,\n 'aria-required': isRequired,\n 'aria-errormessage': this.errorMessageID,\n 'aria-describedby': description ? this.descriptionID : undefined,\n };\n\n const resinTargetAttr = resinTarget ? { [RESIN_TAG_TARGET]: resinTarget } : {};\n\n let valueAttr;\n if (isAccessible) {\n valueAttr = { defaultValue: this.formatDisplayDateType(value) };\n } else if (isTextInputAllowed) {\n valueAttr = { defaultValue: this.formatDisplay(value) };\n } else {\n valueAttr = { value: this.formatDisplay(value) };\n }\n\n let onChangeAttr;\n if (isAccessible && this.canUseDateInputType) {\n onChangeAttr = { onChange: this.handleOnChange };\n } else if (isTextInputAllowed || (isAccessible && !this.canUseDateInputType)) {\n onChangeAttr = {};\n } else {\n // Fixes prop type error about read-only field\n // Not adding readOnly so constraint validation works\n onChangeAttr = { onChange: noop };\n }\n\n let additionalAttrs;\n if (isAccessible && this.canUseDateInputType) {\n additionalAttrs = {\n max: this.formatDisplayDateType(maxDate) || '9999-12-31',\n min: this.formatDisplayDateType(minDate) || '0001-01-01',\n };\n } else if (isAccessible && !this.canUseDateInputType) {\n // \"name\" prop is required for pattern validation to be surfaced on form submit. See components/form-elements/form/Form.js\n // \"title\" prop is shown during constraint validation as a description of the pattern\n // See https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern#usability\n additionalAttrs = { name, pattern: ISO_DATE_FORMAT_PATTERN.source, title: 'YYYY-MM-DD' };\n } else {\n additionalAttrs = {};\n }\n\n return (\n <div className={classes}>\n <span className=\"date-picker-icon-holder\">\n <Label hideLabel={hideLabel} showOptionalText={!hideOptionalLabel && !isRequired} text={label}>\n <>\n {!!description && (\n <div id={this.descriptionID} className=\"date-picker-description\">\n {description}\n </div>\n )}\n <Tooltip\n className=\"date-picker-error-tooltip\"\n isShown={!!errorMessage}\n position={errorTooltipPosition}\n text={errorMessage || ''}\n theme={TooltipTheme.ERROR}\n >\n {customInput ? (\n React.cloneElement(customInput, {\n disabled: isDisabled,\n ref: (ref: HTMLInputElement) => {\n this.dateInputEl = ref;\n },\n required: isRequired,\n ...resinTargetAttr,\n ...ariaAttrs,\n })\n ) : (\n <input\n ref={ref => {\n this.dateInputEl = ref;\n }}\n className=\"date-picker-input\"\n disabled={isDisabled}\n onBlur={this.handleInputBlur}\n onClick={this.handleOnClick}\n placeholder={placeholder || formatMessage(messages.chooseDate)}\n required={isRequired}\n type={isAccessible && this.canUseDateInputType ? 'date' : 'text'}\n {...onChangeAttr}\n onFocus={onFocus}\n onKeyDown={this.handleInputKeyDown}\n {...resinTargetAttr}\n {...ariaAttrs}\n {...inputProps}\n {...valueAttr}\n {...additionalAttrs}\n />\n )}\n </Tooltip>\n <span id={this.errorMessageID} className=\"accessibility-hidden\" role=\"alert\">\n {errorMessage}\n </span>\n </>\n </Label>\n {isClearable && hasValue && !isDisabled ? (\n <PlainButton\n aria-label={formatMessage(messages.dateClearButton)}\n className=\"date-picker-clear-btn\"\n onClick={this.clearDate}\n type={ButtonType.BUTTON}\n >\n <ClearBadge16 />\n </PlainButton>\n ) : null}\n {hasError ? (\n <Alert16\n className=\"date-picker-icon-alert\"\n title={<FormattedMessage {...messages.iconAlertText} />}\n />\n ) : null}\n {this.renderCalendarButton()}\n <input\n className=\"date-picker-unix-time-input\"\n name={name}\n readOnly\n type=\"hidden\"\n value={value ? this.formatValue(value) : ''}\n />\n </span>\n </div>\n );\n }\n}\n\nexport { DatePicker as DatePickerBase };\nexport default injectIntl(DatePicker);\n"],"file":"DatePicker.js"}
|
|
@@ -23,10 +23,16 @@
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
.date-picker-input {
|
|
26
|
+
min-width: 160px;
|
|
27
|
+
height: 32px;
|
|
26
28
|
margin-top: 5px;
|
|
27
29
|
margin-bottom: 0;
|
|
28
|
-
padding-right:
|
|
30
|
+
padding-right: 6px;
|
|
29
31
|
text-overflow: ellipsis;
|
|
32
|
+
|
|
33
|
+
&::-webkit-calendar-picker-indicator {
|
|
34
|
+
display: none;
|
|
35
|
+
}
|
|
30
36
|
}
|
|
31
37
|
|
|
32
38
|
.date-picker-input:focus ~ .tooltip,
|
|
@@ -38,33 +44,27 @@
|
|
|
38
44
|
.date-picker-open-btn {
|
|
39
45
|
position: absolute;
|
|
40
46
|
right: 7px;
|
|
41
|
-
bottom:
|
|
42
|
-
display: inline-
|
|
43
|
-
|
|
47
|
+
bottom: 8px;
|
|
48
|
+
display: inline-flex;
|
|
49
|
+
background-color: $white;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.date-picker-open-btn:hover {
|
|
53
|
+
cursor: pointer;
|
|
44
54
|
}
|
|
45
55
|
|
|
46
56
|
.date-picker-clear-btn,
|
|
47
57
|
.date-picker-icon-alert {
|
|
48
58
|
position: absolute;
|
|
49
59
|
right: 30px;
|
|
50
|
-
bottom:
|
|
51
|
-
display: inline-
|
|
60
|
+
bottom: 8px;
|
|
61
|
+
display: inline-flex;
|
|
52
62
|
|
|
53
63
|
span {
|
|
54
64
|
display: inline-block;
|
|
55
65
|
}
|
|
56
66
|
}
|
|
57
67
|
|
|
58
|
-
.date-picker-clear-btn,
|
|
59
|
-
.date-picker-clear-btn:active,
|
|
60
|
-
.date-picker-clear-btn:focus,
|
|
61
|
-
.date-picker-clear-btn:hover,
|
|
62
|
-
.date-picker-clear-btn:active:focus,
|
|
63
|
-
.date-picker-clear-btn:active:hover,
|
|
64
|
-
.date-picker-clear-btn span {
|
|
65
|
-
height: 14px;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
68
|
.date-picker-clear-btn {
|
|
69
69
|
path {
|
|
70
70
|
transition: fill linear .1s;
|
|
@@ -76,7 +76,6 @@
|
|
|
76
76
|
> .date-picker-clear-btn:focus {
|
|
77
77
|
path {
|
|
78
78
|
fill: $bdl-gray-80;
|
|
79
|
-
path: $bdl-gray-80;
|
|
80
79
|
}
|
|
81
80
|
}
|
|
82
81
|
|
|
@@ -91,21 +90,32 @@
|
|
|
91
90
|
}
|
|
92
91
|
}
|
|
93
92
|
|
|
93
|
+
.date-picker-clear-btn:focus,
|
|
94
|
+
.date-picker-open-btn:focus {
|
|
95
|
+
margin: -1px;
|
|
96
|
+
border: 1px solid $bdl-box-blue;
|
|
97
|
+
border-radius: $bdl-border-radius-size;
|
|
98
|
+
}
|
|
99
|
+
|
|
94
100
|
.date-picker-icon-alert {
|
|
95
101
|
path {
|
|
96
102
|
fill: $bdl-watermelon-red;
|
|
97
103
|
}
|
|
98
104
|
}
|
|
99
105
|
|
|
106
|
+
&.show-error {
|
|
107
|
+
.date-picker-input {
|
|
108
|
+
border-color: $bdl-watermelon-red;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
100
112
|
&.show-clear-btn.show-error {
|
|
101
|
-
.date-picker-clear-btn
|
|
102
|
-
.date-picker-clear-btn:hover,
|
|
103
|
-
.date-picker-clear-btn:active {
|
|
113
|
+
.date-picker-clear-btn {
|
|
104
114
|
right: 25px;
|
|
105
115
|
}
|
|
106
116
|
|
|
107
|
-
.date-picker-
|
|
108
|
-
|
|
117
|
+
.date-picker-icon-alert {
|
|
118
|
+
right: 42px;
|
|
109
119
|
}
|
|
110
120
|
}
|
|
111
121
|
}
|
|
@@ -93,6 +93,16 @@ export var manuallyEditable = function manuallyEditable() {
|
|
|
93
93
|
value: new Date('September 27, 2019')
|
|
94
94
|
}));
|
|
95
95
|
};
|
|
96
|
+
export var manuallyEditableAndAccessible = function manuallyEditableAndAccessible() {
|
|
97
|
+
return React.createElement(IntlProvider, {
|
|
98
|
+
locale: "en-US"
|
|
99
|
+
}, React.createElement(DatePicker, {
|
|
100
|
+
isAccessible: true,
|
|
101
|
+
placeholder: "Date",
|
|
102
|
+
label: "Date Picker",
|
|
103
|
+
value: new Date('August 10, 2021')
|
|
104
|
+
}));
|
|
105
|
+
};
|
|
96
106
|
export var withLimitedDateRange = function withLimitedDateRange() {
|
|
97
107
|
var maxDate = new Date('February 25, 2021');
|
|
98
108
|
var sixDays = 1000 * 60 * 60 * 24 * 6;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/date-picker/DatePicker.stories.tsx"],"names":["React","IntlProvider","State","Store","TooltipPosition","DatePicker","notes","bdlGray10","basic","MIN_TIME","Date","TODAY","yearRange","getFullYear","componentStore","date","fromDate","toDate","state","day","month","year","set","basicWithKeyboardInput","withDescription","manuallyEditable","withLimitedDateRange","maxDate","sixDays","minDate","valueOf","alwaysVisibleWithCustomInputField","customInput","display","justifyContent","margin","width","position","left","top","zIndex","background","border","borderRadius","padding","height","outline","textAlign","toDateString","disabledWithErrorMessage","customErrorTooltipPosition","MIDDLE_RIGHT","withRange","MAX_TIME","withRangeAndKeyboardInput","title","component","parameters"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { IntlProvider } from 'react-intl';\nimport { State, Store } from '@sambego/storybook-state';\n\nimport { TooltipPosition } from '../tooltip';\nimport DatePicker from './DatePicker';\nimport notes from './DatePicker.stories.md';\n\nimport { bdlGray10 } from '../../styles/variables';\n\nexport const basic = () => {\n const MIN_TIME = new Date(0);\n const TODAY = new Date('July 18, 2018');\n const yearRange = [MIN_TIME.getFullYear(), TODAY.getFullYear()];\n const componentStore = new Store({\n date: new Date('July 9, 2018'),\n fromDate: null,\n toDate: null,\n });\n return (\n <State store={componentStore}>\n {state => (\n <IntlProvider locale=\"en-US\">\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n label=\"Date\"\n name=\"datepicker\"\n onChange={(date: Date) => {\n componentStore.set({ date });\n }}\n placeholder=\"Date\"\n value={state.date}\n yearRange={yearRange}\n />\n </IntlProvider>\n )}\n </State>\n );\n};\n\nexport const basicWithKeyboardInput = () => {\n const MIN_TIME = new Date(0);\n const TODAY = new Date('July 18, 2018');\n const yearRange = [MIN_TIME.getFullYear(), TODAY.getFullYear()];\n const componentStore = new Store({\n date: new Date('July 9, 2018'),\n fromDate: null,\n toDate: null,\n });\n return (\n <State store={componentStore}>\n {state => (\n <IntlProvider locale=\"en-US\">\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n isKeyboardInputAllowed\n label=\"Date\"\n name=\"datepicker\"\n onChange={(date: Date) => {\n componentStore.set({ date });\n }}\n placeholder=\"Date\"\n value={state.date}\n yearRange={yearRange}\n />\n </IntlProvider>\n )}\n </State>\n );\n};\n\nexport const withDescription = () => (\n <IntlProvider locale=\"en-US\">\n <DatePicker placeholder=\"Date\" description=\"Date of your birth\" label=\"Date Picker\" />\n </IntlProvider>\n);\n\nexport const manuallyEditable = () => (\n <IntlProvider locale=\"en-US\">\n <DatePicker isTextInputAllowed placeholder=\"Date\" label=\"Date Picker\" value={new Date('September 27, 2019')} />\n </IntlProvider>\n);\n\nexport const withLimitedDateRange = () => {\n const maxDate = new Date('February 25, 2021');\n const sixDays = 1000 * 60 * 60 * 24 * 6;\n const minDate = new Date(maxDate.valueOf() - sixDays);\n const componentStore = new Store({\n date: maxDate,\n fromDate: null,\n toDate: null,\n });\n return (\n <State store={componentStore}>\n {state => (\n <IntlProvider locale=\"en-US\">\n <DatePicker\n isTextInputAllowed\n placeholder=\"Date\"\n label=\"Date Picker\"\n minDate={minDate}\n maxDate={maxDate}\n value={state.date}\n />\n </IntlProvider>\n )}\n </State>\n );\n};\n\nexport const alwaysVisibleWithCustomInputField = () => {\n const componentStore = new Store({\n date: new Date('February 26, 2021'),\n fromDate: null,\n toDate: null,\n });\n\n return (\n <State store={componentStore}>\n {state => {\n const customInput = (\n <input\n style={{\n display: 'none',\n }}\n />\n );\n\n return (\n <IntlProvider locale=\"en-US\">\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n }}\n >\n <DatePicker\n className=\"date-picker-example\"\n customInput={customInput}\n displayFormat={{\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n }}\n hideLabel\n isAlwaysVisible\n isClearable={false}\n label=\"Date\"\n name=\"datepicker\"\n onChange={(date: Date) => {\n componentStore.set({ date });\n }}\n placeholder=\"Date\"\n value={state.date}\n />\n <div\n style={{\n margin: '20px 30px',\n width: '400px',\n }}\n >\n <p>\n In this example, the DatePicker is bound to a custom hidden input field. The right\n panel retains the same state as the DatePicker, but is not contained within the\n DatePicker component.\n </p>\n <div\n style={{\n position: 'relative',\n }}\n >\n <label\n htmlFor=\"date-picker-custom-input\"\n style={{\n position: 'absolute',\n left: '10px',\n top: '6px',\n zIndex: 100,\n }}\n >\n Start Date\n </label>\n <input\n disabled\n name=\"date-picker-custom-input\"\n style={{\n background: bdlGray10,\n border: 0,\n borderRadius: '4px',\n padding: '.5em .8em',\n width: '19em',\n height: '2.5em',\n top: 0,\n outline: 'none',\n textAlign: 'right',\n }}\n value={state.date.toDateString()}\n />\n </div>\n </div>\n </div>\n </IntlProvider>\n );\n }}\n </State>\n );\n};\n\nexport const disabledWithErrorMessage = () => (\n <IntlProvider locale=\"en-US\">\n <DatePicker\n isDisabled\n error=\"Error Message\"\n placeholder=\"Date\"\n name=\"datepicker\"\n label=\"Disabled Date Picker\"\n />\n </IntlProvider>\n);\n\nexport const customErrorTooltipPosition = () => (\n <IntlProvider locale=\"en-US\">\n <DatePicker\n error=\"Error Message\"\n errorTooltipPosition={TooltipPosition.MIDDLE_RIGHT}\n placeholder=\"Date\"\n name=\"datepicker\"\n label=\"Disabled Date Picker\"\n />\n </IntlProvider>\n);\n\nexport const withRange = () => {\n const MAX_TIME = new Date('3000-01-01T00:00:00.000Z');\n const MIN_TIME = new Date(0);\n const TODAY = new Date();\n const componentStore: Store<{ date: Date; fromDate: Date | null; toDate: Date | null }> = new Store({\n date: new Date(),\n fromDate: null,\n toDate: null,\n });\n return (\n <State store={componentStore}>\n {state => (\n <IntlProvider locale=\"en-US\">\n <div>\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n hideOptionalLabel\n label=\"From Date\"\n maxDate={state.toDate || MAX_TIME}\n name=\"datepicker-from\"\n onChange={(date: Date) => {\n componentStore.set({ fromDate: date });\n }}\n placeholder=\"Choose a Date\"\n value={state.fromDate}\n />\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n hideOptionalLabel\n label=\"To Date\"\n minDate={state.fromDate || MIN_TIME}\n maxDate={TODAY}\n name=\"datepicker-to\"\n onChange={(date: Date) => {\n componentStore.set({ toDate: date });\n }}\n placeholder=\"Choose a Date\"\n value={state.toDate}\n />\n </div>\n </IntlProvider>\n )}\n </State>\n );\n};\n\nexport const withRangeAndKeyboardInput = () => {\n const MAX_TIME = new Date('3000-01-01T00:00:00.000Z');\n const MIN_TIME = new Date(0);\n const TODAY = new Date();\n const componentStore: Store<{ date: Date; fromDate: Date | null; toDate: Date | null }> = new Store({\n date: new Date(),\n fromDate: null,\n toDate: null,\n });\n return (\n <State store={componentStore}>\n {state => (\n <IntlProvider locale=\"en-US\">\n <div>\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n hideOptionalLabel\n isKeyboardInputAllowed\n label=\"From Date\"\n maxDate={state.toDate || MAX_TIME}\n name=\"datepicker-from\"\n onChange={(date: Date) => {\n componentStore.set({ fromDate: date });\n }}\n placeholder=\"Choose a Date\"\n value={state.fromDate}\n />\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n hideOptionalLabel\n isKeyboardInputAllowed\n label=\"To Date\"\n minDate={state.fromDate || MIN_TIME}\n maxDate={TODAY}\n name=\"datepicker-to\"\n onChange={(date: Date) => {\n componentStore.set({ toDate: date });\n }}\n placeholder=\"Choose a Date\"\n value={state.toDate}\n />\n </div>\n </IntlProvider>\n )}\n </State>\n );\n};\n\nexport default {\n title: 'Components|DatePicker',\n component: DatePicker,\n parameters: {\n notes,\n },\n};\n"],"file":"DatePicker.stories.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/date-picker/DatePicker.stories.tsx"],"names":["React","IntlProvider","State","Store","TooltipPosition","DatePicker","notes","bdlGray10","basic","MIN_TIME","Date","TODAY","yearRange","getFullYear","componentStore","date","fromDate","toDate","state","day","month","year","set","basicWithKeyboardInput","withDescription","manuallyEditable","manuallyEditableAndAccessible","withLimitedDateRange","maxDate","sixDays","minDate","valueOf","alwaysVisibleWithCustomInputField","customInput","display","justifyContent","margin","width","position","left","top","zIndex","background","border","borderRadius","padding","height","outline","textAlign","toDateString","disabledWithErrorMessage","customErrorTooltipPosition","MIDDLE_RIGHT","withRange","MAX_TIME","withRangeAndKeyboardInput","title","component","parameters"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { IntlProvider } from 'react-intl';\nimport { State, Store } from '@sambego/storybook-state';\n\nimport { TooltipPosition } from '../tooltip';\nimport DatePicker from './DatePicker';\nimport notes from './DatePicker.stories.md';\n\nimport { bdlGray10 } from '../../styles/variables';\n\nexport const basic = () => {\n const MIN_TIME = new Date(0);\n const TODAY = new Date('July 18, 2018');\n const yearRange = [MIN_TIME.getFullYear(), TODAY.getFullYear()];\n const componentStore = new Store({\n date: new Date('July 9, 2018'),\n fromDate: null,\n toDate: null,\n });\n return (\n <State store={componentStore}>\n {state => (\n <IntlProvider locale=\"en-US\">\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n label=\"Date\"\n name=\"datepicker\"\n onChange={(date: Date) => {\n componentStore.set({ date });\n }}\n placeholder=\"Date\"\n value={state.date}\n yearRange={yearRange}\n />\n </IntlProvider>\n )}\n </State>\n );\n};\n\nexport const basicWithKeyboardInput = () => {\n const MIN_TIME = new Date(0);\n const TODAY = new Date('July 18, 2018');\n const yearRange = [MIN_TIME.getFullYear(), TODAY.getFullYear()];\n const componentStore = new Store({\n date: new Date('July 9, 2018'),\n fromDate: null,\n toDate: null,\n });\n return (\n <State store={componentStore}>\n {state => (\n <IntlProvider locale=\"en-US\">\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n isKeyboardInputAllowed\n label=\"Date\"\n name=\"datepicker\"\n onChange={(date: Date) => {\n componentStore.set({ date });\n }}\n placeholder=\"Date\"\n value={state.date}\n yearRange={yearRange}\n />\n </IntlProvider>\n )}\n </State>\n );\n};\n\nexport const withDescription = () => (\n <IntlProvider locale=\"en-US\">\n <DatePicker placeholder=\"Date\" description=\"Date of your birth\" label=\"Date Picker\" />\n </IntlProvider>\n);\n\nexport const manuallyEditable = () => (\n <IntlProvider locale=\"en-US\">\n <DatePicker isTextInputAllowed placeholder=\"Date\" label=\"Date Picker\" value={new Date('September 27, 2019')} />\n </IntlProvider>\n);\n\nexport const manuallyEditableAndAccessible = () => (\n <IntlProvider locale=\"en-US\">\n <DatePicker isAccessible placeholder=\"Date\" label=\"Date Picker\" value={new Date('August 10, 2021')} />\n </IntlProvider>\n);\n\nexport const withLimitedDateRange = () => {\n const maxDate = new Date('February 25, 2021');\n const sixDays = 1000 * 60 * 60 * 24 * 6;\n const minDate = new Date(maxDate.valueOf() - sixDays);\n const componentStore = new Store({\n date: maxDate,\n fromDate: null,\n toDate: null,\n });\n return (\n <State store={componentStore}>\n {state => (\n <IntlProvider locale=\"en-US\">\n <DatePicker\n isTextInputAllowed\n placeholder=\"Date\"\n label=\"Date Picker\"\n minDate={minDate}\n maxDate={maxDate}\n value={state.date}\n />\n </IntlProvider>\n )}\n </State>\n );\n};\n\nexport const alwaysVisibleWithCustomInputField = () => {\n const componentStore = new Store({\n date: new Date('February 26, 2021'),\n fromDate: null,\n toDate: null,\n });\n\n return (\n <State store={componentStore}>\n {state => {\n const customInput = (\n <input\n style={{\n display: 'none',\n }}\n />\n );\n\n return (\n <IntlProvider locale=\"en-US\">\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n }}\n >\n <DatePicker\n className=\"date-picker-example\"\n customInput={customInput}\n displayFormat={{\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n }}\n hideLabel\n isAlwaysVisible\n isClearable={false}\n label=\"Date\"\n name=\"datepicker\"\n onChange={(date: Date) => {\n componentStore.set({ date });\n }}\n placeholder=\"Date\"\n value={state.date}\n />\n <div\n style={{\n margin: '20px 30px',\n width: '400px',\n }}\n >\n <p>\n In this example, the DatePicker is bound to a custom hidden input field. The right\n panel retains the same state as the DatePicker, but is not contained within the\n DatePicker component.\n </p>\n <div\n style={{\n position: 'relative',\n }}\n >\n <label\n htmlFor=\"date-picker-custom-input\"\n style={{\n position: 'absolute',\n left: '10px',\n top: '6px',\n zIndex: 100,\n }}\n >\n Start Date\n </label>\n <input\n disabled\n name=\"date-picker-custom-input\"\n style={{\n background: bdlGray10,\n border: 0,\n borderRadius: '4px',\n padding: '.5em .8em',\n width: '19em',\n height: '2.5em',\n top: 0,\n outline: 'none',\n textAlign: 'right',\n }}\n value={state.date.toDateString()}\n />\n </div>\n </div>\n </div>\n </IntlProvider>\n );\n }}\n </State>\n );\n};\n\nexport const disabledWithErrorMessage = () => (\n <IntlProvider locale=\"en-US\">\n <DatePicker\n isDisabled\n error=\"Error Message\"\n placeholder=\"Date\"\n name=\"datepicker\"\n label=\"Disabled Date Picker\"\n />\n </IntlProvider>\n);\n\nexport const customErrorTooltipPosition = () => (\n <IntlProvider locale=\"en-US\">\n <DatePicker\n error=\"Error Message\"\n errorTooltipPosition={TooltipPosition.MIDDLE_RIGHT}\n placeholder=\"Date\"\n name=\"datepicker\"\n label=\"Disabled Date Picker\"\n />\n </IntlProvider>\n);\n\nexport const withRange = () => {\n const MAX_TIME = new Date('3000-01-01T00:00:00.000Z');\n const MIN_TIME = new Date(0);\n const TODAY = new Date();\n const componentStore: Store<{ date: Date; fromDate: Date | null; toDate: Date | null }> = new Store({\n date: new Date(),\n fromDate: null,\n toDate: null,\n });\n return (\n <State store={componentStore}>\n {state => (\n <IntlProvider locale=\"en-US\">\n <div>\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n hideOptionalLabel\n label=\"From Date\"\n maxDate={state.toDate || MAX_TIME}\n name=\"datepicker-from\"\n onChange={(date: Date) => {\n componentStore.set({ fromDate: date });\n }}\n placeholder=\"Choose a Date\"\n value={state.fromDate}\n />\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n hideOptionalLabel\n label=\"To Date\"\n minDate={state.fromDate || MIN_TIME}\n maxDate={TODAY}\n name=\"datepicker-to\"\n onChange={(date: Date) => {\n componentStore.set({ toDate: date });\n }}\n placeholder=\"Choose a Date\"\n value={state.toDate}\n />\n </div>\n </IntlProvider>\n )}\n </State>\n );\n};\n\nexport const withRangeAndKeyboardInput = () => {\n const MAX_TIME = new Date('3000-01-01T00:00:00.000Z');\n const MIN_TIME = new Date(0);\n const TODAY = new Date();\n const componentStore: Store<{ date: Date; fromDate: Date | null; toDate: Date | null }> = new Store({\n date: new Date(),\n fromDate: null,\n toDate: null,\n });\n return (\n <State store={componentStore}>\n {state => (\n <IntlProvider locale=\"en-US\">\n <div>\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n hideOptionalLabel\n isKeyboardInputAllowed\n label=\"From Date\"\n maxDate={state.toDate || MAX_TIME}\n name=\"datepicker-from\"\n onChange={(date: Date) => {\n componentStore.set({ fromDate: date });\n }}\n placeholder=\"Choose a Date\"\n value={state.fromDate}\n />\n <DatePicker\n className=\"date-picker-example\"\n displayFormat={{\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n }}\n hideOptionalLabel\n isKeyboardInputAllowed\n label=\"To Date\"\n minDate={state.fromDate || MIN_TIME}\n maxDate={TODAY}\n name=\"datepicker-to\"\n onChange={(date: Date) => {\n componentStore.set({ toDate: date });\n }}\n placeholder=\"Choose a Date\"\n value={state.toDate}\n />\n </div>\n </IntlProvider>\n )}\n </State>\n );\n};\n\nexport default {\n title: 'Components|DatePicker',\n component: DatePicker,\n parameters: {\n notes,\n },\n};\n"],"file":"DatePicker.stories.js"}
|
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
@include common-typography;
|
|
9
9
|
@include box-sizing;
|
|
10
10
|
|
|
11
|
-
position: relative;
|
|
12
11
|
z-index: 9999;
|
|
13
12
|
display: block;
|
|
14
13
|
color: $bdl-gray-80;
|
|
@@ -23,8 +22,15 @@
|
|
|
23
22
|
|
|
24
23
|
&.is-bound {
|
|
25
24
|
position: absolute;
|
|
26
|
-
margin-top: 5px;
|
|
27
25
|
box-shadow: 0 2px 6px 0 rgba(0, 0, 0, .1);
|
|
26
|
+
|
|
27
|
+
&.bottom-aligned {
|
|
28
|
+
margin-top: 5px;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
&.top-aligned {
|
|
32
|
+
margin-top: -5px;
|
|
33
|
+
}
|
|
28
34
|
}
|
|
29
35
|
}
|
|
30
36
|
|
|
@@ -21,9 +21,11 @@ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || func
|
|
|
21
21
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
22
22
|
|
|
23
23
|
import * as React from 'react';
|
|
24
|
+
import classNames from 'classnames';
|
|
24
25
|
import TetherComponent from 'react-tether';
|
|
25
26
|
import uniqueId from 'lodash/uniqueId';
|
|
26
27
|
import { KEYS } from '../../constants';
|
|
28
|
+
import FlyoutContext from './FlyoutContext';
|
|
27
29
|
import './Flyout.scss';
|
|
28
30
|
var BOTTOM_CENTER = 'bottom-center';
|
|
29
31
|
var BOTTOM_LEFT = 'bottom-left';
|
|
@@ -313,6 +315,7 @@ function (_React$Component) {
|
|
|
313
315
|
className = _this$props6$classNam === void 0 ? '' : _this$props6$classNam,
|
|
314
316
|
constrainToScrollParent = _this$props6.constrainToScrollParent,
|
|
315
317
|
constrainToWindow = _this$props6.constrainToWindow,
|
|
318
|
+
isResponsive = _this$props6.isResponsive,
|
|
316
319
|
offset = _this$props6.offset,
|
|
317
320
|
openOnHover = _this$props6.openOnHover,
|
|
318
321
|
position = _this$props6.position,
|
|
@@ -337,7 +340,7 @@ function (_React$Component) {
|
|
|
337
340
|
onMouseEnter: this.handleButtonHover,
|
|
338
341
|
onMouseLeave: this.handleButtonHoverLeave,
|
|
339
342
|
role: 'button',
|
|
340
|
-
|
|
343
|
+
tabIndex: '0',
|
|
341
344
|
'aria-haspopup': 'true',
|
|
342
345
|
'aria-expanded': isVisible ? 'true' : 'false'
|
|
343
346
|
};
|
|
@@ -379,7 +382,9 @@ function (_React$Component) {
|
|
|
379
382
|
targetAttachment: tetherPosition.targetAttachment,
|
|
380
383
|
enabled: isVisible,
|
|
381
384
|
classes: {
|
|
382
|
-
element:
|
|
385
|
+
element: classNames('flyout-overlay', {
|
|
386
|
+
'bdl-Flyout--responsive': isResponsive
|
|
387
|
+
}, className)
|
|
383
388
|
},
|
|
384
389
|
constraints: constraints
|
|
385
390
|
};
|
|
@@ -413,7 +418,11 @@ function (_React$Component) {
|
|
|
413
418
|
}
|
|
414
419
|
}
|
|
415
420
|
|
|
416
|
-
return React.createElement(TetherComponent, tetherProps, React.cloneElement(overlayButton, overlayButtonProps),
|
|
421
|
+
return React.createElement(TetherComponent, tetherProps, React.cloneElement(overlayButton, overlayButtonProps), React.createElement(FlyoutContext.Provider, {
|
|
422
|
+
value: {
|
|
423
|
+
closeOverlay: this.closeOverlay
|
|
424
|
+
}
|
|
425
|
+
}, isVisible ? React.cloneElement(overlayContent, overlayProps) : null));
|
|
417
426
|
}
|
|
418
427
|
}]);
|
|
419
428
|
|
|
@@ -427,6 +436,7 @@ _defineProperty(Flyout, "defaultProps", {
|
|
|
427
436
|
closeOnWindowBlur: false,
|
|
428
437
|
constrainToScrollParent: true,
|
|
429
438
|
constrainToWindow: false,
|
|
439
|
+
isResponsive: false,
|
|
430
440
|
isVisibleByDefault: false,
|
|
431
441
|
openOnHover: false,
|
|
432
442
|
openOnHoverDelayTimeout: 300,
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
// @flow
|
|
2
2
|
import * as React from 'react';
|
|
3
|
+
import classNames from 'classnames';
|
|
3
4
|
import TetherComponent from 'react-tether';
|
|
4
5
|
import uniqueId from 'lodash/uniqueId';
|
|
5
6
|
import { KEYS } from '../../constants';
|
|
6
7
|
|
|
8
|
+
import FlyoutContext from './FlyoutContext';
|
|
9
|
+
|
|
7
10
|
import './Flyout.scss';
|
|
8
11
|
|
|
9
12
|
const BOTTOM_CENTER = 'bottom-center';
|
|
@@ -116,6 +119,10 @@ export type FlyoutProps = {
|
|
|
116
119
|
* Sets tether constrain to window
|
|
117
120
|
*/
|
|
118
121
|
constrainToWindow?: boolean,
|
|
122
|
+
/**
|
|
123
|
+
* Toggles responsive behavior
|
|
124
|
+
*/
|
|
125
|
+
isResponsive?: boolean,
|
|
119
126
|
/**
|
|
120
127
|
* Whether overlay should be visible by default
|
|
121
128
|
*/
|
|
@@ -175,6 +182,7 @@ class Flyout extends React.Component<Props, State> {
|
|
|
175
182
|
closeOnWindowBlur: false,
|
|
176
183
|
constrainToScrollParent: true,
|
|
177
184
|
constrainToWindow: false,
|
|
185
|
+
isResponsive: false,
|
|
178
186
|
isVisibleByDefault: false,
|
|
179
187
|
openOnHover: false,
|
|
180
188
|
openOnHoverDelayTimeout: 300,
|
|
@@ -365,6 +373,7 @@ class Flyout extends React.Component<Props, State> {
|
|
|
365
373
|
className = '',
|
|
366
374
|
constrainToScrollParent,
|
|
367
375
|
constrainToWindow,
|
|
376
|
+
isResponsive,
|
|
368
377
|
offset,
|
|
369
378
|
openOnHover,
|
|
370
379
|
position,
|
|
@@ -389,7 +398,7 @@ class Flyout extends React.Component<Props, State> {
|
|
|
389
398
|
onMouseEnter: this.handleButtonHover,
|
|
390
399
|
onMouseLeave: this.handleButtonHoverLeave,
|
|
391
400
|
role: 'button',
|
|
392
|
-
|
|
401
|
+
tabIndex: '0',
|
|
393
402
|
'aria-haspopup': 'true',
|
|
394
403
|
'aria-expanded': isVisible ? 'true' : 'false',
|
|
395
404
|
};
|
|
@@ -432,7 +441,7 @@ class Flyout extends React.Component<Props, State> {
|
|
|
432
441
|
targetAttachment: tetherPosition.targetAttachment,
|
|
433
442
|
enabled: isVisible,
|
|
434
443
|
classes: {
|
|
435
|
-
element:
|
|
444
|
+
element: classNames('flyout-overlay', { 'bdl-Flyout--responsive': isResponsive }, className),
|
|
436
445
|
},
|
|
437
446
|
constraints,
|
|
438
447
|
};
|
|
@@ -465,7 +474,9 @@ class Flyout extends React.Component<Props, State> {
|
|
|
465
474
|
return (
|
|
466
475
|
<TetherComponent {...tetherProps}>
|
|
467
476
|
{React.cloneElement(overlayButton, overlayButtonProps)}
|
|
468
|
-
{
|
|
477
|
+
<FlyoutContext.Provider value={{ closeOverlay: this.closeOverlay }}>
|
|
478
|
+
{isVisible ? React.cloneElement(overlayContent, overlayProps) : null}
|
|
479
|
+
</FlyoutContext.Provider>
|
|
469
480
|
</TetherComponent>
|
|
470
481
|
);
|
|
471
482
|
}
|