diff --git a/app/assets/stylesheets/components/forms.scss b/app/assets/stylesheets/components/forms.scss
index 057a4786a..ca3cefc7d 100644
--- a/app/assets/stylesheets/components/forms.scss
+++ b/app/assets/stylesheets/components/forms.scss
@@ -1,4 +1,6 @@
@import '../config/import';
+@import './buttons';
+@import 'react-dates/lib/css/_datepicker.css';
%form-styling {
--border-width: 1px;
@@ -275,3 +277,142 @@ textarea.crayons-textfield.crayons-textfield--ghost {
min-width: min-content;
}
}
+
+.c-date-picker {
+ // The following class names come from the react-dates library we use for date pickers.
+ // We group them in the c-date-picker class so we can override styles via specificity.
+
+ .DateRangePickerInput {
+ @extend .crayons-textfield;
+
+ padding: var(--su-1) var(--su-2);
+
+ &_calendarIcon {
+ @extend .c-btn;
+ padding: 0;
+ }
+
+ .DateInput_input {
+ background-color: var(--form-bg);
+ color: var(--body-color);
+ font-size: var(--fs-base);
+
+ &__focused {
+ border-bottom-color: var(--focus);
+ }
+ }
+
+ &_arrow_svg {
+ fill: var(--body-color);
+ }
+
+ &_clearDates {
+ @extend .c-btn;
+ position: absolute;
+ padding: var(--su-2);
+
+ &:hover,
+ &:focus-visible {
+ border-radius: var(--radius);
+ }
+ }
+ }
+
+ .DateRangePicker:focus-within {
+ .DateRangePickerInput {
+ border-color: var(--focus);
+ }
+ }
+
+ .CalendarDay {
+ border-color: var(--date-border-color);
+
+ &__default:hover {
+ background-color: transparent;
+ position: relative;
+
+ // We set this in ::after selector to avoid neighbouring date borders overlapping our styles
+ &::after {
+ border: 1px solid var(--hover-date-border-color);
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ content: '';
+ }
+ }
+
+ &__today {
+ color: var(--current-date-color);
+ }
+
+ // Everything selected including everything between a range of dates
+ &__selected_span {
+ background: var(--selected-range-bg);
+ color: var(--selected-range-color);
+ border-color: var(--selected-date-border);
+
+ &:active,
+ &:hover {
+ background: var(--selected-range-bg);
+ color: var(--fs-base);
+ border-color: var(--selected-date-border);
+ }
+ }
+
+ // The selected start and end dates
+ &__selected {
+ background: var(--selected-date-bg);
+ color: var(--selected-date-color);
+
+ &:hover {
+ background: var(--selected-date-bg);
+ color: var(--selected-date-color);
+ border-color: var(--selected-date-border);
+ }
+ }
+
+ // Used when end date is not yet selected. Targets dates between mouse and said end date
+ &__hovered_span,
+ &__hovered_span:hover {
+ background: var(--selected-range-bg);
+ color: var(--selected-range-color);
+ border-color: var(--selected-date-border);
+ }
+ }
+
+ // The triangular ? button which shows keyboard shortcut information
+ .DayPickerKeyboardShortcuts_buttonReset {
+ &::before {
+ border-right-color: var(--accent-brand);
+ }
+
+ &:hover::before {
+ border-right-color: var(--accent-brand-lighter);
+ }
+ }
+
+ .DayPickerNavigation {
+ display: flex;
+ justify-content: space-between;
+
+ &_button {
+ @extend .c-btn;
+
+ margin: var(--su-6) var(--su-3) 0 var(--su-3);
+ height: min-content;
+ padding: var(--su-1);
+
+ &:hover,
+ &:focus {
+ background-color: var(--bg-hover);
+ }
+
+ &__disabled {
+ opacity: 0.2;
+ cursor: not-allowed;
+ }
+ }
+ }
+}
diff --git a/app/assets/stylesheets/config/_colors.css b/app/assets/stylesheets/config/_colors.css
index 8c0de4151..5b602ce32 100644
--- a/app/assets/stylesheets/config/_colors.css
+++ b/app/assets/stylesheets/config/_colors.css
@@ -322,6 +322,20 @@
--toggle-rail-checked-bg: rgb(var(--green-500));
--toggle-knob-bg: rgb(var(--white));
+ /***********************************************
+ ** Date Pickers ********************************
+ ***********************************************/
+
+ --date-border-color: var( --base-10);
+ --hover-date-border-color: var(--accent-brand);
+ --selected-date-bg: var(--accent-brand);
+ --selected-range-bg: rgb(var(--indigo-50));
+ --selected-date-border: rgb(var(--indigo-100));
+ --selected-date-color: var(--base-0);
+ --selected-range-color: var(--body-color);
+ --current-date-color: var(--accent-brand);
+
+
/***********************************************
** Utilities ***********************************
***********************************************/
diff --git a/app/assets/stylesheets/themes/dark.css b/app/assets/stylesheets/themes/dark.css
index be1d142a7..2726f674b 100644
--- a/app/assets/stylesheets/themes/dark.css
+++ b/app/assets/stylesheets/themes/dark.css
@@ -330,6 +330,13 @@
--toggle-rail-checked-bg: rgb(var(--green-500));
--toggle-knob-bg: rgb(var(--white));
+ /***********************************************
+ ** Date Pickers ********************************
+ ***********************************************/
+
+ --selected-date-color: var(--body-color);
+ --selected-range-color: var(--body-color-inverted);
+
/***********************************************
** Utilities ***********************************
***********************************************/
diff --git a/app/javascript/crayons/formElements/DateRangePicker/DateRangePicker.jsx b/app/javascript/crayons/formElements/DateRangePicker/DateRangePicker.jsx
new file mode 100644
index 000000000..df69e6165
--- /dev/null
+++ b/app/javascript/crayons/formElements/DateRangePicker/DateRangePicker.jsx
@@ -0,0 +1,185 @@
+import { h } from 'preact';
+import PropTypes from 'prop-types';
+import { useState } from 'preact/hooks';
+import 'react-dates/initialize';
+import moment from 'moment';
+import { DateRangePicker as ReactDateRangePicker } from 'react-dates';
+import defaultPhrases from 'react-dates/lib/defaultPhrases';
+import { START_DATE, ICON_BEFORE_POSITION } from 'react-dates/constants';
+import { Icon } from '@crayons';
+import ChevronLeft from '@images/chevron-left.svg';
+import ChevronRight from '@images/chevron-right.svg';
+import Calendar from '@images/calendar.svg';
+
+const PICKER_PHRASES = {
+ ...defaultPhrases,
+ chooseAvailableStartDate: ({ date }) => `Choose ${date} as start date`,
+ chooseAvailableEndDate: ({ date }) => `Choose ${date} as end date`,
+ focusStartDate: 'Interact with the calendar and add your start date',
+};
+
+const MONTH_NAMES = [...Array(12).keys()].map((key) =>
+ new Date(0, key).toLocaleString('en', { month: 'long' }),
+);
+
+const isDateOutsideOfRange = ({ date, minDate, maxDate }) =>
+ !date.isBetween(minDate, maxDate);
+
+const MonthYearPicker = ({
+ earliestMoment,
+ latestMoment,
+ onMonthSelect,
+ onYearSelect,
+ month,
+}) => {
+ const selectedMonth = month.month();
+ const selectedYear = month.year();
+
+ const latestYear = latestMoment.year();
+
+ // Make sure we only display the available months for the currently selected year
+ const latestMonthIndex =
+ latestYear === selectedYear ? latestMoment.month() : 11;
+ const availableMonths = MONTH_NAMES.slice(0, latestMonthIndex + 1);
+
+ const yearsDiff = latestMoment.diff(earliestMoment, 'years');
+
+ const years = [...Array(yearsDiff).keys()].map(
+ (key) => latestMoment.year() - key,
+ );
+ years.push(earliestMoment.year());
+
+ return (
+
+
+
+
+ );
+};
+
+/**
+ * Used to facilitate picking a date range. This component is a wrapper around the one provided from react-dates.
+ *
+ * @param {Object} props
+ * @param {string} props.startDateId A unique ID for the start date input
+ * @param {string} props.endDateId A unique ID for the end date input
+ * @param {Date} props.defaultStartDate The optional initial value for the start date
+ * @param {Date} props.defaultEndDate The optional initial value for the end date
+ * @param {Date} props.maxEndDate The latest date that may be selected
+ * @param {Date} props.minStartDate The oldest date that may be selected
+ * @param {Function} props.onDatesChanged Callback function for when dates are selected. Receives an object with startDate and endDate values.
+ */
+export const DateRangePicker = ({
+ startDateId,
+ endDateId,
+ defaultStartDate,
+ defaultEndDate,
+ maxEndDate = new Date(),
+ minStartDate = new Date(),
+ onDatesChanged,
+}) => {
+ const [focusedInput, setFocusedInput] = useState(START_DATE);
+ const [startMoment, setStartMoment] = useState(
+ defaultStartDate ? moment(defaultStartDate) : null,
+ );
+
+ const [endMoment, setEndMoment] = useState(
+ defaultEndDate ? moment(defaultEndDate) : null,
+ );
+
+ const earliestMoment = moment(minStartDate);
+ const latestMoment = moment(maxEndDate);
+
+ const isMonthSameAsLatestMonth = (relevantDate) =>
+ relevantDate.year() === latestMoment.year() &&
+ relevantDate.month() === latestMoment.month();
+
+ const today = moment();
+
+ return (
+ // We wrap in a span to assist with scoping CSS selectors & overriding styles from react-dates
+
+ }
+ navNext={}
+ minDate={earliestMoment}
+ maxDate={latestMoment}
+ initialVisibleMonth={() => {
+ const relevantDate = startMoment ? startMoment : today;
+
+ return isMonthSameAsLatestMonth(relevantDate)
+ ? relevantDate.clone().subtract(1, 'month')
+ : relevantDate;
+ }}
+ customInputIcon={}
+ showDefaultInputIcon={!(startMoment || endMoment)}
+ inputIconPosition={ICON_BEFORE_POSITION}
+ showClearDates={startMoment || endMoment}
+ customArrowIcon="-"
+ phrases={PICKER_PHRASES}
+ onFocusChange={(focusedInput) => setFocusedInput(focusedInput)}
+ isOutsideRange={(date) =>
+ isDateOutsideOfRange({
+ date,
+ minDate: earliestMoment,
+ maxDate: latestMoment,
+ })
+ }
+ onDatesChange={({ startDate, endDate }) => {
+ setStartMoment(startDate);
+ setEndMoment(endDate);
+ onDatesChanged?.({
+ startDate: startDate.toDate(),
+ endDate: endDate.toDate(),
+ });
+ }}
+ renderMonthElement={(props) => (
+
+ )}
+ />
+
+ );
+};
+
+DateRangePicker.propTypes = {
+ startDateId: PropTypes.string.isRequired,
+ endDateId: PropTypes.string.isRequired,
+ defaultStartDate: PropTypes.instanceOf(Date),
+ defaultEndDate: PropTypes.instanceOf(Date),
+ maxStartDate: PropTypes.instanceOf(Date),
+ maxEndDate: PropTypes.instanceOf(Date),
+ onDatesChanged: PropTypes.func,
+};
diff --git a/app/javascript/crayons/formElements/DateRangePicker/__stories__/DateRangePicker.stories.jsx b/app/javascript/crayons/formElements/DateRangePicker/__stories__/DateRangePicker.stories.jsx
new file mode 100644
index 000000000..12432dc4f
--- /dev/null
+++ b/app/javascript/crayons/formElements/DateRangePicker/__stories__/DateRangePicker.stories.jsx
@@ -0,0 +1,51 @@
+import { h } from 'preact';
+import { DateRangePicker } from '@crayons';
+
+export default {
+ component: DateRangePicker,
+ title: 'BETA/DateRangePicker',
+ argTypes: {
+ startDateId: {
+ description: 'A unique identifier for the start date input (required)',
+ },
+ endDateId: {
+ description: 'A unique identifier for the end date input (required)',
+ },
+ defaultStartDate: {
+ description:
+ 'A default value for the start date of the range (optional)',
+ control: 'date',
+ },
+ defaultEndDate: {
+ description: 'The default value for the end date of the range (optional)',
+ control: 'date',
+ },
+ minStartDate: {
+ description: 'The earliest date that may be selected',
+ control: 'date',
+ table: { defaultValue: { summary: 'Today' } },
+ },
+ maxEndDate: {
+ description: 'The latest date that may be selected',
+ control: 'date',
+ table: { defaultValue: { summary: 'Today' } },
+ },
+ onDatesChanged: {
+ description:
+ 'A callback function for when dates are selected. It receives an object with startDate and endDate values.',
+ },
+ },
+};
+
+export const Default = (args) => {
+ return ;
+};
+
+Default.args = {
+ startDateId: 'start-date',
+ endDateId: 'end-date',
+ defaultStartDate: undefined,
+ defaultEndDate: undefined,
+ minStartDate: new Date(2020, 0, 1),
+ maxEndDate: new Date(),
+};
diff --git a/app/javascript/crayons/formElements/DateRangePicker/index.js b/app/javascript/crayons/formElements/DateRangePicker/index.js
new file mode 100644
index 000000000..850937e06
--- /dev/null
+++ b/app/javascript/crayons/formElements/DateRangePicker/index.js
@@ -0,0 +1 @@
+export * from './DateRangePicker';
diff --git a/app/javascript/crayons/formElements/index.js b/app/javascript/crayons/formElements/index.js
index 90b7bc4fa..ee84e9d70 100644
--- a/app/javascript/crayons/formElements/index.js
+++ b/app/javascript/crayons/formElements/index.js
@@ -2,3 +2,4 @@ export * from './FormField';
export * from './RadioButton';
export * from './ColorPicker';
export * from './Toggles';
+export * from './DateRangePicker';
diff --git a/package.json b/package.json
index 12481224a..98f1fdf13 100644
--- a/package.json
+++ b/package.json
@@ -132,6 +132,7 @@
"intersection-observer": "^0.12.0",
"linkstate": "^2.0.1",
"lodash.debounce": "4.0.8",
+ "moment": "^2.29.3",
"postcss": "^8.4.13",
"postcss-cli": "^9.1.0",
"postcss-cssnext": "^3.1.0",
@@ -141,6 +142,7 @@
"prop-types": "^15.8.1",
"rails-erb-loader": "^5.5.2",
"react-colorful": "^5.5.1",
+ "react-dates": "^21.8.0",
"web-share-wrapper": "^0.2.2"
}
}
diff --git a/yarn.lock b/yarn.lock
index b8e0e03de..84a812fd7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3947,6 +3947,21 @@ airbnb-js-shims@^2.2.1:
string.prototype.padstart "^3.0.0"
symbol.prototype.description "^1.0.0"
+airbnb-prop-types@^2.14.0, airbnb-prop-types@^2.15.0, airbnb-prop-types@^2.16.0:
+ version "2.16.0"
+ resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz#b96274cefa1abb14f623f804173ee97c13971dc2"
+ integrity sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==
+ dependencies:
+ array.prototype.find "^2.1.1"
+ function.prototype.name "^1.1.2"
+ is-regex "^1.1.0"
+ object-is "^1.1.2"
+ object.assign "^4.1.0"
+ object.entries "^1.1.2"
+ prop-types "^15.7.2"
+ prop-types-exact "^1.2.0"
+ react-is "^16.13.1"
+
ajv-errors@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
@@ -4207,6 +4222,16 @@ array-unique@^0.3.2:
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
+array.prototype.find@^2.1.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.2.0.tgz#153b8a28ad8965cd86d3117b07e6596af6f2880d"
+ integrity sha512-sn40qmUiLYAcRb/1HsIQjTTZ1kCy8II8VtZJpMn2Aoen9twULhbWXisfh3HimGqMlHGUul0/TfKCnXg42LuPpQ==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ es-abstract "^1.19.4"
+ es-shim-unscopables "^1.0.0"
+
array.prototype.flat@^1.2.1, array.prototype.flat@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13"
@@ -4820,6 +4845,11 @@ braces@^3.0.1, braces@~3.0.2:
dependencies:
fill-range "^7.0.1"
+brcast@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/brcast/-/brcast-2.0.2.tgz#2db16de44140e418dc37fab10beec0369e78dcef"
+ integrity sha512-Tfn5JSE7hrUlFcOoaLzVvkbgIemIorMIyoMr3TgvszWW7jFt2C9PdeMLtysYD9RU0MmU17b69+XJG1eRY2OBRg==
+
brorand@^1.0.1, brorand@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
@@ -5674,6 +5704,11 @@ console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-
resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+"consolidated-events@^1.1.1 || ^2.0.0":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/consolidated-events/-/consolidated-events-2.0.2.tgz#da8d8f8c2b232831413d9e190dc11669c79f4a91"
+ integrity sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ==
+
constants-browserify@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
@@ -6337,6 +6372,11 @@ deep-object-diff@^1.1.0:
resolved "https://registry.yarnpkg.com/deep-object-diff/-/deep-object-diff-1.1.0.tgz#d6fabf476c2ed1751fc94d5ca693d2ed8c18bc5a"
integrity sha512-b+QLs5vHgS+IoSNcUE4n9HP2NwcHj7aqnJWsjPtuG75Rh5TOaGt0OjAYInh77d5T16V5cRDC+Pw/6ZZZiETBGw==
+deepmerge@^1.5.2:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753"
+ integrity sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==
+
deepmerge@^4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
@@ -6357,6 +6397,14 @@ define-properties@^1.1.2, define-properties@^1.1.3:
dependencies:
object-keys "^1.0.12"
+define-properties@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1"
+ integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==
+ dependencies:
+ has-property-descriptors "^1.0.0"
+ object-keys "^1.1.1"
+
define-property@^0.2.5:
version "0.2.5"
resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
@@ -6498,6 +6546,11 @@ dir-glob@^3.0.1:
dependencies:
path-type "^4.0.0"
+direction@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/direction/-/direction-1.0.4.tgz#2b86fb686967e987088caf8b89059370d4837442"
+ integrity sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==
+
dns-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
@@ -6532,6 +6585,13 @@ doctrine@^3.0.0:
dependencies:
esutils "^2.0.2"
+document.contains@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/document.contains/-/document.contains-1.0.2.tgz#4260abad67a6ae9e135c1be83d68da0db169d5f0"
+ integrity sha512-YcvYFs15mX8m3AO1QNQy3BlIpSMfNRj3Ujk2BEJxsZG+HZf7/hZ6jr7mDpXrF8q+ff95Vef5yjhiZxm8CGJr6Q==
+ dependencies:
+ define-properties "^1.1.3"
+
dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9:
version "0.5.9"
resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.9.tgz#915f8531ba29a50e5c29389dbfb87a9642fef0d6"
@@ -6820,6 +6880,14 @@ entities@^2.0.0:
resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
+enzyme-shallow-equal@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz#b9256cb25a5f430f9bfe073a84808c1d74fced2e"
+ integrity sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q==
+ dependencies:
+ has "^1.0.3"
+ object-is "^1.1.2"
+
errno@^0.1.3, errno@~0.1.7:
version "0.1.8"
resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
@@ -6860,6 +6928,35 @@ es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1:
string.prototype.trimstart "^1.0.4"
unbox-primitive "^1.0.1"
+es-abstract@^1.19.4, es-abstract@^1.19.5:
+ version "1.20.1"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814"
+ integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==
+ dependencies:
+ call-bind "^1.0.2"
+ es-to-primitive "^1.2.1"
+ function-bind "^1.1.1"
+ function.prototype.name "^1.1.5"
+ get-intrinsic "^1.1.1"
+ get-symbol-description "^1.0.0"
+ has "^1.0.3"
+ has-property-descriptors "^1.0.0"
+ has-symbols "^1.0.3"
+ internal-slot "^1.0.3"
+ is-callable "^1.2.4"
+ is-negative-zero "^2.0.2"
+ is-regex "^1.1.4"
+ is-shared-array-buffer "^1.0.2"
+ is-string "^1.0.7"
+ is-weakref "^1.0.2"
+ object-inspect "^1.12.0"
+ object-keys "^1.1.1"
+ object.assign "^4.1.2"
+ regexp.prototype.flags "^1.4.3"
+ string.prototype.trimend "^1.0.5"
+ string.prototype.trimstart "^1.0.5"
+ unbox-primitive "^1.0.2"
+
es-array-method-boxes-properly@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e"
@@ -6884,6 +6981,13 @@ es-module-lexer@^0.9.0:
resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19"
integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==
+es-shim-unscopables@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241"
+ integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==
+ dependencies:
+ has "^1.0.3"
+
es-to-primitive@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
@@ -7906,7 +8010,7 @@ function-bind@^1.1.1:
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
-function.prototype.name@^1.1.0:
+function.prototype.name@^1.1.0, function.prototype.name@^1.1.2, function.prototype.name@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621"
integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==
@@ -8076,6 +8180,14 @@ glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.1.7:
once "^1.3.0"
path-is-absolute "^1.0.0"
+global-cache@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/global-cache/-/global-cache-1.2.1.tgz#39ca020d3dd7b3f0934c52b75363f8d53312c16d"
+ integrity sha512-EOeUaup5DgWKlCMhA9YFqNRIlZwoxt731jCh47WBV9fQqHgXhr3Fa55hfgIUqilIcPsfdNKN7LHjrNY+Km40KA==
+ dependencies:
+ define-properties "^1.1.2"
+ is-symbol "^1.0.1"
+
global-dirs@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686"
@@ -8236,6 +8348,11 @@ has-bigints@^1.0.1:
resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113"
integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==
+has-bigints@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa"
+ integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==
+
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
@@ -8253,11 +8370,23 @@ has-glob@^1.0.0:
dependencies:
is-glob "^3.0.0"
+has-property-descriptors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861"
+ integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==
+ dependencies:
+ get-intrinsic "^1.1.1"
+
has-symbols@^1.0.1, has-symbols@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
+has-symbols@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
+ integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+
has-tostringtag@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
@@ -8431,7 +8560,7 @@ hmac-drbg@^1.0.1:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.1"
-hoist-non-react-statics@^3.3.0:
+hoist-non-react-statics@^3.2.1, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
@@ -9179,6 +9308,11 @@ is-negative-zero@^2.0.1:
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
+is-negative-zero@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
+ integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
+
is-number-object@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0"
@@ -9259,7 +9393,7 @@ is-potential-custom-element-name@^1.0.1:
resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5"
integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==
-is-regex@^1.0.4, is-regex@^1.1.2, is-regex@^1.1.4:
+is-regex@^1.0.4, is-regex@^1.1.0, is-regex@^1.1.2, is-regex@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
@@ -9287,6 +9421,13 @@ is-shared-array-buffer@^1.0.1:
resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6"
integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==
+is-shared-array-buffer@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79"
+ integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==
+ dependencies:
+ call-bind "^1.0.2"
+
is-stream@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
@@ -9304,13 +9445,18 @@ is-string@^1.0.5, is-string@^1.0.7:
dependencies:
has-tostringtag "^1.0.0"
-is-symbol@^1.0.2, is-symbol@^1.0.3:
+is-symbol@^1.0.1, is-symbol@^1.0.2, is-symbol@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
dependencies:
has-symbols "^1.0.2"
+is-touch-device@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-touch-device/-/is-touch-device-1.0.1.tgz#9a2fd59f689e9a9bf6ae9a86924c4ba805a42eab"
+ integrity sha512-LAYzo9kMT1b2p19L/1ATGt2XcSilnzNlyvq6c0pbPRVisLbAPpLqr53tIJS00kvrTkj0HtR8U7+u8X0yR8lPSw==
+
is-typedarray@^1.0.0, is-typedarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
@@ -9328,6 +9474,13 @@ is-weakref@^1.0.1:
dependencies:
call-bind "^1.0.0"
+is-weakref@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
+ integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
+ dependencies:
+ call-bind "^1.0.2"
+
is-whitespace-character@^1.0.0:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7"
@@ -10519,7 +10672,7 @@ lodash.uniq@4.5.0, lodash.uniq@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
-lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5:
+lodash@^4.1.1, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -11030,6 +11183,11 @@ mkdirp@^1.0.3, mkdirp@^1.0.4:
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
+moment@>=1.6.0, moment@^2.29.3:
+ version "2.29.3"
+ resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.3.tgz#edd47411c322413999f7a5940d526de183c031f3"
+ integrity sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==
+
move-concurrently@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
@@ -11327,7 +11485,7 @@ object-inspect@^1.11.0, object-inspect@^1.12.0, object-inspect@^1.9.0:
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0"
integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==
-object-is@^1.0.1:
+object-is@^1.0.1, object-is@^1.1.2:
version "1.1.5"
resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
@@ -11357,7 +11515,7 @@ object.assign@^4.1.0, object.assign@^4.1.2:
has-symbols "^1.0.1"
object-keys "^1.1.1"
-object.entries@^1.1.0, object.entries@^1.1.5:
+object.entries@^1.1.0, object.entries@^1.1.2, object.entries@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861"
integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==
@@ -13192,6 +13350,15 @@ prompts@^2.4.0:
kleur "^3.0.3"
sisteransi "^1.0.5"
+prop-types-exact@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869"
+ integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==
+ dependencies:
+ has "^1.0.3"
+ object.assign "^4.1.0"
+ reflect.ownkeys "^0.2.0"
+
prop-types@^15.0.0, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
version "15.8.1"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
@@ -13348,6 +13515,13 @@ queue-microtask@^1.2.2:
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+raf@^3.4.1:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39"
+ integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==
+ dependencies:
+ performance-now "^2.1.0"
+
rails-erb-loader@^5.5.2:
version "5.5.2"
resolved "https://registry.yarnpkg.com/rails-erb-loader/-/rails-erb-loader-5.5.2.tgz#db3fa8ac89600f09d179a1a70a2ca18c592576ea"
@@ -13409,6 +13583,27 @@ react-colorful@^5.5.1:
resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.5.1.tgz#29d9c4e496f2ca784dd2bb5053a3a4340cfaf784"
integrity sha512-M1TJH2X3RXEt12sWkpa6hLc/bbYS0H6F4rIqjQZ+RxNBstpY67d9TrFXtqdZwhpmBXcCwEi7stKqFue3ZRkiOg==
+react-dates@^21.8.0:
+ version "21.8.0"
+ resolved "https://registry.yarnpkg.com/react-dates/-/react-dates-21.8.0.tgz#355c3c7a243a7c29568fe00aca96231e171a5e94"
+ integrity sha512-PPriGqi30CtzZmoHiGdhlA++YPYPYGCZrhydYmXXQ6RAvAsaONcPtYgXRTLozIOrsQ5mSo40+DiA5eOFHnZ6xw==
+ dependencies:
+ airbnb-prop-types "^2.15.0"
+ consolidated-events "^1.1.1 || ^2.0.0"
+ enzyme-shallow-equal "^1.0.0"
+ is-touch-device "^1.0.1"
+ lodash "^4.1.1"
+ object.assign "^4.1.0"
+ object.values "^1.1.0"
+ prop-types "^15.7.2"
+ raf "^3.4.1"
+ react-moment-proptypes "^1.6.0"
+ react-outside-click-handler "^1.2.4"
+ react-portal "^4.2.0"
+ react-with-direction "^1.3.1"
+ react-with-styles "^4.1.0"
+ react-with-styles-interface-css "^6.0.0"
+
react-dom@16.14.0:
version "16.14.0"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89"
@@ -13488,6 +13683,24 @@ react-lifecycles-compat@^3.0.4:
resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==
+react-moment-proptypes@^1.6.0:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/react-moment-proptypes/-/react-moment-proptypes-1.8.1.tgz#7ba4076147f6b5998f0d4f51d302d6d8c62049fd"
+ integrity sha512-Er940DxWoObfIqPrZNfwXKugjxMIuk1LAuEzn23gytzV6hKS/sw108wibi9QubfMN4h+nrlje8eUCSbQRJo2fQ==
+ dependencies:
+ moment ">=1.6.0"
+
+react-outside-click-handler@^1.2.4:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz#3831d541ac059deecd38ec5423f81e80ad60e115"
+ integrity sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==
+ dependencies:
+ airbnb-prop-types "^2.15.0"
+ consolidated-events "^1.1.1 || ^2.0.0"
+ document.contains "^1.0.1"
+ object.values "^1.1.0"
+ prop-types "^15.7.2"
+
react-popper-tooltip@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/react-popper-tooltip/-/react-popper-tooltip-3.1.1.tgz#329569eb7b287008f04fcbddb6370452ad3f9eac"
@@ -13505,6 +13718,13 @@ react-popper@^2.2.4:
react-fast-compare "^3.0.1"
warning "^4.0.2"
+react-portal@^4.2.0:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/react-portal/-/react-portal-4.2.2.tgz#bff1e024147d6041ba8c530ffc99d4c8248f49fa"
+ integrity sha512-vS18idTmevQxyQpnde0Td6ZcUlv+pD8GTyR42n3CHUQq9OHi1C4jDE4ZWEbEsrbrLRhSECYiao58cvocwMtP7Q==
+ dependencies:
+ prop-types "^15.5.8"
+
react-router-dom@^6.0.0:
version "6.0.2"
resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.0.2.tgz#860cefa697b9d4965eced3f91e82cdbc5995f3ad"
@@ -13585,6 +13805,39 @@ react-transition-group@^4.3.0:
loose-envify "^1.4.0"
prop-types "^15.6.2"
+react-with-direction@^1.3.1:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/react-with-direction/-/react-with-direction-1.4.0.tgz#ebdf64d685d0650ce966e872e6431ad5a2485444"
+ integrity sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==
+ dependencies:
+ airbnb-prop-types "^2.16.0"
+ brcast "^2.0.2"
+ deepmerge "^1.5.2"
+ direction "^1.0.4"
+ hoist-non-react-statics "^3.3.2"
+ object.assign "^4.1.2"
+ object.values "^1.1.5"
+ prop-types "^15.7.2"
+
+react-with-styles-interface-css@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/react-with-styles-interface-css/-/react-with-styles-interface-css-6.0.0.tgz#b53da7fa8359d452cb934cface8738acaef7b5fe"
+ integrity sha512-6khSG1Trf4L/uXOge/ZAlBnq2O2PEXlQEqAhCRbvzaQU4sksIkdwpCPEl6d+DtP3+IdhyffTWuHDO9lhe1iYvA==
+ dependencies:
+ array.prototype.flat "^1.2.1"
+ global-cache "^1.2.1"
+
+react-with-styles@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/react-with-styles/-/react-with-styles-4.2.0.tgz#0b8a8e5d94d082518b9f564f6fcf6103e28096c5"
+ integrity sha512-tZCTY27KriRNhwHIbg1NkSdTTOSfXDg6Z7s+Q37mtz0Ym7Sc7IOr3PzVt4qJhJMW6Nkvfi3g34FuhtiGAJCBQA==
+ dependencies:
+ airbnb-prop-types "^2.14.0"
+ hoist-non-react-statics "^3.2.1"
+ object.assign "^4.1.0"
+ prop-types "^15.7.2"
+ react-with-direction "^1.3.1"
+
react@16.14.0:
version "16.14.0"
resolved "https://registry.yarnpkg.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d"
@@ -13690,6 +13943,11 @@ reduce-function-call@^1.0.1, reduce-function-call@^1.0.2:
dependencies:
balanced-match "^1.0.0"
+reflect.ownkeys@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460"
+ integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA=
+
refractor@^3.1.0, refractor@^3.2.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/refractor/-/refractor-3.4.0.tgz#62bd274b06c942041f390c371b676eb67cb0a678"
@@ -13751,6 +14009,15 @@ regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1:
call-bind "^1.0.2"
define-properties "^1.1.3"
+regexp.prototype.flags@^1.4.3:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac"
+ integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+ functions-have-names "^1.2.2"
+
regexpp@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
@@ -14961,6 +15228,15 @@ string.prototype.trimend@^1.0.4:
call-bind "^1.0.2"
define-properties "^1.1.3"
+string.prototype.trimend@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0"
+ integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.19.5"
+
string.prototype.trimstart@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed"
@@ -14969,6 +15245,15 @@ string.prototype.trimstart@^1.0.4:
call-bind "^1.0.2"
define-properties "^1.1.3"
+string.prototype.trimstart@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef"
+ integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.19.5"
+
string_decoder@^1.0.0, string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
@@ -15644,6 +15929,16 @@ unbox-primitive@^1.0.1:
has-symbols "^1.0.2"
which-boxed-primitive "^1.0.2"
+unbox-primitive@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e"
+ integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==
+ dependencies:
+ call-bind "^1.0.2"
+ has-bigints "^1.0.2"
+ has-symbols "^1.0.3"
+ which-boxed-primitive "^1.0.2"
+
unfetch@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be"