tailwindui-mza
Version:
A package for some base ui component ( **not have ui just logic** ).
147 lines (142 loc) • 4.75 kB
JavaScript
import React, { useRef, useState, useMemo } from 'react';
import { Transition } from 'react-transition-group';
import { getYear, getDaysInMonth, newDate, getMonth, eachYearOfInterval, format, eachDayOfInterval, isExists, setYear, setMonth, isDate } from 'date-fns-jalali';
function _extends() {
_extends = Object.assign ? Object.assign.bind() : function (target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
var defaultDuration = 500;
var Collapse = function Collapse(props) {
var _childRef$current, _childRef$current2;
var _props$duration = props.duration,
duration = _props$duration === void 0 ? defaultDuration : _props$duration;
var nodeRef = useRef(null);
var childRef = useRef(null);
var defaultStyle = {
transition: "height " + duration + "ms",
height: 0,
overflow: "hidden"
};
var transitionStyles = {
entering: {
height: ((_childRef$current = childRef.current) == null ? void 0 : _childRef$current.clientHeight) || 0
},
entered: {
height: ((_childRef$current2 = childRef.current) == null ? void 0 : _childRef$current2.clientHeight) || 0
},
exiting: {
height: 0
},
exited: {
height: 0
},
unmounted: {}
};
return React.createElement(Transition, {
nodeRef: nodeRef,
"in": props["in"],
timeout: duration
}, function (state) {
return React.createElement("div", {
ref: nodeRef,
style: _extends({}, defaultStyle, transitionStyles[state])
}, React.createElement("div", {
ref: childRef
}, props.children));
});
};
var monthList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
var useCalenderJalali = function useCalenderJalali(props) {
if (props === void 0) {
props = {};
}
var _props = props,
defaultDate = _props.defaultDate,
yearsOptions = _props.yearsOptions;
var _useState = useState(defaultDate ? defaultDate : new Date()),
activeDate = _useState[0],
setActiveDate = _useState[1];
var _useState2 = useState(defaultDate ? getYear(defaultDate) : ''),
yearValue = _useState2[0],
setYearValue = _useState2[1];
var lastDayOfMonth = useMemo(function () {
return getDaysInMonth(newDate(getYear(activeDate), getMonth(activeDate), 1));
}, [activeDate]);
var yearsList = useMemo(function () {
var years;
var isCorrectOptionYear = yearsOptions && yearsOptions.from < yearsOptions.to;
if (yearsOptions && isCorrectOptionYear) {
years = eachYearOfInterval({
start: newDate(yearsOptions.from, 1, 6),
end: newDate(yearsOptions.to, 1, 6)
});
} else {
years = eachYearOfInterval({
start: newDate(1300, 1, 6),
end: newDate(1500, 1, 6)
});
}
return years.map(function (year) {
return +format(year, 'yyyy');
});
}, [yearsOptions]);
var dayList = useMemo(function () {
var days = eachDayOfInterval({
start: newDate(getYear(activeDate), getMonth(activeDate), 1),
end: newDate(getYear(activeDate), getMonth(activeDate), lastDayOfMonth)
});
return days;
}, [activeDate, lastDayOfMonth]);
var onChangeYear = function onChangeYear(year) {
var isSpam = year.toString().length > 4 || year === yearValue || isNaN(year) || typeof year !== 'number';
if (isSpam) return;
if (year.toString().length === 4) {
var inRange = yearsOptions ? yearsOptions.from <= year && yearsOptions.to >= year : true;
if (isExists(year, 5, 5) && inRange) {
var newDateCalender = setYear(activeDate, year);
setActiveDate(newDateCalender);
setYearValue(year);
} else {
setYearValue('');
}
return;
}
setYearValue(year || '');
};
var onChangeMonth = function onChangeMonth(month) {
var isCorrectFormat = 0 < month && month <= 12;
if (!isCorrectFormat) return;
// we get 1 to 12
// package want number from 0 to 11
var fixMonth = month - 1;
var newDateCalender = setMonth(activeDate, fixMonth);
setActiveDate(newDateCalender);
};
var onChangeDay = function onChangeDay(day) {
var isCorrectFormat = isDate(day);
if (!isCorrectFormat) return;
setActiveDate(day);
};
return {
activeDate: activeDate,
yearsList: yearsList,
monthList: monthList,
dayList: dayList,
yearValue: yearValue,
onChangeYear: onChangeYear,
onChangeMonth: onChangeMonth,
onChangeDay: onChangeDay
};
};
export { Collapse, useCalenderJalali };
//# sourceMappingURL=tailwindui-mza.esm.js.map