-
- setState({ selectedValue: event.target.value })}
- >
-
- Hinty Hint
-
- setState({ selectedValue: event.target.value })}
- >
-
- Hinty hint
-
- setState({ selectedValue: event.target.value })}
- >
-
- Hinty Hint
-
-
+
Selected value: {state.selectedValue}
diff --git a/packages/radios/src/elements/Radio.js b/packages/radios/src/elements/Radio.js
index 19cfe44a295..73f4bb89fbd 100644
--- a/packages/radios/src/elements/Radio.js
+++ b/packages/radios/src/elements/Radio.js
@@ -65,9 +65,17 @@ export default class Radio extends ControlledComponent {
*/
const { onMouseDown: onFocusMouseDown, ...checkboxProps } = getFocusProps(checkboxInputProps);
+ let isDescribed = false;
+
+ Children.forEach(children, child => {
+ if (hasType(child, Hint)) {
+ isDescribed = true;
+ }
+ });
+
return (
-
+
{Children.map(children, child => {
if (!isValidElement(child)) {
return child;
diff --git a/packages/radios/src/elements/Radio.spec.js b/packages/radios/src/elements/Radio.spec.js
index 19ee0f98fb8..4b60be6544f 100644
--- a/packages/radios/src/elements/Radio.spec.js
+++ b/packages/radios/src/elements/Radio.spec.js
@@ -40,7 +40,7 @@ describe('Radio', () => {
});
it('applies container props to Message', () => {
- expect(wrapper.find(Message)).toHaveProp('id', `${RADIO_ID}--message`);
+ expect(wrapper.find(Message)).toHaveProp('role', 'alert');
});
it('applies no props to any other element', () => {
diff --git a/packages/radios/src/views/Label.example.md b/packages/radios/src/views/Label.example.md
index 2668b1d3a55..910a6ddf787 100644
--- a/packages/radios/src/views/Label.example.md
+++ b/packages/radios/src/views/Label.example.md
@@ -1,7 +1,7 @@
### States
```jsx
-
+
diff --git a/packages/radios/src/views/Message.example.md b/packages/radios/src/views/Message.example.md
index 4e5d769cd01..c8fc8442bb3 100644
--- a/packages/radios/src/views/Message.example.md
+++ b/packages/radios/src/views/Message.example.md
@@ -1,32 +1,34 @@
```jsx
```
diff --git a/packages/ranges/CHANGELOG.md b/packages/ranges/CHANGELOG.md
index adcecdf59b0..b85031fe90e 100644
--- a/packages/ranges/CHANGELOG.md
+++ b/packages/ranges/CHANGELOG.md
@@ -4,252 +4,189 @@ All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+
## [2.3.4](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.3.3...@zendeskgarden/react-ranges@2.3.4) (2018-08-23)
**Note:** Version bump only for package @zendeskgarden/react-ranges
-
-
-
-
+
## [2.3.3](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.3.2...@zendeskgarden/react-ranges@2.3.3) (2018-08-22)
**Note:** Version bump only for package @zendeskgarden/react-ranges
-
-
-
-
+
## [2.3.2](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.3.0...@zendeskgarden/react-ranges@2.3.2) (2018-08-17)
**Note:** Version bump only for package @zendeskgarden/react-ranges
-
-
-
-
+
## [2.3.1](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.3.0...@zendeskgarden/react-ranges@2.3.1) (2018-08-17)
**Note:** Version bump only for package @zendeskgarden/react-ranges
-
-
-
-
-# [2.3.0](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.14...@zendeskgarden/react-ranges@2.3.0) (2018-08-10)
+# [2.3.0](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.14...@zendeskgarden/react-ranges@2.3.0) (2018-08-10)
### Features
-* **checkboxes|radios|ranges|select|textfields|toggles:** Add new `none` option to support dynamic logic with the validation prop ([#99](https://github.com/zendeskgarden/react-components/issues/99)) ([3d670d8](https://github.com/zendeskgarden/react-components/commit/3d670d8))
-
-
-
+- **checkboxes|radios|ranges|select|textfields|toggles:** Add new `none` option to support dynamic logic with the validation prop ([#99](https://github.com/zendeskgarden/react-components/issues/99)) ([3d670d8](https://github.com/zendeskgarden/react-components/commit/3d670d8))
-## [2.2.14](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.13...@zendeskgarden/react-ranges@2.2.14) (2018-08-08)
-
-
+## [2.2.14](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.13...@zendeskgarden/react-ranges@2.2.14) (2018-08-08)
**Note:** Version bump only for package @zendeskgarden/react-ranges
-## [2.2.13](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.12...@zendeskgarden/react-ranges@2.2.13) (2018-08-07)
+## [2.2.13](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.12...@zendeskgarden/react-ranges@2.2.13) (2018-08-07)
### Bug Fixes
-* **buttons|ranges:** prettier formatting errors ([#94](https://github.com/zendeskgarden/react-components/issues/94)) ([69f17a1](https://github.com/zendeskgarden/react-components/commit/69f17a1))
-
-
-
+- **buttons|ranges:** prettier formatting errors ([#94](https://github.com/zendeskgarden/react-components/issues/94)) ([69f17a1](https://github.com/zendeskgarden/react-components/commit/69f17a1))
-## [2.2.12](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.10...@zendeskgarden/react-ranges@2.2.12) (2018-08-07)
+## [2.2.12](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.10...@zendeskgarden/react-ranges@2.2.12) (2018-08-07)
### Bug Fixes
-* **ranges:** increase specificity to show selection fill color ([#69](https://github.com/zendeskgarden/react-components/issues/69)) ([8914ce3](https://github.com/zendeskgarden/react-components/commit/8914ce3))
-
-
-
+- **ranges:** increase specificity to show selection fill color ([#69](https://github.com/zendeskgarden/react-components/issues/69)) ([8914ce3](https://github.com/zendeskgarden/react-components/commit/8914ce3))
-## [2.2.11](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.10...@zendeskgarden/react-ranges@2.2.11) (2018-07-27)
+## [2.2.11](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.10...@zendeskgarden/react-ranges@2.2.11) (2018-07-27)
### Bug Fixes
-* **ranges:** increase specificity to show selection fill color ([#69](https://github.com/zendeskgarden/react-components/issues/69)) ([8914ce3](https://github.com/zendeskgarden/react-components/commit/8914ce3))
-
-
-
+- **ranges:** increase specificity to show selection fill color ([#69](https://github.com/zendeskgarden/react-components/issues/69)) ([8914ce3](https://github.com/zendeskgarden/react-components/commit/8914ce3))
-## [2.2.10](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.9...@zendeskgarden/react-ranges@2.2.10) (2018-07-25)
-
-
+## [2.2.10](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.9...@zendeskgarden/react-ranges@2.2.10) (2018-07-25)
**Note:** Version bump only for package @zendeskgarden/react-ranges
-## [2.2.9](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.8...@zendeskgarden/react-ranges@2.2.9) (2018-07-25)
-
-
+## [2.2.9](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.8...@zendeskgarden/react-ranges@2.2.9) (2018-07-25)
**Note:** Version bump only for package @zendeskgarden/react-ranges
-## [2.2.8](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.7...@zendeskgarden/react-ranges@2.2.8) (2018-07-17)
-
-
+## [2.2.8](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.7...@zendeskgarden/react-ranges@2.2.8) (2018-07-17)
**Note:** Version bump only for package @zendeskgarden/react-ranges
-## [2.2.7](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.6...@zendeskgarden/react-ranges@2.2.7) (2018-07-06)
+## [2.2.7](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.6...@zendeskgarden/react-ranges@2.2.7) (2018-07-06)
### Bug Fixes
-* add isValidElement check for all children mapping within elements ([#52](https://github.com/zendeskgarden/react-components/issues/52)) ([895b873](https://github.com/zendeskgarden/react-components/commit/895b873))
-
-
-
+- add isValidElement check for all children mapping within elements ([#52](https://github.com/zendeskgarden/react-components/issues/52)) ([895b873](https://github.com/zendeskgarden/react-components/commit/895b873))
-## [2.2.6](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.5...@zendeskgarden/react-ranges@2.2.6) (2018-07-05)
-
-
+## [2.2.6](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.5...@zendeskgarden/react-ranges@2.2.6) (2018-07-05)
**Note:** Version bump only for package @zendeskgarden/react-ranges
-## [2.2.5](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.4...@zendeskgarden/react-ranges@2.2.5) (2018-07-04)
-
-
+## [2.2.5](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.4...@zendeskgarden/react-ranges@2.2.5) (2018-07-04)
**Note:** Version bump only for package @zendeskgarden/react-ranges
-## [2.2.4](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.3...@zendeskgarden/react-ranges@2.2.4) (2018-06-26)
+## [2.2.4](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.3...@zendeskgarden/react-ranges@2.2.4) (2018-06-26)
### Bug Fixes
-* **dependencies:** update react-theming peerDependency for all packages ([#46](https://github.com/zendeskgarden/react-components/issues/46)) ([1d0a43b](https://github.com/zendeskgarden/react-components/commit/1d0a43b))
-
-
-
+- **dependencies:** update react-theming peerDependency for all packages ([#46](https://github.com/zendeskgarden/react-components/issues/46)) ([1d0a43b](https://github.com/zendeskgarden/react-components/commit/1d0a43b))
-## [2.2.3](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.2...@zendeskgarden/react-ranges@2.2.3) (2018-06-25)
-
-
+## [2.2.3](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.2...@zendeskgarden/react-ranges@2.2.3) (2018-06-25)
**Note:** Version bump only for package @zendeskgarden/react-ranges
-## [2.2.2](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.1...@zendeskgarden/react-ranges@2.2.2) (2018-06-14)
-
-
+## [2.2.2](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.1...@zendeskgarden/react-ranges@2.2.2) (2018-06-14)
**Note:** Version bump only for package @zendeskgarden/react-ranges
-## [2.2.1](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.0...@zendeskgarden/react-ranges@2.2.1) (2018-06-14)
-
-
+## [2.2.1](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.2.0...@zendeskgarden/react-ranges@2.2.1) (2018-06-14)
**Note:** Version bump only for package @zendeskgarden/react-ranges
-# [2.2.0](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.1.0...@zendeskgarden/react-ranges@2.2.0) (2018-06-11)
+# [2.2.0](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.1.0...@zendeskgarden/react-ranges@2.2.0) (2018-06-11)
### Features
-* **testing:** introduce [@zendeskgarden](https://github.com/zendeskgarden)/react-testing utilities package ([#34](https://github.com/zendeskgarden/react-components/issues/34)) ([678e3c4](https://github.com/zendeskgarden/react-components/commit/678e3c4))
-* **testing:** introduce the [@zendeskgarden](https://github.com/zendeskgarden)/react-testing package ([#36](https://github.com/zendeskgarden/react-components/issues/36)) ([ee884e0](https://github.com/zendeskgarden/react-components/commit/ee884e0))
-
-
-
+- **testing:** introduce [@zendeskgarden](https://github.com/zendeskgarden)/react-testing utilities package ([#34](https://github.com/zendeskgarden/react-components/issues/34)) ([678e3c4](https://github.com/zendeskgarden/react-components/commit/678e3c4))
+- **testing:** introduce the [@zendeskgarden](https://github.com/zendeskgarden)/react-testing package ([#36](https://github.com/zendeskgarden/react-components/issues/36)) ([ee884e0](https://github.com/zendeskgarden/react-components/commit/ee884e0))
-# [2.1.0](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.0.3...@zendeskgarden/react-ranges@2.1.0) (2018-06-11)
+# [2.1.0](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.0.3...@zendeskgarden/react-ranges@2.1.0) (2018-06-11)
### Features
-* **utilities:** introduce new [@zendeskgarden](https://github.com/zendeskgarden)/react-utilities package ([#33](https://github.com/zendeskgarden/react-components/issues/33)) ([6ee0ce7](https://github.com/zendeskgarden/react-components/commit/6ee0ce7))
-
-
-
+- **utilities:** introduce new [@zendeskgarden](https://github.com/zendeskgarden)/react-utilities package ([#33](https://github.com/zendeskgarden/react-components/issues/33)) ([6ee0ce7](https://github.com/zendeskgarden/react-components/commit/6ee0ce7))
-## [2.0.3](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.0.2...@zendeskgarden/react-ranges@2.0.3) (2018-06-06)
+## [2.0.3](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.0.2...@zendeskgarden/react-ranges@2.0.3) (2018-06-06)
### Bug Fixes
-* Add hasType util to safely check children of component ([#27](https://github.com/zendeskgarden/react-components/issues/27)) ([5436bbd](https://github.com/zendeskgarden/react-components/commit/5436bbd))
-
-
-
+- Add hasType util to safely check children of component ([#27](https://github.com/zendeskgarden/react-components/issues/27)) ([5436bbd](https://github.com/zendeskgarden/react-components/commit/5436bbd))
-## [2.0.2](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.0.1...@zendeskgarden/react-ranges@2.0.2) (2018-06-05)
+## [2.0.2](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.0.1...@zendeskgarden/react-ranges@2.0.2) (2018-06-05)
### Bug Fixes
-* **dependencies:** add new allowed peerDependency for [@zendeskgarden](https://github.com/zendeskgarden)/react-theming ([#29](https://github.com/zendeskgarden/react-components/issues/29)) ([c5af0ce](https://github.com/zendeskgarden/react-components/commit/c5af0ce))
-
-
-
+- **dependencies:** add new allowed peerDependency for [@zendeskgarden](https://github.com/zendeskgarden)/react-theming ([#29](https://github.com/zendeskgarden/react-components/issues/29)) ([c5af0ce](https://github.com/zendeskgarden/react-components/commit/c5af0ce))
-## [2.0.1](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.0.0...@zendeskgarden/react-ranges@2.0.1) (2018-06-04)
-
-
+## [2.0.1](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@2.0.0...@zendeskgarden/react-ranges@2.0.1) (2018-06-04)
**Note:** Version bump only for package @zendeskgarden/react-ranges
-# [2.0.0](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@1.0.1...@zendeskgarden/react-ranges@2.0.0) (2018-06-02)
+# [2.0.0](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@1.0.1...@zendeskgarden/react-ranges@2.0.0) (2018-06-02)
### Features
-* **build:** move to webpack build and remove custom webpack dependency ([#21](https://github.com/zendeskgarden/react-components/issues/21)) ([5640a6e](https://github.com/zendeskgarden/react-components/commit/5640a6e))
-
+- **build:** move to webpack build and remove custom webpack dependency ([#21](https://github.com/zendeskgarden/react-components/issues/21)) ([5640a6e](https://github.com/zendeskgarden/react-components/commit/5640a6e))
### BREAKING CHANGES
-* **build:** All components no longer require custom webpack loaders for CSS-modules. Due to this build change the following breaking changes occurred:
+- **build:** All components no longer require custom webpack loaders for CSS-modules. Due to this build change the following breaking changes occurred:
-* Styles are no longer bundled within the components. You must import them separately:
+- Styles are no longer bundled within the components. You must import them separately:
```
import ‘@zendeskgarden/react-buttons/dist/styles.css';
```
-* The relative, “flat-pack” import paths are no longer necessary. You can now use the standard import structures:
+- The relative, “flat-pack” import paths are no longer necessary. You can now use the standard import structures:
```
// Old imports
@@ -261,37 +198,28 @@ import { Button } from ‘@zendeskgarden/react-buttons’;
These changes also simplify the custom configurations needed to test with our components. You may be able to remove some custom jest/enzyme entries that you needed in the past.
-
-
-
-## [1.0.1](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@1.0.0...@zendeskgarden/react-ranges@1.0.1) (2018-05-15)
-
-
+## [1.0.1](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@1.0.0...@zendeskgarden/react-ranges@1.0.1) (2018-05-15)
**Note:** Version bump only for package @zendeskgarden/react-ranges
-# [1.0.0](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@0.1.0...@zendeskgarden/react-ranges@1.0.0) (2018-05-10)
+# [1.0.0](https://github.com/zendeskgarden/react-components/compare/@zendeskgarden/react-ranges@0.1.0...@zendeskgarden/react-ranges@1.0.0) (2018-05-10)
### Features
-* **ranges:** add WCAG 2.0 AA compliant color palette ([#9](https://github.com/zendeskgarden/react-components/issues/9)) ([bd39a09](https://github.com/zendeskgarden/react-components/commit/bd39a09))
-
+- **ranges:** add WCAG 2.0 AA compliant color palette ([#9](https://github.com/zendeskgarden/react-components/issues/9)) ([bd39a09](https://github.com/zendeskgarden/react-components/commit/bd39a09))
### BREAKING CHANGES
-* **ranges:** This version includes the WCAG 2.0 AA compliant "blue" color palette. With this being a large visual change it is a major version.
-
-
-
+- **ranges:** This version includes the WCAG 2.0 AA compliant "blue" color palette. With this being a large visual change it is a major version.
-# 0.1.0 (2018-05-10)
+# 0.1.0 (2018-05-10)
### Features
-* **ranges:** introduce [@zendeskgarden](https://github.com/zendeskgarden)/react-ranges package ([#3](https://github.com/zendeskgarden/react-components/issues/3)) ([3311e64](https://github.com/zendeskgarden/react-components/commit/3311e64))
+- **ranges:** introduce [@zendeskgarden](https://github.com/zendeskgarden)/react-ranges package ([#3](https://github.com/zendeskgarden/react-components/issues/3)) ([3311e64](https://github.com/zendeskgarden/react-components/commit/3311e64))
diff --git a/packages/ranges/src/elements/RangeField.js b/packages/ranges/src/elements/RangeField.js
index 541fc63a906..42b12c606a2 100644
--- a/packages/ranges/src/elements/RangeField.js
+++ b/packages/ranges/src/elements/RangeField.js
@@ -42,6 +42,14 @@ export default class RangeField extends ControlledComponent {
const { id } = this.getControlledState();
const { children, ...otherProps } = this.props;
+ let isDescribed = false;
+
+ Children.forEach(children, child => {
+ if (hasType(child, Hint)) {
+ isDescribed = true;
+ }
+ });
+
return (
{({ getLabelProps, getInputProps, getHintProps, getMessageProps }) => (
@@ -56,7 +64,7 @@ export default class RangeField extends ControlledComponent {
}
if (hasType(child, Range)) {
- return cloneElement(child, getInputProps(child.props));
+ return cloneElement(child, getInputProps(child.props, { isDescribed }));
}
if (hasType(child, Hint)) {
diff --git a/packages/ranges/src/elements/RangeField.spec.js b/packages/ranges/src/elements/RangeField.spec.js
index 8b4dd6b05ed..61effdcf041 100644
--- a/packages/ranges/src/elements/RangeField.spec.js
+++ b/packages/ranges/src/elements/RangeField.spec.js
@@ -41,7 +41,7 @@ describe('RangeField', () => {
});
it('applies container props to Message', () => {
- expect(wrapper.find(Message)).toHaveProp('id', `${RANGE_FIELD_ID}--message`);
+ expect(wrapper.find(Message)).toHaveProp('role', 'alert');
});
it('applies input props to Range', () => {
diff --git a/packages/select/src/containers/SelectContainer.js b/packages/select/src/containers/SelectContainer.js
index 3c0990aedd5..def874a13e7 100644
--- a/packages/select/src/containers/SelectContainer.js
+++ b/packages/select/src/containers/SelectContainer.js
@@ -119,20 +119,6 @@ export default class SelectContainer extends ControlledComponent {
};
}
- getTriggerProps = ({ role = 'combobox', ...other } = {}) => {
- return {
- role,
- ...other
- };
- };
-
- getSelectProps = ({ role = 'listbox', ...other } = {}) => {
- return {
- role,
- ...other
- };
- };
-
render() {
const {
children,
@@ -163,7 +149,7 @@ export default class SelectContainer extends ControlledComponent {
trigger={({ getTriggerProps: getMenuTriggerProps, triggerRef }) =>
trigger &&
trigger({
- getTriggerProps: props => getMenuTriggerProps(this.getTriggerProps(props)),
+ getTriggerProps: getMenuTriggerProps,
triggerRef,
selectedKey,
isOpen
@@ -183,7 +169,7 @@ export default class SelectContainer extends ControlledComponent {
scheduleUpdate
}) =>
render({
- getSelectProps: props => getMenuProps(this.getSelectProps(props)),
+ getSelectProps: getMenuProps,
getItemProps,
getNextItemProps,
getPreviousItemProps,
diff --git a/packages/select/src/containers/SelectContainer.spec.js b/packages/select/src/containers/SelectContainer.spec.js
index 63650d10a8c..4eaee3e5374 100644
--- a/packages/select/src/containers/SelectContainer.spec.js
+++ b/packages/select/src/containers/SelectContainer.spec.js
@@ -59,23 +59,8 @@ describe('SelectContainer', () => {
});
const findTrigger = enzymeWrapper => enzymeWrapper.find('[data-test-id="trigger"]');
- const findDropdown = enzymeWrapper => enzymeWrapper.find('[data-test-id="dropdown"]');
const findItems = enzymeWrapper => enzymeWrapper.find('[data-test-id="item"]');
- describe('getTriggerProps()', () => {
- it('applies correct accessibility attributes', () => {
- expect(findTrigger(wrapper)).toHaveProp('role', 'combobox');
- });
- });
-
- describe('getSelectProps()', () => {
- it('applies correct accessibility attributes', () => {
- findTrigger(wrapper).simulate('click');
- wrapper.update();
- expect(findDropdown(wrapper)).toHaveProp('role', 'listbox');
- });
- });
-
describe('onChange', () => {
it('receives selected item key on select', () => {
findTrigger(wrapper).simulate('click');
diff --git a/packages/select/src/elements/SelectField.js b/packages/select/src/elements/SelectField.js
index 901b91797f9..cc777f39def 100644
--- a/packages/select/src/elements/SelectField.js
+++ b/packages/select/src/elements/SelectField.js
@@ -57,6 +57,14 @@ export default class SelectField extends ControlledComponent {
this.selectRef = undefined;
+ let isDescribed = false;
+
+ Children.forEach(children, child => {
+ if (hasType(child, Hint)) {
+ isDescribed = true;
+ }
+ });
+
return (
@@ -84,7 +92,10 @@ export default class SelectField extends ControlledComponent {
}
if (hasType(child, Select)) {
- return cloneElement(child, getFieldInputProps(this.getInputProps(child.props)));
+ return cloneElement(
+ child,
+ getFieldInputProps(this.getInputProps(child.props), { isDescribed })
+ );
}
return child;
diff --git a/packages/selection/src/containers/FieldContainer.js b/packages/selection/src/containers/FieldContainer.js
index 698ac1c217f..934131a344f 100644
--- a/packages/selection/src/containers/FieldContainer.js
+++ b/packages/selection/src/containers/FieldContainer.js
@@ -43,8 +43,6 @@ export default class FieldContainer extends ControlledComponent {
retrieveHintId = () => `${this.getControlledState().id}--hint`;
- retrieveMessageId = () => `${this.getControlledState().id}--message`;
-
getLabelProps = ({
id = this.retrieveLabelId(),
htmlFor = this.retrieveInputId(),
@@ -57,11 +55,11 @@ export default class FieldContainer extends ControlledComponent {
};
};
- getInputProps = ({ id = this.retrieveInputId(), ...other } = {}) => {
+ getInputProps = ({ id = this.retrieveInputId(), ...other } = {}, { isDescribed = true } = {}) => {
return {
id,
'aria-labelledby': this.retrieveLabelId(),
- 'aria-describedby': `${this.retrieveHintId()} ${this.retrieveMessageId()}`,
+ 'aria-describedby': isDescribed ? this.retrieveHintId() : null,
...other
};
};
@@ -73,9 +71,9 @@ export default class FieldContainer extends ControlledComponent {
};
};
- getMessageProps = ({ id = this.retrieveMessageId(), ...other } = {}) => {
+ getMessageProps = ({ role = 'alert', ...other } = {}) => {
return {
- id,
+ role,
...other
};
};
diff --git a/packages/selection/src/containers/FieldContainer.spec.js b/packages/selection/src/containers/FieldContainer.spec.js
index 706c6c86405..52f6f0d95f9 100644
--- a/packages/selection/src/containers/FieldContainer.spec.js
+++ b/packages/selection/src/containers/FieldContainer.spec.js
@@ -49,15 +49,26 @@ describe('FieldContainer', () => {
});
describe('getInputProps', () => {
- it('applies correct accessibility role', () => {
+ it('applies correct accessibility attributes', () => {
const input = findInput(wrapper);
expect(input).toHaveProp('id', `${CONTAINER_ID}--input`);
expect(input).toHaveProp('aria-labelledby', `${CONTAINER_ID}--label`);
- expect(input).toHaveProp(
- 'aria-describedby',
- `${CONTAINER_ID}--hint ${CONTAINER_ID}--message`
+ expect(input).toHaveProp('aria-describedby', `${CONTAINER_ID}--hint`);
+ });
+
+ it('excludes aria-describedby if option is not provided', () => {
+ wrapper = mountWithTheme(
+
+ {({ getInputProps }) => (
+
+
+
+ )}
+
);
+
+ expect(findInput(wrapper)).toHaveProp('aria-describedby', null);
});
});
@@ -69,7 +80,7 @@ describe('FieldContainer', () => {
describe('getMessageProps', () => {
it('applies correct accessibility role', () => {
- expect(findMessage(wrapper)).toHaveProp('id', `${CONTAINER_ID}--message`);
+ expect(findMessage(wrapper)).toHaveProp('role', 'alert');
});
});
});
diff --git a/packages/textfields/src/elements/TextField.js b/packages/textfields/src/elements/TextField.js
index 8f659e95669..3efe622599e 100644
--- a/packages/textfields/src/elements/TextField.js
+++ b/packages/textfields/src/elements/TextField.js
@@ -43,6 +43,14 @@ export default class TextField extends ControlledComponent {
const { id } = this.getControlledState();
const { children, ...otherProps } = this.props;
+ let isDescribed = false;
+
+ Children.forEach(children, child => {
+ if (hasType(child, Hint)) {
+ isDescribed = true;
+ }
+ });
+
return (
{({ getLabelProps, getInputProps, getHintProps, getMessageProps }) => (
@@ -57,7 +65,7 @@ export default class TextField extends ControlledComponent {
}
if (hasType(child, Input) || hasType(child, Textarea)) {
- return cloneElement(child, getInputProps(child.props));
+ return cloneElement(child, getInputProps(child.props, { isDescribed }));
}
if (hasType(child, Hint)) {
diff --git a/packages/textfields/src/elements/TextField.spec.js b/packages/textfields/src/elements/TextField.spec.js
index c9e846bcae3..2f4d694d489 100644
--- a/packages/textfields/src/elements/TextField.spec.js
+++ b/packages/textfields/src/elements/TextField.spec.js
@@ -42,7 +42,7 @@ describe('TextField', () => {
});
it('applies container props to Message', () => {
- expect(wrapper.find(Message)).toHaveProp('id', `${TEXT_FIELD_ID}--message`);
+ expect(wrapper.find(Message)).toHaveProp('role', 'alert');
});
it('applies no props to any other element', () => {
diff --git a/packages/textfields/src/views/Input.example.md b/packages/textfields/src/views/Input.example.md
index 8603a53ce6b..172a71ac27d 100644
--- a/packages/textfields/src/views/Input.example.md
+++ b/packages/textfields/src/views/Input.example.md
@@ -1,5 +1,5 @@
```jsx
-
+
```
### Validation Types
@@ -8,16 +8,16 @@
-
+
-
+
-
+
-
+
@@ -29,10 +29,10 @@
-
+
-
+
@@ -44,13 +44,13 @@
-
+
-
+
-
+
diff --git a/packages/textfields/src/views/Input.js b/packages/textfields/src/views/Input.js
index fafd3ccc6c7..d4050476c18 100644
--- a/packages/textfields/src/views/Input.js
+++ b/packages/textfields/src/views/Input.js
@@ -19,12 +19,17 @@ const VALIDATION = {
NONE: 'none'
};
+const isInvalid = validation => {
+ return validation === VALIDATION.WARNING || validation === VALIDATION.ERROR;
+};
+
/**
* Accepts all `` props
*/
const Input = styled.input.attrs({
'data-garden-id': COMPONENT_ID,
'data-garden-version': PACKAGE_VERSION,
+ 'aria-invalid': props => isInvalid(props.validation),
className: props =>
classNames(TextStyles['c-txt__input'], {
[TextStyles['c-txt__input--sm']]: props.small,
diff --git a/packages/textfields/src/views/MediaFigure.example.md b/packages/textfields/src/views/MediaFigure.example.md
index fa4775721b6..d57b621bc0b 100644
--- a/packages/textfields/src/views/MediaFigure.example.md
+++ b/packages/textfields/src/views/MediaFigure.example.md
@@ -9,7 +9,7 @@ const SettingsIcon = require('svg-react-loader?name=Attachment!@zendeskgarden/sv
-
+
diff --git a/packages/textfields/src/views/Textarea.example.md b/packages/textfields/src/views/Textarea.example.md
index 43153a84b99..71315a34b56 100644
--- a/packages/textfields/src/views/Textarea.example.md
+++ b/packages/textfields/src/views/Textarea.example.md
@@ -1,5 +1,5 @@
```jsx
-
+
```
### Validation Types
@@ -8,16 +8,16 @@
-
+
-
+
-
+
-
+
@@ -29,10 +29,10 @@
-
+
-
+
@@ -44,16 +44,16 @@
-
+
-
+
-
+
-
+
diff --git a/packages/textfields/src/views/__snapshots__/Input.spec.js.snap b/packages/textfields/src/views/__snapshots__/Input.spec.js.snap
index 3692f090eb6..2dc0721206b 100644
--- a/packages/textfields/src/views/__snapshots__/Input.spec.js.snap
+++ b/packages/textfields/src/views/__snapshots__/Input.spec.js.snap
@@ -2,6 +2,7 @@
exports[`Input renders RTL styling 1`] = `