You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
897 B
37 lines
897 B
'use strict'; |
|
|
|
const hint = '(Use <shift>+<up/down> to sort)'; |
|
const Prompt = require('./select'); |
|
|
|
class Sort extends Prompt { |
|
constructor(options) { |
|
super({ ...options, reorder: false, sort: true, multiple: true }); |
|
this.state.hint = [this.options.hint, hint].find(this.isValue.bind(this)); |
|
} |
|
|
|
indicator() { |
|
return ''; |
|
} |
|
|
|
async renderChoice(choice, i) { |
|
let str = await super.renderChoice(choice, i); |
|
let sym = this.symbols.identicalTo + ' '; |
|
let pre = (this.index === i && this.sorting) ? this.styles.muted(sym) : ' '; |
|
if (this.options.drag === false) pre = ''; |
|
if (this.options.numbered === true) { |
|
return pre + `${i + 1} - ` + str; |
|
} |
|
return pre + str; |
|
} |
|
|
|
get selected() { |
|
return this.choices; |
|
} |
|
|
|
submit() { |
|
this.value = this.choices.map(choice => choice.value); |
|
return super.submit(); |
|
} |
|
} |
|
|
|
module.exports = Sort;
|
|
|