avo 4.0.0.beta.40 → 4.0.0.beta.41

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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/app/assets/builds/avo/application.css +74 -53
  4. data/app/assets/builds/avo/application.js +99 -99
  5. data/app/assets/builds/avo/application.js.map +4 -4
  6. data/app/assets/stylesheets/application.css +1 -1
  7. data/app/assets/stylesheets/css/components/breadcrumbs.css +4 -4
  8. data/app/assets/stylesheets/css/components/color_scheme_switcher.css +3 -3
  9. data/app/assets/stylesheets/css/fields/stars.css +3 -3
  10. data/app/assets/stylesheets/css/fields/tags.css +5 -0
  11. data/app/assets/stylesheets/css/layout.css +14 -5
  12. data/app/assets/stylesheets/css/variables.css +37 -0
  13. data/app/components/avo/field_wrapper_component.html.erb +1 -1
  14. data/app/components/avo/fields/boolean_field/edit_component.html.erb +2 -2
  15. data/app/components/avo/fields/common/boolean_check_component.rb +3 -3
  16. data/app/components/avo/fields/common/files/view_type/grid_item_component.html.erb +3 -3
  17. data/app/components/avo/fields/common/files/view_type/grid_item_component.rb +2 -2
  18. data/app/components/avo/fields/common/status_viewer_component.html.erb +1 -1
  19. data/app/components/avo/fields/file_field/edit_component.html.erb +1 -1
  20. data/app/components/avo/fields/files_field/edit_component.html.erb +1 -1
  21. data/app/components/avo/fields/preview_field/index_component.rb +1 -1
  22. data/app/components/avo/fields/tags_field/tag_component.html.erb +1 -1
  23. data/app/components/avo/paginator_component.html.erb +13 -9
  24. data/app/controllers/avo/attachments_controller.rb +20 -4
  25. data/app/javascript/application.js +2 -13
  26. data/app/javascript/js/controllers/appearance_controller.js +2 -2
  27. data/app/javascript/js/controllers/appearance_preview_controller.js +34 -0
  28. data/app/javascript/js/controllers.js +2 -0
  29. data/app/javascript/js/global_hotkeys.js +2 -2
  30. data/app/views/avo/partials/_color_theme_override.html.erb +13 -0
  31. data/app/views/avo/private/appearance.html.erb +20 -55
  32. data/bin/setup +91 -0
  33. data/lib/avo/version.rb +1 -1
  34. data/lib/generators/avo/templates/locales/avo.ar.yml +7 -0
  35. data/lib/generators/avo/templates/locales/avo.de.yml +3 -0
  36. data/lib/generators/avo/templates/locales/avo.en.yml +3 -0
  37. data/lib/generators/avo/templates/locales/avo.es.yml +3 -0
  38. data/lib/generators/avo/templates/locales/avo.fr.yml +3 -0
  39. data/lib/generators/avo/templates/locales/avo.it.yml +3 -0
  40. data/lib/generators/avo/templates/locales/avo.ja.yml +3 -0
  41. data/lib/generators/avo/templates/locales/avo.nb.yml +3 -0
  42. data/lib/generators/avo/templates/locales/avo.nl.yml +3 -0
  43. data/lib/generators/avo/templates/locales/avo.nn.yml +3 -0
  44. data/lib/generators/avo/templates/locales/avo.pl.yml +5 -0
  45. data/lib/generators/avo/templates/locales/avo.pt-BR.yml +3 -0
  46. data/lib/generators/avo/templates/locales/avo.pt.yml +3 -0
  47. data/lib/generators/avo/templates/locales/avo.ro.yml +4 -0
  48. data/lib/generators/avo/templates/locales/avo.ru.yml +5 -0
  49. data/lib/generators/avo/templates/locales/avo.tr.yml +3 -0
  50. data/lib/generators/avo/templates/locales/avo.ua.yml +5 -0
  51. data/lib/generators/avo/templates/locales/avo.zh-TW.yml +3 -0
  52. data/lib/generators/avo/templates/locales/avo.zh.yml +3 -0
  53. metadata +3 -2
  54. data/bin/init +0 -52
@@ -286,7 +286,7 @@
286
286
  }
287
287
  </style>
288
288
 
289
- <div class="flex flex-col">
289
+ <div class="flex flex-col" data-controller="appearance-preview">
290
290
  <%= render ui.panel(title: 'Color Tokens', description: 'Avo design system color variables for Light and Dark modes. Click any swatch to copy the CSS variable name.') do |panel| %>
291
291
  <% panel.with_body do %>
292
292
  <div class="flex flex-col gap-6">
@@ -296,14 +296,14 @@
296
296
  <p class="section-subtitle">Base colors used for layout and structure</p>
297
297
 
298
298
  <div class="tabs" id="foundations-tabs">
299
- <button class="tab-button active" data-tab="foundations-light">☀️ Light Mode</button>
300
- <button class="tab-button" data-tab="foundations-dark">🌙 Dark Mode</button>
299
+ <button data-action="click->appearance-preview#switchTab" class="tab-button active" data-tab="foundations-light">☀️ Light Mode</button>
300
+ <button data-action="click->appearance-preview#switchTab" class="tab-button" data-tab="foundations-dark">🌙 Dark Mode</button>
301
301
  </div>
302
302
 
303
303
  <div id="foundations-light" class="tab-content active">
304
304
  <div class="color-group">
305
305
  <% @foundation_tokens.each do |color| %>
306
- <div class="color-swatch" onclick="copyToClipboard('<%= color[:name] %>')">
306
+ <div class="color-swatch" data-action="click->appearance-preview#copy" data-copy-text="<%= color[:name] %>">
307
307
  <div class="swatch-color" style="background-color: var(<%= color[:name] %>)"></div>
308
308
  <div class="swatch-info">
309
309
  <div class="swatch-label"><%= color[:name] %></div>
@@ -321,7 +321,7 @@
321
321
  <div class="dark">
322
322
  <div class="color-group">
323
323
  <% @foundation_tokens.each do |color| %>
324
- <div class="color-swatch" onclick="copyToClipboard('<%= color[:name] %>')">
324
+ <div class="color-swatch" data-action="click->appearance-preview#copy" data-copy-text="<%= color[:name] %>">
325
325
  <div class="swatch-color" style="background-color: var(<%= color[:name] %>)"></div>
326
326
  <div class="swatch-info">
327
327
  <div class="swatch-label"><%= color[:name] %></div>
@@ -339,7 +339,7 @@
339
339
  <h4 class="section-header" style="font-size: 0.95rem;">Neutral Scale</h4>
340
340
  <div class="neutral-scale">
341
341
  <% @neutral_scale.each do |item| %>
342
- <div class="neutral-swatch" onclick="copyToClipboard('--color-avo-neutral-<%= item[:name] %>')">
342
+ <div class="neutral-swatch" data-action="click->appearance-preview#copy" data-copy-text="--color-avo-neutral-<%= item[:name] %>">
343
343
  <div class="neutral-color" style="background-color: var(<%= item[:css_var] %>)"></div>
344
344
  <div class="neutral-info">
345
345
  <div class="neutral-label"><%= item[:name] %></div>
@@ -356,7 +356,7 @@
356
356
  <div class="accent-group">
357
357
  <div class="accent-group-label" style="text-transform: capitalize;"><%= color[:name] %></div>
358
358
  <div class="accent-group-swatches">
359
- <div class="neutral-swatch" onclick="copyToClipboard('--color-<%= color[:name] %>-500')">
359
+ <div class="neutral-swatch" data-action="click->appearance-preview#copy" data-copy-text="--color-<%= color[:name] %>-500">
360
360
  <div class="neutral-color" style="background-color: var(--color-<%= color[:name] %>-500)"></div>
361
361
  <div class="neutral-info">
362
362
  <div class="neutral-label">500</div>
@@ -364,7 +364,7 @@
364
364
  </div>
365
365
  </div>
366
366
 
367
- <div class="neutral-swatch" onclick="copyToClipboard('--color-<%= color[:name] %>-600')">
367
+ <div class="neutral-swatch" data-action="click->appearance-preview#copy" data-copy-text="--color-<%= color[:name] %>-600">
368
368
  <div class="neutral-color" style="background-color: var(--color-<%= color[:name] %>-600)"></div>
369
369
  <div class="neutral-info">
370
370
  <div class="neutral-label">600</div>
@@ -372,7 +372,7 @@
372
372
  </div>
373
373
  </div>
374
374
 
375
- <div class="neutral-swatch" onclick="copyToClipboard('--color-white')">
375
+ <div class="neutral-swatch" data-action="click->appearance-preview#copy" data-copy-text="--color-white">
376
376
  <div class="neutral-color" style="background-color: var(--color-white)"></div>
377
377
  <div class="neutral-info">
378
378
  <div class="neutral-label">fg</div>
@@ -391,10 +391,10 @@
391
391
  <p class="section-subtitle">Brand colors used for emphasis and accent elements</p>
392
392
 
393
393
  <div class="tabs" id="accents-tabs">
394
- <button class="tab-button active" data-tab="accents-default">◼️ Default</button>
395
- <button class="tab-button" data-tab="accents-light">☀️ Light Mode</button>
396
- <button class="tab-button" data-tab="accents-dark">🌙 Dark Mode</button>
397
- <button class="tab-button" data-tab="accents-options">🎨 All Colors</button>
394
+ <button data-action="click->appearance-preview#switchTab" class="tab-button active" data-tab="accents-default">◼️ Default</button>
395
+ <button data-action="click->appearance-preview#switchTab" class="tab-button" data-tab="accents-light">☀️ Light Mode</button>
396
+ <button data-action="click->appearance-preview#switchTab" class="tab-button" data-tab="accents-dark">🌙 Dark Mode</button>
397
+ <button data-action="click->appearance-preview#switchTab" class="tab-button" data-tab="accents-options">🎨 All Colors</button>
398
398
  </div>
399
399
 
400
400
  <div id="accents-default" class="tab-content active">
@@ -402,7 +402,7 @@
402
402
  <div class="accent-group-label">Light Mode</div>
403
403
  <div class="accent-cards accent-cards--detailed">
404
404
  <% @accent_tokens.each do |color| %>
405
- <div class="accent-card accent-card--detailed" onclick="copyToClipboard('<%= color[:name] %>')">
405
+ <div class="accent-card accent-card--detailed" data-action="click->appearance-preview#copy" data-copy-text="<%= color[:name] %>">
406
406
  <div class="accent-swatch-color" style="background-color: <%= color[:value] %>">
407
407
  <%= color[:name].sub('--color-', '') %>
408
408
  </div>
@@ -420,7 +420,7 @@
420
420
  <div class="dark">
421
421
  <div class="accent-cards accent-cards--detailed">
422
422
  <% @accent_tokens.each do |color| %>
423
- <div class="accent-card accent-card--detailed" onclick="copyToClipboard('<%= color[:name] %>')">
423
+ <div class="accent-card accent-card--detailed" data-action="click->appearance-preview#copy" data-copy-text="<%= color[:name] %>">
424
424
  <div class="accent-swatch-color" style="background-color: <%= color[:value] %>">
425
425
  <%= color[:name].sub('--color-', '') %>
426
426
  </div>
@@ -440,7 +440,7 @@
440
440
  <div id="accents-light" class="tab-content">
441
441
  <div class="accent-cards accent-cards--detailed">
442
442
  <% @accent_tokens.each do |color| %>
443
- <div class="accent-card accent-card--detailed" onclick="copyToClipboard('<%= color[:name] %>')">
443
+ <div class="accent-card accent-card--detailed" data-action="click->appearance-preview#copy" data-copy-text="<%= color[:name] %>">
444
444
  <div class="accent-swatch-color" style="background-color: <%= color[:value] %>">
445
445
  <%= color[:name].sub('--color-', '') %>
446
446
  </div>
@@ -459,7 +459,7 @@
459
459
  <div class="dark">
460
460
  <div class="accent-cards accent-cards--detailed">
461
461
  <% @accent_tokens.each do |color| %>
462
- <div class="accent-card accent-card--detailed" onclick="copyToClipboard('<%= color[:name] %>')">
462
+ <div class="accent-card accent-card--detailed" data-action="click->appearance-preview#copy" data-copy-text="<%= color[:name] %>">
463
463
  <div class="accent-swatch-color" style="background-color: <%= color[:value] %>">
464
464
  <%= color[:name].sub('--color-', '') %>
465
465
  </div>
@@ -478,7 +478,7 @@
478
478
  <div id="accents-options" class="tab-content">
479
479
  <div class="accent-cards">
480
480
  <% @accent_options.each do |color| %>
481
- <div class="accent-card" onclick="copyToClipboard('--color-<%= color[:name] %>-500')">
481
+ <div class="accent-card" data-action="click->appearance-preview#copy" data-copy-text="--color-<%= color[:name] %>-500">
482
482
  <div class="accent-swatch-color" style="background-color: var(--color-<%= color[:name] %>-500)"></div>
483
483
  <div class="accent-swatch-info">
484
484
  <div class="accent-name"><%= color[:name] %></div>
@@ -491,41 +491,6 @@
491
491
  </div>
492
492
  <% end %>
493
493
  <% end %>
494
- </div>
495
494
 
496
- <div class="copy-indicator" id="copyIndicator">Copied to clipboard!</div>
497
-
498
- <script>
499
- // Tab switching
500
- document.querySelectorAll('.tab-button').forEach(button => {
501
- button.addEventListener('click', function(event) {
502
- event.preventDefault();
503
- const tabId = this.dataset.tab;
504
- const tabGroup = this.closest('.tabs');
505
- const tabContainer = tabGroup.parentElement;
506
-
507
- // Hide all tabs in this group
508
- tabContainer.querySelectorAll('.tab-content').forEach(tab => {
509
- tab.classList.remove('active');
510
- });
511
-
512
- // Deactivate all buttons in this group
513
- tabGroup.querySelectorAll('.tab-button').forEach(btn => {
514
- btn.classList.remove('active');
515
- });
516
-
517
- // Show selected tab and activate button
518
- document.getElementById(tabId).classList.add('active');
519
- this.classList.add('active');
520
- });
521
- });
522
-
523
- // Copy to clipboard
524
- function copyToClipboard(text) {
525
- navigator.clipboard.writeText(text).then(() => {
526
- const indicator = document.getElementById('copyIndicator');
527
- indicator.classList.add('show');
528
- setTimeout(() => indicator.classList.remove('show'), 2000);
529
- });
530
- }
531
- </script>
495
+ <div class="copy-indicator" data-appearance-preview-target="indicator">Copied to clipboard!</div>
496
+ </div>
data/bin/setup ADDED
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Usage: bin/setup [options]
4
+ #
5
+ # One-stop setup for the Avo gem. Configures the upstream git remote, installs
6
+ # gems and yarn deps, copies env templates, optionally brings up Docker Postgres,
7
+ # prepares the dummy app's databases, and builds front-end assets.
8
+ #
9
+ # Options:
10
+ # --fast Restore the dummy DB from the committed snapshot at
11
+ # spec/dummy/db/fast_seed/ (sub-seconds). Skips ~60-120s of
12
+ # db:seed work, including ~25 picsum.photos HTTP fetches.
13
+ # --docker Use Docker Compose for Postgres. Default is to use your
14
+ # local Postgres (no Docker).
15
+ # -h, --help Print this message.
16
+
17
+ require_relative "helpers"
18
+ require "optparse"
19
+
20
+ options = {fast: false, docker: false}
21
+
22
+ OptionParser.new do |opts|
23
+ opts.banner = "Usage: bin/setup [--fast] [--docker]"
24
+ opts.on("--fast", "Restore from the committed fast-seed snapshot instead of running db:seed")
25
+ opts.on("--docker", "Use Docker Compose for Postgres (default: local Postgres)")
26
+ opts.on("-h", "--help", "Show this message") do
27
+ File.foreach(__FILE__)
28
+ .take_while { |l| l.start_with?("#") || l.strip.empty? }
29
+ .drop_while { |l| !l.start_with?("# Usage:") }
30
+ .each { |l| puts l.sub(/\A# ?/, "") }
31
+ exit
32
+ end
33
+ end.parse!(into: options)
34
+
35
+ app_root do
36
+ use_docker = options[:docker]
37
+
38
+ header "Configuring git"
39
+ target_upstream = "https://github.com/avo-hq/avo.git"
40
+ current_upstream = `git config --get remote.upstream.url`.chomp
41
+ if current_upstream.nil? || current_upstream.empty?
42
+ puts "Adding new remote 'upstream' to #{target_upstream}"
43
+ run! "git remote add upstream #{target_upstream}"
44
+ elsif current_upstream != target_upstream
45
+ puts "Updating existing remote 'upstream' to #{target_upstream}"
46
+ run! "git remote set-url upstream #{target_upstream}"
47
+ else
48
+ puts "Remote 'upstream' already points to #{target_upstream}, no change"
49
+ end
50
+
51
+ header "Installing gems"
52
+ run! "bundle install"
53
+
54
+ header "Installing Yarn packages"
55
+ run! "yarn"
56
+ run! "(cd spec/dummy; yarn)"
57
+
58
+ unless File.exist?("spec/dummy/.env.test")
59
+ run! "cp spec/dummy/.env.test.sample spec/dummy/.env.test"
60
+ end
61
+
62
+ if use_docker
63
+ header "Creating the Docker volume"
64
+ run! "docker volume create --name=avo-db-data"
65
+
66
+ header "Creating and running the Docker image"
67
+ run! "docker-compose up -d"
68
+ end
69
+
70
+ if options[:fast]
71
+ header "Preparing the database (fast path)"
72
+ # Restores from spec/dummy/db/fast_seed/ (committed snapshot).
73
+ # If the snapshot is missing or stale, the rake task prints an actionable error
74
+ # pointing at `bin/rails app:db:fast_seed:rebuild`.
75
+ run! "bin/rails app:db:fast_seed"
76
+ run! "RAILS_ENV=test bin/rails db:create db:schema:load"
77
+ else
78
+ header "Preparing the database"
79
+ run! "bin/rails db:setup"
80
+ end
81
+
82
+ header "Building assets"
83
+ run! "yarn build:js"
84
+ run! "yarn build:custom-js"
85
+ run! "yarn build:css"
86
+
87
+ if use_docker
88
+ header "Stopping the Docker image"
89
+ run! "docker-compose stop"
90
+ end
91
+ end
data/lib/avo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Avo
2
- VERSION = "4.0.0.beta.40" unless const_defined?(:VERSION)
2
+ VERSION = "4.0.0.beta.41" unless const_defined?(:VERSION)
3
3
  end
@@ -149,6 +149,13 @@ ar:
149
149
  pages: صفحات
150
150
  per_page: لكل صفحة
151
151
  prev_page: الصفحة السابقة
152
+ record:
153
+ few: سجلات
154
+ many: سجلات
155
+ one: سجل
156
+ other: سجلات
157
+ two: سجلان
158
+ zero: سجلات
152
159
  records_selected_from_all_pages_html: جميع السجلات مختارة من جميع الصفحات
153
160
  reload: إعادة تحميل
154
161
  remove_selection: إزالة التحديد
@@ -135,6 +135,9 @@ de:
135
135
  pages: Seiten
136
136
  per_page: Pro Seite
137
137
  prev_page: Vorherige Seite
138
+ record:
139
+ one: Eintrag
140
+ other: Einträge
138
141
  records_selected_from_all_pages_html: Alle Einträge von allen Seiten ausgewählt
139
142
  reload: Neu laden
140
143
  remove_selection: Auswahl aufheben
@@ -135,6 +135,9 @@ en:
135
135
  pages: Pages
136
136
  per_page: Per page
137
137
  prev_page: Previous page
138
+ record:
139
+ one: record
140
+ other: records
138
141
  records_selected_from_all_pages_html: All records selected from all pages
139
142
  reload: Reload
140
143
  remove_selection: Remove selection
@@ -137,6 +137,9 @@ es:
137
137
  pages: Páginas
138
138
  per_page: Por página
139
139
  prev_page: Página anterior
140
+ record:
141
+ one: registro
142
+ other: registros
140
143
  records_selected_from_all_pages_html: Todos los registros seleccionados de todas las páginas.
141
144
  reload: Recargar
142
145
  remove_selection: Quitar la selección
@@ -137,6 +137,9 @@ fr:
137
137
  pages: Pages
138
138
  per_page: Par page
139
139
  prev_page: Page précédente
140
+ record:
141
+ one: enregistrement
142
+ other: enregistrements
140
143
  records_selected_from_all_pages_html: tous les éléments sélectionnés de toutes les pages
141
144
  reload: Recharger
142
145
  remove_selection: Supprimer la sélection
@@ -135,6 +135,9 @@ it:
135
135
  pages: Pagine
136
136
  per_page: Per pagina
137
137
  prev_page: Pagina precedente
138
+ record:
139
+ one: record
140
+ other: record
138
141
  records_selected_from_all_pages_html: Tutti i record selezionati da tutte le pagine
139
142
  reload: Ricarica
140
143
  remove_selection: Rimuovi selezione
@@ -137,6 +137,9 @@ ja:
137
137
  pages: ページ
138
138
  per_page: ページあたり
139
139
  prev_page: 前のページ
140
+ record:
141
+ one: レコード
142
+ other: レコード
140
143
  records_selected_from_all_pages_html: 全ページから選択された全レコード
141
144
  reload: リロード
142
145
  remove_selection: 選択を解除
@@ -137,6 +137,9 @@ nb:
137
137
  pages: Sider
138
138
  per_page: Per side
139
139
  prev_page: Forrige side
140
+ record:
141
+ one: post
142
+ other: poster
140
143
  records_selected_from_all_pages_html: Alle poster valgt fra alle sider
141
144
  reload: Last inn på nytt
142
145
  remove_selection: Fjern valg
@@ -135,6 +135,9 @@ nl:
135
135
  pages: Pagina's
136
136
  per_page: Per pagina
137
137
  prev_page: Vorige pagina
138
+ record:
139
+ one: record
140
+ other: records
138
141
  records_selected_from_all_pages_html: Alle geselecteerde records van alle pagina's
139
142
  reload: Vernieuwen
140
143
  remove_selection: Selectie verwijderen
@@ -137,6 +137,9 @@ nn:
137
137
  pages: Sider
138
138
  per_page: Per side
139
139
  prev_page: Førre side
140
+ record:
141
+ one: post
142
+ other: postar
140
143
  records_selected_from_all_pages_html: Alle poster valgt fra alle sider
141
144
  reload: Last inn på nytt
142
145
  remove_selection: Fjern val
@@ -139,6 +139,11 @@ pl:
139
139
  pages: Strony
140
140
  per_page: Na stronie
141
141
  prev_page: Poprzednia strona
142
+ record:
143
+ few: rekordy
144
+ many: rekordów
145
+ one: rekord
146
+ other: rekordów
142
147
  records_selected_from_all_pages_html: Wybrane rekordy z wszystkich stron
143
148
  reload: Odśwież
144
149
  remove_selection: Usuń zaznaczenie
@@ -137,6 +137,9 @@ pt-BR:
137
137
  pages: Páginas
138
138
  per_page: Por página
139
139
  prev_page: Página anterior
140
+ record:
141
+ one: registro
142
+ other: registros
140
143
  records_selected_from_all_pages_html: Todos os registros de todas as páginas selecionados
141
144
  reload: Recarregar
142
145
  remove_selection: Remover seleção
@@ -137,6 +137,9 @@ pt:
137
137
  pages: Páginas
138
138
  per_page: Por página
139
139
  prev_page: Página anterior
140
+ record:
141
+ one: registo
142
+ other: registos
140
143
  records_selected_from_all_pages_html: Todos os itens de todas as páginas selecionados
141
144
  reload: Recarregar
142
145
  remove_selection: Remover seleção
@@ -140,6 +140,10 @@ ro:
140
140
  pages: Pagini
141
141
  per_page: Pe pagină
142
142
  prev_page: Pagina anterioara
143
+ record:
144
+ few: înregistrări
145
+ one: înregistrare
146
+ other: înregistrări
143
147
  records_selected_from_all_pages_html: Toate selectate din toate paginile
144
148
  reload: Reîncarcă
145
149
  remove_selection: Șterge selecția
@@ -139,6 +139,11 @@ ru:
139
139
  pages: Страницы
140
140
  per_page: На странице
141
141
  prev_page: Предыдущая страница
142
+ record:
143
+ few: записи
144
+ many: записей
145
+ one: запись
146
+ other: записей
142
147
  records_selected_from_all_pages_html: Все записи выбраны со всех страниц
143
148
  reload: Обновить
144
149
  remove_selection: Убрать выбор
@@ -137,6 +137,9 @@ tr:
137
137
  pages: Sayfalar
138
138
  per_page: Sayfa başına
139
139
  prev_page: Önceki sayfa
140
+ record:
141
+ one: kayıt
142
+ other: kayıtlar
140
143
  records_selected_from_all_pages_html: Tüm sayfalardan seçilen tüm kayıtlar
141
144
  reload: Yeniden yükle
142
145
  remove_selection: Seçimi sil
@@ -137,6 +137,11 @@ ua:
137
137
  pages: Pages
138
138
  per_page: На сторінці
139
139
  prev_page: Попередня сторінка
140
+ record:
141
+ few: записи
142
+ many: записів
143
+ one: запис
144
+ other: записів
140
145
  records_selected_from_all_pages_html: Вибрані всі записи з усіх сторінок
141
146
  reload: Перезавантажити
142
147
  remove_selection: Видалити вибір
@@ -135,6 +135,9 @@ zh-TW:
135
135
  pages: 頁面
136
136
  per_page: 每頁顯示
137
137
  prev_page: 上一頁
138
+ record:
139
+ one: 筆記錄
140
+ other: 筆記錄
138
141
  records_selected_from_all_pages_html: 所有頁面中選中的記錄
139
142
  reload: 重新載入
140
143
  remove_selection: 清除選擇
@@ -135,6 +135,9 @@ zh:
135
135
  pages: 页面
136
136
  per_page: 每页显示
137
137
  prev_page: 上一页
138
+ record:
139
+ one: 条记录
140
+ other: 条记录
138
141
  records_selected_from_all_pages_html: 所有页面中选中的记录
139
142
  reload: 重新加载
140
143
  remove_selection: 清除选择
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avo
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0.beta.40
4
+ version: 4.0.0.beta.41
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrian Marin
@@ -749,6 +749,7 @@ files:
749
749
  - app/javascript/js/controllers/actions_overflow_controller.js
750
750
  - app/javascript/js/controllers/actions_picker_controller.js
751
751
  - app/javascript/js/controllers/appearance_controller.js
752
+ - app/javascript/js/controllers/appearance_preview_controller.js
752
753
  - app/javascript/js/controllers/attachments_controller.js
753
754
  - app/javascript/js/controllers/base_modal_controller.js
754
755
  - app/javascript/js/controllers/boolean_filter_controller.js
@@ -891,10 +892,10 @@ files:
891
892
  - avo.gemspec
892
893
  - bin/dev
893
894
  - bin/helpers.rb
894
- - bin/init
895
895
  - bin/prod
896
896
  - bin/rails
897
897
  - bin/rspec
898
+ - bin/setup
898
899
  - bin/spring
899
900
  - bin/test
900
901
  - config/brakeman.ignore
data/bin/init DELETED
@@ -1,52 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require_relative 'helpers'
4
-
5
- app_root do
6
- use_docker = ask(
7
- question: 'Would you like to use Docker Compose for Postgres?',
8
- valid_answers: ['y', 'N']
9
- )
10
-
11
- header 'Configuring git'
12
- target_upstream = "https://github.com/avo-hq/avo.git"
13
- current_upstream = `git config --get remote.upstream.url`.chomp
14
- if current_upstream.nil? || current_upstream.empty?
15
- puts "Adding new remote 'upstream' to #{target_upstream}"
16
- run! "git remote add upstream #{target_upstream}"
17
- elsif current_upstream != target_upstream
18
- puts "Updating existing remote 'upstream' to #{target_upstream}"
19
- run! "git remote set-url upstream #{target_upstream}"
20
- else
21
- puts "Remote 'upstream' already points to #{target_upstream}, no change"
22
- end
23
-
24
- header 'Installing gems'
25
- run! 'bundle install'
26
-
27
- header 'Installing Yarn packages'
28
- run! 'yarn'
29
- run! '(cd spec/dummy; yarn)'
30
- run! '(cp spec/dummy/.env.test.sample spec/dummy/.env.test)'
31
-
32
- if use_docker == 'y'
33
- header 'Creating the Docker volume'
34
- run! 'docker volume create --name=avo-db-data'
35
-
36
- header 'Creating and running the Docker image'
37
- run! 'docker-compose up -d'
38
- end
39
-
40
- header 'Preparing the database'
41
- run! 'bin/rails db:setup'
42
-
43
- header 'Building assets'
44
- run! 'yarn build:js'
45
- run! 'yarn build:custom-js'
46
- run! 'yarn build:css'
47
-
48
- if use_docker == 'y'
49
- header 'Stopping the Docker image'
50
- run! 'docker-compose stop'
51
- end
52
- end