diff options
| author | Mark Otto <[email protected]> | 2017-10-19 13:04:39 -0700 |
|---|---|---|
| committer | Mark Otto <[email protected]> | 2017-10-19 23:22:06 -0700 |
| commit | 34a1e454007a4071f97917b2f13d8a467fe421ab (patch) | |
| tree | 78acde26f097d096dca44ba16ee8a7d8ee536b7e | |
| parent | fc94de5b8b5b329a298eeeb76174b146ff17af2d (diff) | |
| download | bootstrap-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.html | 2 | ||||
| -rw-r--r-- | docs/4.0/components/input-group.md | 93 | ||||
| -rw-r--r-- | scss/_input-group.scss | 31 |
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; + } } // |
