Skip to content

Commit c7826e0

Browse files
committed
wip: update spinnerGroup styling
1 parent 02b7dfc commit c7826e0

File tree

2 files changed

+15
-13
lines changed

2 files changed

+15
-13
lines changed

examples/basic/spinnerGroup.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,32 @@ import * as p from '@clack/prompts';
22

33
p.intro('spinner groups start...');
44

5+
function sleep(ms: number) {
6+
return new Promise((resolve) => setTimeout(resolve, ms));
7+
}
8+
59
const s = p.spinner();
610
s.start('example start');
7-
await new Promise((resolve) => setTimeout(resolve, 500));
11+
await sleep(500);
812
s.stop('example stopped');
913

1014
await p.spinnerGroup('Outer group', [
1115
[
1216
'First sub-task',
13-
async () => {
14-
await new Promise((resolve) => setTimeout(resolve, 1000));
15-
},
17+
() => sleep(1000),
1618
],
1719
[
1820
'Second sub-task',
1921
async () => {
2022
if (process.env.THROW_ERROR) {
2123
throw new Error(process.env.THROW_ERROR);
2224
}
23-
await new Promise((resolve) => setTimeout(resolve, 1000));
25+
await sleep(1000)
2426
},
2527
],
2628
[
2729
'Third sub-task',
28-
async () => {
29-
await new Promise((resolve) => setTimeout(resolve, 1000));
30-
},
30+
() => sleep(1000),
3131
],
3232
]);
3333

packages/prompts/src/index.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import readline from 'readline';
12
import {
23
ConfirmPrompt,
34
GroupMultiSelectPrompt,
@@ -12,7 +13,6 @@ import {
1213
} from '@clack/core';
1314
import isUnicodeSupported from 'is-unicode-supported';
1415
import color from 'picocolors';
15-
import readline from 'readline';
1616
import { cursor, erase } from 'sisteransi';
1717

1818
export { isCancel } from '@clack/core';
@@ -31,6 +31,8 @@ const S_BAR_END = s('└', '—');
3131

3232
const S_RADIO_ACTIVE = s('●', '>');
3333
const S_RADIO_INACTIVE = s('○', ' ');
34+
const S_SUBTASK_ACTIVE = s('▸', '>');
35+
const S_SUBTASK_INACTIVE = s('▹', ' ');
3436
const S_CHECKBOX_ACTIVE = s('◻', '[•]');
3537
const S_CHECKBOX_SELECTED = s('◼', '[+]');
3638
const S_CHECKBOX_INACTIVE = s('◻', '[ ]');
@@ -763,25 +765,25 @@ function ansiRegex() {
763765
export type SpinnerGroup = [message: string, run: () => Promise<void>];
764766

765767
export const spinnerGroup = async (outerMessage: string, groups: SpinnerGroup[]) => {
766-
process.stdout.write(`${color.gray(S_BAR)}\n ${S_BAR_START} ${outerMessage}\n`);
768+
process.stdout.write(`${color.gray(S_BAR)}\n ${outerMessage}\n`);
767769

768770
const s = spinner();
769771
let caught: [group: SpinnerGroup, error: unknown] | undefined;
770772

771773
for (const [message, run] of groups) {
772-
const line = `${color.gray(S_BAR)} ${message}`;
773774
readline.clearLine(process.stdout, -1);
774775
readline.moveCursor(process.stdout, -999, -1);
775776

776-
s.start(line);
777+
s.start(`${color.green(S_SUBTASK_ACTIVE)} ${message}`);
777778
await run().catch((error) => {
778779
caught = [[message, run], error];
779780
});
780-
s.stop(line);
781781

782782
if (caught) {
783+
s.stop(`${color.red(S_SUBTASK_ACTIVE)} ${message}`);
783784
break;
784785
}
786+
s.stop(`${color.gray(S_SUBTASK_INACTIVE)} ${message}`);
785787
}
786788

787789
if (caught) {

0 commit comments

Comments
 (0)