A general-purpose select list for use in Atom packages
npm install atom-select-listThis module is an etch component that can be used in Atom packages to show a select list with fuzzy filtering, keyboard/mouse navigation and other cool features.
``bash`
npm install --save atom-select-list
After installing the module, you can simply require it and use it as a standalone component:
`js
const SelectList = require('atom-select-list')
const usersSelectList = new SelectList({
items: ['Alice', 'Bob', 'Carol']
})
document.body.appendChild(usersSelectList.element)
`
Or within another etch component:
`jsx`
render () {
return (
)
}
When creating a new instance of a select list, or when calling update on an existing one, you can supply a JavaScript object that can contain any of the following properties:
* items: [Object]: an array containing the objects you want to show in the select list.elementForItem: (item: Object, options: Object) -> HTMLElement
* : a function that is called whenever an item needs to be displayed.options: Object
* :selected: Boolean
* : indicating whether item is selected or not.index: Number
* : item's index.visible: Boolean
* : indicating whether item is visible in viewport or not. Unless initiallyVisibleItemCount was given, this value is always true.maxResults: Number
* (Optional) : the number of maximum items that are shown.filter: (items: [Object], query: String) -> [Object]
* (Optional) : a function that allows to decide which items to show whenever the query changes. By default, it uses fuzzaldrin to filter results.filterKeyForItem: (item: Object) -> String
* (Optional) : when filter is not provided, this function will be called to retrieve a string property on each item and that will be used to filter them.filterQuery: (query: String) -> String
* (Optional) : a function that allows to apply a transformation to the user query and whose return value will be used to filter items.query: String
* (Optional) : a string that will replace the contents of the query editor.selectQuery: Boolean
* (Optional) : a boolean indicating whether the query text should be selected or not.order: (item1: Object, item2: Object) -> Number
* (Optional) : a function that allows to change the order in which items are shown.emptyMessage: String
* (Optional) : a string shown when the list is empty.errorMessage: String
* (Optional) : a string that needs to be set when you want to notify the user that an error occurred.infoMessage: String
* (Optional) : a string that needs to be set when you want to provide some information to the user.loadingMessage: String
* (Optional) : a string that needs to be set when you are loading items in the background.loadingBadge: String/Number
* (Optional) : a string or number that needs to be set when the progress status changes (e.g. a percentage showing how many items have been loaded so far).itemsClassList: [String]
* (Optional) : an array of strings that will be added as class names to the items element.initialSelectionIndex: Number
* (Optional) : the index of the item to initially select and automatically select after query changes; defaults to 0.didChangeQuery: (query: String) -> Void
* (Optional) : a function that is called when the query changes.didChangeSelection: (item: Object) -> Void
* (Optional) : a function that is called when the selected item changes.didConfirmSelection: (item: Object) -> Void
* (Optional) : a function that is called when the user clicks or presses Enter on an item.didConfirmEmptySelection: () -> Void
* (Optional) : a function that is called when the user presses Enter but the list is empty.didCancelSelection: () -> Void
* (Optional) : a function that is called when the user presses Esc or the list loses focus.initiallyVisibleItemCount: Number
* (Optional) : When this options was provided, SelectList observe visibility of items in viewport, visibility state is passed as visible option to elementForItem`. This is mainly used to skip heavy computation for invisible items.