@mamrp/components 1.4.3 → 1.4.5

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/index.d.mts CHANGED
@@ -372,39 +372,230 @@ interface DraggablePaperProps extends PaperProps {
372
372
  }
373
373
  declare function DraggablePaper({ handle, cancel, ...props }: DraggablePaperProps): React$1.JSX.Element;
374
374
 
375
+ /**
376
+ * Props کامپوننت DataTable
377
+ *
378
+ * این اینترفیس تمام گزینه‌های قابل تنظیم برای کامپوننت DataTable را تعریف می‌کند
379
+ * و مستقیماً با خروجی useTableState سازگار است
380
+ *
381
+ * @template T - نوع داده‌های جدول (مثال: Car، User، Product)
382
+ */
375
383
  type DataTableProps<T extends Record<string, any>> = {
384
+ /** آرایه داده‌های جدول */
376
385
  data: T[];
386
+ /** تعریف ستون‌های جدول */
377
387
  columns: MRT_ColumnDef<T>[];
388
+ /** آیا جدول در حال بارگذاری است */
378
389
  isLoading?: boolean;
390
+ /** آیا داده‌ها در حال به‌روزرسانی هستند */
379
391
  isRefetching?: boolean;
392
+ /** وضعیت صفحه‌بندی (مستقیماً از useTableState) */
380
393
  pagination: MRT_PaginationState;
394
+ /** تابع تغییر صفحه‌بندی (setPagination از useTableState) */
381
395
  onPaginationChange: (updater: MRT_PaginationState | ((old: MRT_PaginationState) => MRT_PaginationState)) => void;
396
+ /** تعداد کل رکوردها (از API response) */
382
397
  totalRows: number;
398
+ /** فعال‌سازی صفحه‌بندی دستی (پیش‌فرض: true) */
383
399
  manualPagination?: boolean;
400
+ /** فیلترهای ستون (columnFilters از useTableState) */
384
401
  columnFilters?: MRT_ColumnFiltersState;
402
+ /** تابع تغییر فیلترهای ستون */
385
403
  onColumnFiltersChange?: (filters: MRT_ColumnFiltersState | ((old: MRT_ColumnFiltersState) => MRT_ColumnFiltersState)) => void;
404
+ /** فعال‌سازی فیلترینگ دستی (پیش‌فرض: true) */
386
405
  manualFiltering?: boolean;
406
+ /** تابع پاک کردن فیلترها (clearFilters از useTableState) */
387
407
  onClearFilters?: () => void;
408
+ /** نمایش دکمه پاک کردن فیلترها */
388
409
  showClearFiltersButton?: boolean;
410
+ /** وضعیت مرتب‌سازی (sorting از useTableState) */
389
411
  sorting?: MRT_SortingState;
412
+ /** تابع تغییر مرتب‌سازی (setSorting از useTableState) */
390
413
  onSortingChange?: (sorting: MRT_SortingState | ((old: MRT_SortingState) => MRT_SortingState)) => void;
414
+ /** فعال‌سازی مرتب‌سازی دستی (پیش‌فرض: false) */
391
415
  manualSorting?: boolean;
416
+ /** وضعیت نمایش ستون‌ها (columnVisibility از useTableState) */
417
+ columnVisibility?: Record<string, boolean>;
418
+ /** تابع تغییر نمایش ستون‌ها (setColumnVisibility از useTableState) */
419
+ onColumnVisibilityChange?: (visibility: Record<string, boolean> | ((old: Record<string, boolean>) => Record<string, boolean>)) => void;
420
+ /** ترتیب ستون‌ها */
421
+ columnOrder?: string[];
422
+ /** تابع تغییر ترتیب ستون‌ها */
423
+ onColumnOrderChange?: (order: string[] | ((old: string[]) => string[])) => void;
424
+ /** فعال‌سازی header چسبان */
392
425
  enableStickyHeader?: boolean;
426
+ /** حداکثر ارتفاع جدول */
393
427
  maxHeight?: string;
428
+ /** تراکم جدول */
394
429
  density?: "comfortable" | "compact" | "spacious";
430
+ /** امکان تغییر ترتیب ستون‌ها */
395
431
  enableColumnOrdering?: boolean;
432
+ /** فعال‌سازی جستجوی سراسری */
396
433
  enableGlobalFilter?: boolean;
434
+ /** فعال‌سازی انواع فیلتر ستون */
397
435
  enableColumnFilterModes?: boolean;
436
+ /** فعال‌سازی انتخاب سطر */
398
437
  enableRowSelection?: boolean;
438
+ /** وضعیت نمایش فیلترهای ستون */
439
+ showColumnFilters?: boolean;
440
+ /** تابع تغییر وضعیت نمایش فیلترها */
441
+ onShowColumnFiltersChange?: (updater: boolean | ((old: boolean) => boolean)) => void;
442
+ /** رندر کردن اکشن‌های سفارشی بالای جدول */
399
443
  renderTopToolbarCustomActions?: (props: {
400
444
  table: any;
401
445
  }) => React.ReactNode;
446
+ /** رندر کردن اکشن‌های سفارشی پایین جدول */
402
447
  renderBottomToolbarCustomActions?: (props: {
403
448
  table: any;
404
449
  }) => React.ReactNode;
450
+ /** گزینه‌های اضافی جدول */
405
451
  tableOptions?: Partial<MRT_TableOptions<T>>;
452
+ /** لوکالیزیشن سفارشی */
406
453
  localization?: Record<string, string>;
407
454
  };
408
- declare const DataTable: <T extends Record<string, any>>({ data, columns, isLoading, isRefetching, pagination, onPaginationChange, totalRows, manualPagination, columnFilters, onColumnFiltersChange, manualFiltering, onClearFilters, showClearFiltersButton, sorting, onSortingChange, manualSorting, enableStickyHeader, maxHeight, density, enableColumnOrdering, enableGlobalFilter, enableColumnFilterModes, enableRowSelection, renderTopToolbarCustomActions, renderBottomToolbarCustomActions, tableOptions, localization, }: DataTableProps<T>) => React$1.JSX.Element;
455
+ /**
456
+ * کامپوننت DataTable - جدول پیشرفته با قابلیت‌های کامل
457
+ *
458
+ * این کامپوننت یک wrapper پیشرفته برای Material React Table است که:
459
+ * - مستقیماً با useTableState یکپارچه می‌شود
460
+ * - تمام ویژگی‌های مدرن جدول را پشتیبانی می‌کند
461
+ * - لوکالیزیشن کامل فارسی دارد
462
+ * - بهینه‌سازی شده برای عملکرد بالا
463
+ *
464
+ * ## راهنمای استفاده با useTableState:
465
+ *
466
+ * ### مرحله 1: تنظیم useTableState
467
+ * ```tsx
468
+ * const tableState = useTableState("my-table", {
469
+ * initialPageSize: 25,
470
+ * debounceTime: 500,
471
+ * sortMapping: {
472
+ * name: "NameOrdering",
473
+ * status: "StatusOrdering"
474
+ * }
475
+ * });
476
+ * ```
477
+ *
478
+ * ### مرحله 2: فراخوانی API
479
+ * ```tsx
480
+ * const { data } = useGetData({
481
+ * PageNumber: tableState.pagination.pageIndex + 1,
482
+ * PageSize: tableState.pagination.pageSize,
483
+ * ...tableState.debouncedFiltring,
484
+ * ...tableState.mappedSorting,
485
+ * });
486
+ * ```
487
+ *
488
+ * ### مرحله 3: تعریف ستون‌ها با فیلتر
489
+ * ```tsx
490
+ * const columns = useMemo<MRT_ColumnDef<DataType>[]>(() => [
491
+ * {
492
+ * accessorKey: "name",
493
+ * header: "نام",
494
+ * Filter: ({ column }) => (
495
+ * <FormInputText
496
+ * control={control}
497
+ * name="NameFiltering"
498
+ * placeholder="فیلتر نام"
499
+ * />
500
+ * ),
501
+ * },
502
+ * // سایر ستون‌ها...
503
+ * ], [control]);
504
+ * ```
505
+ *
506
+ * ### مرحله 4: رندر DataTable
507
+ * ```tsx
508
+ * return (
509
+ * <DataTable
510
+ * data={data?.items || []}
511
+ * columns={columns}
512
+ * isLoading={isLoading}
513
+ * pagination={tableState.pagination}
514
+ * onPaginationChange={tableState.setPagination}
515
+ * totalRows={data?.totalRecords || 0}
516
+ * sorting={tableState.sorting}
517
+ * onSortingChange={tableState.setSorting}
518
+ * columnVisibility={tableState.columnVisibility}
519
+ * onColumnVisibilityChange={tableState.setColumnVisibility}
520
+ * showColumnFilters={showFilters}
521
+ * onShowColumnFiltersChange={setShowFilters}
522
+ * onClearFilters={handleClearFilters}
523
+ * manualSorting={true}
524
+ * />
525
+ * );
526
+ * ```
527
+ *
528
+ * ## ویژگی‌های کلیدی:
529
+ *
530
+ * 📄 **صفحه‌بندی هوشمند**: صفحه‌بندی سمت سرور با همگام‌سازی خودکار
531
+ * 🔍 **فیلترینگ پیشرفته**: فیلترهای سفارشی با debouncing
532
+ * 🔀 **مرتب‌سازی قدرتمند**: مرتب‌سازی با نگاشت بک‌اند
533
+ * 👁️ **مدیریت ستون‌ها**: نمایش/مخفی کردن ستون‌ها با localStorage
534
+ * 🌍 **لوکالیزیشن**: پشتیبانی کامل از زبان فارسی
535
+ * ⚡ **بهینه‌سازی**: رندرینگ بهینه با useMemo
536
+ * 🎨 **قابل تنظیم**: ظاهر و رفتار کاملاً قابل تنظیم
537
+ *
538
+ * @template T - نوع داده‌های جدول
539
+ *
540
+ * @example
541
+ * ```tsx
542
+ * // مثال کامل استفاده
543
+ * function UsersTable() {
544
+ * const { control, watch, reset } = useForm();
545
+ *
546
+ * const tableState = useTableState<UserFilter>("users-table", {
547
+ * initialPageSize: 50,
548
+ * watch,
549
+ * syncFormToFilters: true,
550
+ * sortMapping: {
551
+ * name: "NameOrdering",
552
+ * email: "EmailOrdering"
553
+ * }
554
+ * });
555
+ *
556
+ * const { data, isLoading } = useGetUsers({
557
+ * PageNumber: tableState.pagination.pageIndex + 1,
558
+ * PageSize: tableState.pagination.pageSize,
559
+ * ...tableState.debouncedFiltring,
560
+ * ...tableState.mappedSorting,
561
+ * });
562
+ *
563
+ * const columns = useMemo(() => [
564
+ * {
565
+ * accessorKey: "name",
566
+ * header: "نام کاربر",
567
+ * Filter: () => (
568
+ * <FormInputText
569
+ * control={control}
570
+ * name="NameFiltering"
571
+ * placeholder="جستجو نام"
572
+ * />
573
+ * ),
574
+ * }
575
+ * ], [control]);
576
+ *
577
+ * return (
578
+ * <DataTable
579
+ * data={data?.users || []}
580
+ * columns={columns}
581
+ * isLoading={isLoading}
582
+ * pagination={tableState.pagination}
583
+ * onPaginationChange={tableState.setPagination}
584
+ * totalRows={data?.totalCount || 0}
585
+ * sorting={tableState.sorting}
586
+ * onSortingChange={tableState.setSorting}
587
+ * columnVisibility={tableState.columnVisibility}
588
+ * onColumnVisibilityChange={tableState.setColumnVisibility}
589
+ * onClearFilters={() => {
590
+ * tableState.clearFilters();
591
+ * reset();
592
+ * }}
593
+ * manualSorting={true}
594
+ * />
595
+ * );
596
+ * }
597
+ * ```
598
+ */
599
+ declare const DataTable: <T extends Record<string, any>>({ data, columns, isLoading, isRefetching, pagination, onPaginationChange, totalRows, manualPagination, columnFilters, onColumnFiltersChange, manualFiltering, onClearFilters, showClearFiltersButton, sorting, onSortingChange, manualSorting, columnVisibility, onColumnVisibilityChange, columnOrder, onColumnOrderChange, enableStickyHeader, maxHeight, density, enableColumnOrdering, enableGlobalFilter, enableColumnFilterModes, enableRowSelection, showColumnFilters, onShowColumnFiltersChange, renderTopToolbarCustomActions, renderBottomToolbarCustomActions, tableOptions, localization, }: DataTableProps<T>) => React$1.JSX.Element;
409
600
 
410
601
  export { Page as Accordion, AdvancedSearchButton, ConfirmationDialog$1 as ConfirmationDialog, ConnectToBasculeButton, CustomCheckbox, CustomTimePicker, DataTable, DateFilter, DateFilterRange, DateMonthPicker, JalaliDatePicker$2 as DatePicker, JalaliDatePicker$1 as DateTimePicker, JalaliDateTimeRangePicker as DateTimeRangePicker, DraggablePaper, UploadImage as EnhancedUploadImage, FormInputNumber, FormInputText, HorizontalStepper, LicensePlate, JalaliDatePicker as MobileDateTimePicker, ConfirmationDialog as Modal, NestedSelect as NestedSelectort, NoResult, PaginationList, PatternTextField, RadioButton, SearchLicensePlate, MultipleSelectChip as Selector, SkeletonCard, SonarSpinner, SwitchButton, Table, UploadImage$1 as UploadImage };
package/dist/index.d.ts CHANGED
@@ -372,39 +372,230 @@ interface DraggablePaperProps extends PaperProps {
372
372
  }
373
373
  declare function DraggablePaper({ handle, cancel, ...props }: DraggablePaperProps): React$1.JSX.Element;
374
374
 
375
+ /**
376
+ * Props کامپوننت DataTable
377
+ *
378
+ * این اینترفیس تمام گزینه‌های قابل تنظیم برای کامپوننت DataTable را تعریف می‌کند
379
+ * و مستقیماً با خروجی useTableState سازگار است
380
+ *
381
+ * @template T - نوع داده‌های جدول (مثال: Car، User، Product)
382
+ */
375
383
  type DataTableProps<T extends Record<string, any>> = {
384
+ /** آرایه داده‌های جدول */
376
385
  data: T[];
386
+ /** تعریف ستون‌های جدول */
377
387
  columns: MRT_ColumnDef<T>[];
388
+ /** آیا جدول در حال بارگذاری است */
378
389
  isLoading?: boolean;
390
+ /** آیا داده‌ها در حال به‌روزرسانی هستند */
379
391
  isRefetching?: boolean;
392
+ /** وضعیت صفحه‌بندی (مستقیماً از useTableState) */
380
393
  pagination: MRT_PaginationState;
394
+ /** تابع تغییر صفحه‌بندی (setPagination از useTableState) */
381
395
  onPaginationChange: (updater: MRT_PaginationState | ((old: MRT_PaginationState) => MRT_PaginationState)) => void;
396
+ /** تعداد کل رکوردها (از API response) */
382
397
  totalRows: number;
398
+ /** فعال‌سازی صفحه‌بندی دستی (پیش‌فرض: true) */
383
399
  manualPagination?: boolean;
400
+ /** فیلترهای ستون (columnFilters از useTableState) */
384
401
  columnFilters?: MRT_ColumnFiltersState;
402
+ /** تابع تغییر فیلترهای ستون */
385
403
  onColumnFiltersChange?: (filters: MRT_ColumnFiltersState | ((old: MRT_ColumnFiltersState) => MRT_ColumnFiltersState)) => void;
404
+ /** فعال‌سازی فیلترینگ دستی (پیش‌فرض: true) */
386
405
  manualFiltering?: boolean;
406
+ /** تابع پاک کردن فیلترها (clearFilters از useTableState) */
387
407
  onClearFilters?: () => void;
408
+ /** نمایش دکمه پاک کردن فیلترها */
388
409
  showClearFiltersButton?: boolean;
410
+ /** وضعیت مرتب‌سازی (sorting از useTableState) */
389
411
  sorting?: MRT_SortingState;
412
+ /** تابع تغییر مرتب‌سازی (setSorting از useTableState) */
390
413
  onSortingChange?: (sorting: MRT_SortingState | ((old: MRT_SortingState) => MRT_SortingState)) => void;
414
+ /** فعال‌سازی مرتب‌سازی دستی (پیش‌فرض: false) */
391
415
  manualSorting?: boolean;
416
+ /** وضعیت نمایش ستون‌ها (columnVisibility از useTableState) */
417
+ columnVisibility?: Record<string, boolean>;
418
+ /** تابع تغییر نمایش ستون‌ها (setColumnVisibility از useTableState) */
419
+ onColumnVisibilityChange?: (visibility: Record<string, boolean> | ((old: Record<string, boolean>) => Record<string, boolean>)) => void;
420
+ /** ترتیب ستون‌ها */
421
+ columnOrder?: string[];
422
+ /** تابع تغییر ترتیب ستون‌ها */
423
+ onColumnOrderChange?: (order: string[] | ((old: string[]) => string[])) => void;
424
+ /** فعال‌سازی header چسبان */
392
425
  enableStickyHeader?: boolean;
426
+ /** حداکثر ارتفاع جدول */
393
427
  maxHeight?: string;
428
+ /** تراکم جدول */
394
429
  density?: "comfortable" | "compact" | "spacious";
430
+ /** امکان تغییر ترتیب ستون‌ها */
395
431
  enableColumnOrdering?: boolean;
432
+ /** فعال‌سازی جستجوی سراسری */
396
433
  enableGlobalFilter?: boolean;
434
+ /** فعال‌سازی انواع فیلتر ستون */
397
435
  enableColumnFilterModes?: boolean;
436
+ /** فعال‌سازی انتخاب سطر */
398
437
  enableRowSelection?: boolean;
438
+ /** وضعیت نمایش فیلترهای ستون */
439
+ showColumnFilters?: boolean;
440
+ /** تابع تغییر وضعیت نمایش فیلترها */
441
+ onShowColumnFiltersChange?: (updater: boolean | ((old: boolean) => boolean)) => void;
442
+ /** رندر کردن اکشن‌های سفارشی بالای جدول */
399
443
  renderTopToolbarCustomActions?: (props: {
400
444
  table: any;
401
445
  }) => React.ReactNode;
446
+ /** رندر کردن اکشن‌های سفارشی پایین جدول */
402
447
  renderBottomToolbarCustomActions?: (props: {
403
448
  table: any;
404
449
  }) => React.ReactNode;
450
+ /** گزینه‌های اضافی جدول */
405
451
  tableOptions?: Partial<MRT_TableOptions<T>>;
452
+ /** لوکالیزیشن سفارشی */
406
453
  localization?: Record<string, string>;
407
454
  };
408
- declare const DataTable: <T extends Record<string, any>>({ data, columns, isLoading, isRefetching, pagination, onPaginationChange, totalRows, manualPagination, columnFilters, onColumnFiltersChange, manualFiltering, onClearFilters, showClearFiltersButton, sorting, onSortingChange, manualSorting, enableStickyHeader, maxHeight, density, enableColumnOrdering, enableGlobalFilter, enableColumnFilterModes, enableRowSelection, renderTopToolbarCustomActions, renderBottomToolbarCustomActions, tableOptions, localization, }: DataTableProps<T>) => React$1.JSX.Element;
455
+ /**
456
+ * کامپوننت DataTable - جدول پیشرفته با قابلیت‌های کامل
457
+ *
458
+ * این کامپوننت یک wrapper پیشرفته برای Material React Table است که:
459
+ * - مستقیماً با useTableState یکپارچه می‌شود
460
+ * - تمام ویژگی‌های مدرن جدول را پشتیبانی می‌کند
461
+ * - لوکالیزیشن کامل فارسی دارد
462
+ * - بهینه‌سازی شده برای عملکرد بالا
463
+ *
464
+ * ## راهنمای استفاده با useTableState:
465
+ *
466
+ * ### مرحله 1: تنظیم useTableState
467
+ * ```tsx
468
+ * const tableState = useTableState("my-table", {
469
+ * initialPageSize: 25,
470
+ * debounceTime: 500,
471
+ * sortMapping: {
472
+ * name: "NameOrdering",
473
+ * status: "StatusOrdering"
474
+ * }
475
+ * });
476
+ * ```
477
+ *
478
+ * ### مرحله 2: فراخوانی API
479
+ * ```tsx
480
+ * const { data } = useGetData({
481
+ * PageNumber: tableState.pagination.pageIndex + 1,
482
+ * PageSize: tableState.pagination.pageSize,
483
+ * ...tableState.debouncedFiltring,
484
+ * ...tableState.mappedSorting,
485
+ * });
486
+ * ```
487
+ *
488
+ * ### مرحله 3: تعریف ستون‌ها با فیلتر
489
+ * ```tsx
490
+ * const columns = useMemo<MRT_ColumnDef<DataType>[]>(() => [
491
+ * {
492
+ * accessorKey: "name",
493
+ * header: "نام",
494
+ * Filter: ({ column }) => (
495
+ * <FormInputText
496
+ * control={control}
497
+ * name="NameFiltering"
498
+ * placeholder="فیلتر نام"
499
+ * />
500
+ * ),
501
+ * },
502
+ * // سایر ستون‌ها...
503
+ * ], [control]);
504
+ * ```
505
+ *
506
+ * ### مرحله 4: رندر DataTable
507
+ * ```tsx
508
+ * return (
509
+ * <DataTable
510
+ * data={data?.items || []}
511
+ * columns={columns}
512
+ * isLoading={isLoading}
513
+ * pagination={tableState.pagination}
514
+ * onPaginationChange={tableState.setPagination}
515
+ * totalRows={data?.totalRecords || 0}
516
+ * sorting={tableState.sorting}
517
+ * onSortingChange={tableState.setSorting}
518
+ * columnVisibility={tableState.columnVisibility}
519
+ * onColumnVisibilityChange={tableState.setColumnVisibility}
520
+ * showColumnFilters={showFilters}
521
+ * onShowColumnFiltersChange={setShowFilters}
522
+ * onClearFilters={handleClearFilters}
523
+ * manualSorting={true}
524
+ * />
525
+ * );
526
+ * ```
527
+ *
528
+ * ## ویژگی‌های کلیدی:
529
+ *
530
+ * 📄 **صفحه‌بندی هوشمند**: صفحه‌بندی سمت سرور با همگام‌سازی خودکار
531
+ * 🔍 **فیلترینگ پیشرفته**: فیلترهای سفارشی با debouncing
532
+ * 🔀 **مرتب‌سازی قدرتمند**: مرتب‌سازی با نگاشت بک‌اند
533
+ * 👁️ **مدیریت ستون‌ها**: نمایش/مخفی کردن ستون‌ها با localStorage
534
+ * 🌍 **لوکالیزیشن**: پشتیبانی کامل از زبان فارسی
535
+ * ⚡ **بهینه‌سازی**: رندرینگ بهینه با useMemo
536
+ * 🎨 **قابل تنظیم**: ظاهر و رفتار کاملاً قابل تنظیم
537
+ *
538
+ * @template T - نوع داده‌های جدول
539
+ *
540
+ * @example
541
+ * ```tsx
542
+ * // مثال کامل استفاده
543
+ * function UsersTable() {
544
+ * const { control, watch, reset } = useForm();
545
+ *
546
+ * const tableState = useTableState<UserFilter>("users-table", {
547
+ * initialPageSize: 50,
548
+ * watch,
549
+ * syncFormToFilters: true,
550
+ * sortMapping: {
551
+ * name: "NameOrdering",
552
+ * email: "EmailOrdering"
553
+ * }
554
+ * });
555
+ *
556
+ * const { data, isLoading } = useGetUsers({
557
+ * PageNumber: tableState.pagination.pageIndex + 1,
558
+ * PageSize: tableState.pagination.pageSize,
559
+ * ...tableState.debouncedFiltring,
560
+ * ...tableState.mappedSorting,
561
+ * });
562
+ *
563
+ * const columns = useMemo(() => [
564
+ * {
565
+ * accessorKey: "name",
566
+ * header: "نام کاربر",
567
+ * Filter: () => (
568
+ * <FormInputText
569
+ * control={control}
570
+ * name="NameFiltering"
571
+ * placeholder="جستجو نام"
572
+ * />
573
+ * ),
574
+ * }
575
+ * ], [control]);
576
+ *
577
+ * return (
578
+ * <DataTable
579
+ * data={data?.users || []}
580
+ * columns={columns}
581
+ * isLoading={isLoading}
582
+ * pagination={tableState.pagination}
583
+ * onPaginationChange={tableState.setPagination}
584
+ * totalRows={data?.totalCount || 0}
585
+ * sorting={tableState.sorting}
586
+ * onSortingChange={tableState.setSorting}
587
+ * columnVisibility={tableState.columnVisibility}
588
+ * onColumnVisibilityChange={tableState.setColumnVisibility}
589
+ * onClearFilters={() => {
590
+ * tableState.clearFilters();
591
+ * reset();
592
+ * }}
593
+ * manualSorting={true}
594
+ * />
595
+ * );
596
+ * }
597
+ * ```
598
+ */
599
+ declare const DataTable: <T extends Record<string, any>>({ data, columns, isLoading, isRefetching, pagination, onPaginationChange, totalRows, manualPagination, columnFilters, onColumnFiltersChange, manualFiltering, onClearFilters, showClearFiltersButton, sorting, onSortingChange, manualSorting, columnVisibility, onColumnVisibilityChange, columnOrder, onColumnOrderChange, enableStickyHeader, maxHeight, density, enableColumnOrdering, enableGlobalFilter, enableColumnFilterModes, enableRowSelection, showColumnFilters, onShowColumnFiltersChange, renderTopToolbarCustomActions, renderBottomToolbarCustomActions, tableOptions, localization, }: DataTableProps<T>) => React$1.JSX.Element;
409
600
 
410
601
  export { Page as Accordion, AdvancedSearchButton, ConfirmationDialog$1 as ConfirmationDialog, ConnectToBasculeButton, CustomCheckbox, CustomTimePicker, DataTable, DateFilter, DateFilterRange, DateMonthPicker, JalaliDatePicker$2 as DatePicker, JalaliDatePicker$1 as DateTimePicker, JalaliDateTimeRangePicker as DateTimeRangePicker, DraggablePaper, UploadImage as EnhancedUploadImage, FormInputNumber, FormInputText, HorizontalStepper, LicensePlate, JalaliDatePicker as MobileDateTimePicker, ConfirmationDialog as Modal, NestedSelect as NestedSelectort, NoResult, PaginationList, PatternTextField, RadioButton, SearchLicensePlate, MultipleSelectChip as Selector, SkeletonCard, SonarSpinner, SwitchButton, Table, UploadImage$1 as UploadImage };
package/dist/index.js CHANGED
@@ -4815,6 +4815,10 @@ var DataTable = ({
4815
4815
  sorting = [],
4816
4816
  onSortingChange,
4817
4817
  manualSorting = false,
4818
+ columnVisibility = {},
4819
+ onColumnVisibilityChange,
4820
+ columnOrder = [],
4821
+ onColumnOrderChange,
4818
4822
  enableStickyHeader = true,
4819
4823
  maxHeight = "calc(100vh - 200px)",
4820
4824
  density = "compact",
@@ -4822,6 +4826,8 @@ var DataTable = ({
4822
4826
  enableGlobalFilter = false,
4823
4827
  enableColumnFilterModes = false,
4824
4828
  enableRowSelection = false,
4829
+ showColumnFilters,
4830
+ onShowColumnFiltersChange,
4825
4831
  renderTopToolbarCustomActions,
4826
4832
  renderBottomToolbarCustomActions,
4827
4833
  tableOptions = {},
@@ -4830,8 +4836,8 @@ var DataTable = ({
4830
4836
  const memoizedColumns = (0, import_react32.useMemo)(() => columns, [columns]);
4831
4837
  const memoizedData = (0, import_react32.useMemo)(() => data, [data]);
4832
4838
  const defaultRenderTopToolbarCustomActions = ({ table: table2 }) => {
4833
- const showFilters = table2.getState().showColumnFilters;
4834
- if (!showFilters || !showClearFiltersButton || !onClearFilters) return null;
4839
+ const currentShowFilters = showColumnFilters !== void 0 ? showColumnFilters : table2.getState().showColumnFilters;
4840
+ if (!currentShowFilters || !showClearFiltersButton || !onClearFilters) return null;
4835
4841
  return /* @__PURE__ */ React.createElement(import_material30.Box, { sx: { width: "100%" } }, /* @__PURE__ */ React.createElement(
4836
4842
  import_material30.Box,
4837
4843
  {
@@ -4854,32 +4860,39 @@ var DataTable = ({
4854
4860
  columns: memoizedColumns,
4855
4861
  data: memoizedData,
4856
4862
  localization,
4857
- // Pagination
4863
+ // === صفحه‌بندی ===
4858
4864
  manualPagination,
4859
4865
  onPaginationChange,
4860
4866
  pageCount: manualPagination ? Math.ceil(totalRows / pagination.pageSize) : void 0,
4861
4867
  rowCount: totalRows ?? 0,
4862
- // Filtering
4868
+ // === فیلترینگ ===
4863
4869
  manualFiltering,
4864
4870
  onColumnFiltersChange,
4865
4871
  enableColumnFilterModes,
4866
4872
  enableGlobalFilter,
4867
- // Sorting
4873
+ // === مرتب‌سازی ===
4868
4874
  manualSorting,
4869
4875
  onSortingChange,
4870
- // Features
4876
+ // === ویژگی‌ها ===
4871
4877
  enableColumnOrdering,
4872
4878
  enableRowSelection,
4873
4879
  enableStickyHeader,
4874
- // State
4880
+ // === وضعیت جدول ===
4875
4881
  state: {
4876
4882
  pagination,
4877
- columnFilters,
4883
+ // columnFilters, // غیرفعال شده - فیلترها از طریق useTableState مدیریت می‌شوند
4878
4884
  sorting,
4885
+ columnVisibility,
4886
+ ...showColumnFilters !== void 0 && { showColumnFilters },
4887
+ ...columnOrder && Array.isArray(columnOrder) && columnOrder.length > 0 && { columnOrder },
4879
4888
  isLoading,
4880
4889
  showProgressBars: isRefetching
4881
4890
  },
4882
- // Styling
4891
+ // === Event Handlers ===
4892
+ onColumnVisibilityChange,
4893
+ ...onShowColumnFiltersChange && { onShowColumnFiltersChange },
4894
+ ...onColumnOrderChange && { onColumnOrderChange },
4895
+ // === استایل‌دهی ===
4883
4896
  muiTablePaperProps: { sx: { direction: "ltr" } },
4884
4897
  muiTableBodyCellProps: { sx: { textAlign: "center" } },
4885
4898
  muiTableHeadCellProps: {
@@ -4895,14 +4908,14 @@ var DataTable = ({
4895
4908
  maxHeight
4896
4909
  }
4897
4910
  },
4898
- // Initial state
4911
+ // === حالت اولیه ===
4899
4912
  initialState: {
4900
4913
  density
4901
4914
  },
4902
- // Custom toolbars
4915
+ // === تولبارهای سفارشی ===
4903
4916
  renderTopToolbarCustomActions: renderTopToolbarCustomActions || defaultRenderTopToolbarCustomActions,
4904
4917
  renderBottomToolbarCustomActions,
4905
- // Override with any additional options
4918
+ // 🔧 اعمال تنظیمات اضافی
4906
4919
  ...tableOptions
4907
4920
  });
4908
4921
  return /* @__PURE__ */ React.createElement(import_material_react_table.MaterialReactTable, { table });