headmin 0.4.0 → 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.
- checksums.yaml +4 -4
- data/.lock-487e157d270f3062a98b7b2a012753708-1272821827 +0 -0
- data/CHANGELOG.md +16 -2
- data/Gemfile.lock +77 -79
- data/app/assets/javascripts/headmin/controllers/autocomplete_controller.js +84 -21
- data/app/assets/javascripts/headmin/controllers/date_range_controller.js +12 -6
- data/app/assets/javascripts/headmin/controllers/filter_controller.js +61 -11
- data/app/assets/javascripts/headmin/controllers/filter_row_controller.js +50 -0
- data/app/assets/javascripts/headmin/controllers/flatpickr_controller.js +2 -6
- data/app/assets/javascripts/headmin/controllers/popup_controller.js +14 -5
- data/app/assets/javascripts/headmin/controllers/table_actions_controller.js +16 -21
- data/app/assets/javascripts/headmin/index.js +2 -0
- data/app/assets/javascripts/headmin.js +186 -56
- data/app/assets/stylesheets/headmin/filter.scss +74 -0
- data/app/assets/stylesheets/headmin/general.scss +8 -0
- data/app/assets/stylesheets/headmin/layout/body.scss +5 -0
- data/app/assets/stylesheets/headmin/popup.scss +0 -1
- data/app/assets/stylesheets/headmin.css +70 -1
- data/app/controllers/concerns/headmin/filterable.rb +27 -0
- data/app/models/concerns/headmin/field.rb +4 -2
- data/app/models/concerns/headmin/fieldable.rb +138 -44
- data/app/models/headmin/filter/base.rb +238 -0
- data/app/models/headmin/filter/base_view.rb +64 -0
- data/app/models/headmin/filter/boolean.rb +15 -0
- data/app/models/headmin/filter/boolean_view.rb +61 -0
- data/app/models/headmin/filter/button_view.rb +25 -0
- data/app/models/headmin/filter/conditional_view.rb +16 -0
- data/app/models/headmin/filter/date.rb +19 -0
- data/app/models/headmin/filter/date_view.rb +52 -0
- data/app/models/headmin/filter/flatpickr_view.rb +54 -0
- data/app/models/headmin/filter/menu_item_view.rb +6 -0
- data/app/models/headmin/filter/money.rb +13 -0
- data/app/models/headmin/filter/number.rb +27 -0
- data/app/models/headmin/filter/number_view.rb +54 -0
- data/app/models/headmin/filter/operator_view.rb +30 -0
- data/app/models/headmin/filter/options_view.rb +61 -0
- data/app/models/headmin/filter/row_view.rb +13 -0
- data/app/models/headmin/filter/search.rb +18 -0
- data/app/models/headmin/filter/search_view.rb +31 -0
- data/app/models/headmin/filter/text.rb +25 -0
- data/app/models/headmin/filter/text_view.rb +53 -0
- data/app/models/headmin/filters.rb +29 -0
- data/app/models/headmin/form/blocks_view.rb +1 -1
- data/app/models/headmin/form/checkbox_view.rb +3 -3
- data/app/models/headmin/form/date_range_view.rb +2 -2
- data/app/models/headmin/form/date_view.rb +5 -5
- data/app/models/headmin/form/datetime_range_view.rb +25 -0
- data/app/models/headmin/form/datetime_view.rb +45 -0
- data/app/models/headmin/form/email_view.rb +7 -7
- data/app/models/headmin/form/file_view.rb +6 -6
- data/app/models/headmin/form/flatpickr_range_view.rb +11 -22
- data/app/models/headmin/form/flatpickr_view.rb +4 -13
- data/app/models/headmin/form/input_group_view.rb +1 -1
- data/app/models/headmin/form/label_view.rb +1 -1
- data/app/models/headmin/form/number_view.rb +5 -5
- data/app/models/headmin/form/password_view.rb +5 -5
- data/app/models/headmin/form/redactorx_view.rb +2 -2
- data/app/models/headmin/form/search_view.rb +7 -7
- data/app/models/headmin/form/select_view.rb +6 -6
- data/app/models/headmin/form/switch_view.rb +1 -1
- data/app/models/headmin/form/text_view.rb +7 -7
- data/app/models/headmin/form/textarea_view.rb +5 -5
- data/app/models/headmin/form/url_view.rb +7 -7
- data/app/models/headmin/form/wrapper_view.rb +1 -1
- data/app/models/headmin/form/wysiwyg_view.rb +1 -1
- data/app/models/view_model.rb +1 -1
- data/app/views/examples/admin.html.erb +13 -13
- data/app/views/examples/auth.html.erb +1 -1
- data/app/views/headmin/_filters.html.erb +6 -6
- data/app/views/headmin/_form.html.erb +2 -2
- data/app/views/headmin/_index.html.erb +1 -1
- data/app/views/headmin/_pagination.html.erb +1 -1
- data/app/views/headmin/_popup.html.erb +2 -2
- data/app/views/headmin/_table.html.erb +1 -1
- data/app/views/headmin/dropdown/_devise.html.erb +8 -8
- data/app/views/headmin/dropdown/_locale.html.erb +4 -4
- data/app/views/headmin/filters/_base.html.erb +95 -0
- data/app/views/headmin/filters/_boolean.html.erb +23 -0
- data/app/views/headmin/filters/_date.html.erb +14 -38
- data/app/views/headmin/filters/_flatpickr.html.erb +15 -48
- data/app/views/headmin/filters/_number.html.erb +23 -0
- data/app/views/headmin/filters/_options.html.erb +24 -0
- data/app/views/headmin/filters/_search.html.erb +14 -12
- data/app/views/headmin/filters/_text.html.erb +23 -0
- data/app/views/headmin/filters/filter/_button.html.erb +9 -10
- data/app/views/headmin/filters/filter/_conditional.html.erb +18 -0
- data/app/views/headmin/filters/filter/_menu_item.html.erb +5 -2
- data/app/views/headmin/filters/filter/_null_select.html.erb +8 -0
- data/app/views/headmin/filters/filter/_operator.html.erb +16 -0
- data/app/views/headmin/filters/filter/_row.html.erb +11 -0
- data/app/views/headmin/forms/_blocks.html.erb +1 -1
- data/app/views/headmin/forms/_date_range.html.erb +3 -3
- data/app/views/headmin/forms/_datetime.html.erb +41 -0
- data/app/views/headmin/forms/_datetime_range.html.erb +40 -0
- data/app/views/headmin/forms/_file.html.erb +3 -3
- data/app/views/headmin/forms/_flatpickr.html.erb +1 -1
- data/app/views/headmin/forms/_flatpickr_range.html.erb +3 -4
- data/app/views/headmin/forms/_label.html.erb +1 -1
- data/app/views/headmin/forms/_repeater.html.erb +12 -12
- data/app/views/headmin/forms/fields/_base.html.erb +1 -1
- data/app/views/headmin/forms/fields/_file.html.erb +3 -3
- data/app/views/headmin/forms/fields/_files.html.erb +17 -0
- data/app/views/headmin/forms/fields/_group.html.erb +10 -5
- data/app/views/headmin/forms/fields/_list.html.erb +4 -4
- data/app/views/headmin/forms/fields/_text.html.erb +2 -2
- data/app/views/headmin/layout/_footer.html.erb +1 -1
- data/app/views/headmin/layout/_main.html.erb +1 -1
- data/app/views/headmin/nav/_dropdown.html.erb +3 -3
- data/app/views/headmin/nav/_item.html.erb +2 -2
- data/app/views/headmin/nav/item/_devise.html.erb +8 -8
- data/app/views/headmin/nav/item/_locale.html.erb +4 -4
- data/app/views/headmin/table/_actions.html.erb +3 -6
- data/app/views/headmin/table/actions/_export.html.erb +1 -1
- data/app/views/headmin/table/body/_row.html.erb +3 -3
- data/app/views/headmin/table/foot/_id.html.erb +1 -1
- data/app/views/headmin/views/devise/confirmations/_new.html.erb +1 -1
- data/app/views/headmin/views/devise/passwords/_edit.html.erb +2 -2
- data/app/views/headmin/views/devise/passwords/_new.html.erb +1 -1
- data/app/views/headmin/views/devise/registrations/_edit.html.erb +4 -4
- data/app/views/headmin/views/devise/registrations/_new.html.erb +3 -3
- data/app/views/headmin/views/devise/sessions/_new.html.erb +3 -3
- data/app/views/headmin/views/devise/unlocks/_new.html.erb +1 -1
- data/config/locales/en.yml +4 -0
- data/config/locales/headmin/dropdown/en.yml +6 -0
- data/config/locales/headmin/dropdown/nl.yml +6 -0
- data/config/locales/headmin/filters/en.yml +26 -1
- data/config/locales/headmin/filters/nl.yml +26 -1
- data/config/locales/headmin/forms/en.yml +1 -1
- data/config/locales/headmin/forms/nl.yml +1 -1
- data/config/locales/headmin/layout/en.yml +0 -9
- data/config/locales/headmin/layout/nl.yml +0 -9
- data/config/locales/headmin/nav/en.yml +7 -0
- data/config/locales/headmin/nav/nl.yml +7 -0
- data/config/locales/nl.yml +4 -0
- data/lib/generators/templates/views/layouts/auth.html.erb +1 -1
- data/lib/headmin/version.rb +1 -1
- data/package.json +1 -1
- metadata +44 -7
- data/app/controllers/concerns/headmin/filter.rb +0 -5
- data/app/controllers/concerns/headmin/searchable.rb +0 -15
- data/app/views/headmin/filters/_select.html.erb +0 -45
- data/app/views/headmin/filters/filter/_template.html.erb +0 -13
- data/app/views/headmin/forms/fields/_image.html.erb +0 -17
@@ -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
|
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
|
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
|
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">
|
@@ -20,19 +20,18 @@
|
|
20
20
|
# ==== Examples
|
21
21
|
# Basic version
|
22
22
|
# <%= form_with do |form| %#>
|
23
|
-
# <%= render
|
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? %>
|
@@ -11,24 +11,24 @@
|
|
11
11
|
#
|
12
12
|
# ==== Examples
|
13
13
|
# # Basic version
|
14
|
-
# <% render
|
15
|
-
# <% render
|
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
|
20
|
-
# <% render
|
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
|
25
|
-
# <% render
|
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
|
31
|
-
# <% render
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
16
|
-
<% yield field, :
|
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
|
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
|
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
|
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>
|
@@ -24,17 +24,22 @@
|
|
24
24
|
# <% end %#>
|
25
25
|
|
26
26
|
label = local_assigns.has_key?(:label) ? label : nil
|
27
|
+
wrapper = local_assigns.has_key?(:wrapper) ? local_assigns[:wrapper] : true
|
27
28
|
show_label = label != false
|
28
29
|
%>
|
29
30
|
|
30
|
-
<%= render
|
31
|
+
<%= render "headmin/forms/fields/base", form: form, name: name, field_type: :group do |group, field_label| %>
|
31
32
|
<% if show_label %>
|
32
|
-
<%= render
|
33
|
+
<%= render "headmin/forms/label", form: form, attribute: :value, text: label || field_label %>
|
33
34
|
<% end %>
|
34
35
|
|
36
|
+
<% if wrapper %>
|
35
37
|
<ul class="list-group mb-3">
|
36
38
|
<li class="list-group-item">
|
37
39
|
<%= yield group %>
|
38
40
|
</li>
|
39
41
|
</ul>
|
42
|
+
<% else %>
|
43
|
+
<%= yield group %>
|
44
|
+
<% end %>
|
40
45
|
<% end %>
|
@@ -8,8 +8,8 @@
|
|
8
8
|
#
|
9
9
|
# ==== Examples
|
10
10
|
# Basic version
|
11
|
-
# <%= render
|
12
|
-
# <%= render
|
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
|
22
|
-
<%= render
|
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
|
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
|
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 %>
|
@@ -9,9 +9,9 @@
|
|
9
9
|
#
|
10
10
|
# ==== Examples
|
11
11
|
# Basic version.
|
12
|
-
# <%= render
|
13
|
-
# <%= render
|
14
|
-
# <%= render
|
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
|
12
|
+
# <%= render "headmin/nav/item", name: 'Dashboard', url: admin_root_path %#>
|
13
13
|
#
|
14
14
|
# With icon
|
15
|
-
# <%= render
|
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.
|
5
|
+
scope: (symbol) devise scope, i.e. ":users" => current_user
|
6
6
|
%>
|
7
7
|
|
8
|
-
<% scope = local_assigns.has_key?(:scope) ? scope :
|
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
|
13
|
-
<%= render
|
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
|
17
|
-
<%= render
|
18
|
-
<%= render
|
19
|
-
<%= render
|
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
|
8
|
-
<%= render
|
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
|
12
|
+
<%= render "headmin/dropdown/list", id: 'nav-item-locale' do %>
|
13
13
|
<% I18n.available_locales.each do |locale| %>
|
14
|
-
<%= render
|
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
|
9
|
-
# <%= render
|
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">
|
@@ -5,9 +5,9 @@
|
|
5
5
|
# * +class</tt> - Custom class names to add to the table row
|
6
6
|
#
|
7
7
|
# ==== Examples
|
8
|
-
# <%= render
|
9
|
-
# <%= render
|
10
|
-
# <%= render
|
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
|
@@ -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
|
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
|
7
|
-
<%= render
|
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
|
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
|
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
|
12
|
-
<%= render
|
13
|
-
<%= render
|
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
|
5
|
-
<%= render
|
6
|
-
<%= render
|
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
|
4
|
-
<%= render
|
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
|
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
|
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
|
|
data/config/locales/en.yml
CHANGED
@@ -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"
|