headmin 0.4.1 → 0.5.1

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 (127) hide show
  1. checksums.yaml +4 -4
  2. data/.lock-487e157d270f3062a98b7b2a012753708-1272821827 +0 -0
  3. data/CHANGELOG.md +16 -2
  4. data/Gemfile.lock +77 -79
  5. data/app/assets/javascripts/headmin/controllers/date_range_controller.js +12 -6
  6. data/app/assets/javascripts/headmin/controllers/filter_controller.js +61 -11
  7. data/app/assets/javascripts/headmin/controllers/filter_row_controller.js +50 -0
  8. data/app/assets/javascripts/headmin/controllers/flatpickr_controller.js +2 -6
  9. data/app/assets/javascripts/headmin/controllers/popup_controller.js +3 -1
  10. data/app/assets/javascripts/headmin/controllers/table_actions_controller.js +16 -21
  11. data/app/assets/javascripts/headmin/index.js +2 -0
  12. data/app/assets/javascripts/headmin.js +119 -38
  13. data/app/assets/stylesheets/headmin/filter.scss +74 -0
  14. data/app/assets/stylesheets/headmin/general.scss +0 -1
  15. data/app/assets/stylesheets/headmin/layout/body.scss +5 -0
  16. data/app/assets/stylesheets/headmin/popup.scss +0 -1
  17. data/app/assets/stylesheets/headmin/table.scss +7 -0
  18. data/app/assets/stylesheets/headmin.css +73 -2
  19. data/app/controllers/concerns/headmin/filterable.rb +27 -0
  20. data/app/models/concerns/headmin/field.rb +4 -2
  21. data/app/models/concerns/headmin/fieldable.rb +138 -44
  22. data/app/models/headmin/blocks_view.rb +1 -1
  23. data/app/models/headmin/filter/base.rb +238 -0
  24. data/app/models/headmin/filter/base_view.rb +64 -0
  25. data/app/models/headmin/filter/boolean.rb +15 -0
  26. data/app/models/headmin/filter/boolean_view.rb +61 -0
  27. data/app/models/headmin/filter/button_view.rb +25 -0
  28. data/app/models/headmin/filter/conditional_view.rb +16 -0
  29. data/app/models/headmin/filter/date.rb +19 -0
  30. data/app/models/headmin/filter/date_view.rb +52 -0
  31. data/app/models/headmin/filter/flatpickr_view.rb +54 -0
  32. data/app/models/headmin/filter/menu_item_view.rb +6 -0
  33. data/app/models/headmin/filter/money.rb +13 -0
  34. data/app/models/headmin/filter/number.rb +27 -0
  35. data/app/models/headmin/filter/number_view.rb +54 -0
  36. data/app/models/headmin/filter/operator_view.rb +30 -0
  37. data/app/models/headmin/filter/options_view.rb +61 -0
  38. data/app/models/headmin/filter/row_view.rb +13 -0
  39. data/app/models/headmin/filter/search.rb +18 -0
  40. data/app/models/headmin/filter/search_view.rb +31 -0
  41. data/app/models/headmin/filter/text.rb +25 -0
  42. data/app/models/headmin/filter/text_view.rb +53 -0
  43. data/app/models/headmin/filters.rb +29 -0
  44. data/app/models/headmin/form/color_view.rb +48 -0
  45. data/app/models/headmin/form/datetime_range_view.rb +25 -0
  46. data/app/models/headmin/form/datetime_view.rb +45 -0
  47. data/app/models/headmin/form/flatpickr_range_view.rb +4 -15
  48. data/app/models/headmin/form/flatpickr_view.rb +3 -12
  49. data/app/models/view_model.rb +1 -1
  50. data/app/views/examples/admin.html.erb +13 -13
  51. data/app/views/examples/auth.html.erb +1 -1
  52. data/app/views/headmin/_blocks.html.erb +1 -1
  53. data/app/views/headmin/_filters.html.erb +6 -6
  54. data/app/views/headmin/_form.html.erb +2 -2
  55. data/app/views/headmin/_index.html.erb +1 -1
  56. data/app/views/headmin/_pagination.html.erb +1 -1
  57. data/app/views/headmin/_popup.html.erb +2 -2
  58. data/app/views/headmin/_table.html.erb +1 -1
  59. data/app/views/headmin/dropdown/_devise.html.erb +8 -8
  60. data/app/views/headmin/dropdown/_locale.html.erb +4 -4
  61. data/app/views/headmin/filters/_base.html.erb +95 -0
  62. data/app/views/headmin/filters/_boolean.html.erb +23 -0
  63. data/app/views/headmin/filters/_date.html.erb +14 -38
  64. data/app/views/headmin/filters/_flatpickr.html.erb +15 -48
  65. data/app/views/headmin/filters/_number.html.erb +23 -0
  66. data/app/views/headmin/filters/_options.html.erb +24 -0
  67. data/app/views/headmin/filters/_search.html.erb +14 -12
  68. data/app/views/headmin/filters/_text.html.erb +23 -0
  69. data/app/views/headmin/filters/filter/_button.html.erb +9 -10
  70. data/app/views/headmin/filters/filter/_conditional.html.erb +18 -0
  71. data/app/views/headmin/filters/filter/_menu_item.html.erb +5 -2
  72. data/app/views/headmin/filters/filter/_null_select.html.erb +8 -0
  73. data/app/views/headmin/filters/filter/_operator.html.erb +16 -0
  74. data/app/views/headmin/filters/filter/_row.html.erb +11 -0
  75. data/app/views/headmin/forms/_blocks.html.erb +1 -1
  76. data/app/views/headmin/forms/_color.html.erb +32 -0
  77. data/app/views/headmin/forms/_date_range.html.erb +3 -3
  78. data/app/views/headmin/forms/_datetime.html.erb +41 -0
  79. data/app/views/headmin/forms/_datetime_range.html.erb +40 -0
  80. data/app/views/headmin/forms/_file.html.erb +3 -3
  81. data/app/views/headmin/forms/_flatpickr.html.erb +1 -1
  82. data/app/views/headmin/forms/_flatpickr_range.html.erb +3 -4
  83. data/app/views/headmin/forms/_label.html.erb +1 -1
  84. data/app/views/headmin/forms/_repeater.html.erb +12 -12
  85. data/app/views/headmin/forms/fields/_base.html.erb +1 -1
  86. data/app/views/headmin/forms/fields/_file.html.erb +3 -3
  87. data/app/views/headmin/forms/fields/_files.html.erb +17 -0
  88. data/app/views/headmin/forms/fields/_group.html.erb +5 -5
  89. data/app/views/headmin/forms/fields/_list.html.erb +4 -4
  90. data/app/views/headmin/forms/fields/_text.html.erb +2 -2
  91. data/app/views/headmin/layout/_footer.html.erb +1 -1
  92. data/app/views/headmin/layout/_main.html.erb +1 -1
  93. data/app/views/headmin/nav/_dropdown.html.erb +3 -3
  94. data/app/views/headmin/nav/_item.html.erb +2 -2
  95. data/app/views/headmin/nav/item/_devise.html.erb +8 -8
  96. data/app/views/headmin/nav/item/_locale.html.erb +4 -4
  97. data/app/views/headmin/table/_actions.html.erb +3 -6
  98. data/app/views/headmin/table/actions/_export.html.erb +1 -1
  99. data/app/views/headmin/table/body/_color.html.erb +10 -0
  100. data/app/views/headmin/table/body/_row.html.erb +3 -3
  101. data/app/views/headmin/table/foot/_id.html.erb +1 -1
  102. data/app/views/headmin/views/devise/confirmations/_new.html.erb +1 -1
  103. data/app/views/headmin/views/devise/passwords/_edit.html.erb +2 -2
  104. data/app/views/headmin/views/devise/passwords/_new.html.erb +1 -1
  105. data/app/views/headmin/views/devise/registrations/_edit.html.erb +4 -4
  106. data/app/views/headmin/views/devise/registrations/_new.html.erb +3 -3
  107. data/app/views/headmin/views/devise/sessions/_new.html.erb +3 -3
  108. data/app/views/headmin/views/devise/unlocks/_new.html.erb +1 -1
  109. data/config/locales/en.yml +4 -0
  110. data/config/locales/headmin/dropdown/en.yml +6 -0
  111. data/config/locales/headmin/dropdown/nl.yml +6 -0
  112. data/config/locales/headmin/filters/en.yml +26 -1
  113. data/config/locales/headmin/filters/nl.yml +26 -1
  114. data/config/locales/headmin/layout/en.yml +0 -9
  115. data/config/locales/headmin/layout/nl.yml +0 -9
  116. data/config/locales/headmin/nav/en.yml +7 -0
  117. data/config/locales/headmin/nav/nl.yml +7 -0
  118. data/config/locales/nl.yml +4 -0
  119. data/lib/generators/templates/views/layouts/auth.html.erb +1 -1
  120. data/lib/headmin/version.rb +1 -1
  121. data/package.json +1 -1
  122. metadata +47 -7
  123. data/app/controllers/concerns/headmin/filter.rb +0 -5
  124. data/app/controllers/concerns/headmin/searchable.rb +0 -15
  125. data/app/views/headmin/filters/_select.html.erb +0 -45
  126. data/app/views/headmin/filters/filter/_template.html.erb +0 -13
  127. data/app/views/headmin/forms/fields/_image.html.erb +0 -17
@@ -5,8 +5,11 @@
5
5
  name: (string) Name of the parameter
6
6
  label: (string) Display name
7
7
  %>
8
+
9
+ <% menu_item = Headmin::Filter::MenuItemView.new(local_assigns) %>
10
+
8
11
  <li>
9
- <a class="dropdown-item" href="#" data-filters-target="menuItem" data-action="click->filters#add" data-filter-name="<%= name %>">
10
- <%= label %>
12
+ <a class="dropdown-item" href="#" data-filters-target="menuItem" data-action="click->filters#add" data-filter-name="<%= menu_item.name %>">
13
+ <%= menu_item.label %>
11
14
  </a>
12
15
  </li>
@@ -0,0 +1,8 @@
1
+ <select class="form-select" data-filter-row-target="null" data-action="change->filter#updateHiddenValue" data-filter-target="value">
2
+ <option value="1" <%= value == 1 ? "selected" : "" %>>
3
+ <%= t('headmin.filters.values.yes') %>
4
+ </option>
5
+ <option value="0" <%= value == 0 ? "selected" : "" %>>
6
+ <%= t('headmin.filters.values.no') %>
7
+ </option>
8
+ </select>
@@ -0,0 +1,16 @@
1
+ <%#
2
+ headmin/filters/filter/button
3
+ accepts block: no
4
+ parameters:
5
+
6
+ %>
7
+
8
+ <% operators = Headmin::Filter::OperatorView.new(local_assigns) %>
9
+
10
+ <select class="h-filter-operator form-select" data-action="change->filter#updateHiddenValue" data-filter-target="operator" data-filter-row-target="operator">
11
+ <% operators.allowed_operators.each do |operator| %>
12
+ <option value="<%= operator.to_s %>" <%= operators.selected == operator.to_s ? "selected" : "" %>>
13
+ <%= raw(operators.operator_symbol[operator.to_sym]) %>
14
+ </option>
15
+ <% end %>
16
+ </select>
@@ -0,0 +1,11 @@
1
+ <% row = Headmin::Filter::RowView.new(local_assigns) %>
2
+
3
+ <div class="h-filter-row" data-controller="filter-row" data-filter-target="row">
4
+ <%= yield(row.operator, row.value) %>
5
+ <button type="button" class="btn btn-sm btn-link h-filter-add-input" data-action="click->filter#add">
6
+ <i class="bi bi-plus-circle"></i>
7
+ </button>
8
+ <button type="button" class="btn btn-sm btn-link h-filter-remove-input" data-action="click->filter#remove">
9
+ <i class="bi bi-dash-circle"></i>
10
+ </button>
11
+ </div>
@@ -22,7 +22,7 @@
22
22
  @lookup_context.prefixes = @lookup_context.prefixes + blocks.prefixes
23
23
  %>
24
24
 
25
- <%= render 'headmin/forms/repeater', blocks.repeater_options do |block_form, template| %>
25
+ <%= render "headmin/forms/repeater", blocks.repeater_options do |block_form, template| %>
26
26
  <% name = template || block_form.object.name %>
27
27
 
28
28
  <!-- Name input of the block -->
@@ -0,0 +1,32 @@
1
+ <%
2
+ # headmin/forms/color
3
+ #
4
+ # ==== Required parameters
5
+ # * +attribute+ - Name of the attribute of the form model
6
+ # * +form+ - Form object
7
+ #
8
+ # ==== Optional parameters
9
+ # * +hint+ - Informative text to assist with data input. HTML markup is allowed.
10
+ # * +label+ - Text to display inside label tag. Defaults to the attribute name. Set to false if you don"t want to show a label.
11
+ # * +wrapper+ - Hash with all options for the surrounding html tag
12
+ #
13
+ # ==== References
14
+ # https://headmin.dev/docs/forms/color
15
+ # https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/color
16
+ # https://apidock.com/rails/v5.2.3/ActionView/Helpers/FormHelper/color_field
17
+ #
18
+ # ==== Examples
19
+ # Basic version
20
+ # <%= form_with do |form| %#>
21
+ # <%= render "headmin/forms/color", form: form, attribute: :active %#>
22
+ # <% end %#>
23
+
24
+ color = Headmin::Form::ColorView.new(local_assigns)
25
+ %>
26
+
27
+ <%= render "headmin/forms/wrapper", color.wrapper_options do %>
28
+ <%= render "headmin/forms/label", color.label_options if color.label? %>
29
+ <%= form.color_field(color.attribute, color.input_options) %>
30
+ <%= render "headmin/forms/validation", color.validation_options if color.validate? %>
31
+ <%= render "headmin/forms/hint", color.hint_options if color.hint? %>
32
+ <% end %>
@@ -23,7 +23,7 @@
23
23
  # ==== Examples
24
24
  # Basic version
25
25
  # <%= form_with do |form| %#>
26
- # <%= render 'headmin/forms/date_range', form: form, start: {attribute: :start_date}, end: {attribute: :end_date} %#>
26
+ # <%= render "headmin/forms/date_range", form: form, start: {attribute: :start_date}, end: {attribute: :end_date} %#>
27
27
  # <% end %#>
28
28
 
29
29
  date_range = Headmin::Form::DateRangeView.new(local_assigns)
@@ -31,10 +31,10 @@
31
31
 
32
32
  <div class="row">
33
33
  <div class="col">
34
- <%= render 'headmin/forms/date', date_range.start_options %>
34
+ <%= render "headmin/forms/date", date_range.start_options %>
35
35
  </div>
36
36
  <div class="col">
37
- <%= render 'headmin/forms/date', date_range.end_options %>
37
+ <%= render "headmin/forms/date", date_range.end_options %>
38
38
  </div>
39
39
  </div>
40
40
 
@@ -0,0 +1,41 @@
1
+ <%
2
+ # headmin/forms/datetime
3
+ #
4
+ # ==== Required parameters
5
+ # * +attribute+ - Name of the attribute of the form model
6
+ # * +form+ - Form object
7
+ #
8
+ # ==== Optional parameters
9
+ # * +append+ - Display as input group with text on the right-hand side
10
+ # * +float+ - Use floating labels. Defaults to false
11
+ # * +hint+ - Informative text to assist with data input. HTML markup is allowed.
12
+ # * +label+ - Text to display inside label tag. Defaults to the attribute name. Set to false if you don"t want to show a label.
13
+ # * +list+ - Options are passed through options_for_select
14
+ # * +plaintext+ - Render input as plain text.
15
+ # * +prepend+ - Display as input group with text on the left-hand side
16
+ # * +wrapper+ - Hash with all options for the surrounding html tag
17
+ #
18
+ # ==== References
19
+ # https://headmin.dev/docs/forms/datetime
20
+ # https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime-local
21
+ # https://apidock.com/rails/ActionView/Helpers/FormHelper/datetime_field
22
+ #
23
+ # ==== Examples
24
+ # Basic version
25
+ # <%= form_with do |form| %#>
26
+ # <%= render "headmin/forms/datetime", form: form, attribute: :deadline %#>
27
+ # <% end %#>
28
+
29
+ datetime = Headmin::Form::DatetimeView.new(local_assigns)
30
+ %>
31
+
32
+ <%= render "headmin/forms/wrapper", datetime.wrapper_options do %>
33
+ <%= render "headmin/forms/label", datetime.label_options if datetime.prepend_label? %>
34
+ <%= render "headmin/forms/input_group", datetime.input_group_options do %>
35
+ <%= form.datetime_field(datetime.attribute, datetime.input_options) %>
36
+ <%= render "headmin/forms/datalist", datetime.datalist_options if datetime.datalist? %>
37
+ <% end %>
38
+ <%= render "headmin/forms/validation", datetime.validation_options if datetime.validate? %>
39
+ <%= render "headmin/forms/hint", datetime.hint_options if datetime.hint? %>
40
+ <%= render "headmin/forms/label", datetime.label_options if datetime.append_label? %>
41
+ <% end %>
@@ -0,0 +1,40 @@
1
+ <%
2
+ # headmin/forms/datetime_range
3
+ #
4
+ # ==== Required parameters
5
+ # * +form+ - Form object
6
+ # * +start+ - Hash with all options for the start date input (:attribute is required)
7
+ # * +end+ - Hash with all options for the end date input (:attribute is required)
8
+ #
9
+ # ==== Optional parameters
10
+ # * +append+ - Display as input group with text on the right-hand side
11
+ # * +float+ - Use floating labels. Defaults to false
12
+ # * +hint+ - Informative text to assist with data input. HTML markup is allowed.
13
+ # * +label+ - Text to display inside label tag. Defaults to the attribute name. Set to false if you don"t want to show a label.
14
+ # * +plaintext+ - Render input as plain text.
15
+ # * +prepend+ - Display as input group with text on the left-hand side
16
+ # * +wrapper+ - Hash with all options for the surrounding html tag
17
+ #
18
+ # ==== References
19
+ # https://headmin.dev/docs/forms/datetime_range
20
+ # https://developer.mozilla.org/en-US/docs/Web/HTML/Element/datetime-local
21
+ # https://apidock.com/rails/ActionView/Helpers/FormHelper/datetime_field
22
+ #
23
+ # ==== Examples
24
+ # Basic version
25
+ # <%= form_with do |form| %#>
26
+ # <%= render "headmin/forms/datetime_range", form: form, start: {attribute: :start_date}, end: {attribute: :end_date} %#>
27
+ # <% end %#>
28
+
29
+ datetime_range = Headmin::Form::DatetimeRangeView.new(local_assigns)
30
+ %>
31
+
32
+ <div class="row">
33
+ <div class="col">
34
+ <%= render "headmin/forms/datetime", datetime_range.start_options %>
35
+ </div>
36
+ <div class="col">
37
+ <%= render "headmin/forms/datetime", datetime_range.end_options %>
38
+ </div>
39
+ </div>
40
+
@@ -50,7 +50,7 @@
50
50
  <div class="h-form-file-thumbnail" title="<%= "#{filename} (#{size})" %>" data-file-preview-target="thumbnail">
51
51
  <%= ff.hidden_field(:id, disabled: file.destroy) %>
52
52
  <%= ff.hidden_field(:_destroy, data: {'file-preview-target': 'thumbnailDestroy'}, disabled: file.destroy) %>
53
- <%= render 'headmin/thumbnail', src: src, width: file.thumbnail_width, height: file.thumbnail_height %>
53
+ <%= render "headmin/thumbnail", src: src, width: file.thumbnail_width, height: file.thumbnail_height %>
54
54
 
55
55
  <% if file.destroy %>
56
56
  <div class="h-form-file-thumbnail-remove" data-action="click->file-preview#remove" data-file-preview-name-param="<%= filename %>">
@@ -67,7 +67,7 @@
67
67
  </div>
68
68
  <% else %>
69
69
  <div class="h-form-file-thumbnail <%= 'd-none' if file.attachments.any? %>" title="<%= t('headmin.forms.file.not_found') %>" data-file-preview-target="placeholder">
70
- <%= render 'headmin/thumbnail', width: file.thumbnail_width, height: file.thumbnail_height, icon: "plus" %>
70
+ <%= render "headmin/thumbnail", width: file.thumbnail_width, height: file.thumbnail_height, icon: "plus" %>
71
71
  </div>
72
72
  <% end %>
73
73
  </div>
@@ -76,7 +76,7 @@
76
76
  <!-- Template -->
77
77
  <template data-file-preview-target="template">
78
78
  <div class="h-form-file-thumbnail" title="" data-file-preview-target="thumbnail">
79
- <%= render 'headmin/thumbnail', src: nil, width: file.thumbnail_width, height: file.thumbnail_height %>
79
+ <%= render "headmin/thumbnail", src: nil, width: file.thumbnail_width, height: file.thumbnail_height %>
80
80
 
81
81
  <% if file.destroy %>
82
82
  <div class="h-form-file-thumbnail-remove" data-action="click->file-preview#remove">
@@ -30,4 +30,4 @@
30
30
  flatpickr = Headmin::Form::FlatpickrView.new(local_assigns)
31
31
  %>
32
32
 
33
- <%= render 'headmin/forms/date', flatpickr.options %>
33
+ <%= render "headmin/forms/date", flatpickr.options %>
@@ -20,19 +20,18 @@
20
20
  # ==== Examples
21
21
  # Basic version
22
22
  # <%= form_with do |form| %#>
23
- # <%= render 'headmin/forms/flatpickr_range', form: form, start: {attribute: :start_date}, end: {attribute: :end_date} %#>
23
+ # <%= render "headmin/forms/flatpickr_range", form: form, start: {attribute: :start_date}, end: {attribute: :end_date} %#>
24
24
  # <% end %#>
25
25
 
26
26
  flatpickr_range = Headmin::Form::FlatpickrRangeView.new(local_assigns)
27
27
  %>
28
28
 
29
29
  <%= render "headmin/forms/wrapper", flatpickr_range.wrapper_options do %>
30
- <%= form.hidden_field(flatpickr_range.start[:attribute], flatpickr_range.start_options) %>
31
- <%= form.hidden_field(flatpickr_range.end[:attribute], flatpickr_range.end_options) %>
32
-
33
30
  <%= render "headmin/forms/label", flatpickr_range.label_options if flatpickr_range.prepend_label? %>
34
31
  <%= render "headmin/forms/input_group", flatpickr_range.input_group_options do %>
35
32
  <%= form.date_field(flatpickr_range.attribute, flatpickr_range.input_options) %>
33
+ <%= form.hidden_field(flatpickr_range.start[:attribute], flatpickr_range.start_options) %>
34
+ <%= form.hidden_field(flatpickr_range.end[:attribute], flatpickr_range.end_options) %>
36
35
  <% end %>
37
36
  <%= render "headmin/forms/validation", flatpickr_range.validation_options if flatpickr_range.validate? %>
38
37
  <%= render "headmin/forms/hint", flatpickr_range.hint_options if flatpickr_range.hint? %>
@@ -15,7 +15,7 @@
15
15
  #
16
16
  # ==== Examples
17
17
  # Basic version
18
- # <%= render 'headmin/forms/label', form: form, attribute: :image %#>
18
+ # <%= render "headmin/forms/label", form: form, attribute: :image %#>
19
19
  %>
20
20
 
21
21
  <% label = Headmin::Form::LabelView.new(local_assigns) %>
@@ -11,24 +11,24 @@
11
11
  #
12
12
  # ==== Examples
13
13
  # # Basic version
14
- # <% render 'headmin/forms/repeater', form: form, attribute: :questions do |question| %#>
15
- # <% render 'admin/questions/fields, form: :question' %#>
14
+ # <% render "headmin/forms/repeater", form: form, attribute: :questions do |question| %#>
15
+ # <% render "admin/questions/fields, form: :question" %#>
16
16
  # <% end %#>
17
17
  #
18
18
  # # Let list group sit flush within its container
19
- # <% render 'headmin/forms/repeater', form: form, attribute: :questions, flush: true do |question| %#>
20
- # <% render 'admin/questions/fields, form: :question' %#>
19
+ # <% render "headmin/forms/repeater", form: form, attribute: :questions, flush: true do |question| %#>
20
+ # <% render "admin/questions/fields, form: :question" %#>
21
21
  # <% end %#>
22
22
  #
23
23
  # # With fixed header row. A header row can be used to show the labels, so you can omit them in the repeated fields
24
- # <% render 'headmin/forms/repeater', form: form, attribute: :questions, header: 'admin/questions/header' do |question| %#>
25
- # <% render 'admin/questions/fields, form: :question' %#>
24
+ # <% render "headmin/forms/repeater", form: form, attribute: :questions, header: 'admin/questions/header' do |question| %#>
25
+ # <% render "admin/questions/fields, form: :question" %#>
26
26
  # <% end %#>
27
27
  #
28
28
  # # Allow more than one type of fields to be inserted. You must specify the templates as an array of view paths
29
29
  # <% templates = ['admin/questions/fields/type_1', 'admin/questions/fields/type_2'] %#>
30
- # <% render 'headmin/forms/repeater', form: form, attribute: :questions, templates: templates do |question| %#>
31
- # <% render 'admin/questions/fields, form: :question' %#>
30
+ # <% render "headmin/forms/repeater", form: form, attribute: :questions, templates: templates do |question| %#>
31
+ # <% render "admin/questions/fields, form: :question" %#>
32
32
  # <% end %#>
33
33
 
34
34
  label = local_assigns.has_key?(:label) ? label : nil
@@ -52,7 +52,7 @@
52
52
 
53
53
  <!-- Label -->
54
54
  <% if show_label %>
55
- <%= render 'headmin/forms/label', form: form, attribute: attribute, text: label, required: required %>
55
+ <%= render "headmin/forms/label", form: form, attribute: attribute, text: label, required: required %>
56
56
  <% end %>
57
57
 
58
58
  <ul class="repeater list-group <%= 'list-group-flush' if flush %>" data-controller="repeater" data-repeater-target="list" data-repeater-id-value="<%= repeater_id %>">
@@ -66,7 +66,7 @@
66
66
 
67
67
  <!-- Rows -->
68
68
  <%= form.fields_for attribute, associations do |ff| %>
69
- <%= render 'headmin/forms/repeater/row', pass_thru: pass_thru, form: ff, repeater_id: repeater_id do %>
69
+ <%= render "headmin/forms/repeater/row", pass_thru: pass_thru, form: ff, repeater_id: repeater_id do %>
70
70
  <%= yield(ff) %>
71
71
  <% end %>
72
72
  <% end %>
@@ -93,7 +93,7 @@
93
93
  </div>
94
94
 
95
95
  <!-- Popup -->
96
- <%= render 'headmin/popup', id: "repeater-buttons-#{repeater_id}" do %>
96
+ <%= render "headmin/popup", id: "repeater-buttons-#{repeater_id}" do %>
97
97
  <div class="d-grid gap-2">
98
98
  <% template_names.each do |name| %>
99
99
  <div
@@ -114,7 +114,7 @@
114
114
  <% template_names.each do |name| %>
115
115
  <template data-repeater-target="template" data-template-name="<%= name %>" data-template-id-regex="<%= association_object.object_id %>">
116
116
  <%= form.fields_for attribute, association_object, child_index: association_object.object_id do |ff| %>
117
- <%= render 'headmin/forms/repeater/row', form: ff, pass_thru: pass_thru, repeater_id: repeater_id do %>
117
+ <%= render "headmin/forms/repeater/row", form: ff, pass_thru: pass_thru, repeater_id: repeater_id do %>
118
118
  <% yield(ff, name) %>
119
119
  <% end %>
120
120
  <% end %>
@@ -8,7 +8,7 @@
8
8
  #
9
9
  # ==== Examples
10
10
  # Basic version
11
- # <%= render 'headmin/forms/fields/base', form: form, field_type: :text, name: name do |field, label| %#>
11
+ # <%= render "headmin/forms/fields/base", form: form, field_type: :text, name: name do |field, label| %#>
12
12
  # <%= render "headmin/forms/text", form: field, attribute: :value, label: label %#>
13
13
  # <% end %#>
14
14
 
@@ -7,11 +7,11 @@
7
7
  #
8
8
  # ==== Examples
9
9
  # Basic version
10
- # <%= render 'headmin/forms/fields/file', form: group, name: :file do |field, attribute, label| %#>
10
+ # <%= render "headmin/forms/fields/file", form: group, name: :file do |field, attribute, label| %#>
11
11
  # <%= render "headmin/forms/file", form: field, attribute: attribute, label: label %#>
12
12
  # <% end %#>
13
13
  %>
14
14
 
15
- <%= render 'headmin/forms/fields/base', form: form, field_type: :file, name: name do |field, label| %>
16
- <% yield field, :file, label %>
15
+ <%= render "headmin/forms/fields/base", form: form, field_type: :file, name: name do |field, label| %>
16
+ <% yield field, :files, label %>
17
17
  <% end %>
@@ -0,0 +1,17 @@
1
+ <%
2
+ # name: headmin/forms/fields/file
3
+ #
4
+ # ==== Options
5
+ # * +form+ - Form object
6
+ # * +name+ - Name for the field
7
+ #
8
+ # ==== Examples
9
+ # Basic version
10
+ # <%= render "headmin/forms/fields/file", form: group, name: :file do |field, attribute, label| %#>
11
+ # <%= render "headmin/forms/file", form: field, attribute: attribute, label: label %#>
12
+ # <% end %#>
13
+ %>
14
+
15
+ <%= render "headmin/forms/fields/base", form: form, field_type: :files, name: name do |field, label| %>
16
+ <% yield field, :files, label %>
17
+ <% end %>
@@ -8,15 +8,15 @@
8
8
  #
9
9
  # ==== Examples
10
10
  # Basic version
11
- # <%= render 'headmin/forms/fields/group', form: form, name: :button do |group| %#>
11
+ # <%= render "headmin/forms/fields/group", form: form, name: :button do |group| %#>
12
12
  # <div class="row">
13
13
  # <div class="col-md-6">
14
- # <%= render 'headmin/forms/fields/text', form: group, name: :name do |field, attribute, label| %#>
14
+ # <%= render "headmin/forms/fields/text", form: group, name: :name do |field, attribute, label| %#>
15
15
  # <%= render "headmin/forms/text", form: field, attribute: attribute, label: label %#>
16
16
  # <% end %#>
17
17
  # </div>
18
18
  # <div class="col-md-6">
19
- # <%= render 'headmin/forms/fields/text', form: group, name: :url do |field, attribute, label| %#>
19
+ # <%= render "headmin/forms/fields/text", form: group, name: :url do |field, attribute, label| %#>
20
20
  # <%= render "headmin/forms/text", form: field, attribute: attribute, label: label %#>
21
21
  # <% end %#>
22
22
  # </div>
@@ -28,9 +28,9 @@
28
28
  show_label = label != false
29
29
  %>
30
30
 
31
- <%= render 'headmin/forms/fields/base', form: form, name: name, field_type: :group do |group, field_label| %>
31
+ <%= render "headmin/forms/fields/base", form: form, name: name, field_type: :group do |group, field_label| %>
32
32
  <% if show_label %>
33
- <%= render 'headmin/forms/label', form: form, attribute: :value, text: label || field_label %>
33
+ <%= render "headmin/forms/label", form: form, attribute: :value, text: label || field_label %>
34
34
  <% end %>
35
35
 
36
36
  <% if wrapper %>
@@ -8,8 +8,8 @@
8
8
  #
9
9
  # ==== Examples
10
10
  # Basic version
11
- # <%= render 'headmin/forms/fields/list', form: form, name: :websites do |list| %#>
12
- # <%= render 'headmin/forms/fields/text', form: list, name: :url do |field, attribute, label| %#>
11
+ # <%= render "headmin/forms/fields/list", form: form, name: :websites do |list| %#>
12
+ # <%= render "headmin/forms/fields/text", form: list, name: :url do |field, attribute, label| %#>
13
13
  # <%= render "headmin/forms/text", form: field, attribute: attribute, label: label %#>
14
14
  # <% end %#>
15
15
  # <% end %#>
@@ -18,8 +18,8 @@
18
18
  show_label = label != false
19
19
  %>
20
20
 
21
- <%= render 'headmin/forms/fields/base', form: form, name: name, field_type: :list do |list, field_label| %>
22
- <%= render 'headmin/forms/repeater', form: list, attribute: :fields, label: show_label ? label || field_label : false, flush: false do |field| %>
21
+ <%= render "headmin/forms/fields/base", form: form, name: name, field_type: :list do |list, field_label| %>
22
+ <%= render "headmin/forms/repeater", form: list, attribute: :fields, label: show_label ? label || field_label : false, flush: false do |field| %>
23
23
  <%= field.hidden_field :field_type, value: :group %>
24
24
  <%= yield field %>
25
25
  <% end %>
@@ -7,11 +7,11 @@
7
7
  #
8
8
  # ==== Examples
9
9
  # Basic version
10
- # <%= render 'headmin/forms/fields/text', form: group, name: :name do |field, attribute, label| %#>
10
+ # <%= render "headmin/forms/fields/text", form: group, name: :name do |field, attribute, label| %#>
11
11
  # <%= render "headmin/forms/text", form: field, attribute: attribute, label: label %#>
12
12
  # <% end %#>
13
13
  %>
14
14
 
15
- <%= render 'headmin/forms/fields/base', form: form, field_type: :text, name: name do |field, label| %>
15
+ <%= render "headmin/forms/fields/base", form: form, field_type: :text, name: name do |field, label| %>
16
16
  <% yield field, :value, label %>
17
17
  <% end %>
@@ -4,7 +4,7 @@
4
4
  parameters: none
5
5
  %>
6
6
 
7
- <div class="footer py-4">
7
+ <div class="footer pb-3">
8
8
  <div class="container-fluid">
9
9
  <hr>
10
10
  <div class="text-secondary">
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # ==== Examples
5
5
  # Basic version
6
- # <%= render 'headmin/layout/main' do %#>
6
+ # <%= render "headmin/layout/main" do %#>
7
7
  # ...
8
8
  # <% end %#>
9
9
 
@@ -9,9 +9,9 @@
9
9
  #
10
10
  # ==== Examples
11
11
  # Basic version.
12
- # <%= render 'headmin/nav/dropdown', name: 'My Account', url: admin_user_path, icon: 'person-circle' do %#>
13
- # <%= render 'headmin/nav/item', name: 'Edit info', url: edit_admin_user_path(current_user) %#>
14
- # <%= render 'headmin/nav/item', name: 'Log out', url: destroy_user_session_path(current_user) %#>
12
+ # <%= render "headmin/nav/dropdown", name: 'My Account', url: admin_user_path, icon: 'person-circle' do %#>
13
+ # <%= render "headmin/nav/item", name: 'Edit info', url: edit_admin_user_path(current_user) %#>
14
+ # <%= render "headmin/nav/item", name: 'Log out', url: destroy_user_session_path(current_user) %#>
15
15
  # <% end %#>
16
16
 
17
17
  name = local_assigns.has_key?(:name) ? name : ''
@@ -9,10 +9,10 @@
9
9
  #
10
10
  # ==== Examples
11
11
  # Basic version.
12
- # <%= render 'headmin/nav/item', name: 'Dashboard', url: admin_root_path %#>
12
+ # <%= render "headmin/nav/item", name: 'Dashboard', url: admin_root_path %#>
13
13
  #
14
14
  # With icon
15
- # <%= render 'headmin/nav/item', name: 'Dashboard', url: admin_root_path, icon: 'speedometer' %#>
15
+ # <%= render "headmin/nav/item", name: 'Dashboard', url: admin_root_path, icon: 'speedometer' %#>
16
16
 
17
17
  name = local_assigns.has_key?(:name) ? name : ''
18
18
  icon = local_assigns.has_key?(:icon) ? icon : nil
@@ -2,20 +2,20 @@
2
2
  headmin/layout/sidebar/menu/account
3
3
  accepts block: yes
4
4
  parameters:
5
- scope: (symbol) devise scope, i.e. ':users' => current_user
5
+ scope: (symbol) devise scope, i.e. ":users" => current_user
6
6
  %>
7
7
 
8
- <% scope = local_assigns.has_key?(:scope) ? scope : 'users' %>
8
+ <% scope = local_assigns.has_key?(:scope) ? scope : "users" %>
9
9
  <% singular = scope.to_s.singularize.to_sym %>
10
10
  <% user = send("current_#{singular}") %>
11
11
 
12
- <%= render 'headmin/dropdown', class: 'nav-item' do %>
13
- <%= render 'headmin/dropdown/button', class: 'nav-link', id: 'nav-item-devise' do %>
12
+ <%= render "headmin/dropdown", class: "nav-item" do %>
13
+ <%= render "headmin/dropdown/button", class: "nav-link", id: "nav-item-devise" do %>
14
14
  <%= user.to_s %>
15
15
  <% end %>
16
- <%= render 'headmin/dropdown/list', id: 'nav-item-devise' do %>
17
- <%= render 'headmin/dropdown/item', name: t('.edit_profile'), url: polymorphic_path([:edit, singular, :registration]) %>
18
- <%= render 'headmin/dropdown/divider' %>
19
- <%= render 'headmin/dropdown/item', name: t('.log_out'), url: polymorphic_path([:destroy, singular, :session]), data: { "turbo-method": "delete" } %>
16
+ <%= render "headmin/dropdown/list", id: "nav-item-devise" do %>
17
+ <%= render "headmin/dropdown/item", name: t("headmin.nav.item.devise.edit_profile"), url: polymorphic_path([:edit, :admin, user]) %>
18
+ <%= render "headmin/dropdown/divider" %>
19
+ <%= render "headmin/dropdown/item", name: t("headmin.nav.item.devise.log_out"), url: polymorphic_path([:destroy, singular, :session]), data: { "turbo-method": "delete" } %>
20
20
  <% end %>
21
21
  <% end %>
@@ -4,14 +4,14 @@
4
4
  parameters: none
5
5
  %>
6
6
 
7
- <%= render 'headmin/dropdown', class: 'nav-item' do %>
8
- <%= render 'headmin/dropdown/button', class: 'nav-link', id: 'nav-item-locale' do %>
7
+ <%= render "headmin/dropdown", class: 'nav-item' do %>
8
+ <%= render "headmin/dropdown/button", class: 'nav-link', id: 'nav-item-locale' do %>
9
9
  <%= bootstrap_icon('globe', class: 'me-2') %>
10
10
  <%= t('language_name', locale: ::I18n.locale) %>
11
11
  <% end %>
12
- <%= render 'headmin/dropdown/list', id: 'nav-item-locale' do %>
12
+ <%= render "headmin/dropdown/list", id: 'nav-item-locale' do %>
13
13
  <% I18n.available_locales.each do |locale| %>
14
- <%= render 'headmin/dropdown/item', name: t('language_name', locale: locale), url: url_for({locale: locale.to_s}) %>
14
+ <%= render "headmin/dropdown/item", name: t('language_name', locale: locale), url: url_for({locale: locale.to_s}) %>
15
15
  <% end %>
16
16
  <% end %>
17
17
  <% end %>
@@ -5,8 +5,8 @@
5
5
  #
6
6
  # ==== Examples
7
7
  # Basic version
8
- # <%= render 'headmin/table/actions' do %#>
9
- # <%= render 'headmin/table/actions/delete', url: destroy_admin_pages_path %#>
8
+ # <%= render "headmin/table/actions" do %#>
9
+ # <%= render "headmin/table/actions/delete", url: destroy_admin_pages_path %#>
10
10
  # <% end %#>
11
11
 
12
12
  %>
@@ -14,14 +14,11 @@
14
14
  <% content_for :table_actions do %>
15
15
  <th class="h-table-actions d-none" data-controller="table-actions" data-table-actions-target="wrapper" data-table-target="actions">
16
16
  <%= form_with url: '', data: { "table-actions-target": 'form' } do |form| %>
17
+ <%= form.hidden_field :id, value: '', 'data-table-actions-target': 'idInput' %>
17
18
  <%= form.hidden_field :authenticity_token, value: form_authenticity_token %>
18
19
  <%= form.hidden_field :_method, value: 'POST', 'data-table-actions-target': 'method' %>
19
20
  <%= query_parameter_fields(form) %>
20
21
 
21
- <template data-table-actions-target="idInputTemplate">
22
- <%= form.hidden_field :ids, value: 'ID', multiple: true, 'data-table-actions-target': 'id' %>
23
- </template>
24
-
25
22
  <div class="row g-1">
26
23
  <div class="col-6 col-sm-auto">
27
24
  <div class="d-flex align-items-center gap-3">
@@ -9,4 +9,4 @@
9
9
  # <%= render "headmin/table/actions/export", url: export_admin_products_path %#>
10
10
  %>
11
11
 
12
- <%= render 'headmin/table/actions/action', name: t('.button'), url: url %>
12
+ <%= render "headmin/table/actions/action", name: t('.button'), url: url %>
@@ -0,0 +1,10 @@
1
+ <%#
2
+ headmin/table/body/color
3
+ accepts block: no
4
+ parameters:
5
+ value: (hexadecimal) Color value
6
+ %>
7
+
8
+ <td>
9
+ <div class="h-table-cell-color" style="--cell-color: <%= value %>" title="<%= value %>"></div>
10
+ </td>
@@ -5,9 +5,9 @@
5
5
  # * +class</tt> - Custom class names to add to the table row
6
6
  #
7
7
  # ==== Examples
8
- # <%= render 'headmin/table/body/row' do %#>
9
- # <%= render 'headmin/table/body/id', value: page.id %#>
10
- # <%= render 'headmin/table/body/string', value: page.title %#>
8
+ # <%= render "headmin/table/body/row" do %#>
9
+ # <%= render "headmin/table/body/id", value: page.id %#>
10
+ # <%= render "headmin/table/body/string", value: page.title %#>
11
11
  # <% end %#>
12
12
 
13
13
  class_names = local_assigns.has_key?(:class) ? local_assigns[:class] : false
@@ -4,6 +4,6 @@
4
4
  parameters: none
5
5
  %>
6
6
 
7
- <th class="d-none d-md-table-cell">
7
+ <th>
8
8
  <input type="checkbox" value="" data-table-target="idsCheckbox" data-action="change->table#toggleIds"/>
9
9
  </th>