diff --git a/package.json b/package.json
index 709af3b..c8d0987 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@govconnex/ui",
- "version": "0.0.169",
+ "version": "0.0.171",
"description": "GovConnex UI - React Component Library",
"scripts": {
"build:tokens": "./tokens-build.sh",
@@ -119,6 +119,7 @@
"@fortawesome/react-fontawesome": "^0.2.0",
"@popperjs/core": "^2.11.6",
"classnames": "^2.3.2",
+ "react-datepicker": "^2.14.0",
"react-helmet": "^6.1.0",
"react-popper": "^2.3.0",
"react-table": "^7.8.0",
diff --git a/src/components/Datepicker/ComponentSummary.mdx b/src/components/Datepicker/ComponentSummary.mdx
new file mode 100644
index 0000000..3345c63
--- /dev/null
+++ b/src/components/Datepicker/ComponentSummary.mdx
@@ -0,0 +1,4 @@
+A datepicker is a graphical user interface (GUI) element that allows users to easily select a date from a calendar. It is commonly used in web forms and applications to streamline the process of entering dates. A typical datepicker consists of an input field, where users can manually enter a date, and a graphical calendar interface that pops up when users interact with the input field.
+
+##Figma Link
+Figma link not available
diff --git a/src/components/Datepicker/Datepicker.stories.tsx b/src/components/Datepicker/Datepicker.stories.tsx
new file mode 100755
index 0000000..5d70546
--- /dev/null
+++ b/src/components/Datepicker/Datepicker.stories.tsx
@@ -0,0 +1,67 @@
+import React from "react";
+import {ComponentStory, ComponentMeta} from "@storybook/react";
+import DatePicker from "./DatePicker";
+import Button from "../Button";
+import {withDesign} from "storybook-addon-designs";
+import ComponentSummary from "./ComponentSummary.mdx";
+import ReactDOMServer from "react-dom/server";
+
+// More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export
+export default {
+ title: "Components/DatePicker",
+ component: DatePicker,
+ decorators: [withDesign],
+ parameters: {
+ docs: {
+ description: {
+ component: ReactDOMServer.renderToString(),
+ },
+ },
+ },
+} as ComponentMeta;
+
+const Template: ComponentStory = (args) => {
+ const [shown, setShown] = React.useState(false);
+ const buttonRef = React.useRef(null);
+
+ // override on close
+ const overriddenArgs = {
+ ...args,
+ onClose: () => {
+ setShown(false);
+ },
+ };
+
+ return (
+ <>
+
+ {shown && }
+ >
+ );
+};
+
+export const Basic = Template.bind({});
+
+export const WithDefaultDate = Template.bind({});
+// More on args: https://storybook.js.org/docs/react/writing-stories/args
+WithDefaultDate.args = {
+ defaultDate: new Date("2022-01-02"),
+ defaultTime: "10:35",
+ hasTime: true,
+ onChange: (value) => {
+ console.log("date: ", value);
+ },
+ onTimeChange: (value) => {
+ console.log("time: ", value);
+ },
+ "data-cy": "popover",
+ "data-cy-clear": "clear",
+ "data-cy-today": "today",
+};
diff --git a/src/components/Datepicker/Datepicker.styles.ts b/src/components/Datepicker/Datepicker.styles.ts
new file mode 100644
index 0000000..0d214c6
--- /dev/null
+++ b/src/components/Datepicker/Datepicker.styles.ts
@@ -0,0 +1,128 @@
+import styled from "styled-components";
+
+const StyledDatePickerWrapper = styled.div`
+ .react-datepicker {
+ border: none;
+ }
+
+ .react-datepicker {
+ font-family: sans-serif;
+ border-radius: 4px;
+ }
+
+ .react-datepicker__header {
+ background-color: #ffffff;
+ color: #000000;
+ border: none;
+ padding: 10px;
+ text-align: center;
+ border-bottom: 1px solid #ccc;
+ }
+
+ .react-datepicker__portal .react-datepicker__current-month,
+ .react-datepicker__portal .react-datepicker-time__header {
+ font-size: 1.44rem;
+ }
+
+ .react-datepicker__current-month,
+ .react-datepicker-time__header,
+ .react-datepicker-year-header {
+ margin-top: 1px;
+ color: #000;
+ font-size: 0.944rem;
+ }
+
+ .react-datepicker__navigation {
+ margin-left: 20px;
+ margin-right: 20px;
+ background: none;
+ line-height: 1.7rem;
+ text-align: center;
+ cursor: pointer;
+ position: absolute;
+ top: 30px;
+ width: 0;
+ padding: 0;
+ border: 0.45rem solid transparent;
+ z-index: 1;
+ height: 10px;
+ width: 10px;
+ text-indent: -999em;
+ overflow: hidden;
+ }
+
+ .react-datepicker__navigation--previous {
+ left: 10px;
+ border-right-color: #ccc;
+ }
+
+ .react-datepicker__navigation--previous:hover {
+ border-right-color: #b3b3b3;
+ }
+
+ .react-datepicker__navigation--previous--disabled,
+ .react-datepicker__navigation--previous--disabled:hover {
+ border-right-color: #e6e6e6;
+ cursor: default;
+ }
+
+ .react-datepicker__navigation--next {
+ right: 10px;
+ border-left-color: #ccc;
+ }
+
+ .react-datepicker__navigation--next--with-time:not(
+ .react-datepicker__navigation--next--with-today-button
+ ) {
+ right: 80px;
+ }
+
+ .react-datepicker__navigation--next:hover {
+ border-left-color: #b3b3b3;
+ }
+
+ .react-datepicker__day-names {
+ display: flex;
+ justify-content: space-around;
+ margin-top: 10px;
+ }
+
+ .react-datepicker__week {
+ display: flex;
+ justify-content: space-around;
+ margin-bottom: 10px;
+ }
+
+ .react-datepicker__day {
+ width: 30px;
+ height: 30px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 14px;
+ border-radius: 4px;
+ cursor: pointer;
+ transition: background-color 0.3s;
+
+ &:hover {
+ background-color: rgb(74 131 169);
+ color: #ffffff;
+ }
+ }
+
+ .react-datepicker__month {
+ padding: 10px;
+ }
+
+ .react-datepicker__day--selected {
+ background-color: #3498db;
+ color: #ffffff;
+ }
+
+ .react-datepicker__day--keyboard-selected {
+ background-color: #3498db;
+ color: #ffffff;
+ }
+`;
+
+export default StyledDatePickerWrapper;
diff --git a/src/components/Datepicker/Datepicker.test.tsx b/src/components/Datepicker/Datepicker.test.tsx
new file mode 100644
index 0000000..77b4364
--- /dev/null
+++ b/src/components/Datepicker/Datepicker.test.tsx
@@ -0,0 +1,10 @@
+import React from "react";
+import {render} from "../test-utils";
+
+import DatePicker from "./DatePicker";
+
+describe("DatePicker", () => {
+ test("renders the DatePicker component", () => {
+ render();
+ });
+});
diff --git a/src/components/Datepicker/Datepicker.tsx b/src/components/Datepicker/Datepicker.tsx
new file mode 100644
index 0000000..7920b78
--- /dev/null
+++ b/src/components/Datepicker/Datepicker.tsx
@@ -0,0 +1,208 @@
+import React, {useState, useEffect} from "react";
+//@ts-ignore
+import {default as ReactDatePicker, registerLocale} from "react-datepicker";
+import enGB from "date-fns/locale/en-GB";
+import StyledDatePickerWrapper from "./DatePicker.styles";
+import Popover from "../Popover";
+import Button from "../Button";
+import Box from "../Box";
+import ClickAwayListener from "../ClickAwayListener";
+import Typography from "../Typography";
+import {customStyles} from "../../core/styleFunctions";
+import {Placement} from "@popperjs/core";
+
+export interface DatePickerProps {
+ defaultDate?: Date | null;
+ defaultTime?: string;
+ /**
+ * Callback fired when the date changes
+ */
+ onChange?: (date: Date | null) => void;
+ onTimeChange?: (time: string, date: Date | null) => void;
+ onClose?: () => void;
+ popoverCs?: customStyles;
+ hasTime?: boolean;
+ placement?: Placement;
+ anchorEl?: React.RefObject;
+ "data-cy"?: string;
+ "data-cy-today"?: string;
+ "data-cy-clear"?: string;
+}
+
+interface TimePickerProps {
+ selectedTime: string; // Assuming selectedTime is a string in the format "HH:mm"
+ selectedDate?: Date | null;
+ onTimeChange: (time: string, date: Date | null) => void;
+}
+
+const TimePicker: React.FC = ({
+ selectedTime,
+ selectedDate = null,
+ onTimeChange,
+}) => {
+ const [inputValue, setInputValue] = useState(selectedTime);
+
+ useEffect(() => {
+ if (selectedTime && selectedTime.includes("NA")) {
+ setInputValue("");
+ } else {
+ setInputValue(selectedTime.substring(0, 5));
+ }
+ }, [selectedTime]);
+
+ const handleInputChange = (event: React.ChangeEvent) => {
+ const newTime = event.target.value;
+ setInputValue(newTime);
+
+ if (onTimeChange) {
+ onTimeChange(newTime, selectedDate);
+ }
+ };
+
+ return (
+
+
+ Time:
+
+
+
+ );
+};
+
+/**
+ * `DatePicker` Describe what it does
+ *
+ * Component Demo: [DatePicker](https://ui.govconnex.com/?path=/story/components-DatePicker--example)
+ *
+ */
+const DatePicker = ({
+ defaultDate = null,
+ defaultTime = "",
+ onChange,
+ onTimeChange,
+ onClose,
+ popoverCs,
+ hasTime = false,
+ placement = "bottom-start",
+ anchorEl,
+ "data-cy": dataCy = "date-picker-popover",
+ "data-cy-clear": dataCyClear = "date-picker-clear-button",
+ "data-cy-today": dataCyToday = "date-picker-today-button",
+}: DatePickerProps) => {
+ const [selectedDate, setSelectedDate] = useState(defaultDate || null);
+ const [selectedTime, setSelectedTime] = useState(defaultTime);
+
+ useEffect(() => {
+ registerLocale("es", enGB);
+ }, []);
+
+ const handleDateChange = (date: Date | null) => {
+ setSelectedDate(date);
+ if (onChange) {
+ onChange(date);
+ }
+ };
+
+ const handleClear = () => {
+ setSelectedDate(null);
+ if (onChange) {
+ onChange(null);
+ }
+
+ if (hasTime) {
+ // need seconds to update time element in the component and trigger useeffect
+ const seconds = new Date().getSeconds();
+ const todaysTime = `NA:${seconds.toString().padStart(2, "0")}`;
+ setSelectedTime(todaysTime);
+ if (onTimeChange) {
+ onTimeChange("", null);
+ }
+ }
+ };
+
+ const handleToday = () => {
+ const todaysDate = new Date();
+ setSelectedDate(todaysDate);
+
+ const hours = todaysDate.getHours();
+ const minutes = todaysDate.getMinutes();
+ const seconds = todaysDate.getSeconds();
+
+ // need seconds to update time element in the component and trigger useeffect
+ const todaysTime = `${hours.toString().padStart(2, "0")}:${minutes
+ .toString()
+ .padStart(2, "0")}:${seconds.toString().padStart(2, "0")}`;
+ setSelectedTime(todaysTime);
+
+ if (onChange) {
+ onChange(todaysDate);
+ }
+
+ if (onTimeChange && hasTime) {
+ onTimeChange(todaysTime.substring(0, 5), todaysDate);
+ }
+ };
+
+ const handleClickaway = () => {
+ onClose && onClose();
+ };
+
+ return (
+
+
+
+
+
+ {hasTime && (
+ {})}
+ />
+ )}
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default DatePicker;
diff --git a/src/components/Datepicker/index.ts b/src/components/Datepicker/index.ts
new file mode 100644
index 0000000..11c7f84
--- /dev/null
+++ b/src/components/Datepicker/index.ts
@@ -0,0 +1 @@
+export {default} from "./DatePicker";
diff --git a/src/components/index.ts b/src/components/index.ts
index 2b8e229..9e126b4 100644
--- a/src/components/index.ts
+++ b/src/components/index.ts
@@ -1,4 +1,5 @@
export {default as ThemeProvider} from "./ThemeProvider";
+export {default as DatePicker} from "./DatePicker";
export {default as Toggle} from "./Toggle";
export {default as PopIn} from "./PopIn";
export {default as Snackbar, PopinSnackbar as PopinSnackbar} from "./Snackbar";
diff --git a/yarn.lock b/yarn.lock
index b703514..a6aa3e9 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1295,6 +1295,13 @@
dependencies:
regenerator-runtime "^0.13.11"
+"@babel/runtime@^7.1.2", "@babel/runtime@^7.21.0":
+ version "7.24.0"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.0.tgz#584c450063ffda59697021430cb47101b085951e"
+ integrity sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==
+ dependencies:
+ regenerator-runtime "^0.14.0"
+
"@babel/runtime@^7.12.5", "@babel/runtime@^7.17.8", "@babel/runtime@^7.5.0", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
version "7.21.0"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673"
@@ -1878,6 +1885,14 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
+"@hypnosphi/create-react-context@^0.3.1":
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/@hypnosphi/create-react-context/-/create-react-context-0.3.1.tgz#f8bfebdc7665f5d426cba3753e0e9c7d3154d7c6"
+ integrity sha512-V1klUed202XahrWJLLOT3EXNeCpFHCcJntdFGI15ntCwau+jfT386w7OFTMaCqOgXUH1fa0w/I1oZs+i/Rfr0A==
+ dependencies:
+ gud "^1.0.0"
+ warning "^4.0.3"
+
"@icons/material@^0.2.4":
version "0.2.4"
resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8"
@@ -5695,6 +5710,17 @@ call-bind@^1.0.0, call-bind@^1.0.2:
function-bind "^1.1.1"
get-intrinsic "^1.0.2"
+call-bind@^1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
+ integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
+ dependencies:
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.4"
+ set-function-length "^1.2.1"
+
call-me-maybe@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa"
@@ -5965,6 +5991,11 @@ class-utils@^0.3.5:
isobject "^3.0.0"
static-extend "^0.1.1"
+classnames@^2.2.6:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b"
+ integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==
+
classnames@^2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924"
@@ -6714,6 +6745,13 @@ data-urls@^3.0.2:
whatwg-mimetype "^3.0.0"
whatwg-url "^11.0.0"
+date-fns@^2.0.1:
+ version "2.30.0"
+ resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0"
+ integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==
+ dependencies:
+ "@babel/runtime" "^7.21.0"
+
debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@@ -6755,6 +6793,18 @@ dedent@^0.7.0:
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==
+deep-equal@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.2.tgz#78a561b7830eef3134c7f6f3a3d6af272a678761"
+ integrity sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==
+ dependencies:
+ is-arguments "^1.1.1"
+ is-date-object "^1.0.5"
+ is-regex "^1.1.4"
+ object-is "^1.1.5"
+ object-keys "^1.1.1"
+ regexp.prototype.flags "^1.5.1"
+
deep-equal@^2.0.2, deep-equal@^2.0.5:
version "2.2.0"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.0.tgz#5caeace9c781028b9ff459f33b779346637c43e6"
@@ -6804,6 +6854,15 @@ defaults@^1.0.3:
dependencies:
clone "^1.0.2"
+define-data-property@^1.0.1, define-data-property@^1.1.2, define-data-property@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
+ integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
+ dependencies:
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ gopd "^1.0.1"
+
define-lazy-prop@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
@@ -6817,6 +6876,15 @@ define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4:
has-property-descriptors "^1.0.0"
object-keys "^1.1.1"
+define-properties@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c"
+ integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
+ dependencies:
+ define-data-property "^1.0.1"
+ 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"
@@ -7235,6 +7303,18 @@ es-array-method-boxes-properly@^1.0.0:
resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e"
integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==
+es-define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845"
+ integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==
+ dependencies:
+ get-intrinsic "^1.2.4"
+
+es-errors@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
+ integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
+
es-get-iterator@^1.0.2, es-get-iterator@^1.1.2:
version "1.1.3"
resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6"
@@ -8270,6 +8350,11 @@ function-bind@^1.1.1:
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+function-bind@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
+ integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
+
function.prototype.name@^1.1.0, 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"
@@ -8280,7 +8365,7 @@ function.prototype.name@^1.1.0, function.prototype.name@^1.1.5:
es-abstract "^1.19.0"
functions-have-names "^1.2.2"
-functions-have-names@^1.2.2:
+functions-have-names@^1.2.2, functions-have-names@^1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
@@ -8326,6 +8411,17 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@
has "^1.0.3"
has-symbols "^1.0.3"
+get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
+ integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
+ dependencies:
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ has-proto "^1.0.1"
+ has-symbols "^1.0.3"
+ hasown "^2.0.0"
+
get-package-type@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
@@ -8556,6 +8652,11 @@ graphemer@^1.4.0:
resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
+gud@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0"
+ integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==
+
handlebars@^4.4.3, handlebars@^4.7.7:
version "4.7.7"
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
@@ -8604,6 +8705,13 @@ has-property-descriptors@^1.0.0:
dependencies:
get-intrinsic "^1.1.1"
+has-property-descriptors@^1.0.1, has-property-descriptors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
+ integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
+ dependencies:
+ es-define-property "^1.0.0"
+
has-proto@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0"
@@ -8681,6 +8789,13 @@ hash.js@^1.0.0, hash.js@^1.0.3:
inherits "^2.0.3"
minimalistic-assert "^1.0.1"
+hasown@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa"
+ integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==
+ dependencies:
+ function-bind "^1.1.2"
+
hast-to-hyperscript@^9.0.0:
version "9.0.1"
resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d"
@@ -12168,6 +12283,11 @@ polished@^4.2.2:
dependencies:
"@babel/runtime" "^7.17.8"
+popper.js@^1.14.4:
+ version "1.16.1"
+ resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b"
+ integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==
+
posix-character-classes@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
@@ -12651,7 +12771,7 @@ prompts@^2.0.1, prompts@^2.4.0:
kleur "^3.0.3"
sisteransi "^1.0.5"
-prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
+prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.1, 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"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
@@ -12899,6 +13019,17 @@ react-color@^2.18.0:
reactcss "^1.2.0"
tinycolor2 "^1.4.1"
+react-datepicker@^2.14.0:
+ version "2.16.0"
+ resolved "https://registry.yarnpkg.com/react-datepicker/-/react-datepicker-2.16.0.tgz#6bd68de94f5fb38c8f6a4370f3c612837c700e4e"
+ integrity sha512-TvcmSY27rn0JKvuJuIXNNS+niGQNdgtuG/CsBttVYhPOA9KmSw7c2PvQBPVEvzkyV+QPNJ8jN/KVJNj9uvopqA==
+ dependencies:
+ classnames "^2.2.6"
+ date-fns "^2.0.1"
+ prop-types "^15.7.2"
+ react-onclickoutside "^6.9.0"
+ react-popper "^1.3.4"
+
react-docgen-typescript-plugin@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.5.tgz#015d8350b06a450d98000080d8ae5eac475e9f79"
@@ -12999,6 +13130,24 @@ react-merge-refs@^1.0.0:
resolved "https://registry.yarnpkg.com/react-merge-refs/-/react-merge-refs-1.1.0.tgz#73d88b892c6c68cbb7a66e0800faa374f4c38b06"
integrity sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==
+react-onclickoutside@^6.9.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/react-onclickoutside/-/react-onclickoutside-6.13.0.tgz#e165ea4e5157f3da94f4376a3ab3e22a565f4ffc"
+ integrity sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A==
+
+react-popper@^1.3.4:
+ version "1.3.11"
+ resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-1.3.11.tgz#a2cc3f0a67b75b66cfa62d2c409f9dd1fcc71ffd"
+ integrity sha512-VSA/bS+pSndSF2fiasHK/PTEEAyOpX60+H5EPAjoArr8JGm+oihu4UbrqcEBpQibJxBVCpYyjAX7abJ+7DoYVg==
+ dependencies:
+ "@babel/runtime" "^7.1.2"
+ "@hypnosphi/create-react-context" "^0.3.1"
+ deep-equal "^1.1.1"
+ popper.js "^1.14.4"
+ prop-types "^15.6.1"
+ typed-styles "^0.0.7"
+ warning "^4.0.2"
+
react-popper@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-2.3.0.tgz#17891c620e1320dce318bad9fede46a5f71c70ba"
@@ -13204,6 +13353,16 @@ regexp.prototype.flags@^1.4.3:
define-properties "^1.1.3"
functions-have-names "^1.2.2"
+regexp.prototype.flags@^1.5.1:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334"
+ integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==
+ dependencies:
+ call-bind "^1.0.6"
+ define-properties "^1.2.1"
+ es-errors "^1.3.0"
+ set-function-name "^2.0.1"
+
regexpu-core@^5.3.1:
version "5.3.1"
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.1.tgz#66900860f88def39a5cb79ebd9490e84f17bcdfb"
@@ -13842,6 +14001,28 @@ set-blocking@^2.0.0:
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
+set-function-length@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425"
+ integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==
+ dependencies:
+ define-data-property "^1.1.2"
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.3"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.1"
+
+set-function-name@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985"
+ integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==
+ dependencies:
+ define-data-property "^1.1.4"
+ es-errors "^1.3.0"
+ functions-have-names "^1.2.3"
+ has-property-descriptors "^1.0.2"
+
set-value@^2.0.0, set-value@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
@@ -14901,6 +15082,11 @@ typed-array-length@^1.0.4:
for-each "^0.3.3"
is-typed-array "^1.1.9"
+typed-styles@^0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/typed-styles/-/typed-styles-0.0.7.tgz#93392a008794c4595119ff62dde6809dbc40a3d9"
+ integrity sha512-pzP0PWoZUhsECYjABgCGQlRGL1n7tOHsgwYv3oIiEpJwGhFTuty/YNeduxQYzXXa3Ge5BdT6sHYIQYpl4uJ+5Q==
+
typedarray-to-buffer@^3.1.5:
version "3.1.5"
resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
@@ -15319,7 +15505,7 @@ walker@^1.0.7, walker@^1.0.8, walker@~1.0.5:
dependencies:
makeerror "1.0.12"
-warning@^4.0.2:
+warning@^4.0.2, warning@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3"
integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==