npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

tokchi

v1.1.0

Published

jQuery plugin that adds Mac OS X style tokens or Android style chips to a text input field

Downloads

31

Readme

Tokchi

jQuery plugin that adds Mac OS X style tokens or Android style chips to a text input field, including an auto-completion dropdown box that shows up as you type.

Token example

This plugin was mainly created for a keyword-based search bar that automatically recognizes keywords and replaces them with MacOS-style input field tokens.

What else is it good for?

Email Recipients

Tokchi can also be used for recognizing recipients from a contacts database:

Token example

Just take a look at demo/email.html.

Online Communities: @/+User Name

Similar to Google+ or Facebook auto-completion, Tokchi could also be used for dynamic message input fields in order to select and highlight the name of a community member you want to include in a message.

Usage

This plugin adds a new jQuery function called tokchify that accepts an options parameter:

$('#my-search-bar').tokchify({
    onSearchKeyword : function (tokchi, keyword) {
        var result = doSomeSearch(keyword);
        tokchi.setSearchResult(result);
    }
});

That's almost enough to set up a very basic Tokchi input field instance. Of course you also want to customize the heck out of it. Take a look at the HTML and CSS files in the demos directory for getting some inspiration.

Making it Pretty

One more thing you need to do is define a couple of CSS classes:

  • tokchi-token styles a <div> tag that wraps a token
  • tokchi-dropdown is the class that styles a floating <ul> which contains the auto-completion suggestion items
  • tokchi-dropdown-item is the class that styles an auto-completion suggestion list item
  • tokchi-dropdown-item-selected is added to the currently selected auto-completion suggestion list item

You can also take a shortcut and just use the provided CSS file css/tokchi.css.

Initialization Options

The tokchify function accepts an options argument with any of the following properties:

| Property | Type | Description | |----------|------|-------------| | autoFocus | boolean | If set to true (= default), the Tokchi search bar is given focus when ready. | | onReady | function(tokchi) | Called when Tokchi object is ready. See methods section below for available Tokchi methods. | | onSearchKeyword | function(tokchi, keyword) | Keyword search handler function. Must call tokchi.setSearchResult(result) when search result is available. | | onChange | function(tokchi) | Called when the user has added or removed one or more tokens from the input field. | | onEdit | function(tokchi, event) | Callback for text editing events (key down, key up, key press). If this function returns false the event will be suppressed and the typed character is ignored. | | onCreateToken | function(tokchi, tokenHTMLNode, tokenObj) | Function that adds the label and optional other content to a new token. | | onCreateDropdownItem | function(tokchi, itemHTMLNode, resultItem) | Function that adds the label and optional other content to an auto-completion dropdown list item. | | onUnwrapToken | function(tokchi, tokenHTMLNode, tokenObj) | Function that returns the token label string in case a token gets "unwrapped" for editing. | | onPressReturn | function(tokchi) | Called when the return key has been pressed in the input field, while the auto-completion dropdown box is closed. Override this method if you want to act on this event, e.g. send the message from the input field to a server. This function is expected to return a boolean. If it returns true the enter key press event won't be propagated to the input field, essentially suppressing line breaks in the input. | | onTokenAdded | function(tokchi, tokenObj) | Event handler function that is ontified about added tokens. | | dropdownElement | string or DOMNodeElement | Optional <ul> container object for the suggestion dropdown box. Can be a CSS selector string or an actual DOM node element. If not specified, an element will be automatically created and added as a sibling to the search input field. | | cssClasses | object | Contains an internally used map of the following CSS class names: tokchi-token, tokchi-token-close-button, tokchi-dropdown, tokchi-dropdown-item and tokchi-dropdown-item-selected. | | dropdownStyle | string |follows = dropdown box will open up under current cursor position, fixed = dropdown box will appear under input field. | | searchKeywordDelimiter | RegExp | Optional regular expression for detecting boundaries between keywords to search for. By default this regex covers white-space and western punctuation. If set to null only existing token objects act as boundaries. |

The source file src/jquery.tokchi.js contains more detailed documentation for each option (see defaultOptions object).

Tokchi Object Methods

The Tokchi object is usually exposed to even handlers such as onCreateToken (see above). You can also call methods via jQuery, e.g.:

var value = $('.tokchi-input').tokchify('getValue');

| Method | Arguments | Description | |--------|-----------|-------------| | setSearchResult | array | Callback method for onSearchKeyword that sets the auto-completion result set of a token keyword search. The expected argument can be null or an array of objects that contain the individual token labels and arbitrary other properties (e.g. an id for identifying a token). The default label property is called label. | | addToken | object | Programmatically adds a token to the end of the input field. | | removeToken | DOMElementNode | Programmatically removes a token DOM element node from the input field, and cleans up the markup of the input field. | | setValue | string or array | Sets the input field value. String arguments are used as text value for the field. Array arguments are expected to be sequences of strings and / or token objects (see getValue function). If no argument is specified the input field will be cleared. | | getTokens | | Returns a list of all token objects that are currently embedded in the input field. | | getValue | | Returns the current input text as an array of strings and token objects in the order of appearance. HTML formattings will be ignored. Example: [ 'Hello ', {id : 123, label : '+Ferris'}, '! How are you?' ] |

Input Field Attributes

The Tokchi input field element can have the optional attribute data-value that provides a JSON array which serves as the initial input field value. Please read the documentation for getValue and setValue in order to learn about the expected content of that array.