Skip to content

Commit b7f39f7

Browse files
committed
feat(clamp): Update types to support Date
1 parent a9bb9c9 commit b7f39f7

File tree

3 files changed

+42
-15
lines changed

3 files changed

+42
-15
lines changed

.changeset/tricky-snails-repeat.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@layerstack/utils': patch
3+
---
4+
5+
feat(clamp): Update types to support `Date`

packages/utils/src/lib/number.test.ts

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,44 @@ import { clamp, formatNumber, formatNumberWithLocale, round, step } from './numb
44
import { createLocaleSettings } from './locale.js';
55

66
describe('clamp()', () => {
7-
it('no change', () => {
8-
const original = 15;
9-
const actual = clamp(original, 10, 20);
10-
expect(actual).equal(15);
11-
});
7+
describe('number', () => {
8+
it('no change', () => {
9+
const original = 15;
10+
const actual = clamp(original, 10, 20);
11+
expect(actual).equal(15);
12+
});
1213

13-
it('clamp min', () => {
14-
const original = 5;
15-
const actual = clamp(original, 10, 20);
16-
expect(actual).equal(10);
14+
it('clamp min', () => {
15+
const original = 5;
16+
const actual = clamp(original, 10, 20);
17+
expect(actual).equal(10);
18+
});
19+
20+
it('clamp max', () => {
21+
const original = 25;
22+
const actual = clamp(original, 10, 20);
23+
expect(actual).equal(20);
24+
});
1725
});
1826

19-
it('clamp max', () => {
20-
const original = 25;
21-
const actual = clamp(original, 10, 20);
22-
expect(actual).equal(20);
27+
describe('Date', () => {
28+
it('no change', () => {
29+
const original = new Date(2020, 0, 15);
30+
const actual = clamp(original, new Date(2020, 0, 10), new Date(2020, 0, 20));
31+
expect(actual).toEqual(original);
32+
});
33+
34+
it('clamp min', () => {
35+
const original = new Date(2020, 0, 5);
36+
const actual = clamp(original, new Date(2020, 0, 10), new Date(2020, 0, 20));
37+
expect(actual).toEqual(new Date(2020, 0, 10));
38+
});
39+
40+
it('clamp max', () => {
41+
const original = new Date(2020, 0, 25);
42+
const actual = clamp(original, new Date(2020, 0, 10), new Date(2020, 0, 20));
43+
expect(actual).toEqual(new Date(2020, 0, 20));
44+
});
2345
});
2446
});
2547

packages/utils/src/lib/number.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,9 @@ export function formatNumberWithLocale(
118118
}
119119

120120
/**
121-
* Clamps value within min and max
121+
* Clamps value within min and max. Supports number and Date
122122
*/
123-
export function clamp(value: number, min: number, max: number) {
123+
export function clamp<T extends number | Date>(value: T, min: T, max: T) {
124124
return value < min ? min : value > max ? max : value;
125125
}
126126

0 commit comments

Comments
 (0)