tyrell-components 1.0.0-RC11 → 1.0.0-RC13

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 (240) hide show
  1. package/README.md +1 -0
  2. package/css/tyrell-colors-static.css +316 -0
  3. package/css/tyrell-theme.css +1454 -0
  4. package/css/tyrell.css +112 -420
  5. package/dist/tyrell-colors-static.css +316 -0
  6. package/dist/tyrell-theme.css +1454 -0
  7. package/dist/tyrell.css +112 -420
  8. package/dist/tyrell.js +1 -1
  9. package/lib/base/ty-component.d.ts +7 -0
  10. package/lib/base/ty-component.d.ts.map +1 -1
  11. package/lib/base/ty-component.js +27 -0
  12. package/lib/base/ty-component.js.map +1 -1
  13. package/lib/components/button.d.ts +16 -1
  14. package/lib/components/button.d.ts.map +1 -1
  15. package/lib/components/button.js +34 -4
  16. package/lib/components/button.js.map +1 -1
  17. package/lib/components/calendar-month.d.ts +23 -0
  18. package/lib/components/calendar-month.d.ts.map +1 -1
  19. package/lib/components/calendar-month.js +168 -11
  20. package/lib/components/calendar-month.js.map +1 -1
  21. package/lib/components/calendar-navigation.d.ts +31 -5
  22. package/lib/components/calendar-navigation.d.ts.map +1 -1
  23. package/lib/components/calendar-navigation.js +71 -31
  24. package/lib/components/calendar-navigation.js.map +1 -1
  25. package/lib/components/calendar.d.ts +17 -2
  26. package/lib/components/calendar.d.ts.map +1 -1
  27. package/lib/components/calendar.js +83 -12
  28. package/lib/components/calendar.js.map +1 -1
  29. package/lib/components/checkbox.d.ts +14 -3
  30. package/lib/components/checkbox.d.ts.map +1 -1
  31. package/lib/components/checkbox.js +86 -57
  32. package/lib/components/checkbox.js.map +1 -1
  33. package/lib/components/copy.d.ts +14 -3
  34. package/lib/components/copy.d.ts.map +1 -1
  35. package/lib/components/copy.js +47 -25
  36. package/lib/components/copy.js.map +1 -1
  37. package/lib/components/date-picker.d.ts +26 -1
  38. package/lib/components/date-picker.d.ts.map +1 -1
  39. package/lib/components/date-picker.js +151 -32
  40. package/lib/components/date-picker.js.map +1 -1
  41. package/lib/components/input.d.ts +17 -2
  42. package/lib/components/input.d.ts.map +1 -1
  43. package/lib/components/input.js +104 -25
  44. package/lib/components/input.js.map +1 -1
  45. package/lib/components/modal.d.ts.map +1 -1
  46. package/lib/components/modal.js +28 -3
  47. package/lib/components/modal.js.map +1 -1
  48. package/lib/components/option.d.ts +0 -27
  49. package/lib/components/option.d.ts.map +1 -1
  50. package/lib/components/option.js +11 -102
  51. package/lib/components/option.js.map +1 -1
  52. package/lib/components/popup.d.ts.map +1 -1
  53. package/lib/components/popup.js +36 -2
  54. package/lib/components/popup.js.map +1 -1
  55. package/lib/components/radio.d.ts +6 -2
  56. package/lib/components/radio.d.ts.map +1 -1
  57. package/lib/components/radio.js +55 -13
  58. package/lib/components/radio.js.map +1 -1
  59. package/lib/components/scroll-container.d.ts +16 -0
  60. package/lib/components/scroll-container.d.ts.map +1 -1
  61. package/lib/components/scroll-container.js +105 -1
  62. package/lib/components/scroll-container.js.map +1 -1
  63. package/lib/components/select.d.ts +550 -0
  64. package/lib/components/select.d.ts.map +1 -0
  65. package/lib/components/select.js +2115 -0
  66. package/lib/components/select.js.map +1 -0
  67. package/lib/components/selected-tags.d.ts +93 -0
  68. package/lib/components/selected-tags.d.ts.map +1 -0
  69. package/lib/components/selected-tags.js +286 -0
  70. package/lib/components/selected-tags.js.map +1 -0
  71. package/lib/components/switch.d.ts +6 -3
  72. package/lib/components/switch.d.ts.map +1 -1
  73. package/lib/components/switch.js +54 -36
  74. package/lib/components/switch.js.map +1 -1
  75. package/lib/components/tabs.d.ts.map +1 -1
  76. package/lib/components/tabs.js +190 -25
  77. package/lib/components/tabs.js.map +1 -1
  78. package/lib/components/tag.d.ts +9 -1
  79. package/lib/components/tag.d.ts.map +1 -1
  80. package/lib/components/tag.js +41 -5
  81. package/lib/components/tag.js.map +1 -1
  82. package/lib/components/textarea.d.ts +3 -0
  83. package/lib/components/textarea.d.ts.map +1 -1
  84. package/lib/components/textarea.js +61 -6
  85. package/lib/components/textarea.js.map +1 -1
  86. package/lib/components/tooltip.d.ts +4 -2
  87. package/lib/components/tooltip.d.ts.map +1 -1
  88. package/lib/components/tooltip.js +109 -70
  89. package/lib/components/tooltip.js.map +1 -1
  90. package/lib/components/wizard.d.ts.map +1 -1
  91. package/lib/components/wizard.js +22 -3
  92. package/lib/components/wizard.js.map +1 -1
  93. package/lib/index.d.ts +3 -2
  94. package/lib/index.d.ts.map +1 -1
  95. package/lib/index.js +3 -2
  96. package/lib/index.js.map +1 -1
  97. package/lib/styles/button.d.ts +41 -6
  98. package/lib/styles/button.d.ts.map +1 -1
  99. package/lib/styles/button.js +294 -254
  100. package/lib/styles/button.js.map +1 -1
  101. package/lib/styles/calendar-month.d.ts +3 -1
  102. package/lib/styles/calendar-month.d.ts.map +1 -1
  103. package/lib/styles/calendar-month.js +100 -67
  104. package/lib/styles/calendar-month.js.map +1 -1
  105. package/lib/styles/calendar-navigation.d.ts +1 -1
  106. package/lib/styles/calendar-navigation.d.ts.map +1 -1
  107. package/lib/styles/calendar-navigation.js +20 -28
  108. package/lib/styles/calendar-navigation.js.map +1 -1
  109. package/lib/styles/checkbox.d.ts +7 -5
  110. package/lib/styles/checkbox.d.ts.map +1 -1
  111. package/lib/styles/checkbox.js +125 -8
  112. package/lib/styles/checkbox.js.map +1 -1
  113. package/lib/styles/copy.d.ts +3 -1
  114. package/lib/styles/copy.d.ts.map +1 -1
  115. package/lib/styles/copy.js +61 -6
  116. package/lib/styles/copy.js.map +1 -1
  117. package/lib/styles/custom-scrollbar.d.ts +1 -1
  118. package/lib/styles/custom-scrollbar.d.ts.map +1 -1
  119. package/lib/styles/custom-scrollbar.js +2 -2
  120. package/lib/styles/date-picker.d.ts +3 -1
  121. package/lib/styles/date-picker.d.ts.map +1 -1
  122. package/lib/styles/date-picker.js +65 -103
  123. package/lib/styles/date-picker.js.map +1 -1
  124. package/lib/styles/file-upload.d.ts +1 -1
  125. package/lib/styles/file-upload.d.ts.map +1 -1
  126. package/lib/styles/file-upload.js +3 -3
  127. package/lib/styles/input.d.ts +3 -1
  128. package/lib/styles/input.d.ts.map +1 -1
  129. package/lib/styles/input.js +93 -419
  130. package/lib/styles/input.js.map +1 -1
  131. package/lib/styles/multiselect.d.ts +3 -1
  132. package/lib/styles/multiselect.d.ts.map +1 -1
  133. package/lib/styles/multiselect.js +26 -2
  134. package/lib/styles/multiselect.js.map +1 -1
  135. package/lib/styles/option.d.ts +1 -1
  136. package/lib/styles/option.d.ts.map +1 -1
  137. package/lib/styles/option.js +20 -47
  138. package/lib/styles/option.js.map +1 -1
  139. package/lib/styles/radio.d.ts +3 -1
  140. package/lib/styles/radio.d.ts.map +1 -1
  141. package/lib/styles/radio.js +24 -21
  142. package/lib/styles/radio.js.map +1 -1
  143. package/lib/styles/scroll-container.d.ts +1 -1
  144. package/lib/styles/scroll-container.d.ts.map +1 -1
  145. package/lib/styles/scroll-container.js +6 -0
  146. package/lib/styles/scroll-container.js.map +1 -1
  147. package/lib/styles/select-base.d.ts +9 -0
  148. package/lib/styles/select-base.d.ts.map +1 -0
  149. package/lib/styles/select-base.js +973 -0
  150. package/lib/styles/select-base.js.map +1 -0
  151. package/lib/styles/select.d.ts +12 -0
  152. package/lib/styles/select.d.ts.map +1 -0
  153. package/lib/styles/select.js +308 -0
  154. package/lib/styles/select.js.map +1 -0
  155. package/lib/styles/step.d.ts +1 -1
  156. package/lib/styles/step.d.ts.map +1 -1
  157. package/lib/styles/switch.d.ts +3 -1
  158. package/lib/styles/switch.d.ts.map +1 -1
  159. package/lib/styles/switch.js +25 -10
  160. package/lib/styles/switch.js.map +1 -1
  161. package/lib/styles/tab.d.ts +1 -1
  162. package/lib/styles/tab.d.ts.map +1 -1
  163. package/lib/styles/tabs.d.ts +1 -1
  164. package/lib/styles/tabs.d.ts.map +1 -1
  165. package/lib/styles/tabs.js +71 -1
  166. package/lib/styles/tabs.js.map +1 -1
  167. package/lib/styles/tag.d.ts +1 -1
  168. package/lib/styles/tag.d.ts.map +1 -1
  169. package/lib/styles/tag.js +40 -141
  170. package/lib/styles/tag.js.map +1 -1
  171. package/lib/styles/textarea.d.ts +1 -1
  172. package/lib/styles/textarea.d.ts.map +1 -1
  173. package/lib/styles/textarea.js +71 -37
  174. package/lib/styles/textarea.js.map +1 -1
  175. package/lib/styles/tooltip.d.ts +4 -2
  176. package/lib/styles/tooltip.d.ts.map +1 -1
  177. package/lib/styles/tooltip.js +4 -119
  178. package/lib/styles/tooltip.js.map +1 -1
  179. package/lib/styles/wizard.d.ts +1 -1
  180. package/lib/styles/wizard.d.ts.map +1 -1
  181. package/lib/styles/wizard.js +18 -6
  182. package/lib/styles/wizard.js.map +1 -1
  183. package/lib/types/common.d.ts +2 -1
  184. package/lib/types/common.d.ts.map +1 -1
  185. package/lib/types/common.js +15 -1
  186. package/lib/types/common.js.map +1 -1
  187. package/lib/utils/calendar-utils.d.ts +0 -48
  188. package/lib/utils/calendar-utils.d.ts.map +1 -1
  189. package/lib/utils/calendar-utils.js +0 -69
  190. package/lib/utils/calendar-utils.js.map +1 -1
  191. package/lib/utils/flavor-sheet.d.ts +32 -0
  192. package/lib/utils/flavor-sheet.d.ts.map +1 -0
  193. package/lib/utils/flavor-sheet.js +40 -0
  194. package/lib/utils/flavor-sheet.js.map +1 -0
  195. package/lib/utils/icon-registry.d.ts +0 -13
  196. package/lib/utils/icon-registry.d.ts.map +1 -1
  197. package/lib/utils/icon-registry.js +0 -35
  198. package/lib/utils/icon-registry.js.map +1 -1
  199. package/lib/utils/icons.d.ts +10 -0
  200. package/lib/utils/icons.d.ts.map +1 -0
  201. package/lib/utils/icons.js +10 -0
  202. package/lib/utils/icons.js.map +1 -0
  203. package/lib/utils/loader-registry.d.ts +2 -2
  204. package/lib/utils/loader-registry.js +2 -2
  205. package/lib/utils/locale.d.ts +0 -57
  206. package/lib/utils/locale.d.ts.map +1 -1
  207. package/lib/utils/locale.js +0 -89
  208. package/lib/utils/locale.js.map +1 -1
  209. package/lib/utils/number-format.d.ts +0 -21
  210. package/lib/utils/number-format.d.ts.map +1 -1
  211. package/lib/utils/number-format.js +0 -27
  212. package/lib/utils/number-format.js.map +1 -1
  213. package/lib/utils/positioning.d.ts +29 -22
  214. package/lib/utils/positioning.d.ts.map +1 -1
  215. package/lib/utils/positioning.js +23 -87
  216. package/lib/utils/positioning.js.map +1 -1
  217. package/lib/utils/scroll-lock.d.ts.map +1 -1
  218. package/lib/utils/scroll-lock.js +0 -1
  219. package/lib/utils/scroll-lock.js.map +1 -1
  220. package/lib/utils/styles.d.ts +0 -5
  221. package/lib/utils/styles.d.ts.map +1 -1
  222. package/lib/utils/styles.js +0 -7
  223. package/lib/utils/styles.js.map +1 -1
  224. package/lib/version.d.ts +1 -1
  225. package/lib/version.js +1 -1
  226. package/package.json +22 -11
  227. package/css/tyrell-brand.css +0 -913
  228. package/dist/tyrell-brand.css +0 -913
  229. package/lib/components/dropdown.d.ts +0 -424
  230. package/lib/components/dropdown.d.ts.map +0 -1
  231. package/lib/components/dropdown.js +0 -1640
  232. package/lib/components/dropdown.js.map +0 -1
  233. package/lib/components/multiselect.d.ts +0 -397
  234. package/lib/components/multiselect.d.ts.map +0 -1
  235. package/lib/components/multiselect.js +0 -1595
  236. package/lib/components/multiselect.js.map +0 -1
  237. package/lib/styles/dropdown.d.ts +0 -12
  238. package/lib/styles/dropdown.d.ts.map +0 -1
  239. package/lib/styles/dropdown.js +0 -1081
  240. package/lib/styles/dropdown.js.map +0 -1
@@ -19,7 +19,10 @@ export declare class TyScrollContainer extends HTMLElement {
19
19
  private _shadowRight;
20
20
  private _scrollbar;
21
21
  private _resizeObserver;
22
+ private _contentObserver;
22
23
  private _rafId;
24
+ private _nearStartFired;
25
+ private _nearEndFired;
23
26
  static get observedAttributes(): string[];
24
27
  get shadow(): boolean;
25
28
  set shadow(value: boolean);
@@ -31,21 +34,34 @@ export declare class TyScrollContainer extends HTMLElement {
31
34
  set customScrollbar(value: boolean);
32
35
  get overflowX(): boolean;
33
36
  set overflowX(value: boolean);
37
+ /** Distance (px) from an edge at which nearstart/nearend fire. Default 100. */
38
+ get nearEdgeThreshold(): number;
39
+ set nearEdgeThreshold(value: number | null);
40
+ /** Preserve visual position when content is added above the viewport
41
+ * (e.g. prepending older messages in a chat). Opt-in. */
42
+ get scrollAnchoring(): boolean;
43
+ set scrollAnchoring(value: boolean);
34
44
  constructor();
35
45
  connectedCallback(): void;
36
46
  disconnectedCallback(): void;
37
47
  attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
48
+ private _setupAnchoring;
49
+ private _teardownAnchoring;
38
50
  private _setupScrollbar;
39
51
  private _destroyScrollbar;
40
52
  private _updateMaxHeight;
41
53
  private _onScroll;
42
54
  private _onSlotChange;
43
55
  private _updateShadowState;
56
+ /** Edge-trigger one near-edge event; returns the new "fired" state. */
57
+ private _maybeEmitEdge;
44
58
  updateShadows(): void;
45
59
  scrollToTop(smooth?: boolean): void;
46
60
  scrollToBottom(smooth?: boolean): void;
47
61
  scrollToLeft(smooth?: boolean): void;
48
62
  scrollToRight(smooth?: boolean): void;
63
+ /** Scroll a slotted descendant (element or CSS selector) into view. */
64
+ scrollToElement(target: Element | string, smooth?: boolean): void;
49
65
  get scrollElement(): HTMLElement | null;
50
66
  }
51
67
  //# sourceMappingURL=scroll-container.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-container.d.ts","sourceRoot":"","sources":["../../src/components/scroll-container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,MAAM,CAAsB;IAEpC,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAExC;IAID,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,EAGxB;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,CAE7B;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAIjC;IAED,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,EAG/B;IAED,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,EAGjC;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,EAG3B;;IA2BD,iBAAiB,IAAI,IAAI;IAsBzB,oBAAoB,IAAI,IAAI;IAe5B,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAkB9F,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,SAAS,CAOhB;IAED,OAAO,CAAC,aAAa,CAGpB;IAID,OAAO,CAAC,kBAAkB;IAwB1B,aAAa,IAAI,IAAI;IAKrB,WAAW,CAAC,MAAM,UAAO,GAAG,IAAI;IAIhC,cAAc,CAAC,MAAM,UAAO,GAAG,IAAI;IAMnC,YAAY,CAAC,MAAM,UAAO,GAAG,IAAI;IAIjC,aAAa,CAAC,MAAM,UAAO,GAAG,IAAI;IAMlC,IAAI,aAAa,IAAI,WAAW,GAAG,IAAI,CAEtC;CACF"}
1
+ {"version":3,"file":"scroll-container.d.ts","sourceRoot":"","sources":["../../src/components/scroll-container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,MAAM,CAAsB;IAEpC,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,aAAa,CAAQ;IAE7B,MAAM,KAAK,kBAAkB,IAAI,MAAM,EAAE,CAExC;IAID,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,EAGxB;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,CAE7B;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAIjC;IAED,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,EAG/B;IAED,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,EAGjC;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,EAG3B;IAED,+EAA+E;IAC/E,IAAI,iBAAiB,IAAI,MAAM,CAG9B;IAED,IAAI,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAGzC;IAED;8DAC0D;IAC1D,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,EAGjC;;IA2BD,iBAAiB,IAAI,IAAI;IAuBzB,oBAAoB,IAAI,IAAI;IAgB5B,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IA4B9F,OAAO,CAAC,eAAe;IAwBvB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,SAAS,CAOhB;IAED,OAAO,CAAC,aAAa,CAGpB;IAID,OAAO,CAAC,kBAAkB;IA0C1B,uEAAuE;IACvE,OAAO,CAAC,cAAc;IAYtB,aAAa,IAAI,IAAI;IAKrB,WAAW,CAAC,MAAM,UAAO,GAAG,IAAI;IAIhC,cAAc,CAAC,MAAM,UAAO,GAAG,IAAI;IAMnC,YAAY,CAAC,MAAM,UAAO,GAAG,IAAI;IAIjC,aAAa,CAAC,MAAM,UAAO,GAAG,IAAI;IAMlC,uEAAuE;IACvE,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,MAAM,UAAO,GAAG,IAAI;IAK9D,IAAI,aAAa,IAAI,WAAW,GAAG,IAAI,CAEtC;CACF"}
@@ -16,7 +16,7 @@ import { scrollContainerStyles } from '../styles/scroll-container.js';
16
16
  import { CustomScrollbar } from '../utils/custom-scrollbar.js';
17
17
  export class TyScrollContainer extends HTMLElement {
18
18
  static get observedAttributes() {
19
- return ['shadow', 'max-height', 'hide-scrollbar', 'custom-scrollbar', 'overflow-x'];
19
+ return ['shadow', 'max-height', 'hide-scrollbar', 'custom-scrollbar', 'overflow-x', 'scroll-anchoring'];
20
20
  }
21
21
  // ============ Property Accessors ============
22
22
  get shadow() {
@@ -65,6 +65,28 @@ export class TyScrollContainer extends HTMLElement {
65
65
  else
66
66
  this.removeAttribute('overflow-x');
67
67
  }
68
+ /** Distance (px) from an edge at which nearstart/nearend fire. Default 100. */
69
+ get nearEdgeThreshold() {
70
+ const v = parseInt(this.getAttribute('near-edge-threshold') || '', 10);
71
+ return Number.isFinite(v) ? v : 100;
72
+ }
73
+ set nearEdgeThreshold(value) {
74
+ if (value == null)
75
+ this.removeAttribute('near-edge-threshold');
76
+ else
77
+ this.setAttribute('near-edge-threshold', String(value));
78
+ }
79
+ /** Preserve visual position when content is added above the viewport
80
+ * (e.g. prepending older messages in a chat). Opt-in. */
81
+ get scrollAnchoring() {
82
+ return this.hasAttribute('scroll-anchoring');
83
+ }
84
+ set scrollAnchoring(value) {
85
+ if (value)
86
+ this.setAttribute('scroll-anchoring', '');
87
+ else
88
+ this.removeAttribute('scroll-anchoring');
89
+ }
68
90
  constructor() {
69
91
  super();
70
92
  this._scrollWrapper = null;
@@ -74,7 +96,11 @@ export class TyScrollContainer extends HTMLElement {
74
96
  this._shadowRight = null;
75
97
  this._scrollbar = null;
76
98
  this._resizeObserver = null;
99
+ this._contentObserver = null;
77
100
  this._rafId = null;
101
+ // Edge-trigger state for nearstart/nearend (fire once on entering the zone).
102
+ this._nearStartFired = false;
103
+ this._nearEndFired = false;
78
104
  // ============ Private: Scroll Handling ============
79
105
  this._onScroll = () => {
80
106
  if (this._rafId !== null)
@@ -123,10 +149,12 @@ export class TyScrollContainer extends HTMLElement {
123
149
  this._updateMaxHeight();
124
150
  this._updateShadowState();
125
151
  this._setupScrollbar();
152
+ this._setupAnchoring();
126
153
  }
127
154
  disconnectedCallback() {
128
155
  this._scrollWrapper?.removeEventListener('scroll', this._onScroll);
129
156
  this._destroyScrollbar();
157
+ this._teardownAnchoring();
130
158
  if (this._resizeObserver) {
131
159
  this._resizeObserver.disconnect();
132
160
  this._resizeObserver = null;
@@ -149,9 +177,55 @@ export class TyScrollContainer extends HTMLElement {
149
177
  this._setupScrollbar();
150
178
  this._updateShadowState();
151
179
  }
180
+ if (name === 'scroll-anchoring') {
181
+ this._teardownAnchoring();
182
+ this._setupAnchoring();
183
+ }
184
+ }
185
+ // ============ Private: Scroll Anchoring ============
186
+ // Preserve visual position when content is added ABOVE the viewport (chat
187
+ // "load older" prepends). A MutationObserver watches the host's children;
188
+ // any added node sitting above the visible area shifts everything down, so we
189
+ // add its (above-the-fold) height back to scrollTop. Append-at-bottom is
190
+ // untouched. CSS sets overflow-anchor:none so native anchoring doesn't fight us.
191
+ _setupAnchoring() {
192
+ if (this._contentObserver || !this.scrollAnchoring)
193
+ return;
194
+ this._contentObserver = new MutationObserver((records) => {
195
+ const wrap = this._scrollWrapper;
196
+ if (!wrap)
197
+ return;
198
+ const wrapTop = wrap.getBoundingClientRect().top;
199
+ let addedAbove = 0;
200
+ for (const r of records) {
201
+ r.addedNodes.forEach((n) => {
202
+ if (n.nodeType !== Node.ELEMENT_NODE)
203
+ return;
204
+ const rect = n.getBoundingClientRect();
205
+ if (rect.bottom <= wrapTop)
206
+ addedAbove += rect.height; // fully above
207
+ else if (rect.top < wrapTop)
208
+ addedAbove += wrapTop - rect.top; // partly above
209
+ });
210
+ }
211
+ if (addedAbove > 0) {
212
+ wrap.scrollTop += addedAbove;
213
+ this._scrollbar?.update();
214
+ }
215
+ });
216
+ this._contentObserver.observe(this, { childList: true });
217
+ }
218
+ _teardownAnchoring() {
219
+ this._contentObserver?.disconnect();
220
+ this._contentObserver = null;
152
221
  }
153
222
  // ============ Private: Scrollbar Setup ============
154
223
  _setupScrollbar() {
224
+ // Idempotent: attributeChangedCallback (attrs set before insertion) and
225
+ // connectedCallback can both call this. Without the guard a second
226
+ // CustomScrollbar + track is created → two thumbs.
227
+ if (this._scrollbar)
228
+ return;
155
229
  if (!this._scrollWrapper || !this.customScrollbar)
156
230
  return;
157
231
  this._scrollbar = new CustomScrollbar(this._scrollWrapper, {
@@ -208,6 +282,31 @@ export class TyScrollContainer extends HTMLElement {
208
282
  this._shadowRight.classList.toggle('visible', scrollLeft + clientWidth < scrollWidth - threshold);
209
283
  }
210
284
  }
285
+ // Near-edge events for infinite scroll (vertical). Edge-triggered: fire once
286
+ // when entering the zone, re-arm only after leaving it. Runs on scroll,
287
+ // slotchange and resize (all route through here), so loading more content
288
+ // re-arms naturally once it grows the scroll distance.
289
+ const scrollable = scrollHeight - clientHeight;
290
+ if (scrollable > 0) {
291
+ const t = this.nearEdgeThreshold;
292
+ const distEnd = scrollable - scrollTop;
293
+ this._nearEndFired = this._maybeEmitEdge('nearend', distEnd, t, this._nearEndFired, { distance: distEnd, scrollTop, scrollHeight, clientHeight });
294
+ this._nearStartFired = this._maybeEmitEdge('nearstart', scrollTop, t, this._nearStartFired, { distance: scrollTop, scrollTop, scrollHeight, clientHeight });
295
+ }
296
+ else {
297
+ // Not scrollable → re-arm both so they fire fresh once content overflows.
298
+ this._nearStartFired = false;
299
+ this._nearEndFired = false;
300
+ }
301
+ }
302
+ /** Edge-trigger one near-edge event; returns the new "fired" state. */
303
+ _maybeEmitEdge(name, distance, threshold, fired, detail) {
304
+ if (distance > threshold)
305
+ return false; // out of zone → re-arm
306
+ if (!fired) {
307
+ this.dispatchEvent(new CustomEvent(name, { detail, bubbles: true, composed: true }));
308
+ }
309
+ return true;
211
310
  }
212
311
  // ============ Public API ============
213
312
  updateShadows() {
@@ -230,6 +329,11 @@ export class TyScrollContainer extends HTMLElement {
230
329
  this._scrollWrapper.scrollTo({ left: this._scrollWrapper.scrollWidth, behavior: smooth ? 'smooth' : 'auto' });
231
330
  }
232
331
  }
332
+ /** Scroll a slotted descendant (element or CSS selector) into view. */
333
+ scrollToElement(target, smooth = true) {
334
+ const el = typeof target === 'string' ? this.querySelector(target) : target;
335
+ el?.scrollIntoView({ behavior: smooth ? 'smooth' : 'auto', block: 'nearest' });
336
+ }
233
337
  get scrollElement() {
234
338
  return this._scrollWrapper;
235
339
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-container.js","sourceRoot":"","sources":["../../src/components/scroll-container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scroll-container.js","sourceRoot":"","sources":["../../src/components/scroll-container.ts"],"names":[],"mappings":"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"}