1.5.9 • Published 8 months ago

react-suggest-field v1.5.9

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

React Suggest Field

StoreSelectedItems simpleFilter

About the Project

This is a npm package to help you develop an auto-complete suggest field. You can try it out on this live storybook demo!

Built With

  • TypeScript
  • React
  • SCSS

Live Demo

Live Demo Link

Installation

$ npm install react-suggest-field
$ yarn add react-suggest-field

Types & Props

Types

TypeDetail
ItemType{ id: IdType, label: string }
IdTypestring / number / null / undefined
ErrorMessagesType{ maximumReached:string, alreadyAdded:string, unavailableCharacters:string }

Props in SimpleFilter

PropsOptionalTypesDefault Value
originSuggestionsrequiredItemType[][]
onClickrequired(selectedItem: ItemType) => void-
btnLabeloptionalstring'Search'
placeholderoptionalstring-
classNameoptionalstring-

Props in StoreSelectedItems

PropsOptionalTypesDefault Value
itemsrequiredstate: ItemType[]-
setItemsrequiredReact.Dispatch<React.SetStateAction<ItemType[]>>-
originSuggestionsrequiredItemType[]-
inputRegexStr?optionalstring/A-Za-z0-9\s/
btnLabeloptionalstring'Add'
classNameoptionalstring-
maxItemLengthoptionalnumber-
placeholderoptionalstring-
errorrequiredstate: string-
setErrorrequiredReact.Dispatch<React.SetStateAction>-
showErrorMessageoptionalbooleantrue
errorMessagesoptionalErrorMessagesTypemaximumReached: 'Unable to add a new item as it reached 3 items.', alreadyAdded: 'This item is already added.', unavailableCharacters: 'Sorry... Only letters, numbers are available.'

Props in SimpleFilter

PropsOptionalTypesDefault Value
childrenrequiredReact.Node-
titleoptionalstring-

Example

import React from 'react';
import { SimpleFilter, StoreSelectedItems, ItemType, CompContainer, ErrorMessagesType } from 'react-suggest-field';
import 'react-suggest-field/dist/bundle.css';

  const originSuggestions = [
  {
    id: 1,
    label: 'Red',
  },
  {
    id: 2,
    label: 'Blue',
  },
  {
    id: 3,
    label: 'Yellow',
  },
  {
    id: 4,
    label: 'Green',
  },
  {
    id: 5,
    label: 'Black',
  },
  {
    id: 6,
    label: 'White',
  },
];

const initialItems = [
  {
    id: 7,
    label: 'Rainbow',
  },
];

const maxItemLength = 3

const myErrorMessages: ErrorMessagesType = {
  maximumReached: `Unable to add a new item as it reached ${maxItemLength} items.`,
  alreadyAdded: 'This item is already added.',
  unavailableCharacters: 'Sorry... Only letters, numbers are available.',
};

function App() {

  const [items, setItems] = useState<ItemType[]>(initialItems)
  const [error, setError] = useState<string>('')

  return (
    <>
      <CompContainer title={'Store Selected Items'}>
        <StoreSelectedItems
          items={items}
          setItems={setItems}
          error={error}
          setError={setError}
          originSuggestions={originSuggestions}
          btnLabel={'Add'}
          className={'wonderful-class'}
          maxItemLength={maxItemLength}
          placeholder="Input something to add"
          errorMessages={myErrorMessages}
          showErrorMessage={true}
        />
      </CompContainer>
      <CompContainer title={'Simple Filter'}>
        <SimpleFilter
          originSuggestions={originSuggestions}
          placeholder="Input something to filter"
          onClick={(selectedItem) => alert(`${selectedItem.label} is inputted!`)}
          btnLabel={'Search!'}
          className={'wonderful-class'}
        />
      </CompContainer>
    </>
  );
}

export default App;

Author

👤 Yoko Saka

Contributions

Code Contributions

Contributions, issues, and feature requests are welcome! Feel free to check the issues page.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Show your support

Give a ⭐️ if you like this project!

License

This project is MIT licensed.

Acknowledgements

1.5.5

8 months ago

1.5.4

8 months ago

1.5.3

8 months ago

1.5.2

8 months ago

1.5.1

8 months ago

1.5.0

8 months ago

1.3.2

8 months ago

1.4.0

8 months ago

1.3.1

8 months ago

1.5.9

8 months ago

1.5.8

8 months ago

1.5.7

8 months ago

1.5.6

8 months ago

1.3.0

8 months ago

1.2.8

8 months ago

1.2.7

8 months ago

1.2.6

8 months ago

1.2.5

8 months ago

1.2.4

8 months ago

1.2.3

8 months ago

1.2.2

8 months ago

1.2.1

8 months ago

1.2.0

8 months ago

1.1.9

8 months ago

1.1.8

8 months ago

1.1.7

8 months ago

1.1.6

8 months ago

1.1.5

8 months ago

1.1.4

8 months ago

1.1.3

8 months ago

1.1.2

8 months ago

1.1.1

8 months ago

1.1.0

8 months ago

1.0.9

8 months ago

1.0.8

8 months ago

1.0.7

8 months ago

1.0.6

8 months ago

1.0.5

8 months ago

1.0.3

8 months ago

1.0.2

8 months ago

1.0.1

8 months ago

1.0.0

8 months ago