administrate 1.0.0.beta1 → 1.0.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/builds/administrate/application.css +609 -27
  3. data/app/assets/builds/administrate/application.css.map +1 -1
  4. data/app/assets/builds/administrate/application.js +16295 -2236
  5. data/app/assets/builds/administrate/application.js.map +4 -4
  6. data/app/assets/builds/administrate-internal/docs.css.map +1 -1
  7. data/app/assets/javascripts/administrate/application.js +4 -4
  8. data/app/assets/javascripts/administrate/controllers/application.js +9 -0
  9. data/app/assets/javascripts/administrate/controllers/index.js +7 -0
  10. data/app/assets/javascripts/administrate/controllers/select_controller.js +8 -0
  11. data/app/assets/javascripts/administrate/{components/table.js → controllers/table_controller.js} +9 -9
  12. data/app/assets/stylesheets/administrate/application.scss +1 -2
  13. data/app/assets/stylesheets/administrate/base/_layout.scss +5 -0
  14. data/app/assets/stylesheets/administrate/base/_typography.scss +12 -1
  15. data/app/assets/stylesheets/administrate/components/_buttons.scss +12 -10
  16. data/app/assets/stylesheets/administrate/components/_field-unit.scss +2 -3
  17. data/app/assets/stylesheets/administrate/reset/_normalize.scss +7 -1
  18. data/app/controllers/administrate/application_controller.rb +3 -2
  19. data/app/views/administrate/application/_collection.html.erb +1 -1
  20. data/app/views/administrate/application/_collection_item_actions.html.erb +3 -3
  21. data/app/views/administrate/application/_index_header.html.erb +4 -0
  22. data/app/views/administrate/application/_javascript.html.erb +1 -1
  23. data/app/views/administrate/application/edit.html.erb +15 -3
  24. data/app/views/administrate/application/index.html.erb +19 -11
  25. data/app/views/administrate/application/new.html.erb +15 -3
  26. data/app/views/administrate/application/show.html.erb +35 -23
  27. data/app/views/fields/belongs_to/_form.html.erb +3 -2
  28. data/app/views/fields/has_many/_form.html.erb +1 -1
  29. data/app/views/fields/polymorphic/_form.html.erb +1 -1
  30. data/app/views/fields/rich_text/_form.html.erb +6 -0
  31. data/app/views/fields/rich_text/_index.html.erb +18 -0
  32. data/app/views/fields/rich_text/_show.html.erb +18 -0
  33. data/app/views/fields/select/_form.html.erb +2 -1
  34. data/app/views/fields/text/_form.html.erb +1 -1
  35. data/app/views/layouts/administrate/application.html.erb +1 -2
  36. data/docs/customizing_dashboards.md +138 -4
  37. data/docs/customizing_page_views.md +25 -0
  38. data/lib/administrate/base_dashboard.rb +1 -0
  39. data/lib/administrate/engine.rb +6 -0
  40. data/lib/administrate/field/associative.rb +4 -0
  41. data/lib/administrate/field/base.rb +19 -1
  42. data/lib/administrate/field/belongs_to.rb +6 -1
  43. data/lib/administrate/field/deferred.rb +9 -1
  44. data/lib/administrate/field/has_one.rb +4 -0
  45. data/lib/administrate/field/rich_text.rb +21 -0
  46. data/lib/administrate/field/select.rb +4 -0
  47. data/lib/administrate/order.rb +25 -21
  48. data/lib/administrate/page/base.rb +1 -6
  49. data/lib/administrate/version.rb +1 -1
  50. data/lib/generators/administrate/dashboard/dashboard_generator.rb +5 -2
  51. data/lib/generators/administrate/views/index_generator.rb +1 -0
  52. data/lib/generators/administrate/views/layout_generator.rb +1 -1
  53. metadata +13 -12
  54. data/app/assets/javascripts/administrate/components/associative.js +0 -5
  55. data/app/assets/javascripts/administrate/components/select.js +0 -3
  56. data/app/assets/stylesheets/administrate/utilities/_text-color.scss +0 -3
  57. data/lib/generators/administrate/assets/assets_generator.rb +0 -12
  58. data/lib/generators/administrate/assets/javascripts_generator.rb +0 -17
  59. data/lib/generators/administrate/assets/stylesheets_generator.rb +0 -17
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../stylesheets/administrate-internal/docs.scss"],"names":[],"mappings":"AAYA;AAAA;EAEE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;AAAA;AAAA;EAGE;EACA;;;AAGF;EACE,OAhCK;EAiCL;;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;;;AAIJ;EACE,kBA3DI;EA4DJ,OA1DM;EA2DN;;AAEA;EACE;EACA;EACA;;;AAIJ;EACE;EACA;EACA;;AAEA;EACE,kBAxES;EAyET,OAxES;EAyET;;AAEA;EAAe,OA1EN;;AA2ET;EAAc,OA5EL;;AA6ET;EAAiB,OA3ET;;AA4ER;EAAe,OA1ER;;AA2EP;EAAgB,OA5EN;;AA8EV;AAAA;EACe,OAhFP;;AAkFR;EAAY,OAjFF","file":"docs.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../stylesheets/administrate-internal/docs.scss"],"names":[],"mappings":"AAYA;AAAA;EAEE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;AAAA;AAAA;EAGE;EACA;;;AAGF;EACE,OAhCK;EAiCL;;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;;;AAIJ;EACE,kBA3DI;EA4DJ,OA1DM;EA2DN;;AAEA;EACE;EACA;EACA;;;AAIJ;EACE;EACA;EACA;;AAEA;EACE,kBAxES;EAyET,OAxES;EAyET;;AAEA;EAAe,OA1EN;;AA2ET;EAAc,OA5EL;;AA6ET;EAAiB,OA3ET;;AA4ER;EAAe,OA1ER;;AA2EP;EAAgB,OA5EN;;AA8EV;AAAA;EACe,OAhFP;;AAkFR;EAAY,OAjFF","file":"docs.css","sourcesContent":["$blue: #53adc6;\n$red: #cf726e;\n$green: #5bc89e;\n$white: #f0f0f0;\n\n$code-black: #202020;\n$code-white: #e0e0dc;\n$code-green: #b0bf82;\n$code-blue: #8fbdcc;\n$code-yellow: #f8d29d;\n$code-red: #b95c56;\n\nhtml,\nbody {\n font-family: 'Lato', serif;\n font-size: 18px;\n line-height: 1.62em;\n margin: 0;\n}\n\nimg {\n max-width: 100%;\n}\n\nh1,\nh2,\nh3 {\n font-family: 'Fjalla One', sans-serif;\n margin-top: 2em;\n}\n\na {\n color: $blue;\n text-decoration: none;\n}\n\n.content {\n margin-bottom: 2em;\n margin-left: auto;\n margin-right: auto;\n margin-top: 2em;\n width: 60em;\n\n .sidebar {\n float: left;\n width: 20em;\n\n &-links {\n list-style: none;\n padding-left: 0;\n }\n }\n\n .main {\n float: right;\n width: 40em;\n }\n}\n\n.flash-wrapper {\n background-color: $red;\n color: $white;\n padding: 1em;\n\n .flash {\n margin-left: auto;\n margin-right: auto;\n width: 40em;\n }\n}\n\ncode {\n font-family: \"Source Code Pro\";\n font-size: 0.8rem;\n padding: 0.4em 0.2em 0;\n\n &.hljs {\n background-color: $code-black;\n color: $code-white;\n padding-left: 1rem;\n\n .hljs-string { color: $code-green; }\n .hljs-subst { color: $code-white; }\n .hljs-constant { color: $code-blue; }\n .hljs-symbol { color: $code-red; }\n .hljs-keyword { color: $code-yellow; }\n\n .hljs-title,\n .hljs-parent { color: $code-blue; }\n\n .hljs-tag { color: $code-yellow; }\n }\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  import "./add_jquery";
2
+ import "trix";
3
+ import "@rails/actiontext";
2
4
 
3
- import {} from "jquery-ujs";
5
+ import "@hotwired/turbo-rails";
4
6
  import "selectize/dist/js/selectize.min.js";
5
7
 
6
- import "./components/associative";
7
- import "./components/select";
8
- import "./components/table";
8
+ import "./controllers";
@@ -0,0 +1,9 @@
1
+ import { Application } from "@hotwired/stimulus";
2
+
3
+ const application = Application.start();
4
+
5
+ // Configure Stimulus development experience
6
+ application.debug = false;
7
+ window.Stimulus = application;
8
+
9
+ export { application };
@@ -0,0 +1,7 @@
1
+ import { application } from "./application";
2
+
3
+ import SelectController from "./select_controller";
4
+ import TableController from "./table_controller";
5
+
6
+ application.register("select", SelectController);
7
+ application.register("table", TableController);
@@ -0,0 +1,8 @@
1
+ import { Controller } from "@hotwired/stimulus";
2
+ import $ from "jquery";
3
+
4
+ export default class extends Controller {
5
+ connect() {
6
+ $(this.element).selectize({});
7
+ }
8
+ };
@@ -1,7 +1,10 @@
1
- $(function() {
2
- var keycodes = { space: 32, enter: 13 };
1
+ import { Controller } from "@hotwired/stimulus";
2
+ import $ from "jquery";
3
3
 
4
- var visitDataUrl = function(event) {
4
+ var keycodes = { space: 32, enter: 13 };
5
+
6
+ export default class extends Controller {
7
+ visitDataUrl(event) {
5
8
  if (event.type == "click" ||
6
9
  event.keyCode == keycodes.space ||
7
10
  event.keyCode == keycodes.enter) {
@@ -13,11 +16,8 @@ $(function() {
13
16
  var dataUrl = $(event.target).closest("tr").data("url");
14
17
  var selection = window.getSelection().toString();
15
18
  if (selection.length === 0 && dataUrl) {
16
- window.location = window.location.protocol + '//' + window.location.host + dataUrl;
19
+ Turbo.visit(dataUrl);
17
20
  }
18
21
  }
19
- };
20
-
21
- $("table").on("click", ".js-table-row", visitDataUrl);
22
- $("table").on("keydown", ".js-table-row", visitDataUrl);
23
- });
22
+ }
23
+ };
@@ -2,6 +2,7 @@
2
2
 
3
3
  @import "reset/normalize";
4
4
 
5
+ @import "trix/dist/trix";
5
6
  @import "selectize/dist/css/selectize";
6
7
  @import "selectize/dist/css/selectize.default";
7
8
 
@@ -26,5 +27,3 @@
26
27
  @import "components/navigation";
27
28
  @import "components/pagination";
28
29
  @import "components/search";
29
-
30
- @import "utilities/text-color";
@@ -13,6 +13,11 @@ figure {
13
13
  margin: 0;
14
14
  }
15
15
 
16
+ /* stylelint-disable selector-no-qualifying-type, selector-class-pattern */
17
+ form.button_to { // we don't control this class name
18
+ display: contents;
19
+ }
20
+
16
21
  img,
17
22
  picture {
18
23
  margin: 0;
@@ -21,11 +21,22 @@ p {
21
21
  margin: 0 0 $small-spacing;
22
22
  }
23
23
 
24
- a {
24
+ a,
25
+ .link:is(
26
+ button,
27
+ [type="button"],
28
+ [type="reset"],
29
+ [type="submit"]
30
+ ) {
25
31
  color: $action-color;
26
32
  text-decoration-skip-ink: auto;
27
33
  transition: color $base-duration $base-timing;
28
34
 
35
+ /* stylelint-disable selector-no-qualifying-type */
36
+ &.link--danger {
37
+ color: $red;
38
+ }
39
+
29
40
  &:hover {
30
41
  color: mix($black, $action-color, 25%);
31
42
  }
@@ -1,5 +1,7 @@
1
1
  button,
2
- input,
2
+ [type="button"],
3
+ [type="reset"],
4
+ [type="submit"],
3
5
  .button {
4
6
  appearance: none;
5
7
  background-color: $action-color;
@@ -20,23 +22,23 @@ input,
20
22
  vertical-align: middle;
21
23
  white-space: nowrap;
22
24
 
23
- &:hover {
25
+ &:disabled {
26
+ cursor: not-allowed;
27
+ opacity: 0.5;
28
+ }
29
+
30
+ &:not(.link):hover {
24
31
  background-color: mix($black, $action-color, 20%);
25
32
  color: $white;
26
33
  }
27
34
 
28
- &:focus {
35
+ &:not(.link):focus {
29
36
  outline: $focus-outline;
30
37
  outline-offset: $focus-outline-offset;
31
38
  }
32
39
 
33
- &:disabled {
34
- cursor: not-allowed;
35
- opacity: 0.5;
36
-
37
- &:hover {
38
- background-color: $action-color;
39
- }
40
+ &:not(.link):disabled:hover {
41
+ background-color: $action-color;
40
42
  }
41
43
  }
42
44
 
@@ -17,10 +17,9 @@
17
17
  }
18
18
 
19
19
  .field-unit__field {
20
+ flex-grow: 1;
20
21
  float: left;
21
22
  margin-left: 2rem;
22
- max-width: 50rem;
23
- width: 100%;
24
23
 
25
24
  .optgroup-header {
26
25
  font-weight: $bold-font-weight;
@@ -41,7 +40,7 @@
41
40
  width: 100%;
42
41
 
43
42
  .field-unit__field {
44
- width: 100%;
43
+ flex-grow: 1;
45
44
  }
46
45
 
47
46
  .field-unit__label {
@@ -100,7 +100,13 @@ pre {
100
100
  * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
101
101
  */
102
102
 
103
- a {
103
+ a,
104
+ .link:is(
105
+ button,
106
+ [type="button"],
107
+ [type="reset"],
108
+ [type="submit"]
109
+ ) {
104
110
  background-color: transparent; /* 1 */
105
111
  -webkit-text-decoration-skip: objects; /* 2 */
106
112
  }
@@ -60,7 +60,8 @@ module Administrate
60
60
  if requested_resource.update(resource_params)
61
61
  redirect_to(
62
62
  after_resource_updated_path(requested_resource),
63
- notice: translate_with_resource("update.success")
63
+ notice: translate_with_resource("update.success"),
64
+ status: :see_other
64
65
  )
65
66
  else
66
67
  render :edit, locals: {
@@ -75,7 +76,7 @@ module Administrate
75
76
  else
76
77
  flash[:error] = requested_resource.errors.full_messages.join("<br/>")
77
78
  end
78
- redirect_to after_resource_destroyed_path(requested_resource)
79
+ redirect_to after_resource_destroyed_path(requested_resource), status: :see_other
79
80
  end
80
81
 
81
82
  private
@@ -18,7 +18,7 @@ to display a collection of resources in an HTML table.
18
18
  [1]: http://www.rubydoc.info/gems/administrate/Administrate/Page/Collection
19
19
  %>
20
20
 
21
- <table aria-labelledby="<%= table_title %>">
21
+ <table aria-labelledby="<%= table_title %>" data-controller="table" data-action="click->table#visitDataUrl keydown->table#visitDataUrl">
22
22
  <thead>
23
23
  <tr>
24
24
  <% collection_presenter.attribute_types.each do |attr_name, attr_type| %>
@@ -7,11 +7,11 @@
7
7
  <% end %>
8
8
 
9
9
  <% if existing_action?(collection_presenter.resource_name, :destroy) %>
10
- <td><%= link_to(
10
+ <td><%= button_to(
11
11
  t("administrate.actions.destroy"),
12
12
  [namespace, resource],
13
- class: "text-color-red",
13
+ class: "link link--danger",
14
14
  method: :delete,
15
- data: { confirm: t("administrate.actions.confirm") }
15
+ data: { turbo_confirm: t("administrate.actions.confirm") }
16
16
  ) if accessible_action?(resource, :destroy) %></td>
17
17
  <% end %>
@@ -7,6 +7,8 @@
7
7
  <%= content_for(:title) %>
8
8
  </h1>
9
9
 
10
+ <%= content_for(:header_middle) %>
11
+
10
12
  <% if show_search_bar %>
11
13
  <%= render(
12
14
  "search",
@@ -25,4 +27,6 @@
25
27
  class: "button",
26
28
  ) if accessible_action?(new_resource, :new) %>
27
29
  </div>
30
+
31
+ <%= content_for(:header_last) %>
28
32
  </header>
@@ -8,7 +8,7 @@ by providing a `content_for(:javascript)` block.
8
8
  %>
9
9
 
10
10
  <% Administrate::Engine.javascripts.each do |js_path| %>
11
- <%= javascript_include_tag js_path %>
11
+ <%= javascript_include_tag js_path, "data-turbo-track": "reload", defer: true %>
12
12
  <% end %>
13
13
 
14
14
  <%= yield :javascript %>
@@ -22,6 +22,8 @@ It displays a header, and renders the `_form` partial to do the heavy lifting.
22
22
  <%= content_for(:title) %>
23
23
  </h1>
24
24
 
25
+ <%= content_for(:header_middle) %>
26
+
25
27
  <div>
26
28
  <%= link_to(
27
29
  t("administrate.actions.show_resource", name: page.page_title),
@@ -29,8 +31,18 @@ It displays a header, and renders the `_form` partial to do the heavy lifting.
29
31
  class: "button",
30
32
  ) if accessible_action?(page.resource, :show) %>
31
33
  </div>
34
+
35
+ <%= content_for(:header_last) %>
32
36
  </header>
33
37
 
34
- <section class="main-content__body">
35
- <%= render "form", page: page %>
36
- </section>
38
+ <%= content_for(:before_main) %>
39
+
40
+ <% if content_for?(:main) %>
41
+ <%= content_for(:main) %>
42
+ <% else %>
43
+ <section class="main-content__body">
44
+ <%= render "form", page: page %>
45
+ </section>
46
+ <% end %>
47
+
48
+ <%= content_for(:after_main) %>
@@ -32,15 +32,23 @@ It renders the `_table` partial to display details about the resources.
32
32
  )
33
33
  %>
34
34
 
35
- <section class="main-content__body main-content__body--flush">
36
- <%= render(
37
- "collection",
38
- collection_presenter: page,
39
- collection_field_name: resource_name,
40
- page: page,
41
- resources: resources,
42
- table_title: "page-title"
43
- ) %>
35
+ <%= content_for(:before_main) %>
36
+
37
+ <% if content_for?(:main) %>
38
+ <%= content_for(:main) %>
39
+ <% else %>
40
+ <section class="main-content__body main-content__body--flush">
41
+ <%= render(
42
+ "collection",
43
+ collection_presenter: page,
44
+ collection_field_name: resource_name,
45
+ page: page,
46
+ resources: resources,
47
+ table_title: "page-title"
48
+ ) %>
49
+
50
+ <%= render("pagination", resources: resources) %>
51
+ </section>
52
+ <% end %>
44
53
 
45
- <%= render("pagination", resources: resources) %>
46
- </section>
54
+ <%= content_for(:after_main) %>
@@ -27,11 +27,23 @@ to do the heavy lifting.
27
27
  <%= content_for(:title) %>
28
28
  </h1>
29
29
 
30
+ <%= content_for(:header_middle) %>
31
+
30
32
  <div>
31
33
  <%= link_to t("administrate.actions.back"), :back, class: "button" %>
32
34
  </div>
35
+
36
+ <%= content_for(:header_last) %>
33
37
  </header>
34
38
 
35
- <section class="main-content__body">
36
- <%= render "form", page: page %>
37
- </section>
39
+ <%= content_for(:before_main) %>
40
+
41
+ <% if content_for?(:main) %>
42
+ <%= content_for(:main) %>
43
+ <% else %>
44
+ <section class="main-content__body">
45
+ <%= render "form", page: page %>
46
+ </section>
47
+ <% end %>
48
+
49
+ <%= content_for(:after_main) %>
@@ -23,6 +23,8 @@ as well as a link to its edit page.
23
23
  <%= content_for(:title) %>
24
24
  </h1>
25
25
 
26
+ <%= content_for(:header_middle) %>
27
+
26
28
  <div>
27
29
  <%= link_to(
28
30
  t("administrate.actions.edit_resource", name: page.page_title),
@@ -30,36 +32,46 @@ as well as a link to its edit page.
30
32
  class: "button",
31
33
  ) if accessible_action?(page.resource, :edit) %>
32
34
 
33
- <%= link_to(
35
+ <%= button_to(
34
36
  t("administrate.actions.destroy"),
35
37
  [namespace, page.resource],
36
38
  class: "button button--danger",
37
39
  method: :delete,
38
- data: { confirm: t("administrate.actions.confirm") }
40
+ data: { turbo_confirm: t("administrate.actions.confirm") }
39
41
  ) if accessible_action?(page.resource, :destroy) %>
40
42
  </div>
43
+
44
+ <%= content_for(:header_last) %>
41
45
  </header>
42
46
 
43
- <section class="main-content__body">
44
- <dl>
45
- <% page.attributes.each do |title, attributes| %>
46
- <fieldset class="<%= "field-unit--nested" if title.present? %>">
47
- <% if title.present? %>
48
- <legend><%= t "helpers.label.#{page.resource_name}.#{title}", default: title %></legend>
49
- <% end %>
47
+ <%= content_for(:before_main) %>
48
+
49
+ <% if content_for?(:main) %>
50
+ <%= content_for(:main) %>
51
+ <% else %>
52
+ <section class="main-content__body">
53
+ <dl>
54
+ <% page.attributes.each do |title, attributes| %>
55
+ <fieldset class="<%= "field-unit--nested" if title.present? %>">
56
+ <% if title.present? %>
57
+ <legend><%= t "helpers.label.#{page.resource_name}.#{title}", default: title %></legend>
58
+ <% end %>
59
+
60
+ <% attributes.each do |attribute| %>
61
+ <dt class="attribute-label" id="<%= attribute.name %>">
62
+ <%= t(
63
+ "helpers.label.#{resource_name}.#{attribute.name}",
64
+ default: page.resource.class.human_attribute_name(attribute.name),
65
+ ) %>
66
+ </dt>
50
67
 
51
- <% attributes.each do |attribute| %>
52
- <dt class="attribute-label" id="<%= attribute.name %>">
53
- <%= t(
54
- "helpers.label.#{resource_name}.#{attribute.name}",
55
- default: page.resource.class.human_attribute_name(attribute.name),
56
- ) %>
57
- </dt>
68
+ <dd class="attribute-data attribute-data--<%=attribute.html_class%>"
69
+ ><%= render_field attribute, page: page %></dd>
70
+ <% end %>
71
+ </fieldset>
72
+ <% end %>
73
+ </dl>
74
+ </section>
75
+ <% end %>
58
76
 
59
- <dd class="attribute-data attribute-data--<%=attribute.html_class%>"
60
- ><%= render_field attribute, page: page %></dd>
61
- <% end %>
62
- </fieldset>
63
- <% end %>
64
- </dl>
65
- </section>
77
+ <%= content_for(:after_main) %>
@@ -17,10 +17,11 @@ that displays all possible records to associate with.
17
17
  %>
18
18
 
19
19
  <div class="field-unit__label">
20
- <%= f.label field.permitted_attribute %>
20
+ <%= f.label field.attribute, for: "#{f.object_name}_#{field.permitted_attribute}" %>
21
21
  </div>
22
22
  <div class="field-unit__field">
23
23
  <%= f.select(field.permitted_attribute,
24
24
  options_for_select(field.associated_resource_options, field.selected_option),
25
- include_blank: field.include_blank_option) %>
25
+ {include_blank: field.include_blank_option},
26
+ data: {controller: field.html_controller}) %>
26
27
  </div>
@@ -23,7 +23,7 @@ and is augmented with [Selectize].
23
23
  <%= f.label field.attribute, for: "#{f.object_name}_#{field.attribute_key}" %>
24
24
  </div>
25
25
  <div class="field-unit__field">
26
- <%= f.select(field.attribute_key, nil, {}, multiple: true) do %>
26
+ <%= f.select(field.attribute_key, nil, {}, multiple: true, data: {controller: field.html_controller}) do %>
27
27
  <%= options_for_select(field.associated_resource_options, field.selected_options) %>
28
28
  <% end %>
29
29
  </div>
@@ -22,7 +22,7 @@ This partial renders an input element for polymorphic relationships.
22
22
 
23
23
  <div class="field-unit__field">
24
24
  <%= pf.hidden_field(:type, value: field.class.name) %>
25
- <%= pf.select(:value) do %>
25
+ <%= pf.select(:value, {}, data: {controller: field.html_controller}) do %>
26
26
  <%= grouped_options_for_select(field.associated_resource_grouped_options, field.selected_global_id, prompt: true) %>
27
27
  <% end %>
28
28
  </div>
@@ -0,0 +1,6 @@
1
+ <div class="field-unit__label">
2
+ <%= f.label field.attribute %>
3
+ </div>
4
+ <div class="field-unit__field">
5
+ <%= f.rich_text_area(field.attribute) %>
6
+ </div>
@@ -0,0 +1,18 @@
1
+ <%#
2
+ # RichText Index Partial
3
+
4
+ This partial renders a rich_text attribute
5
+ to be displayed on a resource's index page.
6
+
7
+ By default, the attribute is rendered as a plain text truncated string.
8
+
9
+ ## Local variables:
10
+
11
+ - `field`:
12
+ An instance of [Administrate::Field::RichText][1].
13
+ A wrapper around the RichText pulled from the database.
14
+
15
+ [1]: http://www.rubydoc.info/gems/administrate/Administrate/Field/RichText
16
+ %>
17
+
18
+ <%= field.truncate %>
@@ -0,0 +1,18 @@
1
+ <%#
2
+ # RichText Show Partial
3
+
4
+ This partial renders a rich_text attribute,
5
+ to be displayed on a resource's show page.
6
+
7
+ By default, the attribute is rendered as HTML.
8
+
9
+ ## Local variables:
10
+
11
+ - `field`:
12
+ An instance of [Administrate::Field::RichText][1].
13
+ A wrapper around the RichText object pulled from the database.
14
+
15
+ [1]: http://www.rubydoc.info/gems/administrate/Administrate/Field/RichText
16
+ %>
17
+
18
+ <%= field.data %>
@@ -26,7 +26,8 @@ to be displayed on a resource's edit form page.
26
26
  field.selectable_options,
27
27
  field.data,
28
28
  ),
29
- include_blank: field.include_blank_option
29
+ {include_blank: field.include_blank_option},
30
+ data: {controller: field.html_controller}
30
31
  )
31
32
  %>
32
33
  </div>
@@ -18,5 +18,5 @@ This partial renders a textarea element for a text attribute.
18
18
  <%= f.label field.attribute %>
19
19
  </div>
20
20
  <div class="field-unit__field">
21
- <%= f.text_area field.attribute %>
21
+ <%= f.text_area field.attribute, field.options.fetch(:input_options, {}) %>
22
22
  </div>
@@ -24,6 +24,7 @@ By default, it renders:
24
24
  <%= render "stylesheet" %>
25
25
  <%= csrf_meta_tags %>
26
26
  <%= csp_meta_tag if defined?(csp_meta_tag) %>
27
+ <%= render "javascript" %>
27
28
  </head>
28
29
  <body>
29
30
  <%= render "icons" %>
@@ -36,7 +37,5 @@ By default, it renders:
36
37
  <%= yield %>
37
38
  </main>
38
39
  </div>
39
-
40
- <%= render "javascript" %>
41
40
  </body>
42
41
  </html>