@mamrp/components 1.7.27 → 1.7.30

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.
@@ -55,6 +55,7 @@ import { Moment } from 'moment-jalaali';
55
55
  * dualCalendar={false} // جدید: کنترل تقویم دوم
56
56
  * singleCalendar={false}
57
57
  * useMobilePickers={false}
58
+ * disableSmartTabs={false}
58
59
  * />
59
60
  * );
60
61
  * };
@@ -116,6 +117,16 @@ import { Moment } from 'moment-jalaali';
116
117
  * />
117
118
  * ```
118
119
  *
120
+ * 6. پنهان کردن تب‌های هوشمند (بدون تغییر عملکرد):
121
+ * ```tsx
122
+ * <DateRangePicker
123
+ * fromDate="from"
124
+ * toDate="to"
125
+ * control={control}
126
+ * disableSmartTabs={true}
127
+ * />
128
+ * ```
129
+ *
119
130
  * ویژگی‌های تب‌های هوشمند (جدید در v3.0):
120
131
  *
121
132
  * ```tsx
@@ -242,6 +253,7 @@ interface DateRangePickerProps {
242
253
  singleCalendar?: boolean;
243
254
  useMobilePickers?: boolean;
244
255
  dualCalendar?: boolean;
256
+ disableSmartTabs?: boolean;
245
257
  variant?: TextFieldVariants;
246
258
  placeholder?: string;
247
259
  disableClearIcon?: boolean;
@@ -364,6 +376,7 @@ interface DateRangePickerProps {
364
376
  * @property {boolean} [clear] - نمایش دکمه پاک کردن (پیش‌فرض: true)
365
377
  * @property {boolean} [singleCalendar] - نمایش تک تقویم به جای دوتایی (پیش‌فرض: false)
366
378
  * @property {boolean} [useMobilePickers] - استفاده از DatePicker جداگانه به جای popup (پیش‌فرض: false)
379
+ * @property {boolean} [disableSmartTabs] - پنهان کردن تب‌های هوشمند بدون تغییر عملکرد (پیش‌فرض: false)
367
380
  *
368
381
  * نکات مهم:
369
382
  * - کامپوننت خودکار mobile detection دارد (breakpoint: 700px)
@@ -70,6 +70,8 @@ var DateRangePicker = ({
70
70
  // Default to calendar popup style
71
71
  dualCalendar = false,
72
72
  // Default to single calendar with smart tabs
73
+ disableSmartTabs = false,
74
+ // Default to show tabs
73
75
  variant = "outlined",
74
76
  placeholder,
75
77
  disableClearIcon = false
@@ -371,7 +373,7 @@ var DateRangePicker = ({
371
373
  alignItems: "center"
372
374
  }
373
375
  },
374
- !dualCalendar && showSingleCalendar && /* @__PURE__ */ import_react.default.createElement(import_material.Box, { sx: { width: "100%", mb: 2 } }, /* @__PURE__ */ import_react.default.createElement(
376
+ !dualCalendar && showSingleCalendar && !disableSmartTabs && /* @__PURE__ */ import_react.default.createElement(import_material.Box, { sx: { width: "100%", mb: 2 } }, /* @__PURE__ */ import_react.default.createElement(
375
377
  import_material.Box,
376
378
  {
377
379
  sx: { display: "flex", justifyContent: "center", mb: 1 }
@@ -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 }