From d13c5cd845061598c3b53a09ca3a6f37d58d407f Mon Sep 17 00:00:00 2001 From: Vojtech Miksu Date: Wed, 12 Feb 2020 15:54:42 -0800 Subject: [PATCH] fix(input-components): Improve focus ring styles (#2834) * fix(button): improve focus-ring styles * fix(checkbox): improve focus-ring styles * fix(toggle): improve focus-ring styles * fix(radio): improve focus-ring styles and focus mngmnt * fix(radio): wip tests * fix(radio): tests * fix(radio): lint fix * fix(yard): add unique names for radio knobs * test(vrt): update visual snapshots for e5b87dd [skip ci] (#2835) Co-authored-by: UberOpenSourceBot <33560951+UberOpenSourceBot@users.noreply.github.com> --- .../components/yard/config/radio.ts | 14 +- documentation-site/components/yard/editor.tsx | 1 + documentation-site/components/yard/index.tsx | 2 +- documentation-site/components/yard/knob.tsx | 2 +- documentation-site/examples/radio/basic.js | 2 +- documentation-site/examples/radio/basic.tsx | 2 +- documentation-site/examples/radio/disabled.js | 2 +- .../examples/radio/disabled.tsx | 2 +- documentation-site/examples/radio/error.js | 2 +- documentation-site/examples/radio/error.tsx | 2 +- .../examples/radio/horizontal-align.js | 2 +- .../examples/radio/horizontal-align.tsx | 2 +- .../examples/radio/overrides.js | 2 +- .../examples/radio/overrides.tsx | 2 +- documentation-site/examples/radio/stateful.js | 5 +- .../examples/radio/stateful.tsx | 5 +- package.json | 2 + src/button/button.js | 28 ++- src/button/styled-components.js | 34 ++-- src/button/types.js | 1 + src/checkbox/checkbox.js | 9 + src/checkbox/styled-components.js | 49 +++-- src/checkbox/types.js | 2 + src/radio/__tests__/radiogroup.test.js | 81 +++++++- src/radio/index.d.ts | 4 +- src/radio/radio.js | 20 +- src/radio/radiogroup.js | 41 +++- src/radio/styled-components.js | 6 + src/radio/types.js | 13 +- src/slider/slider.js | 45 ++--- .../modal-rtl__desktop-snap.png | Bin 19627 -> 19466 bytes .../modal-rtl__mobile-snap.png | Bin 14631 -> 14476 bytes .../modal-uncloseable__dark-snap.png | Bin 19562 -> 19359 bytes .../modal-uncloseable__desktop-snap.png | Bin 19444 -> 19269 bytes .../modal-uncloseable__mobile-snap.png | Bin 14461 -> 14297 bytes vrt/__image_snapshots__/modal__dark-snap.png | Bin 19756 -> 19560 bytes .../modal__desktop-snap.png | Bin 19644 -> 19471 bytes .../modal__mobile-snap.png | Bin 14630 -> 14466 bytes yarn.lock | 175 +++++++++++++++++- 39 files changed, 448 insertions(+), 111 deletions(-) diff --git a/documentation-site/components/yard/config/radio.ts b/documentation-site/components/yard/config/radio.ts index 5a6337232a..64661f2c78 100644 --- a/documentation-site/components/yard/config/radio.ts +++ b/documentation-site/components/yard/config/radio.ts @@ -72,6 +72,13 @@ const RadioGroupConfig: TConfig = { 'baseui/radio': {named: ['Radio']}, }, }, + name: { + value: 'number', + type: PropTypes.String, + description: + 'String value for the name of RadioGroup, it is used to group buttons. If missed default is random ID string.', + hidden: false, + }, align: { value: 'ALIGN.vertical', type: PropTypes.Enum, @@ -94,13 +101,6 @@ const RadioGroupConfig: TConfig = { type: PropTypes.Boolean, description: 'Sets radio group into error state.', }, - name: { - value: undefined, - type: PropTypes.String, - description: - 'String value for the name of RadioGroup, it is used to group buttons. If missed default is random ID string.', - hidden: true, - }, required: { value: false, type: PropTypes.Boolean, diff --git a/documentation-site/components/yard/editor.tsx b/documentation-site/components/yard/editor.tsx index be3eab1813..2f081261e1 100644 --- a/documentation-site/components/yard/editor.tsx +++ b/documentation-site/components/yard/editor.tsx @@ -84,6 +84,7 @@ const Editor: React.FC = ({ }} /> highlightCode(code, editorTheme, transformToken)} diff --git a/documentation-site/components/yard/index.tsx b/documentation-site/components/yard/index.tsx index 73d65a4dde..bb9946c5ce 100644 --- a/documentation-site/components/yard/index.tsx +++ b/documentation-site/components/yard/index.tsx @@ -16,7 +16,7 @@ import { ThemeProvider, } from 'baseui'; import {Card} from 'baseui/card'; -import {Spinner} from 'baseui/spinner'; +import {StyledSpinnerNext as Spinner} from 'baseui/spinner'; import {useRouter} from 'next/router'; import {useView, Compiler, Error} from 'react-view'; diff --git a/documentation-site/components/yard/knob.tsx b/documentation-site/components/yard/knob.tsx index 55014102b3..90868fd71e 100644 --- a/documentation-site/components/yard/knob.tsx +++ b/documentation-site/components/yard/knob.tsx @@ -161,7 +161,7 @@ const Knob: React.SFC<{ {numberOfOptions < 7 ? ( { const [value, setValue] = React.useState('1'); return ( setValue(e.target.value)} value={value} > diff --git a/documentation-site/examples/radio/basic.tsx b/documentation-site/examples/radio/basic.tsx index 38f5dd4329..43a2060cbc 100644 --- a/documentation-site/examples/radio/basic.tsx +++ b/documentation-site/examples/radio/basic.tsx @@ -5,7 +5,7 @@ export default () => { const [value, setValue] = React.useState('1'); return ( setValue(e.target.value)} value={value} > diff --git a/documentation-site/examples/radio/disabled.js b/documentation-site/examples/radio/disabled.js index 49f193bafc..30de69b245 100644 --- a/documentation-site/examples/radio/disabled.js +++ b/documentation-site/examples/radio/disabled.js @@ -3,7 +3,7 @@ import * as React from 'react'; import {Radio, RadioGroup} from 'baseui/radio'; export default () => ( - + Checked Unchecked diff --git a/documentation-site/examples/radio/disabled.tsx b/documentation-site/examples/radio/disabled.tsx index a862421d06..6ada7c8465 100644 --- a/documentation-site/examples/radio/disabled.tsx +++ b/documentation-site/examples/radio/disabled.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import {Radio, RadioGroup} from 'baseui/radio'; export default () => ( - + Checked Unchecked diff --git a/documentation-site/examples/radio/error.js b/documentation-site/examples/radio/error.js index 1847884443..df05c694e5 100644 --- a/documentation-site/examples/radio/error.js +++ b/documentation-site/examples/radio/error.js @@ -7,7 +7,7 @@ export default () => { return ( setValue(e.target.value)} value={value} > diff --git a/documentation-site/examples/radio/error.tsx b/documentation-site/examples/radio/error.tsx index ac970a6544..f82665d727 100644 --- a/documentation-site/examples/radio/error.tsx +++ b/documentation-site/examples/radio/error.tsx @@ -6,7 +6,7 @@ export default () => { return ( setValue(e.target.value)} value={value} > diff --git a/documentation-site/examples/radio/horizontal-align.js b/documentation-site/examples/radio/horizontal-align.js index aed61b4369..4a7c7bc635 100644 --- a/documentation-site/examples/radio/horizontal-align.js +++ b/documentation-site/examples/radio/horizontal-align.js @@ -7,7 +7,7 @@ export default () => { return ( setValue(e.target.value)} value={value} > diff --git a/documentation-site/examples/radio/horizontal-align.tsx b/documentation-site/examples/radio/horizontal-align.tsx index e0289ea35c..dc3df59246 100644 --- a/documentation-site/examples/radio/horizontal-align.tsx +++ b/documentation-site/examples/radio/horizontal-align.tsx @@ -6,7 +6,7 @@ export default () => { return ( setValue(e.target.value)} value={value} > diff --git a/documentation-site/examples/radio/overrides.js b/documentation-site/examples/radio/overrides.js index 98b2f11d1b..cf0db63d1e 100644 --- a/documentation-site/examples/radio/overrides.js +++ b/documentation-site/examples/radio/overrides.js @@ -7,7 +7,7 @@ export default () => { const [value, setValue] = React.useState('1'); return ( setValue(e.target.value)} value={value} > diff --git a/documentation-site/examples/radio/overrides.tsx b/documentation-site/examples/radio/overrides.tsx index 4767c7dde4..ca696bd709 100644 --- a/documentation-site/examples/radio/overrides.tsx +++ b/documentation-site/examples/radio/overrides.tsx @@ -6,7 +6,7 @@ export default () => { const [value, setValue] = React.useState('1'); return ( setValue(e.target.value)} value={value} > diff --git a/documentation-site/examples/radio/stateful.js b/documentation-site/examples/radio/stateful.js index b9ad47283f..24ddafcb03 100644 --- a/documentation-site/examples/radio/stateful.js +++ b/documentation-site/examples/radio/stateful.js @@ -3,10 +3,7 @@ import * as React from 'react'; import {Radio, StatefulRadioGroup} from 'baseui/radio'; export default () => ( - + First Second Third diff --git a/documentation-site/examples/radio/stateful.tsx b/documentation-site/examples/radio/stateful.tsx index b2bd8d4d2c..49821d57cb 100644 --- a/documentation-site/examples/radio/stateful.tsx +++ b/documentation-site/examples/radio/stateful.tsx @@ -2,10 +2,7 @@ import * as React from 'react'; import {Radio, StatefulRadioGroup} from 'baseui/radio'; export default () => ( - + First Second Third diff --git a/package.json b/package.json index 3c02c8ff53..8b27788afa 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,9 @@ "@octokit/rest": "^16.33.1", "@storybook/react": "^5.0.0", "@svgr/cli": "^4.3.2", + "@testing-library/jest-dom": "^5.1.1", "@testing-library/react": "^9.1.4", + "@testing-library/user-event": "^8.1.0", "@types/babel__code-frame": "^7.0.1", "@types/babel__core": "^7.1.3", "@types/babel__generator": "^7.0.2", diff --git a/src/button/button.js b/src/button/button.js index 206a1a98c6..fd818a74ab 100644 --- a/src/button/button.js +++ b/src/button/button.js @@ -15,12 +15,17 @@ import {getSharedProps} from './utils.js'; import ButtonInternals from './button-internals.js'; import {defaultProps} from './default-props.js'; import {getOverrides} from '../helpers/overrides.js'; +import {isFocusVisible, forkFocus, forkBlur} from '../utils/focusVisible.js'; import type {ButtonPropsT} from './types.js'; -// eslint-disable-next-line flowtype/no-weak-types -class Button extends React.Component { +class Button extends React.Component< + // eslint-disable-next-line flowtype/no-weak-types + ButtonPropsT & {forwardedRef: any}, + {isFocusVisible: boolean}, +> { static defaultProps = defaultProps; + state = {isFocusVisible: false}; internalOnClick = (...args: *) => { const {isLoading, onClick} = this.props; @@ -30,6 +35,18 @@ class Button extends React.Component { onClick && onClick(...args); }; + handleFocus = (event: SyntheticEvent<>) => { + if (isFocusVisible(event)) { + this.setState({isFocusVisible: true}); + } + }; + + handleBlur = (event: SyntheticEvent<>) => { + if (this.state.isFocusVisible !== false) { + this.setState({isFocusVisible: false}); + } + }; + render() { const { overrides = {}, @@ -61,7 +78,10 @@ class Button extends React.Component { overrides.LoadingSpinnerContainer, StyledLoadingSpinnerContainer, ); - const sharedProps = getSharedProps(this.props); + const sharedProps = { + ...getSharedProps(this.props), + $isFocusVisible: this.state.isFocusVisible, + }; return ( { {...baseButtonProps} // Applies last to override passed in onClick onClick={this.internalOnClick} + onFocus={forkFocus(baseButtonProps, this.handleFocus)} + onBlur={forkBlur(baseButtonProps, this.handleBlur)} > {isLoading ? ( diff --git a/src/button/styled-components.js b/src/button/styled-components.js index 6700599553..e26ef4dc86 100644 --- a/src/button/styled-components.js +++ b/src/button/styled-components.js @@ -11,7 +11,16 @@ import type {SharedStylePropsT} from './types.js'; export const BaseButton = styled( 'button', - ({$theme, $size, $kind, $shape, $isLoading, $isSelected, $disabled}) => ({ + ({ + $theme, + $size, + $kind, + $shape, + $isLoading, + $isSelected, + $disabled, + $isFocusVisible, + }) => ({ display: 'inline-flex', // need to maintain button width while showing loading spinner flexDirection: $isLoading ? 'column' : 'row', @@ -25,8 +34,9 @@ export const BaseButton = styled( borderTopStyle: 'none', borderRightStyle: 'none', borderBottomStyle: 'none', + outline: $isFocusVisible ? `3px solid ${$theme.colors.accent}` : 'none', + outlineOffset: '-3px', textDecoration: 'none', - outline: 'none', WebkitAppearance: 'none', transitionProperty: 'background', transitionDuration: $theme.animation.timing100, @@ -258,11 +268,6 @@ function getKindStyles({$theme, $isLoading, $isSelected, $kind, $disabled}) { ? $theme.colors.buttonPrimaryActive : $theme.colors.buttonPrimaryHover, }, - ':focus': { - backgroundColor: $isLoading - ? $theme.colors.buttonPrimaryActive - : $theme.colors.buttonPrimaryHover, - }, ':active': { backgroundColor: $theme.colors.buttonPrimaryActive, }, @@ -282,11 +287,6 @@ function getKindStyles({$theme, $isLoading, $isSelected, $kind, $disabled}) { ? $theme.colors.buttonSecondaryActive : $theme.colors.buttonSecondaryHover, }, - ':focus': { - backgroundColor: $isLoading - ? $theme.colors.buttonSecondaryActive - : $theme.colors.buttonSecondaryHover, - }, ':active': { backgroundColor: $theme.colors.buttonSecondaryActive, }, @@ -306,11 +306,6 @@ function getKindStyles({$theme, $isLoading, $isSelected, $kind, $disabled}) { ? $theme.colors.buttonTertiaryActive : $theme.colors.buttonTertiaryHover, }, - ':focus': { - backgroundColor: $isLoading - ? $theme.colors.buttonTertiaryActive - : $theme.colors.buttonTertiaryHover, - }, ':active': { backgroundColor: $theme.colors.buttonTertiaryActive, }, @@ -330,11 +325,6 @@ function getKindStyles({$theme, $isLoading, $isSelected, $kind, $disabled}) { ? $theme.colors.buttonMinimalActive : $theme.colors.buttonMinimalHover, }, - ':focus': { - backgroundColor: $isLoading - ? $theme.colors.buttonMinimalActive - : $theme.colors.buttonMinimalHover, - }, ':active': { backgroundColor: $theme.colors.buttonMinimalActive, }, diff --git a/src/button/types.js b/src/button/types.js index efce87b79e..dfd2810425 100644 --- a/src/button/types.js +++ b/src/button/types.js @@ -45,4 +45,5 @@ export type SharedStylePropsT = { $size?: $Keys, $isLoading?: boolean, $disabled?: boolean, + $isFocusVisible: boolean, }; diff --git a/src/checkbox/checkbox.js b/src/checkbox/checkbox.js index 1fe7f879ec..90f562bb58 100644 --- a/src/checkbox/checkbox.js +++ b/src/checkbox/checkbox.js @@ -18,6 +18,7 @@ import { ToggleTrack as StyledToggleTrack, } from './styled-components.js'; import {STYLE_TYPE} from './constants.js'; +import {isFocusVisible} from '../utils/focusVisible.js'; class StatelessCheckbox extends React.Component { static defaultProps: DefaultPropsT = { @@ -41,6 +42,7 @@ class StatelessCheckbox extends React.Component { state = { isFocused: this.props.autoFocus || false, + isFocusVisible: false, isHovered: false, isActive: false, }; @@ -83,11 +85,17 @@ class StatelessCheckbox extends React.Component { onFocus = (e: SyntheticInputEvent) => { this.setState({isFocused: true}); this.props.onFocus(e); + if (isFocusVisible(e)) { + this.setState({isFocusVisible: true}); + } }; onBlur = (e: SyntheticInputEvent) => { this.setState({isFocused: false}); this.props.onBlur(e); + if (this.state.isFocusVisible !== false) { + this.setState({isFocusVisible: false}); + } }; isToggle = () => { @@ -147,6 +155,7 @@ class StatelessCheckbox extends React.Component { }; const sharedProps = { $isFocused: this.state.isFocused, + $isFocusVisible: this.state.isFocusVisible, $isHovered: this.state.isHovered, $isActive: this.state.isActive, $isError: isError, diff --git a/src/checkbox/styled-components.js b/src/checkbox/styled-components.js index 0012a62d12..a72fd11592 100644 --- a/src/checkbox/styled-components.js +++ b/src/checkbox/styled-components.js @@ -12,7 +12,14 @@ import {STYLE_TYPE} from './constants.js'; import type {SharedStylePropsT} from './types.js'; function getBorderColor(props) { - const {$disabled, $checked, $isError, $isIndeterminate, $theme} = props; + const { + $disabled, + $checked, + $isError, + $isIndeterminate, + $theme, + $isFocusVisible, + } = props; const {colors} = $theme; if ($disabled) { return colors.tickFillDisabled; @@ -20,6 +27,8 @@ function getBorderColor(props) { return 'transparent'; } else if ($isError) { return colors.borderError; + } else if ($isFocusVisible) { + return colors.borderSelected; } else { return colors.tickBorder; } @@ -63,7 +72,6 @@ function getBackgroundColor(props) { $disabled, $checked, $isIndeterminate, - $isFocused, $isError, $isHovered, $isActive, @@ -82,7 +90,7 @@ function getBackgroundColor(props) { return colors.tickFill; } } else if ($isError && ($isIndeterminate || $checked)) { - if ($isActive || $isFocused) { + if ($isActive) { return colors.tickFillErrorSelectedHoverActive; } else if ($isHovered) { return colors.tickFillErrorSelectedHover; @@ -90,7 +98,7 @@ function getBackgroundColor(props) { return colors.tickFillErrorSelected; } } else if ($isError) { - if ($isActive || $isFocused) { + if ($isActive) { return colors.tickFillErrorHoverActive; } else if ($isHovered) { return colors.tickFillErrorHover; @@ -98,7 +106,7 @@ function getBackgroundColor(props) { return colors.tickFillError; } } else if ($isIndeterminate || $checked) { - if ($isActive || $isFocused) { + if ($isActive) { return colors.tickFillSelectedHoverActive; } else if ($isHovered) { return colors.tickFillSelectedHover; @@ -106,7 +114,7 @@ function getBackgroundColor(props) { return colors.tickFillSelected; } } else { - if ($isActive || $isFocused) { + if ($isActive) { return isToggle ? colors.sliderTrackFillActive : colors.tickFillActive; } else if ($isHovered) { return isToggle ? colors.sliderTrackFillHover : colors.tickFillHover; @@ -140,7 +148,14 @@ export const Root = styled('label', props => { }); export const Checkmark = styled('span', props => { - const {$checked, $disabled, $isError, $isIndeterminate, $theme} = props; + const { + $checked, + $disabled, + $isError, + $isIndeterminate, + $theme, + $isFocusVisible, + } = props; const {sizing, animation} = $theme; const tickColor = $disabled @@ -167,6 +182,7 @@ export const Checkmark = styled('span', props => { flex: '0 0 auto', transitionDuration: animation.timing100, transitionTimingFunction: animation.easeOutCurve, + transitionProperty: 'background-image, border-color, background-color', width: sizing.scale700, height: sizing.scale700, left: '4px', @@ -179,6 +195,10 @@ export const Checkmark = styled('span', props => { borderTopRightRadius: borderRadius, borderBottomRightRadius: borderRadius, borderBottomLeftRadius: borderRadius, + outline: + $isFocusVisible && $checked + ? `3px solid ${$theme.colors.accent}` + : 'none', display: 'inline-block', verticalAlign: 'middle', backgroundImage: $isIndeterminate @@ -234,7 +254,10 @@ export const Toggle = styled('div', props => { borderTopRightRadius: borderRadius, borderBottomRightRadius: borderRadius, borderBottomLeftRadius: borderRadius, - boxShadow: props.$theme.lighting.shadow400, + boxShadow: props.$isFocusVisible + ? `0 0 0 3px ${props.$theme.colors.accent}` + : props.$theme.lighting.shadow400, + outline: 'none', display: 'flex', justifyContent: 'center', height: props.$theme.sizing.scale800, @@ -257,10 +280,12 @@ export const Toggle = styled('div', props => { borderTopRightRadius: '50%', borderBottomRightRadius: '50%', borderBottomLeftRadius: '50%', - boxShadow: - (props.$isFocused || props.$isHovered) && !props.$disabled - ? props.$theme.lighting.shadow500 - : props.$theme.lighting.shadow400, + boxShadow: props.$isFocusVisible + ? `0 0 0 3px ${props.$theme.colors.accent}` + : props.$isHovered && !props.$disabled + ? props.$theme.lighting.shadow500 + : props.$theme.lighting.shadow400, + outline: 'none', height: props.$theme.sizing.scale700, width: props.$theme.sizing.scale700, transform: props.$checked diff --git a/src/checkbox/types.js b/src/checkbox/types.js index 6919eb6854..4c25bc5f75 100644 --- a/src/checkbox/types.js +++ b/src/checkbox/types.js @@ -88,6 +88,7 @@ export type PropsT = { export type StatelessStateT = { isFocused: boolean, + isFocusVisible: boolean, isHovered: boolean, isActive: boolean, }; @@ -159,6 +160,7 @@ export type StatefulCheckboxPropsT = { export type SharedStylePropsT = { $isFocused: boolean, + $isFocusVisible: boolean, $isHovered: boolean, $isActive: boolean, $isError: boolean, diff --git a/src/radio/__tests__/radiogroup.test.js b/src/radio/__tests__/radiogroup.test.js index 89e98ebb73..f4ab29d218 100644 --- a/src/radio/__tests__/radiogroup.test.js +++ b/src/radio/__tests__/radiogroup.test.js @@ -8,8 +8,11 @@ LICENSE file in the root directory of this source tree. import * as React from 'react'; import {shallow} from 'enzyme'; +import {render} from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import '@testing-library/jest-dom'; -import {RadioGroup, Radio} from '../index.js'; +import {StatefulRadioGroup, RadioGroup, Radio} from '../index.js'; describe('radio-group', () => { it('sets expected child radio checked', () => { @@ -54,3 +57,79 @@ describe('radio-group', () => { }); }); }); + +describe('radio-group focus and a11y management', () => { + it('sets the initial state', () => { + const {getByDisplayValue} = render( + + + + + , + ); + + const one = getByDisplayValue('1'); + const two = getByDisplayValue('2'); + const three = getByDisplayValue('3'); + + expect(one).not.toBeChecked(); + expect(two).not.toBeChecked(); + expect(three).toBeChecked(); + + expect(one).toHaveAttribute('tabindex', '-1'); + expect(two).toHaveAttribute('tabindex', '-1'); + expect(three).toHaveAttribute('tabindex', '0'); + + expect(one).not.toHaveFocus(); + expect(two).not.toHaveFocus(); + expect(three).not.toHaveFocus(); + }); + + it('focus selected radio', () => { + const {getByDisplayValue} = render( + + + + + , + ); + + const one = getByDisplayValue('1'); + const two = getByDisplayValue('2'); + const three = getByDisplayValue('3'); + + userEvent.tab(); + + expect(one).not.toHaveFocus(); + expect(two).not.toHaveFocus(); + expect(three).toHaveFocus(); + }); + + it('focus first radio if no value is selected', () => { + const {getByDisplayValue} = render( + + + + + , + ); + + const one = getByDisplayValue('1'); + const two = getByDisplayValue('2'); + const three = getByDisplayValue('3'); + + expect(one).not.toBeChecked(); + expect(two).not.toBeChecked(); + expect(three).not.toBeChecked(); + + expect(one).toHaveAttribute('tabindex', '0'); + expect(two).toHaveAttribute('tabindex', '-1'); + expect(three).toHaveAttribute('tabindex', '-1'); + + userEvent.tab(); + + expect(one).toHaveFocus(); + expect(two).not.toHaveFocus(); + expect(three).not.toHaveFocus(); + }); +}); diff --git a/src/radio/index.d.ts b/src/radio/index.d.ts index 4591839124..b7cbe2ec68 100644 --- a/src/radio/index.d.ts +++ b/src/radio/index.d.ts @@ -94,6 +94,8 @@ export interface RadioProps { disabled?: boolean; inputRef?: React.Ref; isError?: boolean; + isFocused?: boolean; + isFocusVisible?: boolean; labelPlacement?: 'top' | 'right' | 'bottom' | 'left'; name?: string; onChange?: React.ChangeEventHandler; @@ -106,11 +108,11 @@ export interface RadioProps { overrides?: RadioOverrides & RadioGroupOverrides; required?: boolean; value?: string; + tabIndex?: string; } export interface RadioState { isActive: boolean; - isFocused: boolean; isHovered: boolean; } diff --git a/src/radio/radio.js b/src/radio/radio.js index ece6ea280b..84bef277fa 100644 --- a/src/radio/radio.js +++ b/src/radio/radio.js @@ -48,7 +48,6 @@ class Radio extends React.Component { state = { isActive: false, - isFocused: this.props.autoFocus || false, isHovered: false, }; @@ -78,16 +77,6 @@ class Radio extends React.Component { this.props.onMouseUp && this.props.onMouseUp(e); }; - onFocus = (e: SyntheticInputEvent) => { - this.setState({isFocused: true}); - this.props.onFocus && this.props.onFocus(e); - }; - - onBlur = (e: SyntheticInputEvent) => { - this.setState({isFocused: false}); - this.props.onBlur && this.props.onBlur(e); - }; - render() { const {overrides = {}} = this.props; const [Root, rootProps] = getOverrides(overrides.Root, StyledRoot); @@ -113,7 +102,8 @@ class Radio extends React.Component { $hasDescription: !!this.props.description, $isActive: this.state.isActive, $isError: this.props.isError, - $isFocused: this.state.isFocused, + $isFocused: this.props.isFocused, + $isFocusVisible: this.props.isFocused && this.props.isFocusVisible, $isHovered: this.state.isHovered, $labelPlacement: this.props.labelPlacement, $required: this.props.required, @@ -143,15 +133,15 @@ class Radio extends React.Component { { static defaultProps: DefaultPropsT = { @@ -30,6 +31,30 @@ class StatelessRadioGroup extends React.Component { overrides: {}, }; + state = {isFocusVisible: false, focusedRadioIndex: -1}; + + handleFocus = ( + event: SyntheticInputEvent, + index: number, + ) => { + if (isFocusVisible(event)) { + this.setState({isFocusVisible: true}); + } + this.setState({focusedRadioIndex: index}); + this.props.onFocus && this.props.onFocus(event); + }; + + handleBlur = ( + event: SyntheticInputEvent, + index: number, + ) => { + if (this.state.isFocusVisible !== false) { + this.setState({isFocusVisible: false}); + } + this.setState({focusedRadioIndex: -1}); + this.props.onBlur && this.props.onBlur(event); + }; + render() { const {overrides = {}} = this.props; const [RadioGroupRoot, radioGroupRootProps] = getOverrides( @@ -59,22 +84,28 @@ class StatelessRadioGroup extends React.Component { $required={this.props.required} {...radioGroupRootProps} > - {React.Children.map(this.props.children, child => { + {React.Children.map(this.props.children, (child, index) => { if (!React.isValidElement(child)) { return null; } - + const checked = this.props.value === child.props.value; return React.cloneElement(child, { align: this.props.align, autoFocus: this.props.autoFocus, - checked: this.props.value === child.props.value, + checked, disabled: this.props.disabled || child.props.disabled, isError: this.props.isError, + isFocused: this.state.focusedRadioIndex === index, + isFocusVisible: this.state.isFocusVisible, + tabIndex: + (index === 0 && !this.props.value) || checked ? '0' : '-1', labelPlacement: this.props.labelPlacement, name: this.props.name, - onBlur: this.props.onBlur, + onBlur: (e: SyntheticInputEvent) => + this.handleBlur(e, index), + onFocus: (e: SyntheticInputEvent) => + this.handleFocus(e, index), onChange: this.props.onChange, - onFocus: this.props.onFocus, onMouseEnter: this.props.onMouseEnter, onMouseLeave: this.props.onMouseLeave, // will need to remove overrides pass-through on next major version diff --git a/src/radio/styled-components.js b/src/radio/styled-components.js index 066ca0b5e1..90fcc7a5c2 100644 --- a/src/radio/styled-components.js +++ b/src/radio/styled-components.js @@ -24,6 +24,7 @@ function getOuterColor(props) { if (props.$disabled) return colors.tickFillDisabled; if (!props.$checked) { if (props.$disabled) return colors.tickMarkFillDisabled; + if (props.$isFocusVisible) return colors.borderSelected; if (props.$isError) return colors.tickBorderError; return colors.tickBorder; } else { @@ -171,6 +172,10 @@ export const RadioMarkOuter = styled('div', props => { borderTopRightRadius: '50%', borderBottomRightRadius: '50%', borderBottomLeftRadius: '50%', + boxShadow: + props.$isFocusVisible && props.$checked + ? `0 0 0 3px ${props.$theme.colors.accent}` + : 'none', display: 'flex', height: sizing.scale700, justifyContent: 'center', @@ -178,6 +183,7 @@ export const RadioMarkOuter = styled('div', props => { marginRight: sizing.scale0, marginBottom: sizing.scale0, marginLeft: sizing.scale0, + outline: 'none', verticalAlign: 'middle', width: sizing.scale700, flexShrink: 0, diff --git a/src/radio/types.js b/src/radio/types.js index 2d4b1621b9..8397124393 100644 --- a/src/radio/types.js +++ b/src/radio/types.js @@ -105,6 +105,10 @@ export type RadioPropsT = { inputRef: React.ElementRef<*>, /** Renders checkbox in errored state. */ isError?: boolean, + /** Is radio focused / active? */ + isFocused?: boolean, + /** Is parent RadioGroup focused by keyboard? */ + isFocusVisible?: boolean, /** How to position the label relative to the checkbox itself. */ labelPlacement?: 'top' | 'right' | 'bottom' | 'left', /** Passed to the input element name attribute */ @@ -128,11 +132,12 @@ export type RadioPropsT = { required?: boolean, /** Passed to the input element value attribute */ value?: string, + /** Passed to the input element, typically managed by RadioGroup */ + tabIndex?: string, }; export type RadioStateT = { isActive: boolean, - isFocused: boolean, isHovered: boolean, }; @@ -143,7 +148,10 @@ export type StateReducerT = ( event: SyntheticInputEvent, ) => StateT; -export type StatelessStateT = {}; +export type StatelessStateT = { + isFocusVisible: boolean, + focusedRadioIndex: number, +}; export type DefaultStatefulPropsT = { initialState: StateT, @@ -186,6 +194,7 @@ export type StylePropsT = { $isActive: boolean, $isError: boolean, $isFocused: boolean, + $isFocusVisible: boolean, $isHovered: boolean, $labelPlacement: LabelPlacementT, $required: boolean, diff --git a/src/slider/slider.js b/src/slider/slider.js index 9c2406384b..e8c93788af 100644 --- a/src/slider/slider.js +++ b/src/slider/slider.js @@ -47,7 +47,7 @@ const ThumbLabel = ({index, values, rangeRef, Component, ...props}) => { class Slider extends React.Component< PropsT, - {focusVisible: boolean, focusedThumbIndex: number}, + {isFocusVisible: boolean, focusedThumbIndex: number}, > { static defaultProps = { overrides: {}, @@ -58,7 +58,7 @@ class Slider extends React.Component< max: 100, step: 1, }; - state = {focusVisible: false, focusedThumbIndex: -1}; + state = {isFocusVisible: false, focusedThumbIndex: -1}; rangeRef = React.createRef(); getSharedProps() { const {disabled, step, min, max, value}: PropsT = this.props; @@ -68,10 +68,27 @@ class Slider extends React.Component< $min: min, $max: max, $value: limitValue(value), - $isFocusVisible: this.state.focusVisible, + $isFocusVisible: this.state.isFocusVisible, }; } + handleFocus = (event: SyntheticEvent<>) => { + if (isFocusVisible(event)) { + this.setState({isFocusVisible: true}); + } + const index = + // eslint-disable-next-line flowtype/no-weak-types + (event.target: any).parentNode.firstChild === event.target ? 0 : 1; + this.setState({focusedThumbIndex: index}); + }; + + handleBlur = (event: SyntheticEvent<>) => { + if (this.state.isFocusVisible !== false) { + this.setState({isFocusVisible: false}); + } + this.setState({focusedThumbIndex: -1}); + }; + render() { const { overrides = {}, @@ -105,22 +122,6 @@ class Slider extends React.Component< ); const sharedProps = this.getSharedProps(); - const handleFocus = event => { - if (isFocusVisible(event)) { - this.setState({focusVisible: true}); - } - const index = - // eslint-disable-next-line flowtype/no-weak-types - (event.target: any).parentNode.firstChild === event.target ? 0 : 1; - this.setState({focusedThumbIndex: index}); - }; - - const handleBlur = event => { - if (this.state.focusVisible !== false) { - this.setState({focusVisible: false}); - } - this.setState({focusedThumbIndex: -1}); - }; return ( {theme => ( @@ -128,8 +129,8 @@ class Slider extends React.Component< data-baseweb="slider" {...sharedProps} {...rootProps} - onFocus={forkFocus(rootProps, handleFocus)} - onBlur={forkBlur(rootProps, handleBlur)} + onFocus={forkFocus(rootProps, this.handleFocus)} + onBlur={forkBlur(rootProps, this.handleBlur)} > diff --git a/vrt/__image_snapshots__/modal-rtl__desktop-snap.png b/vrt/__image_snapshots__/modal-rtl__desktop-snap.png index 17f2caa2a7c97d7c0e86cbcdbcd1da5ab9d79bdd..7ab97f531758f793328d8ec15907d52b644e4767 100644 GIT binary patch delta 3251 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 delta 3378 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 B4gvrG diff --git a/vrt/__image_snapshots__/modal-rtl__mobile-snap.png b/vrt/__image_snapshots__/modal-rtl__mobile-snap.png index 49b88c2b540f870a7f44ab211e8e11e193d40662..47d7490e486e77c83a51af23b274fd20aa79744d 100644 GIT binary patch literal 14476 zcmeHucT|(v+HcfR$37}$EPw?BDKa96bVo&`NH0>O;{XCmuc6r;QDH=iAcWomBuWpE zU`HtdX;C1d6G9161EGD-_LOzcxpVG4_k7-zKjl{*?i=cBZP~bc zBL;)nqJ8d+F$S~B4})2=@B4M|o6ju=p29z?yo|L@VTiQ7Yz$@}M*Gaqrv3?IjKB*m zKFiz*I%aj)YT;AoRbAp74@yn`-knl6`aFNk*&#Ervy;QA*=mqUo)7rX1HJZuAPN9tn7g9iKNycgvr zeDxAed^(J|e)#7bb{NddmETk_Kc4Aa^>SbDR?NEXewd$rD_e8@=eI(b%^NpNuf{~t znhi9BhQ#(=Kct^^=t3m zw;RSf$tJlLq_!NBtksmtUu;9>2X>!uPfpO!a;T5bc=+()DQ@Yt4)Zs6w>%N0%(Pjz zQvyq|!ra*oHw#x+A~SGYEs09>8)puGO1qb-7uOr>6Ls5SGRC8 ztriOQHGIK~6V+jl9<@@q%v|2g$a>s;;eo+H!sY64P1o_yFVbiUN;|LfuNC%KPk51e z{uv>3W!Z}CnGyNqi4QDvU|`^|jLdnrs-=?2$w~QNKm4GyH~ge*@fj6Aj%k*D;zovf z+Sx6|E_D5s`G(NdMTD2V1)B{Y+4{7a)zD~d!>zdwI{gOgcI8`_>aSV9)%4l%YtyjJ z+L1i&IEj|1;=-&9DDSzur=>E$%ih7kd5Je;RTUDP;`R3JTZyAbjq0B%TAVxg+t$4& zlGD>g$G#L+`{=!zw+k5H-y*DfA>XRl*xWp(jcA*@WzTW{8P$@jUs6*}-y{5dYn`%Z z|8Jr>wiUjSo%gVjRwY++)Ps519)0g?8XD*vMg?pSmQ1CdT$mk;{{8plp`j~Fu)Vy| z!iKPfktSW)R@g%^ZT&10as7lw_`YrErFE;(CdJ5DJ2&9fYU=BK0z;jh2_t1U%XA~( z^fbP_v8LF$RWf+`la_NAm9lQj?(~F&z1P}{v?E)dUpoD0w}KAr8ocRLRCIJkt!$M| zX;(-E)4y+v5S)GEJdr%O8|~8rLD@F@Sldh&62*LhJ8ofR6<^Jo=y0oIf9-iQ+>-Nz zy3BLYc9i`%+DUF6vyVdyn)}+*UgnV|AY+x@*l4(AxBR)ZvyYl`NmRo0w70hL)L{Kg zwZ^hhu6cgb-7S0gwr@`fS>hd5RkaZ}zchVEtaOGA-S5jt1=z;v1u&t}qdHuu`NiexjSPXkd-LYz{Czl`mPSTK z8@FunVOW&9+AhIM*=cMG-47Wa4WTnSdR0?XlRr@JRWPfnq5&RdXJ?nvu~A*lGD}~` z-qBI&#EA=PxM{-(VYRRX?qZc8Y`ty2>(Htm68#in?JX_|q<;R~+3aR+E^uBvwyTZ#h$qE<74eejM zetqE5-o^W6Yg#`OZ7W(*H8d&hmGCFl=SBc3kYNm)W%k*9g>pLg=0WjTU&R33YY5_1lD{ zJvY4XapxmSC2 zE+_x(+cTPH&q~4xoR63PG*;S0gyRpM>$#`Nv`kX=(MeSCGlz8Jhj(^ml;`Ni9?{X( z_ORV(S#mXQm`);TEcR@3ZcM&$>eMMysD!ow1JS#Gx_FYTnp9V(w>0J!+MJ-|rK8Fj zAyt{{={-b6L-Wj;Y`9nXK#X-%QW8nQrL8R7`o%AI;*Vb=prU7Hr zr>7b;q>dcXhk|76?_XB#H%?Uc8IG#;nihz)zwYc>AFsfhp=0@>mn?893{p~3ls$TH zhb&HL$=H-VZ`4}ecp_0hczz)ETj9>LJeH^)Y^ANO&4c=BTfJA+-;hL^jVDrh&X4vg z8DF||NjYS(3|$Vzjd&pGm+e)HlMk4|Tw9d0+tlZhp|cb@HVD@zX>`pTJ;xqZ4AtNb z9Ymi(5H~_SFY;y^Lkf}_=VOl85^k(nKOC;Y`MsIl(w1*M^G*<(9lS8hztm#0cc-}i zbi=zN82({)R?^lFeFBSGTE`q|n?LmR<=x*Y9^W`tFUUSn2TZrHHl&g#&`IS(;W(JKJq0Cugi5yF^miI(I@ndceC98gCuq0OI=C6*`c8!3~2{OvPy^FFXu|P*mhsc zSEGz_X|E&q-t^3_tih<}dV6TB>|U6scdx?W%?M=`3xhcoZUw6`I_5dOcJ7Hwoi3wm z>D>)mR58iF!U7@}-0=84{_3zf@O6V)z98lIiSU>mhByY-%HIr|XFwUkiQPzs11P?M%oe$7Agxa2U{ zyhK;>fPjK?%Q@&)&Q0m}&xY^K!G_GglVydjEODV{%R*BoKto6PIa5E808l6b8#vjo zedq37f>wm^9aoKDUeRAr&@@eDoUeQw0A38h`o;Mv-QsW{BDFp4S73GRg^m$`p);R8 z{c-KuwNAiT#E6O-8rVX|hBmQSo7Asg-4)!JHU_E_w=Eiq3vx^~_;*})vkM$kVEAbA(%IPs`MJ8+zee$o$K8sgQeQQi%HCm zK+xnP*0AUJRl~Dq@4}lL)JDKr>M1nea$qmE*e3}I(%QovrEYO;-v~pP6tVHut@V@; z>gD$jKLPWwsbW_6kz)h0h2MBV)T!(ArB3V>d90MS|ikdOzaiLgBEWb4hfn@mY|Y8mP2d>e== z_wV0FpsOZY%C=NYOzbcKBZzAq9UV^w9>5BUQnOrhXW)UbX4rDcLx;|O{P?lv!w1yh zqb=+#N0lw|E~ErZ4I)I!Tj*LL0+Sp9?$oR+OGzhHEn5MAp0Zz99bUG^tOa%`4_f{e z2$tPPf4RL|(KYY+^Pd1xqNUQ4f4)_On{iHJlJU9S1s^U)sAX1*gxZ{ccHE4Do00b( zGDL42nNG)sGWr5GGH)d9nE>MX?%g|fjJ2x~ge3wpK)!PJs^N+nD`uOBX=qhI8>4_l zwimku+OSp@8&=Lm9x}k^0jeh$rJY51dU-OoYKY9jPtDClZ}C_!c_TYpLMf5<%L+YR z`^f=pp({gK+p*f@?(N$Wutl$4z1p~OBVv_~Nx_G-A?6Hn+KQZ-4{0|E`E?rgQz3%v zjvhS<4~(rQzn_?xAXpY=N^yXkAr{7)9m@qEs=cx$^p#lL&5qiFa4BNhDR|A9VX{sW z#G$zMog>@%-MOEmg@Dv%r)fp#L;?<08-(lPK)|rlzJ*>4oEUx;T0l z>*+-`vrRoc3nC*U`2++8dEcEsb?PQ!zrb-^S_x*ujVZT&`Q?|I%JAfUU6TU*{285{ zHl?vIpso@DEho_gue=q?PTfdVnu`csOtYbN8zws;^})^bL?wlghRb= zn$DF6!h>+rLn)BI^k78Eq)3&iCRzIYZ!d^X8^C0IWe{0I=^^|4a2ynJfC^3%MmS^iHDkJ27q+(P~ZNC4B z&iV5)GxI=J^6v@b&NfgETm^XRKowlFmO9U*uj^`HyJ zJq^zlUE1^jzPG`1`GBN?uu$IFW)um8mjRnnQ&-ml1!J67R0lt0!KYR;!>v+NmrW5n zy5!gCaSupaHYiismW2+$Yg^X}+9U%Hb9sGx0}lkDTJPn!V~)eHj4WdLuw*OI)*5&N zI$nIh;4UatdQjKxl5+PAJ%0SSe6*mplPM@D$eP_v)u0ma7U%qW%6&3Ga{b{(l6<1Fu64 zo`;%+OO7?lBYUxip~6kDT~<#d=oIR^pqdf7Je73A?ksuZv{#-EsqpucvdNPEz*nOq zBM)dpQ82!>ZVMl9v;C*I32w)}NunSWf9SeOS7`@(uYYgJn z3~aBIqM`*V>JN7vLmd25npP~kGD4k~on(F?;6jl8Nwd?P!F)S*q(Z!~A*|ZoKiZ=J zQF$J(YAI;regmjCsy)T73@ZRe#vnloNMA^Xvd!-Q_{6y_FYfL(5h7emrYT-)mxpd^ z;K%TZg@Q5q@cw-xef{u|xt{e}@Vk{f({JAF#A*h@5w%qKxiQ?|Y$0|)5zThWvsqT0O0sRl7^s0-%s)QySa;^JCUtOk0#f{SUP!+9jp0D3Tn?o$~e z?bpB#dZy^s2F<4^bR`6>0XlOthOEbQPw8eO2eekWimdHqf{SvOba@K7~TcGSq{v-81@03po~?KAymnn zw&T8|7eEK`Ut~?9Z32}IeGFn@<2{j(>_>YPV|X5nk2N(-)9hx2pgDK3Lx&{Q)NHZA zGtsjgMlOhpLvOZev_Q|9>Atm%;MAN61*Nqv?ijzYFi}_y7v+?QL~R5epz%4wd&VpK z5R8qDSu}(*ikUtw?V`!@*x)tp{l%-l6VkN_ThnDVEa8j7<#1-A~<(-s>u& zg9~R?-mO$J&|D0VFbF!`ss-(-of=#L3*m#JQBDEPWf%mVkvq?xJV`^MAT)wjO+njq zc(aieUxU3wMa5L9Ns|cg_$bk=D%fdjJMFL1!4?ReE}Q7G3=!2R%&>0V&YZ zM9mur5>wN{ zwz1i&{1dDc)d?Cy7a$}3_x-2&{vrWOf$|>8YfiG^3RX5txkHynmcg}-k~^+$9VPkI zg5&cm(vN=otr3p7W^S{N@7M016P3KqLWl7ECSn3M;LUhI(6vCreFQ8AsgbaAtvM#* z0Jxo3mY0w{P}ra@#U9llCF*C5jMS9V&OX}B&+`G{ucHI1iI}!sepZoA`@PAyc9rKTg@O^H3S>nAf0Q=~0Oh!xo9aPYZG%=9O=p9(O$^`emp4vTZQZ){$kErFwr7COz|ojrynsKkcWbd*mmP{+NI)}C ziN(albG4rwLfsYcoyDLJ@0Q}o{d^R4e8o=p zTSv;eSA%kUh09^sy(^Lq>=`efyPSwO?H|dj{DJGaWA|>t2(dzcoWjM!IvpX{bwonu zQXs74uQcwfQa7*g9Yd&ktg8we7Z=By>x(Fc#5q-M1CJf0NC~yGAI!aw8df$};BBF$-gPe}C1j-ER zWq#v!q?KC<1*3PW=)Dm>IOE5p!pYb6ah`|(C?)D6I0xpIF%)_Eki|JUEJ>~FydonV zcH0RM7o;N{n2O!dGfE`df%-%h3jomO(C9iMPBDEuuAz2tNbhMkFY_{NYH&ziB=pa- zsIonfrDj7Lk&u+sf&OFyi6Ew3%EaZSrlumi!p?}bGiH?gAT+44JQ1Ou-;AxajHsZ@ z6dB-WUnK(I%E-(deqx|*WM_xpv2$l|SRjNClH)1!gU=9_LfjwNa=?--sfnW*ke87+ zGJRH)N~^hrKu|`-iG>wVraxj`RvA8o7|Vrh+N~bspB#I0qj6h_r{%i83ZeAQ8^zbqmu;O{4Zu;if_9b$)q$6}UA=?wO^$ z1gjFL`P1v06S^BL-{l&6$c|mDj-<|Z1|%`-cH2^e$js1{V4(A)Mv3QN3LT|XRIDS^ zW}jM&Obn87@e@P!58ImRew7)kG%_eOVK{-4*VNoxeC5*tgmhgaCLCOI#WUjQ?6KwY zK-+-A@d2fV>7Zi{b&Vhjh-#m{yV(fhcBc1%EUtK++iVxxdl<@`SAG^CUxa-iAH+W{ zxg0!r@U(2@*HbT!U7`foUtPtdjDzPvo1~!1u+iH zD^3iE%6K{ZFyu-CYIv^4lGJyC8c|Tiv9q|5;E1DY2?v~6;nAy#LY8o9D~nV1?Sg*l zbKPqY`UdsD=-yVLX<(g_N=je&{roE9Hdyb#ve2?Wd^pDdl?C`QvXsJ^*|zuJ1sY*6KPsbHfQk}SEFt>Ht_$3%mHh7Ri_l-^eK?s} zyCRshD>C(Z=2+IF7)?6Swv`$jD0AU?avf{(uHuw(@RzP$JBw%^ypu;z++`dQkXta1 zowZxpI~%zf$T);#NuM962XstbDJ(6dT2ZPEgm|Tm;{R-1}MNsShzPwg2WoOVKWhI47 z*3Q#dBbEBt+0rt)nSG)oj@U#ysurrIq@+~dAE_IJyXxlfI_7PxQW16Z3tU(nFy#O` z$63TB75<^e z9SsR+F5e_c5<2bUrsiE7ep%(_aPscmyTeE|BADeC`HoqEx0wqVWuO4xYuf*?Eldsy zhbKpXtnfJQ<(Db_&UnozklfoOQCd+N65?}~b$RXvIfFc6iZUMQ?GkA3Px@8{oActStu+XSh?sTF2)X@eXXnggQ>4DEpqt`5H zQllvUgV%{<~*Ei9srNd>tWP_DT zuFD1*$4>&Sxtcdm_*83tkUKDN(woD#RdW^=1!19I&X=dEIvr0W;k z01lx73@yb3z6z*B=+TcyU$bh%2Na$hZ}evgV{Rlo!l@e^lh;)dDLg@~LwmZKI;!mi zn+i->61;GbQxW(9yTB9-?*r8VgR56tb+0wk<#ABb1{FuzUL=UQRw)gQF$3e#=4KsW|kKCX3V)?J@*h^R~?*;u+;X6_(lf5~Rj8l~%l z>U!toxJ~q3aRX$5&?#Ryu;^j9XX@a$dnWF;?k?$YZDu!TDO`H}-JN^)kju`f@RRj^ zsCeum<;y`gmXw7+o#EPxHJxNHGZ>trJATe3fD%*aOHeV~@>5_DZ$Ia{2%_~cIb#Mb%y;y23W%ael%U)C zB@Q+uksxS)20gr~Ua>0=y!3J^?O8x7vu-u)Kmnox_V)Hb?awa50QKXHvIklA1^Ga zskD82ZXuvA(qKi5gTbcRUtrX!93+rpG%@h>=xIRqyH)+4TQuZX4vw1Nu356!X1Eq{ zZ(!2COW(J{lnt7vK?D@>>b^cRn5uyJyXG-^tOI_Cj35h)d{k_yFbyfZ96T@*L~j~( zf{_xRzDJ6Z2M(Nqc1B0w9|R;E<$XOOZS2RgihOs;=&yyM|1afO`ht!A@|jXNKj$YcFxFeYO$u$!e<6OC~>m5 z<)h2-<5rR2GxIduN%Px~8nznA!9Lh(OiU-Ru4TI*ln)SWz<4m&#!-9}|~r)Wz8RJyElpurWW+ zw<{@1LjE=#3E8IxA9wct$MYbqk{mDuKQ(3O`hc{7Cc9wgkszw4r}y}>BM4w!Aqz5? z+&n8{S?@+9jI~#VRuvQ$76Zja&LKh{K$2EdR3q>~liHBta*ef^MPmEgrIdTZ(4r%e zGz-yl9trDXB^}=H_$|KWCXChW9TGEFLbe8Q79S9SU6D}r*{2Hq_3Cg64ALzm|daFOr;M9YvxOH^?0ez~LJ7-()F zsttV^A&38JYHOPjbpi(_7b+Q%LSgGYqO8(d=K*Z>QY@LWa`d0&J^+v9^;Xp$E- zXAch#&2Y!d+oR=pZQH?7!SPSmCLjyiv(9Zv7G=~QL2JQE|>gtMc@^q6f zIu&hWk{zWbU3(|8Bwzs^Ld_Yvg0M&WNc*s{Nr;zsN(Fj;sy0?ub}|-o@$r0_7L2yZ z$su1sYW68q*c!ICK!Et+#7Ff|%jKP#L>Zp7GB~K5o%n-bIskraMshIdm=(+%*5IJ? z^5Q%SGd^Kqj&cZ?7RWk+4h$-ylpUCX2M!(th&?z(7brDY3;N+SD8`_^o9P%B&_O~$ zjT(l^ntbX&qDJ~Q12>Z2{^IgIm@b@#fnGMK_MSq=z=S|%^ue^wN2KM6Y&ExrN95znb9wWjrNbf&4xzWbYY}_2iY6N zEAkLQIK}q!z9L(Z0?~$yoM=4$NLI7uDE0tS`gqgqGCa)f5C*VM zB0tQvtY;laLk-&+q}^c{J`?UB_W$u{QeY)1fK#fJkuAqNOZ`w}sA~eq42R z)2{%R-i7g(PrTp5zjv<5XE@er~y&pz)2!J{Y zm^=gXQMI5Kj!c6i;|ywD{4vLHDA!pq)v9o<-4t{*3kWMnt6-+M+rvGI`luQ}9R@R5^aYD_aN_pwzV8lZ7uRPc(fJU(^$v`<$s*9n&RZ8SSRo&clU z!>`thNYCzFn^a^8+#bmI5^r&J&v@uc1v22l*pgCGvP2p&ya^i4he#a(5$%a+68Ga1 zs8(!3F3}id&o&a41nPtn2w%8?XbYR_AQ<);W>PBB3%ky!fmwin4FJI2aOYP?A$G>q zCk-EhMn3N%<4RuO(=|gkhge2sacSK(r+|f==+$G(4WTQwpAx;&7E8j1hkDm9FT_rV z4xU-(F7`Y#?^^!x@y<2*Fg=gskXc2Z13FcAg)p7_IsDyVdpAL_^?NHLdv6_12}4-L z6;Zs7g?yC-9AH@gA5EFQ-L^G%khT=ij~VU$8<0rW3AKDr-|qSKp@;kR;Q!~pRH=S@ zf9HIU4CdnI@jv`~n150W{^(C;{`|`S3|9T~F8}?3&Ht0q^=It Wm1e#dhCeUFXlv@9A)dN;^S=OZS|3;d literal 14631 zcmeHucT|(guF3Id~`bWju!QF@V4AWw zB1-R(E;WQesG%f~+~;*>pLO@ybA}MH)AlE zZEBY;>R>QyJTaJchko1ufAY1B{}udijjN8T5{A%lkcz<^!l+$5ujdsz+3REa(!Gx} zvxr%{SxD&h=q6p0xhu9JMrmHgu9HrY_R*O(g2i+?{cRC`BC9k!f@n}2*Ork}*G9~* zt69tCB~)K`fxzwEkpJk=+O>16WIor&TkE#2+v@8j&lln+R}^JOSjO%hdOUMuc<7as z^J`rUM)&So5(aaw^9UXD>rc)bG4~$IVt&5Zv*z8Q!R?q0J3KMJ92aQXg3*%ER9L>5 z7Km0cjOV-^!|M7qR$W|IA@$1)XRn^tmM){VTw`^&pwx$=_ zkwtTj@>Q%FVmHmt2D>khMA|hao_CRniLI8}ra^S&xYfS4zYBUzP8u_S~_}@tzwU z@2{*h$iwCi58sSa@H6)I_Lgz_c6+owCcV5|ZX1t`-u9p)P3j`e1hcZXOx<*);`R*f z3zJ=it(BbBDNL@=ZzU(!>6sg1y;I-j=NDSmNAoYn$$Dzg$a&<%^Y_})t{zyOZ`BM- zVXv~X;j5$NeToQWbeY0iojOrbQC+`XzjyZ5S1oJ4Q>RW{zH~{eHbR7Z=g!v`g0`PH zaYD^!k?wA<`&%VEUird^<t))`OSwCJ*NnYt5i)Huj$0?2c^EvNNwj+$T6>e1|iol zesd!*rC;pJL|0+$q(ziLuCdL>hda7ToRjy67^gHfX>H?`yJr6B$@df}D3DOofhfAq z)k_K=J*tf2#Lv&)mWNXe3-@r9IV0 z;@&;)W58UT%7d@>n{QTSP8RpOEle2Y8W&#Pxc#739+nh5;n-bd-&O3GfD*-H(ino_ zINnv5O|H)OV|kEe=i$yW-Dw?NMfNe>_PciObes5k%8$KFsrmf5>B|ejLa&({f%or^ z)d=Ug*^|pW9eJdj&IudjXjxjOJ>!v06RTKKx*9EU!h>gdd0EC|;#Gu*Ng7;4rt{Dz zEZ+sA!8lp1tK6olo-%P*drt*;se}M_X_LL;>ii4QvWe5m%E~81M6SMh^9Hi=La1l1 z&%%Uu2(SF+-iU;RJe>b>YLk6+2%n*z-b*+#Bp!p>s#+g?M)$?Bt1si?a@*SU3T;}` znmi64K5W}nU=ymY4dvQi;m6v2-~f#X^>2AuP3=TMFT9KU?C=+*;`JLh3M(jJpV2!w(`JbVWN}2{|5-PUogwDay4z;#_bu9NwzI1k31&6 z4lKA_^71M?`Xx7FfN$-4Hh^xiV=0|&C7KmVzi+zW@B?4tW#zkYr5_U)p(mmWU+QB4PrC&KrK zL+IMG4ei>q^m)kxR7b8pA+JT=J$ur`Dpy)2&l(vSK@-e^5({NPmcERNIze4@l!As; zl<>H=E3QMLqf=*M^uAN z?>b8zR2KCtuUDS#6O(;! zBiDGCy66cvAGpo-a_>2%gkfo@=Fp)WTxG>LIS)5hwEv9l?&X*#WsSXt0)yN2%%R|Q zb#%h;jPca__kU>5)K&fc_ut{xGaV{dJs?Z1X9la3`-~DGxafMJDR9F}my}4kQ(Kg? z4RT$~HXBv=mhP9ZPUI|waJ1aq3Y3(T+7i#NTb&6BXuG{;UCoHsX>oBzV*p!MtbAJO zQFrdOH%ibY_e(h?La6leu=2fbtyfWZgEnK)8%PE5G#ZUQKOnD>UcuSFgsHKc~#IxB?WHzO7@> zdrjnh7TTJVRSVsyIt&;gP3#C!vn-fmHf;KacKC!==3s@($YmHEsaoF}xqKo;%?eybYR-x6!U&O`pA-A$ ztF5hVTBUq9uge9d0J>q;%v5_b7b%a?9S^OF?{-2wWlerQU@J4ikNr# zm-jAi$$NwI+Qy6dW|SISR>l`kWE~d9B;E`cqOT`+HdcPZI&EXGyjzF4Yyd|rUdT`ZIbzCIW7hKDa%kvVjPA$VKWP zz;>_91lqeh>)c5iM?4ZypAvsZgU4n&j30y-j?|yO(QM~P*X@q{pZhGFx~KgOve@g@Cv~+ z+#YlR5Ryj{3+umZ0Y^J}>{x^?58OxShk>TC=Hx=pDJ;UrFnTv{-rVwF+kwlbjsTS7 z1K8eXcxviqE-pjB+l-~55FhuP@T;lJ+~*iyajS-dy*^VU7|)))3$(n-@!aCRmawDh zFT=uK1Ez_c^hXvDu)YO3eX{BC4j9Ow4JAA;6o6jMP1CMDwtcwdp1QZUF_RKSuJG}L`cSy9*dX| zAiylBV+26ZcK{Z*nf~^>alYkK%_-AHLnotQ#{gCgug}D(Gmd?xkVNF)u75yuTPOz7VvB&2Lqykz797|z!UKhcCxFcTj z@@S0X<*;L#@j0xiO5D=}k_O2tPv^;%Z2d;LxhK`thG#$WWc)DRkt>|uYBa%tAQ}&! z0(28O&+@7P1dV8bl+?BJ=g&h4Fo7)}MZ{O6J^HL;-$^whBI~@ZdLMdl`)cz25=eS&z~Qna^B;d)Y86r1avr8aT{g;zsK@q3-|%{3ey|g zslCRt(X4ZaXJRnAIe`;mVw%ABAw>=S{ryAjK1fSTr*;Jx8%GP2u72WQWpiaW^b@22 zE)&PIvH??{<&nqh!4>LZvGI^~+3I2>y}f2`p~7^yYB+n~AhyeWY3IV->Y)4gGqjUc zlv1+AI$)MRd9gX6NYCXj#QO-c7|+_a#=$#D@L#!P82?2co%YJ`;i_p@* zx9q$MV^LPfCAmk=tL zw(_%|k6Z?hCby7#J2@M(`)NsccvZ<~E?YJ7$vK!gV^Mts# zE(9lm)_Que&nJ&iI=a6-57$3M$+!ezdJl{&70SSN_;aXj^XovR3m4jfQ8UJxFYG#Y zrAaWscaY4ss(Y2>+2^f_lq3ElM-V&O&LcCHnI7LVJ5r0dFr#AgU2M7rkNZ?#@1!3P zWLKYUl_%k53~_$?945Ka?aR@~;}Q~jz}i}uW`-EQZ{+(t;Pmo~tKRPFkB@e(GOY}O znhRwYVlZsQfbJSukpBMdDgIXi;=lY9`FHU?bm{syS;?l_;~kI1Dl*`GtJ14~7<_d( zU&9Xd3f zGGCjue~_LGjmLewO$}Z8S%;pCH|Ev0AWGPN{VnP3+qVVYbC!h;y~Yqf9R~*jYVt2% z?zXsjGei0Dp8cn8+=q%A?&^1Kluw7|Piv5!dO6R+$(rA|@$$usWYFh?pxGOmxreKS z@a85SS~P6_6vBtJ4JwgFaP2+oI(h}vD7&5#=jbzb5#RfqanY?P0qQa(!LT*$>Xu1C zK|$3=j~*EVH?{4^$*dJEy8>cCmUi+3a^nd7m1u!Q?VkDsMchU%UOk|hkba8W_MN_n zny5^iG0`ovVrg(ooRqT?Xd5lh4_|02cElxgcqf7Qk`3pmX=vzZh?5Nm`VRulIFy$D zjT^6v9D1`rg`$2s;0RRwo@vNjLHuCDWL=cFe0+LX!@V+wB#4zr)qy&B3DO4qTid1S zfxx0h(5T>guT9ul!Q^5B;XSGb!@;(@D3@L`wEc`tOUh?gvn9OfWU1FGgWOARj43P` zqW(0Dw6u`_j}QD-fsaj!64AeD(ns5tX|gCTwEfLEYDHwK(9c5{W>`r z$!PXHC2!gqX&MFw5r9C_b{tVTe)#Zt8yg$ucy?ZaW4}Vxr%$$^U>FxW#PRx0pGWf& z@Idq_^9OJ&BsEoblv>vB@Ad5WBXZcRLi6hFsL?@pZFzOdeE!`!uCcPIidG05NF#zU zs;-2|5vsdgX*6#qL1}5DBPvgtK2+oydBm5&JPt!m zab@}*sHCY5y~I+7sg~5opiEBT2S!1i?R;yo|Lm<-qNT$-l~q*6BTO8$K`fuArYA%! z9Yn$ibU2XDuY!`N0xhQ%a-^0~;^N{`;JfUCU?2=L9S~2>xC~!{oU6Q&AP6HE2IqKl zau8@zyLatM2B;!@_N)Q?q4C?BkI?m_r-3?V+h0Lq&!;QGB>OVuz5xA@glFi05{K{x zVAV_z$j3YL(;>#(e0+Huw(Ykj6U+#d*@F04DXuD;USc7kl8slscrgQ1Yy_4I+^8-5 z)nk)(fO8>qHL4A~ETe+!pxP*M&rp)&W*U0cQG_0B z=gETpa>lyp+@?*Nn6)_eAhGgW9QIDKYKV}eq@jIxk%*fQXtwedUScbDHWx46hcQW| z?07lxIrInuU63A=L=k{45EP+S3Y4q1scCGy*We~JSb1bU^wKrrb^}5Og-r-1xTfN2 zK}tUdKj|i87Bc4<2Qxx+zJJG#9S)ANuA@%`ybI%7gs5`6DJ$j?DQE4w#)iMVsHv;d zgU1Va`%g~vSK_8BSOkA2RS>+2E_c?{r>Ez_}Xop8}A2=|ReWY#*W%lEM6S{Jgx|T3FL3TU=RdhAxEE4M~ zSajJ+veBM$qmW^C58gFCSeC1*bh>bUu2B*7I)dk9e5{3*S44)qrvBK3PZ}CoT51HY##*fXW~>6WKx=xOh#|8runG zvdGOstrxU+g_Y?GlaRGd$cbqKVK_WITz>+;aqG{CsPin+dy#+-vTCsD_Sw*FrX<3JMuhw98b{Z2}rWW21f;wcC-pZ zd=f2R87y>WrtbJ`PMj_kiN^(uP$;x;Lu@mk#WQYWTB&Ji247uqON<}qPqvLGc2%z` z0kmyC;8?z6%tCJqG~5<&zzUrP-YXSz0H=1q?*NNrVsh(X9G#^C1MR3}GsHxU3o<_E z{q#Vjo$X4mW1W;um5u~%j1c5&uqciT31uBL2wWS)#bLS;EI|p=MRATc40vOQFXK|h_F0nXG3|4 zkB%GHfOH9uh)4sZLj}RxrR=GstBL%H`f?4&#=J6exFm%nM~T8BYQh9F@2DDrX2AF) z>^e^7b$qK|27?K)I5V0JaE}X7Qnwmfg8F@FX-s9)WE9#OMZVgCi590H` zwr<1LCWyj!=GSf>BA>RA*X!KO%uE$YPbgK0+cVQGpGO@(v0NS%w2zN(YO^Uc+LV6E zb%&l3ZJ-sEnzWhGYwFQ6W0OxhTIz0!)R#B65GRYeB`j)oBYO~m2OLXC!)DZ->Eho@ zBCM5eoL3sE4k2^cQykk554PbKI;~b^#OUQP&yB&F0J9(+A#ySzWogDV@v3oIZ${qQYidh7E_S>oNz3N@Ug7|hS@XcwUMpsM3V z6%`>-Q4JV>gzk#v(E~ty5e>4C@oYu6V1;fWJ8w>9wHfp>1ZL+bjf+0GzG+Krx)`On zgsg87XJvd4H~K1G48}=<@9ZNe;51%&d zbsNV6_hOrnMF9-xDUWOi?Tr30eR^D(Vm?ppjfn^WGe1T<9z6MQaPfe4B2zacU?mwE zVIeT7(=la6El*T&-;?C~@y^`%_@n&7S99==6KZY-?45Q0zs`rRXlXb_a*~JfPn>U2 z_rp6lTE36?7%5#)5t|Q4%NoQYz?k9j{!E+7zO5T{!XKl9i22^K0rT@J09fSg0=`ZG z7(LF%Sqf^T&8QxNZ>Pw8L6i*q&$e#I%3OdMK0SSrrMan5WNPiQNIgyH`P>!t{0*KV zr002gTmcjY^K?*0q$@anr+5_okKv$} zqf_9}D+4}gCd`_VxAB8|!%sSbPv83b%POc_U}@?mb+5*C8%KM`jrjQs--x#{%Kg1{ zS?pRPm*UE|);XW(O(qep)+Bi=F!1mLfqUDMRk_f9g6n8qGt6o~8A8qLnrc#x<*_}} z9vg;{Ob5i=dUd-oKXsuMSms%vt*u5WT`-D!~6Dmsa8-@FNF}9UD9EuHW(!O1g|r zR3~G7a=~KG-i!0q2BSDE1=*8hO-X^G*Yyqb>2IINTAUHro^|NR5O5!BIuFV!ntW_l zC8w;XLpLlqy4g4sK_>va)SgmTLiY+pqzfYA{g;Tu%qc?10HuvRmF)XY`~kM(S3c2g zj@>e9MCIeZG_VmhZiF(x%M(~-Zz7^DpdN9u8U9TMLSTR(0Ty5rDCe#}5W;vN=HFyr z+>2Q9OP1?$x4|xuTod`_=IX@nVDFN%R?c{0&T0P>w`kEerQFgQAB`KYm1~`i_cM;_ zSljsOsR{lgY5(;Hmdiq~Hp$v`mzipJ$cZAM;QY&A3H7dy{ zdifQlY?>W5ie}jM^_>w1KO25X{iW$KTe9q7@r`kUq$<`i@rbBHW&pN9CDz z{ zhzqy3lB*;4ePGx5G8n!QRVy8TpFe$Eenqb zqK-6g(Y>}J_C?D?{{iG`g4<08|Oxa4tA3)wTiEG0T(2F6ZdHH-Q z-o~n#ME$gQIgQ^cnR)s`eolOMWNBo@Et5XG8GTS1&)9cK1O^6{uG*DLQlJ4PRQdS{ zx%6e_iC z$*1`A>C+O9edYX-1LaX`X!X*w9u+PYzgt9I&UkH^jF-KTFY%Y>TiuMH7}rEYPR1Bz z##bnCpK)xDoTE-{?Oa>j>k-osFP{y#3E@P5b-HM2#D1uL>ov!Q(Bipp;VqUKYkwI5 zOv?XU;F6m@ml&ya;vf3bdh6pey4rA4In{;lvq7@8lAjbOy~ z2E($->7svK5+FN0eEUk!_zB|;LdmF7>T>ndyJs& z^nhIt4h^-#Vg*`xm>g0U*PQo7WdRl6`@l@7vhz*Ftb2u>O@j>t$sO1SsvB@*$lD}) z5>wS9@uW{RE`-bXJR!(Puu9@Qd-%}Fr#njA%9JxXCD%OXy`S3B2&^8BadoNpS$fXtJ&6iQVX|qTDBtw-N#s9_se!)a+s;q<0XJw22k0iQ(YwK zqS^Q%6YN9TZyRxxEaK3loVI5EInoFXLK#nvS$@6OLDyi;Og-!$(WS37KF=Jz2j6b} z>DRu7T@1@T8IrznJhb{byg06{_pHUK{z3si=DfD8ZI%Li$sD$iP8>d*q}3zOV{(Wx z!F;?g3v&hKpJ>I>ji*1K;%`zv!3`;o2|k3@Dak!+UP)YkfB&4=;l#gBD*i3k7AI6wc1hS-R=Z9Lgront?UMq?b+22Pv)`Zc@*2aVQRJm@yKP&gxl~;+`1fo!r`VU#THJpyDt)|{1;m8JL1JQopFg%5?I@yjPkt;H{gkrac==(9`<}PK(lXmX8~kIzj3TsRsq{(jp<=6 zlKx{)dWhWYLs)`kOyoE2DV+i$9cnQ92>Ki=d8@3 zy}W{4FtlMi7A_cm;60Z=Rf?mIB=FNIfOBF`fqlev0e0;F%4i*iVgAlM_UEZOIE z0X2UR4bavr+P?*#+9lL+?QP}JA!O2^4LH`~l$b{hP=_y6w>|i3vv&hd)}wV%(GoUc z4n*oP5;$WHi=m*ngEBYk0Z&VPTb^cONP{4n_p{~xYiUja=^QKMBk9G+L`&9s~Jr3g45!GjH06ib~Oi>TW z|9WS+L^e(X5NkH{L9|X`U|h1~p`6r07PO(ET=+WadL>4TZ z6k0d)qlF506Idkab)cOnhl{MKuh)m-2<|-w`2_BGw7AtX*bXomWMi`Ha1o*Y0YPSv z?}+|`yZ!KC6EwI&u*OkSR;J@f_(G8FQ;_Jey4deYI^rpH5FsyEh23J0XkoG4HR$w6 z5rk^h1Lr0V7R1dqsP2(+Brzg@3`zj&Enf5l>Iw5EQUGkSy~`VZar*X7M}7*@bRIkx zG<`pFnQs{$9v%ZFKp)5i_ijBA?BKZ_?StW!fWp436UaYKPw+QJJIau)gp$F{exP!o z{RkX;Hu8qzPz8K++d(OCxm2NZb9zRYvnESj5giir%%EC zd<7n1Cgd;`bklj((w!QD@kg^ThA2DbGV2L~lSk5s-Kcx`NE&LLI5!%W5`Pp5~u9K!ETHu6P;C=5*Lt@*(8b6%0 z1NI5Bz{fg%>XbIz3t5q~tchBC*nFLMqcx-(9whUEn_qU4DUIs1eh#}By*>zBw0g<@ zwzn3w5?~mKV9UQ2)`JT&OzcyD76B=5_vy(#6s$gP3J+)d!Hl&BcL{3D)6&%`oX3r` z-{`t0_4UyLO>Arqu)1Q!L=h2Oz`1Kqr9W6?XR+@|=xMNv3cJc(xe6fd#-gm^Pb|EU z#Aro4^jW_IUY^@n(_y&LUgv6_JJ{{FZQre^9u~d_(|SFA6DDil{~p2UGy5rY+KR5N6nuFB2T>?Cg%3nc3Ug=AI+Yu8&k-Jyl=pSs%>dZ;po0;1aQb7PArf zvHg!R0)MWwk}niz_>%7>B_%}(#v%nMUr$fZ7U5KK=u1WO&YE6pjd@ljg^G=Rqx?QC7?K^b3v_aqpD5(}rB@w6Dh;^vn8ofW?Y1(EoC zKJxPem*|k8ox;^Z%os=HoM%txb4HsZaPU`+cD8{-&-QEG`gFhHbGoOGh|fU>hsr~c z5<*t>80Ptvmv@oVDJDKc#AjEWotnikcgnL(pA^lEszA`JM(}?5*@Sd` zk6ktiN+gZohW#U>qrS{c)1{6djBa|a47fPa7lvzmCp+Suu~;qhv70XSPI7EkrUL?h zG>PtWI>#Da(J+-XRORbX=G|;2UT4wxZx##;42=B;iiCX>!XCLTI}+2=)7_hHewE1? z?ILO9)zz7`@oRl6=}Qa*BBYh)TISVw#I?d}SZ_rJg7B5fFa^mo7^LKJ=FFL52gmuQ z`HEzchI!Y^ofxkYRzAcQl( zSg`|yeA*DNoSJKMIF*8gJC&CW$U)EzAu{62+kCBD+z3CxSfQ3MKUj|F|7nx)F4yK1 zS{7=3rKAt`0iECdOnPx-f=xi0e}_l9rbYkxa^xh5ex3qB35uxH`!>hGy8DSwesZnE z!qsrGp;tY(Pf~1|E}z%T$_Xj)*G zK0q`hULvFnlT`&B3j9!Vv2SQdedP-?IcIah&)Ln5RVx=T-g2wThn`eaQgVowu{mzi zYqgt&BjVXN`_F`q2G#!;+zxm=Uf;XvC;%q0D8ty-eqp?|c_2?VF798@v58C1E+4;e z@gkjMKHk7$^#ZD79J%_dt*t(`1-U)`#GdW(>W42MOW9|7$dI0(KaBFqT(}Bl!}^ z76-N{X{t{%D3mlkH~xFvj|l(=MP+3vTs$`hjnz1M{aiOF>tKbqhLhD&XM)yDn`klF ziLjg+I$vII-}#4k4Mwuo>-@_eY1PnV^PrLE!Va~zZ?ImaII%szmCZHYqV)zp}b5JyL+0S739gM-(vUr+RIjtKW09Uk7x!o~!7MUI76-CFq~ zSBoe90|3gWIsYJ-YJZ)>U*4EA@tbZM9xfRy^7-hZ)HdSG2)bi~_iiWx27R7yg zdeH)}!0{G~9&6D;hGn=v-LxBddVP7#q6fK%0XS9ZhRy2{22 z#+Ej@M2xo5LMHyR9_}8{YX(}t?&m~RwypbH@djK%KU{RuZM6{gl(03 z3QWgdbCsK(mPUWAo1;k+(v5sLBem!VZs2hB&)1llD!7d)wY;V#%P&2THKeK)!)>h( zVDeZ*96~qi#tAFo$2$N*YH4X{pQbxqNen+K)mvL|cq1;USu{bG`HZ@~yD|$A!Vfl@o zAUXx_T~l3Moq>*tU=t;qON-51Vnn%w6GGI;Ssy6$`O^Imv9v>GHbfqfc-<@a9P&vx zhr?N#Mo5rnt=B$DQE?(yS&DZZ?Wr_3?AN-8_Ba{i@VS9tOlfJURH7o_0iWNbg-*t+ z*?V{lV<$ppdLCEBt}TP^&Q@J}|If+3_wRo{7UstSO@@hRM5UO)O`2dl#^_p4)?S)q zlbhGrXwie>wgguqW=)&tN=l!)>v!4gMDKyYnj^W=!kHU3e)=2iWy5hs;h03{vJCXj zucWjzucXAkvN@U$7P6?iG1+n5-#_WhBQyHqShH_`!5J8=4}5|+RSd0B9m|WZu3cm} zN}H%HwWq28R)xA*;E?qMmuWtcLMD^JFNBiHco@C#sGKxJ!P zuW1Zc^wF>!s0(I^O56B(ZhpQwn6W`rh-TW8_Njmu&Nq?10W_olC^I>CpoKIkyK^!D zm!Cg>ezQ3|5GNKgh?uVWHeNXrP*Mty?eQJfd2huLyW#lNK4(`~Rf*J18VkUqEj!ee z%_m~RSYcUWNhvK>8<%@-h#M~T$Hdv_Ct|G+A3iJzrzwnnCk&kG_4`SR-+g$usi@1m z4W{Q>mPo}BEL4rKn!XG&2@Gjf>rn>uB!1^76Ce#(*~TYb%<%ktueB&pA21ehbedB? zL0(>74z9#}YnMw{ZIeoF=u~Hva55prmWl?(>$Cjn_0lUHN+;+{q$4-1A;ZM)?4D$L z!zO<;riDKt5t|d%`*XSu7G~|5$qGA5Vdk&^9_Rp|!x>|Ih} z2p(%1Y7Fyh5wFinWtRTW$y9(E``mMhAR?g%oAWrvN-qX6S|38eiI=G$6Ggw`jtva# zc|PR|zCXPG=n6FAW$@ z)@%Rn&M?-IX0`Q9&aDhl2$8Vz=odY`WRIF__^iSm?N?4q8`A3?#xz~3r)?Ts^7Qn5 z^WdOy)VGi77(%Q*uFYz(aV9&%8Xs+IyD{fROA4LtqEp*e^VLnRo!(f-wU0IvSK|C@GnsbxU zo7x<^!DKR*HdcBWU?AYtA;Z?y_ejq3{_n=<<|fFcVSuMfv3K=tI^9mqdk-pd(P}oJ zZf5rmzwQhez+!7O0a``GC(f?*X+yDr{{H^IqGj9nqdy# z)L~LAiYCUI!UIAmE=S%{jVK3Q3OY+Jmh#un32jVo&c4H<2FIV**5b<;3Qtfd0EoE1 zhw6en*-_IZDIT#TH)s_jb>??7Jyt8->ejJQz$k@dT!PzNDCAi2J-t8<+4-la=^*te z=|lk8fS|upS$5~FTwUkDAEede0e5}gR;V4;@xLjiTp9K_UrY9*<9QbsmpK>|M*(rN z9AqU;=Y`b2kWNZ^wzhu73DU$9hp&=LePUw_vduLRyWIW{UnjL%iA+;RPCxm_Hbv<> OPuiWetvGS{_J05vP@uK| delta 3487 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 diff --git a/vrt/__image_snapshots__/modal-uncloseable__desktop-snap.png b/vrt/__image_snapshots__/modal-uncloseable__desktop-snap.png index a0a4c018c5449bb9d7c1c8fa7de2abb6d69512a4..0d68693a48f94e4a1159a8cd5cdb38cc63d25bb4 100644 GIT binary patch delta 3200 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 delta 3386 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 P^)Ofso%2NXt3Un^w|IO% literal 14461 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 diff --git a/vrt/__image_snapshots__/modal__desktop-snap.png b/vrt/__image_snapshots__/modal__desktop-snap.png index df46455dfca29b54cac1b3ec2e2a1f4f972cd381..828d5c7437eeae534ca0e4ea2830bb6b235cdd68 100644 GIT binary patch delta 3242 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%0DEftlo`F>v8#BxAj*W>~=ymQlXHNCjR982Bd2=M! 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 diff --git a/yarn.lock b/yarn.lock index eea5838f16..40a460ea15 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1446,6 +1446,13 @@ dependencies: regenerator-runtime "^0.13.2" +"@babel/runtime@^7.8.3": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308" + integrity sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ== + dependencies: + regenerator-runtime "^0.13.2" + "@babel/template@^7.0.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4", "@babel/template@^7.7.0": version "7.7.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.0.tgz#4fadc1b8e734d97f56de39c77de76f2562e597d0" @@ -1930,6 +1937,16 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" +"@jest/types@^25.1.0": + version "25.1.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.1.0.tgz#b26831916f0d7c381e11dbb5e103a72aed1b4395" + integrity sha512-VpOtt7tCrgvamWZh1reVsGADujKigBUFTi19mlRjqEGsE8qH4r3s+skY33dNdXOwyZIvuftZ5tqdF1IgsMejMA== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + "@marionebl/sander@^0.6.0": version "0.6.1" resolved "https://registry.yarnpkg.com/@marionebl/sander/-/sander-0.6.1.tgz#1958965874f24bc51be48875feb50d642fc41f7b" @@ -2801,6 +2818,22 @@ pretty-format "^24.8.0" wait-for-expect "^1.3.0" +"@testing-library/jest-dom@^5.1.1": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.1.1.tgz#e88a5c08f9b9f36b384f948a0532eae2abbc8204" + integrity sha512-7xnmBFcUmmUVAUhFiZ/u3CxFh1e46THAwra4SiiKNCW4By26RedCRwEk0rtleFPZG0wlTSNOKDvJjWYy93dp0w== + dependencies: + "@babel/runtime" "^7.8.3" + "@types/testing-library__jest-dom" "^5.0.0" + chalk "^3.0.0" + css "^2.2.4" + css.escape "^1.5.1" + jest-diff "^25.1.0" + jest-matcher-utils "^25.1.0" + lodash "^4.17.15" + pretty-format "^25.1.0" + redent "^3.0.0" + "@testing-library/react@^9.1.4": version "9.1.4" resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-9.1.4.tgz#4cc1a228a944c0f468ee501e7da1651d8bbd9902" @@ -2810,6 +2843,11 @@ "@testing-library/dom" "^6.1.0" "@types/testing-library__react" "^9.1.0" +"@testing-library/user-event@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-8.1.0.tgz#6362a9a01c5a4f612e8ef6eafd69e71e355c9f09" + integrity sha512-42VHeLj4877FYIlehDQEP24rmixcfkRpPSil8icNKFJfU4pNArI0EPaKCoAaDr/p6NThW+QHFRiwws80PUNFtg== + "@types/babel-types@*": version "7.0.7" resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.7.tgz#667eb1640e8039436028055737d2b9986ee336e3" @@ -2879,6 +2917,11 @@ resolved "https://registry.yarnpkg.com/@types/card-validator/-/card-validator-4.1.0.tgz#039fb05b2e254d62cebb9d1bd0efb2f817ea1afa" integrity sha512-d24YOrxtrFXPW/IP7/jaGUTi/sTpPbosnAETitzwh2QNpPCMOdi23O/dPEi2ydbYIT41HN/QY9zyIm6m3VEV4A== +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + "@types/cookie@^0.3.3": version "0.3.3" resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.3.3.tgz#85bc74ba782fb7aa3a514d11767832b0e3bc6803" @@ -2956,6 +2999,14 @@ resolved "https://registry.yarnpkg.com/@types/jest-diff/-/jest-diff-20.0.1.tgz#35cc15b9c4f30a18ef21852e255fdb02f6d59b89" integrity sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA== +"@types/jest@*": + version "25.1.2" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.1.2.tgz#1c4c8770c27906c7d8def5d2033df9dbd39f60da" + integrity sha512-EsPIgEsonlXmYV7GzUqcvORsSS9Gqxw/OvkGwHfAdpjduNRxMlhsav0O5Kb0zijc/eXSO/uW6SJt9nwull8AUQ== + dependencies: + jest-diff "^25.1.0" + pretty-format "^25.1.0" + "@types/jest@^24.0.18": version "24.0.18" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.18.tgz#9c7858d450c59e2164a8a9df0905fc5091944498" @@ -3130,6 +3181,13 @@ dependencies: pretty-format "^24.3.0" +"@types/testing-library__jest-dom@^5.0.0": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.0.1.tgz#cc7f384535a3d9597e27f58d38a795f5c137cc53" + integrity sha512-GiPXQBVF9O4DG9cssD2d266vozBJvC5Tnv6aeH5ujgYJgys1DYm9AFCz7YC+STR5ksGxq3zCt+yP8T1wbk2DFg== + dependencies: + "@types/jest" "*" + "@types/testing-library__react@^9.1.0": version "9.1.1" resolved "https://registry.yarnpkg.com/@types/testing-library__react/-/testing-library__react-9.1.1.tgz#4bcb8bba54b07fbb6c084f2f00e7f9410e587c10" @@ -3160,6 +3218,13 @@ dependencies: "@types/yargs-parser" "*" +"@types/yargs@^15.0.0": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.3.tgz#41453a0bc7ab393e995d1f5451455638edbd2baf" + integrity sha512-XCMQRK6kfpNBixHLyHUsGmXrpEmFFxzMrcnSXFMziHd8CoNJo8l16FkHyQq4x+xbM7E2XL83/O78OD8u+iZTdQ== + dependencies: + "@types/yargs-parser" "*" + "@typescript-eslint/typescript-estree@1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.11.0.tgz#b7b5782aab22e4b3b6d84633652c9f41e62d37d5" @@ -3773,6 +3838,11 @@ ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + ansi-styles@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de" @@ -3797,6 +3867,14 @@ ansi-styles@^4.0.0: dependencies: color-convert "^2.0.1" +ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + ansi-to-html@^0.6.11: version "0.6.13" resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.6.13.tgz#c72eae8b63e5ca0643aab11bfc6e6f2217425833" @@ -6227,6 +6305,14 @@ chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + change-case@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.0.2.tgz#fd48746cce02f03f0a672577d1d3a8dc2eceb037" @@ -7450,7 +7536,12 @@ css-what@^2.1.2: resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== -css@2.2.4: +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= + +css@2.2.4, css@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== @@ -8065,6 +8156,11 @@ diff-sequences@^24.9.0: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== +diff-sequences@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.1.0.tgz#fd29a46f1c913fd66c22645dc75bffbe43051f32" + integrity sha512-nFIfVk5B/NStCsJ+zaPO4vYuLjlzQ6uFvPxzYyHlejNZ/UGa7G/n7peOXVrVNvRuyfstt+mZQYGpjxg9Z6N8Kw== + diff@3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -10560,6 +10656,11 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-symbol-support-x@^1.4.1: version "1.4.2" resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" @@ -11113,6 +11214,11 @@ indent-string@^3.0.0, indent-string@^3.2.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + indexes-of@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" @@ -12035,6 +12141,16 @@ jest-diff@^24.9.0: jest-get-type "^24.9.0" pretty-format "^24.9.0" +jest-diff@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.1.0.tgz#58b827e63edea1bc80c1de952b80cec9ac50e1ad" + integrity sha512-nepXgajT+h017APJTreSieh4zCqnSHEJ1iT8HDlewu630lSJ4Kjjr9KNzm+kzGwwcpsDE6Snx1GJGzzsefaEHw== + dependencies: + chalk "^3.0.0" + diff-sequences "^25.1.0" + jest-get-type "^25.1.0" + pretty-format "^25.1.0" + jest-docblock@23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7" @@ -12132,6 +12248,11 @@ jest-get-type@^24.9.0: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== +jest-get-type@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.1.0.tgz#1cfe5fc34f148dc3a8a3b7275f6b9ce9e2e8a876" + integrity sha512-yWkBnT+5tMr8ANB6V+OjmrIJufHtCAqI5ic2H40v+tRqxDmE0PGnIiTyvRWFOMtmVHYpwRqyazDbTnhpjsGvLw== + jest-haste-map@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.0.0.tgz#e9ef51b2c9257384b4d6beb83bd48c65b37b5e6e" @@ -12224,6 +12345,16 @@ jest-matcher-utils@^24.9.0: jest-get-type "^24.9.0" pretty-format "^24.9.0" +jest-matcher-utils@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.1.0.tgz#fa5996c45c7193a3c24e73066fc14acdee020220" + integrity sha512-KGOAFcSFbclXIFE7bS4C53iYobKI20ZWleAdAFun4W1Wz1Kkej8Ng6RRbhL8leaEvIOjGXhGf/a1JjO8bkxIWQ== + dependencies: + chalk "^3.0.0" + jest-diff "^25.1.0" + jest-get-type "^25.1.0" + pretty-format "^25.1.0" + jest-message-util@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.4.3.tgz#cf3d38aafe4befddbfc455e57d65d5239e399eb7" @@ -13823,6 +13954,11 @@ min-document@^2.19.0: dependencies: dom-walk "^0.1.0" +min-indent@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.0.tgz#cfc45c37e9ec0d8f0a0ec3dd4ef7f7c3abe39256" + integrity sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY= + mini-css-extract-plugin@0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.3.tgz#98d60fcc5d228c3e36a9bd15a1d6816d6580beb8" @@ -15831,6 +15967,16 @@ pretty-format@^24.3.0, pretty-format@^24.8.0, pretty-format@^24.9.0: ansi-styles "^3.2.0" react-is "^16.8.4" +pretty-format@^25.1.0: + version "25.1.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.1.0.tgz#ed869bdaec1356fc5ae45de045e2c8ec7b07b0c8" + integrity sha512-46zLRSGLd02Rp+Lhad9zzuNZ+swunitn8zIpfD2B4OPCRLXbM87RJT2aBLBWYOznNUML/2l/ReMyWNC80PJBUQ== + dependencies: + "@jest/types" "^25.1.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + pretty-hrtime@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" @@ -16482,6 +16628,11 @@ react-is@^16.10.2, react-is@^16.9.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.11.0.tgz#b85dfecd48ad1ce469ff558a882ca8e8313928fa" integrity sha512-gbBVYR2p8mnriqAwWx9LbuUrShnAuSCNnuPGyc7GJrMVQtPDAh8iLpv7FRuMPFb56KkaVZIYSz1PrjI9q0QPCw== +react-is@^16.12.0: + version "16.12.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" + integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q== + react-is@^16.3.2: version "16.8.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.1.tgz#a80141e246eb894824fb4f2901c0c50ef31d4cdb" @@ -16927,6 +17078,14 @@ redent@^2.0.0: indent-string "^3.0.0" strip-indent "^2.0.0" +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + redeyed@~2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b" @@ -18508,6 +18667,13 @@ strip-indent@^2.0.0: resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -18633,6 +18799,13 @@ supports-color@^6.0.0, supports-color@^6.1.0: dependencies: has-flag "^3.0.0" +supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + supports-hyperlinks@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7"