@activecollab/components 2.0.199 → 2.0.201

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.
@@ -56,7 +56,8 @@ export const SelectDateV2 = _ref => {
56
56
  disableDaysBefore,
57
57
  enableYearPicker,
58
58
  disableAnimations,
59
- disabledDaysAfter
59
+ disabledDaysAfter,
60
+ onChange
60
61
  } = _ref;
61
62
  const labelText = useMemo(() => {
62
63
  if (!selectedDays) {
@@ -118,20 +119,6 @@ export const SelectDateV2 = _ref => {
118
119
  };
119
120
  },
120
121
  day_disabled: day => {
121
- if (disableDaysBefore) {
122
- if (day.toJSON().slice(0, 10) < disableDaysBefore.toJSON().slice(0, 10)) {
123
- return {
124
- matched: true,
125
- title: ""
126
- };
127
- }
128
- }
129
- if (!weekendIsSelectable && weekends.some(value => value === day.getDay())) {
130
- return {
131
- matched: true,
132
- title: weekendLabel
133
- };
134
- }
135
122
  const currentDay = new Date(day.getFullYear(), day.getMonth(), day.getDate());
136
123
  const globalDayOff = globalDaysOff.find(data => isDayInRange(currentDay, data));
137
124
  return {
@@ -140,7 +127,7 @@ export const SelectDateV2 = _ref => {
140
127
  };
141
128
  }
142
129
  };
143
- }, [daysToModify, disableDaysBefore, nonWorkingDaysOfWeek, nonWorkingDaysOfWeekLabel, weekendIsSelectable, weekendLabel, weekends]);
130
+ }, [daysToModify, nonWorkingDaysOfWeek, nonWorkingDaysOfWeekLabel, weekendLabel, weekends]);
144
131
  const renderTargetEl = useMemo(() => {
145
132
  if (labelType === "icon" && icon) {
146
133
  return /*#__PURE__*/React.createElement(SelectDateTarget, {
@@ -178,6 +165,7 @@ export const SelectDateV2 = _ref => {
178
165
  cancelLabel: cancelButtonText,
179
166
  clearLabel: clearButtonText,
180
167
  onSave: onSave,
168
+ onChange: onChange,
181
169
  onClose: onCancel,
182
170
  modifiers: modifiers,
183
171
  modalHeaderText: modalHeaderText,
@@ -213,7 +201,7 @@ export const SelectDateV2 = _ref => {
213
201
  popperTooltipStyle: popperTooltipStyle,
214
202
  disabled: weekendIsSelectable ? [] : [0, 6],
215
203
  onSave: onSave,
216
- onChange: onSave,
204
+ onChange: onChange,
217
205
  modifiers: modifiers,
218
206
  onDayClick: onDayClick,
219
207
  disableYearPicker: !enableYearPicker,
@@ -1 +1 @@
1
- {"version":3,"file":"SelectDateV2.js","names":["React","useMemo","classnames","SelectDateTarget","StyledSelectDate","StyledSelectDateButton","formatDate","DatePickerV2","toMoment","isDayInRange","day","data","repeating","from","Date","getFullYear","getMonth","getDate","to","SelectDateV2","_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","labelText","formattedEndDate","formattedStartDate","isSame","modifiers","userAvailabilities","filter","type","globalDaysOff","selectableGlobalDaysOff","userAvailability","currentDay","matchedData","find","matched","title","weekend","isWeekend","includes","getDay","nonWorkingDay","nonWorkingDays","isNonWorkingDay","day_disabled","toJSON","slice","some","value","globalDayOff","renderTargetEl","createElement","className","target","month","instant","selected","saveLabel","cancelLabel","clearLabel","onClose","disabledDaysBefore","disabled","open","onCalendarToggle","enableConfirmModal","disableYearPicker","showControls","onChange","displayName"],"sources":["../../../../src/components/SelectDate/SelectDateV2.tsx"],"sourcesContent":["import React, { ElementType, FC, useMemo, CSSProperties } from \"react\";\n\nimport { Placement } from \"@popperjs/core\";\nimport classnames from \"classnames\";\nimport { Moment } from \"moment\";\n\nimport { SelectDateTarget } from \"./SelectDateTarget\";\nimport { StyledSelectDate, StyledSelectDateButton } from \"./Styles\";\nimport { DaysToModify } from \"./types\";\nimport { formatDate } from \"../../utils/dateUtils\";\nimport {\n ChangeMode,\n DatePickerV2,\n TimestampDateRange,\n toMoment,\n} from \"../DatePicker/DatePickerV2\";\n\nconst isDayInRange = (day: Date, data: DaysToModify): 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 ISelectDateV2 {\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 in atomic mode */\n onSave?: (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 SelectDateV2: FC<ISelectDateV2> = ({\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}) => {\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: Date) => {\n const currentDay = new Date(\n day.getFullYear(),\n day.getMonth(),\n day.getDate()\n );\n const matchedData = userAvailabilities.find((data) =>\n isDayInRange(currentDay, data)\n );\n return {\n matched: !!matchedData,\n title: matchedData ? matchedData.title : null,\n };\n },\n weekend: (day: Date) => {\n const isWeekend = weekends.includes(day.getDay());\n return {\n matched: isWeekend,\n title: isWeekend ? weekendLabel : null,\n };\n },\n nonWorkingDay: (day: Date) => {\n if (weekends.includes(day.getDay())) {\n return { matched: true, title: \"\" };\n }\n const nonWorkingDays = [...selectableGlobalDaysOff, ...globalDaysOff];\n const currentDay = new Date(\n day.getFullYear(),\n day.getMonth(),\n day.getDate()\n );\n const matchedData = nonWorkingDays.find((data) =>\n isDayInRange(currentDay, data)\n );\n return {\n matched: !!matchedData,\n title: matchedData ? matchedData.title : null,\n };\n },\n nonWorkingDaysOfWeek: (day: Date) => {\n const isNonWorkingDay = nonWorkingDaysOfWeek.includes(day.getDay());\n return {\n matched: isNonWorkingDay,\n title: isNonWorkingDay ? nonWorkingDaysOfWeekLabel : null,\n };\n },\n day_disabled: (day: Date) => {\n if (disableDaysBefore) {\n if (\n day.toJSON().slice(0, 10) < disableDaysBefore.toJSON().slice(0, 10)\n ) {\n return { matched: true, title: \"\" };\n }\n }\n if (\n !weekendIsSelectable &&\n weekends.some((value) => value === day.getDay())\n ) {\n return { matched: true, title: weekendLabel };\n }\n const currentDay = new Date(\n day.getFullYear(),\n day.getMonth(),\n day.getDate()\n );\n\n const globalDayOff = globalDaysOff.find((data) =>\n isDayInRange(currentDay, data)\n );\n\n return {\n matched: !!globalDayOff,\n title: null,\n };\n },\n };\n }, [\n daysToModify,\n disableDaysBefore,\n nonWorkingDaysOfWeek,\n nonWorkingDaysOfWeekLabel,\n weekendIsSelectable,\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 <DatePickerV2\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 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 ? [] : [0, 6]}\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 <DatePickerV2\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 ? [] : [0, 6]}\n onSave={onSave}\n onChange={onSave}\n modifiers={modifiers}\n onDayClick={onDayClick}\n disableYearPicker={!enableYearPicker}\n disableAnimations={disableAnimations}\n showControls\n open\n />\n )}\n </StyledSelectDate>\n );\n};\n\nSelectDateV2.displayName = \"SelectDateV2\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"SelectDateV2.js","names":["React","useMemo","classnames","SelectDateTarget","StyledSelectDate","StyledSelectDateButton","formatDate","DatePickerV2","toMoment","isDayInRange","day","data","repeating","from","Date","getFullYear","getMonth","getDate","to","SelectDateV2","_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","currentDay","matchedData","find","matched","title","weekend","isWeekend","includes","getDay","nonWorkingDay","nonWorkingDays","isNonWorkingDay","day_disabled","globalDayOff","renderTargetEl","createElement","className","target","month","instant","selected","saveLabel","cancelLabel","clearLabel","onClose","disabledDaysBefore","disabled","open","onCalendarToggle","enableConfirmModal","disableYearPicker","showControls","displayName"],"sources":["../../../../src/components/SelectDate/SelectDateV2.tsx"],"sourcesContent":["import React, { ElementType, FC, useMemo, CSSProperties } from \"react\";\n\nimport { Placement } from \"@popperjs/core\";\nimport classnames from \"classnames\";\nimport { Moment } from \"moment\";\n\nimport { SelectDateTarget } from \"./SelectDateTarget\";\nimport { StyledSelectDate, StyledSelectDateButton } from \"./Styles\";\nimport { DaysToModify } from \"./types\";\nimport { formatDate } from \"../../utils/dateUtils\";\nimport {\n ChangeMode,\n DatePickerV2,\n TimestampDateRange,\n toMoment,\n} from \"../DatePicker/DatePickerV2\";\n\nconst isDayInRange = (day: Date, data: DaysToModify): 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 ISelectDateV2 {\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 SelectDateV2: FC<ISelectDateV2> = ({\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: Date) => {\n const currentDay = new Date(\n day.getFullYear(),\n day.getMonth(),\n day.getDate()\n );\n const matchedData = userAvailabilities.find((data) =>\n isDayInRange(currentDay, data)\n );\n return {\n matched: !!matchedData,\n title: matchedData ? matchedData.title : null,\n };\n },\n weekend: (day: Date) => {\n const isWeekend = weekends.includes(day.getDay());\n return {\n matched: isWeekend,\n title: isWeekend ? weekendLabel : null,\n };\n },\n nonWorkingDay: (day: Date) => {\n if (weekends.includes(day.getDay())) {\n return { matched: true, title: \"\" };\n }\n const nonWorkingDays = [...selectableGlobalDaysOff, ...globalDaysOff];\n const currentDay = new Date(\n day.getFullYear(),\n day.getMonth(),\n day.getDate()\n );\n const matchedData = nonWorkingDays.find((data) =>\n isDayInRange(currentDay, data)\n );\n return {\n matched: !!matchedData,\n title: matchedData ? matchedData.title : null,\n };\n },\n nonWorkingDaysOfWeek: (day: Date) => {\n const isNonWorkingDay = nonWorkingDaysOfWeek.includes(day.getDay());\n return {\n matched: isNonWorkingDay,\n title: isNonWorkingDay ? nonWorkingDaysOfWeekLabel : null,\n };\n },\n day_disabled: (day: Date) => {\n const currentDay = new Date(\n day.getFullYear(),\n day.getMonth(),\n day.getDate()\n );\n\n const globalDayOff = globalDaysOff.find((data) =>\n isDayInRange(currentDay, 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 <DatePickerV2\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 ? [] : [0, 6]}\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 <DatePickerV2\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 ? [] : [0, 6]}\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\nSelectDateV2.displayName = \"SelectDateV2\";\n"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -11145,20 +11145,22 @@
11145
11145
  setSelected(range);
11146
11146
  if (onChange) onChange({
11147
11147
  from: range.from.utc().unix(),
11148
- to: moment__default$1["default"](range.to).utc().unix()
11148
+ to: range !== null && range !== void 0 && range.to ? moment__default$1["default"](range.to).utc().unix() : null
11149
11149
  });
11150
11150
  if (instant && onSave) {
11151
11151
  onSave({
11152
11152
  from: range.from.utc().unix(),
11153
- to: moment__default$1["default"](range.to).utc().unix()
11153
+ to: range !== null && range !== void 0 && range.to ? moment__default$1["default"](range.to).utc().unix() : null
11154
11154
  });
11155
11155
  }
11156
11156
  }
11157
11157
  }, [onChange, onSave, instant]);
11158
11158
  var toggleCalendar = React.useCallback(function () {
11159
- setIsOpen(!isOpen);
11160
- if (onCalendarToggle) onCalendarToggle(!isOpen);
11161
- }, [isOpen, onCalendarToggle]);
11159
+ if (target) {
11160
+ setIsOpen(!isOpen);
11161
+ if (onCalendarToggle) onCalendarToggle(!isOpen);
11162
+ }
11163
+ }, [isOpen, onCalendarToggle, target]);
11162
11164
  var toggleYearSelect = React.useCallback(function () {
11163
11165
  setIsYearSelectOpen(!isYearSelectOpen);
11164
11166
  setIsMonthSelectOpen(true);
@@ -11236,9 +11238,9 @@
11236
11238
  from: date.utc(),
11237
11239
  to: null
11238
11240
  });
11239
- onChange && onChange({
11240
- from: date.utc().unix(),
11241
- to: date.utc().unix()
11241
+ handleSelection({
11242
+ from: date,
11243
+ to: null
11242
11244
  });
11243
11245
  return;
11244
11246
  }
@@ -11251,30 +11253,30 @@
11251
11253
  to: selected.from
11252
11254
  };
11253
11255
  setSelected(newSelection);
11254
- onChange && onChange({
11255
- from: newSelection.from.utc().unix(),
11256
- to: newSelection.to.utc().unix()
11256
+ handleSelection({
11257
+ from: newSelection.from,
11258
+ to: newSelection.to
11257
11259
  });
11258
11260
  } else if (moment__default$1["default"].isMoment(selected === null || selected === void 0 ? void 0 : selected.from) && moment__default$1["default"].isMoment(selected === null || selected === void 0 ? void 0 : selected.to)) {
11259
11261
  setSelected({
11260
- from: date.utc(),
11262
+ from: date,
11261
11263
  to: null
11262
11264
  });
11263
- onChange && onChange({
11264
- from: date.utc().unix(),
11265
+ handleSelection({
11266
+ from: date,
11265
11267
  to: null
11266
11268
  });
11267
11269
  } else if (moment__default$1["default"].isMoment(selected === null || selected === void 0 ? void 0 : selected.from) && selected !== null && selected !== void 0 && selected.from.isSame(date.utc(), "day") && !required) {
11268
11270
  setSelected(null);
11269
- onChange && onChange(undefined);
11271
+ handleSelection(undefined);
11270
11272
  } else if (selected.from === null && selected.to === null) {
11271
11273
  setSelected({
11272
11274
  from: date.utc(),
11273
11275
  to: null
11274
11276
  });
11275
- onChange && onChange({
11276
- from: date.utc().unix(),
11277
- to: date.utc().unix()
11277
+ handleSelection({
11278
+ from: date,
11279
+ to: date
11278
11280
  });
11279
11281
  }
11280
11282
  };
@@ -11647,6 +11649,7 @@
11647
11649
  };
11648
11650
  }, [isOpen, handleMonthChange]);
11649
11651
  var saveIsDisabled = function saveIsDisabled() {
11652
+ if (!target) return false;
11650
11653
  if (!defaultSelected && !selected) {
11651
11654
  return true;
11652
11655
  }
@@ -19298,7 +19301,8 @@
19298
19301
  disableDaysBefore = _ref.disableDaysBefore,
19299
19302
  enableYearPicker = _ref.enableYearPicker,
19300
19303
  disableAnimations = _ref.disableAnimations,
19301
- disabledDaysAfter = _ref.disabledDaysAfter;
19304
+ disabledDaysAfter = _ref.disabledDaysAfter,
19305
+ onChange = _ref.onChange;
19302
19306
  var labelText = React.useMemo(function () {
19303
19307
  if (!selectedDays) {
19304
19308
  return defaultLabelText;
@@ -19369,22 +19373,6 @@
19369
19373
  };
19370
19374
  },
19371
19375
  day_disabled: function day_disabled(day) {
19372
- if (disableDaysBefore) {
19373
- if (day.toJSON().slice(0, 10) < disableDaysBefore.toJSON().slice(0, 10)) {
19374
- return {
19375
- matched: true,
19376
- title: ""
19377
- };
19378
- }
19379
- }
19380
- if (!weekendIsSelectable && weekends.some(function (value) {
19381
- return value === day.getDay();
19382
- })) {
19383
- return {
19384
- matched: true,
19385
- title: weekendLabel
19386
- };
19387
- }
19388
19376
  var currentDay = new Date(day.getFullYear(), day.getMonth(), day.getDate());
19389
19377
  var globalDayOff = globalDaysOff.find(function (data) {
19390
19378
  return isDayInRange(currentDay, data);
@@ -19395,7 +19383,7 @@
19395
19383
  };
19396
19384
  }
19397
19385
  };
19398
- }, [daysToModify, disableDaysBefore, _nonWorkingDaysOfWeek, nonWorkingDaysOfWeekLabel, weekendIsSelectable, weekendLabel, weekends]);
19386
+ }, [daysToModify, _nonWorkingDaysOfWeek, nonWorkingDaysOfWeekLabel, weekendLabel, weekends]);
19399
19387
  var renderTargetEl = React.useMemo(function () {
19400
19388
  if (labelType === "icon" && icon) {
19401
19389
  return /*#__PURE__*/React__default["default"].createElement(SelectDateTarget, {
@@ -19433,6 +19421,7 @@
19433
19421
  cancelLabel: cancelButtonText,
19434
19422
  clearLabel: clearButtonText,
19435
19423
  onSave: onSave,
19424
+ onChange: onChange,
19436
19425
  onClose: onCancel,
19437
19426
  modifiers: modifiers,
19438
19427
  modalHeaderText: modalHeaderText,
@@ -19468,7 +19457,7 @@
19468
19457
  popperTooltipStyle: popperTooltipStyle,
19469
19458
  disabled: weekendIsSelectable ? [] : [0, 6],
19470
19459
  onSave: onSave,
19471
- onChange: onSave,
19460
+ onChange: onChange,
19472
19461
  modifiers: modifiers,
19473
19462
  onDayClick: onDayClick,
19474
19463
  disableYearPicker: !enableYearPicker,