avo 3.28.0 → 3.29.0

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 (30) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/app/components/avo/fields/common/boolean_check_component.html.erb +1 -1
  4. data/app/javascript/js/controllers/fields/key_value_controller.js +11 -1
  5. data/app/javascript/js/controllers/search_controller.js +1 -1
  6. data/lib/avo/fields/key_value_field.rb +28 -1
  7. data/lib/avo/version.rb +1 -1
  8. data/lib/generators/avo/templates/locales/avo.ar.yml +2 -0
  9. data/lib/generators/avo/templates/locales/avo.de.yml +2 -0
  10. data/lib/generators/avo/templates/locales/avo.en.yml +2 -0
  11. data/lib/generators/avo/templates/locales/avo.es.yml +2 -0
  12. data/lib/generators/avo/templates/locales/avo.fr.yml +2 -0
  13. data/lib/generators/avo/templates/locales/avo.it.yml +2 -0
  14. data/lib/generators/avo/templates/locales/avo.ja.yml +2 -0
  15. data/lib/generators/avo/templates/locales/avo.nb.yml +2 -0
  16. data/lib/generators/avo/templates/locales/avo.nl.yml +2 -0
  17. data/lib/generators/avo/templates/locales/avo.nn.yml +2 -0
  18. data/lib/generators/avo/templates/locales/avo.pl.yml +2 -0
  19. data/lib/generators/avo/templates/locales/avo.pt-BR.yml +2 -0
  20. data/lib/generators/avo/templates/locales/avo.pt.yml +2 -0
  21. data/lib/generators/avo/templates/locales/avo.ro.yml +2 -0
  22. data/lib/generators/avo/templates/locales/avo.ru.yml +2 -0
  23. data/lib/generators/avo/templates/locales/avo.tr.yml +2 -0
  24. data/lib/generators/avo/templates/locales/avo.uk.yml +2 -0
  25. data/lib/generators/avo/templates/locales/avo.zh-TW.yml +2 -0
  26. data/lib/generators/avo/templates/locales/avo.zh.yml +2 -0
  27. data/public/avo-assets/avo.base.css +1 -1
  28. data/public/avo-assets/avo.base.js +173 -172
  29. data/public/avo-assets/avo.base.js.map +4 -4
  30. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8265ebbf25207a0c543ecb8b87ead3ef6e116f561110c7f2e852cb473325296f
4
- data.tar.gz: e82f9a4982b5ec344ad1b78db7b887c55de917ab9aa45895f8552ac5249e8537
3
+ metadata.gz: 9ff86625a0129b2665d309e29ee6b0f5ad90feb33c0ff59d51bebce74b639687
4
+ data.tar.gz: f634f37c244df609bfae9e339b480a1bbe34cc400e76618320e07f42983feccf
5
5
  SHA512:
6
- metadata.gz: 90d23c98f3fd3c3c97127dd693d596060cdda7b4fb08bb394303be685ea997f9234dbf96b2cc731901e697caa1f13ace446cb209e90f1c02861dbe74c0f045b3
7
- data.tar.gz: 3df2ff9cb2cfdd4691caa1089ff7e5fad6f38d77dfecd648e456674e3b25a87bb06577fdd02a27f81135a9f8202db7a6473389c5257cce1fe8d6bfe6f52a7afa
6
+ metadata.gz: 6d4cdab25e6cf1bc200643fcbe5d7319cc51db125226f0dd2c949b5d5bee5db01da0fa2e28763617a70abe73919417dc298fa6354289b08f8bb1761d566b1f03
7
+ data.tar.gz: a74f2e0c891b284eb17d19eae8f2b2f111895b20e56adefecb7bc5f3b6d2da00b1516eb42d998d05113568a7a0d286e8d48e9f29169d716273a735084f8b0cad
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- avo (3.28.0)
4
+ avo (3.29.0)
5
5
  actionview (>= 6.1)
6
6
  active_link_to
7
7
  activerecord (>= 6.1)
@@ -1,2 +1,2 @@
1
- <%= content_tag :span, t(@checked), class: 'sr-only' %>
1
+ <%= content_tag :span, @checked.nil? ? "" : t("avo.#{@checked}"), class: 'sr-only' %>
2
2
  <%= helpers.svg "#{@icon}.svg", class: classes, data: {checked_state: state} %>
@@ -23,7 +23,17 @@ export default class extends Controller {
23
23
  this.setOptions()
24
24
 
25
25
  try {
26
- const objectValue = JSON.parse(this.inputTarget.value)
26
+ const objectValue = JSON.parse(this.inputTarget.value, (key, value) => {
27
+ // convert primitives to string
28
+ if (
29
+ typeof value === "number" ||
30
+ typeof value === "boolean"
31
+ ) {
32
+ return String(value);
33
+ }
34
+ return value; // objects stay objects
35
+ });
36
+
27
37
  Object.keys(objectValue).forEach((key) => this.fieldValue.push([key, objectValue[key]]))
28
38
  } catch (error) {
29
39
  this.fieldValue = []
@@ -242,7 +242,7 @@ export default class extends Controller {
242
242
 
243
243
  return url.segment([window.Avo.configuration.root_path, ...this.searchSegments()])
244
244
  .search(this.searchParams(encodeURIComponent(query)))
245
- .readable().toString()
245
+ .toString()
246
246
  }
247
247
 
248
248
  searchSegments() {
@@ -8,7 +8,7 @@ module Avo
8
8
  attr_reader :key_label, :value_label, :action_text
9
9
 
10
10
  def initialize(id, **args, &block)
11
- super(id, **args, &block)
11
+ super
12
12
 
13
13
  hide_on :index
14
14
 
@@ -69,6 +69,33 @@ module Avo
69
69
  new_value = {}
70
70
  end
71
71
 
72
+ # Try to cast the new values to the same class as the original value
73
+ old_key_value_hash = record.send(key)
74
+
75
+ if old_key_value_hash.is_a?(Hash)
76
+ old_key_value_hash.transform_keys!(&:to_s)
77
+
78
+ new_value.each do |key, value|
79
+ old_value = old_key_value_hash[key.to_s]
80
+
81
+ try do
82
+ new_value[key.to_s] = if [TrueClass, FalseClass].include?(old_value.class)
83
+ if value == "true"
84
+ true
85
+ elsif value == "false"
86
+ false
87
+ else
88
+ value
89
+ end
90
+ else
91
+ Kernel.public_send(old_value.class.name, value)
92
+ end
93
+ rescue
94
+ new_value[key.to_s] = value
95
+ end
96
+ end
97
+ end
98
+
72
99
  record.send(:"#{key}_will_change!") if record.respond_to?(:"#{key}_will_change!")
73
100
  record.send(:"#{key}=", new_value)
74
101
 
data/lib/avo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Avo
2
- VERSION = "3.28.0" unless const_defined?(:VERSION)
2
+ VERSION = "3.29.0" unless const_defined?(:VERSION)
3
3
  end
@@ -51,6 +51,7 @@ ar:
51
51
  failed: فشل
52
52
  failed_to_find_attachment: فشل في العثور على المرفق
53
53
  failed_to_load: فشل التحميل
54
+ 'false': خطأ
54
55
  file:
55
56
  few: ملفات
56
57
  many: ملفات
@@ -126,6 +127,7 @@ ar:
126
127
  table_view: عرض الجدول
127
128
  this_field_has_attachments_disabled: هذا الحقل لديه المرفقات معطلة.
128
129
  tools: الأدوات
130
+ 'true': صحيح
129
131
  type_to_search: اكتب للبحث.
130
132
  unauthorized: غير مصرح به
131
133
  undo: تراجع
@@ -45,6 +45,7 @@ de:
45
45
  failed: Fehlgeschlagen
46
46
  failed_to_find_attachment: Anhang nicht gefunden
47
47
  failed_to_load: Laden fehlgeschlagen
48
+ 'false': Falsch
48
49
  file:
49
50
  one: Datei
50
51
  other: Dateien
@@ -116,6 +117,7 @@ de:
116
117
  table_view: Tabellenansicht
117
118
  this_field_has_attachments_disabled: Für dieses Feld sind Anhänge deaktiviert.
118
119
  tools: Werkzeuge
120
+ 'true': Wahr
119
121
  type_to_search: Tippen, um zu suchen.
120
122
  unauthorized: Nicht autorisiert
121
123
  undo: Rückgängig machen
@@ -45,6 +45,7 @@ en:
45
45
  failed: Failed
46
46
  failed_to_find_attachment: Failed to find attachment
47
47
  failed_to_load: Failed to load
48
+ 'false': 'False'
48
49
  file:
49
50
  one: file
50
51
  other: files
@@ -116,6 +117,7 @@ en:
116
117
  table_view: Table view
117
118
  this_field_has_attachments_disabled: This field has attachments disabled.
118
119
  tools: Tools
120
+ 'true': 'True'
119
121
  type_to_search: Type to search.
120
122
  unauthorized: Unauthorized
121
123
  undo: undo
@@ -47,6 +47,7 @@ es:
47
47
  failed: Fallo
48
48
  failed_to_find_attachment: No se ha encontrado el archivo adjunto
49
49
  failed_to_load: No se ha podido cargar
50
+ 'false': Falso
50
51
  file:
51
52
  one: archivo
52
53
  other: archivos
@@ -118,6 +119,7 @@ es:
118
119
  table_view: Vista en tabla
119
120
  this_field_has_attachments_disabled: Este campo tiene los adjuntos deshabilitados.
120
121
  tools: Herramientas
122
+ 'true': Verdadero
121
123
  type_to_search: Escribe para buscar.
122
124
  unauthorized: No autorizado
123
125
  undo: deshacer
@@ -47,6 +47,7 @@ fr:
47
47
  failed: Échec
48
48
  failed_to_find_attachment: Impossible de trouver la pièce jointe
49
49
  failed_to_load: Impossible de charger
50
+ 'false': Faux
50
51
  file:
51
52
  one: fichier
52
53
  other: fichiers
@@ -118,6 +119,7 @@ fr:
118
119
  table_view: Vue table
119
120
  this_field_has_attachments_disabled: Ce champ a les pièces jointes désactivées.
120
121
  tools: Outils
122
+ 'true': Vrai
121
123
  type_to_search: Type à rechercher.
122
124
  unauthorized: Non autorisé
123
125
  undo: annuler
@@ -45,6 +45,7 @@ it:
45
45
  failed: Fallito
46
46
  failed_to_find_attachment: Impossibile trovare l'allegato
47
47
  failed_to_load: Caricamento fallito
48
+ 'false': Falso
48
49
  file:
49
50
  one: file
50
51
  other: file
@@ -116,6 +117,7 @@ it:
116
117
  table_view: Vista tabella
117
118
  this_field_has_attachments_disabled: Gli allegati sono disabilitati per questo campo.
118
119
  tools: Strumenti
120
+ 'true': Vero
119
121
  type_to_search: Digita per cercare.
120
122
  unauthorized: Non autorizzato
121
123
  undo: Annulla
@@ -47,6 +47,7 @@ ja:
47
47
  failed: 失敗
48
48
  failed_to_find_attachment: アタッチメントを見つけるのに失敗
49
49
  failed_to_load: 読み込みに失敗
50
+ 'false': 偽
50
51
  file:
51
52
  one: ファイル
52
53
  other: ファイル
@@ -118,6 +119,7 @@ ja:
118
119
  table_view: テーブルビュー
119
120
  this_field_has_attachments_disabled: このフィールドには添付ファイルが無効になっています。
120
121
  tools: ツール
122
+ 'true': 真
121
123
  type_to_search: 検索する内容を入力してください。
122
124
  unauthorized: 許可されていません
123
125
  undo: 元に戻す
@@ -47,6 +47,7 @@ nb:
47
47
  failed: Feilet
48
48
  failed_to_find_attachment: Fant ikke vedlegg
49
49
  failed_to_load: Lasting feilet
50
+ 'false': Falsk
50
51
  file:
51
52
  one: file
52
53
  other: files
@@ -118,6 +119,7 @@ nb:
118
119
  table_view: Tabell visning
119
120
  this_field_has_attachments_disabled: Dette feltet har vedlegg deaktivert.
120
121
  tools: Redskapene
122
+ 'true': Sann
121
123
  type_to_search: Søk.
122
124
  unauthorized: Ikke autorisert
123
125
  undo: angre
@@ -45,6 +45,7 @@ nl:
45
45
  failed: Mislukt
46
46
  failed_to_find_attachment: Bijlage niet gevonden
47
47
  failed_to_load: Laden mislukt
48
+ 'false': Onwaar
48
49
  file:
49
50
  one: bestand
50
51
  other: bestanden
@@ -116,6 +117,7 @@ nl:
116
117
  table_view: Tabelweergave
117
118
  this_field_has_attachments_disabled: Bijlagen zijn uitgeschakeld voor dit veld.
118
119
  tools: Gereedschappen
120
+ 'true': Waar
119
121
  type_to_search: Typ om te zoeken.
120
122
  unauthorized: Niet geautoriseerd
121
123
  undo: Ongedaan maken
@@ -47,6 +47,7 @@ nn:
47
47
  failed: Feila
48
48
  failed_to_find_attachment: Fann ikkje vedlegg
49
49
  failed_to_load: Lasting feila
50
+ 'false': Falsk
50
51
  file:
51
52
  one: file
52
53
  other: files
@@ -118,6 +119,7 @@ nn:
118
119
  table_view: Tabellvisning
119
120
  this_field_has_attachments_disabled: Dette feltet har vedlegg deaktivert.
120
121
  tools: Reiskapane
122
+ 'true': Sann
121
123
  type_to_search: Søk.
122
124
  unauthorized: Ikkje autorisert
123
125
  undo: angre
@@ -45,6 +45,7 @@ pl:
45
45
  failed: Niepowodzenie
46
46
  failed_to_find_attachment: Nie udało się znaleźć załącznika
47
47
  failed_to_load: Nie udało się załadować
48
+ 'false': Fałsz
48
49
  file:
49
50
  few: pliki
50
51
  many: plików
@@ -118,6 +119,7 @@ pl:
118
119
  table_view: Widok tabelaryczny
119
120
  this_field_has_attachments_disabled: Załączniki są wyłączone dla tego pola.
120
121
  tools: Narzędzia
122
+ 'true': Prawda
121
123
  type_to_search: Wpisz, aby wyszukać.
122
124
  unauthorized: Brak autoryzacji
123
125
  undo: Cofnij
@@ -47,6 +47,7 @@ pt-BR:
47
47
  failed: Falhou
48
48
  failed_to_find_attachment: Falhou ao achar anexo
49
49
  failed_to_load: Falha ao carregar
50
+ 'false': Falso
50
51
  file:
51
52
  one: ficheiro
52
53
  other: ficheiros
@@ -118,6 +119,7 @@ pt-BR:
118
119
  table_view: Visualização em tabela
119
120
  this_field_has_attachments_disabled: Este campo tem anexos desativados.
120
121
  tools: Ferramentas
122
+ 'true': Verdadeiro
121
123
  type_to_search: Digite para buscar.
122
124
  unauthorized: Não autorizado
123
125
  undo: desfazer
@@ -47,6 +47,7 @@ pt:
47
47
  failed: Falhou
48
48
  failed_to_find_attachment: Falha ao encontrar anexo
49
49
  failed_to_load: Falhou ao carregar
50
+ 'false': Falso
50
51
  file:
51
52
  one: ficheiro
52
53
  other: ficheiros
@@ -118,6 +119,7 @@ pt:
118
119
  table_view: Visualização em tabela
119
120
  this_field_has_attachments_disabled: Este campo tem anexos desativados.
120
121
  tools: Ferramentas
122
+ 'true': Verdadeiro
121
123
  type_to_search: Escreva para pesquisar.
122
124
  unauthorized: Não autorizado
123
125
  undo: desfazer
@@ -48,6 +48,7 @@ ro:
48
48
  failed: A eșuat
49
49
  failed_to_find_attachment: Atașamentul nu a fost găsit
50
50
  failed_to_load: Încărcarea a eșuat
51
+ 'false': Fals
51
52
  file:
52
53
  few: fişiere
53
54
  one: fişier
@@ -120,6 +121,7 @@ ro:
120
121
  table_view: Vezi sub formă de tabel
121
122
  this_field_has_attachments_disabled: Acest câmp are atașamente dezactivate.
122
123
  tools: Instrumente
124
+ 'true': Adevărat
123
125
  type_to_search: Caută aici...
124
126
  unauthorized: Neautorizat
125
127
  undo: Anulează
@@ -45,6 +45,7 @@ ru:
45
45
  failed: Ошибка
46
46
  failed_to_find_attachment: Вложение не найдено
47
47
  failed_to_load: Загрузка не удалась
48
+ 'false': Ложь
48
49
  file:
49
50
  few: файла
50
51
  many: файлов
@@ -118,6 +119,7 @@ ru:
118
119
  table_view: Таблица
119
120
  this_field_has_attachments_disabled: Для этого поля прикрепления отключены.
120
121
  tools: Инструменты
122
+ 'true': Истина
121
123
  type_to_search: Поиск...
122
124
  unauthorized: Не авторизован
123
125
  undo: Отменить
@@ -47,6 +47,7 @@ tr:
47
47
  failed: Başarısız
48
48
  failed_to_find_attachment: Ek bulunamadı
49
49
  failed_to_load: Yüklenemedi
50
+ 'false': Yanlış
50
51
  file:
51
52
  one: dosya
52
53
  other: dosyalar
@@ -118,6 +119,7 @@ tr:
118
119
  table_view: Tablo görünümü
119
120
  this_field_has_attachments_disabled: Bu alanın ekleri devre dışı bırakıldı.
120
121
  tools: Araçlar
122
+ 'true': Doğru
121
123
  type_to_search: Aramak için yazın.
122
124
  unauthorized: Yetkisiz
123
125
  undo: geri al
@@ -45,6 +45,7 @@ uk:
45
45
  failed: Не вдалося
46
46
  failed_to_find_attachment: Не вдалося знайти вкладення
47
47
  failed_to_load: Не вдалося завантажити
48
+ 'false': Хибно
48
49
  file:
49
50
  few: файли
50
51
  many: файлів
@@ -118,6 +119,7 @@ uk:
118
119
  table_view: Таблиця
119
120
  this_field_has_attachments_disabled: Прикріплення для цього поля вимкнено.
120
121
  tools: Інструменти
122
+ 'true': Істина
121
123
  type_to_search: Введіть для пошуку.
122
124
  unauthorized: Не авторизовано
123
125
  undo: Скасувати
@@ -45,6 +45,7 @@ zh-TW:
45
45
  failed: 失敗
46
46
  failed_to_find_attachment: 找不到附件
47
47
  failed_to_load: 載入失敗
48
+ 'false': 假
48
49
  file:
49
50
  one: 檔案
50
51
  other: 檔案
@@ -116,6 +117,7 @@ zh-TW:
116
117
  table_view: 表格視圖
117
118
  this_field_has_attachments_disabled: 此欄位已禁用附件。
118
119
  tools: 工具
120
+ 'true': 真
119
121
  type_to_search: 輸入以搜尋。
120
122
  unauthorized: 未經授權
121
123
  undo: 復原
@@ -45,6 +45,7 @@ zh:
45
45
  failed: 失败
46
46
  failed_to_find_attachment: 找不到附件
47
47
  failed_to_load: 加载失败
48
+ 'false': 假
48
49
  file:
49
50
  one: 文件
50
51
  other: 文件
@@ -116,6 +117,7 @@ zh:
116
117
  table_view: 表格视图
117
118
  this_field_has_attachments_disabled: 此字段已禁用附件。
118
119
  tools: 工具
120
+ 'true': 真
119
121
  type_to_search: 输入以搜索。
120
122
  unauthorized: 未经授权
121
123
  undo: 撤销
@@ -3403,7 +3403,7 @@ body[data-theme=dark], body.dark {
3403
3403
  .tagify__input:focus::before{
3404
3404
  transition:.2s ease-out;
3405
3405
  opacity:0;
3406
- transform:translatex(6px)
3406
+ transform:translateX(6px)
3407
3407
  }
3408
3408
 
3409
3409
  @supports (-ms-ime-align:auto){