avo 4.0.0.beta.45 → 4.0.0.beta.46

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 (46) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/app/assets/builds/avo/application.css +175 -27
  4. data/app/assets/builds/avo/application.js +88 -88
  5. data/app/assets/builds/avo/application.js.map +4 -4
  6. data/app/assets/stylesheets/application.css +23 -0
  7. data/app/assets/stylesheets/css/components/field-wrapper.css +15 -14
  8. data/app/assets/stylesheets/css/components/manual_frame.css +38 -0
  9. data/app/assets/stylesheets/css/components/modal.css +22 -10
  10. data/app/components/avo/fields/has_many_field/show_component.html.erb +6 -2
  11. data/app/components/avo/fields/has_one_field/show_component.html.erb +12 -8
  12. data/app/components/avo/manual_frame_component.html.erb +60 -0
  13. data/app/components/avo/manual_frame_component.rb +73 -0
  14. data/app/components/avo/tab_group_component.html.erb +14 -1
  15. data/app/components/avo/tab_group_component.rb +15 -7
  16. data/app/helpers/avo/application_helper.rb +29 -0
  17. data/app/javascript/application.js +6 -0
  18. data/app/javascript/js/controllers/manual_frame_controller.js +160 -0
  19. data/app/javascript/js/controllers.js +2 -0
  20. data/app/views/avo/actions/show.html.erb +1 -1
  21. data/app/views/layouts/avo/application.html.erb +5 -3
  22. data/lib/avo/concerns/frame_loading_mode.rb +59 -0
  23. data/lib/avo/fields/frame_base_field.rb +13 -0
  24. data/lib/avo/fields/many_frame_base_field.rb +12 -1
  25. data/lib/avo/resources/items/tab.rb +3 -0
  26. data/lib/avo/version.rb +1 -1
  27. data/lib/generators/avo/templates/locales/avo.ar.yml +5 -0
  28. data/lib/generators/avo/templates/locales/avo.de.yml +5 -0
  29. data/lib/generators/avo/templates/locales/avo.en.yml +5 -0
  30. data/lib/generators/avo/templates/locales/avo.es.yml +5 -0
  31. data/lib/generators/avo/templates/locales/avo.fr.yml +5 -0
  32. data/lib/generators/avo/templates/locales/avo.it.yml +5 -0
  33. data/lib/generators/avo/templates/locales/avo.ja.yml +5 -0
  34. data/lib/generators/avo/templates/locales/avo.nb.yml +5 -0
  35. data/lib/generators/avo/templates/locales/avo.nl.yml +5 -0
  36. data/lib/generators/avo/templates/locales/avo.nn.yml +5 -0
  37. data/lib/generators/avo/templates/locales/avo.pl.yml +5 -0
  38. data/lib/generators/avo/templates/locales/avo.pt-BR.yml +5 -0
  39. data/lib/generators/avo/templates/locales/avo.pt.yml +5 -0
  40. data/lib/generators/avo/templates/locales/avo.ro.yml +5 -0
  41. data/lib/generators/avo/templates/locales/avo.ru.yml +5 -0
  42. data/lib/generators/avo/templates/locales/avo.tr.yml +5 -0
  43. data/lib/generators/avo/templates/locales/avo.ua.yml +5 -0
  44. data/lib/generators/avo/templates/locales/avo.zh-TW.yml +5 -0
  45. data/lib/generators/avo/templates/locales/avo.zh.yml +5 -0
  46. metadata +6 -1
@@ -33,6 +33,7 @@ import ItemSelectorController from './controllers/item_selector_controller'
33
33
  import KeyboardShortcutsSearchController from './controllers/keyboard_shortcuts_search_controller'
34
34
  import KeyValueController from './controllers/fields/key_value_controller'
35
35
  import LoadingButtonController from './controllers/loading_button_controller'
36
+ import ManualFrameController from './controllers/manual_frame_controller'
36
37
  import MapDarkModeController from './controllers/map_dark_mode_controller'
37
38
  import MediaLibraryAttachController from './controllers/media_library_attach_controller'
38
39
  import MediaLibraryController from './controllers/media_library_controller'
@@ -95,6 +96,7 @@ application.register('keyboard-shortcuts-search', KeyboardShortcutsSearchControl
95
96
  application.register('item-select-all', ItemSelectAllController)
96
97
  application.register('item-selector', ItemSelectorController)
97
98
  application.register('loading-button', LoadingButtonController)
99
+ application.register('manual-frame', ManualFrameController)
98
100
  application.register('map-dark-mode', MapDarkModeController)
99
101
  application.register('media-library-attach', MediaLibraryAttachController)
100
102
  application.register('media-library', MediaLibraryController)
@@ -38,7 +38,7 @@
38
38
  <%= form.hidden_field :arguments, value: params[:arguments] %>
39
39
  <%= hidden_field_tag :resource_view, params[:resource_view] %>
40
40
  <% if @fields.present? %>
41
- <div class="description-list border-t border-b border-tertiary">
41
+ <div class="description-list border-t border-tertiary">
42
42
  <% @fields.each_with_index do |field, index| %>
43
43
  <%= render field
44
44
  .hydrate(resource: @resource, record: @resource.record, user: @resource.user, view: @view, action: @action)
@@ -28,6 +28,7 @@
28
28
  <%= render Avo::AssetManager::JavascriptComponent.new asset_manager: Avo.asset_manager %>
29
29
  <%= render partial: "avo/partials/head" %>
30
30
  <%= render partial: "avo/partials/color_theme_override" %>
31
+
31
32
  <%# appearance_overrides MUST render after the application stylesheet so its inline %>
32
33
  <%# :root / .dark declarations win on equal-specificity cascade. %>
33
34
  <%= render partial: "avo/partials/appearance_overrides" %>
@@ -46,7 +47,9 @@
46
47
  >
47
48
  <%= render partial: "avo/partials/navbar", locals: {resource: @resource} %>
48
49
 
49
- <div id="main-sidebar" tabindex="-1" class="hidden lg:flex"><%= render Avo::SidebarComponent.new sidebar_open: @sidebar_open %></div>
50
+ <div id="main-sidebar" tabindex="-1" class="hidden lg:flex">
51
+ <%= render Avo::SidebarComponent.new sidebar_open: @sidebar_open %>
52
+ </div>
50
53
 
51
54
  <div class="flex lg:hidden">
52
55
  <%= render Avo::SidebarComponent.new sidebar_open: @sidebar_open, for_mobile: true %>
@@ -56,12 +59,11 @@
56
59
  <%= render Avo::BreadcrumbsComponent.new(items: avo_breadcrumbs) %>
57
60
 
58
61
  <div class="main-content__container <%= container_classes %>">
59
-
60
62
  <%= render partial: "avo/partials/custom_tools_alert" %>
61
63
 
62
64
  <%= yield.force_encoding("UTF-8") %>
63
65
 
64
- <div class="mt-auto pt-8 justify-self-end">
66
+ <div class="mt-auto justify-self-end pt-8">
65
67
  <%= render partial: "avo/partials/footer" %>
66
68
  </div>
67
69
  </div>
@@ -0,0 +1,59 @@
1
+ # Adds the `loading:` mode option shared by tabs and association fields.
2
+ #
3
+ # `loading:` accepts either a symbol shorthand or a Hash:
4
+ #
5
+ # loading: :manual # placeholder + Load button
6
+ # loading: {mode: :manual} # same as above
7
+ # loading: {mode: :manual, auto_load_for: 5.minutes} # + sliding auto-load memory
8
+ # loading: {mode: :lazy} # native lazy (loads on reveal)
9
+ #
10
+ # This is orthogonal to the eager/lazy string returned by
11
+ # `Avo::Fields::Concerns::FrameLoading#turbo_frame_loading` — `manual?` is a
12
+ # separate predicate, not a `turbo_frame_loading` value.
13
+ #
14
+ # `auto_load_for` is a memory window, not a delay: once the user has opened the
15
+ # frame, a short-lived cookie (scoped per record + frame) remembers it, and the
16
+ # server renders a real auto-loading `<turbo-frame src>` — no placeholder, no
17
+ # Load button — on return for that duration. The window slides via the cookie's
18
+ # refreshed max-age. v1 honors `auto_load_for` for `:manual` only.
19
+ module Avo
20
+ module Concerns
21
+ module FrameLoadingMode
22
+ extend ActiveSupport::Concern
23
+
24
+ # The cold-start render mode: `:manual`, `:lazy`, or `nil` when unset.
25
+ # A Hash without an explicit `mode:` defaults to `:manual`, so
26
+ # `loading: {auto_load_for: 5.minutes}` is "manual + memory".
27
+ def loading_mode
28
+ return @loading_mode if defined?(@loading_mode)
29
+
30
+ @loading_mode =
31
+ if @loading.is_a?(Hash)
32
+ (@loading.symbolize_keys[:mode] || :manual).to_sym
33
+ elsif @loading.present?
34
+ @loading.to_sym
35
+ end
36
+ end
37
+
38
+ # True when the frame should render as a manual placeholder (Load button)
39
+ # on cold start. Covers `loading: :manual` and `loading: {mode: :manual}`.
40
+ def manual?
41
+ loading_mode == :manual
42
+ end
43
+
44
+ # True when `loading: {mode: :lazy}` — render a native lazy frame.
45
+ def lazy_loading_mode?
46
+ loading_mode == :lazy
47
+ end
48
+
49
+ # Seconds the browser should remember the opened frame and auto-load it on
50
+ # return (sliding window). `nil` unless a `loading: {auto_load_for: …}` Hash
51
+ # was given. Accepts an `ActiveSupport::Duration` or a raw integer.
52
+ def auto_load_for
53
+ return unless @loading.is_a?(Hash)
54
+
55
+ @loading.symbolize_keys[:auto_load_for]&.to_i
56
+ end
57
+ end
58
+ end
59
+ end
@@ -5,6 +5,7 @@ module Avo
5
5
  include Avo::Fields::Concerns::ReloadIcon
6
6
  include Avo::Fields::Concerns::LinkableTitle
7
7
  include Avo::Concerns::HasDescription
8
+ include Avo::Concerns::FrameLoadingMode
8
9
 
9
10
  def initialize(id, **args, &block)
10
11
  super
@@ -13,6 +14,7 @@ module Avo
13
14
  @reloadable = args[:reloadable]
14
15
  @linkable = args[:linkable]
15
16
  @description = args[:description]
17
+ @loading = args[:loading]
16
18
  end
17
19
 
18
20
  def field_resource
@@ -122,6 +124,17 @@ module Avo
122
124
  def default_view
123
125
  Avo.configuration.skip_show_view ? :edit : :show
124
126
  end
127
+
128
+ # Attributes exposed to callable descriptions. `loading_type` tells a
129
+ # description lambda how the field is being rendered: `:manual` for a
130
+ # not-yet-loaded manual placeholder, `nil` for live/loaded content. A
131
+ # lambda can branch on it to avoid touching the association (e.g.
132
+ # `query.count`) on the placeholder paint. The manual placeholder render
133
+ # path passes `loading_type: :manual`; every other context keeps the
134
+ # `nil` default.
135
+ def description_attributes
136
+ {loading_type: nil}
137
+ end
125
138
  end
126
139
  end
127
140
  end
@@ -24,7 +24,7 @@ module Avo
24
24
  only_on Avo.configuration.resource_default_view
25
25
  end
26
26
 
27
- super(id, **args, &block)
27
+ super
28
28
 
29
29
  @searchable = args[:searchable]
30
30
  @scope = args[:scope]
@@ -32,6 +32,17 @@ module Avo
32
32
  @hide_filter_button = args[:hide_filter_button]
33
33
  @discreet_pagination = args[:discreet_pagination]
34
34
  end
35
+
36
+ private
37
+
38
+ # Expose the association relation as `query` to callable descriptions, on
39
+ # top of the shared `loading_type` flag. Mirrors how `attach_scope` receives
40
+ # `query` in the associations controller. The relation is lazy; SQL runs
41
+ # only if the lambda enumerates or aggregates it (e.g. `query.count`) — so a
42
+ # manual placeholder should branch on `loading_type == :manual` to skip that.
43
+ def description_attributes
44
+ super.merge(query: @record.public_send(association_name))
45
+ end
35
46
  end
36
47
  end
37
48
  end
@@ -6,11 +6,13 @@ class Avo::Resources::Items::Tab
6
6
  include Avo::Concerns::VisibleItems
7
7
  include Avo::Concerns::IsVisible
8
8
  include Avo::Concerns::VisibleInDifferentViews
9
+ include Avo::Concerns::FrameLoadingMode
9
10
 
10
11
  delegate :items, :add_item, to: :items_holder
11
12
 
12
13
  attr_accessor :description
13
14
  attr_reader :lazy_load
15
+ attr_reader :loading
14
16
 
15
17
  def initialize(title: nil, description: nil, view: nil, **args)
16
18
  @title = title
@@ -20,6 +22,7 @@ class Avo::Resources::Items::Tab
20
22
  @args = args
21
23
  @visible = args[:visible]
22
24
  @lazy_load = args[:lazy_load]
25
+ @loading = args[:loading]
23
26
 
24
27
  post_initialize if respond_to?(:post_initialize)
25
28
  end
data/lib/avo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Avo
2
- VERSION = "4.0.0.beta.45" unless const_defined?(:VERSION)
2
+ VERSION = "4.0.0.beta.46" unless const_defined?(:VERSION)
3
3
  end
@@ -53,6 +53,7 @@ ar:
53
53
  choose_an_option: اختر خيارًا
54
54
  choose_item: اختر %{item}
55
55
  clear_value: مسح القيمة
56
+ click_to_load: انقر لتحميل
56
57
  click_to_reveal_filters: انقر لإظهار المرشحات
57
58
  close: إغلاق
58
59
  close_modal: أغلق النافذة
@@ -78,6 +79,7 @@ ar:
78
79
  failed: فشل
79
80
  failed_to_find_attachment: فشل في العثور على المرفق
80
81
  failed_to_load: فشل التحميل
82
+ failed_to_load_item: فشل في تحميل %{item}
81
83
  'false': خطأ
82
84
  file:
83
85
  few: ملفات
@@ -117,6 +119,7 @@ ar:
117
119
  value: القيمة
118
120
  less_content: محتوى أقل
119
121
  list_is_empty: القائمة فارغة
122
+ load_item: تحميل %{item}
120
123
  loading: جاري التحميل
121
124
  media_library:
122
125
  title: مكتبة الوسائط
@@ -165,6 +168,8 @@ ar:
165
168
  resource_destroyed: تم حذف السجل
166
169
  resource_updated: تم تحديث السجل
167
170
  resources: المصادر
171
+ retry: إعادة المحاولة
172
+ retry_item: إعادة المحاولة %{item}
168
173
  reupload_file: Reupload %{item}
169
174
  run: تشغيل
170
175
  save: حفظ
@@ -43,6 +43,7 @@ de:
43
43
  choose_an_option: Option auswählen
44
44
  choose_item: "%{item} auswählen"
45
45
  clear_value: Wert löschen
46
+ click_to_load: Klicken Sie hier, um zu laden
46
47
  click_to_reveal_filters: Klicken, um Filter anzuzeigen
47
48
  close: Schließen
48
49
  close_modal: Modal schließen
@@ -68,6 +69,7 @@ de:
68
69
  failed: Fehlgeschlagen
69
70
  failed_to_find_attachment: Anhang nicht gefunden
70
71
  failed_to_load: Laden fehlgeschlagen
72
+ failed_to_load_item: Fehler beim Laden von %{item}
71
73
  'false': Falsch
72
74
  file:
73
75
  one: Datei
@@ -103,6 +105,7 @@ de:
103
105
  value: Wert
104
106
  less_content: Weniger Inhalt
105
107
  list_is_empty: Liste ist leer
108
+ load_item: Lade %{item}
106
109
  loading: Lade...
107
110
  media_library:
108
111
  title: Medienbibliothek
@@ -147,6 +150,8 @@ de:
147
150
  resource_destroyed: Eintrag gelöscht
148
151
  resource_updated: Eintrag aktualisiert
149
152
  resources: Ressourcen
153
+ retry: Erneut versuchen
154
+ retry_item: Erneut versuchen %{item}
150
155
  reupload_file: Reupload %{item}
151
156
  run: Ausführen
152
157
  save: Speichern
@@ -43,6 +43,7 @@ en:
43
43
  choose_an_option: Choose an option
44
44
  choose_item: Choose %{item}
45
45
  clear_value: Clear value
46
+ click_to_load: Click to load
46
47
  click_to_reveal_filters: Click to reveal filters
47
48
  close: Close
48
49
  close_modal: Close modal
@@ -68,6 +69,7 @@ en:
68
69
  failed: Failed
69
70
  failed_to_find_attachment: Failed to find attachment
70
71
  failed_to_load: Failed to load
72
+ failed_to_load_item: Failed to load %{item}
71
73
  'false': 'False'
72
74
  file:
73
75
  one: file
@@ -103,6 +105,7 @@ en:
103
105
  value: Value
104
106
  less_content: Less content
105
107
  list_is_empty: List is empty
108
+ load_item: Load %{item}
106
109
  loading: Loading
107
110
  media_library:
108
111
  title: Media Library
@@ -147,6 +150,8 @@ en:
147
150
  resource_destroyed: Record destroyed
148
151
  resource_updated: Record updated
149
152
  resources: Resources
153
+ retry: Retry
154
+ retry_item: Retry %{item}
150
155
  reupload_file: Reupload %{item}
151
156
  run: Run
152
157
  save: Save
@@ -45,6 +45,7 @@ es:
45
45
  choose_an_option: Elige una opción
46
46
  choose_item: Elige %{item}
47
47
  clear_value: Borrar el valor
48
+ click_to_load: Haga clic para cargar
48
49
  click_to_reveal_filters: Pulsa para mostrar los filtros
49
50
  close: Cerrar
50
51
  close_modal: Cerrar modal
@@ -70,6 +71,7 @@ es:
70
71
  failed: Fallo
71
72
  failed_to_find_attachment: No se ha encontrado el archivo adjunto
72
73
  failed_to_load: No se ha podido cargar
74
+ failed_to_load_item: Error al cargar %{item}
73
75
  'false': Falso
74
76
  file:
75
77
  one: archivo
@@ -105,6 +107,7 @@ es:
105
107
  value: Valor
106
108
  less_content: Menos contenido
107
109
  list_is_empty: La lista está vacía
110
+ load_item: Cargar %{item}
108
111
  loading: Cargando
109
112
  media_library:
110
113
  title: Biblioteca de medios
@@ -149,6 +152,8 @@ es:
149
152
  resource_destroyed: Recurso eliminado
150
153
  resource_updated: Recurso actualizado
151
154
  resources: Recursos
155
+ retry: Reintentar
156
+ retry_item: Reintentar %{item}
152
157
  reupload_file: Reupload %{item}
153
158
  run: Ejecutar
154
159
  save: Guardar
@@ -45,6 +45,7 @@ fr:
45
45
  choose_an_option: Sélectionnez une option
46
46
  choose_item: Choisir %{item}
47
47
  clear_value: Effacer la valeur
48
+ click_to_load: Cliquez pour charger
48
49
  click_to_reveal_filters: Cliquez pour révéler les filtres
49
50
  close: Fermer
50
51
  close_modal: Fermer la fenêtre modale
@@ -70,6 +71,7 @@ fr:
70
71
  failed: Échec
71
72
  failed_to_find_attachment: Impossible de trouver la pièce jointe
72
73
  failed_to_load: Impossible de charger
74
+ failed_to_load_item: Échec du chargement de %{item}
73
75
  'false': Faux
74
76
  file:
75
77
  one: fichier
@@ -105,6 +107,7 @@ fr:
105
107
  value: Valeur
106
108
  less_content: Moins de contenu
107
109
  list_is_empty: La liste est vide
110
+ load_item: Charger %{item}
108
111
  loading: Chargement
109
112
  media_library:
110
113
  title: Bibliothèque multimédia
@@ -149,6 +152,8 @@ fr:
149
152
  resource_destroyed: Ressource détruite
150
153
  resource_updated: Ressource mise à jour
151
154
  resources: Ressources
155
+ retry: Réessayer
156
+ retry_item: Réessayer %{item}
152
157
  reupload_file: Reupload %{item}
153
158
  run: Exécuter
154
159
  save: Enregistrer
@@ -43,6 +43,7 @@ it:
43
43
  choose_an_option: Scegli un'opzione
44
44
  choose_item: Scegli %{item}
45
45
  clear_value: Cancella valore
46
+ click_to_load: Clicca per caricare
46
47
  click_to_reveal_filters: Clicca per mostrare i filtri
47
48
  close: Chiudi
48
49
  close_modal: Chiudi modale
@@ -68,6 +69,7 @@ it:
68
69
  failed: Fallito
69
70
  failed_to_find_attachment: Impossibile trovare l'allegato
70
71
  failed_to_load: Caricamento fallito
72
+ failed_to_load_item: Impossibile caricare %{item}
71
73
  'false': Falso
72
74
  file:
73
75
  one: file
@@ -103,6 +105,7 @@ it:
103
105
  value: Valore
104
106
  less_content: Meno contenuti
105
107
  list_is_empty: La lista è vuota
108
+ load_item: Carica %{item}
106
109
  loading: Caricamento in corso
107
110
  media_library:
108
111
  title: Libreria multimediale
@@ -147,6 +150,8 @@ it:
147
150
  resource_destroyed: Record distrutto
148
151
  resource_updated: Record aggiornato
149
152
  resources: Risorse
153
+ retry: Riprova
154
+ retry_item: Riprova %{item}
150
155
  reupload_file: Reupload %{item}
151
156
  run: Esegui
152
157
  save: Salva
@@ -45,6 +45,7 @@ ja:
45
45
  choose_an_option: オプションを選択
46
46
  choose_item: "%{item}を選択"
47
47
  clear_value: 値をクリア
48
+ click_to_load: 読み込みをクリック
48
49
  click_to_reveal_filters: フィルターを表示するにはクリック
49
50
  close: 閉じる
50
51
  close_modal: モーダルを閉じる
@@ -70,6 +71,7 @@ ja:
70
71
  failed: 失敗
71
72
  failed_to_find_attachment: アタッチメントを見つけるのに失敗
72
73
  failed_to_load: 読み込みに失敗
74
+ failed_to_load_item: "%{item}の読み込みに失敗しました"
73
75
  'false': 偽
74
76
  file:
75
77
  one: ファイル
@@ -105,6 +107,7 @@ ja:
105
107
  value: 値
106
108
  less_content: コンテンツが少ない
107
109
  list_is_empty: リストは空です
110
+ load_item: "%{item}を読み込む"
108
111
  loading: 読み込み中
109
112
  media_library:
110
113
  title: メディアライブラリ
@@ -149,6 +152,8 @@ ja:
149
152
  resource_destroyed: レコードが破棄されました
150
153
  resource_updated: レコードが更新されました
151
154
  resources: リソース
155
+ retry: 再試行
156
+ retry_item: "%{item}を再試行"
152
157
  reupload_file: Reupload %{item}
153
158
  run: 実行
154
159
  save: 保存
@@ -45,6 +45,7 @@ nb:
45
45
  choose_an_option: Velg et alternativ
46
46
  choose_item: Velge %{item}
47
47
  clear_value: Nullstill verdi
48
+ click_to_load: Klikk for å laste
48
49
  click_to_reveal_filters: Vis filter
49
50
  close: Lukk
50
51
  close_modal: Lukk modal
@@ -70,6 +71,7 @@ nb:
70
71
  failed: Feilet
71
72
  failed_to_find_attachment: Fant ikke vedlegg
72
73
  failed_to_load: Lasting feilet
74
+ failed_to_load_item: Kunne ikke laste %{item}
73
75
  'false': Falsk
74
76
  file:
75
77
  one: file
@@ -105,6 +107,7 @@ nb:
105
107
  value: Verdi
106
108
  less_content: Mindre innhold
107
109
  list_is_empty: Listen er tom
110
+ load_item: Last %{item}
108
111
  loading: Laster
109
112
  media_library:
110
113
  title: Mediebibliotek
@@ -149,6 +152,8 @@ nb:
149
152
  resource_destroyed: Ressurs slettet
150
153
  resource_updated: Ressurs oppdatert
151
154
  resources: Ressurser
155
+ retry: Prøv igjen
156
+ retry_item: Prøv igjen %{item}
152
157
  reupload_file: Reupload %{item}
153
158
  run: Kjør
154
159
  save: Lagre
@@ -43,6 +43,7 @@ nl:
43
43
  choose_an_option: Kies een optie
44
44
  choose_item: Kies %{item}
45
45
  clear_value: Waarde wissen
46
+ click_to_load: Klik om te laden
46
47
  click_to_reveal_filters: Klik om filters te tonen
47
48
  close: Sluiten
48
49
  close_modal: Modaal sluiten
@@ -68,6 +69,7 @@ nl:
68
69
  failed: Mislukt
69
70
  failed_to_find_attachment: Bijlage niet gevonden
70
71
  failed_to_load: Laden mislukt
72
+ failed_to_load_item: Laden van %{item} mislukt
71
73
  'false': Onwaar
72
74
  file:
73
75
  one: bestand
@@ -103,6 +105,7 @@ nl:
103
105
  value: Waarde
104
106
  less_content: Minder inhoud
105
107
  list_is_empty: Lijst is leeg
108
+ load_item: Laad %{item}
106
109
  loading: Laden...
107
110
  media_library:
108
111
  title: Mediabibliotheek
@@ -147,6 +150,8 @@ nl:
147
150
  resource_destroyed: Record verwijderd
148
151
  resource_updated: Record bijgewerkt
149
152
  resources: Bronnen
153
+ retry: Opnieuw proberen
154
+ retry_item: Probeer %{item} opnieuw
150
155
  reupload_file: Reupload %{item}
151
156
  run: Uitvoeren
152
157
  save: Opslaan
@@ -45,6 +45,7 @@ nn:
45
45
  choose_an_option: Vel eit alternativ
46
46
  choose_item: Vel %{item}
47
47
  clear_value: Nullstill verdi
48
+ click_to_load: Klikk for å laste inn
48
49
  click_to_reveal_filters: Vis filter
49
50
  close: Lukk
50
51
  close_modal: Lukk modal
@@ -70,6 +71,7 @@ nn:
70
71
  failed: Feila
71
72
  failed_to_find_attachment: Fann ikkje vedlegg
72
73
  failed_to_load: Lasting feila
74
+ failed_to_load_item: Feil ved innlasting av %{item}
73
75
  'false': Falsk
74
76
  file:
75
77
  one: file
@@ -105,6 +107,7 @@ nn:
105
107
  value: Verdi
106
108
  less_content: Mindre innhold
107
109
  list_is_empty: Lista er tom
110
+ load_item: Last inn %{item}
108
111
  loading: Lastar
109
112
  media_library:
110
113
  title: Media bibliotek
@@ -149,6 +152,8 @@ nn:
149
152
  resource_destroyed: Ressurs sletta
150
153
  resource_updated: Ressurs oppdatert
151
154
  resources: Ressursar
155
+ retry: Prøv igjen
156
+ retry_item: Prøv igjen %{item}
152
157
  reupload_file: Reupload %{item}
153
158
  run: Køyr
154
159
  save: Lagre
@@ -45,6 +45,7 @@ pl:
45
45
  choose_an_option: Wybierz opcję
46
46
  choose_item: Wybierz %{item}
47
47
  clear_value: Wyczyść wartość
48
+ click_to_load: Kliknij, aby załadować
48
49
  click_to_reveal_filters: Kliknij, aby pokazać filtry
49
50
  close: Zamknij
50
51
  close_modal: Zamknij okno modalne
@@ -70,6 +71,7 @@ pl:
70
71
  failed: Niepowodzenie
71
72
  failed_to_find_attachment: Nie udało się znaleźć załącznika
72
73
  failed_to_load: Nie udało się załadować
74
+ failed_to_load_item: Nie udało się załadować %{item}
73
75
  'false': Fałsz
74
76
  file:
75
77
  few: pliki
@@ -107,6 +109,7 @@ pl:
107
109
  value: Wartość
108
110
  less_content: Pokaż mniej
109
111
  list_is_empty: Lista jest pusta
112
+ load_item: Załaduj %{item}
110
113
  loading: Ładowanie
111
114
  media_library:
112
115
  title: Biblioteka mediów
@@ -153,6 +156,8 @@ pl:
153
156
  resource_destroyed: Rekord usunięty
154
157
  resource_updated: Rekord zaktualizowany
155
158
  resources: Zasoby
159
+ retry: Spróbuj ponownie
160
+ retry_item: Spróbuj ponownie %{item}
156
161
  reupload_file: Reupload %{item}
157
162
  run: Uruchom
158
163
  save: Zapisz
@@ -45,6 +45,7 @@ pt-BR:
45
45
  choose_an_option: Escolha uma opção
46
46
  choose_item: Escolher %{item}
47
47
  clear_value: Limpar valor
48
+ click_to_load: Clique para carregar
48
49
  click_to_reveal_filters: Clique para revelar os filtros
49
50
  close: Fechar
50
51
  close_modal: Fechar modal
@@ -70,6 +71,7 @@ pt-BR:
70
71
  failed: Falhou
71
72
  failed_to_find_attachment: Falhou ao achar anexo
72
73
  failed_to_load: Falha ao carregar
74
+ failed_to_load_item: Falha ao carregar %{item}
73
75
  'false': Falso
74
76
  file:
75
77
  one: ficheiro
@@ -105,6 +107,7 @@ pt-BR:
105
107
  value: Valor
106
108
  less_content: Menos conteúdo
107
109
  list_is_empty: Lista vazia
110
+ load_item: Carregar %{item}
108
111
  loading: Carregando
109
112
  media_library:
110
113
  title: Biblioteca de Mídia
@@ -149,6 +152,8 @@ pt-BR:
149
152
  resource_destroyed: Recurso destruído
150
153
  resource_updated: Recurso atualizado
151
154
  resources: Recursos
155
+ retry: Tentar novamente
156
+ retry_item: Tentar novamente %{item}
152
157
  reupload_file: Reupload %{item}
153
158
  run: Executar
154
159
  save: Salvar
@@ -45,6 +45,7 @@ pt:
45
45
  choose_an_option: Escolha uma opção
46
46
  choose_item: Escolher %{item}
47
47
  clear_value: Apagar valor
48
+ click_to_load: Clique para carregar
48
49
  click_to_reveal_filters: Clique para mostrar os filtros
49
50
  close: Fechar
50
51
  close_modal: Fechar modal
@@ -70,6 +71,7 @@ pt:
70
71
  failed: Falhou
71
72
  failed_to_find_attachment: Falha ao encontrar anexo
72
73
  failed_to_load: Falhou ao carregar
74
+ failed_to_load_item: Falha ao carregar %{item}
73
75
  'false': Falso
74
76
  file:
75
77
  one: ficheiro
@@ -105,6 +107,7 @@ pt:
105
107
  value: Valor
106
108
  less_content: Menos conteúdo
107
109
  list_is_empty: Lista vazia
110
+ load_item: Carregar %{item}
108
111
  loading: A carregar
109
112
  media_library:
110
113
  title: Biblioteca de Mídia
@@ -149,6 +152,8 @@ pt:
149
152
  resource_destroyed: Recurso destruído
150
153
  resource_updated: Recurso atualizado
151
154
  resources: Recursos
155
+ retry: Tentar novamente
156
+ retry_item: Tentar novamente %{item}
152
157
  reupload_file: Reupload %{item}
153
158
  run: Executar
154
159
  save: Guardar
@@ -47,6 +47,7 @@ ro:
47
47
  choose_an_option: Alege o opțiune
48
48
  choose_item: Alege %{item}
49
49
  clear_value: Șterge valoarea
50
+ click_to_load: Click pentru a încărca
50
51
  click_to_reveal_filters: Faceți clic pentru a afișa filtrele
51
52
  close: Închide
52
53
  close_modal: Închide modalul
@@ -72,6 +73,7 @@ ro:
72
73
  failed: A eșuat
73
74
  failed_to_find_attachment: Atașamentul nu a fost găsit
74
75
  failed_to_load: Încărcarea a eșuat
76
+ failed_to_load_item: Încărcarea %{item} a eșuat
75
77
  'false': Fals
76
78
  file:
77
79
  few: fişiere
@@ -108,6 +110,7 @@ ro:
108
110
  value: Valoare
109
111
  less_content: Mai puțin conținut
110
112
  list_is_empty: Lista este goală
113
+ load_item: Încărcați %{item}
111
114
  loading: Se incarcă
112
115
  media_library:
113
116
  title: Bibliotecă media
@@ -153,6 +156,8 @@ ro:
153
156
  resource_destroyed: Resursă ștearsă
154
157
  resource_updated: Resursă actualizată
155
158
  resources: Resurse
159
+ retry: Reîncercați
160
+ retry_item: Reîncercați %{item}
156
161
  reupload_file: Reupload %{item}
157
162
  run: Rulează
158
163
  save: Salvează