cpr-multiselect v3.4.13
cpr-multiselect 
Canopy React Multi-select Component
Requirements
- React >=0.13.3
- Lodash methods without, contains, union, isNull
Installation
- Install through
npm install --save cpr-multiselect - Load the required stylesheet
src/multi-selector.css - Optional - if you want some default styling use the stylesheet:
dist/external-styles.css
Usage
Props
items: Items to choose frommaxSearchItems: Limit the number of items rendered in the dialoginitialSelectedItems: The selected itemsonChange: Called when selected items changeonInputChange: Called when the text input changesItemComponent: Custom component for each item in the dialoggetItemTitle: Called to display the title of each itemplaceholder: Placeholder for the text inputpillPlaceholder: Placeholder text for the empty pill boxmaxLength: Maximum length for the text inputnoRestrict: Pass this if you don't want to restrict the input so users can enter custom values. Custom values will be appended toselectedItemsas strings.noResultsPhrase: The phrase to show when there are no matching results, or whenitemsis empty. The default is "No items found."pressEnterToAddPhrase: IfnoRestrictis true, this phrase will be displayed when users enter custom values. The default is "Press Enter to add".customCSSClass: A css class to be put on the cpr-multiselector elementhasError: pass in true to display an orange error border around the input divvalidate: function to validate the input. Return true or false.invalidMsg: message to display when input is invalidateddoneButton: add a done button to the dialog when entering inputcolor: Color for the pills. Supportsblueandgreencurrently.closeOnSelect: Close the dialog after selection.keepSearchTextOnSelect: by default, search text is cleared on select. Pass this as true if you want the search text to remain on select.CustomPillboxComponent: custom component that triggers the dialog opening rather than using the pill box defaultCustomPill: custom component that replaces the default pill itemonBlur: called when dialog is closedshowSearch: defaults totrue, allows you to control if the search bar is present.pillUniqueIdentifier: Used as unique key for pills (needed only for custom pills that use internal state) default: 'id'disabled: If true, canopy disabled input styling will be applied and clicking the input will do nothing
Basic
import MultiSelect from 'cpr-multiselect';
let items = [
{
"lastName": "Seward",
"firstName": "William"
},
{
"lastName": "Montgomery",
"firstName": "Blair"
},
{
"lastName": "Meriwether",
"firstName": "Lewis"
}
];
function itemsChanged(selectedItems) {
console.log(selectedItems);
}
function inputChange(input) {
//Input will be whatever current text is in the input
}
<MultiSelect items={items} onChange={itemsChanged} onInputChange={inputChange}></MultiSelect>Custom Components
import MultiSelect from 'cpr-multiselect';
let items = [
{
"lastName": "Seward",
"firstName": "William"
},
{
"lastName": "Montgomery",
"firstName": "Blair"
},
{
"lastName": "Meriwether",
"firstName": "Lewis"
}
];
/**
* Each item has a title which can be manipulated with a callback function
*/
function getCustomTitle(item) {
return item.firstName;
}
/**
* Each item rendered in the dialog can have a custom component
*/
let PersonComponent = React.createClass({
render () {
const firstName = this.props.item.firstName;
const lastName = this.props.item.lastName;
return (
<div>
<div>{`${firstName[0]}${lastName[0]}`}</div>
<div className="cpr-multi-selector-item__title">{`${firstName} ${lastName}`}</div>
</div>
)
}
});
<MultiSelect items={items} onChange={itemsChanged} getItemTitle={getCustomTitle} ItemComponent={PersonComponent}></MultiSelect>Demo
4 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago