formstrap 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +38 -1
- data/app/assets/javascripts/formstrap/controllers/file_preview_controller.js +5 -5
- data/app/assets/javascripts/formstrap/controllers/media_controller.js +4 -2
- data/app/assets/javascripts/formstrap/controllers/media_modal_controller.js +38 -2
- data/app/assets/javascripts/formstrap/controllers/popup_controller.js +75 -0
- data/app/assets/javascripts/formstrap/controllers/repeater_controller.js +4 -4
- data/app/assets/javascripts/formstrap/index.js +2 -0
- data/app/assets/javascripts/formstrap.js +1790 -129
- data/app/assets/stylesheets/formstrap/{forms/autocomplete.scss → autocomplete.scss} +1 -1
- data/app/assets/stylesheets/formstrap/{forms/file.scss → file.scss} +10 -10
- data/app/assets/stylesheets/formstrap/general.scss +8 -1
- data/app/assets/stylesheets/formstrap/media/_modal.scss +9 -0
- data/app/assets/stylesheets/formstrap/{forms/media.scss → media/_validation.scss} +2 -2
- data/app/assets/stylesheets/formstrap/media.scss +2 -1
- data/app/assets/stylesheets/formstrap/{forms/repeater.scss → repeater.scss} +8 -8
- data/app/assets/stylesheets/formstrap/shared/popup.scss +17 -0
- data/app/assets/stylesheets/formstrap/shared/thumbnail.scss +23 -0
- data/app/assets/stylesheets/formstrap/shared.scss +2 -0
- data/app/assets/stylesheets/formstrap/utilities/dropzone.scss +2 -2
- data/app/assets/stylesheets/formstrap/utilities.scss +0 -1
- data/app/assets/stylesheets/formstrap.css +155 -143
- data/app/assets/stylesheets/formstrap.scss +5 -1
- data/app/controllers/formstrap/media_controller.rb +41 -23
- data/app/helpers/application_helper.rb +20 -0
- data/app/models/concerns/formstrap/attachment.rb +16 -0
- data/app/models/concerns/formstrap/blob.rb +56 -0
- data/app/models/formstrap/file_view.rb +3 -3
- data/app/models/formstrap/media_view.rb +12 -1
- data/app/models/formstrap/thumbnail_view.rb +108 -0
- data/app/views/formstrap/_autocomplete.html.erb +1 -1
- data/app/views/formstrap/_file.html.erb +8 -8
- data/app/views/formstrap/_media.html.erb +6 -4
- data/app/views/formstrap/_repeater.html.erb +3 -3
- data/app/views/formstrap/media/_item.html.erb +10 -7
- data/app/views/formstrap/media/_modal.html.erb +35 -8
- data/app/views/formstrap/media/_thumbnail.html.erb +12 -8
- data/app/views/formstrap/media/_validation.html.erb +1 -1
- data/app/views/formstrap/media/create.turbo_stream.erb +3 -1
- data/app/views/formstrap/media/index.html.erb +1 -1
- data/app/views/formstrap/repeater/_row.html.erb +4 -4
- data/app/views/formstrap/shared/_popup.html.erb +1 -1
- data/app/views/formstrap/shared/_thumbnail.html.erb +5 -3
- data/config/locales/formstrap/forms/en.yml +0 -14
- data/config/locales/formstrap/forms/nl.yml +1 -15
- data/config/locales/formstrap/media/en.yml +2 -10
- data/config/locales/formstrap/media/nl.yml +2 -10
- data/config/routes.rb +0 -2
- data/lib/formstrap/version.rb +1 -1
- metadata +17 -30
- data/app/assets/stylesheets/formstrap/forms.scss +0 -12
- data/app/assets/stylesheets/formstrap/media/index.scss +0 -9
- data/app/assets/stylesheets/formstrap/utilities/buttons.scss +0 -27
- data/app/models/formstrap/blocks_view.rb +0 -43
- data/app/views/formstrap/_blocks.html.erb +0 -45
- data/app/views/formstrap/_to_ary.html.erb +0 -0
- data/app/views/formstrap/blocks/_modal.html.erb +0 -20
- data/app/views/formstrap/fields/_base.html.erb +0 -25
- data/app/views/formstrap/fields/_file.html.erb +0 -17
- data/app/views/formstrap/fields/_files.html.erb +0 -17
- data/app/views/formstrap/fields/_group.html.erb +0 -52
- data/app/views/formstrap/fields/_list.html.erb +0 -31
- data/app/views/formstrap/fields/_text.html.erb +0 -17
- data/app/views/formstrap/media/_media_item_modal.html.erb +0 -77
- data/app/views/formstrap/media/show.html.erb +0 -9
- data/app/views/formstrap/media/update.turbo_stream.erb +0 -3
- data/config/locales/activerecord/en.yml +0 -12
- data/config/locales/activerecord/nl.yml +0 -13
- data/config/locales/defaults/en.yml +0 -215
- data/config/locales/defaults/nl.yml +0 -213
- data/config/locales/devise/en.yml +0 -65
- data/config/locales/devise/nl.yml +0 -85
- /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
|
>
|
@@ -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 =
|
24
|
+
thumbnail = Formstrap::ThumbnailView.new(local_assigns)
|
25
25
|
%>
|
26
26
|
|
27
27
|
<div class="<%= thumbnail.class_names %>">
|
28
|
-
<div class="
|
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: "
|
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
|
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
|
data/lib/formstrap/version.rb
CHANGED
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.
|
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:
|
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/
|
55
|
-
- app/assets/stylesheets/formstrap/
|
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/
|
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.
|
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,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 %>
|