baseui 11.0.1 → 11.0.2
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/datepicker/calendar.js +16 -11
- package/datepicker/calendar.js.flow +12 -9
- package/datepicker/datepicker.js +58 -58
- package/datepicker/datepicker.js.flow +51 -34
- package/datepicker/stateful-calendar.js +6 -1
- package/datepicker/stateful-calendar.js.flow +8 -1
- package/datepicker/stateful-container.js +23 -2
- package/datepicker/stateful-container.js.flow +17 -4
- package/datepicker/stateful-datepicker.js +6 -1
- package/datepicker/stateful-datepicker.js.flow +7 -1
- package/datepicker/types.js.flow +21 -43
- package/es/datepicker/calendar.js +15 -10
- package/es/datepicker/datepicker.js +52 -52
- package/es/datepicker/stateful-calendar.js +6 -1
- package/es/datepicker/stateful-container.js +22 -2
- package/es/datepicker/stateful-datepicker.js +6 -1
- package/es/snackbar/snackbar-context.js +1 -1
- package/esm/datepicker/calendar.js +16 -11
- package/esm/datepicker/datepicker.js +58 -58
- package/esm/datepicker/stateful-calendar.js +6 -1
- package/esm/datepicker/stateful-container.js +23 -2
- package/esm/datepicker/stateful-datepicker.js +6 -1
- package/esm/snackbar/snackbar-context.js +1 -1
- package/package.json +1 -1
- package/snackbar/snackbar-context.js +1 -1
- package/snackbar/snackbar-context.js.flow +1 -1
- package/tag/types.js.flow +1 -1
package/datepicker/types.js.flow
CHANGED
|
@@ -27,10 +27,6 @@ import type { OptionT } from '../select/index.js';
|
|
|
27
27
|
// flowlint-next-line unclear-type:off
|
|
28
28
|
type LocaleT = any; // see https://github.com/date-fns/date-fns/blob/master/src/locale/index.js.flow
|
|
29
29
|
|
|
30
|
-
export type DateValueT<T> = ?T | Array<?T>;
|
|
31
|
-
|
|
32
|
-
type onChangeT<T> = ({ date: DateValueT<T> }) => mixed;
|
|
33
|
-
|
|
34
30
|
export type DensityT = $Keys<typeof DENSITY>;
|
|
35
31
|
|
|
36
32
|
export type DatepickerOverridesT = {
|
|
@@ -92,13 +88,13 @@ export type DayPropsT<T = Date> = {
|
|
|
92
88
|
month: ?number,
|
|
93
89
|
onBlur: ({ event: Event, date: T }) => mixed,
|
|
94
90
|
onFocus: ({ event: Event, date: T }) => mixed,
|
|
95
|
-
onSelect: ({ date:
|
|
91
|
+
onSelect: ({ date: T | Array<?T> }) => mixed,
|
|
96
92
|
onClick: ({ event: Event, date: T }) => mixed,
|
|
97
93
|
onMouseOver: ({ event: Event, date: T }) => mixed,
|
|
98
94
|
onMouseLeave: ({ event: Event, date: T }) => mixed,
|
|
99
95
|
overrides?: DatepickerOverridesT,
|
|
100
96
|
peekNextMonth: boolean,
|
|
101
|
-
value:
|
|
97
|
+
value: ?T | $ReadOnlyArray<?T>,
|
|
102
98
|
};
|
|
103
99
|
|
|
104
100
|
export type DayStateT = {
|
|
@@ -127,15 +123,16 @@ export type WeekPropsT<T = Date> = {
|
|
|
127
123
|
onDayFocus: ({ date: T, event: Event }) => mixed,
|
|
128
124
|
onDayMouseOver: ({ date: T, event: Event }) => mixed,
|
|
129
125
|
onDayMouseLeave: ({ date: T, event: Event }) => mixed,
|
|
130
|
-
onChange?:
|
|
126
|
+
onChange?: ({ +date: ?T | Array<?T> }) => mixed,
|
|
131
127
|
overrides?: DatepickerOverridesT,
|
|
132
128
|
peekNextMonth: boolean,
|
|
133
|
-
value:
|
|
129
|
+
value: ?T | $ReadOnlyArray<?T>,
|
|
134
130
|
hasLockedBehavior: boolean,
|
|
135
131
|
selectedInput?: InputRoleT,
|
|
136
132
|
};
|
|
137
133
|
|
|
138
|
-
export type MonthPropsT<T = Date> =
|
|
134
|
+
export type MonthPropsT<T = Date> = {
|
|
135
|
+
...WeekPropsT<T>,
|
|
139
136
|
fixedHeight?: boolean,
|
|
140
137
|
};
|
|
141
138
|
|
|
@@ -193,7 +190,7 @@ export type CalendarPropsT<T = Date> = {
|
|
|
193
190
|
/** Event handler that is called when the current rendered month's year is changed. */
|
|
194
191
|
onYearChange?: ({ date: T }) => mixed,
|
|
195
192
|
/** Event handler that is called when a new date is selected. */
|
|
196
|
-
onChange?:
|
|
193
|
+
onChange?: ({ +date: ?T | Array<?T> }) => mixed,
|
|
197
194
|
/** Event handler that is called when a selection is made using the quick select menu. */
|
|
198
195
|
onQuickSelectChange?: (option?: QuickSelectOption<T>) => mixed,
|
|
199
196
|
/** Sets the orientation of the calendar when multiple months are displayed */
|
|
@@ -208,7 +205,7 @@ export type CalendarPropsT<T = Date> = {
|
|
|
208
205
|
/** Defines if tabbing inside the calendar is circled within it. */
|
|
209
206
|
trapTabbing?: boolean,
|
|
210
207
|
/** Currently selected date. */
|
|
211
|
-
value?:
|
|
208
|
+
value?: ?T | $ReadOnlyArray<?T>,
|
|
212
209
|
fixedHeight?: boolean,
|
|
213
210
|
/** Determines whether user clicked startDate or endDate input to trigger calendar open */
|
|
214
211
|
selectedInput?: InputRoleT,
|
|
@@ -225,7 +222,8 @@ export type QuickSelectOption<T> = {
|
|
|
225
222
|
endDate?: T,
|
|
226
223
|
};
|
|
227
224
|
|
|
228
|
-
export type DatepickerPropsT<T = Date> =
|
|
225
|
+
export type DatepickerPropsT<T = Date> = {
|
|
226
|
+
...CalendarPropsT<T>,
|
|
229
227
|
'aria-label'?: string,
|
|
230
228
|
'aria-labelledby'?: string,
|
|
231
229
|
'aria-describedby'?: ?string,
|
|
@@ -238,14 +236,18 @@ export type DatepickerPropsT<T = Date> = CalendarPropsT<T> & {
|
|
|
238
236
|
required?: boolean,
|
|
239
237
|
clearable?: boolean,
|
|
240
238
|
displayValueAtRangeIndex?: number,
|
|
241
|
-
formatDisplayValue?: (date:
|
|
239
|
+
formatDisplayValue?: (date: ?T | $ReadOnlyArray<?T>, formatString: string) => string,
|
|
242
240
|
formatString: string,
|
|
243
241
|
/** Where to mount the popover */
|
|
244
242
|
mountNode?: HTMLElement,
|
|
243
|
+
/** When single picker, fn is always called. When range picker, fn is called when start and end date are selected. */
|
|
244
|
+
onChange?: ({ +date: ?T | Array<T> }) => mixed,
|
|
245
245
|
/** Called when calendar is closed */
|
|
246
246
|
onClose?: () => mixed,
|
|
247
247
|
/** Called when calendar is opened */
|
|
248
248
|
onOpen?: () => mixed,
|
|
249
|
+
/** When single picker, fn is always called. When range picker, fn is called when either start or end date changes. */
|
|
250
|
+
onRangeChange?: ({ +date: ?T | Array<?T> }) => mixed,
|
|
249
251
|
mask?: string | null,
|
|
250
252
|
/** Determines whether startDate and endDate should be updated independently of eachother */
|
|
251
253
|
rangedCalendarBehavior?: RangedCalendarBehaviorT,
|
|
@@ -253,6 +255,7 @@ export type DatepickerPropsT<T = Date> = CalendarPropsT<T> & {
|
|
|
253
255
|
separateRangeInputs?: boolean,
|
|
254
256
|
startDateLabel?: string,
|
|
255
257
|
endDateLabel?: string,
|
|
258
|
+
value?: ?T | $ReadOnlyArray<?T>,
|
|
256
259
|
};
|
|
257
260
|
|
|
258
261
|
export type SharedStylePropsT = {
|
|
@@ -289,7 +292,7 @@ export type StateChangeTypeT = ?$Values<typeof STATE_CHANGE_TYPE>;
|
|
|
289
292
|
|
|
290
293
|
export type ContainerStateT<T = Date> = {
|
|
291
294
|
/** Selected `Date`. If `range` is set, `value` is an array of 2 values. */
|
|
292
|
-
value?:
|
|
295
|
+
value?: ?T | $ReadOnlyArray<?T>,
|
|
293
296
|
};
|
|
294
297
|
|
|
295
298
|
export type NavigationContainerStateT<T = Date> = {
|
|
@@ -310,46 +313,21 @@ export type StateReducerT<T = Date> = (
|
|
|
310
313
|
currentState: ContainerStateT<T>
|
|
311
314
|
) => ContainerStateT<T>;
|
|
312
315
|
|
|
313
|
-
export type NavigationContainerStateReducerT<T = Date> = (
|
|
314
|
-
stateType: StateChangeTypeT,
|
|
315
|
-
nextState: NavigationContainerStateT<T>,
|
|
316
|
-
currentState: NavigationContainerStateT<T>
|
|
317
|
-
) => NavigationContainerStateT<T>;
|
|
318
|
-
|
|
319
316
|
export type StatefulContainerPropsT<PropsT, T = Date> = {
|
|
320
317
|
children: (PropsT) => React.Node,
|
|
321
318
|
/** Initial state of an uncontrolled datepicker component. */
|
|
322
319
|
initialState: ContainerStateT<T>,
|
|
323
320
|
/** A state change handler. */
|
|
324
321
|
stateReducer: StateReducerT<T>,
|
|
325
|
-
/**
|
|
326
|
-
onChange?:
|
|
322
|
+
/** When single picker, fn is called when date/time is selected. When range picker, fn is called when both start and end are selected. */
|
|
323
|
+
onChange?: ({ +date: ?T | Array<T> }) => mixed,
|
|
324
|
+
/** When single picker, fn is called when date/time is selected. When range picker, fn is called when either start or end date changes. */
|
|
325
|
+
onRangeChange?: ({ +date: ?T | Array<?T> }) => mixed,
|
|
327
326
|
adapter?: DateIOAdapter<T>,
|
|
328
327
|
/** Should the date value be stored as an array or single value. */
|
|
329
328
|
range?: boolean,
|
|
330
329
|
};
|
|
331
330
|
|
|
332
|
-
// This type is seemingly not used anywhere
|
|
333
|
-
export type NavigationContainerPropsT<T = Date> = {
|
|
334
|
-
children: (CalendarPropsT<T>) => React.Node,
|
|
335
|
-
range?: boolean,
|
|
336
|
-
highlightedDate?: ?Date,
|
|
337
|
-
/** Day's `mouseover` event handler. */
|
|
338
|
-
onDayMouseOver: (params: { date: Date, event: Event }) => mixed,
|
|
339
|
-
/** Day's `mouseleave` event handler. */
|
|
340
|
-
onDayMouseLeave: (params: { date: Date, event: Event }) => mixed,
|
|
341
|
-
/** Event handler that is called when a new date is selected. */
|
|
342
|
-
onChange: onChangeT<T>,
|
|
343
|
-
/** Event handler that is called when the current rendered month is changed. */
|
|
344
|
-
onMonthChange?: ({ date: T }) => mixed,
|
|
345
|
-
/** Event handler that is called when the current rendered year is changed. */
|
|
346
|
-
onYearChange?: ({ date: T }) => mixed,
|
|
347
|
-
/** Selected `Date`. If `range` is set, `value` is an array of 2 values. */
|
|
348
|
-
value?: DateValueT<T>,
|
|
349
|
-
stateReducer: NavigationContainerStateReducerT<T>,
|
|
350
|
-
trapTabbing: boolean,
|
|
351
|
-
};
|
|
352
|
-
|
|
353
331
|
export type StatefulDatepickerPropsT<PropsT, T = Date> = $Diff<
|
|
354
332
|
StatefulContainerPropsT<PropsT, T>,
|
|
355
333
|
{
|
|
@@ -252,11 +252,11 @@ export default class Calendar extends React.Component {
|
|
|
252
252
|
const {
|
|
253
253
|
onChange = params => {}
|
|
254
254
|
} = this.props;
|
|
255
|
-
let updatedDate = data.date; //
|
|
256
|
-
|
|
257
|
-
const newTimeState = [...this.state.time]; // Apply the currently selected time values (saved in state) to the updated date
|
|
255
|
+
let updatedDate = data.date; // Apply the currently selected time values (saved in state) to the updated date
|
|
258
256
|
|
|
259
257
|
if (Array.isArray(data.date)) {
|
|
258
|
+
// We'll need to update the date in time values of internal state
|
|
259
|
+
const newTimeState = [...this.state.time];
|
|
260
260
|
const start = data.date[0] ? this.dateHelpers.applyDateToTime(newTimeState[0], data.date[0]) : null;
|
|
261
261
|
const end = data.date[1] ? this.dateHelpers.applyDateToTime(newTimeState[1], data.date[1]) : null;
|
|
262
262
|
newTimeState[0] = start;
|
|
@@ -266,16 +266,21 @@ export default class Calendar extends React.Component {
|
|
|
266
266
|
newTimeState[1] = end;
|
|
267
267
|
} else {
|
|
268
268
|
updatedDate = [start];
|
|
269
|
-
}
|
|
269
|
+
} // Update the date in time values of internal state
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
this.setState({
|
|
273
|
+
time: newTimeState
|
|
274
|
+
});
|
|
270
275
|
} else if (!Array.isArray(this.props.value) && data.date) {
|
|
271
|
-
newTimeState
|
|
272
|
-
updatedDate = newTimeState
|
|
273
|
-
} // Update the date in time values of internal state
|
|
276
|
+
const newTimeState = this.dateHelpers.applyDateToTime(this.state.time[0], data.date);
|
|
277
|
+
updatedDate = newTimeState; // Update the date in time values of internal state
|
|
274
278
|
|
|
279
|
+
this.setState({
|
|
280
|
+
time: [newTimeState]
|
|
281
|
+
});
|
|
282
|
+
}
|
|
275
283
|
|
|
276
|
-
this.setState({
|
|
277
|
-
time: newTimeState
|
|
278
|
-
});
|
|
279
284
|
onChange({
|
|
280
285
|
date: updatedDate
|
|
281
286
|
});
|
|
@@ -45,7 +45,39 @@ export default class Datepicker extends React.Component {
|
|
|
45
45
|
|
|
46
46
|
_defineProperty(this, "dateHelpers", void 0);
|
|
47
47
|
|
|
48
|
-
_defineProperty(this, "
|
|
48
|
+
_defineProperty(this, "handleChange", date => {
|
|
49
|
+
const onChange = this.props.onChange;
|
|
50
|
+
const onRangeChange = this.props.onRangeChange;
|
|
51
|
+
|
|
52
|
+
if (Array.isArray(date)) {
|
|
53
|
+
if (onChange && date.every(Boolean)) {
|
|
54
|
+
// flowlint-next-line unclear-type:off
|
|
55
|
+
onChange({
|
|
56
|
+
date: date
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (onRangeChange) {
|
|
61
|
+
onRangeChange({
|
|
62
|
+
date: [...date]
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
} else {
|
|
66
|
+
if (onChange) {
|
|
67
|
+
onChange({
|
|
68
|
+
date
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (onRangeChange) {
|
|
73
|
+
onRangeChange({
|
|
74
|
+
date
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
_defineProperty(this, "onCalendarSelect", data => {
|
|
49
81
|
let isOpen = false;
|
|
50
82
|
let isPseudoFocused = false;
|
|
51
83
|
let calendarFocused = false;
|
|
@@ -114,9 +146,7 @@ export default class Datepicker extends React.Component {
|
|
|
114
146
|
}),
|
|
115
147
|
inputValue: this.formatDisplayValue(nextDate)
|
|
116
148
|
});
|
|
117
|
-
this.
|
|
118
|
-
date: nextDate
|
|
119
|
-
});
|
|
149
|
+
this.handleChange(nextDate);
|
|
120
150
|
});
|
|
121
151
|
|
|
122
152
|
_defineProperty(this, "formatDisplayValue", date => {
|
|
@@ -218,16 +248,10 @@ export default class Datepicker extends React.Component {
|
|
|
218
248
|
const formatString = this.normalizeDashes(this.props.formatString);
|
|
219
249
|
|
|
220
250
|
if (typeof mask === 'string' && inputValue === mask.replace(/9/g, ' ') || inputValue.length === 0) {
|
|
221
|
-
if (this.props.
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
});
|
|
226
|
-
} else {
|
|
227
|
-
this.props.onChange({
|
|
228
|
-
date: null
|
|
229
|
-
});
|
|
230
|
-
}
|
|
251
|
+
if (this.props.range) {
|
|
252
|
+
this.handleChange([]);
|
|
253
|
+
} else {
|
|
254
|
+
this.handleChange(null);
|
|
231
255
|
}
|
|
232
256
|
}
|
|
233
257
|
|
|
@@ -253,18 +277,12 @@ export default class Datepicker extends React.Component {
|
|
|
253
277
|
endDate = parseDateString(right);
|
|
254
278
|
}
|
|
255
279
|
|
|
256
|
-
const
|
|
280
|
+
const datesValid = this.dateHelpers.isValid(startDate) && this.dateHelpers.isValid(endDate); // added equal case so that times within the same day can be expressed
|
|
257
281
|
|
|
258
|
-
|
|
259
|
-
const datesValid = this.dateHelpers.isValid(startDate) && this.dateHelpers.isValid(endDate); // added equal case so that times within the same day can be expressed
|
|
260
|
-
|
|
261
|
-
const rangeValid = this.dateHelpers.isAfter(endDate, startDate) || this.dateHelpers.isEqual(startDate, endDate);
|
|
282
|
+
const rangeValid = this.dateHelpers.isAfter(endDate, startDate) || this.dateHelpers.isEqual(startDate, endDate);
|
|
262
283
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
date: [startDate, endDate]
|
|
266
|
-
});
|
|
267
|
-
}
|
|
284
|
+
if (datesValid && rangeValid) {
|
|
285
|
+
this.handleChange([startDate, endDate]);
|
|
268
286
|
}
|
|
269
287
|
} else {
|
|
270
288
|
const dateString = this.normalizeDashes(inputValue);
|
|
@@ -280,12 +298,11 @@ export default class Datepicker extends React.Component {
|
|
|
280
298
|
|
|
281
299
|
const {
|
|
282
300
|
displayValueAtRangeIndex,
|
|
283
|
-
onChange,
|
|
284
301
|
range,
|
|
285
302
|
value
|
|
286
303
|
} = this.props;
|
|
287
304
|
|
|
288
|
-
if (date && this.dateHelpers.isValid(date)
|
|
305
|
+
if (date && this.dateHelpers.isValid(date)) {
|
|
289
306
|
if (range && Array.isArray(value) && typeof displayValueAtRangeIndex === 'number') {
|
|
290
307
|
let [left, right] = value;
|
|
291
308
|
|
|
@@ -293,22 +310,16 @@ export default class Datepicker extends React.Component {
|
|
|
293
310
|
left = date;
|
|
294
311
|
|
|
295
312
|
if (!right) {
|
|
296
|
-
|
|
297
|
-
date: [left]
|
|
298
|
-
});
|
|
313
|
+
this.handleChange([left]);
|
|
299
314
|
} else {
|
|
300
315
|
if (this.dateHelpers.isAfter(right, left) || this.dateHelpers.isEqual(left, right)) {
|
|
301
|
-
|
|
302
|
-
date: [left, right]
|
|
303
|
-
});
|
|
316
|
+
this.handleChange([left, right]);
|
|
304
317
|
} else {
|
|
305
318
|
// Is resetting back to previous value appropriate? Invalid range is not
|
|
306
319
|
// communicated to the user, but if it was not reset the text value would
|
|
307
320
|
// show one value and date value another. This seems a bit better but clearly
|
|
308
321
|
// has a downside.
|
|
309
|
-
|
|
310
|
-
date: [...value]
|
|
311
|
-
});
|
|
322
|
+
this.handleChange([...value]);
|
|
312
323
|
}
|
|
313
324
|
}
|
|
314
325
|
} else if (displayValueAtRangeIndex === 1) {
|
|
@@ -316,26 +327,18 @@ export default class Datepicker extends React.Component {
|
|
|
316
327
|
|
|
317
328
|
if (!left) {
|
|
318
329
|
// If start value is not defined, set start/end to the same day.
|
|
319
|
-
|
|
320
|
-
date: [right, right]
|
|
321
|
-
});
|
|
330
|
+
this.handleChange([right, right]);
|
|
322
331
|
} else {
|
|
323
332
|
if (this.dateHelpers.isAfter(right, left) || this.dateHelpers.isEqual(left, right)) {
|
|
324
|
-
|
|
325
|
-
date: [left, right]
|
|
326
|
-
});
|
|
333
|
+
this.handleChange([left, right]);
|
|
327
334
|
} else {
|
|
328
335
|
// See comment above about resetting dates on invalid range
|
|
329
|
-
|
|
330
|
-
date: [...value]
|
|
331
|
-
});
|
|
336
|
+
this.handleChange([...value]);
|
|
332
337
|
}
|
|
333
338
|
}
|
|
334
339
|
}
|
|
335
340
|
} else {
|
|
336
|
-
|
|
337
|
-
date
|
|
338
|
-
});
|
|
341
|
+
this.handleChange(date);
|
|
339
342
|
}
|
|
340
343
|
}
|
|
341
344
|
}
|
|
@@ -427,9 +430,6 @@ export default class Datepicker extends React.Component {
|
|
|
427
430
|
const placeholder = this.props.placeholder || this.props.placeholder === '' ? this.props.placeholder : this.props.range && !this.props.separateRangeInputs ? `YYYY/MM/DD ${INPUT_DELIMITER} YYYY/MM/DD` : 'YYYY/MM/DD';
|
|
428
431
|
const [startDate = '', endDate = ''] = (this.state.inputValue || '').split(` ${INPUT_DELIMITER} `);
|
|
429
432
|
const value = inputRole === INPUT_ROLE.startDate ? startDate : inputRole === INPUT_ROLE.endDate ? endDate : this.state.inputValue;
|
|
430
|
-
|
|
431
|
-
const onChange = event => this.handleInputChange(event, inputRole);
|
|
432
|
-
|
|
433
433
|
return /*#__PURE__*/React.createElement(InputComponent, _extends({
|
|
434
434
|
"aria-disabled": this.props.disabled,
|
|
435
435
|
"aria-label": this.props['aria-label'] || (this.props.range ? locale.datepicker.ariaLabelRange : locale.datepicker.ariaLabel),
|
|
@@ -444,7 +444,7 @@ export default class Datepicker extends React.Component {
|
|
|
444
444
|
onFocus: () => this.open(inputRole),
|
|
445
445
|
onBlur: this.handleInputBlur,
|
|
446
446
|
onKeyDown: this.handleKeyDown,
|
|
447
|
-
onChange:
|
|
447
|
+
onChange: event => this.handleInputChange(event, inputRole),
|
|
448
448
|
placeholder: placeholder,
|
|
449
449
|
mask: this.getMask(),
|
|
450
450
|
required: this.props.required,
|
|
@@ -477,7 +477,7 @@ export default class Datepicker extends React.Component {
|
|
|
477
477
|
trapTabbing: true,
|
|
478
478
|
value: this.props.value
|
|
479
479
|
}, this.props, {
|
|
480
|
-
onChange: this.
|
|
480
|
+
onChange: this.onCalendarSelect,
|
|
481
481
|
selectedInput: this.state.selectedInput,
|
|
482
482
|
hasLockedBehavior: this.hasLockedBehavior()
|
|
483
483
|
}))
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
+
|
|
1
3
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
4
|
|
|
3
5
|
/*
|
|
@@ -12,7 +14,10 @@ import Calendar from './calendar.js';
|
|
|
12
14
|
|
|
13
15
|
class StatefulComponent extends React.Component {
|
|
14
16
|
render() {
|
|
15
|
-
return /*#__PURE__*/React.createElement(StatefulContainer, this.props, extendedProps => /*#__PURE__*/React.createElement(Calendar, extendedProps
|
|
17
|
+
return /*#__PURE__*/React.createElement(StatefulContainer, this.props, extendedProps => /*#__PURE__*/React.createElement(Calendar, _extends({}, extendedProps, {
|
|
18
|
+
// flowlint-next-line unclear-type:off
|
|
19
|
+
onChange: extendedProps.onChange
|
|
20
|
+
})));
|
|
16
21
|
}
|
|
17
22
|
|
|
18
23
|
}
|
|
@@ -20,9 +20,29 @@ class StatefulContainer extends React.Component {
|
|
|
20
20
|
this.internalSetState(STATE_CHANGE_TYPE.change, {
|
|
21
21
|
value: date
|
|
22
22
|
});
|
|
23
|
+
const onChange = this.props.onChange;
|
|
23
24
|
|
|
24
|
-
if (
|
|
25
|
-
|
|
25
|
+
if (onChange) {
|
|
26
|
+
if (Array.isArray(date)) {
|
|
27
|
+
if (date.every(Boolean)) {
|
|
28
|
+
// flowlint-next-line unclear-type:off
|
|
29
|
+
onChange({
|
|
30
|
+
date: date
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
} else {
|
|
34
|
+
onChange({
|
|
35
|
+
date
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const onRangeChange = this.props.onRangeChange;
|
|
41
|
+
|
|
42
|
+
if (onRangeChange) {
|
|
43
|
+
onRangeChange({
|
|
44
|
+
date
|
|
45
|
+
});
|
|
26
46
|
}
|
|
27
47
|
});
|
|
28
48
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
+
|
|
1
3
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
4
|
|
|
3
5
|
/*
|
|
@@ -12,7 +14,10 @@ import Datepicker from './datepicker.js';
|
|
|
12
14
|
|
|
13
15
|
class StatefulComponent extends React.Component {
|
|
14
16
|
render() {
|
|
15
|
-
return /*#__PURE__*/React.createElement(StatefulContainer, this.props, extendedProps => /*#__PURE__*/React.createElement(Datepicker, extendedProps
|
|
17
|
+
return /*#__PURE__*/React.createElement(StatefulContainer, this.props, extendedProps => /*#__PURE__*/React.createElement(Datepicker, _extends({}, extendedProps, {
|
|
18
|
+
// flowlint-next-line unclear-type:off
|
|
19
|
+
onChange: extendedProps.onChange
|
|
20
|
+
})));
|
|
16
21
|
}
|
|
17
22
|
|
|
18
23
|
}
|
|
@@ -315,12 +315,12 @@ var Calendar = /*#__PURE__*/function (_React$Component) {
|
|
|
315
315
|
_defineProperty(_assertThisInitialized(_this), "handleDateChange", function (data) {
|
|
316
316
|
var _this$props$onChange = _this.props.onChange,
|
|
317
317
|
onChange = _this$props$onChange === void 0 ? function (params) {} : _this$props$onChange;
|
|
318
|
-
var updatedDate = data.date; //
|
|
319
|
-
|
|
320
|
-
var newTimeState = _toConsumableArray(_this.state.time); // Apply the currently selected time values (saved in state) to the updated date
|
|
321
|
-
|
|
318
|
+
var updatedDate = data.date; // Apply the currently selected time values (saved in state) to the updated date
|
|
322
319
|
|
|
323
320
|
if (Array.isArray(data.date)) {
|
|
321
|
+
// We'll need to update the date in time values of internal state
|
|
322
|
+
var newTimeState = _toConsumableArray(_this.state.time);
|
|
323
|
+
|
|
324
324
|
var start = data.date[0] ? _this.dateHelpers.applyDateToTime(newTimeState[0], data.date[0]) : null;
|
|
325
325
|
var end = data.date[1] ? _this.dateHelpers.applyDateToTime(newTimeState[1], data.date[1]) : null;
|
|
326
326
|
newTimeState[0] = start;
|
|
@@ -330,16 +330,21 @@ var Calendar = /*#__PURE__*/function (_React$Component) {
|
|
|
330
330
|
newTimeState[1] = end;
|
|
331
331
|
} else {
|
|
332
332
|
updatedDate = [start];
|
|
333
|
-
}
|
|
333
|
+
} // Update the date in time values of internal state
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
_this.setState({
|
|
337
|
+
time: newTimeState
|
|
338
|
+
});
|
|
334
339
|
} else if (!Array.isArray(_this.props.value) && data.date) {
|
|
335
|
-
|
|
336
|
-
updatedDate = newTimeState[0];
|
|
337
|
-
} // Update the date in time values of internal state
|
|
340
|
+
var _newTimeState = _this.dateHelpers.applyDateToTime(_this.state.time[0], data.date);
|
|
338
341
|
|
|
342
|
+
updatedDate = _newTimeState; // Update the date in time values of internal state
|
|
339
343
|
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
344
|
+
_this.setState({
|
|
345
|
+
time: [_newTimeState]
|
|
346
|
+
});
|
|
347
|
+
}
|
|
343
348
|
|
|
344
349
|
onChange({
|
|
345
350
|
date: updatedDate
|