getSharedProps()

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,
    };
  }