administrate 0.20.1 → 1.0.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 (105) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +9 -9
  3. data/app/assets/builds/administrate/application.css +2614 -0
  4. data/app/assets/builds/administrate/application.css.map +1 -0
  5. data/app/assets/builds/administrate/application.js +31661 -0
  6. data/app/assets/builds/administrate/application.js.map +7 -0
  7. data/app/assets/builds/administrate-internal/docs.css +102 -0
  8. data/app/assets/builds/administrate-internal/docs.css.map +1 -0
  9. data/app/assets/config/administrate_manifest.js +2 -0
  10. data/app/assets/javascripts/administrate/add_jquery.js +4 -0
  11. data/app/assets/javascripts/administrate/application.js +9 -4
  12. data/app/assets/javascripts/administrate/controllers/application.js +9 -0
  13. data/app/assets/javascripts/administrate/controllers/index.js +9 -0
  14. data/app/assets/javascripts/administrate/controllers/select_controller.js +25 -0
  15. data/app/assets/javascripts/administrate/{components/table.js → controllers/table_controller.js} +9 -9
  16. data/app/assets/javascripts/administrate/controllers/tooltip_controller.js +24 -0
  17. data/app/assets/javascripts/administrate/vendor/css-anchor-positioning.js +9310 -0
  18. data/app/assets/stylesheets/administrate/application.scss +3 -3
  19. data/app/assets/stylesheets/administrate/base/_forms.scss +4 -4
  20. data/app/assets/stylesheets/administrate/base/_layout.scss +5 -0
  21. data/app/assets/stylesheets/administrate/base/_tables.scss +1 -1
  22. data/app/assets/stylesheets/administrate/base/_typography.scss +15 -1
  23. data/app/assets/stylesheets/administrate/components/_attributes.scss +1 -0
  24. data/app/assets/stylesheets/administrate/components/_buttons.scss +37 -12
  25. data/app/assets/stylesheets/administrate/components/_cells.scss +26 -19
  26. data/app/assets/stylesheets/administrate/components/_field-unit.scss +3 -3
  27. data/app/assets/stylesheets/administrate/components/_main-content.scss +1 -1
  28. data/app/assets/stylesheets/administrate/components/_navigation.scss +3 -3
  29. data/app/assets/stylesheets/administrate/components/_search.scss +55 -14
  30. data/app/assets/stylesheets/administrate/library/_variables.scss +7 -3
  31. data/app/assets/stylesheets/administrate/reset/_normalize.scss +7 -1
  32. data/app/assets/stylesheets/{docs.scss → administrate-internal/docs.scss} +25 -23
  33. data/app/controllers/administrate/application_controller.rb +27 -39
  34. data/app/controllers/concerns/administrate/punditize.rb +4 -12
  35. data/app/helpers/administrate/application_helper.rb +13 -5
  36. data/app/views/administrate/application/_collection.html.erb +30 -20
  37. data/app/views/administrate/application/_collection_header_actions.html.erb +1 -1
  38. data/app/views/administrate/application/_collection_item_actions.html.erb +4 -4
  39. data/app/views/administrate/application/_form.html.erb +1 -1
  40. data/app/views/administrate/application/_icons.html.erb +14 -6
  41. data/app/views/administrate/application/_index_header.html.erb +23 -0
  42. data/app/views/administrate/application/_javascript.html.erb +1 -1
  43. data/app/views/administrate/application/edit.html.erb +15 -3
  44. data/app/views/administrate/application/index.html.erb +20 -11
  45. data/app/views/administrate/application/new.html.erb +16 -4
  46. data/app/views/administrate/application/show.html.erb +35 -23
  47. data/app/views/fields/belongs_to/_form.html.erb +3 -2
  48. data/app/views/fields/has_many/_form.html.erb +2 -2
  49. data/app/views/fields/has_one/_form.html.erb +6 -0
  50. data/app/views/fields/polymorphic/_form.html.erb +1 -1
  51. data/app/views/fields/rich_text/_form.html.erb +22 -0
  52. data/app/views/fields/rich_text/_index.html.erb +18 -0
  53. data/app/views/fields/rich_text/_show.html.erb +18 -0
  54. data/app/views/fields/select/_form.html.erb +2 -1
  55. data/app/views/fields/text/_form.html.erb +1 -1
  56. data/app/views/layouts/administrate/application.html.erb +1 -2
  57. data/docs/customizing_dashboards.md +214 -11
  58. data/docs/customizing_page_views.md +47 -0
  59. data/docs/guides/scoping_has_many_relations.md +2 -2
  60. data/docs/guides/switching_templates_with_view_variants.md +45 -0
  61. data/docs/guides.md +1 -0
  62. data/docs/migrating-to-v1.md +34 -0
  63. data/lib/administrate/base_dashboard.rb +6 -11
  64. data/lib/administrate/engine.rb +7 -6
  65. data/lib/administrate/field/associative.rb +8 -23
  66. data/lib/administrate/field/base.rb +40 -5
  67. data/lib/administrate/field/belongs_to.rb +8 -8
  68. data/lib/administrate/field/date.rb +6 -2
  69. data/lib/administrate/field/date_time.rb +3 -4
  70. data/lib/administrate/field/deferred.rb +14 -18
  71. data/lib/administrate/field/has_many.rb +25 -6
  72. data/lib/administrate/field/has_one.rb +11 -15
  73. data/lib/administrate/field/number.rb +2 -2
  74. data/lib/administrate/field/password.rb +4 -0
  75. data/lib/administrate/field/polymorphic.rb +4 -4
  76. data/lib/administrate/field/rich_text.rb +21 -0
  77. data/lib/administrate/field/select.rb +4 -0
  78. data/lib/administrate/field/time.rb +5 -4
  79. data/lib/administrate/generator_helpers.rb +1 -1
  80. data/lib/administrate/namespace/resource.rb +1 -1
  81. data/lib/administrate/namespace.rb +10 -10
  82. data/lib/administrate/order.rb +37 -33
  83. data/lib/administrate/page/base.rb +2 -7
  84. data/lib/administrate/page/collection.rb +2 -2
  85. data/lib/administrate/page/form.rb +1 -1
  86. data/lib/administrate/page/show.rb +1 -1
  87. data/lib/administrate/resource_resolver.rb +1 -1
  88. data/lib/administrate/search.rb +14 -16
  89. data/lib/administrate/version.rb +1 -1
  90. data/lib/administrate/view_generator.rb +4 -3
  91. data/lib/administrate.rb +0 -38
  92. data/lib/generators/administrate/dashboard/dashboard_generator.rb +12 -9
  93. data/lib/generators/administrate/field/field_generator.rb +2 -2
  94. data/lib/generators/administrate/install/install_generator.rb +3 -2
  95. data/lib/generators/administrate/routes/routes_generator.rb +6 -5
  96. data/lib/generators/administrate/views/field_generator.rb +2 -2
  97. data/lib/generators/administrate/views/index_generator.rb +5 -0
  98. data/lib/generators/administrate/views/layout_generator.rb +1 -1
  99. metadata +35 -76
  100. data/app/assets/javascripts/administrate/components/associative.js +0 -5
  101. data/app/assets/javascripts/administrate/components/select.js +0 -3
  102. data/app/assets/stylesheets/administrate/utilities/_text-color.scss +0 -3
  103. data/lib/generators/administrate/assets/assets_generator.rb +0 -12
  104. data/lib/generators/administrate/assets/javascripts_generator.rb +0 -17
  105. data/lib/generators/administrate/assets/stylesheets_generator.rb +0 -17
@@ -0,0 +1,102 @@
1
+ :root {
2
+ --blue: #53adc6;
3
+ --red: #cf726e;
4
+ --green: #5bc89e;
5
+ --white: #f0f0f0;
6
+ --code-black: #202020;
7
+ --code-white: #e0e0dc;
8
+ --code-green: #b0bf82;
9
+ --code-blue: #8fbdcc;
10
+ --code-yellow: #f8d29d;
11
+ --code-red: #b95c56;
12
+ }
13
+
14
+ html,
15
+ body {
16
+ font-family: "Lato", serif;
17
+ font-size: 18px;
18
+ line-height: 1.62em;
19
+ margin: 0;
20
+ }
21
+
22
+ img {
23
+ max-width: 100%;
24
+ }
25
+
26
+ h1,
27
+ h2,
28
+ h3 {
29
+ font-family: "Fjalla One", sans-serif;
30
+ margin-top: 2em;
31
+ }
32
+
33
+ a {
34
+ color: var(--blue);
35
+ text-decoration: none;
36
+ }
37
+
38
+ .content {
39
+ margin-bottom: 2em;
40
+ margin-left: auto;
41
+ margin-right: auto;
42
+ margin-top: 2em;
43
+ width: 60em;
44
+ }
45
+ .content .sidebar {
46
+ float: left;
47
+ width: 20em;
48
+ }
49
+ .content .sidebar-links {
50
+ list-style: none;
51
+ padding-left: 0;
52
+ }
53
+ .content .main {
54
+ float: right;
55
+ width: 40em;
56
+ }
57
+
58
+ .flash-wrapper {
59
+ background-color: var(--red);
60
+ color: var(--white);
61
+ padding: 1em;
62
+ }
63
+ .flash-wrapper .flash {
64
+ margin-left: auto;
65
+ margin-right: auto;
66
+ width: 40em;
67
+ }
68
+
69
+ code {
70
+ font-family: "Source Code Pro";
71
+ font-size: 0.8rem;
72
+ padding: 0.4em 0.2em 0;
73
+ }
74
+ code.hljs {
75
+ background-color: var(--code-black);
76
+ color: var(--code-white);
77
+ padding-left: 1rem;
78
+ }
79
+ code.hljs .hljs-string {
80
+ color: var(--code-green);
81
+ }
82
+ code.hljs .hljs-subst {
83
+ color: var(--code-white);
84
+ }
85
+ code.hljs .hljs-constant {
86
+ color: var(--code-blue);
87
+ }
88
+ code.hljs .hljs-symbol {
89
+ color: var(--code-red);
90
+ }
91
+ code.hljs .hljs-keyword {
92
+ color: var(--code-yellow);
93
+ }
94
+ code.hljs .hljs-title,
95
+ code.hljs .hljs-parent {
96
+ color: var(--code-blue);
97
+ }
98
+ code.hljs .hljs-tag {
99
+ color: var(--code-yellow);
100
+ }
101
+
102
+ /*# sourceMappingURL=docs.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../../stylesheets/administrate-internal/docs.scss"],"names":[],"mappings":"AAAA;EACE;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;AAAA;AAAA;EAGE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AAIJ;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAEA;EAAe;;AACf;EAAc;;AACd;EAAiB;;AACjB;EAAe;;AACf;EAAgB;;AAEhB;AAAA;EACe;;AAEf;EAAY","file":"docs.css","sourcesContent":[":root {\n --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}\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: var(--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: var(--red);\n color: var(--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: var(--code-black);\n color: var(--code-white);\n padding-left: 1rem;\n\n .hljs-string { color: var(--code-green); }\n .hljs-subst { color: var(--code-white); }\n .hljs-constant { color: var(--code-blue); }\n .hljs-symbol { color: var(--code-red); }\n .hljs-keyword { color: var(--code-yellow); }\n\n .hljs-title,\n .hljs-parent { color: var(--code-blue); }\n\n .hljs-tag { color: var(--code-yellow); }\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ //= link_tree ../images
2
+ //= link_tree ../builds
@@ -0,0 +1,4 @@
1
+ import jquery from "jquery";
2
+
3
+ window.jQuery = jquery;
4
+ window.$ = jquery;
@@ -1,4 +1,9 @@
1
- //= require jquery
2
- //= require jquery_ujs
3
- //= require selectize
4
- //= require_tree .
1
+ import "./add_jquery";
2
+ import "trix";
3
+ import "@rails/actiontext";
4
+
5
+ import "@hotwired/turbo-rails";
6
+ import "selectize/dist/js/selectize.min.js";
7
+
8
+ import "./controllers";
9
+ import "./vendor/css-anchor-positioning";
@@ -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,9 @@
1
+ import { application } from "./application";
2
+
3
+ import SelectController from "./select_controller";
4
+ import TableController from "./table_controller";
5
+ import TooltipController from "./tooltip_controller";
6
+
7
+ application.register("select", SelectController);
8
+ application.register("table", TableController);
9
+ application.register("tooltip", TooltipController);
@@ -0,0 +1,25 @@
1
+ import { Controller } from "@hotwired/stimulus";
2
+ import $ from "jquery";
3
+
4
+ export default class extends Controller {
5
+ connect() {
6
+ if (!this.selectize) {
7
+ const options = this.selectizeOptions || {};
8
+ const selectedValues = $(this.element).val();
9
+ this.selectize = $(this.element).selectize(options)[0].selectize;
10
+ this.selectize.setValue(selectedValues);
11
+ }
12
+ }
13
+
14
+ disconnect() {
15
+ if (this.selectize) {
16
+ const selectedValues = this.selectize.getValue();
17
+ if (!this.selectizeOptions) {
18
+ this.selectizeOptions = this.selectize.settings;
19
+ }
20
+ this.selectize.destroy();
21
+ this.selectize = null;
22
+ $(this.element).val(selectedValues);
23
+ }
24
+ }
25
+ };
@@ -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
+ };
@@ -0,0 +1,24 @@
1
+ import { Controller } from "@hotwired/stimulus";
2
+
3
+ export default class extends Controller {
4
+ static targets = ["popover", "tooltip"];
5
+
6
+ connect() {
7
+ this.tooltipTarget.addEventListener("mouseenter", this.showPopover);
8
+ this.tooltipTarget.addEventListener("mouseleave", this.hidePopover);
9
+ }
10
+
11
+ disconnect() {
12
+ this.tooltipTarget.removeEventListener("mouseenter", this.showPopover);
13
+ this.tooltipTarget.removeEventListener("mouseleave", this.hidePopover);
14
+ }
15
+
16
+ showPopover = () => {
17
+ this.popoverTarget.showPopover();
18
+ }
19
+
20
+ hidePopover = () => {
21
+ this.popoverTarget.hidePopover();
22
+ }
23
+ };
24
+