Chat component

<wy-chat> | WyChat

Weavy chat component to render a single contextual conversation.

The conversation can show rich messages with markdown formatting including code syntax highlight. Messages can have uploaded images, attached files and cloud files with full browser preview of 100+ formats. Polls, video meetings, rich link embeds, tags and mentions can be used in messages. Users can react with predefined emojis to each message.

The editor features markdown preview, including code syntax highlighting. It has buttons for adding polls, video meetings, images, files and cloud files. Mentions brings up a user selector. Drafts are automatically saved for each conversation.

Each chat component requires an app identifier (uid), which automatically creates a corresponding app on your Weavy environment when the component is first initialized. It's also recommended to specify a readable name of the chat, to get better readable notifications from the app. It's often useful to base the uid on something that identifies the location where the component is rendered. Typically you would use something like a product id, page id or path.

Complement this with the <wy-notification-toasts> component to also get realtime in-app notifications or browser notifications when new messages arrive.

Component layout

The component is block-level with pre-defined CSS styling to adapt to flex- and grid-layouts as well as traditional flow-layouts. It's usually recommended to use a proper flex-layout for the container you are placing the component in for a smooth layout integration.

The height grows with the content per default. Content is automatically loaded during scrolling when the last content becomes visible (aka infinite scrolling). If placed in a flex- or grid-layout or if an explicit height is set, the component becomes scrollable.

The content within the component is per default aligned to the edges of it's own box. It's recommended to add your default padding to the container or to the component to make it fit your design. If you want the component to go all the way to the edges of your container without any outermost roundness or padding, you can set the padding to 0 and set the --wy-border-radius-outer to 0 to make the component align nicely with the edge.

You can add additional styling using CSS Custom Properties and CSS Shadow Parts and further customization using slots.

Importing

If you installed the UIKit with npm you can use the following snippet to import the component into your project. Otherwise, if you installed the UIKit as a <script> you can ignore this section.

import { WyChat } from "@weavy/uikit-web";

Examples

Standard chat

Displays a conversation, placed in a container using a flex layout which the component adapts to. Authenticated users with access to the component will be added as members in the conversation.

Specifying the app identifier (uid) is required, and automatically creates a corresponding app on your Weavy environment when the component is first initialized. It's recommended to specify a readable name of the chat app, to get better readable notifications from the app.

<div style="display: flex; height: 100%;">
  <wy-chat uid="test-chat" name="Test chat"></wy-chat>
</div>

Chat with instructions and contextual data

Any agents added to the chat using the Web API gets much more useful if they know about the data and content on your page. You can update this anytime you like to keep it up-to-date. Here we provide data from the DOM to the agent using the contextualData property.

<div id="my-sample-content">
  <h1>ACME</h1>
  <ul>
    <li>Wile E. Coyote</li>
    <li>Daffy Duck</li>
    <li>Porky Pig</li>
  </ul>
</div>

<wy-chat uid="test-chat" name="Test chat"></wy-chat>

<script>
  const myContent = document.querySelector("#my-sample-content");
  const chat = document.querySelector("wy-chat");
  chat.contextualData = myContent.innerHTML;
</script>

HTML attributes

Attributes can be set when using the component in HTML. All attributes have corresponding Javascript properties.

Most attributes are optional and/or has sensible default values. Any required attributes are indicated with an asterisk (*).

Learn more about attributes and properties.

Attribute Value Description
uid* string, number Unique identifier or app id for the weavy component. The unique identifier should correspond to the uid of the app created using the server-to-server Web API.
annotations "buttons-inline", "none" Set the appearance of annotations. Defaults to "buttons-inline".
contextualData string Contextual data for agents to reference.
enterToSend "never", "modifier", "auto", "always" Sets whether to use enter to send in the editor. "modifier" is Enter combined with Ctrl or Cmd. Defaults to "auto".
features string Explicit space separated list of enabled features. All default features are enabled when this property is not defined.
generateUid string Sets the uid property with automatically appended user and agent name (where applicable).
instructions string Any specific instructions for the agent. Overrides any pre configured agent instructions.
name string Optional display name for the app (used in notifications etc.)
placeholder string Placeholder text for the editor. Overrides default text.
reactions string Space separated string of unicode emojis to use for reactions. Defaults to reactions from the Weavy instance or <wy-context>.

JavaScript properties

Properties can be used in JavaScript. Some of them have corresponding HTML attributes where applicable. Any required attributes are indicated with an asterisk (*).

Property Type Default Description
uid* string, number Unique identifier or app id for the Weavy component. The unique identifier should correspond to the uid of the app created using the server-to-server Web API.
annotations "buttons-inline", "none" "buttons-inline" Appearance of annotations.
app AppType The app data.
contextualData string Contextual data for agents to reference. Provide descriptive data for optimal results.
enterToSend "never", "modifier", "auto", "always" "auto" Enter-to-send keymap in the editor. "modifier" is Enter combined with Ctrl or Cmd.
features string Config for only enabling specific features in the Weavy component.
generateUid string Sets the uid property with automatically appended user and agent name (where applicable).
instructions string Optional agent instructions appended to submitted messages.
link LinkType Any provided link that should be loaded, shown and highlighted.
name string Optional display name for the app (used in notifications etc.)
placeholder string Placeholder text for the message editor.
reactions string "😍 😎 😉 😜 👍" A space separated string of available reaction emojis in unicode.

JavaScript methods

Methods for the component are available in JavaScript. Methods that are async return a promise.

Method Returns Description
reset() Sets the component to it's initial state and resets the app state.
subscribe(subscribe: boolean) async Subscribes or unsubscribes to notification updates from the app. Check .app.is_subscribed to see current state.
whenApp() async AppType Waits for app data and returns the data when available.

DOM Events

The component triggers custom events that bubbles up the DOM tree. They can be listened to using the addEventListener() method.

Learn more about events.

Event Type Description
wy-app WyAppEventType Emitted when the app changes.
wy-action WyActionEventType Emitted when an action is performed on an embed.
wy-preview-open WyPreviewOpenEventType Emitted when preview is about to be opened. The event may be prevented.
wy-preview-close WyPreviewCloseEventType Emitted when preview is closed

Slots

The slots can be used to inject elements into the component. All predefined child nodes of the slot will be replaced with the injected content.

Slot Description
actions Floating buttons placed in the top right.

To prevent child nodes from rendering before the component has loaded you can hide them using CSS.

wy-chat:not(:defined) {
  display: none;
}

Available features

The following features are available for the component. Configure them with a space separated list using the features attribute. Features that are available but disabled by default are indicated by parenthesis ().

Learn more about features.

Feature Description
attachments Possibility to upload local files.
cloud_files Cloud file picker (Google Drive, Dropbox etc.).
context_data Possibility to upload contextual data.
embeds Creating embeds from urls in editor text.
google_meet Google Meet video meetings.
meetings General availability for meetings. This can be ignored if using all individual meeting feature flags, i.e. google_meet, microsoft_teams and zoom_meetings.
mentions Possibility to mention other people from the current directory in the editor.
microsoft_teams Microsoft Teams video meetings.
polls Possibility to create polls in editor.
previews Previews of files and attachments.
reactions Possibility to add emoji reactions to a message, post or comment.
(receipts) Read receipts on messages.
(typing) Typing indicators in the chat when other people types.
zoom_meetings Zoom video meetings.
Support

To access live chat with our developer success team you need a Weavy account.

Sign in or create a Weavy account