input-pill: Add `onpillcreate` method.

This commit is contained in:
Brock Whittaker 2017-10-24 16:05:47 -07:00 committed by Tim Abbott
parent 5a0bba2afc
commit 74d91bff22
1 changed files with 47 additions and 0 deletions

View File

@ -60,3 +60,50 @@ $("#input_container + button").click(function () {
console.log(pc.keys(), pc.values());
});
```
## `onPillCreate` method
The `onPillCreate` method can have a few different key actions. The function can
work as a validator, where if the `reject` function is called, it will disable
the pill from being added to the list. You can provide a validator function and
call `reject` if the pill isn't valid.
The return type for your callback function should be what you want the key to be
(this is not the displayed value, but rather than important ID of the pill). An
example of a key vs. a value would be in the case of users. The value
(human readable) would be the name of the user. We could show their name in the
pill, but the key would represent their user ID. One could run a function like:
```js
pc.onPillCreate(function (value, reject) {
var id = users.getIDByFullName(value);
// user does not exist.
if (typeof id === "undefined") {
reject();
}
// return the user ID to be the key for retrieval later.
return id;
});
```
However sometimes, we want to modify the visible text on pill submission, which
requires changing the value and setting the key. We can use the "object" return
type in the `onPillCreate` method to return a new key and value.
This could be useful in the case where a user enters a valid user email to send
to, but we want the pill to display their full name, and the key to be the user ID.
```js
pc.onPillCreate(function (value, reject) {
var user = users.getByEmail(value);
// user does not exist.
if (typeof id === "undefined") {
reject();
}
return { key: user.id, value: user.full_name };
});
```