()
| 172 | } |
| 173 | |
| 174 | _getGridStartYear() { |
| 175 | const rangeSize = this._getRangeSize(); |
| 176 | const pageSize = this._getPageSize(); |
| 177 | const pageSizeInYears = rangeSize * pageSize; |
| 178 | const yearsOffset = rangeSize * this._getInitialFocusedIndex(); |
| 179 | const currentStartYear = this._currentYearRange?.startYear ? this._currentYearRange?.startYear : this._calendarDate.getYear(); |
| 180 | |
| 181 | // On first load, current range should be the 3rd item in the grid |
| 182 | let gridStartYear = this._gridStartYear ? this._gridStartYear : currentStartYear - yearsOffset; |
| 183 | |
| 184 | // If page navigation occured, update the current range start year |
| 185 | gridStartYear += Math.floor((currentStartYear - gridStartYear) / pageSizeInYears) * pageSizeInYears; |
| 186 | |
| 187 | // Normalize grid start year to be between the min and absolute max year |
| 188 | const minYear = this._minDate.getYear(); |
| 189 | if (currentStartYear - rangeSize < minYear) { |
| 190 | gridStartYear = minYear; |
| 191 | } |
| 192 | |
| 193 | const absoluteMaxYear = getMaxCalendarDate(this._primaryCalendarType).getYear(); |
| 194 | if (currentStartYear + pageSizeInYears > absoluteMaxYear) { |
| 195 | gridStartYear = absoluteMaxYear - pageSizeInYears + 1; |
| 196 | } |
| 197 | |
| 198 | return gridStartYear; |
| 199 | } |
| 200 | |
| 201 | _getYearRanges() { |
| 202 | const yearFormat = DateFormat.getDateInstance({ format: "y", calendarType: this._primaryCalendarType }); |
no test coverage detected