@tartaguti/ui-components 0.1.0 → 0.3.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.
Files changed (213) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +12 -0
  3. package/custom-elements.json +2887 -823
  4. package/dist/accordion/tt-accordion-item.d.ts.map +1 -1
  5. package/dist/accordion/tt-accordion-item.js +5 -2
  6. package/dist/accordion/tt-accordion-item.js.map +1 -1
  7. package/dist/bento/tt-bento-item.d.ts.map +1 -1
  8. package/dist/bento/tt-bento-item.js +7 -13
  9. package/dist/bento/tt-bento-item.js.map +1 -1
  10. package/dist/docs.d.ts +7 -0
  11. package/dist/docs.d.ts.map +1 -0
  12. package/dist/docs.js +15 -0
  13. package/dist/docs.js.map +1 -0
  14. package/dist/index.d.ts +4 -6
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +8 -7
  17. package/dist/index.js.map +1 -1
  18. package/dist/sidebar/tt-menu-group.d.ts.map +1 -1
  19. package/dist/sidebar/tt-menu-group.js +16 -5
  20. package/dist/sidebar/tt-menu-group.js.map +1 -1
  21. package/dist/sidebar/tt-menu-item.d.ts.map +1 -1
  22. package/dist/sidebar/tt-menu-item.js +24 -11
  23. package/dist/sidebar/tt-menu-item.js.map +1 -1
  24. package/dist/sidebar/tt-sidebar-footer.d.ts.map +1 -1
  25. package/dist/sidebar/tt-sidebar-footer.js +7 -3
  26. package/dist/sidebar/tt-sidebar-footer.js.map +1 -1
  27. package/dist/sidebar/tt-sidebar.d.ts +8 -3
  28. package/dist/sidebar/tt-sidebar.d.ts.map +1 -1
  29. package/dist/sidebar/tt-sidebar.js +196 -44
  30. package/dist/sidebar/tt-sidebar.js.map +1 -1
  31. package/dist/strings.d.ts +64 -0
  32. package/dist/strings.d.ts.map +1 -0
  33. package/dist/strings.js +68 -0
  34. package/dist/strings.js.map +1 -0
  35. package/dist/tokens.css +30 -6
  36. package/dist/tt-alert.d.ts.map +1 -1
  37. package/dist/tt-alert.js +5 -2
  38. package/dist/tt-alert.js.map +1 -1
  39. package/dist/tt-auth.d.ts +5 -1
  40. package/dist/tt-auth.d.ts.map +1 -1
  41. package/dist/tt-auth.js +72 -10
  42. package/dist/tt-auth.js.map +1 -1
  43. package/dist/tt-breadcrumbs.d.ts.map +1 -1
  44. package/dist/tt-breadcrumbs.js +6 -3
  45. package/dist/tt-breadcrumbs.js.map +1 -1
  46. package/dist/tt-button-group.d.ts.map +1 -1
  47. package/dist/tt-button-group.js +7 -1
  48. package/dist/tt-button-group.js.map +1 -1
  49. package/dist/tt-button.d.ts.map +1 -1
  50. package/dist/tt-button.js +37 -28
  51. package/dist/tt-button.js.map +1 -1
  52. package/dist/tt-card.d.ts.map +1 -1
  53. package/dist/tt-card.js +9 -6
  54. package/dist/tt-card.js.map +1 -1
  55. package/dist/tt-chart.d.ts +10 -2
  56. package/dist/tt-chart.d.ts.map +1 -1
  57. package/dist/tt-chart.js +167 -29
  58. package/dist/tt-chart.js.map +1 -1
  59. package/dist/tt-checkbox.d.ts.map +1 -1
  60. package/dist/tt-checkbox.js +5 -2
  61. package/dist/tt-checkbox.js.map +1 -1
  62. package/dist/tt-code-block.d.ts +4 -5
  63. package/dist/tt-code-block.d.ts.map +1 -1
  64. package/dist/tt-code-block.js +53 -17
  65. package/dist/tt-code-block.js.map +1 -1
  66. package/dist/tt-combobox.d.ts +14 -0
  67. package/dist/tt-combobox.d.ts.map +1 -1
  68. package/dist/tt-combobox.js +234 -31
  69. package/dist/tt-combobox.js.map +1 -1
  70. package/dist/tt-company-card.d.ts +18 -0
  71. package/dist/tt-company-card.d.ts.map +1 -1
  72. package/dist/tt-company-card.js +73 -4
  73. package/dist/tt-company-card.js.map +1 -1
  74. package/dist/tt-comparison-table.d.ts.map +1 -1
  75. package/dist/tt-comparison-table.js +6 -3
  76. package/dist/tt-comparison-table.js.map +1 -1
  77. package/dist/tt-component-doc.d.ts.map +1 -1
  78. package/dist/tt-component-doc.js +6 -3
  79. package/dist/tt-component-doc.js.map +1 -1
  80. package/dist/tt-contact-list.d.ts +17 -2
  81. package/dist/tt-contact-list.d.ts.map +1 -1
  82. package/dist/tt-contact-list.js +68 -10
  83. package/dist/tt-contact-list.js.map +1 -1
  84. package/dist/tt-copy-button.d.ts.map +1 -1
  85. package/dist/tt-copy-button.js +6 -3
  86. package/dist/tt-copy-button.js.map +1 -1
  87. package/dist/tt-data-table.d.ts +32 -1
  88. package/dist/tt-data-table.d.ts.map +1 -1
  89. package/dist/tt-data-table.js +302 -16
  90. package/dist/tt-data-table.js.map +1 -1
  91. package/dist/tt-dock-item.d.ts +53 -0
  92. package/dist/tt-dock-item.d.ts.map +1 -0
  93. package/dist/tt-dock-item.js +270 -0
  94. package/dist/tt-dock-item.js.map +1 -0
  95. package/dist/tt-dock.d.ts +59 -0
  96. package/dist/tt-dock.d.ts.map +1 -0
  97. package/dist/tt-dock.js +337 -0
  98. package/dist/tt-dock.js.map +1 -0
  99. package/dist/tt-drawer.d.ts +4 -0
  100. package/dist/tt-drawer.d.ts.map +1 -1
  101. package/dist/tt-drawer.js +14 -4
  102. package/dist/tt-drawer.js.map +1 -1
  103. package/dist/tt-dropdown-menu.d.ts +5 -0
  104. package/dist/tt-dropdown-menu.d.ts.map +1 -1
  105. package/dist/tt-dropdown-menu.js +34 -8
  106. package/dist/tt-dropdown-menu.js.map +1 -1
  107. package/dist/tt-file-upload.d.ts +35 -0
  108. package/dist/tt-file-upload.d.ts.map +1 -1
  109. package/dist/tt-file-upload.js +210 -21
  110. package/dist/tt-file-upload.js.map +1 -1
  111. package/dist/tt-filter.d.ts.map +1 -1
  112. package/dist/tt-filter.js +10 -5
  113. package/dist/tt-filter.js.map +1 -1
  114. package/dist/tt-form.d.ts +25 -1
  115. package/dist/tt-form.d.ts.map +1 -1
  116. package/dist/tt-form.js +151 -12
  117. package/dist/tt-form.js.map +1 -1
  118. package/dist/tt-grid.d.ts +10 -1
  119. package/dist/tt-grid.d.ts.map +1 -1
  120. package/dist/tt-grid.js +38 -9
  121. package/dist/tt-grid.js.map +1 -1
  122. package/dist/tt-icon.d.ts.map +1 -1
  123. package/dist/tt-icon.js +5 -0
  124. package/dist/tt-icon.js.map +1 -1
  125. package/dist/tt-inbox.d.ts +4 -0
  126. package/dist/tt-inbox.d.ts.map +1 -1
  127. package/dist/tt-inbox.js +13 -3
  128. package/dist/tt-inbox.js.map +1 -1
  129. package/dist/tt-input.d.ts.map +1 -1
  130. package/dist/tt-input.js +15 -5
  131. package/dist/tt-input.js.map +1 -1
  132. package/dist/tt-key-values.d.ts +2 -0
  133. package/dist/tt-key-values.d.ts.map +1 -1
  134. package/dist/tt-key-values.js +45 -2
  135. package/dist/tt-key-values.js.map +1 -1
  136. package/dist/tt-layout.d.ts +53 -2
  137. package/dist/tt-layout.d.ts.map +1 -1
  138. package/dist/tt-layout.js +233 -27
  139. package/dist/tt-layout.js.map +1 -1
  140. package/dist/tt-modal.d.ts +4 -0
  141. package/dist/tt-modal.d.ts.map +1 -1
  142. package/dist/tt-modal.js +14 -4
  143. package/dist/tt-modal.js.map +1 -1
  144. package/dist/tt-navbar.d.ts +4 -0
  145. package/dist/tt-navbar.d.ts.map +1 -1
  146. package/dist/tt-navbar.js +42 -7
  147. package/dist/tt-navbar.js.map +1 -1
  148. package/dist/tt-pagination.d.ts +4 -0
  149. package/dist/tt-pagination.d.ts.map +1 -1
  150. package/dist/tt-pagination.js +8 -1
  151. package/dist/tt-pagination.js.map +1 -1
  152. package/dist/tt-product.d.ts +67 -15
  153. package/dist/tt-product.d.ts.map +1 -1
  154. package/dist/tt-product.js +447 -366
  155. package/dist/tt-product.js.map +1 -1
  156. package/dist/tt-progress.d.ts +1 -0
  157. package/dist/tt-progress.d.ts.map +1 -1
  158. package/dist/tt-progress.js +26 -7
  159. package/dist/tt-progress.js.map +1 -1
  160. package/dist/tt-quantity.d.ts.map +1 -1
  161. package/dist/tt-quantity.js +5 -2
  162. package/dist/tt-quantity.js.map +1 -1
  163. package/dist/tt-radio-group.d.ts.map +1 -1
  164. package/dist/tt-radio-group.js +5 -2
  165. package/dist/tt-radio-group.js.map +1 -1
  166. package/dist/tt-scroller.d.ts +76 -0
  167. package/dist/tt-scroller.d.ts.map +1 -0
  168. package/dist/tt-scroller.js +525 -0
  169. package/dist/tt-scroller.js.map +1 -0
  170. package/dist/tt-search.d.ts.map +1 -1
  171. package/dist/tt-search.js +10 -5
  172. package/dist/tt-search.js.map +1 -1
  173. package/dist/tt-select.d.ts +9 -0
  174. package/dist/tt-select.d.ts.map +1 -1
  175. package/dist/tt-select.js +99 -14
  176. package/dist/tt-select.js.map +1 -1
  177. package/dist/tt-slider.d.ts.map +1 -1
  178. package/dist/tt-slider.js +13 -2
  179. package/dist/tt-slider.js.map +1 -1
  180. package/dist/tt-social-links.d.ts.map +1 -1
  181. package/dist/tt-social-links.js +7 -4
  182. package/dist/tt-social-links.js.map +1 -1
  183. package/dist/tt-switcher.d.ts +2 -0
  184. package/dist/tt-switcher.d.ts.map +1 -1
  185. package/dist/tt-switcher.js +24 -76
  186. package/dist/tt-switcher.js.map +1 -1
  187. package/dist/tt-table-row.d.ts.map +1 -1
  188. package/dist/tt-table-row.js +5 -2
  189. package/dist/tt-table-row.js.map +1 -1
  190. package/dist/tt-table.d.ts.map +1 -1
  191. package/dist/tt-table.js +5 -2
  192. package/dist/tt-table.js.map +1 -1
  193. package/dist/tt-tabs.d.ts.map +1 -1
  194. package/dist/tt-tabs.js +5 -2
  195. package/dist/tt-tabs.js.map +1 -1
  196. package/dist/tt-tag-list.d.ts.map +1 -1
  197. package/dist/tt-tag-list.js +6 -3
  198. package/dist/tt-tag-list.js.map +1 -1
  199. package/dist/tt-textarea.d.ts.map +1 -1
  200. package/dist/tt-textarea.js +5 -2
  201. package/dist/tt-textarea.js.map +1 -1
  202. package/dist/tt-toast.d.ts +4 -1
  203. package/dist/tt-toast.d.ts.map +1 -1
  204. package/dist/tt-toast.js +40 -6
  205. package/dist/tt-toast.js.map +1 -1
  206. package/dist/tt-toggle-group.d.ts.map +1 -1
  207. package/dist/tt-toggle-group.js +7 -1
  208. package/dist/tt-toggle-group.js.map +1 -1
  209. package/dist/tt-toggle.d.ts.map +1 -1
  210. package/dist/tt-toggle.js +14 -9
  211. package/dist/tt-toggle.js.map +1 -1
  212. package/package.json +1 -1
  213. package/vscode.html-custom-data.json +241 -66
@@ -10,6 +10,9 @@ let TTKeyValues = class TTKeyValues extends LitElement {
10
10
  constructor() {
11
11
  super(...arguments);
12
12
  this.items = [];
13
+ // Reflected, because the split rules are :host([layout="split"])
14
+ // selectors, and a selector matches an attribute, never a property.
15
+ this.layout = "columns";
13
16
  }
14
17
  static { this.styles = css `
15
18
  /* The browser's own [hidden] rule loses to any :host display, so a
@@ -71,8 +74,12 @@ let TTKeyValues = class TTKeyValues extends LitElement {
71
74
  text-decoration: none;
72
75
  }
73
76
 
74
- dd a:hover {
75
- text-decoration: underline;
77
+ /* Only where the pointer can hover: a tap leaves :hover on until the
78
+ next tap, so the link stayed underlined on a phone. */
79
+ @media (hover: hover) {
80
+ dd a:hover {
81
+ text-decoration: underline;
82
+ }
76
83
  }
77
84
 
78
85
  /*
@@ -104,6 +111,39 @@ let TTKeyValues = class TTKeyValues extends LitElement {
104
111
  margin-top: 0;
105
112
  }
106
113
  }
114
+
115
+ /*
116
+ Split: the label takes what is left, the value is pushed to the end.
117
+
118
+ The value column is auto, so it is as wide as its longest value and
119
+ no wider, and the label column (1fr) gets the rest. On a phone the
120
+ pair stays on one row, which is the point of this layout: the
121
+ numbers line up down the right edge where the eye reads them.
122
+
123
+ The label may wrap here, unlike in columns, where it is nowrap. A
124
+ long label wraps under itself instead of pushing the value off the
125
+ row, and a value too long for what remains wraps at its own end.
126
+
127
+ Each selector outranks the narrow rule's (the :host([layout])
128
+ part adds to it), so a split list stays split in a narrow card.
129
+ */
130
+ :host([layout="split"]) dl {
131
+ grid-template-columns: 1fr auto;
132
+ gap: var(--tt-space-2) var(--tt-space-4);
133
+ align-items: baseline;
134
+ }
135
+
136
+ :host([layout="split"]) dt {
137
+ margin-top: 0;
138
+ font-size: inherit;
139
+ white-space: normal;
140
+ overflow-wrap: break-word;
141
+ }
142
+
143
+ :host([layout="split"]) dd {
144
+ text-align: end;
145
+ font-variant-numeric: tabular-nums;
146
+ }
107
147
  `; }
108
148
  render() {
109
149
  return html `
@@ -119,6 +159,9 @@ let TTKeyValues = class TTKeyValues extends LitElement {
119
159
  __decorate([
120
160
  property({ type: Array })
121
161
  ], TTKeyValues.prototype, "items", void 0);
162
+ __decorate([
163
+ property({ type: String, reflect: true })
164
+ ], TTKeyValues.prototype, "layout", void 0);
122
165
  TTKeyValues = __decorate([
123
166
  customElement("tt-key-values")
124
167
  ], TTKeyValues);
@@ -1 +1 @@
1
- {"version":3,"file":"tt-key-values.js","sourceRoot":"","sources":["../src/tt-key-values.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAUrD,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,UAAU;IAApC;;QAEL,UAAK,GAAe,EAAE,CAAC;IA6GzB,CAAC;aA3GQ,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6FlB,AA7FY,CA6FX;IAEF,MAAM;QACJ,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,KAAK,CAAC,GAAG,CACd,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAA;+BACO,IAAI,CAAC,KAAK;+BACV,IAAI,CAAC,KAAK;WAC9B,CACF;;KAEJ,CAAC;IACJ,CAAC;;AA5GD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;0CACH;AAFZ,WAAW;IADvB,aAAa,CAAC,eAAe,CAAC;GAClB,WAAW,CA+GvB"}
1
+ {"version":3,"file":"tt-key-values.js","sourceRoot":"","sources":["../src/tt-key-values.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAoBrD,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,UAAU;IAApC;;QAEL,UAAK,GAAe,EAAE,CAAC;QAEvB,iEAAiE;QACjE,oEAAoE;QAEpE,WAAM,GAAoB,SAAS,CAAC;IAkJtC,CAAC;aAhJQ,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkIlB,AAlIY,CAkIX;IAEF,MAAM;QACJ,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,KAAK,CAAC,GAAG,CACd,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAA;+BACO,IAAI,CAAC,KAAK;+BACV,IAAI,CAAC,KAAK;WAC9B,CACF;;KAEJ,CAAC;IACJ,CAAC;;AAtJD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;0CACH;AAKvB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;2CACN;AAPzB,WAAW;IADvB,aAAa,CAAC,eAAe,CAAC;GAClB,WAAW,CAyJvB"}
@@ -14,13 +14,64 @@ import { LitElement } from "lit";
14
14
  export interface MenuToggleHost extends HTMLElement {
15
15
  mobileMenuOpen?: boolean;
16
16
  }
17
+ /**
18
+ * The app shell: a navbar across the top, a sidebar down the side and the
19
+ * page beside it, with the sidebar turning into a drawer on a phone.
20
+ *
21
+ * ---------------------------------------------------------------------
22
+ * TWO WAYS TO SCROLL.
23
+ *
24
+ * By default the layout is exactly one screen tall and only the content
25
+ * area scrolls, under a fixed bar and beside a fixed sidebar. That is
26
+ * the whole window, and it is what this app's own shell uses.
27
+ *
28
+ * `contained` keeps the same picture and changes who scrolls: the layout
29
+ * grows with its content and the PAGE scrolls, while the navbar and the
30
+ * sidebar stay pinned with position: sticky. Nothing is placed against
31
+ * the window, the phone drawer included, so a contained layout also
32
+ * works inside something smaller than the window: a preview, a design
33
+ * in the component builder, a page of documentation.
34
+ *
35
+ * ---------------------------------------------------------------------
36
+ * PHONE OR NOT IS ASKED OF THE LAYOUT, NOT THE WINDOW.
37
+ *
38
+ * The host is a size container, and the drawer, the navbar's menu button
39
+ * and the sidebar's drawer rules all ask the same container query (below
40
+ * 768px). A media query asks how wide the WINDOW is, which in a builder
41
+ * canvas drawing a 375px phone on a 1440px screen is the wrong question.
42
+ * The container is the host rather than an element inside it, because
43
+ * WebKit finds containers through the DOM tree, and the navbar and the
44
+ * sidebar are the host's children, not its shadow root's.
45
+ */
17
46
  export declare class TTLayout extends LitElement {
18
- private mobileSidebarOpen;
19
- private closeSidebar;
47
+ /**
48
+ * Grows with its content and lets the page scroll, with the navbar and
49
+ * the sidebar pinned. Reflected, because the styles match on it.
50
+ */
51
+ contained: boolean;
52
+ /**
53
+ * Whether the phone menu (the sidebar drawer) is open. The layout opens
54
+ * and closes it itself: the navbar's menu button, Escape, the backdrop
55
+ * and a click on a menu item. It announces the ones it decides with
56
+ * tt-menu-toggle, the same event the navbar sends for its button, so a
57
+ * listener on the layout hears every change once. Setting it opens or
58
+ * closes the drawer; on a wider screen it changes nothing.
59
+ *
60
+ * Named as on tt-navbar, whose button it keeps in step.
61
+ */
62
+ mobileMenuOpen: boolean;
63
+ private layoutEl?;
64
+ private navbarEl?;
65
+ private backdropEl?;
66
+ private settled;
67
+ private closeMenu;
20
68
  private handleMenuToggle;
21
69
  private handleSidebarMenu;
22
70
  private handleKeydown;
71
+ private barObserver?;
72
+ private observeBar;
23
73
  connectedCallback(): void;
74
+ firstUpdated(): void;
24
75
  private locked;
25
76
  private setLock;
26
77
  disconnectedCallback(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"tt-layout.d.ts","sourceRoot":"","sources":["../src/tt-layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAK5C;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,qBACa,QAAS,SAAQ,UAAU;IAEtC,OAAO,CAAC,iBAAiB,CAAS;IAElC,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,aAAa,CAInB;IAEF,iBAAiB;IAQjB,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,OAAO;IASf,oBAAoB;IAQpB,OAAO;IAaP,MAAM,CAAC,MAAM,0BAiMX;IAEF,MAAM;CA+CP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KACvB;CACF"}
1
+ {"version":3,"file":"tt-layout.d.ts","sourceRoot":"","sources":["../src/tt-layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAK5C;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBACa,QAAS,SAAQ,UAAU;IACtC;;;OAGG;IAEH,SAAS,UAAS;IAElB;;;;;;;;;OASG;IAEH,cAAc,UAAS;IAGvB,OAAO,CAAC,QAAQ,CAAC,CAAc;IAG/B,OAAO,CAAC,QAAQ,CAAC,CAAc;IAG/B,OAAO,CAAC,UAAU,CAAC,CAAc;IAUjC,OAAO,CAAC,OAAO,CAAS;IAMxB,OAAO,CAAC,SAAS;IAqBjB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,aAAa,CAInB;IAQF,OAAO,CAAC,WAAW,CAAC,CAAiB;IAErC,OAAO,CAAC,UAAU;IAYlB,iBAAiB;IASjB,YAAY;IAYZ,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,OAAO;IASf,oBAAoB;IAWpB,OAAO;IAgCP,MAAM,CAAC,MAAM,0BA2RX;IAEF,MAAM;CA+CP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,QAAQ,CAAC;KACvB;CACF"}
package/dist/tt-layout.js CHANGED
@@ -5,23 +5,86 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { LitElement, html, css } from "lit";
8
- import { customElement, state } from "lit/decorators.js";
8
+ import { customElement, property, query, state } from "lit/decorators.js";
9
9
  import { lockScroll, unlockScroll } from "./scroll-lock.js";
10
+ /**
11
+ * The app shell: a navbar across the top, a sidebar down the side and the
12
+ * page beside it, with the sidebar turning into a drawer on a phone.
13
+ *
14
+ * ---------------------------------------------------------------------
15
+ * TWO WAYS TO SCROLL.
16
+ *
17
+ * By default the layout is exactly one screen tall and only the content
18
+ * area scrolls, under a fixed bar and beside a fixed sidebar. That is
19
+ * the whole window, and it is what this app's own shell uses.
20
+ *
21
+ * `contained` keeps the same picture and changes who scrolls: the layout
22
+ * grows with its content and the PAGE scrolls, while the navbar and the
23
+ * sidebar stay pinned with position: sticky. Nothing is placed against
24
+ * the window, the phone drawer included, so a contained layout also
25
+ * works inside something smaller than the window: a preview, a design
26
+ * in the component builder, a page of documentation.
27
+ *
28
+ * ---------------------------------------------------------------------
29
+ * PHONE OR NOT IS ASKED OF THE LAYOUT, NOT THE WINDOW.
30
+ *
31
+ * The host is a size container, and the drawer, the navbar's menu button
32
+ * and the sidebar's drawer rules all ask the same container query (below
33
+ * 768px). A media query asks how wide the WINDOW is, which in a builder
34
+ * canvas drawing a 375px phone on a 1440px screen is the wrong question.
35
+ * The container is the host rather than an element inside it, because
36
+ * WebKit finds containers through the DOM tree, and the navbar and the
37
+ * sidebar are the host's children, not its shadow root's.
38
+ */
10
39
  let TTLayout = class TTLayout extends LitElement {
11
40
  constructor() {
12
41
  super(...arguments);
13
- this.mobileSidebarOpen = false;
42
+ /**
43
+ * Grows with its content and lets the page scroll, with the navbar and
44
+ * the sidebar pinned. Reflected, because the styles match on it.
45
+ */
46
+ this.contained = false;
47
+ /**
48
+ * Whether the phone menu (the sidebar drawer) is open. The layout opens
49
+ * and closes it itself: the navbar's menu button, Escape, the backdrop
50
+ * and a click on a menu item. It announces the ones it decides with
51
+ * tt-menu-toggle, the same event the navbar sends for its button, so a
52
+ * listener on the layout hears every change once. Setting it opens or
53
+ * closes the drawer; on a wider screen it changes nothing.
54
+ *
55
+ * Named as on tt-navbar, whose button it keeps in step.
56
+ */
57
+ this.mobileMenuOpen = false;
58
+ /*
59
+ False until the first two frames have been drawn, and the drawer's
60
+ slide is switched off until then. Firefox styles a new layout once
61
+ without its container query and once with it, and starts transitions
62
+ between the two, so on a phone the closed drawer slid out across the
63
+ page as it loaded.
64
+ */
65
+ this.settled = false;
14
66
  this.handleKeydown = (event) => {
15
- if (event.key === "Escape" && this.mobileSidebarOpen) {
16
- this.closeSidebar();
67
+ if (event.key === "Escape" && this.mobileMenuOpen) {
68
+ this.closeMenu();
17
69
  }
18
70
  };
19
71
  // Whether this element currently holds a scroll lock. The lock is
20
72
  // reference counted, so it has to release exactly what it took.
21
73
  this.locked = false;
22
74
  }
23
- closeSidebar() {
24
- this.mobileSidebarOpen = false;
75
+ /*
76
+ Closes the drawer for a reason the navbar did not see, and says so.
77
+ The navbar's own click is announced by the navbar.
78
+ */
79
+ closeMenu() {
80
+ if (!this.mobileMenuOpen)
81
+ return;
82
+ this.mobileMenuOpen = false;
83
+ this.dispatchEvent(new CustomEvent("tt-menu-toggle", {
84
+ detail: { open: false },
85
+ bubbles: true,
86
+ composed: true,
87
+ }));
25
88
  }
26
89
  /*
27
90
  Takes the state FROM the event rather than flipping independently.
@@ -31,14 +94,33 @@ let TTLayout = class TTLayout extends LitElement {
31
94
  is the single decision and the layout follows it.
32
95
  */
33
96
  handleMenuToggle(event) {
34
- this.mobileSidebarOpen = event.detail.open;
97
+ this.mobileMenuOpen = event.detail.open;
35
98
  }
36
99
  handleSidebarMenu() {
37
- this.closeSidebar();
100
+ this.closeMenu();
101
+ }
102
+ observeBar() {
103
+ if (!this.navbarEl || this.barObserver)
104
+ return;
105
+ this.barObserver = new ResizeObserver(() => {
106
+ // offsetHeight, not a bounding box: a scaled canvas would scale it.
107
+ const height = this.navbarEl?.offsetHeight ?? 0;
108
+ this.layoutEl?.style.setProperty("--_bar", `${height}px`);
109
+ });
110
+ this.barObserver.observe(this.navbarEl);
38
111
  }
39
112
  connectedCallback() {
40
113
  super.connectedCallback();
41
114
  window.addEventListener("keydown", this.handleKeydown);
115
+ // Back in the page after a move: the first render will not run again.
116
+ if (this.hasUpdated)
117
+ this.observeBar();
118
+ }
119
+ firstUpdated() {
120
+ this.observeBar();
121
+ requestAnimationFrame(() => requestAnimationFrame(() => {
122
+ this.settled = true;
123
+ }));
42
124
  }
43
125
  setLock(want) {
44
126
  if (want === this.locked)
@@ -51,11 +133,30 @@ let TTLayout = class TTLayout extends LitElement {
51
133
  }
52
134
  disconnectedCallback() {
53
135
  window.removeEventListener("keydown", this.handleKeydown);
136
+ this.barObserver?.disconnect();
137
+ this.barObserver = undefined;
54
138
  this.setLock(false);
55
139
  super.disconnectedCallback();
56
140
  }
57
141
  updated() {
58
- this.setLock(this.mobileSidebarOpen);
142
+ /*
143
+ A contained layout's page is the window's scroller, so freezing it
144
+ while the drawer is not a drawer (a wider screen, where the menu
145
+ state changes nothing) would freeze the app. The backdrop shows
146
+ only when the drawer is one. The full-window layout scrolls its own
147
+ content area, so for it the page lock is harmless at any width, and
148
+ it keeps the rule it always had.
149
+ */
150
+ const drawer = !this.contained ||
151
+ (this.backdropEl !== undefined &&
152
+ getComputedStyle(this.backdropEl).display !== "none");
153
+ /*
154
+ Only while in the page. An update can still run after the element
155
+ has left it (the settle timer above, a property set late), and a
156
+ lock taken then is never given back: disconnectedCallback has
157
+ already run.
158
+ */
159
+ this.setLock(this.isConnected && this.mobileMenuOpen && drawer);
59
160
  /*
60
161
  Escape and the backdrop can also close the sidebar, and the navbar
61
162
  hears neither: its own click handler is the only thing that would
@@ -64,7 +165,7 @@ let TTLayout = class TTLayout extends LitElement {
64
165
  */
65
166
  const navbar = this.querySelector("tt-navbar");
66
167
  if (navbar)
67
- navbar.mobileMenuOpen = this.mobileSidebarOpen;
168
+ navbar.mobileMenuOpen = this.mobileMenuOpen;
68
169
  }
69
170
  static { this.styles = css `
70
171
  /* The browser's own [hidden] rule loses to any :host display, so a
@@ -76,8 +177,12 @@ let TTLayout = class TTLayout extends LitElement {
76
177
  :host {
77
178
  display: block;
78
179
 
180
+ /* See "phone or not" at the top. Inline size only, so the height
181
+ is still whatever the content makes it. */
182
+ container-type: inline-size;
183
+
79
184
  height: 100vh;
80
- height: 100dvh;
185
+ height: var(--tt-viewport-height, 100dvh);
81
186
 
82
187
  background: var(--tt-background);
83
188
  color: var(--tt-foreground);
@@ -156,17 +261,69 @@ let TTLayout = class TTLayout extends LitElement {
156
261
  display: none;
157
262
  }
158
263
 
159
- /* Mobile */
264
+ /* ---- contained: the page scrolls ----
265
+
266
+ At least one screen tall and otherwise as tall as its content. The
267
+ bar is pinned by the sticky wrapper above; the sidebar is pinned
268
+ just under it and is exactly the rest of the screen, so its footer
269
+ sits on the bottom edge however long or short the page is, and its
270
+ own menu scrolls. The body must not clip (overflow: hidden would
271
+ make it the scroller the sidebar sticks to, and it never scrolls),
272
+ and must not stretch the sidebar to the page's height. */
273
+
274
+ :host([contained]) {
275
+ height: auto;
276
+ }
277
+
278
+ :host([contained]) .layout {
279
+ height: auto;
280
+ min-height: var(--tt-viewport-height, 100dvh);
281
+ }
282
+
283
+ :host([contained]) .body {
284
+ align-items: flex-start;
285
+ overflow: visible;
286
+ }
287
+
288
+ :host([contained]) .sidebar {
289
+ position: sticky;
290
+ top: var(--_bar, 0px);
291
+ height: calc(var(--tt-viewport-height, 100dvh) - var(--_bar, 0px));
292
+ }
293
+
294
+ /* What goes in a contained layout is a designed screen (a page
295
+ header, a grid, a card), not one tt-page that spaces its own
296
+ children, so the content area spaces them, as a page would. */
297
+ :host([contained]) .content {
298
+ display: flex;
299
+ flex-direction: column;
300
+ gap: var(--tt-space-6);
301
+
302
+ overflow: visible;
303
+ scrollbar-gutter: auto;
304
+ }
305
+
306
+ :host([contained]) .content ::slotted(*) {
307
+ min-width: 0;
308
+ }
309
+
310
+ /* ---- phones ----
160
311
 
161
- @media (max-width: 768px) {
162
- :host {
312
+ The host's own height is the one rule that cannot follow the
313
+ container query (a container cannot query itself), so it asks the
314
+ window. For the full-window layout the two are the same width. */
315
+
316
+ @media (width < 768px) {
317
+ :host(:not([contained])) {
163
318
  height: auto;
164
319
  min-height: 100dvh;
165
320
  }
321
+ }
166
322
 
323
+ @container (width < 768px) {
167
324
  .layout {
168
325
  height: auto;
169
- min-height: 100dvh;
326
+ min-height: var(--tt-viewport-height, 100dvh);
170
327
  }
171
328
 
172
329
  .body {
@@ -198,12 +355,12 @@ let TTLayout = class TTLayout extends LitElement {
198
355
  .sidebar {
199
356
  position: fixed;
200
357
 
201
- top: 60px;
358
+ top: var(--_bar, 60px);
202
359
  left: 0;
203
360
  bottom: 0;
204
361
 
205
362
  width: 220px;
206
- max-width: 82vw;
363
+ max-width: 82cqi;
207
364
 
208
365
  z-index: var(--tt-z-drawer);
209
366
 
@@ -218,18 +375,23 @@ let TTLayout = class TTLayout extends LitElement {
218
375
  */
219
376
  visibility: hidden;
220
377
 
221
- transition:
222
- transform var(--tt-duration-slow) var(--tt-ease-out),
223
- visibility 0s linear var(--tt-duration-slow);
224
-
225
378
  box-shadow: var(--tt-elevation-3);
226
379
 
227
380
  will-change: transform;
228
381
  }
229
382
 
383
+ .settled .sidebar {
384
+ transition:
385
+ transform var(--tt-duration-slow) var(--tt-ease-out),
386
+ visibility 0s linear var(--tt-duration-slow);
387
+ }
388
+
230
389
  .sidebar.open {
231
390
  transform: translateX(0);
232
391
  visibility: visible;
392
+ }
393
+
394
+ .settled .sidebar.open {
233
395
  transition: transform var(--tt-duration-slow) var(--tt-ease-out);
234
396
  }
235
397
 
@@ -257,12 +419,41 @@ let TTLayout = class TTLayout extends LitElement {
257
419
 
258
420
  opacity: 1;
259
421
  }
260
- }
261
422
 
423
+ /*
424
+ Contained, nothing may be fixed to the window: in a preview or a
425
+ builder canvas the window is not the screen being drawn. So the
426
+ drawer and the backdrop are STICKY instead, pinned under the bar
427
+ exactly where fixed would put them, and a negative bottom margin
428
+ as tall as they are takes them out of the flow, so the content
429
+ starts where they do. They stay in the layout and follow the
430
+ page as it scrolls.
431
+
432
+ A contained layout pads its content on every side: what goes in
433
+ it is a designed screen, not a tt-page that brings its own
434
+ gutter. A phone's gap is a step smaller, like its gutter.
435
+ */
436
+ :host([contained]) .content {
437
+ padding: var(--tt-space-4);
438
+ gap: var(--tt-space-4);
439
+ }
440
+
441
+ :host([contained]) .sidebar,
442
+ :host([contained]) .backdrop {
443
+ --_screen: calc(var(--tt-viewport-height, 100dvh) - var(--_bar, 0px));
444
+
445
+ position: sticky;
446
+ top: var(--_bar, 0px);
447
+ bottom: auto;
448
+
449
+ height: var(--_screen);
450
+ margin-bottom: calc(-1 * var(--_screen));
451
+ }
452
+ }
262
453
  `; }
263
454
  render() {
264
455
  return html `
265
- <div class="layout" part="layout">
456
+ <div class="layout ${this.settled ? "settled" : ""}" part="layout">
266
457
 
267
458
  <!-- Navbar -->
268
459
 
@@ -276,8 +467,8 @@ let TTLayout = class TTLayout extends LitElement {
276
467
  <!-- Backdrop -->
277
468
 
278
469
  <div
279
- class="backdrop ${this.mobileSidebarOpen ? "show" : ""}"
280
- @click=${this.closeSidebar}
470
+ class="backdrop ${this.mobileMenuOpen ? "show" : ""}"
471
+ @click=${this.closeMenu}
281
472
  ></div>
282
473
 
283
474
  <!-- Main body -->
@@ -288,7 +479,7 @@ let TTLayout = class TTLayout extends LitElement {
288
479
 
289
480
  <aside
290
481
  part="sidebar"
291
- class="sidebar ${this.mobileSidebarOpen ? "open" : ""}"
482
+ class="sidebar ${this.mobileMenuOpen ? "open" : ""}"
292
483
  >
293
484
  <slot
294
485
  name="sidebar"
@@ -308,9 +499,24 @@ let TTLayout = class TTLayout extends LitElement {
308
499
  `;
309
500
  }
310
501
  };
502
+ __decorate([
503
+ property({ type: Boolean, reflect: true })
504
+ ], TTLayout.prototype, "contained", void 0);
505
+ __decorate([
506
+ property({ type: Boolean, attribute: "mobile-menu-open" })
507
+ ], TTLayout.prototype, "mobileMenuOpen", void 0);
508
+ __decorate([
509
+ query(".layout")
510
+ ], TTLayout.prototype, "layoutEl", void 0);
511
+ __decorate([
512
+ query(".navbar")
513
+ ], TTLayout.prototype, "navbarEl", void 0);
514
+ __decorate([
515
+ query(".backdrop")
516
+ ], TTLayout.prototype, "backdropEl", void 0);
311
517
  __decorate([
312
518
  state()
313
- ], TTLayout.prototype, "mobileSidebarOpen", void 0);
519
+ ], TTLayout.prototype, "settled", void 0);
314
520
  TTLayout = __decorate([
315
521
  customElement("tt-layout")
316
522
  ], TTLayout);
@@ -1 +1 @@
1
- {"version":3,"file":"tt-layout.js","sourceRoot":"","sources":["../src/tt-layout.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAmBrD,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,UAAU;IAAjC;;QAEG,sBAAiB,GAAG,KAAK,CAAC;QAqB1B,kBAAa,GAAG,CAAC,KAAoB,EAAE,EAAE;YAC/C,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACrD,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,CAAC;QACH,CAAC,CAAC;QAQF,kEAAkE;QAClE,gEAAgE;QACxD,WAAM,GAAG,KAAK,CAAC;IAkRzB,CAAC;IAnTS,YAAY;QAClB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACjC,CAAC;IAED;;;;;;MAME;IACM,gBAAgB,CAAC,KAAkB;QACzC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IAC7C,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAQD,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACzD,CAAC;IAMO,OAAO,CAAC,IAAa;QAC3B,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM;YAAE,OAAO;QAEjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,IAAI,IAAI;YAAE,UAAU,EAAE,CAAC;;YAClB,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,oBAAoB;QAClB,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAE1D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEpB,KAAK,CAAC,oBAAoB,EAAE,CAAC;IAC/B,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAErC;;;;;UAKE;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAiB,WAAW,CAAC,CAAC;QAC/D,IAAI,MAAM;YAAE,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC;IAC7D,CAAC;aAEM,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiMlB,AAjMY,CAiMX;IAEF,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;;;;8BAQe,IAAI,CAAC,gBAAgB;;;;;;;4BAOvB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;mBAC7C,IAAI,CAAC,YAAY;;;;;;;;;;;6BAWP,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;;;;+BAIlC,IAAI,CAAC,iBAAiB;;;;;;;;;;;;;KAahD,CAAC;IACJ,CAAC;;AApTO;IADP,KAAK,EAAE;mDAC0B;AAFvB,QAAQ;IADpB,aAAa,CAAC,WAAW,CAAC;GACd,QAAQ,CAuTpB"}
1
+ {"version":3,"file":"tt-layout.js","sourceRoot":"","sources":["../src/tt-layout.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,12 @@
1
1
  import { LitElement } from "lit";
2
2
  import type { PropertyValues } from "lit";
3
3
  import "./tt-icon.js";
4
+ import type { TTStrings } from "./strings.js";
4
5
  export type ModalSize = "small" | "medium" | "large";
5
6
  export declare class TTModal extends LitElement {
7
+ /** This component's own text, over setStrings() (see strings.ts). */
8
+ strings: Partial<TTStrings>;
9
+ private text;
6
10
  open: boolean;
7
11
  heading: string;
8
12
  size: ModalSize;
@@ -1 +1 @@
1
- {"version":3,"file":"tt-modal.d.ts","sourceRoot":"","sources":["../src/tt-modal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAO1C,OAAO,cAAc,CAAC;AAEtB,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErD,qBACa,OAAQ,SAAQ,UAAU;IAIrC,IAAI,UAAS;IAKb,OAAO,SAAM;IAGb,IAAI,EAAE,SAAS,CAAY;IAS3B,UAAU,UAAS;IAInB,OAAO,UAAS;IAEhB,OAAO,CAAC,WAAW,CAA4B;IAQtC,OAAO,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,UAAU,CAAC,CAAa;IAEhC,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,iBAAiB;IAQzB,iBAAiB;IAWjB,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,OAAO;IASf,oBAAoB;IAapB,UAAU,CAAC,OAAO,EAAE,cAAc;IAYlC,OAAO,CAAC,OAAO,EAAE,cAAc;IA2D/B,OAAO,CAAC,aAAa,CA4BnB;IAEF,MAAM,CAAC,MAAM,0BAwSX;IAEF,MAAM;CAmDP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}
1
+ {"version":3,"file":"tt-modal.d.ts","sourceRoot":"","sources":["../src/tt-modal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAO1C,OAAO,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErD,qBACa,OAAQ,SAAQ,UAAU;IACrC,qEAAqE;IACrC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAM;IAEjE,OAAO,CAAC,IAAI,CAA+B;IAK3C,IAAI,UAAS;IAKb,OAAO,SAAM;IAGb,IAAI,EAAE,SAAS,CAAY;IAS3B,UAAU,UAAS;IAInB,OAAO,UAAS;IAEhB,OAAO,CAAC,WAAW,CAA4B;IAQtC,OAAO,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,UAAU,CAAC,CAAa;IAEhC,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,iBAAiB;IAQzB,iBAAiB;IAWjB,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,OAAO;IASf,oBAAoB;IAapB,UAAU,CAAC,OAAO,EAAE,cAAc;IAYlC,OAAO,CAAC,OAAO,EAAE,cAAc;IA2D/B,OAAO,CAAC,aAAa,CA4BnB;IAEF,MAAM,CAAC,MAAM,0BA2SX;IAEF,MAAM;CAmDP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,UAAU,EAAE,OAAO,CAAC;KACrB;CACF"}
package/dist/tt-modal.js CHANGED
@@ -10,9 +10,13 @@ import { lockScroll, unlockScroll } from "./scroll-lock.js";
10
10
  import { deepActiveElement, pushOverlay, removeOverlay, isTopOverlay, trapTab } from "./overlay.js";
11
11
  import { afterTransitions } from "./motion.js";
12
12
  import "./tt-icon.js";
13
+ import { StringsController } from "./strings.js";
13
14
  let TTModal = class TTModal extends LitElement {
14
15
  constructor() {
15
16
  super(...arguments);
17
+ /** This component's own text, over setStrings() (see strings.ts). */
18
+ this.strings = {};
19
+ this.text = new StringsController(this);
16
20
  // Reflected, like open on tt-drawer and every other disclosure, so
17
21
  // tt-modal[open] works as a selector.
18
22
  this.open = false;
@@ -400,9 +404,12 @@ let TTModal = class TTModal extends LitElement {
400
404
  color var(--tt-duration-normal) var(--tt-ease);
401
405
  }
402
406
 
403
- .close:hover {
404
- background: var(--tt-accent);
405
- color: var(--_foreground);
407
+ /* Only where a pointer can hover: a tap would leave this on. */
408
+ @media (hover: hover) {
409
+ .close:hover {
410
+ background: var(--tt-accent);
411
+ color: var(--_foreground);
412
+ }
406
413
  }
407
414
 
408
415
  .close:focus-visible {
@@ -507,7 +514,7 @@ let TTModal = class TTModal extends LitElement {
507
514
  <button
508
515
  part="close"
509
516
  class="close"
510
- aria-label="Close"
517
+ aria-label=${this.text.get("close")}
511
518
  @click=${this.closeModal}
512
519
  >
513
520
  <tt-icon name="x" size="16px"></tt-icon>
@@ -528,6 +535,9 @@ let TTModal = class TTModal extends LitElement {
528
535
  `;
529
536
  }
530
537
  };
538
+ __decorate([
539
+ property({ attribute: false })
540
+ ], TTModal.prototype, "strings", void 0);
531
541
  __decorate([
532
542
  property({ type: Boolean, reflect: true })
533
543
  ], TTModal.prototype, "open", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"tt-modal.js","sourceRoot":"","sources":["../src/tt-modal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tt-modal.js","sourceRoot":"","sources":["../src/tt-modal.ts"],"names":[],"mappings":"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"}