formstrap 0.2.1 → 0.3.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 (31) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -0
  3. data/app/assets/javascripts/formstrap/controllers/nested_preview_controller.js +167 -0
  4. data/app/assets/javascripts/formstrap/controllers/preview_controller.js +65 -0
  5. data/app/assets/javascripts/formstrap/controllers/repeater_controller.js +39 -7
  6. data/app/assets/javascripts/formstrap/index.js +4 -0
  7. data/app/assets/javascripts/formstrap.js +199 -7
  8. data/app/assets/stylesheets/formstrap/shared/nested_preview.scss +31 -0
  9. data/app/assets/stylesheets/formstrap/shared.scss +1 -0
  10. data/app/assets/stylesheets/formstrap.css +31 -0
  11. data/app/views/formstrap/_button.html.erb +0 -0
  12. data/app/views/formstrap/_repeater.html.erb +40 -22
  13. data/app/views/formstrap/repeater/_row.html.erb +20 -4
  14. data/app/views/formstrap/shared/_nested_preview.html.erb +35 -0
  15. data/config/locales/de.yml +5 -0
  16. data/config/locales/en.yml +1 -5
  17. data/config/locales/formstrap/de.yml +48 -0
  18. data/config/locales/formstrap/en.yml +48 -0
  19. data/config/locales/formstrap/fr.yml +48 -0
  20. data/config/locales/formstrap/nl.yml +48 -0
  21. data/config/locales/fr.yml +5 -0
  22. data/config/locales/nl.yml +1 -5
  23. data/lib/formstrap/form_builder.rb +15 -0
  24. data/lib/formstrap/version.rb +1 -1
  25. metadata +13 -8
  26. data/config/locales/formstrap/forms/en.yml +0 -25
  27. data/config/locales/formstrap/forms/nl.yml +0 -25
  28. data/config/locales/formstrap/media/en.yml +0 -16
  29. data/config/locales/formstrap/media/nl.yml +0 -16
  30. data/config/locales/formstrap/thumbnail/en.yml +0 -4
  31. data/config/locales/formstrap/thumbnail/nl.yml +0 -4
@@ -1,14 +1,17 @@
1
1
  <%
2
2
  # formstrap/repeater
3
3
  #
4
- # ==== Options
4
+ # ==== Required parameters
5
5
  # * +form+ - Form object
6
6
  # * +attribute+ - Name of the attribute of the form model
7
+ #
8
+ # ==== Optional parameters
7
9
  # * +header+ - Name of the template to use as header
8
10
  # * +label+ - Text to show as label. Label will be hidden if value is false
9
11
  # * +templates+ - List of all views that can be used as a template for a new block
10
12
  # * +flush+ - Set to true if you want the list items to sit flush with its parent.
11
13
  # * +row+ - Pass hash with options to pass to the row template.
14
+ # * +preview_url+ - Enables previews of each row. Provide and endpoint capable of rendering a preview for the rows values.
12
15
  #
13
16
  # ==== Examples
14
17
  # # Basic version
@@ -28,7 +31,12 @@
28
31
  #
29
32
  # # Allow more than one type of fields to be inserted. You must specify the templates as an array of view paths
30
33
  # <% templates = ["admin/questions/fields/type_1", "admin/questions/fields/type_2"] %#>
31
- # <% render "formstrap/repeater", form: form, attribute: :questions, templates: templates do |question| %#>
34
+ # <% render "formstrap/repeater", form: form, attribute: :questions, templates: templates do |question, template_name| %#>
35
+ # <% render "admin/questions/#{template_name}, form: :question" %#>
36
+ # <% end %#>
37
+ #
38
+ # # Enable previews
39
+ # <% render "formstrap/repeater", form: form, attribute: :questions, preview_url: admin_preview_question_path do |question| %#>
32
40
  # <% render "admin/questions/fields, form: :question" %#>
33
41
  # <% end %#>
34
42
 
@@ -37,6 +45,7 @@
37
45
  header = local_assigns.has_key?(:header) ? header : nil
38
46
  templates = local_assigns.has_key?(:templates) ? templates : []
39
47
  flush = local_assigns.has_key?(:flush) ? flush : true
48
+ preview_url = local_assigns.has_key?(:preview_url) ? preview_url : nil
40
49
  row_options = local_assigns.has_key?(:row) ? row : {}
41
50
 
42
51
  template_names = templates.map { |template| File.basename(template, ".html.erb") }
@@ -46,12 +55,21 @@
46
55
  association_object = association_model.new
47
56
  with_positions = association_object.attributes.keys.include?("position")
48
57
 
49
- # We sort the collection with ruby to prevent a new query to be made that would dispose of nested object in memory
50
58
  associations = form.object.send(attribute)
51
- associations = with_positions ? associations.sort_by{|resource| resource.position} : associations
59
+
60
+ # We sort the collection with ruby to prevent a new query to be made that would dispose of nested object in memory
61
+ associations = (with_positions && associations.map(&:position).compact.any?) ? associations.sort_by { |resource| resource.position } : associations
62
+
52
63
  repeater_id = form.object_id
53
64
  pass_thru = template_names.count == 1 ? "[data-template-name=\"#{template_names.first}\"]" : nil
54
65
  show_label = label != false
66
+
67
+ # Override default row options
68
+ row_options.merge!(
69
+ preview_url: preview_url,
70
+ pass_thru: pass_thru,
71
+ repeater_id: repeater_id,
72
+ )
55
73
  %>
56
74
 
57
75
  <!-- Label -->
@@ -70,7 +88,7 @@
70
88
 
71
89
  <!-- Rows -->
72
90
  <%= form.fields_for attribute, associations do |ff| %>
73
- <%= render "formstrap/repeater/row", row_options.merge(pass_thru: pass_thru, form: ff, repeater_id: repeater_id) do %>
91
+ <%= render "formstrap/repeater/row", row_options.merge(form: ff, index: ff.index) do %>
74
92
  <%= yield(ff) %>
75
93
  <% end %>
76
94
  <% end %>
@@ -85,12 +103,12 @@
85
103
 
86
104
  <!-- Button -->
87
105
  <div
88
- class="btn btn-sm btn-outline-secondary"
89
- data-repeater-target="addButton"
90
- data-popup-target="button"
91
- data-popup-id="<%= "repeater-buttons-#{repeater_id}" %>"
92
- data-popup-pass-thru="<%= pass_thru %>"
93
- data-action="click->repeater#resetButtonIndices click->popup#open"
106
+ class="btn btn-sm btn-outline-secondary"
107
+ data-repeater-target="addButton"
108
+ data-popup-target="button"
109
+ data-popup-id="<%= "repeater-buttons-#{repeater_id}" %>"
110
+ data-popup-pass-thru="<%= pass_thru %>"
111
+ data-action="click->repeater#resetButtonIndices click->popup#open"
94
112
  >
95
113
  <%= bootstrap_icon("plus") %>
96
114
  <%= t(".add", name: association_model.model_name.human) %>
@@ -101,12 +119,12 @@
101
119
  <div class="d-grid gap-2">
102
120
  <% template_names.each do |name| %>
103
121
  <div
104
- class="btn btn-sm btn-outline-secondary"
105
- data-popup-target="button"
106
- data-popup-id="<%= "repeater-buttons-#{repeater_id}" %>"
107
- data-action="click->repeater#addRow click->popup#close"
108
- data-row-index=""
109
- data-template-name="<%= name %>"
122
+ class="btn btn-sm btn-outline-secondary"
123
+ data-popup-target="button"
124
+ data-popup-id="<%= "repeater-buttons-#{repeater_id}" %>"
125
+ data-action="click->repeater#addRow click->popup#close"
126
+ data-row-index=""
127
+ data-template-name="<%= name %>"
110
128
  >
111
129
  <%= t("blocks.#{name}", default: name).humanize %>
112
130
  </div>
@@ -115,11 +133,11 @@
115
133
  <% end %>
116
134
 
117
135
  <!-- Templates -->
118
- <% template_names.each do |name| %>
119
- <template data-repeater-target="template" data-template-name="<%= name %>" data-template-id-regex="<%= association_object.object_id %>">
120
- <%= form.fields_for attribute, association_object, child_index: association_object.object_id do |ff| %>
121
- <%= render "formstrap/repeater/row", row_options.merge(form: ff, pass_thru: pass_thru, repeater_id: repeater_id) do %>
122
- <% yield(ff, name) %>
136
+ <% template_names.each do |template_name| %>
137
+ <template data-repeater-target="template" data-template-name="<%= template_name %>">
138
+ <%= form.fields_for attribute, association_object, child_index: "rrrrrrrrr" do |ff| %>
139
+ <%= render "formstrap/repeater/row", row_options.merge(form: ff, pass_thru: pass_thru, repeater_id: repeater_id, index: nil, template_name: template_name) do %>
140
+ <%= yield(ff, template_name) %>
123
141
  <% end %>
124
142
  <% end %>
125
143
  </template>
@@ -3,16 +3,24 @@
3
3
  # accepts block: yes
4
4
  # parameters:
5
5
  # form: Form object
6
+ # repeater_id: ID of the repeater
7
+ # index: Index of the row in the repeater
6
8
  # pass_thru: (string) Pass thru for add button if needed
9
+ # preview_url: (string) URL for previews
7
10
 
11
+ repeater_id = local_assigns[:repeater_id]
12
+ pass_thru = local_assigns[:pass_thru]
8
13
  draggable = form.object.respond_to?(:position)
9
14
  destroyable = form.object.respond_to?(:destroy)
10
- error_class = form.object.errors.present? ? "border border-danger" : ""
11
- class_names = local_assigns.has_key?(:class) ? local_assigns[:class] : "formstrap-repeater-row list-group-item"
15
+ error_class = form.object&.errors&.present? ? "border border-danger" : ""
16
+ preview_url = local_assigns.has_key?(:preview_url) ? local_assigns[:preview_url] : nil
17
+ preview = preview_url.present?
18
+ preview_url = "#{preview_url}?id=#{form.object.id}&name=#{local_assigns[:template_name] || form.object.name}&pp=disabled"
19
+ class_names = local_assigns.has_key?(:class) ? local_assigns[:class] : "formstrap-repeater-row list-group-item #{'p-0' if preview}"
12
20
  %>
13
21
  <div class="<%= class_names %> <%= error_class %>"
14
22
  data-repeater-target="row"
15
- data-row-index="<%= form.options[:child_index] %>"
23
+ data-row-index="<%= index %>"
16
24
  data-new-record="<%= form.object.new_record? %>"
17
25
  >
18
26
 
@@ -49,5 +57,13 @@
49
57
  <%= bootstrap_icon("dash-circle") %>
50
58
  </div>
51
59
 
52
- <%= yield %>
60
+ <% if preview %>
61
+ <!-- Wrap row in preview layout -->
62
+ <%= render layout: "formstrap/shared/nested_preview", locals: { form: form, url: preview_url } do %>
63
+ <%= yield %>
64
+ <% end %>
65
+ <% else %>
66
+ <!-- Just render row content -->
67
+ <%= yield %>
68
+ <% end %>
53
69
  </div>
@@ -0,0 +1,35 @@
1
+ <div data-controller="nested-preview" data-nested-preview-url-value="<%= url %>">
2
+ <!-- Preview placeholder -->
3
+ <div class="nested-preview-iframe-wrapper position-relative" role="button" data-nested-preview-target="iframeWrapper" data-bs-toggle="offcanvas" data-bs-target="#offcanvas-<%= form.options[:child_index] %>" aria-controls="offcanvasRight" data-turbo-cache="false">
4
+ <iframe src="<%= url %>" class="pe-none" data-nested-preview-target="iframe"></iframe>
5
+ <div data-nested-preview-target="loader" class="nested-preview-loader terti">
6
+ <div class="spinner-grow text-secondary" role="status">
7
+ <span class="visually-hidden">Loading...</span>
8
+ </div>
9
+ </div>
10
+ </div>
11
+
12
+ <!-- Preview fields wrapper -->
13
+ <div class="offcanvas offcanvas-end nested-preview-offcanvas" tabindex="-1" id="offcanvas-<%= form.options[:child_index] %>" aria-labelledby="offcanvasRightLabel" data-nested-preview-target="offcanvas">
14
+ <div class="offcanvas-header">
15
+ <h5 class="offcanvas-title" id="offcanvasRightLabel"><%= t('.title', model: form.object.model_name.human) %></h5>
16
+ <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
17
+ </div>
18
+ <div class="offcanvas-body">
19
+
20
+ <div class="alert alert-danger d-none" data-nested-preview-target="error">
21
+ <% t(".error") %>
22
+ </div>
23
+
24
+ <!-- Row content -->
25
+ <div data-nested-preview-target="fields">
26
+ <%= yield %>
27
+ </div>
28
+
29
+ <!-- Preview sync button -->
30
+ <div class="btn btn-primary" data-action="click->nested-preview#update">
31
+ <%= bootstrap_icon("arrow-repeat") %> <%= t('.button') %>
32
+ </div>
33
+ </div>
34
+ </div>
35
+ </div>
@@ -0,0 +1,5 @@
1
+ de:
2
+ language_name: Deutsch
3
+ date:
4
+ formats:
5
+ default: "%d/%m/%Y"
@@ -2,8 +2,4 @@ en:
2
2
  language_name: English
3
3
  date:
4
4
  formats:
5
- default: "%d/%m/%Y"
6
- formstrap:
7
- pagination:
8
- infinite:
9
- load_more: Load more
5
+ default: "%d/%m/%Y"
@@ -0,0 +1,48 @@
1
+ de:
2
+ formstrap:
3
+ file:
4
+ not_found: Nicht verfügbar
5
+ placeholder:
6
+ one: Datei durchsuchen oder hierher ziehen und ablegen
7
+ other: Dateien durchsuchen oder hierher ziehen und ablegen
8
+ group:
9
+ save: Speichern
10
+ media:
11
+ modal:
12
+ close: Schließen
13
+ limits: "Minimum: %{min} und Maximum: %{max}"
14
+ maximum: " von %{count}"
15
+ placeholder: Laden Sie Ihre erste Datei in die Medienbibliothek hoch
16
+ search: Suche
17
+ search_no_results: Keine Suchergebnisse gefunden
18
+ select: Auswählen
19
+ title:
20
+ one: Wählen Sie mindestens 1 Datei aus
21
+ other: Wählen Sie mindestens %{count} Dateien aus
22
+ unlimited: unbegrenzt
23
+ upload: Neue Dateien hochladen
24
+ validation:
25
+ min:
26
+ one: Bitte wählen Sie mindestens 1 Element aus
27
+ other: "Bitte wählen Sie mindestens %{count} Elemente aus"
28
+ max:
29
+ one: Bitte beschränken Sie Ihre Auswahl auf maximal 1 Element
30
+ other: "Bitte beschränken Sie Ihre Auswahl auf maximal %{count} Elemente"
31
+ pagination:
32
+ infinite:
33
+ load_more: Mehr laden
34
+ repeater:
35
+ add: "%{name} hinzufügen"
36
+ empty: Beginnen Sie mit dem Hinzufügen Ihres ersten Blocks
37
+ row:
38
+ add: Zeile hinzufügen
39
+ remove: Zeile entfernen
40
+ select:
41
+ blank: Bitte wählen
42
+ shared:
43
+ nested_preview:
44
+ button: Vorschau aktualisieren
45
+ error: Vorschau konnte nicht geladen werden. Überprüfen Sie alle Felder und versuchen Sie es erneut.
46
+ title: "%{model} bearbeiten"
47
+ thumbnail:
48
+ title: Titel
@@ -0,0 +1,48 @@
1
+ en:
2
+ formstrap:
3
+ file:
4
+ not_found: Not available
5
+ placeholder:
6
+ one: Browse file or drag & drop it here
7
+ other: Browse files or drag & drop them here
8
+ group:
9
+ save: Save
10
+ media:
11
+ modal:
12
+ close: Close
13
+ limits: "minimum: %{min} en maximum: %{max}"
14
+ maximum: " of %{count}"
15
+ placeholder: Upload your first file to the media library
16
+ search: Search
17
+ search_no_results: No search results found
18
+ select: Select
19
+ title:
20
+ one: Select at least 1 file
21
+ other: Select at least %{count} files
22
+ unlimited: unlimited
23
+ upload: Upload new files
24
+ validation:
25
+ min:
26
+ one: Please select at least 1 item
27
+ other: "Please select at least %{count} items"
28
+ max:
29
+ one: Please limit your selection to maximum 1 item
30
+ other: "Please limit your selection to maximum %{count} items"
31
+ pagination:
32
+ infinite:
33
+ load_more: Load more
34
+ repeater:
35
+ add: "Add %{name}"
36
+ empty: Start by adding your first block
37
+ row:
38
+ add: Add row
39
+ remove: Remove row
40
+ select:
41
+ blank: Make a choice
42
+ shared:
43
+ nested_preview:
44
+ button: Update preview
45
+ error: Unable to load preview. Check all fields and try again.
46
+ title: "Edit %{model}"
47
+ thumbnail:
48
+ title: Title
@@ -0,0 +1,48 @@
1
+ fr:
2
+ formstrap:
3
+ file:
4
+ not_found: Indisponible
5
+ placeholder:
6
+ one: Parcourir le fichier ou faites glisser et déposez-le ici
7
+ other: Parcourir les fichiers ou faites les glisser et déposez-les ici
8
+ group:
9
+ save: Sauvegarder
10
+ media:
11
+ modal:
12
+ close: Fermer
13
+ limits: "minimum: %{min} et maximum: %{max}"
14
+ maximum: " de %{count}"
15
+ placeholder: Téléchargez votre premier fichier dans la bibliothèque multimédia
16
+ search: Rechercher
17
+ search_no_results: Aucun résultat trouvé
18
+ select: Sélectionner
19
+ title:
20
+ one: Sélectionnez au moins 1 fichier
21
+ other: Sélectionnez au moins %{count} fichiers
22
+ unlimited: illimité
23
+ upload: Télécharger de nouveaux fichiers
24
+ validation:
25
+ min:
26
+ one: Veuillez sélectionner au moins 1 élément
27
+ other: "Veuillez sélectionner au moins %{count} éléments"
28
+ max:
29
+ one: Veuillez limiter votre sélection à un maximum de 1 élément
30
+ other: "Veuillez limiter votre sélection à un maximum de %{count} éléments"
31
+ pagination:
32
+ infinite:
33
+ load_more: Charger plus
34
+ repeater:
35
+ add: "Ajouter %{name}"
36
+ empty: Commencez par ajouter votre premier bloc
37
+ row:
38
+ add: Ajouter une ligne
39
+ remove: Supprimer la ligne
40
+ select:
41
+ blank: Faites un choix
42
+ shared:
43
+ nested_preview:
44
+ button: Mettre à jour l'aperçu
45
+ error: Impossible de charger l'aperçu. Vérifiez tous les champs et réessayez.
46
+ title: "Modifier %{model}"
47
+ thumbnail:
48
+ title: Titre
@@ -0,0 +1,48 @@
1
+ nl:
2
+ formstrap:
3
+ file:
4
+ not_found: Niet beschikbaar
5
+ placeholder:
6
+ one: Kies bestand of sleep het hierheen
7
+ other: Kies bestanden of sleep ze hierheen
8
+ group:
9
+ save: Opslaan
10
+ media:
11
+ modal:
12
+ close: Sluiten
13
+ limits: "minimum: %{min} and maximum: %{max}"
14
+ maximum: " van %{count}"
15
+ placeholder: Upload je eerste bestand naar de mediabibliotheek
16
+ search: Zoeken
17
+ search_no_results: Geen resultaten gevonden
18
+ select: Selecteer
19
+ title:
20
+ one: Selecteer bestand
21
+ other: Selecteer bestanden
22
+ unlimited: onbeperkt
23
+ upload: Nieuwe bestanden uploaden
24
+ validation:
25
+ min:
26
+ one: Gelieve minstens 1 item te selecteren
27
+ other: "Gelieve minstens %{count} items te selecteren"
28
+ max:
29
+ one: Gelieve maximum 1 item te selecteren
30
+ other: "Gelieve maximum %{count} items te selecteren"
31
+ pagination:
32
+ infinite:
33
+ load_more: Laad meer
34
+ repeater:
35
+ add: "%{name} toevoegen"
36
+ empty: Voeg je eerste rij toe om te beginnen
37
+ row:
38
+ add: Rij toevoegen
39
+ remove: Rij verwijderen
40
+ select:
41
+ blank: Maak een keuze
42
+ shared:
43
+ nested_preview:
44
+ button: Voorvertoning bijwerken
45
+ error: Er kon geen voorvertoning worden geladen. Kijk alle velden na en probeer het opnieuw.
46
+ title: "%{model} bewerken"
47
+ thumbnail:
48
+ title: Titel
@@ -0,0 +1,5 @@
1
+ fr:
2
+ language_name: Français
3
+ date:
4
+ formats:
5
+ default: "%d/%m/%Y"
@@ -2,8 +2,4 @@ nl:
2
2
  language_name: Nederlands
3
3
  date:
4
4
  formats:
5
- default: "%d/%m/%Y"
6
- formstrap:
7
- pagination:
8
- infinite:
9
- load_more: Laad meer
5
+ default: "%d/%m/%Y"
@@ -11,6 +11,17 @@ module Formstrap
11
11
  render_input(:association, attribute, options)
12
12
  end
13
13
 
14
+ def preview_button(value = nil, options = {}, &block)
15
+ default_options = {
16
+ data: {
17
+ controller: "preview",
18
+ "preview-url-value": options[:url]
19
+ },
20
+ type: nil
21
+ }
22
+ button value, default_options.deep_merge(options.except(:url)), &block
23
+ end
24
+
14
25
  def checkbox(attribute, formstrap: true, **options)
15
26
  if formstrap
16
27
  render_input :checkbox, attribute, options
@@ -103,6 +114,10 @@ module Formstrap
103
114
  end
104
115
  end
105
116
 
117
+ def repeater_for(attribute, options = {}, &block)
118
+ @template.render("formstrap/repeater", form: self, attribute: attribute, **options, &block)
119
+ end
120
+
106
121
  def redactorx(attribute, options = {})
107
122
  render_input(:redactorx, attribute, options)
108
123
  end
@@ -1,3 +1,3 @@
1
1
  module Formstrap
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: formstrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jef Vlamings
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-02-08 00:00:00.000000000 Z
11
+ date: 2024-03-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: An extensive Bootstrap form library to power your Ruby On Rails application.
14
14
  email:
@@ -44,7 +44,9 @@ files:
44
44
  - app/assets/javascripts/formstrap/controllers/infinite_scroller_controller.js
45
45
  - app/assets/javascripts/formstrap/controllers/media_controller.js
46
46
  - app/assets/javascripts/formstrap/controllers/media_modal_controller.js
47
+ - app/assets/javascripts/formstrap/controllers/nested_preview_controller.js
47
48
  - app/assets/javascripts/formstrap/controllers/popup_controller.js
49
+ - app/assets/javascripts/formstrap/controllers/preview_controller.js
48
50
  - app/assets/javascripts/formstrap/controllers/redactorx_controller.js
49
51
  - app/assets/javascripts/formstrap/controllers/repeater_controller.js
50
52
  - app/assets/javascripts/formstrap/controllers/select_controller.js
@@ -61,6 +63,7 @@ files:
61
63
  - app/assets/stylesheets/formstrap/repeater.scss
62
64
  - app/assets/stylesheets/formstrap/search.scss
63
65
  - app/assets/stylesheets/formstrap/shared.scss
66
+ - app/assets/stylesheets/formstrap/shared/nested_preview.scss
64
67
  - app/assets/stylesheets/formstrap/shared/popup.scss
65
68
  - app/assets/stylesheets/formstrap/shared/thumbnail.scss
66
69
  - app/assets/stylesheets/formstrap/utilities.scss
@@ -114,6 +117,7 @@ files:
114
117
  - app/models/view_model.rb
115
118
  - app/views/formstrap/_association.html.erb
116
119
  - app/views/formstrap/_autocomplete.html.erb
120
+ - app/views/formstrap/_button.html.erb
117
121
  - app/views/formstrap/_checkbox.html.erb
118
122
  - app/views/formstrap/_color.html.erb
119
123
  - app/views/formstrap/_datalist.html.erb
@@ -156,19 +160,20 @@ files:
156
160
  - app/views/formstrap/media/thumbnail.html.erb
157
161
  - app/views/formstrap/pagination/_infinite.html.erb
158
162
  - app/views/formstrap/repeater/_row.html.erb
163
+ - app/views/formstrap/shared/_nested_preview.html.erb
159
164
  - app/views/formstrap/shared/_notifications.html.erb
160
165
  - app/views/formstrap/shared/_popup.html.erb
161
166
  - app/views/formstrap/shared/_thumbnail.html.erb
162
167
  - bin/console
163
168
  - bin/setup
164
169
  - config/importmap.rb
170
+ - config/locales/de.yml
165
171
  - config/locales/en.yml
166
- - config/locales/formstrap/forms/en.yml
167
- - config/locales/formstrap/forms/nl.yml
168
- - config/locales/formstrap/media/en.yml
169
- - config/locales/formstrap/media/nl.yml
170
- - config/locales/formstrap/thumbnail/en.yml
171
- - config/locales/formstrap/thumbnail/nl.yml
172
+ - config/locales/formstrap/de.yml
173
+ - config/locales/formstrap/en.yml
174
+ - config/locales/formstrap/fr.yml
175
+ - config/locales/formstrap/nl.yml
176
+ - config/locales/fr.yml
172
177
  - config/locales/nl.yml
173
178
  - config/routes.rb
174
179
  - esbuild-css.js
@@ -1,25 +0,0 @@
1
- en:
2
- formstrap:
3
- file:
4
- not_found: Not available
5
- placeholder:
6
- one: Browse file or drag & drop it here
7
- other: Browse files or drag & drop them here
8
- group:
9
- save: Save
10
- media:
11
- validation:
12
- min:
13
- one: Please select at least 1 item
14
- other: "Please select at least %{count} items"
15
- max:
16
- one: Please limit your selection to maximum 1 item
17
- other: "Please limit your selection to maximum %{count} items"
18
- select:
19
- blank: Make a choice
20
- repeater:
21
- add: "Add %{name}"
22
- empty: Start by adding your first block
23
- row:
24
- add: Add row
25
- remove: Remove row
@@ -1,25 +0,0 @@
1
- nl:
2
- formstrap:
3
- file:
4
- not_found: Niet beschikbaar
5
- placeholder:
6
- one: Kies bestand of sleep het hierheen
7
- other: Kies bestanden of sleep ze hierheen
8
- group:
9
- save: Opslaan
10
- media:
11
- validation:
12
- min:
13
- one: Gelieve minstens 1 item te selecteren
14
- other: "Gelieve minstens %{count} items te selecteren"
15
- max:
16
- one: Gelieve maximum 1 item te selecteren
17
- other: "Gelieve maximum %{count} items te selecteren"
18
- select:
19
- blank: Maak een keuze
20
- repeater:
21
- add: "%{name} toevoegen"
22
- empty: Voeg je eerste rij toe om te beginnen
23
- row:
24
- add: Rij toevoegen
25
- remove: Rij verwijderen
@@ -1,16 +0,0 @@
1
- en:
2
- formstrap:
3
- media:
4
- modal:
5
- close: Close
6
- limits: "minimum: %{min} en maximum: %{max}"
7
- maximum: " of %{count}"
8
- placeholder: Upload your first file to the media library
9
- search: Search
10
- search_no_results: No search results found
11
- select: Select
12
- title:
13
- one: Select at least 1 file
14
- other: Select at least %{count} files
15
- unlimited: unlimited
16
- upload: Upload new files
@@ -1,16 +0,0 @@
1
- nl:
2
- formstrap:
3
- media:
4
- modal:
5
- close: Sluiten
6
- limits: "minimum: %{min} and maximum: %{max}"
7
- maximum: " van %{count}"
8
- placeholder: Upload je eerste bestand naar de mediabibliotheek
9
- search: Zoeken
10
- search_no_results: Geen resultaten gevonden
11
- select: Selecteer
12
- title:
13
- one: Selecteer bestand
14
- other: Selecteer bestanden
15
- unlimited: onbeperkt
16
- upload: Nieuwe bestanden uploaden
@@ -1,4 +0,0 @@
1
- en:
2
- formstrap:
3
- thumbnail:
4
- title: Title
@@ -1,4 +0,0 @@
1
- nl:
2
- formstrap:
3
- thumbnail:
4
- title: Titel