@simplybusiness/mobius-datepicker 4.0.0-beta.7 → 4.0.0-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/NewDatePicker/DatePickerIcon.d.ts +1 -0
- package/dist/cjs/components/NewDatePicker/DatePickerIcon.js +7 -0
- package/dist/cjs/components/NewDatePicker/DatePickerIcon.js.map +1 -0
- package/dist/cjs/components/NewDatePicker/DatePickerModal.d.ts +7 -0
- package/dist/cjs/components/NewDatePicker/DatePickerModal.js +35 -0
- package/dist/cjs/components/NewDatePicker/DatePickerModal.js.map +1 -0
- package/dist/cjs/components/NewDatePicker/NewDatePicker.d.ts +7 -0
- package/dist/cjs/components/NewDatePicker/NewDatePicker.js +73 -0
- package/dist/cjs/components/NewDatePicker/NewDatePicker.js.map +1 -0
- package/dist/cjs/components/NewDatePicker/NewDatePicker.stories.d.ts +27 -0
- package/dist/cjs/components/NewDatePicker/NewDatePicker.stories.js +32 -0
- package/dist/cjs/components/NewDatePicker/NewDatePicker.stories.js.map +1 -0
- package/dist/cjs/components/NewDatePicker/NewDatePicker.test.d.ts +1 -0
- package/dist/cjs/components/NewDatePicker/NewDatePicker.test.js +80 -0
- package/dist/cjs/components/NewDatePicker/NewDatePicker.test.js.map +1 -0
- package/dist/cjs/components/NewDatePicker/constants.d.ts +2 -0
- package/dist/cjs/components/NewDatePicker/constants.js +7 -0
- package/dist/cjs/components/NewDatePicker/constants.js.map +1 -0
- package/dist/cjs/components/NewDatePicker/dateObjToString.d.ts +1 -0
- package/dist/cjs/components/NewDatePicker/dateObjToString.js +7 -0
- package/dist/cjs/components/NewDatePicker/dateObjToString.js.map +1 -0
- package/dist/cjs/components/NewDatePicker/dateObjToString.test.d.ts +1 -0
- package/dist/cjs/components/NewDatePicker/dateObjToString.test.js +15 -0
- package/dist/cjs/components/NewDatePicker/dateObjToString.test.js.map +1 -0
- package/dist/cjs/components/NewDatePicker/index.d.ts +1 -0
- package/dist/cjs/components/NewDatePicker/index.js +18 -0
- package/dist/cjs/components/NewDatePicker/index.js.map +1 -0
- package/dist/cjs/components/NewDatePicker/weekdayAsOneLetter.d.ts +2 -0
- package/dist/cjs/components/NewDatePicker/weekdayAsOneLetter.js +14 -0
- package/dist/cjs/components/NewDatePicker/weekdayAsOneLetter.js.map +1 -0
- package/dist/cjs/components/NewDatePicker/weekdayAsOneLetter.test.d.ts +1 -0
- package/dist/cjs/components/NewDatePicker/weekdayAsOneLetter.test.js +23 -0
- package/dist/cjs/components/NewDatePicker/weekdayAsOneLetter.test.js.map +1 -0
- package/dist/cjs/hooks/useFocusTrap.d.ts +5 -0
- package/dist/cjs/hooks/useFocusTrap.js +41 -0
- package/dist/cjs/hooks/useFocusTrap.js.map +1 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/utils/excludeControls.d.ts +1 -0
- package/dist/cjs/utils/excludeControls.js +29 -0
- package/dist/cjs/utils/excludeControls.js.map +1 -0
- package/dist/cjs/utils/excludeControls.test.d.ts +1 -0
- package/dist/cjs/utils/excludeControls.test.js +25 -0
- package/dist/cjs/utils/excludeControls.test.js.map +1 -0
- package/dist/cjs/utils/isTouchDevice.d.ts +1 -0
- package/dist/cjs/utils/isTouchDevice.js +11 -0
- package/dist/cjs/utils/isTouchDevice.js.map +1 -0
- package/dist/esm/components/NewDatePicker/DatePickerIcon.js +3 -0
- package/dist/esm/components/NewDatePicker/DatePickerIcon.js.map +1 -0
- package/dist/esm/components/NewDatePicker/DatePickerModal.js +28 -0
- package/dist/esm/components/NewDatePicker/DatePickerModal.js.map +1 -0
- package/dist/esm/components/NewDatePicker/NewDatePicker.js +66 -0
- package/dist/esm/components/NewDatePicker/NewDatePicker.js.map +1 -0
- package/dist/esm/components/NewDatePicker/constants.js +4 -0
- package/dist/esm/components/NewDatePicker/constants.js.map +1 -0
- package/dist/esm/components/NewDatePicker/dateObjToString.js +3 -0
- package/dist/esm/components/NewDatePicker/dateObjToString.js.map +1 -0
- package/dist/esm/components/NewDatePicker/dateObjToString.test.js +13 -0
- package/dist/esm/components/NewDatePicker/dateObjToString.test.js.map +1 -0
- package/dist/esm/components/NewDatePicker/index.js +2 -0
- package/dist/esm/components/NewDatePicker/index.js.map +1 -0
- package/dist/esm/components/NewDatePicker/weekdayAsOneLetter.js +10 -0
- package/dist/esm/components/NewDatePicker/weekdayAsOneLetter.js.map +1 -0
- package/dist/esm/components/NewDatePicker/weekdayAsOneLetter.test.js +21 -0
- package/dist/esm/components/NewDatePicker/weekdayAsOneLetter.test.js.map +1 -0
- package/dist/esm/hooks/useFocusTrap.js +38 -0
- package/dist/esm/hooks/useFocusTrap.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/utils/excludeControls.js +25 -0
- package/dist/esm/utils/excludeControls.js.map +1 -0
- package/dist/esm/utils/excludeControls.test.js +23 -0
- package/dist/esm/utils/excludeControls.test.js.map +1 -0
- package/dist/esm/utils/isTouchDevice.js +7 -0
- package/dist/esm/utils/isTouchDevice.js.map +1 -0
- package/package.json +6 -4
- package/src/components/NewDatePicker/DatePickerIcon.tsx +1 -0
- package/src/components/NewDatePicker/DatePickerModal.tsx +69 -0
- package/src/components/NewDatePicker/NewDatePicker.mdx +521 -0
- package/src/components/NewDatePicker/NewDatePicker.stories.tsx +46 -0
- package/src/components/NewDatePicker/NewDatePicker.test.tsx +121 -0
- package/src/components/NewDatePicker/NewDatePicker.tsx +119 -0
- package/src/components/NewDatePicker/constants.ts +3 -0
- package/src/components/NewDatePicker/dateObjToString.test.ts +17 -0
- package/src/components/NewDatePicker/dateObjToString.ts +3 -0
- package/src/components/NewDatePicker/index.tsx +1 -0
- package/src/components/NewDatePicker/weekdayAsOneLetter.test.ts +28 -0
- package/src/components/NewDatePicker/weekdayAsOneLetter.ts +11 -0
- package/src/hooks/useFocusTrap.tsx +55 -0
- package/src/utils/excludeControls.test.ts +26 -0
- package/src/utils/excludeControls.ts +28 -0
- package/src/utils/isTouchDevice.ts +7 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const DatePickerIcon: () => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DatePickerIcon = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const DatePickerIcon = () => (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: " " });
|
|
6
|
+
exports.DatePickerIcon = DatePickerIcon;
|
|
7
|
+
//# sourceMappingURL=DatePickerIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePickerIcon.js","sourceRoot":"","sources":["../../../../src/components/NewDatePicker/DatePickerIcon.tsx"],"names":[],"mappings":";;;;AAAO,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,iEAAM,CAAC;AAA9B,QAAA,cAAc,kBAAgB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type DatePickerModalProps = {
|
|
2
|
+
date?: string;
|
|
3
|
+
isOpen: boolean;
|
|
4
|
+
onSelected: (date: string) => void;
|
|
5
|
+
top: number;
|
|
6
|
+
};
|
|
7
|
+
export declare const DatePickerModal: ({ date, isOpen, onSelected, top, }: DatePickerModalProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.DatePickerModal = void 0;
|
|
8
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
9
|
+
const mobius_1 = require("@simplybusiness/mobius");
|
|
10
|
+
const dedupe_1 = __importDefault(require("classnames/dedupe"));
|
|
11
|
+
const react_1 = require("react");
|
|
12
|
+
const react_day_picker_1 = require("react-day-picker");
|
|
13
|
+
const useFocusTrap_1 = __importDefault(require("../../hooks/useFocusTrap"));
|
|
14
|
+
const DatePickerIcon_1 = require("./DatePickerIcon");
|
|
15
|
+
const constants_1 = require("./constants");
|
|
16
|
+
const dateObjToString_1 = require("./dateObjToString");
|
|
17
|
+
const weekdayAsOneLetter_1 = require("./weekdayAsOneLetter");
|
|
18
|
+
const DatePickerModal = ({ date, isOpen, onSelected, top, }) => {
|
|
19
|
+
const modalRef = (0, react_1.useRef)(null);
|
|
20
|
+
const initialDate = date ? new Date(date) : new Date();
|
|
21
|
+
const handleDayPickerSelect = (selectedDate) => {
|
|
22
|
+
if (!selectedDate)
|
|
23
|
+
return;
|
|
24
|
+
onSelected((0, dateObjToString_1.dateObjToString)(selectedDate));
|
|
25
|
+
};
|
|
26
|
+
const modalClasses = (0, dedupe_1.default)("mobius/DatePickerModal", {
|
|
27
|
+
"--is-open": isOpen,
|
|
28
|
+
});
|
|
29
|
+
return ((0, jsx_runtime_1.jsx)(useFocusTrap_1.default, { children: (0, jsx_runtime_1.jsxs)("div", { ref: modalRef, className: modalClasses, style: { top }, "aria-describedby": "screen-reader-title", children: [(0, jsx_runtime_1.jsx)(mobius_1.VisuallyHidden, { children: (0, jsx_runtime_1.jsx)("div", { id: "screen-reader-title", children: "Please select a date from the calendar" }) }), (0, jsx_runtime_1.jsx)(react_day_picker_1.DayPicker, { mode: "single", selected: initialDate, defaultMonth: initialDate, onSelect: handleDayPickerSelect, pagedNavigation: true, showOutsideDays: true, weekStartsOn: constants_1.MONDAY_AS_NUMBER, formatters: { formatWeekdayName: weekdayAsOneLetter_1.weekdayAsOneLetter }, components: {
|
|
30
|
+
IconLeft: DatePickerIcon_1.DatePickerIcon,
|
|
31
|
+
IconRight: DatePickerIcon_1.DatePickerIcon,
|
|
32
|
+
} })] }) }));
|
|
33
|
+
};
|
|
34
|
+
exports.DatePickerModal = DatePickerModal;
|
|
35
|
+
//# sourceMappingURL=DatePickerModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePickerModal.js","sourceRoot":"","sources":["../../../../src/components/NewDatePicker/DatePickerModal.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;AAEb,mDAAwD;AACxD,+DAA2C;AAC3C,iCAA+B;AAC/B,uDAA6C;AAC7C,4EAAiD;AACjD,qDAAkD;AAClD,2CAA+C;AAC/C,uDAAoD;AACpD,6DAA0D;AASnD,MAAM,eAAe,GAAG,CAAC,EAC9B,IAAI,EACJ,MAAM,EACN,UAAU,EACV,GAAG,GACkB,EAAE,EAAE;IACzB,MAAM,QAAQ,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IAEvD,MAAM,qBAAqB,GAAG,CAAC,YAA8B,EAAE,EAAE;QAC/D,IAAI,CAAC,YAAY;YAAE,OAAO;QAE1B,UAAU,CAAC,IAAA,iCAAe,EAAC,YAAY,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,gBAAU,EAAC,wBAAwB,EAAE;QACxD,WAAW,EAAE,MAAM;KACpB,CAAC,CAAC;IAEH,OAAO,CACL,uBAAC,sBAAS,cACR,iCACE,GAAG,EAAE,QAAQ,EACb,SAAS,EAAE,YAAY,EACvB,KAAK,EAAE,EAAE,GAAG,EAAE,sBACG,qBAAqB,aAEtC,uBAAC,uBAAc,cACb,gCAAK,EAAE,EAAC,qBAAqB,uDAEvB,GACS,EACjB,uBAAC,4BAAS,IACR,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,WAAW,EACrB,YAAY,EAAE,WAAW,EACzB,QAAQ,EAAE,qBAAqB,EAC/B,eAAe,QACf,eAAe,QACf,YAAY,EAAE,4BAAgB,EAC9B,UAAU,EAAE,EAAE,iBAAiB,EAAE,uCAAkB,EAAE,EACrD,UAAU,EAAE;wBACV,QAAQ,EAAE,+BAAc;wBACxB,SAAS,EAAE,+BAAc;qBAC1B,GACD,IACE,GACI,CACb,CAAC;AACJ,CAAC,CAAC;AAjDW,QAAA,eAAe,mBAiD1B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { TextFieldProps } from "@simplybusiness/mobius";
|
|
2
|
+
export interface NewDatePickerProps extends Omit<TextFieldProps, "defaultValue" | "onChange"> {
|
|
3
|
+
onChange?: (date: string) => void;
|
|
4
|
+
defaultValue?: string;
|
|
5
|
+
id?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const NewDatePicker: (props: NewDatePickerProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
4
|
+
var t = {};
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
8
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
9
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
10
|
+
t[p[i]] = s[p[i]];
|
|
11
|
+
}
|
|
12
|
+
return t;
|
|
13
|
+
};
|
|
14
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
15
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
16
|
+
};
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.NewDatePicker = void 0;
|
|
19
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
20
|
+
const mobius_1 = require("@simplybusiness/mobius");
|
|
21
|
+
const dedupe_1 = __importDefault(require("classnames/dedupe"));
|
|
22
|
+
const react_1 = require("react");
|
|
23
|
+
const isTouchDevice_1 = require("../../utils/isTouchDevice");
|
|
24
|
+
const DatePickerModal_1 = require("./DatePickerModal");
|
|
25
|
+
const NewDatePicker = (props) => {
|
|
26
|
+
const { onChange, defaultValue = "", isDisabled, validationState } = props, otherProps = __rest(props, ["onChange", "defaultValue", "isDisabled", "validationState"]);
|
|
27
|
+
const ref = (0, react_1.useRef)(null);
|
|
28
|
+
const [top, setTop] = (0, react_1.useState)(0);
|
|
29
|
+
const [isOpen, setIsOpen] = (0, react_1.useState)(false);
|
|
30
|
+
const [textFieldVal, setTextFieldVal] = (0, react_1.useState)(defaultValue); // yyyy-MM-dd
|
|
31
|
+
const touchDevice = (0, isTouchDevice_1.isTouchDevice)();
|
|
32
|
+
const containerClasses = (0, dedupe_1.default)("mobius/DatePickerContainer", {
|
|
33
|
+
"--is-disabled": isDisabled,
|
|
34
|
+
"--is-valid": validationState === "valid",
|
|
35
|
+
"--is-invalid": validationState === "invalid",
|
|
36
|
+
});
|
|
37
|
+
const popoverToggleClasses = (0, dedupe_1.default)("mobius/DateFieldButton", {
|
|
38
|
+
"--is-valid": validationState === "valid",
|
|
39
|
+
"--is-invalid": validationState === "invalid",
|
|
40
|
+
});
|
|
41
|
+
const setPopoverPosition = () => {
|
|
42
|
+
if (!ref.current || isOpen)
|
|
43
|
+
return;
|
|
44
|
+
const refHeight = ref.current.getBoundingClientRect().height;
|
|
45
|
+
setTop(refHeight);
|
|
46
|
+
};
|
|
47
|
+
const togglePopoverVisibility = () => {
|
|
48
|
+
setIsOpen(!isOpen);
|
|
49
|
+
setPopoverPosition();
|
|
50
|
+
};
|
|
51
|
+
const handleTextFieldChange = (event) => {
|
|
52
|
+
setTextFieldVal(event.target.value);
|
|
53
|
+
};
|
|
54
|
+
const onDateSelected = (selectedDate) => {
|
|
55
|
+
setTextFieldVal(selectedDate);
|
|
56
|
+
setIsOpen(false);
|
|
57
|
+
};
|
|
58
|
+
// When user manually types in date,
|
|
59
|
+
// select date when popover becomes visible
|
|
60
|
+
(0, react_1.useEffect)(() => {
|
|
61
|
+
if (!textFieldVal)
|
|
62
|
+
return;
|
|
63
|
+
if (onChange) {
|
|
64
|
+
onChange(textFieldVal);
|
|
65
|
+
}
|
|
66
|
+
}, [textFieldVal, onChange]);
|
|
67
|
+
if (touchDevice) {
|
|
68
|
+
return ((0, jsx_runtime_1.jsx)(mobius_1.TextField, Object.assign({ type: "date", onChange: handleTextFieldChange, value: textFieldVal, isDisabled: isDisabled, validationState: validationState }, otherProps)));
|
|
69
|
+
}
|
|
70
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: containerClasses, ref: ref, children: [(0, jsx_runtime_1.jsx)(mobius_1.TextField, Object.assign({ type: "date", className: "mobius/DatePicker", onChange: handleTextFieldChange, value: textFieldVal, isDisabled: isDisabled, validationState: validationState }, otherProps)), (0, jsx_runtime_1.jsx)(mobius_1.Button, { className: popoverToggleClasses, onClick: togglePopoverVisibility, isDisabled: isDisabled, children: (0, jsx_runtime_1.jsx)(mobius_1.VisuallyHidden, { children: "Pick date" }) }), isOpen && ((0, jsx_runtime_1.jsx)(DatePickerModal_1.DatePickerModal, { date: textFieldVal, isOpen: isOpen, top: top, onSelected: onDateSelected }))] }));
|
|
71
|
+
};
|
|
72
|
+
exports.NewDatePicker = NewDatePicker;
|
|
73
|
+
//# sourceMappingURL=NewDatePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NewDatePicker.js","sourceRoot":"","sources":["../../../../src/components/NewDatePicker/NewDatePicker.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;AAEb,mDAMgC;AAChC,+DAA2C;AAC3C,iCAAiE;AACjE,6DAA0D;AAC1D,uDAAoD;AAS7C,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAE,EAAE;IACzD,MAAM,EACJ,QAAQ,EACR,YAAY,GAAG,EAAE,EACjB,UAAU,EACV,eAAe,KAEb,KAAK,EADJ,UAAU,UACX,KAAK,EANH,6DAML,CAAQ,CAAC;IACV,MAAM,GAAG,GAAG,IAAA,cAAM,EAA8B,IAAI,CAAC,CAAC;IACtD,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAA,gBAAQ,EAAS,CAAC,CAAC,CAAC;IAC1C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAU,KAAK,CAAC,CAAC;IACrD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAS,YAAY,CAAC,CAAC,CAAC,aAAa;IACrF,MAAM,WAAW,GAAG,IAAA,6BAAa,GAAE,CAAC;IAEpC,MAAM,gBAAgB,GAAG,IAAA,gBAAU,EAAC,4BAA4B,EAAE;QAChE,eAAe,EAAE,UAAU;QAC3B,YAAY,EAAE,eAAe,KAAK,OAAO;QACzC,cAAc,EAAE,eAAe,KAAK,SAAS;KAC9C,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,IAAA,gBAAU,EAAC,wBAAwB,EAAE;QAChE,YAAY,EAAE,eAAe,KAAK,OAAO;QACzC,cAAc,EAAE,eAAe,KAAK,SAAS;KAC9C,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,MAAM;YAAE,OAAO;QAEnC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;QAE7D,MAAM,CAAC,SAAS,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,uBAAuB,GAAG,GAAG,EAAE;QACnC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;QACnB,kBAAkB,EAAE,CAAC;IACvB,CAAC,CAAC;IAEF,MAAM,qBAAqB,GAAG,CAAC,KAAwC,EAAE,EAAE;QACzE,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,YAAoB,EAAE,EAAE;QAC9C,eAAe,CAAC,YAAY,CAAC,CAAC;QAC9B,SAAS,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,oCAAoC;IACpC,2CAA2C;IAC3C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,YAAY;YAAE,OAAO;QAC1B,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,YAAY,CAAC,CAAC;SACxB;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE7B,IAAI,WAAW,EAAE;QACf,OAAO,CACL,uBAAC,kBAAS,kBACR,IAAI,EAAC,MAAM,EACX,QAAQ,EAAE,qBAAqB,EAC/B,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,IAC5B,UAAU,EACd,CACH,CAAC;KACH;IAED,OAAO,CACL,iCAAK,SAAS,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,aACxC,uBAAC,kBAAS,kBACR,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,mBAAmB,EAC7B,QAAQ,EAAE,qBAAqB,EAC/B,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,IAC5B,UAAU,EACd,EACF,uBAAC,eAAM,IACL,SAAS,EAAE,oBAAoB,EAC/B,OAAO,EAAE,uBAAuB,EAChC,UAAU,EAAE,UAAU,YAEtB,uBAAC,uBAAc,4BAA2B,GACnC,EACR,MAAM,IAAI,CACT,uBAAC,iCAAe,IACd,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,cAAc,GAC1B,CACH,IACG,CACP,CAAC;AACJ,CAAC,CAAC;AAjGW,QAAA,aAAa,iBAiGxB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Meta } from "@storybook/react";
|
|
2
|
+
import { NewDatePicker, NewDatePickerProps } from "./NewDatePicker";
|
|
3
|
+
declare const _default: {
|
|
4
|
+
title: string;
|
|
5
|
+
component: (props: NewDatePickerProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
argTypes: {
|
|
7
|
+
validationState: {
|
|
8
|
+
options: string[];
|
|
9
|
+
control: {
|
|
10
|
+
type: string;
|
|
11
|
+
};
|
|
12
|
+
mapping: {
|
|
13
|
+
valid: string;
|
|
14
|
+
invalid: string;
|
|
15
|
+
neither: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
args: {
|
|
20
|
+
defaultValue: string;
|
|
21
|
+
errorMessage: string;
|
|
22
|
+
isDisabled: boolean;
|
|
23
|
+
isRequired: boolean;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export default _default;
|
|
27
|
+
export declare const Normal: Meta<typeof NewDatePicker>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Normal = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const excludeControls_1 = require("../../utils/excludeControls");
|
|
6
|
+
const NewDatePicker_1 = require("./NewDatePicker");
|
|
7
|
+
exports.default = {
|
|
8
|
+
title: "Forms/NewDatePicker",
|
|
9
|
+
component: NewDatePicker_1.NewDatePicker,
|
|
10
|
+
argTypes: Object.assign({ validationState: {
|
|
11
|
+
options: ["valid", "invalid", "neither"],
|
|
12
|
+
control: { type: "radio" },
|
|
13
|
+
mapping: {
|
|
14
|
+
valid: "valid",
|
|
15
|
+
invalid: "invalid",
|
|
16
|
+
neither: "",
|
|
17
|
+
},
|
|
18
|
+
} }, (0, excludeControls_1.excludeControls)("onChange", "id", "className", "description", "type", "aria-label", "aria-labelledby", "labelElementType", "inputElementType", "isReadOnly", "aria-describedby", "aria-errormessage")),
|
|
19
|
+
args: {
|
|
20
|
+
defaultValue: "",
|
|
21
|
+
errorMessage: "",
|
|
22
|
+
isDisabled: false,
|
|
23
|
+
isRequired: false,
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
exports.Normal = {
|
|
27
|
+
render: (args) => (0, jsx_runtime_1.jsx)(NewDatePicker_1.NewDatePicker, Object.assign({}, args)),
|
|
28
|
+
args: {
|
|
29
|
+
label: "Start date",
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=NewDatePicker.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NewDatePicker.stories.js","sourceRoot":"","sources":["../../../../src/components/NewDatePicker/NewDatePicker.stories.tsx"],"names":[],"mappings":";;;;AACA,iEAA8D;AAC9D,mDAAoE;AAEpE,kBAAe;IACb,KAAK,EAAE,qBAAqB;IAC5B,SAAS,EAAE,6BAAa;IACxB,QAAQ,kBACN,eAAe,EAAE;YACf,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC;YACxC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;YAC1B,OAAO,EAAE;gBACP,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE,EAAE;aACZ;SACF,IACE,IAAA,iCAAe,EAChB,UAAU,EACV,IAAI,EACJ,WAAW,EACX,aAAa,EACb,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,CACpB,CACF;IACD,IAAI,EAAE;QACJ,YAAY,EAAE,EAAE;QAChB,YAAY,EAAE,EAAE;QAChB,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,KAAK;KAClB;CACF,CAAC;AAEW,QAAA,MAAM,GAA+B;IAChD,MAAM,EAAE,CAAC,IAAwB,EAAE,EAAE,CAAC,uBAAC,6BAAa,oBAAK,IAAI,EAAI;IACjE,IAAI,EAAE;QACJ,KAAK,EAAE,YAAY;KACpB;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
const react_1 = require("@testing-library/react");
|
|
5
|
+
const _1 = require(".");
|
|
6
|
+
const mockMatchMedia = (matches) => {
|
|
7
|
+
Object.defineProperty(window, "matchMedia", {
|
|
8
|
+
writable: true,
|
|
9
|
+
configurable: true,
|
|
10
|
+
value: jest.fn().mockImplementation(query => ({
|
|
11
|
+
matches,
|
|
12
|
+
media: query,
|
|
13
|
+
onchange: null,
|
|
14
|
+
addListener: jest.fn(),
|
|
15
|
+
removeListener: jest.fn(),
|
|
16
|
+
addEventListener: jest.fn(),
|
|
17
|
+
removeEventListener: jest.fn(),
|
|
18
|
+
dispatchEvent: jest.fn(),
|
|
19
|
+
})),
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
describe("NewDatePicker", () => {
|
|
23
|
+
describe("given it is a touch device", () => {
|
|
24
|
+
beforeEach(() => {
|
|
25
|
+
mockMatchMedia(true);
|
|
26
|
+
});
|
|
27
|
+
it("should render without errors", () => {
|
|
28
|
+
const exampleDate = "2023-11-13";
|
|
29
|
+
const labelText = "Start date";
|
|
30
|
+
const testId = "date-picker";
|
|
31
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(_1.NewDatePicker, { defaultValue: exampleDate, label: labelText, "data-testid": testId }));
|
|
32
|
+
const inputField = react_1.screen.getByTestId(testId);
|
|
33
|
+
const label = react_1.screen.getByLabelText(labelText);
|
|
34
|
+
expect(inputField).toHaveValue(exampleDate);
|
|
35
|
+
expect(label).toBeInTheDocument();
|
|
36
|
+
});
|
|
37
|
+
describe("when value changes", () => {
|
|
38
|
+
it("triggers onChange", () => {
|
|
39
|
+
const labelText = "Start date";
|
|
40
|
+
const testId = "date-picker";
|
|
41
|
+
const onChange = jest.fn();
|
|
42
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(_1.NewDatePicker, { label: labelText, "data-testid": testId, onChange: onChange }));
|
|
43
|
+
const inputField = react_1.screen.getByTestId(testId);
|
|
44
|
+
const newDate = "2015-06-01";
|
|
45
|
+
react_1.fireEvent.change(inputField, { target: { value: newDate } });
|
|
46
|
+
expect(inputField).toHaveValue(newDate);
|
|
47
|
+
expect(onChange).toHaveBeenCalledWith(newDate);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
describe("given it is a non-touch device", () => {
|
|
52
|
+
beforeEach(() => {
|
|
53
|
+
mockMatchMedia(false);
|
|
54
|
+
});
|
|
55
|
+
it("should render without errors", () => {
|
|
56
|
+
const exampleDate = "2023-11-13";
|
|
57
|
+
const labelText = "Start date";
|
|
58
|
+
const testId = "date-picker";
|
|
59
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(_1.NewDatePicker, { defaultValue: exampleDate, label: labelText, "data-testid": testId }));
|
|
60
|
+
const inputField = react_1.screen.getByTestId(testId);
|
|
61
|
+
const label = react_1.screen.getByLabelText(labelText);
|
|
62
|
+
expect(inputField).toHaveValue(exampleDate);
|
|
63
|
+
expect(label).toBeInTheDocument();
|
|
64
|
+
});
|
|
65
|
+
describe("when value changes", () => {
|
|
66
|
+
it("triggers onChange", () => {
|
|
67
|
+
const labelText = "Start date";
|
|
68
|
+
const testId = "date-picker";
|
|
69
|
+
const onChange = jest.fn();
|
|
70
|
+
(0, react_1.render)((0, jsx_runtime_1.jsx)(_1.NewDatePicker, { label: labelText, "data-testid": testId, onChange: onChange }));
|
|
71
|
+
const inputField = react_1.screen.getByTestId(testId);
|
|
72
|
+
const newDate = "2015-06-01";
|
|
73
|
+
react_1.fireEvent.change(inputField, { target: { value: newDate } });
|
|
74
|
+
expect(inputField).toHaveValue(newDate);
|
|
75
|
+
expect(onChange).toHaveBeenCalledWith(newDate);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=NewDatePicker.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NewDatePicker.test.js","sourceRoot":"","sources":["../../../../src/components/NewDatePicker/NewDatePicker.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.DEFAULT_LOCALE = exports.MONDAY_AS_NUMBER = void 0;
|
|
5
|
+
exports.MONDAY_AS_NUMBER = 1;
|
|
6
|
+
exports.DEFAULT_LOCALE = ((_a = window === null || window === void 0 ? void 0 : window.navigator) === null || _a === void 0 ? void 0 : _a.language) || "en-GB";
|
|
7
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/components/NewDatePicker/constants.ts"],"names":[],"mappings":";;;;AAAa,QAAA,gBAAgB,GAAG,CAAC,CAAC;AAErB,QAAA,cAAc,GAAG,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,0CAAE,QAAQ,KAAI,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const dateObjToString: (date: Date) => string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dateObjToString = void 0;
|
|
4
|
+
const date_fns_1 = require("date-fns");
|
|
5
|
+
const dateObjToString = (date) => (0, date_fns_1.format)(date, "yyyy-MM-dd");
|
|
6
|
+
exports.dateObjToString = dateObjToString;
|
|
7
|
+
//# sourceMappingURL=dateObjToString.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dateObjToString.js","sourceRoot":"","sources":["../../../../src/components/NewDatePicker/dateObjToString.ts"],"names":[],"mappings":";;;AAAA,uCAAkC;AAE3B,MAAM,eAAe,GAAG,CAAC,IAAU,EAAE,EAAE,CAAC,IAAA,iBAAM,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAA7D,QAAA,eAAe,mBAA8C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const dateObjToString_1 = require("./dateObjToString");
|
|
4
|
+
describe("dateObjToString", () => {
|
|
5
|
+
describe("given a Date object", () => {
|
|
6
|
+
it("returns a formatted string as yyyy-mm-dd", () => {
|
|
7
|
+
const exampleDate = "2023-11-13";
|
|
8
|
+
const input = new Date(exampleDate);
|
|
9
|
+
const actual = (0, dateObjToString_1.dateObjToString)(input);
|
|
10
|
+
const expected = exampleDate;
|
|
11
|
+
expect(actual).toEqual(expected);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=dateObjToString.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dateObjToString.test.js","sourceRoot":"","sources":["../../../../src/components/NewDatePicker/dateObjToString.test.ts"],"names":[],"mappings":";;AAAA,uDAAoD;AAEpD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,WAAW,GAAG,YAAY,CAAC;YAEjC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;YAEpC,MAAM,MAAM,GAAG,IAAA,iCAAe,EAAC,KAAK,CAAC,CAAC;YAEtC,MAAM,QAAQ,GAAG,WAAW,CAAC;YAE7B,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./NewDatePicker";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./NewDatePicker"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/NewDatePicker/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.weekdayAsOneLetter = void 0;
|
|
4
|
+
const constants_1 = require("./constants");
|
|
5
|
+
const weekdayAsOneLetter = (weekday, options) => {
|
|
6
|
+
var _a;
|
|
7
|
+
const locale = ((_a = options === null || options === void 0 ? void 0 : options.locale) === null || _a === void 0 ? void 0 : _a.code) || constants_1.DEFAULT_LOCALE;
|
|
8
|
+
const oneLetter = weekday.toLocaleString(locale, {
|
|
9
|
+
weekday: "narrow",
|
|
10
|
+
});
|
|
11
|
+
return oneLetter;
|
|
12
|
+
};
|
|
13
|
+
exports.weekdayAsOneLetter = weekdayAsOneLetter;
|
|
14
|
+
//# sourceMappingURL=weekdayAsOneLetter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"weekdayAsOneLetter.js","sourceRoot":"","sources":["../../../../src/components/NewDatePicker/weekdayAsOneLetter.ts"],"names":[],"mappings":";;;AACA,2CAA6C;AAEtC,MAAM,kBAAkB,GAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;;IACpE,MAAM,MAAM,GAAG,CAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,IAAI,KAAI,0BAAc,CAAC;IACvD,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE;QAC/C,OAAO,EAAE,QAAQ;KAClB,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAPW,QAAA,kBAAkB,sBAO7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const weekdayAsOneLetter_1 = require("./weekdayAsOneLetter");
|
|
4
|
+
describe("weekdayAsOneLetter", () => {
|
|
5
|
+
describe("given a Date object and a locale", () => {
|
|
6
|
+
it("returns weekday as a single letter", () => {
|
|
7
|
+
const randomMonday = new Date("2023-11-13");
|
|
8
|
+
const locale = { locale: { code: "en-GB" } };
|
|
9
|
+
const actual = (0, weekdayAsOneLetter_1.weekdayAsOneLetter)(randomMonday, locale);
|
|
10
|
+
const expected = "M";
|
|
11
|
+
expect(actual).toEqual(expected);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
describe("given a Date object and no locale", () => {
|
|
15
|
+
it("returns weekday as a single letter, using en-GB as default locale", () => {
|
|
16
|
+
const randomMonday = new Date("2023-11-13");
|
|
17
|
+
const actual = (0, weekdayAsOneLetter_1.weekdayAsOneLetter)(randomMonday);
|
|
18
|
+
const expected = "M";
|
|
19
|
+
expect(actual).toEqual(expected);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=weekdayAsOneLetter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"weekdayAsOneLetter.test.js","sourceRoot":"","sources":["../../../../src/components/NewDatePicker/weekdayAsOneLetter.test.ts"],"names":[],"mappings":";;AAAA,6DAA0D;AAE1D,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAChD,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;YAE7C,MAAM,MAAM,GAAG,IAAA,uCAAkB,EAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YAExD,MAAM,QAAQ,GAAG,GAAG,CAAC;YAErB,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACjD,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;YAC3E,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;YAE5C,MAAM,MAAM,GAAG,IAAA,uCAAkB,EAAC,YAAY,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,GAAG,CAAC;YAErB,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const useFocusTrap = () => {
|
|
6
|
+
const containerRef = (0, react_1.useRef)(null);
|
|
7
|
+
// eslint-disable-next-line consistent-return
|
|
8
|
+
(0, react_1.useEffect)(() => {
|
|
9
|
+
if (containerRef.current) {
|
|
10
|
+
const element = containerRef.current;
|
|
11
|
+
const focusableElements = containerRef.current.querySelectorAll('.rdp-nav_button, [tabindex]:not([tabindex="-1"])');
|
|
12
|
+
const firstElement = focusableElements[0];
|
|
13
|
+
const lastElement = focusableElements[focusableElements.length - 1];
|
|
14
|
+
const handleTabKeyPress = (event) => {
|
|
15
|
+
if (event.key === "Tab") {
|
|
16
|
+
if (event.shiftKey && document.activeElement === firstElement) {
|
|
17
|
+
event.preventDefault();
|
|
18
|
+
lastElement.focus();
|
|
19
|
+
}
|
|
20
|
+
else if (!event.shiftKey &&
|
|
21
|
+
document.activeElement === lastElement // TODO: handle for any day
|
|
22
|
+
) {
|
|
23
|
+
event.preventDefault();
|
|
24
|
+
firstElement.focus();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
element.addEventListener("keydown", handleTabKeyPress);
|
|
29
|
+
return () => {
|
|
30
|
+
element.removeEventListener("keydown", handleTabKeyPress);
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}, []);
|
|
34
|
+
return containerRef;
|
|
35
|
+
};
|
|
36
|
+
function FocusTrap({ children }) {
|
|
37
|
+
const focusRef = useFocusTrap();
|
|
38
|
+
return ((0, jsx_runtime_1.jsx)("div", { className: "trap", ref: focusRef, children: children }));
|
|
39
|
+
}
|
|
40
|
+
exports.default = FocusTrap;
|
|
41
|
+
//# sourceMappingURL=useFocusTrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFocusTrap.js","sourceRoot":"","sources":["../../../src/hooks/useFocusTrap.tsx"],"names":[],"mappings":";;;AAAA,iCAAqD;AAErD,MAAM,YAAY,GAAG,GAAG,EAAE;IACxB,MAAM,YAAY,GAAG,IAAA,cAAM,EAAwB,IAAI,CAAC,CAAC;IAEzD,6CAA6C;IAC7C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,YAAY,CAAC,OAAO,EAAE;YACxB,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;YACrC,MAAM,iBAAiB,GACrB,YAAY,CAAC,OAAO,CAAC,gBAAgB,CACnC,kDAAkD,CACnD,CAAC;YAEJ,MAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAEpE,MAAM,iBAAiB,GAAG,CAAC,KAAoB,EAAE,EAAE;gBACjD,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;oBACvB,IAAI,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,YAAY,EAAE;wBAC7D,KAAK,CAAC,cAAc,EAAE,CAAC;wBACvB,WAAW,CAAC,KAAK,EAAE,CAAC;qBACrB;yBAAM,IACL,CAAC,KAAK,CAAC,QAAQ;wBACf,QAAQ,CAAC,aAAa,KAAK,WAAW,CAAC,2BAA2B;sBAClE;wBACA,KAAK,CAAC,cAAc,EAAE,CAAC;wBACvB,YAAY,CAAC,KAAK,EAAE,CAAC;qBACtB;iBACF;YACH,CAAC,CAAC;YAEF,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;YACvD,OAAO,GAAG,EAAE;gBACV,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAC5D,CAAC,CAAC;SACH;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAMF,SAAwB,SAAS,CAAC,EAAE,QAAQ,EAAkB;IAC5D,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAEhC,OAAO,CACL,gCAAK,SAAS,EAAC,MAAM,EAAC,GAAG,EAAE,QAAQ,YAChC,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AARD,4BAQC"}
|