From 8d0b362c9cd149290b0f08c01e1e32fd170c7c94 Mon Sep 17 00:00:00 2001 From: Dominic R Date: Thu, 10 Apr 2025 11:03:02 -0400 Subject: [PATCH] web: elements: Table: Fix table selection clearing behavior (#13959) web: elements: Table: Fix table selection clearing and modal closing behavior Closes https://github.com/goauthentik/authentik/issues/13831 --- web/src/elements/forms/DeleteBulkForm.ts | 2 +- web/src/elements/table/Table.ts | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/web/src/elements/forms/DeleteBulkForm.ts b/web/src/elements/forms/DeleteBulkForm.ts index 92bd860ade..013444598f 100644 --- a/web/src/elements/forms/DeleteBulkForm.ts +++ b/web/src/elements/forms/DeleteBulkForm.ts @@ -167,13 +167,13 @@ export class DeleteBulkForm extends ModalButton { }), ); this.onSuccess(); - this.open = false; this.dispatchEvent( new CustomEvent(EVENT_REFRESH, { bubbles: true, composed: true, }), ); + this.open = false; } catch (e) { this.onError(e as Error); throw e; diff --git a/web/src/elements/table/Table.ts b/web/src/elements/table/Table.ts index c16863cab7..daa483bdaa 100644 --- a/web/src/elements/table/Table.ts +++ b/web/src/elements/table/Table.ts @@ -207,9 +207,6 @@ export abstract class Table extends AKElement implements TableLike { super(); this.addEventListener(EVENT_REFRESH, async () => { await this.fetch(); - if (this.clearOnRefresh) { - this.selectedElements = []; - } }); if (this.searchEnabled()) { this.search = getURLParam("search", ""); @@ -272,6 +269,11 @@ export abstract class Table extends AKElement implements TableLike { }); this.expandedElements = newExpanded; + + // Clear selections after fetch if clearOnRefresh is true + if (this.clearOnRefresh) { + this.selectedElements = []; + } }) .catch(async (error: unknown) => { this.error = await parseAPIResponseError(error); @@ -565,7 +567,7 @@ export abstract class Table extends AKElement implements TableLike { const renderBottomPagination = () => html`
${this.renderTablePagination()}
`; - return html` ${this.needChipGroup ? this.renderChipGroup() : html``} + return html`${this.needChipGroup ? this.renderChipGroup() : html``} ${this.renderToolbarContainer()}