headmin 0.3.4 → 0.4.2

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 (162) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +27 -0
  3. data/.gitignore +14 -0
  4. data/.lock-487e157d270f3062a98b7b2a012753708-1272821827 +0 -0
  5. data/.nvmrc +1 -0
  6. data/CHANGELOG.md +31 -0
  7. data/Gemfile +7 -4
  8. data/Gemfile.lock +191 -25
  9. data/README.md +7 -0
  10. data/Rakefile +1 -7
  11. data/app/assets/javascripts/headmin/config/i18n.js +9 -9
  12. data/app/assets/javascripts/headmin/controllers/autocomplete_controller.js +318 -0
  13. data/app/assets/javascripts/headmin/controllers/blocks_controller.js +74 -79
  14. data/app/assets/javascripts/headmin/controllers/date_range_controller.js +24 -24
  15. data/app/assets/javascripts/headmin/controllers/dropzone_controller.js +23 -25
  16. data/app/assets/javascripts/headmin/controllers/file_preview_controller.js +237 -237
  17. data/app/assets/javascripts/headmin/controllers/filter_controller.js +44 -44
  18. data/app/assets/javascripts/headmin/controllers/filters_controller.js +57 -61
  19. data/app/assets/javascripts/headmin/controllers/flatpickr_controller.js +29 -29
  20. data/app/assets/javascripts/headmin/controllers/hello_controller.js +3 -3
  21. data/app/assets/javascripts/headmin/controllers/notification_controller.js +7 -6
  22. data/app/assets/javascripts/headmin/controllers/popup_controller.js +57 -51
  23. data/app/assets/javascripts/headmin/controllers/redactorx_controller.js +36 -9
  24. data/app/assets/javascripts/headmin/controllers/repeater_controller.js +122 -125
  25. data/app/assets/javascripts/headmin/controllers/select_controller.js +40 -39
  26. data/app/assets/javascripts/headmin/controllers/table_actions_controller.js +100 -101
  27. data/app/assets/javascripts/headmin/controllers/table_controller.js +115 -115
  28. data/app/assets/javascripts/headmin/index.js +38 -35
  29. data/app/assets/javascripts/headmin.js +295 -37
  30. data/app/assets/stylesheets/headmin/forms/autocomplete.scss +21 -0
  31. data/app/assets/stylesheets/headmin/forms/file.scss +46 -0
  32. data/app/assets/stylesheets/headmin/forms/repeater.scss +62 -0
  33. data/app/assets/stylesheets/headmin/forms/search.scss +12 -0
  34. data/app/assets/stylesheets/headmin/forms.scss +11 -0
  35. data/app/assets/stylesheets/headmin/general.scss +14 -0
  36. data/app/assets/stylesheets/headmin/overrides/bootstrap.scss +5 -3
  37. data/app/assets/stylesheets/headmin/overrides/redactorx.scss +74 -0
  38. data/app/assets/stylesheets/headmin/popup.scss +1 -0
  39. data/app/assets/stylesheets/headmin/syntax.scss +36 -349
  40. data/app/assets/stylesheets/headmin/table.scss +1 -1
  41. data/app/assets/stylesheets/headmin/utilities/buttons.scss +19 -0
  42. data/app/assets/stylesheets/headmin/utilities/dropzone.scss +72 -0
  43. data/app/assets/stylesheets/headmin/utilities.scss +2 -68
  44. data/app/assets/stylesheets/headmin.css +209 -205
  45. data/app/assets/stylesheets/headmin.scss +1 -1
  46. data/app/helpers/headmin/admin_helper.rb +0 -1
  47. data/app/helpers/headmin/form_helper.rb +2 -8
  48. data/app/models/concerns/headmin/blockable.rb +1 -1
  49. data/app/models/concerns/headmin/field.rb +4 -1
  50. data/app/models/concerns/headmin/fieldable.rb +138 -44
  51. data/app/models/concerns/headmin/form/autocompletable.rb +38 -0
  52. data/app/models/concerns/headmin/form/hintable.rb +19 -0
  53. data/app/models/concerns/headmin/form/input_groupable.rb +23 -0
  54. data/app/models/concerns/headmin/form/labelable.rb +33 -0
  55. data/app/models/concerns/headmin/form/listable.rb +28 -0
  56. data/app/models/concerns/headmin/form/placeholderable.rb +13 -0
  57. data/app/models/concerns/headmin/form/validatable.rb +40 -0
  58. data/app/models/concerns/headmin/form/wrappable.rb +21 -0
  59. data/app/models/headmin/.DS_Store +0 -0
  60. data/app/models/headmin/blocks_view.rb +15 -0
  61. data/app/models/headmin/form/blocks_view.rb +29 -0
  62. data/app/models/headmin/form/checkbox_view.rb +52 -0
  63. data/app/models/headmin/form/date_range_view.rb +25 -0
  64. data/app/models/headmin/form/date_view.rb +45 -0
  65. data/app/models/headmin/form/email_view.rb +48 -0
  66. data/app/models/headmin/form/file_view.rb +116 -0
  67. data/app/models/headmin/form/flatpickr_range_view.rb +102 -0
  68. data/app/models/headmin/form/flatpickr_view.rb +37 -0
  69. data/app/models/headmin/form/hidden_view.rb +10 -0
  70. data/app/models/headmin/form/hint_view.rb +6 -0
  71. data/app/models/headmin/form/input_group_view.rb +19 -0
  72. data/app/models/headmin/form/label_view.rb +24 -0
  73. data/app/models/headmin/form/number_view.rb +49 -0
  74. data/app/models/headmin/form/password_view.rb +44 -0
  75. data/app/models/headmin/form/redactorx_view.rb +59 -0
  76. data/app/models/headmin/form/search_view.rb +48 -0
  77. data/app/models/headmin/form/select_view.rb +62 -0
  78. data/app/models/headmin/form/switch_view.rb +23 -0
  79. data/app/models/headmin/form/text_view.rb +48 -0
  80. data/app/models/headmin/form/textarea_view.rb +44 -0
  81. data/app/models/headmin/form/url_view.rb +48 -0
  82. data/app/models/headmin/form/wrapper_view.rb +19 -0
  83. data/app/models/headmin/form/wysiwyg_view.rb +17 -0
  84. data/app/models/headmin/{thumbnail.rb → thumbnail_view.rb} +6 -1
  85. data/app/models/view_model.rb +58 -0
  86. data/app/views/headmin/_blocks.html.erb +13 -9
  87. data/app/views/headmin/_heading.html.erb +7 -1
  88. data/app/views/headmin/_thumbnail.html.erb +1 -37
  89. data/app/views/headmin/forms/_autocomplete.html.erb +11 -0
  90. data/app/views/headmin/forms/_blocks.html.erb +16 -17
  91. data/app/views/headmin/forms/_checkbox.html.erb +24 -29
  92. data/app/views/headmin/forms/_datalist.html.erb +3 -0
  93. data/app/views/headmin/forms/_date.html.erb +24 -24
  94. data/app/views/headmin/forms/_date_range.html.erb +19 -21
  95. data/app/views/headmin/forms/_email.html.erb +27 -32
  96. data/app/views/headmin/forms/_errors.html.erb +2 -3
  97. data/app/views/headmin/forms/_file.html.erb +84 -181
  98. data/app/views/headmin/forms/_flatpickr.html.erb +19 -20
  99. data/app/views/headmin/forms/_flatpickr_range.html.erb +28 -37
  100. data/app/views/headmin/forms/_hidden.html.erb +9 -10
  101. data/app/views/headmin/forms/_hint.html.erb +16 -0
  102. data/app/views/headmin/forms/_input_group.html.erb +21 -0
  103. data/app/views/headmin/forms/_label.html.erb +5 -13
  104. data/app/views/headmin/forms/_number.html.erb +23 -35
  105. data/app/views/headmin/forms/_password.html.erb +21 -30
  106. data/app/views/headmin/forms/_redactorx.html.erb +21 -40
  107. data/app/views/headmin/forms/_repeater.html.erb +55 -60
  108. data/app/views/headmin/forms/_search.html.erb +43 -0
  109. data/app/views/headmin/forms/_select.html.erb +24 -49
  110. data/app/views/headmin/forms/_switch.html.erb +29 -0
  111. data/app/views/headmin/forms/_text.html.erb +42 -96
  112. data/app/views/headmin/forms/_textarea.html.erb +21 -32
  113. data/app/views/headmin/forms/_url.html.erb +26 -31
  114. data/app/views/headmin/forms/_validation.html.erb +10 -13
  115. data/app/views/headmin/forms/_wrapper.html.erb +9 -0
  116. data/app/views/headmin/forms/_wysiwyg.html.erb +28 -0
  117. data/app/views/headmin/forms/autocomplete/_item.html.erb +3 -0
  118. data/app/views/headmin/forms/autocomplete/_list.html.erb +3 -0
  119. data/app/views/headmin/forms/fields/_file.html.erb +1 -1
  120. data/app/views/headmin/forms/fields/_files.html.erb +17 -0
  121. data/app/views/headmin/forms/fields/_group.html.erb +9 -2
  122. data/app/views/headmin/forms/repeater/_row.html.erb +4 -4
  123. data/bin/console +0 -1
  124. data/config/locales/headmin/forms/en.yml +1 -12
  125. data/config/locales/headmin/forms/nl.yml +1 -12
  126. data/esbuild-css.js +18 -18
  127. data/esbuild-js.js +8 -8
  128. data/headmin.gemspec +1 -3
  129. data/lib/generators/templates/controllers/auth/confirmations_controller.rb +0 -2
  130. data/lib/generators/templates/controllers/auth/omniauth_callbacks_controller.rb +0 -2
  131. data/lib/generators/templates/controllers/auth/passwords_controller.rb +0 -2
  132. data/lib/generators/templates/controllers/auth/registrations_controller.rb +0 -2
  133. data/lib/generators/templates/controllers/auth/sessions_controller.rb +0 -2
  134. data/lib/generators/templates/controllers/auth/unlocks_controller.rb +0 -2
  135. data/lib/headmin/version.rb +1 -3
  136. data/lib/headmin.rb +0 -2
  137. data/package-lock.json +5359 -0
  138. data/package.json +12 -4
  139. data/view_model_benchmark.rb +74 -0
  140. data/yarn-error.log +17 -12
  141. data/yarn.lock +1575 -31
  142. metadata +64 -25
  143. data/app/assets/stylesheets/headmin/form.scss +0 -132
  144. data/app/assets/stylesheets/headmin/overrides/redactorx.css +0 -3
  145. data/app/helpers/headmin/documentation_helper.rb +0 -35
  146. data/app/models/headmin/documentation_renderer.rb +0 -32
  147. data/app/models/headmin/form/base.rb +0 -78
  148. data/app/models/headmin/form/text.rb +0 -51
  149. data/app/services/block_service.rb +0 -72
  150. data/app/views/headmin/_card.html.erb +0 -52
  151. data/app/views/headmin/forms/_actions.html.erb +0 -28
  152. data/app/views/headmin/forms/_base.html.erb +0 -114
  153. data/app/views/headmin/forms/_image.html.erb +0 -21
  154. data/app/views/headmin/forms/_video.html.erb +0 -21
  155. data/app/views/headmin/forms/actions/_destroy.html.erb +0 -13
  156. data/app/views/headmin/forms/actions/_save.html.erb +0 -12
  157. data/app/views/headmin/forms/actions/_view.html.erb +0 -15
  158. data/app/views/headmin/forms/fields/_image.html.erb +0 -17
  159. data/docs/blocks-and-fields.md +0 -54
  160. data/docs/blocks.md +0 -48
  161. data/docs/devise.md +0 -41
  162. data/docs/fields.md +0 -79
@@ -1,28 +0,0 @@
1
- <%#
2
- headmin/forms/actions
3
- accepts block: true
4
- parameters:
5
- form: (object) Form object
6
- %>
7
-
8
- <div class="card forms-actions shadow-sm mb-3">
9
- <div class="card-body">
10
- <h5 class="card-title"><%= t('.title') %></h5>
11
- <p class="card-text"><%= t('.description') %></p>
12
-
13
- <% if form.object.persisted? %>
14
- <dl>
15
- <dt><%= form.object.class.human_attribute_name(:created_at) %></dt>
16
- <dd><%= form.object.created_at.strftime(t('.format')) %></dd>
17
- <dt><%= form.object.class.human_attribute_name(:updated_at) %></dt>
18
- <dd><%= form.object.updated_at.strftime(t('.format')) %></dd>
19
- </dl>
20
- <% end %>
21
-
22
- <%= yield %>
23
-
24
- <%= render 'headmin/forms/actions/destroy', form: form %>
25
- <hr>
26
- <%= render 'headmin/forms/actions/save', form: form %>
27
- </div>
28
- </div>
@@ -1,114 +0,0 @@
1
- <!--
2
- <% documentation do %>
3
- # Base
4
- This serves as a wrapper around most form views. It allows defining everything that happens outside the input field.
5
- The main purpose of this view is to coordinate labels and appendages.
6
-
7
- ```erbx
8
- <%= form_with do |form| %>
9
- <%= render "headmin/forms/base", form: form, attribute: "basic_example" do |form| %>
10
- <%= form.text_field("attribute", class: 'form-control') %>
11
- <% end %>
12
- <% end %>
13
- ```
14
-
15
- # Parameters
16
- | Name | Required | Type | Description |
17
- | ------------ | -------- | ---------------- | ----------- |
18
- | form | yes | Object | Form object |
19
- | attribute | yes | String, Symbol | Name of the attribute of the form model |
20
- | append | no | Boolean | Text or icon to be shown on the left hand side of the input, Doesn't work with float |
21
- | class | no | String | A space separated string of HTML class names |
22
- | float | no | Boolean | Set to true if you want to show floating labels |
23
- | id | no | String | Input identifier to be used as "for" in the label |
24
- | label | no | Hash | Text to show as label. Label will be hidden if value is false |
25
- | prepend | no | Boolean | Text or icon to be shown on the right hand side of the input, Doesn't work with float |
26
-
27
- ## Examples
28
-
29
- ### Sizing
30
- ```erbx
31
- <%= form_with do |form| %>
32
- <%= render "headmin/forms/base", form: form, attribute: "small", class: 'input-group-sm' do |form| %>
33
- <%= form.text_field("attribute", class: 'form-control', placeholder: '.input-group-sm') %>
34
- <% end %>
35
- <%= render "headmin/forms/base", form: form, attribute: "medium" do |form| %>
36
- <%= form.text_field("attribute", class: 'form-control', placeholder: 'Default size') %>
37
- <% end %>
38
- <%= render "headmin/forms/base", form: form, attribute: "large", class: 'input-group-lg' do |form| %>
39
- <%= form.text_field("attribute", class: 'form-control', placeholder: '.input-group-lg') %>
40
- <% end %>
41
- <% end %>
42
- ```
43
-
44
- ### Labels
45
- ```erbx
46
- <%= form_with do |form| %>
47
- <%= render "headmin/forms/base", form: form, attribute: "no_label", label: false do |form| %>
48
- <%= form.text_field("attribute", class: 'form-control', placeholder: 'Without label') %>
49
- <% end %>
50
- <%= render "headmin/forms/base", form: form, attribute: "floating_label", float: true do |form| %>
51
- <%= form.text_field("attribute", class: 'form-control', placeholder: 'Default size') %>
52
- <% end %>
53
- <%= render "headmin/forms/base", form: form, attribute: "custom_label", label: 'Custom label' do |form| %>
54
- <%= form.text_field("attribute", class: 'form-control') %>
55
- <% end %>
56
- <% end %>
57
- ```
58
-
59
- ### Appendages
60
- ```erbx
61
- <%= form_with do |form| %>
62
- <%= render "headmin/forms/base", form: form, attribute: "prepend", prepend: "€" do |form| %>
63
- <%= form.text_field("attribute", class: 'form-control') %>
64
- <% end %>
65
- <%= render "headmin/forms/base", form: form, attribute: "append", append: "m²" do |form| %>
66
- <%= form.text_field("attribute", class: 'form-control') %>
67
- <% end %>
68
- <%= render "headmin/forms/base", form: form, attribute: "prepend_and_append", prepend: "€", append: "m²" do |form| %>
69
- <%= form.text_field("attribute", class: 'form-control') %>
70
- <% end %>
71
- <% end %>
72
- ```
73
- <% end %>
74
- -->
75
-
76
- <% base = Headmin::Form::Base.new(local_assigns) %>
77
-
78
- <%= tag.div(class: base.class_names, data: base.data) do %>
79
- <% if base.label != false && !base.float %>
80
- <%= render 'headmin/forms/label', base.label_options %>
81
- <% end %>
82
-
83
- <% if base.append || base.prepend %>
84
- <div class="input-group w-100">
85
- <% if base.prepend %>
86
- <span class="input-group-text">
87
- <%= base.prepend %>
88
- </span>
89
- <% end %>
90
-
91
- <%= yield form %>
92
- <%= render 'headmin/forms/validation', base.validation_options if form.object.respond_to?(:errors) %>
93
-
94
- <% if base.append %>
95
- <span class="input-group-text">
96
- <%= base.append %>
97
- </span>
98
- <% end %>
99
- </div>
100
- <% else %>
101
- <%= yield form %>
102
- <%= render 'headmin/forms/validation', base.validation_options if form.object.respond_to?(:errors) %>
103
- <% end %>
104
-
105
- <% if base.label != false && base.float %>
106
- <%= render 'headmin/forms/label', base.label_options %>
107
- <% end %>
108
-
109
- <% if base.list %>
110
- <datalist id="<%= base.list_id %>">
111
- <%= options_for_select(base.list) %>
112
- </datalist>
113
- <% end %>
114
- <% end %>
@@ -1,21 +0,0 @@
1
- <%
2
- # name: headmin/forms/image
3
- #
4
- # ==== Required parameters
5
- # * +form+ - Form object
6
- # * +attribute+ - Name of the attribute of the form model
7
- #
8
- # ==== Extra parameters
9
- # Listed in 'headmin/forms/file'
10
- # Listed in 'headmin/forms/base'
11
- #
12
- # ==== Examples
13
- # Basic version
14
- # <%= render 'headmin/forms/image', form: form, attribute: :image %#>
15
-
16
- options = local_assigns.merge(
17
- accept: 'image/*'
18
- )
19
- %>
20
-
21
- <%= render 'headmin/forms/file', options %>
@@ -1,21 +0,0 @@
1
- <%
2
- # name: headmin/forms/video
3
- #
4
- # ==== Required parameters
5
- # * +form+ - Form object
6
- # * +attribute+ - Name of the attribute of the form model
7
- #
8
- # ==== Extra parameters
9
- # Listed in 'headmin/forms/file'
10
- # Listed in 'headmin/forms/base'
11
- #
12
- # ==== Examples
13
- # Basic version
14
- # <%= render 'headmin/forms/video', form: form, attribute: :video %#>
15
-
16
- options = local_assigns.merge(
17
- accept: 'video/*'
18
- )
19
- %>
20
-
21
- <%= render 'headmin/forms/file', options %>
@@ -1,13 +0,0 @@
1
- <%#
2
- name: headmin/forms/actions/views
3
- accepts block: true
4
- parameters:
5
- form: (object) Form object
6
- %>
7
-
8
- <div class="d-grid">
9
- <%= link_to([:admin, form.object], class: "btn btn-outline-danger", "data-turbo-method": "delete", "data-turbo-confirm": t(".confirm")) do %>
10
- <%= bootstrap_icon("trash") %>
11
- <%= t(".title") %>
12
- <% end %>
13
- </div>
@@ -1,12 +0,0 @@
1
- <%#
2
- name: headmin/forms/actions/views
3
- accepts block: true
4
- parameters:
5
- form: (object) Form object
6
- %>
7
-
8
- <div class="d-grid">
9
- <%= form.button type: :submit, class: 'btn btn-lg btn-primary' do %>
10
- <%= t('.title') %>
11
- <% end %>
12
- </div>
@@ -1,15 +0,0 @@
1
- <%#
2
- name: headmin/forms/actions/views
3
- accepts block: true
4
- parameters:
5
- url: (string) Url for preview
6
- %>
7
-
8
- <% url = local_assigns.has_key?(:url) ? url : nil %>
9
-
10
- <div class="d-grid mb-2">
11
- <a href="<%= url %>" target="_blank" class="btn h-btn-outline-light">
12
- <%= bootstrap_icon('eye') %>
13
- <%= t('.title') %>
14
- </a>
15
- </div>
@@ -1,17 +0,0 @@
1
- <%
2
- # name: headmin/forms/fields/image
3
- #
4
- # ==== Options
5
- # * +form+ - Form object
6
- # * +name+ - Name for the field
7
- #
8
- # ==== Examples
9
- # Basic version
10
- # <%= render 'headmin/forms/fields/image', form: group, name: :image do |field, attribute, label| %#>
11
- # <%= render "headmin/forms/image", form: field, attribute: attribute, label: label %#>
12
- # <% end %#>
13
- %>
14
-
15
- <%= render 'headmin/forms/fields/base', form: form, field_type: :image, name: name do |field, label| %>
16
- <% yield field, :file, label %>
17
- <% end %>
@@ -1,54 +0,0 @@
1
- # Blocks + fields = Magic
2
-
3
- ## Installation
4
- Run the following generators to generate the migration files.
5
- ```
6
- rails generate headmin:blocks
7
- rails generate headmin:fields
8
- rails db:migrate
9
- ```
10
-
11
- ## Getting Started
12
- ### Setup model
13
-
14
- Setup a block model by including `Headmin::Fieldable`
15
-
16
- ```ruby
17
- class Block < ApplicationRecord
18
- include Headmin::Block
19
- include Headmin::Fieldable
20
- end
21
- ```
22
-
23
- ### Setup forms
24
-
25
- ```erb
26
- # app/views/admin/blocks/_contact.html.erb
27
- <%= form.hidden_field :name, value: :contact %>
28
-
29
- <!-- Title -->
30
- <%= render 'headmin/forms/fields/text', form: form, name: :title do |field, attribute, label| %>
31
- <%= render 'headmin/forms/text', form: field, attribute: attribute, label: label %>
32
- <% end %>
33
-
34
- <!-- People list -->
35
- <%= render 'headmin/forms/fields/list', form: form, name: :people do |item| %>
36
- <%= render 'headmin/forms/fields/text', form: item, name: :name do |field, attribute, label| %>
37
- <%= render 'headmin/forms/text', form: field, attribute: attribute, label: label %>
38
- <% end %>
39
- <% end %>
40
- ```
41
-
42
- ### Usage in website
43
-
44
- ```erb
45
- # app/views/website/blocks/_contact.html.erb
46
- <% fields = block.fields_hash %>
47
-
48
- <h1><%= fields["title"] %></h1>
49
- <ul>
50
- <% fields["people"].each do |person| %>
51
- <li><%= person["name"] %></h2></li>
52
- <% end %>
53
- </ul>
54
- ```
data/docs/blocks.md DELETED
@@ -1,48 +0,0 @@
1
- # Blocks
2
-
3
- ## Installation
4
- Run the following generators to generate the migration files.
5
- ```
6
- rails generate headmin:blocks
7
- rails db:migrate
8
- ```
9
-
10
- ## Getting Started
11
-
12
- ### Setup model
13
-
14
- ```ruby
15
- class Page < ApplicationRecord
16
- include Headmin::Blockable
17
- end
18
- ```
19
-
20
- ### Setup forms
21
-
22
- The view "headmin/forms/blocks" will render all the form views for the blocks in the database.
23
- A hidden template form will be rendered for all types defined in `allow:`
24
-
25
- ```erb
26
- # app/views/admin/pages/_form.html.erb
27
- <%= render 'headmin/form', model: [:admin, @page] do |form| %>
28
- <%= render "headmin/forms/blocks", form: form %>
29
- <% end %>
30
- ```
31
-
32
- For each type of block you want to include, create a template in `views/admin/blocks`.
33
-
34
- ### Usage in frontend
35
-
36
- ```erb
37
- # app/views/website/pages/show.html.erb
38
- <%= render 'headmin/blocks', blockable: @page %>
39
- ```
40
-
41
- This will render all the blocks associated with the blockable model (e.g. Page).
42
-
43
- For each block in the admin, you'll need to create a corresponding template in your frontend.
44
-
45
- ```erb
46
- # app/views/website/blocks/_contact.html.erb
47
- <%= block.name %>
48
- ```
data/docs/devise.md DELETED
@@ -1,41 +0,0 @@
1
- # Devise
2
- Headmin comes with some default views for all devise related pages.
3
- To make use of them, follow the guidelines below.
4
-
5
- ## Installation
6
- Add this line to your application's Gemfile:
7
-
8
- ```ruby
9
- gem 'devise'
10
- ```
11
-
12
- Run the install generator
13
- ```sh
14
- $ rails generate devise:install
15
- ```
16
-
17
- Create a devise model
18
- ```sh
19
- $ rails generate devise User
20
- $ rails db:migrate
21
- ```
22
-
23
- Generate the default auth views
24
- ```sh
25
- $ rails generate headmin:devise
26
- ```
27
-
28
- ## Getting Started
29
-
30
- ### Change routes
31
- Change the default `devise_for` routes with the code below
32
-
33
- ```ruby
34
- devise_for :users, controllers: {
35
- sessions: 'auth/sessions',
36
- registrations: 'auth/registrations',
37
- passwords: 'auth/passwords',
38
- unlocks: 'auth/unlocks',
39
- confirmations: 'auth/confirmations'
40
- }
41
- ```
data/docs/fields.md DELETED
@@ -1,79 +0,0 @@
1
- # Fields
2
-
3
- ## Installation
4
-
5
- Run the following generators to generate the migration files.
6
-
7
- ```sh
8
- $ rails generate headmin:fields
9
- $ rails db:migrate
10
- ```
11
-
12
- ## Getting Started
13
-
14
- ### Setup model
15
-
16
- ```ruby
17
-
18
- class Settings < ApplicationRecord
19
- include Headmin::Fieldable
20
- end
21
- ```
22
-
23
- ### Setup forms
24
-
25
- ```html
26
- # app/views/admin/settings/_form.html.erb
27
-
28
- <!-- Company name -->
29
- <%= render 'headmin/forms/fields/text', form: form, name: :company_name do |field, attribute, label| %>
30
- <%= render 'headmin/forms/text', form: field, attribute: attribute, label: label %>
31
- <% end %>
32
-
33
- <!-- People list -->
34
- <%= render 'headmin/forms/fields/list', form: form, name: :people do |item| %>
35
- <%= render 'headmin/forms/fields/text', form: item, name: :name do |field, attribute, label| %>
36
- <%= render 'headmin/forms/text', form: field, attribute: attribute, label: label %>
37
- <% end %>
38
- <% end %>
39
- ```
40
-
41
- #### Type of fields
42
-
43
- - Text: `headmin/forms/fields/text`
44
- - File: `headmin/forms/fields/file`
45
- - Image: `headmin/forms/fields/image`
46
- - List: `headmin/forms/fields/list`
47
- - Group: `headmin/forms/fields/group`
48
-
49
- ### Seed database
50
-
51
- Use the `fields_hash` setter method to set the data, the way you want to retrieve it.
52
-
53
- ```ruby
54
- # In db/seeds.rb
55
- Setting.create!(
56
- name: 'Website settings',
57
- fields_hash: {
58
- company_name: 'Insiting BV',
59
- people: [
60
- { name: 'Jef Vlamings' },
61
- { name: 'Gert-Jan Peeters' }
62
- ]
63
- }
64
- )
65
- ```
66
-
67
- ### Usage in frontend
68
-
69
- ```html
70
- # app/views/website/settings/show.html.erb
71
- <% fields = @setting.fields_hash %>
72
-
73
- <h1><%= fields["company_name"] %></h1>
74
- <ul>
75
- <% fields["people"].each do |person| %>
76
- <li><%= person["name"] %></h2></li>
77
- <% end %>
78
- </ul>
79
- ```