diff --git a/blocksuite/affine/components/src/date-picker/date-picker.ts b/blocksuite/affine/components/src/date-picker/date-picker.ts index 7a2ac3835..67a6e05c7 100644 --- a/blocksuite/affine/components/src/date-picker/date-picker.ts +++ b/blocksuite/affine/components/src/date-picker/date-picker.ts @@ -57,7 +57,7 @@ export class DatePicker extends WithDisposable(LitElement) { private readonly _maxYear = 2099; - private readonly _minYear = 1970; + private readonly _minYear = 1000; get _cardStyle() { return { @@ -286,8 +286,18 @@ export class DatePicker extends WithDisposable(LitElement) { `; } + private _clampCursorYear() { + const year = this._cursor.getFullYear(); + if (year < this._minYear) { + this._cursor = new Date(this._minYear, 0, 1); + } else if (year > this._maxYear) { + this._cursor = new Date(this._maxYear, 11, 31); + } + } + private _moveMonth(offset: number) { this._cursor.setMonth(this._cursor.getMonth() + offset); + this._clampCursorYear(); this._getMatrix(); } @@ -420,6 +430,7 @@ export class DatePicker extends WithDisposable(LitElement) { } else if (e.key === 'ArrowDown') { this._cursor.setDate(this._cursor.getDate() + 7); } + this._clampCursorYear(); this._getMatrix(); setTimeout(this.focusDateCell.bind(this)); }