@mamrp/components 1.7.28 → 1.7.31
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.
- package/dist/charts/index.d.mts +13 -79
- package/dist/charts/index.d.ts +13 -79
- package/dist/charts/index.js +180 -76
- package/dist/charts/index.js.map +1 -1
- package/dist/charts/index.mjs +182 -77
- package/dist/charts/index.mjs.map +1 -1
- package/dist/date-pickers/index.d.mts +13 -0
- package/dist/date-pickers/index.d.ts +13 -0
- package/dist/date-pickers/index.js +3 -1
- package/dist/date-pickers/index.js.map +1 -1
- package/dist/date-pickers/index.mjs +3 -1
- package/dist/date-pickers/index.mjs.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/date-pickers/index.ts","../../react-shim.js","../../src/date-pickers/date-range-picker/index.tsx"],"sourcesContent":["export { default as DateRangePicker } from \"./date-range-picker/index\";\n","import * as React from \"react\";\nexport { React };\n","/**\n * DateRangePicker - کامپوننت پیشرفته انتخاب بازه تاریخ شمسی\n *\n * یک کامپوننت کامل و حرفهای برای انتخاب بازه تاریخ با پشتیبانی از تقویم فارسی/شمسی\n * این کامپوننت از کتابخانههای MUI، moment-jalaali و react-icons استفاده میکند\n *\n * @version 3.0.0\n * @author Frontend Team\n * @since 2024\n * @updated October 2025\n *\n * ویژگیهای کلیدی:\n * ✅ پشتیبانی کامل از تقویم شمسی (فارسی)\n * ✅ انتخاب بازه تاریخ با نمایش visual و range highlighting\n * ✅ Responsive design - سازگار با موبایل و دسکتاپ (breakpoint: 700px)\n * ✅ سه حالت نمایش: تقویم popup، DatePicker جداگانه، یا تک/دوتایی\n * ✅ تبهای هوشمند: حالت خودکار و دستی برای انتخاب تاریخ\n * ✅ آیکونهای حرفهای React Icons در تمام بخشها\n * ✅ آیکون پاک کردن در input با UX بهبود یافته\n * ✅ سفارشیسازی کامل استایل و رنگبندی\n * ✅ پشتیبانی از validation با React Hook Form\n * ✅ قابلیت تنظیم محدوده تاریخ (min/max)\n * ✅ حالت loading و disabled\n * ✅ چندین حالت text alignment (left, center, right)\n * ✅ لیست ماهها به صورت 3 ستونی با CSS Grid\n * ✅ هایلایت روزهای جمعه، امروز و بازه انتخاب شده\n * ✅ انیمیشن و hover effects\n * ✅ تغییر خودکار تب در حالت دستی\n * ✅ عدم بسته شدن پنجره بعد از پاک کردن\n * ✅ راهنمای هوشمند برای کاربر\n *\n * نحوه استفاده:\n * ```tsx\n * import DateRangePicker from './components/date-range-picker';\n * import { useForm } from 'react-hook-form';\n *\n * const MyComponent = () => {\n * const { control } = useForm();\n *\n * return (\n * <DateRangePicker\n * fromDate=\"startDate\"\n * toDate=\"endDate\"\n * control={control}\n * label=\"انتخاب بازه تاریخ\"\n * persian={true}\n * align=\"center\"\n * clear={true}\n * dualCalendar={false} // جدید: کنترل تقویم دوم\n * singleCalendar={false}\n * useMobilePickers={false}\n * />\n * );\n * };\n * ```\n *\n * مثالهای مختلف:\n *\n * 1. حالت پایه (پیشفرض - تک تقویم با تبهای هوشمند):\n * ```tsx\n * <DateRangePicker\n * fromDate=\"from\"\n * toDate=\"to\"\n * control={control}\n * />\n * ```\n *\n * 2. فعال کردن تقویم دوم:\n * ```tsx\n * <DateRangePicker\n * fromDate=\"from\"\n * toDate=\"to\"\n * control={control}\n * dualCalendar={true} // تقویم دوم فعال میشود\n * />\n * ```\n *\n * 3. تک تقویم بدون تبهای هوشمند:\n * ```tsx\n * <DateRangePicker\n * fromDate=\"from\"\n * toDate=\"to\"\n * control={control}\n * singleCalendar={true}\n * />\n * ```\n *\n * 4. حالت DatePicker جداگانه:\n * ```tsx\n * <DateRangePicker\n * fromDate=\"from\"\n * toDate=\"to\"\n * control={control}\n * useMobilePickers={true}\n * />\n * ```\n *\n * 5. با محدودیت تاریخ و سفارشیسازی:\n * ```tsx\n * <DateRangePicker\n * fromDate=\"from\"\n * toDate=\"to\"\n * control={control}\n * minDate={moment().subtract(1, 'year')}\n * maxDate={moment()}\n * label=\"بازه زمانی گزارش\"\n * size=\"small\"\n * align=\"center\"\n * dualCalendar={true}\n * />\n * ```\n *\n * ویژگیهای تبهای هوشمند (جدید در v3.0):\n *\n * ```tsx\n * // حالت هوشمند (پیشفرض): 🤖\n * // - خودکار تشخیص میدهد کاربر کدام تاریخ را میخواهد\n * // - اولین کلیک: تاریخ شروع ← تب \"تا تاریخ\" فعال\n * // - دومین کلیک: تاریخ پایان (با تشخیص ترتیب)\n * // - کلیک سوم: شروع مجدد\n *\n * // حالت دستی: 👤\n * // - کاربر خودش تب را انتخاب میکند\n * // - بعد از انتخاب \"از تاریخ\" ← خودکار به \"تا تاریخ\" میرود\n * // - بعد از انتخاب \"تا تاریخ\" ← خودکار به \"از تاریخ\" برمیگردد\n * ```\n *\n * آیکونهای استفاده شده (React Icons):\n *\n * ```tsx\n * // Input Icons:\n * MdCalendarToday // آیکون تقویم\n * MdClear // آیکون پاک کردن\n *\n * // Tab Icons:\n * MdSmartToy // حالت هوشمند\n * MdPerson // حالت دستی\n * MdDateRange // از تاریخ\n * MdEvent // تا تاریخ\n *\n * // Guide Icons:\n * MdGpsFixed // راهنمای انتخاب\n * MdCheckCircle // تأیید انتخاب\n * ```\n *\n * @interface DateRangePickerProps\n * @property {string} fromDate - نام فیلد تاریخ شروع در form\n * @property {string} toDate - نام فیلد تاریخ پایان در form\n * @property {Control<any>} control - React Hook Form control object\n * @property {DateView[]} [fromViews] - نماهای قابل نمایش برای تاریخ شروع (پیشفرض: [\"year\", \"month\", \"day\"])\n * @property {DateView} [fromOpenTo] - نمای ابتدایی برای تاریخ شروع (پیشفرض: \"day\")\n * @property {DateView[]} [toViews] - نماهای قابل نمایش برای تاریخ پایان (پیشفرض: [\"year\", \"month\", \"day\"])\n * @property {DateView} [toOpenTo] - نمای ابتدایی برای تاریخ پایان (پیشفرض: \"day\")\n * @property {string} [label] - برچسب فیلد (پیشفرض: \"انتخاب بازه\")\n * @property {\"small\" | \"medium\"} [size] - اندازه فیلد (پیشفرض: \"medium\")\n * @property {boolean} [disabled] - غیرفعال کردن کامپوننت (پیشفرض: false)\n * @property {boolean} [persian] - استفاده از تاریخ فارسی (پیشفرض: true)\n * @property {\"right\" | \"center\" | \"left\"} [align] - تراز متن (پیشفرض: \"left\")\n * @property {boolean} [isLoading] - نمایش حالت loading (پیشفرض: false)\n * @property {Moment} [minDate] - حداقل تاریخ قابل انتخاب\n * @property {Moment} [maxDate] - حداکثر تاریخ قابل انتخاب\n * @property {boolean} [clear] - نمایش دکمه پاک کردن (پیشفرض: true)\n * @property {boolean} [singleCalendar] - نمایش تک تقویم بدون تبها (پیشفرض: false)\n * @property {boolean} [useMobilePickers] - استفاده از DatePicker جداگانه (پیشفرض: false)\n * @property {boolean} [dualCalendar] - فعالسازی تقویم دوم (پیشفرض: false)\n *\n * منطق نمایش تقویمها:\n * - اگر dualCalendar = true ← دو تقویم کنار هم\n * - اگر singleCalendar = true ← تک تقویم بدون تب\n * - اگر useMobilePickers = true ← دو DatePicker جداگانه\n * - پیشفرض ← تک تقویم با تبهای هوشمند\n *\n * نکات مهم:\n * - کامپوننت خودکار mobile detection دارد (breakpoint: 700px)\n * - در حالت موبایل، تقویمها responsive میشوند\n * - فرمت خروجی همیشه \"YYYY-MM-DD\" است\n * - روزهای جمعه با رنگ قرمز نمایش داده میشوند\n * - امکان انتخاب بازه با کلیک و visual feedback وجود دارد\n * - validation errors از React Hook Form پشتیبانی میشود\n * - آیکون پاک کردن فقط در صورت وجود تاریخ نمایش داده میشود\n * - پاک کردن از داخل popup، پنجره را نمیبندد\n * - پاک کردن از input icon، پنجره را باز نمیکند\n *\n * Dependencies:\n * - @mui/material\n * - @mui/x-date-pickers\n * - @mui/x-date-pickers/AdapterMomentJalaali\n * - moment-jalaali\n * - react-hook-form\n * - react-icons/md\n *\n * @example\n * // استفاده در فرم با تمام قابلیتها\n * const form = useForm({\n * defaultValues: {\n * startDate: '',\n * endDate: ''\n * }\n * });\n *\n * // حالت پیشفرض با تبهای هوشمند\n * <DateRangePicker\n * fromDate=\"startDate\"\n * toDate=\"endDate\"\n * control={form.control}\n * label=\"انتخاب دوره زمانی\"\n * />\n *\n * // حالت dual calendar\n * <DateRangePicker\n * fromDate=\"startDate\"\n * toDate=\"endDate\"\n * control={form.control}\n * dualCalendar={true}\n * label=\"انتخاب بازه با دو تقویم\"\n * />\n */\n\n\"use client\";\nimport React, { useState, useEffect } from \"react\";\nimport {\n Box,\n Typography,\n CircularProgress,\n Popover,\n TextField,\n Button,\n useMediaQuery,\n IconButton,\n TextFieldVariants,\n} from \"@mui/material\";\nimport {\n MdClear,\n MdCalendarToday,\n MdDateRange,\n MdEvent,\n MdSmartToy,\n MdPerson,\n MdGpsFixed,\n MdCheckCircle,\n MdTipsAndUpdates,\n} from \"react-icons/md\";\nimport { Control, useController } from \"react-hook-form\";\nimport {\n StaticDatePicker,\n MobileDatePicker,\n DatePicker,\n PickersDay,\n PickersDayProps,\n LocalizationProvider,\n DateView,\n} from \"@mui/x-date-pickers\";\nimport { AdapterMomentJalaali } from \"@mui/x-date-pickers/AdapterMomentJalaali\";\nimport moment, { Moment } from \"moment-jalaali\";\nimport { string } from \"yup\";\n\nmoment.locale(\"fa\");\nmoment.loadPersian({ dialect: \"persian-modern\", usePersianDigits: true });\n\ninterface DateRangePickerProps {\n fromDate: string;\n toDate: string;\n fromViews?: DateView[] | undefined;\n fromOpenTo?: DateView | undefined;\n toViews?: DateView[] | undefined;\n toOpenTo?: DateView | undefined;\n control: Control<any>;\n label?: string;\n size?: \"small\" | \"medium\";\n disabled?: boolean;\n persian?: boolean;\n align?: \"right\" | \"center\" | \"left\";\n isLoading?: boolean;\n minDate?: Moment;\n maxDate?: Moment;\n clear?: boolean;\n singleCalendar?: boolean; // Controls single calendar display on desktop (mobile always shows single calendar)\n useMobilePickers?: boolean; // Use mobile-style DatePicker inputs instead of calendar popup\n dualCalendar?: boolean; // Enable dual calendar mode (default: false)\n variant?: TextFieldVariants;\n placeholder?: string;\n disableClearIcon?: boolean;\n}\n\n/**\n * DateRangePicker - کامپوننت انتخاب بازه تاریخ شمسی\n *\n * یک کامپوننت پیشرفته و کامل برای انتخاب بازه تاریخ با پشتیبانی از تقویم فارسی/شمسی\n * این کامپوننت از کتابخانههای MUI و moment-jalaali استفاده میکند\n *\n * @version 2.0.0\n * @author Frontend MAMRP Team\n * @since 2024\n *\n *\n * نحوه استفاده:\n * ```tsx\n * import DateRangePicker from './components/date-range-picker';\n * import { useForm } from 'react-hook-form';\n *\n * const MyComponent = () => {\n * const { control } = useForm();\n *\n * return (\n * <DateRangePicker\n * fromDate=\"startDate\"\n * toDate=\"endDate\"\n * control={control}\n * label=\"انتخاب بازه تاریخ\"\n * persian={true}\n * align=\"center\"\n * clear={true}\n * singleCalendar={false}\n * useMobilePickers={false}\n * />\n * );\n * };\n * ```\n *\n * مثالهای مختلف:\n *\n * 1. حالت پایه:\n * ```tsx\n * <DateRangePicker\n * fromDate=\"from\"\n * toDate=\"to\"\n * control={control}\n * />\n * ```\n *\n * 2. با تک تقویم:\n * ```tsx\n * <DateRangePicker\n * fromDate=\"from\"\n * toDate=\"to\"\n * control={control}\n * singleCalendar={true}\n * />\n * ```\n *\n * 3. با DatePicker جداگانه:\n * ```tsx\n * <DateRangePicker\n * fromDate=\"from\"\n * toDate=\"to\"\n * control={control}\n * useMobilePickers={true}\n * />\n * ```\n *\n * 4. با محدودیت تاریخ:\n * ```tsx\n * <DateRangePicker\n * fromDate=\"from\"\n * toDate=\"to\"\n * control={control}\n * minDate={moment().subtract(1, 'year')}\n * maxDate={moment()}\n * />\n * ```\n *\n * 5. سفارشیسازی کامل:\n * ```tsx\n * <DateRangePicker\n * fromDate=\"startDate\"\n * toDate=\"endDate\"\n * control={control}\n * label=\"بازه زمانی گزارش\"\n * size=\"small\"\n * align=\"center\"\n * persian={true}\n * clear={true}\n * disabled={false}\n * isLoading={false}\n * singleCalendar={false}\n * useMobilePickers={false}\n * fromViews={[\"year\", \"month\", \"day\"]}\n * fromOpenTo=\"day\"\n * toViews={[\"year\", \"month\", \"day\"]}\n * toOpenTo=\"day\"\n * />\n * ```\n *\n * @interface DateRangePickerProps\n * @property {string} fromDate - نام فیلد تاریخ شروع در form\n * @property {string} toDate - نام فیلد تاریخ پایان در form\n * @property {Control<any>} control - React Hook Form control object\n * @property {DateView[]} [fromViews] - نماهای قابل نمایش برای تاریخ شروع (پیشفرض: [\"year\", \"month\", \"day\"])\n * @property {DateView} [fromOpenTo] - نمای ابتدایی برای تاریخ شروع (پیشفرض: \"day\")\n * @property {DateView[]} [toViews] - نماهای قابل نمایش برای تاریخ پایان (پیشفرض: [\"year\", \"month\", \"day\"])\n * @property {DateView} [toOpenTo] - نمای ابتدایی برای تاریخ پایان (پیشفرض: \"day\")\n * @property {string} [label] - برچسب فیلد (پیشفرض: \"انتخاب بازه\")\n * @property {\"small\" | \"medium\"} [size] - اندازه فیلد (پیشفرض: \"medium\")\n * @property {boolean} [disabled] - غیرفعال کردن کامپوننت (پیشفرض: false)\n * @property {boolean} [persian] - استفاده از تاریخ فارسی (پیشفرض: true)\n * @property {\"right\" | \"center\" | \"left\"} [align] - تراز متن (پیشفرض: \"left\")\n * @property {boolean} [isLoading] - نمایش حالت loading (پیشفرض: false)\n * @property {Moment} [minDate] - حداقل تاریخ قابل انتخاب\n * @property {Moment} [maxDate] - حداکثر تاریخ قابل انتخاب\n * @property {boolean} [clear] - نمایش دکمه پاک کردن (پیشفرض: true)\n * @property {boolean} [singleCalendar] - نمایش تک تقویم به جای دوتایی (پیشفرض: false)\n * @property {boolean} [useMobilePickers] - استفاده از DatePicker جداگانه به جای popup (پیشفرض: false)\n *\n * نکات مهم:\n * - کامپوننت خودکار mobile detection دارد (breakpoint: 700px)\n * - در حالت موبایل، تقویمها responsive میشوند\n * - فرمت خروجی همیشه \"YYYY-MM-DD\" است\n * - روزهای جمعه با رنگ قرمز نمایش داده میشوند\n * - امکان انتخاب بازه با کلیک و drag وجود دارد\n * - validation errors از React Hook Form پشتیبانی میشود\n *\n *\n * @example\n * // استفاده در فرم ساده\n * const form = useForm({\n * defaultValues: {\n * startDate: '',\n * endDate: ''\n * }\n * });\n *\n * <DateRangePicker\n * fromDate=\"startDate\"\n * toDate=\"endDate\"\n * control={form.control}\n * label=\"انتخاب دوره زمانی\"\n * />\n */\n\nconst DateRangePicker: React.FC<DateRangePickerProps> = ({\n fromDate,\n toDate,\n fromViews = [\"year\", \"month\", \"day\"],\n fromOpenTo = \"day\",\n toViews = [\"year\", \"month\", \"day\"],\n toOpenTo = \"day\",\n control,\n label,\n size = \"medium\",\n disabled = false,\n persian = true,\n align = \"left\",\n isLoading = false,\n minDate,\n maxDate,\n clear = true,\n singleCalendar = false, // Default to dual calendars on desktop\n useMobilePickers = false, // Default to calendar popup style\n dualCalendar = false, // Default to single calendar with smart tabs\n variant = \"outlined\",\n placeholder,\n disableClearIcon = false,\n}) => {\n const [open, setOpen] = useState(false);\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const [tempStartDate, setTempStartDate] = useState<Moment | null>(null);\n const [tempEndDate, setTempEndDate] = useState<Moment | null>(null);\n const [secondCalendarMonth, setSecondCalendarMonth] = useState<Moment>(\n moment()\n );\n\n // Smart tabs state for single calendar mode\n const [activeTab, setActiveTab] = useState<\"from\" | \"to\">(\"from\");\n const [autoSelectMode, setAutoSelectMode] = useState(true); // Auto detect which date to select\n\n // Mobile detection hook\n const isMobile = useMediaQuery(\"(max-width:700px)\");\n\n // Determine if we should show single calendar (mobile or prop-controlled)\n const showSingleCalendar = isMobile || singleCalendar || !dualCalendar;\n\n // استفاده از useController برای هر دو فیلد\n const {\n field: fieldFrom,\n fieldState: { error: errorFrom },\n } = useController({ name: fromDate, control });\n\n const {\n field: fieldTo,\n fieldState: { error: errorTo },\n } = useController({ name: toDate, control });\n\n const handleOpen = (event: React.MouseEvent<HTMLElement>) => {\n if (!disabled && !isLoading) {\n setAnchorEl(event.currentTarget);\n setOpen(true);\n }\n };\n\n const handleClose = () => {\n setOpen(false);\n setTempStartDate(null);\n setTempEndDate(null);\n };\n\n // بارگذاری مقادیر موجود هنگام باز شدن\n useEffect(() => {\n if (open) {\n if (fieldFrom.value) {\n setTempStartDate(moment(fieldFrom.value));\n setSecondCalendarMonth(moment(fieldFrom.value));\n } else {\n setSecondCalendarMonth(moment());\n }\n if (fieldTo.value) {\n setTempEndDate(moment(fieldTo.value));\n }\n }\n }, [open, fieldFrom.value, fieldTo.value]);\n\n const handleDaySelect = (day: Moment, calendarSide: \"right\" | \"left\") => {\n // Smart tab mode for single calendar\n if (!dualCalendar && showSingleCalendar) {\n if (autoSelectMode) {\n // Auto mode: smart detection\n if (!tempStartDate && !tempEndDate) {\n setTempStartDate(day);\n setActiveTab(\"to\");\n } else if (tempStartDate && !tempEndDate) {\n if (day.isBefore(tempStartDate)) {\n setTempEndDate(tempStartDate);\n setTempStartDate(day);\n } else {\n setTempEndDate(day);\n }\n } else if (!tempStartDate && tempEndDate) {\n if (day.isAfter(tempEndDate)) {\n setTempStartDate(tempEndDate);\n setTempEndDate(day);\n } else {\n setTempStartDate(day);\n }\n } else {\n // Both dates exist, restart\n setTempStartDate(day);\n setTempEndDate(null);\n setActiveTab(\"to\");\n }\n } else {\n // Manual tab mode with auto switch\n if (activeTab === \"from\") {\n setTempStartDate(day);\n setActiveTab(\"to\"); // Auto switch to 'to' tab\n } else {\n setTempEndDate(day);\n setActiveTab(\"from\"); // Auto switch to 'from' tab\n }\n }\n } else {\n // Original dual calendar logic\n if (!tempStartDate && !tempEndDate) {\n if (calendarSide === \"right\") {\n setTempStartDate(day);\n } else {\n setTempEndDate(day);\n }\n } else if (tempStartDate && tempEndDate) {\n setTempStartDate(day);\n setTempEndDate(null);\n } else if (tempStartDate && !tempEndDate) {\n if (day.isBefore(tempStartDate)) {\n setTempEndDate(tempStartDate);\n setTempStartDate(day);\n } else {\n setTempEndDate(day);\n }\n } else if (!tempStartDate && tempEndDate) {\n if (day.isAfter(tempEndDate)) {\n setTempStartDate(tempEndDate);\n setTempEndDate(day);\n } else {\n setTempStartDate(day);\n }\n }\n }\n };\n\n const handleConfirm = () => {\n if (tempStartDate) {\n fieldFrom.onChange(tempStartDate.locale(\"en\").format(\"YYYY-MM-DD\"));\n }\n if (tempEndDate) {\n fieldTo.onChange(tempEndDate.locale(\"en\").format(\"YYYY-MM-DD\"));\n }\n setOpen(false);\n setTempStartDate(null);\n setTempEndDate(null);\n };\n\n const handleClear = () => {\n fieldFrom.onChange(null);\n fieldTo.onChange(null);\n setTempStartDate(null);\n setTempEndDate(null);\n setActiveTab(\"from\"); // Reset to start tab\n // Keep popover open - don't call setOpen(false)\n };\n\n // Separate function for clearing from input icon\n const handleInputClear = (event: React.MouseEvent) => {\n event.stopPropagation(); // Prevent opening popover\n fieldFrom.onChange(null);\n fieldTo.onChange(null);\n setTempStartDate(null);\n setTempEndDate(null);\n setActiveTab(\"from\");\n };\n\n const displayValue = () => {\n const start = fieldFrom.value ? moment(fieldFrom.value) : null;\n const end = fieldTo.value ? moment(fieldTo.value) : null;\n\n if (start && end) {\n return persian\n ? `${end.format(\"jYYYY/jMM/jDD\")} - ${start.format(\"jYYYY/jMM/jDD\")}`\n : `${end.format(\"YYYY/MM/DD\")} - ${start.format(\"YYYY/MM/DD\")}`;\n } else if (start) {\n return persian\n ? \"از تاریخ\" + \" \" + start.format(\"jYYYY/jMM/jDD\")\n : start.format(\"YYYY/MM/DD\");\n } else if (end) {\n return persian\n ? \"تا تاریخ\" + \" \" + end.format(\"jYYYY/jMM/jDD\")\n : end.format(\"YYYY/MM/DD\");\n }\n return \"\";\n };\n\n const error = errorFrom || errorTo;\n\n const customLocaleText = {\n cancelButtonLabel: \"لغو\",\n okButtonLabel: \"تأیید\",\n todayButtonLabel: \"امروز\",\n clearButtonLabel: \"پاک کردن\",\n };\n\n return (\n <LocalizationProvider\n dateAdapter={AdapterMomentJalaali}\n localeText={customLocaleText}\n >\n <Box sx={{ width: \"100%\" }}>\n <TextField\n label={label}\n size={size}\n variant={variant}\n fullWidth\n value={displayValue()}\n onClick={handleOpen}\n disabled={disabled || isLoading}\n placeholder={placeholder ?? \"انتخاب بازه تاریخ\"}\n error={!!error}\n InputLabelProps={{\n shrink: true,\n }}\n InputProps={{\n readOnly: true,\n sx: {\n textAlign: align,\n direction: \"ltr\",\n cursor: disabled ? \"default\" : \"pointer\",\n \"& input\": {\n textAlign: align,\n },\n },\n endAdornment: (\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 0.5 }}>\n {/* Clear Icon */}\n {(fieldFrom.value || fieldTo.value) &&\n !disabled &&\n !isLoading &&\n !disableClearIcon && (\n <IconButton\n size=\"small\"\n onClick={handleInputClear}\n sx={{\n padding: \"4px\",\n color: \"text.secondary\",\n \"&:hover\": {\n color: \"error.main\",\n backgroundColor: \"rgba(244, 67, 54, 0.08)\",\n },\n }}\n >\n <MdClear size={16} />\n </IconButton>\n )}\n\n {/* Loading Indicator */}\n {isLoading && <CircularProgress size={20} color=\"secondary\" />}\n </Box>\n ),\n }}\n sx={{\n \"& .MuiOutlinedInput-root\": {\n height: size === \"small\" ? 40 : 56,\n },\n }}\n />\n\n {error && (\n <Typography fontSize={13} color=\"error\" sx={{ mt: 0.6, ml: 1 }}>\n {error.message}\n </Typography>\n )}\n\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"left\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"left\",\n }}\n slotProps={{\n paper: {\n sx: {\n mt: 1,\n maxWidth: isMobile ? \"95vw\" : \"auto\",\n width: isMobile ? \"auto\" : \"auto\",\n maxHeight: isMobile ? \"90vh\" : \"auto\",\n overflow: isMobile ? \"auto\" : \"visible\",\n },\n },\n }}\n >\n <Box sx={{ p: isMobile ? 1 : 2 }}>\n {/* Toolbar */}\n <Box sx={{ mb: 2 }}>\n <Typography variant=\"overline\" color=\"primary\">\n انتخاب بازه تاریخ\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {tempStartDate && tempEndDate\n ? `${tempStartDate.format(\n \"jDD jMMMM\"\n )} تا ${tempEndDate.format(\"jDD jMMMM\")}`\n : tempStartDate\n ? `از ${tempStartDate.format(\"jDD jMMMM\")}`\n : \"تاریخ شروع و پایان را انتخاب کنید\"}\n </Typography>\n </Box>\n\n {/* Calendars - responsive layout */}\n {useMobilePickers ? (\n // Mobile-style: Use DatePicker inputs\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 2,\n alignItems: \"center\",\n width: \"100%\",\n }}\n >\n <Box sx={{ width: \"100%\" }}>\n <Typography variant=\"body2\" sx={{ mb: 1, fontWeight: 500 }}>\n تاریخ شروع (از):\n </Typography>\n <DatePicker\n value={tempStartDate}\n onChange={(day: Moment | null) => {\n setTempStartDate(day);\n }}\n openTo={fromOpenTo}\n views={fromViews}\n minDate={minDate}\n maxDate={maxDate || moment()}\n slotProps={{\n textField: {\n fullWidth: true,\n size: \"small\",\n placeholder: \"انتخاب تاریخ شروع\",\n },\n }}\n />\n </Box>\n\n <Box sx={{ width: \"100%\" }}>\n <Typography variant=\"body2\" sx={{ mb: 1, fontWeight: 500 }}>\n تاریخ پایان (تا):\n </Typography>\n <DatePicker\n value={tempEndDate}\n onChange={(day: Moment | null) => {\n setTempEndDate(day);\n }}\n openTo={toOpenTo}\n views={toViews}\n minDate={tempStartDate || minDate}\n maxDate={maxDate || moment()}\n slotProps={{\n textField: {\n fullWidth: true,\n size: \"small\",\n placeholder: \"انتخاب تاریخ پایان\",\n },\n }}\n />\n </Box>\n </Box>\n ) : (\n // Calendar popup style: Use StaticDatePicker(s)\n <Box\n sx={{\n display: \"flex\",\n gap: showSingleCalendar ? 0 : 2,\n flexDirection: showSingleCalendar ? \"column\" : \"row\",\n alignItems: \"center\",\n }}\n >\n {/* Smart Tabs for Single Calendar */}\n {!dualCalendar && showSingleCalendar && (\n <Box sx={{ width: \"100%\", mb: 2 }}>\n {/* Auto/Manual Toggle */}\n <Box\n sx={{ display: \"flex\", justifyContent: \"center\", mb: 1 }}\n >\n <Button\n size=\"small\"\n variant={autoSelectMode ? \"contained\" : \"outlined\"}\n onClick={() => setAutoSelectMode(!autoSelectMode)}\n sx={{ fontSize: \"12px\", minWidth: \"120px\" }}\n >\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 0.5,\n }}\n >\n {autoSelectMode ? (\n <MdTipsAndUpdates size={16} />\n ) : (\n <MdPerson size={16} />\n )}\n {autoSelectMode ? \"هوشمند\" : \"دستی\"}\n </Box>\n </Button>\n </Box>\n\n {/* Date Selection Tabs */}\n {!autoSelectMode && (\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n gap: 1,\n mb: 2,\n borderBottom: 1,\n borderColor: \"divider\",\n pb: 1,\n }}\n >\n <Button\n size=\"small\"\n variant={\n activeTab === \"from\" ? \"contained\" : \"outlined\"\n }\n onClick={() => setActiveTab(\"from\")}\n sx={{\n minWidth: \"140px\",\n fontSize: \"13px\",\n backgroundColor:\n activeTab === \"from\"\n ? \"primary.main\"\n : \"transparent\",\n color:\n activeTab === \"from\" ? \"white\" : \"primary.main\",\n }}\n >\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 0.5,\n flexDirection: \"column\",\n }}\n >\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 0.5,\n }}\n >\n <MdDateRange size={16} />\n از تاریخ\n </Box>\n {tempStartDate && (\n <Typography\n variant=\"caption\"\n sx={{ fontSize: \"10px\" }}\n >\n {tempStartDate.format(\"jYYYY/jMM/jDD\")}\n </Typography>\n )}\n </Box>\n </Button>\n\n <Button\n size=\"small\"\n variant={\n activeTab === \"to\" ? \"contained\" : \"outlined\"\n }\n onClick={() => setActiveTab(\"to\")}\n sx={{\n minWidth: \"140px\",\n fontSize: \"13px\",\n backgroundColor:\n activeTab === \"to\"\n ? \"primary.main\"\n : \"transparent\",\n color:\n activeTab === \"to\" ? \"white\" : \"primary.main\",\n }}\n >\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 0.5,\n flexDirection: \"column\",\n }}\n >\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 0.5,\n }}\n >\n <MdEvent size={16} />\n تا تاریخ\n </Box>\n {tempEndDate && (\n <Typography\n variant=\"caption\"\n sx={{ fontSize: \"10px\" }}\n >\n {tempEndDate.format(\"jYYYY/jMM/jDD\")}\n </Typography>\n )}\n </Box>\n </Button>\n </Box>\n )}\n\n {/* Auto Mode Status */}\n {autoSelectMode && (\n <Box sx={{ textAlign: \"center\", mb: 2 }}>\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 0.5,\n }}\n >\n {!tempStartDate && !tempEndDate ? (\n <>\n <MdGpsFixed size={14} />\n اولین تاریخ را انتخاب کنید\n </>\n ) : tempStartDate && !tempEndDate ? (\n <>\n <MdGpsFixed size={14} />\n تاریخ پایان را انتخاب کنید\n </>\n ) : tempStartDate && tempEndDate ? (\n <>\n <MdCheckCircle size={14} />\n بازه انتخاب شده - تاریخ جدید برای شروع مجدد\n </>\n ) : (\n <>\n <MdGpsFixed size={14} />\n تاریخ شروع را انتخاب کنید\n </>\n )}\n </Typography>\n </Box>\n )}\n </Box>\n )}\n\n {/* تقویم اول */}\n <StaticDatePicker\n value={\n tempStartDate ||\n (fieldFrom.value ? moment(fieldFrom.value) : null)\n }\n onChange={(day: Moment | null) => {\n if (day) handleDaySelect(day, \"right\");\n }}\n openTo={fromOpenTo}\n views={fromViews}\n slots={{\n day: (props) =>\n CustomDay({\n ...props,\n startDate: tempStartDate,\n endDate: tempEndDate,\n }),\n actionBar: () => null,\n monthButton: (props) => {\n return (\n <button\n className={`${props.className}`}\n style={{\n width: \"100%\",\n padding: \"15px 8px\",\n border: \"1px solid #ccc\",\n borderRadius: \"8px\",\n backgroundColor: props.disabled\n ? \"#f0f0f0\"\n : \"#ffffff\",\n fontSize: \"17px\",\n cursor: props.disabled ? \"default\" : \"pointer\",\n textAlign: \"center\",\n boxSizing: \"border-box\",\n }}\n disabled={props.disabled}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n onClick={props.onClick}\n ref={props.ref}\n >\n {props[\"aria-label\"]}\n </button>\n );\n },\n }}\n minDate={minDate}\n maxDate={maxDate || moment()}\n slotProps={{\n toolbar: { hidden: true },\n layout: {\n sx: {\n \"& .MuiPickersCalendarHeader-root\": {\n minHeight: \"40px\",\n maxHeight: \"40px\",\n },\n \"& .MuiDayCalendar-header\": {\n justifyContent: \"space-around\",\n },\n \"& .MuiDayCalendar-weekContainer\": {\n justifyContent: \"space-around\",\n },\n \"& .MuiPickersDay-root\": {\n fontSize: \"0.875rem\",\n },\n \"& .MuiMonthCalendar-root\": {\n display: \"grid\",\n gridTemplateColumns: \"repeat(3, 1fr)\",\n gap: \"8px\",\n width: \"100%\",\n },\n },\n },\n }}\n sx={{\n \"& .MuiPickersLayout-contentWrapper\": {\n minWidth: showSingleCalendar ? \"300px\" : \"280px\",\n maxWidth: showSingleCalendar ? \"350px\" : \"320px\",\n },\n }}\n />\n\n {/* تقویم دوم - فقط در صورت فعال بودن dualCalendar */}\n {dualCalendar && !showSingleCalendar && (\n <StaticDatePicker\n value={secondCalendarMonth}\n onChange={(day: Moment | null) => {\n if (day) handleDaySelect(day, \"left\");\n }}\n openTo={toOpenTo}\n views={toViews}\n slots={{\n day: (props) =>\n CustomDay({\n ...props,\n startDate: tempStartDate,\n endDate: tempEndDate,\n }),\n actionBar: () => null,\n monthButton: (props) => {\n return (\n <button\n className={`${props.className}`}\n style={{\n width: \"100%\",\n padding: \"15px 8px\",\n border: \"1px solid #ccc\",\n borderRadius: \"8px\",\n backgroundColor: props.disabled\n ? \"#f0f0f0\"\n : \"#ffffff\",\n fontSize: \"17px\",\n cursor: props.disabled ? \"default\" : \"pointer\",\n textAlign: \"center\",\n boxSizing: \"border-box\",\n }}\n disabled={props.disabled}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n onClick={props.onClick}\n ref={props.ref}\n >\n {props[\"aria-label\"]}\n </button>\n );\n },\n }}\n minDate={minDate}\n maxDate={maxDate || moment()}\n slotProps={{\n toolbar: { hidden: true },\n layout: {\n sx: {\n \"& .MuiPickersCalendarHeader-root\": {\n minHeight: \"40px\",\n maxHeight: \"40px\",\n },\n \"& .MuiDayCalendar-header\": {\n justifyContent: \"space-around\",\n },\n \"& .MuiDayCalendar-weekContainer\": {\n justifyContent: \"space-around\",\n },\n \"& .MuiPickersDay-root\": {\n fontSize: \"0.875rem\",\n },\n \"& .MuiMonthCalendar-root\": {\n display: \"grid\",\n gridTemplateColumns: \"repeat(3, 1fr)\",\n gap: \"8px\",\n width: \"100%\",\n },\n },\n },\n }}\n sx={{\n \"& .MuiPickersLayout-contentWrapper\": {\n minWidth: \"280px\",\n maxWidth: \"320px\",\n },\n }}\n onMonthChange={(newMonth: Moment) => {\n setSecondCalendarMonth(newMonth);\n }}\n />\n )}\n </Box>\n )}\n\n {/* Action Buttons */}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n gap: 1,\n mt: 2,\n pt: 2,\n borderTop: 1,\n borderColor: \"divider\",\n }}\n >\n <Box>\n {clear && (\n <Button\n size=\"small\"\n onClick={handleClear}\n disabled={!fieldFrom.value && !fieldTo.value}\n >\n پاک کردن\n </Button>\n )}\n </Box>\n <Box sx={{ display: \"flex\", gap: 1 }}>\n <Button size=\"small\" onClick={handleClose}>\n لغو\n </Button>\n <Button\n variant=\"contained\"\n size=\"small\"\n onClick={handleConfirm}\n disabled={!tempStartDate && !tempEndDate}\n >\n تأیید\n </Button>\n </Box>\n </Box>\n </Box>\n </Popover>\n </Box>\n </LocalizationProvider>\n );\n};\n\n/* کامپوننت سفارشی روزها با هایلایت بین start و end */\nfunction CustomDay(\n props: PickersDayProps<Moment> & {\n startDate?: Moment | null;\n endDate?: Moment | null;\n }\n) {\n const { day, outsideCurrentMonth, startDate, endDate, ...other } = props;\n\n const isToday = moment(day).isSame(moment(), \"day\");\n const isFriday = moment(day).day() === 5;\n\n let inRange = false;\n if (startDate && endDate) {\n inRange = day.isAfter(startDate, \"day\") && day.isBefore(endDate, \"day\");\n }\n\n const isStart = startDate && day.isSame(startDate, \"day\");\n const isEnd = endDate && day.isSame(endDate, \"day\");\n const isSelected = isStart || isEnd;\n\n return (\n <PickersDay\n {...other}\n day={day}\n outsideCurrentMonth={outsideCurrentMonth}\n selected={false}\n sx={{\n borderRadius: isSelected ? \"50%\" : inRange ? \"100%\" : \"50%\",\n fontSize: \"0.9rem\",\n width: 34,\n height: 34,\n my: 0.2,\n bgcolor: isSelected\n ? \"primary.main\"\n : inRange\n ? \"rgba(25,118,210,0.12)\"\n : isToday\n ? \"rgba(25,118,210,0.08)\"\n : \"transparent\",\n color: isSelected\n ? \"#fff\"\n : isFriday\n ? \"error.main\"\n : isToday\n ? \"primary.main\"\n : outsideCurrentMonth\n ? \"text.disabled\"\n : \"text.primary\",\n fontWeight: isSelected ? 600 : isToday ? 500 : 400,\n \"&:hover\": {\n bgcolor: isSelected\n ? \"primary.dark\"\n : inRange\n ? \"rgba(25,118,210,0.2)\"\n : \"rgba(0,0,0,0.04)\",\n },\n ...(isStart &&\n endDate && {\n borderTopRightRadius: \"50%\",\n borderBottomRightRadius: \"50%\",\n }),\n ...(isEnd &&\n startDate && {\n borderTopLeftRadius: \"50%\",\n borderBottomLeftRadius: \"50%\",\n }),\n }}\n />\n );\n}\n\nexport default DateRangePicker;\n"],"mappings":"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","names":["moment","React"]}
|
|
1
|
+
{"version":3,"sources":["../../src/date-pickers/index.ts","../../react-shim.js","../../src/date-pickers/date-range-picker/index.tsx"],"sourcesContent":["export { default as DateRangePicker } from \"./date-range-picker/index\";\n","import * as React from \"react\";\nexport { React };\n","/**\n * DateRangePicker - کامپوننت پیشرفته انتخاب بازه تاریخ شمسی\n *\n * یک کامپوننت کامل و حرفهای برای انتخاب بازه تاریخ با پشتیبانی از تقویم فارسی/شمسی\n * این کامپوننت از کتابخانههای MUI، moment-jalaali و react-icons استفاده میکند\n *\n * @version 3.0.0\n * @author Frontend Team\n * @since 2024\n * @updated October 2025\n *\n * ویژگیهای کلیدی:\n * ✅ پشتیبانی کامل از تقویم شمسی (فارسی)\n * ✅ انتخاب بازه تاریخ با نمایش visual و range highlighting\n * ✅ Responsive design - سازگار با موبایل و دسکتاپ (breakpoint: 700px)\n * ✅ سه حالت نمایش: تقویم popup، DatePicker جداگانه، یا تک/دوتایی\n * ✅ تبهای هوشمند: حالت خودکار و دستی برای انتخاب تاریخ\n * ✅ آیکونهای حرفهای React Icons در تمام بخشها\n * ✅ آیکون پاک کردن در input با UX بهبود یافته\n * ✅ سفارشیسازی کامل استایل و رنگبندی\n * ✅ پشتیبانی از validation با React Hook Form\n * ✅ قابلیت تنظیم محدوده تاریخ (min/max)\n * ✅ حالت loading و disabled\n * ✅ چندین حالت text alignment (left, center, right)\n * ✅ لیست ماهها به صورت 3 ستونی با CSS Grid\n * ✅ هایلایت روزهای جمعه، امروز و بازه انتخاب شده\n * ✅ انیمیشن و hover effects\n * ✅ تغییر خودکار تب در حالت دستی\n * ✅ عدم بسته شدن پنجره بعد از پاک کردن\n * ✅ راهنمای هوشمند برای کاربر\n *\n * نحوه استفاده:\n * ```tsx\n * import DateRangePicker from './components/date-range-picker';\n * import { useForm } from 'react-hook-form';\n *\n * const MyComponent = () => {\n * const { control } = useForm();\n *\n * return (\n * <DateRangePicker\n * fromDate=\"startDate\"\n * toDate=\"endDate\"\n * control={control}\n * label=\"انتخاب بازه تاریخ\"\n * persian={true}\n * align=\"center\"\n * clear={true}\n * dualCalendar={false} // جدید: کنترل تقویم دوم\n * singleCalendar={false}\n * useMobilePickers={false}\n * disableSmartTabs={false}\n * />\n * );\n * };\n * ```\n *\n * مثالهای مختلف:\n *\n * 1. حالت پایه (پیشفرض - تک تقویم با تبهای هوشمند):\n * ```tsx\n * <DateRangePicker\n * fromDate=\"from\"\n * toDate=\"to\"\n * control={control}\n * />\n * ```\n *\n * 2. فعال کردن تقویم دوم:\n * ```tsx\n * <DateRangePicker\n * fromDate=\"from\"\n * toDate=\"to\"\n * control={control}\n * dualCalendar={true} // تقویم دوم فعال میشود\n * />\n * ```\n *\n * 3. تک تقویم بدون تبهای هوشمند:\n * ```tsx\n * <DateRangePicker\n * fromDate=\"from\"\n * toDate=\"to\"\n * control={control}\n * singleCalendar={true}\n * />\n * ```\n *\n * 4. حالت DatePicker جداگانه:\n * ```tsx\n * <DateRangePicker\n * fromDate=\"from\"\n * toDate=\"to\"\n * control={control}\n * useMobilePickers={true}\n * />\n * ```\n *\n * 5. با محدودیت تاریخ و سفارشیسازی:\n * ```tsx\n * <DateRangePicker\n * fromDate=\"from\"\n * toDate=\"to\"\n * control={control}\n * minDate={moment().subtract(1, 'year')}\n * maxDate={moment()}\n * label=\"بازه زمانی گزارش\"\n * size=\"small\"\n * align=\"center\"\n * dualCalendar={true}\n * />\n * ```\n *\n * 6. پنهان کردن تبهای هوشمند (بدون تغییر عملکرد):\n * ```tsx\n * <DateRangePicker\n * fromDate=\"from\"\n * toDate=\"to\"\n * control={control}\n * disableSmartTabs={true}\n * />\n * ```\n *\n * ویژگیهای تبهای هوشمند (جدید در v3.0):\n *\n * ```tsx\n * // حالت هوشمند (پیشفرض): 🤖\n * // - خودکار تشخیص میدهد کاربر کدام تاریخ را میخواهد\n * // - اولین کلیک: تاریخ شروع ← تب \"تا تاریخ\" فعال\n * // - دومین کلیک: تاریخ پایان (با تشخیص ترتیب)\n * // - کلیک سوم: شروع مجدد\n *\n * // حالت دستی: 👤\n * // - کاربر خودش تب را انتخاب میکند\n * // - بعد از انتخاب \"از تاریخ\" ← خودکار به \"تا تاریخ\" میرود\n * // - بعد از انتخاب \"تا تاریخ\" ← خودکار به \"از تاریخ\" برمیگردد\n * ```\n *\n * آیکونهای استفاده شده (React Icons):\n *\n * ```tsx\n * // Input Icons:\n * MdCalendarToday // آیکون تقویم\n * MdClear // آیکون پاک کردن\n *\n * // Tab Icons:\n * MdSmartToy // حالت هوشمند\n * MdPerson // حالت دستی\n * MdDateRange // از تاریخ\n * MdEvent // تا تاریخ\n *\n * // Guide Icons:\n * MdGpsFixed // راهنمای انتخاب\n * MdCheckCircle // تأیید انتخاب\n * ```\n *\n * @interface DateRangePickerProps\n * @property {string} fromDate - نام فیلد تاریخ شروع در form\n * @property {string} toDate - نام فیلد تاریخ پایان در form\n * @property {Control<any>} control - React Hook Form control object\n * @property {DateView[]} [fromViews] - نماهای قابل نمایش برای تاریخ شروع (پیشفرض: [\"year\", \"month\", \"day\"])\n * @property {DateView} [fromOpenTo] - نمای ابتدایی برای تاریخ شروع (پیشفرض: \"day\")\n * @property {DateView[]} [toViews] - نماهای قابل نمایش برای تاریخ پایان (پیشفرض: [\"year\", \"month\", \"day\"])\n * @property {DateView} [toOpenTo] - نمای ابتدایی برای تاریخ پایان (پیشفرض: \"day\")\n * @property {string} [label] - برچسب فیلد (پیشفرض: \"انتخاب بازه\")\n * @property {\"small\" | \"medium\"} [size] - اندازه فیلد (پیشفرض: \"medium\")\n * @property {boolean} [disabled] - غیرفعال کردن کامپوننت (پیشفرض: false)\n * @property {boolean} [persian] - استفاده از تاریخ فارسی (پیشفرض: true)\n * @property {\"right\" | \"center\" | \"left\"} [align] - تراز متن (پیشفرض: \"left\")\n * @property {boolean} [isLoading] - نمایش حالت loading (پیشفرض: false)\n * @property {Moment} [minDate] - حداقل تاریخ قابل انتخاب\n * @property {Moment} [maxDate] - حداکثر تاریخ قابل انتخاب\n * @property {boolean} [clear] - نمایش دکمه پاک کردن (پیشفرض: true)\n * @property {boolean} [singleCalendar] - نمایش تک تقویم بدون تبها (پیشفرض: false)\n * @property {boolean} [useMobilePickers] - استفاده از DatePicker جداگانه (پیشفرض: false)\n * @property {boolean} [dualCalendar] - فعالسازی تقویم دوم (پیشفرض: false)\n *\n * منطق نمایش تقویمها:\n * - اگر dualCalendar = true ← دو تقویم کنار هم\n * - اگر singleCalendar = true ← تک تقویم بدون تب\n * - اگر useMobilePickers = true ← دو DatePicker جداگانه\n * - پیشفرض ← تک تقویم با تبهای هوشمند\n *\n * نکات مهم:\n * - کامپوننت خودکار mobile detection دارد (breakpoint: 700px)\n * - در حالت موبایل، تقویمها responsive میشوند\n * - فرمت خروجی همیشه \"YYYY-MM-DD\" است\n * - روزهای جمعه با رنگ قرمز نمایش داده میشوند\n * - امکان انتخاب بازه با کلیک و visual feedback وجود دارد\n * - validation errors از React Hook Form پشتیبانی میشود\n * - آیکون پاک کردن فقط در صورت وجود تاریخ نمایش داده میشود\n * - پاک کردن از داخل popup، پنجره را نمیبندد\n * - پاک کردن از input icon، پنجره را باز نمیکند\n *\n * Dependencies:\n * - @mui/material\n * - @mui/x-date-pickers\n * - @mui/x-date-pickers/AdapterMomentJalaali\n * - moment-jalaali\n * - react-hook-form\n * - react-icons/md\n *\n * @example\n * // استفاده در فرم با تمام قابلیتها\n * const form = useForm({\n * defaultValues: {\n * startDate: '',\n * endDate: ''\n * }\n * });\n *\n * // حالت پیشفرض با تبهای هوشمند\n * <DateRangePicker\n * fromDate=\"startDate\"\n * toDate=\"endDate\"\n * control={form.control}\n * label=\"انتخاب دوره زمانی\"\n * />\n *\n * // حالت dual calendar\n * <DateRangePicker\n * fromDate=\"startDate\"\n * toDate=\"endDate\"\n * control={form.control}\n * dualCalendar={true}\n * label=\"انتخاب بازه با دو تقویم\"\n * />\n */\n\n\"use client\";\nimport React, { useState, useEffect } from \"react\";\nimport {\n Box,\n Typography,\n CircularProgress,\n Popover,\n TextField,\n Button,\n useMediaQuery,\n IconButton,\n TextFieldVariants,\n} from \"@mui/material\";\nimport {\n MdClear,\n MdCalendarToday,\n MdDateRange,\n MdEvent,\n MdSmartToy,\n MdPerson,\n MdGpsFixed,\n MdCheckCircle,\n MdTipsAndUpdates,\n} from \"react-icons/md\";\nimport { Control, useController } from \"react-hook-form\";\nimport {\n StaticDatePicker,\n MobileDatePicker,\n DatePicker,\n PickersDay,\n PickersDayProps,\n LocalizationProvider,\n DateView,\n} from \"@mui/x-date-pickers\";\nimport { AdapterMomentJalaali } from \"@mui/x-date-pickers/AdapterMomentJalaali\";\nimport moment, { Moment } from \"moment-jalaali\";\nimport { string } from \"yup\";\n\nmoment.locale(\"fa\");\nmoment.loadPersian({ dialect: \"persian-modern\", usePersianDigits: true });\n\ninterface DateRangePickerProps {\n fromDate: string;\n toDate: string;\n fromViews?: DateView[] | undefined;\n fromOpenTo?: DateView | undefined;\n toViews?: DateView[] | undefined;\n toOpenTo?: DateView | undefined;\n control: Control<any>;\n label?: string;\n size?: \"small\" | \"medium\";\n disabled?: boolean;\n persian?: boolean;\n align?: \"right\" | \"center\" | \"left\";\n isLoading?: boolean;\n minDate?: Moment;\n maxDate?: Moment;\n clear?: boolean;\n singleCalendar?: boolean; // Controls single calendar display on desktop (mobile always shows single calendar)\n useMobilePickers?: boolean; // Use mobile-style DatePicker inputs instead of calendar popup\n dualCalendar?: boolean; // Enable dual calendar mode (default: false)\n disableSmartTabs?: boolean; // Hide smart tabs (auto/manual mode) without affecting functionality (default: false)\n variant?: TextFieldVariants;\n placeholder?: string;\n disableClearIcon?: boolean;\n}\n\n/**\n * DateRangePicker - کامپوننت انتخاب بازه تاریخ شمسی\n *\n * یک کامپوننت پیشرفته و کامل برای انتخاب بازه تاریخ با پشتیبانی از تقویم فارسی/شمسی\n * این کامپوننت از کتابخانههای MUI و moment-jalaali استفاده میکند\n *\n * @version 2.0.0\n * @author Frontend MAMRP Team\n * @since 2024\n *\n *\n * نحوه استفاده:\n * ```tsx\n * import DateRangePicker from './components/date-range-picker';\n * import { useForm } from 'react-hook-form';\n *\n * const MyComponent = () => {\n * const { control } = useForm();\n *\n * return (\n * <DateRangePicker\n * fromDate=\"startDate\"\n * toDate=\"endDate\"\n * control={control}\n * label=\"انتخاب بازه تاریخ\"\n * persian={true}\n * align=\"center\"\n * clear={true}\n * singleCalendar={false}\n * useMobilePickers={false}\n * />\n * );\n * };\n * ```\n *\n * مثالهای مختلف:\n *\n * 1. حالت پایه:\n * ```tsx\n * <DateRangePicker\n * fromDate=\"from\"\n * toDate=\"to\"\n * control={control}\n * />\n * ```\n *\n * 2. با تک تقویم:\n * ```tsx\n * <DateRangePicker\n * fromDate=\"from\"\n * toDate=\"to\"\n * control={control}\n * singleCalendar={true}\n * />\n * ```\n *\n * 3. با DatePicker جداگانه:\n * ```tsx\n * <DateRangePicker\n * fromDate=\"from\"\n * toDate=\"to\"\n * control={control}\n * useMobilePickers={true}\n * />\n * ```\n *\n * 4. با محدودیت تاریخ:\n * ```tsx\n * <DateRangePicker\n * fromDate=\"from\"\n * toDate=\"to\"\n * control={control}\n * minDate={moment().subtract(1, 'year')}\n * maxDate={moment()}\n * />\n * ```\n *\n * 5. سفارشیسازی کامل:\n * ```tsx\n * <DateRangePicker\n * fromDate=\"startDate\"\n * toDate=\"endDate\"\n * control={control}\n * label=\"بازه زمانی گزارش\"\n * size=\"small\"\n * align=\"center\"\n * persian={true}\n * clear={true}\n * disabled={false}\n * isLoading={false}\n * singleCalendar={false}\n * useMobilePickers={false}\n * fromViews={[\"year\", \"month\", \"day\"]}\n * fromOpenTo=\"day\"\n * toViews={[\"year\", \"month\", \"day\"]}\n * toOpenTo=\"day\"\n * />\n * ```\n *\n * @interface DateRangePickerProps\n * @property {string} fromDate - نام فیلد تاریخ شروع در form\n * @property {string} toDate - نام فیلد تاریخ پایان در form\n * @property {Control<any>} control - React Hook Form control object\n * @property {DateView[]} [fromViews] - نماهای قابل نمایش برای تاریخ شروع (پیشفرض: [\"year\", \"month\", \"day\"])\n * @property {DateView} [fromOpenTo] - نمای ابتدایی برای تاریخ شروع (پیشفرض: \"day\")\n * @property {DateView[]} [toViews] - نماهای قابل نمایش برای تاریخ پایان (پیشفرض: [\"year\", \"month\", \"day\"])\n * @property {DateView} [toOpenTo] - نمای ابتدایی برای تاریخ پایان (پیشفرض: \"day\")\n * @property {string} [label] - برچسب فیلد (پیشفرض: \"انتخاب بازه\")\n * @property {\"small\" | \"medium\"} [size] - اندازه فیلد (پیشفرض: \"medium\")\n * @property {boolean} [disabled] - غیرفعال کردن کامپوننت (پیشفرض: false)\n * @property {boolean} [persian] - استفاده از تاریخ فارسی (پیشفرض: true)\n * @property {\"right\" | \"center\" | \"left\"} [align] - تراز متن (پیشفرض: \"left\")\n * @property {boolean} [isLoading] - نمایش حالت loading (پیشفرض: false)\n * @property {Moment} [minDate] - حداقل تاریخ قابل انتخاب\n * @property {Moment} [maxDate] - حداکثر تاریخ قابل انتخاب\n * @property {boolean} [clear] - نمایش دکمه پاک کردن (پیشفرض: true)\n * @property {boolean} [singleCalendar] - نمایش تک تقویم به جای دوتایی (پیشفرض: false)\n * @property {boolean} [useMobilePickers] - استفاده از DatePicker جداگانه به جای popup (پیشفرض: false)\n * @property {boolean} [disableSmartTabs] - پنهان کردن تبهای هوشمند بدون تغییر عملکرد (پیشفرض: false)\n *\n * نکات مهم:\n * - کامپوننت خودکار mobile detection دارد (breakpoint: 700px)\n * - در حالت موبایل، تقویمها responsive میشوند\n * - فرمت خروجی همیشه \"YYYY-MM-DD\" است\n * - روزهای جمعه با رنگ قرمز نمایش داده میشوند\n * - امکان انتخاب بازه با کلیک و drag وجود دارد\n * - validation errors از React Hook Form پشتیبانی میشود\n *\n *\n * @example\n * // استفاده در فرم ساده\n * const form = useForm({\n * defaultValues: {\n * startDate: '',\n * endDate: ''\n * }\n * });\n *\n * <DateRangePicker\n * fromDate=\"startDate\"\n * toDate=\"endDate\"\n * control={form.control}\n * label=\"انتخاب دوره زمانی\"\n * />\n */\n\nconst DateRangePicker: React.FC<DateRangePickerProps> = ({\n fromDate,\n toDate,\n fromViews = [\"year\", \"month\", \"day\"],\n fromOpenTo = \"day\",\n toViews = [\"year\", \"month\", \"day\"],\n toOpenTo = \"day\",\n control,\n label,\n size = \"medium\",\n disabled = false,\n persian = true,\n align = \"left\",\n isLoading = false,\n minDate,\n maxDate,\n clear = true,\n singleCalendar = false, // Default to dual calendars on desktop\n useMobilePickers = false, // Default to calendar popup style\n dualCalendar = false, // Default to single calendar with smart tabs\n disableSmartTabs = false, // Default to show tabs\n variant = \"outlined\",\n placeholder,\n disableClearIcon = false,\n}) => {\n const [open, setOpen] = useState(false);\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const [tempStartDate, setTempStartDate] = useState<Moment | null>(null);\n const [tempEndDate, setTempEndDate] = useState<Moment | null>(null);\n const [secondCalendarMonth, setSecondCalendarMonth] = useState<Moment>(\n moment()\n );\n\n // Smart tabs state for single calendar mode\n const [activeTab, setActiveTab] = useState<\"from\" | \"to\">(\"from\");\n const [autoSelectMode, setAutoSelectMode] = useState(true); // Auto detect which date to select\n\n // Mobile detection hook\n const isMobile = useMediaQuery(\"(max-width:700px)\");\n\n // Determine if we should show single calendar (mobile or prop-controlled)\n const showSingleCalendar = isMobile || singleCalendar || !dualCalendar;\n\n // استفاده از useController برای هر دو فیلد\n const {\n field: fieldFrom,\n fieldState: { error: errorFrom },\n } = useController({ name: fromDate, control });\n\n const {\n field: fieldTo,\n fieldState: { error: errorTo },\n } = useController({ name: toDate, control });\n\n const handleOpen = (event: React.MouseEvent<HTMLElement>) => {\n if (!disabled && !isLoading) {\n setAnchorEl(event.currentTarget);\n setOpen(true);\n }\n };\n\n const handleClose = () => {\n setOpen(false);\n setTempStartDate(null);\n setTempEndDate(null);\n };\n\n // بارگذاری مقادیر موجود هنگام باز شدن\n useEffect(() => {\n if (open) {\n if (fieldFrom.value) {\n setTempStartDate(moment(fieldFrom.value));\n setSecondCalendarMonth(moment(fieldFrom.value));\n } else {\n setSecondCalendarMonth(moment());\n }\n if (fieldTo.value) {\n setTempEndDate(moment(fieldTo.value));\n }\n }\n }, [open, fieldFrom.value, fieldTo.value]);\n\n const handleDaySelect = (day: Moment, calendarSide: \"right\" | \"left\") => {\n // Smart tab mode for single calendar\n if (!dualCalendar && showSingleCalendar) {\n if (autoSelectMode) {\n // Auto mode: smart detection\n if (!tempStartDate && !tempEndDate) {\n setTempStartDate(day);\n setActiveTab(\"to\");\n } else if (tempStartDate && !tempEndDate) {\n if (day.isBefore(tempStartDate)) {\n setTempEndDate(tempStartDate);\n setTempStartDate(day);\n } else {\n setTempEndDate(day);\n }\n } else if (!tempStartDate && tempEndDate) {\n if (day.isAfter(tempEndDate)) {\n setTempStartDate(tempEndDate);\n setTempEndDate(day);\n } else {\n setTempStartDate(day);\n }\n } else {\n // Both dates exist, restart\n setTempStartDate(day);\n setTempEndDate(null);\n setActiveTab(\"to\");\n }\n } else {\n // Manual tab mode with auto switch\n if (activeTab === \"from\") {\n setTempStartDate(day);\n setActiveTab(\"to\"); // Auto switch to 'to' tab\n } else {\n setTempEndDate(day);\n setActiveTab(\"from\"); // Auto switch to 'from' tab\n }\n }\n } else {\n // Original dual calendar logic\n if (!tempStartDate && !tempEndDate) {\n if (calendarSide === \"right\") {\n setTempStartDate(day);\n } else {\n setTempEndDate(day);\n }\n } else if (tempStartDate && tempEndDate) {\n setTempStartDate(day);\n setTempEndDate(null);\n } else if (tempStartDate && !tempEndDate) {\n if (day.isBefore(tempStartDate)) {\n setTempEndDate(tempStartDate);\n setTempStartDate(day);\n } else {\n setTempEndDate(day);\n }\n } else if (!tempStartDate && tempEndDate) {\n if (day.isAfter(tempEndDate)) {\n setTempStartDate(tempEndDate);\n setTempEndDate(day);\n } else {\n setTempStartDate(day);\n }\n }\n }\n };\n\n const handleConfirm = () => {\n if (tempStartDate) {\n fieldFrom.onChange(tempStartDate.locale(\"en\").format(\"YYYY-MM-DD\"));\n }\n if (tempEndDate) {\n fieldTo.onChange(tempEndDate.locale(\"en\").format(\"YYYY-MM-DD\"));\n }\n setOpen(false);\n setTempStartDate(null);\n setTempEndDate(null);\n };\n\n const handleClear = () => {\n fieldFrom.onChange(null);\n fieldTo.onChange(null);\n setTempStartDate(null);\n setTempEndDate(null);\n setActiveTab(\"from\"); // Reset to start tab\n // Keep popover open - don't call setOpen(false)\n };\n\n // Separate function for clearing from input icon\n const handleInputClear = (event: React.MouseEvent) => {\n event.stopPropagation(); // Prevent opening popover\n fieldFrom.onChange(null);\n fieldTo.onChange(null);\n setTempStartDate(null);\n setTempEndDate(null);\n setActiveTab(\"from\");\n };\n\n const displayValue = () => {\n const start = fieldFrom.value ? moment(fieldFrom.value) : null;\n const end = fieldTo.value ? moment(fieldTo.value) : null;\n\n if (start && end) {\n return persian\n ? `${end.format(\"jYYYY/jMM/jDD\")} - ${start.format(\"jYYYY/jMM/jDD\")}`\n : `${end.format(\"YYYY/MM/DD\")} - ${start.format(\"YYYY/MM/DD\")}`;\n } else if (start) {\n return persian\n ? \"از تاریخ\" + \" \" + start.format(\"jYYYY/jMM/jDD\")\n : start.format(\"YYYY/MM/DD\");\n } else if (end) {\n return persian\n ? \"تا تاریخ\" + \" \" + end.format(\"jYYYY/jMM/jDD\")\n : end.format(\"YYYY/MM/DD\");\n }\n return \"\";\n };\n\n const error = errorFrom || errorTo;\n\n const customLocaleText = {\n cancelButtonLabel: \"لغو\",\n okButtonLabel: \"تأیید\",\n todayButtonLabel: \"امروز\",\n clearButtonLabel: \"پاک کردن\",\n };\n\n return (\n <LocalizationProvider\n dateAdapter={AdapterMomentJalaali}\n localeText={customLocaleText}\n >\n <Box sx={{ width: \"100%\" }}>\n <TextField\n label={label}\n size={size}\n variant={variant}\n fullWidth\n value={displayValue()}\n onClick={handleOpen}\n disabled={disabled || isLoading}\n placeholder={placeholder ?? \"انتخاب بازه تاریخ\"}\n error={!!error}\n InputLabelProps={{\n shrink: true,\n }}\n InputProps={{\n readOnly: true,\n sx: {\n textAlign: align,\n direction: \"ltr\",\n cursor: disabled ? \"default\" : \"pointer\",\n \"& input\": {\n textAlign: align,\n },\n },\n endAdornment: (\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 0.5 }}>\n {/* Clear Icon */}\n {(fieldFrom.value || fieldTo.value) &&\n !disabled &&\n !isLoading &&\n !disableClearIcon && (\n <IconButton\n size=\"small\"\n onClick={handleInputClear}\n sx={{\n padding: \"4px\",\n color: \"text.secondary\",\n \"&:hover\": {\n color: \"error.main\",\n backgroundColor: \"rgba(244, 67, 54, 0.08)\",\n },\n }}\n >\n <MdClear size={16} />\n </IconButton>\n )}\n\n {/* Loading Indicator */}\n {isLoading && <CircularProgress size={20} color=\"secondary\" />}\n </Box>\n ),\n }}\n sx={{\n \"& .MuiOutlinedInput-root\": {\n height: size === \"small\" ? 40 : 56,\n },\n }}\n />\n\n {error && (\n <Typography fontSize={13} color=\"error\" sx={{ mt: 0.6, ml: 1 }}>\n {error.message}\n </Typography>\n )}\n\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"left\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"left\",\n }}\n slotProps={{\n paper: {\n sx: {\n mt: 1,\n maxWidth: isMobile ? \"95vw\" : \"auto\",\n width: isMobile ? \"auto\" : \"auto\",\n maxHeight: isMobile ? \"90vh\" : \"auto\",\n overflow: isMobile ? \"auto\" : \"visible\",\n },\n },\n }}\n >\n <Box sx={{ p: isMobile ? 1 : 2 }}>\n {/* Toolbar */}\n <Box sx={{ mb: 2 }}>\n <Typography variant=\"overline\" color=\"primary\">\n انتخاب بازه تاریخ\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {tempStartDate && tempEndDate\n ? `${tempStartDate.format(\n \"jDD jMMMM\"\n )} تا ${tempEndDate.format(\"jDD jMMMM\")}`\n : tempStartDate\n ? `از ${tempStartDate.format(\"jDD jMMMM\")}`\n : \"تاریخ شروع و پایان را انتخاب کنید\"}\n </Typography>\n </Box>\n\n {/* Calendars - responsive layout */}\n {useMobilePickers ? (\n // Mobile-style: Use DatePicker inputs\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: 2,\n alignItems: \"center\",\n width: \"100%\",\n }}\n >\n <Box sx={{ width: \"100%\" }}>\n <Typography variant=\"body2\" sx={{ mb: 1, fontWeight: 500 }}>\n تاریخ شروع (از):\n </Typography>\n <DatePicker\n value={tempStartDate}\n onChange={(day: Moment | null) => {\n setTempStartDate(day);\n }}\n openTo={fromOpenTo}\n views={fromViews}\n minDate={minDate}\n maxDate={maxDate || moment()}\n slotProps={{\n textField: {\n fullWidth: true,\n size: \"small\",\n placeholder: \"انتخاب تاریخ شروع\",\n },\n }}\n />\n </Box>\n\n <Box sx={{ width: \"100%\" }}>\n <Typography variant=\"body2\" sx={{ mb: 1, fontWeight: 500 }}>\n تاریخ پایان (تا):\n </Typography>\n <DatePicker\n value={tempEndDate}\n onChange={(day: Moment | null) => {\n setTempEndDate(day);\n }}\n openTo={toOpenTo}\n views={toViews}\n minDate={tempStartDate || minDate}\n maxDate={maxDate || moment()}\n slotProps={{\n textField: {\n fullWidth: true,\n size: \"small\",\n placeholder: \"انتخاب تاریخ پایان\",\n },\n }}\n />\n </Box>\n </Box>\n ) : (\n // Calendar popup style: Use StaticDatePicker(s)\n <Box\n sx={{\n display: \"flex\",\n gap: showSingleCalendar ? 0 : 2,\n flexDirection: showSingleCalendar ? \"column\" : \"row\",\n alignItems: \"center\",\n }}\n >\n {/* Smart Tabs for Single Calendar */}\n {!dualCalendar && showSingleCalendar && !disableSmartTabs && (\n <Box sx={{ width: \"100%\", mb: 2 }}>\n {/* Auto/Manual Toggle */}\n <Box\n sx={{ display: \"flex\", justifyContent: \"center\", mb: 1 }}\n >\n <Button\n size=\"small\"\n variant={autoSelectMode ? \"contained\" : \"outlined\"}\n onClick={() => setAutoSelectMode(!autoSelectMode)}\n sx={{ fontSize: \"12px\", minWidth: \"120px\" }}\n >\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 0.5,\n }}\n >\n {autoSelectMode ? (\n <MdTipsAndUpdates size={16} />\n ) : (\n <MdPerson size={16} />\n )}\n {autoSelectMode ? \"هوشمند\" : \"دستی\"}\n </Box>\n </Button>\n </Box>\n\n {/* Date Selection Tabs */}\n {!autoSelectMode && (\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"center\",\n gap: 1,\n mb: 2,\n borderBottom: 1,\n borderColor: \"divider\",\n pb: 1,\n }}\n >\n <Button\n size=\"small\"\n variant={\n activeTab === \"from\" ? \"contained\" : \"outlined\"\n }\n onClick={() => setActiveTab(\"from\")}\n sx={{\n minWidth: \"140px\",\n fontSize: \"13px\",\n backgroundColor:\n activeTab === \"from\"\n ? \"primary.main\"\n : \"transparent\",\n color:\n activeTab === \"from\" ? \"white\" : \"primary.main\",\n }}\n >\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 0.5,\n flexDirection: \"column\",\n }}\n >\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 0.5,\n }}\n >\n <MdDateRange size={16} />\n از تاریخ\n </Box>\n {tempStartDate && (\n <Typography\n variant=\"caption\"\n sx={{ fontSize: \"10px\" }}\n >\n {tempStartDate.format(\"jYYYY/jMM/jDD\")}\n </Typography>\n )}\n </Box>\n </Button>\n\n <Button\n size=\"small\"\n variant={\n activeTab === \"to\" ? \"contained\" : \"outlined\"\n }\n onClick={() => setActiveTab(\"to\")}\n sx={{\n minWidth: \"140px\",\n fontSize: \"13px\",\n backgroundColor:\n activeTab === \"to\"\n ? \"primary.main\"\n : \"transparent\",\n color:\n activeTab === \"to\" ? \"white\" : \"primary.main\",\n }}\n >\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 0.5,\n flexDirection: \"column\",\n }}\n >\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 0.5,\n }}\n >\n <MdEvent size={16} />\n تا تاریخ\n </Box>\n {tempEndDate && (\n <Typography\n variant=\"caption\"\n sx={{ fontSize: \"10px\" }}\n >\n {tempEndDate.format(\"jYYYY/jMM/jDD\")}\n </Typography>\n )}\n </Box>\n </Button>\n </Box>\n )}\n\n {/* Auto Mode Status */}\n {autoSelectMode && (\n <Box sx={{ textAlign: \"center\", mb: 2 }}>\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: 0.5,\n }}\n >\n {!tempStartDate && !tempEndDate ? (\n <>\n <MdGpsFixed size={14} />\n اولین تاریخ را انتخاب کنید\n </>\n ) : tempStartDate && !tempEndDate ? (\n <>\n <MdGpsFixed size={14} />\n تاریخ پایان را انتخاب کنید\n </>\n ) : tempStartDate && tempEndDate ? (\n <>\n <MdCheckCircle size={14} />\n بازه انتخاب شده - تاریخ جدید برای شروع مجدد\n </>\n ) : (\n <>\n <MdGpsFixed size={14} />\n تاریخ شروع را انتخاب کنید\n </>\n )}\n </Typography>\n </Box>\n )}\n </Box>\n )}\n\n {/* تقویم اول */}\n <StaticDatePicker\n value={\n tempStartDate ||\n (fieldFrom.value ? moment(fieldFrom.value) : null)\n }\n onChange={(day: Moment | null) => {\n if (day) handleDaySelect(day, \"right\");\n }}\n openTo={fromOpenTo}\n views={fromViews}\n slots={{\n day: (props) =>\n CustomDay({\n ...props,\n startDate: tempStartDate,\n endDate: tempEndDate,\n }),\n actionBar: () => null,\n monthButton: (props) => {\n return (\n <button\n className={`${props.className}`}\n style={{\n width: \"100%\",\n padding: \"15px 8px\",\n border: \"1px solid #ccc\",\n borderRadius: \"8px\",\n backgroundColor: props.disabled\n ? \"#f0f0f0\"\n : \"#ffffff\",\n fontSize: \"17px\",\n cursor: props.disabled ? \"default\" : \"pointer\",\n textAlign: \"center\",\n boxSizing: \"border-box\",\n }}\n disabled={props.disabled}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n onClick={props.onClick}\n ref={props.ref}\n >\n {props[\"aria-label\"]}\n </button>\n );\n },\n }}\n minDate={minDate}\n maxDate={maxDate || moment()}\n slotProps={{\n toolbar: { hidden: true },\n layout: {\n sx: {\n \"& .MuiPickersCalendarHeader-root\": {\n minHeight: \"40px\",\n maxHeight: \"40px\",\n },\n \"& .MuiDayCalendar-header\": {\n justifyContent: \"space-around\",\n },\n \"& .MuiDayCalendar-weekContainer\": {\n justifyContent: \"space-around\",\n },\n \"& .MuiPickersDay-root\": {\n fontSize: \"0.875rem\",\n },\n \"& .MuiMonthCalendar-root\": {\n display: \"grid\",\n gridTemplateColumns: \"repeat(3, 1fr)\",\n gap: \"8px\",\n width: \"100%\",\n },\n },\n },\n }}\n sx={{\n \"& .MuiPickersLayout-contentWrapper\": {\n minWidth: showSingleCalendar ? \"300px\" : \"280px\",\n maxWidth: showSingleCalendar ? \"350px\" : \"320px\",\n },\n }}\n />\n\n {/* تقویم دوم - فقط در صورت فعال بودن dualCalendar */}\n {dualCalendar && !showSingleCalendar && (\n <StaticDatePicker\n value={secondCalendarMonth}\n onChange={(day: Moment | null) => {\n if (day) handleDaySelect(day, \"left\");\n }}\n openTo={toOpenTo}\n views={toViews}\n slots={{\n day: (props) =>\n CustomDay({\n ...props,\n startDate: tempStartDate,\n endDate: tempEndDate,\n }),\n actionBar: () => null,\n monthButton: (props) => {\n return (\n <button\n className={`${props.className}`}\n style={{\n width: \"100%\",\n padding: \"15px 8px\",\n border: \"1px solid #ccc\",\n borderRadius: \"8px\",\n backgroundColor: props.disabled\n ? \"#f0f0f0\"\n : \"#ffffff\",\n fontSize: \"17px\",\n cursor: props.disabled ? \"default\" : \"pointer\",\n textAlign: \"center\",\n boxSizing: \"border-box\",\n }}\n disabled={props.disabled}\n onFocus={props.onFocus}\n onBlur={props.onBlur}\n onClick={props.onClick}\n ref={props.ref}\n >\n {props[\"aria-label\"]}\n </button>\n );\n },\n }}\n minDate={minDate}\n maxDate={maxDate || moment()}\n slotProps={{\n toolbar: { hidden: true },\n layout: {\n sx: {\n \"& .MuiPickersCalendarHeader-root\": {\n minHeight: \"40px\",\n maxHeight: \"40px\",\n },\n \"& .MuiDayCalendar-header\": {\n justifyContent: \"space-around\",\n },\n \"& .MuiDayCalendar-weekContainer\": {\n justifyContent: \"space-around\",\n },\n \"& .MuiPickersDay-root\": {\n fontSize: \"0.875rem\",\n },\n \"& .MuiMonthCalendar-root\": {\n display: \"grid\",\n gridTemplateColumns: \"repeat(3, 1fr)\",\n gap: \"8px\",\n width: \"100%\",\n },\n },\n },\n }}\n sx={{\n \"& .MuiPickersLayout-contentWrapper\": {\n minWidth: \"280px\",\n maxWidth: \"320px\",\n },\n }}\n onMonthChange={(newMonth: Moment) => {\n setSecondCalendarMonth(newMonth);\n }}\n />\n )}\n </Box>\n )}\n\n {/* Action Buttons */}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n gap: 1,\n mt: 2,\n pt: 2,\n borderTop: 1,\n borderColor: \"divider\",\n }}\n >\n <Box>\n {clear && (\n <Button\n size=\"small\"\n onClick={handleClear}\n disabled={!fieldFrom.value && !fieldTo.value}\n >\n پاک کردن\n </Button>\n )}\n </Box>\n <Box sx={{ display: \"flex\", gap: 1 }}>\n <Button size=\"small\" onClick={handleClose}>\n لغو\n </Button>\n <Button\n variant=\"contained\"\n size=\"small\"\n onClick={handleConfirm}\n disabled={!tempStartDate && !tempEndDate}\n >\n تأیید\n </Button>\n </Box>\n </Box>\n </Box>\n </Popover>\n </Box>\n </LocalizationProvider>\n );\n};\n\n/* کامپوننت سفارشی روزها با هایلایت بین start و end */\nfunction CustomDay(\n props: PickersDayProps<Moment> & {\n startDate?: Moment | null;\n endDate?: Moment | null;\n }\n) {\n const { day, outsideCurrentMonth, startDate, endDate, ...other } = props;\n\n const isToday = moment(day).isSame(moment(), \"day\");\n const isFriday = moment(day).day() === 5;\n\n let inRange = false;\n if (startDate && endDate) {\n inRange = day.isAfter(startDate, \"day\") && day.isBefore(endDate, \"day\");\n }\n\n const isStart = startDate && day.isSame(startDate, \"day\");\n const isEnd = endDate && day.isSame(endDate, \"day\");\n const isSelected = isStart || isEnd;\n\n return (\n <PickersDay\n {...other}\n day={day}\n outsideCurrentMonth={outsideCurrentMonth}\n selected={false}\n sx={{\n borderRadius: isSelected ? \"50%\" : inRange ? \"100%\" : \"50%\",\n fontSize: \"0.9rem\",\n width: 34,\n height: 34,\n my: 0.2,\n bgcolor: isSelected\n ? \"primary.main\"\n : inRange\n ? \"rgba(25,118,210,0.12)\"\n : isToday\n ? \"rgba(25,118,210,0.08)\"\n : \"transparent\",\n color: isSelected\n ? \"#fff\"\n : isFriday\n ? \"error.main\"\n : isToday\n ? \"primary.main\"\n : outsideCurrentMonth\n ? \"text.disabled\"\n : \"text.primary\",\n fontWeight: isSelected ? 600 : isToday ? 500 : 400,\n \"&:hover\": {\n bgcolor: isSelected\n ? \"primary.dark\"\n : inRange\n ? \"rgba(25,118,210,0.2)\"\n : \"rgba(0,0,0,0.04)\",\n },\n ...(isStart &&\n endDate && {\n borderTopRightRadius: \"50%\",\n borderBottomRightRadius: \"50%\",\n }),\n ...(isEnd &&\n startDate && {\n borderTopLeftRadius: \"50%\",\n borderBottomLeftRadius: \"50%\",\n }),\n }}\n />\n );\n}\n\nexport default DateRangePicker;\n"],"mappings":"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","names":["moment","React"]}
|
|
@@ -56,6 +56,8 @@ var DateRangePicker = ({
|
|
|
56
56
|
// Default to calendar popup style
|
|
57
57
|
dualCalendar = false,
|
|
58
58
|
// Default to single calendar with smart tabs
|
|
59
|
+
disableSmartTabs = false,
|
|
60
|
+
// Default to show tabs
|
|
59
61
|
variant = "outlined",
|
|
60
62
|
placeholder,
|
|
61
63
|
disableClearIcon = false
|
|
@@ -357,7 +359,7 @@ var DateRangePicker = ({
|
|
|
357
359
|
alignItems: "center"
|
|
358
360
|
}
|
|
359
361
|
},
|
|
360
|
-
!dualCalendar && showSingleCalendar && /* @__PURE__ */ React2.createElement(Box, { sx: { width: "100%", mb: 2 } }, /* @__PURE__ */ React2.createElement(
|
|
362
|
+
!dualCalendar && showSingleCalendar && !disableSmartTabs && /* @__PURE__ */ React2.createElement(Box, { sx: { width: "100%", mb: 2 } }, /* @__PURE__ */ React2.createElement(
|
|
361
363
|
Box,
|
|
362
364
|
{
|
|
363
365
|
sx: { display: "flex", justifyContent: "center", mb: 1 }
|