@simplybusiness/mobius-datepicker 4.2.7 → 4.3.0
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/CHANGELOG.md +6 -0
- package/dist/cjs/components/DatePicker/DatePicker.js +146 -80
- package/dist/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/cjs/components/DatePicker/DatePickerIcon.js +14 -5
- package/dist/cjs/components/DatePicker/DatePickerIcon.js.map +1 -1
- package/dist/cjs/components/DatePicker/DatePickerModal.js +75 -31
- package/dist/cjs/components/DatePicker/DatePickerModal.js.map +1 -1
- package/dist/cjs/components/DatePicker/constants.js +24 -5
- package/dist/cjs/components/DatePicker/constants.js.map +1 -1
- package/dist/cjs/components/DatePicker/index.js +18 -16
- package/dist/cjs/components/DatePicker/index.js.map +1 -1
- package/dist/cjs/components/DatePicker/utils/dateObjToString.js +12 -5
- package/dist/cjs/components/DatePicker/utils/dateObjToString.js.map +1 -1
- package/dist/cjs/components/DatePicker/utils/formatErrorMessageText.js +24 -9
- package/dist/cjs/components/DatePicker/utils/formatErrorMessageText.js.map +1 -1
- package/dist/cjs/components/DatePicker/utils/getStartWeekday.js +21 -0
- package/dist/cjs/components/DatePicker/utils/getStartWeekday.js.map +1 -0
- package/dist/cjs/components/DatePicker/utils/index.js +21 -19
- package/dist/cjs/components/DatePicker/utils/index.js.map +1 -1
- package/dist/cjs/components/DatePicker/utils/validateDateFormat.js +23 -9
- package/dist/cjs/components/DatePicker/utils/validateDateFormat.js.map +1 -1
- package/dist/cjs/components/DatePicker/utils/weekdayAsOneLetter.js +16 -9
- package/dist/cjs/components/DatePicker/utils/weekdayAsOneLetter.js.map +1 -1
- package/dist/cjs/hooks/index.js +18 -16
- package/dist/cjs/hooks/index.js.map +1 -1
- package/dist/cjs/hooks/useFocusTrap/index.js +18 -16
- package/dist/cjs/hooks/useFocusTrap/index.js.map +1 -1
- package/dist/cjs/hooks/useFocusTrap/useFocusTrap.js +24 -15
- package/dist/cjs/hooks/useFocusTrap/useFocusTrap.js.map +1 -1
- package/dist/cjs/index.js +18 -16
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/styles.d.js +3 -0
- package/dist/cjs/styles.d.js.map +1 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/utils/StoryContainer.js +21 -9
- package/dist/cjs/utils/StoryContainer.js.map +1 -1
- package/dist/cjs/utils/excludeControls.js +19 -5
- package/dist/cjs/utils/excludeControls.js.map +1 -1
- package/dist/cjs/utils/index.js +20 -18
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/isTouchDevice.js +11 -4
- package/dist/cjs/utils/isTouchDevice.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js +82 -42
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePickerIcon.js +5 -2
- package/dist/esm/components/DatePicker/DatePickerIcon.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePickerModal.js +47 -13
- package/dist/esm/components/DatePicker/DatePickerModal.js.map +1 -1
- package/dist/esm/components/DatePicker/constants.js +3 -2
- package/dist/esm/components/DatePicker/constants.js.map +1 -1
- package/dist/esm/components/DatePicker/index.js +1 -0
- package/dist/esm/components/DatePicker/index.js.map +1 -1
- package/dist/esm/components/DatePicker/utils/dateObjToString.js +2 -1
- package/dist/esm/components/DatePicker/utils/dateObjToString.js.map +1 -1
- package/dist/esm/components/DatePicker/utils/formatErrorMessageText.js +2 -1
- package/dist/esm/components/DatePicker/utils/formatErrorMessageText.js.map +1 -1
- package/dist/esm/components/DatePicker/utils/getStartWeekday.js +13 -0
- package/dist/esm/components/DatePicker/utils/getStartWeekday.js.map +1 -0
- package/dist/esm/components/DatePicker/utils/index.js +1 -0
- package/dist/esm/components/DatePicker/utils/index.js.map +1 -1
- package/dist/esm/components/DatePicker/utils/validateDateFormat.js +2 -1
- package/dist/esm/components/DatePicker/utils/validateDateFormat.js.map +1 -1
- package/dist/esm/components/DatePicker/utils/weekdayAsOneLetter.js +6 -5
- package/dist/esm/components/DatePicker/utils/weekdayAsOneLetter.js.map +1 -1
- package/dist/esm/hooks/index.js +1 -0
- package/dist/esm/hooks/index.js.map +1 -1
- package/dist/esm/hooks/useFocusTrap/index.js +1 -0
- package/dist/esm/hooks/useFocusTrap/index.js.map +1 -1
- package/dist/esm/hooks/useFocusTrap/useFocusTrap.js +12 -10
- package/dist/esm/hooks/useFocusTrap/useFocusTrap.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/styles.d.js +2 -0
- package/dist/esm/styles.d.js.map +1 -0
- package/dist/esm/utils/StoryContainer.js +5 -1
- package/dist/esm/utils/StoryContainer.js.map +1 -1
- package/dist/esm/utils/excludeControls.js +9 -1
- package/dist/esm/utils/excludeControls.js.map +1 -1
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/isTouchDevice.js +2 -1
- package/dist/esm/utils/isTouchDevice.js.map +1 -1
- package/package.json +7 -8
- package/src/components/DatePicker/DatePicker.tsx +4 -4
- package/src/components/DatePicker/DatePickerModal.tsx +4 -2
- package/src/components/DatePicker/constants.ts +2 -3
- package/src/components/DatePicker/utils/getStartWeekday.test.ts +33 -0
- package/src/components/DatePicker/utils/getStartWeekday.ts +19 -0
- package/src/components/DatePicker/utils/weekdayAsOneLetter.ts +2 -2
- package/dist/cjs/components/DatePicker/DatePicker.d.ts +0 -9
- package/dist/cjs/components/DatePicker/DatePicker.stories.d.ts +0 -11
- package/dist/cjs/components/DatePicker/DatePicker.stories.js +0 -79
- package/dist/cjs/components/DatePicker/DatePicker.stories.js.map +0 -1
- package/dist/cjs/components/DatePicker/DatePicker.test.d.ts +0 -1
- package/dist/cjs/components/DatePicker/DatePicker.test.js +0 -137
- package/dist/cjs/components/DatePicker/DatePicker.test.js.map +0 -1
- package/dist/cjs/components/DatePicker/DatePickerIcon.d.ts +0 -1
- package/dist/cjs/components/DatePicker/DatePickerModal.d.ts +0 -10
- package/dist/cjs/components/DatePicker/DatePickerModal.test.d.ts +0 -1
- package/dist/cjs/components/DatePicker/DatePickerModal.test.js +0 -105
- package/dist/cjs/components/DatePicker/DatePickerModal.test.js.map +0 -1
- package/dist/cjs/components/DatePicker/constants.d.ts +0 -2
- package/dist/cjs/components/DatePicker/index.d.ts +0 -1
- package/dist/cjs/components/DatePicker/utils/dateObjToString.d.ts +0 -1
- package/dist/cjs/components/DatePicker/utils/dateObjToString.test.d.ts +0 -1
- package/dist/cjs/components/DatePicker/utils/dateObjToString.test.js +0 -15
- package/dist/cjs/components/DatePicker/utils/dateObjToString.test.js.map +0 -1
- package/dist/cjs/components/DatePicker/utils/formatErrorMessageText.d.ts +0 -2
- package/dist/cjs/components/DatePicker/utils/formatErrorMessageText.test.d.ts +0 -1
- package/dist/cjs/components/DatePicker/utils/formatErrorMessageText.test.js +0 -35
- package/dist/cjs/components/DatePicker/utils/formatErrorMessageText.test.js.map +0 -1
- package/dist/cjs/components/DatePicker/utils/index.d.ts +0 -4
- package/dist/cjs/components/DatePicker/utils/validateDateFormat.d.ts +0 -2
- package/dist/cjs/components/DatePicker/utils/validateDateFormat.test.d.ts +0 -1
- package/dist/cjs/components/DatePicker/utils/validateDateFormat.test.js +0 -26
- package/dist/cjs/components/DatePicker/utils/validateDateFormat.test.js.map +0 -1
- package/dist/cjs/components/DatePicker/utils/weekdayAsOneLetter.d.ts +0 -2
- package/dist/cjs/components/DatePicker/utils/weekdayAsOneLetter.test.d.ts +0 -1
- package/dist/cjs/components/DatePicker/utils/weekdayAsOneLetter.test.js +0 -23
- package/dist/cjs/components/DatePicker/utils/weekdayAsOneLetter.test.js.map +0 -1
- package/dist/cjs/hooks/index.d.ts +0 -1
- package/dist/cjs/hooks/useFocusTrap/index.d.ts +0 -1
- package/dist/cjs/hooks/useFocusTrap/useFocusTrap.d.ts +0 -5
- package/dist/cjs/hooks/useFocusTrap/useFocusTrap.test.d.ts +0 -1
- package/dist/cjs/hooks/useFocusTrap/useFocusTrap.test.js +0 -65
- package/dist/cjs/hooks/useFocusTrap/useFocusTrap.test.js.map +0 -1
- package/dist/cjs/index.d.ts +0 -1
- package/dist/cjs/utils/StoryContainer.d.ts +0 -1
- package/dist/cjs/utils/excludeControls.d.ts +0 -1
- package/dist/cjs/utils/excludeControls.test.d.ts +0 -1
- package/dist/cjs/utils/excludeControls.test.js +0 -25
- package/dist/cjs/utils/excludeControls.test.js.map +0 -1
- package/dist/cjs/utils/index.d.ts +0 -3
- package/dist/cjs/utils/isTouchDevice.d.ts +0 -1
- package/dist/esm/components/DatePicker/utils/dateObjToString.test.js +0 -13
- package/dist/esm/components/DatePicker/utils/dateObjToString.test.js.map +0 -1
- package/dist/esm/components/DatePicker/utils/formatErrorMessageText.test.js +0 -33
- package/dist/esm/components/DatePicker/utils/formatErrorMessageText.test.js.map +0 -1
- package/dist/esm/components/DatePicker/utils/validateDateFormat.test.js +0 -24
- package/dist/esm/components/DatePicker/utils/validateDateFormat.test.js.map +0 -1
- package/dist/esm/components/DatePicker/utils/weekdayAsOneLetter.test.js +0 -21
- package/dist/esm/components/DatePicker/utils/weekdayAsOneLetter.test.js.map +0 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +0 -1
- package/dist/esm/utils/excludeControls.test.js +0 -23
- package/dist/esm/utils/excludeControls.test.js.map +0 -1
- package/dist/mobius-datepicker.d.ts +0 -14
package/CHANGELOG.md
CHANGED
|
@@ -1,91 +1,110 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
"use client";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "DatePicker", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function() {
|
|
9
|
+
return DatePicker;
|
|
8
10
|
}
|
|
9
|
-
Object.defineProperty(o, k2, desc);
|
|
10
|
-
}) : (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
o[k2] = m[k];
|
|
13
|
-
}));
|
|
14
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
-
}) : function(o, v) {
|
|
17
|
-
o["default"] = v;
|
|
18
11
|
});
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
12
|
+
const _jsxruntime = require("react/jsx-runtime");
|
|
13
|
+
const _mobius = require("@simplybusiness/mobius");
|
|
14
|
+
const _dedupe = /*#__PURE__*/ _interop_require_default(require("classnames/dedupe"));
|
|
15
|
+
const _react = require("react");
|
|
16
|
+
const _isTouchDevice = require("../../utils/isTouchDevice");
|
|
17
|
+
const _utils = require("./utils");
|
|
18
|
+
function _interop_require_default(obj) {
|
|
19
|
+
return obj && obj.__esModule ? obj : {
|
|
20
|
+
default: obj
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
24
|
+
if (typeof WeakMap !== "function") return null;
|
|
25
|
+
var cacheBabelInterop = new WeakMap();
|
|
26
|
+
var cacheNodeInterop = new WeakMap();
|
|
27
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
28
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
29
|
+
})(nodeInterop);
|
|
30
|
+
}
|
|
31
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
32
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
33
|
+
return obj;
|
|
34
|
+
}
|
|
35
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
36
|
+
return {
|
|
37
|
+
default: obj
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
41
|
+
if (cache && cache.has(obj)) {
|
|
42
|
+
return cache.get(obj);
|
|
43
|
+
}
|
|
44
|
+
var newObj = {
|
|
45
|
+
__proto__: null
|
|
46
|
+
};
|
|
47
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
48
|
+
for(var key in obj){
|
|
49
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
50
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
51
|
+
if (desc && (desc.get || desc.set)) {
|
|
52
|
+
Object.defineProperty(newObj, key, desc);
|
|
53
|
+
} else {
|
|
54
|
+
newObj[key] = obj[key];
|
|
55
|
+
}
|
|
34
56
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
const
|
|
43
|
-
const
|
|
44
|
-
const
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
const
|
|
48
|
-
const
|
|
49
|
-
const
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
-
const [top, setTop] = (0, react_1.useState)(0);
|
|
53
|
-
const inputRef = (0, react_1.useRef)(null);
|
|
54
|
-
const [isOpen, setIsOpen] = (0, react_1.useState)(false);
|
|
55
|
-
const [textFieldVal, setTextFieldVal] = (0, react_1.useState)((0, utils_1.validateDateFormat)(defaultValue));
|
|
56
|
-
const [isValid, setIsValid] = (0, react_1.useState)(true);
|
|
57
|
-
const errorMessageText = !isValid
|
|
58
|
-
? // eslint-disable-next-line react/destructuring-assignment
|
|
59
|
-
(0, utils_1.formatErrorMessageText)(textFieldVal, props.min, props.max)
|
|
60
|
-
: errorMessage;
|
|
57
|
+
}
|
|
58
|
+
newObj.default = obj;
|
|
59
|
+
if (cache) {
|
|
60
|
+
cache.set(obj, newObj);
|
|
61
|
+
}
|
|
62
|
+
return newObj;
|
|
63
|
+
}
|
|
64
|
+
const DatePickerModal = /*#__PURE__*/ (0, _react.lazy)(()=>Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("./DatePickerModal"))));
|
|
65
|
+
const DatePicker = (props)=>{
|
|
66
|
+
const { onChange, defaultValue = "", isDisabled, validationState, errorMessage = "", ...otherProps } = props;
|
|
67
|
+
const containerRef = (0, _react.useRef)(null);
|
|
68
|
+
const [top, setTop] = (0, _react.useState)(0);
|
|
69
|
+
const inputRef = (0, _react.useRef)(null);
|
|
70
|
+
const [isOpen, setIsOpen] = (0, _react.useState)(false);
|
|
71
|
+
const [textFieldVal, setTextFieldVal] = (0, _react.useState)((0, _utils.validateDateFormat)(defaultValue));
|
|
72
|
+
const [isValid, setIsValid] = (0, _react.useState)(true);
|
|
73
|
+
const errorMessageText = !isValid ? (0, _utils.formatErrorMessageText)(textFieldVal, props.min, props.max) : errorMessage;
|
|
61
74
|
const inputValidationState = !isValid ? "invalid" : validationState;
|
|
62
|
-
const touchDevice = (0,
|
|
75
|
+
const touchDevice = (0, _isTouchDevice.isTouchDevice)();
|
|
63
76
|
const validationClasses = {
|
|
64
77
|
"--is-valid": validationState === "valid",
|
|
65
|
-
"--is-invalid": validationState === "invalid" || !isValid
|
|
78
|
+
"--is-invalid": validationState === "invalid" || !isValid
|
|
66
79
|
};
|
|
67
|
-
const containerClasses = (0,
|
|
68
|
-
|
|
69
|
-
|
|
80
|
+
const containerClasses = (0, _dedupe.default)("mobius/DatePickerContainer", {
|
|
81
|
+
"--is-disabled": isDisabled,
|
|
82
|
+
"--is-touch-device": touchDevice,
|
|
83
|
+
...validationClasses
|
|
84
|
+
});
|
|
85
|
+
const popoverToggleClasses = (0, _dedupe.default)("mobius/DateFieldButton", {
|
|
86
|
+
...validationClasses
|
|
87
|
+
});
|
|
88
|
+
const togglePopoverVisibility = ()=>{
|
|
70
89
|
setIsValid(true);
|
|
71
90
|
setIsOpen(!isOpen);
|
|
72
91
|
};
|
|
73
|
-
const handleTextFieldChange = (event)
|
|
92
|
+
const handleTextFieldChange = (event)=>{
|
|
74
93
|
setTextFieldVal(event.target.value);
|
|
75
94
|
// onChange only triggers on a valid date
|
|
76
95
|
// so this clears the error
|
|
77
96
|
setIsValid(true);
|
|
78
97
|
};
|
|
79
|
-
const validate = ()
|
|
80
|
-
var
|
|
98
|
+
const validate = ()=>{
|
|
99
|
+
var _inputRef_current;
|
|
81
100
|
// If 'min' or 'max' values are provided, checkValidity() will
|
|
82
101
|
// validate the date and return a boolean
|
|
83
|
-
const isValidInput = (
|
|
102
|
+
const isValidInput = (_inputRef_current = inputRef.current) === null || _inputRef_current === void 0 ? void 0 : _inputRef_current.checkValidity();
|
|
84
103
|
if (!isValidInput) {
|
|
85
104
|
setIsValid(false);
|
|
86
105
|
}
|
|
87
106
|
};
|
|
88
|
-
const onDateSelected = (selectedDate)
|
|
107
|
+
const onDateSelected = (selectedDate)=>{
|
|
89
108
|
// Handle null callback from useOnClickOutside
|
|
90
109
|
if (selectedDate) {
|
|
91
110
|
setTextFieldVal(selectedDate);
|
|
@@ -96,7 +115,7 @@ const DatePicker = (props) => {
|
|
|
96
115
|
setIsOpen(false);
|
|
97
116
|
};
|
|
98
117
|
// User has interacted with the component and navigated away
|
|
99
|
-
const handleBlur = (event)
|
|
118
|
+
const handleBlur = (event)=>{
|
|
100
119
|
validate();
|
|
101
120
|
// User hasn't entered a date OR
|
|
102
121
|
// entered an invalid date
|
|
@@ -105,28 +124,75 @@ const DatePicker = (props) => {
|
|
|
105
124
|
}
|
|
106
125
|
onChange === null || onChange === void 0 ? void 0 : onChange(event.target.value);
|
|
107
126
|
};
|
|
108
|
-
(0,
|
|
109
|
-
var _a;
|
|
127
|
+
(0, _react.useEffect)(()=>{
|
|
110
128
|
if (isOpen) {
|
|
111
|
-
|
|
129
|
+
var _containerRef_current;
|
|
130
|
+
setTop(((_containerRef_current = containerRef.current) === null || _containerRef_current === void 0 ? void 0 : _containerRef_current.getBoundingClientRect().height) || 0);
|
|
112
131
|
// Disable validation when day picker is open
|
|
113
132
|
setIsValid(true);
|
|
114
133
|
return;
|
|
115
134
|
}
|
|
116
135
|
validate();
|
|
117
|
-
}, [
|
|
136
|
+
}, [
|
|
137
|
+
isOpen
|
|
138
|
+
]);
|
|
118
139
|
if (touchDevice) {
|
|
119
|
-
return (
|
|
120
|
-
|
|
121
|
-
|
|
140
|
+
return /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
|
|
141
|
+
className: containerClasses,
|
|
142
|
+
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_mobius.TextField, {
|
|
143
|
+
ref: inputRef,
|
|
144
|
+
type: "date",
|
|
145
|
+
className: "mobius/DatePicker",
|
|
146
|
+
// @ts-expect-error event type
|
|
147
|
+
onBlur: handleBlur,
|
|
148
|
+
onChange: handleTextFieldChange,
|
|
149
|
+
value: textFieldVal,
|
|
150
|
+
isDisabled: isDisabled,
|
|
151
|
+
validationState: inputValidationState,
|
|
152
|
+
...otherProps,
|
|
153
|
+
errorMessage: errorMessageText
|
|
154
|
+
})
|
|
155
|
+
});
|
|
122
156
|
}
|
|
123
|
-
return (
|
|
124
|
-
|
|
125
|
-
|
|
157
|
+
return /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
|
|
158
|
+
className: containerClasses,
|
|
159
|
+
ref: containerRef,
|
|
160
|
+
children: [
|
|
161
|
+
/*#__PURE__*/ (0, _jsxruntime.jsx)(_mobius.TextField, {
|
|
162
|
+
ref: inputRef,
|
|
163
|
+
type: "date",
|
|
164
|
+
className: "mobius/DatePicker",
|
|
165
|
+
// @ts-expect-error event type
|
|
166
|
+
onBlur: handleBlur,
|
|
167
|
+
onChange: handleTextFieldChange,
|
|
168
|
+
value: textFieldVal,
|
|
169
|
+
isDisabled: isDisabled,
|
|
170
|
+
validationState: inputValidationState,
|
|
171
|
+
...otherProps,
|
|
172
|
+
errorMessage: errorMessageText,
|
|
173
|
+
suffixOutside: /*#__PURE__*/ (0, _jsxruntime.jsx)(_mobius.Button, {
|
|
174
|
+
className: popoverToggleClasses,
|
|
175
|
+
onClick: togglePopoverVisibility,
|
|
176
|
+
isDisabled: isDisabled,
|
|
177
|
+
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_mobius.VisuallyHidden, {
|
|
178
|
+
children: "Pick date"
|
|
179
|
+
})
|
|
180
|
+
})
|
|
181
|
+
}),
|
|
182
|
+
isOpen && /*#__PURE__*/ (0, _jsxruntime.jsx)(_react.Suspense, {
|
|
183
|
+
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(DatePickerModal, {
|
|
184
|
+
date: textFieldVal,
|
|
185
|
+
isOpen: isOpen,
|
|
186
|
+
top: top,
|
|
187
|
+
onSelected: onDateSelected,
|
|
126
188
|
// eslint-disable-next-line react/destructuring-assignment
|
|
127
|
-
min: props.min,
|
|
189
|
+
min: props.min,
|
|
128
190
|
// eslint-disable-next-line react/destructuring-assignment
|
|
129
|
-
max: props.max
|
|
191
|
+
max: props.max
|
|
192
|
+
})
|
|
193
|
+
})
|
|
194
|
+
]
|
|
195
|
+
});
|
|
130
196
|
};
|
|
131
|
-
|
|
197
|
+
|
|
132
198
|
//# sourceMappingURL=DatePicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n Button,\n TextField,\n TextFieldElementType,\n TextFieldProps,\n VisuallyHidden,\n} from \"@simplybusiness/mobius\";\nimport classNames from \"classnames/dedupe\";\nimport {\n ChangeEvent,\n FocusEvent,\n Suspense,\n lazy,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { isTouchDevice } from \"../../utils/isTouchDevice\";\nimport { formatErrorMessageText, validateDateFormat } from \"./utils\";\n\nconst DatePickerModal = lazy(() => import(\"./DatePickerModal\"));\n\nexport interface DatePickerProps\n extends Omit<\n TextFieldProps,\n \"defaultValue\" | \"onChange\" | \"onBlur\" | \"onFocus\"\n > {\n onChange?: (date: string | undefined) => void;\n defaultValue?: string;\n min?: string;\n max?: string;\n id?: string;\n}\n\nexport const DatePicker = (props: DatePickerProps) => {\n const {\n onChange,\n defaultValue = \"\",\n isDisabled,\n validationState,\n errorMessage = \"\",\n ...otherProps\n } = props;\n const containerRef = useRef<HTMLDivElement | null>(null);\n const [top, setTop] = useState<number>(0);\n const inputRef = useRef<TextFieldElementType | null>(null);\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [textFieldVal, setTextFieldVal] = useState<string>(\n validateDateFormat(defaultValue),\n );\n const [isValid, setIsValid] = useState<boolean>(true);\n const errorMessageText = !isValid\n ? // eslint-disable-next-line react/destructuring-assignment\n formatErrorMessageText(textFieldVal, props.min, props.max)\n : errorMessage;\n const inputValidationState = !isValid ? \"invalid\" : validationState;\n const touchDevice = isTouchDevice();\n\n const validationClasses = {\n \"--is-valid\": validationState === \"valid\",\n \"--is-invalid\": validationState === \"invalid\" || !isValid,\n };\n\n const containerClasses = classNames(\"mobius/DatePickerContainer\", {\n \"--is-disabled\": isDisabled,\n \"--is-touch-device\": touchDevice,\n ...validationClasses,\n });\n\n const popoverToggleClasses = classNames(\"mobius/DateFieldButton\", {\n ...validationClasses,\n });\n\n const togglePopoverVisibility = () => {\n setIsValid(true);\n setIsOpen(!isOpen);\n };\n\n const handleTextFieldChange = (event: ChangeEvent<TextFieldElementType>) => {\n setTextFieldVal(event.target.value);\n // onChange only triggers on a valid date\n // so this clears the error\n setIsValid(true);\n };\n\n const validate = () => {\n // If 'min' or 'max' values are provided, checkValidity() will\n // validate the date and return a boolean\n const isValidInput = inputRef.current?.checkValidity();\n\n if (!isValidInput) {\n setIsValid(false);\n }\n };\n\n const onDateSelected = (selectedDate: string | undefined) => {\n // Handle null callback from useOnClickOutside\n if (selectedDate) {\n setTextFieldVal(selectedDate);\n setIsValid(true);\n // Add other callback events here\n onChange?.(selectedDate);\n }\n\n setIsOpen(false);\n };\n\n // User has interacted with the component and navigated away\n const handleBlur = (event: FocusEvent<TextFieldElementType>) => {\n validate();\n\n // User hasn't entered a date OR\n // entered an invalid date\n if (!textFieldVal) {\n setIsValid(false);\n }\n\n onChange?.(event.target.value);\n };\n\n useEffect(() => {\n if (isOpen) {\n setTop(containerRef.current?.getBoundingClientRect().height || 0);\n // Disable validation when day picker is open\n setIsValid(true);\n return;\n }\n\n validate();\n }, [isOpen]);\n\n if (touchDevice) {\n return (\n <div className={containerClasses}>\n <TextField\n ref={inputRef}\n type=\"date\"\n className=\"mobius/DatePicker\"\n // @ts-expect-error event type\n onBlur={handleBlur}\n onChange={handleTextFieldChange}\n value={textFieldVal}\n isDisabled={isDisabled}\n validationState={inputValidationState}\n {...otherProps}\n errorMessage={errorMessageText}\n />\n </div>\n );\n }\n\n return (\n <div className={containerClasses} ref={containerRef}>\n <TextField\n ref={inputRef}\n type=\"date\"\n className=\"mobius/DatePicker\"\n // @ts-expect-error event type\n onBlur={handleBlur}\n onChange={handleTextFieldChange}\n value={textFieldVal}\n isDisabled={isDisabled}\n validationState={inputValidationState}\n {...otherProps}\n errorMessage={errorMessageText}\n suffixOutside={\n <Button\n className={popoverToggleClasses}\n onClick={togglePopoverVisibility}\n isDisabled={isDisabled}\n >\n <VisuallyHidden>Pick date</VisuallyHidden>\n </Button>\n }\n />\n {isOpen && (\n <Suspense>\n <DatePickerModal\n date={textFieldVal}\n isOpen={isOpen}\n top={top}\n onSelected={onDateSelected}\n // eslint-disable-next-line react/destructuring-assignment\n min={props.min}\n // eslint-disable-next-line react/destructuring-assignment\n max={props.max}\n />\n </Suspense>\n )}\n </div>\n );\n};\n"],"names":["DatePicker","DatePickerModal","lazy","props","onChange","defaultValue","isDisabled","validationState","errorMessage","otherProps","containerRef","useRef","top","setTop","useState","inputRef","isOpen","setIsOpen","textFieldVal","setTextFieldVal","validateDateFormat","isValid","setIsValid","errorMessageText","formatErrorMessageText","min","max","inputValidationState","touchDevice","isTouchDevice","validationClasses","containerClasses","classNames","popoverToggleClasses","togglePopoverVisibility","handleTextFieldChange","event","target","value","validate","isValidInput","current","checkValidity","onDateSelected","selectedDate","handleBlur","useEffect","getBoundingClientRect","height","div","className","TextField","ref","type","onBlur","suffixOutside","Button","onClick","VisuallyHidden","Suspense","date","onSelected"],"mappings":"AAAA;;;;;+BAoCaA;;;eAAAA;;;;wBA5BN;+DACgB;uBAShB;+BACuB;uBAC6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE3D,MAAMC,gCAAkBC,IAAAA,WAAI,EAAC,IAAM,mEAAA,QAAO;AAcnC,MAAMF,aAAa,CAACG;IACzB,MAAM,EACJC,QAAQ,EACRC,eAAe,EAAE,EACjBC,UAAU,EACVC,eAAe,EACfC,eAAe,EAAE,EACjB,GAAGC,YACJ,GAAGN;IACJ,MAAMO,eAAeC,IAAAA,aAAM,EAAwB;IACnD,MAAM,CAACC,KAAKC,OAAO,GAAGC,IAAAA,eAAQ,EAAS;IACvC,MAAMC,WAAWJ,IAAAA,aAAM,EAA8B;IACrD,MAAM,CAACK,QAAQC,UAAU,GAAGH,IAAAA,eAAQ,EAAU;IAC9C,MAAM,CAACI,cAAcC,gBAAgB,GAAGL,IAAAA,eAAQ,EAC9CM,IAAAA,yBAAkB,EAACf;IAErB,MAAM,CAACgB,SAASC,WAAW,GAAGR,IAAAA,eAAQ,EAAU;IAChD,MAAMS,mBAAmB,CAACF,UAEtBG,IAAAA,6BAAsB,EAACN,cAAcf,MAAMsB,GAAG,EAAEtB,MAAMuB,GAAG,IACzDlB;IACJ,MAAMmB,uBAAuB,CAACN,UAAU,YAAYd;IACpD,MAAMqB,cAAcC,IAAAA,4BAAa;IAEjC,MAAMC,oBAAoB;QACxB,cAAcvB,oBAAoB;QAClC,gBAAgBA,oBAAoB,aAAa,CAACc;IACpD;IAEA,MAAMU,mBAAmBC,IAAAA,eAAU,EAAC,8BAA8B;QAChE,iBAAiB1B;QACjB,qBAAqBsB;QACrB,GAAGE,iBAAiB;IACtB;IAEA,MAAMG,uBAAuBD,IAAAA,eAAU,EAAC,0BAA0B;QAChE,GAAGF,iBAAiB;IACtB;IAEA,MAAMI,0BAA0B;QAC9BZ,WAAW;QACXL,UAAU,CAACD;IACb;IAEA,MAAMmB,wBAAwB,CAACC;QAC7BjB,gBAAgBiB,MAAMC,MAAM,CAACC,KAAK;QAClC,yCAAyC;QACzC,2BAA2B;QAC3BhB,WAAW;IACb;IAEA,MAAMiB,WAAW;YAGMxB;QAFrB,8DAA8D;QAC9D,yCAAyC;QACzC,MAAMyB,gBAAezB,oBAAAA,SAAS0B,OAAO,cAAhB1B,wCAAAA,kBAAkB2B,aAAa;QAEpD,IAAI,CAACF,cAAc;YACjBlB,WAAW;QACb;IACF;IAEA,MAAMqB,iBAAiB,CAACC;QACtB,8CAA8C;QAC9C,IAAIA,cAAc;YAChBzB,gBAAgByB;YAChBtB,WAAW;YACX,iCAAiC;YACjClB,qBAAAA,+BAAAA,SAAWwC;QACb;QAEA3B,UAAU;IACZ;IAEA,4DAA4D;IAC5D,MAAM4B,aAAa,CAACT;QAClBG;QAEA,gCAAgC;QAChC,0BAA0B;QAC1B,IAAI,CAACrB,cAAc;YACjBI,WAAW;QACb;QAEAlB,qBAAAA,+BAAAA,SAAWgC,MAAMC,MAAM,CAACC,KAAK;IAC/B;IAEAQ,IAAAA,gBAAS,EAAC;QACR,IAAI9B,QAAQ;gBACHN;YAAPG,OAAOH,EAAAA,wBAAAA,aAAa+B,OAAO,cAApB/B,4CAAAA,sBAAsBqC,qBAAqB,GAAGC,MAAM,KAAI;YAC/D,6CAA6C;YAC7C1B,WAAW;YACX;QACF;QAEAiB;IACF,GAAG;QAACvB;KAAO;IAEX,IAAIY,aAAa;QACf,qBACE,qBAACqB;YAAIC,WAAWnB;sBACd,cAAA,qBAACoB,iBAAS;gBACRC,KAAKrC;gBACLsC,MAAK;gBACLH,WAAU;gBACV,8BAA8B;gBAC9BI,QAAQT;gBACRzC,UAAU+B;gBACVG,OAAOpB;gBACPZ,YAAYA;gBACZC,iBAAiBoB;gBAChB,GAAGlB,UAAU;gBACdD,cAAce;;;IAItB;IAEA,qBACE,sBAAC0B;QAAIC,WAAWnB;QAAkBqB,KAAK1C;;0BACrC,qBAACyC,iBAAS;gBACRC,KAAKrC;gBACLsC,MAAK;gBACLH,WAAU;gBACV,8BAA8B;gBAC9BI,QAAQT;gBACRzC,UAAU+B;gBACVG,OAAOpB;gBACPZ,YAAYA;gBACZC,iBAAiBoB;gBAChB,GAAGlB,UAAU;gBACdD,cAAce;gBACdgC,6BACE,qBAACC,cAAM;oBACLN,WAAWjB;oBACXwB,SAASvB;oBACT5B,YAAYA;8BAEZ,cAAA,qBAACoD,sBAAc;kCAAC;;;;YAIrB1C,wBACC,qBAAC2C,eAAQ;0BACP,cAAA,qBAAC1D;oBACC2D,MAAM1C;oBACNF,QAAQA;oBACRJ,KAAKA;oBACLiD,YAAYlB;oBACZ,0DAA0D;oBAC1DlB,KAAKtB,MAAMsB,GAAG;oBACd,0DAA0D;oBAC1DC,KAAKvB,MAAMuB,GAAG;;;;;AAM1B"}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "DatePickerIcon", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return DatePickerIcon;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _jsxruntime = require("react/jsx-runtime");
|
|
12
|
+
const DatePickerIcon = ()=>/*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, {
|
|
13
|
+
children: " "
|
|
14
|
+
});
|
|
15
|
+
|
|
7
16
|
//# sourceMappingURL=DatePickerIcon.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/DatePicker/DatePickerIcon.tsx"],"sourcesContent":["export const DatePickerIcon = () => <> </>;\n"],"names":["DatePickerIcon"],"mappings":";;;;+BAAaA;;;eAAAA;;;;AAAN,MAAMA,iBAAiB,kBAAM;kBAAE"}
|
|
@@ -1,49 +1,93 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
"use client";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "default", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function() {
|
|
9
|
+
return _default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
const _jsxruntime = require("react/jsx-runtime");
|
|
13
|
+
const _mobius = require("@simplybusiness/mobius");
|
|
14
|
+
const _dedupe = /*#__PURE__*/ _interop_require_default(require("classnames/dedupe"));
|
|
15
|
+
const _react = require("react");
|
|
16
|
+
const _reactdaypicker = require("react-day-picker");
|
|
17
|
+
const _useFocusTrap = /*#__PURE__*/ _interop_require_default(require("../../hooks/useFocusTrap/useFocusTrap"));
|
|
18
|
+
const _DatePickerIcon = require("./DatePickerIcon");
|
|
19
|
+
const _utils = require("./utils");
|
|
20
|
+
const _getStartWeekday = require("./utils/getStartWeekday");
|
|
21
|
+
function _interop_require_default(obj) {
|
|
22
|
+
return obj && obj.__esModule ? obj : {
|
|
23
|
+
default: obj
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
var _navigator;
|
|
16
27
|
const PARENT_NODE = typeof document !== "undefined" && document.body;
|
|
17
|
-
const
|
|
18
|
-
|
|
28
|
+
const startWeekday = (0, _getStartWeekday.getStartWeekday)((_navigator = navigator) === null || _navigator === void 0 ? void 0 : _navigator.language);
|
|
29
|
+
const DatePickerModal = ({ date, isOpen, onSelected, top, min, max })=>{
|
|
30
|
+
const modalRef = (0, _react.useRef)(null);
|
|
19
31
|
const initialDate = date ? new Date(date) : undefined;
|
|
20
32
|
const minDate = min ? new Date(min) : undefined;
|
|
21
33
|
const maxDate = max ? new Date(max) : undefined;
|
|
22
34
|
if (isOpen && PARENT_NODE) {
|
|
23
35
|
PARENT_NODE === null || PARENT_NODE === void 0 ? void 0 : PARENT_NODE.setAttribute("aria-hidden", "true");
|
|
24
36
|
}
|
|
25
|
-
const handleSelected = (selectedDate)
|
|
26
|
-
if (PARENT_NODE)
|
|
27
|
-
PARENT_NODE === null || PARENT_NODE === void 0 ? void 0 : PARENT_NODE.removeAttribute("aria-hidden");
|
|
37
|
+
const handleSelected = (selectedDate)=>{
|
|
38
|
+
if (PARENT_NODE) PARENT_NODE === null || PARENT_NODE === void 0 ? void 0 : PARENT_NODE.removeAttribute("aria-hidden");
|
|
28
39
|
onSelected(selectedDate);
|
|
29
40
|
};
|
|
30
|
-
const handleDayPickerSelect = (selectedDate)
|
|
31
|
-
if (!selectedDate)
|
|
32
|
-
|
|
33
|
-
handleSelected((0, utils_1.dateObjToString)(selectedDate));
|
|
41
|
+
const handleDayPickerSelect = (selectedDate)=>{
|
|
42
|
+
if (!selectedDate) return;
|
|
43
|
+
handleSelected((0, _utils.dateObjToString)(selectedDate));
|
|
34
44
|
};
|
|
35
|
-
(0,
|
|
45
|
+
(0, _mobius.useOnClickOutside)(modalRef, ()=>{
|
|
36
46
|
if (modalRef.current && isOpen) {
|
|
37
47
|
handleSelected();
|
|
38
48
|
}
|
|
39
49
|
});
|
|
40
|
-
const modalClasses = (0,
|
|
41
|
-
"--is-open": isOpen
|
|
50
|
+
const modalClasses = (0, _dedupe.default)("mobius/DatePickerModal", {
|
|
51
|
+
"--is-open": isOpen
|
|
52
|
+
});
|
|
53
|
+
return /*#__PURE__*/ (0, _jsxruntime.jsx)(_useFocusTrap.default, {
|
|
54
|
+
children: /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
|
|
55
|
+
ref: modalRef,
|
|
56
|
+
className: modalClasses,
|
|
57
|
+
style: {
|
|
58
|
+
top
|
|
59
|
+
},
|
|
60
|
+
"aria-describedby": "screen-reader-title",
|
|
61
|
+
"data-testid": "modal-container",
|
|
62
|
+
children: [
|
|
63
|
+
/*#__PURE__*/ (0, _jsxruntime.jsx)(_mobius.VisuallyHidden, {
|
|
64
|
+
children: /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
|
|
65
|
+
id: "screen-reader-title",
|
|
66
|
+
children: "Please select a date from the calendar"
|
|
67
|
+
})
|
|
68
|
+
}),
|
|
69
|
+
/*#__PURE__*/ (0, _jsxruntime.jsx)(_reactdaypicker.DayPicker, {
|
|
70
|
+
mode: "single",
|
|
71
|
+
fromDate: minDate,
|
|
72
|
+
toDate: maxDate,
|
|
73
|
+
selected: initialDate,
|
|
74
|
+
defaultMonth: initialDate,
|
|
75
|
+
onSelect: handleDayPickerSelect,
|
|
76
|
+
pagedNavigation: true,
|
|
77
|
+
showOutsideDays: true,
|
|
78
|
+
weekStartsOn: startWeekday,
|
|
79
|
+
formatters: {
|
|
80
|
+
formatWeekdayName: _utils.weekdayAsOneLetter
|
|
81
|
+
},
|
|
82
|
+
components: {
|
|
83
|
+
IconLeft: _DatePickerIcon.DatePickerIcon,
|
|
84
|
+
IconRight: _DatePickerIcon.DatePickerIcon
|
|
85
|
+
}
|
|
86
|
+
})
|
|
87
|
+
]
|
|
88
|
+
})
|
|
42
89
|
});
|
|
43
|
-
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", "data-testid": "modal-container", 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", fromDate: minDate, toDate: maxDate, selected: initialDate, defaultMonth: initialDate, onSelect: handleDayPickerSelect, pagedNavigation: true, showOutsideDays: true, weekStartsOn: constants_1.MONDAY_AS_NUMBER, formatters: { formatWeekdayName: utils_1.weekdayAsOneLetter }, components: {
|
|
44
|
-
IconLeft: DatePickerIcon_1.DatePickerIcon,
|
|
45
|
-
IconRight: DatePickerIcon_1.DatePickerIcon,
|
|
46
|
-
} })] }) }));
|
|
47
90
|
};
|
|
48
|
-
|
|
91
|
+
const _default = DatePickerModal;
|
|
92
|
+
|
|
49
93
|
//# sourceMappingURL=DatePickerModal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/DatePicker/DatePickerModal.tsx"],"sourcesContent":["\"use client\";\n\nimport { VisuallyHidden, useOnClickOutside } from \"@simplybusiness/mobius\";\nimport classNames from \"classnames/dedupe\";\nimport { useRef } from \"react\";\nimport { DayPicker } from \"react-day-picker\";\nimport FocusTrap from \"../../hooks/useFocusTrap/useFocusTrap\";\nimport { DatePickerIcon } from \"./DatePickerIcon\";\nimport { dateObjToString, weekdayAsOneLetter } from \"./utils\";\nimport { getStartWeekday } from \"./utils/getStartWeekday\";\n\nconst PARENT_NODE = typeof document !== \"undefined\" && document.body;\n\nexport type DatePickerModalProps = {\n date?: string; // yyyy-mm-dd\n isOpen: boolean;\n top: number;\n onSelected: (date?: string | undefined) => void;\n min?: string;\n max?: string;\n};\n\nconst startWeekday = getStartWeekday(navigator?.language);\n\nconst DatePickerModal = ({\n date,\n isOpen,\n onSelected,\n top,\n min,\n max,\n}: DatePickerModalProps) => {\n const modalRef = useRef<HTMLDivElement>(null);\n const initialDate = date ? new Date(date) : undefined;\n const minDate = min ? new Date(min) : undefined;\n const maxDate = max ? new Date(max) : undefined;\n\n if (isOpen && PARENT_NODE) {\n PARENT_NODE?.setAttribute(\"aria-hidden\", \"true\");\n }\n\n const handleSelected = (selectedDate?: string | undefined) => {\n if (PARENT_NODE) PARENT_NODE?.removeAttribute(\"aria-hidden\");\n onSelected(selectedDate);\n };\n\n const handleDayPickerSelect = (selectedDate: Date | undefined) => {\n if (!selectedDate) return;\n\n handleSelected(dateObjToString(selectedDate));\n };\n\n useOnClickOutside(modalRef, () => {\n if (modalRef.current && isOpen) {\n handleSelected();\n }\n });\n\n const modalClasses = classNames(\"mobius/DatePickerModal\", {\n \"--is-open\": isOpen,\n });\n\n return (\n <FocusTrap>\n <div\n ref={modalRef}\n className={modalClasses}\n style={{ top }}\n aria-describedby=\"screen-reader-title\"\n data-testid=\"modal-container\"\n >\n <VisuallyHidden>\n <div id=\"screen-reader-title\">\n Please select a date from the calendar\n </div>\n </VisuallyHidden>\n <DayPicker\n mode=\"single\"\n fromDate={minDate}\n toDate={maxDate}\n selected={initialDate}\n defaultMonth={initialDate}\n onSelect={handleDayPickerSelect}\n pagedNavigation\n showOutsideDays\n weekStartsOn={startWeekday}\n formatters={{ formatWeekdayName: weekdayAsOneLetter }}\n components={{\n IconLeft: DatePickerIcon,\n IconRight: DatePickerIcon,\n }}\n />\n </div>\n </FocusTrap>\n );\n};\n\nexport default DatePickerModal;\n"],"names":["navigator","PARENT_NODE","document","body","startWeekday","getStartWeekday","language","DatePickerModal","date","isOpen","onSelected","top","min","max","modalRef","useRef","initialDate","Date","undefined","minDate","maxDate","setAttribute","handleSelected","selectedDate","removeAttribute","handleDayPickerSelect","dateObjToString","useOnClickOutside","current","modalClasses","classNames","FocusTrap","div","ref","className","style","aria-describedby","data-testid","VisuallyHidden","id","DayPicker","mode","fromDate","toDate","selected","defaultMonth","onSelect","pagedNavigation","showOutsideDays","weekStartsOn","formatters","formatWeekdayName","weekdayAsOneLetter","components","IconLeft","DatePickerIcon","IconRight"],"mappings":"AAAA;;;;;+BAiGA;;;eAAA;;;;wBA/FkD;+DAC3B;uBACA;gCACG;qEACJ;gCACS;uBACqB;iCACpB;;;;;;IAaKA;AAXrC,MAAMC,cAAc,OAAOC,aAAa,eAAeA,SAASC,IAAI;AAWpE,MAAMC,eAAeC,IAAAA,gCAAe,GAACL,aAAAA,uBAAAA,iCAAAA,WAAWM,QAAQ;AAExD,MAAMC,kBAAkB,CAAC,EACvBC,IAAI,EACJC,MAAM,EACNC,UAAU,EACVC,GAAG,EACHC,GAAG,EACHC,GAAG,EACkB;IACrB,MAAMC,WAAWC,IAAAA,aAAM,EAAiB;IACxC,MAAMC,cAAcR,OAAO,IAAIS,KAAKT,QAAQU;IAC5C,MAAMC,UAAUP,MAAM,IAAIK,KAAKL,OAAOM;IACtC,MAAME,UAAUP,MAAM,IAAII,KAAKJ,OAAOK;IAEtC,IAAIT,UAAUR,aAAa;QACzBA,wBAAAA,kCAAAA,YAAaoB,YAAY,CAAC,eAAe;IAC3C;IAEA,MAAMC,iBAAiB,CAACC;QACtB,IAAItB,aAAaA,wBAAAA,kCAAAA,YAAauB,eAAe,CAAC;QAC9Cd,WAAWa;IACb;IAEA,MAAME,wBAAwB,CAACF;QAC7B,IAAI,CAACA,cAAc;QAEnBD,eAAeI,IAAAA,sBAAe,EAACH;IACjC;IAEAI,IAAAA,yBAAiB,EAACb,UAAU;QAC1B,IAAIA,SAASc,OAAO,IAAInB,QAAQ;YAC9Ba;QACF;IACF;IAEA,MAAMO,eAAeC,IAAAA,eAAU,EAAC,0BAA0B;QACxD,aAAarB;IACf;IAEA,qBACE,qBAACsB,qBAAS;kBACR,cAAA,sBAACC;YACCC,KAAKnB;YACLoB,WAAWL;YACXM,OAAO;gBAAExB;YAAI;YACbyB,oBAAiB;YACjBC,eAAY;;8BAEZ,qBAACC,sBAAc;8BACb,cAAA,qBAACN;wBAAIO,IAAG;kCAAsB;;;8BAIhC,qBAACC,yBAAS;oBACRC,MAAK;oBACLC,UAAUvB;oBACVwB,QAAQvB;oBACRwB,UAAU5B;oBACV6B,cAAc7B;oBACd8B,UAAUrB;oBACVsB,eAAe;oBACfC,eAAe;oBACfC,cAAc7C;oBACd8C,YAAY;wBAAEC,mBAAmBC,yBAAkB;oBAAC;oBACpDC,YAAY;wBACVC,UAAUC,8BAAc;wBACxBC,WAAWD,8BAAc;oBAC3B;;;;;AAKV;MAEA,WAAehD"}
|
|
@@ -1,7 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
DEFAULT_LOCALE: function() {
|
|
13
|
+
return DEFAULT_LOCALE;
|
|
14
|
+
},
|
|
15
|
+
MONDAY_AS_NUMBER: function() {
|
|
16
|
+
return MONDAY_AS_NUMBER;
|
|
17
|
+
},
|
|
18
|
+
SUNDAY_AS_NUMBER: function() {
|
|
19
|
+
return SUNDAY_AS_NUMBER;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
const SUNDAY_AS_NUMBER = 0;
|
|
23
|
+
const MONDAY_AS_NUMBER = 1;
|
|
24
|
+
const DEFAULT_LOCALE = "en-GB";
|
|
25
|
+
|
|
7
26
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/DatePicker/constants.ts"],"sourcesContent":["export const SUNDAY_AS_NUMBER = 0;\nexport const MONDAY_AS_NUMBER = 1;\nexport const DEFAULT_LOCALE = \"en-GB\";\n"],"names":["DEFAULT_LOCALE","MONDAY_AS_NUMBER","SUNDAY_AS_NUMBER"],"mappings":";;;;;;;;;;;IAEaA,cAAc;eAAdA;;IADAC,gBAAgB;eAAhBA;;IADAC,gBAAgB;eAAhBA;;;AAAN,MAAMA,mBAAmB;AACzB,MAAMD,mBAAmB;AACzB,MAAMD,iBAAiB"}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
_export_star(require("./DatePicker"), exports);
|
|
6
|
+
function _export_star(from, to) {
|
|
7
|
+
Object.keys(from).forEach(function(k) {
|
|
8
|
+
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
|
|
9
|
+
Object.defineProperty(to, k, {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function() {
|
|
12
|
+
return from[k];
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
return from;
|
|
18
|
+
}
|
|
19
|
+
|
|
18
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/DatePicker/index.tsx"],"sourcesContent":["export * from \"./DatePicker\";\n"],"names":[],"mappings":";;;;qBAAc"}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "dateObjToString", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return dateObjToString;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _datefns = require("date-fns");
|
|
12
|
+
const dateObjToString = (date)=>(0, _datefns.format)(date, "yyyy-MM-dd");
|
|
13
|
+
|
|
7
14
|
//# sourceMappingURL=dateObjToString.js.map
|