@ajuarezso/sui-design-system 0.11.3 → 0.11.4

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.
@@ -10945,38 +10945,29 @@ class SuiModalSheet {
10945
10945
  }
10946
10946
  this.lastMoveY = event.clientY;
10947
10947
  this.lastMoveTime = now;
10948
- /* Patrón scroll-then-drag canon iOS / X / Apple Maps. Importante: NO
10949
- desarmamos `bodyDragArmed` cuando el body está scrolleando — re-evaluamos
10950
- la velocity en cada move para detectar fling tardío. Si el user empieza
10951
- scrolleando lento y luego "flicka" rápido abajo, igual debe colapsar. */
10948
+ /* Patrón scroll-then-drag: con contenido scrolleado (scrollTop > 0) el
10949
+ scroll nativo SIEMPRE manda — el sheet solo toma el gesto en top 0 con
10950
+ el dedo hacia abajo. La rama vieja de "fling down desde mid-scroll"
10951
+ (colapsar con swipe > 600px/s haciendo body.scrollTop = 0) se ELIMINÓ:
10952
+ teletransportaba la lista del último item al primero en cuanto el
10953
+ supresor iOS dejó fluir los eventos (bug real 2026-07-24). 600px/s es
10954
+ velocidad de scroll normal, no intención de colapso. */
10952
10955
  const body = this.bodyRef?.nativeElement;
10953
10956
  if (this.atMaxBreakpoint() && body) {
10954
10957
  const hasOverflow = body.scrollHeight > body.clientHeight;
10955
10958
  if (hasOverflow) {
10956
10959
  const scrollTop = body.scrollTop;
10957
10960
  const draggingDown = deltaY > 0;
10958
- const FLING_DOWN_THRESHOLD = 0.6; // px/ms ≈ 600 px/s — swipe medio-rápido
10959
- const flingingDown = this.velocityY > FLING_DOWN_THRESHOLD;
10960
- if (scrollTop > 0 && !flingingDown) {
10961
- /* Body scrolleando suave — dejamos al scroll nativo, mantenemos
10962
- armed para re-evaluar fling en próximos moves. */
10961
+ if (scrollTop > 0) {
10962
+ /* Contenido a medio scroll — scroll nativo, sin excepciones. */
10963
10963
  return;
10964
10964
  }
10965
- if (scrollTop === 0 && !draggingDown) {
10966
- /* Top del body + drag arriba → no hay donde expandir, no
10967
- desarmamos por si el user cambia dirección. */
10965
+ if (!draggingDown) {
10966
+ /* Top del body + drag arriba → scrollea contenido; no desarmamos
10967
+ por si el user cambia dirección. */
10968
10968
  return;
10969
10969
  }
10970
- /* Casos: scrollTop=0 + down, o cualquier scroll + fling rápido →
10971
- tomar control del sheet. Si fue fling desde scroll mid, resetear
10972
- scrollTop para que el drag arranque limpio sin "salto". */
10973
- if (scrollTop > 0 && flingingDown) {
10974
- body.scrollTop = 0;
10975
- /* Reset dragStartY al posición actual del fling para que el drag
10976
- del sheet no interprete los pixels ya scrolleados como delta. */
10977
- this.dragStartY = event.clientY;
10978
- this.dragStartProgress = this.currentBreakpoint();
10979
- }
10970
+ /* scrollTop = 0 + dedo abajo → el sheet toma el gesto. */
10980
10971
  }
10981
10972
  }
10982
10973
  this.bodyDragArmed = false;