@activecollab/components 2.0.212 → 2.0.214
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/DatePicker/DatePicker.js +678 -301
- package/dist/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/cjs/components/DatePicker/Styles.js +91 -37
- package/dist/cjs/components/DatePicker/Styles.js.map +1 -1
- package/dist/cjs/components/DatePicker/index.js +0 -11
- package/dist/cjs/components/DatePicker/index.js.map +1 -1
- package/dist/cjs/components/Display/DisplayHours.js +4 -6
- package/dist/cjs/components/Display/DisplayHours.js.map +1 -1
- package/dist/cjs/components/Display/types.js.map +1 -1
- package/dist/cjs/components/SelectDate/SelectDate.js +126 -280
- package/dist/cjs/components/SelectDate/SelectDate.js.map +1 -1
- package/dist/cjs/components/SelectDate/index.js +0 -11
- package/dist/cjs/components/SelectDate/index.js.map +1 -1
- package/dist/cjs/components/Steppers/DateStepper/DateStepper.js +94 -100
- package/dist/cjs/components/Steppers/DateStepper/DateStepper.js.map +1 -1
- package/dist/cjs/components/Steppers/DateStepper/index.js +0 -11
- package/dist/cjs/components/Steppers/DateStepper/index.js.map +1 -1
- package/dist/cjs/components/index.js +0 -11
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/utils/currencyUtils.js +1 -20
- package/dist/cjs/utils/currencyUtils.js.map +1 -1
- package/dist/cjs/utils/currencyUtils.test.js +0 -5
- package/dist/cjs/utils/currencyUtils.test.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.d.ts +64 -26
- package/dist/esm/components/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js +619 -278
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/Styles.d.ts +21 -9
- package/dist/esm/components/DatePicker/Styles.d.ts.map +1 -1
- package/dist/esm/components/DatePicker/Styles.js +89 -30
- package/dist/esm/components/DatePicker/Styles.js.map +1 -1
- package/dist/esm/components/DatePicker/index.d.ts +0 -1
- package/dist/esm/components/DatePicker/index.d.ts.map +1 -1
- package/dist/esm/components/DatePicker/index.js +0 -1
- package/dist/esm/components/DatePicker/index.js.map +1 -1
- package/dist/esm/components/Display/DisplayHours.d.ts.map +1 -1
- package/dist/esm/components/Display/DisplayHours.js +4 -6
- package/dist/esm/components/Display/DisplayHours.js.map +1 -1
- package/dist/esm/components/Display/types.d.ts +1 -1
- package/dist/esm/components/Display/types.d.ts.map +1 -1
- package/dist/esm/components/Display/types.js.map +1 -1
- package/dist/esm/components/SelectDate/SelectDate.d.ts +20 -19
- package/dist/esm/components/SelectDate/SelectDate.d.ts.map +1 -1
- package/dist/esm/components/SelectDate/SelectDate.js +124 -246
- package/dist/esm/components/SelectDate/SelectDate.js.map +1 -1
- package/dist/esm/components/SelectDate/index.d.ts +0 -1
- package/dist/esm/components/SelectDate/index.d.ts.map +1 -1
- package/dist/esm/components/SelectDate/index.js +0 -1
- package/dist/esm/components/SelectDate/index.js.map +1 -1
- package/dist/esm/components/Steppers/DateStepper/DateStepper.d.ts +10 -7
- package/dist/esm/components/Steppers/DateStepper/DateStepper.d.ts.map +1 -1
- package/dist/esm/components/Steppers/DateStepper/DateStepper.js +88 -97
- package/dist/esm/components/Steppers/DateStepper/DateStepper.js.map +1 -1
- package/dist/esm/components/Steppers/DateStepper/index.d.ts +0 -1
- package/dist/esm/components/Steppers/DateStepper/index.d.ts.map +1 -1
- package/dist/esm/components/Steppers/DateStepper/index.js +0 -1
- package/dist/esm/components/Steppers/DateStepper/index.js.map +1 -1
- package/dist/esm/components/index.d.ts +0 -1
- package/dist/esm/components/index.d.ts.map +1 -1
- package/dist/esm/components/index.js +0 -1
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/utils/currencyUtils.d.ts +0 -1
- package/dist/esm/utils/currencyUtils.d.ts.map +1 -1
- package/dist/esm/utils/currencyUtils.js +0 -10
- package/dist/esm/utils/currencyUtils.js.map +1 -1
- package/dist/esm/utils/currencyUtils.test.js +1 -6
- package/dist/esm/utils/currencyUtils.test.js.map +1 -1
- package/dist/index.js +218 -1581
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/package.json +1 -3
- package/dist/cjs/components/DatePicker/CustomNavBarElement.js +0 -41
- package/dist/cjs/components/DatePicker/CustomNavBarElement.js.map +0 -1
- package/dist/cjs/components/DatePicker/DatePickerV2.js +0 -734
- package/dist/cjs/components/DatePicker/DatePickerV2.js.map +0 -1
- package/dist/cjs/components/DatePicker/StylesV2.js +0 -100
- package/dist/cjs/components/DatePicker/StylesV2.js.map +0 -1
- package/dist/cjs/components/Pickers/NavBarElement.js +0 -52
- package/dist/cjs/components/Pickers/NavBarElement.js.map +0 -1
- package/dist/cjs/components/Pickers/Styles.js +0 -76
- package/dist/cjs/components/Pickers/Styles.js.map +0 -1
- package/dist/cjs/components/Pickers/YearMonthPicker.js +0 -80
- package/dist/cjs/components/Pickers/YearMonthPicker.js.map +0 -1
- package/dist/cjs/components/Pickers/index.js +0 -28
- package/dist/cjs/components/Pickers/index.js.map +0 -1
- package/dist/cjs/components/SelectDate/DatePickerForm.js +0 -94
- package/dist/cjs/components/SelectDate/DatePickerForm.js.map +0 -1
- package/dist/cjs/components/SelectDate/SelectDateV2.js +0 -263
- package/dist/cjs/components/SelectDate/SelectDateV2.js.map +0 -1
- package/dist/cjs/components/Steppers/DateStepper/DateStepperV2.js +0 -276
- package/dist/cjs/components/Steppers/DateStepper/DateStepperV2.js.map +0 -1
- package/dist/esm/components/DatePicker/CustomNavBarElement.d.ts +0 -12
- package/dist/esm/components/DatePicker/CustomNavBarElement.d.ts.map +0 -1
- package/dist/esm/components/DatePicker/CustomNavBarElement.js +0 -34
- package/dist/esm/components/DatePicker/CustomNavBarElement.js.map +0 -1
- package/dist/esm/components/DatePicker/DatePickerV2.d.ts +0 -68
- package/dist/esm/components/DatePicker/DatePickerV2.d.ts.map +0 -1
- package/dist/esm/components/DatePicker/DatePickerV2.js +0 -649
- package/dist/esm/components/DatePicker/DatePickerV2.js.map +0 -1
- package/dist/esm/components/DatePicker/StylesV2.d.ts +0 -22
- package/dist/esm/components/DatePicker/StylesV2.d.ts.map +0 -1
- package/dist/esm/components/DatePicker/StylesV2.js +0 -93
- package/dist/esm/components/DatePicker/StylesV2.js.map +0 -1
- package/dist/esm/components/Pickers/NavBarElement.d.ts +0 -9
- package/dist/esm/components/Pickers/NavBarElement.d.ts.map +0 -1
- package/dist/esm/components/Pickers/NavBarElement.js +0 -45
- package/dist/esm/components/Pickers/NavBarElement.js.map +0 -1
- package/dist/esm/components/Pickers/Styles.d.ts +0 -18
- package/dist/esm/components/Pickers/Styles.d.ts.map +0 -1
- package/dist/esm/components/Pickers/Styles.js +0 -56
- package/dist/esm/components/Pickers/Styles.js.map +0 -1
- package/dist/esm/components/Pickers/YearMonthPicker.d.ts +0 -17
- package/dist/esm/components/Pickers/YearMonthPicker.d.ts.map +0 -1
- package/dist/esm/components/Pickers/YearMonthPicker.js +0 -59
- package/dist/esm/components/Pickers/YearMonthPicker.js.map +0 -1
- package/dist/esm/components/Pickers/index.d.ts +0 -3
- package/dist/esm/components/Pickers/index.d.ts.map +0 -1
- package/dist/esm/components/Pickers/index.js +0 -3
- package/dist/esm/components/Pickers/index.js.map +0 -1
- package/dist/esm/components/SelectDate/DatePickerForm.d.ts +0 -39
- package/dist/esm/components/SelectDate/DatePickerForm.d.ts.map +0 -1
- package/dist/esm/components/SelectDate/DatePickerForm.js +0 -80
- package/dist/esm/components/SelectDate/DatePickerForm.js.map +0 -1
- package/dist/esm/components/SelectDate/SelectDateV2.d.ts +0 -102
- package/dist/esm/components/SelectDate/SelectDateV2.d.ts.map +0 -1
- package/dist/esm/components/SelectDate/SelectDateV2.js +0 -223
- package/dist/esm/components/SelectDate/SelectDateV2.js.map +0 -1
- package/dist/esm/components/Steppers/DateStepper/DateStepperV2.d.ts +0 -45
- package/dist/esm/components/Steppers/DateStepper/DateStepperV2.d.ts.map +0 -1
- package/dist/esm/components/Steppers/DateStepper/DateStepperV2.js +0 -241
- package/dist/esm/components/Steppers/DateStepper/DateStepperV2.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectDate.js","names":["React","useCallback","useEffect","useMemo","useState","classnames","moment","DatePickerForm","SelectDateTarget","StyledConfirmDialog","StyledSelectDate","StyledSelectDateButton","formatDate","useLocalization","Menu","Tooltip","getUtcTimestampFromDate","date","utc","getFullYear","getMonth","getDate","unix","isDayInRange","day","data","repeating","from","Date","to","SelectDate","_ref","changeMode","mode","trigger","labelType","saveButtonText","cancelButtonText","clearButtonText","modalHeaderText","modalDiscardMessage","modalDiscardBtnText","modalCancelBtnText","onDayClick","onSave","onCancel","onToggleDatePicker","required","dateRequired","defaultTimezoneAware","longDateFormat","defaultShowDatePicker","firstDayOfWeek","selectedDays","selectionMode","menuClassName","targetClassName","icon","defaultLabelText","targetTextClassName","targetIconClassName","backgroundElementClass","dateFormat","passedDateFormat","defaultMonth","daysToModify","weekends","weekendLabel","nonWorkingDaysOfWeek","nonWorkingDaysOfWeekLabel","weekendIsSelectable","tooltipText","popperTooltipClassName","popperClassName","popperTooltipStyle","position","disableDaysBefore","timezoneAware","setTimezoneAware","localization","labelText","endDate","local","startDate","formattedEndDate","formattedStartDate","modifiedDates","toDate","offsetFrom","utcOffset","offsetTo","handleModifiedSave","selectedDates","Object","prototype","hasOwnProperty","call","undefined","getDefaultMonth","month","setMonth","handleMonthChange","newDates","setNewDates","showDiscardModal","setShowDiscardModal","showDatePicker","setShowDatePicker","disabledSaveButton","handleSave","handleChange","dates","handleBeforeCloseMenu","result","selectedDaysFrom","selectedDaysTo","newDatesFrom","newDatesTo","format","handleClose","handleCancel","event","preventDefault","handleShowDatePicker","handleCloseDiscardModal","handleClear","handleSaveDiscardModal","modifiers","userAvailabilities","filter","type","globalDaysOff","selectableGlobalDaysOff","userAvailability","currentDay","some","weekend","value","getDay","nonWorkingDay","nonWorkingDays","day_disabled","toJSON","slice","dayOfWeek","renderDay","props","titles","push","includes","forEach","title","child","createElement","className","length","key","map","index","renderDatePickerForm","onMonthChange","onChange","onClear","renderTargetEl","forceHideTooltip","active","target","open","onOpen","onBeforeClose","onClose","onConfirm","dialogTitle","dialogContent","cancelBtnText","confirmBtnText","displayName"],"sources":["../../../../src/components/SelectDate/SelectDate.tsx"],"sourcesContent":["import React, {\n ElementType,\n FC,\n useCallback,\n useEffect,\n useMemo,\n useState,\n CSSProperties,\n} from \"react\";\nimport { DayModifiers, DayProps } from \"react-day-picker\";\n\nimport { Placement } from \"@popperjs/core\";\nimport classnames from \"classnames\";\nimport moment from \"moment\";\n\nimport { DatePickerForm } from \"./DatePickerForm\";\nimport { SelectDateTarget } from \"./SelectDateTarget\";\nimport {\n StyledConfirmDialog,\n StyledSelectDate,\n StyledSelectDateButton,\n} from \"./Styles\";\nimport { DaysToModifyV1 } from \"./types\";\nimport { formatDate } from \"../../utils/dateUtils\";\nimport { useLocalization } from \"../Localization\";\nimport { Menu } from \"../Menu/Menu\";\nimport { Tooltip } from \"../Tooltip/Tooltip\";\n\nconst getUtcTimestampFromDate = (date: Date): number => {\n return moment\n .utc([date.getFullYear(), date.getMonth(), date.getDate()])\n .unix();\n};\n\nconst isDayInRange = (day: Date, data: DaysToModifyV1): boolean => {\n if (data.repeating) {\n const from = new Date(\n day.getFullYear(),\n data.from.getMonth(),\n data.from.getDate()\n );\n const to = new Date(\n day.getFullYear(),\n data.to.getMonth(),\n data.to.getDate()\n );\n return day >= from && day <= to;\n }\n\n return day >= data.from && day <= data.to;\n};\n\ntype TriggerStringType = \"text\" | \"icon\" | \"inline\";\ntype TriggerFunctionType = (text: string) => JSX.Element;\n\nexport interface ISelectDate {\n /** Change mode - can be atomic and instant */\n changeMode?: \"atomic\" | \"instant\";\n /** Trigger - can be text, icon, inline, or custom render function */\n trigger?: TriggerStringType | TriggerFunctionType;\n /** Save button text */\n saveButtonText?: string;\n /** Cancel button text */\n cancelButtonText?: string;\n /** Clear button text */\n clearButtonText?: string;\n /** Modal header text */\n modalHeaderText?: string;\n /** Modal cancel button text */\n modalCancelBtnText?: string;\n /** Modal discard button text */\n modalDiscardBtnText?: string;\n /** Modal discard message text */\n modalDiscardMessage?: string;\n /** Tooltip text */\n tooltipText?: string;\n /** Called when day is clicked */\n onDayClick?: (day: Date, modifiers: DayModifiers) => void;\n /** Save changes in atomic mode */\n onSave?: (dates?: { from: number; to: number }) => void;\n /** On cancel closes datepicker or opens disard modal in atomic mode */\n onCancel?: () => void;\n /** Clear dates when they are not required */\n onClear?: () => void;\n /** Use this callback to get is picker visible */\n onToggleDatePicker?: (value: boolean) => void;\n /** Set selected day or days */\n selectedDays?: { from: number; to: number };\n /** Set month */\n defaultMonth?: Date;\n /** Set selection range */\n selectionMode?: string;\n /** Set is date required */\n required?: boolean;\n /** Set default show on date picker (only for text and icon mode) */\n defaultShowDatePicker?: boolean;\n /** Long date format (Always show year) */\n longDateFormat?: boolean;\n /** Set is date required */\n defaultTimezoneAware?: boolean;\n /** Set first day of week */\n firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n /** One of icon types */\n icon?: ElementType;\n /** Default Label text */\n defaultLabelText?: string;\n /** Date format */\n dateFormat?: string;\n /** Menu classes */\n menuClassName?: string;\n /** Target element classes */\n targetClassName?: string;\n /** Target element text classes */\n targetTextClassName?: string;\n /** Target element icon classes */\n targetIconClassName?: string;\n /** Background style for clickable element after the menu is open (opacity, color, etc...) */\n backgroundElementClass?: string;\n /** Days to modify */\n daysToModify?: DaysToModifyV1[];\n /** Array of weekend days */\n weekends?: number[];\n /** Weekend label */\n weekendLabel?: string;\n /** Array of nonworking week days */\n nonWorkingDaysOfWeek?: number[];\n /** Nonworking week days label */\n nonWorkingDaysOfWeekLabel?: string;\n /** Allows weekends to be selected */\n weekendIsSelectable?: boolean;\n /** Popper Tooltip style */\n popperTooltipStyle?: CSSProperties;\n /** Popper Tooltip class name*/\n popperTooltipClassName?: string;\n /** Popper class name*/\n popperClassName?: string;\n /** Position of selectDate menu */\n position?: Placement;\n /** Disable days before specified date */\n disableDaysBefore?: Date;\n}\n\nexport const SelectDate: FC<ISelectDate> = ({\n changeMode: mode = \"instant\",\n trigger: labelType = \"text\",\n saveButtonText = \"Save\",\n cancelButtonText = \"Cancel\",\n clearButtonText = \"Clear\",\n modalHeaderText = \"Discard changes?\",\n modalDiscardMessage = \"All unsaved changes will be lost.\",\n modalDiscardBtnText = \"OK\",\n modalCancelBtnText = \"Cancel\",\n onDayClick,\n onSave,\n onCancel,\n onToggleDatePicker,\n required: dateRequired = false,\n defaultTimezoneAware = false,\n longDateFormat = false,\n defaultShowDatePicker = false,\n firstDayOfWeek = 0,\n selectedDays,\n selectionMode = \"custom\",\n menuClassName,\n targetClassName,\n icon,\n defaultLabelText = \"Set...\",\n targetTextClassName,\n targetIconClassName,\n backgroundElementClass,\n dateFormat: passedDateFormat,\n defaultMonth,\n daysToModify = [],\n weekends = [],\n weekendLabel = \"Weekend\",\n nonWorkingDaysOfWeek = [],\n nonWorkingDaysOfWeekLabel = \"Unavailable\",\n weekendIsSelectable = false,\n tooltipText,\n popperTooltipClassName,\n popperClassName,\n popperTooltipStyle,\n position,\n disableDaysBefore,\n}) => {\n const [timezoneAware, setTimezoneAware] = useState(defaultTimezoneAware);\n const localization = useLocalization();\n const dateFormat = passedDateFormat\n ? passedDateFormat\n : localization.dateFormat;\n\n const labelText = useMemo(() => {\n if (!selectedDays) {\n return defaultLabelText;\n } else {\n const endDate = timezoneAware\n ? moment.unix(selectedDays.to).local()\n : moment.unix(selectedDays.to).utc();\n\n const startDate = timezoneAware\n ? moment.unix(selectedDays.from).local()\n : moment.unix(selectedDays.from).utc();\n\n const formattedEndDate = formatDate(endDate, dateFormat, longDateFormat);\n const formattedStartDate = formatDate(\n startDate,\n dateFormat,\n longDateFormat\n );\n\n if (selectedDays.from === selectedDays.to) {\n return formattedEndDate;\n }\n\n return `${formattedStartDate} - ${formattedEndDate}`;\n }\n }, [\n selectedDays,\n dateFormat,\n timezoneAware,\n defaultLabelText,\n longDateFormat,\n ]);\n\n const modifiedDates = useMemo(() => {\n if (\n typeof selectedDays === \"object\" &&\n !!selectedDays.from &&\n !!selectedDays.to\n ) {\n if (timezoneAware) {\n return {\n from: moment.unix(selectedDays.from).toDate(),\n to: moment.unix(selectedDays.to).toDate(),\n };\n }\n const offsetFrom = moment.unix(selectedDays.from).utcOffset() * 60;\n const offsetTo = moment.unix(selectedDays.to).utcOffset() * 60;\n return {\n from: new Date((selectedDays.from - offsetFrom) * 1000),\n to: new Date((selectedDays.to - offsetTo) * 1000),\n };\n }\n }, [selectedDays, timezoneAware]);\n\n const handleModifiedSave = useCallback(\n (selectedDates) => {\n setTimezoneAware(false);\n if (typeof onSave === \"function\") {\n if (\n typeof selectedDates === \"object\" &&\n Object.prototype.hasOwnProperty.call(selectedDates, \"from\") &&\n Object.prototype.hasOwnProperty.call(selectedDates, \"to\")\n ) {\n onSave({\n from: getUtcTimestampFromDate(selectedDates.from),\n to: getUtcTimestampFromDate(selectedDates.to),\n });\n } else {\n onSave(undefined);\n }\n }\n },\n [onSave]\n );\n\n const getDefaultMonth = useCallback(() => {\n let date = new Date();\n\n if (typeof selectedDays === \"object\" && !!selectedDays.from) {\n date = timezoneAware\n ? new Date(selectedDays.from * 1000)\n : new Date(\n (selectedDays.from -\n moment.unix(selectedDays.from).utcOffset() * 60) *\n 1000\n );\n } else if (defaultMonth) {\n date = defaultMonth;\n }\n\n // forcing second day in month\n return new Date(date.getFullYear(), date.getMonth(), 2);\n }, [defaultMonth, selectedDays, timezoneAware]);\n\n const [month, setMonth] = useState(getDefaultMonth);\n\n const handleMonthChange = useCallback(\n (month) => {\n setMonth(month);\n },\n [setMonth]\n );\n\n const [newDates, setNewDates] = useState(modifiedDates);\n const [showDiscardModal, setShowDiscardModal] = useState(false);\n const [showDatePicker, setShowDatePicker] = useState(defaultShowDatePicker);\n\n const disabledSaveButton = useMemo(() => {\n return (\n modifiedDates?.from === newDates?.from &&\n modifiedDates?.to === newDates?.to\n );\n }, [modifiedDates, newDates]);\n\n useEffect(() => {\n setShowDatePicker(defaultShowDatePicker);\n }, [defaultShowDatePicker]);\n\n useEffect(() => {\n setNewDates(modifiedDates);\n }, [modifiedDates]);\n\n useEffect(() => {\n typeof onToggleDatePicker === \"function\" &&\n onToggleDatePicker(showDatePicker);\n }, [showDatePicker, onToggleDatePicker]);\n\n useEffect(() => {\n if (!showDatePicker) {\n setMonth(getDefaultMonth());\n }\n }, [showDatePicker, getDefaultMonth]);\n\n const handleSave = useCallback(() => {\n handleModifiedSave(newDates);\n setShowDatePicker(false);\n }, [newDates, handleModifiedSave]);\n\n const handleChange = useCallback(\n (dates) => {\n if (mode !== \"atomic\") {\n handleModifiedSave(dates);\n }\n setNewDates(dates);\n },\n [mode, handleModifiedSave]\n );\n\n const handleBeforeCloseMenu = useCallback(() => {\n let result = true;\n\n if ((modifiedDates && !newDates) || (!modifiedDates && newDates)) {\n result = false;\n }\n\n const selectedDaysFrom = modifiedDates?.from;\n const selectedDaysTo = modifiedDates?.to;\n const newDatesFrom = newDates?.from;\n const newDatesTo = newDates?.to;\n\n if (\n selectedDaysFrom &&\n newDatesFrom &&\n selectedDaysTo &&\n newDatesTo &&\n (moment(selectedDaysFrom).format(\"DD-MM-YYYY\") !==\n moment(newDatesFrom).format(\"DD-MM-YYYY\") ||\n moment(selectedDaysTo).format(\"DD-MM-YYYY\") !==\n moment(newDatesTo).format(\"DD-MM-YYYY\"))\n ) {\n result = false;\n }\n\n if (!result) {\n setShowDiscardModal(true);\n }\n\n return result;\n }, [modifiedDates, newDates]);\n\n const handleClose = useCallback(() => {\n if (mode !== \"atomic\" || handleBeforeCloseMenu()) {\n typeof onCancel === \"function\" && onCancel();\n setShowDatePicker(false);\n }\n }, [mode, onCancel, handleBeforeCloseMenu]);\n\n const handleCancel = useCallback(\n (event) => {\n event && event.preventDefault();\n return handleClose();\n },\n [handleClose]\n );\n\n const handleShowDatePicker = useCallback(() => {\n setShowDatePicker(!showDatePicker);\n }, [showDatePicker]);\n\n const handleCloseDiscardModal = useCallback(() => {\n setShowDiscardModal(false);\n }, []);\n\n const handleClear = useCallback(() => {\n if (!dateRequired) {\n setNewDates(undefined);\n if (mode === \"instant\") {\n handleModifiedSave(undefined);\n }\n }\n }, [mode, dateRequired, handleModifiedSave]);\n\n const handleSaveDiscardModal = useCallback(() => {\n setNewDates(modifiedDates);\n setShowDiscardModal(false);\n setShowDatePicker(false);\n }, [modifiedDates]);\n\n const modifiers = useMemo(() => {\n const userAvailabilities = daysToModify.filter(\n (data) => data.type === \"user_day_off\"\n );\n const globalDaysOff = daysToModify.filter(\n (data) => data.type === \"global_day_off\"\n );\n const selectableGlobalDaysOff = daysToModify.filter(\n (data) => data.type === \"selectable_global_day_off\"\n );\n return {\n userAvailability: (day: Date): boolean => {\n // construct new date because react-day-picker returns date with hours set\n const currentDay = new Date(\n day.getFullYear(),\n day.getMonth(),\n day.getDate()\n );\n return userAvailabilities.some((data) =>\n isDayInRange(currentDay, data)\n );\n },\n weekend: (day: Date): boolean => {\n return weekends.some((value) => day.getDay() === value);\n },\n nonWorkingDay: (day: Date): boolean => {\n // return true if day is weekend day\n if (weekends.some((value) => value === day.getDay())) {\n return true;\n }\n const nonWorkingDays = [...selectableGlobalDaysOff, ...globalDaysOff];\n const currentDay = new Date(\n day.getFullYear(),\n day.getMonth(),\n day.getDate()\n );\n return nonWorkingDays.some((data) => isDayInRange(currentDay, data));\n },\n day_disabled: (day: Date): boolean => {\n if (disableDaysBefore) {\n if (\n day.toJSON().slice(0, 10) < disableDaysBefore.toJSON().slice(0, 10)\n ) {\n return true;\n }\n }\n // return true if day is weekend day\n if (\n !weekendIsSelectable &&\n weekends.some((value) => value === day.getDay())\n ) {\n return true;\n }\n // construct new date because react-day-picker returns date with hours set\n const currentDay = new Date(\n day.getFullYear(),\n day.getMonth(),\n day.getDate()\n );\n return globalDaysOff.some((data) => isDayInRange(currentDay, data));\n },\n nonWorkingDaysOfWeek: {\n dayOfWeek: nonWorkingDaysOfWeek,\n },\n };\n }, [\n daysToModify,\n nonWorkingDaysOfWeek,\n weekends,\n disableDaysBefore,\n weekendIsSelectable,\n ]);\n\n const renderDay = useCallback(\n (props: DayProps): JSX.Element | null => {\n const titles: string[] = [];\n if (weekends.some((value) => props.date.getDay() === value)) {\n titles.push(weekendLabel);\n }\n\n if (nonWorkingDaysOfWeek.includes(props.date.getDay())) {\n titles.push(nonWorkingDaysOfWeekLabel);\n }\n\n // construct new date because react-day-picker returns date with hours set\n const currentDay = new Date(\n props.date.getFullYear(),\n props.date.getMonth(),\n props.date.getDate()\n );\n\n daysToModify.forEach((data) => {\n if (isDayInRange(currentDay, data)) {\n titles.push(data.title);\n }\n });\n const child = (\n <div className=\"c-DayPicker-Day-Number\">{props.date.getDate()}</div>\n );\n\n if (titles.length) {\n const title = (\n <div key={`title-wrapper-${props.date.getDate()}`}>\n {titles.map((title: string, index: number) => (\n <div key={`title-text-${index}`}>{title}</div>\n ))}\n </div>\n );\n\n return (\n <Tooltip\n title={title}\n popperTooltipClassName={popperTooltipClassName}\n popperTooltipStyle={popperTooltipStyle}\n >\n {child}\n </Tooltip>\n );\n }\n\n return child;\n },\n [\n weekends,\n nonWorkingDaysOfWeek,\n daysToModify,\n weekendLabel,\n nonWorkingDaysOfWeekLabel,\n popperTooltipClassName,\n popperTooltipStyle,\n ]\n );\n\n const renderDatePickerForm = useCallback((): JSX.Element => {\n return (\n <DatePickerForm\n onMonthChange={handleMonthChange}\n month={month}\n mode={mode}\n selectionMode={selectionMode}\n dateRequired={dateRequired}\n selectedDays={newDates}\n firstDayOfWeek={firstDayOfWeek}\n saveButtonText={saveButtonText}\n cancelButtonText={cancelButtonText}\n clearButtonText={clearButtonText}\n onDayClick={onDayClick}\n onSave={handleSave}\n onChange={handleChange}\n onCancel={handleCancel}\n onClear={handleClear}\n disabledSaveButton={disabledSaveButton}\n modifiers={modifiers}\n renderDay={renderDay}\n />\n );\n }, [\n handleMonthChange,\n month,\n mode,\n selectionMode,\n dateRequired,\n newDates,\n firstDayOfWeek,\n saveButtonText,\n cancelButtonText,\n clearButtonText,\n onDayClick,\n handleSave,\n handleChange,\n handleCancel,\n handleClear,\n disabledSaveButton,\n modifiers,\n renderDay,\n ]);\n\n const renderTargetEl = useMemo(() => {\n if (labelType === \"icon\" && icon) {\n return (\n <SelectDateTarget\n icon={icon}\n title={tooltipText}\n targetIconClassName={targetIconClassName}\n forceHideTooltip={showDatePicker}\n popperTooltipClassName={popperTooltipClassName}\n popperTooltipStyle={popperTooltipStyle}\n active={showDatePicker}\n />\n );\n }\n if (typeof labelType === \"function\") {\n return labelType(labelText);\n }\n return (\n <StyledSelectDateButton\n type=\"button\"\n className={classnames(\"date-picker-target\", targetClassName)}\n >\n <span className={targetTextClassName}>{labelText}</span>\n </StyledSelectDateButton>\n );\n }, [\n icon,\n labelText,\n labelType,\n popperTooltipClassName,\n popperTooltipStyle,\n showDatePicker,\n targetClassName,\n targetIconClassName,\n targetTextClassName,\n tooltipText,\n ]);\n\n return (\n <StyledSelectDate className=\"select-date\">\n {labelType !== \"inline\" ? (\n <Menu\n target={renderTargetEl}\n open={showDatePicker}\n onOpen={handleShowDatePicker}\n onBeforeClose={handleBeforeCloseMenu}\n onClose={handleClose}\n position={position}\n menuClassName={menuClassName}\n popperClassName={popperClassName}\n backgroundElementClass={backgroundElementClass}\n >\n {renderDatePickerForm()}\n </Menu>\n ) : (\n renderDatePickerForm()\n )}\n {mode === \"atomic\" ? (\n <StyledConfirmDialog\n className=\"modal-select-date\"\n open={showDiscardModal}\n onCancel={handleCloseDiscardModal}\n onConfirm={handleSaveDiscardModal}\n dialogTitle={modalHeaderText}\n dialogContent={modalDiscardMessage}\n cancelBtnText={modalCancelBtnText}\n confirmBtnText={modalDiscardBtnText}\n />\n ) : null}\n </StyledSelectDate>\n );\n};\n\nSelectDate.displayName = \"SelectDate\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SelectDate.js","names":["React","useMemo","classnames","moment","SelectDateTarget","StyledSelectDate","StyledSelectDateButton","formatDate","DatePicker","toMoment","isDayInRange","day","data","fromMoment","unix","from","utc","to","repeating","year","month","date","isSameOrAfter","isSameOrBefore","SelectDate","_ref","changeMode","mode","trigger","labelType","saveButtonText","cancelButtonText","clearButtonText","modalHeaderText","modalDiscardMessage","modalDiscardBtnText","modalCancelBtnText","onDayClick","onSave","onCancel","onToggleDatePicker","required","dateRequired","longDateFormat","defaultShowDatePicker","firstDayOfWeek","selectedDays","selectionMode","menuClassName","targetClassName","icon","defaultLabelText","targetTextClassName","targetIconClassName","backgroundElementClass","dateFormat","defaultMonth","daysToModify","weekends","weekendLabel","nonWorkingDaysOfWeek","nonWorkingDaysOfWeekLabel","weekendIsSelectable","tooltipText","popperTooltipClassName","popperClassName","popperTooltipStyle","position","disableDaysBefore","enableYearPicker","disableAnimations","disabledDaysAfter","onChange","labelText","formattedEndDate","formattedStartDate","isSame","modifiers","userAvailabilities","filter","type","globalDaysOff","selectableGlobalDaysOff","userAvailability","matchedData","find","matched","title","weekend","isWeekend","includes","nonWorkingDay","nonWorkingDays","isNonWorkingDay","day_disabled","globalDayOff","renderTargetEl","createElement","className","target","instant","selected","saveLabel","cancelLabel","clearLabel","onClose","disabledDaysBefore","disabled","open","onCalendarToggle","enableConfirmModal","disableYearPicker","showControls","displayName"],"sources":["../../../../src/components/SelectDate/SelectDate.tsx"],"sourcesContent":["import React, { ElementType, FC, useMemo, CSSProperties } from \"react\";\n\nimport { Placement } from \"@popperjs/core\";\nimport classnames from \"classnames\";\nimport { Moment } from \"moment\";\nimport moment from \"moment-timezone\";\n\nimport { SelectDateTarget } from \"./SelectDateTarget\";\nimport { StyledSelectDate, StyledSelectDateButton } from \"./Styles\";\nimport { DaysToModify } from \"./types\";\nimport { formatDate } from \"../../utils/dateUtils\";\nimport {\n ChangeMode,\n DatePicker,\n TimestampDateRange,\n toMoment,\n} from \"../DatePicker/DatePicker\";\n\ntype TriggerStringType = \"text\" | \"icon\" | \"inline\";\ntype TriggerFunctionType = (text: string) => JSX.Element;\n\nconst isDayInRange = (day: Moment, data: DaysToModify): boolean => {\n const fromMoment = moment.unix(data.from).utc();\n const toMoment = moment.unix(data.to).utc();\n\n if (data.repeating) {\n const year = day.year();\n const from = moment.utc({\n year,\n month: fromMoment.month(),\n date: fromMoment.date(),\n });\n const to = moment.utc({\n year,\n month: toMoment.month(),\n date: toMoment.date(),\n });\n\n return day.isSameOrAfter(from, \"day\") && day.isSameOrBefore(to, \"day\");\n }\n\n return (\n day.isSameOrAfter(fromMoment, \"day\") && day.isSameOrBefore(toMoment, \"day\")\n );\n};\n\nexport interface ISelectDate {\n /** Change mode - can be atomic and instant */\n changeMode?: \"atomic\" | \"instant\";\n /** Trigger - can be text, icon, inline, or custom render function */\n trigger?: TriggerStringType | TriggerFunctionType;\n /** Save button text */\n saveButtonText?: string;\n /** Cancel button text */\n cancelButtonText?: string;\n /** Clear button text */\n clearButtonText?: string;\n /** Modal header text */\n modalHeaderText?: string;\n /** Modal cancel button text */\n modalCancelBtnText?: string;\n /** Modal discard button text */\n modalDiscardBtnText?: string;\n /** Modal discard message text */\n modalDiscardMessage?: string;\n /** Tooltip text */\n tooltipText?: string;\n /** Called when day is clicked */\n onDayClick?: (day: Moment, modifiers: string[]) => void;\n /** Save changes callback */\n onSave?: (dates?: TimestampDateRange) => void;\n /** Changing dates callback */\n onChange?: (dates?: TimestampDateRange) => void;\n /** On cancel closes datepicker or opens discard modal in atomic mode */\n onCancel?: () => void;\n /** Clear dates when they are not required */\n onClear?: () => void;\n /** Use this callback to get is picker visible */\n onToggleDatePicker?: (value: boolean) => void;\n /** Set selected day or days */\n selectedDays?: TimestampDateRange;\n /** Set month */\n defaultMonth?: Moment;\n /** Set selection range */\n selectionMode?: ChangeMode;\n /** Set is date required */\n required?: boolean;\n /** Set default show on date picker (only for text and icon mode) */\n defaultShowDatePicker?: boolean;\n /** Long date format (Always show year) */\n longDateFormat?: boolean;\n /** Set first day of week */\n firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n /** One of icon types */\n icon?: ElementType;\n /** Default Label text */\n defaultLabelText?: string;\n /** Date format */\n dateFormat?: string;\n /** Menu classes */\n menuClassName?: string;\n /** Target element classes */\n targetClassName?: string;\n /** Target element text classes */\n targetTextClassName?: string;\n /** Target element icon classes */\n targetIconClassName?: string;\n /** Background style for clickable element after the menu is open (opacity, color, etc...) */\n backgroundElementClass?: string;\n /** Days to modify */\n daysToModify?: DaysToModify[];\n /** Array of weekend days */\n weekends?: number[];\n /** Weekend label */\n weekendLabel?: string;\n /** Array of nonworking week days */\n nonWorkingDaysOfWeek?: number[];\n /** Nonworking week days label */\n nonWorkingDaysOfWeekLabel?: string;\n /** Allows weekends to be selected */\n weekendIsSelectable?: boolean;\n /** Popper Tooltip style */\n popperTooltipStyle?: CSSProperties;\n /** Popper Tooltip class name*/\n popperTooltipClassName?: string;\n /** Popper class name*/\n popperClassName?: string;\n /** Position of selectDate menu */\n position?: Placement;\n /** Disable days before specified date */\n disableDaysBefore?: Moment;\n /** Disable days after specified date */\n disabledDaysAfter?: Moment;\n /** Enable year selector */\n enableYearPicker?: boolean;\n /** Disable aniamtions */\n disableAnimations?: boolean;\n}\n\nexport const SelectDate: FC<ISelectDate> = ({\n changeMode: mode = \"instant\",\n trigger: labelType = \"text\",\n saveButtonText = \"Save\",\n cancelButtonText = \"Cancel\",\n clearButtonText = \"Clear\",\n modalHeaderText = \"Discard changes?\",\n modalDiscardMessage = \"All unsaved changes will be lost.\",\n modalDiscardBtnText = \"OK\",\n modalCancelBtnText = \"Cancel\",\n onDayClick,\n onSave,\n onCancel,\n onToggleDatePicker,\n required: dateRequired = false,\n longDateFormat = false,\n defaultShowDatePicker = false,\n firstDayOfWeek = 0,\n selectedDays,\n selectionMode = \"custom\",\n menuClassName,\n targetClassName,\n icon,\n defaultLabelText = \"Set...\",\n targetTextClassName,\n targetIconClassName,\n backgroundElementClass,\n dateFormat,\n defaultMonth,\n daysToModify = [],\n weekends = [],\n weekendLabel = \"Weekend\",\n nonWorkingDaysOfWeek = [],\n nonWorkingDaysOfWeekLabel = \"Unavailable\",\n weekendIsSelectable = false,\n tooltipText,\n popperTooltipClassName,\n popperClassName,\n popperTooltipStyle,\n position,\n disableDaysBefore,\n enableYearPicker,\n disableAnimations,\n disabledDaysAfter,\n onChange,\n}) => {\n const labelText = useMemo(() => {\n if (!selectedDays) {\n return defaultLabelText;\n } else if (!selectedDays.from && !selectedDays.to) {\n return defaultLabelText;\n } else {\n const formattedEndDate = selectedDays.to\n ? formatDate(toMoment(selectedDays.to), dateFormat, longDateFormat)\n : \"\";\n const formattedStartDate = selectedDays.from\n ? formatDate(toMoment(selectedDays?.from), dateFormat, longDateFormat)\n : \"\";\n\n if (\n selectedDays.to &&\n selectedDays.from &&\n toMoment(selectedDays.from).isSame(toMoment(selectedDays.to))\n ) {\n return formattedEndDate;\n }\n\n if (!selectedDays.to && selectedDays.from) {\n return formattedStartDate;\n }\n\n return `${formattedStartDate} - ${formattedEndDate}`;\n }\n }, [selectedDays, dateFormat, defaultLabelText, longDateFormat]);\n\n const modifiers = useMemo(() => {\n const userAvailabilities = daysToModify.filter(\n (data) => data.type === \"user_day_off\"\n );\n const globalDaysOff = daysToModify.filter(\n (data) => data.type === \"global_day_off\"\n );\n const selectableGlobalDaysOff = daysToModify.filter(\n (data) => data.type === \"selectable_global_day_off\"\n );\n\n return {\n userAvailability: (day: Moment) => {\n const matchedData = userAvailabilities.find((data) =>\n isDayInRange(day, data)\n );\n return {\n matched: !!matchedData,\n title: matchedData ? matchedData.title : null,\n };\n },\n weekend: (day: Moment) => {\n const isWeekend = weekends.includes(day.day());\n return {\n matched: isWeekend,\n title: isWeekend ? weekendLabel : null,\n };\n },\n nonWorkingDay: (day: Moment) => {\n if (weekends.includes(day.day())) {\n return { matched: true, title: \"\" };\n }\n const nonWorkingDays = [...selectableGlobalDaysOff, ...globalDaysOff];\n\n const matchedData = nonWorkingDays.find((data) =>\n isDayInRange(day, data)\n );\n return {\n matched: !!matchedData,\n title: matchedData ? matchedData.title : null,\n };\n },\n nonWorkingDaysOfWeek: (day: Moment) => {\n const isNonWorkingDay = nonWorkingDaysOfWeek.includes(day.day());\n return {\n matched: isNonWorkingDay,\n title: isNonWorkingDay ? nonWorkingDaysOfWeekLabel : null,\n };\n },\n day_disabled: (day: Moment) => {\n const globalDayOff = globalDaysOff.find((data) =>\n isDayInRange(day, data)\n );\n\n return {\n matched: !!globalDayOff,\n title: null,\n };\n },\n };\n }, [\n daysToModify,\n nonWorkingDaysOfWeek,\n nonWorkingDaysOfWeekLabel,\n weekendLabel,\n weekends,\n ]);\n\n const renderTargetEl = useMemo(() => {\n if (labelType === \"icon\" && icon) {\n return (\n <SelectDateTarget\n icon={icon}\n title={tooltipText}\n targetIconClassName={targetIconClassName}\n popperTooltipClassName={popperTooltipClassName}\n popperTooltipStyle={popperTooltipStyle}\n />\n );\n }\n if (typeof labelType === \"function\") {\n return labelType(labelText);\n }\n return (\n <StyledSelectDateButton\n type=\"button\"\n className={classnames(\"date-picker-target\", targetClassName)}\n >\n <span className={targetTextClassName}>{labelText}</span>\n </StyledSelectDateButton>\n );\n }, [\n icon,\n labelText,\n labelType,\n popperTooltipClassName,\n popperTooltipStyle,\n targetClassName,\n targetIconClassName,\n targetTextClassName,\n tooltipText,\n ]);\n\n return (\n <StyledSelectDate className=\"select-date\">\n {labelType !== \"inline\" ? (\n <DatePicker\n target={renderTargetEl}\n position={position}\n menuClassName={menuClassName}\n popperClassName={popperClassName}\n month={defaultMonth}\n instant={mode === \"instant\"}\n mode={selectionMode}\n required={dateRequired}\n selected={selectedDays}\n firstDayOfWeek={firstDayOfWeek}\n saveLabel={saveButtonText}\n cancelLabel={cancelButtonText}\n clearLabel={clearButtonText}\n onSave={onSave}\n onChange={onChange}\n onClose={onCancel}\n modifiers={modifiers}\n modalHeaderText={modalHeaderText}\n modalDiscardMessage={modalDiscardMessage}\n modalDiscardBtnText={modalDiscardBtnText}\n modalCancelBtnText={modalCancelBtnText}\n disabledDaysBefore={disableDaysBefore}\n disabledDaysAfter={disabledDaysAfter}\n backgroundElementClass={backgroundElementClass}\n disabled={weekendIsSelectable ? [] : weekends}\n popperTooltipClassName={popperTooltipClassName}\n popperTooltipStyle={popperTooltipStyle}\n open={defaultShowDatePicker}\n onCalendarToggle={onToggleDatePicker}\n onDayClick={onDayClick}\n enableConfirmModal={mode === \"atomic\" && !dateRequired}\n disableYearPicker={!enableYearPicker}\n disableAnimations={disableAnimations}\n showControls\n />\n ) : (\n <DatePicker\n month={defaultMonth}\n instant={mode === \"instant\"}\n mode={selectionMode}\n required={dateRequired}\n selected={selectedDays}\n firstDayOfWeek={firstDayOfWeek}\n saveLabel={saveButtonText}\n cancelLabel={cancelButtonText}\n clearLabel={clearButtonText}\n disabledDaysBefore={disableDaysBefore}\n disabledDaysAfter={disabledDaysAfter}\n popperTooltipClassName={popperTooltipClassName}\n popperTooltipStyle={popperTooltipStyle}\n disabled={weekendIsSelectable ? [] : weekends}\n onSave={onSave}\n onChange={onChange}\n modifiers={modifiers}\n onDayClick={onDayClick}\n disableYearPicker={!enableYearPicker}\n disableAnimations={disableAnimations}\n showControls\n open\n />\n )}\n </StyledSelectDate>\n );\n};\n\nSelectDate.displayName = \"SelectDate\";\n"],"mappings":"AAAA,OAAOA,KAAK,IAAqBC,OAAO,QAAuB,OAAO;AAGtE,OAAOC,UAAU,MAAM,YAAY;AAEnC,OAAOC,MAAM,MAAM,iBAAiB;AAEpC,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,gBAAgB,EAAEC,sBAAsB,QAAQ,UAAU;AAEnE,SAASC,UAAU,QAAQ,uBAAuB;AAClD,SAEEC,UAAU,EAEVC,QAAQ,QACH,0BAA0B;AAKjC,MAAMC,YAAY,GAAGA,CAACC,GAAW,EAAEC,IAAkB,KAAc;EACjE,MAAMC,UAAU,GAAGV,MAAM,CAACW,IAAI,CAACF,IAAI,CAACG,IAAI,CAAC,CAACC,GAAG,CAAC,CAAC;EAC/C,MAAMP,QAAQ,GAAGN,MAAM,CAACW,IAAI,CAACF,IAAI,CAACK,EAAE,CAAC,CAACD,GAAG,CAAC,CAAC;EAE3C,IAAIJ,IAAI,CAACM,SAAS,EAAE;IAClB,MAAMC,IAAI,GAAGR,GAAG,CAACQ,IAAI,CAAC,CAAC;IACvB,MAAMJ,IAAI,GAAGZ,MAAM,CAACa,GAAG,CAAC;MACtBG,IAAI;MACJC,KAAK,EAAEP,UAAU,CAACO,KAAK,CAAC,CAAC;MACzBC,IAAI,EAAER,UAAU,CAACQ,IAAI,CAAC;IACxB,CAAC,CAAC;IACF,MAAMJ,EAAE,GAAGd,MAAM,CAACa,GAAG,CAAC;MACpBG,IAAI;MACJC,KAAK,EAAEX,QAAQ,CAACW,KAAK,CAAC,CAAC;MACvBC,IAAI,EAAEZ,QAAQ,CAACY,IAAI,CAAC;IACtB,CAAC,CAAC;IAEF,OAAOV,GAAG,CAACW,aAAa,CAACP,IAAI,EAAE,KAAK,CAAC,IAAIJ,GAAG,CAACY,cAAc,CAACN,EAAE,EAAE,KAAK,CAAC;EACxE;EAEA,OACEN,GAAG,CAACW,aAAa,CAACT,UAAU,EAAE,KAAK,CAAC,IAAIF,GAAG,CAACY,cAAc,CAACd,QAAQ,EAAE,KAAK,CAAC;AAE/E,CAAC;AA+FD,OAAO,MAAMe,UAA2B,GAAGC,IAAA,IA6CrC;EAAA,IA7CsC;IAC1CC,UAAU,EAAEC,IAAI,GAAG,SAAS;IAC5BC,OAAO,EAAEC,SAAS,GAAG,MAAM;IAC3BC,cAAc,GAAG,MAAM;IACvBC,gBAAgB,GAAG,QAAQ;IAC3BC,eAAe,GAAG,OAAO;IACzBC,eAAe,GAAG,kBAAkB;IACpCC,mBAAmB,GAAG,mCAAmC;IACzDC,mBAAmB,GAAG,IAAI;IAC1BC,kBAAkB,GAAG,QAAQ;IAC7BC,UAAU;IACVC,MAAM;IACNC,QAAQ;IACRC,kBAAkB;IAClBC,QAAQ,EAAEC,YAAY,GAAG,KAAK;IAC9BC,cAAc,GAAG,KAAK;IACtBC,qBAAqB,GAAG,KAAK;IAC7BC,cAAc,GAAG,CAAC;IAClBC,YAAY;IACZC,aAAa,GAAG,QAAQ;IACxBC,aAAa;IACbC,eAAe;IACfC,IAAI;IACJC,gBAAgB,GAAG,QAAQ;IAC3BC,mBAAmB;IACnBC,mBAAmB;IACnBC,sBAAsB;IACtBC,UAAU;IACVC,YAAY;IACZC,YAAY,GAAG,EAAE;IACjBC,QAAQ,GAAG,EAAE;IACbC,YAAY,GAAG,SAAS;IACxBC,oBAAoB,GAAG,EAAE;IACzBC,yBAAyB,GAAG,aAAa;IACzCC,mBAAmB,GAAG,KAAK;IAC3BC,WAAW;IACXC,sBAAsB;IACtBC,eAAe;IACfC,kBAAkB;IAClBC,QAAQ;IACRC,iBAAiB;IACjBC,gBAAgB;IAChBC,iBAAiB;IACjBC,iBAAiB;IACjBC;EACF,CAAC,GAAA/C,IAAA;EACC,MAAMgD,SAAS,GAAGxE,OAAO,CAAC,MAAM;IAC9B,IAAI,CAAC6C,YAAY,EAAE;MACjB,OAAOK,gBAAgB;IACzB,CAAC,MAAM,IAAI,CAACL,YAAY,CAAC/B,IAAI,IAAI,CAAC+B,YAAY,CAAC7B,EAAE,EAAE;MACjD,OAAOkC,gBAAgB;IACzB,CAAC,MAAM;MACL,MAAMuB,gBAAgB,GAAG5B,YAAY,CAAC7B,EAAE,GACpCV,UAAU,CAACE,QAAQ,CAACqC,YAAY,CAAC7B,EAAE,CAAC,EAAEsC,UAAU,EAAEZ,cAAc,CAAC,GACjE,EAAE;MACN,MAAMgC,kBAAkB,GAAG7B,YAAY,CAAC/B,IAAI,GACxCR,UAAU,CAACE,QAAQ,CAACqC,YAAY,oBAAZA,YAAY,CAAE/B,IAAI,CAAC,EAAEwC,UAAU,EAAEZ,cAAc,CAAC,GACpE,EAAE;MAEN,IACEG,YAAY,CAAC7B,EAAE,IACf6B,YAAY,CAAC/B,IAAI,IACjBN,QAAQ,CAACqC,YAAY,CAAC/B,IAAI,CAAC,CAAC6D,MAAM,CAACnE,QAAQ,CAACqC,YAAY,CAAC7B,EAAE,CAAC,CAAC,EAC7D;QACA,OAAOyD,gBAAgB;MACzB;MAEA,IAAI,CAAC5B,YAAY,CAAC7B,EAAE,IAAI6B,YAAY,CAAC/B,IAAI,EAAE;QACzC,OAAO4D,kBAAkB;MAC3B;MAEA,OAAUA,kBAAkB,WAAMD,gBAAgB;IACpD;EACF,CAAC,EAAE,CAAC5B,YAAY,EAAES,UAAU,EAAEJ,gBAAgB,EAAER,cAAc,CAAC,CAAC;EAEhE,MAAMkC,SAAS,GAAG5E,OAAO,CAAC,MAAM;IAC9B,MAAM6E,kBAAkB,GAAGrB,YAAY,CAACsB,MAAM,CAC3CnE,IAAI,IAAKA,IAAI,CAACoE,IAAI,KAAK,cAC1B,CAAC;IACD,MAAMC,aAAa,GAAGxB,YAAY,CAACsB,MAAM,CACtCnE,IAAI,IAAKA,IAAI,CAACoE,IAAI,KAAK,gBAC1B,CAAC;IACD,MAAME,uBAAuB,GAAGzB,YAAY,CAACsB,MAAM,CAChDnE,IAAI,IAAKA,IAAI,CAACoE,IAAI,KAAK,2BAC1B,CAAC;IAED,OAAO;MACLG,gBAAgB,EAAGxE,GAAW,IAAK;QACjC,MAAMyE,WAAW,GAAGN,kBAAkB,CAACO,IAAI,CAAEzE,IAAI,IAC/CF,YAAY,CAACC,GAAG,EAAEC,IAAI,CACxB,CAAC;QACD,OAAO;UACL0E,OAAO,EAAE,CAAC,CAACF,WAAW;UACtBG,KAAK,EAAEH,WAAW,GAAGA,WAAW,CAACG,KAAK,GAAG;QAC3C,CAAC;MACH,CAAC;MACDC,OAAO,EAAG7E,GAAW,IAAK;QACxB,MAAM8E,SAAS,GAAG/B,QAAQ,CAACgC,QAAQ,CAAC/E,GAAG,CAACA,GAAG,CAAC,CAAC,CAAC;QAC9C,OAAO;UACL2E,OAAO,EAAEG,SAAS;UAClBF,KAAK,EAAEE,SAAS,GAAG9B,YAAY,GAAG;QACpC,CAAC;MACH,CAAC;MACDgC,aAAa,EAAGhF,GAAW,IAAK;QAC9B,IAAI+C,QAAQ,CAACgC,QAAQ,CAAC/E,GAAG,CAACA,GAAG,CAAC,CAAC,CAAC,EAAE;UAChC,OAAO;YAAE2E,OAAO,EAAE,IAAI;YAAEC,KAAK,EAAE;UAAG,CAAC;QACrC;QACA,MAAMK,cAAc,GAAG,CAAC,GAAGV,uBAAuB,EAAE,GAAGD,aAAa,CAAC;QAErE,MAAMG,WAAW,GAAGQ,cAAc,CAACP,IAAI,CAAEzE,IAAI,IAC3CF,YAAY,CAACC,GAAG,EAAEC,IAAI,CACxB,CAAC;QACD,OAAO;UACL0E,OAAO,EAAE,CAAC,CAACF,WAAW;UACtBG,KAAK,EAAEH,WAAW,GAAGA,WAAW,CAACG,KAAK,GAAG;QAC3C,CAAC;MACH,CAAC;MACD3B,oBAAoB,EAAGjD,GAAW,IAAK;QACrC,MAAMkF,eAAe,GAAGjC,oBAAoB,CAAC8B,QAAQ,CAAC/E,GAAG,CAACA,GAAG,CAAC,CAAC,CAAC;QAChE,OAAO;UACL2E,OAAO,EAAEO,eAAe;UACxBN,KAAK,EAAEM,eAAe,GAAGhC,yBAAyB,GAAG;QACvD,CAAC;MACH,CAAC;MACDiC,YAAY,EAAGnF,GAAW,IAAK;QAC7B,MAAMoF,YAAY,GAAGd,aAAa,CAACI,IAAI,CAAEzE,IAAI,IAC3CF,YAAY,CAACC,GAAG,EAAEC,IAAI,CACxB,CAAC;QAED,OAAO;UACL0E,OAAO,EAAE,CAAC,CAACS,YAAY;UACvBR,KAAK,EAAE;QACT,CAAC;MACH;IACF,CAAC;EACH,CAAC,EAAE,CACD9B,YAAY,EACZG,oBAAoB,EACpBC,yBAAyB,EACzBF,YAAY,EACZD,QAAQ,CACT,CAAC;EAEF,MAAMsC,cAAc,GAAG/F,OAAO,CAAC,MAAM;IACnC,IAAI4B,SAAS,KAAK,MAAM,IAAIqB,IAAI,EAAE;MAChC,oBACElD,KAAA,CAAAiG,aAAA,CAAC7F,gBAAgB;QACf8C,IAAI,EAAEA,IAAK;QACXqC,KAAK,EAAExB,WAAY;QACnBV,mBAAmB,EAAEA,mBAAoB;QACzCW,sBAAsB,EAAEA,sBAAuB;QAC/CE,kBAAkB,EAAEA;MAAmB,CACxC,CAAC;IAEN;IACA,IAAI,OAAOrC,SAAS,KAAK,UAAU,EAAE;MACnC,OAAOA,SAAS,CAAC4C,SAAS,CAAC;IAC7B;IACA,oBACEzE,KAAA,CAAAiG,aAAA,CAAC3F,sBAAsB;MACrB0E,IAAI,EAAC,QAAQ;MACbkB,SAAS,EAAEhG,UAAU,CAAC,oBAAoB,EAAE+C,eAAe;IAAE,gBAE7DjD,KAAA,CAAAiG,aAAA;MAAMC,SAAS,EAAE9C;IAAoB,GAAEqB,SAAgB,CACjC,CAAC;EAE7B,CAAC,EAAE,CACDvB,IAAI,EACJuB,SAAS,EACT5C,SAAS,EACTmC,sBAAsB,EACtBE,kBAAkB,EAClBjB,eAAe,EACfI,mBAAmB,EACnBD,mBAAmB,EACnBW,WAAW,CACZ,CAAC;EAEF,oBACE/D,KAAA,CAAAiG,aAAA,CAAC5F,gBAAgB;IAAC6F,SAAS,EAAC;EAAa,GACtCrE,SAAS,KAAK,QAAQ,gBACrB7B,KAAA,CAAAiG,aAAA,CAACzF,UAAU;IACT2F,MAAM,EAAEH,cAAe;IACvB7B,QAAQ,EAAEA,QAAS;IACnBnB,aAAa,EAAEA,aAAc;IAC7BiB,eAAe,EAAEA,eAAgB;IACjC7C,KAAK,EAAEoC,YAAa;IACpB4C,OAAO,EAAEzE,IAAI,KAAK,SAAU;IAC5BA,IAAI,EAAEoB,aAAc;IACpBN,QAAQ,EAAEC,YAAa;IACvB2D,QAAQ,EAAEvD,YAAa;IACvBD,cAAc,EAAEA,cAAe;IAC/ByD,SAAS,EAAExE,cAAe;IAC1ByE,WAAW,EAAExE,gBAAiB;IAC9ByE,UAAU,EAAExE,eAAgB;IAC5BM,MAAM,EAAEA,MAAO;IACfkC,QAAQ,EAAEA,QAAS;IACnBiC,OAAO,EAAElE,QAAS;IAClBsC,SAAS,EAAEA,SAAU;IACrB5C,eAAe,EAAEA,eAAgB;IACjCC,mBAAmB,EAAEA,mBAAoB;IACzCC,mBAAmB,EAAEA,mBAAoB;IACzCC,kBAAkB,EAAEA,kBAAmB;IACvCsE,kBAAkB,EAAEtC,iBAAkB;IACtCG,iBAAiB,EAAEA,iBAAkB;IACrCjB,sBAAsB,EAAEA,sBAAuB;IAC/CqD,QAAQ,EAAE7C,mBAAmB,GAAG,EAAE,GAAGJ,QAAS;IAC9CM,sBAAsB,EAAEA,sBAAuB;IAC/CE,kBAAkB,EAAEA,kBAAmB;IACvC0C,IAAI,EAAEhE,qBAAsB;IAC5BiE,gBAAgB,EAAErE,kBAAmB;IACrCH,UAAU,EAAEA,UAAW;IACvByE,kBAAkB,EAAEnF,IAAI,KAAK,QAAQ,IAAI,CAACe,YAAa;IACvDqE,iBAAiB,EAAE,CAAC1C,gBAAiB;IACrCC,iBAAiB,EAAEA,iBAAkB;IACrC0C,YAAY;EAAA,CACb,CAAC,gBAEFhH,KAAA,CAAAiG,aAAA,CAACzF,UAAU;IACTY,KAAK,EAAEoC,YAAa;IACpB4C,OAAO,EAAEzE,IAAI,KAAK,SAAU;IAC5BA,IAAI,EAAEoB,aAAc;IACpBN,QAAQ,EAAEC,YAAa;IACvB2D,QAAQ,EAAEvD,YAAa;IACvBD,cAAc,EAAEA,cAAe;IAC/ByD,SAAS,EAAExE,cAAe;IAC1ByE,WAAW,EAAExE,gBAAiB;IAC9ByE,UAAU,EAAExE,eAAgB;IAC5B0E,kBAAkB,EAAEtC,iBAAkB;IACtCG,iBAAiB,EAAEA,iBAAkB;IACrCP,sBAAsB,EAAEA,sBAAuB;IAC/CE,kBAAkB,EAAEA,kBAAmB;IACvCyC,QAAQ,EAAE7C,mBAAmB,GAAG,EAAE,GAAGJ,QAAS;IAC9CpB,MAAM,EAAEA,MAAO;IACfkC,QAAQ,EAAEA,QAAS;IACnBK,SAAS,EAAEA,SAAU;IACrBxC,UAAU,EAAEA,UAAW;IACvB0E,iBAAiB,EAAE,CAAC1C,gBAAiB;IACrCC,iBAAiB,EAAEA,iBAAkB;IACrC0C,YAAY;IACZJ,IAAI;EAAA,CACL,CAEa,CAAC;AAEvB,CAAC;AAEDpF,UAAU,CAACyF,WAAW,GAAG,YAAY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/SelectDate/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/SelectDate/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/SelectDate/index.ts"],"sourcesContent":["export * from \"./SelectDate\";\
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/SelectDate/index.ts"],"sourcesContent":["export * from \"./SelectDate\";\n"],"mappings":"AAAA,cAAc,cAAc"}
|
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
import { FC } from "react";
|
|
2
2
|
import { Placement } from "@popperjs/core";
|
|
3
|
+
import { Moment } from "moment";
|
|
3
4
|
export interface IDateStepperProps {
|
|
4
5
|
/** One of the possible steps for this component */
|
|
5
|
-
step: "daily" | "weekly" | "monthly" | "quarterly" | "yearly" | "
|
|
6
|
+
step: "daily" | "weekly" | "monthly" | "quarterly" | "yearly" | "range";
|
|
6
7
|
/** Callback function that will be called after the changed range */
|
|
7
8
|
onChange?: (from: Date, to: Date) => void;
|
|
8
9
|
/** Start date of the range */
|
|
9
|
-
from:
|
|
10
|
+
from: Moment | string;
|
|
10
11
|
/** End date of the range */
|
|
11
|
-
to:
|
|
12
|
+
to: Moment | string;
|
|
12
13
|
/** Callback function that will format the text label */
|
|
13
|
-
formatCallback?: (from: string |
|
|
14
|
+
formatCallback?: (from: string | Moment, to: string | Moment) => string;
|
|
14
15
|
/** Default month */
|
|
15
|
-
defaultMonth?:
|
|
16
|
+
defaultMonth?: Moment;
|
|
16
17
|
/** Callback function onBack */
|
|
17
18
|
onBack?: (from: Date, to: Date) => void;
|
|
18
19
|
/** Callback function onForward */
|
|
19
20
|
onForward?: (from: Date, to: Date) => void;
|
|
20
21
|
/** Min date */
|
|
21
|
-
minValue?:
|
|
22
|
+
minValue?: Moment;
|
|
22
23
|
/** Max fate */
|
|
23
|
-
maxValue?:
|
|
24
|
+
maxValue?: Moment;
|
|
24
25
|
/** html class */
|
|
25
26
|
className?: string;
|
|
26
27
|
/** Period for calculating week (isoWeek) */
|
|
@@ -33,6 +34,8 @@ export interface IDateStepperProps {
|
|
|
33
34
|
popperClassName?: string;
|
|
34
35
|
/** DatePicker menu position */
|
|
35
36
|
position?: Placement;
|
|
37
|
+
/** Enable year picker in DatePicker */
|
|
38
|
+
enableYearPicker?: boolean;
|
|
36
39
|
}
|
|
37
40
|
/**
|
|
38
41
|
* This component allow you to select date range. It accepts two parameters "from" and "to" as valid format
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateStepper.d.ts","sourceRoot":"","sources":["../../../../../src/components/Steppers/DateStepper/DateStepper.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAA6C,MAAM,OAAO,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"DateStepper.d.ts","sourceRoot":"","sources":["../../../../../src/components/Steppers/DateStepper/DateStepper.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAA6C,MAAM,OAAO,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAchC,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;IACxE,oEAAoE;IACpE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,KAAK,IAAI,CAAC;IAC1C,8BAA8B;IAC9B,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,4BAA4B;IAC5B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,wDAAwD;IACxD,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;IACxE,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,KAAK,IAAI,CAAC;IACxC,kCAAkC;IAClC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,KAAK,IAAI,CAAC;IAC3C,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,6BAA6B;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;GAGG;AAEH,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,iBAAiB,CA6S7C,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React, { useCallback, useMemo, useState, useEffect } from "react";
|
|
2
2
|
import classNames from "classnames";
|
|
3
|
-
import moment from "moment";
|
|
4
|
-
import { StyledButton, StyledButtonGroup, StyledDiv,
|
|
5
|
-
import { DatePicker } from "../../DatePicker";
|
|
3
|
+
import moment from "moment-timezone";
|
|
4
|
+
import { StyledButton, StyledButtonGroup, StyledDiv, StyledSpan, StyledControl } from "./Styles";
|
|
5
|
+
import { DatePicker } from "../../DatePicker/DatePicker";
|
|
6
6
|
import { ArrowRightIcon } from "../../Icons";
|
|
7
7
|
import ArrowLeftIcon from "../../Icons/collection/ArrowLeft";
|
|
8
8
|
/**
|
|
@@ -23,16 +23,14 @@ export const DateStepper = _ref => {
|
|
|
23
23
|
maxValue,
|
|
24
24
|
className,
|
|
25
25
|
period = "week",
|
|
26
|
-
datePickerClass,
|
|
27
26
|
withDatePicker = true,
|
|
28
|
-
defaultMonth =
|
|
29
|
-
|
|
30
|
-
position = "bottom"
|
|
27
|
+
defaultMonth = moment(),
|
|
28
|
+
enableYearPicker,
|
|
29
|
+
position = "bottom",
|
|
30
|
+
popperClassName
|
|
31
31
|
} = _ref;
|
|
32
|
-
const [fromDate, setFromDate] = useState(moment(from));
|
|
33
|
-
const [toDate, setToDate] = useState(moment(to));
|
|
34
|
-
const [showDatePicker, setShowDatePicker] = useState(false);
|
|
35
|
-
const [month, setMonth] = useState(defaultMonth);
|
|
32
|
+
const [fromDate, setFromDate] = useState(moment.utc(from));
|
|
33
|
+
const [toDate, setToDate] = useState(moment.utc(to));
|
|
36
34
|
const getDatesByPeriod = useCallback(interval => {
|
|
37
35
|
const date = fromDate ? fromDate : moment();
|
|
38
36
|
if (step === "daily") {
|
|
@@ -55,70 +53,67 @@ export const DateStepper = _ref => {
|
|
|
55
53
|
}, [fromDate, period, step]);
|
|
56
54
|
const getDateFormatted = useMemo(() => {
|
|
57
55
|
if (formatCallback) {
|
|
58
|
-
return formatCallback(fromDate
|
|
56
|
+
return formatCallback(fromDate, toDate);
|
|
59
57
|
}
|
|
60
58
|
const actualYear = moment().year();
|
|
61
59
|
const showWeekOrCustomDateFormat = (start, end) => {
|
|
62
60
|
if (start.year() === actualYear && end.year() === actualYear) {
|
|
63
|
-
return start.format("MMM DD") + " - " + end.format("MMM DD");
|
|
61
|
+
return start.utc().format("MMM DD") + " - " + end.utc().format("MMM DD");
|
|
64
62
|
} else {
|
|
65
|
-
return start.format("MMM DD YYYY") + " - " + end.format("MMM DD YYYY");
|
|
63
|
+
return start.utc().format("MMM DD YYYY") + " - " + end.utc().format("MMM DD YYYY");
|
|
66
64
|
}
|
|
67
65
|
};
|
|
68
66
|
if (step === "daily") {
|
|
69
67
|
if (fromDate.year() === actualYear) {
|
|
70
|
-
return fromDate.format("MMM DD");
|
|
68
|
+
return fromDate.utc().format("MMM DD");
|
|
71
69
|
}
|
|
72
|
-
return fromDate.format("MMM DD YYYY");
|
|
70
|
+
return fromDate.utc().format("MMM DD YYYY");
|
|
73
71
|
} else if (step === "weekly") {
|
|
74
|
-
const startDate = fromDate.clone().startOf(period);
|
|
75
|
-
const endDate = startDate.clone().endOf(period);
|
|
72
|
+
const startDate = fromDate.clone().utc().startOf(period);
|
|
73
|
+
const endDate = startDate.clone().utc().endOf(period);
|
|
76
74
|
return showWeekOrCustomDateFormat(startDate, endDate);
|
|
77
75
|
} else if (step === "monthly") {
|
|
78
|
-
return fromDate.format("MMM YYYY");
|
|
76
|
+
return fromDate.utc().format("MMM YYYY");
|
|
79
77
|
} else if (step === "quarterly") {
|
|
80
|
-
return "Q" + fromDate.quarter() + "/" + fromDate.format("YYYY");
|
|
78
|
+
return "Q" + fromDate.utc().quarter() + "/" + fromDate.utc().format("YYYY");
|
|
81
79
|
} else if (step === "yearly") {
|
|
82
|
-
return fromDate.format("YYYY");
|
|
83
|
-
} else if (step === "
|
|
80
|
+
return fromDate.utc().format("YYYY");
|
|
81
|
+
} else if (step === "range") {
|
|
84
82
|
return showWeekOrCustomDateFormat(fromDate, toDate);
|
|
85
83
|
}
|
|
86
84
|
return "";
|
|
87
|
-
}, [fromDate,
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
onChange(newFrom.toDate(), newTo.toDate());
|
|
94
|
-
}
|
|
95
|
-
}, [onChange, getDatesByPeriod]);
|
|
85
|
+
}, [fromDate, toDate, step, formatCallback, period]);
|
|
86
|
+
const datePickerMode = useMemo(() => {
|
|
87
|
+
if (step === "range") return "custom";
|
|
88
|
+
if (step === "yearly") return "custom";
|
|
89
|
+
return step;
|
|
90
|
+
}, [step]);
|
|
96
91
|
const onDatePickerChange = useCallback(dates => {
|
|
97
|
-
const fromDateTemp = dates == null ? void 0 : dates.from;
|
|
98
|
-
const toDateTemp = dates == null ? void 0 : dates.to;
|
|
99
|
-
setFromDate(
|
|
100
|
-
setToDate(
|
|
101
|
-
if (onChange && fromDateTemp
|
|
102
|
-
onChange(fromDateTemp, toDateTemp);
|
|
92
|
+
const fromDateTemp = moment.utc(Number(dates == null ? void 0 : dates.from) * 1000);
|
|
93
|
+
const toDateTemp = moment.utc(Number(dates == null ? void 0 : dates.to) * 1000);
|
|
94
|
+
setFromDate(fromDateTemp);
|
|
95
|
+
setToDate(toDateTemp);
|
|
96
|
+
if (onChange && moment.isMoment(fromDateTemp) && moment.isMoment(toDateTemp)) {
|
|
97
|
+
onChange(fromDateTemp.toDate(), toDateTemp.toDate());
|
|
103
98
|
}
|
|
104
99
|
}, [onChange, setFromDate, setToDate]);
|
|
105
100
|
const isAfterMaxDate = useMemo(() => {
|
|
106
|
-
return maxValue
|
|
101
|
+
return moment.isMoment(maxValue) && moment(moment.utc(maxValue).format("YYYY-MM-DD")).isSameOrBefore(toDate.utc().format("YYYY-MM-DD"));
|
|
107
102
|
}, [maxValue, toDate]);
|
|
108
103
|
const isBeforeMinDate = useMemo(() => {
|
|
109
|
-
return minValue
|
|
104
|
+
return moment.isMoment(minValue) && moment.utc(moment.utc(minValue).format("YYYY-MM-DD")).isSameOrAfter(toDate.utc().format("YYYY-MM-DD"));
|
|
110
105
|
}, [minValue, toDate]);
|
|
111
106
|
useEffect(() => {
|
|
112
107
|
if (isBeforeMinDate) {
|
|
113
108
|
if (step === "daily") {
|
|
114
|
-
setFromDate(moment(minValue));
|
|
115
|
-
setToDate(moment(minValue));
|
|
109
|
+
setFromDate(moment.utc(minValue));
|
|
110
|
+
setToDate(moment.utc(minValue));
|
|
116
111
|
}
|
|
117
112
|
}
|
|
118
113
|
if (isAfterMaxDate) {
|
|
119
114
|
if (step === "daily") {
|
|
120
|
-
setFromDate(moment(maxValue));
|
|
121
|
-
setToDate(moment(maxValue));
|
|
115
|
+
setFromDate(moment.utc(maxValue));
|
|
116
|
+
setToDate(moment.utc(maxValue));
|
|
122
117
|
}
|
|
123
118
|
}
|
|
124
119
|
}, [step, minValue, maxValue, isBeforeMinDate, isAfterMaxDate]);
|
|
@@ -126,41 +121,39 @@ export const DateStepper = _ref => {
|
|
|
126
121
|
if (isAfterMaxDate) {
|
|
127
122
|
return;
|
|
128
123
|
}
|
|
129
|
-
|
|
124
|
+
const [newFrom, newTo] = getDatesByPeriod(1);
|
|
125
|
+
setFromDate(moment.utc(newFrom));
|
|
126
|
+
setToDate(moment.utc(newTo));
|
|
127
|
+
if (onChange) {
|
|
128
|
+
onChange(moment.utc(newFrom), moment.utc(newTo));
|
|
129
|
+
}
|
|
130
130
|
if (onForward) {
|
|
131
|
-
onForward(
|
|
131
|
+
onForward(moment.utc(newFrom).toDate(), moment.utc(newTo).toDate());
|
|
132
132
|
}
|
|
133
|
-
}, [isAfterMaxDate,
|
|
133
|
+
}, [isAfterMaxDate, getDatesByPeriod, onChange, onForward]);
|
|
134
134
|
const onLeftClickHandler = useCallback(() => {
|
|
135
135
|
if (isBeforeMinDate) {
|
|
136
136
|
return;
|
|
137
137
|
}
|
|
138
|
-
|
|
138
|
+
const [newFrom, newTo] = getDatesByPeriod(-1);
|
|
139
|
+
setFromDate(moment.utc(newFrom));
|
|
140
|
+
setToDate(moment.utc(newTo));
|
|
141
|
+
if (onChange) {
|
|
142
|
+
onChange(moment.utc(newFrom), moment.utc(newTo));
|
|
143
|
+
}
|
|
139
144
|
if (onBack) {
|
|
140
|
-
onBack(
|
|
145
|
+
onBack(moment.utc(newFrom).toDate(), moment.utc(newTo).toDate());
|
|
141
146
|
}
|
|
142
|
-
}, [isBeforeMinDate,
|
|
147
|
+
}, [isBeforeMinDate, getDatesByPeriod, onChange, onBack]);
|
|
143
148
|
const renderLeftRightButtons = useMemo(() => {
|
|
144
|
-
return step !== "
|
|
149
|
+
return step !== "range";
|
|
145
150
|
}, [step]);
|
|
146
|
-
const handleShow = useCallback(() => {
|
|
147
|
-
setShowDatePicker(!showDatePicker);
|
|
148
|
-
if (fromDate) {
|
|
149
|
-
setMonth(fromDate.toDate());
|
|
150
|
-
}
|
|
151
|
-
}, [setShowDatePicker, showDatePicker, fromDate]);
|
|
152
|
-
const closeMenu = useCallback(() => {
|
|
153
|
-
setShowDatePicker(false);
|
|
154
|
-
}, []);
|
|
155
|
-
const onMonthChange = useCallback(m => {
|
|
156
|
-
setMonth(m);
|
|
157
|
-
}, [setMonth]);
|
|
158
151
|
useEffect(() => {
|
|
159
|
-
setFromDate(moment(from));
|
|
160
|
-
setToDate(moment(to));
|
|
152
|
+
setFromDate(moment.utc(from));
|
|
153
|
+
setToDate(moment.utc(to));
|
|
161
154
|
}, [from, to]);
|
|
162
155
|
const dateStepperWidth = (fromDay, toDay, range) => {
|
|
163
|
-
if (fromDay.year() !== moment().year() || toDay.year() !== moment().year()) {
|
|
156
|
+
if (fromDay.utc().year() !== moment.utc().year() || toDay.utc().year() !== moment.utc().year()) {
|
|
164
157
|
switch (range) {
|
|
165
158
|
case "daily":
|
|
166
159
|
case "monthly":
|
|
@@ -190,21 +183,21 @@ export const DateStepper = _ref => {
|
|
|
190
183
|
};
|
|
191
184
|
};
|
|
192
185
|
const isDisabled = useCallback(day => {
|
|
193
|
-
const dayFormat = moment(day).format("YYYY-MM-DD");
|
|
194
|
-
const isBefore = maxValue
|
|
195
|
-
const isAfter = minValue
|
|
186
|
+
const dayFormat = moment.utc(day).format("YYYY-MM-DD");
|
|
187
|
+
const isBefore = moment.isMoment(maxValue) && moment(moment.utc(maxValue).format("YYYY-MM-DD")).isBefore(dayFormat);
|
|
188
|
+
const isAfter = moment.isMoment(minValue) && moment(moment.utc(minValue).format("YYYY-MM-DD")).isAfter(dayFormat);
|
|
196
189
|
return isBefore || isAfter;
|
|
197
190
|
}, [maxValue, minValue]);
|
|
198
|
-
const modifiers = useMemo(() => {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
}
|
|
207
|
-
}, [isDisabled]);
|
|
191
|
+
const modifiers = useMemo(() => ({
|
|
192
|
+
disabled: day => ({
|
|
193
|
+
matched: isDisabled(day),
|
|
194
|
+
title: null
|
|
195
|
+
}),
|
|
196
|
+
nonWorkingDay: day => ({
|
|
197
|
+
matched: isDisabled(day),
|
|
198
|
+
title: null
|
|
199
|
+
})
|
|
200
|
+
}), [isDisabled]);
|
|
208
201
|
return /*#__PURE__*/React.createElement(StyledButtonGroup, {
|
|
209
202
|
className: classNames("c-date-stepper", className)
|
|
210
203
|
}, renderLeftRightButtons ? /*#__PURE__*/React.createElement(StyledControl, {
|
|
@@ -214,32 +207,30 @@ export const DateStepper = _ref => {
|
|
|
214
207
|
disabled: isBeforeMinDate
|
|
215
208
|
}, /*#__PURE__*/React.createElement(ArrowLeftIcon, null)) : null, /*#__PURE__*/React.createElement(StyledDiv, {
|
|
216
209
|
$isTargetable: step === "yearly" || !withDatePicker,
|
|
217
|
-
$isRounded: step === "
|
|
210
|
+
$isRounded: step === "range",
|
|
218
211
|
style: dateStepperWidth(fromDate, toDate, step)
|
|
219
|
-
}, withDatePicker ? /*#__PURE__*/React.createElement(
|
|
212
|
+
}, withDatePicker && step !== "yearly" ? /*#__PURE__*/React.createElement(DatePicker, {
|
|
213
|
+
month: defaultMonth,
|
|
220
214
|
target: /*#__PURE__*/React.createElement(StyledButton, {
|
|
221
215
|
type: "button"
|
|
222
|
-
},
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
position: position
|
|
228
|
-
}, /*#__PURE__*/React.createElement(DatePicker, {
|
|
229
|
-
month: month,
|
|
230
|
-
selectionMode: step,
|
|
231
|
-
className: datePickerClass,
|
|
232
|
-
selectedDays: {
|
|
233
|
-
from: fromDate.toDate(),
|
|
234
|
-
to: toDate.toDate()
|
|
216
|
+
}, getDateFormatted),
|
|
217
|
+
mode: datePickerMode,
|
|
218
|
+
selected: {
|
|
219
|
+
from: moment.utc(fromDate).unix(),
|
|
220
|
+
to: moment.utc(toDate).unix()
|
|
235
221
|
},
|
|
236
222
|
onChange: onDatePickerChange,
|
|
237
|
-
onMonthChange: onMonthChange,
|
|
238
223
|
firstDayOfWeek: period === "week" ? 0 : 1,
|
|
239
224
|
modifiers: modifiers,
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
225
|
+
disabledDaysAfter: maxValue,
|
|
226
|
+
disabledDaysBefore: minValue,
|
|
227
|
+
disableYearPicker: !enableYearPicker,
|
|
228
|
+
popperClassName: popperClassName,
|
|
229
|
+
position: position,
|
|
230
|
+
key: datePickerMode,
|
|
231
|
+
instant: true,
|
|
232
|
+
required: true
|
|
233
|
+
}) : /*#__PURE__*/React.createElement(StyledSpan, null, getDateFormatted)), renderLeftRightButtons ? /*#__PURE__*/React.createElement(StyledControl, {
|
|
243
234
|
type: "button",
|
|
244
235
|
variant: "secondary",
|
|
245
236
|
onClick: onRightClickHandler,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateStepper.js","names":["React","useCallback","useMemo","useState","useEffect","classNames","moment","StyledButton","StyledButtonGroup","StyledDiv","StyledMenu","StyledSpan","StyledControl","DatePicker","ArrowRightIcon","ArrowLeftIcon","DateStepper","_ref","step","formatCallback","onChange","from","to","onBack","onForward","minValue","maxValue","className","period","datePickerClass","withDatePicker","defaultMonth","Date","popperClassName","position","fromDate","setFromDate","toDate","setToDate","showDatePicker","setShowDatePicker","month","setMonth","getDatesByPeriod","interval","date","add","clone","startOf","endOf","getDateFormatted","actualYear","year","showWeekOrCustomDateFormat","start","end","format","startDate","endDate","quarter","onChangeCallback","amount","newFrom","newTo","onDatePickerChange","dates","fromDateTemp","toDateTemp","isAfterMaxDate","isSameOrBefore","isBeforeMinDate","isSameOrAfter","onRightClickHandler","onLeftClickHandler","renderLeftRightButtons","handleShow","closeMenu","onMonthChange","m","dateStepperWidth","fromDay","toDay","range","minWidth","isDisabled","day","dayFormat","isBefore","isAfter","modifiers","day_disabled","nonWorkingDay","createElement","type","variant","onClick","disabled","$isTargetable","$isRounded","style","target","open","onOpen","onClose","selectionMode","selectedDays","firstDayOfWeek","dateRequired","fixedWeeks","displayName"],"sources":["../../../../../src/components/Steppers/DateStepper/DateStepper.tsx"],"sourcesContent":["import React, { FC, useCallback, useMemo, useState, useEffect } from \"react\";\n\nimport { Placement } from \"@popperjs/core\";\nimport classNames from \"classnames\";\nimport moment, { Moment } from \"moment\";\n\nimport {\n StyledButton,\n StyledButtonGroup,\n StyledDiv,\n StyledMenu,\n StyledSpan,\n StyledControl,\n} from \"./Styles\";\nimport { DatePicker } from \"../../DatePicker\";\nimport { ArrowRightIcon } from \"../../Icons\";\nimport ArrowLeftIcon from \"../../Icons/collection/ArrowLeft\";\n\nexport interface IDateStepperProps {\n /** One of the possible steps for this component */\n step:\n | \"daily\"\n | \"weekly\"\n | \"monthly\"\n | \"quarterly\"\n | \"yearly\"\n | \"custom\"\n | string;\n /** Callback function that will be called after the changed range */\n onChange?: (from: Date, to: Date) => void;\n /** Start date of the range */\n from: Date | string;\n /** End date of the range */\n to: Date | string;\n /** Callback function that will format the text label */\n formatCallback?: (from: string | Date, to: string | Date) => string;\n /** Default month */\n defaultMonth?: Date;\n /** Callback function onBack */\n onBack?: (from: Date, to: Date) => void;\n /** Callback function onForward */\n onForward?: (from: Date, to: Date) => void;\n /** Min date */\n minValue?: Date;\n /** Max fate */\n maxValue?: Date;\n /** html class */\n className?: string;\n /** Period for calculating week (isoWeek) */\n period?: \"week\" | \"isoWeek\";\n /** Classes for datePicker */\n datePickerClass?: string;\n /** Show datePicker in the middle button */\n withDatePicker?: boolean;\n /** Popper class name*/\n popperClassName?: string;\n /** DatePicker menu position */\n position?: Placement;\n}\n\n/**\n * This component allow you to select date range. It accepts two parameters \"from\" and \"to\" as valid format\n * onChange and onBack and onForward it will return \"from: Date\" and \"to: Date\" as function arguments\n */\n\nexport const DateStepper: FC<IDateStepperProps> = ({\n step,\n formatCallback,\n onChange,\n from,\n to,\n onBack,\n onForward,\n minValue,\n maxValue,\n className,\n period = \"week\",\n datePickerClass,\n withDatePicker = true,\n defaultMonth = new Date(),\n popperClassName,\n position = \"bottom\",\n}) => {\n const [fromDate, setFromDate] = useState(moment(from));\n const [toDate, setToDate] = useState(moment(to));\n const [showDatePicker, setShowDatePicker] = useState(false);\n const [month, setMonth] = useState(defaultMonth);\n\n const getDatesByPeriod = useCallback(\n (interval: number): Moment[] => {\n const date = fromDate ? fromDate : moment();\n if (step === \"daily\") {\n date.add(interval, \"days\");\n return [date, date.clone()];\n } else if (step === \"weekly\") {\n date.add(interval, \"weeks\");\n return [date.clone().startOf(period), date.clone().endOf(period)];\n } else if (step === \"monthly\") {\n date.add(interval, \"months\");\n return [date.clone().startOf(\"month\"), date.clone().endOf(\"month\")];\n } else if (step === \"quarterly\") {\n date.add(interval, \"quarters\");\n return [date.clone().startOf(\"quarter\"), date.clone().endOf(\"quarter\")];\n } else if (step === \"yearly\") {\n date.add(interval, \"years\");\n return [date.clone().startOf(\"year\"), date.clone().endOf(\"year\")];\n }\n return [date, date];\n },\n [fromDate, period, step]\n );\n\n const getDateFormatted = useMemo(() => {\n if (formatCallback) {\n return formatCallback(fromDate.toDate(), toDate.toDate());\n }\n\n const actualYear = moment().year();\n\n const showWeekOrCustomDateFormat = (start, end): string => {\n if (start.year() === actualYear && end.year() === actualYear) {\n return start.format(\"MMM DD\") + \" - \" + end.format(\"MMM DD\");\n } else {\n return start.format(\"MMM DD YYYY\") + \" - \" + end.format(\"MMM DD YYYY\");\n }\n };\n\n if (step === \"daily\") {\n if (fromDate.year() === actualYear) {\n return fromDate.format(\"MMM DD\");\n }\n return fromDate.format(\"MMM DD YYYY\");\n } else if (step === \"weekly\") {\n const startDate = fromDate.clone().startOf(period);\n const endDate = startDate.clone().endOf(period);\n return showWeekOrCustomDateFormat(startDate, endDate);\n } else if (step === \"monthly\") {\n return fromDate.format(\"MMM YYYY\");\n } else if (step === \"quarterly\") {\n return `Q${fromDate.quarter()}/${fromDate.format(\"YYYY\")}`;\n } else if (step === \"yearly\") {\n return fromDate.format(\"YYYY\");\n } else if (step === \"custom\") {\n return showWeekOrCustomDateFormat(fromDate, toDate);\n }\n\n return \"\";\n }, [fromDate, step, toDate, formatCallback, period]);\n\n const onChangeCallback = useCallback(\n (amount: number) => {\n const [newFrom, newTo] = getDatesByPeriod(amount);\n setFromDate(moment(newFrom));\n setToDate(moment(newTo));\n\n if (onChange) {\n onChange(newFrom.toDate(), newTo.toDate());\n }\n },\n [onChange, getDatesByPeriod]\n );\n\n const onDatePickerChange = useCallback(\n (dates?: { from: Date; to: Date }) => {\n const fromDateTemp = dates?.from;\n const toDateTemp = dates?.to;\n\n setFromDate(moment(fromDateTemp));\n setToDate(moment(toDateTemp));\n\n if (\n onChange &&\n fromDateTemp instanceof Date &&\n toDateTemp instanceof Date\n ) {\n onChange(fromDateTemp, toDateTemp);\n }\n },\n [onChange, setFromDate, setToDate]\n );\n\n const isAfterMaxDate = useMemo(() => {\n return (\n maxValue instanceof Date &&\n moment(moment(maxValue).format(\"YYYY-MM-DD\")).isSameOrBefore(\n toDate.format(\"YYYY-MM-DD\")\n )\n );\n }, [maxValue, toDate]);\n\n const isBeforeMinDate = useMemo(() => {\n return (\n minValue instanceof Date &&\n moment(moment(minValue).format(\"YYYY-MM-DD\")).isSameOrAfter(\n toDate.format(\"YYYY-MM-DD\")\n )\n );\n }, [minValue, toDate]);\n\n useEffect(() => {\n if (isBeforeMinDate) {\n if (step === \"daily\") {\n setFromDate(moment(minValue));\n setToDate(moment(minValue));\n }\n }\n if (isAfterMaxDate) {\n if (step === \"daily\") {\n setFromDate(moment(maxValue));\n setToDate(moment(maxValue));\n }\n }\n }, [step, minValue, maxValue, isBeforeMinDate, isAfterMaxDate]);\n\n const onRightClickHandler = useCallback(() => {\n if (isAfterMaxDate) {\n return;\n }\n\n onChangeCallback(1);\n\n if (onForward) {\n onForward(fromDate.toDate(), toDate.toDate());\n }\n }, [isAfterMaxDate, onChangeCallback, onForward, fromDate, toDate]);\n\n const onLeftClickHandler = useCallback(() => {\n if (isBeforeMinDate) {\n return;\n }\n\n onChangeCallback(-1);\n\n if (onBack) {\n onBack(fromDate.toDate(), toDate.toDate());\n }\n }, [isBeforeMinDate, onChangeCallback, onBack, fromDate, toDate]);\n\n const renderLeftRightButtons = useMemo(() => {\n return step !== \"custom\";\n }, [step]);\n\n const handleShow = useCallback(() => {\n setShowDatePicker(!showDatePicker);\n if (fromDate) {\n setMonth(fromDate.toDate());\n }\n }, [setShowDatePicker, showDatePicker, fromDate]);\n\n const closeMenu = useCallback(() => {\n setShowDatePicker(false);\n }, []);\n\n const onMonthChange = useCallback(\n (m: Date) => {\n setMonth(m);\n },\n [setMonth]\n );\n\n useEffect(() => {\n setFromDate(moment(from));\n setToDate(moment(to));\n }, [from, to]);\n\n const dateStepperWidth = (\n fromDay: Moment,\n toDay: Moment,\n range: string\n ): { minWidth: string } => {\n if (\n fromDay.year() !== moment().year() ||\n toDay.year() !== moment().year()\n ) {\n switch (range) {\n case \"daily\":\n case \"monthly\":\n return { minWidth: \"122px\" };\n case \"weekly\":\n case \"custom\":\n return { minWidth: \"232px\" };\n }\n }\n switch (range) {\n case \"monthly\":\n return { minWidth: \"122px\" };\n case \"weekly\":\n case \"custom\":\n return { minWidth: \"182px\" };\n }\n\n return { minWidth: \"102px\" };\n };\n const isDisabled = useCallback(\n (day: Date): boolean => {\n const dayFormat = moment(day).format(\"YYYY-MM-DD\");\n\n const isBefore =\n maxValue instanceof Date &&\n moment(moment(maxValue).format(\"YYYY-MM-DD\")).isBefore(dayFormat);\n const isAfter =\n minValue instanceof Date &&\n moment(moment(minValue).format(\"YYYY-MM-DD\")).isAfter(dayFormat);\n\n return isBefore || isAfter;\n },\n [maxValue, minValue]\n );\n\n const modifiers = useMemo(() => {\n return {\n day_disabled: (day: Date): boolean => {\n return isDisabled(day);\n },\n nonWorkingDay: (day: Date): boolean => {\n return isDisabled(day);\n },\n };\n }, [isDisabled]);\n\n return (\n <StyledButtonGroup className={classNames(\"c-date-stepper\", className)}>\n {renderLeftRightButtons ? (\n <StyledControl\n type=\"button\"\n variant=\"secondary\"\n onClick={onLeftClickHandler}\n disabled={isBeforeMinDate}\n >\n <ArrowLeftIcon />\n </StyledControl>\n ) : null}\n <StyledDiv\n $isTargetable={step === \"yearly\" || !withDatePicker}\n $isRounded={step === \"custom\"}\n style={dateStepperWidth(fromDate, toDate, step)}\n >\n {withDatePicker ? (\n <StyledMenu\n target={\n <StyledButton type=\"button\">\n <span>{getDateFormatted}</span>\n </StyledButton>\n }\n open={showDatePicker}\n onOpen={handleShow}\n onClose={closeMenu}\n popperClassName={popperClassName}\n position={position}\n >\n <DatePicker\n month={month}\n selectionMode={step}\n className={datePickerClass}\n selectedDays={{ from: fromDate.toDate(), to: toDate.toDate() }}\n onChange={onDatePickerChange}\n onMonthChange={onMonthChange}\n firstDayOfWeek={period === \"week\" ? 0 : 1}\n modifiers={modifiers}\n dateRequired\n fixedWeeks\n />\n </StyledMenu>\n ) : (\n <StyledSpan>{getDateFormatted}</StyledSpan>\n )}\n </StyledDiv>\n {renderLeftRightButtons ? (\n <StyledControl\n type=\"button\"\n variant=\"secondary\"\n onClick={onRightClickHandler}\n disabled={isAfterMaxDate}\n >\n <ArrowRightIcon />\n </StyledControl>\n ) : null}\n </StyledButtonGroup>\n );\n};\n\nDateStepper.displayName = \"DateStepper\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DateStepper.js","names":["React","useCallback","useMemo","useState","useEffect","classNames","moment","StyledButton","StyledButtonGroup","StyledDiv","StyledSpan","StyledControl","DatePicker","ArrowRightIcon","ArrowLeftIcon","DateStepper","_ref","step","formatCallback","onChange","from","to","onBack","onForward","minValue","maxValue","className","period","withDatePicker","defaultMonth","enableYearPicker","position","popperClassName","fromDate","setFromDate","utc","toDate","setToDate","getDatesByPeriod","interval","date","add","clone","startOf","endOf","getDateFormatted","actualYear","year","showWeekOrCustomDateFormat","start","end","format","startDate","endDate","quarter","datePickerMode","onDatePickerChange","dates","fromDateTemp","Number","toDateTemp","isMoment","isAfterMaxDate","isSameOrBefore","isBeforeMinDate","isSameOrAfter","onRightClickHandler","newFrom","newTo","onLeftClickHandler","renderLeftRightButtons","dateStepperWidth","fromDay","toDay","range","minWidth","isDisabled","day","dayFormat","isBefore","isAfter","modifiers","disabled","matched","title","nonWorkingDay","createElement","type","variant","onClick","$isTargetable","$isRounded","style","month","target","mode","selected","unix","firstDayOfWeek","disabledDaysAfter","disabledDaysBefore","disableYearPicker","key","instant","required","displayName"],"sources":["../../../../../src/components/Steppers/DateStepper/DateStepper.tsx"],"sourcesContent":["import React, { FC, useCallback, useMemo, useState, useEffect } from \"react\";\n\nimport { Placement } from \"@popperjs/core\";\nimport classNames from \"classnames\";\nimport { Moment } from \"moment\";\nimport moment from \"moment-timezone\";\n\nimport {\n StyledButton,\n StyledButtonGroup,\n StyledDiv,\n StyledSpan,\n StyledControl,\n} from \"./Styles\";\nimport { DatePicker, TimestampDateRange } from \"../../DatePicker/DatePicker\";\nimport { ArrowRightIcon } from \"../../Icons\";\nimport ArrowLeftIcon from \"../../Icons/collection/ArrowLeft\";\n\nexport interface IDateStepperProps {\n /** One of the possible steps for this component */\n step: \"daily\" | \"weekly\" | \"monthly\" | \"quarterly\" | \"yearly\" | \"range\";\n /** Callback function that will be called after the changed range */\n onChange?: (from: Date, to: Date) => void;\n /** Start date of the range */\n from: Moment | string;\n /** End date of the range */\n to: Moment | string;\n /** Callback function that will format the text label */\n formatCallback?: (from: string | Moment, to: string | Moment) => string;\n /** Default month */\n defaultMonth?: Moment;\n /** Callback function onBack */\n onBack?: (from: Date, to: Date) => void;\n /** Callback function onForward */\n onForward?: (from: Date, to: Date) => void;\n /** Min date */\n minValue?: Moment;\n /** Max fate */\n maxValue?: Moment;\n /** html class */\n className?: string;\n /** Period for calculating week (isoWeek) */\n period?: \"week\" | \"isoWeek\";\n /** Classes for datePicker */\n datePickerClass?: string;\n /** Show datePicker in the middle button */\n withDatePicker?: boolean;\n /** Popper class name*/\n popperClassName?: string;\n /** DatePicker menu position */\n position?: Placement;\n /** Enable year picker in DatePicker */\n enableYearPicker?: boolean;\n}\n\n/**\n * This component allow you to select date range. It accepts two parameters \"from\" and \"to\" as valid format\n * onChange and onBack and onForward it will return \"from: Date\" and \"to: Date\" as function arguments\n */\n\nexport const DateStepper: FC<IDateStepperProps> = ({\n step,\n formatCallback,\n onChange,\n from,\n to,\n onBack,\n onForward,\n minValue,\n maxValue,\n className,\n period = \"week\",\n withDatePicker = true,\n defaultMonth = moment(),\n enableYearPicker,\n position = \"bottom\",\n popperClassName,\n}) => {\n const [fromDate, setFromDate] = useState<Moment>(moment.utc(from));\n const [toDate, setToDate] = useState<Moment>(moment.utc(to));\n\n const getDatesByPeriod = useCallback(\n (interval: number): Moment[] => {\n const date = fromDate ? fromDate : moment();\n if (step === \"daily\") {\n date.add(interval, \"days\");\n return [date, date.clone()];\n } else if (step === \"weekly\") {\n date.add(interval, \"weeks\");\n return [date.clone().startOf(period), date.clone().endOf(period)];\n } else if (step === \"monthly\") {\n date.add(interval, \"months\");\n return [date.clone().startOf(\"month\"), date.clone().endOf(\"month\")];\n } else if (step === \"quarterly\") {\n date.add(interval, \"quarters\");\n return [date.clone().startOf(\"quarter\"), date.clone().endOf(\"quarter\")];\n } else if (step === \"yearly\") {\n date.add(interval, \"years\");\n return [date.clone().startOf(\"year\"), date.clone().endOf(\"year\")];\n }\n return [date, date];\n },\n [fromDate, period, step]\n );\n\n const getDateFormatted = useMemo(() => {\n if (formatCallback) {\n return formatCallback(fromDate, toDate);\n }\n\n const actualYear = moment().year();\n\n const showWeekOrCustomDateFormat = (start, end): string => {\n if (start.year() === actualYear && end.year() === actualYear) {\n return (\n start.utc().format(\"MMM DD\") + \" - \" + end.utc().format(\"MMM DD\")\n );\n } else {\n return (\n start.utc().format(\"MMM DD YYYY\") +\n \" - \" +\n end.utc().format(\"MMM DD YYYY\")\n );\n }\n };\n\n if (step === \"daily\") {\n if (fromDate.year() === actualYear) {\n return fromDate.utc().format(\"MMM DD\");\n }\n return fromDate.utc().format(\"MMM DD YYYY\");\n } else if (step === \"weekly\") {\n const startDate = fromDate.clone().utc().startOf(period);\n const endDate = startDate.clone().utc().endOf(period);\n return showWeekOrCustomDateFormat(startDate, endDate);\n } else if (step === \"monthly\") {\n return fromDate.utc().format(\"MMM YYYY\");\n } else if (step === \"quarterly\") {\n return `Q${fromDate.utc().quarter()}/${fromDate.utc().format(\"YYYY\")}`;\n } else if (step === \"yearly\") {\n return fromDate.utc().format(\"YYYY\");\n } else if (step === \"range\") {\n return showWeekOrCustomDateFormat(fromDate, toDate);\n }\n\n return \"\";\n }, [fromDate, toDate, step, formatCallback, period]);\n\n const datePickerMode = useMemo(() => {\n if (step === \"range\") return \"custom\";\n if (step === \"yearly\") return \"custom\";\n return step;\n }, [step]);\n\n const onDatePickerChange = useCallback(\n (dates?: TimestampDateRange) => {\n const fromDateTemp: Moment = moment.utc(Number(dates?.from) * 1000);\n const toDateTemp: Moment = moment.utc(Number(dates?.to) * 1000);\n\n setFromDate(fromDateTemp);\n setToDate(toDateTemp);\n\n if (\n onChange &&\n moment.isMoment(fromDateTemp) &&\n moment.isMoment(toDateTemp)\n ) {\n onChange(fromDateTemp.toDate(), toDateTemp.toDate());\n }\n },\n [onChange, setFromDate, setToDate]\n );\n\n const isAfterMaxDate = useMemo(() => {\n return (\n moment.isMoment(maxValue) &&\n moment(moment.utc(maxValue).format(\"YYYY-MM-DD\")).isSameOrBefore(\n toDate.utc().format(\"YYYY-MM-DD\")\n )\n );\n }, [maxValue, toDate]);\n\n const isBeforeMinDate = useMemo(() => {\n return (\n moment.isMoment(minValue) &&\n moment\n .utc(moment.utc(minValue).format(\"YYYY-MM-DD\"))\n .isSameOrAfter(toDate.utc().format(\"YYYY-MM-DD\"))\n );\n }, [minValue, toDate]);\n\n useEffect(() => {\n if (isBeforeMinDate) {\n if (step === \"daily\") {\n setFromDate(moment.utc(minValue));\n setToDate(moment.utc(minValue));\n }\n }\n if (isAfterMaxDate) {\n if (step === \"daily\") {\n setFromDate(moment.utc(maxValue));\n setToDate(moment.utc(maxValue));\n }\n }\n }, [step, minValue, maxValue, isBeforeMinDate, isAfterMaxDate]);\n\n const onRightClickHandler = useCallback(() => {\n if (isAfterMaxDate) {\n return;\n }\n\n const [newFrom, newTo] = getDatesByPeriod(1);\n setFromDate(moment.utc(newFrom));\n setToDate(moment.utc(newTo));\n\n if (onChange) {\n onChange(moment.utc(newFrom), moment.utc(newTo));\n }\n\n if (onForward) {\n onForward(moment.utc(newFrom).toDate(), moment.utc(newTo).toDate());\n }\n }, [isAfterMaxDate, getDatesByPeriod, onChange, onForward]);\n\n const onLeftClickHandler = useCallback(() => {\n if (isBeforeMinDate) {\n return;\n }\n\n const [newFrom, newTo] = getDatesByPeriod(-1);\n setFromDate(moment.utc(newFrom));\n setToDate(moment.utc(newTo));\n\n if (onChange) {\n onChange(moment.utc(newFrom), moment.utc(newTo));\n }\n if (onBack) {\n onBack(moment.utc(newFrom).toDate(), moment.utc(newTo).toDate());\n }\n }, [isBeforeMinDate, getDatesByPeriod, onChange, onBack]);\n\n const renderLeftRightButtons = useMemo(() => {\n return step !== \"range\";\n }, [step]);\n\n useEffect(() => {\n setFromDate(moment.utc(from));\n setToDate(moment.utc(to));\n }, [from, to]);\n\n const dateStepperWidth = (\n fromDay: Moment,\n toDay: Moment,\n range: string\n ): { minWidth: string } => {\n if (\n fromDay.utc().year() !== moment.utc().year() ||\n toDay.utc().year() !== moment.utc().year()\n ) {\n switch (range) {\n case \"daily\":\n case \"monthly\":\n return { minWidth: \"122px\" };\n case \"weekly\":\n case \"custom\":\n return { minWidth: \"232px\" };\n }\n }\n switch (range) {\n case \"monthly\":\n return { minWidth: \"122px\" };\n case \"weekly\":\n case \"custom\":\n return { minWidth: \"182px\" };\n }\n\n return { minWidth: \"102px\" };\n };\n const isDisabled = useCallback(\n (day: Moment): boolean => {\n const dayFormat = moment.utc(day).format(\"YYYY-MM-DD\");\n\n const isBefore =\n moment.isMoment(maxValue) &&\n moment(moment.utc(maxValue).format(\"YYYY-MM-DD\")).isBefore(dayFormat);\n const isAfter =\n moment.isMoment(minValue) &&\n moment(moment.utc(minValue).format(\"YYYY-MM-DD\")).isAfter(dayFormat);\n\n return isBefore || isAfter;\n },\n [maxValue, minValue]\n );\n\n const modifiers = useMemo(\n () => ({\n disabled: (day: Moment) => ({ matched: isDisabled(day), title: null }),\n nonWorkingDay: (day: Moment) => ({\n matched: isDisabled(day),\n title: null,\n }),\n }),\n [isDisabled]\n );\n\n return (\n <StyledButtonGroup className={classNames(\"c-date-stepper\", className)}>\n {renderLeftRightButtons ? (\n <StyledControl\n type=\"button\"\n variant=\"secondary\"\n onClick={onLeftClickHandler}\n disabled={isBeforeMinDate}\n >\n <ArrowLeftIcon />\n </StyledControl>\n ) : null}\n <StyledDiv\n $isTargetable={step === \"yearly\" || !withDatePicker}\n $isRounded={step === \"range\"}\n style={dateStepperWidth(fromDate, toDate, step)}\n >\n {withDatePicker && step !== \"yearly\" ? (\n <DatePicker\n month={defaultMonth}\n target={\n <StyledButton type=\"button\">{getDateFormatted}</StyledButton>\n }\n mode={datePickerMode}\n selected={{\n from: moment.utc(fromDate).unix(),\n to: moment.utc(toDate).unix(),\n }}\n onChange={onDatePickerChange}\n firstDayOfWeek={period === \"week\" ? 0 : 1}\n modifiers={modifiers}\n disabledDaysAfter={maxValue}\n disabledDaysBefore={minValue}\n disableYearPicker={!enableYearPicker}\n popperClassName={popperClassName}\n position={position}\n key={datePickerMode}\n instant\n required\n />\n ) : (\n <StyledSpan>{getDateFormatted}</StyledSpan>\n )}\n </StyledDiv>\n {renderLeftRightButtons ? (\n <StyledControl\n type=\"button\"\n variant=\"secondary\"\n onClick={onRightClickHandler}\n disabled={isAfterMaxDate}\n >\n <ArrowRightIcon />\n </StyledControl>\n ) : null}\n </StyledButtonGroup>\n );\n};\n\nDateStepper.displayName = \"DateStepper\";\n"],"mappings":"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"}
|