Token
A token represents a keyword used to add or filter objects.
Examples
Structure
- Container: Wraps the content.
- Avatar (optional): Prefixes the text for a user, project, or group.
- Text: Represents the query.
- Remove button (optional): Permanently removes the token.
Guidelines
When to use
- In a search query where the user is expected to include multiple queries.
- To represent dynamic user input in a filter and verify the input by converting the text into a token.
- Allow a user to manage, filter, and search in a compact area.
When not to use
- If you need to categorize an object, use a label instead.
- To highlight more generic object metadata that is system-generated, use a badge instead.
Variants
- Interactive: Include a close icon at the end of the token. When enabled, a user can click the icon to remove the token from the set.
- View-only: Can't be removed.
- Avatar: When querying for a user, project, or group, an avatar token should be used. These can be either interactive or view-only.
Placement
- A token can be positioned inline with the text cursor in a field, or in a stacked list.
- A token can wrap to a new row.
Behavior
A token can be used to both add and filter content where:
- An input token adds content in the form of an attribute attached to another object.
- A filter token narrows down content and is attached to a qualifier. The filter inherits a filter token.
Accessibility
Code reference
GlToken
GlTokenSelector
Choose from a provided list of tokens or add a user defined token.
<script>
export default {
data() {
return {
selectedTokens: [
{
id: 1,
name: 'Vue.js',
},
],
};
},
};
</script>
<template>
<div>
<gl-token-selector
v-model="selectedTokens"
:dropdown-items="[
{
id: 1,
name: 'Vue.js',
},
{
id: 2,
name: 'Ruby On Rails',
},
{
id: 3,
name: 'GraphQL',
},
{
id: 4,
name: 'Redis',
},
]"
/>
{{ selectedTokens }}
</div>
</template>
User created tokens
This component allows for users to create their own tokens when configured to do so.
There are two props that support this functionality: allowUserDefinedTokens and showAddNewAlways.
allowUserDefinedTokens is required to enable the functionality
When set to true and a user's search text returns nothing,
they will be presented with an additional dropdown item Add ...
that takes their current search input and emits @input.
The parent component can then handle the event accordingly.
Additionally, there are scenarios where the user may want the ability to add a new token
even if some search results are returned. This functionality can be enabled by additionally
setting showAddNewAlways to true.
This will allow for the Add ... dropdown item to appear at all times
whenever a user has inputted text, regardless if results are found.
<template>
<div>
<gl-token-selector
v-model="selectedTokens"
:dropdown-items="dropdownItems"
allow-user-defined-items
show-add-new-always
@input="onTokenUpdate"
/>
{{ selectedTokens }}
</div>
</template>
Last updated at: