@codecademy/gamut
68.3.068.3.1-alpha.a2040c.0
dist/DatePicker/DatePickerCalendar/utils/quickActions.js+
dist/DatePicker/DatePickerCalendar/utils/quickActions.jsNew file+98
Index: package/dist/DatePicker/DatePickerCalendar/utils/quickActions.js
===================================================================
--- package/dist/DatePicker/DatePickerCalendar/utils/quickActions.js
+++ package/dist/DatePicker/DatePickerCalendar/utils/quickActions.js
@@ -0,0 +1,98 @@
+import { stringifyLocale } from '../../utils/locale';
+import { capitalizeFirst } from '../Calendar/utils/format';
+const getRelativeDisplayText = ({
+ num,
+ timePeriod,
+ locale
+}) => {
+ const rtf = new Intl.RelativeTimeFormat(stringifyLocale(locale), {
+ numeric: 'auto'
+ });
+ return capitalizeFirst({
+ str: rtf.format(num, timePeriod),
+ locale
+ });
+};
+export const getDefaultSingleQuickActions = locale => [{
+ num: -1,
+ timePeriod: 'day',
+ displayText: getRelativeDisplayText({
+ num: -1,
+ timePeriod: 'day',
+ locale
+ })
+}, {
+ num: 0,
+ timePeriod: 'day',
+ displayText: getRelativeDisplayText({
+ num: 0,
+ timePeriod: 'day',
+ locale
+ })
+}, {
+ num: 1,
+ timePeriod: 'day',
+ displayText: getRelativeDisplayText({
+ num: 1,
+ timePeriod: 'day',
+ locale
+ })
+}];
+export const getDefaultRangeQuickActions = translations => [{
+ num: -7,
+ timePeriod: 'day',
+ displayText: translations.last7DaysDisplayText
+}, {
+ num: -30,
+ timePeriod: 'day',
+ displayText: translations.last30DaysDisplayText
+}, {
+ num: -90,
+ timePeriod: 'day',
+ displayText: translations.last90DaysDisplayText
+}];
+export const computeQuickAction = ({
+ num,
+ timePeriod,
+ isRange,
+ now = new Date()
+}) => {
+ const anchorDate = new Date(now.getFullYear(), now.getMonth(), now.getDate());
+ let startDate;
+ switch (timePeriod) {
+ case 'day':
+ {
+ startDate = new Date(anchorDate);
+ startDate.setDate(startDate.getDate() + num);
+ break;
+ }
+ case 'week':
+ {
+ startDate = new Date(anchorDate);
+ startDate.setDate(startDate.getDate() + num * 7);
+ break;
+ }
+ case 'month':
+ {
+ startDate = new Date(anchorDate);
+ startDate.setDate(startDate.getDate() + num * 30);
+ break;
+ }
+ case 'year':
+ {
+ startDate = new Date(anchorDate);
+ startDate.setDate(startDate.getDate() + num * 365);
+ break;
+ }
+ }
+ if (isRange && startDate.getTime() > anchorDate.getTime()) {
+ return {
+ startDate: anchorDate,
+ endDate: startDate
+ };
+ }
+ return {
+ startDate,
+ endDate: anchorDate
+ };
+};
\ No newline at end of file