Skip to content

Commit

Permalink
Merge branch 'master' into update-packages-latest
Browse files Browse the repository at this point in the history
  • Loading branch information
guiyep authored Jul 8, 2024
2 parents afc5f13 + 7957853 commit 36dbf35
Show file tree
Hide file tree
Showing 8 changed files with 928 additions and 184 deletions.
176 changes: 5 additions & 171 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ I created a component that uses the Airbnb library called `react-virtualized` fo
## Install

```bash
npm install --save react-select-virtualized
yarn add react-select-virtualized
```

### Peer Dependencies
Expand All @@ -35,30 +35,16 @@ npm install --save react-select-virtualized
}
```

## Note
## API Documentation

The select component will be the same from `react-select v5` so you will be able to use it with any select you already have.
You can check the full library documentation [here](https://deluxe-blancmange-4a5494.netlify.app/#/)!!!!.

## Try It
## Examples

[![Edit react-select-virtualized](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/vigilant-mclean-wpbk7)
The select component will be the same from `react-select v5` so you will be able to use it with any select you already have.

Check [Storybook](https://serene-hawking-021d7a.netlify.com/) for more examples

## What we do support and don't from react-select

Components: `Select`, `Async`, `Creatable`

- [x] We support all the UI related props for the input. Extension also.

- [x] We do not support any related prop to the popup list. We extend it. \*Sorry no extension of any component inside the list.\*

- [x] Sorry no multi selection yet. (no `isMulti`)

# Examples

## Options Shape

```jsx
const options = [
{
Expand Down Expand Up @@ -97,155 +83,3 @@ const Example1 = () => <Select options={opsGroup} grouped />;
```

[![Edit react-select-virtualized](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/angry-wing-5deq4)

## Usage Async

```jsx

import React from 'react';

import { Async } from 'react-select-virtualized';

const loadOptions = (input, callback) => {...};

const Example1 = () => <Async loadOptions={loadOptions}/>

const Example2 = () => <Async defaultOptions={options} loadOptions={loadOptions}/>

const Example3 = () => <Async defaultOptions={opsGroup} loadOptions={loadOptions} grouped/>
```

##### Async - No Group

[![Edit react-select-virtualized](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/quirky-swanson-egeh8)

##### Async - Grouped

[![Edit react-select-virtualized](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/runtime-cloud-jow57)

## Usage with creatable

```jsx
import React from 'react';

import { Creatable } from 'react-select-virtualized';

const Example1 = () => <Creatable options={options} />;
```

[![Edit react-select-virtualized](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/twilight-cloud-nqwz1)

## Usage with creatable and group

NOT YET DONE.

## Custom Styles

For custom styling of the Input component read the `react-select` [documentation](https://react-select.com/home#custom-styles).

The styling in the menu list is by css.

#### How to leave the menu open so I can style my menu?

Set the `menuIsOpen` prop to true, create an options list with less than 100 elements and use css for adjusting your css.

Use this example as a guidance

[![Edit react-select-virtualized](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/fragrant-thunder-bno6s)

<details>
<summary>Possible classes</summary>

`react-select-virtualized` `grouped-virtualized-list-item` `flat-virtualized-item` `fast-option` `fast-option` `fast-option-focused` `fast-option-selected` `fast-option-create`

</details>

## Documentation - this are special to this library and none is required

<details>
<summary>Toggle</summary>

| Props | Type | Default | Description |
| -------------------------------------------- | ------------------------------------------ | ------- | ------------------------------------------------------------------------------------ |
| grouped | boolean | false | Specify if options are grouped |
| formatGroupHeaderLabel | function({ label, options}) => component | | Will render a custom component in the popup grouped header (only for grouped) |
| formatOptionLabel (coming from react-select) | function(option, { context }) => component | | Will render a custom component in the label |
| optionHeight | number | 31 | Height of each option |
| groupHeaderHeight | number | | Header row height in the popover list |
| maxHeight (coming from react-select) | number | auto | Max height popover list |
| defaultValue | option | | Will set default value and set the component as an uncontrolled component |
| value | option | | Will set the value and the component will be a controlled component |
| onCreateOption (Only for Creatable) | function(option) => nothing | | Will be executed when a new option is created , it is only for controlled components |

</details>

## Roadmap

<details>
<summary>Toggle</summary>

- [x] useCallback everywhere.
- [x] Move fast options to group.
- [x] Fix minimum input search on grouped component.
- [x] Upgrade alpha version.
- [x] Review all the TODOs.
- [x] Improve filtering function in `fast-react-select`.
- [x] Improved performance by 50%
- [x] Add gzip.
- [x] Review support to all the react-select props. Should all work but multi-val.

-- v 1.0.0 --

- [x] Add support to AsyncSelect.

-- v 1.1.0 --

- [x] Add support to AsyncSelect with group.

-- v 1.2.0 --

- [x] Upgrading packages and hooks.

-- v 2.0.0 --

- [x] Adding react-select v3.
- [x] Fixing addon-info.
- [x] Remove classnames.
- [x] Improve packaging.
- [x] Remove react-hover-observer.
- [x] Added controlled components support.

-- v 2.1.0 --

- [x] Better debouncing

-- v 2.2.0 --

- [x] Add support to create element props.
- [x] Add better error handling.

-- v 2.3.0 --

- [x] Move modules to lib.
- [x] Improve debounce.

-- v3.0.0 --

- [x] Move internal state of select and async select to reducer like creatable.

-- v 3.1.0 --

- [ ] Add support to create element props with group.
- [ ] Add testing so we do not only relay on storybook.

</details>

## More from me :)

> my-react-form-state [![NPM](https://img.shields.io/npm/v/my-react-form-state.svg)](https://www.npmjs.com/package/my-react-form-state)
This is a React form state management library that works with React/Redux/React-Native.

## License

MIT © [guiyep](https://github.com/guiyep)
Empty file added docs/.nojekyll
Empty file.
Loading

0 comments on commit 36dbf35

Please sign in to comment.