@activecollab/components
Version:
ActiveCollab Components
265 lines (264 loc) • 12.3 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SelectDate = void 0;
var _react = _interopRequireWildcard(require("react"));
var _classnames = _interopRequireDefault(require("classnames"));
var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
var _SelectDateTarget = require("./SelectDateTarget");
var _Styles = require("./Styles");
var _dateUtils = require("../../utils/dateUtils");
var _DatePicker = require("../DatePicker/DatePicker");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
var isDayInRange = function isDayInRange(day, data) {
var fromMoment = _momentTimezone.default.unix(data.from).utc();
var toMoment = _momentTimezone.default.unix(data.to).utc();
if (data.repeating) {
var year = day.year();
var from = _momentTimezone.default.utc({
year,
month: fromMoment.month(),
date: fromMoment.date()
});
var to = _momentTimezone.default.utc({
year,
month: toMoment.month(),
date: toMoment.date()
});
return day.isSameOrAfter(from, "day") && day.isSameOrBefore(to, "day");
}
return day.isSameOrAfter(fromMoment, "day") && day.isSameOrBefore(toMoment, "day");
};
var SelectDate = exports.SelectDate = function SelectDate(_ref) {
var _ref$changeMode = _ref.changeMode,
mode = _ref$changeMode === void 0 ? "instant" : _ref$changeMode,
_ref$trigger = _ref.trigger,
labelType = _ref$trigger === void 0 ? "text" : _ref$trigger,
_ref$saveButtonText = _ref.saveButtonText,
saveButtonText = _ref$saveButtonText === void 0 ? "Save" : _ref$saveButtonText,
_ref$cancelButtonText = _ref.cancelButtonText,
cancelButtonText = _ref$cancelButtonText === void 0 ? "Cancel" : _ref$cancelButtonText,
_ref$clearButtonText = _ref.clearButtonText,
clearButtonText = _ref$clearButtonText === void 0 ? "Clear" : _ref$clearButtonText,
_ref$modalHeaderText = _ref.modalHeaderText,
modalHeaderText = _ref$modalHeaderText === void 0 ? "Discard changes?" : _ref$modalHeaderText,
_ref$modalDiscardMess = _ref.modalDiscardMessage,
modalDiscardMessage = _ref$modalDiscardMess === void 0 ? "All unsaved changes will be lost." : _ref$modalDiscardMess,
_ref$modalDiscardBtnT = _ref.modalDiscardBtnText,
modalDiscardBtnText = _ref$modalDiscardBtnT === void 0 ? "OK" : _ref$modalDiscardBtnT,
_ref$modalCancelBtnTe = _ref.modalCancelBtnText,
modalCancelBtnText = _ref$modalCancelBtnTe === void 0 ? "Cancel" : _ref$modalCancelBtnTe,
onDayClick = _ref.onDayClick,
onSave = _ref.onSave,
onCancel = _ref.onCancel,
onToggleDatePicker = _ref.onToggleDatePicker,
_ref$required = _ref.required,
dateRequired = _ref$required === void 0 ? false : _ref$required,
_ref$longDateFormat = _ref.longDateFormat,
longDateFormat = _ref$longDateFormat === void 0 ? false : _ref$longDateFormat,
_ref$defaultShowDateP = _ref.defaultShowDatePicker,
defaultShowDatePicker = _ref$defaultShowDateP === void 0 ? false : _ref$defaultShowDateP,
_ref$firstDayOfWeek = _ref.firstDayOfWeek,
firstDayOfWeek = _ref$firstDayOfWeek === void 0 ? 0 : _ref$firstDayOfWeek,
selectedDays = _ref.selectedDays,
_ref$selectionMode = _ref.selectionMode,
selectionMode = _ref$selectionMode === void 0 ? "custom" : _ref$selectionMode,
menuClassName = _ref.menuClassName,
targetClassName = _ref.targetClassName,
icon = _ref.icon,
_ref$defaultLabelText = _ref.defaultLabelText,
defaultLabelText = _ref$defaultLabelText === void 0 ? "Set..." : _ref$defaultLabelText,
targetTextClassName = _ref.targetTextClassName,
targetIconClassName = _ref.targetIconClassName,
backgroundElementClass = _ref.backgroundElementClass,
dateFormat = _ref.dateFormat,
forceClose = _ref.forceClose,
defaultMonth = _ref.defaultMonth,
_ref$daysToModify = _ref.daysToModify,
daysToModify = _ref$daysToModify === void 0 ? [] : _ref$daysToModify,
_ref$weekends = _ref.weekends,
weekends = _ref$weekends === void 0 ? [] : _ref$weekends,
_ref$weekendLabel = _ref.weekendLabel,
weekendLabel = _ref$weekendLabel === void 0 ? "Weekend" : _ref$weekendLabel,
_ref$nonWorkingDaysOf = _ref.nonWorkingDaysOfWeek,
_nonWorkingDaysOfWeek = _ref$nonWorkingDaysOf === void 0 ? [] : _ref$nonWorkingDaysOf,
_ref$nonWorkingDaysOf2 = _ref.nonWorkingDaysOfWeekLabel,
nonWorkingDaysOfWeekLabel = _ref$nonWorkingDaysOf2 === void 0 ? "Unavailable" : _ref$nonWorkingDaysOf2,
_ref$weekendIsSelecta = _ref.weekendIsSelectable,
weekendIsSelectable = _ref$weekendIsSelecta === void 0 ? false : _ref$weekendIsSelecta,
tooltipText = _ref.tooltipText,
popperTooltipClassName = _ref.popperTooltipClassName,
popperClassName = _ref.popperClassName,
popperTooltipStyle = _ref.popperTooltipStyle,
position = _ref.position,
disableDaysBefore = _ref.disableDaysBefore,
enableYearPicker = _ref.enableYearPicker,
disableAnimations = _ref.disableAnimations,
disabledDaysAfter = _ref.disabledDaysAfter,
onChange = _ref.onChange;
var labelText = (0, _react.useMemo)(function () {
if (!selectedDays) {
return defaultLabelText;
} else if (!selectedDays.from && !selectedDays.to) {
return defaultLabelText;
} else {
var formattedEndDate = selectedDays.to ? (0, _dateUtils.formatDate)((0, _DatePicker.toMoment)(selectedDays.to), dateFormat, longDateFormat) : "";
var formattedStartDate = selectedDays.from ? (0, _dateUtils.formatDate)((0, _DatePicker.toMoment)(selectedDays === null || selectedDays === void 0 ? void 0 : selectedDays.from), dateFormat, longDateFormat) : "";
if (selectedDays.to && selectedDays.from && (0, _DatePicker.toMoment)(selectedDays.from).isSame((0, _DatePicker.toMoment)(selectedDays.to))) {
return formattedEndDate;
}
if (!selectedDays.to && selectedDays.from) {
return formattedStartDate;
}
return "".concat(formattedStartDate, " - ").concat(formattedEndDate);
}
}, [selectedDays, dateFormat, defaultLabelText, longDateFormat]);
var modifiers = (0, _react.useMemo)(function () {
var userAvailabilities = daysToModify.filter(function (data) {
return data.type === "user_day_off";
});
var globalDaysOff = daysToModify.filter(function (data) {
return data.type === "global_day_off";
});
var selectableGlobalDaysOff = daysToModify.filter(function (data) {
return data.type === "selectable_global_day_off";
});
return {
userAvailability: function userAvailability(day) {
var matchedData = userAvailabilities.find(function (data) {
return isDayInRange(day, data);
});
return {
matched: !!matchedData,
title: matchedData ? matchedData.title : null
};
},
weekend: function weekend(day) {
var isWeekend = weekends.includes(day.day());
return {
matched: isWeekend,
title: isWeekend ? weekendLabel : null
};
},
nonWorkingDay: function nonWorkingDay(day) {
if (weekends.includes(day.day())) {
return {
matched: true,
title: ""
};
}
var nonWorkingDays = [...selectableGlobalDaysOff, ...globalDaysOff];
var matchedData = nonWorkingDays.find(function (data) {
return isDayInRange(day, data);
});
return {
matched: !!matchedData,
title: matchedData ? matchedData.title : null
};
},
nonWorkingDaysOfWeek: function nonWorkingDaysOfWeek(day) {
var isNonWorkingDay = _nonWorkingDaysOfWeek.includes(day.day());
return {
matched: isNonWorkingDay,
title: isNonWorkingDay ? nonWorkingDaysOfWeekLabel : null
};
},
day_disabled: function day_disabled(day) {
var globalDayOff = globalDaysOff.find(function (data) {
return isDayInRange(day, data);
});
return {
matched: !!globalDayOff,
title: null
};
}
};
}, [daysToModify, _nonWorkingDaysOfWeek, nonWorkingDaysOfWeekLabel, weekendLabel, weekends]);
var renderTargetEl = (0, _react.useMemo)(function () {
if (labelType === "icon" && icon) {
return /*#__PURE__*/_react.default.createElement(_SelectDateTarget.SelectDateTarget, {
icon: icon,
title: tooltipText,
targetIconClassName: targetIconClassName,
popperTooltipClassName: popperTooltipClassName,
popperTooltipStyle: popperTooltipStyle
});
}
if (typeof labelType === "function") {
return labelType(labelText);
}
return /*#__PURE__*/_react.default.createElement(_Styles.StyledSelectDateButton, {
type: "button",
className: (0, _classnames.default)("date-picker-target", targetClassName)
}, /*#__PURE__*/_react.default.createElement("span", {
className: targetTextClassName
}, labelText));
}, [icon, labelText, labelType, popperTooltipClassName, popperTooltipStyle, targetClassName, targetIconClassName, targetTextClassName, tooltipText]);
return /*#__PURE__*/_react.default.createElement(_Styles.StyledSelectDate, {
className: "select-date"
}, labelType !== "inline" ? /*#__PURE__*/_react.default.createElement(_DatePicker.DatePicker, {
target: renderTargetEl,
position: position,
menuClassName: menuClassName,
popperClassName: popperClassName,
month: defaultMonth,
instant: mode === "instant",
mode: selectionMode,
required: dateRequired,
selected: selectedDays,
firstDayOfWeek: firstDayOfWeek,
saveLabel: saveButtonText,
cancelLabel: cancelButtonText,
clearLabel: clearButtonText,
onSave: onSave,
onChange: onChange,
onClose: onCancel,
modifiers: modifiers,
modalHeaderText: modalHeaderText,
modalDiscardMessage: modalDiscardMessage,
modalDiscardBtnText: modalDiscardBtnText,
modalCancelBtnText: modalCancelBtnText,
disabledDaysBefore: disableDaysBefore,
disabledDaysAfter: disabledDaysAfter,
backgroundElementClass: backgroundElementClass,
disabled: weekendIsSelectable ? [] : weekends,
popperTooltipClassName: popperTooltipClassName,
popperTooltipStyle: popperTooltipStyle,
open: defaultShowDatePicker,
onCalendarToggle: onToggleDatePicker,
onDayClick: onDayClick,
enableConfirmModal: mode === "atomic" && !dateRequired,
disableYearPicker: !enableYearPicker,
disableAnimations: disableAnimations,
showControls: true,
forceClose: forceClose
}) : /*#__PURE__*/_react.default.createElement(_DatePicker.DatePicker, {
month: defaultMonth,
instant: mode === "instant",
mode: selectionMode,
required: dateRequired,
selected: selectedDays,
firstDayOfWeek: firstDayOfWeek,
saveLabel: saveButtonText,
cancelLabel: cancelButtonText,
clearLabel: clearButtonText,
disabledDaysBefore: disableDaysBefore,
disabledDaysAfter: disabledDaysAfter,
popperTooltipClassName: popperTooltipClassName,
popperTooltipStyle: popperTooltipStyle,
disabled: weekendIsSelectable ? [] : weekends,
onSave: onSave,
onChange: onChange,
modifiers: modifiers,
onDayClick: onDayClick,
disableYearPicker: !enableYearPicker,
disableAnimations: disableAnimations,
showControls: true,
open: true
}));
};
SelectDate.displayName = "SelectDate";
//# sourceMappingURL=SelectDate.js.map