vgapp 1.4.0 → 1.4.2

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.
@@ -1,648 +1,648 @@
1
1
  const DEFAULT_OPTIONS = {
2
- // Режим темы таблицы.
3
- // data-атрибуты: data-theme
4
- theme: 'auto', // auto | light | dark
2
+ // Режим темы таблицы.
3
+ // data-атрибуты: data-theme
4
+ theme: 'auto', // auto | light | dark
5
5
 
6
- // Ключ локали для выбора словаря i18n.
7
- // data-атрибуты: data-locale
8
- locale: 'ru',
6
+ // Ключ локали для выбора словаря i18n.
7
+ // data-атрибуты: data-locale
8
+ locale: 'ru',
9
9
 
10
- // Локализованные словари интерфейса.
11
- // data-атрибуты: нет прямого (обычно задается из JS)
12
- i18n: {
13
- ru: {
14
- pagination: {
15
- // Подпись блока per-page.
16
- // data-атрибуты: data-pagination-per-page-label
17
- perPageLabel: 'Строк на странице',
18
- // Суффикс варианта per-page.
19
- // data-атрибуты: data-pagination-per-page-option-suffix
20
- perPageOptionSuffix: 'на страницу',
21
- // Текст кнопки "назад".
22
- // data-атрибуты: data-pagination-prev-label
23
- prevLabel: 'Назад',
24
- // Текст кнопки "вперед".
25
- // data-атрибуты: data-pagination-next-label
26
- nextLabel: 'Вперед',
27
- // Текст кнопки быстрого перехода.
28
- // data-атрибуты: data-pagination-quick-jump-button-label
29
- quickJumpButtonLabel: 'Перейти',
30
- },
31
- table: {
32
- // Текст состояния загрузки.
33
- // data-атрибуты: data-table-loading-label
34
- loading: 'Загрузка данных...',
35
- // Текст пустого состояния.
36
- // data-атрибуты: data-table-empty-label
37
- empty: 'Нет данных.',
38
- // Текст состояния ошибки.
39
- // data-атрибуты: data-table-error-label
40
- error: 'Не удалось загрузить данные.',
41
- // Текст кнопки повторного запроса при ошибке.
42
- // data-атрибуты: data-table-retry-label
43
- retry: 'Повторить',
44
- // Подсказка для горизонтальной прокрутки таблицы.
45
- // data-атрибуты: data-table-shift-drag-hint
46
- shiftDragHint: 'Зажмите Shift и тяните мышью для прокрутки таблицы.',
47
- },
48
- sortable: {
49
- // Подсказка сортировки по возрастанию.
50
- // data-атрибуты: data-sort-asc-label
51
- ascLabel: 'Сортировка по возрастанию',
52
- // Подсказка сортировки по убыванию.
53
- // data-атрибуты: data-sort-desc-label
54
- descLabel: 'Сортировка по убыванию',
55
- },
56
- summary: {
57
- // Подпись общего количества.
58
- // data-атрибуты: data-summary-found-label
59
- foundLabel: 'Найдено',
60
- // Подпись активного поиска.
61
- // data-атрибуты: data-summary-search-label
62
- searchLabel: 'Поиск',
63
- // Подпись видимых строк.
64
- // data-атрибуты: data-summary-visible-rows-label
65
- visibleRowsLabel: 'Строк на странице',
66
- // Подпись суммы цен.
67
- // data-атрибуты: data-summary-page-price-sum-label
68
- pagePriceSumLabel: 'Сумма цен',
69
- // Подпись суммарного остатка.
70
- // data-атрибуты: data-summary-page-stock-sum-label
71
- pageStockSumLabel: 'Суммарный остаток',
72
- // Подпись среднего рейтинга.
73
- // data-атрибуты: data-summary-page-avg-rating-label
74
- pageAvgRatingLabel: 'Средний рейтинг',
75
- },
76
- },
77
- en: {
78
- pagination: {
79
- perPageLabel: 'Rows per page',
80
- perPageOptionSuffix: 'page',
81
- prevLabel: 'Prev',
82
- nextLabel: 'Next',
83
- quickJumpButtonLabel: 'Go',
84
- },
85
- table: {
86
- loading: 'Loading data...',
87
- empty: 'No data available.',
88
- error: 'Failed to load data.',
89
- retry: 'Retry',
90
- shiftDragHint: 'Hold Shift and drag to scroll the table.',
91
- },
92
- sortable: {
93
- ascLabel: 'Sort ascending',
94
- descLabel: 'Sort descending',
95
- },
96
- summary: {
97
- foundLabel: 'Found',
98
- searchLabel: 'Search',
99
- visibleRowsLabel: 'Rows on page',
100
- pagePriceSumLabel: 'Price sum',
101
- pageStockSumLabel: 'Total stock',
102
- pageAvgRatingLabel: 'Average rating',
103
- },
104
- },
105
- },
10
+ // Локализованные словари интерфейса.
11
+ // data-атрибуты: нет прямого (обычно задается из JS)
12
+ i18n: {
13
+ ru: {
14
+ pagination: {
15
+ // Подпись блока per-page.
16
+ // data-атрибуты: data-pagination-per-page-label
17
+ perPageLabel: 'Строк на странице',
18
+ // Суффикс варианта per-page.
19
+ // data-атрибуты: data-pagination-per-page-option-suffix
20
+ perPageOptionSuffix: 'на страницу',
21
+ // Текст кнопки "назад".
22
+ // data-атрибуты: data-pagination-prev-label
23
+ prevLabel: 'Назад',
24
+ // Текст кнопки "вперед".
25
+ // data-атрибуты: data-pagination-next-label
26
+ nextLabel: 'Вперед',
27
+ // Текст кнопки быстрого перехода.
28
+ // data-атрибуты: data-pagination-quick-jump-button-label
29
+ quickJumpButtonLabel: 'Перейти',
30
+ },
31
+ table: {
32
+ // Текст состояния загрузки.
33
+ // data-атрибуты: data-table-loading-label
34
+ loading: 'Загрузка данных...',
35
+ // Текст пустого состояния.
36
+ // data-атрибуты: data-table-empty-label
37
+ empty: 'Нет данных.',
38
+ // Текст состояния ошибки.
39
+ // data-атрибуты: data-table-error-label
40
+ error: 'Не удалось загрузить данные.',
41
+ // Текст кнопки повторного запроса при ошибке.
42
+ // data-атрибуты: data-table-retry-label
43
+ retry: 'Повторить',
44
+ // Подсказка для горизонтальной прокрутки таблицы.
45
+ // data-атрибуты: data-table-shift-drag-hint
46
+ shiftDragHint: 'Зажмите Shift и тяните мышью для прокрутки таблицы.',
47
+ },
48
+ sortable: {
49
+ // Подсказка сортировки по возрастанию.
50
+ // data-атрибуты: data-sort-asc-label
51
+ ascLabel: 'Сортировка по возрастанию',
52
+ // Подсказка сортировки по убыванию.
53
+ // data-атрибуты: data-sort-desc-label
54
+ descLabel: 'Сортировка по убыванию',
55
+ },
56
+ summary: {
57
+ // Подпись общего количества.
58
+ // data-атрибуты: data-summary-found-label
59
+ foundLabel: 'Найдено',
60
+ // Подпись активного поиска.
61
+ // data-атрибуты: data-summary-search-label
62
+ searchLabel: 'Поиск',
63
+ // Подпись видимых строк.
64
+ // data-атрибуты: data-summary-visible-rows-label
65
+ visibleRowsLabel: 'Строк на странице',
66
+ // Подпись суммы цен.
67
+ // data-атрибуты: data-summary-page-price-sum-label
68
+ pagePriceSumLabel: 'Сумма цен',
69
+ // Подпись суммарного остатка.
70
+ // data-атрибуты: data-summary-page-stock-sum-label
71
+ pageStockSumLabel: 'Суммарный остаток',
72
+ // Подпись среднего рейтинга.
73
+ // data-атрибуты: data-summary-page-avg-rating-label
74
+ pageAvgRatingLabel: 'Средний рейтинг',
75
+ },
76
+ },
77
+ en: {
78
+ pagination: {
79
+ perPageLabel: 'Rows per page',
80
+ perPageOptionSuffix: 'page',
81
+ prevLabel: 'Prev',
82
+ nextLabel: 'Next',
83
+ quickJumpButtonLabel: 'Go',
84
+ },
85
+ table: {
86
+ loading: 'Loading data...',
87
+ empty: 'No data available.',
88
+ error: 'Failed to load data.',
89
+ retry: 'Retry',
90
+ shiftDragHint: 'Hold Shift and drag to scroll the table.',
91
+ },
92
+ sortable: {
93
+ ascLabel: 'Sort ascending',
94
+ descLabel: 'Sort descending',
95
+ },
96
+ summary: {
97
+ foundLabel: 'Found',
98
+ searchLabel: 'Search',
99
+ visibleRowsLabel: 'Rows on page',
100
+ pagePriceSumLabel: 'Price sum',
101
+ pageStockSumLabel: 'Total stock',
102
+ pageAvgRatingLabel: 'Average rating',
103
+ },
104
+ },
105
+ },
106
106
 
107
- // Локальный источник строк (без remote API).
108
- // data-атрибуты: нет прямого
109
- data: [],
107
+ // Локальный источник строк (без remote API).
108
+ // data-атрибуты: нет прямого
109
+ data: [],
110
110
 
111
- fixed: {
112
- // data-attributes: data-fixed-columns
113
- columns: '',
114
- },
111
+ fixed: {
112
+ // data-attributes: data-fixed-columns
113
+ columns: '',
114
+ },
115
115
 
116
- views: {
117
- storage: {
118
- // data-attributes: data-views-storage-key
119
- key: '',
120
- },
121
- },
116
+ views: {
117
+ storage: {
118
+ // data-attributes: data-views-storage-key
119
+ key: '',
120
+ },
121
+ },
122
122
 
123
- request: {
124
- // URL endpoint для remote-запросов.
125
- // data-атрибуты: data-request-route
126
- route: '',
127
- // HTTP-метод запроса.
128
- // data-атрибуты: data-request-method
129
- method: 'GET',
130
- // Режим credentials для fetch.
131
- // data-атрибуты: data-request-credentials
132
- credentials: 'same-origin',
133
- // Базовые HTTP-заголовки.
134
- // data-атрибуты: нет прямого
135
- headers: { 'Accept': 'application/json' },
136
- // Базовые query-параметры для каждого запроса.
137
- // data-атрибуты: data-request-params (json)
138
- params: {},
139
- // Маппинг внутренних параметров в backend-имена (например, q -> search).
140
- // data-атрибуты: data-request-parammap
141
- parammap: {},
142
- // Режим чтения ответа: data | view | auto.
143
- // data-атрибуты: data-request-responsemode
144
- responsemode: 'data',
145
- // Dot-path до массива строк в JSON.
146
- // data-атрибуты: data-request-datapath
147
- datapath: 'data',
148
- // Dot-path до meta в JSON.
149
- // data-атрибуты: data-request-metapath
150
- metapath: 'meta',
151
- // Dot-path до server-rendered HTML строк.
152
- // data-атрибуты: data-request-viewpath
153
- viewpath: 'view.tbody',
154
- // Имя параметра для запроса server-rendered view.
155
- // data-атрибуты: data-request-viewparam
156
- viewparam: 'view',
157
- // Значение параметра для server-rendered view.
158
- // data-атрибуты: data-request-viewvalue
159
- viewvalue: 'rows',
160
- // Имя параметра списка полей для view-режима.
161
- // data-атрибуты: data-request-fieldsparam
162
- fieldsparam: 'fields',
163
- cache: {
164
- // data-attributes: data-request-cache-enable
165
- enable: true,
166
- // data-attributes: data-request-cache-ttl
167
- ttl: 30000,
168
- // data-attributes: data-request-cache-max
169
- max: 30,
170
- },
171
- export: {
172
- // data-attributes: data-request-export-route
173
- route: '',
174
- },
175
- },
123
+ request: {
124
+ // URL endpoint для remote-запросов.
125
+ // data-атрибуты: data-request-route
126
+ route: '',
127
+ // HTTP-метод запроса.
128
+ // data-атрибуты: data-request-method
129
+ method: 'GET',
130
+ // Режим credentials для fetch.
131
+ // data-атрибуты: data-request-credentials
132
+ credentials: 'same-origin',
133
+ // Базовые HTTP-заголовки.
134
+ // data-атрибуты: нет прямого
135
+ headers: {'Accept': 'application/json'},
136
+ // Базовые query-параметры для каждого запроса.
137
+ // data-атрибуты: data-request-params (json)
138
+ params: {},
139
+ // Маппинг внутренних параметров в backend-имена (например, q -> search).
140
+ // data-атрибуты: data-request-parammap
141
+ parammap: {},
142
+ // Режим чтения ответа: data | view | auto.
143
+ // data-атрибуты: data-request-responsemode
144
+ responsemode: 'data',
145
+ // Dot-path до массива строк в JSON.
146
+ // data-атрибуты: data-request-datapath
147
+ datapath: 'data',
148
+ // Dot-path до meta в JSON.
149
+ // data-атрибуты: data-request-metapath
150
+ metapath: 'meta',
151
+ // Dot-path до server-rendered HTML строк.
152
+ // data-атрибуты: data-request-viewpath
153
+ viewpath: 'view.tbody',
154
+ // Имя параметра для запроса server-rendered view.
155
+ // data-атрибуты: data-request-viewparam
156
+ viewparam: 'view',
157
+ // Значение параметра для server-rendered view.
158
+ // data-атрибуты: data-request-viewvalue
159
+ viewvalue: 'rows',
160
+ // Имя параметра списка полей для view-режима.
161
+ // data-атрибуты: data-request-fieldsparam
162
+ fieldsparam: 'fields',
163
+ cache: {
164
+ // data-attributes: data-request-cache-enable
165
+ enable: true,
166
+ // data-attributes: data-request-cache-ttl
167
+ ttl: 30000,
168
+ // data-attributes: data-request-cache-max
169
+ max: 30,
170
+ },
171
+ export: {
172
+ // data-attributes: data-request-export-route
173
+ route: '',
174
+ },
175
+ },
176
176
 
177
- pagination: {
178
- // Canonical key for enable flag.
179
- // data-attributes: data-pagination-enable
180
- enable: false,
181
- // Начальная страница.
182
- // data-атрибуты: data-pagination-page
183
- page: 1,
184
- // Начальный per-page.
185
- // data-атрибуты: data-pagination-perPage | data-pagination-per-page
186
- perPage: 10,
187
- // Canonical key for page size.
188
- // data-attributes: data-pagination-per
189
- per: 10,
190
- // Максимально допустимый per-page.
191
- // data-атрибуты: data-pagination-maxPerPage | data-pagination-max-per-page
192
- maxPerPage: 100,
193
- // Canonical key for max page size.
194
- // data-attributes: data-pagination-max
195
- max: 100,
196
- // Сохранять страницу в localStorage.
197
- // data-атрибуты: data-pagination-persist-page
198
- persistPage: true,
199
- // Сохранять per-page в localStorage.
200
- // data-атрибуты: data-pagination-persist-per-page
201
- persistPerPage: true,
202
- persist: {
203
- // data-attributes: data-pagination-persist-page
204
- page: true,
205
- // data-attributes: data-pagination-persist-per
206
- per: true,
207
- },
208
- // Ключ storage для per-page.
209
- // data-атрибуты: data-pagination-storage-key
210
- storageKey: '',
211
- // Ключ storage для page.
212
- // data-атрибуты: data-pagination-page-storage-key
213
- pageStorageKey: '',
214
- storage: {
215
- // data-attributes: data-pagination-storage-key
216
- key: '',
217
- },
218
- pageStorage: {
219
- storage: {
220
- // data-attributes: data-pagination-page-storage-key
221
- key: '',
222
- },
223
- },
224
- // Фиксированное число страниц (опционально).
225
- // data-атрибуты: data-pagination-totalPages | data-pagination-total-pages
226
- totalPages: null,
227
- // Позиция пагинатора.
228
- // data-атрибуты: data-pagination-position
229
- position: 'bottom', // top | bottom | both
230
- // Выравнивание пагинатора.
231
- // data-атрибуты: data-pagination-align
232
- align: 'left', // left | center | right | between
233
- // Режим рендера контролов.
234
- // data-атрибуты: data-pagination-renderMode | data-pagination-render-mode
235
- renderMode: 'auto', // auto | class | markup
236
- // Использовать многоточия.
237
- // data-атрибуты: data-pagination-ellipsis
238
- ellipsis: true,
239
- // Порог появления многоточий.
240
- // data-атрибуты: data-pagination-ellipsisAfter | data-pagination-ellipsis-after
241
- ellipsisAfter: 5,
242
- // Максимум видимых кнопок страниц.
243
- // data-атрибуты: data-pagination-maxVisiblePages | data-pagination-max-visible-pages
244
- maxVisiblePages: 5,
245
- // Показывать контрол per-page.
246
- // data-атрибуты: data-pagination-showPerPage | data-pagination-show-per-page
247
- showPerPage: true,
248
- // Показывать подпись рядом с per-page.
249
- // data-атрибуты: data-pagination-showPerPageLabel | data-pagination-show-per-page-label
250
- showPerPageLabel: false,
251
- // Прокручивать к началу таблицы при смене страницы.
252
- // data-атрибуты: data-pagination-scrollToTop | data-pagination-scroll-to-top
253
- scrollToTop: true,
254
- // Прокручивать страницу к началу окна браузера при смене страницы.
255
- // data-атрибуты: data-pagination-scrollToWindowTop | data-pagination-scroll-to-window-top
256
- scrollToWindowTop: false,
257
- // Режим быстрого перехода.
258
- // data-атрибуты: data-pagination-quickJump | data-pagination-quick-jump
259
- quickJump: false, // auto | true | false
260
- // Подпись кнопки быстрого перехода.
261
- // data-атрибуты: data-pagination-quickJumpButtonLabel | data-pagination-quick-jump-button-label
262
- quickJumpButtonLabel: 'Перейти',
263
- // Доступные варианты per-page.
264
- // data-атрибуты: data-pagination-perPageOptions | data-pagination-per-page-options
265
- perPageOptions: [10, 25, 50, 100],
266
- // Колбек смены страницы.
267
- // data-атрибуты: нет прямого
268
- onChange: null,
269
- // Колбек смены per-page.
270
- // data-атрибуты: нет прямого
271
- onPerPageChange: null,
272
- },
177
+ pagination: {
178
+ // Canonical key for enable flag.
179
+ // data-attributes: data-pagination-enable
180
+ enable: false,
181
+ // Начальная страница.
182
+ // data-атрибуты: data-pagination-page
183
+ page: 1,
184
+ // Начальный per-page.
185
+ // data-атрибуты: data-pagination-perPage | data-pagination-per-page
186
+ perPage: 10,
187
+ // Canonical key for page size.
188
+ // data-attributes: data-pagination-per
189
+ per: 10,
190
+ // Максимально допустимый per-page.
191
+ // data-атрибуты: data-pagination-maxPerPage | data-pagination-max-per-page
192
+ maxPerPage: 100,
193
+ // Canonical key for max page size.
194
+ // data-attributes: data-pagination-max
195
+ max: 100,
196
+ // Сохранять страницу в localStorage.
197
+ // data-атрибуты: data-pagination-persist-page
198
+ persistPage: true,
199
+ // Сохранять per-page в localStorage.
200
+ // data-атрибуты: data-pagination-persist-per-page
201
+ persistPerPage: true,
202
+ persist: {
203
+ // data-attributes: data-pagination-persist-page
204
+ page: true,
205
+ // data-attributes: data-pagination-persist-per
206
+ per: true,
207
+ },
208
+ // Ключ storage для per-page.
209
+ // data-атрибуты: data-pagination-storage-key
210
+ storageKey: '',
211
+ // Ключ storage для page.
212
+ // data-атрибуты: data-pagination-page-storage-key
213
+ pageStorageKey: '',
214
+ storage: {
215
+ // data-attributes: data-pagination-storage-key
216
+ key: '',
217
+ },
218
+ pageStorage: {
219
+ storage: {
220
+ // data-attributes: data-pagination-page-storage-key
221
+ key: '',
222
+ },
223
+ },
224
+ // Фиксированное число страниц (опционально).
225
+ // data-атрибуты: data-pagination-totalPages | data-pagination-total-pages
226
+ totalPages: null,
227
+ // Позиция пагинатора.
228
+ // data-атрибуты: data-pagination-position
229
+ position: 'bottom', // top | bottom | both
230
+ // Выравнивание пагинатора.
231
+ // data-атрибуты: data-pagination-align
232
+ align: 'left', // left | center | right | between
233
+ // Режим рендера контролов.
234
+ // data-атрибуты: data-pagination-renderMode | data-pagination-render-mode
235
+ renderMode: 'auto', // auto | class | markup
236
+ // Использовать многоточия.
237
+ // data-атрибуты: data-pagination-ellipsis
238
+ ellipsis: true,
239
+ // Порог появления многоточий.
240
+ // data-атрибуты: data-pagination-ellipsisAfter | data-pagination-ellipsis-after
241
+ ellipsisAfter: 5,
242
+ // Максимум видимых кнопок страниц.
243
+ // data-атрибуты: data-pagination-maxVisiblePages | data-pagination-max-visible-pages
244
+ maxVisiblePages: 5,
245
+ // Показывать контрол per-page.
246
+ // data-атрибуты: data-pagination-showPerPage | data-pagination-show-per-page
247
+ showPerPage: true,
248
+ // Показывать подпись рядом с per-page.
249
+ // data-атрибуты: data-pagination-showPerPageLabel | data-pagination-show-per-page-label
250
+ showPerPageLabel: false,
251
+ // Прокручивать к началу таблицы при смене страницы.
252
+ // data-атрибуты: data-pagination-scrollToTop | data-pagination-scroll-to-top
253
+ scrollToTop: true,
254
+ // Прокручивать страницу к началу окна браузера при смене страницы.
255
+ // data-атрибуты: data-pagination-scrollToWindowTop | data-pagination-scroll-to-window-top
256
+ scrollToWindowTop: false,
257
+ // Режим быстрого перехода.
258
+ // data-атрибуты: data-pagination-quickJump | data-pagination-quick-jump
259
+ quickJump: false, // auto | true | false
260
+ // Подпись кнопки быстрого перехода.
261
+ // data-атрибуты: data-pagination-quickJumpButtonLabel | data-pagination-quick-jump-button-label
262
+ quickJumpButtonLabel: 'Перейти',
263
+ // Доступные варианты per-page.
264
+ // data-атрибуты: data-pagination-perPageOptions | data-pagination-per-page-options
265
+ perPageOptions: [10, 25, 50, 100],
266
+ // Колбек смены страницы.
267
+ // data-атрибуты: нет прямого
268
+ onChange: null,
269
+ // Колбек смены per-page.
270
+ // data-атрибуты: нет прямого
271
+ onPerPageChange: null,
272
+ },
273
273
 
274
- sortable: {
275
- // Canonical key for enable flag.
276
- // data-attributes: data-sortable-enable
277
- enable: true,
278
- // Начальное поле сортировки.
279
- // data-атрибуты: data-sort
280
- initialField: '',
281
- // Начальное направление сортировки.
282
- // data-атрибуты: data-dir
283
- initialDir: 'asc',
284
- // Включить мультисортировку.
285
- // data-атрибуты: data-sort-multi | data-sortmulti
286
- multi: false,
287
- // Мультисортировка только с Shift.
288
- // data-атрибуты: data-sort-multi-with-shift | data-sortmultiWithShift
289
- multiWithShift: true,
290
- // Белый список сортируемых полей.
291
- // data-атрибуты: data-sort-fields
292
- fields: [],
293
- // Скрывать стрелки у несортированных колонок.
294
- // data-атрибуты: data-sort-hide-unsorted-arrows
295
- hideUnsortedArrows: true,
296
- // Пользовательская проверка сортируемости колонки.
297
- // data-атрибуты: нет прямого
298
- isColumnSortable: () => true,
299
- },
274
+ sortable: {
275
+ // Canonical key for enable flag.
276
+ // data-attributes: data-sortable-enable
277
+ enable: true,
278
+ // Начальное поле сортировки.
279
+ // data-атрибуты: data-sort
280
+ initialField: '',
281
+ // Начальное направление сортировки.
282
+ // data-атрибуты: data-dir
283
+ initialDir: 'asc',
284
+ // Включить мультисортировку.
285
+ // data-атрибуты: data-sort-multi | data-sortmulti
286
+ multi: false,
287
+ // Мультисортировка только с Shift.
288
+ // data-атрибуты: data-sort-multi-with-shift | data-sortmultiWithShift
289
+ multiWithShift: true,
290
+ // Белый список сортируемых полей.
291
+ // data-атрибуты: data-sort-fields
292
+ fields: [],
293
+ // Скрывать стрелки у несортированных колонок.
294
+ // data-атрибуты: data-sort-hide-unsorted-arrows
295
+ hideUnsortedArrows: true,
296
+ // Пользовательская проверка сортируемости колонки.
297
+ // data-атрибуты: нет прямого
298
+ isColumnSortable: () => true,
299
+ },
300
300
 
301
- columnReorder: {
302
- // Canonical key for enable flag.
303
- // data-attributes: data-column-reorder-enable
304
- enable: false,
305
- // Сохранять порядок колонок.
306
- // data-атрибуты: data-column-reorder-persist
307
- persist: false,
308
- // Ключ storage для порядка колонок.
309
- // data-атрибуты: data-column-reorder-storage-key
310
- storageKey: '',
311
- },
301
+ columnReorder: {
302
+ // Canonical key for enable flag.
303
+ // data-attributes: data-column-reorder-enable
304
+ enable: false,
305
+ // Сохранять порядок колонок.
306
+ // data-атрибуты: data-column-reorder-persist
307
+ persist: false,
308
+ // Ключ storage для порядка колонок.
309
+ // data-атрибуты: data-column-reorder-storage-key
310
+ storageKey: '',
311
+ },
312
312
 
313
- columnResize: {
314
- // Canonical key for enable flag.
315
- // data-attributes: data-column-resize-enable
316
- enable: false,
317
- // Минимальная ширина колонки.
318
- // data-атрибуты: data-column-resize-min-width
319
- minWidth: 80,
320
- // Максимальная ширина колонки.
321
- // data-атрибуты: data-column-resize-max-width
322
- maxWidth: 600,
323
- },
313
+ columnResize: {
314
+ // Canonical key for enable flag.
315
+ // data-attributes: data-column-resize-enable
316
+ enable: false,
317
+ // Минимальная ширина колонки.
318
+ // data-атрибуты: data-column-resize-min-width
319
+ minWidth: 80,
320
+ // Максимальная ширина колонки.
321
+ // data-атрибуты: data-column-resize-max-width
322
+ maxWidth: 600,
323
+ },
324
324
 
325
- virtual: {
326
- // Canonical key for enable flag.
327
- // data-attributes: data-virtual-enable
328
- enable: false,
329
- // Ожидаемая высота строки (px).
330
- // data-атрибуты: data-virtual-row-height
331
- rowHeight: 44,
332
- // Запас строк вне viewport.
333
- // data-атрибуты: data-virtual-overscan
334
- overscan: 8,
335
- // Порог числа строк для активации виртуализации.
336
- // data-атрибуты: data-virtual-threshold
337
- threshold: 500,
338
- },
325
+ virtual: {
326
+ // Canonical key for enable flag.
327
+ // data-attributes: data-virtual-enable
328
+ enable: false,
329
+ // Ожидаемая высота строки (px).
330
+ // data-атрибуты: data-virtual-row-height
331
+ rowHeight: 44,
332
+ // Запас строк вне viewport.
333
+ // data-атрибуты: data-virtual-overscan
334
+ overscan: 8,
335
+ // Порог числа строк для активации виртуализации.
336
+ // data-атрибуты: data-virtual-threshold
337
+ threshold: 500,
338
+ },
339
339
 
340
- expandable: {
341
- // Enable tree-like expandable rows.
342
- // data-attributes: data-expandable-enable
343
- enable: false,
344
- // Attribute name with unique row id.
345
- // data-attributes: data-expandable-id-attr
346
- idAttr: 'data-expand-id',
347
- // Attribute name with parent row id.
348
- // data-attributes: data-expandable-parent-attr
349
- parentAttr: 'data-expand-parent-id',
350
- // Selector for toggle control inside row.
351
- // data-attributes: data-expandable-toggle-selector
352
- toggleSelector: '[data-expand-toggle]',
353
- // Collapse groups by default.
354
- // data-attributes: data-expandable-collapsed
355
- collapsed: true,
356
- },
340
+ expandable: {
341
+ // Enable tree-like expandable rows.
342
+ // data-attributes: data-expandable-enable
343
+ enable: false,
344
+ // Attribute name with unique row id.
345
+ // data-attributes: data-expandable-id-attr
346
+ idAttr: 'data-expand-id',
347
+ // Attribute name with parent row id.
348
+ // data-attributes: data-expandable-parent-attr
349
+ parentAttr: 'data-expand-parent-id',
350
+ // Selector for toggle control inside row.
351
+ // data-attributes: data-expandable-toggle-selector
352
+ toggleSelector: '[data-expand-toggle]',
353
+ // Collapse groups by default.
354
+ // data-attributes: data-expandable-collapsed
355
+ collapsed: true,
356
+ },
357
357
 
358
- loading: {
359
- // Canonical key for minimum loading delay.
360
- // data-attributes: data-loading-min-delay
361
- minDelay: 500,
362
- // Количество skeleton-строк.
363
- // data-атрибуты: data-loading-skeleton | data-loading-skeleton-rows
364
- skeleton: 10,
365
- },
358
+ loading: {
359
+ // Canonical key for minimum loading delay.
360
+ // data-attributes: data-loading-min-delay
361
+ minDelay: 500,
362
+ // Количество skeleton-строк.
363
+ // data-атрибуты: data-loading-skeleton | data-loading-skeleton-rows
364
+ skeleton: 10,
365
+ },
366
366
 
367
- summary: {
368
- // Canonical key for enable flag.
369
- // data-attributes: data-summary-enable
370
- enable: false,
371
- },
367
+ summary: {
368
+ // Canonical key for enable flag.
369
+ // data-attributes: data-summary-enable
370
+ enable: false,
371
+ },
372
372
 
373
- footer: {
374
- // Canonical key for enable flag.
375
- // data-attributes: data-footer-enable
376
- enable: false,
377
- },
373
+ footer: {
374
+ // Canonical key for enable flag.
375
+ // data-attributes: data-footer-enable
376
+ enable: false,
377
+ },
378
378
 
379
- state: {
380
- // SVG/URL для иллюстрации error-state.
381
- // data-атрибуты: data-state-error-illustration
382
- errorIllustration: '<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="36" stroke="currentColor" stroke-opacity="0.32" stroke-width="4"/><path d="M50 30V56" stroke="currentColor" stroke-opacity="0.7" stroke-width="6" stroke-linecap="round"/><circle cx="50" cy="68" r="4" fill="currentColor" fill-opacity="0.7"/></svg>',
383
- // SVG/URL для иллюстрации empty-state.
384
- // data-атрибуты: data-state-empty-illustration
385
- emptyIllustration: '<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="18" y="24" width="64" height="52" rx="8" stroke="currentColor" stroke-opacity="0.32" stroke-width="4"/><path d="M30 40H70M30 50H62M30 60H54" stroke="currentColor" stroke-opacity="0.55" stroke-width="4" stroke-linecap="round"/><circle cx="72" cy="68" r="10" stroke="currentColor" stroke-opacity="0.6" stroke-width="4"/><path d="M79 75L86 82" stroke="currentColor" stroke-opacity="0.6" stroke-width="4" stroke-linecap="round"/></svg>',
386
- },
379
+ state: {
380
+ // SVG/URL для иллюстрации error-state.
381
+ // data-атрибуты: data-state-error-illustration
382
+ errorIllustration: '<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="36" stroke="currentColor" stroke-opacity="0.32" stroke-width="4"/><path d="M50 30V56" stroke="currentColor" stroke-opacity="0.7" stroke-width="6" stroke-linecap="round"/><circle cx="50" cy="68" r="4" fill="currentColor" fill-opacity="0.7"/></svg>',
383
+ // SVG/URL для иллюстрации empty-state.
384
+ // data-атрибуты: data-state-empty-illustration
385
+ emptyIllustration: '<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="18" y="24" width="64" height="52" rx="8" stroke="currentColor" stroke-opacity="0.32" stroke-width="4"/><path d="M30 40H70M30 50H62M30 60H54" stroke="currentColor" stroke-opacity="0.55" stroke-width="4" stroke-linecap="round"/><circle cx="72" cy="68" r="10" stroke="currentColor" stroke-opacity="0.6" stroke-width="4"/><path d="M79 75L86 82" stroke="currentColor" stroke-opacity="0.6" stroke-width="4" stroke-linecap="round"/></svg>',
386
+ },
387
387
 
388
- panHint: {
389
- // Canonical key for dismiss days.
390
- // data-attributes: data-pan-hint-dismiss
391
- dismiss: 60,
392
- // Сколько дней скрывать подсказку "Shift + drag" после закрытия.
393
- // data-атрибуты: data-pan-hint-dismiss-days
394
- dismissDays: 60,
395
- },
388
+ panHint: {
389
+ // Canonical key for dismiss days.
390
+ // data-attributes: data-pan-hint-dismiss
391
+ dismiss: 60,
392
+ // Сколько дней скрывать подсказку "Shift + drag" после закрытия.
393
+ // data-атрибуты: data-pan-hint-dismiss-days
394
+ dismissDays: 60,
395
+ },
396
396
 
397
- stickyHeader: {
398
- // Canonical key for enable flag.
399
- // data-attributes: data-sticky-header-enable
400
- enable: false,
401
- // Отступ сверху для sticky-header (px).
402
- // data-атрибуты: data-sticky-header-top-offset | data-stickyHeader-top
403
- top: 0,
404
- // Максимальная высота viewport таблицы.
405
- // data-атрибуты: data-sticky-header-max-height | data-stickyHeader-max
406
- max: 0,
407
- // Рендерить отдельный sticky clone вместо sticky th.
408
- // По умолчанию наследует stickyHeader.enable.
409
- // data-attributes: data-sticky-header-clone
410
- clone: null,
411
- },
397
+ stickyHeader: {
398
+ // Canonical key for enable flag.
399
+ // data-attributes: data-sticky-header-enable
400
+ enable: false,
401
+ // Отступ сверху для sticky-header (px).
402
+ // data-атрибуты: data-sticky-header-top-offset | data-stickyHeader-top
403
+ top: 0,
404
+ // Максимальная высота viewport таблицы.
405
+ // data-атрибуты: data-sticky-header-max-height | data-stickyHeader-max
406
+ max: 0,
407
+ // Рендерить отдельный sticky clone вместо sticky th.
408
+ // По умолчанию наследует stickyHeader.enable.
409
+ // data-attributes: data-sticky-header-clone
410
+ clone: null,
411
+ },
412
412
 
413
- search: {
414
- // Canonical key for enable flag.
415
- // data-attributes: data-search-enable
416
- enable: false,
417
- // Debounce поиска.
418
- // data-атрибуты: data-search-debounce | data-search-debounce-ms
419
- debounce: 300,
420
- // Имя query-параметра поиска.
421
- // data-атрибуты: data-search-param
422
- param: 'q',
423
- // CSS-селектор input поиска.
424
- // data-атрибуты: data-search-input | data-search-input-selector
425
- input: '',
426
- },
413
+ search: {
414
+ // Canonical key for enable flag.
415
+ // data-attributes: data-search-enable
416
+ enable: false,
417
+ // Debounce поиска.
418
+ // data-атрибуты: data-search-debounce | data-search-debounce-ms
419
+ debounce: 300,
420
+ // Имя query-параметра поиска.
421
+ // data-атрибуты: data-search-param
422
+ param: 'q',
423
+ // CSS-селектор input поиска.
424
+ // data-атрибуты: data-search-input | data-search-input-selector
425
+ input: '',
426
+ },
427
427
 
428
- filters: {
429
- // Canonical key for enable flag.
430
- // data-attributes: data-filters-enable
431
- enable: false,
432
- // CSS-селектор формы фильтров.
433
- // data-атрибуты: data-filters-form | data-filters-form-selector
434
- form: '',
435
- // Debounce фильтров.
436
- // data-атрибуты: data-filters-debounce | data-filters-debounce-ms
437
- debounce: 300,
438
- // Режим применения фильтров.
439
- // data-атрибуты: data-filters-apply | data-filters-apply-mode
440
- apply: 'auto', // auto | manual
441
- // Селекторы кнопок применения/сброса.
442
- // data-attributes: data-filters-button-apply | data-filters-button-reset
443
- button: {
444
- apply: '[data-filter-apply]',
445
- reset: '[data-filter-reset]',
446
- },
447
- // Отдельный route для фильтрации (опционально).
448
- // data-атрибуты: data-filters-route
449
- route: '',
450
- // Атрибут ключа фильтра (канонический field id).
451
- // data-атрибуты: data-filters-field-attr
452
- fieldAttr: 'data-filter-field',
453
- // Атрибут части фильтра (value|operator).
454
- // data-атрибуты: data-filters-part-attr
455
- partAttr: 'data-filter-part',
456
- // Атрибут типа сравнения (eq|contains|gt|...).
457
- // data-атрибуты: data-filters-type-attr
458
- typeAttr: 'data-filter-type',
459
- // Атрибут значения по умолчанию для фильтра.
460
- // data-атрибуты: data-filters-value-attr
461
- valueAttr: 'data-filter-value',
462
- // Атрибут оператора по умолчанию для фильтра.
463
- // data-атрибуты: data-filters-operator-attr
464
- operatorAttr: 'data-filter-operator',
465
- // Оператор по умолчанию.
466
- // data-атрибуты: data-filters-default-operator
467
- defaultOperator: 'eq',
468
- // Сбрасывать страницу при изменении фильтров.
469
- // data-атрибуты: data-filters-reset-page-on-change
470
- resetPageOnChange: true,
471
- // Пропускать пустые значения фильтров.
472
- // data-атрибуты: data-filters-skip-empty
473
- skipEmpty: true,
474
- // Trim текстовых значений.
475
- // data-атрибуты: data-filters-trim-values
476
- trimValues: true,
477
- // Всегда эмитить полный контекст sent/received для callbacks/events.
478
- // data-атрибуты: data-filters-emit-full-context
479
- emitFullContext: true,
480
- // URL-state для фильтров.
481
- urlState: {
482
- // data-атрибуты: data-filters-urlstate-enable
483
- enable: false,
484
- // data-атрибуты: data-filters-urlstate-read-on-init
485
- readOnInit: true,
486
- // data-атрибуты: data-filters-urlstate-write-on-change
487
- writeOnChange: true,
488
- // data-атрибуты: data-filters-urlstate-history-mode
489
- historyMode: 'replace', // replace | push
490
- // data-атрибуты: data-filters-urlstate-prefix
491
- paramPrefix: 'f.',
492
- // data-атрибуты: data-filters-urlstate-page-key
493
- pageKey: 'page',
494
- // data-атрибуты: data-filters-urlstate-per-page-key
495
- perPageKey: 'perPage',
496
- // data-атрибуты: data-filters-urlstate-sort-key
497
- sortKey: 'sort',
498
- },
499
- // Конфигурация транспортного payload.
500
- transport: {
501
- // data-атрибуты: data-filters-payload-key
502
- payloadKey: 'filters',
503
- // data-атрибуты: data-filters-include-meta
504
- includeMeta: true,
505
- // data-атрибуты: data-filters-include-urlstate
506
- includeUrlState: true,
507
- },
508
- // Конфигурация response mapping.
509
- response: {
510
- // data-атрибуты: data-filters-response-rows-path
511
- rowsPath: 'data.rows',
512
- // data-атрибуты: data-filters-response-total-path
513
- totalPath: 'data.total',
514
- // data-атрибуты: data-filters-response-meta-path
515
- metaPath: 'meta',
516
- // data-атрибуты: data-filters-response-applied-filters-path
517
- appliedFiltersPath: 'meta.appliedFilters',
518
- },
519
- },
428
+ filters: {
429
+ // Canonical key for enable flag.
430
+ // data-attributes: data-filters-enable
431
+ enable: false,
432
+ // CSS-селектор формы фильтров.
433
+ // data-атрибуты: data-filters-form | data-filters-form-selector
434
+ form: '',
435
+ // Debounce фильтров.
436
+ // data-атрибуты: data-filters-debounce | data-filters-debounce-ms
437
+ debounce: 300,
438
+ // Режим применения фильтров.
439
+ // data-атрибуты: data-filters-apply | data-filters-apply-mode
440
+ apply: 'auto', // auto | manual
441
+ // Селекторы кнопок применения/сброса.
442
+ // data-attributes: data-filters-button-apply | data-filters-button-reset
443
+ button: {
444
+ apply: '[data-filter-apply]',
445
+ reset: '[data-filter-reset]',
446
+ },
447
+ // Отдельный route для фильтрации (опционально).
448
+ // data-атрибуты: data-filters-route
449
+ route: '',
450
+ // Атрибут ключа фильтра (канонический field id).
451
+ // data-атрибуты: data-filters-field-attr
452
+ fieldAttr: 'data-filter-field',
453
+ // Атрибут части фильтра (value|operator).
454
+ // data-атрибуты: data-filters-part-attr
455
+ partAttr: 'data-filter-part',
456
+ // Атрибут типа сравнения (eq|contains|gt|...).
457
+ // data-атрибуты: data-filters-type-attr
458
+ typeAttr: 'data-filter-type',
459
+ // Атрибут значения по умолчанию для фильтра.
460
+ // data-атрибуты: data-filters-value-attr
461
+ valueAttr: 'data-filter-value',
462
+ // Атрибут оператора по умолчанию для фильтра.
463
+ // data-атрибуты: data-filters-operator-attr
464
+ operatorAttr: 'data-filter-operator',
465
+ // Оператор по умолчанию.
466
+ // data-атрибуты: data-filters-default-operator
467
+ defaultOperator: 'eq',
468
+ // Сбрасывать страницу при изменении фильтров.
469
+ // data-атрибуты: data-filters-reset-page-on-change
470
+ resetPageOnChange: true,
471
+ // Пропускать пустые значения фильтров.
472
+ // data-атрибуты: data-filters-skip-empty
473
+ skipEmpty: true,
474
+ // Trim текстовых значений.
475
+ // data-атрибуты: data-filters-trim-values
476
+ trimValues: true,
477
+ // Всегда эмитить полный контекст sent/received для callbacks/events.
478
+ // data-атрибуты: data-filters-emit-full-context
479
+ emitFullContext: true,
480
+ // URL-state для фильтров.
481
+ urlState: {
482
+ // data-атрибуты: data-filters-urlstate-enable
483
+ enable: false,
484
+ // data-атрибуты: data-filters-urlstate-read-on-init
485
+ readOnInit: true,
486
+ // data-атрибуты: data-filters-urlstate-write-on-change
487
+ writeOnChange: true,
488
+ // data-атрибуты: data-filters-urlstate-history-mode
489
+ historyMode: 'replace', // replace | push
490
+ // data-атрибуты: data-filters-urlstate-prefix
491
+ paramPrefix: 'f.',
492
+ // data-атрибуты: data-filters-urlstate-page-key
493
+ pageKey: 'page',
494
+ // data-атрибуты: data-filters-urlstate-per-page-key
495
+ perPageKey: 'perPage',
496
+ // data-атрибуты: data-filters-urlstate-sort-key
497
+ sortKey: 'sort',
498
+ },
499
+ // Конфигурация транспортного payload.
500
+ transport: {
501
+ // data-атрибуты: data-filters-payload-key
502
+ payloadKey: 'filters',
503
+ // data-атрибуты: data-filters-include-meta
504
+ includeMeta: true,
505
+ // data-атрибуты: data-filters-include-urlstate
506
+ includeUrlState: true,
507
+ },
508
+ // Конфигурация response mapping.
509
+ response: {
510
+ // data-атрибуты: data-filters-response-rows-path
511
+ rowsPath: 'data.rows',
512
+ // data-атрибуты: data-filters-response-total-path
513
+ totalPath: 'data.total',
514
+ // data-атрибуты: data-filters-response-meta-path
515
+ metaPath: 'meta',
516
+ // data-атрибуты: data-filters-response-applied-filters-path
517
+ appliedFiltersPath: 'meta.appliedFilters',
518
+ },
519
+ },
520
520
 
521
- urlState: {
522
- // Canonical key for enable flag.
523
- // data-attributes: data-url-state-enable
524
- enable: false,
525
- // Режим history обновлений.
526
- // data-атрибуты: data-url-state-mode | data-url-state-mode
527
- mode: 'replace', // replace | push
528
- include: {
529
- // data-attributes: data-urlstate-include-pagination
530
- pagination: false,
531
- // data-attributes: data-urlstate-include-sort
532
- sort: false,
533
- },
534
- listen: {
535
- // data-attributes: data-url-state-listen-popstate
536
- popstate: false,
537
- },
538
- },
521
+ urlState: {
522
+ // Canonical key for enable flag.
523
+ // data-attributes: data-url-state-enable
524
+ enable: false,
525
+ // Режим history обновлений.
526
+ // data-атрибуты: data-url-state-mode | data-url-state-mode
527
+ mode: 'replace', // replace | push
528
+ include: {
529
+ // data-attributes: data-urlstate-include-pagination
530
+ pagination: false,
531
+ // data-attributes: data-urlstate-include-sort
532
+ sort: false,
533
+ },
534
+ listen: {
535
+ // data-attributes: data-url-state-listen-popstate
536
+ popstate: false,
537
+ },
538
+ },
539
539
 
540
- editable: {
541
- // Enable editable mode.
542
- // data-attributes: data-editable-enable
543
- enable: false,
544
- // Enable drag-and-drop row reorder.
545
- // data-attributes: data-row-reorder-enable
546
- rowReorder: true,
547
- // Row reorder drag mode.
548
- // data-attributes: data-row-reorder-mode
549
- rowReorderMode: 'row', // row | handle
550
- // CSS selector for explicit drag handle inside row.
551
- // data-attributes: data-row-reorder-handle-selector
552
- rowReorderHandleSelector: '[data-row-reorder-handle]',
553
- },
540
+ editable: {
541
+ // Enable editable mode.
542
+ // data-attributes: data-editable-enable
543
+ enable: false,
544
+ // Enable drag-and-drop row reorder.
545
+ // data-attributes: data-row-reorder-enable
546
+ rowReorder: true,
547
+ // Row reorder drag mode.
548
+ // data-attributes: data-row-reorder-mode
549
+ rowReorderMode: 'row', // row | handle
550
+ // CSS selector for explicit drag handle inside row.
551
+ // data-attributes: data-row-reorder-handle-selector
552
+ rowReorderHandleSelector: '[data-row-reorder-handle]',
553
+ },
554
554
 
555
- callbacks: {
556
- // Событие инициализации.
557
- onInit: null,
558
- // Начало remote-загрузки.
559
- onBeforeLoad: null,
560
- // Успешная загрузка данных.
561
- onDataLoaded: null,
562
- // Ошибка загрузки.
563
- onError: null,
564
- // Успех HTTP-запроса (расширенный контекст sent/received).
565
- onRequestSuccess: null,
566
- // Ошибка HTTP-запроса (расширенный контекст sent/error).
567
- onRequestError: null,
568
- // Пришел устаревший ответ и был отброшен.
569
- onStaleResponse: null,
570
- // Синхронизация urlState: чтение.
571
- onUrlStateRead: null,
572
- // Синхронизация urlState: запись.
573
- onUrlStateWrite: null,
574
- // Ошибка чтения/записи urlState.
575
- onUrlStateError: null,
576
- // Пустой результат после загрузки.
577
- onEmptyResult: null,
578
- // Завершение рендера после ответа сервера.
579
- onAfterRender: null,
580
- // Синхронизация финального состояния таблицы.
581
- onStateSync: null,
582
- // Изменение сортировки.
583
- onSortChange: null,
584
- // Изменение страницы.
585
- onPageChange: null,
586
- // Изменение per-page.
587
- onPerPageChange: null,
588
- // Изменение поискового запроса.
589
- onSearch: null,
590
- // Изменение фильтров.
591
- onFiltersChange: null,
592
- // Сброс фильтров/поиска.
593
- onReset: null,
594
- // Изменение чекбокса строки в editable-режиме.
595
- onRowCheck: null,
596
- // Изменение чекбокса "выбрать все" в editable-режиме.
597
- onCheckAll: null,
598
- // Ручная перестановка строк в editable-режиме.
599
- onRowReorder: null,
600
- // Запуск экспорта.
601
- onExport: null,
602
- // Операции сохраненных видов.
603
- onViewChange: null,
604
- // Раскрытие строки в tree-data.
605
- onRowExpand: null,
606
- // Коллапс строки в tree-data.
607
- onRowCollapse: null,
608
- // Переключение состояния строки в tree-data.
609
- onRowToggle: null,
610
- // Перестановка колонок.
611
- onColumnReorder: null,
612
- // Изменение ширины колонки.
613
- onColumnResize: null,
614
- onColumnFixed: null,
615
- },
555
+ callbacks: {
556
+ // Событие инициализации.
557
+ onInit: null,
558
+ // Начало remote-загрузки.
559
+ onBeforeLoad: null,
560
+ // Успешная загрузка данных.
561
+ onDataLoaded: null,
562
+ // Ошибка загрузки.
563
+ onError: null,
564
+ // Успех HTTP-запроса (расширенный контекст sent/received).
565
+ onRequestSuccess: null,
566
+ // Ошибка HTTP-запроса (расширенный контекст sent/error).
567
+ onRequestError: null,
568
+ // Пришел устаревший ответ и был отброшен.
569
+ onStaleResponse: null,
570
+ // Синхронизация urlState: чтение.
571
+ onUrlStateRead: null,
572
+ // Синхронизация urlState: запись.
573
+ onUrlStateWrite: null,
574
+ // Ошибка чтения/записи urlState.
575
+ onUrlStateError: null,
576
+ // Пустой результат после загрузки.
577
+ onEmptyResult: null,
578
+ // Завершение рендера после ответа сервера.
579
+ onAfterRender: null,
580
+ // Синхронизация финального состояния таблицы.
581
+ onStateSync: null,
582
+ // Изменение сортировки.
583
+ onSortChange: null,
584
+ // Изменение страницы.
585
+ onPageChange: null,
586
+ // Изменение per-page.
587
+ onPerPageChange: null,
588
+ // Изменение поискового запроса.
589
+ onSearch: null,
590
+ // Изменение фильтров.
591
+ onFiltersChange: null,
592
+ // Сброс фильтров/поиска.
593
+ onReset: null,
594
+ // Изменение чекбокса строки в editable-режиме.
595
+ onRowCheck: null,
596
+ // Изменение чекбокса "выбрать все" в editable-режиме.
597
+ onCheckAll: null,
598
+ // Ручная перестановка строк в editable-режиме.
599
+ onRowReorder: null,
600
+ // Запуск экспорта.
601
+ onExport: null,
602
+ // Операции сохраненных видов.
603
+ onViewChange: null,
604
+ // Раскрытие строки в tree-data.
605
+ onRowExpand: null,
606
+ // Коллапс строки в tree-data.
607
+ onRowCollapse: null,
608
+ // Переключение состояния строки в tree-data.
609
+ onRowToggle: null,
610
+ // Перестановка колонок.
611
+ onColumnReorder: null,
612
+ // Изменение ширины колонки.
613
+ onColumnResize: null,
614
+ onColumnFixed: null,
615
+ },
616
616
 
617
- events: {
618
- // Включить dispatch CustomEvent-событий.
619
- // data-атрибуты: data-events-enabled
620
- enable: true,
621
- // Префикс событий (например, vgdt:dataloaded).
622
- // data-атрибуты: data-events-prefix
623
- prefix: 'vgdt',
624
- // Распространять события вверх по DOM (bubbles).
625
- // data-атрибуты: data-events-bubbles
626
- bubbles: true,
627
- },
617
+ events: {
618
+ // Включить dispatch CustomEvent-событий.
619
+ // data-атрибуты: data-events-enabled
620
+ enable: true,
621
+ // Префикс событий (например, vgdt:dataloaded).
622
+ // data-атрибуты: data-events-prefix
623
+ prefix: 'vgdt',
624
+ // Распространять события вверх по DOM (bubbles).
625
+ // data-атрибуты: data-events-bubbles
626
+ bubbles: true,
627
+ },
628
628
 
629
- persistence: {
630
- // Глобальный toggle persistence.
631
- // data-атрибуты: data-persistence-enabled
632
- enable: false,
633
- // Общий ключ storage для persistence.
634
- // data-атрибуты: data-persistence-storage-key
635
- storageKey: '',
636
- // Сохранять тему.
637
- // data-атрибуты: data-persistence-theme
638
- theme: false,
639
- // Сохранять локаль.
640
- // data-атрибуты: data-persistence-locale
641
- locale: false,
642
- // Сохранять режим применения фильтров.
643
- // data-атрибуты: data-persistence-filters-apply-mode
644
- filtersApply: false,
645
- },
629
+ persistence: {
630
+ // Глобальный toggle persistence.
631
+ // data-атрибуты: data-persistence-enabled
632
+ enable: false,
633
+ // Общий ключ storage для persistence.
634
+ // data-атрибуты: data-persistence-storage-key
635
+ storageKey: '',
636
+ // Сохранять тему.
637
+ // data-атрибуты: data-persistence-theme
638
+ theme: false,
639
+ // Сохранять локаль.
640
+ // data-атрибуты: data-persistence-locale
641
+ locale: false,
642
+ // Сохранять режим применения фильтров.
643
+ // data-атрибуты: data-persistence-filters-apply-mode
644
+ filtersApply: false,
645
+ },
646
646
  };
647
647
 
648
648
  export default DEFAULT_OPTIONS;