formstrap 0.1.3 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) 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. data/package.json +1 -1
  51. metadata +16 -29
  52. data/app/assets/stylesheets/formstrap/forms.scss +0 -12
  53. data/app/assets/stylesheets/formstrap/media/index.scss +0 -9
  54. data/app/assets/stylesheets/formstrap/utilities/buttons.scss +0 -27
  55. data/app/models/formstrap/blocks_view.rb +0 -43
  56. data/app/views/formstrap/_blocks.html.erb +0 -45
  57. data/app/views/formstrap/_to_ary.html.erb +0 -0
  58. data/app/views/formstrap/blocks/_modal.html.erb +0 -20
  59. data/app/views/formstrap/fields/_base.html.erb +0 -25
  60. data/app/views/formstrap/fields/_file.html.erb +0 -17
  61. data/app/views/formstrap/fields/_files.html.erb +0 -17
  62. data/app/views/formstrap/fields/_group.html.erb +0 -52
  63. data/app/views/formstrap/fields/_list.html.erb +0 -31
  64. data/app/views/formstrap/fields/_text.html.erb +0 -17
  65. data/app/views/formstrap/media/_media_item_modal.html.erb +0 -77
  66. data/app/views/formstrap/media/show.html.erb +0 -9
  67. data/app/views/formstrap/media/update.turbo_stream.erb +0 -3
  68. data/config/locales/activerecord/en.yml +0 -12
  69. data/config/locales/activerecord/nl.yml +0 -13
  70. data/config/locales/defaults/en.yml +0 -215
  71. data/config/locales/defaults/nl.yml +0 -213
  72. data/config/locales/devise/en.yml +0 -65
  73. data/config/locales/devise/nl.yml +0 -85
  74. /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.1"
3
3
  end
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frontierdotbe/formstrap",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "Bootstrap-powered Form Helpers",
5
5
  "module": "app/assets/javascripts/formstrap.js",
6
6
  "main": "app/assets/javascripts/formstrap.js",
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.1
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 %>