Conversation
Extract common row layout (icon + title + error tag + three-dot menu + subtitle) into a reusable `ResourceListRow` component. Alerts and reports composite cells now consume this shared component via props and slots. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove bordered cards, rounded corners, and background color from resource list items. Rows now use simple top/bottom divider lines matching the new design. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Alerts: Edit, Delete Reports: Run, Edit, Delete Updated ResourceListRow to use an actions slot instead of a hardcoded three-dot button, allowing each consumer to provide its own dropdown menu. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace `ResourceTypeBadge` (icon + label) with just the icon in dashboard rows. Keep raw AlertIcon/ReportIcon for alerts and reports. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add pl-[22px] to dashboard subtitle to match icon + gap offset, consistent with alert and report rows. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Edit navigates to the resource detail page - Delete calls the admin service mutation and refreshes the list - Run (reports only) triggers an ad-hoc report run - Code-created resources hide Edit/Delete (alerts hide entire menu) - Dropdown opens down-right (align="start") Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@Di7design the one thing missing in the design is the file name, not sure we want to remove it yet its still there ! |
|
Can we keep this icon tag in the front as well, it's easy to tell which is canvas which is Explore. @royendo |
|
so Badge and Label instead of just Badge, correct? |
- Alert/report table migration to ResourceListRow with dropdown actions - Delete confirmation dialogs for alerts and reports - ResourceListRow role fix - ResourceList deduplication (web-admin copy removed, imports point to web-common) - connector-metadata.ts → connector-icon-mapping.ts rename - ResourceList flat divider styling
- Migrate `ResourceListRow` to Svelte 5 ($props, snippets, Component type) - Extract shared `DeleteResourceConfirmDialog` replacing duplicate alert/report dialogs - Add `lastTrigger`/`lastRun` guard on error badge to avoid showing errors before first run - Add try/catch error handling to `handleDelete` and `handleRun` with user notifications - Migrate both `DashboardsTableCompositeCell` (web-admin + web-common) to use `ResourceListRow` - Hide dropdown menu entirely for code-created reports (matching alert pattern) - Document magic number `pl-[22px]` with comment Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Fix 2 — Svelte 5 migration:
Fix 3 — Shared delete dialog:
Fix 4 — lastTrigger guard:
Fix 5 — Error handling:
Fix 6 — Dashboards migrated to ResourceListRow:
Fix 7 — Hide dropdown for code-created reports:
Fix 9 — Magic number comment:
|
|
Oh those were existing but will fix in this PR! |
|
as discussed the color themeing extends past this PR and quite deeply into the first pass of dark mode, will take themes into a separate PR. |
|
Eric, no need to review this yet, im waiting for #9173 then will make sure the filter bar is available for these tables |
Then I'll mark this as draft so I don't get pinged, if you don't mind. |
|
PR #9181 Review — Apply New Table Design in Rill Cloud ▎ Design-against-Figma comparison was skipped — the design-reviewer agent hit a model-access error. Findings below were validated by reading PR-version Critical / Warning
Suggestions
Rejected (false positives)
Developed in collaboration with Claude Code |
- Fix dashboard sort: drop the TanStack `initialSorting` that was overriding the toolbar's Newest/Oldest selection.
- Restructure `ResourceListRow` so the action menu is a sibling of the anchor instead of nested inside it; fixes invalid HTML and middle-click/cmd-click navigation on the menu trigger.
- Collapse `DeleteResourceConfirmDialog` into `DeleteConfirmDialog`; the dialog now takes a default slot for body content (auto-escaped, removes the `{@html}` XSS surface).
- Add an `isFiltered` prop to `ResourceList` so the "no results match your search" empty state actually fires when callers pre-filter data externally.
- Refactor `web-admin` `DashboardsTable` to a thin wrapper around the `web-common` version (was duplicating ~150 lines); delete the duplicate composite cell.
- Add `ariaLabel` to row action menus and exercise the new listing-row Delete (alerts, reports) and Run (reports) actions in Playwright tests.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Code review fixes — pushed in
|
Previously sorted by `state.dataRefreshedOn`, which made never-refreshed dashboards appear at the bottom of "Newest" and didn't match what the label implies. Switch to creation time so a brand-new dashboard appears at the top of "Newest" immediately. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The five listing tables (alerts, alerts history, reports, reports history, dashboards) were each copy-pasting the same `data.filter(...).slice().sort(...)` pipeline plus the `selectedX = selectedX.includes(value) ? ... : [...]` toggle. Pull both into `web-common/components/table-toolbar/filters.ts` so future tables get them for free and the per-table files focus on their domain-specific predicates. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Brings in #9296's table-toolbar simplifications, which moved the toolbar to bindable props (`bind:searchText`, `bind:sortDirection`) and changed `onFilterChange`'s second arg from a single value to the full new selection (the dropdown now performs the toggle internally). - Adopt main's TableToolbar + filter-dropdown + sort APIs. - Re-add `showSearch` and `disabled` props that this branch had previously introduced; propagate `disabled` to `TableToolbarSort` and `TableToolbarFilterDropdown` so empty-data tables disable cleanly. - Migrate the five caller tables (alerts listing, alerts history, reports listing, reports history, dashboards) to the bindable API and rewrite each `handleFilterChange` to consume the new array signature. - Drop the now-unused `toggleArrayValue` helper since the toolbar owns the toggle. - Take main's rewritten `ProjectLogsPage.svelte`, which no longer uses `TableToolbar` (uses `Search` + `DropdownMenu` directly). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replaces the hand-rolled `Search` + `DropdownMenu` + clear-button row
with the shared `TableToolbar`, so the logs page picks up the same
filter pills, dropdown selection logic, and clear-all behavior as the
rest of the Rill Cloud listing surfaces.
- Drops `selectedLevelLabel` (toolbar shows pills via
`TableToolbarAppliedFilters`).
- Drops `toggleLevel` (the dropdown owns the toggle now).
- `showSort={false}` since logs are inherently time-ordered streaming.
- URL filter sync (`q`, `level`) is unchanged.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replaces the bespoke `Search` + `OrgUsersFilters` row with the shared `TableToolbar` so the user management surfaces match the rest of Rill Cloud (filter pills, single dropdown for selection, clear-all). - Groups: search-only toolbar with the create-group button in the toolbar's children slot. - Guests: single-select user-type filter (`all`/`pending`). - Users: two single-select filters (user-type, role) — both default to `all`, so no chip is shown until the user picks a non-default value. - Drops the now-orphaned `OrgUsersFilters.svelte` component. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- `ReportsTable` `isFiltered` now also accounts for the result-status filter, so an empty result set with the filter active shows the "no results match your search" empty state instead of the default "you don't have any reports yet" message. - Alert and report execution-history tables drop the result-status filter and sort toggle entirely. The toolbar was overkill for two options on a fixed-size 25/10 row history; the data is already ordered most-recent-first by the backend, so just render it. - Restore the focus ring + `data-[state=open]` styles on the `AlertDialog` close-X button. They were inadvertently removed in the dialog-consolidation commit, leaving the button with `focus:outline-none` and no replacement focus indicator — affecting every `AlertDialog` site, not just the new `DeleteConfirmDialog`. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The leaderboard now renders the comparison value inline as "previous → current" before the delta and percent (e.g. "My Little Universe 1.4k → 4.6k 3.2k 229%"). Update the regex on the alert email-link assertion in `alerts.spec.ts` to match the new format. The change came in via a main merge; this branch hadn't touched the assertion. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The leaderboard row renders a hover-only "previous → current" inline preview when `pointerover` fires. The previous regex update (4b1a33a) accommodated the hover state, but that lets the test drift if the hover preview format changes again, and it's semantically asserting on a transient interactive state rather than the canonical row data. Force the cursor off the leaderboard before the assertion via `mouse.move(0, 0)` and revert the regex to the tighter pre-hover form. Mirrors the same idiom already used in `reports.spec.ts` to dismiss tooltips before interacting with adjacent UI. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
ericpgreen2
left a comment
There was a problem hiding this comment.
Based on the changes in #9367, is it right that the toolbar implemented in this PR is no longer the intended design? CC @ericokuma
|
Yes, #9367 is an improvement on this :) |




design: https://www.figma.com/design/JtG3sbaopjO0xQlyeCjmho/RILL-WIP?node-id=6857-271454&t=SrloSlXdGviOEwYN-4
Checklist: