diff --git a/package-lock.json b/package-lock.json index b2a60e2..284f448 100644 --- a/package-lock.json +++ b/package-lock.json @@ -372,6 +372,15 @@ "fastq": "^1.6.0" } }, + "@poppinss/colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@poppinss/colors/-/colors-1.1.0.tgz", + "integrity": "sha512-JngtTERHiDgzibwyzjCoWK/b+ptwo8qTuVBR0WBGyKH+GRdvupWLmTjauERrN+mADibgjw2mxhhLjhjWvdVz6w==", + "requires": { + "color-support": "^1.1.3", + "kleur": "^4.0.1" + } + }, "@samverschueren/stream-to-observable": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", @@ -1319,6 +1328,11 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -3587,10 +3601,9 @@ "dev": true }, "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.0.2.tgz", + "integrity": "sha512-FGCCxczbrZuF5CtMeO0xfnjhzkVZSXfcWK90IPLucDWZwskrpYN7pmRIgvd8muU0mrPrzy4A2RBGuwCjLHI+nw==" }, "latest-version": { "version": "5.1.0", @@ -4240,6 +4253,12 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -4349,6 +4368,12 @@ "webpack-merge": "^4.2.2" }, "dependencies": { + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", diff --git a/package.json b/package.json index 57dcd38..a311cb7 100644 --- a/package.json +++ b/package.json @@ -74,6 +74,7 @@ "anyBranch": false }, "dependencies": { + "@poppinss/colors": "^1.1.0", "enquirer": "^2.3.5" } } diff --git a/src/Base.ts b/src/Base.ts index e443040..01d3892 100644 --- a/src/Base.ts +++ b/src/Base.ts @@ -12,6 +12,7 @@ */ import { EventEmitter } from 'events' +import { Colors } from '@poppinss/colors' import { PromptChoice, PromptContract, @@ -200,6 +201,7 @@ export abstract class Prompt extends EventEmitter implements PromptContract { ): Promise { options = options || {} + const colors = new Colors() const builder = new ObjectBuilder() builder.addProp('type', 'multiselect') builder.addProp('name', options.name) @@ -209,6 +211,13 @@ export abstract class Prompt extends EventEmitter implements PromptContract { builder.addProp('format', options.format) builder.addProp('hint', options.hint) builder.addProp('validate', options.validate) + builder.addProp('indicator', (state, choice) => { + if (choice.enabled) { + return colors.blue(state.symbols.radio.on); + } + + return colors.grey(state.symbols.radio.off); + }) builder.addProp('choices', choices.map((choice) => { if (typeof (choice) === 'string') { return { name: choice, message: choice, value: choice }