diff --git a/output/components.eslint.txt b/output/components.eslint.txt
index 33437cfe84a..e70c91c1474 100644
--- a/output/components.eslint.txt
+++ b/output/components.eslint.txt
@@ -55,10 +55,6 @@
/home/travis/build/Talend/ui/packages/components/src/DateTimePickers/DateTimeRange/Manager/Manager.component.js
26:5 warning React Hook useEffect has missing dependencies: 'state.endDateTime' and 'state.startDateTime'. Either include them or remove the dependency array react-hooks/exhaustive-deps
-/home/travis/build/Talend/ui/packages/components/src/DateTimePickers/InputDatePicker/InputDatePicker.component.js
- 67:6 error Static HTML elements with event handlers require a role jsx-a11y/no-static-element-interactions
- 108:2 error defaultProp "required" has no corresponding propTypes declaration react/default-props-match-prop-types
-
/home/travis/build/Talend/ui/packages/components/src/DateTimePickers/InputDateTimePicker/InputDateTimePicker.component.js
91:2 error defaultProp "required" has no corresponding propTypes declaration react/default-props-match-prop-types
@@ -307,5 +303,5 @@
673:44 error ["icon"] is better written in dot notation dot-notation
679:56 error ["resizable"] is better written in dot notation dot-notation
-✖ 148 problems (128 errors, 20 warnings)
+✖ 146 problems (126 errors, 20 warnings)
7 errors and 0 warnings potentially fixable with the `--fix` option.
diff --git a/packages/components/.storybook/addons.js b/packages/components/.storybook/addons.js
index 8a43488506e..330d5049efd 100644
--- a/packages/components/.storybook/addons.js
+++ b/packages/components/.storybook/addons.js
@@ -1,3 +1,2 @@
import '@storybook/addon-actions/register';
-import '@storybook/addon-a11y/register';
import 'storybook-addon-i18next/register';
diff --git a/packages/components/.storybook/config.js b/packages/components/.storybook/config.js
index 4197858ca4a..73b3b7a54de 100644
--- a/packages/components/.storybook/config.js
+++ b/packages/components/.storybook/config.js
@@ -3,7 +3,6 @@ import '@talend/bootstrap-theme/src/theme/theme.scss';
import React from 'react';
import { configure, addDecorator } from '@storybook/react';
-import { withA11y } from '@storybook/addon-a11y';
import { withI18next } from 'storybook-addon-i18next';
import { locales as tuiLocales } from '@talend/locales-tui/locales';
@@ -20,7 +19,6 @@ addDecorator(
languages,
}),
);
-addDecorator(withA11y);
addDecorator(storyFn => (
<>
diff --git a/packages/components/package.json b/packages/components/package.json
index a54476bbe7d..ebcfba729d0 100644
--- a/packages/components/package.json
+++ b/packages/components/package.json
@@ -34,6 +34,7 @@
"url": "https://github.com/Talend/ui.git"
},
"dependencies": {
+ "@popperjs/core": "^2.6.0",
"ally.js": "^1.4.1",
"classnames": "^2.2.5",
"d3": "^6.3.0",
@@ -54,7 +55,6 @@
"react-draggable": "^3.3.0",
"react-grid-layout": "0.16.6",
"react-immutable-proptypes": "^2.1.0",
- "react-popper": "^1.3.7",
"react-transition-group": "^2.3.1",
"react-use": "^13.27.0",
"react-virtualized": "9.21.0",
@@ -67,7 +67,6 @@
"uuid": "^3.4.0"
},
"devDependencies": {
- "@storybook/addon-a11y": "^5.3.1",
"@storybook/addon-actions": "^5.3.1",
"@storybook/addons": "^5.3.1",
"@storybook/react": "^5.3.1",
diff --git a/packages/components/src/DateTimePickers/InputDatePicker/InputDatePicker.component.js b/packages/components/src/DateTimePickers/InputDatePicker/InputDatePicker.component.js
index 9e12675648e..c52f976cb78 100644
--- a/packages/components/src/DateTimePickers/InputDatePicker/InputDatePicker.component.js
+++ b/packages/components/src/DateTimePickers/InputDatePicker/InputDatePicker.component.js
@@ -3,7 +3,6 @@ import PropTypes from 'prop-types';
import omit from 'lodash/omit';
import uuid from 'uuid';
import classnames from 'classnames';
-import { Popper } from 'react-popper';
import FocusManager from '../../FocusManager';
import { focusOnCalendar } from '../../Gesture/withCalendarGesture';
@@ -11,6 +10,7 @@ import { focusOnCalendar } from '../../Gesture/withCalendarGesture';
import DatePicker from '../Date';
import TimeZone from '../TimeZone';
import useInputPickerHandlers from '../hooks/useInputPickerHandlers';
+import { usePopper } from '../../usePopper';
import theme from './InputDatePicker.scss';
@@ -38,43 +38,29 @@ export default function InputDatePicker(props) {
const inputRef = useRef(null);
const containerRef = useRef(null);
-
+ const ref = useRef();
const handlers = useInputPickerHandlers({
handleBlur: props.onBlur,
handleChange: props.onChange,
handleKeyDown: () => focusOnCalendar(containerRef.current),
});
+ usePopper(inputRef, ref, {
+ modifiers: [
+ { name: 'hide', enabled: false },
+ { name: 'preventOverflow', enabled: false },
+ ],
+ placement: handlers.getPopperPlacement(inputRef.current),
+ strategy: 'fixed',
+ });
const inputProps = omit(props, PROPS_TO_OMIT_FOR_INPUT);
const datePicker = [
,
handlers.showPicker && (
-
- {({ ref, style }) => (
-
-
-
- )}
-
+ // eslint-disable-next-line jsx-a11y/no-static-element-interactions
+
+
+
),
!props.hideTimezone && props.timezone && ,
].filter(Boolean);
@@ -118,4 +104,5 @@ InputDatePicker.propTypes = {
timezone: PropTypes.string,
hideTimezone: PropTypes.bool,
useUTC: PropTypes.bool,
+ required: PropTypes.bool,
};
diff --git a/packages/components/src/DateTimePickers/InputDateRangePicker/InputDateRangePicker.component.js b/packages/components/src/DateTimePickers/InputDateRangePicker/InputDateRangePicker.component.js
index 9e065e3d520..4f2b6e723f5 100644
--- a/packages/components/src/DateTimePickers/InputDateRangePicker/InputDateRangePicker.component.js
+++ b/packages/components/src/DateTimePickers/InputDateRangePicker/InputDateRangePicker.component.js
@@ -2,7 +2,6 @@ import React, { useRef, useState } from 'react';
import PropTypes from 'prop-types';
import omit from 'lodash/omit';
import classnames from 'classnames';
-import { Popper } from 'react-popper';
import FocusManager from '../../FocusManager';
import { focusOnCalendar } from '../../Gesture/withCalendarGesture';
@@ -14,6 +13,7 @@ import useInputPickerHandlers from '../hooks/useInputPickerHandlers';
import getDefaultT from '../../translate';
+import { usePopper } from '../../usePopper';
import theme from './InputDateRangePicker.scss';
const PROPS_TO_OMIT_FOR_INPUT = ['id', 'dateFormat', 'onBlur', 'onChange', 't'];
@@ -25,6 +25,7 @@ export default function InputDateRangePicker(props) {
const endDateInputRef = useRef(null);
const containerRef = useRef(null);
const [inputRef, setInputRef] = useState(null);
+ const pickerRef = useRef();
const handlers = useInputPickerHandlers({
handleBlur: props.onBlur,
@@ -50,6 +51,14 @@ export default function InputDateRangePicker(props) {
}
handlers.onChange(event, payload, inputRef.current);
}
+ usePopper(inputRef, pickerRef, {
+ modifiers: [
+ { name: 'hide', enabled: false },
+ { name: 'preventOverflow', enabled: false },
+ ],
+ placement: inputRef ? handlers.getPopperPlacement(inputRef.current) : 'bottom-start',
+ strategy: 'fixed',
+ });
return (
{handlers.showPicker && inputRef && (
-
- {({ ref, style }) => (
-
-
-
- )}
-
+
+
+
)}
);
diff --git a/packages/components/src/DateTimePickers/InputTimePicker/InputTimePicker.component.js b/packages/components/src/DateTimePickers/InputTimePicker/InputTimePicker.component.js
index fa6d26b3eae..dc01c24e9f7 100644
--- a/packages/components/src/DateTimePickers/InputTimePicker/InputTimePicker.component.js
+++ b/packages/components/src/DateTimePickers/InputTimePicker/InputTimePicker.component.js
@@ -3,7 +3,6 @@ import PropTypes from 'prop-types';
import classnames from 'classnames';
import omit from 'lodash/omit';
import uuid from 'uuid';
-import { Popper } from 'react-popper';
import FocusManager from '../../FocusManager';
import Time from '../Time';
@@ -12,6 +11,7 @@ import TimeZone from '../TimeZone';
import theme from './InputTimePicker.scss';
import useInputPickerHandlers from '../hooks/useInputPickerHandlers';
import focusOnTime from '../gesture/timePickerGesture';
+import { usePopper } from '../../usePopper';
const PROPS_TO_OMIT_FOR_INPUT = [
'id',
@@ -28,42 +28,28 @@ export default function InputTimePicker(props) {
const inputRef = useRef(null);
const containerRef = useRef(null);
+ const ref = useRef(null);
const handlers = useInputPickerHandlers({
handleBlur: props.onBlur,
handleChange: props.onChange,
handleKeyDown: () => focusOnTime(containerRef.current),
});
-
+ usePopper(inputRef, ref, {
+ modifiers: [
+ { name: 'hide', enabled: false },
+ { name: 'preventOverflow', enabled: false },
+ ],
+ placement: inputRef ? handlers.getPopperPlacement(inputRef.current) : 'bottom-start',
+ strategy: 'fixed',
+ });
const inputProps = omit(props, PROPS_TO_OMIT_FOR_INPUT);
const timePicker = [
- ,
+ ,
handlers.showPicker && (
-
- {({ ref, style }) => (
-
-
-
- )}
-
+
+
+
),
props.timezone && ,
].filter(Boolean);
diff --git a/packages/components/src/DateTimePickers/LegacyDateTimePickers/InputDateTimePicker/InputDateTimePicker.component.js b/packages/components/src/DateTimePickers/LegacyDateTimePickers/InputDateTimePicker/InputDateTimePicker.component.js
index 20c57e4211f..e1c8f722cc3 100644
--- a/packages/components/src/DateTimePickers/LegacyDateTimePickers/InputDateTimePicker/InputDateTimePicker.component.js
+++ b/packages/components/src/DateTimePickers/LegacyDateTimePickers/InputDateTimePicker/InputDateTimePicker.component.js
@@ -4,12 +4,12 @@ import PropTypes from 'prop-types';
import omit from 'lodash/omit';
import keycode from 'keycode';
import uuid from 'uuid';
-import { Popper } from 'react-popper';
import FocusManager from '../../../FocusManager';
import { DateTimeContext } from '../DateTime/Context';
import DateTime from '../DateTime';
import { focusOnCalendar } from '../../../Gesture/withCalendarGesture';
+import { usePopper } from '../../../usePopper';
import theme from './InputDateTimePicker.scss';
@@ -30,6 +30,33 @@ function onMouseDown(event) {
event.stopPropagation();
}
+function Popper(props) {
+ const ref = React.useRef();
+ usePopper(props.inputRef, ref, {
+ modifiers: [
+ { name: 'hide', enabled: false },
+ { name: 'preventOverflow', enabled: false },
+ ],
+ placement: props.getPopperPlacement(),
+ strategy: 'fixed',
+ });
+ return (
+
+
+ {props.formMode && }
+
+ );
+}
+Popper.propTypes = {
+ formMode: PropTypes.bool.isRequired,
+ popoverId: PropTypes.string.isRequired,
+ getPopperPlacement: PropTypes.func.isRequired,
+ inputRef: PropTypes.oneOfType([
+ PropTypes.func,
+ PropTypes.shape({ current: PropTypes.instanceOf(HTMLInputElement) }),
+ ]),
+};
+
class InputDateTimePicker extends React.Component {
static propTypes = {
id: PropTypes.string.isRequired,
@@ -168,32 +195,12 @@ class InputDateTimePicker extends React.Component {
/>,
this.state.showPicker && (
- {({ ref, style }) => (
-
-
- {this.props.formMode && }
-
- )}
-
+ inputRef={this.inputRef}
+ popoverId={this.popoverId}
+ onMouseDown={this.onMouseDown}
+ formMode={this.formMode}
+ getPopperPlacement={this.getPopperPlacement}
+ />
),
].filter(Boolean);
diff --git a/packages/components/src/Typeahead/Typeahead.component.renderers.js b/packages/components/src/Typeahead/Typeahead.component.renderers.js
index bfd17f3d0eb..a0472e4579b 100644
--- a/packages/components/src/Typeahead/Typeahead.component.renderers.js
+++ b/packages/components/src/Typeahead/Typeahead.component.renderers.js
@@ -6,12 +6,12 @@ import ControlLabel from 'react-bootstrap/lib/ControlLabel';
import FormControl from 'react-bootstrap/lib/FormControl';
import DebounceInput from 'react-debounce-input';
import classNames from 'classnames';
-import { Popper } from 'react-popper';
import { getTheme } from '../theme';
import Icon from '../Icon';
import CircularProgress from '../CircularProgress';
import Emphasis from '../Emphasis';
+import { usePopper } from '../usePopper';
import theme from './Typeahead.scss';
const css = getTheme(theme);
@@ -94,28 +94,31 @@ renderInputComponent.propTypes = {
readOnly: PropTypes.bool,
};
+/**
+ * data:
+ state: $Shape,
+ instance: Instance,
+ options: $Shape,
+ name: string,
+ */
function computePopperPosition(data) {
+ const { state } = data;
const GAP = 45; // the offset between the end of items container and screen boundaries
- const inputDimensions = data.offsets.reference;
- const { top, height } = inputDimensions;
+ const inputDimensions = state.rects.reference;
+ const { x: top, height } = inputDimensions;
const offsetTop = top - GAP;
const offsetBottom = window.innerHeight - top - height - GAP;
- const placements = data.placement.split('-');
- let newPlacement = data.placement;
+ const placements = state.placement.split('-');
+ let newPlacement = state.placement;
+
if (placements[0] === 'top' && offsetBottom > offsetTop) {
newPlacement = `bottom-${placements[1]}`;
}
const maxHeight = newPlacement.includes('top') ? offsetTop : offsetBottom;
- return {
- ...data,
- placement: newPlacement,
- styles: {
- ...data.styles,
- width: inputDimensions.width,
- maxHeight,
- },
- };
+ state.placement = newPlacement;
+ state.elements.popper.style.width = `${inputDimensions.width}px`;
+ state.elements.popper.style.maxHeight = maxHeight;
}
export function renderItemsContainerFactory(
@@ -131,6 +134,21 @@ export function renderItemsContainerFactory(
const isShown = items;
const noResult = items && !items.length;
+ const modifiers = [
+ { name: 'preventOverflow', enabled: false },
+ { name: 'hide', enabled: false },
+ { name: 'shift', enabled: false, phase: 'main' },
+ { name: 'computePosition', enabled: true, phase: 'write', fn: computePopperPosition },
+ ];
+
+ const tooltipref = React.createRef();
+
+ // eslint-disable-next-line react-hooks/rules-of-hooks
+ usePopper(inputRef, tooltipref, {
+ modifiers,
+ strategy: 'fixed',
+ placement: 'bottom-start',
+ });
function ItemsContainerComponent({ containerProps, children }) {
if (!isShown) {
return undefined;
@@ -166,62 +184,26 @@ export function renderItemsContainerFactory(
}
return (
-
- {({ placement = '', ref, scheduleUpdate, style }) => {
- if (placement.includes('top')) {
- // @see https://github.com/FezVrasta/react-popper/issues/283#issuecomment-512879262
- scheduleUpdate();
- }
-
- return (
-
-
- {render(
- content,
- {
- isShown,
- loading,
- noResult,
- searching,
- },
- containerProps.ref,
- )}
-
-
- );
- }}
-
+
+ {render(
+ content,
+ {
+ isShown,
+ loading,
+ noResult,
+ searching,
+ },
+ containerProps.ref,
+ )}
+
+
);
}
@@ -239,7 +221,11 @@ export function renderSectionTitle(section) {
return (
{section.icon && }
- {section.title}
+
+ {section.title}
+
);
}
diff --git a/packages/components/src/Typeahead/__snapshots__/Typeahead.snapshot.test.js.snap b/packages/components/src/Typeahead/__snapshots__/Typeahead.snapshot.test.js.snap
index 1a363cf7048..8ad4c2fc262 100644
--- a/packages/components/src/Typeahead/__snapshots__/Typeahead.snapshot.test.js.snap
+++ b/packages/components/src/Typeahead/__snapshots__/Typeahead.snapshot.test.js.snap
@@ -39,11 +39,9 @@ exports[`Typeahead injection should use render props to inject extra components
role="listbox"
style={
Object {
- "left": 0,
- "opacity": 0,
- "pointerEvents": "none",
+ "left": "0",
"position": "absolute",
- "top": 0,
+ "top": "0",
}
}
>
@@ -172,11 +170,9 @@ exports[`Typeahead items should render typeahead items with match 1`] = `
role="listbox"
style={
Object {
- "left": 0,
- "opacity": 0,
- "pointerEvents": "none",
+ "left": "0",
"position": "absolute",
- "top": 0,
+ "top": "0",
}
}
>
@@ -439,11 +435,9 @@ exports[`Typeahead items should render typeahead with loading entry 1`] = `
role="listbox"
style={
Object {
- "left": 0,
- "opacity": 0,
- "pointerEvents": "none",
+ "left": "0",
"position": "absolute",
- "top": 0,
+ "top": "0",
}
}
>
@@ -506,11 +500,9 @@ exports[`Typeahead items should render typeahead with object items 1`] = `
role="listbox"
style={
Object {
- "left": 0,
- "opacity": 0,
- "pointerEvents": "none",
+ "left": "0",
"position": "absolute",
- "top": 0,
+ "top": "0",
}
}
>
@@ -715,11 +707,9 @@ exports[`Typeahead items should render typeahead with string items 1`] = `
role="listbox"
style={
Object {
- "left": 0,
- "opacity": 0,
- "pointerEvents": "none",
+ "left": "0",
"position": "absolute",
- "top": 0,
+ "top": "0",
}
}
>
@@ -830,11 +820,9 @@ exports[`Typeahead items should render typeahead without items 1`] = `
role="listbox"
style={
Object {
- "left": 0,
- "opacity": 0,
- "pointerEvents": "none",
+ "left": "0",
"position": "absolute",
- "top": 0,
+ "top": "0",
}
}
>
diff --git a/packages/components/src/usePopper.js b/packages/components/src/usePopper.js
new file mode 100644
index 00000000000..dcf126cf6cd
--- /dev/null
+++ b/packages/components/src/usePopper.js
@@ -0,0 +1,47 @@
+import React from 'react';
+import { createPopper } from '@popperjs/core';
+
+export function usePopper(triggerRef, tooltipRef, options) {
+ React.useEffect(() => {
+ function show() {
+ // eslint-disable-next-line no-param-reassign
+ tooltipRef.current.style.display = 'block';
+ }
+
+ function hide() {
+ // eslint-disable-next-line no-param-reassign
+ tooltipRef.current.style.display = 'none';
+ }
+
+ const showEvents = ['focus', 'click'];
+ const hideEvents = ['blur'];
+ let popper = null;
+ if (triggerRef && tooltipRef && triggerRef.current && tooltipRef.current) {
+ popper = createPopper(triggerRef.current, tooltipRef.current, options);
+ hide();
+ showEvents.forEach(event => {
+ triggerRef.current.addEventListener(event, show);
+ });
+
+ hideEvents.forEach(event => {
+ triggerRef.current.addEventListener(event, hide);
+ });
+ }
+ return () => {
+ if (popper) {
+ popper.destroy();
+ popper = null;
+ if (triggerRef && triggerRef.current) {
+ showEvents.forEach(event => {
+ triggerRef.current.removeEventListener(event, show);
+ });
+
+ hideEvents.forEach(event => {
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ triggerRef.current.removeEventListener(event, hide);
+ });
+ }
+ }
+ };
+ }, [triggerRef, tooltipRef, options]);
+}
diff --git a/packages/containers/.storybook/addons.js b/packages/containers/.storybook/addons.js
index 8a43488506e..330d5049efd 100644
--- a/packages/containers/.storybook/addons.js
+++ b/packages/containers/.storybook/addons.js
@@ -1,3 +1,2 @@
import '@storybook/addon-actions/register';
-import '@storybook/addon-a11y/register';
import 'storybook-addon-i18next/register';
diff --git a/packages/containers/.storybook/config.js b/packages/containers/.storybook/config.js
index dd326c1f268..d24bef4dd40 100644
--- a/packages/containers/.storybook/config.js
+++ b/packages/containers/.storybook/config.js
@@ -1,7 +1,6 @@
import React from 'react';
import { storiesOf, configure, addDecorator } from '@storybook/react';
import { action } from '@storybook/addon-actions';
-import { withA11y } from '@storybook/addon-a11y';
import { withI18next } from 'storybook-addon-i18next';
import { locales as tuiLocales } from '@talend/locales-tui/locales';
import createSagaMiddleware from 'redux-saga';
@@ -32,7 +31,6 @@ addDecorator(
}),
);
addDecorator(withCMF);
-addDecorator(withA11y);
addDecorator(storyFn => (
<>
@@ -116,11 +114,9 @@ exports[`MultiSelectTagWidget should render section title when items has categor
role="listbox"
style={
Object {
- "left": 0,
- "opacity": 0,
- "pointerEvents": "none",
+ "left": "0",
"position": "absolute",
- "top": 0,
+ "top": "0",
}
}
>
@@ -194,11 +190,9 @@ exports[`MultiSelectTagWidget should take default message when there isnt items
role="listbox"
style={
Object {
- "left": 0,
- "opacity": 0,
- "pointerEvents": "none",
+ "left": "0",
"position": "absolute",
- "top": 0,
+ "top": "0",
}
}
>
diff --git a/packages/stepper/.storybook/addons.js b/packages/stepper/.storybook/addons.js
index 76e401c00bc..5dea101a7c9 100644
--- a/packages/stepper/.storybook/addons.js
+++ b/packages/stepper/.storybook/addons.js
@@ -1,2 +1 @@
import '@storybook/addon-actions/register';
-import '@storybook/addon-a11y/register';
diff --git a/packages/stepper/.storybook/config.js b/packages/stepper/.storybook/config.js
index cf2d6d1ae32..9c2cf8c2606 100644
--- a/packages/stepper/.storybook/config.js
+++ b/packages/stepper/.storybook/config.js
@@ -4,14 +4,12 @@ import a11y from 'react-a11y';
import IconsProvider from '@talend/react-components/lib/IconsProvider';
import { configure, addDecorator } from '@storybook/react';
import { withInfo } from '@storybook/addon-info';
-import { checkA11y } from '@storybook/addon-a11y';
import '@talend/bootstrap-theme/src/theme/theme.scss';
import 'focus-outline-manager';
a11y(ReactDOM);
addDecorator(withInfo);
-addDecorator(checkA11y);
addDecorator(story => (
diff --git a/packages/stepper/package.json b/packages/stepper/package.json
index 1f5884e2e6c..3bf1f0f696d 100644
--- a/packages/stepper/package.json
+++ b/packages/stepper/package.json
@@ -40,7 +40,6 @@
"lodash": "^4.17.15"
},
"devDependencies": {
- "@storybook/addon-a11y": "^5.3.1",
"@storybook/addon-actions": "^5.3.1",
"@storybook/addon-info": "^5.3.1",
"@storybook/addons": "^5.3.1",
diff --git a/versions/dependencies.json b/versions/dependencies.json
index 504537dc102..e30e9d48549 100644
--- a/versions/dependencies.json
+++ b/versions/dependencies.json
@@ -59,7 +59,8 @@
"react-draggable": "^3.3.0",
"react-hook-form": "^6.9.2",
"react-i18next": "^10.11.4",
- "react-popper": "^1.3.7",
+ "@popperjs/core": "^2.6.0",
+ "react-popper": "^2.2.4",
"react-redux": "^5.0.7",
"react-router": "^3.2.0",
"react-router-redux": "^4.0.8",
diff --git a/yarn.lock b/yarn.lock
index a675e2b3986..5257c50a628 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -994,7 +994,7 @@
core-js-pure "^3.0.0"
regenerator-runtime "^0.13.4"
-"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
version "7.12.5"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==
@@ -2264,6 +2264,11 @@
dependencies:
"@types/node" ">= 8"
+"@popperjs/core@^2.6.0":
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.6.0.tgz#f022195afdfc942e088ee2101285a1d31c7d727f"
+ integrity sha512-cPqjjzuFWNK3BSKLm0abspP0sp/IGOli4p5I5fKFAzdS8fvjdOwDCfZqAaIiXd9lPkOWi3SUUfZof3hEb7J/uw==
+
"@reach/router@^1.2.1":
version "1.3.4"
resolved "https://registry.yarnpkg.com/@reach/router/-/router-1.3.4.tgz#d2574b19370a70c80480ed91f3da840136d10f8c"
@@ -2367,28 +2372,6 @@
resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5"
integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==
-"@storybook/addon-a11y@^5.3.1":
- version "5.3.21"
- resolved "https://registry.yarnpkg.com/@storybook/addon-a11y/-/addon-a11y-5.3.21.tgz#29ab480c2b1e647da15f571448824a7f29ccfb50"
- integrity sha512-pJdxyYRtEJdMjbZAurSi8RGJe7KE6w14thpDJmBfnn6Z1FKB8vprOfxJypVqcs9tY58UODqtU3ndOqnOG7d8tA==
- dependencies:
- "@storybook/addons" "5.3.21"
- "@storybook/api" "5.3.21"
- "@storybook/client-logger" "5.3.21"
- "@storybook/components" "5.3.21"
- "@storybook/core-events" "5.3.21"
- "@storybook/theming" "5.3.21"
- axe-core "^3.3.2"
- core-js "^3.0.1"
- global "^4.3.2"
- memoizerific "^1.11.3"
- react "^16.8.3"
- react-redux "^7.0.2"
- react-sizeme "^2.5.2"
- redux "^4.0.1"
- ts-dedent "^1.1.0"
- util-deprecate "^1.0.2"
-
"@storybook/addon-actions@^5.3.1":
version "5.3.21"
resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-5.3.21.tgz#16eed3eb24996adfcbf70bd476a261324d6de593"
@@ -4457,11 +4440,6 @@ aws4@^1.8.0:
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59"
integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==
-axe-core@^3.3.2:
- version "3.5.5"
- resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.5.tgz#84315073b53fa3c0c51676c588d59da09a192227"
- integrity sha512-5P0QZ6J5xGikH780pghEdbEKijCTrruK9KxtPZCFWUpef0f6GipO+xEZ5GKCb020mmqgbiNO6TcA55CriL784Q==
-
axe-core@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.0.2.tgz#c7cf7378378a51fcd272d3c09668002a4990b1cb"
@@ -15903,17 +15881,6 @@ react-redux@^5.0.7:
react-is "^16.6.0"
react-lifecycles-compat "^3.0.0"
-react-redux@^7.0.2:
- version "7.2.2"
- resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.2.tgz#03862e803a30b6b9ef8582dadcc810947f74b736"
- integrity sha512-8+CQ1EvIVFkYL/vu6Olo7JFLWop1qRUeb46sGtIMDCSpgwPQq8fPLpirIB0iTqFe9XYEFPHssdX8/UwN6pAkEA==
- dependencies:
- "@babel/runtime" "^7.12.1"
- hoist-non-react-statics "^3.3.2"
- loose-envify "^1.4.0"
- prop-types "^15.7.2"
- react-is "^16.13.1"
-
react-resizable@1.x:
version "1.11.0"
resolved "https://registry.yarnpkg.com/react-resizable/-/react-resizable-1.11.0.tgz#0b237c4aff16937b7663de1045861749683227ad"
@@ -15965,7 +15932,7 @@ react-select@^3.0.8:
react-input-autosize "^2.2.2"
react-transition-group "^4.3.0"
-react-sizeme@^2.5.2, react-sizeme@^2.6.7:
+react-sizeme@^2.6.7:
version "2.6.12"
resolved "https://registry.yarnpkg.com/react-sizeme/-/react-sizeme-2.6.12.tgz#ed207be5476f4a85bf364e92042520499455453e"
integrity sha512-tL4sCgfmvapYRZ1FO2VmBmjPVzzqgHA7kI8lSJ6JS6L78jXFNRdOZFpXyK6P1NBZvKPPCZxReNgzZNUajAerZw==
@@ -16515,14 +16482,6 @@ redux@^3.7.1, redux@^3.7.2:
loose-envify "^1.1.0"
symbol-observable "^1.0.3"
-redux@^4.0.1:
- version "4.0.5"
- resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f"
- integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==
- dependencies:
- loose-envify "^1.4.0"
- symbol-observable "^1.2.0"
-
reflect.ownkeys@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460"
@@ -18412,7 +18371,7 @@ symbol-observable@1.0.1:
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4"
integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=
-symbol-observable@^1.0.3, symbol-observable@^1.2.0:
+symbol-observable@^1.0.3:
version "1.2.0"
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==