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.
- checksums.yaml +4 -4
- data/Rakefile +9 -9
- data/app/assets/builds/administrate/application.css +2614 -0
- data/app/assets/builds/administrate/application.css.map +1 -0
- data/app/assets/builds/administrate/application.js +31661 -0
- data/app/assets/builds/administrate/application.js.map +7 -0
- data/app/assets/builds/administrate-internal/docs.css +102 -0
- data/app/assets/builds/administrate-internal/docs.css.map +1 -0
- data/app/assets/config/administrate_manifest.js +2 -0
- data/app/assets/javascripts/administrate/add_jquery.js +4 -0
- data/app/assets/javascripts/administrate/application.js +9 -4
- data/app/assets/javascripts/administrate/controllers/application.js +9 -0
- data/app/assets/javascripts/administrate/controllers/index.js +9 -0
- data/app/assets/javascripts/administrate/controllers/select_controller.js +25 -0
- data/app/assets/javascripts/administrate/{components/table.js → controllers/table_controller.js} +9 -9
- data/app/assets/javascripts/administrate/controllers/tooltip_controller.js +24 -0
- data/app/assets/javascripts/administrate/vendor/css-anchor-positioning.js +9310 -0
- data/app/assets/stylesheets/administrate/application.scss +3 -3
- data/app/assets/stylesheets/administrate/base/_forms.scss +4 -4
- data/app/assets/stylesheets/administrate/base/_layout.scss +5 -0
- data/app/assets/stylesheets/administrate/base/_tables.scss +1 -1
- data/app/assets/stylesheets/administrate/base/_typography.scss +15 -1
- data/app/assets/stylesheets/administrate/components/_attributes.scss +1 -0
- data/app/assets/stylesheets/administrate/components/_buttons.scss +37 -12
- data/app/assets/stylesheets/administrate/components/_cells.scss +26 -19
- data/app/assets/stylesheets/administrate/components/_field-unit.scss +3 -3
- data/app/assets/stylesheets/administrate/components/_main-content.scss +1 -1
- data/app/assets/stylesheets/administrate/components/_navigation.scss +3 -3
- data/app/assets/stylesheets/administrate/components/_search.scss +55 -14
- data/app/assets/stylesheets/administrate/library/_variables.scss +7 -3
- data/app/assets/stylesheets/administrate/reset/_normalize.scss +7 -1
- data/app/assets/stylesheets/{docs.scss → administrate-internal/docs.scss} +25 -23
- data/app/controllers/administrate/application_controller.rb +27 -39
- data/app/controllers/concerns/administrate/punditize.rb +4 -12
- data/app/helpers/administrate/application_helper.rb +13 -5
- data/app/views/administrate/application/_collection.html.erb +30 -20
- data/app/views/administrate/application/_collection_header_actions.html.erb +1 -1
- data/app/views/administrate/application/_collection_item_actions.html.erb +4 -4
- data/app/views/administrate/application/_form.html.erb +1 -1
- data/app/views/administrate/application/_icons.html.erb +14 -6
- data/app/views/administrate/application/_index_header.html.erb +23 -0
- data/app/views/administrate/application/_javascript.html.erb +1 -1
- data/app/views/administrate/application/edit.html.erb +15 -3
- data/app/views/administrate/application/index.html.erb +20 -11
- data/app/views/administrate/application/new.html.erb +16 -4
- data/app/views/administrate/application/show.html.erb +35 -23
- data/app/views/fields/belongs_to/_form.html.erb +3 -2
- data/app/views/fields/has_many/_form.html.erb +2 -2
- data/app/views/fields/has_one/_form.html.erb +6 -0
- data/app/views/fields/polymorphic/_form.html.erb +1 -1
- data/app/views/fields/rich_text/_form.html.erb +22 -0
- data/app/views/fields/rich_text/_index.html.erb +18 -0
- data/app/views/fields/rich_text/_show.html.erb +18 -0
- data/app/views/fields/select/_form.html.erb +2 -1
- data/app/views/fields/text/_form.html.erb +1 -1
- data/app/views/layouts/administrate/application.html.erb +1 -2
- data/docs/customizing_dashboards.md +214 -11
- data/docs/customizing_page_views.md +47 -0
- data/docs/guides/scoping_has_many_relations.md +2 -2
- data/docs/guides/switching_templates_with_view_variants.md +45 -0
- data/docs/guides.md +1 -0
- data/docs/migrating-to-v1.md +34 -0
- data/lib/administrate/base_dashboard.rb +6 -11
- data/lib/administrate/engine.rb +7 -6
- data/lib/administrate/field/associative.rb +8 -23
- data/lib/administrate/field/base.rb +40 -5
- data/lib/administrate/field/belongs_to.rb +8 -8
- data/lib/administrate/field/date.rb +6 -2
- data/lib/administrate/field/date_time.rb +3 -4
- data/lib/administrate/field/deferred.rb +14 -18
- data/lib/administrate/field/has_many.rb +25 -6
- data/lib/administrate/field/has_one.rb +11 -15
- data/lib/administrate/field/number.rb +2 -2
- data/lib/administrate/field/password.rb +4 -0
- data/lib/administrate/field/polymorphic.rb +4 -4
- data/lib/administrate/field/rich_text.rb +21 -0
- data/lib/administrate/field/select.rb +4 -0
- data/lib/administrate/field/time.rb +5 -4
- data/lib/administrate/generator_helpers.rb +1 -1
- data/lib/administrate/namespace/resource.rb +1 -1
- data/lib/administrate/namespace.rb +10 -10
- data/lib/administrate/order.rb +37 -33
- data/lib/administrate/page/base.rb +2 -7
- data/lib/administrate/page/collection.rb +2 -2
- data/lib/administrate/page/form.rb +1 -1
- data/lib/administrate/page/show.rb +1 -1
- data/lib/administrate/resource_resolver.rb +1 -1
- data/lib/administrate/search.rb +14 -16
- data/lib/administrate/version.rb +1 -1
- data/lib/administrate/view_generator.rb +4 -3
- data/lib/administrate.rb +0 -38
- data/lib/generators/administrate/dashboard/dashboard_generator.rb +12 -9
- data/lib/generators/administrate/field/field_generator.rb +2 -2
- data/lib/generators/administrate/install/install_generator.rb +3 -2
- data/lib/generators/administrate/routes/routes_generator.rb +6 -5
- data/lib/generators/administrate/views/field_generator.rb +2 -2
- data/lib/generators/administrate/views/index_generator.rb +5 -0
- data/lib/generators/administrate/views/layout_generator.rb +1 -1
- metadata +35 -76
- data/app/assets/javascripts/administrate/components/associative.js +0 -5
- data/app/assets/javascripts/administrate/components/select.js +0 -3
- data/app/assets/stylesheets/administrate/utilities/_text-color.scss +0 -3
- data/lib/generators/administrate/assets/assets_generator.rb +0 -12
- data/lib/generators/administrate/assets/javascripts_generator.rb +0 -17
- 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"]}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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 "./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
|
+
};
|
data/app/assets/javascripts/administrate/{components/table.js → controllers/table_controller.js}
RENAMED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { Controller } from "@hotwired/stimulus";
|
|
2
|
+
import $ from "jquery";
|
|
3
3
|
|
|
4
|
-
|
|
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
|
-
|
|
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
|
+
|