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