@d-matrix/utils 1.10.0 → 1.11.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.
package/dist/date.d.ts CHANGED
@@ -1,3 +1,7 @@
1
+ export interface RecentYearOption {
2
+ label: string;
3
+ value: number;
4
+ }
1
5
  /**
2
6
  * Generates an array of numbers representing a range of years between the start year and the end year.
3
7
  *
@@ -5,16 +9,20 @@
5
9
  * @param {number} end - the ending year of the range (defaults to the current year)
6
10
  * @return {number[]} an array of numbers representing the range of years
7
11
  */
8
- export declare const rangeOfYears: (start: number, end?: number) => number[];
9
- export interface RecentYearOption {
10
- label: string;
11
- value: number;
12
- }
12
+ export declare function rangeOfYears(start: number, end?: number): number[];
13
+ export declare type GetRecentYearsOptions = {
14
+ startYear?: number;
15
+ recentYears?: number;
16
+ endYear?: number;
17
+ suffix?: string;
18
+ };
13
19
  /**
14
- * 获取最近n年, 从大到小
15
- * @param recentYears 最近几年
16
- * @param type 控制返回值类型
17
- * @param suffix 后缀,默认为'年'
20
+ * 获取n年, 从大到小
21
+ * @param options
18
22
  */
19
- export declare function getRecentYears(recentYears: number, type: 'number[]'): number[];
20
- export declare function getRecentYears(recentYears: number, type: 'object[]'): RecentYearOption[];
23
+ export declare function getYears(options: GetRecentYearsOptions & {
24
+ type: 'number[]';
25
+ }): number[];
26
+ export declare function getYears(options: GetRecentYearsOptions & {
27
+ type: 'object[]';
28
+ }): RecentYearOption[];
package/dist/date.js CHANGED
@@ -5,24 +5,43 @@
5
5
  * @param {number} end - the ending year of the range (defaults to the current year)
6
6
  * @return {number[]} an array of numbers representing the range of years
7
7
  */
8
- export const rangeOfYears = (start, end = new Date().getFullYear()) => Array(end - start + 1)
9
- .fill(start)
10
- .map((year, index) => year + index);
11
- export function getRecentYears(recentYears, type, suffix = '年') {
12
- const thisYear = new Date().getFullYear();
8
+ export function rangeOfYears(start, end = new Date().getFullYear()) {
9
+ return Array(end - start + 1)
10
+ .fill(start)
11
+ .map((year, index) => year + index);
12
+ }
13
+ export function getYears(options) {
14
+ const { recentYears = 0, startYear, endYear, suffix = '年', type } = options;
15
+ const endY = endYear ? endYear : new Date().getFullYear();
16
+ let ranges = recentYears;
17
+ if (typeof startYear === 'number') {
18
+ // 包含startYear
19
+ ranges = endY - startYear + 1;
20
+ if (ranges <= 0) {
21
+ if (process.env.NODE_ENV === 'development') {
22
+ if (endYear === undefined) {
23
+ console.error('startYear不能大于当前年份');
24
+ }
25
+ else if (typeof endYear === 'number') {
26
+ console.error('endYear不能小于startYear');
27
+ }
28
+ }
29
+ return [];
30
+ }
31
+ }
13
32
  if (type === 'number[]') {
14
33
  const result = [];
15
- for (let i = 0; i < recentYears; i++) {
16
- result.push(thisYear - i);
34
+ for (let i = 0; i < ranges; i++) {
35
+ result.push(endY - i);
17
36
  }
18
37
  return result;
19
38
  }
20
39
  if (type === 'object[]') {
21
40
  const result = [];
22
- for (let i = 0; i < recentYears; i++) {
41
+ for (let i = 0; i < ranges; i++) {
23
42
  result.push({
24
- value: thisYear - i,
25
- label: `${thisYear - i}${suffix}`,
43
+ value: endY - i,
44
+ label: `${endY - i}${suffix}`,
26
45
  });
27
46
  }
28
47
  return result;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@d-matrix/utils",
3
3
  "sideEffects": false,
4
- "version": "1.10.0",
4
+ "version": "1.11.0",
5
5
  "description": "A dozen of utils for Front-End Development",
6
6
  "main": "dist/index.js",
7
7
  "scripts": {
package/readme.md CHANGED
@@ -146,27 +146,34 @@ dom.strip('测试<em>高亮</em>测试'); // '测试高亮测试'
146
146
  - `getRecentYears()`
147
147
 
148
148
  ```ts
149
- export function getRecentYears(recentYears: number, type: 'number[]'): number[];
150
- export function getRecentYears(recentYears: number, type: 'object[]'): RecentYearOption[];
151
- export function getRecentYears(recentYears: number, type: 'number[]' | 'object[]', suffix = '年'): number[] | RecentYearOption[]
149
+ export type GetRecentYearsOptions = {
150
+ // 开始年份
151
+ startYear?: number;
152
+ // 最近几年
153
+ recentYears?: number;
154
+ // 截止年份
155
+ endYear?: number;
156
+ // 后缀,默认为'年'
157
+ suffix?: string;
158
+ };
159
+
160
+ export function getYears(options: GetRecentYearsOptions & { type: 'number[]' }): number[];
161
+ export function getYears(options: GetRecentYearsOptions & { type: 'object[]' }): RecentYearOption[];
162
+ export function getYears(options: GetRecentYearsOptions & { type: 'object[]' | 'number[]' }): number[] | RecentYearOption[]
152
163
  ```
153
164
 
154
- 获取最近n
165
+ 获取n年,`type`传`number[]`,返回`[2023, 2022, 2021]`数字数组;`type`传`object[]`,返回如下的对象数组
155
166
 
156
- ```ts
157
- import { date } from '@d-matrix/utils';
158
-
159
- getRecentYears(5, 'number[]'); // [2024, 2023, 2022, 2021, 2020]
160
- getRecentYears(5, 'object[]');
161
- // [
162
- // { value: 2024, label: '2024年' },
163
- // { value: 2023, label: '2023年' },
164
- // { value: 2022, label: '2022年' },
165
- // { value: 2021, label: '2021年' },
166
- // { value: 2020, label: '2020年' },
167
- // ]
167
+ ```sh
168
+ [
169
+ { value: 2023, label: '2023年' },
170
+ { value: 2022, label: '2022年' },
171
+ { value: 2021, label: '2021年' },
172
+ ]
168
173
  ```
169
174
 
175
+ 更多用法,见[测试用例](./tests/date.cy.ts)
176
+
170
177
  ### types
171
178
 
172
179
  - `WithOptional<T, K extends keyof T>`