@basic-ui/dates 0.0.47 → 0.0.50
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/README.md +3 -3
- package/build/cjs/index.js +29 -52
- package/build/cjs/index.js.map +1 -1
- package/build/esm/DatePicker/DatePicker.d.ts +24 -24
- package/build/esm/DatePicker/DatePicker.js +52 -68
- package/build/esm/DatePicker/DatePicker.js.map +1 -1
- package/build/esm/DatePicker/DatePickerSelect.d.ts +8 -8
- package/build/esm/DatePicker/DatePickerSelect.js +87 -110
- package/build/esm/DatePicker/DatePickerSelect.js.map +1 -1
- package/build/esm/DatePicker/RangeDatePicker.d.ts +28 -28
- package/build/esm/DatePicker/RangeDatePicker.js +54 -71
- package/build/esm/DatePicker/RangeDatePicker.js.map +1 -1
- package/build/esm/DatePicker/adjustDates.d.ts +4 -4
- package/build/esm/DatePicker/adjustDates.js +2 -3
- package/build/esm/DatePicker/adjustDates.js.map +1 -1
- package/build/esm/DatePicker/contexts.d.ts +31 -31
- package/build/esm/DatePicker/contexts.js +16 -13
- package/build/esm/DatePicker/contexts.js.map +1 -1
- package/build/esm/DatePicker/dateTypes.d.ts +15 -15
- package/build/esm/DatePicker/dateTypes.js.map +1 -1
- package/build/esm/DatePicker/hooks.d.ts +36 -36
- package/build/esm/DatePicker/hooks.js +44 -40
- package/build/esm/DatePicker/hooks.js.map +1 -1
- package/build/esm/DatePicker/index.d.ts +5 -5
- package/build/esm/DatePicker/index.js.map +1 -1
- package/build/esm/index.d.ts +1 -1
- package/build/esm/index.js.map +1 -1
- package/build/tsconfig-build.tsbuildinfo +1 -1
- package/package.json +4 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.js","names":["forwardRef","useMemo","useRef","useReducer","assignMultipleRefs","reducer","useRangeDatePickerContext","DatePickerProvider","usePropsMerge","props","context","type","Error","mergedProps","minDate","maxDate","dayNames","monthNames","value","from","onChange","onChangeFrom","to","onChangeTo","undefined","Date","valueOf","DatePicker","ref","as","Comp","propMinDate","propMaxDate","controlledValue","defaultValue","rest","datePickerRef","onChangeRef","current","controlledValueRef","initialData","isFocused","navigationDay","navigationMonth","navigationYear","selectedDate","state","dispatch","contextValue"],"sources":["../../../src/DatePicker/DatePicker.tsx"],"sourcesContent":["import type { ElementType, HTMLAttributes } from 'react';\
|
|
1
|
+
{"version":3,"file":"DatePicker.js","names":["forwardRef","useMemo","useRef","useReducer","assignMultipleRefs","reducer","useRangeDatePickerContext","DatePickerProvider","jsx","_jsx","usePropsMerge","props","context","type","Error","mergedProps","minDate","maxDate","dayNames","monthNames","value","from","onChange","onChangeFrom","to","onChangeTo","undefined","Date","valueOf","DatePicker","ref","as","Comp","propMinDate","propMaxDate","controlledValue","defaultValue","rest","datePickerRef","onChangeRef","current","controlledValueRef","initialData","isFocused","navigationDay","navigationMonth","navigationYear","selectedDate","state","dispatch","contextValue","children"],"sources":["../../../src/DatePicker/DatePicker.tsx"],"sourcesContent":["import type { ElementType, HTMLAttributes } from 'react';\nimport { forwardRef, useMemo, useRef, useReducer } from 'react';\nimport { assignMultipleRefs } from '@basic-ui/core';\n\nimport type { ReducerState } from './hooks';\nimport { reducer } from './hooks';\nimport type { DayNames, MonthNames } from './dateTypes';\nimport type { DatePickerContextProps } from './contexts';\nimport { useRangeDatePickerContext, DatePickerProvider } from './contexts';\n\nexport type DatePickerProps = Omit<\n HTMLAttributes<HTMLDivElement>,\n 'value' | 'defaultValue' | 'onChange'\n> & {\n as?: ElementType<any>;\n minDate?: Date;\n maxDate?: Date;\n dayNames?: DayNames;\n monthNames?: MonthNames;\n onChange?: (from: Date | null) => void;\n value?: Date | null;\n defaultValue?: Date | null;\n type?: 'from' | 'to';\n};\n\n/**\n * Merges props from RangeDatePicker and DatePicker\n */\nfunction usePropsMerge(props: DatePickerProps) {\n const context = useRangeDatePickerContext();\n if (context && !props.type) {\n throw new Error(\n \"<DatePicker /> as a children of <RangeDatePicker /> needs a 'type'\"\n );\n }\n\n if (!context) {\n return props;\n } else {\n const mergedProps = {\n ...props,\n minDate: context.minDate,\n maxDate: context.maxDate,\n dayNames: context.dayNames,\n monthNames: context.monthNames,\n ...(props.type === 'from'\n ? {\n value: context.from,\n onChange: context.onChangeFrom,\n }\n : {\n // props.type === 'to'\n value: context.to,\n onChange: context.onChangeTo,\n minDate:\n context.from !== null && context.from !== undefined\n ? new Date(context.from.valueOf() + 86400000)\n : context.minDate,\n }),\n };\n\n return mergedProps;\n }\n}\n\nexport const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n function DatePicker(props, ref) {\n const {\n as: Comp = 'div',\n minDate: propMinDate = new Date(0),\n maxDate: propMaxDate = new Date(),\n dayNames,\n monthNames,\n onChange,\n value: controlledValue,\n defaultValue,\n type, // just to avoid passing it to DOM\n ...rest\n } = usePropsMerge(props);\n const datePickerRef = useRef<HTMLDivElement | null>(null);\n const minDate = propMinDate,\n maxDate = propMaxDate;\n\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const controlledValueRef = useRef(controlledValue);\n controlledValueRef.current = controlledValue;\n\n const initialData: ReducerState = {\n isFocused: false,\n navigationDay: -1,\n navigationMonth: -1,\n navigationYear: -1,\n selectedDate: defaultValue !== undefined ? defaultValue : null,\n };\n const [state, dispatch] = useReducer(reducer, initialData);\n\n if (!dayNames || !monthNames) {\n throw new Error(\n 'Props dayNames and monthNames not specified in <DatePicker />'\n );\n }\n\n const contextValue: DatePickerContextProps = useMemo(\n () => ({\n minDate,\n maxDate,\n dayNames,\n monthNames,\n datePickerRef,\n controlledValueRef,\n state,\n dispatch,\n onChangeRef,\n }),\n [maxDate, minDate, dayNames, monthNames, state]\n );\n\n return (\n <DatePickerProvider value={contextValue}>\n <Comp\n ref={assignMultipleRefs(ref, datePickerRef)}\n data-has-focus={state.isFocused ? '' : undefined}\n {...rest}\n />\n </DatePickerProvider>\n );\n }\n);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { ElementType, SelectHTMLAttributes } from 'react';
|
|
2
|
-
export interface DatePickerSelectProps extends SelectHTMLAttributes<HTMLSelectElement> {
|
|
3
|
-
groupType?: 'from' | 'to';
|
|
4
|
-
type: 'month_year' | 'day';
|
|
5
|
-
emptyOption?: string;
|
|
6
|
-
as?: ElementType<any>;
|
|
7
|
-
}
|
|
8
|
-
export declare const DatePickerSelect: import("react").ForwardRefExoticComponent<DatePickerSelectProps & import("react").RefAttributes<unknown>>;
|
|
1
|
+
import type { ElementType, SelectHTMLAttributes } from 'react';
|
|
2
|
+
export interface DatePickerSelectProps extends SelectHTMLAttributes<HTMLSelectElement> {
|
|
3
|
+
groupType?: 'from' | 'to';
|
|
4
|
+
type: 'month_year' | 'day';
|
|
5
|
+
emptyOption?: string;
|
|
6
|
+
as?: ElementType<any>;
|
|
7
|
+
}
|
|
8
|
+
export declare const DatePickerSelect: import("react").ForwardRefExoticComponent<DatePickerSelectProps & import("react").RefAttributes<unknown>>;
|
|
@@ -1,144 +1,127 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
-
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
4
|
-
var _excluded = ["as", "type", "onFocus", "onBlur", "onChange", "children", "emptyOption"];
|
|
5
1
|
import { forwardRef, memo } from 'react';
|
|
6
2
|
import { wrapEvent } from '@basic-ui/core';
|
|
7
3
|
import { differenceInCalendarMonths, addMonths, getDaysInMonth, setDate } from 'date-fns';
|
|
8
4
|
import { useInnerFocus, SET_DATE, NAVIGATE } from './hooks';
|
|
9
5
|
import { useDatePickerContext } from './contexts';
|
|
10
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
7
|
+
const MonthYearOptions = /*#__PURE__*/memo(_ref => {
|
|
8
|
+
let {
|
|
9
|
+
minDate,
|
|
10
|
+
maxDate,
|
|
11
|
+
monthNames,
|
|
12
|
+
emptyOption
|
|
13
|
+
} = _ref;
|
|
14
|
+
const ret = [/*#__PURE__*/_jsx("option", {
|
|
19
15
|
value: "",
|
|
20
16
|
disabled: true,
|
|
21
17
|
children: emptyOption
|
|
22
18
|
}, 'empty')];
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
value: "".concat(year, "-").concat(month),
|
|
19
|
+
const diff = differenceInCalendarMonths(maxDate, minDate);
|
|
20
|
+
for (let i = 0; i <= diff; i++) {
|
|
21
|
+
const date = addMonths(minDate, i);
|
|
22
|
+
const year = date.getFullYear();
|
|
23
|
+
const month = date.getMonth();
|
|
24
|
+
ret.push(/*#__PURE__*/_jsxs("option", {
|
|
25
|
+
value: `${year}-${month}`,
|
|
31
26
|
children: [monthNames[month], " ", year]
|
|
32
|
-
},
|
|
27
|
+
}, `${year}_${month}`));
|
|
33
28
|
}
|
|
34
|
-
|
|
35
29
|
return /*#__PURE__*/_jsx(_Fragment, {
|
|
36
30
|
children: ret
|
|
37
31
|
});
|
|
38
32
|
});
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
33
|
+
const DayOptions = /*#__PURE__*/memo(_ref2 => {
|
|
34
|
+
let {
|
|
35
|
+
date = new Date(0),
|
|
36
|
+
dayNames,
|
|
37
|
+
minDate,
|
|
38
|
+
emptyOption
|
|
39
|
+
} = _ref2;
|
|
46
40
|
if (!date) {
|
|
47
41
|
return null;
|
|
48
42
|
}
|
|
49
|
-
|
|
50
|
-
var ret = [/*#__PURE__*/_jsx("option", {
|
|
43
|
+
const ret = [/*#__PURE__*/_jsx("option", {
|
|
51
44
|
value: "",
|
|
52
45
|
disabled: true,
|
|
53
46
|
children: emptyOption
|
|
54
47
|
}, 'empty')];
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
value: "".concat(day),
|
|
48
|
+
for (let day = 1; day <= getDaysInMonth(date); day++) {
|
|
49
|
+
const newDate = setDate(date, day);
|
|
50
|
+
ret.push(/*#__PURE__*/_jsxs("option", {
|
|
51
|
+
value: `${day}`,
|
|
60
52
|
disabled: newDate.valueOf() < minDate.valueOf(),
|
|
61
53
|
children: [(newDate.getDay(), dayNames[newDate.getDay()]), " ", day]
|
|
62
|
-
},
|
|
54
|
+
}, `day_${day}`));
|
|
63
55
|
}
|
|
64
|
-
|
|
65
56
|
return /*#__PURE__*/_jsx(_Fragment, {
|
|
66
57
|
children: ret
|
|
67
58
|
});
|
|
68
59
|
});
|
|
69
|
-
export
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
60
|
+
export const DatePickerSelect = /*#__PURE__*/forwardRef(function DatePicker(_ref3, ref) {
|
|
61
|
+
let {
|
|
62
|
+
as: Comp = 'select',
|
|
63
|
+
type,
|
|
64
|
+
onFocus,
|
|
65
|
+
onBlur,
|
|
66
|
+
onChange,
|
|
67
|
+
children,
|
|
68
|
+
emptyOption = '',
|
|
69
|
+
...rest
|
|
70
|
+
} = _ref3;
|
|
71
|
+
const {
|
|
72
|
+
minDate,
|
|
73
|
+
maxDate,
|
|
74
|
+
monthNames,
|
|
75
|
+
onChangeRef,
|
|
76
|
+
dayNames,
|
|
77
|
+
dispatch,
|
|
78
|
+
controlledValueRef,
|
|
79
|
+
state: data
|
|
80
|
+
} = useDatePickerContext();
|
|
81
|
+
const {
|
|
82
|
+
handleFocus,
|
|
83
|
+
handleBlur
|
|
84
|
+
} = useInnerFocus();
|
|
85
|
+
const {
|
|
86
|
+
selectedDate: stateSelectedDate
|
|
87
|
+
} = data;
|
|
88
|
+
let {
|
|
89
|
+
navigationYear: year,
|
|
90
|
+
navigationMonth: month,
|
|
91
|
+
navigationDay: day
|
|
92
|
+
} = data;
|
|
93
|
+
const selectedDate = controlledValueRef.current !== undefined ? controlledValueRef.current : stateSelectedDate;
|
|
94
|
+
const handleChange = e => {
|
|
95
|
+
const nextState = {
|
|
96
|
+
year,
|
|
97
|
+
month,
|
|
98
|
+
day
|
|
106
99
|
};
|
|
107
|
-
|
|
108
100
|
switch (type) {
|
|
109
101
|
case 'month_year':
|
|
110
102
|
{
|
|
111
103
|
nextState.year = -1;
|
|
112
104
|
nextState.month = -1;
|
|
113
105
|
nextState.day = -1;
|
|
114
|
-
|
|
115
106
|
if (e.target.value) {
|
|
116
|
-
|
|
117
|
-
_e$target$value$split2 = _slicedToArray(_e$target$value$split, 2),
|
|
118
|
-
yearStr = _e$target$value$split2[0],
|
|
119
|
-
monthStr = _e$target$value$split2[1];
|
|
120
|
-
|
|
107
|
+
const [yearStr, monthStr] = e.target.value.split('-');
|
|
121
108
|
nextState.year = parseInt(yearStr, 10);
|
|
122
109
|
nextState.month = parseInt(monthStr, 10);
|
|
123
110
|
nextState.day = -1;
|
|
124
111
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
}
|
|
112
|
+
dispatch({
|
|
113
|
+
type: NAVIGATE,
|
|
114
|
+
...nextState
|
|
115
|
+
});
|
|
129
116
|
break;
|
|
130
117
|
}
|
|
131
|
-
|
|
132
118
|
case 'day':
|
|
133
119
|
{
|
|
134
120
|
nextState.day = -1;
|
|
135
|
-
|
|
136
121
|
if (e.target.value) {
|
|
137
122
|
nextState.day = parseInt(e.target.value, 10);
|
|
138
123
|
}
|
|
139
|
-
|
|
140
|
-
var nextDate = undefined;
|
|
141
|
-
|
|
124
|
+
let nextDate = undefined;
|
|
142
125
|
if (nextState.day !== -1) {
|
|
143
126
|
if (nextState.year >= 0 && nextState.month >= 0) {
|
|
144
127
|
nextDate = new Date(Date.UTC(nextState.year, nextState.month, nextState.day));
|
|
@@ -146,7 +129,6 @@ export var DatePickerSelect = /*#__PURE__*/forwardRef(function DatePicker(_ref3,
|
|
|
146
129
|
nextDate = new Date(Date.UTC(selectedDate.getFullYear(), selectedDate.getMonth(), nextState.day));
|
|
147
130
|
}
|
|
148
131
|
}
|
|
149
|
-
|
|
150
132
|
if (nextDate !== undefined) {
|
|
151
133
|
onChangeRef.current && onChangeRef.current(nextDate);
|
|
152
134
|
dispatch({
|
|
@@ -154,46 +136,41 @@ export var DatePickerSelect = /*#__PURE__*/forwardRef(function DatePicker(_ref3,
|
|
|
154
136
|
selectedDate: nextDate
|
|
155
137
|
});
|
|
156
138
|
} else {
|
|
157
|
-
dispatch(
|
|
158
|
-
type: NAVIGATE
|
|
159
|
-
|
|
139
|
+
dispatch({
|
|
140
|
+
type: NAVIGATE,
|
|
141
|
+
...nextState
|
|
142
|
+
});
|
|
160
143
|
}
|
|
161
|
-
|
|
162
144
|
break;
|
|
163
145
|
}
|
|
164
146
|
}
|
|
165
147
|
};
|
|
166
|
-
|
|
167
148
|
if (year < 0 && month < 0 && day <= 0 && selectedDate !== null) {
|
|
168
149
|
year = selectedDate.getFullYear();
|
|
169
150
|
month = selectedDate.getMonth();
|
|
170
151
|
day = selectedDate.getDate();
|
|
171
152
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
var disabled = false;
|
|
175
|
-
|
|
153
|
+
let value = '';
|
|
154
|
+
let disabled = false;
|
|
176
155
|
if (type === 'month_year') {
|
|
177
156
|
if (month >= 0 && year >= 0) {
|
|
178
|
-
value =
|
|
157
|
+
value = `${year}-${month}`;
|
|
179
158
|
}
|
|
180
159
|
} else if (type === 'day') {
|
|
181
160
|
disabled = month < 0 || year < 0;
|
|
182
|
-
|
|
183
161
|
if (day > 0) {
|
|
184
|
-
value =
|
|
162
|
+
value = `${day}`;
|
|
185
163
|
}
|
|
186
164
|
}
|
|
187
|
-
|
|
188
|
-
return /*#__PURE__*/_jsx(Comp, _extends(_extends({
|
|
165
|
+
return /*#__PURE__*/_jsx(Comp, {
|
|
189
166
|
ref: ref,
|
|
190
167
|
onFocus: wrapEvent(onFocus, handleFocus),
|
|
191
168
|
onBlur: wrapEvent(onBlur, handleBlur),
|
|
192
169
|
onChange: wrapEvent(onChange, handleChange),
|
|
193
170
|
value: value,
|
|
194
171
|
disabled: disabled,
|
|
195
|
-
"data-has-selected": value !== '' ? '' : undefined
|
|
196
|
-
|
|
172
|
+
"data-has-selected": value !== '' ? '' : undefined,
|
|
173
|
+
...rest,
|
|
197
174
|
children: type === 'month_year' ? /*#__PURE__*/_jsx(MonthYearOptions, {
|
|
198
175
|
minDate: minDate,
|
|
199
176
|
maxDate: maxDate,
|
|
@@ -205,6 +182,6 @@ export var DatePickerSelect = /*#__PURE__*/forwardRef(function DatePicker(_ref3,
|
|
|
205
182
|
minDate: minDate,
|
|
206
183
|
emptyOption: emptyOption
|
|
207
184
|
}) : null
|
|
208
|
-
})
|
|
185
|
+
});
|
|
209
186
|
});
|
|
210
187
|
//# sourceMappingURL=DatePickerSelect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerSelect.js","names":["forwardRef","memo","wrapEvent","differenceInCalendarMonths","addMonths","getDaysInMonth","setDate","useInnerFocus","SET_DATE","NAVIGATE","useDatePickerContext","MonthYearOptions","minDate","maxDate","monthNames","emptyOption","ret","diff","i","date","year","getFullYear","month","getMonth","push","DayOptions","Date","dayNames","day","newDate","valueOf","getDay","DatePickerSelect","DatePicker","ref","as","Comp","type","onFocus","onBlur","onChange","children","rest","onChangeRef","dispatch","controlledValueRef","data","state","handleFocus","handleBlur","stateSelectedDate","selectedDate","navigationYear","navigationMonth","navigationDay","current","undefined","handleChange","e","nextState","target","value","split","yearStr","monthStr","parseInt","nextDate","UTC","getDate","disabled"],"sources":["../../../src/DatePicker/DatePickerSelect.tsx"],"sourcesContent":["import type { ChangeEvent, ElementType, SelectHTMLAttributes } from 'react';\r\nimport { forwardRef, memo } from 'react';\r\nimport { wrapEvent } from '@basic-ui/core';\r\nimport {\r\n differenceInCalendarMonths,\r\n addMonths,\r\n getDaysInMonth,\r\n setDate,\r\n} from 'date-fns';\r\n\r\nimport { useInnerFocus, SET_DATE, NAVIGATE } from './hooks';\r\nimport type { DayNames, MonthNames } from './dateTypes';\r\nimport { useDatePickerContext } from './contexts';\r\n\r\nexport interface DatePickerSelectProps\r\n extends SelectHTMLAttributes<HTMLSelectElement> {\r\n groupType?: 'from' | 'to';\r\n type: 'month_year' | 'day';\r\n emptyOption?: string;\r\n\r\n as?: ElementType<any>;\r\n}\r\n\r\nconst MonthYearOptions = memo(\r\n ({\r\n minDate,\r\n maxDate,\r\n monthNames,\r\n emptyOption,\r\n }: {\r\n minDate: Date;\r\n maxDate: Date;\r\n monthNames: MonthNames;\r\n emptyOption: string;\r\n }) => {\r\n const ret = [\r\n <option key={'empty'} value=\"\" disabled>\r\n {emptyOption}\r\n </option>,\r\n ];\r\n\r\n const diff = differenceInCalendarMonths(maxDate, minDate);\r\n for (let i = 0; i <= diff; i++) {\r\n const date = addMonths(minDate, i);\r\n const year = date.getFullYear();\r\n const month = date.getMonth();\r\n\r\n ret.push(\r\n <option key={`${year}_${month}`} value={`${year}-${month}`}>\r\n {monthNames[month]} {year}\r\n </option>\r\n );\r\n }\r\n\r\n return <>{ret}</>;\r\n }\r\n);\r\n\r\nconst DayOptions = memo(\r\n ({\r\n date = new Date(0),\r\n dayNames,\r\n minDate,\r\n emptyOption,\r\n }: {\r\n date: Date | undefined;\r\n dayNames: DayNames;\r\n minDate: Date;\r\n emptyOption: string;\r\n }) => {\r\n if (!date) {\r\n return null;\r\n }\r\n\r\n const ret = [\r\n <option key={'empty'} value=\"\" disabled>\r\n {emptyOption}\r\n </option>,\r\n ];\r\n\r\n for (let day = 1; day <= getDaysInMonth(date); day++) {\r\n const newDate = setDate(date, day);\r\n ret.push(\r\n <option\r\n key={`day_${day}`}\r\n value={`${day}`}\r\n disabled={newDate.valueOf() < minDate.valueOf()}\r\n >\r\n {(newDate.getDay(), dayNames[newDate.getDay()])} {day}\r\n </option>\r\n );\r\n }\r\n\r\n return <>{ret}</>;\r\n }\r\n);\r\n\r\nexport const DatePickerSelect = forwardRef(function DatePicker(\r\n {\r\n as: Comp = 'select',\r\n type,\r\n onFocus,\r\n onBlur,\r\n onChange,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n children,\r\n emptyOption = '',\r\n ...rest\r\n }: DatePickerSelectProps,\r\n ref\r\n) {\r\n const {\r\n minDate,\r\n maxDate,\r\n monthNames,\r\n onChangeRef,\r\n dayNames,\r\n dispatch,\r\n controlledValueRef,\r\n state: data,\r\n } = useDatePickerContext();\r\n const { handleFocus, handleBlur } = useInnerFocus();\r\n\r\n const { selectedDate: stateSelectedDate } = data;\r\n let {\r\n navigationYear: year,\r\n navigationMonth: month,\r\n navigationDay: day,\r\n } = data;\r\n\r\n const selectedDate =\r\n controlledValueRef.current !== undefined\r\n ? controlledValueRef.current\r\n : stateSelectedDate;\r\n\r\n const handleChange = (e: ChangeEvent<HTMLSelectElement>) => {\r\n const nextState = {\r\n year,\r\n month,\r\n day,\r\n };\r\n\r\n switch (type) {\r\n case 'month_year': {\r\n nextState.year = -1;\r\n nextState.month = -1;\r\n nextState.day = -1;\r\n\r\n if (e.target.value) {\r\n const [yearStr, monthStr] = e.target.value.split('-');\r\n nextState.year = parseInt(yearStr, 10);\r\n nextState.month = parseInt(monthStr, 10);\r\n nextState.day = -1;\r\n }\r\n\r\n dispatch({ type: NAVIGATE, ...nextState });\r\n break;\r\n }\r\n case 'day': {\r\n nextState.day = -1;\r\n if (e.target.value) {\r\n nextState.day = parseInt(e.target.value, 10);\r\n }\r\n\r\n let nextDate: Date | undefined = undefined;\r\n if (nextState.day !== -1) {\r\n if (nextState.year >= 0 && nextState.month >= 0) {\r\n nextDate = new Date(\r\n Date.UTC(nextState.year, nextState.month, nextState.day)\r\n );\r\n } else if (selectedDate !== null) {\r\n nextDate = new Date(\r\n Date.UTC(\r\n selectedDate.getFullYear(),\r\n selectedDate.getMonth(),\r\n nextState.day\r\n )\r\n );\r\n }\r\n }\r\n\r\n if (nextDate !== undefined) {\r\n onChangeRef.current && onChangeRef.current(nextDate);\r\n dispatch({ type: SET_DATE, selectedDate: nextDate });\r\n } else {\r\n dispatch({ type: NAVIGATE, ...nextState });\r\n }\r\n break;\r\n }\r\n }\r\n };\r\n\r\n if (year < 0 && month < 0 && day <= 0 && selectedDate !== null) {\r\n year = selectedDate.getFullYear();\r\n month = selectedDate.getMonth();\r\n day = selectedDate.getDate();\r\n }\r\n\r\n let value = '';\r\n let disabled = false;\r\n if (type === 'month_year') {\r\n if (month >= 0 && year >= 0) {\r\n value = `${year}-${month}`;\r\n }\r\n } else if (type === 'day') {\r\n disabled = month < 0 || year < 0;\r\n if (day > 0) {\r\n value = `${day}`;\r\n }\r\n }\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n onFocus={wrapEvent(onFocus, handleFocus)}\r\n onBlur={wrapEvent(onBlur, handleBlur)}\r\n onChange={wrapEvent(onChange, handleChange)}\r\n value={value}\r\n disabled={disabled}\r\n data-has-selected={value !== '' ? '' : undefined}\r\n {...rest}\r\n >\r\n {type === 'month_year' ? (\r\n <MonthYearOptions\r\n minDate={minDate}\r\n maxDate={maxDate}\r\n monthNames={monthNames}\r\n emptyOption={emptyOption}\r\n />\r\n ) : type === 'day' ? (\r\n <DayOptions\r\n date={\r\n month >= 0 && year >= 0\r\n ? new Date(Date.UTC(year, month, 15))\r\n : undefined\r\n }\r\n dayNames={dayNames}\r\n minDate={minDate}\r\n emptyOption={emptyOption}\r\n />\r\n ) : null}\r\n </Comp>\r\n );\r\n});\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DatePickerSelect.js","names":["forwardRef","memo","wrapEvent","differenceInCalendarMonths","addMonths","getDaysInMonth","setDate","useInnerFocus","SET_DATE","NAVIGATE","useDatePickerContext","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","MonthYearOptions","_ref","minDate","maxDate","monthNames","emptyOption","ret","value","disabled","children","diff","i","date","year","getFullYear","month","getMonth","push","DayOptions","_ref2","Date","dayNames","day","newDate","valueOf","getDay","DatePickerSelect","DatePicker","_ref3","ref","as","Comp","type","onFocus","onBlur","onChange","rest","onChangeRef","dispatch","controlledValueRef","state","data","handleFocus","handleBlur","selectedDate","stateSelectedDate","navigationYear","navigationMonth","navigationDay","current","undefined","handleChange","e","nextState","target","yearStr","monthStr","split","parseInt","nextDate","UTC","getDate"],"sources":["../../../src/DatePicker/DatePickerSelect.tsx"],"sourcesContent":["import type { ChangeEvent, ElementType, SelectHTMLAttributes } from 'react';\nimport { forwardRef, memo } from 'react';\nimport { wrapEvent } from '@basic-ui/core';\nimport {\n differenceInCalendarMonths,\n addMonths,\n getDaysInMonth,\n setDate,\n} from 'date-fns';\n\nimport { useInnerFocus, SET_DATE, NAVIGATE } from './hooks';\nimport type { DayNames, MonthNames } from './dateTypes';\nimport { useDatePickerContext } from './contexts';\n\nexport interface DatePickerSelectProps\n extends SelectHTMLAttributes<HTMLSelectElement> {\n groupType?: 'from' | 'to';\n type: 'month_year' | 'day';\n emptyOption?: string;\n\n as?: ElementType<any>;\n}\n\nconst MonthYearOptions = memo(\n ({\n minDate,\n maxDate,\n monthNames,\n emptyOption,\n }: {\n minDate: Date;\n maxDate: Date;\n monthNames: MonthNames;\n emptyOption: string;\n }) => {\n const ret = [\n <option key={'empty'} value=\"\" disabled>\n {emptyOption}\n </option>,\n ];\n\n const diff = differenceInCalendarMonths(maxDate, minDate);\n for (let i = 0; i <= diff; i++) {\n const date = addMonths(minDate, i);\n const year = date.getFullYear();\n const month = date.getMonth();\n\n ret.push(\n <option key={`${year}_${month}`} value={`${year}-${month}`}>\n {monthNames[month]} {year}\n </option>\n );\n }\n\n return <>{ret}</>;\n }\n);\n\nconst DayOptions = memo(\n ({\n date = new Date(0),\n dayNames,\n minDate,\n emptyOption,\n }: {\n date: Date | undefined;\n dayNames: DayNames;\n minDate: Date;\n emptyOption: string;\n }) => {\n if (!date) {\n return null;\n }\n\n const ret = [\n <option key={'empty'} value=\"\" disabled>\n {emptyOption}\n </option>,\n ];\n\n for (let day = 1; day <= getDaysInMonth(date); day++) {\n const newDate = setDate(date, day);\n ret.push(\n <option\n key={`day_${day}`}\n value={`${day}`}\n disabled={newDate.valueOf() < minDate.valueOf()}\n >\n {(newDate.getDay(), dayNames[newDate.getDay()])} {day}\n </option>\n );\n }\n\n return <>{ret}</>;\n }\n);\n\nexport const DatePickerSelect = forwardRef(function DatePicker(\n {\n as: Comp = 'select',\n type,\n onFocus,\n onBlur,\n onChange,\n children,\n emptyOption = '',\n ...rest\n }: DatePickerSelectProps,\n ref\n) {\n const {\n minDate,\n maxDate,\n monthNames,\n onChangeRef,\n dayNames,\n dispatch,\n controlledValueRef,\n state: data,\n } = useDatePickerContext();\n const { handleFocus, handleBlur } = useInnerFocus();\n\n const { selectedDate: stateSelectedDate } = data;\n let {\n navigationYear: year,\n navigationMonth: month,\n navigationDay: day,\n } = data;\n\n const selectedDate =\n controlledValueRef.current !== undefined\n ? controlledValueRef.current\n : stateSelectedDate;\n\n const handleChange = (e: ChangeEvent<HTMLSelectElement>) => {\n const nextState = {\n year,\n month,\n day,\n };\n\n switch (type) {\n case 'month_year': {\n nextState.year = -1;\n nextState.month = -1;\n nextState.day = -1;\n\n if (e.target.value) {\n const [yearStr, monthStr] = e.target.value.split('-');\n nextState.year = parseInt(yearStr, 10);\n nextState.month = parseInt(monthStr, 10);\n nextState.day = -1;\n }\n\n dispatch({ type: NAVIGATE, ...nextState });\n break;\n }\n case 'day': {\n nextState.day = -1;\n if (e.target.value) {\n nextState.day = parseInt(e.target.value, 10);\n }\n\n let nextDate: Date | undefined = undefined;\n if (nextState.day !== -1) {\n if (nextState.year >= 0 && nextState.month >= 0) {\n nextDate = new Date(\n Date.UTC(nextState.year, nextState.month, nextState.day)\n );\n } else if (selectedDate !== null) {\n nextDate = new Date(\n Date.UTC(\n selectedDate.getFullYear(),\n selectedDate.getMonth(),\n nextState.day\n )\n );\n }\n }\n\n if (nextDate !== undefined) {\n onChangeRef.current && onChangeRef.current(nextDate);\n dispatch({ type: SET_DATE, selectedDate: nextDate });\n } else {\n dispatch({ type: NAVIGATE, ...nextState });\n }\n break;\n }\n }\n };\n\n if (year < 0 && month < 0 && day <= 0 && selectedDate !== null) {\n year = selectedDate.getFullYear();\n month = selectedDate.getMonth();\n day = selectedDate.getDate();\n }\n\n let value = '';\n let disabled = false;\n if (type === 'month_year') {\n if (month >= 0 && year >= 0) {\n value = `${year}-${month}`;\n }\n } else if (type === 'day') {\n disabled = month < 0 || year < 0;\n if (day > 0) {\n value = `${day}`;\n }\n }\n\n return (\n <Comp\n ref={ref}\n onFocus={wrapEvent(onFocus, handleFocus)}\n onBlur={wrapEvent(onBlur, handleBlur)}\n onChange={wrapEvent(onChange, handleChange)}\n value={value}\n disabled={disabled}\n data-has-selected={value !== '' ? '' : undefined}\n {...rest}\n >\n {type === 'month_year' ? (\n <MonthYearOptions\n minDate={minDate}\n maxDate={maxDate}\n monthNames={monthNames}\n emptyOption={emptyOption}\n />\n ) : type === 'day' ? (\n <DayOptions\n date={\n month >= 0 && year >= 0\n ? new Date(Date.UTC(year, month, 15))\n : undefined\n }\n dayNames={dayNames}\n minDate={minDate}\n emptyOption={emptyOption}\n />\n ) : null}\n </Comp>\n );\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import type { ElementType, HTMLAttributes, ReactNode } from 'react';
|
|
2
|
-
import type { MonthNames, DayNames } from './dateTypes';
|
|
3
|
-
export
|
|
4
|
-
as?: ElementType<any>;
|
|
5
|
-
minDate?: Date;
|
|
6
|
-
maxDate?: Date;
|
|
7
|
-
dayNames: DayNames;
|
|
8
|
-
monthNames: MonthNames;
|
|
9
|
-
children?: ReactNode[];
|
|
10
|
-
onChange?: (from: Date | null, to: Date | null) => void;
|
|
11
|
-
from?: Date | null;
|
|
12
|
-
to?: Date | null;
|
|
13
|
-
defaultFrom?: Date | null;
|
|
14
|
-
defaultTo?: Date | null;
|
|
15
|
-
};
|
|
16
|
-
export declare const RangeDatePicker: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLDivElement>, "onChange"> & {
|
|
17
|
-
as?: ElementType<any
|
|
18
|
-
minDate?: Date
|
|
19
|
-
maxDate?: Date
|
|
20
|
-
dayNames: DayNames;
|
|
21
|
-
monthNames: MonthNames;
|
|
22
|
-
children?: ReactNode[]
|
|
23
|
-
onChange?: (
|
|
24
|
-
from?: Date | null
|
|
25
|
-
to?: Date | null
|
|
26
|
-
defaultFrom?: Date | null
|
|
27
|
-
defaultTo?: Date | null
|
|
28
|
-
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
1
|
+
import type { ElementType, HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
import type { MonthNames, DayNames } from './dateTypes';
|
|
3
|
+
export type RangeDatePickerProps = Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> & {
|
|
4
|
+
as?: ElementType<any>;
|
|
5
|
+
minDate?: Date;
|
|
6
|
+
maxDate?: Date;
|
|
7
|
+
dayNames: DayNames;
|
|
8
|
+
monthNames: MonthNames;
|
|
9
|
+
children?: ReactNode[];
|
|
10
|
+
onChange?: (from: Date | null, to: Date | null) => void;
|
|
11
|
+
from?: Date | null;
|
|
12
|
+
to?: Date | null;
|
|
13
|
+
defaultFrom?: Date | null;
|
|
14
|
+
defaultTo?: Date | null;
|
|
15
|
+
};
|
|
16
|
+
export declare const RangeDatePicker: import("react").ForwardRefExoticComponent<Omit<HTMLAttributes<HTMLDivElement>, "onChange"> & {
|
|
17
|
+
as?: ElementType<any>;
|
|
18
|
+
minDate?: Date;
|
|
19
|
+
maxDate?: Date;
|
|
20
|
+
dayNames: DayNames;
|
|
21
|
+
monthNames: MonthNames;
|
|
22
|
+
children?: ReactNode[];
|
|
23
|
+
onChange?: (from: Date | null, to: Date | null) => void;
|
|
24
|
+
from?: Date | null;
|
|
25
|
+
to?: Date | null;
|
|
26
|
+
defaultFrom?: Date | null;
|
|
27
|
+
defaultTo?: Date | null;
|
|
28
|
+
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -1,97 +1,80 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
-
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
4
|
-
var _excluded = ["as", "minDate", "maxDate", "dayNames", "monthNames", "onChange", "from", "to", "defaultFrom", "defaultTo"];
|
|
5
1
|
import { forwardRef, useRef, useState } from 'react';
|
|
6
2
|
import { assignMultipleRefs } from '@basic-ui/core';
|
|
7
3
|
import { adjustDates } from './adjustDates';
|
|
8
4
|
import { RangeDatePickerProvider } from './contexts';
|
|
9
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
-
export
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
6
|
+
export const RangeDatePicker = /*#__PURE__*/forwardRef(function RangeDatePicker(_ref, ref) {
|
|
7
|
+
let {
|
|
8
|
+
as: Comp = 'div',
|
|
9
|
+
minDate: propMinDate = new Date(0),
|
|
10
|
+
maxDate: propMaxDate = new Date(),
|
|
11
|
+
dayNames,
|
|
12
|
+
monthNames,
|
|
13
|
+
onChange,
|
|
14
|
+
from: controlledFrom,
|
|
15
|
+
to: controlledTo,
|
|
16
|
+
defaultFrom,
|
|
17
|
+
defaultTo,
|
|
18
|
+
...rest
|
|
19
|
+
} = _ref;
|
|
20
|
+
const isControlled = controlledFrom !== undefined && controlledTo !== undefined;
|
|
21
|
+
const minDate = propMinDate,
|
|
22
|
+
maxDate = propMaxDate;
|
|
23
|
+
const rangeDatePickerRef = useRef(null);
|
|
24
|
+
const [{
|
|
25
|
+
from: stateFrom,
|
|
26
|
+
to: stateTo
|
|
27
|
+
}, setDates] = useState({
|
|
32
28
|
from: defaultFrom || null,
|
|
33
29
|
to: defaultTo || null
|
|
34
|
-
})
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
43
|
-
innerHasFocus = _useState4[0],
|
|
44
|
-
setInnerHasFocus = _useState4[1];
|
|
45
|
-
|
|
46
|
-
var onChangeFrom = function onChangeFrom(from) {
|
|
47
|
-
var to = stateTo;
|
|
48
|
-
|
|
49
|
-
var _adjustDates = adjustDates(from, to, 'from'),
|
|
50
|
-
nextFrom = _adjustDates.from,
|
|
51
|
-
nextTo = _adjustDates.to;
|
|
52
|
-
|
|
30
|
+
});
|
|
31
|
+
const [innerHasFocus, setInnerHasFocus] = useState(false);
|
|
32
|
+
const onChangeFrom = from => {
|
|
33
|
+
const to = stateTo;
|
|
34
|
+
const {
|
|
35
|
+
from: nextFrom,
|
|
36
|
+
to: nextTo
|
|
37
|
+
} = adjustDates(from, to, 'from');
|
|
53
38
|
onChange && onChange(nextFrom, nextTo);
|
|
54
39
|
setDates({
|
|
55
40
|
from: nextFrom,
|
|
56
41
|
to: nextTo
|
|
57
42
|
});
|
|
58
43
|
};
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
nextTo = _adjustDates2.to;
|
|
66
|
-
|
|
44
|
+
const onChangeTo = to => {
|
|
45
|
+
const from = stateFrom;
|
|
46
|
+
const {
|
|
47
|
+
from: nextFrom,
|
|
48
|
+
to: nextTo
|
|
49
|
+
} = adjustDates(from, to, 'to');
|
|
67
50
|
onChange && onChange(nextFrom, nextTo);
|
|
68
51
|
setDates({
|
|
69
52
|
from: nextFrom,
|
|
70
53
|
to: nextTo
|
|
71
54
|
});
|
|
72
55
|
};
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
onChangeTo: onChangeTo
|
|
56
|
+
const from = isControlled ? controlledFrom : stateFrom;
|
|
57
|
+
const to = isControlled ? controlledTo : stateTo;
|
|
58
|
+
const contextValue = {
|
|
59
|
+
rangeDatePickerRef,
|
|
60
|
+
innerHasFocus,
|
|
61
|
+
setInnerHasFocus,
|
|
62
|
+
minDate,
|
|
63
|
+
maxDate,
|
|
64
|
+
from,
|
|
65
|
+
to,
|
|
66
|
+
dayNames,
|
|
67
|
+
monthNames,
|
|
68
|
+
onChangeFrom,
|
|
69
|
+
onChangeTo
|
|
88
70
|
};
|
|
89
71
|
return /*#__PURE__*/_jsx(RangeDatePickerProvider, {
|
|
90
72
|
value: contextValue,
|
|
91
|
-
children: /*#__PURE__*/_jsx(Comp,
|
|
73
|
+
children: /*#__PURE__*/_jsx(Comp, {
|
|
92
74
|
ref: assignMultipleRefs(ref, rangeDatePickerRef),
|
|
93
|
-
"data-has-focus": innerHasFocus ? '' : undefined
|
|
94
|
-
|
|
75
|
+
"data-has-focus": innerHasFocus ? '' : undefined,
|
|
76
|
+
...rest
|
|
77
|
+
})
|
|
95
78
|
});
|
|
96
79
|
});
|
|
97
80
|
//# sourceMappingURL=RangeDatePicker.js.map
|