rails_admin 3.0.0.beta2 → 3.0.0.rc

Sign up to get free protection for your applications and to get access to all the features.
Files changed (250) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -2
  3. data/Rakefile +11 -0
  4. data/app/assets/javascripts/rails_admin.js +4 -4
  5. data/app/assets/stylesheets/rails_admin.scss +31 -0
  6. data/app/controllers/rails_admin/application_controller.rb +1 -1
  7. data/app/controllers/rails_admin/main_controller.rb +10 -18
  8. data/app/helpers/rails_admin/application_helper.rb +12 -13
  9. data/app/helpers/rails_admin/form_builder.rb +3 -3
  10. data/app/helpers/rails_admin/main_helper.rb +1 -1
  11. data/app/views/kaminari/ra-twitter-bootstrap/_gap.html.erb +2 -2
  12. data/app/views/kaminari/ra-twitter-bootstrap/_next_page.html.erb +4 -4
  13. data/app/views/kaminari/ra-twitter-bootstrap/_page.html.erb +4 -4
  14. data/app/views/kaminari/ra-twitter-bootstrap/_paginator.html.erb +12 -10
  15. data/app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.erb +4 -4
  16. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.erb +4 -4
  17. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.erb +6 -4
  18. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.erb +4 -4
  19. data/app/views/layouts/rails_admin/_navigation.html.erb +12 -16
  20. data/app/views/layouts/rails_admin/_secondary_navigation.html.erb +8 -8
  21. data/app/views/layouts/rails_admin/_sidebar_navigation.html.erb +1 -5
  22. data/app/views/layouts/rails_admin/application.html.erb +4 -7
  23. data/app/views/layouts/rails_admin/{pjax.html.erb → content.html.erb} +7 -5
  24. data/app/views/layouts/rails_admin/modal.js.erb +1 -1
  25. data/app/views/rails_admin/main/_dashboard_history.html.erb +1 -1
  26. data/app/views/rails_admin/main/_delete_notice.html.erb +2 -2
  27. data/app/views/rails_admin/main/_form_boolean.html.erb +6 -8
  28. data/app/views/rails_admin/main/_form_colorpicker.html.erb +5 -1
  29. data/app/views/rails_admin/main/_form_datetime.html.erb +8 -7
  30. data/app/views/rails_admin/main/_form_enumeration.html.erb +5 -1
  31. data/app/views/rails_admin/main/_form_file_upload.html.erb +1 -1
  32. data/app/views/rails_admin/main/_form_filtering_multiselect.html.erb +14 -14
  33. data/app/views/rails_admin/main/_form_filtering_select.html.erb +16 -21
  34. data/app/views/rails_admin/main/_form_multiple_file_upload.html.erb +1 -1
  35. data/app/views/rails_admin/main/_form_nested_many.html.erb +4 -4
  36. data/app/views/rails_admin/main/_form_nested_one.html.erb +4 -4
  37. data/app/views/rails_admin/main/_form_polymorphic_association.html.erb +11 -6
  38. data/app/views/rails_admin/main/_submit_buttons.html.erb +8 -8
  39. data/app/views/rails_admin/main/bulk_delete.html.erb +1 -1
  40. data/app/views/rails_admin/main/dashboard.html.erb +4 -4
  41. data/app/views/rails_admin/main/delete.html.erb +1 -1
  42. data/app/views/rails_admin/main/edit.html.erb +1 -1
  43. data/app/views/rails_admin/main/export.html.erb +35 -32
  44. data/app/views/rails_admin/main/history.html.erb +16 -14
  45. data/app/views/rails_admin/main/index.html.erb +38 -35
  46. data/app/views/rails_admin/main/new.html.erb +1 -1
  47. data/config/locales/rails_admin.en.yml +0 -1
  48. data/lib/generators/rails_admin/install_generator.rb +0 -1
  49. data/lib/generators/rails_admin/templates/webpack.config.js +0 -3
  50. data/lib/rails_admin/adapters/active_record/object_extension.rb +1 -1
  51. data/lib/rails_admin/adapters/active_record/property.rb +1 -1
  52. data/lib/rails_admin/adapters/active_record.rb +7 -3
  53. data/lib/rails_admin/adapters/mongoid/property.rb +3 -3
  54. data/lib/rails_admin/adapters/mongoid.rb +2 -2
  55. data/lib/rails_admin/config/actions/base.rb +1 -6
  56. data/lib/rails_admin/config/actions/dashboard.rb +13 -9
  57. data/lib/rails_admin/config/actions/delete.rb +4 -0
  58. data/lib/rails_admin/config/actions/edit.rb +4 -0
  59. data/lib/rails_admin/config/actions/new.rb +5 -0
  60. data/lib/rails_admin/config/actions/show_in_app.rb +0 -4
  61. data/lib/rails_admin/config/fields/association.rb +6 -1
  62. data/lib/rails_admin/config/fields/base.rb +1 -1
  63. data/lib/rails_admin/config/fields/types/action_text.rb +1 -1
  64. data/lib/rails_admin/config/fields/types/date.rb +7 -0
  65. data/lib/rails_admin/config/fields/types/datetime.rb +9 -4
  66. data/lib/rails_admin/config/fields/types/has_many_association.rb +4 -0
  67. data/lib/rails_admin/config/fields/types/has_one_association.rb +4 -0
  68. data/lib/rails_admin/config/fields/types/time.rb +9 -0
  69. data/lib/rails_admin/config/has_fields.rb +4 -0
  70. data/lib/rails_admin/config/model.rb +8 -0
  71. data/lib/rails_admin/config/sections/list.rb +4 -4
  72. data/lib/rails_admin/config.rb +4 -1
  73. data/lib/rails_admin/engine.rb +2 -5
  74. data/lib/rails_admin/support/datetime.rb +50 -53
  75. data/lib/rails_admin/support/esmodule_preprocessor.rb +2 -1
  76. data/lib/rails_admin/version.rb +1 -1
  77. data/package.json +7 -5
  78. data/src/rails_admin/base.js +3 -6
  79. data/src/rails_admin/filter-box.js +36 -37
  80. data/src/rails_admin/filtering-select.js +3 -6
  81. data/src/rails_admin/i18n.js +0 -3
  82. data/src/rails_admin/nested-form-hooks.js +16 -8
  83. data/src/rails_admin/remote-form.js +18 -15
  84. data/src/rails_admin/styles/base/theming.scss +80 -155
  85. data/src/rails_admin/styles/base/variables.scss +2 -0
  86. data/src/rails_admin/styles/base.scss +8 -45
  87. data/src/rails_admin/styles/filtering-multiselect.scss +2 -2
  88. data/src/rails_admin/styles/filtering-select.scss +1 -1
  89. data/src/rails_admin/styles/widgets.scss +1 -10
  90. data/src/rails_admin/ui.js +4 -54
  91. data/src/rails_admin/widgets.js +38 -48
  92. data/vendor/assets/javascripts/rails_admin/bootstrap.js +5046 -0
  93. data/vendor/assets/javascripts/rails_admin/flatpickr-with-locales.js +10683 -0
  94. data/vendor/assets/javascripts/rails_admin/popper.js +1974 -0
  95. data/vendor/assets/stylesheets/rails_admin/bootstrap/_accordion.scss +118 -0
  96. data/vendor/assets/stylesheets/rails_admin/bootstrap/_alert.scss +57 -0
  97. data/vendor/assets/stylesheets/rails_admin/bootstrap/_badge.scss +29 -0
  98. data/vendor/assets/stylesheets/rails_admin/bootstrap/_breadcrumb.scss +28 -0
  99. data/vendor/assets/stylesheets/rails_admin/bootstrap/_button-group.scss +139 -0
  100. data/vendor/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +64 -110
  101. data/vendor/assets/stylesheets/rails_admin/bootstrap/_card.scss +216 -0
  102. data/vendor/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +162 -176
  103. data/vendor/assets/stylesheets/rails_admin/bootstrap/_close.scss +31 -26
  104. data/vendor/assets/stylesheets/rails_admin/bootstrap/_containers.scss +41 -0
  105. data/vendor/assets/stylesheets/rails_admin/bootstrap/_dropdown.scss +240 -0
  106. data/vendor/assets/stylesheets/rails_admin/bootstrap/_forms.scss +9 -538
  107. data/vendor/assets/stylesheets/rails_admin/bootstrap/_functions.scss +302 -0
  108. data/vendor/assets/stylesheets/rails_admin/bootstrap/_grid.scss +18 -69
  109. data/vendor/assets/stylesheets/rails_admin/bootstrap/_helpers.scss +9 -0
  110. data/vendor/assets/stylesheets/rails_admin/bootstrap/_images.scss +42 -0
  111. data/vendor/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +127 -84
  112. data/vendor/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +26 -22
  113. data/vendor/assets/stylesheets/rails_admin/bootstrap/_modal.scss +209 -0
  114. data/vendor/assets/stylesheets/rails_admin/bootstrap/_nav.scss +139 -0
  115. data/vendor/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +218 -542
  116. data/vendor/assets/stylesheets/rails_admin/bootstrap/_offcanvas.scss +83 -0
  117. data/vendor/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +46 -70
  118. data/vendor/assets/stylesheets/rails_admin/bootstrap/_placeholders.scss +51 -0
  119. data/vendor/assets/stylesheets/rails_admin/bootstrap/_popover.scss +158 -0
  120. data/vendor/assets/stylesheets/rails_admin/bootstrap/_progress.scss +48 -0
  121. data/vendor/assets/stylesheets/rails_admin/bootstrap/_reboot.scss +625 -0
  122. data/vendor/assets/stylesheets/rails_admin/bootstrap/_root.scss +54 -0
  123. data/vendor/assets/stylesheets/rails_admin/bootstrap/_spinners.scss +69 -0
  124. data/vendor/assets/stylesheets/rails_admin/bootstrap/_tables.scss +100 -178
  125. data/vendor/assets/stylesheets/rails_admin/bootstrap/_toasts.scss +51 -0
  126. data/vendor/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +97 -77
  127. data/vendor/assets/stylesheets/rails_admin/bootstrap/_transitions.scss +27 -0
  128. data/vendor/assets/stylesheets/rails_admin/bootstrap/_type.scss +54 -254
  129. data/vendor/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +628 -55
  130. data/vendor/assets/stylesheets/rails_admin/bootstrap/_variables.scss +1572 -781
  131. data/vendor/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +38 -35
  132. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_floating-labels.scss +63 -0
  133. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-check.scss +152 -0
  134. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-control.scss +219 -0
  135. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-range.scss +91 -0
  136. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-select.scss +72 -0
  137. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-text.scss +11 -0
  138. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_input-group.scss +121 -0
  139. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_labels.scss +36 -0
  140. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_validation.scss +12 -0
  141. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_clearfix.scss +3 -0
  142. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_colored-links.scss +12 -0
  143. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_position.scss +30 -0
  144. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_ratio.scss +26 -0
  145. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stacks.scss +15 -0
  146. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stretched-link.scss +15 -0
  147. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_text-truncation.scss +7 -0
  148. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_visually-hidden.scss +8 -0
  149. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_vr.scss +8 -0
  150. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_alert.scss +11 -0
  151. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_backdrop.scss +14 -0
  152. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +72 -12
  153. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_box-shadow.scss +18 -0
  154. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_breakpoints.scss +127 -0
  155. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +113 -30
  156. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_caret.scss +64 -0
  157. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +5 -18
  158. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_color-scheme.scss +7 -0
  159. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_container.scss +9 -0
  160. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_deprecate.scss +10 -0
  161. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +130 -70
  162. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +27 -38
  163. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +127 -98
  164. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +6 -24
  165. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +13 -20
  166. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_lists.scss +7 -0
  167. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +24 -16
  168. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-text.scss +17 -0
  169. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +1 -1
  170. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_table-variants.scss +21 -0
  171. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/{_text-overflow.scss → _text-truncate.scss} +2 -2
  172. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_transition.scss +26 -0
  173. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_utilities.scss +89 -0
  174. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_visually-hidden.scss +29 -0
  175. data/vendor/assets/stylesheets/rails_admin/bootstrap/utilities/_api.scss +47 -0
  176. data/vendor/assets/stylesheets/rails_admin/bootstrap/vendor/_rfs.scss +354 -0
  177. data/vendor/assets/stylesheets/rails_admin/flatpickr.css +791 -0
  178. metadata +80 -91
  179. data/app/assets/stylesheets/rails_admin.scss.erb +0 -76
  180. data/lib/generators/rails_admin/templates/environment.js +0 -6
  181. data/src/rails_admin/styles/themes/cerulean/mixins.scss +0 -0
  182. data/src/rails_admin/styles/themes/cerulean/theming.scss +0 -135
  183. data/src/rails_admin/styles/themes/cerulean/variables.scss +0 -830
  184. data/src/rails_admin/styles/themes/default/mixins.scss +0 -8
  185. data/src/rails_admin/styles/themes/default/theming.scss +0 -11
  186. data/src/rails_admin/styles/themes/default/variables.scss +0 -12
  187. data/src/rails_admin/vendor/jquery.pjax.js +0 -899
  188. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +0 -164
  189. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +0 -95
  190. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +0 -125
  191. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +0 -246
  192. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +0 -212
  193. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +0 -165
  194. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +0 -358
  195. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +0 -123
  196. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +0 -172
  197. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +0 -155
  198. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +0 -677
  199. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +0 -59
  200. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-typeahead.js +0 -1782
  201. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap.js +0 -13
  202. data/vendor/assets/javascripts/rails_admin/bootstrap-datetimepicker.js +0 -2611
  203. data/vendor/assets/javascripts/rails_admin/jquery.pjax.js +0 -898
  204. data/vendor/assets/javascripts/rails_admin/moment-with-locales.js +0 -18085
  205. data/vendor/assets/stylesheets/rails_admin/_bootstrap-datetimepicker.scss +0 -343
  206. data/vendor/assets/stylesheets/rails_admin/bootstrap/_alerts.scss +0 -68
  207. data/vendor/assets/stylesheets/rails_admin/bootstrap/_badges.scss +0 -57
  208. data/vendor/assets/stylesheets/rails_admin/bootstrap/_breadcrumbs.scss +0 -26
  209. data/vendor/assets/stylesheets/rails_admin/bootstrap/_button-groups.scss +0 -240
  210. data/vendor/assets/stylesheets/rails_admin/bootstrap/_code.scss +0 -68
  211. data/vendor/assets/stylesheets/rails_admin/bootstrap/_component-animations.scss +0 -35
  212. data/vendor/assets/stylesheets/rails_admin/bootstrap/_dropdowns.scss +0 -215
  213. data/vendor/assets/stylesheets/rails_admin/bootstrap/_glyphicons.scss +0 -237
  214. data/vendor/assets/stylesheets/rails_admin/bootstrap/_input-groups.scss +0 -166
  215. data/vendor/assets/stylesheets/rails_admin/bootstrap/_jumbotron.scss +0 -48
  216. data/vendor/assets/stylesheets/rails_admin/bootstrap/_labels.scss +0 -66
  217. data/vendor/assets/stylesheets/rails_admin/bootstrap/_media.scss +0 -56
  218. data/vendor/assets/stylesheets/rails_admin/bootstrap/_modals.scss +0 -150
  219. data/vendor/assets/stylesheets/rails_admin/bootstrap/_navs.scss +0 -242
  220. data/vendor/assets/stylesheets/rails_admin/bootstrap/_normalize.scss +0 -425
  221. data/vendor/assets/stylesheets/rails_admin/bootstrap/_pager.scss +0 -55
  222. data/vendor/assets/stylesheets/rails_admin/bootstrap/_panels.scss +0 -243
  223. data/vendor/assets/stylesheets/rails_admin/bootstrap/_popovers.scss +0 -133
  224. data/vendor/assets/stylesheets/rails_admin/bootstrap/_print.scss +0 -101
  225. data/vendor/assets/stylesheets/rails_admin/bootstrap/_progress-bars.scss +0 -105
  226. data/vendor/assets/stylesheets/rails_admin/bootstrap/_responsive-embed.scss +0 -34
  227. data/vendor/assets/stylesheets/rails_admin/bootstrap/_responsive-utilities.scss +0 -174
  228. data/vendor/assets/stylesheets/rails_admin/bootstrap/_scaffolding.scss +0 -150
  229. data/vendor/assets/stylesheets/rails_admin/bootstrap/_theme.scss +0 -258
  230. data/vendor/assets/stylesheets/rails_admin/bootstrap/_thumbnails.scss +0 -38
  231. data/vendor/assets/stylesheets/rails_admin/bootstrap/_wells.scss +0 -29
  232. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_alerts.scss +0 -14
  233. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_background-variant.scss +0 -11
  234. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_center-block.scss +0 -7
  235. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_grid-framework.scss +0 -81
  236. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_hide-text.scss +0 -21
  237. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_labels.scss +0 -12
  238. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-divider.scss +0 -10
  239. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-vertical-align.scss +0 -9
  240. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_opacity.scss +0 -8
  241. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_panels.scss +0 -24
  242. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_progress-bar.scss +0 -10
  243. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-filter.scss +0 -8
  244. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_responsive-visibility.scss +0 -21
  245. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_size.scss +0 -10
  246. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_tab-focus.scss +0 -9
  247. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_table-row.scss +0 -28
  248. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_text-emphasis.scss +0 -11
  249. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_vendor-prefixes.scss +0 -219
  250. data/vendor/assets/stylesheets/rails_admin/bootstrap-datetimepicker-build.scss +0 -16
@@ -0,0 +1,216 @@
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
+ }
@@ -1,243 +1,229 @@
1
+ // Notes on the classes:
1
2
  //
2
- // Carousel
3
- // --------------------------------------------------
3
+ // 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically)
4
+ // even when their scroll action started on a carousel, but for compatibility (with Firefox)
5
+ // we're preventing all actions instead
6
+ // 2. The .carousel-item-start and .carousel-item-end is used to indicate where
7
+ // the active slide is heading.
8
+ // 3. .active.carousel-item is the current slide.
9
+ // 4. .active.carousel-item-start and .active.carousel-item-end is the current
10
+ // slide in its in-transition state. Only one of these occurs at a time.
11
+ // 5. .carousel-item-next.carousel-item-start and .carousel-item-prev.carousel-item-end
12
+ // is the upcoming slide in transition.
4
13
 
5
-
6
- // Wrapper for the slide container and indicators
7
14
  .carousel {
8
15
  position: relative;
9
16
  }
10
17
 
18
+ .carousel.pointer-event {
19
+ touch-action: pan-y;
20
+ }
21
+
11
22
  .carousel-inner {
12
23
  position: relative;
24
+ width: 100%;
13
25
  overflow: hidden;
26
+ @include clearfix();
27
+ }
28
+
29
+ .carousel-item {
30
+ position: relative;
31
+ display: none;
32
+ float: left;
14
33
  width: 100%;
34
+ margin-right: -100%;
35
+ backface-visibility: hidden;
36
+ @include transition($carousel-transition);
37
+ }
15
38
 
16
- > .item {
17
- display: none;
18
- position: relative;
19
- @include transition(.6s ease-in-out left);
20
-
21
- // Account for jankitude on images
22
- > img,
23
- > a > img {
24
- @include img-responsive();
25
- line-height: 1;
26
- }
27
- }
39
+ .carousel-item.active,
40
+ .carousel-item-next,
41
+ .carousel-item-prev {
42
+ display: block;
43
+ }
28
44
 
29
- > .active,
30
- > .next,
31
- > .prev {
32
- display: block;
33
- }
45
+ /* rtl:begin:ignore */
46
+ .carousel-item-next:not(.carousel-item-start),
47
+ .active.carousel-item-end {
48
+ transform: translateX(100%);
49
+ }
34
50
 
35
- > .active {
36
- left: 0;
37
- }
51
+ .carousel-item-prev:not(.carousel-item-end),
52
+ .active.carousel-item-start {
53
+ transform: translateX(-100%);
54
+ }
38
55
 
39
- > .next,
40
- > .prev {
41
- position: absolute;
42
- top: 0;
43
- width: 100%;
44
- }
56
+ /* rtl:end:ignore */
45
57
 
46
- > .next {
47
- left: 100%;
48
- }
49
- > .prev {
50
- left: -100%;
51
- }
52
- > .next.left,
53
- > .prev.right {
54
- left: 0;
55
- }
56
58
 
57
- > .active.left {
58
- left: -100%;
59
+ //
60
+ // Alternate transitions
61
+ //
62
+
63
+ .carousel-fade {
64
+ .carousel-item {
65
+ opacity: 0;
66
+ transition-property: opacity;
67
+ transform: none;
59
68
  }
60
- > .active.right {
61
- left: 100%;
69
+
70
+ .carousel-item.active,
71
+ .carousel-item-next.carousel-item-start,
72
+ .carousel-item-prev.carousel-item-end {
73
+ z-index: 1;
74
+ opacity: 1;
62
75
  }
63
76
 
77
+ .active.carousel-item-start,
78
+ .active.carousel-item-end {
79
+ z-index: 0;
80
+ opacity: 0;
81
+ @include transition(opacity 0s $carousel-transition-duration);
82
+ }
64
83
  }
65
84
 
85
+
86
+ //
66
87
  // Left/right controls for nav
67
- // ---------------------------
88
+ //
68
89
 
69
- .carousel-control {
90
+ .carousel-control-prev,
91
+ .carousel-control-next {
70
92
  position: absolute;
71
93
  top: 0;
72
- left: 0;
73
94
  bottom: 0;
95
+ z-index: 1;
96
+ // Use flex for alignment (1-3)
97
+ display: flex; // 1. allow flex styles
98
+ align-items: center; // 2. vertically center contents
99
+ justify-content: center; // 3. horizontally center contents
74
100
  width: $carousel-control-width;
75
- @include opacity($carousel-control-opacity);
76
- font-size: $carousel-control-font-size;
101
+ padding: 0;
77
102
  color: $carousel-control-color;
78
103
  text-align: center;
79
- text-shadow: $carousel-text-shadow;
80
- // We can't have this transition here because WebKit cancels the carousel
81
- // animation if you trip this while in the middle of another animation.
82
-
83
- // Set gradients for backgrounds
84
- &.left {
85
- @include gradient-horizontal($start-color: rgba(0,0,0,.5), $end-color: rgba(0,0,0,.0001));
86
- }
87
- &.right {
88
- left: auto;
89
- right: 0;
90
- @include gradient-horizontal($start-color: rgba(0,0,0,.0001), $end-color: rgba(0,0,0,.5));
91
- }
104
+ background: none;
105
+ border: 0;
106
+ opacity: $carousel-control-opacity;
107
+ @include transition($carousel-control-transition);
92
108
 
93
109
  // Hover/focus state
94
110
  &:hover,
95
111
  &:focus {
96
- outline: 0;
97
112
  color: $carousel-control-color;
98
113
  text-decoration: none;
99
- @include opacity(.9);
100
- }
101
-
102
- // Toggles
103
- .icon-prev,
104
- .icon-next,
105
- .glyphicon-chevron-left,
106
- .glyphicon-chevron-right {
107
- position: absolute;
108
- top: 50%;
109
- z-index: 5;
110
- display: inline-block;
111
- }
112
- .icon-prev,
113
- .glyphicon-chevron-left {
114
- left: 50%;
115
- margin-left: -10px;
116
- }
117
- .icon-next,
118
- .glyphicon-chevron-right {
119
- right: 50%;
120
- margin-right: -10px;
121
- }
122
- .icon-prev,
123
- .icon-next {
124
- width: 20px;
125
- height: 20px;
126
- margin-top: -10px;
127
- font-family: serif;
114
+ outline: 0;
115
+ opacity: $carousel-control-hover-opacity;
128
116
  }
117
+ }
118
+ .carousel-control-prev {
119
+ left: 0;
120
+ background-image: if($enable-gradients, linear-gradient(90deg, rgba($black, .25), rgba($black, .001)), null);
121
+ }
122
+ .carousel-control-next {
123
+ right: 0;
124
+ background-image: if($enable-gradients, linear-gradient(270deg, rgba($black, .25), rgba($black, .001)), null);
125
+ }
129
126
 
127
+ // Icons for within
128
+ .carousel-control-prev-icon,
129
+ .carousel-control-next-icon {
130
+ display: inline-block;
131
+ width: $carousel-control-icon-width;
132
+ height: $carousel-control-icon-width;
133
+ background-repeat: no-repeat;
134
+ background-position: 50%;
135
+ background-size: 100% 100%;
136
+ }
130
137
 
131
- .icon-prev {
132
- &:before {
133
- content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)
134
- }
135
- }
136
- .icon-next {
137
- &:before {
138
- content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)
139
- }
140
- }
138
+ /* rtl:options: {
139
+ "autoRename": true,
140
+ "stringMap":[ {
141
+ "name" : "prev-next",
142
+ "search" : "prev",
143
+ "replace" : "next"
144
+ } ]
145
+ } */
146
+ .carousel-control-prev-icon {
147
+ background-image: escape-svg($carousel-control-prev-icon-bg);
148
+ }
149
+ .carousel-control-next-icon {
150
+ background-image: escape-svg($carousel-control-next-icon-bg);
141
151
  }
142
152
 
143
- // Optional indicator pips
153
+ // Optional indicator pips/controls
144
154
  //
145
- // Add an unordered list with the following class and add a list item for each
146
- // slide your carousel holds.
155
+ // Add a container (such as a list) with the following class and add an item (ideally a focusable control,
156
+ // like a button) with data-bs-target for each slide your carousel holds.
147
157
 
148
158
  .carousel-indicators {
149
159
  position: absolute;
150
- bottom: 10px;
151
- left: 50%;
152
- z-index: 15;
153
- width: 60%;
154
- margin-left: -30%;
155
- padding-left: 0;
160
+ right: 0;
161
+ bottom: 0;
162
+ left: 0;
163
+ z-index: 2;
164
+ display: flex;
165
+ justify-content: center;
166
+ padding: 0;
167
+ // Use the .carousel-control's width as margin so we don't overlay those
168
+ margin-right: $carousel-control-width;
169
+ margin-bottom: 1rem;
170
+ margin-left: $carousel-control-width;
156
171
  list-style: none;
157
- text-align: center;
158
172
 
159
- li {
160
- display: inline-block;
161
- width: 10px;
162
- height: 10px;
163
- margin: 1px;
173
+ [data-bs-target] {
174
+ box-sizing: content-box;
175
+ flex: 0 1 auto;
176
+ width: $carousel-indicator-width;
177
+ height: $carousel-indicator-height;
178
+ padding: 0;
179
+ margin-right: $carousel-indicator-spacer;
180
+ margin-left: $carousel-indicator-spacer;
164
181
  text-indent: -999px;
165
- border: 1px solid $carousel-indicator-border-color;
166
- border-radius: 10px;
167
182
  cursor: pointer;
168
-
169
- // IE8-9 hack for event handling
170
- //
171
- // Internet Explorer 8-9 does not support clicks on elements without a set
172
- // `background-color`. We cannot use `filter` since that's not viewed as a
173
- // background color by the browser. Thus, a hack is needed.
174
- //
175
- // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we
176
- // set alpha transparency for the best results possible.
177
- background-color: #000 \9; // IE8
178
- background-color: rgba(0,0,0,0); // IE9
183
+ background-color: $carousel-indicator-active-bg;
184
+ background-clip: padding-box;
185
+ border: 0;
186
+ // Use transparent borders to increase the hit area by 10px on top and bottom.
187
+ border-top: $carousel-indicator-hit-area-height solid transparent;
188
+ border-bottom: $carousel-indicator-hit-area-height solid transparent;
189
+ opacity: $carousel-indicator-opacity;
190
+ @include transition($carousel-indicator-transition);
179
191
  }
192
+
180
193
  .active {
181
- margin: 0;
182
- width: 12px;
183
- height: 12px;
184
- background-color: $carousel-indicator-active-bg;
194
+ opacity: $carousel-indicator-active-opacity;
185
195
  }
186
196
  }
187
197
 
198
+
188
199
  // Optional captions
189
- // -----------------------------
190
- // Hidden by default for smaller viewports
200
+ //
201
+ //
202
+
191
203
  .carousel-caption {
192
204
  position: absolute;
193
- left: 15%;
194
- right: 15%;
195
- bottom: 20px;
196
- z-index: 10;
197
- padding-top: 20px;
198
- padding-bottom: 20px;
205
+ right: (100% - $carousel-caption-width) * .5;
206
+ bottom: $carousel-caption-spacer;
207
+ left: (100% - $carousel-caption-width) * .5;
208
+ padding-top: $carousel-caption-padding-y;
209
+ padding-bottom: $carousel-caption-padding-y;
199
210
  color: $carousel-caption-color;
200
211
  text-align: center;
201
- text-shadow: $carousel-text-shadow;
202
- & .btn {
203
- text-shadow: none; // No shadow for button elements in carousel-caption
204
- }
205
212
  }
206
213
 
214
+ // Dark mode carousel
207
215
 
208
- // Scale up controls for tablets and up
209
- @media screen and (min-width: $screen-sm-min) {
210
-
211
- // Scale up the controls a smidge
212
- .carousel-control {
213
- .glyphicon-chevron-left,
214
- .glyphicon-chevron-right,
215
- .icon-prev,
216
- .icon-next {
217
- width: 30px;
218
- height: 30px;
219
- margin-top: -15px;
220
- font-size: 30px;
221
- }
222
- .glyphicon-chevron-left,
223
- .icon-prev {
224
- margin-left: -15px;
225
- }
226
- .glyphicon-chevron-right,
227
- .icon-next {
228
- margin-right: -15px;
229
- }
216
+ .carousel-dark {
217
+ .carousel-control-prev-icon,
218
+ .carousel-control-next-icon {
219
+ filter: $carousel-dark-control-icon-filter;
230
220
  }
231
221
 
232
- // Show and left align the captions
233
- .carousel-caption {
234
- left: 20%;
235
- right: 20%;
236
- padding-bottom: 30px;
222
+ .carousel-indicators [data-bs-target] {
223
+ background-color: $carousel-dark-indicator-active-bg;
237
224
  }
238
225
 
239
- // Move up the indicators
240
- .carousel-indicators {
241
- bottom: 20px;
226
+ .carousel-caption {
227
+ color: $carousel-dark-caption-color;
242
228
  }
243
229
  }
@@ -1,35 +1,40 @@
1
- //
2
- // Close icons
3
- // --------------------------------------------------
1
+ // transparent background and border properties included for button version.
2
+ // iOS requires the button element instead of an anchor tag.
3
+ // If you want the anchor version, it requires `href="#"`.
4
+ // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
4
5
 
6
+ .btn-close {
7
+ box-sizing: content-box;
8
+ width: $btn-close-width;
9
+ height: $btn-close-height;
10
+ padding: $btn-close-padding-y $btn-close-padding-x;
11
+ color: $btn-close-color;
12
+ background: transparent escape-svg($btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements
13
+ border: 0; // for button elements
14
+ @include border-radius();
15
+ opacity: $btn-close-opacity;
5
16
 
6
- .close {
7
- float: right;
8
- font-size: ($font-size-base * 1.5);
9
- font-weight: $close-font-weight;
10
- line-height: 1;
11
- color: $close-color;
12
- text-shadow: $close-text-shadow;
13
- @include opacity(.2);
17
+ // Override <a>'s hover style
18
+ &:hover {
19
+ color: $btn-close-color;
20
+ text-decoration: none;
21
+ opacity: $btn-close-hover-opacity;
22
+ }
14
23
 
15
- &:hover,
16
24
  &:focus {
17
- color: $close-color;
18
- text-decoration: none;
19
- cursor: pointer;
20
- @include opacity(.5);
25
+ outline: 0;
26
+ box-shadow: $btn-close-focus-shadow;
27
+ opacity: $btn-close-focus-opacity;
21
28
  }
22
29
 
23
- // [converter] extracted button& to button.close
30
+ &:disabled,
31
+ &.disabled {
32
+ pointer-events: none;
33
+ user-select: none;
34
+ opacity: $btn-close-disabled-opacity;
35
+ }
24
36
  }
25
37
 
26
- // Additional properties for button version
27
- // iOS requires the button element instead of an anchor tag.
28
- // If you want the anchor version, it requires `href="#"`.
29
- button.close {
30
- padding: 0;
31
- cursor: pointer;
32
- background: transparent;
33
- border: 0;
34
- -webkit-appearance: none;
38
+ .btn-close-white {
39
+ filter: $btn-close-white-filter;
35
40
  }