Skip to content
This repository was archived by the owner on Jul 31, 2024. It is now read-only.

Commit 194edc4

Browse files
author
vikas-cldcvr
committed
FLOW-1029 checkbox bug
1 parent ee89b32 commit 194edc4

File tree

3 files changed

+38
-13
lines changed

3 files changed

+38
-13
lines changed

packages/flow-table/src/components/f-table-schema/f-table-schema.ts

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,9 @@ export class FTableSchema extends FRoot {
162162
@query("f-div.load-more")
163163
loadMoreButton?: FDiv;
164164

165+
@query("#f-table-element")
166+
tableElement?: FTable;
167+
165168
nextEmitted = false;
166169

167170
get max() {
@@ -405,6 +408,7 @@ export class FTableSchema extends FRoot {
405408
: nothing}
406409
</slot>
407410
<f-table
411+
id="f-table-element"
408412
.variant=${this.variant}
409413
.size=${this.size}
410414
.selectable=${this.selectable}
@@ -419,9 +423,7 @@ export class FTableSchema extends FRoot {
419423
</div>
420424
`;
421425
}
422-
protected async updated(
423-
changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>
424-
): Promise<void> {
426+
protected updated(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void {
425427
super.updated(changedProperties);
426428

427429
this.onscroll = () => {
@@ -440,15 +442,19 @@ export class FTableSchema extends FRoot {
440442
});
441443
}
442444
};
443-
await this.updateComplete;
444-
if (
445-
this.scrollHeight === this.offsetHeight &&
446-
this.filteredRows.length < this.searchedRows.length
447-
) {
448-
this.loadMoreButton?.style.removeProperty("display");
449-
} else if (this.loadMoreButton) {
450-
this.loadMoreButton.style.display = "none";
451-
}
445+
void this.updateComplete.then(async () => {
446+
if (
447+
this.scrollHeight === this.offsetHeight &&
448+
this.filteredRows.length < this.searchedRows.length
449+
) {
450+
this.loadMoreButton?.style.removeProperty("display");
451+
} else if (this.loadMoreButton) {
452+
this.loadMoreButton.style.display = "none";
453+
}
454+
if (this.tableElement) {
455+
await this.tableElement.updateHeaderSelectionCheckboxState();
456+
}
457+
});
452458
}
453459

454460
handleHeaderInput(event: CustomEvent<boolean>, headerCell: FTableSchemaHeaderCell) {

packages/flow-table/src/components/f-tcell/f-tcell.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,13 +125,15 @@ export class FTcell extends FRoot {
125125
${this.selectable === "multiple"
126126
? html`<f-checkbox
127127
?disabled=${this.isDisabled}
128+
@click=${(event: PointerEvent) => event.stopPropagation()}
128129
@input=${this.handleSelection}
129130
></f-checkbox>`
130131
: nothing}
131132
${this.selectable === "single"
132133
? html`<f-radio
133134
?disabled=${this.isDisabled}
134135
@input=${this.handleSelection}
136+
@click=${(event: PointerEvent) => event.stopPropagation()}
135137
class="cell-radio"
136138
></f-radio>`
137139
: nothing}

stories/flow-table/f-table-schema.stories.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { unsafeSVG } from "lit-html/directives/unsafe-svg.js";
33
import getFakeUsers, { popoverRef } from "../utils/mock-users-data";
44
import { createRef, ref } from "lit/directives/ref.js";
55
import downloadFile from "./donwload-file";
6+
import { FTableSchema } from "@cldcvr/flow-table/src/components/f-table-schema/f-table-schema";
67

78
export default {
89
title: "@cldcvr/flow-table/f-table-schema",
@@ -456,6 +457,16 @@ export const HeaderInput = {
456457
render: () => {
457458
const data = getFakeUsers(10, 5);
458459
const fieldRef = createRef();
460+
const tableRef = createRef<FTableSchema>();
461+
462+
const handleToggle = (_event: PointerEvent) => {
463+
data.rows.forEach(row => {
464+
row.selected = !row.selected;
465+
});
466+
if (tableRef.value) {
467+
tableRef.value.data = { ...data };
468+
}
469+
};
459470

460471
const handleEvent = (event: CustomEvent) => {
461472
if (fieldRef.value) {
@@ -467,7 +478,13 @@ export const HeaderInput = {
467478
<f-text
468479
>'header-input' event emitted whenever checkbox is checked/unchecked in header</f-text
469480
>
470-
<f-table-schema .data=${data} selectable="multiple" @header-input=${handleEvent}>
481+
<f-button label="toggle" @click=${handleToggle}></f-button>
482+
<f-table-schema
483+
${ref(tableRef)}
484+
.data=${data}
485+
selectable="multiple"
486+
@header-input=${handleEvent}
487+
>
471488
</f-table-schema>
472489
<f-divider></f-divider>
473490
</f-div>

0 commit comments

Comments
 (0)