Table
این کامپوننتهای جدول (x-table, x-table-header, x-table-column) مبتنی بر Laravel Livewire طراحی شدهاند و برای نمایش دادههای جدولی با امکانات پیشرفته در صفحات Blade به کار میروند. با استفاده از Livewire، قابلیتهایی مانند مرتبسازی، جستجو و صفحهبندی به صورت تعاملی و بدون نیاز به رفرش صفحه فراهم میشود.
ویژگیها
- پشتیبانی از صفحهبندی (pagination) و تعیین تعداد آیتم در هر صفحه (
perPage) - امکان مرتبسازی (sort) بر اساس هر ستون (با تعیین
sortable) - قابلیت جستجو در ستونهای مشخص (با تعیین
searchable) - پشتیبانی از ادغام ستونها (merge) و نمایش چندین مقدار در یک سلول
- امکان نمایش بج (Badge) برای مقادیر خاص هر ستون (با
badgeMap) - امکان فعالسازی چک باکس برای هر سطر از جدول و دریافت مقادیر انتخاب شده
- شخصیسازی کلاس CSS برای هدر و بدنه هر ستون
- قابلیت تعیین اسلات سفارشی برای هدر جدول
- امکان پردازش و تغییر دادههای هر ردیف با استفاده از Closure (
modifierClosure) - کاملاً واکنشگرا و قابل استفاده در هر جای قالب Blade
ورودیهای کامپوننت
x-table
| نام پراپ | نوع داده | مقدار پیشفرض | توضیحات |
|---|---|---|---|
id | string | اجباری | شناسه یکتا برای جدول |
dataSource | callable | string | اجباری | منبع داده جدول؛ میتواند نام کلاس مدل، کوئری SQL یا Closure/کالبل بازگرداننده Query Builder باشد |
dataSourceCallback | Closure | string | null | تابع تکمیلی برای سفارشیسازی Query Builder (امضای function (Builder $query, array $parameters): Builder) |
perPage | int | 5 | تعداد آیتم در هر صفحه |
containerClass | string | null | کلاس CSS اضافی برای ظرف جدول |
headerSlot | string | null | اسلات سفارشی برای هدر جدول |
defaultSortField | string | null | نام ستون پیشفرض برای مرتبسازی |
defaultSortDirection | string | null | جهت پیشفرض مرتبسازی (asc یا desc) |
modifierClosure | Closure | null | تابع پردازش هر ردیف (باید دقیقا یک آرایه بگیرد و آرایه برگرداند) |
parameters | array | [] | مقادیر ورودی برای فیلتر کردن دادهها که به dataSourceCallback و متدهای کمکی jQuery پاس داده میشود |
showRecordCount | boolean | false | نمایش تعداد کل رکوردها در پایین جدول |
showIndex | boolean | false | نمایش شمارنده ردیف در ابتدای هر سطر |
selectable | boolean | false | فعال شدن حالت چک باکسی برای جدول |
selectionField | string | null | نام فیلدی که در مقادیر آن به عنوان مقدار چک باکس هر سطر انتخاب میشود |
selectedValues | array | [] | آرایهای از مقادیر انتخابشده از selectionField که در لود اولیه چک شده باشند |
selectionFilterComponent | string | null | سلکتور المان مورد نظر برای فیلتر کردن موارد انتخاب شده (switch-input) |
align | string | null | جهت چیدمان کلی جدول (left, right, center) |
x-table-header
| نام پراپ | نوع داده | مقدار پیشفرض | توضیحات |
|---|---|---|---|
rowSpan | int | 1 | تعداد ردیفهایی که هدر ادغام میشود |
colSpan | int | 1 | تعداد ستونهایی که هدر ادغام میشود |
level | int | 1 | سطح هدر (برای هدرهای چندسطحی) |
label | string | '' | عنوان هدر |
name | string | null | نام ستون (برای مرتبسازی) |
sortColumn | string | null | نام ستون برای مرتبسازی |
class | string | '' | کلاس CSS برای هدر |
width | string | null | عرض ستون |
x-table-column
| نام پراپ | نوع داده | مقدار پیشفرض | توضیحات |
|---|---|---|---|
name | string | اجباری | نام کلید داده (برای مقداردهی سلول) |
label | string | اجباری | عنوان ستون |
searchable | bool | false | فعالسازی جستجو در این ستون |
sortable | bool | false | فعالسازی مرتبسازی این ستون |
headerClass | string | '' | کلاس CSS برای هدر |
headerTooltip | string | '' | تولتیپ برای هدر |
bodyClass | string | '' | کلاس CSS برای سلول |
bodyTooltip | string | '' | تولتیپ برای سلول |
width | string | null | عرض ستون |
badgeMap | array | [] | نگاشت مقادیر به بج (badge) برای نمایش مقدار خاص با رنگ و متن سفارشی |
theadSeparator | string | '' | جداکننده برای هدر در حالت ادغام |
tbodySeparator | string | '' | جداکننده برای بدنه در حالت ادغام |
mergeWith | string | '' | نام ستونهایی که باید با این ستون ادغام شوند (با کاما جدا شود) |
mergeOrientation | string | 'horizontal' | جهت چیدمان هدر و بدنه برای ستونهای ادغام شده (horizontal, vertical) |
align | string | null | جهت چیدمان ستون (left, right, center) |
slot | string | '' | اسلات سفارشی برای نمایش مقدار سلول (با پشتیبانی از جایگزینی متغیرها) |
groupBreakLine | bool | false | آیا ستون های ادغام شده در خط جدید نمایش داده شوند؟ اگر true باشد، ستون های ادغام شده در خط جدید نمایش داده میشوند. این مورد بر روی نحوه نمایش ستون ها در جدول تاثیر گذار است. ستونی که این مورد را دارد، باعث میشود ستون های بعدی در خط بعد نمایش داده شوند. |
groupBreakLineSection | string | null | در صورتی که میخواهید قابلیت groupBreakLine فقط در header یا body اعمال شود یکی از این دو مقدار را برای آن آن تعیین کنید |
پراپ های align , theadSeparator , tbodySeparator با کلیدهای thead-separator , tbody-separator و align در فایل config قابل تنظیم میباشند.
نکات مهم
- در صورتی که از dropdown-item به همراه confirmation=true استفاده میکنید نیاز است برای کامپوننت dropdown-item اتریبیوت confirmation-id که یک مقدار یکتا(مثلا آیدی سطر)است قرار گیرد.
- پراپ
modifierClosureباید یک Closure با دقیقا یک پارامتر (آرایه) و خروجی آرایه باشد. در غیر این صورت خطا رخ میدهد. - اگر منبع داده Query Builder یا Eloquent باشد، به صورت خودکار SQL با Bindings استخراج میشود.
- برای ادغام ستونها، پراپ
mergeWithرا با نام ستونهای هدف (جداشده با کاما) مقداردهی کنید. - برای نمایش بج، پراپ
badgeMapرا به صورت آرایهای از مقدار به آرایهای شاملtext،variantوappearanceمقداردهی کنید. - اگر پراپ
slotمقداردهی شود، مقدار سلول با جایگزینی متغیرهای$row[key]رندر میشود. - امکان تغییر align ملی جدول از طریق کانفیگ برای کامپوننت table وجود دارد