formstrap 0.1.3 → 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 +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 %>
|