From 52e4b87b5a2ac6543f9a901946bea84966681216 Mon Sep 17 00:00:00 2001
From: "Patrick H. Lauke" <redux@splintered.co.uk>
Date: Mon, 8 Dec 2014 10:36:26 +0000
Subject: [PATCH 1/5] Expand advice for optional icons with hidden labels

to clarify/hint that a ``<label class="sr-only">`` is not the only way
to do it
---
 docs/_includes/css/forms.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/_includes/css/forms.html b/docs/_includes/css/forms.html
index 3ab202f7c9..d88498f8e1 100644
--- a/docs/_includes/css/forms.html
+++ b/docs/_includes/css/forms.html
@@ -764,7 +764,7 @@
 {% endhighlight %}
 
   <h4>Optional icons with hidden <code>.sr-only</code> labels</h4>
-  <p>For form controls with no visible label, add the <code>.sr-only</code> class on the label. Bootstrap will automatically adjust the position of the icon once it's been added.</p>
+  <p>If you use the <code>.sr-only</code> class to hide a form control's <code>&lt;label&gt;</code> (rather than using other labelling options, such as the <code>aria-label</code> attribute), Bootstrap will automatically adjust the position of the icon once it's been added.</p>
   <div class="bs-example" data-example-id="form-validation-state-with-icon-without-label">
     <div class="form-group has-success has-feedback">
       <label class="control-label sr-only" for="inputSuccess5">Hidden label</label>
-- 
GitLab


From c918127e68ac320830f960ac8ab804378588db5b Mon Sep 17 00:00:00 2001
From: "Patrick H. Lauke" <redux@splintered.co.uk>
Date: Mon, 8 Dec 2014 12:05:42 +0000
Subject: [PATCH 2/5] Split out/clarify ``<select>`` and ``multiple``

---
 docs/_includes/css/forms.html | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/docs/_includes/css/forms.html b/docs/_includes/css/forms.html
index d88498f8e1..031dcd8793 100644
--- a/docs/_includes/css/forms.html
+++ b/docs/_includes/css/forms.html
@@ -378,7 +378,6 @@
 {% endhighlight %}
 
   <h3>Selects</h3>
-  <p>Use the default option, or add <code>multiple</code> to show multiple options at once.</p>
   <div class="bs-example" data-example-ids="select-form-control">
     <form>
       <select class="form-control">
@@ -388,14 +387,6 @@
         <option>4</option>
         <option>5</option>
       </select>
-      <br>
-      <select multiple class="form-control">
-        <option>1</option>
-        <option>2</option>
-        <option>3</option>
-        <option>4</option>
-        <option>5</option>
-      </select>
     </form>
   </div><!-- /.bs-example -->
 {% highlight html %}
@@ -406,7 +397,23 @@
   <option>4</option>
   <option>5</option>
 </select>
+{% endhighlight %}
+
+  <p>For <code>&lt;select&gt;</code> controls with the <code>multiple</code> attribute, multiple options are shown by default.</p>
+
+  <div class="bs-example" data-example-ids="select-multiple-form-control">
+    <form>
+      <select multiple class="form-control">
+        <option>1</option>
+        <option>2</option>
+        <option>3</option>
+        <option>4</option>
+        <option>5</option>
+      </select>
+    </form>
+  </div><!-- /.bs-example -->
 
+{% highlight html %}
 <select multiple class="form-control">
   <option>1</option>
   <option>2</option>
-- 
GitLab


From eee275762ff962121576f5aca93e0dfc52679d51 Mon Sep 17 00:00:00 2001
From: "Patrick H. Lauke" <redux@splintered.co.uk>
Date: Mon, 8 Dec 2014 14:03:04 +0000
Subject: [PATCH 3/5] Callout for labelling of input groups

plus a few suggested approaches (in some cases, elided, as the actual
content of the label - being a generic example - is not important)
---
 docs/_includes/components/input-groups.html | 90 +++++++++++----------
 1 file changed, 47 insertions(+), 43 deletions(-)

diff --git a/docs/_includes/components/input-groups.html b/docs/_includes/components/input-groups.html
index 8a07735d2b..ba14573ba2 100644
--- a/docs/_includes/components/input-groups.html
+++ b/docs/_includes/components/input-groups.html
@@ -16,7 +16,11 @@
     <h4>Don't mix with other components</h4>
     <p>Do not mix form groups or grid column classes directly with input groups. Instead, nest the input group inside of the form group or grid-related element.</p>
   </div>
-
+  <div class="bs-callout bs-callout-warning" id="callout-inputgroup-form-labels">
+    <h4>Always add labels</h4>
+    <p>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.</p>
+    <p>The exact technique to be used (<code>&lt;label&gt;</code> elements hidden using the <code>.sr-only</code> class, or use of the <code>aria-label</code>, <code>aria-labelledby</code>, <code>aria-describedby</code>, <code>title</code> or <code>placeholder</code> attribute) and what additional information will need to be conveyed will vary depending on the exact type of interface widget you're implementing. The examples in this section provide a few suggested, case-specific approaches.</p>
+  </div>
 
   <h2 id="input-groups-basic">Basic example</h2>
   <p>Place one add-on or button on either side of an input. You may also place one on both sides of an input.</p>
@@ -24,35 +28,35 @@
   <p><strong class="text-danger">We do not support multiple form-controls in a single input group.</strong></p>
   <form class="bs-example bs-example-form" data-example-id="simple-input-groups">
     <div class="input-group">
-      <span class="input-group-addon">@</span>
-      <input type="text" class="form-control" placeholder="Username">
+      <span class="input-group-addon" id="basic-addon1">@</span>
+      <input type="text" class="form-control" placeholder="Username" aria-describedby="basic-addon1">
     </div>
     <br>
     <div class="input-group">
-      <input type="text" class="form-control">
-      <span class="input-group-addon">.00</span>
+      <input type="text" class="form-control" placeholder="Recipient's username" aria-describedby="basic-addon2">
+      <span class="input-group-addon" id="basic-addon2">@example.com</span>
     </div>
     <br>
     <div class="input-group">
       <span class="input-group-addon">$</span>
-      <input type="text" class="form-control">
+      <input type="text" class="form-control" aria-label="Amount (to the nearest dollar)">
       <span class="input-group-addon">.00</span>
     </div>
   </form>
 {% highlight html %}
 <div class="input-group">
-  <span class="input-group-addon">@</span>
-  <input type="text" class="form-control" placeholder="Username">
+  <span class="input-group-addon" id="basic-addon1">@</span>
+  <input type="text" class="form-control" placeholder="Username" aria-describedby="basic-addon1">
 </div>
 
 <div class="input-group">
-  <input type="text" class="form-control">
-  <span class="input-group-addon">.00</span>
+  <input type="text" class="form-control" placeholder="Recipient's username" aria-describedby="basic-addon2">
+  <span class="input-group-addon" id="basic-addon2">@example.com</span>
 </div>
 
 <div class="input-group">
   <span class="input-group-addon">$</span>
-  <input type="text" class="form-control">
+  <input type="text" class="form-control" aria-label="Amount (to the nearest dollar)">
   <span class="input-group-addon">.00</span>
 </div>
 {% endhighlight %}
@@ -61,34 +65,34 @@
   <p>Add the relative form sizing classes to the <code>.input-group</code> itself and contents within will automatically resize—no need for repeating the form control size classes on each element.</p>
   <form class="bs-example bs-example-form" data-example-id="input-group-sizing">
     <div class="input-group input-group-lg">
-      <span class="input-group-addon">@</span>
-      <input type="text" class="form-control" placeholder="Username">
+      <span class="input-group-addon" id="sizing-addon1">@</span>
+      <input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon1">
     </div>
     <br>
     <div class="input-group">
-      <span class="input-group-addon">@</span>
-      <input type="text" class="form-control" placeholder="Username">
+      <span class="input-group-addon" id="sizing-addon2">@</span>
+      <input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon2">
     </div>
     <br>
     <div class="input-group input-group-sm">
-      <span class="input-group-addon">@</span>
-      <input type="text" class="form-control" placeholder="Username">
+      <span class="input-group-addon" id="sizing-addon3">@</span>
+      <input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon3">
     </div>
   </form>
 {% highlight html %}
 <div class="input-group input-group-lg">
-  <span class="input-group-addon">@</span>
-  <input type="text" class="form-control" placeholder="Username">
+  <span class="input-group-addon" id="sizing-addon1">@</span>
+  <input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon1">
 </div>
 
 <div class="input-group">
-  <span class="input-group-addon">@</span>
-  <input type="text" class="form-control" placeholder="Username">
+  <span class="input-group-addon" id="sizing-addon2">@</span>
+  <input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon2">
 </div>
 
 <div class="input-group input-group-sm">
-  <span class="input-group-addon">@</span>
-  <input type="text" class="form-control" placeholder="Username">
+  <span class="input-group-addon" id="sizing-addon3">@</span>
+  <input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon3">
 </div>
 {% endhighlight %}
 
@@ -100,17 +104,17 @@
       <div class="col-lg-6">
         <div class="input-group">
           <span class="input-group-addon">
-            <input type="checkbox">
+            <input type="checkbox" aria-label="Checkbox for following text input">
           </span>
-          <input type="text" class="form-control">
+          <input type="text" class="form-control" aria-label="Text input with checkbox">
         </div><!-- /input-group -->
       </div><!-- /.col-lg-6 -->
       <div class="col-lg-6">
         <div class="input-group">
           <span class="input-group-addon">
-            <input type="radio">
+            <input type="radio" aria-label="Radio button for following text input">
           </span>
-          <input type="text" class="form-control">
+          <input type="text" class="form-control" aria-label="Text input with radio button">
         </div><!-- /input-group -->
       </div><!-- /.col-lg-6 -->
     </div><!-- /.row -->
@@ -120,17 +124,17 @@
   <div class="col-lg-6">
     <div class="input-group">
       <span class="input-group-addon">
-        <input type="checkbox">
+        <input type="checkbox" aria-label="...">
       </span>
-      <input type="text" class="form-control">
+      <input type="text" class="form-control" aria-label="...">
     </div><!-- /input-group -->
   </div><!-- /.col-lg-6 -->
   <div class="col-lg-6">
     <div class="input-group">
       <span class="input-group-addon">
-        <input type="radio">
+        <input type="radio" aria-label="...">
       </span>
-      <input type="text" class="form-control">
+      <input type="text" class="form-control" aria-label="...">
     </div><!-- /input-group -->
   </div><!-- /.col-lg-6 -->
 </div><!-- /.row -->
@@ -146,12 +150,12 @@
           <span class="input-group-btn">
             <button class="btn btn-default" type="button">Go!</button>
           </span>
-          <input type="text" class="form-control">
+          <input type="text" class="form-control" placeholder="Search for...">
         </div><!-- /input-group -->
       </div><!-- /.col-lg-6 -->
       <div class="col-lg-6">
         <div class="input-group">
-          <input type="text" class="form-control">
+          <input type="text" class="form-control" placeholder="Search for...">
           <span class="input-group-btn">
             <button class="btn btn-default" type="button">Go!</button>
           </span>
@@ -166,12 +170,12 @@
       <span class="input-group-btn">
         <button class="btn btn-default" type="button">Go!</button>
       </span>
-      <input type="text" class="form-control">
+      <input type="text" class="form-control" placeholder="Search for...">
     </div><!-- /input-group -->
   </div><!-- /.col-lg-6 -->
   <div class="col-lg-6">
     <div class="input-group">
-      <input type="text" class="form-control">
+      <input type="text" class="form-control" placeholder="Search for...">
       <span class="input-group-btn">
         <button class="btn btn-default" type="button">Go!</button>
       </span>
@@ -196,12 +200,12 @@
               <li><a href="#">Separated link</a></li>
             </ul>
           </div><!-- /btn-group -->
-          <input type="text" class="form-control">
+          <input type="text" class="form-control" aria-label="Text input with dropdown button">
         </div><!-- /input-group -->
       </div><!-- /.col-lg-6 -->
       <div class="col-lg-6">
         <div class="input-group">
-          <input type="text" class="form-control">
+          <input type="text" class="form-control" aria-label="Text input with dropdown button">
           <div class="input-group-btn">
             <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">Action <span class="caret"></span></button>
             <ul class="dropdown-menu dropdown-menu-right" role="menu">
@@ -230,12 +234,12 @@
           <li><a href="#">Separated link</a></li>
         </ul>
       </div><!-- /btn-group -->
-      <input type="text" class="form-control">
+      <input type="text" class="form-control" aria-label="...">
     </div><!-- /input-group -->
   </div><!-- /.col-lg-6 -->
   <div class="col-lg-6">
     <div class="input-group">
-      <input type="text" class="form-control">
+      <input type="text" class="form-control" aria-label="...">
       <div class="input-group-btn">
         <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">Action <span class="caret"></span></button>
         <ul class="dropdown-menu dropdown-menu-right" role="menu">
@@ -270,12 +274,12 @@
               <li><a href="#">Separated link</a></li>
             </ul>
           </div>
-          <input type="text" class="form-control">
+          <input type="text" class="form-control" aria-label="Text input with segmented button dropdown">
         </div><!-- /.input-group -->
       </div><!-- /.col-lg-6 -->
       <div class="col-lg-6">
         <div class="input-group">
-          <input type="text" class="form-control">
+          <input type="text" class="form-control" aria-label="Text input with segmented button dropdown">
           <div class="input-group-btn">
             <button type="button" class="btn btn-default" tabindex="-1">Action</button>
             <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
@@ -299,11 +303,11 @@
   <div class="input-group-btn">
     <!-- Button and dropdown menu -->
   </div>
-  <input type="text" class="form-control">
+  <input type="text" class="form-control" aria-label="...">
 </div>
 
 <div class="input-group">
-  <input type="text" class="form-control">
+  <input type="text" class="form-control" aria-label="...">
   <div class="input-group-btn">
     <!-- Button and dropdown menu -->
   </div>
-- 
GitLab


From 24bc10266425cbb401ce9d4b681060159162a8b2 Mon Sep 17 00:00:00 2001
From: "Patrick H. Lauke" <redux@splintered.co.uk>
Date: Mon, 8 Dec 2014 14:54:20 +0000
Subject: [PATCH 4/5] Use aria-label for pagination prev/next

Cleaner alternative to using ``<span class="sr-only">``
---
 docs/_includes/components/pagination.html | 31 ++++++++++-------------
 1 file changed, 13 insertions(+), 18 deletions(-)

diff --git a/docs/_includes/components/pagination.html b/docs/_includes/components/pagination.html
index 60485a587d..46ee1f1edb 100644
--- a/docs/_includes/components/pagination.html
+++ b/docs/_includes/components/pagination.html
@@ -9,9 +9,8 @@
     <nav>
       <ul class="pagination">
         <li>
-          <a href="#">
+          <a href="#" aria-label="Previous">
             <span aria-hidden="true">&laquo;</span>
-            <span class="sr-only">Previous</span>
           </a>
         </li>
         <li><a href="#">1</a></li>
@@ -20,9 +19,8 @@
         <li><a href="#">4</a></li>
         <li><a href="#">5</a></li>
         <li>
-          <a href="#">
+          <a href="#" aria-label="Next">
             <span aria-hidden="true">&raquo;</span>
-            <span class="sr-only">Next</span>
           </a>
         </li>
       </ul>
@@ -32,9 +30,8 @@
 <nav>
   <ul class="pagination">
     <li>
-      <a href="#">
+      <a href="#" aria-label="Previous">
         <span aria-hidden="true">&laquo;</span>
-        <span class="sr-only">Previous</span>
       </a>
     </li>
     <li><a href="#">1</a></li>
@@ -43,9 +40,8 @@
     <li><a href="#">4</a></li>
     <li><a href="#">5</a></li>
     <li>
-      <a href="#">
+      <a href="#" aria-label="Next">
         <span aria-hidden="true">&raquo;</span>
-        <span class="sr-only">Next</span>
       </a>
     </li>
   </ul>
@@ -57,20 +53,20 @@
   <div class="bs-example" data-example-id="disabled-active-pagination">
     <nav>
       <ul class="pagination">
-        <li class="disabled"><a href="#"><span aria-hidden="true">&laquo;</span><span class="sr-only">Previous</span></a></li>
+        <li class="disabled"><a href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>
         <li class="active"><a href="#">1 <span class="sr-only">(current)</span></a></li>
         <li><a href="#">2</a></li>
         <li><a href="#">3</a></li>
         <li><a href="#">4</a></li>
         <li><a href="#">5</a></li>
-        <li><a href="#"><span aria-hidden="true">&raquo;</span><span class="sr-only">Next</span></a></li>
+        <li><a href="#" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>
      </ul>
    </nav>
   </div>
 {% highlight html %}
 <nav>
   <ul class="pagination">
-    <li class="disabled"><a href="#"><span aria-hidden="true">&laquo;</span><span class="sr-only">Previous</span></a></li>
+    <li class="disabled"><a href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>
     <li class="active"><a href="#">1 <span class="sr-only">(current)</span></a></li>
     ...
   </ul>
@@ -83,7 +79,6 @@
     <li class="disabled">
       <span>
         <span aria-hidden="true">&laquo;</span>
-        <span class="sr-only">Previous</span>
       </span>
     </li>
     <li class="active">
@@ -100,35 +95,35 @@
   <div class="bs-example" data-example-id="pagination-sizing">
     <nav>
       <ul class="pagination pagination-lg">
-        <li><a href="#"><span aria-hidden="true">&laquo;</span><span class="sr-only">Previous</span></a></li>
+        <li><a href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>
         <li><a href="#">1</a></li>
         <li><a href="#">2</a></li>
         <li><a href="#">3</a></li>
         <li><a href="#">4</a></li>
         <li><a href="#">5</a></li>
-        <li><a href="#"><span aria-hidden="true">&raquo;</span><span class="sr-only">Next</span></a></li>
+        <li><a href="#" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>
       </ul>
     </nav>
     <nav>
       <ul class="pagination">
-        <li><a href="#"><span aria-hidden="true">&laquo;</span><span class="sr-only">Previous</span></a></li>
+        <li><a href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>
         <li><a href="#">1</a></li>
         <li><a href="#">2</a></li>
         <li><a href="#">3</a></li>
         <li><a href="#">4</a></li>
         <li><a href="#">5</a></li>
-        <li><a href="#"><span aria-hidden="true">&raquo;</span><span class="sr-only">Next</span></a></li>
+        <li><a href="#" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>
       </ul>
     </nav>
     <nav>
       <ul class="pagination pagination-sm">
-        <li><a href="#"><span aria-hidden="true">&laquo;</span><span class="sr-only">Previous</span></a></li>
+        <li><a href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>
         <li><a href="#">1</a></li>
         <li><a href="#">2</a></li>
         <li><a href="#">3</a></li>
         <li><a href="#">4</a></li>
         <li><a href="#">5</a></li>
-        <li><a href="#"><span aria-hidden="true">&raquo;</span><span class="sr-only">Next</span></a></li>
+        <li><a href="#" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li>
       </ul>
     </nav>
   </div>
-- 
GitLab


From 285ec7049393792503b2127932e4bc6a967d58b6 Mon Sep 17 00:00:00 2001
From: "Patrick H. Lauke" <redux@splintered.co.uk>
Date: Mon, 8 Dec 2014 15:25:02 +0000
Subject: [PATCH 5/5] Make main segmented button keyboard-focusable

unless there's a reason why ``tabindex="-1"`` was dropped in there...
---
 docs/_includes/components/input-groups.html | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/docs/_includes/components/input-groups.html b/docs/_includes/components/input-groups.html
index ba14573ba2..665c5b7cc9 100644
--- a/docs/_includes/components/input-groups.html
+++ b/docs/_includes/components/input-groups.html
@@ -261,7 +261,7 @@
       <div class="col-lg-6">
         <div class="input-group">
           <div class="input-group-btn">
-            <button type="button" class="btn btn-default" tabindex="-1">Action</button>
+            <button type="button" class="btn btn-default">Action</button>
             <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
               <span class="caret"></span>
               <span class="sr-only">Toggle Dropdown</span>
@@ -281,7 +281,7 @@
         <div class="input-group">
           <input type="text" class="form-control" aria-label="Text input with segmented button dropdown">
           <div class="input-group-btn">
-            <button type="button" class="btn btn-default" tabindex="-1">Action</button>
+            <button type="button" class="btn btn-default">Action</button>
             <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
               <span class="caret"></span>
               <span class="sr-only">Toggle Dropdown</span>
-- 
GitLab