Tags
Tags represent a set of interactive keywords that help to label, organize, and categorize objects.
Tag Markup
When building the HTML for the tag yourself, this is how it should look:
-
<!-- Always use a FIGURE element, You can add `ts-tag-locked` or `ts-tag-clickable` as a class. --> <figure data-ts="Tag" class="ts-tag-clickable" onclick="ts.ui.Notification.success('I was clicked.')"> <!-- If you want to have an icon or `UserImage` use a FIGCAPTION. --> <figcaption><i class="ts-icon-dispute" ></i></figcaption> <!-- You can have zero or more DL elements for your keys & values. --> <dl> <!-- You can start your DL with one or more DT or DD elements, --> <dt>Magic-user</dt> <dt>Human</dt> <!-- and have zero or more DD elements following it. --> <dd>Merlin</dd> <dd>Rincewind</dd> </dl> <!-- In case you want to add more key/value sets, start another DL --> <dl> <dt>Beholder</dt> <dd>Xanathar</dd> </dl> <!-- It is possible to have only a single DD in a DL. --> <dl> <dd>Acererak</dd> <!-- (Even though this is against the spec) --> </dl> <!-- It is possible to have only a single DT in a DL --> <dl> <dt>Non-magical characters</dt> <!-- No such thing as non-magical, no DD is needed here =) --> </dl> <!-- Finally, an optional DEL element will serve as your delete button --> <del onclick="ts.ui.Notification.success('I am getting deleted.')"></del> </figure>
This is how the code from above will look in action:
- Magic-user
- Human
- Merlin
- Rincewind
- Beholder
- Xanathar
- Acererak
- Non-magical characters
…of course, it's quite a big tag, normally you'd present it like this:
- Magic-user
- Human
- Merlin
- Rincewind
- Beholder
- Xanathar
- Acererak
- Non-magical characters
Key-only
If you want to show an all uppercased key only, use a single DT
-
<figure data-ts="Tag"> <dl> <dt>Dragons!</dt> </dl> </figure> -
- Dragons!
Icon-only
If you only want to show a single icon, use a single
FIGCAPTION.
-
<figure data-ts="Tag"> <figcaption> <i class="ts-icon-timer" ></i> </figcaption> </figure> -
This also works with the
UserImage, just make sure to use a size of 22x22 pixels.
-
<figure data-ts="Tag"> <figcaption> <img data-ts="UserImage" src="assets/xanathar.png" alt="Xanathar" width="22" height="22" /> </figcaption> </figure> -
Value-only
If you fancy a simpler approach with lighter font weights and lowercase characters, use a
single DD.
-
<figure data-ts="Tag"> <dl> <dd>Roll a d20</dd> </dl> </figure> -
- Roll a d20
Key-Value
If you need a key with a value attached to it, use a
DT and a DD.
-
<figure data-ts="Tag"> <dl> <dt>Area of Origin</dt> <dd>The Sword Coast</dd> </dl> </figure> -
- Area of Origin
- The Sword Coast
Key with multiple values
You can have a single key with multiple values, just keep adding
DD elements.
-
<figure data-ts="Tag"> <dl> <dt>The Teeming Hive of Evil</dt> <dd>Skullport</dd> <dd>Port of Shadows</dd> </dl> </figure> -
- The Teeming Hive of Evil
- Skullport
- Port of Shadows
Multiple keys with single value
Of course you could flip it around and use several
keys for a single value.
-
<figure data-ts="Tag"> <dl> <dt>Facial Tentacles</dt> <dt>Potent Psionics</dt> <dd>Mind Flayer</dd> </dl> </figure> -
- Facial Tentacles
- Potent Psionics
- Mind Flayer
Multiple keys with multiple values
It comes naturally that you can have several
keys together with several values.
-
<figure data-ts="Tag"> <dl> <dt>Magic-user</dt> <dt>Undead</dt> <dd>Lich</dd> <dd>Vampire</dd> </dl> </figure> -
- Magic-user
- Undead
- Lich
- Vampire
Multiple sets of key-values
Due to the high intensity of the CSS code, we don't support adding commas,
colons and dashes to a DL with several sets of DT and
DD elements without separation. If that is what you'd like to do, please
choose a method from below.
If you want to have several key/value sets in a single tag, you
have two options:
You can follow the W3C spec and just use separate
DL elements:
-
<figure data-ts="Tag"> <dl> <dt>Acererak</dt> </dl> <dl> <dt>Hobbies</dt> <dd>Building Dungeons</dd> </dl> <dl> <dt>Alignment</dt> <dd>Lawful</dd> <dd>Evil</dd> </dl> </figure> -
- Acererak
- Hobbies
- Building Dungeons
- Alignment
- Lawful
- Evil
Or you can follow the WHATWG spec and place DIV elements around each set:
-
<figure data-ts="Tag"> <dl> <div> <dt>Acererak</dt> </div> <div> <dt>Hobbies</dt> <dd>Building Dungeons</dd> </div> <div> <dt>Alignment</dt> <dd>Lawful</dd> <dd>Evil</dd> </div> </dl> </figure> -
- Acererak
- Hobbies
- Building Dungeons
- Alignment
- Lawful
- Evil
Optional icon
Just like above, you can add an icon next to any combinaton of
keys and values.
-
<figure data-ts="Tag"> <figcaption> <i class="ts-icon-rating" ></i> </figcaption> <dl> <dt>Dungeon</dt> <dd>Tomb of Horrors</dd> </dl> </figure> -
- Dungeon
- Tomb of Horrors
Optional clickability
If you want to make your tag look like it can be clicked, add the
ts-tag-clickable class to the FIGURE.
Don't forget to set some sort of click handler on the
FIGURE element.
-
<figure data-ts="Tag" class="ts-tag-clickable" onclick="ts.ui.Notification.success('Do you see?')" > <figcaption> <i class="ts-icon-view" ></i> </figcaption> <dl> <dt>Vision</dt> <dd>Blindsight</dd> <dd>Truesight</dd> <dd>Darkvision</dd> </dl> </figure> -
- Vision
- Blindsight
- Truesight
- Darkvision
Optional delete button
If you want to be able to remove a tag, add a DEL element
as the last child.
When the DEL element is clicked, the tag will be removed from the DOM after
a setTimeout. Don't try to read anything through the DOM at this point.
-
<figure data-ts="Tag"> <figcaption> <i class="ts-icon-discovery" ></i> </figcaption> <dl> <dt>Languages</dt> <dd>Sylvan</dd> <dd>Common</dd> <dd>Draconic</dd> <dd>Giant</dd> </dl> <del onclick="ts.ui.Notification.info('Tag disintegrated!')" /> </figure> -
- Languages
- Sylvan
- Common
- Draconic
- Giant
Optional locked look
If you want to lock down a tag, use the
ts-tag-locked class on the FIGURE.
A locked tag will have its DEL button hidden.
-
<figure data-ts="Tag" class="ts-tag-locked"> <figcaption> <i class="ts-icon-location" ></i> </figcaption> <dl> <dt>Dungeon</dt> <dd>Hidden Shrine of Tamoachan</dd> </dl> <del onclick="ts.ui.Notification.info('I am not visible anyway.')" /> </figure> -
- Dungeon
- Hidden Shrine of Tamoachan
List of Tags
Whenever you put tags one after another, they will be displayed in an
inline fashion.
-
<figure data-ts="Tag" class="ts-tag-locked"> <figcaption> <img data-ts="UserImage" src="assets/Acererak.png" alt="Acererak" width="22" height="22" /> </figcaption> <dl> <dt>Lich</dt> <dd>Acererak</dd> </dl> </figure> <figure data-ts="Tag"> <figcaption> <img data-ts="UserImage" src="assets/xanathar.png" alt="Xanathar" width="22" height="22" /> </figcaption> <dl> <dt>Beholder</dt> <dd>Xanathar</dd> </dl> <del onclick="ts.ui.Notification.warning('I hope you know what you\'re doing...')"></del> </figure> -
- Lich
- Acererak
- Beholder
- Xanathar
List of Tags (maximized)
If you would rather have them stack like block elements, place them inside a
UL element with data-ts="Tags".
-
<ul data-ts="Tags"> <li> <figure data-ts="Tag" class="ts-tag-locked"> <figcaption> <img data-ts="UserImage" src="assets/Acererak.png" alt="Acererak" width="22" height="22" /> </figcaption> <dl> <dt>Lich</dt> <dd>Acererak</dd> </dl> </figure> </li> <li> <figure data-ts="Tag"> <figcaption> <img data-ts="UserImage" src="assets/xanathar.png" alt="Xanathar" width="22" height="22" /> </figcaption> <dl> <dt>Beholder</dt> <dd>Xanathar</dd> </dl> <del onclick="ts.ui.Notification.warning('I hope you know what you\'re doing...')" /> </figure> </li> </ul> -
-
- Lich
- Acererak
-
- Beholder
- Xanathar
-
If you find a bug or need a feature…