@stimulus-plumbers/controllers 0.3.3 → 0.4.0

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.
@@ -77,6 +77,7 @@ export class Calendar extends Plumber {
77
77
  this.daysOfWeek = this.buildDaysOfWeek();
78
78
  this.daysOfMonth = this.buildDaysOfMonth();
79
79
  this.monthsOfYear = this.buildMonthsOfYear();
80
+ this.yearsOfDecade = this.buildYearsOfDecade();
80
81
  }
81
82
 
82
83
  /**
@@ -162,6 +163,24 @@ export class Calendar extends Plumber {
162
163
  return monthsOfYear;
163
164
  }
164
165
 
166
+ /**
167
+ * Builds array of year objects spanning the decade containing the current year.
168
+ * Returns 12 entries: decade start - 1 (buffer) through decade start + 10 (buffer).
169
+ * @returns {Array<Object>} Array of year objects
170
+ */
171
+ buildYearsOfDecade() {
172
+ const decadeStart = Math.floor(this.year / 10) * 10;
173
+ const yearsOfDecade = [];
174
+ for (let i = decadeStart - 1; i <= decadeStart + 10; i++) {
175
+ yearsOfDecade.push({
176
+ value: i,
177
+ current: i === this.year,
178
+ outside: i < decadeStart || i > decadeStart + 9,
179
+ });
180
+ }
181
+ return yearsOfDecade;
182
+ }
183
+
165
184
  /**
166
185
  * Gets the current "today" reference date.
167
186
  * @returns {Date} Today's date
@@ -380,6 +399,9 @@ export class Calendar extends Plumber {
380
399
  get monthsOfYear() {
381
400
  return context.monthsOfYear;
382
401
  },
402
+ get yearsOfDecade() {
403
+ return context.yearsOfDecade;
404
+ },
383
405
  navigate: async (to) => await context.navigate(to),
384
406
  step: async (type, value) => await context.step(type, value),
385
407
  isDisabled: (date) => context.isDisabled(date),