Replaces the “Add Policies” picker with a modal table (search, pagination, multi-select). Adds filters: policy type, platform, last synced, ignored, has versions; “Select all” applies to the current filtered results. Improves identifiers shown (short external id), and fixes has-versions filtering behavior. Backup set items table: groups row actions (View policy / Remove) into an action group. Adds bulk action to remove multiple backup items at once. Updates/adds tests covering the picker table bulk add and backup items bulk remove. Co-authored-by: Ahmed Darrazi <ahmeddarrazi@adsmac.local> Reviewed-on: #21
33 lines
1.3 KiB
Markdown
33 lines
1.3 KiB
Markdown
# Plan: Policy Picker UX (015)
|
|
|
|
**Branch**: `015-policy-picker-ux`
|
|
**Date**: 2026-01-02
|
|
**Input**: [spec.md](./spec.md)
|
|
|
|
## Goal
|
|
Improve the “Add Policies” picker UX by making option labels self-describing (type/platform/external id) to reduce mistakes with duplicate policy names.
|
|
|
|
## Scope
|
|
|
|
### In scope
|
|
- Update the “Add Policies” action in the Backup Set items relation manager.
|
|
- Present the picker as a modal table (row selection).
|
|
- Table shows: display name, policy type (human label if available), platform, short external id.
|
|
- Filters: policy type, platform, last synced, ignored, has versions.
|
|
- “Select all” selects the current filtered results.
|
|
- Add a unit/feature test covering the label formatting.
|
|
|
|
### Out of scope
|
|
- Adding filters, select-all, new pages, or additional UI flows.
|
|
|
|
## Approach
|
|
1. Replace the Select-based picker with a Livewire/Filament table component rendered inside the action modal.
|
|
2. Add the required filters and columns.
|
|
3. Implement a bulk action to add selected policies to the backup set.
|
|
4. Add tests asserting the picker table bulk action works and filters are available.
|
|
4. Run targeted tests and Pint.
|
|
|
|
## Success Criteria
|
|
- Picker options are clearly distinguishable for policies with duplicate names.
|
|
- Tests are green.
|