Skip to content

Feat/bulk delete UI#574

Open
psanghvi17 wants to merge 2 commits into
1.14.0from
feat/bulk-delete-ui
Open

Feat/bulk delete UI#574
psanghvi17 wants to merge 2 commits into
1.14.0from
feat/bulk-delete-ui

Conversation

@psanghvi17
Copy link
Copy Markdown
Contributor

PR Checklist

  • Linting Test is passing
  • Code is well documented
  • If applicable, a PR in the epinio/docs repository has been opened

Summary

Adds UI bulk delete support for Epinio resources by introducing a reusable confirmation modal and table row selection, then wiring bulk delete flows into the relevant list views. A follow-up fix also aligns the new flow with existing delete safeguards for configurations and application image deletion.

Occurred changes and/or fixed issues

  • Added a reusable BulkDeleteModal for confirmation flows.
  • Extended the shared DataTable with:
    • row selection
    • select-all support
    • controlled selected row keys
    • row-level selectability
  • Added bulk-delete i18n strings for button labels, titles, descriptions, and deleting states.
  • Added bulk delete UI flows for:
    • Applications
    • Services
    • Configurations
    • Namespaces
  • Added optional "Also delete image from registry" support for bulk application deletion.
  • Fixed bulk configuration deletion so non-deletable/service-related configurations cannot be selected.
  • Fixed bulk application deletion so the temporary deleteImage flag does not leak into later delete attempts.

Technical notes summary

  • No backend changes were required for this work; the UI reuses the existing bulk delete support already exposed through the Epinio models/endpoints.
  • Application bulk delete works across namespace-grouped tables by merging selection from each namespace section into one bulk action.
  • DataTable now supports rowSelectable, allowing protected rows to remain visible while preventing them from being selected.
  • The safeguard follow-up keeps bulk delete behavior aligned with existing single-delete rules, especially for configurations and app image deletion behavior.
  • Namespace bulk delete was included as an additional UI capability/collateral improvement.

Areas or cases that should be tested

  • Applications: select one or more apps in a namespace, open bulk delete, confirm deletion, and verify list refresh.
  • Applications: select apps across multiple namespace sections, confirm deletion, and verify all selected apps are removed correctly.
  • Applications: enable and disable "Also delete image from registry" and verify the choice only applies to the current delete action.
  • Services: bulk delete one or more services and verify the list refreshes correctly after success/failure.
  • Configurations: bulk delete normal configurations and verify service-related/protected configurations are shown but cannot be selected.
  • Namespaces: bulk delete multiple namespaces and verify the list refreshes correctly afterward.
  • RBAC: verify bulk delete buttons and selection checkboxes only appear for users with the required permissions.
  • Shared table behavior: verify checkbox state, select-all behavior, pagination, search, and modal cancel/close behavior.

Areas which could experience regressions

  • Any page using the shared DataTable, especially around selection, pagination, search, sorting, and action-column layout.
  • Existing single-delete flows for applications, services, configurations, and namespaces.
  • Application delete flows that pass the deleteImage option.
  • Configuration delete permissions and service-related configuration handling.
  • Namespace-grouped application list behavior and cross-table selection state.

psanghvi17 added 2 commits May 8, 2026 17:34
Introduce a reusable BulkDeleteModal and add row selection support in DataTable to enable bulk deletion across resources. Update DataTable with selectable and selectedRowKeys props, internal selection state, select-all behavior, selection emits, and selection-column styling. Add i18n keys for bulk-delete labels/messages, and integrate bulk-delete flows into applications, services, namespaces, and configurations pages with RBAC checks, selection state, modal wiring, and delete actions (including optional delete-image for apps).
Prevent protected configurations from being selected for bulk deletion and clear temporary delete-image flags after app delete attempts.
@dcharles525 dcharles525 changed the base branch from main to 1.14.0 May 12, 2026 15:35
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.

1 participant