formstrap 0.1.2 → 0.2.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.
- 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 %>
|