Conversation
Replaces inconsistent toolbar UIs across alerts, reports, public URLs, and environment variables pages with a single reusable component. The toolbar provides: filter dropdown (left), search + sort + optional grid/list toggle (right). Filter options are page-specific via props. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- "Filter" is now plain clickable text opening a dropdown; applied filters show as removable chips with "Clear all" below the toolbar - "Newest" is a toggle button (not dropdown) that flips sort order - Search is a magnifying glass icon (h-9) that expands to an inline input; search text syncs to URL via ?q= param - Add `TableToolbarAppliedFilters`, `TableToolbarSearch`, `TableToolbarSort` sub-components - Remove old `TableToolbarSortDropdown` Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use `untrack` and `get()` to break circular reactive dependencies: - `$table.setGlobalFilter()` was re-triggering its own effect via store subscription - URL sync effects were creating `searchText` <-> `$page` cycles Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Wrap DropdownMenu.Label inside DropdownMenu.Group to provide required Menu.Group context for GroupHeading - Use explicit oninput handler instead of bind:value for search to ensure reliable propagation through $bindable chain Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace $bindable chain (3-level deep binding wasn't propagating in TanStack pages) with onSearchChange callback. All consumers now use the callback to update search state. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove local `searchText = text` write in `handleSearchChange` which created a Svelte 5 prop shadow, disconnecting the input from parent state. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Revert alerts and reports tables to original `ResourceList` pattern - Replace filter icon with `ListFilter` from lucide-svelte - Filter pills: white bg, h-7, in h-9 container vertically centered - Reorder toolbar right side: Search, Newest, View toggle - Filter and Newest text use `text-fg-primary` - Env vars page: `+` button aligns top with `items-start` Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Filter pills: font-medium, border-t divider restored, h-7 in h-9 container - Add children snippet to TableToolbar for inline extras (e.g. + button) - Env vars: + button rendered inside toolbar so applied filters span full width - Reorder: Newest before Search Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add FilterOutlined.svelte from Rill design system SVG - Use it in TableToolbarFilterDropdown instead of lucide ListFilter - Wrap toolbar in section with gap-y-2 for spacing between rows Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add persistent <hr> between toolbar and applied filters - Replace complex mask-based SVG with clean stroked outline path - Reduce env vars page gap from gap-6 to gap-3 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…d white Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove trivial `handleSearchChange` wrapper, pass callback directly - Remove `$bindable` on `viewMode`, use callback pattern consistently - Sort: icon-only button (ArrowDownNarrowWide/ArrowUpNarrowWide), no text/border - Swap order: Search before Sort - Add `enableSorting` prop to BasicTable; env vars disables it - Fix disabled search button: proper `disabled` attr instead of CSS-only - Add `aria-label` to filter trigger and sort button - View toggle: `bg-gray-200` to `bg-surface-hover` for theme support - Trim barrel exports to `TableToolbar` + types only - Use optional chaining on `onSortToggle?.()` for consistency Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…arrow - Search icon: remove border/bg, match sort icon style - Revert sort to text "Newest"/"Oldest" + ArrowUpDown - Show hr/applied filters only when filterGroups exist - Revert BasicTable enableSorting prop (keep column sorting) - Remove sortDescFirst from Activity column so no arrow shows by default Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When toolbar controls sort order, BasicTable clears its internal sorting state so column header arrows don't show. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace boolean `externalSort` with `externalSortKey` that reacts to value changes. Pass `sortDirection` through to BasicTable so clicking Newest/Oldest clears any active column header arrow. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Why are we introducing a sort toggle when that can just be handled in the table column header? |
discussed with Di, this will only be for dashboards where we dont have that functionality; will hide it on the others |
migrate public URL to same table type as env var
| /> | ||
|
|
||
| {#if filteredData.length === 0 && data.length === 0} | ||
| <div class="border rounded-lg bg-surface-background"> |
There was a problem hiding this comment.
This empty data handling should be inside the BasicTable with snippets for empty filter result vs empty list.
| disabled?: boolean; | ||
| } = $props(); | ||
|
|
||
| let expanded = $state(false); |
There was a problem hiding this comment.
Init value should be based on searchText instead of just false.
| } | ||
| } | ||
|
|
||
| beforeNavigate(() => (searchText = "")); |
There was a problem hiding this comment.
Why is this needed? Search is getting reset anyway with navigation.
| @@ -0,0 +1,114 @@ | |||
| <script lang="ts"> | |||
There was a problem hiding this comment.
Where is the file actually used? I dont see direct reference
Also applied to resource page |
toggle, applied filter chips, and view mode toggle
"Clear all"
Search bar can be removed if req'd
Components:
loom: https://www.loom.com/share/16b8de614c214305b385d966e7352b0a?from_recorder=1&focus_title=1
Will replace: #9156
Checklist: