@ni/nimble-components 18.12.0 → 18.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/all-components-bundle.js +440 -87
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +1013 -878
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/esm/table/components/cell/template.js +1 -0
  6. package/dist/esm/table/components/cell/template.js.map +1 -1
  7. package/dist/esm/table/components/group-row/index.d.ts +14 -1
  8. package/dist/esm/table/components/group-row/index.js +44 -0
  9. package/dist/esm/table/components/group-row/index.js.map +1 -1
  10. package/dist/esm/table/components/group-row/styles.js +16 -4
  11. package/dist/esm/table/components/group-row/styles.js.map +1 -1
  12. package/dist/esm/table/components/group-row/template.js +30 -10
  13. package/dist/esm/table/components/group-row/template.js.map +1 -1
  14. package/dist/esm/table/components/row/index.d.ts +12 -2
  15. package/dist/esm/table/components/row/index.js +40 -4
  16. package/dist/esm/table/components/row/index.js.map +1 -1
  17. package/dist/esm/table/components/row/styles.js +21 -4
  18. package/dist/esm/table/components/row/styles.js.map +1 -1
  19. package/dist/esm/table/components/row/template.js +36 -20
  20. package/dist/esm/table/components/row/template.js.map +1 -1
  21. package/dist/esm/table/index.d.ts +27 -4
  22. package/dist/esm/table/index.js +185 -22
  23. package/dist/esm/table/index.js.map +1 -1
  24. package/dist/esm/table/styles.js +32 -9
  25. package/dist/esm/table/styles.js.map +1 -1
  26. package/dist/esm/table/template.js +37 -14
  27. package/dist/esm/table/template.js.map +1 -1
  28. package/dist/esm/table/types.d.ts +11 -0
  29. package/dist/esm/table/types.js +4 -2
  30. package/dist/esm/table/types.js.map +1 -1
  31. package/package.json +14 -14
@@ -12,6 +12,7 @@ export const template = html `
12
12
  appearance="${ButtonAppearance.ghost}"
13
13
  @beforetoggle="${(x, c) => x.onActionMenuBeforeToggle(c.event)}"
14
14
  @toggle="${(x, c) => x.onActionMenuToggle(c.event)}"
15
+ @click="${(_, c) => c.event.stopPropagation()}"
15
16
  class="action-menu"
16
17
  >
17
18
  <${iconThreeDotsLineTag} slot="start"></${iconThreeDotsLineTag}>
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/table/components/cell/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACH,gBAAgB,EAEnB,MAAM,4BAA4B,CAAC;AAEpC,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAW;0EACmC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;UACnF,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB;UACvB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,IAAI,CAAW;eACrC,aAAa,IAAI,GAAG,CAAC,kBAAkB,CAAC;;8BAEzB,gBAAgB,CAAC,KAAK;iCACnB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,KAAiD,CAAC;2BAC/F,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAiD,CAAC;;;mBAG3F,oBAAoB,mBAAmB,oBAAoB;kBAC5D,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe;;gBAExB,aAAa;SACpB,CAAC;;CAET,CAAC"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/table/components/cell/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACH,gBAAgB,EAEnB,MAAM,4BAA4B,CAAC;AAEpC,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAW;0EACmC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;UACnF,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB;UACvB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,IAAI,CAAW;eACrC,aAAa,IAAI,GAAG,CAAC,kBAAkB,CAAC;;8BAEzB,gBAAgB,CAAC,KAAK;iCACnB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,KAAiD,CAAC;2BAC/F,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAiD,CAAC;0BACpF,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE;;;mBAG1C,oBAAoB,mBAAmB,oBAAoB;kBAC5D,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe;;gBAExB,aAAa;SACpB,CAAC;;CAET,CAAC"}
@@ -1,5 +1,6 @@
1
- import { FoundationElement } from '@microsoft/fast-foundation';
1
+ import { Checkbox, FoundationElement } from '@microsoft/fast-foundation';
2
2
  import type { TableColumn } from '../../../table-column/base';
3
+ import { TableRowSelectionState } from '../../types';
3
4
  declare global {
4
5
  interface HTMLElementTagNameMap {
5
6
  'nimble-table-group-row': TableGroupRow;
@@ -15,15 +16,27 @@ export declare class TableGroupRow extends FoundationElement {
15
16
  leafItemCount?: number;
16
17
  groupColumn?: TableColumn;
17
18
  expanded: boolean;
19
+ selectable: boolean;
20
+ selectionState: TableRowSelectionState;
18
21
  /**
19
22
  * @internal
20
23
  */
21
24
  readonly expandIcon: HTMLElement;
25
+ /**
26
+ * @internal
27
+ */
28
+ readonly selectionCheckbox?: Checkbox;
22
29
  /**
23
30
  * @internal
24
31
  */
25
32
  animationClass: string;
33
+ private ignoreSelectionChangeEvents;
26
34
  onGroupExpandToggle(): void;
35
+ /** @internal */
36
+ onSelectionChange(event: CustomEvent): void;
37
+ private selectionStateChanged;
38
+ private selectionCheckboxChanged;
39
+ private setSelectionCheckboxState;
27
40
  private readonly removeAnimatingClass;
28
41
  }
29
42
  export declare const tableGroupRowTag: string;
@@ -3,6 +3,7 @@ import { attr, observable } from '@microsoft/fast-element';
3
3
  import { DesignSystem, FoundationElement } from '@microsoft/fast-foundation';
4
4
  import { styles } from './styles';
5
5
  import { template } from './template';
6
+ import { TableRowSelectionState } from '../../types';
6
7
  /**
7
8
  * A styled cell that is used within the nimble-table-row.
8
9
  * @internal
@@ -12,10 +13,17 @@ export class TableGroupRow extends FoundationElement {
12
13
  super(...arguments);
13
14
  this.nestingLevel = 0;
14
15
  this.expanded = false;
16
+ this.selectable = false;
17
+ this.selectionState = TableRowSelectionState.notSelected;
15
18
  /**
16
19
  * @internal
17
20
  */
18
21
  this.animationClass = '';
22
+ // Programmatically updating the selection state of a checkbox fires the 'change' event.
23
+ // Therefore, selection change events that occur due to programmatically updating
24
+ // the selection checkbox 'checked' value should be ingored.
25
+ // https://github.com/microsoft/fast/issues/5750
26
+ this.ignoreSelectionChangeEvents = false;
19
27
  this.removeAnimatingClass = () => {
20
28
  this.animationClass = '';
21
29
  this.expandIcon.removeEventListener('transitionend', this.removeAnimatingClass);
@@ -32,6 +40,33 @@ export class TableGroupRow extends FoundationElement {
32
40
  this.animationClass = 'animating';
33
41
  this.expandIcon.addEventListener('transitionend', this.removeAnimatingClass);
34
42
  }
43
+ /** @internal */
44
+ onSelectionChange(event) {
45
+ if (this.ignoreSelectionChangeEvents) {
46
+ return;
47
+ }
48
+ const checkbox = event.target;
49
+ const detail = {
50
+ oldState: !checkbox.checked,
51
+ newState: checkbox.checked
52
+ };
53
+ this.$emit('group-selection-toggle', detail);
54
+ }
55
+ selectionStateChanged() {
56
+ this.setSelectionCheckboxState();
57
+ }
58
+ selectionCheckboxChanged() {
59
+ this.setSelectionCheckboxState();
60
+ }
61
+ setSelectionCheckboxState() {
62
+ if (this.selectionCheckbox) {
63
+ this.ignoreSelectionChangeEvents = true;
64
+ this.selectionCheckbox.checked = this.selectionState === TableRowSelectionState.selected;
65
+ this.selectionCheckbox.indeterminate = this.selectionState
66
+ === TableRowSelectionState.partiallySelected;
67
+ this.ignoreSelectionChangeEvents = false;
68
+ }
69
+ }
35
70
  }
36
71
  __decorate([
37
72
  observable
@@ -48,6 +83,15 @@ __decorate([
48
83
  __decorate([
49
84
  attr({ mode: 'boolean' })
50
85
  ], TableGroupRow.prototype, "expanded", void 0);
86
+ __decorate([
87
+ attr({ mode: 'boolean' })
88
+ ], TableGroupRow.prototype, "selectable", void 0);
89
+ __decorate([
90
+ attr({ attribute: 'selection-state' })
91
+ ], TableGroupRow.prototype, "selectionState", void 0);
92
+ __decorate([
93
+ observable
94
+ ], TableGroupRow.prototype, "selectionCheckbox", void 0);
51
95
  __decorate([
52
96
  observable
53
97
  ], TableGroupRow.prototype, "animationClass", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/table/components/group-row/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE7E,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,iBAAiB;IAApD;;QAKW,iBAAY,GAAG,CAAC,CAAC;QASjB,aAAQ,GAAG,KAAK,CAAC;QAOxB;;WAEG;QAEI,mBAAc,GAAG,EAAE,CAAC;QAiBV,yBAAoB,GAAG,GAAS,EAAE;YAC/C,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAC/B,eAAe,EACf,IAAI,CAAC,oBAAoB,CAC5B,CAAC;QACN,CAAC,CAAC;IACN,CAAC;IAtBU,mBAAmB;QACtB,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAClC,6EAA6E;QAC7E,iFAAiF;QACjF,gFAAgF;QAChF,mFAAmF;QACnF,qFAAqF;QACrF,gDAAgD;QAChD,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC;QAClC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAC5B,eAAe,EACf,IAAI,CAAC,oBAAoB,CAC5B,CAAC;IACN,CAAC;CASJ;AA/CG;IADC,UAAU;oDACoB;AAG/B;IADC,UAAU;mDACa;AAGxB;IADC,UAAU;oDACmB;AAG9B;IADC,UAAU;kDACsB;AAGjC;IADC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;+CACF;AAWxB;IADC,UAAU;qDACgB;AA0B/B,MAAM,mBAAmB,GAAG,aAAa,CAAC,OAAO,CAAC;IAC9C,QAAQ,EAAE,iBAAiB;IAC3B,QAAQ;IACR,MAAM;CACT,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/table/components/group-row/index.ts"],"names":[],"mappings":"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"}
@@ -8,10 +8,6 @@ export const styles = css `
8
8
  align-items: center;
9
9
  height: calc(${controlHeight} + 2 * ${borderWidth});
10
10
  border-top: calc(2 * ${borderWidth}) solid ${tableRowBorderColor};
11
- padding-left: calc(
12
- ${smallPadding} * 2 + ${standardPadding} * 2 *
13
- var(--ni-private-table-group-row-indent-level)
14
- );
15
11
  }
16
12
 
17
13
  :host(:hover) {
@@ -24,6 +20,10 @@ export const styles = css `
24
20
  }
25
21
 
26
22
  .expand-collapse-button {
23
+ margin-left: calc(
24
+ ${smallPadding} * 2 + ${standardPadding} * 2 *
25
+ var(--ni-private-table-group-row-indent-level)
26
+ );
27
27
  width: ${controlSlimHeight};
28
28
  height: ${controlSlimHeight};
29
29
  }
@@ -60,5 +60,17 @@ export const styles = css `
60
60
  transition-duration: 0s;
61
61
  }
62
62
  }
63
+
64
+ .checkbox-container {
65
+ display: flex;
66
+ }
67
+
68
+ .selection-checkbox {
69
+ margin-left: ${standardPadding};
70
+ }
71
+
72
+ .selection-checkbox::part(label) {
73
+ padding-left: 0px;
74
+ }
63
75
  `;
64
76
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../src/table/components/group-row/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EACH,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,mBAAmB,EACtB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,MAAM,CAAC;;;;uBAIE,aAAa,UAAU,WAAW;+BAC1B,WAAW,WAAW,mBAAmB;;cAE1D,YAAY,UAAU,eAAe;;;;;;sBAM7B,cAAc;;;;;sBAKd,WAAW;;;;iBAIhB,iBAAiB;kBAChB,iBAAiB;;;;;;;;;;;;;;;;;6BAiBN,eAAe;;;;;;;;;;;;;;;;;;CAkB3C,CAAC"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../src/table/components/group-row/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EACH,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,mBAAmB,EACtB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,MAAM,CAAC;;;;uBAIE,aAAa,UAAU,WAAW;+BAC1B,WAAW,WAAW,mBAAmB;;;;sBAIlD,cAAc;;;;;sBAKd,WAAW;;;;;cAKnB,YAAY,UAAU,eAAe;;;iBAGlC,iBAAiB;kBAChB,iBAAiB;;;;;;;;;;;;;;;;;6BAiBN,eAAe;;;;;;;;;;;;;;;;;;;;;;;;uBAwBrB,eAAe;;;;;;CAMrC,CAAC"}
@@ -1,19 +1,39 @@
1
1
  /* eslint-disable @typescript-eslint/indent */
2
- import { html, ref } from '@microsoft/fast-element';
2
+ import { html, ref, when } from '@microsoft/fast-element';
3
3
  import { buttonTag } from '../../../button';
4
4
  import { ButtonAppearance } from '../../../button/types';
5
5
  import { iconArrowExpanderRightTag } from '../../../icons/arrow-expander-right';
6
+ import { checkboxTag } from '../../../checkbox';
6
7
  // prettier-ignore
7
8
  export const template = html `
8
- <template @click=${x => x.onGroupExpandToggle()} style="--ni-private-table-group-row-indent-level: ${x => x.nestingLevel};">
9
- <${buttonTag}
10
- appearance="${ButtonAppearance.ghost}"
11
- content-hidden
12
- class="expand-collapse-button"
13
- tabindex="-1"
14
- >
15
- <${iconArrowExpanderRightTag} ${ref('expandIcon')} slot="start" class="expander-icon ${x => x.animationClass}"></${iconArrowExpanderRightTag}>
16
- </${buttonTag}>
9
+ <template
10
+ role="row"
11
+ @click=${x => x.onGroupExpandToggle()}
12
+ style="--ni-private-table-group-row-indent-level: ${x => x.nestingLevel};"
13
+ >
14
+ ${when(x => x.selectable, html `
15
+ <span role="gridcell" class="checkbox-container">
16
+ <${checkboxTag}
17
+ ${ref('selectionCheckbox')}
18
+ class="selection-checkbox"
19
+ @change="${(x, c) => x.onSelectionChange(c.event)}"
20
+ @click="${(_, c) => c.event.stopPropagation()}"
21
+ >
22
+ </${checkboxTag}>
23
+ </span>
24
+ `)}
25
+
26
+ <span role="gridcell">
27
+ <${buttonTag}
28
+ appearance="${ButtonAppearance.ghost}"
29
+ content-hidden
30
+ class="expand-collapse-button"
31
+ tabindex="-1"
32
+ >
33
+ <${iconArrowExpanderRightTag} ${ref('expandIcon')} slot="start" class="expander-icon ${x => x.animationClass}"></${iconArrowExpanderRightTag}>
34
+ </${buttonTag}>
35
+ </span>
36
+
17
37
  <div class="group-row-header-content">
18
38
  ${x => x.groupColumn?.columnInternals.groupHeaderViewTemplate}
19
39
  <div class="group-row-child-count">(${x => x.leafItemCount})</span>
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/table/components/group-row/template.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAEhF,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAe;uBACpB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,EAAE,sDAAsD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;WACjH,SAAS;0BACM,gBAAgB,CAAC,KAAK;;;;;eAKjC,yBAAyB,IAAI,GAAG,CAAC,YAAY,CAAC,sCAAsC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,OAAO,yBAAyB;YAC5I,SAAS;;cAEP,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,uBAAuB;kDACvB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;;;CAGrE,CAAC"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/table/components/group-row/template.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAe;;;iBAG1B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,EAAE;4DACe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;;UAErE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAe;;mBAElC,WAAW;sBACR,GAAG,CAAC,mBAAmB,CAAC;;+BAEf,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAoB,CAAC;8BACtD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE;;oBAE7C,WAAW;;SAEtB,CAAC;;;eAGK,SAAS;8BACM,gBAAgB,CAAC,KAAK;;;;;mBAKjC,yBAAyB,IAAI,GAAG,CAAC,YAAY,CAAC,sCAAsC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,OAAO,yBAAyB;gBAC5I,SAAS;;;;cAIX,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,uBAAuB;kDACvB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa;;;CAGrE,CAAC"}
@@ -1,4 +1,4 @@
1
- import { FoundationElement } from '@microsoft/fast-foundation';
1
+ import { Checkbox, FoundationElement } from '@microsoft/fast-foundation';
2
2
  import type { TableCellState } from '../../../table-column/base/types';
3
3
  import type { TableRecord } from '../../types';
4
4
  import type { TableColumn } from '../../../table-column/base';
@@ -24,17 +24,27 @@ export declare class TableRow<TDataRecord extends TableDataRecord = TableDataRec
24
24
  recordId?: string;
25
25
  selectable: boolean;
26
26
  selected: boolean;
27
+ hideSelection: boolean;
27
28
  dataRecord?: TDataRecord;
28
29
  columns: TableColumn[];
29
30
  currentActionMenuColumn?: TableColumn;
30
31
  nestingLevel: number;
31
32
  menuOpen: boolean;
33
+ /** @internal */
34
+ readonly selectionCheckbox?: Checkbox;
35
+ /** @internal */
36
+ readonly cellContainer: HTMLSpanElement;
37
+ private ignoreSelectionChangeEvents;
32
38
  get columnStates(): ColumnState[];
33
39
  get ariaSelected(): 'true' | 'false' | null;
40
+ onSelectionChange(event: CustomEvent): void;
34
41
  onCellActionMenuBeforeToggle(event: CustomEvent<MenuButtonToggleEventDetail>, column: TableColumn): void;
35
42
  onCellActionMenuToggle(event: CustomEvent<MenuButtonToggleEventDetail>, column: TableColumn): void;
36
43
  closeOpenActionMenus(): void;
37
- private emitToggleEvent;
44
+ private emitActionMenuToggleEvent;
38
45
  private hasValidFieldNames;
46
+ private selectedChanged;
47
+ private selectionCheckboxChanged;
48
+ private setSelectionCheckboxState;
39
49
  }
40
50
  export declare const tableRowTag: string;
@@ -13,9 +13,15 @@ export class TableRow extends FoundationElement {
13
13
  super(...arguments);
14
14
  this.selectable = false;
15
15
  this.selected = false;
16
+ this.hideSelection = false;
16
17
  this.columns = [];
17
18
  this.nestingLevel = 0;
18
19
  this.menuOpen = false;
20
+ // Programmatically updating the selection state of a checkbox fires the 'change' event.
21
+ // Therefore, selection change events that occur due to programmatically updating
22
+ // the selection checkbox 'checked' value should be ingored.
23
+ // https://github.com/microsoft/fast/issues/5750
24
+ this.ignoreSelectionChangeEvents = false;
19
25
  }
20
26
  get columnStates() {
21
27
  return this.columns.map((column, i) => {
@@ -49,23 +55,34 @@ export class TableRow extends FoundationElement {
49
55
  }
50
56
  return null;
51
57
  }
58
+ onSelectionChange(event) {
59
+ if (this.ignoreSelectionChangeEvents) {
60
+ return;
61
+ }
62
+ const checkbox = event.target;
63
+ const detail = {
64
+ oldState: !checkbox.checked,
65
+ newState: checkbox.checked
66
+ };
67
+ this.$emit('row-selection-toggle', detail);
68
+ }
52
69
  onCellActionMenuBeforeToggle(event, column) {
53
70
  this.currentActionMenuColumn = column;
54
- this.emitToggleEvent('row-action-menu-beforetoggle', event.detail, column);
71
+ this.emitActionMenuToggleEvent('row-action-menu-beforetoggle', event.detail, column);
55
72
  }
56
73
  onCellActionMenuToggle(event, column) {
57
74
  this.menuOpen = event.detail.newState;
58
- this.emitToggleEvent('row-action-menu-toggle', event.detail, column);
75
+ this.emitActionMenuToggleEvent('row-action-menu-toggle', event.detail, column);
59
76
  }
60
77
  closeOpenActionMenus() {
61
78
  if (this.menuOpen) {
62
- const cellWithMenuOpen = Array.from(this.shadowRoot.children).find(c => c instanceof TableCell && c.menuOpen);
79
+ const cellWithMenuOpen = Array.from(this.cellContainer.children).find(c => c instanceof TableCell && c.menuOpen);
63
80
  if (cellWithMenuOpen?.actionMenuButton?.open) {
64
81
  cellWithMenuOpen.actionMenuButton.toggleButton.control.click();
65
82
  }
66
83
  }
67
84
  }
68
- emitToggleEvent(eventType, menuButtonEventDetail, column) {
85
+ emitActionMenuToggleEvent(eventType, menuButtonEventDetail, column) {
69
86
  const detail = {
70
87
  newState: menuButtonEventDetail.newState,
71
88
  oldState: menuButtonEventDetail.oldState,
@@ -77,6 +94,19 @@ export class TableRow extends FoundationElement {
77
94
  hasValidFieldNames(keys) {
78
95
  return keys.every(key => key !== undefined);
79
96
  }
97
+ selectedChanged() {
98
+ this.setSelectionCheckboxState();
99
+ }
100
+ selectionCheckboxChanged() {
101
+ this.setSelectionCheckboxState();
102
+ }
103
+ setSelectionCheckboxState() {
104
+ if (this.selectionCheckbox) {
105
+ this.ignoreSelectionChangeEvents = true;
106
+ this.selectionCheckbox.checked = this.selected;
107
+ this.ignoreSelectionChangeEvents = false;
108
+ }
109
+ }
80
110
  }
81
111
  __decorate([
82
112
  attr({ attribute: 'record-id' })
@@ -87,6 +117,9 @@ __decorate([
87
117
  __decorate([
88
118
  attr({ mode: 'boolean' })
89
119
  ], TableRow.prototype, "selected", void 0);
120
+ __decorate([
121
+ attr({ attribute: 'hide-selection', mode: 'boolean' })
122
+ ], TableRow.prototype, "hideSelection", void 0);
90
123
  __decorate([
91
124
  observable
92
125
  ], TableRow.prototype, "dataRecord", void 0);
@@ -102,6 +135,9 @@ __decorate([
102
135
  __decorate([
103
136
  attr({ attribute: 'menu-open', mode: 'boolean' })
104
137
  ], TableRow.prototype, "menuOpen", void 0);
138
+ __decorate([
139
+ observable
140
+ ], TableRow.prototype, "selectionCheckbox", void 0);
105
141
  __decorate([
106
142
  volatile
107
143
  ], TableRow.prototype, "columnStates", null);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/table/components/row/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/table/components/row/index.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,34 @@
1
1
  import { css } from '@microsoft/fast-element';
2
2
  import { display } from '@microsoft/fast-foundation';
3
- import { borderWidth, controlHeight, tableRowBorderColor } from '../../../theme-provider/design-tokens';
3
+ import { borderWidth, controlHeight, standardPadding, tableRowBorderColor } from '../../../theme-provider/design-tokens';
4
4
  export const styles = css `
5
- ${display('grid')}
5
+ ${display('flex')}
6
6
 
7
7
  :host {
8
8
  height: calc(${controlHeight} + 2 * ${borderWidth});
9
9
  border-top: calc(2 * ${borderWidth}) solid ${tableRowBorderColor};
10
+ width: fit-content;
11
+ min-width: 100%;
12
+ }
13
+
14
+ .checkbox-container {
15
+ display: flex;
16
+ }
17
+
18
+ .selection-checkbox {
19
+ margin-left: ${standardPadding};
20
+ }
21
+
22
+ .selection-checkbox::part(label) {
23
+ padding-left: 0px;
24
+ }
25
+
26
+ .cell-container {
27
+ display: grid;
28
+ width: 100%;
10
29
  grid-auto-flow: column;
11
30
  grid-auto-columns: 1fr;
12
31
  grid-template-columns: var(--ni-private-table-row-grid-columns) auto;
13
- width: fit-content;
14
- min-width: 100%;
15
32
  }
16
33
 
17
34
  nimble-table-cell {
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../src/table/components/row/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EACH,WAAW,EACX,aAAa,EACb,mBAAmB,EACtB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,MAAM,CAAC;;;uBAGE,aAAa,UAAU,WAAW;+BAC1B,WAAW,WAAW,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;CAuBvE,CAAC"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../src/table/components/row/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EACH,WAAW,EACX,aAAa,EACb,eAAe,EACf,mBAAmB,EACtB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,MAAM,CAAC;;;uBAGE,aAAa,UAAU,WAAW;+BAC1B,WAAW,WAAW,mBAAmB;;;;;;;;;;uBAUjD,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BrC,CAAC"}
@@ -1,30 +1,46 @@
1
- import { html, repeat, when } from '@microsoft/fast-element';
1
+ import { html, ref, repeat, when } from '@microsoft/fast-element';
2
2
  import { tableCellTag } from '../cell';
3
+ import { checkboxTag } from '../../../checkbox';
3
4
  // prettier-ignore
4
5
  export const template = html `
5
6
  <template role="row" aria-selected=${x => x.ariaSelected}>
6
- ${repeat(x => x.columnStates, html `
7
- ${when(x => !x.column.columnHidden, html `
8
- <${tableCellTag}
9
- class="cell"
10
- :cellState="${x => x.cellState}"
11
- :cellViewTemplate="${x => x.column.columnInternals.cellViewTemplate}"
12
- ?has-action-menu="${x => !!x.column.actionMenuSlot}"
13
- action-menu-label="${x => x.column.actionMenuLabel}"
14
- @cell-action-menu-beforetoggle="${(x, c) => c.parent.onCellActionMenuBeforeToggle(c.event, x.column)}"
15
- @cell-action-menu-toggle="${(x, c) => c.parent.onCellActionMenuToggle(c.event, x.column)}"
16
- :nestingLevel="${x => x.cellIndentLevel};"
7
+ ${when(x => x.selectable && !x.hideSelection, html `
8
+ <span role="gridcell" class="checkbox-container">
9
+ <${checkboxTag}
10
+ ${ref('selectionCheckbox')}
11
+ role="cell"
12
+ class="selection-checkbox"
13
+ @change="${(x, c) => x.onSelectionChange(c.event)}"
14
+ @click="${(_, c) => c.event.stopPropagation()}"
17
15
  >
16
+ </${checkboxTag}>
17
+ </span>
18
+ `)}
19
+
20
+ <span ${ref('cellContainer')} class="cell-container">
21
+ ${repeat(x => x.columnStates, html `
22
+ ${when(x => !x.column.columnHidden, html `
23
+ <${tableCellTag}
24
+ class="cell"
25
+ :cellState="${x => x.cellState}"
26
+ :cellViewTemplate="${x => x.column.columnInternals.cellViewTemplate}"
27
+ ?has-action-menu="${x => !!x.column.actionMenuSlot}"
28
+ action-menu-label="${x => x.column.actionMenuLabel}"
29
+ @cell-action-menu-beforetoggle="${(x, c) => c.parent.onCellActionMenuBeforeToggle(c.event, x.column)}"
30
+ @cell-action-menu-toggle="${(x, c) => c.parent.onCellActionMenuToggle(c.event, x.column)}"
31
+ :nestingLevel="${x => x.cellIndentLevel};"
32
+ >
18
33
 
19
- ${when((x, c) => (c.parent.currentActionMenuColumn === x.column) && x.column.actionMenuSlot, html `
20
- <slot
21
- name="${x => `row-action-menu-${x.column.actionMenuSlot}`}"
22
- slot="cellActionMenu"
23
- ></slot>
24
- `)}
25
- </${tableCellTag}>
34
+ ${when((x, c) => (c.parent.currentActionMenuColumn === x.column) && x.column.actionMenuSlot, html `
35
+ <slot
36
+ name="${x => `row-action-menu-${x.column.actionMenuSlot}`}"
37
+ slot="cellActionMenu"
38
+ ></slot>
39
+ `)}
40
+ </${tableCellTag}>
41
+ `)}
26
42
  `)}
27
- `)}
43
+ </span>
28
44
  </template>
29
45
  `;
30
46
  //# sourceMappingURL=template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/table/components/row/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAU;yCACG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;UAClD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,CAAuB;cACnD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAuB;mBACxD,YAAY;;kCAEG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;yCACT,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,gBAAgB;wCAC/C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc;yCAC7B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe;sDAChB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC,KAAiD,EAAE,CAAC,CAAC,MAAM,CAAC;gDACpH,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAiD,EAAE,CAAC,CAAC,MAAM,CAAC;qCACnH,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe;;;sBAGrC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC,CAAC,MAAmB,CAAC,uBAAuB,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAuB;;oCAEtH,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,cAAe,EAAE;;;qBAGjE,CAAC;oBACF,YAAY;aACnB,CAAC;SACL,CAAC;;CAET,CAAC"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../../src/table/components/row/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAGlE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAU;yCACG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;UAClD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,IAAI,CAAU;;mBAEjD,WAAW;sBACR,GAAG,CAAC,mBAAmB,CAAC;;;+BAGf,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAoB,CAAC;8BACtD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE;;oBAE7C,WAAW;;SAEtB,CAAC;;gBAEM,GAAG,CAAC,eAAe,CAAC;cACtB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,CAAuB;kBACnD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAuB;uBACxD,YAAY;;sCAEG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;6CACT,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,gBAAgB;4CAC/C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc;6CAC7B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe;0DAChB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC,KAAiD,EAAE,CAAC,CAAC,MAAM,CAAC;oDACpH,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAiD,EAAE,CAAC,CAAC,MAAM,CAAC;yCACnH,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe;;;0BAGrC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC,CAAC,MAAmB,CAAC,uBAAuB,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAuB;;wCAEtH,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,cAAe,EAAE;;;yBAGjE,CAAC;wBACF,YAAY;iBACnB,CAAC;aACL,CAAC;;;CAGb,CAAC"}
@@ -1,6 +1,6 @@
1
- import { FoundationElement } from '@microsoft/fast-foundation';
1
+ import { Checkbox, FoundationElement } from '@microsoft/fast-foundation';
2
2
  import { TableColumn } from '../table-column/base';
3
- import { TableActionMenuToggleEventDetail, TableRecord, TableRowSelectionMode, TableRowSelectionState, TableValidity } from './types';
3
+ import { TableActionMenuToggleEventDetail, TableRecord, TableRowSelectionMode, TableRowSelectionState, TableRowSelectionToggleEventDetail, TableValidity } from './types';
4
4
  import { Virtualizer } from './models/virtualizer';
5
5
  import type { TableRow } from './components/row';
6
6
  declare global {
@@ -61,11 +61,19 @@ export declare class Table<TData extends TableRecord = TableRecord> extends Foun
61
61
  * @internal
62
62
  */
63
63
  rowGridColumns?: string;
64
+ /**
65
+ * @internal
66
+ */
67
+ selectionState: TableRowSelectionState;
64
68
  get validity(): TableValidity;
65
69
  /**
66
70
  * @internal
67
71
  */
68
72
  readonly viewport: HTMLElement;
73
+ /**
74
+ * @internal
75
+ */
76
+ readonly selectionCheckbox?: Checkbox;
69
77
  /**
70
78
  * @internal
71
79
  */
@@ -85,6 +93,7 @@ export declare class Table<TData extends TableRecord = TableRecord> extends Foun
85
93
  private columnNotifiers;
86
94
  private isInitialized;
87
95
  private readonly collapsedRows;
96
+ private ignoreSelectionChangeEvents;
88
97
  constructor();
89
98
  setData(newData: readonly TData[]): Promise<void>;
90
99
  getSelectedRecordIds(): Promise<string[]>;
@@ -101,16 +110,22 @@ export declare class Table<TData extends TableRecord = TableRecord> extends Foun
101
110
  */
102
111
  handleChange(source: unknown, args: unknown): void;
103
112
  /** @internal */
113
+ onRowSelectionToggle(rowIndex: number, event: CustomEvent<TableRowSelectionToggleEventDetail>): Promise<void>;
114
+ /** @internal */
104
115
  onRowClick(rowIndex: number): Promise<void>;
105
116
  /** @internal */
106
- onRowActionMenuBeforeToggle(event: CustomEvent<TableActionMenuToggleEventDetail>): void;
117
+ onAllRowsSelectionChange(event: CustomEvent): Promise<void>;
118
+ /** @internal */
119
+ onRowActionMenuBeforeToggle(rowIndex: number, event: CustomEvent<TableActionMenuToggleEventDetail>): Promise<void>;
120
+ /** @internal */
121
+ onRowActionMenuToggle(event: CustomEvent<TableActionMenuToggleEventDetail>): Promise<void>;
107
122
  /** @internal */
108
- onRowActionMenuToggle(event: CustomEvent<TableActionMenuToggleEventDetail>): void;
109
123
  handleGroupRowExpanded(rowIndex: number, event: Event): void;
110
124
  /**
111
125
  * @internal
112
126
  */
113
127
  update(): void;
128
+ get ariaMultiSelectable(): 'true' | 'false' | null;
114
129
  protected selectionModeChanged(_prev: string | undefined, _next: string | undefined): void;
115
130
  protected idFieldNameChanged(_prev: string | undefined, _next: string | undefined): void;
116
131
  protected columnsChanged(_prev: TableColumn[] | undefined, _next: TableColumn[]): void;
@@ -129,9 +144,17 @@ export declare class Table<TData extends TableRecord = TableRecord> extends Foun
129
144
  private validate;
130
145
  private validateWithData;
131
146
  private emitSelectionChangeEvent;
147
+ private selectionStateChanged;
148
+ private selectionCheckboxChanged;
149
+ private setSelectionCheckboxState;
132
150
  private refreshRows;
151
+ private getTableSelectionState;
152
+ private getRowSelectionState;
153
+ private getGroupedRowSelectionState;
133
154
  private getGroupRowColumn;
134
155
  private updateTableOptions;
156
+ private selectSingleRow;
157
+ private deselectAllLeafRows;
135
158
  private readonly getIsRowExpanded;
136
159
  private readonly handleRowSelectionChange;
137
160
  private readonly handleExpandedChange;