@mamrp/components 1.4.3 → 1.4.4
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 +186 -1
- package/dist/index.d.ts +186 -1
- package/dist/index.js +19 -10
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +19 -10
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -372,39 +372,224 @@ 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
|
+
/** رندر کردن اکشنهای سفارشی بالای جدول */
|
|
399
439
|
renderTopToolbarCustomActions?: (props: {
|
|
400
440
|
table: any;
|
|
401
441
|
}) => React.ReactNode;
|
|
442
|
+
/** رندر کردن اکشنهای سفارشی پایین جدول */
|
|
402
443
|
renderBottomToolbarCustomActions?: (props: {
|
|
403
444
|
table: any;
|
|
404
445
|
}) => React.ReactNode;
|
|
446
|
+
/** گزینههای اضافی جدول */
|
|
405
447
|
tableOptions?: Partial<MRT_TableOptions<T>>;
|
|
448
|
+
/** لوکالیزیشن سفارشی */
|
|
406
449
|
localization?: Record<string, string>;
|
|
407
450
|
};
|
|
408
|
-
|
|
451
|
+
/**
|
|
452
|
+
* کامپوننت DataTable - جدول پیشرفته با قابلیتهای کامل
|
|
453
|
+
*
|
|
454
|
+
* این کامپوننت یک wrapper پیشرفته برای Material React Table است که:
|
|
455
|
+
* - مستقیماً با useTableState یکپارچه میشود
|
|
456
|
+
* - تمام ویژگیهای مدرن جدول را پشتیبانی میکند
|
|
457
|
+
* - لوکالیزیشن کامل فارسی دارد
|
|
458
|
+
* - بهینهسازی شده برای عملکرد بالا
|
|
459
|
+
*
|
|
460
|
+
* ## راهنمای استفاده با useTableState:
|
|
461
|
+
*
|
|
462
|
+
* ### مرحله 1: تنظیم useTableState
|
|
463
|
+
* ```tsx
|
|
464
|
+
* const tableState = useTableState("my-table", {
|
|
465
|
+
* initialPageSize: 25,
|
|
466
|
+
* debounceTime: 500,
|
|
467
|
+
* sortMapping: {
|
|
468
|
+
* name: "NameOrdering",
|
|
469
|
+
* status: "StatusOrdering"
|
|
470
|
+
* }
|
|
471
|
+
* });
|
|
472
|
+
* ```
|
|
473
|
+
*
|
|
474
|
+
* ### مرحله 2: فراخوانی API
|
|
475
|
+
* ```tsx
|
|
476
|
+
* const { data } = useGetData({
|
|
477
|
+
* PageNumber: tableState.pagination.pageIndex + 1,
|
|
478
|
+
* PageSize: tableState.pagination.pageSize,
|
|
479
|
+
* ...tableState.debouncedFiltring,
|
|
480
|
+
* ...tableState.mappedSorting,
|
|
481
|
+
* });
|
|
482
|
+
* ```
|
|
483
|
+
*
|
|
484
|
+
* ### مرحله 3: تعریف ستونها با فیلتر
|
|
485
|
+
* ```tsx
|
|
486
|
+
* const columns = useMemo<MRT_ColumnDef<DataType>[]>(() => [
|
|
487
|
+
* {
|
|
488
|
+
* accessorKey: "name",
|
|
489
|
+
* header: "نام",
|
|
490
|
+
* Filter: ({ column }) => (
|
|
491
|
+
* <FormInputText
|
|
492
|
+
* control={control}
|
|
493
|
+
* name="NameFiltering"
|
|
494
|
+
* placeholder="فیلتر نام"
|
|
495
|
+
* />
|
|
496
|
+
* ),
|
|
497
|
+
* },
|
|
498
|
+
* // سایر ستونها...
|
|
499
|
+
* ], [control]);
|
|
500
|
+
* ```
|
|
501
|
+
*
|
|
502
|
+
* ### مرحله 4: رندر DataTable
|
|
503
|
+
* ```tsx
|
|
504
|
+
* return (
|
|
505
|
+
* <DataTable
|
|
506
|
+
* data={data?.items || []}
|
|
507
|
+
* columns={columns}
|
|
508
|
+
* isLoading={isLoading}
|
|
509
|
+
* pagination={tableState.pagination}
|
|
510
|
+
* onPaginationChange={tableState.setPagination}
|
|
511
|
+
* totalRows={data?.totalRecords || 0}
|
|
512
|
+
* sorting={tableState.sorting}
|
|
513
|
+
* onSortingChange={tableState.setSorting}
|
|
514
|
+
* columnVisibility={tableState.columnVisibility}
|
|
515
|
+
* onColumnVisibilityChange={tableState.setColumnVisibility}
|
|
516
|
+
* onClearFilters={handleClearFilters}
|
|
517
|
+
* manualSorting={true}
|
|
518
|
+
* />
|
|
519
|
+
* );
|
|
520
|
+
* ```
|
|
521
|
+
*
|
|
522
|
+
* ## ویژگیهای کلیدی:
|
|
523
|
+
*
|
|
524
|
+
* 📄 **صفحهبندی هوشمند**: صفحهبندی سمت سرور با همگامسازی خودکار
|
|
525
|
+
* 🔍 **فیلترینگ پیشرفته**: فیلترهای سفارشی با debouncing
|
|
526
|
+
* 🔀 **مرتبسازی قدرتمند**: مرتبسازی با نگاشت بکاند
|
|
527
|
+
* 👁️ **مدیریت ستونها**: نمایش/مخفی کردن ستونها با localStorage
|
|
528
|
+
* 🌍 **لوکالیزیشن**: پشتیبانی کامل از زبان فارسی
|
|
529
|
+
* ⚡ **بهینهسازی**: رندرینگ بهینه با useMemo
|
|
530
|
+
* 🎨 **قابل تنظیم**: ظاهر و رفتار کاملاً قابل تنظیم
|
|
531
|
+
*
|
|
532
|
+
* @template T - نوع دادههای جدول
|
|
533
|
+
*
|
|
534
|
+
* @example
|
|
535
|
+
* ```tsx
|
|
536
|
+
* // مثال کامل استفاده
|
|
537
|
+
* function UsersTable() {
|
|
538
|
+
* const { control, watch, reset } = useForm();
|
|
539
|
+
*
|
|
540
|
+
* const tableState = useTableState<UserFilter>("users-table", {
|
|
541
|
+
* initialPageSize: 50,
|
|
542
|
+
* watch,
|
|
543
|
+
* syncFormToFilters: true,
|
|
544
|
+
* sortMapping: {
|
|
545
|
+
* name: "NameOrdering",
|
|
546
|
+
* email: "EmailOrdering"
|
|
547
|
+
* }
|
|
548
|
+
* });
|
|
549
|
+
*
|
|
550
|
+
* const { data, isLoading } = useGetUsers({
|
|
551
|
+
* PageNumber: tableState.pagination.pageIndex + 1,
|
|
552
|
+
* PageSize: tableState.pagination.pageSize,
|
|
553
|
+
* ...tableState.debouncedFiltring,
|
|
554
|
+
* ...tableState.mappedSorting,
|
|
555
|
+
* });
|
|
556
|
+
*
|
|
557
|
+
* const columns = useMemo(() => [
|
|
558
|
+
* {
|
|
559
|
+
* accessorKey: "name",
|
|
560
|
+
* header: "نام کاربر",
|
|
561
|
+
* Filter: () => (
|
|
562
|
+
* <FormInputText
|
|
563
|
+
* control={control}
|
|
564
|
+
* name="NameFiltering"
|
|
565
|
+
* placeholder="جستجو نام"
|
|
566
|
+
* />
|
|
567
|
+
* ),
|
|
568
|
+
* }
|
|
569
|
+
* ], [control]);
|
|
570
|
+
*
|
|
571
|
+
* return (
|
|
572
|
+
* <DataTable
|
|
573
|
+
* data={data?.users || []}
|
|
574
|
+
* columns={columns}
|
|
575
|
+
* isLoading={isLoading}
|
|
576
|
+
* pagination={tableState.pagination}
|
|
577
|
+
* onPaginationChange={tableState.setPagination}
|
|
578
|
+
* totalRows={data?.totalCount || 0}
|
|
579
|
+
* sorting={tableState.sorting}
|
|
580
|
+
* onSortingChange={tableState.setSorting}
|
|
581
|
+
* columnVisibility={tableState.columnVisibility}
|
|
582
|
+
* onColumnVisibilityChange={tableState.setColumnVisibility}
|
|
583
|
+
* onClearFilters={() => {
|
|
584
|
+
* tableState.clearFilters();
|
|
585
|
+
* reset();
|
|
586
|
+
* }}
|
|
587
|
+
* manualSorting={true}
|
|
588
|
+
* />
|
|
589
|
+
* );
|
|
590
|
+
* }
|
|
591
|
+
* ```
|
|
592
|
+
*/
|
|
593
|
+
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, renderTopToolbarCustomActions, renderBottomToolbarCustomActions, tableOptions, localization, }: DataTableProps<T>) => React$1.JSX.Element;
|
|
409
594
|
|
|
410
595
|
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,224 @@ 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
|
+
/** رندر کردن اکشنهای سفارشی بالای جدول */
|
|
399
439
|
renderTopToolbarCustomActions?: (props: {
|
|
400
440
|
table: any;
|
|
401
441
|
}) => React.ReactNode;
|
|
442
|
+
/** رندر کردن اکشنهای سفارشی پایین جدول */
|
|
402
443
|
renderBottomToolbarCustomActions?: (props: {
|
|
403
444
|
table: any;
|
|
404
445
|
}) => React.ReactNode;
|
|
446
|
+
/** گزینههای اضافی جدول */
|
|
405
447
|
tableOptions?: Partial<MRT_TableOptions<T>>;
|
|
448
|
+
/** لوکالیزیشن سفارشی */
|
|
406
449
|
localization?: Record<string, string>;
|
|
407
450
|
};
|
|
408
|
-
|
|
451
|
+
/**
|
|
452
|
+
* کامپوننت DataTable - جدول پیشرفته با قابلیتهای کامل
|
|
453
|
+
*
|
|
454
|
+
* این کامپوننت یک wrapper پیشرفته برای Material React Table است که:
|
|
455
|
+
* - مستقیماً با useTableState یکپارچه میشود
|
|
456
|
+
* - تمام ویژگیهای مدرن جدول را پشتیبانی میکند
|
|
457
|
+
* - لوکالیزیشن کامل فارسی دارد
|
|
458
|
+
* - بهینهسازی شده برای عملکرد بالا
|
|
459
|
+
*
|
|
460
|
+
* ## راهنمای استفاده با useTableState:
|
|
461
|
+
*
|
|
462
|
+
* ### مرحله 1: تنظیم useTableState
|
|
463
|
+
* ```tsx
|
|
464
|
+
* const tableState = useTableState("my-table", {
|
|
465
|
+
* initialPageSize: 25,
|
|
466
|
+
* debounceTime: 500,
|
|
467
|
+
* sortMapping: {
|
|
468
|
+
* name: "NameOrdering",
|
|
469
|
+
* status: "StatusOrdering"
|
|
470
|
+
* }
|
|
471
|
+
* });
|
|
472
|
+
* ```
|
|
473
|
+
*
|
|
474
|
+
* ### مرحله 2: فراخوانی API
|
|
475
|
+
* ```tsx
|
|
476
|
+
* const { data } = useGetData({
|
|
477
|
+
* PageNumber: tableState.pagination.pageIndex + 1,
|
|
478
|
+
* PageSize: tableState.pagination.pageSize,
|
|
479
|
+
* ...tableState.debouncedFiltring,
|
|
480
|
+
* ...tableState.mappedSorting,
|
|
481
|
+
* });
|
|
482
|
+
* ```
|
|
483
|
+
*
|
|
484
|
+
* ### مرحله 3: تعریف ستونها با فیلتر
|
|
485
|
+
* ```tsx
|
|
486
|
+
* const columns = useMemo<MRT_ColumnDef<DataType>[]>(() => [
|
|
487
|
+
* {
|
|
488
|
+
* accessorKey: "name",
|
|
489
|
+
* header: "نام",
|
|
490
|
+
* Filter: ({ column }) => (
|
|
491
|
+
* <FormInputText
|
|
492
|
+
* control={control}
|
|
493
|
+
* name="NameFiltering"
|
|
494
|
+
* placeholder="فیلتر نام"
|
|
495
|
+
* />
|
|
496
|
+
* ),
|
|
497
|
+
* },
|
|
498
|
+
* // سایر ستونها...
|
|
499
|
+
* ], [control]);
|
|
500
|
+
* ```
|
|
501
|
+
*
|
|
502
|
+
* ### مرحله 4: رندر DataTable
|
|
503
|
+
* ```tsx
|
|
504
|
+
* return (
|
|
505
|
+
* <DataTable
|
|
506
|
+
* data={data?.items || []}
|
|
507
|
+
* columns={columns}
|
|
508
|
+
* isLoading={isLoading}
|
|
509
|
+
* pagination={tableState.pagination}
|
|
510
|
+
* onPaginationChange={tableState.setPagination}
|
|
511
|
+
* totalRows={data?.totalRecords || 0}
|
|
512
|
+
* sorting={tableState.sorting}
|
|
513
|
+
* onSortingChange={tableState.setSorting}
|
|
514
|
+
* columnVisibility={tableState.columnVisibility}
|
|
515
|
+
* onColumnVisibilityChange={tableState.setColumnVisibility}
|
|
516
|
+
* onClearFilters={handleClearFilters}
|
|
517
|
+
* manualSorting={true}
|
|
518
|
+
* />
|
|
519
|
+
* );
|
|
520
|
+
* ```
|
|
521
|
+
*
|
|
522
|
+
* ## ویژگیهای کلیدی:
|
|
523
|
+
*
|
|
524
|
+
* 📄 **صفحهبندی هوشمند**: صفحهبندی سمت سرور با همگامسازی خودکار
|
|
525
|
+
* 🔍 **فیلترینگ پیشرفته**: فیلترهای سفارشی با debouncing
|
|
526
|
+
* 🔀 **مرتبسازی قدرتمند**: مرتبسازی با نگاشت بکاند
|
|
527
|
+
* 👁️ **مدیریت ستونها**: نمایش/مخفی کردن ستونها با localStorage
|
|
528
|
+
* 🌍 **لوکالیزیشن**: پشتیبانی کامل از زبان فارسی
|
|
529
|
+
* ⚡ **بهینهسازی**: رندرینگ بهینه با useMemo
|
|
530
|
+
* 🎨 **قابل تنظیم**: ظاهر و رفتار کاملاً قابل تنظیم
|
|
531
|
+
*
|
|
532
|
+
* @template T - نوع دادههای جدول
|
|
533
|
+
*
|
|
534
|
+
* @example
|
|
535
|
+
* ```tsx
|
|
536
|
+
* // مثال کامل استفاده
|
|
537
|
+
* function UsersTable() {
|
|
538
|
+
* const { control, watch, reset } = useForm();
|
|
539
|
+
*
|
|
540
|
+
* const tableState = useTableState<UserFilter>("users-table", {
|
|
541
|
+
* initialPageSize: 50,
|
|
542
|
+
* watch,
|
|
543
|
+
* syncFormToFilters: true,
|
|
544
|
+
* sortMapping: {
|
|
545
|
+
* name: "NameOrdering",
|
|
546
|
+
* email: "EmailOrdering"
|
|
547
|
+
* }
|
|
548
|
+
* });
|
|
549
|
+
*
|
|
550
|
+
* const { data, isLoading } = useGetUsers({
|
|
551
|
+
* PageNumber: tableState.pagination.pageIndex + 1,
|
|
552
|
+
* PageSize: tableState.pagination.pageSize,
|
|
553
|
+
* ...tableState.debouncedFiltring,
|
|
554
|
+
* ...tableState.mappedSorting,
|
|
555
|
+
* });
|
|
556
|
+
*
|
|
557
|
+
* const columns = useMemo(() => [
|
|
558
|
+
* {
|
|
559
|
+
* accessorKey: "name",
|
|
560
|
+
* header: "نام کاربر",
|
|
561
|
+
* Filter: () => (
|
|
562
|
+
* <FormInputText
|
|
563
|
+
* control={control}
|
|
564
|
+
* name="NameFiltering"
|
|
565
|
+
* placeholder="جستجو نام"
|
|
566
|
+
* />
|
|
567
|
+
* ),
|
|
568
|
+
* }
|
|
569
|
+
* ], [control]);
|
|
570
|
+
*
|
|
571
|
+
* return (
|
|
572
|
+
* <DataTable
|
|
573
|
+
* data={data?.users || []}
|
|
574
|
+
* columns={columns}
|
|
575
|
+
* isLoading={isLoading}
|
|
576
|
+
* pagination={tableState.pagination}
|
|
577
|
+
* onPaginationChange={tableState.setPagination}
|
|
578
|
+
* totalRows={data?.totalCount || 0}
|
|
579
|
+
* sorting={tableState.sorting}
|
|
580
|
+
* onSortingChange={tableState.setSorting}
|
|
581
|
+
* columnVisibility={tableState.columnVisibility}
|
|
582
|
+
* onColumnVisibilityChange={tableState.setColumnVisibility}
|
|
583
|
+
* onClearFilters={() => {
|
|
584
|
+
* tableState.clearFilters();
|
|
585
|
+
* reset();
|
|
586
|
+
* }}
|
|
587
|
+
* manualSorting={true}
|
|
588
|
+
* />
|
|
589
|
+
* );
|
|
590
|
+
* }
|
|
591
|
+
* ```
|
|
592
|
+
*/
|
|
593
|
+
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, renderTopToolbarCustomActions, renderBottomToolbarCustomActions, tableOptions, localization, }: DataTableProps<T>) => React$1.JSX.Element;
|
|
409
594
|
|
|
410
595
|
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",
|
|
@@ -4854,32 +4858,37 @@ var DataTable = ({
|
|
|
4854
4858
|
columns: memoizedColumns,
|
|
4855
4859
|
data: memoizedData,
|
|
4856
4860
|
localization,
|
|
4857
|
-
//
|
|
4861
|
+
// === صفحهبندی ===
|
|
4858
4862
|
manualPagination,
|
|
4859
4863
|
onPaginationChange,
|
|
4860
4864
|
pageCount: manualPagination ? Math.ceil(totalRows / pagination.pageSize) : void 0,
|
|
4861
4865
|
rowCount: totalRows ?? 0,
|
|
4862
|
-
//
|
|
4866
|
+
// === فیلترینگ ===
|
|
4863
4867
|
manualFiltering,
|
|
4864
4868
|
onColumnFiltersChange,
|
|
4865
4869
|
enableColumnFilterModes,
|
|
4866
4870
|
enableGlobalFilter,
|
|
4867
|
-
//
|
|
4871
|
+
// === مرتبسازی ===
|
|
4868
4872
|
manualSorting,
|
|
4869
4873
|
onSortingChange,
|
|
4870
|
-
//
|
|
4874
|
+
// === ویژگیها ===
|
|
4871
4875
|
enableColumnOrdering,
|
|
4872
4876
|
enableRowSelection,
|
|
4873
4877
|
enableStickyHeader,
|
|
4874
|
-
//
|
|
4878
|
+
// === وضعیت جدول ===
|
|
4875
4879
|
state: {
|
|
4876
4880
|
pagination,
|
|
4877
|
-
columnFilters,
|
|
4881
|
+
// columnFilters, // غیرفعال شده - فیلترها از طریق useTableState مدیریت میشوند
|
|
4878
4882
|
sorting,
|
|
4883
|
+
columnVisibility,
|
|
4884
|
+
...columnOrder && Array.isArray(columnOrder) && columnOrder.length > 0 && { columnOrder },
|
|
4879
4885
|
isLoading,
|
|
4880
4886
|
showProgressBars: isRefetching
|
|
4881
4887
|
},
|
|
4882
|
-
//
|
|
4888
|
+
// === Event Handlers ===
|
|
4889
|
+
onColumnVisibilityChange,
|
|
4890
|
+
...onColumnOrderChange && { onColumnOrderChange },
|
|
4891
|
+
// === استایلدهی ===
|
|
4883
4892
|
muiTablePaperProps: { sx: { direction: "ltr" } },
|
|
4884
4893
|
muiTableBodyCellProps: { sx: { textAlign: "center" } },
|
|
4885
4894
|
muiTableHeadCellProps: {
|
|
@@ -4895,14 +4904,14 @@ var DataTable = ({
|
|
|
4895
4904
|
maxHeight
|
|
4896
4905
|
}
|
|
4897
4906
|
},
|
|
4898
|
-
//
|
|
4907
|
+
// === حالت اولیه ===
|
|
4899
4908
|
initialState: {
|
|
4900
4909
|
density
|
|
4901
4910
|
},
|
|
4902
|
-
//
|
|
4911
|
+
// === تولبارهای سفارشی ===
|
|
4903
4912
|
renderTopToolbarCustomActions: renderTopToolbarCustomActions || defaultRenderTopToolbarCustomActions,
|
|
4904
4913
|
renderBottomToolbarCustomActions,
|
|
4905
|
-
//
|
|
4914
|
+
// 🔧 اعمال تنظیمات اضافی
|
|
4906
4915
|
...tableOptions
|
|
4907
4916
|
});
|
|
4908
4917
|
return /* @__PURE__ */ React.createElement(import_material_react_table.MaterialReactTable, { table });
|