@webitel/ui-sdk 26.8.143 → 26.8.145

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 (62) hide show
  1. package/dist/clients-C8iQUpKL.js +42497 -0
  2. package/dist/components-DDe2Hor4.js +20560 -0
  3. package/dist/ui-sdk.css +1 -1
  4. package/dist/ui-sdk.js +2 -2
  5. package/dist/ui-sdk.umd.cjs +753 -707
  6. package/dist/{wt-button-BLEIP7Ul.js → wt-button-DipbKGWn.js} +1 -1
  7. package/dist/{wt-chat-emoji-Cz1dfX6E.js → wt-chat-emoji-qxtZmAHe.js} +3 -3
  8. package/dist/{wt-display-chip-items-DY8RhRhk.js → wt-display-chip-items-ChCoDhQE.js} +1 -1
  9. package/dist/{wt-icon-HJ-8Ql3f.js → wt-icon-B9Yy9aye.js} +4 -0
  10. package/dist/{wt-icon-btn-BPrsZBsV.js → wt-icon-btn-8EHSKSxB.js} +1 -1
  11. package/dist/{wt-notifications-bar-CH8jvmxk.js → wt-notifications-bar-DDuf0Ui1.js} +1 -1
  12. package/dist/{wt-player-B1lDB4Si.js → wt-player-BJrKbYMu.js} +2 -2
  13. package/dist/{wt-send-message-popup-xVQ8pawy.js → wt-send-message-popup-0lqmtkJP.js} +2 -2
  14. package/dist/{wt-table-BI5co1ib.js → wt-table-Cy3TfK4i.js} +1 -1
  15. package/dist/{wt-toast-DHXNCmad.js → wt-toast-3-3ZylQ9.js} +1 -1
  16. package/dist/{wt-tree-table-BS25vpCH.js → wt-tree-table-K5UphR9W.js} +1 -1
  17. package/dist/wt-type-extension-value-input-D2k5q8tl.js +377 -0
  18. package/dist/{wt-vidstack-player-CgqE6NyQ.js → wt-vidstack-player-CZi8PLJN.js} +3 -3
  19. package/package.json +1 -1
  20. package/src/assets/icons/sprite/history--filled.svg +4 -0
  21. package/src/assets/icons/sprite/home--filled.svg +3 -0
  22. package/src/assets/icons/sprite/home.svg +3 -0
  23. package/src/assets/icons/sprite/index.ts +8 -0
  24. package/src/assets/icons/sprite/job--filled.svg +3 -0
  25. package/src/components/wt-navigation-rail/_internals/navigation-rail-button.vue +2 -3
  26. package/src/locale/en/en.js +3 -1
  27. package/src/locale/es/es.js +2 -0
  28. package/src/locale/kz/kz.js +2 -0
  29. package/src/locale/pl/pl.js +2 -0
  30. package/src/locale/ro/ro.js +2 -0
  31. package/src/locale/ru/ru.js +2 -0
  32. package/src/locale/uk/uk.js +2 -0
  33. package/src/locale/uz/uz.js +2 -0
  34. package/src/locale/vi/vi.js +2 -0
  35. package/src/scripts/__tests__/reloadOnStaleChunk.spec.js +58 -0
  36. package/src/scripts/index.js +2 -0
  37. package/src/scripts/reloadOnStaleChunk.ts +41 -0
  38. package/types/.tsbuildinfo +1 -1
  39. package/types/components/wt-input-number/wt-input-number.vue.d.ts +1 -1
  40. package/types/components/wt-player/wt-player.vue.d.ts +1 -1
  41. package/types/components/wt-slider/wt-slider.vue.d.ts +2 -2
  42. package/types/components/wt-time-input/wt-time-input.vue.d.ts +1 -1
  43. package/types/components/wt-timepicker/wt-timepicker.vue.d.ts +1 -1
  44. package/types/locale/en/en.d.ts +1 -0
  45. package/types/locale/es/es.d.ts +1 -0
  46. package/types/locale/i18n.d.ts +9 -0
  47. package/types/locale/index.d.ts +9 -0
  48. package/types/locale/kz/kz.d.ts +1 -0
  49. package/types/locale/pl/pl.d.ts +1 -0
  50. package/types/locale/ro/ro.d.ts +1 -0
  51. package/types/locale/ru/ru.d.ts +1 -0
  52. package/types/locale/uk/uk.d.ts +1 -0
  53. package/types/locale/uz/uz.d.ts +1 -0
  54. package/types/locale/vi/vi.d.ts +1 -0
  55. package/types/modules/Flow/lookups/FlowTypeApplications.lookup.d.ts +5 -5
  56. package/types/modules/ObjectPermissions/components/_internal/permissions-tab-content.vue.d.ts +1 -1
  57. package/types/scripts/__tests__/reloadOnStaleChunk.spec.d.ts +1 -0
  58. package/types/scripts/index.d.ts +2 -1
  59. package/types/scripts/reloadOnStaleChunk.d.ts +1 -0
  60. package/dist/clients-BI07wbj4.js +0 -42477
  61. package/dist/components-xyPRJvNX.js +0 -6009
  62. package/dist/wt-type-extension-value-input-CQHPQrQs.js +0 -14846
@@ -963,6 +963,8 @@ export default {
963
963
  'Conexión WebSocket perdida. Por favor, recargue la página.',
964
964
  chatHistoryApi: 'Hubo un error al cargar el historial del chat',
965
965
  markChatProcessed: 'Error al mover el chat a "Cerrado"',
966
+ chunkLoadError:
967
+ 'No se pudo cargar la página. Recargue la página o inténtelo más tarde.',
966
968
  },
967
969
  connectionQuality: {
968
970
  high: 'Excelente calidad de red.',
@@ -963,6 +963,8 @@ export default {
963
963
  websocketDisconnect: 'WebSocket қосылымы үзілді. Бетті қайта жүктеңіз.',
964
964
  chatHistoryApi: 'Чат тарихын жүктеу кезінде қате орын алды',
965
965
  markChatProcessed: 'Чатты "Жабылған" күйіне ауыстыру сәтсіз аяқталды',
966
+ chunkLoadError:
967
+ 'Бетті жүктеу мүмкін болмады. Бетті жаңартыңыз немесе кейінірек қайталап көріңіз.',
966
968
  },
967
969
  connectionQuality: {
968
970
  high: 'Желі сапасы отличная.',
@@ -962,6 +962,8 @@ export default {
962
962
  'Połączenie WebSocket zostało utracone. Proszę przeładować stronę.',
963
963
  chatHistoryApi: 'Wystąpił błąd podczas ładowania historii czatu',
964
964
  markChatProcessed: 'Nie udało się przenieść czatu do "Zamkniętych"',
965
+ chunkLoadError:
966
+ 'Nie udało się załadować strony. Odśwież stronę lub spróbuj ponownie później.',
965
967
  },
966
968
  connectionQuality: {
967
969
  high: 'Doskonała jakość sieci.',
@@ -968,6 +968,8 @@ export default {
968
968
  'Conexiunea WebSocket a fost pierdută. Vă rugăm să reîncărcați pagina.',
969
969
  chatHistoryApi: 'A apărut o eroare la încărcarea istoricului chat-ului',
970
970
  markChatProcessed: 'Nu s-a putut muta chat-ul în "Închis"',
971
+ chunkLoadError:
972
+ 'Pagina nu a putut fi încărcată. Reîncărcați pagina sau încercați mai târziu.',
971
973
  },
972
974
  connectionQuality: {
973
975
  high: 'Calitate excelentă a rețelei.',
@@ -958,6 +958,8 @@ export default {
958
958
  'Соединение WebSocket потеряно. Перезагрузите страницу.',
959
959
  chatHistoryApi: 'Произошла ошибка загрузки истории чата',
960
960
  markChatProcessed: 'Не удалось переместить чат в “Закрытые”',
961
+ chunkLoadError:
962
+ 'Не удалось загрузить страницу. Обновите страницу или попробуйте позже.',
961
963
  },
962
964
  connectionQuality: {
963
965
  high: 'Отличное качество сети.',
@@ -955,6 +955,8 @@ export default {
955
955
  'Втрачено WebSocket з’єднання . Перезавантажте сторінку.',
956
956
  chatHistoryApi: 'Сталася помилка завантаження історії чату',
957
957
  markChatProcessed: 'Не вдалося перемістити чат у "Закриті"',
958
+ chunkLoadError:
959
+ 'Не вдалося завантажити сторінку. Оновіть сторінку або спробуйте пізніше.',
958
960
  },
959
961
  connectionQuality: {
960
962
  high: 'Відмінна якість мережі.',
@@ -967,6 +967,8 @@ export default {
967
967
  'WebSocket ulanishi uzildi. Iltimos, sahifani qayta yuklang.',
968
968
  chatHistoryApi: 'Chat tarixini yuklashda xatolik yuz berdi',
969
969
  markChatProcessed: 'Chatni "Yopilgan" holatiga o\'tkazib bo\'lmadi',
970
+ chunkLoadError:
971
+ 'Sahifani yuklab bo‘lmadi. Sahifani yangilang yoki keyinroq urinib ko‘ring.',
970
972
  },
971
973
  connectionQuality: {
972
974
  high: "A'lo tarmoq sifati.",
@@ -965,6 +965,8 @@ export default {
965
965
  websocketDisconnect: 'Mất kết nối WebSocket. Vui lòng tải lại trang.',
966
966
  chatHistoryApi: 'Đã xảy ra lỗi khi tải lịch sử trò chuyện',
967
967
  markChatProcessed: 'Không thể chuyển trò chuyện sang trạng thái "Đã đóng"',
968
+ chunkLoadError:
969
+ 'Không thể tải trang. Vui lòng tải lại trang hoặc thử lại sau.',
968
970
  },
969
971
  connectionQuality: {
970
972
  high: 'Chất lượng mạng tuyệt vời.',
@@ -0,0 +1,58 @@
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
2
+
3
+ import eventBus from '../eventBus';
4
+ import { reloadOnStaleChunk } from '../reloadOnStaleChunk';
5
+
6
+ describe('reloadOnStaleChunk', () => {
7
+ const reload = vi.fn();
8
+ const originalLocation = window.location;
9
+
10
+ beforeEach(() => {
11
+ Object.defineProperty(window, 'location', {
12
+ value: {
13
+ ...originalLocation,
14
+ reload,
15
+ },
16
+ writable: true,
17
+ });
18
+ sessionStorage.clear();
19
+ reload.mockClear();
20
+ });
21
+
22
+ afterEach(() => {
23
+ Object.defineProperty(window, 'location', {
24
+ value: originalLocation,
25
+ writable: true,
26
+ });
27
+ });
28
+
29
+ reloadOnStaleChunk();
30
+
31
+ const firePreloadError = () => {
32
+ const event = new Event('vite:preloadError', {
33
+ cancelable: true,
34
+ });
35
+ window.dispatchEvent(event);
36
+ return event;
37
+ };
38
+
39
+ it('reloads page and prevents error on stale chunk', () => {
40
+ const event = firePreloadError();
41
+ expect(reload).toHaveBeenCalledTimes(1);
42
+ expect(event.defaultPrevented).toBe(true);
43
+ });
44
+
45
+ it('notifies instead of reload if page was just reloaded', () => {
46
+ const emit = vi.spyOn(eventBus, '$emit');
47
+ firePreloadError();
48
+ const event = firePreloadError();
49
+ expect(reload).toHaveBeenCalledTimes(1);
50
+ expect(event.defaultPrevented).toBe(false);
51
+ expect(emit).toHaveBeenCalledWith(
52
+ 'notification',
53
+ expect.objectContaining({
54
+ type: 'error',
55
+ }),
56
+ );
57
+ });
58
+ });
@@ -32,6 +32,7 @@ import {
32
32
  import prettifyFileSize from './prettifyFileSize';
33
33
  import prettifyTime from './prettifyTime';
34
34
  import preventHiddenPageCallsDecorator from './preventHiddenPageCallsDecorator';
35
+ import { reloadOnStaleChunk } from './reloadOnStaleChunk';
35
36
  import saveAsJSON from './saveAsJSON';
36
37
  import {
37
38
  getNextSortOrder,
@@ -65,6 +66,7 @@ export {
65
66
  prettifyTime,
66
67
  preventHiddenPageCallsDecorator,
67
68
  queryToSortAdapter,
69
+ reloadOnStaleChunk,
68
70
  SortSymbols,
69
71
  saveAsJSON,
70
72
  sizeGreaterOrEqual,
@@ -0,0 +1,41 @@
1
+ // [Claude] Reload on a stale chunk after a new deploy invalidates old asset hashes.
2
+ // Vite fires this on any failed lazy chunk/CSS load: routes and async components alike.
3
+ // https://vite.dev/guide/build#load-error-handling
4
+ // https://webitel.atlassian.net/browse/WTEL-10598
5
+
6
+ import i18n from '../locale/i18n.js';
7
+ import eventBus from './eventBus.js';
8
+
9
+ const LAST_RELOAD_KEY = 'stale-chunk-reload-at';
10
+ const RELOAD_COOLDOWN_MS = 10_000;
11
+
12
+ const notifyChunkLoadError = () => {
13
+ // [Claude] lib i18n doesn't follow app locale, so take it from storage
14
+ const locale = (localStorage.getItem('lang') ||
15
+ i18n.global.locale.value) as typeof i18n.global.locale.value;
16
+ eventBus.$emit('notification', {
17
+ type: 'error',
18
+ text: i18n.global.t(
19
+ 'errorNotifications.chunkLoadError',
20
+ {},
21
+ {
22
+ locale,
23
+ },
24
+ ),
25
+ });
26
+ };
27
+
28
+ export const reloadOnStaleChunk = () => {
29
+ window.addEventListener('vite:preloadError', (event) => {
30
+ // [Claude] skip if just reloaded – chunk is really broken, avoid a reload loop
31
+ const lastReloadAt = Number(sessionStorage.getItem(LAST_RELOAD_KEY));
32
+ if (Date.now() - lastReloadAt < RELOAD_COOLDOWN_MS) {
33
+ notifyChunkLoadError();
34
+ return;
35
+ }
36
+
37
+ sessionStorage.setItem(LAST_RELOAD_KEY, String(Date.now()));
38
+ event.preventDefault();
39
+ window.location.reload();
40
+ });
41
+ };