Skip to content

Commit 8fd673b

Browse files
committed
add disableFuture
1 parent fcfa7f6 commit 8fd673b

File tree

6 files changed

+37
-2
lines changed

6 files changed

+37
-2
lines changed

packages/examples/packages/interactive-ui/snap.manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"url": "https://github.com/MetaMask/snaps.git"
88
},
99
"source": {
10-
"shasum": "r1H34qFTVIm2D+PzqxIk+VTnYto8v9QNuEFtCZ4qxQU=",
10+
"shasum": "D29cn7Em818Oa6tWZ8/lJM551czEl2LZTFkVdEKV/ng=",
1111
"location": {
1212
"npm": {
1313
"filePath": "dist/bundle.js",

packages/examples/packages/interactive-ui/src/components/InteractiveForm.tsx

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,27 @@ export const InteractiveForm: SnapComponent<{ disabled?: boolean }> = ({
104104
</Selector>
105105
</Field>
106106
<Field label="Example DateTimePicker">
107-
<DateTimePicker name="example-datetime" />
107+
<DateTimePicker
108+
name="example-datetime"
109+
disablePast={true}
110+
placeholder="Select a date and time"
111+
/>
112+
</Field>
113+
<Field label="Example DatePicker">
114+
<DateTimePicker
115+
name="example-date"
116+
type="date"
117+
placeholder="Select a date"
118+
disablePast={true}
119+
/>
120+
</Field>
121+
<Field label="Example TimePicker">
122+
<DateTimePicker
123+
name="example-time"
124+
type="time"
125+
placeholder="Select a time"
126+
disablePast={true}
127+
/>
108128
</Field>
109129
</Form>
110130
</Box>

packages/snaps-sdk/src/jsx/components/form/DateTimePicker.test.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ describe('DateTimePicker', () => {
4848
placeholder="Select date and time"
4949
disabled={true}
5050
value="2024-01-01T12:00Z"
51+
disablePast={false}
52+
disableFuture={true}
5153
/>
5254
);
5355

@@ -59,6 +61,8 @@ describe('DateTimePicker', () => {
5961
placeholder: 'Select date and time',
6062
disabled: true,
6163
value: '2024-01-01T12:00Z',
64+
disablePast: false,
65+
disableFuture: true,
6266
},
6367
key: null,
6468
});

packages/snaps-sdk/src/jsx/components/form/DateTimePicker.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,17 @@ import { createSnapComponent } from '../../component';
1111
* Defaults to 'datetime'.
1212
* @property placeholder - The placeholder text of the date/time picker field.
1313
* @property disabled - Whether the date/time picker field is disabled.
14+
* @property disablePast - Whether to allow selection of past dates. Defaults to false.
15+
* @property disableFuture - Whether to allow selection of future dates. Defaults to false.
1416
*/
1517
export type DateTimePickerProps = {
1618
name: string;
1719
value?: string | undefined;
1820
type?: 'date' | 'time' | 'datetime' | undefined;
1921
placeholder?: string | undefined;
2022
disabled?: boolean | undefined;
23+
disablePast?: boolean | undefined;
24+
disableFuture?: boolean | undefined;
2125
};
2226

2327
const TYPE = 'DateTimePicker';
@@ -33,6 +37,8 @@ const TYPE = 'DateTimePicker';
3337
* Defaults to 'datetime'.
3438
* @param props.placeholder - The placeholder text of the date/time picker field.
3539
* @param props.disabled - Whether the date/time picker field is disabled.
40+
* @param props.disablePast - Whether to allow selection of past dates. Defaults to false.
41+
* @param props.disableFuture - Whether to allow selection of future dates. Defaults to false.
3642
*/
3743
export const DateTimePicker = createSnapComponent<
3844
DateTimePickerProps,

packages/snaps-sdk/src/jsx/validation.test.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1021,12 +1021,15 @@ describe('DateTimePickerStruct', () => {
10211021
<DateTimePicker name="foo" type="time" />,
10221022
<DateTimePicker name="foo" value={new Date().toISOString()} />,
10231023
<DateTimePicker name="foo" disabled={true} />,
1024+
<DateTimePicker name="foo" disablePast={false} />,
1025+
<DateTimePicker name="foo" disableFuture={true} />,
10241026
<DateTimePicker
10251027
name="foo"
10261028
value={new Date().toISOString()}
10271029
placeholder="foobar"
10281030
type="datetime"
10291031
disabled={true}
1032+
disablePast={true}
10301033
/>,
10311034
])('validates a date time picker element', (value) => {
10321035
expect(is(value, DateTimePickerStruct)).toBe(true);

packages/snaps-sdk/src/jsx/validation.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,8 @@ export const DateTimePickerStruct: Describe<DateTimePickerElement> = element(
394394
),
395395
placeholder: optional(string()),
396396
disabled: optional(boolean()),
397+
disablePast: optional(boolean()),
398+
disableFuture: optional(boolean()),
397399
value: optional(ISO8601DateStruct),
398400
},
399401
);

0 commit comments

Comments
 (0)