headmin 0.4.2 → 0.5.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 (117) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -1
  3. data/Gemfile.lock +1 -1
  4. data/app/assets/javascripts/headmin/controllers/date_range_controller.js +12 -6
  5. data/app/assets/javascripts/headmin/controllers/filter_controller.js +61 -11
  6. data/app/assets/javascripts/headmin/controllers/filter_row_controller.js +50 -0
  7. data/app/assets/javascripts/headmin/controllers/flatpickr_controller.js +2 -6
  8. data/app/assets/javascripts/headmin/controllers/popup_controller.js +3 -1
  9. data/app/assets/javascripts/headmin/controllers/table_actions_controller.js +16 -21
  10. data/app/assets/javascripts/headmin/index.js +2 -0
  11. data/app/assets/javascripts/headmin.js +119 -38
  12. data/app/assets/stylesheets/headmin/filter.scss +74 -0
  13. data/app/assets/stylesheets/headmin/general.scss +0 -1
  14. data/app/assets/stylesheets/headmin/layout/body.scss +5 -0
  15. data/app/assets/stylesheets/headmin/popup.scss +0 -1
  16. data/app/assets/stylesheets/headmin.css +67 -2
  17. data/app/controllers/concerns/headmin/filterable.rb +27 -0
  18. data/app/models/headmin/filter/base.rb +238 -0
  19. data/app/models/headmin/filter/base_view.rb +64 -0
  20. data/app/models/headmin/filter/boolean.rb +15 -0
  21. data/app/models/headmin/filter/boolean_view.rb +61 -0
  22. data/app/models/headmin/filter/button_view.rb +25 -0
  23. data/app/models/headmin/filter/conditional_view.rb +16 -0
  24. data/app/models/headmin/filter/date.rb +19 -0
  25. data/app/models/headmin/filter/date_view.rb +52 -0
  26. data/app/models/headmin/filter/flatpickr_view.rb +54 -0
  27. data/app/models/headmin/filter/menu_item_view.rb +6 -0
  28. data/app/models/headmin/filter/money.rb +13 -0
  29. data/app/models/headmin/filter/number.rb +27 -0
  30. data/app/models/headmin/filter/number_view.rb +54 -0
  31. data/app/models/headmin/filter/operator_view.rb +30 -0
  32. data/app/models/headmin/filter/options_view.rb +61 -0
  33. data/app/models/headmin/filter/row_view.rb +13 -0
  34. data/app/models/headmin/filter/search.rb +18 -0
  35. data/app/models/headmin/filter/search_view.rb +31 -0
  36. data/app/models/headmin/filter/text.rb +25 -0
  37. data/app/models/headmin/filter/text_view.rb +53 -0
  38. data/app/models/headmin/filters.rb +29 -0
  39. data/app/models/headmin/form/datetime_range_view.rb +25 -0
  40. data/app/models/headmin/form/datetime_view.rb +45 -0
  41. data/app/models/headmin/form/flatpickr_range_view.rb +4 -15
  42. data/app/models/headmin/form/flatpickr_view.rb +3 -12
  43. data/app/models/view_model.rb +1 -1
  44. data/app/views/examples/admin.html.erb +13 -13
  45. data/app/views/examples/auth.html.erb +1 -1
  46. data/app/views/headmin/_filters.html.erb +6 -6
  47. data/app/views/headmin/_form.html.erb +2 -2
  48. data/app/views/headmin/_index.html.erb +1 -1
  49. data/app/views/headmin/_pagination.html.erb +1 -1
  50. data/app/views/headmin/_popup.html.erb +2 -2
  51. data/app/views/headmin/_table.html.erb +1 -1
  52. data/app/views/headmin/dropdown/_devise.html.erb +8 -8
  53. data/app/views/headmin/dropdown/_locale.html.erb +4 -4
  54. data/app/views/headmin/filters/_base.html.erb +95 -0
  55. data/app/views/headmin/filters/_boolean.html.erb +23 -0
  56. data/app/views/headmin/filters/_date.html.erb +14 -38
  57. data/app/views/headmin/filters/_flatpickr.html.erb +15 -48
  58. data/app/views/headmin/filters/_number.html.erb +23 -0
  59. data/app/views/headmin/filters/_options.html.erb +24 -0
  60. data/app/views/headmin/filters/_search.html.erb +14 -12
  61. data/app/views/headmin/filters/_text.html.erb +23 -0
  62. data/app/views/headmin/filters/filter/_button.html.erb +9 -10
  63. data/app/views/headmin/filters/filter/_conditional.html.erb +18 -0
  64. data/app/views/headmin/filters/filter/_menu_item.html.erb +5 -2
  65. data/app/views/headmin/filters/filter/_null_select.html.erb +8 -0
  66. data/app/views/headmin/filters/filter/_operator.html.erb +16 -0
  67. data/app/views/headmin/filters/filter/_row.html.erb +11 -0
  68. data/app/views/headmin/forms/_blocks.html.erb +1 -1
  69. data/app/views/headmin/forms/_date_range.html.erb +3 -3
  70. data/app/views/headmin/forms/_datetime.html.erb +41 -0
  71. data/app/views/headmin/forms/_datetime_range.html.erb +40 -0
  72. data/app/views/headmin/forms/_file.html.erb +3 -3
  73. data/app/views/headmin/forms/_flatpickr.html.erb +1 -1
  74. data/app/views/headmin/forms/_flatpickr_range.html.erb +3 -4
  75. data/app/views/headmin/forms/_label.html.erb +1 -1
  76. data/app/views/headmin/forms/_repeater.html.erb +12 -12
  77. data/app/views/headmin/forms/fields/_base.html.erb +1 -1
  78. data/app/views/headmin/forms/fields/_file.html.erb +2 -2
  79. data/app/views/headmin/forms/fields/_files.html.erb +2 -2
  80. data/app/views/headmin/forms/fields/_group.html.erb +5 -5
  81. data/app/views/headmin/forms/fields/_list.html.erb +4 -4
  82. data/app/views/headmin/forms/fields/_text.html.erb +2 -2
  83. data/app/views/headmin/layout/_footer.html.erb +1 -1
  84. data/app/views/headmin/layout/_main.html.erb +1 -1
  85. data/app/views/headmin/nav/_dropdown.html.erb +3 -3
  86. data/app/views/headmin/nav/_item.html.erb +2 -2
  87. data/app/views/headmin/nav/item/_devise.html.erb +8 -8
  88. data/app/views/headmin/nav/item/_locale.html.erb +4 -4
  89. data/app/views/headmin/table/_actions.html.erb +3 -6
  90. data/app/views/headmin/table/actions/_export.html.erb +1 -1
  91. data/app/views/headmin/table/body/_row.html.erb +3 -3
  92. data/app/views/headmin/table/foot/_id.html.erb +1 -1
  93. data/app/views/headmin/views/devise/confirmations/_new.html.erb +1 -1
  94. data/app/views/headmin/views/devise/passwords/_edit.html.erb +2 -2
  95. data/app/views/headmin/views/devise/passwords/_new.html.erb +1 -1
  96. data/app/views/headmin/views/devise/registrations/_edit.html.erb +4 -4
  97. data/app/views/headmin/views/devise/registrations/_new.html.erb +3 -3
  98. data/app/views/headmin/views/devise/sessions/_new.html.erb +3 -3
  99. data/app/views/headmin/views/devise/unlocks/_new.html.erb +1 -1
  100. data/config/locales/en.yml +4 -0
  101. data/config/locales/headmin/dropdown/en.yml +6 -0
  102. data/config/locales/headmin/dropdown/nl.yml +6 -0
  103. data/config/locales/headmin/filters/en.yml +26 -1
  104. data/config/locales/headmin/filters/nl.yml +26 -1
  105. data/config/locales/headmin/layout/en.yml +0 -9
  106. data/config/locales/headmin/layout/nl.yml +0 -9
  107. data/config/locales/headmin/nav/en.yml +7 -0
  108. data/config/locales/headmin/nav/nl.yml +7 -0
  109. data/config/locales/nl.yml +4 -0
  110. data/lib/generators/templates/views/layouts/auth.html.erb +1 -1
  111. data/lib/headmin/version.rb +1 -1
  112. data/package.json +1 -1
  113. metadata +42 -6
  114. data/app/controllers/concerns/headmin/filter.rb +0 -5
  115. data/app/controllers/concerns/headmin/searchable.rb +0 -15
  116. data/app/views/headmin/filters/_select.html.erb +0 -45
  117. data/app/views/headmin/filters/filter/_template.html.erb +0 -13
@@ -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| %>
15
+ <%= render "headmin/forms/fields/base", form: form, field_type: :file, name: name do |field, label| %>
16
16
  <% yield field, :files, label %>
17
17
  <% end %>
@@ -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: :files, name: name do |field, label| %>
15
+ <%= render "headmin/forms/fields/base", form: form, field_type: :files, name: name do |field, label| %>
16
16
  <% yield field, :files, label %>
17
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 %>
@@ -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>
@@ -1,7 +1,7 @@
1
1
  <%= form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: {method: :post}) do |f| %>
2
2
  <%= render "headmin/views/devise/shared/error_messages", resource: resource %>
3
3
 
4
- <%= render 'headmin/forms/email', form: f, attribute: :email, required: true, float: true %>
4
+ <%= render "headmin/forms/email", form: f, attribute: :email, required: true, float: true %>
5
5
 
6
6
  <%= f.submit t('.resend'), class: 'btn btn-lg btn-primary w-100' %>
7
7
 
@@ -3,8 +3,8 @@
3
3
 
4
4
  <%= f.hidden_field :reset_password_token %>
5
5
 
6
- <%= render 'headmin/forms/password', form: f, attribute: :password, required: true, float: true %>
7
- <%= render 'headmin/forms/password', form: f, attribute: :password_confirmation, required: true, float: true %>
6
+ <%= render "headmin/forms/password", form: f, attribute: :password, required: true, float: true %>
7
+ <%= render "headmin/forms/password", form: f, attribute: :password_confirmation, required: true, float: true %>
8
8
 
9
9
  <%= f.submit t('.change_password'), class: 'btn btn-lg btn-primary w-100' %>
10
10
 
@@ -1,7 +1,7 @@
1
1
  <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: {method: :post}) do |f| %>
2
2
  <%= render "headmin/views/devise/shared/error_messages", resource: resource %>
3
3
 
4
- <%= render 'headmin/forms/email', form: f, attribute: :email, required: true, float: true %>
4
+ <%= render "headmin/forms/email", form: f, attribute: :email, required: true, float: true %>
5
5
 
6
6
  <%= f.submit t('.send_instructions'), class: 'btn btn-lg btn-primary w-100' %>
7
7
 
@@ -2,15 +2,15 @@
2
2
  <%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>
3
3
  <%= render "headmin/views/devise/shared/error_messages", resource: resource %>
4
4
 
5
- <%= render 'headmin/forms/email', form: f, attribute: :email, required: true, float: true %>
5
+ <%= render "headmin/forms/email", form: f, attribute: :email, required: true, float: true %>
6
6
 
7
7
  <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
8
8
  <div><%= t('.waiting_confirmation', email: resource.unconfirmed_email) %></div>
9
9
  <% end %>
10
10
 
11
- <%= render 'headmin/forms/password', form: f, attribute: :password, required: true, float: true %>
12
- <%= render 'headmin/forms/password', form: f, attribute: :password_confirmation, required: true, float: true %>
13
- <%= render 'headmin/forms/password', form: f, attribute: :current_password, required: true, float: true %>
11
+ <%= render "headmin/forms/password", form: f, attribute: :password, required: true, float: true %>
12
+ <%= render "headmin/forms/password", form: f, attribute: :password_confirmation, required: true, float: true %>
13
+ <%= render "headmin/forms/password", form: f, attribute: :current_password, required: true, float: true %>
14
14
 
15
15
  <%= f.submit t('.change'), class: 'btn btn-lg btn-primary w-100' %>
16
16
  <% end %>
@@ -1,9 +1,9 @@
1
1
  <%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
2
2
  <%= render "headmin/views/devise/shared/error_messages", resource: resource %>
3
3
 
4
- <%= render 'headmin/forms/email', form: f, attribute: :email, required: true, float: true %>
5
- <%= render 'headmin/forms/password', form: f, attribute: :password, required: true, float: true %>
6
- <%= render 'headmin/forms/password', form: f, attribute: :password_confirmation, required: true, float: true %>
4
+ <%= render "headmin/forms/email", form: f, attribute: :email, required: true, float: true %>
5
+ <%= render "headmin/forms/password", form: f, attribute: :password, required: true, float: true %>
6
+ <%= render "headmin/forms/password", form: f, attribute: :password_confirmation, required: true, float: true %>
7
7
 
8
8
  <%= f.submit t('.sign_up'), class: 'btn btn-lg btn-primary w-100' %>
9
9
 
@@ -1,10 +1,10 @@
1
1
  <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
2
2
 
3
- <%= render 'headmin/forms/email', form: f, attribute: :email, required: true, float: true %>
4
- <%= render 'headmin/forms/password', form: f, attribute: :password, required: true, float: true %>
3
+ <%= render "headmin/forms/email", form: f, attribute: :email, required: true, float: true %>
4
+ <%= render "headmin/forms/password", form: f, attribute: :password, required: true, float: true %>
5
5
 
6
6
  <% if devise_mapping.rememberable? %>
7
- <%= render 'headmin/forms/checkbox', form: f, attribute: :remember_me %>
7
+ <%= render "headmin/forms/checkbox", form: f, attribute: :remember_me %>
8
8
  <% end %>
9
9
 
10
10
  <%= f.submit t('.login'), class: 'btn btn-lg btn-primary w-100' %>
@@ -1,7 +1,7 @@
1
1
  <%= form_for(resource, as: resource_name, url: unlock_path(resource_name), html: {method: :post}) do |f| %>
2
2
  <%= render "headmin/views/devise/shared/error_messages", resource: resource %>
3
3
 
4
- <%= render 'headmin/forms/email', form: f, attribute: :email, required: true, float: true %>
4
+ <%= render "headmin/forms/email", form: f, attribute: :email, required: true, float: true %>
5
5
 
6
6
  <%= f.submit t('.resend'), class: 'btn btn-lg btn-primary w-100' %>
7
7
 
@@ -1,2 +1,6 @@
1
1
  en:
2
2
  language_name: English
3
+
4
+ date:
5
+ formats:
6
+ default: "%d/%m/%Y"
@@ -0,0 +1,6 @@
1
+ en:
2
+ headmin:
3
+ dropdown:
4
+ devise:
5
+ edit_profile: Edit profile
6
+ log_out: Log out
@@ -0,0 +1,6 @@
1
+ nl:
2
+ headmin:
3
+ dropdown:
4
+ devise:
5
+ edit_profile: Profiel bewerken
6
+ log_out: Afmelden
@@ -1,13 +1,38 @@
1
1
  en:
2
2
  headmin:
3
3
  filters:
4
+ apply: Apply
4
5
  button: Filters
5
6
  remove_all: Clear all
6
7
  filter:
7
8
  button:
8
9
  all: All
10
+ conditional:
11
+ and: And
12
+ or: Or
9
13
  select:
10
14
  blank: Make a choice
11
15
  search:
12
16
  button: Search
13
- placeholder: 'Search in %{resource}'
17
+ placeholder: 'Search in %{resource}'
18
+ conditionals:
19
+ and: and
20
+ or: or
21
+ operators:
22
+ eq: is equal to
23
+ not_eq: is not equal to
24
+ gt: is greater than
25
+ gteq: is greater than or equal to
26
+ lt: is lower than
27
+ lteq: is lower than or equal to
28
+ starts_with: starts with
29
+ ends_with: ends with
30
+ matches: matches with
31
+ does_not_match: does not matches with
32
+ is_not_null: is not null
33
+ is_null: is null
34
+ values:
35
+ "false": "False"
36
+ "no": "No"
37
+ "true": "Hello"
38
+ "yes": "Yes"