@tartaguti/ui-components 0.0.0-stage → 0.1.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 +7 -0
- package/LICENSE +21 -0
- package/README.md +192 -2
- package/THIRD-PARTY-NOTICES.md +29 -0
- package/custom-elements.json +16731 -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 +69 -0
- package/dist/tt-data-table.d.ts.map +1 -0
- package/dist/tt-data-table.js +542 -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 +2907 -0
|
@@ -0,0 +1,542 @@
|
|
|
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 } from "lit/decorators.js";
|
|
9
|
+
import { ifDefined } from "lit/directives/if-defined.js";
|
|
10
|
+
import "./tt-checkbox.js";
|
|
11
|
+
import "./tt-skeleton.js";
|
|
12
|
+
import "./tt-empty-state.js";
|
|
13
|
+
import "./tt-dropdown-menu.js";
|
|
14
|
+
import "./tt-icon.js";
|
|
15
|
+
import { srOnly } from "./sr-only.js";
|
|
16
|
+
/**
|
|
17
|
+
* Working table: sorting, selection, row actions, sticky header, and
|
|
18
|
+
* loading and empty states.
|
|
19
|
+
*
|
|
20
|
+
* It owns nothing. Sort state and selection come in as properties and
|
|
21
|
+
* changes go out as events, so the page stays the single source of truth
|
|
22
|
+
* and can put either in a URL. Sorting itself is the page's job too: it
|
|
23
|
+
* knows whether the data is an in-memory array or a server query.
|
|
24
|
+
*/
|
|
25
|
+
let TTDataTable = class TTDataTable extends LitElement {
|
|
26
|
+
constructor() {
|
|
27
|
+
super(...arguments);
|
|
28
|
+
this.columns = [];
|
|
29
|
+
this.rows = [];
|
|
30
|
+
/*
|
|
31
|
+
The table's name for screen readers, announced on entering it
|
|
32
|
+
("Team members, table"). Same word and job as tt-table's label. A
|
|
33
|
+
heading above the table names it for sighted readers only.
|
|
34
|
+
*/
|
|
35
|
+
this.label = "";
|
|
36
|
+
this.selectable = false;
|
|
37
|
+
this.selected = [];
|
|
38
|
+
// Same menu on every row. Leave empty for no actions column.
|
|
39
|
+
this.rowActions = [];
|
|
40
|
+
this.loading = false;
|
|
41
|
+
this.loadingRows = 5;
|
|
42
|
+
this.emptyHeading = "Nothing here yet";
|
|
43
|
+
this.emptyDescription = "";
|
|
44
|
+
// Rows respond to clicks. Only set this when there is somewhere to go.
|
|
45
|
+
this.clickableRows = false;
|
|
46
|
+
}
|
|
47
|
+
/*
|
|
48
|
+
What a row's selection checkbox is called.
|
|
49
|
+
|
|
50
|
+
"Select row" repeated twenty times tells a screen-reader user which
|
|
51
|
+
control they are on but nothing about what it does. The first column
|
|
52
|
+
is the closest thing to a row's name that a generic table can know,
|
|
53
|
+
so "Select Adriatik" comes out of the data rather than a guess.
|
|
54
|
+
*/
|
|
55
|
+
rowLabel(row) {
|
|
56
|
+
const name = this.rowName(row);
|
|
57
|
+
return name ? `Select ${name}` : "Select row";
|
|
58
|
+
}
|
|
59
|
+
/*
|
|
60
|
+
Only plain text names a row. A rich first cell (a template with an
|
|
61
|
+
avatar and two lines) stringified to "[object Object]", which a screen
|
|
62
|
+
reader then read out on every row.
|
|
63
|
+
*/
|
|
64
|
+
rowName(row) {
|
|
65
|
+
const first = this.columns[0];
|
|
66
|
+
const value = first ? row[first.key] : undefined;
|
|
67
|
+
return typeof value === "string" || typeof value === "number" ? String(value) : "";
|
|
68
|
+
}
|
|
69
|
+
get hasActions() {
|
|
70
|
+
return this.rowActions.length > 0;
|
|
71
|
+
}
|
|
72
|
+
get columnCount() {
|
|
73
|
+
return (this.columns.length + (this.selectable ? 1 : 0) + (this.hasActions ? 1 : 0));
|
|
74
|
+
}
|
|
75
|
+
/*
|
|
76
|
+
Both answer for the rows ON SCREEN, compared by id, never by count.
|
|
77
|
+
|
|
78
|
+
`selected` can hold ids that are not in `rows`: picked before a filter
|
|
79
|
+
hid them, or on another page. Comparing lengths then lies. Pick three
|
|
80
|
+
rows, filter to three different ones, and the header claimed "all
|
|
81
|
+
selected" while nothing visible was ticked.
|
|
82
|
+
*/
|
|
83
|
+
get allSelected() {
|
|
84
|
+
return (this.rows.length > 0 &&
|
|
85
|
+
this.rows.every((row) => this.selected.includes(row.id)));
|
|
86
|
+
}
|
|
87
|
+
get someSelected() {
|
|
88
|
+
return (!this.allSelected &&
|
|
89
|
+
this.rows.some((row) => this.selected.includes(row.id)));
|
|
90
|
+
}
|
|
91
|
+
emitSelection(next) {
|
|
92
|
+
this.dispatchEvent(new CustomEvent("tt-selection-change", {
|
|
93
|
+
detail: { selected: next },
|
|
94
|
+
bubbles: true,
|
|
95
|
+
composed: true,
|
|
96
|
+
}));
|
|
97
|
+
}
|
|
98
|
+
toggleAll(event) {
|
|
99
|
+
// tt-checkbox emits its own composed tt-change. Without this it would
|
|
100
|
+
// reach the page too, arriving after ours with no `selected` in it.
|
|
101
|
+
event.stopPropagation();
|
|
102
|
+
/*
|
|
103
|
+
Select-all applies to what is currently on screen, which is what a
|
|
104
|
+
user means by "all" when a filter is active. It adds or removes ONLY
|
|
105
|
+
those rows: a selection made before the filter, now hidden, is not
|
|
106
|
+
the header checkbox's to throw away.
|
|
107
|
+
*/
|
|
108
|
+
const visible = this.rows.map((r) => r.id);
|
|
109
|
+
this.emitSelection(this.allSelected
|
|
110
|
+
? this.selected.filter((id) => !visible.includes(id))
|
|
111
|
+
: [...this.selected, ...visible.filter((id) => !this.selected.includes(id))]);
|
|
112
|
+
}
|
|
113
|
+
toggleRow(id, event) {
|
|
114
|
+
event.stopPropagation();
|
|
115
|
+
this.emitSelection(this.selected.includes(id)
|
|
116
|
+
? this.selected.filter((s) => s !== id)
|
|
117
|
+
: [...this.selected, id]);
|
|
118
|
+
}
|
|
119
|
+
/*
|
|
120
|
+
Cycles ascending, descending, then off. The third state matters: once
|
|
121
|
+
sorted there is otherwise no way back to the original order, which is
|
|
122
|
+
usually meaningful (newest first, or whatever the server chose).
|
|
123
|
+
*/
|
|
124
|
+
toggleSort(column) {
|
|
125
|
+
if (!column.sortable)
|
|
126
|
+
return;
|
|
127
|
+
let next;
|
|
128
|
+
if (this.sort?.key !== column.key) {
|
|
129
|
+
next = { key: column.key, direction: "asc" };
|
|
130
|
+
}
|
|
131
|
+
else if (this.sort.direction === "asc") {
|
|
132
|
+
next = { key: column.key, direction: "desc" };
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
next = undefined;
|
|
136
|
+
}
|
|
137
|
+
this.dispatchEvent(new CustomEvent("tt-sort", {
|
|
138
|
+
detail: { sort: next },
|
|
139
|
+
bubbles: true,
|
|
140
|
+
composed: true,
|
|
141
|
+
}));
|
|
142
|
+
}
|
|
143
|
+
clickRow(row) {
|
|
144
|
+
if (!this.clickableRows)
|
|
145
|
+
return;
|
|
146
|
+
this.dispatchEvent(new CustomEvent("tt-row-click", {
|
|
147
|
+
detail: { row },
|
|
148
|
+
bubbles: true,
|
|
149
|
+
composed: true,
|
|
150
|
+
}));
|
|
151
|
+
}
|
|
152
|
+
chooseAction(row, event) {
|
|
153
|
+
// The menu's tt-menu-select is generic. Re-emit it as something the page
|
|
154
|
+
// can act on: which action, on which row.
|
|
155
|
+
event.stopPropagation();
|
|
156
|
+
const { value } = event.detail;
|
|
157
|
+
this.dispatchEvent(new CustomEvent("tt-row-action", {
|
|
158
|
+
detail: { action: value, row },
|
|
159
|
+
bubbles: true,
|
|
160
|
+
composed: true,
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
static { this.styles = [
|
|
164
|
+
srOnly,
|
|
165
|
+
css `
|
|
166
|
+
/* The browser's own [hidden] rule loses to any :host display, so a
|
|
167
|
+
hidden element would still show. Important, so it always wins. */
|
|
168
|
+
:host([hidden]) {
|
|
169
|
+
display: none !important;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
:host {
|
|
173
|
+
display: block;
|
|
174
|
+
font-family: var(--tt-font-sans);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.wrap {
|
|
178
|
+
width: 100%;
|
|
179
|
+
overflow-x: auto;
|
|
180
|
+
box-sizing: border-box;
|
|
181
|
+
|
|
182
|
+
background: var(--tt-card);
|
|
183
|
+
border: 1px solid var(--tt-border);
|
|
184
|
+
border-radius: var(--tt-radius-lg);
|
|
185
|
+
|
|
186
|
+
-webkit-overflow-scrolling: touch;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
table {
|
|
190
|
+
width: 100%;
|
|
191
|
+
border-collapse: collapse;
|
|
192
|
+
font-size: var(--tt-text-sm);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/*
|
|
196
|
+
Sticky header: the column labels stay put while the body scrolls,
|
|
197
|
+
so you never lose track of what a column means in a long list.
|
|
198
|
+
|
|
199
|
+
It sticks to .wrap, not to the page. overflow-x: auto turns .wrap
|
|
200
|
+
into a scroll container on BOTH axes, and sticky always pins to the
|
|
201
|
+
nearest one. So it only works once the consumer gives the wrap a
|
|
202
|
+
height (::part(wrap) { max-height }). There is no way to scroll
|
|
203
|
+
sideways inside a box AND stick to the page's scroll; that is CSS,
|
|
204
|
+
not a choice made here.
|
|
205
|
+
*/
|
|
206
|
+
thead th {
|
|
207
|
+
position: sticky;
|
|
208
|
+
top: 0;
|
|
209
|
+
z-index: 1;
|
|
210
|
+
|
|
211
|
+
/* The same pair as tt-table, so a colour theme tints every table header. */
|
|
212
|
+
background: var(--tt-table-header);
|
|
213
|
+
color: var(--tt-table-header-foreground);
|
|
214
|
+
|
|
215
|
+
padding: var(--tt-space-3) var(--tt-space-4);
|
|
216
|
+
|
|
217
|
+
font-size: var(--tt-text-xs);
|
|
218
|
+
font-weight: var(--tt-weight-semibold);
|
|
219
|
+
text-align: left;
|
|
220
|
+
text-transform: uppercase;
|
|
221
|
+
letter-spacing: 0.05em;
|
|
222
|
+
white-space: nowrap;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
th.end,
|
|
226
|
+
td.end {
|
|
227
|
+
text-align: right;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
td {
|
|
231
|
+
padding: var(--tt-space-3) var(--tt-space-4);
|
|
232
|
+
border-top: 1px solid var(--tt-border);
|
|
233
|
+
color: var(--tt-foreground);
|
|
234
|
+
line-height: var(--tt-leading-snug);
|
|
235
|
+
vertical-align: middle;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
tbody tr {
|
|
239
|
+
transition: background var(--tt-duration-fast) var(--tt-ease);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
tbody tr:hover {
|
|
243
|
+
background: var(--tt-accent);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
tbody tr.clickable {
|
|
247
|
+
cursor: pointer;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
/* Selected sits after hover so it wins, and gets its own darker
|
|
251
|
+
hover so a selected row still reacts to the pointer. */
|
|
252
|
+
tbody tr.selected {
|
|
253
|
+
background: color-mix(in srgb, var(--tt-primary) 8%, transparent);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
tbody tr.selected:hover {
|
|
257
|
+
background: color-mix(in srgb, var(--tt-primary) 14%, transparent);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
tbody tr:focus-visible {
|
|
261
|
+
outline: var(--tt-ring-width) solid var(--tt-ring);
|
|
262
|
+
outline-offset: var(--tt-ring-offset);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/* Sort controls are real buttons so the header is keyboard reachable.
|
|
266
|
+
A th with a click handler is not. */
|
|
267
|
+
.sort {
|
|
268
|
+
display: inline-flex;
|
|
269
|
+
align-items: center;
|
|
270
|
+
gap: var(--tt-space-1);
|
|
271
|
+
|
|
272
|
+
padding: 0;
|
|
273
|
+
border: none;
|
|
274
|
+
background: transparent;
|
|
275
|
+
color: inherit;
|
|
276
|
+
|
|
277
|
+
font: inherit;
|
|
278
|
+
font-size: inherit;
|
|
279
|
+
font-weight: inherit;
|
|
280
|
+
letter-spacing: inherit;
|
|
281
|
+
text-transform: inherit;
|
|
282
|
+
|
|
283
|
+
cursor: pointer;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
.sort:hover {
|
|
287
|
+
color: var(--tt-foreground);
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
.sort:focus-visible {
|
|
291
|
+
outline: var(--tt-ring-width) solid var(--tt-ring);
|
|
292
|
+
outline-offset: var(--tt-ring-offset);
|
|
293
|
+
border-radius: var(--tt-radius-sm);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/* Reserve the arrow's space always, so a header does not shift
|
|
297
|
+
sideways the moment you sort by it. The icon is always rendered and
|
|
298
|
+
only faded, so it holds its own width. */
|
|
299
|
+
.arrow {
|
|
300
|
+
display: inline-flex;
|
|
301
|
+
opacity: 0;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
.sorted {
|
|
305
|
+
color: var(--tt-foreground);
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
.sorted .arrow {
|
|
309
|
+
opacity: 1;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
/* width:1% on a table cell means "as narrow as the content allows".
|
|
313
|
+
The other columns absorb the leftover space. */
|
|
314
|
+
.select-cell,
|
|
315
|
+
.actions-cell {
|
|
316
|
+
width: 1%;
|
|
317
|
+
white-space: nowrap;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
.select-cell {
|
|
321
|
+
padding-right: 0;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
.actions-cell {
|
|
325
|
+
text-align: right;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
.state {
|
|
329
|
+
padding: var(--tt-space-6);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
`,
|
|
333
|
+
]; }
|
|
334
|
+
renderHeader() {
|
|
335
|
+
return html `
|
|
336
|
+
<thead>
|
|
337
|
+
<tr>
|
|
338
|
+
${this.selectable
|
|
339
|
+
? html `
|
|
340
|
+
<th class="select-cell">
|
|
341
|
+
<!--
|
|
342
|
+
The checkbox names ITSELF, but its label lives in a
|
|
343
|
+
nested shadow root, and a table header cell is judged
|
|
344
|
+
on its own text. Same pattern as the actions column
|
|
345
|
+
above: the column gets a name, the control gets a name,
|
|
346
|
+
and they are not the same sentence.
|
|
347
|
+
-->
|
|
348
|
+
<span class="sr-only">Select</span>
|
|
349
|
+
<tt-checkbox
|
|
350
|
+
label="Select all rows"
|
|
351
|
+
label-hidden
|
|
352
|
+
.checked=${this.allSelected}
|
|
353
|
+
.indeterminate=${this.someSelected}
|
|
354
|
+
@tt-change=${this.toggleAll}
|
|
355
|
+
></tt-checkbox>
|
|
356
|
+
</th>
|
|
357
|
+
`
|
|
358
|
+
: ""}
|
|
359
|
+
${this.columns.map((column) => {
|
|
360
|
+
const isSorted = this.sort?.key === column.key;
|
|
361
|
+
const direction = this.sort?.direction;
|
|
362
|
+
return html `
|
|
363
|
+
<th
|
|
364
|
+
class=${column.align === "end" ? "end" : ""}
|
|
365
|
+
style=${ifDefined(column.width ? `width:${column.width}` : undefined)}
|
|
366
|
+
aria-sort=${ifDefined(!column.sortable
|
|
367
|
+
? undefined
|
|
368
|
+
: !isSorted
|
|
369
|
+
? "none"
|
|
370
|
+
: direction === "asc"
|
|
371
|
+
? "ascending"
|
|
372
|
+
: "descending")}
|
|
373
|
+
>
|
|
374
|
+
${column.sortable
|
|
375
|
+
? html `
|
|
376
|
+
<button
|
|
377
|
+
class="sort ${isSorted ? "sorted" : ""}"
|
|
378
|
+
type="button"
|
|
379
|
+
@click=${() => this.toggleSort(column)}
|
|
380
|
+
>
|
|
381
|
+
${column.label}
|
|
382
|
+
<span class="arrow" aria-hidden="true">
|
|
383
|
+
<tt-icon
|
|
384
|
+
name=${direction === "desc" ? "arrow-down" : "arrow-up"}
|
|
385
|
+
size="12px"
|
|
386
|
+
></tt-icon>
|
|
387
|
+
</span>
|
|
388
|
+
</button>
|
|
389
|
+
`
|
|
390
|
+
: column.label}
|
|
391
|
+
</th>
|
|
392
|
+
`;
|
|
393
|
+
})}
|
|
394
|
+
${this.hasActions
|
|
395
|
+
? html `<th class="actions-cell">
|
|
396
|
+
<span class="sr-only">Actions</span>
|
|
397
|
+
</th>`
|
|
398
|
+
: ""}
|
|
399
|
+
</tr>
|
|
400
|
+
</thead>
|
|
401
|
+
`;
|
|
402
|
+
}
|
|
403
|
+
renderLoading() {
|
|
404
|
+
return html `
|
|
405
|
+
<tbody aria-busy="true">
|
|
406
|
+
${Array.from({ length: this.loadingRows }, () => html `
|
|
407
|
+
<tr>
|
|
408
|
+
<td colspan=${this.columnCount}>
|
|
409
|
+
<tt-skeleton variant="text"></tt-skeleton>
|
|
410
|
+
</td>
|
|
411
|
+
</tr>
|
|
412
|
+
`)}
|
|
413
|
+
</tbody>
|
|
414
|
+
`;
|
|
415
|
+
}
|
|
416
|
+
renderRow(row) {
|
|
417
|
+
const isSelected = this.selected.includes(row.id);
|
|
418
|
+
return html `
|
|
419
|
+
<tr
|
|
420
|
+
class="${this.clickableRows ? "clickable" : ""} ${isSelected
|
|
421
|
+
? "selected"
|
|
422
|
+
: ""}"
|
|
423
|
+
tabindex=${ifDefined(this.clickableRows ? 0 : undefined)}
|
|
424
|
+
@click=${() => this.clickRow(row)}
|
|
425
|
+
@keydown=${(e) => {
|
|
426
|
+
/*
|
|
427
|
+
Only a key pressed on the row ITSELF. Keys bubble, so Enter on
|
|
428
|
+
the row's checkbox or its actions menu reaches this handler
|
|
429
|
+
too, and opening the menu would also navigate away. target is
|
|
430
|
+
where the key was pressed; currentTarget is this <tr>.
|
|
431
|
+
*/
|
|
432
|
+
if (e.target !== e.currentTarget)
|
|
433
|
+
return;
|
|
434
|
+
if (this.clickableRows && e.key === "Enter")
|
|
435
|
+
this.clickRow(row);
|
|
436
|
+
}}
|
|
437
|
+
>
|
|
438
|
+
${this.selectable
|
|
439
|
+
? html `
|
|
440
|
+
<td class="select-cell" @click=${(e) => e.stopPropagation()}>
|
|
441
|
+
<tt-checkbox
|
|
442
|
+
.label=${this.rowLabel(row)}
|
|
443
|
+
label-hidden
|
|
444
|
+
.checked=${isSelected}
|
|
445
|
+
@tt-change=${(e) => this.toggleRow(row.id, e)}
|
|
446
|
+
></tt-checkbox>
|
|
447
|
+
</td>
|
|
448
|
+
`
|
|
449
|
+
: ""}
|
|
450
|
+
${this.columns.map((column) => html `
|
|
451
|
+
<td class=${column.align === "end" ? "end" : ""}>
|
|
452
|
+
${row[column.key] ?? ""}
|
|
453
|
+
</td>
|
|
454
|
+
`)}
|
|
455
|
+
${this.hasActions
|
|
456
|
+
? html `
|
|
457
|
+
<td
|
|
458
|
+
class="actions-cell"
|
|
459
|
+
@click=${(e) => e.stopPropagation()}
|
|
460
|
+
>
|
|
461
|
+
<tt-dropdown-menu
|
|
462
|
+
.items=${this.rowActions}
|
|
463
|
+
label=${this.rowName(row) ? `Actions for ${this.rowName(row)}` : "Actions"}
|
|
464
|
+
@tt-menu-select=${(e) => this.chooseAction(row, e)}
|
|
465
|
+
></tt-dropdown-menu>
|
|
466
|
+
</td>
|
|
467
|
+
`
|
|
468
|
+
: ""}
|
|
469
|
+
</tr>
|
|
470
|
+
`;
|
|
471
|
+
}
|
|
472
|
+
render() {
|
|
473
|
+
return html `
|
|
474
|
+
<div class="wrap" part="wrap">
|
|
475
|
+
<table part="table" aria-label=${ifDefined(this.label || undefined)}>
|
|
476
|
+
${this.renderHeader()}
|
|
477
|
+
${this.loading
|
|
478
|
+
? this.renderLoading()
|
|
479
|
+
: html `
|
|
480
|
+
<tbody>
|
|
481
|
+
${this.rows.length === 0
|
|
482
|
+
? html `
|
|
483
|
+
<tr>
|
|
484
|
+
<td class="state" colspan=${this.columnCount}>
|
|
485
|
+
<tt-empty-state
|
|
486
|
+
heading=${this.emptyHeading}
|
|
487
|
+
description=${this.emptyDescription}
|
|
488
|
+
>
|
|
489
|
+
<slot name="empty-actions" slot="actions"></slot>
|
|
490
|
+
</tt-empty-state>
|
|
491
|
+
</td>
|
|
492
|
+
</tr>
|
|
493
|
+
`
|
|
494
|
+
: this.rows.map((row) => this.renderRow(row))}
|
|
495
|
+
</tbody>
|
|
496
|
+
`}
|
|
497
|
+
</table>
|
|
498
|
+
</div>
|
|
499
|
+
`;
|
|
500
|
+
}
|
|
501
|
+
};
|
|
502
|
+
__decorate([
|
|
503
|
+
property({ type: Array })
|
|
504
|
+
], TTDataTable.prototype, "columns", void 0);
|
|
505
|
+
__decorate([
|
|
506
|
+
property({ type: Array })
|
|
507
|
+
], TTDataTable.prototype, "rows", void 0);
|
|
508
|
+
__decorate([
|
|
509
|
+
property({ type: String })
|
|
510
|
+
], TTDataTable.prototype, "label", void 0);
|
|
511
|
+
__decorate([
|
|
512
|
+
property({ type: Object })
|
|
513
|
+
], TTDataTable.prototype, "sort", void 0);
|
|
514
|
+
__decorate([
|
|
515
|
+
property({ type: Boolean })
|
|
516
|
+
], TTDataTable.prototype, "selectable", void 0);
|
|
517
|
+
__decorate([
|
|
518
|
+
property({ type: Array })
|
|
519
|
+
], TTDataTable.prototype, "selected", void 0);
|
|
520
|
+
__decorate([
|
|
521
|
+
property({ type: Array, attribute: "row-actions" })
|
|
522
|
+
], TTDataTable.prototype, "rowActions", void 0);
|
|
523
|
+
__decorate([
|
|
524
|
+
property({ type: Boolean })
|
|
525
|
+
], TTDataTable.prototype, "loading", void 0);
|
|
526
|
+
__decorate([
|
|
527
|
+
property({ type: Number, attribute: "loading-rows" })
|
|
528
|
+
], TTDataTable.prototype, "loadingRows", void 0);
|
|
529
|
+
__decorate([
|
|
530
|
+
property({ type: String, attribute: "empty-heading" })
|
|
531
|
+
], TTDataTable.prototype, "emptyHeading", void 0);
|
|
532
|
+
__decorate([
|
|
533
|
+
property({ type: String, attribute: "empty-description" })
|
|
534
|
+
], TTDataTable.prototype, "emptyDescription", void 0);
|
|
535
|
+
__decorate([
|
|
536
|
+
property({ type: Boolean, attribute: "clickable-rows" })
|
|
537
|
+
], TTDataTable.prototype, "clickableRows", void 0);
|
|
538
|
+
TTDataTable = __decorate([
|
|
539
|
+
customElement("tt-data-table")
|
|
540
|
+
], TTDataTable);
|
|
541
|
+
export { TTDataTable };
|
|
542
|
+
//# sourceMappingURL=tt-data-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tt-data-table.js","sourceRoot":"","sources":["../src/tt-data-table.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { LitElement } from "lit";
|
|
2
|
+
/**
|
|
3
|
+
* A separating line, optionally with a label in the middle.
|
|
4
|
+
*
|
|
5
|
+
* Trivial, and worth having: without it every page writes its own
|
|
6
|
+
* border-top with slightly different spacing, and the product drifts.
|
|
7
|
+
*/
|
|
8
|
+
export declare class TTDivider extends LitElement {
|
|
9
|
+
label: string;
|
|
10
|
+
vertical: boolean;
|
|
11
|
+
static styles: import("lit").CSSResult;
|
|
12
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
13
|
+
}
|
|
14
|
+
declare global {
|
|
15
|
+
interface HTMLElementTagNameMap {
|
|
16
|
+
"tt-divider": TTDivider;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=tt-divider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tt-divider.d.ts","sourceRoot":"","sources":["../src/tt-divider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAG5C;;;;;GAKG;AACH,qBACa,SAAU,SAAQ,UAAU;IACX,KAAK,SAAM;IAEK,QAAQ,UAAS;IAE7D,MAAM,CAAC,MAAM,0BAqDX;IAEF,MAAM;CAmBP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,SAAS,CAAC;KACzB;CACF"}
|
|
@@ -0,0 +1,104 @@
|
|
|
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 } from "lit/decorators.js";
|
|
9
|
+
/**
|
|
10
|
+
* A separating line, optionally with a label in the middle.
|
|
11
|
+
*
|
|
12
|
+
* Trivial, and worth having: without it every page writes its own
|
|
13
|
+
* border-top with slightly different spacing, and the product drifts.
|
|
14
|
+
*/
|
|
15
|
+
let TTDivider = class TTDivider extends LitElement {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
this.label = "";
|
|
19
|
+
this.vertical = false;
|
|
20
|
+
}
|
|
21
|
+
static { this.styles = css `
|
|
22
|
+
/* The browser's own [hidden] rule loses to any :host display, so a
|
|
23
|
+
hidden element would still show. Important, so it always wins. */
|
|
24
|
+
:host([hidden]) {
|
|
25
|
+
display: none !important;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
:host {
|
|
29
|
+
display: block;
|
|
30
|
+
font-family: var(--tt-font-sans);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
:host([vertical]) {
|
|
34
|
+
display: inline-block;
|
|
35
|
+
height: 100%;
|
|
36
|
+
min-height: 1em;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.line {
|
|
40
|
+
border: none;
|
|
41
|
+
border-top: 1px solid var(--tt-border);
|
|
42
|
+
margin: 0;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
:host([vertical]) .line {
|
|
46
|
+
height: 100%;
|
|
47
|
+
border-top: none;
|
|
48
|
+
border-left: 1px solid var(--tt-border);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/* With a label the rule becomes two rules, one either side of the
|
|
52
|
+
text, using flex rather than any background trickery. */
|
|
53
|
+
.labelled {
|
|
54
|
+
display: flex;
|
|
55
|
+
align-items: center;
|
|
56
|
+
gap: var(--tt-space-3);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.labelled::before,
|
|
60
|
+
.labelled::after {
|
|
61
|
+
content: "";
|
|
62
|
+
flex: 1;
|
|
63
|
+
border-top: 1px solid var(--tt-border);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.text {
|
|
67
|
+
font-size: var(--tt-text-xs);
|
|
68
|
+
font-weight: var(--tt-weight-medium);
|
|
69
|
+
text-transform: uppercase;
|
|
70
|
+
letter-spacing: 0.05em;
|
|
71
|
+
color: var(--tt-muted-foreground);
|
|
72
|
+
white-space: nowrap;
|
|
73
|
+
}
|
|
74
|
+
`; }
|
|
75
|
+
render() {
|
|
76
|
+
if (this.label) {
|
|
77
|
+
return html `
|
|
78
|
+
<!-- aria-label, because a separator's children are presentational:
|
|
79
|
+
the visible text inside is never read, so without this the
|
|
80
|
+
"or" its docs promise would be skipped. -->
|
|
81
|
+
<div
|
|
82
|
+
class="labelled"
|
|
83
|
+
part="divider"
|
|
84
|
+
role="separator"
|
|
85
|
+
aria-label=${this.label}
|
|
86
|
+
>
|
|
87
|
+
<span class="text">${this.label}</span>
|
|
88
|
+
</div>
|
|
89
|
+
`;
|
|
90
|
+
}
|
|
91
|
+
return html `<hr class="line" part="divider" />`;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
__decorate([
|
|
95
|
+
property({ type: String })
|
|
96
|
+
], TTDivider.prototype, "label", void 0);
|
|
97
|
+
__decorate([
|
|
98
|
+
property({ type: Boolean, reflect: true })
|
|
99
|
+
], TTDivider.prototype, "vertical", void 0);
|
|
100
|
+
TTDivider = __decorate([
|
|
101
|
+
customElement("tt-divider")
|
|
102
|
+
], TTDivider);
|
|
103
|
+
export { TTDivider };
|
|
104
|
+
//# sourceMappingURL=tt-divider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tt-divider.js","sourceRoot":"","sources":["../src/tt-divider.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;;;;GAKG;AAEI,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,UAAU;IAAlC;;QACuB,UAAK,GAAG,EAAE,CAAC;QAEK,aAAQ,GAAG,KAAK,CAAC;IA4E/D,CAAC;aA1EQ,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDlB,AArDY,CAqDX;IAEF,MAAM;QACJ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAA;;;;;;;;uBAQM,IAAI,CAAC,KAAK;;+BAEF,IAAI,CAAC,KAAK;;OAElC,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAA,oCAAoC,CAAC;IAClD,CAAC;;AA7E2B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wCAAY;AAEK;IAA3C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;2CAAkB;AAHlD,SAAS;IADrB,aAAa,CAAC,YAAY,CAAC;GACf,SAAS,CA+ErB"}
|