@atlaskit/calendar
Version:
An interactive calendar for date selection experiences.
83 lines (82 loc) • 3.5 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = useControlledDateState;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _useControlled11 = _interopRequireDefault(require("@atlaskit/ds-lib/use-controlled"));
var _useLazyRef2 = _interopRequireDefault(require("@atlaskit/ds-lib/use-lazy-ref"));
var _pad = _interopRequireDefault(require("../utils/pad"));
// eslint-disable-next-line @repo/internal/react/require-jsdoc
function useControlledDateState(_ref) {
var day = _ref.day,
defaultDay = _ref.defaultDay,
month = _ref.month,
defaultMonth = _ref.defaultMonth,
year = _ref.year,
defaultYear = _ref.defaultYear,
today = _ref.today,
selected = _ref.selected,
defaultSelected = _ref.defaultSelected,
previouslySelected = _ref.previouslySelected,
defaultPreviouslySelected = _ref.defaultPreviouslySelected;
var _useLazyRef = (0, _useLazyRef2.default)(function () {
var now = new Date();
var thisDay = now.getDate();
var thisMonth = now.getMonth() + 1;
var thisYear = now.getFullYear();
return {
thisDay: thisDay,
thisMonth: thisMonth,
thisYear: thisYear
};
}),
_useLazyRef$current = _useLazyRef.current,
thisDay = _useLazyRef$current.thisDay,
thisMonth = _useLazyRef$current.thisMonth,
thisYear = _useLazyRef$current.thisYear;
var _useControlled = (0, _useControlled11.default)(day, function () {
return defaultDay || thisDay;
}),
_useControlled2 = (0, _slicedToArray2.default)(_useControlled, 2),
dayValue = _useControlled2[0],
setDayValue = _useControlled2[1];
var _useControlled3 = (0, _useControlled11.default)(month, function () {
return defaultMonth || thisMonth;
}),
_useControlled4 = (0, _slicedToArray2.default)(_useControlled3, 2),
monthValue = _useControlled4[0],
setMonthValue = _useControlled4[1];
var _useControlled5 = (0, _useControlled11.default)(year, function () {
return defaultYear || thisYear;
}),
_useControlled6 = (0, _slicedToArray2.default)(_useControlled5, 2),
yearValue = _useControlled6[0],
setYearValue = _useControlled6[1];
var _useControlled7 = (0, _useControlled11.default)(today, function () {
return today || "".concat(thisYear, "-").concat((0, _pad.default)(thisMonth), "-").concat((0, _pad.default)(thisDay));
}),
_useControlled8 = (0, _slicedToArray2.default)(_useControlled7, 1),
todayValue = _useControlled8[0];
var _useControlled9 = (0, _useControlled11.default)(selected, function () {
return defaultSelected;
}),
_useControlled0 = (0, _slicedToArray2.default)(_useControlled9, 2),
selectedValue = _useControlled0[0],
setSelectedValue = _useControlled0[1];
var _useControlled1 = (0, _useControlled11.default)(previouslySelected, function () {
return defaultPreviouslySelected;
}),
_useControlled10 = (0, _slicedToArray2.default)(_useControlled1, 2),
previouslySelectedValue = _useControlled10[0],
setPreviouslySelectedValue = _useControlled10[1];
return {
day: [dayValue, setDayValue],
month: [monthValue, setMonthValue],
year: [yearValue, setYearValue],
today: [todayValue],
selected: [selectedValue, setSelectedValue],
previous: [previouslySelectedValue, setPreviouslySelectedValue]
};
}