administrate 0.20.1 → 1.0.0.beta2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +9 -9
- data/app/assets/builds/administrate/application.css +2542 -0
- data/app/assets/builds/administrate/application.css.map +1 -0
- data/app/assets/builds/administrate/application.js +22169 -0
- data/app/assets/builds/administrate/application.js.map +7 -0
- data/app/assets/builds/administrate-internal/docs.css +89 -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 +8 -4
- data/app/assets/javascripts/administrate/controllers/application.js +9 -0
- data/app/assets/javascripts/administrate/controllers/index.js +7 -0
- data/app/assets/javascripts/administrate/controllers/select_controller.js +8 -0
- data/app/assets/javascripts/administrate/{components/table.js → controllers/table_controller.js} +9 -9
- 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 +12 -1
- data/app/assets/stylesheets/administrate/components/_attributes.scss +1 -0
- data/app/assets/stylesheets/administrate/components/_buttons.scss +12 -12
- data/app/assets/stylesheets/administrate/components/_cells.scss +19 -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 +11 -11
- data/app/assets/stylesheets/administrate/library/_variables.scss +7 -3
- data/app/assets/stylesheets/administrate/reset/_normalize.scss +7 -1
- data/app/controllers/administrate/application_controller.rb +20 -19
- data/app/controllers/concerns/administrate/punditize.rb +5 -5
- data/app/helpers/administrate/application_helper.rb +4 -4
- data/app/views/administrate/application/_collection.html.erb +1 -1
- data/app/views/administrate/application/_collection_item_actions.html.erb +3 -3
- data/app/views/administrate/application/_index_header.html.erb +4 -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 +19 -11
- data/app/views/administrate/application/new.html.erb +15 -3
- 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 +1 -1
- data/app/views/fields/polymorphic/_form.html.erb +1 -1
- data/app/views/fields/rich_text/_form.html.erb +6 -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 +138 -4
- data/docs/customizing_page_views.md +25 -0
- data/lib/administrate/base_dashboard.rb +6 -5
- data/lib/administrate/engine.rb +7 -6
- data/lib/administrate/field/associative.rb +5 -1
- data/lib/administrate/field/base.rb +21 -3
- data/lib/administrate/field/belongs_to.rb +7 -2
- data/lib/administrate/field/date.rb +1 -1
- data/lib/administrate/field/date_time.rb +2 -2
- data/lib/administrate/field/deferred.rb +10 -2
- data/lib/administrate/field/has_many.rb +5 -5
- data/lib/administrate/field/has_one.rb +10 -6
- data/lib/administrate/field/number.rb +2 -2
- data/lib/administrate/field/polymorphic.rb +3 -3
- data/lib/administrate/field/rich_text.rb +21 -0
- data/lib/administrate/field/select.rb +4 -0
- data/lib/administrate/generator_helpers.rb +1 -1
- data/lib/administrate/namespace/resource.rb +1 -1
- data/lib/administrate/order.rb +30 -26
- 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 +6 -7
- data/lib/administrate/version.rb +1 -1
- data/lib/administrate/view_generator.rb +3 -3
- data/lib/administrate.rb +18 -18
- 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 +2 -2
- data/lib/generators/administrate/routes/routes_generator.rb +5 -5
- data/lib/generators/administrate/views/field_generator.rb +2 -2
- data/lib/generators/administrate/views/index_generator.rb +1 -0
- data/lib/generators/administrate/views/layout_generator.rb +1 -1
- metadata +20 -53
- 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
- /data/app/assets/stylesheets/{docs.scss → administrate-internal/docs.scss} +0 -0
@@ -0,0 +1,89 @@
|
|
1
|
+
html,
|
2
|
+
body {
|
3
|
+
font-family: "Lato", serif;
|
4
|
+
font-size: 18px;
|
5
|
+
line-height: 1.62em;
|
6
|
+
margin: 0;
|
7
|
+
}
|
8
|
+
|
9
|
+
img {
|
10
|
+
max-width: 100%;
|
11
|
+
}
|
12
|
+
|
13
|
+
h1,
|
14
|
+
h2,
|
15
|
+
h3 {
|
16
|
+
font-family: "Fjalla One", sans-serif;
|
17
|
+
margin-top: 2em;
|
18
|
+
}
|
19
|
+
|
20
|
+
a {
|
21
|
+
color: #53adc6;
|
22
|
+
text-decoration: none;
|
23
|
+
}
|
24
|
+
|
25
|
+
.content {
|
26
|
+
margin-bottom: 2em;
|
27
|
+
margin-left: auto;
|
28
|
+
margin-right: auto;
|
29
|
+
margin-top: 2em;
|
30
|
+
width: 60em;
|
31
|
+
}
|
32
|
+
.content .sidebar {
|
33
|
+
float: left;
|
34
|
+
width: 20em;
|
35
|
+
}
|
36
|
+
.content .sidebar-links {
|
37
|
+
list-style: none;
|
38
|
+
padding-left: 0;
|
39
|
+
}
|
40
|
+
.content .main {
|
41
|
+
float: right;
|
42
|
+
width: 40em;
|
43
|
+
}
|
44
|
+
|
45
|
+
.flash-wrapper {
|
46
|
+
background-color: #cf726e;
|
47
|
+
color: #f0f0f0;
|
48
|
+
padding: 1em;
|
49
|
+
}
|
50
|
+
.flash-wrapper .flash {
|
51
|
+
margin-left: auto;
|
52
|
+
margin-right: auto;
|
53
|
+
width: 40em;
|
54
|
+
}
|
55
|
+
|
56
|
+
code {
|
57
|
+
font-family: "Source Code Pro";
|
58
|
+
font-size: 0.8rem;
|
59
|
+
padding: 0.4em 0.2em 0;
|
60
|
+
}
|
61
|
+
code.hljs {
|
62
|
+
background-color: #202020;
|
63
|
+
color: #e0e0dc;
|
64
|
+
padding-left: 1rem;
|
65
|
+
}
|
66
|
+
code.hljs .hljs-string {
|
67
|
+
color: #b0bf82;
|
68
|
+
}
|
69
|
+
code.hljs .hljs-subst {
|
70
|
+
color: #e0e0dc;
|
71
|
+
}
|
72
|
+
code.hljs .hljs-constant {
|
73
|
+
color: #8fbdcc;
|
74
|
+
}
|
75
|
+
code.hljs .hljs-symbol {
|
76
|
+
color: #b95c56;
|
77
|
+
}
|
78
|
+
code.hljs .hljs-keyword {
|
79
|
+
color: #f8d29d;
|
80
|
+
}
|
81
|
+
code.hljs .hljs-title,
|
82
|
+
code.hljs .hljs-parent {
|
83
|
+
color: #8fbdcc;
|
84
|
+
}
|
85
|
+
code.hljs .hljs-tag {
|
86
|
+
color: #f8d29d;
|
87
|
+
}
|
88
|
+
|
89
|
+
/*# sourceMappingURL=docs.css.map */
|
@@ -0,0 +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","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,4 +1,8 @@
|
|
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";
|
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
|
+
};
|
@@ -2,7 +2,9 @@
|
|
2
2
|
|
3
3
|
@import "reset/normalize";
|
4
4
|
|
5
|
-
@import "
|
5
|
+
@import "trix/dist/trix";
|
6
|
+
@import "selectize/dist/css/selectize";
|
7
|
+
@import "selectize/dist/css/selectize.default";
|
6
8
|
|
7
9
|
@import "library/clearfix";
|
8
10
|
@import "library/data-label";
|
@@ -25,5 +27,3 @@
|
|
25
27
|
@import "components/navigation";
|
26
28
|
@import "components/pagination";
|
27
29
|
@import "components/search";
|
28
|
-
|
29
|
-
@import "utilities/text-color";
|
@@ -32,6 +32,10 @@ textarea {
|
|
32
32
|
font-size: 16px;
|
33
33
|
}
|
34
34
|
|
35
|
+
textarea {
|
36
|
+
resize: vertical;
|
37
|
+
}
|
38
|
+
|
35
39
|
[type="color"],
|
36
40
|
[type="date"],
|
37
41
|
[type="datetime-local"],
|
@@ -78,10 +82,6 @@ textarea {
|
|
78
82
|
}
|
79
83
|
}
|
80
84
|
|
81
|
-
textarea {
|
82
|
-
resize: vertical;
|
83
|
-
}
|
84
|
-
|
85
85
|
[type="checkbox"],
|
86
86
|
[type="radio"] {
|
87
87
|
display: inline;
|
@@ -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,7 +1,7 @@
|
|
1
1
|
button,
|
2
|
-
|
3
|
-
|
4
|
-
|
2
|
+
[type="button"],
|
3
|
+
[type="reset"],
|
4
|
+
[type="submit"],
|
5
5
|
.button {
|
6
6
|
appearance: none;
|
7
7
|
background-color: $action-color;
|
@@ -22,23 +22,23 @@ input[type="submit"],
|
|
22
22
|
vertical-align: middle;
|
23
23
|
white-space: nowrap;
|
24
24
|
|
25
|
-
&:
|
25
|
+
&:disabled {
|
26
|
+
cursor: not-allowed;
|
27
|
+
opacity: 0.5;
|
28
|
+
}
|
29
|
+
|
30
|
+
&:not(.link):hover {
|
26
31
|
background-color: mix($black, $action-color, 20%);
|
27
32
|
color: $white;
|
28
33
|
}
|
29
34
|
|
30
|
-
&:focus {
|
35
|
+
&:not(.link):focus {
|
31
36
|
outline: $focus-outline;
|
32
37
|
outline-offset: $focus-outline-offset;
|
33
38
|
}
|
34
39
|
|
35
|
-
&:disabled {
|
36
|
-
|
37
|
-
opacity: 0.5;
|
38
|
-
|
39
|
-
&:hover {
|
40
|
-
background-color: $action-color;
|
41
|
-
}
|
40
|
+
&:not(.link):disabled:hover {
|
41
|
+
background-color: $action-color;
|
42
42
|
}
|
43
43
|
}
|
44
44
|
|
@@ -1,6 +1,25 @@
|
|
1
|
+
.cell-label__sort-indicator {
|
2
|
+
float: right;
|
3
|
+
margin-left: 5px;
|
4
|
+
|
5
|
+
svg {
|
6
|
+
fill: $hint-grey;
|
7
|
+
height: 13px;
|
8
|
+
transition: transform $base-duration $base-timing;
|
9
|
+
width: 13px;
|
10
|
+
}
|
11
|
+
}
|
12
|
+
|
1
13
|
.cell-label {
|
2
14
|
padding-top: 0.15em;
|
3
15
|
|
16
|
+
a {
|
17
|
+
color: inherit;
|
18
|
+
display: inline-block;
|
19
|
+
transition: color $base-duration $base-timing;
|
20
|
+
width: 100%;
|
21
|
+
}
|
22
|
+
|
4
23
|
&:hover {
|
5
24
|
a {
|
6
25
|
color: $action-color;
|
@@ -11,13 +30,6 @@
|
|
11
30
|
transform: rotate(180deg);
|
12
31
|
}
|
13
32
|
}
|
14
|
-
|
15
|
-
a {
|
16
|
-
color: inherit;
|
17
|
-
display: inline-block;
|
18
|
-
transition: color $base-duration $base-timing;
|
19
|
-
width: 100%;
|
20
|
-
}
|
21
33
|
}
|
22
34
|
|
23
35
|
.cell-label--asc,
|
@@ -25,18 +37,6 @@
|
|
25
37
|
font-weight: $bold-font-weight;
|
26
38
|
}
|
27
39
|
|
28
|
-
.cell-label__sort-indicator {
|
29
|
-
float: right;
|
30
|
-
margin-left: 5px;
|
31
|
-
|
32
|
-
svg {
|
33
|
-
fill: $hint-grey;
|
34
|
-
height: 13px;
|
35
|
-
transition: transform $base-duration $base-timing;
|
36
|
-
width: 13px;
|
37
|
-
}
|
38
|
-
}
|
39
|
-
|
40
40
|
.cell-label__sort-indicator--desc {
|
41
41
|
transform: rotate(180deg);
|
42
42
|
}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
.field-unit {
|
2
2
|
@include administrate-clearfix;
|
3
|
+
|
3
4
|
align-items: center;
|
4
5
|
display: flex;
|
5
6
|
flex-wrap: wrap;
|
@@ -16,10 +17,9 @@
|
|
16
17
|
}
|
17
18
|
|
18
19
|
.field-unit__field {
|
20
|
+
flex-grow: 1;
|
19
21
|
float: left;
|
20
22
|
margin-left: 2rem;
|
21
|
-
max-width: 50rem;
|
22
|
-
width: 100%;
|
23
23
|
|
24
24
|
.optgroup-header {
|
25
25
|
font-weight: $bold-font-weight;
|
@@ -40,7 +40,7 @@
|
|
40
40
|
width: 100%;
|
41
41
|
|
42
42
|
.field-unit__field {
|
43
|
-
|
43
|
+
flex-grow: 1;
|
44
44
|
}
|
45
45
|
|
46
46
|
.field-unit__label {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
$
|
1
|
+
$navigation-link-padding: 0.6em;
|
2
2
|
|
3
3
|
.navigation {
|
4
4
|
flex: 1 0 10rem;
|
@@ -11,8 +11,8 @@ $_navigation-link-padding: 0.6em;
|
|
11
11
|
color: $base-font-color;
|
12
12
|
display: block;
|
13
13
|
line-height: 1;
|
14
|
-
margin-left: -($
|
15
|
-
padding: $
|
14
|
+
margin-left: -($navigation-link-padding);
|
15
|
+
padding: $navigation-link-padding;
|
16
16
|
transition: background-color $base-duration $base-timing,
|
17
17
|
color $base-duration $base-timing;
|
18
18
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
$
|
1
|
+
$search-icon-size: 1rem;
|
2
2
|
|
3
3
|
.search {
|
4
4
|
margin-left: auto;
|
@@ -10,35 +10,35 @@ $_search-icon-size: 1rem;
|
|
10
10
|
|
11
11
|
.search__input {
|
12
12
|
border-radius: 100rem;
|
13
|
-
padding-left: $
|
14
|
-
padding-right: $
|
13
|
+
padding-left: $search-icon-size * 2.5;
|
14
|
+
padding-right: $search-icon-size * 2.5;
|
15
15
|
}
|
16
16
|
|
17
17
|
.search__eyeglass-icon {
|
18
18
|
fill: $grey-7;
|
19
|
-
height: $
|
20
|
-
left: $
|
19
|
+
height: $search-icon-size;
|
20
|
+
left: $search-icon-size;
|
21
21
|
position: absolute;
|
22
22
|
top: 50%;
|
23
23
|
transform: translateY(-50%);
|
24
|
-
width: $
|
24
|
+
width: $search-icon-size;
|
25
25
|
}
|
26
26
|
|
27
27
|
.search__clear-link {
|
28
|
-
height: $
|
28
|
+
height: $search-icon-size;
|
29
29
|
position: absolute;
|
30
|
-
right: $
|
30
|
+
right: $search-icon-size * 0.75;
|
31
31
|
top: 50%;
|
32
32
|
transform: translateY(-50%);
|
33
|
-
width: $
|
33
|
+
width: $search-icon-size;
|
34
34
|
}
|
35
35
|
|
36
36
|
.search__clear-icon {
|
37
37
|
fill: $grey-5;
|
38
|
-
height: $
|
38
|
+
height: $search-icon-size;
|
39
39
|
position: absolute;
|
40
40
|
transition: fill $base-duration $base-timing;
|
41
|
-
width: $
|
41
|
+
width: $search-icon-size;
|
42
42
|
|
43
43
|
&:hover {
|
44
44
|
fill: $action-color;
|
@@ -1,5 +1,7 @@
|
|
1
|
+
/* stylelint-disable scss/dollar-variable-empty-line-before */
|
2
|
+
|
1
3
|
// Typography
|
2
|
-
$base-font-family: -apple-system,
|
4
|
+
$base-font-family: -apple-system, blinkmacsystemfont, "Segoe UI", "Roboto",
|
3
5
|
"Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
|
4
6
|
sans-serif !default;
|
5
7
|
$heading-font-family: $base-font-family !default;
|
@@ -17,8 +19,8 @@ $base-spacing: $base-line-height * 1em !default;
|
|
17
19
|
$small-spacing: $base-spacing * 0.5 !default;
|
18
20
|
|
19
21
|
// Colors
|
20
|
-
$white: #
|
21
|
-
$black: #
|
22
|
+
$white: #ffffff !default;
|
23
|
+
$black: #000000 !default;
|
22
24
|
|
23
25
|
$blue: #1976d2 !default;
|
24
26
|
$red: #d32f2f !default;
|
@@ -63,3 +65,5 @@ $base-border: 1px solid $base-border-color !default;
|
|
63
65
|
// Transitions
|
64
66
|
$base-duration: 250ms !default;
|
65
67
|
$base-timing: ease-in-out !default;
|
68
|
+
|
69
|
+
/* stylelint-enable scss/dollar-variable-empty-line-before */
|
@@ -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
|
}
|
@@ -15,13 +15,13 @@ module Administrate
|
|
15
15
|
resources: resources,
|
16
16
|
search_term: search_term,
|
17
17
|
page: page,
|
18
|
-
show_search_bar: show_search_bar
|
18
|
+
show_search_bar: show_search_bar?
|
19
19
|
}
|
20
20
|
end
|
21
21
|
|
22
22
|
def show
|
23
23
|
render locals: {
|
24
|
-
page: Administrate::Page::Show.new(dashboard, requested_resource)
|
24
|
+
page: Administrate::Page::Show.new(dashboard, requested_resource)
|
25
25
|
}
|
26
26
|
end
|
27
27
|
|
@@ -29,13 +29,13 @@ module Administrate
|
|
29
29
|
resource = new_resource
|
30
30
|
authorize_resource(resource)
|
31
31
|
render locals: {
|
32
|
-
page: Administrate::Page::Form.new(dashboard, resource)
|
32
|
+
page: Administrate::Page::Form.new(dashboard, resource)
|
33
33
|
}
|
34
34
|
end
|
35
35
|
|
36
36
|
def edit
|
37
37
|
render locals: {
|
38
|
-
page: Administrate::Page::Form.new(dashboard, requested_resource)
|
38
|
+
page: Administrate::Page::Form.new(dashboard, requested_resource)
|
39
39
|
}
|
40
40
|
end
|
41
41
|
|
@@ -47,11 +47,11 @@ module Administrate
|
|
47
47
|
yield(resource) if block_given?
|
48
48
|
redirect_to(
|
49
49
|
after_resource_created_path(resource),
|
50
|
-
notice: translate_with_resource("create.success")
|
50
|
+
notice: translate_with_resource("create.success")
|
51
51
|
)
|
52
52
|
else
|
53
53
|
render :new, locals: {
|
54
|
-
page: Administrate::Page::Form.new(dashboard, resource)
|
54
|
+
page: Administrate::Page::Form.new(dashboard, resource)
|
55
55
|
}, status: :unprocessable_entity
|
56
56
|
end
|
57
57
|
end
|
@@ -61,10 +61,11 @@ module Administrate
|
|
61
61
|
redirect_to(
|
62
62
|
after_resource_updated_path(requested_resource),
|
63
63
|
notice: translate_with_resource("update.success"),
|
64
|
+
status: :see_other
|
64
65
|
)
|
65
66
|
else
|
66
67
|
render :edit, locals: {
|
67
|
-
page: Administrate::Page::Form.new(dashboard, requested_resource)
|
68
|
+
page: Administrate::Page::Form.new(dashboard, requested_resource)
|
68
69
|
}, status: :unprocessable_entity
|
69
70
|
end
|
70
71
|
end
|
@@ -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
|
@@ -84,12 +85,12 @@ module Administrate
|
|
84
85
|
Administrate::Search.new(
|
85
86
|
resources,
|
86
87
|
dashboard,
|
87
|
-
search_term
|
88
|
+
search_term
|
88
89
|
).run
|
89
90
|
end
|
90
91
|
|
91
92
|
def after_resource_destroyed_path(_requested_resource)
|
92
|
-
{
|
93
|
+
{action: :index}
|
93
94
|
end
|
94
95
|
|
95
96
|
def after_resource_created_path(requested_resource)
|
@@ -103,7 +104,7 @@ module Administrate
|
|
103
104
|
helper_method :nav_link_state
|
104
105
|
def nav_link_state(resource)
|
105
106
|
underscore_resource = resource.to_s.split("/").join("__")
|
106
|
-
resource_name.to_s.pluralize == underscore_resource ? :active : :inactive
|
107
|
+
(resource_name.to_s.pluralize == underscore_resource) ? :active : :inactive
|
107
108
|
end
|
108
109
|
|
109
110
|
# Whether the named action route exists for the resource class.
|
@@ -141,8 +142,8 @@ module Administrate
|
|
141
142
|
sorting_attribute,
|
142
143
|
sorting_direction,
|
143
144
|
association_attribute: order_by_field(
|
144
|
-
dashboard_attribute(sorting_attribute)
|
145
|
-
)
|
145
|
+
dashboard_attribute(sorting_attribute)
|
146
|
+
)
|
146
147
|
)
|
147
148
|
end
|
148
149
|
|
@@ -201,9 +202,9 @@ module Administrate
|
|
201
202
|
end
|
202
203
|
|
203
204
|
def resource_params
|
204
|
-
params.require(resource_class.model_name.param_key)
|
205
|
-
permit(dashboard.permitted_attributes(action_name))
|
206
|
-
transform_values { |v| read_param_value(v) }
|
205
|
+
params.require(resource_class.model_name.param_key)
|
206
|
+
.permit(dashboard.permitted_attributes(action_name))
|
207
|
+
.transform_values { |v| read_param_value(v) }
|
207
208
|
end
|
208
209
|
|
209
210
|
def read_param_value(data)
|
@@ -236,13 +237,13 @@ module Administrate
|
|
236
237
|
def translate_with_resource(key)
|
237
238
|
t(
|
238
239
|
"administrate.controller.#{key}",
|
239
|
-
resource: resource_resolver.resource_title
|
240
|
+
resource: resource_resolver.resource_title
|
240
241
|
)
|
241
242
|
end
|
242
243
|
|
243
244
|
def show_search_bar?
|
244
245
|
dashboard.attribute_types_for(
|
245
|
-
dashboard.all_attributes
|
246
|
+
dashboard.all_attributes
|
246
247
|
).any? { |_name, attribute| attribute.searchable? }
|
247
248
|
end
|
248
249
|
|
@@ -279,7 +280,7 @@ module Administrate
|
|
279
280
|
else
|
280
281
|
raise Administrate::NotAuthorizedError.new(
|
281
282
|
action: action_name,
|
282
|
-
resource: resource
|
283
|
+
resource: resource
|
283
284
|
)
|
284
285
|
end
|
285
286
|
end
|