@basic-ui/dates 0.0.47 → 0.0.49

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.
@@ -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';\r\nimport { forwardRef, useMemo, useRef, useReducer } from 'react';\r\nimport { assignMultipleRefs } from '@basic-ui/core';\r\n\r\nimport type { ReducerState } from './hooks';\r\nimport { reducer } from './hooks';\r\nimport type { DayNames, MonthNames } from './dateTypes';\r\nimport type { DatePickerContextProps } from './contexts';\r\nimport { useRangeDatePickerContext, DatePickerProvider } from './contexts';\r\n\r\nexport type DatePickerProps = Omit<\r\n HTMLAttributes<HTMLDivElement>,\r\n 'value' | 'defaultValue' | 'onChange'\r\n> & {\r\n as?: ElementType<any>;\r\n minDate?: Date;\r\n maxDate?: Date;\r\n dayNames?: DayNames;\r\n monthNames?: MonthNames;\r\n onChange?: (from: Date | null) => void;\r\n value?: Date | null;\r\n defaultValue?: Date | null;\r\n type?: 'from' | 'to';\r\n};\r\n\r\n/**\r\n * Merges props from RangeDatePicker and DatePicker\r\n */\r\nfunction usePropsMerge(props: DatePickerProps) {\r\n const context = useRangeDatePickerContext();\r\n if (context && !props.type) {\r\n throw new Error(\r\n \"<DatePicker /> as a children of <RangeDatePicker /> needs a 'type'\"\r\n );\r\n }\r\n\r\n if (!context) {\r\n return props;\r\n } else {\r\n const mergedProps = {\r\n ...props,\r\n minDate: context.minDate,\r\n maxDate: context.maxDate,\r\n dayNames: context.dayNames,\r\n monthNames: context.monthNames,\r\n ...(props.type === 'from'\r\n ? {\r\n value: context.from,\r\n onChange: context.onChangeFrom,\r\n }\r\n : {\r\n // props.type === 'to'\r\n value: context.to,\r\n onChange: context.onChangeTo,\r\n minDate:\r\n context.from !== null && context.from !== undefined\r\n ? new Date(context.from.valueOf() + 86400000)\r\n : context.minDate,\r\n }),\r\n };\r\n\r\n return mergedProps;\r\n }\r\n}\r\n\r\nexport const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\r\n function DatePicker(props, ref) {\r\n const {\r\n as: Comp = 'div',\r\n minDate: propMinDate = new Date(0),\r\n maxDate: propMaxDate = new Date(),\r\n dayNames,\r\n monthNames,\r\n onChange,\r\n value: controlledValue,\r\n defaultValue,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n type, // just to avoid passing it to DOM\r\n ...rest\r\n } = usePropsMerge(props);\r\n const datePickerRef = useRef<HTMLDivElement | null>(null);\r\n const minDate = propMinDate,\r\n maxDate = propMaxDate;\r\n\r\n const onChangeRef = useRef(onChange);\r\n onChangeRef.current = onChange;\r\n\r\n const controlledValueRef = useRef(controlledValue);\r\n controlledValueRef.current = controlledValue;\r\n\r\n const initialData: ReducerState = {\r\n isFocused: false,\r\n navigationDay: -1,\r\n navigationMonth: -1,\r\n navigationYear: -1,\r\n selectedDate: defaultValue !== undefined ? defaultValue : null,\r\n };\r\n const [state, dispatch] = useReducer(reducer, initialData);\r\n\r\n if (!dayNames || !monthNames) {\r\n throw new Error(\r\n 'Props dayNames and monthNames not specified in <DatePicker />'\r\n );\r\n }\r\n\r\n const contextValue: DatePickerContextProps = useMemo(\r\n () => ({\r\n minDate,\r\n maxDate,\r\n dayNames,\r\n monthNames,\r\n datePickerRef,\r\n controlledValueRef,\r\n state,\r\n dispatch,\r\n onChangeRef,\r\n }),\r\n [maxDate, minDate, dayNames, monthNames, state]\r\n );\r\n\r\n return (\r\n <DatePickerProvider value={contextValue}>\r\n <Comp\r\n ref={assignMultipleRefs(ref, datePickerRef)}\r\n data-has-focus={state.isFocused ? '' : undefined}\r\n {...rest}\r\n />\r\n </DatePickerProvider>\r\n );\r\n }\r\n);\r\n"],"mappings":"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"}
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
- import { jsxs as _jsxs } from "react/jsx-runtime";
12
- import { Fragment as _Fragment } from "react/jsx-runtime";
13
- var MonthYearOptions = /*#__PURE__*/memo(function (_ref) {
14
- var minDate = _ref.minDate,
15
- maxDate = _ref.maxDate,
16
- monthNames = _ref.monthNames,
17
- emptyOption = _ref.emptyOption;
18
- var ret = [/*#__PURE__*/_jsx("option", {
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
- var diff = differenceInCalendarMonths(maxDate, minDate);
24
-
25
- for (var i = 0; i <= diff; i++) {
26
- var date = addMonths(minDate, i);
27
- var year = date.getFullYear();
28
- var month = date.getMonth();
29
- ret.push( /*#__PURE__*/_jsxs("option", {
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
- }, "".concat(year, "_").concat(month)));
27
+ }, `${year}_${month}`));
33
28
  }
34
-
35
29
  return /*#__PURE__*/_jsx(_Fragment, {
36
30
  children: ret
37
31
  });
38
32
  });
39
- var DayOptions = /*#__PURE__*/memo(function (_ref2) {
40
- var _ref2$date = _ref2.date,
41
- date = _ref2$date === void 0 ? new Date(0) : _ref2$date,
42
- dayNames = _ref2.dayNames,
43
- minDate = _ref2.minDate,
44
- emptyOption = _ref2.emptyOption;
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
- for (var day = 1; day <= getDaysInMonth(date); day++) {
57
- var newDate = setDate(date, day);
58
- ret.push( /*#__PURE__*/_jsxs("option", {
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
- }, "day_".concat(day)));
54
+ }, `day_${day}`));
63
55
  }
64
-
65
56
  return /*#__PURE__*/_jsx(_Fragment, {
66
57
  children: ret
67
58
  });
68
59
  });
69
- export var DatePickerSelect = /*#__PURE__*/forwardRef(function DatePicker(_ref3, ref) {
70
- var _ref3$as = _ref3.as,
71
- Comp = _ref3$as === void 0 ? 'select' : _ref3$as,
72
- type = _ref3.type,
73
- onFocus = _ref3.onFocus,
74
- onBlur = _ref3.onBlur,
75
- onChange = _ref3.onChange,
76
- children = _ref3.children,
77
- _ref3$emptyOption = _ref3.emptyOption,
78
- emptyOption = _ref3$emptyOption === void 0 ? '' : _ref3$emptyOption,
79
- rest = _objectWithoutProperties(_ref3, _excluded);
80
-
81
- var _useDatePickerContext = useDatePickerContext(),
82
- minDate = _useDatePickerContext.minDate,
83
- maxDate = _useDatePickerContext.maxDate,
84
- monthNames = _useDatePickerContext.monthNames,
85
- onChangeRef = _useDatePickerContext.onChangeRef,
86
- dayNames = _useDatePickerContext.dayNames,
87
- dispatch = _useDatePickerContext.dispatch,
88
- controlledValueRef = _useDatePickerContext.controlledValueRef,
89
- data = _useDatePickerContext.state;
90
-
91
- var _useInnerFocus = useInnerFocus(),
92
- handleFocus = _useInnerFocus.handleFocus,
93
- handleBlur = _useInnerFocus.handleBlur;
94
-
95
- var stateSelectedDate = data.selectedDate;
96
- var year = data.navigationYear,
97
- month = data.navigationMonth,
98
- day = data.navigationDay;
99
- var selectedDate = controlledValueRef.current !== undefined ? controlledValueRef.current : stateSelectedDate;
100
-
101
- var handleChange = function handleChange(e) {
102
- var nextState = {
103
- year: year,
104
- month: month,
105
- day: day
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
- var _e$target$value$split = e.target.value.split('-'),
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
- dispatch(_extends({
127
- type: NAVIGATE
128
- }, nextState));
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(_extends({
158
- type: NAVIGATE
159
- }, nextState));
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
- var value = '';
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 = "".concat(year, "-").concat(month);
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 = "".concat(day);
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
- }, rest), {}, {
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 declare 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> | undefined;
18
- minDate?: Date | undefined;
19
- maxDate?: Date | undefined;
20
- dayNames: DayNames;
21
- monthNames: MonthNames;
22
- children?: ReactNode[] | undefined;
23
- onChange?: ((from: Date | null, to: Date | null) => void) | undefined;
24
- from?: Date | null | undefined;
25
- to?: Date | null | undefined;
26
- defaultFrom?: Date | null | undefined;
27
- defaultTo?: Date | null | undefined;
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 var RangeDatePicker = /*#__PURE__*/forwardRef(function RangeDatePicker(_ref, ref) {
11
- var _ref$as = _ref.as,
12
- Comp = _ref$as === void 0 ? 'div' : _ref$as,
13
- _ref$minDate = _ref.minDate,
14
- propMinDate = _ref$minDate === void 0 ? new Date(0) : _ref$minDate,
15
- _ref$maxDate = _ref.maxDate,
16
- propMaxDate = _ref$maxDate === void 0 ? new Date() : _ref$maxDate,
17
- dayNames = _ref.dayNames,
18
- monthNames = _ref.monthNames,
19
- onChange = _ref.onChange,
20
- controlledFrom = _ref.from,
21
- controlledTo = _ref.to,
22
- defaultFrom = _ref.defaultFrom,
23
- defaultTo = _ref.defaultTo,
24
- rest = _objectWithoutProperties(_ref, _excluded);
25
-
26
- var isControlled = controlledFrom !== undefined && controlledTo !== undefined;
27
- var minDate = propMinDate,
28
- maxDate = propMaxDate;
29
- var rangeDatePickerRef = useRef(null);
30
-
31
- var _useState = useState({
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
- _useState2 = _slicedToArray(_useState, 2),
36
- _useState2$ = _useState2[0],
37
- stateFrom = _useState2$.from,
38
- stateTo = _useState2$.to,
39
- setDates = _useState2[1];
40
-
41
- var _useState3 = useState(false),
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
- var onChangeTo = function onChangeTo(to) {
61
- var from = stateFrom;
62
-
63
- var _adjustDates2 = adjustDates(from, to, 'to'),
64
- nextFrom = _adjustDates2.from,
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
- var from = isControlled ? controlledFrom : stateFrom;
75
- var to = isControlled ? controlledTo : stateTo;
76
- var contextValue = {
77
- rangeDatePickerRef: rangeDatePickerRef,
78
- innerHasFocus: innerHasFocus,
79
- setInnerHasFocus: setInnerHasFocus,
80
- minDate: minDate,
81
- maxDate: maxDate,
82
- from: from,
83
- to: to,
84
- dayNames: dayNames,
85
- monthNames: monthNames,
86
- onChangeFrom: onChangeFrom,
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, _extends({
73
+ children: /*#__PURE__*/_jsx(Comp, {
92
74
  ref: assignMultipleRefs(ref, rangeDatePickerRef),
93
- "data-has-focus": innerHasFocus ? '' : undefined
94
- }, rest))
75
+ "data-has-focus": innerHasFocus ? '' : undefined,
76
+ ...rest
77
+ })
95
78
  });
96
79
  });
97
80
  //# sourceMappingURL=RangeDatePicker.js.map