vgapp 1.1.1 → 1.1.3
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/CHANGELOG.md +8 -0
- package/README.md +19 -16
- package/app/langs/en/buttons.json +17 -2
- package/app/langs/en/messages.json +36 -1
- package/app/langs/ru/buttons.json +17 -2
- package/app/langs/ru/messages.json +69 -34
- package/app/modules/module-fn.js +15 -9
- package/app/modules/vgfilepreview/index.js +3 -0
- package/app/modules/vgfilepreview/js/i18n.js +56 -0
- package/app/modules/vgfilepreview/js/renderers/image-modal.js +145 -0
- package/app/modules/vgfilepreview/js/renderers/image.js +92 -0
- package/app/modules/vgfilepreview/js/renderers/index.js +19 -0
- package/app/modules/vgfilepreview/js/renderers/office-modal.js +168 -0
- package/app/modules/vgfilepreview/js/renderers/office.js +79 -0
- package/app/modules/vgfilepreview/js/renderers/pdf-modal.js +260 -0
- package/app/modules/vgfilepreview/js/renderers/pdf.js +76 -0
- package/app/modules/vgfilepreview/js/renderers/playlist.js +71 -0
- package/app/modules/vgfilepreview/js/renderers/text-modal.js +343 -0
- package/app/modules/vgfilepreview/js/renderers/text.js +83 -0
- package/app/modules/vgfilepreview/js/renderers/video-modal.js +272 -0
- package/app/modules/vgfilepreview/js/renderers/video.js +80 -0
- package/app/modules/vgfilepreview/js/renderers/zip-modal.js +522 -0
- package/app/modules/vgfilepreview/js/renderers/zip.js +89 -0
- package/app/modules/vgfilepreview/js/vgfilepreview.js +532 -0
- package/app/modules/vgfilepreview/readme.md +68 -0
- package/app/modules/vgfilepreview/scss/_variables.scss +113 -0
- package/app/modules/vgfilepreview/scss/vgfilepreview.scss +460 -0
- package/app/modules/vgfiles/js/base.js +463 -175
- package/app/modules/vgfiles/js/droppable.js +260 -260
- package/app/modules/vgfiles/js/render.js +153 -153
- package/app/modules/vgfiles/js/vgfiles.js +41 -29
- package/app/modules/vgfiles/readme.md +116 -217
- package/app/modules/vgfiles/scss/_variables.scss +18 -10
- package/app/modules/vgfiles/scss/vgfiles.scss +153 -59
- package/app/modules/vgformsender/js/vgformsender.js +7 -2
- package/app/modules/vgmodal/js/vgmodal.js +12 -0
- package/app/modules/vgnav/js/vgnav.js +135 -135
- package/app/modules/vgnav/readme.md +67 -67
- package/app/modules/vgnestable/README.md +307 -307
- package/app/modules/vgnestable/scss/_variables.scss +60 -60
- package/app/modules/vgnestable/scss/vgnestable.scss +163 -163
- package/app/modules/vgselect/js/vgselect.js +62 -59
- package/app/modules/vgselect/scss/vgselect.scss +22 -22
- package/app/modules/vgspy/readme.md +28 -28
- package/app/utils/js/components/audio-metadata.js +240 -0
- package/app/utils/js/components/file-icon.js +109 -0
- package/app/utils/js/components/file-preview.js +304 -0
- package/app/utils/js/components/sanitize.js +150 -150
- package/build/vgapp.css +1 -1
- package/build/vgapp.css.map +1 -1
- package/index.js +1 -0
- package/index.scss +9 -6
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
# VEGAS-APP 1.0.0 - 1.1.3 (Апрель, 9, 2026)
|
|
2
|
+
* Новый модуль VGFilePreview, см. файл readme.md
|
|
3
|
+
* У модуля VGModal новый параметр `size: width и height`, кастомная высота и ширина, хорошо для `width: fit-content`
|
|
4
|
+
* модуль VGFilePreview интегрирован с VGFiles
|
|
5
|
+
* Исправлены ошибки в разных модулях
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
1
9
|
# VEGAS-APP 0.9.1 - 1.0.0 (Март, 2, 2026)
|
|
2
10
|
* Новый модуль VGNestable, см. файл readme.md
|
|
3
11
|
* Добавлены новые функции в модуле VGSelect, см. файл readme.md
|
package/README.md
CHANGED
|
@@ -19,27 +19,30 @@ npm i vgapp
|
|
|
19
19
|
- События на DOM для интеграции и расширения поведения.
|
|
20
20
|
- AJAX‑интеграция в ключевых модулях.
|
|
21
21
|
- Локализация интерфейсных текстов.
|
|
22
|
+
- Расширяемая архитектура модулей и рендереров.
|
|
22
23
|
|
|
23
24
|
### Основные модули
|
|
24
|
-
- `VGAlert` —
|
|
25
|
-
- `
|
|
26
|
-
- `
|
|
27
|
-
- `
|
|
28
|
-
- `
|
|
29
|
-
- `
|
|
30
|
-
- `
|
|
31
|
-
- `
|
|
32
|
-
- `
|
|
33
|
-
- `
|
|
34
|
-
- `
|
|
35
|
-
- `
|
|
36
|
-
- `
|
|
37
|
-
- `
|
|
38
|
-
- `
|
|
25
|
+
- `VGAlert` — диалоги подтверждения и уведомления с поддержкой AJAX‑сценариев.
|
|
26
|
+
- `VGCollapse` — сворачиваемые секции и аккордеоны с анимацией.
|
|
27
|
+
- `VGDropdown` — выпадающие меню с гибким открытием и позиционированием.
|
|
28
|
+
- `VGFiles` — загрузка и управление файлами (dropzone, валидация, AJAX, сортировка).
|
|
29
|
+
- `VGFilePreview` — предпросмотр файлов разных типов и действия по файлу (preview/download).
|
|
30
|
+
- `VGFormSender` — отправка форм (AJAX/нативно), обработка состояний и ответов.
|
|
31
|
+
- `VGLawCookie` — баннер cookies с сохранением выбора пользователя.
|
|
32
|
+
- `VGLoadMore` — подгрузка контента кнопкой или при прокрутке.
|
|
33
|
+
- `VGModal` — базовый модуль модальных окон.
|
|
34
|
+
- `VGNav` — навигация и мобильное меню.
|
|
35
|
+
- `VGNestable` — drag‑and‑drop вложенных списков с обновлением структуры.
|
|
36
|
+
- `VGRollup` — ограничение контента по высоте/элементам с кнопкой разворота.
|
|
37
|
+
- `VGSelect` — кастомный select с поиском, мультивыбором и i18n.
|
|
38
|
+
- `VGSidebar` — боковые панели с управлением открытием/закрытием.
|
|
39
|
+
- `VGSpy` — scroll‑spy для подсветки активных ссылок по секциям.
|
|
40
|
+
- `VGTabs` — вкладки с переключением контента и поддержкой URL/hash.
|
|
41
|
+
- `VGToast` — всплывающие уведомления со стеком и автозакрытием.
|
|
39
42
|
|
|
40
43
|
## Authors
|
|
41
44
|
|
|
42
45
|
[VEGAS STUDIO](https://vegas-dev.com) Russia
|
|
43
46
|
|
|
44
47
|
## License
|
|
45
|
-
Is published under the [MIT license](http://www.opensource.org/licenses/mit-license)
|
|
48
|
+
Is published under the [MIT license](http://www.opensource.org/licenses/mit-license)
|
|
@@ -7,7 +7,22 @@
|
|
|
7
7
|
"agree": "Yeah, I agree",
|
|
8
8
|
"cancel": "Cancel"
|
|
9
9
|
},
|
|
10
|
-
"
|
|
10
|
+
"filepreview": {
|
|
11
|
+
"open_audio": "Open player",
|
|
12
|
+
"open_image": "Open image",
|
|
13
|
+
"open_text": "Open text",
|
|
14
|
+
"open_video": "Open video",
|
|
15
|
+
"open_archive": "Open archive",
|
|
16
|
+
"open_pdf": "Open PDF",
|
|
17
|
+
"open_office": "Open document",
|
|
18
|
+
"download": "Download",
|
|
19
|
+
"preview": "Preview",
|
|
20
|
+
"prev": "Prev",
|
|
21
|
+
"next": "Next",
|
|
22
|
+
"zoom_in": "Zoom +",
|
|
23
|
+
"zoom_out": "Zoom -"
|
|
24
|
+
},
|
|
25
|
+
"loadmore": {
|
|
11
26
|
"send": "Uploading...",
|
|
12
27
|
"show": "I'm showing you...",
|
|
13
28
|
"text-ajax": "Upload more",
|
|
@@ -21,4 +36,4 @@
|
|
|
21
36
|
"select": {
|
|
22
37
|
"load-more": "Upload more"
|
|
23
38
|
}
|
|
24
|
-
}
|
|
39
|
+
}
|
|
@@ -25,7 +25,42 @@
|
|
|
25
25
|
"description": "It will not be possible to return it",
|
|
26
26
|
"drop-active": "Release to upload"
|
|
27
27
|
},
|
|
28
|
-
"
|
|
28
|
+
"filepreview": {
|
|
29
|
+
"audio_title": "Audio file",
|
|
30
|
+
"image_title": "Image preview",
|
|
31
|
+
"image_thumbnail_alt": "Image thumbnail",
|
|
32
|
+
"text_title": "Text preview",
|
|
33
|
+
"video_title": "Video preview",
|
|
34
|
+
"pdf_title": "PDF preview",
|
|
35
|
+
"office_title": "Office preview",
|
|
36
|
+
"archive_title": "Archive preview",
|
|
37
|
+
"loading_text": "Loading...",
|
|
38
|
+
"loading_archive": "Loading archive...",
|
|
39
|
+
"loading_entry": "Loading entry...",
|
|
40
|
+
"cannot_open_file": "Cannot open file",
|
|
41
|
+
"cannot_open_archive": "Cannot open archive",
|
|
42
|
+
"cannot_preview_entry": "Cannot preview entry",
|
|
43
|
+
"office_fallback": "If embedded preview is unavailable, download the file.",
|
|
44
|
+
"invalid_zip": "Invalid ZIP file",
|
|
45
|
+
"central_directory_not_found": "Central directory not found",
|
|
46
|
+
"archive_buffer_missing": "Archive buffer is missing",
|
|
47
|
+
"entry_corrupted": "Archive entry is corrupted",
|
|
48
|
+
"compression_not_supported": "Compression method is not supported",
|
|
49
|
+
"deflate_not_supported": "Deflate decompression is not supported by the browser",
|
|
50
|
+
"unknown_error": "Unknown error",
|
|
51
|
+
"empty_file": "(empty file)",
|
|
52
|
+
"archive_empty_unsupported": "Archive is empty or unsupported.",
|
|
53
|
+
"archive_type_dir": "dir",
|
|
54
|
+
"archive_type_file": "file",
|
|
55
|
+
"archive_table_name": "Name",
|
|
56
|
+
"archive_table_type": "Type",
|
|
57
|
+
"archive_table_packed": "Packed",
|
|
58
|
+
"archive_table_size": "Size",
|
|
59
|
+
"archive_table_preview": "Preview",
|
|
60
|
+
"pdf_page": "Page",
|
|
61
|
+
"pdf_zoom": "Zoom"
|
|
62
|
+
},
|
|
63
|
+
"alert": {
|
|
29
64
|
"title": "Default header",
|
|
30
65
|
"description": "Description of the current action",
|
|
31
66
|
"reason": "Alert already open"
|
|
@@ -7,7 +7,22 @@
|
|
|
7
7
|
"agree": "Да",
|
|
8
8
|
"cancel": "Нет"
|
|
9
9
|
},
|
|
10
|
-
"
|
|
10
|
+
"filepreview": {
|
|
11
|
+
"open_audio": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u043b\u0435\u0435\u0440",
|
|
12
|
+
"open_image": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
|
|
13
|
+
"open_text": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0442\u0435\u043a\u0441\u0442",
|
|
14
|
+
"open_video": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u0438\u0434\u0435\u043e",
|
|
15
|
+
"open_archive": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0430\u0440\u0445\u0438\u0432",
|
|
16
|
+
"open_pdf": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c PDF",
|
|
17
|
+
"open_office": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
|
|
18
|
+
"download": "\u0421\u043a\u0430\u0447\u0430\u0442\u044c",
|
|
19
|
+
"preview": "\u041f\u0440\u0435\u0432\u044c\u044e",
|
|
20
|
+
"prev": "\u041d\u0430\u0437\u0430\u0434",
|
|
21
|
+
"next": "\u0412\u043f\u0435\u0440\u0435\u0434",
|
|
22
|
+
"zoom_in": "\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c",
|
|
23
|
+
"zoom_out": "\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c"
|
|
24
|
+
},
|
|
25
|
+
"loadmore": {
|
|
11
26
|
"send": "Загружаю...",
|
|
12
27
|
"show": "Показываю...",
|
|
13
28
|
"text-ajax": "Загрузить еще",
|
|
@@ -21,4 +36,4 @@
|
|
|
21
36
|
"select": {
|
|
22
37
|
"load-more": "Загрузить еще"
|
|
23
38
|
}
|
|
24
|
-
}
|
|
39
|
+
}
|
|
@@ -1,36 +1,71 @@
|
|
|
1
|
-
{
|
|
2
|
-
"errors": {
|
|
3
|
-
"went_wrong": "Что-то пошло не так, повторите позже",
|
|
4
|
-
"400": "Неверный запрос",
|
|
5
|
-
"401": "Не авторизован",
|
|
6
|
-
"403": "Запрещено",
|
|
7
|
-
"404": "Не найдено",
|
|
8
|
-
"413": "Слишком большой запрос",
|
|
9
|
-
"419": "Проблемы с токеном CSRF",
|
|
10
|
-
"422": "Неверный запрос",
|
|
11
|
-
"500": "Внутренняя ошибка сервера",
|
|
12
|
-
"504": "Превышено время ожидания"
|
|
13
|
-
},
|
|
14
|
-
"form-sender": {
|
|
15
|
-
"bootstrap_not_found": "VGApp не удалось найти bootstrap, модалки не будут закрыты, попробуйте сделать это через коллбек afterSend."
|
|
16
|
-
},
|
|
17
|
-
"files": {
|
|
18
|
-
"is-count": "Превышен лимит по количеству файлов",
|
|
19
|
-
"is-sizes": "Превышен размер файл",
|
|
20
|
-
"is-types": "Недопустимый тип файла",
|
|
21
|
-
"is-total-size": "Превышен максимально разрешённый размер для выбранных файлов",
|
|
22
|
-
"titles": "Удаление файлов",
|
|
23
|
-
"title": "Удаление файлa",
|
|
24
|
-
"descriptions": "Вы действительно хотите удалить все загруженные файлы с сервера?",
|
|
25
|
-
"description": "Вернуть будет невозможно",
|
|
26
|
-
"drop-active": "Отпустите, чтобы загрузить"
|
|
1
|
+
{
|
|
2
|
+
"errors": {
|
|
3
|
+
"went_wrong": "Что-то пошло не так, повторите позже",
|
|
4
|
+
"400": "Неверный запрос",
|
|
5
|
+
"401": "Не авторизован",
|
|
6
|
+
"403": "Запрещено",
|
|
7
|
+
"404": "Не найдено",
|
|
8
|
+
"413": "Слишком большой запрос",
|
|
9
|
+
"419": "Проблемы с токеном CSRF",
|
|
10
|
+
"422": "Неверный запрос",
|
|
11
|
+
"500": "Внутренняя ошибка сервера",
|
|
12
|
+
"504": "Превышено время ожидания"
|
|
13
|
+
},
|
|
14
|
+
"form-sender": {
|
|
15
|
+
"bootstrap_not_found": "VGApp не удалось найти bootstrap, модалки не будут закрыты, попробуйте сделать это через коллбек afterSend."
|
|
16
|
+
},
|
|
17
|
+
"files": {
|
|
18
|
+
"is-count": "Превышен лимит по количеству файлов",
|
|
19
|
+
"is-sizes": "Превышен размер файл",
|
|
20
|
+
"is-types": "Недопустимый тип файла",
|
|
21
|
+
"is-total-size": "Превышен максимально разрешённый размер для выбранных файлов",
|
|
22
|
+
"titles": "Удаление файлов",
|
|
23
|
+
"title": "Удаление файлa",
|
|
24
|
+
"descriptions": "Вы действительно хотите удалить все загруженные файлы с сервера?",
|
|
25
|
+
"description": "Вернуть будет невозможно",
|
|
26
|
+
"drop-active": "Отпустите, чтобы загрузить"
|
|
27
|
+
},
|
|
28
|
+
"filepreview": {
|
|
29
|
+
"audio_title": "\u0410\u0443\u0434\u0438\u043e \u0444\u0430\u0439\u043b",
|
|
30
|
+
"image_title": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
|
|
31
|
+
"image_thumbnail_alt": "\u041c\u0438\u043d\u0438\u0430\u0442\u044e\u0440\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
|
|
32
|
+
"text_title": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0442\u0435\u043a\u0441\u0442\u0430",
|
|
33
|
+
"video_title": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0432\u0438\u0434\u0435\u043e",
|
|
34
|
+
"pdf_title": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 PDF",
|
|
35
|
+
"office_title": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
|
|
36
|
+
"archive_title": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0430\u0440\u0445\u0438\u0432\u0430",
|
|
37
|
+
"loading_text": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430...",
|
|
38
|
+
"loading_archive": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0430\u0440\u0445\u0438\u0432\u0430...",
|
|
39
|
+
"loading_entry": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0444\u0430\u0439\u043b\u0430 \u0438\u0437 \u0430\u0440\u0445\u0438\u0432\u0430...",
|
|
40
|
+
"cannot_open_file": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b",
|
|
41
|
+
"cannot_open_archive": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0430\u0440\u0445\u0438\u0432",
|
|
42
|
+
"cannot_preview_entry": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u0435",
|
|
43
|
+
"office_fallback": "\u0415\u0441\u043b\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u0435\u0432\u044c\u044e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0441\u043a\u0430\u0447\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b.",
|
|
44
|
+
"invalid_zip": "\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 ZIP-\u0444\u0430\u0439\u043b",
|
|
45
|
+
"central_directory_not_found": "\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
|
|
46
|
+
"archive_buffer_missing": "\u0411\u0443\u0444\u0435\u0440 \u0430\u0440\u0445\u0438\u0432\u0430 \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d",
|
|
47
|
+
"entry_corrupted": "\u0424\u0430\u0439\u043b \u0432 \u0430\u0440\u0445\u0438\u0432\u0435 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d",
|
|
48
|
+
"compression_not_supported": "\u041c\u0435\u0442\u043e\u0434 \u0441\u0436\u0430\u0442\u0438\u044f \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f",
|
|
49
|
+
"deflate_not_supported": "\u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0443 Deflate",
|
|
50
|
+
"unknown_error": "\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430",
|
|
51
|
+
"empty_file": "(\u043f\u0443\u0441\u0442\u043e\u0439 \u0444\u0430\u0439\u043b)",
|
|
52
|
+
"archive_empty_unsupported": "\u0410\u0440\u0445\u0438\u0432 \u043f\u0443\u0441\u0442\u043e\u0439 \u0438\u043b\u0438 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f.",
|
|
53
|
+
"archive_type_dir": "\u043f\u0430\u043f\u043a\u0430",
|
|
54
|
+
"archive_type_file": "\u0444\u0430\u0439\u043b",
|
|
55
|
+
"archive_table_name": "\u0418\u043c\u044f",
|
|
56
|
+
"archive_table_type": "\u0422\u0438\u043f",
|
|
57
|
+
"archive_table_packed": "\u0421\u0436\u0430\u0442\u044b\u0439",
|
|
58
|
+
"archive_table_size": "\u0420\u0430\u0437\u043c\u0435\u0440",
|
|
59
|
+
"archive_table_preview": "\u041f\u0440\u0435\u0432\u044c\u044e",
|
|
60
|
+
"pdf_page": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430",
|
|
61
|
+
"pdf_zoom": "\u041c\u0430\u0441\u0448\u0442\u0430\u0431"
|
|
27
62
|
},
|
|
28
63
|
"alert": {
|
|
29
|
-
"title": "Заголовок по умолчанию",
|
|
30
|
-
"description": "Описание текущего действия",
|
|
31
|
-
"reason": "Алерт уже открыт"
|
|
32
|
-
},
|
|
33
|
-
"select": {
|
|
34
|
-
"loading": "Загрузка"
|
|
35
|
-
}
|
|
36
|
-
}
|
|
64
|
+
"title": "Заголовок по умолчанию",
|
|
65
|
+
"description": "Описание текущего действия",
|
|
66
|
+
"reason": "Алерт уже открыт"
|
|
67
|
+
},
|
|
68
|
+
"select": {
|
|
69
|
+
"loading": "Загрузка"
|
|
70
|
+
}
|
|
71
|
+
}
|
package/app/modules/module-fn.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import EventHandler from "../utils/js/dom/event";
|
|
2
2
|
import {isDisabled, isEmptyObj} from "../utils/js/functions";
|
|
3
3
|
import Selectors from "../utils/js/dom/selectors";
|
|
4
|
+
import {getSVG as resolveSVGByFile} from "../utils/js/components/file-icon";
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Тут собраны вспомогательные скрипты для работы модулей
|
|
@@ -30,16 +31,21 @@ const getSVG = (name) => {
|
|
|
30
31
|
spinner: '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_290_5000)"><path d="M14.6414 8.58333C14.5128 10.1032 13.8685 11.5335 12.8153 12.6368C11.7621 13.7401 10.3634 14.4502 8.85109 14.6493C7.33883 14.8483 5.80396 14.5244 4.50113 13.7311C3.19831 12.9379 2.20584 11.7231 1.68838 10.2882C1.17092 8.85338 1.15958 7.28474 1.65623 5.84255C2.15289 4.40037 3.12769 3.17133 4.41891 2.35934C5.71013 1.54735 7.24015 1.20123 8.75514 1.37839C10.2701 1.55555 11.679 2.24534 12.748 3.33333H10.6667C10.4899 3.33333 10.3203 3.40357 10.1953 3.5286C10.0703 3.65362 10 3.82319 10 4C10 4.17681 10.0703 4.34638 10.1953 4.47141C10.3203 4.59643 10.4899 4.66667 10.6667 4.66667H13.4287C13.757 4.66649 14.0718 4.536 14.3039 4.30387C14.5361 4.07174 14.6665 3.75695 14.6667 3.42867V0.666667C14.6667 0.489856 14.5965 0.320286 14.4715 0.195262C14.3464 0.0702379 14.1769 0 14 0C13.8232 0 13.6537 0.0702379 13.5286 0.195262C13.4036 0.320286 13.3334 0.489856 13.3334 0.666667V2.052C11.9925 0.853819 10.2866 0.142989 8.4917 0.0344742C6.69675 -0.0740408 4.91768 0.426105 3.44222 1.45402C1.96675 2.48194 0.881175 3.97752 0.361055 5.69888C-0.159065 7.42024 -0.0833125 9.26672 0.57606 10.9397C1.23543 12.6127 2.43987 14.0143 3.99457 14.9179C5.54928 15.8215 7.36334 16.1742 9.14336 15.9191C10.9234 15.6639 12.5653 14.8157 13.8035 13.5117C15.0417 12.2077 15.8039 10.5242 15.9667 8.73333C15.9753 8.6405 15.9645 8.54688 15.9349 8.45846C15.9054 8.37003 15.8577 8.28873 15.795 8.21974C15.7323 8.15075 15.6559 8.09559 15.5707 8.05775C15.4854 8.01992 15.3933 8.00025 15.3 8C15.1374 7.99804 14.9799 8.05669 14.8581 8.16452C14.7364 8.27236 14.6591 8.42165 14.6414 8.58333Z" fill="black" fill-opacity="0.35"/></g><defs><clipPath id="clip0_290_5000"><rect width="16" height="16" fill="white"/></clipPath></defs></svg>',
|
|
31
32
|
check: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.29448 19L3 12.8378L4.57362 11.2973L9.29448 15.9189L19.4264 6L21 7.54054L9.29448 19Z" fill="black"/></svg>',
|
|
32
33
|
'cloud-dot': '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.1401 13.925C14.2399 13.9266 14.3378 13.8983 14.4213 13.8438C14.5049 13.7893 14.5702 13.711 14.6089 13.6191C14.6476 13.5272 14.6579 13.4258 14.6385 13.3279C14.6192 13.2301 14.5709 13.1402 14.5001 13.07L12.0001 10.57L9.50011 13.07C9.4182 13.1657 9.3754 13.2887 9.38026 13.4145C9.38512 13.5404 9.43728 13.6597 9.52633 13.7488C9.61538 13.8378 9.73475 13.89 9.86058 13.8949C9.98642 13.8997 10.1095 13.8569 10.2051 13.775L11.5001 12.5V18.625C11.5001 18.7576 11.5528 18.8848 11.6466 18.9786C11.7403 19.0723 11.8675 19.125 12.0001 19.125C12.1327 19.125 12.2599 19.0723 12.3537 18.9786C12.4474 18.8848 12.5001 18.7576 12.5001 18.625V12.5L13.7851 13.785C13.8803 13.8768 14.0079 13.9271 14.1401 13.925Z" fill="black"/><path d="M18.46 9.71996C18.0211 9.77884 17.5751 9.7551 17.145 9.64996V9.76496L17.105 10.125L17.43 10.275C18.0502 10.5605 18.5545 11.0491 18.8595 11.6601C19.1645 12.271 19.2519 12.9677 19.1074 13.6351C18.9628 14.3024 18.5949 14.9005 18.0645 15.3305C17.5341 15.7605 16.8728 15.9966 16.19 16H13.5V17H16.19C17.0395 16.9958 17.8657 16.7214 18.5488 16.2163C19.2319 15.7112 19.7364 15.0017 19.9893 14.1907C20.2422 13.3797 20.2303 12.5092 19.9553 11.7054C19.6804 10.9016 19.1566 10.2062 18.46 9.71996Z" fill="black"/><path d="M4.80029 12.19C4.80848 11.2 5.19728 10.251 5.88612 9.53986C6.57495 8.82869 7.51101 8.40981 8.50029 8.37003H8.83529L8.95029 8.05503C9.2604 7.2496 9.81028 6.55878 10.5256 6.07591C11.241 5.59305 12.0873 5.34142 12.9503 5.35503C13.4051 5.35535 13.8572 5.42619 14.2903 5.56503C14.3299 5.23197 14.414 4.90573 14.5403 4.59503C14.0252 4.43613 13.4893 4.35523 12.9503 4.35503C11.9414 4.3468 10.9516 4.63029 10.1 5.1714C9.24844 5.7125 8.57138 6.48816 8.15029 7.40503C6.96363 7.53241 5.86506 8.09111 5.06315 8.97505C4.26125 9.85898 3.81186 11.0066 3.80029 12.2C3.8016 12.8321 3.92748 13.4577 4.17073 14.0411C4.41398 14.6245 4.76984 15.1543 5.21794 15.6001C5.66605 16.0459 6.19763 16.3989 6.78229 16.6392C7.36695 16.8794 7.99321 17.002 8.62529 17H10.5003V16H8.62529C7.61384 15.9987 6.64396 15.5974 5.92735 14.8836C5.21074 14.1698 4.80557 13.2015 4.80029 12.19Z" fill="black"/><path class="dot" d="M18 8.5C19.3807 8.5 20.5 7.38071 20.5 6C20.5 4.61929 19.3807 3.5 18 3.5C16.6193 3.5 15.5 4.61929 15.5 6C15.5 7.38071 16.6193 8.5 18 8.5Z" fill="black"/></svg>',
|
|
33
|
-
'file-generic': '<svg xmlns="http://www.w3.org/2000/svg"
|
|
34
|
-
'file-
|
|
35
|
-
'file-word': '<svg xmlns="http://www.w3.org/2000/svg"
|
|
36
|
-
'file-
|
|
37
|
-
'file-
|
|
38
|
-
'file-
|
|
39
|
-
'file-
|
|
34
|
+
'file-generic': '<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M106.825 36.075L79.925 9.175C79.175 8.425 78.1625 8 77.1 8H24C21.7875 8 20 9.7875 20 12V116C20 118.213 21.7875 120 24 120H104C106.213 120 108 118.213 108 116V38.9125C108 37.85 107.575 36.825 106.825 36.075ZM98.775 40.75H75.25V17.225L98.775 40.75ZM99 111H29V17H66.75V44C66.75 45.3924 67.3031 46.7277 68.2877 47.7123C69.2723 48.6969 70.6076 49.25 72 49.25H99V111Z" fill="black"/></svg>',
|
|
35
|
+
'file-exel': '<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M106.825 36.075L79.925 9.175C79.175 8.425 78.1625 8 77.1 8H24C21.7875 8 20 9.7875 20 12V116C20 118.213 21.7875 120 24 120H104C106.213 120 108 118.213 108 116V38.9125C108 37.85 107.575 36.825 106.825 36.075ZM98.775 40.75H75.25V17.225L98.775 40.75ZM99 111H29V17H66.75V44C66.75 45.3924 67.3031 46.7277 68.2877 47.7123C69.2723 48.6969 70.6076 49.25 72 49.25H99V111ZM64.2625 72.5125L56.5375 59.7125C56.2625 59.2625 55.775 58.9875 55.25 58.9875H50.45C50.1625 58.9875 49.8875 59.0625 49.65 59.225C48.95 59.6625 48.7375 60.5875 49.1875 61.3L59.475 77.6L49.05 94.2C48.9084 94.4277 48.8301 94.6891 48.8234 94.9571C48.8166 95.2252 48.8816 95.4902 49.0116 95.7247C49.1416 95.9592 49.3319 96.1547 49.5628 96.291C49.7937 96.4273 50.0569 96.4995 50.325 96.5H54.6375C55.1625 96.5 55.6375 96.225 55.9125 95.7875L63.75 83.1L71.5375 95.775C71.8125 96.225 72.3 96.4875 72.8125 96.4875H77.5C77.7875 96.4875 78.0625 96.4 78.3125 96.25C79.0125 95.8 79.2125 94.875 78.7625 94.175L68.2625 77.875L78.925 61.3125C79.0693 61.0855 79.1502 60.824 79.1591 60.5551C79.1681 60.2863 79.1048 60.0199 78.9759 59.7838C78.847 59.5477 78.6572 59.3505 78.4262 59.2126C78.1952 59.0748 77.9315 59.0013 77.6625 59H73.2C72.675 59 72.1875 59.275 71.9125 59.725L64.2625 72.5125Z" fill="black"/></svg>',
|
|
36
|
+
'file-word': '<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M106.825 36.075L79.925 9.175C79.175 8.425 78.1625 8 77.1 8H24C21.7875 8 20 9.7875 20 12V116C20 118.213 21.7875 120 24 120H104C106.213 120 108 118.213 108 116V38.9125C108 37.85 107.575 36.825 106.825 36.075ZM98.775 40.75H75.25V17.225L98.775 40.75ZM99 111H29V17H66.75V44C66.75 45.3924 67.3031 46.7277 68.2877 47.7123C69.2723 48.6969 70.6076 49.25 72 49.25H99V111ZM66.0125 59H61.9875C61.3 59 60.7 59.4625 60.5375 60.1375L54.325 85L48.5625 60.1625C48.4 59.4875 47.8 59 47.1 59H42.675C42.4451 59.0004 42.2183 59.0535 42.0121 59.1553C41.806 59.2571 41.6259 59.4048 41.4858 59.5872C41.3458 59.7695 41.2494 59.9816 41.2042 60.207C41.159 60.4324 41.1661 60.6652 41.225 60.8875L50.5 95.3875C50.675 96.0375 51.275 96.5 51.95 96.5H55.95C56.625 96.5 57.225 96.05 57.4 95.3875L64 70.7625L70.6 95.3875C70.775 96.0375 71.375 96.5 72.05 96.5H76.025C76.7 96.5 77.3 96.05 77.475 95.3875L86.775 60.8875C86.8334 60.6653 86.8401 60.4326 86.7947 60.2074C86.7493 59.9822 86.6529 59.7703 86.5129 59.5881C86.3729 59.4059 86.1931 59.2582 85.9872 59.1562C85.7813 59.0543 85.5548 59.0009 85.325 59H80.875C80.175 59 79.575 59.4875 79.4125 60.1625L73.6875 85.05L67.4625 60.1375C67.3 59.4625 66.7 59 66.0125 59Z" fill="black"/></svg>',
|
|
37
|
+
'file-pdf': '<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M66.4125 71.8L66.45 71.625C67.175 68.6375 68.0875 64.9125 67.375 61.5375C66.9 58.875 64.9375 57.8375 63.2625 57.7625C61.2875 57.675 59.525 58.8 59.0875 60.4375C58.2625 63.4375 59 67.5375 60.35 72.7625C58.65 76.8125 55.9375 82.7 53.95 86.2C50.25 88.1125 45.2875 91.0625 44.55 94.7875C44.4 95.475 44.575 96.35 44.9875 97.1375C45.45 98.0125 46.1875 98.6875 47.05 99.0125C47.425 99.15 47.875 99.2625 48.4 99.2625C50.6 99.2625 54.1625 97.4875 58.9125 89.3375C59.6375 89.1 60.3875 88.85 61.1125 88.6C64.5125 87.45 68.0375 86.25 71.225 85.7125C74.75 87.6 78.7625 88.8125 81.4875 88.8125C84.1875 88.8125 85.25 87.2125 85.65 86.25C86.35 84.5625 86.0125 82.4375 84.875 81.3C83.225 79.675 79.2125 79.25 72.9625 80.025C69.8875 78.15 67.875 75.6 66.4125 71.8ZM52.7 90.7875C50.9625 93.3125 49.65 94.575 48.9375 95.125C49.775 93.5875 51.4125 91.9625 52.7 90.7875ZM63.65 61.35C64.3 62.4625 64.2125 65.825 63.7125 67.525C63.1 65.0375 63.0125 61.5125 63.375 61.1C63.475 61.1125 63.5625 61.1875 63.65 61.35ZM63.45 76.4125C64.7875 78.725 66.475 80.7125 68.3375 82.1875C65.6375 82.8 63.175 83.8125 60.975 84.7125C60.45 84.925 59.9375 85.1375 59.4375 85.3375C61.1 82.325 62.4875 78.9125 63.45 76.4125ZM82.9 84.6C82.9125 84.625 82.925 84.6625 82.85 84.7125H82.825L82.8 84.75C82.7 84.8125 81.675 85.4125 77.2625 83.675C82.3375 83.4375 82.8875 84.5875 82.9 84.6ZM106.825 36.075L79.925 9.175C79.175 8.425 78.1625 8 77.1 8H24C21.7875 8 20 9.7875 20 12V116C20 118.213 21.7875 120 24 120H104C106.213 120 108 118.213 108 116V38.9125C108 37.85 107.575 36.825 106.825 36.075ZM98.775 40.75H75.25V17.225L98.775 40.75ZM99 111H29V17H66.75V44C66.75 45.3924 67.3031 46.7277 68.2877 47.7123C69.2723 48.6969 70.6076 49.25 72 49.25H99V111Z" fill="black"/></svg>',
|
|
38
|
+
'file-zip': '<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M37 49H45V57H37V49ZM37 72.75V92.75H53V72.75H45V65H37V72.75ZM47 78.75V86.75H43V78.75H47ZM45 41H53V49H45V41ZM37 33H45V41H37V33ZM45 57H53V65H45V57ZM45 25H53V33H45V25ZM106.825 36.075L79.925 9.175C79.175 8.425 78.1625 8 77.1 8H24C21.7875 8 20 9.7875 20 12V116C20 118.213 21.7875 120 24 120H104C106.213 120 108 118.213 108 116V38.9125C108 37.85 107.575 36.825 106.825 36.075ZM98.775 40.75H75.25V17.225L98.775 40.75ZM99 111H29V17H37V25H45V17H66.75V44C66.75 45.3924 67.3031 46.7277 68.2877 47.7123C69.2723 48.6969 70.6076 49.25 72 49.25H99V111Z" fill="black"/></svg>',
|
|
39
|
+
'file-text': '<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M106.825 36.075L79.925 9.175C79.175 8.425 78.1625 8 77.1 8H24C21.7875 8 20 9.7875 20 12V116C20 118.213 21.7875 120 24 120H104C106.213 120 108 118.213 108 116V38.9125C108 37.85 107.575 36.825 106.825 36.075ZM98.775 40.75H75.25V17.225L98.775 40.75ZM99 111H29V17H66.75V44C66.75 45.3924 67.3031 46.7277 68.2877 47.7123C69.2723 48.6969 70.6076 49.25 72 49.25H99V111ZM63 77.25H40C39.45 77.25 39 77.7 39 78.25V84.25C39 84.8 39.45 85.25 40 85.25H63C63.55 85.25 64 84.8 64 84.25V78.25C64 77.7 63.55 77.25 63 77.25ZM39 61.25V67.25C39 67.8 39.45 68.25 40 68.25H88C88.55 68.25 89 67.8 89 67.25V61.25C89 60.7 88.55 60.25 88 60.25H40C39.45 60.25 39 60.7 39 61.25Z" fill="black"/></svg>',
|
|
40
|
+
'file-image': '<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M69.1375 63.6375L59.4125 76.0375L54.275 69.4875C54.1815 69.368 54.0619 69.2713 53.9255 69.2048C53.7891 69.1384 53.6393 69.1038 53.4875 69.1038C53.3357 69.1038 53.1859 69.1384 53.0495 69.2048C52.9131 69.2713 52.7935 69.368 52.7 69.4875L40.225 85.3875C40.1096 85.5349 40.038 85.7118 40.0183 85.8979C39.9987 86.0841 40.0319 86.272 40.114 86.4402C40.1962 86.6084 40.324 86.7501 40.4829 86.8491C40.6418 86.9481 40.8253 87.0004 41.0125 87H87C87.8375 87 88.3 86.0375 87.7875 85.3875L70.725 63.6375C70.6302 63.5178 70.5096 63.4211 70.3721 63.3546C70.2347 63.2881 70.0839 63.2536 69.9313 63.2536C69.7786 63.2536 69.6278 63.2881 69.4904 63.3546C69.3529 63.4211 69.2323 63.5178 69.1375 63.6375ZM45 55.25C45 56.5761 45.5268 57.8479 46.4645 58.7855C47.4021 59.7232 48.6739 60.25 50 60.25C51.3261 60.25 52.5979 59.7232 53.5355 58.7855C54.4732 57.8479 55 56.5761 55 55.25C55 53.9239 54.4732 52.6521 53.5355 51.7145C52.5979 50.7768 51.3261 50.25 50 50.25C48.6739 50.25 47.4021 50.7768 46.4645 51.7145C45.5268 52.6521 45 53.9239 45 55.25ZM106.825 36.075L79.925 9.175C79.175 8.425 78.1625 8 77.1 8H24C21.7875 8 20 9.7875 20 12V116C20 118.213 21.7875 120 24 120H104C106.213 120 108 118.213 108 116V38.9125C108 37.85 107.575 36.825 106.825 36.075ZM98.775 40.75H75.25V17.225L98.775 40.75ZM99 111H29V17H66.75V44C66.75 45.3924 67.3031 46.7277 68.2877 47.7123C69.2723 48.6969 70.6076 49.25 72 49.25H99V111Z" fill="black"/></svg>',
|
|
41
|
+
'file-audio': '<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M106.825 36.075L79.925 9.175C79.175 8.425 78.1625 8 77.1 8H24C21.7875 8 20 9.7875 20 12V116C20 118.213 21.7875 120 24 120H104C106.213 120 108 118.213 108 116V38.9125C108 37.85 107.575 36.825 106.825 36.075ZM98.775 40.75H75.25V17.225L98.775 40.75ZM99 111H29V17H66.75V44C66.75 45.3924 67.3031 46.7277 68.2877 47.7123C69.2723 48.6969 70.6076 49.25 72 49.25H99V111Z" fill="black"/><path d="M64.6781 93.0344C62.701 95.0114 60.2677 96 57.3781 96C54.4885 96 52.0552 95.0114 50.0781 93.0344C48.1011 91.0573 47.1125 88.624 47.1125 85.7344C47.1125 82.8448 48.1011 80.4115 50.0781 78.4344C52.0552 76.4573 54.4885 75.4688 57.3781 75.4688C58.4458 75.4657 59.4541 75.598 60.4031 75.8657C61.3521 76.1333 62.2448 76.5714 63.0813 77.1797V64.0625C63.0843 62.7728 63.5223 61.69 64.3953 60.814C65.2682 59.938 66.351 59.5 67.6438 59.5H76.7688C78.0615 59.5 79.1443 59.938 80.0172 60.814C80.8902 61.69 81.3282 62.7728 81.3313 64.0625C81.3343 65.3522 80.8978 66.435 80.0218 67.311C79.1458 68.187 78.0615 68.625 76.7688 68.625H67.6438V85.7344C67.6438 88.624 66.6552 91.0573 64.6781 93.0344Z" fill="black"/></svg>',
|
|
42
|
+
'file-video': '<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M106.825 36.075L79.925 9.175C79.175 8.425 78.1625 8 77.1 8H24C21.7875 8 20 9.7875 20 12V116C20 118.213 21.7875 120 24 120H104C106.213 120 108 118.213 108 116V38.9125C108 37.85 107.575 36.825 106.825 36.075ZM98.775 40.75H75.25V17.225L98.775 40.75ZM99 111H29V17H66.75V44C66.75 45.3924 67.3031 46.7277 68.2877 47.7123C69.2723 48.6969 70.6076 49.25 72 49.25H99V111Z" fill="black"/><path d="M44.2566 71.7109C44.2566 70.0637 44.911 68.4839 46.0758 67.3191C47.2405 66.1544 48.8203 65.5 50.4676 65.5H64.5457C66.1929 65.5 67.7727 66.1544 68.9375 67.3191C70.1023 68.4839 70.7566 70.0637 70.7566 71.7109V85.7891C70.7566 87.4363 70.1023 89.0161 68.9375 90.1809C67.7727 91.3456 66.1929 92 64.5457 92H50.4676C48.8203 92 47.2405 91.3456 46.0758 90.1809C44.911 89.0161 44.2566 87.4363 44.2566 85.7891V71.7109ZM79.4552 89.8187L72.4129 84.956V72.5391L79.4552 67.6763C81.3765 66.348 84 67.726 84 70.0613V87.4354C84 89.7707 81.3782 91.1454 79.4552 89.8187Z" fill="black"/></svg>',
|
|
43
|
+
'download': '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5"/><path d="M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708z"/></svg>',
|
|
44
|
+
'play': '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="M10.804 8 5 4.633v6.734zm.792-.696a.802.802 0 0 1 0 1.392l-6.363 3.692C4.713 12.69 4 12.345 4 11.692V4.308c0-.653.713-.998 1.233-.696z"/></svg>',
|
|
45
|
+
'pause': '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="M6.25 5C5.56 5 5 5.56 5 6.25v3.5a1.25 1.25 0 1 0 2.5 0v-3.5C7.5 5.56 6.94 5 6.25 5m3.5 0c-.69 0-1.25.56-1.25 1.25v3.5a1.25 1.25 0 1 0 2.5 0v-3.5C11 5.56 10.44 5 9.75 5"/></svg>',
|
|
40
46
|
};
|
|
41
47
|
|
|
42
|
-
return
|
|
48
|
+
return resolveSVGByFile(name, svg);
|
|
43
49
|
}
|
|
44
50
|
|
|
45
51
|
/**
|
|
@@ -67,4 +73,4 @@ const dismissTrigger = (module, method = 'hide') => {
|
|
|
67
73
|
|
|
68
74
|
export {
|
|
69
75
|
dismissTrigger, getSVG
|
|
70
|
-
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { lang_buttons, lang_messages } from "../../../utils/js/components/lang";
|
|
2
|
+
|
|
3
|
+
const SUPPORTED_LANGS = new Set(["ru", "en"]);
|
|
4
|
+
|
|
5
|
+
const normalizeLang = (value, fallback = "ru") => {
|
|
6
|
+
const candidate = String(value || "").trim().toLowerCase();
|
|
7
|
+
if (!candidate) {
|
|
8
|
+
return fallback;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const short = candidate.split("-")[0];
|
|
12
|
+
return SUPPORTED_LANGS.has(short) ? short : fallback;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const resolveFilePreviewLang = (paramsLang, element) => {
|
|
16
|
+
const fromParams = normalizeLang(paramsLang, "");
|
|
17
|
+
if (fromParams) {
|
|
18
|
+
return fromParams;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const fromElement = normalizeLang(element?.getAttribute("lang"), "");
|
|
22
|
+
if (fromElement) {
|
|
23
|
+
return fromElement;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const fromClosest = normalizeLang(element?.closest("[lang]")?.getAttribute("lang"), "");
|
|
27
|
+
if (fromClosest) {
|
|
28
|
+
return fromClosest;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const fromHtml = normalizeLang(document?.documentElement?.getAttribute("lang"), "");
|
|
32
|
+
if (fromHtml) {
|
|
33
|
+
return fromHtml;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const fromNavigator = normalizeLang(window?.navigator?.language, "");
|
|
37
|
+
if (fromNavigator) {
|
|
38
|
+
return fromNavigator;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return "ru";
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const createFilePreviewI18n = (lang = "ru") => {
|
|
45
|
+
const normalizedLang = normalizeLang(lang, "ru");
|
|
46
|
+
const messages = lang_messages(normalizedLang, "filepreview") || {};
|
|
47
|
+
const buttons = lang_buttons(normalizedLang, "filepreview") || {};
|
|
48
|
+
|
|
49
|
+
return {
|
|
50
|
+
lang: normalizedLang,
|
|
51
|
+
message: (key, fallback = "") => messages[key] || fallback,
|
|
52
|
+
button: (key, fallback = "") => buttons[key] || fallback
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export { createFilePreviewI18n, resolveFilePreviewLang };
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import VGModal from "../../../vgmodal";
|
|
2
|
+
|
|
3
|
+
class ImageModal {
|
|
4
|
+
constructor() {
|
|
5
|
+
this._modalId = 'vg-filepreview-image-modal';
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
static getInstance() {
|
|
9
|
+
if (!ImageModal._instance) {
|
|
10
|
+
ImageModal._instance = new ImageModal();
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
return ImageModal._instance;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
open(payload = {}) {
|
|
17
|
+
const src = String(payload.src || '').trim();
|
|
18
|
+
if (!src) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
this._ensureModal();
|
|
23
|
+
if (!this._modal || !this._image) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const defaultTitle = String(payload.defaultTitle || '').trim();
|
|
28
|
+
const title = String(payload.title || '').trim();
|
|
29
|
+
this._title.textContent = title || defaultTitle;
|
|
30
|
+
this._image.src = src;
|
|
31
|
+
this._image.alt = title || defaultTitle;
|
|
32
|
+
|
|
33
|
+
this._modal.show();
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
close() {
|
|
37
|
+
if (!this._modal) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
this._modal.hide();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
_ensureModal() {
|
|
45
|
+
if (this._modal && this._root) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
this._initModal();
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
_initModal() {
|
|
53
|
+
const params = {
|
|
54
|
+
centered: true,
|
|
55
|
+
dismiss: true,
|
|
56
|
+
backdrop: true,
|
|
57
|
+
keyboard: true,
|
|
58
|
+
sizes: {
|
|
59
|
+
width: 'fit-content',
|
|
60
|
+
},
|
|
61
|
+
animation: {
|
|
62
|
+
enable: false
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const existed = document.getElementById(this._modalId);
|
|
67
|
+
if (existed) {
|
|
68
|
+
this._root = existed;
|
|
69
|
+
this._modal = VGModal.getOrCreateInstance(existed, params);
|
|
70
|
+
this._bindElements(existed);
|
|
71
|
+
this._bindLifecycle(existed);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
this._modal = VGModal.build(this._modalId, params, (modalInstance) => {
|
|
76
|
+
const element = modalInstance._element;
|
|
77
|
+
this._root = element;
|
|
78
|
+
element.classList.add('vg-filepreview-image-modal');
|
|
79
|
+
|
|
80
|
+
const body = element.querySelector('.vg-modal-body');
|
|
81
|
+
const content = element.querySelector('.vg-modal-content');
|
|
82
|
+
if (!body || !content) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
body.classList.add('vg-filepreview-image-modal__body');
|
|
87
|
+
body.innerHTML = '';
|
|
88
|
+
|
|
89
|
+
let header = element.querySelector('.vg-modal-header');
|
|
90
|
+
if (!header) {
|
|
91
|
+
header = document.createElement('div');
|
|
92
|
+
header.className = 'vg-modal-header';
|
|
93
|
+
content.prepend(header);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
this._title = document.createElement('div');
|
|
97
|
+
this._title.className = 'vg-modal-title';
|
|
98
|
+
this._title.textContent = '';
|
|
99
|
+
|
|
100
|
+
this._image = document.createElement('img');
|
|
101
|
+
this._image.className = 'vg-filepreview-image-modal__img';
|
|
102
|
+
this._image.loading = 'eager';
|
|
103
|
+
this._image.decoding = 'async';
|
|
104
|
+
|
|
105
|
+
header.appendChild(this._title);
|
|
106
|
+
body.appendChild(this._image);
|
|
107
|
+
|
|
108
|
+
this._bindLifecycle(element);
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
_bindElements(root) {
|
|
113
|
+
this._title = root.querySelector('.vg-filepreview-image-modal__title');
|
|
114
|
+
this._image = root.querySelector('.vg-filepreview-image-modal__img');
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
_bindLifecycle(root) {
|
|
118
|
+
if (!root || root.hasAttribute('data-vg-filepreview-image-lifecycle-bind')) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
root.setAttribute('data-vg-filepreview-image-lifecycle-bind', 'true');
|
|
123
|
+
root.addEventListener('vg.modal.hidden', () => {
|
|
124
|
+
this._destroyModal();
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
_destroyModal() {
|
|
129
|
+
if (this._modal && typeof this._modal.dispose === 'function') {
|
|
130
|
+
this._modal.dispose();
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (this._root && this._root.parentNode) {
|
|
134
|
+
this._root.parentNode.removeChild(this._root);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
this._root = null;
|
|
138
|
+
this._modal = null;
|
|
139
|
+
this._title = null;
|
|
140
|
+
this._image = null;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export default ImageModal;
|