rails_admin 3.0.0.beta2 → 3.0.0.rc

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 (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
  }