headmin 0.2.9 → 0.3.1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +29 -3
- data/Gemfile.lock +12 -1
- data/README.md +64 -57
- data/app/assets/config/headmin_manifest.js +2 -0
- data/app/assets/javascripts/headmin/config/i18n.js +11 -0
- data/{src/js → app/assets/javascripts}/headmin/controllers/blocks_controller.js +0 -1
- data/{src/js → app/assets/javascripts}/headmin/controllers/date_range_controller.js +0 -2
- data/app/assets/javascripts/headmin/controllers/dropzone_controller.js +33 -0
- data/app/assets/javascripts/headmin/controllers/file_preview_controller.js +244 -0
- data/{src/js → app/assets/javascripts}/headmin/controllers/filter_controller.js +12 -6
- data/{src/js → app/assets/javascripts}/headmin/controllers/flatpickr_controller.js +2 -1
- data/app/assets/javascripts/headmin/controllers/hello_controller.js +7 -0
- data/app/assets/javascripts/headmin/controllers/notification_controller.js +8 -0
- data/{src/js → app/assets/javascripts}/headmin/controllers/popup_controller.js +0 -1
- data/app/assets/javascripts/headmin/controllers/redactorx_controller.js +13 -0
- data/app/assets/javascripts/headmin/controllers/select_controller.js +48 -0
- data/{src/js → app/assets/javascripts}/headmin/controllers/table_controller.js +1 -1
- data/app/assets/javascripts/headmin/index.js +41 -0
- data/app/assets/javascripts/headmin.js +15934 -0
- data/{src/scss → app/assets/stylesheets}/headmin/form.scss +51 -2
- data/app/assets/stylesheets/headmin/syntax.scss +349 -0
- data/app/assets/stylesheets/headmin/thumbnail.scss +20 -0
- data/app/assets/stylesheets/headmin/utilities.scss +68 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_accordion.scss +118 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_alert.scss +57 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_badge.scss +29 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_breadcrumb.scss +28 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_button-group.scss +139 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_buttons.scss +111 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_card.scss +216 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_carousel.scss +229 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_close.scss +40 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_containers.scss +41 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_dropdown.scss +240 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_forms.scss +9 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_functions.scss +302 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_grid.scss +33 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_helpers.scss +9 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_images.scss +42 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_list-group.scss +174 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_mixins.scss +43 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_modal.scss +209 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_nav.scss +139 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_navbar.scss +335 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_offcanvas.scss +83 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_pagination.scss +64 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_placeholders.scss +51 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_popover.scss +158 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_progress.scss +48 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_reboot.scss +625 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_root.scss +54 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_spinners.scss +69 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_tables.scss +155 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_toasts.scss +51 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_tooltip.scss +115 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_transitions.scss +27 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_type.scss +104 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_utilities.scss +630 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/_variables.scss +1641 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/bootstrap-grid.scss +67 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/bootstrap-reboot.scss +13 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/bootstrap-utilities.scss +18 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/bootstrap.scss +53 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/forms/_floating-labels.scss +63 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/forms/_form-check.scss +152 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/forms/_form-control.scss +219 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/forms/_form-range.scss +91 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/forms/_form-select.scss +72 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/forms/_form-text.scss +11 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/forms/_input-group.scss +121 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/forms/_labels.scss +36 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/forms/_validation.scss +12 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/helpers/_clearfix.scss +3 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/helpers/_colored-links.scss +12 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/helpers/_position.scss +30 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/helpers/_ratio.scss +26 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/helpers/_stacks.scss +15 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/helpers/_stretched-link.scss +15 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/helpers/_text-truncation.scss +7 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/helpers/_visually-hidden.scss +8 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/helpers/_vr.scss +8 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_alert.scss +11 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_backdrop.scss +14 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_border-radius.scss +78 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_box-shadow.scss +18 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_breakpoints.scss +127 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_buttons.scss +133 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_caret.scss +64 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_clearfix.scss +9 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_color-scheme.scss +7 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_container.scss +9 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_deprecate.scss +10 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_forms.scss +144 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_gradients.scss +47 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_grid.scss +151 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_image.scss +16 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_list-group.scss +24 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_lists.scss +7 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_pagination.scss +31 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_reset-text.scss +17 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_resize.scss +6 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_table-variants.scss +21 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_text-truncate.scss +8 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_transition.scss +26 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_utilities.scss +89 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/mixins/_visually-hidden.scss +29 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/utilities/_api.scss +47 -0
- data/app/assets/stylesheets/headmin/vendor/bootstrap/scss/vendor/_rfs.scss +354 -0
- data/app/assets/stylesheets/headmin/vendor/flatpickr.css +903 -0
- data/app/assets/stylesheets/headmin/vendor/tom-select-bootstrap.css +537 -0
- data/app/assets/stylesheets/headmin.css +13454 -0
- data/app/assets/stylesheets/headmin.scss +65 -0
- data/app/helpers/headmin/admin_helper.rb +1 -0
- data/app/helpers/headmin/bootstrap_helper.rb +25 -3
- data/app/helpers/headmin/documentation_helper.rb +35 -0
- data/app/helpers/headmin/form_helper.rb +4 -0
- data/app/helpers/headmin/request_helper.rb +3 -8
- data/app/models/headmin/documentation_renderer.rb +32 -0
- data/app/models/headmin/form/base.rb +79 -0
- data/app/models/headmin/form/text.rb +53 -0
- data/app/services/block_service.rb +1 -1
- data/app/views/examples/admin.html.erb +1 -1
- data/app/views/headmin/_blocks.html.erb +2 -2
- data/app/views/headmin/_breadcrumbs.html.erb +1 -1
- data/app/views/headmin/_card.html.erb +8 -6
- data/app/views/headmin/_dropdown.html.erb +1 -1
- data/app/views/headmin/_filters.html.erb +20 -8
- data/app/views/headmin/_form.html.erb +14 -14
- data/app/views/headmin/_heading.html.erb +1 -1
- data/app/views/headmin/_notifications.html.erb +1 -1
- data/app/views/headmin/_pagination.html.erb +1 -1
- data/app/views/headmin/_popup.html.erb +10 -4
- data/app/views/headmin/_table.html.erb +2 -2
- data/app/views/headmin/_thumbnail.html.erb +47 -0
- data/app/views/headmin/dropdown/_devise.html.erb +2 -2
- data/app/views/headmin/dropdown/_list.html.erb +3 -6
- data/app/views/headmin/filters/_date.html.erb +4 -10
- data/app/views/headmin/filters/_flatpickr.html.erb +5 -5
- data/app/views/headmin/filters/_search.html.erb +5 -5
- data/app/views/headmin/filters/_select.html.erb +6 -6
- data/app/views/headmin/filters/filter/_button.html.erb +7 -7
- data/app/views/headmin/filters/filter/_template.html.erb +1 -1
- data/app/views/headmin/forms/_actions.html.erb +1 -1
- data/app/views/headmin/forms/_base.html.erb +98 -45
- data/app/views/headmin/forms/_blocks.html.erb +4 -4
- data/app/views/headmin/forms/_checkbox.html.erb +3 -3
- data/app/views/headmin/forms/_date.html.erb +29 -45
- data/app/views/headmin/forms/_date_range.html.erb +24 -66
- data/app/views/headmin/forms/_email.html.erb +35 -26
- data/app/views/headmin/forms/_file.html.erb +186 -34
- data/app/views/headmin/forms/_flatpickr.html.erb +18 -39
- data/app/views/headmin/forms/_flatpickr_range.html.erb +34 -45
- data/app/views/headmin/forms/_hidden.html.erb +13 -12
- data/app/views/headmin/forms/_image.html.erb +11 -45
- data/app/views/headmin/forms/_label.html.erb +18 -14
- data/app/views/headmin/forms/_number.html.erb +40 -37
- data/app/views/headmin/forms/_password.html.erb +37 -58
- data/app/views/headmin/forms/_redactorx.html.erb +8 -7
- data/app/views/headmin/forms/_repeater.html.erb +6 -6
- data/app/views/headmin/forms/_select.html.erb +43 -48
- data/app/views/headmin/forms/_text.html.erb +95 -58
- data/app/views/headmin/forms/_textarea.html.erb +37 -26
- data/app/views/headmin/forms/_url.html.erb +35 -26
- data/app/views/headmin/forms/_validation.html.erb +3 -3
- data/app/views/headmin/forms/_video.html.erb +21 -0
- data/app/views/headmin/forms/fields/_base.html.erb +3 -3
- data/app/views/headmin/forms/fields/_file.html.erb +2 -2
- data/app/views/headmin/forms/fields/_group.html.erb +3 -3
- data/app/views/headmin/forms/fields/_image.html.erb +2 -2
- data/app/views/headmin/forms/fields/_list.html.erb +3 -3
- data/app/views/headmin/forms/fields/_text.html.erb +2 -2
- data/app/views/headmin/forms/repeater/_row.html.erb +1 -1
- data/app/views/headmin/heading/_title.html.erb +1 -1
- data/app/views/headmin/layout/_body.html.erb +1 -1
- data/app/views/headmin/layout/_content.html.erb +1 -1
- data/app/views/headmin/layout/_footer.html.erb +1 -1
- data/app/views/headmin/layout/_header.html.erb +1 -1
- data/app/views/headmin/layout/_main.html.erb +1 -1
- data/app/views/headmin/layout/_sidebar.html.erb +3 -3
- data/app/views/headmin/layout/sidebar/_bottom.html.erb +1 -1
- data/app/views/headmin/layout/sidebar/_nav.html.erb +1 -1
- data/app/views/headmin/nav/_dropdown.html.erb +34 -0
- data/app/views/headmin/nav/_item.html.erb +22 -13
- data/app/views/headmin/table/_actions.html.erb +1 -1
- data/app/views/headmin/table/_body.html.erb +1 -1
- data/app/views/headmin/table/_foot.html.erb +1 -1
- data/app/views/headmin/table/_footer.html.erb +1 -1
- data/app/views/headmin/table/_head.html.erb +1 -1
- data/app/views/headmin/table/_header.html.erb +1 -1
- data/app/views/headmin/table/actions/_action.html.erb +4 -4
- data/app/views/headmin/table/actions/_delete.html.erb +1 -1
- data/app/views/headmin/table/actions/_export.html.erb +1 -1
- data/app/views/headmin/table/body/_row.html.erb +2 -2
- data/config/importmap.rb +2 -0
- data/config/locales/en.yml +0 -3
- data/config/locales/headmin/forms/en.yml +5 -0
- data/config/locales/headmin/forms/nl.yml +5 -0
- data/config/locales/headmin/popup/en.yml +4 -0
- data/config/locales/headmin/popup/nl.yml +4 -0
- data/config/locales/headmin/thumbnail/en.yml +4 -0
- data/config/locales/headmin/thumbnail/nl.yml +4 -0
- data/config/locales/nl.yml +0 -3
- data/esbuild-css.js +25 -0
- data/esbuild-js.js +11 -0
- data/headmin.gemspec +4 -1
- data/lib/headmin/engine.rb +15 -0
- data/lib/headmin/version.rb +1 -1
- data/lib/headmin.rb +1 -1
- data/package.json +18 -34
- data/src/js/headmin.js +1 -1
- data/src/scss/headmin.scss +1 -61
- data/yarn.lock +393 -5177
- metadata +183 -33
- data/.nvmrc +0 -1
- data/app/controllers/concerns/headmin/ckeditor.rb +0 -27
- data/app/views/headmin/forms/_ckeditor.html.erb +0 -42
- data/dist/css/headmin.css +0 -12357
- data/dist/js/headmin.js +0 -1115
- data/src/js/headmin/headmin.js +0 -158
- data/src/scss/headmin/utilities.scss +0 -19
- data/webpack.config.js +0 -30
- /data/{src/js → app/assets/javascripts}/headmin/controllers/filters_controller.js +0 -0
- /data/{src/js → app/assets/javascripts}/headmin/controllers/repeater_controller.js +0 -0
- /data/{src/js → app/assets/javascripts}/headmin/controllers/table_actions_controller.js +0 -0
- /data/{src/scss → app/assets/stylesheets}/headmin/filter.scss +0 -0
- /data/{src/scss → app/assets/stylesheets}/headmin/filters.scss +0 -0
- /data/{src/scss → app/assets/stylesheets}/headmin/general.scss +0 -0
- /data/{src/scss → app/assets/stylesheets}/headmin/layout/body.scss +0 -0
- /data/{src/scss → app/assets/stylesheets}/headmin/layout/sidebar.scss +0 -0
- /data/{src/scss → app/assets/stylesheets}/headmin/layout.scss +0 -0
- /data/{src/scss → app/assets/stylesheets}/headmin/login.scss +0 -0
- /data/{src/scss/vendor/bootstrap/variables.scss → app/assets/stylesheets/headmin/overrides/bootstrap.scss} +0 -0
- /data/{src/scss/vendor/redactorx/override.css → app/assets/stylesheets/headmin/overrides/redactorx.css} +0 -0
- /data/{src/scss → app/assets/stylesheets}/headmin/popup.scss +0 -0
- /data/{src/scss → app/assets/stylesheets}/headmin/table.scss +0 -0
- /data/{src/scss/vendor/redactorx → app/assets/stylesheets/headmin/vendor}/redactorx.css +0 -0
@@ -0,0 +1,42 @@
|
|
1
|
+
// Responsive images (ensure images don't scale beyond their parents)
|
2
|
+
//
|
3
|
+
// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.
|
4
|
+
// We previously tried the "images are responsive by default" approach in Bootstrap v2,
|
5
|
+
// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)
|
6
|
+
// which weren't expecting the images within themselves to be involuntarily resized.
|
7
|
+
// See also https://github.com/twbs/bootstrap/issues/18178
|
8
|
+
.img-fluid {
|
9
|
+
@include img-fluid();
|
10
|
+
}
|
11
|
+
|
12
|
+
|
13
|
+
// Image thumbnails
|
14
|
+
.img-thumbnail {
|
15
|
+
padding: $thumbnail-padding;
|
16
|
+
background-color: $thumbnail-bg;
|
17
|
+
border: $thumbnail-border-width solid $thumbnail-border-color;
|
18
|
+
@include border-radius($thumbnail-border-radius);
|
19
|
+
@include box-shadow($thumbnail-box-shadow);
|
20
|
+
|
21
|
+
// Keep them at most 100% wide
|
22
|
+
@include img-fluid();
|
23
|
+
}
|
24
|
+
|
25
|
+
//
|
26
|
+
// Figures
|
27
|
+
//
|
28
|
+
|
29
|
+
.figure {
|
30
|
+
// Ensures the caption's text aligns with the image.
|
31
|
+
display: inline-block;
|
32
|
+
}
|
33
|
+
|
34
|
+
.figure-img {
|
35
|
+
margin-bottom: $spacer * .5;
|
36
|
+
line-height: 1;
|
37
|
+
}
|
38
|
+
|
39
|
+
.figure-caption {
|
40
|
+
@include font-size($figure-caption-font-size);
|
41
|
+
color: $figure-caption-color;
|
42
|
+
}
|
@@ -0,0 +1,174 @@
|
|
1
|
+
// Base class
|
2
|
+
//
|
3
|
+
// Easily usable on <ul>, <ol>, or <div>.
|
4
|
+
|
5
|
+
.list-group {
|
6
|
+
display: flex;
|
7
|
+
flex-direction: column;
|
8
|
+
|
9
|
+
// No need to set list-style: none; since .list-group-item is block level
|
10
|
+
padding-left: 0; // reset padding because ul and ol
|
11
|
+
margin-bottom: 0;
|
12
|
+
@include border-radius($list-group-border-radius);
|
13
|
+
}
|
14
|
+
|
15
|
+
.list-group-numbered {
|
16
|
+
list-style-type: none;
|
17
|
+
counter-reset: section;
|
18
|
+
|
19
|
+
> li::before {
|
20
|
+
// Increments only this instance of the section counter
|
21
|
+
content: counters(section, ".") ". ";
|
22
|
+
counter-increment: section;
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
|
27
|
+
// Interactive list items
|
28
|
+
//
|
29
|
+
// Use anchor or button elements instead of `li`s or `div`s to create interactive
|
30
|
+
// list items. Includes an extra `.active` modifier class for selected items.
|
31
|
+
|
32
|
+
.list-group-item-action {
|
33
|
+
width: 100%; // For `<button>`s (anchors become 100% by default though)
|
34
|
+
color: $list-group-action-color;
|
35
|
+
text-align: inherit; // For `<button>`s (anchors inherit)
|
36
|
+
|
37
|
+
// Hover state
|
38
|
+
&:hover,
|
39
|
+
&:focus {
|
40
|
+
z-index: 1; // Place hover/focus items above their siblings for proper border styling
|
41
|
+
color: $list-group-action-hover-color;
|
42
|
+
text-decoration: none;
|
43
|
+
background-color: $list-group-hover-bg;
|
44
|
+
}
|
45
|
+
|
46
|
+
&:active {
|
47
|
+
color: $list-group-action-active-color;
|
48
|
+
background-color: $list-group-action-active-bg;
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
|
53
|
+
// Individual list items
|
54
|
+
//
|
55
|
+
// Use on `li`s or `div`s within the `.list-group` parent.
|
56
|
+
|
57
|
+
.list-group-item {
|
58
|
+
position: relative;
|
59
|
+
display: block;
|
60
|
+
padding: $list-group-item-padding-y $list-group-item-padding-x;
|
61
|
+
color: $list-group-color;
|
62
|
+
text-decoration: if($link-decoration == none, null, none);
|
63
|
+
background-color: $list-group-bg;
|
64
|
+
border: $list-group-border-width solid $list-group-border-color;
|
65
|
+
|
66
|
+
&:first-child {
|
67
|
+
@include border-top-radius(inherit);
|
68
|
+
}
|
69
|
+
|
70
|
+
&:last-child {
|
71
|
+
@include border-bottom-radius(inherit);
|
72
|
+
}
|
73
|
+
|
74
|
+
&.disabled,
|
75
|
+
&:disabled {
|
76
|
+
color: $list-group-disabled-color;
|
77
|
+
pointer-events: none;
|
78
|
+
background-color: $list-group-disabled-bg;
|
79
|
+
}
|
80
|
+
|
81
|
+
// Include both here for `<a>`s and `<button>`s
|
82
|
+
&.active {
|
83
|
+
z-index: 2; // Place active items above their siblings for proper border styling
|
84
|
+
color: $list-group-active-color;
|
85
|
+
background-color: $list-group-active-bg;
|
86
|
+
border-color: $list-group-active-border-color;
|
87
|
+
}
|
88
|
+
|
89
|
+
& + & {
|
90
|
+
border-top-width: 0;
|
91
|
+
|
92
|
+
&.active {
|
93
|
+
margin-top: -$list-group-border-width;
|
94
|
+
border-top-width: $list-group-border-width;
|
95
|
+
}
|
96
|
+
}
|
97
|
+
}
|
98
|
+
|
99
|
+
|
100
|
+
// Horizontal
|
101
|
+
//
|
102
|
+
// Change the layout of list group items from vertical (default) to horizontal.
|
103
|
+
|
104
|
+
@each $breakpoint in map-keys($grid-breakpoints) {
|
105
|
+
@include media-breakpoint-up($breakpoint) {
|
106
|
+
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
|
107
|
+
|
108
|
+
.list-group-horizontal#{$infix} {
|
109
|
+
flex-direction: row;
|
110
|
+
|
111
|
+
> .list-group-item {
|
112
|
+
&:first-child {
|
113
|
+
@include border-bottom-start-radius($list-group-border-radius);
|
114
|
+
@include border-top-end-radius(0);
|
115
|
+
}
|
116
|
+
|
117
|
+
&:last-child {
|
118
|
+
@include border-top-end-radius($list-group-border-radius);
|
119
|
+
@include border-bottom-start-radius(0);
|
120
|
+
}
|
121
|
+
|
122
|
+
&.active {
|
123
|
+
margin-top: 0;
|
124
|
+
}
|
125
|
+
|
126
|
+
+ .list-group-item {
|
127
|
+
border-top-width: $list-group-border-width;
|
128
|
+
border-left-width: 0;
|
129
|
+
|
130
|
+
&.active {
|
131
|
+
margin-left: -$list-group-border-width;
|
132
|
+
border-left-width: $list-group-border-width;
|
133
|
+
}
|
134
|
+
}
|
135
|
+
}
|
136
|
+
}
|
137
|
+
}
|
138
|
+
}
|
139
|
+
|
140
|
+
|
141
|
+
// Flush list items
|
142
|
+
//
|
143
|
+
// Remove borders and border-radius to keep list group items edge-to-edge. Most
|
144
|
+
// useful within other components (e.g., cards).
|
145
|
+
|
146
|
+
.list-group-flush {
|
147
|
+
@include border-radius(0);
|
148
|
+
|
149
|
+
> .list-group-item {
|
150
|
+
border-width: 0 0 $list-group-border-width;
|
151
|
+
|
152
|
+
&:last-child {
|
153
|
+
border-bottom-width: 0;
|
154
|
+
}
|
155
|
+
}
|
156
|
+
}
|
157
|
+
|
158
|
+
|
159
|
+
// scss-docs-start list-group-modifiers
|
160
|
+
// List group contextual variants
|
161
|
+
//
|
162
|
+
// Add modifier classes to change text and background color on individual items.
|
163
|
+
// Organizationally, this must come after the `:hover` states.
|
164
|
+
|
165
|
+
@each $state, $value in $theme-colors {
|
166
|
+
$list-group-variant-bg: shift-color($value, $list-group-item-bg-scale);
|
167
|
+
$list-group-variant-color: shift-color($value, $list-group-item-color-scale);
|
168
|
+
@if (contrast-ratio($list-group-variant-bg, $list-group-variant-color) < $min-contrast-ratio) {
|
169
|
+
$list-group-variant-color: mix($value, color-contrast($list-group-variant-bg), abs($list-group-item-color-scale));
|
170
|
+
}
|
171
|
+
|
172
|
+
@include list-group-item-variant($state, $list-group-variant-bg, $list-group-variant-color);
|
173
|
+
}
|
174
|
+
// scss-docs-end list-group-modifiers
|
@@ -0,0 +1,43 @@
|
|
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-scheme";
|
14
|
+
@import "mixins/image";
|
15
|
+
@import "mixins/resize";
|
16
|
+
@import "mixins/visually-hidden";
|
17
|
+
@import "mixins/reset-text";
|
18
|
+
@import "mixins/text-truncate";
|
19
|
+
|
20
|
+
// Utilities
|
21
|
+
@import "mixins/utilities";
|
22
|
+
|
23
|
+
// Components
|
24
|
+
@import "mixins/alert";
|
25
|
+
@import "mixins/backdrop";
|
26
|
+
@import "mixins/buttons";
|
27
|
+
@import "mixins/caret";
|
28
|
+
@import "mixins/pagination";
|
29
|
+
@import "mixins/lists";
|
30
|
+
@import "mixins/list-group";
|
31
|
+
@import "mixins/forms";
|
32
|
+
@import "mixins/table-variants";
|
33
|
+
|
34
|
+
// Skins
|
35
|
+
@import "mixins/border-radius";
|
36
|
+
@import "mixins/box-shadow";
|
37
|
+
@import "mixins/gradients";
|
38
|
+
@import "mixins/transition";
|
39
|
+
|
40
|
+
// Layout
|
41
|
+
@import "mixins/clearfix";
|
42
|
+
@import "mixins/container";
|
43
|
+
@import "mixins/grid";
|
@@ -0,0 +1,209 @@
|
|
1
|
+
// .modal-open - body class for killing the scroll
|
2
|
+
// .modal - container to scroll within
|
3
|
+
// .modal-dialog - positioning shell for the actual modal
|
4
|
+
// .modal-content - actual modal w/ bg and corners and stuff
|
5
|
+
|
6
|
+
|
7
|
+
// Container that the modal scrolls within
|
8
|
+
.modal {
|
9
|
+
position: fixed;
|
10
|
+
top: 0;
|
11
|
+
left: 0;
|
12
|
+
z-index: $zindex-modal;
|
13
|
+
display: none;
|
14
|
+
width: 100%;
|
15
|
+
height: 100%;
|
16
|
+
overflow-x: hidden;
|
17
|
+
overflow-y: auto;
|
18
|
+
// Prevent Chrome on Windows from adding a focus outline. For details, see
|
19
|
+
// https://github.com/twbs/bootstrap/pull/10951.
|
20
|
+
outline: 0;
|
21
|
+
// We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a
|
22
|
+
// gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342
|
23
|
+
// See also https://github.com/twbs/bootstrap/issues/17695
|
24
|
+
}
|
25
|
+
|
26
|
+
// Shell div to position the modal with bottom padding
|
27
|
+
.modal-dialog {
|
28
|
+
position: relative;
|
29
|
+
width: auto;
|
30
|
+
margin: $modal-dialog-margin;
|
31
|
+
// allow clicks to pass through for custom click handling to close modal
|
32
|
+
pointer-events: none;
|
33
|
+
|
34
|
+
// When fading in the modal, animate it to slide down
|
35
|
+
.modal.fade & {
|
36
|
+
@include transition($modal-transition);
|
37
|
+
transform: $modal-fade-transform;
|
38
|
+
}
|
39
|
+
.modal.show & {
|
40
|
+
transform: $modal-show-transform;
|
41
|
+
}
|
42
|
+
|
43
|
+
// When trying to close, animate focus to scale
|
44
|
+
.modal.modal-static & {
|
45
|
+
transform: $modal-scale-transform;
|
46
|
+
}
|
47
|
+
}
|
48
|
+
|
49
|
+
.modal-dialog-scrollable {
|
50
|
+
height: subtract(100%, $modal-dialog-margin * 2);
|
51
|
+
|
52
|
+
.modal-content {
|
53
|
+
max-height: 100%;
|
54
|
+
overflow: hidden;
|
55
|
+
}
|
56
|
+
|
57
|
+
.modal-body {
|
58
|
+
overflow-y: auto;
|
59
|
+
}
|
60
|
+
}
|
61
|
+
|
62
|
+
.modal-dialog-centered {
|
63
|
+
display: flex;
|
64
|
+
align-items: center;
|
65
|
+
min-height: subtract(100%, $modal-dialog-margin * 2);
|
66
|
+
}
|
67
|
+
|
68
|
+
// Actual modal
|
69
|
+
.modal-content {
|
70
|
+
position: relative;
|
71
|
+
display: flex;
|
72
|
+
flex-direction: column;
|
73
|
+
width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`
|
74
|
+
// counteract the pointer-events: none; in the .modal-dialog
|
75
|
+
color: $modal-content-color;
|
76
|
+
pointer-events: auto;
|
77
|
+
background-color: $modal-content-bg;
|
78
|
+
background-clip: padding-box;
|
79
|
+
border: $modal-content-border-width solid $modal-content-border-color;
|
80
|
+
@include border-radius($modal-content-border-radius);
|
81
|
+
@include box-shadow($modal-content-box-shadow-xs);
|
82
|
+
// Remove focus outline from opened modal
|
83
|
+
outline: 0;
|
84
|
+
}
|
85
|
+
|
86
|
+
// Modal background
|
87
|
+
.modal-backdrop {
|
88
|
+
@include overlay-backdrop($zindex-modal-backdrop, $modal-backdrop-bg, $modal-backdrop-opacity);
|
89
|
+
}
|
90
|
+
|
91
|
+
// Modal header
|
92
|
+
// Top section of the modal w/ title and dismiss
|
93
|
+
.modal-header {
|
94
|
+
display: flex;
|
95
|
+
flex-shrink: 0;
|
96
|
+
align-items: center;
|
97
|
+
justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends
|
98
|
+
padding: $modal-header-padding;
|
99
|
+
border-bottom: $modal-header-border-width solid $modal-header-border-color;
|
100
|
+
@include border-top-radius($modal-content-inner-border-radius);
|
101
|
+
|
102
|
+
.btn-close {
|
103
|
+
padding: ($modal-header-padding-y * .5) ($modal-header-padding-x * .5);
|
104
|
+
margin: ($modal-header-padding-y * -.5) ($modal-header-padding-x * -.5) ($modal-header-padding-y * -.5) auto;
|
105
|
+
}
|
106
|
+
}
|
107
|
+
|
108
|
+
// Title text within header
|
109
|
+
.modal-title {
|
110
|
+
margin-bottom: 0;
|
111
|
+
line-height: $modal-title-line-height;
|
112
|
+
}
|
113
|
+
|
114
|
+
// Modal body
|
115
|
+
// Where all modal content resides (sibling of .modal-header and .modal-footer)
|
116
|
+
.modal-body {
|
117
|
+
position: relative;
|
118
|
+
// Enable `flex-grow: 1` so that the body take up as much space as possible
|
119
|
+
// when there should be a fixed height on `.modal-dialog`.
|
120
|
+
flex: 1 1 auto;
|
121
|
+
padding: $modal-inner-padding;
|
122
|
+
}
|
123
|
+
|
124
|
+
// Footer (for actions)
|
125
|
+
.modal-footer {
|
126
|
+
display: flex;
|
127
|
+
flex-wrap: wrap;
|
128
|
+
flex-shrink: 0;
|
129
|
+
align-items: center; // vertically center
|
130
|
+
justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items
|
131
|
+
padding: $modal-inner-padding - $modal-footer-margin-between * .5;
|
132
|
+
border-top: $modal-footer-border-width solid $modal-footer-border-color;
|
133
|
+
@include border-bottom-radius($modal-content-inner-border-radius);
|
134
|
+
|
135
|
+
// Place margin between footer elements
|
136
|
+
// This solution is far from ideal because of the universal selector usage,
|
137
|
+
// but is needed to fix https://github.com/twbs/bootstrap/issues/24800
|
138
|
+
> * {
|
139
|
+
margin: $modal-footer-margin-between * .5;
|
140
|
+
}
|
141
|
+
}
|
142
|
+
|
143
|
+
// Scale up the modal
|
144
|
+
@include media-breakpoint-up(sm) {
|
145
|
+
// Automatically set modal's width for larger viewports
|
146
|
+
.modal-dialog {
|
147
|
+
max-width: $modal-md;
|
148
|
+
margin: $modal-dialog-margin-y-sm-up auto;
|
149
|
+
}
|
150
|
+
|
151
|
+
.modal-dialog-scrollable {
|
152
|
+
height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);
|
153
|
+
}
|
154
|
+
|
155
|
+
.modal-dialog-centered {
|
156
|
+
min-height: subtract(100%, $modal-dialog-margin-y-sm-up * 2);
|
157
|
+
}
|
158
|
+
|
159
|
+
.modal-content {
|
160
|
+
@include box-shadow($modal-content-box-shadow-sm-up);
|
161
|
+
}
|
162
|
+
|
163
|
+
.modal-sm { max-width: $modal-sm; }
|
164
|
+
}
|
165
|
+
|
166
|
+
@include media-breakpoint-up(lg) {
|
167
|
+
.modal-lg,
|
168
|
+
.modal-xl {
|
169
|
+
max-width: $modal-lg;
|
170
|
+
}
|
171
|
+
}
|
172
|
+
|
173
|
+
@include media-breakpoint-up(xl) {
|
174
|
+
.modal-xl { max-width: $modal-xl; }
|
175
|
+
}
|
176
|
+
|
177
|
+
// scss-docs-start modal-fullscreen-loop
|
178
|
+
@each $breakpoint in map-keys($grid-breakpoints) {
|
179
|
+
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
|
180
|
+
$postfix: if($infix != "", $infix + "-down", "");
|
181
|
+
|
182
|
+
@include media-breakpoint-down($breakpoint) {
|
183
|
+
.modal-fullscreen#{$postfix} {
|
184
|
+
width: 100vw;
|
185
|
+
max-width: none;
|
186
|
+
height: 100%;
|
187
|
+
margin: 0;
|
188
|
+
|
189
|
+
.modal-content {
|
190
|
+
height: 100%;
|
191
|
+
border: 0;
|
192
|
+
@include border-radius(0);
|
193
|
+
}
|
194
|
+
|
195
|
+
.modal-header {
|
196
|
+
@include border-radius(0);
|
197
|
+
}
|
198
|
+
|
199
|
+
.modal-body {
|
200
|
+
overflow-y: auto;
|
201
|
+
}
|
202
|
+
|
203
|
+
.modal-footer {
|
204
|
+
@include border-radius(0);
|
205
|
+
}
|
206
|
+
}
|
207
|
+
}
|
208
|
+
}
|
209
|
+
// scss-docs-end modal-fullscreen-loop
|
@@ -0,0 +1,139 @@
|
|
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
|
+
display: flex;
|
8
|
+
flex-wrap: wrap;
|
9
|
+
padding-left: 0;
|
10
|
+
margin-bottom: 0;
|
11
|
+
list-style: none;
|
12
|
+
}
|
13
|
+
|
14
|
+
.nav-link {
|
15
|
+
display: block;
|
16
|
+
padding: $nav-link-padding-y $nav-link-padding-x;
|
17
|
+
@include font-size($nav-link-font-size);
|
18
|
+
font-weight: $nav-link-font-weight;
|
19
|
+
color: $nav-link-color;
|
20
|
+
text-decoration: if($link-decoration == none, null, none);
|
21
|
+
@include transition($nav-link-transition);
|
22
|
+
|
23
|
+
&:hover,
|
24
|
+
&:focus {
|
25
|
+
color: $nav-link-hover-color;
|
26
|
+
text-decoration: if($link-hover-decoration == underline, none, null);
|
27
|
+
}
|
28
|
+
|
29
|
+
// Disabled state lightens text
|
30
|
+
&.disabled {
|
31
|
+
color: $nav-link-disabled-color;
|
32
|
+
pointer-events: none;
|
33
|
+
cursor: default;
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
//
|
38
|
+
// Tabs
|
39
|
+
//
|
40
|
+
|
41
|
+
.nav-tabs {
|
42
|
+
border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;
|
43
|
+
|
44
|
+
.nav-link {
|
45
|
+
margin-bottom: -$nav-tabs-border-width;
|
46
|
+
background: none;
|
47
|
+
border: $nav-tabs-border-width solid transparent;
|
48
|
+
@include border-top-radius($nav-tabs-border-radius);
|
49
|
+
|
50
|
+
&:hover,
|
51
|
+
&:focus {
|
52
|
+
border-color: $nav-tabs-link-hover-border-color;
|
53
|
+
// Prevents active .nav-link tab overlapping focus outline of previous/next .nav-link
|
54
|
+
isolation: isolate;
|
55
|
+
}
|
56
|
+
|
57
|
+
&.disabled {
|
58
|
+
color: $nav-link-disabled-color;
|
59
|
+
background-color: transparent;
|
60
|
+
border-color: transparent;
|
61
|
+
}
|
62
|
+
}
|
63
|
+
|
64
|
+
.nav-link.active,
|
65
|
+
.nav-item.show .nav-link {
|
66
|
+
color: $nav-tabs-link-active-color;
|
67
|
+
background-color: $nav-tabs-link-active-bg;
|
68
|
+
border-color: $nav-tabs-link-active-border-color;
|
69
|
+
}
|
70
|
+
|
71
|
+
.dropdown-menu {
|
72
|
+
// Make dropdown border overlap tab border
|
73
|
+
margin-top: -$nav-tabs-border-width;
|
74
|
+
// Remove the top rounded corners here since there is a hard edge above the menu
|
75
|
+
@include border-top-radius(0);
|
76
|
+
}
|
77
|
+
}
|
78
|
+
|
79
|
+
|
80
|
+
//
|
81
|
+
// Pills
|
82
|
+
//
|
83
|
+
|
84
|
+
.nav-pills {
|
85
|
+
.nav-link {
|
86
|
+
background: none;
|
87
|
+
border: 0;
|
88
|
+
@include border-radius($nav-pills-border-radius);
|
89
|
+
}
|
90
|
+
|
91
|
+
.nav-link.active,
|
92
|
+
.show > .nav-link {
|
93
|
+
color: $nav-pills-link-active-color;
|
94
|
+
@include gradient-bg($nav-pills-link-active-bg);
|
95
|
+
}
|
96
|
+
}
|
97
|
+
|
98
|
+
|
99
|
+
//
|
100
|
+
// Justified variants
|
101
|
+
//
|
102
|
+
|
103
|
+
.nav-fill {
|
104
|
+
> .nav-link,
|
105
|
+
.nav-item {
|
106
|
+
flex: 1 1 auto;
|
107
|
+
text-align: center;
|
108
|
+
}
|
109
|
+
}
|
110
|
+
|
111
|
+
.nav-justified {
|
112
|
+
> .nav-link,
|
113
|
+
.nav-item {
|
114
|
+
flex-basis: 0;
|
115
|
+
flex-grow: 1;
|
116
|
+
text-align: center;
|
117
|
+
}
|
118
|
+
}
|
119
|
+
|
120
|
+
.nav-fill,
|
121
|
+
.nav-justified {
|
122
|
+
.nav-item .nav-link {
|
123
|
+
width: 100%; // Make sure button will grow
|
124
|
+
}
|
125
|
+
}
|
126
|
+
|
127
|
+
|
128
|
+
// Tabbable tabs
|
129
|
+
//
|
130
|
+
// Hide tabbable panes to start, show them when `.active`
|
131
|
+
|
132
|
+
.tab-content {
|
133
|
+
> .tab-pane {
|
134
|
+
display: none;
|
135
|
+
}
|
136
|
+
> .active {
|
137
|
+
display: block;
|
138
|
+
}
|
139
|
+
}
|