vgapp 1.3.3 → 1.3.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.
Files changed (89) hide show
  1. package/README.md +5 -12
  2. package/app/langs/en/buttons.json +17 -17
  3. package/app/langs/en/messages.json +36 -36
  4. package/app/langs/ru/buttons.json +17 -17
  5. package/app/langs/ru/messages.json +36 -36
  6. package/app/modules/base-module.js +111 -111
  7. package/app/modules/vgalert/js/vgalert.js +52 -52
  8. package/app/modules/vgalert/readme.md +105 -105
  9. package/app/modules/vgdynamictable/index.js +5 -5
  10. package/app/modules/vgdynamictable/js/editable.js +19 -19
  11. package/app/modules/vgdynamictable/js/filters.js +21 -21
  12. package/app/modules/vgdynamictable/js/fixed.js +179 -179
  13. package/app/modules/vgdynamictable/js/pagination.js +1 -1
  14. package/app/modules/vgdynamictable/js/search.js +12 -12
  15. package/app/modules/vgdynamictable/js/sortable.js +71 -71
  16. package/app/modules/vgdynamictable/js/summary-footer.js +28 -28
  17. package/app/modules/vgdynamictable/js/table-remote.js +79 -79
  18. package/app/modules/vgdynamictable/js/table-url-state.js +31 -31
  19. package/app/modules/vgdynamictable/js/utils/common.js +48 -48
  20. package/app/modules/vgdynamictable/js/vgdynamictable.js +268 -268
  21. package/app/modules/vgdynamictable/readme.md +250 -250
  22. package/app/modules/vgdynamictable/scss/_skeleton.scss +6 -6
  23. package/app/modules/vgdynamictable/scss/_sortable.scss +24 -24
  24. package/app/modules/vgdynamictable/scss/_table.scss +4 -4
  25. package/app/modules/vgdynamictable/scss/_variables.scss +79 -79
  26. package/app/modules/vgdynamictable/scss/vgdynamictable.scss +27 -27
  27. package/app/modules/vgfilepreview/js/i18n.js +56 -56
  28. package/app/modules/vgfilepreview/js/renderers/image-modal.js +145 -145
  29. package/app/modules/vgfilepreview/js/renderers/image.js +92 -92
  30. package/app/modules/vgfilepreview/js/renderers/index.js +19 -19
  31. package/app/modules/vgfilepreview/js/renderers/office-modal.js +168 -168
  32. package/app/modules/vgfilepreview/js/renderers/office.js +79 -79
  33. package/app/modules/vgfilepreview/js/renderers/pdf-modal.js +260 -260
  34. package/app/modules/vgfilepreview/js/renderers/pdf.js +76 -76
  35. package/app/modules/vgfilepreview/js/renderers/playlist.js +71 -71
  36. package/app/modules/vgfilepreview/js/renderers/text-modal.js +343 -343
  37. package/app/modules/vgfilepreview/js/renderers/text.js +83 -83
  38. package/app/modules/vgfilepreview/js/renderers/video-modal.js +272 -272
  39. package/app/modules/vgfilepreview/js/renderers/video.js +80 -80
  40. package/app/modules/vgfilepreview/js/renderers/zip-modal.js +522 -522
  41. package/app/modules/vgfilepreview/js/renderers/zip.js +89 -89
  42. package/app/modules/vgfilepreview/js/vgfilepreview.js +7 -7
  43. package/app/modules/vgfilepreview/readme.md +68 -68
  44. package/app/modules/vgfilepreview/scss/_variables.scss +113 -113
  45. package/app/modules/vgfilepreview/scss/vgfilepreview.scss +464 -464
  46. package/app/modules/vgfiles/js/base.js +26 -26
  47. package/app/modules/vgfiles/js/droppable.js +260 -260
  48. package/app/modules/vgfiles/js/render.js +153 -153
  49. package/app/modules/vgfiles/js/vgfiles.js +104 -104
  50. package/app/modules/vgfiles/readme.md +123 -123
  51. package/app/modules/vgfiles/scss/_variables.scss +18 -18
  52. package/app/modules/vgfiles/scss/vgfiles.scss +148 -148
  53. package/app/modules/vgformsender/js/hideshowpass.js +16 -16
  54. package/app/modules/vgformsender/scss/vgformsender.scss +34 -34
  55. package/app/modules/vgmodal/js/vgmodal.drag.js +332 -332
  56. package/app/modules/vgmodal/js/vgmodal.js +188 -188
  57. package/app/modules/vgmodal/js/vgmodal.resize.js +27 -27
  58. package/app/modules/vgmodal/scss/vgmodal.scss +14 -14
  59. package/app/modules/vgnav/js/vgnav.js +135 -135
  60. package/app/modules/vgnav/readme.md +67 -67
  61. package/app/modules/vgnestable/README.md +307 -307
  62. package/app/modules/vgnestable/scss/_variables.scss +60 -60
  63. package/app/modules/vgnestable/scss/vgnestable.scss +163 -163
  64. package/app/modules/vgrangeslider/js/skins.js +222 -222
  65. package/app/modules/vgrangeslider/js/vgrangeslider.js +704 -704
  66. package/app/modules/vgrangeslider/readme.md +523 -523
  67. package/app/modules/vgrangeslider/scss/_variables.scss +53 -53
  68. package/app/modules/vgrangeslider/scss/vgrangeslider.scss +240 -240
  69. package/app/modules/vgselect/js/vgselect.js +39 -39
  70. package/app/modules/vgselect/scss/vgselect.scss +22 -22
  71. package/app/modules/vgspy/readme.md +28 -28
  72. package/app/modules/vgtoast/readme.md +18 -18
  73. package/app/modules/vgtoast/scss/vgtoast.scss +48 -48
  74. package/app/modules/vgtooltip/js/vgtooltip.js +89 -89
  75. package/app/modules/vgtooltip/readme.md +181 -181
  76. package/app/utils/js/components/ajax.js +117 -117
  77. package/app/utils/js/components/audio-metadata.js +240 -240
  78. package/app/utils/js/components/backdrop.js +17 -17
  79. package/app/utils/js/components/file-icon.js +109 -109
  80. package/app/utils/js/components/file-preview.js +304 -304
  81. package/app/utils/js/components/sanitize.js +150 -150
  82. package/app/utils/js/components/video-metadata.js +140 -140
  83. package/app/vgapp.js +21 -21
  84. package/build/vgapp.css +1 -1
  85. package/build/vgapp.css.map +1 -1
  86. package/build/vgapp.js +1 -1
  87. package/build/vgapp.js.map +1 -1
  88. package/index.js +14 -14
  89. package/package.json +3 -2
@@ -23,8 +23,8 @@ const NAME_KEY = "vg.alert";
23
23
  // Глобальная блокировка: предотвращаем открытие нескольких алертов
24
24
  let isAlertOpen = false;
25
25
 
26
- class VGAlert {
27
- constructor(params = {}, lang = 'ru') {
26
+ class VGAlert {
27
+ constructor(params = {}, lang = 'ru') {
28
28
  this.lang = lang;
29
29
  this._defaultParams = {
30
30
  render: {
@@ -90,23 +90,23 @@ class VGAlert {
90
90
  info: getSVG("info"),
91
91
  },
92
92
  };
93
- this._params = this._setParams(params);
94
- }
95
-
96
- static get NAME() {
97
- return NAME;
98
- }
99
-
100
- static get NAME_KEY() {
101
- return NAME_KEY;
102
- }
103
-
104
- static boot() {
105
- this._bindDataApi();
106
- return null;
107
- }
108
-
109
- static call(options = {}, lang = 'ru') {
93
+ this._params = this._setParams(params);
94
+ }
95
+
96
+ static get NAME() {
97
+ return NAME;
98
+ }
99
+
100
+ static get NAME_KEY() {
101
+ return NAME_KEY;
102
+ }
103
+
104
+ static boot() {
105
+ this._bindDataApi();
106
+ return null;
107
+ }
108
+
109
+ static call(options = {}, lang = 'ru') {
110
110
  const context = new VGAlert(options, lang);
111
111
 
112
112
  if (isAlertOpen) return Promise.reject({ accepted: false, reason: lang_messages(context.lang, NAME_KEY).reason });
@@ -218,7 +218,7 @@ class VGAlert {
218
218
  });
219
219
  }
220
220
 
221
- static confirm(elem, options = {}) {
221
+ static confirm(elem, options = {}) {
222
222
  let lang = 'ru';
223
223
 
224
224
  if ('lang' in options) {
@@ -228,35 +228,35 @@ class VGAlert {
228
228
  const context = new VGAlert(options, lang);
229
229
  if (context._params.mode !== "confirm") return;
230
230
 
231
- const instance = VGAlertConfirm.getOrCreateInstance(elem, context._params);
232
- instance.run(VGAlert);
233
- }
234
-
235
- static _bindDataApi() {
236
- if (this._isDataApiBound) {
237
- return;
238
- }
239
-
240
- this._isDataApiBound = true;
241
-
242
- EventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
243
- event.preventDefault();
244
- const target = event.target;
245
-
246
- if (!isVisible(target) || !isElement(target)) return;
247
-
248
- VGAlert.confirm(target, {
249
- buttons: {
250
- agree: {
251
- class: ["btn-primary"],
252
- },
253
- cancel: {
254
- class: ["btn-outline-primary"],
255
- },
256
- },
257
- });
258
- });
259
- }
231
+ const instance = VGAlertConfirm.getOrCreateInstance(elem, context._params);
232
+ instance.run(VGAlert);
233
+ }
234
+
235
+ static _bindDataApi() {
236
+ if (this._isDataApiBound) {
237
+ return;
238
+ }
239
+
240
+ this._isDataApiBound = true;
241
+
242
+ EventHandler.on(document, EVENT_KEY_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
243
+ event.preventDefault();
244
+ const target = event.target;
245
+
246
+ if (!isVisible(target) || !isElement(target)) return;
247
+
248
+ VGAlert.confirm(target, {
249
+ buttons: {
250
+ agree: {
251
+ class: ["btn-primary"],
252
+ },
253
+ cancel: {
254
+ class: ["btn-outline-primary"],
255
+ },
256
+ },
257
+ });
258
+ });
259
+ }
260
260
 
261
261
  _setParams(params) {
262
262
  const merged = mergeDeepObject(this._defaultParams, params);
@@ -434,6 +434,6 @@ class VGAlertConfirm extends BaseModule {
434
434
  }
435
435
 
436
436
  // Делегирование кликов по data-атрибутам
437
- VGAlert._isDataApiBound = false;
438
-
439
- export default VGAlert;
437
+ VGAlert._isDataApiBound = false;
438
+
439
+ export default VGAlert;
@@ -11,12 +11,12 @@
11
11
  - Полная **локализация** (настройка языка)
12
12
  - Гибкая **настройка кнопок** и сообщений
13
13
  - Поддержка **SVG-иконок** и тем стилей (`danger`, `warning`, `success`, `info`)
14
- - Работа как через **API**, так и через **`data`-атрибуты**
15
- - Интеграция с промисами (`Promise`)
16
- - Защита от **множественных одновременных вызовов**
17
- - Поддержка **клавиатурных сокращений** (Enter, Escape)
18
- - Два режима рендера: обычный **`modal`** и вложенный **`overlay`**
19
- - Возможность закрывать родительскую модалку/сайдбар через `render.dismiss`
14
+ - Работа как через **API**, так и через **`data`-атрибуты**
15
+ - Интеграция с промисами (`Promise`)
16
+ - Защита от **множественных одновременных вызовов**
17
+ - Поддержка **клавиатурных сокращений** (Enter, Escape)
18
+ - Два режима рендера: обычный **`modal`** и вложенный **`overlay`**
19
+ - Возможность закрывать родительскую модалку/сайдбар через `render.dismiss`
20
20
 
21
21
  ---
22
22
 
@@ -29,45 +29,45 @@ import VGAlert from "./app/modules/vgalert/js/vgalert.js";
29
29
 
30
30
  ---
31
31
 
32
- ## 🧩 Режимы работы
32
+ ## 🧩 Режимы работы
33
33
 
34
34
  ### 1. `confirm` — Подтверждение действия
35
35
  Показывает два действия: **Подтвердить** и **Отмена**.
36
36
 
37
- ### 2. `info` — Информационное сообщение
38
- Показывает только кнопку **ОК** (или "Продолжить").
39
-
40
- ---
41
-
42
- ## 🖼 Рендер (`render`)
43
-
44
- `VGAlert` поддерживает два варианта отображения:
45
-
46
- | Параметр | Значение | Описание |
47
- |--------|--------|----------|
48
- | `render.type` | `modal` | Обычный alert в отдельной модалке |
49
- | `render.type` | `overlay` | Alert-оверлей внутри текущей `.vg-modal` или `.vg-sidebar` |
50
- | `render.dismiss` | `true` / `false` | Для `overlay`: после закрытия alert дополнительно закрывает родительский контейнер |
51
-
52
- ### Пример: alert поверх открытой модалки
53
-
54
- ```js
55
- VGAlert.call({
56
- render: {
57
- type: "overlay",
58
- dismiss: true
59
- },
60
- relatedTarget: button,
61
- message: {
62
- title: "Удалить запись",
63
- description: "Действие будет выполнено в текущем окне."
64
- }
65
- });
66
- ```
67
-
68
- `relatedTarget` нужен для `overlay`, чтобы модуль нашёл ближайшую `.vg-modal` или `.vg-sidebar`, куда надо встроить alert.
69
-
70
- ---
37
+ ### 2. `info` — Информационное сообщение
38
+ Показывает только кнопку **ОК** (или "Продолжить").
39
+
40
+ ---
41
+
42
+ ## 🖼 Рендер (`render`)
43
+
44
+ `VGAlert` поддерживает два варианта отображения:
45
+
46
+ | Параметр | Значение | Описание |
47
+ |--------|--------|----------|
48
+ | `render.type` | `modal` | Обычный alert в отдельной модалке |
49
+ | `render.type` | `overlay` | Alert-оверлей внутри текущей `.vg-modal` или `.vg-sidebar` |
50
+ | `render.dismiss` | `true` / `false` | Для `overlay`: после закрытия alert дополнительно закрывает родительский контейнер |
51
+
52
+ ### Пример: alert поверх открытой модалки
53
+
54
+ ```js
55
+ VGAlert.call({
56
+ render: {
57
+ type: "overlay",
58
+ dismiss: true
59
+ },
60
+ relatedTarget: button,
61
+ message: {
62
+ title: "Удалить запись",
63
+ description: "Действие будет выполнено в текущем окне."
64
+ }
65
+ });
66
+ ```
67
+
68
+ `relatedTarget` нужен для `overlay`, чтобы модуль нашёл ближайшую `.vg-modal` или `.vg-sidebar`, куда надо встроить alert.
69
+
70
+ ---
71
71
 
72
72
  ## 🎨 Темы (`theme`)
73
73
  | Значение | Иконка | Назначение |
@@ -108,9 +108,9 @@ VGAlert.call({
108
108
  });
109
109
  ```
110
110
 
111
- ### Пример 2: Информационное сообщение
112
- ```js
113
- VGAlert.call({
111
+ ### Пример 2: Информационное сообщение
112
+ ```js
113
+ VGAlert.call({
114
114
  mode: "info",
115
115
  theme: "success",
116
116
  message: {
@@ -123,26 +123,26 @@ VGAlert.call({
123
123
  class: ["btn-success"]
124
124
  }
125
125
  }
126
- });
127
- ```
128
-
129
- ### Пример 3: Обработка результата через `Promise`
130
- ```js
131
- VGAlert.call({
132
- message: {
133
- title: "Подтвердите действие",
134
- description: "Продолжить?"
135
- }
136
- }).then((result) => {
137
- console.log(result.accepted); // true
138
- console.log(result.timestamp);
139
- }).catch((error) => {
140
- console.log(error.accepted); // false
141
- console.log(error.timestamp);
142
- });
143
- ```
144
-
145
- ---
126
+ });
127
+ ```
128
+
129
+ ### Пример 3: Обработка результата через `Promise`
130
+ ```js
131
+ VGAlert.call({
132
+ message: {
133
+ title: "Подтвердите действие",
134
+ description: "Продолжить?"
135
+ }
136
+ }).then((result) => {
137
+ console.log(result.accepted); // true
138
+ console.log(result.timestamp);
139
+ }).catch((error) => {
140
+ console.log(error.accepted); // false
141
+ console.log(error.timestamp);
142
+ });
143
+ ```
144
+
145
+ ---
146
146
 
147
147
  ## 🔌 Работа с AJAX
148
148
 
@@ -169,30 +169,30 @@ VGAlert.confirm(element, {
169
169
 
170
170
  ---
171
171
 
172
- ## 🔔 События
173
-
174
- Модуль генерирует события на элементе-триггере, у которого есть `[data-vg-toggle="alert"]`:
175
-
176
- | Событие | Описание |
177
- |--------|--------|
178
- | `vg.alert.accept` | Пользователь подтвердил действие |
172
+ ## 🔔 События
173
+
174
+ Модуль генерирует события на элементе-триггере, у которого есть `[data-vg-toggle="alert"]`:
175
+
176
+ | Событие | Описание |
177
+ |--------|--------|
178
+ | `vg.alert.accept` | Пользователь подтвердил действие |
179
179
  | `vg.alert.reject` | Пользователь отменил действие |
180
- | `vg.alert.finally` | Действие завершено (в любом случае) |
181
- | `vg.alert.loaded` | Получен ответ от сервера (если был AJAX) |
182
-
183
- ```js
184
- const buttons = document.querySelectorAll('[data-vg-toggle="alert"]');
185
-
186
- buttons.forEach((button) => {
187
- button.addEventListener('vg.alert.accept', function (e) {
188
- console.log('Подтверждено:', e.vgalert);
189
- });
190
- });
191
- ```
192
-
193
- Если нужен общий глобальный обработчик, событие можно слушать и на `document`, так как оно всплывает.
194
-
195
- ---
180
+ | `vg.alert.finally` | Действие завершено (в любом случае) |
181
+ | `vg.alert.loaded` | Получен ответ от сервера (если был AJAX) |
182
+
183
+ ```js
184
+ const buttons = document.querySelectorAll('[data-vg-toggle="alert"]');
185
+
186
+ buttons.forEach((button) => {
187
+ button.addEventListener('vg.alert.accept', function (e) {
188
+ console.log('Подтверждено:', e.vgalert);
189
+ });
190
+ });
191
+ ```
192
+
193
+ Если нужен общий глобальный обработчик, событие можно слушать и на `document`, так как оно всплывает.
194
+
195
+ ---
196
196
 
197
197
  ## ⌨️ Клавиатурные комбинации
198
198
 
@@ -203,16 +203,16 @@ buttons.forEach((button) => {
203
203
 
204
204
  ## 🛠️ Конфигурация по умолчанию
205
205
  ```js
206
- {
207
- mode: "confirm",
208
- theme: "danger",
209
- render: {
210
- type: "modal",
211
- dismiss: false
212
- },
213
- modal: {
214
- centered: false,
215
- backdrop: true,
206
+ {
207
+ mode: "confirm",
208
+ theme: "danger",
209
+ render: {
210
+ type: "modal",
211
+ dismiss: false
212
+ },
213
+ modal: {
214
+ centered: false,
215
+ backdrop: true,
216
216
  keyboard: true,
217
217
  dismiss: true
218
218
  },
@@ -249,13 +249,13 @@ VGAlert.call(params, 'en');
249
249
 
250
250
  ## 🧩 Кастомизация кнопок
251
251
 
252
- Поддерживает:
253
- - `tag: 'button' | 'a'`
254
- - `type` (для `<button>`)
255
- - `class` — массив CSS-классов
256
- - `attr` — любые дополнительные атрибуты
257
- - `element` — готовый HTML-код кнопки
258
- - `toggle` — служебный атрибут кнопки (`data-vg-alert-agree` / `data-vg-alert-cancel`), обычно задаётся модулем автоматически
252
+ Поддерживает:
253
+ - `tag: 'button' | 'a'`
254
+ - `type` (для `<button>`)
255
+ - `class` — массив CSS-классов
256
+ - `attr` — любые дополнительные атрибуты
257
+ - `element` — готовый HTML-код кнопки
258
+ - `toggle` — служебный атрибут кнопки (`data-vg-alert-agree` / `data-vg-alert-cancel`), обычно задаётся модулем автоматически
259
259
 
260
260
  ### Пример: кнопка-ссылка
261
261
  ```js
@@ -298,4 +298,4 @@ MIT — свободно используйте и модифицируйте.
298
298
  ---
299
299
 
300
300
  > 🚀 Автор: VEGAS STUDIO (vegas-dev.com)
301
- > 📍 Поддерживается в проектах VEGAS
301
+ > 📍 Поддерживается в проектах VEGAS
@@ -1,5 +1,5 @@
1
- import VGDynamicTable from "./js/vgdynamictable";
2
- import Editable from "./js/editable";
3
-
4
- export {Editable, VGDynamicTable};
5
- export default VGDynamicTable;
1
+ import VGDynamicTable from "./js/vgdynamictable";
2
+ import Editable from "./js/editable";
3
+
4
+ export {Editable, VGDynamicTable};
5
+ export default VGDynamicTable;
@@ -1,13 +1,13 @@
1
- import EventHandler from "../../../utils/js/dom/event";
2
- import Data from "../../../utils/js/dom/data";
3
-
4
- const TABLE_SELECTOR = '[data-vg-table]';
5
- const ROW_SELECTOR = 'tbody tr:not([data-group-header="1"])';
6
- const ROW_CHECK_SELECTOR = '[data-row-select]';
7
- const CHECK_ALL_SELECTOR = '[data-select-all]';
8
- const DEFAULT_ROW_REORDER_HANDLE_SELECTOR = '[data-row-reorder-handle]';
9
- const ROW_REORDER_IGNORE_SELECTOR = 'input, button, a, select, textarea, [contenteditable="true"]';
10
- const TABLE_DATA_KEY = 'vg.dynamicTable';
1
+ import EventHandler from "../../../utils/js/dom/event";
2
+ import Data from "../../../utils/js/dom/data";
3
+
4
+ const TABLE_SELECTOR = '[data-vg-table]';
5
+ const ROW_SELECTOR = 'tbody tr:not([data-group-header="1"])';
6
+ const ROW_CHECK_SELECTOR = '[data-row-select]';
7
+ const CHECK_ALL_SELECTOR = '[data-select-all]';
8
+ const DEFAULT_ROW_REORDER_HANDLE_SELECTOR = '[data-row-reorder-handle]';
9
+ const ROW_REORDER_IGNORE_SELECTOR = 'input, button, a, select, textarea, [contenteditable="true"]';
10
+ const TABLE_DATA_KEY = 'vg.dynamicTable';
11
11
  const ACTION_CALLBACK_MAP = {
12
12
  rowcheck: 'onRowCheck',
13
13
  checkall: 'onCheckAll',
@@ -403,12 +403,12 @@ class Editable {
403
403
  : {};
404
404
  }
405
405
 
406
- static _getTableInstance(table) {
407
- if (!table) {
408
- return null;
409
- }
410
- return Data.get(table, TABLE_DATA_KEY);
411
- }
406
+ static _getTableInstance(table) {
407
+ if (!table) {
408
+ return null;
409
+ }
410
+ return Data.get(table, TABLE_DATA_KEY);
411
+ }
412
412
 
413
413
  static _getEventPrefix(table) {
414
414
  const instance = this._getTableInstance(table);
@@ -431,8 +431,8 @@ class Editable {
431
431
  }
432
432
  }
433
433
 
434
- EventHandler.on(document, 'DOMContentLoaded', () => {
435
- Editable.initAll();
436
- });
434
+ EventHandler.on(document, 'DOMContentLoaded', () => {
435
+ Editable.initAll();
436
+ });
437
437
 
438
438
  export default Editable;
@@ -1,6 +1,6 @@
1
- import {normalizeNonNegativeInt, safeQuerySelector} from "./utils/common";
2
-
3
- class Filters {
1
+ import {normalizeNonNegativeInt, safeQuerySelector} from "./utils/common";
2
+
3
+ class Filters {
4
4
  constructor(options = {}) {
5
5
  this._options = Object.assign({
6
6
  enabled: true,
@@ -19,12 +19,12 @@ class Filters {
19
19
  operatorAttr: 'data-filter-operator',
20
20
  defaultOperator: 'eq',
21
21
  skipEmpty: true,
22
- trimValues: true,
23
- emitOnInit: false,
24
- initialValues: {},
25
- onChange: null,
26
- onReset: null,
27
- }, options);
22
+ trimValues: true,
23
+ emitOnInit: false,
24
+ initialValues: {},
25
+ onChange: null,
26
+ onReset: null,
27
+ }, options);
28
28
 
29
29
  this._form = null;
30
30
  this._timer = null;
@@ -119,7 +119,7 @@ class Filters {
119
119
  if (!selector) {
120
120
  return null;
121
121
  }
122
- return safeQuerySelector(selector);
122
+ return safeQuerySelector(selector);
123
123
  }
124
124
 
125
125
  _handleInput(event) {
@@ -134,8 +134,8 @@ class Filters {
134
134
  this._emit();
135
135
  return;
136
136
  }
137
- clearTimeout(this._timer);
138
- this._timer = setTimeout(() => this._emit(), normalizeNonNegativeInt(this._options.debounceMs, 300));
137
+ clearTimeout(this._timer);
138
+ this._timer = setTimeout(() => this._emit(), normalizeNonNegativeInt(this._options.debounceMs, 300));
139
139
  }
140
140
 
141
141
  _handleChange(event) {
@@ -169,14 +169,14 @@ class Filters {
169
169
  if (!resetButton) {
170
170
  return;
171
171
  }
172
- event.preventDefault();
173
- this._reset();
174
- if (typeof this._options.onReset === 'function') {
175
- this._options.onReset();
176
- }
177
- clearTimeout(this._timer);
178
- this._emit();
179
- }
172
+ event.preventDefault();
173
+ this._reset();
174
+ if (typeof this._options.onReset === 'function') {
175
+ this._options.onReset();
176
+ }
177
+ clearTimeout(this._timer);
178
+ this._emit();
179
+ }
180
180
 
181
181
  _handleSubmit(event) {
182
182
  if (!this._isManualMode()) {
@@ -441,7 +441,7 @@ class Filters {
441
441
  const tag = String(node.tagName || '').toUpperCase();
442
442
  return tag === 'INPUT' || tag === 'SELECT' || tag === 'TEXTAREA';
443
443
  }
444
- _isManualMode() {
444
+ _isManualMode() {
445
445
  const mode = String(this._options.applyMode || 'auto').toLowerCase().trim();
446
446
  return mode === 'manual';
447
447
  }