rails_admin 3.2.1 → 4.0.0.beta

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 (214) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +8 -6
  3. data/README.md +11 -11
  4. data/Rakefile +3 -11
  5. data/app/assets/builds/rails_admin.css +10 -0
  6. data/app/assets/builds/rails_admin.js +34 -0
  7. data/app/controllers/rails_admin/main_controller.rb +3 -3
  8. data/app/helpers/rails_admin/application_helper.rb +3 -15
  9. data/app/helpers/rails_admin/form_builder.rb +10 -9
  10. data/app/views/layouts/rails_admin/_head.html.erb +10 -27
  11. data/app/views/layouts/rails_admin/_head_custom.html.erb +3 -0
  12. data/app/views/layouts/rails_admin/_secondary_navigation.html.erb +1 -1
  13. data/app/views/rails_admin/main/_dashboard_history.html.erb +1 -1
  14. data/app/views/rails_admin/main/_delete_notice.html.erb +3 -3
  15. data/app/views/rails_admin/main/_form_boolean.html.erb +9 -13
  16. data/app/views/rails_admin/main/_submit_buttons.html.erb +4 -4
  17. data/app/views/rails_admin/main/bulk_delete.html.erb +2 -2
  18. data/app/views/rails_admin/main/dashboard.html.erb +3 -3
  19. data/app/views/rails_admin/main/delete.html.erb +2 -2
  20. data/app/views/rails_admin/main/export.html.erb +2 -2
  21. data/app/views/rails_admin/main/history.html.erb +2 -2
  22. data/app/views/rails_admin/main/index.html.erb +3 -3
  23. data/config/initializers/active_record_extensions.rb +1 -4
  24. data/lib/generators/rails_admin/install_generator.rb +37 -92
  25. data/lib/generators/rails_admin/templates/rails_admin.scss.erb +1 -1
  26. data/lib/rails_admin/abstract_model.rb +69 -191
  27. data/lib/rails_admin/adapters/active_record/association.rb +1 -1
  28. data/lib/rails_admin/adapters/active_record/property.rb +7 -0
  29. data/lib/rails_admin/adapters/active_record/reflection.rb +87 -0
  30. data/lib/rails_admin/adapters/active_record/repository.rb +216 -0
  31. data/lib/rails_admin/adapters/active_record/statement_builder.rb +148 -0
  32. data/lib/rails_admin/adapters/active_record/where_builder.rb +40 -0
  33. data/lib/rails_admin/adapters/active_record.rb +7 -356
  34. data/lib/rails_admin/adapters/mongoid/association.rb +1 -1
  35. data/lib/rails_admin/adapters/mongoid/extension.rb +16 -6
  36. data/lib/rails_admin/adapters/mongoid/property.rb +7 -0
  37. data/lib/rails_admin/adapters/mongoid/reflection.rb +58 -0
  38. data/lib/rails_admin/adapters/mongoid/repository.rb +237 -0
  39. data/lib/rails_admin/adapters/mongoid/statement_builder.rb +93 -0
  40. data/lib/rails_admin/adapters/mongoid.rb +7 -300
  41. data/lib/rails_admin/adapters/reflection.rb +105 -0
  42. data/lib/rails_admin/adapters/repository.rb +169 -0
  43. data/lib/rails_admin/adapters/statement_builder.rb +109 -0
  44. data/lib/rails_admin/adapters.rb +94 -0
  45. data/lib/rails_admin/config/actions/base.rb +8 -0
  46. data/lib/rails_admin/config/actions/bulk_delete.rb +4 -4
  47. data/lib/rails_admin/config/actions/dashboard.rb +1 -1
  48. data/lib/rails_admin/config/actions/edit.rb +3 -2
  49. data/lib/rails_admin/config/actions/index.rb +1 -1
  50. data/lib/rails_admin/config/actions/new.rb +3 -2
  51. data/lib/rails_admin/config/actions/show.rb +1 -1
  52. data/lib/rails_admin/config/configurable.rb +4 -3
  53. data/lib/rails_admin/config/fields/association.rb +9 -8
  54. data/lib/rails_admin/config/fields/base.rb +55 -37
  55. data/lib/rails_admin/config/fields/collection_association.rb +2 -2
  56. data/lib/rails_admin/config/fields/factories/carrierwave.rb +35 -20
  57. data/lib/rails_admin/config/fields/factories/dragonfly.rb +30 -18
  58. data/lib/rails_admin/config/fields/factories/enum.rb +14 -8
  59. data/lib/rails_admin/config/fields/factories/paperclip.rb +29 -19
  60. data/lib/rails_admin/config/fields/factories/shrine.rb +19 -8
  61. data/lib/rails_admin/config/fields/singular_association.rb +6 -1
  62. data/lib/rails_admin/config/fields/types/active_record_enum.rb +3 -7
  63. data/lib/rails_admin/config/fields/types/belongs_to_association.rb +8 -4
  64. data/lib/rails_admin/config/fields/types/bson_object_id.rb +1 -1
  65. data/lib/rails_admin/config/fields/types/datetime.rb +0 -4
  66. data/lib/rails_admin/config/fields/types/dragonfly.rb +1 -1
  67. data/lib/rails_admin/config/fields/types/enum.rb +11 -2
  68. data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +0 -2
  69. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +4 -4
  70. data/lib/rails_admin/config/fields/types/time.rb +1 -1
  71. data/lib/rails_admin/config/model.rb +27 -5
  72. data/lib/rails_admin/config/sections/list.rb +0 -8
  73. data/lib/rails_admin/config.rb +7 -21
  74. data/lib/rails_admin/criteria/path.rb +66 -0
  75. data/lib/rails_admin/criteria/period.rb +67 -0
  76. data/lib/rails_admin/engine.rb +11 -15
  77. data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +2 -2
  78. data/lib/rails_admin/extensions/url_for_extension.rb +8 -0
  79. data/lib/rails_admin/support/asset_source.rb +42 -0
  80. data/lib/rails_admin/support/composite_keys_serializer.rb +28 -2
  81. data/lib/rails_admin/support/csv_converter.rb +3 -10
  82. data/lib/rails_admin/version.rb +8 -7
  83. data/lib/rails_admin.rb +7 -0
  84. data/lib/tasks/assets.rake +23 -0
  85. data/package.json +12 -7
  86. data/src/rails_admin/base.js +18 -15
  87. data/src/rails_admin/filter-box.js +7 -4
  88. data/src/rails_admin/filtering-multiselect.js +1 -1
  89. data/src/rails_admin/filtering-select.js +8 -8
  90. data/src/rails_admin/flatpickr.js +14 -0
  91. data/src/rails_admin/remote-form.js +74 -48
  92. data/src/rails_admin/styles/base/theming.scss +48 -25
  93. data/src/rails_admin/styles/base.scss +25 -1
  94. data/src/rails_admin/styles/filtering-select.scss +23 -62
  95. data/src/rails_admin/ui.js +1 -1
  96. data/src/rails_admin/vendor/jquery_nested_form.js +4 -4
  97. data/src/rails_admin/widgets.js +44 -11
  98. metadata +34 -130
  99. data/app/assets/javascripts/rails_admin/application.js.erb +0 -30
  100. data/app/assets/javascripts/rails_admin/custom/ui.js +0 -1
  101. data/app/assets/stylesheets/rails_admin/application.scss.erb +0 -35
  102. data/app/assets/stylesheets/rails_admin/custom/mixins.scss +0 -11
  103. data/app/assets/stylesheets/rails_admin/custom/theming.scss +0 -13
  104. data/app/assets/stylesheets/rails_admin/custom/variables.scss +0 -15
  105. data/lib/generators/rails_admin/importmap_formatter.rb +0 -28
  106. data/lib/generators/rails_admin/templates/rails_admin.vite.js +0 -2
  107. data/lib/generators/rails_admin/templates/rails_admin.webpacker.js +0 -2
  108. data/lib/rails_admin/adapters/active_record/object_extension.rb +0 -13
  109. data/lib/rails_admin/adapters/active_record.rb.bak +0 -348
  110. data/lib/rails_admin/adapters/mongoid/object_extension.rb +0 -29
  111. data/lib/rails_admin/support/es_module_processor.rb +0 -23
  112. data/vendor/assets/fonts/rails_admin/fa-solid-900.ttf +0 -0
  113. data/vendor/assets/javascripts/rails_admin/bootstrap.js +0 -5046
  114. data/vendor/assets/javascripts/rails_admin/flatpickr-with-locales.js +0 -11246
  115. data/vendor/assets/javascripts/rails_admin/jquery-ui/data.js +0 -41
  116. data/vendor/assets/javascripts/rails_admin/jquery-ui/effect.js +0 -1637
  117. data/vendor/assets/javascripts/rails_admin/jquery-ui/ie.js +0 -17
  118. data/vendor/assets/javascripts/rails_admin/jquery-ui/keycode.js +0 -47
  119. data/vendor/assets/javascripts/rails_admin/jquery-ui/position.js +0 -500
  120. data/vendor/assets/javascripts/rails_admin/jquery-ui/safe-active-element.js +0 -42
  121. data/vendor/assets/javascripts/rails_admin/jquery-ui/scroll-parent.js +0 -47
  122. data/vendor/assets/javascripts/rails_admin/jquery-ui/unique-id.js +0 -51
  123. data/vendor/assets/javascripts/rails_admin/jquery-ui/version.js +0 -17
  124. data/vendor/assets/javascripts/rails_admin/jquery-ui/widget.js +0 -735
  125. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/autocomplete.js +0 -689
  126. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/menu.js +0 -680
  127. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/mouse.js +0 -230
  128. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/sortable.js +0 -1561
  129. data/vendor/assets/javascripts/rails_admin/jquery3.js +0 -10881
  130. data/vendor/assets/javascripts/rails_admin/popper.js +0 -1974
  131. data/vendor/assets/stylesheets/rails_admin/bootstrap/_accordion.scss +0 -118
  132. data/vendor/assets/stylesheets/rails_admin/bootstrap/_alert.scss +0 -57
  133. data/vendor/assets/stylesheets/rails_admin/bootstrap/_badge.scss +0 -29
  134. data/vendor/assets/stylesheets/rails_admin/bootstrap/_breadcrumb.scss +0 -28
  135. data/vendor/assets/stylesheets/rails_admin/bootstrap/_button-group.scss +0 -139
  136. data/vendor/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +0 -111
  137. data/vendor/assets/stylesheets/rails_admin/bootstrap/_card.scss +0 -216
  138. data/vendor/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +0 -229
  139. data/vendor/assets/stylesheets/rails_admin/bootstrap/_close.scss +0 -40
  140. data/vendor/assets/stylesheets/rails_admin/bootstrap/_containers.scss +0 -41
  141. data/vendor/assets/stylesheets/rails_admin/bootstrap/_dropdown.scss +0 -240
  142. data/vendor/assets/stylesheets/rails_admin/bootstrap/_forms.scss +0 -9
  143. data/vendor/assets/stylesheets/rails_admin/bootstrap/_functions.scss +0 -302
  144. data/vendor/assets/stylesheets/rails_admin/bootstrap/_grid.scss +0 -33
  145. data/vendor/assets/stylesheets/rails_admin/bootstrap/_helpers.scss +0 -9
  146. data/vendor/assets/stylesheets/rails_admin/bootstrap/_images.scss +0 -42
  147. data/vendor/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +0 -174
  148. data/vendor/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +0 -43
  149. data/vendor/assets/stylesheets/rails_admin/bootstrap/_modal.scss +0 -209
  150. data/vendor/assets/stylesheets/rails_admin/bootstrap/_nav.scss +0 -139
  151. data/vendor/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +0 -335
  152. data/vendor/assets/stylesheets/rails_admin/bootstrap/_offcanvas.scss +0 -83
  153. data/vendor/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +0 -64
  154. data/vendor/assets/stylesheets/rails_admin/bootstrap/_placeholders.scss +0 -51
  155. data/vendor/assets/stylesheets/rails_admin/bootstrap/_popover.scss +0 -158
  156. data/vendor/assets/stylesheets/rails_admin/bootstrap/_progress.scss +0 -48
  157. data/vendor/assets/stylesheets/rails_admin/bootstrap/_reboot.scss +0 -625
  158. data/vendor/assets/stylesheets/rails_admin/bootstrap/_root.scss +0 -54
  159. data/vendor/assets/stylesheets/rails_admin/bootstrap/_spinners.scss +0 -69
  160. data/vendor/assets/stylesheets/rails_admin/bootstrap/_tables.scss +0 -155
  161. data/vendor/assets/stylesheets/rails_admin/bootstrap/_toasts.scss +0 -51
  162. data/vendor/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +0 -115
  163. data/vendor/assets/stylesheets/rails_admin/bootstrap/_transitions.scss +0 -27
  164. data/vendor/assets/stylesheets/rails_admin/bootstrap/_type.scss +0 -104
  165. data/vendor/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +0 -630
  166. data/vendor/assets/stylesheets/rails_admin/bootstrap/_variables.scss +0 -1641
  167. data/vendor/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +0 -53
  168. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_floating-labels.scss +0 -63
  169. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-check.scss +0 -152
  170. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-control.scss +0 -219
  171. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-range.scss +0 -91
  172. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-select.scss +0 -72
  173. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-text.scss +0 -11
  174. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_input-group.scss +0 -121
  175. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_labels.scss +0 -36
  176. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_validation.scss +0 -12
  177. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_clearfix.scss +0 -3
  178. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_colored-links.scss +0 -12
  179. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_position.scss +0 -30
  180. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_ratio.scss +0 -26
  181. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stacks.scss +0 -15
  182. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stretched-link.scss +0 -15
  183. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_text-truncation.scss +0 -7
  184. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_visually-hidden.scss +0 -8
  185. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_vr.scss +0 -8
  186. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_alert.scss +0 -11
  187. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_backdrop.scss +0 -14
  188. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +0 -78
  189. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_box-shadow.scss +0 -18
  190. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_breakpoints.scss +0 -127
  191. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +0 -133
  192. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_caret.scss +0 -64
  193. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +0 -9
  194. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_color-scheme.scss +0 -7
  195. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_container.scss +0 -9
  196. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_deprecate.scss +0 -10
  197. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +0 -144
  198. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +0 -47
  199. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +0 -151
  200. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +0 -16
  201. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +0 -24
  202. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_lists.scss +0 -7
  203. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +0 -31
  204. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-text.scss +0 -17
  205. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +0 -6
  206. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_table-variants.scss +0 -21
  207. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_text-truncate.scss +0 -8
  208. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_transition.scss +0 -26
  209. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_utilities.scss +0 -89
  210. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_visually-hidden.scss +0 -29
  211. data/vendor/assets/stylesheets/rails_admin/bootstrap/utilities/_api.scss +0 -47
  212. data/vendor/assets/stylesheets/rails_admin/bootstrap/vendor/_rfs.scss +0 -354
  213. data/vendor/assets/stylesheets/rails_admin/flatpickr.css +0 -791
  214. data/vendor/assets/stylesheets/rails_admin/font-awesome.scss +0 -6351
@@ -1,118 +0,0 @@
1
- //
2
- // Base styles
3
- //
4
-
5
- .accordion-button {
6
- position: relative;
7
- display: flex;
8
- align-items: center;
9
- width: 100%;
10
- padding: $accordion-button-padding-y $accordion-button-padding-x;
11
- @include font-size($font-size-base);
12
- color: $accordion-button-color;
13
- text-align: left; // Reset button style
14
- background-color: $accordion-button-bg;
15
- border: 0;
16
- @include border-radius(0);
17
- overflow-anchor: none;
18
- @include transition($accordion-transition);
19
-
20
- &:not(.collapsed) {
21
- color: $accordion-button-active-color;
22
- background-color: $accordion-button-active-bg;
23
- box-shadow: inset 0 ($accordion-border-width * -1) 0 $accordion-border-color;
24
-
25
- &::after {
26
- background-image: escape-svg($accordion-button-active-icon);
27
- transform: $accordion-icon-transform;
28
- }
29
- }
30
-
31
- // Accordion icon
32
- &::after {
33
- flex-shrink: 0;
34
- width: $accordion-icon-width;
35
- height: $accordion-icon-width;
36
- margin-left: auto;
37
- content: "";
38
- background-image: escape-svg($accordion-button-icon);
39
- background-repeat: no-repeat;
40
- background-size: $accordion-icon-width;
41
- @include transition($accordion-icon-transition);
42
- }
43
-
44
- &:hover {
45
- z-index: 2;
46
- }
47
-
48
- &:focus {
49
- z-index: 3;
50
- border-color: $accordion-button-focus-border-color;
51
- outline: 0;
52
- box-shadow: $accordion-button-focus-box-shadow;
53
- }
54
- }
55
-
56
- .accordion-header {
57
- margin-bottom: 0;
58
- }
59
-
60
- .accordion-item {
61
- background-color: $accordion-bg;
62
- border: $accordion-border-width solid $accordion-border-color;
63
-
64
- &:first-of-type {
65
- @include border-top-radius($accordion-border-radius);
66
-
67
- .accordion-button {
68
- @include border-top-radius($accordion-inner-border-radius);
69
- }
70
- }
71
-
72
- &:not(:first-of-type) {
73
- border-top: 0;
74
- }
75
-
76
- // Only set a border-radius on the last item if the accordion is collapsed
77
- &:last-of-type {
78
- @include border-bottom-radius($accordion-border-radius);
79
-
80
- .accordion-button {
81
- &.collapsed {
82
- @include border-bottom-radius($accordion-inner-border-radius);
83
- }
84
- }
85
-
86
- .accordion-collapse {
87
- @include border-bottom-radius($accordion-border-radius);
88
- }
89
- }
90
- }
91
-
92
- .accordion-body {
93
- padding: $accordion-body-padding-y $accordion-body-padding-x;
94
- }
95
-
96
-
97
- // Flush accordion items
98
- //
99
- // Remove borders and border-radius to keep accordion items edge-to-edge.
100
-
101
- .accordion-flush {
102
- .accordion-collapse {
103
- border-width: 0;
104
- }
105
-
106
- .accordion-item {
107
- border-right: 0;
108
- border-left: 0;
109
- @include border-radius(0);
110
-
111
- &:first-child { border-top: 0; }
112
- &:last-child { border-bottom: 0; }
113
-
114
- .accordion-button {
115
- @include border-radius(0);
116
- }
117
- }
118
- }
@@ -1,57 +0,0 @@
1
- //
2
- // Base styles
3
- //
4
-
5
- .alert {
6
- position: relative;
7
- padding: $alert-padding-y $alert-padding-x;
8
- margin-bottom: $alert-margin-bottom;
9
- border: $alert-border-width solid transparent;
10
- @include border-radius($alert-border-radius);
11
- }
12
-
13
- // Headings for larger alerts
14
- .alert-heading {
15
- // Specified to prevent conflicts of changing $headings-color
16
- color: inherit;
17
- }
18
-
19
- // Provide class for links that match alerts
20
- .alert-link {
21
- font-weight: $alert-link-font-weight;
22
- }
23
-
24
-
25
- // Dismissible alerts
26
- //
27
- // Expand the right padding and account for the close button's positioning.
28
-
29
- .alert-dismissible {
30
- padding-right: $alert-dismissible-padding-r;
31
-
32
- // Adjust close link position
33
- .btn-close {
34
- position: absolute;
35
- top: 0;
36
- right: 0;
37
- z-index: $stretched-link-z-index + 1;
38
- padding: $alert-padding-y * 1.25 $alert-padding-x;
39
- }
40
- }
41
-
42
-
43
- // scss-docs-start alert-modifiers
44
- // Generate contextual modifier classes for colorizing the alert.
45
-
46
- @each $state, $value in $theme-colors {
47
- $alert-background: shift-color($value, $alert-bg-scale);
48
- $alert-border: shift-color($value, $alert-border-scale);
49
- $alert-color: shift-color($value, $alert-color-scale);
50
- @if (contrast-ratio($alert-background, $alert-color) < $min-contrast-ratio) {
51
- $alert-color: mix($value, color-contrast($alert-background), abs($alert-color-scale));
52
- }
53
- .alert-#{$state} {
54
- @include alert-variant($alert-background, $alert-border, $alert-color);
55
- }
56
- }
57
- // scss-docs-end alert-modifiers
@@ -1,29 +0,0 @@
1
- // Base class
2
- //
3
- // Requires one of the contextual, color modifier classes for `color` and
4
- // `background-color`.
5
-
6
- .badge {
7
- display: inline-block;
8
- padding: $badge-padding-y $badge-padding-x;
9
- @include font-size($badge-font-size);
10
- font-weight: $badge-font-weight;
11
- line-height: 1;
12
- color: $badge-color;
13
- text-align: center;
14
- white-space: nowrap;
15
- vertical-align: baseline;
16
- @include border-radius($badge-border-radius);
17
- @include gradient-bg();
18
-
19
- // Empty badges collapse automatically
20
- &:empty {
21
- display: none;
22
- }
23
- }
24
-
25
- // Quick fix for badges in buttons
26
- .btn .badge {
27
- position: relative;
28
- top: -1px;
29
- }
@@ -1,28 +0,0 @@
1
- .breadcrumb {
2
- display: flex;
3
- flex-wrap: wrap;
4
- padding: $breadcrumb-padding-y $breadcrumb-padding-x;
5
- margin-bottom: $breadcrumb-margin-bottom;
6
- @include font-size($breadcrumb-font-size);
7
- list-style: none;
8
- background-color: $breadcrumb-bg;
9
- @include border-radius($breadcrumb-border-radius);
10
- }
11
-
12
- .breadcrumb-item {
13
- // The separator between breadcrumbs (by default, a forward-slash: "/")
14
- + .breadcrumb-item {
15
- padding-left: $breadcrumb-item-padding-x;
16
-
17
- &::before {
18
- float: left; // Suppress inline spacings and underlining of the separator
19
- padding-right: $breadcrumb-item-padding-x;
20
- color: $breadcrumb-divider-color;
21
- content: var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider)) #{"/* rtl:"} var(--#{$variable-prefix}breadcrumb-divider, escape-svg($breadcrumb-divider-flipped)) #{"*/"};
22
- }
23
- }
24
-
25
- &.active {
26
- color: $breadcrumb-active-color;
27
- }
28
- }
@@ -1,139 +0,0 @@
1
- // Make the div behave like a button
2
- .btn-group,
3
- .btn-group-vertical {
4
- position: relative;
5
- display: inline-flex;
6
- vertical-align: middle; // match .btn alignment given font-size hack above
7
-
8
- > .btn {
9
- position: relative;
10
- flex: 1 1 auto;
11
- }
12
-
13
- // Bring the hover, focused, and "active" buttons to the front to overlay
14
- // the borders properly
15
- > .btn-check:checked + .btn,
16
- > .btn-check:focus + .btn,
17
- > .btn:hover,
18
- > .btn:focus,
19
- > .btn:active,
20
- > .btn.active {
21
- z-index: 1;
22
- }
23
- }
24
-
25
- // Optional: Group multiple button groups together for a toolbar
26
- .btn-toolbar {
27
- display: flex;
28
- flex-wrap: wrap;
29
- justify-content: flex-start;
30
-
31
- .input-group {
32
- width: auto;
33
- }
34
- }
35
-
36
- .btn-group {
37
- // Prevent double borders when buttons are next to each other
38
- > .btn:not(:first-child),
39
- > .btn-group:not(:first-child) {
40
- margin-left: -$btn-border-width;
41
- }
42
-
43
- // Reset rounded corners
44
- > .btn:not(:last-child):not(.dropdown-toggle),
45
- > .btn-group:not(:last-child) > .btn {
46
- @include border-end-radius(0);
47
- }
48
-
49
- // The left radius should be 0 if the button is:
50
- // - the "third or more" child
51
- // - the second child and the previous element isn't `.btn-check` (making it the first child visually)
52
- // - part of a btn-group which isn't the first child
53
- > .btn:nth-child(n + 3),
54
- > :not(.btn-check) + .btn,
55
- > .btn-group:not(:first-child) > .btn {
56
- @include border-start-radius(0);
57
- }
58
- }
59
-
60
- // Sizing
61
- //
62
- // Remix the default button sizing classes into new ones for easier manipulation.
63
-
64
- .btn-group-sm > .btn { @extend .btn-sm; }
65
- .btn-group-lg > .btn { @extend .btn-lg; }
66
-
67
-
68
- //
69
- // Split button dropdowns
70
- //
71
-
72
- .dropdown-toggle-split {
73
- padding-right: $btn-padding-x * .75;
74
- padding-left: $btn-padding-x * .75;
75
-
76
- &::after,
77
- .dropup &::after,
78
- .dropend &::after {
79
- margin-left: 0;
80
- }
81
-
82
- .dropstart &::before {
83
- margin-right: 0;
84
- }
85
- }
86
-
87
- .btn-sm + .dropdown-toggle-split {
88
- padding-right: $btn-padding-x-sm * .75;
89
- padding-left: $btn-padding-x-sm * .75;
90
- }
91
-
92
- .btn-lg + .dropdown-toggle-split {
93
- padding-right: $btn-padding-x-lg * .75;
94
- padding-left: $btn-padding-x-lg * .75;
95
- }
96
-
97
-
98
- // The clickable button for toggling the menu
99
- // Set the same inset shadow as the :active state
100
- .btn-group.show .dropdown-toggle {
101
- @include box-shadow($btn-active-box-shadow);
102
-
103
- // Show no shadow for `.btn-link` since it has no other button styles.
104
- &.btn-link {
105
- @include box-shadow(none);
106
- }
107
- }
108
-
109
-
110
- //
111
- // Vertical button groups
112
- //
113
-
114
- .btn-group-vertical {
115
- flex-direction: column;
116
- align-items: flex-start;
117
- justify-content: center;
118
-
119
- > .btn,
120
- > .btn-group {
121
- width: 100%;
122
- }
123
-
124
- > .btn:not(:first-child),
125
- > .btn-group:not(:first-child) {
126
- margin-top: -$btn-border-width;
127
- }
128
-
129
- // Reset rounded corners
130
- > .btn:not(:last-child):not(.dropdown-toggle),
131
- > .btn-group:not(:last-child) > .btn {
132
- @include border-bottom-radius(0);
133
- }
134
-
135
- > .btn ~ .btn,
136
- > .btn-group:not(:first-child) > .btn {
137
- @include border-top-radius(0);
138
- }
139
- }
@@ -1,111 +0,0 @@
1
- //
2
- // Base styles
3
- //
4
-
5
- .btn {
6
- display: inline-block;
7
- font-family: $btn-font-family;
8
- font-weight: $btn-font-weight;
9
- line-height: $btn-line-height;
10
- color: $body-color;
11
- text-align: center;
12
- text-decoration: if($link-decoration == none, null, none);
13
- white-space: $btn-white-space;
14
- vertical-align: middle;
15
- cursor: if($enable-button-pointers, pointer, null);
16
- user-select: none;
17
- background-color: transparent;
18
- border: $btn-border-width solid transparent;
19
- @include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-border-radius);
20
- @include transition($btn-transition);
21
-
22
- &:hover {
23
- color: $body-color;
24
- text-decoration: if($link-hover-decoration == underline, none, null);
25
- }
26
-
27
- .btn-check:focus + &,
28
- &:focus {
29
- outline: 0;
30
- box-shadow: $btn-focus-box-shadow;
31
- }
32
-
33
- .btn-check:checked + &,
34
- .btn-check:active + &,
35
- &:active,
36
- &.active {
37
- @include box-shadow($btn-active-box-shadow);
38
-
39
- &:focus {
40
- @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);
41
- }
42
- }
43
-
44
- &:disabled,
45
- &.disabled,
46
- fieldset:disabled & {
47
- pointer-events: none;
48
- opacity: $btn-disabled-opacity;
49
- @include box-shadow(none);
50
- }
51
- }
52
-
53
-
54
- //
55
- // Alternate buttons
56
- //
57
-
58
- // scss-docs-start btn-variant-loops
59
- @each $color, $value in $theme-colors {
60
- .btn-#{$color} {
61
- @include button-variant($value, $value);
62
- }
63
- }
64
-
65
- @each $color, $value in $theme-colors {
66
- .btn-outline-#{$color} {
67
- @include button-outline-variant($value);
68
- }
69
- }
70
- // scss-docs-end btn-variant-loops
71
-
72
-
73
- //
74
- // Link buttons
75
- //
76
-
77
- // Make a button look and behave like a link
78
- .btn-link {
79
- font-weight: $font-weight-normal;
80
- color: $btn-link-color;
81
- text-decoration: $link-decoration;
82
-
83
- &:hover {
84
- color: $btn-link-hover-color;
85
- text-decoration: $link-hover-decoration;
86
- }
87
-
88
- &:focus {
89
- text-decoration: $link-hover-decoration;
90
- }
91
-
92
- &:disabled,
93
- &.disabled {
94
- color: $btn-link-disabled-color;
95
- }
96
-
97
- // No need for an active state here
98
- }
99
-
100
-
101
- //
102
- // Button Sizes
103
- //
104
-
105
- .btn-lg {
106
- @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-border-radius-lg);
107
- }
108
-
109
- .btn-sm {
110
- @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-border-radius-sm);
111
- }
@@ -1,216 +0,0 @@
1
- //
2
- // Base styles
3
- //
4
-
5
- .card {
6
- position: relative;
7
- display: flex;
8
- flex-direction: column;
9
- min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106
10
- height: $card-height;
11
- word-wrap: break-word;
12
- background-color: $card-bg;
13
- background-clip: border-box;
14
- border: $card-border-width solid $card-border-color;
15
- @include border-radius($card-border-radius);
16
- @include box-shadow($card-box-shadow);
17
-
18
- > hr {
19
- margin-right: 0;
20
- margin-left: 0;
21
- }
22
-
23
- > .list-group {
24
- border-top: inherit;
25
- border-bottom: inherit;
26
-
27
- &:first-child {
28
- border-top-width: 0;
29
- @include border-top-radius($card-inner-border-radius);
30
- }
31
-
32
- &:last-child {
33
- border-bottom-width: 0;
34
- @include border-bottom-radius($card-inner-border-radius);
35
- }
36
- }
37
-
38
- // Due to specificity of the above selector (`.card > .list-group`), we must
39
- // use a child selector here to prevent double borders.
40
- > .card-header + .list-group,
41
- > .list-group + .card-footer {
42
- border-top: 0;
43
- }
44
- }
45
-
46
- .card-body {
47
- // Enable `flex-grow: 1` for decks and groups so that card blocks take up
48
- // as much space as possible, ensuring footers are aligned to the bottom.
49
- flex: 1 1 auto;
50
- padding: $card-spacer-y $card-spacer-x;
51
- color: $card-color;
52
- }
53
-
54
- .card-title {
55
- margin-bottom: $card-title-spacer-y;
56
- }
57
-
58
- .card-subtitle {
59
- margin-top: -$card-title-spacer-y * .5;
60
- margin-bottom: 0;
61
- }
62
-
63
- .card-text:last-child {
64
- margin-bottom: 0;
65
- }
66
-
67
- .card-link {
68
- &:hover {
69
- text-decoration: if($link-hover-decoration == underline, none, null);
70
- }
71
-
72
- + .card-link {
73
- margin-left: $card-spacer-x;
74
- }
75
- }
76
-
77
- //
78
- // Optional textual caps
79
- //
80
-
81
- .card-header {
82
- padding: $card-cap-padding-y $card-cap-padding-x;
83
- margin-bottom: 0; // Removes the default margin-bottom of <hN>
84
- color: $card-cap-color;
85
- background-color: $card-cap-bg;
86
- border-bottom: $card-border-width solid $card-border-color;
87
-
88
- &:first-child {
89
- @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);
90
- }
91
- }
92
-
93
- .card-footer {
94
- padding: $card-cap-padding-y $card-cap-padding-x;
95
- color: $card-cap-color;
96
- background-color: $card-cap-bg;
97
- border-top: $card-border-width solid $card-border-color;
98
-
99
- &:last-child {
100
- @include border-radius(0 0 $card-inner-border-radius $card-inner-border-radius);
101
- }
102
- }
103
-
104
-
105
- //
106
- // Header navs
107
- //
108
-
109
- .card-header-tabs {
110
- margin-right: -$card-cap-padding-x * .5;
111
- margin-bottom: -$card-cap-padding-y;
112
- margin-left: -$card-cap-padding-x * .5;
113
- border-bottom: 0;
114
-
115
- @if $nav-tabs-link-active-bg != $card-bg {
116
- .nav-link.active {
117
- background-color: $card-bg;
118
- border-bottom-color: $card-bg;
119
- }
120
- }
121
- }
122
-
123
- .card-header-pills {
124
- margin-right: -$card-cap-padding-x * .5;
125
- margin-left: -$card-cap-padding-x * .5;
126
- }
127
-
128
- // Card image
129
- .card-img-overlay {
130
- position: absolute;
131
- top: 0;
132
- right: 0;
133
- bottom: 0;
134
- left: 0;
135
- padding: $card-img-overlay-padding;
136
- @include border-radius($card-inner-border-radius);
137
- }
138
-
139
- .card-img,
140
- .card-img-top,
141
- .card-img-bottom {
142
- width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
143
- }
144
-
145
- .card-img,
146
- .card-img-top {
147
- @include border-top-radius($card-inner-border-radius);
148
- }
149
-
150
- .card-img,
151
- .card-img-bottom {
152
- @include border-bottom-radius($card-inner-border-radius);
153
- }
154
-
155
-
156
- //
157
- // Card groups
158
- //
159
-
160
- .card-group {
161
- // The child selector allows nested `.card` within `.card-group`
162
- // to display properly.
163
- > .card {
164
- margin-bottom: $card-group-margin;
165
- }
166
-
167
- @include media-breakpoint-up(sm) {
168
- display: flex;
169
- flex-flow: row wrap;
170
- // The child selector allows nested `.card` within `.card-group`
171
- // to display properly.
172
- > .card {
173
- // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
174
- flex: 1 0 0%;
175
- margin-bottom: 0;
176
-
177
- + .card {
178
- margin-left: 0;
179
- border-left: 0;
180
- }
181
-
182
- // Handle rounded corners
183
- @if $enable-rounded {
184
- &:not(:last-child) {
185
- @include border-end-radius(0);
186
-
187
- .card-img-top,
188
- .card-header {
189
- // stylelint-disable-next-line property-disallowed-list
190
- border-top-right-radius: 0;
191
- }
192
- .card-img-bottom,
193
- .card-footer {
194
- // stylelint-disable-next-line property-disallowed-list
195
- border-bottom-right-radius: 0;
196
- }
197
- }
198
-
199
- &:not(:first-child) {
200
- @include border-start-radius(0);
201
-
202
- .card-img-top,
203
- .card-header {
204
- // stylelint-disable-next-line property-disallowed-list
205
- border-top-left-radius: 0;
206
- }
207
- .card-img-bottom,
208
- .card-footer {
209
- // stylelint-disable-next-line property-disallowed-list
210
- border-bottom-left-radius: 0;
211
- }
212
- }
213
- }
214
- }
215
- }
216
- }