Skip to content

Migrate paginated-table cluster to runes syntax - #3750

Merged
tegan-temporal merged 9 commits into
mainfrom
refactor/migrate-paginated-table-runes
Aug 3, 2026
Merged

Migrate paginated-table cluster to runes syntax#3750
tegan-temporal merged 9 commits into
mainfrom
refactor/migrate-paginated-table-runes

Conversation

@tegan-temporal

@tegan-temporal tegan-temporal commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Migrates the paginated-table cluster — index.svelte, paginated.svelte, api-paginated.svelte — to Svelte 5 runes. This was the last button-entangled holocene cluster (it renders Button/IconButton); unblocked now that the runes button has merged.

Component changes

  • export let/$$Props/$$restProps/$$slots$props() + ...rest; $:$derived/$effect; type Item = $$Genericgenerics="Item"; context="module"<script module>.
  • paginated.svelte: $app/stores ($page) → $app/state (page).
  • api-paginated.svelte: <svelte:window on:keydown>onkeydown; internal error state renamed → fetchError so the error snippet name is free.
  • All slots → snippets, forwarded through index (caption/headers/empty pass straight through; the internal actions-* become snippets defined in the wrappers).

Public API changes (consumers updated in this PR)

  • Named slots → snippet props: slot="caption"caption, slot="headers"headers (scoped { visibleItems }), slot="empty"empty, slot="actions-end-additional"actionsEndAdditional (scoped { visibleItems, page }), slot="error"error.
  • Scoped default slot → rows snippet (not children). Svelte special-cases children to also accept the no-arg form (Snippet<[]> & Snippet<[{ visibleItems }]>), which a required-param snippet can't satisfy — so the scoped default content is now {#snippet rows({ visibleItems })}.
  • index.svelte internal API: slot="loading"loadingContent (avoids collision with the loading boolean prop), slot="actions-start/center/end"actionsStart/actionsCenter/actionsEnd (used by cloud-ui's api-pagination).

Verification

  • 10 ui consumers updated. pnpm check 0 errors; 2570 tests pass; eslint clean.
  • Two state_referenced_locally warnings in api-paginated (store created once from the initial pageSizeOptions) are behavior-equivalent to the original.

Paired cloud-ui PR (9 consumers, incl. the api-pagination wrapper that imports index directly): temporalio/cloud-ui#3038

@tegan-temporal
tegan-temporal requested a review from a team as a code owner July 29, 2026 16:02
@vercel

vercel Bot commented Jul 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
holocene Ready Ready Preview Aug 3, 2026 8:12pm

Request Review

…nated-table-runes

# Conflicts:
#	src/lib/pages/schedules.svelte
…nated-table-runes

# Conflicts:
#	src/lib/pages/deployment.svelte
Comment thread src/lib/holocene/table/paginated-table/api-paginated.svelte
Comment thread src/lib/holocene/table/paginated-table/api-paginated.svelte Outdated
Comment thread src/lib/holocene/table/paginated-table/paginated.svelte Outdated
@tegan-temporal

Copy link
Copy Markdown
Contributor Author

@laurakwhit thanks! I implemented your suggestions

<svelte:window onkeydown={handleKeydown} />

{#snippet indexEmpty()}
{#if $store.loading}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like empty in <PaginatedTable /> is only used if loading is false. I think we can just delete the condition and loadingContent here?

@tegan-temporal
tegan-temporal merged commit b19c43a into main Aug 3, 2026
17 checks passed
@tegan-temporal
tegan-temporal deleted the refactor/migrate-paginated-table-runes branch August 3, 2026 20:34
laurakwhit added a commit that referenced this pull request Aug 5, 2026
Auto-generated version bump from 2.53.0 to 2.53.1

Specific version: 2.53.1

Changes included:
- [`e3f08379`](e3f0837) Update holocene accordion-light to runes syntax (#3714)
- [`2cfa9b43`](2cfa9b4) Update holocene toggle-switch to runes syntax (#3715) (#3719)
- [`e884c326`](e884c32) Update holocene textarea to runes syntax (#3724)
- [`bda6e133`](bda6e13) Update holocene checkbox to runes syntax (#3725)
- [`11fe6ff3`](11fe6ff) Remove unused collapsible-divider component (#3726)
- [`bdc0fa77`](bdc0fa7) Update holocene skeleton table to runes syntax (#3734)
- [`56a34a69`](56a34a6) Update holocene accordion to runes syntax (#3736)
- [`1a0b0422`](1a0b042) Remove unused banner component (#3712)
- [`11da928d`](11da928) Update holocene range-input to runes syntax (#3713)
- [`d73bbde9`](d73bbde) Remove deprecated api-pagination component (#3739)
- [`9cb5e28a`](9cb5e28) Update holocene number-input to runes syntax (#3735)
- [`e4cec29c`](e4cec29) Update holocene tabs and tab-button to runes syntax (#3737)
- [`6f6f7139`](6f6f713) Update holocene drawer-content to runes syntax (#3740)
- [`4f2cef58`](4f2cef5) Update holocene tooltip to runes syntax (#3743)
- [`6e01537e`](6e01537) Update holocene link to runes syntax (#3741)
- [`b6775092`](b677509) Update holocene orderable-list to runes syntax (#3742)
- [`447fad67`](447fad6) Update holocene pagination to runes syntax (#3738)
- [`359c80ba`](359c80b) fix(schedules): tolerate duplicate schedule IDs (#3751)
- [`8e81a4f0`](8e81a4f) fix(workers): use default Cloud Run runner identity (#3748)
- [`3b37bbe6`](3b37bbe) Enable server-scaled deployments by default (#3672)
- [`d9f9a99c`](d9f9a99) feat(workers): add release stage badges to compute provider picker (#3773)
- [`7e8f2830`](7e8f283) Update holocene time-picker to runes syntax (#3754)
- [`053f060a`](053f060) Update holocene drawer to runes syntax (#3755)
- [`9dff9c9f`](9dff9c9) fix(workers): gate deployment actions by compute config (#3779)
- [`bd9b3f60`](bd9b3f6) Update holocene copyable to runes syntax (#3756)
- [`46afcfff`](46afcff) Update holocene toast to runes syntax (#3753)
- [`17f64bcc`](17f64bc) Update holocene orderable-list-item to runes syntax (#3758)
- [`d9ab4aa7`](d9ab4aa) Migrate event-link and event-details-link to runes syntax (#3760)
- [`c09f94ac`](c09f94a) Migrate start-workflow-button and workflow-detail to runes syntax (#3761)
- [`7bce9c5d`](7bce9c5) Remove dead workflow-filters component (#3762)
- [`30255dba`](30255db) Sweep remaining on: directives to runes event syntax (#3771)
- [`ad696bcf`](ad696bc) Migrate batch-operations header to runes syntax (#3764)
- [`64f7302c`](64f7302) Migrate workflow-family-node-tree to runes syntax (#3765)
- [`dc56c890`](dc56c89) Migrate start-workflow and workflow-query pages to runes syntax (#3768)
- [`f989d43a`](f989d43) Migrate payload-input-with-encoding to runes syntax (#3763)
- [`b19c43a0`](b19c43a) Migrate paginated-table cluster to runes syntax (#3750)
- [`84414160`](8441416) Update holocene zoom-svg to runes syntax (#3757)
- [`8c245928`](8c24592) Migrate holocene modal to runes syntax (#3759)
- [`ef33b255`](ef33b25) Upgrade to Storybook 10 and migrate stories to defineMeta (#3772)
- [`d8af57d8`](d8af57d) Enable runes mode by default (#3770)
- [`1923c928`](1923c92) Use WorkflowTaskFailedCause enum (#3775)
- [`b4a272ee`](b4a272e) Track pointerDown and ignore subsequent click (#3776)
- [`96a06250`](96a0625) Pluralize batch operation execution type (#3784)
- [`ee4652ac`](ee4652a) Resolve deployment compute config from routed version summaries (#3789)
- [`7b614625`](7b61462) Standalone Activity fixes (#3788)

Co-authored-by: laurakwhit <15069288+laurakwhit@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants