aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Otto <[email protected]>2017-10-19 13:04:39 -0700
committerMark Otto <[email protected]>2017-10-19 23:22:06 -0700
commit34a1e454007a4071f97917b2f13d8a467fe421ab (patch)
tree78acde26f097d096dca44ba16ee8a7d8ee536b7e
parentfc94de5b8b5b329a298eeeb76174b146ff17af2d (diff)
downloadbootstrap-34a1e454007a4071f97917b2f13d8a467fe421ab.tar.xz
bootstrap-34a1e454007a4071f97917b2f13d8a467fe421ab.zip
Add input group support for custom selects and custom files
Closes #24437, closes #22457
-rw-r--r--_includes/docs-navbar.html2
-rw-r--r--docs/4.0/components/input-group.md93
-rw-r--r--scss/_input-group.scss31
3 files changed, 120 insertions, 6 deletions
diff --git a/_includes/docs-navbar.html b/_includes/docs-navbar.html
index ecedf7c4d..4f3e68738 100644
--- a/_includes/docs-navbar.html
+++ b/_includes/docs-navbar.html
@@ -37,7 +37,7 @@
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="bd-versions">
<a class="dropdown-item active" href="{{ site.baseurl }}/docs/{{ site.docs_version }}/">Latest (4.x)</a>
<a class="dropdown-item" href="https://v4-alpha.getbootstrap.com/">v4 Alpha 6</a>
- <a class="dropdown-item" href="https://getbootstrap.com/3.3/">v3.3.7</a>
+ <a class="dropdown-item" href="https://getbootstrap.com/docs/3.3/">v3.3.7</a>
<a class="dropdown-item" href="https://getbootstrap.com/2.3.2/">v2.3.2</a>
</div>
</li>
diff --git a/docs/4.0/components/input-group.md b/docs/4.0/components/input-group.md
index 231adc906..251af2a01 100644
--- a/docs/4.0/components/input-group.md
+++ b/docs/4.0/components/input-group.md
@@ -106,7 +106,6 @@ Multiple add-ons are supported and can be mixed with checkbox and radio input ve
</div>
{% endexample %}
-
## Button addons
Buttons in input groups must wrapped in a `.input-group-btn` for proper alignment and sizing. This is required due to default browser styles that cannot be overridden.
@@ -230,6 +229,98 @@ Buttons in input groups must wrapped in a `.input-group-btn` for proper alignmen
</div>
{% endexample %}
+## Custom forms
+
+Input groups include support for custom selects and custom file inputs. Browser default versions of these are not supported.
+
+### Custom select
+
+{% example html %}
+<div class="input-group mb-3">
+ <span class="input-group-addon" id="">Options</span>
+ <select class="custom-select" id="">
+ <option selected>Choose...</option>
+ <option value="1">One</option>
+ <option value="2">Two</option>
+ <option value="3">Three</option>
+ </select>
+</div>
+
+<div class="input-group mb-3">
+ <select class="custom-select" id="">
+ <option selected>Choose...</option>
+ <option value="1">One</option>
+ <option value="2">Two</option>
+ <option value="3">Three</option>
+ </select>
+ <span class="input-group-addon" id="">Options</span>
+</div>
+
+<div class="input-group mb-3">
+ <span class="input-group-btn">
+ <button class="btn btn-secondary" type="button">Button</button>
+ </span>
+ <select class="custom-select" id="">
+ <option selected>Choose...</option>
+ <option value="1">One</option>
+ <option value="2">Two</option>
+ <option value="3">Three</option>
+ </select>
+</div>
+
+<div class="input-group">
+ <select class="custom-select" id="">
+ <option selected>Choose...</option>
+ <option value="1">One</option>
+ <option value="2">Two</option>
+ <option value="3">Three</option>
+ </select>
+ <span class="input-group-btn">
+ <button class="btn btn-secondary" type="button">Button</button>
+ </span>
+</div>
+{% endexample %}
+
+### Custom file input
+
+{% example html %}
+<div class="input-group mb-3">
+ <span class="input-group-addon" id="">Upload</span>
+ <label class="custom-file">
+ <input type="file" id="file" class="custom-file-input" required>
+ <span class="custom-file-control"></span>
+ </label>
+</div>
+
+<div class="input-group mb-3">
+ <label class="custom-file">
+ <input type="file" id="file" class="custom-file-input" required>
+ <span class="custom-file-control"></span>
+ </label>
+ <span class="input-group-addon" id="">Upload</span>
+</div>
+
+<div class="input-group mb-3">
+ <span class="input-group-btn">
+ <button class="btn btn-secondary" type="button">Button</button>
+ </span>
+ <label class="custom-file">
+ <input type="file" id="file" class="custom-file-input" required>
+ <span class="custom-file-control"></span>
+ </label>
+</div>
+
+<div class="input-group">
+ <label class="custom-file">
+ <input type="file" id="file" class="custom-file-input" required>
+ <span class="custom-file-control"></span>
+ </label>
+ <span class="input-group-btn">
+ <button class="btn btn-secondary" type="button">Button</button>
+ </span>
+</div>
+{% endexample %}
+
## Accessibility
Screen readers will have trouble with your forms if you don't include a label for every input. For these input groups, ensure that any additional label or functionality is conveyed to assistive technologies.
diff --git a/scss/_input-group.scss b/scss/_input-group.scss
index a1d16e384..d242c904f 100644
--- a/scss/_input-group.scss
+++ b/scss/_input-group.scss
@@ -30,20 +30,32 @@
.input-group-addon,
.input-group-btn,
-.input-group .form-control {
+.input-group .form-control,
+.input-group .custom-select,
+.input-group .custom-file {
display: flex;
align-items: center;
+
&:not(:first-child):not(:last-child) {
@include border-radius(0);
}
}
+.input-group .custom-file {
+ display: flex;
+ align-items: center;
+}
+
+.input-group .custom-select,
+.input-group .custom-file {
+ width: 100%;
+}
+
.input-group-addon,
.input-group-btn {
white-space: nowrap;
}
-
// Sizing options
//
// Remix the default form control sizing classes into new ones for easier
@@ -103,6 +115,8 @@
//
.input-group .form-control:not(:last-child),
+.input-group .custom-select:not(:last-child),
+.input-group .custom-file:not(:last-child) .custom-file-control::before,
.input-group-addon:not(:last-child),
.input-group-btn:not(:last-child) > .btn,
.input-group-btn:not(:last-child) > .btn-group > .btn,
@@ -111,10 +125,14 @@
.input-group-btn:not(:first-child) > .btn-group:not(:last-child) > .btn {
@include border-right-radius(0);
}
+
.input-group-addon:not(:last-child) {
border-right: 0;
}
+
.input-group .form-control:not(:first-child),
+.input-group .custom-select:not(:first-child),
+.input-group .custom-file:not(:first-child) .custom-file-control,
.input-group-addon:not(:first-child),
.input-group-btn:not(:first-child) > .btn,
.input-group-btn:not(:first-child) > .btn-group > .btn,
@@ -123,8 +141,13 @@
.input-group-btn:not(:last-child) > .btn-group:not(:first-child) > .btn {
@include border-left-radius(0);
}
-.form-control + .input-group-addon:not(:first-child) {
- border-left: 0;
+
+.form-control,
+.custom-select,
+.custom-file {
+ + .input-group-addon:not(:first-child) {
+ border-left: 0;
+ }
}
//