vgdynamictable
v0.1.9
Published
Динамическая таблица с поддержкой: - статических и серверных данных - пагинации - сортировки (одиночной и мультисортировки) - поиска и фильтрации - синхронизации состояния в URL - тем и локализации
Readme
vegas-dynamicTable
Динамическая таблица с поддержкой:
- статических и серверных данных
- пагинации
- сортировки (одиночной и мультисортировки)
- поиска и фильтрации
- синхронизации состояния в URL
- тем и локализации
Основные настройки (DEFAULT_OPTIONS)
search
enabled(boolean) включение модуля поискаdebouncems(number) задержка вводаparam(string) имя query-параметра, по умолчаниюqinputselector(string) селектор поля поиска
filters
enabled(boolean) включение модуля фильтровformselector(string) селектор формы с полями[data-filter-param]debouncems(number) задержка в авто-режимеapplymode('auto' | 'manual') применять сразу или по кнопкеapplybuttonselector(string) селектор кнопки примененияcategoriesendpoint(string) endpoint для загрузки категорий вselectvalidationenabled(boolean) проверка диапазона ценpresetsenabled(boolean) пресеты вlocalStoragepresetsstoragekey(string) ключ хранения пресетов
sortable
enabled(boolean)initialfield(string)initialdir('asc' | 'desc')multi(boolean) мультисортировкаmultiwithshift(boolean) мультисортировка только сShiftfields(string[] | string) whitelist sortable fields bydata-field(['name','price']orname,price)
pagination
enabled,page,perpage,maxvisiblepages,ellipsis,quickjump,perpageoptions
urlstate
enabled(boolean) синхронизация состояния таблицы в URLmode('replace' | 'push') режим обновления historyincludepagination(boolean)includesort(boolean)listenpopstate(boolean) восстановление состояния поBack/Forward
callbacks
oninit(detail, instance)onbeforeload(detail, instance)ondataloaded(detail, instance)onerror(detail, instance)onsortchange(detail, instance)onpagechange(detail, instance)onperpagechange(detail, instance)onsearch(detail, instance)onfilterschange(detail, instance)onreset(detail, instance)onrowdelete(detail, instance)onrowcheck(detail, instance)oncheckall(detail, instance)onselectionchange(detail, instance)
events
enabled(boolean) включить/выключитьCustomEventprefix(string) префикс имени события, по умолчаниюvgdtbubbles(boolean) режим всплытия события
Пример: событие сортировки vgdt:sortchange, загрузки vgdt:dataloaded, ошибки vgdt:error.
Для editable-режима: vgdt:rowdelete, vgdt:rowcheck, vgdt:checkall, vgdt:selectionchange.
Data-атрибуты
Пример таблицы:
<table
data-vg-table
data-request-route="/api/v1/table/filters.php"
data-search-enabled="true"
data-search-inputselector="#table-filters-search"
data-filters-enabled="true"
data-filters-formselector="#table-filters-form"
data-filters-categoriesendpoint="/api/v1/table/categories.php"
data-filters-applymode="manual"
data-filters-presetsenabled="true"
data-urlstate-enabled="true"
data-sort-multi="true"
data-sort-multi-with-shift="true"
data-sort-fields="name,price,stock"
></table>Per-column override:
<th data-field="price" data-sortable="false">Price</th>Поля формы фильтров:
<input data-filter-param="min_price" />
<input data-filter-param="max_price" />
<select data-filter-param="category_id" data-filter-source="remote-categories"></select>Дополнительные элементы управления:
data-filter-applydata-filter-resetdata-filter-errorsdata-filter-preset-selectdata-filter-preset-savedata-filter-preset-applydata-filter-preset-delete
Пример подписки на события:
const table = document.querySelector('[data-vg-table]');
table.addEventListener('vgdt:dataloaded', (event) => {
console.log('Rows loaded:', event.detail.rows.length);
});
table.addEventListener('vgdt:error', (event) => {
console.error('Load failed:', event.detail.message);
});Backend API
GET /api/v1/table.php
Базовый endpoint таблицы с пагинацией, сортировкой и фильтрами.
GET /api/v1/table/filters.php
Поддерживает параметры:
q,category_id,min_price/price_min,max_price/price_maxstock_min,rating_minpage,per_pagesort,dir
Формат мультисортировки:
sort=name,pricedir=asc,desc
GET /api/v1/table/categories.php
Возвращает активные категории:
data: [{ id, name }]
Формат успешного ответа
data: массив строк таблицыmeta:page,per_page,pages,total,sort,dir,filters,request_id,timestamp_utc
Формат ошибки
error.codeerror.messageerror.detailserror.request_id
Доступность (A11y)
Реализовано:
aria-sortдля сортируемых заголовковaria-liveдля статусов загрузки/пустого результата/ошибкиaria-invalidдля невалидных полей фильтра
