@simplybusiness/mobius-datepicker 9.0.9 → 9.1.1
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 +20 -0
- package/dist/cjs/components/DatePicker/CustomComponents/CaptionLabel.js +30 -0
- package/dist/cjs/components/DatePicker/CustomComponents/CaptionLabel.js.map +7 -0
- package/dist/cjs/components/DatePicker/CustomComponents/ChevronComponent.js +35 -0
- package/dist/cjs/components/DatePicker/CustomComponents/ChevronComponent.js.map +7 -0
- package/dist/cjs/components/DatePicker/CustomComponents/index.js +44 -0
- package/dist/cjs/components/DatePicker/CustomComponents/index.js.map +7 -0
- package/dist/cjs/components/DatePicker/DatePicker.js +547 -0
- package/dist/cjs/components/DatePicker/DatePicker.js.map +7 -0
- package/dist/cjs/components/DatePicker/DatePickerIcon.js +28 -0
- package/dist/cjs/components/DatePicker/DatePickerIcon.js.map +7 -0
- package/dist/{esm/DatePickerModal-RVUBO5DW.js → cjs/components/DatePicker/DatePickerModal.js} +63 -33
- package/dist/{esm/DatePickerModal-RVUBO5DW.js.map → cjs/components/DatePicker/DatePickerModal.js.map} +3 -3
- package/dist/cjs/components/DatePicker/constants.js +31 -0
- package/dist/cjs/components/DatePicker/constants.js.map +7 -0
- package/dist/cjs/components/DatePicker/index.js +548 -0
- package/dist/cjs/components/DatePicker/index.js.map +7 -0
- package/dist/cjs/components/DatePicker/utils/dateObjToString.js +32 -0
- package/dist/cjs/components/DatePicker/utils/dateObjToString.js.map +7 -0
- package/dist/cjs/components/DatePicker/utils/formatErrorMessageText.js +45 -0
- package/dist/cjs/components/DatePicker/utils/formatErrorMessageText.js.map +7 -0
- package/dist/cjs/components/DatePicker/utils/getStartWeekday.js +41 -0
- package/dist/cjs/components/DatePicker/utils/getStartWeekday.js.map +7 -0
- package/dist/cjs/components/DatePicker/utils/index.js +86 -0
- package/dist/cjs/components/DatePicker/utils/index.js.map +7 -0
- package/dist/cjs/components/DatePicker/utils/timezoneOffset.js +37 -0
- package/dist/cjs/components/DatePicker/utils/timezoneOffset.js.map +7 -0
- package/dist/cjs/components/DatePicker/utils/validateDateFormat.js +40 -0
- package/dist/cjs/components/DatePicker/utils/validateDateFormat.js.map +7 -0
- package/dist/cjs/components/DatePicker/utils/weekdayAsOneLetter.js +38 -0
- package/dist/cjs/components/DatePicker/utils/weekdayAsOneLetter.js.map +7 -0
- package/dist/cjs/hooks/index.js +19 -0
- package/dist/cjs/hooks/index.js.map +7 -0
- package/dist/cjs/hooks/useFocusTrap/index.js +19 -0
- package/dist/cjs/hooks/useFocusTrap/index.js.map +7 -0
- package/dist/cjs/hooks/useFocusTrap/useFocusTrap.js +65 -0
- package/dist/cjs/hooks/useFocusTrap/useFocusTrap.js.map +7 -0
- package/dist/cjs/index.js +4 -3
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/meta.json +993 -5
- package/dist/cjs/utils/StoryContainer.js +46 -0
- package/dist/cjs/utils/StoryContainer.js.map +7 -0
- package/dist/cjs/utils/excludeControls.js +30 -0
- package/dist/cjs/utils/excludeControls.js.map +7 -0
- package/dist/cjs/utils/index.js +41 -0
- package/dist/cjs/utils/index.js.map +7 -0
- package/dist/cjs/utils/isTouchDevice.js +32 -0
- package/dist/cjs/utils/isTouchDevice.js.map +7 -0
- package/dist/cjs/utils/mockMatchMedia.js +50 -0
- package/dist/cjs/utils/mockMatchMedia.js.map +7 -0
- package/dist/esm/chunk-24MISPYQ.js +1 -0
- package/dist/esm/chunk-24MISPYQ.js.map +7 -0
- package/dist/esm/chunk-4UUTCJ7P.js +11 -0
- package/dist/esm/chunk-4UUTCJ7P.js.map +7 -0
- package/dist/esm/chunk-52KEWVWB.js +12 -0
- package/dist/esm/chunk-52KEWVWB.js.map +7 -0
- package/dist/esm/chunk-5CHWCZUP.js +1 -0
- package/dist/esm/chunk-5CHWCZUP.js.map +7 -0
- package/dist/esm/chunk-6TTD4G74.js +20 -0
- package/dist/esm/chunk-6TTD4G74.js.map +7 -0
- package/dist/esm/chunk-A62CZFEQ.js +17 -0
- package/dist/esm/chunk-A62CZFEQ.js.map +7 -0
- package/dist/esm/chunk-AOSXRXGA.js +20 -0
- package/dist/esm/chunk-AOSXRXGA.js.map +7 -0
- package/dist/esm/chunk-CH3KSJSE.js +12 -0
- package/dist/esm/chunk-CH3KSJSE.js.map +7 -0
- package/dist/esm/chunk-E5XSED6Z.js +1 -0
- package/dist/esm/chunk-E5XSED6Z.js.map +7 -0
- package/dist/esm/chunk-GKDMKCFX.js +15 -0
- package/dist/esm/chunk-GKDMKCFX.js.map +7 -0
- package/dist/esm/chunk-IDU2FHOY.js +10 -0
- package/dist/esm/chunk-IDU2FHOY.js.map +7 -0
- package/dist/esm/chunk-IVRD2PA6.js +17 -0
- package/dist/esm/chunk-IVRD2PA6.js.map +7 -0
- package/dist/esm/chunk-KW6EFBPT.js +10 -0
- package/dist/esm/chunk-KW6EFBPT.js.map +7 -0
- package/dist/esm/chunk-LR7ML4HC.js +45 -0
- package/dist/esm/chunk-LR7ML4HC.js.map +7 -0
- package/dist/esm/chunk-TAURHEHL.js +193 -0
- package/dist/esm/chunk-TAURHEHL.js.map +7 -0
- package/dist/esm/chunk-UJQXNOUG.js +25 -0
- package/dist/esm/chunk-UJQXNOUG.js.map +7 -0
- package/dist/esm/chunk-UNC7C5OV.js +1 -0
- package/dist/esm/chunk-UNC7C5OV.js.map +7 -0
- package/dist/esm/components/DatePicker/CustomComponents/CaptionLabel.js +7 -0
- package/dist/esm/components/DatePicker/CustomComponents/CaptionLabel.js.map +7 -0
- package/dist/esm/components/DatePicker/CustomComponents/ChevronComponent.js +7 -0
- package/dist/esm/components/DatePicker/CustomComponents/ChevronComponent.js.map +7 -0
- package/dist/esm/components/DatePicker/CustomComponents/index.js +12 -0
- package/dist/esm/components/DatePicker/CustomComponents/index.js.map +7 -0
- package/dist/esm/components/DatePicker/DatePicker.js +15 -0
- package/dist/esm/components/DatePicker/DatePicker.js.map +7 -0
- package/dist/esm/components/DatePicker/DatePickerIcon.js +7 -0
- package/dist/esm/components/DatePicker/DatePickerIcon.js.map +7 -0
- package/dist/esm/components/DatePicker/DatePickerModal.js +134 -0
- package/dist/esm/components/DatePicker/DatePickerModal.js.map +7 -0
- package/dist/esm/components/DatePicker/constants.js +11 -0
- package/dist/esm/components/DatePicker/constants.js.map +7 -0
- package/dist/esm/components/DatePicker/index.js +15 -0
- package/dist/esm/components/DatePicker/index.js.map +7 -0
- package/dist/esm/components/DatePicker/utils/dateObjToString.js +7 -0
- package/dist/esm/components/DatePicker/utils/dateObjToString.js.map +7 -0
- package/dist/esm/components/DatePicker/utils/formatErrorMessageText.js +13 -0
- package/dist/esm/components/DatePicker/utils/formatErrorMessageText.js.map +7 -0
- package/dist/esm/components/DatePicker/utils/getStartWeekday.js +8 -0
- package/dist/esm/components/DatePicker/utils/getStartWeekday.js.map +7 -0
- package/dist/esm/components/DatePicker/utils/index.js +29 -0
- package/dist/esm/components/DatePicker/utils/index.js.map +7 -0
- package/dist/esm/components/DatePicker/utils/timezoneOffset.js +9 -0
- package/dist/esm/components/DatePicker/utils/timezoneOffset.js.map +7 -0
- package/dist/esm/components/DatePicker/utils/validateDateFormat.js +9 -0
- package/dist/esm/components/DatePicker/utils/validateDateFormat.js.map +7 -0
- package/dist/esm/components/DatePicker/utils/weekdayAsOneLetter.js +8 -0
- package/dist/esm/components/DatePicker/utils/weekdayAsOneLetter.js.map +7 -0
- package/dist/esm/hooks/index.js +3 -0
- package/dist/esm/hooks/index.js.map +7 -0
- package/dist/esm/hooks/useFocusTrap/index.js +3 -0
- package/dist/esm/hooks/useFocusTrap/index.js.map +7 -0
- package/dist/esm/hooks/useFocusTrap/useFocusTrap.js +7 -0
- package/dist/esm/hooks/useFocusTrap/useFocusTrap.js.map +7 -0
- package/dist/esm/index.js +10 -219
- package/dist/esm/index.js.map +3 -3
- package/dist/esm/meta.json +1146 -102
- package/dist/esm/utils/StoryContainer.js +25 -0
- package/dist/esm/utils/StoryContainer.js.map +7 -0
- package/dist/esm/utils/excludeControls.js +7 -0
- package/dist/esm/utils/excludeControls.js.map +7 -0
- package/dist/esm/utils/index.js +11 -0
- package/dist/esm/utils/index.js.map +7 -0
- package/dist/esm/utils/isTouchDevice.js +7 -0
- package/dist/esm/utils/isTouchDevice.js.map +7 -0
- package/dist/esm/utils/mockMatchMedia.js +29 -0
- package/dist/esm/utils/mockMatchMedia.js.map +7 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/components/DatePicker/DatePicker.d.ts +1 -0
- package/package.json +4 -3
- package/src/components/DatePicker/DatePicker.tsx +1 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import {
|
|
2
|
+
validateDateFormat
|
|
3
|
+
} from "./chunk-AOSXRXGA.js";
|
|
4
|
+
import {
|
|
5
|
+
formatErrorMessageText
|
|
6
|
+
} from "./chunk-UJQXNOUG.js";
|
|
7
|
+
import {
|
|
8
|
+
isTouchDevice
|
|
9
|
+
} from "./chunk-52KEWVWB.js";
|
|
10
|
+
|
|
11
|
+
// src/components/DatePicker/DatePicker.tsx
|
|
12
|
+
import { calendarDay } from "@simplybusiness/icons";
|
|
13
|
+
import {
|
|
14
|
+
Button,
|
|
15
|
+
Icon,
|
|
16
|
+
TextField,
|
|
17
|
+
VisuallyHidden,
|
|
18
|
+
useValidationClasses
|
|
19
|
+
} from "@simplybusiness/mobius";
|
|
20
|
+
import classNames from "classnames/dedupe";
|
|
21
|
+
import {
|
|
22
|
+
Suspense,
|
|
23
|
+
lazy,
|
|
24
|
+
useCallback,
|
|
25
|
+
useEffect,
|
|
26
|
+
useRef,
|
|
27
|
+
useState
|
|
28
|
+
} from "react";
|
|
29
|
+
import "@simplybusiness/mobius-datepicker/src/components/DatePicker/DatePicker.css";
|
|
30
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
31
|
+
var DatePickerModal = lazy(() => import("./components/DatePicker/DatePickerModal.js"));
|
|
32
|
+
var getValidationState = (isInvalid) => {
|
|
33
|
+
if (isInvalid) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
if (isInvalid === false) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
return void 0;
|
|
40
|
+
};
|
|
41
|
+
var DatePicker = (props) => {
|
|
42
|
+
const {
|
|
43
|
+
onChange,
|
|
44
|
+
defaultValue = "",
|
|
45
|
+
isDisabled,
|
|
46
|
+
isInvalid,
|
|
47
|
+
errorMessage = "",
|
|
48
|
+
...otherProps
|
|
49
|
+
} = props;
|
|
50
|
+
const containerRef = useRef(null);
|
|
51
|
+
const [top, setTop] = useState(0);
|
|
52
|
+
const inputRef = useRef(null);
|
|
53
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
54
|
+
const [textFieldVal, setTextFieldVal] = useState(
|
|
55
|
+
validateDateFormat(defaultValue)
|
|
56
|
+
);
|
|
57
|
+
const [isValid, setIsValid] = useState(void 0);
|
|
58
|
+
const isInvalidProp = getValidationState(isValid === false || isInvalid);
|
|
59
|
+
const errorMessageText = isInvalidProp ? formatErrorMessageText(textFieldVal, props.min, props.max) : errorMessage;
|
|
60
|
+
const touchDevice = isTouchDevice();
|
|
61
|
+
const validationClasses = useValidationClasses({ isInvalid: isInvalidProp });
|
|
62
|
+
const containerClasses = classNames(
|
|
63
|
+
"mobius-date-picker__container",
|
|
64
|
+
{
|
|
65
|
+
"--is-disabled": isDisabled,
|
|
66
|
+
"--is-touch-device": touchDevice
|
|
67
|
+
},
|
|
68
|
+
validationClasses
|
|
69
|
+
);
|
|
70
|
+
const popoverToggleClasses = classNames(
|
|
71
|
+
"mobius-date-picker__field-button",
|
|
72
|
+
validationClasses
|
|
73
|
+
);
|
|
74
|
+
const validate = useCallback(() => {
|
|
75
|
+
if (isOpen) return;
|
|
76
|
+
const isValidInput = inputRef.current?.checkValidity();
|
|
77
|
+
if (!isValidInput) {
|
|
78
|
+
setIsValid(false);
|
|
79
|
+
}
|
|
80
|
+
}, [isOpen]);
|
|
81
|
+
useEffect(() => {
|
|
82
|
+
if (!inputRef.current) return;
|
|
83
|
+
const validatedValue = validateDateFormat(defaultValue);
|
|
84
|
+
setTextFieldVal(validatedValue);
|
|
85
|
+
inputRef.current.value = validatedValue;
|
|
86
|
+
setIsValid(true);
|
|
87
|
+
validate();
|
|
88
|
+
}, [defaultValue, validate]);
|
|
89
|
+
const togglePopoverVisibility = () => {
|
|
90
|
+
setIsValid(true);
|
|
91
|
+
setIsOpen(!isOpen);
|
|
92
|
+
};
|
|
93
|
+
const handleTextFieldChange = (event) => {
|
|
94
|
+
setTextFieldVal(event.target.value);
|
|
95
|
+
setIsValid(true);
|
|
96
|
+
};
|
|
97
|
+
const onDateSelected = (selectedDate) => {
|
|
98
|
+
if (selectedDate) {
|
|
99
|
+
setTextFieldVal(selectedDate);
|
|
100
|
+
setIsValid(true);
|
|
101
|
+
onChange?.(selectedDate);
|
|
102
|
+
}
|
|
103
|
+
inputRef.current?.focus();
|
|
104
|
+
setIsOpen(false);
|
|
105
|
+
};
|
|
106
|
+
const handleBlur = (event) => {
|
|
107
|
+
const target = event.target;
|
|
108
|
+
if (isOpen && event.relatedTarget && containerRef.current?.contains(event.relatedTarget)) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
validate();
|
|
112
|
+
if (!textFieldVal) {
|
|
113
|
+
setIsValid(false);
|
|
114
|
+
}
|
|
115
|
+
onChange?.(target.value);
|
|
116
|
+
};
|
|
117
|
+
const handleClick = (event) => {
|
|
118
|
+
event.preventDefault();
|
|
119
|
+
togglePopoverVisibility();
|
|
120
|
+
};
|
|
121
|
+
useEffect(() => {
|
|
122
|
+
if (isOpen) {
|
|
123
|
+
setTop(containerRef.current?.getBoundingClientRect().height || 0);
|
|
124
|
+
setIsValid(true);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
validate();
|
|
128
|
+
}, [isOpen, validate]);
|
|
129
|
+
if (touchDevice) {
|
|
130
|
+
return /* @__PURE__ */ jsx("div", { className: containerClasses, children: /* @__PURE__ */ jsx(
|
|
131
|
+
TextField,
|
|
132
|
+
{
|
|
133
|
+
ref: inputRef,
|
|
134
|
+
type: "date",
|
|
135
|
+
className: "mobius-date-picker",
|
|
136
|
+
onBlur: handleBlur,
|
|
137
|
+
onChange: handleTextFieldChange,
|
|
138
|
+
value: textFieldVal,
|
|
139
|
+
isDisabled,
|
|
140
|
+
isInvalid: isInvalidProp,
|
|
141
|
+
...otherProps,
|
|
142
|
+
errorMessage: errorMessage || errorMessageText
|
|
143
|
+
}
|
|
144
|
+
) });
|
|
145
|
+
}
|
|
146
|
+
return /* @__PURE__ */ jsxs("div", { className: containerClasses, ref: containerRef, children: [
|
|
147
|
+
/* @__PURE__ */ jsx(
|
|
148
|
+
TextField,
|
|
149
|
+
{
|
|
150
|
+
ref: inputRef,
|
|
151
|
+
type: "date",
|
|
152
|
+
className: "mobius-date-picker",
|
|
153
|
+
onBlur: handleBlur,
|
|
154
|
+
onChange: handleTextFieldChange,
|
|
155
|
+
onClick: handleClick,
|
|
156
|
+
value: textFieldVal,
|
|
157
|
+
isDisabled,
|
|
158
|
+
isInvalid: isInvalidProp,
|
|
159
|
+
...otherProps,
|
|
160
|
+
errorMessage: errorMessage || errorMessageText,
|
|
161
|
+
suffixOutside: /* @__PURE__ */ jsxs(
|
|
162
|
+
Button,
|
|
163
|
+
{
|
|
164
|
+
className: popoverToggleClasses,
|
|
165
|
+
onClick: togglePopoverVisibility,
|
|
166
|
+
isDisabled,
|
|
167
|
+
size: "sm",
|
|
168
|
+
children: [
|
|
169
|
+
/* @__PURE__ */ jsx(Icon, { size: "sm", icon: calendarDay }),
|
|
170
|
+
/* @__PURE__ */ jsx(VisuallyHidden, { children: "Pick date" })
|
|
171
|
+
]
|
|
172
|
+
}
|
|
173
|
+
)
|
|
174
|
+
}
|
|
175
|
+
),
|
|
176
|
+
isOpen && /* @__PURE__ */ jsx(Suspense, { children: /* @__PURE__ */ jsx(
|
|
177
|
+
DatePickerModal,
|
|
178
|
+
{
|
|
179
|
+
date: textFieldVal,
|
|
180
|
+
isOpen,
|
|
181
|
+
top,
|
|
182
|
+
onSelected: onDateSelected,
|
|
183
|
+
min: props.min,
|
|
184
|
+
max: props.max
|
|
185
|
+
}
|
|
186
|
+
) })
|
|
187
|
+
] });
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
export {
|
|
191
|
+
DatePicker
|
|
192
|
+
};
|
|
193
|
+
//# sourceMappingURL=chunk-TAURHEHL.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/DatePicker/DatePicker.tsx"],
|
|
4
|
+
"sourcesContent": ["\"use client\";\n\nimport { calendarDay } from \"@simplybusiness/icons\";\nimport type {\n TextFieldElementType,\n TextFieldProps,\n Validation,\n} from \"@simplybusiness/mobius\";\nimport {\n Button,\n Icon,\n TextField,\n VisuallyHidden,\n useValidationClasses,\n} from \"@simplybusiness/mobius\";\nimport classNames from \"classnames/dedupe\";\nimport type { ChangeEvent, FocusEvent } from \"react\";\nimport {\n Suspense,\n lazy,\n useCallback,\n useEffect,\n useRef,\n useState,\n type MouseEvent,\n} from \"react\";\nimport { isTouchDevice } from \"../../utils/isTouchDevice\";\nimport { formatErrorMessageText, validateDateFormat } from \"./utils\";\nimport \"./DatePicker.css\";\n\nconst DatePickerModal = lazy(() => import(\"./DatePickerModal\"));\n\nconst getValidationState = (isInvalid: boolean | undefined) => {\n if (isInvalid) {\n return true;\n }\n\n if (isInvalid === false) {\n return false;\n }\n\n return undefined;\n};\n\nexport interface DatePickerProps\n extends\n Validation,\n Omit<TextFieldProps, \"defaultValue\" | \"onChange\" | \"onBlur\" | \"onFocus\"> {\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 isInvalid,\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 | undefined>(undefined);\n const isInvalidProp = getValidationState(isValid === false || isInvalid);\n const errorMessageText = isInvalidProp\n ? formatErrorMessageText(textFieldVal, props.min, props.max)\n : errorMessage;\n const touchDevice = isTouchDevice();\n\n const validationClasses = useValidationClasses({ isInvalid: isInvalidProp });\n\n const containerClasses = classNames(\n \"mobius-date-picker__container\",\n {\n \"--is-disabled\": isDisabled,\n \"--is-touch-device\": touchDevice,\n },\n validationClasses,\n );\n\n const popoverToggleClasses = classNames(\n \"mobius-date-picker__field-button\",\n validationClasses,\n );\n\n const validate = useCallback(() => {\n if (isOpen) return;\n\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 }, [isOpen]);\n\n useEffect(() => {\n if (!inputRef.current) return;\n const validatedValue = validateDateFormat(defaultValue);\n setTextFieldVal(validatedValue);\n inputRef.current.value = validatedValue;\n setIsValid(true);\n validate();\n }, [defaultValue, validate]);\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 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 // Focus the input\n inputRef.current?.focus();\n setIsOpen(false);\n };\n\n // User has interacted with the component and navigated away\n const handleBlur = (event: FocusEvent) => {\n const target = event.target as TextFieldElementType;\n // If the blur is caused by focusing on the DayPicker modal, do nothing\n // The modal is rendered after the input in the DOM,\n // so check if the relatedTarget is inside the modal\n if (\n isOpen &&\n event.relatedTarget &&\n containerRef.current?.contains(event.relatedTarget as HTMLElement)\n ) {\n return;\n }\n validate();\n\n // User hasn't entered a date, or entered an invalid date\n if (!textFieldVal) {\n setIsValid(false);\n }\n\n onChange?.(target.value);\n };\n\n const handleClick = (event: MouseEvent<TextFieldElementType>) => {\n event.preventDefault();\n togglePopoverVisibility();\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, validate]);\n\n if (touchDevice) {\n return (\n <div className={containerClasses}>\n <TextField\n ref={inputRef}\n type=\"date\"\n className=\"mobius-date-picker\"\n onBlur={handleBlur}\n onChange={handleTextFieldChange}\n value={textFieldVal}\n isDisabled={isDisabled}\n isInvalid={isInvalidProp}\n {...otherProps}\n errorMessage={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-date-picker\"\n onBlur={handleBlur}\n onChange={handleTextFieldChange}\n // @ts-expect-error onClick is not in TextField's props but is passed through via otherProps spread\n onClick={handleClick}\n value={textFieldVal}\n isDisabled={isDisabled}\n isInvalid={isInvalidProp}\n {...otherProps}\n errorMessage={errorMessage || errorMessageText}\n suffixOutside={\n <Button\n className={popoverToggleClasses}\n onClick={togglePopoverVisibility}\n isDisabled={isDisabled}\n size=\"sm\"\n >\n <Icon size=\"sm\" icon={calendarDay} />\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 min={props.min}\n max={props.max}\n />\n </Suspense>\n )}\n </div>\n );\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// src/components/DatePicker/utils/formatErrorMessageText.ts
|
|
2
|
+
import { isAfter, isBefore } from "date-fns";
|
|
3
|
+
var DEFAULT_INVALID_DATE_MESSAGE = "Please enter a valid date";
|
|
4
|
+
var DEFAULT_BEFORE_MIN = "The date you selected is before the earliest allowed date";
|
|
5
|
+
var DEFAULT_AFTER_MAX = "The date you selected is after the latest allowed date";
|
|
6
|
+
var formatErrorMessageText = (actual, min, max) => {
|
|
7
|
+
const actualDate = new Date(actual);
|
|
8
|
+
const minDate = min && new Date(min);
|
|
9
|
+
const maxDate = max && new Date(max);
|
|
10
|
+
if (minDate && isBefore(actualDate, minDate)) {
|
|
11
|
+
return DEFAULT_BEFORE_MIN;
|
|
12
|
+
}
|
|
13
|
+
if (maxDate && isAfter(actualDate, maxDate)) {
|
|
14
|
+
return DEFAULT_AFTER_MAX;
|
|
15
|
+
}
|
|
16
|
+
return DEFAULT_INVALID_DATE_MESSAGE;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export {
|
|
20
|
+
DEFAULT_INVALID_DATE_MESSAGE,
|
|
21
|
+
DEFAULT_BEFORE_MIN,
|
|
22
|
+
DEFAULT_AFTER_MAX,
|
|
23
|
+
formatErrorMessageText
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=chunk-UJQXNOUG.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/DatePicker/utils/formatErrorMessageText.ts"],
|
|
4
|
+
"sourcesContent": ["import { isAfter, isBefore } from \"date-fns\";\n\nexport const DEFAULT_INVALID_DATE_MESSAGE = \"Please enter a valid date\";\nexport const DEFAULT_BEFORE_MIN =\n \"The date you selected is before the earliest allowed date\";\nexport const DEFAULT_AFTER_MAX =\n \"The date you selected is after the latest allowed date\";\n\nexport const formatErrorMessageText = (\n actual: string,\n min?: string,\n max?: string,\n) => {\n const actualDate = new Date(actual);\n const minDate = min && new Date(min);\n const maxDate = max && new Date(max);\n\n if (minDate && isBefore(actualDate, minDate)) {\n return DEFAULT_BEFORE_MIN;\n }\n\n if (maxDate && isAfter(actualDate, maxDate)) {\n return DEFAULT_AFTER_MAX;\n }\n\n return DEFAULT_INVALID_DATE_MESSAGE;\n};\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAS,SAAS,gBAAgB;AAE3B,IAAM,+BAA+B;AACrC,IAAM,qBACX;AACK,IAAM,oBACX;AAEK,IAAM,yBAAyB,CACpC,QACA,KACA,QACG;AACH,QAAM,aAAa,IAAI,KAAK,MAAM;AAClC,QAAM,UAAU,OAAO,IAAI,KAAK,GAAG;AACnC,QAAM,UAAU,OAAO,IAAI,KAAK,GAAG;AAEnC,MAAI,WAAW,SAAS,YAAY,OAAO,GAAG;AAC5C,WAAO;AAAA,EACT;AAEA,MAAI,WAAW,QAAQ,YAAY,OAAO,GAAG;AAC3C,WAAO;AAAA,EACT;AAEA,SAAO;AACT;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=chunk-UNC7C5OV.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import "../../../chunk-24MISPYQ.js";
|
|
2
|
+
import {
|
|
3
|
+
CaptionLabel
|
|
4
|
+
} from "../../../chunk-KW6EFBPT.js";
|
|
5
|
+
import {
|
|
6
|
+
ChevronComponent
|
|
7
|
+
} from "../../../chunk-GKDMKCFX.js";
|
|
8
|
+
export {
|
|
9
|
+
CaptionLabel,
|
|
10
|
+
ChevronComponent
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
DatePicker
|
|
4
|
+
} from "../../chunk-TAURHEHL.js";
|
|
5
|
+
import "../../chunk-E5XSED6Z.js";
|
|
6
|
+
import "../../chunk-AOSXRXGA.js";
|
|
7
|
+
import "../../chunk-A62CZFEQ.js";
|
|
8
|
+
import "../../chunk-4UUTCJ7P.js";
|
|
9
|
+
import "../../chunk-CH3KSJSE.js";
|
|
10
|
+
import "../../chunk-UJQXNOUG.js";
|
|
11
|
+
import "../../chunk-52KEWVWB.js";
|
|
12
|
+
export {
|
|
13
|
+
DatePicker
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=DatePicker.js.map
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
getStartWeekday
|
|
4
|
+
} from "../../chunk-6TTD4G74.js";
|
|
5
|
+
import {
|
|
6
|
+
toLocal
|
|
7
|
+
} from "../../chunk-IVRD2PA6.js";
|
|
8
|
+
import "../../chunk-24MISPYQ.js";
|
|
9
|
+
import {
|
|
10
|
+
CaptionLabel
|
|
11
|
+
} from "../../chunk-KW6EFBPT.js";
|
|
12
|
+
import {
|
|
13
|
+
ChevronComponent
|
|
14
|
+
} from "../../chunk-GKDMKCFX.js";
|
|
15
|
+
import "../../chunk-E5XSED6Z.js";
|
|
16
|
+
import "../../chunk-AOSXRXGA.js";
|
|
17
|
+
import {
|
|
18
|
+
weekdayAsOneLetter
|
|
19
|
+
} from "../../chunk-A62CZFEQ.js";
|
|
20
|
+
import "../../chunk-4UUTCJ7P.js";
|
|
21
|
+
import {
|
|
22
|
+
dateObjToString
|
|
23
|
+
} from "../../chunk-CH3KSJSE.js";
|
|
24
|
+
import "../../chunk-UJQXNOUG.js";
|
|
25
|
+
import {
|
|
26
|
+
FocusTrap
|
|
27
|
+
} from "../../chunk-LR7ML4HC.js";
|
|
28
|
+
|
|
29
|
+
// src/components/DatePicker/DatePickerModal.tsx
|
|
30
|
+
import { useOnClickOutside } from "@simplybusiness/mobius-hooks";
|
|
31
|
+
import { VisuallyHidden } from "@simplybusiness/mobius";
|
|
32
|
+
import classNames from "classnames/dedupe";
|
|
33
|
+
import { parseISO } from "date-fns";
|
|
34
|
+
import { useId, useRef } from "react";
|
|
35
|
+
import { DayPicker } from "react-day-picker";
|
|
36
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
37
|
+
var startWeekday = getStartWeekday(
|
|
38
|
+
// eslint-disable-next-line ssr-friendly/no-dom-globals-in-module-scope
|
|
39
|
+
typeof navigator !== "undefined" ? navigator?.language : void 0
|
|
40
|
+
);
|
|
41
|
+
var DatePickerModal = ({
|
|
42
|
+
date,
|
|
43
|
+
isOpen,
|
|
44
|
+
onSelected,
|
|
45
|
+
top,
|
|
46
|
+
min,
|
|
47
|
+
max
|
|
48
|
+
}) => {
|
|
49
|
+
const modalRef = useRef(null);
|
|
50
|
+
const initialDate = date ? toLocal(date) : void 0;
|
|
51
|
+
const minDate = min ? toLocal(min) : void 0;
|
|
52
|
+
const maxDate = max ? toLocal(max) : void 0;
|
|
53
|
+
const hiddenId = `screen-reader-title-${useId()}`;
|
|
54
|
+
const handleSelected = (selectedDate) => {
|
|
55
|
+
onSelected(selectedDate);
|
|
56
|
+
};
|
|
57
|
+
const handleDayPickerSelect = (selectedDate) => {
|
|
58
|
+
if (!selectedDate) return;
|
|
59
|
+
handleSelected(dateObjToString(selectedDate));
|
|
60
|
+
};
|
|
61
|
+
useOnClickOutside(modalRef, () => {
|
|
62
|
+
if (modalRef.current && isOpen) {
|
|
63
|
+
handleSelected();
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
const modalClasses = classNames("mobius-date-picker__modal", {
|
|
67
|
+
"--is-open": isOpen
|
|
68
|
+
});
|
|
69
|
+
return /* @__PURE__ */ jsx(FocusTrap, { children: /* @__PURE__ */ jsxs(
|
|
70
|
+
"div",
|
|
71
|
+
{
|
|
72
|
+
ref: modalRef,
|
|
73
|
+
className: modalClasses,
|
|
74
|
+
style: { top },
|
|
75
|
+
"aria-describedby": hiddenId,
|
|
76
|
+
"data-testid": "modal-container",
|
|
77
|
+
children: [
|
|
78
|
+
/* @__PURE__ */ jsx(VisuallyHidden, { children: /* @__PURE__ */ jsx("div", { id: hiddenId, children: "Please select a date from the calendar" }) }),
|
|
79
|
+
/* @__PURE__ */ jsx(
|
|
80
|
+
DayPicker,
|
|
81
|
+
{
|
|
82
|
+
autoFocus: true,
|
|
83
|
+
mode: "single",
|
|
84
|
+
...minDate && { startMonth: minDate },
|
|
85
|
+
...maxDate && { endMonth: maxDate },
|
|
86
|
+
disabled: {
|
|
87
|
+
...min && { before: parseISO(min) },
|
|
88
|
+
...max && { after: parseISO(max) }
|
|
89
|
+
},
|
|
90
|
+
selected: initialDate,
|
|
91
|
+
defaultMonth: initialDate,
|
|
92
|
+
onSelect: handleDayPickerSelect,
|
|
93
|
+
pagedNavigation: true,
|
|
94
|
+
showOutsideDays: true,
|
|
95
|
+
weekStartsOn: startWeekday,
|
|
96
|
+
formatters: { formatWeekdayName: weekdayAsOneLetter },
|
|
97
|
+
components: {
|
|
98
|
+
Chevron: ChevronComponent,
|
|
99
|
+
CaptionLabel
|
|
100
|
+
},
|
|
101
|
+
classNames: {
|
|
102
|
+
root: "mobius-date-picker__root",
|
|
103
|
+
months: "mobius-date-picker__months",
|
|
104
|
+
month: "mobius-date-picker__month",
|
|
105
|
+
nav: "mobius-date-picker__nav",
|
|
106
|
+
button_previous: "mobius-date-picker__nav-button --previous",
|
|
107
|
+
button_next: "mobius-date-picker__nav-button --next",
|
|
108
|
+
month_caption: "mobius-date-picker__caption",
|
|
109
|
+
caption_label: "mobius-date-picker__caption-label",
|
|
110
|
+
month_grid: "mobius-date-picker__month-grid",
|
|
111
|
+
weekdays: "mobius-date-picker__weekdays",
|
|
112
|
+
weekday: "mobius-date-picker__weekday",
|
|
113
|
+
weeks: "mobius-date-picker__weeks",
|
|
114
|
+
week: "mobius-date-picker__week",
|
|
115
|
+
day: "mobius-date-picker__day",
|
|
116
|
+
day_button: "mobius-date-picker__day-button",
|
|
117
|
+
selected: "--is-selected",
|
|
118
|
+
disabled: "--is-disabled",
|
|
119
|
+
outside: "--is-outside",
|
|
120
|
+
hidden: "--is-hidden",
|
|
121
|
+
today: "--is-today",
|
|
122
|
+
focused: "--is-focused"
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
)
|
|
126
|
+
]
|
|
127
|
+
}
|
|
128
|
+
) });
|
|
129
|
+
};
|
|
130
|
+
var DatePickerModal_default = DatePickerModal;
|
|
131
|
+
export {
|
|
132
|
+
DatePickerModal_default as default
|
|
133
|
+
};
|
|
134
|
+
//# sourceMappingURL=DatePickerModal.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/DatePicker/DatePickerModal.tsx"],
|
|
4
|
+
"sourcesContent": ["\"use client\";\n\nimport { useOnClickOutside } from \"@simplybusiness/mobius-hooks\";\nimport { VisuallyHidden } from \"@simplybusiness/mobius\";\nimport classNames from \"classnames/dedupe\";\nimport { parseISO } from \"date-fns\";\nimport { useId, useRef } from \"react\";\nimport type { Matcher } from \"react-day-picker\";\nimport { DayPicker } from \"react-day-picker\";\nimport FocusTrap from \"../../hooks/useFocusTrap/useFocusTrap\";\nimport { dateObjToString, weekdayAsOneLetter } from \"./utils\";\nimport { getStartWeekday } from \"./utils/getStartWeekday\";\nimport { toLocal } from \"./utils/timezoneOffset\";\nimport { ChevronComponent, CaptionLabel } from \"./CustomComponents\";\n\nexport type DatePickerModalProps = {\n date?: string; // yyyy-mm-dd\n isOpen: boolean;\n top: number;\n onSelected: (date?: string) => void;\n min?: string;\n max?: string;\n};\n\nconst startWeekday = getStartWeekday(\n // eslint-disable-next-line ssr-friendly/no-dom-globals-in-module-scope\n typeof navigator !== \"undefined\" ? navigator?.language : undefined,\n);\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 ? toLocal(date) : undefined;\n const minDate = min ? toLocal(min) : undefined;\n const maxDate = max ? toLocal(max) : undefined;\n const hiddenId = `screen-reader-title-${useId()}`;\n\n const handleSelected = (selectedDate?: string) => {\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-date-picker__modal\", {\n \"--is-open\": isOpen,\n });\n\n return (\n <FocusTrap>\n <div\n ref={modalRef}\n className={modalClasses}\n style={{ top }}\n aria-describedby={hiddenId}\n data-testid=\"modal-container\"\n >\n <VisuallyHidden>\n <div id={hiddenId}>Please select a date from the calendar</div>\n </VisuallyHidden>\n <DayPicker\n autoFocus\n mode=\"single\"\n {...(minDate && { startMonth: minDate })}\n {...(maxDate && { endMonth: maxDate })}\n disabled={\n {\n ...(min && { before: parseISO(min) }),\n ...(max && { after: parseISO(max) }),\n } as Matcher\n }\n selected={initialDate}\n defaultMonth={initialDate}\n onSelect={handleDayPickerSelect}\n pagedNavigation\n showOutsideDays\n weekStartsOn={startWeekday}\n formatters={{ formatWeekdayName: weekdayAsOneLetter }}\n components={{\n Chevron: ChevronComponent,\n CaptionLabel,\n }}\n classNames={{\n root: \"mobius-date-picker__root\",\n months: \"mobius-date-picker__months\",\n month: \"mobius-date-picker__month\",\n nav: \"mobius-date-picker__nav\",\n button_previous: \"mobius-date-picker__nav-button --previous\",\n button_next: \"mobius-date-picker__nav-button --next\",\n month_caption: \"mobius-date-picker__caption\",\n caption_label: \"mobius-date-picker__caption-label\",\n month_grid: \"mobius-date-picker__month-grid\",\n weekdays: \"mobius-date-picker__weekdays\",\n weekday: \"mobius-date-picker__weekday\",\n weeks: \"mobius-date-picker__weeks\",\n week: \"mobius-date-picker__week\",\n day: \"mobius-date-picker__day\",\n day_button: \"mobius-date-picker__day-button\",\n selected: \"--is-selected\",\n disabled: \"--is-disabled\",\n outside: \"--is-outside\",\n hidden: \"--is-hidden\",\n today: \"--is-today\",\n focused: \"--is-focused\",\n }}\n />\n </div>\n </FocusTrap>\n );\n};\n\nexport default DatePickerModal;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAC/B,OAAO,gBAAgB;AACvB,SAAS,gBAAgB;AACzB,SAAS,OAAO,cAAc;AAE9B,SAAS,iBAAiB;AAyDpB,SAQI,KARJ;AAzCN,IAAM,eAAe;AAAA;AAAA,EAEnB,OAAO,cAAc,cAAc,WAAW,WAAW;AAC3D;AAEA,IAAM,kBAAkB,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA4B;AAC1B,QAAM,WAAW,OAAuB,IAAI;AAC5C,QAAM,cAAc,OAAO,QAAQ,IAAI,IAAI;AAC3C,QAAM,UAAU,MAAM,QAAQ,GAAG,IAAI;AACrC,QAAM,UAAU,MAAM,QAAQ,GAAG,IAAI;AACrC,QAAM,WAAW,uBAAuB,MAAM,CAAC;AAE/C,QAAM,iBAAiB,CAAC,iBAA0B;AAChD,eAAW,YAAY;AAAA,EACzB;AAEA,QAAM,wBAAwB,CAAC,iBAAmC;AAChE,QAAI,CAAC,aAAc;AAEnB,mBAAe,gBAAgB,YAAY,CAAC;AAAA,EAC9C;AAEA,oBAAkB,UAAU,MAAM;AAChC,QAAI,SAAS,WAAW,QAAQ;AAC9B,qBAAe;AAAA,IACjB;AAAA,EACF,CAAC;AAED,QAAM,eAAe,WAAW,6BAA6B;AAAA,IAC3D,aAAa;AAAA,EACf,CAAC;AAED,SACE,oBAAC,aACC;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAW;AAAA,MACX,OAAO,EAAE,IAAI;AAAA,MACb,oBAAkB;AAAA,MAClB,eAAY;AAAA,MAEZ;AAAA,4BAAC,kBACC,8BAAC,SAAI,IAAI,UAAU,oDAAsC,GAC3D;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,WAAS;AAAA,YACT,MAAK;AAAA,YACJ,GAAI,WAAW,EAAE,YAAY,QAAQ;AAAA,YACrC,GAAI,WAAW,EAAE,UAAU,QAAQ;AAAA,YACpC,UACE;AAAA,cACE,GAAI,OAAO,EAAE,QAAQ,SAAS,GAAG,EAAE;AAAA,cACnC,GAAI,OAAO,EAAE,OAAO,SAAS,GAAG,EAAE;AAAA,YACpC;AAAA,YAEF,UAAU;AAAA,YACV,cAAc;AAAA,YACd,UAAU;AAAA,YACV,iBAAe;AAAA,YACf,iBAAe;AAAA,YACf,cAAc;AAAA,YACd,YAAY,EAAE,mBAAmB,mBAAmB;AAAA,YACpD,YAAY;AAAA,cACV,SAAS;AAAA,cACT;AAAA,YACF;AAAA,YACA,YAAY;AAAA,cACV,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,KAAK;AAAA,cACL,iBAAiB;AAAA,cACjB,aAAa;AAAA,cACb,eAAe;AAAA,cACf,eAAe;AAAA,cACf,YAAY;AAAA,cACZ,UAAU;AAAA,cACV,SAAS;AAAA,cACT,OAAO;AAAA,cACP,MAAM;AAAA,cACN,KAAK;AAAA,cACL,YAAY;AAAA,cACZ,UAAU;AAAA,cACV,UAAU;AAAA,cACV,SAAS;AAAA,cACT,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,SAAS;AAAA,YACX;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF,GACF;AAEJ;AAEA,IAAO,0BAAQ;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import "../../chunk-5CHWCZUP.js";
|
|
2
|
+
import {
|
|
3
|
+
DatePicker
|
|
4
|
+
} from "../../chunk-TAURHEHL.js";
|
|
5
|
+
import "../../chunk-E5XSED6Z.js";
|
|
6
|
+
import "../../chunk-AOSXRXGA.js";
|
|
7
|
+
import "../../chunk-A62CZFEQ.js";
|
|
8
|
+
import "../../chunk-4UUTCJ7P.js";
|
|
9
|
+
import "../../chunk-CH3KSJSE.js";
|
|
10
|
+
import "../../chunk-UJQXNOUG.js";
|
|
11
|
+
import "../../chunk-52KEWVWB.js";
|
|
12
|
+
export {
|
|
13
|
+
DatePicker
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DEFAULT_AFTER_MAX,
|
|
3
|
+
DEFAULT_BEFORE_MIN,
|
|
4
|
+
DEFAULT_INVALID_DATE_MESSAGE,
|
|
5
|
+
formatErrorMessageText
|
|
6
|
+
} from "../../../chunk-UJQXNOUG.js";
|
|
7
|
+
export {
|
|
8
|
+
DEFAULT_AFTER_MAX,
|
|
9
|
+
DEFAULT_BEFORE_MIN,
|
|
10
|
+
DEFAULT_INVALID_DATE_MESSAGE,
|
|
11
|
+
formatErrorMessageText
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=formatErrorMessageText.js.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import "../../../chunk-E5XSED6Z.js";
|
|
2
|
+
import {
|
|
3
|
+
DATE_FORMAT,
|
|
4
|
+
validateDateFormat
|
|
5
|
+
} from "../../../chunk-AOSXRXGA.js";
|
|
6
|
+
import {
|
|
7
|
+
weekdayAsOneLetter
|
|
8
|
+
} from "../../../chunk-A62CZFEQ.js";
|
|
9
|
+
import "../../../chunk-4UUTCJ7P.js";
|
|
10
|
+
import {
|
|
11
|
+
dateObjToString
|
|
12
|
+
} from "../../../chunk-CH3KSJSE.js";
|
|
13
|
+
import {
|
|
14
|
+
DEFAULT_AFTER_MAX,
|
|
15
|
+
DEFAULT_BEFORE_MIN,
|
|
16
|
+
DEFAULT_INVALID_DATE_MESSAGE,
|
|
17
|
+
formatErrorMessageText
|
|
18
|
+
} from "../../../chunk-UJQXNOUG.js";
|
|
19
|
+
export {
|
|
20
|
+
DATE_FORMAT,
|
|
21
|
+
DEFAULT_AFTER_MAX,
|
|
22
|
+
DEFAULT_BEFORE_MIN,
|
|
23
|
+
DEFAULT_INVALID_DATE_MESSAGE,
|
|
24
|
+
dateObjToString,
|
|
25
|
+
formatErrorMessageText,
|
|
26
|
+
validateDateFormat,
|
|
27
|
+
weekdayAsOneLetter
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=index.js.map
|