formstrap 0.1.3 → 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 +6 -12
- 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 +5 -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 +16 -29
- 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
@@ -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: 2024-
|
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
|
@@ -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 %>
|
@@ -1,77 +0,0 @@
|
|
1
|
-
<%= turbo_frame_tag "modal_content" do %>
|
2
|
-
<%= formstrap_form_with url: formstrap_media_item_path(id: @blob.id), model: @blob do |form| %>
|
3
|
-
<div class="modal-header">
|
4
|
-
<h5 class="modal-title"><%= t(".edit") %></h5>
|
5
|
-
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="<%= t(".close") %>"></button>
|
6
|
-
</div>
|
7
|
-
<div class="modal-body">
|
8
|
-
<%= render "formstrap/shared/notifications" %>
|
9
|
-
<div class="row">
|
10
|
-
<div class="col-4">
|
11
|
-
<%= render "formstrap/shared/thumbnail", file: @blob %>
|
12
|
-
</div>
|
13
|
-
<div class="col-8 d-flex flex-column justify-content-center">
|
14
|
-
<p class="small text-secondary m-0">
|
15
|
-
<strong><%= t(".uploaded_at") %>:</strong>
|
16
|
-
<%= l(@blob.created_at, format: :long) %>
|
17
|
-
</p>
|
18
|
-
<p class="small text-secondary m-0">
|
19
|
-
<strong><%= t(".type") %>:</strong>
|
20
|
-
<%= @blob.content_type %>
|
21
|
-
</p>
|
22
|
-
<p class="small text-secondary m-0">
|
23
|
-
<strong><%= t(".dimensions") %>:</strong>
|
24
|
-
<% if @blob.metadata[:width] && @blob.metadata[:height] %>
|
25
|
-
<%= "#{@blob.metadata[:width]}px x #{@blob.metadata[:height]}px" %>
|
26
|
-
<% else %>
|
27
|
-
<%= t(".not_analysed") %>
|
28
|
-
<% end %>
|
29
|
-
</p>
|
30
|
-
<p class="small text-secondary m-0">
|
31
|
-
<strong><%= t(".size") %>:</strong>
|
32
|
-
<% if @blob.byte_size > 0 %>
|
33
|
-
<%= number_to_human_size(@blob.byte_size) %>
|
34
|
-
<% else %>
|
35
|
-
<%= t(".not_analysed") %>
|
36
|
-
<% end %>
|
37
|
-
</p>
|
38
|
-
</div>
|
39
|
-
</div>
|
40
|
-
<div class="row mt-3">
|
41
|
-
<div class="col-12">
|
42
|
-
<%= form.text :filename, append: "." + form.object.filename.to_s.rpartition(".").last, value: form.object.filename.to_s.rpartition(".").first %>
|
43
|
-
</div>
|
44
|
-
</div>
|
45
|
-
<% attachments = @blob.attachments.not_a_variant.all %>
|
46
|
-
<% if attachments.any? %>
|
47
|
-
<hr>
|
48
|
-
<h6><%= t(".attachment_used_by") %>:</h6>
|
49
|
-
<table class="table table-sm">
|
50
|
-
<tbody>
|
51
|
-
<% attachments.each do |attachment| %>
|
52
|
-
<% context_resource = attachment.record_hierarchy.last %>
|
53
|
-
<% context_resource_path = polymorphic_path([:admin, context_resource]) rescue nil %>
|
54
|
-
<tr>
|
55
|
-
<td width="40%">
|
56
|
-
<% if context_resource_path.present? %>
|
57
|
-
<%= link_to truncate(context_resource.to_s), context_resource_path, title: context_resource %>
|
58
|
-
<% else %>
|
59
|
-
<%= context_resource %>
|
60
|
-
<% end %>
|
61
|
-
</td>
|
62
|
-
<td width="25%"><%= "#{context_resource.model_name.human(count: 1)} (#{attachment.class.human_attribute_name(attachment.name.to_sym)})" %></td>
|
63
|
-
<td width="35%">
|
64
|
-
<small class="text-secondary"><%= l(attachment.created_at, format: :long) %></small>
|
65
|
-
</td>
|
66
|
-
</tr>
|
67
|
-
<% end %>
|
68
|
-
</tbody>
|
69
|
-
</table>
|
70
|
-
<% end %>
|
71
|
-
</div>
|
72
|
-
<div class="modal-footer">
|
73
|
-
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal"><%= t(".close") %></button>
|
74
|
-
<%= form.submit t(".update"), class: "btn btn-primary" %>
|
75
|
-
</div>
|
76
|
-
<% end %>
|
77
|
-
<% end %>
|
@@ -1,9 +0,0 @@
|
|
1
|
-
<%= turbo_frame_tag "remote_modal" do %>
|
2
|
-
<div class="media-item-modal modal fade" tabindex="-1" data-controller="remote-modal">
|
3
|
-
<div class="modal-dialog modal-md modal-dialog-scrollable">
|
4
|
-
<div class="modal-content">
|
5
|
-
<%= render "formstrap/media/media_item_modal" %>
|
6
|
-
</div>
|
7
|
-
</div>
|
8
|
-
</div>
|
9
|
-
<% end %>
|