@mattermost/compass-ui 0.1.0-alpha.26 → 0.1.0-alpha.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/compass-ui.css +16 -0
- package/dist/components/admin-console-footer/AdminConsoleFooter.css +1 -1
- package/dist/components/admin-console-footer/AdminConsoleFooter.module.scss.cjs +1 -1
- package/dist/components/admin-console-footer/AdminConsoleFooter.module.scss.js +7 -7
- package/dist/components/admin-console-header/AdminConsoleHeader.css +1 -1
- package/dist/components/admin-console-header/AdminConsoleHeader.module.scss.cjs +1 -1
- package/dist/components/admin-console-header/AdminConsoleHeader.module.scss.js +8 -8
- package/dist/components/admin-panel/AdminPanel.css +1 -1
- package/dist/components/admin-panel/AdminPanel.module.scss.cjs +1 -1
- package/dist/components/admin-panel/AdminPanel.module.scss.js +5 -5
- package/dist/components/admin-panel-footer/AdminPanelFooter.css +1 -1
- package/dist/components/admin-panel-footer/AdminPanelFooter.module.scss.cjs +1 -1
- package/dist/components/admin-panel-footer/AdminPanelFooter.module.scss.js +5 -5
- package/dist/components/admin-panel-header/AdminPanelHeader.cjs +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.cjs.map +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.css +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.d.ts +6 -0
- package/dist/components/admin-panel-header/AdminPanelHeader.d.ts.map +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.js +145 -109
- package/dist/components/admin-panel-header/AdminPanelHeader.js.map +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.module.scss.cjs +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.module.scss.js +11 -10
- package/dist/components/admin-panel-header/AdminPanelHeader.module.scss.js.map +1 -1
- package/dist/components/attachment-card/AttachmentCard.css +1 -1
- package/dist/components/attachment-card/AttachmentCard.module.scss.cjs +1 -1
- package/dist/components/attachment-card/AttachmentCard.module.scss.js +22 -19
- package/dist/components/attachment-card/AttachmentCard.module.scss.js.map +1 -1
- package/dist/components/button/Button.css +1 -1
- package/dist/components/button/Button.module.scss.cjs +1 -1
- package/dist/components/button/Button.module.scss.js +20 -19
- package/dist/components/button/Button.module.scss.js.map +1 -1
- package/dist/components/card-button/CardButton.css +1 -1
- package/dist/components/card-button/CardButton.module.scss.cjs +1 -1
- package/dist/components/card-button/CardButton.module.scss.js +7 -7
- package/dist/components/card-button/CardButtonGroup.css +1 -1
- package/dist/components/card-button/CardButtonGroup.module.scss.cjs +1 -1
- package/dist/components/card-button/CardButtonGroup.module.scss.js +1 -1
- package/dist/components/channel-info-msg-header/ChannelInfoMsgHeader.css +1 -1
- package/dist/components/channel-info-msg-header/ChannelInfoMsgHeader.module.scss.cjs +1 -1
- package/dist/components/channel-info-msg-header/ChannelInfoMsgHeader.module.scss.js +8 -8
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.cjs +1 -1
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.cjs.map +1 -1
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.css +1 -1
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.d.ts +66 -7
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.d.ts.map +1 -1
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.js +163 -93
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.js.map +1 -1
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.module.scss.cjs +1 -1
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.module.scss.js +35 -22
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.module.scss.js.map +1 -1
- package/dist/components/checkbox/Checkbox.css +1 -1
- package/dist/components/checkbox/Checkbox.module.scss.cjs +1 -1
- package/dist/components/checkbox/Checkbox.module.scss.js +7 -7
- package/dist/components/chip/Chip.cjs +1 -1
- package/dist/components/chip/Chip.cjs.map +1 -1
- package/dist/components/chip/Chip.css +1 -1
- package/dist/components/chip/Chip.d.ts.map +1 -1
- package/dist/components/chip/Chip.js +8 -8
- package/dist/components/chip/Chip.js.map +1 -1
- package/dist/components/chip/Chip.module.scss.cjs +1 -1
- package/dist/components/chip/Chip.module.scss.js +13 -10
- package/dist/components/chip/Chip.module.scss.js.map +1 -1
- package/dist/components/chip/ChipGroup.cjs +1 -1
- package/dist/components/chip/ChipGroup.cjs.map +1 -1
- package/dist/components/chip/ChipGroup.css +1 -1
- package/dist/components/chip/ChipGroup.d.ts +1 -1
- package/dist/components/chip/ChipGroup.d.ts.map +1 -1
- package/dist/components/chip/ChipGroup.js +30 -30
- package/dist/components/chip/ChipGroup.js.map +1 -1
- package/dist/components/chip/ChipGroup.module.scss.cjs +1 -1
- package/dist/components/chip/ChipGroup.module.scss.js +1 -1
- package/dist/components/combobox/Combobox.cjs +1 -1
- package/dist/components/combobox/Combobox.cjs.map +1 -1
- package/dist/components/combobox/Combobox.css +1 -1
- package/dist/components/combobox/Combobox.d.ts +10 -0
- package/dist/components/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.js +269 -252
- package/dist/components/combobox/Combobox.js.map +1 -1
- package/dist/components/combobox/Combobox.module.scss.cjs +1 -1
- package/dist/components/combobox/Combobox.module.scss.js +34 -31
- package/dist/components/combobox/Combobox.module.scss.js.map +1 -1
- package/dist/components/date-range-picker/DateRangePicker.cjs +1 -1
- package/dist/components/date-range-picker/DateRangePicker.cjs.map +1 -1
- package/dist/components/date-range-picker/DateRangePicker.css +1 -1
- package/dist/components/date-range-picker/DateRangePicker.d.ts +14 -1
- package/dist/components/date-range-picker/DateRangePicker.d.ts.map +1 -1
- package/dist/components/date-range-picker/DateRangePicker.js +217 -195
- package/dist/components/date-range-picker/DateRangePicker.js.map +1 -1
- package/dist/components/date-range-picker/DateRangePicker.module.scss.cjs +1 -1
- package/dist/components/date-range-picker/DateRangePicker.module.scss.js +29 -26
- package/dist/components/date-range-picker/DateRangePicker.module.scss.js.map +1 -1
- package/dist/components/divider/Divider.css +1 -1
- package/dist/components/divider/Divider.module.scss.cjs +1 -1
- package/dist/components/divider/Divider.module.scss.js +1 -1
- package/dist/components/dropdown/Dropdown.css +1 -1
- package/dist/components/dropdown/Dropdown.module.scss.cjs +1 -1
- package/dist/components/dropdown/Dropdown.module.scss.js +23 -22
- package/dist/components/dropdown/Dropdown.module.scss.js.map +1 -1
- package/dist/components/emoji/Emoji.css +1 -1
- package/dist/components/emoji/Emoji.module.scss.cjs +1 -1
- package/dist/components/emoji/Emoji.module.scss.js +12 -12
- package/dist/components/emoji-button/EmojiButton.css +1 -1
- package/dist/components/emoji-button/EmojiButton.module.scss.cjs +1 -1
- package/dist/components/emoji-button/EmojiButton.module.scss.js +12 -9
- package/dist/components/emoji-button/EmojiButton.module.scss.js.map +1 -1
- package/dist/components/emoji-popover/EmojiPopover.css +1 -1
- package/dist/components/emoji-popover/EmojiPopover.module.scss.cjs +1 -1
- package/dist/components/emoji-popover/EmojiPopover.module.scss.js +21 -21
- package/dist/components/empty-state/EmptyState.cjs +1 -1
- package/dist/components/empty-state/EmptyState.cjs.map +1 -1
- package/dist/components/empty-state/EmptyState.css +1 -1
- package/dist/components/empty-state/EmptyState.d.ts +21 -1
- package/dist/components/empty-state/EmptyState.d.ts.map +1 -1
- package/dist/components/empty-state/EmptyState.js +30 -23
- package/dist/components/empty-state/EmptyState.js.map +1 -1
- package/dist/components/empty-state/EmptyState.module.scss.cjs +1 -1
- package/dist/components/empty-state/EmptyState.module.scss.js +7 -7
- package/dist/components/empty-state/index.d.ts +1 -1
- package/dist/components/empty-state/index.d.ts.map +1 -1
- package/dist/components/feature-discovery-panel/FeatureDiscoveryPanel.css +1 -1
- package/dist/components/feature-discovery-panel/FeatureDiscoveryPanel.module.scss.cjs +1 -1
- package/dist/components/feature-discovery-panel/FeatureDiscoveryPanel.module.scss.js +9 -9
- package/dist/components/field/FieldClearButton.css +1 -1
- package/dist/components/field/FieldClearButton.module.scss.cjs +1 -1
- package/dist/components/field/FieldClearButton.module.scss.js +3 -3
- package/dist/components/field-message/FieldMessage.css +1 -1
- package/dist/components/field-message/FieldMessage.module.scss.cjs +1 -1
- package/dist/components/field-message/FieldMessage.module.scss.js +7 -7
- package/dist/components/global-banner/GlobalBanner.css +1 -1
- package/dist/components/global-banner/GlobalBanner.module.scss.cjs +1 -1
- package/dist/components/global-banner/GlobalBanner.module.scss.js +10 -10
- package/dist/components/icon/Icon.css +1 -1
- package/dist/components/icon/Icon.module.scss.cjs +1 -1
- package/dist/components/icon/Icon.module.scss.js +13 -13
- package/dist/components/icon-button/IconButton.css +1 -1
- package/dist/components/icon-button/IconButton.module.scss.cjs +1 -1
- package/dist/components/icon-button/IconButton.module.scss.js +19 -16
- package/dist/components/icon-button/IconButton.module.scss.js.map +1 -1
- package/dist/components/illustration/Illustration.css +1 -1
- package/dist/components/illustration/Illustration.module.scss.cjs +1 -1
- package/dist/components/illustration/Illustration.module.scss.js +1 -1
- package/dist/components/image-preview/ImagePreview.css +1 -1
- package/dist/components/image-preview/ImagePreview.module.scss.cjs +1 -1
- package/dist/components/image-preview/ImagePreview.module.scss.js +15 -15
- package/dist/components/link-preview/LinkPreview.css +1 -1
- package/dist/components/link-preview/LinkPreview.module.scss.cjs +1 -1
- package/dist/components/link-preview/LinkPreview.module.scss.js +14 -14
- package/dist/components/mention-badge/MentionBadge.css +1 -1
- package/dist/components/mention-badge/MentionBadge.module.scss.cjs +1 -1
- package/dist/components/mention-badge/MentionBadge.module.scss.js +9 -9
- package/dist/components/menu-group-heading/MenuGroupHeading.css +1 -1
- package/dist/components/menu-group-heading/MenuGroupHeading.module.scss.cjs +1 -1
- package/dist/components/menu-group-heading/MenuGroupHeading.module.scss.js +2 -2
- package/dist/components/menu-item/MenuItem.css +1 -1
- package/dist/components/menu-item/MenuItem.module.scss.cjs +1 -1
- package/dist/components/menu-item/MenuItem.module.scss.js +18 -18
- package/dist/components/message-actions/MessageActions.css +1 -1
- package/dist/components/message-actions/MessageActions.module.scss.cjs +1 -1
- package/dist/components/message-actions/MessageActions.module.scss.js +2 -2
- package/dist/components/message-header/MessageHeader.css +1 -1
- package/dist/components/message-header/MessageHeader.module.scss.cjs +1 -1
- package/dist/components/message-header/MessageHeader.module.scss.js +3 -3
- package/dist/components/message-separator/MessageSeparator.css +1 -1
- package/dist/components/message-separator/MessageSeparator.module.scss.cjs +1 -1
- package/dist/components/message-separator/MessageSeparator.module.scss.js +11 -11
- package/dist/components/modal/Modal.cjs +1 -1
- package/dist/components/modal/Modal.cjs.map +1 -1
- package/dist/components/modal/Modal.css +1 -1
- package/dist/components/modal/Modal.d.ts +11 -1
- package/dist/components/modal/Modal.d.ts.map +1 -1
- package/dist/components/modal/Modal.js +38 -36
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/modal/Modal.module.scss.cjs +1 -1
- package/dist/components/modal/Modal.module.scss.js +11 -11
- package/dist/components/modal/ModalOverlay.css +1 -1
- package/dist/components/modal/ModalOverlay.module.scss.cjs +1 -1
- package/dist/components/modal/ModalOverlay.module.scss.js +5 -5
- package/dist/components/modal-footer/ModalFooter.css +1 -1
- package/dist/components/modal-footer/ModalFooter.module.scss.cjs +1 -1
- package/dist/components/modal-footer/ModalFooter.module.scss.js +11 -11
- package/dist/components/modal-header/ModalHeader.cjs +1 -1
- package/dist/components/modal-header/ModalHeader.cjs.map +1 -1
- package/dist/components/modal-header/ModalHeader.css +1 -1
- package/dist/components/modal-header/ModalHeader.d.ts +13 -3
- package/dist/components/modal-header/ModalHeader.d.ts.map +1 -1
- package/dist/components/modal-header/ModalHeader.js +61 -55
- package/dist/components/modal-header/ModalHeader.js.map +1 -1
- package/dist/components/modal-header/ModalHeader.module.scss.cjs +1 -1
- package/dist/components/modal-header/ModalHeader.module.scss.js +18 -16
- package/dist/components/modal-header/ModalHeader.module.scss.js.map +1 -1
- package/dist/components/more-unreads-banner/MoreUnreadsBanner.css +1 -1
- package/dist/components/more-unreads-banner/MoreUnreadsBanner.module.scss.cjs +1 -1
- package/dist/components/more-unreads-banner/MoreUnreadsBanner.module.scss.js +8 -5
- package/dist/components/more-unreads-banner/MoreUnreadsBanner.module.scss.js.map +1 -1
- package/dist/components/new-message-banner/NewMessageBanner.css +1 -1
- package/dist/components/new-message-banner/NewMessageBanner.module.scss.cjs +1 -1
- package/dist/components/new-message-banner/NewMessageBanner.module.scss.js +9 -9
- package/dist/components/pagination-dots/PaginationDots.css +1 -1
- package/dist/components/pagination-dots/PaginationDots.module.scss.cjs +1 -1
- package/dist/components/pagination-dots/PaginationDots.module.scss.js +10 -10
- package/dist/components/password-input/PasswordInput.css +1 -1
- package/dist/components/password-input/PasswordInput.module.scss.cjs +1 -1
- package/dist/components/password-input/PasswordInput.module.scss.js +15 -14
- package/dist/components/password-input/PasswordInput.module.scss.js.map +1 -1
- package/dist/components/permalink-preview/PermalinkPreview.css +1 -1
- package/dist/components/permalink-preview/PermalinkPreview.module.scss.cjs +1 -1
- package/dist/components/permalink-preview/PermalinkPreview.module.scss.js +13 -13
- package/dist/components/pinned-saved-indicators/PinnedSavedIndicators.css +1 -1
- package/dist/components/pinned-saved-indicators/PinnedSavedIndicators.module.scss.cjs +1 -1
- package/dist/components/pinned-saved-indicators/PinnedSavedIndicators.module.scss.js +7 -7
- package/dist/components/popover-menu/PopoverMenu.css +1 -1
- package/dist/components/popover-menu/PopoverMenu.module.scss.cjs +1 -1
- package/dist/components/popover-menu/PopoverMenu.module.scss.js +13 -13
- package/dist/components/popover-notice/PopoverNotice.css +1 -1
- package/dist/components/popover-notice/PopoverNotice.module.scss.cjs +1 -1
- package/dist/components/popover-notice/PopoverNotice.module.scss.js +14 -14
- package/dist/components/profile-popover/ProfilePopover.css +1 -1
- package/dist/components/profile-popover/ProfilePopover.module.scss.cjs +1 -1
- package/dist/components/profile-popover/ProfilePopover.module.scss.js +33 -33
- package/dist/components/progress-bar/ProgressBar.css +1 -1
- package/dist/components/progress-bar/ProgressBar.module.scss.cjs +1 -1
- package/dist/components/progress-bar/ProgressBar.module.scss.js +9 -9
- package/dist/components/radio/Radio.css +1 -1
- package/dist/components/radio/Radio.module.scss.cjs +1 -1
- package/dist/components/radio/Radio.module.scss.js +12 -12
- package/dist/components/reaction-button/ReactionButton.css +1 -1
- package/dist/components/reaction-button/ReactionButton.module.scss.cjs +1 -1
- package/dist/components/reaction-button/ReactionButton.module.scss.js +8 -8
- package/dist/components/reactions-row/ReactionsRow.css +1 -1
- package/dist/components/reactions-row/ReactionsRow.module.scss.cjs +1 -1
- package/dist/components/reactions-row/ReactionsRow.module.scss.js +8 -8
- package/dist/components/right-sidebar-header/RightSidebarHeader.cjs +1 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.cjs.map +1 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.css +1 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.d.ts.map +1 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.js +39 -36
- package/dist/components/right-sidebar-header/RightSidebarHeader.js.map +1 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.module.scss.cjs +1 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.module.scss.js +12 -13
- package/dist/components/right-sidebar-header/RightSidebarHeader.module.scss.js.map +1 -1
- package/dist/components/scrollbar/Scrollbar.css +1 -1
- package/dist/components/scrollbar/Scrollbar.module.scss.cjs +1 -1
- package/dist/components/scrollbar/Scrollbar.module.scss.js +5 -5
- package/dist/components/search-input/SearchInput.css +1 -1
- package/dist/components/search-input/SearchInput.module.scss.cjs +1 -1
- package/dist/components/search-input/SearchInput.module.scss.js +15 -15
- package/dist/components/search-tip-banner/SearchTipBanner.css +1 -1
- package/dist/components/search-tip-banner/SearchTipBanner.module.scss.cjs +1 -1
- package/dist/components/search-tip-banner/SearchTipBanner.module.scss.js +3 -3
- package/dist/components/section-notice/SectionNotice.css +1 -1
- package/dist/components/section-notice/SectionNotice.module.scss.cjs +1 -1
- package/dist/components/section-notice/SectionNotice.module.scss.js +12 -12
- package/dist/components/segmented-control/SegmentedControl.cjs +2 -0
- package/dist/components/segmented-control/SegmentedControl.cjs.map +1 -0
- package/dist/components/segmented-control/SegmentedControl.css +1 -0
- package/dist/components/segmented-control/SegmentedControl.d.ts +71 -0
- package/dist/components/segmented-control/SegmentedControl.d.ts.map +1 -0
- package/dist/components/segmented-control/SegmentedControl.js +173 -0
- package/dist/components/segmented-control/SegmentedControl.js.map +1 -0
- package/dist/components/segmented-control/SegmentedControl.module.scss.cjs +2 -0
- package/dist/components/segmented-control/SegmentedControl.module.scss.cjs.map +1 -0
- package/dist/components/segmented-control/SegmentedControl.module.scss.js +20 -0
- package/dist/components/segmented-control/SegmentedControl.module.scss.js.map +1 -0
- package/dist/components/segmented-control/index.cjs +2 -0
- package/dist/components/segmented-control/index.cjs.map +1 -0
- package/dist/components/segmented-control/index.d.ts +3 -0
- package/dist/components/segmented-control/index.d.ts.map +1 -0
- package/dist/components/segmented-control/index.js +5 -0
- package/dist/components/segmented-control/index.js.map +1 -0
- package/dist/components/select/Select.cjs +1 -1
- package/dist/components/select/Select.cjs.map +1 -1
- package/dist/components/select/Select.css +1 -1
- package/dist/components/select/Select.d.ts +14 -0
- package/dist/components/select/Select.d.ts.map +1 -1
- package/dist/components/select/Select.js +151 -130
- package/dist/components/select/Select.js.map +1 -1
- package/dist/components/select/Select.module.scss.cjs +1 -1
- package/dist/components/select/Select.module.scss.js +28 -26
- package/dist/components/select/Select.module.scss.js.map +1 -1
- package/dist/components/shortcut-tag/ShortcutTag.css +1 -1
- package/dist/components/shortcut-tag/ShortcutTag.module.scss.cjs +1 -1
- package/dist/components/shortcut-tag/ShortcutTag.module.scss.js +7 -7
- package/dist/components/spinner/Spinner.css +1 -1
- package/dist/components/spinner/Spinner.module.scss.cjs +1 -1
- package/dist/components/spinner/Spinner.module.scss.js +2 -2
- package/dist/components/status-badge/StatusBadge.cjs +1 -1
- package/dist/components/status-badge/StatusBadge.cjs.map +1 -1
- package/dist/components/status-badge/StatusBadge.css +1 -1
- package/dist/components/status-badge/StatusBadge.d.ts +3 -1
- package/dist/components/status-badge/StatusBadge.d.ts.map +1 -1
- package/dist/components/status-badge/StatusBadge.js +16 -15
- package/dist/components/status-badge/StatusBadge.js.map +1 -1
- package/dist/components/status-badge/StatusBadge.module.scss.cjs +1 -1
- package/dist/components/status-badge/StatusBadge.module.scss.js +11 -11
- package/dist/components/switch/Switch.css +1 -1
- package/dist/components/switch/Switch.module.scss.cjs +1 -1
- package/dist/components/switch/Switch.module.scss.js +8 -8
- package/dist/components/tabs/Tabs.css +1 -1
- package/dist/components/tabs/Tabs.module.scss.cjs +1 -1
- package/dist/components/tabs/Tabs.module.scss.js +16 -13
- package/dist/components/tabs/Tabs.module.scss.js.map +1 -1
- package/dist/components/tag/Tag.css +1 -1
- package/dist/components/tag/Tag.module.scss.cjs +1 -1
- package/dist/components/tag/Tag.module.scss.js +11 -11
- package/dist/components/team-avatar/TeamAvatar.css +1 -1
- package/dist/components/team-avatar/TeamAvatar.module.scss.cjs +1 -1
- package/dist/components/team-avatar/TeamAvatar.module.scss.js +17 -17
- package/dist/components/text-area/TextArea.css +1 -1
- package/dist/components/text-area/TextArea.module.scss.cjs +1 -1
- package/dist/components/text-area/TextArea.module.scss.js +12 -12
- package/dist/components/text-input/TextInput.css +1 -1
- package/dist/components/text-input/TextInput.module.scss.cjs +1 -1
- package/dist/components/text-input/TextInput.module.scss.js +19 -19
- package/dist/components/thread-footer/ThreadFooter.cjs +1 -1
- package/dist/components/thread-footer/ThreadFooter.cjs.map +1 -1
- package/dist/components/thread-footer/ThreadFooter.css +1 -1
- package/dist/components/thread-footer/ThreadFooter.d.ts.map +1 -1
- package/dist/components/thread-footer/ThreadFooter.js +14 -14
- package/dist/components/thread-footer/ThreadFooter.js.map +1 -1
- package/dist/components/thread-footer/ThreadFooter.module.scss.cjs +1 -1
- package/dist/components/thread-footer/ThreadFooter.module.scss.js +19 -20
- package/dist/components/thread-footer/ThreadFooter.module.scss.js.map +1 -1
- package/dist/components/thread-list-item/ThreadListItem.css +1 -1
- package/dist/components/thread-list-item/ThreadListItem.module.scss.cjs +1 -1
- package/dist/components/thread-list-item/ThreadListItem.module.scss.js +26 -26
- package/dist/components/tile-button/TileButton.css +1 -1
- package/dist/components/tile-button/TileButton.module.scss.cjs +1 -1
- package/dist/components/tile-button/TileButton.module.scss.js +6 -6
- package/dist/components/toast/Toast.css +1 -1
- package/dist/components/toast/Toast.module.scss.cjs +1 -1
- package/dist/components/toast/Toast.module.scss.js +11 -11
- package/dist/components/tooltip/Tooltip.cjs +1 -1
- package/dist/components/tooltip/Tooltip.cjs.map +1 -1
- package/dist/components/tooltip/Tooltip.css +1 -1
- package/dist/components/tooltip/Tooltip.d.ts +10 -1
- package/dist/components/tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/tooltip/Tooltip.js +29 -17
- package/dist/components/tooltip/Tooltip.js.map +1 -1
- package/dist/components/tooltip/Tooltip.module.scss.cjs +1 -1
- package/dist/components/tooltip/Tooltip.module.scss.js +7 -6
- package/dist/components/tooltip/Tooltip.module.scss.js.map +1 -1
- package/dist/components/tooltip/index.d.ts +1 -1
- package/dist/components/tooltip/index.d.ts.map +1 -1
- package/dist/components/tour-point/TourPoint.css +1 -1
- package/dist/components/tour-point/TourPoint.module.scss.cjs +1 -1
- package/dist/components/tour-point/TourPoint.module.scss.js +28 -28
- package/dist/components/unread-badge/UnreadBadge.css +1 -1
- package/dist/components/unread-badge/UnreadBadge.module.scss.cjs +1 -1
- package/dist/components/unread-badge/UnreadBadge.module.scss.js +5 -5
- package/dist/components/user-avatar/UserAvatar.cjs +1 -1
- package/dist/components/user-avatar/UserAvatar.cjs.map +1 -1
- package/dist/components/user-avatar/UserAvatar.css +1 -1
- package/dist/components/user-avatar/UserAvatar.d.ts +18 -8
- package/dist/components/user-avatar/UserAvatar.d.ts.map +1 -1
- package/dist/components/user-avatar/UserAvatar.js +84 -52
- package/dist/components/user-avatar/UserAvatar.js.map +1 -1
- package/dist/components/user-avatar/UserAvatar.module.scss.cjs +1 -1
- package/dist/components/user-avatar/UserAvatar.module.scss.js +33 -26
- package/dist/components/user-avatar/UserAvatar.module.scss.js.map +1 -1
- package/dist/components/user-avatar-group/UserAvatarGroup.css +1 -1
- package/dist/components/user-avatar-group/UserAvatarGroup.module.scss.cjs +1 -1
- package/dist/components/user-avatar-group/UserAvatarGroup.module.scss.js +14 -14
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +57 -55
- package/dist/index.js.map +1 -1
- package/package.json +4 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker.cjs","sources":["../../../src/components/date-range-picker/DateRangePicker.tsx"],"sourcesContent":["import type { InputHTMLAttributes, KeyboardEvent, ReactNode } from 'react';\nimport { useState, useCallback, useEffect, useId, useRef } from 'react';\nimport Button from '@/components/button/Button';\nimport IconButton, {\n ICON_BUTTON_ICON_SIZES,\n} from '@/components/icon-button/IconButton';\nimport Icon from '@/components/icon/Icon';\nimport CalendarOutlineIcon from '@mattermost/compass-icons/components/calendar-outline';\nimport ChevronDownIcon from '@mattermost/compass-icons/components/chevron-down';\nimport ChevronLeftIcon from '@mattermost/compass-icons/components/chevron-left';\nimport ChevronRightIcon from '@mattermost/compass-icons/components/chevron-right';\nimport { useAnchoredPopupPortal } from '@/hooks/use-anchored-popup-portal';\nimport { useOutsideClose } from '@/hooks/use-outside-close';\nimport { usePopoverTransition } from '@/hooks/use-popover-transition';\nimport styles from './DateRangePicker.module.scss';\n\nexport type DateRangePickerMode = 'date' | 'range';\n\nexport interface DateRangePickerProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'value' | 'defaultValue' | 'onChange' | 'type' | 'size'\n> {\n /** Optional CSS class name applied to the root element. */\n className?: string;\n /** Selection mode: single date or range. Default: 'date'. */\n mode?: DateRangePickerMode;\n /** Controlled selected date (single mode). ISO string yyyy-mm-dd. */\n value?: string;\n /** Controlled start date (range mode). ISO string. */\n startDate?: string;\n /** Controlled end date (range mode). ISO string. */\n endDate?: string;\n /** Called when a date is selected (single mode). */\n onChange?: (date: string) => void;\n /** Called when range changes (range mode). */\n onRangeChange?: (start: string, end: string) => void;\n /** Portal mount node for the calendar; defaults to `document.body`. */\n portalContainer?: HTMLElement | null;\n /** Stacking order for the portaled calendar. */\n zIndex?: number;\n /** Trigger text when no date is selected. Default: \"mm/dd/yyyy\". */\n placeholder?: string;\n /** Formats an ISO `yyyy-mm-dd` date for the trigger. Default: `mm/dd/yyyy`. */\n formatDate?: (iso: string) => string;\n /** Twelve month names, January first. Default: English. */\n monthNames?: string[];\n /** Seven short weekday names, Sunday first. Default: \"Su\" … \"Sa\". */\n weekdayNames?: string[];\n /** Accessible name for the calendar dialog. Default: \"Date picker\". */\n dialogLabel?: string;\n /** Today button text. Default: \"Today\". */\n todayLabel?: ReactNode;\n /** Accessible name for the previous-month button. Default: \"Previous month\". */\n previousMonthLabel?: string;\n /** Accessible name for the next-month button. Default: \"Next month\". */\n nextMonthLabel?: string;\n}\n\n/** Approximate calendar panel height for the initial flip decision. */\nconst CALENDAR_PREFERRED_HEIGHT = 360;\n\nconst WEEKDAYS = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n\nconst MONTHS = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\n\nfunction formatDateDisplay(iso: string): string {\n if (!iso) return '';\n const [y, m, d] = iso.split('-');\n return `${m}/${d}/${y}`;\n}\n\nfunction toIso(year: number, month: number, day: number): string {\n return `${year}-${String(month + 1).padStart(2, '0')}-${String(day).padStart(2, '0')}`;\n}\n\nfunction getDaysInMonth(year: number, month: number): number {\n return new Date(year, month + 1, 0).getDate();\n}\n\nfunction getFirstDayOfWeek(year: number, month: number): number {\n return new Date(year, month, 1).getDay();\n}\n\nfunction isSameDay(a: string, b: string): boolean {\n return a === b;\n}\n\nfunction isBetween(date: string, start: string, end: string): boolean {\n if (!start || !end) return false;\n const [s, e] = start < end ? [start, end] : [end, start];\n return date > s && date < e;\n}\n\nfunction dayFromIso(iso: string, year: number, month: number): number | null {\n if (!iso) return null;\n const [y, m, d] = iso.split('-').map(Number);\n if (y === year && m === month + 1) return d;\n return null;\n}\n\n/**\n * The Date and Range Picker lets people pick a single date or a start/end range from a\n * calendar. The trigger is a compact field; the calendar is a popover anchored 4px below it.\n */\nexport default function DateRangePicker({\n className = '',\n mode = 'date',\n value,\n startDate,\n endDate,\n onChange,\n onRangeChange,\n disabled,\n id: idProp,\n portalContainer = null,\n zIndex,\n placeholder = 'mm/dd/yyyy',\n formatDate = formatDateDisplay,\n monthNames = MONTHS,\n weekdayNames = WEEKDAYS,\n dialogLabel = 'Date picker',\n todayLabel = 'Today',\n previousMonthLabel = 'Previous month',\n nextMonthLabel = 'Next month',\n}: DateRangePickerProps) {\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const popoverId = `${id}-popover`;\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n const gridRef = useRef<HTMLDivElement>(null);\n\n const today = new Date();\n const todayIso = toIso(\n today.getFullYear(),\n today.getMonth(),\n today.getDate(),\n );\n\n // Calendar display state\n const [displayYear, setDisplayYear] = useState(today.getFullYear());\n const [displayMonth, setDisplayMonth] = useState(today.getMonth());\n const [isOpen, setIsOpen] = useState(false);\n /** Roving tabindex day-of-month within the visible grid. */\n const [focusedDay, setFocusedDay] = useState(1);\n\n // Internal selection state (uncontrolled fallback)\n const [internalDate, setInternalDate] = useState('');\n const [internalStart, setInternalStart] = useState('');\n const [internalEnd, setInternalEnd] = useState('');\n\n const selectedDate = value ?? internalDate;\n const selectedStart = startDate ?? internalStart;\n const selectedEnd = endDate ?? internalEnd;\n\n const hasValue =\n mode === 'date' ? Boolean(selectedDate) : Boolean(selectedStart);\n\n const { mounted: popoverMounted, visible: popoverVisible } =\n usePopoverTransition(isOpen);\n\n const {\n placement,\n style: popoverStyle,\n portalRef,\n renderPortal,\n } = useAnchoredPopupPortal(triggerRef, popoverMounted, {\n preferredHeight: CALENDAR_PREFERRED_HEIGHT,\n portalContainer,\n zIndex,\n matchWidth: false,\n });\n\n const close = useCallback((restoreFocus = true) => {\n setIsOpen(false);\n if (restoreFocus) {\n triggerRef.current?.focus();\n }\n }, []);\n\n useOutsideClose(rootRef, isOpen, () => close(true), portalRef);\n\n useEffect(() => {\n if (!isOpen) return;\n function handleKeyDown(e: globalThis.KeyboardEvent) {\n if (e.key === 'Escape') {\n e.preventDefault();\n close(true);\n }\n }\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [isOpen, close]);\n\n // Close when focus leaves the field and the portaled calendar.\n useEffect(() => {\n if (!isOpen) return;\n\n function handleFocusIn(e: FocusEvent) {\n const target = e.target as Node | null;\n if (!target) return;\n if (rootRef.current?.contains(target)) return;\n if (portalRef.current?.contains(target)) return;\n close(false);\n }\n\n document.addEventListener('focusin', handleFocusIn);\n return () => document.removeEventListener('focusin', handleFocusIn);\n }, [isOpen, close, portalRef]);\n\n const daysInMonth = getDaysInMonth(displayYear, displayMonth);\n\n const initialFocusDay = useCallback(() => {\n if (mode === 'date') {\n const fromValue = dayFromIso(selectedDate, displayYear, displayMonth);\n if (fromValue) return fromValue;\n } else {\n const fromEnd = dayFromIso(selectedEnd, displayYear, displayMonth);\n if (fromEnd) return fromEnd;\n const fromStart = dayFromIso(selectedStart, displayYear, displayMonth);\n if (fromStart) return fromStart;\n }\n const fromToday = dayFromIso(todayIso, displayYear, displayMonth);\n if (fromToday) return fromToday;\n return 1;\n }, [\n mode,\n selectedDate,\n selectedStart,\n selectedEnd,\n displayYear,\n displayMonth,\n todayIso,\n ]);\n\n // On open: after the enter transition enables pointer-events, move focus\n // into the day grid (selected day, today, or the 1st).\n useEffect(() => {\n if (!isOpen || !popoverVisible) return;\n const day = initialFocusDay();\n setFocusedDay(day);\n const frame = requestAnimationFrame(() => {\n gridRef.current\n ?.querySelector<HTMLElement>(`[data-day=\"${day}\"]`)\n ?.focus();\n });\n return () => cancelAnimationFrame(frame);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- open/visible transition only\n }, [isOpen, popoverVisible]);\n\n const focusDayButton = useCallback((day: number) => {\n setFocusedDay(day);\n requestAnimationFrame(() => {\n gridRef.current\n ?.querySelector<HTMLElement>(`[data-day=\"${day}\"]`)\n ?.focus();\n });\n }, []);\n\n const handleToggle = useCallback(() => {\n if (disabled) return;\n setIsOpen((open) => !open);\n }, [disabled]);\n\n const handlePrevMonth = useCallback(() => {\n setDisplayMonth((m) => {\n if (m === 0) {\n setDisplayYear((y) => y - 1);\n return 11;\n }\n return m - 1;\n });\n }, []);\n\n const handleNextMonth = useCallback(() => {\n setDisplayMonth((m) => {\n if (m === 11) {\n setDisplayYear((y) => y + 1);\n return 0;\n }\n return m + 1;\n });\n }, []);\n\n const goToAdjacentMonth = useCallback(\n (direction: -1 | 1, preferDay: number) => {\n const nextMonth =\n direction === -1\n ? displayMonth === 0\n ? 11\n : displayMonth - 1\n : displayMonth === 11\n ? 0\n : displayMonth + 1;\n const nextYear =\n direction === -1\n ? displayMonth === 0\n ? displayYear - 1\n : displayYear\n : displayMonth === 11\n ? displayYear + 1\n : displayYear;\n const maxDay = getDaysInMonth(nextYear, nextMonth);\n setDisplayYear(nextYear);\n setDisplayMonth(nextMonth);\n focusDayButton(Math.min(preferDay, maxDay));\n },\n [displayMonth, displayYear, focusDayButton],\n );\n\n const handleToday = useCallback(() => {\n const now = new Date();\n setDisplayYear(now.getFullYear());\n setDisplayMonth(now.getMonth());\n focusDayButton(now.getDate());\n }, [focusDayButton]);\n\n const handleDayClick = useCallback(\n (iso: string, day: number) => {\n if (mode === 'date') {\n if (onChange) {\n onChange(iso);\n } else {\n setInternalDate(iso);\n }\n close(true);\n } else {\n // range mode: first click = start, second = end\n if (!selectedStart || (selectedStart && selectedEnd)) {\n setInternalStart(iso);\n setInternalEnd('');\n setFocusedDay(day);\n } else {\n const [s, e] =\n iso >= selectedStart ? [selectedStart, iso] : [iso, selectedStart];\n if (onRangeChange) {\n onRangeChange(s, e);\n } else {\n setInternalStart(s);\n setInternalEnd(e);\n }\n close(true);\n }\n }\n },\n [mode, selectedStart, selectedEnd, onChange, onRangeChange, close],\n );\n\n const moveFocusedDay = useCallback(\n (delta: number) => {\n const next = focusedDay + delta;\n if (next >= 1 && next <= daysInMonth) {\n focusDayButton(next);\n return;\n }\n if (next < 1) {\n goToAdjacentMonth(\n -1,\n getDaysInMonth(\n displayMonth === 0 ? displayYear - 1 : displayYear,\n displayMonth === 0 ? 11 : displayMonth - 1,\n ) + next,\n );\n } else {\n goToAdjacentMonth(1, next - daysInMonth);\n }\n },\n [\n focusedDay,\n daysInMonth,\n displayMonth,\n displayYear,\n focusDayButton,\n goToAdjacentMonth,\n ],\n );\n\n const handleDayKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>, day: number) => {\n switch (e.key) {\n case 'ArrowLeft':\n e.preventDefault();\n moveFocusedDay(-1);\n break;\n case 'ArrowRight':\n e.preventDefault();\n moveFocusedDay(1);\n break;\n case 'ArrowUp':\n e.preventDefault();\n moveFocusedDay(-7);\n break;\n case 'ArrowDown':\n e.preventDefault();\n moveFocusedDay(7);\n break;\n case 'Home':\n e.preventDefault();\n focusDayButton(1);\n break;\n case 'End':\n e.preventDefault();\n focusDayButton(daysInMonth);\n break;\n case 'PageUp':\n e.preventDefault();\n goToAdjacentMonth(-1, day);\n break;\n case 'PageDown':\n e.preventDefault();\n goToAdjacentMonth(1, day);\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n setFocusedDay(day);\n handleDayClick(toIso(displayYear, displayMonth, day), day);\n break;\n default:\n break;\n }\n },\n [\n moveFocusedDay,\n focusDayButton,\n daysInMonth,\n goToAdjacentMonth,\n handleDayClick,\n displayYear,\n displayMonth,\n ],\n );\n\n const handleTriggerKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (disabled) return;\n switch (e.key) {\n case 'Enter':\n case ' ':\n e.preventDefault();\n handleToggle();\n break;\n case 'ArrowDown':\n if (!isOpen) {\n e.preventDefault();\n setIsOpen(true);\n }\n break;\n case 'Escape':\n if (isOpen) {\n e.preventDefault();\n close(true);\n }\n break;\n default:\n break;\n }\n },\n [disabled, handleToggle, isOpen, close],\n );\n\n // Keep focusedDay in range when the month changes (nav buttons / PageUp).\n useEffect(() => {\n if (!isOpen) return;\n setFocusedDay((d) => Math.min(Math.max(1, d), daysInMonth));\n }, [isOpen, daysInMonth, displayMonth, displayYear]);\n\n // Build calendar grid\n const firstDay = getFirstDayOfWeek(displayYear, displayMonth);\n\n // Build weeks (rows of 7 cells; null = empty)\n const cells: (number | null)[] = [\n ...Array(firstDay).fill(null),\n ...Array.from({ length: daysInMonth }, (_, i) => i + 1),\n ];\n // Pad to complete last row\n while (cells.length % 7 !== 0) cells.push(null);\n const weeks: (number | null)[][] = [];\n for (let i = 0; i < cells.length; i += 7) weeks.push(cells.slice(i, i + 7));\n\n const displayValue =\n mode === 'date'\n ? selectedDate\n ? formatDate(selectedDate)\n : ''\n : selectedStart\n ? `${formatDate(selectedStart)}${selectedEnd ? ` – ${formatDate(selectedEnd)}` : ''}`\n : '';\n\n const rootClass = [\n styles['date-range-picker'],\n isOpen ? styles['date-range-picker--open'] : '',\n disabled ? styles['date-range-picker--disabled'] : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div ref={rootRef} className={rootClass}>\n {/* Trigger input */}\n <div\n ref={triggerRef}\n className={styles['date-range-picker__trigger']}\n role=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={isOpen}\n aria-controls={popoverMounted ? popoverId : undefined}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : 0}\n id={id}\n data-has-value={hasValue ? '' : undefined}\n onClick={handleToggle}\n onKeyDown={handleTriggerKeyDown}\n >\n <span\n className={styles['date-range-picker__calendar-icon']}\n aria-hidden\n >\n <Icon size=\"16\" glyph={<CalendarOutlineIcon />} />\n </span>\n <span className={styles['date-range-picker__value']}>\n {displayValue || placeholder}\n </span>\n <span className={styles['date-range-picker__chevron']} aria-hidden>\n <Icon size=\"16\" glyph={<ChevronDownIcon />} />\n </span>\n </div>\n\n {/* Calendar popover */}\n {popoverMounted &&\n renderPortal(\n <div\n ref={portalRef}\n id={popoverId}\n className={[\n styles['date-range-picker__popover'],\n placement === 'above'\n ? styles['date-range-picker__popover--above']\n : '',\n popoverVisible\n ? styles['date-range-picker__popover--visible']\n : '',\n ]\n .filter(Boolean)\n .join(' ')}\n style={popoverStyle}\n role=\"dialog\"\n aria-modal=\"false\"\n aria-label={dialogLabel}\n >\n {/* Header */}\n <div className={styles['date-range-picker__header']}>\n <span\n className={styles['date-range-picker__month-label']}\n aria-live=\"polite\"\n >\n {monthNames[displayMonth]} {displayYear}\n </span>\n <div className={styles['date-range-picker__header-actions']}>\n <Button\n emphasis=\"quaternary\"\n size=\"small\"\n leadingIcon={\n <Icon size=\"16\" glyph={<CalendarOutlineIcon />} />\n }\n onClick={handleToday}\n >\n {todayLabel}\n </Button>\n <div className={styles['date-range-picker__nav-buttons']}>\n <IconButton\n size=\"medium\"\n padding=\"compact\"\n icon={\n <Icon\n size={ICON_BUTTON_ICON_SIZES['medium']}\n glyph={<ChevronLeftIcon />}\n />\n }\n onClick={handlePrevMonth}\n aria-label={previousMonthLabel}\n />\n <IconButton\n size=\"medium\"\n padding=\"compact\"\n icon={\n <Icon\n size={ICON_BUTTON_ICON_SIZES['medium']}\n glyph={<ChevronRightIcon />}\n />\n }\n onClick={handleNextMonth}\n aria-label={nextMonthLabel}\n />\n </div>\n </div>\n </div>\n\n {/* Weekday headers */}\n <div className={styles['date-range-picker__weekdays']} aria-hidden>\n {weekdayNames.map((d, i) => (\n <span key={i} className={styles['date-range-picker__weekday']}>\n {d}\n </span>\n ))}\n </div>\n\n {/* Date grid */}\n <div\n ref={gridRef}\n className={styles['date-range-picker__grid']}\n role=\"grid\"\n aria-label={`${monthNames[displayMonth]} ${displayYear}`}\n >\n {weeks.map((week, wi) => (\n <div\n key={wi}\n className={styles['date-range-picker__week']}\n role=\"row\"\n >\n {week.map((day, di) => {\n if (day == null) {\n return (\n <span\n key={di}\n className={styles['date-range-picker__day-empty']}\n role=\"gridcell\"\n />\n );\n }\n const iso = toIso(displayYear, displayMonth, day);\n const isToday = iso === todayIso;\n const isRangeStart =\n mode === 'range' && isSameDay(iso, selectedStart);\n const isRangeEnd =\n mode === 'range' &&\n Boolean(selectedEnd) &&\n isSameDay(iso, selectedEnd);\n const isSelected =\n mode === 'date'\n ? isSameDay(iso, selectedDate)\n : isRangeStart || isRangeEnd;\n const isInRange =\n mode === 'range' &&\n isBetween(iso, selectedStart, selectedEnd);\n const hasRangeSpan =\n mode === 'range' &&\n Boolean(selectedStart) &&\n Boolean(selectedEnd) &&\n selectedStart !== selectedEnd;\n\n const cellClass = [\n styles['date-range-picker__day-cell'],\n isInRange\n ? styles['date-range-picker__day-cell--in-range']\n : '',\n hasRangeSpan && isRangeStart\n ? styles['date-range-picker__day-cell--range-start']\n : '',\n hasRangeSpan && isRangeEnd\n ? styles['date-range-picker__day-cell--range-end']\n : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n const dayClass = [\n styles['date-range-picker__day'],\n isSelected\n ? styles['date-range-picker__day--selected']\n : '',\n isToday && !isSelected\n ? styles['date-range-picker__day--today']\n : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div key={di} className={cellClass} role=\"gridcell\">\n <button\n type=\"button\"\n className={dayClass}\n data-day={day}\n tabIndex={focusedDay === day ? 0 : -1}\n onClick={() => handleDayClick(iso, day)}\n onFocus={() => setFocusedDay(day)}\n onKeyDown={(e) => handleDayKeyDown(e, day)}\n aria-label={iso}\n aria-pressed={isSelected}\n aria-current={isToday ? 'date' : undefined}\n >\n {day}\n </button>\n </div>\n );\n })}\n </div>\n ))}\n </div>\n </div>,\n )}\n </div>\n );\n}\n"],"names":["CALENDAR_PREFERRED_HEIGHT","WEEKDAYS","MONTHS","formatDateDisplay","iso","y","m","d","toIso","year","month","day","getDaysInMonth","getFirstDayOfWeek","isSameDay","a","b","isBetween","date","start","end","s","e","dayFromIso","DateRangePicker","className","mode","value","startDate","endDate","onChange","onRangeChange","disabled","idProp","portalContainer","zIndex","placeholder","formatDate","monthNames","weekdayNames","dialogLabel","todayLabel","previousMonthLabel","nextMonthLabel","generatedId","useId","id","popoverId","rootRef","useRef","triggerRef","gridRef","today","todayIso","displayYear","setDisplayYear","useState","displayMonth","setDisplayMonth","isOpen","setIsOpen","focusedDay","setFocusedDay","internalDate","setInternalDate","internalStart","setInternalStart","internalEnd","setInternalEnd","selectedDate","selectedStart","selectedEnd","hasValue","popoverMounted","popoverVisible","usePopoverTransition","placement","popoverStyle","portalRef","renderPortal","useAnchoredPopupPortal","close","useCallback","restoreFocus","_a","useOutsideClose","useEffect","handleKeyDown","handleFocusIn","target","_b","daysInMonth","initialFocusDay","fromValue","fromEnd","fromStart","fromToday","frame","focusDayButton","handleToggle","open","handlePrevMonth","handleNextMonth","goToAdjacentMonth","direction","preferDay","nextMonth","nextYear","maxDay","handleToday","now","handleDayClick","moveFocusedDay","delta","next","handleDayKeyDown","handleTriggerKeyDown","firstDay","cells","_","i","weeks","displayValue","rootClass","styles","jsxs","jsx","Icon","CalendarOutlineIcon","ChevronDownIcon","Button","IconButton","ICON_BUTTON_ICON_SIZES","ChevronLeftIcon","ChevronRightIcon","week","wi","di","isToday","isRangeStart","isRangeEnd","isSelected","isInRange","hasRangeSpan","cellClass","dayClass"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DateRangePicker.cjs","sources":["../../../src/components/date-range-picker/DateRangePicker.tsx"],"sourcesContent":["import type {\n FocusEvent as ReactFocusEvent,\n InputHTMLAttributes,\n KeyboardEvent,\n ReactNode,\n} from 'react';\nimport { useState, useCallback, useEffect, useId, useRef } from 'react';\nimport Button from '@/components/button/Button';\nimport IconButton, {\n ICON_BUTTON_ICON_SIZES,\n} from '@/components/icon-button/IconButton';\nimport Icon from '@/components/icon/Icon';\nimport CalendarOutlineIcon from '@mattermost/compass-icons/components/calendar-outline';\nimport ChevronDownIcon from '@mattermost/compass-icons/components/chevron-down';\nimport ChevronLeftIcon from '@mattermost/compass-icons/components/chevron-left';\nimport ChevronRightIcon from '@mattermost/compass-icons/components/chevron-right';\nimport { useAnchoredPopupPortal } from '@/hooks/use-anchored-popup-portal';\nimport { useOutsideClose } from '@/hooks/use-outside-close';\nimport { usePopoverTransition } from '@/hooks/use-popover-transition';\nimport styles from './DateRangePicker.module.scss';\n\nexport type DateRangePickerMode = 'date' | 'range';\n\nexport interface DateRangePickerProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'value' | 'defaultValue' | 'onChange' | 'type' | 'size'\n> {\n /** Optional CSS class name applied to the root element. */\n className?: string;\n /**\n * Floating label, like `TextInput`, `Select` and `Combobox`. It sits inside the field and\n * moves to the top edge when the field is open or has a value. It also names the trigger\n * for assistive technology (via `aria-labelledby`). Accepts translated nodes.\n */\n label?: ReactNode;\n /** Selection mode: single date or range. Default: 'date'. */\n mode?: DateRangePickerMode;\n /** Controlled selected date (single mode). ISO string yyyy-mm-dd. */\n value?: string;\n /** Controlled start date (range mode). ISO string. */\n startDate?: string;\n /** Controlled end date (range mode). ISO string. */\n endDate?: string;\n /** Called when a date is selected (single mode). */\n onChange?: (date: string) => void;\n /** Called when range changes (range mode). */\n onRangeChange?: (start: string, end: string) => void;\n /** Portal mount node for the calendar; defaults to `document.body`. */\n portalContainer?: HTMLElement | null;\n /** Stacking order for the portaled calendar. */\n zIndex?: number;\n /** Trigger text when no date is selected. Default: \"mm/dd/yyyy\". */\n placeholder?: string;\n /** Formats an ISO `yyyy-mm-dd` date for the trigger. Default: `mm/dd/yyyy`. */\n formatDate?: (iso: string) => string;\n /** Twelve month names, January first. Default: English. */\n monthNames?: string[];\n /**\n * Twelve short month names for the calendar header, January first. Default: the\n * first three letters of the English names, or `monthNames` unchanged when you pass\n * your own (so a translation is never cut mid-word). The full `monthNames` still\n * label the day grid for assistive technology.\n */\n shortMonthNames?: string[];\n /** Seven short weekday names, Sunday first. Default: \"Su\" … \"Sa\". */\n weekdayNames?: string[];\n /** Accessible name for the calendar dialog. Default: \"Date picker\". */\n dialogLabel?: string;\n /** Today button text. Default: \"Today\". */\n todayLabel?: ReactNode;\n /** Accessible name for the previous-month button. Default: \"Previous month\". */\n previousMonthLabel?: string;\n /** Accessible name for the next-month button. Default: \"Next month\". */\n nextMonthLabel?: string;\n}\n\n/** Approximate calendar panel height for the initial flip decision. */\nconst CALENDAR_PREFERRED_HEIGHT = 360;\n\nconst WEEKDAYS = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n\nconst MONTHS = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\n\nfunction formatDateDisplay(iso: string): string {\n if (!iso) return '';\n const [y, m, d] = iso.split('-');\n return `${m}/${d}/${y}`;\n}\n\nfunction toIso(year: number, month: number, day: number): string {\n return `${year}-${String(month + 1).padStart(2, '0')}-${String(day).padStart(2, '0')}`;\n}\n\nfunction getDaysInMonth(year: number, month: number): number {\n return new Date(year, month + 1, 0).getDate();\n}\n\nfunction getFirstDayOfWeek(year: number, month: number): number {\n return new Date(year, month, 1).getDay();\n}\n\nfunction isSameDay(a: string, b: string): boolean {\n return a === b;\n}\n\nfunction isBetween(date: string, start: string, end: string): boolean {\n if (!start || !end) return false;\n const [s, e] = start < end ? [start, end] : [end, start];\n return date > s && date < e;\n}\n\nfunction dayFromIso(iso: string, year: number, month: number): number | null {\n if (!iso) return null;\n const [y, m, d] = iso.split('-').map(Number);\n if (y === year && m === month + 1) return d;\n return null;\n}\n\n/**\n * The Date and Range Picker lets people pick a single date or a start/end range from a\n * calendar. The trigger is a compact field; the calendar is a popover anchored 4px below it.\n */\nexport default function DateRangePicker({\n className = '',\n mode = 'date',\n value,\n startDate,\n endDate,\n onChange,\n onRangeChange,\n disabled,\n required,\n onFocus,\n onBlur,\n label,\n id: idProp,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n portalContainer = null,\n zIndex,\n placeholder = 'mm/dd/yyyy',\n formatDate = formatDateDisplay,\n monthNames = MONTHS,\n shortMonthNames = monthNames === MONTHS\n ? MONTHS.map((month) => month.slice(0, 3))\n : monthNames,\n weekdayNames = WEEKDAYS,\n dialogLabel = 'Date picker',\n todayLabel = 'Today',\n previousMonthLabel = 'Previous month',\n nextMonthLabel = 'Next month',\n}: DateRangePickerProps) {\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const popoverId = `${id}-popover`;\n const labelId = `${id}-label`;\n const valueId = `${id}-value`;\n // `label` is a ReactNode, so `false` / `true` / '' (from `cond && 'Label'`) render nothing.\n const hasLabel = label != null && typeof label !== 'boolean' && label !== '';\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n const gridRef = useRef<HTMLDivElement>(null);\n\n const today = new Date();\n const todayIso = toIso(\n today.getFullYear(),\n today.getMonth(),\n today.getDate(),\n );\n\n // Calendar display state\n const [displayYear, setDisplayYear] = useState(today.getFullYear());\n const [displayMonth, setDisplayMonth] = useState(today.getMonth());\n const [isOpen, setIsOpen] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n /** Roving tabindex day-of-month within the visible grid. */\n const [focusedDay, setFocusedDay] = useState(1);\n\n // Internal selection state (uncontrolled fallback)\n const [internalDate, setInternalDate] = useState('');\n const [internalStart, setInternalStart] = useState('');\n const [internalEnd, setInternalEnd] = useState('');\n\n const selectedDate = value ?? internalDate;\n const selectedStart = startDate ?? internalStart;\n const selectedEnd = endDate ?? internalEnd;\n\n const hasValue =\n mode === 'date' ? Boolean(selectedDate) : Boolean(selectedStart);\n\n const { mounted: popoverMounted, visible: popoverVisible } =\n usePopoverTransition(isOpen);\n\n const {\n placement,\n style: popoverStyle,\n portalRef,\n renderPortal,\n } = useAnchoredPopupPortal(triggerRef, popoverMounted, {\n preferredHeight: CALENDAR_PREFERRED_HEIGHT,\n portalContainer,\n zIndex,\n matchWidth: false,\n });\n\n const close = useCallback((restoreFocus = true) => {\n setIsOpen(false);\n if (restoreFocus) {\n triggerRef.current?.focus();\n }\n }, []);\n\n useOutsideClose(rootRef, isOpen, () => close(true), portalRef);\n\n useEffect(() => {\n if (!isOpen) return;\n function handleKeyDown(e: globalThis.KeyboardEvent) {\n if (e.key === 'Escape') {\n e.preventDefault();\n close(true);\n }\n }\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [isOpen, close]);\n\n // Close when focus leaves the field and the portaled calendar.\n useEffect(() => {\n if (!isOpen) return;\n\n function handleFocusIn(e: FocusEvent) {\n const target = e.target as Node | null;\n if (!target) return;\n if (rootRef.current?.contains(target)) return;\n if (portalRef.current?.contains(target)) return;\n close(false);\n }\n\n document.addEventListener('focusin', handleFocusIn);\n return () => document.removeEventListener('focusin', handleFocusIn);\n }, [isOpen, close, portalRef]);\n\n const daysInMonth = getDaysInMonth(displayYear, displayMonth);\n\n const initialFocusDay = useCallback(() => {\n if (mode === 'date') {\n const fromValue = dayFromIso(selectedDate, displayYear, displayMonth);\n if (fromValue) return fromValue;\n } else {\n const fromEnd = dayFromIso(selectedEnd, displayYear, displayMonth);\n if (fromEnd) return fromEnd;\n const fromStart = dayFromIso(selectedStart, displayYear, displayMonth);\n if (fromStart) return fromStart;\n }\n const fromToday = dayFromIso(todayIso, displayYear, displayMonth);\n if (fromToday) return fromToday;\n return 1;\n }, [\n mode,\n selectedDate,\n selectedStart,\n selectedEnd,\n displayYear,\n displayMonth,\n todayIso,\n ]);\n\n // On open: after the enter transition enables pointer-events, move focus\n // into the day grid (selected day, today, or the 1st).\n useEffect(() => {\n if (!isOpen || !popoverVisible) return;\n const day = initialFocusDay();\n setFocusedDay(day);\n const frame = requestAnimationFrame(() => {\n gridRef.current\n ?.querySelector<HTMLElement>(`[data-day=\"${day}\"]`)\n ?.focus();\n });\n return () => cancelAnimationFrame(frame);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- open/visible transition only\n }, [isOpen, popoverVisible]);\n\n const focusDayButton = useCallback((day: number) => {\n setFocusedDay(day);\n requestAnimationFrame(() => {\n gridRef.current\n ?.querySelector<HTMLElement>(`[data-day=\"${day}\"]`)\n ?.focus();\n });\n }, []);\n\n const handleToggle = useCallback(() => {\n if (disabled) return;\n setIsOpen((open) => !open);\n }, [disabled]);\n\n const handlePrevMonth = useCallback(() => {\n setDisplayMonth((m) => {\n if (m === 0) {\n setDisplayYear((y) => y - 1);\n return 11;\n }\n return m - 1;\n });\n }, []);\n\n const handleNextMonth = useCallback(() => {\n setDisplayMonth((m) => {\n if (m === 11) {\n setDisplayYear((y) => y + 1);\n return 0;\n }\n return m + 1;\n });\n }, []);\n\n const goToAdjacentMonth = useCallback(\n (direction: -1 | 1, preferDay: number) => {\n const nextMonth =\n direction === -1\n ? displayMonth === 0\n ? 11\n : displayMonth - 1\n : displayMonth === 11\n ? 0\n : displayMonth + 1;\n const nextYear =\n direction === -1\n ? displayMonth === 0\n ? displayYear - 1\n : displayYear\n : displayMonth === 11\n ? displayYear + 1\n : displayYear;\n const maxDay = getDaysInMonth(nextYear, nextMonth);\n setDisplayYear(nextYear);\n setDisplayMonth(nextMonth);\n focusDayButton(Math.min(preferDay, maxDay));\n },\n [displayMonth, displayYear, focusDayButton],\n );\n\n const handleToday = useCallback(() => {\n const now = new Date();\n setDisplayYear(now.getFullYear());\n setDisplayMonth(now.getMonth());\n focusDayButton(now.getDate());\n }, [focusDayButton]);\n\n const handleDayClick = useCallback(\n (iso: string, day: number) => {\n if (mode === 'date') {\n if (onChange) {\n onChange(iso);\n } else {\n setInternalDate(iso);\n }\n close(true);\n } else {\n // range mode: first click = start, second = end\n if (!selectedStart || (selectedStart && selectedEnd)) {\n setInternalStart(iso);\n setInternalEnd('');\n setFocusedDay(day);\n } else {\n const [s, e] =\n iso >= selectedStart ? [selectedStart, iso] : [iso, selectedStart];\n if (onRangeChange) {\n onRangeChange(s, e);\n } else {\n setInternalStart(s);\n setInternalEnd(e);\n }\n close(true);\n }\n }\n },\n [mode, selectedStart, selectedEnd, onChange, onRangeChange, close],\n );\n\n const moveFocusedDay = useCallback(\n (delta: number) => {\n const next = focusedDay + delta;\n if (next >= 1 && next <= daysInMonth) {\n focusDayButton(next);\n return;\n }\n if (next < 1) {\n goToAdjacentMonth(\n -1,\n getDaysInMonth(\n displayMonth === 0 ? displayYear - 1 : displayYear,\n displayMonth === 0 ? 11 : displayMonth - 1,\n ) + next,\n );\n } else {\n goToAdjacentMonth(1, next - daysInMonth);\n }\n },\n [\n focusedDay,\n daysInMonth,\n displayMonth,\n displayYear,\n focusDayButton,\n goToAdjacentMonth,\n ],\n );\n\n const handleDayKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>, day: number) => {\n switch (e.key) {\n case 'ArrowLeft':\n e.preventDefault();\n moveFocusedDay(-1);\n break;\n case 'ArrowRight':\n e.preventDefault();\n moveFocusedDay(1);\n break;\n case 'ArrowUp':\n e.preventDefault();\n moveFocusedDay(-7);\n break;\n case 'ArrowDown':\n e.preventDefault();\n moveFocusedDay(7);\n break;\n case 'Home':\n e.preventDefault();\n focusDayButton(1);\n break;\n case 'End':\n e.preventDefault();\n focusDayButton(daysInMonth);\n break;\n case 'PageUp':\n e.preventDefault();\n goToAdjacentMonth(-1, day);\n break;\n case 'PageDown':\n e.preventDefault();\n goToAdjacentMonth(1, day);\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n setFocusedDay(day);\n handleDayClick(toIso(displayYear, displayMonth, day), day);\n break;\n default:\n break;\n }\n },\n [\n moveFocusedDay,\n focusDayButton,\n daysInMonth,\n goToAdjacentMonth,\n handleDayClick,\n displayYear,\n displayMonth,\n ],\n );\n\n const handleTriggerKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (disabled) return;\n switch (e.key) {\n case 'Enter':\n case ' ':\n e.preventDefault();\n handleToggle();\n break;\n case 'ArrowDown':\n if (!isOpen) {\n e.preventDefault();\n setIsOpen(true);\n }\n break;\n case 'Escape':\n if (isOpen) {\n e.preventDefault();\n close(true);\n }\n break;\n default:\n break;\n }\n },\n [disabled, handleToggle, isOpen, close],\n );\n\n // Keep focusedDay in range when the month changes (nav buttons / PageUp).\n useEffect(() => {\n if (!isOpen) return;\n setFocusedDay((d) => Math.min(Math.max(1, d), daysInMonth));\n }, [isOpen, daysInMonth, displayMonth, displayYear]);\n\n // Build calendar grid\n const firstDay = getFirstDayOfWeek(displayYear, displayMonth);\n\n // Build weeks (rows of 7 cells; null = empty)\n const cells: (number | null)[] = [\n ...Array(firstDay).fill(null),\n ...Array.from({ length: daysInMonth }, (_, i) => i + 1),\n ];\n // Pad to complete last row\n while (cells.length % 7 !== 0) cells.push(null);\n const weeks: (number | null)[][] = [];\n for (let i = 0; i < cells.length; i += 7) weeks.push(cells.slice(i, i + 7));\n\n const displayValue =\n mode === 'date'\n ? selectedDate\n ? formatDate(selectedDate)\n : ''\n : selectedStart\n ? `${formatDate(selectedStart)}${selectedEnd ? ` – ${formatDate(selectedEnd)}` : ''}`\n : '';\n\n const rootClass = [\n styles['date-range-picker'],\n isOpen ? styles['date-range-picker--open'] : '',\n disabled ? styles['date-range-picker--disabled'] : '',\n hasLabel ? styles['date-range-picker--has-label'] : '',\n hasLabel && (isOpen || isFocused || hasValue)\n ? styles['date-range-picker--label-floated']\n : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div ref={rootRef} className={rootClass}>\n {hasLabel && (\n <span id={labelId} className={styles['date-range-picker__label']}>\n {label}\n </span>\n )}\n\n {/* Trigger input */}\n <div\n ref={triggerRef}\n className={styles['date-range-picker__trigger']}\n role=\"combobox\"\n aria-haspopup=\"dialog\"\n aria-expanded={isOpen}\n aria-controls={popoverMounted ? popoverId : undefined}\n aria-disabled={disabled || undefined}\n aria-required={required || undefined}\n aria-label={\n ariaLabel ??\n (ariaLabelledby == null && !hasLabel && !displayValue && !placeholder\n ? dialogLabel\n : undefined)\n }\n aria-labelledby={\n ariaLabelledby ??\n (ariaLabel == null\n ? hasLabel\n ? labelId\n : displayValue || placeholder\n ? valueId\n : undefined\n : undefined)\n }\n aria-describedby={ariaDescribedby}\n tabIndex={disabled ? -1 : 0}\n id={id}\n data-has-value={hasValue ? '' : undefined}\n onClick={handleToggle}\n onKeyDown={handleTriggerKeyDown}\n onFocus={(event) => {\n setIsFocused(true);\n // The trigger is a div; consumers typed the callbacks for the input props.\n onFocus?.(event as unknown as ReactFocusEvent<HTMLInputElement>);\n }}\n onBlur={(event) => {\n setIsFocused(false);\n onBlur?.(event as unknown as ReactFocusEvent<HTMLInputElement>);\n }}\n >\n <span\n className={styles['date-range-picker__calendar-icon']}\n aria-hidden\n >\n <Icon size=\"16\" glyph={<CalendarOutlineIcon />} />\n </span>\n <span id={valueId} className={styles['date-range-picker__value']}>\n {displayValue || placeholder}\n </span>\n <span className={styles['date-range-picker__chevron']} aria-hidden>\n <Icon size=\"12\" glyph={<ChevronDownIcon />} />\n </span>\n </div>\n\n {/* Calendar popover */}\n {popoverMounted &&\n renderPortal(\n <div\n ref={portalRef}\n id={popoverId}\n className={[\n styles['date-range-picker__popover'],\n placement === 'above'\n ? styles['date-range-picker__popover--above']\n : '',\n popoverVisible\n ? styles['date-range-picker__popover--visible']\n : '',\n ]\n .filter(Boolean)\n .join(' ')}\n style={popoverStyle}\n role=\"dialog\"\n aria-modal=\"false\"\n aria-label={dialogLabel}\n >\n {/* Header */}\n <div className={styles['date-range-picker__header']}>\n <span\n className={styles['date-range-picker__month-label']}\n aria-live=\"polite\"\n >\n {shortMonthNames[displayMonth]} {displayYear}\n </span>\n <div className={styles['date-range-picker__header-actions']}>\n <Button\n emphasis=\"quaternary\"\n size=\"small\"\n compact\n leadingIcon={\n <Icon size=\"16\" glyph={<CalendarOutlineIcon />} />\n }\n onClick={handleToday}\n >\n {todayLabel}\n </Button>\n <div className={styles['date-range-picker__nav-buttons']}>\n <IconButton\n size=\"medium\"\n padding=\"compact\"\n icon={\n <Icon\n size={ICON_BUTTON_ICON_SIZES['medium']}\n glyph={<ChevronLeftIcon />}\n />\n }\n onClick={handlePrevMonth}\n aria-label={previousMonthLabel}\n />\n <IconButton\n size=\"medium\"\n padding=\"compact\"\n icon={\n <Icon\n size={ICON_BUTTON_ICON_SIZES['medium']}\n glyph={<ChevronRightIcon />}\n />\n }\n onClick={handleNextMonth}\n aria-label={nextMonthLabel}\n />\n </div>\n </div>\n </div>\n\n {/* Weekday headers */}\n <div className={styles['date-range-picker__weekdays']} aria-hidden>\n {weekdayNames.map((d, i) => (\n <span key={i} className={styles['date-range-picker__weekday']}>\n {d}\n </span>\n ))}\n </div>\n\n {/* Date grid */}\n <div\n ref={gridRef}\n className={styles['date-range-picker__grid']}\n role=\"grid\"\n aria-label={`${monthNames[displayMonth]} ${displayYear}`}\n >\n {weeks.map((week, wi) => (\n <div\n key={wi}\n className={styles['date-range-picker__week']}\n role=\"row\"\n >\n {week.map((day, di) => {\n if (day == null) {\n return (\n <span\n key={di}\n className={styles['date-range-picker__day-empty']}\n role=\"gridcell\"\n />\n );\n }\n const iso = toIso(displayYear, displayMonth, day);\n const isToday = iso === todayIso;\n const isRangeStart =\n mode === 'range' && isSameDay(iso, selectedStart);\n const isRangeEnd =\n mode === 'range' &&\n Boolean(selectedEnd) &&\n isSameDay(iso, selectedEnd);\n const isSelected =\n mode === 'date'\n ? isSameDay(iso, selectedDate)\n : isRangeStart || isRangeEnd;\n const isInRange =\n mode === 'range' &&\n isBetween(iso, selectedStart, selectedEnd);\n const hasRangeSpan =\n mode === 'range' &&\n Boolean(selectedStart) &&\n Boolean(selectedEnd) &&\n selectedStart !== selectedEnd;\n\n const cellClass = [\n styles['date-range-picker__day-cell'],\n isInRange\n ? styles['date-range-picker__day-cell--in-range']\n : '',\n hasRangeSpan && isRangeStart\n ? styles['date-range-picker__day-cell--range-start']\n : '',\n hasRangeSpan && isRangeEnd\n ? styles['date-range-picker__day-cell--range-end']\n : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n const dayClass = [\n styles['date-range-picker__day'],\n isSelected\n ? styles['date-range-picker__day--selected']\n : '',\n isToday && !isSelected\n ? styles['date-range-picker__day--today']\n : '',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div key={di} className={cellClass} role=\"gridcell\">\n <button\n type=\"button\"\n className={dayClass}\n data-day={day}\n tabIndex={focusedDay === day ? 0 : -1}\n onClick={() => handleDayClick(iso, day)}\n onFocus={() => setFocusedDay(day)}\n onKeyDown={(e) => handleDayKeyDown(e, day)}\n aria-label={iso}\n aria-pressed={isSelected}\n aria-current={isToday ? 'date' : undefined}\n >\n {day}\n </button>\n </div>\n );\n })}\n </div>\n ))}\n </div>\n </div>,\n )}\n </div>\n );\n}\n"],"names":["CALENDAR_PREFERRED_HEIGHT","WEEKDAYS","MONTHS","formatDateDisplay","iso","y","m","d","toIso","year","month","day","getDaysInMonth","getFirstDayOfWeek","isSameDay","a","b","isBetween","date","start","end","s","e","dayFromIso","DateRangePicker","className","mode","value","startDate","endDate","onChange","onRangeChange","disabled","required","onFocus","onBlur","label","idProp","ariaLabel","ariaLabelledby","ariaDescribedby","portalContainer","zIndex","placeholder","formatDate","monthNames","shortMonthNames","weekdayNames","dialogLabel","todayLabel","previousMonthLabel","nextMonthLabel","generatedId","useId","id","popoverId","labelId","valueId","hasLabel","rootRef","useRef","triggerRef","gridRef","today","todayIso","displayYear","setDisplayYear","useState","displayMonth","setDisplayMonth","isOpen","setIsOpen","isFocused","setIsFocused","focusedDay","setFocusedDay","internalDate","setInternalDate","internalStart","setInternalStart","internalEnd","setInternalEnd","selectedDate","selectedStart","selectedEnd","hasValue","popoverMounted","popoverVisible","usePopoverTransition","placement","popoverStyle","portalRef","renderPortal","useAnchoredPopupPortal","close","useCallback","restoreFocus","_a","useOutsideClose","useEffect","handleKeyDown","handleFocusIn","target","_b","daysInMonth","initialFocusDay","fromValue","fromEnd","fromStart","fromToday","frame","focusDayButton","handleToggle","open","handlePrevMonth","handleNextMonth","goToAdjacentMonth","direction","preferDay","nextMonth","nextYear","maxDay","handleToday","now","handleDayClick","moveFocusedDay","delta","next","handleDayKeyDown","handleTriggerKeyDown","firstDay","cells","_","i","weeks","displayValue","rootClass","styles","jsxs","jsx","event","Icon","CalendarOutlineIcon","ChevronDownIcon","Button","IconButton","ICON_BUTTON_ICON_SIZES","ChevronLeftIcon","ChevronRightIcon","week","wi","di","isToday","isRangeStart","isRangeEnd","isSelected","isInRange","hasRangeSpan","cellClass","dayClass"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
._date-range-
|
|
1
|
+
._date-range-picker_58um5_13{--date-range-picker-day-size: calc(var(--icon-size-32) + var(--spacing-xxxs));display:flex;flex-direction:column;position:relative;width:100%}._date-range-picker__trigger_58um5_20{display:flex;align-items:center;gap:var(--spacing-s);padding:var(--spacing-s) var(--spacing-l);background-color:var(--center-channel-bg);border-radius:var(--radius-s);box-shadow:inset 0 0 0 1px rgba(var(--center-channel-color-rgb),.16);cursor:pointer;-webkit-user-select:none;user-select:none;transition:box-shadow var(--duration-quick) var(--ease-transition)}._date-range-picker_58um5_13:not(._date-range-picker--disabled_58um5_32):not(._date-range-picker--open_58um5_32):not(:focus-within) ._date-range-picker__trigger_58um5_20:hover{box-shadow:inset 0 0 0 1px rgba(var(--center-channel-color-rgb),.24)}._date-range-picker_58um5_13:focus-within ._date-range-picker__trigger_58um5_20,._date-range-picker--open_58um5_32 ._date-range-picker__trigger_58um5_20{outline:none;box-shadow:inset 0 0 0 1px var(--focus-ring-color),0 0 0 1px var(--focus-ring-color)}._date-range-picker__trigger_58um5_20:focus{outline:none}._date-range-picker__trigger_58um5_20:focus-visible{outline:none}._date-range-picker--disabled_58um5_32 ._date-range-picker__trigger_58um5_20{opacity:.56;cursor:not-allowed}._date-range-picker__calendar-icon_58um5_49{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:rgba(var(--center-channel-color-rgb),.64)}._date-range-picker__calendar-icon_58um5_49 svg{display:block;width:var(--icon-size-16);height:var(--icon-size-16)}._date-range-picker__value_58um5_61{flex:1 1 0;min-width:0;align-self:stretch;display:flex;align-items:center;font-family:var(--font-family-body);font-size:var(--font-size-100);line-height:var(--line-height-100);font-weight:var(--font-weight-regular);color:var(--center-channel-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._date-range-picker__trigger_58um5_20:not([data-has-value]) ._date-range-picker__value_58um5_61{color:rgba(var(--center-channel-color-rgb),.64)}._date-range-picker__chevron_58um5_79{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:rgba(var(--center-channel-color-rgb),.64);margin-right:var(--spacing-xxxs);transition:transform var(--duration-quick) var(--ease-transition)}._date-range-picker__chevron_58um5_79 svg{display:block;width:var(--icon-size-16);height:var(--icon-size-16)}._date-range-picker--open_58um5_32 ._date-range-picker__chevron_58um5_79{transform:rotate(180deg)}._date-range-picker__label_58um5_96{position:absolute;inset-inline-start:calc(var(--spacing-l) + var(--icon-size-16) + var(--spacing-s) - var(--spacing-xxxs));top:50%;z-index:1;max-width:calc(100% - 64px);margin:0;padding:0 var(--spacing-xxxs);overflow:hidden;transform:translateY(-50%);font-family:var(--font-family-body);font-size:var(--font-size-100);font-weight:var(--font-weight-regular);line-height:var(--line-height-100);color:rgba(var(--center-channel-color-rgb),.72);text-overflow:ellipsis;white-space:nowrap;pointer-events:none;background-color:var(--center-channel-bg);transition:transform var(--duration-quick) var(--ease-transition),font-size var(--duration-quick) var(--ease-transition),top var(--duration-quick) var(--ease-transition),inset-inline-start var(--duration-quick) var(--ease-transition),color var(--duration-quick) var(--ease-transition)}._date-range-picker--label-floated_58um5_117 ._date-range-picker__label_58um5_96{top:0;inset-inline-start:var(--spacing-m);font-size:var(--font-size-25);line-height:1.4}._date-range-picker_58um5_13:focus-within ._date-range-picker__label_58um5_96,._date-range-picker--open_58um5_32 ._date-range-picker__label_58um5_96{color:var(--button-bg)}._date-range-picker--has-label_58um5_126:not(._date-range-picker--label-floated_58um5_117) ._date-range-picker__value_58um5_61{color:transparent}._date-range-picker__popover_58um5_129{--date-range-picker-day-size: calc( var(--icon-size-32) + var(--spacing-xxxs) );--date-range-picker-fill: color-mix( in srgb, var(--button-bg) 12%, var(--center-channel-bg) );width:calc(7 * var(--date-range-picker-day-size) + 2 * var(--spacing-s));padding:var(--spacing-s);background-color:var(--center-channel-bg);border:1px solid rgba(var(--center-channel-color-rgb),.16);border-radius:var(--radius-m);box-shadow:var(--elevation-4);display:flex;flex-direction:column;gap:var(--spacing-xs);opacity:0;transform:scale(.9);transform-origin:top left;transition:opacity var(--duration-quick) var(--ease-exit),transform var(--duration-quick) var(--ease-exit);pointer-events:none}._date-range-picker__popover--above_58um5_153{transform-origin:bottom left}._date-range-picker__popover--visible_58um5_156{opacity:1;transform:scale(1);pointer-events:auto;transition:opacity var(--duration-quick) var(--ease-entrance),transform var(--duration-quick) var(--ease-entrance)}._date-range-picker__header_58um5_162{display:flex;align-items:center;justify-content:space-between;padding-left:var(--spacing-xs)}._date-range-picker__month-label_58um5_168{font-family:var(--font-family-body);font-size:var(--font-size-100);line-height:var(--line-height-100);font-weight:var(--font-weight-semibold);color:var(--center-channel-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}._date-range-picker__header-actions_58um5_179{display:flex;align-items:center;gap:var(--spacing-xxxs);flex-shrink:0}._date-range-picker__nav-buttons_58um5_185{display:flex;align-items:center}._date-range-picker__weekdays_58um5_189{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));align-items:center;padding:0}._date-range-picker__weekday_58um5_189{display:flex;align-items:center;justify-content:center;width:100%;font-family:var(--font-family-body);font-size:var(--font-size-75);line-height:var(--line-height-75);font-weight:var(--font-weight-semibold);color:rgba(var(--center-channel-color-rgb),.72);text-transform:uppercase;letter-spacing:.24px;text-align:center}._date-range-picker__grid_58um5_209{display:flex;flex-direction:column;gap:0}._date-range-picker__week_58um5_189{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));align-items:stretch}._date-range-picker__day-empty_58um5_219{display:block;height:var(--date-range-picker-day-size)}._date-range-picker__day-cell_58um5_223{display:flex;align-items:center;justify-content:center;height:var(--date-range-picker-day-size);min-width:0;position:relative;z-index:0}._date-range-picker__day-cell--in-range_58um5_232:before,._date-range-picker__day-cell--range-start_58um5_232:before,._date-range-picker__day-cell--range-end_58um5_232:before{content:"";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;z-index:-1;pointer-events:none}._date-range-picker__day-cell--range-start_58um5_232,._date-range-picker__day-cell--range-end_58um5_232{z-index:1}._date-range-picker__day-cell--in-range_58um5_232:before{background-color:var(--date-range-picker-fill)}._date-range-picker__day-cell--range-start_58um5_232:before{background:linear-gradient(to right,transparent 50%,var(--date-range-picker-fill) 50%)}._date-range-picker__day-cell--range-end_58um5_232:before{background:linear-gradient(to left,transparent 50%,var(--date-range-picker-fill) 50%)}._date-range-picker__day_58um5_219{display:flex;align-items:center;justify-content:center;width:var(--date-range-picker-day-size);height:var(--date-range-picker-day-size);flex-shrink:0;background:transparent;border:0;border-radius:var(--radius-pill);font-family:var(--font-family-body);font-size:var(--font-size-100);line-height:var(--line-height-100);font-weight:var(--font-weight-semibold);color:var(--center-channel-color);cursor:pointer}._date-range-picker__day_58um5_219:hover:not([aria-pressed]){transition:background-color var(--duration-quick) var(--ease-transition),color var(--duration-quick) var(--ease-transition)}._date-range-picker__day_58um5_219:hover:not(._date-range-picker__day--selected_58um5_271){background-color:rgba(var(--center-channel-color-rgb),.08)}._date-range-picker__day_58um5_219:focus{outline:none}._date-range-picker__day_58um5_219:focus-visible:not(._date-range-picker__day--selected_58um5_271){background-color:rgba(var(--center-channel-color-rgb),.08);box-shadow:0 0 0 2px rgba(var(--button-bg-rgb),.56)}._date-range-picker__day--selected_58um5_271:focus-visible{box-shadow:0 0 0 2px rgba(var(--button-bg-rgb),.56)}._date-range-picker__day--today_58um5_284{color:var(--link-color);font-weight:var(--font-weight-semibold)}._date-range-picker__day--selected_58um5_271{background-color:var(--button-bg);color:var(--button-color)}._date-range-picker__day--selected_58um5_271:hover{background-color:var(--button-bg);opacity:.92}._date-range-picker--disabled_58um5_32{pointer-events:none}
|
|
@@ -3,6 +3,12 @@ export type DateRangePickerMode = 'date' | 'range';
|
|
|
3
3
|
export interface DateRangePickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'defaultValue' | 'onChange' | 'type' | 'size'> {
|
|
4
4
|
/** Optional CSS class name applied to the root element. */
|
|
5
5
|
className?: string;
|
|
6
|
+
/**
|
|
7
|
+
* Floating label, like `TextInput`, `Select` and `Combobox`. It sits inside the field and
|
|
8
|
+
* moves to the top edge when the field is open or has a value. It also names the trigger
|
|
9
|
+
* for assistive technology (via `aria-labelledby`). Accepts translated nodes.
|
|
10
|
+
*/
|
|
11
|
+
label?: ReactNode;
|
|
6
12
|
/** Selection mode: single date or range. Default: 'date'. */
|
|
7
13
|
mode?: DateRangePickerMode;
|
|
8
14
|
/** Controlled selected date (single mode). ISO string yyyy-mm-dd. */
|
|
@@ -25,6 +31,13 @@ export interface DateRangePickerProps extends Omit<InputHTMLAttributes<HTMLInput
|
|
|
25
31
|
formatDate?: (iso: string) => string;
|
|
26
32
|
/** Twelve month names, January first. Default: English. */
|
|
27
33
|
monthNames?: string[];
|
|
34
|
+
/**
|
|
35
|
+
* Twelve short month names for the calendar header, January first. Default: the
|
|
36
|
+
* first three letters of the English names, or `monthNames` unchanged when you pass
|
|
37
|
+
* your own (so a translation is never cut mid-word). The full `monthNames` still
|
|
38
|
+
* label the day grid for assistive technology.
|
|
39
|
+
*/
|
|
40
|
+
shortMonthNames?: string[];
|
|
28
41
|
/** Seven short weekday names, Sunday first. Default: "Su" … "Sa". */
|
|
29
42
|
weekdayNames?: string[];
|
|
30
43
|
/** Accessible name for the calendar dialog. Default: "Date picker". */
|
|
@@ -40,5 +53,5 @@ export interface DateRangePickerProps extends Omit<InputHTMLAttributes<HTMLInput
|
|
|
40
53
|
* The Date and Range Picker lets people pick a single date or a start/end range from a
|
|
41
54
|
* calendar. The trigger is a compact field; the calendar is a popover anchored 4px below it.
|
|
42
55
|
*/
|
|
43
|
-
export default function DateRangePicker({ className, mode, value, startDate, endDate, onChange, onRangeChange, disabled, id: idProp, portalContainer, zIndex, placeholder, formatDate, monthNames, weekdayNames, dialogLabel, todayLabel, previousMonthLabel, nextMonthLabel, }: DateRangePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
56
|
+
export default function DateRangePicker({ className, mode, value, startDate, endDate, onChange, onRangeChange, disabled, required, onFocus, onBlur, label, id: idProp, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledby, 'aria-describedby': ariaDescribedby, portalContainer, zIndex, placeholder, formatDate, monthNames, shortMonthNames, weekdayNames, dialogLabel, todayLabel, previousMonthLabel, nextMonthLabel, }: DateRangePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
44
57
|
//# sourceMappingURL=DateRangePicker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangePicker.d.ts","sourceRoot":"","sources":["../../../src/components/date-range-picker/DateRangePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"DateRangePicker.d.ts","sourceRoot":"","sources":["../../../src/components/date-range-picker/DateRangePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,mBAAmB,EAEnB,SAAS,EACV,MAAM,OAAO,CAAC;AAgBf,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnD,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAChD,mBAAmB,CAAC,gBAAgB,CAAC,EACrC,OAAO,GAAG,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CACxD;IACC,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,8CAA8C;IAC9C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,uEAAuE;IACvE,eAAe,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,gFAAgF;IAChF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAyDD;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,SAAc,EACd,IAAa,EACb,KAAK,EACL,SAAS,EACT,OAAO,EACP,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,MAAM,EACN,KAAK,EACL,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EACjC,kBAAkB,EAAE,eAAe,EACnC,eAAsB,EACtB,MAAM,EACN,WAA0B,EAC1B,UAA8B,EAC9B,UAAmB,EACnB,eAEc,EACd,YAAuB,EACvB,WAA2B,EAC3B,UAAoB,EACpB,kBAAqC,EACrC,cAA6B,GAC9B,EAAE,oBAAoB,2CAgnBtB"}
|