Text-Box
Description
<text-box></text-box>The text-box component is responsible for displaying character dialogs, narrator text, and NVL (Novel) mode content. It contains the character name, side image (expression), and the dialog text itself.
Source Code: https://github.com/Monogatari/Monogatari/tree/develop/src/components/text-box
Structure
The text-box component renders the following structure:
<text-box data-component="text-box">
<div data-content="name">
<span data-ui="who" data-content="character-name"></span>
</div>
<div data-content="side-image">
<img data-ui="face" alt="" data-content="character-expression">
</div>
<div data-content="text">
<type-writer data-ui="say" data-content="dialog"></type-writer>
</div>
</text-box>In NVL mode, the <type-writer> element is not included in the initial render, as dialogs are appended dynamically.
Properties
mode
'adv' | 'nvl'
'adv'
The display mode. adv is the standard Adventure mode (single dialog at a time). nvl is Novel mode (multiple dialogs on screen).
Data Attributes
data-speaking
Set to the character ID currently speaking. Updated by the Dialog action.
data-expression
Set to the current expression name when a side image is displayed.
Methods
show(): void
show(): voidShows the text-box element using CSS grid display.
checkUnread(): void
checkUnread(): voidChecks if there is content in the text box that the player hasn't scrolled to see. If there is unread content (overflow), adds the unread CSS class to the text-box.
This is automatically called by the Dialog action after writing NVL dialogs.
setProps(props: object): void
setProps(props: object): voidUpdate component properties. Used to switch between modes:
content(name: string): DOM
content(name: string): DOMAccess named content areas within the component:
CSS Classes
unread
Applied when there is scrollable content the player hasn't seen. Typically used to show a scroll indicator.
Custom classes
The Dialog action can apply custom classes via the dialog syntax (e.g., 'y:happy:highlight Dialog text').
Content Areas
name
[data-content="name"]
Container for the character name
character-name
[data-content="character-name"]
The character name span element
side-image
[data-content="side-image"]
Container for the expression/side image
character-expression
[data-content="character-expression"]
The expression image element
text
[data-content="text"]
Container for the dialog text
dialog
[data-content="dialog"]
The type-writer element containing dialog
Display Modes
ADV Mode (Adventure)
The default mode. Displays one dialog at a time with character name, optional side image, and text. When a new dialog is shown, the previous one is replaced.
NVL Mode (Novel)
Displays multiple dialogs on screen simultaneously, scrolling as new dialogs are added. Each dialog entry includes the speaker's name (if not narrator) and the dialog text.
In NVL mode:
Side images are not displayed
Dialogs are appended rather than replaced
The text area is scrollable
The
unreadclass indicates when new content is below the visible area
Styling
The text-box component can be styled using CSS. Key selectors:
Related
Dialog Action - The action that controls text-box content
Type Writer - The component that handles text animation
Centered Dialog - Alternative display for centered text
Last updated
Was this helpful?