Skip to content

Commit 090902c

Browse files
authored
feat(core, prompts): add DatePrompt for date input with customizable formats (#448)
1 parent 29a50cb commit 090902c

File tree

13 files changed

+1513
-5
lines changed

13 files changed

+1513
-5
lines changed

.changeset/tangy-mirrors-hug.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@clack/prompts": minor
3+
"@clack/core": minor
4+
---
5+
6+
Adds `date` prompt with format support (YYYY/MM/DD, MM/DD/YYYY, DD/MM/YYYY).

examples/basic/date.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import * as p from '@clack/prompts';
2+
import color from 'picocolors';
3+
4+
async function main() {
5+
const result = (await p.date({
6+
message: color.magenta('Pick a date'),
7+
format: 'YYYY/MM/DD',
8+
minDate: new Date('2025-01-01'),
9+
maxDate: new Date('2025-12-31'),
10+
})) as Date;
11+
12+
if (p.isCancel(result)) {
13+
p.cancel('Operation cancelled.');
14+
process.exit(0);
15+
}
16+
17+
const fmt = (d: Date) => d.toISOString().slice(0, 10);
18+
p.outro(`Selected date: ${color.cyan(fmt(result))}`);
19+
}
20+
21+
main().catch(console.error);

examples/basic/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
"progress": "jiti ./progress.ts",
1515
"spinner": "jiti ./spinner.ts",
1616
"path": "jiti ./path.ts",
17-
"spinner-ci": "npx cross-env CI=\"true\" jiti ./spinner-ci.ts",
17+
"date": "jiti ./date.ts",
18+
"spinner-ci": "npx cross-env CI=\"true\" jiti ./spinner-ci.ts",
1819
"spinner-timer": "jiti ./spinner-timer.ts",
1920
"task-log": "jiti ./task-log.ts"
2021
},

packages/core/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ export type { AutocompleteOptions } from './prompts/autocomplete.js';
22
export { default as AutocompletePrompt } from './prompts/autocomplete.js';
33
export type { ConfirmOptions } from './prompts/confirm.js';
44
export { default as ConfirmPrompt } from './prompts/confirm.js';
5+
export type { DateFormatConfig, DateOptions, DateParts } from './prompts/date.js';
6+
export { default as DatePrompt } from './prompts/date.js';
57
export type { GroupMultiSelectOptions } from './prompts/group-multiselect.js';
68
export { default as GroupMultiSelectPrompt } from './prompts/group-multiselect.js';
79
export type { MultiSelectOptions } from './prompts/multi-select.js';

0 commit comments

Comments
 (0)