draft-components 1.0.0-beta.3.1 → 1.0.0-beta.4
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/cjs/components/alert/alert.cjs +18 -0
- package/cjs/components/avatar/avatar.cjs +31 -0
- package/cjs/components/avatar-group/avatar-group.cjs +10 -0
- package/cjs/components/badge/{badge.js → badge.cjs} +7 -6
- package/cjs/components/breadcrumbs/breadcrumbs-context.cjs +19 -0
- package/cjs/components/breadcrumbs/breadcrumbs-item.cjs +21 -0
- package/cjs/components/breadcrumbs/breadcrumbs.cjs +12 -0
- package/cjs/components/button/button.cjs +39 -0
- package/cjs/components/button/icon-button.cjs +12 -0
- package/cjs/components/button-group/button-group.cjs +10 -0
- package/cjs/components/caption/caption.cjs +27 -0
- package/cjs/components/caption/icons.cjs +21 -0
- package/cjs/components/checkbox/checkbox.cjs +16 -0
- package/cjs/components/date-picker/{calendar-day.js → calendar-day.cjs} +8 -7
- package/cjs/components/date-picker/calendar-grid-head.cjs +16 -0
- package/cjs/components/date-picker/calendar-grid.cjs +106 -0
- package/cjs/components/date-picker/calendar-header.cjs +48 -0
- package/cjs/components/date-picker/calendar.cjs +24 -0
- package/cjs/components/date-picker/{date-helpers.js → date-helpers.cjs} +30 -26
- package/cjs/components/date-picker/date-picker.cjs +20 -0
- package/cjs/components/date-picker/date-range-picker.cjs +61 -0
- package/cjs/components/date-picker/date-range.cjs +28 -0
- package/cjs/components/date-picker/icons.cjs +13 -0
- package/cjs/components/date-picker/{parse-min-max-props.js → parse-min-max-props.cjs} +7 -6
- package/cjs/components/date-picker-popover/date-picker-popover.cjs +24 -0
- package/cjs/components/date-range-picker-popover/date-range-picker-popover-footer.cjs +11 -0
- package/cjs/components/date-range-picker-popover/date-range-picker-popover-presets.cjs +35 -0
- package/cjs/components/date-range-picker-popover/date-range-picker-popover.cjs +59 -0
- package/cjs/components/date-range-picker-popover/{helpers.js → helpers.cjs} +3 -3
- package/cjs/components/date-range-picker-popover/{use-is-compact-view.js → use-is-compact-view.cjs} +8 -7
- package/cjs/components/dialog/{dialog-body.js → dialog-body.cjs} +17 -16
- package/cjs/components/dialog/{dialog-context.js → dialog-context.cjs} +10 -9
- package/cjs/components/dialog/dialog-footer.cjs +10 -0
- package/cjs/components/dialog/dialog-header.cjs +18 -0
- package/cjs/components/dialog/dialog.cjs +50 -0
- package/cjs/components/dialog/x-mark-icon.cjs +9 -0
- package/cjs/components/empty-state/empty-state.cjs +10 -0
- package/cjs/components/file-picker/file-picker.cjs +47 -0
- package/cjs/components/filter-buttons/filter-button.cjs +11 -0
- package/cjs/components/filter-buttons/filter-buttons.cjs +27 -0
- package/cjs/components/form-field/form-field.cjs +26 -0
- package/cjs/components/index.cjs +123 -0
- package/cjs/components/label/label.cjs +13 -0
- package/cjs/components/menu/menu-item.cjs +14 -0
- package/cjs/components/menu/menu-separator.cjs +10 -0
- package/cjs/components/menu/{menu.js → menu.cjs} +50 -52
- package/cjs/components/nav-list/nav-list-item.cjs +20 -0
- package/cjs/components/nav-list/nav-list-title.cjs +10 -0
- package/cjs/components/nav-list/nav-list.cjs +10 -0
- package/cjs/components/password-input/icons.cjs +13 -0
- package/cjs/components/password-input/password-input.cjs +30 -0
- package/cjs/components/popover/popover.cjs +97 -0
- package/cjs/components/popover/{use-page-click.js → use-page-click.cjs} +8 -7
- package/cjs/components/portal/portal-context.cjs +22 -0
- package/cjs/components/portal/portal.cjs +11 -0
- package/cjs/components/positioner/{calc-position.js → calc-position.cjs} +4 -4
- package/cjs/components/positioner/{positioner.js → positioner.cjs} +14 -13
- package/cjs/components/radio/radio.cjs +24 -0
- package/cjs/components/segmented-control/segmented-control-button.cjs +15 -0
- package/cjs/components/segmented-control/segmented-control.cjs +48 -0
- package/cjs/components/select/select.cjs +27 -0
- package/cjs/components/selection-control/selection-control.cjs +18 -0
- package/cjs/components/slider/slider-tick-marks.cjs +17 -0
- package/cjs/components/slider/{slider.js → slider.cjs} +16 -14
- package/cjs/components/spinner/spinner.cjs +11 -0
- package/cjs/components/switch/switch.cjs +15 -0
- package/cjs/components/table/icons.cjs +17 -0
- package/cjs/components/table/table-body.cjs +11 -0
- package/cjs/components/table/table-cell.cjs +11 -0
- package/cjs/components/table/table-container.cjs +23 -0
- package/cjs/components/table/table-head-cell.cjs +30 -0
- package/cjs/components/table/table-head.cjs +14 -0
- package/cjs/components/table/table-row.cjs +14 -0
- package/cjs/components/table/table.cjs +16 -0
- package/cjs/components/tabs/tab-list.cjs +67 -0
- package/cjs/components/tabs/tab-panel.cjs +16 -0
- package/cjs/components/tabs/tab.cjs +19 -0
- package/cjs/components/tabs/{tabs-context.js → tabs-context.cjs} +13 -12
- package/cjs/components/tabs/tabs.cjs +11 -0
- package/cjs/components/tag/{tag.js → tag.cjs} +7 -6
- package/cjs/components/text-input/text-input.cjs +26 -0
- package/cjs/components/textarea/textarea.cjs +40 -0
- package/cjs/components/toast/toast-button.cjs +11 -0
- package/cjs/components/toast/toast.cjs +11 -0
- package/cjs/components/toast/x-mark-icon.cjs +9 -0
- package/cjs/components/toaster/toaster.cjs +115 -0
- package/cjs/components/tooltip/tooltip.cjs +75 -0
- package/cjs/hooks/index.cjs +13 -0
- package/cjs/hooks/{use-disable-body-scroll.js → use-disable-body-scroll.cjs} +9 -8
- package/cjs/hooks/{use-esc-key-down.js → use-esc-key-down.cjs} +10 -9
- package/cjs/hooks/{use-focus-trap.js → use-focus-trap.cjs} +12 -11
- package/cjs/hooks/{use-mount-transition.js → use-mount-transition.cjs} +13 -12
- package/cjs/index.cjs +141 -0
- package/cjs/lib/{helpers.js → helpers.cjs} +4 -4
- package/cjs/lib/index.cjs +15 -0
- package/cjs/lib/{keyboard-keys.js → keyboard-keys.cjs} +5 -4
- package/cjs/lib/{react-helpers.js → react-helpers.cjs} +9 -8
- package/css/draft-components-utilities.css +4 -0
- package/css/draft-components.css +15 -1
- package/esm/components/alert/alert.js +9 -5
- package/esm/components/avatar/avatar.js +17 -14
- package/esm/components/avatar-group/avatar-group.js +7 -4
- package/esm/components/badge/badge.js +7 -4
- package/esm/components/breadcrumbs/breadcrumbs-context.js +7 -4
- package/esm/components/breadcrumbs/breadcrumbs-item.js +10 -7
- package/esm/components/breadcrumbs/breadcrumbs.js +9 -6
- package/esm/components/button/button.js +11 -8
- package/esm/components/button/icon-button.js +8 -5
- package/esm/components/button-group/button-group.js +7 -4
- package/esm/components/caption/caption.js +10 -7
- package/esm/components/caption/icons.js +12 -9
- package/esm/components/checkbox/checkbox.js +12 -9
- package/esm/components/date-picker/calendar-day.js +8 -5
- package/esm/components/date-picker/calendar-grid-head.js +8 -5
- package/esm/components/date-picker/calendar-grid.js +15 -12
- package/esm/components/date-picker/calendar-header.js +20 -16
- package/esm/components/date-picker/calendar.js +11 -8
- package/esm/components/date-picker/date-helpers.js +22 -20
- package/esm/components/date-picker/date-picker.js +10 -7
- package/esm/components/date-picker/date-range-picker.js +15 -12
- package/esm/components/date-picker/date-range.js +5 -2
- package/esm/components/date-picker/icons.js +8 -5
- package/esm/components/date-picker/parse-min-max-props.js +5 -2
- package/esm/components/date-picker-popover/date-picker-popover.js +14 -8
- package/esm/components/date-range-picker-popover/date-range-picker-popover-footer.js +8 -4
- package/esm/components/date-range-picker-popover/date-range-picker-popover-presets.js +12 -9
- package/esm/components/date-range-picker-popover/date-range-picker-popover.js +20 -13
- package/esm/components/date-range-picker-popover/helpers.js +3 -1
- package/esm/components/date-range-picker-popover/use-is-compact-view.js +6 -3
- package/esm/components/dialog/dialog-body.js +14 -11
- package/esm/components/dialog/dialog-context.js +7 -4
- package/esm/components/dialog/dialog-footer.js +7 -4
- package/esm/components/dialog/dialog-header.js +11 -7
- package/esm/components/dialog/dialog.js +18 -12
- package/esm/components/dialog/x-mark-icon.js +6 -3
- package/esm/components/empty-state/empty-state.js +7 -4
- package/esm/components/file-picker/file-picker.js +13 -9
- package/esm/components/filter-buttons/filter-button.js +7 -4
- package/esm/components/filter-buttons/filter-buttons.js +9 -6
- package/esm/components/form-field/form-field.js +11 -8
- package/esm/components/index.js +59 -37
- package/esm/components/label/label.js +7 -4
- package/esm/components/menu/menu-item.js +9 -6
- package/esm/components/menu/menu-separator.js +7 -4
- package/esm/components/menu/menu.js +24 -24
- package/esm/components/nav-list/nav-list-item.js +10 -7
- package/esm/components/nav-list/nav-list-title.js +7 -4
- package/esm/components/nav-list/nav-list.js +7 -4
- package/esm/components/password-input/icons.js +8 -5
- package/esm/components/password-input/password-input.js +12 -9
- package/esm/components/popover/popover.js +22 -21
- package/esm/components/popover/use-page-click.js +5 -2
- package/esm/components/portal/portal-context.js +5 -6
- package/esm/components/portal/portal.js +5 -2
- package/esm/components/positioner/calc-position.js +4 -2
- package/esm/components/positioner/positioner.js +9 -6
- package/esm/components/radio/radio.js +12 -9
- package/esm/components/segmented-control/segmented-control-button.js +7 -4
- package/esm/components/segmented-control/segmented-control.js +12 -9
- package/esm/components/select/select.js +12 -9
- package/esm/components/selection-control/selection-control.js +10 -7
- package/esm/components/slider/slider-tick-marks.js +8 -5
- package/esm/components/slider/slider.js +13 -10
- package/esm/components/spinner/spinner.js +7 -4
- package/esm/components/switch/switch.js +11 -8
- package/esm/components/table/icons.js +10 -7
- package/esm/components/table/table-body.js +7 -4
- package/esm/components/table/table-cell.js +7 -4
- package/esm/components/table/table-container.js +7 -4
- package/esm/components/table/table-head-cell.js +18 -15
- package/esm/components/table/table-head.js +7 -4
- package/esm/components/table/table-row.js +7 -4
- package/esm/components/table/table.js +7 -4
- package/esm/components/tabs/tab-list.js +14 -11
- package/esm/components/tabs/tab-panel.js +8 -5
- package/esm/components/tabs/tab.js +10 -7
- package/esm/components/tabs/tabs-context.js +8 -5
- package/esm/components/tabs/tabs.js +8 -5
- package/esm/components/tag/tag.js +7 -4
- package/esm/components/text-input/text-input.js +11 -8
- package/esm/components/textarea/textarea.js +20 -17
- package/esm/components/toast/toast-button.js +7 -4
- package/esm/components/toast/toast.js +8 -5
- package/esm/components/toast/x-mark-icon.js +6 -3
- package/esm/components/toaster/toaster.js +29 -46
- package/esm/components/tooltip/tooltip.js +22 -24
- package/esm/hooks/index.js +4 -4
- package/esm/hooks/use-disable-body-scroll.js +5 -2
- package/esm/hooks/use-esc-key-down.js +6 -3
- package/esm/hooks/use-focus-trap.js +6 -3
- package/esm/hooks/use-mount-transition.js +6 -3
- package/esm/index.js +66 -3
- package/esm/lib/helpers.js +4 -2
- package/esm/lib/index.js +3 -3
- package/esm/lib/keyboard-keys.js +3 -1
- package/esm/lib/react-helpers.js +8 -5
- package/package.json +21 -20
- package/{cjs → types}/components/alert/alert.d.ts +0 -0
- package/{cjs → types}/components/alert/index.d.ts +0 -0
- package/{cjs → types}/components/avatar/avatar.d.ts +0 -0
- package/{cjs → types}/components/avatar/index.d.ts +0 -0
- package/{cjs → types}/components/avatar-group/avatar-group.d.ts +0 -0
- package/{cjs → types}/components/avatar-group/index.d.ts +0 -0
- package/{cjs → types}/components/badge/badge.d.ts +0 -0
- package/{cjs → types}/components/badge/index.d.ts +0 -0
- package/{cjs → types}/components/breadcrumbs/breadcrumbs-context.d.ts +0 -0
- package/{cjs → types}/components/breadcrumbs/breadcrumbs-item.d.ts +0 -0
- package/{cjs → types}/components/breadcrumbs/breadcrumbs.d.ts +0 -0
- package/{cjs → types}/components/breadcrumbs/index.d.ts +0 -0
- package/{cjs → types}/components/button/button.d.ts +0 -0
- package/{cjs → types}/components/button/icon-button.d.ts +0 -0
- package/{cjs → types}/components/button/index.d.ts +0 -0
- package/{cjs → types}/components/button-group/button-group.d.ts +0 -0
- package/{cjs → types}/components/button-group/index.d.ts +0 -0
- package/{cjs → types}/components/caption/caption.d.ts +0 -0
- package/{cjs → types}/components/caption/icons.d.ts +0 -0
- package/{cjs → types}/components/caption/index.d.ts +0 -0
- package/{cjs → types}/components/checkbox/checkbox.d.ts +0 -0
- package/{cjs → types}/components/checkbox/index.d.ts +0 -0
- package/{cjs → types}/components/color-picker/color-picker-button.d.ts +0 -0
- package/{cjs → types}/components/color-picker/color-picker.d.ts +0 -0
- package/{cjs → types}/components/color-picker/index.d.ts +0 -0
- package/{cjs → types}/components/date-picker/calendar-day.d.ts +0 -0
- package/{cjs → types}/components/date-picker/calendar-grid-head.d.ts +0 -0
- package/{cjs → types}/components/date-picker/calendar-grid.d.ts +0 -0
- package/{cjs → types}/components/date-picker/calendar-header.d.ts +0 -0
- package/{cjs → types}/components/date-picker/calendar.d.ts +0 -0
- package/{cjs → types}/components/date-picker/date-helpers.d.ts +0 -0
- package/{cjs → types}/components/date-picker/date-picker.d.ts +0 -0
- package/{cjs → types}/components/date-picker/date-range-picker.d.ts +0 -0
- package/{cjs → types}/components/date-picker/date-range.d.ts +0 -0
- package/{cjs → types}/components/date-picker/icons.d.ts +0 -0
- package/{cjs → types}/components/date-picker/index.d.ts +0 -0
- package/{cjs → types}/components/date-picker/parse-min-max-props.d.ts +0 -0
- package/{cjs → types}/components/date-picker-popover/date-picker-popover.d.ts +0 -0
- package/{cjs → types}/components/date-picker-popover/index.d.ts +0 -0
- package/{cjs → types}/components/date-range-picker-popover/date-range-picker-popover-footer.d.ts +0 -0
- package/{cjs → types}/components/date-range-picker-popover/date-range-picker-popover-presets.d.ts +0 -0
- package/{cjs → types}/components/date-range-picker-popover/date-range-picker-popover.d.ts +0 -0
- package/{cjs → types}/components/date-range-picker-popover/helpers.d.ts +0 -0
- package/{cjs → types}/components/date-range-picker-popover/index.d.ts +0 -0
- package/{cjs → types}/components/date-range-picker-popover/types.d.ts +0 -0
- package/{cjs → types}/components/date-range-picker-popover/use-is-compact-view.d.ts +0 -0
- package/{cjs → types}/components/dialog/dialog-body.d.ts +0 -0
- package/{cjs → types}/components/dialog/dialog-context.d.ts +0 -0
- package/{cjs → types}/components/dialog/dialog-footer.d.ts +0 -0
- package/{cjs → types}/components/dialog/dialog-header.d.ts +0 -0
- package/{cjs → types}/components/dialog/dialog.d.ts +0 -0
- package/{cjs → types}/components/dialog/index.d.ts +0 -0
- package/{cjs → types}/components/dialog/x-mark-icon.d.ts +0 -0
- package/{cjs → types}/components/empty-state/empty-state.d.ts +0 -0
- package/{cjs → types}/components/empty-state/index.d.ts +0 -0
- package/{cjs → types}/components/file-picker/file-picker.d.ts +0 -0
- package/{cjs → types}/components/file-picker/index.d.ts +0 -0
- package/{cjs → types}/components/filter-buttons/filter-button.d.ts +0 -0
- package/{cjs → types}/components/filter-buttons/filter-buttons.d.ts +0 -0
- package/{cjs → types}/components/filter-buttons/index.d.ts +0 -0
- package/{cjs → types}/components/form-field/form-field.d.ts +0 -0
- package/{cjs → types}/components/form-field/index.d.ts +0 -0
- package/{cjs → types}/components/index.d.ts +0 -0
- package/{cjs → types}/components/label/index.d.ts +0 -0
- package/{cjs → types}/components/label/label.d.ts +0 -0
- package/{cjs → types}/components/menu/index.d.ts +0 -0
- package/{cjs → types}/components/menu/menu-item.d.ts +0 -0
- package/{cjs → types}/components/menu/menu-separator.d.ts +0 -0
- package/{cjs → types}/components/menu/menu.d.ts +0 -0
- package/{cjs → types}/components/nav-list/index.d.ts +0 -0
- package/{cjs → types}/components/nav-list/nav-list-item.d.ts +0 -0
- package/{cjs → types}/components/nav-list/nav-list-title.d.ts +0 -0
- package/{cjs → types}/components/nav-list/nav-list.d.ts +0 -0
- package/{cjs → types}/components/password-input/icons.d.ts +0 -0
- package/{cjs → types}/components/password-input/index.d.ts +0 -0
- package/{cjs → types}/components/password-input/password-input.d.ts +0 -0
- package/{cjs → types}/components/popover/index.d.ts +0 -0
- package/{cjs → types}/components/popover/popover.d.ts +0 -0
- package/{cjs → types}/components/popover/use-page-click.d.ts +0 -0
- package/{cjs → types}/components/portal/index.d.ts +0 -0
- package/{cjs → types}/components/portal/portal-context.d.ts +0 -0
- package/{cjs → types}/components/portal/portal.d.ts +0 -0
- package/{cjs → types}/components/positioner/calc-position.d.ts +0 -0
- package/{cjs → types}/components/positioner/index.d.ts +0 -0
- package/{cjs → types}/components/positioner/positioner.d.ts +0 -0
- package/{cjs → types}/components/positioner/types.d.ts +0 -0
- package/{cjs → types}/components/radio/index.d.ts +0 -0
- package/{cjs → types}/components/radio/radio.d.ts +0 -0
- package/{cjs → types}/components/segmented-control/index.d.ts +0 -0
- package/{cjs → types}/components/segmented-control/segmented-control-button.d.ts +0 -0
- package/{cjs → types}/components/segmented-control/segmented-control.d.ts +0 -0
- package/{cjs → types}/components/select/index.d.ts +0 -0
- package/{cjs → types}/components/select/select.d.ts +1 -1
- package/{cjs → types}/components/selection-control/index.d.ts +0 -0
- package/{cjs → types}/components/selection-control/selection-control.d.ts +0 -0
- package/{cjs → types}/components/slider/index.d.ts +0 -0
- package/{cjs → types}/components/slider/slider-tick-marks.d.ts +0 -0
- package/{cjs → types}/components/slider/slider.d.ts +0 -0
- package/{cjs → types}/components/spinner/index.d.ts +0 -0
- package/{cjs → types}/components/spinner/spinner.d.ts +0 -0
- package/{cjs → types}/components/switch/index.d.ts +0 -0
- package/{cjs → types}/components/switch/switch.d.ts +0 -0
- package/{cjs → types}/components/table/icons.d.ts +0 -0
- package/{cjs → types}/components/table/index.d.ts +0 -0
- package/{cjs → types}/components/table/table-body.d.ts +0 -0
- package/{cjs → types}/components/table/table-cell.d.ts +0 -0
- package/{cjs → types}/components/table/table-container.d.ts +0 -0
- package/{cjs → types}/components/table/table-head-cell.d.ts +0 -0
- package/{cjs → types}/components/table/table-head.d.ts +0 -0
- package/{cjs → types}/components/table/table-row.d.ts +0 -0
- package/{cjs → types}/components/table/table.d.ts +0 -0
- package/{cjs → types}/components/tabs/index.d.ts +0 -0
- package/{cjs → types}/components/tabs/tab-list.d.ts +0 -0
- package/{cjs → types}/components/tabs/tab-panel.d.ts +0 -0
- package/{cjs → types}/components/tabs/tab.d.ts +0 -0
- package/{cjs → types}/components/tabs/tabs-context.d.ts +0 -0
- package/{cjs → types}/components/tabs/tabs.d.ts +0 -0
- package/{cjs → types}/components/tabs/types.d.ts +0 -0
- package/{cjs → types}/components/tag/index.d.ts +0 -0
- package/{cjs → types}/components/tag/tag.d.ts +0 -0
- package/{cjs → types}/components/text-input/index.d.ts +0 -0
- package/{cjs → types}/components/text-input/text-input.d.ts +0 -0
- package/{cjs → types}/components/textarea/index.d.ts +0 -0
- package/{cjs → types}/components/textarea/textarea.d.ts +0 -0
- package/{cjs → types}/components/toast/index.d.ts +0 -0
- package/{cjs → types}/components/toast/toast-button.d.ts +0 -0
- package/{cjs → types}/components/toast/toast.d.ts +0 -0
- package/{cjs → types}/components/toast/x-mark-icon.d.ts +0 -0
- package/{cjs → types}/components/toaster/index.d.ts +0 -0
- package/{esm → types}/components/toaster/toaster.d.ts +5 -1
- package/{cjs → types}/components/tooltip/index.d.ts +0 -0
- package/{cjs → types}/components/tooltip/tooltip.d.ts +0 -0
- package/{cjs → types}/hooks/index.d.ts +0 -0
- package/{cjs → types}/hooks/use-disable-body-scroll.d.ts +0 -0
- package/{cjs → types}/hooks/use-esc-key-down.d.ts +0 -0
- package/{cjs → types}/hooks/use-focus-trap.d.ts +0 -0
- package/{cjs → types}/hooks/use-mount-transition.d.ts +0 -0
- package/{cjs → types}/index.d.ts +0 -0
- package/types/lib/helpers.d.ts +4 -0
- package/{cjs → types}/lib/index.d.ts +0 -0
- package/{cjs → types}/lib/keyboard-keys.d.ts +0 -0
- package/{cjs → types}/lib/react-helpers.d.ts +0 -0
- package/cjs/components/alert/alert.js +0 -16
- package/cjs/components/alert/index.js +0 -17
- package/cjs/components/avatar/avatar.js +0 -29
- package/cjs/components/avatar/index.js +0 -17
- package/cjs/components/avatar-group/avatar-group.js +0 -9
- package/cjs/components/avatar-group/index.js +0 -17
- package/cjs/components/badge/index.js +0 -17
- package/cjs/components/breadcrumbs/breadcrumbs-context.js +0 -18
- package/cjs/components/breadcrumbs/breadcrumbs-item.js +0 -20
- package/cjs/components/breadcrumbs/breadcrumbs.js +0 -11
- package/cjs/components/breadcrumbs/index.js +0 -18
- package/cjs/components/button/button.js +0 -37
- package/cjs/components/button/icon-button.js +0 -10
- package/cjs/components/button/index.js +0 -18
- package/cjs/components/button-group/button-group.js +0 -9
- package/cjs/components/button-group/index.js +0 -17
- package/cjs/components/caption/caption.js +0 -25
- package/cjs/components/caption/icons.js +0 -20
- package/cjs/components/caption/index.js +0 -17
- package/cjs/components/checkbox/checkbox.js +0 -14
- package/cjs/components/checkbox/index.js +0 -17
- package/cjs/components/color-picker/color-picker-button.js +0 -15
- package/cjs/components/color-picker/color-picker.js +0 -13
- package/cjs/components/color-picker/index.js +0 -17
- package/cjs/components/date-picker/calendar-grid-head.js +0 -15
- package/cjs/components/date-picker/calendar-grid.js +0 -105
- package/cjs/components/date-picker/calendar-header.js +0 -46
- package/cjs/components/date-picker/calendar.js +0 -23
- package/cjs/components/date-picker/date-picker.js +0 -19
- package/cjs/components/date-picker/date-range-picker.js +0 -60
- package/cjs/components/date-picker/date-range.js +0 -27
- package/cjs/components/date-picker/icons.js +0 -12
- package/cjs/components/date-picker/index.js +0 -18
- package/cjs/components/date-picker-popover/date-picker-popover.js +0 -20
- package/cjs/components/date-picker-popover/index.js +0 -17
- package/cjs/components/date-range-picker-popover/date-range-picker-popover-footer.js +0 -9
- package/cjs/components/date-range-picker-popover/date-range-picker-popover-presets.js +0 -34
- package/cjs/components/date-range-picker-popover/date-range-picker-popover.js +0 -54
- package/cjs/components/date-range-picker-popover/index.js +0 -18
- package/cjs/components/date-range-picker-popover/types.js +0 -2
- package/cjs/components/dialog/dialog-footer.js +0 -9
- package/cjs/components/dialog/dialog-header.js +0 -16
- package/cjs/components/dialog/dialog.js +0 -46
- package/cjs/components/dialog/index.js +0 -20
- package/cjs/components/dialog/x-mark-icon.js +0 -8
- package/cjs/components/empty-state/empty-state.js +0 -9
- package/cjs/components/empty-state/index.js +0 -17
- package/cjs/components/file-picker/file-picker.js +0 -44
- package/cjs/components/file-picker/index.js +0 -17
- package/cjs/components/filter-buttons/filter-button.js +0 -9
- package/cjs/components/filter-buttons/filter-buttons.js +0 -26
- package/cjs/components/filter-buttons/index.js +0 -18
- package/cjs/components/form-field/form-field.js +0 -25
- package/cjs/components/form-field/index.js +0 -17
- package/cjs/components/index.js +0 -53
- package/cjs/components/label/index.js +0 -17
- package/cjs/components/label/label.js +0 -11
- package/cjs/components/menu/index.js +0 -19
- package/cjs/components/menu/menu-item.js +0 -12
- package/cjs/components/menu/menu-separator.js +0 -9
- package/cjs/components/nav-list/index.js +0 -19
- package/cjs/components/nav-list/nav-list-item.js +0 -19
- package/cjs/components/nav-list/nav-list-title.js +0 -9
- package/cjs/components/nav-list/nav-list.js +0 -9
- package/cjs/components/password-input/icons.js +0 -12
- package/cjs/components/password-input/index.js +0 -17
- package/cjs/components/password-input/password-input.js +0 -28
- package/cjs/components/popover/index.js +0 -17
- package/cjs/components/popover/popover.js +0 -97
- package/cjs/components/portal/index.js +0 -17
- package/cjs/components/portal/portal-context.js +0 -26
- package/cjs/components/portal/portal.js +0 -10
- package/cjs/components/positioner/index.js +0 -17
- package/cjs/components/positioner/types.js +0 -2
- package/cjs/components/radio/index.js +0 -17
- package/cjs/components/radio/radio.js +0 -22
- package/cjs/components/segmented-control/index.js +0 -17
- package/cjs/components/segmented-control/segmented-control-button.js +0 -14
- package/cjs/components/segmented-control/segmented-control.js +0 -47
- package/cjs/components/select/index.js +0 -17
- package/cjs/components/select/select.js +0 -25
- package/cjs/components/selection-control/index.js +0 -17
- package/cjs/components/selection-control/selection-control.js +0 -17
- package/cjs/components/slider/index.js +0 -20
- package/cjs/components/slider/slider-tick-marks.js +0 -16
- package/cjs/components/spinner/index.js +0 -17
- package/cjs/components/spinner/spinner.js +0 -9
- package/cjs/components/switch/index.js +0 -17
- package/cjs/components/switch/switch.js +0 -13
- package/cjs/components/table/icons.js +0 -16
- package/cjs/components/table/index.js +0 -23
- package/cjs/components/table/table-body.js +0 -9
- package/cjs/components/table/table-cell.js +0 -9
- package/cjs/components/table/table-container.js +0 -21
- package/cjs/components/table/table-head-cell.js +0 -28
- package/cjs/components/table/table-head.js +0 -12
- package/cjs/components/table/table-row.js +0 -12
- package/cjs/components/table/table.js +0 -14
- package/cjs/components/tabs/index.js +0 -20
- package/cjs/components/tabs/tab-list.js +0 -66
- package/cjs/components/tabs/tab-panel.js +0 -15
- package/cjs/components/tabs/tab.js +0 -18
- package/cjs/components/tabs/tabs.js +0 -10
- package/cjs/components/tabs/types.js +0 -2
- package/cjs/components/tag/index.js +0 -17
- package/cjs/components/text-input/index.js +0 -17
- package/cjs/components/text-input/text-input.js +0 -24
- package/cjs/components/textarea/index.js +0 -17
- package/cjs/components/textarea/textarea.js +0 -38
- package/cjs/components/toast/index.js +0 -18
- package/cjs/components/toast/toast-button.js +0 -9
- package/cjs/components/toast/toast.js +0 -10
- package/cjs/components/toast/x-mark-icon.js +0 -8
- package/cjs/components/toaster/index.js +0 -17
- package/cjs/components/toaster/toaster.d.ts +0 -40
- package/cjs/components/toaster/toaster.js +0 -134
- package/cjs/components/tooltip/index.js +0 -17
- package/cjs/components/tooltip/tooltip.js +0 -79
- package/cjs/hooks/index.js +0 -20
- package/cjs/index.js +0 -19
- package/cjs/lib/helpers.d.ts +0 -2
- package/cjs/lib/index.js +0 -19
- package/css/draft-components-utilities.min.css +0 -1
- package/css/draft-components.dark.min.css +0 -1
- package/css/draft-components.min.css +0 -1
- package/esm/components/alert/alert.d.ts +0 -10
- package/esm/components/alert/index.d.ts +0 -1
- package/esm/components/alert/index.js +0 -1
- package/esm/components/avatar/avatar.d.ts +0 -13
- package/esm/components/avatar/index.d.ts +0 -1
- package/esm/components/avatar/index.js +0 -1
- package/esm/components/avatar-group/avatar-group.d.ts +0 -7
- package/esm/components/avatar-group/index.d.ts +0 -1
- package/esm/components/avatar-group/index.js +0 -1
- package/esm/components/badge/badge.d.ts +0 -8
- package/esm/components/badge/index.d.ts +0 -1
- package/esm/components/badge/index.js +0 -1
- package/esm/components/breadcrumbs/breadcrumbs-context.d.ts +0 -9
- package/esm/components/breadcrumbs/breadcrumbs-item.d.ts +0 -12
- package/esm/components/breadcrumbs/breadcrumbs.d.ts +0 -7
- package/esm/components/breadcrumbs/index.d.ts +0 -2
- package/esm/components/breadcrumbs/index.js +0 -2
- package/esm/components/button/button.d.ts +0 -19
- package/esm/components/button/icon-button.d.ts +0 -6
- package/esm/components/button/index.d.ts +0 -2
- package/esm/components/button/index.js +0 -2
- package/esm/components/button-group/button-group.d.ts +0 -7
- package/esm/components/button-group/index.d.ts +0 -1
- package/esm/components/button-group/index.js +0 -1
- package/esm/components/caption/caption.d.ts +0 -7
- package/esm/components/caption/icons.d.ts +0 -5
- package/esm/components/caption/index.d.ts +0 -1
- package/esm/components/caption/index.js +0 -1
- package/esm/components/checkbox/checkbox.d.ts +0 -10
- package/esm/components/checkbox/index.d.ts +0 -1
- package/esm/components/checkbox/index.js +0 -1
- package/esm/components/color-picker/color-picker-button.d.ts +0 -12
- package/esm/components/color-picker/color-picker-button.js +0 -11
- package/esm/components/color-picker/color-picker.d.ts +0 -13
- package/esm/components/color-picker/color-picker.js +0 -9
- package/esm/components/color-picker/index.d.ts +0 -1
- package/esm/components/color-picker/index.js +0 -1
- package/esm/components/date-picker/calendar-day.d.ts +0 -17
- package/esm/components/date-picker/calendar-grid-head.d.ts +0 -7
- package/esm/components/date-picker/calendar-grid.d.ts +0 -17
- package/esm/components/date-picker/calendar-header.d.ts +0 -12
- package/esm/components/date-picker/calendar.d.ts +0 -11
- package/esm/components/date-picker/date-helpers.d.ts +0 -22
- package/esm/components/date-picker/date-picker.d.ts +0 -13
- package/esm/components/date-picker/date-range-picker.d.ts +0 -14
- package/esm/components/date-picker/date-range.d.ts +0 -13
- package/esm/components/date-picker/icons.d.ts +0 -3
- package/esm/components/date-picker/index.d.ts +0 -2
- package/esm/components/date-picker/index.js +0 -2
- package/esm/components/date-picker/parse-min-max-props.d.ts +0 -8
- package/esm/components/date-picker-popover/date-picker-popover.d.ts +0 -13
- package/esm/components/date-picker-popover/index.d.ts +0 -1
- package/esm/components/date-picker-popover/index.js +0 -1
- package/esm/components/date-range-picker-popover/date-range-picker-popover-footer.d.ts +0 -9
- package/esm/components/date-range-picker-popover/date-range-picker-popover-presets.d.ts +0 -10
- package/esm/components/date-range-picker-popover/date-range-picker-popover.d.ts +0 -26
- package/esm/components/date-range-picker-popover/helpers.d.ts +0 -2
- package/esm/components/date-range-picker-popover/index.d.ts +0 -2
- package/esm/components/date-range-picker-popover/index.js +0 -2
- package/esm/components/date-range-picker-popover/types.d.ts +0 -10
- package/esm/components/date-range-picker-popover/types.js +0 -1
- package/esm/components/date-range-picker-popover/use-is-compact-view.d.ts +0 -1
- package/esm/components/dialog/dialog-body.d.ts +0 -8
- package/esm/components/dialog/dialog-context.d.ts +0 -15
- package/esm/components/dialog/dialog-footer.d.ts +0 -5
- package/esm/components/dialog/dialog-header.d.ts +0 -8
- package/esm/components/dialog/dialog.d.ts +0 -12
- package/esm/components/dialog/index.d.ts +0 -4
- package/esm/components/dialog/index.js +0 -4
- package/esm/components/dialog/x-mark-icon.d.ts +0 -2
- package/esm/components/empty-state/empty-state.d.ts +0 -11
- package/esm/components/empty-state/index.d.ts +0 -1
- package/esm/components/empty-state/index.js +0 -1
- package/esm/components/file-picker/file-picker.d.ts +0 -13
- package/esm/components/file-picker/index.d.ts +0 -1
- package/esm/components/file-picker/index.js +0 -1
- package/esm/components/filter-buttons/filter-button.d.ts +0 -7
- package/esm/components/filter-buttons/filter-buttons.d.ts +0 -5
- package/esm/components/filter-buttons/index.d.ts +0 -2
- package/esm/components/filter-buttons/index.js +0 -2
- package/esm/components/form-field/form-field.d.ts +0 -15
- package/esm/components/form-field/index.d.ts +0 -1
- package/esm/components/form-field/index.js +0 -1
- package/esm/components/index.d.ts +0 -37
- package/esm/components/label/index.d.ts +0 -1
- package/esm/components/label/index.js +0 -1
- package/esm/components/label/label.d.ts +0 -5
- package/esm/components/menu/index.d.ts +0 -3
- package/esm/components/menu/index.js +0 -3
- package/esm/components/menu/menu-item.d.ts +0 -11
- package/esm/components/menu/menu-separator.d.ts +0 -6
- package/esm/components/menu/menu.d.ts +0 -31
- package/esm/components/nav-list/index.d.ts +0 -3
- package/esm/components/nav-list/index.js +0 -3
- package/esm/components/nav-list/nav-list-item.d.ts +0 -13
- package/esm/components/nav-list/nav-list-title.d.ts +0 -8
- package/esm/components/nav-list/nav-list.d.ts +0 -5
- package/esm/components/password-input/icons.d.ts +0 -3
- package/esm/components/password-input/index.d.ts +0 -1
- package/esm/components/password-input/index.js +0 -1
- package/esm/components/password-input/password-input.d.ts +0 -10
- package/esm/components/popover/index.d.ts +0 -1
- package/esm/components/popover/index.js +0 -1
- package/esm/components/popover/popover.d.ts +0 -49
- package/esm/components/popover/use-page-click.d.ts +0 -16
- package/esm/components/portal/index.d.ts +0 -1
- package/esm/components/portal/index.js +0 -1
- package/esm/components/portal/portal-context.d.ts +0 -6
- package/esm/components/portal/portal.d.ts +0 -5
- package/esm/components/positioner/calc-position.d.ts +0 -32
- package/esm/components/positioner/index.d.ts +0 -1
- package/esm/components/positioner/index.js +0 -1
- package/esm/components/positioner/positioner.d.ts +0 -20
- package/esm/components/positioner/types.d.ts +0 -14
- package/esm/components/positioner/types.js +0 -1
- package/esm/components/radio/index.d.ts +0 -1
- package/esm/components/radio/index.js +0 -1
- package/esm/components/radio/radio.d.ts +0 -11
- package/esm/components/segmented-control/index.d.ts +0 -1
- package/esm/components/segmented-control/index.js +0 -1
- package/esm/components/segmented-control/segmented-control-button.d.ts +0 -10
- package/esm/components/segmented-control/segmented-control.d.ts +0 -15
- package/esm/components/select/index.d.ts +0 -1
- package/esm/components/select/index.js +0 -1
- package/esm/components/select/select.d.ts +0 -46
- package/esm/components/selection-control/index.d.ts +0 -1
- package/esm/components/selection-control/index.js +0 -1
- package/esm/components/selection-control/selection-control.d.ts +0 -14
- package/esm/components/slider/index.d.ts +0 -2
- package/esm/components/slider/index.js +0 -2
- package/esm/components/slider/slider-tick-marks.d.ts +0 -7
- package/esm/components/slider/slider.d.ts +0 -17
- package/esm/components/spinner/index.d.ts +0 -1
- package/esm/components/spinner/index.js +0 -1
- package/esm/components/spinner/spinner.d.ts +0 -7
- package/esm/components/switch/index.d.ts +0 -1
- package/esm/components/switch/index.js +0 -1
- package/esm/components/switch/switch.d.ts +0 -10
- package/esm/components/table/icons.d.ts +0 -4
- package/esm/components/table/index.d.ts +0 -7
- package/esm/components/table/index.js +0 -7
- package/esm/components/table/table-body.d.ts +0 -5
- package/esm/components/table/table-cell.d.ts +0 -5
- package/esm/components/table/table-container.d.ts +0 -13
- package/esm/components/table/table-head-cell.d.ts +0 -10
- package/esm/components/table/table-head.d.ts +0 -7
- package/esm/components/table/table-row.d.ts +0 -7
- package/esm/components/table/table.d.ts +0 -11
- package/esm/components/tabs/index.d.ts +0 -4
- package/esm/components/tabs/index.js +0 -4
- package/esm/components/tabs/tab-list.d.ts +0 -3
- package/esm/components/tabs/tab-panel.d.ts +0 -6
- package/esm/components/tabs/tab.d.ts +0 -7
- package/esm/components/tabs/tabs-context.d.ts +0 -20
- package/esm/components/tabs/tabs.d.ts +0 -7
- package/esm/components/tabs/types.d.ts +0 -2
- package/esm/components/tabs/types.js +0 -1
- package/esm/components/tag/index.d.ts +0 -1
- package/esm/components/tag/index.js +0 -1
- package/esm/components/tag/tag.d.ts +0 -13
- package/esm/components/text-input/index.d.ts +0 -1
- package/esm/components/text-input/index.js +0 -1
- package/esm/components/text-input/text-input.d.ts +0 -21
- package/esm/components/textarea/index.d.ts +0 -1
- package/esm/components/textarea/index.js +0 -1
- package/esm/components/textarea/textarea.d.ts +0 -20
- package/esm/components/toast/index.d.ts +0 -2
- package/esm/components/toast/index.js +0 -2
- package/esm/components/toast/toast-button.d.ts +0 -5
- package/esm/components/toast/toast.d.ts +0 -11
- package/esm/components/toast/x-mark-icon.d.ts +0 -2
- package/esm/components/toaster/index.d.ts +0 -1
- package/esm/components/toaster/index.js +0 -1
- package/esm/components/tooltip/index.d.ts +0 -1
- package/esm/components/tooltip/index.js +0 -1
- package/esm/components/tooltip/tooltip.d.ts +0 -25
- package/esm/hooks/index.d.ts +0 -4
- package/esm/hooks/use-disable-body-scroll.d.ts +0 -5
- package/esm/hooks/use-esc-key-down.d.ts +0 -17
- package/esm/hooks/use-focus-trap.d.ts +0 -15
- package/esm/hooks/use-mount-transition.d.ts +0 -32
- package/esm/index.d.ts +0 -3
- package/esm/lib/helpers.d.ts +0 -2
- package/esm/lib/index.d.ts +0 -3
- package/esm/lib/keyboard-keys.d.ts +0 -14
- package/esm/lib/react-helpers.d.ts +0 -13
|
@@ -1,44 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
exports.DATE_ISO_REGEX = /^([0-9]{4})-?(1[0-2]|0[1-9])-?(3[0-1]|0[1-9]|[1-2][0-9])$/;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const MONTHS_IN_YEAR = 12;
|
|
4
|
+
const DAYS_IN_WEEK = 7;
|
|
5
|
+
const LAST_WEEKDAY = 6;
|
|
6
|
+
const DATE_ISO_REGEX = /^([0-9]{4})-?(1[0-2]|0[1-9])-?(3[0-1]|0[1-9]|[1-2][0-9])$/;
|
|
8
7
|
function addYears(date, amount) {
|
|
9
8
|
// Use ISO date string to deal with years less than 100.
|
|
10
9
|
return parseDateISO(formatDateISOComponents(date.getFullYear() + amount, date.getMonth(), date.getDate()));
|
|
11
10
|
}
|
|
12
|
-
exports.addYears = addYears;
|
|
13
11
|
function setDateYear(date, year) {
|
|
14
12
|
// Use ISO date string to deal with years less than 100.
|
|
15
13
|
return parseDateISO(formatDateISOComponents(year, date.getMonth(), date.getDate()));
|
|
16
14
|
}
|
|
17
|
-
exports.setDateYear = setDateYear;
|
|
18
15
|
function addMonths(date, amount) {
|
|
19
16
|
date = new Date(date);
|
|
20
17
|
date.setMonth(date.getMonth() + amount);
|
|
21
18
|
return date;
|
|
22
19
|
}
|
|
23
|
-
exports.addMonths = addMonths;
|
|
24
20
|
function setDateMonth(date, month) {
|
|
25
21
|
date = new Date(date);
|
|
26
22
|
date.setMonth(month);
|
|
27
23
|
return date;
|
|
28
24
|
}
|
|
29
|
-
exports.setDateMonth = setDateMonth;
|
|
30
25
|
function addDays(date, amount) {
|
|
31
26
|
date = new Date(date);
|
|
32
27
|
date.setDate(date.getDate() + amount);
|
|
33
28
|
return date;
|
|
34
29
|
}
|
|
35
|
-
exports.addDays = addDays;
|
|
36
30
|
function getStartOfMonth(date) {
|
|
37
31
|
date = new Date(date);
|
|
38
32
|
date.setDate(1);
|
|
39
33
|
return date;
|
|
40
34
|
}
|
|
41
|
-
exports.getStartOfMonth = getStartOfMonth;
|
|
42
35
|
function getEndOfMonth(date) {
|
|
43
36
|
date = new Date(date);
|
|
44
37
|
date.setDate(1);
|
|
@@ -46,25 +39,21 @@ function getEndOfMonth(date) {
|
|
|
46
39
|
date.setDate(0);
|
|
47
40
|
return date;
|
|
48
41
|
}
|
|
49
|
-
exports.getEndOfMonth = getEndOfMonth;
|
|
50
42
|
function getWeekday(date, weekStartsOn = 0) {
|
|
51
43
|
let day = date.getDay() - weekStartsOn;
|
|
52
44
|
if (day < 0) {
|
|
53
|
-
day +=
|
|
45
|
+
day += DAYS_IN_WEEK;
|
|
54
46
|
}
|
|
55
47
|
return day;
|
|
56
48
|
}
|
|
57
|
-
exports.getWeekday = getWeekday;
|
|
58
49
|
function getStartOfWeek(date, weekStartsOn = 0) {
|
|
59
50
|
const weekday = getWeekday(date, weekStartsOn);
|
|
60
51
|
return addDays(date, -weekday);
|
|
61
52
|
}
|
|
62
|
-
exports.getStartOfWeek = getStartOfWeek;
|
|
63
53
|
function getEndOfWeek(date, weekStartsOn = 0) {
|
|
64
54
|
const weekday = getWeekday(date, weekStartsOn);
|
|
65
|
-
return addDays(date,
|
|
55
|
+
return addDays(date, LAST_WEEKDAY - weekday);
|
|
66
56
|
}
|
|
67
|
-
exports.getEndOfWeek = getEndOfWeek;
|
|
68
57
|
function getStartOfDay(date) {
|
|
69
58
|
date = new Date(date);
|
|
70
59
|
date.setHours(0);
|
|
@@ -73,32 +62,26 @@ function getStartOfDay(date) {
|
|
|
73
62
|
date.setMilliseconds(0);
|
|
74
63
|
return date;
|
|
75
64
|
}
|
|
76
|
-
exports.getStartOfDay = getStartOfDay;
|
|
77
65
|
function isValidDateISO(value) {
|
|
78
|
-
return
|
|
66
|
+
return DATE_ISO_REGEX.test(value);
|
|
79
67
|
}
|
|
80
|
-
exports.isValidDateISO = isValidDateISO;
|
|
81
68
|
function isSameDay(a, b) {
|
|
82
69
|
return (a.getFullYear() === b.getFullYear() &&
|
|
83
70
|
a.getMonth() === b.getMonth() &&
|
|
84
71
|
a.getDate() === b.getDate());
|
|
85
72
|
}
|
|
86
|
-
exports.isSameDay = isSameDay;
|
|
87
73
|
function isWeekend(date) {
|
|
88
74
|
return date.getDay() === 6 || date.getDay() === 0;
|
|
89
75
|
}
|
|
90
|
-
exports.isWeekend = isWeekend;
|
|
91
76
|
function parseDateISO(date, error = 'The argument must be a date in the ISO format.') {
|
|
92
77
|
if (!isValidDateISO(date)) {
|
|
93
78
|
throw new RangeError(error);
|
|
94
79
|
}
|
|
95
80
|
return getStartOfDay(new Date(date));
|
|
96
81
|
}
|
|
97
|
-
exports.parseDateISO = parseDateISO;
|
|
98
82
|
function toDateISO(date) {
|
|
99
83
|
return formatDateISOComponents(date.getFullYear(), date.getMonth(), date.getDate());
|
|
100
84
|
}
|
|
101
|
-
exports.toDateISO = toDateISO;
|
|
102
85
|
function formatDateISOComponents(year, month, day) {
|
|
103
86
|
return [
|
|
104
87
|
String(year).padStart(4, '0'),
|
|
@@ -106,3 +89,24 @@ function formatDateISOComponents(year, month, day) {
|
|
|
106
89
|
String(day).padStart(2, '0'),
|
|
107
90
|
].join('-');
|
|
108
91
|
}
|
|
92
|
+
|
|
93
|
+
exports.DATE_ISO_REGEX = DATE_ISO_REGEX;
|
|
94
|
+
exports.DAYS_IN_WEEK = DAYS_IN_WEEK;
|
|
95
|
+
exports.LAST_WEEKDAY = LAST_WEEKDAY;
|
|
96
|
+
exports.MONTHS_IN_YEAR = MONTHS_IN_YEAR;
|
|
97
|
+
exports.addDays = addDays;
|
|
98
|
+
exports.addMonths = addMonths;
|
|
99
|
+
exports.addYears = addYears;
|
|
100
|
+
exports.getEndOfMonth = getEndOfMonth;
|
|
101
|
+
exports.getEndOfWeek = getEndOfWeek;
|
|
102
|
+
exports.getStartOfDay = getStartOfDay;
|
|
103
|
+
exports.getStartOfMonth = getStartOfMonth;
|
|
104
|
+
exports.getStartOfWeek = getStartOfWeek;
|
|
105
|
+
exports.getWeekday = getWeekday;
|
|
106
|
+
exports.isSameDay = isSameDay;
|
|
107
|
+
exports.isValidDateISO = isValidDateISO;
|
|
108
|
+
exports.isWeekend = isWeekend;
|
|
109
|
+
exports.parseDateISO = parseDateISO;
|
|
110
|
+
exports.setDateMonth = setDateMonth;
|
|
111
|
+
exports.setDateYear = setDateYear;
|
|
112
|
+
exports.toDateISO = toDateISO;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
const dateHelpers = require('./date-helpers.cjs');
|
|
5
|
+
const reactHelpers = require('../../lib/react-helpers.cjs');
|
|
6
|
+
const parseMinMaxProps = require('./parse-min-max-props.cjs');
|
|
7
|
+
const calendar = require('./calendar.cjs');
|
|
8
|
+
|
|
9
|
+
function DatePicker({ value, onChangeValue, weekStartsOn = 1, min, max, locale, prevMonthButtonLabel, nextMonthButtonLabel, monthSelectLabel, yearInputLabel, className, ...props }) {
|
|
10
|
+
const { minDate, maxDate } = parseMinMaxProps.parseMinMaxProps({ min, max });
|
|
11
|
+
const selectedDay = value && dateHelpers.isValidDateISO(value)
|
|
12
|
+
? dateHelpers.parseDateISO(value)
|
|
13
|
+
: null;
|
|
14
|
+
const getDayProps = (date) => ({
|
|
15
|
+
isSelected: selectedDay != null && dateHelpers.isSameDay(selectedDay, date),
|
|
16
|
+
});
|
|
17
|
+
return (jsxRuntime.jsx("div", { ...props, className: reactHelpers.classNames('dc-datepicker', className), children: jsxRuntime.jsx(calendar.Calendar, { defaultFocusDay: selectedDay, minDate: minDate, maxDate: maxDate, locale: locale, weekStartsOn: weekStartsOn, prevMonthButtonLabel: prevMonthButtonLabel, nextMonthButtonLabel: nextMonthButtonLabel, monthSelectLabel: monthSelectLabel, yearInputLabel: yearInputLabel, getDayProps: getDayProps, onSelectDay: (date) => onChangeValue(dateHelpers.toDateISO(date)) }) }));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
exports.DatePicker = DatePicker;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
const dateRange = require('./date-range.cjs');
|
|
5
|
+
const dateHelpers = require('./date-helpers.cjs');
|
|
6
|
+
const reactHelpers = require('../../lib/react-helpers.cjs');
|
|
7
|
+
const parseMinMaxProps = require('./parse-min-max-props.cjs');
|
|
8
|
+
const react = require('react');
|
|
9
|
+
const calendar = require('./calendar.cjs');
|
|
10
|
+
|
|
11
|
+
function DateRangePicker({ value, onChangeValue, weekStartsOn = 1, min, max, locale, prevMonthButtonLabel, nextMonthButtonLabel, monthSelectLabel, yearInputLabel, className, ...props }) {
|
|
12
|
+
const { minDate, maxDate } = parseMinMaxProps.parseMinMaxProps({ min, max });
|
|
13
|
+
const selectedRange = parseValue(value);
|
|
14
|
+
const [start, setStart] = react.useState(null);
|
|
15
|
+
const [end, setEnd] = react.useState(null);
|
|
16
|
+
const getCalendarDayProps = (date) => {
|
|
17
|
+
let isSelected = false;
|
|
18
|
+
let inRange = false;
|
|
19
|
+
let isRangeStart = false;
|
|
20
|
+
let isRangeEnd = false;
|
|
21
|
+
if (start) {
|
|
22
|
+
const range = start && end
|
|
23
|
+
? dateRange.DateRange.create(start, end)
|
|
24
|
+
: dateRange.DateRange.create(start, start);
|
|
25
|
+
isRangeStart = dateHelpers.isSameDay(range.start, date);
|
|
26
|
+
isRangeEnd = dateHelpers.isSameDay(range.end, date);
|
|
27
|
+
inRange = range.contains(date);
|
|
28
|
+
isSelected = dateHelpers.isSameDay(start, date);
|
|
29
|
+
}
|
|
30
|
+
else if (selectedRange) {
|
|
31
|
+
isRangeStart = dateHelpers.isSameDay(selectedRange.start, date);
|
|
32
|
+
isRangeEnd = dateHelpers.isSameDay(selectedRange.end, date);
|
|
33
|
+
inRange = selectedRange.contains(date);
|
|
34
|
+
isSelected = isRangeStart || isRangeEnd;
|
|
35
|
+
}
|
|
36
|
+
return { isSelected, inRange, isRangeStart, isRangeEnd };
|
|
37
|
+
};
|
|
38
|
+
const updateRange = (date) => {
|
|
39
|
+
if (start) {
|
|
40
|
+
setEnd(date);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
return (jsxRuntime.jsx("div", { ...props, className: reactHelpers.classNames('dc-datepicker', className), children: jsxRuntime.jsx(calendar.Calendar, { defaultFocusDay: selectedRange?.start, minDate: minDate, maxDate: maxDate, locale: locale, weekStartsOn: weekStartsOn, prevMonthButtonLabel: prevMonthButtonLabel, nextMonthButtonLabel: nextMonthButtonLabel, monthSelectLabel: monthSelectLabel, yearInputLabel: yearInputLabel, getDayProps: getCalendarDayProps, onHoverDay: updateRange, onFocusDay: updateRange, onSelectDay: (date) => {
|
|
44
|
+
if (start) {
|
|
45
|
+
setStart(null);
|
|
46
|
+
setEnd(null);
|
|
47
|
+
onChangeValue(dateRange.DateRange.create(start, date).toDateISORange());
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
setStart(date);
|
|
51
|
+
}
|
|
52
|
+
} }) }));
|
|
53
|
+
}
|
|
54
|
+
function parseValue(value) {
|
|
55
|
+
if (value && dateHelpers.isValidDateISO(value.start) && dateHelpers.isValidDateISO(value.end)) {
|
|
56
|
+
return dateRange.DateRange.create(dateHelpers.parseDateISO(value.start), dateHelpers.parseDateISO(value.end));
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
exports.DateRangePicker = DateRangePicker;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const dateHelpers = require('./date-helpers.cjs');
|
|
4
|
+
|
|
5
|
+
class DateRange {
|
|
6
|
+
constructor(start, end) {
|
|
7
|
+
if (start > end) {
|
|
8
|
+
[start, end] = [end, start];
|
|
9
|
+
}
|
|
10
|
+
this.start = start;
|
|
11
|
+
this.end = end;
|
|
12
|
+
}
|
|
13
|
+
static create(start, end) {
|
|
14
|
+
return new DateRange(start, end);
|
|
15
|
+
}
|
|
16
|
+
contains(date) {
|
|
17
|
+
return ((dateHelpers.isSameDay(date, this.start) || date > this.start) &&
|
|
18
|
+
(dateHelpers.isSameDay(date, this.end) || date < this.end));
|
|
19
|
+
}
|
|
20
|
+
toDateISORange() {
|
|
21
|
+
return {
|
|
22
|
+
start: dateHelpers.toDateISO(this.start),
|
|
23
|
+
end: dateHelpers.toDateISO(this.end),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
exports.DateRange = DateRange;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
|
|
5
|
+
function ChevronLeftIcon(props) {
|
|
6
|
+
return (jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", width: "1em", height: "1em", ...props, children: jsxRuntime.jsx("path", { fill: "none", stroke: "currentColor", strokeWidth: 3, strokeLinecap: "round", strokeLinejoin: "round", d: "M15.75 19.5L8.25 12l7.5-7.5" }) }));
|
|
7
|
+
}
|
|
8
|
+
function ChevronRightIcon(props) {
|
|
9
|
+
return (jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", width: "1em", height: "1em", ...props, children: jsxRuntime.jsx("path", { fill: "none", stroke: "currentColor", strokeWidth: 3, strokeLinecap: "round", strokeLinejoin: "round", d: "M8.25 4.5l7.5 7.5-7.5 7.5" }) }));
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
exports.ChevronLeftIcon = ChevronLeftIcon;
|
|
13
|
+
exports.ChevronRightIcon = ChevronRightIcon;
|
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const dateHelpers = require('./date-helpers.cjs');
|
|
4
|
+
|
|
5
5
|
function parseMinMaxProps(props) {
|
|
6
6
|
const min = props.min;
|
|
7
7
|
const max = props.max;
|
|
8
8
|
const minDate = min
|
|
9
|
-
?
|
|
9
|
+
? dateHelpers.parseDateISO(min, "The 'min' property must be a date in the ISO format.")
|
|
10
10
|
: null;
|
|
11
11
|
const maxDate = max
|
|
12
|
-
?
|
|
12
|
+
? dateHelpers.parseDateISO(max, "The 'max' property must be a date in the ISO format.")
|
|
13
13
|
: null;
|
|
14
14
|
if (minDate != null && maxDate != null && minDate >= maxDate) {
|
|
15
15
|
throw new RangeError("'min' property must be less than 'max' property.");
|
|
16
16
|
}
|
|
17
17
|
return { minDate, maxDate };
|
|
18
18
|
}
|
|
19
|
+
|
|
19
20
|
exports.parseMinMaxProps = parseMinMaxProps;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
const reactHelpers = require('../../lib/react-helpers.cjs');
|
|
5
|
+
const react = require('react');
|
|
6
|
+
const popover = require('../popover/popover.cjs');
|
|
7
|
+
const datePicker = require('../date-picker/date-picker.cjs');
|
|
8
|
+
require('../button/button.cjs');
|
|
9
|
+
require('../button/icon-button.cjs');
|
|
10
|
+
require('../select/select.cjs');
|
|
11
|
+
require('../text-input/text-input.cjs');
|
|
12
|
+
|
|
13
|
+
function DatePickerPopover({ defaultIsOpen = false, footer, className, children, value, onChangeValue,
|
|
14
|
+
// DatePickerProps
|
|
15
|
+
min, max, locale, weekStartsOn, prevMonthButtonLabel, nextMonthButtonLabel, monthSelectLabel, yearInputLabel, }) {
|
|
16
|
+
const popoverRef = react.useRef(null);
|
|
17
|
+
const handleChangeValue = (value) => {
|
|
18
|
+
onChangeValue(value);
|
|
19
|
+
popoverRef.current?.close();
|
|
20
|
+
};
|
|
21
|
+
return (jsxRuntime.jsxs(popover.Popover, { ref: popoverRef, className: reactHelpers.classNames('dc-date-picker-popover', className), defaultIsOpen: defaultIsOpen, anchor: children, children: [jsxRuntime.jsx(datePicker.DatePicker, { min: min, max: max, locale: locale, weekStartsOn: weekStartsOn, prevMonthButtonLabel: prevMonthButtonLabel, nextMonthButtonLabel: nextMonthButtonLabel, monthSelectLabel: monthSelectLabel, yearInputLabel: yearInputLabel, value: value, onChangeValue: handleChangeValue }), footer] }));
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
exports.DatePickerPopover = DatePickerPopover;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
const button = require('../button/button.cjs');
|
|
5
|
+
require('../button/icon-button.cjs');
|
|
6
|
+
|
|
7
|
+
function DateRangePickerPopoverFooter({ children, cancelButtonLabel, confirmButtonLabel, onClickCancelButton, onClickConfirmButton, }) {
|
|
8
|
+
return (jsxRuntime.jsxs("div", { className: "dc-date-range-picker-popover__footer", children: [Boolean(children) && (jsxRuntime.jsx("div", { className: "dc-date-range-picker-popover__footer-content", children: children })), jsxRuntime.jsx(button.Button, { className: "dc-date-range-picker-popover__footer-cancel", variant: "tinted", onClick: onClickCancelButton, children: cancelButtonLabel }), jsxRuntime.jsx(button.Button, { className: "dc-date-range-picker-popover__footer-confirm", appearance: "primary", onClick: onClickConfirmButton, children: confirmButtonLabel })] }));
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
exports.DateRangePickerPopoverFooter = DateRangePickerPopoverFooter;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
const react = require('react');
|
|
5
|
+
const helpers = require('./helpers.cjs');
|
|
6
|
+
const select = require('../select/select.cjs');
|
|
7
|
+
const radio = require('../radio/radio.cjs');
|
|
8
|
+
const selectionControl = require('../selection-control/selection-control.cjs');
|
|
9
|
+
|
|
10
|
+
function DateRangePickerPopoverPresets({ isCompactView, customPresetLabel, options, value, onChangeValue, }) {
|
|
11
|
+
const id = react.useId();
|
|
12
|
+
const name = `${id}-date-preset`;
|
|
13
|
+
const selectedOption = helpers.findSelectedOption(value, options);
|
|
14
|
+
const selectedPreset = selectedOption ? selectedOption.preset : '';
|
|
15
|
+
function handleChange(event) {
|
|
16
|
+
const value = event.target.value;
|
|
17
|
+
const option = options.find((option) => option.preset === value);
|
|
18
|
+
if (option) {
|
|
19
|
+
onChangeValue({
|
|
20
|
+
preset: option.preset,
|
|
21
|
+
range: option.range,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (isCompactView) {
|
|
26
|
+
return (jsxRuntime.jsx("div", { className: "dc-date-range-picker-popover__presets", children: jsxRuntime.jsxs(select.Select, { size: "md", isBlock: true, value: selectedPreset, onChange: handleChange, children: [jsxRuntime.jsx("option", { value: "", disabled: true, children: customPresetLabel }), options.map((option) => (jsxRuntime.jsx("option", { value: option.preset, children: option.label }, option.preset)))] }) }));
|
|
27
|
+
}
|
|
28
|
+
return (jsxRuntime.jsx("ul", { className: "dc-date-range-picker-popover__presets", children: options.map((option) => {
|
|
29
|
+
const preset = option.preset;
|
|
30
|
+
const id = `${name}-${preset}`;
|
|
31
|
+
return (jsxRuntime.jsx("li", { children: jsxRuntime.jsx(selectionControl.SelectionControl, { label: option.label, labelFor: id, children: jsxRuntime.jsx(radio.Radio, { icon: "check", id: id, name: name, value: preset, checked: preset === selectedPreset, onChange: handleChange }) }) }, option.preset));
|
|
32
|
+
}) }));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
exports.DateRangePickerPopoverPresets = DateRangePickerPopoverPresets;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
const reactHelpers = require('../../lib/react-helpers.cjs');
|
|
5
|
+
const helpers$1 = require('../../lib/helpers.cjs');
|
|
6
|
+
const helpers = require('./helpers.cjs');
|
|
7
|
+
const react = require('react');
|
|
8
|
+
const useIsCompactView = require('./use-is-compact-view.cjs');
|
|
9
|
+
const popover = require('../popover/popover.cjs');
|
|
10
|
+
require('../button/button.cjs');
|
|
11
|
+
require('../button/icon-button.cjs');
|
|
12
|
+
require('../select/select.cjs');
|
|
13
|
+
require('../text-input/text-input.cjs');
|
|
14
|
+
const dateRangePicker = require('../date-picker/date-range-picker.cjs');
|
|
15
|
+
const dateRangePickerPopoverFooter = require('./date-range-picker-popover-footer.cjs');
|
|
16
|
+
const dateRangePickerPopoverPresets = require('./date-range-picker-popover-presets.cjs');
|
|
17
|
+
|
|
18
|
+
function DateRangePickerPopover({ defaultIsOpen = false, compactViewBreakpoint = '(max-width: 599px)', customPreset = 'custom', customPresetLabel = 'Custom date preset', placement = 'bottom', alignment = 'start', cancelButtonLabel = 'Cancel', confirmButtonLabel = 'Confirm', footer = null, className, options = [], children, value, onChangeValue,
|
|
19
|
+
// DateRangePickerProps
|
|
20
|
+
min, max, locale, weekStartsOn, prevMonthButtonLabel, nextMonthButtonLabel, monthSelectLabel, yearInputLabel, }) {
|
|
21
|
+
const [selection, setSelection] = react.useState(value);
|
|
22
|
+
const popoverRef = react.useRef(null);
|
|
23
|
+
const isCompactView = useIsCompactView.useIsCompactView(compactViewBreakpoint);
|
|
24
|
+
function getPopover() {
|
|
25
|
+
const popover = popoverRef.current;
|
|
26
|
+
helpers$1.assertIfNullable(popover, 'Popover ref was not set');
|
|
27
|
+
return popover;
|
|
28
|
+
}
|
|
29
|
+
function handleClickCancelButton() {
|
|
30
|
+
getPopover().close();
|
|
31
|
+
}
|
|
32
|
+
function handleClickConfirmButton() {
|
|
33
|
+
if (selection) {
|
|
34
|
+
onChangeValue(selection);
|
|
35
|
+
}
|
|
36
|
+
getPopover().close();
|
|
37
|
+
}
|
|
38
|
+
function handleChangeDateRange(range) {
|
|
39
|
+
const selection = { range, preset: customPreset };
|
|
40
|
+
const selectedOption = helpers.findSelectedOption(selection, options);
|
|
41
|
+
if (selectedOption) {
|
|
42
|
+
setSelection({
|
|
43
|
+
preset: selectedOption.preset,
|
|
44
|
+
range: selectedOption.range,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
setSelection(selection);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return (jsxRuntime.jsxs(popover.Popover, { className: reactHelpers.classNames(className, {
|
|
52
|
+
'dc-date-range-picker-popover': true,
|
|
53
|
+
'dc-date-range-picker-popover_compact': isCompactView,
|
|
54
|
+
}), ref: popoverRef, placement: placement, alignment: alignment, anchor: children, defaultIsOpen: defaultIsOpen, onOpen: () => setSelection(value), children: [options.length > 0 && (jsxRuntime.jsx(dateRangePickerPopoverPresets.DateRangePickerPopoverPresets, { isCompactView: isCompactView, customPresetLabel: customPresetLabel, options: options, value: selection, onChangeValue: setSelection })), jsxRuntime.jsx(dateRangePicker.DateRangePicker, { className: "dc-date-range-picker-popover__calendar", min: min, max: max, locale: locale, weekStartsOn: weekStartsOn, prevMonthButtonLabel: prevMonthButtonLabel, nextMonthButtonLabel: nextMonthButtonLabel, monthSelectLabel: monthSelectLabel, yearInputLabel: yearInputLabel, value: selection && selection.range, onChangeValue: handleChangeDateRange }), jsxRuntime.jsx(dateRangePickerPopoverFooter.DateRangePickerPopoverFooter, { cancelButtonLabel: cancelButtonLabel, confirmButtonLabel: confirmButtonLabel, onClickCancelButton: handleClickCancelButton, onClickConfirmButton: handleClickConfirmButton, children: typeof footer === 'function'
|
|
55
|
+
? footer({ selection })
|
|
56
|
+
: footer })] }));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
exports.DateRangePickerPopover = DateRangePickerPopover;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.findSelectedOption = void 0;
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
4
3
|
function findSelectedOption(selection, options) {
|
|
5
4
|
if (!selection) {
|
|
6
5
|
return null;
|
|
@@ -12,4 +11,5 @@ function findSelectedOption(selection, options) {
|
|
|
12
11
|
});
|
|
13
12
|
return selectedOption || null;
|
|
14
13
|
}
|
|
14
|
+
|
|
15
15
|
exports.findSelectedOption = findSelectedOption;
|
package/cjs/components/date-range-picker-popover/{use-is-compact-view.js → use-is-compact-view.cjs}
RENAMED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const react = require('react');
|
|
4
|
+
|
|
5
5
|
function useIsCompactView(breakpoint) {
|
|
6
|
-
const compactViewMediaQuery =
|
|
6
|
+
const compactViewMediaQuery = react.useMemo(() => {
|
|
7
7
|
if (typeof document !== 'undefined') {
|
|
8
8
|
return window.matchMedia(breakpoint);
|
|
9
9
|
}
|
|
10
10
|
return null;
|
|
11
11
|
}, [breakpoint]);
|
|
12
|
-
const [isCompactView, setIsCompactView] =
|
|
13
|
-
|
|
12
|
+
const [isCompactView, setIsCompactView] = react.useState(() => compactViewMediaQuery?.matches || false);
|
|
13
|
+
react.useEffect(() => {
|
|
14
14
|
if (compactViewMediaQuery) {
|
|
15
15
|
const handleChange = () => {
|
|
16
16
|
setIsCompactView(compactViewMediaQuery.matches);
|
|
@@ -23,4 +23,5 @@ function useIsCompactView(breakpoint) {
|
|
|
23
23
|
}, [compactViewMediaQuery]);
|
|
24
24
|
return isCompactView;
|
|
25
25
|
}
|
|
26
|
+
|
|
26
27
|
exports.useIsCompactView = useIsCompactView;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
const react = require('react');
|
|
5
|
+
const helpers = require('../../lib/helpers.cjs');
|
|
6
|
+
const reactHelpers = require('../../lib/react-helpers.cjs');
|
|
7
|
+
|
|
8
8
|
function DialogBody({ scrollShadowTop = false, scrollShadowBottom = false, className, children, }) {
|
|
9
|
-
const ref =
|
|
10
|
-
|
|
9
|
+
const ref = react.useRef(null);
|
|
10
|
+
react.useEffect(() => {
|
|
11
11
|
if (!scrollShadowTop && !scrollShadowBottom) {
|
|
12
12
|
return;
|
|
13
13
|
}
|
|
14
14
|
const el = ref.current;
|
|
15
|
-
|
|
15
|
+
helpers.assertIfNullable(el, 'DialogBody ref was not set');
|
|
16
16
|
const topShadowClass = 'dc-dialog-body_scroll-shadow-top';
|
|
17
17
|
const bottomShadowClass = 'dc-dialog-body_scroll-shadow-bottom';
|
|
18
18
|
const changeShadowsVisibility = () => {
|
|
@@ -36,16 +36,17 @@ function DialogBody({ scrollShadowTop = false, scrollShadowBottom = false, class
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
|
-
const resizeObserver = typeof ResizeObserver
|
|
40
|
-
?
|
|
41
|
-
:
|
|
42
|
-
resizeObserver
|
|
39
|
+
const resizeObserver = typeof ResizeObserver === 'undefined'
|
|
40
|
+
? null
|
|
41
|
+
: new ResizeObserver(changeShadowsVisibility);
|
|
42
|
+
resizeObserver?.observe(el);
|
|
43
43
|
el.addEventListener('scroll', changeShadowsVisibility);
|
|
44
44
|
return () => {
|
|
45
|
-
resizeObserver
|
|
45
|
+
resizeObserver?.unobserve(el);
|
|
46
46
|
el.removeEventListener('scroll', changeShadowsVisibility);
|
|
47
47
|
};
|
|
48
48
|
}, [scrollShadowTop, scrollShadowBottom]);
|
|
49
|
-
return (
|
|
49
|
+
return (jsxRuntime.jsx("div", { ref: ref, className: reactHelpers.classNames('dc-dialog-body', className), children: children }));
|
|
50
50
|
}
|
|
51
|
+
|
|
51
52
|
exports.DialogBody = DialogBody;
|
|
@@ -1,23 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
const DialogContext =
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
const react = require('react');
|
|
5
|
+
|
|
6
|
+
const DialogContext = react.createContext(null);
|
|
7
7
|
function useDialogContext() {
|
|
8
|
-
const context =
|
|
8
|
+
const context = react.useContext(DialogContext);
|
|
9
9
|
if (!context) {
|
|
10
10
|
throw new Error('useDialogContext must be used within DialogProvider');
|
|
11
11
|
}
|
|
12
12
|
return context;
|
|
13
13
|
}
|
|
14
|
-
exports.useDialogContext = useDialogContext;
|
|
15
14
|
function DialogContextProvider(props) {
|
|
16
|
-
return (
|
|
15
|
+
return (jsxRuntime.jsx(DialogContext.Provider, { value: {
|
|
17
16
|
titleId: props.titleId,
|
|
18
17
|
descriptionId: props.descriptionId,
|
|
19
18
|
isOpen: props.isOpen,
|
|
20
19
|
onClose: props.onClose,
|
|
21
20
|
}, children: props.children }));
|
|
22
21
|
}
|
|
22
|
+
|
|
23
23
|
exports.DialogContextProvider = DialogContextProvider;
|
|
24
|
+
exports.useDialogContext = useDialogContext;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
const reactHelpers = require('../../lib/react-helpers.cjs');
|
|
5
|
+
|
|
6
|
+
function DialogFooter({ className, children, }) {
|
|
7
|
+
return (jsxRuntime.jsx("div", { className: reactHelpers.classNames('dc-dialog-footer', className), children: children }));
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
exports.DialogFooter = DialogFooter;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
const reactHelpers = require('../../lib/react-helpers.cjs');
|
|
5
|
+
const dialogContext = require('./dialog-context.cjs');
|
|
6
|
+
require('../button/button.cjs');
|
|
7
|
+
const iconButton = require('../button/icon-button.cjs');
|
|
8
|
+
const xMarkIcon = require('./x-mark-icon.cjs');
|
|
9
|
+
|
|
10
|
+
function DialogHeader({ heading, subheading, className, children, }) {
|
|
11
|
+
const { titleId, descriptionId, onClose, } = dialogContext.useDialogContext();
|
|
12
|
+
const shouldRenderHeading = Boolean(heading);
|
|
13
|
+
const shouldRenderDescription = Boolean(subheading);
|
|
14
|
+
const shouldRenderChildren = Boolean(children);
|
|
15
|
+
return (jsxRuntime.jsxs("div", { className: reactHelpers.classNames(className, 'dc-dialog-header'), children: [jsxRuntime.jsxs("div", { className: "dc-dialog-header__title-bar", children: [shouldRenderHeading && (jsxRuntime.jsx("h2", { id: titleId, className: "dc-dialog-header__heading", children: heading })), jsxRuntime.jsx(iconButton.IconButton, { icon: jsxRuntime.jsx(xMarkIcon.XMarkIcon, { width: 18, height: 18, strokeWidth: 2 }), variant: "plain", className: "dc-dialog-header__close-btn", onClick: () => onClose() })] }), shouldRenderDescription && (jsxRuntime.jsx("div", { id: descriptionId, className: "dc-dialog-header__subheading", children: subheading })), shouldRenderChildren && (jsxRuntime.jsx("div", { className: "dc-dialog-header__body", children: children }))] }));
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
exports.DialogHeader = DialogHeader;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
const react = require('react');
|
|
5
|
+
const reactHelpers = require('../../lib/react-helpers.cjs');
|
|
6
|
+
const useMountTransition = require('../../hooks/use-mount-transition.cjs');
|
|
7
|
+
const useDisableBodyScroll = require('../../hooks/use-disable-body-scroll.cjs');
|
|
8
|
+
const useEscKeyDown = require('../../hooks/use-esc-key-down.cjs');
|
|
9
|
+
const useFocusTrap = require('../../hooks/use-focus-trap.cjs');
|
|
10
|
+
const portal = require('../portal/portal.cjs');
|
|
11
|
+
const dialogContext = require('./dialog-context.cjs');
|
|
12
|
+
|
|
13
|
+
function Dialog({ width = 'md', isOpen = false, openFocusRef, closeFocusRef, onClose, className, children, ...props }) {
|
|
14
|
+
const defaultId = react.useId();
|
|
15
|
+
const dialogRef = react.useRef(null);
|
|
16
|
+
const durationMs = 200;
|
|
17
|
+
const { isMounted, className: transitionClass } = useMountTransition.useMountTransition({
|
|
18
|
+
durationMs,
|
|
19
|
+
isShown: isOpen,
|
|
20
|
+
enterFrom: 'dc-dialog_closed',
|
|
21
|
+
enterTo: 'dc-dialog_opened',
|
|
22
|
+
});
|
|
23
|
+
react.useEffect(() => {
|
|
24
|
+
if (isOpen) {
|
|
25
|
+
const openFocus = openFocusRef?.current;
|
|
26
|
+
const closeFocus = closeFocusRef?.current;
|
|
27
|
+
reactHelpers.focusElement(openFocus);
|
|
28
|
+
return () => reactHelpers.focusElement(closeFocus);
|
|
29
|
+
}
|
|
30
|
+
}, [isOpen, openFocusRef, closeFocusRef]);
|
|
31
|
+
useEscKeyDown.useEscKeyDown(() => {
|
|
32
|
+
onClose();
|
|
33
|
+
}, { isEnabled: isOpen });
|
|
34
|
+
useFocusTrap.useFocusTrap(dialogRef, { isEnabled: isOpen });
|
|
35
|
+
useDisableBodyScroll.useDisableBodyScroll({ isEnabled: isOpen });
|
|
36
|
+
if (!isOpen && !isMounted) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
const id = props.id || defaultId;
|
|
40
|
+
const titleId = `dialog-title-${id}`;
|
|
41
|
+
const descriptionId = `dialog-description-${id}`;
|
|
42
|
+
return (jsxRuntime.jsx(portal.Portal, { children: jsxRuntime.jsxs("div", { style: {
|
|
43
|
+
'--dc-dialog-transition-duration': `${durationMs}ms`,
|
|
44
|
+
}, className: reactHelpers.classNames('dc-dialog', transitionClass), children: [jsxRuntime.jsx("div", { className: "dc-dialog-backdrop" }), jsxRuntime.jsx("div", { ...props, ref: dialogRef, className: reactHelpers.classNames(className, {
|
|
45
|
+
'dc-dialog-modal': true,
|
|
46
|
+
[`dc-dialog-modal_${width}`]: width,
|
|
47
|
+
}), role: "dialog", id: id, "aria-labelledby": titleId, "aria-describedby": descriptionId, "aria-modal": true, children: jsxRuntime.jsx(dialogContext.DialogContextProvider, { titleId: titleId, descriptionId: descriptionId, isOpen: isOpen, onClose: onClose, children: children }) })] }) }));
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
exports.Dialog = Dialog;
|