1.0.0 • Published 5 years ago
tokeninput v1.0.0
Introducing tokeninput
Dependency-free Javascript UI component providing a token based input element with grouped completion lists and free-text entry
Usage
Create an instance of the TokenInput class with two parameters:
- an instance of an Input DOM element
- a configuration object, to tailor the component to your needs
<script src="tokeninput/tokeninput.js" />
<div id="tokeninput">
<input placeholder="Type something…" />
</div>new TokenInput( document.getElementById( 'tokeninput' ), {} );See index.html and demo.js for examples.
There are lots of options, see tokeninput.js
API
| Method | Description |
|---|---|
addEventListener(element, type, listener) | Adds an event listener to the given element. |
getTokens() | Returns an array of objects representing each token added to the component. |
getSelectedCompletion() | Returns the datum of the selected completion |
setSelectedCompletion(datum) | Sets the selected completion |
getSelectedCompletionElement() | Returns the element of the selected completion |
removeCompletions() | Removes all the completions |
setTokens(newTokens) | Removes all existing tokens from the UI and replaces them with the tokens in the given array. |
setCompletionGroups(completionGroups) | Configures the completion groups that visually separate suggestions. |
removeFloatingElement() | Hides the suggestion UI. |
removeToken(datum, options) | Removes the given token from the component UI and the component's internal list of tokens. |
positionFloatingElement() | Force the floating element to reposition |
setElementAfterCompletions(element) | Set the element to place after completions |
setElementBeforeCompletions(element) | Set the element to place before completions |
getScrollingContainer() | Get the current scrolling container element |
onUp() | Trigger the up key handler |
onDown() | Trigger the down key handler |
destroy() | Cleans up by removing all registered event listeners. |
Completions / suggestions
Use the following options to drive how completions are presented:
| Option | Description |
|---|---|
| completionsForText | Function that receives the text, delayedCompletionsId and delayedCompletionsFn. Returns datums (objects) for each completion |
| completionClassNames | Function that receives a datum to determine it's class name |
| completionFormatter | Function that receives a datum and corresponding element for further customisation |
| completionGroupClassNames | Function that receives the completion group, returns an array of class names |
| completionGroupHeadingClassNames | Function that receives the completion group heading, returns an array of class names |
| completionGroups | Object of completion group definitions, see demo.js |
| newCompletionOption | Function that receives a group and returns the datum for the 'new' completion, defaults to "+ New (group.singular)" |
Other options
| Option | Description | Default |
|---|---|---|
| readOnly | Prevents tokens from being added / removed | false |
| tabToAdd | Pressing the tab key submits the current token and allows a new one to be entered | true |
| xHTML | A string which represents the delete button in a token | × |
| tokenClassNames | A function which is called for each added token. Should return an array of class names that will be added to the token HTML element. | [] |
| tokenFormatter | A function which is called for each added token. Can be used to customise the token element for display when not in inline mode | |
| inlineTokenFormatter | A function which is called for each added token. Can be used to customise the token element for display when in inline mode | |
| containerClickTriggersFocus | Determines if a click on the containing element will focus the tokeninput | true |
| freeTextEnabled | Determines whether the user is able to enter arbitrary tokens (true) or forced to select a pre-existing datum (false) | false |
| freeTextToken | A function that determines the makeup of a datum created via free-text | |
| freeTextCompletion | A function that determines the makeup of an object that represents free-text entry which is passwd to the suggestion handler | |
| willShowFreeTextCompletion | A function that determines whether or not to show the completion view for free-text | |
| inlineTokenTrigger | An object which defines logic for determining whether to show completion for typed text when in inline mode | |
| namespace | A string or function to namespace element class names | null |
| autoSelectSingleCompletions | Select the first and only completion automatically | true |
| positionFloatingElement | A function that is passed the floating element for manual positioning | null |
| floatingElementParent | An element to use as the floating elements parent node, defaults to the input elements parent node | null |
| removeOnlyCompletionsListElement | Set to true to only remove the list element rather than the whole floating element | false |
| beforeEnter | Pre-keypress event handler | null |
| beforeCompletionClick | Pre-click event handler | null |
| hintElement | An element to use as a hint container | null |
| scrollingContainerClassName | A selector for the scrolling container, by default the floating element is used | null |
| hintAfterAdd | Show the hint element after adding a token | false |
| disableTokenClick | Disable the build-in token click hander | false |
| disableFocusOnRemove | Disable the automatic behaviour that focuses the input element after removing a token | false |
| placeholderLength | Specify the placeholder length in characters | null |
1.0.0
5 years ago