diff --git a/__tests__/src/rules/label-has-associated-control-test.js b/__tests__/src/rules/label-has-associated-control-test.js
index e387d5ae5..782fb112f 100644
--- a/__tests__/src/rules/label-has-associated-control-test.js
+++ b/__tests__/src/rules/label-has-associated-control-test.js
@@ -48,6 +48,11 @@ const nestingValid = [
{ code: '', options: [{ depth: 5 }] },
{ code: '', options: [{ depth: 5 }] },
{ code: '', options: [{ depth: 5 }] },
+ // Other controls
+ { code: '' },
+ { code: '' },
+ { code: '' },
+ { code: '' },
// Custom controlComponents.
{ code: '', options: [{ controlComponents: ['CustomInput'] }] },
{ code: 'A label', options: [{ controlComponents: ['CustomInput'], labelComponents: ['CustomLabel'] }] },
diff --git a/src/rules/label-has-associated-control.js b/src/rules/label-has-associated-control.js
index 98f385461..6d78cbf65 100644
--- a/src/rules/label-has-associated-control.js
+++ b/src/rules/label-has-associated-control.js
@@ -57,7 +57,14 @@ module.exports = {
if (componentNames.indexOf(elementType(node.openingElement)) === -1) {
return;
}
- const controlComponents = ['input', 'select', 'textarea'].concat((options.controlComponents || []));
+ const controlComponents = [
+ 'input',
+ 'meter',
+ 'output',
+ 'progress',
+ 'select',
+ 'textarea',
+ ].concat((options.controlComponents || []));
// Prevent crazy recursion.
const recursionDepth = Math.min(
options.depth === undefined ? 2 : options.depth,