formstrap 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +38 -1
  3. data/app/assets/javascripts/formstrap/controllers/file_preview_controller.js +5 -5
  4. data/app/assets/javascripts/formstrap/controllers/media_controller.js +4 -2
  5. data/app/assets/javascripts/formstrap/controllers/media_modal_controller.js +38 -2
  6. data/app/assets/javascripts/formstrap/controllers/popup_controller.js +75 -0
  7. data/app/assets/javascripts/formstrap/controllers/repeater_controller.js +4 -4
  8. data/app/assets/javascripts/formstrap/index.js +2 -0
  9. data/app/assets/javascripts/formstrap.js +1790 -129
  10. data/app/assets/stylesheets/formstrap/{forms/autocomplete.scss → autocomplete.scss} +1 -1
  11. data/app/assets/stylesheets/formstrap/{forms/file.scss → file.scss} +10 -10
  12. data/app/assets/stylesheets/formstrap/general.scss +8 -1
  13. data/app/assets/stylesheets/formstrap/media/_modal.scss +9 -0
  14. data/app/assets/stylesheets/formstrap/{forms/media.scss → media/_validation.scss} +2 -2
  15. data/app/assets/stylesheets/formstrap/media.scss +2 -1
  16. data/app/assets/stylesheets/formstrap/{forms/repeater.scss → repeater.scss} +8 -8
  17. data/app/assets/stylesheets/formstrap/shared/popup.scss +17 -0
  18. data/app/assets/stylesheets/formstrap/shared/thumbnail.scss +23 -0
  19. data/app/assets/stylesheets/formstrap/shared.scss +2 -0
  20. data/app/assets/stylesheets/formstrap/utilities/dropzone.scss +2 -2
  21. data/app/assets/stylesheets/formstrap/utilities.scss +0 -1
  22. data/app/assets/stylesheets/formstrap.css +155 -143
  23. data/app/assets/stylesheets/formstrap.scss +5 -1
  24. data/app/controllers/formstrap/media_controller.rb +41 -23
  25. data/app/helpers/application_helper.rb +20 -0
  26. data/app/models/concerns/formstrap/attachment.rb +16 -0
  27. data/app/models/concerns/formstrap/blob.rb +56 -0
  28. data/app/models/formstrap/file_view.rb +3 -3
  29. data/app/models/formstrap/media_view.rb +12 -1
  30. data/app/models/formstrap/thumbnail_view.rb +108 -0
  31. data/app/views/formstrap/_autocomplete.html.erb +1 -1
  32. data/app/views/formstrap/_file.html.erb +8 -8
  33. data/app/views/formstrap/_media.html.erb +6 -4
  34. data/app/views/formstrap/_repeater.html.erb +3 -3
  35. data/app/views/formstrap/media/_item.html.erb +10 -7
  36. data/app/views/formstrap/media/_modal.html.erb +35 -8
  37. data/app/views/formstrap/media/_thumbnail.html.erb +12 -8
  38. data/app/views/formstrap/media/_validation.html.erb +1 -1
  39. data/app/views/formstrap/media/create.turbo_stream.erb +3 -1
  40. data/app/views/formstrap/media/index.html.erb +1 -1
  41. data/app/views/formstrap/repeater/_row.html.erb +4 -4
  42. data/app/views/formstrap/shared/_popup.html.erb +1 -1
  43. data/app/views/formstrap/shared/_thumbnail.html.erb +5 -3
  44. data/config/locales/formstrap/forms/en.yml +0 -14
  45. data/config/locales/formstrap/forms/nl.yml +1 -15
  46. data/config/locales/formstrap/media/en.yml +2 -10
  47. data/config/locales/formstrap/media/nl.yml +2 -10
  48. data/config/routes.rb +0 -2
  49. data/lib/formstrap/version.rb +1 -1
  50. metadata +17 -30
  51. data/app/assets/stylesheets/formstrap/forms.scss +0 -12
  52. data/app/assets/stylesheets/formstrap/media/index.scss +0 -9
  53. data/app/assets/stylesheets/formstrap/utilities/buttons.scss +0 -27
  54. data/app/models/formstrap/blocks_view.rb +0 -43
  55. data/app/views/formstrap/_blocks.html.erb +0 -45
  56. data/app/views/formstrap/_to_ary.html.erb +0 -0
  57. data/app/views/formstrap/blocks/_modal.html.erb +0 -20
  58. data/app/views/formstrap/fields/_base.html.erb +0 -25
  59. data/app/views/formstrap/fields/_file.html.erb +0 -17
  60. data/app/views/formstrap/fields/_files.html.erb +0 -17
  61. data/app/views/formstrap/fields/_group.html.erb +0 -52
  62. data/app/views/formstrap/fields/_list.html.erb +0 -31
  63. data/app/views/formstrap/fields/_text.html.erb +0 -17
  64. data/app/views/formstrap/media/_media_item_modal.html.erb +0 -77
  65. data/app/views/formstrap/media/show.html.erb +0 -9
  66. data/app/views/formstrap/media/update.turbo_stream.erb +0 -3
  67. data/config/locales/activerecord/en.yml +0 -12
  68. data/config/locales/activerecord/nl.yml +0 -13
  69. data/config/locales/defaults/en.yml +0 -215
  70. data/config/locales/defaults/nl.yml +0 -213
  71. data/config/locales/devise/en.yml +0 -65
  72. data/config/locales/devise/nl.yml +0 -85
  73. /data/app/assets/stylesheets/formstrap/{forms/search.scss → search.scss} +0 -0
@@ -8,7 +8,7 @@
8
8
  draggable = form.object.respond_to?(:position)
9
9
  destroyable = form.object.respond_to?(:destroy)
10
10
  error_class = form.object.errors.present? ? "border border-danger" : ""
11
- class_names = local_assigns.has_key?(:class) ? local_assigns[:class] : "repeater-row list-group-item"
11
+ class_names = local_assigns.has_key?(:class) ? local_assigns[:class] : "formstrap-repeater-row list-group-item"
12
12
  %>
13
13
  <div class="<%= class_names %> <%= error_class %>"
14
14
  data-repeater-target="row"
@@ -22,14 +22,14 @@
22
22
 
23
23
  <!-- Drag handle -->
24
24
  <% if draggable %>
25
- <div class="repeater-row-handle">
25
+ <div class="formstrap-repeater-row-handle">
26
26
  <%= bootstrap_icon("grip-vertical") %>
27
27
  </div>
28
28
  <% end %>
29
29
 
30
30
  <!-- Add button-->
31
31
  <div
32
- class="repeater-row-add btn btn-link"
32
+ class="formstrap-repeater-row-add btn btn-link"
33
33
  title="<%= t(".add") %>"
34
34
  data-repeater-target="addButton"
35
35
  data-popup-target="button"
@@ -42,7 +42,7 @@
42
42
 
43
43
  <!-- Remove button-->
44
44
  <div
45
- class="repeater-row-remove btn btn-link"
45
+ class="formstrap-repeater-row-remove btn btn-link"
46
46
  title="<%= t(".remove") %>"
47
47
  data-action="click->repeater#removeRow"
48
48
  >
@@ -22,7 +22,7 @@
22
22
  data = local_assigns.has_key?(:data) ? data : {}
23
23
 
24
24
  options = {
25
- class: ["h-popup", "closed"],
25
+ class: ["formstrap-popup", "closed"],
26
26
  data: data.merge("popup-target": "popup", "popup-id": id)
27
27
  }
28
28
  %>
@@ -21,15 +21,17 @@
21
21
  #
22
22
  # Custom (bootstrap) icon
23
23
  # <%= render "formstrap/shared/thumbnail", file: file, icon: "file-earmark-excel" %#>
24
- thumbnail = Admin::ThumbnailView.new(local_assigns)
24
+ thumbnail = Formstrap::ThumbnailView.new(local_assigns)
25
25
  %>
26
26
 
27
27
  <div class="<%= thumbnail.class_names %>">
28
- <div class="h-thumbnail-bg" style="min-width: <%= thumbnail.width || 100 %>px; min-height: <%= thumbnail.height || 100 %>px;">
28
+ <div class="formstrap-thumbnail-bg" style="min-width: <%= thumbnail.width || 100 %>px; min-height: <%= thumbnail.height || 100 %>px;">
29
29
  <% if thumbnail.variable? && !thumbnail.icon? %>
30
30
  <%= image_tag(thumbnail.file.variant(thumbnail.variant_options)) %>
31
+ <% elsif thumbnail.svg? %>
32
+ <%= thumbnail.inline_svg(width: thumbnail.width || 100, height: thumbnail.height || 100) %>
31
33
  <% else %>
32
- <%= bootstrap_icon(thumbnail.icon_name, class: "h-thumbnail-icon") %>
34
+ <%= bootstrap_icon(thumbnail.icon_name, class: "formstrap-thumbnail-icon") %>
33
35
  <% end %>
34
36
  </div>
35
37
  </div>
@@ -7,19 +7,6 @@ en:
7
7
  other: Browse files or drag & drop them here
8
8
  group:
9
9
  save: Save
10
- blocks:
11
- add: "Add %{name}"
12
- empty:
13
- title: No blocks are added yet.
14
- add: Add block
15
- block:
16
- add: Add
17
- remove:
18
- title: Delete
19
- confirm: Are you sure you want to delete this?
20
- modal:
21
- close: Close
22
- title: "Edit block '%{name}'"
23
10
  media:
24
11
  validation:
25
12
  min:
@@ -28,7 +15,6 @@ en:
28
15
  max:
29
16
  one: Please limit your selection to maximum 1 item
30
17
  other: "Please limit your selection to maximum %{count} items"
31
-
32
18
  select:
33
19
  blank: Make a choice
34
20
  repeater:
@@ -7,19 +7,6 @@ nl:
7
7
  other: Kies bestanden of sleep ze hierheen
8
8
  group:
9
9
  save: Opslaan
10
- blocks:
11
- add: "%{name} toevoegen"
12
- empty:
13
- title: Er zijn nog geen blokken toegevoegd.
14
- add: Blok toevoegen
15
- block:
16
- add: Toevoegen
17
- remove:
18
- title: Verwijderen
19
- confirm: Ben je zeker dat je dit wil verwijderen?
20
- modal:
21
- close: Sluiten
22
- title: "Wijzig blok '%{name}'"
23
10
  media:
24
11
  validation:
25
12
  min:
@@ -28,12 +15,11 @@ nl:
28
15
  max:
29
16
  one: Gelieve maximum 1 item te selecteren
30
17
  other: "Gelieve maximum %{count} items te selecteren"
31
-
32
18
  select:
33
19
  blank: Maak een keuze
34
20
  repeater:
35
21
  add: "%{name} toevoegen"
36
- empty: Voeg je eerste blok toe om te beginnen
22
+ empty: Voeg je eerste rij toe om te beginnen
37
23
  row:
38
24
  add: Rij toevoegen
39
25
  remove: Rij verwijderen
@@ -6,19 +6,11 @@ en:
6
6
  limits: "minimum: %{min} en maximum: %{max}"
7
7
  maximum: " of %{count}"
8
8
  placeholder: Upload your first file to the media library
9
+ search: Search
10
+ search_no_results: No search results found
9
11
  select: Select
10
12
  title:
11
13
  one: Select at least 1 file
12
14
  other: Select at least %{count} files
13
15
  unlimited: unlimited
14
16
  upload: Upload new files
15
- media_item_modal:
16
- attachment_used_by: Used by
17
- close: Close
18
- dimensions: Dimensions
19
- edit: Edit Media item
20
- not_analysed: Not yet analysed
21
- size: Size
22
- type: File type
23
- update: Update
24
- uploaded_at: Uploaded at
@@ -6,19 +6,11 @@ nl:
6
6
  limits: "minimum: %{min} and maximum: %{max}"
7
7
  maximum: " van %{count}"
8
8
  placeholder: Upload je eerste bestand naar de mediabibliotheek
9
+ search: Zoeken
10
+ search_no_results: Geen resultaten gevonden
9
11
  select: Selecteer
10
12
  title:
11
13
  one: Selecteer bestand
12
14
  other: Selecteer bestanden
13
15
  unlimited: onbeperkt
14
16
  upload: Nieuwe bestanden uploaden
15
- media_item_modal:
16
- attachment_used_by: Gebruikt door
17
- close: Sluiten
18
- dimensions: Afmetingen
19
- edit: Media item wijzigen
20
- not_analysed: Nog niet geanalyseerd
21
- size: Grootte
22
- type: Bestandstype
23
- update: Update
24
- uploaded_at: Geüpload op
data/config/routes.rb CHANGED
@@ -4,8 +4,6 @@ Rails.application.routes.draw do
4
4
  namespace(:formstrap) do
5
5
  get "media", to: "media#index", as: :media
6
6
  post "media", to: "media#create", as: :new_media
7
- get "media/:id", to: "media#show", as: :media_item
8
- patch "media/:id", to: "media#update"
9
7
  get "media/thumbnail/:id", to: "media#thumbnail", as: :media_item_thumbnail
10
8
  end
11
9
  end
@@ -1,3 +1,3 @@
1
1
  module Formstrap
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.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.1.2
4
+ version: 0.2.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: 2023-04-24 00:00:00.000000000 Z
11
+ date: 2024-02-08 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,6 +44,7 @@ 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/popup_controller.js
47
48
  - app/assets/javascripts/formstrap/controllers/redactorx_controller.js
48
49
  - app/assets/javascripts/formstrap/controllers/repeater_controller.js
49
50
  - app/assets/javascripts/formstrap/controllers/select_controller.js
@@ -51,24 +52,28 @@ files:
51
52
  - app/assets/javascripts/formstrap/index.js
52
53
  - app/assets/stylesheets/formstrap.css
53
54
  - app/assets/stylesheets/formstrap.scss
54
- - app/assets/stylesheets/formstrap/forms.scss
55
- - app/assets/stylesheets/formstrap/forms/autocomplete.scss
56
- - app/assets/stylesheets/formstrap/forms/file.scss
57
- - app/assets/stylesheets/formstrap/forms/media.scss
58
- - app/assets/stylesheets/formstrap/forms/repeater.scss
59
- - app/assets/stylesheets/formstrap/forms/search.scss
55
+ - app/assets/stylesheets/formstrap/autocomplete.scss
56
+ - app/assets/stylesheets/formstrap/file.scss
60
57
  - app/assets/stylesheets/formstrap/general.scss
61
58
  - app/assets/stylesheets/formstrap/media.scss
62
- - app/assets/stylesheets/formstrap/media/index.scss
59
+ - app/assets/stylesheets/formstrap/media/_modal.scss
60
+ - app/assets/stylesheets/formstrap/media/_validation.scss
61
+ - app/assets/stylesheets/formstrap/repeater.scss
62
+ - app/assets/stylesheets/formstrap/search.scss
63
+ - app/assets/stylesheets/formstrap/shared.scss
64
+ - app/assets/stylesheets/formstrap/shared/popup.scss
65
+ - app/assets/stylesheets/formstrap/shared/thumbnail.scss
63
66
  - app/assets/stylesheets/formstrap/utilities.scss
64
- - app/assets/stylesheets/formstrap/utilities/buttons.scss
65
67
  - app/assets/stylesheets/formstrap/utilities/dropzone.scss
66
68
  - app/assets/stylesheets/formstrap/vendor/flatpickr.css
67
69
  - app/assets/stylesheets/formstrap/vendor/tom-select-bootstrap.scss
68
70
  - app/controllers/concerns/formstrap/pagination.rb
69
71
  - app/controllers/formstrap/media_controller.rb
70
72
  - app/controllers/formstrap_controller.rb
73
+ - app/helpers/application_helper.rb
74
+ - app/models/concerns/formstrap/attachment.rb
71
75
  - app/models/concerns/formstrap/autocompletable.rb
76
+ - app/models/concerns/formstrap/blob.rb
72
77
  - app/models/concerns/formstrap/hintable.rb
73
78
  - app/models/concerns/formstrap/input_groupable.rb
74
79
  - app/models/concerns/formstrap/labelable.rb
@@ -78,7 +83,6 @@ files:
78
83
  - app/models/concerns/formstrap/wrappable.rb
79
84
  - app/models/formstrap/.DS_Store
80
85
  - app/models/formstrap/association_view.rb
81
- - app/models/formstrap/blocks_view.rb
82
86
  - app/models/formstrap/checkbox_view.rb
83
87
  - app/models/formstrap/color_view.rb
84
88
  - app/models/formstrap/date_range_view.rb
@@ -103,13 +107,13 @@ files:
103
107
  - app/models/formstrap/switch_view.rb
104
108
  - app/models/formstrap/text_view.rb
105
109
  - app/models/formstrap/textarea_view.rb
110
+ - app/models/formstrap/thumbnail_view.rb
106
111
  - app/models/formstrap/url_view.rb
107
112
  - app/models/formstrap/wrapper_view.rb
108
113
  - app/models/formstrap/wysiwyg_view.rb
109
114
  - app/models/view_model.rb
110
115
  - app/views/formstrap/_association.html.erb
111
116
  - app/views/formstrap/_autocomplete.html.erb
112
- - app/views/formstrap/_blocks.html.erb
113
117
  - app/views/formstrap/_checkbox.html.erb
114
118
  - app/views/formstrap/_color.html.erb
115
119
  - app/views/formstrap/_datalist.html.erb
@@ -136,31 +140,20 @@ files:
136
140
  - app/views/formstrap/_switch.html.erb
137
141
  - app/views/formstrap/_text.html.erb
138
142
  - app/views/formstrap/_textarea.html.erb
139
- - app/views/formstrap/_to_ary.html.erb
140
143
  - app/views/formstrap/_url.html.erb
141
144
  - app/views/formstrap/_validation.html.erb
142
145
  - app/views/formstrap/_wrapper.html.erb
143
146
  - app/views/formstrap/_wysiwyg.html.erb
144
147
  - app/views/formstrap/autocomplete/_item.html.erb
145
148
  - app/views/formstrap/autocomplete/_list.html.erb
146
- - app/views/formstrap/blocks/_modal.html.erb
147
- - app/views/formstrap/fields/_base.html.erb
148
- - app/views/formstrap/fields/_file.html.erb
149
- - app/views/formstrap/fields/_files.html.erb
150
- - app/views/formstrap/fields/_group.html.erb
151
- - app/views/formstrap/fields/_list.html.erb
152
- - app/views/formstrap/fields/_text.html.erb
153
149
  - app/views/formstrap/media/_item.html.erb
154
- - app/views/formstrap/media/_media_item_modal.html.erb
155
150
  - app/views/formstrap/media/_modal.html.erb
156
151
  - app/views/formstrap/media/_thumbnail.html.erb
157
152
  - app/views/formstrap/media/_validation.html.erb
158
153
  - app/views/formstrap/media/create.turbo_stream.erb
159
154
  - app/views/formstrap/media/index.html.erb
160
155
  - app/views/formstrap/media/index.turbo_stream.erb
161
- - app/views/formstrap/media/show.html.erb
162
156
  - app/views/formstrap/media/thumbnail.html.erb
163
- - app/views/formstrap/media/update.turbo_stream.erb
164
157
  - app/views/formstrap/pagination/_infinite.html.erb
165
158
  - app/views/formstrap/repeater/_row.html.erb
166
159
  - app/views/formstrap/shared/_notifications.html.erb
@@ -169,12 +162,6 @@ files:
169
162
  - bin/console
170
163
  - bin/setup
171
164
  - config/importmap.rb
172
- - config/locales/activerecord/en.yml
173
- - config/locales/activerecord/nl.yml
174
- - config/locales/defaults/en.yml
175
- - config/locales/defaults/nl.yml
176
- - config/locales/devise/en.yml
177
- - config/locales/devise/nl.yml
178
165
  - config/locales/en.yml
179
166
  - config/locales/formstrap/forms/en.yml
180
167
  - config/locales/formstrap/forms/nl.yml
@@ -219,7 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
219
206
  - !ruby/object:Gem::Version
220
207
  version: '0'
221
208
  requirements: []
222
- rubygems_version: 3.3.3
209
+ rubygems_version: 3.4.22
223
210
  signing_key:
224
211
  specification_version: 4
225
212
  summary: Bootstrap-powered Form Helpers
@@ -1,12 +0,0 @@
1
- .form-label[required="required"], .form-check-label[required="required"] {
2
- &:after {
3
- content: ' *';
4
- color: var(--bs-danger-rgb);
5
- }
6
- }
7
-
8
- @import "forms/autocomplete";
9
- @import "forms/file";
10
- @import "forms/media";
11
- @import "forms/repeater";
12
- @import "forms/search";
@@ -1,9 +0,0 @@
1
- .media-modal {
2
- .h-thumbnail {
3
- cursor: pointer;
4
- }
5
-
6
- input[type="checkbox"]:checked + label .h-thumbnail {
7
- background-color: #0d6efd;
8
- }
9
- }
@@ -1,27 +0,0 @@
1
- .btn-link {
2
- text-decoration: none;
3
- }
4
-
5
- .h-btn-light {
6
- color: var(--bs-gray-600);
7
- background-color: var(--bs-gray-200);
8
- box-shadow: none;
9
- }
10
-
11
- .h-btn-outline-light {
12
- background-color: var(--bs-white);
13
- color: var(--bs-gray-600);
14
- border-color: var(--bs-gray-300);
15
- box-shadow: none;
16
-
17
- &:hover, &:focus {
18
- background-color: var(--bs-white);
19
- border-color: var(--bs-gray-300);
20
- }
21
- }
22
-
23
- .h-btn-outline-transparent {
24
- color: var(--bs-gray-600);
25
- border: 1px solid var(--bs-gray-300);
26
- box-shadow: none;
27
- }
@@ -1,43 +0,0 @@
1
- module Formstrap
2
- class BlocksView < ViewModel
3
- def repeater_options
4
- keys = %i[form attribute names label]
5
- options = to_h.slice(*keys)
6
- default_repeater_options.deep_merge(options)
7
- end
8
-
9
- def paths
10
- @paths || []
11
- end
12
-
13
- def prefixes
14
- paths + ["admin/blocks", "blocks", ""]
15
- end
16
-
17
- def badge_style(object)
18
- visible = object.visible?
19
- errors = object.errors.present?
20
-
21
- if !visible && !errors
22
- "bg-light text-secondary"
23
- elsif errors
24
- "bg-danger text-white"
25
- else
26
- "bg-light text-dark"
27
- end
28
- end
29
-
30
- private
31
-
32
- def default_repeater_options
33
- {
34
- attribute: "blocks",
35
- label: false,
36
- templates: names,
37
- row: {
38
- class: "repeater-row list-group-item pt-3"
39
- }
40
- }
41
- end
42
- end
43
- end
@@ -1,45 +0,0 @@
1
- <%
2
- # formstrap/blocks
3
- #
4
- # ==== Required parameters
5
- # * +form</tt> - Form object
6
- # * +names</tt> - Names of block templates that can be added
7
- #
8
- # ==== Optional parameters
9
- # * +paths</tt> - Directories where to look for block templates
10
- #
11
- # ==== Examples
12
- # Basic version. (looks in views/admin/blocks, views/blocks or views directory )
13
- # <%= render "formstrap/blocks", form: form, names: %w(text image button) %#>
14
- #
15
- # Define one ore more path where the templates could be located:
16
- # <%= render "formstrap/blocks", form: form, names: %w(text image button), paths: %w(admin/pages/blocks) %#>
17
- #
18
- # Limit the types of blocks
19
- # <%= render "formstrap/blocks", form: form, names: %w(text text_image list) %#>
20
-
21
- blocks = Formstrap::BlocksView.new(local_assigns)
22
- @lookup_context.prefixes = @lookup_context.prefixes + blocks.prefixes
23
- %>
24
-
25
- <%= render "formstrap/repeater", blocks.repeater_options do |block_form, template| %>
26
- <% name = template || block_form.object.name %>
27
- <!-- Name input of the block -->
28
- <%= block_form.hidden_field :name, value: name %>
29
-
30
- <!-- Render block form fields -->
31
- <div class="<%= block_form.object.visible ? "" : "opacity-50" %>">
32
- <%= render name, form: block_form %>
33
- </div>
34
- <% badge_style = blocks.badge_style(block_form.object) %>
35
-
36
- <!-- Label -->
37
- <span class="position-absolute top-0 end-0 badge rounded-0 d-flex align-items-center gap-2 bg-danger <%= badge_style %>">
38
- <%= t("blocks.#{name}", default: name).humanize %>
39
- <button type="button" class="btn p-0 <%= badge_style %>" data-bs-toggle="modal" data-bs-target="#modal-block-<%= block_form.object.id %>">
40
- <%= bootstrap_icon("gear") %>
41
- </button>
42
- </span>
43
-
44
- <%= render "formstrap/blocks/modal", form: block_form, name: name %>
45
- <% end %>
File without changes
@@ -1,20 +0,0 @@
1
- <div class="modal fade" tabindex="-1" id="modal-block-<%= form.object.id %>">
2
- <div class="modal-dialog modal-lg modal-dialog-scrollable">
3
- <div class="modal-content">
4
- <div class="modal-header">
5
- <h5 class="modal-title">
6
- <%= t(".title", name: name) %>
7
- </h5>
8
- <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="<%= t(".close") %>"></button>
9
- </div>
10
- <div class="modal-body">
11
- <%= render "formstrap/text", form: form, attribute: :handle %>
12
- <%= render "formstrap/checkbox", form: form, attribute: :visible %>
13
- </div>
14
- <div class="modal-footer">
15
-
16
- <button type="button" class="btn btn-secondary" data-bs-dismiss="modal"><%= t(".close") %></button>
17
- </div>
18
- </div>
19
- </div>
20
- </div>
@@ -1,25 +0,0 @@
1
- <%
2
- # name: formstrap/fields/base
3
- #
4
- # ==== Options
5
- # * +form+ - Form object
6
- # * +name+ - Name for the field
7
- # * +field_type+ - Type of the field. Options: [:text, :image, :file, :list, :group]
8
- #
9
- # ==== Examples
10
- # Basic version
11
- # <%= render "formstrap/fields/base", form: form, field_type: :text, name: name do |field, label| %#>
12
- # <%= render "formstrap/text", form: field, attribute: :value, label: label %#>
13
- # <% end %#>
14
- field = form.object.fields.detect { |field| field.name.to_s == name.to_s }
15
- field = field ? field : form.object.fields.new(field_type: field_type, name: name)
16
- label = t("attributes.#{name.to_s.parameterize}", default: field.name.to_s)
17
- %>
18
-
19
- <%= form.fields_for :fields, field do |ff| %>
20
- <%= ff.hidden_field :id %>
21
- <%= ff.hidden_field :name %>
22
- <%= ff.hidden_field :field_type %>
23
-
24
- <%= yield ff, label %>
25
- <% end %>
@@ -1,17 +0,0 @@
1
- <%
2
- # name: formstrap/fields/file
3
- #
4
- # ==== Options
5
- # * +form+ - Form object
6
- # * +name+ - Name for the field
7
- #
8
- # ==== Examples
9
- # Basic version
10
- # <%= render "formstrap/fields/file", form: group, name: :file do |field, attribute, label| %#>
11
- # <%= render "formstrap/file", form: field, attribute: attribute, label: label %#>
12
- # <% end %#>
13
- %>
14
-
15
- <%= render "formstrap/fields/base", form: form, field_type: :file, name: name do |field, label| %>
16
- <% yield field, :files, label %>
17
- <% end %>
@@ -1,17 +0,0 @@
1
- <%
2
- # name: formstrap/fields/file
3
- #
4
- # ==== Options
5
- # * +form+ - Form object
6
- # * +name+ - Name for the field
7
- #
8
- # ==== Examples
9
- # Basic version
10
- # <%= render "formstrap/fields/file", form: group, name: :file do |field, attribute, label| %#>
11
- # <%= render "formstrap/file", form: field, attribute: attribute, label: label %#>
12
- # <% end %#>
13
- %>
14
-
15
- <%= render "formstrap/fields/base", form: form, field_type: :files, name: name do |field, label| %>
16
- <% yield field, :files, label %>
17
- <% end %>
@@ -1,52 +0,0 @@
1
- <%
2
- # name: formstrap/fields/group
3
- #
4
- # ==== Options
5
- # * +form+ - Form object
6
- # * +name+ - Name for the field
7
- # * +label+ - Text to show as label. Label will be hidden if value is false
8
- # * +named+ - Whether a group has to be wrapped around the passed block. If false, no group will be wrapped around the passed block.
9
- #
10
- # ==== Examples
11
- # Basic version
12
- # <%= render "formstrap/fields/group", form: form, name: :button do |group| %#>
13
- # <div class="row">
14
- # <div class="col-md-6">
15
- # <%= render "formstrap/fields/text", form: group, name: :name do |field, attribute, label| %#>
16
- # <%= render "formstrap/text", form: field, attribute: attribute, label: label %#>
17
- # <% end %#>
18
- # </div>
19
- # <div class="col-md-6">
20
- # <%= render "formstrap/fields/text", form: group, name: :url do |field, attribute, label| %#>
21
- # <%= render "formstrap/text", form: field, attribute: attribute, label: label %#>
22
- # <% end %#>
23
- # </div>
24
- # </div>
25
- # <% end %#>
26
-
27
- label = local_assigns.has_key?(:label) ? label : nil
28
- wrapper = local_assigns.has_key?(:wrapper) ? local_assigns[:wrapper] : true
29
- named = local_assigns.has_key?(:named) ? local_assigns[:named] : true
30
- show_label = label != false
31
- %>
32
-
33
- <% if named %>
34
- <%= render "formstrap/fields/base", form: form, name: name, field_type: :group do |group, field_label| %>
35
- <% if show_label %>
36
- <%= render "formstrap/label", form: form, attribute: :value, text: label || field_label %>
37
- <% end %>
38
-
39
- <% if wrapper %>
40
- <ul class="list-group mb-3">
41
- <li class="list-group-item">
42
- <%= yield group %>
43
- </li>
44
- </ul>
45
- <% else %>
46
- <%= yield group %>
47
- <% end %>
48
- <% end %>
49
-
50
- <% else %>
51
- <%= yield form %>
52
- <% end %>
@@ -1,31 +0,0 @@
1
- <%
2
- # name: formstrap/fields/list
3
- #
4
- # ==== Options
5
- # * +form+ - Form object
6
- # * +name+ - Name for the field
7
- # * +label+ - Text to show as label. Label will be hidden if value is false
8
- #
9
- # ==== Examples
10
- # Basic version
11
- # <%= render "formstrap/fields/list", form: form, name: :websites do |list| %#>
12
- # <%= render "formstrap/fields/text", form: list, name: :url do |field, attribute, label| %#>
13
- # <%= render "formstrap/text", form: field, attribute: attribute, label: label %#>
14
- # <% end %#>
15
- # <% end %#>
16
-
17
- label = local_assigns.has_key?(:label) ? label : nil
18
- show_label = label != false
19
- %>
20
-
21
- <%= render "formstrap/fields/base", form: form, name: name, field_type: :list do |list, field_label| %>
22
- <div class="mb-3">
23
- <%= render "formstrap/repeater", form: list, attribute: :fields, label: show_label ? label || field_label : false, flush: false do |field| %>
24
-
25
- <%= field.hidden_field :field_type, value: :list_item %>
26
- <%= field.hidden_field :name, value: :list_item %>
27
-
28
- <%= yield field %>
29
- <% end %>
30
- </div>
31
- <% end %>
@@ -1,17 +0,0 @@
1
- <%
2
- # name: formstrap/fields/text
3
- #
4
- # ==== Options
5
- # * +form+ - Form object
6
- # * +name+ - Name for the field
7
- #
8
- # ==== Examples
9
- # Basic version
10
- # <%= render "formstrap/fields/text", form: group, name: :name do |field, attribute, label| %#>
11
- # <%= render "formstrap/text", form: field, attribute: attribute, label: label %#>
12
- # <% end %#>
13
- %>
14
-
15
- <%= render "formstrap/fields/base", form: form, field_type: :text, name: name do |field, label| %>
16
- <% yield field, :value, label %>
17
- <% end %>