administrate 0.20.1 → 1.0.0.beta2

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 (92) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +9 -9
  3. data/app/assets/builds/administrate/application.css +2542 -0
  4. data/app/assets/builds/administrate/application.css.map +1 -0
  5. data/app/assets/builds/administrate/application.js +22169 -0
  6. data/app/assets/builds/administrate/application.js.map +7 -0
  7. data/app/assets/builds/administrate-internal/docs.css +89 -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 +8 -4
  12. data/app/assets/javascripts/administrate/controllers/application.js +9 -0
  13. data/app/assets/javascripts/administrate/controllers/index.js +7 -0
  14. data/app/assets/javascripts/administrate/controllers/select_controller.js +8 -0
  15. data/app/assets/javascripts/administrate/{components/table.js → controllers/table_controller.js} +9 -9
  16. data/app/assets/stylesheets/administrate/application.scss +3 -3
  17. data/app/assets/stylesheets/administrate/base/_forms.scss +4 -4
  18. data/app/assets/stylesheets/administrate/base/_layout.scss +5 -0
  19. data/app/assets/stylesheets/administrate/base/_tables.scss +1 -1
  20. data/app/assets/stylesheets/administrate/base/_typography.scss +12 -1
  21. data/app/assets/stylesheets/administrate/components/_attributes.scss +1 -0
  22. data/app/assets/stylesheets/administrate/components/_buttons.scss +12 -12
  23. data/app/assets/stylesheets/administrate/components/_cells.scss +19 -19
  24. data/app/assets/stylesheets/administrate/components/_field-unit.scss +3 -3
  25. data/app/assets/stylesheets/administrate/components/_main-content.scss +1 -1
  26. data/app/assets/stylesheets/administrate/components/_navigation.scss +3 -3
  27. data/app/assets/stylesheets/administrate/components/_search.scss +11 -11
  28. data/app/assets/stylesheets/administrate/library/_variables.scss +7 -3
  29. data/app/assets/stylesheets/administrate/reset/_normalize.scss +7 -1
  30. data/app/controllers/administrate/application_controller.rb +20 -19
  31. data/app/controllers/concerns/administrate/punditize.rb +5 -5
  32. data/app/helpers/administrate/application_helper.rb +4 -4
  33. data/app/views/administrate/application/_collection.html.erb +1 -1
  34. data/app/views/administrate/application/_collection_item_actions.html.erb +3 -3
  35. data/app/views/administrate/application/_index_header.html.erb +4 -0
  36. data/app/views/administrate/application/_javascript.html.erb +1 -1
  37. data/app/views/administrate/application/edit.html.erb +15 -3
  38. data/app/views/administrate/application/index.html.erb +19 -11
  39. data/app/views/administrate/application/new.html.erb +15 -3
  40. data/app/views/administrate/application/show.html.erb +35 -23
  41. data/app/views/fields/belongs_to/_form.html.erb +3 -2
  42. data/app/views/fields/has_many/_form.html.erb +1 -1
  43. data/app/views/fields/polymorphic/_form.html.erb +1 -1
  44. data/app/views/fields/rich_text/_form.html.erb +6 -0
  45. data/app/views/fields/rich_text/_index.html.erb +18 -0
  46. data/app/views/fields/rich_text/_show.html.erb +18 -0
  47. data/app/views/fields/select/_form.html.erb +2 -1
  48. data/app/views/fields/text/_form.html.erb +1 -1
  49. data/app/views/layouts/administrate/application.html.erb +1 -2
  50. data/docs/customizing_dashboards.md +138 -4
  51. data/docs/customizing_page_views.md +25 -0
  52. data/lib/administrate/base_dashboard.rb +6 -5
  53. data/lib/administrate/engine.rb +7 -6
  54. data/lib/administrate/field/associative.rb +5 -1
  55. data/lib/administrate/field/base.rb +21 -3
  56. data/lib/administrate/field/belongs_to.rb +7 -2
  57. data/lib/administrate/field/date.rb +1 -1
  58. data/lib/administrate/field/date_time.rb +2 -2
  59. data/lib/administrate/field/deferred.rb +10 -2
  60. data/lib/administrate/field/has_many.rb +5 -5
  61. data/lib/administrate/field/has_one.rb +10 -6
  62. data/lib/administrate/field/number.rb +2 -2
  63. data/lib/administrate/field/polymorphic.rb +3 -3
  64. data/lib/administrate/field/rich_text.rb +21 -0
  65. data/lib/administrate/field/select.rb +4 -0
  66. data/lib/administrate/generator_helpers.rb +1 -1
  67. data/lib/administrate/namespace/resource.rb +1 -1
  68. data/lib/administrate/order.rb +30 -26
  69. data/lib/administrate/page/base.rb +2 -7
  70. data/lib/administrate/page/collection.rb +2 -2
  71. data/lib/administrate/page/form.rb +1 -1
  72. data/lib/administrate/page/show.rb +1 -1
  73. data/lib/administrate/resource_resolver.rb +1 -1
  74. data/lib/administrate/search.rb +6 -7
  75. data/lib/administrate/version.rb +1 -1
  76. data/lib/administrate/view_generator.rb +3 -3
  77. data/lib/administrate.rb +18 -18
  78. data/lib/generators/administrate/dashboard/dashboard_generator.rb +12 -9
  79. data/lib/generators/administrate/field/field_generator.rb +2 -2
  80. data/lib/generators/administrate/install/install_generator.rb +2 -2
  81. data/lib/generators/administrate/routes/routes_generator.rb +5 -5
  82. data/lib/generators/administrate/views/field_generator.rb +2 -2
  83. data/lib/generators/administrate/views/index_generator.rb +1 -0
  84. data/lib/generators/administrate/views/layout_generator.rb +1 -1
  85. metadata +20 -53
  86. data/app/assets/javascripts/administrate/components/associative.js +0 -5
  87. data/app/assets/javascripts/administrate/components/select.js +0 -3
  88. data/app/assets/stylesheets/administrate/utilities/_text-color.scss +0 -3
  89. data/lib/generators/administrate/assets/assets_generator.rb +0 -12
  90. data/lib/generators/administrate/assets/javascripts_generator.rb +0 -17
  91. data/lib/generators/administrate/assets/stylesheets_generator.rb +0 -17
  92. /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"]}
@@ -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,8 @@
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";
@@ -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,7 +2,9 @@
2
2
 
3
3
  @import "reset/normalize";
4
4
 
5
- @import "selectize";
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;
@@ -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;
@@ -23,7 +23,7 @@ tbody tr {
23
23
  background-color: $base-background-color;
24
24
  }
25
25
 
26
- [role=link] {
26
+ [role="link"] {
27
27
  cursor: pointer;
28
28
  }
29
29
 
@@ -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,6 @@
1
1
  .attribute-label {
2
2
  @include data-label;
3
+
3
4
  clear: left;
4
5
  float: left;
5
6
  margin-bottom: $base-spacing;
@@ -1,7 +1,7 @@
1
1
  button,
2
- input[type="button"],
3
- input[type="reset"],
4
- input[type="submit"],
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
- &:hover {
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
- cursor: not-allowed;
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
- width: 100%;
43
+ flex-grow: 1;
44
44
  }
45
45
 
46
46
  .field-unit__label {
@@ -4,8 +4,8 @@
4
4
  box-shadow: 0 0 6px 0 rgba($black, 0.12),
5
5
  0 2px 2px rgba($black, 0.2);
6
6
  flex: 1 1 100%;
7
- padding-bottom: 10vh;
8
7
  min-width: 800px;
8
+ padding-bottom: 10vh;
9
9
  }
10
10
 
11
11
  .main-content__header,
@@ -1,4 +1,4 @@
1
- $_navigation-link-padding: 0.6em;
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: -($_navigation-link-padding);
15
- padding: $_navigation-link-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
- $_search-icon-size: 1rem;
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: $_search-icon-size * 2.5;
14
- padding-right: $_search-icon-size * 2.5;
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: $_search-icon-size;
20
- left: $_search-icon-size;
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: $_search-icon-size;
24
+ width: $search-icon-size;
25
25
  }
26
26
 
27
27
  .search__clear-link {
28
- height: $_search-icon-size;
28
+ height: $search-icon-size;
29
29
  position: absolute;
30
- right: $_search-icon-size * 0.75;
30
+ right: $search-icon-size * 0.75;
31
31
  top: 50%;
32
32
  transform: translateY(-50%);
33
- width: $_search-icon-size;
33
+ width: $search-icon-size;
34
34
  }
35
35
 
36
36
  .search__clear-icon {
37
37
  fill: $grey-5;
38
- height: $_search-icon-size;
38
+ height: $search-icon-size;
39
39
  position: absolute;
40
40
  transition: fill $base-duration $base-timing;
41
- width: $_search-icon-size;
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, BlinkMacSystemFont, "Segoe UI", "Roboto",
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: #fff !default;
21
- $black: #000 !default;
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
- { action: :index }
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