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.
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