cm-admin 1.1.8 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (153) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.vscode/settings.json +3 -0
  4. data/Gemfile.lock +1 -1
  5. data/app/assets/javascripts/cm_admin/scaffolds.js +6 -0
  6. data/app/assets/javascripts/cm_admin/shared_scaffolds.js +97 -81
  7. data/app/assets/stylesheets/cm_admin/base/form.scss +31 -225
  8. data/app/assets/stylesheets/cm_admin/base/navbar.scss +11 -38
  9. data/app/assets/stylesheets/cm_admin/base/quicksearch.scss +3 -4
  10. data/app/assets/stylesheets/cm_admin/base/scaffold.scss +8 -5
  11. data/app/assets/stylesheets/cm_admin/base/show.scss +17 -35
  12. data/app/assets/stylesheets/cm_admin/base/table.scss +8 -14
  13. data/app/assets/stylesheets/cm_admin/components/_buttons.scss +28 -140
  14. data/app/assets/stylesheets/cm_admin/components/_modal.scss +7 -30
  15. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_accordion.scss +158 -0
  16. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_alert.scss +68 -0
  17. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_badge.scss +38 -0
  18. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_breadcrumb.scss +40 -0
  19. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_button-group.scss +142 -0
  20. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_buttons.scss +207 -0
  21. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_card.scss +239 -0
  22. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_carousel.scss +244 -0
  23. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_close.scss +63 -0
  24. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_containers.scss +41 -0
  25. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_dropdown.scss +250 -0
  26. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_forms.scss +9 -0
  27. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_functions.scss +302 -0
  28. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_grid.scss +39 -0
  29. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_helpers.scss +12 -0
  30. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_images.scss +42 -0
  31. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_list-group.scss +197 -0
  32. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_maps.scss +174 -0
  33. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_mixins.scss +42 -0
  34. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_modal.scss +237 -0
  35. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_nav.scss +197 -0
  36. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_navbar.scss +289 -0
  37. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_offcanvas.scss +146 -0
  38. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_pagination.scss +109 -0
  39. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_placeholders.scss +51 -0
  40. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_popover.scss +196 -0
  41. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_progress.scss +68 -0
  42. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_reboot.scss +610 -0
  43. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_root.scss +184 -0
  44. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_spinners.scss +85 -0
  45. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_tables.scss +171 -0
  46. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_toasts.scss +73 -0
  47. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_tooltip.scss +119 -0
  48. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_transitions.scss +27 -0
  49. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_type.scss +106 -0
  50. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_utilities.scss +806 -0
  51. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_variables-dark.scss +85 -0
  52. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/_variables.scss +1745 -0
  53. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/bootstrap-grid.scss +62 -0
  54. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/bootstrap-reboot.scss +10 -0
  55. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/bootstrap-utilities.scss +19 -0
  56. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/bootstrap.scss +52 -0
  57. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/forms/_floating-labels.scss +95 -0
  58. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/forms/_form-check.scss +188 -0
  59. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/forms/_form-control.scss +214 -0
  60. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/forms/_form-range.scss +91 -0
  61. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/forms/_form-select.scss +80 -0
  62. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/forms/_form-text.scss +11 -0
  63. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/forms/_input-group.scss +132 -0
  64. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/forms/_labels.scss +36 -0
  65. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/forms/_validation.scss +12 -0
  66. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/helpers/_clearfix.scss +3 -0
  67. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/helpers/_color-bg.scss +7 -0
  68. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/helpers/_colored-links.scss +30 -0
  69. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/helpers/_focus-ring.scss +5 -0
  70. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/helpers/_icon-link.scss +25 -0
  71. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/helpers/_position.scss +36 -0
  72. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/helpers/_ratio.scss +26 -0
  73. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/helpers/_stacks.scss +15 -0
  74. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/helpers/_stretched-link.scss +15 -0
  75. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/helpers/_text-truncation.scss +7 -0
  76. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/helpers/_visually-hidden.scss +8 -0
  77. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/helpers/_vr.scss +8 -0
  78. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_alert.scss +18 -0
  79. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_backdrop.scss +14 -0
  80. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_banner.scss +7 -0
  81. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_border-radius.scss +78 -0
  82. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_box-shadow.scss +18 -0
  83. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_breakpoints.scss +127 -0
  84. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_buttons.scss +70 -0
  85. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_caret.scss +69 -0
  86. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_clearfix.scss +9 -0
  87. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_color-mode.scss +21 -0
  88. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_color-scheme.scss +7 -0
  89. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_container.scss +11 -0
  90. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_deprecate.scss +10 -0
  91. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_forms.scss +153 -0
  92. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_gradients.scss +47 -0
  93. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_grid.scss +151 -0
  94. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_image.scss +16 -0
  95. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_list-group.scss +26 -0
  96. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_lists.scss +7 -0
  97. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_pagination.scss +10 -0
  98. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_reset-text.scss +17 -0
  99. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_resize.scss +6 -0
  100. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_table-variants.scss +24 -0
  101. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_text-truncate.scss +8 -0
  102. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_transition.scss +26 -0
  103. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_utilities.scss +97 -0
  104. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/mixins/_visually-hidden.scss +33 -0
  105. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/tests/jasmine.js +16 -0
  106. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/tests/mixins/_color-modes.test.scss +69 -0
  107. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/tests/mixins/_media-query-color-mode-full.test.scss +8 -0
  108. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/tests/mixins/_utilities.test.scss +393 -0
  109. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/tests/sass-true/register.js +14 -0
  110. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/tests/sass-true/runner.js +17 -0
  111. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/tests/utilities/_api.test.scss +75 -0
  112. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/utilities/_api.scss +47 -0
  113. data/app/assets/stylesheets/cm_admin/dependency/bootstrap/scss/vendor/_rfs.scss +348 -0
  114. data/app/assets/stylesheets/cm_admin/dependency/bootstrap.min.css +4 -5
  115. data/app/assets/stylesheets/cm_admin/pages/import_page.scss +3 -10
  116. data/app/controllers/cm_admin/resource_controller.rb +22 -5
  117. data/app/helpers/cm_admin/application_helper.rb +4 -4
  118. data/app/views/cm_admin/main/_actions_dropdown.html.slim +3 -5
  119. data/app/views/cm_admin/main/_associated_table.html.slim +1 -1
  120. data/app/views/cm_admin/main/_custom_action_modal_form.html.slim +6 -0
  121. data/app/views/cm_admin/main/_nested_fields.html.slim +36 -16
  122. data/app/views/cm_admin/main/_nested_table_form.html.slim +17 -8
  123. data/app/views/cm_admin/main/_nested_table_section.html.slim +17 -0
  124. data/app/views/cm_admin/main/_show_section.html.slim +10 -0
  125. data/app/views/cm_admin/main/_tabs.html.slim +2 -2
  126. data/app/views/cm_admin/main/_top_navbar.html.slim +17 -17
  127. data/app/views/cm_admin/main/associated_show.html.slim +5 -4
  128. data/app/views/cm_admin/main/edit.html.slim +18 -18
  129. data/app/views/cm_admin/main/history.html.slim +5 -6
  130. data/app/views/cm_admin/main/import_form.html.slim +3 -3
  131. data/app/views/cm_admin/main/new.html.slim +17 -17
  132. data/app/views/cm_admin/main/show.html.slim +12 -13
  133. data/app/views/layouts/_custom_action_modal.html.slim +11 -0
  134. data/app/views/layouts/_custom_action_modals.html.slim +13 -9
  135. data/app/views/layouts/_destroy_action_modal.html.slim +16 -0
  136. data/app/views/layouts/_quick_links.html.slim +2 -2
  137. data/app/views/layouts/cm_admin.html.slim +13 -15
  138. data/config/routes.rb +1 -3
  139. data/lib/cm_admin/model.rb +1 -0
  140. data/lib/cm_admin/models/custom_action.rb +6 -0
  141. data/lib/cm_admin/models/dsl_method.rb +9 -4
  142. data/lib/cm_admin/models/field.rb +2 -1
  143. data/lib/cm_admin/models/form_field.rb +2 -1
  144. data/lib/cm_admin/models/row.rb +40 -0
  145. data/lib/cm_admin/models/section.rb +20 -3
  146. data/lib/cm_admin/version.rb +1 -1
  147. data/lib/cm_admin/view_helpers/field_display_helper.rb +3 -3
  148. data/lib/cm_admin/view_helpers/form_field_helper.rb +40 -14
  149. data/lib/cm_admin/view_helpers/form_helper.rb +60 -22
  150. data/lib/cm_admin/view_helpers/manage_column_popup_helper.rb +2 -2
  151. data/lib/cm_admin/view_helpers/page_info_helper.rb +4 -4
  152. data/lib/cm_admin/view_helpers.rb +3 -2
  153. metadata +108 -2
@@ -0,0 +1,174 @@
1
+ // Re-assigned maps
2
+ //
3
+ // Placed here so that others can override the default Sass maps and see automatic updates to utilities and more.
4
+
5
+ // scss-docs-start theme-colors-rgb
6
+ $theme-colors-rgb: map-loop($theme-colors, to-rgb, "$value") !default;
7
+ // scss-docs-end theme-colors-rgb
8
+
9
+ // scss-docs-start theme-text-map
10
+ $theme-colors-text: (
11
+ "primary": $primary-text-emphasis,
12
+ "secondary": $secondary-text-emphasis,
13
+ "success": $success-text-emphasis,
14
+ "info": $info-text-emphasis,
15
+ "warning": $warning-text-emphasis,
16
+ "danger": $danger-text-emphasis,
17
+ "light": $light-text-emphasis,
18
+ "dark": $dark-text-emphasis,
19
+ ) !default;
20
+ // scss-docs-end theme-text-map
21
+
22
+ // scss-docs-start theme-bg-subtle-map
23
+ $theme-colors-bg-subtle: (
24
+ "primary": $primary-bg-subtle,
25
+ "secondary": $secondary-bg-subtle,
26
+ "success": $success-bg-subtle,
27
+ "info": $info-bg-subtle,
28
+ "warning": $warning-bg-subtle,
29
+ "danger": $danger-bg-subtle,
30
+ "light": $light-bg-subtle,
31
+ "dark": $dark-bg-subtle,
32
+ ) !default;
33
+ // scss-docs-end theme-bg-subtle-map
34
+
35
+ // scss-docs-start theme-border-subtle-map
36
+ $theme-colors-border-subtle: (
37
+ "primary": $primary-border-subtle,
38
+ "secondary": $secondary-border-subtle,
39
+ "success": $success-border-subtle,
40
+ "info": $info-border-subtle,
41
+ "warning": $warning-border-subtle,
42
+ "danger": $danger-border-subtle,
43
+ "light": $light-border-subtle,
44
+ "dark": $dark-border-subtle,
45
+ ) !default;
46
+ // scss-docs-end theme-border-subtle-map
47
+
48
+ $theme-colors-text-dark: null !default;
49
+ $theme-colors-bg-subtle-dark: null !default;
50
+ $theme-colors-border-subtle-dark: null !default;
51
+
52
+ @if $enable-dark-mode {
53
+ // scss-docs-start theme-text-dark-map
54
+ $theme-colors-text-dark: (
55
+ "primary": $primary-text-emphasis-dark,
56
+ "secondary": $secondary-text-emphasis-dark,
57
+ "success": $success-text-emphasis-dark,
58
+ "info": $info-text-emphasis-dark,
59
+ "warning": $warning-text-emphasis-dark,
60
+ "danger": $danger-text-emphasis-dark,
61
+ "light": $light-text-emphasis-dark,
62
+ "dark": $dark-text-emphasis-dark,
63
+ ) !default;
64
+ // scss-docs-end theme-text-dark-map
65
+
66
+ // scss-docs-start theme-bg-subtle-dark-map
67
+ $theme-colors-bg-subtle-dark: (
68
+ "primary": $primary-bg-subtle-dark,
69
+ "secondary": $secondary-bg-subtle-dark,
70
+ "success": $success-bg-subtle-dark,
71
+ "info": $info-bg-subtle-dark,
72
+ "warning": $warning-bg-subtle-dark,
73
+ "danger": $danger-bg-subtle-dark,
74
+ "light": $light-bg-subtle-dark,
75
+ "dark": $dark-bg-subtle-dark,
76
+ ) !default;
77
+ // scss-docs-end theme-bg-subtle-dark-map
78
+
79
+ // scss-docs-start theme-border-subtle-dark-map
80
+ $theme-colors-border-subtle-dark: (
81
+ "primary": $primary-border-subtle-dark,
82
+ "secondary": $secondary-border-subtle-dark,
83
+ "success": $success-border-subtle-dark,
84
+ "info": $info-border-subtle-dark,
85
+ "warning": $warning-border-subtle-dark,
86
+ "danger": $danger-border-subtle-dark,
87
+ "light": $light-border-subtle-dark,
88
+ "dark": $dark-border-subtle-dark,
89
+ ) !default;
90
+ // scss-docs-end theme-border-subtle-dark-map
91
+ }
92
+
93
+ // Utilities maps
94
+ //
95
+ // Extends the default `$theme-colors` maps to help create our utilities.
96
+
97
+ // Come v6, we'll de-dupe these variables. Until then, for backward compatibility, we keep them to reassign.
98
+ // scss-docs-start utilities-colors
99
+ $utilities-colors: $theme-colors-rgb !default;
100
+ // scss-docs-end utilities-colors
101
+
102
+ // scss-docs-start utilities-text-colors
103
+ $utilities-text: map-merge(
104
+ $utilities-colors,
105
+ (
106
+ "black": to-rgb($black),
107
+ "white": to-rgb($white),
108
+ "body": to-rgb($body-color)
109
+ )
110
+ ) !default;
111
+ $utilities-text-colors: map-loop($utilities-text, rgba-css-var, "$key", "text") !default;
112
+
113
+ $utilities-text-emphasis-colors: (
114
+ "primary-emphasis": var(--#{$prefix}primary-text-emphasis),
115
+ "secondary-emphasis": var(--#{$prefix}secondary-text-emphasis),
116
+ "success-emphasis": var(--#{$prefix}success-text-emphasis),
117
+ "info-emphasis": var(--#{$prefix}info-text-emphasis),
118
+ "warning-emphasis": var(--#{$prefix}warning-text-emphasis),
119
+ "danger-emphasis": var(--#{$prefix}danger-text-emphasis),
120
+ "light-emphasis": var(--#{$prefix}light-text-emphasis),
121
+ "dark-emphasis": var(--#{$prefix}dark-text-emphasis)
122
+ ) !default;
123
+ // scss-docs-end utilities-text-colors
124
+
125
+ // scss-docs-start utilities-bg-colors
126
+ $utilities-bg: map-merge(
127
+ $utilities-colors,
128
+ (
129
+ "black": to-rgb($black),
130
+ "white": to-rgb($white),
131
+ "body": to-rgb($body-bg)
132
+ )
133
+ ) !default;
134
+ $utilities-bg-colors: map-loop($utilities-bg, rgba-css-var, "$key", "bg") !default;
135
+
136
+ $utilities-bg-subtle: (
137
+ "primary-subtle": var(--#{$prefix}primary-bg-subtle),
138
+ "secondary-subtle": var(--#{$prefix}secondary-bg-subtle),
139
+ "success-subtle": var(--#{$prefix}success-bg-subtle),
140
+ "info-subtle": var(--#{$prefix}info-bg-subtle),
141
+ "warning-subtle": var(--#{$prefix}warning-bg-subtle),
142
+ "danger-subtle": var(--#{$prefix}danger-bg-subtle),
143
+ "light-subtle": var(--#{$prefix}light-bg-subtle),
144
+ "dark-subtle": var(--#{$prefix}dark-bg-subtle)
145
+ ) !default;
146
+ // scss-docs-end utilities-bg-colors
147
+
148
+ // scss-docs-start utilities-border-colors
149
+ $utilities-border: map-merge(
150
+ $utilities-colors,
151
+ (
152
+ "black": to-rgb($black),
153
+ "white": to-rgb($white)
154
+ )
155
+ ) !default;
156
+ $utilities-border-colors: map-loop($utilities-border, rgba-css-var, "$key", "border") !default;
157
+
158
+ $utilities-border-subtle: (
159
+ "primary-subtle": var(--#{$prefix}primary-border-subtle),
160
+ "secondary-subtle": var(--#{$prefix}secondary-border-subtle),
161
+ "success-subtle": var(--#{$prefix}success-border-subtle),
162
+ "info-subtle": var(--#{$prefix}info-border-subtle),
163
+ "warning-subtle": var(--#{$prefix}warning-border-subtle),
164
+ "danger-subtle": var(--#{$prefix}danger-border-subtle),
165
+ "light-subtle": var(--#{$prefix}light-border-subtle),
166
+ "dark-subtle": var(--#{$prefix}dark-border-subtle)
167
+ ) !default;
168
+ // scss-docs-end utilities-border-colors
169
+
170
+ $utilities-links-underline: map-loop($utilities-colors, rgba-css-var, "$key", "link-underline") !default;
171
+
172
+ $negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;
173
+
174
+ $gutters: $spacers !default;
@@ -0,0 +1,42 @@
1
+ // Toggles
2
+ //
3
+ // Used in conjunction with global variables to enable certain theme features.
4
+
5
+ // Vendor
6
+ @import "vendor/rfs";
7
+
8
+ // Deprecate
9
+ @import "mixins/deprecate";
10
+
11
+ // Helpers
12
+ @import "mixins/breakpoints";
13
+ @import "mixins/color-mode";
14
+ @import "mixins/color-scheme";
15
+ @import "mixins/image";
16
+ @import "mixins/resize";
17
+ @import "mixins/visually-hidden";
18
+ @import "mixins/reset-text";
19
+ @import "mixins/text-truncate";
20
+
21
+ // Utilities
22
+ @import "mixins/utilities";
23
+
24
+ // Components
25
+ @import "mixins/backdrop";
26
+ @import "mixins/buttons";
27
+ @import "mixins/caret";
28
+ @import "mixins/pagination";
29
+ @import "mixins/lists";
30
+ @import "mixins/forms";
31
+ @import "mixins/table-variants";
32
+
33
+ // Skins
34
+ @import "mixins/border-radius";
35
+ @import "mixins/box-shadow";
36
+ @import "mixins/gradients";
37
+ @import "mixins/transition";
38
+
39
+ // Layout
40
+ @import "mixins/clearfix";
41
+ @import "mixins/container";
42
+ @import "mixins/grid";
@@ -0,0 +1,237 @@
1
+ // stylelint-disable function-disallowed-list
2
+
3
+ // .modal-open - body class for killing the scroll
4
+ // .modal - container to scroll within
5
+ // .modal-dialog - positioning shell for the actual modal
6
+ // .modal-content - actual modal w/ bg and corners and stuff
7
+
8
+
9
+ // Container that the modal scrolls within
10
+ .modal {
11
+ // scss-docs-start modal-css-vars
12
+ --#{$prefix}modal-zindex: #{$zindex-modal};
13
+ --#{$prefix}modal-width: #{$modal-md};
14
+ --#{$prefix}modal-padding: #{$modal-inner-padding};
15
+ --#{$prefix}modal-margin: #{$modal-dialog-margin};
16
+ --#{$prefix}modal-color: #{$modal-content-color};
17
+ --#{$prefix}modal-bg: #{$modal-content-bg};
18
+ --#{$prefix}modal-border-color: #{$modal-content-border-color};
19
+ --#{$prefix}modal-border-width: #{$modal-content-border-width};
20
+ --#{$prefix}modal-border-radius: #{$modal-content-border-radius};
21
+ --#{$prefix}modal-box-shadow: #{$modal-content-box-shadow-xs};
22
+ --#{$prefix}modal-inner-border-radius: #{$modal-content-inner-border-radius};
23
+ --#{$prefix}modal-header-padding-x: #{$modal-header-padding-x};
24
+ --#{$prefix}modal-header-padding-y: #{$modal-header-padding-y};
25
+ --#{$prefix}modal-header-padding: #{$modal-header-padding}; // Todo in v6: Split this padding into x and y
26
+ --#{$prefix}modal-header-border-color: #{$modal-header-border-color};
27
+ --#{$prefix}modal-header-border-width: #{$modal-header-border-width};
28
+ --#{$prefix}modal-title-line-height: #{$modal-title-line-height};
29
+ --#{$prefix}modal-footer-gap: #{$modal-footer-margin-between};
30
+ --#{$prefix}modal-footer-bg: #{$modal-footer-bg};
31
+ --#{$prefix}modal-footer-border-color: #{$modal-footer-border-color};
32
+ --#{$prefix}modal-footer-border-width: #{$modal-footer-border-width};
33
+ // scss-docs-end modal-css-vars
34
+
35
+ position: fixed;
36
+ top: 0;
37
+ left: 0;
38
+ z-index: var(--#{$prefix}modal-zindex);
39
+ display: none;
40
+ width: 100%;
41
+ height: 100%;
42
+ overflow-x: hidden;
43
+ overflow-y: auto;
44
+ // Prevent Chrome on Windows from adding a focus outline. For details, see
45
+ // https://github.com/twbs/bootstrap/pull/10951.
46
+ outline: 0;
47
+ // We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a
48
+ // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342
49
+ // See also https://github.com/twbs/bootstrap/issues/17695
50
+ }
51
+
52
+ // Shell div to position the modal with bottom padding
53
+ .modal-dialog {
54
+ position: relative;
55
+ width: auto;
56
+ margin: var(--#{$prefix}modal-margin);
57
+ // allow clicks to pass through for custom click handling to close modal
58
+ pointer-events: none;
59
+
60
+ // When fading in the modal, animate it to slide down
61
+ .modal.fade & {
62
+ @include transition($modal-transition);
63
+ transform: $modal-fade-transform;
64
+ }
65
+ .modal.show & {
66
+ transform: $modal-show-transform;
67
+ }
68
+
69
+ // When trying to close, animate focus to scale
70
+ .modal.modal-static & {
71
+ transform: $modal-scale-transform;
72
+ }
73
+ }
74
+
75
+ .modal-dialog-scrollable {
76
+ height: calc(100% - var(--#{$prefix}modal-margin) * 2);
77
+
78
+ .modal-content {
79
+ max-height: 100%;
80
+ overflow: hidden;
81
+ }
82
+
83
+ .modal-body {
84
+ overflow-y: auto;
85
+ }
86
+ }
87
+
88
+ .modal-dialog-centered {
89
+ display: flex;
90
+ align-items: center;
91
+ min-height: calc(100% - var(--#{$prefix}modal-margin) * 2);
92
+ }
93
+
94
+ // Actual modal
95
+ .modal-content {
96
+ position: relative;
97
+ display: flex;
98
+ flex-direction: column;
99
+ width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`
100
+ // counteract the pointer-events: none; in the .modal-dialog
101
+ color: var(--#{$prefix}modal-color);
102
+ pointer-events: auto;
103
+ background-color: var(--#{$prefix}modal-bg);
104
+ background-clip: padding-box;
105
+ border: var(--#{$prefix}modal-border-width) solid var(--#{$prefix}modal-border-color);
106
+ @include border-radius(var(--#{$prefix}modal-border-radius));
107
+ @include box-shadow(var(--#{$prefix}modal-box-shadow));
108
+ // Remove focus outline from opened modal
109
+ outline: 0;
110
+ }
111
+
112
+ // Modal background
113
+ .modal-backdrop {
114
+ // scss-docs-start modal-backdrop-css-vars
115
+ --#{$prefix}backdrop-zindex: #{$zindex-modal-backdrop};
116
+ --#{$prefix}backdrop-bg: #{$modal-backdrop-bg};
117
+ --#{$prefix}backdrop-opacity: #{$modal-backdrop-opacity};
118
+ // scss-docs-end modal-backdrop-css-vars
119
+
120
+ @include overlay-backdrop(var(--#{$prefix}backdrop-zindex), var(--#{$prefix}backdrop-bg), var(--#{$prefix}backdrop-opacity));
121
+ }
122
+
123
+ // Modal header
124
+ // Top section of the modal w/ title and dismiss
125
+ .modal-header {
126
+ display: flex;
127
+ flex-shrink: 0;
128
+ align-items: center;
129
+ justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends
130
+ padding: var(--#{$prefix}modal-header-padding);
131
+ border-bottom: var(--#{$prefix}modal-header-border-width) solid var(--#{$prefix}modal-header-border-color);
132
+ @include border-top-radius(var(--#{$prefix}modal-inner-border-radius));
133
+
134
+ .btn-close {
135
+ padding: calc(var(--#{$prefix}modal-header-padding-y) * .5) calc(var(--#{$prefix}modal-header-padding-x) * .5);
136
+ margin: calc(-.5 * var(--#{$prefix}modal-header-padding-y)) calc(-.5 * var(--#{$prefix}modal-header-padding-x)) calc(-.5 * var(--#{$prefix}modal-header-padding-y)) auto;
137
+ }
138
+ }
139
+
140
+ // Title text within header
141
+ .modal-title {
142
+ margin-bottom: 0;
143
+ line-height: var(--#{$prefix}modal-title-line-height);
144
+ }
145
+
146
+ // Modal body
147
+ // Where all modal content resides (sibling of .modal-header and .modal-footer)
148
+ .modal-body {
149
+ position: relative;
150
+ // Enable `flex-grow: 1` so that the body take up as much space as possible
151
+ // when there should be a fixed height on `.modal-dialog`.
152
+ flex: 1 1 auto;
153
+ padding: var(--#{$prefix}modal-padding);
154
+ }
155
+
156
+ // Footer (for actions)
157
+ .modal-footer {
158
+ display: flex;
159
+ flex-shrink: 0;
160
+ flex-wrap: wrap;
161
+ align-items: center; // vertically center
162
+ justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items
163
+ padding: calc(var(--#{$prefix}modal-padding) - var(--#{$prefix}modal-footer-gap) * .5);
164
+ background-color: var(--#{$prefix}modal-footer-bg);
165
+ border-top: var(--#{$prefix}modal-footer-border-width) solid var(--#{$prefix}modal-footer-border-color);
166
+ @include border-bottom-radius(var(--#{$prefix}modal-inner-border-radius));
167
+
168
+ // Place margin between footer elements
169
+ // This solution is far from ideal because of the universal selector usage,
170
+ // but is needed to fix https://github.com/twbs/bootstrap/issues/24800
171
+ > * {
172
+ margin: calc(var(--#{$prefix}modal-footer-gap) * .5); // Todo in v6: replace with gap on parent class
173
+ }
174
+ }
175
+
176
+ // Scale up the modal
177
+ @include media-breakpoint-up(sm) {
178
+ .modal {
179
+ --#{$prefix}modal-margin: #{$modal-dialog-margin-y-sm-up};
180
+ --#{$prefix}modal-box-shadow: #{$modal-content-box-shadow-sm-up};
181
+ }
182
+
183
+ // Automatically set modal's width for larger viewports
184
+ .modal-dialog {
185
+ max-width: var(--#{$prefix}modal-width);
186
+ margin-right: auto;
187
+ margin-left: auto;
188
+ }
189
+
190
+ .modal-sm {
191
+ --#{$prefix}modal-width: #{$modal-sm};
192
+ }
193
+ }
194
+
195
+ @include media-breakpoint-up(lg) {
196
+ .modal-lg,
197
+ .modal-xl {
198
+ --#{$prefix}modal-width: #{$modal-lg};
199
+ }
200
+ }
201
+
202
+ @include media-breakpoint-up(xl) {
203
+ .modal-xl {
204
+ --#{$prefix}modal-width: #{$modal-xl};
205
+ }
206
+ }
207
+
208
+ // scss-docs-start modal-fullscreen-loop
209
+ @each $breakpoint in map-keys($grid-breakpoints) {
210
+ $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
211
+ $postfix: if($infix != "", $infix + "-down", "");
212
+
213
+ @include media-breakpoint-down($breakpoint) {
214
+ .modal-fullscreen#{$postfix} {
215
+ width: 100vw;
216
+ max-width: none;
217
+ height: 100%;
218
+ margin: 0;
219
+
220
+ .modal-content {
221
+ height: 100%;
222
+ border: 0;
223
+ @include border-radius(0);
224
+ }
225
+
226
+ .modal-header,
227
+ .modal-footer {
228
+ @include border-radius(0);
229
+ }
230
+
231
+ .modal-body {
232
+ overflow-y: auto;
233
+ }
234
+ }
235
+ }
236
+ }
237
+ // scss-docs-end modal-fullscreen-loop
@@ -0,0 +1,197 @@
1
+ // Base class
2
+ //
3
+ // Kickstart any navigation component with a set of style resets. Works with
4
+ // `<nav>`s, `<ul>`s or `<ol>`s.
5
+
6
+ .nav {
7
+ // scss-docs-start nav-css-vars
8
+ --#{$prefix}nav-link-padding-x: #{$nav-link-padding-x};
9
+ --#{$prefix}nav-link-padding-y: #{$nav-link-padding-y};
10
+ @include rfs($nav-link-font-size, --#{$prefix}nav-link-font-size);
11
+ --#{$prefix}nav-link-font-weight: #{$nav-link-font-weight};
12
+ --#{$prefix}nav-link-color: #{$nav-link-color};
13
+ --#{$prefix}nav-link-hover-color: #{$nav-link-hover-color};
14
+ --#{$prefix}nav-link-disabled-color: #{$nav-link-disabled-color};
15
+ // scss-docs-end nav-css-vars
16
+
17
+ display: flex;
18
+ flex-wrap: wrap;
19
+ padding-left: 0;
20
+ margin-bottom: 0;
21
+ list-style: none;
22
+ }
23
+
24
+ .nav-link {
25
+ display: block;
26
+ padding: var(--#{$prefix}nav-link-padding-y) var(--#{$prefix}nav-link-padding-x);
27
+ @include font-size(var(--#{$prefix}nav-link-font-size));
28
+ font-weight: var(--#{$prefix}nav-link-font-weight);
29
+ color: var(--#{$prefix}nav-link-color);
30
+ text-decoration: if($link-decoration == none, null, none);
31
+ background: none;
32
+ border: 0;
33
+ @include transition($nav-link-transition);
34
+
35
+ &:hover,
36
+ &:focus {
37
+ color: var(--#{$prefix}nav-link-hover-color);
38
+ text-decoration: if($link-hover-decoration == underline, none, null);
39
+ }
40
+
41
+ &:focus-visible {
42
+ outline: 0;
43
+ box-shadow: $nav-link-focus-box-shadow;
44
+ }
45
+
46
+ // Disabled state lightens text
47
+ &.disabled,
48
+ &:disabled {
49
+ color: var(--#{$prefix}nav-link-disabled-color);
50
+ pointer-events: none;
51
+ cursor: default;
52
+ }
53
+ }
54
+
55
+ //
56
+ // Tabs
57
+ //
58
+
59
+ .nav-tabs {
60
+ // scss-docs-start nav-tabs-css-vars
61
+ --#{$prefix}nav-tabs-border-width: #{$nav-tabs-border-width};
62
+ --#{$prefix}nav-tabs-border-color: #{$nav-tabs-border-color};
63
+ --#{$prefix}nav-tabs-border-radius: #{$nav-tabs-border-radius};
64
+ --#{$prefix}nav-tabs-link-hover-border-color: #{$nav-tabs-link-hover-border-color};
65
+ --#{$prefix}nav-tabs-link-active-color: #{$nav-tabs-link-active-color};
66
+ --#{$prefix}nav-tabs-link-active-bg: #{$nav-tabs-link-active-bg};
67
+ --#{$prefix}nav-tabs-link-active-border-color: #{$nav-tabs-link-active-border-color};
68
+ // scss-docs-end nav-tabs-css-vars
69
+
70
+ border-bottom: var(--#{$prefix}nav-tabs-border-width) solid var(--#{$prefix}nav-tabs-border-color);
71
+
72
+ .nav-link {
73
+ margin-bottom: calc(-1 * var(--#{$prefix}nav-tabs-border-width)); // stylelint-disable-line function-disallowed-list
74
+ border: var(--#{$prefix}nav-tabs-border-width) solid transparent;
75
+ @include border-top-radius(var(--#{$prefix}nav-tabs-border-radius));
76
+
77
+ &:hover,
78
+ &:focus {
79
+ // Prevents active .nav-link tab overlapping focus outline of previous/next .nav-link
80
+ isolation: isolate;
81
+ border-color: var(--#{$prefix}nav-tabs-link-hover-border-color);
82
+ }
83
+ }
84
+
85
+ .nav-link.active,
86
+ .nav-item.show .nav-link {
87
+ color: var(--#{$prefix}nav-tabs-link-active-color);
88
+ background-color: var(--#{$prefix}nav-tabs-link-active-bg);
89
+ border-color: var(--#{$prefix}nav-tabs-link-active-border-color);
90
+ }
91
+
92
+ .dropdown-menu {
93
+ // Make dropdown border overlap tab border
94
+ margin-top: calc(-1 * var(--#{$prefix}nav-tabs-border-width)); // stylelint-disable-line function-disallowed-list
95
+ // Remove the top rounded corners here since there is a hard edge above the menu
96
+ @include border-top-radius(0);
97
+ }
98
+ }
99
+
100
+
101
+ //
102
+ // Pills
103
+ //
104
+
105
+ .nav-pills {
106
+ // scss-docs-start nav-pills-css-vars
107
+ --#{$prefix}nav-pills-border-radius: #{$nav-pills-border-radius};
108
+ --#{$prefix}nav-pills-link-active-color: #{$nav-pills-link-active-color};
109
+ --#{$prefix}nav-pills-link-active-bg: #{$nav-pills-link-active-bg};
110
+ // scss-docs-end nav-pills-css-vars
111
+
112
+ .nav-link {
113
+ @include border-radius(var(--#{$prefix}nav-pills-border-radius));
114
+ }
115
+
116
+ .nav-link.active,
117
+ .show > .nav-link {
118
+ color: var(--#{$prefix}nav-pills-link-active-color);
119
+ @include gradient-bg(var(--#{$prefix}nav-pills-link-active-bg));
120
+ }
121
+ }
122
+
123
+
124
+ //
125
+ // Underline
126
+ //
127
+
128
+ .nav-underline {
129
+ // scss-docs-start nav-underline-css-vars
130
+ --#{$prefix}nav-underline-gap: #{$nav-underline-gap};
131
+ --#{$prefix}nav-underline-border-width: #{$nav-underline-border-width};
132
+ --#{$prefix}nav-underline-link-active-color: #{$nav-underline-link-active-color};
133
+ // scss-docs-end nav-underline-css-vars
134
+
135
+ gap: var(--#{$prefix}nav-underline-gap);
136
+
137
+ .nav-link {
138
+ padding-right: 0;
139
+ padding-left: 0;
140
+ border-bottom: var(--#{$prefix}nav-underline-border-width) solid transparent;
141
+
142
+ &:hover,
143
+ &:focus {
144
+ border-bottom-color: currentcolor;
145
+ }
146
+ }
147
+
148
+ .nav-link.active,
149
+ .show > .nav-link {
150
+ font-weight: $font-weight-bold;
151
+ color: var(--#{$prefix}nav-underline-link-active-color);
152
+ border-bottom-color: currentcolor;
153
+ }
154
+ }
155
+
156
+
157
+ //
158
+ // Justified variants
159
+ //
160
+
161
+ .nav-fill {
162
+ > .nav-link,
163
+ .nav-item {
164
+ flex: 1 1 auto;
165
+ text-align: center;
166
+ }
167
+ }
168
+
169
+ .nav-justified {
170
+ > .nav-link,
171
+ .nav-item {
172
+ flex-basis: 0;
173
+ flex-grow: 1;
174
+ text-align: center;
175
+ }
176
+ }
177
+
178
+ .nav-fill,
179
+ .nav-justified {
180
+ .nav-item .nav-link {
181
+ width: 100%; // Make sure button will grow
182
+ }
183
+ }
184
+
185
+
186
+ // Tabbable tabs
187
+ //
188
+ // Hide tabbable panes to start, show them when `.active`
189
+
190
+ .tab-content {
191
+ > .tab-pane {
192
+ display: none;
193
+ }
194
+ > .active {
195
+ display: block;
196
+ }
197
+ }