@tartaguti/ui-components 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/LICENSE +21 -0
- package/README.md +192 -2
- package/THIRD-PARTY-NOTICES.md +29 -0
- package/custom-elements.json +16899 -0
- package/dist/accordion/tt-accordion-item.d.ts +32 -0
- package/dist/accordion/tt-accordion-item.d.ts.map +1 -0
- package/dist/accordion/tt-accordion-item.js +247 -0
- package/dist/accordion/tt-accordion-item.js.map +1 -0
- package/dist/accordion/tt-accordion.d.ts +28 -0
- package/dist/accordion/tt-accordion.d.ts.map +1 -0
- package/dist/accordion/tt-accordion.js +148 -0
- package/dist/accordion/tt-accordion.js.map +1 -0
- package/dist/bento/tt-bento-item.d.ts +35 -0
- package/dist/bento/tt-bento-item.d.ts.map +1 -0
- package/dist/bento/tt-bento-item.js +201 -0
- package/dist/bento/tt-bento-item.js.map +1 -0
- package/dist/bento/tt-bento.d.ts +25 -0
- package/dist/bento/tt-bento.d.ts.map +1 -0
- package/dist/bento/tt-bento.js +314 -0
- package/dist/bento/tt-bento.js.map +1 -0
- package/dist/floating.d.ts +61 -0
- package/dist/floating.d.ts.map +1 -0
- package/dist/floating.js +120 -0
- package/dist/floating.js.map +1 -0
- package/dist/index.d.ts +92 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +96 -0
- package/dist/index.js.map +1 -0
- package/dist/interaction/tt-draggable.d.ts +29 -0
- package/dist/interaction/tt-draggable.d.ts.map +1 -0
- package/dist/interaction/tt-draggable.js +66 -0
- package/dist/interaction/tt-draggable.js.map +1 -0
- package/dist/interaction/tt-droppable.d.ts +37 -0
- package/dist/interaction/tt-droppable.d.ts.map +1 -0
- package/dist/interaction/tt-droppable.js +108 -0
- package/dist/interaction/tt-droppable.js.map +1 -0
- package/dist/interaction/tt-resizable.d.ts +45 -0
- package/dist/interaction/tt-resizable.d.ts.map +1 -0
- package/dist/interaction/tt-resizable.js +210 -0
- package/dist/interaction/tt-resizable.js.map +1 -0
- package/dist/interaction/tt-reveal.d.ts +54 -0
- package/dist/interaction/tt-reveal.d.ts.map +1 -0
- package/dist/interaction/tt-reveal.js +302 -0
- package/dist/interaction/tt-reveal.js.map +1 -0
- package/dist/motion.d.ts +8 -0
- package/dist/motion.d.ts.map +1 -0
- package/dist/motion.js +49 -0
- package/dist/motion.js.map +1 -0
- package/dist/overlay.d.ts +7 -0
- package/dist/overlay.d.ts.map +1 -0
- package/dist/overlay.js +121 -0
- package/dist/overlay.js.map +1 -0
- package/dist/safe-url.d.ts +14 -0
- package/dist/safe-url.d.ts.map +1 -0
- package/dist/safe-url.js +46 -0
- package/dist/safe-url.js.map +1 -0
- package/dist/scroll-lock.d.ts +22 -0
- package/dist/scroll-lock.d.ts.map +1 -0
- package/dist/scroll-lock.js +56 -0
- package/dist/scroll-lock.js.map +1 -0
- package/dist/sidebar/tt-menu-group.d.ts +69 -0
- package/dist/sidebar/tt-menu-group.d.ts.map +1 -0
- package/dist/sidebar/tt-menu-group.js +358 -0
- package/dist/sidebar/tt-menu-group.js.map +1 -0
- package/dist/sidebar/tt-menu-item.d.ts +70 -0
- package/dist/sidebar/tt-menu-item.d.ts.map +1 -0
- package/dist/sidebar/tt-menu-item.js +502 -0
- package/dist/sidebar/tt-menu-item.js.map +1 -0
- package/dist/sidebar/tt-sidebar-footer.d.ts +39 -0
- package/dist/sidebar/tt-sidebar-footer.d.ts.map +1 -0
- package/dist/sidebar/tt-sidebar-footer.js +205 -0
- package/dist/sidebar/tt-sidebar-footer.js.map +1 -0
- package/dist/sidebar/tt-sidebar-header.d.ts +31 -0
- package/dist/sidebar/tt-sidebar-header.d.ts.map +1 -0
- package/dist/sidebar/tt-sidebar-header.js +150 -0
- package/dist/sidebar/tt-sidebar-header.js.map +1 -0
- package/dist/sidebar/tt-sidebar.d.ts +72 -0
- package/dist/sidebar/tt-sidebar.d.ts.map +1 -0
- package/dist/sidebar/tt-sidebar.js +539 -0
- package/dist/sidebar/tt-sidebar.js.map +1 -0
- package/dist/sr-only.d.ts +15 -0
- package/dist/sr-only.d.ts.map +1 -0
- package/dist/sr-only.js +27 -0
- package/dist/sr-only.js.map +1 -0
- package/dist/tokens.css +1124 -0
- package/dist/tt-alert.d.ts +26 -0
- package/dist/tt-alert.d.ts.map +1 -0
- package/dist/tt-alert.js +165 -0
- package/dist/tt-alert.js.map +1 -0
- package/dist/tt-aspect-ratio.d.ts +40 -0
- package/dist/tt-aspect-ratio.d.ts.map +1 -0
- package/dist/tt-aspect-ratio.js +98 -0
- package/dist/tt-aspect-ratio.js.map +1 -0
- package/dist/tt-auth.d.ts +75 -0
- package/dist/tt-auth.d.ts.map +1 -0
- package/dist/tt-auth.js +520 -0
- package/dist/tt-auth.js.map +1 -0
- package/dist/tt-avatar.d.ts +26 -0
- package/dist/tt-avatar.d.ts.map +1 -0
- package/dist/tt-avatar.js +169 -0
- package/dist/tt-avatar.js.map +1 -0
- package/dist/tt-badge.d.ts +36 -0
- package/dist/tt-badge.d.ts.map +1 -0
- package/dist/tt-badge.js +135 -0
- package/dist/tt-badge.js.map +1 -0
- package/dist/tt-breadcrumbs.d.ts +22 -0
- package/dist/tt-breadcrumbs.d.ts.map +1 -0
- package/dist/tt-breadcrumbs.js +144 -0
- package/dist/tt-breadcrumbs.js.map +1 -0
- package/dist/tt-button-group.d.ts +32 -0
- package/dist/tt-button-group.d.ts.map +1 -0
- package/dist/tt-button-group.js +132 -0
- package/dist/tt-button-group.js.map +1 -0
- package/dist/tt-button.d.ts +31 -0
- package/dist/tt-button.d.ts.map +1 -0
- package/dist/tt-button.js +483 -0
- package/dist/tt-button.js.map +1 -0
- package/dist/tt-card.d.ts +26 -0
- package/dist/tt-card.d.ts.map +1 -0
- package/dist/tt-card.js +429 -0
- package/dist/tt-card.js.map +1 -0
- package/dist/tt-chart.d.ts +36 -0
- package/dist/tt-chart.d.ts.map +1 -0
- package/dist/tt-chart.js +332 -0
- package/dist/tt-chart.js.map +1 -0
- package/dist/tt-checkbox-group.d.ts +38 -0
- package/dist/tt-checkbox-group.d.ts.map +1 -0
- package/dist/tt-checkbox-group.js +243 -0
- package/dist/tt-checkbox-group.js.map +1 -0
- package/dist/tt-checkbox.d.ts +35 -0
- package/dist/tt-checkbox.d.ts.map +1 -0
- package/dist/tt-checkbox.js +354 -0
- package/dist/tt-checkbox.js.map +1 -0
- package/dist/tt-code-block.d.ts +37 -0
- package/dist/tt-code-block.d.ts.map +1 -0
- package/dist/tt-code-block.js +409 -0
- package/dist/tt-code-block.js.map +1 -0
- package/dist/tt-collapsible.d.ts +71 -0
- package/dist/tt-collapsible.d.ts.map +1 -0
- package/dist/tt-collapsible.js +206 -0
- package/dist/tt-collapsible.js.map +1 -0
- package/dist/tt-combobox.d.ts +107 -0
- package/dist/tt-combobox.d.ts.map +1 -0
- package/dist/tt-combobox.js +816 -0
- package/dist/tt-combobox.js.map +1 -0
- package/dist/tt-company-card.d.ts +30 -0
- package/dist/tt-company-card.d.ts.map +1 -0
- package/dist/tt-company-card.js +382 -0
- package/dist/tt-company-card.js.map +1 -0
- package/dist/tt-comparison-table.d.ts +59 -0
- package/dist/tt-comparison-table.d.ts.map +1 -0
- package/dist/tt-comparison-table.js +441 -0
- package/dist/tt-comparison-table.js.map +1 -0
- package/dist/tt-component-doc.d.ts +63 -0
- package/dist/tt-component-doc.d.ts.map +1 -0
- package/dist/tt-component-doc.js +585 -0
- package/dist/tt-component-doc.js.map +1 -0
- package/dist/tt-confirm.d.ts +45 -0
- package/dist/tt-confirm.d.ts.map +1 -0
- package/dist/tt-confirm.js +151 -0
- package/dist/tt-confirm.js.map +1 -0
- package/dist/tt-contact-list.d.ts +18 -0
- package/dist/tt-contact-list.d.ts.map +1 -0
- package/dist/tt-contact-list.js +101 -0
- package/dist/tt-contact-list.js.map +1 -0
- package/dist/tt-copy-button.d.ts +25 -0
- package/dist/tt-copy-button.d.ts.map +1 -0
- package/dist/tt-copy-button.js +194 -0
- package/dist/tt-copy-button.js.map +1 -0
- package/dist/tt-data-table.d.ts +96 -0
- package/dist/tt-data-table.d.ts.map +1 -0
- package/dist/tt-data-table.js +812 -0
- package/dist/tt-data-table.js.map +1 -0
- package/dist/tt-divider.d.ts +19 -0
- package/dist/tt-divider.d.ts.map +1 -0
- package/dist/tt-divider.js +104 -0
- package/dist/tt-divider.js.map +1 -0
- package/dist/tt-drawer.d.ts +38 -0
- package/dist/tt-drawer.d.ts.map +1 -0
- package/dist/tt-drawer.js +433 -0
- package/dist/tt-drawer.js.map +1 -0
- package/dist/tt-dropdown-menu.d.ts +57 -0
- package/dist/tt-dropdown-menu.d.ts.map +1 -0
- package/dist/tt-dropdown-menu.js +631 -0
- package/dist/tt-dropdown-menu.js.map +1 -0
- package/dist/tt-empty-state.d.ts +13 -0
- package/dist/tt-empty-state.d.ts.map +1 -0
- package/dist/tt-empty-state.js +94 -0
- package/dist/tt-empty-state.js.map +1 -0
- package/dist/tt-example.d.ts +33 -0
- package/dist/tt-example.d.ts.map +1 -0
- package/dist/tt-example.js +250 -0
- package/dist/tt-example.js.map +1 -0
- package/dist/tt-file-upload.d.ts +85 -0
- package/dist/tt-file-upload.d.ts.map +1 -0
- package/dist/tt-file-upload.js +662 -0
- package/dist/tt-file-upload.js.map +1 -0
- package/dist/tt-filter.d.ts +62 -0
- package/dist/tt-filter.d.ts.map +1 -0
- package/dist/tt-filter.js +393 -0
- package/dist/tt-filter.js.map +1 -0
- package/dist/tt-form.d.ts +33 -0
- package/dist/tt-form.d.ts.map +1 -0
- package/dist/tt-form.js +202 -0
- package/dist/tt-form.js.map +1 -0
- package/dist/tt-grid.d.ts +22 -0
- package/dist/tt-grid.d.ts.map +1 -0
- package/dist/tt-grid.js +106 -0
- package/dist/tt-grid.js.map +1 -0
- package/dist/tt-icon.d.ts +20 -0
- package/dist/tt-icon.d.ts.map +1 -0
- package/dist/tt-icon.js +510 -0
- package/dist/tt-icon.js.map +1 -0
- package/dist/tt-image.d.ts +59 -0
- package/dist/tt-image.d.ts.map +1 -0
- package/dist/tt-image.js +314 -0
- package/dist/tt-image.js.map +1 -0
- package/dist/tt-inbox.d.ts +45 -0
- package/dist/tt-inbox.d.ts.map +1 -0
- package/dist/tt-inbox.js +275 -0
- package/dist/tt-inbox.js.map +1 -0
- package/dist/tt-input.d.ts +43 -0
- package/dist/tt-input.d.ts.map +1 -0
- package/dist/tt-input.js +476 -0
- package/dist/tt-input.js.map +1 -0
- package/dist/tt-kbd.d.ts +39 -0
- package/dist/tt-kbd.d.ts.map +1 -0
- package/dist/tt-kbd.js +145 -0
- package/dist/tt-kbd.js.map +1 -0
- package/dist/tt-key-values.d.ts +17 -0
- package/dist/tt-key-values.d.ts.map +1 -0
- package/dist/tt-key-values.js +126 -0
- package/dist/tt-key-values.js.map +1 -0
- package/dist/tt-knowledge-doc.d.ts +24 -0
- package/dist/tt-knowledge-doc.d.ts.map +1 -0
- package/dist/tt-knowledge-doc.js +120 -0
- package/dist/tt-knowledge-doc.js.map +1 -0
- package/dist/tt-layout.d.ts +36 -0
- package/dist/tt-layout.d.ts.map +1 -0
- package/dist/tt-layout.js +318 -0
- package/dist/tt-layout.js.map +1 -0
- package/dist/tt-modal.d.ts +32 -0
- package/dist/tt-modal.d.ts.map +1 -0
- package/dist/tt-modal.js +553 -0
- package/dist/tt-modal.js.map +1 -0
- package/dist/tt-navbar.d.ts +33 -0
- package/dist/tt-navbar.d.ts.map +1 -0
- package/dist/tt-navbar.js +390 -0
- package/dist/tt-navbar.js.map +1 -0
- package/dist/tt-page-header.d.ts +28 -0
- package/dist/tt-page-header.d.ts.map +1 -0
- package/dist/tt-page-header.js +166 -0
- package/dist/tt-page-header.js.map +1 -0
- package/dist/tt-page.d.ts +14 -0
- package/dist/tt-page.d.ts.map +1 -0
- package/dist/tt-page.js +163 -0
- package/dist/tt-page.js.map +1 -0
- package/dist/tt-pagination.d.ts +27 -0
- package/dist/tt-pagination.d.ts.map +1 -0
- package/dist/tt-pagination.js +194 -0
- package/dist/tt-pagination.js.map +1 -0
- package/dist/tt-preview.d.ts +11 -0
- package/dist/tt-preview.d.ts.map +1 -0
- package/dist/tt-preview.js +68 -0
- package/dist/tt-preview.js.map +1 -0
- package/dist/tt-product.d.ts +40 -0
- package/dist/tt-product.d.ts.map +1 -0
- package/dist/tt-product.js +590 -0
- package/dist/tt-product.js.map +1 -0
- package/dist/tt-profile-card.d.ts +23 -0
- package/dist/tt-profile-card.d.ts.map +1 -0
- package/dist/tt-profile-card.js +199 -0
- package/dist/tt-profile-card.js.map +1 -0
- package/dist/tt-progress.d.ts +26 -0
- package/dist/tt-progress.d.ts.map +1 -0
- package/dist/tt-progress.js +156 -0
- package/dist/tt-progress.js.map +1 -0
- package/dist/tt-quantity.d.ts +36 -0
- package/dist/tt-quantity.d.ts.map +1 -0
- package/dist/tt-quantity.js +396 -0
- package/dist/tt-quantity.js.map +1 -0
- package/dist/tt-radio-group.d.ts +50 -0
- package/dist/tt-radio-group.d.ts.map +1 -0
- package/dist/tt-radio-group.js +372 -0
- package/dist/tt-radio-group.js.map +1 -0
- package/dist/tt-rating.d.ts +54 -0
- package/dist/tt-rating.d.ts.map +1 -0
- package/dist/tt-rating.js +312 -0
- package/dist/tt-rating.js.map +1 -0
- package/dist/tt-search.d.ts +47 -0
- package/dist/tt-search.d.ts.map +1 -0
- package/dist/tt-search.js +360 -0
- package/dist/tt-search.js.map +1 -0
- package/dist/tt-section.d.ts +13 -0
- package/dist/tt-section.d.ts.map +1 -0
- package/dist/tt-section.js +98 -0
- package/dist/tt-section.js.map +1 -0
- package/dist/tt-select.d.ts +62 -0
- package/dist/tt-select.d.ts.map +1 -0
- package/dist/tt-select.js +662 -0
- package/dist/tt-select.js.map +1 -0
- package/dist/tt-skeleton.d.ts +20 -0
- package/dist/tt-skeleton.d.ts.map +1 -0
- package/dist/tt-skeleton.js +143 -0
- package/dist/tt-skeleton.js.map +1 -0
- package/dist/tt-slider.d.ts +74 -0
- package/dist/tt-slider.d.ts.map +1 -0
- package/dist/tt-slider.js +426 -0
- package/dist/tt-slider.js.map +1 -0
- package/dist/tt-social-links.d.ts +34 -0
- package/dist/tt-social-links.d.ts.map +1 -0
- package/dist/tt-social-links.js +242 -0
- package/dist/tt-social-links.js.map +1 -0
- package/dist/tt-sparkline.d.ts +19 -0
- package/dist/tt-sparkline.d.ts.map +1 -0
- package/dist/tt-sparkline.js +191 -0
- package/dist/tt-sparkline.js.map +1 -0
- package/dist/tt-spinner.d.ts +19 -0
- package/dist/tt-spinner.d.ts.map +1 -0
- package/dist/tt-spinner.js +93 -0
- package/dist/tt-spinner.js.map +1 -0
- package/dist/tt-stack.d.ts +42 -0
- package/dist/tt-stack.d.ts.map +1 -0
- package/dist/tt-stack.js +158 -0
- package/dist/tt-stack.js.map +1 -0
- package/dist/tt-stat.d.ts +17 -0
- package/dist/tt-stat.d.ts.map +1 -0
- package/dist/tt-stat.js +134 -0
- package/dist/tt-stat.js.map +1 -0
- package/dist/tt-switch.d.ts +39 -0
- package/dist/tt-switch.d.ts.map +1 -0
- package/dist/tt-switch.js +254 -0
- package/dist/tt-switch.js.map +1 -0
- package/dist/tt-switcher.d.ts +23 -0
- package/dist/tt-switcher.d.ts.map +1 -0
- package/dist/tt-switcher.js +203 -0
- package/dist/tt-switcher.js.map +1 -0
- package/dist/tt-table-cell.d.ts +26 -0
- package/dist/tt-table-cell.d.ts.map +1 -0
- package/dist/tt-table-cell.js +121 -0
- package/dist/tt-table-cell.js.map +1 -0
- package/dist/tt-table-row.d.ts +31 -0
- package/dist/tt-table-row.d.ts.map +1 -0
- package/dist/tt-table-row.js +72 -0
- package/dist/tt-table-row.js.map +1 -0
- package/dist/tt-table.d.ts +44 -0
- package/dist/tt-table.d.ts.map +1 -0
- package/dist/tt-table.js +270 -0
- package/dist/tt-table.js.map +1 -0
- package/dist/tt-tabs.d.ts +31 -0
- package/dist/tt-tabs.d.ts.map +1 -0
- package/dist/tt-tabs.js +223 -0
- package/dist/tt-tabs.js.map +1 -0
- package/dist/tt-tag-list.d.ts +19 -0
- package/dist/tt-tag-list.d.ts.map +1 -0
- package/dist/tt-tag-list.js +136 -0
- package/dist/tt-tag-list.js.map +1 -0
- package/dist/tt-text.d.ts +52 -0
- package/dist/tt-text.d.ts.map +1 -0
- package/dist/tt-text.js +337 -0
- package/dist/tt-text.js.map +1 -0
- package/dist/tt-textarea.d.ts +43 -0
- package/dist/tt-textarea.d.ts.map +1 -0
- package/dist/tt-textarea.js +356 -0
- package/dist/tt-textarea.js.map +1 -0
- package/dist/tt-thread.d.ts +62 -0
- package/dist/tt-thread.d.ts.map +1 -0
- package/dist/tt-thread.js +374 -0
- package/dist/tt-thread.js.map +1 -0
- package/dist/tt-toast.d.ts +49 -0
- package/dist/tt-toast.d.ts.map +1 -0
- package/dist/tt-toast.js +440 -0
- package/dist/tt-toast.js.map +1 -0
- package/dist/tt-toggle-group.d.ts +73 -0
- package/dist/tt-toggle-group.d.ts.map +1 -0
- package/dist/tt-toggle-group.js +273 -0
- package/dist/tt-toggle-group.js.map +1 -0
- package/dist/tt-toggle.d.ts +54 -0
- package/dist/tt-toggle.d.ts.map +1 -0
- package/dist/tt-toggle.js +232 -0
- package/dist/tt-toggle.js.map +1 -0
- package/dist/tt-toolbar.d.ts +26 -0
- package/dist/tt-toolbar.d.ts.map +1 -0
- package/dist/tt-toolbar.js +164 -0
- package/dist/tt-toolbar.js.map +1 -0
- package/dist/tt-tooltip.d.ts +42 -0
- package/dist/tt-tooltip.d.ts.map +1 -0
- package/dist/tt-tooltip.js +299 -0
- package/dist/tt-tooltip.js.map +1 -0
- package/package.json +84 -4
- package/vscode.html-custom-data.json +2911 -0
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { LitElement, html, css } from "lit";
|
|
8
|
+
import { customElement, property, query } from "lit/decorators.js";
|
|
9
|
+
import { srOnly } from "./sr-only.js";
|
|
10
|
+
import "./tt-avatar.js";
|
|
11
|
+
import "./tt-button.js";
|
|
12
|
+
import "./tt-textarea.js";
|
|
13
|
+
import "./tt-empty-state.js";
|
|
14
|
+
/**
|
|
15
|
+
* The reading side of a messaging surface. Pairs with tt-inbox.
|
|
16
|
+
*
|
|
17
|
+
* Split from the list because the two sit in different places: side by
|
|
18
|
+
* side on a desktop, two separate routes on a phone. One component would
|
|
19
|
+
* have to make that layout decision for the app.
|
|
20
|
+
*
|
|
21
|
+
* THREE THINGS THAT ARE EASY TO GET WRONG AND ANNOYING TO LIVE WITH.
|
|
22
|
+
*
|
|
23
|
+
* It scrolls to the bottom on new messages, because a thread is read
|
|
24
|
+
* newest-last and opening one part-way up is disorienting. It only does
|
|
25
|
+
* so when the reader was ALREADY at the bottom, so it never yanks
|
|
26
|
+
* somebody out of older messages they were deliberately reading.
|
|
27
|
+
*
|
|
28
|
+
* Consecutive messages from the same author collapse: the avatar and name
|
|
29
|
+
* appear once and the following bubbles are bare. Repeating the name on
|
|
30
|
+
* every line of a burst is noise.
|
|
31
|
+
*
|
|
32
|
+
* The composer is Enter to send, Shift+Enter for a newline. That is what
|
|
33
|
+
* every messaging product does, and a thread that needs a mouse click to
|
|
34
|
+
* send feels broken regardless of how correct it is.
|
|
35
|
+
*/
|
|
36
|
+
let TTThread = class TTThread extends LitElement {
|
|
37
|
+
constructor() {
|
|
38
|
+
super(...arguments);
|
|
39
|
+
this.messages = [];
|
|
40
|
+
this.heading = "";
|
|
41
|
+
this.placeholder = "Write a message";
|
|
42
|
+
this.sendLabel = "Send";
|
|
43
|
+
// Hides the composer, for a read-only or archived thread.
|
|
44
|
+
this.readonly = false;
|
|
45
|
+
this.sending = false;
|
|
46
|
+
this.emptyText = "No messages yet";
|
|
47
|
+
// Whether the reader was pinned to the bottom BEFORE this render. Read
|
|
48
|
+
// in willUpdate, because by updated() the new message has already
|
|
49
|
+
// changed scrollHeight and the answer would always be "no".
|
|
50
|
+
this.wasAtBottom = true;
|
|
51
|
+
}
|
|
52
|
+
willUpdate(changed) {
|
|
53
|
+
if (!changed.has("messages") || !this.scroller)
|
|
54
|
+
return;
|
|
55
|
+
const { scrollTop, clientHeight, scrollHeight } = this.scroller;
|
|
56
|
+
// A few pixels of tolerance: sub-pixel layout means scrollTop rarely
|
|
57
|
+
// lands exactly on the bottom.
|
|
58
|
+
this.wasAtBottom = scrollHeight - scrollTop - clientHeight < 40;
|
|
59
|
+
}
|
|
60
|
+
updated(changed) {
|
|
61
|
+
if (changed.has("messages") && this.wasAtBottom) {
|
|
62
|
+
this.scrollToEnd();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
firstUpdated() {
|
|
66
|
+
this.scrollToEnd();
|
|
67
|
+
}
|
|
68
|
+
scrollToEnd() {
|
|
69
|
+
// After paint, or scrollHeight is still the old value.
|
|
70
|
+
requestAnimationFrame(() => {
|
|
71
|
+
if (this.scroller)
|
|
72
|
+
this.scroller.scrollTop = this.scroller.scrollHeight;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
send() {
|
|
76
|
+
const body = this.composer?.value?.trim();
|
|
77
|
+
// Silently ignore empty sends rather than emitting a blank message.
|
|
78
|
+
if (!body || this.sending)
|
|
79
|
+
return;
|
|
80
|
+
this.dispatchEvent(new CustomEvent("tt-send", {
|
|
81
|
+
detail: { body },
|
|
82
|
+
bubbles: true,
|
|
83
|
+
composed: true,
|
|
84
|
+
}));
|
|
85
|
+
// The parent decides whether the send succeeded, but clearing here
|
|
86
|
+
// keeps the field responsive. A parent that fails can put the text
|
|
87
|
+
// back from the event detail.
|
|
88
|
+
this.composer.value = "";
|
|
89
|
+
}
|
|
90
|
+
handleKeydown(event) {
|
|
91
|
+
if (event.key === "Enter" && !event.shiftKey) {
|
|
92
|
+
event.preventDefault();
|
|
93
|
+
this.send();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
static { this.styles = [srOnly, css `
|
|
97
|
+
/* The browser's own [hidden] rule loses to any :host display, so a
|
|
98
|
+
hidden element would still show. Important, so it always wins. */
|
|
99
|
+
:host([hidden]) {
|
|
100
|
+
display: none !important;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
:host {
|
|
104
|
+
display: flex;
|
|
105
|
+
flex-direction: column;
|
|
106
|
+
|
|
107
|
+
height: 100%;
|
|
108
|
+
min-height: 0;
|
|
109
|
+
|
|
110
|
+
font-family: var(--tt-font-sans);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
header {
|
|
114
|
+
flex: 0 0 auto;
|
|
115
|
+
|
|
116
|
+
display: flex;
|
|
117
|
+
align-items: center;
|
|
118
|
+
gap: var(--tt-space-3);
|
|
119
|
+
|
|
120
|
+
padding: var(--tt-space-3) var(--tt-space-4);
|
|
121
|
+
border-bottom: 1px solid var(--tt-border);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.heading {
|
|
125
|
+
margin: 0;
|
|
126
|
+
font-size: var(--tt-text-md);
|
|
127
|
+
font-weight: var(--tt-weight-semibold);
|
|
128
|
+
color: var(--tt-foreground);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/*
|
|
132
|
+
min-height:0 is load-bearing. A flex child will not shrink below its
|
|
133
|
+
content by default, so without it this box grows to fit every
|
|
134
|
+
message and the whole page scrolls instead of the thread.
|
|
135
|
+
*/
|
|
136
|
+
.messages {
|
|
137
|
+
flex: 1;
|
|
138
|
+
min-height: 0;
|
|
139
|
+
overflow-y: auto;
|
|
140
|
+
|
|
141
|
+
display: flex;
|
|
142
|
+
flex-direction: column;
|
|
143
|
+
gap: var(--tt-space-2);
|
|
144
|
+
|
|
145
|
+
padding: var(--tt-space-4);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.message {
|
|
149
|
+
display: flex;
|
|
150
|
+
align-items: flex-end;
|
|
151
|
+
gap: var(--tt-space-2);
|
|
152
|
+
|
|
153
|
+
max-width: 78%;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.message.own {
|
|
157
|
+
align-self: flex-end;
|
|
158
|
+
flex-direction: row-reverse;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/* Bursts collapse: the avatar shows once and later bubbles indent to
|
|
162
|
+
where it would have been, so the column still lines up. */
|
|
163
|
+
.message.continued {
|
|
164
|
+
margin-top: calc(var(--tt-space-2) * -1 + 2px);
|
|
165
|
+
padding-left: calc(var(--tt-control-sm) - 4px);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.message.continued.own {
|
|
169
|
+
padding-left: 0;
|
|
170
|
+
padding-right: calc(var(--tt-control-sm) - 4px);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.bubble {
|
|
174
|
+
padding: var(--tt-space-2) var(--tt-space-3);
|
|
175
|
+
|
|
176
|
+
border: 1px solid var(--tt-border);
|
|
177
|
+
border-radius: var(--tt-radius-lg);
|
|
178
|
+
|
|
179
|
+
background: var(--tt-card);
|
|
180
|
+
color: var(--tt-foreground);
|
|
181
|
+
|
|
182
|
+
font-size: var(--tt-text-sm);
|
|
183
|
+
line-height: var(--tt-leading-snug);
|
|
184
|
+
|
|
185
|
+
/* Long unbroken strings, a URL or a VAT number, must wrap rather
|
|
186
|
+
than widen the bubble past the thread. */
|
|
187
|
+
overflow-wrap: anywhere;
|
|
188
|
+
white-space: pre-wrap;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.message.own .bubble {
|
|
192
|
+
background: var(--tt-primary);
|
|
193
|
+
color: var(--tt-primary-foreground);
|
|
194
|
+
border-color: var(--tt-primary);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.meta {
|
|
198
|
+
display: flex;
|
|
199
|
+
align-items: baseline;
|
|
200
|
+
gap: var(--tt-space-2);
|
|
201
|
+
|
|
202
|
+
margin-bottom: 2px;
|
|
203
|
+
|
|
204
|
+
font-size: var(--tt-text-xs);
|
|
205
|
+
color: var(--tt-muted-foreground);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.author {
|
|
209
|
+
font-weight: var(--tt-weight-medium);
|
|
210
|
+
color: var(--tt-foreground);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.stack {
|
|
214
|
+
display: flex;
|
|
215
|
+
flex-direction: column;
|
|
216
|
+
min-width: 0;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
footer {
|
|
220
|
+
flex: 0 0 auto;
|
|
221
|
+
|
|
222
|
+
display: flex;
|
|
223
|
+
align-items: flex-end;
|
|
224
|
+
gap: var(--tt-space-2);
|
|
225
|
+
|
|
226
|
+
padding: var(--tt-space-3) var(--tt-space-4);
|
|
227
|
+
border-top: 1px solid var(--tt-border);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
tt-textarea {
|
|
231
|
+
flex: 1;
|
|
232
|
+
min-width: 0;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
.state {
|
|
236
|
+
margin: auto;
|
|
237
|
+
padding: var(--tt-space-8);
|
|
238
|
+
}
|
|
239
|
+
`]; }
|
|
240
|
+
render() {
|
|
241
|
+
return html `
|
|
242
|
+
${this.heading
|
|
243
|
+
? html `
|
|
244
|
+
<header part="header">
|
|
245
|
+
<h2 class="heading">${this.heading}</h2>
|
|
246
|
+
<slot name="actions"></slot>
|
|
247
|
+
</header>
|
|
248
|
+
`
|
|
249
|
+
: ""}
|
|
250
|
+
|
|
251
|
+
<!--
|
|
252
|
+
role="log": a live region for a conversation. New messages are
|
|
253
|
+
read out as they arrive, which is the whole point of a thread,
|
|
254
|
+
and nothing else on the page has to change for it.
|
|
255
|
+
-->
|
|
256
|
+
<div
|
|
257
|
+
class="messages"
|
|
258
|
+
part="messages"
|
|
259
|
+
role="log"
|
|
260
|
+
aria-label=${this.heading || "Messages"}
|
|
261
|
+
>
|
|
262
|
+
${this.messages.length === 0
|
|
263
|
+
? html `<div class="state">
|
|
264
|
+
<tt-empty-state heading=${this.emptyText}></tt-empty-state>
|
|
265
|
+
</div>`
|
|
266
|
+
: this.messages.map((message, index) => {
|
|
267
|
+
// Same author as the message before it: collapse the header.
|
|
268
|
+
const previous = this.messages[index - 1];
|
|
269
|
+
const continued = previous?.author === message.author;
|
|
270
|
+
return html `
|
|
271
|
+
<div
|
|
272
|
+
class="message ${message.own ? "own" : ""} ${continued
|
|
273
|
+
? "continued"
|
|
274
|
+
: ""}"
|
|
275
|
+
part="message"
|
|
276
|
+
>
|
|
277
|
+
${continued
|
|
278
|
+
? ""
|
|
279
|
+
: html `
|
|
280
|
+
<tt-avatar
|
|
281
|
+
size="small"
|
|
282
|
+
src=${message.avatar ?? ""}
|
|
283
|
+
name=${message.author}
|
|
284
|
+
></tt-avatar>
|
|
285
|
+
`}
|
|
286
|
+
|
|
287
|
+
<div class="stack">
|
|
288
|
+
<!--
|
|
289
|
+
A continued message hides its author from the EYE
|
|
290
|
+
only. Read on its own, a burst of four bodies would
|
|
291
|
+
otherwise reach a screen reader as four anonymous
|
|
292
|
+
lines.
|
|
293
|
+
-->
|
|
294
|
+
${continued
|
|
295
|
+
? html `<span class="sr-only">${message.author}</span>`
|
|
296
|
+
: html `
|
|
297
|
+
<span class="meta">
|
|
298
|
+
<span class="author">${message.author}</span>
|
|
299
|
+
${message.timestamp
|
|
300
|
+
? html `<span>${message.timestamp}</span>`
|
|
301
|
+
: ""}
|
|
302
|
+
</span>
|
|
303
|
+
`}
|
|
304
|
+
|
|
305
|
+
<div class="bubble" part="bubble">${message.body}</div>
|
|
306
|
+
</div>
|
|
307
|
+
</div>
|
|
308
|
+
`;
|
|
309
|
+
})}
|
|
310
|
+
</div>
|
|
311
|
+
|
|
312
|
+
${this.readonly
|
|
313
|
+
? ""
|
|
314
|
+
: html `
|
|
315
|
+
<footer part="composer">
|
|
316
|
+
<!--
|
|
317
|
+
Not disabled while sending. Disabling the focused field
|
|
318
|
+
threw focus to <body> the moment Enter sent a message, so
|
|
319
|
+
the next message started with finding the composer again.
|
|
320
|
+
send() already refuses while a send is in flight.
|
|
321
|
+
-->
|
|
322
|
+
<tt-textarea
|
|
323
|
+
full-width
|
|
324
|
+
auto-grow
|
|
325
|
+
.rows=${1}
|
|
326
|
+
placeholder=${this.placeholder}
|
|
327
|
+
label=${this.placeholder}
|
|
328
|
+
label-hidden
|
|
329
|
+
@keydown=${this.handleKeydown}
|
|
330
|
+
></tt-textarea>
|
|
331
|
+
|
|
332
|
+
<tt-button
|
|
333
|
+
?loading=${this.sending}
|
|
334
|
+
@tt-button-click=${this.send}
|
|
335
|
+
>
|
|
336
|
+
${this.sendLabel}
|
|
337
|
+
</tt-button>
|
|
338
|
+
</footer>
|
|
339
|
+
`}
|
|
340
|
+
`;
|
|
341
|
+
}
|
|
342
|
+
};
|
|
343
|
+
__decorate([
|
|
344
|
+
property({ type: Array })
|
|
345
|
+
], TTThread.prototype, "messages", void 0);
|
|
346
|
+
__decorate([
|
|
347
|
+
property({ type: String })
|
|
348
|
+
], TTThread.prototype, "heading", void 0);
|
|
349
|
+
__decorate([
|
|
350
|
+
property({ type: String })
|
|
351
|
+
], TTThread.prototype, "placeholder", void 0);
|
|
352
|
+
__decorate([
|
|
353
|
+
property({ type: String, attribute: "send-label" })
|
|
354
|
+
], TTThread.prototype, "sendLabel", void 0);
|
|
355
|
+
__decorate([
|
|
356
|
+
property({ type: Boolean })
|
|
357
|
+
], TTThread.prototype, "readonly", void 0);
|
|
358
|
+
__decorate([
|
|
359
|
+
property({ type: Boolean })
|
|
360
|
+
], TTThread.prototype, "sending", void 0);
|
|
361
|
+
__decorate([
|
|
362
|
+
property({ type: String, attribute: "empty-text" })
|
|
363
|
+
], TTThread.prototype, "emptyText", void 0);
|
|
364
|
+
__decorate([
|
|
365
|
+
query(".messages")
|
|
366
|
+
], TTThread.prototype, "scroller", void 0);
|
|
367
|
+
__decorate([
|
|
368
|
+
query("tt-textarea")
|
|
369
|
+
], TTThread.prototype, "composer", void 0);
|
|
370
|
+
TTThread = __decorate([
|
|
371
|
+
customElement("tt-thread")
|
|
372
|
+
], TTThread);
|
|
373
|
+
export { TTThread };
|
|
374
|
+
//# sourceMappingURL=tt-thread.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tt-thread.js","sourceRoot":"","sources":["../src/tt-thread.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { LitElement } from "lit";
|
|
2
|
+
import "./tt-icon.js";
|
|
3
|
+
export type ToastVariant = "neutral" | "success" | "warning" | "danger";
|
|
4
|
+
export interface ToastOptions {
|
|
5
|
+
message: string;
|
|
6
|
+
variant?: ToastVariant;
|
|
7
|
+
duration?: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Drop one of these anywhere in the app, then call the module-level
|
|
11
|
+
* toast() from anywhere else. Notifications are global by nature, so
|
|
12
|
+
* routing every message down through props would mean every component
|
|
13
|
+
* in the tree carrying a notify callback it does not otherwise need.
|
|
14
|
+
*/
|
|
15
|
+
export declare class TTToast extends LitElement {
|
|
16
|
+
position: "top-right" | "top-center" | "bottom-right" | "bottom-center";
|
|
17
|
+
private items;
|
|
18
|
+
private leaving;
|
|
19
|
+
private exits;
|
|
20
|
+
private politeText;
|
|
21
|
+
private alertText;
|
|
22
|
+
private timers;
|
|
23
|
+
connectedCallback(): void;
|
|
24
|
+
disconnectedCallback(): void;
|
|
25
|
+
updated(): void;
|
|
26
|
+
show(options: ToastOptions): void;
|
|
27
|
+
private clearTimer;
|
|
28
|
+
private restartTimer;
|
|
29
|
+
private announce;
|
|
30
|
+
private hold;
|
|
31
|
+
private release;
|
|
32
|
+
dismiss(id: number): void;
|
|
33
|
+
static styles: import("lit").CSSResult[];
|
|
34
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Show a toast from anywhere:
|
|
38
|
+
*
|
|
39
|
+
* toast({ message: "Request posted", variant: "success" });
|
|
40
|
+
*
|
|
41
|
+
* Requires a <tt-toast> mounted somewhere in the page.
|
|
42
|
+
*/
|
|
43
|
+
export declare function toast(options: ToastOptions): void;
|
|
44
|
+
declare global {
|
|
45
|
+
interface HTMLElementTagNameMap {
|
|
46
|
+
"tt-toast": TTToast;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=tt-toast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tt-toast.d.ts","sourceRoot":"","sources":["../src/tt-toast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAMrD,OAAO,cAAc,CAAC;AAEtB,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAsBD;;;;;GAKG;AACH,qBACa,OAAQ,SAAQ,UAAU;IAgBrC,QAAQ,EAAE,WAAW,GAAG,YAAY,GAAG,cAAc,GAAG,eAAe,CACzD;IAEL,OAAO,CAAC,KAAK,CAAmB;IAQhC,OAAO,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,KAAK,CAAiC;IAKrC,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,SAAS,CAAM;IAEhC,OAAO,CAAC,MAAM,CAAoD;IAElE,iBAAiB;IAKjB,oBAAoB;IAYpB,OAAO;IAeP,IAAI,CAAC,OAAO,EAAE,YAAY;IAoD1B,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,EAAE,EAAE,MAAM;IAclB,MAAM,CAAC,MAAM,4BAsKV;IAEH,MAAM;CA0DP;AAMD;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,YAAY,QAS1C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}
|