## Inquirer File Tree Selection Prompt

[![Node.js Package](https://github.com/anc95/inquirer-file-tree-selection/actions/workflows/npm-publish.yml/badge.svg)](https://github.com/anc95/inquirer-file-tree-selection/actions/workflows/npm-publish.yml)

### QuickDemo
![QuickDemo](./example/screenshot.gif)

### Install
```sh
npm install inquirer-file-tree-selection-prompt
```

### Usage
```js
inquirer.registerPrompt('file-tree-selection', inquirerFileTreeSelection)

inquirer.prompt({
  type: 'file-tree-selection',
  ...
})
```

### Options
Takes `type`, `name`, `message`, [`filter`, `validate`, `transformer`, `default`, `pageSize`, `onlyShowDir`, `onlyShowValid`, `hideChildrenOfValid`, `root`, `hideRoot`, `multiple`, `enableGoUpperDirector`] properties.

The extra options that this plugin provides are:
- `onlyShowDir`:  (Boolean) if true, will only show directory. Default: false.
- `root`: (String) it is the root of file tree. Default: process.cwd(). 
- `onlyShowValid`: (Boolean) if true, will only show valid files (if `validate` is provided). Default: false.
- `hideChildrenOfValid`: (Boolean) if true, will hide children of valid directories (if `validate` is provided). Default: false.
- `transformer`: (Function) a hook function to transform the display of directory or file name.
- `multiple`: (Boolean) if true, will enable to select multiple files. Default: false.
- `enableGoUpperDirector`: (Boolean) Show `..` in inside root dir, and the user can press **space** on it to go upper directory. Default: false.

When `multiple` is enabled, `default` should be `string[]` type, otherwise it's `string` type.
### Typescript Support

> version >= 1.0.16

1. Install `@types/inquirer`

2. Ensure you have registered with `file-tree-selection`

```js
inquirer.registerPrompt('file-tree-selection', inquirerFileTreeSelection)
```

3. And you will get type support when you code in IDE

![ts](./example/ts.jpeg)

### Example
```js
const inquirer = require('inquirer')
const inquirerFileTreeSelection = require('inquirer-file-tree-selection-prompt')

inquirer.registerPrompt('file-tree-selection', inquirerFileTreeSelection)

inquirer
  .prompt([
    {
      type: 'file-tree-selection',
      name: 'file'
    }
  ])
  .then(answers => {
    console.log(JSON.stringify(answers))
  });
```
