Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

selectly

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

selectly

Build custom, accessible, select menus for React.

  • 0.5.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
191
increased by1.6%
Maintainers
1
Weekly downloads
 
Created
Source

Selectly

Build custom select menus in React. Provides a low level way to build the select menu you need.

Install

npm install selectly --save

bower install selectly --save

Example Usage

import { Select, Trigger, OptionList, Option, utils } from 'Selectly'
const { getToggledValues } = utils

class MultiSelect extends Component {
  constructor(props) {
    super(props)
    this.state = {
      defaultValue: 'Select a color',
      currentValues: []
    }
  }

  _handleChange(value) {
    this.setState({
      currentValues: getToggledValues(this.state.currentValues, value)
    })
  }

  render() {
    const { defaultValue, currentValues } = this.state
    return (
      <Select
        multiple
        onChange={value => this._handleChange(value)}
      >
        <Trigger>
          { currentValues.length > 0
            ? currentValues.join(', ')
            : defaultValue
          }
        </Trigger>
        <OptionList tag="ul" className="react-select-menu">
          <Option value="red">Red</Option>
          <Option value="green">Green</Option>
          <Option value="blue">Blue</Option>
        </OptionList>
      </Select>
    )
  }
}

Select Props

children: PropTypes.node.isRequired (Accepts 2 children)

The first child is used as the trigger and the second child is used as the options that will be displayed upon clicking the trigger.

multiple: PropTypes.bool

When true this allows multiple options to be selected.

disabled: PropTypes.bool

Puts the select menu in a disabled state.

autoWidth: PropTypes.bool

Determines if the options should be the same width as the trigger.

onChange: PropTypes.func

Callback when an option has been selected. Passes back the value that was selected.

React ARIA Components

Trigger, OptionList, and Option are exported directly from React ARIA

Utilities

buildOptionsLookup: (array options)

Returns a flat object to allow optgroup options to be accessed easier.

[
  { label: 'Dogs', optgroup: [
    { value: 'frenchy', label: 'French Bulldog' },
    { value: 'pit-bull', label: 'Pit Bull' }
  ]},
  { label: 'Cats', optgroup: [
    { value: 'munchkin', label: 'Munchkin' },
    { value: 'persian', label: 'Persian' }
  ]}
]

turns into

{
  'frenchy':  { value: 'frenchy', label: 'French Bulldog' },
  'pit-bull': { value: 'pit-bull', label: 'Pit Bull' },
  'munchkin': { value: 'munchkin', label: 'Munchkin' },
  'persian':  { value: 'persian', label: 'Persian' }
}

getAllValues: (object options)

Returns an array of all option values.

getToggledValues: (object prevValues, [array, string] nextValues)

Returns a new array of values either added or removed.

getCurrentOptions: (object options, [array, string] currentValue)

Returns an array of the current option or options.

isOptionSelected: ([array, string] currentValue, string value)

Determines if value exists in or matches currentValue. Returns true or false.


Run Example

clone repo

git clone git@github.com:souporserious/selectly.git

move into folder

cd ~/selectly

install dependencies

npm install

run dev mode

npm run dev

open your browser and visit: http://localhost:8080/

Keywords

FAQs

Package last updated on 17 Mar 2017

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc