Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LazyTable support #253

Draft
wants to merge 5 commits into
base: main
Choose a base branch
from
Draft

LazyTable support #253

wants to merge 5 commits into from

Conversation

devkanro
Copy link
Collaborator

@devkanro devkanro commented Nov 24, 2023

LazyTable features:

  • Basic table view
  • Lazy cell size
  • Pinned rows and columns
  • ScrollbarAdapter for tables
  • Scrolling with animation
  • Selectable cells, rows and columns
  • Draggable rows and columns
  • Mergeable cells
  • Styling
  • Code/Performance review

LazyLayout features:

  • Layout logic, available in LazyTable.kt and LazyTableMeasure.kt
  • Scrollable, clipping and overscroll effect, available in LazyTableState.kt#L112 and LazyTableState.kt#L168, clipping supported in LazyTable.kt#L94, overscroll effect supported in LazyTable.kt#L67 but not test yet because it not available in Desktop.
  • Semantics data, not support yet. Because Modifier.lazyLayoutSemantics is internal function.
  • Beyond-bounds, not support yet. LazyLayoutBeyondBoundsModifierLocal is internal, but we should need impl our one, we need support both of the Vertical and Horizontal orientation
  • PinnableContainer, we support pin rows and columns but just impl it in layout logic. We don't use the PinnableContainer because it will case chaos in table layout.
  • Prefetching, not support yet.
  • Animated scroll, we support it fully in LazyTableAnimateScroll.kt#L49, but I copied much code from LazyLayoutAnimateScroll.
  • Scroll position maintenance, we support it fully.
  • Animated place, not support yet and we have no plan to support it. These animations do not fit well with the table layout and may cause confusion.

Needed internal API

Screenshots

2023-11-28.19.39.30.mov
2024-05-14.212646.mp4

Closes #61

@devkanro devkanro added feature New feature or request new component A new component to implement labels Nov 24, 2023
@devkanro devkanro self-assigned this Nov 24, 2023
@devkanro devkanro marked this pull request as draft November 24, 2023 18:58
@rock3r rock3r mentioned this pull request Jan 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New feature or request new component A new component to implement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Complex component: table
1 participant