@spaced-out/ui-design-system 0.3.38-beta.0 → 0.3.39-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cspell/custom-words.txt +4 -0
- package/.github/workflows/publish_to_npm.yml +32 -4
- package/CHANGELOG.md +16 -0
- package/dts-generator/.editorconfig +10 -0
- package/dts-generator/.gitattributes +4 -0
- package/dts-generator/README.md +63 -0
- package/dts-generator/convert.js +101 -0
- package/dts-generator/package.json +16 -0
- package/gulpfile.js +20 -1
- package/lib/components/Avatar/Avatar.d.ts +264 -0
- package/lib/components/Avatar/index.d.ts +1 -0
- package/lib/components/AvatarGroup/AvatarGroup.d.ts +161 -0
- package/lib/components/AvatarGroup/index.d.ts +1 -0
- package/lib/components/Badge/Badge.d.ts +138 -0
- package/lib/components/Badge/index.d.ts +1 -0
- package/lib/components/Banner/Banner.d.ts +52 -0
- package/lib/components/Banner/index.d.ts +1 -0
- package/lib/components/Breadcrumbs/BreadcrumbLink/BreadcrumbLink.d.ts +50 -0
- package/lib/components/Breadcrumbs/BreadcrumbLink/index.d.ts +1 -0
- package/lib/components/Breadcrumbs/Breadcrumbs.d.ts +64 -0
- package/lib/components/Breadcrumbs/index.d.ts +2 -0
- package/lib/components/Button/Button.d.ts +288 -0
- package/lib/components/Button/index.d.ts +14 -0
- package/lib/components/ButtonDropdown/ButtonDropdown.d.ts +192 -0
- package/lib/components/ButtonDropdown/SimpleButtonDropdown.d.ts +148 -0
- package/lib/components/ButtonDropdown/index.d.ts +2 -0
- package/lib/components/ButtonTabs/ButtonTab/ButtonTab.d.ts +82 -0
- package/lib/components/ButtonTabs/ButtonTab/index.d.ts +1 -0
- package/lib/components/ButtonTabs/ButtonTabDropdown.d.ts +118 -0
- package/lib/components/ButtonTabs/ButtonTabs.d.ts +113 -0
- package/lib/components/ButtonTabs/index.d.ts +2 -0
- package/lib/components/Card/Card.d.ts +163 -0
- package/lib/components/Card/index.d.ts +1 -0
- package/lib/components/Charts/ChartTooltip/index.d.ts +10 -0
- package/lib/components/Charts/ChartWrapper/ChartWrapper.d.ts +184 -0
- package/lib/components/Charts/ChartWrapper/index.d.ts +1 -0
- package/lib/components/Charts/ColumnChart/ColumnChart.d.ts +111 -0
- package/lib/components/Charts/ColumnChart/index.d.ts +1 -0
- package/lib/components/Charts/DonutChart/DonutChart.d.ts +142 -0
- package/lib/components/Charts/DonutChart/index.d.ts +1 -0
- package/lib/components/Charts/FunnelChart/FunnelChart.d.ts +99 -0
- package/lib/components/Charts/FunnelChart/index.d.ts +1 -0
- package/lib/components/Charts/LineChart/LineChart.d.ts +97 -0
- package/lib/components/Charts/LineChart/index.d.ts +1 -0
- package/lib/components/Charts/SpiderChart/SpiderChart.d.ts +95 -0
- package/lib/components/Charts/SpiderChart/index.d.ts +1 -0
- package/lib/components/Charts/index.d.ts +7 -0
- package/lib/components/ChatBubble/ChatBubble.d.ts +203 -0
- package/lib/components/ChatBubble/index.d.ts +1 -0
- package/lib/components/Checkbox/Checkbox.d.ts +165 -0
- package/lib/components/Checkbox/CheckboxGroup.d.ts +113 -0
- package/lib/components/Checkbox/index.d.ts +2 -0
- package/lib/components/Chip/Chip.d.ts +181 -0
- package/lib/components/Chip/index.d.ts +2 -0
- package/lib/components/CircularLoader/CircularLoader.d.ts +56 -0
- package/lib/components/CircularLoader/index.d.ts +1 -0
- package/lib/components/CollapsibleCard/CollapsibleCard.d.ts +134 -0
- package/lib/components/CollapsibleCard/index.d.ts +1 -0
- package/lib/components/Combobox/Combobox.d.ts +292 -0
- package/lib/components/Combobox/helper.d.ts +205 -0
- package/lib/components/Combobox/index.d.ts +1 -0
- package/lib/components/ConditionalWrapper/ConditionalWrapper.d.ts +12 -0
- package/lib/components/ConditionalWrapper/index.d.ts +1 -0
- package/lib/components/DateRangePicker/Calendar.d.ts +119 -0
- package/lib/components/DateRangePicker/DateRangePicker.d.ts +196 -0
- package/lib/components/DateRangePicker/DateRangeWrapper.d.ts +311 -0
- package/lib/components/DateRangePicker/Day.d.ts +70 -0
- package/lib/components/DateRangePicker/index.d.ts +1 -0
- package/lib/components/Dialog/Dialog.d.ts +208 -0
- package/lib/components/Dialog/index.d.ts +1 -0
- package/lib/components/Disclaimer/Disclaimer.d.ts +32 -0
- package/lib/components/Disclaimer/index.d.ts +1 -0
- package/lib/components/Dropdown/Dropdown.d.ts +145 -0
- package/lib/components/Dropdown/SimpleDropdown.d.ts +142 -0
- package/lib/components/Dropdown/index.d.ts +2 -0
- package/lib/components/EmptyState/EmptyImages/CalendarEmptyImage.d.ts +108 -0
- package/lib/components/EmptyState/EmptyImages/ChartEmptyImage.d.ts +194 -0
- package/lib/components/EmptyState/EmptyImages/DataEmptyImage.d.ts +116 -0
- package/lib/components/EmptyState/EmptyImages/FileEmptyImage.d.ts +133 -0
- package/lib/components/EmptyState/EmptyImages/MessageEmptyImage.d.ts +64 -0
- package/lib/components/EmptyState/EmptyImages/UploadEmptyImage.d.ts +67 -0
- package/lib/components/EmptyState/EmptyImages/index.d.ts +6 -0
- package/lib/components/EmptyState/EmptyState.d.ts +82 -0
- package/lib/components/EmptyState/index.d.ts +1 -0
- package/lib/components/ErrorMessage/ErrorImages/ForbiddenImage.d.ts +85 -0
- package/lib/components/ErrorMessage/ErrorImages/NotFoundImage.d.ts +117 -0
- package/lib/components/ErrorMessage/ErrorImages/ServerErrorImage.d.ts +237 -0
- package/lib/components/ErrorMessage/ErrorImages/UnauthorizedImage.d.ts +73 -0
- package/lib/components/ErrorMessage/ErrorImages/index.d.ts +4 -0
- package/lib/components/ErrorMessage/ErrorMessage.d.ts +86 -0
- package/lib/components/ErrorMessage/index.d.ts +1 -0
- package/lib/components/FileUpload/FileBlock/FileBlock.d.ts +137 -0
- package/lib/components/FileUpload/FileBlock/index.d.ts +1 -0
- package/lib/components/FileUpload/FileUpload.d.ts +190 -0
- package/lib/components/FileUpload/index.d.ts +2 -0
- package/lib/components/FocusManager/FocusManager.d.ts +52 -0
- package/lib/components/FocusManager/index.d.ts +1 -0
- package/lib/components/FocusManagerWithArrowKeyNavigation/FocusManagerWithArrowKeyNavigation.d.ts +137 -0
- package/lib/components/FocusManagerWithArrowKeyNavigation/index.d.ts +1 -0
- package/lib/components/FormTitleWrapper/FormTitleWrapper.d.ts +62 -0
- package/lib/components/FormTitleWrapper/index.d.ts +1 -0
- package/lib/components/Grid/Grid.d.ts +104 -0
- package/lib/components/Grid/index.d.ts +1 -0
- package/lib/components/Icon/ClickableIcon.d.ts +101 -0
- package/lib/components/Icon/Icon.d.ts +71 -0
- package/lib/components/Icon/Icon.docs.d.ts +138 -0
- package/lib/components/Icon/SemanticIcon.d.ts +42 -0
- package/lib/components/Icon/index.d.ts +3 -0
- package/lib/components/InContextAlert/InContextAlert.d.ts +210 -0
- package/lib/components/InContextAlert/index.d.ts +1 -0
- package/lib/components/InlineDropdown/InlineDropdown.d.ts +146 -0
- package/lib/components/InlineDropdown/SimpleInlineDropdown.d.ts +145 -0
- package/lib/components/InlineDropdown/index.d.ts +2 -0
- package/lib/components/Input/Input.d.ts +327 -0
- package/lib/components/Input/index.d.ts +1 -0
- package/lib/components/KPIBox/KPIBox.d.ts +89 -0
- package/lib/components/KPIBox/index.d.ts +1 -0
- package/lib/components/LinearLoader/LinearLoader.d.ts +44 -0
- package/lib/components/LinearLoader/index.d.ts +1 -0
- package/lib/components/Link/Link.d.ts +225 -0
- package/lib/components/Link/index.d.ts +1 -0
- package/lib/components/Menu/Menu.d.ts +379 -0
- package/lib/components/Menu/MenuOptionButton.d.ts +199 -0
- package/lib/components/Menu/index.d.ts +2 -0
- package/lib/components/Modal/Modal.d.ts +354 -0
- package/lib/components/Modal/index.d.ts +14 -0
- package/lib/components/Notification/Notification.d.ts +147 -0
- package/lib/components/Notification/index.d.ts +1 -0
- package/lib/components/OptionButton/OptionButton.d.ts +150 -0
- package/lib/components/OptionButton/SimpleOptionButton.d.ts +150 -0
- package/lib/components/OptionButton/index.d.ts +2 -0
- package/lib/components/PageTitle/PageTitle.d.ts +256 -0
- package/lib/components/PageTitle/index.d.ts +1 -0
- package/lib/components/Pagination/Pagination.d.ts +144 -0
- package/lib/components/Pagination/PaginationItem.d.ts +136 -0
- package/lib/components/Pagination/index.d.ts +1 -0
- package/lib/components/Panel/Panel.d.ts +168 -0
- package/lib/components/Panel/index.d.ts +9 -0
- package/lib/components/ProgressDonut/ProgressDonut.d.ts +102 -0
- package/lib/components/ProgressDonut/index.d.ts +1 -0
- package/lib/components/PromptChip/PromptChip.d.ts +167 -0
- package/lib/components/PromptChip/index.d.ts +1 -0
- package/lib/components/PromptInput/PromptInput.d.ts +189 -0
- package/lib/components/PromptInput/index.d.ts +1 -0
- package/lib/components/RadioButton/RadioButton.d.ts +132 -0
- package/lib/components/RadioButton/RadioGroup.d.ts +88 -0
- package/lib/components/RadioButton/index.d.ts +2 -0
- package/lib/components/RadioTile/RadioTile.d.ts +109 -0
- package/lib/components/RadioTile/index.d.ts +1 -0
- package/lib/components/RangeSlider/RangeSlider.d.ts +207 -0
- package/lib/components/RangeSlider/index.d.ts +1 -0
- package/lib/components/Rating/Rating.d.ts +131 -0
- package/lib/components/Rating/index.d.ts +1 -0
- package/lib/components/ScoreBar/ScoreBar.d.ts +122 -0
- package/lib/components/ScoreBar/index.d.ts +1 -0
- package/lib/components/SearchInput/SearchInput.d.ts +79 -0
- package/lib/components/SearchInput/index.d.ts +2 -0
- package/lib/components/Separator/Separator.d.ts +51 -0
- package/lib/components/Separator/index.d.ts +1 -0
- package/lib/components/Shimmer/Shimmer.d.ts +131 -0
- package/lib/components/Shimmer/index.d.ts +1 -0
- package/lib/components/SideMenuLink/SideMenuLink.d.ts +336 -0
- package/lib/components/SideMenuLink/index.d.ts +1 -0
- package/lib/components/StatusIndicator/StatusIndicator.d.ts +60 -0
- package/lib/components/StatusIndicator/index.d.ts +1 -0
- package/lib/components/Stepper/Step/Step.d.ts +119 -0
- package/lib/components/Stepper/Step/StepContent.d.ts +35 -0
- package/lib/components/Stepper/Step/StepLabel.d.ts +35 -0
- package/lib/components/Stepper/Step/index.d.ts +3 -0
- package/lib/components/Stepper/Stepper.d.ts +60 -0
- package/lib/components/Stepper/index.d.ts +2 -0
- package/lib/components/StickyBar/StickyBar.d.ts +55 -0
- package/lib/components/StickyBar/index.d.ts +1 -0
- package/lib/components/SubMenu/SubMenu.d.ts +89 -0
- package/lib/components/SubMenu/SubMenuGroup.d.ts +156 -0
- package/lib/components/SubMenu/SubMenuItem.d.ts +161 -0
- package/lib/components/SubMenu/SubMenuLink.d.ts +81 -0
- package/lib/components/SubMenu/index.d.ts +4 -0
- package/lib/components/Table/Cell.d.ts +107 -0
- package/lib/components/Table/DefaultRow.d.ts +144 -0
- package/lib/components/Table/DefaultTableHeader.d.ts +236 -0
- package/lib/components/Table/StaticTable.d.ts +198 -0
- package/lib/components/Table/Table.d.ts +113 -0
- package/lib/components/Table/Table.docs.d.ts +532 -0
- package/lib/components/Table/TableActionBar.d.ts +48 -0
- package/lib/components/Table/TableBottomBar.d.ts +20 -0
- package/lib/components/Table/TableTopBar.d.ts +20 -0
- package/lib/components/Table/dummyTableData.d.ts +2189 -0
- package/lib/components/Table/hooks.d.ts +98 -0
- package/lib/components/Table/index.d.ts +8 -0
- package/lib/components/Tabs/Tab/Tab.d.ts +146 -0
- package/lib/components/Tabs/Tab/index.d.ts +1 -0
- package/lib/components/Tabs/TabList/TabDropdown.d.ts +100 -0
- package/lib/components/Tabs/TabList/TabList.d.ts +157 -0
- package/lib/components/Tabs/TabList/index.d.ts +1 -0
- package/lib/components/Tabs/index.d.ts +2 -0
- package/lib/components/Text/Text.d.ts +1021 -0
- package/lib/components/Text/index.d.ts +30 -0
- package/lib/components/TextTile/TextTile.d.ts +40 -0
- package/lib/components/TextTile/index.d.ts +1 -0
- package/lib/components/Textarea/Textarea.d.ts +132 -0
- package/lib/components/Textarea/index.d.ts +2 -0
- package/lib/components/Timeline/Timeline.d.ts +40 -0
- package/lib/components/Timeline/TimelineItem/TimelineItem.d.ts +121 -0
- package/lib/components/Timeline/TimelineItem/index.d.ts +1 -0
- package/lib/components/Timeline/index.d.ts +2 -0
- package/lib/components/Toast/Toast.d.ts +248 -0
- package/lib/components/Toast/ToastContainer.d.ts +140 -0
- package/lib/components/Toast/ToastManager.d.ts +58 -0
- package/lib/components/Toast/index.d.ts +10 -0
- package/lib/components/Toggle/Toggle.d.ts +111 -0
- package/lib/components/Toggle/index.d.ts +1 -0
- package/lib/components/TokenListInput/TokenListInput.d.ts +333 -0
- package/lib/components/TokenListInput/TokenValueChips.d.ts +64 -0
- package/lib/components/TokenListInput/index.d.ts +1 -0
- package/lib/components/Tooltip/Tooltip.d.ts +186 -0
- package/lib/components/Tooltip/index.d.ts +1 -0
- package/lib/components/Truncate/Truncate.d.ts +87 -0
- package/lib/components/Truncate/index.d.ts +2 -0
- package/lib/components/TruncatedTextWithTooltip/TruncatedTextWithTooltip.d.ts +95 -0
- package/lib/components/TruncatedTextWithTooltip/index.d.ts +1 -0
- package/lib/components/Typeahead/SimpleTypeahead.d.ts +141 -0
- package/lib/components/Typeahead/Typeahead.d.ts +217 -0
- package/lib/components/Typeahead/index.d.ts +2 -0
- package/lib/components/WeekdayPicker/WeekdayPicker.d.ts +242 -0
- package/lib/components/WeekdayPicker/index.d.ts +1 -0
- package/lib/components/index.d.ts +71 -0
- package/lib/hooks/index.d.ts +12 -0
- package/lib/hooks/useArbitraryOptionAddition/index.d.ts +1 -0
- package/lib/hooks/useArbitraryOptionAddition/useArbitraryOptionAddition.d.ts +124 -0
- package/lib/hooks/useCopyToClipboard/index.d.ts +1 -0
- package/lib/hooks/useCopyToClipboard/useCopyToClipboard.d.ts +27 -0
- package/lib/hooks/useFileUpload/index.d.ts +1 -0
- package/lib/hooks/useFileUpload/useFileUpload.d.ts +342 -0
- package/lib/hooks/useFilteredOptions/index.d.ts +1 -0
- package/lib/hooks/useFilteredOptions/useFilteredOptions.d.ts +87 -0
- package/lib/hooks/useInputState/index.d.ts +1 -0
- package/lib/hooks/useInputState/useInputState.d.ts +22 -0
- package/lib/hooks/useLockedBody/index.d.ts +1 -0
- package/lib/hooks/useLockedBody/useLockedBody.d.ts +46 -0
- package/lib/hooks/useModal/index.d.ts +1 -0
- package/lib/hooks/useModal/useModal.d.ts +32 -0
- package/lib/hooks/useMountTransition/index.d.ts +24 -0
- package/lib/hooks/usePagination/index.d.ts +1 -0
- package/lib/hooks/usePagination/usePagination.d.ts +140 -0
- package/lib/hooks/useToastPortal/index.d.ts +1 -0
- package/lib/hooks/useToastPortal/useToastPortal.d.ts +31 -0
- package/lib/hooks/useToggle/index.d.ts +1 -0
- package/lib/hooks/useToggle/useToggle.d.ts +11 -0
- package/lib/hooks/useWindowSize/index.d.ts +1 -0
- package/lib/hooks/useWindowSize/useWindowSize.d.ts +28 -0
- package/lib/index.d.ts +5 -0
- package/lib/styles/index.d.ts +267 -0
- package/lib/styles/variables/_border.d.ts +12 -0
- package/lib/styles/variables/_color.d.ts +104 -0
- package/lib/styles/variables/_elevation.d.ts +7 -0
- package/lib/styles/variables/_font.d.ts +30 -0
- package/lib/styles/variables/_motion.d.ts +6 -0
- package/lib/styles/variables/_opacity.d.ts +15 -0
- package/lib/styles/variables/_shadow.d.ts +24 -0
- package/lib/styles/variables/_size.d.ts +57 -0
- package/lib/styles/variables/_space.d.ts +12 -0
- package/lib/types/charts.d.ts +225 -0
- package/lib/types/common.d.ts +10 -0
- package/lib/types/date-range-picker.d.ts +17 -0
- package/lib/types/date-range-picker.js.flow +2 -3
- package/lib/types/index.d.ts +6 -0
- package/lib/types/menu.d.ts +13 -0
- package/lib/types/toast.d.ts +32 -0
- package/lib/types/typography.d.ts +17 -0
- package/lib/utils/array/are-arrays-equal.d.ts +11 -0
- package/lib/utils/array/index.d.ts +1 -0
- package/lib/utils/charts/charts.d.ts +102 -0
- package/lib/utils/charts/columnChart.d.ts +51 -0
- package/lib/utils/charts/donutChart.d.ts +116 -0
- package/lib/utils/charts/funnelChart.d.ts +94 -0
- package/lib/utils/charts/helpers.d.ts +44 -0
- package/lib/utils/charts/index.d.ts +7 -0
- package/lib/utils/charts/lineChart.d.ts +44 -0
- package/lib/utils/charts/spiderChart.d.ts +46 -0
- package/lib/utils/charts/typography.d.ts +42 -0
- package/lib/utils/classify/index.d.ts +27 -0
- package/lib/utils/click-away/click-away.d.ts +194 -0
- package/lib/utils/click-away/index.d.ts +1 -0
- package/lib/utils/date-range-picker/date-range-picker.d.ts +391 -0
- package/lib/utils/date-range-picker/index.d.ts +2 -0
- package/lib/utils/date-range-picker/timezones.d.ts +262 -0
- package/lib/utils/dom/dom.d.ts +245 -0
- package/lib/utils/dom/index.d.ts +1 -0
- package/lib/utils/helpers/helpers.d.ts +48 -0
- package/lib/utils/helpers/index.d.ts +1 -0
- package/lib/utils/index.d.ts +14 -0
- package/lib/utils/makeClassNameComponent/index.d.ts +1 -0
- package/lib/utils/makeClassNameComponent/makeClassNameComponent.d.ts +73 -0
- package/lib/utils/menu/index.d.ts +1 -0
- package/lib/utils/merge-refs/index.d.ts +1 -0
- package/lib/utils/merge-refs/merge-refs.d.ts +15 -0
- package/lib/utils/rating/index.d.ts +1 -0
- package/lib/utils/rating/rating.d.ts +31 -0
- package/lib/utils/score-bar/index.d.ts +1 -0
- package/lib/utils/score-bar/score-bar.d.ts +54 -0
- package/lib/utils/string/index.d.ts +1 -0
- package/lib/utils/string/string.d.ts +30 -0
- package/lib/utils/token-list-input/token-list-input.d.ts +32 -0
- package/lib/utils/tokens/index.d.ts +1 -0
- package/lib/utils/tokens/tokens.d.ts +230 -0
- package/package.json +5 -5
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
import {$Values} from 'utility-types';
|
|
2
|
+
// @ts-expect-error - strict types for date-fns
|
|
3
|
+
import parseISO from 'date-fns/parseISO';
|
|
4
|
+
import invariant from 'invariant';
|
|
5
|
+
import {chunk, isEmpty, range} from 'lodash';
|
|
6
|
+
// @ts-expect-error[untyped-import]
|
|
7
|
+
import moment from 'moment';
|
|
8
|
+
import type {
|
|
9
|
+
DateRange,
|
|
10
|
+
DateRangePickerError,
|
|
11
|
+
DateRangeWithTimezone,
|
|
12
|
+
TimeUnit,
|
|
13
|
+
} from 'src/types/date-range-picker';
|
|
14
|
+
import type {MenuOption} from '../../components/Menu';
|
|
15
|
+
import {TIMEZONES} from './timezones';
|
|
16
|
+
export const NAVIGATION_ACTION = Object.freeze({
|
|
17
|
+
NEXT: 'next',
|
|
18
|
+
PREV: 'prev',
|
|
19
|
+
});
|
|
20
|
+
export const MARKERS = Object.freeze({
|
|
21
|
+
DATE_RANGE_START: 'FIRST',
|
|
22
|
+
DATE_RANGE_END: 'SECOND',
|
|
23
|
+
});
|
|
24
|
+
export const WEEKDAYS = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];
|
|
25
|
+
export const MONTHS = [
|
|
26
|
+
{
|
|
27
|
+
key: '0',
|
|
28
|
+
label: 'Jan',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
key: '1',
|
|
32
|
+
label: 'Feb',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
key: '2',
|
|
36
|
+
label: 'Mar',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
key: '3',
|
|
40
|
+
label: 'Apr',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
key: '4',
|
|
44
|
+
label: 'May',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
key: '5',
|
|
48
|
+
label: 'Jun',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
key: '6',
|
|
52
|
+
label: 'Jul',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
key: '7',
|
|
56
|
+
label: 'Aug',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
key: '8',
|
|
60
|
+
label: 'Sep',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
key: '9',
|
|
64
|
+
label: 'Oct',
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
key: '10',
|
|
68
|
+
label: 'Nov',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
key: '11',
|
|
72
|
+
label: 'Dec',
|
|
73
|
+
},
|
|
74
|
+
];
|
|
75
|
+
export const DATE_RANGE_PICKER_ERRORS = Object.freeze({
|
|
76
|
+
MIN_MAX_INVALID: {
|
|
77
|
+
type: 'MIN_MAX_INVALID',
|
|
78
|
+
description: 'Given minDate and maxDate are invalid.',
|
|
79
|
+
},
|
|
80
|
+
START_DATE_EARLY: {
|
|
81
|
+
type: 'START_DATE_EARLY',
|
|
82
|
+
description: 'Given startDate can not come before minDate.',
|
|
83
|
+
},
|
|
84
|
+
START_DATE_LATE: {
|
|
85
|
+
type: 'START_DATE_LATE',
|
|
86
|
+
description: 'Given startDate can not come after endDate.',
|
|
87
|
+
},
|
|
88
|
+
END_DATE_LATE: {
|
|
89
|
+
type: 'END_DATE_LATE',
|
|
90
|
+
description: 'Given endDate can not come after maxDate.',
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
export const checkRangeValidity = (
|
|
94
|
+
rangeStart?: string | null | undefined,
|
|
95
|
+
rangeEnd?: string | null | undefined,
|
|
96
|
+
errorBody: DateRangePickerError,
|
|
97
|
+
onError?: (arg0: DateRangePickerError) => void,
|
|
98
|
+
): boolean => {
|
|
99
|
+
const isRangeStartValid = isValid(rangeStart);
|
|
100
|
+
const isRangeEndValid = isRangeStartValid && isValid(rangeEnd);
|
|
101
|
+
const isRangeValid = isRangeEndValid && isSameOrBefore(rangeStart, rangeEnd);
|
|
102
|
+
invariant(isRangeValid, JSON.stringify(errorBody));
|
|
103
|
+
|
|
104
|
+
if (!isRangeValid) {
|
|
105
|
+
onError?.(errorBody);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return isRangeValid;
|
|
109
|
+
};
|
|
110
|
+
export const wrangleMoment = (date?: string | Date): Date => {
|
|
111
|
+
if (date instanceof Date) {
|
|
112
|
+
return date;
|
|
113
|
+
} else if (!date) {
|
|
114
|
+
return new Date();
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
return date instanceof moment ? date.toDate() : parseISO(date);
|
|
118
|
+
};
|
|
119
|
+
export const formatIsoDate = (date?: string | Date): string =>
|
|
120
|
+
moment.utc(date).format('YYYY-MM-DD');
|
|
121
|
+
export const isStartOfRange = ({startDate}: DateRange, date: string): boolean =>
|
|
122
|
+
Boolean(startDate) && moment.utc(date).isSame(moment.utc(startDate), 'd');
|
|
123
|
+
export const isEndOfRange = ({endDate}: DateRange, date: string): boolean =>
|
|
124
|
+
Boolean(endDate) && moment.utc(date).isSame(moment.utc(endDate), 'd');
|
|
125
|
+
export const inDateRange = (
|
|
126
|
+
{startDate, endDate}: DateRange,
|
|
127
|
+
date: string,
|
|
128
|
+
): boolean => {
|
|
129
|
+
if (startDate && endDate) {
|
|
130
|
+
const momentDay = moment.utc(date);
|
|
131
|
+
const momentStartDate = moment.utc(startDate);
|
|
132
|
+
const momentEndDate = moment.utc(endDate);
|
|
133
|
+
return isBetween(momentDay, momentStartDate, momentEndDate);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return false;
|
|
137
|
+
};
|
|
138
|
+
export const isStartDateEndDateSame = ({
|
|
139
|
+
startDate,
|
|
140
|
+
endDate,
|
|
141
|
+
}: DateRange): boolean => {
|
|
142
|
+
if (startDate && endDate) {
|
|
143
|
+
return moment.utc(startDate).isSame(moment.utc(endDate), 'd');
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return false;
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
const getMonthAndYear = (date) => {
|
|
150
|
+
const momentDate = date ? moment.utc(date) : moment.utc();
|
|
151
|
+
return [momentDate.month(), momentDate.year()];
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
export const getDaysInMonth = (date: string): Array<Array<string>> => {
|
|
155
|
+
const startWeek = moment.utc(date).startOf('month').startOf('week');
|
|
156
|
+
const endWeek = moment.utc(date).endOf('month').endOf('week');
|
|
157
|
+
const days = [],
|
|
158
|
+
current = startWeek;
|
|
159
|
+
|
|
160
|
+
while (isBefore(current, endWeek)) {
|
|
161
|
+
days.push(current.clone().format('YYYY-MM-DD'));
|
|
162
|
+
current.add(1, 'd');
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const daysInChunks = chunk(days, 7);
|
|
166
|
+
|
|
167
|
+
// if total rows in calendar are 5 add one more week to the calendar
|
|
168
|
+
if (daysInChunks.length === 5) {
|
|
169
|
+
const nextWeek = getAddedDate(endWeek, WEEKDAYS.length, 'd');
|
|
170
|
+
const extraDays = [];
|
|
171
|
+
|
|
172
|
+
while (isSameOrBefore(current, nextWeek)) {
|
|
173
|
+
extraDays.push(current.clone().format('YYYY-MM-DD'));
|
|
174
|
+
current.add(1, 'd');
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
daysInChunks.push(extraDays);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
return daysInChunks;
|
|
181
|
+
};
|
|
182
|
+
export const getAddedDate = (
|
|
183
|
+
date: string,
|
|
184
|
+
addCount: number,
|
|
185
|
+
timeUnit: TimeUnit,
|
|
186
|
+
): string => formatIsoDate(moment.utc(date).add(addCount, timeUnit));
|
|
187
|
+
export const getSubtractedDate = (
|
|
188
|
+
date: string,
|
|
189
|
+
subtractCount: number,
|
|
190
|
+
timeUnit: TimeUnit,
|
|
191
|
+
): string => formatIsoDate(moment.utc(date).subtract(subtractCount, timeUnit));
|
|
192
|
+
export const getMonthEndDate = (date: string): string =>
|
|
193
|
+
formatIsoDate(moment.utc(date).endOf('M'));
|
|
194
|
+
export const getTimezones = (): Array<MenuOption> =>
|
|
195
|
+
Object.keys(TIMEZONES).reduce((menuOptions, key) => {
|
|
196
|
+
menuOptions.push({
|
|
197
|
+
key,
|
|
198
|
+
label: TIMEZONES[key],
|
|
199
|
+
});
|
|
200
|
+
return menuOptions;
|
|
201
|
+
}, []);
|
|
202
|
+
export const generateAvailableYears = ({
|
|
203
|
+
marker,
|
|
204
|
+
minDate,
|
|
205
|
+
maxDate,
|
|
206
|
+
rangeStartMonth,
|
|
207
|
+
rangeEndMonth,
|
|
208
|
+
}: {
|
|
209
|
+
marker: $Values<typeof MARKERS>;
|
|
210
|
+
minDate: string;
|
|
211
|
+
maxDate: string;
|
|
212
|
+
rangeStartMonth: string;
|
|
213
|
+
rangeEndMonth: string;
|
|
214
|
+
}): Array<MenuOption> => {
|
|
215
|
+
const rangeStartYear = moment.utc(rangeStartMonth).year();
|
|
216
|
+
const rangeEndYear = moment.utc(rangeEndMonth).year();
|
|
217
|
+
|
|
218
|
+
const isWithinRange = (year: number) =>
|
|
219
|
+
marker === MARKERS.DATE_RANGE_START
|
|
220
|
+
? year <= rangeEndYear
|
|
221
|
+
: year >= rangeStartYear;
|
|
222
|
+
|
|
223
|
+
return range(moment.utc(minDate).year(), moment.utc(maxDate).year() + 1)
|
|
224
|
+
.filter((year) => isWithinRange(year))
|
|
225
|
+
.map((year) => ({
|
|
226
|
+
key: year.toString(),
|
|
227
|
+
label: year.toString(),
|
|
228
|
+
}));
|
|
229
|
+
};
|
|
230
|
+
export const getAvailableMonths = ({
|
|
231
|
+
marker,
|
|
232
|
+
minDate,
|
|
233
|
+
maxDate,
|
|
234
|
+
rangeStartMonth,
|
|
235
|
+
rangeEndMonth,
|
|
236
|
+
}: {
|
|
237
|
+
marker: $Values<typeof MARKERS>;
|
|
238
|
+
minDate: string;
|
|
239
|
+
maxDate: string;
|
|
240
|
+
rangeStartMonth: string;
|
|
241
|
+
rangeEndMonth: string;
|
|
242
|
+
}): Array<MenuOption> => {
|
|
243
|
+
const [rangeStartMonthKey, rangeStartYear] = getMonthAndYear(rangeStartMonth);
|
|
244
|
+
const [rangeEndMonthKey, rangeEndYear] = getMonthAndYear(rangeEndMonth);
|
|
245
|
+
const [minDateMonth, minDateYear] = getMonthAndYear(minDate);
|
|
246
|
+
const [maxDateMonth, maxDateYear] = getMonthAndYear(maxDate);
|
|
247
|
+
return MONTHS.filter((month: MenuOption) => {
|
|
248
|
+
const isSameYear = rangeStartYear === rangeEndYear;
|
|
249
|
+
const isFirstAndMinDateYearSame = rangeStartYear === minDateYear;
|
|
250
|
+
const isSecondAndMaxDateYearSame = rangeEndYear === maxDateYear;
|
|
251
|
+
|
|
252
|
+
if (marker === MARKERS.DATE_RANGE_START) {
|
|
253
|
+
if (isSameYear && month.key >= rangeEndMonthKey) {
|
|
254
|
+
return false;
|
|
255
|
+
} else if (isFirstAndMinDateYearSame && month.key < minDateMonth) {
|
|
256
|
+
return false;
|
|
257
|
+
} else {
|
|
258
|
+
return true;
|
|
259
|
+
}
|
|
260
|
+
} else {
|
|
261
|
+
if (isSameYear && month.key <= rangeStartMonthKey) {
|
|
262
|
+
return false;
|
|
263
|
+
} else if (isSecondAndMaxDateYearSame && month.key > maxDateMonth) {
|
|
264
|
+
return false;
|
|
265
|
+
} else {
|
|
266
|
+
return true;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
};
|
|
271
|
+
export const getValidDates = ({
|
|
272
|
+
selectedDateRange,
|
|
273
|
+
minDate,
|
|
274
|
+
maxDate,
|
|
275
|
+
today,
|
|
276
|
+
onError,
|
|
277
|
+
}: {
|
|
278
|
+
selectedDateRange: DateRangeWithTimezone;
|
|
279
|
+
minDate?: string | null | undefined;
|
|
280
|
+
maxDate?: string | null | undefined;
|
|
281
|
+
today: string;
|
|
282
|
+
onError?: (arg0: DateRangePickerError) => void;
|
|
283
|
+
}): {
|
|
284
|
+
validMinDate: string;
|
|
285
|
+
validMaxDate: string;
|
|
286
|
+
validDateRange: DateRange;
|
|
287
|
+
} => {
|
|
288
|
+
const {startDate, endDate} = selectedDateRange;
|
|
289
|
+
const validMaxDate = maxDate && !isEmpty(maxDate) ? maxDate : today;
|
|
290
|
+
const validMinDate =
|
|
291
|
+
minDate && !isEmpty(minDate) ? minDate : getSubtractedDate(today, 8, 'y');
|
|
292
|
+
|
|
293
|
+
const isRangeValid = (min, max, errorMessage) =>
|
|
294
|
+
checkRangeValidity(min, max, errorMessage, onError);
|
|
295
|
+
|
|
296
|
+
// minDate should be after maxDate
|
|
297
|
+
const isMinMaxRangeInvalid = !isRangeValid(
|
|
298
|
+
validMinDate,
|
|
299
|
+
validMaxDate,
|
|
300
|
+
DATE_RANGE_PICKER_ERRORS.MIN_MAX_INVALID,
|
|
301
|
+
);
|
|
302
|
+
// if startDate is defined and then it should be after minDate
|
|
303
|
+
const isStartDateInvalid =
|
|
304
|
+
isMinMaxRangeInvalid ||
|
|
305
|
+
isEmpty(startDate) ||
|
|
306
|
+
!isRangeValid(
|
|
307
|
+
validMinDate,
|
|
308
|
+
startDate,
|
|
309
|
+
DATE_RANGE_PICKER_ERRORS.START_DATE_EARLY,
|
|
310
|
+
);
|
|
311
|
+
|
|
312
|
+
if (isMinMaxRangeInvalid || isStartDateInvalid) {
|
|
313
|
+
return {
|
|
314
|
+
validDateRange: {
|
|
315
|
+
startDate: null,
|
|
316
|
+
endDate: null,
|
|
317
|
+
},
|
|
318
|
+
validMinDate,
|
|
319
|
+
validMaxDate,
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
// if endDate is defined then it should be before maxDate
|
|
324
|
+
const isEndDateInvalid =
|
|
325
|
+
isEmpty(endDate) ||
|
|
326
|
+
!isRangeValid(
|
|
327
|
+
endDate,
|
|
328
|
+
validMaxDate,
|
|
329
|
+
DATE_RANGE_PICKER_ERRORS.END_DATE_LATE,
|
|
330
|
+
);
|
|
331
|
+
// startDate should be before endDate
|
|
332
|
+
const isStartEndRangeInvalid =
|
|
333
|
+
isEndDateInvalid ||
|
|
334
|
+
!isRangeValid(startDate, endDate, DATE_RANGE_PICKER_ERRORS.START_DATE_LATE);
|
|
335
|
+
|
|
336
|
+
if (isEndDateInvalid || isStartEndRangeInvalid) {
|
|
337
|
+
return {
|
|
338
|
+
validDateRange: {
|
|
339
|
+
startDate,
|
|
340
|
+
endDate: null,
|
|
341
|
+
},
|
|
342
|
+
validMinDate,
|
|
343
|
+
validMaxDate,
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
return {
|
|
348
|
+
validDateRange: {
|
|
349
|
+
startDate: isEmpty(startDate) ? null : startDate,
|
|
350
|
+
endDate: isEmpty(endDate) ? null : endDate,
|
|
351
|
+
},
|
|
352
|
+
validMinDate,
|
|
353
|
+
validMaxDate,
|
|
354
|
+
};
|
|
355
|
+
};
|
|
356
|
+
// If date1 is same as date2 w.r.t the unit passed
|
|
357
|
+
export const isSame = (
|
|
358
|
+
date1: string,
|
|
359
|
+
date2: string,
|
|
360
|
+
unit: 'd' | 'month',
|
|
361
|
+
): boolean => moment.utc(date1).isSame(moment.utc(date2), unit);
|
|
362
|
+
// If date1 is before date2
|
|
363
|
+
export const isBefore = (date1: string, date2: string): boolean =>
|
|
364
|
+
moment.utc(date1).isBefore(moment.utc(date2));
|
|
365
|
+
// If date1 is after date2 w.r.t the unit passed
|
|
366
|
+
export const isAfter = (date1: string, date2: string): boolean =>
|
|
367
|
+
moment.utc(date1).isAfter(moment.utc(date2));
|
|
368
|
+
// If date1 is same or before date2 w.r.t the unit passed
|
|
369
|
+
export const isSameOrBefore = (
|
|
370
|
+
date1?: string | null | undefined,
|
|
371
|
+
date2?: string | null | undefined,
|
|
372
|
+
unit?: 'd' | 'month',
|
|
373
|
+
): boolean => moment.utc(date1).isSameOrBefore(moment.utc(date2), unit);
|
|
374
|
+
// If date1 is same or after date2 w.r.t the unit passed
|
|
375
|
+
export const isSameOrAfter = (
|
|
376
|
+
date1?: string | null | undefined,
|
|
377
|
+
date2?: string | null | undefined,
|
|
378
|
+
unit?: 'd' | 'month',
|
|
379
|
+
): boolean => moment.utc(date1).isSameOrAfter(moment.utc(date2), unit);
|
|
380
|
+
// If date is between startRange and endRange
|
|
381
|
+
export const isBetween = (
|
|
382
|
+
date: string,
|
|
383
|
+
startRange: string,
|
|
384
|
+
endRange: string,
|
|
385
|
+
): boolean =>
|
|
386
|
+
moment
|
|
387
|
+
.utc(date)
|
|
388
|
+
.isBetween(moment.utc(startRange), moment.utc(endRange), null, '[]');
|
|
389
|
+
// If the date results in a date that exists in the calendar
|
|
390
|
+
export const isValid = (date?: string | null | undefined): boolean =>
|
|
391
|
+
moment.utc(date).isValid();
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
// @ts-expect-error[untyped-import]
|
|
2
|
+
import moment from 'moment-timezone';
|
|
3
|
+
export const TIMEZONES = {
|
|
4
|
+
'Pacific/Niue': '(GMT-11:00) Niue',
|
|
5
|
+
'Pacific/Pago_Pago': '(GMT-11:00) Pago Pago',
|
|
6
|
+
'Pacific/Honolulu': '(GMT-10:00) Hawaii Time',
|
|
7
|
+
'Pacific/Rarotonga': '(GMT-10:00) Rarotonga',
|
|
8
|
+
'Pacific/Tahiti': '(GMT-10:00) Tahiti',
|
|
9
|
+
'Pacific/Marquesas': '(GMT-09:30) Marquesas',
|
|
10
|
+
'America/Anchorage': '(GMT-09:00) Alaska Time',
|
|
11
|
+
'Pacific/Gambier': '(GMT-09:00) Gambier',
|
|
12
|
+
'America/Los_Angeles': '(GMT-08:00) Pacific Time',
|
|
13
|
+
'America/Tijuana': '(GMT-08:00) Pacific Time - Tijuana',
|
|
14
|
+
'America/Vancouver': '(GMT-08:00) Pacific Time - Vancouver',
|
|
15
|
+
'America/Whitehorse': '(GMT-08:00) Pacific Time - Whitehorse',
|
|
16
|
+
'Pacific/Pitcairn': '(GMT-08:00) Pitcairn',
|
|
17
|
+
'America/Dawson_Creek': '(GMT-07:00) Mountain Time - Dawson Creek',
|
|
18
|
+
'America/Denver': '(GMT-07:00) Mountain Time',
|
|
19
|
+
'America/Edmonton': '(GMT-07:00) Mountain Time - Edmonton',
|
|
20
|
+
'America/Hermosillo': '(GMT-07:00) Mountain Time - Hermosillo',
|
|
21
|
+
'America/Mazatlan': '(GMT-07:00) Mountain Time - Chihuahua, Mazatlan',
|
|
22
|
+
'America/Phoenix': '(GMT-07:00) Mountain Time - Arizona',
|
|
23
|
+
'America/Yellowknife': '(GMT-07:00) Mountain Time - Yellowknife',
|
|
24
|
+
'America/Belize': '(GMT-06:00) Belize',
|
|
25
|
+
'America/Chicago': '(GMT-06:00) Central Time',
|
|
26
|
+
'America/Costa_Rica': '(GMT-06:00) Costa Rica',
|
|
27
|
+
'America/El_Salvador': '(GMT-06:00) El Salvador',
|
|
28
|
+
'America/Guatemala': '(GMT-06:00) Guatemala',
|
|
29
|
+
'America/Managua': '(GMT-06:00) Managua',
|
|
30
|
+
'America/Mexico_City': '(GMT-06:00) Central Time - Mexico City',
|
|
31
|
+
'America/Regina': '(GMT-06:00) Central Time - Regina',
|
|
32
|
+
'America/Tegucigalpa': '(GMT-06:00) Central Time - Tegucigalpa',
|
|
33
|
+
'America/Winnipeg': '(GMT-06:00) Central Time - Winnipeg',
|
|
34
|
+
'Pacific/Galapagos': '(GMT-06:00) Galapagos',
|
|
35
|
+
'America/Bogota': '(GMT-05:00) Bogota',
|
|
36
|
+
'America/Cancun': '(GMT-05:00) America Cancun',
|
|
37
|
+
'America/Cayman': '(GMT-05:00) Cayman',
|
|
38
|
+
'America/Guayaquil': '(GMT-05:00) Guayaquil',
|
|
39
|
+
'America/Havana': '(GMT-05:00) Havana',
|
|
40
|
+
'America/Iqaluit': '(GMT-05:00) Eastern Time - Iqaluit',
|
|
41
|
+
'America/Jamaica': '(GMT-05:00) Jamaica',
|
|
42
|
+
'America/Lima': '(GMT-05:00) Lima',
|
|
43
|
+
'America/Nassau': '(GMT-05:00) Nassau',
|
|
44
|
+
'America/New_York': '(GMT-05:00) Eastern Time',
|
|
45
|
+
'America/Panama': '(GMT-05:00) Panama',
|
|
46
|
+
'America/Port-au-Prince': '(GMT-05:00) Port-au-Prince',
|
|
47
|
+
'America/Rio_Branco': '(GMT-05:00) Rio Branco',
|
|
48
|
+
'America/Toronto': '(GMT-05:00) Eastern Time - Toronto',
|
|
49
|
+
'Pacific/Easter': '(GMT-05:00) Easter Island',
|
|
50
|
+
'America/Caracas': '(GMT-04:00) Caracas',
|
|
51
|
+
'America/Asuncion': '(GMT-03:00) Asuncion',
|
|
52
|
+
'America/Barbados': '(GMT-04:00) Barbados',
|
|
53
|
+
'America/Boa_Vista': '(GMT-04:00) Boa Vista',
|
|
54
|
+
'America/Campo_Grande': '(GMT-03:00) Campo Grande',
|
|
55
|
+
'America/Cuiaba': '(GMT-03:00) Cuiaba',
|
|
56
|
+
'America/Curacao': '(GMT-04:00) Curacao',
|
|
57
|
+
'America/Grand_Turk': '(GMT-04:00) Grand Turk',
|
|
58
|
+
'America/Guyana': '(GMT-04:00) Guyana',
|
|
59
|
+
'America/Halifax': '(GMT-04:00) Atlantic Time - Halifax',
|
|
60
|
+
'America/La_Paz': '(GMT-04:00) La Paz',
|
|
61
|
+
'America/Manaus': '(GMT-04:00) Manaus',
|
|
62
|
+
'America/Martinique': '(GMT-04:00) Martinique',
|
|
63
|
+
'America/Port_of_Spain': '(GMT-04:00) Port of Spain',
|
|
64
|
+
'America/Porto_Velho': '(GMT-04:00) Porto Velho',
|
|
65
|
+
'America/Puerto_Rico': '(GMT-04:00) Puerto Rico',
|
|
66
|
+
'America/Santo_Domingo': '(GMT-04:00) Santo Domingo',
|
|
67
|
+
'America/Thule': '(GMT-04:00) Thule',
|
|
68
|
+
'Atlantic/Bermuda': '(GMT-04:00) Bermuda',
|
|
69
|
+
'America/St_Johns': '(GMT-03:30) Newfoundland Time - St. Johns',
|
|
70
|
+
'America/Araguaina': '(GMT-03:00) Araguaina',
|
|
71
|
+
'America/Argentina/Buenos_Aires': '(GMT-03:00) Buenos Aires',
|
|
72
|
+
'America/Bahia': '(GMT-03:00) Salvador',
|
|
73
|
+
'America/Belem': '(GMT-03:00) Belem',
|
|
74
|
+
'America/Cayenne': '(GMT-03:00) Cayenne',
|
|
75
|
+
'America/Fortaleza': '(GMT-03:00) Fortaleza',
|
|
76
|
+
'America/Godthab': '(GMT-03:00) Godthab',
|
|
77
|
+
'America/Maceio': '(GMT-03:00) Maceio',
|
|
78
|
+
'America/Miquelon': '(GMT-03:00) Miquelon',
|
|
79
|
+
'America/Montevideo': '(GMT-03:00) Montevideo',
|
|
80
|
+
'America/Paramaribo': '(GMT-03:00) Paramaribo',
|
|
81
|
+
'America/Recife': '(GMT-03:00) Recife',
|
|
82
|
+
'America/Santiago': '(GMT-03:00) Santiago',
|
|
83
|
+
'America/Sao_Paulo': '(GMT-03:00) Sao Paulo',
|
|
84
|
+
'Antarctica/Palmer': '(GMT-03:00) Palmer',
|
|
85
|
+
'Antarctica/Rothera': '(GMT-03:00) Rothera',
|
|
86
|
+
'Atlantic/Stanley': '(GMT-03:00) Stanley',
|
|
87
|
+
'America/Noronha': '(GMT-02:00) Noronha',
|
|
88
|
+
'Atlantic/South_Georgia': '(GMT-02:00) South Georgia',
|
|
89
|
+
'America/Scoresbysund': '(GMT-01:00) Scoresbysund',
|
|
90
|
+
'Atlantic/Azores': '(GMT-01:00) Azores',
|
|
91
|
+
'Atlantic/Cape_Verde': '(GMT-01:00) Cape Verde',
|
|
92
|
+
'Africa/Abidjan': '(GMT+00:00) Abidjan',
|
|
93
|
+
'Africa/Accra': '(GMT+00:00) Accra',
|
|
94
|
+
'Africa/Bissau': '(GMT+00:00) Bissau',
|
|
95
|
+
'Africa/Casablanca': '(GMT+00:00) Casablanca',
|
|
96
|
+
'Africa/El_Aaiun': '(GMT+00:00) El Aaiun',
|
|
97
|
+
'Africa/Monrovia': '(GMT+00:00) Monrovia',
|
|
98
|
+
'America/Danmarkshavn': '(GMT+00:00) Danmarkshavn',
|
|
99
|
+
'Atlantic/Canary': '(GMT+00:00) Canary Islands',
|
|
100
|
+
'Atlantic/Faroe': '(GMT+00:00) Faeroe',
|
|
101
|
+
'Atlantic/Reykjavik': '(GMT+00:00) Reykjavik',
|
|
102
|
+
'Etc/GMT': '(GMT+00:00) GMT (no daylight saving)',
|
|
103
|
+
'Europe/Dublin': '(GMT+00:00) Dublin',
|
|
104
|
+
'Europe/Lisbon': '(GMT+00:00) Lisbon',
|
|
105
|
+
'Europe/London': '(GMT+00:00) London',
|
|
106
|
+
'Africa/Algiers': '(GMT+01:00) Algiers',
|
|
107
|
+
'Africa/Ceuta': '(GMT+01:00) Ceuta',
|
|
108
|
+
'Africa/Lagos': '(GMT+01:00) Lagos',
|
|
109
|
+
'Africa/Ndjamena': '(GMT+01:00) Ndjamena',
|
|
110
|
+
'Africa/Tunis': '(GMT+01:00) Tunis',
|
|
111
|
+
'Africa/Windhoek': '(GMT+02:00) Windhoek',
|
|
112
|
+
'Europe/Amsterdam': '(GMT+01:00) Amsterdam',
|
|
113
|
+
'Europe/Andorra': '(GMT+01:00) Andorra',
|
|
114
|
+
'Europe/Belgrade': '(GMT+01:00) Central European Time - Belgrade',
|
|
115
|
+
'Europe/Berlin': '(GMT+01:00) Berlin',
|
|
116
|
+
'Europe/Brussels': '(GMT+01:00) Brussels',
|
|
117
|
+
'Europe/Budapest': '(GMT+01:00) Budapest',
|
|
118
|
+
'Europe/Copenhagen': '(GMT+01:00) Copenhagen',
|
|
119
|
+
'Europe/Gibraltar': '(GMT+01:00) Gibraltar',
|
|
120
|
+
'Europe/Luxembourg': '(GMT+01:00) Luxembourg',
|
|
121
|
+
'Europe/Madrid': '(GMT+01:00) Madrid',
|
|
122
|
+
'Europe/Malta': '(GMT+01:00) Malta',
|
|
123
|
+
'Europe/Monaco': '(GMT+01:00) Monaco',
|
|
124
|
+
'Europe/Oslo': '(GMT+01:00) Oslo',
|
|
125
|
+
'Europe/Paris': '(GMT+01:00) Paris',
|
|
126
|
+
'Europe/Prague': '(GMT+01:00) Central European Time - Prague',
|
|
127
|
+
'Europe/Rome': '(GMT+01:00) Rome',
|
|
128
|
+
'Europe/Stockholm': '(GMT+01:00) Stockholm',
|
|
129
|
+
'Europe/Tirane': '(GMT+01:00) Tirane',
|
|
130
|
+
'Europe/Vienna': '(GMT+01:00) Vienna',
|
|
131
|
+
'Europe/Warsaw': '(GMT+01:00) Warsaw',
|
|
132
|
+
'Europe/Zurich': '(GMT+01:00) Zurich',
|
|
133
|
+
'Africa/Cairo': '(GMT+02:00) Cairo',
|
|
134
|
+
'Africa/Johannesburg': '(GMT+02:00) Johannesburg',
|
|
135
|
+
'Africa/Maputo': '(GMT+02:00) Maputo',
|
|
136
|
+
'Africa/Tripoli': '(GMT+02:00) Tripoli',
|
|
137
|
+
'Asia/Amman': '(GMT+02:00) Amman',
|
|
138
|
+
'Asia/Beirut': '(GMT+02:00) Beirut',
|
|
139
|
+
'Asia/Damascus': '(GMT+02:00) Damascus',
|
|
140
|
+
'Asia/Gaza': '(GMT+02:00) Gaza',
|
|
141
|
+
'Asia/Jerusalem': '(GMT+02:00) Jerusalem',
|
|
142
|
+
'Asia/Nicosia': '(GMT+02:00) Nicosia',
|
|
143
|
+
'Europe/Athens': '(GMT+02:00) Athens',
|
|
144
|
+
'Europe/Bucharest': '(GMT+02:00) Bucharest',
|
|
145
|
+
'Europe/Chisinau': '(GMT+02:00) Chisinau',
|
|
146
|
+
'Europe/Helsinki': '(GMT+02:00) Helsinki',
|
|
147
|
+
'Europe/Istanbul': '(GMT+03:00) Istanbul',
|
|
148
|
+
'Europe/Kaliningrad': '(GMT+02:00) Moscow-01 - Kaliningrad',
|
|
149
|
+
'Europe/Kyiv': '(GMT+02:00) Kyiv',
|
|
150
|
+
'Europe/Riga': '(GMT+02:00) Riga',
|
|
151
|
+
'Europe/Sofia': '(GMT+02:00) Sofia',
|
|
152
|
+
'Europe/Tallinn': '(GMT+02:00) Tallinn',
|
|
153
|
+
'Europe/Vilnius': '(GMT+02:00) Vilnius',
|
|
154
|
+
'Africa/Khartoum': '(GMT+03:00) Khartoum',
|
|
155
|
+
'Africa/Nairobi': '(GMT+03:00) Nairobi',
|
|
156
|
+
'Antarctica/Syowa': '(GMT+03:00) Syowa',
|
|
157
|
+
'Asia/Baghdad': '(GMT+03:00) Baghdad',
|
|
158
|
+
'Asia/Qatar': '(GMT+03:00) Qatar',
|
|
159
|
+
'Asia/Riyadh': '(GMT+03:00) Riyadh',
|
|
160
|
+
'Europe/Minsk': '(GMT+03:00) Minsk',
|
|
161
|
+
'Europe/Moscow': '(GMT+03:00) Moscow+00 - Moscow',
|
|
162
|
+
'Asia/Tehran': '(GMT+03:30) Tehran',
|
|
163
|
+
'Asia/Baku': '(GMT+04:00) Baku',
|
|
164
|
+
'Asia/Dubai': '(GMT+04:00) Dubai',
|
|
165
|
+
'Asia/Tbilisi': '(GMT+04:00) Tbilisi',
|
|
166
|
+
'Asia/Yerevan': '(GMT+04:00) Yerevan',
|
|
167
|
+
'Europe/Samara': '(GMT+04:00) Moscow+01 - Samara',
|
|
168
|
+
'Indian/Mahe': '(GMT+04:00) Mahe',
|
|
169
|
+
'Indian/Mauritius': '(GMT+04:00) Mauritius',
|
|
170
|
+
'Indian/Reunion': '(GMT+04:00) Reunion',
|
|
171
|
+
'Asia/Kabul': '(GMT+04:30) Kabul',
|
|
172
|
+
'Antarctica/Mawson': '(GMT+05:00) Mawson',
|
|
173
|
+
'Asia/Aqtau': '(GMT+05:00) Aqtau',
|
|
174
|
+
'Asia/Aqtobe': '(GMT+05:00) Aqtobe',
|
|
175
|
+
'Asia/Ashgabat': '(GMT+05:00) Ashgabat',
|
|
176
|
+
'Asia/Dushanbe': '(GMT+05:00) Dushanbe',
|
|
177
|
+
'Asia/Karachi': '(GMT+05:00) Karachi',
|
|
178
|
+
'Asia/Tashkent': '(GMT+05:00) Tashkent',
|
|
179
|
+
'Asia/Yekaterinburg': '(GMT+05:00) Moscow+02 - Yekaterinburg',
|
|
180
|
+
'Indian/Kerguelen': '(GMT+05:00) Kerguelen',
|
|
181
|
+
'Indian/Maldives': '(GMT+05:00) Maldives',
|
|
182
|
+
'Asia/Calcutta': '(GMT+05:30) India Standard Time',
|
|
183
|
+
'Asia/Colombo': '(GMT+05:30) Colombo',
|
|
184
|
+
'Asia/Katmandu': '(GMT+05:45) Katmandu',
|
|
185
|
+
'Antarctica/Vostok': '(GMT+06:00) Vostok',
|
|
186
|
+
'Asia/Almaty': '(GMT+06:00) Almaty',
|
|
187
|
+
'Asia/Bishkek': '(GMT+06:00) Bishkek',
|
|
188
|
+
'Asia/Dhaka': '(GMT+06:00) Dhaka',
|
|
189
|
+
'Asia/Omsk': '(GMT+06:00) Moscow+03 - Omsk, Novosibirsk',
|
|
190
|
+
'Asia/Thimphu': '(GMT+06:00) Thimphu',
|
|
191
|
+
'Indian/Chagos': '(GMT+06:00) Chagos',
|
|
192
|
+
'Asia/Rangoon': '(GMT+06:30) Rangoon',
|
|
193
|
+
'Indian/Cocos': '(GMT+06:30) Cocos',
|
|
194
|
+
'Antarctica/Davis': '(GMT+07:00) Davis',
|
|
195
|
+
'Asia/Bangkok': '(GMT+07:00) Bangkok',
|
|
196
|
+
'Asia/Hovd': '(GMT+07:00) Hovd',
|
|
197
|
+
'Asia/Jakarta': '(GMT+07:00) Jakarta',
|
|
198
|
+
'Asia/Krasnoyarsk': '(GMT+07:00) Moscow+04 - Krasnoyarsk',
|
|
199
|
+
'Asia/Saigon': '(GMT+07:00) Hanoi',
|
|
200
|
+
'Asia/Ho_Chi_Minh': '(GMT+07:00) Ho Chi Minh',
|
|
201
|
+
'Indian/Christmas': '(GMT+07:00) Christmas',
|
|
202
|
+
'Antarctica/Casey': '(GMT+08:00) Casey',
|
|
203
|
+
'Asia/Brunei': '(GMT+08:00) Brunei',
|
|
204
|
+
'Asia/Choibalsan': '(GMT+08:00) Choibalsan',
|
|
205
|
+
'Asia/Hong_Kong': '(GMT+08:00) Hong Kong',
|
|
206
|
+
'Asia/Irkutsk': '(GMT+08:00) Moscow+05 - Irkutsk',
|
|
207
|
+
'Asia/Kuala_Lumpur': '(GMT+08:00) Kuala Lumpur',
|
|
208
|
+
'Asia/Macau': '(GMT+08:00) Macau',
|
|
209
|
+
'Asia/Makassar': '(GMT+08:00) Makassar',
|
|
210
|
+
'Asia/Manila': '(GMT+08:00) Manila',
|
|
211
|
+
'Asia/Shanghai': '(GMT+08:00) China Time - Beijing',
|
|
212
|
+
'Asia/Singapore': '(GMT+08:00) Singapore',
|
|
213
|
+
'Asia/Taipei': '(GMT+08:00) Taipei',
|
|
214
|
+
'Asia/Ulaanbaatar': '(GMT+08:00) Ulaanbaatar',
|
|
215
|
+
'Australia/Perth': '(GMT+08:00) Western Time - Perth',
|
|
216
|
+
'Asia/Pyongyang': '(GMT+08:30) Pyongyang',
|
|
217
|
+
'Asia/Dili': '(GMT+09:00) Dili',
|
|
218
|
+
'Asia/Jayapura': '(GMT+09:00) Jayapura',
|
|
219
|
+
'Asia/Seoul': '(GMT+09:00) Seoul',
|
|
220
|
+
'Asia/Tokyo': '(GMT+09:00) Tokyo',
|
|
221
|
+
'Asia/Yakutsk': '(GMT+09:00) Moscow+06 - Yakutsk',
|
|
222
|
+
'Pacific/Palau': '(GMT+09:00) Palau',
|
|
223
|
+
'Australia/Adelaide': '(GMT+10:30) Central Time - Adelaide',
|
|
224
|
+
'Australia/Darwin': '(GMT+09:30) Central Time - Darwin',
|
|
225
|
+
'Antarctica/DumontDUrville': "(GMT+10:00) Dumont D'Urville",
|
|
226
|
+
'Asia/Magadan': '(GMT+10:00) Moscow+07 - Magadan',
|
|
227
|
+
'Asia/Vladivostok': '(GMT+10:00) Moscow+07 - Vladivostok',
|
|
228
|
+
'Australia/Brisbane': '(GMT+10:00) Eastern Time - Brisbane',
|
|
229
|
+
'Asia/Sakhalin': '(GMT+11:00) Moscow+08 - Yuzhno-Sakhalin',
|
|
230
|
+
'Australia/Hobart': '(GMT+11:00) Eastern Time - Hobart',
|
|
231
|
+
'Australia/Sydney': '(GMT+11:00) Eastern Time - Melbourne, Sydney',
|
|
232
|
+
'Pacific/Chuuk': '(GMT+10:00) Truk',
|
|
233
|
+
'Pacific/Guam': '(GMT+10:00) Guam',
|
|
234
|
+
'Pacific/Port_Moresby': '(GMT+10:00) Port Moresby',
|
|
235
|
+
'Pacific/Efate': '(GMT+11:00) Efate',
|
|
236
|
+
'Pacific/Guadalcanal': '(GMT+11:00) Guadalcanal',
|
|
237
|
+
'Pacific/Kosrae': '(GMT+11:00) Kosrae',
|
|
238
|
+
'Pacific/Norfolk': '(GMT+11:00) Norfolk',
|
|
239
|
+
'Pacific/Noumea': '(GMT+11:00) Noumea',
|
|
240
|
+
'Pacific/Pohnpei': '(GMT+11:00) Ponape',
|
|
241
|
+
'Asia/Kamchatka': '(GMT+12:00) Moscow+09 - Petropavlovsk-Kamchatskiy',
|
|
242
|
+
'Pacific/Auckland': '(GMT+13:00) Auckland',
|
|
243
|
+
'Pacific/Fiji': '(GMT+13:00) Fiji',
|
|
244
|
+
'Pacific/Funafuti': '(GMT+12:00) Funafuti',
|
|
245
|
+
'Pacific/Kwajalein': '(GMT+12:00) Kwajalein',
|
|
246
|
+
'Pacific/Majuro': '(GMT+12:00) Majuro',
|
|
247
|
+
'Pacific/Nauru': '(GMT+12:00) Nauru',
|
|
248
|
+
'Pacific/Tarawa': '(GMT+12:00) Tarawa',
|
|
249
|
+
'Pacific/Wake': '(GMT+12:00) Wake',
|
|
250
|
+
'Pacific/Wallis': '(GMT+12:00) Wallis',
|
|
251
|
+
'Pacific/Apia': '(GMT+14:00) Apia',
|
|
252
|
+
'Pacific/Enderbury': '(GMT+13:00) Enderbury',
|
|
253
|
+
'Pacific/Fakaofo': '(GMT+13:00) Fakaofo',
|
|
254
|
+
'Pacific/Tongatapu': '(GMT+13:00) Tongatapu',
|
|
255
|
+
'Pacific/Kiritimati': '(GMT+14:00) Kiritimati',
|
|
256
|
+
};
|
|
257
|
+
export const addTimezoneStartOfDay = (date: string, timezone: string): string =>
|
|
258
|
+
moment.tz(date, timezone).startOf('d').toISOString();
|
|
259
|
+
export const addTimezoneEndOfDay = (date: string, timezone: string): string =>
|
|
260
|
+
moment.tz(date, timezone).endOf('d').toISOString();
|
|
261
|
+
export const getTodayInTimezone = (timezone: string): string =>
|
|
262
|
+
moment.tz(timezone).format('YYYY-MM-DD');
|