UNPKG

tailwindui-mza

Version:

A package for some base ui component ( **not have ui just logic** ).

147 lines (142 loc) 4.75 kB
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