🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

inquirer-select-pro

Package Overview
Dependencies
Maintainers
0
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

inquirer-select-pro

An inquirer select that supports multiple selections and filtering.

1.0.0-alpha.9
latest
Source
npm
Version published
Weekly downloads
13K
19.94%
Maintainers
0
Weekly downloads
 
Created
Source

inquirer-select-pro

NPM Version codecov CI

An inquirer select that supports multiple selections and filtering/searching.

Install

pnpm i inquirer-select-pro
npm i inquirer-select-pro

Try now?

npx @jeffwcx/gitignore

asciicast

A CLI to generate a .gitignore file: @jeffwcx/gitignore.

Usage

Multiple selection and async data source

import { select } from 'inquirer-select-pro';
const answer = await select({
  message: 'select',
  options: async (input) => {
    const res = await fetch('<url>', {
      body: new URLSearchParams({ keyword: input }),
    });
    if (!res.ok) throw new Error('fail to get list!');
    return await res.json();
  },
});

Radio mode

import { select } from 'inquirer-select-pro';
const answer = await select({
  message: 'select...',
  mutiple: false,
  options: [
    { name: 'Apple', value: 'apple' },
    { name: 'Banana', value: 'banana' },
  ],
});

clearInputWhenSelected

Clear the filter input when the option is selected (also causes the option list to change).

confirmDelete(multiple only)

The first time you try the delete key, it will focus on the option to be deleted, and the second time it will remove the focused option.

import { select } from 'inquirer-select-pro';
const answer = await select({
  message: 'select',
  confirmDelete: true,
  options: async (input) => {
    const res = await fetch('<url>', {
      body: new URLSearchParams({ keyword: input }),
    });
    if (!res.ok) throw new Error('fail to get list!');
    return await res.json();
  },
});

API

select()

An inquirer select that supports multiple selections and filtering

Parameters

  • config SelectProps <Value, Multiple>

Returns

CancelablePromise <Value>

Examples

import { select } from 'inquirer-select-pro';
const answer = await select({
  message: 'select',
  options: async (input) => {
    const res = await fetch('<url>', {
      body: new URLSearchParams({ keyword: input }),
    });
    if (!res.ok) throw new Error('fail to get list!');
    return await res.json();
  },
});

useSelect()

[!WARNING] This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.

Type

declare function useSelect<Value, Multiple extends boolean>(
  props: UseSelectOptions<Value, Multiple>,
): UseSelectReturnValue<Value>;

Parameters

Returns

UseSelectReturnValue<Value>

Theming

Type

export type SelectTheme = {
  prefix: string;
  spinner: {
    interval: number;
    frames: string[];
  };
  icon: {
    checked: string;
    unchecked: string;
    cursor: string;
    inputCursor: string;
  };
  style: {
    answer: (text: string) => string;
    message: (text: string) => string;
    error: (text: string) => string;
    help: (text: string) => string;
    highlight: (text: string) => string;
    key: (text: string) => string;
    disabledOption: (text: string) => string;
    renderSelectedOptions: <T>(
      selectedOptions: ReadonlyArray<SelectOption<T>>,
      allOptions: ReadonlyArray<SelectOption<T> | Separator>,
    ) => string;
    emptyText: (text: string) => string;
    placeholder: (text: string) => string;
  };
  helpMode: 'always' | 'never' | 'auto';
};

Examples

await renderPrompt({
  message,
  placeholder: 'search',
  options: () => top100Films,
  pageSize: 2,
  instructions: false,
  theme: {
    icon: {
      inputCursor: 'filter: ',
      checked: ' √',
      unchecked: ' ',
    },
    style: {
      placeholder: (text: string) => `${text}...`,
    },
  },
});

The appearance is as follows:

? Choose movie:
filter:  The Shawshank Redemption (1994)
> √ The Shawshank Redemption (1994)
    The Godfather (1972)

How to contribute?

  • Fork the project

  • Start development

git clone https://github.com/yourname/inquirer-select-pro.git
cd inquirer-select-pro
pnpm i
# Create a branch
git checkout -b my-new-feature
# Develop
pnpm dev
# Build
pnpm build
# Test
pnpm test

[!NOTE] Running pnpm dev actually allows you to specify the demo directly.

Here is a list of available demos:

  • local
  • remote
  • filter-remote
  • filter-local
pnpm dev filter-remote

Parameters can also be fixed. The following parameters can be fixed:

  • filter
  • clearInputWhenSelected
  • required
  • loop
  • multiple
  • canToggleAll
  • confirmDelete
  • selectFocusedOnSubmit
pnpm dev filter-demo --multiple=false
  • Commit changes to your branch git commit -am 'Add some feature'

  • Push your branch git push origin my-new-feature

  • Submit a pull request

Keywords

inquirer

FAQs

Package last updated on 14 Dec 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts