in src/datepicker/day.tsx [317:380]
getSharedProps() {
const date = this.getDateProp();
const { value, highlightedDate, range, highlighted, peekNextMonth } = this.props;
const $isHighlighted = highlighted;
const $selected = this.isSelected();
const $hasRangeHighlighted = !!(
Array.isArray(value) &&
range &&
highlightedDate &&
((value[0] && !value[1] && !this.dateHelpers.isSameDay(value[0], highlightedDate)) ||
(!value[0] && value[1] && !this.dateHelpers.isSameDay(value[1], highlightedDate)))
);
const $outsideMonth = !peekNextMonth && this.isOutsideMonth();
const $outsideMonthWithinRange = !!(
Array.isArray(value) &&
range &&
$outsideMonth &&
!peekNextMonth &&
this.isOutsideOfMonthButWithinRange()
);
return {
$date: date,
$density: this.props.density,
$disabled: this.props.disabled,
$endDate:
(Array.isArray(value) &&
!!(value[0] && value[1]) &&
range &&
$selected &&
this.dateHelpers.isSameDay(date, value[1])) ||
false,
$hasDateLabel: !!this.props.dateLabel,
$hasRangeHighlighted,
$hasRangeOnRight:
Array.isArray(value) &&
$hasRangeHighlighted &&
highlightedDate &&
((value[0] && this.dateHelpers.isAfter(highlightedDate, value[0])) ||
(value[1] && this.dateHelpers.isAfter(highlightedDate, value[1]))),
$hasRangeSelected: Array.isArray(value) ? !!(value[0] && value[1]) : false,
$highlightedDate: highlightedDate,
$isHighlighted,
$isHovered: this.state.isHovered,
$isFocusVisible: this.state.isFocusVisible,
$startOfMonth: this.dateHelpers.isStartOfMonth(date),
$endOfMonth: this.dateHelpers.isEndOfMonth(date),
$month: this.getMonthProp(),
$outsideMonth,
$outsideMonthWithinRange,
$peekNextMonth: peekNextMonth,
$pseudoHighlighted:
range && !$isHighlighted && !$selected ? this.isPseudoHighlighted() : false,
$pseudoSelected: range && !$selected ? this.isPseudoSelected() : false,
$range: range,
$selected,
$startDate:
Array.isArray(value) && value[0] && value[1] && range && $selected
? this.dateHelpers.isSameDay(date, value[0])
: false,
$hasLockedBehavior: this.props.hasLockedBehavior,
$selectedInput: this.props.selectedInput,
$value: this.props.value,
};
}