aboutsummaryrefslogtreecommitdiff
path: root/scss/forms/_form-control.scss
diff options
context:
space:
mode:
authorMartijn Cuppens <[email protected]>2020-10-22 15:20:53 +0200
committerMartijn Cuppens <[email protected]>2020-10-28 18:29:28 +0100
commitf236667483c33c69a4c052b41e71ac86bfcc8e74 (patch)
treed242836b559372bb75cf289e7f6a7021561346d1 /scss/forms/_form-control.scss
parent3e2f9ab237e0e338fbe497213ad2353e59fbee9c (diff)
downloadbootstrap-f236667483c33c69a4c052b41e71ac86bfcc8e74.tar.xz
bootstrap-f236667483c33c69a4c052b41e71ac86bfcc8e74.zip
Drop custom file upload plugin in favor of CSS
Diffstat (limited to 'scss/forms/_form-control.scss')
-rw-r--r--scss/forms/_form-control.scss77
1 files changed, 77 insertions, 0 deletions
diff --git a/scss/forms/_form-control.scss b/scss/forms/_form-control.scss
index 6686ecfb8..9fa9cbae4 100644
--- a/scss/forms/_form-control.scss
+++ b/scss/forms/_form-control.scss
@@ -23,6 +23,14 @@
@include box-shadow($input-box-shadow);
@include transition($input-transition);
+ &[type="file"] {
+ overflow: hidden; // prevent pseudo element button overlap
+
+ &:not(:disabled):not([readonly]) {
+ cursor: pointer;
+ }
+ }
+
// Customize the `:focus` state to imitate native WebKit styles.
&:focus {
color: $input-focus-color;
@@ -56,6 +64,49 @@
// iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.
opacity: 1;
}
+
+ // File input buttons theming
+ // stylelint-disable-next-line selector-pseudo-element-no-unknown
+ &::file-selector-button {
+ padding: $input-padding-y $input-padding-x;
+ margin: (-$input-padding-y) (-$input-padding-x);
+ margin-inline-end: $input-padding-x;
+ line-height: inherit;
+ color: $form-file-button-color;
+ @include gradient-bg($form-file-button-bg);
+ pointer-events: none;
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0;
+ border-inline-end-width: $input-border-width;
+ border-radius: 0; // stylelint-disable-line property-disallowed-list
+ @include transition($btn-transition);
+ }
+
+ // stylelint-disable-next-line selector-pseudo-element-no-unknown
+ &:hover:not(:disabled):not([readonly])::file-selector-button {
+ background-color: $form-file-button-hover-bg;
+ }
+
+ &::-webkit-file-upload-button {
+ padding: $input-padding-y $input-padding-x;
+ margin: (-$input-padding-y) (-$input-padding-x);
+ margin-inline-end: $input-padding-x;
+ line-height: inherit;
+ color: $form-file-button-color;
+ @include gradient-bg($form-file-button-bg);
+ pointer-events: none;
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0;
+ border-inline-end-width: $input-border-width;
+ border-radius: 0; // stylelint-disable-line property-disallowed-list
+ @include transition($btn-transition);
+ }
+
+ &:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {
+ background-color: $form-file-button-hover-bg;
+ }
}
// Readonly controls as plain text
@@ -93,6 +144,19 @@
padding: $input-padding-y-sm $input-padding-x-sm;
@include font-size($input-font-size-sm);
@include border-radius($input-border-radius-sm);
+
+ // stylelint-disable-next-line selector-pseudo-element-no-unknown
+ &::file-selector-button {
+ padding: $input-padding-y-sm $input-padding-x-sm;
+ margin: (-$input-padding-y-sm) (-$input-padding-x-sm);
+ margin-inline-end: $input-padding-x-sm;
+ }
+
+ &::-webkit-file-upload-button {
+ padding: $input-padding-y-sm $input-padding-x-sm;
+ margin: (-$input-padding-y-sm) (-$input-padding-x-sm);
+ margin-inline-end: $input-padding-x-sm;
+ }
}
.form-control-lg {
@@ -100,6 +164,19 @@
padding: $input-padding-y-lg $input-padding-x-lg;
@include font-size($input-font-size-lg);
@include border-radius($input-border-radius-lg);
+
+ // stylelint-disable-next-line selector-pseudo-element-no-unknown
+ &::file-selector-button {
+ padding: $input-padding-y-lg $input-padding-x-lg;
+ margin: (-$input-padding-y-lg) (-$input-padding-x-lg);
+ margin-inline-end: $input-padding-x-lg;
+ }
+
+ &::-webkit-file-upload-button {
+ padding: $input-padding-y-lg $input-padding-x-lg;
+ margin: (-$input-padding-y-lg) (-$input-padding-x-lg);
+ margin-inline-end: $input-padding-x-lg;
+ }
}
.form-control-color {