livechat 0.4.3 → 0.4.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d674110938432200c4426cfe1c4bb5c551759316ac2468406fa4aeb4dcbf5919
4
- data.tar.gz: 5b68f89574ab49bc74b40697f37c05137f2e2082bd91fca3ec940c126977df0c
3
+ metadata.gz: fd6a72ade19436355c068f67d4c036f6f84b66e32cd163e36f3022619fa1587c
4
+ data.tar.gz: c7936d6b60c1bdc5f509f44e186a16e21368b1b2328d54ac7dc7918ee2ab7893
5
5
  SHA512:
6
- metadata.gz: f55e9b8235489c32e792dcd947195a2332fa402cb35ee2923f653d3fc318dfdf6370f8ebcf493c551ff267a8e1f8ecb48739e15c7d35df882b9c5c6d62fcb01a
7
- data.tar.gz: 919af379b17dc1baaf24ad0997d8fa1a6dc6167baba7104178c0c6821ab970c0530a0ef53825ea1de773e974b28c15ce09ed732be026d1ee660272d751dd5c76
6
+ metadata.gz: 44f6a47b5879c17554031dc0d0f5a1e92943c180aaa08c855edc803682b3a558a3b232ab9fac16982f6bf2423505a72ca83e3173ad4e07491dc618bda43e24ef
7
+ data.tar.gz: 9c025865ff9824eac83660af0775e74e08a508472056ca29dffc5c129f6b69f3c291db006a31a1f8b26a43ba0dfea9f29bdfb992eb0f30ee6a91b5db4cf1d8bd
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.4
4
+
5
+ - Expand / collapse the chat on desktop. A new header control grows the panel
6
+ to a roomier size (and back) for long threads and image-heavy chats; the
7
+ choice is remembered across Turbo visits. Hidden on phones, where the panel
8
+ is already full-screen. Translated across all 26 locales.
9
+ - Composer polish: dropped the doubled focus ring (one quiet accent border
10
+ now), and flattened Safari's default textarea bevel that showed as a second
11
+ box inside the composer.
12
+ - Fixed a message bubble bleeding over the header's bottom edge while scrolling
13
+ a long thread (a flexbox scroll-containment + stacking fix).
14
+
3
15
  ## 0.4.3
4
16
 
5
17
  - Unified composer. The message box, attach button and send button are now one
@@ -20,6 +20,8 @@ ar:
20
20
  attach: "إرفاق ملفات"
21
21
  remove_file: "إزالة الملف"
22
22
  attachment_error: "تعذر إرسال بعض الملفات."
23
+ expand: "تكبير"
24
+ collapse: "تصغير"
23
25
  attachments:
24
26
  too_many: "ملفات كثيرة جدًا (بحد أقصى %{count})."
25
27
  too_large: "%{name} كبير جدًا."
@@ -20,6 +20,8 @@ bg:
20
20
  attach: "Прикачване на файлове"
21
21
  remove_file: "Премахване на файла"
22
22
  attachment_error: "Някои файлове не можаха да бъдат изпратени."
23
+ expand: "Уголеми"
24
+ collapse: "Смали"
23
25
  attachments:
24
26
  too_many: "Твърде много файлове (макс. %{count})."
25
27
  too_large: "%{name} е твърде голям."
@@ -20,6 +20,8 @@ bn:
20
20
  attach: "ফাইল সংযুক্ত করুন"
21
21
  remove_file: "ফাইল সরান"
22
22
  attachment_error: "কিছু ফাইল পাঠানো যায়নি।"
23
+ expand: "বড় করুন"
24
+ collapse: "ছোট করুন"
23
25
  attachments:
24
26
  too_many: "অনেক বেশি ফাইল (সর্বোচ্চ %{count})।"
25
27
  too_large: "%{name} খুব বড়।"
@@ -20,6 +20,8 @@ de:
20
20
  attach: "Dateien anhängen"
21
21
  remove_file: "Datei entfernen"
22
22
  attachment_error: "Einige Dateien konnten nicht gesendet werden."
23
+ expand: "Vergrößern"
24
+ collapse: "Verkleinern"
23
25
  attachments:
24
26
  too_many: "Zu viele Dateien (max. %{count})."
25
27
  too_large: "%{name} ist zu groß."
@@ -20,6 +20,8 @@ el:
20
20
  attach: "Επισύναψη αρχείων"
21
21
  remove_file: "Αφαίρεση αρχείου"
22
22
  attachment_error: "Ορισμένα αρχεία δεν ήταν δυνατό να σταλούν."
23
+ expand: "Μεγέθυνση"
24
+ collapse: "Σμίκρυνση"
23
25
  attachments:
24
26
  too_many: "Πάρα πολλά αρχεία (έως %{count})."
25
27
  too_large: "Το %{name} είναι πολύ μεγάλο."
@@ -20,6 +20,8 @@ en:
20
20
  attach: "Attach files"
21
21
  remove_file: "Remove file"
22
22
  attachment_error: "Some files could not be sent."
23
+ expand: "Expand"
24
+ collapse: "Collapse"
23
25
  attachments:
24
26
  too_many: "Too many files (max %{count})."
25
27
  too_large: "%{name} is too large."
@@ -20,6 +20,8 @@ es:
20
20
  attach: "Adjuntar archivos"
21
21
  remove_file: "Quitar archivo"
22
22
  attachment_error: "No se pudieron enviar algunos archivos."
23
+ expand: "Ampliar"
24
+ collapse: "Reducir"
23
25
  attachments:
24
26
  too_many: "Demasiados archivos (máx. %{count})."
25
27
  too_large: "%{name} es demasiado grande."
@@ -20,6 +20,8 @@ fr:
20
20
  attach: "Joindre des fichiers"
21
21
  remove_file: "Retirer le fichier"
22
22
  attachment_error: "Certains fichiers n'ont pas pu être envoyés."
23
+ expand: "Agrandir"
24
+ collapse: "Réduire"
23
25
  attachments:
24
26
  too_many: "Trop de fichiers (max %{count})."
25
27
  too_large: "%{name} est trop volumineux."
@@ -20,6 +20,8 @@ hi:
20
20
  attach: "फ़ाइलें संलग्न करें"
21
21
  remove_file: "फ़ाइल हटाएं"
22
22
  attachment_error: "कुछ फ़ाइलें भेजी नहीं जा सकीं।"
23
+ expand: "बड़ा करें"
24
+ collapse: "छोटा करें"
23
25
  attachments:
24
26
  too_many: "बहुत सारी फ़ाइलें (अधिकतम %{count})।"
25
27
  too_large: "%{name} बहुत बड़ी है।"
@@ -20,6 +20,8 @@ hr:
20
20
  attach: "Priloži datoteke"
21
21
  remove_file: "Ukloni datoteku"
22
22
  attachment_error: "Neke datoteke nije bilo moguće poslati."
23
+ expand: "Povećaj"
24
+ collapse: "Smanji"
23
25
  attachments:
24
26
  too_many: "Previše datoteka (najviše %{count})."
25
27
  too_large: "%{name} je prevelika."
@@ -20,6 +20,8 @@ id:
20
20
  attach: "Lampirkan file"
21
21
  remove_file: "Hapus file"
22
22
  attachment_error: "Beberapa file tidak dapat dikirim."
23
+ expand: "Perbesar"
24
+ collapse: "Perkecil"
23
25
  attachments:
24
26
  too_many: "Terlalu banyak file (maks. %{count})."
25
27
  too_large: "%{name} terlalu besar."
@@ -20,6 +20,8 @@ it:
20
20
  attach: "Allega file"
21
21
  remove_file: "Rimuovi file"
22
22
  attachment_error: "Non è stato possibile inviare alcuni file."
23
+ expand: "Ingrandisci"
24
+ collapse: "Riduci"
23
25
  attachments:
24
26
  too_many: "Troppi file (max %{count})."
25
27
  too_large: "%{name} è troppo grande."
@@ -20,6 +20,8 @@ ja:
20
20
  attach: "ファイルを添付"
21
21
  remove_file: "ファイルを削除"
22
22
  attachment_error: "一部のファイルを送信できませんでした。"
23
+ expand: "拡大"
24
+ collapse: "縮小"
23
25
  attachments:
24
26
  too_many: "ファイルが多すぎます(最大%{count}件)。"
25
27
  too_large: "%{name}が大きすぎます。"
@@ -20,6 +20,8 @@ ko:
20
20
  attach: "파일 첨부"
21
21
  remove_file: "파일 제거"
22
22
  attachment_error: "일부 파일을 보내지 못했습니다."
23
+ expand: "확대"
24
+ collapse: "축소"
23
25
  attachments:
24
26
  too_many: "파일이 너무 많습니다 (최대 %{count}개)."
25
27
  too_large: "%{name}이(가) 너무 큽니다."
@@ -20,6 +20,8 @@ lb:
20
20
  attach: "Dateien uschléissen"
21
21
  remove_file: "Datei ewechhuelen"
22
22
  attachment_error: "E puer Dateie konnten net geschéckt ginn."
23
+ expand: "Vergréisseren"
24
+ collapse: "Verklengeren"
23
25
  attachments:
24
26
  too_many: "Ze vill Dateien (max %{count})."
25
27
  too_large: "%{name} ass ze grouss."
@@ -20,6 +20,8 @@ nl:
20
20
  attach: "Bestanden bijvoegen"
21
21
  remove_file: "Bestand verwijderen"
22
22
  attachment_error: "Sommige bestanden konden niet worden verzonden."
23
+ expand: "Vergroten"
24
+ collapse: "Verkleinen"
23
25
  attachments:
24
26
  too_many: "Te veel bestanden (max. %{count})."
25
27
  too_large: "%{name} is te groot."
@@ -20,6 +20,8 @@ pl:
20
20
  attach: "Załącz pliki"
21
21
  remove_file: "Usuń plik"
22
22
  attachment_error: "Nie udało się wysłać niektórych plików."
23
+ expand: "Powiększ"
24
+ collapse: "Zmniejsz"
23
25
  attachments:
24
26
  too_many: "Zbyt wiele plików (maks. %{count})."
25
27
  too_large: "%{name} jest za duży."
@@ -20,6 +20,8 @@ pt:
20
20
  attach: "Anexar arquivos"
21
21
  remove_file: "Remover arquivo"
22
22
  attachment_error: "Não foi possível enviar alguns arquivos."
23
+ expand: "Ampliar"
24
+ collapse: "Reduzir"
23
25
  attachments:
24
26
  too_many: "Muitos arquivos (máx. %{count})."
25
27
  too_large: "%{name} é muito grande."
@@ -20,6 +20,8 @@ ro:
20
20
  attach: "Atașează fișiere"
21
21
  remove_file: "Elimină fișierul"
22
22
  attachment_error: "Unele fișiere nu au putut fi trimise."
23
+ expand: "Mărește"
24
+ collapse: "Micșorează"
23
25
  attachments:
24
26
  too_many: "Prea multe fișiere (max. %{count})."
25
27
  too_large: "%{name} este prea mare."
@@ -20,6 +20,8 @@ ru:
20
20
  attach: "Прикрепить файлы"
21
21
  remove_file: "Удалить файл"
22
22
  attachment_error: "Некоторые файлы не удалось отправить."
23
+ expand: "Развернуть"
24
+ collapse: "Свернуть"
23
25
  attachments:
24
26
  too_many: "Слишком много файлов (макс. %{count})."
25
27
  too_large: "%{name} слишком большой."
@@ -20,6 +20,8 @@ th:
20
20
  attach: "แนบไฟล์"
21
21
  remove_file: "นำไฟล์ออก"
22
22
  attachment_error: "ไม่สามารถส่งไฟล์บางไฟล์ได้"
23
+ expand: "ขยาย"
24
+ collapse: "ย่อ"
23
25
  attachments:
24
26
  too_many: "ไฟล์มากเกินไป (สูงสุด %{count})"
25
27
  too_large: "%{name} มีขนาดใหญ่เกินไป"
@@ -20,6 +20,8 @@ tr:
20
20
  attach: "Dosya ekle"
21
21
  remove_file: "Dosyayı kaldır"
22
22
  attachment_error: "Bazı dosyalar gönderilemedi."
23
+ expand: "Büyüt"
24
+ collapse: "Küçült"
23
25
  attachments:
24
26
  too_many: "Çok fazla dosya (en fazla %{count})."
25
27
  too_large: "%{name} çok büyük."
@@ -20,6 +20,8 @@ uk:
20
20
  attach: "Прикріпити файли"
21
21
  remove_file: "Видалити файл"
22
22
  attachment_error: "Деякі файли не вдалося надіслати."
23
+ expand: "Розгорнути"
24
+ collapse: "Згорнути"
23
25
  attachments:
24
26
  too_many: "Забагато файлів (максимум %{count})."
25
27
  too_large: "%{name} завеликий."
@@ -20,6 +20,8 @@ ur:
20
20
  attach: "فائلیں منسلک کریں"
21
21
  remove_file: "فائل ہٹائیں"
22
22
  attachment_error: "کچھ فائلیں نہیں بھیجی جا سکیں۔"
23
+ expand: "بڑا کریں"
24
+ collapse: "چھوٹا کریں"
23
25
  attachments:
24
26
  too_many: "بہت زیادہ فائلیں (زیادہ سے زیادہ %{count})۔"
25
27
  too_large: "%{name} بہت بڑی ہے۔"
@@ -20,6 +20,8 @@ vi:
20
20
  attach: "Đính kèm tệp"
21
21
  remove_file: "Xóa tệp"
22
22
  attachment_error: "Không thể gửi một số tệp."
23
+ expand: "Mở rộng"
24
+ collapse: "Thu gọn"
23
25
  attachments:
24
26
  too_many: "Quá nhiều tệp (tối đa %{count})."
25
27
  too_large: "%{name} quá lớn."
@@ -20,6 +20,8 @@
20
20
  attach: "附加文件"
21
21
  remove_file: "移除文件"
22
22
  attachment_error: "部分文件无法发送。"
23
+ expand: "放大"
24
+ collapse: "缩小"
23
25
  attachments:
24
26
  too_many: "文件过多(最多 %{count} 个)。"
25
27
  too_large: "%{name} 太大。"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Livechat
4
- VERSION = '0.4.3'
4
+ VERSION = '0.4.4'
5
5
  end
@@ -39,6 +39,10 @@
39
39
  var pendingFiles = [];
40
40
  var isOpen = false;
41
41
  var lastFocused = null;
42
+ var expandBtnEl = null;
43
+ // Desktop-only: a bigger panel, remembered across Turbo visits. Never
44
+ // applied on phones, where the panel is already full-screen.
45
+ var expanded = false;
42
46
  // On phones the panel is a full-screen modal (focus trapped, page scroll
43
47
  // locked); on desktop it stays a non-modal popover you can chat alongside.
44
48
  var mobileModal = window.matchMedia ? window.matchMedia("(max-width: 480px)") : null;
@@ -70,6 +74,7 @@
70
74
  }
71
75
 
72
76
  ready(function () {
77
+ expanded = sessionGet("livechat_expanded") === "1";
73
78
  document.addEventListener("keydown", function (event) {
74
79
  if (event.key === "Escape" && isOpen) closePanel();
75
80
  });
@@ -100,6 +105,7 @@
100
105
  injectStyles();
101
106
  mount();
102
107
  applyBrandColor();
108
+ applyExpanded(); // a Turbo swap makes a fresh root — restore the size class
103
109
  syncOpenerBadges(); // a Turbo visit brings fresh openers — restamp them
104
110
 
105
111
  if (sessionGet("livechat_open") === "1") {
@@ -206,14 +212,27 @@
206
212
  titles.appendChild(subtitle);
207
213
  header.appendChild(titles);
208
214
 
215
+ var actions = document.createElement("div");
216
+ actions.id = "lvc-actions";
217
+
218
+ // Grow/shrink the desktop panel. Hidden on phones (already full-screen).
219
+ expandBtnEl = document.createElement("button");
220
+ expandBtnEl.type = "button";
221
+ expandBtnEl.id = "lvc-expand";
222
+ expandBtnEl.addEventListener("click", toggleExpand);
223
+ actions.appendChild(expandBtnEl);
224
+
209
225
  var close = document.createElement("button");
210
226
  close.type = "button";
211
227
  close.id = "lvc-close";
212
228
  close.setAttribute("aria-label", config.labels.close);
213
229
  close.innerHTML = "×";
214
230
  close.addEventListener("click", closePanel);
215
- header.appendChild(close);
231
+ actions.appendChild(close);
232
+
233
+ header.appendChild(actions);
216
234
  panel.appendChild(header);
235
+ applyExpanded(); // set the panel size + the button's icon/label
217
236
 
218
237
  listEl = document.createElement("div");
219
238
  listEl.id = "lvc-list";
@@ -465,6 +484,38 @@
465
484
  return !!(mobileModal && mobileModal.matches);
466
485
  }
467
486
 
487
+ // --- expand / collapse (desktop) --------------------------------------------
488
+
489
+ var EXPAND_ICON =
490
+ '<svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" ' +
491
+ 'stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">' +
492
+ '<polyline points="15 3 21 3 21 9"/><polyline points="9 21 3 21 3 15"/>' +
493
+ '<line x1="21" y1="3" x2="14" y2="10"/><line x1="3" y1="21" x2="10" y2="14"/></svg>';
494
+ var COLLAPSE_ICON =
495
+ '<svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" ' +
496
+ 'stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">' +
497
+ '<polyline points="4 14 10 14 10 20"/><polyline points="20 10 14 10 14 4"/>' +
498
+ '<line x1="14" y1="10" x2="21" y2="3"/><line x1="10" y1="14" x2="3" y2="21"/></svg>';
499
+
500
+ function toggleExpand() {
501
+ if (isMobileModal()) return;
502
+ expanded = !expanded;
503
+ sessionSet("livechat_expanded", expanded ? "1" : "");
504
+ applyExpanded();
505
+ }
506
+
507
+ // Reflect the current state onto the panel and the header button. A no-op on
508
+ // phones — the class is never added there, so the full-screen panel stands.
509
+ function applyExpanded() {
510
+ var on = expanded && !isMobileModal();
511
+ if (root) root.classList.toggle("lvc-expanded", on);
512
+ if (!expandBtnEl) return;
513
+ var label = on ? config.labels.collapse : config.labels.expand;
514
+ expandBtnEl.setAttribute("aria-label", label);
515
+ expandBtnEl.title = label;
516
+ expandBtnEl.innerHTML = on ? COLLAPSE_ICON : EXPAND_ICON;
517
+ }
518
+
468
519
  // Tab cycles inside the panel only while it is the full-screen mobile
469
520
  // modal; the desktop popover deliberately lets focus reach the page.
470
521
  function trapFocus(event) {
@@ -803,14 +854,28 @@
803
854
  "#lvc-panel[hidden]{display:none}" +
804
855
  "#lvc-root[dir=rtl] #lvc-panel{right:auto;left:20px}" +
805
856
  "#lvc-root.lvc-no-launcher #lvc-panel{bottom:20px;max-height:calc(100dvh - 40px)}" +
806
- "#lvc-header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;" +
807
- "padding:14px 16px;background:var(--lvc-accent);color:var(--lvc-accent-text)}" +
857
+ // position/z-index keep the header above the scrolling list, and
858
+ // flex-shrink:0 stops it collapsing — together they stop a message
859
+ // bubble from bleeding over the header's rounded bottom edge.
860
+ "#lvc-header{position:relative;z-index:2;flex-shrink:0;display:flex;align-items:flex-start;" +
861
+ "justify-content:space-between;gap:8px;padding:14px 16px;background:var(--lvc-accent);" +
862
+ "color:var(--lvc-accent-text)}" +
808
863
  "#lvc-header strong{display:block;font-size:15px}" +
809
864
  "#lvc-header span{display:block;font-size:12px;opacity:.85;margin-top:2px}" +
865
+ "#lvc-actions{display:flex;align-items:center;gap:2px}" +
810
866
  "#lvc-close{border:none;background:none;color:var(--lvc-accent-text);font-size:22px;" +
811
867
  "line-height:1;cursor:pointer;padding:2px 6px;border-radius:6px}" +
812
868
  "#lvc-close:hover{background:rgba(255,255,255,.15)}" +
813
- "#lvc-list{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:14px;" +
869
+ "#lvc-root #lvc-expand{border:none;background:none;color:var(--lvc-accent-text);cursor:pointer;" +
870
+ "padding:5px 6px;border-radius:6px;display:flex;align-items:center;justify-content:center;opacity:.9}" +
871
+ "#lvc-root #lvc-expand:hover{background:rgba(255,255,255,.15);opacity:1}" +
872
+ // Desktop only: a roomier panel for long threads and image-heavy chats.
873
+ // Guarded by min-width so it can never shrink the full-screen mobile panel.
874
+ "@media(min-width:481px){#lvc-root.lvc-expanded #lvc-panel{width:min(460px,92vw);" +
875
+ "height:min(680px,88dvh);max-height:88dvh}}" +
876
+ // min-height:0 lets this flex child actually scroll within the panel
877
+ // instead of overflowing it (the classic flexbox scroll gotcha).
878
+ "#lvc-list{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:14px;" +
814
879
  "background:var(--lvc-bg);display:flex;flex-direction:column;gap:4px}" +
815
880
  // Class rules carry the #lvc-root prefix so they outrank the
816
881
  // id-level `#lvc-root *` reset above.
@@ -841,9 +906,12 @@
841
906
  // single control.
842
907
  "#lvc-form{display:flex;flex-direction:column;gap:6px;margin:10px 12px;padding:8px 10px;" +
843
908
  "border:1px solid var(--lvc-border);border-radius:16px;background:var(--lvc-bg)}" +
844
- "#lvc-form:focus-within{border-color:var(--lvc-accent);box-shadow:0 0 0 1px var(--lvc-accent)}" +
845
- "#lvc-root #lvc-input{border:none;background:none;resize:none;font:inherit;color:var(--lvc-text);" +
846
- "padding:4px 4px 0;max-height:120px;outline:none}" +
909
+ // A single, quiet accent border on focus — no extra ring.
910
+ "#lvc-form:focus-within{border-color:var(--lvc-accent)}" +
911
+ // appearance:none flattens Safari's default textarea bevel, which would
912
+ // otherwise show as a second inset box inside the composer.
913
+ "#lvc-root #lvc-input{-webkit-appearance:none;appearance:none;border:none;background:none;" +
914
+ "resize:none;font:inherit;color:var(--lvc-text);padding:4px 4px 0;max-height:120px;outline:none}" +
847
915
  "#lvc-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px}" +
848
916
  "#lvc-tools{display:flex;align-items:center;gap:2px}" +
849
917
  // Tool buttons (attach, and room for more) are quiet — the accent is the
@@ -882,6 +950,8 @@
882
950
  "#lvc-root #lvc-panel,#lvc-root[dir=rtl] #lvc-panel,#lvc-root.lvc-no-launcher #lvc-panel" +
883
951
  "{left:0;right:0;top:0;bottom:0;width:100%;max-width:100%;height:100dvh;max-height:100dvh;" +
884
952
  "border-radius:0;border:none}" +
953
+ // The panel is already full-screen here, so there's nothing to expand.
954
+ "#lvc-expand{display:none}" +
885
955
  // 16px stops iOS Safari from zoom-jumping into focused fields.
886
956
  "#lvc-root #lvc-input,#lvc-root #lvc-email input{font-size:16px}" +
887
957
  // Keep the composer box above the iPhone home indicator.
@@ -104,7 +104,9 @@ module Livechat
104
104
  unreadAria: t(:unread_aria, 'unread messages'),
105
105
  attach: t(:attach, 'Attach files'),
106
106
  removeFile: t(:remove_file, 'Remove file'),
107
- attachmentError: t(:attachment_error, 'Some files could not be sent.')
107
+ attachmentError: t(:attachment_error, 'Some files could not be sent.'),
108
+ expand: t(:expand, 'Expand'),
109
+ collapse: t(:collapse, 'Collapse')
108
110
  }
109
111
  end
110
112
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: livechat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yaroslav Shmarov